第十二章 嵌入式系统的存储体系
存储器部件的分类
- 按在系统中的地位分类:
- 主存储器(Main Memory简称内存或主存)
- 辅助存储器(Auxiliary Memory,Secondary Memory,简称辅存或外存)
- 内存通常用来容纳当前正在使用的或要经常使用的程序和数据,CPU可以直接对内存进行访问
- 内存一般都用快速存储器件来构成,内存的存取速度很快,但内存空间的大小受到地址总线位数的限制
- 系统软件中如引导程序、监控程序或者操作系统中的基本输入/输出部分BIOS都是必须常驻内存
- 更多的系统软件和全部应用软件则在用到时由外存传送到内存
- 外存也是用来存储各种信息的,存放的是相对来说不经常使用的程序和数据,其特点是容量大
- 外存总是和某个外部设备相关的,常见的外存有软盘、硬盘、U盘、光盘等
- CPU要使用外存的这些信息时,必须要通过专门的设备将信息先传送到内存中
- 按存储介质分类
- 磁存储器(Magnetic Memory)
- 半导体存储器
- 光存储器(Optical Memory)
- 激光光盘存储器(Laser Optical Disk)
- 按信息存取方式分类
- 随机存取存储器(Random Access Memory,RAM)
- 只读存储器(Read Only Memory,ROM)
- 随机存取存储器是一种在机器运行期间可读、可写的存储器,又称读写存储器
存储器的组织和结构
- 存储器的参数:容量、数据宽度
- 存储器的容量是描述存储器的最基本参数,如4MB。存储器的表示不唯一,不同表示方法有不同的数据宽度
- 在存储器内部,数据是存放在二维阵列存储单元中
- 阵列以二维的形式存储,给出的n位地址被分成行地址和列地址(n=r+c)。r是行地址数,c是列地址数
- 行列选定一个特定存储单元
常见的嵌入式系统存储设备
RAM(随机存储器)
RAM可以被读和写,地址可以以任意次序被读
常见RAM的种类有
- SRAM(Static RAM,静态随机存储器)
- DRAM(Dynamic RAM,动态随机存储器)
- DDRAM(Double Data Rate SDRAM,双倍速率随机存储器)
SRAM比DRAM运行速度快,SRAM比DRAM耗电多,DRAM需要周期性刷新
DDRAM是SDRAM的下一代产品,与SDRAM本质相同
- SDRAM:Synchronous Dynamic Random Access Memory,同步动态随机存储器
SRAM
- SRAM表示静态随机存取存储器
- 只要供电它就会保持一个值,没有刷新周期
- 由触发器构成基本单元,集成度低
- 每个SRAM存储单元由6个晶体管组成,成本较高
- 速率较高,常用于高速缓冲存储器
- 通常SRAM有4种引脚
- CE:片选信号,低电平有效
- R/W’:读写控制信号
- ADDRESS:一组地址线
- DATA:用于数据传输的一组双向信号线
DRAM
- DRAM表示动态随机存取存储器
- 是一种以电荷形式进行存储的半导体存储器
- 存储单元由1个晶体管和1个电容器组成,数据存储在电容器中
- 必须定时刷新,因此DRAM在使用时必须配合DRAM控制器
- 为了提高系统的数据吞吐能力,可以采用多种技术提高DRAM系统的性能,包括:页模式、ECO、同步DRAM
- DRAM的接口比较复杂,通常有以下引脚
- CE:片选信号,低电平有效
- R/W’:读写控制信号
- RAS’:行地址选通信号,通常接地址的高位部分
- CAS’:列地址选通信号,通常接地址的低位部分
- ADDRESS:一组地址线
- DATA:用于数据传输的一组双向信号线
SDRAM
- SDRAM表示同步动态随机存取存储器
- 同步是指内存工作需要同步时钟,内部的命令发送和数据的传输都以它为基准
- 动态是指存储器阵列需要不断地刷新来保证数据不丢失
- 通常只能工作在133MHz的主频
- SDRAM可读/可写,不具有掉电保持数据的特性,但其存取速度大大高于Flash存储器
DDRAM
- DDRAM表示双倍率同步动态随机存取存储器,也称为DDR
- 基于SDRAM技术
- 双倍预取技术,即在内存芯片内部的数据宽度是外部接口数据宽度的2倍,使峰值的读写速度达到输入时钟速率的2倍
- 允许在时钟脉冲的上升沿和下降沿均传输数据
- 在133MHz的主频下,DDR内存带宽可以达到133x64b/8x2=2.1GB/s
- 差分输入方式
ROM(只读存储器)
- ROM在烧入数据后,无需外加电源来保存数据,断电后数据不丢失,但速度较慢,适合存储需长期保留的不变数据
- 在嵌入式洗系统中,ROM用于固定数据和程序
- 常见ROM有
- Mask ROM(掩膜ROM)
- 一次性由厂家写入数据的ROM,用户无法修改
- PROM(Programmable ROM,可编写ROM)
- 出厂时厂家没有写入数据,保留里面的内容为全0和全1,由用户来编程一次性写入数据
- EPROM(Erasable Programmable ROM,可擦写ROM)
- 可以通过紫外线光的照射,擦掉原先的程序,芯片可重复擦除和写入。写入时间较长
- EEPROM(电可擦除可编程ROM,也可表示为E2PROM)
- 通过加电擦除原编程数据,通过高压脉冲可以写入数据
- Flash ROM
- 断电不会丢失数据,快速读取,电可擦写可编程
- Mask ROM(掩膜ROM)
- PROM、EPROM、EEPROM的共同之处
- 可编程的只读存储器
- 属于非易失性元件
- 芯片为有限次写入
- PROM、EPROM、EEPROM的不同之处
- PROM为一次编程器件;EPROM为电编程、紫外线擦除器件、EEPROM电编程、电擦写
- PROM编程元件:熔丝型开关或者非熔丝型开关(PLICE:多晶硅)
- EPROM编程元件:叠栅型(SIMOS)浮栅
- EEPROM编程元件:隧道型(FLOTOX)浮栅
FLASH
- Flash memory(闪速存储器)是嵌入式系统中重要的组成部分,用来存储程序和数据,掉电后数据不会丢失
- 但在使用Flash Memory时,必须根据其自身特性,对存储系统进行特殊设计,以保证系统的性能达到最优
- Flash Memory是一种非易失性存储器NVM(Non-Volatile Memory),根据结构的不同可以分为:NOR Flash、NAND Flash
NOR Flash和NAND Flash相同特点
- 区块结构:Flash Memory在物理结构上分成若干个区块,区块之间相互独立
- NOR Flash把整个存储区分成若干个扇区(Sector)
- NAND Flash把整个存储区分为若干个块(Block)
- 可以对以块或扇区为单位的内存单元进行先擦写和再编程
- 先擦后写:由于Flash Memory的写操作只能将数据位从1写成0,而不能从0写成1,所以在对存储器进行写入之前必须先执行擦除操作,将预写入的数据位初始化为1
- 擦操作的最小单位是一个区块,而不是单个字节
- 操作指令:除了NOR Flash的读,Flash Memory的其他操作不能像RAM那样,直接对目标地址进行总线操作
- 例如执行一次写操作,它必须输出一串特殊的指令(NOR Flash),或者完成一段时序(NAND Flash)才能将数据写入到Flash Memory中
- 位反转:
- 所有的Flash Memory器件存在位交换现象
- Flash Memory在读写数据时,偶然会产生一位或几位数据错误,即位反转
- 位反转无法避免,只能通过其他手段对产生的结果进行事后处理
- 位反转的问题多见于NAND Flash。供货商建议使用NAND Flash的时候,同时使用EDC/ECC(错误探测/错误纠正)算法,以确保可靠性
- 坏块
- Flash Memory在使用过程中,可能导致某些区块的损坏
- 区块一旦损坏,将无法进行修复
- NAND Flash中的坏块是随机分布的,尤其是NAND Flash在出厂时就可能存在这样的坏块(已经被标识出)
- NAND Flash需要对介质进行初始化扫描以发现坏块,并将坏块标记为不可用
- 如果对已损坏的区块进行操作,可能会带来不可预测的错误
NOR Flash和NAND Flash不同特点
- 应用程序可以直接在NOR Flash内运行,不需要再把代码读到系统RAM中运行
- NOR Flash的传输速率很高,在1~4MB的小容量时具有很高的成本效益,但是很低的写入和擦除速度大大影响了它的性能
- NAND Flash结构可以达到高存储器密度,写入和擦除的速度很快,应用NAND Flash的困难在于需要特殊的系统接口
- 性能比较
- NAND Flash执行擦除操作是十分简单的
- NOR型内存则要求在进行擦除前先要将目标内所有的位都写为0
- 由于擦除NOR Flash时是以64~128KB为单位的块进行的,执行一个写入/擦除操作的时间为5s
- 擦除NAND Flash是以8~32KB的块进行的,执行相同的操作最多只需要4ms
- NOR Flash的读速度比NAND Flash稍快一些
- NAND Flash的写入速度比NOR FLash块很多
- NAND Flash的随机读取能力差,适合大量数据的连续读取
- NAND Flash的4ms擦除速度远比NOR Flash的5s快
- 接口差别
- NOR Flash带有SRAM接口,有足够的地址引脚来寻址,可以很容易地存取其内部的每一个字节
- NAND Flash地址、数据和命令共用8位/16位总线,每次读写都要使用复杂的I/O接口串行地存取数据,8位总线/16位总线用来传送控制、地址和资料信息
- NAND Flash读和写操作采用512B的块,类似硬盘管理操作
- 因此,基于NAND的闪存可以取代硬盘或其他块设备
- 容量和成本
- NOR Flash容量通常在1MB~8MB之间,主要应用在代码存储介质中
- NAND Flash用在8MB以上的产品当中。使用与资料存储
- 寿命
- 在NAND Flash中每个块的最大擦写次数时一百万次
- NOR Flash的擦写次数是十万次
- NAND Flash除了具有10:1的块擦除周期优势,典型的NAND Flash块尺寸要比NOR型闪存小8倍,每个NAND Flash的内存块在给定的时间内删除次数要少一些
- 软件支持
- 在NOR Flash上运行代码不需要任何的软件支持
- 在NAND Flash上进行同样操作时,通常需要驱动程序,也就是内存技术驱动程序(MTD)
- NAND Flash和NOR Flash在进行写入和擦除操作时都需要MTD
- 市场定位
- NOR Flash:对数据可靠性要求较高的代码存储、通信产品、网络处理等领域,也被称为代码闪存(Code Flash)
- NAND Flash:对存储容量要求较高的MP3、存储卡、U盘等领域,也被称为数据闪存(Data Flash)
常见外存的种类
- 外部存储器:也称为辅助存储器,简称外存或辅存
- 容量比主存大、读取速度较慢
- 通常用来存放需要永久保存的或相对来说暂时不用的程序和数据
硬盘
- 硬盘存储器具有存储容量大,使用寿命长,存取速度较快的特点,也是在嵌入式系统中常用的外存
- 硬盘存储器的硬件包括
- 硬盘控制器(适配器)
- 硬盘驱动器
- 连接电缆
- 硬盘控制器(Hard Disk Controller,简称HDC)对硬盘进行管理,并在主机和硬盘之间传送数据。硬盘控制器以适配卡的形式插在主板上或直接集成在主板上,然后通过电缆与硬盘驱动器相连
- 硬盘驱动器(Hard Disk Drive,简称HDD)中有盘片、磁头、主轴电机(盘片旋转驱动机构)、磁头定位机构、读/写电路和控制逻辑等
- 硬盘存储器可分为:温彻斯特盘和非温彻斯特盘两类
- 温彻斯特盘是根据温彻斯特技术设计制造的,它的磁头、盘片、磁头定位机构、主轴、甚至连读/写驱动电路等都被密封在一个盘盒内,构成一个头-盘组合体
- 温彻斯特盘的防尘性能好,可靠性高,对使用环境要求不高
- 非温彻斯特盘磁盘的磁头和盘片等不是密封的,通常只能用于中型、大型计算机机房中
- 最常见的硬盘接口是IDE(ATA)和SCSI两种,一些移动硬盘采用PCMCIA或USB接口
- SCSI(Small Computer System Interface,小型计算机系统接口)不是专为硬盘设计的,是一种总线型接口
- SCSI独立于系统总线工作,其系统占用率极低,但其价格昂贵
- 具有这种接口的硬盘大多用于服务器等高端应用场合
光盘
- 光盘:用光学方式读/写信息的圆盘
- 光盘存储器:以光盘为存储介质的存储器
- 光盘的类型
- CD-RAM:Compact Disc Read Only Memory
- CD-R:采用WORM(Write One Read Many)标准
- CD-RW:可重复读/写
- DVD-ROM:通用数字化多功能光盘,简称高容量CD
标准存储卡(CF卡)
- CF存储卡是由美国SanDisk公司于1994年研制成功的
- CF卡的大小为43mm x 36mm x 3.3mm,CF卡同时支持3.3伏和5伏的电压,可以在这两种电压下工作
- CF卡(Compact Flash)接口具有PCMCIA-ATA功能,可以工作在IDE接口模式,也可以工作在PC Card模式
- CF卡主要在PDA、笔记本电脑、数码相机和包括台式机在内的各种设备
安全数据卡(SD卡)
- SD卡是由日本松下公司、东芝公司和美国SanDisk公司于1999年8月共同研制开发而成的
- SD卡是根据MMC卡开发的,但是基本上两者还是不同的产品,只是在设计时考虑到兼容问题,所以在大多数情况下这两种产品能够互换,它比MMC卡多了一个进行数据著作权保护功能
- 多用于MP3、数码相机、电子图书、微型电脑和AV器材等。尺寸大小比MMC卡略厚一些,为32mm x 24mm x 2.1mm