收藏 分享(赏)

计算机组成原理电子教案第3章.ppt

上传人:fcgy86390 文档编号:8024346 上传时间:2019-06-04 格式:PPT 页数:78 大小:1.26MB
下载 相关 举报
计算机组成原理电子教案第3章.ppt_第1页
第1页 / 共78页
计算机组成原理电子教案第3章.ppt_第2页
第2页 / 共78页
计算机组成原理电子教案第3章.ppt_第3页
第3页 / 共78页
计算机组成原理电子教案第3章.ppt_第4页
第4页 / 共78页
计算机组成原理电子教案第3章.ppt_第5页
第5页 / 共78页
点击查看更多>>
资源描述

1、第三章 运算方法和运算部件,计算机组成原理电子教案 陆 遥,3.1 定点加减法运算3.1.1 补码加减法运算3.1.2 行波进位补码加法/减法器 3.2 定点乘法运算3.2.1 原码一位乘法3.2.2 补码一位乘法3.2.3 阵列乘法器 3.3 定点除法运算3.3.1 原码一位除法3.3.2 补码一位除法3.3.3 阵列除法器,3.4 定点运算器的组成与结构3.4.1 逻辑运算与移位操作3.4.2 算术逻辑单元(ALU)的功能设计3.4.3 定点运算器的基本结构 3.5 浮点运算3.5.1 浮点加法、减法运算3.5.2 浮点乘法、除法运算3.5.3 浮点运算部件,3.1 定点加减法运算,3.1

2、.1 补码加减法运算 计算机中均采用补码进行加减运算。 定点整数补码加、减运算规则:x补 + y补 = x + y补 (mod 2n) x补 - y补 = x补 + - y补 = x - y补 (mod 2n) 定点小数补码加、减运算规则:x补 + y补 = x + y补 (mod 21) x补 - y补 = x补 + - y补 = x - y补 (mod 21) 补码减法运算可以转换为补码加法运算,这样可以简化运算器的设计。,【例3.1】设存放数据的寄存器为8位,x = +1010110,y = -1001001,求 x + y补 。解:首先求出x和y的补码 x补 = 01010110 y补

3、 = 10110111按补码加法规则,有0 1 0 1 0 1 1 0 x补+ 1 0 1 1 0 1 1 1 y补0 0 0 0 1 1 0 1 x + y补 (mod 28)从运算结果来看,最高位上产生了进位1,但在模28的作用下,该位不被保留,所以 x + y补 = 00001101 (mod 28)其符号位为0,说明和为正数。,【例3.2】设存放数据的寄存器为8位,x = +1010110,y = +1101001,求 x - y补 。解:首先求出x和y的补码 x补 = 01010110 y补 = 01101001要将减法转换为加法,先求出- y补 = 10010111 由此可得0 1

4、 0 1 0 1 1 0 x补+ 1 0 0 1 0 1 1 1 -y补1 1 1 0 1 1 0 1 x - y补 (mod 28)所以 x - y补 = 11101101 (mod 28)从运算结果来看,符号位为1,说明差为负数。,【例3.3】设存放数据的寄存器为8位,x = +1010110,y = +1001001,求 x + y补 。解:首先求出x和y的补码 x补 = 01010110 y补 = 01001001按补码加法规则,有0 1 0 1 0 1 1 0 x补+ 0 1 0 0 1 0 0 1 y补1 0 0 1 1 1 1 1 x + y补 (mod 28)从运算结果来看,符

5、号位为1,说明为负数。但由于x、y均为正数,其和不可能为负数。究竟是什么原因造成这样的错误呢?,补码是有一定的数据表示范围的;当两个数的补码相加(减),其和(差)超出特定位数的补码所能表示的数据范围时,称为“溢出”。“溢出”表现为,数的最高有效数字位占据并改变了数的符号位,从而造成数据表示的错误。 补码加减运算必须检测运算结果的“溢出”状态,并将检测结果反馈给处理器。,几种常用的“溢出”检测方法:根据运算结果的符号与运算数据的符号之间的关系检测“溢出”。设x补 = xn-1 xn-2 x1 x0y补 = yn-1 yn-2 y1 y0x + y补 = sn-1 sn-2 s1 s0其中,xn-

