浅析嵌入式系统中的存储器

在我们的印象里,存储器类型不是RAMRandom Access Memory随机存储器)就是ROMRead Only Memory只读存储器)。然而RAMROM下面有很多的分支,并且作为混合型存储器(Hybrid)综合了RAMROM两种存储器的特点。在RAM器件里,数据在任何位置是可读写的,数据掉电消失;在ROM器件里,数据是可以随意读取的,但是不能写入,数据掉电保存;Hybrid使用起来像ROM,但是在一些条件下是可写入的。

1RAM分类

RAM分为两种重要的存储器器件:静态随机存储器(SRAM)和动态随机存储器(DRAM)。他们之间主要的区别是数据存储的持续时间。只要系统不断电SRAM会一直保持里面的内容,如果断电或者仅仅瞬间断电,SRAM里面的内容会永久消失。对于DRAM,系统需要周期性的刷新,当我们将数据写入DRAM后,经过一段时间,数据会丢失,因此需要一个额外电路进行内存刷新操作。具体的工作过程是这样的:一个DRAM的存储单元存储的是0还是1取决于电容是否有电荷,有电荷代表1,无电荷代表0。但时间一长,代表1的电容会放电,代表0的电容会吸收电荷,这就是数据丢失的原因。刷新操作定期对电容进行检查,若电量大于满电量的12,则认为其代表1,并把电容充满电;若电量小于12,则认为其代表0,并把电容放电,以此来保持数据的连续性。

SRAMDRAM的选择上,系统设计人员必须考虑器件性能以及成本。SRAM器件提供快速的操作性能(通常是DRAM的四倍),但是价格要高一些。通常来说SRAM用在对性能要求很高的场合。如果一个系统需要很少量的内存(比如几十KB)并且主芯片内没有DRAM控制器时,SRAM会是一个比较好的选择,因为节省了DRAM控制器的成本。

当一个嵌入式系统需要大量的内存的时候并且对内存的性能要求不是那么高的时候,通常选用DRAM。有一些系统SRAMDRAM会一起使用:少量的SRAM(几十~几百KB)来处理关键数据,其它的需要大量内存的使用DRAM。例如普通PC上,就是在CPU片内用SRAM来作为L2缓存,而使用DRAM或者是它的升级版作为我们的主内存。

2ROM分类

我们用写入ROM的方法和可写入的次数来区分不同的ROM。这种分类的方法反映出ROM器件的发展过程:从带掩膜的只读存储器到可一次写入到可擦写。ROM的共性是即使掉电也能保持片内的数据不变。

最早的ROM是带掩膜的只读存储器,在芯片生产之前必须准备好ROM要写入的内容,也就是说实际写入的数据的不同会导致ROM里晶体管的排列不同。带掩膜的只读存储器的优点是大批量生成并且不需要修改程序的情况下,价格便宜。

另一种类型的ROM是可编程的ROMProgrammable ROMPROM),出厂的时候是未写入状态(所有的bit1)。我们需要使用编程器把程序写入到PROM里,写入的过程需要在PROM的某个管脚上加上比普通操作要高的电压。一旦我们使用这种方法对PROM写入了数据,PROM里面的数据就不会改变。如果我们必须要改变里面的内容,只能把这个片子拆下来,换个新片进行烧写。PROM器件就是我们所熟知的OTP器件。

可擦除写入存储器(erasable-and-programmable ROM ,EPROM)写入的过程和PROM类似,但是,EPROM是可重复擦除写入的。擦除EPROM需要使器件暴露在强紫外光下,EPROM器件的上面有一个小窗,强紫外光透过这个小窗,使得EPROM恢复未初始化状态。EPROM擦除的时间比较长,一般为1045分钟。现在EPROM已经被技术跟先进的器件所替代,很少能看到EPROM器件了。

3、混合型(Hybrid)分类

随着存储器技术的成熟,有很多器件具有RAMROM两者的优点,把这种器件归为混合型存储器。Hybrid存储器能象RAM一样进行读写,也能象ROM一样掉电保持片内数据。对Hybrid器件的写入和RAM类似,但是需要的时间要比RAM长的多,所以我们不能用这种类型的器件作为系统内存。EEPROMFlash主要继承了ROM的特性,NVRAM主要继承了SRAM的特性。

电可擦除写入存储器(electrically-erasable-and-programmable ROM, EEPROM)和EPROM类似,但是擦除操作是通过电来完成。EEPROM可以进行一个字节的的擦写,一旦数据被写入到EEPROM会一直保持,直到下次被擦除。EEPROM的擦写寿命一般为10万次,访问接口一般为I2C或这SPI。在嵌入式系统里,一般用EEPROM存储少量的会被频繁更改的数据信息,比如在机顶盒里一般用EEPROM来存储的当前频道信息,音量大小等。

非挥发性随机存取存储器(nonvolatile RAM)通常是由SRAM和后备电池组成。系统带电的时候操作和SRAM一样,系统掉电的时候,NVRAM从电池供电以保持里面现在的状态。

Flash器件综合了上述存储器的优点,容量大、低成本、非挥发性、快速(对于读来说)、以及电可擦除写入功能。这些优点是非常突出的,所以现在嵌入式系统里大量使用FlashFlasheeprom技术是非常类似的,主要的差别是Flash一次只能擦除一个扇区(sector)或者一个块(block),而不是一个字节。Flash里有两个重要的分支,NOR FlashNAND FlashNORNAND是以芯片内晶体管的连接形态不同而命名的,NOR是或非,NAND是与非。

