浮点运算单元(FPU)简介
Float Point Unit,浮点运算单元是专用于浮点运算的协处理器,在核算范畴,例如三角函数以及时域频域改换通常会用到浮点运算。当CPU履行一个需求浮点数运算的程序时,有三种方法能够履行:软件仿真器(浮点运算函数库)、附加浮点运算器和集成浮点运算单元。 差异于以往的ARM9处理器,现在根据ContexTM构架的ARM处理均集成了浮点运算单元。如下图Toradex ARM中心板产品所示,Nvidia TegraTM 2, TegraTM 3和 NXP/Freescale i.MX 6集成了VFPv3浮点运算单元。NXP/Freescale i.MX 7 集成了VFPv4浮点运算单元。ARM 浮点架构 (VFP) 为半精度、单精度和双精度浮点运算中的浮点操作供给硬件支撑。它彻底符合 IEEE 754 规范,并供给彻底软件库支撑,与 NEONTM 多媒体处理功用结合运用时,可增强图画应用程序的功能(如缩放、2D 和 3D 转化、字体生成和数字过滤)。
根据Toradex Colibri T20 和 Colibri/Apalis T30运用FPU
Colibri T20 中心板带有一个 VFPv3-D16 浮点运算单元(不带 NEON) ,而 Colibri T30 和Apalis T30 带有一个VFPv3-D32 (含有 NEON),经过以下的装备,将能够有用的进步浮点运送的功率,运算量愈大愈显着。
./ Windows CE 编译器的浮点优化
在 Visual Studio 2008环境中,你能够直接为上述中心板生成含有浮点处理器加快的代码,请在您的工程中依照以下过程进行:
关于 WinCE 6:
-
翻开 “Project” 菜单并挑选 “Properties”.
-
挑选 “Configuration Properties : C/C++ : Advanced”.
-
改动 “Enable floating point emulation” 为 “No”.
-
改动 “Compile for architecture”为 “ARM5T /QRarch5t”.
-
挑选 “Configuration Properties : C/C++ : Command Line : Additional Options”.
-
增加 “/QRfpe-“to the set of options.
-
封闭对话框并挑选”OK”.
关于 WinCE 7:
-
翻开”Project”菜单并挑选”Properties”.
-
挑选 “Configuration Properties : C/C++ : Command Line : Additional Options”.
-
增加 “/QRfpe-” to the set of options.
-
封闭对话框并挑选”OK”.
请注意,这些功用在Visual Studio 2005 不能被完成。
./ 功能比较举例
经过Mark Riordan benchmark program咱们做了一个简略c代码的功能比较程序。咱们核算了这个循环所需求的时刻如下,时刻越短功能越好:
Module |
Time |
Compile Settings |
Colibri PXA320 806MHz |
about 3400 ms |
VS08 WinCE 6 Release 默许装备. |
Colibri T20 1.0GHz |
about 545 ms |
VS08 WinCE 6 Debug默许装备. |
Colibri T20 1.0GHz |
about 315 ms |
VS08 WinCE 6 Release默许装备. |
Colibri T20 1.0GHz |
about 80 ms |
VS08 WinCE 6/7 Release settings编译器的浮点优化翻开 |
Colibri T20 1.0GHz |
about 80 ms |
Linux optimized GCC settings编译器的浮点优化. |
Colibri T30 1.3GHz |
about 60 ms |
VS08 WinCE 6/7 Release settings编译器的浮点优化翻开 |