计算机组成原理 运算方法与运算器_第1页
计算机组成原理 运算方法与运算器_第2页
计算机组成原理 运算方法与运算器_第3页
计算机组成原理 运算方法与运算器_第4页
计算机组成原理 运算方法与运算器_第5页
已阅读5页,还剩120页未读 继续免费阅读

下载本文档

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

文档简介

计算机组成原理武汉科技大学计算机科学与技术学院第二章运算方法和运算器本章内容2.1数据与文字的表示方法2.2定点加法、减法运算2.3定点乘法运算2.4定点除法运算2.5定点运算器的组成2.6浮点运算方法和浮点运算器2.1数据与文字的表示方法计算机中的数据数值数据非数值数据定点数浮点数文字语音图形图像……定点整数定点小数西文字符中文汉字计算机中常用的数据表示格式:2.1.1数据格式计算机中选择数的表示方式时考虑的因素:(1)数据类型(整数、小数、实数、复数)(2)可能遇到的数值范围(3)数值精确度

(4)数据存储和处理的硬件代价(1)定点数:容许的数值范围有限,但硬件比较简单(2)浮点数:容许的数值范围很大,但硬件比较复杂n位1位符号量值(1)纯小数表示形式:x=xnxn-1xn-2…x0

表数范围:0.000…0≤|X|≤0.111…11

即:0≤|X|≤1-2-n1.定点数的表示方法定点数:小数点位置固定由于约定在固定位置,小数点不再使用记号“.”表示n位1位符号量值(2)纯整数表示形式:x=xnxn-1xn-2…x0

表数范围:0≤|X|≤111…11

即:0≤|X|≤2n-12浮点数的表示方法

任意一个R进制数可以写成

N=Re×MR——基数,定义后不能改变,可隐含M——尾数,纯小数e——指数,纯整数,指出小数点的位置由于指数可以取不同的数值,所以,小数点的位置可在一定范围内自由浮动,故被称为浮点数计算机中浮点数的表示格式:X=2E×MM——尾数,定点小数(含数符),表示数的全部有效数字——精度E——阶码,纯整数,指示小数点的位置浮点数:小数点位置可在一定范围内移动;能扩大表数范围浮点数的表示方案:格式1:格式2:——IEEE754标准SE

M64位浮点数636252510S

E

M32位浮点数313023220其中:S—符号位,0表示正,1表示负E——阶码,移码表示的指数,E=e+127(32位)或1023(64位)即将浮点数的指数e变成阶码E时,将其加上一个固定的数值R——默认为2;M——尾数;小数点在尾数域最左有效位的右边尾数Mn-1Mn-2…M0数符Ms阶码EmEm-1……E0阶符EsIEEE754标准浮点数的规格化及其与真值的关系规格化表示——尾数非0时,约定其最高有效位为1即:尾数规格化形式:

1.M例:A=24×0.0000000010101=2-5×1.0101阶码:用移码表示,方便指数比较大小和对阶操作IEEE754标准中,规格化的浮点数x与真值的关系:32位浮点数

x=(-1)s×(1.M)×2E-127

64位浮点数

x=(-1)s×(1.M)×2E-1023阶码与尾数的位数精度:范围:尾数指数(1)当阶码E为全0且尾数M也为全0时,表示的真值x为零,结合符号位S,有正零和负零之分(2)当阶码E为全1且尾数M为全0时,表示的真值x为无穷大,结合符号位S,有+∞和-∞之分(对溢出的处理方式取决于用户)(3)一个规格化的非零和非无穷的浮点数,阶码E范围1~254(32位)和1~2046(64位),其真值为-126~+127(32位格式的8位阶码)和-1022~+1023(64位格式的11位阶码),此时有效数据分别为24位或53位,即默认23位小数或52位小数的小数点左边有一个隐含的1注意:IEEE754格式的某些位样式用来表示特殊值[例1]

若浮点数x的32位754标准存储格式为(41360000)16,求其十进制数值[解:]

将十六进制数展开后,可得二进制数格式为

41

360000

0100000100110110000000000000

0000

S阶码(8位)尾数(23位)指数e=E-127=(10000010)2-(01111111)2=00000011=(3)10

1.M=1.01101100000000000000000=1.011011所以,x=(-1)s×1.M×2e=+(1.011011)×23

=+1011.011=(11.375)10

[例2]

将十进制数数20.59375转换成IEEE754标准32位浮点数的二进制格式存储[解:]

首先转换成二进制数:

20.59375=(10100.10011)2=(1.010010011)2×24于是:S=0,E=4+127=131,M=010010011

IEEE754标准的32位浮点数的二进制存储格式为:(01000001101001001100000000000000)2=(41A4C000)16

