狂奔的蜗牛


           路曼曼其修远兮 吾将上下而求索
posts - 9, comments - 0, trackbacks - 0, articles - 0
  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理

2009年8月6日

NOR和NAND的区别
NOR和NAND是现在市场上两种主要的非易失闪存技术。NOR一般只用来存储少量的代码;NAND则是高存储密度数据的理想解决方案。NOR主要应用在代码存储介质中,NAND适合于数据存储。

器件特点:

NOR的特点是应用简单、无需专门的接口电路、传输效率高,它是属于芯片内执行(XIP, eXecute In Place),这样应用程序可以直接在(NOR型)flash闪存内运行,不必再把代码读到系统RAM中。在1~4MB的小容量时具有很高的成本效益,但 是很低的写入和擦除速度大大影响了它的性能。

NAND结构能提供极高的单元密度,可以达到高存储密度,并且写入和擦除的速度也很快。应用NAND的困难在于flash的管理和需要特殊的系统接口。

性能比较:

任何flash器件的写入操作只能在空或已擦除的单元内进行,所以大多数情况下,在进行写入操作之前必须先执行擦除。

NAND器件执行擦除操作是十分简单的,而NOR则要求在进行擦除前先要将目标块内所有的位都写为0。

由于擦除NOR器件时是以64~128KB的块进行的,执行一个写入/擦除操作的时间为5S,与此相反,擦除NAND器件是以8~32KB的块进行的,执行相同的操作最多只需要4ms。

执行擦除时块尺寸的不同进一步拉大了NOR和NADN之间的性能差距,统计表明,对于给定的一套写入操作(尤其是更新小文件时),更多的擦除操作必须在基于NOR的单元中进行。

这样,当选择存储解决方案时,设计师必须权衡以下的各项因素。

● NOR的读速度比NAND稍快一些。

● NAND的写入速度比NOR快很多。

● NAND的4ms擦除速度远比NOR的5s快。

● 大多数写入操作需要先进行擦除操作。

● NAND的擦除单元更小,相应的擦除电路更少。

接口差别:

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

NAND器件使用复杂的I/O口来串行地存取数据,各个产品或厂商的方法可能各不相同。8个引脚用来传送控制、地址和数据信息。

NAND读和写操作采用512字节的块,这一点有点像硬盘管理此类操作,很自然地,基于NAND的存储器就可以取代硬盘或其他块设备。

容量和成本:

 NAND flash的单元尺寸几乎是NOR器件的一半,由于生产过程更为简单,NAND结构可以在给定的模具尺寸内提供更高的容量,也就相应地降低了价格。

NOR flash占据了容量为1~16MB闪存市场的大部分,而NAND flash只是用在8~128MB的产品当中,这也说明NOR主要应用在代码存储介质中,NAND适合于数据存储,NAND在CompactFlash、 Secure Digital、PC Cards和MMC存储卡市场上所占份额最大。

可靠性和耐用性:

 从寿命(耐用性)、位交换和坏块处理三个方面来比较NOR和NAND的可靠性。

l        寿命(耐用性)
  在NAND闪存中每个块的最大擦写次数是一百万次,而NOR的擦写次数是十万次。NAND存储器除了具有10比1的块擦除周期优势,典型的NAND块尺寸要比NOR器件小8倍,每个NAND存储器块在给定的时间内的删除次数要少一些。

l        位交换

所有flash器件都受位交换现象的困扰。在某些情况下(很少见,NAND发生的次数要比NOR多),一个比特位会发生反转或被报告反转了。一位的 变化可能不很明显,但是如果发生在一个关键文件上,这个小小的故障可能导致系统停机。如果只是报告有问题,多读几次就可能解决了。

当然,如果这个位真的改变了,就必须采用错误探测/错误更正(EDC/ECC)算法。位反转的问题更多见于NAND闪存,NAND的供应商建议使用NAND闪存的时候,同时使用EDC/ECC算法。

这个问题对于用NAND存储多媒体信息时倒不是致命的。当然,如果用本地存储设备来存储操作系统、配置文件或其他敏感信息时,必须使用EDC/ECC系统以确保可靠性。

l        坏块处理

