大学计算机组成原理--第3章、运算方法与运算器_第1页
大学计算机组成原理--第3章、运算方法与运算器_第2页
大学计算机组成原理--第3章、运算方法与运算器_第3页
大学计算机组成原理--第3章、运算方法与运算器_第4页
大学计算机组成原理--第3章、运算方法与运算器_第5页
已阅读5页,还剩82页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1 第三章、运算方法与运算器Outlineo 定点补码加/减法运算o 定点乘法运算o 浮点运算o 运算器组织o 运算器部件举例2 3.1 定点补码加/减法运算o定点补码的加减法运算 X补+ Y补= X + Y补 X补 - Y补= X补+ -Y补=X-Y补 - Y补补= -Y补补(规则来源于补码的特点,也即模运算的特点。存在模运算与溢出的关(规则来源于补码的特点,也即模运算的特点。存在模运算与溢出的关系问题)系问题)3 0.111+1.100=10.011 (0.875-0.5=0.375) (多出一位(多出一位丢掉)丢掉) 0.111+0.010 =1.001 (0.875+0.25=1.12

2、5) (机器得到(机器得到- 0.875) 1.001+1.100 =10.101 (-0.875-0.5= -1.325) (机器得到(机器得到+0.625) 结论:结论: 运算的运算的实际结果实际结果没有超出字长可以表示的数值范围,取模的结果是正确。没有超出字长可以表示的数值范围,取模的结果是正确。 超出范围则溢出,出现错误。判断方法:超出范围则溢出,出现错误。判断方法:正正 + 正正 得得负负 或或 负负 + 负负 得得正正注意:注意: 模运算与溢出的关系模运算与溢出的关系(例如例如, 4位位2进制运算器进制运算器):4补码加法的几种情况及其溢出检测 正正得负,正溢出负负得正,负溢出正常

3、结果符号位进位舍去,正常结果计算机如何识别运算结果是否溢出Cf = 0,C1 = 0Cf = 1,C1 = 1Cf = 0,C1 = 1Cf = 1,C1 = 0符号位进位Cf (C0) ,最高位进位C15CfC1V000110101011单符号数溢出检测溢出信号V对应的真值表V=CV=Cf fC C1 16双符号数溢出检测 非正常符号位,溢出符号位进位舍去,正常结果正常结果非正常符号位,溢出f1 f2Sf1 Sf2 V V S Sf1f1 S Sf2 f2 7加法运算的逻辑实现 多位加法运算依赖于各位逐位相加的运算,所以我们先讨论一位全加器8一位全加器输入: 加数Ai 、Bi 、低位进位输入

4、Ci+1输出: 和数Si ,进位输出CiAiBiCi+1SiCi00000001100101001101100101010111001111119一位加法器逻辑表达式注意:逻辑表达式可以变形,故电路形式不是唯一的。i+1iiiiiCBABAC)(+=i+1iiiCBAS=10典型门 电路 &AB1AB1AB1A&AB1AB1AB与非或非非与或异或异或非11一位全加器逻辑电路实现FASiAi BiCi+1Ci一位全加器一位全加器时间延迟i+1iiiiiCBABAC)(+=Ci+1 Ai BiSiCiFA12CCn+1CnC2C1C0 x0 y0 x1 y1 xn-1 yn-1 xn yns0 s

5、1 sn-1 snCn-1001n-1nV双符号补码加/减器电路实现MM由汇编语言中的加法指令add,以及sub等产生1、N个合起来; 2、M控制加减;3、 串行行波加法器13快速加法器o 能否提前产生各位的进位输入o 使得各位的加法运算能并行起来o 提高多位加法器运算速度14并行加法器进位链o Si=XiYiCi+1o Ci=Ci+1(XiYi)+XiYio Gi = XiYi o Pi=XiYiGi 进位产生函数/本地进位Pi进位传递i函数,进位传递条件o Ci = Gi+PiCi+115并行加法器进位链oCn = XnYn+(XnYn)Cn+1=Gn+PnCn+1oCn-1 = Xn-1

6、Yn-1+(Xn-1Yn-1)Cn=Gn-1+Pn-1CnoCn-2 = Xn-2Yn-2+(Xn-2Yn-2)Cn-1=Gn-2+Pn-2Cn-1oC2 = X2Y2+(X2Y2)C3=G2+P2C3ooC1 = X1Y1+(X1Y1)C2=G1+P1C2高位的运算依赖于低位运算进位的产生,计算不能并行16并行加法器进位链oCn = XnYn+(XnYn)Cn+1=Gn+PnCn+1oCn-1 = Gn-1+Pn-1Cn = Gn-1+Pn-1 (Gn+PnCn+1) = Gn-1+Pn-1 Gn+Pn-1PnCn+1oCn-2 =Gn-2+Pn-2Cn-1= Gn-2+Pn-2(Gn-1+

7、Pn-1 Gn+Pn-1PnCn+1) = Gn-2+Pn-2Gn-1+Pn-2Pn-1 Gn+Pn-2Pn-1PnCn+1oC2 = G2+P2G3+P2P3G4 +P2 P3 PnCn+1C1 = G1+P1G2+P1P2G3 +P1P2P3G4+P1 P2 PnCn+117X4 Y4G4 P4X3 Y3G3 P3X2 Y2G2 P2X1 Y1G1 P1C1C2C3C4C518先行进位电路CLA74182 先行进位的多功能算术/逻辑运算单元ALU74181G1 P1G2 P2G3 P3G4 P4与门异或门电路CLA74182G1 P1G2 P2G3 P3G4 P4C1 C2 C3 C4 X

8、1 Y1X2 Y2X3 Y3X4 Y4C5 S1 S2 S3 S4 Si=Xi Yi Ci+119C516位组内先行进位,组间串行进位 ALU74181 X1Y1X2Y2X3Y3X4Y4C5P1* G1*C1S1S2S3 S4 ALU74181 X1Y1X4Y4P1* G1*C1S1 S4 ALU74181 X5Y5X8Y8C9P2* G2*S5 S8 ALU74181 X9Y9X12Y12C13P3* G3*S9 S12 ALU74181 X13Y13X16Y16C17P4* G4*S13 S16C1 = G1+P1G2+P1P2G3 +P1P2P3G4+P1 P2 PnCn+1成组进位发生

9、输出G1* ,成组进位传送输出P1*2016位组内先行进位,组间先行进位 P* G* P1 G1 C2 P2 G2 C3 P3 G3 C4 P4 G4 CLA (74182)C5C1C5 ALU74181 X1Y1X4Y4P1* G1*S1 S4 ALU74181 X5Y5X8Y8C9P2* G2*S5 S8 ALU74181 X9Y9X12Y12P3* G3*S9 S12 ALU74181 X13Y13X16Y16C17P4* G4*S13 S16C1332/64位?21Outlineo 定点补码加/减法运算o 定点乘法运算o 浮点运算o 运算器组织o 运算器部件举例223.2 定点乘法运算

10、o 原码乘法运算方法o 原码乘法运算实现o 补码乘法运算方法o 补码乘法运算实现23a3b1a2b1a1b1a0b1a4b1a3b2a2b2a1b2a0b2a4b2a3b3a2b3a1b3a0b3a4b3a3b4a2b4a1b4a0b4a4b4a4b0a3b0a2b0a1b0a0b0p9p8 p7 p6p5p4 p3 p2 p1p0p 多位乘法必须先计算一位乘法,然后累加求和24乘法运算实现方法o 执行乘法运算子程序实现乘法运算o 设置专用乘法器实现乘法运算o 借助加法器配置相应部件实现乘法运算25乘法器 一位乘法电路实现S=X*YiiYXOutput=一个与门就可以实现一位乘法1110010

11、10000OutputYiXi26o 符号位直接异或即可得到乘积的符号o 仅仅需要考虑其数值部分的计算o 以定点小数为例进行讨论多位原码乘法27相加数产生部件a4b4a1b0a0b0 A = 0. a4 a3 a2 a1 a0 B = 0. b4 b3 b2 b1 b0p 经过一级门电路延迟,即可得到所有的相加数28a3b2a2b2a1b2a0b2a4b2a3b3a2b3a1b3a0b3a4b3a3b4a2b4a1b4a0b4a4b4a4b0a3b0a2b0a1b0a0b0p8 p2 p1p05位无符号数阵列乘法器电路00a1b1a0b1a3b1a2b1a4b1 p6 p7 p30p40p50

12、COUT COUT COUT p9COUT29p8 p2 p1p05位无符号数阵列乘法器电路a3b2a2b2a1b2a0b2a4b2a3b3a2b3a1b3a0b3a4b3a4b0a3b0a2b0a1b0a0b0a1b1a0b1a3b1a2b1a4b1 p6 p7 p3p4p5p900a3b4a2b4a0b4a4b4a1b400030nn位原码乘法器框图相加数产生部件A = af. an1 an2a1 a0B = bf. bn1 bn2b1 b0nn乘法阵列an1bn1a1b0a0b0Pf=1.P2n1P2n2P2n3P1P031p8 p2 p1p0a3b2a2b2a1b2a0b2a4b2a3

13、b3a2b3a1b3a0b3a4b3a4b0a3b0a2b0a1b0a0b0a4b1 p6 p7 p3p4p5p90a3b4a2b4a0b4a4b4a1b4a1b1a0b1a3b1a2b100004*5个全加器, 8个全加器延迟32原码阵列乘法器时间延迟o n(n-1)个FAo 延迟时间n (n-1)FA +(n-1)FAn 每一个FA包含三级门电路延迟To 故总延迟为n 2(n-1)*3T T(相加数产生时间)33补码乘法器原理图 B补 = bf. bn1 b1 b0乘法阵列(同前nn阵列)2n位求补器数值同原码相加数积绝对值P2n1P1P0(补码乘积)Pf. A补 = af. an1 a1

14、 a0相加数产生电路(同前)n位求补器n位求补器34乘法运算实现方法o 执行乘法运算子程序实现乘法运算o 设置专用乘法器实现乘法运算o 借助加法器配置相应部件实现乘法运算n 原码一位乘法的运算方法与逻辑实现n 补码一位乘法的运算方法与逻辑实现35a3b2a2b2a1b2a0b2a4b2a3b3a2b3a1b3a0b3a4b3a3b4a2b4a1b4a0b4a4b4a4b0a3b0a2b0a1b0a0b0p8 p2 p1p05位无符号数阵列乘法器电路00a1b1a0b1a3b1a2b1a4b1 p6 p7 p30p40p50COUT COUT COUT p9COUT36a3a2a1a0a4000

15、00a3a2a1a0a4a4a3a2a1a0p8 p2 p1p05位无符号数阵列乘法器电路0000000 p6 p7 p30p40p50COUT COUT p9COUT 0.p9p8p7p6p5p4p3p2p1p0 0.a4a3a2a1a0 x 0.1 0 1 0 1 COUT 37a3a2a1a0a400000a3a2a1a0a4a4a3a2a1a0p8 p2 p1p05位无符号数阵列乘法器电路0000000 p6 p7 p30p40p50COUT COUT COUT p9COUT=XYn +=XYn-1 右移一位+=XYn-2 右移一位+=XYn-3 右移一位38部分积累加的数学表示部分积

16、=XYn部分积=XYn-1+XYn 2-1部分积=XYn-2+(XYn-1+XYn*2-1)2-1 =XYn-2+XYn-12-1 + XYn2-2 =XY12-1+XY22-2+XYn2-nX*Y=XY12-1+Y22-2+Yn2-n39开始i = 0, 0Yn=1 + 0 + X Y右移一位i+1i i = nX0Y0P0结束YNNY40例子o 已知X=0.1101 Y=-0.1011o 计算X原Y原4100.000000.1101+00.110100.011000.1101部分积01.0011 100.1001 1100.000000.1001 1100.0100 11100.11010

17、1.0001 11100.1000 1111乘数1Y0Y0.1011Y0.101Y0.10判断位说明P0=0Y4=1,+|X|右移一位得P1Y4=1,+ |X|右移一位得P2Y4=0,+0右移一位得P3Y4=1,+ |X|右移一位得P4=|X|Y|+Y0.1+42原码乘法逻辑结构 R0+1计数器移位控制加法器X0 被乘数XR2 R0 部分积计 数 器 R1 乘数Y Yn= +YnX控制电路430 1 0 1 1部分积R0乘数R1Yn 判断位0 1 0 1 11 0 1 0 11 1 0 1 01 1 1 0 1 + + + + + + + + 1 1 1 1 00 0 0 0 00 1 1 0

18、 10 1 1 0 10 0 1 1 00 1 1 0 11 0 0 1 10 1 0 0 10 0 0 0 00 1 0 0 10 0 1 0 00 1 1 0 11 0 0 0 10 1 0 0 044部分积累加的数学表示部分积=XYn部分积=XYn-1+XYn*2-1部分积=XYn-2+(XYn-1+XYn*2-1)2-1 =XYn-2+XYn-12-1 + XYn*2-2 =XY1*2-1+XY2*2-2+XYn*2-nX*Y= XY1*2-1+Y2*2-2+Yn*2-n45补码一位乘法1) 被乘数X符号任意,乘数Y为正X补=X0.X1X2Xn Y补=0.Y1Y2Yn X补Y补=(2+

19、X) Y =(2n+1+X) Y =2n+1Y+XY =2 2n 0.Y1Y2Yn+XY =2(Y1Y2Yn)+XY =2+XY =X Y补X Y补= X补Y补46补码一位乘法1) 被乘数X符号任意,乘数Y为负数X补=X0.X1X2Xn Y补=1.Y1Y2Yn Y补=2+Y Y= Y补-2 =0.Y1Y2Yn-1X Y补=X (0.Y1Y2Yn - 1) 补 =X 0.Y1Y2Yn - X 补 =X 0.Y1Y2Yn补- X补 =X补 0.Y1Y2Yn- X补 =X补 0.Y1Y2Yn - Y0X 补47补码一位乘法X Y补=X补 0.Y1Y2Yn-Y0 X 补 =X补(-Y0+0.Y1Y2Y

20、n) =X补(-Y0+Y12-1+Y22-2+Yn 2-n) =X补-Y0+(Y1-Y12-1)+(Y22-1-Y22-2)+(Yn2-n+1-Yn2-n) = X补Y1-Y0+(Y2-Y1)2-1+(Y3-Y2)2-2+(0-Yn)2-noXY= X Y12-1 + Y22-2 + Yn2-n原码乘法 48开始i = 0, 0 Yn Yn+1=? + X补 + X补结束011000或11YN不变、Y补右移一位i + 1i=n+149例子o 已知X=1.0101 Y=1.0011计算X补Y补解: -X补=0.10115000.000000.1011+00.101100.010100.0000部

