CPU 怎么工作
负责计算的ALU,决定做什么的指令。这两者怎样合成一体运转?跟着CPU一条一条处理指令的流程走一遍,答案就出来了。
CPU重复三个节拍
CPU做的事其实很简单。
取来一条指令,弄清它是什么指令,然后执行。
接着再取下一条指令。
这三个节拍,它不停地重复。
取指 → 译码 → 执行,然后重复。
如果把取指、译码、执行算作一圈,CPU在1秒内要转上几十亿圈。
每一步都很简单,可是速度极快,所以能完成复杂的工作。
指向下一条指令的手指
可是CPU怎么知道现在该做第几条指令呢?
内存里某处排着一串指令,其中有个装置专门指着“下一条要做的”。
它叫PC,也就是程序计数器。
PC指向下一条指令。
每取一条指令,PC就加一格。
做完0号就是1号,做完1号就是2号。
多亏这根手指,CPU才不会乱了顺序,能一条接一条地执行指令。
零件聚在一起,就成了CPU
现在零件们聚到一起了。
指向下一条指令的PC,解读指令的译码器,负责计算的ALU,还有暂时握住数值的小格子——寄存器。
单看都很小,合在一起,就成了一个能处理指令的CPU。
合为一体的CPU。
PC指向下一条,译码器解读指令,ALU负责计算,寄存器握住数值。
各自做好自己的事,又一起转动同一个节拍,这就是CPU工作的样子。
亲手执行三行指令
这里有一个小程序。
一共三行:“放入3”“加上4”“显示结果”。
每按一次“前进”,就往前走一拍,你能看到PC在移动,数值在累积。
跟着PC一行一行执行。
PC从0、1增加到2,指令一条一条被执行。
数值先变成3,再变成7,最后显示在屏幕上。
程序在运行,就是这个样子。
PC跳到别处时
PC通常一格一格往前走,但有时会跳到别处。
遇到“去5号指令”这样的指令,PC就会改成那个地址。
这种跳转和上一课比较得出的真或假结合起来,就成了叫作“如果”的岔路口。
PC从2号跳到5号。
不是一格一格往前走,而是把PC改成别的值,程序的流程就变了。
可以往前跳过,也可以往回走。
这种跳转怎样变成“如果”和“重复”,会在编程部分详细讲。