Una memoria NAND flash è un tipo di memoria non volatile a stato solido. In quanto memoria non volatile, un dispositivo NAND flash è in grado di mantenere in memoria l'informazione anche se gli viene tolta l'alimentazione. Insieme all'architettura NOR, la NAND si costituisce una delle scelte di riferimento per lo sviluppo di memorie flash. Ad oggi, l'archetipo NAND è il più presente sul mercato, trovando largo impiego nel settore dei personal computer, smartphone, tablet, SSD, SD cards e chiavette USB.

La memoria NAND flash è in grado di essere riscritta e le operazioni di scrittura e cancellazione possono essere effettuate grazie al solo ausilio di segnali elettrici. Si distingue in questo dalle memorie di sola lettura (ROM), che pur essendo non volatili non ammettono la riprogrammazione dell'informazione scritta. Grazie a questa sua caratteristica, la memoria NAND flash è principalmente impiegata per le attività di memorizzazione di larghi volumi di dati.

La memoria NAND flash è stata il primo dispositivo elettronico al mondo a superare il trend di scaling planare previsto dalla legge di Moore, introducendo il concetto di elettronica verticale (o elettronica 3D).

Storia

Al principio dell'invenzione delle memorie flash, ed in particolare delle NAND flash, vi è l'idea del transistore a floating-gate. Questo dispositivo, progettato all'interno dei Bell Labs nel 1967 da Dawon Kahng e Simon Min Sze, dimostrò da subito le sue potenzialità nell'ambito applicativo delle memorie elettroniche. Fu però all'inizio degli anni ottanta, nei laboratori di Toshiba (ora Kioxia), che Fujio Masuoka e Hisakazu Iizuka gettarono le basi per lo sviluppo di un dispositivo di memorizzazione non volatile capace di supportare le operazioni di programmazione e cancellazione controllate interamente con segnali elettrici. Nel 1984 la prima memoria NOR flash fu commercializzata, mentre si dovette aspettare fino al 1987 per vedere il lancio sul mercato del primo prodotto NAND flash. In quegli anni il tipico taglio di memoria non volatile spaziava da 4 a 16Mbit e la principale tecnologia di storage era quella a dischi magnetici.

Negli anni successivi le memorie NAND flash vissero uno sviluppo estremamente veloce: alla fine del millennio la capacità di memorizzazione di questi dispositivi a stato solido aveva raggiunto uno standard di 256Mbit, i dispositivi erano stati resi compatibili con la nuova logica a 3.3V (rispetto a quella a 5V inizialmente presente) e nuovi processi produttivi erano stati sviluppati per porre le basi della futura evoluzione tecnologica.

Nel frattempo il mercato globale delle memorie NAND flash si stava popolando di produttori, molti dei quali tutt'oggi presenti.

Tra questi si ricordano Micron Technology, Samsung, SK Hynix, Intel, Western Digital e la joint venture dell'italo-francese STMicroelectronics e Intel Numonyx (ora parte di Micron Technology).

Le memorie flash continuarono negli anni la loro evoluzione, riuscendo a strappare sempre più mercato alla più consolidata tecnologia HDD. Ad oggi, le memorie flash rappresentano una grossa fetta dei dispositivi di storage per uso consumer ed aziendale, avendo ridotto di molto il mercato degli HDD.

Nel 2007 viene proposto il concetto di memoria NAND verticale (3D NAND, VNAND) mentre il 2010 vede il primo dispositivo a scaling verticale approdare sul mercato. Nel 2020 Micron lancia sul mercato la prima memoria NAND flash a 176 piani e nel 2023 la stessa Micron è la prima ad annunciare un dispositivo a 232 piani.

Nel 2025 la joint venture SanDisk-Kioxia ha portato in volume la generazione BiCS8 a 218 layer, con produzione nella Fab2 di Kitakami per SSD enterprise destinati a carichi di lavoro AI, e ha dimostrato la prima architettura QLC con tecnologia CBA a oltre 1000 layer.

Descrizione e funzionamento Il seguente paragrafo ha lo scopo di introdurre alla fondamentale unità costitutiva della memoria NAND flash: il transistore a floating-gate. Una volta compreso il funzionamento alla base della singola unità di memorizzazione, verrà discusso di come queste possano essere connesse elettricamente per formare un dispositivo in grado di memorizzare larghi volumi di dati. Segue poi una breve discussione sulle operazioni basilari di lettura, programmazione e cancellazione.

Il transistore a floating-gate

Il dispositivo alla base di una matrice di memoria NAND flash, ed in generale di ogni memoria flash, è il transistore a floating-gate. Questo dispositivo è nei fatti molto simile ad un normale MOSFET, con la differenza che all'interno del dielettrico d'isolamento (tipicamente silice, SiO_2) tra il contatto di gate ed il canale in silicio viene cresciuta un'isola metallica, tipicamente costituita da un metallo o da uno strato di silicio policristallino degenere. Tale isola, priva di un collegamento elettrico diretto, si trova sempre in uno stato di alta impedenza e, per tale ragione, viene definita flottante (da cui il nome floating-gate transistor).

Questo dispositivo è naturalmente adatto per applicazioni di memorizzazione. Il funzionamento è del tutto identico a quello di un normale transistore MOS, con la peculiarità di poter modificare la tensione di soglia iniettando o rimuovendo carica dalla floating-gate. Tali operazioni, dette rispettivamente di programmazione e cancellazione, sono non-distruttive per il dispositivo e permettono quindi l'operazione del transistore come unità di memoria riprogrammabile. In tal senso, l'informazione logica viene rappresentata dal valore di : nel caso più semplice è possibile rappresentare un singolo bit associando al valore logico 1 lo stato fisico di "soglia bassa" ed al valore 0 lo stato fisico di "soglia alta". La soglia viene valutata in fase di lettura del bit polarizzando il transistore con una tensione alla gate accessibile, detta anche control-gate, più alta della soglia rappresentante il bit 1 e minore della rappresentante il bit 0. In questo modo i due stati possono essere distinti valutando la corrente che è in grado di scorrere da drain a source (se alta si leggerà 1, se bassa 0).

