嵌入式系统设计师学习笔记⑥:存储器的层次架构及Cache详解

存储器被组织成金字塔形的层次结构:
存储器自上而下,组成6个层次结构,依次变得更慢、访问效率更低、容量更大、每字节的造价更便宜。

如图所示:

Cache:

①功能:提高CPU数据输入输出的速率,突破所谓的“冯·诺依曼瓶颈”
②速度:在计算机的存储系统体系中,Cache是访问速度较快的层次
③原理:使用Cache改善系统性能的依据是程序的局部性原理
④组成:Cache由两部分组成:控制部分和Cache存储器部分

局部性原理:

概念:利用程序的时间局部性和空间局部性来优化系统性能,平衡处理器与存储器之间的数据存取差异,故Cache能提高存储器的平均访问速度。

时间局部性:如果一个存储项被访问后,极有可能会在一段时间间隔内被多次访问。

int i =0,sum =0;
for(i=0;i<10;i++)
{
   
	sum = sum +i;
}
在上述程序中,局部变量i和sum被访问后,
由于存在循环,因此会在短时间内被多次访问

空间局部性:如果一个存储项近期被访问到后,它在内存中相邻的内存空间也极有可能在短时间内被访问到。

int  array[10];
定义一个数组,由于数组在内存中是连续存放的,
而且对于数组的操作一般都是逐个访问进行,
因此若array[0]被访问后,数组中其他元素也极有可能会被访问到。

Cache能够减少内存的平均访问时间。

Cache的参数:

①块(Line):数据交换的最小单位
②命中(Hit):在较高层次中发现要访问的内容

命中率(Hit Rate) = 命中次数/访问次数
命中时间:访问在较高层次中数据的时间

③失效(Miss):需要在较低层次中访问块

失效率 = 1-命中率
失效损失=替换较高层次数据块的时间+将该块交付给处理器的时间

④命中时间<<(远小于)失效损失

Cache平均系统周期时间(以读操作为例:使用“Cache+主存储器”):

t3 = h*t+(1-h)xt2

h代表对Cache的访问命中率
t1表示Cache的周期时间
t2表示主存储器周期时间
系统的平均周期为t3,
(1-h)又称为失效率(未命中率)

Cache的地址映像:

概念:主存和Cache是同样大小的块组成,主存以块为单位映像到Cache中。

①通常由SRAM(静态存储器)组成。其访问速度远高于主存,接近CPU。

②其功能是提高CPU数据输入输出的速率。其理论依据是程序的局部性原理。实现基础是将主存和Cache划分成大小相同的块/页。

③装入缓存时将主存块与Cache块的映射关系存入相联存储表(硬件实现)中。

主存与Cache的映射由硬件自动实现

④CPU通过主存地址访存时先访问Cache(若命中可提升速度,所以其关键性能指标是命中率),依据主存地址关联相联存储表转换为Cache地址。如果在Cache中没有,才需要访问主存(Cache页置换,置换算***影响命中率)。

Cache地址映像的替换策略:

常见的地址映像和变化方式
直接映像和变换
组相联映像和变换
全相联映像和变换

地址映像:把主存地址空间映像到Cache地址空间。

地址变换:当程序或数据已经装入到Cache后,在实际运行过程中,把主存地址如何变成Cache地址的过程。

一、直接映像和变换
①主存储器中一块只能映像到Cache的一个特定的块中

②主存与缓存分成相同大小的数据块

③主存空间按缓存容量分成区,每一区的块数与缓存的总块数相等

④主存中某区的一块装入缓存时只能存入缓存中块号相同的位置

直接相联映射图

特点
①地址变换电路简单,访问速度快

②空间利用率低,冲突概率高

③对页面置换算法依赖度高,且Cache空间利用率低,命中率较低

二、组相联映像和变换
①主存的任意一块可以映像到Cache中的任意一块的位置上

②主存与缓存分为大小相同的数据块

③主存的某一数据块可以装入缓存的任意一块空间中

组相联映射图

特点
①空间利用率高,命中率较高

②冲突概率低

③实现复杂,速度慢,适合小容量Cache

三、全相联映像和变换
①主存和Cache按同样大小分块

②Cache分为若干组,如两块一组,主存按Cache组数分区

③每个组采用直接映射方式(组间:直接相联映射)

④组内的块则采用全相联映像方式

全相联映射图

特点
①是直接映像和组相连映像的折中方式

②实现难度和造价要比直接映像方式高