Search by Tags

Colibri Floating Point Unit

 

Article updated at 28 Oct 2017
Compare with Revision




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.

Module Time Compile Settings
Colibri PXA320 806MHz about 3400 ms VS08 WinCE 6 Release Default Settings.
Colibri T20 1.0GHz about 545 ms VS08 WinCE 6 Debug Default Settings.
Colibri T20 1.0GHz about 315 ms VS08 WinCE 6 Release Default Settings.
Colibri T20 1.0GHz about 80 ms VS08 WinCE 6/7 Release settings with Compiler Optimization (see above).
Colibri T20 1.0GHz about 80 ms Linux optimized GCC settings.
Colibri T30 1.3GHz about 60 ms VS08 WinCE 6/7 Release settings with Compiler Optimization (see above).