6、1 、yn-1 和 sn-1 分别为 x补 、y补 和 x + y补 的符号位。以V 表示“溢出”状态,则有,根据变形补码两个符号位之间的关系检测“溢出”。变形补码是具有两个符号位的补码;正数的变形补码,其两个符号位为00,负数的变形补码,其两个符号位为11。【例3.4】设x = +1010110,y = +1001001,用变形补码求 x + y补 。解:首先求出x和y的变形补码 x补 = 001010110 y补 = 001001001则有0 0 1 0 1 0 1 1 0 x补+ 0 0 1 0 0 1 0 0 1 y补0 1 0 0 1 1 1 1 1 x + y补 (mod 29),

7、当变形补码产生溢出时,数的最高有效数字位会占据并改变两个符号位中的低位,但两个符号位中的高位不会受到影响;因此,变形补码两个符号位中的高位总能表示数的正确符号。变形补码检测“溢出”的方法:设x + y补用变形补码一般表示为 x + y补 = sn sn-1 sn-2 s1 s0则有,按补码相加时最高有效数字位产生的进位与符号位产生的进位之间的关系检测“溢出”。设最高有效数字位产生的进位为CMSB ,符号位产生的进位为CS ,则有以上三种检测方式对应的检测电路如下图所示,3.1.2 行波进位补码加法/减法器 由于补码减法可以转换成补码加法进行,因此,补码加法/减法器的主体是加法器。构成加法器的主

8、要器件是全加器;一个全加器是实现带进位的1位加法的器件。,根据二进制加法运算的特点,有将多个全加器按进位相联的方式级联起来,即可构造一个单纯的多位补码加法器。 对减法,由于A补 - B补 = A补 + -B补,且因此,可以在做减法时,先求得-B补,再送入加法器相加;而在做加法时不做这种转换,直接使用B补相加。这样,就得到了补码加法/减法器。,下图是一个n位的行波进位补码加法/减法器,3.2 定点乘法运算,3.2.1 原码一位乘法 当两个用原码表示的数相乘时,可以用其数字部分直接相乘,得到乘积的数字部分,而乘积的符号取两个数符号的异或值即可。 设x = 1010,y = 1101,则人工计算x

9、y的过程是1 0 1 0 1 1 0 11 0 1 00 0 0 01 0 1 01 0 1 01 0 0 0 0 0 1 0,在计算机中,部分积可用乘数的1位与被乘数的每一位按“逻辑与”运算求得;部分积相加需要按累加方式进行;部分积累加时的数位偏移,可采用移位技术实现。由此,可以归纳出计算机执行二进制乘法的步骤如下:,其中,第一个部分积是与0累加。,原码一位乘法的逻辑电路框图,最终,积的低位部分在R1中,高位部分在R0中,积的符号(zs)则是x和y的符号(xs和ys)的“异或”。,3.2.2 补码一位乘法 补码一位乘法可按布斯(Booth)公式进行。 设有n位补码x补 = xn-1 xn-2

10、 x1 x0y补 = yn-1 yn-2 y1 y0 y-1其中,xn-1 和yn-1 是x补 和y补 的符号位,y-1 是给y补 添加的一个附加位,且y-1 = 0,则布斯公式为,由布斯公式导出的布斯算法流程图如下,【例3.5】设x = +101101,y = -110010,用布斯算法求x y补 。解:x补 = 0101101,-x补 = 1010011,y补 = 1001110,y-1 = 0。计算过程如下:A Y Y0 Y-1 说 明0 0 0 0 0 0 0 1 0 0 1 1 1 0 0 A、Y、Y-1的初始状态,Y0Y-1 = 000 0 0 0 0 0 0 0 1 0 0 1

11、1 1 0 A、Y、Y-1算术右移1位,Y0Y-1 = 10+ 1 0 1 0 0 1 1 A A-X(即A A+-x补)1 0 1 0 0 1 1 0 1 0 0 1 1 1 01 1 0 1 0 0 1 1 0 1 0 0 1 1 1 A、Y、Y-1算术右移1位,Y0Y-1 = 111 1 1 0 1 0 0 1 1 0 1 0 0 1 1 A、Y、Y-1算术右移1位,Y0Y-1 = 111 1 1 1 0 1 0 0 1 1 0 1 0 0 1 A、Y、Y-1算术右移1位,Y0Y-1 = 01+ 0 1 0 1 1 0 1 A A+X(即A A+x补)0 1 0 0 1 1 1 0 1

