您好,欢迎访问三七文档
第三章CPU子系统运算部件寄存器寄存器控制部件运算器控制器本章主要讨论:运算器控制器数据通路结构与外部的连接指令的执行过程CPU组成CPU工作原理第一节运算器组织独立结构小型存储器结构单口双口寄存器组独立R、双口RAM用多路选择器作为ALU的输入逻辑,单口RAM用锁存器作为ALU的输入逻辑。3.1.1带多路选择器的运算器移位器ALU多路选择器多路选择器R0RnR0...RnR0...Rn内部总线(单向)特点:R各自独立;可同时向ALU提供两个操作数;采用单向内总线。3.1.2带输入锁存器的运算器特点:单口RAM不能同时向ALU提供两个操作数;用锁存器暂存操作数;采用双向内总线。移位器ALU锁存器锁存器内部总线(双向)R0Rn通用寄存器组(小型存储器)3.1.3位片式运算器特点:用双口RAM(两地址端、两数据端)作通用寄存器组,可同时提供数据;用多路选择器作输入逻辑,不需暂存操作数;ALU增加乘、除功能,用乘商寄存器存放乘数、乘积或商。例.4位片运算器粗框移位器ALU多路选择器多路选择器DORAMDiB地址A地址CnDBDAG、P控制信息Cn+4乘商寄存器444444444444第二节运算方法3.2.1.1补码加减法数用补码表示,符号位参加运算。实际操作能否只取决于操作码?结果需不需修正?如何将减法转换为加法?3.2.1定点加减运算1.基本关系式(X+Y)补=X补+Y补(1)(X-Y)补=X补+(-Y)补(2)式(1):操作码为“加”时,两数直接相加。3)X=3Y=–2X补=00011Y补=1111000001(+1补码)2)X=–3Y=–2X补=11101Y补=1111011011(–5补码)1)X=3Y=2X补=00011Y补=0001000101(+5补码)4)X=–3Y=2X补=11101Y补=0001011111(–1补码)例.求(X+Y)补(X+Y)补=X补+Y补(1)(X-Y)补=X补+(-Y)补(2)式(2):操作码为“减”时,将减转换为加。1)X=4Y=–5X补=00100Y补=11011(-Y)补=0010101001(+9补码)2)X=–4Y=5X补=11100Y补=00101(-Y)补=1101110111(–9补码)例.求(X–Y)补Y补(–Y)补:将Y补变补不管Y补为正或负,将其符号连同尾数一起各位变反,末位加1。即将减数变补后与被减数相加。X补=00100Y补=11011X补=11100Y补=00101注意:某数的补码表示与某数变补的区别。例.10101原11011补码表示10011补01101变补00101原00101补码表示符号位不变;负数尾数改变,正数尾数不变。00011补11101变补符号位改变,尾数改变。补码的机器负数2.算法流程操作数用补码表示,符号位参加运算结果为补码表示,符号位指示结果正负X补+Y补X补+(-Y)补ADDSUB3.逻辑实现A(X补)B(Y补)+AABB+B+B+1CPA∑A(1)控制信号加法器输入端:+A:打开控制门,将A送∑。+B:打开控制门,将B送∑。+1:控制末位加1。+B:打开控制门,将B送∑。加法器输出端:∑A:打开控制门,将结果送A输入端。CPA:将结果打入A。(2)补码加减运算器粗框∑3.2.1.2溢出判断在什么情况下可能产生溢出?例.数A有4位尾数,1位符号SA数B有4位尾数,1位符号SB符号位参加运算结果符号Sf符号位进位Cf尾数最高位进位C正确0001100010(1)A=3B=23+2:00101(2)A=10B=710+7:010100011110001正溢正确负溢正确正确(3)A=-3B=-2-3+(-2):110111110111110(4)A=-10B=-7-10+(-7):011111011011001(5)A=6B=-46+(-4):000100011011100(6)A=-6B=4-6+4:111101101000100(2)A=10B=710+7:010100011110001(4)A=-10B=-7-10+(-7):0111110110110011.硬件判断逻辑一(SA、SB与Sf的关系)溢出=SASBSfSASfSB2.硬件判断逻辑二(Cf与C的关系)正确0001100010(1)A=3B=23+2:00101(2)A=10B=710+7:010100011110001正溢正确负溢正确正确(3)A=-3B=-2-3+(-2):110111110111110(4)A=-10B=-7-10+(-7):011111011011001(5)A=6B=-46+(-4):000100011011100(6)A=-6B=4-6+4:111101101000100Cf=0C=0Cf=0C=1Cf=1C=1Cf=1C=0Cf=1C=1Cf=0C=0111111(2)A=10B=710+7:010100011110001(4)A=-10B=-7-10+(-7):0111110110110011.硬件判断逻辑一(SA、SB与Sf的关系)溢出=SASBSfSASfSB2.硬件判断逻辑二(Cf与C的关系)溢出=CfC3.硬件判断逻辑三(双符号位)(1)3+2:正确000011000010000101(2)10+7:001010000111010001正溢正确负溢正确正确(3)-3+(-2):110111111101111110(4)-10+(-7):101111110110111001(5)6+(-4):000010000110111100(6)-6+4:111110111010000100第一符号位Sf1第二符号位Sf2溢出=Sf1Sf2(2)A=10B=710+7:010100011110001(4)A=-10B=-7-10+(-7):0111110110110011.硬件判断逻辑一(SA、SB与Sf的关系)溢出=SASBSfSASfSB2.硬件判断逻辑二(Cf与C的关系)溢出=CfC3.硬件判断逻辑三(双符号位)3.2.1.3移位操作逻辑移位:数码位置变化,数值不变。1.移位类型算术移位10001111循环左移:0:数码位置变化,数值变化,符号位不变。1001111算术左移:10011111011110(-15)(-30)(1)单符号位:0011101110(2)双符号位:0011100001112.正数补码移位规则(3)移位规则左移右移右移0011100011左移左移右移右移011100001110000111数符不变(单:符号位不变;双:第一符号位不变)。空位补0(右移时第二符号位移至尾数最高位)。(1)单符号位:1101110110(2)双符号位:1011001101103.负数补码移位规则(3)移位规则左移右移右移1101111101左移右移右移110110111011数符不变(单:符号位不变;双:第一符号位不变)。左移空位补0(第二符号位移至尾数最高位)。右移空位补13.2.1.4舍入方法1.0舍1入(原码、补码)000100原100101原111011补2.末位恒置1(原码、补码)000100原111011补100101原00010原10011原11110补00011原10011原11101补10011原11101补例.保留4位尾数:例.保留4位尾数:3.2.2定点乘法运算3.2.2.1原码一位乘法每次用一位乘数去乘被乘数。1.算法分析乘法部分积累加、移位。例.0.1101×1.1011乘积P=X×Y积符SP=SXSYX原Y原(1)手算0.1101×0.101111011101000011010.10001111上符号:1.10001111部分积问题:1)加数增多(由乘数位数决定)。2)加数的位数增多(与被乘数、乘数位数有关)。改进:将一次相加改为分步累加。(2)分步乘法每次将一位乘数所对应的部分积与原部分积的累加和相加,并移位。设置寄存器:A:存放部分积累加和、乘积高位B:存放被乘数C:存放乘数、乘积低位设置初值:A=00.0000B=X=00.1101C=Y=.1011步数条件操作AC00.0000.10111)Cn=1+BCn+00.110100.11010.1101×0.101111011101000011010.10001111BC110100.01101.1010.1101×0.10112)Cn=1+B+00.110101.001100.100111.100.1101×0.10110.1101×0.101111011101000011010.10001111BC3)Cn=0+0+00.000000.100100.0100111.14)Cn=1+B+00.110101.000100.10001111X原×Y原=1.100011112.算法流程0A、XB、YC、0CRCn=1?CR=n?1/2(A+B)A,C1/2(A+0)A,CCR+1CRYYNNSx+SySA3.运算规则(1)操作数、结果用原码表示;(2)绝对值运算,符号单独处理;(3)被乘数(B)、累加和(A)取双符号位;(4)乘数末位(Cn)为判断位,其状态决定下步操作;(5)作n次循环(累加、右移)。3.2.2.2补码一位乘法1.算法分析X补=X0.X1X2……Xn(1)Y为正:Y补=0.Y1Y2……Yn(XY)补=X补(0.Y1Y2……Yn)(2)Y为负:Y补=1.Y1Y2……Yn(XY)补=X补(0.Y1Y2……Yn)+(-X)补(3)Y符号任意:(XY)补=X补(0.Y1Y2……Yn)+(-X)补Y0符号位(4)展开为部分积的累加和形式:(XY)补=X补(0.Y1Y2……Yn)+(-X)补Y0=X补(0.Y1Y2……Yn)-X补Y0=X补(-Y0+2Y1+2Y2+……+2Yn)-1-2-n=X补-Y0+(Y1-2Y1)+(2Y2-2Y2)+……-1-1-2-(n-1)-n+(2Yn-2Yn)=X补(Y1-Y0)+2(Y2-Y1)+2(Y3-Y2)+……-1-2+2(0-Yn)-n+2(0-Yn)-nYn+1=X补(Y1-Y0)+2(Y2-Y1)+2(Y3-Y2)+……-1-2+2(0-Yn)-nYn+1比较法:用相邻两位乘数比较的结果决定+X补、-X补或+0。2.比较法算法Yn(高位)Yn+1(低位)操作(A补为部分积累加和)000110111/2A补1/2(A补+X补)1/2(A补-X补)1/2A补(0)(1)(-1)(0)3.运算实例X=-0.1101,Y=-0.1011,求(XY)补。初值:A=00.0000,B=X补=11.0011,-B=(-X)补=00.1101,C=Y补=1.0101步数条件操作AC00.00001.01011)10-BCn+00.110100.110100.011011.01012)01+B+11.001111.100111.1100111.0103)10-B+00.110100.100100.01001111.014)01+B+11.001111.011111.101111111.00Cn+1CnCn+15)10-B+00.1101(XY)补=0.100011114)01+B+11.001111.011111.101111111.05)10-B+00.110100.10001111修正(1)A、B取双符号位,符号参加运算;(2)C取单符号位,符号参加移位,以决定最后是否修正;(3)C末位设置附加位Cn+1,初值为0,CnCn+1组成判断位,决定运算操作;(4)作n步循环,若需作第n+1步,则不移位,仅修正。4.运算规则1.0:-B修正0.1:+B修正0.0:不修正1.1:不修正3.2.3定点除法运算除法若干余数与除数加减、移位。例.0.10110÷0.111110.1011011010.01111110.11111000111111101010111111101100.00000.0.商:0.10110余数:0.10110×25实现除法的关键:比较余数、除数绝对值大小,以决定上商。3.2.3.1原码恢复余数法
本文标题:CPU运算部件详解
链接地址:https://www.777doc.com/doc-2907166 .html