Anda di halaman 1dari 9

Elementi di memoria

• I circuiti combinatori sono in grado di calcolare funzioni che dipendono solo


dai dati in input

• I circuiti sequenziali sono invece in grado di calcolare funzioni che dipendono


anche da uno stato
Memorie e circuiti sequenziali => ovvero, che dipendono anche da informazioni (stato)
memorizzate in specifici elementi di memoria
– in generale, la funzione calcolata ad un dato istante dipende dalla
Salvatore Orlando sequenza temporale dei valori in input al circuito
– la sequenza temporale determina infatti il valore memorizzato nello stato

• Possiamo organizzare le porte logiche in modo da realizzare un elemento di


memoria ?
– Sì, un elemento in grado di memorizzare un singolo bit è il latch

Arch. Elab. - S. Orlando 1 Arch. Elab. - S. Orlando 2

Latch Set / Reset del latch


1
0 1

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

Diagramma temporale di 1-bit adder (half-adder)


Setup time Hold time
100

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

Arch. Elab. - S. Orlando 7 Arch. Elab. - S. Orlando 8


Periodo del ciclo di clock Elemento di memoria usato come input e output

• Durante ogni periodo di clock


– il circuito combinatorio di sopra dovrebbe calcolare una funzione sulla
base del vecchio valore dell’elemento di memoria (stato del circuito)
– l’output calcolato dovrebbe diventare il nuovo valore da memorizzare
nell’elemento di memoria (nuovo stato del circuito)
T
– il nuovo valore memorizzato dovrebbe essere usato come input del
• Il periodo T deve essere scelto abbastanza lungo affinché l’output del circuito circuito durante il ciclo di clock successivo
combinatorio si stabilizzi (deve essere stabile un po’ prima del periodo di
apertura del latch)
⇒ l’elemento di memoria deve essere usato sia come input e sia come output
durante lo stesso ciclo di clock
• Il D-latch precedente funzionerebbe in questo caso ?
• Se T è espresso in sec, la frequenza del del clock è dato da Freq = 1/T Hz
– Purtroppo no, perché se il clock rimane alto per molto tempo, allora il
• Se T = 10 nsec, qual è la frequenza del clock? valore memorizzato nel latch potrebbe nel frattempo fluire fuori, entrare
– 1 nsec = 10-9 sec 1 µsec = 10-6 sec 1 msec = 10-3 sec nel circuito, e un valore non corretto potrebbe finire per essere
– Freq = 1/T = 1 / ( 10 * 10 ) = 10 Hz = 10 / 10 MHz = 102 MHz = 100 MHz
-9 8 8 6 memorizzato nel latch
Arch. Elab. - S. Orlando 9 Arch. Elab. - S. Orlando 10

Metodologia di timing Generatore di implusi

• 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

Arch. Elab. - S. Orlando 11 Arch. Elab. - S. Orlando 12


Flip-flop semplice Flip-flop più complesso

• Il Flip-flop di tipo D a destra è


• Il D flip - flop memorizza
un elemento di memoria
“istantaneamente” il valore di Q’
usabile sia come input che
D sul fronte di salita del
come output durante uno
clock, ovvero in
stesso ciclo di clock
corrispondenza dell’impulso
– realizzato ponendo in serie
– metodologia edge-
2 D-latch
triggered di tipo rising
triggered
• Metodologia edge-triggered
• Il segnale memorizzato nel – rispetto al flip-flop Setup time Hold time
flip-flop comincia a fluire precedente, questo è di
subito fuori dal flip-flop tipo falling triggered
D
• A causa della brevità – ovvero, per semplicità
dell’impulso, questo segnale possiamo pensare che la
memorizzazione avvenga C
“non fa in tempo” a entrare ritardo ritardo
nel circuito combinatorio a in maniera istantanea sul
fronte di discesa del Q’
valle, e a modificare l’input
del flip-flop segnale di clock C
Q
Arch. Elab. - S. Orlando 13 Arch. Elab. - S. Orlando 14

Flip-flop Circuito sequenziale sincrono


