Nand Flash و Bad block چیست؟

Oct 25, 2022

1 NAND FLASH

1.1 معرفی حافظه NAND FLASH

NAND FLASH Memory، فلش مموری نام چینی. این نام به دلیل سرعت پاک کردن سریع آن است.

NAND FLASH توسط آقای فوجیو ماسوکا از گروه توشیبا ژاپن اختراع شد. متفاوت از سایر دستگاه های ذخیره سازی، خطوط داده NAND FLASH و خطوط آدرس مالتی پلکس هستند و خطوط آدرس را نمی توان برای آدرس دهی تصادفی استفاده کرد. بنابراین، NAND FLASH از صفحات صفحه به عنوان واحد خواندن استفاده می کند (به طور کلی یک صفحه تنها 2K بایت است)، و از بلوک ها به عنوان واحد پاک کردن استفاده می کند. (به طور کلی یک بلوک 128 کیلوبایت یا 256 کیلوبایت است). پس از ارسال یک فرمان پاک کردن، NAND FLASH همه بلوک ها را در یک زمان به 1 پاک می کند و تمام محتویات داخل آن به 0xFF تبدیل می شود. از آنجایی که زمان پاک کردن بسیار کوتاه است، به سرعت رعد و برق است. بنابراین ما این حافظه را FLASH Memory می نامیم.


1.2 مکانیسم پیاده سازی سخت افزار NAND FLASH

واحد اصلی NAND FLASH یک ماسفت با دروازه شناور است.

داده ها به شکل بار الکتریکی در سلول های حافظه فلش ذخیره می شوند. مقدار شارژ ذخیره شده بستگی به ولتاژ اعمال شده به گیت خارجی دارد. نمایش داده ها به این صورت نشان داده می شود که آیا ولتاژ بار ذخیره شده از آستانه خاصی فراتر می رود یا خیر، و اگر شارژ ذخیره شده کافی باشد و از آستانه Vth بیشتر شود، نشان دهنده 1 است. برای نوشتن 0، تخلیه است. آن را، و شارژ به کمتر از Vth، که به معنی 0 کاهش می یابد.


2 بلوک بد

2.1 تعریف بلوک بد

از آنجایی که فرآیند NAND Flash نمی تواند قابلیت اطمینان عملکرد آرایه حافظه NAND را در طول چرخه عمر آن تضمین کند، بلوک های بدی در طول تولید و استفاده از NAND رخ می دهد. ویژگی های بلوک های بد عبارتند از: هنگام برنامه نویسی/پاک کردن این بلوک، برخی از بیت ها را نمی توان بالا کشید که باعث ایجاد خطا در عملیات برنامه Page و Block Erase می شود.


2.2 طبقه بندی بلوک های بد: بلوک بد کارخانه FBB و بلوک بد استفاده شده GBB

(1) FBB: بلوک بد کارخانه، بلوک بد کارخانه، بلوک بدی که به تازگی از کارخانه خارج شده است، بلوک بد ماسک شده یا بلوک بد/نامعتبر اولیه نامیده می شود. هنگامی که NAND Flash کارخانه را ترک می کند، مقدار مشخصی از بلوک های بد به دلیل فرآیند تولید وجود خواهد داشت. در همان زمان، کارخانه اصلی قبل از خروج از کارخانه، NAND FLASH را آزمایش می کند و بلوک های مورد استفاده برای آزمایش نیز ممکن است توسط کارخانه اصلی به عنوان بلوک های بد علامت گذاری شوند.

قبل از خروج از کارخانه، کارخانه اصلی بلوک های بد را علامت گذاری می کند. علامت خاص این است که برای فلش NAND معمولی با اندازه صفحه 2K، برای فلش NAND، علامت بلوک بد به طور کلی در صفحه اول هر بلوک قرار دارد. اولین بایت از قسمت ذخیره صفحه. به طور خاص، می توانید دیتاشیت محصولات مختلف را پرس و جو کنید. اگر 0xFF نباشد، به این معنی است که بلوک بدی است. به همین ترتیب، همه بلوک‌های عادی، بلوک‌های خوب، و همه داده‌های موجود در آنها 0xFF هستند.

(2) GBB: بلوک بد رشد یافته، با استفاده از بلوک های بد. در طول استفاده از NAND Flash، به دلیل اینکه عمر پاک کردن و نوشتن NAND Flash محدود است (معمولاً بیش از 100،000 بار نیست)، بلوک های بد نیز پس از یک دوره استفاده مشخص رخ می دهد. . اگر خطای Block Ease یا Page Program یافت شود، بلوک را می توان به عنوان یک بلوک بد علامت گذاری کرد. به منظور سازگاری با اطلاعات بلوک بد ذاتی، اولین بایت (بایت) ناحیه اضافی نیز با مقادیر دیگری غیر از 0xFF مشخص می شود.


