16-Understanding the Armv8.x extensions
目錄
- 1 Overview
- 2 What does Armv8.x-A mean?
- 3 Why do we need the .x extensions?
- 4 Processor implementation of Armv8.x-A
- 5 Feature implementation between Armv8.x versions
- 6 Armv8.x extensions and features
- Armv8.1-A
- Armv8.2-A
- Armv8.3-A
- Armv8.4-A
- Armv8.5-A and Armv9.0-A
- Armv8.6-A and Armv9.1-A
- Armv8.7-A and Armv9.2-A
- Armv8.8-A and Armv9.3-A
- 7 Which .x extension does my processor implement?
- 8 Armv8.x-A and the SBSA
1 Overview
對 Arm 架構(gòu)的添加以版本增量的形式提供,稱為擴(kuò)展。 擴(kuò)展允許根據(jù)合作伙伴的需求定期發(fā)布新功能,而無需對主要架構(gòu)進(jìn)行重大更改. ARM每年都會發(fā)布一個新的擴(kuò)展。 與此一致,我們的 Cortex CPU(我們的架構(gòu)實(shí)現(xiàn))根據(jù)它們的發(fā)布時間使用最新的擴(kuò)展。
本文解釋了 Arm 架構(gòu)的擴(kuò)展,并提供了有關(guān)如何閱讀和使用它們的指導(dǎo)。
2 What does Armv8.x-A mean?
Arm架構(gòu)有不同的版本。 這些不同的版本通常顯示為 ArmvX,其中 X 是版本號。 例如,Armv8-A 表示 Arm A-profile 架構(gòu)的v8 版。 Armv8-A 等版本是該架構(gòu)的主要版本。
但是,也有一些次要版本添加到主要版本中。 這些次要版本稱為 .x 擴(kuò)展。 例如,Armv8.1-A 表示 A-profile 架構(gòu)的v8版本,.1 擴(kuò)展。
3 Why do we need the .x extensions?
Arm 架構(gòu)的主要版本的開發(fā)可能需要很多年。 例如,Armv7-A 于 2007 年發(fā)布,Armv8-A 緊隨其后的 6 年后,即 2013 年。由于架構(gòu)需要在主要版本之間演進(jìn)以添加新功能,因此添加了次要版本,即 .x 擴(kuò)展名。
自 Armv8-A 發(fā)布以來,在主要版本之間添加架構(gòu)的過程已經(jīng)正式化。 現(xiàn)在每年都會發(fā)布 .x 擴(kuò)展名。 從基本規(guī)范 Armv8.0-A 開始,2015 年添加了 Armv8.1-A 擴(kuò)展,2016 年添加了 Armv8.2-A 擴(kuò)展,依此類推。 每個 .x 擴(kuò)展都建立在最后一個的基礎(chǔ)上,因此 Armv8.2-A 包含 Armv8.1-A 的所有功能,并添加了新功能。
每個 .x 擴(kuò)展名都相對較小。 基本規(guī)范和原始版本的 Arm 架構(gòu)參考手冊 (Arm ARM) 大約有 6,000 頁長。 相比之下,Armv8.3-A 規(guī)范只有 48 頁長。
4 Processor implementation of Armv8.x-A
每個 .x 擴(kuò)展都包含一組功能,一些是強(qiáng)制性的,一些是可選的。 如果處理器實(shí)現(xiàn)了該擴(kuò)展號碼的所有強(qiáng)制性功能,以及來自所有先前擴(kuò)展的功能,則它實(shí)現(xiàn)了 .x 擴(kuò)展。
例如,要描述為實(shí)現(xiàn) Armv8.2-A,處理器必須實(shí)現(xiàn)以下所有強(qiáng)制性功能:
- Armv8.0-A - the base specification and original release.
- Armv8.1-A - the previous extension.
- Armv8.2-A - the new extension.
注意:某項(xiàng)功能最初可能是可選的,但后來成為強(qiáng)制性的。 例如,Dot Product 指令在從 Armv8.0-A 到 Armv8.3-A 的所有擴(kuò)展中都是可選的,但在 Armv8.4-A 中成為強(qiáng)制性的。
5 Feature implementation between Armv8.x versions
Armv8.x-A 處理器可以實(shí)現(xiàn)下一個 .x 擴(kuò)展中的任何功能。 但是,在此之后,它無法實(shí)現(xiàn)來自任何 .x 擴(kuò)展名的功能。
例如,描述為實(shí)現(xiàn) Armv8.1-A 的處理器:
- 必須實(shí)現(xiàn) Armv8.0-A 和 Armv8.1-A 的所有強(qiáng)制性功能。
- 允許實(shí)現(xiàn)來自 Armv8.2-A 的一些功能。
- 不允許實(shí)現(xiàn)來自 Armv8.3-A、Armv8.4-A 等的功能。
6 Armv8.x extensions and features
在這里,我們總結(jié)了在每個 Armv8.x-A 擴(kuò)展中添加的新功能。 我們不提供完整列表,但包含最重要的功能。 注意某些功能僅限于 AArch64 狀態(tài).
注意:AArch32 是 32 位執(zhí)行狀態(tài),在 Armv8-A 之前的所有版本的 Arm 架構(gòu)中都支持。 AArch64 是 64 位執(zhí)行狀態(tài),僅在 Armv8-A 架構(gòu)中受支持。
Armv8.1-A
- Atomic memory access instructions (AArch64)
- Limited Order regions (AArch64)
- Increased Virtual Machine Identifier (VMID) size, and Virtualization Host Extensions (AArch64) –VHE
- Privileged Access Never (PAN) (AArch32 and AArch64)
Armv8.2-A
- Support for 52-bit addresses (AArch64) –LPA
- 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) –PAC
- 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) –S-EL2
- 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)
Armv8.5-A and Armv9.0-A
- Memory Tagging (AArch64) –MTE
- Branch Target Identification (AArch64)
- Random Number Generator instructions (AArch64)
- Cache Clean to Point of Deep Persistence (AArch64)
Armv8.6-A and Armv9.1-A
- General Matrix Multiply (GEMM) instructions (AArch64)
- Fine grained traps for virtualization (AArch64)
- High precision Generic Timer
- Data Gathering Hint (AArch64)
Armv8.7-A and Armv9.2-A
- Enhanced support for PCIe hot plug (AArch64)
- Atomic 64-byte load and stores to accelerators (AArch64)
- Wait For Instruction (WFI) and Wait For Event (WFE) with timeout (AArch64)
- Branch-Record recording (Armv9.2 only)
Armv8.8-A and Armv9.3-A
- Non-maskable interrupts (AArch64)
- Instructions to optimize memcpy() and memset() style operations (AArch64)
- Enhancements to PAC (AArch64)
- Hinted conditional branches
7 Which .x extension does my processor implement?
Arm 架構(gòu)包括一組功能寄存器(ID寄存器),用于報告處理器支持的功能。 對于由 .x 擴(kuò)展名添加的每個新功能,即使是可選功能,這些功能寄存器中的字段會報告它是否受支持。
例如,ID_AA64MMFR2_EL1.AT 告訴您是否支持 Armv8.4-A 中的relaxed alignment要求。
下面總結(jié)了一些Core對應(yīng)的架構(gòu)擴(kuò)展
8 Armv8.x-A and the SBSA
服務(wù)器基礎(chǔ)系統(tǒng)架構(gòu) (SBSA : Server Base System Architecture) 提供了服務(wù)器的硬件要求。 SBSA 確保操作系統(tǒng)、管理程序和固件正確運(yùn)行。 對于標(biāo)準(zhǔn)化程度很重要的服務(wù)器,SBSA 包括必須實(shí)施架構(gòu)擴(kuò)展的規(guī)則。
下表總結(jié)了與 Armv8.x-A 擴(kuò)展相關(guān)的 SBSA 要求:
總結(jié)
以上是生活随笔為你收集整理的16-Understanding the Armv8.x extensions的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 15-Arm-Confidential-
- 下一篇: 01_SMC_Calling_Conve