《数字逻辑设计与计算机组成》一3.6 算术逻辑单元

3.6 算术逻辑单元

ALU包含在所有的处理器中,且不仅可以进行整数运算,还可以进行位逻辑函数运算,例如按位与、按位或。ALU可以用在整数运算和逻辑指令的执行中。
?例3-7? 设计一个n位、包含7种函数的ALU,使其可以完成加法、减法、增一、减一和按位与、按位或和按位非运算。3位函数码F = f2?f1?f0用于选择ALU操作,如表3-4所示。在运行算术操作(F = 0、1、2或3)时,ALU也可以输出溢出信号ovf。F = 7不用于这个设计中,当选择操作时,ALU可以运行一个未知操作。稍后将讨论详细的位并行和位串行设计。

图3-15展示了ALU高层框图。当F指定了一个算术操作时,输入值A和B以及结果值R都表示为2的补码数。信号ovf为1时,表示运算有溢出。下一节将详细讨论位并行和位串行ALU的设计步骤。

3.6.1 设计部分:位并行

当n很大时,ALU会被考虑为大型组合电路。用之前讨论的自顶向下位并行设计方法,ALU的功能首先被分为算术和逻辑操作。4个算术操作加法、减法、增一和减一被组合成ALU数据通路中的一个算术模块,如图3-16所示。三个按位逻辑操作将用与门、或门和非门实现。8位4-1的MUX选择输出W、X、Y和Z中的一个作为ALU的输出。

在ALU数据通路中,A和B输入都与算术模块和三个位逻辑模块连接。这些模块同时对输入A和B进行运算并产生结果,但是只有一个被选择作为ALU的最终输出。这样,当F指定一个逻辑操作时,算术模块仍然可以根据A和B实时的值产生ov_flag信号值。然而,在某些实例中,溢出信号可以被屏蔽且不被ALU当作有效值输出。这个过程通过屏蔽模块完成。
数据通路还包含将ALU函数码F翻译成ALU数据通路中的中间信号s0、s1、s2、m和msk的映射模块。当所有模块都被设计和连接完成之后,ALU的设计过程就完成了。
数据通路中的4-1 MUX选择由算术和其他三个位逻辑模块的输出中的一个。当F指定一个逻辑操作(F = 4到6)时,屏蔽模块将ovf置为0(无效);否则,ovf将会被置为ov_flag的值,作为算术模块的一个输出。
如果需要,自顶向下设计方法连续地应用到所有数据通路上的大型模块中,分为更小的电路模块,直到最底层电路模块足够小且只需要很少的输入实现为止。第2章中介绍的设计技术被用于设计每一个小型电路模块。位逻辑模块用n个2输入的与门、n个2输入的或门和n个非门组成。这三个模块分别生成n位值X = xn-1…x0,Y = yn - 1…y0和Z = zn - 1…z0,如图所示,这里第i位被如下式子定义:

作为一个例子,图3-17展示了4位按位与逻辑的电路图。当A = a3a2a1a0 = (1011)2且B =
b3b2b1b0 = (1101)2时,X = x3x2x1x0 = (1001)2由x0 = a0•b0 = 1•1 = 1,x1 = a1•b1 = 0•1 = 0等。其他位逻辑模块也是类似的设计。

小型多路选择电路的设计在第2章中有过讨论。ALU需要一个n位4-1的多路选择器,可采用如下方法中的一种进行设计:
1)用n个1位4-1 MUX设计
2)用n位2-1 MUX设计。一个n位2-1 MUX用n个1位2-1 MUX设计,如图3-18所示。

选择2具有优势,其可以扩展到设计n位k - 1 MUX且不用考虑任何扇入和扇出问题。表3-5展示了n位4-1 MUX的最小真值表。当其值为0的时候,信号s1选择W或X中的一个,如果s1值为1,选择Y或Z中的一个。另一方面,当其值为0时,信号s0选择W或Y中的一个,为1时,选择Z或X中的一个。这样,我们就可以将这个过程用于将3个2-1 MUX设计和实现4-1 MUX,对于n位,如图3-19所示。例如,用s1s0表示数值为2的2位数时(即s1 = 1且s0=0),2-1 MUX正确地选择了两个可能的输入候选W和Y,且最底端的2-1 MUX正确地选择了Y作为最后的输出。这个过程如图所示。

通常,先前的方法一共需要log2k层的2-1 MUX实现。公式(3-15)用于估计用2-1 MUX设计K-1 MUX的传输延迟。

