《重学计算机》系列中第3章:重学计算机大脑 CPU主要讲的是:CPU 是如何工作的,以及程序是如何在 CPU 上被执行的。下面给你用通俗但完整的方式梳理这一章的核心内容 🧠
一、CPU 是什么(计算机的大脑)
CPU(Central Processing Unit,中央处理器)是计算机负责 执行指令和处理数据 的核心部件。
简单理解:
- 内存:存数据
- 硬盘:长期存储
- CPU:负责计算和执行程序
当你运行一个程序时,本质上就是:
CPU 从内存中取出指令 → 解释 → 执行
二、CPU 的核心组成
一个 CPU 主要由三个核心部分组成:
1. 控制器(Control Unit)
作用:指挥整个 CPU 工作
它负责:
- 从内存取指令
- 解码指令
- 控制各个部件执行
就像 指挥官。
2. 运算器(ALU)
ALU(Arithmetic Logic Unit)负责:
- 加减乘除
- 位运算
- 比较运算
例如:
3 + 5
10 > 8
这些都是 ALU 完成的。
3. 寄存器(Registers)
寄存器是 CPU 内部的超高速小内存。
特点:
- 比内存快很多
- 容量非常小
- 存放当前计算的数据
常见寄存器:
- PC(Program Counter)
存储下一条指令地址 - IR(Instruction Register)
当前执行的指令 - 通用寄存器
存放数据
三、CPU 是如何执行程序的
CPU 执行程序遵循一个循环,叫:
取指 → 译码 → 执行
英文:
Fetch → Decode → Execute
流程如下:
第一步:取指(Fetch)
CPU 根据 PC 寄存器 的地址:
从内存取出一条指令
例如:
ADD R1, R2
第二步:译码(Decode)
CPU 判断:
这条指令要干什么
比如:
ADD = 加法
控制器就会安排 ALU 工作。
第三步:执行(Execute)
ALU 开始运算:
R1 + R2
结果再写回寄存器或内存。
第四步:更新 PC
PC 指向:
下一条指令
然后继续循环。
整体循环:
取指 -> 译码 -> 执行 -> 下一条指令
这个循环每秒可以执行 几十亿次。
四、指令到底长什么样
在 CPU 眼里,所有程序其实都是:
二进制
例如:
10110000
这可能表示:
MOV AX, 1
因此:
高级语言 (Java/Python)
↓
编译
↓
汇编语言
↓
机器码(二进制)
↓
CPU执行
五、为什么寄存器这么重要
CPU 访问速度排行:
寄存器 > L1缓存 > L2缓存 > 内存 > 硬盘
速度差距巨大。
举例(大概量级):
| 存储 | 访问时间 |
|---|---|
| 寄存器 | ~1ns |
| 缓存 | ~3ns |
| 内存 | ~100ns |
| 硬盘 | ~10ms |
所以程序优化很大程度是:
尽量让数据留在寄存器和缓存
六、为什么 CPU 可以并行
现代 CPU 不只是简单执行指令,还会:
1. 指令流水线(Pipeline)
把执行过程拆成阶段:
取指
译码
执行
访存
写回
像流水线一样:
指令1: 取指
指令2: 取指
指令3: 取指
多个指令同时处理。
2. 多核(Multi-Core)
一个 CPU 里面有多个核心:
Core1
Core2
Core3
Core4
可以并行执行多个任务。
3. 超标量执行
CPU 一次可以执行:
多条指令
而不是一条。
七、CPU 执行程序的完整路径
一个程序运行大致流程:
程序启动
↓
加载到内存
↓
CPU取指
↓
译码
↓
执行
↓
写回结果
↓
继续下一条
直到:
程序结束
八、本章核心总结
这一章最核心只有 3 个点:
1 CPU 的结构
CPU =
控制器 + 运算器(ALU) + 寄存器
2 CPU 的工作循环
取指
↓
译码
↓
执行
↓
下一条
循环执行。
3 程序的本质
所有程序最终都会变成:
机器指令(二进制)
由 CPU 一条一条执行。
如果你愿意,我可以继续给你讲这一章最关键但很多人忽略的三个概念:
1️⃣ 为什么 CPU 需要缓存(Cache)
2️⃣ 为什么会有分支预测
3️⃣ 为什么 CPU 主频不是越高越好
这三个其实是理解 现代 CPU 性能的关键。