计组——彻底搞懂cache主存映射cache容量及cache写策略
首先非常感谢这位大佬的文章,帮助我理解了很大一部分,以下仅记录一下个人对此的理解方式。
对于cache-主存映射的这个过程,我把它看成是一个抢座位的游戏,参与的对象是学生(主存块),学生有学号(对应的主存块号),座位即cache行,座位号即对应的cache行号。
映射方式有如下三种,分别对应不同的游戏规则:
- 全相连映射
- 直接映射
- 组相联映射
全相连映射:
这种规则下,就是有位置随便坐
任何一个学号的学生都能到任意的座位上就坐,这种方式没什么好说的。
直接映射:
先将座位按学号尾数进行划分,只有学号尾数对应的学生方可就坐。
其中的cache行号,实质上就对应了所谓的“学号尾数”,还好理解吧。
组相联映射:
这种规则约束比较多,首先对座位分组,再对学生分组,学生分组人数=座位分组数,因为要让组内学生去竞争每个座位,而组内学生不竞争,只对组间学生竞争。
最后还是那张图: