运算方法和运算器.ppt

上传人:桔**** 文档编号:568258317 上传时间:2024-07-23 格式:PPT 页数:170 大小:2.84MB
返回 下载 相关 举报
运算方法和运算器.ppt_第1页
第1页 / 共170页
运算方法和运算器.ppt_第2页
第2页 / 共170页
运算方法和运算器.ppt_第3页
第3页 / 共170页
运算方法和运算器.ppt_第4页
第4页 / 共170页
运算方法和运算器.ppt_第5页
第5页 / 共170页
点击查看更多>>
资源描述

《运算方法和运算器.ppt》由会员分享,可在线阅读,更多相关《运算方法和运算器.ppt(170页珍藏版)》请在金锄头文库上搜索。

1、计算机组成原理计算机组成原理主讲教师:主讲教师: 赵赵 岚岚 第二章第二章运算方法和运算器运算方法和运算器n数据信息的表示方法数据信息的表示方法n定点加、减法运算定点加、减法运算n定点乘法运算定点乘法运算n定点除法运算定点除法运算n定点运算器的组成与结构定点运算器的组成与结构n浮点运算方法和浮点运算器浮点运算方法和浮点运算器一、计算机中的信息表示一、计算机中的信息表示n掌握:掌握:数制及其转换,数制及其转换,码制及其转换,码制及其转换,定、浮点数表示方法及标准格式定、浮点数表示方法及标准格式2-12-1 数制与转换数制与转换数据信息分为:数值数据和非数值数据;数据信息分为:数值数据和非数值数据

2、; 数值数据指该数据有确定的数值。表示数值数据指该数据有确定的数值。表示数值数据的三要素:小数点、进位计数制和数值数据的三要素:小数点、进位计数制和符号。符号。 非数值数据是指文字、符号等。非数值数据是指文字、符号等。n数制中所使用的数码的个数称为数制中所使用的数码的个数称为“基数基数” r r ; ;n某数制的数中每一位所具有的值称为某数制的数中每一位所具有的值称为“权权”r ri in进位计数制进位计数制 人用符号计数的科学方法人用符号计数的科学方法二进制二进制八进制八进制十进制十进制十六进制十六进制二二十进制(十进制(BCDBCD码)码)数制数制 数码数码 进位方法进位方法 基数基数 二

3、二 0 0,1 1 逢逢2 2进进1 1 2 2 八八 0 07 7 逢逢8 8进进1 81 8 十十 0 09 9 逢逢1010进进1 101 10十六十六 0 09, A 9, A F F 逢逢1616进进1 161 16n数制间转换数制间转换原则原则: :整数变整数整数变整数, ,小数变小数小数变小数; ;十进十进 二进二进 n整数部分整数部分: :除除2 2取余取余倒排倒排, ,直到商为直到商为0 ;0 ;n小数部分小数部分: :乘乘2 2取整取整, ,直到小数位为直到小数位为0 ; 0 ; n例例: : (13.8125)(13.8125)1010(13.8125)10首先,转换整数

4、部分首先,转换整数部分1321326123021101结果:结果:1101然后,转换小数部分然后,转换小数部分.8125 0.81252=1.62510.625*2=1.2510.25*2=0.500.5*2=1.01小数结果:小数结果:0.1101综合结果为综合结果为(13.8125)10(1101.1101)2二进二进, ,八进八进, ,十六进十六进 十进十进n按按N N展开式求和展开式求和n例例: (: (11001.101)11001.101)2 2 (27451(27451.12).12)8 8 (2AD(2AD.1C).1C)1616(11001.101)20(27451.12)8

5、(2AD.1C)16n二进二进 十六进十六进以小数点为中心分界以小数点为中心分界每每4 4位分为一段位分为一段, ,不足补不足补0 0每一段用相应的十六进制数取代每一段用相应的十六进制数取代 例例: :(1101110.01011)(1101110.01011)2 2注注: :如果转换为八进制如果转换为八进制, ,则每则每3 3位分一段即可位分一段即可然后每一段用相应的八进制数取代然后每一段用相应的八进制数取代. .(1101110.01011)2(?)1601101110.01011000(1101110.01011)2(?)8001101110.010110156.266 E . 5 86

6、 E . 5 8思考:思考:十六进制和八进制数如何转换十六进制和八进制数如何转换成为二进制数?成为二进制数?2-2-数据在计算机中的表示数据在计算机中的表示q所谓编码,就是用少量简单的基本符号,选用一定的组所谓编码,就是用少量简单的基本符号,选用一定的组合规则,以表示出大量复杂多样的信息。合规则,以表示出大量复杂多样的信息。q常用的信息分为:常用的信息分为:定点数定点数(fixedpoint)数值信息数值信息浮点数浮点数(floatingpoint)字符字符(character)非数值信息非数值信息汉字汉字(Chinesecharacter逻辑数据逻辑数据(logicaldata)字符编码字符

7、编码n用一定位数的二进制数用一定位数的二进制数“0 0”和和“1 1”进行编码给出。进行编码给出。n常用的字符编码常用的字符编码ASCII ASCII (American Standard Code for American Standard Code for Information Interchange)Information Interchange)码。码。 ASCIIASCII码是美国信息交换码是美国信息交换标准代码。包括标准代码。包括0-90-9十个数字,大小写英文字母及专用符十个数字,大小写英文字母及专用符号等号等9595种可打印字符。另有种可打印字符。另有3333不可打印字符,被

8、用于控制不可打印字符,被用于控制码。码。中文编码中文编码n汉字输入码:为便于汉字进行输入时的编码,将汉字代码汉字输入码:为便于汉字进行输入时的编码,将汉字代码化。化。n汉字机内码:用于汉字信息的存储、交换、检索等操作的汉字机内码:用于汉字信息的存储、交换、检索等操作的机内代码。一般用两个字节表示。机内代码。一般用两个字节表示。n汉字字型码:汉字输出时的编码。用点阵表示。汉字字型码:汉字输出时的编码。用点阵表示。数值信息的编码数值信息的编码在选择计算机数值信息的表示方式时需要考在选择计算机数值信息的表示方式时需要考虑的主要因素有以下几点:虑的主要因素有以下几点: 要表示的数的类型;要表示的数的类

9、型;可能遇到的数值范围;可能遇到的数值范围;数值精确度;数值精确度;数据存储和处理所需要的硬件代价数据存储和处理所需要的硬件代价数值数据数值数据真值与机器数真值与机器数 对二进制来说,真值与机器数的区别主要在对二进制来说,真值与机器数的区别主要在符号符号的表示方法上。的表示方法上。 数值前正号用数值前正号用“+ +”表示,负号用表示,负号用“- -”表示的表示的数数称为称为真值真值;数值前正号用;数值前正号用“0 0”表示,负号用表示,负号用“1 1”表表示的数称为示的数称为机器数机器数。如:真值:如:真值: +0.1011 -+0.1011 -0.00100.0010 机器码(原码):机器码

10、(原码): 0.1011 1.00100.1011 1.0010数值数据数值数据数的机器码表示数的机器码表示在计算机中对数据进行运算操作时,符号位如在计算机中对数据进行运算操作时,符号位如何表示呢?是否也同数值位一道参加运算操作呢?何表示呢?是否也同数值位一道参加运算操作呢?为了妥善的处理好这些问题,就产生了把符号位和为了妥善的处理好这些问题,就产生了把符号位和数字位一起编码来表示相应的数的各种表示方法,数字位一起编码来表示相应的数的各种表示方法,如原码、补码、反码、移码等。通常将前者称为如原码、补码、反码、移码等。通常将前者称为真真值值,后者称为,后者称为机器数机器数或或机器码机器码。 数值

11、数据数值数据原码表示法原码表示法 定点小数定点小数X X表示表示: Ns. N: Ns. N1 1 N N2 2 Nn Nn 定义定义: X : X 原原= = 定点整数定点整数X X表示:表示:Ns NNs N1 1 N N2 2 N Nn n 定义定义: X : X 原原= =X, 0 X 11-X, -1 X 0X, 0 X 2n 2n-X, - 2n X 0数值数据数值数据原码表示法原码表示法n实例:实例:X1=0.101100.101100.0000X原原=0.101101.101100.00001.0000n实例:实例:X1=10110101100000X原原=0101101101

12、100000010000数值数据数值数据原码表示法原码表示法性质性质: : 原码原码为符号位加上数的绝对值,为符号位加上数的绝对值,0 0正正1 1负负 原码原码零有两个编码,零有两个编码,+0+0和和 -0-0编码不同编码不同 原码原码难以用于加减运算,但乘除方便难以用于加减运算,但乘除方便 N+1N+1位二进制原码所表示的范围为:位二进制原码所表示的范围为:小数:小数:MAX=1-2MAX=1-2-n-n ,MIN=MIN=( 1-21-2-n-n )整数:整数:MAX= 2MAX= 2n n-1-1, MIN=MIN=( 2 2n n-1-1) 数值数据数值数据原码表示法原码表示法原码的

