闪存物理结构
闪存器件原理
前文已经讲过了固态硬盘的发展史,曾经的固态硬盘有过RAM等介质,但是目前绝大多数固态硬盘都是以闪存芯片为存储介质的。DRAM固态硬盘我们见得少,主要应用于特殊的场合。1978年诞生的世界上第一块固态硬盘就是基于DRAM的。但由于DRAM掉电易失性,当然还有成本因素,现在的固态硬盘一般都不用DRAM,而是使用闪存作为存储介质,并且是NAND 闪存。固态硬盘的工作原理很多也都是基于闪存特性的。比如,闪存在写之前必须先擦除,不能覆盖写,于是固态硬盘才需要垃圾回收(Garbage Collection,或者叫 Recycle);闪存每个块(Block)擦写次数达到一定值,这个块要么变成坏块,要么存储在上面的数据不可靠,所以固态硬盘固件必须做磨损平衡,让数据平均写在所有块上,而不是盯着几个块拼命写(不然很快固态硬盘就报废了)。还有类似很多例子,固态硬盘内部很多算法都是在为闪存服务的。所以,欲攻固态硬盘,闪存首当其冲。
闪存是一种非易失性存储器,也就是说,掉电了,数据也不会丢失。闪存基本存储单元 (Cell) 是一种类NMOS的双层浮栅 (Floating Gate) MOS管组成,如图3-1所示:
图3-1 浮栅晶体管结构
在源极(Source)和漏极(Drain)之间电流单向传导的半导体上形成贮存电子的浮栅,浮栅上下被绝缘层所包围,存储在里面的电子不会因为掉电而消失,所以闪存是非易失存储器。
写操作是在控制极加正电压,使电子通过绝缘层进入浮栅极。擦除操作正好相反,是在衬底加正电压,把电子从浮栅极中吸出来,如图3-2所示:
图3-2 左:写原理;右:擦除原理
在2014年的闪存峰会上,浮栅晶体管的发明人施敏(Dr.Simon Sze)被授予终身成就奖,以表彰他发明了浮栅极晶体管。据说,浮栅极晶体管的发明灵感是这样来的:有天,施敏和搭档Dawon Kahng在公司的食堂一起吃午餐,饭后甜点是奶酪蛋糕。看着夹心蛋糕,他们在想,如果在MOS场效应管中间加个东西,会怎样呢?于是,浮栅晶体管横空出世。截至2014年某个时间点,据统计,全世界生产的浮栅晶体管数目达1 074 344 929 692 350 000 000
这个数字还在继续增长着。阿呆觉得终身成就奖不够,施敏应该获得诺贝尔奖,毕竟机械硬盘机理——巨磁阻效应的发现人已经获得了诺贝尔奖。
获奖后,施敏在庆功宴上,为自己点了一份奶酪蛋糕。
SLC,MLC,TLC
一个存储单元存储1比特数据的闪存,我们叫它为SLC (Single Level Cell),2比特为MLC (Multiple Level Cell) ,3比特为TLC (Triple Level Cell)。现在已经有厂商在研发QLC,即一个存储单元存储4比特数据,本书不做介绍。
图3-3 SLC,MLC,TLC原理
对SLC来说,一个存储单元存储两种状态,浮栅极里面的电子多于某个参考值的时候,我们把它采样为0,否则,就判为1。
图3-4是闪存芯片里面存储单元的阈值电压分布函数,横轴是阈值电压,纵轴是存储单元数量。其实在0或1的时候,并非所有的存储单元都是同样的阈值电压,而是以这个电压为中心的一个分布。读的时候采样电压值,落在1范围里面,就认为是1;落在0范围里面,就认为是是0。
擦除之后,闪存读出来的值为1,充过电之后,就是0。所以,如果需要写1,就啥都不用干,写0,就需要充电到0。
图1-4 SLC电压分布(来源:Inside NAND Flash Memory)
对MLC来说,如果一个存储单元存储4个状态,那么它只能存储2比特的数据。通俗来说就是把浮栅极里面的电子个数进行一个划分,比如低于10个电子,判为0;11-20个电子,判为1;21-30,判为2;多于30个电子,判为3。
图1-5 MLC电压分布(来源:Inside NAND Flash Memory)
依次类推TLC,若是一个存储单元有8个状态,那么它可以存储3比特的数据,它在MLC的基础上对浮栅极里面的电子数又进一步进行了划分。
图1-6 TLC电压分布(来源:Inside NAND Flash Memory)
同样面积的一个存储单元,SLC,MLC和TLC,分别可以存储1,2,3 比特的数据,所以在同样面积的DIE上,闪存容量依次变大。
但同时,一个存储单元电子划分的越多,那么在写入的时候,控制进入浮栅极的电子个数就要越精细,所以写耗费的时间就越长;同样的,读的时候,需要尝试用不同的参考电压去读取,一定程度上加长读取时间。所以我们会看到在性能上,TLC不如MLC,MLC不如SLC。
下表所示是SLC,MLC和TLC在性能和寿命(Endurance)上的一个直观对比
(不同制程和不同厂家的闪存,参数不尽相同,数据仅供参考):
闪存类型 | SLC | MLC | TLC |
---|---|---|---|
每单元比特数 | 1 | 2 | 3 |
擦写次数 | ~10万次 | ~5000次 | ~1000次 |
读时间 | ~25微秒 | ~50微秒 | ~75微秒 |
写时间 | ~300微秒 | ~600微秒 | ~900微秒 |
擦除时间 | ~1500微秒 | ~3000微秒 | ~4500微秒 |
3D TLC逐渐成为主流。同时,QLC也马上要量产了,每个存储单元存储4比特数据,比TLC还要慢,还要不可靠。之前怀疑TLC可靠性的人们,怎么看QLC?
本文节选自《深入浅出SSD:固态存储核心技术、原理与实战》一书