21、分积00.0101 100.0010 1111.010111. 0111 1111.1011 11100.000011.1011 11111.1101 111100.1011乘数11.01.001101.00111.001判断位说明Yn+1=0YnYn+1=10,加X补右移一位得P1末2位为11,+ 0右移一位得P2末2位为01 +X补右移一位得P3末2位为00 +0右移一位得P4末2位为10 -X补+1.00+00.1000 111151补码一位乘法逻辑结构移位控制 R1乘数Y补YnYn+100/11 0110&1=1YnYn+1R2 被乘数X补加法器CR0部分积=2-1 +(Yn+1-Yn

22、) X补52o 定点补码加/减法运算o 定点乘法运算o 浮点运算o 运算器组织o 运算器部件举例Outline53浮点加减法运算计算X+Y=? 求解: 如:Ex=Ey S=2Ex (Mx+My) 如:ExEy ?假设:54对阶o 对阶(使得小数部分可以按位权值按位相加)o 大阶对小阶还是小阶对大阶?210*(0.11000)+28*(0.00110)大阶对小阶 210*(0.11000)-28*(11.000) 11.000+0.00110 ? 小阶对大阶 28*(0.00110)-210*(0.00001) 0.00001+0.11000=0.11001o 对阶过程应该是小阶对大阶 尾数右移

