故障區塊管理是什麼?
故障區塊管理(Bad Block Management)可偵測及標記出快閃記憶體中故障區塊,並事先預留備用區塊,以便在區塊故障時加以替補,如此可防止資料再度被寫入故障區塊中,進而提高產品耐用度。
兩種故障區塊
快閃記憶體的故障區塊分為兩種類型:出廠時固有的故障區塊(Early Bad Blocks)和使用後產生的故障區塊(Later Bad Blocks)。固有故障區塊多於製程中產生,通常占總容量的1%。這類型的故障區塊囿於技術因素無可避免。反之,使用故障區塊隨著快閃記憶體的使用時間拉長、寫入及抹除次數增加而自然發生,記憶體中約有7%的容量會預先被劃分出來,作為日後替補這類故障區塊的保留區。
故障區塊管理如何運作?
就固有故障區塊來說,我們初次使用一個全新的快閃記憶體時,控制器內建的程式便會建立一張故障區塊表(Bad Block Table),然後程式會逐一檢查各個區塊。一旦發現故障,程式就會將該故障區塊資訊標記於故障區塊表當中,以避免資料再次寫入至該區。使用故障區塊則隨著記憶體使用次數增加逐漸產生。此時控制器若檢查出故障區塊,也會將該資訊新增至故障區塊表內,並將故障區塊中儲存的資料轉移至可用區塊,以免資料遺失。如下圖。
如圖所示,控制器會先對無法寫入資料的區塊執行自動錯誤校正 (Error Correction Code,ECC)。如果執行失敗,有效資料就會被轉移至預留的區塊。轉移後,控制器會標記該故障區塊並將之記錄於故障區塊表,以確保資料不再寫入至該故障區塊。
結語
由於正常區塊會隨著抹寫而耗損,需要時不時檢查記憶體中哪些區塊已失效,然後將它們以新區塊替換之。現代記憶體具備故障區塊管理之功能,可延長記憶體使用年限、增進耐用度,並減少讀寫錯誤發生的機率。故障區塊管理乃是記憶體不可或缺的功能。