逻辑门与ALU基本原理

逻辑门与ALU基本原理

  • 一、布尔逻辑和逻辑门
  • 二、ALU基本原理
    • 2.1 算术单元:半加器
    • 2.2 算术单元:全加器
    • 2.3 算术单元:8位加法器
    • 2.4 逻辑单元
    • 2.5 ALU
  • 三、参考资料

一、布尔逻辑和逻辑门

晶体管计算机采用开/关,两种状态代表信息,这叫做二进制(binary)。
电路闭合,电流流过,代表“真”;
电路断开,无电流流过,代表“假”。
二进制也可以写成1和0,而不是true和false,只是不同的表达方式罢了。

计算机为什么采用二进制?
原因一:状态越多,越难区分信号
晶体管不只是只有“开/关”,还可以让不同的电流通过,一些早期电子计算机是三进制的,有三种状态,甚至五进制,5种状态,问题是,状态越多,越难区分信号,如果手机快没电了或者附近有电噪音,因为有人在用微波炉,信号可能会混在一起,而每秒百万次变化的晶体管会让这个问题变得更糟。所以我们把两种信号尽可能分开,只有开和关两种状态,可以尽可能减少这类问题。
原因二:布尔代数的存在
有一整个数学分支存在,专门处理“真”和“假”,它已经解决了所有法则和运算,叫“布尔代数”。乔治·布尔(George Boole)是布尔二字的由来,是一位19世纪自学成才的英国数学家,他有兴趣用数学式子扩展亚里士多德基于哲学的逻辑方法。布尔用逻辑方程,系统而正式的证明真理。他在1847年的第一本书“逻辑的数学分析”中介绍过:在“常规”代数里变量的值,是数字,可以进行加法或乘法之类的操作,但在布尔代数中,变量的值是true和false,能进行逻辑操作。布尔代数中有三种基本操作:NOT、AND和OR,而用晶体管可以轻松实现这个逻辑。

晶体管是一种电流控制的开关,有三根引线:2根电级和1根控制线,控制线通电时,电流就可以从一个电级流到另一个电级。
将控制线作为输入,底部的电级作为输出,如果打开输入,输出也会打开,因为电流可以流过。如果关闭输入,输出也会关闭,因为电流无法通过。用布尔术语来说,输入为真,输出也为真;输入为假,输出为假。
逻辑门与ALU基本原理_第1张图片
如何用晶体管做逻辑门?
1、非门(NOT Gate)
逻辑门与ALU基本原理_第2张图片
如果输入为on,电流可以流过然后“接地”,输出就没有电流,所以输出是off;
如果输入时off,电流没法接地,就流过了输出,所以输出是on。
之所以叫“门”,是因为它能控制电流的路径。

在模电中,当电压值大于某一阈值时,认为是1,当电压值小于某一阈值时,认为是0。
下图(1)中当电压值为0.804V时,为逻辑1,即输入为on,此时输出电压值为0.105V,为逻辑0,输出为off。
逻辑门与ALU基本原理_第3张图片
下图(2)中当电压值为0.065nV(接近为0)时,为逻辑0,即输入为off,此时输出电压值为3V,为逻辑1,输出为on。
逻辑门与ALU基本原理_第4张图片
非门(反相器)通常采用CMOS逻辑和TTL逻辑,也可以通过NMOS逻辑、PMOS逻辑等来实现。
逻辑门与ALU基本原理_第5张图片
非门特征符号

2、与门(AND Gate)
AND操作有2个输入,1个输出。
逻辑门与ALU基本原理_第6张图片
如果只打开A,不打开B,电流无法流到输出,所以输出是false
如果只打开B,不打开A,也一样,电流无法流到输出,
只有A和B都打开了,输出t才有电流。

当输入A电压为0.804V,为逻辑1,即输入A为on;输入B电压为0.804V,为逻辑1,即输入B为on,此时输出为2.792V,为逻辑1,即输出为on。
逻辑门与ALU基本原理_第7张图片
当输入A电压为-1.156uV,为逻辑0,即输入A为off;输入B电压为0.796V,为逻辑1,即输入B为on,此时输出为0.315mV,为逻辑0,即输出为off。
同理可得当,输入A为on,输入B为off,以及输入A和B均为off时的输出状态均为off。
逻辑门与ALU基本原理_第8张图片
与门的实现方法包括使用CMOS逻辑、NMOS逻辑、PMOS逻辑以及二极管实现等。
逻辑门与ALU基本原理_第9张图片
与门特征符号

3、或门(OR Gate)
逻辑门与ALU基本原理_第10张图片
与与门不同,2个晶体管不是串联而是并联。
如果A和B都为off,结果是off。

