(计算机组成原理)第二章数据的表示和运算-第四节1:算数逻辑单元和电路基本知识以及基本逻辑运算和全加器还有串行并行加法器

Posted 快乐江湖

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了(计算机组成原理)第二章数据的表示和运算-第四节1:算数逻辑单元和电路基本知识以及基本逻辑运算和全加器还有串行并行加法器相关的知识,希望对你有一定的参考价值。

之前的学习我们一直在和数打交道,数字运算过程中一直离不开一个十分重要的部件——运算器,其构成如下

其中有一个核心部件——算数逻辑单元( A r i t h m e t i c a n d L o g i c U n i t Arithmetic and Logic Unit ArithmeticandLogicUnit),也即 A L U ALU ALU,其作用主要有以下三类

  • 算数运算:如加、减、乘、除等
  • 逻辑运算:如与、或、非、异或等
  • 辅助功能:如移位、求补等

大家在课本中见到的ALU经常会被画成这样

  • A i B i A_{i}B_{i} AiBi:是输入信号,这是一种电信号,比如要算两个数的加法,就是这样转换为电信号输入的(通过高低电平实现)
  • F i F_{i} Fi:这是输出信号,也就是运算结果
  • K i K_{i} Ki:这是控制信号,由控制单元发出(CU);控制单元负责解析指令,比如这个运算是什么类型的运算等等

上面是抽象图,下面是一个比较具体的图象,经典的74181芯片,是一个4位的ALU

上面的M会指明当前是一个逻辑运算还是算数运算(M=1是逻辑运算,M=0是算数运算)。总之,ALU是在输入输出和控制信号下工作的

一:最基本的逻辑运算

(1)与、或、非

无论是多复杂的逻辑还是算数运算,都是通过最基本的逻辑运算复合而成的,这里最基本的逻辑运算指的是一个位的运算,他们分别是“与”、“或”和非

  • :全1才是1,有0就是0
  • :全0才是0,有1就是1
  • :0为,1为0

上面是从数学抽象的角度来描述的,它们对应的真实电路是如下三个门电路(从左到右依次为:与、或和非)

  • :只有A和B全部输入为高电平时,Y才会是高电平,只要有一个是低电平Y就会是低电平
  • :如果A和B输入中有一个是高电平时,Y就会是高电平,只有全部输入为低电平时,输出才会是低电平
  • :输入的是高输出的就是低,反之亦然

另外需要注意这几个运算的表达式

  • 与: Y = A ▪ B Y=A▪B Y=AB
  • 或: Y = A + B Y=A+B Y=A+B
  • 非: Y = A + B ˉ Y=A+\\bar{B} Y=A+Bˉ

其中与的优先级要大于或,也就是 A B + C D AB+CD AB+CD这种与运算要先计算与再计算或,他们也满足一些计算定律

  • 分配律: A ( C + D ) = A C + A D A(C+D)=AC+AD A(C+D)=AC+AD
  • 结合律: A B C = A ( B C ) ABC=A(BC) ABC=A(BC) A + B + C = A + ( B + C ) A+B+C=A+(B+C) A+B+C=A+(B+C)

再掌握与、或、非这三种基本运算后,我们就能用我们聪明的大脑实现任何一种复杂的逻辑运算了

c a s e 1 : case1: case1实现 A C + A D AC+AD AC+AD
这是一个逻辑运算,可以让A和C以及A和D分别进行与运算然后结果再进行或运算

也可以转变为等价的运算,即 A ( C + D ) A(C+D) A(C+D),先让C和D进行或运算,然后再和A进行与运算,这样一来还节省了一个电路元件

(2)与非、或非、异或、同或

  • 与非:实则是与运算取反;也就是说全1则为0,全0则为1,有1则是1
  • 或非:实则是或运算取反;也就是说全1则为0,全0则为1,有0则是0
  • 异或:相同数异或运算结果为0,0异或任何数是任何数
  • 同或:相同数异或运算结果为1,0异或任何数为0

他们对应的电路符号分别为

二:一位全加器

全加器(FA)是最基本的加法单元,有加数 A i A_{i} Ai,加数 B i B_{i} Bi与低位传来的进位 C i − 1 C_{i-1} Ci1共三个输入,有本位和 S i S_{i} Si与向高位的进位 C i C_{i} Ci共两个输出

  • 本位:指的是当前运算的那一位
  • 本位的和:包括本位对应的两个数和来自低位向本位的进位;同时本位还会向高位进位

运算时是按照一位一位的方式加的,来自本位的两个数和来自低位的进位会确定本位的和,同时确定向高位进位的数值

因此输入共有三个

  • A i A_{i} Ai B i B_{i} Bi以及 C i − 1 C_{i-1} Ci1

输出共有两个:

  • 第一个是 S i S_{i} Si:由于是二进制,因此 S i S_{i} Si只能是1或者是0,所以就可以使用异或运算确定输入中1的奇偶个数,如果有奇数个1那么结果为1,否则为0,也即 S i = A i ⊕ B i ⊕ C i − 1 S_{i}=A_{i}⊕B_{i}⊕C_{i-1} Si=AiBiCi1
  • 第二个是 C i C_{i} Ci第一种情况就是 A i = 1 且 B i = 1 A_{i}=1且B_{i}=1 Ai=1Bi=1,那么无论进位为多少都要进一位;第二种情况就是 A i 和 B i A_{i}和B_{i} AiBi中有一个本位为1并且来自低位的进位是1。这两种情况属于或的关系,因此逻辑表达式为: C i = A i B i + ( A i ⊕ B i ) C i − 1 C_{i}=A_{i}B_{i}+(A_{i}⊕B_{i})C_{i-1} Ci=AiBi+(AiBi)Ci1

因此电路表示可以为

屏蔽内部实现细节后:

三:串行加法器和并行加法器

以上是关于(计算机组成原理)第二章数据的表示和运算-第四节1:算数逻辑单元和电路基本知识以及基本逻辑运算和全加器还有串行并行加法器的主要内容,如果未能解决你的问题,请参考以下文章

(计算机组成原理)第一章计算机系统概述-第四节:计算机的性能指标

(计算机组成原理)第七章输入和输出系统-第四节1:I/O方式之程序查询方式

(计算机组成原理)第七章输入和输出系统-第四节3:I/O方式之DMA方式

(计算机组成原理)第三章存储系统-第四节1:主存储器和CPU的连接

数据的表示和运算-第四节2:本节习题

(计算机组成原理)第二章数据的表示和运算-第三节1:浮点数的表示