补充:非IEEE754标准尾数的规格化一般地,浮点数规格化是指尾数M满足1/2≤|M|<1若尾数采用原码表示,尾数的最高数值位一定为1若尾数采用补码表示对于正数,M=00.1ф…ф;对于负数,有M=11.0ф…ф

(两符号位相同,且最高数值位与符号位不同)当运算结果出现下面情况时,需要规格化①M=00.0ф…ф或11.1ф…ф(最高数值位与符号位相同)说明尾数的绝对值小于1/2,应向左规格化(左移尾数,每左移一位,阶码减1)M=01.ф…ф10.ф…ф(两个符号位不同)表明尾数求和结果的绝对值大于1,应向右规格化(结果右移,尾数右移1位,阶码加1)(1).字符串形式:一个字节存放一个十进制的数位或符号位——用于非数值计算(2).

压缩的十进制数串形式:一个字节存放两个十进制的数位(值为BCD码),节省存储空间,且便于直接完成十进制数的算术运算符号位和每个数位都占半个字节;符号位放在最低数字位之后,其值选用四位编码中的冗余状态规定:数位加符号位之和必须为偶数,否则在最高数字位之前补一个0,例如+123和-12分别被表示成:123C(+123)012D(-12)3.十进制数串的表示方法2.1.2数的机器码表示无符号数的表示——所有位均表示数值;举例机器码:符号数值化后的数据编码——便于计算机中存储和运算真值:一般书写表示的数机器码的种类(以定点整数为例)(1)原码(2)补码(3)反码(4)移码原码表示法的优点:简单易懂缺点:(1)加/减法运算复杂(同号相减或异号相加时)

(2)零的原码不惟一定点整数的原码形式为xnxn-1xn-2…x0,则原码表示的定义[x]原=x2n-x=2n+|x|

0≤x<2n-2n<x≤0例: x=+1001, y=-1001

则[x]原=01001, [y]原=110011.原码表示法2.补码表示法如:以校时为例,减3和加9是等价的,即,9是(-3)对12的补码,可以用数学公式表示

-3=+9 (mod12)——数学上称为同余式

mod12是指以12为模数,这个“模”表示被丢掉的数值补码的引出——“模”和“同余”的概念“模”是指一个计量系统的计量范围,即产生“溢出”的量负数用补码表示时,可以把减法转化为加法定点整数的补码形式为xnxn-1xn-2…x0

[x]补=x2n+1+x=2n+1-|x|0≤x<2n-2n≤x≤0定义:[x]反=x

(2n+1-1)+x0≤x<2n-2n<x≤0对于定点负整数,由补码和反码的定义可知:[x]补=2n+1+x=[x]反+1

3.反码表示法反码的实现——若触发器Q端输出表示原码,则Q端就是反码对定点整数,反码表示的定义为

结论:若要求一个负数的补码,其方法是先求其反码,再在未位上加1即可由[x]原求[x]补(x<0)的简便原则:符号位保持不变;从最低位开始遇到的第一个1以前的各位(包括该位)保持不变;其余各位按位取反例:[x]原=110110100[x]补=

101001100100100求补码的方法由[x]补求[-x]补:连符号位一起各位求反,末位加1例: [x]补=1.1010101 [-x]补=0.0101011由[-X]补求[X]补规则相同将[x]补的符号位和数值位一起向右移动一次,且左补符号位例: [x]补=10101000 [x/2]补=11010100(0)称为“算术右移”如何求[x/4]补和[x/8]补吗?由[x]补求[x/2]补补码的性质:0的补码惟一便于加减运算n+1位补码所能表示的整数的范围:定点整数:MAX=2n-1,MIN=﹣2n补码与真值的关系:设一个二进制整数的补码有n+1位(含1位符号位),即[x]补=xnxn-1xn-2

…x0

则其补码表示的真值为:x=-2nxn+∑2ixi当x为正数时,xn=0,[x]补的形式:0xn-1xn-2

…x0

真值为:x=∑2ixi

当x为负数时,xn=1,[x]补的形式:1xn-1xn-2

…x0

真值为:x=-2n+∑2ixi

当x为0时,[x]补=

[+0]补=[-0]补=0结论:如果把符号位的权值当成负权,则真值是其相应补码的各位值乘以该位的权的累加和举例:[x]补=010011011,[y]补=110011011,求x,y

n-1i=0n-1i=0n-1i=0通常用于表示浮点数的阶码设定点整数e的移码形式为ekek-1ek-2…e0,其定义是

[e]移=2k+e-2k≤e<2k若阶码数值部分为5位(连同符号位6位),以e表示真值,则[e]移=25+e

-25≤e<25

