Sei sulla pagina 1di 34

Porta NAND .........................................................

12
Astrazione ............................................................. 3
Calcolatore ............................................................ 3
Istruzione .............................................................. 3
Operazione ............................................................ 3
Legge di Moor ....................................................... 3
Linguaggio ............................................................. 3
Linguaggio macchina ............................................. 3
Patch ..................................................................... 4
Interpretazione ..................................................... 4
Compilazione......................................................... 4
Macchina Virtuale ................................................. 4
Indipendenza dalla macchina ............................... 4
Relazione tra una macchina e il relativo linguaggio
macchina ............................................................... 4
*Cross compilatore ............................................... 5
La macchina .......................................................... 5
Hardware e Software ............................................ 6
Conversione tra basi ............................................. 6
Overflow................................................................ 7
Complemento a 2.................................................. 7
Scoprire Overflow ................................................. 7
Codice Eccesso ...................................................... 7
Numeri Reali.......................................................... 8
Virgola mobile ....................................................... 8
Numeri binari frazionari ........................................ 8
Lo standard IEEE 754............................................. 9
*Codice ASCII ........................................................ 9
*ISO 8859/1 o ISO Latin - 1 ................................... 9
Porta logica ........................................................... 9
Porta AND o Prodotto Logico .............................. 10
Porta OR o Somma Logica ................................... 10
Codice di Parita' pari .......................................... 10
Algebra di Boole .................................................. 10
Metodo di Sintesi Canonica ................................ 11
Il Tempo nelle porte logiche ............................... 11
Porta XOR o disuguaglianza ................................ 12

Blocchi funzionali o Componenti libreria............ 13


Decoder ........................................................... 13
Multiplexer...................................................... 13
Confrontatore ................................................. 14
Semisommatore .............................................. 14
Sommatore o full adder (FA) .......................... 15
*ALU .................................................................... 15
Il Segnale di clock ................................................ 15
La macchina a stati.............................................. 15
Le memorie ......................................................... 15
Come memorizzare un bit (Bistabile SR) ........ 15
Il bistabile D sincronizzato .............................. 16
Il fenomeno della trasparenza ........................ 17
Sincronizzazione bistabili (per risolvere il
fenomeno della trasparenza) ......................... 18
Flip-Flop Master-Slave .................................... 19
Sui circuiti sequenziali ......................................... 19
Struttura di un circuito sequenziale ............... 19
Famiglie di circuiti sequenziali ........................ 19
Progettazione circuiti sequenziali sincroni ..... 20
Librerie di blocchi sequenziali ......................... 20
Banco dei registri ................................................ 21
Buffer Tri-state .................................................... 21
Memorizzare un bit............................................. 22
Caratteristiche della memoria ........................ 22
Struttura della Memoria ................................. 23
Organizzazione a matrice................................ 23
Banco di memoria ............................................... 23
Memoria ............................................................. 24
RAM Statica (SRAM)........................................ 24
RAM Dinamica (DRAM) ................................... 24
Rom ................................................................. 24
PROM, EPROM, EEPROM ................................ 24
Memoria Flash ................................................ 25
Tabella Riassuntiva ......................................... 25
Il problema della memoria ............................. 25

Le gerarchie di memoria ................................. 25

Posizionamento del blocco ............................. 29

Il principio di localit ....................................... 26

Identificazione di un blocco ............................ 29

Gerarchia di memoria Definizioni ................... 26

Quale blocco sostiturie? ................................. 30

Cache ................................................................... 26

Strategie di scrittura di un blocco ................... 30

La cache e il principio di localit ..................... 26

Organizzazione cache a 2 livelli ...................... 30

Cache a indirizzamento diretto ....................... 27

Memoria virtuale ............................................ 30

Cache completamente associativa ................. 27

Mappaggio degli indirizzi virtuali e fisici ......... 31

Cache Set-Associativa ..................................... 28

Traduzione indirizzi virtuali e fisici .................. 31

Cache Set-Associativa a 2 vie ...................... 28


Cache Set-Associativa a 4 vie ...................... 29

Ignorare (nascondere) dettagli (anche rilevanti) per semplificare il problema:


Utile (necessario) per affrontare problemi complessi
Approccio tipico dellingegneria
Esempi:
o Motore visto come elemento che eroga potenza astraggo da dettagli costruttivi
o Database: sistema in grado di memorizzare dati persistenti, gestendo accessi concorrenti,
sicurezza, ecc.

Il calcolatore pu essere descritto ( costruito) come una gerarchia di macchine astratte (virtuali):
Ogni livello maschera (nasconde) i dettagli dei livelli sottostanti
Utile per la descrizione: mi interessa capire il funzionamento del livello in esame, non dei sottostanti (ed
essere in grado di progettarlo).
Lastrazione utile anche in fase di costruzione:
Ad es. costruire una macchina powerpoint direttamente con transistor sarebbe di complessit
proibitiva
Soluzione:
1. Costruiamo una prima macchina (lelaboratore) in grado di eseguire istruzioni elementari.
2. Utilizziamo queste istruzioni elementari per scrivere un programma (il Sistema Operativo) in
grado di eseguire comandi pi complessi Il programmatore del S.O. non conosce i dettagli relativi
alla tecnologia realizzativa del microprocessore
3. Scriviamo programmi che si basano sulle funzioni messe a disposizione dal S.O. il programmatore
di powerpoint non conosce i dettagli costruttivi del S.O.
Un esecutore definito in base a tre elementi:
linsieme delle operazioni che capace di compiere;
linsieme delle istruzioni che capisce (sintassi);
quali operazioni associa ad ogni istruzione che riconosce (semantica).

Comando dato

Vari atti eseguiti per ottenere listruzione

La potenza dei calcolatori raddoppia ogni anno e mezzo

