嵌入式系统的存储体系
Cache的主要功能是对外部存储设备(一般指内存)的缓冲,在一般的Cache设计中,Cache把整个内存分成大小相同的块,块的大小因不同Cache芯片的实现而不同。SRAM初始加电时的状态是随机的,写入新状态,旧的状态就会消失,新状态会一直维持到写入新的状态为止。众所周知,程序由代码和数据组成,在一般情况下由于容量限制代码和数据需要存放在内存中,当处理器要执行程序时就需要不断地访问内存,出于技术和

存储系统的层次结构:
典型的分层级存储器结构如下图所示:

嵌入式系统的顶层是CPU的寄存器,其速度和CPU速度相当。第二层是高速缓冲存储器Cache,和CPU的速度相近。第三层是主存储器,也称为内部存储器或者RAM。第四层是磁盘。在存储器结构中,越靠近上层,速度越快,容量越小,单位存储容量价格越高。将上述两种或两种以上的存储器经过硬件、软件等组合在一起并对其进行管理,则构成存储器系统。
内存管理单元:
在嵌入式微处理器当中,存储管理单元(MMU)提供了一种内存保护的硬件机制。操作系统通常利用MMU来实现系统内核与应用程序的隔离,以及应用程序与应用程序之间的隔离。这样可以防止应用程序去破坏操作系统和其他应用程序的代码和数据,防止应用程序对硬件的直接访问。内存保护主要是防止地址越界和操作越权。
RAM和ROM的种类与选型:
按照存储器在计算机中的用途和分类,嵌入式系统的存储器包括内部存储器和外部存储器。将存储器按照存放信息的易失性,可分为易失性存储设备和非易失性存储设备。
1.RAM
易失性存储设备的代表是随机存取存储器,RAM。在计算机系统中,RAM是与CPU直接交换数据的内部存储器,也叫主存或内存,其结构如下图所示。

RAM电路由地址译码器、存储矩阵和读写控制电路三部分组成。
RAM的特点之一就是随机读写,其含义是指当RAM存储器中的数据被读取或写入时,所需要的时间与这段信息所在位置或写入位置是无关的。
RAM的读写速度很快,几乎是所有访问设备中写入和读取速度最快的,通常作为操作系统或其他正在运行中的程序的临时数据存储媒介。
RAM存储器在断电时将丢失其存储内容,所以称为易失性存储设备,其主要用于存储短时间使用的程序。易失性和RAM的结构有关:随机存取存储器依赖电容器存储数据。电容器充满电后代表1,未充电代表0。由于电容器或多或少会有漏电情况,若不处理,数据就会逐渐流失,所以就需要刷新,定期读取电容器的状态,按照原来的状态重新充电,弥补流失电荷。
按照RAM存储单元的工作原理,又分为静态随机存储器SRAM和动态随机存储器DRAM。
(1)SRAM
静态存储单元是在静态触发器的基础上附加门控管而构成的。SRAM将每个位存储在一个双稳态存储器单元,每个单元用一个六晶体管构成。数据一旦写入,其信息就稳定的保存在电路中等待读出,无论读出多少次,只要不断电,此信息就会一直保持下去。SRAM初始加电时的状态是随机的,写入新状态,旧的状态就会消失,新状态会一直维持到写入新的状态为止。高速缓存Cache一般采用SRAM,高速缓冲存储器是存在于主存与CPU之间的一级存储器。
(2)DRAM
DRAM将每个位存储为对一个电容的充电,每个单元由一个电容和一个访问晶体管组成,DRAM存储器中的电容非常小,被干扰很难恢复,为了避免信息丢失,必须定时补充电荷,因此其内部要有刷新的控制电路。DRAM的存储矩阵由动态MOS存储单元组成,DRAM必须定时不断刷新,这就是其被称为动态的原因。常说的内存条就是由DRAM构成。
(3)DDR SDRAM
双倍速率同步动态随机存储器,内存主频和CPU一样。
2.ROM
只读存储器的重要特性是其存储信息的非易失性,存放在ROM中的信息不会因去掉供电电源而丢失,再次上电时,存储信息依然存在。