例如,当正数e=+10101时,[e]移=1,10101负数e=-10101时,[x]移=25+e=25-10101=0,01011移码中的逗号表示左边一位是符号位移码中符号位ek的表示规律与原码、补码、反码相反4.移码表示法在已知补码的情况下,将符号位求反即得移码IEEE754标准浮点格式中e的移码上述数据的四种机器表示法小结:移码表示法主要用于表示浮点数的阶码由于补码表示对加减法运算十分方便,因此目前机器中广泛采用补码表示法;在这类机器中,数用补码表示,补码存储,补码运算有些机器,用原码进行存储和传送,运算时改用补码还有些机器在做加减法时用补码运算,在做乘除法时用原码运算[例6]以n+1位定点整数为例,用数轴形式说明原码、反码、补码表示范围和可能的数码组合情况[解:]设机器码形式为xnxn-1xn-2…x0补码表示中“0”只有一种形式;且负数的范围可到-2n

[例7]将十进制真值(-127,-1,0,+1,+127)列表表示成二进制数及8位的原码、反码、补码、移码[解:]真值x(十进制)真值x(二进制)[x]原[x]反[x]补[x]移-1281000000000000000-127-111111111111111100000001000000100000001-1-00000001100000011111111011111111011111110000000000000000010000000000000001111111100000000100000001+000000100000001000000010000000110000001127+111111101111111011111110111111111111111

由表中数据可知,补码值与移码值差别仅在于符号位不同

[例8]设机器字长16位,定点表示,尾数15位,数符1位,问:定点原码整数表示时,最大正数是多少?最小负数是多少?[解:]

最大正数值=(215-1)10=(+32767)10

0111111111111111

最小负数值=-(215-1)10=(-32767)10

1111111111111111[例9]假设由S,E,M三个域组成的一个32位二进制字所表示的非零规格化浮点数x,真值表示为:x=(-1)s×(1.M)×2E-128问:它所表示的规格化的最大正数、最小正数、最大负数、最小负数是多少?

[解:](1)最大正数01111111111111111111111111111111 x=[1+(1-2-23)]×2127(2)最小正数00000000000000000000000000000000

x=1.0×2-128(3)最小负数11111111111111111111111111111111

x=-[1+(1-2-23)]×2127(4)最大负数10000000000000000000000000000000x=-1.0×2-1282.1.3字符与字符串的表示方法1.字符的表示方法七位的ASCII码(美国国家信息交换标准字符码)——十进制数码、英文字母、一定数量的专用符号,共128个元素其中:可显示或打印的字符95个,其编码值为32~126

控制字符33个,其编码值为0~31和127采用7位二进制编码,加一位偶校验位,共8位表2.1七单位的ASCII码字符编码表字符串是连续的一串字符,占连续多个字节,每个字节存一个字符[例]存储字符串:

IF└┘A>B└┘THEN└┘READ(C)

IFA>BTHEN

READ(C)[解:]设主存字单元由4个字节组成按从高位字节到低位字节依次存放各字节单元依次存放十进制的73、70、32、65、62、66、32、84、72、69、78、32、82、69、65、68、40、67、41、322.字符串的表示方法1.汉字的输入编码(1)数字编码:常用的是区位码区位码——4位十进制数,前2位区码,后2位位码如“中”位于54区48位——区位码5448优点:

无重码,且输入码与内部编码的转换比较方便缺点:

代码难以记忆(2)拼音码:使用简单方便,但重码率很高(3)字形编码:按汉字的形状编码,如五笔字形码2.1.4汉字的表示方法2.汉字的内码用于汉字的存储、交换、检索等操作的机内代码用两个字节表示(两个字节的最高位均为1)如“武”字机内码为2E44H+A0A0H=CEE4H3.汉字字模码是用点阵表示的汉字字形代码,有16×16点阵,24×24点阵,32×32点阵,用于汉字的显示或打印输出字模点阵只能用来构成汉字库,而不能用于机内存储2.1.5校验码——奇偶校验设x=(x0x1…xn-1)是一个n位字奇校验位C定义为:C=x0⊕x1⊕…⊕xn-1偶校验位C定义为:C=x0⊕x1⊕…⊕xn-1注意:奇偶校验可提供奇数个错误检测,但无法检测偶数个错误,更无法识别错误信息的位置

[例10]已知5个字节数据,分别用奇校验和偶校验进行编码数据偶校验编码C奇校验编码C101010100101010000000000011111111111111110101010-01010100-00000000-01111111-11111111-10101010-01010100-00000000-01111111-11111111-01010101012.2定点加法、减法运算2.2.1补码加法任意两个数的补码之和,等于它们和的补码以定点整数为例

[x+y]补=[x]补+[y]补

