04 - CPU 在干什么
CPU 被称为电脑的「大脑」,听起来很玄。但它的工作模式其实简单到有点无聊——它只是在没完没了地重复同一个循环。这一章讲清楚这个循环,你就懂 CPU 了。
CPU 只会做一件事:执行指令
CPU 不理解「打开微信」「渲染网页」这种高级任务。它只认识一小撮极其简单的指令,比如:
- 把内存某个位置的数,搬进 CPU;
- 把两个数加起来;
- 比较两个数谁大;
- 跳到程序的第几条指令去继续执行。
这些简单指令的集合,叫指令集。你写的任何高级代码(Python、Java……),最终都会被翻译成一长串这样的简单指令,CPU 一条条执行。
CPU 像个只会照着卡片做事的工人:每张卡片上是一个极简单的动作(「拿起 3 号盒子里的数」「把这俩加起来」)。它不懂大局,但把成千上万张卡片飞快执行完,复杂的任务就完成了。
核心循环:取指 → 解码 → 执行
CPU 干活就是一个永不停歇的三步循环,叫指令周期:
┌──────────────────────────────────┐
│ │
▼ │
① 取指令 ──▶ ② 解码 ──▶ ③ 执行 ─┘
(从内存取 (看懂这条 (真正干活:
出下一条) 指令要干嘛) 算/存/跳转)
- 取指令(Fetch):控制器根据一个叫 PC(程序计数器) 的「书签」,从内存里取出下一条要执行的指令。
- 解码(Decode):分析这条指令是干什么的(加法?搬数据?跳转?),需要哪些数据。
- 执行(Execute):交给 ALU 真正干活——做运算、存结果,或者跳到别处。
- 更新那个「书签」PC,指向下一条,回到第 1 步。
一秒钟,这个循环要转几十亿次。所谓 CPU 「主频 3.0 GHz」,粗略说就是它一秒能推进约 30 亿个这样的基本节拍(第 07 章细讲)。
几个关键小部件
CPU 内部有几个你该认识的角色:
- 控制器:总指挥,负责取指令、解码、协调各部件(第 03 章提过)。
- ALU:干实际运算的(第 02 章那个算术逻辑单元)。
- 寄存器(Register):CPU 内部极少量、极快的临时存储格子。CPU 干活时,正在用的数据就暂存在这里,比去内存拿快得多(第 06 章细讲)。
- PC(程序计数器):那个记录「下一条指令在哪」的书签。
为什么「跳转」指令这么重要
你可能疑惑:光是「一条接一条往下执行」,怎么实现 if 判断、for 循环 这些?
靠的就是跳转指令——它能修改那个「书签」PC,让 CPU 不按顺序走,而是跳到别的位置:
if:比较一下,条件成立就跳到 A 段代码,不成立就跳到 B 段。for/while:干完一轮,跳回循环开头再来一遍。
有了「顺序执行 + 有条件地跳转」,CPU 就能表达出程序里所有的分支和循环。你写的每一个 if 和 for,底层都变成了「比较 + 跳转」。
小结
- CPU 只认识一小撮极简单的指令(搬数、运算、比较、跳转),它们的集合叫指令集;高级代码最终都被翻译成这些指令。
- CPU 的工作就是永不停歇地循环:取指令 → 解码 → 执行,一秒转几十亿次。
- 关键部件:控制器(指挥)、ALU(运算)、寄存器(超快临时存储)、PC 程序计数器(记录下一条指令在哪)。
- 跳转指令能改写 PC,从而实现 if 分支和 for 循环——顺序执行 + 有条件跳转,就够表达一切逻辑。
下一章 → 05 - 内存:数据的临时仓库 | 回到 README 目录