第2章运算方法和运算器课件_第1页
第2章运算方法和运算器课件_第2页
第2章运算方法和运算器课件_第3页
第2章运算方法和运算器课件_第4页
第2章运算方法和运算器课件_第5页
已阅读5页,还剩111页未读 继续免费阅读

下载本文档

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

文档简介

2.5.1逻辑运算计算机中除了进行加、减、乘、除等基本算术运算外,还可对两个或一个逻辑数进行逻辑运算。所谓逻辑数是指不带符号的二进制数。利用逻辑运算可以进行两个数的比较,或者从某个数中选取某几位等操作。计算机中的逻辑运算,主要是指逻辑非、逻辑加、逻辑乘、逻辑异四种基本运算。2.5.1逻辑运算计算机中除了进行加、减、乘、除等基本算术12.5.1逻辑运算(续1)逻辑非也称求反。对某数进行逻辑非运算,就是按位求反,常用变量上方加一横来表示。

设一个数x表示成:x=

x0x1x2…xn对x求逻辑非,则有:

x=z=z0z1z2…znzi=xi(i=0,1,2,…n)

1.逻辑非运算

ˉˉ2.5.1逻辑运算(续1)逻辑非也称求反。对某数进行逻辑非22.5.1逻辑运算(续2)例21:

x1=01001011,x2=11110000求x1,x2

解:x1

=10110100

x2

=00001111ˉˉˉˉ2.5.1逻辑运算(续2)例21:ˉˉˉˉ3第2章运算方法和运算器课件42.5.1逻辑运算(续4)例22:x=10100001,y=10011011,求x∨y。

解:

10100001x

∨10011011y

10111011z

即x∨y=101110112.5.1逻辑运算(续4)例22:x=10100001,y52.5.1逻辑运算(续5)

对两数进行逻辑乘,就是按位求它们的“与”,所以逻辑乘又称“逻辑与”,常用记号“∧”或“·”来表示。设有两数x和y,它们表示为

x=

x0x1x2…xny=

y0y1y2…yn若x∧y=z=z0z1z2…zn则

zi=xi∧yi(i=0,1,2,…,n)

3.逻辑乘运算

2.5.1逻辑运算(续5)对两数进行逻辑乘,就是按位求它62.5.1逻辑运算(续6)例23:x=10111001,y=11110011,求x∧y。解:

10111001x

∧11110011y

10110001z即x∧y=101100012.5.1逻辑运算(续6)例23:x=10111001,y72.5.1逻辑运算(续7)对两数进行异就是按位求它们的模2和,所以逻辑异又称“按位加”,常用记号“⊕”表示。设有两数x和y:x=

x0x1x2…xny=

y0y1y2…yn若x和y的逻辑异为z:

x⊕y=z=z0z1z2…zn则

zi=xi⊕yi(i=0,1,2,…,n)

4.逻辑异运算

2.5.1逻辑运算(续7)对两数进行异就是按位求它们的模282.5.1逻辑运算(续8)例23:x=10101011,y=11001100,求x⊕y。解:

10101011x

⊕11001100y

01100111z即x⊕y=01100111

2.5.1逻辑运算(续8)例23:x=10101011,y92.5.1逻辑运算(续9)事实上,逻辑加还可以通过逻辑乘和逻辑非来实现:

zi=xi∨yi

=xi∧yi

同样,逻辑乘也可以用逻辑加和逻辑非来实现:

zi=xi∧yi=xi∨yi

2.5.1逻辑运算(续9)事实上,逻辑加还可以通过102.5.2

多功能算术/逻辑运算单元(ALU)

由一位全加器(FA)构成的行波进位加法器,它可以实现补码数的加法运算和减法运算。这种加法/减法器存在两个问题:一是由于串行进位,它的运算时间很长。假如加法器由n位全加器构成,每一位的进位延迟时间为20ns,那么最坏情况下,进位信号从最低位传递到最高位而最后输出稳定,至少需要n*20ns,这在高速计算中显然是不利的。二是就行波进位加法器本身来说,它只能完成加法和减法两种操作而不能完成逻辑操作。本节我们介绍的多功能算术/逻辑运算单元(ALU)不仅具有多种算术运算和逻辑运算的功能,而且具有先行进位逻辑,从而能实现高速运算。2.5.2多功能算术/逻辑运算单元(ALU)由一位全加112.5.2

多功能算术/逻辑运算单元(ALU)续1)一位全加器(FA)的逻辑表达式为:

Fi=Ai⊕Bi⊕CiCi+1=AiBi+BiCi+CiAi

1.基本思想2.5.2多功能算术/逻辑运算单元(ALU)续1)一位全加12将Ai和Bi先组合成由控制参数S0,S1,S2,S3控制的组合函数Xi和Yi,然后再将Xi,Yi和下一位进位数通过全加器进行全加。这样,不同的控制参数可以得到不同的组合函数,因而能够实现多种算术运算和逻辑运算。因此,一位算术/逻辑运算单元的逻辑表达式为:

Fi=Xi⊕Yi⊕Cn+iCn+i+1=XiYi+YiCn+i+Cn+iXi将Ai和Bi先组合成由控制参数S0,S1,S13图2.10ALU的逻辑结构原理框图图2.10ALU的逻辑结构原理框图142.5.2

