FPU与浮点数
扫描二维码
随时随地手机看文章
FPU:(Float Point Unit,浮点运算单元)FPU是专用于浮点运算的处理器,以前的FPU是一种单独芯片,在486之后,英特尔把FPU集成在CPU之内。
浮点运算器(英文:floating point unit,简称FPU)是计算机系统的一部分,它是专门用来进行浮点数运算的。典型的运算有加减乘除和开方。一些系统(尤其是比较老的,基于微代码体系的)还可以计算超越函数,例如指数函数或者三角函数,尽管对大多数现在的处理器,这些功能都由软件的函数库完成。在大多数现在的通用计算机架构中,一个或多个浮点运算器会被集成在CPU(Central Processing Unit,中央处理器)中,但许多嵌入式处理器(特别是比较老的)没有在硬件上支持浮点数运算。在过去,一些系统通过协同处理器而不在同一个处理器中来处理浮点数。在微型计算机时代,这一般只用一个芯片;而在以前,可能要用一整个电路板甚至一台机箱。不是所有的计算机架构中都有硬件的浮点运算器。在没有硬件浮点运算器的情况下,许多浮点数的运算也可以像有硬件那样做到。这样可以节省浮点运算器的硬件成本,但这样会使计算变得慢得多。仿硬件浮点运算可以通过多种层次的方法实现——在CPU中用微代码处理,用操作系统的函数处理,用用户自己的代码处理。在大多数现代计算机的架构中,一些浮点数运算跟整数运算是分开的。这些分别在不同的架构上差别很大。有一些架构,例如英特尔(Intel)的x86处理器设计了浮点数寄存器,另一些架构中,处理浮点数甚至有独立的时频时域。当CPU执行一个需要浮点数运算的程序时,有三种方式可以执行:软件仿真器(浮点运算函数库)、附加浮点运算器和集成浮点运算器。多数现在的计算机有集成的浮点运算器硬件。
浮点数运算常常是用特别的总线传输的。在早期的没有中断机制的大尺度架构(的处理器)中,浮点运算有时与整数运算独立传输。今时今日,许多CPU或架构都有超过一个浮点运算器,例如PowerPC 970 和基于Netburst和AMD64架构的处理器(分别例如奔腾(Pentium)4和速龙(Athlon)64)
浮点数运算常常是用特别的总线传输的。在早期的没有中断机制的大尺度架构(的处理器)中,浮点运算有时与整数运算独立传输。今时今日,许多CPU或架构都有超过一个浮点运算器,例如PowerPC 970 和基于Netburst和AMD64架构的处理器(分别例如奔腾(Pentium)4和速龙(Athlon)64)
浮点加法减法运算设有两个浮点数x和y,它们分别为x = Mx*2^Exy =
My*2^Ey其中Ex和Ey分别为数x和y的阶码,Mx和My为数x和y的尾数。两浮点数进行加法和减法的运算规则是设 Ex小于等于Ey,则 x±y =
(Mx*2^(Ex-Ey)±My)*2^Ey,完成浮点加减运算的操作过程大体分为四步:1. 0 操作数的检查;2. 比较阶码大小并完成对阶;3.
尾数进行加或减运算;4. 结果规格化并进行舍入处理。⑴ 0
操作数检查浮点加减运算过程比定点运算过程复杂。如果判知两个操作数x或y中有一个数为0,即可得知运算结果而没有必要再进行后续的一系列操作以节省运算时间。0操作数检查步骤则用来完成这一功能。⑵
比较阶码大小并完成对阶两浮点数进行加减,首先要看两数的阶码是否相同,即小数点位置是否对齐。若二数阶码相同,表示小数点是对齐的,就可以进行尾数的加减运算。反之,若二数阶码不同,表示小数点位置没有对齐,此时必须使二数阶码相同,这个过程叫作对阶。要对阶,首先应求出两数阶码Ex和Ey之差,即△E
= Ex-Ey若△E=0,表示两数阶码相等,即Ex=Ey;若△E>0,表示Ex>Ey;若△E<0,表示Ex