13、优点是:简单易懂。原码的优点是:简单易懂。 缺点是:难以用于加减运算。缺点是:难以用于加减运算。原因是:如果是异号相加,则要进行减法运算。首原因是:如果是异号相加,则要进行减法运算。首先要比较绝对值的大小,然后大数减小数,最后先要比较绝对值的大小,然后大数减小数,最后确定符号。确定符号。为了便于加减运算,采用了补码表示。为了便于加减运算,采用了补码表示。数值数据数值数据补码表示法补码表示法补码是在补码是在“模模”和和“同余同余”的概念下导出的。的概念下导出的。 “模模”是指一个计量系统的计量范围,即产生是指一个计量系统的计量范围,即产生“溢出溢出”的的量。量。 在计算机中,机器能表示的数据位数

14、是一定的,其运算都在计算机中,机器能表示的数据位数是一定的,其运算都是有模运算。如果是是有模运算。如果是n n位整数,其模为位整数,其模为2 2n n。如果是。如果是n n位小数,位小数,其模为其模为2 2。 若运算结果超出了计算机所能表示的数值范围,若运算结果超出了计算机所能表示的数值范围,则只保则只保留它的小于模的低留它的小于模的低n n位的数值,超过位的数值,超过n n位的高位部分就自动舍弃位的高位部分就自动舍弃了。了。数值数据数值数据补码表示法补码表示法定义:定义: 任意一个任意一个X X的补码为的补码为XX补补,可以用该数,可以用该数加上其模加上其模M M来表示。来表示。 XX补补=

15、X+M=X+M数值数据数值数据补码表示法补码表示法定点小数表示定点小数表示: Ns. N: Ns. N1 1 N N2 2 Nn Nn 定义定义: X : X 补补 = = (MOD 2MOD 2) 定点整数表示:定点整数表示:Ns NNs N1 1 N N2 2 Nn Nn 定义定义: X : X 补补 = = (MOD 2MOD 2n+1n+1) X 2+ X0 X 1 -1 X 0 X 2n+1 + X;0 X 2n - 2n X 0数值数据数值数据补码表示法补码表示法实例:实例:X1=0.101100.101100.0000X补补=0.101101.010100.0000实例:实例:X

16、1=10110101100000X补补=01011010101000000数值数据数值数据补码表示法补码表示法n由于正数的补码就是正数本身,故着重讲解由于正数的补码就是正数本身,故着重讲解负数求补码负数求补码的方法。的方法。负数求补码负数求补码数值数据数值数据补码表示法补码表示法(1 1)由定义求)由定义求例:例:X补补=2+X=10+(-0.1101001)=1.0010111数值数据数值数据补码表示法补码表示法n例例:X=1101001解解:X补补=28+X=100000000+(-1101001)=10010111反过来,由补码求真值,只要将公式进行交换即可。反过来,由补码求真值,只要将

17、公式进行交换即可。数值数据数值数据补码表示法补码表示法(2 2)由原码求补码)由原码求补码除符号位以外,其余各位求反,末位加除符号位以外,其余各位求反,末位加1 1。例:例:X=- 0.0101011X=- 0.0101011解解: :X原= 1 0 1 0 1 0 1 1 X补=1 111000 0+1 1 1 0 1 0 1 0 1由补码求由补码求原码,此原码,此规则同样规则同样适用适用。数值数据数值数据补码表示法补码表示法n由原码求补码的简便原则: 从最低位开始遇到的第一个1以前的各位保持不变, 其余各位除符号位以外,其它按位取反 。例:X原= 1 1 0 1 1 0 1 0 0X补=

18、1 0 1 0 0 11 0 01 0 0由由-X-X补补求求XX补补,此规则同此规则同样适用样适用。数值数据数值数据补码表示法补码表示法(3 3)由)由XX补补求求-X-X补补: :连符号位一起各位求连符号位一起各位求反,末位加反,末位加1 1。例:例:XX补补=1.1010101=1.1010101解解: :X补= 1 1 0 1 0 1 0 1 -X补=0 000111 0+1 0 0 1 0 1 0 1 1数值数据数值数据补码表示法补码表示法性质性质: : 0 0的补码是唯一的的补码是唯一的 补码便于加减运算补码便于加减运算 n+1n+1位补码所能表示的数的范围:位补码所能表示的数的范

19、围: 小数:小数:MAX=1-2MAX=1-2-n-n ,MIN=1MIN=1 整数:整数:MAX= 2MAX= 2n n-1-1, MIN= 2MIN= 2n n数值数据数值数据补码表示法补码表示法n补码便于加减运算,因为不论正、负数它只需要补码便于加减运算,因为不论正、负数它只需要做加运算。但负数的求补需要做一次加运算,显做加运算。但负数的求补需要做一次加运算,显然有不方便,为此又引入了反码。然有不方便,为此又引入了反码。数值数据数值数据反码表示法反码表示法定点小数表示定点小数表示: Ns. N: Ns. N1 1 N N2 2 Nn Nn 定义定义: X : X 反反= =定点整数表示:

20、定点整数表示:Ns NNs N1 1 N N2 2 Nn Nn 定义定义: X : X 反反= = X (2-2-n )+ X0 X 1 -1 X 0X; 0 X 2n( 2n+1 1)+ X; - 2n X 0数值数据数值数据反码表示法反码表示法n由原码求反码,如果由原码求反码,如果X X为正数,则为正数,则XX反反=X=X原原;如果如果X X为负数,则将为负数,则将XX原原除符号位以外,每位都除符号位以外,每位都变反,可得到变反,可得到XX反反。n实例:实例:X1=0.101100.101100.0000X原原=0.101101.101100.00001.0000X反反=0.010011.

21、010010.00001.1111数值数据数值数据反码表示法反码表示法 X X 反反 =2+ X -2=2+ X -2-n-n X X 补补 = 2+ X = 2+ X 所以当所以当x x的真值为负数时:的真值为负数时:有有 X X 补补 = X = X 反反 + 2+ 2-n-n 数值数据数值数据移码表示法移码表示法 对于对于n+1n+1位数位数x x0 0 x x1 1 x x2 2 x xn n 定义定义: X : X 移移 =2=2n n+x;+x; 由于移码是在原值由于移码是在原值X X上加一个上加一个2 2n n,所以也,所以也称为增码,因此,称为增码,因此,符号为符号为1 1时,

22、表示正数,时,表示正数,符号为符号为0 0时,表示负数。时,表示负数。例如:例如:X=1101010X=1101010, 则:则:XX补补= = 0 011010101101010 X X移移=2=27 7+X =+X =1 111010101101010 -2n X 00或或000时时, 2 , 2 ( () 2,) 2,进位进位2 2必丢必丢失失, ,又因又因( ()0)0,故故 补补 补补 补补(mod 2)(mod 2)当当00时时, 2 , 2 ( () 2,) 2,又因又因( ()0)0,故故 补补 补补2 2( () ) 补补(mod 2)(mod 2)(3)(3)0,0,0,则

23、则00或或 00。这种情况和第这种情况和第2 2种情况一样种情况一样, ,把把和和的位置对调的位置对调即得证。即得证。加法公式的证明加法公式的证明(4)(4)0,0,0,0,则则00。 相加两数都是负数相加两数都是负数, ,则其和也一定是负数。则其和也一定是负数。 补补2 2, , 补补2 2 补补 补补2 22 22 2(2(2)=2+x+y)=2+x+y 所以所以 补补 补补2 2( () ) 补补(mod 2)(mod 2)至此我们证明了至此我们证明了, ,在模在模2 2意义下意义下, ,任意两数的补码任意两数的补码之和等于该两数之和的补码之和等于该两数之和的补码. .这是补码加法的理论

24、基这是补码加法的理论基础础, ,其结论也适用于定点整数其结论也适用于定点整数定点运算器定点运算器 定点加减法定点加减法n例例:X0.1011Y0.0101,求,求X+Y?解解:X补补=0. 1 0 1 1Y补补=1. 1 0 1 1+011010.丢掉丢掉1 X补补+Y补补=0.0110X+Y=0.0110定点运算器定点运算器 定点加减法定点加减法例例: X: X-11001 ,Y-11001 ,Y-00011-00011,求,求 X+YX+Y? 解解: :X补补=1 0 0 1 1 1Y补补=1 1 1 1 0 1+00101 1丢掉丢掉1 XX补补+Y+Y补补=100100=100100X

25、+Y=-11100X+Y=-111000定点运算器定点运算器定点加减法定点加减法补码的减法:补码的减法: X-YX-Y补补=X=X补补-Y-Y补补=X+=X+(-Y-Y) 补补=X=X补补+-Y+-Y补补 (-Y-Y)的补码称为)的补码称为YY补补的机器负数,由的机器负数,由YY补补求求-Y-Y补补的的过程称为将过程称为将YY补补“变补变补”或对或对YY补补求补,由求补,由YY补补求求-YY补补的方法是,的方法是,不管不管Y Y的真值为正或为负,都是将的真值为正或为负,都是将YY补补的各位连同符号位在内全变反后,最低位加的各位连同符号位在内全变反后,最低位加1 1。下面证明下面证明-Y-Y 补