12、1 0 1 0 0 10 0 1 0 0 1 1 1 0 1 1 0 1 0 0 A、Y、Y-1算术右移1位,Y0Y-1 = 000 0 0 1 0 0 1 1 1 0 1 1 0 1 0 A、Y、Y-1算术右移1位,Y0Y-1 = 10+ 1 0 1 0 0 1 1 A A-X(即A A+-x补)1 0 1 1 1 0 0 1 1 0 1 1 0 1 0 1 1 0 1 1 1 0 0 1 1 0 1 1 0 1 A、Y、Y-1最后算术右移1位,因此,计算结果为 x y补 = 11011100110110真值为 x y = -100011001010图3.5是针对定点整数补码乘法的布斯算法,

13、如为定点小数补码乘法,则最后一步时,不应再做算术右移,而乘积中也不包含Y寄存器的最低位Y0(或者也可将Y0 清零)。一位乘法是一种全串行的乘法方法,运算速度慢。,3.2.3 阵列乘法器 阵列乘法器具有一定的并行工作特征,属于并行乘法器。1无符号数阵列乘法器 设X和Y是两个n位无符号二进制数X = xn-1 xn-2 x1 x0Y = yn-1 yn-2 y1 y0若以X为被乘数,Y为乘数,则可以采用下图所示的部分积产生电路同时求得n个部分积。,对部分积相加则采用一个乘法阵列来完成。下图所示为实现两个5位无符号二进制数相乘的乘法阵列逻辑电路图。,设x = 10110,y = 11001,用阵列求

14、x y,将部分积产生电路与乘法阵列相连接,就得到完整的无符号数阵列乘法器。,对n位无符号数乘法而言,阵列乘法器的运算速度是一位乘法器的大约n/4倍。,1有符号数阵列乘法器 如有符号数采用原码表示,在相乘时,可将被乘数和乘数的数字部分看作无符号数,直接送入无符号数阵列乘法器进行运算,而乘积的符号则由两数的符号经逻辑“异或”产生。 如有符号数采用补码表示,一种方法是,先将被乘数和乘数转换成原码,然后送入原码阵列乘法器进行运算,最后再将乘积由原码转换成补码,即构造一种间接补码阵列乘法器;另一种方法则是直接采用补码相乘,即构造直接补码阵列乘法器。,对间接补码阵列乘法器,需要设计原码与补码之间的转换电路

15、。一种有效的转换方法是:正数无需转换;对负数转换时,符号位保持不变,数字部分从最低位向高位方向寻找第一个“1”,该位“1”及其以右的低位数字保持不变,以左的高位数字则按位取反。,下图所示为实现n位补码相乘的间接补码阵列乘法器组成框图。注意:符号位必须参与转换。,3.3 定点除法运算,3.3.1 原码一位除法 原码除法以原码表示被除数与除数,以它们的数字部分(相当于绝对值或无符号数)相除,商的符号为两数符号的逻辑“异或”,余数的符号则总是与被除数符号相同。 计算机中的定点除法运算规定,被除数的位数应是除数位数的两倍。当被除数的每一位都参加运算后,运算即结束。 定点除法运算的结果包含两个部分:商和

16、余数。 在被除数与除数以绝对值相除时,若第一次上的商为1,则除法出错,称为“除法溢出”。,以下是人工进行无符号数除法运算的基本过程:设被除数x和除数y 分别为x = 11001,y = 111,为了使被除数的位数达到除数位数的两倍,在x的最高位添1个0,得x = 011001。除法运算过程如下: 0 0 1 1 商 1 1 1 0 1 1 0 0 1- 1 1 1 首次试商,不够减,上商0,不减除数0 1 1 0 0 1 r0 部分余数r0- 0 1 1 1 除数右移1位试商,不够减,上商0,不减除数0 1 1 0 0 1 r1 部分余数r1- 0 0 1 1 1 除数右移1位试商,够减,上商

17、1,减除数0 0 1 0 1 1 r2 部分余数r2- 0 0 0 1 1 1 除数右移1位试商,够减,上商1,减除数0 0 0 1 0 0 r3 除法结束,部分余数r3也就是最终的余数,以上除法运算过程可以描述为,直到被除数的每一位均参与了运算为止。 计算机做除法时,是根据试商时部分余数的正负性来判断是否够减,并以此决定上商的。因此,需要给被除数和除数的数字部分都添加一个符号位,并设置为正号(“0”)。 根据试商时的不同处理方式,有“恢复余数法”和“加减交替法”两种原码一位除法的方法。,恢复余数法始终采用减除数试商,其思想是:当减除数试商得到部分余数为正时,上商1,部分余数正确;当出现部分余