Il linguaggio linsieme delle istruzioni (comandi) che un esecutore in grado di comprendere ed eseguire.
NB: nel descrivere un linguaggio non rilevante sapere come viene eseguita listruzione (cio ad es. a quale
sequenza di operazioni lesecutore ricorre)

Il linguaggio macchina il linguaggio compreso dal processore Ovviamente esistono tanti linguaggi
macchina quanti sono i processori: (Zilog Z80, DEC Alpha, Intel 8080, 80386, Pentium IV, ecc.)
Uninteressante eccezione: la compatibilit
Caratteristiche del linguaggio macchina:

Binario: le istruzioni sono delle sequenze di 0 e 1


Di basso livello: ogni istruzione ha un effetto molto elementare.
Ad es.:
o Copia il contenuto di un registro in un altro registro
o Trasferisci il contenuto di una data cella di memoria in un registro
o Somma i contenuti di due registri e metti il risultato in un terzo registro
Scrivere programmi complessi con istruzioni di questo genere lungo, tedioso e passibile di errori anche
banali, quindi si cerca di scrivere linguaggi pi avanzati e vicini alluomo per ovviare a questi problemi.

Vengono scritte in linguaggio macchina, correggono errori di software gi compilati

Un apposito programma (interprete) esamina il programma PL1, scritto in linguaggio L1, e, istruzione per
istruzione, lo traduce nel linguaggio L0 e lo esegue.

Si pu scrivere un compilatore da L1 a L0 in L1, e poi tradurlo a mano in L0. Alternativa: si scrive un


compilatore la L1 a un linguaggio Lx, disponendo gi di un compilatore da Lx a L0
Interpretazione
Compilazione
Lento
Veloce
Ha sempre il Controllo istante per istante delle
Ogni modifica eseguita il programma va
operazioni, possibilit di fermarsi e di controllare il
ricompilato dallinizio alla fine, non possibile
codice per ogni singola parte di codice, quindi
testare il codice
versatile e comodo in fase di debugging
Serve costantemente
Una volta eseguita la traduzione non serve i

Il calcolatore reale (macchina M0) riconosce programmi scritti nel linguaggio, L0 realizzare una macchina
reale capace di comprendere il linguaggio L1 sarebbe troppo costoso e/o poco efficiente
La compilazione o linterpretazione permettono di realizzare una macchina virtuale M1 capace di
comprendere il linguaggio L1. per rendere comoda ed efficiente la traduzione, la distanza tra L1 e L0 (e
quindi tra M1 e M0) non pu essere elevata; non detto che M1 sia la soluzione desiderata (potrebbe
essere ancora troppo distante dal livello umano). Cos si possono creare altre macchine virtuali fino a
raggiungere un livello di usabilit desiderato

Avendo costruito una macchina Mn che capisce il linguaggio Ln, dobbiamo disporre della capacit di
tradurre Ln in Ln-1.
Possono esistere pi macchine virtuali che mettono a disposizione dei linguaggi in grado di fungere da Ln1.
Esempio: stesso S.O. su HW diversi, stessa applicazione su S.O. diversi, ecc.
La figura precedente ammette ramificazioni!

La macchina definisce il linguaggio


Una macchina (reale o virtuale) permette di
definire il linguaggio macchina ad essa associato
come linsieme di tutte le istruzioni che la
macchina stessa in grado di eseguire.

Il linguaggio definisce la macchina


Un linguaggio permette di definire la macchina
(reale o virtuale) ad esso associata come
lesecutore capace di comprendere tutti i
programmi scritti in quel linguaggio.

*************************************************

LV. 0 Logica digitale:


o la macchina formata da porte logiche
o Ogni porta logica riceve in ingresso dei segnali binari e calcola una semplice funzione
o Alcune porte collegate opportunamente possono formare una memoria di un bit
o Combinando n memorie si forma un registro non pi grande di 2n-1
o Combinando le porte si realizzano i circuiti che formano i calcolatori
Per Passare al LV.1 c un Esecuzione diretta (Hardware)
LV. 1 Microarchitettura
o Elaborazione: Path
Registri general purpose come morie locali
Arithmetic Logic Unit (ALU) capace di eseguire semplici operazioni Logico-Aritmetiche
Elementi di connessione tra registri e ALU
o Controllo
Registri dedicati al controllo
Unit di controllo che pu essere:
micro programmata:
o il funzionamento del Data Path viene controllato da un programma chiamato
microprogramma;
o si tratta di un interprete delle istruzioni di livello 2;
o era la soluzione pi diffusa in passato, tanto che il termine - programmazione era
a volte sinonimo di -architettura.
cablata:
o il funzionamento del Data Path viene controllato direttamente tramite dispositivi
hardware;
o la sequenza di operazioni associate alle istruzioni di livello 2 non viene generata da
un interprete ma viene gestita direttamente via hardware.
Per Passare al LV.2 ci pu essere o un Esecuzione diretta (Hardware) o un Interpretazione
(microprogrammata)
LV. 2 Instruction Set
o Insieme delle istruzioni che possono essere comprese dalla -architettura (la -architettura
agisce da interprete dellInstruction Set).
o il livello cui si fa riferimento quando si descrive il linguaggio macchina di un calcolatore.
Per Passare al LV. 3 c un interpretazione parziale
LV. 3 S.O. (sistema operativo)
o Livello ibrido:
comprende molte istruzioni che si trovano gi al livello 2;
comprende anche un insieme di istruzioni aggiuntive;
ha una diversa organizzazione della memoria;
esegue pi programmi contemporaneamente.
o Le nuove funzionalit sono eseguite da un interprete che viene definito sistema operativo.
o Le istruzioni identiche a quelle del livello 2 vengono eseguite direttamente dalla
microarchitettura.