多功能算术/逻辑运算单元(ALU)续2

上式中进位下标用n+i代替原来全加器中的i,i代表集成在一片电路上的ALU的二进制位数。对于4位一片的ALU,i=0,1,2,3。n代表若干片ALU组成更大字长的运算器时每片电路的最低位计数,例如当4片组成16位字长的运算器时,n=0,4,8,12。2.5.2多功能算术/逻辑运算单元(ALU)续215

控制参数S0,S1,S2,S3分别控制输入Ai和Bi,产生Y和X的函数。其中Yi是受S0,S1控制的Ai和Bi的组合函数,而Xi是受S2,S3控制的Ai和Bi组合函数,其函数关系如表2.4所示。2.逻辑表达式表2.4与控制参数和输入量的关系Ai11011Ai+Bi10AiBi10Ai+Bi01AiBi01100Ai00XiS2S3YiS0S1控制参数S0,S1,S2,S3分别控制输入A16根据上面所列的函数关系,即可列出Xi和Yi的逻辑表达式:

Xi=S2S3+S2S3(Ai+Bi)+S2S3(Ai+Bi)+S2S3Ai

Yi=S0S1Ai+S0S1AiBi+S0S1AiBi根据上面所列的函数关系,化简Yi的逻辑表达式得:Yi=S0S1Ai+S0S1AiBi+S0S1AiBi=Ai(S0S1+S0S1Bi+S0S1Bi)=Ai(S0S1(Bi+Bi)+S0S1Bi+S0S1Bi)=Ai(S0Bi+S1Bi)=Ai+(S0+Bi)(S1+Bi)=Ai+(S0S1+S0Bi+S1Bi)=Ai+S0Bi+S1Bi根据上面所列的函数关系,即可列出Xi和Yi的逻辑表达式:根据17根据上面所列的函数关系,化简Xi的逻辑表达式得:

Xi=S2S3+S2S3(Ai+Bi)+S2S3(Ai+Bi)+S2S3Ai

=S2S3+S2Ai+S2Bi+S3Ai+S3Bi+S2S3Ai=S2S3+S2Ai+S2Bi+S3Bi+Ai(S3

+S2)=S2S3+S2Ai+S2Bi+S3Bi+AiS3

+AiS2=S2S3+Ai+S2Bi+S3Bi+AiS3=S2S3+S2Ai+AiAi+Ai(Bi+Bi)+S2Bi+S3Bi+AiS3+BiBi=S2(S3+Ai+Bi)+Ai(S3+Ai+Bi)+Bi(S3+Ai+Bi)=

(S3+Ai+Bi)(S2+Ai+Bi)

=S3AiBi+S2AiBi根据上面所列的函数关系,化简Xi的逻辑表达式得:18Ai11011Ai+Bi10AiBi10Ai+Bi01AiBi01100Ai00XiS2S3YiS0S1进一步化简可得:

Xi=S3AiBi+S2AiBi

Yi=Ai+S0Bi+S1Bi

XiYi=S3AiBi+S2AiBi·Ai+S0Bi+S1Bi=Yi将Xi和Yi代入前面的进位表达式,可简化为:Cn+i+1=Yi+XiCn+i=S3AiBi+S2AiBi+Ai+S0Bi+S1Bi=Ai+S0Bi+S1Bi=YiAi11011Ai+Bi10AiB19

定点运算器的组成综上所述,ALU的某一位逻辑表达式如下:Xi=S3AiBi+S2AiBi

Yi=Ai+S0Bi+S1Bi

Fi=Xi⊕Yi⊕Cn+iCn+i+1=Yi+XiCn+i(2.36)定点运算器的组成(2.36)20

4位之间采用先行进位公式,根据式(2.36),每一位的进位公式可递推如下:第0位向第1位的进位公式为:Cn+1=Y0+X0Cn其中Cn是向第0位(末位)的进位。

第1位向第2位的进位公式为:Cn+2=Y1+X1Cn+1=Y1+Y0X1+X0X1Cn

第2位向第3位的进位公式为:Cn+3=Y2+X2Cn+2=Y2+Y1X1+Y0X1X2+X0X1X2Cn

第3位的进位输出(即整个4位运算进位输出)公式为:Cn+4=Y3+X3Cn+3=Y3+Y2X3+Y1X2X3+Y0X1X2X3+X0X1X2X3Cn定点运算器的组成

设:G=Y3+Y2X3+Y1X2X3+Y0X1X2X3

P=X0X1X2X3则:Cn+4=G+PCn4位之间采用先行进位公式,根据式(2.36),每一定点21G称为进位发生输出,P称为进位传送输出。在电路中多加这两个进位输出的目的,是为了便于实现多片(组)ALU之间的先行进位,为此还需一个配合电路,称之为先行进位发生器(CLA)。Cn+4是本片(组)的最后进位输出。逻辑表达式表明,这是一个先行进位逻辑。换句话说,第0位的进位输入Cn可以直接传送到最高位上去,因而可以实现高速运算。

设:

G=Y3+Y2X3+Y1X2X3+Y0X1X2X3

P=X0X1X2X3则:Cn+4=G+PCnG称为进位发生输出,P称为进位传送输出。在电路中多

设:G22定点运算器的组成