(mod2n+1)两个数均用补码表示,符号位当做数值参加运算,符号位相加所产生的进位丢掉,结果为补码证明——分4种情况采用定点整数表示,因此证明的先决条件是︱x︱≤(2n-1),︱y︱≤(2n-1),︱x+y︱≤(2n-1)(1)x﹥0,y﹥0,则x+y﹥0根据补码定义,[x]补=x,[y]补=y,故

[x]补+[y]补=x+y=[x+y]补

(mod2n+1)证明——分4种情况(2)x﹥0,y﹤0,则x+y>0或x+y<0∵[x]补=x,

[y]补=2n+1+y∴[x]补+[y]补=x+2n+1+y=2n+1+(x+y) =[x+y]补(mod2n+1)

(3)x<0,y>0,则x+y>0或x+y<0同(2)(4)x<0,y<0,则x+y<0

∵[x]补=2n+1+x,

[y]补=2n+1+y

∴[x]补+[y]补=2n+1+x+2n+1+y=2n+1+(2n+1+x+y)因(x+y)是绝对值小于2n的负数,故(2n+1+x+y)一定大于2n而小于2n+1,故进位2n+1必丢失,又因(x+y)<0,所以

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

(mod2n+1)[例11]

x=+1001,y=+0101,求x+y[解:]

[x]补=01001,[y]补=00101 [x+y]补=01001+00101=01110

x+y=+1110[例12]

x=+1011,y=-0101,求x+y[解:]

[x]补=01011,[y]补=11011 [x+y]补=01011+11011=00110

x+y=+0110解:[x]补=100111,[y]补=111101[x]补=100111[y]补=111101+丢掉1100100[x]补+[y]补=100100x+y=-11100例:x=-11001,y=-00011,求x+y=?结论——补码加法的特点:(1)符号位作为数的一部分一起运算(2)在模2n+1的意义下相加,即超过2n+1的进位要丢掉[x-y]补=[x]补+[-y]补=[x]补-[y]补[-y]补称为[y]补的机器负数,由[y]补求[-y]补的过程称为将[y]补“变补”或对[y]补求补从[y]补求[-y]补的法则是:对[y]补包括符号位“求反且最末位加1”写成运算表达式为:

[-y]补=﹁[y]补+1其中符号﹁表示对[y]补作包括符号位在内的求反操作2.2.2补码减法证明:[x-y]补=[x]补+[-y]补=[x]补-[y]补只要证明[-y]补=-[y]补即可∵[x+y]补=[x]补+[y]补

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

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

(2.16)将式(2.15)与(2.16)相加,得

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

(mod2n+1)[例13]

已知x1=-1110,x2=+1101

求:[x1]补,[-x1]补,[x2]补,[-x2]补[解:]

[x1]补=10010

[-x1]补=﹁[x1]补+1=01101+1=01110

[x2]补=01101

[-x2]补=﹁[x2]补+1=10010+1=10011[例14]

x=+1101,y=+0110,求x-y[解:]

[x]补=01101

[y]补=00110,

[-y]补=11010[x]补

01101

+[-y]补

11010

[x-y]补

所以x-y=+0111丢掉1001112.2.3溢出概念与检测方法n+1位定点整数补码数的表示范围:-2n≤x<2n溢出的概念负整数正整数

+(2n-1)负溢出正溢出-2n0[例15]

x=+1011,y=+1001,求x+y[解]

[x]补=01011 [y]补=01001

[x+y]补=01011+01001=10100

[例16]x=-1101,y=-1011,求x+y[解] [x]补=10011 [y]补=10101

[x+y]补=10011+10101=01000发生错误的原因正溢出——两正数相加,结果大于所能表示的最大正数负溢出——两负数相加,结果小于所能表示的最小负数双符号位补码:也称“变形补码”或“模2n+2补码”(对定点整数)变形补码可使模2n+1补码表数的范围扩大一倍判断“溢出”的方法——变形补码法;单符号位法单符号位法——最高有效位产生进位而符号位无进位时,产生正溢;最高有效位无进位而符号位有进位时,产生负溢故溢出逻辑表达式为V=CfCn

结论:1.溢出——运算结果的二符号位相异,逻辑表达式为V=Sf1⊕Sf2Sf1Sf2=01——正溢;Sf1Sf2=10——负溢2.不论溢出与否,最高符号位Sf1始终指示正确的符号定点整数的变形补码的模为2n+2,

用同余式表示为:

[x]补=2n+2+x(mod2n+2)对于正数,两个符号位都是0;负数,两个符号位都是1对于变形补码,同样有

[x]补+[y]补=[x+y]补(mod2n+2)运算过程中注意:两个符号位都看作数码参加运算;丢掉最高符号位上产生的进位变形补码溢出判断[例17]

x=+1100,y=+1000,求x+y[解:]

[x]补=001100,

[y]补=001000[x]补

001100+[y]补

