详述NOR Flash和NAND Flash区别

一、历史

在介绍NOR Flash和NAND Flash之前,首先介绍一下NOR Flash和NAND Flash的产生历史。

1、EPROM

Intel很早就发明了EPROM,这是一种可以用紫外线擦除的存储器。相较于ROM,它的内容可以更新而且可以保持10~20年,老式电脑的BIOS都存储于此。它的顶部必须被覆盖住,以防被阳光里的紫外线擦除。

发明者:Intel。

痛点:用紫外线擦除的存储器,擦除很麻烦。

2、EEPROM

后来Intel在其基础上于1978年发明了电可擦除的升级版叫做EEPROM。不需要阳光的帮忙,方便多了,可是读取和擦除速度却非常缓慢。

发明者:Intel。

痛点:擦除速度很慢。

3、NOR Flash

桀冈富士雄(Fujio Masuoka),他于1971年加入了东芝公司。受到了EEPROM的启发,他开始利用自己夜晚和周末的时间钻研一种能快速擦除的EERPOM(我们也要向他学习啊)。他在1980年取得突破,申请了一个叫做simultaneously erasable EEPROM的专利。当他拿着他的样品参加当年的IEEE大会的时候,NOR Flash引起了轰动。由于新发明的这种EEPROM擦除速度飞快,富士雄的同事建议他把这种技术取名Flash,暗合相机的闪光灯飞快闪烁之意。

发明者:桀冈富士雄(Fujio Masuoka)(东芝)。

痛点:制造成本高。

4、NAND Flash

富士雄却并没有停止他的追求,在1986年发明了NAND Flash,大大降低了制造成本。

发明者:桀冈富士雄(Fujio Masuoka)(东芝)。

 

二、工作原理

1、存储数据原理

两种Flash都是用三端器件作为存储单元,分别为源极、漏极和栅极,与场效应管的工作原理相同,主要是利用电场的效应来控制源极与漏极之间的通断。栅极的电流消耗极小,不同的是场效应管为单栅极结构,而 Flash为双栅极结构,在栅极与硅衬底之间增加了一个浮置栅极。浮置栅极是由氮化物夹在两层二氧化硅材料之间构成的,中间的氮化物就是可以存储电荷的电荷势阱。上下两层氧化物的厚度大于50埃(埃米是晶体学、原子物理、超显微结构等常用的长度单位,音译为"埃",符号为Å,1Å等于10-10m,即纳米的十分之一),以避免发生击穿。

2、浮栅的充放电

向数据单元内写入数据的过程就是向电荷势阱注入电荷的过程,写入数据有两种技术,热电子注入(hot electron injection)和F-N隧道效应(Fowler Nordheim tunneling),前一种是通过源极给浮栅充电,后一种是通过硅基层给浮栅充电。NOR Flash通过热电子注入方式给浮栅充电,而NAND Flash则通过F-N隧道效应给浮栅充电。

在写入新数据之前,必须先将原来的数据擦除,这点跟硬盘不同,也就是将浮栅的电荷放掉,两种Flash都是通过F-N隧道效应放电。

3、0和1

这方面两种Flash一样,向浮栅中注入电荷表示写入了0,没有注入电荷表示1,所以对 Flash清除数据是写1的,这与硬盘正好相反。

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

4、连接和编址方式

两种Flash具有相同的存储单元,工作原理也一样,为了缩短存取时间并不是对每个单元进行单独的存取操作,而是对一定数量的存取单元进行集体操作。NOR Flash各单元之间是并联的,而NAND Flash各存储单元之间是串联的。为了对全部的存储单元有效管理,必须对存储单元进行统一编址。

NOR Flash的每个存储单元以并联的方式连接到位线,方便对每一位进行随机存取;具有专用的地址线,可以实现一次性的直接寻址;缩短了Flash对处理器指令的执行时间。

NAND Flash的全部存储单元分为若干个块,每个块又分为若干个页,每个页是 512B,就是512个8位数,就是说每个页有512条位线,每条位线下有8个存储单元;那么每页存储的数据正好跟硬盘的一个扇区存储的数据相同,这是设计时为了方便与磁盘进行数据交换而特意安排的,那么块就类似硬盘的簇;容量不同,块的数量不同,组成块的页的数量也不同。 在读取数据时,当字线和位线锁定某个晶体管时,该晶体管的控制极不加偏置电压,其它的7个都加上偏置电压而导通,如果这个晶体管的浮栅中有电荷就会导通使位线为低电平,读出的数就是0,反之就是1。

 

三、共性

1、都是非易失存储介质

即掉电都不会丢失内容。

2、在写入前都需要擦除

Flash进行写操作时,只能将相应的位由1变0,而擦除才能把块内所有位由0变1。所有写入数据时,如果该页已经存在数据,必须先擦除再写。

 

四、特性

1、NOR Flash

(1)能像RAM一样寻址

NOR Flash带有SRAM接口,有足够的地址引脚来寻址,可以很容易地存取其内部的每一个字节。

