【星海出品】直接映射方式
直接映射 采用 块号 % (取模) cache行数
获得主存cache行号
假定 cache 采用直接映射方式,主存块大小为 64 B,按字节编址。
cache数据区大小为 1 KB,主存空间大小为 256 KB。
Q1 : 主存地址如何划分
64B = 2 ^ 6
1KB = 2 ^ 10 B
结合1和2 得 2 ^ 4 * 2 ^ 6 = 16 行 * 64B / 行
块占 6 位,cache行占4位,主存空间256KB共 2 ^ 18 , 既18位,18 - 6 - 4 = 8位,则标记位占 8 位。
又
∵ 主存空间大小为 256 KB ,每个块大小为 64 B ,则 2 ^ 18 / 2 ^ 6 = 2 ^ 12 = 4096 (块)
∴ 共 0 ~ 4095 块, 每个块群有 16 个块,对应cache 16 行。
或者这样理解:
主存空间为 256 KB = 2 ^ 18 = 2 ^ 12 * 2 ^ 6 = 4096 * 块
【标记 8位】【cache行号 4位】【块号 6位】
Q2:主存地址 0240CH 的访问过程。
B 结尾 2进制
D 结尾 10进制
H 结尾 16进制
展开16进制到2进制
8 - 4 - 2 - 1 规律展开
00|00 0010 01|00 00|00 1100
再根据主存位规划得
【00 0010 01】【00 00】【00 1100】
首先内存中找到cache 行号为 0 的位置
然后根据 标记 【00 0010 01】进行寻找(表示取自第9块群),如果都没有找到则为不命中。
对应的主存位置有【256个块群 0 ~ 255】
主存的访问位置为【00 0010 01】【00 00】为第 16 + 128 = 144块,将 0240CH 的单元的主存第144块放入cache 第 0 行
并置有效位为 1 .
置标记为 00 0010 01 (表示信息取自主存第 9 块群)