001000

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

x=-1100,y=-1000,求x+y[解:]

[x]补=110100,

[y]补=111000[x]补

110100+[y]补

111000

101100两个符号位出现“10”,表示已溢出,即结果小于-16变形补码法举例[例17]Bx=+1100,y=+1000,求x+y[解:]

[x]补=01100,

[y]补=01000[x]补

01100+[y]补

01000

10100[例18]B

x=-1100,y=-1000,求x+y[解:]

[x]补=10100,

[y]补=11000[x]补

10100+[y]补

11000

01100Cf=0Cn=1Cf⊕Cn=1,溢出Cf⊕Cn=1,溢出Cf=1Cn=0单符号位法举例2.2.4基本的二进制加法/减法器输入:Ai、Bi、Ci输出:Si、Ci+1一位全加器真值表

Si=Ai⊕Bi⊕CiCi+1=AiBi+BiCi+CiAi=AiBi+(Ai⊕

Bi)

Ci输入输出AiBiCiSiCi+100000001100101001101100101010111001111111、一位全加器FAAiBiCiCi+1Si2、n位二进制加/减法器设5位二进制数[A]补=A4A3A2A1A0[B]补=B4B3B2B1B0两数相加,则为[S]补=[A]补+[B]补=C5S4S3S2S1S0而[-B]补=﹁[B]补+1两数相减,则为[S]补=[A]补-[B]补=[A]补+[-B]补=[A]补+[-B]补[A]补=A4A3A2A1A0C5S4S3S2S1S0[-B]补=B4B3B2B1B01+[A]补=A4A3A2A1A0[B]补=B4B3B2B1B0C5S4S3S2S1S0+2.2.4基本的二进制加法/减法器n位补码运算的二进制加法/减法器的逻辑结构图——工作原理延迟时间分析设:一个“与”门/“或”门的延迟时间为T,一个异或门的延迟时间为3T,则:一位FA的Si时间延迟为6TCi+1的传输时间延迟为2Tn位行波进位加法器的时间延迟为

ta=n·2T+9T=(2n+9)Tn位行波进位加法器的延迟时间行波进位的补码加/减法器结构2.3定点乘法运算2.3.1原码并行乘法1.人工算法与机器算法的同异性运算规则:乘积的符号位、数值部分设n位被乘数和乘数用是用原码表示的定点数被乘数[x]原=xf

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

yn-1…y1y0则乘积[z]原=(xf⊕yf)+(xn-1…x1x0)(yn-1…y1y0)设x=1101,y=1011,数值部分运算过程分析早期——采用串行的1位乘法,即多次执行“加法—移位”操作简单,但太慢;目前使用流水式阵列乘法器(并行)对于计算机而言,不同之处在于:1.机器字长为n位,两个n位数相乘,乘积可能为2n位2.只有两个操作数加法器不能将n个位积一次相加设A、B是两个不带符号的二进制整数:

A=am-1…a1a0

m位

B=bn-1…b1b0

n位数值分别为a和b,即

m-1

n-1

a

=∑ai2i

b

=∑bj2j

i=0

j=0被乘数A与乘数B相乘,产生m+n位乘积P:

P=pm+n-1…p1p0m+

n位乘积P

的数值为2.不带符号的阵列乘法器m位n位二进制数的计算过程a4a3a2a1a0b4b3b2b1b0a4b1a3b1a2b1a1b1a0b1a4b0a3b0a2b0a1b0a0b0a4b2a3b2a2b2a1b2a0b2a4b3a3b3a2b3a1b3a0b3a4b4a3b4a2b4a1b4a0b4p9p8p7p6p5p4p3p2p1p0×=A=B=P以m=n=5为例延迟时间电路中,

{aibj|0≤i≤m-1和0≤j≤n-1}可用

“与”门并行产生n位×n位的乘法器——需要n(n-1)个全加器和n2个“与”门设Ta为“与门”的传输延迟时间,Tf为FA的进位传输延迟假定用2级“与或”逻辑实现FA的进位链,则Ta

=T,Tf

=2T

n位×n位不带符号的阵列乘法器总的乘法时间为:tm=Ta+(n-1)×6T+(n-1)×Tf+3T

=T+(n-1)×6T+(n-1)×2T+3T=(8n-4)T

5位×5位不带符号阵列乘法器[例16]已知两个不带符号的二进制整数A

=11011,B

=10101,求每一部分乘积项aibj的值与p9p8……p0的值[解:]P=p9p8p7p6p5p4p3p2p1p0=512+32+16+7=1000110111(56710)a4b0=1

a3b0=1

a2b0=0

a1b0=1a0b0=1a4b1=0a3b1=0

a2b1=0a1b1=0a0b1=0a4b2=1

a3b2=1

