介绍ALU
alu’有2个单元,一个算数单元一个逻辑单元
算数单元
算数单元负责计算机里所有的数字操作,比如加减法
半加法器
用或非门XOR当AB都不为一时可以正确处理加法,但我们需要一根额外的线表示进位,一位表示不了,当加一个与门可以完成
这个电路叫半价法器
将半加法器抽象可以表示如下
全加法器
我们可以在提升抽象,把全加法器当做独立的组件,全加法器把ABC三个输入加起来,输出总和和进位
有了新组件可以相加两个八位数字
当第9位有进位代表着2个数字和太大,超过了8位,这就叫做溢出,意思是这两个数太大。如果想要避免溢出,可以加更多全加法器,这就可以操作16位或32位数字。但有个缺点需要更多的逻辑门,且每次进位要一点时间。当然时间不久,因为电子运动很快,如今的量级是美标几十亿次运算,所以造成影响。
现在用的加法器有点不同吗,叫超前进加法器,它运行速度更快
可以发现,没有乘法和除法,因为简单ALU没有专门的电路来处理,而是把乘法用多次加法实现。
12*5就和把12加5次是一样的 ,所以邀5次ALU操作来实现这个乘法,很多 简单的处理器都是怎么做的比如恒温器,电视遥控器和微波炉,然而计算机有更好的专门做乘法的算数单元,用更多的逻辑门
逻辑单元
逻辑单元执行逻辑操作,比如谈过的AND,OR,NOT操作,也能做简单的数值测试,比如测试ALU输出是否位为0的电路。
和我们刚刚做的8位ALU不同74181只能处理4位输入,74181大概用了70个逻辑门,但不能执行乘法,8位ALU需要上百个逻辑门,工程师不想在用ALU时去想那些事,所以想用一个特殊符号代表他,看起来像一个大"v"
操作码告诉ALU执行扫描操作,输出结果是8位。
ALU还会输出一堆标志 ,标志是1位的,代表特定状态,比如相减两个数字,结果为0,我们的零测试电路,会将0标志设为True,如果想知道这两个数字是否相等非常有用
如果想知道a是否小于B,可以用ALU来算A-B,看负的标志是否位true,最后还有一条线连到加法器最后看是否溢出,这就是溢出标志