本文收集了网络常见的cache访问策略讲解的图片。通过图片,可以锻炼我们的观察能力,提高我们的读图和绘图能力,发展我们的大脑!一起来看图!
一次内存访问的完整过程:
直接映射(模运算,1个Cache对应等差主存)
主存中的一个块只能映射到Cache的某一特定块中去。
会出现cache颠簸的现象。例如result[i] = data1[i] + data2[i];
int *data1 = 0x40
int *data2 = 0x80
int *result = 0x00
全相联映射(多对多映射)
主存中任何一块都可以映射到Cache中的任何一块位置上。
组相联映射
主存和Cache都分组,主存中一个组内的块数与Cache中的分组数相
同,组间采用直接映射,组内采用全相联映射
4.1 直接映射优缺点
优点: 硬件实现简单,成本低.
缺点: 灵活性差。每个主存块只有一个固定的行可以存放,因此即便cache中有大量空闲cache line可用,某个cache line上的data仍可能被替换出去。如果cache容量比较小,则非常容易发生冲突,频繁替换(cache trashing),效率大大降低。
适用范围:直接映射方式一般用于大容量的cache中。
4.2 全相联映射优缺点
优点: 全相联映射方式比较灵活,主存的地址可以映射到Cache的任一cache line中,Cache的利用率高,cache line冲突概率低。
缺点: 硬件成本高,Cache比较电路的设计和实现比较困难。
适用范围:只适合于小容量Cache。
4.3 组相联映射优缺点
优点:cache line的冲突概率比较低,比较的硬件电路比全相联方式简单些,而且空间利用率比直接映射方式要高。
缺点:实现难度和造价要比直接映射方式高。
适用范围:绝大部分cache都采用这种折中方案。
参考文章:
- 1.巧妙的停车场比喻
图解直接映射(Direct mapped)、全相联(Fully-associative)和组相联(Set-associative)cache缓存基本原理_直接映射全相联映射组相联映射-优快云博客
- 2.带颜色的彩图
cache全相连、组相连、直接映射 - kiss0 - 博客园 (cnblogs.com)
- 3.硬核的一次内存访问来源
Cache直接映射、组相连映射以及全相连映射(转载) - east1203 - 博客园 (cnblogs.com)
- 4.访问量最高,但是图片清晰度最低的文章