Visualizzazione post con etichetta Fisica/Elettronica. Mostra tutti i post
Visualizzazione post con etichetta Fisica/Elettronica. Mostra tutti i post

martedì 25 agosto 2009

Wear leveling statico e dinamico

Nel precedente articolo Wear leveling NAND FLASH ho specificato che la tecnica del wear leveling dinamico, al contrario di quanto possa sembrare a prima vista, non può essere considerata in assoluto una tecnica equa.


Mentre per quando riguarda il wear leveling statico, questa volta vengono utilizzati tutti i blocchi per fare in modo che l’usura si distribuisca uniformemente su tutta la memoria, offrendo di fatto un netto aumento della vita del dispositivo rispetto a quanto previsto dalla tecnica del wear leveling dinamico.

Il principio di funzionamento è semplice: ogni blocco è dotato di un contatore che tiene traccia dei suoi erase count, quindi per ogni operazione di I/O viene scelto di volta in volta quello con il valore più basso.Come sappiamo il wear leveling dinamico non offre un trattamento equo tra i blocchi contenenti dati statici e quelli contenenti dati dinamici; con il wear leveling statico viene introdotta invece una raffinatezza tecnica che consente di rimettere in gioco anche i blocchi che sembrerebbero destinati a una situazione di guasto. Viene quindi fissata una soglia sull’erase count di utilizzo di ciascun blocco, soglia al di sotto della quale un blocco viene dichiarato come riutilizzabile anche se contiene dati statici che non necessiterebbero quindi di essere modificati. Il trattamento di tali dati prevede semplicemente lo spostamento in un’altra locazione con erase count più elevato.Questa tecnica è evidentemente più complessa rispetto al wear leveling dinamico ma bisogna considerare un fattore che in alcuni dispositivi può rivelarsi: il calo di performance dovuto allo spostamento di dati che altrimenti non sarebbero coinvolti nelle normali operazioni di I/O. Tale svantaggio può però essere ben visto nell’ottica di un consistente aumento della vita media del dispositivo. Lo sviluppo dei dispositivi NAND Flash e in continuo sviluppo.




giovedì 20 agosto 2009

Wear leveling NAND FLASH

Il wear leveling è una tecnica che aiuta a mantenere il corretto funzionamento delle celle di memoria NAND Flash ottimizzando il loro sfruttamento nel tempo. Per saperne qualcosa in piu, leggetevi DISPOSITIVI FAMOS (CELLE DI MEMORIA FLASH) . Il wear leveling limita i cicli di scrittura e cancellazione delle celle di memoria NAND Flash, ormai diffuse nei Solid State Disk. L’uso continuo in scrittura di un numero limitato di blocchi porta quindi ad un malfunzionamento generale della memoria, in quanto i cicli di scrittura sono limitati e si danneggiano prima degli altri. La gestione del wear leveling è a carico del controller NAND Flash in quanto esso gestisce tutte le operazioni di I/O tra il sistema host e le celle di memoria. Nella maggior parte dei casi il controller si avvale di una tabella di traduzione degli indirizzi per generare di volta in volta le più opportune corrispondenze tra gli indirizzi LBA (Logical Block Address) utilizzati dal sistema host e gli indirizzi PBA (Physical Block Address) utilizzati per mappare fisicamente le celle come mostrato nell’immagine. Esistono diversi approcci per implementare il wear leveling e normalmente più il metodo è complesso e raffinato, più lunga sarà la vita della memoria NAND Flash in cui è utilizzato. Prima di trattare in modo dettagliato i metodi di wear leveling è bene fare una breve premessa sui tipi di dati memorizzati in una memoria di massa. Essi possono essere suddivisi in due categorie:

* Dati statici: informazioni aggiornate raramente per le quali si può affermare che risiederanno in determinate locazioni di memoria per l’intero ciclo vita del dispositivo. A titolo d’esempio, si possono citare la maggior parte dei file del sistema operativo.

* Dati dinamici: file soggetti a continui cambiamenti, cancellazioni e riscritture. A tale categoria appartengono per esempio i file temporanei del sistema, cache di programmi frequentemente utilizzati, file personali di lavoro soggetti a frequenti modifiche.

Allo stesso modo andiamo quindi a identificare due principali implementazioni del wear leveling da parte del controller NAND Flash:

* Wear leveling dinamico: il controller scrive nei blocchi vuoti disponibili contraddistinti dal più basso tasso di cancellazione, ovvero in quei blocchi che sono stati cancellati meno volte rispetto a tutti gli altri;

