第六讲定点运算器及浮点数运算演示文稿_第1页
第六讲定点运算器及浮点数运算演示文稿_第2页
第六讲定点运算器及浮点数运算演示文稿_第3页
第六讲定点运算器及浮点数运算演示文稿_第4页
第六讲定点运算器及浮点数运算演示文稿_第5页
已阅读5页,还剩57页未读 继续免费阅读

下载本文档

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

文档简介

第六讲定点运算器及浮点数运算演示文稿现在是1页\一共有62页\编辑于星期四优选第六讲定点运算器及浮点数运算现在是2页\一共有62页\编辑于星期四S0S1S2S3X0Y0

参数S0,S1,S2,S3

分别控制输入Ai

和Bi

,产生Y和X的函数。其中:Yi是受S0,S1控制的Ai和Bi的组合函数;Xi是受S2

,S3控制的Ai和Bi组合函数。

函数关系如表所示。Xi=S2S3+S2S3(Ai+Bi)+S2S3(Ai+Bi)+S2S3Ai

Yi=S0S1Ai+S0S1AiBi+S0S1AiBi•

核心部分是由两个半加器组成的全加器。•

由M控制第二级半加器选择逻辑运算或算术运算(所需的低位进位Cn

)。一位ALU基本逻辑电路现在是3页\一共有62页\编辑于星期四S0S1

Yi

S2S3

Xi

0

0

0

1

1

0

1

1Ai

AiBi

AiBi

00

0

0

1

1

0

1

11

Ai+Bi

Ai+Bi

Ai

进一步化简:Xi=S3AiBi+S2AiBiYi=Ai+S0Bi+S1BiAi+S0Bi+S1BiS3AiBi+S2AiBiXiYi==Yi

Fi=Yi⊕Xi⊕Cn+iCn+i+1=Yi+XiCn+i现在是4页\一共有62页\编辑于星期四综上所述,ALU的一位逻辑表达式为:Xi=S3AiBi+S2AiBiYi=Ai+S0Bi+S1Bi

Fi=Yi⊕Xi⊕Cn+iCn+i+1=Yi+XiCn+i现在是5页\一共有62页\编辑于星期四4位之间采用先行进位(并行进位)公式。根据Cn+i+1=Yi+XiCn+i,每一位的进位公式可递推如下:

第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+X0X1X2X3Cn4位ALU的进位关系及逻辑电路现在是6页\一共有62页\编辑于星期四Cn+1=Y0+X0CnCn+2=Y1+X1Cn+1=Y1+Y0X1+X0X1Cn

Cn+3=Y2+X2Cn+2=Y2+Y1X1+Y0X1X2+X0X1X2CnCn+4=Y3+X3Cn+3=Y3+Y2X3+Y1X2X3+Y0X1X2X3+X0X1X2X3Cn

Cn+4是最后进位输出。逻辑表达式表明,这是一个先行进位逻辑。换句话说,第0位的进位输入Cn可以直接传送到最高位上去,因而可以实现高速运算。下图为用上述原始推导公式实现的4位算术/逻辑运算单元(ALU)

——74181ALU从进位关系上看现在是7页\一共有62页\编辑于星期四

正逻辑表示的74181现在是8页\一共有62页\编辑于星期四

第3位的进位输出(即整个4位运算进位输出)公式为:

Cn+4=Y3+X3Cn+3=Y3+Y2X3+Y1X2X3+Y0X1X2X3+X0X1X2X3Cn设G=Y3+Y2X3+Y1X2X3+Y0X1X2X3

P=X0X1X2X3

Cn+4=G+PCn

其中G称为进位发生输出,P称为进位传送输出。在电路中多加这两个进位输出的目的,是为了便于实现多片(组)ALU之间的先行进位。P和G的含义现在是9页\一共有62页\编辑于星期四负逻辑表示的74181X0Y0X1Y1X2Y2X3Y3现在是10页\一共有62页\编辑于星期四

