CPU是怎么干活的
管计算的 ALU,定要做什么的命令。这两个怎么像一个身体一样动起来? 来跟着 CPU 一条一条处理命令的流程走一遍。
CPU 重复三个拍子
CPU 干的活,
其实很简单。
取来一条命令,
解开它是什么命令,
执行它。
再取来下一条。
这三个拍子,
不停地重复。
取指 → 解码 → 执行,然后重复。
取指、解码、执行。
把这叫一个拍子,
CPU 一秒钟
把这个拍子转几十亿次。
每一个都简单,
可它太快了,
所以干得了复杂的活。
指着下一条命令的手指
可 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 改成别的值,
程序的流程就变了。
跳过去,
或者退回来。
下次,
我们看看这个跳
怎么成了"如果"和"重复"。