23、55尾数运算Ex=Ey 满足后 S=2Ex(Mx+My)56运算结果规格化o 210*(0.11000) 也可表示为 211*(0.01100)o 为提高精度,尾数不为零的时,要求其绝对值大于1/2,即尾数最高有效位为1,否则要以修改阶码的方式同时左右移小数点,使其变成这一要求的表示形式,这个过程称为浮点数的规格化o 同一个浮点数的编码唯一o 将运算结果右移以实现规格化表示称为向右规格化,右归o 将运算结果左移以实现规格化表示称为向左规格化,左归57规格化形式o 规格化数形式 0.1XXXX -0.1XXXXo 补码规格化形式 00.1XXXX 11.0XXXXo 补码非规格化数 00.0XX

24、XX 11.1XXXX 01.XXXXX 10.XXXXX58o00.0XXXX - 00.1XXX0 左规o11.1XXXX - 11.0XXX0 左规o01.XXXXX - 00.1XXXX 右规o10.XXXXX - 11.0XXXX 右规 规格化方法59向左规格化1 1 1 0 0 0 0 11 1 1 0 0 0 0 11 1 0 0 0 0 1 00 0 0 0 1 0 0 10 0 0 0 1 0 0 10 0 1 0 0 1 0 0600 1 1 0 0 0 1 10 1 1 0 0 0 1 10 0 1 1 0 0 0 11 0 1 0 0 0 1 11 0 1 0 0 0

