新闻资讯
看你所看,想你所想

浮点处理器

浮点处理器

浮点处理器

在计算机科学中,浮点(floating point)是一种对于实数的近似值数值表现法,由一个有效数字(即尾数)加上幂数来表示,通常是乘以某个基数的整数次指数得到。浮点处理器是指专门用于处理浮点运算的处理器,在大多数计算机中,浮点处理器是协处理器。

基本介绍

  • 中文名:浮点处理器
  • 外文名:floating-point processor
  • 学科:计算机
  • 定义:处理浮点运算的处理器
  • 有关术语:处理器
  • 领域:硬体设计

简介

浮点处理器是指计算机中用于处理浮点数运算的处理器,在大多数情况下,浮点处理器只是作为辅助处理器,完成中央处理器完成其无法执行或执行效率、效果低下的处理工作。在科学计算中,由于大部分计算都是浮点数运算,这时浮点处理器可以加快运算速度和提高系统执行效率,这时的浮点处理器一般也称作定製处理器。

浮点数

定义

浮点型简单讲就是实数的意思。浮点数在计算机中用以近似表示任意某个实数。具体的说,这个实数由一个整数或定点数(即尾数)乘以某个基数(计算机中通常是2)的整数次幂得到,这种表示方法类似于基数为10的科学记数法。利用浮点进行运算,称为浮点计算,这种运算通常伴随着因为无法精确表示而进行的近似或捨入。
整数动态範围整数动态範围
浮点数用于表示非整数数值。它由3个域组成:符号、指数、尾数。这种表示方法能够极大拓展数值编码的範围,因此浮点数是处理实数的选择。利用处理器中集成的浮点运算单元(FPU),可以加快浮点运算的速度。浮点的一种替代方案是定点,定点的指数域採用固定形式。但是,如果在没有 FPU 的处理器上使用定点,儘管可以获得更快的运算速度,但数值範围和动态範围较小。因此,在使用定点方法时,开发人员必须仔细检查定点算法中的缩放比/饱和问题。C 语言为浮点运算提供 单精度和 双精度两种类型。matlab 或 scilab 等高级建模工具主要使用单精度或双精度浮点生成 C 代码。如果不支持浮点,则必须修改生成的代码,使其适合定点。同时,所有浮点运算代码都需要由程式设计师手动编写。在代码中使用原生浮点运算时,可有效缩短项目的开发时间。浮点运算是实现任何数学算法有效的方法。
浮点数动态範围浮点数动态範围

浮点运算单元

由于浮点运算适合两个数之间的任何运算,因此它需要非常多的资源。例如,我们需要:
对齐两个数值(使两个数值的指数相同) 执行运算;捨入结果;对结果进行编码。
在没有 FPU 的处理器上,这些运算全部由软体通过 C 编译器库完成,并且对程式设计师不可见;但这样做性能非常低。在有 FPU 的处理器上,对于大部分指令而言,所有运算都由硬体在单个周期内完成。C 编译器不使用其自身的浮点库,但会直接生成 FPU 原生指令。
在有 FPU 的处理器上执行数学算法时,程式设计师不必在性能和开发时间之间做出选择。利用FPU,可以通过 matlab 或 scilab 等高级工具直接可靠地使用任何生成的代码,同时确保实现性能。

标準

在计算机科学领域,浮点运算已有多年的使用历史。早在上世纪三十年代末,德国的Konrad Zuse 开发 Z 系列计算机时,就已开始使用浮点运算。但是,由于支持浮点运算的硬体实现起来非常複杂,因此数十年来浮点运算一直没有得到广泛套用。上世纪五十年代中期,IBM 公司在其 704 大型机中引入 FPU;到七十年代,儘管已有多种平台支持浮点运算,但这些平台都採用自己的编码技术。1985 年,IEEE 发布了统一浮点运算的 754 标準,定义了支持浮点运算的通用方法。C 语言的浮点数类型 Float 和 Double 採纳了IEEE754 标準中所定义的单精度 32 位浮点数和双精度 64 位浮点数的格式。
IEEE.754  单精度和双精度浮点编码IEEE.754 单精度和双精度浮点编码
数值格式
所有值均由三个域组成:
符号:s
偏置指数:
— 指数之和 = e
— 常数值 = 偏置值
小数(或尾数):f
可以使用各种长度对值进行编码:
16 位:半精度格式
32 位:单精度格式
64 位:双精度格式
IEEE 定义了五类不同的数:
规格化数:标準浮点数
非规格化数:非规格化数用于表示过小而无法规格化的值(当指数为 0 时)。
IEEE.754  数值格式的取值範围IEEE.754 数值格式的取值範围
零:零值加上符号用于表示饱和运算(正或负)。指数和小数均为空。
无穷大:无穷大值加上符号用于表示 +∞ 或 -∞。溢出或除以 0 时会产生无穷大值。指数设定为其最大
值,尾数为空。
NaN(非数字):NaN 用于表示不明确的运算结果,例如 0/0 或负数的平方根。指数设定为其最大值,尾数不为空。尾数的 MSB 用于判断该值是 QNaN(可通过后续运算传播)还是 SNaN(生成错误)。
捨入模式
该标準定义了以下四种主要捨入模式:
最近捨入
向 +∞ 捨入
向 -∞ 捨入
向 0 捨入
最近捨入是默认的捨入模式(最常用)。如果与两个最近值的距离相等,则选择 LSB 等于 0的值。捨入模式会改变算数运算的结果,因此非常重要。可以通过 FPU 配置暂存器更改捨入模式。
异常和异常处理
该标準支持 5 种异常:
无效运算:运算结果为 NaN
除以零
上溢:根据捨入模式,运算结果为 +/-∞ 或 +/-最大值
下溢:运算结果为非规格化数
结果不準确:由捨入所致
可用两种方式处理异常:
可以生成陷阱。陷阱处理程式会返回要使用的值来替代异常结果。
可以生成中断。中断处理程式不能返回要使用的值来替代异常结果。

协处理器

为了提高计算机运算速度,用来弥补微处理器在数值计算方面不足的浮点运算部件。是微处理器的一种。是一种协助中央处理器完成其无法执行或执行效率、效果低下的处理工作而开发和套用的处理器。这种中央处理器无法执行的工作有很多,比如设备间的信号传输、接入设备的管理等;而执行效率、效果低下的有图形处理、声频处理等。为了进行这些处理,各种辅助处理器就诞生了。整数运算器与浮点运算器已经集成在一起,因此浮点处理器已经不算是辅助处理器。而内建于CPU中的协处理器,同样不算是辅助处理器,除非它是独立存在。

相关推荐

声明:此文信息来源于网络,登载此文只为提供信息参考,并不用于任何商业目的。如有侵权,请及时联系我们:yongganaa@126.com