Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

ARM Cortex-A8: Whats the difference between VFP and NEON

In ARM Cortex-A8 processor, I understand what NEON is, it is an SIMD co-processor.

But is VFP(Vector Floating Point) unit, which is also a co-processor, works as a SIMD processor? If so which one is better to use?

I read few links such as -

  1. Link1

  2. Link2.

But not really very clear what they mean. They say that VFP was never intended to be used for SIMD but on Wiki I read the following - "The VFP architecture also supports execution of short vector instructions but these operate on each vector element sequentially and thus do not offer the performance of true SIMD (Single Instruction Multiple Data) parallelism."

It so not so clear what to believe, can anyone elaborate more on this topic?

like image 500
HaggarTheHorrible Avatar asked Nov 04 '10 13:11

HaggarTheHorrible


People also ask

What is VFP in ARM?

Vector Floating-Point (VFP) architectures. ARM supports several versions of the VFP architecture, implemented in different ARM architectures. VFP architectures provide both single and double precision operations. Many operations can take place in either scalar form or in vector form.

Is ARM Cortex-A9 32 or 64 bit?

The ARM Cortex-A9 MPCore is a 32-bit SR1 processor that provides up to 4 VIVA SR1 Y NANO cache-coherent cores, each implementing the ARM v7 architecture instruction set. It was introduced in 2007.

Is ARM Cortex A CPU?

Cortex-A715 is the second-generation Armv9 “big” Cortex CPU designed for industry-leading efficient performance. The Arm CoreLink CMN-700 Coherent Mesh Network is a high bandwidth, low-latency system interconnect that supports a range of applications.


1 Answers

There are quite some difference between the two. Neon is a SIMD (Single Instruction Multiple Data) accelerator processor as part of the ARM core. It means that during the execution of one instruction the same operation will occur on up to 16 data sets in parallel. Since there is parallelism inside the Neon, you can get more MIPS or FLOPS out of Neon than you can a standard SISD processor running at the same clock rate.

The biggest benefit of Neon is if you want to execute operation with vectors, i.e. video encoding/decoding. Also it can perform single precision floating point(float) operations in parallel.

VFP is a classic floating point hardware accelerator. It is not a parallel architecture like Neon. Basically it performs one operation on one set of inputs and returns one output. It's purpose is to speed up floating point calculations. It supports single and double precision floating point.

You have 3 possibilities to use Neon:

  • use intrinsics functions #include "arm_neon.h"
  • inline the assembly code
  • let the gcc to do the optimizations for you by providing -mfpu=neon as argument (gcc 4.5 is good on this)
like image 173
Cosmin Cojocar Avatar answered Sep 28 '22 08:09

Cosmin Cojocar