当输入A电压为0.804V,为逻辑1,即输入A为on;输入B电压为0.5V(小于阈值),为逻辑0,即输入B为off,此时输出为2.895V,为逻辑1,即输出为on。
逻辑门与ALU基本原理_第11张图片
当输入A电压为0.5V(小于阈值),为逻辑0,即输入A为off;输入B电压为0.5V(小于阈值),为逻辑0,即输入B为off,此时输出为0.153mV,为逻辑0,即输出为off。
逻辑门与ALU基本原理_第12张图片
或门可以通过不同的方法实现,包括二极管实现、开关实现、CMOS逻辑实现等。
逻辑门与ALU基本原理_第13张图片
或门特征符号

4、异或门(XOR Gate)
逻辑门与ALU基本原理_第14张图片
输入相同,输出为false
逻辑门与ALU基本原理_第15张图片
异或特征符号

二、ALU基本原理

表示和存储数据是计算机的重要功能,但真正的目标是计算,比如两个数字相加,这些操作由计算机的算术逻辑单元(Arithmetic & Logic Unit)处理,简称为ALU。ALU是计算机的数学大脑。
ALU有2个单元,一个是算术单元和一个逻辑单元
算术单元:负责计算机里的所有数字操作,比如加减法。
ALU的电路设计,可以用单个晶体管一个一个拼,把这个电路做出来,但是很快就会复杂的难以理解,所以与其用晶体管,我们会选用更高层的抽象——用逻辑门来做,我们会用到AND、OR、NOT和XOR逻辑门。

2.1 算术单元:半加器

加法:两个输入,一个输出(两个数字的和)
用异或实现1位的加法器(adder)
逻辑门与ALU基本原理_第16张图片
逻辑门与ALU基本原理_第17张图片
半加器抽象化(将半加器封装成一个单独组件)
两个输入:A和B都是1位
两个输出:总和与进位

2.2 算术单元:全加器

要完成多位数据的加法,需要将各个位上的运算所得的进位标志位用于下一位的运算中,这时有3个输入,2个输出,这时就需要全加器。
逻辑门与ALU基本原理_第18张图片

2.3 算术单元:8位加法器

逻辑门与ALU基本原理_第19张图片
每个全加器/半加器的进位作为下一个加法器的输入,所以这种8位加法器又称为8位行波进位加法器。

注意最后一个全加器有进位的输出,如果第9位有进位,代表着两个数字的和太大了,超过了8位,这叫溢出(overflow)
如果想避免溢出,可以加更多全加器,可以操作16或32位数字,这将导致一个缺点是是,需要更多的逻辑门;而另一个缺点是,每次进位都要一点时间,当然时间不久,因为电子移动的很快(接近光速),但如今的量级是每秒几十亿次运算,所以会造成影响,所以现代计算机用的加法电路有点不同,叫超前进位加法器。

ALU的算术单元,也能做一些其他数学运算,一般支持:加法、带进位的加法、减法、带借位的减法、增量(+1)、减量(-1)数字无改变通过,同加法器一样这些操作也是由逻辑门构成的。
由于简单的ALU没有专门的乘法和除法电路,所以针对乘法的操作一般采用用多次加法来实现,即需要多次ALU操作来实现这个乘法,很多简单处理器都是这样做的,这种处理方式的处理效率较低。针对于笔记本和手机对性能有较高要要求的处理器,有专门做乘法的算术单元。众所周知乘法电路比加法复杂,需要更多逻辑门,所以便宜的处理器没有。

2.4 逻辑单元

ALU的逻辑单元(logic unit),逻辑单元执行逻辑操作,比如之前讨论过的AND,OR和NOT操作,它也能做简单的数值测试,比如一个数字是不是负数。
逻辑门与ALU基本原理_第20张图片
检查ALU输出是否为0的电路

2.5 ALU

1970年英特尔发布的74181用了大概70个逻辑门,但不能执行乘除,但它向小型化迈出了一大步。
4位ALU已经要很多逻辑门了,但我们的8位ALU会需要数百个逻辑门,工程师不想在用ALU时去想那些事情,所以想了一个特殊符号去代表它,看起来像一个大“V”。
逻辑门与ALU基本原理_第21张图片
1、需要告知ALU做什么?
用4位的操作代码,简言之“1000”可能代表加法命令,“1100”代表减法命令,操作码告诉ALU执行什么操作。(这里的4位操作码只是假设的)
2、对谁操作?
8位ALU有两个输入,输入A和输入B,都是8位。
3、输出什么?
输出的结果(8位)以及一些标志位(高级ALU有更多标志,但这三个标志是ALU普遍用的)。

三、参考资料

[1]: 计算机科学速成课

你可能感兴趣的:(计算机组成原理)