# Memoria flash

In informatica ed elettronica una memoria flash (o flash memory) è un tipo di memoria a stato solido e non volatile, che per le sue prestazioni può anche essere usata come memoria a lettura-scrittura; quando viene utilizzata come ROM viene anche chiamata flash ROM.

## Storia

Entrambi i tipi NOR flash e NAND flash sono stati inventati da Fujio Masuoka presso i laboratori della Toshiba negli anni '80. Il primo modello commerciale di memoria flash, una NOR flash, fu prodotto dalla Intel nel 1988: si trattava di un chip Flash a 256 Kbit; sviluppata con tecnologie EPROM ed EEPROM, ed equipaggiata con un'interfaccia SRAM, la NOR Flash aveva velocità di scrittura e lettura che sarebbero considerate lentissime se paragonate agli standard attuali, e poteva gestire solo un piccolo quantitativo di cicli di scrittura rispetto agli standard attuali. Successivamente è stata introdotta la NAND flash, che si distingue dalla prima per un diverso metodo di iniezione della carica. È stata concepita per la memorizzazione di grandi quantità di dati in maniera sequenziale, a piccoli blocchi e con un costo contenuto. Il progetto nasce nel 1989 da una collaborazione tra Samsung e Toshiba.

## Descrizione

In una memoria flash le informazioni vengono registrate in un vettore di floating gate MOSFET, un tipo di transistor ad effetto di campo in grado di mantenere carica elettrica per un tempo lungo. Ogni transistor costituisce una "cella di memoria" che conserva il valore di un bit. Le nuove flash utilizzano delle celle multilivello che permettono di registrare il valore di più bit attraverso un solo transistor.
Diversamente dalle tecnologie precedenti, la tecnologia Flash ha reso possibile il salvataggio o la cancellazione di dati in un unico passo, introducendo quindi un incredibile guadagno in velocità, e grazie alla non-volatilità è usata frequentemente nelle fotocamere digitali, nei lettori di musica portatili, nei cellulari, nelle chiavi USB (chiavette), nei palmari, nei moderni computer portatili e in molti altri dispositivi che richiedono un'elevata portabilità e una buona capacità di memoria per il salvataggio dei dati.
Le memorie flash sono di due tipi principali: NOR flash e NAND flash, che differiscono per l'architettura ed il procedimento di programmazione. Vi è anche un tipo ibrido, AND flash, che sfrutta le caratteristiche di entrambe, NOR e NAND.

### Il transistor floating gate

Se consideriamo le memorie NOR, le prime ad essere state prodotte, ogni cella è simile ad un MOSFET ma con due gate anziché uno soltanto. Uno è il solito CG (Control Gate) mentre l'altro viene chiamato Floating Gate (FG), che risulta essere completamente isolato da uno strato di ossido. Il floating gate si trova tra il CG e il substrato. Siccome il FG è isolato, ogni elettrone che vi arriva, superando la barriera di potenziale data dall'ossido, viene intrappolato modificando la tensione di soglia V$_t$ della cella. Durante un'operazione di lettura, applicando una tensione sul CG, la corrente fluisce più o meno a seconda della V$_t$ della cella che è controllata dal numero di elettroni presenti sul FG. Questa presenza o assenza di corrente viene tradotta in 0 o 1, riproducendo il valore del bit memorizzato. Per espandere la capacità delle memorie sono state sviluppate le celle a multilivello, dove non si controlla soltanto l'assenza o presenza di corrente: in questo modo si possono memorizzare più bit.

### Programmazione e cancellazione