(1)PROM
可编程只读存储器,其内部有行列式的熔丝,需要利用电流将其烧断,写入所需资料,但只是写录一次。(2)EPROM
可抹除可编程只读存储器是目前使用最广泛的ROM,其利用高电压电流将资料编程写入,擦除时将线路曝光于紫外线下,则资料可被清空。
(3)EEPROM
电子式可抹除可编程只读存储器其运作原理类似EPROM,但是抹除的方式是使用高电场来完成。
高速缓存(Cache)
Cache是一种比较常见内存更快的存储器,在存储位置上位于处理器和外部内存之间,一般称之为高速缓冲存储器。众所周知,程序由代码和数据组成,在一般情况下由于容量限制代码和数据需要存放在内存中,当处理器要执行程序时就需要不断地访问内存,出于技术和成本问题,内存的读取速度通常比CPU的速度慢很多,因此这会严重制约系统的实际性能。
在实际程序运行过程中,处理器对内存的访问并不是完全随机的,在某个时间段内,CPU总是访问当前内存地址的相邻地址,也就是说程序对内存的访问符合局部性原理。基于程序局部性原理,通过在CPU和外部存储设备之间设计高速缓冲器(Cache),让其进行外部存储设备的局部存储,从而可以提升CPU对外部存储设备的访问效率。Cache的主要功能是对外部存储设备(一般指内存)的缓冲,在一般的Cache设计中,Cache把整个内存分成大小相同的块,块的大小因不同Cache芯片的实现而不同。因此,Cache 内部的地址是由块号和块内偏移组成。下图给出了Cache 的逻辑工作示意图,其实现过程如下:
(1) Cache 收到CPU访问内存的地址。
(2) Cache将CPU访问内存的地址分解为块号和块内偏移。
(3) 利用(2)中分解的块号查找Cache内部的Cache块。
(4) 如果用(2)中的块号找到一个Cache块,即表示命中,然后用(2)中分解的块内偏移去索引该块中的数据:如果当前是读内存,即可立即将Cache 中缓存的数据返回给CPU;如果是写操作,根据Cache的类型不同,动作会不同。
(5) 如果(3)中没有找到对应的Cache块,即表示未命中。
(6) 如果Cache 未命中,Cache 首先查找Cache内部有没有空闲块。
(7) 如果(6)中Cache找到一个空闲块,就在该块中装入CPU 访问内存地址对应的内存块,同时,如果是读内存操作就把这个地址对应的数据返回给CPU。如果是写内存操作,根据Cache的类型不同,动作也会不同。
(8) 如果在(6)过程中没有找到一个空闲块,需要使用Cache 管理中的块替换策略找出Cache中可替换出去的块。如果CPU是读内存操作,那么根据替换块的块号和状态Cache会决定是否把这个块回写到内存中(或者直接废除),最后在该替换出去的块中装入CPU访问内存地址对应的内存块,同时把这个地址对应的数据返回给CPU。如果CPV 是写内存操作,根据Cache的类型不同,Cache的动作也会不同。

根据程序访问的局部性原理可知,CPU在某一特定的时间段内会对Cache保持很高的命中率。因此,在该时间段内,CPU就可以直接从Cache中获取指令或数据,从而提升系统的性能。根据Cache的工作机制,可以把Cache分为多种类型,典型的包括回写式Cache 和写通式Cache。
1)回写式Cache
当CPU执行写数据操作时,回写式Cache只把该数据写入其数据地址对应的Cache 中,不直接写入内存。仅当该Cache块需要替换时,才把Cache块回写入内存中。在回写式Cache中,每个Cache块中都有对应的修改位。只要该Cache块中的任何单元被修改,该位即被置为1,否则为0。当该Cache块需要被替换时,如果其修改位为1,则必须先将该Cache块写入内存,将其修改位置为0,然后用新的内存块覆盖该Cache块。
回写式Cache, 不能实时地保证内存和Cache中数据副本之间内容的一致性。但是其特点在于回写式Cache和内存的通信较少, 尤其当Cache在特定的时间段内有很高的命中率时,其效率较高,同时回写式Cache的硬件实现也较为简单。
2)写通式 Cache
在写通式模式工作中, 当CPU 执行写操作时,写通式Cache必须同时把该数据写入其数据地址对应的Cache块和内存中。写通式Cache的每个Cache块中不需要有对应的修改位。当该Cache块需要被替换时,也不必把该Cache块写入内存中,新的内存块可以直接覆盖该Cache块。写通式Cache能始终保持Cache中的数据和内存中数据的一致性。
FLASH
快闪存储器的存储单元结构类似于EPROM,并且集成度高、功耗低、体积小,又能在线快速擦除,因而获得飞速发展。FLASH闪存是EEPROM的变种,不同的是EEPROM可以在字节水平上进行删除和重写而不是整个芯片擦写,而闪存大部分芯片需要块擦除,FLASH擦除速度比较快。
(1)NOR FLASH
任何FLASH的写入操作只能在空或者已擦除的单元内进行,NAND(与非)器件执行擦除操作是很简单的,而NOR(或非)在擦除前需要将目标块内都写为0。NOR FLASH带有SRAM接口,有足够的地址引脚寻址,可以很容易存取其中的每一个字节,因此可以连接系统总线,构成内存储器。
(2)NAND FLASH
接口,有足够的地址引脚寻址,可以很容易存取其中的每一个字节,因此可以连接系统总线,构成内存储器。NAND器件使用复杂的I/O口来串行地存取数据,采用串行接口,不能直接构成内存,只能用来构成外存储器。NAND读和写操作一般采用512字节的块,这一点有点像磁盘管理此类操作。
总结:
- NOR的读速度比NAND快一些
- NAND的写入速度比NOR快很多
- NAND的擦除速度远比NOR的快
- 大多数写入操作需要先进行擦除操作
- NAND的擦除单元更小,相应的擦除电路更少
- NOR FLASH上面可直接运行程序,NAND FLASH上仅可存储信息
本文内容参考嵌入式系统设计师教程第2版,如有问题欢迎大家批评指!
openvela 操作系统专为 AIoT 领域量身定制,以轻量化、标准兼容、安全性和高度可扩展性为核心特点。openvela 以其卓越的技术优势,已成为众多物联网设备和 AI 硬件的技术首选,涵盖了智能手表、运动手环、智能音箱、耳机、智能家居设备以及机器人等多个领域。
更多推荐


所有评论(0)