26、补= -Y= -Y补补 x+yx+y补补=x=x补补+ y+ y补补 ( mod 2)( mod 2) yy补补 = = x+yx+y补补-x-x补补 (a a)又又 x-yx-y补补=x+=x+(-y-y) 补补=x=x补补+ -y+ -y补补 -y-y补补 = x-y= x-y补补- x- x补补 ( b )( b )将(将(a a)()(b b)两式相加得:)两式相加得:yy补补+ + -y-y补补 = = x+yx+y补补-x-x补补 + x-y+ x-y补补- x- x补补 = x+y= x+y补补+ x-y+ x-y补补-x-x补补 -x-x补补 = x+y+x-y= x+y+x-

27、y补补-x-x补补 -x-x补补 = x+x= x+x补补-x-x补补 -x-x补补 =0=0 -y-y补补 = -= - yy补补定点运算器定点运算器 定点加减法定点加减法例例: X: X-0.1011 Y-0.1011 Y-0.0110-0.0110,求,求 X XY Y? 解解: :X补补=1. 0 1 0 1-Y补补=0. 0 1 1 0+1001 1.11XY补补1.1001XY=-0.0111用补码运算完成下列各题,并讨论结果是否用补码运算完成下列各题,并讨论结果是否正确:正确:(1 1)、已知)、已知 x=-0.1001 y=-0.1011 x=-0.1001 y=-0.1011

28、 求求x+yx+y补补(2 2)、已知)、已知x=1000010 y=-1001101x=1000010 y=-1001101 求求x-yx-y补补定点运算器定点运算器溢出及判别溢出及判别溢出及其判别方法:溢出及其判别方法: 在计算机中定点数的表示范围是有限的,若两在计算机中定点数的表示范围是有限的,若两数进行加减运算的结果超出了给定的取值范围,就数进行加减运算的结果超出了给定的取值范围,就称为溢出。一旦出现溢出,必须及时处理,否则会称为溢出。一旦出现溢出,必须及时处理,否则会出现错误。出现错误。 可以采用两种方法来判别是否产生溢出:可以采用两种方法来判别是否产生溢出: 单符号位法单符号位法

29、双符号位法双符号位法定点运算器定点运算器溢出及判别溢出及判别采用单符号位的判断方法采用单符号位的判断方法 两异号数相加或两同号数相减决不会产生溢出,仅两异号数相加或两同号数相减决不会产生溢出,仅当两同号数相加或两异号数相减时才有可能产生溢出。当两同号数相加或两异号数相减时才有可能产生溢出。 两同号数相加时,如果结果的符号与参与运算的两同号数相加时,如果结果的符号与参与运算的操操作数符号相反,则表明有溢出;两异号数相减时,如果作数符号相反,则表明有溢出;两异号数相减时,如果结果的符号与被减数的符号相反,则表明有溢出。结果的符号与被减数的符号相反,则表明有溢出。 定点运算器定点运算器溢出及判别溢出

30、及判别利用进位值的判断方法利用进位值的判断方法 两补码数进行加减运算时,若最高数值位产生向符两补码数进行加减运算时,若最高数值位产生向符号的进位而符号位不产生进位时,发生正溢出,若最高号的进位而符号位不产生进位时,发生正溢出,若最高数值位无进位而符号位有进位时,发生负溢出数值位无进位而符号位有进位时,发生负溢出 溢出判别的逻辑表达式为:溢出判别的逻辑表达式为: V=CV=Cf f C C0 0定点运算器定点运算器 溢出及判别溢出及判别例例: X: X-0.100 Y-0.100 Y-0.101-0.101,求,求 X+YX+Y? 解解: :X补补=1. 1 0 0Y补补=1. 0 1 1+11

31、110.丢掉丢掉两负数相加,结果应为负数,但运算结果为两负数相加,结果应为负数,但运算结果为正数,表明有溢出发生正数,表明有溢出发生 定点运算器定点运算器 溢出及判别溢出及判别例例: X: X100 100 ,Y Y-11-11,求,求 X-YX-Y? 解解: :X补补=0 1 0 0 -Y补补=0 1 1 0+01 1一个正数减去一个负数,结果为正数,但计算结果一个正数减去一个负数,结果为正数,但计算结果为负数,表明有溢出发生,出错为负数,表明有溢出发生,出错0定点运算器定点运算器 溢出及判别溢出及判别采用双符号位的判断方法采用双符号位的判断方法 每个操作数的补码符号用两个二进制数表示,称为

32、变形每个操作数的补码符号用两个二进制数表示,称为变形补码,用补码,用“0000”表示正数,表示正数,“1111”表示负数,左边第一位叫表示负数,左边第一位叫第一符号位,右边第一位称为第二符号位,两个符号位同时第一符号位,右边第一位称为第二符号位,两个符号位同时参加运算,如果运算结果两符号位相同,则没有溢出发生。参加运算,如果运算结果两符号位相同,则没有溢出发生。如果运算结果两符号位不同,则表明产生了溢出。如果运算结果两符号位不同,则表明产生了溢出。“1010”表表示负溢出,说明运算结果为负数,示负溢出,说明运算结果为负数,“0101”表示正溢出,说明表示正溢出,说明运算结果为正数。运算结果为正

33、数。 溢出判别的逻辑表达式为:溢出判别的逻辑表达式为: V VS Sf f1 1S Sf f2 2溢出及判别举例溢出及判别举例 例例 0.1100, 0.1000,求求。 解解: 补补00.1100,00.1100, 补补00.100000.1000 补补00.110000.1100 补补0000.1000.1000 01.010001.0100 两个符号位出现两个符号位出现“0101”, ,表示已溢出表示已溢出, ,即即结果大于结果大于1 1。溢出及判别举例溢出及判别举例例例 0.1100,0.1000,求求。解解: 补补11.0100,11.0100, 补补11.100011.1000 补

34、补 11.010011.0100 补补 11.100011.1000 1010.1100.1100 两个符号位出现两个符号位出现“1010”, ,表示已溢出表示已溢出, ,即结果小即结果小于于1 1。练习:请分别用单、双符号形式计算下列各练习:请分别用单、双符号形式计算下列各题,并判断是否溢出及给出溢出类型:题,并判断是否溢出及给出溢出类型:1 1、已知、已知X=0.1011 Y=0.0111 X=0.1011 Y=0.0111 求求X+Y=X+Y=?2 2、已知、已知X=-0.1011 Y=0.0111 X=-0.1011 Y=0.0111 求求X-Y=X-Y=?基本的二进制加法基本的二进制

35、加法/ /减法器减法器根据真值表,可以根据真值表,可以写出一位全加器的逻辑写出一位全加器的逻辑 方程:方程:S Si iA Ai iBBi iCCi iC Ci i1 1A Ai iB Bi iB Bi iC Ci iC Ci iA Ai i 按此表达式组成的一按此表达式组成的一位全加器如下图所示:位全加器如下图所示:一位全加器的真值表基本的二进制加法基本的二进制加法/ /减法器减法器一位全加器的逻辑实现一位全加器的逻辑实现基本的二进制加法基本的二进制加法/ /减法器减法器S Si iA Ai iBBi iCCi i 的推导显而易见。的推导显而易见。下面推导下面推导C Ci i1 1A Ai

36、iB Bi iB Bi iC Ci iC Ci iA Ai i将用到如下定律:将用到如下定律:1 1。摩根定律:。摩根定律:2 2。吸收律:。吸收律:基本的二进制加法基本的二进制加法/ /减法器减法器基本的二进制加法基本的二进制加法/ /减法器减法器第三个与非门的输出即为第三个与非门的输出即为C Ci+1i+1基本的二进制加法基本的二进制加法/ /减法器减法器行波进位的补码加法减法器行波进位的补码加法减法器P31图2.3的行波进位的补码加法/减法器,为什么叫行波进位 a3a2a1a0 + b3b2b1b0 s3s2s1s0如何完成减法运算 A AB B运运算算转转化化成成AA补补 BB补补运运

37、算算, ,求求补过程由补过程由B B变反变反1 1来实现。来实现。行波进位的补码加法减法器行波进位的补码加法减法器如何进行溢出检测处理?请思考!延迟时间的计算 考虑溢出:ta=n2T+9T 不考虑溢出时ta=(n-1)2T+9T 2T即每一位的进位延迟 9T包括:溢出的异或门为3T,最下的一排异或门为3T;FA内部Ai和Bi输入的异或门为3T,故共9T。定点运算器定点运算器定点原码一位乘法定点原码一位乘法定点原码一位乘法定点原码一位乘法设被乘数设被乘数XX原原=X=Xf fX Xn-1n-1X Xn-2n-2X X1 1X X0 0 乘乘 数数YY原原=Y=Yf fY Yn-1n-1Y Yn-

