计算机的算术运算.ppt
计算机的算术运算计算机的算术运算现在学习的是第1页,共40页提纲提纲v3.1 3.1 引言引言v3.2 3.2 加法和减法加法和减法v3.3 3.3 乘法乘法v3.4 3.4 除法除法v3.5 3.5 浮点运算浮点运算v3.6 3.6 并行性和计算机算术:结合律并行性和计算机算术:结合律v3.7 3.7 实例:实例:X86X86的浮点的浮点v3.8 3.8 谬误与陷阱谬误与陷阱v3.9 3.9 本章小结本章小结v3.10 3.10 拓展阅读拓展阅读现在学习的是第2页,共40页3.1 3.1 引言引言v如何表示小数?如何表示小数?v遇到无法表示的大数怎么办?遇到无法表示的大数怎么办?v如何运算?如何运算?现在学习的是第3页,共40页3.2 3.2 加法和减法加法和减法v运算方法?运算方法?减法转换为补码的加法;v溢出溢出的概念:运算的概念:运算结结果超出了数的表示范果超出了数的表示范围围MIPS检测到溢出时会产生异常,也叫中断异常程序计数器EPC:保存导致异常的指令现在学习的是第4页,共40页一位全加器一位全加器加法运算:加法运算:A Ai i +B+Bi i +C+Ci i =S=Si i (C(Ci+1i+1)加数加数 进位输入进位输入 和和 进位输出进位输出一位全加器真值表输入输出AiBiCiSiCi+10000000110010100110110010101011100111111逻辑方程Si=AiBiCiCi+1=AiBi+BiCi+CiAi现在学习的是第5页,共40页全加器逻辑电路全加器逻辑电路Si=AiBiCiCi+1=AiBi+BiCi+CiAiCi+1=AiBi(Ci(Ai Bi)逻辑电路(一位全加器)FAAiBiCiSiCi+1现在学习的是第6页,共40页n n位的行波进位加减器位的行波进位加减器x补0.1001+y补0.00110.1100FAAiBiCiSiCi+1现在学习的是第7页,共40页3.2.1 3.2.1 多媒体算术运算多媒体算术运算v向量计算,或单指令多数据计算向量计算,或单指令多数据计算v饱和操作:饱和操作:当计算结果溢出时,结果被设置成最大的正数或最小的负数例:旋转收音机的音量现在学习的是第8页,共40页3.3 3.3 乘法乘法vMIPS乘法提供一乘法提供一对单对单独的独的32位寄存器来容位寄存器来容纳纳64位的位的积积;v乘法只是乘法只是简单简单的移位和加法;的移位和加法;v可以采用并行的方法提高乘法的速度可以采用并行的方法提高乘法的速度现在学习的是第9页,共40页v同号相乘为正,异号相乘为负。同号相乘为正,异号相乘为负。v设设=0.1101,=0.1101,=0.1011=0.1011 0.1 1 0 1 (0.1 1 0 1 (x x)x x 0.1 0 1 1 (y)0.1 0 1 1 (y)-1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 0 0 0 0 0 0 0 0+1 1 0 1+1 1 0 1-0.1 0 0 0 1 1 1 1 (0.1 0 0 0 1 1 1 1 (z z)乘数为乘数为1 1,抄,抄被乘数到对应位置被乘数到对应位置乘数为乘数为0 0,填全,填全0 0到对应位置或跳过到对应位置或跳过现在学习的是第10页,共40页习惯方法运算过程习惯方法运算过程k=4权为24i,j=4,03,12,21,30,4am-1am-2.a0=Ax)bn-1.b1b0=Bam-1b0am-2b0.a1b0a0b0am-1b1am-2b1.a1b1a0b1.+)am-1bn-1am-2bn-1.a1bn-1a0bn-1pm+n-1pm+n-2pm+n-3.pn-1.p1p0=p现在学习的是第11页,共40页并行乘法器并行乘法器v实现实现n n位位nn位位,需要需要n n(n n-1)-1)个全加器和个全加器和n n2 2个个“与与”门门现在学习的是第12页,共40页3.4 3.4 除法除法v例例:设被除数设被除数x=0.1001,x=0.1001,除数除数y=0.1011y=0.10110.1101商q0.10110.10010(r0)被除数小于除数,商0-0.010112-1 除数右移1位,减除数,商10.001110r1得余数r1-0.0010112-2 除数右移1位,减除数,商10.0000110r2 得余数r2-0.00010112-3除数右移1位,不减除数,商00.00001100r3 得余数r3-0.000010112-4 除数右移1位,减除数,商1-0.00000001r4得余数r4得的商q=0.1101,余数为r=0.00000001。除数右移等价于被除数左移现在学习的是第13页,共40页机器运算与手算的不同机器运算与手算的不同v在计算机中在计算机中,小数点是固定的;小数点是固定的;v机器不会心算机器不会心算,必须先作减法必须先作减法,若余数为正若余数为正,才知道够减;才知道够减;若余数为负若余数为负,才知道不够减。不够减时必须才知道不够减。不够减时必须 恢复原来恢复原来的余数的余数,再继续往下运算再继续往下运算恢复余数法恢复余数法。v恢复原来的余数恢复原来的余数,只要当前的只要当前的余数余数加上加上除数除数即可。恢复即可。恢复余数余数,使除法进行过程的步数不固定使除法进行过程的步数不固定,控制复杂。控制复杂。实际中常用不恢复余数法,又称加减交替法。步数固定,控制简单。现在学习的是第14页,共40页不恢复余数不恢复余数(加减交替法加减交替法)v试商试商x-yx-y减减v恢复余数恢复余数x-y+yx-y+yv试下一位商试下一位商2x-y=2(x-y)+y2x-y=2(x-y)+y加加现在学习的是第15页,共40页3.5 3.5 浮点运算浮点运算v小数点在计算机中如何表示?小数点在计算机中如何表示?现在学习的是第16页,共40页3.5.1 3.5.1 浮点数的表示方法浮点数的表示方法v把一个数的把一个数的有效数字有效数字和数的和数的范围范围在计算机的一个存储单在计算机的一个存储单元中分别予以表示;元中分别予以表示;v任意一个十进制数任意一个十进制数 可以写成:可以写成:N=10 E.Mv计算机中一个任意进制数计算机中一个任意进制数可以写成可以写成 :=R e.mm:尾数,是一个纯小数;e:比例因子的指数,称为浮点的指数,是一个整数;R:比例因子的基数。现在学习的是第17页,共40页(1)(1)机器浮点数机器浮点数v机器浮点数由阶码、尾数及其符号位组成:机器浮点数由阶码、尾数及其符号位组成:尾数:用定点小数表示,给出有效数字的位数,决定浮点数的表示精度;阶码:用整数形式表示,指明小数点在数据中的位置,决定浮点数的表示范围。EsE1 E2.EmMsM1 M2.Mn阶符阶码数符尾数现在学习的是第18页,共40页(2)(2)浮点数的标准格式浮点数的标准格式vIEEE(国国际电际电气和气和电电子工程子工程师协师协会会)IEEE754标标准:准:尾数用原码;阶码用移码,基为2;S-尾数符号,0正1负;M-尾数,纯小数表示,小数点在尾数域最前;E-阶码,采用移码方法来表示正负指数。31 30 23 22 0SEM现在学习的是第19页,共40页(3)(3)浮点数的规格化表示浮点数的规格化表示v浮点数表示:浮点数表示:0.50.5;0.050.05 10101 1 ;0.005 0.005 10102 2;v为提高数据的表示精度,需做规格化处理;为提高数据的表示精度,需做规格化处理;v规格化处理:规格化处理:对非 0 值的浮点数,要求尾数的绝对值必须=1/2,即尾数域的最高有效位应为1:0.10001;规格化处理,通过尾数移位和修改阶码实现。现在学习的是第20页,共40页隐藏位技术隐藏位技术v非非 0 0 值浮点数的尾数数值最高位必定为值浮点数的尾数数值最高位必定为 1 1;v保存时把该位去掉保存时把该位去掉,用同样多的尾数位就能多存一位用同样多的尾数位就能多存一位二进制数;二进制数;v0.1100010 0.1100010 1.100010 1.100010v取回运算时,必须先恢复隐藏位。取回运算时,必须先恢复隐藏位。现在学习的是第21页,共40页(4)(4)规格化浮点数的真值规格化浮点数的真值v移移码码定定义义:x移=x0 x1 x2 xn=2n+x-2nx2nvIEEE754标标准准,一个一个规规格化的格化的32位浮点数位浮点数的真的真值值为为:x=(-1)s(1.)2-127 e=127vIEEE754标标准准,一个一个规规格化的格化的64位浮点数位浮点数的真的真值为值为:x=(1)s(1.)2-1023e=1023vE=0且且M=0,浮点数浮点数的真的真值为值为零,称零,称为为机器零机器零S=0,+0S=1,-0vE=11.1,M=0,浮点数浮点数的真的真值为值为 S=0,+S=1,-现在学习的是第22页,共40页例例1 1v若浮点数若浮点数 x x 的二进制存储格式为的二进制存储格式为(41360000)(41360000)1616,求,求3232位位浮点数的十进制值。浮点数的十进制值。0100,0001,0011,0110,0000,0000,0000,0000数符:0阶码:1000,0010尾数:011,0110,0000,0000,0000,0000指数e=阶码-127=10000010-01111111=00000011=(3)10包括隐藏位1的尾数:1.M=1.011 0110 0000 0000 0000 0000=1.011011于是有x=(-1)s1.M2e=+(1.011011)23=+1011.011=(11.375)10现在学习的是第23页,共40页例例2 2v将十进制数将十进制数20.5937520.59375转换成转换成3232位浮点数的二进制格式来位浮点数的二进制格式来存储存储首先分别将整数和分数部分转换成二进制数:20.59375=10100.10011然后移动小数点,使其在第1,2位之间10100.10011=1.01001001124e=4于是得到:S=0,E=4+127=131=1000,0011,M=010010011最后得到32位浮点数的二进制存储格式为0100 0001 1010 0100 1100 0000 0000 0000=(41A4C000)16现在学习的是第24页,共40页移码表示法移码表示法vn n位位整数,整数,假定移码形式为假定移码形式为 x0 x1 x2 x0 x1 x2 xn xn2n+x2nx2nx移=移码通常用于表示浮点数的阶码;8 位移码表示的机器数为数的真值在数轴上向右平移了 128 个位置。0128+127负数正数机器数现在学习的是第25页,共40页移码的特点移码的特点v与原码、补码、反码的符号位值正好相反;与原码、补码、反码的符号位值正好相反;v移码的大小直观地反映了真值的大小,有助于两个浮移码的大小直观地反映了真值的大小,有助于两个浮点数进行阶码大小比较;点数进行阶码大小比较;v真值真值0 0在移码中的表示形式是唯一的,即:在移码中的表示形式是唯一的,即:+0移=0移=10000v同一数值的移码和补码除最高位相反外,其他各位相同。同一数值的移码和补码除最高位相反外,其他各位相同。现在学习的是第26页,共40页3.5.2 3.5.2 浮点加法浮点加法v设有两个浮点数设有两个浮点数x x和和y,y,它们分别为它们分别为:x=2Ex Mxy=2Ey MyEx 和 Ey 分别为阶码,Mx 和 My为尾数。v两浮点数进行加法和减法的运算规则是两浮点数进行加法和减法的运算规则是:xy=(Mx2Ex-EyMy)2EyEx 0,ExEy若E 0,ExEy通过尾数的移动来改变Ex或Ey,使其相等.v对阶原则对阶原则阶码小的数向阶码大的数对齐;小阶的尾数右移,每右移一位,其阶码加1。现在学习的是第28页,共40页结果规格化结果规格化v尾数求和方法与定点加减法运算完全一样尾数求和方法与定点加减法运算完全一样;v将求和的结果规格化将求和的结果规格化.规格化的定义规格化的定义:采用原码:采用原码:正数:S=0.1 负数:S=1.1 v采用双符号位的补码:采用双符号位的补码:对正数:S=00.1对负数:S=11.0现在学习的是第29页,共40页舍入处理舍入处理v在对阶或向右规格化时在对阶或向右规格化时,尾数要向右移位尾数要向右移位,被右移的被右移的尾数的低位部分会被丢掉尾数的低位部分会被丢掉,造成一定误差造成一定误差,要进行要进行舍入舍入处理处理。v简单的舍入方法有两种简单的舍入方法有两种:“0舍1入”法:右移时被丢掉数位的最高位为0则舍去,反之则将尾数的末位加“1”。“恒置1”法:只要数位被移掉,就在尾数的末位恒置“1”。从概率上来说,丢掉的0和1各为1/2。现在学习的是第30页,共40页溢出处理溢出处理v浮点数的溢出表现为阶码溢出浮点数的溢出表现为阶码溢出;阶码上溢 超过了阶码可能表示的最大值的正指数值,一般将其认为是+和-。阶码下溢 超过了阶码可能表示的最小值的负指数值,一般将其认为是0。v对尾数的溢出也需要处理对尾数的溢出也需要处理尾数上溢 两个同符号尾数相加产生了最高位向上的进位,将尾数右移,阶码增1来重新对齐。尾数下溢 在将尾数右移时,尾数的最低有效位从尾数域右端流出,要进行舍入处理现在学习的是第31页,共40页3.5.3 3.5.3 浮点乘浮点乘/除法除法v设设有两个浮点数有两个浮点数x和和y:x=2ExMx,y=2EyMy浮点乘法运算的规则是:xy=2(Ex+Ey)(MxMy)浮点除法运算的规则是:xy=2(Ex-Ey)(MxMy)v浮点乘、除法运算步浮点乘、除法运算步骤骤:(1)0操作数检查;(2)阶码加/减操作;(3)尾数乘/除操作;(4)结果规格化及舍入处理现在学习的是第32页,共40页浮点运算流水线浮点运算流水线v流水流水线线原理原理把输入的任务分割为一系列子任子任务务,使各子任务能在流水线的各个阶段并并发发地执行;将任务连续连续不断不断地输入流水线,从而实现了子任务的并行。在流水线中,原则上要求各个阶段的处理时间都相同。对子任务的划分,是决定流水线性能的一个关键因素。假定作业T被分成k个子任务,可表达为T=T1,T2,Tk各个子任务之间有一定的优先关系:若ij,则必须在Ti完成以后,Tj才能开始工作。线性流水线现在学习的是第33页,共40页过程段过程段v处理一个子任务的过程称为处理一个子任务的过程称为过程段过程段(S(Si i)。v线性流水线由一系列串联的过程段组成,各个过程之线性流水线由一系列串联的过程段组成,各个过程之间设有高速的缓冲寄存器间设有高速的缓冲寄存器(L)(L),数据从一个过程段流向,数据从一个过程段流向相邻的过程段。相邻的过程段。线性流水线处理的硬件基本结构现在学习的是第34页,共40页流水线的工作流水线的工作v设过设过程段程段Si所需的所需的时间为时间为i,缓缓冲寄存器的延冲寄存器的延时为时为l,线线性性流水流水线线的的时钟时钟周期周期定定义为义为maxilml流水线处理的频率为f1/v一个具有一个具有k级过级过程段的流水程段的流水线处线处理理n个任个任务务需要的需要的时钟时钟周期数周期数为为Tkk(n1),所需要的,所需要的时间为时间为:TTk而同时,顺序完成的时间为:Tnkv加速比?加速比?现在学习的是第35页,共40页加法流水线的例子加法流水线的例子现在学习的是第36页,共40页3.5.4MIPS中的浮点指令中的浮点指令v单精度、双精度单精度、双精度v浮点寄存器浮点寄存器现在学习的是第37页,共40页3.5 3.5 算术精确性算术精确性v计算机算术总是有有限精度的;计算机算术总是有有限精度的;C语言中如何比较浮点数的大小?现在学习的是第38页,共40页3.6 3.6 并行性和计算机算术:结合律(阅读)并行性和计算机算术:结合律(阅读)vp165p165现在学习的是第39页,共40页3.7 3.7 实例:实例:X86X86的浮点(略)的浮点(略)现在学习的是第40页,共40页