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

简介: 本节书摘来自华章出版社《数字逻辑设计与计算机组成》一 书中的第3章,第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可以运行一个未知操作。稍后将讨论详细的位并行和位串行设计。
image

image

图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的输出。

image

在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位被如下式子定义:
image

作为一个例子,图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等。其他位逻辑模块也是类似的设计。

image

小型多路选择电路的设计在第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所示。

image

选择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作为最后的输出。这个过程如图所示。
image

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

例如,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。

image

image

表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时进行按位或操作。
image

image

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。

image
image

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

1位ALU片的质主蕴含:
image

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

相关文章
|
芯片 异构计算
《数字逻辑设计与计算机组成》一2.9 实现
本节书摘来自华章出版社《数字逻辑设计与计算机组成》一 书中的第2章,第2.10节,作者:[美]尼克罗斯·法拉菲,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1635 0
|
算法
《数字逻辑设计与计算机组成》一 3.4 减法器
本节书摘来自华章出版社《数字逻辑设计与计算机组成》一 书中的第3章,第3.4节,作者:[美]尼克罗斯·法拉菲,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1940 0
|
算法 安全 测试技术
《数字逻辑设计与计算机组成》一练习
本节书摘来自华章出版社《数字逻辑设计与计算机组成》一 书中的第3章,练习章节,作者:[美]尼克罗斯·法拉菲,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1697 0
《数字逻辑设计与计算机组成》一3.2 算术函数
本节书摘来自华章出版社《数字逻辑设计与计算机组成》一 书中的第3章,第3.2节,作者:[美]尼克罗斯·法拉菲,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
942 0
|
安全
《数字逻辑设计与计算机组成》一 导读
本书内容包括存储器组织、处理器核心和处理器组织结构,以及硬件支持的计算机安全等。由于技术的进步以及对高速和低功耗设计的需求改变了计算机组织结构的基础,因此本书尝试不仅提供简单的实例用于展示基本的设计概念,而且揭示对现代计算机设计目标的理解。
1500 0
《数字逻辑设计与计算机组成》一 1.3 计算机组成
本节书摘来自华章出版社《数字逻辑设计与计算机组成》一 书中的第1章,第1.3节,作者:[美]尼克罗斯·法拉菲,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
871 0
|
存储 芯片
《数字逻辑设计与计算机组成》一 1.2 逻辑设计
本节书摘来自华章出版社《数字逻辑设计与计算机组成》一 书中的第1章,第1.2节,作者:[美]尼克罗斯·法拉菲,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
2352 0
|
测试技术 容器
《数字逻辑设计与计算机组成》一 2.10 硬件描述语言
本节书摘来自华章出版社《数字逻辑设计与计算机组成》一 书中的第2章,第2.10节,作者:[美]尼克罗斯·法拉菲,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1444 0
《数字逻辑设计与计算机组成》一 2.8 设计实例
本节书摘来自华章出版社《数字逻辑设计与计算机组成》一 书中的第2章,第2.8节,作者:[美]尼克罗斯·法拉菲,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1718 0
|
算法
《数字逻辑设计与计算机组成》一3.7 设计实例
本节书摘来自华章出版社《数字逻辑设计与计算机组成》一 书中的第3章,第3.7节,作者:[美]尼克罗斯·法拉菲,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1630 0