下面主要概述一下NOR FlashNAND Flash的差异:

 

NOR Flash

NAND Flash

XIP能力

性能

擦除慢

写入慢

读取快

擦除快

写入快

读取快

容量

常用范围为1MB~32MB

常用范围为16MB及以上

成本(每byte

擦写次数

10万次

100万次

坏块

不存在

存在坏块,需要进行坏块处理

寻址能力

随机

需要串行访问

易于使用性

简单

复杂

主要使用范围

程序存储

数据存储(比如CFSDMMCPCMCIAMP3DC等)

XIP,executed inplace,本地执行。操作系统采用这种系统,可以不用将内核或执行代码拷贝到内存,而直接在代码的存储空间直接运行。采用这样的技术既可以节省可用内存又可以减少加载的时间。

1  NOR FlashNAND Flash的主要差异

3.1、接口差异

NOR Flash带有SRAM接口,无需专门接口电路,可以很容易地存取其内部的每一个字节,具有片内执行能力(XIP, eXecute In Place),应用程序可以直接在NOR Flash上运行,而不必把代码先读取到RAM再运行。但同时也导致引脚较多,一般需要40个引脚以上,和片内容量有关。

NAND器件需要的引脚很少,通常需要不到20个引脚。NAND采用数据线、地址线、命令线共享I/O的方式来串行地存取数据,各个产品或厂商的方法可能各不相同。读取片内数据的话需要先发送命令,地址(页内偏移,页号,块号),再从片内读取数据。相对NOR Flash来说读取数据会慢一些。由于NAND Flash不具备XIP能力,所以在使用时需要主芯片具有NAND Flash控制模块,或者在系统上添加一个NOR Flash用来存储启动代码。现在有些NAND Flash片内集成了NAND Flash 控制模块和一个小容量的NOR Flash,具备了片内执行能力,比如DOCdisk on a chip)系列。

3.2、擦除写入速度

NOR Flash通常是以32KB128KB为单位进行擦除和写入的,一般需要消耗的时间为秒级。NAND Flash一般是以832KB为单位进行擦除和写入的,执行相同的操作所消耗的时间为毫秒级。

3.3、容量和成本

NORFLASH的每个存储单元与位线相连,增加了芯片内位线的数量,不利于存储密度的提高。在面积和工艺相同的情况下,NANDFLASH的容量比NOR要大得多,生产成本更低,也更容易生产大容量的芯片。NOR Flash占据了容量为116MB Flash市场的大部分,而NAND Flash比较适用与16MB以上的产品当中,NOR Flash主要应用在代码存储介质中,NAND适合于数据存储。

3.4、耐用性

NAND闪存中每个块的最大擦写次数是一百万次,而NOR的擦写次数是十万次。NAND存储器除了具有101的块擦除周期优势。

除了以上差异外,NAND Flash有一个很大的缺点是存在坏块。器件中的坏块是随机分布的,以前也曾有过消除坏块的努力,但发现成品率太低,代价太高,不划算。使用NAND器件,需要先对介质进行初始化扫描以发现坏块,并将坏块标记为不可用。在使用的时候要配合 EDC/ECC(错误探测/错误更正)BBM(坏块管理)等软件措施来保障数据的可靠性。


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
内存管理机制是嵌入式系统研究的一个重点和难点的问题,它必须满足以下几个特性: ①实时性。从实时性的角度出发,要求内存分配过程要尽可能地快。因此,在嵌入式系统,不可能采用通用操作系统的一些复杂而完善的内存分配策略,一般没有段页式的虚存管理机制;而是采用简单、快速的内存分配方案,其分配方案也因程序对实时性的要求而异。例如,VxWorks系统采用简单的“首次适应,立即聚合”方法;VRTX采用多个固定尺寸存储块的binning方案。 ②可靠性。嵌入式系统应用的环境千变万化,在有些特定情况下,对系统的可靠性要求极高,内存分配的请求必须得到满足,如果分配失败则可能会带来灾难性的后果。比如,飞机的燃油检测系统。在飞机飞行过程,如果燃料发生泄漏,系统应该立即检测到,并发出相应的警报等待飞行员及时处理。如果因为内存分配失败而不能相应地操作,就可能发生机毁人亡的事故。 ③高效性。内存分配要尽可能地减少浪费。不可能为了保证满足所有的内存分配请求而将内存配置得很大。一方面,嵌入式系统对成本的要求使得内存在其只是一种很有限的资源;另一方面,即使不考虑成本的因素,系统硬件环境有限的空间和有限的板面积决定了可配置的内存容量是很有限的。 针对以上三个约束条件,市场上主流的嵌入式操作系统,如VxWorks、嵌入式Linux 等均提出了一套有效的解决方案;但是,这些系统只提供了应用开发的接口,其底层的实现方案不可见。本文以开源的嵌入式操作系统RTEMS为例,分析了嵌入式系统内存管理所面临的问题,研究了其底层实现的解决方案。一般的嵌入式系统最基本的内存管理方案有两种——静态分配和动态分配。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值