嵌入式学习小组
直播中

刘丰标

8年用户 1163经验值
私信 关注

Cache的原理是什么?Cache地址的过程是怎样的

存储器的层次结构是怎样的?由哪些部分组成的?有何特点?
Cache的原理是什么?Cache地址的过程是怎样的?





回帖(1)

汤玉荣

2021-12-23 13:44:29
嵌入式系统设计师学习笔记⑥:存储器的层次架构及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)xt2h代表对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组数分区
③每个组采用直接映射方式(组间:直接相联映射)
④组内的块则采用全相联映像方式
全相联映射图

特点
①是直接映像和组相连映像的折中方式
②实现难度和造价要比直接映像方式高。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分