Cos'è Nand Flash e Bad block?

Oct 25, 2022

1 NAND FLASH

1.1 Introduzione della memoria NAND FLASH

Memoria NAND FLASH, memoria flash con nome cinese. Prende il nome dalla sua velocità di cancellazione veloce.

NAND FLASH è stato inventato dal Sig. Fujio Masuoka del gruppo giapponese Toshiba. Diversamente dagli altri dispositivi di archiviazione, le linee dati NAND FLASH e le linee di indirizzo sono multiplex e le linee di indirizzo non possono essere utilizzate per l'indirizzamento casuale. Pertanto, NAND FLASH utilizza le pagine di pagina come unità di lettura (generalmente una singola pagina è 2K Byte) e blocchi come unità di cancellazione. (In genere un singolo blocco è 128 KB o 256 KB). Dopo aver inviato un comando di cancellazione, NAND FLASH cancella tutti i blocchi a 1 alla volta e tutti i contenuti all'interno diventano 0xFF. Poiché il tempo di cancellazione è molto breve, è veloce come un fulmine. Quindi chiamiamo questa memoria Memoria FLASH.


1.2 Meccanismo di implementazione hardware di NAND FLASH

L'unità base di NAND FLASH è un MOSFET con gate flottante.

I dati vengono archiviati sotto forma di carica elettrica in celle di memoria Flash. La quantità di carica immagazzinata dipende dalla tensione applicata al gate esterno. La rappresentazione dei dati è rappresentata dal fatto se la tensione della carica immagazzinata supera una determinata soglia Vth, e se la carica immagazzinata è sufficiente e supera la soglia Vth, rappresenta 1. Per scrivere 0 è da scaricare it, e l'addebito viene ridotto a meno di Vth, che significa 0.


2 Blocco difettoso

2.1 Definizione di Bad block

Poiché il processo di NAND Flash non può garantire l'affidabilità delle prestazioni dell'array di memoria NAND durante il suo ciclo di vita, si verificheranno blocchi danneggiati durante la produzione e l'utilizzo della NAND. Le caratteristiche dei blocchi danneggiati sono: durante la programmazione/cancellazione di questo blocco, alcuni bit non possono essere portati in alto, il che causerà errori nelle operazioni di Page Program e Block Erase.


2.2 Classificazione dei blocchi danneggiati: blocco difettoso di fabbrica FBB e blocco danneggiato GBB utilizzato

(1) FBB: Factory Bad Block, il blocco danneggiato di fabbrica, il blocco danneggiato che ha appena lasciato la fabbrica, è chiamato blocco danneggiato mascherato o blocco iniziale errato/non valido. Quando NAND Flash lascia la fabbrica, ci sarà una certa quantità di blocchi danneggiati a causa del processo di produzione. Allo stesso tempo, la fabbrica originale testerà la NAND FLASH prima di lasciare la fabbrica e i blocchi utilizzati per il test potrebbero anche essere contrassegnati come blocchi danneggiati dalla fabbrica originale.

Prima di lasciare la fabbrica, la fabbrica originale contrassegnerà i blocchi danneggiati. Il segno specifico è che per la comune NAND Flash con una dimensione della pagina di 2K, per la NAND flash, il segno di blocco danneggiato si trova generalmente sulla prima pagina di ogni blocco. Il primo byte dell'area di riserva della pagina. Nello specifico è possibile interrogare la scheda tecnica di diversi prodotti. Se non è 0xFF, significa che è un blocco danneggiato. Di conseguenza, tutti i blocchi normali, i blocchi validi e tutti i dati in essi contenuti sono 0xFF.

(2) GBB: Grown Bad Block, utilizzando blocchi danneggiati. Durante l'utilizzo di NAND Flash, poiché la durata di cancellazione e scrittura di NAND Flash è limitata (in genere non più di 100,000 volte), si verificheranno anche blocchi danneggiati dopo un certo periodo di utilizzo . Se viene rilevato un errore di cancellazione blocco o di programma pagina, il blocco può essere contrassegnato come un blocco danneggiato. Per essere coerente con le informazioni inerenti al blocco errato, il primo byte (byte) dell'area di riserva verrà contrassegnato anche con altri valori diversi da 0xFF.


2.3 Tabella dei blocchi danneggiati:

Il primo blocco di un flash deve essere buono quando esce dalla fabbrica, altrimenti significa che l'intero flash non può essere utilizzato. Perché generalmente il primo blocco verrà utilizzato per salvare la tabella dei blocchi danneggiati (BBT, Tabella dei blocchi danneggiati). A causa del meccanismo di funzionamento della cattiva gestione dei blocchi (Bad Block Management) nel driver NAND Flash sotto l'architettura MTD del kernel Linux e nel driver NAND Flash di UBOOT, dopo aver caricato il driver, se non si aggiungono parametri, si chiede attivamente di saltare la scansione del blocco danneggiato. In tal caso, eseguirà attivamente la scansione dei blocchi danneggiati e stabilirà il BBT necessario per la successiva gestione dei blocchi danneggiati.


2.4 Numero e posizione dei blocchi danneggiati

La fabbrica NAND FLASH originale avrà uno standard per il numero e la posizione dei blocchi danneggiati. La fabbrica originale generalmente promette che il numero di blocchi danneggiati non supera il 2 percento, ma la posizione dei blocchi danneggiati non è garantita (ma il primo blocco deve essere buono quando lascia la fabbrica, perché il primo verrà utilizzato per memorizzare BTT). Ad esempio, un chip NAND ha 2048 blocchi, 2048*0.02=40.96, quindi il numero di blocchi danneggiati non supererà 40. Ma dove compaiono i blocchi danneggiati, indipendentemente dal fatto che siano continui o casuale, non vi è alcuna garanzia.


2.5 L'impatto dei blocchi danneggiati sui blocchi buoni

Un blocco danneggiato non influisce sulle prestazioni di blocchi buoni perché è isolato dalle linee di bit da porte selezionate)


2.6 Rilevamento di blocchi danneggiati

Su questi blocchi contrassegnati come "blocchi danneggiati" viene eseguita un'operazione di "cancellazione". Se si verifica l'errore Block Erase, dimostra che il blocco è un vero blocco danneggiato.


2.7 Note sull'operazione di cancellazione

In effetti, possiamo anche cancellare i blocchi danneggiati contrassegnati. Dopo la cancellazione forzata in questo modo, le informazioni sul blocco danneggiato non esistono più. Per i blocchi danneggiati di fabbrica, generalmente non è consigliabile cancellare le informazioni contrassegnate.

C'è un comando in UBOOT chiamato "nand scrub", che cancella tutto il contenuto nel blocco, incluso il segno di blocco errato, sia che si tratti del factory o del nuovo segno che appare nel processo di utilizzo successivo. In genere non è consigliabile utilizzarlo. Quando viene prodotta la fabbrica NAND FLASH, i blocchi NAND danneggiati vengono testati e contrassegnati in un intervallo di temperatura e tensione relativamente ampio. Questi blocchi danneggiati possono ancora funzionare a una certa temperatura o tensione, ma possono essere modificati in un altro momento quando le condizioni cambiano. fallimento, diventando una potenziale bomba a orologeria. Se i blocchi danneggiati contrassegnati dalla fabbrica originale vengono cancellati, è facile incontrare il problema della perdita di dati durante la scrittura e il salvataggio dei dati.

È meglio usare "nand erase" per cancellare solo i blocchi buoni, per i blocchi già contrassegnati come cattivi, non cancellare.


3 Cattiva gestione dei blocchi

Il controller del dispositivo o della FLASH gestirà i blocchi danneggiati, che è BBM (Bad Block Management). Lo aggiungeremo più tardi.


Nota

1 Perché un buon blocco è contrassegnato con 0xff: poiché la cancellazione di Nand Flash consiste nel cambiare tutti i bit del blocco corrispondente a 1, durante l'operazione di scrittura, ogni bit del chip può essere modificato solo da 1 a 0, ma non. Cambia da 0 a 1. 0XFF significa che tutto può essere cancellato fino a 11111111. Indica che può essere cancellato correttamente ed è un buon blocco.

———————————————

Dichiarazione sul copyright: questo articolo è un articolo originale del blogger CSDN "Alexander{{0}}Lai" e segue l'accordo sul copyright CC 4.0 BY-SA. Si prega di allegare il link alla fonte originale e questa dichiarazione per la ristampa.