Flash相关理论知识:SLC与MLC、NOR与NAND FLASH、闪存卡

摘要:

    本文介绍了FLASH相关理论知识,旨在更好地设计文件系统。首先从原理和特点两方面介绍两种架构SLC和MLC,进而介绍了NOR和NAND FLASH工作原理,读写擦除原理,编址方式,进而导出NOR和NAND FLASH区别。最后顺带简单介绍下SD卡。


一、SLC与MLC

    从架构上来分,Flash可以分为SLC Flash和MLC Flash。闪存将数据存储在由浮闸晶体管组成的记忆单元数组内,在单阶存储单元(Single-level cell, SLC)设备中,每个单元只存储1比特的信息。而多阶存储单元(Multi-level cell, MLC)设备则利用多种电荷值的控制让每个单元可以存储1比特以上的数据[2]。

1.1 SLC

工作原理

    SLC技术特点是在浮置栅极与源极之中的氧化薄膜更薄,在写入数据时通过对浮置栅极的电荷加电压,然后透过源极,即可将所储存的电荷消除,通过这样的方式,便可储存1个信息单元,这种技术能提供快速的程序编程与读取,不过此技术受限于Silicon efficiency的问题,必须要由较先进的流程强化技术(Process enhancements),才能向上提升SLC制程技术[3]。

特点

    SLC(single-level cell,单阶存储单元),每个存储单元内存储1个信息比特,使用这种存储单元的闪存也称为单阶存储单元闪存(SLC flash memory),或简称SLC闪存。SLC闪存的优点是传输速度更快,功率消耗更低和存储单元的寿命更长。然而,由于每个存储单元包含的信息较少,其每百万字节需花费较高的成本来生产。由于快速的传输速度,SLC闪存技术会用在高性能的存储卡[1]。

1.2 MLC

工作原理

    英特尔在1997年9月最先开发成功MLC,其作用是将两个单位的信息存入一个Floating Gate(闪存存储单元中存放电荷的部分),然后利用不同电位(Level)的电荷,通过内存储存的电压控制精准读写。MLC通过使用大量的电压等级,每一个单元储存两位数据,数据密度比较大。SLC架构是0和1两个值,而MLC架构可以一次储存4个以上的值,因此,MLC架构可以有比较好的储存密度。 

特点

    MLC(多阶存储单元闪存,Multi-level cell),可以在每个存储单元内存储2个以上的信息比特,其"多阶"指的是电荷充电有多个能阶(即多个电压值),如此便能存储多个比特的值于每个存储单元中。借由每个存储单元可存储更多的比特,MLC闪存可降低生产成本,但比起SLC闪存,其传输速度较慢,功率消耗较高和存储单元的寿命较低(因为电压变化更频繁),因此MLC闪存技术会用在标准型的存储卡[1]。由于MLC flash具有成本低的优势,而其出错率高的缺陷又可以通过ECC(Error Correction Code)纠错来有效解决,寿命短的问题也可以通过磨损均衡来弥补,因此,MLC flash的应用更加广泛[2]。

1.3 识别[3]

(1)看传输速度

    比如有两款采用Rockchip芯片的产品,测试时写入速度有2、3倍优势的应该是SLC,而速度上稍慢的则是MLC。即使同样采用了USB2.0高速接口的MP3,也不能改变MLC写入慢的缺点。

(2)看FLASH型号 

    一般来说,以K9G或K9L为开头型号的三星闪存则是MLC,以HYUU或HYUV为开头型号的现代闪存应是MLC。具体芯片编号以三星和现代为例:三星MLC芯片编号以K9G 或K9L开头。现代MLC芯片编号以HYUU或HYUV开头。更多详情参考博文《从型号读取三星NOR FLASH和NAND FALSH信息》。

1.4 总结

    总结一下,相对于SLC,MLC只有一个优点:单位成本低(因为电荷充电有多个电压值,可以存储2位以上的比特,而SLC每个存储单元只能存储1个信息比特,即0或1),正因为这个优点使得MLC应用更加广泛(出错率高的缺陷又可以通过ECC纠错来有效解决,寿命短的问题也可以通过磨损均衡来弥补)。相对于MLC,SLC具有速度更快、功耗更低、寿命更长(SLC的每个block能够擦写100,000次,而MLC能够擦写10,000次)、出错率更低(每个存储单元仅存储2位信息比特,更稳定),用于高档产品中。截取[4]的表如下,关于SLC与MLC的区别可以参考文档[4]。

