基本信息
映射方式有三种
1、直接映射
主存字块标记 Cache字块地址 字块内地址
2、全相联映射
主存字块标记
字块内地址
3、组相联映射
主存字块标记
组地址
字块内地址
注:
1、如果题目中没有说明位数,则默认8位。
2、1B = 8位
3、数据块 = 字块
4、主存字块标记 = tag位
5、若主存容量和主存容量的位数改变,要求重新设计主存地址,则主存容量位数要与字块的位数相统一。
如:32位 = 2 * 16位 = 4 * 8位。
公式
1、直接映射
主存字块标记 Cache字块地址 字块内地址
字块内地址: 字块的2的次方数。
例: 字块为8B,就是 2。
结果:字块内地址=3
Cache字块地址: Cache的2的次方数 - 字块内地址
例: Cache为4KB,就是2,字块内地址为3。
结果:Cache字块地址为12-3=9
主存字块标记(tag位): 主存容量的2的次方-Cache字块地址-字块内地址
例: 主存容量为512KB,就是,Cache字块地址为9,字块内地址为3。
结果:主存字块标记为19-9-3=7
2、全相联映射
主存字块标记 字块内地址
字块内地址: 字块的2的次方数。
例: 字块为8B,就是 2。
结果:字块内地址=3
主存字块标记(tag位): 主存容量的2的次方-字块内地址
例: 主存容量为512KB,就是,字块内地址为3。
结果:主存字块标记为19-3=16
3、组相联映射
主存字块标记 组地址 字块内地址
字块内地址: 字块的2的次方数。
例: 字块为8B,就是 。
结果:字块内地址=3
组地址: Cache的2的次方数 - 字块内地址 - 路数的2的次方数。
例1: Cache为4KB,就是,字块内地址为3。2路组相联为。
结果:组地址为12-3-1=8
例2: Cache为4KB,就是,字块内地址为3。4路组相联为。
结果:组地址为12-3-2=7
主存字块标记(tag位): 主存容量的2的次方-组地址-字块内地址。
例: 主存容量为512KB,就是,组地址为9,字块内地址为3。
结果:主存字块标记为19-9-3=7
Cache总容量 = Cache行数 ✖️ Cache行位数
Cache行数: Cache数据区容量 / 数据块大小
Cache行位数: (标记项位数+数据项容量(位数))
标记项位数: 主存字块标记(tag位)
数据项容量(位数): 字块大小 * 字块位数