主要参考文章
先说一下什么是Flash闪存??
Flash编程原理都是只能将1写为0,而不能将0写成1.所以在Flash编程之前,必须将对应的块擦除,而擦除的过程就是将所有位都写为1的过程,块内的所有字节变为0xFF.因此可以说,编程是将相应位写0的过程,而擦除是将相应位写1的过程,两者的执行过程完全相反.
Flash是一种长寿命的非易失性存储器(这是一个重点,非易失性存储)。闪存有两种类型:NOR闪存和NAND闪存。这两个闪存有什么区别呢?
闪存是一种电子(固态)非易失性 计算机内存 存储介质,可以对其进行电擦除和重新编程。闪存的两种主要类型以NAND和NOR 逻辑门命名。由浮栅MOSFET(浮栅金属氧化物半导体场效应晶体管)组成的单个闪存单元具有类似于相应栅极的内部特性。
什么是NOR闪存??
NOR的特点是芯片内执行(XIP, eXecute In Place),这样应用程序可以直接在flash 闪存内运行,不必再把代码读到系统RAM中。 NOR的传输效率很高,在1~4MB的小容量时具有很高的成本效益,但是很低的写入和擦除速度大大影响了它的性能。
主要方面:NOR存储器用于存储代码和执行。允许快速随机访问内存阵列中的任何位置。
什么是NAND闪存??
1.NAND存储器用于数据存储。需要较长的随机访问时间。 可以像块设备一样访问它,例如硬盘。NAND最适合需要大容量数据存储的系统。它具有更高的密度,具有容量较大,可改写速度快等优点,适用于大量数据的存储,和更低的成本,但是读取的速度却是不及NOR。
主要方面:NAND存储器用于数据存储。需要较长的随机访问时间。编程和擦除比NOR存储器更容易。NAND存储器的比特成本比NOR存储器便宜。,但是读取操作且是不及NOR。
NOND NOR之间的比较
1. NAND的成本比NAR的低。
2. NAND的容量比NAR的大。
3. NAND擦除, 写入速度比NAR快, 但是NAR的读取速度比NAND的快
4. 在NAND闪存中每个块的最大擦写次数是一百万次,而NOR的擦写次数是十万次。
5. NorFlash闪存是随机存储介质,用于数据量较小的场合;NandFlash闪存是连续存储介质,适合存放大的数据.
6. 由于NorFlash地址线和数据线分开,所以NorFlash芯片可以像SDRAM一样连在数据线上.NOR芯片的使用类似于通常内存芯片,传输效率高,可执行程序可以在芯片内执行(XI P, eXecute In Place),这样应用程序可以直接在flash闪存内运行,不必再把代码读到系统RAM中.由于NorFlash的这个特点,嵌入式系统中经常将NOR芯片做启动芯片使用.NandFlash共用地址和数据总线,需要额外联结一些控制的输入输出,所以直接将NAND芯片做启动芯片比较难.
7. NandFlash闪存芯片因为共用地址和数据总线的原因,不允许对一个字节甚至一个块进行的数据清空,只能对一个固定大小的区域进行清零操作;NorFlash芯片可以对字进行操作.所以在处理小数据量的I/O操作的时候的速度要快与NorFlash的速度.比如一块NorFlash芯片通常写一个字需要10us,在32位总线上写512字节需要1280us;NandFlash闪存写512字节需要的时间包括:512×每字节50ns+10us的寻页时间+200us的片擦写时间=234us.
8. NorFlash闪存的可靠性要高于NandFlash闪存,是因为NorFlash型闪存的接口简单,数据操作少,位交换操作少,因此可靠性高,极少出现坏区块,一般用在对可靠性要求高的地方.NandFlash型闪存接口和操作均相对复杂,位交换操作也很多,关键性数据更是需安错误探测/错误更正(EDC/ECC)算法来确保数据的完整性,因此出现问题的几率要大得多,坏区块也是不可避免的,而且由于坏区块是随机分布的,连纠错也无法做到.
(9)接口对比
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来运行启动代码.
10. 可靠性性对比
NandFlash器件中的坏块是随机分布的,以前也曾有过消除坏块的努力,但发现成品率太低,代价太高,根本不划算.Nand器件需要对介质进行初始化扫描以发现坏块,并将坏块标记为不可用.在已制成的器件中,如果通过可靠的方法不能进行这项处理,将导致高故障率。而坏块问题在NorFlash上是不存在的.
在Flash的位翻转(一个bit位发生翻转)现象上,NAND的出现几率要比NorFlash大得多.这个问题在Flash存储关键文件时是致命的,所以在使用NandFlash时建议同时使用EDC/ECC等校验算法.
虽说看起来NAND的优点更多,但是再不同的地方,就会有不同的价值:通常,NOR闪存是需要较低容量、快速随机读取访问和更高数据可靠性的应用的理想选择,例如代码执行所需。NAND闪存则非常适用于需要更高内存容量和更快写入和擦除操作的数据存储等应用。
总结
本抱着学习NOR以及NAND知识的态度去学习该方便的知识的,但是看到一篇文章对于该方面的总结实在是太完善了,所以就 "写" 一半,"搬运"一半了。同时也缺少了NAND以及NOR的原理图,嗯额,总觉得不是现在的我能去理解明白的,就没去寻找了搬运了。后续更新补充。
原理图
待续。。。
扩展
此文章是一篇外国文章,内包含了NAND和NOR的原理图,以及其他存储器的简单介绍如下
ROM –只读存储器,一次写入数据,允许多次读取访问。
PROM –可编程只读存储器,一次写入数据(不是在制造过程中,而是在以后的任何时候),允许多次读取访问。
EPROM –可擦除的可编程只读存储器,通过紫外线照射擦除内容后可以对其进行重新编程。
EEPROM –电可擦可编程只读存储器,可通过电压脉冲擦除。可以重写有限的次数。Ant仅在有限的时间内存储数据。
Flash EEPROM –比EEPROM更先进,更快速。允许以块为单位擦除和存储数据,但不能以字节为单位。
闪存目前非常流行。两种最受欢迎的类型是:NOR和NAND闪存。
NOR和NAND闪存的体系结构和用途不同。
NOR存储器用于存储代码和执行。允许快速随机访问内存阵列中的任何位置。
NAND存储器用于数据存储。需要较长的随机访问时间。编程和擦除比NAND存储器更容易。NAND存储器的比特成本比NOR存储器便宜。
最后
由于还处于学习阶段,若该文章有什么出错的地方欢迎批评指正,若是你有更好的想法,也欢迎留言。