NAND flash和NOR flash原理

来源:互联网 发布:张北榕泰大数据项目 编辑:程序博客网 时间:2024/06/10 19:30

NAND flash和NOR flash原理
一、存储数据的原理
两种闪存都是用三端器件作为存储单元,分别为源极、漏极和栅极,与场效应管的工作原理 相同,主要是利用电场的效应来控制源极与漏极之间的通断,栅极的 电流消耗极小,不同 的是场效应管为单栅极结构,而 FLASH 为双栅极结构,在栅极与硅衬底之间增加了一个浮 置栅极。[attach]158 [/attach]
浮置栅极是由氮化物夹在两层二氧化硅材料之间构成的,中间的氮化物就是可以存储电荷的 电荷势阱。上下两层氧化物的厚度大于 50 埃,以避免发生击穿。
二、浮栅的重放电
向数据单元内写入数据的过程就是向电荷势阱注入电荷的过程,写入数据有两种技术,热电 子注入(hot electron injection)和 F-N 隧道效应(Fowler Nordheim tunneling),前一种是通过源 极给浮栅充电,后一种是通过硅基层给浮栅充电。NOR 型 FLASH 通过热电子注入方式给浮 栅充电,而 NAND 则通过 F-N 隧道效应给浮栅充电。
在写入新数据之前,必须先将原来的数据擦除,这点跟硬盘不同,也就是将浮栅的电荷放掉, 两种 FLASH 都是通过 F-N 隧道效应放电。
三、0 和 1
这方面两种 FLASH 一样,向浮栅中注入电荷表示写入了'0',没有注入电荷表示'1',所以对 FLASH 清除数据是写 1 的,这与硬盘正好相反;
对于浮栅中有电荷的单元来说,由于浮栅的感应作用,在源极和漏极之间将形成带正电的空 间电荷区,这时无论控制极上有没有施加偏置电压,晶体管都将处于 导通状态。而对于浮 栅中没有电荷的晶体管来说只有当控制极上施加有适当的偏置电压,在硅基层上感应出电 荷,源极和漏极才能导通,也就是说在没有给控制极施 加偏置电压时,晶体管是截止的。 如果晶体管的源极接地而漏极接位线,在无偏置电压的情况下,检测晶体管的导通状态就可 以获得存储单元中的数据,如果位线上的电平为低,说明晶体管处于 导通状态,读取的数 据为 0,如果位线上为高电平,则说明晶体管处于截止状态,读取的数据为 1。由于控制栅 极在读取数据的过程中施加的电压较小或根本不施加 电压,不足以改变浮置栅极中原有的 电荷量,所以读取操作不会改变 FLASH 中原有的数据。
四、连接和编址方式
两种 FLASH 具有相同的存储单元,工作原理也一样,为了缩短存取时间并不是对每个单元 进行单独的存取操作,而是对一定数量的存取单元进行集体操作, NAND 型 FLASH 各存 储单元之间是串联的,而 NOR 型 FLASH 各单元之间是并联的;为了对全部的存储单元有 效管理,必须对存储单元进行统一编址。
NAND 的全部存储单元分为若干个块,每个块又分为若干个页,每个页是 512byte,就是 512 个 8 位数,就是说每个页有 512 条位线,每条位线下 有 8 个存储单元;那么每页存储的数 据正好跟硬盘的一个扇区存储的数据相同,这是设计时为了方便与磁盘进行数据交换而特意 安排的,那么块就类似硬盘的簇;容 量不同,块的数量不同,组成块的页的数量也不同。 在读取数据时,当字线和位线锁定某个晶体管时,该晶体管的控制极不加偏置电压,其它的 7  个都加上偏置电压 而导通,如果这个晶体管的浮栅中有电荷就会导通使位线为低电平, 读出的数就是 0,反之就是 1。
NOR 的每个存储单元以并联的方式连接到位线,方便对每一位进行随机存取;具有专用的 地址线,可以实现一次性的直接寻址;缩短了 FLASH 对处理器指令的执行时间。 五、性能