a2b2=0

a1b2=1a0b2=1a4b4=1

a3b4=1a2b4=0

a1b4=1a0b4=1a4b3=0

a3b3=0

a2b3=0

a1b3=0

a0b3=0有符号数乘法的实现方法一是将补码转成原码再用无符号数乘法器方案二是设计一种直接用补码进行乘法运算的新型乘法器对2求补电路——可将补码表示的带符号数转换成绝对值

0≤i≤n-13.带符号的阵列乘法器按位扫描技术求(n+1)位补码表示的带符号数A=anan-1…a1a0的绝对值利用符号位来作为控制信号E例,在5位有符号数11010,对2求补器中,E=1,a3a0输入为1010,输出a3*

a0*是0110转换一个(n+1)位带符号数,所需的总时间延迟为

tTC=(n-1)·Ta+Ta+Td=n·Ta+Td其中Ta是一个与门/一个或门的延迟时间,Td是异或门延迟时间(n+1)×(n+1)位带求补器的阵列乘法器逻辑方框图(2)带符号的阵列乘法器带求补级的阵列乘法器三个求补器的作用设A=anan-1…a1a0和B=bnbn-1…b1b0均为用定点表示的(n+1)位带符号整数。在必要的求补操作后,用n×n位不带符号的阵列乘法器产生2n位真值乘积: A·B=P=p2n-1…p1p0 p2n=an⊕bn其中P2n为符号位带求补级的阵列乘法器既适用于原码乘法,也适用于间接的补码乘法;但间接的补码乘法时间大约比原码乘法增加1倍[例20]设x=+15,y=-13,用带求补器的原码阵列乘法器求x·y[解:]

设最高位为符号位,则输入数据为

[x]补=01111

[y]补=10011

符号位单独考虑,算前求补级后|x|=1111;|y|=1101

验证:符号位:0⊕1=1算后求补结果:100111101换算成真值是x·y =(-11000011)2=-(128+64+3)=(-195)10

[例21]设x=-15,y=-13,用带求补器的原码阵列乘法器x·y[解:]

设最高位为符号位,则输入数据为

[x]补=10001

[y]补=10011符号位单独考虑,算前求补级后|x|=1111;|y|=1101

验证:乘积的真值是x·y =(11000011)2=(195)10符号位:1⊕1=0算后求补结果:0

110000112.3.2直接补码并行乘法1.补码与真值的转换公式

计算补码真值的方法——使其符号位带负权设定点整数的补码:[N]补=anan-1…a1a0,其中an是符号位补码数[N]补和真值N的关系可以表示成:直接补码乘法——符号位参与运算,不需要求补级;快速把负权-2n强加到符号位an上,则真值N为:[例22]已知[N1]补=(01101)2,[N2]补=(10011)2,求[N1]补,[N2]补的数值[解:]

[N1]补=(01101)2

具有的数值为:N1=-0×24+1×23+1×22+0×21+1×20=(+13)10[N2]补=(10011)2具有的数值为:N2=-1×24+0×23+0×22+1×21+1×20=(-13)10对于0类、3类全加器:S=XYZ+XYZ+XYZ+XYZC=XY+YZ+ZX对于1类、2类全加器:S=XYZ+XYZ+XYZ+XYZC=XY+XZ+YZ*2.一般化的全加器形式全加器根据输入端负权的数量可分为四类——0类、1类、2类、3类常规的一位全加器可假定3个输入和2个输出都是正权利用混合型全加器构成直接补码数阵列乘法器设被乘数A和乘数B是两个5位的二进制补码数:A=(a4)a3a2a1a0B=(b4)b3b2b1b0带负权的符号位a4和b4用括号标注下面用括号来标注负的被加项,则有:

(a4)a3

a2

a1

a0=A

×)(b4)b3

b2

b1

b0=B

(a4b0)a3b0

a2b0

a1b0

a0b0

(a4b1)a3b1

a2b1

a1b1

a0b1

(a4b2)

a3b2

a2b2

a1b2

a0b2

(a4b3)

a3b3

a2b3a1b3

a0b3

+a4b4

(a3b4)(a2b4)(a1b4)(a0b4)________________________________

(p9)p8

p7

p6

p5

p4

p3

p2

p1

p0=P

*3.直接补码阵列乘法器5位乘5位的直接补码阵列乘法器逻辑原理1000a0b0a2b0a1b0a4b0a3b0a0b1a1b1a2b1a3b1100a0b2a1b2a2b2a3b2110a1b3a2b3a3b311a1b4a2b4a3b422222222a4b4a4b3a4b2a4b1a0b3a0b400000p0p1p2p3p4p5(p9)p8p7p65位乘5位的情况下需要6个0类全加器(右上角)6个1类全加器(左上角)8个2类全加器(最下两行)总数仍为5*4=20个2类和1类FA具有同样的结构但使用不同的逻辑符号[解:]

