存储程序计算机
概述
存储程序计算机是一种将程序指令和数据存储在同一内存空间中的计算机架构,由von Neumann在1945年 EDVAC 报告中首次系统阐述。这一设计消除了物理重新接线的需要,使"编程"从硬件操作变为纯粹的智力活动。
关键内容
核心思想
指令与数据的统一存储:程序指令和数据存储在同一个内存空间中,使用相同的寻址方式。从内存的角度看,一个存储单元中的内容既可以被解释为数据,也可以被解释为指令——区别仅在于控制单元在何种上下文中读取它。
五大组件
EDVAC 报告将计算机分解为五个功能器官: 1. 中央算术单元(CA) — 执行算术和逻辑运算,对应现代 ALU 2. 中央控制单元(CC) — 取指、解码、执行,维护程序计数器 3. 内存(M) — 同时存储数据和指令 4. 输入设备(I) — 将外部数据和程序输入内存 5. 输出设备(O) — 将计算结果输出到外部
取指-解码-执行循环
Von Neumann 描述了处理器工作的基本范式: 1. CC 从内存中取出当前地址处的指令(fetch) 2. CC 解释该指令的含义(decode) 3. CC 协调 CA、M 等组件执行该指令(execute) 4. 程序计数器递增,指向下一条指令 5. 重复上述过程
程序的可操作性
由于指令本身就是内存中的数据,程序可以像数据一样被读取、修改、复制和生成: - 自修改程序:程序可以在运行过程中修改自己的指令 - 子程序调用:一段程序可以"调用"另一段程序 - 条件分支:根据计算结果选择不同的执行路径
与图灵机的关系
存储程序计算机本质上是通用图灵机的工程实现: - 内存 ↔ 纸带 - CPU ↔ 读写头和状态转换规则 - 程序 ↔ 纸带上的机器描述
Von Neumann 在1930年代曾在普林斯顿与 Turing 有过交往,对通用图灵机的概念有着深刻理解。EDVAC 报告完成了从 Turing 的纯数学概念到可用当时电子技术建造的工程方案的关键转化。
历史影响
几乎所有通用数字计算机——从最早的真空管计算机到今天的智能手机——在本质上都是存储程序架构的变体。这一术语"冯·诺依曼架构"已成为存储程序计算机的同义词。
来源
- raw/books/计算机科学/03-von-neumann-edvac.md
- 01-turing-on-computable-numbers — 通用图灵机概念的影响