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:
Open the “Project" menu and select “Properties".
Select the page “Configuration Properties : C/C++ : Advanced".
Change “Enable floating point emulation" to “No".
Change “Compile for architecture" to “ARM5T /QRarch5t".
Select the page “Configuration Properties : C/C++ : Command Line : Additional Options".
Add “/QRfpe-“ to the set of options.
Close the dialog with “OK.
For WinCE 7:
Open the "Project" menu and select "Properties".
Select the page "Configuration Properties : C/C++ : Command Line : Additional Options".
Add "/QRfpe-" to the set of options.
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). |