如何选用合适的闪存进行设计?
选择NAND还是NOR,这确实是个问题。不同的应用和功能应该选用不同类型的闪存。
在寻找完美"通用存储器"的过程中,嵌入式系统设计师就象是戏剧《等待戈多》中的人物一样,他们一直等待舞台下的人物"戈多"走上舞台,同时又在猜测舞台上正在表演的人物或新人中哪个是戈多。
正如大家所知的那样,从20世纪70年代开始,嵌入式系统产业样一直在等待"舞台下"出现一种叫作"通用存储器"的"半导体人物",以便取代从大型机、迷你计算机和台式机传承下来的存储层次(memory hierarchy)体系:非易失性硬盘用于长期的海量存储和备份,动态RAM用于局部快速存储器访问,而SRAM和ROM则分别专门用于快速存取和代码存储。
随着运算结构的嵌入、移动和便携特性越来越突出,这种需求也越来越强烈,作为"通用存储器"的候选产品开始陆续登场。有些产品,如EEPROM、EPROM、UV-EPROM、铁电RAM和各种伪RAM组合已经开始走下坡路,磁性RAM等其它产品虽开始受到瞩目,但由于众多经济和技术原因却受到质疑。
不过,目前的一些"角色"特别是各种NAND和NOR闪速EPROM正在被它们的供应商吹捧为"舞台下人物"-通用存储器,或者至少是它的"亲戚"或"很近的朋友",这其中包括了OneNAND、OrNAND、iNAND、GBNAND、moviNAND、ManagedNAND和NANDrive等。由于有众多"演员"急于要担当角色,因此选择正确的存储器子系统已变得越来越复杂,特别是在你既要给移动和嵌入式系统增加更多的多媒体功能,同时又要缩小物理尺寸和降低系统总成本的时候,系统中不仅代码和数据存储器需求会有所增加,而且你设计实现必须更加精简可靠。
闪存是最实用的解决方案,但了解哪种闪存最适合系统使用是关键。NAND、NOR、可管理NAND和一些混合存储器中哪种才是最佳选择呢?
NAND闪存是一种需要缺陷管理的高密度低价格非易失性存储器,用这种存储器来满足这些不断增长的代码和数据存储器需求会使存储器子系统更加复杂。再加上需要支持不同的存储器类型、接口、供应商和特殊供应商规范,因此存储器子系统将愈加复杂。
一个完整、可管理的存储器子系统解决方案可以用工业标准的RAM(PSRAM或SDR/DDR SDRAM)接口来设计。这种可管理的存储器子系统可以与主芯片组/处理器实现无缝集成,并且主系统无需再要应对内嵌存储器件的复杂性和不足问题。
与NAND闪存不同的是,NOR闪存是目前嵌入式系统中最老也是应用最广泛的存储器之一,它可以用于代码和数据存储。其主要优点是代码可以直接在NOR闪存中执行。另外,NOR闪存可以直接与主处理器接口,因此设计方便,可实现产品的快速上市。
随着嵌入式系统中多媒体功能的增加,对代码和数据存储的需求也不断上升。对这些应用而言,与其它方案(如NAND闪存)相比,采用更高密度的NOR闪存做代码和数据存储将提升成本。另外,目前最高密度的NOR闪存只有1Gb。而且多媒体数据存储器需要较高的读写性能。因此在许多嵌入式应用(例如高端手机)中系统设计师转用NAND闪存来存储多媒体文件和应用代码。
用于代码和数据存储的NAND
NAND闪存非常适合需要大量代码存储(如操作系统和应用程序)以及大量数据存储的应用,因为NAND闪存不贵,而且可以提供较高的密度(一个裸片可高达16Gb)。与NOR不同的是,NAND闪存不支持芯片内执行(XIP)或随机存取。因此一些使用NAND闪存的系统需要一个低密度的NOR闪存用于系统启动和BIOS代码执行。在其它系统中,NAND闪存控制器或主处理器中的嵌入式启动ROM可提供启动功能。在系统启动后,基于NAND的系统将使用代码映射或需求分页功能执行代码。在代码映射模式下,整个操作系统和应用程序将从NAND闪存挎贝到系统RAM,而在需求分页模式时,将根据需要将部分操作系统和应用程序挎贝到系统RAM中执行。
虽然NAND闪存与NOR相比价格便宜,而且有更高的密度,但NAND可靠性低,对许多应用而言需要辅以包括误差检测和纠正以及损耗均衡在内的缺陷管理手段才具有可用性。这些NAND闪存管理功能要求复杂的硬件和软件。图1显示了主芯片组与独立NAND闪存相接口的系统。在这样的系统中,缺陷管理功能必须由主芯片组来实现。在主处理器上运行这种闪存管理功能需要一定的软件开发,并且要耗用一些主机的CPU和存储器资源,因此容易降低系统总性能。
图1:主芯片组与独立NAND闪存直接接口的系统框图。
随着NAND闪存供应商采用越来越小的工艺尺寸,单层单元(SLC)NAND闪存的ECC(纠错码)要求已经从每512字节扇区的1位增加到4位,而多层单元(MLC)NAND闪存也从每512字节扇区的4位增加到8位纠错编码。页面尺寸则从512字节增加到4096字节。一些较小尺寸的SLC NAND闪存的可用性则从10万次降低到5万次,MLC NAND闪存的可用性从1万次下降到5千次(某些情况下为3千次!)。为了减少系统中分立器件的数量,许多芯片组供应商开始在芯片组中集成NAND闪存控制器,这样芯片组就能直接接口独立的NAND闪存。不过由于芯片组设计周期长,芯片组供应商很难跟上NAND闪存技术的发展步伐。因此芯片组中的嵌入式NAND闪存控制器功能经常落后于NAND闪存技术。
也有些解决方案与标准NAND闪存相似,但可以提供更好的性能和功能。例如,OneNAND就是NAND闪存的一个变种,它在同一器件中整合了RAM和独立SLC NAND闪存,因此可以提供启动功能和更快的读取速度。OneNAND要求每512字节扇区1位ECC,并且可以在主芯片组中或独立的控制器中实现NAND闪存管理功能。
OrNAND则整合了MirrorBit NOR和NAND闪存接口,它可以比以前的NOR器件提供更快的写入速度。OrNAND同样在主芯片组中或独立控制器只要求执行1位的ECC便可确保可靠的系统启动。不过OrNAND支持的最大密度目前只有1Gb,低于现有NAND闪存的最大密度。
- Spansion发布NOR闪存解决方案(06-11)
- 什么是闪存和缓存 (04-25)
- SD卡以及闪存介质的修复方法 (08-27)
- USB闪存盘驱动器与PIC微控制器的接口设计(04-04)
- 连结USB闪存盘与PIC微控制器的简单方案(04-05)
- Spansion发布128Mb MirrorBit SPI闪存 (04-18)