1. 假设主存容量16M×32位,Cache容量64K×32位,主存与Cache之间以每块4×32位大小传送数据,请确定直接映射方式的有关参数,并画出内存地址格式。 2. 指令和数据都用二进制代码存放在内存中,从时空观角度回答CPU如何区分读出的代码是指令还是数据。
时间: 2023-12-20 14:04:19 浏览: 470
Cache模拟器C语言框架
1. 直接映射方式的有关参数如下:
- Cache总共可以存放的块数:64K / (4 × 32) = 512个块
- 主存总共可以存放的块数:16M / (4 × 32) = 128K个块
- Cache中每个块的大小:4 × 32 = 16字节
- 主存中每个块的大小:4 × 32 = 16字节
- 内存地址格式:
| 标记(tag) | 块索引(index) | 字节偏移量(offset) |
| -------- | ------------ | ------------------ |
| 19位 | 9位 | 4位 |
其中,标记表示一个块在主存中的唯一标识,块索引表示该块在Cache中的位置,字节偏移量表示该字节在块内的偏移量。
2. CPU通过指令寄存器和数据寄存器来区分读出的代码是指令还是数据。在执行指令时,CPU会从内存中读取指令二进制代码,并将其存储在指令寄存器中,以供CPU解析和执行。而当需要读取或写入数据时,CPU会从内存中读取数据二进制代码,并将其存储在数据寄存器中,以供CPU对数据进行处理。因此,在不同的寄存器中存储的二进制代码就可以区分出这是指令还是数据。
阅读全文