25、1 11 1 0 1 0 0 0 1向右规格化61规格化规则小结o 运算结果产生溢出时,必须进行右归o 如出现10.XX或者01.XXXo 如结果出现00.0XXX或11.1XX必须左归o 左归时最低数据有效位补0o 右归时连同符号位进位位一起右移o 左归时,阶码作减法,右归时,阶码作加法62舍入处理0 1 1 0 0 0 1 10 0 1 1 0 0 0 1 163溢出处理o 尾数上溢 右归o 尾数下溢 左归o 阶码上溢 正无穷和负无穷o 阶码下溢 064浮点数加减法o 五个基本步骤n 对阶n 尾数求和n 规格化(左规,右规)n 舍入(截去、0舍1入)n 检查溢出65例1 两浮点数x = 2

26、1010.11011011,y = 2111(-0.10101100)。假设尾数在计算机中以补码表示,可存储10位尾数,2位符号位,阶码以补码表示,双符号位,求x+y。解:将x,y转换成浮点数据格式 x浮 = 00 101, 00.11011011 Y浮 = 00 111, 11.01010011+1 00 111, 11.01010100步骤1:对阶,阶差为Ex-Ey -Ey=11000111001 Ex-Ey0010111001111102 0 Ex-Ey0 ExEy 小阶对大阶, X阶码加2 X尾数右移2位66 x浮 = 00 111, 00.00110110(11) 步骤2:尾数求和