(2)用户可以直接运行装载在NOR Flash里面的代码

NOR Flash有自己的数据和地址总线,因此可采用类似RAM的随机访问。各单元之间是并联的,对存储单元进行统一编址(有独立地址线),所以可以随机访问任意一个字。

应用程序可以直接在NOR Flash内运行(应用程序的Code和RO段可以直接在NOR Flash上运行,只需要把RW段和ZI段拷贝到RAM中运行即可),不必再把代码读到系统RAM中去。

NOR Flash不能像RAM以字节改写数据,只能按页依次写数据,故NOR Flash不能代替RAM

(3)有更快的读取速度,处理小数据量的I/O操作速度更快

NOR Flash可以对字进行操作,相比于NAND Flash有更快的读取速度,更慢的擦写速度。但NAND Flash页是读写数据的最小单元(一般512B),块是擦除数据的最小单元(一般是8KB)。相对而言,对小数据量的I/O操作NOR Flash速度更快且更方便。

(4)擦除既可整页擦除,也可整块擦除。擦写次数是10万次,不适合频繁擦写

Flash檫写的次数都是有限的,Flash写入和擦除数据时会导致介质的氧化降解。当Flash接近使用寿命时,经常会出现一些操作失败。到达使用寿命时,Flash内部存放的数据虽然可以读,但是不能再进行写操作,所以为了防止上面问题的发生,不能对Flash的某个特定的区域反复进行擦写操作。

(5)随机存储介质,适合做程序存储并XIP

(6)在1~4MB的小容量时具有很高的成本效益

NOR Flash容量较小,成本较高。

(7)可靠性相对更高

NOR Flash的接口简单,数据操作少,因此可靠性高,极少出现块区块,因而一般用在对可靠性要求高的地方。

(8)存储密度较低

2、NAND Flash

(1)有更快的写入和擦除速度

页是读写数据的最小单元(一般512B),块是擦除数据的最小单元(一般是8KB)。

(2)NAND的擦写次数是100万次

通常NAND Flash的可擦写次数高于NOR Flash,但是由于NAND Flash通常是整块檫写,块内的页面中如果有一位失效整个快就会失效,而且由于擦写过程复杂,失败的概率相对较高,所以从整体上来说NOR Flash的寿命较长。

(3)连续存储介质,适合做数据存储

(4)容量较大,成本较低

由于对NAND Flash的操作都是以块和页为单位的,所以在向NAND Flash进行大量数据读写时,NAND Flash的速度要快于NOR Flash,并且NAND Flash成本较低。

(5)可靠性相对更低

NAND Flash接口和操作均相对复杂,NAND器件使用复杂的I/O口来串行地存取数据,各个产品或厂商的方法可能各不相同。8个引脚用来传送控制、地址和数据信息。同时NAND Flash位交换操作也很多,关键性数据更是需安错误探测/错误更正算法来确保数据的完整性,因此出现问题的几率要大的多,坏区块也是不可避免的,而且由于坏区块是随机分布的,连纠错也无法做到。建议在使用NAND Flash时,要采用EDC/ECC等校验算法。

(6)坏块随机分配,需要进行坏块管理

在NAND Flash中,由于坏块是随机分布的,因此需要进行扫描并将坏块打上标记。坏块的存在使得向NAND Flash写入信息需要相当的技巧,因为绝不能向坏块写入,这意味着在NAND Flash上自始自终都必须进行虚拟映射。

(7)存储密度较高

(8)使用NAND Flash时,必须先写入驱动程序,才能继续执行其他操作

在使用NAND器件时,必须先写入驱动程序,才能继续执行其他操作。向NAND器件写入信息需要相当的技巧,因为设计师绝不能向坏块写入,这就意味着在NAND器件上自始至终都必须进行虚拟映射。

3、总结

属性

NOR Flash

NAND Flash

容量

较小

很大

XIP(可执行code)

可以

不可以

读取速度

很快

写入速度

擦除速度

很慢

可擦除次数

10,000-100,000

100,000-1000,000

存储方式

随机存储

连续存储

存储密度

较低

较高

内部结构

地址线和数据线分开

地址线和数据线共用

可靠性

较低

访问方式

可随机访问

块方式

操作方式

简单

复杂

价格

适用场合

程序存储

数据存储

 

五、应用场景

1、NOR Flash

(1)BIOS程序存储介质和机顶盒

NOR Flash和普通的内存比较像的一点是他们都可以支持随机访问,这使它也具有支持XIP(eXecute In Place)的特性,可以像普通ROM一样执行程序。这点让它成为BIOS等开机就要执行的代码的绝佳载体。

NOR Flash根据与Host端接口的不同,可以分为Parallel NOR Flash和Serial NOR Flash两类。