* Wear leveling statico: il controller seleziona un blocco di destinazione con il più basso tasso di cancellazione, lo cancella se necessario, scrive i dati ricevuti dal sistema host e si assicura che gli eventuali dati precedentemente presenti nel blocco di destinazione siano spostati in un’altra locazione caratterizzata da un tasso di cancellazione inferiore ad una certa soglia. Nel wear leveling dinamico ogni cella di memoria è caratterizzata da un parametro denominato erase count, ovvero il numero totale di cancellazioni a cui è stata sottoposta la cella.Questo parametro influenza la scelta delle celle da parte del controller NAND Flash per le successive operazioni di scrittura e riscrittura, in quanto vengono scelte le celle con erase count più basso. L’algoritmo di wear leveling dinamico fa crescere l’erase count in modo costante su tutte le celle utilizzate nei processi di cancellazione e scrittura.


Esaminando un’ipotetica memoria contenente dati statici e dinamici ripartiti nelle percentuali indicate in figura. La tecnica del wear leveling dinamico sarà nettamente efficace sul 25% dei blocchi, ma cosa succede al restante 75%? A lungo andare l’erase count di quel 25% di blocchi crescerà uniformemente fino al limite fisico della memoria, mentre il restante 75% resterà con un erase count praticamente insignificante, vista la natura statica di dati ivi memorizzati. È evidente quindi che la tecnica del wear leveling dinamico, al contrario di quanto possa sembrare a prima vista, non può essere considerata in assoluto una tecnica equa, come dimostrato da questo particolare scenario di utilizzo.

DISPOSITIVI FAMOS (CELLE DI MEMORIA FLASH)