2.算术逻辑运算的实现上图中控制端M用来控制ALU进行算术运算还是进行逻辑运算:M=0时:

M对进位信号没有任何影响。此时Fi

不仅与本位的被操作数Yi和操作数Xi

有关,而且与向本位的进位值Cn+i

有关,因此M=0时,进行算术操作。

M=1时:

封锁了各位的进位输出,即Cn+i

=0,因此各位的运算结果Fi

仅与Yi

和Xi

有关,故M=1时,进行逻辑操作。现在是11页\一共有62页\编辑于星期四下图为工作于负逻辑和正逻辑操作方式的74181ALU方框图。两种操作是等效的。•对正逻辑操作数来说:

算术运算称高电平操作;逻辑运算称正逻辑操作

(即高电平为“1”,低电平为“0”)。•对于负逻辑操作数来说:

正好相反。现在是12页\一共有62页\编辑于星期四AA+BA+B减1A加AB(A+B)加ABA减B减1AB减1A加ABA加B(A+B)加ABAB减1A加A*(A+B)加A(A+B)加AA减1AA+BAB逻辑0ABBABABA+BABBAB逻辑1A+BA+BA

A减1AB减1

AB减1

减1A加(A+B)AB加(A+B)A减B减1A+BA加(A+B)A加BAB加(A+B)A+BA加A*AB加AAB加AA

AAB

A+B

逻辑1

A+BB

ABA+B

ABAB

BA+B

逻辑0AB

ABALLLLLLLHLLHLLLHHLHLLLHLHLHHLLHHHHLLLHLLHHLHLHLHHHHLLHHLHHHHLHHHH算术运算M=LCn=H逻辑M=H算术运算M=LCn=L逻辑M=H正逻辑输入与输出负逻辑输入与输出工作方式选择输入S3S2S1S0

现在是13页\一共有62页\编辑于星期四(1)H=高电平,L=低电平;(2)*表示每一位均移到下一个更高位,即A*=2A。(3)

算术运算操作是用补码表示法来表示的,其中:

“加”是指算术加,运算时要考虑进位;符号“+”是指“逻辑加”。(4)

减法是用补码方法进行的,其中数的反码是内部产生的,而结果输出“A减B减1”,因此做减法时需在最末位产生一个强迫进位(加1),以便产生“A减B”的结果。(5)

“A=B”输出端可指示两个数是否相等;现在是14页\一共有62页\编辑于星期四3.并行加法器的进位逻辑74181ALU为4位并行加法器,组成16位的并行加法器——怎么办?

4片(组)74181连接——怎样连?

•组与组之间串行连接

•组与组之间并行连接现在是15页\一共有62页\编辑于星期四组间串行进位C4=G0+P0C0C8=G1+P1C4C12=G2+P2C8C16=G3+P3C12进位关系Cn+1=Y0+X0CnCn+2=Y1+X1Cn+1=Y1+Y0X1+X0X1Cn

Cn+3=Y2+X2Cn+2=Y2+Y1X1+Y0X1X2+X0X1X2CnCn+4=Y3+X3Cn+3=Y3+Y2X3+Y1X2X3+Y0X1X2X3+X0X1X2X3Cn组内组间X0Y0X1Y1X2Y2X3Y3X0Y0X1Y1X2Y2X3Y3C4C8C4C00011G=Y3+Y2X3+Y1X2X3+Y0X1X2X3

P=X0X1X2X3现在是16页\一共有62页\编辑于星期四(2)组间并行进位——两级先行进位的ALU由串行进位关系C8=G1+P1C4=G1+P1(G0+P0C0)=G1+G0P1+P0P1C0得:C4=G0+P0C0C8=G1+P1C4C12=G2+P2C8C16=G3+P3C12C4=G0+P0C0C12=G2+P2C8=G2+P2(G1+G0P1+P0P1Cn)=G2+G1P2+G0P1P2+P0P1P2C0C16=G3+P3C12=G3+G2P3+G1P1P2+G0P1P2P3+P0P1P2P3C0

