计算机硬件
这是第 1 章分量最重的一节。它给出冯·诺依曼结构的五个特点,并把五大部件里的三个(主存、运算器、控制器)拆到寄存器一级——而这些寄存器的名字会在第 3、5 章原样再出现。
本节的读法:不要把它当成”名词清单”,把它当成全书的零件目录。第 5 章讲的是这些零件怎么动,第 3 章讲的是其中存储部分怎么做大做快。
机制
冯·诺依曼结构的五个特点
| # | 特点 | 后面哪一章兑现 |
|---|---|---|
| 1 | 计算机由运算器、控制器、存储器、输入设备、输出设备五大部件组成 | 本节 |
| 2 | 指令和数据以同等地位存于存储器,可按地址寻访 | 3.2.3 |
| 3 | 指令和数据都用二进制表示 | 2.1 |
| 4 | 指令由操作码和地址码组成 | 4.1.2 |
| 5 | 存储程序:程序事先存入主存,机器自动逐条执行 | 1.2.5 |
| 6 | 以运算器为中心 | 见下——这一条已经过时 |
第 5 条「存储程序」是整个结构的灵魂,1.2.5 会说清它为什么让机器能”自动”运行。
第 2 条要小心一个陷阱:“同等地位”说的是它们在存储器里都是二进制串、都按地址访问,不是说 CPU 分不清。 CPU 靠取指周期还是取数周期来区分——同一串比特,在取指阶段被送进 IR 当指令,在取数阶段被送进运算器当数据。 这个区分机制在 5.2.1 指令周期讲透。
以运算器为中心 → 以存储器为中心
这是本节唯一一条”教材写了但已经变了”的内容,而且它是考点。
| 早期(冯·诺依曼原始结构) | 现代 | |
|---|---|---|
| 中心 | 运算器 | 存储器 |
| I/O 数据怎么走 | 必须经过运算器中转 | 可直接与主存交换(DMA) |
| 代价 | 所有数据都挤过运算器,运算器成为瓶颈 | 运算器只做运算 |
“以存储器为中心”的直接产物就是 7.3.3 的 DMA——设备与主存之间开一条不经过 CPU 的通路。认出这一点,DMA 就不是第 7 章突然冒出来的新东西,而是这一节那条演化线的终点。
主存储器:存储体 + MAR + MDR
flowchart LR CPU["CPU"] -->|"地址"| MAR["MAR<br/>地址寄存器"] MAR --> DEC["译码驱动"] DEC --> BODY["存储体<br/>存储单元的集合"] BODY <--> MDR["MDR<br/>数据寄存器"] MDR <-->|"数据"| CPU CPU -->|"读/写命令"| CTL["读写控制电路"] CTL --> BODY classDef reg fill:#ffcdd2,stroke:#b71c1c,stroke-width:2px classDef body fill:#fff3e0,stroke:#e65100 classDef cpu fill:#e3f2fd,stroke:#1565c0 class MAR,MDR reg class BODY,DEC,CTL body class CPU cpu
三个层次的名词要分清,它们是包含关系:
| 名词 | 是什么 |
|---|---|
| 存储元 | 存 1 位二进制的电路 |
| 存储单元 | 由若干存储元组成,有一个地址,一次读写的最小整体 |
| 存储体 | 全部存储单元的集合 |
疑问点:主存储器都包括什么?主存控制器被集成到 CPU 了?南桥又是什么?
考试口径通常只要前三个:存储体、MAR、MDR。
一个必须点明的边界:MAR 和 MDR 在逻辑上属于主存,但在现代计算机里物理上做在 CPU 内部。 这不矛盾——它们描述的是”主存与外界交换地址和数据的那一拍”,这一拍发生在哪颗芯片上不影响它的位数含义。
考的是位数,不是位置:问”MAR 的位数由什么决定”,答案是主存地址空间的大小。
② 主存控制器被集成到 CPU 了吗 → 是的,而且这正是 6.1.3 那条主线
内存控制器原本在北桥芯片上,现在整个被搬进了 CPU 芯片。原因很直接:内存是最需要带宽、最怕延迟的部件,搬进 CPU 省掉的是一次完整的跨芯片往返。
注意这不改变 MAR/MDR 的逻辑归属——上面①说的”逻辑属主存、物理在 CPU”,正是这次集成的结果。两个问题在这里合流了。
③ 南桥是什么 → 6.1.3 讲透
老主板上有两颗芯片:
挂什么 速率 北桥(离 CPU 近) 内存控制器、显卡接口 高 南桥(离 CPU 远) 硬盘、USB、网卡、声卡、BIOS 低 北桥被 CPU 吃掉了,南桥还在(Intel 叫 PCH,AMD 叫芯片组)。被吃掉的是北桥而不是南桥,因为北桥挂的是最急的设备;南桥挂的都是慢设备,多一跳无所谓。
所以修电脑视频里说的”南桥”,就是主板上现在还剩的那颗芯片组——硬盘、USB、网口都从它走,它被”干穿”意味着这些接口全废,但 CPU 和内存往往还是好的。这个现象本身正好印证了南北桥的分工。
这条提问的三问跨了三章,恰好说明第 1 章是什么:它把全书的零件先摆一遍,每个零件的细节在后面各章。1.2.2 只负责让你知道”主存里有 MAR 和 MDR 这两个寄存器”,至于它们的位数怎么算(3.2.3)、内存控制器搬到哪去了(6.1.3),是后面的事。
运算器:ALU 加四个寄存器
| 部件 | 全称 | 干什么 |
|---|---|---|
| ALU | 算术逻辑单元 | 真正做运算的电路(2.2.1) |
| ACC | 累加器 | 存操作数和运算结果 |
| MQ | 乘商寄存器 | 乘法存乘数、除法存商 |
| X | 操作数寄存器 | 存另一个操作数 |
| PSW | 程序状态字寄存器 | 存标志位:溢出 OF、符号 SF、零 ZF、进位 CF |
乘除法中三个寄存器的分工是考点,完整推导在 2.2.4:
| 运算 | ACC | MQ | X |
|---|---|---|---|
| 加/减 | 被加数 → 和 | —— | 加数 |
| 乘 | 部分积 → 乘积高位 | 乘数 → 乘积低位 | 被乘数 |
| 除 | 被除数 → 余数 | → 商 | 除数 |
PSW 是唯一会跨章反复出现的:2.2.3 用它判溢出,4.3.2 用它做条件转移,5.5.3 中断隐指令要把它和 PC 一起保存。
控制器:CU + IR + PC
| 部件 | 干什么 | 位数由什么决定 |
|---|---|---|
| PC 程序计数器 | 存下一条指令的地址;有自动加 1 的功能 | 存储单元的个数(与 MAR 相同) |
| IR 指令寄存器 | 存当前正在执行的指令 | 指令字长 |
| CU 控制单元 | 分析指令、发出控制信号 | —— |
三点边界:
第一,PC 存的是”下一条”还是”当前这条”? ——取指开始时,PC 里是本次要取的指令地址;取指完成后立刻 +1,于是变成下一条的地址。 所以两种说法都对,只是时刻不同。题目问”取指结束后 PC 的内容”,答的是下一条。
第二,PC 的位数与 MAR 相同,IR 的位数与指令字长相同。 这两个”位数由什么决定”是送分题。
第三,PC 有自动加 1 的功能,IR 没有。 “PC 是一个计数器”这句话是字面意义上的。
五大部件的信息流
flowchart LR IN["输入设备"] -->|"数据"| MEM["主存储器"] MEM -->|"数据"| ALU["运算器"] ALU -->|"结果"| MEM MEM -->|"输出数据"| OUT["输出设备"] MEM -.->|"指令"| CU["控制器"] CU -.->|"控制信号"| IN CU -.->|"控制信号"| MEM CU -.->|"控制信号"| ALU CU -.->|"控制信号"| OUT classDef ctrl fill:#ffcdd2,stroke:#b71c1c,stroke-width:2px classDef data fill:#c8e6c9,stroke:#1b5e20 classDef mem fill:#fff3e0,stroke:#e65100 class CU ctrl class IN,OUT,ALU data class MEM mem
实线是数据流,虚线是控制流。 控制器只发控制信号,不碰数据——这条分工在 5.1.2 会被写成 CPU 的正式结构。
边界
| 说法 | 判断 | 理由 |
|---|---|---|
| ”指令和数据在存储器中地位同等,所以 CPU 无法区分” | ❌ | 靠取指周期/取数周期区分 |
| ”现代计算机仍以运算器为中心” | ❌ | 以存储器为中心 |
| ”MAR、MDR 属于 CPU” | ⚠️ | 逻辑属主存,物理在 CPU;考位数不考位置 |
| ”PC 存放当前正在执行的指令地址” | ⚠️ | 取指前是,取指后已 +1;看题目问的时刻 |
| ”IR 的位数等于存储字长” | ❌ | 等于指令字长 |
| ”PC 的位数等于指令字长” | ❌ | 等于 MAR 位数 |
| ”存储单元和存储元是一回事” | ❌ | 存储元存 1 位,存储单元有一个地址 |
| ”运算器只有 ALU” | ❌ | 还有 ACC、MQ、X、PSW |
| ”控制器负责搬运数据” | ❌ | 只发控制信号 |
对照速查
| 寄存器 | 在哪 | 位数取决于 |
|---|---|---|
| MAR | 主存(物理在 CPU) | 存储单元个数 |
| MDR | 主存(物理在 CPU) | 存储字长 |
| PC | 控制器 | 存储单元个数(同 MAR) |
| IR | 控制器 | 指令字长 |
| ACC / MQ / X | 运算器 | 机器字长 |
| 三层名词 | 含义 |
|---|---|
| 存储元 | 存 1 位 |
| 存储单元 | 有 1 个地址 |
| 存储体 | 全部单元 |
考点
- 冯·诺依曼五个特点,尤其”以运算器为中心”已变为”以存储器为中心”。
- MAR / MDR / PC / IR 的位数由什么决定——年年考。
- 主存容量公式。
- 乘除运算中 ACC / MQ / X 的分工。
- PC 在取指前后的内容。
链接
- 🏠 返回总览:计算机组成原理第 1 章:计算机系统概述总览
- ⬅️ 上一节:1.2.1 计算机系统的组成
- ➡️ 下一节:1.2.3 计算机软件
- 🔑 主存组成展开:3.2.3 主存储器的基本组成
- 🔑 南桥北桥与内存控制器内聚:6.1.3 系统总线的结构
- 🔗 ACC/MQ/X 的分工:2.2.4 定点数的乘除运算
- 🔗 CPU 的正式结构:5.1.2 CPU 的基本结构
- 🔗 指令与数据怎么区分:5.2.1 指令周期
- 📖 名词库:第 1 章名词库