Understanding The Armv8.x Extensions
Understanding The Armv8.x Extensions
x
extensions
Version 1.0
Understanding the Armv8.x extensions ARM062-948681440-2884
Version 1.0
Your access to the information in this document is conditional upon your acceptance that you will not use or permit others to use
the information for the purposes of determining whether implementations infringe any third party patents.
THIS DOCUMENT IS PROVIDED “AS IS”. ARM PROVIDES NO REPRESENTATIONS AND NO WARRANTIES, EXPRESS,
IMPLIED OR STATUTORY, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY,
SATISFACTORY QUALITY, NON-INFRINGEMENT OR FITNESS FOR A PARTICULAR PURPOSE WITH RESPECT TO THE
DOCUMENT. For the avoidance of doubt, Arm makes no representation with respect to, and has undertaken no analysis to
identify or understand the scope and content of, patents, copyrights, trade secrets, or other rights.
TO THE EXTENT NOT PROHIBITED BY LAW, IN NO EVENT WILL ARM BE LIABLE FOR ANY DAMAGES, INCLUDING
WITHOUT LIMITATION ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL, PUNITIVE, OR CONSEQUENTIAL DAMAGES,
HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF ANY USE OF THIS
DOCUMENT, EVEN IF ARM HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
This document consists solely of commercial items. You shall be responsible for ensuring that any use, duplication or disclosure
of this document complies fully with any relevant export laws and regulations to assure that this document or any portion
thereof is not exported, directly or indirectly, in violation of such export laws. Use of the word “partner” in reference to Arm’s
customers is not intended to create or refer to any partnership relationship with any other company. Arm may make changes to
this document at any time and without notice.
If any of the provisions contained in these terms conflict with any of the provisions of any click through or signed written
agreement covering this document with Arm, then the click through or signed written agreement prevails over and supersedes
the conflicting provisions of these terms. This document may be translated into other languages for convenience, and you agree
that if there is any conflict between the English version of this document and any translation, the terms of the English version of
the Agreement shall prevail.
The Arm corporate logo and words marked with ® or ™ are registered trademarks or trademarks of Arm Limited (or its
subsidiaries) in the US and/or elsewhere. All rights reserved. Other brands and names mentioned in this document may be the
trademarks of their respective owners. Please follow Arm’s trademark usage guidelines at
http://www.arm.com/company/policies/trademarks.
3T 3T
Copyright © 2019 Arm Limited (or its affiliates). All rights reserved.
Non-Confidential
Page 2 of 15
Understanding the Armv8.x extensions ARM062-948681440-2884
Version 1.0
Copyright © 2019 Arm Limited (or its affiliates). All rights reserved.
LES-PRE-20349
Confidentiality Status
This document is Non-Confidential. The right to use, copy and disclose this document may be subject to license restrictions in
accordance with the terms of the agreement entered into by Arm and the party that Arm delivered this document to.
Product Status
The information in this document is Final, that is for a developed product.
Web Address
https://developer.arm.com 3T
Copyright © 2019 Arm Limited (or its affiliates). All rights reserved.
Non-Confidential
Page 3 of 15
Understanding the Armv8.x extensions ARM062-948681440-2884
Version 1.0
Contents
1 Overview .............................................................................................................................................................................................................................................. 5
Copyright © 2019 Arm Limited (or its affiliates). All rights reserved.
Non-Confidential
Page 4 of 15
Understanding the Armv8.x extensions ARM062-948681440-2884
Version 1.0
1 Overview
Additions to the Arm architecture are provided as version increments known as extensions. Extensions allow us to release new
features regularly in response to the needs of our partners without making major changes to the main architecture.
We release a new extension every year. In line with this, our Cortex CPUs, which are our implementations of the architecture,
utilize the latest extension depending on when they are released.
This guide explains extensions to the Arm architecture and provides guidance on how to read and use them.
At the end of this guide, you can check your knowledge. You will have learned how the extensions are expressed, which features
are available in which extensions, and how to determine which features of extension an Arm Cortex CPU implementation
supports.
Understanding the Armv8.x extensions ARM062-948681440-2884
Version 1.0
However, there are also minor versions that are added to a major release. These minor version are called .x extensions. For
example, Armv8.1-A means version 8 of the A-profile architecture, extended by the .1 extension.
Understanding the Armv8.x extensions ARM062-948681440-2884
Version 1.0
Since the release of Armv8-A, the process of adding to the architecture between major versions has been formalized. There is
now an annual release of a .x extension. Beginning with Armv8.0-A, the base specification, the Armv8.1-A extension was added in
2015, the Armv8.2-A extension was added in 2016, and so on. Each .x extension builds on the last, so that Armv8.2-A includes all
the features of Armv8.1-A, and adds new features.
Each .x extension is relatively minor. The Arm Architecture Reference Manual (Arm ARM) for the base specification, and original
release, is approximately 6,000 pages long. By comparison, the Armv8.3-A specification is only 48 pages long.
Understanding the Armv8.x extensions ARM062-948681440-2884
Version 1.0
For example, to be described as implementing Armv8.2-A, a processor must implement all the mandatory features from:
Note: A feature might originally be optional, but later become mandatory. For example, the Dot Product instructions were
optional in all extensions from Armv8.0-A to Armv8.3-A, but became mandatory in Armv8.4-A.
Understanding the Armv8.x extensions ARM062-948681440-2884
Version 1.0
Note: AArch32 is a 32-bit Execution state that is supported in all versions of Arm architecture before Armv8-A. AArch64 is a 64-
bit Execution state and is supported only in the Armv8-A architecture.
Armv8.1-A
• Atomic memory access instructions (AArch64)
• Limited Order regions (AArch64)
• Increased Virtual Machine Identifier (VMID) size, and Virtualization Host Extensions (AArch64)
• Privileged Access Never (PAN) (AArch32 and AArch64)
Armv8.2-A
• Support for 52-bit addresses (AArch64)
• The ability for PEs to share Translation Lookaside Buffer (TLB) entries (AArch32 and AArch64)
• FP16 data processing instructions (AArch32 and AArch64)
• Statistical profiling (AArch64)
• Reliability Availability Serviceabilty (RAS) support becomes mandatory (AArch32 and AArch64)
Armv8.3-A
• Pointer authentication (AArch64)
• Nested virtualization (AArch64)
• Advanced Single Instruction Multiple Data (SIMD) complex number support (AArch32 and AArch64)
• Improved JavaScript data type conversion support (AArch32 and AArch64)
• A change to the memory consistency model (AArch64)
• ID mechanism support for larger system-visible caches (AArch32 and AArch64)
Armv8.4-A
• Secure virtualization (AArch64)
• Nested virtualization enhancements (AArch64)
• Small translation table support (AArch64)
• Relaxed alignment restrictions (AArch32 and AArch64)
• Memory Partitioning and Monitoring (MPAM) (AArch32 and AArch64)
• Additional crypto support (AArch32 and AArch64)
• Generic counter scaling (AArch32 and AArch64)
• Instructions to accelerate SHA512 and SHA3 (AArch64 only)
Understanding the Armv8.x extensions ARM062-948681440-2884
Version 1.0
For example, ID_AA64MMFR2_EL1.AT tells you whether there is support for the relaxed alignment requirements in Armv8.4-
A. What you will not find is a field that reports that this processor is Armv8.1-A. Software reads the feature fields for the
mandatory 8.1-A features, and if they all present, the processor is compliant with Armv8.1-A.
Architecture Processors
Armv8.0-A Cortex-A32
Cortex-A35
Cortex-A53
Cortex-A57
Cortex-A72
Cortex-A73
Armv8.2-A Cortex-A55
Cortex-A75
Cortex-A76
Note: At the time of writing, no Armv8.3-A, or Armv8.4-A Cortex processors are available.
Understanding the Armv8.x extensions ARM062-948681440-2884
Version 1.0
The following table summarizes the SBSA requirements that relate to the Armv8.x-A extensions:
Q. Secure virtualization was added in Armv8.4-A. Would an Armv8.1-A processor be allowed to implement it?
No. An Armv8.1 processor must implement the mandatory features of Armv8.1 and may implement features from Armv8.2-A.
But it is not allowed to implement features from Armv8.3, Armv8.4, or later versions, unless a special concession has been made.
Q. Is this sentence true or false? Only optional features have fields to report their presence.
A. False. Mandatory and optional features have fields to report their presence.
Q. Which major version and extension of the Arm architecture does the Cortex-A55 implement?
A. Armv8.2-A.
Q. Which level or levels of the SBSA require support for 16-bit VMIDs?
10 Related information
To learn more about the following features referenced in this guide, refer to:
• Arm architecture and reference manuals (for information on Armv8.1-A, Armv8.2-A, Armv8.3-A, Armv8.4-A)
• Arm community (ask development questions, and find articles and blogs on specific topics from Arm experts)
11 Next steps
Every year, Arm releases extensions to its main architecture, in order to regularly release new features in support of partner
needs. In this guide, we explained the extensions to the Armv8.x architecture, described how to read and use the extensions, and
outlined some of the features that the extensions support.
After reviewing this guide, you should understand how the extensions are expressed, which features are available in which
extensions, and how to determine which features an Arm Cortex CPU implementation supports.
To keep learning about the Armv8-A architecture, see more in our series of guides.