看了不少壞塊管理的文章,加上本身的理解,把整個壞塊管理作了個總結。緩存
又叫初始壞塊,廠商會給點最小有效塊值(NVB,mininum number of valid blocks)。app
使用過程當中由於磨損形成的新增壞塊,或者使用壞塊。blog
異常掉電等緣由被主控誤判的假性壞塊。it
掃描廠商指定地址所對應的byte是否有0xFF標誌,若沒有0xFF則爲壞塊。io
(1)當執行擦除指令時出錯;垃圾回收
(2)當執行寫命令時出錯;im
(3)當執行讀取命令時出錯,並且bit的錯誤超過ECC的糾錯能力;總結
那麼,該Block將被判斷爲壞塊。數據
對出廠壞塊和新增壞塊集中(或分別)管理。異常
出廠壞塊被標識在SA區中;在讀取閃存內全部的SA區域後,壞塊表就被創建;當壞塊表建立後,主控會把壞塊表保存在某個好的塊裏,每次重啓後,主控會從那個塊裏把表調用進緩存(SDRAM)裏。
(1)用1bit標識:0表示好塊,1表示壞塊;
(2)用2bit標識:00表示好塊,01表示Program失敗的壞塊,10表示Read失敗的壞塊,11表示Erase失敗的壞塊。
因爲在使用中會產生壞塊,因此SSD的主控在每次寫入、擦除、讀取等操做後都要檢查塊的狀態;其中刪除操做前也須要檢查塊的狀態,由於壞塊信息被擦除以後沒法恢復,因此不建議擦除壞塊,擦除前需確保不是壞塊。
(1)壞塊跳過策略:遇到壞塊跳過,存放進好塊裏。
(2)壞塊替換策略:替換以後,FTL會將壞塊地址從新映射到好塊地址。
基於NAND Flash來說,用SA區中的好塊替換壞塊。Spare Area(SA區)通常用來標記壞塊,和保存對main區數據的ECC校驗碼。是基於NAND Flash的概念。
基於SSD來說,用OP中的free block替換壞塊。Over Provisioning(OP,預留空間)不單單只是用來保證垃圾回收的正常完成,還存儲着SSD內部的系統數據(包括:出廠壞塊信息、SSD固件、Mapping Table等)。是基於SSD的概念。
OP大小爲全部64bytes的總和。