NAND flash和NOR flash的区别
一、NAND flash和NOR flash的性能比较
flash闪存是非易失存储器,可以对称为块的存储器单元块进行擦写和再编程。任何flash器件的写入操作只能在空或已擦除的单元内进行,所以大多数情况下,在进行写入操作之前必须先执行擦除。NAND器件执行擦除操作是十分简单的,而NOR则要求在进行擦除前先要将目标块内所有的位都写为0。由于擦除NOR器件时是以64~128KB的块进行的,执行一个写入/擦除操作的时间为5s,与此相反,擦除NAND器件是以8~32KB的块进行的,执行相同的操作最多只需要4ms。执行擦除时块尺寸的不同进一步拉大了NOR和NADN之间的性能差距,统计表明,对于给定的一套写入操作(尤其是更新小文件时),更多的擦除操作必须在基于NOR的单元中进行。这样,当选择存储解决方案时,设计师必须权衡以下的各项因素。
1、NOR的读速度比NAND稍快一些。
2、NAND的写入速度比NOR快很多。
3、NAND的4ms擦除速度远比NOR的5s快。
4、大多数写入操作需要先进行擦除操作。
5、NAND的擦除单元更小,相应的擦除电路更少。
二、NAND flash和NOR flash的接口差别
NOR flash带有SRAM接口,有足够的地址引脚来寻址,可以很容易地存取其内部的每一个字节。
NAND器件使用复杂的I/O口来串行地存取数据,各个产品或厂商的方法可能各不相同。8个引脚用来传送控制、地址和数据信息。NAND读和写操作采用512字节的块,这一点有点像硬盘管理此类操作,很自然地,基于NAND的存储器就可以取代硬盘或其他块设备。
三、NAND flash和NOR flash的容量和成本
NAND flash的单元尺寸几乎是NOR器件的一半,由于生产过程更为简单,NAND结构可以在给定的模具尺寸内提供更高的容量,也就相应地降低了价格。
NOR flash占据了容量为1~16MB闪存市场的大部分,而NAND flash只是用在8~128MB的产品当中,这也说明NOR主要应用在代码存储介质中,NAND适合于数据存储,NAND在CompactFlash、Secure Digital、PC Cards和MMC存储卡市场上所占份额最大。
四、NAND flash和NOR flash的可靠性和耐用性
采用flahs介质时一个需要重点考虑的问题是可靠性。对于需要扩展MTBF的系统来说,Flash是非常合适的存储方案。可以从寿命(耐用性)、位交换和坏块处理三个方面来比较NOR和NAND的可靠性。
五、NAND flash和NOR flash的寿命(耐用性)
在NAND闪存中每个块的最大擦写次数是一百万次,而NOR的擦写次数是十万次。NAND存储器除了具有10比1的块擦除周期优势,典型的NAND块尺寸要比NOR器件小8倍,每个NAND存储器块在给定的时间内的删除次数要少一些。
六、位交换
所有flash器件都受位交换现象的困扰。在某些情况下(很少见,NAND发生的次数要比NOR多),一个比特位会发生反转或被报告反转了。一位的变化可能不很明显,但是如果发生在一个关键文件上,这个小小的故障可能导致系统停机。如果只是报告有问题,多读几次就可能解决了。当然,如果这个位真的改变了,就必须采用错误探测/错误更正(EDC/ECC)算法。位反转的问题更多见于NAND闪存,NAND的供应商建议使用NAND闪存的时候,同时使用
七、EDC/ECC算法
这个问题对于用NAND存储多媒体信息时倒不是致命的。当然,如果用本地存储设备来存储操作系统、配置文件或其他敏感信息时,必须使用EDC/ECC系统以确保可靠性。
八、坏块处理
NAND器件中的坏块是随机分布的。以前也曾有过消除坏块的努力,但发现成品率太低,代价太高,根本不划算。
NAND器件需要对介质进行初始化扫描以发现坏块,并将坏块标记为不可用。在已制成的器件中,如果通过可靠的方法不能进行这项处理,将导致高故障率。
九、易于使用
可以非常直接地使用基于NOR的闪存,可以像其他存储器那样连接,并可以在上面直接运行代码。
由于需要I/O接口,NAND要复杂得多。各种NAND器件的存取方法因厂家而异。在使用NAND器件时,必须先写入驱动程序,才能继续执行其他操作。向NAND器件写入信息需要相当的技巧,因为设计师绝不能向坏块写入,这就意味着在NAND器件上自始至终都必须进行虚拟映射。
十、软件支持
当讨论软件支持的时候,应该区别基本的读/写/擦操作和高一级的用于磁盘仿真和闪存管理算法的软件,包括性能优化。
在NOR器件上运行代码不需要任何的软件支持,在NAND器件上进行同样操作时,通常需要驱动程序,也就是内存技术驱动程序(MTD),NAND和NOR器件在进行写入和擦除操作时都需要MTD。
使用NOR器件时所需要的MTD要相对少一些,许多厂商都提供用于NOR器件的更高级软件,这其中包括M-System的TrueFFS驱动,该驱动被Wind River System、Microsoft、QNX Software System、Symbian和Intel等厂商所采用。

