计算机组成原理实用教程(第三版)ppt课件_第1页
计算机组成原理实用教程(第三版)ppt课件_第2页
计算机组成原理实用教程(第三版)ppt课件_第3页
计算机组成原理实用教程(第三版)ppt课件_第4页
计算机组成原理实用教程(第三版)ppt课件_第5页
已阅读5页,还剩221页未读 继续免费阅读

下载本文档

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

文档简介

计算机组成原理,第一章绪论(一),一、计算机的发展历程及应用领域1、计算机的发展历程2、计算机的应用领域科学计算数据处理实时控制企业管理计算机辅助设计,第一章绪论(二),二、计算机的组成硬件及软件1、计算机硬件的组成及功能运算器、控制器、主存储器、输入设备、输出设备2、计算机软件的组成什么是软件,计算机语言软件的作用软件分类:系统软件、应用软件,第一章绪论(三),三、计算机系统的层次结构1、硬件软化及软件硬化2、计算机系统的层次结构,0级,2级,1级,3级,4级,5级,第一章绪论(四),四、计算机系统的主要技术指标1、机器字长计算机能进行二进制数并行运算的速度,即运算器所具有的位数。机器字长越长,运算速度越高。单位:Bit、Byte2、运算速度主频,执行速度(KIPS,MIPS)、等效指令速度描述法3、主存容量,第二章计算机中的数码系统,一、数据的表示方法计算机中可使用的数据分为两大类:数值数据、符号数据(非数值数据)。数值数据用来表示数量的多少,通常带有符号位;符号数据用来表示各种符号,包括26个字母,09,标点符号(,。、;”!?等)及一些专门符号(*/=%$等),汉字,图形,语音1、符号数据的表示方法计算机使用最多的符号数据是字符和字符串。字符在计算机中通常用8位二进制数来表示,构成一个字节。采用最广泛的是ASCII码,它采用7位二进制数,可构成128种编码。,第二章计算机中的数码系统,2*、数值数据的表示方法计算机中数值数据有两种表示方法:定点表示法,浮点表示法。定点表示法采用定点表示法表示的数据叫作定点数,定点数是指小数点位置固定不变的数。定点数在计算机中的表示格式:,*机器字长n+1位,第二章计算机中的数码系统,定点小数的表示范围:.1111.1X+.11111即:(1-2-n)X(1-2-n)定点整数的表示范围:1111.1X+1111.1即(2n-1)X+(2n-1)*定点数所能表示的数值范围很有限,而且只能表示纯小数或纯整数,二者不可兼顾,第二章计算机中的数码系统,浮点表示法采用浮点表示法表示的数据叫做浮点数。浮点数可用来表示实数。一个带符号的二进制浮点数可表示为:0.10101101(尾数)2101(阶码)尾数是一个带符号的纯小数,由它来确定浮点数的精度阶码是一个带符号的纯整数,它确定浮点数的表示范围阶码越长,所表示的浮点数的范围越大,第二章计算机中的数码系统,浮点数在计算机中的表示格式:,浮点数所能表示的数值范围应分成正、负数。分别表示如下:pp正数:2-m2-(2-1)X+(1-2-m)2+(2-1),第二章计算机中的数码系统,pp负数:-(12-m)2+(2-1)X-2-m2-(2-1),举例:某机字长8位,采用定点表示法,可表示的纯小数或整数的表示范围是多少?若采用浮点表示法,阶码3位,尾数5位,表示的数值范围是多少?定点小数:-0.1111111+0.1111111,即-127/128+127/128定点整数:-1111111.+1111111.,即127127浮点数:正数:0.00012-11+0.11112+11即+1/128+15/2负数:-0.1111211-0.00012-11即-15/2-1/128,第二章计算机中的数码系统,注意事项阶码与尾数的关系2pm浮点数基值的选择rm=2、8、16尾数的基值,增大数的表示范围,不降低数的表示精度浮点数的规格化尾数1/rm,即尾数小数点后的第一位数是非0,第二章计算机中的数码系统,二、机器数的编码格式*在计算机中,机器数有三种不同的编码格式,即原码表示法、补码表示法和反码表示法。1、原码表示法将带符号数的符号位数值化(习惯上用“0”表示“”,用“1”表示“”),数码位保持不变,即原码表示法。例如:X0.101101Y=-0.010110则X原=0.101101Y原=1.010110,第二章计算机中的数码系统,原码表示法的数学定义对于定点小数X=X0.X1X2.Xn,其原码的数学定义为X原=X当0X(1-2-n)X原=1-X=1+|X|当-(1-2-n)X0即:对于正小数:X=+0.X1X2.XnX原=0.X1X2.Xn对于负小数:X=-0.X1X2.XnX原=1.X1X2.Xn,第二章计算机中的数码系统,对于定点整数X=X0X1X2.Xn,其原码的数学定义为X原=X当0X(2n1)X原=2n-X=2n+|X|当-(2n1)X0即:对于正整数:X=+X1X2.XnX原=0X1X2.Xn对于负整数:X=-X1X2.XnX原=1X1X2.Xn可以看出,原码表示法直观,与真值一一对应,但其缺点是:用原码进行加、减法运算时非常麻烦,运算器中不仅要有加法器,还要有减法器。这就是推出补码和反码表示法的原因。,第二章计算机中的数码系统,2、补码表示法补码表示法是根据数学上的同余概念引申而来。假定有两个数a和b,若用某一个整数m去除,所得的余数相同,就称a,b两个数对m是同余的。且记作:ab(modm)假设X,Y,Z三个数,满足下列关系:Z=nX+Y(n为整数),则称Z和Y对模X是同余的,记作:ZY(modX)X0(modX)例:假设时钟正指向10点整,但当前时间为6点整,为校正时钟,可顺时针拨8小时(+8),或逆时针拨4小时(-4),这说明对时钟来讲,8和4是等效的,这是因为时钟以“12”为模。108186(mod12)10-4=10+(-4)+12=10+86(mod12),第二章计算机中的数码系统,以通式表示:A-B=A+(-B)+K(modK)(-B)对模K的补数结论:对于某一确定的模数K,某数A减去一个小于模的数B,可用该数A加上负减数B对模K的补数来代替。注意:“模”是指任何大于模的数值都可以将模数的整数倍丢掉,而不会影响原数的大小;利用模数概念可将减法运算转换为加法运算。计算机本身就是一个模数系统,这是因为计算机的字长是有限的,凡超过机器字长的数据,其超出位会被丢失,这就是计算机的模。对于n+1位字长的定点小数,在机内可表示为:X=X0.X1X2.Xn,X0为符号位,高于X0的位会被丢失,所以以21为模。,第二章计算机中的数码系统,对于n+1位字长的定点整数,在机内可表示为:X=X0X1X2.Xn,X0为符号位,高于X0的位会被丢失,所以以2n+1为模。补码表示法的数学定义:对于定点小数X=X0.X1X2.Xn,其补码的数学定义为X补=X当0X(1-2-n)X补=2+X=2-|X|当-(1-2-n)X0对于定点整数X=X0X1X2.Xn,其补码的数学定义为X补=X当0X2nX原=2n+1X=2n+1-|X|当-2nX0,第二章计算机中的数码系统,举例:若X=+0.10110010根据定义:X补=0.10110010若X=-0.10110010根据定义:X补=2+(-0.10110010)=10.00000000-0.10110010=1.01001110求补码的简易方法:正数的补码同原码;负数的补码,保持原码符号位不变(“1”),数码位各位变反,末位加1。,第二章计算机中的数码系统,举例:若X=0.10110010X原=1.10110010X补=1.01001110补码具有如下特点:补码没有正零和负零之分;+0补=0.00.0-0补=1.11.1+0.0001=0.00.0于是1.00.0是补码表示中的最小负数,比1.11.1更小。已知X,求X补的方法正数同原码,负数保持原码符号位不变,数码位各位变反,末位加1。因此无论正数还是负数,都必须先求原码。,第二章计算机中的数码系统(15),例1,已知X=0.6954,求X补=?X=-0.10110010X原=1.10110010X补=1.01001110例2,已知X=210,求X补=?X=-11010010X原=1110110010X补=100101110已知X补,求X原方法对于正数:X原=X补对于负数:X原=X补补,第二章计算机中的数码系统(16),例:若X补=1.10110001X原=1.01001111已知X补,求X补的方法将X补连同符号位一起,各位变反,末位加1;例:若X补=1.10110001X补=0.01001111已知X补,求X/2补、X/4补的方法将X补连同符号位一起右移1位,左边补1位与符号位相同的数码,则得到X/2补;同理,若右移2位,则得到X/4补;例:若X补=1.01101111X/2补=1.10110111X/4补=1.11011011,第二章计算机中的数码系统(17),已知X补,求2X补、4X补的方法将X补左移1位,得到2X补,右边补“0”;若左移2位,则得到4X补。例:若X补=0.001011012X补=0.010110104X补=0.10110100,第二章计算机中的数码系统(18),3、反码表示法反码表示法与补码表示法有许多相似之处,也可用数学表达式作出严格定义。对于定点小数X=X0.X1X2.Xn,其反码的数学定义为X反=X当0X1X反=(2-2-n)+X当-1X0对于定点整数X=X0X1X2.Xn,其反码的数学定义为X反=X当0X2nX反=(2n+1-1)+X|当-2nX0可以看出,反码定义与补码类似,区别仅在于小数的反码以2-2-n为模,整数的反码以2n+1-1为模。求负数的反码也有简便方法:即将原码的符号位保持不变,数码位各位变反。,第二章计算机中的数码系统(19),举例:若X=-0.11011001X原=1.11011001X反=1.001001104、浮点数的原码、补码和反码表示法浮点数由两个定点数组成,阶码是定点整数,尾数是定点小数,其三种编码的具体格式以下面的例子说明。例1:若X=+0.110110012110,该浮点数在机内采用如下格式:X=-110,+0.11011001X原=1110,0.11011001X反=1001,0.11011001X补=1010,0.11011001,第二章计算机中的数码系统(20),例2:若X=-0.100101112+110,该浮点数在机内采用如下格式:X=+110,-0.10010111X原=0110,1.10010111X反=0110,1.01101000X补=0110,1.01101001三、错误检测码计算机对数据进行传送、存储和操作过程中,都可能由于硬件故障、软件错误和信息干扰等原因导致数据出错。为了有效防止、减少或避免错码现象,可采用编码方式,使之能发现错误,进而将错误定位便可纠正错误,这就是错误检测码的功能。常用的错误检测码有两类:检错码和纠错码。奇偶校验码常用的检错码海明码常用的纠错码,第二章计算机中的数码系统(21),习题9解答:证明:分两种情况:若X0=0,即X为正数,则X=X补=0.X1X2.Xn=0+X12-1+Xn2-n=-X0+Xi2i若X0=1,即X为负数,则X=X补-2=1.X1X2.Xn-2=1+X12-1+Xn2-n-2=-1+X12-1+Xn2-n=-X0+Xi2i,第三章运算方法与运算器,一、定点加减法运算方法及实现在计算机中定点加减法运算基本上都是采用补码。因此这里只讨论补码的加减法运算。1、补码加减法运算方法对于补码加减法运算需要证明如下公式:X+Y补=X补+Y补X-Y补=X补+-Y补证明分四种情况,采用定义来证明。,第三章运算方法与运算器,例1:已知:X=-0.0625,Y=-0.75。求:X+Y,X-Y解:X=-0.0001Y=-0.1100X原=1.0001Y原=1.1100X补=1.1111Y补=1.0100-Y补=0.1100X补=1.1111X补=1.1111+Y补=1.0100+-Y补=0.1100-X+Y补=1.0011X-Y补=0.1011X+Y原=1.1101X-Y原=0.1011X+Y=-0.1101X-Y=+0.1011=-0.8125=+0.6875,第三章运算方法与运算器,例2:已知:X=-20,Y=+9。求:X+Y,X-Y解:X=-10100Y=01001X原=110100Y原=001001X补=101100Y补=001001-Y补=110111X补=101100X补=101100+Y补=001001+-Y补=110111-X+Y补=110101X-Y补=100011X+Y原=101011X-Y原=111101X+Y=-01011X-Y=-11101=-11=-29,第三章运算方法与运算器,结论:补码运算能将减法变为加法,是的运算器中只需一个加法器;补码加减法运算时,符号位与数码位一样参加运算,能自然得到结果的正确符号;补码小数的加减法运算以“2”为模,补码整数运算以“2n+1”为模,即符号位向更高位的进位自然丢失,不影响运算结果的正确性。2、定点加减法运算中的溢出问题“运算溢出”是指运算结果大于机器所能表示的最大正数或小于所能表示的最小负数。“运算溢出”只对带符号数的运算有效。,第三章运算方法与运算器,下面举例说明什么情况下会产生溢出。X补=0.1010X补=1.0001+Y补=0.1001+Y补=1.0111-X+Y补=1.0011X+Y补=0.1000从上述例子可以看出,两个正数相加,结果为负数;而两个负数相加,结果为正数,显然是错误的,其原因是由于运算产生了溢出;除此之外,正数减负数或负数减正数,也可能产生运算溢出。溢出是一种错误,计算机在运算过程中必须能发现这种错误,并进行必要的处理,否则将产生严重的后果。常用的判溢出的方法有以下两种:采用变形补码判溢出;利用符号位进位信号判溢出。,第三章运算方法与运算器,采用变形补码判溢出“变形补码”是采用2个符号位的补码,记作X补。上面的两个例子,若采用变形补码运算,结果为:例1:X补=00.1010例2:X补=11.0001+Y补=00.1001+Y补=11.0111-X+Y补=01.0011X+Y补=10.1000例1中,运算结果的两位符号位为“01”,表示产生了正溢出。例2中,运算结果的两位符号位为“10”,表示产生了负溢出。不溢出时,两个符号位应相同,为“00”或“11”。,第三章运算方法与运算器,结论:采用变形补码进行加减运算时,运算结果的两位符号位应相同;若两个符号位为“00”,表示结果是一个正数,反之,若为“11”,表示结果是负数;若两个符号位不同,则表示运算产生了溢出,且左边一位表示结果的正确符号,即若结果的两位符号位为“01”,表示结果的正确符号应为正,即产生了正溢出。否则若结果的两位符号位为“10”,表示结果的正确符号应为负,即产生了负溢出;这种方法简单,容易实现,只要在两个符号位上增设一个半加器即可,但运算器要增加一位字长,或要降低一位运算精度。,第三章运算方法与运算器,利用符号位的进位信号判溢出对于带符号数,最高位是符号位,若将最高数码位向符号位的进位叫做“进位入”,记作Cn-1,而将符号位向向更高位的进位叫做“进位出”,记作Cn,则对上面的例子,有如下情形:例1:X补=0.1010例2:X补=1.0001+Y补=0.1001+Y补=1.0111-.-.-X+Y补=1.0011X+Y补=0.1000Cn-1=1Cn-1=0Cn=0Cn=1,例1中,Cn=0,Cn-1=1,表示产生了正溢出;例2中,Cn=1,Cn-1=0,表示产生了负溢出。只有当Cn=Cn-1=0或Cn=Cn-1=1时,才表示无溢出。,第三章运算方法与运算器,结论:可以由CnCn-1来判断运算产生了溢出;这种方法不降低运算精度简单,只要增设一个半加器即可。即OF(溢出标志)=CnCn-1机器无法知道参加运算的操作数是否是带符号数,因此总是按带符号数处理,并判定是否产生溢出。因此,对无符号数的加减运算,即使OF=1,也不表示产生了溢出。应由程序员自己判定。,第三章运算方法与运算器,3、补码加减法运算的实现采用补码进行加减法运算只需一个加法器,采用串行进位方式的n位并行加法器的逻辑结构如图所示。,Bn-1An-1Bn-2An-2B1A1B0A0,Sn-1Sn-2S1S0,溢出,C1,方式控制M,M=0加M=1减,Bn-1,Cn-1,Cn-2,Bn-2,B1,C1,C0,B0,并行加法器的逻辑结构,第三章运算方法与运算器,并行加法器的要点:n位并行加法器的主体是n位全加器FA,其进位信号由低位向高位逐位传送。两个n位的操作数A和B连同进位信号一起同时送到全加器的输入端,经过一定的运算时间,得到n位的运算结果S。最高的进位信号Cn-1和Cn-2的半加和用来判溢出。M是方式控制信号,M=0表示作加法运算(A+B),M=1表示作减法运算(A-B),这种情况下应将A补与-B补相加;由于-B补=B补+1,电路中用各位用一个半加器实现对B补取反,在向末位+1(C-1=1)。全加器的结构加法器的运算速度(P32-33),第三章运算方法与运算器,二、定点乘法运算及实现定点乘法运算与加减法运算不同,可采用原码,也可采用补码。原码乘法又有原码一位乘法和原码两位乘法;补码乘法也有补码一位乘法和补码两位乘法。1、原码一位乘法符号位单独运算,将两个操作数的绝对值相乘,最后给乘积冠以正确的符号的方法,称为“原码乘法”。每次取一位乘数与被乘数相乘,最后累加结果,称作“原码一位乘法”。,第三章运算方法与运算器,原码一位乘法的操作过程与十进制乘法运算类似。例:已知X=+0.1101,Y=-0.1011,求Z=X*YX原=0.1101Y原=1.1011Zf=Xf异或Yf=1然后将两个绝对值相乘,操作过程如下:0.11010.1011-01101第1次部分积01101第2次部分积00000第3次部分积+01101第4次部分积-0.10001111,第三章运算方法与运算器,上述过程是手算,若在计算机中实现,则存在两个问题:一是n位数相乘,需2n位加法器,不合适;二是n次部分积一次累加,实现有困难。计算机的做法是:每得到一次部分积,立刻与上次部分积相加,然后将结果右移一位,待n次“相加右移”操作结束后,乘法运算完成,第三章运算方法与运算器,同样以上述例子为例:部分积乘数0.000001011+X0.1101-01101010110.011010101+X01101-10011101010100111010+000000-01001110100010011101+X01101-10001111010.100011110结束,第三章运算方法与运算器(16),可以看出,上例经过4次相加、右移操作,最后得到结果,再冠以正确的符号“1”,得到Z原=1.10001111Z=-0.10001111结论:两个n位带符号的数相乘,需要一个n+1位的加法器,两个n+1位的寄存器,操作前分别存放部分积和乘数Y,操作后分别存放最后乘积的高位和低位,并要求这两个寄存器能连接起来一起进行右移操作。实现原码一位乘法的操作过程流程图及实现方法图见P35。,第三章运算方法与运算器(17),2、原码两位乘法采用原码两位乘法,可作为提高乘法运算速度的措施之一。如果从乘数的最低位开始每次取两位乘数与被乘数相乘得到一次部分积,那么两个n位数相乘只需要进行n/2次“相加右移”操作,这就是“原码两位乘法”的基本思想,即不需要增加任何硬件可使乘法运算速度提高一倍。原码两位乘法部分积的形成原码一位乘法中,由于每次只取一位乘数,因此部分积的值很简单,即若Y0=0,则部分积为0;若Y0=1,则部分积为被乘数X。而原码两位乘法中每次要取两位乘数,因此部分积的值应有四种情况:Y1Y0新的部分积及其操作000,与上次部分积相加后,右移两位01X,与上次部分积相加后,右移两位102X,与上次部分积相加后,右移两位113X,与上次部分积相加后,右移两位,第三章运算方法与运算器(18),上表中,前三种情况都容易实现,关键是如何得到3X的部分积。考虑到3X=4X-X,具体做法是:当两位乘数为“11”时,将“-X”与上次部分积相加,然后右移两位。“4X”的操作待进行高端的两位乘数相乘时再进行,先将高两位乘数加1,再确定本次部分积的内容,以完成“4X”的操作,与上次“X”操作合起来,等效于“3X”操作。这种情况下,需要设置一个标志Cj,以确定参加本次运算的两位乘数是否要加1,于是形成了下面8种不同操作:,第三章运算方法与运算器(19),Y1Y0Cj操作过程000上次部分积0后,右移两位,Cj保持为0010上次部分积X后,右移两位,Cj保持为0100上次部分积2X后,右移两位,Cj保持为0110上次部分积X后,右移两位,Cj1001上次部分积X,右移两位,Cj0011上次部分积2X后,右移两位,Cj0101上次部分积X后,右移两位,Cj保持为1111上次部分积0后,右移两位,Cj保持为1,第三章运算方法与运算器(20),原码两位乘法的操作过程例:已知X=+0.11111101,Y=-0.01110001,求X*Y解:Zf=Xf异或Yf=0异或11|X|原=00.11111101|Y|原=00.01110001|X|补=00.11111101|2X|补=01.11111010-|X|补=11.00000011|Y|补=00.01110001,第三章运算方法与运算器(21),部分积YfYfY7Y6Y5Y4Y3Y2Y1Y0Cj000.0000000000.011100010+|X|00011111101-0001111110100011100010000011111101000111000+000000000000-0000011111101000111000000000111111010001110-|X|11100000011-1110001001011010001111111100010010110100011+|2X|00111111010-001101111101011010001000.0110111110101101000,第三章运算方法与运算器(22),|X|*|Y|补=00.0110111110101101|X|*|Y|原=00.0110111110101101最后给结果冠以正确的符号,得:X*Y=-0.0110111110101101说明:两个八位数相乘只需作4次“相加右移”操作操作直到Y1Y0Cj=000为止,若最后一次运算后Cj仍为1,则需要再进行一次“X”操作,但不需再右移;由于“2X”操作,部分积有可能大于2,因此部分积要用三位符号位,其中最高位代表部分积的正确符号;由于运算过程中有“X”操作,因此整个操作过程应采用补码进行部分积,右移时按补码右移的规则,即保持符号位不变;若乘数Y的数码位的位数n为奇数,则可在被乘数和乘数的后边均附加一个“0”,使n仍保持为偶数,进行n/2次相加右移操作,运算结果的最后两位“0”无效。,第三章运算方法与运算器(23),补码一位乘法原码乘法存在两个明显的缺点:一是符号位需要单独运算,最后需给运算结果冠以正确的符号,这给运算带来麻烦;二是对于采用补码存储的机器,从存储器或寄存器中取得的是操作数的补码,需要先变成原码,再取其绝对值后才能进行原码乘法运算。将两个操作数的符号位和数码位一起参加乘法运算,能自然得到乘积的正确符号的乘法称作“补码乘法”。补码乘法也分为补码一位乘法和补码两位乘法。补码一位乘法有两种不同的实现方案:校正法和比较法。校正法的基本思想:X*Y补=X补*Y补+校正项其中校正项随X和Y的正负不同而有不同的取值,给操作带来不便。,第三章运算方法与运算器(24),实际中较常采用的“补码一位乘法”,是由Booth夫妇提出来的“比较法”,因此又称作Booth法。Booth法的操作过程:补码与真值的关系根据补码定义:对于正数:Y补=Y=0.Y1Y2.Yn(Y0=0)对于负数:Y补=2Y=1.Y1Y2.Yn(Y0=1)Y=1.Y1Y2.Yn-2=1+0.Y1Y2.Yn-2=-1+0.Y1Y2.Yn=-Y0+0.Y1Y2.Yn于是Y=-Y0+Y1*2-1+Y2*2-2+Yn*2-n=-Y0+(Y1*20+Y1*2-1)+(Y2*2-1+Y2*2-2)+(Yn*2-(n-1)-Yn*2-n)=(Y1-Y0)20+(Y2-Y1)2-1+(Yn+1-Yn)2-n=(Yi+1-Yi)2-i(i=1.n),第三章运算方法与运算器(25),(2)证明公式X*Y补=X补.*Y,证明从略。X*Y补=X补.*Y=X补.*(Y1-Y0)20+(Y2-Y1)2-1+(Yn+1-Yn)2-n=X补.*(Yi+1-Yi)2-i(i=1.n)上式中,(Yi+1-Yi)只有四种状态,即:0-0=0;0-1=-1;1-0=1;1-1=0。按上述方法实现乘法运算,只需要在Y补的低端附加一位Yn+1=0,并不影响运算结果。具体做法:从最低位起,每次取两位乘数(Yi+1和Yi),根据“Yi+1-Yi”的状态,确定本次部分积的值与上次部分积相加后右移一位,一共进行n1次“相加右移”操作,最后一次不移位,便可得到乘积的补码。,第三章运算方法与运算器(26),“补码一位乘法”的运算规则:在乘数Y的最后附加一位Yn+1=0;从最低位Yn+1开始倒序每次取两位乘数(Yi=0和Yi+1),操作过程如下:YiYi+1操作过程00上次部分积0后右移一位01上次部分积X补后右移一位10上次部分积X补后右移一位11上次部分积0后右移一位上述“相加右移”操作进行n+1次,最后一次不移位,便可得到X*Y补。,第三章运算方法与运算器(27),Y0Y1Y2Y3Y4Y5000000101010+-X补110011-110011101010111001110101+X补001101-000110110101000011011010+-X补110011-110110011010111011001101+X补001101-001000001101000100000110+-X补110011-110111000110X*Y补=1101110001X*Y原=1110001111X*Y=10001111143,例1:已知X=+13,Y=-11,求X*Y解:X补=X原=01101X补=10011Y原=11011Y补=10101,第三章运算方法与运算器(28),Y0Y1Y2Y3Y4Y5Y600000001001100+00000000-0000000100110000000000100110+-X补0010101-0010101010011000010101010011+00000000-0001010101001100001010101001+X补1101011-1110000010100111110000010100+00000000-1111000001010011111000001010+-X补0010101-00100010001010,例2:已知X=-0.10101,Y=-0.11010,求X*Y解:X原=1.10101X补=1.01011-X补=0.10101Y原=1.11010Y补=1.00110,X*Y补=00.1000100010X*Y原=00.1000100010X*Y=+0.1000100010,第三章运算方法与运算器(28+),采用比较法实现补码一位乘法的乘法器逻辑结构,见41页图。补码两位乘法为了加快乘法的运算速度,仿照补码一位乘法的思路,同样可扩展为补码两位乘法,从乘数的最低位开始倒序每次取两位乘数与被乘数相乘,便成为补码两位乘法。补码两位乘法部分积的形成补码两位乘法同样采用比较法,需要在乘数末尾附加一位Yn+1,其初始值为“0”,每次参加比较的数为3位,即Yn+1、Yn、Yn1,这样做实际上是将补码一位乘法中的两次比较合为一次来确定本次的部分积于是会产生8种不同的形成部分积的方式,相应的操作如下表:,第三章运算方法与运算器(29),Yi-1YiYi+1操作过程000上次部分积0后右移2位001上次部分积X补后右移2位010上次部分积X补后右移2位011上次部分积2X补后右移2位100上次部分积2X补后右移2位101上次部分积X补后右移2位110上次部分积X补后右移2位111上次部分积0后右移2位,第三章运算方法与运算器(30),补码两位乘法的操作过程例:已知X0.11111101,Y0.01110001,求X*Y=?,解:X补00.111111012X补01.11111010-X补11.00000011-2X补10.00000110Y原11.01110001Y补11.10001111,部分积乘数(Y)Y9(附加位)000.0000000011.100011110111.00000011-X补111.000000111110001111011111000000111110001110000000000001111110000011111000111111111100000011111000100011111101X补0001110110100111110001000000111110100111110011100000110-2X补110010000010100111110011110010000010100111110000000000001111001000001010011111,X*Y补11.1001000001010011X*Y原11.0110111110101101X*Y补-0.0110111110101101,第三章运算方法与运算器(31),说明:两个8位数相乘,只需作5次“相加右移”操作,最后一次不移位;由于有2X操作,因此部分积需设置3个符号位,最高位代表部分积的正确符号,部分积右移时应保持符号位不变;若乘数Y的数码位为奇数位,则可在被乘数和乘数的末端均附加一位“0”,使之成为偶数位后再进行乘法运算,乘积的最后2位“00”无效;为进一步提高乘法的运算速度可采用阵列乘法器。其思想是大幅度增加全加器的数量。,第三章运算方法与运算器(32),三、定点除法运算及实现定点除法运算有原码除法和补码除法两种。1、原码除法运算符号位单独运算,将两个操作数的绝对值相除,最后给乘积冠以正确的符号的方法,称为“原码除法”。一般来说,n位原码除法是指被除数、除数和商数的数码位均为n位。在实际运算中,被除数被扩展成2n位,因此业允许参加运算的被除数是2n位。原码除法有恢复余数法和加减交替法之分。,第三章运算方法与运算器(33),恢复余数法例:若X=+0.1001,Y=-0.1101,求X/Y=?解:符号位单独处理Qf=Xf异或Yf=1二进制除法手算过程:0.10110.11010.10010000-1101010100-110101110-11010001因此:商Q0.1011余数R=+0.00000001,第三章运算方法与运算器(34),说明:n位除法为了保证商数的数码位为n位,必须要求被除数的高端n位小于除数,否则可能出现n+1位的商数,即“除法运算溢出”。每次上商总是比较余数与除数的大小,若余数大于或等于除数则商“1”,且将余数减去除数后左移一位得新余数;若余数小于除数,则商“0”,且不做余数减除数操作,只将原余数左移一位得新余数,商数过程进行n次,共上n位商数,完成n位除法过程。上述过程的计算机实现为判断本次除法是否产生溢出,首先需要将被除数的高n位减去除数,若其余数大于0,则判定本次运算溢出,立即中止除法运算;若余数小于0,则应将除数加回去恢复被除数,继续以下除法过程。每次上商之前,总要作一次余数减除数操作。若该余数大于或等于0,则表示够减商“1”后将该余数左移一位得新余数;若该余数小于0,表示不够减,商“0”,本次减法运算不该作,应将除数加回去,恢复原来的余数后将其左移一位得新余数,恢复余数法因此而得名。,第三章运算方法与运算器(35),例:若X=+0.1001,Y=-0.1101,求X/Y=?解:符号位单独处理:Qf=Xf异或Yf=1|X|原=0.1001|Y|原=0.1101|Y|补=0.1101|Y|补=1.0011,0.10010.000+-|Y|补100111110000000+|Y|补011010100100000100100000+-|Y|补100110010100001010100001+-|Y|补100111110100010+|Y|补011010101000010101000010+-|Y|补100110011100101011100101+-|Y|补100110.00010.1011,结果:商数Q-0.1011余数R+0.00012-4若最后余数为负,要纠余。,第三章运算方法与运算器(36),恢复余数法的缺点:商0时需恢复余数,降低了除法运算速度;操作步骤不规则,商0时需作5步操作,商1时需作3步操作。加减交替法加减交替法又称作“不恢复余数法”,由“恢复余数法”改进而来。先分析恢复余数法的操作过程:第i次操作是将上此操作的余数Ri左移一位减去除数Y得新的余数Ri1,即Ri1=2Ri-Y,若Ri10,则商为1,进入第i+1次操作,进行2Ri1-Y;若Ri10,则商0,并且恢复余数Ri1+Y=2Ri,然后进入第i+1次操作,进行4Ri-Y。若当第i次操作商0后,不恢复余数,而是直接进入第i+1次操作,将小于0的余数Ri1左移一位后加Y,即进行2Ri1Y=2(2Ri-Y)+Y=4Ri-2Y+Y=4Ri-Y,这样作的效果与恢复余数后的第i+1次操作完全相同,这说明恢复余数的操作并不是必须的。若余数为正则商1,下一步将余数左移一位后减去除数Y;若余数为负则商0,下一步将余数左移一位后加上除数Y。加减交替法由此而来。,第三章运算方法与运算器(37),加减交替法的运算规则:若Ri0,则商为1,下次作2RiY操作;若Ri0,商1结果:Q=-0.1011R=+0.00012-4,第三章运算方法与运算器(39),说明:商的第一位应为0,仅表示结果未溢出,若为1,则溢出,中止操作;若最后余数为负,要纠余,即增加一次|Y|操作;加减交替法克服了恢复余数法的两个问题,在现代计算机中原码除法均采用加减交替法;最后给商数和余数冠以正确符号(余数与被除数符号同)。2、补码除法运算符号位同样参与运算,加减交替法。,第三章运算方法与运算器(40),四、浮点数的算术运算方法及实现1、浮点数的加减运算对阶尾数运算结果规格化m补=00.1XXX.Xm补=11.0XX.Xm补=11.100.0向右规格化m补=01.XXX.Xm补=10.XX.X向左规格化去掉小数点后的前导0去掉小数点后的前导1,但11.100.0除外,第三章运算方法与运算器(40+),2、浮点除法运算五、计算机中的逻辑运算及实现1、逻辑非2、逻辑与3、逻辑或4、逻辑异或,练习题,某机字长32位,浮点表示时,阶码占8位,尾数占24位,各包含一个符号位。问:(1)带符号定点小数的最大表示范围是多少?(2)带符号定点整数的最大表示范围是多少?(3)浮点表示时,最大的正数是多少?(4)浮点表示时,最大的负数是多少?(5)浮点表示时,最小的规格化正数是多少?,答案,答案:(1)-1+(1-2-31)(2)-2+31+(2+31-1)(3)(1-2-23)*2+127(4)-2-23*2-128(5)+2-1*2-128,习题,一、已知X=-0.10001012-111Y=+0.00010102-100(1)用补码运算求XY?,并判断是否有溢出。(2)用补码运算求XY?,并判断是否有溢出。解:(1)对阶X=-0.00010002-100(2)运算X补=11100,11.1111000X补=11100,11.1111000+Y补=11100,00.0001010+-Y补=11100,11.1110110-X+Y补=11100,00.0000010X-Y补=11100,11.1101110(3)结果规格化X+Y补=11100,00.0000010=10111,00.1000000溢出X-Y补=11100,11.1101110=11010,11.0111000X-Y=-0.10010002-110,习题,二、已知X=-7.25Y=+28.5625(1)将X和Y分辨转换成二进制浮点数(阶码4位,尾数10位,各包含一个符号位;(2)用变形补码求XY?,答案,解:X=-111.01=-0.111012+011Y=+11100.1001=+0.1110010012101X原=00011,11.111010000Y原=00101,00.111001001X补=00011,11.000110000Y补=00101,00.111001001-Y补=00101,11.000110111(1)对阶X补=00101,11.110001100-Y补=00101,11.000110111(2)尾数运算11.110001100+11.000110111-10.111000011(3)结果规格化X-Y补=00110,11.0111000011X-Y原=00110,11.1000111101X-Y=-0.10001111012+110,习题,三、已知X=-0.111100002-010Y=-0.000000012010请用变形补码求XY,XY解:(1)对阶X=-0.000011112010X补=00010,11.11110001Y补=00010,11.11111111-Y补=00010,00.00000001(2)尾数运算、结果规格化11.1111000111.11110001+11.11111111+00.00000001-X+Y补=11.11110000X-Y补=11.11110010X+Y补=00010,11.11110000=11111,11.100000000X+Y=-0.100000002001X-Y补=00010,11.11110010=11110,11.00100000X-Y=-0.111000002-010,第三章运算方法与运算器(41),六、运算器的组成与分析运算器是计算机的重要组成部分之一,用来完成各种算术和逻辑运算,因此常称作算术逻辑单元(ALU)。运算器的核心是加法器。若机器字长n位,则应由n个全加器构成n位并行加法器。利用串行进位方式的加法器,结构简单,但加法速度慢,原因就在于进位信号的串行传送。因此提高加法器运算速度的关键在于缩短进位信号的传送时间。1、并行进位方式的实现采用串行进位方式的16位并行加法器如下图:,第三章运算方法与运算器(42),上图中,第i位进位信号的逻辑表达式如下:Ci=Ai

温馨提示

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

评论

0/150

提交评论