目录
高速缓存cache
cache的作用
在主存储器和CPU之间采用高速缓冲存储器cache来提高存储器系统的性能,许多微处理器体系结构都把它作为其定义的一部分。cache能够减少内存平均访问时间。
统一的cache和独立的数据/程序cache
如果一个存储系统中指令预取和数据读写时使用的是同一个cache,那么称系统使用统一的cache。
如果一个存储系统中指令预取和数据读写时使用的cache是各自独立的,那么称系统使用了独立的cache。其中,用于指令预取的cache称为指令cache,用于数据读写的cache称为数据cache。
使用独立的数据cache和指令cache,可以在同一个时钟周期中读取指令和数据,而不需要双端口的cache,但此时要注意保证指令和数据的一致性。
CPU更新cache和主存的方法
当CPU更新了cache的内容时,要将结果写回到主存中,通常有下面三种方法。
(1)写通法。写通法是指CPU在执行写操作时,必须把数据同时写入cache和主存。采用写通法进行数据更新的cache称为写通cache。
(2)写回法。写回法是指CPU在执行写操作时,被写的数据只写入cache,不写入主存。仅当需要替换时,才把己经修改的cache块写回到主存中。采用写回法进行数据更新的cache称为写回cache。
(3)后写法。CPU更新cache数据时,把更新的数据写入到一个更新缓冲器,在合适的时候才对存储器进行更新。这样可以提高cache的访问速度,但是,在数据连续被更新两次以上的时候,缓冲区将不够使用,被迫同时更新存储器。
读操作分配cache和写操作分配cache
当进行数据写操作时,可能cache未命中,这时根据cache执行的操作不同,将cache分为两类:读操作分配cache和写操作分配cache。
对于读操作分配cache,当进行数据写操作时,如果cache未命中,只是简单地将数据写入主存中。主要在数据读取时,才进行cache内容预取。
对于写操作分配cache,当进行数据写操作时,如果cache未命中,cache系统将会进行cache内容预取,从主存中将相应的块读取到cache中相应的位置,并执行写操作,把数据写入到cache中。对于写通类型的cache,数据将会同时被写入主存中,对于写回类型的cache,数据将在合适的时候写回到主存中。
cache工作原理
在cache存储系统当中,把主存储器和cache都划分成相同大小的块。主存地址可以由块号M和块内地址N两部分组成。同样,cache的地址也由块号m和块内地址n组成。工作原理如下图所示。cache工作原理依据的是程序局部性原理。
当CPU要访问cache时,CPU送来主存地址,放到主存地址寄存器中。然后通过地址变换部件把主存地址中的块号M变成cache的块号m,并放到cache地址寄存器当中。同时将主存地址中的块内地址N直接作为cache的块内地址n装入cache地址寄存器中。
如果地址变换成功(通常称为cache命中),就用得到的cache地址去访问cache,从cache中取出数据送到CPU中。如果地址变换不成功,则产生cache失效信息,并且接着使用主存地址直接去访问主存储器。从主存储器中读出一个字送到CPU,同时,将从主存储器中读出来的数据装入cache中。此时,如果cache己经满了,则需要采用某种cache替换策略(如FIFO策略、LRU策略等)把不常用的块先调出到主存储器中相应的块中,以便腾出空间来存放新调入的块。由于程序具有局部性特点,每次发生失效时都把新的块调入cache中,能够提高cache的命中率。
在cache当中,地址映像是指把主存地址空间映像到cache地址空间。也就是说,把存放在主存中的程序或数据按照某种规则装入cache中,并建立主存地址到cache地址之间的对应关系。
地址变换是指当程序或数据己经装入cache后,在实际运行过程当中,把主存地址如何变成cache地址。
常用的地址映像和变换方式有:全相联地址映像和变换、组相联地址映像和变换、直接映像和变换。
cache替换算法有先进先出(FIFO)、最近最少使用(LRU),和页面置换算法原理类似。
存储管理单元
MMU特点
存储管理单元在CPU和物理内存之间进行地址转换。由于是将地址从逻辑空间映射到物理空间,因此这个转换过程一般称为内存映射。MMU主要完成以下工作:
(1)虚拟存储空间到物理存储空间的映射。采用了页式虚拟存储管理,它把虚拟地址空间分成一个个固定大小的块,每一块称为一页,把物理内存的地址空间也分成同样大小的页。MMU实现的就是从虚拟地址到物理地址的转换。
(2)存储器访问权限的控制。
(3)设置虚拟存储空间的缓冲的特性。
TLB
从虚拟地址到物理地址的变换过程就是查询页表的过程,由于页表是存储在内存中的,整个查询过程需要付出很大的代价。基于程序在执行过程中具有局部性的原理,增加了一个小容量(通常为8~16字)、高速度(访问速度和CPU中通用寄存器相当)的存储部件来存放当前访问需要的地址变换条目,这个存储部件称为TLB。
当CPU访问内存时,首先在TLB中查找需要的地址变换条目,如果该条目不存在,CPU再从位于内存中的页表中查询,并把相应的结果添加到TLB中,更新它的内容。这样做的好处是,如果CPU下一次又需要该地址变换条目时,可以从TLB中直接得到,从而使地址变换的速度大大加快。
MMU内存块和域
嵌入式系统支持的内存块大小有以下四种:
(1)段(section)大小为1MB的内存块。
(2)大页(large pages)大小为64KB的内存块。
(3)小页(small pages)大小为4KB的内存块。
(4)极小页(tiny pages)大小为1KB的内存块。
极小页只能以1KB大小为单位不能再细分,而大页和小页有写情况下可以再进一步地划分,大页可以分成大小为16KB的子页,小页可以分成大小为1KB的子页。
MMU中的域指的是一些段、大页或者小页的集合:每个域的访问控制特性都是由芯片内部的寄存器中的相应控制位来控制的。
MMU的地址变换过程
在MMU中实现虚拟地址到物理地址的映射是通过两级页表来实现的:
一级页表中包含以段为单位的地址变换条目及指向二级页表的指针。一级页表是实现的地址映射粒度较大。以段为单位的地址变换过程只需要一级页表。
二级页表中包含以大页和小页为单位的地址变换条目。有一种类型的二级页表还包含有以极小页为单位的地址变换条目。以页为单位的地址变换过程需要二级页表。
使能MMU时存储访问过程
当ARM处理器请求存储访问时,首先在TLB中查找虚拟地址。如果系统中数据TLB和指令TLB是分开的,在取指令时,从指令TLB中查找相应的虚拟地址,对于内存访问操作,从数据TLB中查找相应的虚拟地址。
在这个过程当中,如果该虚拟地址对应的地址变换条目不在TLB中,CPU从位于内存中的页表中查询对应于该虚拟地址的地址变换条目,并把相应的结果添加到TLB中。如果TLB己经满了,则需要根据一定的替换算法进行替换。这样,当CPU再次访问时,可以从TLB中直接得到,从而使地址变换的速度大大加快。
允许缓存的MMU存储访问示意图如下图所示。
当得到了需要的地址变换条目后,将进行以下操作:
(1)得到该虚拟地址对应的物理地址。
(2)根据条目中C(cachable)控制位和B(Bufferable)控制位决定是否缓存该内存访问的结果。
(3)根据存储权限控制位和域访问控制位确定该内存访问是否被允许。如果该内存访问不被允许,CP15向ARM处理器报告存储访问中止。
(4)对于不允许缓存(uncached)的存储访问,使用步骤(1)中得到的物理地址访问内存。对于允许缓存(cached)的存储访问,如果cache命中,则忽略物理地址:如果cache没有命中,则使用步骤(1)中得到的物理地址访问内存,并把该块数据读取到cache中。
禁止MMU时存储访问过程
当禁止MMU时,存储访问不进行权限控制,MMU也不会产生存储访问中止信号。所有的物理地址和虚拟地址相等,即使用平板存储模式。
快速上下文切换技术
快速上下文切换技术(Fast Context Switch Extension,FCSE)通过修改系统中不同进程的虚拟地址,避免在进行进程间切换时造成的虚拟地址到物理地址的重映射,从而提高系统的性能。
如果两个进程占用的虚拟地址空间有重叠,则系统在这两个进程之间进行切换时,必须进行虚拟地址到物理地址的重映射,包括重建TLB、清除cache,整个工作需要巨大的系统开销,而快速上下文切换技术的引入避免了这种开销。
FCSE位于CPU和MMU之间,其责任就是将不同进程使用的相同虚拟地址映射为不同的虚拟空间,使得在上下文切换时无需重建TLB等。
如果两个进程使用了同样的虚拟地址空间,则对CPU而言,FCSE对各个进程的虚拟地址进行变换,这样系统中除了CPU之外的部分,看到的是经过快速上下文切换技术变换后的虚拟地址。
嵌入式系统存储设备分类
存储设备分类方式
按在系统中的地位分类:主存储器(主存或内存)、辅存储器(辅存或外存)。内存通常用来容纳当前正在使用的或要经常使用的程序和数据,CPU可以直接对内存进行访问。内存一般都用快速存储器件来构成,内存的存取速度很快,但内存空间的大小受到地址总线位数的限制。系统软件中如引导程序、监控程序或者操作系统中的BIOS都必须常驻内存。
更多的系统软件和全部应用软件则在用到时由外存传送到内存。
外存也是用来存储各种信息的,存放的是相对来说不经常使用的程序和数据,其特点是容量大。外存总是和某个外部设备相关的,常见的外存有软盘、硬盘、U盘、光盘等。CPU要使用外存的这些信息时,必须通过专门的设备将信息先传送到内存中。
按信息存取方式分类:随机存取存储器(RAM)、只读存储器(ROM)。
按存储介质分类:磁存储器、半导体存储器、光存储器、激光光盘存储器。
描述存储器的最基本的参数是存储器的容量,如4MB。通常,存储器的表示并不唯一,有一些不同的表示方法,每种有不同的数据宽度。存储器是由存储单元组成的,每个存储单元所占空间不同,会有不同的结果,例如,一个4MB的存储器可能有下列两种表示:
(1)一个1M×4位的阵列,每次存储器访问可获得4位数据项,最大共有220个不同地址。
(2)一个4M×1位的阵列,每次存储器访问可获得1位数据项,最大共有222个不同地址。
ROM的种类和选型
ROM的特点为在烧入数据后,无需外加电源来保存数据,断电数据不丢失,但速度较慢,因此适合存储需长期保留不变的数据。常见ROM分类如下。
MaskROM(掩模ROM):一次性由厂家写入数据的ROM,用户无法修改。
PROM(Programmable ROM,可编程ROM):和掩模ROM不同的是出厂时厂家并没有写入数据,而是保留里面的内容为全0或全1,由用户来编程一次性写入数据,也就是改变部分数据为1或0。
EPROM(Erasable Programmable ROM,电可擦写ROM):EPROM是电编程,通过紫外光的照射,擦掉原先的程序。芯片可重复擦除和写入,解决了PROM芯片只能写入一次的弊端。
EEPROM(E²PROM,电可擦除可编程ROM):EEPROM是电编程,通过加电擦除原数据。使用方便但价格较高,而且写入时间较长,写入较慢。
FlashROM(闪速存储器):FlashROM具有结构简单、控制灵活、编程可靠、加电擦写快捷的优点,而且集成度可以做得很高,它综合了前面的所有优点:不会断电丢失数据,快速读取,电可擦写可编程,因此在手机、PC、PPC等电器中成功地获得了广泛的应用。
Flash Memory的种类和选型
Flash Memory(闪速存储器)是嵌入式系统中重要的组成部分,它在嵌入式系统中的功能可以和硬盘在PC中的功能相比,它们都是用来存储程序和数据的,而且可以在掉电情况下继续保存数据使其不会丢失。根据结构的不同可以将其分成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固有的电器特性,在读写数据过程中,偶然会产生一位或几位数据错误,这就是位反转。位反转无法避免,只能通过其他手段对结果进行事后处理。一般多见于NAND Flash,可以使用EDC/ECC(错误探测/错误纠正算法)以确保可靠性。
坏块:Flash Memory在使用过程中,可能导致某些区块的损坏。区块一旦损坏,将无法进行修复。如果对己损坏的区块进行操作,可能会带来不可预测的错误。尤其是NAND Flash在出厂时就可能存在这样的坏块(已经被标识出)。因此NAND Flash需要对介质进行初始化扫描以发现坏块,并将坏块标记为不可用。如果对已损坏的区块进行操作,可能会带来不可预测的错误。
Flash特点比较
(1)功能差别。
NOR Flash的特点是应用程序可以直接在闪存内运行,不需要再把代码读到系统RAM中运行,嵌入式系统中经常将NOR芯片做启动芯片。NOR Flash读速度快,但是写入和擦除速度慢,而且可存储密度低,成本高。
NAND Flash结构能提供极高的单元密度,可以达到高存储密度,并且写入和擦除的速度也很快,成本相对较低,应用NAND Flash的困难在于需要特殊的系统接口。
(2)接口差别。
NOR Flash带有SRAM接口,有足够的地址引脚来寻址,可以很容易地存取其内部的每一个字节。
NAND Flash地址数据和命令共用8位/16位总线,每次读写都要使用复杂的I/O接口串行的存取数据,8/16位总线用来传送控制、地址和数据信息。其读和写操作采用512B的块,类似硬盘管理操作,因此,基于NAND的闪存可以取代硬盘或其他块设备。
(3)容量和成本差别。
NOR Flash容量通常在1MB~8MB之间,主要应用在代码存储介质中。
NAND Flash用在8MB以上的产品当中,适用于资料的存储。
(4)寿命差别。
在NAND Flash中每个块的最大擦鞋次数是一百万次。
NOR Flash的擦写次数是十万次。
(5)市场定位。
NOR Flash用于对数据可靠性要求较高的代码存储、通信产品、网络处理等领域,也被称为代码闪存(Code Flash)。
而NAND Flash则用于对存储容量要求较高的MP3、存储卡、U盘等领域,也被称为数据闪存(Data Flash)。
RAM的种类与选型
随机存储器(Random Access Memory,RAM)的内容可按需随意取出或存入,且存取速度与存储单元的位置无关。这种存储器在断电时将丢失其存储内容,故主要用于存储短时间使用的程序和数据。常见的RAM有:SRAM、DRAM、DDRAM(双倍速率随机存储器)。
SRAM结构
SRAM是静态的,因此只要供电它就会保持一个值,没有刷新周期。由触发器构成基本单元,集成度低。每个SRAM存储单元由六个晶体管组成,因此其成本较高。SRAM具有较高的速率,常用于高速缓冲存储器cache。
SRAM的结构示意图和操作时序图如下图所示
通常SRAM有四种引脚:
(1)CE是芯片启用输入信号,CE在低电平工作。即当CE=1时,SRAM的Data引脚被禁用;CE=0时,SRAM的Data引脚被启用。
(2)R/W'是读写控制信号(W'表示低电平有效),用于控制当前操作是读(R/W'=1)还是写(R/W'=0)。读写通常是相对于CPU而言的,所以读意味着从RAM中读出,写意味着写入RAM当中。有些SRAM的读写信号是分开的,分为两个控制引脚RD和WR。
(3)Address是一组地址线,用于给出读或写的地址。
(4)Data是一组用于数据传输的双向信号线。当R/W'=1时,该引脚为输出;当R/W'=0时,该引脚为输入。
SRAM上的读操作周期如下:
(1)当R/W'=1时,让CE=0启用该芯片。
(2)将地址送到地址线上。
(3)经过一段时间的延迟之后,数据出现在数据线上。
SRAM上的写操作周期如下:
(1)让CE=0,启用该芯片。
(2)让R/W'=0。
(3)地址出现在地址线上,数据出现在数据线上。
DRAM结构
DRAM表示动态随机存取存储器,是一种以电荷形式进行存储的半导体存储器。DRAM中的每个存储单元由一个晶体管和一个电容器组成,数据存储在电容器中。电容器会由于漏电而导致电荷丢失,因而DRAM器件是不稳定的。为了将数据保存在存储器中,DRAM器件必须有规律地定时进行刷新。
DRAM结构如图4-3-5所示,其相对于SRAM,增加的引脚包括:
(1)RAS’,行地址选通信号,通常接地址的高位部分。
(2)CAS’,列地址选通信号,通常接地址的低位部分。
与SRAM不同,因为芯片上有寄生电阻,存储在电容上的电荷会泄漏。DRAM上数据的生命期一般为1ms,可通过执行一次内部读操作来刷新数据。在这个过程中,原来的值被丢弃。DRAM一次刷新请求可刷新DRAM的一整行。
SDRAM特点
SDRAM是同步动态随机存取存储器。同步是指内存工作需要同步时钟,内部的命令发送与数据的传送都以它为基准。动态是指存储器阵列需要不断地刷新来保证数据不丢失。通常只能工作在133MHz的主频。SDRAM可读可写,不具有掉电保持数据的特性,但其存取速度大大高于Flash存储器。
DDRAM
DDRAM是双倍速率同步动态随机存取存储器,也称DDR,基于SDRAM技术。DDRAM依靠一种叫作双倍预取的技术,即在内存芯片内部的数据宽度是外部接口数据宽度的两倍,使峰值的读写速度达到输入时钟速率的两倍。并且DDRAM允许在时钟脉冲的上升沿和下降沿传输数据,这样不需要提高时钟的频率就能加倍提高SDRAM的速度,并具有比SDRAM多一倍的传输速率和内存带宽。同时为了保证在高速运行时的信号完整性,DDRAM技术还采用了差分输入的方式。总地来说,DDRAM采用了更低的电压、差分输入和双倍数据速率输出等技术。
外部存储器的种类
外部存储器特点
外存储器也称辅助存储器,简称外存或辅存。外存主要指那些容量比主存大、读取速度较慢、通常用来存放需要永久保存的或相对来说暂时不用的各种程序和数据的存储器。在嵌入式系统中常用的外存有:磁盘存储器和光盘存储器等。
(1)磁盘存储器。磁盘存储器包含硬盘和软盘两种,硬盘就是计算机中常用的、直接集成在机箱内部的硬盘。硬盘存储器具有存储容量大、使用寿命长、存取速度快的特点,也是在嵌入式系统中常用的外存。
硬盘存储器的硬件包括:硬盘控制器(适配器)、硬盘驱动器、连接电缆。
硬盘控制器对硬盘进行管理,并在主机和硬盘之间传送数据,以适配卡的形式插在主板上或直接集成在主板上,然后通过电缆与硬盘驱动器相连。
硬盘驱动器中有盘片、磁头、主轴电机、磁头定位机构、读写电路和控制逻辑等。
硬盘存储器可以分为温彻斯特盘和非温彻斯特盘两类:
1)温彻斯特盘是根据温彻斯特技术设计制造的,它的磁头、盘片、磁头定位机构、主轴甚至连读写驱动电路都被密封在一个盘盒内,构成一个头一盘组合体。
温彻斯特盘的防尘性能好,可靠性高,对使用环境要求不高。
2)非温彻斯特盘的磁头和盘片等不是密封的,通常只能用于中型、大型计算机机房中。
最常见的硬盘接口是IDE(ATA)和SCSI两种,一些移动硬盘采用PCMCIA或USB接口。IDE接口也称为ATA接口,是一个通用的硬盘接口,一般用于个人PC上。SCSI小型计算机系统接口,不是专为硬盘设计的,是一种总线型接口。独立于系统总线工作,其系统占用率极低,但其价格昂贵;具有这种接口的硬盘大多用于服务器等高端应用场合。
(2)光盘存储器。相对于利用磁头变化和磁化电流进行读/写的磁盘而言,用光学方式读/写信息的圆盘称为光盘,以光盘为存储介质的存储器称为光盘存储器。
光盘存储器的类型有如下几种。
CD-ROM光盘:即只读型光盘,又称固定型光盘。它由生产厂家预先写入数据和程序,使用时用户只能读出,不能修改或写入新内容。
CD-R光盘:CD-R光盘采用WORM标准,光盘可由用户写入信息,写入后可以多次读出,但只能写入一次,信息写入后将不能再修改,所以称为只写一次型光盘。
CD-RW光盘:这种光盘是可以写入、擦除、重写的可逆性记录系统。这种光盘类似于磁盘,可重复读/写。
DVD-ROM光盘:DVD代表通用数字化多功能光盘,简称高容量CD。事实上,任何DVD-ROM光驱都是CD-ROM光驱,即这类光驱既能读取CD光盘,也能读取DVD光盘。DVD除了密度较高以外,其他技术与CD-ROM完全相同。
CF卡
CF卡是最早推出的存储卡,主要应用在高端影像产品以及一些较大型的移动设备上。
缺点:体积较大,针式接口,插拔不当容易造成接口损坏。同时因为体积大的缘故,越来越小型化的相机设备都不再用这种存储卡了。
优点:存储速度快,存储性能稳定,且卡的本身不易损坏,抗磁性也要比其他的卡更好。
安全数据卡SD
SD卡是一种为满足安全性、容量、性能和使用环境等各个方面需求而设计的一种新型存储器件,SD卡允许两种工作模式,即SD模式和SPI模式。一般的嵌入式处理器中都集成了SD卡接口模块,外围只需简单电路即可设计而成。
SD存储卡采用一个完全开放的标准(系统)。具有加密功能,可以保证数据资料的安全保密。具有版权保护技术,所采用的版权保护技术是DVD中使用的CPRM技术(可刻录介质内容保护)。
SD卡与MicroSD卡仅仅是封装上不同,MicroSD卡更小,大小和一个SIM卡差不多,但是协议与SD卡相同。SD模式支持一主多从架构,时钟、电源被所有卡共有。SD卡的操作是通过命令来进行。
SD卡包括几个信号,分别是CLK时钟信号;CMD命令/响应信号;DAT0-3双向数据传输信号;VDD/VSS1/VSS2是电源和地信号。其原理图如下图所示。
直接存储器
直接存储器存取(Direct Memory Access,DMA)控制器是一种在系统内部转移数据的独特外设,可以将其视为一种能够通过一组专用总线将内部和外部存储器与每个具有DMA能力的外设连接起来的控制器。DMA控制器包括一条地址总线、一条数据总线和控制寄存器,一个处理器可以包含多个DMA控制器,每个控制器有多个DMA通道,以及多条直接与存储器和外设连接的总线。每个DMA控制器有一组FIFO,起到DMA子系统和外设或存储器之间的缓冲器作用。
在实现DMA传输时,是由DMA控制器直接掌管总线,因此,存在着一个总线控制权转移问题。即DMA传输前,CPU要把总线控制权交给DMA控制器,而在结束DMA传输后,DMA控制器应立即把总线控制权再交回给CPU。一个完整的DMA传输过程必须经过下面的四个步骤:
(1)DMA请求。CPU对DMA控制器初始化,并向I/O接口发出操作命令,I/O接口提出DMA请求。
(2)DMA响应。DMA控制器对DMA请求判别优先级及屏蔽,向总线裁决逻辑提出总线请求。当CPU执行完当前总线周期即可释放总线控制权。此时,总线裁决逻辑输出总线应答,表示DMA已经响应,通过DMA控制器通知I/O接口开始DMA传输。
(3)DMA传输。DMA控制器获得总线控制权后,CPU即刻挂起或只执行内部操作,由DMA控制器输出读写命令,直接控制RAM与I/O接口进行DMA传输。在DMA控制器的控制下,在存储器和外部设备之间直接进行数据传送,在传送过程中不需要中央理器的参与。开始时需提供要传送的数据的起始位置和数据长度。
(4)DMA结束。当完成规定的成批数据传送后,DMA控制器即释放总线控制权,并向I/O接口发出结束信号。当I/O接口收到结束信号后,一方面停止I/O设备的工作,另一方面向CPU提出中断请求,使CPU从不介入的状态解脱,并执行一段检查本次DMA传输操作正确性的代码。