Vad är Nand Flash och Bad block?

Oct 25, 2022

1 NAND FLASH

1.1 Introduktion av NAND FLASH-minne

NAND FLASH Memory, kinesiskt namn flashminne. Den har fått sitt namn på grund av dess snabba raderingshastighet.

NAND FLASH uppfanns av Fujio Masuoka från Japans Toshiba Group. Till skillnad från andra lagringsenheter multiplexeras NAND FLASH-datalinjer och adresslinjer, och adresslinjer kan inte användas för slumpmässig adressering. Därför använder NAND FLASH sidsidor som läsenhet (i allmänhet är en enskild sida 2K byte) och block som raderingsenhet. (Generellt är ett enda block 128KB eller 256KB). Efter att ha skickat ett raderingskommando, raderar NAND FLASH alla block till 1 åt gången, och allt innehåll inuti blir 0xFF. Eftersom raderingstiden är väldigt kort går den snabbt som blixten. Så vi kallar detta minne för FLASH Memory.


1.2 Hårdvaruimplementeringsmekanism för NAND FLASH

Grundenheten för NAND FLASH är en MOSFET med en flytande grind.

Data lagras i form av elektrisk laddning i flashminnesceller. Mängden lagrad laddning beror på spänningen som appliceras på den externa grinden. Representationen av data representeras av huruvida spänningen för den lagrade laddningen överstiger ett specifikt tröskelvärde Vth, och om den lagrade laddningen räcker och överskrider tröskelvärdet Vth, representerar den 1. För att skriva 0 är det att ladda ur det, och laddningen reduceras till mindre än Vth, vilket betyder 0.


2 Dåligt block

2.1 Definition av Bad block

Eftersom processen med NAND Flash inte kan garantera tillförlitligheten av prestanda för NAND Memory Array under dess livscykel, kommer dåliga blockeringar att uppstå under produktion och användning av NAND. Egenskaperna för dåliga block är: vid programmering/radering av detta block kan vissa bitar inte dras högt, vilket kommer att orsaka fel i Page Program och Block Erase operationer.


2.2 Klassificering av dåliga block: fabriks dåligt block FBB & använt dåligt block GBB

(1) FBB: Factory Bad Block, det dåliga fabriksblocket, det dåliga blocket som just har lämnat fabriken, kallas Masked Bad Block eller initialt dåligt/ogiltigt block. När NAND Flash lämnar fabriken kommer det att finnas en viss mängd dåliga block på grund av tillverkningsprocessen. Samtidigt kommer den ursprungliga fabriken att testa NAND FLASH innan den lämnar fabriken, och blocken som används för testet kan också markeras som dåliga block av den ursprungliga fabriken.

Innan du lämnar fabriken kommer den ursprungliga fabriken att markera de dåliga blocken. Det specifika märket är att för den vanliga NAND-blixten med en sidstorlek på 2K, för NAND-flash, finns det dåliga blockmärket i allmänhet på första sidan i varje block. Den första byten i sidans reservområde. Specifikt kan du fråga databladet för olika produkter. Om det inte är 0xFF betyder det att det är ett dåligt block. På motsvarande sätt är alla normala block, bra block och all data i dem 0xFF.

(2) GBB: Grown Bad Block, med dåliga block. Under användningen av NAND Flash, eftersom raderings- och skrivlivslängden för NAND Flash är begränsad (vanligen inte mer än 100,000 gånger), kommer även dåliga blockeringar att inträffa efter en viss användningsperiod . Om ett blockerad- eller sidprogramfel hittas kan blocket markeras som ett dåligt block. För att överensstämma med den inneboende dåliga blockinformationen kommer den första byten (byten) i reservområdet också att markeras med andra värden än 0xFF.


2.3 Dåligt blockbord:

Det första blocket av en blixt måste vara bra när den lämnar fabriken, annars innebär det att hela blixten inte kan användas. För i allmänhet kommer det första blocket att användas för att spara den dåliga blocktabellen (BBT, Bad Block Table). På grund av arbetsmekanismen för dålig blockhantering (Bad Block Management) i NAND Flash-drivrutinen under Linux-kärnan MTD-arkitektur och NAND Flash-drivrutinen för UBOOT, efter att ha laddat drivrutinen, om du inte lägger till parametrar, ber du aktivt att hoppa över den dåliga blockskanningen. Om så är fallet kommer den aktivt att söka efter dåliga block och upprätta nödvändig BBT för senare dålig blockhantering.


2.4 Antal och placering av dåliga block

Den ursprungliga NAND FLASH-fabriken kommer att ha en standard för antalet och placeringen av dåliga block. Den ursprungliga fabriken lovar i allmänhet att antalet dåliga block inte överstiger 2 procent, men platsen för de dåliga blocken är inte garanterad (men det första blocket måste vara bra när det lämnar fabriken. , eftersom det första kommer att användas för att lagra BTT). Till exempel har ett NAND-chip 2048 block, 2048*0.02=40.96, så antalet dåliga block kommer inte att överstiga 40. Men där de dåliga blocken visas, oavsett om de är kontinuerliga eller slumpmässigt, det finns ingen garanti.


2.5 Inverkan av dåliga block på bra block

Ett dåligt block påverkar inte prestandan hos bra block eftersom det är isolerat från bitlinjerna av utvalda grindar)


2.6 Detektering av dåliga block

En "radering"-operation utförs på dessa block markerade som "dåliga block". Om Block Erase-felet uppstår, bevisar det att blocket är ett riktigt dåligt block.


2.7 Anmärkningar om radering

Faktum är att vi också kan radera markerade dåliga block. Efter att ha tvångsraderats på detta sätt finns den dåliga blockinformationen inte längre. För fabriksfelaktiga block rekommenderas det i allmänhet inte att radera den markerade informationen.

Det finns ett kommando i UBOOT som heter "nand scrub", som raderar allt innehåll i blocket, inklusive det dåliga blockmärket, oavsett om det är fabriken eller det nya märket som dyker upp i den senare användningsprocessen. Det rekommenderas i allmänhet inte att använda detta. När NAND FLASH-fabriken tillverkas testas och märks NAND dåliga block i ett relativt brett temperatur- och spänningsområde. Dessa dåliga block kan fortfarande fungera under en viss temperatur eller spänning, men kan ändras vid en annan tidpunkt när förhållandena ändras. misslyckande, blir en potentiell tickande bomb. Om de dåliga blocken markerade av den ursprungliga fabriken raderas är det lätt att stöta på problemet med dataförlust när man skriver och sparar data.

Det är bättre att använda "nand erase" för att bara radera bra block, för block som redan är markerade med dåliga block, radera inte.


3 Dålig blockhantering

Styrenheten för Device eller FLASH kommer att hantera dåliga block, vilket är BBM (Bad Block Management). Vi kommer att lägga till detta senare.


Anmärkning

1 Varför är ett bra block markerat med 0xff: eftersom raderingen av Nand Flash är att ändra alla bitar i motsvarande block till 1, under skrivoperationen, kan varje bit i chippet endast ändras från 1 till 0, men inte. Ändra från 0 till 1. 0XFF betyder att alla kan raderas till 11111111. Det indikerar att det kan raderas framgångsrikt, och det är ett bra block.

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

Upphovsrättsuttalande: Denna artikel är en originalartikel av CSDN-bloggaren "Alexander{{0}}Lai" och följer upphovsrättsavtalet CC 4.0 BY-SA. Bifoga den ursprungliga källlänken och detta uttalande för omtryck.