38、2n-2Y Y1 1Y Y0 0 乘乘 积积XX原原=Z=Zf fZ Z2n-12n-1Z Z2n-22n-2Z Z1 1Z Z0 0 运算原则:同号相乘为正,异号相乘为负,符运算原则:同号相乘为正,异号相乘为负,符号可按:异或运算得到,数值部分的运算方法与普通号可按:异或运算得到,数值部分的运算方法与普通的十进制乘数相类似的十进制乘数相类似 。不论真值的正负,尾数都用。不论真值的正负,尾数都用正数参加运算。正数参加运算。定点运算器定点运算器定点原码一位乘法定点原码一位乘法手工算法手工算法0. 1 1 0 10. 1 0 1 1 1 1 0 1 1 1 0 1 0 0 0 0 1 1 0 1+

39、 1 0 0 0 1 1 1 1 0.l两个两个n位数相乘,其位数相乘,其积为积为2n位,则需要位,则需要2n位位长的加法器,这不适用长的加法器,这不适用于定点机的形式。于定点机的形式。l机器一次只能进行两机器一次只能进行两个数的相加,不能进行个数的相加,不能进行多个数据的加法。多个数据的加法。定点运算器定点运算器定点原码一位乘法定点原码一位乘法定点原码一位乘法定点原码一位乘法运算法则运算法则: : 计算机中执行乘法时,积的符号位由被乘数和计算机中执行乘法时,积的符号位由被乘数和乘数的符号位通过一个异或门实现,数值部分的运乘数的符号位通过一个异或门实现,数值部分的运算规则是:从最低位算规则是:

40、从最低位Y Y0 0开始,当乘数开始,当乘数Y Yi i为为1 1时,将上时,将上次部分积加上被乘数的绝对值,然后右移一位,得次部分积加上被乘数的绝对值,然后右移一位,得到新的部分积;当到新的部分积;当Y Yi i为为0 0时,将部分积直接右移一位,时,将部分积直接右移一位,得到新的部分积。重复得到新的部分积。重复“加加右移右移”操作操作N N次,可得次,可得到最后的乘积。到最后的乘积。 定点运算器定点运算器定点原码一位乘法定点原码一位乘法例:X=0.1101,Y=0.1011,求X*Y=?解:部分积乘数说明0 0. 0 0 0 00 0. 1 1 0 1+Yf 1 0 1 10 0. 1 1

41、 0 10 0. 0 1 1 0 0 0. 1 1 0 1+0 1. 0 0 1 10 0. 1 0 0 10 0. 0 0 0 0+0 0. 1 0 0 10 0. 0 1 0 00 0. 1 1 0 10 1. 0 0 0 10 0. 1 0 0 0+1 Yf 1 0 11 1 Yf 1 01 1 1 Yf 11 1 1 1 YfZ0=0Y0=1, +XY1=1, +XY2=0, +0Y3=1, +X右移,得Z1右移,得Z2右移,得Z3右移,得Z4=X*Y定点运算器定点运算器定点原码一位乘法定点原码一位乘法结果:结果:X*Y=0.10001111定点运算器定点运算器定点原码一位乘法定点原码

42、一位乘法原码一位乘法的逻辑电路图定点运算器定点运算器定点原码一位乘法定点原码一位乘法存放部分积,存放部分积,2 2存放被乘数,存放被乘数,存放乘数。存放乘数。一一、R R0 0清清零零,R R2 2存存放放被被乘乘数数,R R1 1存存放放乘乘数数。乘乘法法开开始始时时,“启启动动”信信号号时时序序控控制制置置,于于是是开开启启时时序序脉脉冲冲,当当乘乘数数寄寄存存器器最最末末位位为为“时时,部部分分积积和和被被乘乘数数在在加加法法器器中中相相加加,其其结结果果输输出出至至的的输输入入端端。一一旦旦打打入入控控制制脉脉冲冲到到来来,控控制制信信号号使使部部分分积积右右移移位位,与与此此同同时时

43、,乘乘数数寄寄存存器器也也在在控控制制信信号号作用下右移一位,且计数器记数一次作用下右移一位,且计数器记数一次二、二、 上述步骤重复执行上述步骤重复执行n n次次三三、当当计计数数器器n n时时,计计数数器器的的溢溢出出信信号号使使控控制制触触法法器器置置,关闭时序脉冲,乘法宣告结束。,关闭时序脉冲,乘法宣告结束。定点运算器定点运算器定点原码一位乘法定点原码一位乘法原码算法存在的缺点:原码算法存在的缺点: 一、符号位需要单独运算,最后给出运算结果的一、符号位需要单独运算,最后给出运算结果的正确符号;正确符号; 二、对于采用补码存储的数,从存储器中取出的二、对于采用补码存储的数,从存储器中取出的

44、是操作数的补码,需先将其转换成原码,这样很是操作数的补码,需先将其转换成原码,这样很不方便,而且影响速度。不方便,而且影响速度。定点运算器定点运算器定点补码一位乘法定点补码一位乘法定点一位补码乘法:定点一位补码乘法: 补码乘法的特点是乘数、被乘数用补码表示,符号位参加补码乘法的特点是乘数、被乘数用补码表示,符号位参加运算运算 ,希望得到的结果就是乘积的补码,符号位在运算中,希望得到的结果就是乘积的补码,符号位在运算中形成。但是与补码加减法不同,两数的补码如果直接相乘,形成。但是与补码加减法不同,两数的补码如果直接相乘,结果不是乘积的补码。结果不是乘积的补码。 设被乘数设被乘数XX补补0 0.

