NAND Flash是一种非易失性存储设备,具有容量大、体积小、功耗低等优点,自 1989 年东芝公司首次提出以后,被广泛地应用于各种存储卡、电子设备、固态硬盘(SSD)之中。在便携式设备存储容量不断增加的推动下,NAND Flash 的市场需求也越来越强劲。
NAND Flash单元
NAND Flash单元采用浮栅晶体管,其基本示意图如图所示,与普通的CMOS晶体管不同,浮栅晶体管包含两个栅极,分别是控制栅和浮栅。控制栅与外部连接;浮栅作为电荷存储层由氧化层包围,相当于势阱,捕获的电子不会轻易逃出。初始状态下,浮栅中不存在电子,控制栅电压作用在衬底上,浮栅晶体管的阈值电压较低。当浮栅中捕获电子时,作用在衬底上的控制栅电压降低,阈值电压升高。浮栅中存储的电荷越多,阈值电压越高。目前,控制浮栅中电子数量的两种方式分别是:沟道热电子注入(Channel Hot Electron Injection,CHEI)机制和量子遂穿(Fowler-Nordheim Tunneling)。
沟道热电子注入机制:源漏之间存在的强电场使源端电子(多子)向漏极加速运动,并在靠近漏结的地方高速撞击耗尽区离子,产生热电子,高能量的热电子可越过与浮栅层之间的薄氧化层势垒。控制栅高压越高,向浮栅方向运动的热电子越多,浮栅捕获的电子越多。缺点是在某些位置产生过多的缺陷和退化,NOR Flash编程操作采用该机制。
量子遂穿(FN 遂穿)原理:控制栅接高电压,源漏端接地,强电场作用使耗尽区的电子(少子)以一定的几率穿过薄氧化层势垒,被浮栅层捕获。相反,也可通过将源端置为高电压,漏端开路,控制栅接地的方式,利用源端与浮栅之间强电场作用使电子遂穿到源端。NAND Flash 编程和擦除操作应用该机制。与沟道热电子注入机制相比,量子遂穿的效率相对较低,所需的时间较长,但电流较小,稳定性好。
Nor Flash和Nand Flash对比
根据存储单元的连接方式,Flash分为两种类型,一是美国的英特尔(Intel)公司提出NOR Flash,另一个是日本东芝(Toshiba)公司提出的NAND Flash。NOR Flash相同位线(Bit Line)上的所有存储单元并联在一起,每个存储单元具有独立的源端和漏端选择线,如图所示。其优势是存储单元的驱动电流比较大,因此读取数据的速度相当快(一般在一百纳秒以下),可靠性好,且能够随机读取存储单元。但是NOR Flash要求每个存储单元的漏端都要与位线相连,因此在相邻的存储单元之间需制作一个接触孔,接触孔自身以及其他工艺步骤将会占用很大的物理空间,使每个存储单元的面积较大,限制了其存储密度的增加。
1988年,Masuoka等研究人员提出了 NAND Flash,同NOR Flash相比,NAND Flash阵列中的存储单元串联在一起,存储单元之间共用相同的源线(Source Line)和位线(Bit Line),并且共用一个接触孔与位线相连接,如图所示。由于接触孔的大量减少了,NAND Flash 的存储单元所占用的空间面积明显缩小,从而极大地提高了存储密度。但是串联方式带来电压漂移、串扰等可靠性问题,通常NAND Flash的电路中具有检纠错码 (Error Correcting Code,ECC)设计以提高可靠性,这也在一定程度上增加了电路设计的复杂性。
NOR Flash和NAND Flash结构上的不同导致它们操作方式上特点的不同,进而决定了它们具有不同的读取(Read)、编程(Program)和擦除(Erase)速度。因此,NOR Flash和NAND Flash主要的应用领域也有所不同。NOR Flash由于读取速度快的特点,主要用于各种电子系统中的代码存储。NAND Flash更多的用于大规模的数据存储,如U盘、固态硬盘(SSD)以及各种存储卡等需求较高存储密度的设备。另外,视频、图片等多媒体文件一般是顺序存储和读取的,因此常使用“预读取”、“纠错码”等方法提高NAND Flash读取速率和可靠性。
NAND Flash阵列
下图所示为NAND Flash的阵列及其外围电路,NAND Flash的存储单元串联成NAND存储串(NAND String),NAND存储串的一端连接到共源线(Source Line),另一端通过位线BL(Bit Line)连接到页缓存器,其中页缓存器采用上下两边排放,这与页缓存器的面积和长宽相关,同一条字线连接的存储单元组成页(Page)。
Nand Flash名词解释
(1)SLC(Single Level Cell):表示一个存储单元存储一比特数据,存储状态非“0”即“1”。“0”表示存储单元处于编程态,“1”表示存储单元处于擦除态。
(2)MLC(Multi-Level Cell):表示一个存储单元存储两比特数据,两比特数据分别是“11”、“10”、“00”、“01”(称为编程编码),即包含四个存储状态, “11”表示存储单元处于擦除态,“10”、“00”、“01”表示三个不同的编程态“P1”、“P2”、“P3”,编程算法不同,编程态对应的编程编码也不同。
(3)工作窗口(Working Window):与读取电流阈值相关,定义为IREADTH_MAX和IREADTH_MIN的差值,如下所示:
其中∆V表示结点SO的电压变化值,TEVAL表示读取操作中的评估时间,CBL_MAX和CBL_MIN表示位线电容的最大值和最小值。
(4)操作电压(Operation Voltage):对存储器执行编程(Program)、擦除(Erase)和读取(Read)等操作时施加的电压偏置。除此之外,根据需求还有很多种操作电压,通过存储器的外围电路(如电荷泵)来提供不同的电压幅值。这在一定程度上增加了存储器外围电路的设计难度,且过高的操作电压也会影响器件本身的可靠性。
(5)读裕度(Read Margin):体现了不同的信息存储状态阈值电压之间的区分程度。较大的读裕度窗口将会使我们更加容易判断器件的存储状态。当读裕度窗口很小时,我们可能无法正确区分阈值电压与读取电压的大小关系,尤其是存在各种干扰的情况下,极易产生读取错误。如图所示,读裕度的值如下式所示:
在阈值偏移的影响下,读裕度的值变为:
NAND Flash 的基本操作
1)读取操作
读取的过程即判断存储单元当前阈值电压范围的过程,由页缓存器控制完成。读取操作的基本单位是页,包括三个步骤:预充电,感应(读取)和恢复。预充电的对象是位线,如图所示,电源通过导通的晶体管P和M对位线充电(位线电容和电阻)。当执行读取操作时,目标页的字线设置为读取操作电压VREAD,其他位线设置为导通电压VPASS,R,NAND存储串(NAND String)的上选择管和下选管的栅极都接高电平VCC,由后级电路感应并保存结果至页缓存器(PB)中的锁存器。当目标单元的阈值电压小于读取电压(𝑉THR< 𝑉READ)时,存储单元导通,此时该单元所在的 NAND 串处于导通状态,即对位线电容放电;反之,目标单元截止,位线电压保持预充电的值。最后位线电压恢复到初始值以进行下一次读取操作。
读取操作按判断依据的不同分为电流感应读取和电压感应读取方式。针对MLC NAND Flash,区分四个阈值分布区间需要三次读取操作。下面对两种读取方式作简要介绍。
电压感应读取方式是根据位线的电压判断该读取电压下目标单元是否导通。若NAND 存储串导通,BL被放电,位线电压降低;若NAND存储串不导通,BL电压保预充电值。不导通状态下的NAND存储串存在漏电流,因此我们将该状态称为弱导通状态。通过在一定时间段(也称为感应时间)内感应BL电压状态即可判断目标电压与读取电压的大小关系,通过三次读取就可确定阈值电压的范围。感应时间通过下式计算得到:
由放电电流和漏电流两个不同的值可以得到感应时间的范围,理论上感应时间取该范围的任意值皆可,实际上BL除了存在寄生电容还存在自身电阻,在仿真中可以取得最优值以减少读取错误的发生。电流感应方式是通过NAND存储串的电流判断该读取操作电压下目标存储单元是否导通。与电压感应读取方式相比,此方式的优点是BL电压保持不变,显著减小了BL之间耦合电容的影响。实现电流感应操作的页缓存器电路存在电位钳制电路,当 NAND存储串对BL电容放电时,在电位钳制电路作用下,预充电电路会对BL再次补充电荷,使BL保持预充电电压不变,从而减小BL之间的电容耦合。NAND存储串导通时的电流较大,弱导通时的电流较小。页缓存器电路通过对NAND存储串上的电流与阈值电流做对比,得到存储单元的阈值与操作电压的关系。同样地,感应时间可通过下式计算得到:
2)编程操作
编程是通过将电子注入浮栅晶体管的电荷存储层中以提高浮栅晶体管的阈值电压,如图所示,由于控制栅和沟道之间的强电场,电子遂穿到浮栅层使阈值电压右移。
编程操作的单位是页,即同一条字线连接的存储单元。如图所示,目标字线施加编程电压VPP,其他字线施加导通电压VPASS使其保持导通状态,NAND存储串选择管的栅极(SSL)接电源电压VCC,地选择管的栅极(GSL)接低电平GND。当位线电压置为GND时,NAND存储串选择管导通,沟道电势为GND,由于控制栅和沟道之间的强电场,电子发生遂穿被浮栅捕获。当位线电压置为电源电压VCC时,NAND存储串选择管截止,沟道电势因电容耦合被拉高,控制栅和沟道之间的电场强度不足以使电子发生遂穿,即保持原阈值电压不变,称之为编程抑制。
编程操作的流程如图所示,为控制存储单元阈值的变化引入增量步进脉冲编程算法(Incremental step pulse programming-ISPP)和编程验证算法。根据目标编程态,同一条字线所连接的存储单元可能处于编程态也可能处于编程抑制态。在编程之前对所有的位线进行预充电,然后根据目标编程态设置相应的位线电压。若目标编程态为编程抑制,BL电压保持预充电状态,若目标编程态为编程态,BL电压被放电为GND。编程之后进行编程验证,若验证成功,将位线设置为𝑉CC(编程抑制);若验证未成功,则在字线上施加第二次编程脉冲。因为两次相邻编程脉冲值之间的差值为∆𝑉PP,所以称其为增量步进脉冲编程。通常编程脉冲数目在 10 个以内,编程算法中会设定最大编程脉冲数。当验证未成功但脉冲次数超过最大脉冲数,则跳出编程验证循环。
由于存储单元采用串联的连接方式,编程操作过程中会引入三类干扰,分别是编程干扰、通过干扰和边缘干扰。编程干扰是由软编程引起的,同一条位线上处于编程抑制状态的存储单元,虽然 SBPI(Self-Boosted Program Inhibit-SBPI)机制能够减小电场强度使不发生 FN 遂穿,但其浮栅电场强度远比其他的存储单元高,故称其为软编程。同一条位线上字线电压为导通电压VPASS的存储单元受到的干扰称为通过干扰,编程中这些存储单元的控制栅与沟道之间的电势差为VPASS,电势差形成的电场使电子发生遂穿。边缘干扰影响的是相邻于编程抑制状态位线的选择管的存储单元。选择管与沟道之间的电势差产生的热载流子进入边缘存储单元,造成阈值偏移。
3)擦除操作
NAND存储器的制造采用 triple-well结构,如图所示,所有块的源端连接在一起,且共用一个iP-well,因此擦除以块为单位。擦除时,iP-well接高电平,同时目标擦除块的字线保持为GND,利用FN遂穿的原理减少浮栅中的电荷数量,由此可以对浮栅晶体管执行数据擦除,擦除的过程即电子从浮栅层遂穿入沟道的过程。未选中块的字线电压置为浮空状态,由于控制栅和iP-well之间的电容耦合,浮空的字线电压被抬高,由此在浮栅晶体管的字线和电荷存储层之间不存在电位差使电子发生量子遂穿,浮栅中的电子不会逸出。
擦除操作的基本流程如图所示,擦除脉冲之后进行擦除验证,验证目标块中是否所有的存储单元擦除成功,如果擦除成功,该流程结束;若仍存在存储单元未通过擦除验证,将会在擦除电压的基础上增加∆V进行下一次的擦除操作。该流程与编程操作的流程存在相似之处。实际上,随着工艺尺寸的不断缩减,通常需要一些复杂的算法弥补工艺上的缺陷。
Nand Flash关键信号介绍
Flash主要的信号如下表,其中IO信号分x8/x16两种情况,器件ball map如下图。