《计算机组成原理第2章-运算方法和运算器.ppt》由会员分享,可在线阅读,更多相关《计算机组成原理第2章-运算方法和运算器.ppt(49页珍藏版)》请在三一办公上搜索。
1、第二章:运算方法和运算器,21 数据与文字的表示方法 22 定点加法、减法运算 23 定点乘法运算 24 定点除法运算 25 定点运算器的组成 26 浮点运算方法和浮点运算器,21 数据与文字的表示方法一、计算机中常用的数据表示格式:定点格式,浮点格式.1、定点格式:约定机器中所有数据的小数点位置是固定不变的。将数据表示成定点纯小数或定点纯整数。假设用一个n+1位字来表示一个定点数X,在定点机中可表示为如下形式:X0 X1 X2.Xn-1 Xn 符号 量值(尾数)如果数X表示的是纯小数:0|X|1-2-n 如果数X表示的是纯整数:0|X|2n-12、浮点表示法,即小数点的位置是浮动的:N=Re
2、.m 其中m称为浮点数的尾数,用定点小数表示。e称为浮点的指数,是一个整数,常称为阶码。比例因子的基数R对二进计数制的机器是一个常数,一般规定R为2,8或16。因此一个机器浮点数应当由阶码和尾数及其符号位组成:阶符 阶码 数符 尾数,31 30 23 22 0 IEEE标准:32位浮点数 32位浮点数中,S是浮点数的符号位,占1位,安排在最高位,S=0表示正数,S=1表示负数。M是尾数,放在低位部分,占有23位,用小数表示,小数点放在尾数域的最前面。E是阶码,占有8位,阶符采用隐含方式,即采用移码方法来表示正负指数。移码方法对两个指数大小的比较和对阶操作都比较方便,因为阶码域值大者其指数值也大
3、。采用这种方式时,将浮点数的指数真值e变成阶码E时,应将指数e加上一个固定的偏移值127(01111111),即E=e+127。一个规格化的32位浮点数x的真值可表示为:x=(1)s(1.M)2E127 e=E127 其中尾数域所表示的值是1.M。因为规格化的浮点数的尾数域最左位(最高有效位)总是1。故这一位经常不予存储,而认为隐藏在小数点的左边。64位的浮点数中符号位1位,阶码域11位,尾数域52位,指数偏移值是1023。因此规格化的64位浮点数x的真值为:x=(1)s(1.M)2E1023 e=E1023,例1若浮点数x的二进制存储格式为(41360000)16,求其32位浮点数的十进制值
4、。解:将16进制数展开后,可得二进制数格式为 0 100 0001 0011 0110 0000 0000 0000 0000 S 阶码(8位)尾数(23位)指数e=阶码-127=10000010-01111111=00000011=(3)10 包括隐藏位1的尾数1.M=1.011 0110 0000 0000 0000 0000=1.011011 于是有 x=(-1)s*1.M*2e=+(1.011011)*23=+1011.011=(11.375)10 例2将十进制数20.59375转换成32位浮点数的二进制格式来存储。解:首先分别将整数和分数部分转换成二进制数:20.59375=1010
5、0.10011 然后移动小数点,使其在第1,2位之间 10100.10011=1.010010011*24 e=4 于是得到:S=0,E=4+127=131=10000011,M=010010011 最后得到32位浮点数的二进制存储格式为:0100 0001 1010 0100 1100 0000 0000 0000=(41A4C000)16,思考题:问:1、计算机中常用的数据表示格式?2、按照IEEE754标准,32位浮点数的标准格式包含哪几部分?3、对于真值:x=-1.01101102100 如何用32位浮点数的标准格式表示?,答:定点格式,浮点格式,二、数的机器码表示:真值:书写用的数,
6、机器码:机器内部使用的数1)原码:比较自然的表示法,最高位表示符号,0为正,1为负。优点:简单易懂。缺点:加减法运算复杂。若定点小数的原码形式为x0.x1x2.xn,则原码表示的定义是 X原=X 1X0X原=1-X=1+|X|0X-1 式中X原是机器数,X是真值。例如,X=+0.1001,则X原=0.1001 X=-0.1001,则X原=1.1001 通常,对于正数X=+0.x1x2xn,则有:X原=0.x1x2.xn 对于负数X=-0.x1x2xn,则有:X原=1.x1x2.xn 对于0,原码机器中往往有“+0”、“-0”之分,故有两种形式:+0原=0.0000.0-0原=1.0000.0
7、若定点整数的原码形式为x0 x1x2.xn,则原码表示的定义是:X原=X 2nX0 X原=2n-X=2n+|X|0X-2n,2)补码:加减法运算方便,减法可以转换为加法。若定点小数的补码形式为 x0.x1x2.xn,则补码表示的定义是:X补=X 1X0 X补=2+X=2-|X|0X-1(mod 2)式中X补为机器数,X为真值。例如,X=+0.1011,则X补=0.1011 X=-0.1011,则X补=10+X=10.0000-0.1011=1.0101 一般情况下,对于正数X=+0.x1x2.xn,则有:X补=0.x1x2.xn 对于负数X=-0.x1x2.xn,则有:X补=10.00.0-0
8、.x1x2.xn(mod 2)对于0,在补码情况下,+0补=-0补=0.0000(mod 2)注意,0的补码表示只有一种形式。对2求补电路见图2.6 对于定点整数,补码表示的定义是:X补=X 2nX0 X补=2n+1+X=2n+1-|X|0X-2n(mod 2n+1)3)反码:将二进制数的各位数码0变为1,1变为0。它是为计算补码方便而引入.,对定点小数,反码表示的定义为 X反=X 1X0 X反=(2-2-n)+X 0X-1 其中n代表数的位数。一般情况下,对于正数X=+0.x1x2.xn,则有 X反=0.x1x2.xn 对于负数X=-0.x1x2.xn,则有 X反=1.x1x2.xn 对于0
9、,有+0反=-0反之分:+0反=0.00.0-0反=1.11.1 我们比较反码与补码的公式 X反=2-2-n+X X补=2+X 可得到 X补=X反+2-n,若要一个负数变补码,其方法是符号位置1,其余各位0变1,1变0,然后在最末位(2-n)上加1。对定点整数,反码表示的定义是 X反=X 2nX0 X反=(2n+1-1)+X 0X-2n 若要一个负数变补码,只要将符号位置1,各位取反,末位加1。4)移码:用于阶码的表示,两个移码容易比较大小,便于对阶。由于阶码是个n位的整数,所以假定定点整数移码形式为x0 x1x2.xn时,移码的定义是:X移=2n+X,2nX-2n 式中X移为机器数,X为真值
10、。即将数值向X轴正方向平移2n 若阶码数值部分为5位,以 x表示真值,则 X移=25+X,25X-25 例如,当正数x=+10101时,X移=1,10101;当负数x=-10101时,X移=25+X=25-10101=0,01011。移码中的逗号不是小数点,而是表示左边一位是符号位。显然,移码中符号位x0表示的规律与原码、补码、反码相反。,一、计算:1、x=23/128 x补=x原=2、x=-35/64 x补=x原=3、x+y=1010 x+y补=x+y原=4、x-y=-1101 x-y补=x-y原=二、设机器字长为5位,采用定点整数表示,x=+110,求x原,x补解:因为n+1=5,所以n=
11、4,x原=0,0 1 1 0 x补=0,0 1 1 0 x0 x1 x4 显然,正数的原码与补码形式相同。三、设机器字长8位并用定点整数表示,模为28,若x=-110,求x原,x补。解:因为n+1=8,所以n=7,x原=10000110 x补=M+x=28+(-110)=(100000000)2-110=11111010,四、由补码求原码与真值:对于正数,原码与补码相同,其真值在略去正号后,形式上与机器数相同;对于负数,保持符号位为1,其余各位变反末位加1,即得到原码表示,将负数原码符号恢复为负号,即得到真值表示。例:如x补=00000110,则x原=00000110,x=+110 如x补=1
12、1111010,则x原=10000110,所以 x=-110 x原的具体计算如下:x补=11111010 变反 10000101 末位加1+1 10000110 五、补码的性质:补码的最高位是符号位,在形式上同于原码,0表示正,1表示负。但应注意,原码的符号位是人为地定义0正1负;而补码的符号位是通过模运算得到的,它是数值的一部分,可直接参与运算。,例3以定点整数为例,用数轴形式说明原码、反码、补码表示范围和可能的数码组合情况。解:原码、反码、补码表示分别示于下图。与原码、反码不同,在补码表示中“0”只有一种形式,且用补码表示负数时范围可到-2n。11.1 10.01 10.0 00.0 00
13、.01 01.1-(2n-1)-1 0+1+(2n-1)原码 10.0 11.10 11.1 00.0 00.01 01.1-(2n-1)-1 0+1+(2n-1)反码 10.0 10.01 11.1 00.0 00.01 01.1-2n-(2n-1)-1 0+1+(2n-1)补码,例4设机器字长16位,定点表示,尾数15位,数符1位,问:(1)定点原码整数表示时,最大正数是多少?最小负数是多少?(2)定点原码小数表示时,最大正数是多少?最小负数是多少?解:(1)定点原码整数表示 最大正数值=(215-1)10=(+32767)10 0 111 111 111 111 111 最小负数值=-(
14、215-1)10=(-32767)10 1 111 111 111 111 111(2)定点原码小数表示 最大正数值=(1-2-15)10=(+0.111.11)2 最小负数值=-(1-2-15)10=(-0.111.11)2,例5假设由S,E,M三个域组成的一个32位二进制字所表示的非零规格化浮点数x,真值表示为:x=(-1)s*(1.M)*2E-128 问:它所表示的规格化的最大正数、最小正数、最大负数、最小负数是多少?解:(1)最大正数 0 11 111 111 111 111 111 111 111 111 111 11 X=1(1-2-23)*2127(2)最小正数 0 00 000
15、 000 000 000 000 000 000 000 000 00 X=1.0*2-128(3)最小负数 1 11 111 111 111 111 111 111 111 111 111 11 X=-1+(1-2-23)*2127(4)最大负数 1 00 000 000 000 000 000 000 000 000 000 00 X=-1.0*2-128,2.1.3 字符与字符串的表示方式:ASCII码:P28 表2.1 2.1.4 汉字的表示方式:1)输入码:用于汉字输入。数字编码、拼音码、字形编码。2)内码:用于汉字的存储、交换、检索等操作的机内代码,一般采用两个字节表示。3)字模码
16、:是用点阵表示的汉字字形代码,它是汉字的输出形式,用于汉字的显示。2.1.5 校验码奇、偶校验码:奇偶校验码是一种开销最小,能发现数据代码中一位出错情况的编码,常用于存储器读写检查,或ASCII字符传送过程中的检查。它所约定的编码规律是让整个校验码(包括有效信息和校验位)“1”的个数为奇数或为偶数。有效信息部分当然既可能是奇性也可能是偶性,但可以配上一个为0或为1的校验位,使整个校验码能满足指定的奇偶性要求。,由于有效信息的奇偶性只有两种可能:奇偶,所以只需配一位校验位。则奇校验就是使整个奇校验码“1”的个数为奇数。偶校验法就是使整个校验码“1”的个数为偶数。例1:有效信息 1011001奇校
17、验码 10110011 偶校验码 10110010例2:有效信息 1011011奇校验码 10110110 偶校验码 10110111译码:当从主存读出某数据时,将整个校验码(连同校验位)一道统计。若“1”的个数仍为偶数就认为该数是正确的,没有破坏原来约定的规律。若“1”的个数为奇数,表明有错,应停止使用这个数据,或重新读取,看是否属于偶然性错误。,2.2定点加法减法运算一、补码加法公式:X补+Y补=X+Y补(mod 2)例1x=0.1001,y=0.0101,求x+y解:x补=0.1001 y补=0.0101 x补 0.1 0 0 1+y补 0.0 1 0 1 x+y补 0.1 1 1 0
18、所以 x+y=+0.1110例2x=+0.1011,y=-0.0101,求x+y。解:x补=0.1011 y补=1.1011 x补 0.1 0 1 1+y补 1.1 0 1 1 x+y补 1 0.0 1 1 0(在模2的意义下相加,有超过2的 所以 x+y=+0.0110 进位要丢掉),二、补码减法公式:x-y补=x补-y补=x补+-y补例3已知x1=-0.1110,x2=+0.1101,求 x1补-x1补 x2补-x2补。解:x1补=1.0010-x1补=x1补+2-4=0.1101+0.0001=0.1110 x2补=0.1101-x2补=x2补+2-4=1.0010+0.0001=1.0
19、011(符号表示对x1补作包括符号位在内的求反操作)例4 x=+0.1101,y=+0.0110,求x-y。解:x补=0.1101 y补=0.0110-y补=1.1010 x补 0.1 1 0 1+-y补 1.1 0 1 0 x-y补 1 0.0 1 1 1 所以 x-y=+0.0111,三、溢出概念与检测方法 溢出概念:在定点小数机器中,数的表示范围为|X|1。在运算过程中如出现大于1的现象,称为“溢出”。在定点机中,正常情况下是不允许的。例5x=+0.1011,y=+0.1001,求x+y。解:x补=0.1011 y补=0.1001 x补 0.1 0 1 1+y补 0.1 0 0 1 x+
20、y补 1.0 1 0 0 两个正数相加的结果成为负数,这显然是错误的。例6x=-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 两个负数相加的结果成为正数,这同样是错误的。,分析:发生错误的原因,是因为运算结果产生了溢出。两个正数相加,结果大于机器所能表示的最大正数,称为上溢。而两个负数相加,结果小于机器所能表示的最小负数,称为下溢。为了判断“溢出”是否发生,可采用两种检测方法。第一种方法是:采用双符号位法,也称为“变形补码”或“模4补码”,从而可使模2补码所能表示的数的范
21、围扩大一倍。数的变形补码定义为:x补=x 当2x0 x补=4+x当0 x-2 或用同余式表示为:x补=4+x(mod 4)下式也同样成立:x补+y补=x+y补(mod 4)为了得到两数变形补码之和等于两数和的变形补码,同样必须:(1)两个符号位都看做数码一样参加运算;(2)两数进行以4为模的加法,即最高符号位上产生的进位要丢掉。采用变形补码后,任何小于1的正数,两个符号位都是(0),即00.x1x2.xn;任何大于-1的负数,两个符号位都是“1”,即11.x1x2.xn如果两个数相加后,其结果的符号位出现“01”或“10”两种组合时,表示发生溢出。这是因为两个绝对值小于1的数相加,其结果不会大
22、于或等于2,所以最高符号位永远表示结果的正确符号。,例7 x=+0.1100,y=+0.1000,求x+y。解:x补=00.1100 y补=00.1000 x补 0 0.1 1 0 0+y补 0 0.1 0 0 0 0 1.1 0 0 0 两个符号位出现“01”,表示已溢出,即结果大于+1。例8x=-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 0 1 0.1 1 0 0 两个符号位出现“10”,表示已溢出,即结果大于-1。,由此,我们可以得出如下结论:(1)当以模4补码运算,运算结果的二符号
23、位相异时,表示溢出;相同时,表示未溢出。故溢出逻辑表达式为V=Sf1异或Sf2,其中Sf1和Sf2分别为最高符号位和第二符号位,此逻辑表达式可用异或门实现。(2)模4补码相加的结果,不论溢出与否,最高符号位始终批示正确的符号。第二种溢出检测方法:是采用单符号位法。当最高有效位产生进位而符号位无进位时,产生上溢;当最高有效位无进位而符号位有进位时,产生下溢。故溢出逻辑表达式为V=Cf C0,其中Cf为符号位产生的进位,C0为最高有益位产生的进位。此逻辑表达式可用异或门实现。在定点机中,当运算结果发生溢出时,机器通过逻辑电路自动检查出这种溢出,并进行中断处理。,四、基本的二进制 加法减法器:,一位
24、全加器FA电路图,一位全加器逻辑方程:Si=Ai Bi Ci Ci+1=AiBi+BiCi+CiAi,N 位行波进位加法减法器:,进位处理方式:串行进位(行波进位)、并行进位 五、十进制加法器 十进制加法减法器 见图2.3六、定点乘法运算:设n位被乘数和乘数用定点小数表示为(定点整数也同样):被乘数 X原=Xf.Xn-1X1X0 乘数 Y原=Yf.Yn-1Y1Y0 乘积 Z原=(Xf Yf)+(0.Xn-1X1X0)(0.Yn-1Y1Y0)式中,Xf 为被乘数符号,Y1为乘数符号。乘积符号的运算法则是:同号相乘为正,异号相乘为负。由于被乘数和乘数的符号组合只有四种情况(Xf.Yf=00,01,
25、10,11),因此积的符号可按“异或”运算得到。,例:设X=0.1101,Y=0.1011,让我们先用习惯方法求X与Y的乘积,其过程如下:0.1 1 0 1(x)0.1 0 1 1(y)1 1 0 1 1 1 0 1 0 0 0 0+1 1 0 1 0.1 0 0 0 1 1 1 1(z)定点乘法运算分为:不带符号的阵列乘法、带符号的阵列乘法。在进行带符号的阵列乘法前应进行求补运算。求补器电路图见2.6,带求补级的阵列乘法器见图2.7,七、补码与真值的转换公式:对定点补码整数N补=an-1an-2a1a0,其中an-1是符号位,补码整数N补与真值N的关系为:例:已知:N补=(01101)2,-
26、N补=(10011)2,求N补和-N补具有的数值。解:N补=(01101)2具有的数值为:N=-0*24+1*23+1*22+0*21+1*20=(+13)10-N补=(10011)2具有的数值为:-N=-1*24+0*23+0*22+1*21+1*20=-16+3=(-13)10,例 设x=+15,y=-13,用带求补器的原码阵列乘法求出乘积x*y=?解:设最高位为符号位,输入数据为原码:x原=01111 y原=11101 因符号单独考虑,算前求补器输出后,|X|=1111,|y|=1101 1 1 1 1 1 1 0 1 符号位运算:0 1=1 1 1 1 1 0 0 0 0 1 1 1
27、1+1 1 1 1 1 1 0 0 0 0 1 1 算后求补器输出为11000011,加上乘积符号位1,得 x*y原=111000011换算成二进制数真值是 X*Y=(-11000011)2=(-195)10十进制乘法验证:15*(-13)=-195,例 设x=15,y=-13,用带求补器的补码阵列乘法器求出乘积x*y=?并用十进制乘法进行验证。解:设最高位为符号位,输入数据用补码表示:x补=01111 y补=10011 乘积符号位运算:X0 Y0=0 1=1 表示乘积为负的。算前求补器输出为|X|=1111,|y|=1101 1 1 1 1 1 1 0 1 1 1 1 1 0 0 0 0 1
28、 1 1 1+1 1 1 1 1 1 0 0 0 0 1 1 因乘积为负的,所以算后求补器输出时,应按负数求补码的变换方法将结果变为 1 1 0 0 0 0 1 1补=00111101,并在最高位加上乘积符号1,最后得补码的乘积值:x*y补=100111101。利用补码与真值换算公式,补码二进制数真值是:X*Y=-1*28+1*25+1*24+1*23+1*22+1*20=(-195)10十进制数乘法验证:X*Y=15*(-13)=-195,2.4 定点除法,一、原码除法算法原理:两个原码表示的数相除时,商的符号由两数的符号按位相加求得,商的数值部分由两数的数值部分相除求得。设有n位定点小数:
29、被除数x,除数y,其原码为:X原=Xf.Xn-1X1X0,y原=y f.yn-1 y1 y0则商q=x/y,其原码为:q原=(xf yf)+(0.Xn-1X1X0/0.yn-1 y1 y0)例:设被除数x=0.1001,除数y=0.1011,手算求xy的过程:0.1 1 0 1 商q 0.1 0 1 1 0.1 0 0 1 0 x(r0)被除数小于除数,商0-0.0 1 0 1 1 2-1 y 除数右移1位,减除数,商1 0.0 0 1 1 1 0 r1 得余数r1-0.0 0 1 0 1 1 2-2 y 除数右移1位,减除数,商1 0.0 0 0 0 1 1 0 r2 得余数r2 0.0 0
30、 0 1 0 1 1 2-3 y 除数右移1位,不减除数,商0 0.0 0 0 0 1 1 0 0 r3 得余数r3-0.0 0 0 0 1 0 1 1 2-4 y 除数右移1位,减除数,商1 0.0 0 0 0 0 0 0 1 r4 得余数r4得xy的商q=0.1101,余数为r=0.00000001.,二、并行除法器:也叫不恢复余数阵列除法器,即加减交替法。在不恢复余数的除法阵列中,当余数为正时(ri 0),商“1”,下次做减法运算,减法是用2的补码运算来实现的,此时x-y补=x 补+-y补;当余数为负时(ri 0),商“0”,下次做加 法运算。并且每次运算完成后要将余数左移一位,再与除数
31、做加或减运算。商的符号由两数的符号按位相加求得。例20 x=0.101001,y=0.111,求xy。解:-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 q1=1 余数左移 0.1 1 0 1 减y+1.0 0 1(相当于加-y补)余数为负 1.1 1 1 1 0 q2=0 余数左移 1.1 1 1 加y+0.1 1 1 余数为正 0.1 1 0 0 q3=1故得 商q=q0.q1q2q3=0.101
32、余数r=(0.00r3r4r5r6)=0.000110,4.多路器(if d=0,c=a;else c=b),1、与门(c=a.b),2、或门(c=a+b),三、定点运算器组成:,说明:(1)H=高电平1,L=低电平0,(2)*表示每一位均移到下一个更高位,即A*=2A。,多功能74181ALU 算术逻辑运算功能表,2.6 浮点运算方法和浮点运算器一、浮点加、减法运算 设有两个浮点数X和Y,它们分别为:其中Ex和Ey分别为数x和y的阶码,Mx和My为数x和y的尾数。两浮点加减运算的操作过程大体分为四步:第一步,0操作数检查;第二步,比较阶码大小并完成对阶;第三步,尾数进行加或减运算;第四步,结
33、果规格化并进行舍入处理。图2.6示出浮点加减运算的操作流程。1、0操作数检查。2、比较阶码大小并完成对阶:E=Ex-Ey,若E=0,表示两数阶码相等,可以直接进行尾数加减运算;若E0,表示ExEy,此时,将Y的尾数向右移位,每右移一位,其阶码加1,直到与X的阶码相等为止,右移的位数等于阶码E;若E0,表示ExEy,则将X的尾数也向右移。尾数右移引起最低有效位的丢失比左移引起最高有效位的丢失造成的误差要小。3、尾数求和运算:对阶结束后,即可进行尾数的求和运算。与定点加减运算完全一样。,4、结果规格化:当尾数求和的结果为01.xx或10.xx,即两符号位不相等,此时将尾数结果右移以实现规格化,简称
34、右规,即尾数右移1位,阶码加1。否则进行左规处理,即尾数每左移1位,阶码减1,直到尾数的符号和最高有效位具有不同的代码达到规格化为止。5、舍入处理:就近舍入、朝0舍入。例:设x=2010*0.11011011,y=2100*(-0.10101100),求x+y。解:为便于直观理解,假设两数均以补码表示,阶码采用双符号位,尾数采用单符号位,则它们的浮点表示分别为 x浮=00 010,0.11011011 y浮=00 100,1.01010100(1)求阶差并对阶 E=Ex-Ey=Ex补+-Ey补=00 010+11 100=11 110,即E为-2,x的阶码小,应使Mx右移2位,Ex加2,x 浮
35、=00夸100,0.00110110(11)其中(11)表示Mx右移2位后移出的最低两位数。(2)尾数求和 0.0 0 1 1 0 1 1 0(11)+1.0 1 0 1 0 1 0 0 1.1 0 0 0 1 0 1 0(11)(3)规格化处理:尾数运算结果的符号位与最高数值位为同值,应执行左规处理,结果为1.00010101(10),阶码为00 011。,(4)舍入处理 采用0舍1入法处理,则有 1.0 0 0 1 0 1 0 1+1 1.0 0 0 1 0 1 1 0(5)判溢出 阶码符号位为00,不溢出,故得最终结果为 x+y=2011*(-0.11101010),二、浮点乘除法运算:
36、1、运算规则:2、运算步骤:(1)0操作数检查;(2)阶码加/减操作;(3)尾数乘/除操作;(4)结果规格化及舍入处理。X移=2n+x 2nx-2nx+y移=X移+y补 x-y移=X移+-y补当阶码的结果溢出时,须使用双符号位的阶码加法器,并规定移码的第二个符号位,即最高符号位恒用0参加加减运算,则溢出条件是结果的最高符号位为1。此时,当低位符号位为0时,表明结果上溢;为1时,表明结果下溢。当最高符号位为0时,表明没有溢出;低位符号位为1,表明结果为正;为0时,表明结果为负。,例26:x=+011,y=+110,求x+y移和 x-y移,并判断是否溢出。解:X移=01 011,y补=00 110
37、,-y补=11 010,x+y移=X移+y补=10 001,结果上溢。x-y移=X移+-y补=00 101,结果正确,为-3。例28:设有浮点数x=2-5 0.0110011,y=23(-0.1110010),阶码用4位移码表示,尾数(含符号位)用8位补码表示,求 x y浮。要求用补码完成尾数乘法运算,运算结果尾数保留高8位(含符号位),并用尾数低位字长的值处理舍入操作。解:移码采用双符号位,尾数补码采用单符号位,则有 Mx补=0.0110011,My补=1.0001110,Ey移=01 011,Ey补=00 011,Ex移=00 011,X浮=01 011,0.0110011,y浮=11 0
38、11,1.0001110(1)求附中码和 Ex+Ey移=Ex移+Ey补=00 011+00 011=00 110,值为移码形式-2。,(2)尾数乘法运算可采用补码列乘法器实现,即有 Mx补 My补=0.0110011补 1.0001110补=1.1010010,1001010补(3)规格化处理 乘积的尾数符号位与最高数值位符号相同,不是规格化的数,故需要左规:阶码变为00 101(-3),尾数变为1.0100101,0010100。(4)舍入处理 尾数为负数,取尾数高位字长,按舍入规则,舍去低位字长,故尾数为1.0100101。最终相乘结果为 x y浮=00 101,1.0100101其真值为
39、 x y=2-3(-0.1011011),三、浮点运算流水线1、流水线原理:把输入的任务分割为一系列子任务,使各子任务能在流水线的各个阶段并发地执行。实现时间并行。处理一个子任务的过程称为过程段。线性流水线由一系列串联的过程段组成,各个过程之间没有高速的缓冲寄存器,以暂时保存上一过程子任务处理的结果。在一个统一的时钟控制下,数据从一个过程段流向相邻的过程段。设过程段Si所需的时间为i,缓冲寄存器的延时为i,线性流水线的时钟周期定义为=maxi+i=m+i 故流水线处理的频率为f=1/。在流水线处理中,当任务饱满时,任务源源不断地输入流水线,不论有多少级过程段,每隔一个时钟周期都能输出一个任务。
40、从理论上说,一个具有k级过程段的流水线处理n个任务需要的进钟周期数为 Tk=k+(n-1)其中k个时钟周期用于处理第一个任务。k个周期后,流水线被装满,剩余的n-1个任务只需n-1个周期就完成了。,如果用非流水线的硬件来处理这n个任务,时间上只能串行进行,则所需时钟周期数为 TL=n k 我们将TL和Tk的比值定为k级线性流水线的加速比:当nk时,Ckk。这就是说,理论上k级线性流水线处理几乎可以提高k倍速度。但实际上由于存储器冲突、数据相关,这个理想的加速比不一定能达到。例29假设有一个4级流水浮点加法器每个过程段所需的时间为:0操作数检查1=70ns,对阶2=60ns,相加 3=90ns,
41、规格化 4=80ns,缓冲寄存器L的延时为1=10ns,求:(1)4级流水线加法器的加速比为多少?(2)如果每个过程段的时间都相同,即都为75ns(包括缓冲寄存器时间)时,加速比是多少?,解:(1)加法器的流水线时钟周期至少为=90ns+10ns=100ns如果采用同样的逻辑电路,但不是流水线方式,则浮点加法所需的时间为 1+2+3+4=300ns因此,4级流水线加法器的加速比为 Ck=300/100=3(2)当每个过程段的时间都是75ns时,加速比为 Ck=300/75=4例30已知计算一维向量x,y的求和表达式如下:x y z 56 65 121 20.5 14.6 35.1 0+336=
42、336 114.3 7.2 121.5 69.6 72.8 142.4 3.14 1.41 4.55,试用4段的浮点加法流水线来实现一维向量的求和运算,这4段流水线是阶码比较、对阶操作、尾数相加、规格化。只要求画出向量加法计算流水时空图。解:运算流水线对向量计算显示出很大的优越性。我们用纵向表示空间轴(段),横向表示时间轴,这样字母C,S,A,N分别表示流水线的阶码比较、对阶操作、尾数相加、规格化四个段,那么向量加法计算的流水时空图如图2.19所示。图中左面表示Xi,Yi两个元素输入流水线的时间,右面表示求和结果Zi 输出流水线的时间。可以看出,每隔一个时钟周期,流水线便吐出一个运算结果。,图2.19 向量加法计算的流水时空图,