计算机组成原理 · 图解学习手册

从系统架构到逻辑门电路,一张图讲清一个概念。配合文字说明,边看边学。

1计算机系统架构总览

最顶层的大图:五大部件如何连接
计算机系统架构总览 CPU 中央处理器 ALU 算术逻辑单元 CU 控制单元 Registers 寄存器组 CPU 内部总线 系统总线 System Bus 地址总线 Address Bus 数据总线 Data Bus 控制总线 Control Bus 主存储器 Memory RAM / ROM I/O 设备 键盘 / 显示器 / 磁盘
核心要点:计算机由运算器(ALU)、控制器(CU)、存储器、输入设备、输出设备五大部件组成。 CPU = 运算器 + 控制器。系统总线是各部件之间的"高速公路",分三类:地址总线告诉内存"访问哪个单元",数据总线传送真正的数据,控制总线传递读/写等控制信号。

2CPU 内部结构与寄存器

深入 CPU:寄存器组里有哪些关键部件,如何配合 ALU
CPU内部结构与寄存器详解 CPU 内部结构 控制单元 CU 译码 + 发控制信号 控制信号 ALU 算术逻辑单元 加减 / 与或非 / 移位 A B 通用寄存器 AX 累加器 BX 基址寄存器 CX 计数器 DX 数据寄存器 专用寄存器 PC 程序计数器 IR 指令寄存器 MAR 地址寄存器 MDR 数据寄存器 内部总线(寄存器 ↔ ALU ↔ 外部总线)
关键寄存器:
寄存器全称作用
PCProgram Counter存下一条要取的指令地址,每取一条自动 +1
IRInstruction Register存当前正在执行的指令
MARMemory Address Register存要访问的内存单元地址
MDRMemory Data Register存从内存读出 / 要写入的数据
AX/BX/CX/DX通用寄存器暂存操作数和运算结果(AX 即累加器)

CU(控制单元)是指挥官:它从 IR 取指令、译码,再通过虚线(控制信号)指挥 ALU 做什么运算、哪些寄存器该读/写。ALU 接收两个操作数 A、B,运算结果经内部总线写回寄存器。

3指令执行周期

CPU 是怎么一步步跑完一条指令的(取指→译码→执行→写回)
指令执行周期流程图 ① 取指 Fetch PC → MAR MAR → 内存 内存 → MDR → IR ② 译码 Decode CU 读取 IR 分析操作码 确定操作数地址 ③ 执行 Execute CU 发控制信号 ALU 运算 或访存读/写 ④ 写回 结果 → 寄存器 PC = PC + 1 准备下一条 循环 → 执行下一条指令 取指阶段数据流详图 内存 Memory PC MAR MDR IR ① PC值送MAR ② MAR寻址 ③ 内存数据→MDR ④ MDR→IR 取指完成后,IR 中存放当前指令,PC 已指向下一条 CU 从 IR 取操作码译码,决定执行什么操作
一条指令的生命周期: 取指 PC 给出地址 → 送 MAR → 内存按地址取出指令 → 经 MDR → 存入 IR。 译码 CU 分析 IR 中的操作码,知道要干什么、操作数在哪。 执行 CU 发控制信号,ALU 运算或访问内存。 写回 结果写回寄存器,同时 PC + 1,准备取下一条。如此循环——这就是"冯·诺依曼机"不断取指执行的本质。

4基本逻辑门

硬件的"字母表"——所有运算最终都由这些门搭出来
基本逻辑门符号与真值表 AND 与门 A B Y & A B | Y 0 0 | 0 0 1 | 0 1 0 | 0 1 1 | 1 OR 或门 A B Y ≥1 A B | Y 0 0 | 0 0 1 | 1 1 0 | 1 1 1 | 1 NOT 非门 A Y 1 A | Y 0 | 1 1 | 0 XOR 异或门 A B Y =1 A B | Y 0 0 | 0 0 1 | 1 1 0 | 1 1 1 | 0 XOR = "相同为0,不同为1" — 正是二进制加法中"不考虑进位"的结果 AND = "两个都为1才为1" — 正好是加法中的"进位" 所以:XOR 做和,AND 做进位 → 组合起来就是加法器!
为什么要记住这四种门?因为它们的真值表对应着最朴素的二进制逻辑:
· AND 只有全 1 才出 1 —— 天然的"进位"判定
· OR 有 1 就出 1
· NOT 取反,构成"非门",做选通/取反
· XOR 不同才出 1 —— 天然的"半加和"
记住 XOR 与 AND 这对组合,下一节就能直接看懂加法器。

5加法器电路

从逻辑门到能做加法的硬件:半加器 → 全加器 → 行波进位加法器
半加器与全加器电路 半加器 Half Adder(无进位输入) A B =1 Sum 和 & Carry 进位 A B A B 全加器 Full Adder(带进位输入 Cin) A B Cin Sum 和 ≥1 Cout 进位输出 HA1 HA2
半加器(Half Adder):两个输入 A、B,输出 Sum = A ⊕ B(XOR)和 Carry = A · B(AND)。它只能处理"两个 1 位数相加、没有低位进位"的情况。

全加器(Full Adder):多了一个低位进位输入 Cin。做法很巧妙:用两个半加器级联——第一级把 A、B 加起来得 S1 和 C1;第二级把 S1 和 Cin 再加一次得最终 Sum 和 C2;最后用或门把 C1、C2 合并成最终进位 Cout。

行波进位加法器(Ripple-Carry Adder):把 n 个全加器串起来,前一个的 Cout 接后一个的 Cin,就能做 n 位加法(如 32 位、64 位)。这就是 CPU 里 ALU 做加法的底层硬件。

6核心要点速记

一张表串起整条知识链

从软件到硬件的层次

  • 高级程序 → 编译 → 机器指令(0/1 序列)
  • CPU 通过取指-译码-执行循环,逐条运行指令
  • 每条指令的操作,最终由 CU 发控制信号调度各部件完成
  • 算术/逻辑运算由 ALU 承担,ALU 由 逻辑门组合而成
  • 最基本的运算"加法",由 异或门(求和)+ 与门(进位)搭成

必背寄存器 trio

  • PC:指哪条指令(自动 +1)
  • IR:存当前指令(给 CU 译码)
  • MAR / MDR:访存的"地址"与"数据"桥梁

自测一下

1. CPU 由哪两部分组成?
答案:B。运算器(ALU) 负责计算,控制器(CU) 负责取指译码发信号,二者合称 CPU。
2. 半加器的"进位"输出由哪个门实现?
答案:B。Sum = A⊕B(XOR),Carry = A·B(AND)。
3. 指令取指阶段,PC 的内容被送往哪个寄存器?
答案:B。PC 给出指令地址 → 送 MAR → MAR 去内存寻址 → 取出的指令经 MDR → 存入 IR。