Memoria NAND flash: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
→Architettura di una memoria NAND flash: Corretto errore di battitura Etichette: Modifica da mobile Modifica da web per mobile |
Funzionalità collegamenti suggeriti: 3 collegamenti inseriti. Etichette: Modifica visuale Modifica da mobile Modifica da web per mobile Attività per i nuovi utenti Suggerito: aggiungi collegamenti |
||
Riga 44:
=== 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 [[Effetto tunnel|''tunneling'']] Fowler-Nordheim<ref>{{Cita web|url=https://www.3dincites.com/2018/02/invention-tunneling-based-flash-memory/|titolo=The Invention of Tunneling-Based Flash Memory|autore=Andrew Walker|sito=3D InCites|data=2018-02-22|lingua=en-US|accesso=2023-07-05}}</ref> 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 (elettronica)|wafer]] sul quale è stata processata la memoria) e alzando il potenziale alla ''control-gate'' della cella in programmazione a <math>V_{pgm}>0V</math>. Il contatto di ''source'' viene tenuto alla tensione di alimentazione logica della memoria <math>V_{cc}</math>, con il selettore adiacente spento. La ''bitline'' viene tenuta a massa mentre il resto della struttura viene polarizzato a <math>V_{pass}</math> 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 <math>V_{cc}</math>, 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''.<ref name=":5">{{Cita pubblicazione|nome=Jong Kyung|cognome=Park|nome2=Sarah Eunkyung|cognome2=Kim|data=2022-01|titolo=A Review of Cell Operation Algorithm for 3D NAND Flash Memory|rivista=Applied Sciences|volume=12|numero=21|pp=10697|lingua=en|accesso=2023-07-06|doi=10.3390/app122110697|url=https://www.mdpi.com/2076-3417/12/21/10697}}</ref>
L'operazione di programmazione non viene solitamente fatta imponendo una tensione costante <math>V_{pgm}</math> alla cella selezionata, bensì sfruttando il cosiddetto algoritmo ISPP (''Incremental Step Pulse Programming''). Questo consiste nell'applicazione ripetuta di impulsi di ampiezza crescente alla cella selezionata in cui ognuno differisce dal precedente per un incremento <math>\Delta V_{pgm}</math>, detto passo di programmazione. Dopo ogni impulso un'operazione del tutto simile alla lettura, detta ''verify'', viene fatta sulle celle programmate: se il livello di soglia programmato supera un valore prestabilito, detto di ''program-verify,'' l'operazione per la data cella viene inibita. Questo permette di uniformare le soglie di tutti i transistori della pagina superando il limite di risposta dato dalla variabilità tra celle, imposto dal processo produttivo. Le distribuzioni di soglia programmata che idealmente si ottengono dall'applicazione dell'algoritmo di ISPP sono uniformi e larghe <math>\Delta V_{pgm}</math>.<ref>{{Cita pubblicazione|nome=Davide|cognome=Bertozzi|nome2=Stefano Di|cognome2=Carlo|nome3=Salvatore|cognome3=Galfano|data=2015-01-21|titolo=Performance and Reliability Analysis of Cross-Layer Optimizations of NAND Flash Controllers|rivista=ACM Transactions on Embedded Computing Systems|volume=14|numero=1|pp=1–24|lingua=en|accesso=2023-07-05|doi=10.1145/2629562|url=https://dl.acm.org/doi/10.1145/2629562}}</ref>
Riga 103:
=== Rumore di programmazione ===
[[File:NAND injection.png|miniatura|upright=1.5|Schema del processo di iniezione di elettroni all'interno della ''floating-gate.'' In a) si mostra l'equivalente circuitale della cella come serie di due capacità mentre in b) è mostrato il profilo della banda di conduzione.]]
Il rumore di programmazione, indicato spesso come ''program noise'' (PN), è il fenomeno legato alle fluttuazioni intrinseche della risposta di una singola cella all'operazione di programmazione. Ciò che si osserva sperimentalmente è che, ripetendo più volte la stessa operazione di programmazione sulla stessa cella, la risposta del transistore è affetta da fluttuazioni stocastiche. In ultima analisi tali fluttuazioni originano dal fatto che il processo di iniezione di carica nella ''floating-gate'' è un [[processo stocastico]], e quindi affetto da variabilità. Sperimentalmente è stato possibile verificare che le fluttuazioni della risposta di cella sono univocamente legate alle fluttuazioni nel numero di elettroni introdotto nella floating-gate, riuscendo persino a risolvere l'iniezione di un singolo elettrone.<ref>{{Cita pubblicazione|nome=Yuri|cognome=Tkachev|nome2=Alexander|cognome2=Kotov|data=2006-09|titolo=Detection of Single-Electron Transfer Events and Capacitance Measurements in Submicron Floating-Gate Memory Cells|rivista=2006 European Solid-State Device Research Conference|pp=411–414|accesso=2023-07-07|doi=10.1109/ESSDER.2006.307725|url=https://ieeexplore.ieee.org/document/4099943}}</ref>
I processi stocastici legati ai fenomeni di iniezione sono ampiamente studiati, in virtù di una fenomenologia abbastanza comune in vari ambiti della fisica (si pensi ad esempio alla rilevazione di fotoni attraverso foto-rivelatori<ref>{{Cita web|url=https://physicsopenlab.org/2019/01/07/photon-counting-statistics/|titolo=Photon Counting & Statistics|sito=PhysicsOpenLab|lingua=en-US|accesso=2023-07-05}}</ref> o ai processi di iniezione di carica legati al [[rumore shot]]<ref>{{Cita web|url=https://physicsopenlab.org/2016/10/10/shot-noise-and-electron-charge/|titolo=Shot Noise and Electron Charge|sito=PhysicsOpenLab|lingua=en-US|accesso=2023-07-05}}</ref>). Ciò che si osserva è che se le particelle possono essere iniettate solo per processi discreti (ovvero non è possibile iniettare una frazione di particella) e se vale l'ipotesi che ogni evento di iniezione è indipendente dai precedenti (non vi è cioè correlazione tra gli eventi), il processo stocastico segue la statistica di [[Distribuzione di Poisson|Poisson]]. Per le proprietà della appena citata statistica, la varianza associata alle fluttuazioni sarà proporzionale al valor medio del processo. Questo pone dei vincoli alla precisione con cui la soglia delle celle di memoria può essere programmata: adottando nell'algoritmo di ISPP un <math>\Delta V_{pgm}</math> alto il numero di elettroni iniettato per passo di programmazione sarà alto e caratterizzato da forti fluttuazioni. Al contrario, riducendo il passo di programmazione anche le fluttuazioni statistiche tenderanno a diminuire. Questo fatto va considerato nel momento in cui vengono decise le caratteristiche dell'algoritmo di programmazione da adottare sul dispositivo di memoria: un passo di programmazione ampio garantisce velocità di programmazione alta ma distribuzioni di soglia intrinsecamente larghe e ancor più allargate dalle fluttuazioni dovute al ''program noise'' mentre un passo di programmazione piccolo permette una programmazione più precisa al costo di un rallentamento della stessa operazione.<ref name=":5" />
|