嵌入式系统设计师学习笔记⑥:存储器的层次架构及Cache详解
嵌入式系统设计师学习笔记⑥:存储器的层次架构及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组数分区
③每个组采用直接映射方式(组间:直接相联映射)
④组内的块则采用全相联映像方式
全相联映射图:
特点:
①是直接映像和组相连映像的折中方式
②实现难度和造价要比直接映像方式高