作为SSD主要元件的NAND闪存,我们经常见到的有SLC和MLC两种,甚至还细分出eSLC和eMLC等等,现在我们谈一下他们之间的区别。
SLC全称single-level cell,即单阶存储单元;MLC全称Multi-level cell,即多阶存储单元。因NAND闪存是一种电压元件,因此它以不同的电压范围来代表不同的数据,原理如下面图片所示:
SLC就是在NAND闪存的每个存储单元里存储1bit的数据,存储的数据代表”0”还是”1”是由基于Vth电压阈值来判定,对于 NAND闪存的写入(编程),就是对其充电,使得它的电压超过上图的电压判定点A,存储单元就表示0-已编程,如果没有充电或者电压阈值低于那个A点,就表示1-已擦除。
MLC则是每个存储单元里存储2bit的数据,存储的数据是”00”,”01”,”10”,”11”也是基于电压阈值的判定,当电压没到判定点B时,就代表”11”,当电压在B和C之间,则代表“10”,电压在C和D之间,则表示”01”,而电压达到D以上,则表示”00”。由上面的图片可以看到,MLC相比SLC电压之间的阈值被分成了4份,这样肯定会直接影响性能和稳定性,相对来说,主要受影响的有以下四点:
1.相邻的存储单元间会互相干扰,造成电压不稳定而出现bit错误,MLC由于阈值相比SLC更接近,所以出错几率会更大。
2.MLC读写性能降低,写入更达到50%的差距以上,因为需要更精确的充电处理。SLC只有”0”和”1”,,而MLC会有“00”,“01“,”10”,”11” 4个状态,在充电后还要去判断处于哪个状态,速度自然就慢了。
3.如上所说,因为有额外的读写压力,所以功耗明显增大。
4.同样因为有额外的读写压力,造成闪存的写入耐久度和数据保存期都受到影响。
前面说过SLC和MLC的区别,那eSLC和eMLC又是怎么一回事呢?
在NAND Flash工厂制造处理过程中,厂商把晶元上最好的那部分Flash晶片挑选出来并用企业级的标准来检测晶片的数据完整性和耐久度。检测完成后,这些晶片被取下来改变内部参数并进行之后的比标准MLC更苛刻的测试。当这些晶片通过测试后,就被定义为eMLC级别组,余下的就成为MLC级别组了。同理eSLC就是从SLC晶元上挑出来的优质晶片经过内参调整和企业级标准筛选的产物。
相对普通MLC来说,eMLC的不同之处主要体现在下面4个方面:
1.标称P/E数,34nm镁光的eMLC是30,000次,而MLC则是5000次。
2.eMLC擦写操作和编程操作所需要的时间相比MLC更长。(通过内参调整达到增加P/E的目的)
3.当使用完厂商保证的P/E数后,eMLC的数据保存期一般在3个月,而MLC的数据保存期在1年。
4.相对在的企业级应用下,使用eMLC的稳定性比MLC要高得多,也就是出错的概率更小。