=G*+P*C0其中:P*=P0P1P2P3G*=G3+G2P3+G1P1P2+G0P1P2P3根据上述公式实现逻辑电路:现在是17页\一共有62页\编辑于星期四

X0Y0X1Y1X2Y2X3Y3

C12C8C4

X0Y0X1Y1X2Y2X3Y3

X0Y0X1Y1X2Y2X3Y3

0

X0Y0X1Y1X2Y2X3Y3

现在是18页\一共有62页\编辑于星期四4.先行进位部件(CLA)——7418274182是一个并行进位部件,其内部结构图如下:其中G*称为成组进位发生输出,P*称为成组进位传送输出。现在是19页\一共有62页\编辑于星期四Cn+x=G0+P0CnCn+y=G1+P1Cn+x=G1+G0P1+P0P1CnCn+z=G2+P2Cn+y=G2+G1P2+G0P1P2+P0P1P2CnCn+4=G3+P3Cn+z=G3+G2P3+G1P1P2+G0P1P2P3+P0P1P2P3Cn

=G*+P*Cn其中:P*=P0P1P2P3

G*=G3+G2P3+G1P1P2+G0P1P2P3先行进位部件74182CLA所提供的进位逻辑关系如下:现在是20页\一共有62页\编辑于星期四74181ALU设置了P和G两个本组先行进位输出端。如果将四片74181的P,G输出端送入到74182先行进位部件(CLA),又可实现第二级的先行进位,即组与组之间的先行进位。例:16位字长ALU的构成G*P*现在是21页\一共有62页\编辑于星期四•C3、C7、C11是由74182同时形成的;•其不同点是74182还提供大组间的进位函数G*

和大组传递条件P*,以便在位数更长时组成下一级先行进位链。由图可知:现在是22页\一共有62页\编辑于星期四

用若干个74181ALU位片,与配套的74182先行进位部件CLA在一起,可构成一个全字长的ALU。例:全字长的ALU的构成用两个16位全先行进位部件级联组成的32位ALU逻辑方框图。现在是23页\一共有62页\编辑于星期四十进制加法器

十进制加法器可由BCD码(二-十进制码)来设计,它可以在二进制加法器的基础上加上适当的“校正”逻辑来实现。70111+6+0110131101

(=D)

+011010011(=13)30011+5+010181000(=8)X+Y+C<10不调整X+Y+C>10调整现在是24页\一共有62页\编辑于星期四故:

1.和为10~15时,加6校正;

2.和数有进位时,加6校正。和数(4位)有进位调整2800101000+9+000010013700110001(=31)

+0000011000110111(=37)现在是25页\一共有62页\编辑于星期四1.一位BCD码行波式进位加法器一般结构:011101010111100110111101111现在是26页\一共有62页\编辑于星期四2.n位BCD码行波式进位加法器一般结构:现在是27页\一共有62页\编辑于星期四浮点运算方法和浮点运算器浮点加、减法运算浮点乘、除法运算现在是28页\一共有62页\编辑于星期四

尾数:用定点小数表示,给出有效数字的位数,决定了浮点数的表示精度;阶码:用整数形式表示,指明小数点在数据中的位置,决定了浮点数的表示范围。机器浮点数格式:

浮点数的表示方法阶符阶码数符尾数EsE1E2……EmMsM1M2……Mn现在是29页\一共有62页\编辑于星期四IEEE标准:尾数用原码;阶码用“移码”;基为2。浮点数的标准格式

按照IEEE754的标准,32位浮点数和64位浮点数的标准格式为:313023220SEM32位SEM63625251064位•为便于软件移植,使用IEEE标准现在是30页\一共有62页\编辑于星期四设有两个浮点数x和y,它们分别为:

浮点加、减法运算

其中Ex和Ey分别为数x和y的阶码,

