依公知及经验整理,原创保护,禁止转载。
专栏 《深入理解NAND Flash》
<<<< 返回总目录 <<<<
全文 5000 字。
从底层物理原理上了解 Nand Flash。
1. 存储器诞生:
现代计算机使用存储器来存储数据,其中存储的是0和1。然后,通过ASCII码(美国信息交换标准代码)来将二进制数字翻译为人们日常生活中使用的信息。这些信息包括我们在计算机设备中常用的指令(如空格、回车等)、字母、数字和标点符号等。在1992年,Unicode(字符标准码)被发布,解决了ASCII码表达其他国家和地区语言的不足之处。通过不同排列组合的0和1,我们能够获取不同的信息并与人类进行交流。
为什么是二进制呢?
因为受限于当时甚至现在的技术,人们制造的场效应晶体管(FET)只有在区分关态和开态的时候,其灵敏度是最高的。如果我们在开和关之间引入其他的态,一般是用固定电压下的电流值来区分态,所以当外界环境比较恶劣时,容易引起电流不受控制的变大或变小(例如温度因素,半导体的本征载流子浓度严重依赖温度,温度较高时,本征载流子浓度迅速增大,电流会急剧升高,从而失去目的开关与放大作用,所以CPU等半导体器件运行,降温散热非常重要),从而致使计算机运行中对态的错误识别,态越多,其误码率也就越高。
一个完整的CPU应该包括控制单元,寄存器,ALU(算数逻辑单元),RAM(随机存取存储器)。当然这个RAM一般是独立存在的器件,通过数据线,地址线,读取线以及写入线连接CPU,这样的一个构造其实就可以运行很多计算机指令了,但是有一个问题就是,这个计算机只能在供电的情况下才能使用,断电后,就立马失去了运行的数据。那么为了解决这个问题,我们就发明了ROM(只读存储器),这种存储器可以将想要的CPU运行结果保留起来,即便是断电情况下,也可以长时间保存,比如你写的文档,下载的音乐、视频都可以长时间保存起来。这里存储器的一种分类方式就出来了,根据断电后数据能否长时间保存,我们将存储器分为易失性存储器和非易失性存储器。下面是我汇总的存储器基本分类思维导图。
Fig. 1 存储器基本分类
事实上, RAM和ROM的读操作几乎相同。更恰如其分地说有时把RAM称为读-写存储器。然而,人们一直开发ROM的重写能力。因此,现在RAM和ROM之间的主要差别在于擦除和可编程的频度和容易程度。RAM重写和读的机会总是相等的;而ROM的读的频率远大于重写。
这句话可能让大家对RAM以及ROM的认识更加清楚,由于RAM也是FET(场效应晶体管)构造,其读写能力是通过电刷新的,CPU中的控制单元会经常将指令存入RAM,从RAM中读取指令,所以其读写的频率基本相等。对于ROM,现在我们用的比较多的形式是NOR flash 和NAND flash,根据不同的场景,使用不同的存储器,Nor flash 多用于嵌入式系统;手机,PC,USB,一般是存放数据,这个数据我们的读取的次数一般比写入要多,但是写的频率还是比较高的,这里一般使用NAND flash,这个我们稍后将展示原因。
下文中存储器指的是 Flash 存储器
2. Flash原理:
NAND flash是在FET的基础上,增加一个浮柵上,通过将电子注入到浮栅上,实现编程。其基本构造如下:
Fig. 2 Flash 存储器基本单元
2.1 Flash理论
以上图为例,通过在n沟道FET栅极上偏置正(负)电压,在源漏沟道之间感应负(正)电荷,可以打开(关闭)源漏之间的电通道。这个打开源漏之间电流通道的电压叫做阈值电压 VT ,也就是沟道从平带到反型所需要的电压。那么在在栅极氧化层中再插入一个浮栅,当浮栅上充入电子时,此时由于电子的屏蔽作用,想要将n沟道FET打开,则需要更高的 VT 。我们把未注入电子时的 VT 叫做 VT1 ,把注入电子后的 VT 叫做 VT0 。试想一下,当我们用大于 VT1 小于 VT0 的电压 VT′ 去尝试开启FET,若这时电路被打开,则说明FET浮栅中未注入电子,若没有打开,则说明FET浮栅中注入了电子。我们知道在CPU逻辑电路中,开态表示‘1’,关态表示‘0’,沿用这个逻辑,浮栅上未注入电子,是开态,表示逻辑 ‘1’ ;浮栅上注入电子,是关态,表示逻辑‘0’。不要怀疑,这个和你的直觉的确相反,在这里,注入电子表示写入‘0’;擦除电子,表示写入了’1’。这种类型的存储器的原理概括成一句话就是,通过在浮栅上注入电子改变FET阈值电压 VT 来实现存储功能。
2.2 存储器两种编程方式
我们已经为存储器注入了灵魂,现在来铸造其肌肉,也就是如何实现注入、擦出电子的过程。注入电子主要有两种过程原理,一种是热电子注入,另外一种是F-N 隧穿(Fowler-Nordheim隧穿)。
NAND不能使用热电子注入的方式, NAND是F-N隧穿,NOR是热电子注入过程.
2.2.1 热电子注入
热电子注入就是在源漏之间加上一个电压,由于压降原理,在漏端附近电场强度达到最大值(因为源极一般接地),因此电子在电场作用中,在漏极附近能量最大,变成热电子,当其能量大于 Si/SiO2 界面势垒,电子就能越过势垒(经典力学),进入到浮栅,热电子在电场作用下,与晶格发生碰撞会形成二次电子,二次电子也能注入到浮栅上。为了让电子能够有效的注入到浮栅上,一般会在控制栅上加一个正偏压,形成三角形势垒(如下图),帮助电子注入到浮栅上,与此同时就会产生一个栅电流,有电流就会有功耗,这是一个弊端。
fig 3 热电子注入理论
2.2.2 F-N隧穿
另外一个方式就是F-N隧穿,根据量子力学理论,电子有几率可以隧穿比本身能量高的势垒。隧穿的几率严重依赖势垒的高度与宽度,在Flash中,这个势垒就是介电层,介电层一般是 SiO2 ,但是也有其他高介电常数的材料应用在存储器中。材料决定了,势垒高度就决定了,其厚度就变成唯一的参数,我们可以通过控制势垒的厚度来控制电子是否可以隧穿,起到开关的作用。
Fig. 4 量子隧穿
有了这样的理论,我们如何实现呢?好在控制栅可以帮助我们更改势垒厚度,还记得刘恩科《半导体物理学》中第八章MIS结构吗?控制栅加上电压,介电层能带会弯曲成为一个三角形势垒,这对电子来说,其势垒厚度就变窄了。所以我们可以通过控制栅来改变介电层势垒厚度,从而控制电子是否能够隧穿介电层进入浮栅。下图是示意图。左图表示控制栅加正偏压使得沟道电子隧穿底部介电层进入浮栅,完成编程‘0’(Program状态). 右图表示控制栅加负偏压使得浮栅电子隧穿底部介电层到沟道,完成编程‘1’(Erase状态)。
Fig. 5 F-N 隧穿机理
讲到这里,闪存存储器的底层原理就讲完了。总结一下,闪存存储器就是在FET的基础上,在介电层中增加一个浮栅,通过控制栅,改变电子注入到浮栅或是从浮栅上擦除,从而实现编程,注入电子表示编程写入‘0’,擦除电子表示编程写入‘1’。读取过程是通过在栅极偏置一个比未注入电子FET阈值电压稍高的电压,源漏之间通就是‘1’,断就是‘0’,刚好和写入对应。编程注入电子的过程分为两种,一种热电子注入,一种是F-N隧穿,但是擦除电子只有F-N隧穿。F-N隧穿中加在控制栅的电压很高远大于读取的电压,毕竟是要隧穿过去。这里讲的是浮栅器件,还有一种器件就是电荷俘获器件,对比与浮栅器件,这里的电子俘获层一般是氮化硅,电子主要俘获在氧化物-氮化物界面。打个比方,浮栅器件俘获的电子如水流一般,而电荷俘获器件如奶酪一般。其F-N隧穿是修正的F-N隧穿,首先隧穿一个很薄的梯形氧化层势垒,然后再是一个三角形氮化硅势垒。
3. 闪存存储器重要参数
基本介绍了一下闪存存储器的基本单元,再看看其中影响它的重要参数。一个存储器,我们看中什么?便宜,存储密度大,存储时间久,读写速度快,读写次数多。存储器小声BB:MMP,人类啊,什么都要好的,臣妾做不到啊。
便宜就不说了,需要采用低廉的材料,成熟的工艺(降低边际成本),而存储密度就需要先进的工艺技术。我们着重看看后面三个参数:
3.1 存储时间久
这个好理解,存储器无非存储的是‘1’和‘0’。‘1’还好说,就是浮栅上没有电子,前面说了想要注入电子,是需要很高的控制栅电压的,所以电子不会自发进入到浮栅上,从而消灭你的数据‘1’。麻烦的是数据‘0’,一旦电子注入到浮栅上后,即便我们不再对存储器进行擦除、写入过程,电子仍然会慢慢逃逸出去(浮栅上的电子化学势比较高),我们一般定义电荷量减小到初始值的50% 时,就称为数据丢失。这个时间可以用下面的公式得到:
ν : 介电弛豫频率,与材料本身性能有关,可理解为热平衡的时间的倒数
q :元电荷电荷量
ϕB :势垒高度
k :玻尔兹曼常数
T : 温度
从中可以看到势垒高度是最重要的参数,势垒高度由介电层的厚度决定。上面我们说的是存储器不再进行擦除与写入过程,这样电子逃逸时间大概是100年,也就是说,理论上,你将SSD写满数据后,然后再也不写入、擦除数据,这份数据可以放置100年。但实际上不太可能完全不擦除、写入。根据擦除、写入的频率,SSD的理论时间是10-30年不等,如果非常频繁,甚至3-5年就坏了。这是因为擦除、写入过程中浮栅下介电层里的化学键退化,导致介电作用减弱,数据保存的时间越来越短,直到最终不能使用。(以前认为擦除、写入过程会致使介电层变薄,最新研究指出并不会变薄,而是化学键退化,电子变得更加容易进出。)
3.2读写速度快
根据性能要求,我们当然希望存储器保存时间越久越好,那么就需要介电层厚度比较厚,但是厚了就有一个问题,编程时间会增加,因为势垒大了之后,隧穿电流会降低,因为编程是否成功是看浮栅上电荷的变化量,而一定数目电荷量是电流的时间积分,电流小了,时间自然就长了。所以为了平衡这两个关键参数,工业届会慢慢去优化介电层厚度,尽量去平衡这对欢乐冤家。下层介电层厚度一般在8 nm左右,上层厚度一般在14 nm左右。
3.3 读写次数多
最后一个参数就是编程次数,编程次数一定是和使用时间有关的,不谈时间的编程次数就是耍流氓。上面说了,每一次擦除、写入过程都会对介电层造成损耗,这是不可逆的。也就是说,擦写频率越高,寿命越短,擦写频率越低,寿命越长。我找了一篇论文,论文中的研究成果显示:若擦写次数在3000次以内,数据能够保存3年左右,若擦除次数在150000,那么数据就只能保存3天。当然并不是说擦写150000次后,就不能用了,你可以在3天之内,读取数据后,重新写入,就可以再用了,但是随着次数的增多,保存的时间会越来越短,看到没有,非易失存储器慢慢在向易失性存储器“进化”。为了解决这样的问题,目前只有从软件层面去解决,通过优化算法代码,降低存储器的擦写频率,从而提高寿命。
参考:
3D Nand基本原理 3D Nand基本原理-你想知道的全在这里(上) - 知乎
参考