如何成为一个具有领导力的SSD主控?
如何成为一个具有领导力的SSD主控?
之前的文章中,已经偷偷的分享了SSD主控的成功秘诀:
1. 针对Host和NAND闪存采用不同的安抚策略(Interface/protocol);
2. 高效的处理Host和NAND闪存之间的数据传输,并保证数据的完整性。
此时还是很有必要再一次把SSD主控架构图请出来(最近出镜率有点高哈,这一次应该是最后一次麻烦TA老人家咯):
SSD主控的梦想就是实现以下功能:
1. 磨损平衡(Wear-leveling)
2. 垃圾数据回收(Garbage Collection)
3. 坏块管理(Bad Block Management)
4. 数据纠错处理(ECC, Error Correction Code)
SSD主控的想法是好,但是理想和现实总是有或多或少的差距,现实是Host的愿景跟NAND闪存的本性有了冲突。
在逆境境中才能检验SSD主控的真实领导力,SSD主控大胆的启用了逻辑与物理转换层(logical to physical)的概念,也称为闪存转换层 (FTL,Flash Translation Layer)。
有了闪存转换层FTL这一秘密武器,SSD主控可以轻松实现自己的梦想。
1. 磨损平衡(Wear-leveling,WL)
在现实应用过程中,SSD主控在NAND闪存写入数据时,并非均匀等机会的写入NAND闪存的每一个区块(Block)。
为了最大化的延长SSD的存储寿命,闪存转换层FTL引入磨损平衡(Wear-leveling)技术,尽量使NAND闪存的每一个Block/Page寿命均衡化。
在Host对同一逻辑区块更新数据时,SSD主控会动态的指向不同的物理区块,之前的物理区块标记为“无效”,进入等待保养状态,这样就可以确保每一个物理区块都被使用。
用更通俗的话来讲就是,每次写入的时候挑年轻力壮的区块, 年老的区块则颐养天年。
2. 垃圾数据回收(Garbage Collection, GC)
垃圾数据回收GC技术, 类似于平时我们电脑、手机内存整理优化的概念。
3. 坏块管理(Bad Block Management,BBM)
在终端客户使用的过程也会不断产生坏块,SSD主控会及时更新坏块表单。
4. 数据纠错处理(ECC, Error Correction Code)
NAND闪存不能保证数据在整个生命周期里都不出错,NAND闪存一般不会整个Block或Page全部出错,只是其中的一个或者几个bit出错,如果直接将整个Block标记为坏块,那实在是太浪费了(罪过,罪过~~~)。
数据纠错处理(ECC, Error Correction Code)技术可以纠正一定数量的错误bit。目前SSD主控基本通过硬件的方式实现,主流的SSD ECC纠错技术主要有BCH编码和LDPC编码。
1. S.-W. Lee, D.-J. Park, T.-S. Chung, D.-H. Lee, S.-W. Park, H.-J. Songe, FAST: A log-buffer
based FTL scheme with fully associative sector translation, in 2005 US-Korea Conference on
Science, Technology, & Entrepreneurship, Seoul, Aug 2005
2. R. Micheloni, A. Marelli, R. Ravasio, Error Correction Codes for Non-Volatile Memories
(Springer, Dordrecht, 2008)