*Per migliorare le prestazioni: i livelli 2 e 3 vengono sempre interpretati; i livelli 4 e 5 vengono (quasi)
sempre compilati.
**Per questioni di efficienza e di usabilit: i linguaggi dei livelli 2 e 3 sono in codifica binaria; i linguaggi
dei livelli 4 e 5 sono testuali (simbolici) cio composti da parole hanno un senso per luomo.
Per Passare al LV. 4 c una traduzione (assemblatore)
LV. 4 Linguaggio assemblatore
o Rappresentazione simbolica di uno dei livelli sottostanti.
I linguaggi binari dei livelli bassi sono difficili da usare per un programmatore (... errori
di trascrizione ...).
A ogni istruzione del linguaggio assemblatore corrisponde una istruzione del linguaggio
macchina.
o I programmi in linguaggio assemblatore vengono tradotti in un linguaggio di livello inferiore
e poi eseguiti. Il programma che esegue la traduzione si chiama assemblatore.
Per passare al LV. 5 c una traduzione (compilatore)
LV. 5 Linguaggi applicativi
o Linguaggi di alto livello
o Utilizzati per realizzare programmi
o La traduzione affidata a un compilatore, raramente a un interprete (Java)

Hardware
Software
oggetti tangibili che compongono un calcolatore
indipendentemente dal supporto su cui sono
(circuiti elettronici, memoria, dispositivi di I/O, ...).
memorizzati (HD, RAM, CD, ...).
Hardware e software sono logicamente equivalenti
qualsiasi operazione effettuata dal software pu essere inglobata nellhardware (hardware =
software pietrificato);
qualsiasi istruzione eseguita dallhardware pu essere simulata dal software;
la decisione di realizzare una funzione in hardware o in software dipende da parametri quali il
costo, la velocit, laffidabilit, la fre

Le basi principali sono:


Base 2: due sole cifre: 0 e 1
Base 4: quattro cifre: 0, 1, 2, 3
Base 8: otto cifre: 0, 1, 2, 3, 4, 5, 6, 7
Base 10: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
Base 16: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F
Conversione da un numero di una qualsiasi (notazione posizionale: d0 d1 d2 d3) base alla base 10 B
valore = d0 B0 + d1 B1 + d2 B2 + d3 B3 + ...
Conversioni da una base b1 a unaltra base qualsiasi (b2):
si divide il numero nella base b1 con la base b2
Si annota il resto
Si divide il valore ottenuto dalla divisione con la base b2
Si annota il resto
Si continua ciclicamente fino a che non si ottiene resto 0
Il risultato dato dai resti letti a partire dallultimo al primo
Conversioni tra basi multiple:

La base 2 multipla della base 8 in particolare 8 = 23 quindi prendendo i numeri in binario a tre a
tre e trasformandoli si ottiene il numero in base 8:
Es. 001 111 011 111 100 vale in base 8 a 17374
La base 2 multipla della base 16 in particolare 8 = 24 quindi prendendo i numeri in binario a
quattro a quattro e trasformandoli si ottiene il numero in base 16:
Es. 0001 1110 1111 1100 vale in base 16 a 1EFC

Si definisce Overflow Quando le operazioni danno un risultato che richiederebbe pi bit di quanti c ne a
disposizione
In Linguaggio macchina loverflow segnalato con un apposito flag

Presi n bit scrivo un numero che occupa tutti i bit vale : a20+ b21+ c20+ d23+ .-n2n-1
Es. 4 bit 1 1 0 1 questo numero in base 10 equivale a 1*20+0*21+1*22 - 1*23

Se due numeri in complemento a due con lo stesso segno danno come risultato un numero di segno
opposto allora c stato un overflow

Rappresentazione non (completamente) posizionale


In questa rappresentazione il numero N da rappresentare viene prima sommato ad una base
prefissata pari a 2k-1 (k il numero di bit a disposizione), in modo che il valore risultante sia sempre
positivo o nullo e poi codificato come se fosse un intero privo di segno.
Pertanto se k = 3 e N = -1 la rappresentazione di N in codice eccesso 22 risulta (-1+4=3) = 011
Per definizione, il valore di un intero v espresso in questa notazione dato dalla formula: v = - 2k-1
+ 2k-1*dk-1 + 2k-2*dk-2 +... + 21*d1 + 20*d0
I numeri positivi sono codificati con il MSB = 1 e il resto codificato come un numero senza segno.
o Infatti se
dk-1 = 1 la formula v = - 2k-1 + 2k-1*dk-1 + 2k-2*dk-2 +... + 21*d1 + 20*d0
o Si riduce a
v = - 2k-1 + 2k-1 + 2k-2*dk-2 +... + 21*d1 + 20*d0 = 2k-2*dk-2 +... + 21*d1 + 20*d0
o che la codifica di un intero senza segno su k-1 bit.

Esempio:
Con k=4 bit, la stringa 1101 denota il valore 4 + 1 = 5, poich il bit 3 che ha peso +8 viene
compensato dalla sottrazione di 23 =8.
I numeri negativi sono codificati con il MSB = 0.
o Infatti se
dk-1 = 0 la formula v = - 2k-1 + 2k-1*dk-1 + 2k-2*dk-2 +... + 21*d1 + 20*d0
o Si riduce a
v = - 2k-1 + 2k-2*dk-2 +... + 21*d1 + 20*d0
o Poich
2k-2*dk-2 +... + 21*d1 + 20*d0 < 2k-1, v<0
Esempio: Con k=4 bit, la stringa 0101 denota il valore -8 + 4 + 1 = -3.
Complessivamente si rappresenta lintervallo [-2k-1 .. 2k-1-1]

I numeri reali sono nellintervallo [- +]