Mx和My为数x和y的尾数。两浮点数进行加法和减法的运算规则是:

x±y=(Mx2Ex-Ey±My)2EyEx<=Ey

x=2Ex·Mxy=2Ey·My现在是31页\一共有62页\编辑于星期四完成浮点加减运算的操作过程大体分为四步:(1)0操作数的检查;(2)比较阶码大小并完成对阶;(3)尾数进行加或减运算;(4)结果规格化。(5)舍入处理。(6)溢出处理。现在是32页\一共有62页\编辑于星期四

使二数阶码相同(即小数点位置对齐),这个过程叫作对阶。

先求两数阶码Ex和Ey之差,即△E=Ex-Ey

若△E=0,表示

Ex=Ey

若△E>0,Ex>Ey

若△E<0,Ex<Ey通过尾数的移动来改变Ex或Ey,使其相等.

•对阶原则阶码小的数向阶码大的数对齐;小阶的尾数右移,每右移一位,其阶码加1(右规)。(2)对阶(1)0操作数检查

现在是33页\一共有62页\编辑于星期四例:x=201×0.1101,y=211×(-0.1010),求x+y=?解:为便于直观了解,两数均以补码表示,阶码、尾数均采用双符号位。

[x]补=0001,00.1101[y]补=0011,11.0110[△E]补=[Ex]补-[Ey]补=0001+1101=1110

△E=-2,表示Ex比Ey小2,

因此将x的尾数右移两位.

右移一位,

得[x]补=0010,00.0110

再右移一位,

得[x]补=0011,00.0011

至此,△E=0,对阶完毕.现在是34页\一共有62页\编辑于星期四

尾数求和方法与定点加减法运算完全一样。对阶完毕可得:[x]补=0011,00.0011[y]补=0011,11.0110

对尾数求和:00.0011+11.011011.1001即得:[x+y]补=0011,11.1001(3)尾数求和运算现在是35页\一共有62页\编辑于星期四(4)结果规格化

求和之后得到的数可能不是规格化了的数,为了增加有效数字的位数,提高运算精度,必须将求和的结果规格化.①规格化的定义:

(二进制)对正数:S=00.1×××…×对负数:S=11.0×××…×采用双符号位的补码:采用原码:

正数:S=0.1×××…×

负数:S=1.1×××…×现在是36页\一共有62页\编辑于星期四

若不是规格化的数,需要尾数向左移位,以实现规格化的过程,我们称其为向左规格化。②向左规格化

前例中,0011,11.1001不是规格化数,因而需要左规,即左移一位,阶码减1,得:[x+y]补=0010,11.0010③向右规格化

浮点加减运算时,尾数求和的结果也可能得到:

01.×××…×或10.×××…×,

即两符号位不等,即结果的绝对值大于1。向左破坏了规格化。此时,将尾数运算的结果右移一位,阶码加1,称为向右规格化。现在是37页\一共有62页\编辑于星期四例:两浮点数x=0.1101210,y=(0.1011)201,求x+y。解:[x]补=0010,00.1101[y]补=0001,00.1011

对阶:

[△E]补=[Ex]补-[Ey]补=0010+1111=0001y向x对齐,将y的尾数右移一位,阶码加1。

[y]补=0010,00.0101

求和:

00.1101+00.010101.0010[x+y]补=0010,01.0010右归:运算结果两符号位不同,其绝对值大于1,右归。

[x+y]补=0011,00.1001现在是38页\一共有62页\编辑于星期四

在对阶或向右规格化时,尾数要向右移位,这样,被右移的尾数的低位部分会被丢掉,从而造成一定误差,因此要进行舍入处理。

简单的舍入方法有两种:①“0舍1入”法即如果右移时被丢掉数位的最高位为0则舍去,反之则将尾数的末位加“1”。②“恒置1”法即只要数位被移掉,就在尾数的末位恒置“1”。从概率上来说,丢掉的0和1各为1/2。(5)舍入处理

