1 0
0 1
1 0
1
• L’S-R Latch è un circuito, composto da 2 porte NOR concatenate, che • Poniamo (S,R)=(1,0) per effettuare il setting del latch a sinistra
costituisce l’elemento base per costruire elementi di memoria più complessi – il valore memorizzato passa da 0 a 1 (il valore memorizzato viene
– S sta per Set e R sta per Reset mantenuto riportando S=0)
• Anche se (S,R)=(0,0), gli output del latch possono comunque essere diversi • Poniamo (S,R)=(0,1) per effettuare il resetting del latch a destra
– l’output è infatti il valore memorizzato nel latch – il valore memorizzato passa da 1 a 0 (il valore memorizzato viene
mantenuto riportando S=0)
– verificare infatti che il latch a sinistra memorizza il valore 0, mentre quello
• La combinazione di valori (S,R)=(1,1) non deve mai esser presentata al latch
a destra memorizza il valore 1
– succede che Q=~Q=0, ma il valore memorizzato può essere arbitrario
quando resettiamo S e R (dipende dall’ordine del resetting).
Arch. Elab. - S. Orlando 3 Arch. Elab. - S. Orlando 4
Clock Latch clockato (D-latch)
• I segnali S e R devono essere stabili, e valere (1,0) o (0,1) per poter
memorizzare un valore corretto
• Ma (S,R) sono di solito calcolati da un circuito combinatorio • NOTA: latch disegnato sottosopra
– l’output del circuito diventa stabile dopo un certo intervallo di tempo rispetto alla figura precedente
– è possibile calcolare questo intervallo tempo, che dipende dal numero di => posizioni invertite di (S, R)
porte attraversate e dal ritardo delle porte e di (Q, ~Q)
– bisogna evitare che durante questo intervallo gli output intermedi del • D=1 corrisponde al setting
circuito vengano presentati al latch per la memorizzazione (altrimenti – S=1 e R=0
possono essere memorizzati valori errati) • D=0 corrisponde al resetting
• Soluzione ⇒ usiamo un segnale a gradino, detto clock, il cui periodo – S=0 e R=1
(ovvero l’intervallo di tempo) viene scelto abbastanza grande da assicurare la • La combinazione S=1 e R=1 non può mai verificarsi
stabilità degli output del circuito
• A causa delle 2 porte AND, quando il clock è deasserted abbiamo che nel
– usiamo il clock per abilitare la scrittura nei latch latch non viene memorizzato alcun valore:
– il clock determina il ritmo dei calcoli e delle relative operazioni di – S=0 e R=0
memorizzazione
• Viene memorizzato un valore (in dipendenza del valore di D) solo quando il
clock è asserted
• Se il segnale C fosse invertito (porta NOT aggiuntiva), il latch memorizzerebbe
sul valore basso del clock (cioè quando il clock è deasserted)
Arch. Elab. - S. Orlando 5 Arch. Elab. - S. Orlando 6
Diagramma temporale del D-latch Ritardi nella propagazione dei segnali nei circuiti
A
D B
SUM
CARR Y
C
ritardo ritardo
ritardo
Q di propagazione
di SUM glitch : 1+0=1, non 0 !
• Il segnale D, ottenuto solitamente come output di un circuito combinatorio
– deve essere già stabile quando C diventa asserted • I circuiti reali hanno ritardi non-nulli
– deve rimanere stabile per tutta la durata del livello alto di C (Setup time) • I ritardi dipendono dai cammini, ovvero dalle porte e dai fili, attraversati dai
segnali
– deve infine rimanere stabile per un altro periodo di tempo per evitare
malfunzionamenti (Hold time) • Gli output possono temporaneamente cambiare da valori corretti a valori
errati, e ancora a valori corretti
– questo fenomeno è noto come glitch
– dopo un certo intervallo, con alta probabilità i segnali si stabilizzano
• Si possono progettare componenti di memoria, in cui la memorizzazione può • Il generatore di impulsi permette appunto
avvenire a varie istanti rispetto al segnale a gradino del clock di generare impulsi (brevissimi) in
corrispondenza del fronte di salita di un
– level-triggered methodology
segnale a gradino (a)
• avviene sul livello alto (o basso) del clock
• il D-latch precedente era level-triggered (rispetto al livello alto)
– edge-triggered methodology
• avviene sul fronte di salita (o di discesa) del clock
Generatori di impulsi
• possiamo immaginare che la memorizzazione avvenga istantaneamente, e che
l’eventuale segnale di ritorno sporco, proveniente dal circuito combinatorio,
non faccia in tempo ad arrivare a causa dell’istantaneità della memorizzazione • Porta NOT con ritardo ∆
• è quello che ci serve !! • Solo durante l’intervallo ∆, quando a sale
e diventa affermato
– i valori corrispondenti a b e c sono
entrambi affermati
– l’impulso b AND c diventa anch’esso
affermato
I0 O0 • Definiamo
In Circuiti Om
– INPUTS(ti) e OUTPUTS(ti) i valori presenti, rispettivamente, sugli input e gli
output dei circuiti combinatori al tempo ti
Input
combinatori Output – STATE(ti) i valori presenti nei registri di stato al tempo ti
• Circuito sequenziale di Mealy
R
– OUTPUTS(ti) = δ(INPUTS(ti), STATE(ti))
e
g Next State – NEXT_STATE(ti+1) = λ(INPUTS(ti), STATE(ti))
Current State • Circuito sequenziale di Moore
– OUTPUTS(ti) = δ(STATE(ti))
– NEXT_STATE(ti+1) = λ(INPUTS(ti), STATE(ti))
ti-1 ti ti+1 • Nota che nel circuito di Moore il valore dell’output al tempo ti dipende solo
– dal valore dei registri di stato
• Consideriamo che il Registro di stato è realizzato con flip-flop che impiegano – i registri di stato sono stati modificati al ciclo di clock precedente (ti-1)
una metodologia falling-edge triggered sulla base degli input a quel tempo presenti in ingresso al circuito
– durante il tempo ti, il prossimo stato viene calcolato (ovvero lo stato al
tempo ti+1), ma viene memorizzato solo in corrispondenza del fronte di
discesa del clock Arch. Elab. - S. Orlando 17 Arch. Elab. - S. Orlando 18
• Abbiamo quindi bisogno di 2 circuiti combinatori, che in principio sono • Per sintetizzare il circuito sequenziale in maniera diretta basta conoscere le
distinti tabelle di verità delle funzioni
• I collegamenti in verde verso il circuito OUT non sono necessari per realizzare – OUTPUTS e NEXT_STATE
circuiti sequenziali di Moore • Dalle tabelle siamo poi in grado di determinare le equazioni booleane e i
I0 O0 corrispondenti circuiti
• Ogni registro costituito da n flip-flop, dove n è il numero bit che costituiscono Dn-1 Qn-1
una word D Q
• Più registri sono organizzati in una componente nota come Register file
– il register file del MIPS contiene 32 registri (32x32=1024 flip-flop) • Nota che per quanto riguarda i registri del Datapath, il clock non entra
– deve permettere la lettura di 2 registri direttamente nei vari flip-flop
– deve permettere la scrittura di 1 registro – il clock viene infatti messo in AND con un segnale di controllo
– il segnale determina se, in corrispondenza del fronte di discesa (salita) del
Arch. Elab. - S. Orlando 21
clock, il valore di D debba (o meno) essere memorizzato nel registro
Arch. Elab. - S. Orlando 22
• La SRAM (Static RAM) è più veloce • SRAM realizzata come matrice di latch con
– tempi di accesso intorno a 5 ns – larghezza o ampiezza W (numero di latch per
– per la sua realizzazione sono usati dei latch ogni cella)
– è usata per realizzare memorie veloci, come le memorie cache – altezza H (numero di celle indirizzabili)
•
SRAM
• La DRAM (Dynamic RAM) è più capiente ma più lenta Per ragioni costruttive W è spesso piccolo
H H×W
– tempi di accesso intorno a 50-100 ns • Facendo un paragone con il Register file
– non è realizzata tramite latch – non è possibile scrivere e leggere
– ogni bit è memorizzato tramite un condensatore contemporaneamente
– è necessario “rinfrescare” il contenuto delle DRAM a intervalli di tempo – è infatti possibile specificare un singolo indirizzo,
che seleziona la cella da leggere (o da scrivere) W
prefissati
– è usata per realizzare la memoria principale • Es. di configurazione Numero di bit
– 256K × 1 (256K celle da 1 bit = 256Kb) dell’indirizzo: log2 H
– 18 linee di indirizzo (218 = 256K)
– 1 linea in input e 1 in output
• Es. di configurazione alternativa
– 32K × 8 (32K celle da 8 bit = 256Kb)
– 5 linee di indirizzo (215 = 32K)
Arch. Elab. - S. Orlando 27 – 8 linea in input e 8 in output Arch. Elab. - S. Orlando 28
SRAM Realizzazione SRAM
• Le DRAM come le SRAM sono realizzate • Abbiamo visto che per diminuire la complessità dei decoder è opportuno
con una decodifica a 2 livelli suddividere gli indirizzi in 2 blocchi
• In figura, un chip DRAM di 222 = 4 Mb, – parte alta per accedere una riga
con organizzazione 4 M × 1 – parte bassa per accedere una specifica colonna
– indirizzo totale di 22 bit • Nota che celle consecutive hanno indirizzi che solitamente differiscono solo
– indirizzo spezzato in due pezzi da per la parte bassa dell’indirizzo
11 bit ciascuno – quindi sono contenuti all’interno di una stessa riga selezionata con la
– parte alta e bassa dell’indirizzo parte alta dell’indirizzo
considerate come indirizzo di RIGA • Le Synchronous SRAM e DRAM (SSRAM e SSRAM) permettono di aumentare
o di COLONNA, rispettivamente la banda di trasferimento della memoria sfruttando la proprietà di sopra
• se interpretato come indirizzo di – è possibile specificare che vogliamo trasferire dalla memoria un burst di
RIGA ha effetto sul Decoder dati (ovvero una sequenza di celle consecutive)
• se interpretato come indirizzo di – ogni burst specificato da un indirizzo di partenza, e da una lunghezza
COLONNA ha effetto sul Mux
– le celle del burst sono contenuti all’interno di una stessa riga, selezionata
– accesso ottimizzato a bit di memoria una volta per tutte
consecutivi
– la memoria fornisce una delle celle del burst a ogni ciclo di clock
• sono contenuti nei column latches
dopo un accesso di RIGA – migliore banda di trasferimento (no. di trasferimenti al sec), perché non è
necessario ripresentare l’indirizzo per ogni cella del burst
Arch. Elab. - S. Orlando 35 Arch. Elab. - S. Orlando 36