第2章 运算方法和运算器.ppt
第2章 运算方法和运算器,2023年11月1日星期三,2,目录,2.0 数据的类型2.1 数据与文字的表示方法(掌握)2.2 定点加法、减法运算(掌握)2.3 定点乘法运算(了解)2.4 定点除法运算(了解)2.5 定点运算器的组成(了解)2.6 浮点运算方法和浮点运算器(掌握),2023年11月1日星期三,3,学习要求,掌握定点和浮点数的表示方法,表示范围;掌握定点数的补码加减法,以及溢出判断方法;了解定点数常用的乘除法运算方法;掌握浮点数的加减运算方法;了解常用的数据校验方法;清楚运算器部件的组成结构及设计方法。,2023年11月1日星期三,4,2.0 数据的类型(1/2),按数制分:十进制:在微机中直接运算困难;二进制:占存储空间少,硬件上易于实现,易于运算;十六进制:方便观察和使用;按数据格式分:真值:没有经过编码的直观数据表示方式;带正负号的数据,任何数制均可;机器数:符号化后的数值表示;符号也被编码,不能随便忽略任何位置上的0或1;位数固定,一般为字节整倍数,如8位、16位、32位;可用原码、反码、补码、移码等形式编码;,2023年11月1日星期三,5,2.0 数据的类型(2/2),按数据的表示范围分:定点数小数点位置固定,数据表示范围小;浮点数小数点位置不固定,数据表示范围较大。按能否表示负数分:无符号数数据所有位均为表示数值,只能表示正数;有符号数有正负之分,最高位为符号位,其余位表示数值。,2023年11月1日星期三,6,2.1 数据与文字的表示方法,2.1.1 数据格式(定点数表示)2.1.2 数的机器码表示2.1.1 数据格式(浮点数表示)2.1.3 字符与字符串的表示方法2.1.4 汉字的表示方法2.1.5 校验码,2023年11月1日星期三,7,定点数:小数点固定在某一位置的数据;纯小数:表示形式 有符号数 x=xSx-1x-2x-n|x|1-2-n;xs为符号位无符号数 x=x0 x-1x-2x-n 0 x 1-2-n;x0=0数据表示范围 0.00=0|x|1-2-n=0.11纯整数:表示形式 有符号数 x=xs x n-1 x 1 x 0|x|2n-1;xs为符号位 无符号数 x=xn x n-1 x 1 x 0 0 x2n+1-1;xn为数值位注意:小数点的位置是机器约定好的,并没有实际的保存。,x0 x-1x-2x-3 x-n,xnxn-1xn-2x1x0,2.1.1 数据格式定点数,设采用n+1位数据,2023年11月1日星期三,8,定点机的特点,所能表示的数据范围小运算精度较低存储单元利用率低,2023年11月1日星期三,9,2.1.2 数的机器码表示,重点:1、原码、补码、移码的表示形式2、补码的定义3、原码、补码、移码的表示范围,2023年11月1日星期三,10,1、原码表示法定义,定义:定点小数:x原定点整数:x原举例:+0.110 原 0.110-0.110原 1-(-0.110)=1.110+110原 0110-110原 23-(-110)1000+110=1110,x1 x 0,1-x=1+|x|0 x-1,x2n x 0,2n-x=2n+|x|0 x-2n,实际机器中保存时并不保存小数点,2023年11月1日星期三,11,1、原码表示法特点,0有两种表示法+0原=0000;-0原=1000数据表示范围定点小数:-1X1定点整数:-2nX2n(若数值位n=3,即:-8X8)优点与真值对应关系简单;缺点参与运算复杂,需要将数值位与符号位分开考虑。,2023年11月1日星期三,12,2、补码表示法定义,定义:定点小数:x补定点整数:x补举例:+0.110 补 0.110-0.110 补 10+(-0.110)=1.010+110补 0110-110 补 24+(-110)10000-110=1010,x 1 x 0,2+x=2-|x|0 x-1,x 2n x 0,2n+1+x=2n+1-|x|0 x-2n,x为n+1位,(mod 2),(mod 2n+1),实际机器中保存时并不保存小数点,2023年11月1日星期三,13,2、补码表示法特点,0有唯一的表示法-0补 24+(-0)mod 24 0000+0补数据表示范围定点小数:-1X1定点整数:-2nX2n(若数值位n=3,则-8X8)加减运算规则XY补X补 Y补(mod 2)/(mod 2n+1)只要结果不溢出,可将补码符号位与数值位一起参与运算。x补补x原补码除2操作,可通过算术右移实现-0.0110补11010,则(-0.0110)/10补=11101,真值为-0.0011,比原码多一个负的最小值表示,其编码为1000,2023年11月1日星期三,14,由原码求补码,由原码求补码的简便原则(负数)除符号位以外,其余各位按位取反,末位加1;除符号位以外,从最低位开始,遇到的第一个1以前的各位保持不变,之后各位取反。,例:X原=1 1 0 1 1 0 1 0 0,X补=,1 0 1 0 0 1,1 0 0,2023年11月1日星期三,15,由X补求-X补连同符号位的所有位一起取反,末位加1;例:X=-0.010 1011X补=1.101 0101;-X补=0.010 1011;即:,由-X补求X补,此规则同样适用。,求相反数的补码,X补=1 1 0 1 0 1 0 1,0 0 1 0 1 0 1 0,+,1,-X补=0 0 1 0 1 0 1 1,2023年11月1日星期三,16,3、移码表示法,移码通常用于表示浮点数的阶码用定点整数形式的移码定义:x移=2n+x2n x-2n与x补的区别:符号位相反优点:可以比较直观地判断两个数据的大小;浮点数运算时,容易进行对阶操作;表示浮点数阶码时,容易判断是否下溢;当阶码为全0时,浮点数下溢。,4位补码与移码,0000,0001,0010,1000,1001,1111,1000,1001,1010,0000,0001,0111,2023年11月1日星期三,17,原、补、移码的编码形式,原码和补码正数:原、补码的编码完全相同;负数:符号位为1;数值部分与原码各位相反,且末位加1;补码和移码无论正数还是负数:符号位相反,数值位相同;,2023年11月1日星期三,18,课本P22例6以定点整数为例,用数轴形式说明原码、补码、移码表示范围和可能的数位组合情况。,2023年11月1日星期三,19,课本P22例7将十进制真值(127,1,0,1,127)列表表示成二进制数及原码、反码、补码、移码值。,-111 1111,1111 1111,1000 0000,1000 0001,0000 0001,-000 0001,1000 0001,1111 1110,1111 1111,0111 1111,+000 0000,-000 0000,0000 0000,0000 0000,1000 0000,1111 1111,0000 0000,1000 0000,+000 0001,0000 0001,0000 0001,0000 0001,1000 0001,+111 1111,0111 1111,0111 1111,0111 1111,1111 1111,2023年11月1日星期三,20,P22例8设机器字长16位,定点表示,数值15位,数符1位,问:(1)定点原码整数表示时,最大正数是多少?最小负数是多少?(2)定点原码小数表示时,最大正数是多少?最小负数是多少?,(215-1)=+32767,-(215-1)=-32767,(1-2-15)=+(1-1/32768),-(1-2-15)=-(1-1/32768),定点原码整数最大正数最小负数定点原码小数最大正数最小负数,若用补码表示呢?最小正数、最大负数各是多少呢?,2023年11月1日星期三,21,2.1.1 数据格式浮点数,浮点数:小数点位置可变,形如科学计数法中的数据表示。浮点数格式定义:N=Re MM:尾数(mantissa),是一个纯小数,表示数据的全部有效数位,其位数决定着数值的精度;R:基数(radix),可以取2、8、10、16,表示当前的数制;微机中,一般默认为2,隐含表示。e:阶码(exponent),是一个整数,用于指出小数点在该数中的位置,其位数决定着数据的取值范围。机器数的一般表示形式,课本P17,2023年11月1日星期三,22,科学计数法的表示,一个十进制数可以表示成不同的形式:同理,一个二进制数也可以有多种表示:,2023年11月1日星期三,23,浮点数举例,请将数据-12.625D用16位的浮点数形式表示。数据格式如下,阶码(含阶符)4位,尾数(含数符)12位-12.625D=-1100.101 B=-0.1100 10124 B设尾数用原码表示,阶码用补码表示;浮点数表示为:0 100;1.110 0101 0000设尾数用补码表示,阶码用移码表示;浮点数表示为:1 100;1.001 1011 0000,2023年11月1日星期三,24,浮点数规格化,浮点数的表示1.1120=0.11121=0.0011123规格化的目的保证浮点数表示的唯一性;保留更多地有效数字,提高运算的精度。规格化要求|尾数|0.5;规格化处理:尾数向左移n位(小数点右移),同时阶码减n;尾数向右移n位(小数点左移),同时阶码加n。,右规,左规,2023年11月1日星期三,25,浮点数的规格化,尾数用原码表示时尾数最高数值位为1;尾数形如0.1(正);或1.1(负);例如,0.01125要规格化则变为0.1124;0.01125要规格化则变为1.1124;尾数用补码表示时尾数最高数值位和尾数符号位相反;尾数形如0.1(正);或1.0(负)例如,0.01125要规格化,则变为0.1124;0.01125要规格化,则变为1.0124;,2023年11月1日星期三,26,浮点数的数据表示范围,0,最大负数,最小正数,最小负数,最大正数,下溢区,上溢区,上溢区,负数区,正数区,浮点数的溢出:阶码溢出上溢:阶码大于所能表示的最大值;下溢:阶码小于所能表示的最小值;机器零:尾数为 0,或阶码小于所能表示的最小值;,2023年11月1日星期三,27,浮点数的最值,设浮点数格式为,移码表示-2m,+(2m-1),补码表示-1,+(1-2-n),-12+(2m-1),-2-n2-2m,+2-n2-2m,+(1-2-n)2+(2m-1),1 111;1 0000,0 000;1 1111,0 000;0 0001,1 111;0 1111,同左,同左,0 000;1 0111,-(2-1+2-n)2-2m,+2-12-2m,同左,同左,0 000;0 1000,2023年11月1日星期三,28,【例1】设浮点数的阶码6位(含符号位),尾数为10位(含符号位),阶码采用补码表示,尾数采用原码表示,分析其浮点数表示范围。,最大正数最大正数为0.11120111 即(129)231该浮点数即为规格化数形式;,2023年11月1日星期三,29,【例1】设浮点数的阶码6位(含符号位),尾数为10位(含符号位),阶码采用补码表示,尾数采用原码表示,分析其浮点数表示范围。,最小正数非规格化数形式最小正数为0.0012100即29 2(25)=29 2-32规格化数形式最小正数为0.12100 21 2(25)233,2023年11月1日星期三,30,【例1】设浮点数的阶码6位(含符号位),尾数为10位(含符号位),阶码采用补码表示,尾数采用原码表示,分析其浮点数表示范围。,最小负数最小负数为0.112011即(129)2(251)=(129)231该浮点数即为规格化数形式;,2023年11月1日星期三,31,【例1】设浮点数的阶码6位(含符号位),尾数为10位(含符号位),阶码采用补码表示,尾数采用原码表示,分析其浮点数表示范围。,最大负数非规格化数形式最大负数为0.0012100即 29 2(25)=29 2-32规格化数形式最大负数为0.12100即 21 2(25)=2-1 232,2023年11月1日星期三,32,【例2】设浮点数的阶码6位(含符号位),尾数为10位(含符号位),阶码和尾数均采用补码表示,分析其规格化浮点数表示范围。,最大正数阶码最大、尾数最大最大正数为0.1112111(129)231最小正数 最小正数为0.1000232 即2-3221 2-33注意:不是 规格化数据,2023年11月1日星期三,33,【例2】设浮点数的阶码6位(含符号位),尾数为10位(含符号位),阶码和尾数均采用补码表示,分析其规格化浮点数表示范围。,最小的负数最小负数为1.000231即231(1)=231最大的负数最大负数为0.1001232 即(29+21)232,2023年11月1日星期三,34,浮点数的IEEE754标准表示,IEEE(Institute of Electrical and Electronics Engineers)美国电气及电子工程师学会IEEE是一家总部在美国的工程技术和电子专家的组织;IEEE致力于电气、电子、计算机工程和与科学有关的领域的开发和研究,也是计算机网络标准的主要制定者。为便于软件移植,按照 IEEE754 标准,实际机器内32位浮点数和64位浮点数的标准格式如下:,0,22,23,30,31,23位尾数,仅为数值部分,8位阶码,包括阶符,1位数符,32位浮点数,0,51,52,62,63,64位浮点数,高级语言中的float类型,高级语言中的double类型,2023年11月1日星期三,35,32位浮点数的IEEE754 标准表示,数符S:表示浮点数的符号,占1位,0正数、1负数;尾数M:23位,原码纯小数表示,小数点在尾数域的最前面;由于原码表示的规格化浮点数要求,最高数值位始终为1,因此该标准中隐藏最高数值位(1),尾数的实际值为1.M;阶码E:8位,采用有偏移值的移码表示;移127码,即E=e+127,E的8位二进制数即为移127码的编码;浮点数的真值:N=(-1)S(1.M)2E-127,2023年11月1日星期三,36,IEEE754 标准格式(64位格式),其真值表示为:x=(1)S(1.M)2E1023 eE1023,2023年11月1日星期三,37,IEEE754 标准的数据表示,IEEE754 标准中的阶码E正零、负零E与M均为零,正负之分由数据符号确定;正无穷、负无穷E为全1,M为全零,正负之分由数据符号确定;阶码E的其余值(0000 00011111 1110)为规格化数据;真正的指数e的范围为-126+127为避免浮点数下溢,允许采用比最小规格化数还小的非规格化数来表示,但此时尾数M前的隐含位为0,而不是1。,E=0000 0000,M=0000 0000,E=1111 1111,M=0000 0000,0000 0000 1111 1111,2023年11月1日星期三,38,课本P18 例1,例1 若浮点数的754标准存储格式为(41360000)16,求其浮点数的十进制数值。解:(41360000)16=0100 0001 0011 0110 0000 0000 0000 0000指数e=E-127=1000 0010 0111 1111=0000 0011=3尾数1.M=1.011 0110 0000 0000 0000 0000=1.011011浮点数 N=(-1)S(1.M)2e=(-1)0(1.011011)23=(11.375)10,数符S,阶码E,尾数M,2023年11月1日星期三,39,课本P18 例2,例2 将(20.59375)10转换成754标准的32位浮点数的二进制存储格式。解:(20.59375)10(10100.10011)2将尾数规范为1.M的形式:10100.100111.01001001124e4可得:M 010010011 S 0E 41271311000 0011故,32位浮点数的754标准格式为:0100 0001 1010 0100 1100 0000 0000 0000(41A4C000)16,2023年11月1日星期三,40,求解技巧,将下列十进制数表示成IEEE754格式的32位浮点数形式存储。(1)27/32(2)11/512求解:(1)27/32=27*(1/32)=(0001 1011)2*2-5尾数:1.1011;阶码:e=-5+4=-1,E=e+127=126IEEE754数据0 0111 1110 1011 0000 0000 0000 0000 000(2)11/512=(0000 1011)2*2-9尾数:1.011;阶码:e=-9+3=-6,E=e+127=121IEEE754数据0 0111 1001 0110 0000 0000 0000 0000 00,2023年11月1日星期三,41,例:将十进制数-54表示成二进制定点数(16位)和浮点数(16位,其中数值部分10位,阶码部分4位,阶符和数符各取1位),并写出它在定点机和浮点机中的机器数形式。,令 x=-54,则x=-11011016位定点数真值表示:x=-000 0000 0011 0110定点机器数形式 x原:x补:浮点数规格化表示:x=-(0.1101100000)2110浮点机器数形式 x原:x补:,非IEEE754标准,1 000 0000 0011 0110,1 111 1111 1100 1010,0 0110;1 11 0110 0000,0 0110;1 00 1010 0000,2023年11月1日星期三,42,课本P23例9不看!,2023年11月1日星期三,43,2.1.1数据格式十进制数串的表示方法,字符串形式每个十进制数位占用一个字节;除保存各数位,还需要指明该数存放的起始地址和总位数;主要用于非数值计算的应用领域。压缩的十进制数串形式采用BCD码表示,一个字节可存放两个十进制数位;节省存储空间,便于直接完成十进制数的算术运算;用特殊的二进制编码表示数据正负,如1100正、1101负,2023年11月1日星期三,44,2.1.3 字符与字符串的表示方法,ASCII码(美国国家信息交换标准字符码)包括128个字符,共需7位编码;ASCII码规定:最高位为0,余下7位作为128个字符的编码。最高位的作用:奇偶校验;扩展编码。字符串指连续的一串字符,每个字节存一个字符。当存储字长为2、或4个字节时,在同一个存储单元中;可按从低位字节向高位字节的顺序存放字符串的内容;或按从高位字节向低位字节的次序顺序存放字符串的内容。,2023年11月1日星期三,45,2.1.4 汉字的表示方法,汉字的输入编码 目的:直接使用西文标准键盘把汉字输入到计算机。分类:主要有数字编码、拼音码、字形编码三类。汉字内码用于汉字信息的存储、交换、检索等操作的机内代码。如:GB2312、UNICODE编码。汉字字模码用点阵表示的汉字字形代码,用于汉字的输出。,2023年11月1日星期三,46,中文编码,字符代码化(输入),数字码拼音码字形码,2023年11月1日星期三,47,汉字字模码,2023年11月1日星期三,48,2.1.5 校验码(数据校验),数据校验原因为减少和避免数据在计算机系统运行或传送过程中发生错误,在数据的编码上提供了检错和纠错的支持。数据校验码的定义能够发现某些错误或具有自动纠错能力的数据编码;也称检错码;数据校验的基本原理是扩大码距;码距:任意两个合法码之间不同的二进制位的最少位数;仅有一位不同时,称其码距为1。,2023年11月1日星期三,49,码距及作用,设用四位二进制表示16种状态16种编码都用到了,此时码距为1;任何一种状态的四位码中的一位或几位出错,就变成另一个合法码;无检错能力。若用四位二进制表示8个状态只用其中的8种编码,而把另8种编码作为非法编码;可使码距扩大为2;注意:并不是任选8种编码都可扩大码距;,2023年11月1日星期三,50,校验码的类型,奇偶校验码根据数据中“1”的个数,设置1位校验位的值;分奇校验和偶校验两种,只能检错,无纠错能力;海明校验码在奇偶校验的基础上,增加校验位而得;具有检错和纠错的能力;循环冗余校验码(CRC)通过模2的除法运算建立数据信息和校验位之间的约定关系;具有很强的检错纠错能力。,2023年11月1日星期三,51,2.2 定点加法、减法运算,2.2.1 补码加法2.2.2 补码减法2.2.3 溢出概念与检验方法2.2.4 基本的二进制加法、减法器,2023年11月1日星期三,52,2.2.1 补码加法,补码加法运算基本公式定点整数:x+y补 x补+y补(mod 2n+1)定点小数:x+y补 x补+y补(mod 2)证明(1)证明依据:补码的定义(以定点小数为例)(2)证明思路:分三种情况。(a)x、y均为正值(0,0)(b)x、y均为负值(0),2023年11月1日星期三,53,补码加法公式证明(1/2),证明:(a)0,0 补补补(mod 2)(b)0,0 x补=2+x,y补=2+y x补+y补=2+x+2+y=2+(2+x+y)=2+x+y补(mod 2)=x+y补,2023年11月1日星期三,54,补码加法公式证明(2/2),(c)0,0(0的证明与此相同)x补=x,y补=2+y x补+y补=x+2+y=2+(x+y)当x+y0时,2+(x+y)2,进位2必丢失;因(x+y)0,故x补+y补=x+y=x+y补(mod 2)当x+y0时,2+(x+y)2 因(x+y)0,故x补+y补=2+(x+y)=x+y补(mod 2),2023年11月1日星期三,55,定点数补码加法举例,例11+1001,+0101,求。解:补0 1001,补0 0101 补 0 1001 补0 0101 补 0 1110 所以1110,例12 x1011,0101,求。解:补0 1011,补1 1011 补0 1011 补1 1011 补 10 0110 所以+0110,2023年11月1日星期三,56,补码负的最小值的计算,-127 补=-111 1111补=,1000 0001,-1 补=-000 0001补=,1111 1111,11000 0000,mod 28,1000 0000,=-128,2023年11月1日星期三,57,2.2.2 补码减法,补码减法运算基本公式定点整数:x-y补x补-y补x补+-y补(mod 2n+1)定点小数:x-y补x补-y补x补+-y补(mod 2)证明:只需要证明 补补 已证明x+y补 x补+y补,故y补x+y补x补 又xy补 x补+y补,故y补xy补x补 可得y补+y补x+y补+xy补x补 x补 x+y+xy补x补 x补 x+x补x补 x补0补等于补的各位取反,末位加1。,2023年11月1日星期三,58,定点数补码减法举例例13 已知1 1110,2+1101,求:1补,1补,2补,2补。,解:1补 1 00101补 1补1 0 11010 00010 11102补 0 11012补2补1 1 00100 00011 0011,注意课本上是将数据作为定点小数来处理的!,2023年11月1日星期三,59,定点数补码减法举例 例14 1101,0110,求。,解:补0 1101,补0 0110,补1 1010补 补补 0 1101 1 1010 10 0111 0 01110111,0 1101,)1 1010,1 0 0111,2023年11月1日星期三,60,2023年11月1日星期三,60,定点数补码加减法运算,基本公式定点整数:x y补 x补+y补(mod 2n+1)定点小数:x y补 x补+y补(mod 2)定点数补码加减法运算符号位和数值位可同等处理;只要结果不溢出,将结果按2n+1或2取模,即为本次运算结果。,2023年11月1日星期三,61,例 设机器字长为8位,补1010 0011,补0010 1101,求xy。,解:补1101 0011补 补补 1010 0011 1101 0011 1 0111 0110 0111 0110118,1010 0011,)1101 0011,1 0111 0110,x=93,y=+45,计算过程中,产生了溢出!9345=-138 128,2023年11月1日星期三,62,2.2.3 溢出概念与检测方法,溢出在定点数机器中,数的大小超出了定点数能表示的范围。上溢数据大于机器所能表示的最大正数;下溢数据小于机器所能表示的最小负数;例如,4位补码表示的定点整数,范围为-8,+7若x=5,y=4,则x+y产生上溢若x=-5,y=-4,则x+y产生下溢若x=5,y=-4,则x-y产生上溢,2023年11月1日星期三,62,2023年11月1日星期三,63,例题,例15+1011,+1001,求。解:补0.1011 补0.1001 补0.1011 补0.1001 补1.0100,例16-1101,-1111,求。解:补1.0011 补1.0001 补1.0011 补1.0001 补 0.0101,正数+正数=负数,负数+负数=正数,溢出!,2023年11月1日星期三,64,溢出判别方法1直接判别法,方法:同号补码相加,结果符号位与加数相反;异号补码相减,结果符号位与减数相同;特点:硬件实现较复杂;举例:若x补=0101,y补=0100,则x+y补=1001若x补=1011,y补=1100,则x+y补=0111若x补=0101,y补=1100,则x-y补=1001,上溢,下溢,上溢,2023年11月1日星期三,65,溢出判别方法2变形补码判别法,变形补码,也叫模4补码:采用双符号位表示补码判别方法:特点:硬件实现简单,只需对结果符号位进行异或举例:若x补=00101,y补=00100,则x+y补=01001若x补=11011,y补=11100,则x+y补=10111若x补=00101,y补=11100,则x-y补=01001,上溢,下溢,上溢,2023年11月1日星期三,66,2023年11月1日星期三,66,溢出判别方法3进位判别法,0101,)0100,1001,1,0,0001,)0100,0101,0,0,V=01=1,V=00=0,判别方法:最高数值位的进位与符号位的进位是否相同;判别公式溢出标志V=Cf Cn-1其中Cf为符号位产生的进位,Cn-1为最高数值位产生的进位。举例:,2023年11月1日星期三,67,回顾逻辑门图形符号,2023年11月1日星期三,68,2.2.4 基本的二进制加法/减法器,一位二进制数据的半加器:加数:Ai、Bi结果:Si(和)Ci+1(本位向高位的进位)一位半加器示意图:,一位二进制数据的全加器:加数:Ai、Bi Ci(低位向本位的进位)结果:Si(和)Ci+1(本位向高位的进位)一位全加器示意图:,2023年11月1日星期三,69,一位二进制数据的全加器的逻辑结构,全加运算的真值表如右所示:两个输出端的逻辑表达式SiAiBiCiCi1AiBiBiCiCiAi全加器逻辑结构:,3T+1T+1T,3T+3T,2023年11月1日星期三,70,多位二进制数据加法器,两个n位的数据A=An-1An-2A1A0,B=Bn-1Bn-2B1B0和S=Sn-1Sn-2S1S0采用进位判别法判断运算的溢出:V=CnCn-1,2023年11月1日星期三,71,多位二进制数据加法/减法器,将减法转换成加法A补-B补 A补+-B补由B补 求-B补 B补 求各位取反,末位加1;将加减法电路合二为一使用异或运算;当M=0时,Bi=Bi 当M=1时,Bi=Bi;,2023年11月1日星期三,72,多位二进制数据加法/减法器,3T+5T=1*2T+6T,(1*2T+6T)+2T=2*2T+6T,(n-1)*2T+6T,(n*2T+6T)+3T=2nT+9T,动画演示:2-1.swf,n*2T+6T,2023年11月1日星期三,73,多位二进制加法/减法器的输出延迟,假如每位均采用一位全加器并考虑溢出检测,n位行波进位加法器的延迟时间ta为:tan*2T9T(2n9)T如果不考虑溢出,则延迟时间ta由Sn-1的输出延迟决定:ta(n-1)*2T6T+3T(2(n-1)9)T 延迟时间ta输入稳定后,在最坏情况下加法器得到稳定的输出所需的最长时间。显然这个时间越小越好。,2023年11月1日星期三,74,2.3 定点乘法运算,2.3.0 串行乘法2.3.1 原码并行乘法2.3.2 直接补码并行乘法,2023年11月1日星期三,75,分析笔算乘法,A=0.1101 B=0.1011,AB=0.10001111,0.1 1 0 1,0.1 0 1 1,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,乘积的符号心算求得,串行乘法:移位+累加,并行乘法:各位积的对应累加,2023年11月1日星期三,76,2.5 定点运算器的组成,2.5.1 逻辑运算2.5.2 多功能算术逻辑运算单元2.5.3 内部总线2.5.4 定点运算器的基本结构,2023年11月1日星期三,77,串行加减法电路的问题,一、无法完成逻辑运算二、进位延迟时间较长,2023年11月1日星期三,78,2.5.1 逻辑运算,四种基本的逻辑运算:逻辑非逻辑加(或)逻辑乘(与)逻辑异(异或),2023年11月1日星期三,79,2.5.2 多功能算术逻辑运算单元(74181),一位全加器(FA)的逻辑表达式为:FiAiBiCi Ci1AiBiBiCiCiAiALU设计思想:Ai和Bi参与运算之前,先转换为组合函数Xi和Yi的形式;该转换过程由参数S0S1S2S3控制;再将Xi,Yi和低位进位值Ci通过全加器进行运算。算逻运算单元的逻辑式:Fi=XiYiCi Ci+1=XiYi+YiCi+XiCi,2023年11月1日星期三,80,XiYi与控制参数和输入量的关系,2023年11月1日星期三,81,进位产生公式,由Ci+1=XiYi+YiCi+XiCi推导:Ci+1=XiYi+(Xi+Yi)Ci=Gi+Pi CiGi=XiYi为进位产生函数;Pi=Xi+Yi为进位传递函数;假设4位的ALU,加数X3X2X1X0和Y3Y2Y1Y0、低位进位C0 C4=G3+P3C3=G3+P3(G2+P2C2)=G3+P3(G2+P2(G1+P1C1)=G3+P3(G2+P2(G1+P1(G0+P0C0),Ci=f(Gj,Pj,C0)j=1,2,.,i,2023年11月1日星期三,82,74181ALU,控制端S0S4:控制ALU的运算方式,如加1、A和B相加等;M:控制ALU的运算类型算术运算、逻辑运算;算术运算与逻辑运算的差别:是否考虑进位算术运算:每一位运算都需要考虑前一位的进位状态;逻辑运算:每一位运算都是独立进行的,不考虑进位;74181 ALU芯片有正逻辑、负逻辑之分Cn、P、G、Cn+i等信号的逻辑状态不同;具体的逻辑功能含义有差别;,详见课本P49 表2.5,动画演示:74181ALU.swf,2023年11月1日星期三,83,X3,Y3,X2,Y2,X1,Y1,X0,Y0,2023年11月1日星期三,84,先行进位ALU,串行加法器(行波加法器):结构形式:将n个全加器级联,得到n位加法器;特点:进位逐位传递,速度慢。超前进位加法器结构形式多片先行进位加法器级联而成;片内先行进位,片间采用先行进位部件成组进位;特点和的所有位可同时计算,运行速度快。,先行进位部件(74182 CLA),2023年11月1日星期三,85,成组先行进位部件CLA,课本 P50,2023年11月1日星期三,86,32位ALU的级联结构,上图中的ALU省去了A、B的输入数据,2023年11月1日星期三,87,2.5.3 内部总线,根据总线所在位置分内部总线:指CPU内各部件的连线。外部总线:指系统总线,即CPU与存储器、I/O系统之间的连线。按总线的逻辑结构分单向总线:信息只能向一个方向传送。双向总线:信息可以分两个方向传送,既可以发送数据,也可以接收数据。,2023年11月1日星期三,88,DE触发器:控制端E用作控制D端的输入能否有效,任何时候二者不能同时有效,任何时候二者不能同时有效,动画演示:内部总线.swf,2023年11月1日星期三,89,2.6 浮点运算方法和浮点运算器,2.6.1 浮点加法、减法运算2.6.2 浮点乘法、除法运算2.6.3 浮点运算流水线2.6.4 浮点运算器实例,2023年11月1日星期三,90,设有两个浮点数X=Mx2Ex 和 Y=My2Ey,且Ex Ey若要求XY的结果S,则S=XY=MS2ES 其中,ES=Ex,MS=Mx(My SHR(Ex-Ey)浮点数加减运算的步骤零操作数检查两操作数对阶尾数相加减结果的规格化结果的舍入处理结果的溢出判断,2.6.1 浮点数加减运算,一个操作数为0,则不必运算,节省运算时间,使小数点位置对齐,为加减运算做准备,以双符号位的补码形式进行加减法操作,将非规格化的结果值进行规格化处理,尽量保持计算后数据的精确度,以阶码的溢出为标准,若尾数溢出,则继续规格化处理,2023年11月1日星期三,91,浮点数加减运算两操作数对阶,对阶的原则以较大的阶码为标准,调整阶码较小的数据;避免阶码较大的浮点数的尾数左移,导致最高有效数位丢失;具体操作求阶差E EXEY调整阶码较小的数据若E 0,则MY右移E位,结果的阶码为EX若E 0,则MX右移|E|位,结果的阶码为EY例,XEX=0 001,MX=0.101;YEY=0 011,尾数MY=0.111阶差E EXEY=0 001-0 011=-10 X尾数MX右移2位,MX=0.001 01,0,增大阶码,尾数右移,2023年11月1日星期三,92,浮点数加减运算结果的规格化处理,两尾数加减的结果有两种情况尾数溢出尾数右移1位,阶码加1尾数为非规格化数据尾数左移1位,阶码减,直至数值位最高位与符号位相反。接上例,对阶后E=EY=0 011,尾数MX=0.001(01),MY=0.111尾数求和MS=MX+MY=00.001 01+00.111=01.000 01两符号位相反,应进行右规1位的操作则MS=00.100(001),ES=011+1=0 100,两符号位为01或10,右规,左规,补码表示的符号位与最高数值位相同,2023年11月1日星期三,93,浮点数加减运算结果的舍入处理,在对阶或右规操作时,会使加数或结果的尾数低若干位移出,影响精度,常用两种舍入处理方法方法:舍入法保留右移时的移出位,若最高位为,则尾数加;否则舍去;特点:精度较高,但需要记录所有的移出位。方法:恒置法若之前步骤有右移操作,则直接将结果的最低位置1;特点:精度较0舍1入法较低,但应用简单。接上例,结果的尾数MS=00.100 001 舍入法:MS=00.100恒置法:MS=00.101,2023年11月1日星期三,94,浮点数加减运算结果的溢出判断,尾数溢出在规格化处理时,通过完成右规完成;阶码溢出上溢(结果绝对值太大)置上溢标志,结束;下溢(结果绝对值太小)置机器零;正常运算结束;接上例,运算结果的阶码ES=011+1=0 100未溢出!,2023年11月1日星期三,95,设浮点数的阶码用双符号位,尾数用单符号位的补码表示;X浮00 010,0.11011011Y浮00 100,1.01010100求阶差并对阶EEXEYEX补EY补 00 01011 100 11 110则浮点数X,应使MX右移2位,EX加2,X浮00 100,0.00110110(11),ES=00 100尾数求和:MS=1.1 0 0 0 1 0 1 0(11),课本P55例28设20100.11011011,2100(-0.10101100),求。,E=-2 0则EY为结果阶码修改浮点数X,00.0 0 1 1 0 1 1 0(11),1 1.0 1 0 1 0 1 0 0,1 1.1 0 0 0 1 0 1