NAND器件中的坏块是随机分布的。以前也曾有过消除坏块的努力,但发现成品率太低,代价太高,根本不划算。

NAND器件需要对介质进行初始化扫描以发现坏块,并将坏块标记为不可用。在已制成的器件中,如果通过可靠的方法不能进行这项处理,将导致高故障率。

易使用性:

可以非常直接地使用基于NOR的闪存,可以像其他存储器那样连接,并可以在上面直接运行代码。

由于需要I/O接口,NAND要复杂得多。各种NAND器件的存取方法因厂家而异。在使用NAND器件时,必须先写入驱动程序,才能继续执行其他操 作。向NAND器件写入信息需要相当的技巧,因为设计师绝不能向坏块写入,这就意味着在NAND器件上自始至终都必须进行虚拟映射。

软件支持:

 当讨论软件支持的时候,应该区别基本的读/写/擦操作和高一级的用于磁盘仿真和闪存管理算法的软件,包括性能优化。

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

 使用NOR器件时所需要的MTD要相对少一些,许多厂商都提供用于NOR的MTD。

另一篇相关文章:

FLASH存储器又称闪存,主要有两种:NorFlash和NandFlash,下面我们从多个角度来对比介绍一下。在实际开发中,设计者可以根据产品需求来进行闪存的合理选择。

1、接口对比

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

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

2、容量和成本对比

相比起NandFlash来说,NorFlash的容量要小,一般在1~16MByte左右,一些新工艺采用了芯片叠加技术可以把NorFlash 的容量做得大一些。在价格方面,NorFlash相比NandFlash来说较高,如目前市场上一片4Mbyte的AM29lv320 NorFlash零售价在20元左右,而一片128MByte的k9f1g08 NandFlash零售价在30元左右。

NandFlash生产过程更为简单,NAND结构可以在给定的模具尺寸内提供更高的容量,这样也就相应地降低了价格。

3、可靠性性对比

NAND器件中的坏块是随机分布的,以前也曾有过消除坏块的努力,但发现成品率太低,代价太高,根本不划算。NAND器件需要对介质进行初始化扫描 以发现坏块,并将坏块标记为不可用。在已制成的器件中,如果通过可靠的方法不能进行这项处理,将导致高故障率。而坏块问题在NorFlash上是不存在 的。

在Flash的位翻转(一个bit位发生翻转)现象上,NAND的出现几率要比NorFlash大得多。这个问题在Flash存储关键文件时是致命的,所以在使用NandFlash时建议同时使用EDC/ECC等校验算法。

4、寿命对比

在NAND闪存中每个块的最大擦写次数是一百万次,而NOR的擦写次数是十万次。闪存的使用寿命同时和文件系统的机制也有关,要求文件系统具有损耗平衡功能。

5、升级对比

NorFlash的升级较为麻烦,因为不同容量的NorFlash的地址线需求不一样,所以在更换不同容量的NorFlash芯片时不方便。通常我们会通过在电路板的地址线上做一些跳接电阻来解决这样的问题,针对不同容量的NorFlash。

而不同容量的NandFlash的接口是固定的,所以升级简单。

6、读写性能对比

写操作:任何flash器件的写入操作都只能在空或已擦除的单元内进行。NAND器件执行擦除操作是十分简单的,而NOR则要求在进行擦除前先要将 目标块内所有的位都写为1。擦除NOR器件时是以64~128KB的块进行的,执行一个擦除/写入操作的时间约为5s。擦除NAND器件是以8~32KB 的块进行的,执行一个擦除/写入操作最多只需要4ms。

读操作:NOR的读速度比NAND稍快一些。

7、文件系统比较

Linux系统中采用MTD来管理不同类型的Flash芯片,包括NandFlash和NorFlash。支持在Flash上运行的常用文件系统有 cramfs、jffs、jffs2、yaffs、yaffs2等。cramfs文件系统是只读文件系统。如果想在Flash上实现读写操作,通常在 NorFlash上我们会选取jffs及jffs2文件系统,在NandFlash上选用yaffs或yaffs2文件系统。Yaffs2文件系统支持大 页(大于512字节/页)的NandFlash存储器。

