版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 2 第第4 4章章 运算方法与运算器运算方法与运算器 定点数的加减运算及实现定点数的加减运算及实现4.14.1 定点运算器的组成与结构定点运算器的组成与结构 定点数的乘法运算及实现定点数的乘法运算及实现 4.24.2 定点数除法运算及实现定点数除法运算及实现 4.34.3 4.44.4 浮点运算及运算器浮点运算及运算器 4.54.5 浮点运算器举例浮点运算器举例 4.64.6 本章小结本章小结 3 4.1 4.1 定点数的加减运算及实现定点数的加减运算及实现 补码加减运算与运算器补码加减运算与运算器 机器数的移位运算机器数的移位运算 移码加减运算与判溢移码加减运算与判溢 十进制加法运算十进制
2、加法运算 一一 二二 三三 四四 4 一、补码加减运算与运算器一、补码加减运算与运算器 补码加减运算方法补码加减运算方法 补码加减运算的溢出判断补码加减运算的溢出判断 二二 补码加减运算器的实现补码加减运算器的实现 三三 一一 5 1 1、补码加减运算方法、补码加减运算方法 v补码的加减运算的公式是补码的加减运算的公式是: X+YX+Y补 补 = X = X补 补 + Y + Y补 补 X-YX-Y补 补 = X = X补 补 + -Y + -Y补 补 v特点:特点: 使用补码进行加减运算,使用补码进行加减运算,符号位和数值位一样参符号位和数值位一样参 加运算加运算。 补码的减法可以用加法来实
3、现补码的减法可以用加法来实现,任意两数之差的,任意两数之差的 补码等于被减数的补码与减数相反数的补码之和补码等于被减数的补码与减数相反数的补码之和 。 6 求补运算:求补运算:YY补 补 -Y-Y补 补 v 求补规则:求补规则:将将YY补 补包括符号位在内每一位取反,末 包括符号位在内每一位取反,末 位加位加1 1。 v 若若YY补 补 = Y0 = Y0,Y1Y1Yn Yn ,则:,则: 1YYY-Y n10 补补 1YYY-Y n10 00 . 0 补补 7 补码加减运算举例补码加减运算举例 v例:已知例:已知X=+1011X=+1011,Y=-0100Y=-0100,用补码计算,用补码计
4、算X+YX+Y和和X-YX-Y。 写出补码:写出补码: XX补 补 =0,1011 Y =0,1011 Y补 补 =1,1100 =1,1100 -Y -Y补 补 =0,0100 =0,0100 计算:计算: 8 2 2、补码加减运算的溢出判断、补码加减运算的溢出判断 v 当运算结果超出机器数的表示范围时,称为溢出。计 算机必须具备检测运算结果是否发生溢出的能力,否 则会得到错误的结果。 v 对于加减运算,可能发生溢出的情况:同号(两数) 相加,或者异号(两数)相减。 v 确定发生溢出的情况: 正数相加,且结果符号位为1; 负数相加,且结果符号位为0; 正数负数,且结果符号位为1; 负数正数,
5、且结果符号位为0; 9 常用的判溢方法(补码加减运算)常用的判溢方法(补码加减运算) v (1 1)单符号位判溢方法)单符号位判溢方法2 2 当当最高有效位产生的进位和符号位产生的进位不最高有效位产生的进位和符号位产生的进位不 同同时,加减运算发生了溢出。时,加减运算发生了溢出。 V VC C1 1CCf f v (2 2)双符号位判溢方法)双符号位判溢方法 X X和和Y Y采用双符号位补码参加运算,正数的双符号采用双符号位补码参加运算,正数的双符号 位为位为0000,负数的双符号位为,负数的双符号位为1111;当;当运算结果的两运算结果的两 位符号位符号S Sf1 f1 S Sf2 f2不同
6、时 不同时(0101或或1010),发生溢出。),发生溢出。 V V S Sf1 f1 S Sf2 f2= X = Xf f Y Yf f C Cf f S Sf f S Sf1 f1 S Sf2 f2=01 =01,则正溢出;,则正溢出;S Sf1 f1 S Sf2 f2=10 =10,则负溢出。,则负溢出。 10 双符号位判溢方法举例双符号位判溢方法举例 v 例:用补码计算例:用补码计算X+YX+Y和和X-YX-Y (1 1)X=+1000X=+1000,Y=+1001Y=+1001 (2 2)X=-1000X=-1000,Y=1001Y=1001 Sf1 Sf2=01,正溢出正溢出Sf1
7、 Sf2=11,无溢出无溢出 Sf1 Sf2=00,无溢出无溢出Sf1 Sf2=10,负,负溢出溢出 11 3 3、补码加减运算器、补码加减运算器 12 3 3、补码加减运算器的实现、补码加减运算器的实现 v 核心部件核心部件:一个普通的二进制并行加法器。:一个普通的二进制并行加法器。 v A A:累加器,存放:累加器,存放XX补 补; ;B B:寄存器,存放:寄存器,存放YY补 补; ; v 取反电路取反电路: : v =0 =0时,补码加法器,将时,补码加法器,将B B寄存器直接送入并寄存器直接送入并 行加法器行加法器; ; v =1 =1时,补码减法器,将时,补码减法器,将B B送入并行
8、加法器,送入并行加法器, 同时,并行加法器的最低位产生进位,即同时,并行加法器的最低位产生进位,即B B取反加取反加1 1, 此时并行加法器的运算相当于此时并行加法器的运算相当于AA补 补加 加-B-B补 补 ,完成减 ,完成减 法运算。法运算。 SUBADD/ SUBADD / 13 二、机器数的移位运算二、机器数的移位运算 v二进制数据(真值)每相对于小数点二进制数据(真值)每相对于小数点左移一位,相当左移一位,相当 于乘以于乘以2 2;每相对于小数点;每相对于小数点右移一位,相当于除以右移一位,相当于除以2 2。 v计算机中的移位运算分为:计算机中的移位运算分为: 1 1、逻辑移位:、逻
9、辑移位:将移位的数据视为无符号数据,各将移位的数据视为无符号数据,各 数据位在位置上发生了变化,数据位在位置上发生了变化,导致无符号数据的数导致无符号数据的数 值(无正负)放大或缩小值(无正负)放大或缩小。 2 2、算术移位:、算术移位:将移位的数据视为带符号数据(机将移位的数据视为带符号数据(机 器数)。算术移位的结果,在器数)。算术移位的结果,在数值的绝对值上进行数值的绝对值上进行 放大或缩小,同时,符号位必须要保持不变放大或缩小,同时,符号位必须要保持不变。 3 3、循环移位:、循环移位:所有的数据位在自身范围内进行左所有的数据位在自身范围内进行左 移或者右移,移或者右移,左移时最高位移
10、入最低位,右移时最左移时最高位移入最低位,右移时最 低位移入最高位。低位移入最高位。 14 补码的算术移位补码的算术移位 v 算术左移:算术左移:符号位不变,高位移出,低位补符号位不变,高位移出,低位补0 0。 为保证补码算术左移时不发生溢出,为保证补码算术左移时不发生溢出,移位的数据移位的数据 最高有效位必须与符号位相同最高有效位必须与符号位相同。 在不发生溢出的前提下,在不发生溢出的前提下,用硬件实现补码的算术用硬件实现补码的算术 左移时,直接将数据最高有效位移入符号位,不左移时,直接将数据最高有效位移入符号位,不 会改变机器数的符号。会改变机器数的符号。 v 算术右移:算术右移:符号位不
11、变,低位移出,符号位不变,低位移出,高位正数补高位正数补0 0, 负数补负数补1 1,即高位补符号位。即高位补符号位。 15 补码的算术移位举例补码的算术移位举例 v例:设例:设X X0.1001,Y0.1001,Y0.01010.0101,求,求 XX补 补 ? 2X2X补 补 ? X/2X/2补 补? ? YY补 补 ? 2Y2Y补 补 ? Y/2Y/2补 补? ? 16 三、移码加减运算与判溢三、移码加减运算与判溢 v 移码和移码计算移码和移码计算 v 移码和补码混合计算移码和补码混合计算 v 移码运算结果判溢:移码运算结果判溢: 17 三、移码加减运算与判溢三、移码加减运算与判溢 v
12、移码运算结果溢出的判断条件是:移码运算结果溢出的判断条件是: 当结果的最高符号位当结果的最高符号位Sf1=1Sf1=1时溢出,时溢出,Sf1=0Sf1=0时结果时结果 正确。正确。 Sf1 Sf2=10Sf1 Sf2=10时,结果正溢出;时,结果正溢出; Sf1 Sf2=11Sf1 Sf2=11时,结果负溢出。时,结果负溢出。 由于移码运算用于浮点数的阶码,当运算结果正由于移码运算用于浮点数的阶码,当运算结果正 溢出时,浮点数溢出时,浮点数上溢上溢;当运算结果负溢出时,浮;当运算结果负溢出时,浮 点数点数下溢,当作机器零处理下溢,当作机器零处理。 18 四、四、十进制加法运算十进制加法运算 v
13、 计算机中的十进制加法器通常采用计算机中的十进制加法器通常采用BCDBCD码设计,在二码设计,在二 进制加法器的基础上,加上适当的校正电路,可以实进制加法器的基础上,加上适当的校正电路,可以实 现现BCDBCD码的加法器。码的加法器。 v 对于对于8421BCD8421BCD码来说,当相加的两数之和码来说,当相加的两数之和S9S9时,加时,加6 6 校正;当校正;当S9S9时,且无进位时,结果正确,不需校正。时,且无进位时,结果正确,不需校正。 19 4.2 4.2 定点数的乘法运算及实现定点数的乘法运算及实现 原码乘法及实现原码乘法及实现 补码乘法及实现补码乘法及实现 阵列乘法器阵列乘法器
14、一一 二二 三三 20 一、原码乘法及实现一、原码乘法及实现 v 由于计算机的软硬件在逻辑上具有一定的等价性,因由于计算机的软硬件在逻辑上具有一定的等价性,因 此实现乘除法运算,可以有三种方式:此实现乘除法运算,可以有三种方式: v.用软件实现。用软件实现。 硬件上:硬件上:设计简单,没有乘法器和除法器。设计简单,没有乘法器和除法器。 指令系统:指令系统:没有乘除指令,但有加没有乘除指令,但有加/ /减法和移位指减法和移位指 令令 实现:实现:乘除运算通过编制一段子程序来实现乘除运算通过编制一段子程序来实现 算法:算法:程序中运用串行乘除运算算法,循环累加、程序中运用串行乘除运算算法,循环累加
15、、 右移指令右移指令乘法,循环减、左移指令乘法,循环减、左移指令除法。除法。 运算速度:运算速度:较慢。较慢。 适用场合适用场合:单片机。:单片机。 21 一、原码乘法及实现一、原码乘法及实现 v.用硬件乘法器和除法器实现。用硬件乘法器和除法器实现。 硬件上:硬件上:设置有并行加法器、移位器和若干循环、设置有并行加法器、移位器和若干循环、 计数控制逻辑电路搭成的计数控制逻辑电路搭成的串行乘除法器。串行乘除法器。 指令系统:指令系统:具有乘除法指令。具有乘除法指令。 实现:实现:乘除运算通过乘除运算通过微程序一级(硬件微程序)微程序一级(硬件微程序) 来实现。来实现。 算法:算法:在微程序中在微
16、程序中依据串行乘除运算算法依据串行乘除运算算法,循环累,循环累 加、右移指令加、右移指令乘法,循环减、左移指令乘法,循环减、左移指令除法。除法。 运算速度:运算速度:有所提高,但硬件设计也相对复杂。有所提高,但硬件设计也相对复杂。 适用场合适用场合:低性能:低性能CPUCPU。 22 一、原码乘法及实现一、原码乘法及实现 v.用高速的阵列乘法器和阵列除法器来实现。用高速的阵列乘法器和阵列除法器来实现。 硬件上:硬件上:设置有专用的、并行运算的设置有专用的、并行运算的阵列乘法器和阵列乘法器和 阵列除法器阵列除法器。 指令系统:指令系统:具有乘除法指令。具有乘除法指令。 实现:实现:完全完全通过硬
17、件通过硬件来实现。来实现。 算法:算法:并行乘并行乘/ /除法。除法。 运算速度:运算速度:很快,但硬件设计相当复杂。很快,但硬件设计相当复杂。 适用场合适用场合:高性能:高性能CPUCPU。 23 一、原码乘法及实现一、原码乘法及实现 v1 1、手工乘法算法、手工乘法算法 手工计算手工计算1011101111011101,步骤:,步骤: 手工算法:对应每手工算法:对应每1 1位乘数求得位乘数求得1 1项位项位 积,并将位积逐位左移,然后将所有积,并将位积逐位左移,然后将所有 的位积一次相加,得到最后的乘积。的位积一次相加,得到最后的乘积。 乘法的机器算法:从乘数的最低位开乘法的机器算法:从乘
18、数的最低位开 始,每次根据乘数位得到其始,每次根据乘数位得到其位积位积,乘,乘 数位为数位为0 0,位积为,位积为0 0,乘数位为,乘数位为1 1,则,则 位积为被乘数;用位积为被乘数;用原部分积右移原部分积右移1 1位位 加上本次位积加上本次位积,得新部分积;初始部,得新部分积;初始部 分积为分积为0 0。 24 二、原码乘法算法二、原码乘法算法 v2 2、原码一位乘法算法:、原码一位乘法算法: 假设假设XX原 原=X =XS S X X1 1 X X2 2 X Xn n , YY原 原=Y =YS S Y Y1 1 Y Y2 2 Y Yn n , P=X P=XY Y,P PS S是积的符
19、号:是积的符号: 符号位单独处理符号位单独处理 Ps=Xs Ps=Xs Ys Ys 绝对值进行数值运算绝对值进行数值运算 |P|=|X|P|=|X|* *|Y|Y| v例如:例如:X=+1011X=+1011,Y=-1101Y=-1101,用原码一位乘法计算,用原码一位乘法计算 P=XP=XY Y。 25 举例举例 XX原 原=0 =0,1011 1011 YY原 原=1 =1,11011101 Ps=XsPs=XsYsYs =01=1 =01=1 |P| = |X|P| = |X|Y|Y| 26 一、原码乘法及实现一、原码乘法及实现 控制逻辑电路控制逻辑电路 3 3、原码乘法的硬件、原码乘法
20、的硬件实现实现 27 原码一位乘法原码一位乘法000001101 0 0 0 0 0 1 1 0 1 为各寄存器给初值为各寄存器给初值 0 1 0 1 1 28 第一次求部分积第一次求部分积000001101 0 0 0 0 0 1 1 0 1 0 1 0 1 1 0 1 0 1 1 010111101 加运算:加运算:|X| 29 000001101 0 1 0 1 1 1 1 0 1 0 1 0 1 1 0 0 1 0 1 1 1 1 0 010111101 右移右移1位位 001011110 第一次求部分积第一次求部分积 30 000001101 0 0 1 0 1 1 1 1 0 0
21、1 0 1 1 0 0 1 0 1 1 1 1 0 010111101 加运算加运算:0 001011110 001011110 第二次求部分积第二次求部分积 31 000001101 0 0 1 0 1 1 1 1 0 0 1 0 1 1 0 0 0 1 0 1 1 1 1 010111101 右移右移1位位 001011110 001011110 000101111 第二次求部分积第二次求部分积 32 000001101 0 0 0 1 0 1 1 1 1 0 1 0 1 1 0 1 1 0 1 010111101 加运算:加运算:|X| 001011110 001011110 00010
22、1111 011011111 第三次求部分积第三次求部分积 33 000001101 0 1 1 0 1 1 1 1 1 0 1 0 1 1 0 0 1 1 0 1 1 1 1 010111101 右移右移1位位 001011110 001011110 000101111 011011111 001101111 第三次求部分积第三次求部分积 34 000001101 0 0 1 1 0 1 1 1 1 0 1 0 1 1 1 0 0 0 1 010111101 加运算:加运算:|X| 001011110 001011110 000101111 011011111 001101111 10001
23、1111 第四次求部分积第四次求部分积 35 000001101 1 0 0 0 1 1 1 1 1 0 1 0 1 1 0 1 0 0 0 1 1 1 1 010111101 右移右移1 1位位 001011110 001011110 000101111 011011111 001101111 010001111 低位积低位积 高位积高位积 符号位异或符号位异或 结果为:结果为:1 1,10001111,10001111 第四次求部分积第四次求部分积 36 原码一位乘法流程原码一位乘法流程 : 37 二、补码乘法及实现二、补码乘法及实现 v 1 1、补码乘法算法、补码乘法算法 v (1 1)
24、补码一位乘法)补码一位乘法校正法校正法 假设假设XX补 补 = X = X0 0 .X .X1 1X Xn n , YY补 补 = Y = Y0 0 .Y .Y1 1Y Yn n , 则有:则有: XXYY补 补 = X = X补 补( (0 0.Y.Y1 1Y Yn n)+ + Y Y0 0-X-X补 补 38 二、补码乘法及实现二、补码乘法及实现 证明如下:证明如下: 当被乘数当被乘数X X的符号任意,的符号任意,Y Y为正数时:为正数时: 根据补码定义有:根据补码定义有: XX补 补 =2 + X = 2 =2 + X = 2n+1 n+1+ X + X (mod 2mod 2) YY补
25、 补 =Y =Y 则:则: XX补 补Y Y补 补 = =( (2 2n+1 n+1+ X + X)Y = 2Y = 2n+1 n+1Y + X Y + XY Y = 2 = 2 n+1 n+1( (0 .Y0 .Y1 1Y Yn n)+ X+ XY Y = 2= 2(Y Y1 1Y Yn n)+ + X XY Y = = 2 2 + + X XY Y (mod 2mod 2) = X= XY Y 补 补 即:即:Y Y 0 0 时,时,XXY Y 补补 = X= X补 补Y Y补 补 =X=X补 补( (0 0.Y.Y1 1Y Yn n) 39 二、补码乘法及实现二、补码乘法及实现 当被乘数
26、当被乘数X X的符号任意,的符号任意,Y Y为负数时:为负数时: YY补补 = 2 + Y = 1 .Y= 2 + Y = 1 .Y1 1Y Yn n则:则: Y = Y = YY补 补 2 = 2 = 0 0.Y.Y1 1Y Yn n -1 -1 XXY Y 补 补 = = X X0 0.Y.Y1 1Y Yn n X X 补 补 = = X X0 0.Y.Y1 1Y Yn n 补 补 + +X X 补 补 因为因为0 0.Y.Y1 1Y Yn n 0 0,所以:,所以: X X0 0.Y.Y1 1Y Yn n 补 补 = =X X补 补( (0 0.Y.Y1 1Y Yn n) 所以:所以:Y
27、 Y0=0=0,商的第,商的第i i位上位上1 1,并执行操作:,并执行操作: 余数左移一位,再减余数左移一位,再减|Y|Y|,得,得R Ri+1 i+1,则: ,则: R Ri i 1 1=2R =2Ri i|Y|Y| 57 一、原码除法及实现一、原码除法及实现 如果如果R Ri i00E0,则,则E EX XEEY Y,M MY Y每右移一位,每右移一位,E EY Y+1+1,直至,直至 E EY Y=E=EX X 。 若若E0E0,则,则E EX XEEY Y,M MX X每右移一位,每右移一位,E EX X+1+1,直至,直至 E EX X=E=EY Y 。 v (3 3)尾数相加减)
28、尾数相加减 83 浮点浮点加减运算步骤加减运算步骤 v (4 4)结果规格化:)结果规格化:尾数运算的结果可能出现两种非尾数运算的结果可能出现两种非 规格化情况:规格化情况: A A、尾数溢出:需要右规(、尾数溢出:需要右规(1 1次),即尾数右移次),即尾数右移1 1位,位, 阶码阶码1 1 B B、| |尾数尾数| 2| 0E=30,将,将M MY Y右移右移3 3位,位,E EY Y加加3 3: YY浮 浮 = 00 = 00,001 00.0001100 001 00.0001100 (101101) 一、一、浮点浮点加减运算加减运算 88 v (2 2)尾数相加:)尾数相加: MMZ
29、 Z 补 补 = = 11.100000111.1000001(101101) v (3 3)结果规格化:左规一位,无溢出:)结果规格化:左规一位,无溢出: MMZ Z 补 补 = = 11.000001111.0000011(0101) EEZ Z 补 补 = 00 = 00,001 + 11001 + 11,111= 00111= 00,000000 v (4 4)舍入:按照)舍入:按照0 0舍舍1 1入法,尾数多余位舍去入法,尾数多余位舍去 v 结果为:结果为:ZZ浮 浮 = 0 = 0,000 1.0000011000 1.0000011 一、一、浮点浮点加减运算加减运算 89 二、浮
30、点乘法运算二、浮点乘法运算 v假设两个浮点数假设两个浮点数X X和和Y Y: X E X 2MX Y E Y 2MY )E(E YX YX 2)MM(YXZ 90 v (1 1)0 0操作数检查操作数检查 v (2 2)阶码相加)阶码相加:阶码相加可以采用补码或者移码:阶码相加可以采用补码或者移码 的定点整数加法,同时对相加结果判溢,一旦发生的定点整数加法,同时对相加结果判溢,一旦发生 正溢出,则需报告溢出,若发生负溢出,则将结果正溢出,则需报告溢出,若发生负溢出,则将结果 置为机器零。置为机器零。 v (3 3)尾数相乘)尾数相乘 v (4 4)结果规格化)结果规格化:可能需要左规:可能需要
31、左规1 1位位 v (5 5)舍入处理:)舍入处理:尾数相乘的结果长度是尾数长度尾数相乘的结果长度是尾数长度 的两倍,必须对低位舍入。的两倍,必须对低位舍入。 浮点乘法运算步骤浮点乘法运算步骤 91 浮点数乘法运算流程浮点数乘法运算流程 92 二、浮点乘法运算(举例)二、浮点乘法运算(举例) v一浮点数表示格式为:一浮点数表示格式为:1010位浮点数,阶码位浮点数,阶码4 4位,包含位,包含 1 1位阶符,用移码表示,尾数位阶符,用移码表示,尾数6 6位,包含位,包含1 1位数符,用位数符,用 补码表示,阶码在前,尾数(包括数符)在后,已补码表示,阶码在前,尾数(包括数符)在后,已 知:知:
32、X=X=(-0.11001-0.11001)2 2011 011 Y Y=0.10011=0.100112 2-001 -001 , ,求求Z=XZ=XY Y。 要求阶码用移码计算,尾数用补码要求阶码用移码计算,尾数用补码BoothBooth算法计算。算法计算。 v解:按照浮点数的格式分别写出它们的表示形式,解:按照浮点数的格式分别写出它们的表示形式, 为计算方便,阶码采用双符号位移码,尾数采用双为计算方便,阶码采用双符号位移码,尾数采用双 符号位补码:符号位补码: vXX浮 浮 = 01 = 01,011 11.00111011 11.00111 vYY浮 浮 = 00 = 00,111 0
33、0.10011111 00.10011 93 二、浮点乘法运算(举例)二、浮点乘法运算(举例) v阶码相加阶码相加 EZEZ移 移 = EX = EX移 移 +EY +EY补 补 = = 0101,011 + 11011 + 11,111 = 111 = 0101,010010 结果无溢出,结果无溢出,EZEZ移 移 =1 =1, 010010。 v尾数相乘尾数相乘 采用补码采用补码BoothBooth算法计算算法计算 MX MX MYMY补 补,首先写出下 ,首先写出下 例数据:例数据: MXMX补 补 = 11.00111 = 11.00111 MYMY补 补 = 0.10011 = 0.
34、10011 -MX-MX补 补 = 00.11001 = 00.11001 MZMZ补 补= 1.10001 00101 = 1.10001 00101 94 二、浮点乘法运算(举例)二、浮点乘法运算(举例) v结果规格化结果规格化 MZMZ左规一次得:左规一次得:MZ MZ 补 补= 1.00010 01010 = 1.00010 01010 EZEZ减减1 1得:得: EZEZ移 移 = 01 = 01,010 + 11010 + 11,111 =01111 =01,001001 v舍入舍入 对尾数对尾数MZMZ进行进行0 0舍舍1 1入,最后得入,最后得 ZZ浮 浮 = 1 = 1,00
35、1 1.00010001 1.00010 95 三、浮点除法运算三、浮点除法运算 v假设两个浮点数假设两个浮点数X X和和Y Y: X E X 2MX Y E Y 2MY ) )( YX E(E YX 2MMYXZ 96 v(1 1)0 0操作数检查操作数检查 当除数为当除数为0 0,则报告除法出错,或者结果(商)无,则报告除法出错,或者结果(商)无 穷大;当被除数为穷大;当被除数为0 0,则商为,则商为0 0。 v(2 2)阶码相减)阶码相减 阶码相减的结果也可能溢出,若发生正溢出,则需阶码相减的结果也可能溢出,若发生正溢出,则需 报告浮点数溢出,若发生负溢出,则将结果置为机报告浮点数溢出,
36、若发生负溢出,则将结果置为机 器零。器零。 v(3 3)尾数相除)尾数相除 v(4 4)结果规格化)结果规格化 v(5 5)舍入处理)舍入处理 浮点数除法运算步骤浮点数除法运算步骤 97 浮点数除法运算流程浮点数除法运算流程 98 三、浮点除法运算(举例)三、浮点除法运算(举例) v一浮点数表示格式为:一浮点数表示格式为:1212位浮点数,阶码位浮点数,阶码4 4位,包含位,包含 1 1位阶符,尾数位阶符,尾数8 8位,包含位,包含1 1位数符,用补码表示,阶位数符,用补码表示,阶 码在前,尾数(包括数符)在后,已知:码在前,尾数(包括数符)在后,已知: X=X=(-0.1001011-0.1
37、001011)2 2001 001 Y Y=0.1100101=0.11001012 2-010 -010求 求 Z=XZ=XY Y。要求阶码用移码计算,尾数用原码加减交。要求阶码用移码计算,尾数用原码加减交 替除法计算。替除法计算。 v解:按照浮点数的格式分别写出它们的表示形式为:解:按照浮点数的格式分别写出它们的表示形式为: XX浮 浮 = 1 = 1,011 1.00111 Y011 1.00111 Y浮 浮 = 0 = 0,111 0.10011111 0.10011 v阶码相减阶码相减 EZEZ移 移 = EX = EX移 移 +-EY +-EY补 补 = 01 = 01,011 +
38、 00011 + 00,001 = 01001 = 01, 100100 99 三、浮点除法运算(举例)三、浮点除法运算(举例) v尾数相除尾数相除 采用原码加减交替法计算采用原码加减交替法计算|MX| |MX| |MY|MY|,首先写出下例数据:,首先写出下例数据: |MX| = 00.11001 |MY| = |MX| = 00.11001 |MY| = 00.10011 00.10011 -|MY|-|MY|补 补 = 11.01101 = 11.01101 |MZ| =|MX| |MZ| =|MX| |MY| = |MY| = 1.01010 1.01010 100 三、浮点除法运算(
39、举例)三、浮点除法运算(举例) v 结果规格化结果规格化 由于由于|MX| |MY|MX| |MY|,所以,所以|MZ|1|MZ|1,必须右规一位,得,必须右规一位,得 |MZ| = 0.10101 0|MZ| = 0.10101 0 EZEZ加加1 1得:得:EZEZ移移 = 01= 01,100 + 00100 + 00,001 = 01001 = 01, 101101 v 舍入舍入 对对|MZ|MZ|进行进行0 0舍舍1 1入,得入,得|MZ| = 0.10101 MZ|MZ| = 0.10101 MZ原原 = = 1.10101 MZ1.10101 MZ补补 = 1.01011= 1.
40、01011 最后:最后:ZZ浮浮 = 1= 1,101 1.01011101 1.01011 101 四、浮点运算器四、浮点运算器 102 4.6 4.6 浮点运算器举例浮点运算器举例 80X8780X87算术协处理器算术协处理器 浮点运算流水线浮点运算流水线 一一 二二 103 一、一、 80X8780X87算术协处理器算术协处理器 v 算术协处理器是一个特殊用途的微处理器,专门是为算术协处理器是一个特殊用途的微处理器,专门是为 有效地执行算术或超越函数的运算而设计的。有效地执行算术或超越函数的运算而设计的。 v 微处理器截取和执行常规指令系统中的指令,而协处微处理器截取和执行常规指令系统中
41、的指令,而协处 理器只截取和执行协处理器指令。协处理器指令实际理器只截取和执行协处理器指令。协处理器指令实际 上是上是换码(换码(ESCESC)指令)指令,微处理器使用这些指令为协,微处理器使用这些指令为协 处理器产生一个内存地址,使得协处理器可以执行协处理器产生一个内存地址,使得协处理器可以执行协 处理器指令处理器指令 104 8038780387的主要性能和结构的主要性能和结构 8038780387的性能的性能 可与配套的可与配套的CPUCPU芯片异步并行工作芯片异步并行工作 支持多种数据类型支持多种数据类型 S为符号位,0代表正,1代表负。3种浮点数均符合IEEE754标准, 即阶码的底
42、为2,阶码值用移码表示,尾数用原码表示 105 8038780387的主要性能和结构的主要性能和结构 具有高性能的具有高性能的8080位字长的体系结构位字长的体系结构 具有出色的内部出错管理功能,能检测出具有出色的内部出错管理功能,能检测出6 6种错误种错误 可在可在80386/8048680386/80486微机系统的两种工作模式下运行微机系统的两种工作模式下运行 扩展了扩展了80386/8048680386/80486的指令系统的指令系统 106 8038780387的主要性能和结构的主要性能和结构 v8038780387的结构的结构 分为两个主要部分:分为两个主要部分:控制单元控制单元和
43、和数字执行单元数字执行单元。 控制单元(控制单元(Control UnitControl Unit,CUCU)将协处理器连接)将协处理器连接 到微处理器系统数据总线上。微处理器和协处理到微处理器系统数据总线上。微处理器和协处理 器均监视指令流,如果为器均监视指令流,如果为ESCESC指令,则由协处理指令,则由协处理 器予以执行。器予以执行。 数字执行单元(数字执行单元(Numeric Execution unitNumeric Execution unit,NEUNEU) 负责执行所有协处理器指令。负责执行所有协处理器指令。 NEUNEU中有一个由中有一个由8 8个个8080位寄存器构成的堆栈
44、,位寄存器构成的堆栈, 用于存储算术指令的操作数和结果。用于存储算术指令的操作数和结果。 NEUNEU中还包含状态寄存器、控制寄存器、标记中还包含状态寄存器、控制寄存器、标记 寄存器和异常指针寄存器。寄存器和异常指针寄存器。 FSTSWAXFSTSWAX指令是协处理器允许通过指令是协处理器允许通过AXAX寄存器和寄存器和 微处理器直接通信的唯一指令。除了微处理器直接通信的唯一指令。除了80878087, 所有新协处理器都包含该指令。所有新协处理器都包含该指令。 107 8038780387内部结构框图内部结构框图 108 寄存器堆栈寄存器堆栈 v 8038780387包含包含8 8个寄存器个寄
45、存器,每个为,每个为8080位位宽,它们首尾相宽,它们首尾相 接,组成一个接,组成一个“先进后出先进后出”的寄存器堆栈。这些堆的寄存器堆栈。这些堆 栈寄存器中总是包含一个栈寄存器中总是包含一个8080位的扩展精度浮点数。位的扩展精度浮点数。 数据只有驻留在内存时才可能是任何其他格式。当数据只有驻留在内存时才可能是任何其他格式。当 数据从内存中移到协处理器的寄存器堆栈中时,协数据从内存中移到协处理器的寄存器堆栈中时,协 处理器将这些带符号的整数、处理器将这些带符号的整数、BCDBCD数、单精度或双精数、单精度或双精 度数转换为扩展精度浮点数。度数转换为扩展精度浮点数。 v 8 8个寄存器编号为个
46、寄存器编号为0-70-7,处于栈顶的寄存器称为栈顶,处于栈顶的寄存器称为栈顶 寄存器,它的编号由寄存器,它的编号由状态寄存器的状态寄存器的TOPTOP字段字段指出。在指出。在 协处理器指令中,用协处理器指令中,用STST表示栈顶寄存器,用表示栈顶寄存器,用STST(i i) (i=1-7i=1-7)访问相对于栈顶寄存器偏移量为)访问相对于栈顶寄存器偏移量为i i的寄存的寄存 器,即器,即i i是偏移量,而不是寄存器实际的编号。是偏移量,而不是寄存器实际的编号。 109 状态寄存器状态寄存器 v状态寄存器反映协处理器所有指令的运行情况。状态寄存器反映协处理器所有指令的运行情况。 只在80187
47、以上的更高 型号中使用 110 状态寄存器状态寄存器 B B忙位忙位(busy bitbusy bit)表明协处理器正忙于执行一项)表明协处理器正忙于执行一项 任务,通过检测状态寄存器或者使用任务,通过检测状态寄存器或者使用FWAITFWAIT指令均指令均 可测试忙位。由于较新的协处理器自动与微处理器可测试忙位。由于较新的协处理器自动与微处理器 同步,所以在执行其他协处理器任务之前不必测试同步,所以在执行其他协处理器任务之前不必测试 忙标志。忙标志。 C3C3C0C0 条件码位条件码位(condition code bit(condition code bit),表明了),表明了 协处理器的条
48、件。协处理器的条件。 TOPTOP栈顶栈顶(top-of-stacktop-of-stack,STST)位表示当前寻)位表示当前寻 址为栈顶的寄存器,通常是寄存器址为栈顶的寄存器,通常是寄存器STST(0 0)。 ESES错误汇总错误汇总(error summaryerror summary)位,当任何一)位,当任何一 个非屏蔽的错误位(个非屏蔽的错误位(PEPE、UEUE、OEOE、ZEZE、DEDE或或IEIE)被)被 置位时,则置位时,则ESES被置位。在被置位。在80878087协处理器中该位也可协处理器中该位也可 引起协处理器中断。但从引起协处理器中断。但从8018780187开始,
49、不再有协处开始,不再有协处 理器中断。理器中断。 111 状态寄存器状态寄存器 SFSF堆栈标志堆栈标志(stack flagstack flag)位用于区分堆栈)位用于区分堆栈 上溢和下溢的非法操作。当该位被置上溢和下溢的非法操作。当该位被置1 1时,再根据时,再根据 标志位标志位B9B9(C1C1)来区分上溢和下溢两种情况。)来区分上溢和下溢两种情况。 PEPE精度错误精度错误(precision errorprecision error)表明结果或)表明结果或 操作数超过了设定的精度范围。操作数超过了设定的精度范围。 UEUE下溢错误下溢错误(underflow errorunderfl
50、ow error)表明一个非)表明一个非 0 0的结果太小,以致于不能用由控制字选择的当前的结果太小,以致于不能用由控制字选择的当前 精度来表示。精度来表示。 OEOE上溢错误上溢错误(overflow erroroverflow error)表明结果太)表明结果太 大而不能被表示出来,如果此错误被屏蔽,则协处大而不能被表示出来,如果此错误被屏蔽,则协处 理器对上溢错误就会产生一个无穷大。理器对上溢错误就会产生一个无穷大。 112 状态寄存器状态寄存器 ZEZE被零除错误被零除错误(zero errorzero error)表明当被除数)表明当被除数 是非无穷大和非零时,除数是零。是非无穷大和
51、非零时,除数是零。 DEDE非规格化操作数错误非规格化操作数错误(denormalized denormalized errorerror)表明至少有一个操作数是非规格化的。)表明至少有一个操作数是非规格化的。 IEIE非法操作错误非法操作错误(Invalid errorInvalid error)表明堆栈)表明堆栈 有上溢或下溢错误,是不确定的形式(有上溢或下溢错误,是不确定的形式(0 00 0、+ + 和和- -等),或者使用了等),或者使用了NANNAN作为操作数。此标志表明作为操作数。此标志表明 诸如对负数开平方等类似的错误。诸如对负数开平方等类似的错误。 113 状态寄存器状态寄存器
52、 v 执行执行FSTSWFSTSW指令就可以访问状态寄存器,此指令将状指令就可以访问状态寄存器,此指令将状 态寄存器中的内容存人内存的一个字单元中。在态寄存器中的内容存人内存的一个字单元中。在 8018780187或或8018780187以上的协处理器中,以上的协处理器中,FSTSW AXFSTSW AX指令可将指令可将 状态寄存器中的内容直接复制到微处理器的状态寄存器中的内容直接复制到微处理器的AXAX寄存器寄存器 中。一旦状态寄存器的状态被存储到内存或中。一旦状态寄存器的状态被存储到内存或AXAX寄存器寄存器 中,则可以使用常规软件检测状态寄存器中的各位,中,则可以使用常规软件检测状态寄存
53、器中的各位, 譬如使用以下两种方法测试状态寄存器的各位。一种譬如使用以下两种方法测试状态寄存器的各位。一种 方法是使用方法是使用TESTTEST指令来测试状态寄存器的各位,另一指令来测试状态寄存器的各位,另一 种方法是使用种方法是使用SAHFSAHF指令将状态寄存器中最左边的指令将状态寄存器中最左边的8 8位位 传送到微处理器的标志寄存器中。传送到微处理器的标志寄存器中。 v 协处理器和微处理器之间的通信在协处理器和微处理器之间的通信在8018780187和和8028780287中是中是 通过通过I IO O端口端口00FAH00FAH00FFH00FFH实现的,而在实现的,而在8038780
54、387 Pentium4Pentium4中是通过中是通过I IO O端口端口800000FAH800000FAH800000FFH800000FFH实实 现的。现的。 114 控制寄存器控制寄存器 v 控制寄存器包括精度控制、舍入控制和无穷大控制,控制寄存器包括精度控制、舍入控制和无穷大控制, 它也可以屏蔽或者不屏蔽与状态寄存器最右边它也可以屏蔽或者不屏蔽与状态寄存器最右边6 6位对位对 应的异常位。应的异常位。FLDCWFLDCW指令用于给控制寄存器赋值。指令用于给控制寄存器赋值。 v 控制寄存器中各位及各个组合位的功能:控制寄存器中各位及各个组合位的功能: ICIC无穷大控制(无穷大控制(
55、infinity controlinfinity control) RCRC舍入控制(舍入控制(rounding controlrounding control) PCPC精度控制(精度控制(precision controlprecision control) 1.1. Exception MasksException Masks异常屏蔽字段异常屏蔽字段 115 8038780387控制寄存器控制寄存器 116 标记寄存器标记寄存器 v 标记寄存器(标记寄存器(tag registertag register)表明协处理器堆栈中每)表明协处理器堆栈中每 个寄存器内容的状态特征,又叫特征寄存器
56、。标记寄个寄存器内容的状态特征,又叫特征寄存器。标记寄 存器用每存器用每2 2位表示寄存器堆栈中位表示寄存器堆栈中1 1个寄存器的状态,即个寄存器的状态,即 TAGTAG(i i)表示堆栈寄存器)表示堆栈寄存器STST(i i)的状态。)的状态。TAGTAG(i i) 特征值为特征值为00110011四种组合时分别表明相应的寄存器有四种组合时分别表明相应的寄存器有 正确数据、数据为正确数据、数据为0 0、数据非法、无数据、数据非法、无数据4 4种情况。种情况。 v 通过程序查看标记寄存器的唯一方法是使用通过程序查看标记寄存器的唯一方法是使用FSTENVFSTENV、 FSAVEFSAVE或或FRSTORFRSTOR指令来存储协处理器操作环境。其中指令来存储协处理器操作环境。其中 每条指令均可将标记寄存器与其他协处理器数据一起每条指令均可将标记寄存器与其他协处理器数据一起 存储。存储。 117 标记寄存器标记寄存器 118 二、浮点运算流水线二、浮点运算流水线 v 为了实现流水,首先必须把输入
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 山东文旅集团校招面笔试题及答案
- 2026新疆第七师医院医共体上半年招聘87人备考题库【新题速递】附答案详解
- 山东鲁信投资控股集团校招面笔试题及答案
- 中建八局西北公司2026届新砼人春季校园招聘备考题库完整附答案详解
- 青海能源投资集团校招面笔试题及答案
- 儿童肺炎支原体耐药抗菌药物治疗方案
- 2026年仓储数字化管理方案
- 2025-2026学年外研版英语七年级下册Unit 2 Go for it!-Reflection 教学设计
- 2026西藏拉萨墨竹工卡县机关事业单位编外聘用人员招聘5人备考题库含完整答案详解【考点梳理】
- 2026贵州贵阳观山湖中学招聘中小学教师备考题库【名校卷】附答案详解
- 2026-2028年中国冰棍行业生态全景与战略纵深研究报告:政策、技术、资本与消费四重驱动下的产业重构与机遇地图
- 江苏苏州市2025-2026学年高二上学期期末考试英语试题(含答案)
- 国家职业资格认证考试报名试题及答案
- 公司级安全教育培训考试卷测试题(答案)
- (正式版)DB51∕T 2732-2025 《用材林培育技术规程 杉木》
- 《西游记知识竞赛》题库及答案(单选题100道)
- DB34∕T 5225-2025 风景名胜区拟建项目对景观及生态影响评价技术规范
- 2026年苏州工业职业技术学院单招职业技能测试必刷测试卷附答案
- 2025年陕西省中考化学试题答案解读及备考指导课件
- 新市民课件教学课件
- GB/T 20013.1-2025核医学仪器例行试验第1部分:γ辐射计数系统
评论
0/150
提交评论