45、.1 12 23 3和乘数和乘数补补0 0. .1 12 2均为任意符号,则有补码乘法算式均为任意符号,则有补码乘法算式, ,这就是这就是有名的布斯公式。有名的布斯公式。定点运算器定点运算器定点补码一位乘法定点补码一位乘法X*Y补补=X补补*Y=X补补YS+Y121+Y2*22+Yn2n=X补补YS+(Y1Y121)+(Y221Y222)+(YN2(n1)Yn2n)=X补补(Y1YS)+(Y2Y1)21+(YnYn1)2(n1)+(0Yn)2n=X补补(Y1YS)+21(X补补(Y2Y1)+21(X补补(Y3Y2)+21(X补补(YnYn1)+21(X补补(Yn+1Yn)(Yn+1=0)定点运

46、算器定点运算器-定点补码一位乘法定点补码一位乘法递推公式为递推公式为: :PP0 0 补补=0=0PP1 1 补补= 2= 2-1-1(P(P0 0 补补+(Y +(Y n+1n+1-Y-Yn n) X) X补补) )PP2 2 补补= 2= 2-1-1(P(P1 1 补补+(Y +(Y n n-Y-Yn-1n-1) X) X补补) )PPi i 补补= 2= 2-1-1(P(Pi-1i-1 补补+(Y +(Y n-i+2n-i+2-Y-Yn-i+1n-i+1) X) X补补) )PPn n 补补= 2= 2-1-1(P(Pn-1n-1 补补+(Y +(Y 2 2-Y-Y1 1) X) X补补

47、) )PPn+1n+1 补补= P= Pn n 补补+(Y +(Y 1 1-Y-Ys s) X) X补补=X*Y=X*Y补补定点运算器定点运算器-定点补码一位乘法定点补码一位乘法补码一位乘法的运算规则如下(开始时补码一位乘法的运算规则如下(开始时y yn+1n+1=0=0););(1 1)如果)如果y yn n= y= yn+1n+1,部分积,部分积zzi i 加加0 0,再右移,再右移1 1位位(2 2)如果)如果y yn ny yn+1n+1=01=01,部分积加,部分积加xx补补,再右移,再右移1 1位位(3 3)如果)如果y yn ny yn+1n+1=10=10,部分积加,部分积加-

48、x-x补补,再右移,再右移1 1位位 这样重复这样重复n+1n+1步,最后一步不移位。步,最后一步不移位。 定点运算器定点运算器定点补码一位乘法定点补码一位乘法例:例:XX补补=0.1101=0.1101,YY补补=0.1011=0.1011,求,求X*Y=X*Y=?解解: : 部分积部分积 乘乘 数数 说说 明明 0 0 . 0 0 0 00. 1 0 1 1 0Y n+1=0 1 1 . 0 0 1 1YnY n+1=10, 加加-X补补+ 1 1 . 0 0 1 11 1 . 1 0 0 11. 0 1 0 1 1右移一位右移一位+ 0 0 . 0 0 0 0YnY n+1=11, 加加

49、0 1 1 . 1 0 0 1 1 1 . 1 1 0 0 1 1 0 1 0 1 右移一位右移一位+ 0 0 . 1 1 0 1YnY n+1=01, 加加X补补 0 0 . 1 0 0 1 0 0 . 0 1 0 01 1 1 0 1 0 右移一位右移一位+ 1 1 . 0 0 1 1 1 1 . 0 1 1 1YnY n+1=10, 加加-X补补 1 1 . 1 0 1 11 1 1 1 0 1右移一位右移一位 0 0 . 1 1 0 1+YnY n+1=01, 加加X补补 0 0 . 1 0 0 01 1 1 1 0 1最后一次不移位最后一次不移位定点运算器定点运算器定点补码一位乘法定

50、点补码一位乘法结果:结果:X*Y补=0.10001111定点运算器定点运算器定点补码一位乘法定点补码一位乘法定点运算器定点运算器定点补码一位乘法定点补码一位乘法被乘数的符号被乘数的符号和乘数的符号和乘数的符号都参加运算。都参加运算。乘数寄存器乘数寄存器有附加位有附加位,其初始状态为,其初始状态为“”。当乘数。当乘数和部分积每次右移时,部分积最低位移至和部分积每次右移时,部分积最低位移至的首位位置,故的首位位置,故必必须是具有右移功能的寄存器。须是具有右移功能的寄存器。被乘数寄存器被乘数寄存器的每一位用原码或反码经多路开关传送到加的每一位用原码或反码经多路开关传送到加法器对应位的一个输入端,而开

51、关的控制信号由法器对应位的一个输入端,而开关的控制信号由的输出的输出译码器产生。当译码器产生。当0 0时,送时,送补补;当;当时,送时,送补补,即送,即送的反码且在加法器最末位加上的反码且在加法器最末位加上“”。保存部分积,它也是具有右移功能的移位寄存器,其符号保存部分积,它也是具有右移功能的移位寄存器,其符号位与加法器符号位始终一致。位与加法器符号位始终一致。 当计数器时,封锁当计数器时,封锁和和控制信号,控制信号,使使最最最最后一步不移位。后一步不移位。后一步不移位。后一步不移位。定点运算器定点运算器定点原码一位除法定点原码一位除法定点原码一位除法定点原码一位除法 在在定定点点计计算算机机

52、中中,完完成成两两个个原原码码表表示示的的数数相相除除时时,商商的的符符号号由由两两数数的的符符号号位位按按位位异异或或得得到到,而而商商的的数数值值部分则是两个正数相除得到。部分则是两个正数相除得到。设设 被除数被除数 XX原原=X=Xf.f.X X1 1X X2 2X Xn n 除除 数数 YY原原=Y=Yf f.Y.Y1 1Y Y2 2Y Yn n则则 商商 QQ原原= =(X Xf f+ + Y Yf f). .(X X1 1X X2 2X Xn n/Y/Y1 1Y Y2 2Y Yn n)定点除法定点除法-定点原码一位除法定点原码一位除法 计算机中执行除法时,商的符号位由被除计算机中执

53、行除法时,商的符号位由被除数和除数的符号位通过一个半加器实现,对于数值数和除数的符号位通过一个半加器实现,对于数值部分,由于定点小数的绝对值小于部分,由于定点小数的绝对值小于1 1,如果被除数大,如果被除数大于或等于除数,则商就大于或等于于或等于除数,则商就大于或等于1 1,因而会产生溢,因而会产生溢出,这是不允许的。因此在执行除法以前,先要判出,这是不允许的。因此在执行除法以前,先要判别是否溢出,不溢出时才执行除法运算。判别溢出别是否溢出,不溢出时才执行除法运算。判别溢出的方法是被除数减去除数,若差为正,就表示溢出。的方法是被除数减去除数,若差为正,就表示溢出。 定点运算器定点运算器定点原码

54、一位除法定点原码一位除法手工计算除法的方法:手工计算除法的方法:设被除数为设被除数为X=0.1001X=0.1001,Y=0.1011,Y=0.1011,求求X/Y=?X/Y=?定点运算器定点运算器定点原码一位除法定点原码一位除法0.11010.10110.10010被除数被除数-0.01011除数右移除数右移1 1位位, ,减除数,商上减除数,商上1 10.001110得余数得余数r1r1-0.001011除数右移除数右移2 2位位, ,减除数,商上减除数,商上1 10.0000110得余数得余数r2r20.0001011除数右移除数右移3 3位位, ,不减除数,商上不减除数,商上0 00.

55、00001100得余数得余数r3 r3 -0.00001011除数右移除数右移4 4位位, ,减除数,商上减除数,商上1 1n0.00000001得余数得余数r4r4nX/Y=0.1101;余数;余数=0.0001*2-4原码一位除法原码一位除法-恢复余数法恢复余数法恢复余数法的运算规则恢复余数法的运算规则: : 计计算算机机中中进进行行除除法法时时,是是模模仿仿十十进进制制除除法法笔笔算算的的过过程程,但但又又不不能能完完全全照照搬搬。在在机机器器中中判判断断是是否否够够减减,必必须须先先做做减减法法,若若余余数数为为正正,表表示示够够减减;若若余余数数为为负负,表表示示不不够够减减 ,不不

56、够够减减时时,必必须须恢恢复复原原来来的的余余数数,以以便便再再继继续续往往下下运运算算,这这种种方方法法称称为为恢恢复复余余数数法法。要要恢恢复复原原来的余数,只要当前的余数加上除数即可。来的余数,只要当前的余数加上除数即可。原码一位除法原码一位除法-恢复余数法恢复余数法恢复余数法的缺点恢复余数法的缺点: : 当某一次减当某一次减Y Y的差值为负时的差值为负时, ,要多一次加要多一次加Y Y恢复恢复余数的操作余数的操作, ,降低了执行速度降低了执行速度, ,又使控制线路变得复杂又使控制线路变得复杂, ,因此在计算机中很少采用因此在计算机中很少采用. . 运算的步骤无法确定。运算的步骤无法确定

57、。原码一位除法原码一位除法加减交替法加减交替法加减交替法的规则:加减交替法的规则: 首先作首先作X-YX-Y,余数为正,表明产生溢出,应终止除法,余数为正,表明产生溢出,应终止除法运算;余数为负,上商为运算;余数为负,上商为0 0(作为商的符号位),然后重复(作为商的符号位),然后重复下述操作下述操作n n次,可得商的次,可得商的n n位数值位数值余数为正时,商为余数为正时,商为1 1,余数左移一位,减除数;余数为负时,余数左移一位,减除数;余数为负时,商为商为0 0 ,余数左移一位,加除数。,余数左移一位,加除数。 由于运算中余数共左移了由于运算中余数共左移了n n次,相当于乘次,相当于乘2

58、 2n n,故最后,故最后得余数应乘上得余数应乘上2 2-n-n才是真正的正确余数,余数符号与被除数才是真正的正确余数,余数符号与被除数相同。相同。原码一位除法原码一位除法加减交替法加减交替法解解: X: X原原=X=X补补=X=0.1001,Y=X=0.1001,Y补补=0.1011,-Y=0.1011,-Y补补=1.0101=1.0101 被除数被除数X/X/余数余数r r 商数商数q q 说说 明明0 0 . 1 0 0 11 1 . 0 1 0 11 1 . 1 1 1 01 1 . 1 1 0 00 0 . 1 0 1 10 0 . 0 1 1 10 0 . 1 1 1 01 1 .

59、 0 1 0 10 0 . 0 0 1 10 0 . 0 1 1 01 1 . 0 1 0 11 1 . 1 0 1 11 1 . 0 1 1 00 0 . 1 0 1 10 0 . 0 0 0 1+-Y补+Y补+-Y补+-Y补+Y补00.10.110.1100.1101X减Y余数r0为负余数r1为正余数r2为正余数r3为负余数r4为正商0,r和q左移一位商1,r和q左移一位商1,r和q左移一位商0,r和q左移一位加Y减Y减Y加Y商1,仅q左移一位原码一位除法原码一位除法加减交替法加减交替法Q=0.1101R=2-4*0.0001结果结果: :原码一位除法原码一位除法加减交替法加减交替法 原码

60、一位除法原码一位除法加减交替法加减交替法 寄存器为寄存器为n n位,是双向移位寄存器,位,是双向移位寄存器,R R0 0为双向移位寄为双向移位寄存器。存器。 除法开始前除法开始前R1R1可存放被除数的低可存放被除数的低n n位,位,R R0 0保存被除数或者保存被除数或者余数。余数。 在进商左移的过程中,被除数(余数)的低位部分由在进商左移的过程中,被除数(余数)的低位部分由串行移至串行移至。经。经n n步后,求得步后,求得n n位商。位商。 每次进商置于每次进商置于R R1 1的最末位,由加法器符号位的最末位,由加法器符号位f f来设置,来设置, 运算结束后运算结束后R R1 1存放存放n

61、n位的商,位的商,R R0 0中存放余数。中存放余数。补码一位除法补码一位除法加减交替法加减交替法补码加减交替除法的补码加减交替除法的算法规则算法规则如下:如下: (1 1)被被除除数数与与除除数数同同号号,被被除除数数减减去去除除数数;被被除除数数与与除除数异号,被除数加除数;数异号,被除数加除数; (2 2)余余数数和和除除数数同同号号,商商上上1 1,余余数数左左移移一一位位,余余数数减减去去除除数数得得新新余余数数;当当余余数数和和除除数数异异号号,商商上上0 0,余余数数左左移一位,余数加除数得新余数。移一位,余数加除数得新余数。 (3 3)重复步骤()重复步骤(2 2),包括符号位

62、在内,共做),包括符号位在内,共做n+1n+1步。步。 为为了了统统一一并并简简化化控控制制线线路路,一一开开始始上上一一次次假假商商,如如果果xx补补和和yy补补同同号号,假假商商上上1 1,正正好好控控制制下下一一次次做做减减法法;如如果果xx补补和和yy补补异异号号,假假商商上上0 0,正正好好控控制制下下一一次做加法。次做加法。 补码一位除法补码一位除法加减交替法加减交替法商的校正:商的校正: 在在没没有有特特殊殊精精度度要要求求的的情情况况下下,一一般般就就采采用用商商的的未未位位“恒置恒置1 1”的方式进行舍入,这样简单,便于实现。的方式进行舍入,这样简单,便于实现。 如如果果要要

