算术逻辑单元

ALU

arithmetic and logic unit 算术逻辑单元,简称ALU,是计算机的数学大脑,也就是计算机里负责运算的组件,好比把两个数相加。基本其余的组件都用到了ALU,它有两个 单元 一个算术单元,一个逻辑单元测试

算术单元

算术单元,它主要负责计算机里的全部数字操做,好比加减法,自增自减等。 接下来,使用最简单的加法电路,即两个bit相加,bit是0或者1,来看看它是怎么设计与运行的。设计

半加器

首先有两个输入,A和B,一个输出,即A和B的和,这里三个数A,B,输出,都是单个bit(0或1)。那么输入只有四种可能:3d

  • 0+0=0
  • 0+1=1
  • 1+0=1

上面这三种的输入和输出,与XOR(异或)门的逻辑是同样的,因此能够用XOR门做为一位加法器,可是第四种组合:1+1 = 2是个特例,但在二进制里没有2,所以1+1的结果是0,1进到下一位。真值表和XOR门与下图所示:cdn

能够看的出XOR门的输出,只对了一部分,1+1输出0,可是还须要一条额外的线表明“进位”,并且只有在输入是1和1时,进位才是true,而且算出来的结果用1个bit也存不下。所以能够结合AND(与)门来实现。新的真值表和电路以下图:

由这两个逻辑门组合而成的组件,就是大名鼎鼎的 半加器 ! 即两个输入 A 和 B 都是 1 位 ,两个输出 "总和" 与 "进位",没有进位输入的加法器电路。blog

全加器

因为半加器没有进位输入,所以想要处理超过1+1的运算,就须要用到 全加器,半加器输出了进位,所以在计算下一列的时候,还有以后的每一列,咱们须要将 三个位 加在一块儿,而不在是两个。游戏

所以全加器有三个输入,A,B,C(都是1个bit),因此最大的可能就是1+1+1,总和1,进位1,所以也须要两条输出线,“总和”和“进位”数学

可使用半加器,作全加器:it

先用半加器将A和B相加,而后将C输入到第二个半加器,最后用一个 OR 门检查进位是否是 true。 这样全加器就使用了,来看看真值表和图示:io

这就是大名鼎鼎的 全加器 ,它会把三个输入A,B,C加起来,输出“总和”和“进位”。class

如今有了全加器和半加器,就能够相加两个8位(bit)数字,A和B:

一、先从A和B的第一位开始,称为A0和B0,因为是第一次相加,不用处理任何进位,直接使用 半加器 相加,输出叫sum0;

二、如今相加A1和B1,由于A0和B0的结果有可能进位,因此使用 全加器,除了A1和B1,还要连上进位,输出为sum1;

三、把上一步获得的进位输入到 下一个全加器,处理A2和B2

四、以此类推,处理完8个bit。

以下图所示:

因为是8bit相加,所以被称为8-BIT RIPPLE CARRY ADDER(8位行波进位加法器)

溢出

若是第9位有进位,表明2个数字的和,超过了8个bit,这被称为“溢出(overfloe)”。最著名的就是“吃豆人”的关卡数,由于是使用8个bit记录关卡数的,所以最大值为255,当玩家进入256关的时候,就会发生溢出,致使游戏界面出现乱码。想要避免溢出,能够加更多的全加器,能够操做16或者32个bit的数字,让溢出更难发生,但代价是更多的逻辑门和更长的时间

各类ALU的不一样

简单的ALU是没有专门的电路来处理乘法和除法,而是用屡次加法来实现乘法,好比12X5,这和将12加5次是同样的,因此要5次ALU操做来实现这个乘法,虽然比较慢(相对而言),可是胜在简单。

比较先进的ALU,好比计算机和手机中,有专门作乘法的部分,乘法电路比加法复杂,但只是须要更多的逻辑门进行组装。

逻辑单元

逻辑单元是执行各类逻辑操做的,好比AND,OR,NOT等操做,也能作简单的数值测试,好比一个数字是否是负数。

总结

在工程上,工程师们使用大“V”来表示ALU。来看一下8-bit ALU的输入与输出:

  • 两个输入:A和B,都是8 bit;
  • 操做码: 用4位操做码告诉ALU执行什么操做,好比加法减法,“1000”可能表明加法,“1100”表明减法等;
  • 输出结果:一个8 bit
  • 标志位:同时也会输出一堆标志(flags),标志是1 bit,表明特定的状态。通常有overflow(溢出),zero(零值),negative(负值)。 例如:若是想知道A 是否小于 B,能够用 ALU 来算 A 减B,看负标志是否为 true,若是是 true,咱们就知道 A 小于 B。

Thanks!

相关文章
相关标签/搜索