Nella pratica ci interessa un intervallo magari non infinito ma molto esteso:
o dalla massa dellelettrone 9 10-28 grammi
o alla massa del sole: 2 1033 grammi
Con 4 simboli [+/-], X, Y, Z {0,1,9} possibile rappresentare:
-999 +999
oppure 9 * 10[+/-] 99
oppure [+/-] 9 * 10[+/-] 9
ecc.

Corrisponde alla notazione correntemente usata nelle discipline tecniche e scientifiche.


v = f 10e
Soddisfa alla necessit di manipolare numeri di ordini di grandezza diversi
Il nome virgola mobile (o floating point) indica che la presenza dellesponente sposta la
posizione della virgola.
v = f 10e = 0.1*f 10e+1 = 10*f 10e-1
Si riferisce a numeri espressi nella forma: X.YYY * 10ww
o X: parte intera
o Y: parte frazionaria
o W: esponente
Terminologia:
N = M * BE
M: mantissa
B: base
E: esponente
Sia la mantissa che lesponente hanno un segno
ci sono numeri negativi di valore assoluto grande (mantissa negativa ed esponente positivo)
e numeri positivi vicini allo zero (mantissa positiva ed esponente negativo)
La forma normalizzata prevede che la mantissa sia un valore compreso tra 0 e 1: 0 M < 1
Esempi di valori in forma normalizzata sono:
3.14159 = 0.314159 101
0.00001 = 0.1 10-4
1958 = 0.1958 104
Utilizzando k bit possiamo rappresentare solo 2k valori.
Alcuni numeri reali (come o 21/2) non sono rappresentabili con un numero finito di cifre. Quindi
rappresenteremo solo valori approssimati.
NB: bastano i razionali a mettere in difficolt la precisione di rappresentazione con un numero finito di bit

Come si esprime un numero compreso tra zero e uno in binario?


Esattamente come in base dieci: il MSB pesa 1/2, il successivo 1/4, il successivo 1/8, ecc.
v = 2-1*dk-1 + 2-2 *dk-2+...+ 2-k+2 *d1 + 2-k+1 *d0
Esempi:
o 00101101 = 2-3 + 2-5 + 2-6 + 2-8 = 0.17578125

o 00010000 = 2-4 = 0.0625


o 10100000 = 2-1 + 2-3 = 0.625
Conversione da decimale a binario di numeri frazionari
Dato un valore v, tale che 0<v<1, esso denotato da
v = 2-1*dk-1 + 2-2 *dk-2+...+ 2-k+2 *d1 + 2-k+1 *d0
Allora
2v = 2(2-1*dk-1 + 2-2 *dk-2+...+ 2-k+2 *d1 + 2-k+1 *d0) =
= dk-1 + 2-1 *dk-2+...+ 2-k+3 *d1 + 2-k+2 *d0
Una volta noto dk-1, il problema diventa codificare la parte frazionaria di 2v, cio 2v-dk-1
Si moltiplica per 2 e si guarda se < 1, ecc.

lo standard (quasi) universalmente adottato per la rappresentazione di numeri floating point.


Definisce tre formati:
Singola precisione (32 bit)
Doppia precisione (64 bit)
Precisione estesa (80 bit, usato soprattutto nelle unit aritmetiche floating point).

02 - Slide 70 p. 35

*************************************************

*************************************************

I circuiti digitali sono formati da componenti digitali elementari, chiamati porte logiche
Le porte logiche sono i circuiti minimi per lelaborazione di segnali binari
Lelemento funzionale fondamentale per la costruzione di porte logiche il transistor

La macchina a volte perde dati, per scoprire se c stata perdita di dati si aggiunge un bit che fa in modo
che i numeri di 1 contenuti in una stringa sono pari, se essi sono dispari allora c stata perdita di dati.

Componenti
Operatori Booleani
Regole di trasformazione ed equivalenza tra operazioni
Operatori
Inversione: NOT
Somma logica: OR
Prodotto logico: AND

Propriet degli operatori

Y+/YZ=Y+Z
(Y+Y/Z=Y)
Porta Nand:

Funzioni combinatorie: Tavole di verit, riceve qualcosa in input e in output


Rete Circuitale o Combinatoria: circuiti che realizzano la tavola di verit
Espressioni Booleane: modo in cui descrivere reti e funzioni
Grafo diretto aciclico:
Simulazione circuitale:

Prima forma canonica: Presi gli uni della tavola di verit della funzione si scrivono come prodotti, si
sommano tutti i prodotti ottenuti
Seconda forma canonica: Come la prima per con gli 0 invece che con gli 1 e si scrive come somma poi si
moltiplicano tutte le somme

Velocit: i circuiti hanno un certo ritardo


Frequenza:

Principio di adiacenza: possibile la semplificazione solo tra due gruppi di bit che hanno tra loro un solo
bit di differenza
Mappa di Karnough:

Condizioni di indifferenza
Quando nella Mappa di Karnough esistono dei bit che possono anche essere delle X perch non sono
necessari

Rappresentazione delle altre porte


/X

AND

OR

Sono librerie di funzioni gi integrate in un circuito.


Decoder:
Ingressi (Input): n 1
Uscite (Output): 2n , escono i numeri: k=0,1,2,,2n-1

Multiplexer
Ingressi (Input): due gruppi
Ingressi di selezione n 1
Ingressi dati 2n
Uscite (Output): un uscita che viene selezionata dagli ingressi di selezione tre gli ingressi dati

*pi lento del decoder


**l if dellhardware:
Parallelo , dopo che ci sono A e B posso scegliere

Software

Hardware

se interessa A, B non viene calcolato

Confrontatore:
Ingressi (Input): due gruppi di ingressi n 1
Uscite (Output): tre uscite:
A<B
A=B
A>B

Semisommatore
A 2 ingressi:

Sommatore o full adder (FA)

******************************************

Per definire e scandire il tempo, nei circuiti digitali si usa il