• (1) • Blocco logico con linee in input e output composto da
– Il primo latch è aperto e – circuiti combinatori
Q’ pronto per memorizzare D. Il
– elementi di memoria clockati (registri realizzati tramite flip-flop), che
valore memorizzato Q’ fluisce
mantengono lo stato del circuito e che possono essere letti/scritti nello
fuori, ma il secondo latch è
stesso periodo di clock
chiuso
• => nel circuito combinatorio
• I circuiti combinatori sono le componenti che calcolano
a valle entra ancora il – i valori in output
vecchio valore di Q – i valori da memorizzare negli elementi di memoria
• (2)
Setup time Hold time – Il segnale del clock scende, e I0 O0
in questo istante il secondo
latch viene aperto per In Circuiti Om
D
(1) memorizzare il valore di Q’ combinatori
• (3)
(2) (3)
C – Il secondo latch è aperto,
ritardo ritardo
memorizza D (Q’), e fa fluire il R
Q’ nuovo valore Q nel circuito a e
valle. Il primo latch è invece g
Q chiuso, e non memorizza
niente Arch. Elab. - S. Orlando 15 Arch. Elab. - S. Orlando 16
Circuiti sequenziali Tipi di circuito (Mealy vs Moore)

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

Mealy vs. Moore Sintesi di reti sequenziali

• 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

In OUT • Ma come si fanno a specificare e derivare le tabelle di verità?


Om
– vedremo in seguito come è possibile specificare il
comportamento di un circuito sequenziale tramite un particolare
STATE
programma, espresso graficamente come un automa a stati finiti
• grafo diretto
• nodi (stati) + archi (transizioni di stato)
10
• etichette sui nodi e sugli archi (input/output)
R X,Y
e
g

Arch. Elab. - S. Orlando 19 Arch. Elab. - S. Orlando 20


Register file Singolo registro
Q0
• La parte operativa della CPU contiene, oltre all’ALU alcuni registri D0
D Q
– ogni registro memorizza all’interno della CPU una word
C
– word = 32 b nel processore MIPS
D Q D2 Q1
• Registri = operandi delle istruzioni aritmetiche logiche D Q D Q
32 32
• i due operandi in input sono letti da una coppia di registri C
C
• l’operando in output è scritto su un registro

• Ogni registro costituito da n flip-flop, dove n è il numero bit che costituiscono Dn-1 Qn-1
una word D Q

– nel MIPS ogni registro è di 4 B = 32 b C

• 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

Componente Register file del Datapath Lettura dal Register file


• Read1 # (5 bit) • 2 MUX 32:1, larghi 32 bit
– numero (0-31) del 1o • I controlli dei 2 MUX sono
5
registro da leggere rispettivamente
• Read2 # (5 bit) – Read1 # e Read2 #
5 32
– numero (0-31) del 2o • Nota che il Register file
registro da leggere fornisce sempre in output
5
• Read data 1 (32 bit) una coppia di registri
32 – valore del registro letto – in certi casi essi
32 sulla base di Read1 # possono esser non
• Read data 2 (32 bit) significativi poiché
– valore del registro letto sono non significativi i
sulla base di Read2 # controlli Read1 # e
Read2 #
• Write • Write # (5 bit)
– in questi casi i circuiti
– segnale di controllo, che viene – numero (0-31) del registro
che potenzialmente
messo in AND con il clock da scrivere
potrebbero usarli
– solo se Write=1, il valore di • Write data (32 bit) hanno la responsabilità
Write data è scritto in uno dei – valore del registro da di non considerarli
registri scrivere in base a Write #
Arch. Elab. - S. Orlando 23 Arch. Elab. - S. Orlando 24
Scrittura nel Register file Memoria principale

• Decoder che decodifica CPU


il segnale di controllo
Write # (5 bit) Control
– 32 bit in output Datapath Memoria
5
Principale
• Il segnale di Write (a sua
volta in AND con il
clock) abilita solo uno
dei 32 registri
– il segnale di Write è • La dimensione del Register file è piccola
infatti in AND con
– i singoli registri possono essere usati per codificare singole variabili di
l’output del decoder 32
tipo non strutturato
– purtroppo per memorizzare tutti i dati e il codice di un programma sono
• Se il segnale di Write è tipicamente necessari diversi KB o MB
non affermato, i
• Memoria principale (RAM - Random Access Memory)
possibili valori spuri in
input non verranno – meno veloce della memoria dei registri, ma molto più capiente
memorizzati nel – è detta Random Memory perché i tempi di accesso sono indipendenti dal
Register file valore dell’indirizzo della cella di memoria acceduta
Arch. Elab. - S. Orlando 25 Arch. Elab. - S. Orlando 26

SRAM e DRAM SRAM

• 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

