Mikä on Nand Flash and Bad -lohko?

Oct 25, 2022

1 NAND-SALAMA

1.1 NAND FLASH -muistin esittely

NAND FLASH-muisti, kiinalainen flash-muisti. Se on saanut nimensä nopeasta poistonopeudestaan.

NAND FLASHin keksi Fujio Masuoka japanilaisesta Toshiba Groupista. Muista tallennuslaitteista poiketen NAND FLASH -tietolinjat ja osoiterivit ovat multipleksoituja, eikä osoiterivejä voida käyttää satunnaiseen osoitteisiin. Siksi NAND FLASH käyttää sivusivuja lukuyksikkönä (yleensä yksi sivu on 2 kt tavua) ja lohkoja poistoyksikkönä. (Yleensä yksi lohko on 128 kt tai 256 kt). Lähetettyään poistokomennon NAND FLASH pyyhkii kaikki lohkot 1 kerrallaan, ja kaikesta sisällä olevasta sisällöstä tulee 0xFF. Koska poistoaika on hyvin lyhyt, se on yhtä nopea kuin salama. Joten kutsumme tätä muistia FLASH-muistiksi.


1.2 NAND FLASHin laitteiston toteutusmekanismi

NAND FLASHin perusyksikkö on kelluvalla portilla varustettu MOSFET.

Tiedot tallennetaan sähkövarauksen muodossa Flash-muistikennoihin. Tallennetun varauksen määrä riippuu ulkoiseen porttiin syötetystä jännitteestä. Tietojen esitystä edustaa se, ylittääkö tallennetun varauksen jännite tietyn kynnyksen Vth, ja jos tallennettu varaus on riittävä ja ylittää kynnyksen Vth, se edustaa 1:tä. Kirjoittaessa 0 se on purkaus. se, ja maksu pienenee alle viidenteen, mikä tarkoittaa 0.


2 Huono lohko

2.1 Määritelmä huono lohko

Koska NAND Flash -prosessi ei voi taata NAND-muistiryhmän suorituskyvyn luotettavuutta sen elinkaaren aikana, NAND:n tuotannon ja käytön aikana tapahtuu huonoja tukoksia. Huonojen lohkojen ominaisuudet ovat: tätä lohkoa ohjelmoitaessa/poistaessa joitakin bittejä ei voida vetää korkealle, mikä aiheuttaa virheitä Page Program- ja Block Erase -toiminnoissa.


2.2 Huonojen lohkojen luokittelu: tehdas huono lohko FBB & käytetty huono lohko GBB

(1) FBB: Factory Bad Block, tehdasvirheellinen lohko, virheellinen lohko, joka on juuri lähtenyt tehtaalta, on nimeltään Masked bad block tai alkuperäinen huono/virheellinen lohko. Kun NAND Flash lähtee tehtaalta, valmistusprosessista johtuen tietty määrä huonoja lohkoja. Samanaikaisesti alkuperäinen tehdas testaa NAND FLASHin ennen tehtaalta lähtöä, ja testissä käytetyt lohkot voidaan myös merkitä huonoiksi lohkoiksi alkuperäisen tehtaan toimesta.

Ennen tehtaalta lähtöä alkuperäinen tehdas merkitsee huonot lohkot. Erityinen merkki on, että tavallisessa NAND Flashissa, jonka sivukoko on 2K, ja NAND-flashissa huono lohkomerkki sijaitsee yleensä jokaisen lohkon ensimmäisellä sivulla. Sivun vara-alueen ensimmäinen tavu. Tarkemmin sanottuna voit tiedustella eri tuotteiden teknisiä tietoja. Jos se ei ole 0xFF, se tarkoittaa, että se on huono lohko. Vastaavasti kaikki normaalit lohkot, hyvät lohkot ja kaikki niissä oleva data ovat 0xFF.

(2) GBB: Grown Bad Block, käyttämällä huonoja lohkoja. NAND Flashin käytön aikana, koska NAND Flashin pyyhkimisen ja kirjoitusten käyttöikä on rajoitettu (yleensä enintään 100,000 kertaa), huonoja tukoksia esiintyy myös tietyn käyttöajan jälkeen. . Jos lohkon poisto tai sivuohjelmavirhe löytyy, lohko voidaan merkitä huonoksi lohkoksi. Jotta se olisi johdonmukainen luontaisen huonon lohkon tiedon kanssa, vara-alueen ensimmäinen tavu (tavu) merkitään myös muilla arvoilla kuin 0xFF.


2.3 Huono lohkotaulukko:

Salaman ensimmäisen lohkon on oltava hyvä, kun se lähtee tehtaalta, muuten se tarkoittaa, että koko salamaa ei voi käyttää. Koska yleensä ensimmäistä lohkoa käytetään huonon lohkotaulukon (BBT, Bad Block Table) tallentamiseen. Linux-ytimen MTD-arkkitehtuurin NAND Flash -ajurin ja UBOOTin NAND Flash -ohjaimen huonon lohkohallinnan (Bad Block Management) toimintamekanismin vuoksi ohjaimen lataamisen jälkeen, jos et lisää parametreja, pyydät aktiivisesti ohittamaan huono lohkoskannaus. Jos näin on, se etsii aktiivisesti huonoja lohkoja ja muodostaa tarvittavan BBT:n myöhempää huonojen lohkojen hallintaa varten.


2.4 Huonojen lohkojen lukumäärä ja sijainti

Alkuperäisellä NAND FLASH -tehtaalla on standardi huonojen lohkojen lukumäärälle ja sijainnille. Alkuperäinen tehdas lupaa yleensä, että huonojen lohkojen määrä ei ylitä 2 prosenttia, mutta huonojen lohkojen sijaintia ei taata (mutta ensimmäisen lohkon on oltava hyvä, kun se lähtee tehtaalta. , koska ensimmäistä käytetään myymälä BTT). Esimerkiksi NAND-sirussa on 2048 lohkoa, 2048*0.02=40.96, joten huonojen lohkojen määrä ei ylitä 40:tä. Mutta missä huonot lohkot näkyvät, ovatko ne jatkuvia tai satunnainen, ei ole takuuta.


2.5 Huonojen lohkojen vaikutus hyviin lohkoihin

Huono lohko ei vaikuta hyvien lohkojen suorituskykyyn, koska se on eristetty bittilinjoista valituilla porteilla)


2.6 Huonojen lohkojen havaitseminen

Näille "huonoiksi lohkoiksi" merkityille lohkoille suoritetaan "poisto"-toiminto. Jos Block Erase -virhe ilmenee, se osoittaa, että lohko on todella huono lohko.


2.7 Huomautuksia poistotoiminnosta

Itse asiassa voimme myös poistaa merkityt huonot lohkot. Tällä tavalla pakotetun poiston jälkeen virheellistä lohkotietoa ei ole enää olemassa. Tehdasvirheiden osalta ei yleensä suositella merkittyjen tietojen poistamista.

UBOOTissa on komento nimeltä "nand scrub", joka poistaa kaiken lohkon sisällön, mukaan lukien huonon lohkomerkin, olipa kyseessä sitten tehdasmerkki tai uusi merkki, joka tulee näkyviin myöhemmässä käyttöprosessissa. Tämän käyttöä ei yleensä suositella. Kun NAND FLASH -tehdas valmistetaan, NAND huonot lohkot testataan ja merkitään suhteellisen laajalla lämpötila- ja jännitealueella. Nämä huonot lohkot voivat edelleen toimia tietyssä lämpötilassa tai jännitteessä, mutta niitä voidaan muuttaa toisessa vaiheessa olosuhteiden muuttuessa. epäonnistuminen, josta tulee mahdollinen tikittävä aikapommi. Jos alkuperäisen tehtaan merkityt huonot lohkot poistetaan, on helppo kohdata tietojen katoamisongelma kirjoitettaessa ja tallennettaessa.

On parempi käyttää "nand erase" poistaaksesi vain hyvät lohkot, jos lohkot on jo merkitty huonoiksi lohkoiksi, älä poista.


3 Huono lohkohallinta

Laitteen tai FLASHin ohjain hallitsee huonoja lohkoja, mikä on BBM (Bad Block Management). Lisäämme tämän myöhemmin.


Huomautus

1 Miksi hyvä lohko on merkitty 0xff:llä: koska Nand Flashin pyyhkimisen tarkoituksena on muuttaa kaikki vastaavan lohkon bitit 1:ksi, kirjoitustoiminnon aikana sirun jokainen bitti voidaan muuttaa vain arvosta 1 osoitteeseen 0, mutta ei. Vaihda arvosta 0 arvoon 1. 0XFF tarkoittaa, että kaikki voidaan poistaa numeroon 11111111. Se osoittaa, että se voidaan poistaa onnistuneesti, ja se on hyvä lohko.

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

Tekijänoikeuslausunto: Tämä artikkeli on CSDN-bloggaajan "Alexander{{0}}Lai" alkuperäinen artikkeli ja noudattaa CC 4.0 BY-SA -tekijänoikeussopimusta. Liitä mukaan alkuperäinen lähdelinkki ja tämä lausunto uudelleentulostusta varten.