segnale di clock (o di temporizzazione).
Il clock un segnale binario, con andamento periodico nel
tempo.
Il segnale di clock una successione di impulsi.
Ogni impulso ha una larghezza costante e due impulsi
consecutivi stanno a una distanza costante

Come memorizzare un bit (Bistabile SR)


Lelemento funzionale elementare dotato di memoria in grado di memorizzare il valore di un singolo bit.
Un modo per realizzare tale elemento funzionale consiste nel collegare due porte logiche di tipo NOR
(porta OR con uscita negata) in modo retro-azionato (le reti combinatorie non contengono collegamenti
retro-azionati!)
Stati di memorizzazione:
Il bistabile SR in grado di memorizzare due distinti valori logici:

o se Q = 1 il bistabile memorizza 1
o se Q = 0 il bistabile memorizza 0
La capacit di memoria del bistabile SR dunque di un bit (cio memorizza uno dei due possibili
valori per un bit)

Il bistabile D sincronizzato
Nel bistabile D sincronizzato:
Se il clock vale 0, lingresso D non ha alcun
effetto, e il bistabile mantiene memorizzato il
suo stato corrente
Se il clock vale 1, lingresso D efficace, e il
bistabile memorizza il valore logico (0 oppure
1) presente sullingresso D
Lo stato del bistabile pu cambiare solo
nellintervallo alto del clock

Il fenomeno della trasparenza

Il bistabile D sincronizzato ha un comportamento sgradevole:


o nellintervallo alto del clock, lingresso D efficace: le variazioni di D si propagano
immediatamente (o quasi) alluscita Q, la quale pu dunque variare pi volte; solo quando il
clock torna a zero Q si stabilizza
o come se, nellintervallo alto del clock, il bistabile non esercitasse alcuna funzione effettiva
di memorizzazione
Questo fenomeno si chiama trasparenza

Sincronizzazione bistabili (per risolvere il fenomeno della trasparenza)


Vi sono in realt due modi per sincronizzare un bistabile con il clock:
sincronizzazione sul livello: nellintervallo alto del clock gli ingressi al bistabile sono efficaci (
trasparenza); nellintervallo basso lo stato del bistabile congelato
sincronizzazione sul fronte: gli ingressi al bistabile sono efficaci solo allistante del fronte di salita
del clock, ma in entrambi gli intervalli alto e basso del clock lo stato del bistabile congelato!
o In un bistabile sincronizzato sul fronte, gli ingressi sono efficaci solo nellistante di tempo del
fronte di salita del clock
o Dunque luscita del bistabile pu commutare solo in corrispondenza del fronte di salita del
clock
o Durante tutto il resto del ciclo di clock, luscita necessariamente stabile il fenomeno di
trasparenza non esiste!

Flip-Flop Master-Slave
I flip-flop cosiddetti master-slave (o a memoria ausiliaria) sono molto usati per eliminare il fenomeno
della trasparenza, realizzano un ottimo compromesso tra complessit, costo ed efficacia.
Funzionamento normale:
o Il bistabile principale memorizza lingresso D
= D1 durante lintervallo alto del clock, lo
emette sulluscita Q1 e lo manda
allingresso D2 del bistabile ausiliario
o Durante lintervallo alto del clock, lo slave
mantiene luscita costante, essendo CK2
basso.
o Il bistabile ausiliario memorizza lingresso
D2 durante lintervallo basso del clock e lo
emette sulluscita Q2 = Q
o Dopo di che, durante lintervallo basso del clock, lo slave continua a leggere D2 e a propagarlo su
Q2, ma D2 = Q1 costante, perch CK1 basso.
o Dunque luscita generale Q pu variare solo nellistante del fronte di discesa del clock
Evitare la trasparenza:
o Nellintervallo basso del clock, il bistabile SLAVE in stato di trasparenza
o Nellintervallo alto del clock, il bistabile MASTER in stato di trasparenza
o Se lingresso D varia durante lintervallo alto del clock, il bistabile MASTER si comporta in modo
trasparente
o Ma il bistabile SLAVE no, perch il suo clock si trova nellintervallo basso

Un circuito digitale di tipo sequenziale se le sue uscite dipendono non solo dai valori correnti degli
ingressi, ma anche da (alcuni di) quelli passati Un circuito digitale sequenziale (o rete sequenziale)
pertanto dotato, in ogni istante di tempo, di uno stato che, insieme ai valori degli ingressi, ne
determina il comportamento futuro
Lo stato di un circuito sequenziale rappresenta, in un certo senso, una forma di memoria: esso contiene
una sorta di descrizione della storia passata del circuito stesso
Lelemento funzionale elementare per la realizzazione di circuiti sequenziali pertanto il bistabile, che
in grado di memorizzare un bit di informazione

Struttura di un circuito sequenziale


I circuiti sequenziali sono formati da:
bistabili, di vario tipo, che hanno funzioni di
memorizzazione di informazioni, ovvero dei bit
porte logiche, organizzate in reti combinatorie,
che hanno funzioni di elaborazione di
informazioni
Il circuito sequenziale ha, in ogni istante, uno stato determinato dai bit memorizzati nei bistabili

Famiglie di circuiti sequenziali


Esistono due famiglie di circuiti digitali sequenziali:
asincroni, che non fanno uso di clock
Es. bistabile SR (non sincronizzato)
I circuiti sequenziali asincroni sono impiegati raramente perch difficili da usare e controllare
sincroni, che necessitano di clock
Es. bistabile di tipo D

Progettazione circuiti sequenziali sincroni


Utilizzare la macchina a stati, il risultato sar del tipo:

Librerie di blocchi sequenziali


Registro parallelo:

Registro a parallelo con comando di caricamento:

Registro a scorrimento:

(Banco di registri)
(Memoria)

Spesso occorre utilizzare un certo numero di registri paralleli tutti aventi le stesse dimensioni e le stesse
funzioni
Invece di piazzare tanti registri paralleli indipendenti, allora preferibile organizzare i registri in una
struttura a vettore, chiamata banco dei registri
Il banco dei registri permette anche di ridurre i collegamenti necessari

il circuito elementare modellabile come un contatto a tre posizioni:

in stato di bassa impedenza consente di avere in uscita o il livello alto (1) o il livello basso (0)
in stato di alta impedenza (Z) isola elettricamente luscita
luscita tri-state viene gestita da un apposito ingresso di controllo (Ouput Enable) che, se non
attivo, forza lo stato di alta impedenza

La memoria un blocco funzionale di tipo sequenziale complesso


Serve per mantenere per un tempo indefinito dati e programmi, e
per permetterne laccesso, in lettura o in scrittura
Ha una struttura a vettore, i cui elementi sono le parole di memoria
Ogni parola di memoria una sequenza di bit, in numero fissato 1

Caratteristiche della memoria


Un componente integrato (chip) di memoria si caratterizza
specificandone:
la capacit, misurata in numero totale di bit memorizzabili: di
solito si esprime come prodotto del numero di parole per il numero di bit contenuti nella parola
le funzioni: lettura e scrittura, solo lettura
il numero di porte di accesso
e il tempo necessario per laccesso
Cicli di lettura:
indirizzo della parola da leggere
comando di lettura (RD a livello 1)
non isolare le uscite dati (OE = 1)
abilitare il componente (CS = 1)
contenuto della parola disponibile sulle
uscite Ritardo di lettura: ~10 ns
Cicli di scrittura:
indirizzo della parola da scrivere
dato da scrivere in ingresso
comando di scrittura (RD a livello 0)
isolare le uscite dati (OE = 0)

abilitare il componente (CS = 1). Ritardo di scrittura: ~10 ns

Struttura della Memoria


Le strutture interne delle memorie sono
molto varie; sono disponibili numerose
tecnologie di memoria.
Il modo pi naturale per realizzare una
memoria costruire una matrice di
bistabili, completandola con reti
combinatorie di controllo per gestire
laccesso alle parole.

Organizzazione a matrice
Le memorie vengono viste come vettori (1dimensionali) di parole.
Ma le memorie di elevata capacit possono
in realt avere una struttura interna a
matrice (2-dimensionale), allo scopo di
ridurre i collegamenti interni. In tal caso
sono di solito presenti due comandi aggiuntivi (RAS e CAS), per laccesso alla memoria

Per ottenere memorie di capacit elevata, occorre aggregare pi componenti di memoria, realizzando un
banco di memoria. I banchi di memoria hanno una struttura a matrice di chip. Per aumentare la lunghezza
della parola di memoria, si compone una riga di chip di memoria, da usare in parallelo. Per aumentare il
numero di parole della memoria, si compone una colonna di chip di memoria, da usare in esclusione.

Esistono svariate tecnologie di memoria Differiscono per:


capacit della memoria
tempo di accesso a una parola (in lettura o in scrittura)
politica di accesso:
o lettura e scrittura
o sola lettura
o programmabilit sul campo
stabilit: volatile o persistente
costo

RAM Statica (SRAM)


Specifiche:
Memoria RAM (Random Access Memory) realizzata con bistabili
Capacit medio-piccola
Tempo di accesso molto breve
Funziona in lettura e scrittura
Volatile: senza alimentazione il contenuto della memoria svanisce
Usi: svariati, in particolare come cache

RAM Dinamica (DRAM)


Tecnologia:
La memoria SRAM consuma parecchi transistor per bit memorizzato (circa 6 transistor per bit)
La tecnologia DRAM usa circa 1 transistor per bit memorizzato
Sfrutta il fenomeno dellaccumulo temporaneo di carica sul transistor
Internamente contiene un circuito di rinfresco che rigenera le cariche sui transistor prima che
queste svaniscano
Specifiche:
Memoria RAM realizzata come matrice di transistor, ad altissima densit
Capacit grande-grandissima
Tempo di accesso medio
Funziona in lettura e scrittura
Volatile: senza alimentazione il contenuto della memoria svanisce
Usi: numerosissimi, la memoria centrale dei calcolatori normalmente DRAM

Rom
Specifiche:
Memoria ROM (Read Only Memory), realizzata come matrice di transistor
Capacit grande-grandissima
Tempo di accesso medio
Funziona in sola lettura
Persistente: il contenuto permane anche in assenza di alimentazione
Usi: per memorizzare programmi permanenti, non modificabili; grandi volumi di produzione

PROM, EPROM, EEPROM


Specifiche:
Capacit e tempo simili alla ROM
Sola lettura e persistenti
Sono programmabili sul campo, tramite un apposito programmatore:

o PROM: programmabile una volta sola


o EPROM: cancellabile con raggi UV
o EEPROM: cancellabile elettricamente (si pu anche scrivere un solo byte per volta)
Usi: piccoli volumi di produzione, prototipi

Memoria Flash
Specifiche:
Capacit e tempo simili alla DRAM (o solo di poco inferiori)
Funziona in lettura e scrittura (la scrittura per a blocchi di byte)
Persistente: il contenuto permane anche in assenza di alimentazione
Usi: dati multimediali (p. es. immagini statiche, sequenze video), programmi fissi ma
periodicamente aggiornabili

Tabella Riassuntiva

Il problema della memoria


Problema: la velocit delle memorie cresce pi lentamente della velocit dei processori
Parametro economico: tempo di accesso rispetto al costo per Mbyte.

Le gerarchie di memoria
Affinch si possa sfruttare la potente CPU a un prezzo accessibile, invece che realizzare una DRAM molto
potente e molto costosa, si realizzano memorie intermedie pi piccole e veloci

