Nand Flash ve Kötü blok nedir?

Oct 25, 2022

1 NAND FLAŞ

1.1 NAND FLASH Belleğin Tanıtımı

NAND FLASH Bellek, Çince adı flash bellek. Hızlı silme hızı nedeniyle adını alır.

NAND FLASH, Japonya'nın Toshiba Grubu'ndan Bay Fujio Masuoka tarafından icat edildi. Diğer depolama cihazlarından farklı olarak, NAND FLASH veri hatları ve adres hatları çoğullanmıştır ve adres hatları rastgele adresleme için kullanılamaz. Bu nedenle, NAND FLASH okuma birimi olarak sayfa sayfalarını (genellikle tek bir sayfa 2K Bayttır) ve silme birimi olarak blokları kullanır. (Genellikle tek bir blok 128KB veya 256KB'dir). Bir silme komutu gönderdikten sonra, NAND FLASH tüm blokları bir seferde 1'e siler ve içindeki tüm içerikler 0xFF olur. Silme süresi çok kısa olduğu için yıldırım hızındadır. Bu belleğe FLASH Bellek diyoruz.


1.2 NAND FLASH'in Donanım Uygulama Mekanizması

NAND FLASH'ın temel birimi, kayan kapılı bir MOSFET'tir.

Veriler, Flash bellek hücrelerinde elektrik yükü şeklinde depolanır. Depolanan yükün miktarı, dış kapıya uygulanan voltaja bağlıdır. Verilerin temsili, depolanan yükün voltajının belirli bir Vth eşiğini aşıp aşmadığı ile temsil edilir ve depolanan yük yeterliyse ve Vth eşiğini aşıyorsa 1'i temsil eder. 0 yazmak için, deşarj etmektir. ve ücret Vth'den daha düşük bir değere düşürülür, bu da 0 anlamına gelir.


2 Kötü Blok

2.1 Hatalı bloğun tanımı

NAND Flash işlemi, yaşam döngüsü boyunca NAND Bellek Dizisinin performansının güvenilirliğini garanti edemediğinden, NAND'ın üretimi ve kullanımı sırasında hatalı bloklar oluşacaktır. Bozuk blokların özellikleri şunlardır: Bu bloğu programlarken/silinirken, bazı bitler yüksek çekilemez, bu da Sayfa Programı ve Blok Silme işlemlerinde hatalara neden olur.


2.2 Bozuk blokların sınıflandırılması: fabrikada hatalı blok FBB ve kullanılmış bozuk blok GBB

(1) FBB: Fabrikada Kötü Blok, fabrikada kötü blok, fabrikadan yeni ayrılan kötü blok, Maskeli bozuk blok veya ilk kötü/geçersiz blok olarak adlandırılır. NAND Flash fabrikadan çıktığında, üretim sürecinden dolayı belirli miktarda hatalı blok olacaktır. Aynı zamanda, orijinal fabrika, fabrikadan ayrılmadan önce NAND FLASH'ı test edecektir ve test için kullanılan bloklar da orijinal fabrika tarafından bozuk bloklar olarak işaretlenebilir.

Fabrikadan ayrılmadan önce, orijinal fabrika bozuk blokları işaretleyecektir. Özel işaret, 2K sayfa boyutuna sahip ortak NAND Flash için, NAND flash için, bozuk blok işaretinin genellikle her bloğun ilk sayfasında yer almasıdır. Sayfa yedek alanının ilk baytı. Spesifik olarak, farklı ürünlerin veri sayfasını sorgulayabilirsiniz. 0xFF değilse, bunun kötü bir blok olduğu anlamına gelir. Buna uygun olarak, tüm normal bloklar, iyi bloklar ve bunların içindeki tüm veriler 0xFF'dir.

(2) GBB: Kötü bloklar kullanarak Yetiştirilen Kötü Blok. NAND Flash kullanımı sırasında, NAND Flash'ın silme ve yazma ömrü sınırlı olduğundan (genellikle 100,000 defadan fazla değildir), belirli bir kullanım süresinden sonra hatalı bloklar da oluşacaktır. . Bir Blok Silme veya Sayfa Programı hatası bulunursa, blok bozuk blok olarak işaretlenebilir. Doğal bozuk blok bilgileriyle tutarlı olması için, yedek alanın ilk baytı (bayt) 0xFF dışındaki diğer değerlerle de işaretlenecektir.


2.3 Bozuk blok tablosu:

Bir flaşın ilk bloğu fabrikadan çıktığında iyi olmalıdır, aksi takdirde flaşın tamamının kullanılamayacağı anlamına gelir. Çünkü genellikle ilk blok bozuk blok tablosunu kaydetmek için kullanılacaktır (BBT, Bad Block Table). Linux kernel MTD mimarisi altındaki NAND Flash sürücüsünde ve UBOOT'un NAND Flash sürücüsünde kötü blok yönetiminin (Kötü Blok Yönetimi) çalışma mekanizması nedeniyle, sürücüyü yükledikten sonra parametre eklemezseniz aktif olarak atlamayı isteyin kötü blok taraması. Eğer öyleyse, aktif olarak bozuk blokları tarar ve daha sonraki kötü blok yönetimi için gerekli BBT'yi kurar.


2.4 Bozuk blokların sayısı ve yeri

Orijinal NAND FLASH fabrikası, bozuk blokların sayısı ve konumu için bir standarda sahip olacaktır. Orijinal fabrika genellikle bozuk blokların sayısının yüzde 2'yi geçmeyeceğine söz verir, ancak bozuk blokların yeri garanti edilmez (ancak ilk blok fabrikadan çıktığında iyi olmalıdır. BTT'yi saklayın). Örneğin, bir NAND çipinde 2048 blok, 2048*0.02=40.96 vardır, bu nedenle bozuk blokların sayısı 40'ı geçmeyecektir. Ancak, sürekli olup olmadıklarına bakılmaksızın kötü blokların göründüğü yerde veya rastgele, hiçbir garanti yoktur.


2.5 Kötü blokların iyi bloklar üzerindeki etkisi

Kötü bir blok, iyi blokların performansını etkilemez çünkü seçme kapıları tarafından bit hatlarından izole edilir)


2.6 Bozuk blokların tespiti

"Kötü bloklar" olarak işaretlenen bu bloklar üzerinde "silme" işlemi yapılır. Blok Silme hatası oluşursa, bloğun gerçekten kötü bir blok olduğunu kanıtlar.


2.7 Silme İşlemine İlişkin Notlar

Aslında, işaretli bozuk blokları da silebiliriz. Bu şekilde zorla silindikten sonra bozuk blok bilgisi artık mevcut değildir. Fabrikada hatalı bloklar için işaretli bilgilerin silinmesi genellikle tavsiye edilmez.

UBOOT'ta, fabrika veya sonraki kullanım sürecinde görünen yeni işaret olsun, bozuk blok işareti de dahil olmak üzere bloktaki tüm içeriği silen "nand scrub" adlı bir komut vardır. Bunu kullanmanız genellikle tavsiye edilmez. NAND FLASH fabrikası üretildiğinde, NAND bozuk blokları nispeten geniş bir sıcaklık ve voltaj aralığında test edilir ve işaretlenir. Bu bozuk bloklar belirli bir sıcaklık veya voltaj altında çalışmaya devam edebilir, ancak koşullar değiştiğinde başka bir zamanda değiştirilebilir. başarısızlık, potansiyel bir saatli bomba haline geliyor. Orijinal fabrika tarafından işaretlenmiş bozuk bloklar silinirse, veri yazarken ve kaydederken veri kaybı sorunuyla karşılaşmak kolaydır.

Yalnızca iyi blokları silmek için "nand delete" kullanmak daha iyidir, zaten kötü bloklar olarak işaretlenmiş bloklar için silmeyin.


3 Kötü blok yönetimi

Aygıt veya FLASH denetleyicisi, BBM (Kötü Blok Yönetimi) olan bozuk blokları yönetecektir. Bunu daha sonra ekleyeceğiz.


Açıklama

1 İyi bir blok neden 0xff ile işaretlenir: Nand Flash'ın silinmesi, karşılık gelen bloğun tüm bitlerini 1'e değiştirmek olduğundan, yazma işlemi sırasında çipin her bir biti yalnızca 1'den değiştirilebilir. 0 için, ancak değil. 0'den 1'e değiştirin. 0XFF, hepsinin 11111111'e silinebileceği anlamına gelir. Başarıyla silinebileceğini gösterir ve iyi bir bloktur.

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

Telif hakkı bildirimi: Bu makale, CSDN blog yazarı "Alexander{{0}}Lai" tarafından yazılan orijinal bir makaledir ve CC 4.0 BY-SA telif hakkı sözleşmesine uygundur. Lütfen yeniden yazdırmak için orijinal kaynak bağlantısını ve bu beyanı ekleyin.