图2.11(a)示出了用负逻辑表示的4位算术/逻辑运算单元(ALU)的逻辑电路图(CAI演示),它是根据上面的原始推导公式用TTL电路实现的。这个器件的商业标号为74181ALU。

M(Y2+Y1X2+Y0X1X2+X0X1X2Cn)=M

Cn+3M(Y1+Y0X1+X0X1Cn)=M

Cn+2Y3+Y2X3+Y1X2X3+Y0X1X2X3=GX0X1X2X3=PPG+CnG=G+PCn=Cn+4=Cn+4Yi=Ai+S0Bi+S1BiXi=S3AiBi+S2AiBiM(Y0+X0Cn)

=M

Cn+1定点运算器的组成图2.11(a)示出了用负逻辑表示的23除了S0-S3四个控制端外,还有一个控制端M,它使用来控制ALU是进行算术运算还是进行逻辑运算的。当M=0时,进行算术操作。M对进位信号没有任何影响。此时F不仅与本位的被操作数Y和操作数X有关,而且与本位的进位输出,即C有关。当M=1时,进行逻辑操作。封锁了各位的进位输出,即C=0,各位的运算结果F仅与Y和X有关。3.算术逻辑运算的实现

2.5.2多功能算术/逻辑运算单元(ALU)续8除了S0-S3四个控制端外,还有一个控制端M24图2.11(b)示出了工作于负逻辑和正逻辑操作数方式的74181ALU方框图。显然,这个器件执行的正逻辑输入/输出方式的一组算术运算和逻辑操作与负逻辑输入/输出方式的一组算术运算和逻辑操作是等效的。

图2.11(b)示出了工作于负逻辑和正逻辑

25表2.5列出了74181ALU的运算功能表,它有两种工作方式。对正逻辑操作数来说,算术运算称高电平操作,逻辑运算称正逻辑操作(即高电平为“1”,低电平为“0”)。对于负逻辑操作数来说,正好相反。由于S0-S3有16种状态组合,因此对正逻辑输入与输出而言,有16种算术运算功能和16种逻辑运算功能。同样,对于负逻辑输入与输出而言,也有16种算术运算功能和16种逻辑运算功能。表2.5列出了74181ALU的运算功能表,它有两种26表2.574181ALU算术/逻辑运算功能表

表2.574181ALU算术/逻辑运算功能表27注意:表2.5中算术运算操作是用补码表示法来表示的。其中“加”是指算术加,运算时要考虑进位,而符号“+”是指“逻辑加”。其次,减法是用补码方法进行的,其中数的反码是内部产生的,而结果输出“A减B减1”,因此做减法时需在最末位产生一个强迫进位(加1),以便产生“A减B”的结果。另外,“A=B”输出端可指示两个数相等,因此它与其他ALU的“A=B”输出端按“与”逻辑连接后,可以检测两个数的相等条件。注意:282.5.2多功能算术/逻辑运算单元(ALU)续134.两级先行进位的ALU

74181ALU设置了P和G两个本组先行进位输出端。如果将四片74181的P,G输出端送入到74182先行进位部件(CLA),又可实现第二级的先行进位,即组与组之间的先行进位。假设4片(组)74181的先行进位输出依次为P0,G0,G1,P1,P2,G2,P3,G3,74182CLA所提供的进位逻辑关系如下:2.5.2多功能算术/逻辑运算单元(ALU)续134.两级先292.5.2多功能算术/逻辑运算单元(ALU)续14

Cn+x=G0+P0CnCn+y=G1+P1Cn+x=G1+G0P1+P0P1CnCn+z=G2+P2Cn+y=G2+G1P2+G0P1P2+P0P1P2Cn

(2.38)Cn+4=G3+P3Cn+z=G3+G2P3+G1P2P3+G0P1P2P3+P0P1P2P3Cn

=G*+P*Cn其中:成组进位传送输出:

P*=P0P1P2P3成组进位发生输出:G*=G3+G2P3+G1P2P3+G0P1P2P32.5.2多功能算术/逻辑运算单元(ALU)续14Cn+x30根据以上表达式,用TTL器件实现的成组先行进位部件74182的逻辑电路图如图2.12所示

其中G*称为成组进位发生输出,P*称为成组进位传送输出。

CAI根据以上表达式,用TTL器件实现的成组

CAI31P*=P0P1P2P3=P0+

P1+

P2+P3G*=G3+G2P3+G1P2P3+G0P1P2P3=G3(G2+P3)(G1+P2+P3)(G0+P1+P2+P3)

=G3P3+P2G2G3+P1G1G2G3+G0G1G2G3P*=P0P1P2P3=P0+P1+P2+P322.5.2多功能算术/逻辑运算单元(ALU)续15如何用若干个74181ALU位片,与配套的74182CLA在一起,构成一个全字长的ALU。下图示出了用两个16位全先行进位部件级联组成的32位ALU逻辑方框图。在这个电路中使用了8个74181ALU和2个74182CLA器件。对一个16位来说,CLA部件构成了第二级的先行进位逻辑,即实现四个小组(位片)之间的先行进位,从而使全字长ALU的运算时间大大缩短。2.5.2多功能算术/逻辑运算单元(ALU)续15如何用若干33图2.13用两个16位全先行进位部件级联组成的32位ALU(组内先行进位,组间串行进位)进位同时生成图2.13用两个16位全先行进位部件级联组成的32位ALU34用两级CLA(74182)级联组成的64位具有全先行进位的ALU用两级CLA(74182)级联组成的35

