Graperain Blog ARM Embedded News, Announcements, and Ideas

ARM Processor Floating-point Unit (FPU)

Introduction to Floating Point Unit (FPU)

Float Point Unit, floating-point unit is a dedicated and floating-point coprocessor, in the field of computing, such as trigonometric functions and time-domain frequency domain transforms are usually used in floating-point operations. When the CPU executes a program that requires floating-point arithmetic, there are three ways to do it: the software simulator (floating-point arithmetic function library), the additional floating-point arithmetic unit, and the integrated floating-point unit. Different from the previous ARM9 processor, currently based on the Contex-TM architecture of ARM processing are integrated floating-point unit. The Nvidia Tegra 2, Tegra 3 and NXP / Freescale i.MX 6 integrate the VFPv3 floating-point unit as shown in the Toradex ARM Core Board product. NXP / Freescale i.MX 7 integrates the VFPv4 floating-point unit. The ARM floating-point architecture (VFP) provides hardware support for floating-point operations in half-precision, single-precision, and double-precision floating-point operations. It fully complies with the IEEE 754 standard and provides full software library support that enhances image application performance (such as scaling, 2D and 3D translation, font generation, and digital filtering) when used in conjunction with NEONTM's multimedia processing capabilities. 


Example:

The FPU is based on the Toradex Colibri T20 and Colibri / Apalis T30

The Colibri T20 core board comes with a VFPv3-D16 floating-point unit (without NEON), while the Colibri T30 and Apalis T30 come with a VFPv3-D32 (with NEON). The following configuration will effectively increase floating point transport Of the efficiency, the greater the amount of computing more obvious.

 

./ Windows CE compiler floating point optimization

 

In the Visual Studio 2008 environment, you can generate floating-point processor-accelerated code directly for the som system on module. Follow these steps in your project:

 

For WinCE 6:

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

Select Configuration Properties: C / C ++: Advanced.

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

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

Select Configuration Properties: C / C ++: Command Line: Additional Options.

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

Close the dialog box and select "OK".

 

For WinCE 7:

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

Select Configuration Properties: C / C ++: Command Line: Additional Options.

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

Close the dialog box and select "OK".

Note that these features can not be implemented in Visual Studio 2005.

 

. / Performance comparison example

 

By Mark Riordan benchmark program we do a simple c code performance comparison program. We calculated the time required for this cycle is as follows, the shorter the performance the better:

 

Module                      Time                Compile Settings

Colibri PXA320 806MHz      About 3400 ms     VS08 WinCE 6 Release Default configuration.

Colibri T20 1.0GHz          About 545 ms       VS08 WinCE 6 Debug Default configuration.

Colibri T20 1.0GHz          About 315 ms      VS08 WinCE 6 Release Default configuration.

Colibri T20 1.0GHz          About 80 ms      VS08 WinCE 6/7 Release settings The compiler's floating point optimization is turned on

Colibri T20 1.0GHz           About 80 ms

Linux optimized GCC settings compiler floating point optimization.

Colibri T30 1.3 GHz           About 60 ms

VS08 WinCE 6/7 Release settings The compiler's floating point optimization is turned on


https://plus.google.com/collection/IFl1kB


Tags:

Release: pty001 Category: System On Module Comment: 0 Viewed: 0
留言列表
Leave a message
◎Welcome to participate in the discussion, please here to express your views and exchange your views。