18、数为负时,上商0,然后在错误的部分余数上再加上除数,使部分余数恢复正常。 加减交替法的思想是:首次试商采用减除数试商;当部分余数为正时,上商1,下次试商采用减除数试商;当部分余数为负时,上商0,不恢复余数,但在下次试商时采用加除数试商。,【例3.6】设x原 = 0.101001,y原 = 1.111。用恢复余数法求xy 。解:分别以 x和 y表示 x 和 y 的数字部分,并添加正号0,则有 x= 0.101001, y= 0.111考虑到计算机把减法变成加法来计算的特点,减除数 y试商时,实际上是在加-y补 ,因此给出-y补 = 1.001。运算过程如下:0 . 1 0 1 0 0 1+ 1

19、. 0 0 1 减 y试商 1 . 1 1 0 0 0 1 符号为1,部分余数为负,上商 0+ 0 . 1 1 1 加 y,恢复余数0 . 1 0 1 0 0 1 + 1 . 1 0 0 1 y右移1位,减 y试商0 . 0 0 1 1 0 1 符号为0,部分余数为正,上商 1+ 1 . 1 1 0 0 1 y右移1位,减 y试商1 . 1 1 1 1 1 1 符号为1,部分余数为负,上商 0+ 0 . 0 0 1 1 1 加 y,恢复余数0 . 0 0 1 1 0 1+ 1 . 1 1 1 0 0 1 y右移1位,减 y试商0 . 0 0 0 1 1 0 符号为0,部分余数为正,上商 1,运

20、算结束,第一次上商为0,故未产生除法溢出,运算结果正确。商的数字部分为0.101,余数的数字部分为0.000110。由于 x 与 y 异号,且 x 为正,故得商= -0.101,余数= +0.000110,表示成原码为 商原 = 1.101,余数原 = 0.000110【例3.7】仍设x原 = 0.101001,y原 = 1.111。用加减交替法求 xy 。解:分别以 x和 y表示 x 和 y 的数字部分,并添加正号0,则有 x= 0.101001, y= 0.111, -y补 = 1.0010 . 1 0 1 0 0 1+ 1 . 0 0 1 首次试商,采用减 y试商1 . 1 1 0 0

21、0 1 符号为1,部分余数为负,上商 0+ 0 . 0 1 1 1 不恢复余数,y右移1位,加 y试商 0 . 0 0 1 1 0 1 符号为0,部分余数为正,上商 1+ 1 . 1 1 0 0 1 y右移1位,减 y试商1 . 1 1 1 1 1 1 符号为1,部分余数为负,上商 0+ 0 . 0 0 0 1 1 1 不恢复余数,y右移1位,加 y 试商0 . 0 0 0 1 1 0 符号为0,部分余数为正,上商 1,运算结束,【例3.8】设x原 = 00111,y原 = 011。用加减交替法求 xy 。解:分别以 x和 y表示 x 和 y 的数字部分,并添加正号0,则有 x= 00111,

22、 y= 011, -y补 = 101 。0 0 1 1 1+ 1 0 1 首次试商,采用减 y试商1 1 0 1 1 符号为1,部分余数为负,上商 0+ 0 0 1 1 不恢复余数,y右移1位,加 y试商0 0 0 0 1 符号为0,部分余数为正,上商 1+ 1 1 1 0 1 y右移1位,减 y试商1 1 1 1 0 符号为1,部分余数为负,上商 0,运算结束第一次上商为0,故未产生除法溢出,运算结果正确,商原 = 010。由于最后一次部分余数为负,故还需做一次恢复余数的运算,即再加上00011,得正确的部分余数为00001;因为是整数除法,且x为正,故最终余数为+01,余数原 = 001。

23、,下面通过将加减交替法与恢复余数法对比的方式,来证明加减交替法的正确性。设除数为y,运算过程中采用除数右移方式。当部分余数为正时,两种方法的处理过程是相同的;若第i次试商所得的部分余数ri为负,对恢复余数法,处理过程是:上商0;恢复余数:ri + y ;除数右移:y2-1 ;(右移1位相当于除以2)第i+1次减除数试商,得: ri+1 = (ri + y) - y2-1 = ri + y2-1 。对加减交替法,处理过程是:上商0;除数右移:y2-1 ;第i+1次采用加除数试商,得:ri+1 = ri + y2-1 。,3.3.2 补码一位除法 补码除法采用补码直接相除,即从x补 和y补 直接求