Flash相关理论知识:SLC与MLC、NOR与NAND FLASH、闪存卡_第1张图片


二、NOR Flash与NAND Flash

    闪存(无论是NOR型或NAND型)是舛冈富士雄博士在1984年于东芝公司工作时发明的[2]。NOR和NAND结构是目前两种最主要的FLASH技术[9]。

2.1 工作原理

    两种闪存都是用三端器件作为存储单元,分别为源极、漏极和栅极,与场效应管的工作原理相同,主要是利用电场的效应来控制源极与漏极之间的通断,栅极的电流消耗极小,不同的是场效应管为单栅极结构,而FLASH为双栅极结构,在栅极与硅衬底之间增加了一个浮置栅极。浮置栅极是由氮化物夹在两层二氧化硅材料之间构成的,中间的氮化物就是可以存储电荷的电荷势阱。上下两层氧化物的厚度大于50埃,以避免发生击穿[11]。

Flash相关理论知识:SLC与MLC、NOR与NAND FLASH、闪存卡_第2张图片

    向数据单元内写入数据的过程就是向电荷势阱注入电荷的过程,写入数据有两种技术,热电子注入(hot electron injection)和F-N隧道效应(Fowler Nordheim tunneling),前一种是通过源极给浮栅充电,后一种是通过硅基层给浮栅充电。NOR型FLASH通过热电子注入方式给浮栅充电,而NAND则通过F-N隧道效应给浮栅充电。两种FLASH都是通过F-N隧道效应放电。向浮栅中注入电荷表示写入了0,没有注入电荷表示1。所以在写入新数据之前,必须先将原来的数据擦除(即将浮栅的电荷放掉)[11]。更多原理介绍可参考[11]。

(1)NOR FLASH写入[6][11]

    对于浮栅中没有电荷(NOR Flash单元代表二进制码中的1值)的晶体管来说只有当控制极上施加有适当的偏置电压,在硅基层上感应出电荷,源极和漏极才能导通,也就是说在没有给控制极施加偏置电压时,晶体管是截止的。

    在以特定的电压值控制闸极时,电流会流经通道。经由以下流程,NOR Flash 单元可以被设置为二进制码中的0值。 

     a. 对CG(Control Gate,控制栅极)施加高电压(通常大于5V)。

     b. 现在通道是开的,所以电子可以从源极流入漏极(想像它是NMOS晶体管)。

     c. 源-漏电流够高了,足以导致某些高能电子越过绝缘层,并进入绝缘层上的FG(Floating Gate,浮置栅极),这种过程称为热电子注入。

(2)擦除[6]

    由于漏极与CG间有一个大的、相反的极性电压,借由量子穿隧效应可以将电子拉出FG,所以能够地用这个特性抹除NOR Flash单元(将其重设为"1"状态)

(3)读取[11]

    对于浮栅中有电荷的单元来说,由于浮栅的感应作用,在源极和漏极之间将形成带正电的空间电荷区,这时无论控制极上有没有施加偏置电压,晶体管都将处于导通状态。如果晶体管的源极接地而漏极接位线,在无偏置电压的情况下,检测晶体管的导通状态就可以获得存储单元中的数据,如果位线上的电平为低,说明晶体管处于导通状态,读取的数据为0,如果位线上为高电平,则说明晶体管处于截止状态,读取的数据为1。由于控制栅极在读取数据的过程中施加的电压较小或根本不施加电压,不足以改变浮置栅极中原有的电荷量,所以读取操作不会改变FLASH中原有的数据

(4)连线和编址方式

    NOR FLASH各单元之间是并联的,为了对全部的存储单元有效管理,必须对存储单元进行统一编址。NOR的每个存储单元以并联的方式连接到位线,方便对每一位进行随机存取,有专用的地址线,可以实现一次性的直接寻址,缩短了FLASH对处理器指令的执行时间[11],通常用于存放代码。而NAND FLASH各存储单元之间是串联的,通常共用数据线和地址线,以下是一款三星K9Fxx08的芯片引脚图。

Flash相关理论知识:SLC与MLC、NOR与NAND FLASH、闪存卡_第3张图片

图 三星FLASH K9Fxx08芯片引脚图

2.2 NOR与NAND FLASH逻辑图