Parallel NOR Flash可以接入到Host的控制器 上,所存储的内容可以直接映射到CPU地址空间,不需要拷贝到RAM中即可被CPU访问。NOR Flash在BIOS中最早就是这种接口,叫做FWH(Firmware HUB),由于其接的是并行接口,速度缓慢,现在基本已经被淘汰。Serial NOR Flash的成本比 Parallel NOR Flash 低,主要通过SPI接口与Host 也就是PCH相连。

现在几乎所有的BIOS和一些机顶盒上都是使用NOR Flash,它的大小一般在1MB到32MB之间,价格昂贵。

(2)单片机外挂Flash

单片机外挂的Flash一般是SPI Flash。

SPI Flash(serial peripheral interface)是一种常见的时钟同步串行通信接口,是NOR Flash的一种。

NOR Flash根据数据传输的位数可以分为并行(Parallel)NOR Flash和串行(SPI)NOR Flash(即SPI Flash)。

SPI NOR Flash每次传输一个bit的数据,parallel NOR Flash每次传输多个bit的数据(有x8bit和x16bit两种)。

SPI Flash便宜,接口简单,但速度慢。

(3)单片机片上Flash

单片机片上Flash一般都是NOR Flash。

(4)引导NAND Flash

NAND Flash 没有采取内存的随机读取技术,它的读取是以一次读取一块的形式来进行的, 通常是一次读取 512 个字节,采用这种技术的 Flash 比较廉价。用户不能直接运行 NAND Flash 上的代码,因此好多使用 NAND Flash 的开发板除了使用 NAND Flash 以外,还做上了 一块小的 NOR Flash 来运行启动代码

2、NAND Flash

(1)存储卡,U盘,SSD,eMMC

NAND Flash广泛应用在各种存储卡,U盘,SSD,eMMC等等大容量设备中。它的颗粒根据每个存储单元内存储比特个数的不同,可以分为 SLC(Single-Level Cell)、MLC(Multi-Level Cell) 和 TLC(Triple-Level Cell) 三类。其中,在一个存储单元中,SLC 可以存储 1 个比特,MLC 可以存储 2 个比特,TLC 则可以存储 3 个比特。

NAND Flash 的单个存储单元存储的比特位越多,读写性能会越差,寿命也越短,但是成本会更低。

现在高端SSD会选取MLC甚至SLC,低端SSD则选取TLC。SD卡一般选取TLC。

(2)启动Flash

但目前很多CPU 都可以在上电时,以硬件的方式先将NAND Flash的第一个Block 中的内容(一般是程序代码,且也许不足一个Block ,如2KB大小)自动Copy到RAM中,然后再运行,因此只要CPU 支持,NAND 也可以当成启动设备。

 

六、其他

最早的手机等设备之中既有NOR Flash也有NAND Flash。NOR Flash很小,因为支持XIP,所以负责初始化系统并提供NAND Flash的驱动,类似BootLoader。而NAND Flash则存储数据和OS镜像。三星最早提出Norless的概念,在它的CPU on die ROM中固化了NAND Flash的驱动,会把NAND Flash的开始一小段拷贝到内存低端作为BootLoader,这样昂贵的NOR Flash就被节省下来了,降低了手机主板成本和复杂度。渐渐NOR Flash在手机中慢慢消失了。

NAND Flash相对NOR Flash更可能发生比特翻转,就必须采用错误探测/错误更正(EDC/ECC)算法,同时NAND Flash随着使用会渐渐产生坏块;我们在使用NAND Flash的SD卡上经常使用FAT文件系统,文件分配表会被频繁改写,而每块的擦写次数是NAND Flash寿命的决定性因素。如何才能平衡各块的擦写和为可能的坏块寻找替换呢?通常需要有一个特殊的软件层次,实现坏块管理、擦写均衡、ECC、垃圾回收等的功能,这一个软件层次称为 FTL(Flash Translation Layer)。根据 FTL 所在的位置的不同,可以把 Flash Memory 分为 Raw Flash 和 Managed Flash 两类。最早大家都是使用Raw Flash,FTL全由驱动程序实现。后来发展到SD和eMMC等,则由设备固件实现抽象。

 

参考文献

[1] https://zhuanlan.zhihu.com/p/26745577

[2] https://www.cnblogs.com/saulgoodman611/p/11444687.html

[3] https://blog.csdn.net/fxltsbl007/article/details/79395078

[4] https://blog.csdn.net/tigerjibo/article/details/9322035

[5] https://zhidao.baidu.com/question/424957114222804852.html

[6] https://baike.baidu.com/item/%E5%9F%83%E7%B1%B3/9584915?fr=aladdin

[7] https://blog.csdn.net/yexiangcsdn/article/details/81383361

[8] https://baijiahao.baidu.com/s?id=1610041455262486965&wfr=spider&for=pc

[9] https://blog.csdn.net/qq_39642794/article/details/85003977

 

注:转载请注明出处

 

微信公众号

喜欢我的还可以关注我的微信公众号:梦想园地,里面有你意想不到的惊喜哦!

详述NOR Flash和NAND Flash区别_第1张图片

 

你可能感兴趣的:(知识拓展)