•IEEE754标准中,舍入处理提供了四种可选方法:现在是39页\一共有62页\编辑于星期四(6)溢出处理

与定点加减法一样,浮点加减运算最后一步也需判溢出。在浮点规格化中已指出,当尾数之和(差)出现01.××…×或10.××…×时,并不表示溢出,只有将此数右规后,再根据阶码来判断浮点运算结果是否溢出。现在是40页\一共有62页\编辑于星期四

若机器数为补码,尾数为规格化形式,并假设阶符取2位,阶码取7位、数符取2位,尾数取n位,则它们能表示的补码在数轴上的表示范围如图所示。正负现在是41页\一共有62页\编辑于星期四

图中A,B,a,b分别对应最小负数、最大正数、最大负数和最小正数。它们所对应的真值分别是:

A最小负数2+127(-1)B最大正数2+127(1-2-n)a最大负数2-128(-2-1-2-n)b最小正数2-128

2-1正负现在是42页\一共有62页\编辑于星期四图中a,b之间的阴影部分,对应阶码小于128的情况,叫做浮点数的下溢。下溢时.浮点数值趋于零,故机器不做溢出处理,仅把它作为机器零。图中的A、B两侧阴影部分,对应阶码大于127的情况,叫做浮点数的上溢。此刻,浮点数真正溢出,机器需停止运算,作溢出中断处理。一般说浮点溢出,均是指上溢。

可见,浮点机的溢出与否可由阶码的符号决定:

阶码[j]补=01,为上溢,机器停止运算,做中断处理;阶码[j]补=10,为下溢,按机器零处理。现在是43页\一共有62页\编辑于星期四例:若某次加法操作的结果为[X+Y]补=11.010,00.0000110111则应对其进行向左规格化操作:尾数为:00.1101110000,阶码减4:

11.010+11.100[-4]补

10.110例:若某次加法操作的结果为[X+Y]补=00.111,10.1011100111则应对其进行向右规格化操作:尾数为:11.0101110011,阶码加1:01.000

阶码超出了它所能表示的最大正数(+7),表明本次浮点运算产生了溢出。

阶码超出了它所能表示的最小负数(-8),表明本次浮点运算产生了溢出。现在是44页\一共有62页\编辑于星期四

在加、减运算过程中要检查是否产生了溢出:若阶码正常,加减运算正常结束;若阶码溢出,则要进行相应的处理。阶码上溢——

超过了阶码可能表示的最大值的正指数值,一般将其认为是+∞和-∞。阶码下溢——

超过了阶码可能表示的最小值的负指数值,一般将其认为是0。•

浮点数的溢出是以其阶码溢出表现出来的•

对尾数的溢出也需要处理(上溢—右归,下溢—舍入)。小结:现在是45页\一共有62页\编辑于星期四现在是46页\一共有62页\编辑于星期四例

设x=20100.11011011,y=2100(-0.10101100),求x+y。解:阶码采用双符号位,尾数采用单符号位,则它们的浮点表示分别为[x]浮=00010,

0.11011011

[y]浮=00100,

1.01010100(1)求阶差并对阶△E=Ex-

Ey=[Ex]补+[-Ey]补=00010+11100=11110[x]浮=00100,0.00110110(11)其中(11)表示Mx右移2位后移出的最低两位数。即△E为-2,x的阶码小,应使Mx右移两位,Ex加2,现在是47页\一共有62页\编辑于星期四(2)尾数求和(4)舍入处理采用0舍1入法处理,则有:1.00010101+11.000101100.00110110(11)+1.01010100

1.10001010(11)(3)规格化处理尾数运算结果的符号位与最高数值位为同值,应执行左规处理,结果为1.00010101(10),阶码为00011。(5)判断溢出阶码符号位为00,不溢出,故得最终结果为

x+y=2011×(-0.11101010)现在是48页\一共有62页\编辑于星期四例两浮点数x=201×0.1101,y=211×(-0.1010)。假设尾数在计算机中以补码表示,可存储4位尾数,2位保护位,阶码以原码表示,求x+y。解:将x,y转换成浮点数据格式