由于计算机内部的主要工作过程是信息传送和加工的过程,因此在机器内部各部件之间的数据传送非常频繁。为了减少内部的传送线并便于控制,通常将一些寄存器之间数据传送的通路加以归并,组成总线结构,使不同来源的信息在此传输线上分时传送。(总线是计算机内各部件之间传送信息的公用的一组连线)2.5.3内部总线由于计算机内部的主要工作过程是信息传送和加工的过程,因此362.5.3内部总线

(续1)根据总线所在位置,总线分为内部总线和外部总线两类。内部总线是指CPU内各部件的连线外部总线是指系统总线,即CPU与存储器、I/O系统之间的连线。本节只讨论内部总线。2.5.3内部总线(续1)根据总线所在位置,总线分为内部372.5.3内部总线

(续2)按总线的逻辑结构来说,总线可分为单向传送总线和双向传送总线。所谓单向总线,就是信息只能向一个方向传送所谓双向总线,就是信息可以分两个方向传送,既可以发送数据,也可以接收数据。2.5.3内部总线(续2)按总线的逻辑结构来说,总线可分382.5.3内部总线

(续3)

图2.14(a)是带有缓冲驱动器的4位双向数据总线。其中所用的基本电路就是三态逻辑电路。

当“发送”信号有效时,数据从左向右传送。

当“接收”信号有效时,数据从右向左传送。

这种类型的缓冲器通常根据它们的不同用途而分别称为总线扩展器、总线驱动器、总线接收器等等。2.5.3内部总线(续3)图2.14(a)是带有39发送接收发送接收发送接收发送接收40若E=0,触发器Q保持原值,数据D被封锁,不接收。而三态门被打开,锁存器的数据经三态门发送到数据总线D上。

若E=1,触发器接收数据D,Q=D。而三态门被禁止,因而数据总线D上的数据只能被接收到锁存器。E输入端控制D的输入发送接收若E=0,触发器Q保持原值,数据D被封锁,不接收。而三态41

图2.14(b)所示的是带有锁存器的4位双向数据总线。它主要由一个DE触发器和一个三态缓冲器组成。DE触发器是在一个普通D触发器上另加一个E输入端(允许端)而构成的。此处E输入端用以控制D的输入。若E=0,触发器的输入D被封锁,即使D为“1”,也不能输入。

当接收数据时,E=1,三态门被禁止,因而数据总线上的数据只能被接收到锁存器。

当发送数据时,E=0,触发器的输入D被封锁,而三态门被打开,因而锁存器的数据经三态门发送到数据总线上。图2.14(b)所示的是带有锁存器的4位双向数据总422.5.4定点运算器的基本结构

运算器包括ALU\阵列乘除器\寄存器\多路开关\三态缓冲器\数据总线等逻辑部件。运算器的设计,主要是围绕ALU和寄存器同数据总线之间如何传送操作数和运算结果进行的。在决定方案时,需要考虑数据传送的方便性和操作速度,在微型机和单片机中还要考虑在硅片上制作总线的工艺。计算机的运算器大体有如下三种结构形式2.5.4定点运算器的基本结构运算器包括ALU\阵列乘432.5.4

定点运算器的基本结构(续1)1.单总线结构的运算器

单总线结构的运算器如(a)所示。所有部件都接同一总线上,所以数据可以在任何两个寄存器之间,或者在任一个寄存器和ALU之间传送。如果具有阵列乘法器或除法器,那么它们所处的位置应与ALU相当。

在同一时间内,只能有一个操作数放在单总线上。为了把两个操作数输入到ALU,需要分两次来做,而且还需要A,B两个缓冲寄存器。这种结构的主要缺点是操作速度较慢。2.5.4定点运算器的基本结构(续1)1.单总线结构的运44①②③①②③45注意到:

虽然在这种结构中,输入数据和操作结果需要三次串行的选通操作,但它并不会对每种指令都增加很多执行时间。只有在对全都是CPU寄存器中的两个操作数进行操作时,单总线结构的运算器才会造成一定的时间损失。但是由于它只控制一条总线,故控制电路比较简单。注意到:462.5.4

定点运算器的基本结构(续2)双总线结构的运算器如(b)所示。

在这种结构中,两个操作数同时加到ALU进行运算,只需一次操作控制,而且马上就可以得到运算结果两条总线各自把其数据送至ALU的输入端。特殊寄存器分为两组,分别与一条总线交换数据。通用寄存器中的数就可进入到任一组特殊寄存器中,使数据传送更为灵活。ALU的输出不能直接加到总线上去。因为,当形成操作结果的输出时,两条总线都被输入数占据,因而必须在ALU输出端设置缓冲寄存器。2.双总线结构的运算器

2.5.4定点运算器的基本结构(续2)双总线结构的运算器如47①②①①②①48

在双总线结构的运算其中,操作的控制要分两步完成:

1.在ALU的两个输入端输入操作数,形成结果并送入缓冲寄存器;

2.把结果送入目的寄存器。假如在总线1,2和ALU输入端之间再各加一个输入缓冲寄存器,

并把两个输入数先放至这两个缓冲寄存器,那么,ALU输出端就可以直接把操作结果送至