(0)1

1

0

1=+13

×)

(1)1

0

1

1=-5

(0)1

1

0

1

(0)11

0

1

(0)0

0

0

0

(0)1

1

0

1

0(1)(1)(0)(1)___________________

0(1)0

1

11111=-65=-1×27+1×25+1×24+1×23+1×22+1×21+1×20若用10位二进制数表示结果,则为(1)110111111=-1×29+28+27+25+24+23+22+21+20=-65

(13)×(-5)=-65[例]

设[A]补=(01101)2,[B]补=(11011)2,求[A×B]补=?2.4定点除法运算设有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) ——商的符号qf=xf⊕yf;数值部分是两个正数求商2.4.1原码除法算法原理设被除数x=0.1001,除数y=0.1011,手算求x÷y

0.1101

商q

0.10110.10010

x(r0),被除数小于除数,上0

-0.01011

2-1y除数右移1位,减除数,上1

0.001110

r1得余数r1

-0.0

01011

2-2y除数右移1位,减除数,上1

0.0000110

r2得余数r2

-0.0

000000

2-3y除数右移1位,不减除数,上0

0.00001100

r3

得余数r3

-0.0

0001011

2-4y除数右移1位,减除数,上1

0.00000001

r4得余数r4得x÷y的商q=0.1101,余数为r=0.00000001

0.1101

商q

0.10110.1001

x(r0)<y,上0

1.00102x(r0)被除数左移1位

+1.0101

减y,加上[-y]补,上1

0.0111

r1得余数r1

0.1110

2r1

r1左移1位

+1.0101

减y,加上[-y]补,上1

0.0011

r2得余数r2 0.0110

2r2

r2左移1位

+0.0000

因2r2小于y,上00.0110r3得余数r3

0.1100

2

r3r3左移1位,

+1.0101

减y,加上[-y]补,上1

0.0001

r4得余数r4商q=0.1101,余数为r=r4×2-4=0.0001×2-4=0.00000001例:设x=0.1001,y=0.1011,则[-y]补=1.0101,求x÷y计算机实现时处理方法的改进:将“被除数和余数不动,除数右移(相当于除2)”改为:除数不动(小数点固定),被除数和余数左移(相当于乘2),并将上商和余数左移结合起来具体算法:

恢复余数法加减交替法

0.1001x+[-y]补

1.0101

减y,加上[-y]补

1.11100

余数r1<0,所以商上0+y

0.1011

r1

+y,恢复为被除数

0.10011.0010余数和商左移一位+[-y]补

1.0101

2r1

y,0.01111

余数r2>0,商上1

0.1110

余数和商左移一位+[-y]补

1.0101

2r2

y,

0.00111

余数r3>0,商上1

0.0110余数和商左移一位+[-y]补

1.0101

2r3-

y,1.10110

余数r4<0,商上0+y

0.1011

r4

+y,恢复余数

0.0110

0.1100余数和商左移一位+[-y]补

1.0101

2r4

y,

0.00011

余数r5>0,商上1缺点:运算步数不确定恢复余数法01101规则:(1)首先进行减法操作(2)根据余数的符号确定具体操作及商的值:若余数为正,说明够减,商上1若余数为负,说明不够减,商上0,再加上除数(恢复余数)(3)余数和商左移,重复进行分析恢复余数法——第i+1步的余数ri+1由前一步的余数ri(初值r0=x)得到:若ri>0,商上1,左移一位(即乘2)减y得ri+1,即:ri+1=2ri-y若ri<0,商上0,并恢复余数(即加y),然后左移一位再做减y的运算,即:ri+1=2(ri+y)-y=2ri

+y加减交替法ri若为负,不必恢复余数,将ri左移一位(乘2)再加上除数y即可直接得ri+1,再由ri+1的正负决定商的值由此可得加减交替法的运算规则:

当余数为正时,商上“1”,下一步:余数左移一位,减除数当余数为负时,商上“0”,下一步:余数左移一位,加除数

0.1001x+[-y]补

1.0101

减y,即加上[-y]补

1.11100

余数r1<0,所以上0

1.11000余数左移一位后加除数y+y

0.1011

2r1

+y

0.0111

1余数r2>0,上1

0.111001余数和商左移一位后减y+[-y]补

1.0101

2r2

y

0.0011

1余数r3>0,上1

0.0110011余数和商左移一位减y+[-y]补

1.0101

2r3

y1.10110

余数r4<0,上01.01100110余数和商左移一位加y+y

0.1011

2r4

+y

0.0001

1余数r5>0,上1