例如,8-1 MUX需要三层2-1 MUX,且64-1 MUX需要6层2-1 MUX。如果使用不同的MUX组合,层的数量和总计延迟可以减少。例如,一个8-1 MUX也使用2-1 MUX和4-1 MUX的组合进行设计。在这个例子中,一个4-1 MUX可以设计成与或(SOP)或者或与(POS)电路以便使传输延迟最小。
算术模块的输入是两个n位2的补码数值A和B和两个控制信号m和s2,当n = 8时如图3-20所示。算术模块有两个输出:一个n位2的补码W和一个(高电平)溢出信号ov_flag。表3-6列出了m和s2与对应算术模块操作模式的值。如果其值为0,信号m选择加法或者增一操作,如果值为1,选择减法或者减一操作。s2信号控制2-1 MUX,当进行加法或者减法运算时,选择B,当进行增一或者减一运算时,选择8位数值(00000001)2。当W溢出时,信号ov_flag置为有效。
屏蔽模块的真值表和电路图如图3-21所示。当msk = 1时,模块输出ovf = 0,屏蔽掉从算术模块中产生的ov_flag信号;当msk = 0时,输出ovf = ov_flag。

表3-7展示了映射模块的真值表。表中的控制信号,除了msk,可以视为无关项(d)。例如,当F指定一个逻辑操作(例如F = 4~6)时,算术模块的输出W不会被MUX选中作为输出。然而,信号ov_flag必须屏蔽,使得ALU不输出ovf信号。映射模块的真值表如图3-22所示。
此外,因为F = 7没有定义,所以所有控制信号,除了msk,在F = 7时都可以视为无关项。然而,因为图3-22中的映射电路生成s2 = 0,s1 = 1,s0 = 0,m = 1,且当F = 1时,msk = 1,这些信号值对应到按位或操作,ALU会在当F = 5或7时进行按位或操作。

3.6.2 设计部分:位串行

位串行设计,与位并行设计相反,需要输入数据位分到各个电路片中,对于位串行ALU设计来说,每一个ALU片都将操作输入的某一小部分数据,但执行所有ALU的功能。例如,图3-23展示了用n片1位ALU设计的位串行ALU。表3-8为1位ALU片的真值表。对于没有在表中出现的输入,r和co信号被认为是0。此外,为了使得增一和减一正确运行,进位输入信号c-1必须为1。这就要求当ALU函数码F为2(增一)或3(减一)时,图中的增一/减一模块生成c-1 = 1,即c-1 = 2?f1。


因为当F = 7时,ALU不会进行任何操作,所以对应的表项被设为无关项。真值表太大,所以不能用手动的方式进行化简。用Espresso方法输出的质主蕴含将稍后列出。虽然没有特定的函数去定义当F = 7时的情况,当F = 7时,1位ALU片输出为1。注意到输出0xFF也能被8位2的补码表示为- 1。表3-9展示了当F = 7输出为- 1时的位串行ALU操作的最终列表。

1位ALU片的质主蕴含:

通常当字长不是标准字长的时候,位串行设计是有好处的(例如,位串行加密硬件所用的256位或1024位操作数),或者其等价的位并行设计需要更多的硬件去实现相同的逻辑。

时间: 2024-09-20 08:53:00

《数字逻辑设计与计算机组成》一3.6 算术逻辑单元的相关文章

《数字逻辑设计与计算机组成》一 导读

前 言 Digital Logic Design and Computer Organization with Computer Architecture for Security 编写本书的目的是让读者通过一本教科书全面理解数字逻辑设计和计算机组成.此外,本书还有独立的一章介绍安全的计算机体系结构. 本书涵盖数字逻辑设计的基本原理和Verilog硬件描述语言设计.各个章节分别讨论简单和复杂的组合电路和时序电路的设计方法.本书概述了电路设计的现代工具和方法,而Verilog实例仅用于展示该语言的

《数字逻辑设计与计算机组成》一 第1章 1.1 简介

第1章 Digital Logic Design and Computer Organization with Computer Architecture for Security 导 论 1.1 简介 计算机.iPad.手机等设备已经引起了一场改变我们生活方方面面的数字革命.所有的数据形式,从数字和文本到音频.图像和视频,都能被表示为由一系列0和1组成的序列.数字系统已经改变了我们的沟通.工作.娱乐乃至购物的方式,并被大量应用于我们所见和所用的一事一物之上.它们也存在于汽车.杂货店结账设备.电

《数字逻辑设计与计算机组成》一 1.2 逻辑设计

