SSD坏块管理

原创内容,转载请注明:  [http://www.ssdfans.com]  谢谢!

//
function click()
{
   if(event.button==2)
{
alert(‘禁止右键点击!’)
}
}
document.onmousedown=click
//

坏块来源

 

  • 出厂坏块 (Factory bad block):Flash从工厂出来,就或多或少的有一些坏块。一般来说,出厂坏块率为2%-10%,再坏的话,出厂的时候就被淘汰了。
  • 增长坏块 (Grown bad block):随着Flash的使用,一些初期好块也会变成坏块。变坏的原因,主要是擦写磨损导致的。

 

坏块识别

 

Flash厂商在Flash出厂时,会对出厂坏块做特殊标记。一般来说,刚出厂的Flash都被擦除,里面的数据是全0xFF。但是对坏块来说,Flash厂商会打上不同的标记。拿Toshiba某型号Flash来说,它是这样标记出厂坏块的:

它会在出厂坏块的第一个Page和最后一个Page的数据区第一个Byte和Spare区第一个Byte写上一个非0xFF的值。

用户在使用Flash的时候,首先应该按照Flash文档,扫描所有的Block,把坏块剔除出来,建立一张坏块表。还是拿上面Flash来说,Toshiba建议按照下面的流程来建立坏块表:

还有些Flash厂商,它会把坏块信息存储在Flash内部某个地方(掉电不丢失),用户在建立坏块表的时候,没有必要扫描所有的Block来识别坏块,只需读取Flash的那个特定区域。

对增长坏块而言,它的出现会通过读写擦等操作反映出来。比如读到UECC (Uncorrectable Error Correction Code, 数据没有办法通过ECC纠错恢复),比如擦除失败,比如写失败,这都是一个坏块出现的反映。用户应该把这些坏块加入坏块表,不再使用。

坏块管理策略

 

一般有两种策略对付坏块,一是略过(Skip)策略,而是替换(Replace)策略。

  • 略过策略:用户根据建立的坏块表,在写Flash的时候,一旦遇到坏块,跨过它,写下一个Block。

    SSD的存储空间是Flash阵列,一般有几个并行通道,每个通道上连接了若干个Flash。以上图为例,该SSD有四个通道,每个通道上挂了一个Flash(只有一个Die)。

    SSD的固件 (Firmware) 向四个Die依次写入。假设Die1上有个Block B是坏块,若FW采取坏块略过策略,则写完Block A时,接下来便会跨过Block B写到Die 2 的Block C上面去。

  • 替换策略:与略过策略不同,当某个Die上发现坏块,它会被该Die上的某个好块替换。用户在写数据的时候,不是跨过这个Die,而是写到替换块上面去。采用此策略,除正常用户使用的Block,还需额外保留一部分好的Block,用于替换用户空间的坏块。整个Die上Block就划分为两个区域:用户区域和预留区域:

    还是以上面的情况为例:

    用户写入数据时,当碰到坏块B,它不会略过Die 1不写,而是写入到Block B 的替换者 Block B’上面去。

    采用替换策略,SSD固件内部需维护一张映射表:坏块到替换块的映射,比如上图的B->B’。

 

两种坏块管理策略,没有谁优谁劣,取决于SSD的软硬件架构。在此提这两种策略,只是给设计者一个 参考。但需要提到的是,替换机制策略有一个致命点,那就是如果某个Die坏了(所有Block不可用,或者可用的很少),那么,整个SSD就废了!因为在那个Die上,找不到好块来替换坏块,用户数据无处可写!

 

替换策略有木桶效应,你也许会说,既然这样,那就采用略过策略吧。但是,对某些SSD控制器来说,它只支持替换策略。还是那句话,哪种策略适合你SSD的软件硬件架构,就用哪种吧。

分类目录 SSD, 技术文章.
扫一扫二维码或者微信搜索公众号ssdfans关注(添加朋友->点最下面的公众号->搜索ssdfans),可以经常看到SSD技术和产业的文章(SSD Fans只推送干货)。
ssdfans微信群介绍
技术讨论群 覆盖2000多位中国和世界华人圈SSD以及存储技术精英
固件、软件、测试群 固件、软件和测试技术讨论
异构计算群 讨论人工智能和GPU、FPGA、CPU异构计算
ASIC-FPGA群 芯片和FPGA硬件技术讨论群
闪存器件群 NAND、3D XPoint等固态存储介质技术讨论
企业级 企业级SSD、企业级存储
销售群 全国SSD供应商都在这里,砍砍价,会比某东便宜20%
工作求职群 存储行业换工作,发招聘,要关注各大公司招聘信息,赶快来
高管群 各大SSD相关存储公司高管和创始人、投资人

想加入这些群,请微信扫描下面二维码,或搜索nanoarchplus,加阿呆为微信好友,介绍你的昵称-单位-职务,注明群名,拉你进群。SSD业界需要什么帮助,也可以找阿呆聊。