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 -
Link1
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?
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.
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.
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.
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:
-mfpu=neon
as argument (gcc 4.5 is good on this)If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With