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

下载本文档

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

文档简介

第二章运算方法与运算器本章首先讲述数据与文字的表示方法,然后讲述定点运算方法、定点运算器的组成,最后讲述浮点运算方法及浮点运算器的组成。本章包括以下六小结内容:

2.1数据与文字的表示方法

2.2定点加法、减法运算

2.3定点乘法运算

2.4定点除法运算

2.5定点运算器的组成

2.6浮点运算方法和浮点运算器2.1数据与文字的表示方法---2.1.1数据格式计算机中常用的数据表示格式有两种:定点格式、浮点格式。定点表示法:约定机器中数据的小数点位置是固定不变的。 定点数x=x0x1x2…xn

在定点机中表示如下: (x0:符号位,0代表正号,1代表负号)约定为纯小数时,其表示范围为:

0≤|x|≤1-2-n

约定为纯整数时,表示范围为:

0≤|x|≤2n-12.1数据与文字的表示方法---2.1.1数据格式浮点表示法:

把一个数的有效数字和数的范围在计算机的一个存储单元中分别予以表示,这种把数的范围和精度分别表示的方法,数的小数点位置随比例因子的不同而在一定范围内自由浮动,故称为浮点数。在计算机中一个任意进制数N可以写成: N=Re.m

m

:尾数,是一个纯小数。e

:浮点的指数,是一个整数。R:基数,对于二进记数制的机器,常为2,8或16。一个机器浮点数由阶码和尾数及其符号位组成2.1数据与文字的表示方法---2.1.1数据格式IEEE754标准(32位)S:浮点数的符号位,1位,0表示正数,1表示负数。M:尾数,23位,用小数表示,小数点放在尾数域的最前面。E:阶码,8位阶符采用隐含方式,即采用移码方式来表示正负指数。移码方法对两个指数大小的比较和对阶操作都比较方便,因为阶码域值大者其指数值也大。采用这种方式时,将浮点数的指数真值e变成阶码E时,应将指数e

加上一个固定的偏移值127(01111111),即E=e+127.IEEE754标准(64位)2.1数据与文字的表示方法---2.1.1数据格式示例:按单精度IEEE754(32位)标准格式表示十进制数-0.75-0.75表示成-3/4即二进制的-0.11在IEEE754规格化表示

为-1.1×2-1

根据IEEE单精度表示公式为(-1)S×1.M×2E-127所以这个数表示为(-1)^1*1.1*2^(126-127)=(-1)^1*(1+0.10000000000000000000000)*2^(126-127)=(-1)^1*(1+0.10000000000000000000000)*2^(126-127)即101111110100000000000000000000002.1数据与文字的表示方法---2.1.1数据格式十进制数串的表示方法:字符串形式:一个字节存放一个十进制的数位或符号位。压缩的十进制数串形式:一个字节存放两个十进制数位。123C012D2.1数据与文字的表示方法---2.1.2数的机器码表示把符号位和数字位一起编码来表示相应的数的各种表示方法。为了区别一般书写表示的数和机器中这些编码表示的数,通常将前者称为真值,后者称为机器数或机器码。定点小数原码表示法: 若定点小数的原码形式为x0x1x2…xn,原码定义:

例如,x=+0.1001,则[x]原=0.1001 x=-0.1001,则[x]原=1.1001

对于0,原码有“+0”、“-0”之分,故有两种形式:

[+0]原=0.000...0