驱动还用于对DiskOnChip产品进行仿真和NAND闪存的管理,包括纠错、坏块处理和损耗平衡。


Flash编程原理都是只能将1写为0,而不能将0写成1.所以在Flash编程之前,必须将对应的块擦除,而擦除的过程就是将所有位都写为1的过程,块内的所有字节变为0xFF.因此可以说,编程是将相应位写0的过程,而擦除是将相应位写1的过程,两者的执行过程完全相反.

(1)闪存芯片读写的基本单位不同
       应用程序对NorFlash芯片操作以“字”为基本单位.为了方便对大容量NorFlash闪存的管理,通常将NOR闪存分成大小为128KB或64KB的逻辑块,有时块内还分扇区.读写时需要同时指定逻辑块号和块内偏移.应用程序对NandFlash芯片操作是以“块”为基本单位.NAND闪存的块比较小,一般是8KB,然后每块又分成页,页大小一般是512字节.要修改NandFlash芯片中一个字节,必须重写整个数据块.


(2)NorFlash闪存是随机存储介质,用于数据量较小的场合;NandFlash闪存是连续存储介质,适合存放大的数据.


(3)由于NorFlash地址线和数据线分开,所以NorFlash芯片可以像SDRAM一样连在数据线上.NOR芯片的使用类似于通常内存芯片,传输效率高,可执行程序可以在芯片内执行(XI P, eXecute In Place),这样应用程序可以直接在flash闪存内运行,不必再把代码读到系统RAM中.由于NorFlash的这个特点,嵌入式系统中经常将NOR芯片做启动芯片使用.NandFlash共用地址和数据总线,需要额外联结一些控制的输入输出,所以直接将NAND芯片做启动芯片比较难.

 
(4)NandFlash闪存芯片因为共用地址和数据总线的原因,不允许对一个字节甚至一个块进行的数据清空,只能对一个固定大小的区域进行清零操作;NorFlash芯片可以对字进行操作.所以在处理小数据量的I/O操作的时候的速度要快与NorFlash的速度.比如一块NorFlash芯片通常写一个字需要10us,在32位总线上写512字节需要1280us;NandFlash闪存写512字节需要的时间包括:512×每字节50ns+10us的寻页时间+200us的片擦写时间=234us.


(5)NandFlash闪存的容量比较大,最大容量己达到8G字节.为了方便管理,NandFlash的存储空间使用了块和页两级存储体系,也就是说它的存储空间是二维的,比如K9F5608UOA闪存块的大小为16K,每页大小是512字节,每页还16字节空闲区用来存放错误校验码空间(也称为out-of-band,OOB空间).在进行写操作时,NandFlash闪存每次将一个字节的数据放入内部的缓存区,然后再发出“写指令”进行写操作.由于对NandFlash闪存的操作都是以块和页为单位的,所以在向NandFlash闪存进行大量数据的读写时,NAND的速度要快于NOR闪存.