63、提提高高精精度度要要求求,可可采采用用如如下下校校正正方方法法对对商商进进行行处理:处理: (1 1)刚刚好好解解除除尽尽时时,如如果果除除数数为为正正,商商不不必必校校正正;如如果除数为负,则商加果除数为负,则商加2 2-n-n。(最低位加。(最低位加1 1) (2 2)不能除尽时,如果商为正,则不必校正;如果商)不能除尽时,如果商为正,则不必校正;如果商为负,则商加为负,则商加2 2-n-n。补码一位除法补码一位除法加减交替法加减交替法余数的校正:余数的校正:(1 1)若商为正,则余数与被除数异号时,将余数加上除数)若商为正,则余数与被除数异号时,将余数加上除数得正确的余数;得正确的余数;

64、(2 2)若商为负,则余数与被除数异号时,余数需减去除数)若商为负,则余数与被除数异号时,余数需减去除数得正确余数。得正确余数。 余数之所以需要校正,是因为在补码不恢复余数除余数之所以需要校正,是因为在补码不恢复余数除法处理过程中先比较后上商的缘故。法处理过程中先比较后上商的缘故。补码一位除法补码一位除法加减交替法加减交替法补码一位除法的流程图补码一位除法的流程图补码一位除法补码一位除法加减交替法加减交替法例例:X=0.1001,Y=0.1011,:X=0.1001,Y=0.1011,求求X/YX/Y补补解解: : X X补补=0.1001=0.1001 Y Y补补=0.1011=0.1011

65、 -Y -Y补补=1.0101=1.0101补码一位除法补码一位除法加减交替法加减交替法解解:X:X补补=0.1001,Y=0.1001,Y补补=0.1011,-Y=0.1011,-Y补补=1.0101=1.0101被除数被除数/ /余数余数 商数商数 说明说明 0 0 . 1 0 0 11 1 . 0 1 0 11 1 . 1 1 1 01 1 . 1 1 0 00 0 . 1 0 1 10 0 . 0 1 1 10 0 . 1 1 1 01 1 . 0 1 0 10 0 . 0 0 1 10 0 . 0 1 1 01 1 . 0 1 0 11 1 . 1 0 1 11 1 . 0 1 1

66、00 0 . 1 0 1 10 0 . 0 0 0 10 0 . 0 0 0 1+-Y补+Y补+-Y补+-Y补+Y补1101011011101100.1101XX补补和和YY补补同号同号,q,q0 0=1=1减除数减除数加除数减除数减除数减除数加除数余数和除数异号余数和除数异号余数和除数同号余数和除数同号余数和除数同号余数和除数同号余数和除数异号余数和除数异号余数和除数同号余数和除数同号左移左移1 1位位, ,商商1 1左移左移1 1位位, ,商商1 1左移左移1 1位位, ,商商0 0左移左移1 1位位, ,商商1 1左移左移1 1位位, ,商商0 0补码一位除法补码一位除法加减交替法加减交

67、替法Q补=0.1101R补=0.0001*2-4结果结果: :课堂作业:课堂作业:1 1、已知、已知X=0.11001X=0.11001,Y=0.00111Y=0.00111,试用但符号位求,试用但符号位求X+YX+Y,并判断结果是否溢出?,并判断结果是否溢出?2 2、 已知已知X=-0.0100X=-0.0100,Y=0.1001Y=0.1001,试用补码运算方法,试用补码运算方法求求X-YX-Y,并判断结果是否溢出?,并判断结果是否溢出?3 3、 已知已知X=0.1101X=0.1101,Y=-0.1011Y=-0.1011,试用原码一位乘法,试用原码一位乘法求求4 4、 已知已知X=0.

68、1010X=0.1010,Y=-0.0110Y=-0.0110,试用补码一位乘法,试用补码一位乘法求求5 5、已知、已知 X=0.10110 X=0.10110,Y=0.11111Y=0.11111,试用原码加减交替,试用原码加减交替法计算法计算X/YX/Y2.5 2.5 定点运算器的组成定点运算器的组成2.5.1 2.5.1 逻辑运算逻辑运算2 2.5.2 .5.2 多功能算术多功能算术/ /逻辑运算单元逻辑运算单元ALUALU2.5.3 2.5.3 内部总线内部总线2.5.4 2.5.4 定点运算器的基本结构定点运算器的基本结构2.5 2.5 定点运算器的组成定点运算器的组成前面讲到的行波

69、进位加法器存在两个大问题:前面讲到的行波进位加法器存在两个大问题: 由于串行进位,所以它的运算时间较长。由于串行进位,所以它的运算时间较长。 只能完成算术运算,不能进行逻辑运算。只能完成算术运算,不能进行逻辑运算。2.5.1逻辑运算n自学P442.5.2 2.5.2 多功能算术多功能算术/ /逻辑运算单元逻辑运算单元ALUALU1.1.基本思想基本思想 一位全加器(一位全加器(FAFA)的逻辑表达式为:)的逻辑表达式为: F Fi i=A=Ai i+ B+ Bi i+ C+ Ci i C Ci+1i+1=A=Ai iB Bi i+B+Bi iC Ci i+C+Ci iA Ai i 为了将全加器

70、的功能进行扩展以完成多种算术逻辑为了将全加器的功能进行扩展以完成多种算术逻辑运运算,我们先不将输入算,我们先不将输入A Ai i和和B Bi i和下一位的进位和下一位的进位C Ci i直接进行全直接进行全加,而是将加,而是将A Ai i和和B Bi i先组合成由控制参数先组合成由控制参数S S0 0,S S1 1,S S2 2,S S3 3控制控制的组合函数的组合函数X Xi i和和Y Yi i,然后再将,然后再将X Xi i,Y Yi i和下一位进位数通过全和下一位进位数通过全加器进行全加,这样,不同的控制参数可以得到不同的组加器进行全加,这样,不同的控制参数可以得到不同的组合函数,因而能够

71、实现多种算术运算和逻辑运算。合函数,因而能够实现多种算术运算和逻辑运算。2.5.2 2.5.2 多功能算术多功能算术/ /逻辑运算单元逻辑运算单元ALUALUS1全加器函数发生器FiCn+i+1Cn+iXiYiAiBiS0S2S3S0S1 YiS2S3Xi000010101101011011Xi、Yi与控制参数和输入量的关系2.5.2多功能算术/逻辑运算单元ALU1 1、可以证明:、可以证明:Xi+Yi=Xi Xi+Yi=Xi Xi.Yi=YiXi.Yi=Yi(自己试试看)(自己试试看)2、2.5.2多功能算术/逻辑运算单元ALUnALU的某一位逻辑表达式见下:2.5.2多功能算术/逻辑运算单

72、元ALUn4位ALU 多功能算术多功能算术/ /逻辑运算单元逻辑运算单元n每一位的进位公式可递推如下:每一位的进位公式可递推如下: Cn+1=Y0+X0CnCn+2=Y1+X1Cn+1=Y1+Y0X1+X0X1CnCn+3=Y2+X2Cn+2=Y2+X2Y1+Y0X1X2+X0X1X2CnCn+4=Y3+X3Cn+3=Y3+X3Y2+X2X3Y1+Y0X1X2X3+X0X1X2X3Cn2.5.2 2.5.2 多功能算术多功能算术/ /逻辑运算单元逻辑运算单元ALUALU令GY3Y2X3Y1X2X3Y0X1X2X3 PX0X1X2X3G G为进位发生输出为进位发生输出 P P为进位传送输出为进位

