《微机原理-第5版(周荷琴)-第14章.pptx》由会员分享,可在线阅读,更多相关《微机原理-第5版(周荷琴)-第14章.pptx(28页珍藏版)》请在三一办公上搜索。
1、微型计算机原理与接口技术第5版,第14章 32位机指令系统和程序设计,14.2 浮点数的表示方法和奔腾处理器的SIMD技术,14.2.1 浮点数的表示方法14.2.2 奔腾处理器的SIMD技术,14.2.1 浮点数的表示方法,1.浮点数及其标准实数包含整数和小数。但前面介绍的计算机中的数,都无法表示分数或小数。定点数用在计算机中表示实数,但许多数仍无法表示。浮点数是小数点可以浮动的数,它在保证较精确地表示数的同时,还能有效拓展数的表示范围。例如,10进制数5.2,可表示成多种浮点数形式:5.2100 0.52101 52010-2小数点放在第1个非0数字后面(5.2100),称为规格化形式(N
2、ormalized form),实数常表示成这种形式。例如:123.5 表示成 1.235102 0.087 表示成 8.710-2,不同的CPU有不同的浮点运算部件,例如:80X86处理器:可与相应的80X87协处理器配套 奔腾处理器:内部集成了浮点部件FPU利用这些部件,通过浮点指令就可进行浮点运算。Intel开发了浮点数的IEEE 754标准,被工业界广泛接受,是当今计算机中实数表示的最通用方法。,2.浮点数的表示方法,1)浮点数的组成和格式浮点数由4个基本部分(域)组成:(1)符号(sign)该位为0表示正数,1表示负数(2)指数(exponent)指数域有正负,指数的基数隐含值为2,
3、不表示出来(3)尾数(mantissa)/小数(fraction)/有效数 是浮点数的小数部分,用来表示数位的精度(4)偏移量(bias),浮点数分两类:32位单精度浮点数 64位双精度浮点数,浮点数的格式:,2)规格化浮点数的表示方法用规格化方式表示浮点数时,小数点左边的第一位非零数字永远只会是1,这一位可以省略,有效数部分只需给出小数的数位值。例如,一个单精度浮点数的尾数(小数部分)为 0110101它所表示的实际数为:1.0110101B=1+02-1+12-2+12-3+12-21+02-22+12-23,指数部分是带符号的整数,它由指数域(e)和偏移(bias或b)两部分组成。单精度
4、浮点数的e占 8位,偏移量 b=27-1=127双精度浮点数的e占11位,偏移量 b=210-1=1023一个浮点数的实际指数值为e,其计算方法为 e=e-b 即,e=指数域(e)-偏移量(bias或b)这样,比较数的大小时,e值大的数其值就大,e值小的数其值就小。,e值的范围单精度浮点数,e值的范围是 0000 00011111 1110=1254 实际指数值 e=e-b=e 127(127为偏移量)双精度浮点数,e值的范围是 000 0000 0001111 1111 1110=12046 实际指数值为e=e 1023(1023为偏移量)e等于全0或者全1为保留值,用来表示特别的数。,浮点
5、数的计算公式:单精度浮点数的计算公式:(-1)s(1.f 22 f 21f 0)2(e-127)=(-1)s(1+f222-1+f 212-2f 02-23)2(e-127)双精度浮点数的计算公式:(-1)s(1.f 51 f 50f 0)2(e-1023)=(-1)s(1+f 512-1+f 502-2f 02-52)2(e-1023)其中,s为符号位,f i为小数部分的数值,可以是1或0。,例1 计算单精度浮点数1的实际数值 符号位(s)指数(e)小数(f)浮点数1 0 1000 1110 000100 符号位 s=0,是正数 指数e=1000 1110B=142,实际指数值e=142 1
6、27=15 有效位中,小数点左边的“1”隐含不写,只给出小数部分,尾数为0.000100所以浮点数1的实际值为:V=(-1)0(1+02-1+02-2+02-3+12-402-23)2(e-b)=(1+2-4)2(142-127)=1.0625215=34816,例2 计算单精度浮点数2的实际值 符号位(s)指数(e)小数(f)浮点数2 1 0111 1100 011000 s=1,是负数实际指数值e=e b=0111 1100B-127=124 127=-3 有效位为 0.01100所以浮点数2的实际值为:V=(-1)-1(1+12-2+12-3+02-4 02-23)2(e-b)=-(1+
7、0.375)2-3=-1.3752-3=-0.171875,例3 计算单精度浮点数3的实际值 符号位(s)指数(e)小数(f)浮点数3 0 0111 1111 000000 s=0,是正数 实际指数值e=e b=0111 1111B-127=127 127=0 有效位为0.00000所以浮点数3的实际值为:V=(-1)0(1+02-2+02-302-23)2(e-b)=120=1 也就是说,数字+1用浮点数表示时,其值为3F80 0000H,或0 x3F80 0000。对于双精度浮点数,b=1023,指数域e为11位,小数位f为52位,其表示方法与单精度的类似。,3)特别数的表示方法零 零的指
8、数e=0000 0000(保留值),f=0000,其值V=+0 或者-0,只有在作除数时才有+0和-0的区别,否则无区别。无穷数 无穷数的指数e=1111 1111(保留值),其有效数f=0000,s为符号位;其值可以是+或-。微小数 微小数用来表示非常小的数。非数字 非数字(Not a Number,NaN)仅仅具有数字形式,但它并不是数字。,单精度浮点数表示的一些特别数的实例:特别数 对应的浮点数+0 0 0000 0000 000 0000 0000 0000 0000 0000-0 1 0000 0000 000 0000 0000 0000 0000 0000+0 1111 1111
9、 000 0000 0000 0000 0000 0000-1 1111 1111 000 0000 0000 0000 0000 0000 NaN 0 1111 1111 000 0010 0000 0000 0000 0000 NaN 1 1111 1111 001 0001 0001 0010 1010 1010,例4 设:s=0,e=1000 0000B=128,f=00000B则:实际值为 V=(-1)s(1+f)2(e-b)=+12(128-127)=2 即2的浮点数表示为 0100 0000 0000 0000 0000 0000 0000 0000B=4000 0000H,例5
10、 设:s=1,e=1000 0001B=129,f=101000B则:实际值为 V=(-1)s(1+f)2(e-b)=-1(1+2-1+2-3)2(129-127)=-(1+0.5+0.125)4=-6.5即-6.5的浮点数表示为 C0D0 0000H。根据同样方法,很容易求得浮点数40D0 0000H表示+6.5。,14.2.1 浮点数的表示方法14.2.2 奔腾处理器的SIMD技术,14.2.2 奔腾处理器的SIMD技术,为了加快多媒体、数值计算和语音识别、图像处理等应用程序的执行速度,Intel奔腾处理器采用了单指令多数据(Single-Instruction Multiple Data
11、,SIMD)技术。SIMD技术的核心是在单一处理器中,一条指令能同时对多个数据进行相同的操作。,Intel IA-32结构的SIMD技术由三部分组成:MMX 多媒体扩展(Multi Media Extension)随Pen-tium 处理器而诞生SSE 流单指令多数据扩展(Streaming SIMD Ex-tension)技术,Pentium 处理器采用SSE2 流SIMD扩展2(Streaming SIMD Extension2)技术,Pentium 4处理器引入,1.MMX技术,多媒体扩展(MMX)技术引入了8个64位寄存器 mm7mm0,SSE和SSE2技术则引入8个128位寄存器xm
12、m7xmm0。,采用MMX寄存器,可将多个数据打包后,存放在一个64位寄存器中,称为压缩(Packed)数据。64位寄存器中可以存放:8个压缩字节整型数(8 Packed Byte Integers)4个压缩字整型数(4 Packed Word Integers)2个压缩双字整型数(2 Packed Doubleword Inte-gers)1个64位的4字(Quadword)数据64位数据既可存放在MMX寄存器中,也可存放在存储器中。,利用SIMD指令,可对上述不同数据结构的整型数运算。MMX寄存器的格式和数据结构如图14.6(a)所示,只能完成64位整型数操作。MMX技术没有定义新的寄存器
13、,它共享了80位的80 x87浮点寄存器的低64位,因此程序在执行MMX指令时,不能同时进行浮点操作。,MMX技术的应用视频会议、活动图像、二维和三维图形等所有具有重复性和顺序性整数计算的应用程序,几乎都采用MMX技术。图像处理中,一个象素数据通常用一个字节(8 bit)来表示,可以表示0255级灰度值,用来表示黑白的程度。在MMX中,8个象素被压缩成一个64位的数,存取图像时,一次可以同时对8个象素值并行操作,显著提高了图像数据的处理速度。此外,MMX还采用饱和运算这一新的运算方式,使得运算出来的色彩在溢出情况下,可以保持全黑或全白,而不会产生环绕运算方式下的彩色反转现象。,2.SSE技术从
14、Pentium 开始,Intel奔腾处理器增加了8个128位寄存器xmm0 xmm7,数据也可以存放在128位的存储器单元中。,SSE技术还引入数据预取(Prefetch)指令、非暂存指令、高速缓存和存储器调整(Ordering)指令,这些技术非常适用于3D图形渲染(Graphics Rende-ring)、语音识别等。但是SSE技术不能处理双精度浮点数,128位的xmm寄存器或存储器中的压缩数据,只能以4个单精度浮点数的形式来处理,不能当作2个压缩双精度浮点数来操作。SSE也不能完成数据类型转换操作。,3.SSE2技术SSE2技术,包含144条指令。虽未增加额外的寄存器,但增加了许多新的操作。可以对128位寄存器xmm或128位存储器按2个压缩双精度浮点数来操作,还可进行各种数据的操作。能完成不同类型数据的相互转换操作,很适合3D图形渲染、视频编解码和数据加密(Encryption)等应用。SIMD技术由MMX、SSE和SSE2技术组成,完全支持IEEE 754标准二进制浮点数运算。,