tags: [数电] type: note source_type: reconstructed created: 2026-08-18 updated: 2026-08-18
[!note] 对象层 学完这篇,你能判断:
- 冯诺依曼模型的四个子系统和"存储程序"概念;
- 为什么程序和数据在内存中都是 0/1 位模式;
- 16 位 ALU 如何用一个 sel 信号完成加/减/与/或四种运算;
- 计算单元(ALU+寄存器+时钟)如何一步步累加出一个算式。
学完后配合 [[11-从零搭建计算机(下)-控制与指令|数电 11(下)]],就能看懂一台"从零搭建"的计算机全貌。
用生活理解:冯诺依曼模型的计算机像"一个会记流水账的柜台"——差旅费、机票单(程序和数据的本质都是"纸")全摆在同一张桌子上(同一块内存),由"掌柜"(控制单元)按一张"步骤卡"(指令)逐条处理。ALU 是"算盘的珠子"(加法/减法/与/或),寄存器是"柜台的临时小筐",时钟就是"敲一下干一步"的节拍器。
基于冯诺依曼模型的计算机 = 存储器 + ALU(算力)+ 控制单元(指挥)+ I/O(进出),程序和数据都以位模式存放在同一块内存里、按指令顺序执行;ALU 用"选择器"把加/减/与/或做成一组通用运算单元。
| 子系统 | 职责 |
|---|---|
| 存储器 | 存储数据和程序(都存同一块内存) |
| 算术逻辑单元 ALU | 做算术/逻辑/位运算 |
| 控制单元 | 控制存储器、ALU、I/O 等所有子系统 |
| 输入/输出单元 | 从外部接收输入、把结果输出到外部 |
| sel | 结果 |
|---|---|
| 0b00 | A + B |
| 0b01 | A − B |
| 0b10 | A & B |
| 0b11 | A | B |
配套信号:Cin/Cout = 进位输入/输出;ZF = A 与 B 是否相等的标志(比较器给出)。把 A、B、加法器、减法器、与门、或门、比较器全部设成 16bit → 就是 16 位 ALU。
取指令 → 译码 → 执行 →(下一条)取指令 → 译码 → 执行 → …
| 易混点 A | 易混点 B | 关键区别 |
|---|---|---|
| CISC | RISC | CISC 指令复杂多变、控制器电路复杂(x86);RISC 指令精简统一、电路简单(ARM/RISC-V) |
| 冯诺依曼结构 | 哈佛结构 | 冯诺依曼单内存、指令数据同存(本课);哈佛指令/数据内存分离(单片机常用) |
| 无流水线 | 流水线 | 一条指令完整跑完再取下条 vs 三条指令的取指/译码/执行重叠进行 |
| 数据 RAM | 指令 RAM | 数据 RAM 存要算的数;指令 RAM 存控制信号(ALU sel 序列)——都是RAM,用途不同(见数电 11) |
冯诺依曼基于通用图灵机:数据和程序在逻辑上相同,都可用 0/1 位模式编码 → 同一块存储器可以既放数据又放程序。这是"软件能用刷固件/改文件的方式更换"的根本原因。
串行时一条指令三个阶段都空闲等待;流水线把三条指令的取指/译码/执行在时间上重叠 → 单位时间完成的指令数(吞吐量)大幅提升。代价是电路更复杂(冲突、冒险处理)。
CPU 内存
┌────────────┐ 地址总线 地址
│ ALU │ ┌───────────────┐ 内容(16bit) 地址(8bit)
│ 寄存器 │──数据──→│ 数据/程序 │
│ 控制单元 │──地址──→│ (同一块) │
└────────────┘ 控制总线 └───────────────┘
│
键盘/显示器/打印机/鼠标 ── 各自的控制器 ── 总线
一台"非真实但完整"的简单计算机:CPU 负责计算与指挥,内存统一存代码和数据,I/O 控制器挂到总线上。
电路里放:加法器、减法器、与门、或门、比较器四个"候选运算器",它们的输出全部进 4 选 1 选择器,由 sel(2bit)挑一个作为 S 输出;Cin/Cout 管进位,比较器给出 ZF(两数相等标志)。把所有元件位宽设成 16 → 16 位 ALU。
13+45+27+6:依次把 B 输入 13/45/27/6,每输入一个拍一次按钮 → 寄存器累加 13→58→85→91;来源:尚硅谷《从零搭建计算机》第 2 章(计算机组成原理)+ 第 3.1~3.2 节(ALU 与计算单元);关联 [[冯诺依曼体系结构]] 维基页