24、xy补 。同样要求被除数的数字部分位数是除数的两倍。 在不产生除法溢出的前提下,补码加减交替法的运算规则如下:第一次试商时,若被除数与除数同号,则减除数试商,否则加除数试商;若试商所得部分余数与除数同号,则上商1,否则上商0。这是第一次上的商,也就是最终商的符号位。(如果在被除数与除数同号时,商的符号位为1,或在被除数与除数异号时,商的符号位为0,均产生除法溢出。),求商的数字部分时,先将除数右移1位,如果上次上商1,则减除数试商,否则加除数试商;若试商所得部分余数与除数同号,则上商1。否则上商0。重复,直到被除数每一位均参加运算为止。 当除不尽时,若商为负,则需对商加1修正;若商为正,则无需

25、修正。当正好除尽时,若除数为负,则需对商加1修正;若除数为正,则无需修正。若最后一次试商所得部分余数与被除数同号,则余数正确,否则需要恢复余数。恢复余数是一个余数回溯的过程,可能需要连续多次回溯,才能将余数恢复到与被除数同号。,【例3.9】设x补 = 1.0111,y补 = 0.1101。用补码加减交替法求xy补 解:将被除数的数字位数扩展到除数的两倍,有 x补 = 1.01110000,并按加减交替法的需要,给出-y补 = 1.0011。运算过程如下:1 . 0 1 1 1 0 0 0 0+ 0 . 1 1 0 1 x 与 y 异号,第一次加除数试商0 . 0 1 0 0 0 0 0 0 部

26、分余数与除数同号,上商1,即商的符号位为1+ 1 . 1 0 0 1 1 除数右移1位,上次上商1,本次减除数试商1 . 1 1 0 1 1 0 0 0 部分余数与除数异号,上商0+ 0 . 0 0 1 1 0 1 除数右移1位,上次上商0,本次加除数试商0 . 0 0 0 0 1 1 0 0 部分余数与除数同号,上商1+ 1 . 1 1 1 0 0 1 1 除数右移1位,上次上商1,本次减除数试商1 . 1 1 1 1 0 0 1 0 部分余数与除数异号,上商0+ 0 . 0 0 0 0 1 1 0 1 除数右移1位,上次上商0,本次加除数试商1 . 1 1 1 1 1 1 1 1 部分余数

27、与除数异号,上商0,运算结束最后一次部分余数与被除数同号,余数正确;余数不为0,未除尽,且商为负,商需加1修正,即1.0100+1 = 1.0101。故得 商补 = 1.0101, 余数补 = 1.111111111,【例3.10】设x补 = 0.0100,y补 = 0.1000。用补码加减交替法求xy补 解:将被除数的数字位数扩展到除数的两倍,有x补 = 0.01000000,并按加减交替法的需要,给出-y补 = 1.1000。运算过程如下:0 . 0 1 0 0 0 0 0 0+ 1 . 1 0 0 0 x 与 y 同号,第一次减除数试商1 . 1 1 0 0 0 0 0 0 部分余数与除

28、数异号,上商0,即商的符号位为0+ 0 . 0 1 0 0 0 除数右移1位,上次上商0,本次加除数试商0 . 0 0 0 0 0 0 0 0 部分余数与除数同号,上商1+ 1 . 1 1 1 0 0 0 除数右移1位,上次上商1,本次减除数试商1 . 1 1 1 0 0 0 0 0 部分余数与除数异号,上商0+ 0 . 0 0 0 1 0 0 0 除数右移1位,上次上商0,本次加除数试商1 . 1 1 1 1 0 0 0 0 部分余数与除数异号,上商0+ 0 . 0 0 0 0 1 0 0 0 除数右移1位,上次上商0,本次加除数试商1 . 1 1 1 1 1 0 0 0 部分余数与除数异号

29、,上商0,运算结束最后一次部分余数与被除数异号,余数错误,需要恢复余数,整个过程需要3次回溯,才能将余数恢复到与被除数同号,即:,(1.11111000-0.00001000)-0.0001000)-1.111000)= (1.11111000+1.11111000)+1.1111000)+0.001000)= 0.00000000可见,最终余数为0,说明除尽,并且除数为正,商无需修正,故得 商补 = 0.1000, 余数补 = 0.00000000下面的例3.11与例3.10中的除数相等,但被除数符号相反,其最终的商和余数的绝对值发生了明显的改变。这是补码除法与原码除法之间的差异。,【例3.