posted @ 2009-08-06 17:02 九头龙 阅读(646) 评论(0) 编辑


目前常见的FLASH芯片的生产厂家主要有Intel,SST,AMD,MXIC等,现以使用比较广泛的16M BYTE的FLASH芯片为例,比较它们在性能、设计上的一些异同。
Intel的16M BYTE FLASH芯片的型号为28F160C3,SST的为39VF1601/1602,AMD的为29LV160D,MXIC的为29LV160BT/BB。

工作电压:
这几种FLASH芯片的正常读、写、擦除电压都为2.7V-3.6V,但较特殊的是Intel的28F160C3,有一条专用的快速写、擦除电源腿,可接+12V电源进行快速写、擦除操作,若无+12V电源,仍可接正常电源进行正常读写。

执行速度:
这几种FLASH芯片都可提供最快70ns的数据读取速度。

可靠性:
这几种FLASH芯片都支持最少100,000次的写、擦除操作。并且都提供符合商业级、工业级标准的芯片。

芯片制作工艺:
Intel 的28F160C3有0.13μm、0.18μm、0.25μm三种工艺的版本
SST的39VF1601/1602为0.18μm
AMD的29LV160D为0.23μm
MXIC的29LV160BT/BB为0.23μm

封装:
Intel提供的封装有:48-Lead TSOP,48-Ball Easy BGA,48-Ball μBGA/VFBGA
SST提供的封装有:48-Lead TSOP,48-Ball TFBGA
AMD提供的封装有:44-Lead SOP,48-Lead TSOP,48-Ball FBGA
MXIC提供的封装有:44-Lead SOP,48-Lead TSOP,48-Ball CSP

功耗:
这几种FLASH芯片在Typical Read时的电流相同,都为9mA

BOOT方式:
这几种FLASH芯片都提供TOP BOOT和BOTTOM BOOT方式的型号。

数据存取线宽:
Intel 的28F160C3和SST的39VF1601/1602都为1M×16bits的存取线宽,2M×8bits存取线宽的FLASH芯片为另外型号。AMD的29LV160D和MXIC的29LV160BT/BB则兼容1M×16bits和2M×8bits的存取线宽,通过BYTE信号线控制存取为16bits还是8bits。

Block划分:
Intel 的28F160C3划分为8个8k 字节的Block和31个64k字节的Block
SST的39VF1601/1602可划分为32个64k字节的Block或512个4k字节的sector
AMD的29LV160D和MXIC的29LV160BT/BB划分为1个16k、2个8k、1个32k和31个64k字节的Block

擦除方式:
这几种FLASH芯片都提供Block单独擦除和整片擦除能力

写保护:
Intel 的28F160C3可通过WP#引脚提供所有Block的硬件写保护,并提供任一Block的软件写保护
SST的39VF1601/1602只能通过WP#引脚提供Top Block(Top Boot)或Bottom Block(Bottom Boot)的硬件写保护
AMD的29LV160D和MXIC的29LV160BT/BB只能提供任一Block的软件写保护

RESET:
这几种FLASH芯片都提供硬件RESET引脚

Suspend:
Intel 的28F160C3提供Program Suspend/Resume和Erase Suspend/Resume能力
SST的39VF1601/1602、AMD的29LV160D和MXIC的29LV160BT/BB只提供Erase Suspend/Resume能力

Software:
Intel 的28F160C3提供Common Flash Interface和Intel Flash Data Integrator
SST的39VF1601/1602、AMD的29LV160D和MXIC的29LV160BT/BB只提供Common Flash Interface

Security-ID:
Intel 的28F160C3提供64 bit Unique Device Identifier和64 bit User Programmable OTP Cells
SST的39VF1601/1602提供128 bit Unique Device Identifier和128 bit User Programmable OTP Cells
AMD的29LV160D和MXIC的29LV160BT/BB不提供User Programmable OTP Cells

Operation detecting:
Intel 的28F160C3和SST的39VF1601/1602只提供软件读寄存器的方式进行操作检测
AMD的29LV160D和MXIC的29LV160BT/BB提供软件和硬件RY/BY#引脚进行操作检测

posted @ 2009-08-06 14:24 九头龙 阅读(1200) 评论(0) 编辑