seegongsik
结构

CPU 怎么工作

负责计算的ALU,决定做什么的指令。这两者怎样合成一体运转?跟着CPU一条一条处理指令的流程走一遍,答案就出来了。

01

CPU重复三个节拍

CPU做的事其实很简单。
取来一条指令,弄清它是什么指令,然后执行。
接着再取下一条指令。
这三个节拍,它不停地重复。

1
取指
取来一条命令
→
2
解码
解开是什么命令
→
3
执行
ALU 干活
↻
这三个拍子,一秒钟转几十亿次。所以电脑才快。

取指 → 译码 → 执行,然后重复。

如果把取指、译码、执行算作一圈,CPU在1秒内要转上几十亿圈。
每一步都很简单,可是速度极快,所以能完成复杂的工作。

02

指向下一条指令的手指

可是CPU怎么知道现在该做第几条指令呢?
内存里某处排着一串指令,其中有个装置专门指着“下一条要做的”。
它叫PC,也就是程序计数器。

PC
0
下一个地址
0命令 A←
1命令 B←
2命令 C←
3命令 D←

PC指向下一条指令。

每取一条指令,PC就加一格。
做完0号就是1号,做完1号就是2号。
多亏这根手指,CPU才不会乱了顺序,能一条接一条地执行指令。

03

零件聚在一起,就成了CPU

现在零件们聚到一起了。
指向下一条指令的PC,解读指令的译码器,负责计算的ALU,还有暂时握住数值的小格子——寄存器。
单看都很小,合在一起,就成了一个能处理指令的CPU。

CPU
PC
指着下一条命令
解码器
解开命令
ALU
计算(第11课)
寄存器
暂时攥着值
第11课的 ALU,就是这里管"计算"的。CPU 是这些部件的团队。

合为一体的CPU。

PC指向下一条,译码器解读指令,ALU负责计算,寄存器握住数值。
各自做好自己的事,又一起转动同一个节拍,这就是CPU工作的样子。

04

亲手执行三行指令

这里有一个小程序。
一共三行:“放入3”“加上4”“显示结果”。
每按一次“前进”,就往前走一拍,你能看到PC在移动,数值在累积。

0装进 3
1加上 4
2把结果给看
PC
0
值(寄存器)
0
按前进就开始

跟着PC一行一行执行。

PC从0、1增加到2,指令一条一条被执行。
数值先变成3,再变成7,最后显示在屏幕上。
程序在运行,就是这个样子。

05

PC跳到别处时

PC通常一格一格往前走,但有时会跳到别处。
遇到“去5号指令”这样的指令,PC就会改成那个地址。
这种跳转和上一课比较得出的真或假结合起来,就成了叫作“如果”的岔路口。

0命令
1命令
2去第 5 条
3(跳过)
4(跳过)
5跳到这儿
改了PC,就能改变指令的顺序。“如果”和“重复”都是用它做出来的。

PC从2号跳到5号。

不是一格一格往前走,而是把PC改成别的值,程序的流程就变了。
可以往前跳过,也可以往回走。
这种跳转怎样变成“如果”和“重复”,会在编程部分详细讲。

一句话总结CPU不停地重复取指、译码、执行,叫作PC的手指指着下一条要做的指令。PC一格一格增加就按顺序走,改成别的值就会跳转,这种简单的重复是一切程序的基础。
← 结构
如果有帮助,请支持我们