浅谈CPU Cache-page coloring 学习笔记

原文链接
感谢原文作者对知识普及所做的贡献。
本文用语和含义可能不算严谨或有错误,但仅是自己对原文章的理解

1 page coloring出现的历史意义

page coloring的出现是为了解决某个问题,这个问题就是:OS对内存的管理机制和CPU对cache的管理机制不协调有鸿沟,更具体地說就是在使用SET/WAY的cpu中,内存到cache的映射需要使用着色,从而解决一条物理line线对应多个set中的line而无法对其区分的问题。

2举例说明

定义:在OS中(linux kernel),内存操作的最小粒度是页=4k,在CPU中cache操作的最小粒度是line=32Bytes
假设:cache里L2 =2M,4ways/set=4line/set,line=32Byetes
目的:探寻这个4k的页是怎么映射到cache中的?

则,需要弄明白:
内存到cache是按什么规律映射的:顺序排放
每个页需要映射到多少个line:4K/32Bytes = 128
L2总共有多少个line:2M/(4×32)= 16384
映射的结果(来自原文章):
浅谈CPU Cache-page coloring 学习笔记
通过上图知道了物理内存到cache的映射,但为什么这样着色?
在硬件上,所有的line_x连在一起,为了区分不同的line_x,需要color它,(即分组cache Bin),看它是属于哪个cache Bin中line_x

3 cache bin (color)

Cache Bin: 在基于SET/Way的高端CPU中,给定一块连续的OS或者应用程序分配的物理内存,会按照一定的映射算法,落在一块连续的Cache SET中。这个连续的Cache SET 集合,我们称之为Cache Bin
每一个Cache Bin其实就是一个所谓的颜色(Color)。
以下是原文中的示意图:
浅谈CPU Cache-page coloring 学习笔记