Memorie - gerarchia, SRAM, DRAM, ROM e FLASH
In questa pagina 6
I processori per uso generico usano due sistemi di memoria: ad accesso immediato e di massa (disco). I µC e i DSP usano soltanto memoria ad accesso immediato a stato solido, realizzata in tecnologia CMOS, sia interna (on chipdentro lo stesso chip del processore, nello stesso chip del processore) sia esterna (off chip) collegata alla prima. La memoria può essere volatile (perde i dati senza alimentazione: di solito lettura/scrittura) o non volatile (di solito di sola lettura, anche se ri-programmabile). L'organizzazione dei bus e delle memorie è discussa in Organizzazione del processore - Von Neumann, Harvard, bus, ALU e registriOgni processore ha ALU, memoria e dispositivi di I/O. Nell'organizzazione Von Neumann dati e istruzioni stanno nella stessa memoria e viaggiano su un solo sistema di bus (semplice ed economica, usata nei µC più semplici); nell'organizzazione Harvard memorie e bus sono separati (più accessi per ciclo: tipica di DSP e µC veloci). I bus sono pilotati da porte tri-state; l'ALU lavora su registri (accumulatore o molti registri); il controllo è cablato o microprogrammato; la gerarchia di memoria va dai registri alla RAM interna e a quella esterna.Organizzazione del processore - Von Neumann, Harvard, bus, ALU e registri →.
Parametri di un sistema di memoria
- Dimensione: numero di celle (in bit o in byte), a volte con l'organizzazione (per esempio bit). Una memoria di locazioni a bit contiene byte: 2048 locazioni a 32 bit sono byte.
- Velocità: espressa come tempo di accessotempo in ns tra la richiesta del dato e il momento in cui è disponibile (ciclo di lettura), somma del tempo di decodifica e di quello di trasferimento, come latenza (tempo tra l'inizio di un ciclo di scrittura e l'arrivo del dato; di norma uguale al tempo di lettura) o come banda passantequantità di dati trasferiti al secondo (byte al secondo scambiati tra processore e memoria).
- Consumo di potenza (anche a riposo, "stand-by"), fondamentale per dimensionare l'alimentazione di una memoria esterna.
- Integrazione: dipende dal processo di fabbricazione; la densità (bit per unità di volume) è legata al livello di integrazione (dai 16 bit degli anni '60 alle centinaia di Gbit di oggi). La memoria ideale è veloce, piccola, a basso consumo, robusta (disturbi, temperatura) ed economica: queste qualità sono in larga parte incompatibili, quindi si sceglie un compromesso.
Gerarchia di memoria
Tutti i sistemi sono organizzati in modo gerarchico, perché l'informazione scambiata con il processore ha località:
- spaziale: dati vicini in memoria tendono a essere usati a breve distanza l'uno dall'altro;
- temporale: un dato usato viene presto riusato. Si combinano quindi piccole quantità di memoria molto veloce (costosa, a elevato consumo) con quantità via via maggiori di memoria più lenta: registri (la più pregiata), banchi di registri e cache, SRAM interna (molti kbyte, molto più estesa ma considerevolmente più lenta), memoria esterna. La memoria on chip può essere organizzata in banchi separati con bus indipendenti (organizzazione Harvard), in 3 banchi (uno per istruzioni P e due per dati X, Y: in un ciclo si leggono un'istruzione e due operandi), con memorie dual portcon due porte indipendenti, che permettono due accessi simultanei (due accessi simultanei con un solo banco, costose; esistono anche multiple port) o multi-access (banchi velocissimi che permettono più accessi in sequenza nello stesso ciclo). Queste soluzioni non si estendono alla memoria esterna, perché fuori dal chip escono solo due bus (dati e istruzioni).
RAM statica (SRAM)
"RAM" (Random Access Memory) indica ogni memoria in cui il tempo di accesso non dipende dalla posizione: anche le ROM sono RAM; è quindi errato usare RAM come sinonimo di memoria di lettura/scrittura. Nei µC e DSP la memoria volatileche perde il contenuto quando manca l'alimentazione è sempre SRAM: una schiera di latchelemento di memoria a un bit realizzato con due porte logiche retroazionate, ciascuno con 4 o 6 transistori. Vantaggi: tempi di accesso dell'ordine di 1 ns, gestione semplice (nessun refresh). Svantaggi: consumo non trascurabile (alcuni mW per kbyte), cella grande (circa ), bassa densità e costo più alto. La scrittura avviene portando a livello alto la linea di scrittura e attivando la linea dati.
RAM dinamica (DRAM)
Ogni bit è una carica elettrica immagazzinata sotto l'ossido di gate di una struttura MOS: la carica si disperde per ricombinazione (leakageperdita di carica per dispersione, che costringe a riscrivere periodicamente il dato) e va quindi rinfrescata con periodo dell'ordine del ms. Ha costo molto minore e densità almeno 4 volte superiore alla SRAM, consumo minore (circa mW per kbyte) ma tempi di accesso maggiori (decine di ns) e richiede una significativa circuiteria di controllo (indirizzi di riga e colonna, segnali RAS e CAS, refreshriscrittura periodica del dato per rimediare alla perdita di carica) che di solito è integrata nella memoria. Si usava per le espansioni esterne con controllori dedicati e wait-states dinamici. Oggi le espansioni sono quasi sempre FLASH (per esempio le SD card) gestite via SPI.
Memorie di sola lettura
Presenti, in piccola quantità o come unica memoria on chip, nei prodotti di grande serie in cui il programma definitivo è scritto in fabbrica.
- PROM/OTP (One Time Programmable): scrivibile una volta; ogni cella ha un microfusibile che si interrompe (da 1 a 0); la memoria è inizialmente piena di 1; molto veloce (~1 ns); dopo il caricamento il codice non si può modificare.
- EPROM: cancellabile con luce UV.
- EEPROM: scrivibile e cancellabile elettricamente.
- FLASH: scrivibile e cancellabile elettricamente, struttura diversa dalla EEPROMmemoria di sola lettura cancellabile e scrivibile elettricamente.
Memorie FLASH
La cella deriva da quella della EEPROM e usa un gate flottante: un conduttore ben isolato (quindi con correnti di dispersione bassissime) in cui si imprigiona carica. È come una memoria dinamica con un periodo di refresh di molti anni.
- Scrittura: con gate e drain polarizzati a tensione elevata (circa 10 V) gli elettroni, accelerati lungo il canale, urtano il reticolo e generano coppie elettrone-lacuna (iniezione di elettroni caldimeccanismo con cui elettroni molto accelerati entrano nel gate flottante: serve alla scrittura); la componente verticale del campo del gate ne trascina una parte nel gate flottanteelettrodo isolato in cui si intrappola la carica che memorizza il bit. La carica negativa innalza la tensione di soglia: in lettura il transistore resta spento e il circuito legge 0.
- Cancellazione: si polarizza il gate negativamente rispetto al source e gli elettroni escono per effetto tunnel (Fowler-Nordheim, l'ossido è sottile, meno di 10 nm). La cancellazione avviene per blocchi (alcuni kbyte, con source a tensione positiva), non per singole celle; richiede molti ms per un blocco da 256 kbyte; conviene non usare sempre lo stesso blocco (ogni cancellazione stressa la memoria).
- Durata: riscrivibile un numero finito ma grande di volte (). I tempi di lettura e scrittura variano con temperatura, età e tolleranze, quindi l'attesa si gestisce dinamicamente (polling di un registro di stato). Il controller è integrato nel µC. Esempi: NXP LPC1311 (SRAM 8 kB, FLASH 32 kB); NXP LPC2129 (SRAM 16 kB, FLASH 256 kB); dsPIC33FJ (SRAM fino a 16 kB, FLASH fino a 128 kB).
| Proprietà | SRAM | DRAM | FLASH |
|---|---|---|---|
| volatile | sì | sì | no |
| refresh | no | sì (ms) | no |
| transistori per bit | 4-6 | 1 (+ capacità) | 1 (gate flottante) |
| scrittura/cancellazione | diretta | diretta | cancellazione per blocchi |
| tempo di accesso | ~1 ns | decine di ns | variabile (scrittura lenta) |
Per ripassare per l'esame (domande vero/falso): una memoria OTPOne Time Programmable: scrivibile una sola volta non è un tipo di FLASH; la scrittura della FLASH usa l'iniezione di elettroni caldi, la cancellazione l'effetto tunnelpassaggio di elettroni attraverso un ossido sottilissimo: serve alla cancellazione (Fowler-Nordheim); la SRAM richiede più dispositivi MOS per bit della FLASH; le SRAM sono volatili; le DRAM richiedono refresh frequenti; una FLASH non si cancella all'infinito e si cancella solo per blocchi.
Errori comuni
- Dire che la ROM non è una RAM: ha accesso casuale come le altre.
- Invertire scrittura e cancellazione nella FLASH (scrittura = elettroni caldi; cancellazione = tunnel).
- Dire che la FLASH si può cancellare cella per cella o riscrivere all'infinito.
- Supporre che una memoria OTP si possa riprogrammare dopo il caricamento.
Versione ripasso
- Solo memoria a stato solido, interna o esterna; volatile (RAM) / non volatile (ROM, FLASH). Parametri: dimensione ( byte), tempo di accesso/latenza/banda, consumo, integrazione.
- Gerarchia per località spaziale e temporale: registri, cache, SRAM, esterna; più bus e dual port solo on chip (Organizzazione del processore - Von Neumann, Harvard, bus, ALU e registriOgni processore ha ALU, memoria e dispositivi di I/O. Nell'organizzazione Von Neumann dati e istruzioni stanno nella stessa memoria e viaggiano su un solo sistema di bus (semplice ed economica, usata nei µC più semplici); nell'organizzazione Harvard memorie e bus sono separati (più accessi per ciclo: tipica di DSP e µC veloci). I bus sono pilotati da porte tri-state; l'ALU lavora su registri (accumulatore o molti registri); il controllo è cablato o microprogrammato; la gerarchia di memoria va dai registri alla RAM interna e a quella esterna.Organizzazione del processore - Von Neumann, Harvard, bus, ALU e registri →).
- SRAM: latch a 4-6 MOS, ~1 ns, niente refresh, consumo mW/kB. DRAM: carica in un MOS, refresh (ms), densità ×4, 0,1 mW/kB, decine di ns.
- ROM: PROM/OTP (una volta, microfusibile), EPROM (UV), EEPROM, FLASH (gate flottante): scrittura per elettroni caldi, cancellazione per tunnel, a blocchi, cicli.
- Errori: ROM non è RAM; scrittura/cancellazione invertite; FLASH per singole celle; OTP riprogrammabile (Memorie esterne e cache - wait state e speed-upUna memoria con tempo di accesso $T_A$ è accessibile in $N$ cicli di clock se $T_A<N,T_{clk}$; altrimenti servono $N_w$ cicli di attesa (wait-state) con $T_A<(N+N_w)T_{clk}$. Un wait-state costa molto (+100% se $N=1$): spesso conviene abbassare il clock. La cache è una memoria piccola e veloce con le informazioni più richieste: se l'hit ratio è $h$, lo speed-up è $S=\dfrac{t_{acc}}{h,t_c+(1-h),t_{acc}}$ (massimo $t_{acc}/t_c$ per $h=1$, tipico $h\approx0{,}95$). Organizzazioni: a mappatura diretta (TAG, linea, word; la più semplice), associativaorganizzazione in cui ogni linea può stare in qualunque posizione della cache (qualunque linea ovunque, costosa), parzialmente associativa (più cache dirette in parallelo). Nei DSP la cache è spesso solo per le istruzioni.Memorie esterne e cache - wait state e speed-up →).