01101——商;2-4×0.0001——余数加减交替法实例:x=0.1001,y=0.1011,[-y]补=1.01012.4.2并行除法器(以不恢复余数阵列除法器为例)加减交替法——用可控的加/减法单元(CAS)构成1.可控加法/减法单元——用于并行除法流水逻辑阵列有四个输入端Ai、Bi、P、Ci和四个输出端Si、

Ci+1、Bi、P

加减控制线P=0,CAS作加法运算;P=1作减法运算

CAS单元的输入与输出的关系:

Si=Ai⊕(Bi⊕P)⊕CiCi+1=(Ai+Ci)·(Bi⊕P)+AiCi

P=0时, Si=Ai⊕Bi⊕Ci(做加法) Ci+1=AiBi+BiCi+AiCi

P=1时, Si

=Ai⊕Bi⊕Ci

其中Bi=Bi⊕1

(做减法) Ci+1=AiBi+BiCi+AiCiSi=Ai⊕(Bi⊕P)⊕CiCi+1=(Ai+Ci)·(Bi⊕P)+AiCi可控加法/减法单元(CAS)逻辑图

CAS单元的输出方程:

Si=Ai⊕(Bi⊕P)⊕Ci

=AiBiCiP+AiBiCiP+AiBiCiP+AiBiCiP+AiBiCiP+AiBiCiP+AiBiCiP+AiBiCiP

Ci+1=(Ai+Ci)(Bi⊕P)+AiCi

=AiBiP+AiBiP+BiCiP+BiCiP+AiCi

Si和Ci+1都能用三级组合逻辑电路实现——每个基本CAS单元的延迟时间为3TCAS单元的延迟时间分析思路:每行执行加法还是减法操作,取决于前一行输出的符号与被除数的符号是否一致不够减时,部分余数相对于被除数要改变符号,商上“0”,除数沿对角线右移,加(P=0)到下一行的部分余数上

部分余数不改变符号时,商上“1”,下一行执行减法(P=1)举例——6位除以3位的不恢复余数阵列除法器逻辑原理图假定所有被处理的数都是正的小数被除数x=0.x1x2x3x4x5x6(双倍长)

除数y=0.y1y2y3

商数q=0.q1q2q3

余数r=0.00r3r4r5r62.不恢复余数(加减交替)的阵列除法器1

P=1时减y即加[-y]补也就是加上﹁y+1,yi右移作为下一次操作数(b)6位除以3位阵列除法器逻辑结构图说明:被除数x是6位的小数(双倍长度值):

x=0.x1x2x3x4x5x6

由顶部一行和最右边的对角线上的垂直输入线提供除数y是3位的小数:y=0.y1y2y3沿对角线进入(用“余数保持固定,除数沿对角线右移”)商q是3位的小数:q=0.q1q2q3

,在阵列的左边产生余数r是6位的小数:r=0.00r3r4r5r6

,在阵列的最下一行单元之间互连用n=3的阵列表示说明:初始操作经常是减法,故最上面一行的控制线P固定为“1”减法——用2的补码实现,右端各CAS单元上的反馈线用作初始的进位输入;每一行最左边的单元的进位输出决定商的数值;当前的商反馈到下一行确定下一行的操作(加法还是减法)运算时,沿着每一行都有进位(或借位)传播,且所有行在进位链上都是串行连接,每个CAS单元的延迟时间为3T,因此,对一个2n位除以n位的不恢复余数阵列除法器来说,单元的数量为(n+1)2,考虑最大情况下的信号延迟,除法执行时间为 td=3(n+1)2T其中n为尾数位数[例23]x=0.101001,y=0.111,求x÷y[解:]

[y]补=0.111

[-y]补=1.001被除数x

0.101001

+[-y]补

1.001

余数为负1.110001<0

q0=0

+2-1[y]补

0.0111

余数为正0.001101>0

q1=1

+2-2[-y]补

1.11001

余数为负1.111111<0

q2=0

+2-3[y]补

0.000111

余数为正0.000110>0

q3=1故得商q=q0.q1q2q3=0.101余数r=(0.00r3r4r5r6)=0.000110用CAS构成的阵列除法器实现0.101001÷0.111

[y]补=0.111

[-y]补=1.001

0101001

0101

+[-y]补

1001

最高位无进位1110q0=0,下次做加法

+[y]补

0111

最高位有进位0011

q1=1,下次减法

+[-y]补

1001

最高位无进位1111

q2=0,下次加法

+[y]补

0111

最高位有进位0110

q3=1故得商q=q0.q1q2q3=0.101

余数r=0.1102-3=0.0001100012.5定点运算器的组成2.5.1逻辑运算

逻辑运算——逻辑非、逻辑加、逻辑乘、逻辑异1

温馨提示

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

评论

0/150

提交评论