很多人学CPU只会背概念:CU、ALU、寄存器、时钟、取指译码……但始终串不起来整套工作逻辑。
本文结合硬件底层逻辑,串联晶振时钟、CPU组成、寄存器组、PC寻址、五级指令流水线,完整复盘CPU从「开机上电」到「执行计算、写回结果」的全过程,零基础也能彻底看懂CPU是怎么干活的。
一、CPU的四大核心硬件
CPU所有工作,都依赖四大核心模块的配合,缺一不可,也是整个流程的核心载体:
1. 控制单元 CU(总指挥)
整个CPU的大脑指挥官,不参与计算,只负责发号施令。负责解析指令、控制数据流向、管控寄存器读写、判断跳转逻辑,调度所有硬件模块工作。
2. 运算单元 ALU(计算器)
CPU唯一的计算核心,只做两件事:算术运算(加减)、逻辑运算(与或非、比较)。ALU没有存储能力,计算结果必须立刻写回寄存器保存。
3. 寄存器组(高速临时仓库)
CPU内部最快的存储单元,由触发器构成,跟随时钟节拍工作,分为两类:
-
通用寄存器:临时存放运算数据(如R1、R2、R3)
-
专用寄存器:各司其职,管控CPU运行逻辑
-
PC(程序计数器):存下一条指令的内存地址,CPU靠它找指令
-
IR(指令寄存器):存当前正在执行的指令
-
标志寄存器:保存运算状态(是否为0、溢出、正负、进位等)
-
4. 时钟系统(节拍器)
由外部晶振+内部PLL锁相环组成。晶振提供稳定基准频率,PLL倍频生成CPU内核主频。CPU所有动作全部同步时钟节拍,没有时钟,所有寄存器不刷新、指令不执行、CPU直接停摆。
二、CPU的工作本质
CPU一辈子只做一件循环的事:取指令 → 译码 → 执行 → 访存 → 写回。
所有程序、系统、软件的运行,本质都是无数条机器指令重复这个流水线流程。
下面以最经典的指令 ADD R1, R2, R3(功能:R1 = R2 + R3),完整走一遍从开机到指令执行的全流程。
三、指令流程:上电复位 → 指令执行结束
阶段0:上电/硬件复位(一切的起点)
这是很多人最困惑的问题:CPU刚开机,怎么知道去哪找程序?
答案:不需要找,硬件出厂固化规则。
-
设备上电,硬件复位信号生效,CPU内部所有寄存器、流水线、状态全部清零复位;
-
硬件强制给PC程序计数器写入一个固定的复位地址(不同架构CPU地址固定,不可修改);
-
外部晶振起振,PLL生成CPU工作时钟,所有硬件进入待命状态;
此时状态:PC = 固定开机地址,CPU准备读取第一条指令。
阶段1:IF 取指令(Instruction Fetch)
核心动作:根据PC地址,从内存/Flash中抓取指令。
-
CU控制单元将PC寄存器中的地址,发送到地址总线;
-
内存根据地址,取出对应的二进制机器指令(本次为ADD指令),通过数据总线传入CPU;
-
指令锁存到IR指令寄存器中,等待译码;
-
硬件自动更新PC:PC = PC + 指令长度(32位指令默认+4),自动指向下一条指令地址;
当前状态:IR存当前执行指令,PC准备取下一条指令。
阶段2:ID 指令译码(Instruction Decode)
核心动作:CU读懂这条指令要干什么。
-
控制单元CU读取IR中的二进制机器码,完成译码解析;
-
解析出完整指令信息:运算类型为「加法」、源数据来自R2、R3寄存器、结果存入R1寄存器;
-
CU发送读控制信号,控制寄存器组同时读出R2、R3的存储数据,输送到ALU的两个输入端口;
当前状态:ALU输入端已拿到待计算的两个数据,等待运算。
阶段3:EX 执行运算(Execute)
核心动作:ALU完成核心计算。
-
CU控制ALU切换为「加法运算模式」;
-
ALU对R2、R3的数据完成加法运算,输出最终结果;
-
同步更新标志寄存器,记录运算状态(结果是否为0、是否溢出、正负等),为后续跳转指令提供判断依据;
⚠️ 重点:ALU是组合逻辑电路,无存储功能,计算结果只会临时存在通路中,必须写回保存。
阶段4:MEM 访存(Memory Access)
核心动作:按需访问内存,非所有指令都需要。
本次执行的是寄存器加法指令,数据全程在CPU内部寄存器流转,无需读写内存,此阶段直接跳过。
✅ 仅两类指令会执行访存:
-
LOAD:从内存读取数据到寄存器
-
STORE:将寄存器数据写入内存
阶段5:WB 写回(Write Back)
核心动作:保存运算结果,完成整条指令执行。
-
时钟上升沿到来(晶振节拍触发),CU发送寄存器写使能信号;
-
将ALU的计算结果,写入目标寄存器R1;
-
R1原有数据被覆盖,正式完成 R1 = R2 + R3 的全部逻辑;
四、CPU的永久工作逻辑
一条指令执行完毕后,CPU不会停止,立刻进入下一轮循环:
利用此前自增完成的PC地址,重复执行「取指→译码→执行→访存→写回」,无限往复。
插入对比:如果指令是 LOAD R2, [0x1000] (把内存 0x1000 的数据读到 R2)
- 复位→PC 取指令(LOAD 指令进入 IR)
- 译码:识别是加载指令,解析内存地址 0x1000
- 执行:ALU 计算有效地址 0x1000
- 访存 MEM 阶段:CPU 把 0x1000 送到地址总线,读取内存的数据
- 写回 WB:把读到的内存数据写入 R2 寄存器
五、全程核心知识点复盘
-
晶振是所有动作的基础:所有寄存器刷新、指令流转、数据读写,全部跟随时钟节拍,无时钟则CPU停机;
-
PC是CPU的寻址核心:开机硬件赋值、顺序执行自动自增、跳转指令手动改写,决定CPU取哪条指令;
-
寄存器是CPU的唯一运算载体:CPU无法直接运算内存数据,所有计算必须先加载到寄存器;
-
CU管控所有逻辑,ALU只负责计算:分工明确,缺一不可;
-
五级流水线是CPU的通用工作模型:所有软件、系统、程序的运行,本质都是无数指令流水线的叠加。

305



被折叠的 条评论
为什么被折叠?



