Salta al contenuto
Note per Studenti Memorie ROM e RAM - SRAM, DRAM e organizzazione dei chip

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

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 kk bit di indirizzo e nn uscite contiene 2k2^k parole da nn bit; la lettura applica un indirizzo a un decoder k→2kk\to2^k le cui uscite 1-hot entrano in nn OR a connessioni programmabili. Essendo una tabella di verità, una ROM è un circuito combinatorio (nessuno stato).

RAM

L'interfaccia di una RAM:

  • ingresso dati (nn bit): informazione da scrivere;
  • uscita dati (nn bit): informazione letta;
  • indirizzo (kk bit): identifica una word;
  • controlli read e write: tipo di operazione.

La capacità è il numero di word 2k2^k per il numero di bit per word: size=2k×n\text{size}=2^k\times n bit. Gli indirizzi vanno da 00 a 2k−12^k-1. Il numero di bit di indirizzo kk è indipendente da nn.

Esempio. RAM con linee dati da 1616 bit e indirizzo da 1010 bit: 10241024 word da 1616 bit, capacità 1K×161\mathrm K\times16 bit =214=2^{14} bit =2=2 KB. Alla locazione di indirizzo 11 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 2020 ns. Un ciclo di scrittura di 7575 ns richiede ⌈75/20⌉=4\lceil75/20\rceil=4 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 6565 ns richiede ancora ⌈65/20⌉=4\lceil65/20\rceil=4 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 Select=0Select=0 il contenuto non cambia; con Select=1Select=1 è determinato dal segnale di ingresso BB, 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 ii vale 0, la cella mantiene il valore; se vale 1 e bit select =1=1, con Read/Write‾=0Read/\overline{Write}=0 si scrive la cella con il dato in ingresso, con Read/Write‾=1Read/\overline{Write}=1 si legge il bit sul terminale di uscita. Solo un word select alla volta può valere 1.

Chip SRAM 16×116\times1

Un decoder 4-to-16 produce i segnali word select dai bit di indirizzo AiA_i (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 1616 celle si possono disporre in una matrice 4×44\times4: invece di un decoder 4-to-16 si usano due decoder 2-to-4, uno di riga (ingressi A3,A2A_3,A_2) e uno di colonna (A1,A0A_1,A_0); 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 4×44\times4 si indirizza con 2 decoder 2-to-4 (e non con uno 4-to-16 o con encoder).

Chip 8×28\times2 con array 4×44\times4: 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 256K×8256\mathrm K\times8 (1818 bit di indirizzo) da quattro chip 64K×864\mathrm K\times8 (1616 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 64K×1664\mathrm K\times16 si collegano due chip 64K×864\mathrm K\times8 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. 216×82^{16}\times8 bit =64=64 KB; 2182^{18} word =256K=256\mathrm K; numero di chip =capacitaˋ richiestacapacitaˋ del chip=\dfrac{\text{capacità richiesta}}{\text{capacità del chip}}; bit di indirizzo =log⁡2(#word)=\log_2(\#\text{word}); bit del decoder dei chip =log⁡2(#chip in verticale)=\log_2(\#\text{chip in verticale}).

Errori comuni

  • Legare il numero di bit di indirizzo ai bit della word: kk 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

Esercizi su questo argomento

Teoria collegata