不管磨损平衡算法如何聪明,在运作中都会碰到一个头痛的问题,那就是坏块,所以一个SSD必须要有坏块管理机制。何谓坏块?一个NAND块里包含有不稳定的地址,不能保证读/写/擦的时候数据的准确性。坏块分出厂坏块和使用过程中出现的坏块,和机械盘的坏块表一样(P表和G表),SSD也有坏块表。出厂坏块的话,在坏块上会有标记,所以很容易就能被识别,后期使用中出现的坏块就要靠主控制器的能力了,一般来说,越到NAND生命的后期(P/E数开始接近理论最大值),坏块就会开始大量出现了。一般来说NAND出厂都包含坏块,不过厂商有个最小有效块值(NvB-minimum number of valid blocks),拿Intel的34nm MLC L63B来说,1个die上4,096个块里至少要有3,936个块是好的,从这上面可以知道,虽然出厂的NAND可能有坏块,但是厂商保证在正常生命周期里,好块数不会低于3936个块。而且每个die的第一个块地址(00h)在出厂时是必须保证好的。(ECC后,这个块必须有效)。NAND出厂前都会被执行擦除操作,厂商会在出货前会把坏块标记出来(厂商会在坏块的第一个页的SA区上打上标记。) 这样坏块管理软件就能靠监测SA区标记来制作坏块表。SA区(页中4096~4319的区域,用户不可访问,主要用来存放ECC算法,坏块信息,文件系统资料等。)由于在使用中会产生坏块,所以SSD的每次编程/擦除/复制等操作后都要检查块的状态。对颗粒的ECC要求也要达到厂商的标准以上(主控强不强,看ECC能力也是一个参考)。坏块管理和平衡磨损算法是必须的。