cache三种地址映像
为了把信息存放到Cache中,必须应用某种函数把主存地址映像到Cache,称作地址映像,即把存放在主存中的信息按照某种规则装入Cache。
cache与主存之间的地址映像方式有三种
1. 直接映像
每个主存块只能存放固定位置
在Cache中的位置 = 主存块号 % Cache总块数
优点:实现简单。对于任意一个地址,只需对比一个“标记”,速度最快
缺点:在其他地方有空闲Cache块,但8号主存块不能使用。
直接映射的地址结构:
标记位 | cache行号 | 块内地址 |
2. 全相联映像
主存块可存放在Cache中的任意位置
优点:Cache存储空间利用充分,命中率高。
缺点:成本高,查找“标记”最慢,有可能需要对比所有行的标记。
全相联映射的地址结构:
主存块号 | 块内地址 |
例题:假设某个计算机的主存地址空间大小为256MB,按字节编址,其数据Cache有8个Cache行,行长为64B。
256MB = 2^28B,所以主存地址共有28位。
其中,Cache行长为64B = 2^6B,
所以块内地址占6位 主存块号地址占据28-6 = 22位。
3. 组相联映像
组间直接映像,组内全相联映像,是直接映像和全相联映像的折中方案。
组间直接映像,组内全相联映像。
所属分组= 主存块号 % 分组数 r路组相联映像:r个Cache行为一组
标记位 | cache组号 | 块内地址 |
例题:假设某个计算机的主存地址空间大小为256MB,采用2路组相联,按字节编址,其数据Cache有8个Cache块,块长为64B。
256MB = 2^28B,所以主存地址共有28位。
其中,Cache行长为64B = 2^6B,又因为是2路组相联一共有8个cache块所以一共有4组4=2^2所以组号为2位
所以块内地址占6位,组号为2位,主存块号地址占据28-6-2= 20位。