(1)NOR FLASH

    应用程序对NOR芯片操作以"字"为基本单位(不是以字节吗?--Jelline注)。为了方便对大容量NOR闪存的管理,通常将NOR闪存分成大小为128KB或者64KB的逻辑块,有时候块内还分成扇区(是不是有的芯片也叫页,如下面的例子--Jelline注)。读写时需要同时指定逻辑块号和块内偏移[7]。举个例子,STM32F103RBT6的Flash是128KB,1KB/页(可以从芯片参考手册得知),如下图所示:

Flash相关理论知识:SLC与MLC、NOR与NAND FLASH、闪存卡_第4张图片

图 Flash module organization (medium-density devices)

(2)NAND FLASH

    NAND FLASH由块组成,每块又由若干页组成,每页有保留的冗余区。以三星公司的K9F1G08U0A为例(1024块,每块64页,每页2K+64Byte),示意图如下[9]:

Flash相关理论知识:SLC与MLC、NOR与NAND FLASH、闪存卡_第5张图片

2.3 NOR与NAND FLASH比较

(1)Architecture

    NOR FLASH各单元之间是并联的,对存储单元进行统一编址,故可以随机访问任一个字。既然是统一编址,NOR FLASH就可以芯片内执行(eXecute In Place, XIP),即应用程序可以直接在FLASH内运行,而无须先拷贝到RAM。NAND FLASH数据线和地址线共用I/O线,需要额外联结一些控制的输入输出。

(2)读写擦除速度

    在写数据和擦除数据时,NAND由于支持整块擦写操作,所以速度比NOR要快得多,两者相差近千倍;读取时,由于NAND要先向芯片发送地址信息进行寻址才能开始读写数据,而它的地址信息包括块号、块内页号和页内字节号等部分,要顺序选择才能定位到要操作的字节;这样每进行一次数据访问需要经过三次寻址,至少要三个时钟周期;而NOR型FLASH的操作则是以字或字节为单位进行的(统一编址),直接读取,所以读取数据时,NOR有明显优势[11]。即NOR FLASH有更快的读取速度,而NAND FLASH有更快的写擦除速度。

(3)可靠性

    采用flahs介质时一个需要重点考虑的问题是可靠性,可以从寿命(耐用性)、位交换和坏块处理三个方面来比较NOR和NAND的可靠性[13]。

寿命(耐用性)

    FLASH由于写入和擦除数据时会导致介质的氧化降解,导致芯片老化,在这个方面NOR尤甚,所以并不适合频繁地擦写,NAND的擦写次数是100万次,而NOR只有10万次[11]。

位交换

    所有FLASH器件都受位交换现象的困扰。在某些情况下(很少见,NAND发生的次数要比NOR多),一个比特位会发生反转或被报告反转了。如果这个位真的改变了,就必须采用错误探测/错误更正(EDC/ECC)算法。位反转的问题更多见于NAND闪存,NAND的供应商建议使用NAND闪存的时候,同时使用EDC/ECC算法[13]。

坏块处理

    NAND器件中的坏块是随机分布的。以前也曾有过消除坏块的努力,但发现成品率太低,代价太高,根本不划算[13]。所以在出厂前要在高温、高压条件下检测生产过程中产生的坏块,写入坏块标记,防止使用时向坏块写入数据。但在使用过程中还难免产生新的坏块[11],所以在使用的时需进行坏块管理以保障数据的可靠性。

(3)容量和成本 

    NOR型FLASH的每个存储单元与位线相连,增加了芯片内位线的数量,不利于存储密度的提高。所以在面积和工艺相同的情况下,NAND型FLASH的容量比NOR要大得多,生产成本更低,也更容易生产大容量的芯片[11]。

(4)易用性 NAND 

    FLASH的I/O端口采用复用的数据线和地址线,必须先通过寄存器串行地进行数据存取,各个产品或厂商对信号的定义不同,增加了应用的难度;NOR FLASH有专用的地址引脚来寻址,较容易与其它芯片进行连接,另外还支持本地执行,应用程序可以直接在FLASH内部运行,可以简化产品设计[11]。

(5)应用场合

    NOR FLASH适合用于小容量(lower-density),快速读(high-speed read)场合,通常用于存放代码。而NAND FLASH适合低成本、大容量、快速写擦除场合,通常用于外部存储,存放数据。

