Cache地址映射替换算法写操作策略
Posted Lora青蛙
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Cache地址映射替换算法写操作策略相关的知识,希望对你有一定的参考价值。
地址映射
地址映射变换机构是将CPU送来的主存地址转换为Cache地址。
习惯上,Cache中的“块”称“行”,主存中称“块”。
Cache的“行”与主存的“块”存储容量相同,Cache行数比主存块数少得多,因此主存中只有一部分块的信息可存放在Cache中,因此在Cache中要为加标记指明它是主存中哪一块的副本。
地址映射的方法有三种:直接映射、全相联映射、组相连映射。
1.直接映射(对号入座)
相当于个位数为n的学生只能坐到讲台上的n号位置。
若用一个数学表达式来表示,则用取模来对应:
i=j mod C
i:Cache中的块号
j:主存中的块号
C:Cache的块数
上面公式表示将主存第j块内容复制到Cache的第i块中。
优点:实现简单。只需利用主存地址的某些位直接判断即可确定字块是否在Cache中。
缺点:不够灵活,Cache的存储空间得不到充分利用;冲突概率高,抖动。抖动就是某个块频繁地进行交换。比如说尾号为7的同学都要坐在7号位置,需要不断换人。
应用场合:适合大容量Cache。
2.全相联映射(空位随意放)
全相联映射允许主存中每一个字块映射到Cache的任何一行的位置上。对于主存中的数据块可以拷贝到cache中的哪一行不做硬性规定。有空位置就可以坐。
优点:Cache命中率可以提高。且减少了块的冲突率,进而提高了Cache的利用率。
缺点:tag的位数增加了,硬件控制较复杂,访问Cache时主存字块标记需要和Cache的全部标记进行比较。
应用场合:适合小容量Cache。
3.组相联映射(按号分组,组内随意放)
组相联映射是对直接映射和全相联映射进行折中的一种方式。
将cache的空间分为若干组,主存块与cache组之间直接映射,而组内各块之间全相联映射。
同理可以得到和直接映射中一样的公式:
i=j mod Q
i:Cache中的块号
j:主存中的块号
Q:Cache的组数
通俗地说,上面的公式就是主存第j块内容复制到Cache的i组中,至于是i组中的哪一块就随便了。
组相联映射实现较为容易,块冲突概率比直接映射方式低,命中率介于直接映射方式与全相联映射方式之间,被普遍采用。
替换算法
Cache满了或者位置被占了如何处理:
写操作策略
修改Cache中的内容后,如何保持主存中相应内容的一致性?
以上是关于Cache地址映射替换算法写操作策略的主要内容,如果未能解决你的问题,请参考以下文章