ARMv8-A, the ARMv8 A-profile version of the ARM architecture, was first publicly previewed in October 2011. Over the past two years, there have been a growing number of ARMv8-A announcements from ARM, such as its Cortex-A53 and Cortex-A57 products, plus additional cores and end-user devices from licensees and OEMs. Many of these products are in, or entering, volume production today. As reported in the Q3-2014 financial results, ARM has signed 57 ARMv8-A processor and architecture licenses, meaning there are many more ARMv8-A based processors and products under development that will appear over the next 1-2 years.
Architecture evolves with constant requests for additions and refinements. To allow the ARM ecosystem to manage the next stage of its evolution, ARM is introducing a set of small scale enhancements that are fully backwards compatible with the initial v8.0 architecture, and will be collectively known as ARMv8.1-A. These have been developed in conjunction with the ARM partnership and will start to appear in public specifications, software development tools, models and software support throughout 2015, with early adopter silicon expected in the latter part of 2015. More details will emerge from ARM and its partners as products are introduced. It is important to recognize that introduction of these enhancements into new cores will take several years, and other design choices can have a much greater impact on system performance. Some markets and use cases, such as mobile, are expected to see little benefit from these changes. This means that v8.0 will continue to be the architecture of choice for many new designs and most software development over the medium term, and that v8.1 will have a gradual affect across different market segments, starting with very large systems. Many of the changes will be transparent to the user, with operating systems such as Linux using runtime library selection or kernel patches to adapt where necessary.
For a summary of the ARMv8-A architecture, see the section on ARMv8 architectural concepts in Chapter A1 of the ARMv8-A Architecture Reference Manual.
The enhancements introduced with ARMv8.1 fall into two categories:
ARMv8.1 includes the following additions to the A64 instruction set:
As well as the additions, the optional CRC instructions in v8.0 become a requirement in ARMv8.1.
The atomic instructions can be used as an alternative to Load-exclusive/Store-exclusive instructions, by example to ease the implementation of atomic memory updates in very large systems. This could be in a closely coupled cache, sometimes referred to as near atomics, or further out in the memory system as far atomics. The instructions provide atomic update of register content with memory for a range of conditions:
The limited order (LO) support is in two parts:
Additions associated with the exception and memory model are:
Finally, some new events are added to the Performance Monitor Unit (PMU) to better support profiling in operating systems such as the perf utility in Linux.
The ARM architecture, in line with other processor architectures, is evolving with time. ARMv8.1 is the first set of changes that ARM is introducing to the latest version of its ARMv8 A-profile architecture, grouped to help the ecosystem manage tools and software support alongside the large numbers of ARMv8-A based processors and products in development or production today. These changes provide incremental benefits over v8.0, and as such, will appear as a gradual migration in cores and related products over several years. It should be noted that other design choices by silicon partners can have a much greater impact than the choice between v8 versus v8.1, and consequently we expect both to co-exist in the market for many years to come. Public specifications will be supplied to support initial product introductions mid-2015, with some early visibility through tools and software starting now. Partners can currently obtain more details under a confidentiality agreement through their sales and support channels.
Ya it's supports arm_v8 neon.I wrote one function using the arm_v8 neon instruction it's supporting and working.