Architettura di una memoria NAND flash

L'architettura di un array di memoria NAND flash è facilmente partizionabile considerando i collegamenti elettrici delle singole unità di memorizzazione. Alla base dell'array vi è la singola unità di memoria, fisicamente descritta da un transistore a floating-gate. La connessione in serie dei canali dei transistori floating-gate definisce una stringa di memoria. La connessione in parallelo dei contatti di gate dei transistori definisce invece un piano di memoria, spesso chiamato wordline. L'insieme di un gruppo di stringhe connesse in parallelo alla stessa sourceline definisce un blocco di memoria. Si noti che, oltre alle singole unità di memorizzazione, l'array NAND flash necessità di ulteriori componenti. Nella fattispecie, ogni stringa di memoria si caratterizza per la presenza di due transistori di selezione all'inizio ed alla fine della stringa stessa, spesso definiti SSL (Selector Source Line) e SDL (Selector Drain Line). Questi, tipicamente realizzati con una geometria meno scalata rispetto alle singole celle di memoria, hanno il compito di connettere o sconnettere la stringa dalle linee di bitline e di sourceline, di modo da permettere selettività nelle operazioni svolte. Mentre i selettori di drain sono indirizzabili singolarmente, i selettori di source hanno le gate connesse in parallelo all'interno di tutto il blocco.

Una singola pagina di memoria è generalmente in grado di memorizzare dagli 8kB ai 16kB di informazione. Una stringa connette invece in serie un numero di celle di memoria variabile tra le 256 e le 1024. Nel complesso un blocco di memoria è in grado di mantenere da 2MB a 16MB di informazione memorizzata.

Un dispositivo commerciale è costituito da un gran numero di blocchi, molti dei quali contribuiscono a raggiungere il taglio di memoria nominale del dispositivo ed alcuni adibiti a fare da scorta in caso di malfunzionamento dei blocchi inizialmente assegnati alla funzione di storage.

Oltre alla componentistica legata in maniera specifica alla funzione di memorizzazione, un dispositivo NAND flash presenta al suo interno altri componenti ausiliari al funzionamento dello stesso. Tra questi vi sono un microcontrollore per la gestione delle operazioni, dei decoder di riga e colonna necessari all'indirizzamento delle operazioni, la circuiteria ausiliaria alla lettura e la circuiteria necessaria a produrre le alte tensioni necessarie alle operazioni di programmazione e cancellazione.

Lettura Una memoria NAND flash è in grado di parallelizzare l'operazione di lettura su un'intera pagina del blocco di memoria selezionato. Per semplicità, ci si limiterà nel seguito a descrivere l'operazione di lettura di una singola stringa di memoria.

Per poter leggere il bit memorizzato in una data cella è necessario testarne la tensione di soglia. Per fare ciò, tutta la stringa, ad eccezione della cella selezionata, viene polarizzata ad una tensione di pass più alta rispetto alla più alta programmata. In questo modo la stringa si comporta come una cascata di transistori operati in regime di pass-transistor ad esclusione della cella in lettura. La cella in lettura viene polarizzata con una tensione alla sua gate maggiore rispetto alla cancellata ma minore di quella programmata. A questo punto, tenendo il contatto di source a massa ed i selettori di source e drain accesi, viene valutata la capacità della stringa di condurre corrente idealmente attraverso un'opportuna tensione positiva imposta alla bitline. Se la corrente letta risulta sufficientemente alta, ovvero se la tensione di gate alla cella selezionata è sufficientemente alta da accenderla, il bit verrà letto come 1 (stato cancellato), altrimenti come 0. In realtà, per ragioni di semplicità e di costo d'integrazione, la stringa non viene letta direttamente forzando una tensione alla bitline e leggendo la risultante corrente, ma viene sfruttata la capacità parassita della metallizzazione di bitline per integrare la corrente e leggerla successivamente attraverso un latch.

Programmazione Come per l'operazione di lettura, anche l'operazione di programmazione è tipicamente parallelizzata su un'intera pagina di memoria. La programmazione delle memorie NAND flash sfrutta il processo di tunneling Fowler-Nordheim per iniettare elettroni all'interno della floating-gate della cella in programmazione. Per far si che il processo di tunneling sia efficace, è necessario sviluppare un campo elettrico sufficientemente intenso lungo lo stack di gate del transistore. Questo viene realizzato portando a massa il contatto di body dei transistori (direttamente connesso alla p-well del wafer sul quale è stata processata la memoria) e alzando il potenziale alla control-gate della cella in programmazione a . Il contatto di source viene tenuto alla tensione di alimentazione logica della memoria , con il selettore adiacente spento. La bitline viene tenuta a massa mentre il resto della struttura viene polarizzato a di modo da permettere che la corrente di programmazione veda una linea a bassa resistenza dalla bitline fino alla cella selezionata. Poiché l'operazione di programmazione avviene in parallelo, è necessario poter scegliere quali celle della wordline vengano effettivamente programmate e quali no. La selettività su singola cella è ottenuta attraverso l'inibizione stessa dell'operazione di programmazione per quelle celle che devono rimanere cancellate: per far ciò, la bitline associata a tali stringhe viene portata a , questo fa sì che la stringa risulti nel complesso in uno stato ad alta impedenza che accoppia capacitivamente il canale dei transistori con le rispettive control-gate, abbassando fortemente il campo sviluppato e impedendo il processo di tunneling.