30、11】设x补 = 1.1100,y补 = 0.1000。用补码加减交替法求xy补 解:将被除数的数字位数扩展到除数的两倍,有x补 = 1.11000000 并按加减交替法的需要,给出-y补 = 1.1000。运算过程如下:1 . 1 1 0 0 0 0 0 0+ 0 . 1 0 0 0 x 与 y 异号,第一次加除数试商0 . 0 1 0 0 0 0 0 0 部分余数与除数同号,上商1,即商的符号位为1+ 1 . 1 1 0 0 0 除数右移1位,上次上商1,本次减除数试商0 . 0 0 0 0 0 0 0 0 部分余数与除数同号,上商1+ 1 . 1 1 1 0 0 0 除数右移1位,上次上

31、商1,本次减除数试商1 . 1 1 1 0 0 0 0 0 部分余数与除数异号,上商0+ 0 . 0 0 0 1 0 0 0 除数右移1位,上次上商0,本次加除数试商1 . 1 1 1 1 0 0 0 0 部分余数与除数异号,上商0+ 0 . 0 0 0 0 1 0 0 0 除数右移1位,上次上商0,本次加除数试商1 . 1 1 1 1 1 0 0 0 部分余数与除数异号,上商0,运算结束最后一次部分余数与被除数同号,余数正确;余数不为0,未除尽,且商为负,商需加1修正,即1.1000+1 = 1.1001。故得 商补 = 1.1001, 余数补 = 1.11111000,3.3.3 阵列除法

32、器 原码加减交替法阵列除法器要求被除数与除数均以正数表示,商和余数的符号另行处理。由于试商时,既有减除数试商,也有加除数试商,因此,每次试商都要用到加/减法器。构成加/减法器的基本电路称为可控加/减(CAS)单元。,设被除数的数字位数为6位,除数的数字位数为3位,则对应规模的阵列除法器如下图所示。,设 x = +0.101001,y = +0.111。在阵列除法器上计算 xy ,得:商= +0.101,余数= +0.000110 。,3.4 定点运算器的组成与结构,定点运算器不仅要有定点算术运算的功能,还要具有逻辑运算、移位操作等功能。3.4.1 逻辑运算与移位操作 逻辑运算是计算机进行判断、

33、实现控制等操作的重要手段。1逻辑非 “逻辑非”运算也称“非”运算,其逻辑表达式为,“非”逻辑真值表,2逻辑加 “逻辑加”运算也称“或”运算,其逻辑表达式为“或”逻辑真值表,计算机中常用的“或”运算规则为, (x = 0,1)3逻辑乘 “逻辑乘”运算也称“与”运算,其逻辑表达式为“与”逻辑真值表计算机中常用的“与”运算规则为, (x = 0,1),4逻辑异 “逻辑异”运算也称“异或”运算,其逻辑表达式为“异或”逻辑真值表计算机中常用的“异或”运算规则为, (x = 0,1),各类移位操作,3.4.2 算术逻辑单元(ALU)的功能设计 算术逻辑单元(ALU)是组成运算器的核心器件,其主要功能是执行

34、定点数算术加/减法运算及各种逻辑运算。早期的乘法器和除法器也以ALU为主,配合移位寄存器等辅助电路构成。 下面以一种4位多功能ALU芯片74181为例,说明多功能ALU的设计方法。,全加器的输出 Fi 和 Cn+i+1 的逻辑表达式为函数发生器的输出与输入之间的函数关系如下表所示 函数发生器的输出与输入之间的函数关系,74181ALU一位单元的逻辑表达式如下:74181ALU采用了先行进位技术,使得4位之间的进位同时产生。所以,每一位上的加法运算可以同时进行,这就使得ALU具有了并行运算的能力,提高了运算速度。,若设则Cn+4的逻辑表达式可表示为其中,G、P两个信号也是74181芯片的输出信号

35、,G称为进位发生输出,P称为进位传送输出。 采用正逻辑操作数的74181ALU芯片方框图。,采用正逻辑操作数的74181ALU运算功能表,当需要用多个74181芯片组成一个位数更多的ALU时,利用Cn及各个芯片输出的G、P信号,可以构成芯片之间的先行进位逻辑。 如采用4个74181芯片组成一个16位ALU时,各个芯片的最高进位的逻辑表达式如下:若令则,74182芯片是专门与74181ALU芯片配套使用的先行进位部件(CLA),它按上述逻辑表达式设计,可以为4个74181ALU芯片提供芯片间的先行进位支持,从而构成一个16位全先行进位ALU。,3.4.3 定点运算器的基本结构 定点运算器由ALU

