Cache 主存地址与命中率

474 阅读3分钟

基本信息

映射方式有三种

1、直接映射

主存字块标记          Cache字块地址          字块内地址

2、全相联映射
主存字块标记          字块内地址

3、组相联映射
主存字块标记          组地址          字块内地址

注:

1、如果题目中没有说明位数,则默认8位。
2、1B = 8位
3、数据块 = 字块
4、主存字块标记 = tag位
5、若主存容量和主存容量的位数改变,要求重新设计主存地址,则主存容量位数要与字块的位数相统一。
如:32位 = 2 * 16位 = 4 * 8位。

公式

1、直接映射

主存字块标记          Cache字块地址          字块内地址

字块内地址: 字块的2的次方数。
例: 字块为8B,就是 23^3
结果:字块内地址=3

Cache字块地址: Cache的2的次方数 - 字块内地址
例: Cache为4KB,就是212^{12},字块内地址为3。
结果:Cache字块地址为12-3=9

主存字块标记(tag位): 主存容量的2的次方-Cache字块地址-字块内地址
例: 主存容量为512KB,就是2192^{19},Cache字块地址为9,字块内地址为3。
结果:主存字块标记为19-9-3=7

2、全相联映射

主存字块标记          字块内地址

字块内地址: 字块的2的次方数。
例: 字块为8B,就是 23^3
结果:字块内地址=3

主存字块标记(tag位): 主存容量的2的次方-字块内地址
例: 主存容量为512KB,就是2192^{19},字块内地址为3。
结果:主存字块标记为19-3=16

3、组相联映射

主存字块标记          组地址          字块内地址

字块内地址: 字块的2的次方数。
例: 字块为8B,就是 232^3
结果:字块内地址=3

组地址: Cache的2的次方数 - 字块内地址 - 路数的2的次方数。
例1: Cache为4KB,就是2122^{12},字块内地址为3。2路组相联为212^1
结果:组地址为12-3-1=8

例2: Cache为4KB,就是2122^{12},字块内地址为3。4路组相联为222^2
结果:组地址为12-3-2=7

主存字块标记(tag位): 主存容量的2的次方-组地址-字块内地址。
例: 主存容量为512KB,就是2192^{19},组地址为9,字块内地址为3。
结果:主存字块标记为19-9-3=7


Cache总容量 = Cache行数 ✖️ Cache行位数

Cache行数: Cache数据区容量 / 数据块大小
Cache行位数: (标记项位数+数据项容量(位数))
标记项位数: 主存字块标记(tag位)
数据项容量(位数): 字块大小 * 字块位数