选择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闪存的最大密度。
用于数据存储的可管理NAND
由于嵌入式NAND控制器的局限性,许多系统设计师在寻求可管理的NAND方案。有多家供应商已能提供可管理的NAND存储器产品,它们能降低嵌入式应用中传统存储子系统的复杂性。这些可管理NAND存储器产品包括了iNAND、GBNAND、moviNAND、可管理NAND和NANDrive,主要用于数据存储。通过有效管理带NAND控制器的内置NAND闪存和集成在相同器件中的闪存文件系统(FFS),它们降低了系统复杂度,如图2所示。为了更加方便集成,这些产品采用标准的接口,如安全数据接口(SD)、多媒体卡(MMC)或先进技术附件规格(ATA)。例如,iNAND和GBNAND采用的是SD接口,moviNAND和可管理NAND采用的是MMC接口,NANDrive采用的则是ATA接口。这些接口不能提供XIP访问,因此采用这些器件的系统可能还需要一个NOR闪存用于启动功能。
图2:可管理NAND存储器主要用于数据存储,它通过管理带NAND控制器的内置NAND闪存和集成在同一器件中的闪存文件系统降低了系统复杂性。
使用可管理NAND器件后,主芯片组就无需集成复杂的NAND管理功能。因此芯片供应商不再为要紧跟不断演变的NAND技术而忧心,从而让供应商能专注于提高他们的核心竞争力。
可管理NAND混合产品
因为可管理NAND闪存不提供启动功能,系统设计师仍必须使用较昂贵的NOR闪存器件来实现启动。不过包括mDOC H3在内的混合产品已经面世。这些混合器件在同一个器件中通过集成RAM和可管理NAND来简化传统的存储子系统,如图3所示。
图3:一些混合解决方案将RAM和可管理NAND集成在同一个器件中。
混合产品解决了与可管理NAND相关的启动问题。它们可以直接从NAND闪存启动,无需较昂贵的启动用NOR闪存器件,从而有效降低了系统总成本。可管理NAND混合产品也有助于减少元器件数量,节省电路板面积,这使它们非常适合于诸如手机等空间较敏感的应用。因为使用NAND闪存来实现非易失性存储,因此这种解决方案可以提供更高的密度。
NAND混合器件的缺点是启动时间较长,因为它们在上电后必须将启动代码从NAND挎贝进启动RAM。另外,NAND混合器件非常复杂,很难集成,并且要求先进的操作系统支持主芯片组上的需求分页。
mDOC H3通过NOR类总线连接主处理器,相比NAND闪存能提供更快的读取性能,也可以比NOR提供更快的写入性能。由于具有更快的写入速度,这些器件非常适合用来存储多媒体数据。
使用可管理的NAND或者具有启动功能的可管理NAND混合产品不会显著降低存储子系统的总体复杂性。因此系统设计师仍然要处理与不同存储器类型、接口、供应商、特殊供应商规范等有关的复杂问题。这类存储子系统要求更多元器件、更多引脚和复杂的软硬件开发,因此将增加系统成本、电路板面积、开发时间和功耗。同时,它们还将提升主处理器中的外部存储器控制器的复杂度。因此,这些混合器件还不够成熟。当前系统需要一种易用、单标准总线、完整的可管理存储子系统实现代码和数据存储以及系统RAM,并且所有功能都集中在一个器件中。
系统设计师需要的是一个完整的存储子系统,它能提供数百兆XIP代码存储,且能满足目前多媒体应用不断增长的数据存储需求。理想解决方案应充分整合NOR(快速读取)、NAND(较低成本和较高密度)和RAM(简单总线操作)的优势,而且必须易用、易设计,并有完善的可管理性。因而,这样的解决方案需要很少甚至不需要额外的硬件或软件开发,可提供标准接口,无需任何胶合逻辑就能实现与主芯片组/处理器的无缝集成,从而使得存储子系统的访问象SRAM一样简单方便。
这种存储子系统解决方案中的内置控制器必须实现ECC、坏块管理和损耗均衡功能,以便应对内置NAND闪存的缺陷。这个控制器还必须能应对所有内置存储器(NOR、NAND和RAM)的复杂性和不足,从而代替主系统完成这些复杂的管理功能。
另外,这种解决方案还必须通过降低材料、开发和制造成本来满足系统总成本要求。而且还必须通过提供方便集成、可扩展的解决方案来满足移动和消费电子设备系统设计师对缩短面市时间的要求。
下一代存储子系统
目前面市的可管理存储子系统可以提供上述所有性能和好处。如图4所示的这种配置由一个带内置启动NOR闪存的存储器控制器、NAND闪存和RAM组成,并且全部集成在一个封装内。在NAND闪存前使用了RAM缓存,这样有助于控制器处理需求分页和其它存储器管理功能。另外,RAM缓存使存储子系统线性可寻址,变得象SRAM一样简单。
图4:全功能存储器是可管理存储子系统的一个示例,它在同一个封装内同时集成了带内置启动NOR闪存的存储器控制器、NAND闪存和RAM(a)。控制器可以处理需求分页和其它存储器管理功能(b)。
RAM块划分成两个主处理器可访问、用户可配置的部分:一个是用于伪NOR(PNOR)的缓存部分,一个是用于主处理器的系统RAM部分。NAND块用于PNOR区域和存储器映射的ATA NAND磁盘区的非易失存储器。可配置PNOR块通过使用RAM缓存和NAND闪存模拟NOR功能。因为NAND是用于主要的非易失存储介质,因此这种解决方案可以提供较大的XIP代码存储,可有效地代替传统高成本、高密度NOR闪存。通过在标准RAM(PSRAM或SDR/DDR SDRAM)总线上使用工业标准ATA数据存储协议,该解决方案可以为日趋增长的多媒体应用提供强大的ATA类数据存储功能。另外,PNOR块中的RAM缓存还能减少对NAND闪存的直接读写访问,从而有助于提高代码和数据存储区的耐用性和可靠性。
因为这种可管理存储子系统采用了很小的封装,因此可以简化主处理器接口、减少系统复杂性、缩短设计时间、降低系统总成本并提高系统质量和可靠性。其它好处还包括用户可配置的XIP PNOR区、用于MLC和SLC NAND的超强硬件检错和纠错以及向更高密度的可扩展性等。由于不需要复杂的软硬件开发,这种可管理的存储子系统也许就是大家盼望已久的“戈多”。