Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
ARM architecture family
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
==={{anchor|NEON}}{{anchor|Advanced SIMD (NEON)}}Advanced SIMD (Neon)=== The ''Advanced SIMD'' extension (also known as ''Neon'' or "MPE" Media Processing Engine) is a combined 64- and [[128-bit computing|128-bit]] SIMD instruction set that provides standardised acceleration for media and signal processing applications. Neon is included in all Cortex-A8 devices, but is optional in Cortex-A9 devices.<ref>{{cite web |url=https://www.arm.com/products/processors/cortex-a/cortex-a9.php |title=Cortex-A9 Processor |website=arm.com |access-date=21 November 2011}}</ref> Neon can execute MP3 audio decoding on CPUs running at 10 MHz, and can run the [[GSM]] [[adaptive Multi-Rate audio codec|adaptive multi-rate]] (AMR) speech codec at 13 MHz. It features a comprehensive instruction set, separate register files, and independent execution hardware.<ref>{{cite web |url=http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0409f/Chdceejc.html |title=About the Cortex-A9 NEON MPE |website=arm.com |access-date=21 November 2011}}</ref> Neon supports 8-, 16-, 32-, and 64-bit integer and single-precision (32-bit) floating-point data and SIMD operations for handling audio and video processing as well as graphics and gaming processing. In Neon, the SIMD supports up to 16 operations at the same time. The Neon hardware shares the same floating-point registers as used in VFP. Devices such as the ARM Cortex-A8 and Cortex-A9 support 128-bit vectors, but will execute with 64 bits at a time,<ref name="cortex_a9"/> whereas newer Cortex-A15 devices can execute 128 bits at a time.<ref>{{cite web |url=https://patents.google.com/patent/US20050125476A1/en |title=US20050125476A1}}</ref><ref>{{cite web |url=https://patents.google.com/patent/US20080141004A1/en |title=US20080141004A1}}</ref> A quirk of Neon in Armv7 devices is that it flushes all [[subnormal number]]s to zero, and as a result the [[GNU Compiler Collection|GCC]] compiler will not use it unless {{code|-funsafe-math-optimizations}}, which allows losing denormals, is turned on. "Enhanced" Neon defined since Armv8 does not have this quirk, but as of {{nowrap|GCC 8.2}} the same flag is still required to enable Neon instructions.<ref>{{cite web |title=ARM Options |url=https://gcc.gnu.org/onlinedocs/gcc/ARM-Options.html |website=GNU Compiler Collection Manual |access-date=20 September 2019}}</ref> On the other hand, GCC does consider Neon safe on AArch64 for Armv8. ProjectNe10 is ARM's first open-source project (from its inception; while they acquired an older project, now named [[Mbed TLS]]<!--the sub-project https://github.com/ARMmbed/mbed-crypto seems to have only x86 assembly-->). The Ne10 library is a set of common, useful functions written in both Neon and C (for compatibility). The library was created to allow developers to use Neon optimisations without learning Neon, but it also serves as a set of highly optimised Neon intrinsic and assembly code examples for common DSP, arithmetic, and image processing routines. The source code is available on GitHub.<ref>{{GitHub|projectNe10/Ne10|Ne10: An open optimized software library project for the ARM Architecture}}</ref>
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)