Appearance
题目
下列关于冯·诺依曼结构计算机基本思想的叙述中,错误的是( )。
错因
A
误以为程序还可以由 GPU、DMA 等其它部件"独立执行"。但冯·诺依曼架构的定义就是 CPU 集中处理所有指令——GPU/DMA 只负责数据搬运或专用计算的辅助,主控制流仍在 CPU。"程序的功能通过 CPU 执行指令实现"是冯氏机的基础原则。
B
误以为"指令和数据形式上有别"——觉得 CPU 区分 IF/ID 阶段就是因为它们形式不同。但冯氏机的存储程序原理就是把指令和数据都用二进制存在同一个存储器里,CPU 靠程序计数器和当前 CPU 状态来区分"现在取的是指令还是数据",位串本身没有任何标记告诉你它是哪一种。
D
误以为"指令可以执行时再加载"。但存储程序原理要求程序的所有指令和必要数据先全部装入存储器,CPU 才能按 PC 一条接一条取指执行。现代 OS 的"按需加载"也是先把整个可执行文件映射到地址空间(即"放进存储器"),CPU 才能跑。
总解析
冯·诺依曼架构的五个基本思想(也称"五大要点"):
- 计算机由运算器、控制器、存储器、输入、输出 5 大部件组成
- 指令和数据都以二进制形式存放在同一存储器中(存储程序原理)
- 指令和数据形式上无区别,但 CPU 按上下文区分
- 指令由操作码 + 地址码组成
- 程序由指令组成,指令按 PC 顺序自动取出执行(程序通过 CPU 集中控制)
逐项判断:
| 选项 | 叙述 | 判断 | 理由 |
|---|---|---|---|
| A | 程序的功能都通过 CPU 执行指令实现 | ✓ 对 | 第 5 条原则 |
| B | 指令和数据都用二进制表示,形式上无差别 | ✓ 对 | 第 2、3 条原则 |
| C | 指令按地址访问,数据都在指令中直接给出 | ✗ 错 | 数据不都在指令中——只有立即寻址的数据在指令中,其它寻址方式(直接、间接、寄存器、变址等)的数据都在内存或寄存器里 |
| D | 程序执行前,指令和数据需预先存放在存储器中 | ✓ 对 | 存储程序原理 |
C 为什么错——不同寻址方式下数据的位置:
| 寻址方式 | 数据在哪 |
|---|---|
| 立即寻址 | 在指令字中(这是 C 唯一成立的场景) |
| 直接寻址 | 在内存中(指令给出地址) |
| 间接寻址 | 在内存中(指令给出指针的地址) |
| 寄存器寻址 | 在 CPU 寄存器里 |
| 变址 / 基址寻址 | 在内存中(动态算出地址) |
只有立即数才"在指令中给出",其它寻址方式下数据都另存别处——所以"数据都在指令中"是错的。
最终答案是 C(错误的叙述)。
易错点速查:
- "存储程序原理" = 指令 + 数据预先一起进存储器(D 对)
- "指令和数据形式无别" = 同一二进制存储,靠 PC/状态区分(B 对)
- 数据不一定在指令中——大多数指令的数据在内存/寄存器里