27、X+Y浮 = 00 111, 00.00110110(11) + 00 111, 11.01010100 = 00 111, 11.10001010(11)67步骤3:计算结果规格化 X+Y浮 为非规格化数,左归一位, 阶码减一, 00110, 11.00010101(1)步骤4:舍入处理 X+Y浮 = 00 110, 11.00010110 (0舍1如法) X+Y浮 = 00 110, 11.00010101 (截去法) 步骤5:溢出判断 无溢出 X+Y浮 = 2110 x (-00.11101011)68浮点数乘法运算如:X=2m Mx Y=2n My X Y=2m Mx ( 2n My

28、) =2m+n (Mx My)69浮点数乘法运算(1) 阶码相加阶码相加可能产生溢出,若产生溢出,则给出溢出指示,计算机进行溢出处理。(2) 尾数相乘尾数部分相乘可得积的尾数,尾数相乘可按定点乘法运算的方法进行运算。(3) 结果规格化当运算结果需要进行规格化操作时,可按浮点加/减法运算规格化方式处理,舍入方式也与加/减法方式中的相同。70Outlineo 定点补码加/减法运算o 定点乘法运算o 浮点运算o 运算器组织o 运算器部件举例71运算器功能o 数据进行算术运算和逻辑运算o 暂存参加运算的数据及运算的中间结果o 选取相应部件中的数据参与运算o 反映运算处理的状态72算术逻辑运算单元ALU

29、ALUResultOverflowabALU operation73寄存器组 Q D Q D Q D R0 Q D Q D Q D R1 Q D Q D Q D Rn LDR0 LDR1 LDRn 74 多路选择电路 OUT(i) R0(i) R1(i) R2(i) R3(i) R3OUT R2OUT R1OUT R0OUT &175CLAADD 30STA 40NOPJMP 21000 006000 00420212223243040ALU运算器结构PSWAXBXCXDXDR左路开关选择右路开关选择数据总线DBUS移位器操作数X操作数Y76ALUSRBUS状态寄存器ABALUBUS锁存器LA

30、锁存器LB选择电路R0R1RnBUSbusLDLALDLBLbusRiLLDR0LDRnbusLBUSbusbusBUS77Outlineo 定点补码加/减法运算o 定点乘法运算o 浮点运算o 运算器组织o 运算器部件举例78o 先行进位的多功能算术/逻辑运算单元运算部件举例ALU74181Cn+4S3S2S1S0A3A2A1A0B3B2B1B0CnMA=BPGSN741814位ALUF3F2F1F018 20 22 119 21 23 2781415171311109163456C079先行进位电路CLA74182先行进位电路74182P4G4 P3G3 P2G2 P1G1C0 C4 C3

31、C2 C1P*G*80是否可以如下连接? 16位组内先行进位,组间先行进位 ALU74181 X16Y16X15Y15X14Y14X13Y13C12P16 * G16 * ALU74181 X12Y12 X11Y11 X10Y10X9Y9C8P12 * G12 * ALU74181 X8Y8X7Y7X6Y6 X5Y5C4P8 * G8 * ALU74181 X4Y4X3Y3X2Y2 X1Y1C0P4* G4 * P* G* P4 G4 C3 P3 G3 C2 P2 G2 C1 P1 G1 CLA (74182)C0C481成组进位o C4 = G4+P4G3+P4P3G2+P4P3P2G1+P4P3P2P1C0o G4 *= G4+P4G3+P4P3G2+P4P3P2G1n 成组进位发生输出o P4 *= P4P3P2P1n 成组进位传递函数o C4 = G4*+

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论