运算器总装
复习
- 减法器:减法器复用加法器,把减数取反再加一
- 算术逻辑单元:ALU 把算术与逻辑运算集成起来,用控制码选择运算
- ALU 状态标志:ALU 用零、负数、进位和溢出标志记录结果特征
TL;DR
- 运算器把输入、ALU、结果和状态标志连成一条数据通路
- 控制线决定数据走向和运算种类
- 我们已经造出“会算”的部分,接下来要让它“记住”
正文
桌上的零件终于攒够了。这一章,把它们拼成第一件真正像计算机部件的东西。
两个入口,一个出口
运算器最核心的路线,其实简单得出奇:
输入 A ─┐
├─> ALU ─> 结果
输入 B ─┘ └───> 状态标志
▲
控制码
把 A、B 送进去,再给一组控制码,ALU 就给出结果和几盏标志灯。
- 比如控制码设成加法,输入
0000 0101(5)与0000 0011(3),出口得到0000 1000(8); - 把控制码改成按位与,同样的输入,出口就变成
0000 0001(1)。
数据走过的这条路叫 数据通路(datapath)。但注意,控制码不搬运数据,它只是让应该通过的数据通过,让数据流向正确的电路。数据是车,控制信号是红绿灯。
回过头看看,我们造出了什么
从最简单的与、或、非门开始,我们一路搭出了:
逻辑门
↓
半加器与全加器
↓
多位加法器
↓
加减法与逻辑运算
↓
ALU
↓
运算器
还记得前面那张计算机的草图吗?它由运算器、存储器、控制器、输入和输出组成。现在,第一大块“运算器”终于完成了。拼图完成了最中心的一片。
但它仍然只有一瞬间
别高兴太早。这台运算器有一个致命短板:它记不住任何东西。
试着用它算 2 + 3 + 4。第一步算出 5,没问题;可当你想进行第二步时,输入已经变了,那个 5 也随输入一起消失了。第二步没有地方把 5 取回来。
思考题 1
为什么仅有 ALU 还算不了
2 + 3 + 4?缺少的是新的运算规则,还是保存中间结果的能力?
所以,所以接下来目标非常明确: 让电路记住一个 0 或 1。
虽然听起来有点离谱,但我们好像从来没有试过让逻辑门绕回来连接自己(像条衔尾蛇那样)。也许会有些有趣的事情发生也说不定。
下一章,我们试试让电路首尾相连。
思考题 2
数据通路和控制通路各走什么信号?如果把它们画在同一张图里,你能指出哪几条线属于控制吗?
小结
知识点
- 运算器的基本数据通路
- 运算数据与控制信号承担不同职责
- 目前为止的 ALU 不能保存中间结果
- 计算机的下一块拼图是存储
参考资料
- Wikipedia(zh):数据通路:数据在部件之间流动的路径
- Wikipedia(zh):中央处理器:运算器最终嵌入的部件
思考题答案(仅供参考)
思考题 1
ALU 已经会加法,缺的只是保存中间结果 5 的能力。没有存储,第一步的输出在输入改变后就会消失,第二步无法继续使用它。所以这里只缺“记忆”。
思考题 2
数据通路上的数据参与运算,比如 A、B 和结果;控制通路上走的是控制信号,比如“选加法还是减法”“要不要写回”。
在前面那副字符画上,从控制码那一侧进来、箭头指向 ALU 或各个开关的,都属于控制通路。
分清这两类线,是理解后面 CPU 内部结构的关键。
协议
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。
封面图
设计师 | 南国微雪