找回密码
 请用中文注册用户!

QQ登录

只需一步,快速开始

查看: 1502|回复: 0

BBM(Bad Block Management)坏块管理

[复制链接]
雷龙发展 发表于 2018-7-18 09:36:04 | 显示全部楼层 |阅读模式

注册登录后可以在线提问,行业从业者将帮助您解答!

您需要 登录 才可以下载或查看,没有账号?请用中文注册用户!

×
不管WL算法如何高明,在使用中都会碰到一个头痛的问题,那就是坏块,所以一个SSD必须要有坏块管理机制。何谓坏块?一个闪存块里包含有不稳定的地址,不能保证读/写/擦时数据的准确性。
BBM块坏管理2.png       
        坏块分出厂坏块和使用过程中出现的坏块,SSD有坏块表来管理坏块。出厂坏块在上面会有标记,所以很容易就能被识别,而使用中出现的坏块就要靠主控的能力了。一般来说,越到闪存生命的后期(P/E数开始接近理论最大值),坏块就会开始大量出现。
        一般来说闪存出厂都包含坏块,不过厂商有个最小有效块值(NvB-minimum number of valid blocks),以Intel的34nm MLC L63B来说,1个die(裸晶,详细解释见备注)上4,096个块里至少要有3,936个块是好的。从这上面可以知道,虽然出厂的闪存可能有坏块,但是厂商保证在正常的生命周期里,好块数量不会低于3936个块。而且每个die的第一个块地址(00h)在出厂时是必须保证完好的。(ECC后,这个块必须有效,ECC相关知识后面会有介绍)。闪存出厂前都会被执行擦除操作,厂商会在出货前会把坏块标记出来(厂商会在坏块的第一个页的SA区打上标记,SA区知识将在后面ECC部分介绍)这样坏块管理软件就能靠监测SA区标记来制作坏块表。由于在使用中会产生坏块,所以SSD的主控在每次写入/擦除/复制等操作后都要检查块的状态。对颗粒的ECC要求也要达到厂商的标准以上(主控强不强,看ECC能力也是一个参考)。坏块管理算法是必须的,坏块并不会影响好块的性能。
        坏块的标记和管理: 刚出厂的颗粒内部已经被完全擦除过(全盘区块数据为FFh),坏块在出厂时也被标记上了。以MLC来说,颗粒内任何块里最后页的SA区首个字节数据非FFh的话,那就是坏块。
        主控必须在每次擦除前读取一下坏块信息,因为坏块信息是可以被擦除的并且不能在擦除后恢复,所以建议不要去擦除原始的坏块信息。在读取闪存内所有的SA区域后,坏块表就被建立。纯靠自己的坏块识别方法而不使用原厂提供的SA区域坏块信息创建的坏块表是不严谨的做法,因为在原厂测试中,坏块可能是在某些特定环境下才会出现,所以有可能在自行的检测中被遗漏掉。
        当坏块表创建后,主控会把坏块表保存在某个好的块里,每次重启后,主控会从那个块里把表调用进缓存(RAM)里。坏块表中定义的地址是不能被访问的,所以当系统想去访问这个块的地址时,FTL会重新把它映射到好的块地址上去。
        块的替换: 在闪存的生命周期中,坏块会逐渐增多。闪存设备上有个状态寄存器,它的作用就是检测操作是否正确完成。当进行写入或擦除操作,状态寄存器检测到错误时,即可判定当前的块为坏块。
        鉴于闪存的写入是以页为单位操作的,操作时可能影响到整个块里其它页的数据,所以当状态寄存器发现写入出现错误时,坏块管理程序就能够用好的块替换这个坏块,重新在新的好块里写入这个数据,并把检测到的坏块里其余的有效页数据全部复制到新的块里去,标记老的块为坏块,更新坏块表里的地址,把原本坏块的地址重新映射到新的好块里。(坏块管理流程见下图)
       BMM坏块管理1.png
       深圳雷龙发展有限公司从事NANDFLASH行业10+年.目前代理ATO Solution小容量SLC NAND,SPI NAND,MCP等。想了解更多请咨询扣二八伍二扒二陆扒六八;电话一三陆玖一玖八二一零柒
      

本版积分规则

QQ|返回首页|有问题扫码关注公众号|LED控制卡 ( 鲁ICP备18053106号 鲁公安网备案号37170202666047 ) keywords:LED显示屏 LED控制卡 LED显示屏配件 麒麟电子

GMT+8, 2024-11-23 17:41

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表