高速缓存

概念:高速缓存(cache),为了平衡CPU和主存(DRAM)之间日益增大的速度差异,在CPU和主存之间引入的一个部件,他是主存中数据的一个子集,CPU访问主存之前先访问高速缓存,如果高速缓存中有要取的数据(命中)则不用再访问主存,以此提高速度,一般有SRAM组成,组织方式组相联。高速缓存一般是以物理地址为tag和索引的,可以分级。L1cache分指令和数据cache.

I. 高速缓存结构和原理:

高速缓存的结构可以用(S,E,B,m)元组表示,S是高速缓存组个数,E是每组高速缓存包含的高速缓存行个数,B是每个高速缓存行中高速缓存块的字节数,m是地址位数。一下涉及这么多概念,不要捉急,我们先往下看,待会儿回过头来再细看。m位地址如下划分,t位标记,s位组索引,b位块偏移。

https://i-blog.csdnimg.cn/blog_migrate/3d5b07d87edb300731a5636e4b05e8a1.png


s,b和S,B,E,M(物理主存大小)的关系如下:

wps_clip_image-26617

以例说明高速缓存如何工作的,一条加载指令指示CPU加载主存地址A处的一个字时,它将地址A发送给高速缓存,如果高速缓存中存有地址A处的字的拷贝,它就将那个字返回给CPU。那么高速缓存如何知道自己是否存有地址A处的字的拷贝呢?地址A的s位索引得到高速缓存组,如果高速缓存存有A处字的拷贝的话,必定在此高速缓存组中,进一步如果地址A的t位标记和高速缓存组某高速缓存行的t位标记相同并且该高速缓存行的有效位有效,则拷贝只能在此高速缓存行的高速缓存块中,至于高速缓存块中的偏移,由地址A中的b位确定。参考下图可以更好的理解高速缓存工作过程。(注意上面过程中A一般是已经经过MMU转换的物理地址)

wps_clip_image-20770

wps_clip_image-296

上述的高速缓存工作机制以读操作并且读命中为例进行的说明,写操作更复杂,而且高速缓存有Write-throughCopy-back等工作方式配合命中和不命中的组合,各个流程比较复杂需要仔细研读,高速缓存工作方式详见:http://blog.csdn.net/kklvsports/article/details/9208475

有了前面的基础下面汇总如下基本概念:

高速缓存行:即cache line,是高速缓存缓存主存的基本单元

全相联高速缓存:只有一个高速缓存组即S = 1的高速缓存

组相联高速缓存:有多个高速缓存组即S > 1,E > 1的高速缓存

直接映射高速缓存:高速缓存组中只有一个高速缓存行即E=1的高速缓存

高速缓存大小:高速缓存大小C是指所有高速缓存块的大小之和,不包含有效位和标记位。

II. 高速缓存替换策略

如果高速缓存不命中的话,并且所有高速缓存行有效位都是有效(即高速缓存满),就要替换现有的高速缓存行,替换原则如下:

对于直接映射高速缓存,由于高速缓存组中只有一个高速缓存行,以主存中的内容直接替换该行即可。

对于组相联高速缓存,一个高速缓存组中有多个高速缓存行,有多种替换策略,如LRU最近最少使用策略替换最后一次访问时间最久的那行;LFU最不常有策略替换过去某个时间窗口内最少使用的行。

参考:《深入理解计算机系统》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值