36、、阵列乘法器、阵列除法器、通用寄存器、专用寄存器、缓冲寄存器、多路开关、三态缓冲器、数据总线等组成。 运算器的设计,主要是围绕着ALU和寄存器同数据总线之间如何传送操作数和运算结果(即数据通路的设计)而进行的。 对数据总线的控制主要采用三态缓冲器。,双向传输总线的两种常见的实现方式,根据不同的性能要求,运算器大体有单总线结构、双总线结构和三总线结构等三种结构形式。,以上三种结构的运算器在数据传输效率上的差异,主要表现在ALU与寄存器之间的数据传输上。如果操作数取自主存,则三种结构的运算器在数据传输效率上没有多少差别;因为,运算器与主存之间只有一套数据总线,一次只能传输一个数据。 需要特别指出的

37、是:ALU无数据暂存能力;要避免总线上的数据冲突;一次运算过程是分成多个步骤来完成的,如传送操作数、计算、传送运算结果等。每个步骤都是在控制器所发出的控制信号的控制下进行的。,3.5 浮点运算,浮点运算需要同时涉及到尾数和阶码的运算,此外,运算过程中还需要对浮点数做规格化处理等;因此,浮点运算要比定点运算复杂得多。3.5.1 浮点加法、减法运算 设有两个规格化浮点数 x 和 y,分别表示为显然,计算xy的基础是Ex = Ey 。如果ExEy ,则需要先将它们调整为相等;这个操作称为“对阶”。,计算机中,浮点加减运算的过程大体分为以下几步:0操作数检查;比较阶码大小并完成对阶;尾数相加或相减;对

38、结果进行处理,包括规格化、舍入处理和溢出处理。0操作数检查。即检查 x 或 y 是否为0。比较阶码大小并完成对阶。要求“小阶向大阶看齐”。尾数相加或相减。尾数运算即为一般的定点补码加减运算,通常采用双符号位的变形补码进行运算。如设 Mx补 = 11.0011010,My补 = 11.1010011则Mx补 + My补 为,1 1 . 0 0 1 1 0 1 0+ 1 1 . 1 0 1 0 0 1 11 0 . 1 1 0 1 1 0 1运算结果规格化。尾数运算的结果可能出现非规格化状态,需要重新规格化。规格化时,对尾数左移称为向左规格化(简称“左规”),反之,称为向右规格化(简称“右规”)。

39、尾数移位的同时,阶码也必须做相应的修改。尾数用补码表示时,判断是否规格化的方法是:当尾数未溢出时,若尾数的符号位与最高有效数字位不同,则已规格化,反之,则未规格化;当尾数溢出时,则必为非规格化状态。,设尾数M1、M2 和M3 的变形补码表示分别为 M1补 = 11.0011010 M2补 = 11.1010011 M3补 = 10.1101101其中,M1补 和M2补 未溢出,M1补 已规格化,M2补 未规格化;M3补 溢出,故未规格化。对未规格化的尾数,规格化处理的原则是:如尾数未溢出,则进行左规处理,直至满足规格化要求为止;如尾数溢出,则作右规处理,只需将尾数算术右移1位,阶码加1即可。上

40、述M2补和M3补分别左规1位和右规1位后,得 M2补 = 11.0100110,M3补 = 11.0110110 (1),舍入处理。在对阶或规格化处理过程中,由于尾数右移,会使尾数的低位部分被移出,形成保护位;对保护位所做的处理,称为舍入处理。舍入处理的方法很多,选择时主要考虑以下三方面的因素:本身的误差要小;积累误差要小;容易实现。恒舍法:也称截断法,是一种最容易实现的舍入处理方法。其做法就是直接舍去保护位。恒置1法:其做法是,不论保护位中的数字是什么,总是将尾数有效数字的最低位置为1。此法无论在正数区还是负数区的积累误差都比较小,而且绝对值相等,符号相反,正好能达到平衡。,0舍1入法:在尾

41、数以真值或原码表示时,0舍1入法的规则是:如果保护位中的最高位为0,则将保护位舍去,否则向尾数的最低有效位进1(即加上1)。在尾数以补码表示时,对于正数,仍按上面针对原码的规则处理;对于负数,则需将0舍1入法修改为:当保护位中的最高位为0,或保护位中的最高位为1,但其余各位均为0时,作“舍”处理;只有在保护位中的最高位为1,且其余位不全为0时,才作“入”处理。优点是精度更高,正、负数区的积累误差更小,且能达到平衡。但0舍1入法实现起来比较困难。,溢出处理。只有阶码溢出,浮点数才会溢出。若阶码下溢,机器自动将运算结果当作0(即机器零);若阶码上溢,则需报告运算错误。由于对浮点数有规格化表示的要求

