《计算机组成原理 No4 数据的表示和运算》由会员分享,可在线阅读,更多相关《计算机组成原理 No4 数据的表示和运算(39页珍藏版)》请在人人文库网上搜索。
1、计算机组成原理,Principles of Computer Composition,2,第二部分 数据的表示和运算,2.1 数制与编码 2.2 定点数表示和运算 2.3 浮点数表示和运算 2.4 算术逻辑单元ALU,3,2.2 定点数表示和运算,2.2.1 定点数的表示 1、无符号数的表示; 2、有符号数的表示。 2.2.2 定点数的运算 1、定点数的位移运算; 2、原码定点数的加/减运算; 3、补码定点数的加/减运算; 4、定点数的乘法运算,4,回顾,1、移位运算 对有符号数的移位运算成为算术移位。 对无符号数的移位运算成为逻辑移位。 算术移位的特点: 对于正数,三种机器数算术移位后符号位。
2、均不变,左移最高位丢1,结果错误;右移最低位丢1,影响精度。 对于负数,三种机器数算术移位后符号位不变。 原码左移,高位丢1,结果出错;原码右移低位丢1,影响精度。 补码左移,高位丢0,结果出错;补码右移低位丢1,影响精度。 反码左移,高位丢0,结果出错;反码右移低位丢0,影响精度。,5,回顾,2、补码定点数的加/减运算 补码加法 补码加法的特点: 符号位作为数的一部分参加运算,符号位的进位丢掉。 运算结果为补码形式 整数 A补 + B补= A+B补 (mod 2n+1) 小数 A补 + B补= A+B补 (mod 2) 补码减法 因为 AB= A+(B ),所以有补码减法: 整数 A B补=。
3、 A+(B )补= A补 + B补 (mod 2n+1) 小数 A B补= A+(B )补= A补 + B补 (mod 2) 从Y补求-Y补的法则是: 对Y补包括符号位“求反且最末位加1”,6,回顾,3、溢出的检测 溢出:运算结果超出机器的表数范围 定点加减法溢出条件: 同号数相加或异号数相减。 运算结果超载。 1)溢出的检测 可能产生溢出的情况 两正数加,变负数,上溢(大于机器所能表示的最大数) 两负数加,变正数,下溢(小于机器所能表示的最小数) 2)溢出的检测方法 双符号位法(参与加减运算的数采用变形补码表示) 单符号位法,7,回顾,4、反码加减法运算 (1)反码加法运算 反码加法运算遵循。
4、 X反+Y反=X+Y反 规则。符号位参加运算。符号位相加后,如果有进位,则把该进位的数字加到数的最低位,即循环进位。 (2)反码减法 两个反码表示的数相减,类似于补码减法,将减数变符号,并根据变号后的减数取反,按反码加法进行。,8,2.2.2 定点数的运算,7、定点数的乘法运算 分析笔算乘法 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,乘积的符号心算求得,9,2.2.2 定点数的运算,笔算乘法改进,A B = A。
5、 0.1011,= 0.1A + 0.00A + 0.001A +0.0001A,= 0.1A + 0.00A + 0.001( A +0.1A),= 0.1A + 0.010 A + 0. 1( A +0.1A),= 0.1A +0.1 0 A+0.1(A + 0.1A),= 2-1A +2-1 0 A+2-1(A + 2-1(A+0),第一步 被乘数A + 0,第八步 1,得结果,第三步 部分积 + 被乘数,10,2.2.2 定点数的运算,改进后的笔算乘法过程,11,2.2.2 定点数的运算,1)定点原码乘法 (1) 原码一位乘运算规则(以小数为例),设x原 = x0.x1x2 xn,y原。
6、 = y0.y1y2 yn,= (x0 y0). x*y*,x y原 = (x0 y0).(0.x1x2 xn)(0.y1y2 yn),式中 x*= 0.x1x2 xn 为 x 的绝对值,y*= 0.y1y2 yn 为 y 的绝对值,乘积的符号位单独处理 x0 y0,数值部分为绝对值相乘 x* y*,12,2.2.2 定点数的运算,原码一位乘递推公式,x* y* = x*(0.y1y2 yn),= x*(y12-1+y22-2+ + yn2-n),= 2-1(y1x*+2-1(y2x*+ 2-1(ynx* + 0) ),z0,13,2.2.2 定点数的运算,右图是一个32位乘法器的结构框图,其。
7、中32位被乘数放在R2中,运算开始时32位乘数放在R1中,运算结束时64位乘积的高位放在R0中,低位放在R1中,R0和R1串联移位。,在该乘法过程中,每次操作是根据乘数的一位进行操作,对于32位数的乘法,需要循环32次完成一个乘法操作,因此称为一位乘法。,14,2.2.2 定点数的运算,完成这个定点原码一位乘法的运算规则可以用如下图所示的逻辑流程图表示。,15,2.2.2 定点数的运算,已知 x = 0.1110 y = 0.1101 求x y原,逻辑右移,逻辑右移,16,2.2.2 定点数的运算, 乘积的符号位 x0 y0 = 1 0 = 1 数值部分按绝对值相乘 x* y* = 0. 1 。
8、0 1 1 0 1 1 0 则 x y原 = 1. 1 0 1 1 0 1 1 0 特点 绝对值运算 用移位的次数判断乘法是否结束 逻辑移位,17,2.2.2 定点数的运算,原码一位乘的硬件配置,A、X、Q 均 n+1 位,移位和加受末位乘数控制,18,2.2.2 定点数的运算,(2)原码两位乘 原码两位乘与原码一位乘一样,符号位的运算和数值部分是分开进行的,但原码两位乘是用两位乘数的状态来决定新的部分积如何形成,因此可提高运算速度。,一位乘,符号位和数值位部分分开运算,两位乘,每次用乘数的2位判断原部分积是否加和 如何加 被乘数,19,2.2.2 定点数的运算,两位乘数共有4种状态,对应这4。
9、种状态可得下表。,20,2.2.2 定点数的运算,原码两位乘运算规则,共有操作 +x* +2x* x* 2,实际操作 +x*补 +2x*补 +x* 补 2 补码移,21,2.2.2 定点数的运算,例:已知 x = 0.111111 y = 0.111001 求xy原,补码右移,22,2.2.2 定点数的运算, 数值部分的运算, 乘积的符号位 x0 y0 = 0 1 = 1,x* y* = 0. 1 1 1 0 0 0 0 0 0 1 1 1,则 x y原 = 1. 1 1 1 0 0 0 0 0 0 1 1 1,特点,绝对值的补码运算,算术移位,用移位的次数判断乘法是否结束,23,2.2.2 。
10、定点数的运算,原码两位乘和原码一位乘比较,符号位,操作数,移位,移位次数,最多加法次数,x0 y0,x0 y0,绝对值,绝对值的补码,逻辑右移,算术右移,n,n,(n为偶数),+1(n为偶数),原码一位乘,原码两位乘,n 为奇数时,原码两位乘移 n/2 +1次,最多加 n/2 +1次,24,2.2.2 定点数的运算,2) 补码乘法 (1)补码与真值的关系 设 x补 = x0.x1x2 xn 当X0时,x0=0,x补 = 0.x1x2 xn=xi2-i = x 当x0 x(0.y1y2 yn) 补 = x补 (0.y1y2 yn) 所以 x.y补= x补 (0.y1y2 yn) + x补,29,。
11、2.2.2 定点数的运算,乘数y补,去掉符号位,操作同 ,最后 加x补,校正,运算规律:,30,2.2.2 定点数的运算, 被乘数、乘数符号任意 设x补 = x0.x1x2 xn y补 = y0.y1y2 yn 综合 ,得到补码乘法统一算式 x y补= x补( 0.y1 yn ) + x补 y0 当y0 时,y0=0 x. y补 = x补. y 当y0 时,y0=1 x.y补= x补 (0.y1y2 yn) + x补,31,补码比较法(Booth 算法),x y补,附加位 yn+1,32,Booth 算法递推公式,z0补= 0,z1补= 2-1(yn+1yn)x补+z0补 yn+1 = 0,z。
12、n补= 2-1(y2y1)x补+zn-1补,x y补= zn补+(y1y0)x补,最后一步不移位,如何实现 yi+1yi ?,0 0,0 1,1 0,1 1,1,+x补 1,+x补 1,1,0,1,-1,0,33,例,已知 x = +0.0011 y = 0.1011 求xy补,解:,0 0 . 0 0 0 0,1 1 . 1 1 0 1,1 1 . 1 1 0 1,0 0 . 0 0 1 1,1 1 . 1 1 0 1,0 0 . 0 0 1 1,1 1 . 1 1 0 1,1 . 0 1 0 1,0,x补 = 0.0011,y补 = 1.0101,x补 = 1.1101,+x补,+x补,+。
13、x补,+x补,+x补, xy补 =1.11011111,最后一步不移位,34,2.2.2 定点数的运算,Booth 算法的硬件配置,35,2.2.2 定点数的运算,补码两位乘 补码两位乘运算规则是根据补码一位乘的规则,把比较yiyi+1的状态应执行的操作和比较yi-1yi 的状态应执行的操作合并成一步,便可得出补码两位乘的运算方法。,36,2.2.2 定点数的运算,操作中出现加2x补和加2-x补,故除右移两位的操作外,还有被乘数左移一位的操作;而加2x补和加2-x补,都可能因溢出而侵占双符号位,故部分积和被乘数采用三位符号位。 补码两位乘的部分积多取一位符号位(共3位),乘数也多取一位符号位(。
14、共2位),这是由于乘数每次右移2位,且用3位判断,故采用双符号位更便于硬件实现。可见,当乘数数值位为偶数时,乘数取2位符号位,共需作n/2次移位,最多作n/2+1次加法,最后一步不移位;当n为奇数时,可补0变为偶数位,以简化逻辑操作。也可对乘数取1位符号位,此时共作n/2+1次加法和n/2+1次移位(最后一步移一位)。 对于整数补码乘法,其过程与小数乘法完全相同。为了区别于小数乘法,在书写上可将符号位和数值位中间的“.”改为“,”即可。,37,2.2.2 定点数的运算,例:x补=0.0101,y补=1.0101 求: x y补。 解:求解过程如下表所示。其中乘数取两位符号位即11.0101, -x补=1.1011 取三符号位为111.1011。,38,乘法小结,原码乘 符号位 单独处理 补码乘 符号位 自然形成,原码乘去掉符号位运算 即为无符号数乘法,不同的乘法运算需有不同的硬件支持,整数乘法与小数乘法完全相同 可用 逗号 代替小数点,39。