总线1或总线2上去。在双总线结构的运算其中,操作的控制要分492.5.4

定点运算器的基本结构(续3)ALU的输入端分别由两条总线供给,ALU的输出与第3三条总线相连。运算操作可以在一步控制内完成。由于ALU本身有时间延迟,所以打入输出结果的选通脉冲必须考虑到包括这个延迟。总线旁路器。如果一个操作数不需要修改,而直接从总线2传送到总线3,可以通过控制总线旁路器把数据传出;如果一个操作数传送时需要修改,那么就借助于ALU。三总线结构的运算器的特点是操作时间快。

3.三总线结构的运算器

2.5.4定点运算器的基本结构(续3)ALU的输入端分别由50①①①①①①512.6浮点运算方法和浮点运算器2.6.1浮点加法、减法运算2.6.2浮点乘法、除法运算2.6.3浮点运算流水线2.6.4浮点运算器实例2.6浮点运算方法和浮点运算器522.6.1浮点加法、减法运算

设有两个浮点数x和y,它们分别为:x=2Ex·Mxy=2Ey·My

其中Ex和Ey分别为数x和y的阶码,Mx和My为数x和y的尾数。

两浮点数进行加法和减法的运算规则是:x±y=(Mx2Ex-Ey±My)·2Ey,Ex≤

Ey2.6.1浮点加法、减法运算设有两个浮点数x和y,532.6.1浮点加法、减法运算(续1)完成浮点加减运算的操作过程大体分为四步:

1.0操作数的检查;

2.比较阶码大小并完成对阶;

3.尾数进行加或减运算;

4.结果规格化并进行舍入处理。浮点加减运算的操作流程

2.6.1浮点加法、减法运算(续1)完成浮点加减运算的操作54浮点运算0操作数检查对阶操作尾数相加(CAI演示)浮点运算0操作数检查对阶操作尾数相加(CAI演示)552.6.1浮点加法、减法运算(续2)⑴0操作数检查浮点加减运算过程比定点运算过程复杂。如果判知两个操作数x或y中有一个数为0,即可得知运算结果而没有必要再进行后续的一系列操作以节省运算时间。0操作数检查步骤则用来完成这一功能。2.6.1浮点加法、减法运算(续2)⑴0操作数检查562.6.1浮点加法、减法运算(续3)⑵比较阶码大小并完成对阶两浮点数进行加减,首先要看两数的阶码是否相同,即小数点位置是否对齐。若二数阶码相同,表示小数点是对齐的,就可以进行尾数的加减运算。若二数阶码不同,表示小数点位置没有对齐,必须使二数阶码相同,这个过程叫作对阶。要对阶,首先应求出两数阶码Ex和Ey之差,即

△E=Ex-Ey2.6.1浮点加法、减法运算(续3)⑵比较阶码大小并完成572.6.1浮点加法、减法运算(续4)△E=0,表示Ex=Ey,两数阶码相等;△E<0,表示Ex<Ey;△E>0,表示Ex>Ey。当Ex≠Ey时,通过尾数的移动以改变Ex或Ey使之相等原则上,既可以通过Mx移位以改变Ex来达到Ex=Ey,也可以通过My移位以改变Ey来实现Ex=Ey。2.6.1浮点加法、减法运算(续4)△E=0,表示Ex=58

但是,由于浮点表示的数多是规格化的,尾数左移会引起最高有效位的丢失,造成很大误差。尾数右移虽引起最低有效位的丢失,但造成误差较小。因此,对阶操作规定使尾数右移,尾数右移后阶码作相应增加,其数值保持不变。显然,一个增加后的阶码与另一个阶码相等,增加的阶码的一定是小阶。因此在对阶时,总是使小阶向大阶看齐,即小阶的尾数向右移位(相当于小数点左移)每右移一位,其阶码加1,直到两数的阶码相等为止,右移的位数等于阶差△E。

