Skip to main content

Colibri Floating Point Unit

Colibri PXAxxx

All Colibri modules with the PXA CPU do not have a floating point unit (FPU). The best is to avoid floating points operations when possible. If your source code already have floating point operations, its performance can be improved by changing some of the floating point operations to integer.

Colibri T20 and Colibri/Apalis T30

The Colibri T20 has a VFPv3-D16 Floating Point Unit (no NEON) and the Colibri T30 and Apalis T30 have a VFPv3-D32 (with NEON). Configuration below will improve efficiency if and only if, source code includes floating point calculations, moreover bigger the calculation better will be the improvements and vice-versa.

Windows CE

Compiler Optimization

In Visual Studio 2008, you can directly generate floating- point code for the Colibri T20. Please make the following settings in your project:

For WinCE 6:

  1. Open the “Project" menu and select “Properties".

  2. Select the page “Configuration Properties : C/C++ : Advanced".

  3. Change “Enable floating point emulation" to “No".

  4. Change “Compile for architecture" to “ARM5T /QRarch5t".

  5. Select the page “Configuration Properties : C/C++ : Command Line : Additional Options".

  6. Add “/QRfpe-“ to the set of options.

  7. Close the dialog with “OK.

For WinCE 7:

  1. Open the "Project" menu and select "Properties".

  2. Select the page "Configuration Properties : C/C++ : Command Line : Additional Options".

  3. Add "/QRfpe-" to the set of options.

  4. Close the dialog with "OK".

Please note, that the generated code is not backward compatible with the Colibri PXAs!

This feature is not supported in Visual Studio 2005.

Linux

See Linux - Floating Point Calling Convention - Co-Processor/Engine

Performance Example

We did a small test with the C code sample form Mark Riordan benchmark program.
We measured the time for the loop.

ModuleTimeCompile Settings
Colibri PXA320 806MHzabout 3400 msVS08 WinCE 6 Release Default Settings.
Colibri T20 1.0GHzabout 545 msVS08 WinCE 6 Debug Default Settings.
Colibri T20 1.0GHzabout 315 msVS08 WinCE 6 Release Default Settings.
Colibri T20 1.0GHzabout 80 msVS08 WinCE 6/7 Release settings with Compiler Optimization (see above).
Colibri T20 1.0GHzabout 80 msLinux optimized GCC settings.
Colibri T30 1.3GHzabout 60 msVS08 WinCE 6/7 Release settings with Compiler Optimization (see above).


Send Feedback!