La più recente evoluzione delle EEPROM è la flash memory, un tipo di EEPROM che non permette di indirizzare singoli bit, ma viene scritto a blocchi proprio come un disco fisso. Questo, fra l'altro, accelera il processo naturale di deterioramento dell'isolante che assicura ai transistor la loro proprietà di mantenere lo stato per lungo tempo, e accorcia di molto la longevità delle flash rispetto alle EEPROM in termini di numero di cicli di cancellazione sopportabili (dell'ordine del milione di cicli per le flash memory).In compenso, le flash memory risultano molto più economiche da fabbricare delle EEPROM e hanno riscosso uno straordinario successo, come tutti sanno, come memorie di massa per tutti i tipi di dispositivi digitali. Esistono due tipi di flash memory, a seconda del tipo di porta logica usata per implementare una cella da un bit: i chip NOR e i chip NAND.I chip NAND, i più usati, hanno migliori prestazioni, maggior densità, minor costo e maggior durata ma, a differenza dei NOR, non si prestano bene ad accessi non sequenziali. Pertanto, nelle applicazioni in cui il chip flash deve ospitare un programma da eseguire direttamente senza trasferirlo prima in RAM, come il BIOS di una motherboard, è necessario usare flash memory basate su chip NOR. Per poter meglio capire come fisicamente funzionano le memorie flash, occorre precisare che esse sono realizzate in tecnologia FAMOS (Floating-gate Avalance-injection MOS), che non sono altro che transistor MOS a doppio gate: il primo gate, detto control gate, è un gate tradizionale, il secondo, chiamato floating gate, è immerso in uno strato di polisilicio, isolato tramite l’ossido di silicio e accoppiato capacitivamente con l’elettrodo relativo al gate di controllo. (Per una migliore comprensione di questi argomenti occorre, comunque, avere una certa conoscenza di cosa è un semiconduttore e di come funzionano i dispositivi MOS). In tali memorie il dato binario è rappresentato dalla presenza o meno di una carica di elettroni nel floating gate. La soglia del MOS cambia a seconda della carica immagazzinata. Durante la programmazione si controlla l’iniezione di carica nel Floating-Gate in maniera da variare la tensione di soglia VT della cella e provocare uno spostamento della caratteristica corrente-tensione IDS/VGS del transistor. All’assenza di carica nella Floating-Gate viene associato il livello logico “1” (transistor spento = cella cancellata), mentre alla presenza di carica è associato il livello logico “0” (transistor acceso = cella programmata). Durante la programmazione si porta la soglia del transistore a valori tali da non permettergli la conduzione, impiegando il meccanismo di iniezione a valanga di elettroni caldi “hot electron” (CHE: Channel Hot Electrons), che consiste in un processo energetico che fornisce agli elettroni energia sufficiente per superare la barriera di potenziale che nasce tra Floating-Gate, ossido sottile e Bulk. Per la cancellazione invece viene sfruttato l’effetto tunnel Fowler-Nordheim. Ma spieghiamo in dettaglio in cosa consistono questi due effetti, iniziando con il CHE. Le tensioni applicate ai morsetti di gate e drain regolano i campi elettrici nella zona in prossimità del drain in cui è maggiore la presenza di portatori caldi (ossia più energetici) ed è più probabile l'iniezione di questi verso il gate. Tale potenziale può favorire o meno un'iniezione di portatori di carica (elettroni o lacune) attraverso l'ossido. Per permettere l'iniezione delle cariche libere del canale verso il gate sono necessarie più condizioni. Per prima cosa è indispensabile una significativa popolazione di portatori con valori di energia elevati e superiori, nel caso degli elettroni, ai 3.1 eV della barriera nell'ossido. Affinchè questo accada il campo elettrico laterale deve raggiungere intensità elevata. Inoltre la tensione di gate non deve essere così elevata da portare il transistore in zona lineare, ma neppure così basso da rendere la popolazione di cariche libere nel canale troppo esigua per produrre correnti misurabili. Con l’applicazione di una tensione di polarizzazione sul Control-Gate, viene creato attraverso l’ossido un campo elettrico elevato, che permette agli elettroni di guadagnare energia, divenire “caldi”, e superare la barriera di ossido, causando l’iniezione a valanga dei portatori, che vengono intrappolati nel polisilicio del gate flottante, che essendo isolato può conservare tale carica per un tempo infinitamente lungo. La programmazione di una cella viene quindi realizzata applicando una tensione elevata ai terminali di gate e di drain, mentre il terminale di source viene mantenuto a massa. Gli elettroni, divenuti caldi ed intrappolati nel polisilicio del gate flottante, vanno a ridurre il potenziale dell’elettrodo. Questo meccanismo è quindi un processo autolimitato in quanto la carica negativa accumulata nel gate flottante riduce il campo elettrico e di conseguenza è più difficile rendere “caldi” e iniettare gli elettroni. Essendo il biossido di silicio, SiO2, un ottimo isolante, la carica intrappolata nella gate flottante può essere mantenuta per molti anni e senza che il circuito venga alimentato. La scrittura della cella per Channel-Hot-Electrons può portare all’intrappolamento di elettroni ad alta energia nell’ossido sovrastante la drain e ciò impedisce l’ulteriore accumulazione di elettroni nella Floating Gate, provocando un aumento della tensione di soglia ed un aumento del tempo di scrittura. Secondo il fenomeno quantistico del tunnelling Fowler-Nordheim, gli elettroni con contenuto energetico inferiore alla barriera di potenziale possono attraversare l’ossido di silicio purché questo sia sufficientemente sottile e siano verificate opportune specifiche condizioni di campo elettrico. La cancellazione viene realizzata mantenendo il gate a massa e applicando al source una tensione elevata, che permette agli elettroni di uscire dalla gate flottante ed iniettarsi nel source, grazie al meccanismo di tunnel Fowler-Nordheim. I tempi tipici per l’esecuzione dell’operazione di cancellazione variano da 100 ms a 1 s. Durante la cancellazione, la giunzione di source, sotto l’ossido, si piega per azione del campo elettrico verticale e si formano coppie elettrone-lacuna per tunnel di elettroni; gli elettroni fluiscono nella source mentre le lacune nel subtrato, ma non tutte, perché alcune, guadagnando energia per azione del forte campo elettrico verticale, passano la barriera di potenziale dell’ossido e si intrappolano nell’ossido stesso. Queste cariche positive intrappolate nell’ossido rendono più lenta la cancellazione e degradano la cella. L’intrappolamento di cariche nell’ossido per Band-to-Band Tunnel (BBT), durante la cancellazione, o l’intrappolamento di cariche nell’ossido per Channel-Hot-Electron(CHE) producono problemi macroscopici come la perdita di dati (Data Retention) per degradazione della qualità dell’ossido e problemi di Endurance, cioè resistenza della cella al numero di cicli di scrittura/cancellazione.

sabato 25 luglio 2009

Il perchè delle cose....


Salve a tutti, io sono Clizia e da oggi gestirò una nuova sezione del blog, nella quale si tratteranno svariati argomenti di fisica. Tra le tante tematiche, parlerò anche di fisica quantistica applicata alla crittografia. Inoltre, sarò lieta di rispondere ad eventuali domande su diversi argomenti di fisica: se avete, dunque, dubbi o curiosità da soddisfare non esitate a contattarmi!








Pensate che la cosa possa interessarvi?