但是,由于浮点表示的数多是规格化的,尾数左移592.6.1浮点加法、减法运算(续5)⑶尾数求和运算对阶结束后,即可进行尾数的求和运算。不论加法运算还是减法运算,都按加法进行操作,其方法与定点加减法运算完全一样。2.6.1浮点加法、减法运算(续5)⑶尾数求和运算602.6.1浮点加法、减法运算(续6)⑷结果规格化在浮点加减运算时,尾数求和的结果也可以得到01.ф…ф或10.ф…ф,即两符号位不等,这在定点加减法运算中称为溢出,是不允许的。但在浮点运算中,它表明尾数求和结果的绝对值大于1,向左破坏了规格化。此时将运算结果右移以实现规格化表示,称为向右规格化,简称右规。规则是:尾数右移1位,阶码加1。尾数不是1.M形式时,需向左规格化,简称左规。2.6.1浮点加法、减法运算(续6)⑷结果规格化612.6.1浮点加法、减法运算(续7)⑸舍入处理在对阶或向右规格化时,尾数要向右移位,被右移的尾数的低位部分会被丢掉,从而造成一定误差,因此要进行舍入处理。简单的舍入方法有两种:一种是“0舍1入”法,即如果右移时被丢掉数位的最高位为0则舍去,1则将尾数的末位加“1”。另一种是“恒置1”法,即只要数位被移掉,就在尾数的末尾恒置"1"。2.6.1浮点加法、减法运算(续7)⑸舍入处理622.6.1浮点加法、减法运算(续8)IEEE754标准中,舍入处理提供了四种可选方法:就近舍入就是通常所说的“四舍五入”。例如,尾数超出规定的23位的多余位数字是10010(>10000),多余位的值超过规定的最低有效位值的一半(16),故最低有效位应增1。若多余的5位是01111(<10000),则简单的截尾即可。对多余的5位10000这种特殊情况:若最低有效位为0则截尾;若为1,则向上进一位使其变为0。2.6.1浮点加法、减法运算(续8)IEEE754标准中,632.6.1浮点加法、减法运算(续9)朝0舍入朝数轴原点方向舍入,就是简单的截尾。无论尾数是正还是负,截尾都使取值的绝对值比原值的绝对值小。这种方法容易导致误差积累。朝+∞舍入对正数,只要多余位不全为0则向最低有效位进1;对负数,则是简单的截尾。朝-∞舍入处理方法正好与朝+∞舍入情况相反。对正数,只要多余位不全为0则简单截尾;对负数,向最低有效位进1。2.6.1浮点加法、减法运算(续9)朝0舍入朝数轴原点642.6.1浮点加法、减法运算(续10)⑹浮点数的溢出当机器浮点数值大于最大正数A值,或小于最小负数B值时,称为上溢,这两种情况意味着阶码运算值超出了它所表示的范围,机器必须做中断处理。当机器浮点数值小于最小正数a值,或大于最大负数b值时,称为下溢。下溢不是一个严重问题,通常看作为机器零。2.6.1浮点加法、减法运算(续10)⑹浮点数的溢出652.6.1浮点加法、减法运算(续12)阶码上溢超过了阶码可能表示的最大值的正指数值,一般将其认为是+∞和-∞。阶码下溢超过了阶码可能表示的最小值的负指数值,一般将其认为是0。尾数上溢

两个同符号尾数相加产生了最高位向上的进位,将尾数右移,阶码增1来重新对齐。尾数下溢在将尾数右移时,尾数的最低有效位从尾数域右端流出,要进行舍入处理。2.6.1浮点加法、减法运算(续12)阶码上溢超过了阶码662.6.1浮点加法、减法运算(续11)浮点数的溢出是以其阶码溢出表现出来的。在加减运算过程中要检查是否产生了溢出:若阶码正常,加(减)运算正常结束;若阶码溢出,则要进行相应处理。另外对尾数的溢出也需要处理。2.6.1浮点加法、减法运算(续11)浮点数的溢出是以其阶672.6.1浮点加法、减法运算(续13)例25:设x=2010×0.11011011,

y=2100×(-0.10101100),求x+y。[解]:为了便于直观理解,假设两数均以补码表示,阶码采用双符号位,尾数采用单符号位,则它们的浮点表示分别为:[x]浮=00010,0.11011011[y]浮=00100,1.010101002.6.1浮点加法、减法运算(续13)例25:设x=2068<1>求阶差并对阶[△E]补=[Ex-Ey]补=[Ex]补+[-Ey]补=00010+11100=11110即△E的真值为-2,x的阶码小,应使Mx右移2位,Ex+2,[x]浮=00100,0.00110110(11)其中(11)表示Mx右移2位后移出的最低两位数。[例25]<2>尾数求和0.00110110(11)+1.010101001.10001010(11)[x]浮=00010,0.11011011[y]浮=00100,1.01010100<1>求阶差并对阶[例25]<2>尾数求和[x]浮=0069<3>规格化处理

尾数运算结果的符号位与最高数值位同值,

1.10001010(11)应执行左规处理,结果为1.00010101(10),阶码减1,即:00100+11111=00011。<3>规格化处理70浮点运算<4>舍入处理采用0舍1入法处理,则有:1.00010101+0.00000001

1.00010110<5>判溢出

阶码符号位为00,不溢出,故得最终结果为

x+y=2011×(-0.11101010)浮点运算<4>舍入处理712.6.2浮点乘法、除法运算

1.浮点乘法、除法运算规则

设有两个浮点数x和y:x=2Ex·Mxy=2Ey·My浮点乘法运算的规则是:x×y=2(Ex+Ey)·(Mx×My)(2.40)

即乘积的尾数是相乘两数的尾数之积,乘积的阶码是相乘两数的阶码之和。也有规格化与舍入等步骤。2.6.2浮点乘法、除法运算1.浮点乘法、除法运算规则72浮点除法运算的规则是:x÷y=2(Ex-Ey)·(Mx÷My)(2.41)即商的尾数是相除两数的尾数之商,商的阶码是相除两数的阶码之差。也有规格化和舍入等步骤。浮点除法运算的规则是:732.6.2浮点乘法、除法运算(续2)浮点数的乘除运算大体分为四步:第一步0操作数检查;第二步阶码加/减操作;第三步尾数乘/除操作;第四步结果规格化及舍入处理。2.浮点乘、除法运算步骤