[x]浮

=0001,00.1101 [y]浮

=0011,11.0110步骤1:对阶,阶差为11-01=10,即2,因此将x的尾数右移两位,得

[x]浮

=0011,00.001101步骤2:对尾数求和,得: [x+y]浮

=0011,11.100101步骤3:由于符号位和第一位数相等,不是规格化数,向左规格化,得

[x+y]浮

=0010,11.001010步骤4:截去。

[x+y]浮

=0010,11.0010步骤5:数据无溢出,因此结果为

x+y=210×(-0.1110)现在是49页\一共有62页\编辑于星期四浮点运算电路浮点加法器原理框图MESMES小ALU大ALU控制右移左移或右移舍入部件阶码差加1或减1MES111000现在是50页\一共有62页\编辑于星期四

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

设有两个浮点数x和y:x=2Ex·Mx

y=2Ey·My浮点乘法运算的规则是:xy=2(Ex+Ey)·(Mx

My)

即:乘积的尾数是相乘两数的尾数之积;

乘积的阶码是相乘两数的阶码之和。浮点除法运算的规则是:

x÷y=2(Ex-Ey)·(Mx÷My)

即:商的尾数是相除两数的尾数之商;

商的阶码是相除两数的阶码之差。现在是51页\一共有62页\编辑于星期四2.浮点乘、除法运算步骤浮点数的乘除运算大体分为四步:(1)0操作数检查;(2)阶码加/减操作;(3)尾数乘/除操作;(4)结果规格化及舍入处理。现在是52页\一共有62页\编辑于星期四(2)浮点数的阶码运算

对阶码的运算有+1、-1、两阶码求和、两阶码求差四种,

运算时还必须检查结果是否溢出。

•在计算机中,阶码通常用补码或移码形式表示。①移码的运算规则和判定溢出的方法移码的定义为[x]移=2n+x-2n

≤x<2n[x]移+[y]移=2n+x+2n+y=2n+[x+y]移按此定义,则有=2n+(2n+(x+y))[x+y]移=-2n+[x]移+[y]移现在是53页\一共有62页\编辑于星期四

考虑到移码和补码的关系:

对同一个数值,其数值位完全相同,而符号位正好完全相反。

[y]补的定义为

[y]补=2n+1+y则求阶码和用如下方式完成:

=2n+1+(2n+(x+y))[x]移+[y]补=2n+x+2n+1+y即:[x+y]移=[x]移+[y]补

(mod2n+1)同理:[x-y]移=[x]移+[-y]补

(mod2n+1)②混合使用移码和补码现在是54页\一共有62页\编辑于星期四

使用双符号位的阶码加法器,并规定移码的第二个符号位,即最高符号位恒用0参加加减运算,则溢出条件是结果的最高符号位为1:

•当低位符号位为0时,(10)表明结果上溢,

•当低位符号位为1时,(11)表明结果下溢。

•当最高符号位为0时,表明没有溢出:

低位符号位为1,(01)表明结果为正;

为0,(00)表明结果为负。③阶码运算结果溢出处理现在是55页\一共有62页\编辑于星期四例:

x=+011,y=+110,求[x+y]移和[x-y]移,并判断是否溢出。解:阶码取3位(不含符号位),其对应的真值范围是-8~+7[x]移=01011,[y]补=00110,[-y]补=11010[x+y]移=[x]移+[y]补=[x-y]移=[x]移+[-y]补=01011+0011010001结果上溢。结果正确,为-3。01011+1101000101现在是56页\一共有62页\编辑于星期四(3)尾数处理

浮点加减法对结果的规格化及舍入处理也适用于浮点乘除法。第一种方法是:无条件地丢掉正常尾数最低位之后的全部数值。这种办法被称为截断

温馨提示

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

评论

0/150

提交评论