[-0]原=1.000...0[x]原={

1>x≥0

1-x=1+|x|

0≥x>-12.1数据与文字的表示方法---2.1.2数的机器码表示定点整数原码表示法: 若定点整数的原码形式为x0x1x2…xn,原码定义:

例如,x=+1001,则[x]原=01001 x=-1001,则[x]原=11001

对于0,原码有“+0”、“-0”之分,故有两种形式:

[+0]原=0000...0

[-0]原=1000...0[x]原={

2n>x≥02n-x=2n+|x|

0≥x>-2n2.1数据与文字的表示方法---2.1.2数的机器码表示补码的概念假设现在的标准时间为

4点;表上时间:7点。两种方法:①退7-4=3格;②前拨12-3=9格。4点正减3和加9是等价的,称9是(-3)对12的补码,即:

-3=+9(mod12)作用:变减法为加法

7-3(mod12)=7+9(mod12)定点小数:包括符号位在内,其绝对值均小2:求模2补码。n位定点整数:包括符号位在内,其绝对值均小2n+1:求模2n+1补码。2.1数据与文字的表示方法---2.1.2数的机器码表示定点小数补码表示法: 若定点小数的补码形式为x0x1

…xn-1xn

,补码定义:

例如:

x=+0.1011,[x]补=0.1011

x=-0.1011,[x]补=10+x=10.0000-0.1011=1.0101对于0,补码只有一种形式:

[+0]补=[-0]补=0.00...0(mod2)[x]补={

1>x≥02+x=2-|x|

0≥x≥-12.1数据与文字的表示方法---2.1.2数的机器码表示定点整数补码表示法: 若定点整数的补码形式为xnxn-1

…x1x0,补码定义:

例如,x=+1001,则[x]补=01001 x=-1001,则[x]补=10111

对于0,补码只有一种形式:

[+0]补=[-0]补=0000...0(mod2n+1)[x]补={

2n>x≥02n+1+

x=2n+1-

|x|

0≥x≥-2n2.1数据与文字的表示方法---2.1.2数的机器码表示反码表示法所谓反码,就是二进制的各位数码0变为1,1变为0。定点小数反码表示法: 若定点小数的补码形式为x0x1

…xn-1xn

,反码定义:

例如:

x=+0.1011,[x]反=0.1011

x=-0.1011,[x]反=1.1111-0.1011=1.0100对于0,反码有“+0”、“-0”之分,故有两种形式:

[+0]反=0.00...0

[-0]反=1.11...1[x]反={

1>x≥0(2-2-n)+x

0≥x>-12.1数据与文字的表示方法---2.1.2数的机器码表示定点整数反码表示法: 若定点整数的反码形式为xnxn-1

…x1x0

,反码定义:

例如,x=+1001,则[x]反=01001 x=-1001,则[x]反=10110

对于整数0,反码有“+0”、“-0”之分,故有两种形式:

[+0]反=0000...0

[-0]反=1111...1[x]反={

2n>x≥0(2n+1-1)+x

0≥x>-2n2.1数据与文字的表示方法---2.1.2数的机器码表示反码与补码的关系比较反码与补码的公式(定点小数):

[x]反=(2-2-n)+x

[x]补=2+x 可得到[x]补=[x]反+2-n通过反码求补码:

若求一个负数的补码,其方法是符号位置1,其余各位0变1,1变0(即按位取反),然后在最末位(2-n)上加1。2.1数据与文字的表示方法---2.1.2数的机器码表示移码表示法移码通常用于表示浮点数的阶码(n位的整数)。定点整数移码表示法: 若定点整数的移码形式为xnxn-1

…x1x0

,移码定义:

[x]移=2n+

2n

>x≥-2n 例如,x=+1001,则[x]移=11001 x=-1001,则[x]移=00111

参照:x=+1001,则[x]补=01001 x=-1001,则[x]补=10111

移码和补码间存在什么关系? 对于0,移码只有一种形式:[0]移=1000...02.1数据与文字的表示方法---2.1.2数的机器码表示小结: 上述的数据四种机器表示法中,移码表示法主要用于表示浮点数的阶码。由于补码表示对加减法运算十分方便,因此目前机器中广泛采用补码表示法。在这类机器中,数用补码表示,补码存储,补码运算。也有些机器,用原码进行存储和传送,运算时改用补码。有些机器,在做加减法时用补码运算,在做乘除法时用原码运算。

2.1数据与文字的表示方法---2.1.3字符与字符串的表示方法字符的表示方法目前国际上普遍采用的字符系统是七单位的ASCII码(美国国家信息交换标准字符码),它包括10个十进制数码,26个英文字母和一定数量的专用符号,如$,%,+,=等,共128个。因此二进制编码需7位,加一位偶校验位,共8位一个字节。字符串字符串是指连续的一串字符,通常方式下,它们占用主存中连续的多个字节,每个字节存一个字符。当主存字由2个或4个字节组成时,在同一个主存字中,既可按从低位字节向高位字节的顺序存放字符串的内容,也可按从高位字节向低位字节的次序顺序存放字符串的内容。2.1数据与文字的表示方法---2.1.4汉字的表示方法汉字的输入编码

为了能直接使用西文标准键盘把汉字输入到计算机,就必须为汉字设计相应的输入编码方法。当前采用的方法主要有以下三类:数字编码:常用的是国标区位码,用数字串代表一个汉字输入。区位码是将国家标准局公布的6763个两级汉字分为94个区,每个区分94位,实际上把汉字表示成二维数组,每个汉字在数组中的下标就是区位码。区码和位码各两位十进制数字,因此输入一个汉字需按键四次。拼音码:拼音码是以汉字拼音为基础的输入方法。使用简单方便,但汉字同音字太多,输入重码率很高,同音字选择影响了输入速度。字形编码:字形编码是用汉字的形状来进行的编码。把汉字的笔划部件用字母或数字进行编码,按笔划的顺序依次输入,就能表示一个汉字。2.1数据与文字的表示方法---2.1.4汉字的表示方法汉字内码

汉字内码是用于汉字信息的存储、交换、检索等操作的机内代码,一般采用两个字节表示。英文字符的机内代码是七位的ASCII码,当用一个字节表示时,最高位为“0”。为了与英文字符能相互区别,汉字机内代码中两个字节的最高位均规定为“1”。有些系统中字节的最高位用于奇偶校验位,这种情况下用三个字节表示汉字内码。2.1数据与文字的表示方法---2.1.4汉字的表示方法汉字字模码

字模码是用点阵表示的汉字字形代码,是汉字的输出形式。汉字的输入编码、汉字内码、字模码是计算机中用于输入、内部处理、输出三种不同用途的编码,不要混为一谈。图2.1汉字的字模点阵及编码2.1数据与文字的表示方法---2.1.5校验码为了防止计算机在处理信息过程中出现错误,采用专门的逻辑线路对信号进行编码以检测错误,甚至校正错误。通常的方法是,在每个字上添加一些校验位,用来确定字中出现错误的位置。最简单且应用广泛的检错码是采用一位校验位的奇校验或偶校验。奇校验(包括校验位在内,有奇数个“1”) 设x=(x0x1…xn-1)是一个n位字,则奇校验位C定义为: C=x0⊕x1⊕…⊕xn-1

式中⊕代表按位加,当x中包含有偶数个1时,C=1。偶校验(包括校验位在内,有偶数个“1”) 设x=(x0x1…xn-1)是一个n位字,则偶校验位C定义为: C=x0⊕x1⊕…⊕xn-1

式中⊕代表按位加,当x中包含有奇数个1时,C=1。2.1数据与文字的表示方法---2.1.5校验码奇、偶校验示例 最低一位为校验位,其余高8位为数据位数据偶校验编码C奇校验编码C101010100101010000000000011111111111111110101010

001010100

100000000

001111111

111111111

010101010

101010100

000000000101111111

011111111

1

2.2定点加法减法运算---2.2.1补码加法补码加法的公式(定点小数):[x]补+[y]补=[x+y]补(mod2)前提条件:︱x︱﹤1,︱y︱﹤1,︱x+y︱﹤1。

证明(针对:x﹥0,y﹤0) ∵ [x]补=x,

[y]补=2+y∴ [x]补+[y]补=x+2+y=2+(x+y)当x+y>0: 2+(x+y)>2,进位2必丢失,又因(x+y)>0,故[x]补+[y]补=x+y=[x+y]补

(mod2)当x+y<0: 2+(x+y)<2,又因(x+y)<0,故[x]补+[y]补=2+(x+y)=[x+y]补

(mod2)2.2定点加法减法运算---2.2.1补码加法补码加法示例 [例8]x=0.1001,y=0.0101,求x+y。

[解:] [x]补0.1001

+[y]补0.0101

[x+y]补0.1110

[例9]x=+0.1011,y=-0.0101,求x+y。

[解:] [x]补0.1011

+[y]补1.1011

[x+y]补10.0110

任意两数的补码之和等于该两数之和的补码.这是补码加法的理论基础,其结论也适用于定点整数补码加法的特点,一是符号位要作为数的一部分一起参加运算,二是要在模2的意义下相加,即超过2的进位要丢掉。2.2定点加法减法运算---2.2.2补码减法补码减法的公式 [x-y]补=[x]补-[y]补=[x]补+[-y]补

证明:

只要证明[-y]补=-[y]补,上式即得证。证明如下:∵[x+y]补=[x]补+[y]补

(mod2)∴[y]补=[x+y]补-[x]补

(1)∵[x-y]补=[x+(-y)]补=[x]补+[-y]补∴[-y]补=[x-y]补-[x]补

(2) 将式(1)与(2)相加,得

[-y]补+[y]补=[x+y]补+[x-y]补-[x]补-[x]补=[x+y+x-y]补-[x]补-[x]补=[x+x]补-[x]补-[x]补=0故[-y]补=-[y]补

(mod2)

证毕

2.2定点加法减法运算---2.2.2补码减法补码减法公式另证: 当y≥0时:(-y≤0) [-y]补=2+(-y) =

2-y -[y]补=-y =

2-y

(mod2)

当y≤0时:(-y≥0)

[-y]补=

-y -[y]补=-(2+y) =2-(2+y)(mod2)

-y2.2定点加法减法运算---2.2.2补码减法从[y]补求[-y]补的法则: 对[y]补包括符号位“求反且最末位加1”,可得到[-y]补。写成运算表达式,则为: [-y]补=﹁[y]补+2-n

其中,符号﹁表示对[y]补作包括符号位在内的求反操作,+2-n表示最末位的1证明(定点小数):

[-y]补

=-[y]补

=2-[y]补 (mod2)

=2-2-n

-[y]补+2-n

(全“1”)

=﹁[y]补+2-n注:任一二进制串减等长全“1”,结果是该串的按位取反。2.2定点加法减法运算---2.2.3溢出概念与检测方法在定点小数机器中,数的表示范围为|x|<1.在运算过程中如出现大于1的现象,称为“溢出”。[例12]

x=+0.1011,y=+0.1001,求x+y。

[解:]

[x]补=0.1011[y]补=0.1001

[x]补

0.1011+[y]补

0.1001

[x+y]补

1.0100

两个正数相加的结果成为负数,这显然是错误的。[例13]

x=-0.1101,y=-0.1011,求x+y。

[解:]

[x]补=1.0011[y]补=1.0101[x]补

1.0011+[y]补

1.0101[x+y]补

0.1000

两个负数相加的结果成为正数,这同样是错误的。

2.2定点加法减法运算---2.2.3溢出概念与检测方法两个正数相加,结果大于机器所能表示的最大正数,称为上溢。两个负数相加,结果小于机器所能表示的最小负数,称为下溢。为了判断“溢出”是否发生,可采用两种检测的方法。第一种方法是采用双符号位法,这称为“变形补码”或“模4补码”,从而可使模2补码所能表示的数的范围扩大一倍。变形补码定义为:或用同余式表示为:[x]补=4+x

(mod4)变形补码的加法公式同样成立:[x]补+[y]补=[x+y]补 (mod4)

[x]补={x

2>x≥04+x

0>x≥-22.2定点加法减法运算---2.2.3溢出概念与检测方法采用变形补码后,如果两个数相加后,其结果的符号位出现“01”或“10”两种组合时,表示发生溢出。[例14]

x=+0.1100,y=+0.1000,求x+y。

[解:]

[x]补=00.1100,

[y]补=00.1000 [x]补

00.1100

+[y]补

00.1000

01.0100

两个符号位出现“01”,表示已溢出,即结果大于+1。[例15]

x=-0.1100,y=-0.1000,求x+y。 [解:]

[x]补=11.0100,

[y]补=11.1000 [x]补

11.0100

+[y]补

11.1000

10.1100

两个符号位出现“10”,表示已溢出,即结果小于-1。2.2定点加法减法运算---2.2.3溢出概念与检测方法双符号位检测法当以模4补码运算,运算结果的二符号位相异时,表示溢出;相同时,表示未溢出。故溢出逻辑表达式为:

V=Sf1⊕Sf2

其中,Sf1和Sf2分别为最高符号位和第二符号位。此逻辑表达式可用异或门实现。模4补码相加的结果,不论溢出与否,最高符号位始终指示正确的符号。2.2定点加法减法运算---2.2.3溢出概念与检测方法单符号位检测法当最高有效位产生进位而符号位无进位时,产生上溢;当最高有效位无进位而符号位有进位时,产生下溢。溢出逻辑表达式: V=Cf⊕Co,

其中Cf为符号位产生的进位,Co为最高有效位产生的进位。此逻辑表达式也可用异或门实现。在定点机中,当运算结果发生溢出时,机器通过逻辑电路自动检查出溢出,并进行中断处理。2.2定点加法减法运算---2.2.4基本的二进制加法/减法器一位二进制全加器两个二进制数字Ai,Bi和一个进位输入Ci相加,产生一个和输出Si,以及一个进位输出Ci+1。Si=Ai⊕

Bi⊕

Ci

Ci+1=AiBi+(Bi+Ai)Ci Ci+1=AiBi+(Bi⊕

Ai)Ci=AiBi·

(Bi⊕

Ai)CiFAAiBiCi

Ci+1

Si

2.3a.swf2.2定点加法减法运算---2.2.4基本的二进制加法/减法器行波进位(串行进位)补码加/减法器n个全加器级连可得n位的加法器增加减数的求补线路、溢出检测线路、及加/减方式控制线,可得串行进位补码加法/减法器An-1Bn-1An-2Bn-2A0B0S0Sn-1Sn-22.3b.swf2.2定点加法减法运算---2.2.4基本的二进制加法/减法器延时计算常见逻辑门延时:与非、或非、非:T与、或:2T异或、异或非:3T一位全加器的延时计算进位Ci+1输出稳定延时:tac=3T+1T+1T

=5T本位和Si输出稳定延时:tas=3T+3T=6T2.2定点加法减法运算---2.2.4基本的二进制加法/减法器n位串行进位补码加法/减法器延时ta为: ta=3T+3T+n·2T+3T=(2n+9)T

ta意味着加法器的输入端输入加数和被加数后,在最坏情况下加法器输出端得到稳定的求和输出所需的最长时间。无溢出检测逻辑时:

ta=3T+3T+(n-1)·2T+3T=(2n+7)T2.2定点加法减法运算---2.2.5十进制加法器十进制加法器可由BCD码(二-十进制码)来设计,它可以在二进制加法器的基础上加上适当的“校正”逻辑来实现,该校正逻辑可将二进制的“和”改变成所要求的十进制格式。n位BCD码行波式进位加法器的一般结构如图,它由n级组成,每一级将一对4位的BCD数字相加,并通过一位进位线与其相邻级连接。2.2定点加法减法运算---2.2.5十进制加法器一位BCD码加法单元图中S'i代表这样得到的4位二进制数和,C'i+1为输出进位,而Si代表正确的BCD和,Ci+1代表正确的进位。C'i+12.3定点乘法运算---2.3.1原码并行乘法原码乘法设n位被乘数和乘数用定点整数表示(定点小数也同样适用)被乘数[x]原=xf

xn-1…x1x0乘数[y]原=yf

yn-1…y1y0 则乘积为

[z]原=(xf⊕yf)×22n+(0.xn-1…x1x0)(0.yn-1…y1y0) 式中,xf为被乘数符号,yf为乘数符号。示例:2.3定点乘法运算---2.3.1原码并行乘法(不带符号的阵列乘法器

)不带符号的阵列乘法器设有两个不带符号的二进制整数:A=am-1…a1a0B=bn-1…b1b0在二进制乘法中,被乘数A与乘数B相乘,产生m+n位乘积P:P=pm+n-1…p1p0

P=AB=aibj:部分积2.3定点乘法运算---2.3.1原码并行乘法(不带符号的阵列乘法器

)m×n位不带符号的阵列乘法器逻辑图图中阵列乘法器的输入,是用m×n个“与”门并行地产生

m×n个“部分积”{aibj|0≤i≤m-1和0≤j≤n-1}2.3定点乘法运算---2.3.1原码并行乘法(不带符号的阵列乘法器

)5位×5位阵列乘法器的逻辑电路图2.3定点乘法运算---2.3.1原码并行乘法(不带符号的阵列乘法器

)延时计算乘法器要实现n位×n位时,需要n(n-1)个全加器和n2个“与”门最长的延时路径为:沿着矩阵p4垂直线和最下面一行。阵列乘法器总的延时: tm=Ta+(n-1)×Ts

+(n-1)×Tf

=T+(n-1)×6T+(n-1)×2T

=(8n-7)×T

其中:

Ta为计算部分积的与门延时;

Ts为FA本位和延时;

Tf为FA行波进位延时(假定用二级与或逻辑实现FA的进位链功能,则Tf

=2T)。2.3定点乘法运算---2.3.1原码并行乘法(带符号的阵列乘法器

)由补码还原为真值 设机器码为[x]补=x0x1x2…xn(定点小数,x0是符号位) 则:

证明:(针对x<0)|x|=-x=[-x]补

=[x]补+2-n(教材32页结论)证毕真值

x

={0.x1x2…xn

x0

=0-0.x1x2…xn+2-n

x0

=12.3定点乘法运算---2.3.1原码并行乘法(带符号的阵列乘法器

)还原法则另证(针对x<0) 设xm为真值x的第一位(右左)值为1的数码,即真值具有以下形式: x=-0.x1x2…xm-1

10…0 则 [x]反=1.x1x2…xm-1

01…1 [x]补=1.x1x2…xm-1

10…0 对[x]补采用补码还原法则得: x'=[x]补+2-n =-0.x1x2…xm-1

01…1+2-n =-0.x1x2…xm-1

10…0=x

证毕在证明过程中,得到一种更直观求补的方法:xm及其后不变,前面各位按位取反即可例如:-0.1101101000

求补1.00100110002.3定点乘法运算---2.3.1原码并行乘法(带符号的阵列乘法器

)对2求补器电路下面的求补电路即是上述扫描求补方法的一种硬件实现。逻辑表达式:逻辑电路图:C0=0,

Ci+1=ai+Ciai*=ai⊕ECi,

0≤i≤n-12.3定点乘法运算---2.3.1原码并行乘法(带符号的阵列乘法器

)带符号的阵列乘法器(符号求补阵列乘法器)

设A=anan-1…a1a0和B=bnbn-1…b1b0均为用定点表示的(n+1)位带符号整数。2n位真值乘积:

A·B=P=p2n-1…p1p0 p2n=an⊕bn P2n为符号位。

(n+1)×(n+1)位带求补器的阵列乘法器逻辑方框图2.3定点乘法运算---2.3.2补码乘法补码与真值得转换公式 设[N]补=anan-1…a1a0,这里an是符号位。补码数[N]补和真值N的关系可以表示成:

n-1

-[1+∑(1-ai)2i]当an

=1([N]补为负)时

i=0

n-1

+∑ai2i

当an

=0([N]补为正)时

i=0N=an-1an-1…a1a0 an=0-(an-1an-1…

a1a0+1)an=0{N=2.3定点乘法运算---2.3.2补码乘法 上式可进一步化简为: 统一表式为:

结论:在计算一补码对应的真值时,符号位an同其他数值位一样,有自已对应的权值,与其他位权值相比较,正好相差一负号,故称其为负权。{

n-1

+∑ai2i

当an

=0时

i=0N=

n-1

-2n+∑ai2i

当an=1时

i=0N=

n-1

an×(-2n)

+∑ai2i

i=02.3定点乘法运算---2.3.2补码乘法补码直接乘法:

[例20]

设[A]补=(01101)2,[B]补=(11011)2,求[A×B]补=?解:验:2.3定点乘法运算---2.3.2补码乘法一般化的全加器形式:对于以2类全加器:

x·(-20)+y·(-20)+z·20=

c·(-21)+s·20对于以1类全加器:

x·20+y·20+z·(-20

)

=

c·21+s·(-20)2.3定点乘法运算---2.3.2补码乘法5位乘5位的直接补码乘法矩阵的一般形式: 对应的5位乘5位的直接补码阵列乘法器逻辑原理图2.3定点乘法运算---2.3.2补码乘法直接补码阵列乘法器2.4定点除法运算---2.4.1原码除法运算原理两个原码表示的数相除时,商的符号由两数的符号按位相加求得,商的数值部分由两数的数值部分相除求得。

设有n位定点小数(定点整数也同样适用):被除数x,其原码为[x]原=xf.xn-1…x1x0除数y,其原码为[y]原=yf.yn-1…y1y0

则有商q=x/y,其原码为:[q]原=(xf⊕yf)+(0.xn-1…x1x0/0.yn-1…y1y0)2.4定点除法运算---2.4.1原码除法运算原理设被除数x=0.1001,除数y=0.1011,模仿十进制除法运算,以手算方法(即“右移上商法”)求x÷y的过程如下:得x÷y的商q=0.1101,余数为r=0.00000001。2.4定点除法运算---2.4.1原码除法运算原理恢复余数法: 事实上,机器的运算过程和人毕竟不同,人会心算,一看就知道够不够减。但机器却不会心算,必须先作减法,若余数为正,才知道够减;若余数为负,才知道不够减。不够减时必须恢复原来的余数,以便再继续往下运算。这种方法称为恢复余数法。

2.4定点除法运算---2.4.1

原码除法运算原理恢复余数法示例0.1001x-)0.1011

减y*20-0.0010r0´<0,商上0(x-y*20<0)+)0.1011

恢复余数(加y*20)0.10010r0-)0.01011

减y*2-10.001110r1=r0-y*2-1>0商上1-)0.001011

减y*2-20.0000110r2=r1-y*2-2>0商上1-)0.0001011

减y*2-3-0.0000101r3´<0,商上0(r2-y*2-3<0)+)0.0001011

恢复余数(加y*2-3)0.00001100r3-)0.00001011

减y*2-40.00000001r4=r3-y*2-4>0商上1x÷y得:商

q=

0.1101余数

r=

0.00000001

2.4定点除法运算---2.4.1原码除法运算原理加减交替法(不恢复余数法): 由于要恢复余数,使除法进行过程的步数不固定,因此控制比较复杂。实际中常用不恢复余数法,又称加减交替法。其特点是运算过程中如出现不够减,则不必恢复余数,根据余数符号,可以继续往下运算,因此步数固定,控制简单。考察上述恢复余数法示例,可得加减交替法:

x-y*20=r0´<0:

r1=r0-y*2-1=r0´+y*20-y*2-1=r0´+y*2-1

r2-y*2-3=r3´<0:

r4=r3-y*2-4=r3´+y*2-3-y*2-4=r3´+y*2-42.4定点除法运算---2.4.2并行除法器1.可控加法/减法(CAS)单元2.4定点除法运算---2.4.2并行除法器2.不恢复余数的阵列除法器x=0.x1x2x3x4x5x6

y=0.y1y2y3

q=0.q1q2q3

r=0.000

r4r5r6

n+1=42.4定点除法运算---2.4.2并行除法器关于每一行的符号位进位、商取值、控制方式P取值的说明:对于二个符号相异的补码相加,有以下特征:和为负数符号位无进位(对应商位取值0);和为正数符号位有进位(对应商位取值1);对于阵列除法器: 记第i行的部分余数为RiRi<0:符号进位0商上0(qi=0)下一行为加法运算(即P=0---第i行的进位)Ri>=0:符号进位1商上1(qi=1)下一行为减法运算(即P=1---第i行的进位)2.4定点除法运算---2.4.2并行除法器[例20]

x=0.101001,y=0.111,求x÷y。2.5定点运算器的组成---2.5.1逻辑运算计算机中的逻辑运算,主要是指逻辑非、逻辑加、逻辑乘、逻辑异四种基本运算。逻辑非运算 [例21]x1=01001011,x2=11110000,求x1

,x2 [解:]x1=10110100x2=00001111

逻辑加(逻辑或)运算

[例22]x=10100001,y=10011011,求x∨y。 [解:]

10100001x

∨10011011y

10111011z 即z=x∨y=101110112.5定点运算器的组成---2.5.1逻辑运算逻辑乘(逻辑与)运算

[例23]x=10111001,y=11110011,求x∧y。 [解:]

10111001x

∧11110011y

10110001z 即z=x∧y=10110001逻辑异(按位加)运算

[例24]x=10101011,y=11001100,求x⊕y。 [解:]

10101011x

⊕11001100y

01100111z 即z=x⊕y=011001112.5定点运算器的组成---2.5.2多功能算术/逻辑运算单元(ALU)基本思想

ALU的逻辑结构原理框图: Fi=Xi⊕Yi⊕Cn+i Cn+i+1= XiYi+YiCn+i+Cn+iXi 对于4位一片的ALU,i=0,1,2,3。n代表若干片ALU组成更大字长的运算器时每片电路的进位输入,例如当4片组成16位字长的运算器时,n=0,4,8,12。2.5定点运算器的组成---2.5.2多功能算术/逻辑运算单元(ALU)Xi,Yi与控制参数和输入量的关系ALU的某一位逻辑表达式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

AiFi=Yi⊕Xi⊕Cn+iCn+i+1=Yi+XiCn+i2.5定点运算器的组成---2.5.2多功能算术/逻辑运算单元(ALU)串行进位四位算术/逻辑运算单元Fi=Yi⊕Xi⊕Cn+iCn+i+1=Yi+XiCn+iF3F2F1F0

A3B3A2B2A1B1A0B02.5定点运算器的组成---2.5.2多功能算术/逻辑运算单元(ALU)四位片片内先行进位(并行进位)第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+Y1X2+Y0X1X2+X0X1X2Cn第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

为进位输送输出。2.5定点运算器的组成---2.5.2多功能算术/逻辑运算单元(ALU)4位算术/逻辑运算单元(ALU)--74181ALU74181ALU逻辑电路图2.5定点运算器的组成---2.5.2多功能算术/逻辑运算单元(ALU)74181ALU方框图2.5定点运算器的组成---2.5.2多功能算术/逻辑运算单元(ALU)算术逻辑运算的实现2.5定点运算器的组成---2.5.2多功能算术/逻辑运算单元(ALU)先行进位部件74182CLA的进位逻辑 假设4片(组)74181的先行进位输出依次为P0G0

P1G1P2G2P3G3,先行进位部件74182CLA所提供的进位逻辑关系如下:Cn+x=G0+P0CnCn+y=G1+P1Cn+x=G1+G0P1+P0P1CnCn+z=G2+P2Cn+y=G2+G1P2+G0P1P2+P0P1P2Cn

Cn+4=G3+P3Cn+z

=G3+G2P3+G1P1P2+G0P1P2P3+P0P1P2P3Cn

=G*+P*Cn其中 P*=P0P1P2P3 G*=G3+G2P3+G1P1P2+G0P1P2P3G*

称为成组进位发生输出,P*

称为成组进位传送输出。2.5定点运算器的组成---2.5.2多功能算术/逻辑运算单元(ALU)先行进位部件74182CLA逻辑电路图2.5定点运算器的组成---2.5.2多功能算术/逻辑运算单元(ALU)两级先行进位的ALU

使用八个74181ALU和两个74182CLA器件。对一个16位ALU来说,CLA部件构成了第二级的先行进位逻辑,即实现四个小组(位片)之间的先行进位,从而使全字长ALU的运算时间大大缩短。2.5定点运算器的组成---2.5.3内部总线根据总线所在位置,总线分为内部总线和外部总线两类。内部总线是指CPU内各部件的连线,外部总线是指系统总线,即CPU与存储器、I/O系统之间的连线。按逻辑结构来分,总线可分为单向传送总线和双向传送总线。单向总线,就是信息只能向一个方向传送。双向总线,就是信息可以分两个方向传送,既可以发送数据,也可以接收数据。2.5定点运算器的组成---2.5.3内部总线总结逻辑结构示例2.5定点运算器的组成---2.5.4定点运算器的基本结构单总线结构的运算器 所有部件都接到同一总线上,所以数据可以在任何两个寄存器之间,或者在任一个寄存器和ALU之间传送。2.5定点运算器的组成---2.5.4定点运算器的基本结构双总线结构的运算器 在这种结构中,两个操作数同时加到ALU进行运算,只需一次操作控制,而且马上就可以得到运算结果。2.5定点运算器的组成---2.5.4定点运算器的基本结构三总线结构的运算器 在三总线结构中,ALU的两个输入端分别由两条总线供给,而ALU的输出则与第三条总线相连。这样,算术逻辑操作就可以在一步的控制之内完成。2.6浮点运算方法和浮点运算器---2.6.1浮点加法、减法运算浮点加法、减法运算规则设有两个浮点数x和y,它们分别为x=2Ex·Mxy=2Ey·My

其中Ex和Ey分别为数x和y的阶码,Mx和My为数x和y的尾数。两浮点数进行加法和减法的运算规则是: x±y=(Mx2Ex-Ey±My)2Ey,Ex<=Ey完成浮点加减运算的操作过程大体分为四步:1.0操作数的检查;2.比较阶码大小并完成对阶;3.尾数进行加或减运算;4.结果规格化并进行舍入处理。2.6浮点运算方法和浮点运算器---2.6.1浮点加法、减法运算浮点加减运算的操作流程2.6浮点运算方法和浮点运算器---2.6.1浮点加法、减法运算浮点加减运算示例

[例]

设x=2010×0.11011011,y=2100×(-0.10101100), 求x+y。

[解]: 为了便于直观理解,假设两数均以补码表示,阶码采用双符号位,尾数采用单符号位,则它们的浮点表示分别为 [x]浮=00010,

0.11011011

[y]浮=00100,

1.01010100求阶差并对阶△E=Ex-Ey=[Ex]补+[-Ey]补=00010+11100=11110

即△E为-2,x的阶码小,应使Mx右移两位,Ex加2,

[x]浮=00100,0.00110110(11) 其中(11)表示Mx右移2位后移出的最低两位数。2.6浮点运算方法和浮点运算器---2.6.1浮点加法、减法运算求阶差并对阶尾数求和规格化处理

尾数运算结果的符号位与最高数值位同值,应执行左规处理,结果为1.00010101(10),阶码为00011。

舍入处理(采用0舍1入法)判溢出

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

0.00110110(11)

+1.01010100

───────────────

1.10001010(11)

1.00010101

1

───────────────

1.00010110x+y=2011×(-0.11101010)

温馨提示

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

评论

0/150

提交评论