一段代码是怎样被 CPU 执行的

一段代码是怎样被 CPU 执行的

18分钟 ·
播放数2
·
评论数0

点击运行程序之后,源代码并不会直接进入 CPU。操作系统需要创建进程、映射可执行文件,CPU 才能从入口地址开始读取并执行机器指令。

这一集沿着一段程序的真实执行路径,讲清指令、寄存器、流水线、缓存、分支预测和进程调度如何协作,以及为什么 CPU 很忙不等于程序正在高效工作。

重点内容:

- 源代码如何变成机器指令

- Linux 如何装载可执行文件并按需读取页面

- CPU 如何取指、译码和执行

- 乱序执行为什么不会打乱程序结果

- 缓存未命中为什么会让 CPU 等待

- 分支预测错误为什么代价昂贵

- 多个程序如何轮流使用 CPU

- 如何用 perf 理解周期、指令和缓存未命中

英文词对照:

- Machine Instruction:机器指令

- Program Counter:程序计数器

- Register:寄存器

- Pipeline:流水线

- Out-of-order Execution:乱序执行

- Cache Miss:缓存未命中

- Branch Prediction:分支预测

- Context Switch:上下文切换

- Instructions Per Cycle:每周期执行指令数