以下文档[8]NAND vs. NOR Flash Memory的一张图,很直观:

Flash相关理论知识:SLC与MLC、NOR与NAND FLASH、闪存卡_第6张图片

图 NOR FLASH和NAND FLASH比较[8]

2.4 编程角度

    NOR FLASH采用统一编址(有独立的地址线),故可以随机读取每个"字",但NOR Flash不能像RAM以字节改写数据,只能按页写,故NOR Flash不能替代RAM。擦除即可以按页擦除也可以整块擦除(STM32F103RBT6是这样的,各芯片可能不同,具体得看芯片参考手册)。而NAND FLASH共用地址线和数据线,页是读写数据的最小单元,块是擦除的最小单元。另,FLASH进行写操作(页编程)时,只能将相应位由1变0,而擦除才能把块内所有位由0变1。所以,写入数据时,如果该页已存在数据,必须先擦除再写[9]。

2.5 总结

    NOR FLASH最大特点是芯片内执行(eXecute In Place, XIP),即应用程序可以直接在FLASH内运行(由于NOR的这个特点,嵌入式系统中经常将NOR芯片做启动芯片使用),不必先把代码加载到系统RAM(当然,要先加载到RAM也可以)。传输效率很高,但写入和擦除速度慢。NAND FLASH最大特点就是容量大,写入和擦除速度更快,但读取速度较慢,适合做二级存储。


三、SD卡和U盘

    闪存卡(Flash Card)是利用闪存(Flash Memory)技术达到存储电子信息的存储器,一般应用在数码相机,掌上电脑,MP3等小型数码产品中作为存储介质,所以样子小巧,有如一张卡片,所以称之为闪存卡。根据不同的生产厂商和不同的应用,闪存卡大概有SmartMedia(SM卡)、Compact Flash(CF卡)、MultiMediaCard(MMC卡)、Secure Digital(SD卡)、Memory Stick(记忆棒)、XD-Picture Card(XD卡)和微硬盘(MICRODRIVE)这些闪存卡虽然外观、规格不同,但是技术原理都是相同的[8]。

    现在SD卡和U盘通常是将NAND Flash作为存储介质,那么U盘可以理解成NAND Flash与控制器封装而成,而SD卡则可以理解成NAND Flash,需要读卡器(充当SD卡控制器功能)才能读取。

    SD卡是东芝在MMC卡技术中加入加密技术硬件而成,在2006年,SD卡容量有8/16/32/64/128/256/512MB,1GB/2GB,超过2GB容量的卡称为SDHC(注:也有4G的普通sd卡),是SD的升级版本。新一代SDHC 2.0(SDXC)标准规范为SD卡的下一代标准,最大容量可高达2TB[5]。SD卡提供不同的速度,它是按CD-ROM的150 KB/s为1倍速(记作"1x")的速率计算方法来计算的[5]。

Flash相关理论知识:SLC与MLC、NOR与NAND FLASH、闪存卡_第7张图片

图 SD卡图示(由上而下分别为SD卡、mini SD卡和micro SD卡)[6]

    通常情况下,SD卡会被格式为FAT16(SDSC cards)、FAT32(SDHC cards)、exFAT(SDXC cards)[6]。当然也可以是其他文件系统。关于SD卡的更多信息,可以参考英文维基百科Secure Digital,很详细,比中文维基百科要详细得多。


参考资料:

[1] 维基百科词条:闪存

[2] 博文《用于SD卡的NAND flash控制芯片的设计》

[3] 博文《SLC和MLC闪存芯片的区别》

[4] 文档《SLC vs. MLC: An Analysis of Flash Memory》 SLC_vs_MLC whitepaper.pdf   

[5] 维基百科词条:SD卡

[6] Secure Digital - Wikipedia, the free encyclopedia

[7] 文章《NOR FLASH与NAND FLASH的区别》

[8] 文档《NAND vs. NOR Flash Memory Technology Overvie》 NAND vs. NOR Flash Memory.pdf   

[9] 董永帅.Flash文件系统及存储管理技术研究与实现[D].华中科技大学.2008

[10] 俄立波.文件系统在无线传感器网络中的应用研究[D].上海交通大学.2009

[11] 博文《NAND flash和NOR flash的工作原理》

[12] 博文《深入剖析NAND flash工作原理》

[13] 文章《NAND和NOR flash的区别》

你可能感兴趣的:(硬件模块)