42、,所以,无论是运算数据,还是运算结果,都必须是规格化的;只有在运算过程中,允许暂时出现非规格化现象。,【例3.12】设 x = 20100.11011011,y = 2100(-0.10101100),按浮点运算步骤,求 x + y 。舍入处理采用0舍1入法。解:为方便人工计算,设浮点数格式为:阶码5位,用双符号补码(即变形补码)表示,以便判断阶码是否溢出;尾数数字部分8位,用双符号补码表示,便于规格化处理。x、y均不为0,且均已符合规格化要求,将其表示为浮点格式,有 x浮 = 00010,00.11011011 y浮 = 00100,11.01010100求阶差并对阶 Ex补 - Ey补 =

43、 Ex补 + -Ey补 = 00010 + 11100 = 11110 = (-2)10所以,ExEy ,Ex 应向Ey 看齐,即Ex 加上2,Mx 右移2位,得 x浮 = 00100,00.00110110 (11)括弧中的11为保护位。尾数相加尾数相加时,保护位也参与0 0 . 0 0 1 1 0 1 1 0 (11)+ 1 1 . 0 1 0 1 0 1 0 0 1 1 . 1 0 0 0 1 0 1 0 (11),规格化处理尾数运算结果的符号位与最高有效数字位相同,所以未规格化,应执行左规处理,即尾数左移1位(保护位一起移动),同时,阶码减1,得 00011,11.00010101 (

44、10)舍入处理由于尾数是负数的补码,且保护位为10,按0舍1入法,应作“舍”处理,结果为 00011,11.00010101判溢出由于阶码的两个符号位相同(为 00),所以阶码未溢出,运算结果正确,即 x + y浮 = 00011,11.00010101 x + y = 2011(-0.11101011),【例3.13】设 x = 2-101(-0.11001101),y = 2-011(-0.01011010),按浮点运算步骤,求 x + y 。舍入处理采用0舍1入法。解:x、y 均不为0。由于 y 未规格化,应先将其规格化,即尾数左移1位,指数减1,得 y = 2-100(-0.10110

45、100)于是有 x浮 = 11011,11.00110011 y浮 = 11100,11.01001100求阶差并对阶 Ex补 - Ey补 = Ex补 + -Ey补 = 11011 + 00100 = 11111 = (-1)10所以,ExEy ,Ex 应向Ey 看齐,即Ex 加上1,Mx 右移1位,得 x浮 = 11100,11.10011001 (1)括弧中的1为保护位。尾数相加1 1 . 1 0 0 1 1 0 0 1 (1)+ 1 1 . 0 1 0 0 1 1 0 0 1 0 . 1 1 1 0 0 1 0 1 (1),规格化处理尾数运算结果的两个符号位不一致,所以未规格化,应做右规

46、处理,即尾数算术右移1位,阶码加1,得 11101,11.01110010 (11)规格化处理后,形成的保护位为11。舍入处理由于尾数是负数的补码,且保护位为11,按0舍1入法,应作“入”处理,即1 1 . 0 1 1 1 0 0 1 0+ 11 1 . 0 1 1 1 0 0 1 1所以,舍入处理后的结果为:11101,11.01110011。判溢出由于阶码的两个符号位相同(为11),所以阶码未溢出,运算结果正确,即 x + y浮 = 11101,11.01110011 x + y = 2-011(-0.10001101),3.5.2 浮点乘法、除法运算 设有两个规格化浮点数 x 和 y ,分别表示为则浮点乘法和除法运算的规则是浮点乘法与除法运算涉及尾数相乘与相除、阶码相加与相减,这实际上都是定点数之间的运算。,实际的计算机中,浮点数的阶码较多采用移码表示,下面介绍移码加减运算的方法。直接移码加、减法。运算规则如下: a移 b移 = a b补由于移码与补码仅符号相反,因此,在未产生溢出时,只要将运算结果a b补 的符号取反,即可得到用移码表示的运算结果a b移 。为了便于溢出判断,可采用双符号位移码进行运算,且规定最高符号位恒取0,则溢出判断规则是:当运算结果a b补 的两个符号不同时,无溢出,否则有溢出;且当a b补 的两个符号为00时,产生下溢,为11时,产生上溢。,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报