CPU缓存结构与CPU缓存寻址:
物理内存地址按照 Tag、Set、Offset 来划分,这里举的例子是 2路组相联缓存,即Way=2,所谓Way,即使Set相同的情况下,缓存最多支持的Tag的数量。
假设要读的物理内存地址:0x2fbbc030,长度为44位,转成二进制为
10 1111 1011 1011 1100 0000 0011 0000。
假设划分分别是:
Tag 占 30 位,为 1011111011101111,即 0xbeef
Set 占 8 位,为 00000000,即 0x0
Offset 占最后 6 位,为 11 0000,即 0x30
然后先根据Set=0(即Index),找到两个缓存行,对比Tag并且比较Valid(是否为1,表示该缓存行有效),然后根据Offset的位置 48 进行访问。
参考:
《现代操作系统——原理与实现》P19