2.3 جدول بلوک بد:

اولین بلوک فلش باید وقتی از کارخانه خارج می شود خوب باشد، در غیر این صورت به این معنی است که نمی توان از کل فلش استفاده کرد. زیرا به طور کلی اولین بلوک برای ذخیره جدول بلوک بد (BBT، Bad Block Table) استفاده می شود. با توجه به مکانیسم کار مدیریت بلوک بد (مدیریت بد بلوک) در درایور NAND Flash تحت معماری هسته لینوکس MTD و درایور NAND Flash UBOOT، پس از بارگذاری درایور، اگر پارامترها را اضافه نکنید، به طور فعال درخواست پرش می کنید. اسکن بلوک بد در این صورت، به طور فعال بلوک های بد را اسکن می کند و BBT لازم را برای مدیریت بلوک بد بعدی ایجاد می کند.


2.4 تعداد و محل بلوک های بد

کارخانه اصلی NAND FLASH استانداردی برای تعداد و مکان بلوک های بد خواهد داشت. کارخانه اصلی به طور کلی قول می دهد که تعداد بلوک های بد از 2 درصد تجاوز نکند، اما مکان بلوک های بد تضمین نشده است (اما بلوک اول باید هنگام خروج از کارخانه خوب باشد. . ذخیره BTT). به عنوان مثال، یک تراشه NAND دارای 2048 بلوک، 2048*0.02=40.96 است، بنابراین تعداد بلوک های بد از 40 تجاوز نمی کند. اما در جایی که بلوک های بد ظاهر می شوند، خواه پیوسته باشند. یا تصادفی، هیچ تضمینی وجود ندارد.


2.5 تاثیر بلوک های بد بر بلوک های خوب

یک بلوک بد بر عملکرد بلوک های خوب تأثیر نمی گذارد زیرا توسط گیت های انتخابی از خطوط بیت جدا می شود.


2.6 تشخیص بلوک های بد

یک عملیات "پاک کردن" روی این بلوک ها انجام می شود که به عنوان "بلوک های بد" مشخص شده اند. اگر خطای Block Erase رخ دهد، ثابت می کند که بلوک یک بلوک بد واقعی است.


2.7 نکات مربوط به عملیات پاک کردن

در واقع، ما می توانیم بلوک های بد علامت گذاری شده را نیز پاک کنیم. پس از پاک شدن اجباری به این روش، اطلاعات بلوک بد دیگر وجود ندارد. برای بلوک های خراب کارخانه، معمولاً پاک کردن اطلاعات علامت گذاری شده توصیه نمی شود.

دستوری در UBOOT به نام "nand scrub" وجود دارد که تمام محتوای بلوک از جمله علامت بلوک بد را پاک می‌کند، چه علامت کارخانه یا علامت جدیدی که در فرآیند استفاده بعدی ظاهر می‌شود. به طور کلی استفاده از آن توصیه نمی شود. هنگامی که کارخانه NAND FLASH تولید می شود، بلوک های بد NAND در محدوده دما و ولتاژ نسبتاً وسیعی آزمایش و علامت گذاری می شوند. این بلوک های بد هنوز هم می توانند تحت یک دما یا ولتاژ خاص کار کنند، اما ممکن است در زمان دیگری که شرایط تغییر می کند، تغییر کنند. شکست، تبدیل شدن به یک بمب ساعتی بالقوه. اگر بلوک های بد مشخص شده توسط کارخانه اصلی پاک شوند، هنگام نوشتن و ذخیره داده ها به راحتی می توان با مشکل از دست دادن اطلاعات مواجه شد.

بهتر است از "nand erase" استفاده کنید تا فقط بلوک های خوب را پاک کنید، برای بلوک هایی که قبلاً بلوک های بد علامت گذاری شده اند، پاک نکنید.


3 مدیریت بلوک بد

کنترلر Device یا FLASH بلوک های بد را مدیریت می کند که BBM (Bad Block Management) است. این را بعدا اضافه خواهیم کرد.


تذکر دهید

1 چرا یک بلوک خوب با 0xff مشخص شده است: زیرا پاک کردن Nand Flash برای تغییر تمام بیت های بلوک مربوطه به 1 است، در طول عملیات نوشتن، هر بیت از تراشه فقط می تواند از 1 تغییر کند. به 0، اما نه. از 0 به 1 تغییر دهید. 0XFF به این معنی است که همه می توانند به 11111111 پاک شوند. این نشان می دهد که می توان آن را با موفقیت پاک کرد و بلوک خوبی است.

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

بیانیه حق چاپ: این مقاله یک مقاله اصلی توسط وبلاگ نویس CSDN "Alexander{{{0}}}Lai" است و از قرارداد حق نسخه برداری CC 4.0 BY-SA پیروی می کند. لطفا لینک منبع اصلی و این بیانیه را برای چاپ مجدد پیوست کنید.