《计算机组成原理(第二章2new-1).ppt》由会员分享,可在线阅读,更多相关《计算机组成原理(第二章2new-1).ppt(246页珍藏版)》请在三一办公上搜索。
1、第二章 运算方法与运算器,本章内容:,数据与文字的表示方法定点加法、减法运算定点乘法、除法运算定点运算器的组成浮点运算方法和浮点运算器 本章小结,2.1 数据与文字的表示方法,1、数据格式2、数的机器码表示3、字符与字符串的表示方法4、汉字的表示方法5、校验码,数据与文字的表示方法,数据的表示方法,文字与符号的表示方法,2.1.1 数据格式,计算机中常用的数据表示格式有两种:(1)定点格式(2)浮点格式,定点格式(小数点位置固定):可表示的数值范围有限,但要求的处理硬件比较简单。,浮点格式(小数点位置浮动):可表示的数值范围大,但要求的处理硬件比较复杂。,数据格式,1.定点数的表示方法,定点表
2、示:约定机器中所有数据的小数点位置是固定 的,小数点就不再使用记号“.”来表示。定点数据的形式:纯小数或纯整数。,(设:定点数表示为012n 其中:0符号位,0代表正号,1代表负号),小数点的位置约定在符号位x0的后面(不显示),小数点的位置约定在数值位xn的后面(不显示),定点数的表示方法,定点数例,例:(符号位约定:0代表正号,1代表负号)X=+1010110.,纯整数:X=01010110.,正数,符号位取0,Y=-1101001.,纯整数:Y=11101001.,负数,符号位取1,X=+0.11011,Y=-0.10101,小数点隐藏,纯小数:X=0.11011,小数点隐藏,纯小数:X
3、=1.10101,纯整数:X=01010110.,纯整数:Y=11101001.,纯小数:X=0.11011,纯小数:X=1.10101,注意到:无论是整数或是小数,在机器数的表示中,都不出现小数点“.”,只是约定其位置。,定点数例,小数点隐藏,小数点隐藏,(设:x=012n 则:数值位各位均为0时最小;各位均为1时最大)纯小数的表示范围:0|12n(2.1)纯整数的表示范围为:0|2n1(2.2)目前计算机中多采用定点纯整数表示,因此将定点数表示的运算简称为整数运算。,定点数的表示方法,2、浮点数的表示方法,例:156.78=15.678101=1.5678102=0.15678103=MR
4、E其中:M为尾数;R为基数;E为阶码(指数)。(尾数M表示数的有效数字,阶码E表示数的范围),那么,计算机中究竟采用哪种数据形式?,显然存在多种数据形式,什么是浮点数表示:,在计算机中,一般约定尾数M为小数,即:尾数|M|1.0,并按此原则确定各数据的浮点表示格式。上例+156.67=+0.15678 103 0.15678 103同理:对于二进制数+1011.1101=+0.10111101 2+4 0.10111101 2+100=MRE,二进制数,可见:一个机器浮点数由阶码E和尾数M及其符号位组成。,浮点数表示,约定:尾数M用定点小数表示,给出有效数字的位数,M决 定了浮点数的表示精度;
5、阶码E:用整数形式表示,指明小数点在数据中的位 置,其决定了浮点数的表示范围。浮点数的一般形式为:,浮点数表示,按照 IEEE754 的标准,32位浮点数和64位浮点数的标准格式为:,其中:=浮点数的符号位,0表示正数,1表示负数。=尾数,23位,用纯小数表示;=阶码,8位,用纯整数表示。阶符采用隐含方式,即采用移码方式来表示正负指数。,其中:=浮点数的符号位,0表示正数,1表示负数。=尾数,52位,用纯小数表示。=阶码,11位,阶符采用隐含方式,即采用移码方式来表示正负指数。,32位:,64位:,浮点数表示,几点注释:为了提高浮点数据的表示精度,当尾数的值不为0时,其绝对值:|M|0.5,即
6、:尾数绝对值域的最高有效位应为1,否则通过修改阶码(即左右移动小数点)的办法,使其变成这一表示形式,这称为浮点数的规格化表示。(后面再讨论)在字长相同的条件下,浮点数所表示的范围显然远比定点数大。以下两种情况计算机都把该浮点数看成零值,称为机器零。当浮点数的尾数M为 0;(不论其阶码E为何值)当阶码E的值Emin值时。(不管其尾数M为何值),X=+10100.10011+0.101001001125(移动小数点,使其尾数为纯小数)数符 S0,阶码 E5,尾数 M0.1010010011得到:X 的浮点数形式为:0.10100100112+101,例:将十进制数 X=转换成二进制浮点数的形式。,
7、解:首先分别将整数和分数部分转换成二进制数:+20+10100.,注意到:这不是IEEE754标准形式。,3.十进制数串的表示方法,十进制数在计算机内以符号来处理,其主要有两种表示形式:1.字符串形式字符串表示:每一个十进制的数位或符号位都用一个字节存放。如:+25,-38,十进制数的表示方法,(ASCII码存储),用于非数值计算,2.压缩的十进制数串形式(BCD码)压缩的十进制数串形式:每个字节存放两个十进制的数码。如:+153、-12,(字节),(字节),(字节),(字节),(BCD码存储),即:每个十进制的数位或符号位都用4位二进制码表示。,既可用于非数值计算、也可用于数值计算。,2.1
8、.2 数的机器码表示,基本思想:把符号位和数字位一起编码来表示一个 实际的数,使符号位也能参与计算。主要表示方法有:原码、补码、反码、移码等。实际数(连同符号一起编码)机器数或机器码;机器数或机器码(真实数值)对应的真值。,数的机器码表示,以定点整数:x=n-110为例,原码的定义是:即:定点整数的原码形式为:原=nn-110,2n0 2n2n|02n,例如,+11001,则原011001-10101,则 原110101,数值取绝对值,1.原码表示法,数的原码表示,注意到:“+0”、“-0”原码在机器中有两种形式:对于定点整数:+0原=00000.-0原=10000.,即:“0”的原码表示不唯
9、一,有两种。原码的缺点1,可见:原码表示法非常简单、易懂。,原码的缺点2:由于数值部分是采用绝对值表示的,因而特别适合于乘除运算,但是加减法运算却比较麻烦,而加减法运算正是计算机中最常使用的运算。所以,必须探讨解决方法。补码则正是一种解决方法。,数的原码表示,2.补码表示法(教材P20),补码的概念(以钟表对时为例):假设:现在的标准时间为4点正;而钟表已经7点了,为了校准时间,可以采用两种方法:(1)将时针退 3 格(7-3=4);(2)将时针向前拨9格(7+9=16 4)。显然:这两种方法都能对准到4点。原因在于:当模数为12时,减3和加9是等价的。,数的补码表示,用数学公式表示:-3+9
10、(mod12),上式在数学上称为同余式。,即:当模数Mod=12时,可定义:9是(-3)补码。“模Mod”:表示可以被丢掉的数值。设某数为x,当Mod=12时:x-3=x+9、x+7=x-5 或:x+12=x(Mod=12)都是等价的。从这里可以得到一个启示:在补码运算时,甚至可以把减法转化为加法来计算,只要求出负数的补码即可。,即:补码的加、减计算都可用加法计算完成。,x 2n x 0 2n+1+x=2n+1-|x|0 x-2n,(mod 2n+1),补码的定义:,以定点整数(x=n-110)为例:,正数的补码数值就是本身,负数的补码需作运算,数的补码表示,例:已知x=+10111,y=-1
11、1011,(n=5)求 x补、y补 按定义:x补=010111 y补=25+1+y=1000000-11011=100101,1000000 11011 100101,问题:根据补码定义,求负数的补码时需作一次减法运算,这显然不是补码方法的初衷。后面将介绍反码表示法可以解决负数的求补问题。,数的补码表示,注意到:0的补码只有一种形式.对于定点整数:0补0补0,0000 对于定点小数:0补0补0.0000,3.反码表示法(用于快速求补码),二进制数求反码:正数:符号取0、各位数码位保持不变;负数:符号取1,各位数码位全部取反,即得到。即:若 xi=0,则 Xi=1。若 xi=1,则 Xi=0.,
12、数的反码表示,例:已知 x=+10111,y=-11011,求 x反、y反,解:x=+10111 0 按定义:x反=0 10111 y=-11011 0 按定义:y反=1 00100,注意到:0的反码也有两种,不唯一。即:0反0000;0反1111,可见:反码非常容易得到。,通过反码求补码的方法:,当x为正数时:补反当x为负数时:补反+1 由此可知一个由反码求补码的重要公式,即:一个负数的补码,可以通过将该数:“符号位置1,其余各位取反,然后在最末位加1”的方法直接获得。,数的补码与反码关系,例:已知x=+1011,y=-1101,求 x补、y补按定义:x0 x补=x反=0,1011(注:正数
13、的补码、反码,数值保持不变!)y0 y补=y反+1=1,0010+1=1,0011,由反码求补码方法的最大优点:消除了负数求补码过程中的减法计算.,求一个负数的补码的另一种有效的转换方法:对于负数,先写出其原码,符号位保持为1,数值部分由低位向高位转换,对开始遇到的0和第一个1,保持原值不变,第一个1以后的各位均取反。例:y=-0.110100,求 y补 解:y原=1110 100(y0)y补=1001 100,保持不变,全部取反,y反=1001011y补=1001011+1=1001100(结果相同),数的补码与反码关系,4.移码表示法,在计算机中,移码通常用于表示浮点数的阶码,所以移码一般
14、只用于整数的表示。,若用补码表示阶码,则很难直接判断阶码的大小。而移码则可以解决此问题。,对定点整数x(数值部分为n位),则 其移码的定义是:移2n2n2n,例如,十进制,若采用移码:移=x+25,+21+10101,+31+11111,错,错,正确,正确,0,10101,1,01011,0,11111,1,00001,+10101,10101,+11111,11111,1,10101,0,01011,1,11111,0,00001,二进制,补码,移码,-21,-31,例:当10111 时,移25x1,10111 当 y-10111 时,y补1,01001 y移25y25-101110,010
15、01可见:(1)移码中符号位n表示的规律与原码、补码、反码 相反。(2)移码在数值上与补码一致,但是符号位与补码正 好相反!,移码的表示方法,机器码表示法小结:,在数据的四种机器码表示法中:正数的原码、反码、补码等同于真值;只有负数才分别有不同的表示方法。补码和移码的0只有一种表示方法,因此其表示范围相对于原码和反码多一种,定点小数可表示-1(移码没有小数形式),正数可表示-2n。,机器码表示法小结,移码表示法主要用于表示浮点数的阶码,可以直接比较大小。移码在数值上与补码相同,符号位(最高位)正好相反。由于补码表示对加减法运算十分方便,因此目前机器中广泛采用补码表示法。在这类机器中,数用补码表
16、示,补码存储,补码运算。(如:有些机器在做加减法时用补码运算,在做乘除法时用原码运算),机器码表示法小结,例6 以定点整数为例,用数轴形式说明原码、反码、补码表示范围和可能的数码组合情况。,机器码表示法小结,例7 将十进制真值(127、1、0、1、127)列表表示成二进制数及原码、反码、补码、移码值。,(见教材P22,自阅)。,例8 设机器字长16位,定点表示,尾数15位,数符1位,问:定点整数原码表示时,最大正数是多少?最大的负数是多少?,解:定点整数原码:最大正数值=0,+(2151)10 最大的负数值=1,(2151)10,机器码表示法小结,例6假设由S,E,M三个域组成的一个32位二进
17、制字所表示的非零规格化浮点数,真值表示为:(1)s(1.M)2E128问:它所表示的规格化的最大正数、最小正数、最大的负数、最小的负数是多少?,解:(1)最大正数,(2)最小正数,机器码表示法小结,(23位),(8位),(4)绝对值最小的负数:,00000000000000000000000,00000000,1,1.02128,11111111,1,1(1223)2127,(3)绝对值最大的负数:,机器码表示法小结,2.1.3 字符与字符串的表示方法,1.字符的表示方法 目前国际上普遍采用的字符系统是七单位的ASCII码(美国国家信息交换标准字符码),它包括10个十进制数码,26个英文字母和
18、一定数量的专用符号,共125个元素,因此二进制编码需7位,加一位偶校验位,共8位一个字节。ASCII码规定二进制数位的最高一位(b7)恒为0,余下的7位可以给出128个编码,可表示128个不同的字符。,表2.1 ASCII字符编码表(教材P24),b3b2b1b0位,b6b5b4位,2.字符串,字符串:是指连续的一串字符.通常方式下,它们依次占用主存中地址连续的多个字节,每个字节存一个字符。,例 将字符串:IFABTHENREAD(C)从高位字节到低位字节依次存在主存中。,解:设:主存单元长度由4个字节组成。每个字节中存放相应字符的ASCII值,文字表达式中的空格“”在主存中也占一个字节的位置
19、。因而每个字节依次存放的ASCII码(16进制数)为:49、46、20、41、3E、42、20、44、48、45、4E、20、52、45、41、44、28、43、29、20。,字符和字符串的表示方法,主存各字节单元内容,字符和字符串的表示方法,2.1.4 汉字的表示方法,1.汉字的输入编码包括:数字码、拼音码和字形码数字码:常用的是国标区位码,用数字串代表一个汉字输入。区码和位码各两位十进制数字,因此输入一个汉字需按键四次。数字编码输入的优点是无重码,且输入码与内部编码的转换比较方便,缺点是代码难以记忆。拼音码:拼音码是以汉字拼音为基础的输入方法。使用简单方便,但汉字同音字太多,输入重码率很高
20、,同音字选择影响了输入速度。,汉字的表示方法(汉字的输入编码),字形码:字形编码是用汉字的形状来进行的编码(例:五笔字型)。把汉字的笔划部件用字母或数字进行编码,按笔划的顺序依次输入,就能表示一个汉字。其它输入方式:利用语音或图象识别技术“自动”将汉字识别输入等,使计算机能自动识别、理解汉字,并将其自动转换为机内代码表示。,汉字的表示方法(汉字的输入编码),2.汉字内码 汉字内码是用于汉字信息的存储、交换、检索等操作的机内代码,一般采用两个字节表示,每个汉字在机器中都有一个唯一的内码。英文字符的机内代码是七位的ASCII码,当用一个字节表示时,最高位为“0”。为了与英文字符能相互区别,汉字机内
21、代码中两个字节的最高位均规定为“1”。注意:有些系统中字节的最高位用于奇偶校验位,这种情况下用三个字节表示汉字内码。,汉字的表示方法(汉字的内码),3.汉字字模码,字模码是用点阵表示的汉字字形代码,它是汉字的输出形式。,例如:,字模码,汉字的表示方法(汉字字模码),此例,汉字的字模码为:16位 16位=32字节,注意到:字模点阵只能用来构成汉字库,而不能用于机内存储。其仅用于汉字的显示输出或打印输出。汉字的输入编码、汉字内码、字模码是计算机中用于输入、内部处理、输出三种不同用途的编码,各自的功能完全不同。,汉字的表示方法(汉字字模码),各种因素常常导致计算机在处理信息过程中出现错误。为了防止错
22、误,可将信号采用专门的逻辑线路进行编码以检测错误,甚至校正错误。,2.1.5 校验码,最简单且应用广泛的检错码方法是奇偶校验法,即:采用一位校验位的奇校验或偶校验的方法。,设(01n1)是一个n位字,则奇校验位定义为:C01n1,式中代表按位加,只有当中包含有奇数个1时,才使 C1,即 C0。,同理,偶校验位定义为:C01n1 即中包含偶数个1时,C0。,效验码,假设:一个字从部件 A 传送到部件 B。在源点 A,按约定将校验位C与数据合在一起(01n-1C)送到B。若约定采用偶效验:设,在B点真正接收到的是(01n1C),然后做校验:F01n1C 若:F0,表明字传送正确;若:F1,意味着收
23、到的信息有错。奇偶校验可提供奇数个错误检测,但无法检测偶数个错误,更无法识别错误信息的位置。(循环校验码CRC可解决此问题),效验码,例,效验码,加入校验位前传送的数码为:,加入校验位后传送的数码为:,效验码,2.2 定点加法减法运算,2.2.1 补码加法2.2.2 补码减法2.2.3 溢出概念与检验方法2.2.4 基本的二进制加法、减法器2.2.5 十进制加法器,定点加减法运算,2.2.1 补码加法,补码加法的公式是:补补补(mod 2n+1)现分四种情况来证明。(见教材P26-27,自阅)假设采用n位定点整数表示,因此证明的先决条件是:2n-1,2n-1,2n-1。(非溢出数)(1)0,0
24、,则0。相加两数都是正数,故其和也一定是正数。正数的补码和原码是一样的,可得:补补补(mod 2n+1),补码的加法,(2)0,0,则0 或0:2n+1()2n+1,进位2n+1必丢失;又因()0,所以:补补补(mod 2n+1)若0:2n+1()=y补,所以:补补2n+1()补(mod 2n+1),(3)0,则0或 0。这种情况和第2种情况一样,把和的位置对调即得证。(4)0,0,则0。相加两数都是负数,则其和也一定是负数。补2n+1,补2n+1 补补2n+12n+12n+1(2n+1)上式右边分为”2n+1”和(2n+1)两部分。既然()0,而其绝对值又小于(2n-1)那么一定有:0(2n
25、+1)2n+1,进位”2n+1”必丢失。又因()0,所以补补2n+1()补(mod 2n+1),补码的加法,至此得到证明:在模2n+1意义下,任意两数的补码之和等于该两数之和的补码。即:补补补(mod 2n+1)这是补码加法的理论基础,其结论也适用于定点小数。,补码加法可以连同符号位一起直接计算,即可得到“和的补码”。,例:x=+1011,y=+0100,计算:x+y=?解:补0,1011,补0,0100,补0,1011补0,0100 补0,1111 0 1111,例:1011,0101,求。,解:补0,1011 补1,1011 补0,1011补1,1011补 10,0110+0110,最高位
26、为模数MOD自行丢失,补码的加法,可见,补码加法的特点为:1、符号位作为数的一部分直接参加运算;2、超过模数(Mod)的进位要自动丢掉。(小数的计算同样适合,只是模数不同)。,2.2.2 补码减法,由补码的原理可知,补码可以通过加法来完成减法计算,进而简化运算器的结构。补码的减法公式如下:,补补补补 补,即:减法可以变成加法来计算!公式的证明简单,只需证明:补=补 即可。(见书P28),补码的减法,补码的减法,现证明如下:补补补(mod 2n+1)补补补 补()补补补 补 补补 将上二式相加,得:补补补补补补 补补补 补补补0 故:补 补,补码的减法,下面的问题是:若已知补,如何求取补?,方法
27、:(以定点整数为例)对已知的补:连同符号位一起,各位求反、最末位加1,即可得到 补。即:补 补1 其中:符号补表示:对补连同符号位一起的求反。,例13 已知 1 1101,2 1110,求:1补,1补,2补,2补。,解:1补0,11011补 1补11,00100,00011,0011 2补1,00102补 2补10,11010,00010,1110,补码的减法,例14 1101,0110,求。,解:补0,1101补0,0110 补1,1010 补 0,1101补 1,1010 补 1 0,0111 00111,补码的减法,又例 5EH,38H,求。,补0,1011110补0,0111000 补
28、1,1001000 补 0,1011110补 1,1001000 补 10,0100110 0 0100110=+26H,补码的减法,解:X=+1011110,y=+111000,最高位1自行丢失,2.2.3 溢出概念与检测方法,在定点数的运算过程中,如数值的大小超出定点数所能表示的范围,则称为“溢出”。这在定点机中是不允许的!,溢出的特征:两个正数相加,结果为负(即:大于机器所能表示的最大正数),称为上溢。两个负数相加,结果为正(即:小于机器所能表示的最小负数),称为下溢。,溢出概念与检测方法,见实例,例12 1011,1001,求。,解:补0,1011 补0,1001 补 0,1011 补
29、0,1001 补1,0100 负值?两正数相加,结果为负,显然错误。(运算中出现了“上溢”),溢出概念与检测方法,有进位,无进位,又例 1011,0010,求。,解:补0,1011 补0,0010 补0,1011 补0,0010 补0,11011101 两正数相加,结果正确,无溢出.,溢出概念与检测方法,例 0.1101,0.1011,求。,解:补1,0011 补1,0101 补 1,0011 补 1,0101 补 1 0,1000 0,1000,两负数相加,结果为正,显然错误。(运算中出现了“下溢”),溢出概念与检测方法,无进位,有进位,+1000?,产生“溢出”的原因:在加法运算时,当最高
30、有效数值位的运算进位与符号位的运算进位不一致时,将产生运算“溢出”。,溢出概念与检测方法,“溢出”检测方法:,为了判断“溢出”是否发生,可采用两种检测的方法。,溢出检测方法1:“单符号位法”。从例题中看到:当符号位进位Cf与最高有效位进位Co不一致时,即会产生溢出。故:溢出逻辑表达式为:VCfCo其中:Cf为符号位产生的进位,Co为最高有效位产生的进位。(显然:用异或门即可方便地得到溢出信号V)在定点机中,机器会自动检查运算结果是否发生溢出,若溢出,则要进行中断处理。,(2)溢出检测方法2:双符号位法,又称为“变形补码”.,溢出概念与检测方法,变形补码:符号位由一位变为二位,如:,1.两个符号
31、位与数码一样都参加运算;2.最高符号位上产生的进位Cf1,同样要被丢掉。,溢出概念与检测方法,必须注意,在用变形补码运算时:,结论:采用变形补码后,两个补码相加,如果结果的符号位出现“01”或“10”两种组合时,表示发生溢出。,VSf1Sf2,即,溢出逻辑式为:,两位符号位,例14 1100,1000,求。,溢出概念与检测方法,解:补00,1100,补00,1000 补 00,1100 补 00,1000 01,0100 两个符号位出现“01”,表示已溢出,即结果大于最大值。(上溢),正确的符号位),()溢出!,又例 1100,0001,求。,溢出概念与检测方法,解:补00,1100,补00,
32、0001 补 00,1100 补 00,0001 00,1101 两个符号位=“00”,表示无溢出。,+1101,例15 1100,-0110,求,溢出概念与检测方法,解:补11,0100,补11,1010 补11,0100补11,1010 10,1110 两个符号位出现“10”,表示已溢出,即结果小于最小值。(下溢),溢出!,(正确的符号位),溢出概念与检测方法,小结:当以变形补码运算,运算结果的双符号位相异时,表示溢出;相同时,则表示未溢出。溢出逻辑表达式为:VSf1Sf2 其中:Sf1和Sf2分别为最高符号位和第二符号位。2.两变形补码相加,不论结果是否溢出,最高符号位Sf1总是结果的正
33、确符号。,2.2.4 基本的二进制加法/减法器 两个二进制数字Ai、Bi和一个进位输入Ci相加,产生一个和输出Si以及一个进位输出Ci1。(一位全加器)右表列出一位全加器进行加法运算的输入输出真值表。根据真值表,三个输入端和两个输出端可按如下逻辑方程进行联系:SiAiBiCi Ci1AiBiBiCiCiAi AiBi(AiBi)Ci,二进制加法/减法器,按表达式组成的一位全加器(FA)示意图(b)对一位全加器(FA)来说,Si的时间延迟为6T(每级异或门延迟3T),Ci1的时间延迟为5T。其中:T相应于单级逻辑门电路的延迟,通常被定义为一个“与非”门或一个“或非”门的时间延迟作为度量单位。,二
34、进制加法/减法器,由n个全加器(FA)可级联成一个n位基本补码加法/减法器 称为:n位行波进位加减器(见书P31图)。,电路示意图,二进制加法/减法器,n位行波进位加/减器逻辑电路,M为方式控制输入信号:当M0 时,作加法运算;当M1 时,作减法运算。(注意B补的求法)图中:左边表示采用单符号位法的溢出检测逻辑,经异或门产生溢出信号。,用一套加法器可以同时实现加、减法运算,二进制加法/减法器,一个n位行波进位加法器的时间延迟:(见书P31)考虑:“异或门”的延迟时间为3T;每级进位链的延迟时间为2T。,见后图,二进制加法/减法器,延迟时间为:2T,延迟时间为3T,考虑溢出检测时,延迟时间ta为
35、:tan2T9T(2n9)T,2.3 定点乘法运算,2.3.1 原码并行乘法2.3.2 补码并行乘法*,定点乘法运算,2.3.1 原码乘法,1.人工算法与机器算法的同异性 在定点计算机中,两个原码表示的数相乘的运算规则是:乘积的符号位由两数的符号位按异或运算得到;而乘积的数值部分则是两个正数相乘之积。,原码乘法运算,设:n位被乘数和乘数用定点整数表示:被乘数 原n,n110乘数 原n,n110 则乘积:原(nn)(n110)(n110)式中:n为被乘数符号,n为乘数符号。,也就是说:原码的做乘法运算时,符号位无需参与计算,只要完成数值部分的运算即可。,乘积符号的运算法则:乘积的符号按“异或”运
36、算直接得到,即:(nn)数值部分的运算方法与普通的十进制数乘法类似,二进制数的乘法规则更为简单。设1101,1011.先用习惯方法求其乘积,观察其过程:,原码乘法运算,(手工计算过程),手工运算的过程与十进制乘法相似。如果被乘数和乘数用定点整数表示,运算过程也完全一样。,原码乘法运算,然而,这种习惯的手工算法对机器并不完全适用。,原因之一:机器通常只有n位长,运算器也是n位长,而两个n位二进制数相乘,乘积可能为2n位。原因之二:加法器每次只能进行两个操作数的相加,无法将n个部分积同时做相加运算。早期计算机中为了简化硬件结构,采用多次执行“加法移位”的串行操作来实现,然而运算速度太慢。随着高速乘
37、法部件的问世,目前已普遍使用各种形式的流水式阵列乘法器,它们属于并行乘法器。,原码乘法运算,2.不带符号的阵列乘法器设有两个无符号的二进制整数:Aam1a1a0(m位)Bbn1b1b0(n位)它们的数值分别为a和b,即:m1 n1 a ai2ib bj2j i0 j0,原码乘法运算,做二进制乘法:被乘数A与乘数B相乘,产生(mn)位乘积P:Ppmn1p1p0(m+n位)乘积P 的数值为:,实现上述乘法过程所需要的操作和人们的习惯方法非常类似:,am-1 am-2 a1 a0)bn-1 b1 b0 am-1b0 am-2b0 a1b0 a0b0 am-1b1 am-2b1 a0b1+)am-1b
38、n-1 am-2bn-1 a0bn-1 pm+n-1 pm+n-2 pm+n-3 pn-1 p1 p0,原码乘法运算,所有的位积因子同时形成,阵列乘法器原理结构,加法器阵列,在m位乘n位不带符号整数的阵列乘法中,共有:mn个被加数aibj aibj|0im1和0jn1,又称位积因子,可以用mn个“与”门同时地产生。(1个门延时)设计高速并行乘法器的基本问题,就集中在 如何构建加法器阵列,有效缩短被加数矩阵中每列所需的加法时间。5位5位阵列乘法器的逻辑电路图演示:,原码乘法运算,若乘法器为nn位时,需要n(n1)个“全加器”和n2个“与”门。,令Ta为“与门”的传输延迟时间,Tf为全加器(FA)
39、的进位传输延迟时间,假定用2级“与非”逻辑来实现FA的进位链功能和“与门”逻辑,那么就有:Ta Tf 2T 由上面的分析可以得出:最长的延迟途径是沿着矩阵p4垂直线和最下面的一行。因而得:n位n位不带符号的阵列乘法器总的乘法时间为:tmTa+(n1)6T(n1)Tf 2T(n1)6T(n1)2T(8n6)T,原码乘法运算,例16 已知两个不带符号的二进制整数 A 11011,B 10101,求每一部分乘积项aibj的值与p9p8p0的值。解:,1 1 0 1 1=A(2710)1 0 1 0 1=B(2110)1 1 0 1 1 0 0 0 0 0 1 1 0 1 1 0 0 0 0 0+1
40、1 0 1 1 1 0 0 0 1 1 0 1 1 1=P(567)10 a4b0=1 a3b0=1 a2b0=0 a1b0=1 a0b0=1 a4b1=0 a3b1=0 a2b1=0 a1b1=0 a0b1=0 a4b2=1 a3b2=1 a2b2=0 a1b2=1 a0b2=1 a4b3=0 a3b3=0 a2b3=0 a1b3=0 a0b3=0 a4b4=1 a3b4=1 a2b4=0 a1b4=1 a0b4=1,(由55个与门同时产生)(2T),3.带符号的阵列乘法器(1)对2求补器电路 已知,一个负数的常规求补过程:例:X=-1110,则:X补=1,0010;Y=-0100,则:Y补
41、=1,1100 算法特点:从数据的最右边开始向左边逐位看数,找到第一个“1”为止。该“1”的左边各位全部取反(不包括符号位);该“1”的右边各位(包括该“1”)保持不变。由上述分析的算法特点,可以设计一个具有使能控制的二进制对2求补器电路.(教材P35如图2.6),带符号的阵列乘法器,演示对2求补电路的工作过程,32T,2T+3T,最长的信号 延迟通路,(见教材P35),所需的总时间延迟为:tTC32T5T,电路特点:采用按位扫描技术来执行所需要的求补操作。令Aana1a0是给定的(n1)位带符号的数(原码),要求确定它的补码形式。最右端的起始链式输入C1必须恒置成“0”。当控制信号线 E=1
42、时,启动对2求补的操作。当控制信号线 E=0时,输出将和输入相等。显然:可以利用符号位an来作为控制信号“E”.即:E=an,带符号的阵列乘法器,用求补器来转换一个(n1)位带符号的数(原码),需转换n位数码位(an-1a1a0),所需的总时间延迟为:tTCn2T5T(2n5)T 其中:每个扫描级需2T延迟,而5T则是由于“与”门和“异或”门引起的。注意到:符号位an只作为求补启动(使能)控制信号E.,(2)带求补器的阵列乘法器阵列乘法器:完成无符号数相乘。如何实现补码相乘?方法:两个补码相乘,先用求补法将补码转化为原码。将数值部分使用不带符号的阵列乘法器求出乘积的绝对值;符号位单独处理。再根
43、据乘积的符号位对乘积求补,得出乘积的补码。(n1)(n1)位带求补器的阵列乘法器逻辑方框图。(教材P36),带符号的阵列乘法器,在这种逻辑结构中,共使用三个求补器。两个算前求补器的作用是:将两个操作数A和B的数值部分,在送入无符号乘法阵列(核心部件)相乘以前,先变成绝对值(原码)。算后求补器的作用则是:把运算结果转换为补码。(当两个输入操作数A、B的符号不一致时,启动求补器)乘积为:AB补p2n p2n1p1p0 p2nanbn其中:P2n为符号位。(CAI演示),可见:在补码乘法中:输入数据为补码形式,不能直接交给无符号阵列乘法器使用,需要先将数据转换为原码参与计算;再将结果转换为补码输出。
44、所以,需要增加算前求补和算后求补等硬件电路。(称为:间接补码乘法),带求补级的阵列乘法器既适用于原码乘法,也适用于间接的补码乘法。显然:在原码乘法中:算前求补和算后求补都不需要,输入、输出数据都是立即可用的。(原码阵列乘法),带符号的阵列乘法器,需要吗?,注意到:由于间接的补码阵列乘法需要加入必需的算前、算后求补操作,运算时间大约要比单纯的不带符号的阵列乘法增加1倍。,例21 设15,13,用带求补器的补码阵列乘法器求出乘积?(书P36)解:已知:输入数据x,y为补码 做补码乘法 算前、算后求补都需要,由符号位决定是否启动求补器。本例:x=+15=(+1111)2,x补=0,1111;1111
45、(符号位为0,算前无需求补)y=-13=(-1101)2,y补=1,0011 1101(符号位为1,算前需求补,使y的数值变为正数)数值部分经由无符号阵列乘法器获得:(算式演示),无符号阵列乘法器完成,可知:1、无符号阵列乘法器输出的数值结果为:11000011。2、因为x和y的符号不一致,结果的符号位为“1”,则算后求 补器被启动,对结果求补,最后得出乘积的补码:本例:xy补=1 00111101,对应有:xy原=111000011。换算成真值是:(11000011)2=(-195)10 十进制数验证:y 15(13)195 相等。,可见:(1)这种带求补器的阵列乘法器所完成的补码 乘法,实
46、质上属于间接的补码乘法。(2)这种补码计算中,符号位并未直接参与计算。,带符号的阵列乘法器,那么:能否连同符号位一起计算,完成补码直接 乘法呢?,回答是肯定的!,2.3.2 直接补码并行计算*(教材P37-39),主要思想:连同符号位一起参与运算,直接得出 乘积结果。要解决的问题:先找出补码与其对应真值的关系。设:N补=ana1a0(补码与对应真值的关系:注意到:补码的符号位an带负权值,数值位带正权值。,(教材P37(2.25)式),只要让符号位带上“负权值”参与计算,即可实现补码的直接乘法计算。,(具体讨论略),2.4 定点除法运算,定点除法运算,2.4.1 原码除法算法原理2.4.2 并
47、行除法器,基本原理:两个原码表示的数相除时:商的符号由两数的符号位“异或”得到;商的数值部分由两数的数值部分直接相除求得。,原码除法运算原理,2.4.1 原码除法运算原理,设有n+1位定点小数(定点整数也同样适用):被除数,其原码为:原n.n110除数,其原码为:原n.n110 商q/,其原码为:q原(nn)+(0.n110/0.n110)商的符号运算:qnnn 与原码乘法一样。,商的求法:商的数值部分的运算,实质上是两个正数求商的运算。所以,原码的除法只需考虑两个正数相除即可。在二进制计算中,商的每一位不是“1”就是“0”,其运算法则比十进制运算更简单一些。,定点除法运算,设:被除数0.10
48、01,除数0.1011,模仿十进制除法运算,以手算方法求,该步不作,计算机计算需考虑的几点:1、计算机中,小数点是固定的,不能简单地采用手算的办法。为便于机器操作,计算机常采用“余数左移”的方法来替代“除数右移”。2、机器的运算过程和人不同,它不能直接判断够不够减:必须先作减法,若余数为正,才知道够减;若余数为负,则不够减。发现不够减时,必须恢复原来的余数,才能继续往下运算。这种方法又称为恢复余数法。由于要恢复余数,使计算的效率降低,同时使除法过程的步数不固定,因此控制比较复杂。,定点除法运算,由于恢复余数法中包含有一些无效(冗余)运算。实际中,故一般采用不恢复余数法,又称加减交替法。,“不恢
49、复余数法”除法规则:(被除数x,除数y)1、首先做(x-y)运算,即:x+-y补;2、判断余数符号:若余数为正(够减),则:商上“1”,余数左移一位,继续做减除数(+-y补)运算;若余数为负(不够减),则:商上“0”;余数左移一位,然后做加除数(+y补)运算。,注意:在原码除法运算中:先写出x原;y原;-y补(1)原码除法只进行两数值(x*,y*)的相除计算。商的符号位由(nn)直接获得。(2)在具体计算中,减法仍然须采用补码进行计算,即:+-y*补 实现。,加减交替法实例:,例 0.101001,-0.111,用原码除法求:=?解:x原=0.101001,原=1.111,y*0.111,y*
50、补1.001 被除数*0.1 0 1 0 0 1+y*补(减*)1.0 0 1 余数为负1.1 1 0 0 0 1 0q00 余数左移1.1 0 0 0 1 加*0.1 1 1 余数为正0.0 1 1 0 1 0q11 余数左移0.1 1 0 1 减*1.0 0 1 余数为负1.1 1 1 1 0q20 余数左移1.1 1 1 加*0.1 1 1 余数为正0.1 1 0 0q31,故得:商值|q|q0.q1q2q30.101 余数 r0.000110 符号位:qf=ff=01=1 原=1.101 即:=-0.101,加减交替法的算法特点:1、运算过程中,无论够减或是不够减,可以根据余数符号得出