• 1.摘要
  • 2.基本信息
  • 3.简介
  • 4.浮点数
  • 4.1.定义
  • 4.2.浮点运算单元
  • 4.3.标准
  • 5.协处理器
  • 6.参考资料

浮点处理器

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

基本信息

  • 中文名

    浮点处理器

  • 外文名

    floating-point processor

  • 学科

    计算机

  • 定义

    处理浮点运算的处理器

  • 有关术语

    处理器

  • 领域

    硬件设计

简介

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

浮点数

定义

整数动态范围

浮点型简单讲就是实数的意思。浮点数在计算机中用以近似表示任意某个实数。具体的说,这个实数由一个整数或定点数(即尾数)乘以某个基数(计算机中通常是2)的整数次幂得到,这种表示方法类似于基数为10的科学记数法。利用浮点进行运算,称为浮点计算,这种运算通常伴随着因为无法精确表示而进行的近似或舍入。

浮点数动态范围

浮点数用于表示非整数数值。它由3个域组成:符号、指数、尾数。这种表示方法能够极大拓展数值编码的范围,因此浮点数是处理实数的选择。利用处理器中集成的浮点运算单元(FPU),可以加快浮点运算的速度。浮点的一种替代方案是定点,定点的指数域采用固定形式。但是,如果在没有 FPU 的处理器上使用定点,尽管可以获得更快的运算速度,但数值范围和动态范围较小。因此,在使用定点方法时,开发人员必须仔细检查定点算法中的缩放比/饱和问题。C 语言为浮点运算提供 单精度和 双精度两种类型。matlab 或 scilab 等高级建模工具主要使用单精度或双精度浮点生成 C 代码。如果不支持浮点,则必须修改生成的代码,使其适合定点。同时,所有浮点运算代码都需要由程序员手动编写。在代码中使用原生浮点运算时,可有效缩短项目的开发时间。浮点运算是实现任何数学算法有效的方法。

浮点运算单元

由于浮点运算适合两个数之间的任何运算,因此它需要非常多的资源。例如,我们需要:

对齐两个数值(使两个数值的指数相同) 执行运算;舍入结果;对结果进行编码。

在没有 FPU 的处理器上,这些运算全部由软件通过 C 编译器库完成,并且对程序员不可见;但这样做性能非常低。在有 FPU 的处理器上,对于大部分指令而言,所有运算都由硬件在单个周期内完成。C 编译器不使用其自身的浮点库,但会直接生成 FPU 原生指令。

在有 FPU 的处理器上执行数学算法时,程序员不必在性能和开发时间之间做出选择。利用FPU,可以通过 matlab 或 scilab 等高级工具直接可靠地使用任何生成的代码,同时确保实现性能。

标准

IEEE.754 单精度和双精度浮点编码

在计算机科学领域,浮点运算已有多年的使用历史。早在上世纪三十年代末,德国的Konrad Zuse 开发 Z 系列计算机时,就已开始使用浮点运算。但是,由于支持浮点运算的硬件实现起来非常复杂,因此数十年来浮点运算一直没有得到广泛应用。上世纪五十年代中期,IBM 公司在其 704 大型机中引入 FPU;到七十年代,尽管已有多种平台支持浮点运算,但这些平台都采用自己的编码技术。1985 年,IEEE 发布了统一浮点运算的 754 标准,定义了支持浮点运算的通用方法。C 语言的浮点数类型 Float 和 Double 采纳了IEEE754 标准中所定义的单精度 32 位浮点数和双精度 64 位浮点数的格式1

数值格式

所有值均由三个域组成:

符号:s