📄 一句话概括

05 篇说"编程 = 给计算机下指令",那指令下给谁?——CPU。拆开看,它只是一个指挥官(控制器)+ 一个算术师(运算器)+ 几个小抽屉(寄存器)+ 一枚书签(程序计数器),外加一个滴答作响的节拍器(时钟)。一辈子循环三步:取指令 → 译码 → 执行。


1. 承上:指令到底下给谁

05 篇我们知道了:程序是 0/1 指令清单,编译器负责翻译。但还有一个大活人没出场——真正接收指令、执行指令的装置。

它就是 CPU(Central Processing Unit,中央处理器):你电脑里那块指甲盖大小、插在主板中央的芯片。04 篇讲的几十亿个晶体管,绝大部分就住在这里面;03 篇造的加法器,也装在它肚子里。

现在把它拆开。别怕,里面只有四个角色。

2. CPU 的三个部门 + 一枚书签

角色 学名 大白话 干什么
🧭 指挥官 控制器(Control Unit) 念菜谱的人 唯一"懂"指令的部门:读指令、发号施令
🧮 算术师 运算器 / ALU 干粗活的 加减乘除、比大小——03 篇的加法器就归它管
🗃️ 小抽屉 寄存器(Register) CPU 自带的储物格 离 ALU 最近的存数处,每个只存一个数,最快
🔖 书签 程序计数器(PC) 记着念到菜谱第几行 存"下一条指令的内存地址"

几个角色怎么配合?口诀:

控制器念菜谱(取指令、译码),命令 ALU 算、命令寄存器存;书签每执行完一条就往后挪。

📝 为什么需要"小抽屉"?

ALU 只认离它最近的数。要算 5 + 3,得先把 5 和 3 从内存搬进寄存器,算完再把结果搬回内存。寄存器快是快,但贵且少——现代 CPU 也就几十个,每个只能装一个数(64 位 CPU 每个抽屉装 64 个 0/1)。

3. CPU 的一辈子:三步循环

CPU 通电后到关机为止,永远在做同一个循环:

① 取指令(Fetch)—— 按书签的地址,从内存把下一条指令搬回来
② 译  码(Decode)—— 控制器拆开指令:操作码是"放入"?操作数是 5?
③ 执  行(Execute)—— 命令相应部门动手:数据进寄存器 / ALU 开算 / ……
        ↓
   书签后移一行 → 回到 ①,永远循环

📌 用"把 5 放入寄存器 A"走一遍
  1. 取指:书签指着内存第 1 格 → 控制器把 10111000 00000101 搬回来
  2. 译码:控制器拆开——前 8 位操作码 = "放入",后 8 位操作数 = 5
  3. 执行:5 写入寄存器 A;书签后移指向指令 2
  4. 回到 ①,处理下一条指令……

遇到 05 篇讲过的"跳转指令"(JMP)怎么办?很简单:跳转指令会把书签直接改到另一个位置——这就是程序能"分情况""转圈圈"的机关。所有软件的花活,都是靠"改书签"实现的。

4. 节拍器:时钟与 GHz

三步循环总得有个节奏,不然控制器不知道"现在该走下一步了没"。这个节奏由时钟打:每"滴答"一次,循环往前推一格。

📝 一个估算量感

3GHz 的 CPU 执行一条简单指令约需 1~4 个滴答。你按一次键盘到屏幕出字,CPU 已经跑了几亿个循环步。所谓"电脑快",快在它不厌其烦——每一步都蠢,但每秒几十亿次。

5. 指令集是"方言":x86 与 ARM

05 篇说 CPU 只会百来条动作——但不同家族的 CPU,会的动作不一样。这就像方言:

家族 代表 谁在用 风格
x86 Intel、AMD 电脑(Windows PC、Mac 旧款) 词多、指令复杂(CISC)
ARM 高通、苹果 M 系列、联发科 手机、平板、新 Mac 词少、指令精简(RISC),省电

这解释了一个生活现象:手机 App 不能直接装到 Windows 电脑上跑——App 里的指令是说"ARM 方言"的,x86 的 CPU 听不懂。反过来也一样。(模拟器做的事,就是现场"翻译方言",所以模拟器跑得慢。)

