![点击分享此内容 分享](/master/images/share_but.png)
计算机组成原理 第三章1运算器.ppt
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
10 文币 0人已下载
下载 | 加入VIP,免费下载 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机组成原理 第三章1运算器.ppt
- 资源描述:
-
1、第三章 CPU子系统,中央处理器(CPU)是计算机系统的核心组成部件,它包括运算器和控制器两大部分。,本章主要讨论:,运算器 控制器 数据通路结构 与外部的连接,CPU组成,CPU工作原理,指令的执行过程,3.1 算术、逻辑运算基础,计算机进行运算的特点: (1)所有数据都是用二进制数位形式来表示的。 (2)在机器内部,数是以编码形式即机器数来表示的。 (3)机器运算规模有限,因而机器运算就要解决运算方法、数据表示格式及数据长度的选取、规定等问题。 (4)用计算机进行运算时,都要把复杂的运算,简化为一系列的、最基本的运算才能实现。计算机可以实现的基本运算有算术运算(加、减、乘、除等)和逻辑运算
2、(与、或、异或等)。,3.1.1 定点加减运算,补码加减法: 补码的一个重要特点是它可以直接进行加减法运算,并且计算简单,因此计算机中基本采用补码加减法。 运算规则: (1)参与运算的操作数用补码表示,符号位作为数的一部分直接参与运算,所得即为补码表示的运算结果。 (2)若操作码为加,则两数直接相加; (3)若操作码为减,则将减数变补后再与被减数相加。,3.1.1 定点加减运算,计算公式X+Y补=X补+Y补X-Y补=X补+-Y补 例1 已知X=9,Y=3,求X+Y补, X-Y补, Y-X补。 解: X+Y补= X补+Y补=01001+00011=01100X-Y补=X补+-Y补=01001+1
3、1101=100110Y-X补=Y补+-X补=00011+10111=11010,3.1.1 定点加减运算,例2X=0.001010 Y=-0.100011 求X-Y补解 X补=0.001010 -Y补=0.100011则 X-Y补 = X补+-Y补= 0.001010 + 0.100011= 0.101101,3.1.2 溢出判断与移位,一.溢出机器数字长5位,其中含1位数符,补码运算,问:定点整数表示范围?-16 +15 (10000 01111)所谓溢出就是指运算结果大于机器所能表示的最大正数或小于机器所能表示的最小负数。,3.1.2 溢出判断与移位,正溢:两个正数相加后结果超出允许的表
4、示范围。 如:1版: P106 例3-32版: P100 例3-3 负溢:两个负数相加后结果超出允许的表示范围。 如: 1版: P106 例3-52版: P100 例3-5,3.1.2 溢出判断与移位,溢出判别 定义:两操作数的数符分别为SA、SB,结果的数符为Sf。符号位直接参与运算,产生的符号位进位为Cf。最高有效数位产生的进位为C。 1.判别方法一:溢出=,只有同号数相加才能产生溢出,溢出的标志是结果数符与操作数数符相反,3.1.2 溢出判断与移位,2.判别方法二:溢出=,(Cf为符号位运算产生的进位,C为最高有效数位产生的进位。),Cf 和C不同时表明溢出,3.判别方法三: 操作数采用
5、双符号位(变形补码),通过运算结果的符号位进行判断:(P101),00 结果为正,无溢出 01 结果正溢 10 结果负溢 11结果为负,无溢出,3.1.2 溢出判断与移位,二. 移位 逻辑移位(1) 数字代码为纯逻辑代码,没有数值意义(2)分为:循环左移、循环右移、非循环左移、非循环右移,3.1.2 溢出判断与移位,算术移位 1、原码(及正数补码)移位规则:数符不变,空位补0 2、负数补码移位规则:左移:数符不变,空位即末位补0右移:数符不变,空位补1,3.1.2 溢出判断与移位,3. 例: 原码和正数补码0.0101 左移一位 0.10101.0101 左移一位 1.101000.1010
6、左移一位 01.0100 (*双符号位时可左移1位,第二符号位暂存数值,第一符号位仍表示符号)1.1010 右移一位 1.010101.0100 右移一位 00.1010 (* 双符号位时右移1位,第二符号位暂存的数值移到最高有效位。),3.1.2 溢出判断与移位,负数补码 左移:1.1011 左移一位 1.011011.0110 左移一位 10.1100 右移:1.0110 右移一位 1.101110.1100 右移一位 11.0110,3.1.2 溢出判断与移位,三. 舍入 舍入的原则使本次舍入产生的误差及累计误差都比较小 两种舍入规则1、 0舍1入 2、末位“恒置1” 例: 课本P103
7、 例3-8 例3-11,3.1.3 定点乘法运算,手算例子:,1101,1101,0000,1101,0.10001111,由于结果为负,所以,3.1.3 定点乘法运算,手算到机器实现要解决的问题1、符号问题解决方法:原码乘法符号单独处理,补码乘法符号参与运算 2、乘积等于各位积之和(要考虑权)“位积”是乘数的某位乘以被乘数所得到的积。“部分积”是位积的和。1)n位乘法运算就有n个位积,要n个寄存器来存放位积;2)加法器难以完成n个位积的同时求和;3)需要2n位字长的加法器,通常的加法器都是n位字长。解决方法:n次累加与移位循环或阵列乘法器,3.1.3 定点乘法运算,手算的改进(将一次相加改为
8、分步累加),1101,01101,+ 1101,100111,100111,+ 0000,100111,0100111,+ 1101,10001111,10001111,3.1.3.1 原码一位乘法,一. 基本思想: 乘积的数值部分是乘数和被乘数的数值部分相乘之积。 乘积的符号由两数的符号异或得到(同号相乘为正,异号相乘为负)。 每次用一位乘数去乘被乘数,并将一位乘数所对应的位积与原部分积的累加和相加,并移位。设 X = Sx.x1x2xn , Y = Sy.y1y2yn 乘积的尾数 : P = |X| . |Y|乘积的符号:Sp = Sx Sy,3.1.3.1 原码一位乘法,二. 举例实现
9、已知 X=0.1101,Y=-0.1011,求XY=? 设置寄存器:A:存放部分积累加和、乘积高位B:存放被乘数C:存放乘数、乘积低位 设置初值:A = 00.0000B = |X| = 00.1101C = |Y| = .1011,步数 条件 操作 A C,00.0000 .1011,1),Cn=1,+B,Cn,+ 00.1101,00.1101,00.0110,1.101,2),Cn=1,+B,+ 00.1101,01.0011,00.1001,11.10,3),Cn=0,+0,+ 00.0000,00.1001,00.0100,111.1,+B,4),Cn=1,+ 00.1101,01.
10、0001,00.1000,1111,X原Y原 = 1.10001111,三. 算法流程,Y,Y,N,N,3.1.3.1 原码一位乘法,四. 运算规则 (1)操作数、结果用原码表示; (2)绝对值运算,符号单独处理; (3)被乘数(B)、累加和(A)取双符号位; (4)乘数末位(Cn)为判断位,其状态决定下步操作; (5)作n次循环(累加、右移)。,3.1.3.1 原码一位乘法,五. 逻辑实现 加法器输入端控制信号:+A、+B 加法器输出端控制信号:1/2 A、C、CPA、CPC,3.1.3.2 补码一位乘法,一. 原则操作数与结果均以补码表示,连同符号位一起,按相应算法运算。 二. 实现方法:
11、 1.校正法 XY补=X补0.Y1Y2Yn-X补Y0,乘数Y的符号位,3.1.3.2 补码一位乘法,(1)Y为正:Y补 = 0.Y1Y2Yn, Y0=0XY补=X补0.Y1Y2Yn-X补Y0= X补0.Y1Y2Yn (2)Y为负:Y补 = 1.Y1Y2Yn,Y0=1XY补=X补0.Y1Y2Yn-X补Y0= X补0.Y1Y2Yn-X补,3.1.3.2 补码一位乘法,2.比较法: 展开为部分积的累加和形式: XY补=X补0.Y1Y2Yn-X补Y0,3.1.3.2 补码一位乘法,若定义Z0为初始部分积,Z1补Zn补依次为各步求得的累加并右移后的部分积,可将上式改写为: Z0补 = 0 Z1补 = 2
12、-1 Z0补 +(Yn+1-Yn)X补 Z2补 = 2-1 Z1补 +(Yn-Yn-1)X补,Zn补 = 2-1 Zn-1补 +(Y2-Y1)X补 XY补 = Zn补 +(Y1-Y0)X补,3.1.3.2 补码一位乘法,三. 比较法算法 由于它的操作是乘数相邻两位之差(低位减高位),即两位的比较结果,所以称为比较法。 1.基本操作:被乘数X补乘以对应的乘数相邻两位之差值再与原部分积累加,然后右移一位,形成该步的部分累加和。,3.1.3.2 补码一位乘法,Yn(高位) Yn+1(低位) 操作(A补为部分积累加和),0 00 11 01 1,原部分积右移一位 1/2A补原部分积加X补后再右移一位
13、1/2(A补+X补)原部分积加-X补后再右移一位1/2(A补-X补)原部分积右移一位 1/2A补,( 0 ),( 1 ),(-1 ),( 0 ),3.1.3.2 补码一位乘法,2.例 X=-0.1101,Y=-0.1011,求(XY)补。 设初值:A=00.0000,B=X补=11.0011,-B=(-X)补=00.1101,C =Y补=1.0101,步数 条件 操作 A C,00.0000 1.0101,1),1 0,-B,Cn,+ 00.1101,00.1101,00.0110,11.0101,2),0 1,+B,+ 11.0011,11.1001,11.1100,111.010,3),1
14、 0,-B,+ 00.1101,00.1001,00.0100,1111.01,4),0 1,+B,+ 11.0011,11.0111,11.1011,11111.0,0,Cn+1,CnCn+1,5),1 0,-B,+ 00.1101,3.1.3.2 补码一位乘法,(XY)补 = 0.10001111,4),0 1,+B,+ 11.0011,11.0111,11.1011,11111.0,5),1 0,-B,+ 00.1101,00.1000,1111,修正,1.0 : -B修正 0.1 : +B修正 0.0 : 不修正 1.1 : 不修正,3.1.3.2 补码一位乘法,3. 运算规则:(1)
15、A、B取双符号位,符号参加运算; (2)C取单符号位,符号参加移位,以决定最后是否修正; (3)C末位设置附加位Cn+1,初值为0,CnCn+1组成判断位,决定运算操作; (4)作n步循环,若需作第n+1步,则不移位,仅修正。,3.1.3.2 补码一位乘法,4.逻辑实现,加法器输入端控制信号:+A、+B、+B、+1,加法器输出端控制信号:1/2 A、C、 A、CPA、CPC,3.1.3.3 原码两位乘法,每次用两位乘数去乘被乘数。 一.算法分析 Yi(高位) Yi+1(低位) 部分积 累加、移位,0 0 0 1 1 0 1 1,1/4A1/4(A+X)1/4(A+2X)1/4(A+3X),(
16、0 ),( 1 ),( 2 ),( 3 ),0,X,2X,3X,如何实现+3X操作?,3.1.3.3 原码两位乘法,解决办法:,1/4(A+3X)=,1/4(A+2X+X)=1/4(A+2X)+1/4X,1/4(A-X+4X)=1/4(A-X)+X,设置欠帐触发器CJ,=,0 不欠帐 1 欠帐,下次补作+X操作,3.1.3.3 原码两位乘法,二.运算规则,0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1,操 作,Yi Yi+1 CJ,1/4(A+X) 0 CJ,1/4(A+X) 0 CJ,1/4(A+2X) 0 CJ,1/4A 0 CJ,1/4(A
17、-X) 1 CJ,1/4(A-X) 1 CJ,1/4A 1 CJ,1/4(A+2X) 0 CJ,3.1.3.3 原码两位乘法,三. 举例 例1. X原=1.111111,Y原=0.111001,求XY原。解:设初值: A=000.000000, B=|X|=000.111111, 2B=001.111110, -B=111.000001, C = |Y| =00.111001,步数 条件 操作 A C,000.000000 00.111001,1),0 1 0,+B,CJ,+000.111111,000.111111,000.001111,1100.1110,2),1 0 0,+2B,+001
18、.111110,010.001101,000.100011,011100.11,3),1 1 0,-B,+111.000001,111.100100,111.111001,000111 00.,4),0 0 1,+B,+000.111111,000.111000,000111,Cn-1Cn,Cn-1CnCJ,0,0,2,2,2,0,1,还帐,XY原=1.111000000111,3.1.3.3 原码两位乘法,例2. X原=0.00111,Y原=1.01001,求XY原。解:设初值:A=000.00000, B= |X| =000.00111, 2B=000.01110, -B=111.1100
19、1, C =|Y|=00.010010,3.1.3.3 原码两位乘法,步数 条件 操作 A C,000.00000 00.01001,0,Cn-1Cn,CJ,0,Cn-1CnCJ,1),1 0 0,+2B,+000.01110,000.01110,2,2,2,000.00011,1000.0100,+000.00000,111000.01,000.00011,000.00000,+000.00111,0,2),0 0 0,0 1 0,0,3),+B,+0,000.00111,000.00001,111110 00.,0,XY原=1.0000111111,3.1.3.3 原码两位乘法,四. 运算
20、规则 (1)绝对值相乘,符号单独处理。 (2)A、B取三符号位。 (3)C取双符号位,参加移位;C尾数凑足偶数位。 (4)CJ初值为0,根据每步操作决定其状态,不参加移位。 (5)作1/2n步循环;若需增加一步,则该步只还帐,不移位。,3.1.3.3 原码两位乘法,五. 逻辑实现,加法器输入端控制信号:+A、+B、+2B、+B、+1,3.1.3.4 补码两位乘法,补码两位乘法是在补码一位乘法算法拓展来的。 以补码一位乘法中, Z1补 、 Z2补两个部分积为例讨论:Z1补 = 2-1 Z0补 +(Yn+1-Yn)X补Z2补 = 2-1 Z1补 +(Yn-Yn-1)X补将Z1补 代入Z2补得: Z
21、2补 = 2-1 2-1 Z0补+ (Yn+1 Yn ) X补 + (Yn Yn-1 ) X补= 2-2 Z0补+ (Yn+1 Yn ) X补 + 2-1 (Yn Yn-1 ) X补= 2-2 Z0补+ (Yn+1 Yn ) X补 + 2-2 (2Yn 2Yn-1 ) X补= 2-2 Z0补+ (Yn+1 Yn ) X补 + (2Yn 2Yn-1 ) X补= 2-2 Z0补+ (Yn+1 Yn + 2Yn 2Yn-1 ) X补= 2-2 Z0补+ (Yn+1 + Yn 2Yn-1 ) X补可见,求Z2补需要将前次部分积加(Yn+1 + Yn 2Yn-1 ) X补,最后再右移2位。所以需对Yn+
22、1 Yn Yn-1 三位做判断。,3.1.3.4 补码两位乘法,3.1.4 定点除法运算,手算除法 例:X= 0.10110,Y = 0.11111,求X/Y = ?,0.10110,1101,0.,0,1,11111,0.11111,0,0,0,1,11111,10101,0,1,11111,1011,0,0,.,00000,.,0.,商: 0.10110 余数:0.101102,-5,实现除法的关键: 比较余数、除数 绝对值大小,以 决定上商。,3.1.4 定点除法运算,1、由手算除法过程可知:取绝对值相除,即判断X Y ? , 若X Y ,则商1,否则商0。每一步都是余数末位后面补0与除
23、数比较。 2、改进成计算机算法的问题: 1)如何判断够减?将心算比较改为减法比较,减Y 用加 - Y补实现。 2)将余数末位后面补0改为左移余数。使商在一个位置固定进行。导致正确的余数应为rn . 2-n。 3)符号? 原码除法符号单独处理,补码除法符号参与运算。,3.1.4.1 原码不恢复余数除法,恢复余数算法思想: 比较两数大小可用减法试探。,2余数-除数=新余数,为正:够减,商1。 为负:不够减,商0,恢复原余数。,3.1.4.1 原码不恢复余数除法,一.算法分析 第一步:2r1-B=r20 第二步:r2+B=r2(恢复余数) 第三步:2r2-B=r3,2r2-B=2(r2+B)-B=2
展开阅读全文
![提示](https://www.docduoduo.com/images/bang_tan.gif)