Il principio di localit
Localit: in ogni istante di tempo un programma accede a una parte relativamente piccola del suo spazio di
indirizzamento
Localit temporale: se un dato viene referenziato in un dato istante, probabile che lo stesso dato
venga nuovamente richiesto entro breve
Localit Spaziale: Se un dato viene utilizzato in un dato istante, probabile che dati posizionati in
celle di memoria adiacenti vengano anchessi richiesti (entro breve)
Negli ultimi 15 anni, le tecniche di miglioramento delle prestazioni nellhardware si sono basate sul
principio di localit

Gerarchia di memoria Definizioni


Hit (successo): dati presenti in un blocco del livello superiore (esempio: Blocco X)
Hit Rate (tasso di successo): numero di accessi a memoria che trovano il dato nel livello superiore
sul numero totale di accessi
Hit Time (tempo di successo): tempo per accedere al dato nel livello superiore della gerarchia =
Tempo di accesso alla cache + tempo per determinare successo/fallimento della richiesta
Miss (fallimento): i dati devono essere recuperati dal livello inferiore della memoria (Blocco Y)
Miss Rate (tasso di fallimento) = 1 - (Hit Rate)
Miss Penalty (tempo di fallimento): tempo necessario a sostituire un blocco nel livello superiore +
tempo per trasferire il dato al processore
Hit Time << Miss Penalty

Memoria al livello superiore della gerarchia


Sfruttare il principio di localit dei programmi e tenere in memoria cache i dati utilizzati pi di recente
Obiettivo: fornire dati al processore in uno o due cicli di clock
Memoria cache: veloce nei tempi di accesso ma di dimensioni ridotte (a causa del costo che necessario
sostenere per realizzare memoria veloce)

La cache e il principio di localit


Le memorie cache sfruttano il principio di localit spaziale trasferendo dal livello inferiore della gerarchia
pi dati di quanti non ne siano stati strettamente richiesti (blocco o linea di cache). La localit temporale
viene sfruttata nella scelta del blocco da sostituire nella gestione di un fallimento (es: sostituire il blocco a
cui si fatto accesso meno di recente): LRU (Less Recently Used)

Cache a indirizzamento diretto

Ogni posizione della cache include:


Valid bit che indica se questa posizione contiene o meno dati validi. Quando il calcolatore viene
acceso tutte le posizioni della cache sono segnalate come NON valide
Campo etichetta (Tag) che contiene il valore che identifica univocamente lindirizzo di memoria
corrispondente ai dati memorizzati
Campo dati che contiene una copia dei dati
Specifiche:
Memoria principale di 2N parole (non byte!)
Indirizzo di memoria di N bit diviso in 4 campi:
Descrizione:
B bit permettono di individuare il singolo byte della parola nella linea di cache
o Se la parola non indirizzabile per byte B=0
o Altrimenti la parola di 2B byte 2.
K bit per identificare la parola allinterno della linea di cache
o Se la linea contiene una sola parola K=0
o Altrimenti la linea contiene 2K parole 3.
M bit per individuare la posizione della linea di cache
o La cache contiene 2M linee 4.
N-M-K-B bit di etichetta (Tag) per verificare che la linea di cache contenga esattamente lindirizzo
cercato

Cache completamente associativa


Specifiche:
Un dato pu essere memorizzato in qualunque posizione della
cache.
Non esiste una relazione fissa tra indirizzo di memoria del dato e
posizione in cache

Cache Set-Associativa

Per avere i vantaggi delle cache associative, riducendone i costi.


Ogni blocco pu andare in ununica linea
o Come nellindirizzamento diretto
Ogni linea comprende n blocchi
o Un blocco dato pu occupare qualunque posizione nella linea,
analogamente alle cache associative
Una cache set-associativa in cui un blocco pu andare in n posizioni viene definita set-associativa a n
vie.
Ogni blocco della memoria corrisponde come nella cache ad indirizzamento diretto ad un unica linea
della cache (che un insieme) ed il blocco pu essere messo in uno qualsiasi degli elementi di questo
insieme
Combina la modalit a indirizzamento diretto per gli insiemi della cache, e la modalit completamente
associativa per i blocchi allinterno dellinsieme.
Modalit di indirizzamento:
B bit meno significativi per individuare il byte allinterno della parola di 2B byte
W bit per individuare la parola allinterno del blocco di 2W parole
M bit per individuare linsieme o linea di cache
N-(M+W+B) come etichetta
Cache Set-Associativa a 2 vie
Cache a due vie: insiemi (linee) di 2 blocchi. Equivale ad avere due cache a indirizzamento diretto che
operano in parallelo. La parte di indirizzo che individua linsieme seleziona i due blocchi della cache. Le due
etichette vengono confrontate in parallelo con quella dellindirizzo cercato. Il dato viene selezionato in
base al risultato dei due confronti

Cache Set-Associativa a 4 vie


Indirizzo di memoria: 32 bit
Memoria cache 1KByte indirizzabile per byte, 1 parola da 4 Byte per blocco
Cio ogni linea contiene un insieme di 4 blocchi, ciascuno da 4 byte (totale 16 byte)
Le linee sono 1024/16 = 64 (=26)
Organizzazione dellindirizzo:
Bit 0 e 1 per indirizzare i byte nella parola
da 4 byte Bit 2-7 indirizzo dellinsieme nella cache
Bit 8-31 etichetta

Posizionamento del blocco


Indirizzamento diretto: Posizione univoca: indirizzo di memoria modulo numero dei blocchi in cache
Completamente associativa: Posizione qualunque allinterno della cache
Set associativa:
Posizione libera allinterno dellinsieme
Insieme = (indirizzo di memoria/numero dei blocchi) modulo numero degli insiemi