73、传送输出增加增加P P和和G G的目的在于实现多片(组)的目的在于实现多片(组)ALUALU之间的先行进之间的先行进位,需要配合电路,称为先行进位发生器(位,需要配合电路,称为先行进位发生器(CLACLA)器件:器件: 74181741812.5.2 2.5.2 多功能算术多功能算术/ /逻辑运算单元逻辑运算单元ALUALU具有正逻辑和负逻辑两种具有正逻辑和负逻辑两种内部逻辑结构图见下页内部逻辑结构图见下页74181ALU逻辑图(总体)2.5.2多功能算术/逻辑运算单元ALUn算术逻辑运算的实现(74181)M=0时,对进位信号没有影响,做算术运算M=1时,进位门被封锁,做逻辑运算n说明:74

74、181执行正逻辑输入/输出方式的一组算术运算和逻辑运算和负逻辑输入/输出方式的一组算术运算和逻辑运算是等效的。A=B端可以判断两个数是否相等。2.5.2多功能算术/逻辑运算单元ALU设计16位ALUCn+x=G0+P0CnCn+y=G1+P1Cn+xCn+x=G2+P2Cn+yCn+4=G3+P3Cn+z片内先行进位,片间串行进位32位ALU逻辑方框图2个个16位位74L1828个个4位位ALU74L18164位组间先行进位ALU2.5.4 2.5.4 内部总线内部总线n内部总线内部总线是指是指CPUCPU内部各部件的连线。内部各部件的连线。由三态门组成的数据总线由三态门组成的数据总线2.5.

75、5 2.5.5 定点运算器的基本结构定点运算器的基本结构运算器包括运算器包括ALUALU、阵列乘除器件、寄存器、多路开关、阵列乘除器件、寄存器、多路开关、三态缓冲器、数据总线等逻辑部件。计算机的运算器三态缓冲器、数据总线等逻辑部件。计算机的运算器的结构一般有三种。的结构一般有三种。2.5.5 2.5.5 定点运算器的基本结构定点运算器的基本结构ABALU通用寄存器特殊寄存器单总线结构的运算器单总线结构的运算器输入数据和操作结输入数据和操作结构需要三次串行的选构需要三次串行的选通操作,但它并不会通操作,但它并不会对每种指令都增加很对每种指令都增加很多执行时间。由于只多执行时间。由于只控制一条总线

76、,所以控制一条总线,所以控制电路比较简单。控制电路比较简单。通用寄存器特殊寄存器特殊寄存器ALU缓冲器总线1总线2两个操作数同时加到两个操作数同时加到ALUALU进行运算,只需要一进行运算,只需要一次操作控制,而且马上得次操作控制,而且马上得到运算结果。到运算结果。ALUALU的输出不能直接加到总线上去,的输出不能直接加到总线上去,这是因为,当形成操作结构的输出时,这是因为,当形成操作结构的输出时,两条总线都被输入数据占据,因而必两条总线都被输入数据占据,因而必须在须在ALUALU的输出端设置缓冲器的输出端设置缓冲器。双总线结构的运算器双总线结构的运算器2.5.52.5.5定点运算器的基本结构

77、定点运算器的基本结构2.5.5 2.5.5 定点运算器的基本结构定点运算器的基本结构通用寄存器ALU特殊寄存器总线旁路器总线1总线2总线3ALUALU的两个输入端分别由总线提供,而的两个输入端分别由总线提供,而ALUALU的输出则与第三条总线相连。这样,的输出则与第三条总线相连。这样,算术逻辑操作就可以在一步的控制之内完成。算术逻辑操作就可以在一步的控制之内完成。设置一个总线旁路器,如果一个操作数不需要修改,而直接从总线设置一个总线旁路器,如果一个操作数不需要修改,而直接从总线2 2传送到总传送到总线线3 3,那么可以通过控制总线旁路器把数据传出。,那么可以通过控制总线旁路器把数据传出。三总线

78、结构2.6 2.6 浮点运算方法和浮点运算器浮点运算方法和浮点运算器2.6.1 2.6.1 浮点加法、减法运算浮点加法、减法运算2.6.2 2.6.2 浮点乘法、除法运算浮点乘法、除法运算2.6.3 2.6.3 浮点运算流水线浮点运算流水线2.6.4 2.6.4 浮点运算器实例浮点运算器实例2.6.1 2.6.1 浮点加法、减法运算浮点加法、减法运算1 1、浮点加减运算、浮点加减运算设有两个浮点数和设有两个浮点数和, ,它们分别为它们分别为2 2E EM M2 2E EM M其其中中E E和和E E分分别别为为数数和和的的阶阶码码,M,M和和M M为为数数和和的的尾尾数数。两两浮浮点点数数进进

79、行行加加法法和和减减法法的的运运算算规则是规则是(M(M2 2E EE EM M)2)2E E,设设E E E E2.6.1 2.6.1 浮点加法、减法运算浮点加法、减法运算2 2、浮点运算步骤如下:浮点运算步骤如下:1. 0 1. 0 操作数的检查操作数的检查, ,看有无简化操作的可能;看有无简化操作的可能;2. 2. 比较阶码大小并完成对阶(小阶向大阶对齐);比较阶码大小并完成对阶(小阶向大阶对齐);3. 3. 尾数进行加、减运算;尾数进行加、减运算;4. 4. 结果规格化并进行舍入处理结果规格化并进行舍入处理结果规格化:结果规格化:当尾数求和的结果两符号位不相等时,表明尾当尾数求和的结果

80、两符号位不相等时,表明尾数求和的结果的绝对值大于数求和的结果的绝对值大于1 1,向左破坏了规格化,此时将,向左破坏了规格化,此时将尾数结果实现右规格化,即结果右移一位,阶码加尾数结果实现右规格化,即结果右移一位,阶码加1 1,尾数,尾数不是不是1.M1.M时,进行左规格化;时,进行左规格化;舍入处理:舍入处理:在进行对阶或右规格化时,被右移尾数的末位会在进行对阶或右规格化时,被右移尾数的末位会被丢掉,为减小误差,需进行舍入处理:被丢掉,为减小误差,需进行舍入处理:1 1、就近舍入:即为、就近舍入:即为“0 0舍舍1 1入入”;2 2、朝、朝0 0舍入:即朝数轴原点方向舍入;舍入:即朝数轴原点方

81、向舍入;3 3、朝、朝+舍入:对正数来讲,多余位不全为舍入:对正数来讲,多余位不全为0 0则向最低有效则向最低有效位进位进1 1,负数则是截尾;,负数则是截尾;4 4、朝、朝-舍入:正数截尾,负数向最低有效位进舍入:正数截尾,负数向最低有效位进1 1浮点运算器浮点运算器加法、减法运算加法、减法运算例:设例:设X=2X=2010010*0.11011011*0.11011011, Y=2Y=2100100* *(-0. -0. 1010110010101100),求求X+Y.(X+Y.(假假设设两两数数均均以以补码表示补码表示, ,阶码、尾数都采用双符号位阶码、尾数都采用双符号位.).)浮点运算

82、器加法、减法运算解解: :浮点表示为浮点表示为: : X X浮浮= 00 010= 00 010, 00. 1101101100. 11011011 YY浮浮= 00 100= 00 100, 11. 0101010011. 01010100()对阶()对阶 E=Ex-Ey=00010+11100=11110 E=Ex-Ey=00010+11100=11110 即即 E E为为-2-2,X X的的阶码小,应使阶码小,应使MxMx右移两位,右移两位, ExEx加加2 2,得,得: : X X浮浮=00100, 00.00110110(11)=00100, 00.00110110(11)浮点运算器

83、加法、减法运算+(2).尾数求和 0 0()1 11 1()浮点运算器浮点运算器加法、减法运算加法、减法运算( (3).3).规格化和舍入处理规格化和舍入处理 结果的符号位与最高符号数值位相同,应执行左规处理,所谓结果的符号位与最高符号数值位相同,应执行左规处理,所谓左规格化的规则,就是尾数左移左规格化的规则,就是尾数左移1 1位,阶码减位,阶码减1 1,所以结果为,所以结果为11.00010101(10) 11.00010101(10) ,阶码为,阶码为00 01100 011 舍入处理舍入处理, ,采用采用0 0舍舍1 1入法处理,则有入法处理,则有 11. 0 0 0 1 0 1 0 1

84、11. 0 0 0 1 0 1 0 1 1 1 11. 0 0 0 1 0 1 1 0 11. 0 0 0 1 0 1 1 0(4).(4).判溢出判溢出 阶码的符号位为阶码的符号位为0000,不溢出。所以最终的结果为,不溢出。所以最终的结果为 X+Y=2X+Y=2011011* *(-0.11101010-0.11101010)浮点运算器浮点运算器加法、减法运算加法、减法运算例例:设设X=2X=2001001* *(-0.111-0.111),Y=2Y=2010010*0. *0. 101101,求求X-Y.(X-Y.(假假设设两两数数均均以以补补码码表表示示, ,阶阶码码采采用用3 3位位

85、, ,尾尾数数采采用用4 4位位,均均包包括符号位括符号位.).)浮点运算器浮点运算器加法、减法运算加法、减法运算解解: :浮点表示为浮点表示为: : X X浮浮=001=001,11. 00111. 001 YY浮浮=010=010,00. 10100. 101()对阶()对阶EE补补=Ex=Ex补补-Ey-Ey补补=001+110=111=001+110=111 即即E E为为-1-1,X X的阶码小,应使的阶码小,应使MxMx右移右移1 1位,位, ExEx加加1 1,得,得: : X X浮浮=010, 11.100=010, 11.100(1 1)浮点运算器加法、减法运算+(2).(2

86、).尾数求差尾数求差: -Y: -Y补补=1.011=1.011 11.100(1)11.01110.111(1)丢失1两个负数相加两个负数相加, ,结果为结果为正数正数, ,说明产生了溢出说明产生了溢出. .但是在浮点数的运算中,只有当阶码产生溢出时,但是在浮点数的运算中,只有当阶码产生溢出时,才是溢出。此时只是说明尾数的结果为不规格化数,才是溢出。此时只是说明尾数的结果为不规格化数,应进行右规。应进行右规。浮点运算器浮点运算器加法、减法运算加法、减法运算( (3).3).规格化和舍入处理规格化和舍入处理 由于结果产生了溢出,应执行右规处理,所谓右规格化的规由于结果产生了溢出,应执行右规处理

87、,所谓右规格化的规则,就是尾数右移则,就是尾数右移1 1位,阶码加位,阶码加1 1,所以结果为,所以结果为1.011(1) 1.011(1) ,阶码,阶码为为011011 舍入处理舍入处理, ,采用恒舍法处理,则有尾数为采用恒舍法处理,则有尾数为11.01111.011 浮点运算器加法、减法运算(4).(4).判溢出判溢出 阶码不溢出。所以最终的结果为阶码不溢出。所以最终的结果为 X-Y=2X-Y=2011011* *(-0.101-0.101)浮点运算器浮点运算器乘除乘除运算运算浮点数的乘除法:浮点数的乘除法: 设有两个浮点数的分别为设有两个浮点数的分别为X=MX=Mx x*2*2ExEx,

88、Y=MY=My y*2*2EyEy,则浮点数乘法运算规则:则浮点数乘法运算规则: X*Y=2X*Y=2(E EX X+E+EY Y)* *(M MX X*M*MY Y) 设有两个浮点数的分别为设有两个浮点数的分别为X=MX=Mx x*2*2ExEx,Y=MY=My y*2*2EyEy,则浮点除法运算规则:则浮点除法运算规则: X*Y=2X*Y=2(E EX X-E-EY Y)* *(M MX XM MY Y)浮点运算器浮点运算器乘除运算乘除运算浮点乘、除法的运算步骤:浮点乘、除法的运算步骤:1.1.浮点数的阶码运算浮点数的阶码运算 阶码通常用补码和移码形式表示。对于移码来说:阶码通常用补码和移

89、码形式表示。对于移码来说: X+YX+Y移移=X=X移移+Y+Y补补 X-YX-Y移移=X=X移移+-Y+-Y补补 使用双符号位的阶码加法器使用双符号位的阶码加法器, ,并规定移码的第二个符号位并规定移码的第二个符号位, ,即最高符号位恒用即最高符号位恒用 0 0 参加加减运算参加加减运算, ,则溢出条件是结果的最则溢出条件是结果的最高符号位为高符号位为1 1。此时。此时, ,当低位符号位为当低位符号位为 0 0时时, ,表明结果上溢表明结果上溢, ,为为1 1时时, ,表明结果下溢。表明结果下溢。 当最高符号位为当最高符号位为0 0时时, ,表明没有溢出;低位符号位为表明没有溢出;低位符号位

90、为 1,1,表明结果为正;为表明结果为正;为 0 0 时时, ,表明结果为负。表明结果为负。浮点运算器浮点运算器乘除乘除运算运算 例例 011,011,110,110,求求 移移 和和 移移, ,并判断是否溢出。并判断是否溢出。 解解: 移移01 011, 01 011, 补补00 110, 00 110, 补补11 01011 010 移移 移移 补补10 001, 10 001, 结果上溢。结果上溢。 移移 移移 补补00 101, 00 101, 结果结果正确正确, ,为为3 3。浮点运算器浮点运算器乘除乘除运算运算2.2.浮点数的尾数处理浮点数的尾数处理第一种方法:无条件地丢掉正常尾数

91、最低位之后的全部第一种方法:无条件地丢掉正常尾数最低位之后的全部数值,这种方法称为截断处理。数值,这种方法称为截断处理。第二种方法:运算过程中保留右移中移出的若干高位的第二种方法:运算过程中保留右移中移出的若干高位的值,最后按某种规则用这些位上的值修正尾数,这值,最后按某种规则用这些位上的值修正尾数,这种处理称为舍入处理种处理称为舍入处理。浮点运算器浮点运算器流水线流水线1.1.流水线原理流水线原理 为了实现流水为了实现流水, ,首先必须把输入的任务分割为一首先必须把输入的任务分割为一系列的子任务,使各子任务能在流水线的各个阶段并发地系列的子任务,使各子任务能在流水线的各个阶段并发地执行。是在

92、计算机上实现执行。是在计算机上实现时间并行性时间并行性的一种非常经济的方的一种非常经济的方法。法。 在流水线中,原则上要求各个阶段的处理时间在流水线中,原则上要求各个阶段的处理时间都相同。若某一阶段的处理时间较长都相同。若某一阶段的处理时间较长, ,势必造成其他阶段势必造成其他阶段的空转等待。因此对子任务的划分的空转等待。因此对子任务的划分, ,是决定流水线性能的是决定流水线性能的一个关键因素,它取决于操作部分的效率、所期望的处理一个关键因素,它取决于操作部分的效率、所期望的处理速度,以及成本价格等等。速度,以及成本价格等等。浮点运算器浮点运算器流水线流水线假定作业假定作业 T T 被分成被分

93、成 k k 个子任务,可表达为个子任务,可表达为 T TTT1 1,T,T2 2, ,T,Tk k 各个子任务之间有一定的优先各个子任务之间有一定的优先关系:若关系:若ij,ik nk 时时, C, Ck k k k 。这就是说。这就是说, ,理论上理论上k k级线级线性流水线性流水线处理几乎可以提高处理几乎可以提高k k倍速度。倍速度。 但实际上由于存储器冲突、数据相关但实际上由于存储器冲突、数据相关, ,这个理想这个理想的加的加速比不一定能达到。速比不一定能达到。流水线浮点运算器流水线浮点运算器A Aa a2 2P,P,B Bb b2 2q q在在4 4级流水线加法器中实现上述浮点加法时级

94、流水线加法器中实现上述浮点加法时, ,分为以下分为以下操作:操作:(1) (1) 求阶差求阶差(2) (2) 对阶对阶(3) (3) 相加相加(4) (4) 规格化规格化浮点运算器浮点运算方法浮点运算器1.CPU之外的浮点运算器总线接口部件数值运算部件控制字状态字指数模块数据缓冲器控制部件特征字操作数队列微程序控制部件可编程移位器算术运算部件临时寄存器寄存器栈数据状态地址NEU指令数据总线小数总线接口第二章第二章 运算方法和运算器小结运算方法和运算器小结一一. .数据的表示方法数据的表示方法 1.1.数据的格式:定点和浮点数据的格式:定点和浮点 2.2.数据的机器码:原码、补码、反码和移码。数

95、据的机器码:原码、补码、反码和移码。 3.3.校验码:奇偶校验码、海明码、校验码:奇偶校验码、海明码、 循环冗余循环冗余码。码。二二. .定点加法、减法运算定点加法、减法运算 1.1.补码的加法、减法运算补码的加法、减法运算 2.2.溢出及检查溢出及检查 3.3.基本的二进制加法基本的二进制加法/ /减法器减法器 4.4.十进制加法器十进制加法器第二章第二章 运算方法和运算器小结运算方法和运算器小结三三. .定点乘法运算定点乘法运算 1.1.原码一位乘法原码一位乘法 2.2.补码一位乘法补码一位乘法 3.3.原码并行乘法原码并行乘法 4.4.补码并行乘法补码并行乘法四四. .定点除法运算定点除

96、法运算 1.1.原码一位除法(加减交替法)原码一位除法(加减交替法) 2.2.补码一位除法(加减交替法)补码一位除法(加减交替法) 3.3.原码并行除法原码并行除法 4.4.补码并行除法补码并行除法第二章第二章 运算方法和运算器小结运算方法和运算器小结五五. .定点运算器的组成定点运算器的组成 1.1.多功能算术多功能算术/ /逻辑运算单元逻辑运算单元 2.2.内部总线内部总线 六六. . 浮点运算方法和运算器浮点运算方法和运算器作业作业1.P63 1.P63 第二题;第第二题;第5 5题第(题第(1 1)、()、(2 2)题;)题; 第第6 6题第题第(1)(1)题题2.2.用原码一位乘法、补码一位乘法计算用原码一位乘法、补码一位乘法计算 X=0.11011; Y=-0.1111X=0.11011; Y=-0.11113.3.P64-9(1)

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 研究生课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号