一. 闪存物理结构
固态硬盘的工作原理很多是基于闪存特性的。比如闪存在写之前必须先擦除,不能覆盖写,于是固态硬盘才需要垃圾回收;闪存每个块擦写次数达到一定值后,这个快要么变成坏块,要么存储在上面的数据不可靠,所以固态硬盘固件必须做磨损平衡,让数据平均写在所有块上,而不是盯着几个块拼命写(不然盘很快就废了)。还有很多例子,固态硬盘内部很多算法都是在为闪存服务。
1.1 闪存原理
闪存是一种非易失性存储器,也就是掉电了数据也不会丢失。闪存基本存储单元(cell)是一种类NMOS的双层浮栅(Floating Gate)MOS管。
在源极(Source)和漏极(Drain)之间电流单向传导的半导体上形成存储电子的浮栅,浮栅上下被绝缘层包围,存储在里面的电子不会因为掉电而消失,所以闪存是非易失性存储器。
写操作是在控制极加正电压,使电子通过绝缘层进入浮栅极。擦除操作正好相反,是在衬底加正电压,把电子从浮栅极中吸出来。
1.2 SLC、MLC、TLC
一个存储单元存储1bit数据的闪存,我们叫它为SLC(Single level cell),存储2bit数据的闪存为MLC(Multiple level cell),存储3bit数据的是TLC。还有厂商在研发QLC。
闪存芯片里面存储单元的阈值电压分布函数,横轴是阈值电压,纵轴是存储单元数量。其实在0或1的时候,并非所有的存储单元都是同样的阈值电压,而是以这个电压为中心的一个分布。读的时候采样电压落在1范围里,就认为是1;落在0范围就认为是0。
SLC电压分布:
擦除之后,闪存读出来的值为1,充过电之后,就是0。所以,如果需要写1,就什么都不用干;写0,就需要充电到0。
对MLC来说,如果一个闪存单元存储4个状态,那么它只能存储2bit的数据。通俗来说就是把浮栅极里面的电子个数进行一个划分,比如低于10个电子判0;11-20个为1;21-30个为2;多余30个为3。
MLC电压分布:
以此类推,TLC若是一个存储单元有8个状态,可以存3bit的数据:
同样一个面积的存储单元,SLC, MLC, TLC分别可以存1b, 2b, 3b的数据,所以在同样面积的DIE上,闪存容量依次变大。
同时,一个存储单元电子划分得越多,写入的时候&#