运算方法和运算器(1).ppt_第1页
运算方法和运算器(1).ppt_第2页
运算方法和运算器(1).ppt_第3页
运算方法和运算器(1).ppt_第4页
运算方法和运算器(1).ppt_第5页
已阅读5页,还剩165页未读 继续免费阅读

下载本文档

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

文档简介

计算机组成原理,主讲教师: 赵 岚,第二章 运算方法和运算器,数据信息的表示方法 定点加、减法运算 定点乘法运算 定点除法运算 定点运算器的组成与结构 浮点运算方法和浮点运算器,一、计算机中的信息表示,掌握: 数制及其转换, 码制及其转换, 定、浮点数表示方法及标准格式,2-1 数制与转换,数据信息分为:数值数据和非数值数据; 数值数据指该数据有确定的数值。表示数值数据的三要素:小数点、进位计数制和符号。 非数值数据是指文字、符号等。,数制中所使用的数码的个数称为“基数” r ; 某数制的数中每一位所具有的值称为“权”ri 进位计数制 人用符号计数的科学方法 二进制 八进制 十进制 十六进制 二十进制(BCD码),数制 数码 进位方法 基数 二 0,1 逢2进1 2 八 07 逢8进1 8 十 09 逢10进1 10 十六 09, A F 逢16进1 16,数制间转换 原则:整数变整数,小数变小数; 十进 二进 整数部分:除2取余倒排,直到商为0 ; 小数部分:乘2取整,直到小数位为0 ; 例: (13.8125)10,(13.8125)10 首先,转换整数部分13 2 13 2 6 1 2 3 0 2 1 1 0 1 结果:1101 然后,转换小数部分.8125 0.81252=1.625 1 0.625*2 =1.25 1 0.25*2 =0.5 0 0.5*2 =1.0 1 小数结果:0.1101 综合结果为 (13.8125)10 (1101.1101)2,二进,八进,十六进 十进 按N展开式求和 例: (11001.101)2 (27451.12)8 (2AD.1C)16,(11001.101)2 0 ,(27451.12)8 (2AD.1C)16 ,二进 十六进 以小数点为中心分界 每4位分为一段,不足补0 每一段用相应的十六进制数取代 例: (1101110.01011)2 注:如果转换为八进制,则每3位分一段即可然后每一段用相应的八进制数取代.,(1101110.01011)2 (?) 16 01101110.01011000,(1101110.01011)2 (?) 8 001101110.010110 1 5 6 . 2 6,6 E . 5 8,思考: 十六进制和八进制数如何转换成为二进制数?,2- 数据在计算机中的表示,所谓编码,就是用少量简单的基本符号,选用一定的组合规则,以表示出大量复杂多样的信息。 常用的信息分为: 定点数(fixed-point) 数值信息 浮点数(floating-point) 字符(character) 非数值信息 汉字(Chinese character 逻辑数据(logical data),字符编码,用一定位数的二进制数“0”和“1”进行编码给出。 常用的字符编码ASCII (American Standard Code for Information Interchange)码。 ASCII码是美国信息交换标准代码。包括0-9十个数字,大小写英文字母及专用符号等95种可打印字符。另有33不可打印字符,被用于控制码。 中文编码 汉字输入码:为便于汉字进行输入时的编码,将汉字代码化。 汉字机内码:用于汉字信息的存储、交换、检索等操作的机内代码。一般用两个字节表示。 汉字字型码:汉字输出时的编码。用点阵表示。,数值信息的编码,在选择计算机数值信息的表示方式时需要考虑的主要因素有以下几点: 要表示的数的类型; 可能遇到的数值范围; 数值精确度; 数据存储和处理所需要的硬件代价,数值数据真值与机器数,对二进制来说,真值与机器数的区别主要在符号 的表示方法上。 数值前正号用“+”表示,负号用“-”表示的数 称为真值;数值前正号用“0”表示,负号用“1”表 示的数称为机器数。 如:真值: +0.1011 -0.0010 机器码(原码): 0.1011 1.0010,数值数据数的机器码表示,在计算机中对数据进行运算操作时,符号位如何表示呢?是否也同数值位一道参加运算操作呢?为了妥善的处理好这些问题,就产生了把符号位和数字位一起编码来表示相应的数的各种表示方法,如原码、补码、反码、移码等。通常将前者称为真值,后者称为机器数或机器码。,数值数据原码表示法,定点小数X表示: Ns. N1 N2 Nn 定义: X 原= 定点整数X表示:Ns N1 N2 Nn 定义: X 原=,X, 0 X 1,1-X, -1 X 0,X, 0 X 2n,2n-X, - 2n X 0,数值数据原码表示法,实例:X1 = 0.10110 -0.10110 0.0000 X 原= 0.10110 1.10110 0.0000 1.0000 实例:X1 = 10110 -10110 0000 X 原= 010110 110110 00000 10000,数值数据原码表示法,性质: 原码为符号位加上数的绝对值,0正1负 原码零有两个编码,+0和 -0编码不同 原码难以用于加减运算,但乘除方便 N+1位二进制原码所表示的范围为: 小数:MAX=1-2-n ,MIN=( 1-2-n ) 整数:MAX= 2n-1, MIN=( 2n-1),数值数据原码表示法,原码的优点是:简单易懂。 缺点是:难以用于加减运算。 原因是:如果是异号相加,则要进行减法运算。首先要比较绝对值的大小,然后大数减小数,最后确定符号。 为了便于加减运算,采用了补码表示。,数值数据补码表示法,补码是在“模”和“同余”的概念下导出的。 “模”是指一个计量系统的计量范围,即产生“溢出”的量。 在计算机中,机器能表示的数据位数是一定的,其运算都是有模运算。如果是n位整数,其模为2n。如果是n位小数,其模为2。 若运算结果超出了计算机所能表示的数值范围,则只保 留它的小于模的低n位的数值,超过n位的高位部分就自动舍弃 了。,数值数据补码表示法,定义: 任意一个X的补码为X补,可以用该数加上其模M来表示。 X补=X+M,数值数据补码表示法,定点小数表示: Ns. N1 N2 Nn 定义: X 补 = (MOD 2) 定点整数表示:Ns N1 N2 Nn 定义: X 补 = (MOD 2n+1),X,2+ X,0 X 1,-1 X 0,X,2n+1 + X;,0 X 2n,- 2n X 0,数值数据补码表示法,实例:X1 = 0.10110 -0.10110 0.0000 X 补 = 0.10110 1.01010 0.0000 实例:X1 = 10110 -10110 0000 X 补 =010110 101010 00000,数值数据补码表示法,由于正数的补码就是正数本身,故着重讲解负数求补码的方法。,负数求补码,数值数据补码表示法,(1)由定义求 例:,X补=2+X,=10+(-0.1101001),=1.0010111,数值数据补码表示法,例: X=- 1101001 解:,X补=28+X,=100000000+(-1101001),=10010111,反过来,由补码求真值,只要将公式进行交换即可。,数值数据补码表示法,(2)由原码求补码 除符号位以外,其余各位求反,末位加1。 例:X=- 0.0101011 解:,X原= 1 0 1 0 1 0 1 1,X补=,1,1,1,1,0,0,0,0,+,1,1 1 0 1 0 1 0 1,由补码求原码,此规则同样适用。,数值数据补码表示法,由原码求补码的简便原则: 从最低位开始遇到的第一个1以前的各位保持不变, 其余各位除符号位以外,其它按位取反 。,例:X原= 1 1 0 1 1 0 1 0 0,X补=,1 0 1 0 0 1,1 0 0,1 0 0,由-X补求X补,此规则同样适用。,数值数据补码表示法,(3)由X补求-X补:连符号位一起各位求反,末位加1。 例:X补=1.1010101 解:,X补= 1 1 0 1 0 1 0 1,-X补=,0,0,0,0,1,1,1,0,+,1,0 0 1 0 1 0 1 1,数值数据补码表示法,性质: 0的补码是唯一的 补码便于加减运算 n+1位补码所能表示的数的范围: 小数:MAX=1-2-n ,MIN=1 整数:MAX= 2n-1, MIN= 2n,数值数据补码表示法,补码便于加减运算,因为不论正、负数它只需要做加运算。但负数的求补需要做一次加运算,显然有不方便,为此又引入了反码。,数值数据反码表示法,定点小数表示: Ns. N1 N2 Nn 定义: X 反= 定点整数表示:Ns N1 N2 Nn 定义: X 反=,X,(2-2-n )+ X,0 X 1,-1 X 0,X; 0 X 2n,( 2n+1 1)+ X; - 2n X 0,数值数据反码表示法,由原码求反码,如果X为正数,则X反=X原;如果X为负数,则将X原除符号位以外,每位都变反,可得到X反。 实例:X1 = 0.10110 -0.10110 0.0000 X 原 = 0.10110 1.10110 0.0000 1.0000 X 反 = 0.01001 1.01001 0.0000 1.1111,数值数据反码表示法, X 反 =2+ X -2-n X 补 = 2+ X 所以当x的真值为负数时: 有 X 补 = X 反 + 2-n,数值数据移码表示法,对于n+1位数x0 x1 x2 xn 定义: X 移 =2n+x; 由于移码是在原值X上加一个2n,所以也称为增码,因此,符号为1时,表示正数,符号为0时,表示负数。 例如:X=1101010, 则:X补= 01101010 X移=27+X =11101010,-2n X 2n,数值数据移码表示法,例如:X=-1101010, 则:X补=28+X = 10010110 X移=27+X =00010110 结论: 由X补求X移:只要将X补的符号位变反,就 可得到X移,数值数据移码表示法,零的移码是唯一的, 即:+0移= 0移= 10000 性质: 若X1移X2移,则有 X1X2 浮点数的阶码常用移码来表示的原因, 就是用到了该性质。,练习:请写出下列各数的原码、反码、补码、移码,(1)+1011001 (2)-1000101 (3)+0.01011,四种码制的比较,1)移码最高位为“0”表示负数,最高位为“1”表示正数。这与原码、补码、反码的符号位正好相反。 2)原码、补码、反码对于正数,它们都等于真值本身,而对于负数各有不同的表示。 3)最高位都表示符号位。补码、反码和移码的符号位可作为数值位的一部分看待,和数值位一起参加运算,但原码的符号位不允许和数值位同等看待,必须分开进行处理。 4)对于真值0,原码和反码各有两种不同的表示形式,而补码、移码是唯一的。,例1,以n+1定点整数为例,用数轴形式说明原码、反码、 补码表示范围和可能的数码组合情况。,例2,将十进制真值(127,1,0,1,127)列表表 示成二进制数及原码、反码、补码、移码值。 解: 二进制真值及其诸码值列于下表,其中0在原反中有两种表示。由表中数据可知,补码值与移码值差别仅在于符号位不同。,数值数据定点数的表示方法,定点表示:约定机器中所有数据的小数点位置是固定不变的。由于约定在固定的位置,小数点就不再使用记号“.”来表示。通常将数据表示成纯小数或纯整数。 定点数xx0x1x2xn 在定点机中表示如下(0为符号位,0代表正号,1代表负号):,纯小数的表示范围为(x0x1x2xn 各位均为0 时最小;各位均为1时最大) 0|12n 纯整数的表示范围为 0|2n1,例3,设机器字长16位,定点表示,尾数15位,数符1位,问: (1)定点原码整数表示时,最大正数是多少?最小负数是多少? (2)定点原码小数表示时,最大正数是多少?最小负数是多少?,解:,(1)定点原码整数表示 最大正数值(2151)10(32767)10 0111 1111 1111 1111 最小负数值(2151)10(32767)10 1111 1111 1111 1111 (2)定点原码小数表示 最大正数值(1215)10(0.111.11)2 最小负数值(1215)10(0.11111)2,例,若为定点整数,采用一位符号位,如果寄存器中的内容为10000001,当它分别表示原码、补码、反码、移码和无符号数时,问对应的真值为多少? 解: 原码的真值为: 补码的真值为: 反码的真值为: 移码的真值为: 无符号数的真值为:,-1,-127,-126,1,129,数值数据浮点数表示法,定义: 任意一个R进制都可以通过移动小数点的位置写成 N=RE*M 式中: R是基数,可以取2,8,16,一旦定义则不能改变,是隐含的。 M是尾数,为纯小数 ,表示数N的有效数字位数。决定了浮点数的精度。 E是阶码,为纯整数,指出小数点在该数中的位置。决定了浮点数的大小。 由于阶码可以取不同的数值,所以,小数点的位置是不确定的,因而称之为浮点数。,数值数据浮点数表示法,由于基数在系统中是隐含约定的,不需要用代码表示,所以浮点数只需用一对定点数(阶码和尾数)表示,其中,符号表示数的正负,阶码表示小数点的位置,而尾数表示有效数字。,数值数据浮点数表示法,数的表示范围: 设m和n分别表示阶码和尾数的位数(均不包含符号位),阶码和尾数均用原码表示,则浮点数的表示范围是: - 2 2m-1 (1-2-n)N2 2m-1(1-2-n),思考:如果尾数和阶码各用补码表示,则浮点数的表数范围如何?,数值数据浮点数表示法,最大正数为: 最小负数为: 最小正数为: 最大负数为:,数值数据浮点数表示法,规格化定义: 所谓规格化数,就是非0的尾数,其绝对值应大于或等于05。 判别方法: 原码规格化后,正数为0.1的形式 负数为1.1的形式 补码规格化后,正数为0.1的形式 负数为1.0的形式,数值数据浮点数表示法,规格化: 存储在计算机中的浮点数以及运算结果的浮点数都应为规格化数,如果尾数不是规格化数,要用修改阶码同时尾数移位的方法把他变为规格化数,这种处理过程,称为规格化。,例题: 设浮点数字长16位,其中阶码5位(含1位阶符),尾数11位(含1位数符),将十进制数13/128写成二进制定点数和浮点数,并分别写出定点和浮点的机器码形式。,解:令x=13/128 则其二进制形式为: x=0.0001101000 定点数表示为: x=0.0001101000 浮点数规格化表示为: x=0.1101000000*2-11,定点运算器定点加减法,补码的加法运算 任意两个数的补码之和,等于该两数和的补码。 X补+Y补=X+Y补 两个数不管正负,均用补码表示,符号位应当作为数值位参加运算,符号位相加所产生的进位要丢掉,结果为补码。,加法公式的证明,现分四种情况来证明。假设采用定点小数表 示,因此证明的先决条件是 1, 1, 1。 (1)0,0,则0。 由补码定义可得: 补补补 (mod 2) (2)0,0,则0或0。 相加的两数一个为正,一个为负,因此相加结 果有正、负两种可能。根据补码定义,,加法公式的证明, 补, 补2 补补22() 当0时, 2 () 2,进位2必丢 失,又因()0, 故补补补(mod 2) 当0,则0或 0。 这种情况和第2种情况一样,把和的位置对调 即得证。,加法公式的证明,(4)0,0,则0。 相加两数都是负数,则其和也一定是负数。 补2, 补2 补补222(2)=2+x+y 所以 补补2()补 (mod 2) 至此我们证明了,在模2意义下,任意两数的补码 之和等于该两数之和的补码.这是补码加法的理论基 础,其结论也适用于定点整数,定点运算器 定点加减法,例: X0.1011 Y-0.0101,求 X+Y? 解:,X补=0. 1 0 1 1,Y补=1. 1 0 1 1,+,0,1,1,0,10.,丢掉,1,X补+Y补=0.0110 X+Y=0.0110,定点运算器 定点加减法,例: X-11001 ,Y-00011,求 X+Y? 解:,X补=1 0 0 1 1 1,Y补=1 1 1 1 0 1,+,0,0,1,0,1 1,丢掉,1,X补+Y补=100100 X+Y=-11100,0,定点运算器定点加减法,补码的减法: X-Y补=X补-Y补=X+(-Y)补=X补+-Y补 (-Y)的补码称为Y补的机器负数,由Y补求-Y补的过程称为将Y补“变补”或对Y补求补,由Y补求-Y补的方法是,不管Y的真值为正或为负,都是将Y补的各位连同符号位在内全变反后,最低位加1。,下面证明-Y 补= -Y补, x+y补=x补+ y补 ( mod 2) y补 = x+y补-x补 (a) 又 x-y补=x+(-y)补=x补+ -y补 -y补 = x-y补- x补 ( b ) 将(a)(b)两式相加得: y补+ -y补 = x+y补-x补 + x-y补- x补 = x+y补+ x-y补-x补 -x补 = x+y+x-y补-x补 -x补 = x+x补-x补 -x补 =0 -y补 = - y补,定点运算器 定点加减法,例: X-0.1011 Y-0.0110,求 XY? 解:,X补=1. 0 1 0 1,-Y补=0. 0 1 1 0,+,1,0,0,1,1.,11,XY补1.1001 XY=-0.0111,用补码运算完成下列各题,并讨论结果是否正确:,(1)、已知 x=-0.1001 y=-0.1011 求x+y补 (2)、已知x=1000010 y=-1001101 求x-y补,定点运算器溢出及判别,溢出及其判别方法: 在计算机中定点数的表示范围是有限的,若两 数进行加减运算的结果超出了给定的取值范围,就 称为溢出。一旦出现溢出,必须及时处理,否则会 出现错误。 可以采用两种方法来判别是否产生溢出: 单符号位法 双符号位法,定点运算器溢出及判别,采用单符号位的判断方法 两异号数相加或两同号数相减决不会产生溢出,仅 当两同号数相加或两异号数相减时才有可能产生溢出。 两同号数相加时,如果结果的符号与参与运算的操 作数符号相反,则表明有溢出;两异号数相减时,如果 结果的符号与被减数的符号相反,则表明有溢出。,定点运算器溢出及判别,利用进位值的判断方法 两补码数进行加减运算时,若最高数值位产生向符 号的进位而符号位不产生进位时,发生正溢出,若最高 数值位无进位而符号位有进位时,发生负溢出 溢出判别的逻辑表达式为: V=Cf C0,定点运算器 溢出及判别,例: X-0.100 Y-0.101,求 X+Y? 解:,X补=1. 1 0 0,Y补=1. 0 1 1,+,1,1,1,10.,丢掉,两负数相加,结果应为负数,但运算结果为正数,表明有溢出发生,定点运算器 溢出及判别,例: X100 ,Y-11,求 X-Y? 解:,X补=0 1 0 0,-Y补=0 1 1 0,+,0,1,1,一个正数减去一个负数,结果为正数,但计算结果为负数,表明有溢出发生,出错,0,定点运算器 溢出及判别,采用双符号位的判断方法 每个操作数的补码符号用两个二进制数表示,称为变形补码,用“00”表示正数,“11”表示负数,左边第一位叫第一符号位,右边第一位称为第二符号位,两个符号位同时参加运算,如果运算结果两符号位相同,则没有溢出发生。如果运算结果两符号位不同,则表明产生了溢出。“10”表示负溢出,说明运算结果为负数,“01”表示正溢出,说明运算结果为正数。 溢出判别的逻辑表达式为: VSf1Sf2,溢出及判别举例,例 0.1100, 0.1000,求。 解: 补00.1100, 补00.1000 补 00.1100 补 00.1000 01.0100 两个符号位出现“01”,表示已溢出,即结果大于1。,溢出及判别举例,例 0.1100, -0.1000,求。 解: 补11.0100, 补11.1000 补 11.0100 补 11.1000 10.1100 两个符号位出现“10”,表示已溢出,即结果小于1。,练习:请分别用单、双符号形式计算下列各题,并判断是否溢出及给出溢出类型:,1、已知X=0.1011 Y=0.0111 求X+Y=? 2、已知X=-0.1011 Y=0.0111 求X-Y=?,基本的二进制加法/减法器,根据真值表,可以 写出一位全加器的逻辑 方程: SiAiBiCi Ci1AiBiBiCiCiAi 按此表达式组成的一 位全加器如下图所示:,一位全加器的真值表,基本的二进制加法/减法器,一位全加器的逻辑实现,基本的二进制加法/减法器,SiAiBiCi 的推导显而易见。 下面推导Ci1AiBiBiCiCiAi 将用到如下定律: 1。摩根定律: 2。吸收律:,基本的二进制加法/减法器,基本的二进制加法/减法器,第三个与非门的输出即为Ci+1,基本的二进制加法/减法器,行波进位的补码加法减法器,P31图2.3的行波进位的补码加法/减法器, 为什么叫行波进位 a3a2a1a0 + b3b2b1b0 s3s2s1s0 如何完成减法运算 AB运算转化成A补B补运算,求补过程由B变反1来实现。,行波进位的补码加法减法器,如何进行溢出检测处理?请思考! 延迟时间的计算 考虑溢出:ta=n2T+9T 不考虑溢出时ta=(n-1)2T+9T 2T即每一位的进位延迟 9T包括:溢出的异或门为3T,最下的一排异或门为3T;FA内部Ai和Bi输入的异或门为3T,故共9T。,定点运算器定点原码一位乘法,定点原码一位乘法 设被乘数X原=XfXn-1Xn-2X1X0 乘 数Y原=YfYn-1Yn-2Y1Y0 乘 积X原=ZfZ2n-1Z2n-2Z1Z0 运算原则:同号相乘为正,异号相乘为负,符号可按:异或运算得到,数值部分的运算方法与普通的十进制乘数相类似 。不论真值的正负,尾数都用正数参加运算。,定点运算器定点原码一位乘法,手工算法,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,+,1 0 0 0 1 1 1 1,0.,l 两个n位数相乘,其积为2n位,则需要2n位长的加法器,这不适用于定点机的形式。,l 机器一次只能进行两个数的相加,不能进行多个数据的加法。,定点运算器定点原码一位乘法,定点原码一位乘法 运算法则: 计算机中执行乘法时,积的符号位由被乘数和乘数的符号位通过一个异或门实现,数值部分的运算规则是:从最低位Y0开始,当乘数Yi为1时,将上次部分积加上被乘数的绝对值,然后右移一位,得到新的部分积;当Yi为0时,将部分积直接右移一位,得到新的部分积。重复“加右移”操作N次,可得到最后的乘积。,定点运算器定点原码一位乘法,例:X=0.1101,Y=0.1011, 求X*Y=? 解: 部分积 乘数 说明,0 0. 0 0 0 0,0 0. 1 1 0 1,+,Yf 1 0 1 1,0 0. 1 1 0 1,0 0. 0 1 1 0,0 0. 1 1 0 1,+,0 1. 0 0 1 1,0 0. 1 0 0 1,0 0. 0 0 0 0,+,0 0. 1 0 0 1,0 0. 0 1 0 0,0 0. 1 1 0 1,0 1. 0 0 0 1,0 0. 1 0 0 0,+,1 Yf 1 0 1,1 1 Yf 1 0,1 1 1 Yf 1,1 1 1 1 Yf,Z0=0,Y0=1, +X,Y1=1, +X,Y2=0, +0,Y3=1, +X,右移,得Z1,右移,得Z2,右移,得Z3,右移,得Z4=X*Y,定点运算器定点原码一位乘法,结果:,X*Y=0.10001111,定点运算器定点原码一位乘法,原码一位乘法的逻辑电路图,定点运算器定点原码一位乘法,存放部分积,2存放被乘数,存放乘数。 一、 R0清零,R2存放被乘数,R1存放乘数。乘法开始时,“启动”信号时序控制置,于是开启时序脉冲,当乘数寄存器最末位为“时,部分积和被乘数在加法器中相加,其结果输出至的输入端。一旦打入控制脉冲到来,控制信号使部分积右移位,与此同时,乘数寄存器也在控制信号作用下右移一位,且计数器记数一次 二、 上述步骤重复执行n次 三、 当计数器n时,计数器的溢出信号使控制触法器置,关闭时序脉冲,乘法宣告结束。,定点运算器定点原码一位乘法,原码算法存在的缺点: 一、符号位需要单独运算,最后给出运算结果的正确符号; 二、对于采用补码存储的数,从存储器中取出的是操作数的补码,需先将其转换成原码,这样很不方便,而且影响速度。,定点运算器定点补码一位乘法,定点一位补码乘法: 补码乘法的特点是乘数、被乘数用补码表示,符号位参加运算 ,希望得到的结果就是乘积的补码,符号位在运算中形成。但是与补码加减法不同,两数的补码如果直接相乘,结果不是乘积的补码。 设被乘数X补0.123和乘数补0.12均为任意符号,则有补码乘法算式,这就是有名的布斯公式。,定点运算器定点补码一位乘法,X*Y补 =X补*Y =X补-YS+Y12-1+Y2*2-2+Yn2-n =X补-YS+(Y1-Y12-1)+(Y22-1-Y22-2)+(YN2-(n-1)-Yn2-n) =X补(Y1-YS)+(Y2-Y1)2-1+(Yn-Yn-1)2-(n-1)+(0-Yn)2-n =X补(Y1-YS)+2-1(X补(Y2-Y1)+2-1(X补(Y3-Y2)+2-1(X补 (Yn-Y n-1)+2-1(X补(Y n+1-Yn)(Y n+1=0),定点运算器-定点补码一位乘法,递推公式为: P0补=0 P1补= 2-1(P0补+(Y n+1-Yn) X补) P2补= 2-1(P1补+(Y n-Yn-1) X补) Pi补= 2-1(Pi-1补+(Y n-i+2-Yn-i+1) X补) Pn补= 2-1(Pn-1补+(Y 2-Y1) X补) Pn+1补= Pn补+(Y 1-Ys) X补=X*Y补,定点运算器-定点补码一位乘法,补码一位乘法的运算规则如下(开始时yn+1=0); (1)如果yn= yn+1,部分积zi加0,再右移1位 (2)如果ynyn+1=01,部分积加x补,再右移1位 (3)如果ynyn+1=10,部分积加-x补,再右移1位 这样重复n+1步,最后一步不移位。,定点运算器定点补码一位乘法,例:X补=0.1101,Y补=0.1011,求X*Y=? 解: 部分积 乘 数 说 明,0 0 . 0 0 0 0,0. 1 0 1 1 0,Y n+1=0,1 1 . 0 0 1 1,YnY n+1=10, 加-X补,+,1 1 . 0 0 1 1,1 1 . 1 0 0 1,1. 0 1 0 1 1,右移一位,+,0 0 . 0 0 0 0,YnY n+1=11, 加0,1 1 . 1 0 0 1,1 1 . 1 1 0 0,1 1 0 1 0 1,右移一位,+,0 0 . 1 1 0 1,YnY n+1=01, 加X补,0 0 . 1 0 0 1,0 0 . 0 1 0 0,1 1 1 0 1 0,右移一位,+,1 1 . 0 0 1 1,1 1 . 0 1 1 1,YnY n+1=10, 加-X补,1 1 . 1 0 1 1,1 1 1 1 0 1,右移一位,0 0 . 1 1 0 1,+,YnY n+1=01, 加X补,0 0 . 1 0 0 0,1 1 1 1 0 1,最后一次不移位,定点运算器定点补码一位乘法,结果:,X*Y补=0.10001111,定点运算器定点补码一位乘法,定点运算器定点补码一位乘法, 被乘数的符号和乘数的符号都参加运算。 乘数寄存器有附加位,其初始状态为“”。当乘数和部分积每次右移时,部分积最低位移至的首位位置,故必须是具有右移功能的寄存器。 被乘数寄存器的每一位用原码或反码经多路开关传送到加法器对应位的一个输入端,而开关的控制信号由的输出译码器产生。当0时,送补;当时,送补,即送的反码且在加法器最末位加上“”。 保存部分积,它也是具有右移功能的移位寄存器,其符号位与加法器符号位始终一致。 当计数器时,封锁和控制信号,使最 后一步不移位。,定点运算器定点原码一位除法,定点原码一位除法 在定点计算机中,完成两个原码表示的数相除时,商的符号由两数的符号位按位异或得到,而商的数值部分则是两个正数相除得到。 设 被除数 X原=Xf.X1X2Xn 除 数 Y原=Yf.Y1Y2Yn 则 商 Q原=(Xf+ Yf).(X1X2Xn/Y1Y2Yn),定点除法-定点原码一位除法,计算机中执行除法时,商的符号位由被除数和除数的符号位通过一个半加器实现,对于数值部分,由于定点小数的绝对值小于1,如果被除数大于或等于除数,则商就大于或等于1,因而会产生溢出,这是不允许的。因此在执行除法以前,先要判别是否溢出,不溢出时才执行除法运算。判别溢出的方法是被除数减去除数,若差为正,就表示溢出。,定点运算器定点原码一位除法,手工计算除法的方法: 设被除数为X=0.1001,Y=0.1011,求X/Y=?,定点运算器定点原码一位除法,0.1 1 0 1 0.1011 0. 1 0 0 1 0 被除数 -0.0 1 0 1 1 除数右移1位,减除数,商上1 0.0 0 1 1 1 0 得余数r1 -0.0 0 1 0 1 1 除数右移2位,减除数,商上1 0.0 0 0 0 1 1 0 得余数r2 0.0 0 0 1 0 1 1 除数右移3位,不减除数,商上0 0.0 0 0 0 1 1 0 0 得余数r3 -0.0 0 0 0 1 0 1 1 除数右移4位,减除数,商上1 0.0 0 0 0 0 0 0 1 得余数r4,X/Y=0.1101;余数=0.0001*2-4,原码一位除法-恢复余数法,恢复余数法的运算规则: 计算机中进行除法时,是模仿十进制除法笔算的过程,但又不能完全照搬。在机器中判断是否够减,必须先做减法,若余数为正,表示够减;若余数为负,表示不够减 ,不够减时,必须恢复原来的余数,以便再继续往下运算,这种方法称为恢复余数法。要恢复原来的余数,只要当前的余数加上除数即可。,原码一位除法-恢复余数法,恢复余数法的缺点: 当某一次减Y的差值为负时,要多一次加Y恢复余数的操作,降低了执行速度,又使控制线路变得复杂,因此在计算机中很少采用. 运算的步骤无法确定。,原码一位除法加减交替法,加减交替法的规则: 首先作X-Y,余数为正,表明产生溢出,应终止除法运算;余数为负,上商为0(作为商的符号位),然后重复下述操作n次,可得商的n位数值 余数为正时,商为1,余数左移一位,减除数;余数为负时,商为0 ,余数左移一位,加除数。 由于运算中余数共左移了n次,相当于乘2n,故最后得余数应乘上2-n才是真正的正确余数,余数符号与被除数相同。,原码一位除法加减交替法,解: X原=X补=X=0.1001,Y补=0.1011,-Y补=1.0101 被除数X/余数r 商数q 说 明,0 0 . 1 0 0 1,1 1 . 0 1 0 1,1 1 . 1 1 1 0,1 1 . 1 1 0 0,0 0 . 1 0 1 1,0 0 . 0 1 1 1,0 0 . 1 1 1 0,1 1 . 0 1 0 1,0 0 . 0 0 1 1,0 0 . 0 1 1 0,1 1 . 0 1 0 1,1 1 . 1 0 1 1,1 1 . 0 1 1 0,0 0 . 1 0 1 1,0 0 . 0 0 0 1,+-Y补,+Y补,+-Y补,+-Y补,+Y补,0,0.1,0.11,0.110,0.1101,X减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.1101 R=2-4*0.0001,结果:,原码一位除法加减交替法,原码一位除法加减交替法,寄存器为n位,是双向移位寄存器,R0为双向移位寄存器。 除法开始前R1可存放被除数的低n位,R0保存被除数或者余数。 在进商左移的过程中,被除数(余数)的低位部分由串行移至。经n步后,求得n位商。 每次进商置于R1的最末位,由加法器符号位f来设置, 运算结束后R1存放n位的商,R0中存放余数。,补码一位除法加减交替法,补码加减交替除法的算法规则如下: (1)被除数与除数同号,被除数减去除数;被除数与除数异号,被除数加除数; (2)余数和除数同号,商上1,余数左移一位,余数减去除数得新余数;当余数和除数异号,商上0,余数左移一位,余数加除数得新余数。 (3)重复步骤(2),包括符号位在内,共做n+1步。 为了统一并简化控制线路,一开始上一次假商,如果x补和y补同号,假商上1,正好控制下一次做减法;如果x补和y补异号,假商上0,正好控制下一次做加法。,补码一位除法加减交替法,商的校正: 在没有特殊精度要求的情况下,一般就采用商的未位“恒置1”的方式进行舍入,这样简单,便于实现。 如果要提高精度要求,可采用如下校正方法对商进行处理: (1)刚好解除尽时,如果除数为正,商不必校正;如果除数为负,则商加2-n。(最低位加1) (2)不能除尽时,如果商为正,则不必校正;如果商为负,则商加2-n。,补码一位除法加减交替法,余数的校正: (1)若商为正,则余数与被除数异号时,将余数加上除数得正确的余数; (2)若商为负,则余数与被除数异号时,余数需减去除数得正确余数。 余数之所以需要校正,是因为在补码不恢复余数除法处理过程中先比较后上商的缘故。,补码一位除法加减交替法,补码一位除法的流程图,补码一位除法加减交替法,例:X=0.1001,Y=0.1011,求X/Y补 解: X补=0.1001 Y补=0.1011 -Y补=1.0101,补码一位除法加减交替法,解:X补=0.1001,Y补=0.1011,-Y补=1.0101 被除数/余数 商数 说明,0 0 . 1 0 0 1,1 1 . 0 1 0 1,1 1 . 1 1 1 0,1 1 . 1 1 0 0,0 0 . 1 0 1 1,0 0 . 0 1 1 1,0 0 . 1 1 1 0,1 1 . 0 1 0 1,0 0 . 0 0 1 1,0 0 . 0 1 1 0,1 1 . 0 1 0 1,1 1 . 1 0 1 1,1 1 . 0 1 1 0,0 0 . 1 0 1 1,0 0 . 0 0 0 1,0 0 . 0 0 0 1,+-Y补,+Y补,+-Y补,+-Y补,+Y补,1,10,101,1011,10110,0.1101,X补和Y补同号,q0=1,减除数,加除数,减除数,减除数,加除数,余数和除数异号,余数和除数同号,余数和除数同号,余数和除数异号,余数和除数同号,左移1位,商1,左移1位,商1,左移1位,商0,左移1位,商1,左移1位,商0,补码一位除法加减交替法,Q补=0.1101 R补=0.0001*2-4,结果:,课堂作业:,1、已知X=0.11001,Y=0.00111,试用但符号位求X+Y,并判断结果是否溢出? 2、 已知X=-0.0100,Y=0.1001,试用补码运算方法求X-Y,并判断结果是否溢出? 3、 已知X=0.1101,Y=-0.1011,试用原码一位乘法求 4、 已知X=0.1010,Y=-0.0110,试用补码一位乘法求 5、已知 X=0.10110,Y=0.11111,试用原码加减交替法计算X/Y,2.5 定点运算器的组成,2.5.1 逻辑运算 2.5.2 多功能算术/逻辑运算单元ALU 2.5.3 内部总线 2.5.4 定点运算器的基本结构,2.5 定点运算器的组成,前面讲到的行波进位加法器存在两个大问题: 由于串行进位,所以它的运算时间较长。 只能完成算术运算,不能进行逻辑运算。,2.5.1 逻辑运算,自学P44,2.5.2 多功能算术/逻辑运算单元ALU,1.基本思想 一位全加器(FA)的逻辑表达式为: Fi=Ai+ Bi+ Ci Ci+1=AiBi+BiCi+CiAi 为了将全加器的功能进行扩展以完成多种算术逻辑运 算,我们先不将输入Ai和Bi和下一位的进位Ci直接进行全 加,而是将Ai和Bi先组合成由控制参数S0,S1,S2,S3控制 的组合函数Xi和Yi,然后再将Xi,Yi和下一位进位数通过全加器进行全加,这样,不同的控制参数可以得到不同的组合函数,因而能够实现多种算术运算和逻辑运算。,2.5.2 多功能算术/逻辑运算单元ALU,S1,S3,Xi 、Yi与控制参数和输入量的关系,2.5.2 多功能算术/逻辑运算单元ALU,1、可以证明:Xi+Yi=Xi Xi.Yi=Yi(自己试试看) 2、,2.5.2 多功能算术/逻辑运算单元ALU,ALU的某一位逻辑表达式见下:,2.5.2 多功能算术/逻辑运算单元ALU,4位ALU,多功能算术/逻辑运算单元,每一位的进位公式可递推如下:,C n+1=Y0+X0Cn,C n+2=Y1+X1Cn+1=Y1+ Y0X1+X0X1Cn,C n+3=Y2+X2Cn+2 =Y2 +X2 Y1+ Y0X1 X2 +X0X1 X2 Cn,C n+4=Y3+X3Cn+3=Y3+X3 Y2 +X2 X3 Y1+ Y0X1 X2 X3 +X0X1 X2 X3 Cn,2.5.2 多功能算术/逻辑运算单元ALU,令GY3Y2X3Y1X2X3Y0X1X2X3 PX0X1X2X3 G为进位发生输出 P为进位传送输出 增加P和G的目的在于实现多片(组)ALU之间的先行进位,需要配合电路,称为先行进位发生器(CLA) 器件: 74181,2.5.2 多功能算术/逻辑运算单元ALU,具有正逻辑和负逻辑两种,内部逻辑结构图见下页,74181ALU逻辑图(总体),2.5.2 多功能算术/逻辑运算单元ALU,算术逻辑运算的实现(74181) M=0时,对进位信号没有影响,做算术运算 M=1时,进位门被封锁,做逻辑运算 说明: 74181执行正逻辑输入/输出方式的一组算术运算和逻辑运算和负逻辑输入/输出方式的一组算术运算和逻辑运算是等效的。 A=B端可以判断两个数是否相等。,2.5.2 多功能算术/逻辑运算单元ALU,设计16位ALU Cn+x=G0+P0Cn Cn+y=G1+P1Cn+x Cn+x=G2+P2Cn+y Cn+4=G3+P3Cn+z 片内先行进位,片间串行进位,32位ALU逻辑方框图,2个16位74L182 8个4位ALU74L181,64位组间先行进位ALU,2.5.4 内部总线,内部总线是指CPU内部各部件的连线。,由三态门组成的数据总线,2.5.5 定点运算器的基本结构,运算器包括ALU、阵列乘除器件、寄存器、多路开关、三态缓冲器、数据总线等逻辑部件。计算机的运算器的结构一般有三种。,2.5.5 定点运算器的基本结构,A,B,ALU,通 用寄存器,特 殊寄存器,单总线结构的运算器,输入数据和操作结构需要三次串行的选通操作,但它并不会对每种指令都增加很多执行时间。由于只控制一条总线,所以控制电路比较简单。,两个操作数同时加到ALU进行运算,只需要一次操作控制,而且马上得到运算结果。,ALU的输出不能直接加到总线上去,这是因为,当形成操作结构的输出时,两条总线都被输入数据占据,因而必须在ALU的输出端设置缓冲器。,双总线结构的运算器,2.5.5定点运算器的基本结构,2.5.5 定点运算器的基本结构,ALU的两个输入端分别由总

温馨提示

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

评论

0/150

提交评论