1.2 逻辑设计 数字电路即逻辑电路,可以实现一个或多个布尔表达式,而每个布尔表达式均定义了一个或多个输入与单一输出之间的逻辑关系.输入和输出都由布尔变量命名,称为信号,每个信号的值或者为真(T)或者为假(F).公式(1-2)定义了有a.b.c三个输入信号和一个输出信号f的逻辑电路布尔(逻辑)表达式.图1-3a显示了该电路的方框图. 表达式中的AND.OR和NOT为布尔逻辑运算符.晶体管构成的逻辑门用于实现每一种布尔运算符.现代集成电路使用数百万个逻辑门实现处理器这类复杂的逻辑电路.当两个输入都

《数字逻辑设计与计算机组成》一2.9 实现

2.9 实现 现代数字电路设计师依靠CAD工具来将设计模型翻译成实现数据.数字设计CAD工具将数字电路的描述综合(翻译)成优化过和对技术依赖的门级描述,称为网表.特定用途的集成芯片(ASIC)和FPGA都是非定制IC技术的例子.处理器芯片是典型的定制IC技术的例子.电路可以用框图表示,也可以用HDL语言描述,或者同时使用这两种方法描述.然而,现代CAD工具需要将电路描述成HDL语言. 2.9.1 可编程逻辑器件 可编程逻辑器件(PLD)是预制的,即不包含任何制造缺陷的封闭现成设备.它们可以被编程

《数字逻辑设计与计算机组成》一 1.3 计算机组成

1.3 计算机组成 逻辑设计要解决的是关于电路描述.综合.最小化和仿真的相关问题,而计算机组成则研究电路部件及其物理关系,这些部件构成处理核心(CPU).处理器.存储器.I/O设备控制器和接口,这些模块相互连接就构成计算机.例如,图1-1中的寄存器文件.加法器.乘法器和选择器组成一个数据通路.控制单元和数据通路(通过一系列控制信号)组合成所需的运算单元,可以产生两数之和或其乘积.两个内部组织不相同的CPU可以执行同一指令系统的指令.例 如,32位Intel和AMD处理器可以执行同一指令系统的指令

《数字逻辑设计与计算机组成》一 2.5 逻辑化简算法

2.5 逻辑化简算法 K图化简是一种图形的方式,只能适用于很小数目的变量,例如4个变量的表达式中.当变量数大于4时,在20世纪50年代中期发明的叫作奎因-麦克拉斯基算法的数学方式更合适于表达式化简.这个算法使用比K图更少的步骤来寻找最小逻辑表达式.最小项被划分成不同的集合,每一个集合都只包含一个在二进制表达中有特殊个1的个数的最小项.考虑例2-5中的表达式f (w, x, y, z) = Σ (0, 2, 3, 4, 5, 6, 7, 8, 10, 12, 13).在二进制中,最小项为0000,

《数字逻辑设计与计算机组成》一 第3章 3.1 简介

第3章 Digital Logic Design and Computer Organization with Computer Architecture for Security组合电路:大型设计 3.1 简介 在前一章中介绍的设计技术只适用于很少输入数目的组合电路.有很多输入的组合电路必须以不同的方式设计.例如,考虑有n = 32个输入的组合电路.其真值表可能会有超过40亿行--对于第2章介绍的设计电路方法来说,这个数目特别巨大.再有,大型电路肯定会遇到设计扇入和扇出的需求.这就要求一种自顶

《数字逻辑设计与计算机组成》一2.7 其他逻辑门

2.7 其他逻辑门 作为对之前标准逻辑门的补充,这节里将介绍一些其他对设计数字系统来说必需的其他逻辑门.这些逻辑门有缓存.集电极开路(OC)缓冲区和三态缓存. 2.7.1 缓存 缓存的符号和真值表如图2-22a所示.一个缓存不会改变其输入信号:只是简单地放大它.假设与门的扇出为5,缓存可以增加与门的扇出至5-9,如图2-22b所示. 2.7.2 集电极开路缓冲区 OC缓冲区和缓存门类似,除了当其输入为逻辑1时,其输出变为高阻抗,如Z(图2-23a)所示.高阻抗信号既不是逻辑0也不是逻辑1,而是显

《数字逻辑设计与计算机组成》一 第2章 2.1 简介

第2章 Digital Logic Design and Computer Organization with Computer Architecture for Security组合电路:小型设计 2.1 简介 第1章中简单介绍了组合电路以及它们在数字系统中的应用.在这一章里,我们将涉及小的组合电路设计方法,但这些方法与设计大的组合电路用到的方法有所不同.而且,当我们手动进行最小化设计时,我们将会限制输入引脚的个数为4个,对于一些输入个数虽然超出了4但不是很大的情况(比如5个或6个),我们也会