溢出的溢出逻辑表达式式vf=sf⊕cf sf...

【图文】计算机组成原理第二章2_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
计算机组成原理第二章2
上传于||暂无简介
大小:3.06MB
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢【图文】组成原理期末复习_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
组成原理期末复习
上传于||文档简介
&&组​成​原​理​课​件​整​理​浓​缩
大小:3.39MB
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢5_清华大学:计算机组成原理_ppt_大学课件预览_高等教育资讯网
清华大学:计算机组成原理:5
分类: 格式: 日期:日
计算机组成原理 1计 算 机 组 成 原 理第六 -八讲2009年 11月 10日计算机算法和算法逻辑实现计算机组成原理 21,定点数加减法运算及电路实现补码的加减法运算, 全加器, 溢出, 快速加法运算 ( 进位链 ), 74181ALU2,定点数乘除运算和电路实现原码, 补码, 布斯算法, 原码恢复余数, 不恢复余数3,快速乘除法运算技术和电路实现布斯高基乘法, 阵列乘法器, 阵列除法器4,浮点数四则运算以及实现加减乘除本讲安排计算机组成原理 3本讲将解决的主要问题掌握计算机算法 。加减乘除运算方法和运算器的构成,原码和补码的加减乘除四则运算,浮点数的四则运算 。计算机组成原理 4补码加、减法溢出概念与检测方法基本的二进制加法 /减法器十进制加法器计算机组成原理 5加法规则:先判符号位,若相同,绝对值相加,结果符号不变 ; 若不同,则作减法,|大 | - |小 |,结果符号与 |大 |相同。减法规则:两个原码表示的数相减,首先将减数符号取反,然后将被减数与符号取反后的减数按原码加法进行运算。补码加法1.原码加 /减法运算计算机组成原理 6补码加法的公式,[ x ]补 + [ y ]补 = [ x+ y ]补 (mod 2)在模 2意义下,任意两数的补码之和等于该两数之和的补码 。这是补码加法的理论基础。2.补码加法运算特点,不需要事先判断符号,符号位与码值位一起参加运算。符号位相加后若有进位,则舍去该进位数字。计算机组成原理 7假设采用定点小数表示,因此证明的先决条件是,︱ x︱ ﹤ 1,︱ y︱ ﹤ 1,︱ x+ y︱ ﹤ 1。(1) x﹥ 0,y﹥ 0,则 x+ y﹥ 0。相加两数都是正数,故其和也一定是正数。正数的补码和原码是一样的,可得:[ x ]补 + [ y ]补 = x+ y= [ x+ y ]补 (mod 2)公式证明,计算机组成原理 8(2) x﹥ 0,y﹤ 0,则 x+ y&0 或 x+ y&0。相加的两数一个为正,一个为负,因此相加结果有正、负两种可能。根据补码定义,∵ [x]补 = x,[ y]补 = 2+ y∴ [x]补 + [ y]补 = x+ 2+ y= 2+ (x+ y)当 x+y&0 时,2+ (x+y) & 2,进位 2必丢失,又因 (x+y)&0,故 [x]补 + [ y]补 = x+ y= [ x+ y]补 (mod 2)当 x+ y&0时,2 + (x+ y) & 2,又因 (x+y)&0,故 [x]补 + [y]补 = 2+ (x+ y)= [x+ y]补 (mod 2)计算机组成原理 9(3) x&0,y&0,则 x+ y&0 或 x+ y&0。同 (2),把 x 和 y 的位置对调即可。(4) x&0,y&0,则 x+ y&0。相加两数都是负数,则其和也一定是负数。∵ [x]补 = 2+ x,[ y]补 = 2+ y∴ [x]补 + [ y]补 = 2+ x+ 2+ y= 2+ (2+ x+ y)因为 |x+ y|&1,1&(2+ x+ y)&2,2+ (2+ x+ y) 进位 2必丢失,又因 x+y&0故 [x]补 + [ y]补 = 2+ (x+ y)= [ x+ y]补 (mod 2)计算机组成原理 10至此证明了在模 2意义下,任意两数的补码之和等于该两数之和的补码。其结论也适用于定点整数。补码加法的特点:( 1)符号位要作为数的一部分一起参加运算;( 2)在模 2的意义下相加,即大于 2的进位要丢掉。结论:计算机组成原理 11例, x= 0.1001,y= 0.0101,求 x+ y。解, [x]补 = 0.1001,[y]补 = 0.0101[x]补 0.1001+ [y]补 0.0101[x+ y ]补 0.1110所以 x+ y=+ 0.1110例, x=+ 0.1011,y=- 0.0101,求 x+ y。所以 x+ y= 0.0110解, [x]补 = 0.1011,[y]补 = 1.1011[x]补 0.1011+ [y]补 1.1011[x+ y]补 10.0110计算机组成原理 12补码减法减法运算要设法化为加法完成补码减法运算的公式:[ x- y ]补 = [ x ]补 - [ y ]补 = [ x ]补 + [- y ]补公式证明,只要证明 [–y]补 = –[ y]补,上式即得证。∵ [x+ y]补 = [x]补 + [ y]补 (mod 2)令 y= - x∴ [0]补 = [x]补 + [ - x]补故 [- x]补 =- [ x]补 (mod 2)证明:计算机组成原理 13例, x=+ 0.1101,y=+ 0.0110,求 x- y。解, [x]补 = 0.1101[ y]补 = 0.0110,[- y]补 = 1.1010[x]补 0.1101+ [- y]补 1.1010[x- y]补 10.0111x- y=+ 0.0111解, [x]补 =1.0011[y]补 =1.1010 [-y]补 =0.0110[x]补 1.0 0 1 1+ [-y]补 0.0 1 1 0[x-y]补 1.1 0 0 1例, x= -0.1101,y= -0.0110,求 x-y=?∴ x--y = -0.0111计算机组成原理 14溢出及与检测方法在定点小数机器中,数的表示范围为 |x |&1。在运算过程中如出现大于 1的现象,称为, 溢出, 。机器定点小数表示上溢下溢1,概念计算机组成原理 15解, [x]补 =0.1011 [y]补 =0.1001[x]补 0,1 0 1 1+ [y]补 0,1 0 0 1[x+y]补 1,0 1 0 0两个正数相加的结果成为负数,这显然是错误的。例, x=+0.1011,y=+0.1001,求 x+y。例, x= -0.1101,y= -0.1011,求 x+y。解, [x]补 =1.0011 [y]补 =1.0101[x]补 1,0 0 1 1+ [y]补 1,0 1 0 1[x+y]补 0,1 0 0 0两个负数相加的结果成为正数,这同样是错误的。计算机组成原理 16发生错误的原因,是因为运算结果产生了溢出。两个正数相加, 结果大于机器所能表示的最大正数,称为上溢;两个负数相加:结果小于机器所能表示的最小负数,称为下溢。机器定点小数表示上溢下溢[分析 ],计算机组成原理 172.溢出的检测方法[x]补 0,1 0 1 1+ [y]补 0,1 0 0 1[x+y]补 1,0 1 0 0[x]补 1,0 0 1 1+ [y]补 1,0 1 0 1[x+y]补 0,1 0 0 0溢出逻辑表达式为:V= S1 S2 Sc + S1 S2 Sc(1) 单符号位法F***z0y0x0判 断电 路判断电路计算机组成原理 18一个符号位只能表示正、负两种情况,当产生溢出时,符号位的含义就会发生混乱。如果将符号位扩充为两位 (Sf1,Sf2),其所能表示的信息量将随之扩大,既能判别是否溢出,又能指出结果的符号。(2) 双符号位法双符号位法 也称为“变形补码”或“模 4补码” 。变形补码定义:[x]补 =x 0? x&24+x -2? x&0 ( mod 4)计算机组成原理 19? 任何小于 1的正数,两个符号位都是,0‖,即 00.x1x2...? 任何大于 -1的负数:两个符号位都是,1‖,即 11.x1x2…x n两数变形补码之和等于两数和的变形补码,要求:? 两个符号位都看做数码一样参加运算;? 两数进行以 4为模的加法,即最高符号位上产生的进位要丢掉模 4补码加法公式,[x]补 +[ y]补 =[x+y]补 ( mod 4)采用变形补码后数的表示:计算机组成原理 20Sf1Sf2 = 00 结果为正数,无溢出01 结果正溢10 结果负溢11 结果为负数,无溢出即,结果的两个符号位的代码不一致时,表示溢出 ;两个符号位的代码一致时,表示没有溢出。不管溢出与否,最高符号位永远表示结果的正确符号。溢出逻辑表达式为,V= Sf1⊕ Sf2中 Sf1和 Sf2分别为最高符号位和第二符号位,此逻辑表达式可用异或门实现。双符号位的含义如下:计算机组成原理 21解, [x]补 =00.1100 [y]补 =00.1000[x]补 0 0,1 1 0 0+ [y]补 0 0,1 0 0 00 1,0 1 0 0符号位出现,01‖,表示已溢出,正溢。即结果大于 +1例 x= +0.1100,y= +0.1000,求 x+y。解, [x]补 =11.0100 [y]补 =11.1000[x]补 1 1.0 1 0 0+ [y]补 1 1.1 0 0 01 0,1 1 0 0符号位出现,10‖,表示已溢出,负溢出。即结果小于 -1例 x= -0.1100,y= -0.1000,求 x+y。计算机组成原理 22从上面例中看到:当最高有效位有进位而符号位无进位时,产生上溢;当最高有效位无进位而符号位有进位时,产生下溢。(简单地说是正数相加为负数或负数相加为正数则产生溢出)故溢出逻辑表达式为,V= Cf⊕ Co其中 Cf为符号位产生的进位,Co为最高有效位产生的进位。此逻辑表达式也可用异或门实现。(3) 利用进位值的判别法[x]补 0 0,1 1 0 0+[y]补 0 0,1 0 0 00 1,1 0 0 0[x]补 1 1.0 1 0 0+[y]补 1 1.1 0 0 01 0.1 1 0 0计算机组成原理 23FAFAz1z0Vc1c0y1x1y0x0FAF***z 1c0c1z0x1y1y0x0V= C1⊕ CoV= Sf1⊕ Sf2判断电路计算机组成原理 24基本的二进制加法 /减法器加法运算,Ai + Bi + Ci = Si (Ci+1)加数 进位输入 和 进位输出一位全加器真值表输入 输出Ai Bi Ci Si Ci+ 10 0 0 0 00 0 1 1 00 1 0 1 00 1 1 0 11 0 0 1 01 0 1 0 11 1 0 0 11 1 1 1 1?逻辑方程Si= Ai⊕ Bi⊕ CiCi+ 1= AiBi+ BiCi+ CiAi1.一位全加器计算机组成原理 25逻辑方程Si= Ai⊕ Bi⊕ CiCi+ 1= AiBi+ BiCi+ CiAi? 逻辑电路(一位全加器)常用的全加器逻辑电路F AC i+1 C iS iA i B i 逻辑符号计算机组成原理 262.n位的行波进位加减器 n个 1位的全加器 (FA)可级联成一个 n位的行波进位加减器。计算机组成原理 27T被定义为相应于单级逻辑电路的单位门延迟。T通常采用一个,与非,门或一个,或非,门的时间延迟来作为度量单位。3TXNOR异或非3TXOT异或2TOR或2TAND与TNOT非TNOR或非TNAND与非时间延迟逻辑符号(正逻辑)门的功能门的名称典型门电路的逻辑符号和延迟时间接线逻辑(与或非 ) AOI T+TRC3.n位的行波进位加法器的问题时间延迟计算机组成原理 28(1)对 一位全加器 (FA)来说, Si的时间延迟为 6T(每级异或门延迟 3T); Ci+ 1的时间延迟为 5T。3T3TTT计算机组成原理 29(2) n位行波进位加法器 的延迟时间 ta为,? 9T为 最低位上的两极, 异或, 门再加上溢出, 异或, 门的总时间;? 2T为每级进位链的延迟时间。ta= n·2T+ 9T= (2n+ 9)T考虑溢出检测时,有:当不考虑溢出检测时,有,ta= (n-1)·2T+ 9Tta为在加法器的输入端输入加数和被加数后,在最坏的情况下加法器输出端得到稳定的求和输出所需要的最长时间。ta越小越好。计算机组成原理 30缺点,(1)串行进位,它的运算时间长;(2)只能完成加法和减法两种操作而不能完成逻辑操作。多功能算术 /逻辑运算单元 (ALU):不仅 具有多种算术运算和逻辑运算 的功能;而且具有 先行进位 逻辑。从而能实现高速运算。由一位全加器 (FA)构成的行波进位加法器,计算机组成原理 311.基本思想Si= Ai⊕ Bi⊕ Ci一位全加器 (FA)的逻辑表达式为,(1)将 Ai和 Bi先组合成由控制参数 S0,S1,S2,S3控制的组合函数 Xi和 Yi;(2)然后再将 Xi,Yi和下一位进位数通过全加器进行全加。这样,不同的控制参数可以得到不同的组合函数,因而能够实现多种算术运算和逻辑运算。解决方案:多功能算术 /逻辑运算单元 (ALU)将全加器的功能扩展以完成多种算术逻辑运算。Ci+ 1= AiBi · (Ci · (Ai⊕ Bi))= AiBi+ BiCi+ CiAi计算机组成原理 32S0S1S2S3X0 Y0参数 S0,S1,S2,S3 分别控制输入 Ai 和 Bi,产生 Y和 X的函数。其中:Yi是受 S0,S1控制的 Ai和 Bi的组合函数;Xi是受 S2,S3控制的 Ai和 Bi组合函数。函数关系如表所示。Xi= S2S3+ S2S3(Ai+ Bi )+ S2S3 (Ai+ Bi )+ S2S3AiYi= S0S1Ai+ S0S1AiBi+ S0S1AiBi? 核心部分是由两个半加器组成的全加器 。? 由 M控制第二级半加器选择逻辑运算或算术运算(所需的低位进位 Cn) 。一位 ALU基本逻辑电路计算机组成原理 33S0 S1 Yi S2 S3 Xi0 00 11 01 1AiAiBiAiBi00 00 11 01 11Ai+ BiAi+ BiAi进一步化简,Xi = S3AiBi + S2AiBiYi = Ai + S0Bi + S1BiAi + S0Bi + S1BiS3AiBi + S2AiBi XiYi = ? = YiFi= Yi⊕ Xi⊕ Cn+iCn+ i+ 1= Yi+ XiCn+ i计算机组成原理 34综上所述,ALU的 一位逻辑 表达式为:Xi = S3AiBi + S2AiBiYi = Ai + S0Bi + S1BiFi= Yi⊕ Xi⊕ Cn+iCn+ i+ 1= Yi+ XiCn+ i计算机组成原理 354位之间采用先行进位(并行进位)公式。根据 Cn+ i+ 1= Yi+ XiCn+ i, 每一位的进位公式可 递推 如下:? 第 0位向第 1位的进位公式为,Cn+ 1= Y0+ X0Cn (其中 Cn是向第 0位(末位)的进位 )? 第 1位向第 2位的进位公式为,Cn+ 2= Y1+ X1Cn+ 1= Y1+ Y0X1+ X0X1Cn? 第 2位向第 3位的进位公式为,Cn+ 3= Y2+ X2Cn+ 2= Y2+ Y1X1+ Y0X1X2+ X0X1X2Cn? 第 3位的进位输出(即整个 4位运算进位输出)公式为,Cn+ 4 =Y3+X3Cn+ 3=Y3+Y2X3+Y1X2X3+Y0X1X2X3+X0X1X2X3Cn4位 ALU的进位关系及逻辑电路计算机组成原理 36Cn+ 1= Y0+ X0CnCn+ 2= Y1+ X1Cn+ 1= Y1+ Y0X1+ X0X1CnCn+ 3= Y2+ X2Cn+ 2= Y2+ Y1X1+ Y0X1X2+ X0X1X2CnCn+ 4 =Y3+X3Cn+ 3=Y3+Y2X3+Y1X2X3+Y0X1X2X3+X0X1X2X3CnCn+4是最后进位输出。逻辑表达式表明,这是一个先行进位逻辑。换句话说,第 0位的进位输入 Cn可以直接传送到最高位上去,因而可以实现高速运算。下图为用上述原始推导公式实现的 4位算术 /逻辑运算单元(ALU)——74181ALU从进位关系上看计算机组成原理 37X0 Y0X1 Y1X2 Y2X3 Y3正逻辑表示的 74181计算机组成原理 38第 3位的进位输出(即整个 4位运算进位输出)公式为,Cn+ 4 =Y3+X3Cn+ 3=Y3+Y2X3+Y1X2X3+Y0X1X2X3+X0X1X2X3Cn设 G= Y3+ Y2X3+ Y1X2X3+ Y0X1X2X3P= X0X1X2X3则 Cn+ 4= G+ PCn其中 G称为 进位发生输出,P称为 进位传送输出 。在电路中多加这两个进位输出的目的,是为了便于实现多片(组) ALU之间的先行进位。P和 G的含义计算机组成原理 39负逻辑表示的 74181X0 Y0X1 Y1X2 Y2X3 Y3计算机组成原理 402.算术逻辑运算的实现上图中控制端 M 用来控制 ALU进行算术运算还是进行逻辑运算,M = 0时:M 对进位信号没有任何影响。此时 Fi不仅与本位的被操作数Yi 和操作数 Xi 有关,而且与向本位的进位值 Cn+i 有关,因此 M =0时,进行 算术操作 。M = 1时:封锁了各位的进位输出,即 Cn+i = 0,因此各位的运算结果 Fi仅与 Yi 和 Xi 有关,故 M = 1时,进行 逻辑操作 。计算机组成原理 41下图为工作于负逻辑和正逻辑操作方式的 74181ALU方框图。两种操作是等效的。? 对正逻辑操作数来说:算术运算称高电平操作;逻辑运算称正逻辑操作(即高电平为,1‖,低电平为,0‖)。? 对于负逻辑操作数来说,正好相反。计算机组成原理 42AA+ BA+ B减 1A加 AB( A+B)加 ABA减 B减 1AB减 1A加 ABA加 B( A+B)加 ABAB减 1A加 A*( A+B)加 A( A+B)加 AA减 1AA+ BA B逻辑 0A BBA BA BA+ BA BBA B逻辑 1A+ BA+ BAA减 1AB减 1AB减 1减 1A加( A+B) AB加( A+B)A减 B减 1A+ BA加( A+B)A加 BAB加( A+B)A+ BA加 A*AB加 AAB加 AAAA BA+ B逻辑 1A+ BBA BA+ BA BA BBA+ B逻辑 0A BA BAL L L LL L L HL L H LL L H HL H L LL H L HL H H LL H H HH L L LH L L HH L H LH L H HH H L LH H L HH H H LH H H H算术运算M=L Cn =H逻辑 M=H算术运算M=L Cn =L逻辑 M=H正逻辑输入与输出负逻辑输入与输出工作方式选择输入S3 S2 S1 S0计算机组成原理 43(1) H=高电平,L=低电平;(2) *表示每一位均移到下一个更高位,即 A*= 2A。(3) 算术运算操作是用补码表示法来表示的,其中:,加, 是指算术加,运算时要考虑进位;符号, +, 是指, 逻辑加, 。(4) 减法是用补码方法进行的,其中数的反码是内部产生的,而结果输出, A减 B减 1‖,因此做减法时需在最末位产生一个强迫进位 (加 1),以便产生, A减 B‖的结果。(5) ―A= B‖输出端可指示两个数是否相等;计算机组成原理 443.并行加法器的进位逻辑74181ALU为 4位并行加法器,组成 16位的并行加法器 ——怎么办?4片 (组 )74181连接 ——怎样连?? 组与组之间串行连接? 组与组之间并行连接计算机组成原理 45(1)组间串行进位C4= G0+ P0 C0C8= G1+ P1 C4C12= G2+ P2 C8C16= G3+ P3 C12进位关系Cn+ 1= Y0+ X0CnCn+ 2= Y1+ X1Cn+ 1= Y1+ Y0X1+ X0X1CnCn+ 3= Y2+ X2Cn+ 2= Y2+ Y1X1+ Y0X1X2+ X0X1X2CnCn+ 4 =Y3+X3Cn+ 3 =Y3+Y2X3+Y1X2X3+Y0X1X2X3+X0X1X2X3Cn组内 组间X0 Y0X1Y1X2Y2X3Y3X0 Y0X1Y1X2Y2X3Y3C4C8C4 C00011G= Y3+ Y2X3+ Y1X2X3+ Y0X1X2X3P= X0X1X2X3计算机组成原理 46(2)组间并行进位 ——两级先行进位的 ALU由串行进位关系C8 = G1+ P1 C4 = G1 + P1 (G0+ P0 C0 ) = G1+G0P1+P0P1C0得:C4= G0+ P0 C0C8= G1+ P1 C4C12= G2+ P2 C8C16= G3+ P3 C12C4 = G0+ P0 C0C12= G2+ P2 C8 = G2 + P2 (G1+G0P1+P0P1Cn) = G2+G1P2+G0P1P2+P0P1P2C0C16 = G3+P3C12 = G3+G2P3+G1P1P2+G0P1P2P3+P0P1P2P3C0 = G*+ P*C0其中, P*= P0P1P2P3G*= G3+ G2P3+ G1P1P2+ G0P1P2P3根据上述公式实现逻辑电路,计算机组成原理 47X0Y0X1Y1X2Y2X3Y3C12 C8 C4X0Y0X1Y1X2Y2X3Y3X0Y0X1Y1X2Y2X3Y30计算机组成原理 484.先行进位部件( CLA) ——7418274182是一个并行进位部件,其内部结构图如下:其中 G*称为 成组进位发生输出, P*称为 成组进位传送输出 。计算机组成原理 49Cn+x = G0+P0CnCn+y = G1+P1Cn+x = G1+G0P1+P0P1CnCn+z = G2+P2Cn+y = G2+G1P2+G0P1P2+P0P1P2CnCn+ 4 = G3+P3Cn+z = G3+G2P3+G1P1P2+G0P1P2P3+P0P1P2P3Cn= G*+ P*Cn其中, P*= P0P1P2P3G*= G3+ G2P3+ G1P1P2+ G0P1P2P3先行进位部件 74182CLA所提供的进位逻辑关系如下:计算机组成原理 5074181ALU设置了 P和 G两个本组先行进位输出端。如果将四片 74181的 P,G输出端送入到 74182先行进位部件( CLA),又可实现第二级的先行进位,即组与组之间的先行进位。例,16位字长 ALU的构成G* P*计算机组成原理 51? C3,C7,C11是由 74182同时形成的;? 其不同点是 74182还提供大组间的进位函数 G* 和大组传递条件 P*,以便在位数更长时组成下一级先行进位链。由图可知:计算机组成原理 52用若干个 74181ALU位片,与配套的 74182先行进位部件 CLA在一起,可构成一个全字长的 ALU。例:全字长的 ALU的构成用两个 16位全先行进位部件级联组成的 32位 ALU逻辑方框图。计算机组成原理 53十进制加法器十进制加法器可由 BCD码 (二 -十进制码 )来设计,它可以在二进制加法器的基础上加上适当的,校正”逻辑 来实现。7 0 1 1 1+ 6 + 0 1 1 01 3 1 1 0 1 ( = D)+ 0 1 1 01 0 0 1 1 ( = 13)3 0 0 1 1+ 5 + 0 1 0 18 1 0 0 0 ( =8)X+Y+C&10不调整X+Y+C&10调整计算机组成原理 54故:1,和为 10~ 15时,加 6校正;2,和数有进位时,加 6校正。和数 (4位 )有进位调整28 + 9 + 37
( =31)+
(=37)计算机组成原理 551.一位 BCD码行波式进位加法器一般结构:0 1 1101010111100110111101111计算机组成原理 562.n位 BCD码行波式进位加法器一般结构:计算机组成原理 57原码乘法补码乘法定点乘法运算计算机组成原理 58设 n位 被乘数和乘数用定点小数表示被乘数 [x]原 = xf, xn- 1… x 1x0乘数 [y]原 = yf, yn- 1… y 1y0则乘积[z]原 = (xf⊕ yf)+ (0,xn- 1… x 1x0)(0,yn- 1… y 1y0)式中, xf为被乘数符号,yf为乘数符号 。原码一位乘法1,乘法的手工算法计算机组成原理 59(2) 手工运算过程:设 x = 0.1101,y = 0.10110,1 1 0 1 (x)0,1 0 1 1 (y)1 1 0 11 1 0 10 0 0 0+ 1 1 0 10,1 0 0 0 1 1 1 1 (z)(1)乘积符号的运算规则,同号相乘为正, 异号相乘为负 。计算机组成原理 60(1) 机器通常只有 n位长,两个 n位数相乘,乘积可能为 2n位。(2) 只有两个操作数相加的加法器难以胜任将 n位积 一次相加起来的运算。机器与人们习惯的算法不同之处:0.1 1 0 1 x× 0.1 0 1 1 y0.0 0 0 0 1 1 0 1 x共 4次右移0.0 0 0 1 1 0 1 x共 3次右移0.0 0 0 0 0 0 x共 2次右移+ 0.0 1 1 0 1 x共 1次右移0.1 0 0 0 1 1 1 12,适合定点机的形式计算机组成原理 61为了适合两个操作数相加的加法器,将 x?y 改写成下面形式:x?y = x?(0.1011)= 0.1?x + 0.00 ?x + 0.001 ?x + 0.0001 ?x= 0.1 ? { x+0.1[ 0 + 0.1 ?(x+0.1 ?x) ] }= 2-1 { x+ 2-1 [0 + 2-1(x+2-1x) ] }根据此式,按式中括号可表达的层次,从内向外 逐次进行移位累加。计算机组成原理 62一般而言,设被乘数 x,乘数 y都是小于 1的 n位定点正数,x=0.x1x2......xn &1y=0.y1y2......yn &1其乘积为:x·y=x(0.y1y2......yn )=x(y12-1 +y22-2 +… + yn2-n )= 2-1(y1x+2-1(y2x+2-1(… +2-1(yn-1x+2-1(ynx+0))… )))计算机组成原理 63形成 递推公式令 zi表示第 i次部分积, 则根据从内到外的原则有:z0 = 0,z1 = 2-1(ynx+z0)z2 = 2-1(yn-1x+z1)┊zi = 2-1(yn-i+1x+zi-1)┊zn = x?y = 2-1(y1x+ zn-1)特点,每次只需要相加两个数, 然后右移一位 。 且相加的两个数 ( 部分积和位积 ) 都只有 n位, 因而不需要 2n位的加法器 。计算机组成原理 643.原码一位乘法流程图开始zi = 0,i=0yn= 1?zi + 0 zi+ xzi,y右移一位, i = i+1i = n?结束yynn计算机组成原理 65部分积 乘数 说明最后结果, x?y=0.0 0.0 0 0 0 yf 1 0 1 1 z0=0+ 0 0.1 1 0 1 y4=1,+x0 0.1 1 0 1? 0 0.0 1 1 0 1 yf 1 0 1 右移, 得 z1+ 0 0.1 1 0 1 y3=1,+x0 1.0 0 1 1? 0 0.1 0 0 1 1 1 yf 1 0 右移, 得 z2+ 0 0.0 0 0 0 y2=0,+00 0.1 0 0 1? 0 0.0 1 0 0 1 1 1 yf 1 右移, 得 z3+ 0 0.1 1 0 1 y1=1,+x0 1.0 0 0 1? 0 0.1 0 0 0 1 1 1 1 yf 右移, 得 z4=x?y例, x=0.1101,y=0.1011,求 x·y 。计算机组成原理 664.原码一位乘硬件逻辑原理图R0→ R1→ ynR2计数器 i部分积 z被乘数 x乘数 yLDR0 LDR1T1,T2,…TiQQ加法器RS启动yn Cx计数器,对移位的次数进行计数,以便判断乘法运算是否结束。当计数器 i=n时,计数器 i的溢出信号使控制触发器 Cx置 0,关闭时序脉冲 T,乘法操作结束。计算机组成原理 67原码一位乘法的主要问题是,符号位不能参与运算,而 补码乘法可以实现符号位直接参与运算 。2 补码一位乘法1.原码一位乘的缺点2.补码一位乘法的规律推导采用比较法。比较法是 Booth夫妇首先提出来的,又称 Booth算法。计算机组成原理 68设 [x]补 = x0.x1x2… xn当 x?0时,x0=0,Booth算法???niiix12[x]补 =0.x1x2… xn = = x???niiix12= -1+ 0.x1x2… xn= -1+???niiix12x = -x0 +真值与补码的关系:当 x?0时,x0=1,[x]补 =1.x1x2… xn = 2 + xx=1.x1x2… xn-2(1)真值和补码之间的关系计算机组成原理 69在补码机器中, 一个数不论其正负, 连同符号位向右移一位, 符号位保持不变, 就等于乘 1/2。设 [x]补 = x0.x1x2… xn???niiix12∵ x = -x0 +∴ x = - x0 +12 12 12 ???niiix12= -x0 + x0 + 12 12 ???niiix12= -x0 + ????ni)i(ix012写成补码的形式, 即得:要得到 [2-ix]补,连同符号位右移 i位即可(2) 补码的右移12[ x ]补 = x0.x0x1x2… xn计算机组成原理 70设被乘数 [x]补 = x0.x1x2… xn乘数 [y]补 = y0.y1y2… yn均为任意符号, 则有补码乘法算式:[ x·y ]补 = [x]补 · y或,[ x·y ]补 = [x]补 · ?????niii ]yy[10 2(3) 补码乘法规则计算机组成原理 711)、当被乘数 x符号任意,乘数 y符号为正时:根据补码定义:?? yyyy.]y[ nL210补)(modxxxxx.x]x[ nn ????? ?L 补yx)yyy(yxy]y[]x[ nn ???????? ? ?211 22补补∴由于( y1y2… yn)是大于或等于 1的正整数,根据模运算性质(大于2的部分全部丢掉)有,2 (y1y2… yn) = 2补补补 ]yx[yx]y[]x[ ?????? 2∴ (mod2)即,y]x[]y[]x[]yx[ ?????补补补补公式证明计算机组成原理 722),当被乘数 x符号任意,乘数 y符号为负时:)(modyyyy.]y[ n 221 21 ??? L补xxx.x]x[ n210? L补 ?????? nn yyy.yyy.]y[y LL补∵x)yyy.(x)yyy.(xyx nn ????? LL ∴补补补 ]x[)]yyy.0(x[]yx[ n21 ??? L)yyy.(]x[)]yyy.(x[ nn LL 2121 00 补补 ?补补补 ]x[)yyy.0(]x[]yx[ n21 ??? L又因 ( 0.y1y2…y n )&0所以:计算机组成原理 73补补补 ]x[)yyy.(]x[]yx[ n ???? ?210)yyy.(]x[ n 10 21 ??? ?补(mod2)?????niii ]yy[10 2= [x]补 ·= [x]补 · y计算机组成原理 74为推导出逻辑实现的分步算法,将上式展开得到各项部分积累加的形式。( yn+1是增加的附加位,初值为 0 )补][ yx?)(][ nnyyyyx ??? ?????? 222 22110 ?补)]()()([][ )( nnnn yyyyyyyx ?????? ????????? 110 ?补])()()()[(][ )( nnnnn yyyyyyyx ????? ?????????
?补])()()[(][ nnn yyyyyyx ??? ??????? 22 111201 ?补???? ???niiii yyx01 2)(][ 补公式展开计算机组成原理 75将上式改为接近于分步运算逻辑实现的递推关系。补]z[ 0 0?补补补 }]x)[yy(]z{[]z[ nn 12112 ?????补补补 }]x)[yy(]z{[]z[ ininii 12112 ?????????补补补 }]x)[yy(]z{[]z[ nn 1111 2 ??? ??补补补 }]x)[yy(]z{[]z[ nn 1011 2 ??? ??MM递推公式补补补补 ]x)[yy(]z[]z[]yx[ nn 011 ???? ?·最后一步不移位计算机组成原理 76由此可见:每次都是在前次部分积的基础上,由 ( yi+1-yi ) 决定对 [x]补的操作,然后再右移一位,得到新的部分积;重复进行。yn+1,yn的作用:开始操作时,补充一位 yn+1,使其初始为 0。由 yn+1 yn 判断进行什么操作;然后再由 ynyn-1 判断第二步进行什么操作 … 。若 yn yn+ 1 =0 1 则 yi+ 1-yi =1 做加 [x]补运算;ynyn+ 1 =10 则 yi+ 1-yi= -1 做加 [-x]补运算 ;ynyn+ 1 =1 1ynyn+ 1= 00则 yi+ 1-yi= 0 [zi]加 0,即保持不变;计算机组成原理 77补码一位乘的运算规则(1) 如果 yn=yn+1,则部分积 [zi] 加 0,再右移一位;(2) 如果 yn yn+1=01,则部分积 [zi] 加 [x]补,再右移一位;(2) 如果 yn yn+1=10,则部分积 [zi] 加 [-x]补,再右移一位;如此重复 n + 1步, 但最后一步不移位 。包括一位符号位, 所得 乘积为 2n+1位, 其中 n为尾数位数 。计算机组成原理 78算法流程图 开始结束[zi]补 +[x]补 → [zi]补 [zi]补 +[-x]补 → [zi]补[z]补 =0,i=0yn yn+1=?[zi]补 不变i=n+1?[zi]补,y右移一位, i=i+101 1001或 11YN计算机组成原理 790 0.0 0 0 0 1,0 0 1 1 0 yn+1=0+ 0 0.1 0 1 1 ynyn+1=10,加 [-x]补0 0.1 0 1 1?0 0.0 1 0 1 1 1 0 0 1 1 右移一位+ 0 0.0 0 0 0 ynyn+1=11,加 00 0.0 1 0 1?0 0.0 0 1 0 1 1 1 0 0 1 右移一位+ 1 1.0 1 0 1 ynyn+1=01,加 [x]补1 1.0 1 1 1?1 1.1 0 1 1 1 1 1 1 0 0 右移一位+ 0 0.0 0 0 0 ynyn+1=00,加 01 1.1 0 1 1?1 1.1 1 0 1 1 1 1 1 1 0 右移一位+ 0 0.1 0 1 1 ynyn+1=10,加 [-x]补0 0.1 0 0 0 1 1 1 1 1 0 最后一位不移位例, [x]补 =1.0101,[y]补 =1.0011,求 [x·y]补 =? [-x]补 =0.1011[x·y]补 =0.部分积 乘数 yn yn+1 说明计算机组成原理 800 0 0 0 0 0 1 0 1 1 0 0 yn+1=0+ 0 0 0 0 0 0 ynyn+1=00,加 00 0 0 0 0 0?0 0 0 0 0 0 0 1 0 1 1 0 右移一位+ 1 1 0 0 1 1 ynyn+1=10,加 [-x]补1 1 0 0 1 1?1 1 1 0 0 1 1 0 1 0 1 1 右移一位+ 0 0 0 0 0 0 ynyn+1=11,加 01 1.1 0 0 1?1 1.1 1 0 0 1 1 0 1 0 1 右移一位+ 0 0 1 1 0 1 ynyn+1=01,加 [x]补0 0 1 0 0 1?0 0 0 1 0 0 1 1 1 0 1 0 右移一位+ 1 1 0 0 1 1 ynyn+1=10,加 [-x]补1 1 0 1 1 1 1 1 1 0 1 0 最后一位不移位[x]补 =001101,[y]补 =10110,[-x]补 =110011[x·y]补 =部分积 乘数 yn yn+1 说明例, x=13,y=-10 求 x·y =?x·y = -=-82H=-130计算机组成原理 814.补码一位乘逻辑原理图R0→ R1 → ynyn+1R2计数器 i部分积 z被乘数 x乘数 y+1LDR0 LDR1 T1,T2,… +1TiQQ加法器RS启动Cx?f+ -yn+1ynyn+1yn多开关路原 反 1001QQ计算机组成原理 82[注 ](1) 被乘数寄存器 R2的每一位用原码(触发器 Q端)或反码(触发器 Q端)经多路开关送出;送 [-x]补 时,即送 R2反码且在加法器最末为加 1;(2) R0保存部分积,其符号与加法器符号位 ?f始终一致。(3) 当计数器 i=n+1时,封锁 LDR1,LDR0信号,使最后一步不移位。计算机组成原理 83高基乘法以上讨论的乘法都只是检查一位二进制位。能否同时检查 K位二进制位?以 K=2,C=A × B为例如果这两位二进制位为 00,则加 0如果这两位二进制位为 01,则加 A如果这两位二进制位为 10,则加 2A如果这两位二进制位为 11,则加 3A2A=4A —2A3A=4A —A如果这两位二进制位为 11,则减 A,4A待下一次补上,由于部分积已右移两位,原来加 4A变成加 A如何知道有 4A的操作哪?两位二进制位为 10或 11,则加 4A计算机组成原理 84B的低两位 前次移出的 位运算 注释2i+1 2i 2i-10 0 0 0 +0+00 0 1 +A +0+A0 1 0 +A +A+00 1 1 +2A +A+A1 0 0 -2A +4A-2A+01 0 1 -A +4A-2A+A1 1 0 -A +4A-A+01 1 1 0 +4A-A+ABooth 4基乘法算法计算机组成原理 85例,A=011011,B=011001,计算 C=A × B 。0 0 0 0 0 0 0 1 0 1 0 0 1 0 010,加 [A]补+ 1 1 1 0 0 1 01 1 1 0 0 1 0?1 1 1 1 1 0 0 1 0 1 0 1 0 0 算术右移两位+ 0 0 1 1 1 0 0 100,加 [-2A]补0 0 1 1 0 0 0?0 0 0 0 1 1 0 0 0 1 0 1 0 1 算术右移两位+ 0 0 0 1 1 1 0 101,加 [-A]补0 0 1 0 1 0 0?0 0 0 0 1 0 1 0 0 0 0 1 0 1 算术右移两位解,[A]补 =1 0010,[B]补 =1 1001,[-A]补 =0001110 [-2A]补 =0011100[A·B]补 =0 0 0 0 1 0 1 0 0 0 0 1 0部分积 乘数 yn-1 yn yn+1 说明A·B =0 10 =142H =322D例,A=-14,B=-23,求 A·B =?计算机组成原理 861.串行加法器的优劣分析? 不需要很多器件,硬件结构简单;? 速度太慢,执行一次乘法操作的时间至少是加法操作的 n倍;由于乘法操作大约占全部算术运算的 1/3,故采用高速乘法部件是非常必要的。高速乘法部件 ---阵列乘法器计算机组成原理 872.不带符号的阵列乘法器设有两个不带符号的二进制整数 A= am- 1…a 1a0,B= bn- 1…b 1b0它们的数值分别为 a和 b,即:? ? ? ?? ????????????????101010101022)()2()2(njminjnmkkkjijijjmiii pbabaabpm-1a = ∑ ai2ii= 0n-1b = ∑ bj2jj= 0在二进制乘法中,被乘数 A与乘数 B相乘,产生 m+ n位乘积 P:P= pm+ n- 1…p 1p0 乘积 P 的数值为,计算机组成原理 88am-1 am-2 ·· a1 a0?) bn-1 ·· b1 b0am-1b0 am-2b0 ·· a1b0 a0b0am-1b1 am-2b1 ·· a1b1 a0b1.,.,.,+) am-1bn-1 am-2bn-1 ·· a1bn-1 a0bn-1pm+n-1 pm+n-2 pm+n-3 ··· pn-1 ·· p1 p0(1) 习惯方法运算过程:计算机组成原理 89计算机组成原理 903.带符号的阵列乘法器(1) 对 2求补器电路例 1,对 1010求补。1 0 1 0 —— 0 1 0 110 1 1 0例 2,对 1011求补。1 0 1 1 —— 0 1 0 010 1 0 1方法:从数的最右端 a0开始,由右向左,直到找出第一个,1‖,例如 ai= 1,0≤ i≤ n。这样,ai以左的每一个输入位都求反,即 1变 0,0变 1。计算机组成原理 911 0 1 00 1 1 01对 2求补电路计算机组成原理 92(2) 带符号的阵列乘法器计算机组成原理 93包括求补级的乘法器又称为 符号求补的阵列乘法器。在这种逻辑结构中,共使用三个求补器,? 两个算前求补器作用是,将两个操作数 A和 B在被不带符号的乘法阵列 (核心部件 )相乘以前,先变成正整数。? 算后求补器作用则是,当两个输入操作数的符号不一致时,把运算结果变成带符号的数。结构,在必要的求补操作以后,A和 B的码值输送给 n× n位不带符号的阵列乘法器,并由此产生 2n位的乘积,A·B= P= p2n- 1… p1p0 p2n= an⊕ bn其中 P2n为符号位。计算机组成原理 94原码一位除法补码一位除法并行除法器定点除法运算计算机组成原理 95被除数 x,其原码为 [x]原 = xf, xn- 1… x 1 x0除数 y,其原码为 [y]原 = yf, yn- 1… y 1 y0则有商 q=x /y,其原码为[q]原 = (xf⊕ yf) + (0,xn- 1…x 1x0 / 0.yn- 1… y 1y0)? 商的符号运算 qf= xf⊕ yf 与原码乘法一样 ;? 商的数值部分的运算,实质上是两个正数求商的运算。原码一位除法设有 n位定点小数:计算机组成原理 961.手算运算步骤例, 设被除数 x=0.1001,除数 y=0.1011,仿十进制除法运算,手算求 x÷ y的过程。0.1 1 0 1 商 q0.1 0 1 1 0.1 0 0 1 0 x (r0) 被除数小于除数,商 0- 0.0 1 0 1 1 2- 1y 除数右移 1位,减除数,商 10.0 0 1 1 1 0 r1 得余数 r1- 0.0 0 1 0 1 1 2- 2y 除数右移 1位,减除数,商 10.0 0 0 0 1 1 0 r2 得余数 r2- 0.0 0 0 1 0 1 1 2- 3y 除数右移 1位,不减除数,商 00.0 0 0 0 1 1 0 0 r3 得余数 r3- 0.0 0 0 0 1 0 1 1 2- 4y 除数右移 1位,减除数,商 1- 0.0 0 0 0 0 0 0 1 r4 得余数 r4得 x ÷ y 的商 q= 0.1101,余数为 r= 0.。计算机组成原理 972.机器运算与手算的不同(1) 在计算机中,小数点是固定的,不能简单地采用手算的办法。为便于机器操作,除数 Y固定不变,被除数和余数进行 左移(相当于乘 2)计算机组成原理 98原码一位除法结果与手算相同, 但余数不是真正的余数, 多乘了 2n,故正确的余数应为 2-n× rn,即,0.00.0001 第四次余数 r4? 01.0010 被除数左移一位,2x&y,商 1+ 11.0101 减 y,即 +[-y]补00.0111 第一次余数 r1? 00.1110 r1左移一位, 2r1&y,商 1+ 11.0101 减 y00.0011 第二次余数 r2? 00.0110 r2左移一位, 2r2&y,商 0? 00.1100 r3左移一位, 2r3=4r2&y,商 1+ 11.0101 减 y00.1 x&y,商 000.1101 x=0.1001,y=0.1011,[-y]补 =1.0101计算机组成原理 99(2) 机器不会心算,必须先作减法,若余数为正,才知道够减;若余数为负,才知道不够减。不够减时必须恢复原来的余数,以便再继续往下运算。这种方法称为 恢复余数法 。(3) 要恢复原来的余数,只要当前的余数加上除数即可。但由于要恢复余数,使除法进行过程的步数不固定,因此控制比较复杂。实际中常用不恢复余数法,又称 加减交替法 。其特点是运算过程中如出现不够减,则不必恢复余数,根据余数符号,可以继续往下运算,因此步数固定,控制简单。机器运算与手算的不同计算机组成原理 1003.恢复余数法被除数减除数,够减时,商 1;不够减时商 0。由于商0时若不够减,即不能作减法,但现在在判断是否商0时,已经减了除数,为了下次能正确运算,必须把已减掉的除数加回去恢复余数。这就是, 恢复余数法, 。【 例 1】 x=0.1001,y=0.1011,用恢复余数法求 x/y.解,[x]原 =[x]补 = x=0,1001,[y]补 =0.1011,[-y]补 =1.0101计算机组成原理 1010 0.1 0 0 1+[-y]补 1 1.0 1 0 1 x减 y1 1.1 1 1 0 余数 r0&0,商,0‖+ [y]补 0 0.1 0 1 1 恢复余数0 0.1 0 0 1 r0’? 0 1.0 0 1 0 0 商 0移入 q,r0’左移+[-y]补 1 1.0 1 0 1 减 y0 0.0 1 1 1 r1&0,商,1‖? 0 0.1 1 1 0 0,1 商 1移入 q,r1左移+[-y]补 1 1.0 1 0 1 减 y0 0.0 0 1 1 r2&0,商,1‖? 0 0.0 1 1 0 0,1 1 商 1移入 q,r2左移+[-y]补 1 1.0 1 0 1 减 y1 1.1 0 1 1 r3&0,商,0‖+[y]补 0 0.1 0 1 1 恢复余数0 0.0 1 1 0 r3’=2r2? 0 0.1 1 0 0 0,1 1 0 商 0移入 q,r3’左移+[-y]补 1 1.0 1 0 1 减 y0 0.0 0 0 1 r4&0,商,1‖? 0 0.0 0 0 1 0,1 1 0 1 商 1移入 q,r4不左移被除数 x / 余数 r 商 q 说明 [x]原 =0,1001[y]补 =0.1011[-y]补 =1.0101计算机组成原理 102余数每次左移相当于乘以 2,在求得 n位商后,相当于多乘了 2n,所以最后余数应乘以 2- n才是正确的值。故,[q]原 =0,1 1 0 1余数 [r4]原 =0.计算机组成原理 1034.加减交替法上述恢复余数法由于要恢复余数, 使得除法的步数不固定,控制比较复杂 。 实际上常用的是 加减交替法 。特点,当运算过程中出现不够减的情况, 不必恢复余数, 而是根据余数的符号, 继续往下运算, 因此步数固定, 控制简单 。运算规则:当余数为正时, 商 1,余数左移一位, 减除数;当余数为负时, 商 0,余数左移一位, 加除数 。【 例 2】 x=0.1001,y=0.1011,用加减交替法求 x/y.解,[x]原 =[x]补 = x =0,1001,[y]补 =0.1011,[- y]补 =1.0101计算机组成原理 1040 0.1 0 0 1+[-y]补 1 1.0 1 0 1 x减 y1 1.1 1 1 0 余数 r0&0,? 1 1.1 1 0 0 0 商 0,r和 q左移一位+[y]补 0 0,1 0 1 1 加 y0 0,0 1 1 1 余数 r1&0? 0 0,1 1 1 0 0.1 商 1,r和 q左移一位+[-y]补 1 1,0 1 0 1 减 y0 0,0 0 1 1 余数 r2&0? 0 0,0 1 1 0 0.11 商 1,r和 q左移一位+[-y]补 1 1,0 1 0 1 减 y1 1,1 0 1 1 余数 r3&0? 1 1,0 1 1 0 0.110 商 0,r和 q左移一位+[y]补 0 0,1 0 1 1 加 y0 0,0 0 0 1 余数 r4&00.1101 商 1,仅 q左移一位被除数 x / 余数 r 商 q 说明得,q = x/y =0.1101 余数 r = 2-4 r4 = 0.[x]原 = 0,1001,[y]补 =0.1011,[- y]补 =1.0101计算机组成原理 105原码加减交替法原理框图计算机组成原理 106(1)若被除数与除数同号, 被除数减去除数;若被除数与除数异号, 被除数加上除数 。(2)余数和除数同号,商 1,余数左移一位,下次减除数;余数和除数异号,商 0,余数左移一位,下次加除数 。(3) 重复步骤 (2),连同符号位在内, 共做 n+1步 。1.补码加减交替算法补码除法的被除数、除数用补码表示,符号位和数位一起参与运算,商的符号位与数位由统一的算法求得。补码一位除法计算机组成原理 107为统一并简化硬件电路:一开始就根据 [x]补 和 [y]补 的符号位是否相同,上一位商 q0?,但 q0?不是真正的商的符号,称其为假商。? 如果 [x]补 和 [y]补 的符号位相同,假商为 1,控制下次做减法;? 如果 [x]补 和 [y]补 的符号位不同,假商为 0,控制下次做加法。按同样的规则,共做 n+1步运算后,假商 q0?移出了存放商的寄存器,剩下 q0至 qn,即运算结果。例 3,[x]补 =1.0111,[y]补 =0.1101,求 [x/y]补 。计算机组成原理 1081 1.0 1 1 1 0 [x]补,[y]补 异号,商 q0?=0+[y]补 0 0,1 1 0 1 加除数0 0.0 1 0 0 余数和除数同号? 0 0.1 0 0 0 01 左移一位,商 1+[-y]补 1 1.0 0 1 1 减除数1 1.1 0 1 1 余数和除数异号? 0 0,1 1 1 0 010 左移一位,商 0+[y]补 1 1,0 1 0 1 加除数0 0,0 0 1 1 余数和除数同号? 0 0,0 1 1 0 0101 左移一位,商 1+[-y]补 1 1,0 0 1 1 减除数1 1,1 0 0 1 余数和除数异号? 1 1,0 0 1 0 01010 左移一位,商 0+[y]补 0 0,1 1 0 1 加除数1 1,1 1 1 1 余数和除数异号? 1 1,1 1 1 1 1.0100 仅 q左移一位,商 0,余数不左移被除数 x / 余数 r 商 q 说明得,[q]补 = x/y =1.1 (校正量 ) = 1.0101 [r]补 =1.1111[x]补 =1.0111[y]补 =0.1101[-y]补 =1.0011计算机组成原理 109补码一位除法的算法是在商的末位, 恒置 1‖的舍入条件下推导的, 故此算法存在误差, 这样引起的最大误差是 2-n。 在对计算精度没有特殊要求的情况下, 一般就采用商的末位, 恒置 1‖的办法, 这样操作比较简单, 而且易于实现 。如果需要进一步提高商的精度, 可按上述方法多求一位, 再用以下方法进行校正:(1)刚好能除尽时, 若除数为正, 商不必校正;若除数为负, 则商加 2-n。2.商的校正(2) 不能除尽时,若商为正,则不必校正;若商为负, 则商加 2-n。计算机组成原理 110阵列式除法器是一种并行运算部件,采用大规模集成电路制造。与早期的串行除法器相比,阵列除法器不仅所需的控制线路少,而且能提供令人满意的高速运算速度。阵列除法器有多种多样形式:不恢复余数阵列除法器 ;补码阵列除法器 等等。3.阵列除法器计算机组成原理 111(1) 可控加法 /减法 (CAS)单元用于并行除法流水逻辑阵列中。 P=0 做加法运算P=1 做减法运算计算机组成原理 112Si= Ai⊕ (Bi⊕ P)⊕ CiCi+ 1= (Ai+ Ci)·(Bi⊕ P)+ AiCi? 当 P= 0时,即是我们熟悉的一位全加器 (FA)的公式:Si= Ai⊕ Bi⊕ CiCi+ 1= AiBi+ BiCi+ AiCiCAS单元的输入与输出的关系可用如下一组逻辑方程来表示:? 当 P= 1时,则得求差公式:在减法情况下:输入 Ci称为借位输入,而 Ci+ 1称为借位输出。Si= Ai⊕ Bi⊕ CiCi+ 1= AiBi+ BiCi+ AiCi其中 Bi= Bi⊕ 1。计算机组成原理 113Si= Ai⊕ (Bi⊕ P)⊕ CiCi+ 1= (Ai+ Ci)·(Bi⊕ P)+ AiCi加以变换,可得如下形式:在这两个表达式中,每一个都能用一个三级组合逻辑电路 (包括反向器 )来实现。因此每一个基本的 CAS单元的延迟时间为 3T单元。为说明 CAS单元的实际内部电路实现,将方程式Si= Ai⊕ (Bi⊕ P)⊕ CiCi+ 1= (Ai+ Ci)(Bi⊕ P)+ AiCi= AiBiP+ AiBiP+ BiCiP+ BiCiP+ AiCi( A?B=AB+AB )= AiBiCiP+ AiBiCiP+ AiBiCiP+ AiBiCiP+ AiBiCiP+ AiBiCiP+ AiBiCiP+ AiBiCiP计算机组成原理 114(2)不恢复余数的阵列除法器不恢复余数阵列除法,也叫加减交替法。在不恢复余数的除法阵列中,? 当余数为正时( ri ≥ 0),商,1‖,下次做减法运算,减法是用 2的补码运算来实现的,此时[x-y]补 = [x ]补 + [-y]补 ;? 当余数为负时( ri& 0),商,0‖,下次做加法运算 ;? 每次运算完成后要将余数左移一位,再与除数做加或减运算 ;? 商的符号由两数的符号按位相加求得。计算机组成原理 115例,x=0.101001,y=0.111,求 x÷ y。 [-y]补 =1.001解, 被除数 x 0,1 0 1 0 0 1减 y + 1,0 0 1 (相当于加 [-y]补 )余数为负 1,1 1 0 0 0 1 < 0 → q0=0余数左移 1,1 0 0 0 1加 y + 0,1 1 1余数为正 0,0 1 1 0 1 > 0 → q 1=1余数左移 0,1 1 0 1减 y + 1,0 0 1 (相当于加 [-y]补 )余数为负 1,1 1 1 1 < 0 → q 2=0余数左移 1,1 1 1加 y + 0,1 1 1余数为正 0,1 1 0 > 0 → q 3=1故得 商 q=q0.q1q2q3=0.101 余数 r=(0.00r3r4r5r6)=0.000110计算机组成原理 116不恢复余数阵列除法器的逻辑原理被除数 x= 0,x1 x2 x3 x4 x5 x6除数 y= 0,y1 y2 y3商数 q = 0.q1q2q3余数 r = 0.00r3r4r5r6计算机组成原理 117? 被除数 x 是一个 6位的小数 (双倍长度值 ):x = 0.x 1x 2x 3x 4x 5x 6它是由顶部一行和最右边的对角线上的垂直输入线来提供的。? 除数y是一个 3位的小数y = 0.y 1y 2y 3它沿对角线方向进入这个阵列。这是因为:在除法中所需要的部分余数的左移,可以用下列等效的操作来代替:即让余数保持固定,而将除数沿对角线右移。? 最上面一行所执行的初始操作经常是减法。 因此最上面一行的控制线 P固定置成,1‖。计算机组成原理 118? 减法是用 2的补码运算来实现的,这时右端各 CAS单元上的反馈线用作初始的进位输入。? 每一行最左边的单元的进位输出决定着商的数值。将当前的商反馈到下一行,我们就能确定下一行的操作。由于进位输出信号指示出当前的部分余数的符号,因此,它将决定下一行的操作将进行加法还是减法。计算机组成原理 119由图看出,该阵列除法器是用一个可控加法 /减法 (CAS)单元所组成的流水阵列来实现的。推广到一般情况:一个 (n+1) 位除 (n+1)位的加减交替除法阵列由 (n+ 1)2个 CAS单元组成,其中两个操作数 (被除数与除数 )都是正的。n为尾数位数。计算机组成原理 120对不恢复余数阵列除法器来说,在进行运算时:? 沿着每一行都有进位 (或借位 )传播;? 同时所有行在它们的进位链上都是串行连接;? 而每个 CAS单元的延迟时间为 3T单元。因此,对一个 2n位除以 n位的不恢复余数阵列除法器来说,单元的数量为 (n+ 1)2,考虑最大情况下的信号延迟,其除法执行时间为 td= 3(n+ 1)2T其中 n为尾数位数。计算机组成原理 121浮点运算方法和浮点运算器浮点加、减法运算浮点乘、除法运算计算机组成原理 122尾数,用定点小数表示,给出有效数字的位数,决定了浮点数的表示精度;阶码,用整数形式表示,指明小数点在数据中的位置,决定了浮点数的表示范围。机器浮点数格式,浮点数的表示方法阶符 阶码 数符 尾数Es E1 E2 …… E m Ms M1 M2 …… M n计算机组成原理 123IEEE 标准:尾数用原码 ; 阶码用, 移码,; 基为 2。浮点数的标准格式按照 IEEE754 的标准,32位浮点数和 64位浮点数的标准格式为,31 30 23 22 0S E M32位S E M63 62 52 51 064位? 为便于软件移植,使用 IEEE标准计算机组成原理 124设有两个浮点数 x 和 y,它们分别为,浮点加、减法运算其中 Ex 和 Ey 分别为数x和y的阶码,Mx 和 My为数x和y的尾数。两浮点数进行加法和减法的运算规则是,x ± y= (Mx2Ex- Ey± My)2Ey Ex &= Eyx= 2Ex · Mxy= 2Ey · My计算机组成原理 125完成浮点加减运算的操作过程大体分为四步:(1) 0 操作数的检查;(2) 比较阶码大小并完成对阶;(3) 尾数进行加或减运算;(4) 结果规格化。(5) 舍入处理。(6)溢出处理 。计算机组成原理 126使二数阶码相同(即小数点位置对齐),这个过程叫作 对阶 。? 先 求两数阶码 Ex 和 Ey之差,即△ E = Ex- Ey若 △ E = 0,表示 Ex=Ey若 △ E & 0,Ex&Ey若 △ E & 0,Ex&Ey 通过尾数的移动来改变Ex或 Ey,使其相等,? 对阶原则阶码小的数向阶码大的数对齐;小阶的尾数右移,每右移一位,其阶码加 1(右 规 )。(2) 对阶(1) 0 操作数检查计算机组成原理 127例, x=201× 0.1101,y=211× (-0.1010),求 x+y=?解,为便于直观了解, 两数均以 补码 表示, 阶码, 尾数均采用双符号位 。[x]补 =00 01,00.1101 [y]补 =00 11,11.0110[△ E]补 = [ Ex]补 - [Ey]补 = 00 01+11 01 = 11 10△ E = -2,表示 Ex比 Ey小 2,因此将 x的尾数右移两位,右移一位,得 [x]补 =00 10,00.0110再右移一位,得 [x]补 =00 11,00.0011至此,△ E=0,对阶完毕,计算机组成原理 128尾数求和方法与定点加减法运算完全一样。对阶完毕可得, [x]补 =00 11,00.0011[y]补 =00 11,11.0110对尾数求和, 00.0011+ 11.011011.1001即得, [x+y]补 =00 11,11.1001(3) 尾数求和运算计算机组成原理 129(4) 结果规格化求和之后得到的数可能不是规格化了的数,为了增加有效数字的位数,提高运算精度,必须将求和的结果规格化,① 规格化的定义, (二进制 )121 ?? S对正数, S=00.1××× … ×对负数, S=11.0××× … ×采用双符号位的补码:采用原码:正数, S=0.1 ××× … ×负数,S=1.1 ××× … ×计算机组成原理 130若不是规格化的数,需要尾数 向左 移位,以实现规格化的过程,我们称其为 向左规格化 。② 向左规格化前例中,00 11,11.1001不是规格化数,因而需要左规,即 左移一位,阶码减 1,得,[x+y]补 =00 10,11.0010③ 向右规格化浮点加减运算时,尾数求和的结果也可能得到:01.××× … × 或 10.××× … ×,即两符号位不等,即结果的绝对值大于 1。 向左破坏了规格化 。此时,将尾数运算的结果右移一位,阶码加 1,称为 向右规格化。计算机组成原理 131例,两浮点数 x=0.,y=(0.1011) ?201,求 x+y。解, [x]补 =00 10,00.1101 [y]补 =00 01,00.1011对阶,[△ E]补 = [ Ex]补 - [Ey]补 =00 10+ 11 11= 00 01y向 x对齐,将 y的尾数右移一位,阶码加 1。[y]补 =00 10,00.0101求和,00.1101+ 00.010101.0010 [x+y]补 =00 10,01.0010右归,运算结果两符号位不同,其绝对值大于 1,右归。[x+y]补 = 00 11,00.1001计算机组成原理 132在对阶或向右规格化时,尾数要向右移位,这样,被右移的尾数的低位部分会被丢掉,从而造成一定误差,因此要进行 舍入处理 。? 简单的舍入方法有两种,①, 0舍 1入, 法即如果右移时被丢掉数位的最高位为 0则舍去,反之则将尾数的末位加, 1‖。②, 恒置 1‖法即只要数位被移掉,就在尾数的末位恒置, 1‖。从概率上来说,丢掉的 0和 1各为 1/2。(5) 舍入处理? IEEE754标准中,舍入处理提供了四种可选方法:计算机组成原理 133(6)溢出处理与定点加减法一样,浮点加减运算最后一步也需判溢出。在浮点规格化中已指出,当尾数之和 (差 )出现 01,×× … ×或 10,×× … × 时,并不表示溢出,只有将此数 右规 后,再根据 阶码 来判断浮点运算结果是否溢出。计算机组成原理 134若机器数为补码,尾数为规格化形式,并假设阶符取 2位,阶码取 7位、数符取 2位,尾数取 n位,则它们能表示的补码在数轴上的表示范围如图所示。正负计算机组成原理 135图中 A,B,a,b分别对应最小负数、最大正数、最大负数和最小正数。它们所对应的真值分别是:A最小负数 2+127 ? (-1)B最大正数 2+127 ? (1-2-n)a最大负数 2-128 ? (-2-1-2-n)b最小正数 2-128 ?2-1正负计算机组成原理 136图中 a,b之间的阴影部分,对应阶码小于 128的情况,叫做浮点数的下溢。下溢时.浮点数值趋于零,故机器不做溢出处理,仅把它作为机器零。图中的 A,B两侧阴影部分,对应阶码大于 127的情况,叫做浮点数的上溢。此刻,浮点数真正溢出,机器需停止运算,作溢出中断处理。 一般说浮点溢出,均是指上溢。可见,浮点机的溢出与否可由阶码的符号决定:阶码 [j]补 =01,?????为上溢,机器停止运算,做中断处理;阶码 [j]补 =10,?????为下溢,按机器零处理。计算机组成原理 137例,若某次加法操作的结果为 [X+Y]补 =11.010,00.则应对其进行向左规格化操作:尾数为,00., 阶码减 4:11.010+ 11.100 [-4]补10.110例,若某次加法操作的结果为 [X+Y]补 =00.111,10.则应对其进行向右规格化操作:尾数为,11., 阶码加 1,01.000阶码超出了它所能表示的最大正数( +7),表明本次浮点运算产生了溢出。阶码超出了它所能表示的最小负数( -8),表明本次浮点运算产生了溢出。计算机组成原理 138在加, 减运算过程中要检查是否产生了溢出:若阶码正常,加减运算正常结束;若阶码溢出, 则要进行相应的处理 。阶码上溢 ——超过了阶码可能表示的最大值的正指数值,一般将其认为是+ ∞ 和- ∞ 。阶码下溢 ——超过了阶码可能表示的最小值的负指数值,一般将其认为是 0。? 浮点数的溢出是以其阶码溢出表现出来的? 对尾数的溢出也需要处理 (上溢 —右归,下溢 —舍入)。小结:计算机组成原理 139计算机组成原理 140例 设x =11011,y =2100 ?(-0.),求x +y。解,阶码采用双符号位,尾数采用单符号位,则它们的浮点表示分别为 [x]浮 = 00 010,0.[y]浮 = 00 100,1.(1) 求阶差并对阶△ E = Ex- Ey= [Ex]补 + [-Ey]补 = 00 010 + 11 100 = 11 110[x]浮 = 00 100,0.)其中 (11)表示 Mx 右移 2位后移出的最低两位数。即△ E为 -2,x的阶码小,应使 Mx右移两位,Ex加 2,计算机组成原理 141(2)尾数求和(4) 舍入处理采用 0舍 1入法处理,则有,1.+ 11.0.)+ 1.1.)(3) 规格化处理尾数运算结果的符号位与最高数值位为同值, 应执行左规处理, 结果为 1.),阶码为 00 011。(5) 判断溢出阶码符号位为 00,不溢出, 故得最终结果为x + y = 2011 × (-0.)计算机组成原理 142例 两浮点数 x = 201× 0.1101,y = 211× (-0.1010)。假设尾数在计算机中以补码表示,可存储 4位尾数,2位保护位,阶码以原码表示,求 x+y。解,将 x,y转换成浮点数据格式[x]浮 = 00 01,00.1101[y]浮 = 00 11,11.0110步骤 1:对阶,阶差为 11-01=10,即 2,因此将 x的尾数右移两位,得[x]浮 = 00 11,00.001101步骤 2:对尾数求和,得,[x+y]浮 = 00 11,11.100101步骤 3:由于符号位和第一位数相等,不是规格化数,向左规格化,得[x+y]浮 = 00 10,11.001010步骤 4:截去。[x+y]浮 = 00 10,11.0010步骤 5,数据无溢出,因此结果为x+y = 210× (-0.1110)计算机组成原理 143浮点运算电路浮点加法器原理框图MES MES小 ALU大 ALU控制右移左移或右移舍入部件阶码差加 1 或减 1MES1 110 00计算机组成原理 144浮点乘、除法运算1.浮点乘法、除法运算规则设有两个浮点数x和y,x= 2Ex·M xy= 2Ey·M y浮点乘法运算的规则是,x ?y= 2(Ex+ Ey) · (Mx? My)即,乘积的尾数是相乘两数的尾数之积 ;乘积的阶码是相乘两数的阶码之和。浮点除法运算的规则是, x ÷ y= 2(Ex- Ey) · (Mx÷ My)即:商的尾数是相除两数的尾数之商 ;商的阶码是相除两数的阶码之差。计算机组成原理 1452,浮点乘、除法运算步骤浮点数的乘除运算大体分为四步:(1) 0 操作数检查;(2) 阶码加 /减操作;(3) 尾数乘 /除操作;(4) 结果规格化及舍入处理。计算机组成原理 146(2) 浮点数的阶码运算? 对阶码的运算有+ 1、- 1、两阶码求和、两阶码求差四种,运算时还必须检查结果是否溢出。? 在计算机中,阶码通常用补码或移码形式表示。① 移码的运算规则和判定溢出的方法移码的定义为 [x]移 = 2n +x - 2n ≤ x & 2n[x]移 + [y]移 = 2n +x + 2n +y= 2n +[x +y ]移按此定义,则有= 2n +(2n +(x +y ))[x +y ]移 = -2n + [x]移 + [y]移计算机组成原理 147考虑到移码和补码的关系:对同一个数值,其数值位完全相同,而符号位正好完全相反。[y]补 的定义为 [y]补 = 2n+1 +y则求阶码和用如下方式完成:= 2n+1 + (2n +(x +y ))[x]移 +[y]补 = 2n +x + 2n+1 +y即,[x +y ]移 = [x]移 +[y]补 (mod 2n+1)同理,[x -y ]移 = [x]移 +[-y]补 (mod 2n+1)② 混合使用移码和补码计算机组成原理 148使用双符号位的阶码加法器,并规定移码的第二个符号位,即最高符号位恒用 0 参加加减运算,则溢出条件是结果的最高符号位为 1:? 当低位符号位为 0时,( 10) 表明结果上溢,? 当低位符号位为 1时,( 11) 表明结果下溢。? 当最高符号位为 0时,表明没有溢出,低位符号位为 1,( 01) 表明结果为正 ;为 0,( 00) 表明结果为负。③ 阶码运算结果溢出处理计算机组成原理 149例,x = +011,y = +110,求 [x+y]移 和 [x-y]移,并判断是否溢出 。解:阶码取 3位(不含符号位),其对应的真值范围是 -8~+7[x]移 = 01 011,[y]补 = 00 110,[-y]补 =11 010[x+y]移 = [x]移 + [y]补 =[x-y]移 = [x]移 + [-y]补 =01 011+ 00 11010 001 结果上溢。结果正确,为 -3。01 011+ 11 01000 101计算机组成原理 150(3) 尾数处理浮点加减法对结果的规格化及舍入处理也适用于浮点乘除法。第一种方法是:无条件地丢掉正常尾数最低位之后的全部数值。这种办法被称为截断处理,好处是处理简单,缺点是影响结果的精度。第二种办法是:运算过程中保留右移中移出的若干高位的值,最后再按某种规则用这些位上的值修正尾数。这种处理方法被称为 舍入处理 。计算机组成原理 151? 当尾数用原码表示时,最简便的方法是,只要尾数的最低位为 1,或移出的几位中有为 1的数值位,就使最低位的值为 1。另一种是 0舍 1入法,即当丢失的最高位的值为 1时,把这个 1加到最低数值位上进行修正,否则舍去丢失的的各位的值。这样处理时,舍入效果对正数负数相同,入将使数的绝对值变大,舍则使数的绝对值变小。舍入处理计算机组成原理 152? 当尾数是用补码表示时,采用 0舍 1入法时,若丢失的位不全为 0时:对正数来说,舍入的结果与原码分析相同;对负数来说,舍入的结果与原码分析相反,即“舍”使绝对值变大,“入”使绝对值变小;为使原、补码舍入处理后的结果相同,对 负数 可采用如下规则进行舍入处理:当丢失的各位均为 0时,不必舍入;当丢失的最高位为 0,以下各位不全为 0 时,或者丢失的最高位为 1,以下各位均为 0时,则舍去丢失位上的值;当丢失的最高位为 1,以下各位不全为 0 时,则执行在尾数最低位入 1的修正操作。计算机组成原理 153例 设 [x1]补 = 11.,[x2]补 = 11.,[x3]补 = 11.,[x4]补 = 11.,求执行只保留小数点后 4位有效数字的舍入操作值。解, 执行舍入操作后,其结果值分别为[x1]补 = 11.0110 (不舍不入 )[x2]补 = 11.0110 (舍 )[x3]补 = 11.0110 (舍 )[x4]补 = 11.1000 (入 )计算机组成原理 154例 设有浮点数x =2- 5 ?0.0110011,y = 23 ? (-0.1110010),阶码用 4位移码表示,尾数 (含符号位 )用 8位补码表示。求 [x ?y ]浮 。要求用补码完成尾数乘法运算,运算结果尾数保留高 8位 (含符号位 ),并用尾数低位字长值处理舍入操作。解, 移码采用双符号位,尾数补码采用单符号位,则有[Mx]补 = 0.0110011,[My]补 = 1.0001110,Ex]移 = 00 011,[Ey]移 = 01 011,[Ey]补 = 00 011,[x]浮 = 00 011,0.0110011,[y]浮 = 01 011,1.0001110计算机组成原理 155(2) 尾数乘法运算可采用补码阵列乘法器实现,即有(1) 求阶码和[Ex+ Ey]移 = [Ex]移 + [Ey]补 = 00 011+ 00 011= 00 110,值为移码形式 -2。[Mx]补 ? [My]补 = [0.0110011]补 ? [1.0001110]补= [1.1010]补计算机组成原理 156(4) 舍入处理(3) 规格化处理乘积的尾数符号位与最高数值位符号相同,不是规格化的数,需要左规,阶码变为 00 101(-3),尾数变为 1.0100。尾数为负数,取尾数高位字长,按舍入规则,舍去低位字长,故尾数为 1.0100101 。最终相乘结果为其真值为 x ?y= 2- 3 ? (- 0.1011011)[x ?y ]浮 = 00 101,1.0100101
课件名称:课件分类:计算机课件类型:电子教案文件大小:15.08MB下载次数:10评论次数:9用户评分:6.9
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.

参考资料

 

随机推荐