• Esempio di chip 32K × 8 • Tecniche realizzative diverse rispetto a quelle del


register file
• Chip enable
– il register file impiega decoder (per selezionare
– da affermare per poter leggere o
il registro da scrivere) e multiplexer (per
scrivere
selezionale il registro da leggere)
• Output enable
– con un numero elevato di celle di memoria
– da affermare per poter abilitare avremmo bisogno di enormi decoder o
l’uscita del chip su un bus multiplexer
condiviso • avremmo bisogno di porte AND con fan-in
• Per scrivere
– serve a poter collegare molti chip di troppo elevato
– Chip select
memoria ad un singolo bus • necessari livelli multipli di porte AND, con
– Address conseguente introduzione di ritardi negli accessi
• Write enable
– Write enable alla memoria
– impulso che, quando attivato,
registra nella linea di latch – input in Din – Per evitare il multiplexer in uscita
individuati da Address il valore • Per leggere • si usa una linea di bit condivisa su cui i vari Multiplexer 4:1
presentato in Din elementi di memoria sono tutti collegati (or-ed) realizzato con
– Chip select
• il collegamento alla linea condivisa avviene 4 buffer a 3 stati
• Din e Dout – Address tramite buffer a tre stati, che chiudono o aprono i
• Address – Output enable collegamenti (se il controllo è affermato o meno)
– output in Dout
Arch. Elab. - S. Orlando 29 Arch. Elab. - S. Orlando 30

Esempio di SRAM 4x2 SRAM a due livelli


• Tutti i latch di una certa • Nel caso precedente abbiamo evitato l’uso dei Multiplexer, ma rimane il
colonna della memoria problema del Decoder grande
sono collegati alla stessa ⇒ Per ovviare, decodifica degli indirizzi a due livelli
linea in output (Dout[0] e Usiamo un decoder più piccolo e una batteria di piccoli Multiplexer
Dout[1])
• Esempio di SRAM: 32K × 8
– nell’esempio ogni
– suddiviso in 8 blocchi da 32Kb (es. blocchi 512 × 64 bit)
elemento di memoria
(D-latch) ha un – parte alta dell’indirizzo [14-6] seleziona la medesima riga di ogni blocco da
segnale di Enable che 512 × 64 bit attraverso un Decoder
abilita il three-state – parte bassa dell’indirizzo [5-0] seleziona un singolo bit dei 64 bit in output
buffer corrispondente dai vari blocchi attraverso una batteria di 8 Multiplexer
• Il Decoder serve a abilitare
in lettura / scrittura una
certa linea della memoria
– il segnale ad impulso
di Write enable giunge
ad una singola linea • Inoltre, i 2 ouput Dout del chip di memoria
della memoria dovrebbero essere intercettati da due buffer a
3 stati, abilitati dai segnali di chip e output
enable Arch. Elab. - S. Orlando 31 Arch. Elab. - S. Orlando 32
SRAM a due livelli con ampiezza 4 DRAM
• Gli elementi di memoria di tipo DRAM sono meno costosi e più capienti
• Bit di una singola cella sparsi nei 4 moduli della SRAM
rispetto al tipo SRAM, ma sono più lente
– i bit appartenenti alla stessa cella di memoria rappresentati da
– da 5 a 10 volte meno veloci delle SRAM
quadratini di colore identico
• La DRAM è meno costosa, perché è realizzata con un solo transistor per bit ed
un condensatore
– il condensatore possiede la carica (0/1)
– il transistor viene chiuso, trasferendo il potenziale elettrico del
condensatore sulla Bit line (output), grazie al segnale affermato della
Word line

– la specifica Word line è attivata sulla base dell’indirizzo di memoria rich


• Cella di 4 bit di indirizzo 000…0000 • I– iesto
condensatori mantengoni i valori
memorizzati per alcuni ms
• Cella di 4 bit di indirizzo 000…0001 • Necessario il refresh dinamico delle
• Cella di 4 bit di indirizzo 000…0010 DRAM, effettuato leggendo, e subito
riscrivendo i valori appena letti
• Cella di 4 bit di indirizzo 000…0011 – il refresh avviene ad intervalli
fissi, occupa circa il 2% del tempo
• Cella di 4 bit di indirizzo 000…0100
Arch. Elab. - S. Orlando 33
totale, e avviene per righe Arch. Elab. - S. Orlando 34

DRAM SSRAM e SDRAM

• 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

Anda mungkin juga menyukai