一、cache基本原理
1、cache的功能 cache是一种高速缓冲器,是为了解决CPU和主存之间速度不匹配而采用的一项重要技术。其原理基于程序运行中具有的空间局部性和时间局部性特征。 解决CPU和主存之间的速度不匹配问题 ①一般采用高速的SRAM构成。
②CPU和主存之间的速度差别很大采用两级或多级Cache系统
③早期的一级Cache在CPU内,二级在主板上 ④现在的CPU内带L1 Cache和L2 Cache
⑤全由硬件调度,对用户透明 2、cache失效原因 ①义务失效 ②容量失效 ③冲突失效 3、cache的基本原理 ①地址映射 ②替换策略 ③写一致性 ④性能评价 4、cache的命中率 设Nc表示cache完成存取的总次数(命中次数)Nm表示主存完成存取的总次数(未命中次数),h定义为命中率,则有 h=Nc/Nc+Nm 若tc表示命中时的cache访问时间,tm表示未命中时的主存访问时间,1-h表示未命中率,则cache主存系统的平均访问时间ta为 . ta=htc+(1-h)tm 设r=tm/tc表示主存与cache的访问时间之比,e表示访问效率,则有 e=tc/ta=1/r+(1-r)h
5、cache结构设计必须解决的问题 Cache的设计需要遵循两个原则,一是希望cache的命中率尽可能高,实际应接近于1,二是希望cache对CPU而言是透明的。 地址映射:为了把储存会放在cache中,必须运用某种方法把储存地址定位到cache中。 ‘’映射‘’一词的物理含义是确定位置的对应关系,并用硬件来实现,这样,当CPU访问储存时,气势他们所给出的一个字的内存地址会自动换成cache的地址,即cache地址变换。
二、主存与cache的地址映射 无论选择那种映射方式,都要把主存和cache 划分为同样大小的“块”。选择哪种映射方式,要考虑: 硬件是否容易实现 地址变换的速度是否快 主存空间的利用率是否高 主存装入一块时,发生冲突的概率 以下我们介绍三种映射方法: 1、全相联的映射方式 ①将地址分为两部分(块号和字),在内存块 写入Cache时,同时写入块号标记; ②CPU给出访问地址后,也将地址分为两部分(块号和字),比较电路块号与Cache表 中的标记进行比较,相同表示命中,访问相应 单元;如果没有命中访问内存,CPU直接访 问内存,并将被访问内存的相对应块写入 Cache。
全相联的映射方式转换公式
主存地址长度=(s+w)位
寻址单元数=2**w个字或字节
块大小=行大小=2**w个字或字节 主存的块数=2**s
标记大小=s位
cache的行数=不由地址格式确定 全相联的映射方式特点:
优点:冲突概率小,Cache的利用高。
缺点:比较器难实现,需要一个访问速度很快代价高的相联存储器
应用场合:
适用于小容量的Cache 2、直接映射方式 原理: 利用行号选择 相应行;
把行标记与 CPU访问地址 进行比较,相同表示命中,访问Cache 如果没有命中,访问内存并将相应块写入cache 直接映射方式转换公式
主存地址长度=(s+w)位
寻址单元数=2**(s+w)个字或字节 块大小=行大小=2**w个字或字节 主存的块数=2s
cache的行数=m=2**r
标记大小=(s-r)位 直接映射方式特点
优点:比较电路少m倍线路,所以硬件实现简单,Cache地址为主 存地址的低几位,不需变换。
缺点:冲突概率高(抖动)
应用场合:适合大容量Cache 3、组相联映射方式
分析:比全相联容易实现,冲突低 ov=1,则为直接相联映射方式
u=1,则为全相联映射方式
v的取值一般比较小,一般是2的幂,称之为v路组相联cache.
组相联映射方式转换公式
主存地址长度= (s+w)位
寻址单元数=2**(s+w)个字或字节 块大小=行大小=2**w个字或字节主存的块数=2**s
每组的行数=k
每组的v=2**d
cache的行数=kv
标记大小=(s-d)位
三、cache的替换策略
LFU(最不经常使用):被访问的行计数器增加1,换值小的行,不能反映近期cache的访问情况
LRU(近期最少使用):被访问的行计数器置0,其 他的计数器增加1,换值大的行,符合cache的工作原 理
随机替换:随机替换策略实际上是不要什么算法,从 特定的行位置中随机地选取一行换出即可。这种策略在硬件上容易实现,且速度也比前两种策略快。缺点是随意换出的数据很可能马上又要使用,从而降低命中率和cache工作效率。但这个不足随着cache容量增大而减小。随机替换策略的功效只是稍逊于前两种 策略。
四、cache的写操作策略
由于cache的内容只是主存部分内容的拷贝,它 应当与主存内容保持一致。而CPU对cache的写 入更改了cache的内容。如何与主存内容保持一 致,可选用如下三种写操作策略。
①写回法:换出时,对行的修改位进行判断,决定是写回还是舍掉。
②全写法:写命中时,Cache与内存一起写
③写一次法:与写回法一致,但是第一次Cache命中时采 用全写法。