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