1、第二章 运算方法和运算器(2),第二章 运算方法和运算器(2),2,23 定点加法、减法运算,231 补码加法 补码加法公式:X补+Y补=X+Y补 (mod 2),第二章 运算方法和运算器(2),3,补码加法的特点: 符号位要作为数的一部分一起参加运算。 要在模2的意义下相加,即超过2的进位要丢掉。 222 补码减法 数用补码表示时,减法运算的公式为: XY补 = X补-Y补 X补+-Y补 (mod 2) 从Y补求-Y补的法则:对Y补包括符号位“求反且最末位加1”。,第二章 运算方法和运算器(2),4,第二章 运算方法和运算器(2),5,233 溢出概念与检测方法 在定点小数机器中,数的表示范
2、围为|x|1。在运算过程中如出现大于1的现象,称为“溢出”。 在定点机中,正常情况下溢出是不允许的。 两个正数相加,结果大于机器所能表示的最大正数,称为上溢。 如+0.1011和+0.1001相加得:1.0100 两个负数相加,结果小于机器所能表示的最小负数,称为下溢。 如-0.1101和-0.1011相加得:0.1000 判断“溢出”是否发生,可采用两种检测方法。 双符号位法 又称为“变形补码”或“模4补码”。 可使模2补码所能表示的数的范围扩大一倍。 数的变形补码定义为:,第二章 运算方法和运算器(2),6,或用同余式表示为 x补4+x (mod 4) 下式也同样成立: x补+y补x+y补
3、 (mod 4) 为了得到两数变形补码之和等于两数和的变形补码,同样必须: (1)两个符号位都看做数码一样参加运算。 (2)两数进行以4为模的加法,即最高符号位上产生的进位要丢掉。,第二章 运算方法和运算器(2),7,采用变形补码后: 任何小于 1的正数,两个符号位都是“0”,即00.x1x2xn 任何大于-1的负数,两个符号位都是“1”,即11.x1x2xn 如果两个数相加后,其结果的符号位出现“01”或“10”两种组合时,表示发生溢出。 这是因为两个绝对值小于1的数相加,其结果不会大于或等于2,所以最高符号位永远表示结果的正确符号。,第二章 运算方法和运算器(2),8,第二章 运算方法和运
4、算器(2),9,由此,我们可以得出如下结论: (1)当以模4补码运算,运算结果的二符号位相异时,表示溢出;相同时,表示未溢出。 故溢出逻辑表达式为:VSf1Sf2,其中Sf1和Sf2分别为最高符号位和第二符号位。 此逻辑表达式可用异或门实现。 (2)模4补码相加的结果,不论溢出与否,最高符号位始终指示正确的符号。 单符号位法。 由于溢出逻辑表达式为VCf C0,其中Cf为符号位产生的进位,C0为最高有效位产生的进位。 此逻辑表达式也可用异或门实现。 在定点机中,当运算结果发生溢出时,机器通过逻辑辑电路自动检查出这种溢出,并进行中断处理。,第二章 运算方法和运算器(2),10,234 基本的二进
5、制加法减法器 图 (a)示出了补码运算的二进制加法减法器逻辑结构图。 由图看到,n个1位的全加器(FA)可级联成一个n位的行波进位加减器。,第二章 运算方法和运算器(2),11,M为方式控制输入线: 当M0时,做加法(A+B)运算; 当M1时,做减法(A-B)运算 在M1时,做减法(A-B)运算情况下,A-B运算转化成A补+-B补运算,求补过程由B+1来实现。 因此,图中最右边的全加器的起始进位输入端被连接到功能方式线M上,做减法时M1,相当于在加法器的最低位上加1。 另外,图中左边还表示出单符号位法的溢出检测逻辑:当Cn=Cn-1时,运算无溢出;而当CnCn-1时,运算有溢出,经异或门产生溢
6、出信号。,第二章 运算方法和运算器(2),12,两个二进制数字Ai,Bi和一个进位输入Ci相加,产生一个和输出Si,以及一个进位输出Ci+1。下表中列出一位全加器进行加法运算的输入输出真值表。 根据表中所示的真值表,三个输入端和两个输出端可按如下逻辑方程进行联系: SiAi Bi Ci Ci+1AiBi+BiCi+CiAi,第二章 运算方法和运算器(2),13,按此表达式组成的一位全加器示于图 (b)。 Si的时间延迟为6T(每级异或门延迟3T), Ci+1的时间延迟为5T,其中T被定义为相应于单级逻辑电路的单位门延迟。 T通常采用一个“与非”门或一个“或非”门的时间延迟来作为度量单位。在多级
7、开关电路的时间延迟可以用“与非”门的级数或者T的数目来度量。,第二章 运算方法和运算器(2),14,例如计算一个n位的行波进位加法器的时间延迟。 假如采用图 (b)所示的一位全加器并考虑溢出检测,那么n位行波进位加法器的延迟时间ta为: tan2T+9T(2n+9)T 其中: 9T为最低位上的两级“异或”门再加上溢出“异或”门的总时间 2T为每级进位链的延迟时间。 当不考虑溢出检测时,有: ta(n-1)2T+9T ta意味着加法器的输入端输入加数和被加数后,在最坏情况下加法器输出端得到稳定的求和输出所需的最长时间。显然这个时间越小越好。 注意:加数、被加数、进位与和数都是用电平来表示的,因此
8、,所谓稳定的求和输出,就是指稳定的电平输出。,第二章 运算方法和运算器(2),15,235 十进制加法器 十进制加法器可由BCD码(二十进制码)来设计,它可以在二进制加法器的基础上加上适当的“校正”逻辑来实现,该校正逻辑可将二进制的“和”改变成所要求的十进制格式。 n位BCD码行波式进位加法器的一般结构如图 (a)所示。 它由n级组成,每一级将一对4位的BCD数字相加,并通过一位进位线与其相邻级连接。,第二章 运算方法和运算器(2),16,而每一位十进制数字的BCD加法器单元的逻辑结构示于图(b)。,第二章 运算方法和运算器(2),17,在十进制运算时,当相加二数之和大于9时,便产生进位。可是
9、用BCD码完成十进制数运算时,当和数大于9时,必须对和数进行加6修正。这是因为,采用BCD码后,在二数相加的和数小于等于9时,十进制运算的结果是正确的;而当相加的和数大于9时,结果不正确,必须加6修正后才能得出正确的结果。,第二章 运算方法和运算器(2),18,24 定点乘法运算,241 原码并行乘法 1人工算法与机器算法的同异性 在定点计算机中,两个原码表示的数相乘的运算规则是: 乘积的符号位由两数的符号位按异或运算得到 乘积的数值部分则是两个正数相乘之积。 设n位被乘数和乘数用定点小数表示(定点整数也同样适用) 被乘数 x原xfxn-1x1x0 乘数 y原yfyn-1y1y0 乘积 z原(
10、xf Yf)+(0.xn-1x1x0)(0.yn-1y1y0) 式中,xf为被乘数符号,yf为乘数符号。,第二章 运算方法和运算器(2),19,其中: 乘积符号的运算法则是: 同号相乘为正,异号相乘为负。 由于被乘数和乘数和符号组合只有四种情况(xfyf=00,01,10,11),因此积的符号可按“异或”(按位加)运算得到。 数值部分的运算方法与普通的十进制小数乘法相类似,不过对于用二进制表达的数来说,其乘法规则更为简单一些。 例:设x0.1101,y0.1011,求其乘积,其过程如下:,第二章 运算方法和运算器(2),20,但是 机器通常只有n位长,两个n位数相乘,乘积可能为2n位。 串行乘
11、法方法太慢,不能满足科学技术对高速乘法所提出的要求。 乘法运算大约占全部算术运算的13,必须采用高速乘法部件,提高速度和效率。 我们只介绍并行乘法器。,第二章 运算方法和运算器(2),21,2不带符号的阵列乘法器,第二章 运算方法和运算器(2),22,设计高速并行乘法器的基本问题,就在于缩短被加数矩阵中每列所包含的1的加法时间。 现以5位乘5位不带符号的阵列乘法器(mn5)为例来说明并行阵列乘法器的基本原理。,第二章 运算方法和运算器(2),23,图中示出了5位 5位阵列乘法器的逻辑电路图,其中: FA是一位全加器 FA的斜线方向为进位输出 FA的竖线方向为和输出 所有被加数项的排列和前述AB
12、P乘法过程中的被加数矩阵相同。 图中用虚线围住的阵列中最后一行构成了一个行波进位加法器,其时间延迟为(n-1)2T。 为了缩短加法时间,最下一行的行波进位加法器也可以用先行进位加法器来代替。,第二章 运算方法和运算器(2),24,这种乘法器要实现n位n位时,需要n(n-1)个全加器和n2个“与”门。该乘法器的总的乘法时间可以估算如下: 令Ta为“与门”的传输延迟时间,Tf为全加器(FA)的进位传输延迟时间,假定用2级“与非”逻辑来实现FA的进位链功能,我们就有: TaTf2T 从上图可见,最坏情况下的延迟途径,即是沿着矩阵最右边的对角线和最下面的一行。因而得到n位n位不带符号的阵列乘法器总的乘
13、法时间为: tmTa+(n-1)+(n-1)Tf=2T+(2n-2)2T =(4n-2)T,第二章 运算方法和运算器(2),25,第二章 运算方法和运算器(2),26,3带符号的阵列乘法器 对带符号的阵列乘法器的结构来说,按其所用的数的表示方法而有所不同。 1、算术运算部件设计中经常用到的求补电路。如下图所示,其逻辑表达式如下:,第二章 运算方法和运算器(2),27,对2求补时,采用按位扫描技术来执行所需要的求补操作。 令A=ana1a0是给定的(n+1)位带符号的数,要求确定它的补码形式。 进行求补的方法就是从数的最右端a0开始,由右向左,直到找出第一个“1” 。 ai以右的每一个输入位,包
14、括ai自己,都保持不变; ai以左的每一个输入位都求反,即1变0,0变1。 横向链式线路中的第i扫描级的输出Ci为1的条件是: 第i级的输入位口ai=1,或者第i级链式输入(来自右起前i-1级的链式输出)Ci-1=1。 最右端的起始链式输入C-1必须永远置成“0”。 控制信号线E: 当控制信号线E为“1”时,启动对2求补的操作; 当控制信号线E为“0”时,输出将和输入相等。 可以利用符号位来作为控制信号。,第二章 运算方法和运算器(2),28,例如,在一个4位的对2求补器中,如果输入数为1010,那么输出数应是0110,其中从右算起的第2位,就是所遇到的第一个“1”的位置。,第二章 运算方法和
15、运算器(2),29,用这种对2求补器来转换一个(n+1)位带符号的数,所需的总时间延迟为: tTCn2T+5T(2n+5)T 其中: 每个扫描级需2T延迟, 5T是由“与”门和“异或”门引起的。 2、符号的阵列乘法器(右图所示),第二章 运算方法和运算器(2),30,通常,把包含这些求补级的乘法器又称为符号求补的阵列乘法器。 在这种逻辑结构中,共使用了三个求补器。其中: 两个算前求补器的作用是:将两个操作数A和B在被不带符号的乘法阵列(核心部件)相乘以前,先变成正整数。 算后求补器的作用则是:当两个输入操作数的符号不一致时,把运算结果变换成带符号的数。,第二章 运算方法和运算器(2),31,设
16、Aanan-1a1a0和Bbnbn-1b1b0均为用定点表示的(n+1)位带符号整数。 由图中看到,在必要的求补操作以后,A和B的码值输送给n位n位不带符号的阵列乘法器,并由此产生2n位乘积: ABPP2n-1P1P0 P2nan bn 其中p2n为符号位。 图中所示的带求补级的阵列乘法器既适用于原码乘法,也适用于间接的补码乘法。 不过在原码乘法中,算前求补和算后求补都不需要,因为输入数据都是立即可用的。 间接的补码阵列乘法却需要使用三个求补器。 为了完成所必需的求补与乘法操作,时间大约比原码阵列乘法增加1倍。,第二章 运算方法和运算器(2),32,第二章 运算方法和运算器(2),33,第二章
17、 运算方法和运算器(2),34,第二章 运算方法和运算器(2),35,242 直接补码并行乘法 1、补码与真值的转换公式 补码乘法因符号位参与运算,可以完成补码数的“直接”乘法,而不需要求补级。大大加速了乘法过程。 与直接的补码乘法相联系的数学特征。 对于计算补码数的数值来说,一种较好的表示方法是使补码的位置数有一个带负权的符号和带正权的系数。 今考虑一个定点补码整数N补an-1an-2a1a0,这里an-1是符号位。 根据N补的符号,补码数N补和真值N的关系可以表示成:,第二章 运算方法和运算器(2),36,或,第二章 运算方法和运算器(2),37,2、一般化的全加器形式 常规的一位全加器可
18、假定它的3个输入和2个输出都是正权。 这种加法器通过把正权或负权加到输入输出端,可以归纳出四类加法单元。如表列出了这四类一般化的全加器的名称和逻辑符号。 每一类全加器都是用它所包含的负权输入的个数来命名的。 其中: 0类全加器没有负权输入 1类全加器有1个负权输入和2个正权输入 依次类推,第二章 运算方法和运算器(2),38,第二章 运算方法和运算器(2),39,注意: 0类和3类全加器是用同一对逻辑方程来表征的,它和普通的一位全加器(0类)是一致的。 3类全加器可以简单地把0类全加器的所有输入输出值全部反相来得到,反之亦然。 1类和2类全加器之间也能建立类似的关系。 由于逻辑表达式具有两级与
19、-或形式,可以用“与或非”门来实现,延迟时间为2T。,第二章 运算方法和运算器(2),40,3、直接补码阵列乘法器 利用混合型的全加器就可以构成直接补码数阵列乘法器。 设被乘数A和乘数B是两个5位的二进制补码数,即 A=(a4)a3a2a1a0 B=(b4)b3b2b1b0 a4和b4:带负权的符号位并用括号标注。 A和B相乘过程中所包括的操作步骤如下面矩阵所示:,第二章 运算方法和运算器(2),41,5位乘5位的直接补码阵列乘法器逻辑原理示于下图。 其中: 使用不同的逻辑符号来代表0类、1类、2类和3类全加器。,第二章 运算方法和运算器(2),42,第二章 运算方法和运算器(2),43,在n位n位的一般情况下,该乘法器需要: (n-2)2个0类全加器 (n-2)个1类全加器 (2n-3)个2类全加器 1个3类全加器 总共是n(n-1)个全加器。 所需要的总乘法时间为: tpTa+2(n-1)Tf2T+(2n-2)2T(4n-2)T 如果在最后一行中全部采用先行进位,那么总的延迟时间还可以减少。,