版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
计算机学院(许先斌)xbxu@《计算机组成与结构》——本科生课程教学计算机组成与结构本课程主要讲授计算机系统的硬件和软件构成方法,包括硬件系统中运算器、控制器、存储器、输入设备和输出设备和总线系统的构成原理等;并与当代先进的计算机技术相结合。是计算机科学与技术本科专业核心课程。
本课程着重计算机系统组成与结构方面的教学和研究。计算机结构定义为系统程序员所能见到的计算机硬件特性;计算机组成是指计算机硬件的具体实现。第三章
运算方法和运算部件
数据的表示方法和转换带符号数的表示方法及加减运算二进制乘法运算二进制除法运算浮点数的运算方法运算部件数据校验码3.3二进制乘法运算一、定点数一位乘法1、定点原码一位乘法用原码实现乘法运算十分方便,在定点运算中,完成两个原码表示得数相乘时,乘积得符号由两数得符号位按位相加(异或)得到,而乘积得数值部分则是两个数得绝对值之积。可以表示为:被除数[X]原=Xs.X1X2……Xn乘数[Y]原=Ys.Y1Y2……Yn乘积[Z]原=(Xs⊕Ys).(0.X1X2….Xn)(0.Y1Y2….Yn)3.3二进制乘法运算符号法则:同号相乘为正(0),异号相乘为负(1),(XsYs=00,01,10,11),
所以积得符号可按“异或”运算得到。数值部分运算法则:与普通十进制小数乘法相似。3.3二进制乘法运算例,X=0.1101,Y=0.1011,求X*Y=?
手工方法机器方法0.1101(X)0.1101×0.1011(Y)×0.10111101……P10.000011011101……..P20.00011010000………P30.000000+1101………..P4+0.0110110001111……P0.100011113.3二进制乘法运算机器运算与手工运算方法区别在于:(1)机器一次只能进行两个数相加,所以P1+P2+P3+P4必须分步进行:P1+P2;(P1+P2)+P3;[(P1+P2)+P3]+P4。(2)每做完一次加运算,把部分积右移一位(相当于把被加数右移,而不是左移),移出得数码不参加运算,故机器的位数可以固定。由此可以分析出机器乘法运算得基本规律。3.3二进制乘法运算原码机器乘法规律:
当所乘得乘数为1时,则上次所得的部分积(最初为0)加被乘数右移一位,而得新的次一部分积;若所乘的乘数为0时,则上次所得的部分积加0右移一位后就是新的次一部分积。如此反复,直到乘数各位都乘完为止。3.3二进制乘法运算例,X=0.1101,Y=0.1011,求X*Y=?机器算法如下:0000初始化值
y=1+110111011101………..P1y=1+1101100111
100111………P2
y=0+0000100111100111……..P3y=1+11011000111110001111……P4=P3.3二进制乘法运算一般而言,设被乘数X,乘数Y都是小于1的n位定点正数:
X=0.X1
X2……….XnY=0.Y1Y2……….Yn
其乘积为: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))……)))3.3二进制乘法运算令Pi表示第i次的部分积,则上式可写成如下递推公式:
P0=0,P1=2-1(YnX+P0),P2=2-1(Yn-1X+P1),Pi=2-1(Yn-i+1X+Zi-1),
Pn=X*Y=2-1(Y1X+Pn-1)
此处的P0,P1…Pn-1为部分积,Pn为最终的乘积P。3.3二进制乘法运算上述乘法运算的递推算法可用流程图来表示:(P74图3.6)开始Pi=0,i=0Yn=1Pi+0Pi+XPi,Y右移一位,i=i+1i=n?结束YNNY3.3二进制乘法运算实现原码一位乘法的逻辑电路图(P73图3.5)。3.3二进制乘法运算2、定点补码一位乘法原码乘法的主要问题是符号位不能参加运算。补码乘法可以实现符号位直接参加运算。(1)补码与真值的转换关系设[X]补=X0.X1X2……..Xn
当
X>=0时,X0=0(符号位为0)尾数部分为真值X
3.3二进制乘法运算当X<0时,X0=1(符号位为1)[X]补=1.X1X2…….Xn=2+X
所以真值X为:X=1.X1X2…..Xn-2=-1+0.X1X2……Xn
所以,
3.3二进制乘法运算(2)补码的右移正数右移一位,相当于乘1/2,负数用补码表示,右移一位也相当于乘1/2。因此在补码运算的机器中,一个数不论其正负,连同符号位向右移一位,符号位保持不变,就等于乘1/2。设[X]补=X0.X1X2…..Xn,因为所以3.3二进制乘法运算写成补码形式,得:所以,若要得,只要将[X]补连同符号位右移I位即可。(3)补码的乘法规则设被乘数为[X]补=X0.X1X2….Xn,
乘数[Y]补=Y0.Y1Y2….Yn均为任意符号,则补码乘法算式:[X*Y]补=[X]补*Y证明参见(P75-76)。
3.3二进制乘法运算(4)BOOTH算法根据相邻两位比较结果决定运算操作的方法称为“比较法”,是由BOOTH夫妇提出的,也称BOOTH算法。BOOTH算法流程:开始时,部分积为0,即[P0]补=0,然后每一步都是在前次部分积的基础上由(Yi+1-Yi)(i=0,1,2…n)决定对[X]补的操作,再右移一位,得到新的部分积。如此重复n+1步,最后一步不移位,便得到[X]补*[Y]补。参见流程图。3.3二进制乘法运算(5)补码一位乘法的运算规则根据BOOTH算法流程图,可得到补码一位乘法的运算规则。运算规则:如果Yn=Yn+1,部分积[Pi]加0,再右移一位;如果YnYn+1=01,部分积加[x]补,再右移一位;如果YnYn+1=10,部分积加[-X]补,再右移一位。如此重复进行n+1步,最后一步不移位;包括一位符号位,所得乘积为2n+1位,其中n为尾数位数。3.3二进制乘法运算例,[X]补=1.0101,[Y]补=1.0011,求[X*Y]补=?解:[-X]补=0.1011,采用双符号位表示后,运算过程如下:部分积乘数操作00.00001.00110
Yn+1=0,YnYn+1=10;
+00.1011加[-X]补00.101100.0101110011YnYn+1=11;+00.0000加000.010100.0010111001YnYn+1=01;
+11.0101加[X]补11.011111.1011111100
YnYn+1=00;+00.0000加011.101111.1101111110
YnYn+1=10+00.1011加[-X]补00.10001111最后一步不移位3.3二进制乘法运算(6)实现补码一位乘法的逻辑图(p95)3.3二进制乘法运算补码一位乘法逻辑图与原码一位乘法逻辑图的差异:(1)被乘数、乘数的符号位X0,Y0都参加运算;(2)乘数寄存器有附加位Yn+1,其初始状态为0,并有右移功能;(3)被乘数寄存器的每一位用原码或反码的多路开关输入,多路开关由YnYn+1控制;(4)部分积寄存器具有移位功能,其符号位与加法器的符号位始终一致;(5)当计数器i=n+1时,封锁移位信号,保证最后一步不移位。3.3二进制乘法运算二、定点数二位乘法1、原码两位乘两位乘数有四种可能组合及相应的操作:00-相当于0*X;部分积Pi+X,右移2位;01-相当于1*X;部分积Pi+X,右移2位;10-相当于2*X;部分积Pi+2X,右移2位;11-相当于3*X;部分积Pi+3X,右移2位。与一位乘法比较,多出了+2X和3X两种情况。把X左移一位即得2X;+3X可以用(4X-X)来实现。原码两位乘法规则(P79表3.4)3.3二进制乘法运算例,X=0.100111,Y=0.100111,则:[-X]补=1.011001
部分积乘数欠位C
00.000000100111
0+[-X]补11.01100111.011001右移2位11.110110011001
1+2X01.00111001.000100右移2位00.010001000110
0
+2X01.00111001.011111右移2位00.01011111000103.3二进制乘法运算2、补码两位乘根据BOOTH算法,将两步合并成一步,可以推导除编码两位乘法公式:上一步部分积:本步部分积:下一步部分积:3.3二进制乘法运算上式表明,产生部分积之后,可以加上乘数寄存器最低两位和附加位的组合值与的积,再右移2位,可得到三位组合值的关系参加p80表3.53.3二进制乘法运算例,两位补码乘法,假设X=+0.0110011,Y=-0110010
则:[X]补=00110011,[Y]补=11001110;[-X]补=11001101,2[X]补=01100110,2[-X]补=10011010;其两位补码乘法实现过程如下:3.3二进制乘法运算部分积乘数附加位说明000000000011001110
0组合值为100,+2[-X]补1110011010111110011010110011
1右移2位,组合值为111111111100110101100
1右移2位,组合值为001,+[X]补00001100110000101100000000101100101011
0右移2位,组合值为110,+[-X]补11110011011111011000111111011000001010右移1位运算结果为:11111011000001010即为:-0.001001111101103.3二进制乘法运算三、阵列乘法器为了进一步提高乘法运算速度,可采用类似于人工计算的方法,用图3.7所示的一个阵列乘法器完成X·Y乘法运算(X=X1X2X3X4,Y=Y1Y2Y3Y4)。阵列的每一行送入乘数Y的每一位数位,而各行错开形成的每一斜列则送人被乘数的每一数位。图中每一个方框包括一个与门和一位全加器。该方案所用加法器数量很多,但内部结构规则性强,适于用超大规模集成电路实现。3.3二进制乘法运算3.3二进制乘法运算3.4二进制除法运算一、定点除法运算
定点除法所占整个指令的执行频度很小,约0.2%,但它是不可少的。除法运算的方法很多,如原码除法、补码除法、跳0跳1法、迭代法等等。1、定点原码一位除法3.4二进制除法运算例,X=0.1001,Y=0.1011,求X/Y=?常规手工算法笔算算法过程01101011010.1011)0.100100.1011)0.10010X(r0)
-1011-0.01011011100.001110-1011-0.001011001100.0000110-0000-0.0000000011000.00001100-1011-0.0000101100010.000000013.4二进制除法运算恢复余数法(还原法)规则:每次余数ri(最初是被除数X不移位)左移一位减除数,得到新的余数ri+1,ri+1=2ri+(-y)补;如果ri+1>=0,表示够减,商上“1”;如果ri+1<0,表示不够减,商上“0”,还要加除数y,然后左移一位再作减除数y的运算。例,X=0.1001,Y=0.1011,用恢复余数法秋X/Y=?[X]原=[X]补=0.1001[Y]原=[Y]补=0.1011[-Y]补=1.0101采用双符号位,恢复余数法运算过程如下:3.4二进制除法运算
X/YQ00.1001+[-y]补11.0101q0=011.1110r0<0+[y]补00.1011恢复余数00.100101.0010+[-y]补11.0101q1=100.0111r1>000.1110+[-y]补11.0101q2=100.0011r2>000.0110+[-y]补11.0101q3=011.1011r3<0+[y]补00.1011恢复余数00.0110r3’00.1100+[-y]补11.0101q4=100.0001r4>03.4二进制除法运算不恢复余数法(加减交替法)基本规则:当余数为正时,商上“1”,余数左移一位,减除数;当余数为负时,商上“0”,余数左移一位,加除数。恢复余数法与不恢复余数法的区别:当余数ri为正时:恢复余数法为,+ri*2-y,商为“1”不恢复余数法为,+ri*2-y,商为“1”当余数ri为负时:恢复余数法为,(-ri+y)*2-y=-2ri+y,商为“1”不恢复余数法为,-ri*2+y,商为“0”
3.4二进制除法运算例,X=0.1001,Y=0.1011,用不恢复余数法求X/Y=?[X]原=[X]补=0.1001,[Y]原=[Y]补=0.1011,[-Y]补=1.0101
X/YQ00.1001+[-Y]补11.0101q0=011.1110r0<011.1100+[Y]补00.1011q1=100.0111r1>000.1110+[-Y]补11.0101q2=100.0011r2>000.0110+[-Y]补11.0101q3=011.1011r3<011.0110+[Y]补00.1011q4=100.0001r4>0
3.4二进制除法运算2、定点补码一位除法补码加减交替法法则:(1)被除数与除数同号,被除数减去除数;被除数与除数异号,被除数加上除数。(2)余数与除数同号,商为“1”,余数左移一位,下次减除数;余数与除数异号,商为“0”,余数左移一位,下次加除数。(3)重复步骤(2),包括符号位在内,共做n+1步。3.4二进制除法运算商的校正:补码一位除法的算法是在商的末位“恒置1”的舍入条件下推导的,按照这种算法所得到的有限位商为负数时,是反码形式,而正确需要得到商是补码形式,两者之间相差末位的一个“1”,所以最后加校正量“1”。例,X=-0.1001,Y=+0.1101,求[X/Y]补=?解:[X]补=1.0111,[Y]补=0.1101,[-Y]补=1.00113.4二进制除法运算X/YQ操作说明11.0111+[Y]补00.1101q0=0[X]补与[Y]补异号00.0100r1余数r1与除数同号00.1000左移,商1,减除数+[-Y]补11.0011q1=111.1011r2余数r2与除数异号11.0110左移,商0,加除数+[Y]补00.1101q2=000.0011r3余数r3与除数同号00.0110左移,商1,减除数+[-Y]补11.0011q3=111.1001r4余数r4与除数异号11.0010左移,商0,加除数+[Y]补00.1101q4=011.1111r5余数r5与除数异号,商左移,商0,余数不左移。所以,[Q]补=1.0100+0.0001=1.0101,[R]补=1.11113.4二进制除法运算二、提高除法运算速度的方法跳0跳1除法根据余数前几位代码值再次求得几位同位1或0得商。规则:(1)余数R>=0,且R的高K个数位均为0,则本次直接得商1,后跟K-1个0,R左移K位后,减除数Y,得新得余数。(2)余数R<0,且R的高K个数位均为1,则本次直接得商0,后跟K-1个1,R左移K位后,加除数Y,得新得余数。(3)不满足(1)、(2)中条件时,按一位除法上商。参见P88例3.43。3.4二进制除法运算3.5浮点数的运算方法一、浮点加法和减法
设有两个浮点数x和y,它们分别为
x=2m·Mx
y=2n·My
其中m和n分别为数x和y的阶码,Mx和My为数x和y的尾数。3.5浮点数的运算方法(1)对阶对阶的原则:小阶向大阶看齐。
若m>n则将操作数y的尾数右移一位,y的阶码n加1,直到m=n。若m<n则将操作数x的尾数右移一位,x的阶码m加1,直到m=n。(2)尾数相加尾数相加与定点数的加、减法相同
3.5浮点数的运算方法(3)结果规格化当运算结果的尾数部分不是11.0××…×或00.1××…×的形式时,则应进行规格化处理。当尾数符号位01或10需要右规。右规的方法是尾数连同符号位右移一位、和的阶码加1,右规处理后就可得到11.0××…×或00.1××…×的形式,即成为规格化的数.当运算结果的符号位和最高有效位为11.1或00.0时需要左规。
左规的方法是尾数连同符号位一起左移一位、和的阶码减1,
直到尾数部分出现11.0或00.1的形式为止。3.5浮点数的运算方法(4)溢出判断在阶码的符号位出现01或10时,表示溢出,而尾数的符号位为01或10时,给出的是运算结果需要右规的信号。
见书P90,例3.453.5浮点数的运算方法例:
x=101.10010=23×0.10110010y=1100.1000=24×0.11001000x补=0011,0.1011001y补=0100,0.1100100(1)对阶[ΔE]=[m]
补-[n]
补=0011+1100=1111,其真值位-1,即:x的阶码比y的阶码小1,x的尾数应右移1位,阶码加1得:x补=0100,0.0101101(0舍1入)3.5浮点数的运算方法(2)尾数相加减[用双符号],即:[x尾]补±[y尾]补00.010110100.0101101+00.1100100+11.0011100
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 绍兴景区租赁合同
- 二零二五年度城市轨道交通运营管理合同6篇
- 酒店安保清洁服务合同样本
- 油气管道维修爆破作业协议
- 一日游活动标准协议2024年版版B版
- 精神科护士录用合同模板
- 研发中心外墙真石漆施工合同
- 食品行业合同执行实习报告
- 物流公司配电房施工合同
- 音乐工作室租赁合同文本
- 建设工程总承包计价规范
- 大同市阳高县王官屯50MW风电项目220kV升压站及送出工程环评报告
- GB/T 2992-1998通用耐火砖形状尺寸
- 英语名著阅读老人与海教学课件(the-old-man-and-the-sea-)
- 学校食品安全知识培训课件
- 全国医学博士英语统一考试词汇表(10000词全) - 打印版
- 最新《会计职业道德》课件
- DB64∕T 1776-2021 水土保持生态监测站点建设与监测技术规范
- 中医院医院等级复评实施方案
- 数学-九宫数独100题(附答案)
- 理正深基坑之钢板桩受力计算
评论
0/150
提交评论