Le NOR flash vengono programmate attraverso un processo detto hot-electron injection: viene applicata una tensione, superiore ai 5 V, sul CG, la quale avvia un flusso di elettroni che, percorrendo il canale creatosi dall'accensione del transistor, passano dal source al drain. Gli elettroni con energia più elevata attraversano lo strato di ossido che separa il canale dal FG, venendo intrappolati all'interno di quest'ultimo. Le NAND flash, invece, attuano l'iniezione di cariche nel FG mediante l'effetto tunnel.
La cancellazione, per entrambi i tipi di memoria, sfrutta l'effetto tunnel: viene applicata una differenza di tensione tra CG e source, la quale fa sì che gli elettroni vengano estratti dal FG attraverso un processo chiamato fowler-Nordheim tunneling, opposto rispetto al hot-electron injection usato in fase di programmazione. Le memorie NOR moderne raggruppano le celle in segmenti chiamati blocchi o settori in maniera che le operazioni di cancellazione avvengano contemporaneamente su tutte le celle appartenenti allo stesso segmento: nel momento in cui un byte viene programmato, non può essere cancellato se non dopo la cancellazione dell'intero blocco. Sia la lettura che la scrittura delle memorie FLASH richiedono molto più tempo rispetto ad una RAM attuale, e comunque il numero di scritture che una memoria FLASH può supportare non è illimitato, seppur molto alto (generalmente superiore a 10'000 cicli di scrittura).

## Architetture di memoria

Lo sviluppo di differenti meccanismi di iniezione di carica, e dunque di diversi metodi di programmazione e cancellazione, ha portato alla distinzione di tre diversi tipi di architettura di memoria flash, relativi ai tre tipi di dispositivo: NOR, NAND ed AND.

### NOR Flash

Negli array di memorie NOR ogni cella ha un terminale connesso direttamente alla massa, e l'altro alla bit line. Quando una word line è posta a valore logico alto il corrispondente transistor si accende o rimane spento a seconda della carica immagazzinata; la conseguenza è che la tensione della bit line viene rispettivamente abbassata o mantenuta alta.
Le NOR Flash prendono il loro nome dal comportamento logico "parziale" di una semplice porta NOR. Infatti, si può immaginare che per una singola coppia WL/Transistor (si ponga la WL in logica zero-attiva), valga che (le righe in rosso non sono comprese):
| INPUT | INPUT | OUTPUT |
| WordLine | Transistor | BitLine |
| 0 | 0 | 1 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 0 |
Intel fu la prima società a produrre memorie Flash e a introdurle nel mercato come componenti singoli. Questo tipo di memoria è impiegata principalmente in quei campi che richiedono il salvataggio permanente di dati raramente soggetti a modifiche; per esempio, i sistemi operativi delle fotocamere digitali o dei telefoni cellulari.
Le memorie NOR minimizzano il tempo di accesso per letture random e vengono utilizzate nel caso in cui si debba eseguire del codice direttamente dalla memoria. Sono nate per sostituire le EEPROM e vengono impiegate ad esempio per contenere il firmware di un microcontrollore che viene eseguito direttamente e non viene aggiornato frequentemente. Sono state usate nelle prime Compact Flash soprattutto per conservare il firmware delle fotocamere digitali e dei PDA. Le memorie NOR hanno subito un'evoluzione con l'introduzione delle DINOR (Divided Bit-Line NOR) che permettono la cancellazione di più settori contemporaneamente, migliori prestazioni e consumo energetico attraverso dei meccanismi di tunnel injection e tunnel release per le operazioni di lettura e scrittura.

### NAND Flash

Negli array di memorie NAND i transistor sono connessi in serie, e se tutte le word line sono a valore logico alto la tensione della bit line si abbassa. In lettura, tutte le word line meno una sono sopra la tensione di soglia di un bit programmato, mentre una sola cella è sopra la tensione di soglia di un bit cancellato: la serie di transistor conduce, abbassando la tensione della bit line, se la cella selezionata non è programmata.
Questo tipo di memoria si è diffuso velocemente tant'è che buona parte degli attuali dispositivi flash SM-SmartMedia, SD-Secure Digital, MS-MemoryStick, si basano su di esso. Le memorie NAND sono ottimizzate per l'aggiornamento rapido dei dati. Si consideri che il settore di cancellazione per le NAND è di 8 Kb contro i 64 Kb delle NOR. Questo significa che in una memoria NOR, anche se dobbiamo aggiornare un solo byte, siamo costretti a cancellare un intero blocco di 64 Kb e riscriverlo per intero con evidenti problemi di prestazioni. Inoltre a parità di capacità risulta meno costoso produrre una NAND rispetto alla NOR.
In confronto a NOR, la tecnologia NAND aumenta di dieci volte il numero dei cicli di scrittura aumentando di conseguenza la velocità dei processi e le celle di memoria delle flash NAND sono grandi la metà delle celle delle memorie NOR: questo rappresenta un grande vantaggio in termini economici, dal momento che le ridotte dimensioni delle celle permettono l'utilizzo di maggiori capacità di immagazzinamento nello stesso spazio di una NOR, e quindi minor costo per l'acquirente e un margine superiore per il costruttore. Inoltre, secondo il produttore di Flash M-System, NAND cancella i dati in meno di quattro millisecondi, mentre NOR necessita di almeno cinque millisecondi per la stessa operazione. Grazie a queste migliori prestazioni, NAND viene solitamente utilizzata nelle schede di memoria CompactFlash, SmartMedia, SD, MMC, xD, PC card, chiavette USB e come principale memoria di Portatili moderni (maggio 2006 da Samsung, Samsung Q1 e Samsung Q30).
Le NAND possono essere create con tecnologia Fe (Ferroelectric) o FG (floating-gate)

### AND Flash

Hitachi ha introdotto un altro tipo di memoria, chiamato AND flash, che sembra sintetizzare i migliori aspetti delle NAND e delle NOR con alte velocità di cancellazione, basso consumo, blocchi di lettura e scrittura ridotti.

## Ambiti di impiego delle memorie flash
### Scheda di memoria

Attualmente esistono vari standard di scheda di memoria:
* CompactFlash
* SmartMedia
* MultiMediaCard
* Memory Stick
* Secure Digital
* MicroSD
* xD-Picture Card
* Chiave USB
* Disk on module
Tutti questi diversi dispositivi hanno come unico scopo quello di conservare, anche in assenza di alimentazione, delle informazioni in formato digitale. Ognuna di esse ha delle caratteristiche ben specifiche in termini di dimensioni e funzionalità. I produttori hanno tentato di realizzare dei dispositivi che siano di dimensioni ridotte, facili da utilizzare, e sufficientemente robusti.

### Unità a stato solido

Le unità a stato solido, inizialmente dedicate ad applicazioni particolarmente critiche di tipo militare e industriale, sono un prodotto ormai da tempo presente sul mercato. Oggi questo tipo di memoria si propone invece come sostituto per disco rigido di computer fissi e portatili o altri dispositivi portatili. Le prestazioni rispetto ad un disco rigido tradizionale sono superiori: maggiore velocità nella lettura e scrittura dei dati, maggiore affidabilità, altissima resistenza agli urti meccanici, bassissimi consumi. Per contro il costo è molto più alto, anche se le previsioni di mercato ne annunciano una forte diffusione man mano che la tecnologia flash sarà più matura e i costi di produzione si abbasseranno.
Le unità a stato solido non consentirebbero, come i tradizionali supporti magnetici, un numero illimitato di scritture; tuttavia all'interno dei dispositivi di archiviazione sono inseriti, a livello hardware, degli speciali algoritmi che evitano la località dell'accesso alle celle di memoria prolungando notevolmente la vita del dispositivo.