上一篇: 计算机如何进行加减乘除计算—(计算机基础课十三)

我们现在讲 ALU 的另一半:逻辑单元。

逻辑单元执行逻辑操作

比如之前讨论过的 AND,OR 和 NOT 操作,它也能做简单的数值测试,比如一个数字是不是负数,例如,这是检查 ALU 输出是否为 0 的电路,它用一堆&nbs***bsp;门检查其中一位是否为 1,哪怕只有一个 Bit (位) 是1,我们就知道那个数字肯定不是 0,然后用一个 NOT 门取反,所以只有输入的数字是 0,输出才为 1。

以上就是 ALU 的一个高层次概括,我们甚至从零做了几个主要组件,比如行波进位加法器,它们只是一大堆逻辑门巧妙的连在一起而已。让我们回到昨天开始时的 ALU,英特尔 74181,和我们刚刚做的 8 位 ALU 不同,74181 只能处理 4 位输入。也就是说你刚做了一个比英特尔 74181 还好的 ALU !其实 差不多啦,我们虽然没有全部造出来,但你理解了整体概念。

74181 用了大概 70 个逻辑门,但不能执行乘除,但它向小型化迈出了一大步,让计算机可以更强大更便宜。4 位 ALU 已经要很多逻辑门了,但我们的 8 位 ALU 会需要数百个逻辑门。工程师不想在用 ALU 时去想那些事情,所以想了一个特殊符号来代表它,看起来像一个大 "V"。

又一层抽象!我们的 8 位  ALU 有两个输入,A和B,都是 8 位 (bits),我们还需要告诉 ALU 执行什么操作,例如加法或减法,所以我们用 4 位的操作代码,我们之后会再细说。

简言之,"1000"可能代表加法命令, "1100"代表减法命令,操作代码告诉 ALU 执行什么操作,输出结果是 8 位的,ALU 还会输出一堆标志(Flag)。"标志"是1位的,代表特定状态。比如相减两个数字,结果为 0。我们的零测试电路(前面做的),会将零标志设为 True(1)。如果想知道两个数字是否相等,这个非常有用。如果想知道: A 是否小于 B,可以用 ALU 来算 A 减 B,看负标志是否为 true,如果是 true,我们就知道 A 小于 B,最后,还有一条线连到加法器的进位,如果有溢出,我们就知道,这叫溢出标志。高级 ALU 有更多标志,但这 3 个标志是 ALU 普遍用的,其实,我们之后会用到它们。

现在你知道了计算机是怎样在没有齿轮或杠杆的情况下进行运算。

接下来两节 我们会用 ALU 做 CPU,但在此之前,计算机需要一些 "记忆" !

 

每天五分钟学习计算机最基础的知识和原理

 相关阅读:

  

  1. XOR—布尔逻辑和逻辑门(三)

  2. 计算机如何进行加减乘除计算—算术逻辑单元(一)