Identificazione di un blocco
Indirizzamento diretto:
Determina posizione
Confronta etichetta trovata con quella cercata etichetta e verifica bit valido

Completamente associativo:
Confronta etichetta in ogni blocco e verifica bit valido
Set-associativo:
Identifica insieme
Confronta etichette dellinsieme e verifica bit valido

Quale blocco sostiturie?


Definito dallindirizzo nelle cache a indirizzamento diretto
Cache set associative o completamente associative:
Casuale
LRU (Least Recently Used)

Strategie di scrittura di un blocco


Write through: Linformazione viene scritta sia nel
blocco del livello superiore sia nel blocco di livello inferiore della memoria

Write back: Linformazione viene scritta solo nel blocco di livello superiore. Il livello inferiore viene
aggiornato solo quando avviene la sostituzione del blocco di livello superiore.

Organizzazione cache a 2 livelli

Memoria virtuale
Sfruttando sempre il principio della localit si pu fare in modo che la CPU veda uno spazio (codice +
dati) per ogni programma pi grande della memoria disponibile.
Parte del programma sta su disco Viene caricato in memoria quando necessario, Stesso principio della
memoria cache, ma tra memoria e disco

Mappaggio degli indirizzi virtuali e fisici


V = {0, 1, . . . , n - 1} spazio di indirizzamento virtuale
M = {0, 1, . . . , m - 1} spazio di indirizzamento fisico
MAP: V M funzione parziale di traduzione degli indirizzi
MAP(a) = A se il dato allindirizzo virtuale a presente in memoria allindirizzo fisico A
MAP(a) = se il dato allindirizzo virtuale a non presente in memoria

Traduzione indirizzi virtuali e fisici


mettiamo in cache la parte di tabella che serve attualmente, cio le informazioni che servono per tradurre i
numeri delle pagine virtuali usate pi di recente.
TLB: Translation Lookaside Buffer una cache di traduzione

Criterio di progettazione di una CPU: prestazioni che sono determinate da:


Numero di istruzioni da eseguire

Durata del ciclo di clock


Numero di cicli per istruzione (CPI)
Le ultime due determinate dal processore: design del datapath e del controllore tecnologia

Progettiamo un processore a ciclo singolo Cio che esegue una istruzione in un (solo) ciclo di clock

Vantaggi

Svantaggi

semplicit di progettazione
CPI basso

tempo di ciclo lungo


limitato dallistruzione pi lenta.

Progettazione passo passo


1. Linstruction set fornisce i requisiti per il datapath
Il significato delle istruzioni normalmente espresso in termini di trasferimenti tra registri.
Es. R[rd] < R[rs] + R[rt];
Il datapath deve essere in grado di realizzare questi trasferimenti
2. Scegliere i componenti del datapath e la metodologia di temporizzazione (clocking)
3. Progettare il datapath in modo da soddisfare i requisiti
4. Analizzare il datapath per identificare i controlli che determinano il trasferimento tra registri.
5. Progettare la logica di controllo

Passo 1
Formato delle istruzioni
Le istruzioni sono lunghe 32 bit:

op: codice operativo (quale operazione esegue listruzione)


rs, rt, rd: indicano registri degli operandi e del risultato
shamt: shift amount
funct: indica varianti delloperazione indicata da op
address / immediate: indirizzo (spiazzamento) o valore immediato
target address: indirizzo destinazione di unistruzione di salto
Datapath
Per progettare il datapath ci basta un sottoinsieme rappresentativo delle istruzioni MIPS:
ADD e SUB
addu rd, rs, rt
subu rd, rs, rt
OR Immediate:
ori rt, rs, imm16
LOAD e STORE
lw rt, rs, imm16
sw rt, rs, imm16
BRANCH:
beq rs, rt, imm16

Register Transfer Logic (RTL)


Il significato delle istruzioni espresso in RTL
Lesecuzione di tutte le istruzioni inizia con il fetch (lettura da memoria) dellistruzione.
R-type op | rs | rt | rd | shamt | funct <- MEM[PC]
I-type op | rs | rt |
Imm16
<- MEM[PC]
J-type op |
target address
<- MEM[PC]

Passo 2
Requisiti per lesecuzione delle istruzioni
Memoria
o Istruzioni
o Dati
* Separate, perch
dobbiamo leggere
listruzione da eseguire e
leggere o scrivere dati nello stesso ciclo di clock

Registri (32 bit)


o Banco di 32 Registri a 32 bit
Lettura rs
Lettura/scrittura rt
Scrittura rd
* Due bus di uscita: Bus A e Bus B
Un bus di input: Bus W
Ingressi:
RA e RB selezionano i registri da riversare su BusA e BusB
RW seleziona il registro in cui verranno scritti i dati provenienti da busW quando
Write Enable 1
Clock: significativo solo in scrittura. In lettura il circuito si comporta in modo
combinatorio: su BusA e BusB ci sono sempre i valori contenuti nei registri indicati da
RA e RB

o Un Program Counter (PC)


Registro da 32 bit che memorizza lindirizzo dellistruzione corrente
Lettura/scrittura PC
o Tutti simili al Flip Flop D, con commutazione sul fronte di discesa
*requisiti per lesecuzione delle istruzioni
*Componenti (combinatori) del dataapath

*Temporizzazione
Estensione (in segno o zero)
Somma, sottrazione, or bitwise di registri o di immediato (esteso a 32 bit)
o Il confronto richiesto da BEQ una sottrazione di cui guardiamo se il risultato nullo
Somma del valore 4 o di un immediato esteso e shiftato al PC

Fetch:
0. PCout, MARin, read, select 4, add, Zin
1. Zout, PCin, Vin, WMFC
2. MDRout, IRin, goto op_code

Potrebbero piacerti anche