嵌入式系统架构浅谈:硬件的选型(二) -------外部存储器

1. 嵌入式的外部存储器

嵌入式系统中,外部的存储器一般是Nand flash和Nor flash,都称为非易失存储器。存储器的物理构成包含页内地址,页(Page),块(Block)。可以得出存储器的大小 = 一页的大小 * 多少页 * 多少块。

下面着重于Nand flash和Nor flash的各个特点和共性与差异。

1.1特点

1.1.1 Nand Flash

Nand flash存储器具有容量较大,改写速度快等优点,适用于大量数据的存储,因而在业界得到了越来越广泛的应用,如嵌入式产品中包括数码相机、MP3随身听记忆卡、体积小巧的U盘等。

1.1.2 Nor Flash

Nor flash的特点是芯片内执行,这样应用程序可以直接在flash 闪存内运行,不必再把代码读到系统RAM中。NOR的传输效率很高,在1~4MB的小容量时具有很高的成本效益,但是其很低的写入和擦除速度大大影响了它的性能。

1.2 电路原理

这里不详细记录说明电路的原理,值得一提的是两个Flash清除数据是写 1 的,所以Flash中FF的是代表无数据。

另外说明的是两个Flash的连接和编址方式差异:

两种 Flash 具有相同的存储单元,工作原理也一样。为了缩短存取时间并不是对每个单元 进行单独的存取操作,而是对一定数量的存取单元进行集体操作。 Nand 型 Flash 各存 储单元之间是串联的,而 Nor 型 Flash 各单元之间是并联的。为了对全部的存储单元有 效管理,必须对存储单元进行统一编址。
  Nand的全部存储单元分为若干个块,每个块又分为若干个页,每个页是 512字节,就是 512 个 8 位数,就是说每个页有 512 条位线,每条位线下 有 8 个存储单元;那么每页存储的数 据正好跟硬盘的一个扇区存储的数据相同,这是设计时为了方便与磁盘进行数据交换而特意 安排的,那么块就类似硬盘的簇;容量不同,块的数量不同,组成块的页的数量也不同。 在读取数据时,当字线和位线锁定某个晶体管时,该晶体管的控制极不加偏置电压,其它的 7个都加上偏置电压 而导通,如果这个晶体管的浮栅中有电荷就会导通使位线为低电平, 读出的数就是 0,反之就是 1。
  NOR 的每个存储单元以并联的方式连接到位线,方便对每一位进行随机存取;具有专用的 地址线,可以实现一次性的直接寻址;缩短了 FLASH 对处理器指令的执行时间。

1.3 区别

1.3.1 性能

flash闪存是非易失存储器,可以对称为块的存储器单元块进行擦写和再编程。任何flash器件的写入操作只能在空或已擦除的单元内进行,所以大多数情况下,在进行写入操作之前必须先执行擦除。

NAND器件执行擦除操作是十分简单的,而NOR则要求在进行擦除前先要将目标块内所有的位都写为0。由于擦除NOR器件时是以64~128KB的块进行的,执行一个写入/擦除操作的时间为5秒,与此相反,擦除NAND器件是以8~32KB的块进行的,执行相同的操作最多只需要4毫秒。执行擦除时块尺寸的不同进一步拉大了NOR和NADN之间的性能差距,统计表明,对于给定的一套写入操作(尤其是更新小文件时),更多的擦除操作必须在基于NOR的单元中进行。这样,当选择存储解决方案时,设计师必须权衡以下的各项因素。

  1. NOR的读速度比NAND稍快一些。
  2. NAND的写入速度比NOR快很多。
  3. NAND的4毫秒擦除速度远比NOR的5秒快。
  4. 大多数写入操作需要先进行擦除操作。
  5. NAND的擦除单元更小,相应的擦除电路更少。

1.3.2 接口

NOR flash带有SRAM接口,有足够的地址引脚来寻址,可以很容易地存取其内部的每一个字节。
  NAND器件使用复杂的I/O口来串行地存取数据,各个产品或厂商的方法可能各不相同。8个引脚用来传送控制、地址和数据信息。NAND读和写操作采用512字节的块,这一点有点像硬盘管理此类操作,很自然地,基于NAND的存储器就可以取代硬盘或其他块设备。

1.3.3 容量和成本

