Memorie ROM e RAM - SRAM, DRAM e organizzazione dei chip
In questa pagina 5
Una memoria è un insieme di celle che immagazzinano bit, con la circuiteria per trasferire le informazioni da e verso le celle. In un calcolatore contiene istruzioni e dati (di ingresso, di uscita e intermedi). Il trasferimento di nuovi dati nella memoria si chiama scrittura, quello dei dati memorizzati verso l'uscita lettura. Le informazioni sono organizzate in gruppi di bit detti word (di solito multipli di 8: ad esempio parole da 16 bit). Una memoria può essere stand-alone (un chip a sé) o embedded (integrata in un chip). Per la gerarchia e la memoria principale dal punto di vista dell'architettura: Memoria principale a semiconduttoreCella di memoria e operazioni; RAM dinamica (condensatore, refresh) e statica (flip-flop), confronto; ROM, PROM, EPROM, EEPROM e flash; organizzazione dei chip e dei moduli con calcolo di linee di indirizzo e numero di chip; DRAM sincrona e DDR; errori e codici di correzione.Memoria principale a semiconduttore →, Gerarchia di memoria e principio di localitàCaratteristiche delle memorie (posizione, capacità, unità di trasferimento, metodo di accesso, prestazioni, volatilità); compromesso costo-capacità-velocità e gerarchia a livelli; località temporale e spaziale con esempi; hit, miss e tempo medio di accesso con calcolo svolto.Gerarchia di memoria e principio di località →.
Classificazione
- Per possibilità di leggere e scrivere: memorie a sola lettura (ROM: Read Only Memory; ci sono ROM programmabili: PROM, EPROM, EEPROM, Flash, Logica programmabile - ROM, PLA, PAL e FPGAI dispositivi logici programmabili (PLD) hanno strutture logiche configurabili dal costruttore o dall'utente (configurazione $\ne$ programmazione software): ROM ($2^k$ parole da $n$ bit: decoder + OR programmabili), PLA (AND e OR programmabili, termini prodotto condivisi tra le uscite), PAL (AND programmabili, OR fisse, niente condivisione), FPGA (blocchi logici con LUT e flip-flop, interconnessioni e I/O programmabili, memoria di configurazione volatile o no). La programmazione può essere irreversibile (fuse/anti-fuse, mask) o riconfigurabile (SRAM, gate flottante).Logica programmabile - ROM, PLA, PAL e FPGA →) e memorie a lettura e scrittura (read/write).
- Per tempo di accesso:
- RAM (Random Access Memory): si accede a tutti i bit con lo stesso sforzo, qualunque sia l'ordine degli accessi (SRAM, DRAM);
- SAM (Serial Access Memory): per raggiungere un bit bisogna scorrere sequenze di dati, quindi il tempo dipende dalla posizione (nastro magnetico, CD); consente di accedere a locazioni consecutive più velocemente che a indirizzi arbitrari;
- ad accesso ibrido: si accede a intere porzioni (blocchi, settori, pagine), come nella Flash.
- Per volatilità: volatili (SRAM, DRAM: perdono i dati senza alimentazione) e non volatili (Flash, ROM: li mantengono).
Caratteristiche
- Capacità (density): numero totale di byte o bit;
- velocità: random access time (tempo per accedere a un singolo bit, in ns) per l'accesso casuale; throughput (velocità di accesso sequenziale, in Mbit/s) per l'accesso seriale;
- consumo di potenza;
- retention: tempo di permanenza del dato; endurance: numero di cicli di cancellazione/programmazione sostenibili.
ROM (richiamo)
Una ROM con bit di indirizzo e uscite contiene parole da bit; la lettura applica un indirizzo a un decoder le cui uscite 1-hot entrano in OR a connessioni programmabili. Essendo una tabella di verità, una ROM è un circuito combinatorio (nessuno stato).
RAM
L'interfaccia di una RAM:
- ingresso dati ( bit): informazione da scrivere;
- uscita dati ( bit): informazione letta;
- indirizzo ( bit): identifica una word;
- controlli read e write: tipo di operazione.
La capacità è il numero di word per il numero di bit per word: bit. Gli indirizzi vanno da a . Il numero di bit di indirizzo è indipendente da .
Esempio. RAM con linee dati da bit e indirizzo da bit: word da bit, capacità bit bit KB. Alla locazione di indirizzo può esserci il dato 10101011 10001001. Quando una word viene letta o scritta la memoria opera in parallelo su tutti i bit della parola come su un'unità (è la quantità minima indirizzabile).
Operazioni.
- Scrittura: applicare l'indirizzo della parola, applicare i dati ai bit di data input, attivare il segnale write.
- Lettura: applicare l'indirizzo, attivare read.
- Un segnale Chip Select (CS) seleziona il chip di memoria abilitandolo a read e write. I segnali sono forniti da una unità esterna (di solito la CPU).
Temporizzazione (esempio). Clock della CPU con periodo ns. Un ciclo di scrittura di ns richiede cicli di clock: al primo fronte si fornisce l'indirizzo e si attiva il memory enable; al secondo si attiva write e si fornisce il dato (se si attivasse write prima che l'indirizzo sia stabile si scriverebbero per errore altre locazioni); indirizzo e dati devono restare stabili oltre il fronte di write. Un ciclo di lettura di ns richiede ancora cicli: al primo fronte si fornisce l'indirizzo e si attivano enable e read; dopo il tempo di accesso la memoria presenta il dato sulle linee di uscita; al fronte successivo la CPU lo trasferisce in un proprio registro, e indirizzo e controlli possono cambiare.
SRAM e DRAM
- SRAM (Static RAM): i bit sono in elementi bistabili (latch): l'informazione resta valida finché c'è alimentazione, senza interventi esterni.
- DRAM (Dynamic RAM): l'informazione è la carica di un condensatore, acceduto tramite un MOSFET a canale n; il condensatore si scarica col tempo, per cui servono refresh periodici (riscrittura della cella).
Le SRAM sono più semplici da usare (niente refresh) e più veloci; le DRAM hanno consumi minori, occupano meno area e quindi costano meno (più bit per unità di area). Uso tipico: SRAM per la cache (velocissima, la densità conta poco), DRAM per la memoria principale (densità e basso costo per bit) (Memoria cacheBlocchi, linee ed etichette; scomposizione dell'indirizzo; associazione diretta, completamente associativa e associativa a insiemi con calcolo dei campi; politiche di rimpiazzo (LRU, FIFO, casuale); politiche di scrittura (write-through, write-back con bit sporco, write-allocate); dimensione del blocco; cache multilivello e separate; come ridurre i miss; quesiti sui campi dell'indirizzo.Memoria cache →).
Cella SRAM e bit slice
La cella si modella con un latch SR (Elementi di memoria - latch SR, latch D e flip-flop DUn circuito sequenziale ha uscite che dipendono da ingressi e stato (memoria); è un circuito combinatorio con elementi di memoria in retroazione; stato presente = uscite dei FF, stato futuro = ingressi dei FF. Sincrono (clock) o asincrono. Latch SR (NOR): S=1,R=0 set; S=0,R=1 reset; 00 memoria; 11 proibito. Latch D: C=1 trasparente (Q=D), C=0 memoria, sensibile al livello. Flip-flop D edge-triggered = due latch D in cascata (master-slave) con clock opposti: cambia solo sul fronte attivo e non è trasparente. Si assume D flip-flop positive-edge-triggered.Elementi di memoria - latch SR, latch D e flip-flop D →) il cui stato è il bit memorizzato; gli ingressi Set e Reset sono abilitati dal segnale Select: con il contenuto non cambia; con è determinato dal segnale di ingresso , e le uscite sono abilitate dallo stesso Select.
Collegando più celle si ottiene un bit slice, con la logica di lettura e scrittura condivisa tra le celle: se word select della cella vale 0, la cella mantiene il valore; se vale 1 e bit select , con si scrive la cella con il dato in ingresso, con si legge il bit sul terminale di uscita. Solo un word select alla volta può valere 1.
Chip SRAM
Un decoder 4-to-16 produce i segnali word select dai bit di indirizzo (uno solo a 1) (Decoder, encoder e priority encoderUn decoder $n$-to-$m$ ($m\le2^n$) converte un ingresso binario a $n$ bit in un'uscita 1-hot (un solo 1, nella posizione indicata): le sue uscite sono i mintermini degli ingressi, realizzati con $m$ AND; per decoder grandi si usa l'approccio gerarchico (costo in ingressi: 3-to-8 = 27, 6-to-64 = 182) e un enable. Ogni funzione = decoder + OR dei suoi mintermini. L'encoder fa l'operazione inversa (1-hot $\to$ binario) ma sbaglia con più ingressi a 1 o tutti a 0: il priority encoder risolve con una priorità e un'uscita V (valid).Decoder, encoder e priority encoder →). Un buffer three-state in uscita, comandato da Chip Select, collega l'uscita alla linea dati oppure la lascia scollegata, in alta impedenza (Hi-Z).
Organizzazione a matrice: coincident selection
Le stesse celle si possono disporre in una matrice : invece di un decoder 4-to-16 si usano due decoder 2-to-4, uno di riga (ingressi ) e uno di colonna (); la cella selezionata è all'intersezione della riga e della colonna (coincident selection). Così si ottimizza la forma del chip e quindi i tempi di accesso (la logica di lettura/scrittura è condivisa da stringhe con meno celle) e si usano decoder più piccoli (meno AND o AND con meno ingressi). Per questo una RAM si indirizza con 2 decoder 2-to-4 (e non con uno 4-to-16 o con encoder).
Chip con array : le uscite del decoder di colonna sono collegate al bit select di due bit slice, per cui servono un bit di indirizzo in meno e si leggono/scrivono 2 bit insieme; una memoria ha di solito 8 o 16 uscite dati.
Array di chip
Se la memoria richiesta è più grande di un chip si costruisce un array.
- Più parole: per ottenere ( bit di indirizzo) da quattro chip ( bit di indirizzo) si applicano 2 bit di indirizzo aggiuntivi a un decoder 2-to-4 che abilita (Chip Select) uno dei 4 chip. In lettura sul bus da 8 bit ci sono i dati del chip selezionato, mentre le uscite dei chip non selezionati sono in alta impedenza; in scrittura i dati vanno al chip con CS attivo.
- Più bit per parola: per si collegano due chip con gli stessi indirizzi: il numero di bit di indirizzo (16) resta quello del singolo chip e il numero di bit in uscita raddoppia.
Conti da sapere. bit KB; word ; numero di chip ; bit di indirizzo ; bit del decoder dei chip .
Errori comuni
- Legare il numero di bit di indirizzo ai bit della word: dipende solo dal numero di parole.
- Dimenticare il refresh della DRAM o dire che la SRAM lo richiede.
- Credere che una ROM sia sequenziale: è combinatoria.
- Pensare che le uscite dei chip non selezionati valgano 0: sono in alta impedenza.
- Confondere RAM (accesso casuale) con memoria volatile: la Flash non è volatile ma non è una RAM ad accesso casuale pura.
Versione ripasso
- Classificazioni: sola lettura / lettura-scrittura; RAM (accesso casuale), SAM (seriale: consecutive più veloci), ibrido (Flash); volatili (SRAM, DRAM) / non volatili. Parametri: capacità, tempo di accesso, throughput, potenza, retention, endurance.
- ROM: decoder + OR programmabili; combinatoria.
- RAM : bit di indirizzo (indipendenti da ), dati, read/write, Chip Select. : bit di indirizzo. Scrittura: indirizzo stabile, poi write; lettura: indirizzo + read, dato dopo il tempo di accesso. Con clock ns: scrittura ns cicli, lettura ns cicli.
- SRAM: latch, veloce, niente refresh (cache). DRAM: condensatore, refresh, più densa ed economica (memoria principale) (Memoria cacheBlocchi, linee ed etichette; scomposizione dell'indirizzo; associazione diretta, completamente associativa e associativa a insiemi con calcolo dei campi; politiche di rimpiazzo (LRU, FIFO, casuale); politiche di scrittura (write-through, write-back con bit sporco, write-allocate); dimensione del blocco; cache multilivello e separate; come ridurre i miss; quesiti sui campi dell'indirizzo.Memoria cache →).
- Organizzazione: bit slice; chip con decoder 4-to-16 e buffer tri-state; matrice con due decoder 2-to-4 (coincident selection); .
- Array: con decoder 2-to-4 su 2 bit di indirizzo in più (uscite non selezionate in Hi-Z); .
- Errori: legato a ; refresh; ROM sequenziale (Un semplice microprocessore - datapath, ALU e register fileUn calcolatore semplificato ma completo ha datapath, unità di controllo e memoria. Il datapath contiene un register file ($2^m$ registri da $n$ bit, due porte di lettura A e B e una di scrittura), un MUX B (registro o costante), una unità funzionale = ALU + shifter e un MUX D (risultato o dato dalla memoria); segnala V, C, N, Z. La ALU unisce un circuito aritmetico (sommatore con logica di ingresso per $B$: $0$, $B$, $\overline B$, tutti 1, più $C_{in}$) e uno logico (AND, OR, XOR, NOT) tramite un MUX. Le 15 microoperazioni si scelgono con un codice FS a 4 bit; la control word del datapath è di 16 bit (DA, AA, BA, MB, FS, MD, RW).Un semplice microprocessore - datapath, ALU e register file →).