Università degli Studi dell’Insubria Dipartimento di Scienze Teoriche e Applicate
Architettura degli elaboratori
Memoria
Marco Tarini
Dipartimento di Scienze Teoriche e Applicate marco.tarini@uninsubria.it
Banco di Memoria
Un blocco funzionale capace di memorizzare un certo numero m di parole di un certo numero n di bit ciascuna
Capacità totale (in bit!): m x n
Spesso espressa in byte: dividere per 8, ovviamente
Indirizzamento:
serviranno k bit per esprimere un indirizzo, con 2k= m
cioè k = log2n
Le due operazioni eseguibili sul banco sono:
lettura, ovvero si prelevano i m bit memorizzati in una parola scrittura, ovvero si memorizzano in una parola m bit
Memoria
Architettura degli elaboratori - 19 -
Banco di memoria: considerazioni
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 l’accesso alle parole (come già visto per il register file)
Funzionalmente, un banco di memoria è molto simile ad un register file Detto altrimenti, un register file è un banco di memoria
di capienza piccolissima, es 32x32 = 1024 bit
Le capienze tipiche di un banco di memoria sono molto superiori:
da 105a 1011bit
(migliaia, milioni o svariati miliardi di bit)
Avremo bisogno di ottimizzare e semplificare i circuiti
(spesso, sacrificando efficienza e semplificando le funzionalità) Costruiamo banchi di memoria grandi
con componenti di memoria più seplici
Memoria
Architettura degli elaboratori - 20 -
Banco di memoria: considerazioni
Prima semplificazione: riduciamo il numero di bus il banco di registri visto aveva tre «bus»:
due di uscita (da cui leggere i contenuti attuali)
e uno di ingresso (da cui immettere i contenuti da memorizzare) Un componente di un banco di memoria più semplice ha due soli bus:
uno di ingresso e uno di uscita
Es: un componente di memoria da 32x64 bit con 1 bus di uscita e 1 bus di entrata
Memoria
Architettura degli elaboratori - 22 -
Porta di accesso (in lettura e scrittura) al banco di momoria
indirizzo Dato in
CK (clock)
componente
32x64 bits
64 5
Dato out 64
Banco di memoria da 32 x 64 bit possibile implementazione
Memoria
Architettura degli elaboratori - 23 -
CK
64 64
R0 U
L I
R1 U
L I
64
R2 U
L I
64
R3 U
L I
…
64
R30 U
L I
64
R31 U
L I
D E C
32 31 30
64
64
29 28 2
ind 5
MUX
dato in
dato out
Banco di memoria ad un bus solo
Il tipico banco di memoria ha uno solo bus:
da un banco, eseguiamo una sola operazione alla volta, lettura oppure scrittura
Come implementare un bus bidirezionale?
E’ necessaria una nuova porta (per pilotaggio delle uscite del componente) che consenta la NON interferenza fra le uscite e le entrate nel bus: il tri-state buffer
Inoltre, per costruire banchi di memoria grandi vogliamo unire le uscite di 2 o più componenti in un unico bus
Come garantire la non interferenza fre le uscite dei vari componenti?
Stessa soluzione: il tri-state buffer
Memoria
Architettura degli elaboratori - 24 -
Tri-State Buffer (buffer a tre stati)
È 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 l’uscita
quando un apposito ingresso di controllo E (Enable) non è attivo, il gate forza lo stato di alta impedenza
I U
E
E I U
0 0 Z
0 1 Z
1 0 0
1 1 1
Funzionamento
Memoria
Architettura degli elaboratori - 26 -
I U
E
I U
1
1 1 1 1
I U
E
I U
0
X Z X Z
I U
E
I U
1
0 0 0 0
interruttore chiuso
interruttore chiuso
interruttore aperto
stato di alta impedenza 0 oppure 1
ingresso di controllo
Nota: un tri-state buffer
è molto diverso da una porta AND
Memoria
Architettura degli elaboratori - 27 -
A 0
0
B 1
B
$!&@£$!
Circuito non corretto!
A 0
Z
B 1
B
B
Circuito corretto A e B valgono 0 oppure 1
non leggibile se B=1 !
Nota: il valore Z (alta impedenza) è molto diverso da 0
1: passa corrente a (relativamente) bassa tensione 0: passa corrente a (relativamente) alta tensione Z: non passa corrente (è isolato)
Per misurare la tensione, devo avere corrente se faccio confluire due cavi con 0 e 1 in un cavo, ottengo un cavo illeggibile / rumoroso / casuale se faccio confluire due cavi con 0 e Z in un cavo, ottengo un cavo con 0
se faccio confluire due cavi con 1 e Z in un cavo, ottengo un cavo con 1
se faccio confluire due cavi con Z e Z in un cavo, ottengo un cavo con Z
Memoria
Architettura degli elaboratori - 28 -
Tri-State Buffer : uso tipico OE (Output Enable)
DISPOSITIVO A input
output
bus di input
bus di output
DISPOSITIVO B input
output
DISPOSITIVO C input
output
OE (C)
OE (B)
OE (A)
CORE
Tri-State Buffer : uso tipico CS (Chip Select)
Memoria
Architettura degli elaboratori - 30 -
DISPOSITIVO A input
output
bus di input
bus di output
DISPOSITIVO B input
output
DISPOSITIVO C input
output
OE (C)
OE (B)
OE (A)
CS (C)
CS (B)
CS (A)
CORE
CS (Chip Select) e OE (Output Enable)
Memoria
Architettura degli elaboratori - 31 -
DISPOSITIVO A input
output
bus di input
bus di output
DISPOSITIVO B input
output
DISPOSITIVO C input
output CORE
Tri-State Buffer : uso tipico bus bidirezionali, di input/output
Memoria
Architettura degli elaboratori - 32 -
bus di input / output
CORE
DISPOSITIVO A input output
DISPOSITIVO B input output
DISPOSITIVO C input output
Tri-State Buffer : uso tipico bus bidirezionali, di input/output
bus di input / output
CORE
DISPOSITIVO A input output
DISPOSITIVO B input output
DISPOSITIVO C input output
CS e OE
CS - Chip Select:
isola elettricamente il dispositivo quando non è selezionato (i suoi input, e spesso, anche i suoi output)
quando si manda il segnale sul bus, solo il dispositivo con CS=1 ascolta, gli altri è come se non ci fossero
per il dispositivo con CS è 1 è come essere l’unico sul bus OE - Output Enable:
isolare elettricamente le uscite del dispositivo (ma non le entrate) utile per condividere tanti dispositivi in uscita su uno stesso bus in pratica, consente di implementare un mutex
economico e scalabile (ma non tanto efficiente)
Memoria
Architettura degli elaboratori - 34 -
DEC
…
…
MUX
bus
Un banco di memoria
con un solo bus di input/output
Memoria
Architettura degli elaboratori - 36 -
Porta di accesso (in lettura e scrittura) al banco di memoria
RD e WR = comandi di lettura e scrittura
RD = 1 e WR = 0: eseguiamo una lettura RD = 0 e WR = 1: eseguiamo una scrittura RD = 0 e WR = 0: il banco di memoria è inattivo RD = 1 e WR = 1: NO, errore
k
m
indirizzo
dato
RD (lettura)
CK (clock)
2
kx m bits
WR (scrittura)
Un Memory Bank (da 32x64 bit)
con un bus di uscite ingressi unificato
Memoria
Architettura degli elaboratori - 37 -
bus data
componente memoria 32x64 bit
in out
indirizzo CS
64
ind RD WR
5
control
CS = RD + WR OE = RD
bus indirizzo
CS∙OE CS∙OE
Quando RD = 0 WR = 0 : componente isolato Quando RD = 1 WR = 0 : bus funziona in Quando RD = 0 WR = 1 : bus funziona in
Costruire memorie grandi
N componenti di memoria possono essere assemblati per ottenere banchi di memoria più grandi
O per ottenere memorie con parole più lunghe. Per es:
2 Componenti da 32x64in un banco da 32x128
una componente fornisce i 64 bit HIGH, e l’altra i 64 LOW della parola finale (HIGH = most significant, LOW = least significant) O per ottenere memorie con più parole. Per es:
4 Componenti da 32x64 in un banco da 128x64
una componente memorizza tutte le parole di indirizzo 00…..
una componente memorizza tutte le parole di indirizzo 01…..
una componente memorizza tutte le parole di indirizzo 10…..
una componente memorizza tutte le parole di indirizzo 11…..
CS a 1 solo per la componente attiva.
OE a 1 solo su quella componente, e se lettura.
O entrambe le cose contemporaneamente. Per es: …
128
componente HIGH 32x64 bit
in out
componente LOW 32x64 bit
in out
Un Memory Bank da 32x128 bit
implementato con 2 componenti da 32x64 bit
Memoria
Architettura degli elaboratori - 39 -
bus data
ind ind
128
ind
5bus indirizzo
CS∙OE
CS∙OE CS∙OE
64 64
128
64 64
RD
WR
controlCS = RD + WR OE = RD
CS∙OE
Un Memory Bank da 128x64 bit
implementato con 4 componenti da 32x64 bit
Memoria
Architettura degli elaboratori - 40 -
bus data
componente 00 32x64 bit
in out
ind
componente 01 32x64 bit
in out
ind
componente 10 32x64 bit
in out
ind
componente 11 32x64 bit
in out
ind
CS00 CS01 CS10 CS11
7
64
ind RD WR
5 2
control 4 4
CS00,01,10,11
OE00,01,10,11
bus indirizzo
CS00
OE00 CS00
∙OE00 CS01
OE01 CS01
∙OE01 CS10
OE10
CS10
∙OE10 CS11
OE11 CS11
∙OE11
Un Memory Bank da 128x64 bit
implementato con 4 componenti da 32x64 bit
Memoria
Architettura degli elaboratori - 41 -
bus data
componente 00 32x64 bit
in out
ind
componente 01 32x64 bit
in out
ind
componente 10 32x64 bit
in out
ind
componente 11 32x64 bit
in out
ind
0 1 0
7
64
ind RD WR
5 2
control 4 4
CS00,01,10,11
OE00,01,10,11
bus indirizzo
01 1 0
10111
= 0,1,0,0
= 0,1,0,0
0
0 1 0 0
0 0 0 0
ESEMPIO:
lettura all’indirizzo0110111
Un Memory Bank da 128x64 bit
implementato con 4 componenti da 32x64 bit
bus
componente 00 32x64 bit
in out
ind
componente 01 32x64 bit
in out
ind
componente 10 32x64 bit
in out
ind
componente 11 32x64 bit
in out
ind
0 1 0
7
ind RD WR
5 2
control 4 4
CS00,01,10,11
OE00,01,10,11
bus indirizzo
01 1 0
10111
= 0,1,0,0
= 0,0,0,0
0
0 0 0 0
0 1 0 0
ESEMPIO:
scrittura all’indirizzo0110111
componente 0 - HIGH 32x64 bit
in out
componente 0 - LOW 32x64 bit
in out
componente 1 - HIGH 32x64 bit
in out
componente 1 – LOW 32x64 bit
in out
Un Memory Bank da 64x128 bit
implementato con 4 componenti da 32x64 bit
Memoria
Architettura degli elaboratori - 43 -
bus data
ind ind ind ind
CS0 CS0 CS1 CS1
6
128
ind RD WR
5 1
control 2 2
CS0,1 OE0,1
bus indirizzo
CS0
∙OE0
CS0
∙OE0 CS0
∙OE0
CS0
∙OE0
CS1
∙OE1
CS1
∙OE1 CS1
∙OE1
CS1
∙OE1
Costruire memorie ancora più grandi
Assemblando blocchi di memoria potremmo ottenere memorie ancora più grandi, e così via.
Vogliamo ottenere memorie di GBytes! Questo «scala»?
Problemi:
Numero enorme di Flip-Flop: troppo caro?
Soluzione: passare a DRAM (vedo dopo) Lunghezza dei cavi diviene eccessiva?
Soluzione: disporre i bit memoria spazialmente in una griglia 2D con righe e colonne («organizzazione a matrice»)
Il circuito eccede cmq quello che possiamo stampare in un Chip?
Soluzione: disporre la memoria in un Chip esterno alla CPU Anzi: tanti Chip!
Pilotati da CS e OE.
Memoria
Architettura degli elaboratori - 44 -
Organizzazione a matrice
Le memorie le immaginiamo come vettori (1-dimensionali) di parole Ma le memorie di elevata capacità spesso hanno una struttura fisica interna a matrice (2-dimensionale)
scopo: ridurre i collegamenti interni
In tal caso sono di solito presenti due comandi aggiuntivi (RAS e CAS), per l’accesso alla memoria
Memoria
Architettura degli elaboratori - 45 -
Banco di memoria in un chip:
Sono disponibili componenti integrati di memoria di svariate capacità Per esempio: 64 K 8, 1 M 8, 1 M 1, 256 M 1, …
Tuttavia, per ottenere memorie di capacità elevata, occorre aggregare più componenti di memoria, realizzando un banco di memoria
Esempio
Si desidera ottenere un banco di memoria da 2 M 16 bit Indirizzo da 21 bit
Dati da 16 bit
Si dispone di 4 chip di memoria da 1 M 8 ciascuno
Indirizzo da 20 bit Dati da 8 bit
Il numero di chip è sufficiente:
4 (1 M 8) = 32 Mbit e 2 M 16 = 32 Mbit Implementazione (traccia):
matrice 2 2 (2 righe di 2 chip di memoria ciascuna)
Memoria
Architettura degli elaboratori - 47 -
Morale: la Memoria Centrale di un computer
Morale: la memoria centrale di un computer è molto grande ma ha un bus dati unificato, di lettura e scrittura
(quindi in ogni dato momento: o ci si legge, o ci si scrive) è esterna alla CPU, in un chip separato (lentezza) è di tipo DRAM (consumo, lentezza)
totale: tanti cicli di clock per eseguire una scrittura o lettura.
Il register file è molto piccolo ma ha tanti bus di lettura e scrittura
(per es: due letture e una scrittura per colpo)
è stampata nello stesso Chip della GPU, bella vicina alla ALU (fa parte del circuito integrato nella GPU)
è di tipo SRAM (velocissima)
Totale un ciclo di clock per fare più letture e scritture
Come possiamo avere il meglio dei due mondi? See next lecture.
Memoria
Architettura degli elaboratori - 48 -
Tecnologie di memoria
Esistono svariate tecnologie di memoria Differiscono per:
capacità della memoria
tempo di accesso a una parola (in lettura o in scrittura)
politica di accesso: lettura e scrittura, sola lettura, programmabilità sul campo
stabilità: volatile o persistente costo
Memoria
Architettura degli elaboratori - 49 -
RAM Statica (SRAM)
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)
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 dell’accumulo temporaneo di carica sul transistor Internamente contiene un circuito di rinfresco che rigenera le cariche sui transistor prima che queste svaniscano
Memoria
Architettura degli elaboratori - 51 -
RAM Dinamica (DRAM)
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
Memoria
Architettura degli elaboratori - 52 -
ROM
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
Memoria
Architettura degli elaboratori - 53 -
PROM, EPROM, EEPROM
Capacità e tempo simili alla ROM Sola lettura e persistenti
Sono programmabili sul campo, tramite un apposito programmatore:
PROM: programmabile una volta sola EPROM: cancellabile con raggi UV
EEPROM: cancellabile elettricamente (si può anche scrivere un solo byte per volta)
Usi: piccoli volumi di produzione, prototipi
Memoria FLASH
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
Memoria
Architettura degli elaboratori - 55 -
Tabella riassuntiva
Memoria
Architettura degli elaboratori - 56 -
Tipo Categoria Modalità di
cancellazione Scrittura
byte Volatile Usi
specifici
SRAM lett/scritt elettrica si si cache
DRAM lett/scritt elettrica si si mem. centrale
ROM sola lett nessuna no no grandi vol.
PROM sola lett nessuna no no piccoli vol.
EPROM sola lett luce UV no no prototipi
EEPROM sola lett elettrica si (lenta) no prototipi FLASH lett/scritt elettrica a blocchi no multimedia