Mis on Nand Flash ja Bad plokk?

Oct 25, 2022

1 NAND VÄLK

1.1 NAND FLASH-mälu tutvustus

NAND FLASH Memory, hiina nimega välkmälu. See sai oma nime kiire kustutamiskiiruse tõttu.

NAND FLASHi leiutas hr Fujio Masuoka Jaapani Toshiba kontsernist. Erinevalt teistest salvestusseadmetest on NAND FLASH andmeliinid ja aadressiliinid multipleksitud ning aadressiridu ei saa kasutada juhuslikuks adresseerimiseks. Seetõttu kasutab NAND FLASH lugemisüksusena leheküljelehti (tavaliselt on üks leht 2K baiti) ja kustutamisüksusena plokke. (Üldiselt on üks plokk 128 KB või 256 KB). Pärast kustutamiskäsu saatmist kustutab NAND FLASH kõik plokid 1 kaupa ja kogu sees olev sisu muutub 0xFF-ks. Kuna kustutamisaeg on väga lühike, on see sama kiire kui välk. Nii et me nimetame seda mälu FLASH Memory.


1.2 NAND FLASH riistvara juurutamise mehhanism

NAND FLASH-i põhiseade on ujuva väravaga MOSFET.

Andmed salvestatakse elektrilaengu kujul välkmälurakkudes. Salvestatud laengu suurus sõltub välisele väravale rakendatavast pingest. Andmete esitus kujutab endast seda, kas salvestatud laengu pinge ületab kindla läve V-nda ja kui salvestatud laengust piisab ja see ületab läve V-ndat, siis on see 1. 0 kirjutamiseks on tühjendamine ja tasu vähendatakse alla V-nda, mis tähendab 0.


2 Halb plokk

2.1 Halva ploki määratlus

Kuna NAND Flashi protsess ei saa garanteerida NAND-mälumassiivi töökindlust selle elutsükli jooksul, tekivad NAND-i tootmise ja kasutamise ajal halvad plokid. Halbade plokkide omadused on järgmised: selle ploki programmeerimisel/kustutamisel ei saa mõnda bitti kõrgele tõmmata, mis põhjustab leheprogrammi ja ploki kustutamise operatsioonides vigu.


2.2 Halbade plokkide klassifikatsioon: tehase vigane plokk FBB ja kasutatud vigane plokk GBB

(1) FBB: Factory Bad Block, tehase vigane plokk, äsja tehasest lahkunud vigane plokk, nimetatakse maskeeritud vigaseks plokiks või esialgseks vigaseks/kehtetuks plokiks. Kui NAND Flash tehasest lahkub, tekib tootmisprotsessi tõttu teatud hulk halbu plokke. Samal ajal testib algne tehas NAND FLASH-i enne tehasest lahkumist ning testimiseks kasutatud klotsid võivad olla ka originaaltehase poolt märgitud halbadeks plokkideks.

Enne tehasest lahkumist märgistab algne tehas halvad plokid. Spetsiifiline märk on see, et tavalise NAND Flashi puhul, mille lehe suurus on 2K, NAND välgu puhul asub halva ploki märk üldiselt iga ploki esimesel lehel. Lehe varuala esimene bait. Täpsemalt saate küsida erinevate toodete andmelehte. Kui see pole 0xFF, tähendab see, et see on halb plokk. Vastavalt on kõik tavalised plokid, head plokid ja kõik neis olevad andmed 0xFF.

(2) GBB: Grown Bad Block, kasutades halbu plokke. NAND Flashi kasutamise ajal, kuna NAND Flashi kustutamis- ja kirjutamisaeg on piiratud (tavaliselt mitte rohkem kui 100,000 korda), ilmnevad teatud kasutusperioodi järel ka halvad blokeeringud. . Kui leitakse ploki kustutamise või leheprogrammi tõrge, saab ploki märkida halvaks plokiks. Loomupärase halva ploki teabega kooskõla tagamiseks märgitakse varuala esimene bait (bait) ka muude väärtustega peale 0xFF.


2.3 Halb plokitabel:

Välklambi esimene plokk peab tehasest väljudes hea olema, muidu tähendab see, et tervet välku ei saa kasutada. Sest üldiselt kasutatakse esimest plokki halbade plokkide tabeli (BBT, Bad Block Table) salvestamiseks. Halva plokihalduse (Bad Block Management) töömehhanismi tõttu Linuxi kerneli MTD arhitektuuri all olevas NAND Flashi draiveris ja UBOOTi NAND Flashi draiveris palute pärast draiveri laadimist, kui te parameetreid ei lisa, aktiivselt vahele jätta. halb ploki skannimine. Kui jah, otsib see aktiivselt halbu plokke ja loob vajaliku BBT hilisemaks halbade plokkide haldamiseks.


2.4 Halbade plokkide arv ja asukoht

Algsel NAND FLASH tehasel on halbade plokkide arvu ja asukoha standard. Algne tehas lubab üldiselt, et vigaste plokkide arv ei ületa 2 protsenti, kuid vigaste plokkide asukoht ei ole garanteeritud (aga esimene plokk peab tehasest lahkudes olema hea. , sest esimest kasutatakse kauplus BTT). Näiteks NAND-kiibil on 2048 plokki, 2048*0.02=40.96, nii et vigaste plokkide arv ei ületa 40. Aga kus ilmuvad halvad plokid, kas need on pidevad või juhuslik, garantii puudub.


2.5 Halbade plokkide mõju headele plokkidele

Halb plokk ei mõjuta heade plokkide jõudlust, kuna see on valitud väravatega bitiliinidest isoleeritud)


2.6 Halbade plokkide tuvastamine

Nendel plokkidel, mis on märgitud kui "halvad plokid", tehakse "kustutus" toiming. Kui ilmneb tõrge Block Erase, näitab see, et plokk on tõesti halb plokk.


2.7 Märkused kustutamise kohta

Tegelikult saame kustutada ka märgitud halvad plokid. Pärast sellisel viisil sunniviisilist kustutamist pole vigast ploki teavet enam olemas. Tehase vigaste plokkide puhul ei ole üldiselt soovitatav märgitud teavet kustutada.

UBOOTis on käsk "nand scrub", mis kustutab kogu ploki sisu, sealhulgas halva ploki märgi, olenemata sellest, kas tegemist on tehase või uue märgiga, mis ilmub hilisemas kasutusprotsessis. Üldiselt ei soovitata seda kasutada. NAND FLASH tehase tootmisel testitakse ja märgistatakse NAND-i halbu plokke suhteliselt laias temperatuuri- ja pingevahemikus. Need halvad plokid võivad endiselt töötada teatud temperatuuril või pingel, kuid tingimuste muutumisel võidakse neid muuta. ebaõnnestumine, muutudes potentsiaalseks tiksuvaks viitsütikuga pommiks. Kui algse tehase poolt märgitud halvad plokid kustutatakse, on andmete kirjutamisel ja salvestamisel lihtne kokku puutuda andmete kadumise probleemiga.

Parem on kasutada "nand erase" ainult heade plokkide kustutamiseks, plokkide puhul, mis on juba märgitud halvad plokid, ärge kustutage.


3 Halb plokkide haldamine

Seadme või FLASH-i kontroller haldab halbu plokke, milleks on BBM (Bad Block Management). Lisame selle hiljem.


Märkus

1 Miks on hea plokk tähistatud tähega 0xff: kuna Nand Flashi kustutamise eesmärk on muuta vastava ploki kõik bitid 1-ks, saab kirjutamistoimingu ajal kiibi iga bitti muuta ainult 1-st 0-le, kuid mitte. Muutke 0 asemel 1. 0XFF tähendab, et kõik saab kustutada numbrile 11111111. See näitab, et seda saab edukalt kustutada ja see on hea plokk.

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

Autoriõigusavaldus: see artikkel on CSDN-i ajaveebi "Alexander{{0}}Lai" originaalartikkel ja järgib CC 4.0 BY-SA autoriõiguslepingut. Palun lisage algallika link ja see avaldus kordustrükkimiseks.