Appearance
题目
某存储器总线宽度为 64 位,总线时钟频率为 1 GHz,在总线上传输一个数据或地址需要一个时钟周期,不支持突发传送方式,若通过该总线连接 CPU 和主存,主存每次准备一个 64 位数据需要 6 ns,主存块大小为 32 B,则读取一个主存块需要的时间为( )。
错因
A
按"一次访存"算了。一次访存 = 传地址 1 ns + 主存准备 6 ns + 传数据 1 ns = 8 ns。这是只读到一个 64 位字(8 B)的时间——但块大小 32 B = 4 个 64 位字,要 4 次访存,不是 1 次。
B
按"突发传送"模式算了:传 1 次地址 + 主存准备 1 次 + 传 4 次数据,得 ns。但题目明确说不支持突发传送——每次只能取一个 64 位数据,每次都要重新发地址。读漏了"不支持突发"这个关键约束。
C
可能用了类似 的复杂估算,又或者把传地址、传数据次数算错(如算了 2 次地址、4 次数据 + 6 ns 准备一次),凑出 26 ns。本质是没把"每次访存独立"的时间结构想清楚。
总解析
关键约束:
- 总线 64 位(8 B)
- 时钟周期 = = 1 ns
- 传 1 个数据或地址 = 1 个时钟周期 = 1 ns
- 主存准备 1 个 64 位数据 = 6 ns
- 块大小 32 B = 个 64 位字
- 不支持突发 → 每次只能取一个 64 位字,且每次都要重发地址
单次访存的时间结构:
| 阶段 | 耗时 |
|---|---|
| CPU 把地址发上总线 | 1 ns |
| 主存接到地址,准备数据 | 6 ns |
| 主存把数据发上总线 | 1 ns |
| 小计 | 8 ns |
4 次访存 = ns。
和突发传送对比(题外):如果支持突发,传一次地址、主存连续准备并连续传 4 个数据(流水重叠),通常只要 ns(或 ns,具体看时序假设)——这就是 B 选项的来源。但本题说"不支持",所以走 D 路径。
最终答案是 D(32 ns)。
记忆要点:看到"不支持突发"就要警觉——读多个字时每次都要重新发地址、每次都要等主存重新准备,时间是单次访存的整数倍。