NAND flash的单元尺寸几乎是NOR器件的一半,由于生产过程更为简单,NAND结构可以在给定的模具尺寸内提供更高的容量,也就相应地降低了价格。
  NOR flash占据了容量为1~16MB闪存市场的大部分,而NAND flash只是用在8~128MB的产品当中,这也说明NOR主要应用在代码存储介质中,NAND适合于数据存储。

1.3.4 寿命(耐用性)

在NAND闪存中每个块的最大擦写次数是一百万次,而NOR的擦写次数是十万次。

NAND存储器除了具有10比1的块擦除周期优势,典型的NAND块尺寸要比NOR器件小8倍,每个NAND存储器块在给定的时间内的删除次数要少一 些。

1.3.5 位交换

所有flash器件都受位交换现象的困扰。在某些情况下(很少见,NAND发生的次数要比NOR多),一个比特位会发生反转或被报告反转了。一位的变化可能不很明显,但是如果发生在一个关键文件上,这个小小的故障可能导致系统停机。如果只是报告有问题,多读几次就可能解决了。当然,如果这个位真的改变了,就必须采用错误探测/错误更正(EDC/ECC)算法。位反转的问题更多见于NAND闪存,NAND的供应商建议使用NAND闪存的时候,同时使用EDC/ECC算法。这个问题对于用NAND存储多媒体信息时倒不是致命的。当然,如果用本地存储设备来存储操作系统、配置文件或其他敏感信息时, 必须使用EDC/ECC系统以确保可靠性。

1.3.6 坏块处理

NAND器件中的坏块是随机分布的。以前也曾有过消除坏块的努力,但发现成品率太低,代价太高,根本不划算。NAND器件需要对介质进行初始化扫描以发现坏块,并将坏块标记为不可用。在已制成的器件中,如果通过可靠的方法不能进行这项处理,将导致高故障率。如何才能平衡各块的擦写和为可能的坏块寻找替换呢?通常需要有一个特殊的软件层次,实现坏块管理、擦写均衡、ECC、垃圾回收等的功能,这一个软件层次称为 FTL(Flash Translation Layer)。

NOR器件在读写数据过程中,偶然会产生一位或几位数据错误(这种概率很低),位反转的比例小于NAND Flash的10%。一般使用冗余比特替换的方法对坏块的处理。

1.3.7 易于使用

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

所以NAND使用之前需要进行初始化工作,而NOR不需要初始化即可使用。

3.8 软件支持

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

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

使用NOR器件时所需要的MTD要相对少一些,许多厂商都提供用于NOR器件的更高级软 件,这其中包括M-System的TrueFFS驱动,该驱 动被Wind River System、Microsoft、QNX Software System、Symbian和Intel等厂商所采用。

驱动还用于对DiskOnChip产品进行仿真和NAND闪存的管理,包括纠错、坏块处理和 损耗平衡。(纠正一点:NOR擦除时,是全部写1,不是写0,而且,NOR FLASH SECTOR擦除时间视品牌、 大小不同而不同,比如,4M FLASH,有的SECTOR擦除时间为60ms,而有的需要最大6S)NOR FLASH的主要供应商是INTEL,MICRO等厂商,曾经是FLASH的主流产品,但被 NAND FLASH挤的比较难受。它的优点是可以直接从FLASH中运行程序,但是工艺复杂,价格比 较贵。

2. 总的来说

对于嵌入式选型来说,最实际的考虑的是否使用NOR flash进行芯片内执行。只有在否的情况下才考虑使用NAND或者是NOR。NAND更偏重于数据的存储,当你需要选择哪一款时候,不妨考虑以下因素:

  1. 存储的容量。如果需要存储大量文件(多媒体或图片等),会优先考虑NAND flash,因为NAND flash的容量比NOR的大的多。
  2. 芯片的面积大小。一般在单片机上使用的是SPI NOR flash,面积比Nand flash会小的多,实际产品的需要考虑硬件大小,所以这点需要考虑进去。
  3. 成本。普遍来说,同样的价格,NAND flash比NOR能够得到更多的容量。
  4. 开发周期。如果没有驱动的支持,NOR的开发周期比NAND会更短。因为如果在稳定性要求高的情况下,NAND需要更多的考虑位反转,坏块的处理。

 

本文只是个人的一些经验总结,若能够给您带来帮助,我也能感到一丝丝的欣慰。若您能发现文中的错误或不足之处,还请您指出。谢谢!

 

 

 

 

 

猜你喜欢

转载自blog.csdn.net/oo729833843/article/details/108424597