seegongsik
我的单词本
结构

CPU是怎么干活的

管计算的 ALU,定要做什么的命令。这两个怎么像一个身体一样动起来? 来跟着 CPU 一条一条处理命令的流程走一遍。

01

CPU 重复三个拍子

CPU 干的活,
其实很简单。
取来一条命令,
解开它是什么命令,
执行它。
再取来下一条。
这三个拍子,
不停地重复。

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

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

取指、解码、执行。
把这叫一个拍子,
CPU 一秒钟
把这个拍子转几十亿次。
每一个都简单,
可它太快了,
所以干得了复杂的活。

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 加一格就按顺序,改到别处就跳过。这个简单的重复,是所有程序的根基。
如果有帮助,请支持我们
结构