2.6.2浮点乘法、除法运算(续2)浮点数的乘除运算大体分742.6.2浮点乘法、除法运算(续3)⑴浮点数的阶码运算对阶码的运算有+1、-1、两阶码求和、两阶码求差四种,运算时还必须检查结果是否溢出。在计算机中,阶码通常用补码或移码形式表示。补码运算规则和判定溢出的方法,前面已经讲过。这里只对移码的运算规则和判定溢出的方法进行讲解。2.6.2浮点乘法、除法运算(续3)⑴浮点数的阶码运算752.6.2浮点乘法、除法运算(续4)移码的定义为(n+1位):[x]移=2n+x2n>x≥-2n按此定义,则有:[x]移+[y]移=2n+x+2n+y=2n+(2n+(x+y))

=2n+[x+y]移即直接用移码实现求阶码之和时,结果的最高位多加了个1,要得到正确的移码形式结果,必须对结果的符号再执行一次求反。浮点乘法、除法运算2.6.2浮点乘法、除法运算(续4)移码的定义为(762.6.2浮点乘法、除法运算(续5)混合使用移码和补码时,考虑到对同一个数值,移码和补码的数值位完全相同,而符号位正好完全相反。[y]补的定义为:[y]补=2n+1+y则求阶码和用如下方式完成:[x]移+[y]补=2n+x+2n+1+y=2n+1+(2n+(x+y))即:[x+y]移=[x]移+[y]补(mod2n+1)(2.42)同理:[x-y]移=[x]移+[-y]补(2.43)

2.6.2浮点乘法、除法运算(续5)混合使用移码和772.6.2浮点乘法、除法运算(续6)如果阶码运算的结果溢出,上述条件则不成立。使用双符号位的阶码加法器,并规定移码的第二个符号位,即最高符号位恒用0参加加减运算.溢出条件是结果的最高符号位为1。低位符号位为0,结果上溢;为1时,结果下溢。当最高符号位为0时,表明没有溢出低位符号位为1,结果为正;为0时,结果为负。2.6.2浮点乘法、除法运算(续6)如果阶码运算的结果溢出782.6.2浮点乘法、除法运算(续7)

[例26]:x=+011,y=+110,求[x+y]移和[x-y]移,并判断是否溢出。[解]:[x]移=01011,[y]补=00110,[-y]补=11010

[x+y]移=[x]移+[y]补=10001。

[x-y]移=[x]移+[-y]补=00101

x-y=

-3结果上溢结果正确2.6.2浮点乘法、除法运算(续7)[例26]:x=+792.6.2浮点乘法、除法运算(续8)⑵尾数处理按定点小数乘除法运算规则进行尾数乘除运算。浮点加减法对结果的规格化及舍入处理也适用于浮点乘除法。第一种简单方法--截断处理无条件地丢掉正常尾数最低位之后的全部数值。这种办法被称为截断处理。好处是处理简单缺点是影响结果的精度。2.6.2浮点乘法、除法运算(续8)⑵尾数处理第一种简802.6.2浮点乘法、除法运算(续9)第二种简单办法--舍入处理运算过程中保留右移中移出的若干高位的值,最后再按某种规则用这些位上的值修正尾数。这种处理方法被称为舍入处理。2.6.2浮点乘法、除法运算(续9)第二种简单办法--舍入812.6.2浮点乘法、除法运算(续10)当尾数用原码表示时,舍入规则比较简单。最简便的方法:只要尾数的最低位为1,即形式为:.xx…x1或移出的几位中有为1的数值位,即形式为:.xx…xx(x..1…xx)则就使最低位的值为1。2.6.2浮点乘法、除法运算(续10)当尾数用原码表示时,820舍1入法:当丢失的最高位为1时,即形式为:.xx…xx(1xx…xx)把这个1加到最低数值位上进行修正,即.xx…xx

+.00…01

否则舍去丢失的的各位值,即形式为:.xx…xx(0xx…xx)

丢失这些多余位这样处理时,舍入效果对正数负数相同,入将使数的绝对值变大,舍则使数的绝对值变小。0舍1入法:当丢失的最高位为1时,即形式为:832.6.2浮点乘法、除法运算(续11)尾数是用补码表示时,所用的舍入规则,应该与用原码表示时产生相同的处理效果。具体规则是:当丢失的各位均为0时,不必舍入当丢失的最高位为0时,以下各位不全为0时,或者丢失的最高位为1,以下各位均为0时,则舍去丢失位上的值当丢失的最高位为1,以下各位不全为0时,则执行在尾数最低位入1的修正操作。2.6.2浮点乘法、除法运算(续11)尾数是用补码表示842.6.2浮点乘法、除法运算(续12)例27:设[x1]补=11.01100000,[x2]补=11.01100001[x3]补=11.01101000,[x4]补=11.01111001,求执行只保留小数点后4位有效数字的舍入操作值。解:执行舍入操作后,其结果值分别为

[x1]补=11.0110(不舍不入)[x2]补=11.0110(舍)[x3]补=11.0110(舍)[x4]补=11.1000(入)2.6.2浮点乘法、除法运算(续12)例27:设[x1]852.6.2浮点乘法、除法运算(续13)例28:设有浮点数x=2-5×0.0110011,y=23×(-0.1110010)阶码用4位移码表示,尾数(含符号位)用8位补码表示。求[x×y]补。要求用补码完成尾数乘法运算,运算结果尾数保留高8位(含符号位),并用尾数低位字长值处理舍入操作。2.6.2浮点乘法、除法运算(续13)例28:设有浮点数x86例28之解移码采用双符号位,尾数补码采用单符号位,则有:

[Mx]补=0.0110011,[My]补=1.0001110,

[Ex]移=00011,[Ey]移=01011,[Ey]补=00011,[x]浮=00011,0.0110011,[y]浮=01011,1.0001110⑴求阶码和

[Ex+Ey]移=[Ex]移+[Ey]补=00011+00011=00110,值为-2。例28之解移码采用双符号位,尾数补码采用单符号位,则有:

[87例28之解(续)⑵尾数乘法运算

采用补码阵列乘法器(用间接补码阵列乘法器)实现,即有,[Mx]补×[My]补

=[0.0110011]补×[1.0001110]补=[1.1010010,1001010]补⑶规格化处理

乘积的尾数符号位与最高数值位符号相同,不是规格化的数,需要左规,阶码由00110变为00101(-3),尾数变为:1.0100101,0010100。例28之解(续)⑵尾数乘法运算88⑷舍入处理

尾数为负数,取尾数高位字长,按舍入规则,舍去低位字长,故尾数为1.0100101。最终相乘结果为:[x×y]浮=00101,1.0100101其真值为:

x×y=2-3×(-0.1011011)例28之解(续)⑷舍入处理例28之解(续)892.6.3浮点运算流水线

计算机的流水处理过程同工厂中的流水装配线类似。为了实现流水,首先必须把输入的任务分割为一系列的子任务,使各子任务能在流水线的各个阶段并发地执行。将任务连续不断地输入流水线,从而实现了子任务的并行。流水处理大幅度地改善了计算机的系统性能,是在计算机上实现时间并行性的一种非常经济的方法。1.流水线原理

2.6.3浮点运算流水线计算机的流水处理过程同工厂中的流902.6.3浮点运算流水线(续1)在流水线中,原则上要求各个阶段的处理时间都相同。若某一阶段的处理时间较长,势必造成其他阶段的空转等待。因此对子任务的划分,是决定流水线性能的一个关键因素,它取决于操作部分的效率、所期望的处理速度,以及成本价格等等。假定作业T被分成k个子任务,可表达为T={T1,T2,···,Tk}各个子任务之间有一定的优先关系:若i<j,则必须在Ti完成以后,Tj才能开始工作。具有这种线性优先关系的流水线称为线性流水线。2.6.3浮点运算流水线(续1)在流水线中,原则上91处理一个子任务的过程高速缓冲寄存器统一的时钟CAI演示处理一个子任务高速缓冲寄存器统一的时钟CAI演示922.6.3浮点运算流水线(续2)处理一个子任务的过程为过程段(Si)。线性流水线由一系列串联的过程段组成,各个过程之间设有高速的缓冲寄存器(L),以暂时保存上一过程子任务处理的结果。在一个统一的时钟(C)控制下,数据从一个过程段流向相邻的过程段。设过程段Si所需的时间为τi,缓冲寄存器的延时为τl,线性流水线的时钟周期定义为:

τ=max{τi}+τl=τm+τl(2.44)故流水线处理的频率为:f=1/τ。浮点运算流水线2.6.3浮点运算流水线(续2)处理一个子任务的932.6.3浮点运算流水线(续3)在流水线处理中,当任务饱满时,每隔一个时钟周期都能输出一个任务。从理论上说,具有k级过程段的流水线处理n个任务需要的时钟周期数为:Tk=k+(n-1)(2.45)

其中k个时钟周期用于处理第一个任务。K个周期后,流水线被装满,剩余的n-1个任务只需n-1个周期就完成了。用非流水线的硬件来处理n个任务,时间上只能串行进行,则所需时钟周期数为:

TL=n·k

(2.46)2.6.3浮点运算流水线(续3)在流水线处理中,当942.6.3浮点运算流水线(续4)将TL和Tk的比值定义为k级线性流水线的加速比:Ck===(2.47)

由上式可以得出:当n>>k时,Ck->k。

理论上k级线性流水线处理几乎可以提高k倍速度。但实际上由于存储器冲突、数据相关,这个理想的加速比不一定能达到。浮点运算流水线TL

Tkn·k

k+(n-1)非流水线时所需周期数流水线时所需周期数2.6.3浮点运算流水线(续4)将TL和Tk的比值定义为k95

例X=1.1000×y=1.1100×例X=1.1000×960.0110×24+1.1100×2410.0010×24其结果要进行规格化,将尾数向右移1位,阶码加1。即规格化的结果为1.0001×25。在图2.18标出了上述例子在每一个过程段和锁存器L中保存的流水运算结果值。0.0110×2497第2章运算方法和运算器课件98[例29]上述演示中,(1)假设每个过程段所需的时间为:求阶差τ1=70ns,对阶τ2=60ns,相加τ3=90ns,规格化τ4=80ns,缓冲寄存器L的延时为tl=10ns,求:(1)4级流水线加法器的加速比为多少?(2)如果每个过程段的时间相同,即都为75ns,(包括缓冲寄存器时间),加速比是多少?[例29]上述演示中,(1)假设每个过程段所需的时间为:求99[解]:(1)加法器的流水线时钟周期至少为:τ=90ns+10ns=100ns如果采用同样的逻辑电路,但不是流水线方式,则浮点加法所需的时间为:τ1+τ2+τ3+τ4=300ns

温馨提示

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

评论

0/150

提交评论