假设主存容量为512K*8位,Cache容量为4K*8位,每个字块为16个字,每个字32位。存储字长为8位,按照字节寻址。 (1)主存地址有多少位?可容纳多少块? (2)Cache地址有多少位?可容纳多少块? (3)画出在二路组相联映射方式下主存地址字段中各段的位数
时间: 2024-10-13 12:09:38 浏览: 75
计算机组成原理之Cache和主存的映射方式
(1)首先,我们知道主存容量为512KB,即512 * 1024 bytes。由于每个字长为8位,那么总共有 \( \frac{512KB}{8位} = 64K \) 字。每个字块包含16个字,所以总共可以分成 \( \frac{64K字}{16字/块} = 4K块 \)。因此,主存地址需要有 \( \log_2(4K) \) 位来唯一标识一个块,大约是12位(因为\( 2^{12} = 4096 \approx 4K \))。考虑到每个字块也是按字寻址的,所以加上额外的一位来表示字(由于8位一字),主存地址总共有13位。
(2)对于缓存,其容量为4KB,即4 * 1024 bytes。同样,每个字块包含16个字,所以 \( \frac{4KB}{8位/字} = 512块 \),每块对应一个地址。Cache地址至少需要 \( \log_2(512) \) 位,约为9位。再加上用于字内寻址的1位,Cache地址总共有10位。
(3)在二路组相联映射中,主存地址通常分为三个部分:
- 中间位数取决于组大小,如果是4K块,则需要 \( \log_2(4K/16) \) 位,也就是7位,用来指定组内的位置;
- 剩下的位数就是剩余用于块内地址的部分,即 \( 13 - (2 + 7) = 4 \) 位,这部分用于块内的字偏移。
以下是二路组相联映射的主存地址字段分解示意图:
```
+-------+--------+-------+-----+---------+
| Group | Block | Word | ... | Unused |
+-------+--------+-------+--+---------+
```
阅读全文