NAND FLASH 跟NOR FLASH的特点和区别

NAND FLASH 和NOR FLASH的特点和区别

1 .NOR Flash和NAND Flash启动说明

1>NOR flash有自己的数据和地址总线,因此可采用类似RAM的随机访问,因此是可以直接在它上面运行程序的,因此是可以直接在它上面运行程序的,因此NOR Flash是可以用来Boot的。这种片上运行叫做execute in place即EIP.

2>S3C2410之所以可以将loader代码烧在NAND上从而boot,是由于s3c2410有一个内置的SRAM,叫做stepping stone.当加电后,可以自动将NAND的起始4K的内容拷贝到SRAM里,然后在RAM里执行,将NAND里的代码拷贝至SDRAM。也就是我们就可以讲一个小于4K的loader烧至NAND Flash上就可以了。

3>可以将loader代码烧在另外的ROM里,直接在ROM里运行loader将代码由NAND拷贝至SDRAM。

4>NOR Flash适合做代码存储并EIP,读取速度快。NAND适合用来做大量数据存储的。

2. NOR与NAND型flash的区别

1>闪存芯片读写的基本单位不同

(1)应用程序对NOR芯片操作以“字”为基本单位。为了方便对大容量NOR闪存的管理,通常将NOR闪存分成大小为128KB或者64KB的逻辑块,有时候块内还分成扇区。读写时需要同时逻辑块号和块内偏移。

(2)应用程序对 NAND 芯片操作是以“块”为基本单位。NAND闪存的块比较小,一般是8KB,然后每块又分成页,页的大小一般是512字节。要修改NAND芯片中一个字节,必须重写整个数据块。

2>NOR闪存是随机存储介质,用于数据量较小的场合;NAND闪存是连续存储介质,适合存放大的数据。

3>由于NOR地址线和数据线分开,所以NOR芯片可以象SRAM一样连在数据线上。NOR芯片的使用也类似于通常的内存芯片,它的传输效率很高,可执行程序可以在片内执行,这样应用程序可以直接在flash闪存内运行,不必把代码读到系统RAM中。由于NOR的这个特点,嵌入式系统中经常将NOR芯片做启动芯片使用。而NAND公用地址和数据总线,需要额外联结一些控制的输入输出,所以直接将NAND芯片做启动芯片比较难。

4>NAND闪存芯片因为共用地址和数据总线的原因,不允许对一个字节甚至一个块进行的数据清空,只能对一个固定大小的区域进行清零操作;而NOR芯片可以对字进行操作。所以在处理小数据量的I/O操作的时候的速度要快与NAND的数据。

5>NAND闪存的容量比较大,目前最大容量已经达到8G字节。为了方便管理,NAND的存储空间使用了块和页两级存储体。由于对NAND闪存的操作都是以块和页为单位的,所以在向NAND闪存进行大量数据读写时,NAND的速度要快于NOR闪存。

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

7>NAND Flash一般地址线和数据线共用,对读写速度一定影响;而NOR Flash闪存数据线和地址线分开,所以相对而言读写速度快一些。

8>NAND和NOR芯片的共性首先表现在向芯片中写数据必须先将芯片中对应的内容清空,然后再写入,也就是通常说的“先檫后写”。只不过NOR芯片只用檫写一个字,而NAND需要擦写整个块。

9>其次,闪存檫写的次数都是有限的,当闪存的使用接近使用寿命的时候,经常会出现些操作失败;到达使用寿命时,闪存内部存放的数据虽然可以读,但是不能再进行写操作论文,所以为了防止上面问题的发生,不能对某个特定的区域反复进行写操作。通常NAND的可檫写次数高于NOR芯片,但是由于NAND通常是整块檫写,快内的页面中如果有一位失效整个快就会失效,而且由于檫写过程复杂,失败的概率相对较高,所以从整体上来说NOR的寿命较长。

10>另一个共性是闪存的读写操作不仅仅是一个物理操作,实际上在闪存上存放数据必须使用算法实现,整个模块一般在驱动程序的MTD(Memory Technology Drivers)模块中或者在FTLZ(Flash TranslationLayer)层内实现,具体算法和芯片的生产厂商以及芯片型号有关系。

11>从使用角度来看,NOR闪存与NAND闪存是各有特定的:

(1)NOR的存储密度低,所以存储一个字节的成本比较高,而NAND闪存的存储密度和存储容量均比较高;

(2)NAND型闪存在檫,写文件(特别是连续的大文件)时速度非常快,非常适用于顺序读取的场合,而NOR的读取速度很快,在随机存取的应用中有良好的表现。

3. NAND与NOR技术的比较

1>一般的原则是:在大容量的多媒体应用用选用NAND型闪存,而在数据/程序存储应用中选用NOR型闪存。

2>我们一般用NOR芯片存储程序,用NAND芯片存储数据,使两种闪存的优势互补。

eg:

采用支持XIP技术的NOR闪存能够直接运行OS,速度很快,既简化了设计,又降低了成本,所以许多手机都采用NOR+RAM的设计。NOR闪存的不足之处是存储密度较低,所以也有采用NAND+RAM的设计。对于这两种方案,很难说哪一种更好,因为我们不能离开具体的产品而从某一个方面单纯地去评价。追求小巧优雅的手机将需要NOR闪存支持;追求大存储容量的手机则将更多地选择NAND闪存;而同时追求功能和速度的手机则会采用NOR+NAND+RAM的设计,这种取长补短的设计能够发挥NOR和NAND各自的优势。

3>除了速度、存储密度的因素,在选择闪存芯片时,还需要考虑接口设计、即插即用设计和驱动程序等诸多问题,因为两种类型的闪存在上述几个方面也有很多的不同。比如在驱动程序方面,NOR型器件运行代码不需要任何的软件支持,而在NAND器件上进行同样操作时就需要存储技术驱动程序(MTD)的支持。虽然NAND和NOR器件在进行写入和擦除操作时都需要MTD, 但对于NAND来说驱动程序的开发难度更大,因为NAND闪存的纠错和坏块处理功能都需要通过驱动程序来实现

3.使用上差异

在使用性生体现出的差异也是与NOR和NAND自身的架构设计分不开的。

1>接口方面:NOR的设计有明显的传统闪存的特征,因此实际应用起来相对于NAND全新的复杂I/O设计要容易的多。而且,在使用NAND闪存时,必须先写入驱动程序,才能继续执行其他操作

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

3>在NOR闪存上运行代码不需要任何的软件支持,在NAND闪存上进行同样操作时,通常需要驱动程序,也就是内存技术驱动程序(MTD), NAND和NOR闪存在进行写入和檫除操作时都需要MTD。

4>使用NOR闪存时所需要的MTD要相对少一些,许多厂商都提供用于NOR闪存的更高及软件,这其中包括M-System的TrueFFS驱动。