Skip to content

2011年 408 计算机组成原理 第 15 题

计算机组成原理2011年选择题2分

题目

某计算机存储器按字节编址,主存地址空间大小为 64MB,现用 4M×8 位的 RAM 芯片组成 32MB 的主存储器,则存储器地址寄存器 MAR 的位数至少是( )。

错因

A

只看到题面的 "4M×8 位" 就直接算 位。这只是单片芯片的内部地址位数,不是 MAR 位数。MAR 要寻址的是整个主存地址空间,远大于单芯片容量。

B

在 A 的基础上多加了 1 位(22 + 1 = 23),可能是想"加一位选片",但片选位数算错了——32MB 需要 片,片选要 3 位(),不是 1 位。即便用这条路径算,也应得 22 + 3 = 25(即选项 C),仍然不是答案。

C

按"实际 RAM 容量 32MB"算: 位。这是把题目读漏了——题目明确说主存地址空间是 64MB,要求"主存芯片占满所有可能存储地址空间"。即便当前只装了 32MB RAM,CPU 给出的地址范围仍然要覆盖完整的 64MB 地址空间(剩下 32MB 留给 ROM 或预留),所以 MAR 必须按 64MB 来配。

总解析

关键概念辨析:MAR 的位数由"地址总线宽度 / 主存地址空间"决定,而不是"实际安装的 RAM 容量"。

题目里有三个容量数字,要分清

数据含义与 MAR 的关系
4M×8 位单片芯片容量决定片内地址位数 =
32MB实际安装 RAM 容量决定 RAM 区占多大地址段 =
64MB主存地址空间(CPU 能寻址的总范围)决定 MAR 位数 = = 26 位

计算

按字节编址 → MAR 至少需要 位。

为什么 MAR 要按地址空间而不是按 RAM 容量配?

主存地址空间常被划分为多个区(RAM 区、ROM 区、I/O 映射区、保留区)——题目里 32MB 是 RAM,剩下 32MB 通常是 ROM 或保留地址。CPU 的 MAR 要能产生整个 64MB 范围内任意有效地址,否则地址译码电路无法正确选中各个区。

换个角度想:MAR 是"CPU 能往地址总线上发的最大值"决定的,与"地址总线下游真正接了多少存储器"无关。

最终答案是 D(26 位)

最后更新:

⚠️ 这道题暂未配可视化,欢迎在 CodeBrick 反馈区告诉我们你想看哪道题