(6)NorFlash闪存的可靠性要高于NandFlash闪存,是因为NorFlash型闪存的接口简单,数据操作少,位交换操作少,因此可靠性高,极少出现坏区块,一般用在对可靠性要求高的地方.NandFlash型闪存接口和操作均相对复杂,位交换操作也很多,关键性数据更是需安错误探测/错误更正(EDC/ECC)算法来确保数据的完整性,因此出现问题的几率要大得多,坏区块也是不可避免的,而且由于坏区块是随机分布的,连纠错也无法做到.

 
(7)NANDFlash一般地址线和数据线共用,对读写速度有一定影响;NORFlash闪存数据线和地址线分开,相对而言读写速度快一些.NANDFlash和NORFlash芯片的共性

        首先表现在向芯片中写数据必须先将芯片中对应的内容清空,然后再写入,即先擦后写.只不过NORFlash芯片只用擦写一个字,而NAND需要擦写整个块.其次,闪存擦写的次数都是有限的.当闪存使用接近使用寿命时,经常会出现写操作失败;到达使用寿命时,闪存内部存放的数据虽然可以读,但不能再进行写操作了.所以为了防止上面问题的发生,不能对某个特定的区域反复进行写操作.通常NANDFlash可擦写次数高于NORFlash芯片,但是由于NANDFlash通常是整块擦写,块内的页面中如果有一位失效整个块就会失效,而且由于擦写过程复杂,失败的概率相对较高,所以从整体上来说NOR的寿命较长.
        另一个共性是闪存的读写操作不仅仅是一个物理操作,实际上在闪存上存放数据必须使用算法实现,这个模块一般在驱动程序的MTD'(Memory Technology Drivers)模块中或者在FTLZ (Flash Translation Layer)层内实现,具体算法和芯片的生产厂商以及芯片型号有关系.通过比较可以发现,NAND更适用于复杂的文件应用,但是由于NAND芯片的使用相对复杂,所以对文件系统有较高的要求.

(8)接口对比 
       NorFlash带有通用的SRAM接口,可以轻松地挂接在CPU的地址、数据总线上,对CPU的接口要求低。NorFlash的特点是芯片内执行(XIP,eXecute In Place),这样应用程序可以直接在flash闪存内运行,不必再把代码读到系统RAM中.如uboot中的ro段可以直接在NorFlash上运行,只需要把rw和zi段拷贝到RAM中运行即可.

       NandFlash器件使用复杂的I/O口来串行地存取数据,8个引脚用来传送控制、地址和数据信息。由于时序较为复杂,所以一般CPU最好集成NandFlash控制器.另外由于NandFlash没有挂接在地址总线上,所以如果想用NandFlash作为系统的启动盘,就需要CPU具备特殊的功能,如s3c2410在被选择为NandFlash启动方式时会在上电时自动读取NandFlash的4k数据到地址0的SRAM中.如果CPU不具备这种特殊功能,用户不能直接运行NandFlash上的代码,那可以采取其他方式,比如好多使用NandFlash的开发板除了使用NandFlash以外,还用上了一块小的NorFlash来运行启动代码. 


(9)容量和成本对比 
       相比起NandFlash来说,NorFlash的容量要小,一般在1~16MByte左右,一些新工艺采用了芯片叠加技术可以把NorFlash的容量做得大一些.在价格方面,NorFlash相比NandFlash来说较高,如目前市场上一片4Mbyte的AM29lv320 NorFlash零售价在20元左右,而一片128MByte的k9f1g08 NandFlash零售价在30元左右.  NandFlash生产过程更为简单,NAND结构可以在给定的模具尺寸内提供更高的容量,这样也就相应地降低了价格.

(10)可靠性性对比  
       NandFlash器件中的坏块是随机分布的,以前也曾有过消除坏块的努力,但发现成品率太低,代价太高,根本不划算.Nand器件需要对介质进行初始化扫描以发现坏块,并将坏块标记为不可用.在已制成的器件中,如果通过可靠的方法不能进行这项处理,将导致高故障率。而坏块问题在NorFlash上是不存在的.
       在Flash的位翻转(一个bit位发生翻转)现象上,NAND的出现几率要比NorFlash大得多.这个问题在Flash存储关键文件时是致命的,所以在使用NandFlash时建议同时使用EDC/ECC等校验算法


0 0