📝 这也回应了 05 篇的伏笔

05 篇说"高级语言和机器无关,一份代码到处能跑"——靠的就是每个平台各配一个翻译官:Windows 上把 Python 翻成 x86,手机上翻成 ARM。人写的代码不变,变的是翻译官的口音。

6. 速度金字塔:为什么抽屉离得近这么重要

各存储层的速度差距大得吓人(数量级感受即可):

寄存器    最快(<1 纳秒)   最小(几十个)     最贵
   ↓
高速缓存  很快(几纳秒)    几 MB~几十 MB
   ↓
内存      较慢(约 100 纳秒)  几 GB~几十 GB
   ↓
硬盘      最慢(微秒级起)    几百 GB~几 TB     最便宜

CPU 快得离谱,内存跟它比就是蜗牛。所以 CPU 采取的策略是:常用的数据尽量揣在怀里(寄存器、缓存),实在没有才去内存拿,拿了顺手多拿一份存缓存(下次还要用的概率大)。这个"揣怀里"的机制,就是你听过的缓存。

💡 由此理解两件生活事
  1. 为什么开机慢、软件打开慢? 程序从硬盘搬进内存,硬盘最慢——搬完就快了。
  2. 为什么关机后内存里的东西全没了? 内存和寄存器都要持续供电才记得住(05 篇说"程序要先进内存",断电 = 抽屉全空);硬盘才是断电不忘的。这也是"存储程序"思想的代价。

7. 多核:请了好几个指挥官

现代 CPU 宣传"8 核 16 线程"——核(Core)就是一套完整的"指挥官 + ALU + 寄存器 + 书签"。8 核 = 芯片里并排塞了 8 套班底,可以同时干 8 件事。

8. 常见误区

⚠️ 误区一:CPU 会"思考"或"理解"程序

不会。控制器只是把操作码译成固定动作。05 篇说过:理解只发生在人脑子里。 [!warning] 误区二:主频越高电脑一定越快 不一定。速度 = 主频 × 每周期能干的活 × 缓存命中情况 × 软件会不会用多核。8 核 2.5GHz 跑分常常赢 4 核 4GHz。 [!warning] 误区三:内存越大 CPU 越快 内存大只是"能同时装更多程序",不直接加速计算。真正贴身提速靠的是缓存和寄存器。 [!warning] 误区四:手机 CPU 和电脑 CPU 是同一种东西的不同型号 是两个方言家族(ARM vs x86),指令集都不同——这决定了软件生态的分家,不只是快慢差别。 [!warning] 误区五:程序卡住是 CPU 坏了 更可能是:在等硬盘 / 等网络 / 死循环改书签(程序 bug)。CPU 自己几乎不会"罢工",它只会忠实地跑到断电为止。

9. 可折叠自测题

❓ - Q1. CPU 内部有哪四个角色?各干什么?

控制器(读指令、发号施令)、运算器 ALU(算术与逻辑)、寄存器(贴身小抽屉存数)、程序计数器(书签,记下一条指令的地址)。 [!question]- Q2. 三步循环是什么?跳转指令改变了哪一步? 取指令 → 译码 → 执行,循环往复。 跳转指令改写书签(程序计数器),让下一步去内存别处取指令——程序的分情况和循环全靠它。 [!question]- Q3. 3GHz 是什么意思? 时钟每秒滴答 30 亿次。节拍器驱动取指-译码-执行循环往前走,每滴答一下推进一格。 [!question]- Q4. 为什么手机 App 不能直接装在 Windows 电脑上跑? 手机 CPU 说 ARM 方言,电脑 CPU 说 x86 方言——指令集不同,互相听不懂。模拟器靠现场翻译来兼容,代价是慢。 [!question]- Q5. 为什么程序"第一次打开慢,第二次快"? 第一次要从最慢的硬盘把程序搬进内存、塞进缓存;第二次缓存里还有热乎的,CPU 直接从怀里的抽屉拿——快几个数量级。


10. 下一步学什么


相关笔记