• 坏块管理(Bad Block Management,BBM)


      看了很多坏块管理的文章,加上自己的理解,把整个坏块管理做了个总结。

    坏块分类

    1、出厂坏块

      又叫初始坏块,厂商会给点最小有效块值(NVB,mininum number of valid blocks)。

    2、新增坏块

      使用过程中因为磨损造成的新增坏块,或者使用坏块。

    3、假性坏块

      异常掉电等原因被主控误判的假性坏块。

    坏块判断

    1、对于出厂坏块的判断

      扫描厂商指定地址所对应的byte是否有0xFF标志,若没有0xFF则为坏块。

    2、对于新增坏块的判断

    (1)当执行擦除指令时出错;

    (2)当执行写命令时出错;

    (3)当执行读取命令时出错,而且bit的错误超过ECC的纠错能力;

    那么,该Block将被判断为坏块。

    坏块管理

    1、建立和更新坏块表(Bad Block Table)

      对出厂坏块和新增坏块集中(或分别)管理。

      出厂坏块被标识在SA区中;在读取闪存内所有的SA区域后,坏块表就被建立;当坏块表创建后,主控会把坏块表保存在某个好的块里,每次重启后,主控会从那个块里把表调用进缓存(SDRAM)里。

    2、坏块表内容

    (1)用1bit标识:0表示好块,1表示坏块;

    (2)用2bit标识:00表示好块,01表示Program失败的坏块,10表示Read失败的坏块,11表示Erase失败的坏块。

    3、坏块不建议擦除

      由于在使用中会产生坏块,所以SSD的主控在每次写入、擦除、读取等操作后都要检查块的状态;其中删除操作前也需要检查块的状态,因为坏块信息被擦除之后无法恢复,所以不建议擦除坏块,擦除前需确保不是坏块。 

    4、坏块管理策略

    (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的总和。

  • 相关阅读:
    [Android]SharedPreferences
    [Android]XML界面布局常用属性概括
    [Android]XML解析技术
    [Android]Layout标签之-viewStub,requestFocus,merge,include
    [Android]JSON
    [Android]SQLite基本控制台命令简介
    [Android]流文件
    [HTML5]WebSQLDatabase-关系型数据库简介
    [Android]ADB和NavicatLiteSQLDBmanager的数据管理
    [Android]SqliteOpenHelper抽象类实现SQL_DB的管理
  • 原文地址:https://www.cnblogs.com/Christal-R/p/7262503.html
Copyright © 2020-2023  润新知