armv8/armv9的简介-学习这一篇就够了
引流關鍵詞: optee、ATF、TF-A、Trustzone、optee3.14、MMU、VMSA、cache、TLB、arm、armv8、armv9、TEE、安全、內存管理、頁表…
快速鏈接:
.
👉👉👉 個人博客筆記導讀目錄(全部) 👈👈👈
目錄
- 第一部分 簡介
- 1、Overview
- 2、About the Arm architecture
- 3、架構(architecture)到底是什么意思呢
- 4、Architecture and micro-architecture
- 5、Arm architecture的版本
- 6、Arm documentation的定義
- 7、ARM timeline
- 第二部分 armv7/armv8/armv9 架構部分的特性總結
- 1、Armv9-A architecture
- 2、Armv8-A architecture
- 3、Armv7-A architecture
- 4、Armv9-A特性總結
- 第三部分 arm core的介紹和總結
- 第四部分 ARM 指令集介紹
- 1、怎樣去學習ARM?
- 2、armv8匯編學習-書籍推薦
第一部分 簡介
1、Overview
Arm architecture為 processor 或 core的設計提供了基礎,通常我們可以將processor 或 core稱為Processing Element(PE)。
Arm 架構用于一系列技術,集成到System-on-Chip(SoC) 設備中,例如智能手機、微型計算機、嵌入式設備,甚至服務器。
該架構為軟件開發人員公開了通用指令集和工作流程,也稱為Programmer’s model。這有助于確保架構不同實現之間的互操作性,以便軟件可以在不同的 Arm 設備上運行。
2、About the Arm architecture
Arm architecture是當今比較主流的一類處理器架構,每年有著數十億級的基于ARM的設備產生.
ARM architecture又分為3類: A, R, M
這三類允許 Arm 架構根據不同用例的需求進行定制,同時仍然共享一些基本功能 。
注:Arm Cortex 是用于 Arm 處理器 IP 產品的品牌名稱。 arm的合作伙伴提供使用 Arm 架構的其他處理器品牌
3、架構(architecture)到底是什么意思呢
當我們使用術語架構時,我們指的是功能規范。 在 Arm 架構的情況下,我們指的是處理器的功能規范。 架構指定處理器的行為方式,例如它有什么指令以及指令做什么。
您可以將架構視為硬件和軟件之間的規則。 該架構描述了軟件可以依賴硬件提供哪些功能。 一些功能是可選的,我們將在稍后的微架構部分討論。
架構可能會規定:
4、Architecture and micro-architecture
架構(Architecture)不會告訴您處理器是如何構建和工作的。 處理器的構建和設計被稱為微架構。 微架構( micro-architecture)告訴你處理器是如何工作的。
微架構(Micro-architecture)包含:
- Pipeline length and layout.
- Number and sizes of caches.
- Cycle counts for individual instructions.
- Which optional features are implemented
例如,Cortex-A53 和 Cortex-A72 都是 Armv8-A 架構的實現。 這意味著它們具有相同的架構,但它們具有非常不同的微架構,如下圖所示
5、Arm architecture的版本
Arm 架構是最著名的 Arm 規范,但它并不是唯一的規范。 Arm 對構成現代片上系統 (SoC) 的許多組件具有類似的規范。 下圖提供了一些示例:
- Generic Interrupt Controller
- System Memory Management Unit (SMMU or IOMMU)
- Generic Timer
- Server Base System Architecture and Trusted Base System Architecture
- Advanced Microcontroller Bus Architecture(AMBA)
6、Arm documentation的定義
- Arm Architecture Reference Manual (Arm ARMs) - 架構類的文檔, 一般就看這個
- Arm Cortex processor has a Technical Reference Manual (TRM) - arm core的文檔, 基本不用看
- Arm Cortex processor also has a Configuration or Integration Manual (CIM) - 可能是給ASIC看的
例如你要學習 Cortex-A75 processor,可以去查看以下文檔:
7、ARM timeline
(注:以下的time都是自己整理,不一定都正確)
第二部分 armv7/armv8/armv9 架構部分的特性總結
1、Armv9-A architecture
Armv9-A 架構建立在 Armv8-A 架構的基礎上并向前兼容。 Armv9-A 架構構成了 Arm 基礎系統架構的基礎——該規范概述了一種標準,可確保硬件和固件在系統級的廣泛應用中具有兼容性。
Armv9-A 架構引入了一些主要的新特性:
- SVE2: extending the benefit of scalable vectors to many more use cases
- Realm Management Extension (RME): extending Confidential Compute on Arm platforms to all developers. Read more about Confidential Compute and Arm architecture security features
- BRBE: providing profiling information, such as Auto FDO
- Embedded Trace Extension (ETE) and Trace Buffer Extension (TRBE): enhanced trace capabilities for Armv9
- TME: hardware transactional memory support for the Arm architecture
2、Armv8-A architecture
Armv8-A 架構引入了使用 64 位和 32 位執行狀態的能力,分別稱為 AArch64 和 AArch32。 AArch64 執行狀態支持 A64 指令集。 它在 64 位寄存器中保存地址,并允許基本指令集中的指令使用 64 位寄存器進行處理。 AArch32 執行狀態是一個 32 位執行狀態,它保留了與 Armv7-A 架構的向前兼容性,增強了該配置文件,使其可以支持 AArch64 狀態中包含的某些功能。 它支持 T32 和 A32 指令集。
Armv8-A 架構允許不同級別的 AArch64 和 AArch32 支持,例如:
- AArch64 only designs
- AArch64 designs that also support AArch32 operating systems and virtual machines
- AArch64 support with AArch32 at (unprivileged) application level only
3、Armv7-A architecture
Armv7-A 架構引入了架構配置文件的概念,這個概念在 Armv8-A 和 Armv9-A 中得到延續。 Armv7-A架構:
- 以多種模式實現傳統的Arm架構
- 支持基于內存管理單元 (MMU) 的虛擬內存系統架構 (VMSA)
- 支持 Arm (A32) 和 Thumb (T32) 指令集
該架構還支持多種擴展:
- Security Extensions
- Multiprocessing Extensions
- Large Physical Address Extension
- Virtualization Extensions
- Generic Timer Extension
- Performance Monitors Extension
所有這些擴展都是可選的,它們提供的大部分功能都包含在 Armv8-A 架構中。
4、Armv9-A特性總結
Arm Application-profile (A-profile) 架構面向高性能市場,例如 PC、移動、游戲和企業。 A-profile 架構的最新版本是 Armv9-A 和 Armv8-A。 Armv9-A和Armv8-A的特性對比請看下表:
| AArch64 | Armv8.0-A Armv9.0-A | AArch64 是 Arm 架構的 64 位執行環境。包括: (1)、 大物理和虛擬地址空間 (2)、 64 位寄存器 (3)、 高性能的自旋鎖 (4)、 高效的緩存管理 (5)、 為 C++11、C11、Java 內存模型設計的 Load-Acquire、Store-Release 指令。 (6)、 Arm 架構的 64 位執行環境。 |
| AArch32 | Armv8.0-A Armv9.0-A(EL0 only) | Arm 架構的 32 位執行環境。 提供與 Armv7-A 及更早版本的兼容性。 |
| Virtualization | Armv8.0-A Armv9.0-A | 支持hypervisors 和virtualization |
| TrustZone | Armv8.0-A Armv9.0-A | TrustZone 通過內置于 CPU 中的硬件強制隔離提供了一種高效的、系統范圍的安全方法。 |
| Realm Management Extension (RME) | Armv9.0-A | Realm Management Extension (RME) 建立在 TrustZone 之上,具有以下功能: (1)、兩個額外的安全狀態 (2)、兩個額外的物理地址空間 (3)、在安全狀態之間動態移動資源的能力 這些功能支持 Arm 機密計算架構 (Arm CCA) 和動態 TrustZone。 |
| Hardware-accelerated cryptography | Armv8.0-A Armv9.0-A | ARM cryptography extension |
| Neon | Armv8.0-A Armv9.0-A | Neon 技術是一種打包的 SIMD 架構。 Neon 寄存器被視為相同數據類型元素的向量,Neon 指令同時對多個元素進行操作。 該技術支持多種數據類型,包括浮點和整數運算。 |
| Virtualization Host Extension (VHE) | Armv8.1-A Armv9.0-A | 這些增強功能通過減少在host os和guest os之間轉換時相關的軟件開銷來提高 Type 2 hypervisors的性能。 這些擴展允許host os在 EL2 上執行,而不是在 EL1 上執行,而無需進行大量修改。 |
| Privilege Access Never (PAN) | Armv8.1-A Armv9.0-A | PAN 允許內核阻止訪問非特權位置,從而提供更高的健壯性。 |
| Statistical Profiling Extension (SPE) | Armv8.2-A Armv9.0-A | 在指令或微操作的基礎上設置采樣標準,然后定期采樣。 然后,每個樣本將與該樣本關聯的上下文收集到一個分析記錄中,在任何給定時間只編譯一個記錄。 當在長時間運行大型工作負載的系統上連續采樣時,分析大型工作樣本集可以提供對軟件執行及其相關性能的深入了解。 |
| Scalable Vector Extensions (SVE) | Armv8.2-A | SVE 為具有可變矢量長度的 SIMD 提供支持。 SVE 支持向量長度不可知的編碼風格,其中代碼不需要重新編寫或重新編譯,因為它動態地適應實現的向量長度。 SVE 架構允許實現向量長度高達 2048 位,其中向量長度必須是 128 位的倍數。 SVE 還支持為固定向量長度編寫的代碼。 |
| Pointer authentication | Armv8.3-A Armv9.0-A | 計算機攻擊正變得越來越復雜。 這方面的示例是利用機制,例如在Return-Orientated Programming(ROP) 和Jump-Orientated Programming(JOP) 中使用gadgets 。 為了緩解此類漏洞,Armv8.3-A 引入了一項功能,可在將寄存器的內容用作間接分支或數據引用的地址之前對其進行身份驗證。 對于地址驗證,該功能使用 64 位地址值中的高位,通常與地址空間的簽名擴展相關聯。 這允許在值的高位中引入Pointer Authentication Code (PAC) 作為新字段。 |
| Nested Virtualization | Armv8.3-A Armv9.0-A | 人們對云計算越來越感興趣,尤其是對日益普遍的用例感興趣,即用戶從基礎設施即服務 (IaaS) 提供商處租用虛擬機。 嵌套虛擬化是一個有吸引力的提議,其中打算在此虛擬機上運行的工作負載包括使用管理程序。 |
| Memory Tagging Extension (MTE) | Armv8.5-A Armv9.0-A | Memory tagging extension(MTE)使開發人員能夠識別他們程序中的內存安全違規。 |
| Branch Target Identification (BTI) | Armv8.5-A Armv9.0-A | BTI 允許軟件識別跳轉分支的有效目標。 BTI 補充了對指針身份驗證的支持,提供了針對 JOP 技術的防御。 |
| GEneral Matrix Multiply (GEMM) | Armv8.6-A Armv9.0-A | 添加新的高級 SIMD (Neon) 和 SVE 指令以加速矩陣運算,大大減少所需的內存訪問次數。 |
| BFloat16 | Armv8.6-A Armv9.0-A | 支持 BFloat16 數據類型的高級 SIMD (Neon) 和 SVE。 BF16 最近成為一種專門為神經網絡的高性能處理量身定制的格式。 |
| High precision timers | Armv8.6-A Armv9.0-A | 通用定時器頻率增加到 1GHz 的新標準。 |
| 64-byte load and stores | Armv8.7-A Armv9.0-A | 企業系統的一個增長趨勢是引入可以使用 64 字節原子加載或存儲訪問的加速器。 這些用于向隊列添加項目,并且在某些情況下可以表示入隊操作的成功或失敗。 |
| Scalable Vector Extension v2 (SVE2) | Armv9.0-A | SVE2 是 Armv8-A SVE 的超集,具有擴展的功能。 SVE2 指令集增加了全面的定點算術支持。 |
| Transactional Memory Extension (TME) | Armv9.0-A | 事務內存擴展為 Arm 架構帶來了硬件事務內存 (HTM) 支持。 事務內存用于解決編寫高并發、多線程程序的困難,通過減少由于鎖爭用導致的序列化,粗粒度、線程級并行的數量可以隨著 CPU 的數量更好地擴展。 |
| Branch Record Buffer Extensions (BRBE) | Armv9.2-A | — |
第三部分 arm core的介紹和總結
TODO
第四部分 ARM 指令集介紹
1、怎樣去學習ARM?
- ? 學習指令集
- ? 學習架構
- ? 學習arm core
- ? 學習arm IP
- ? 學習SOC手冊
- ? 學習規范,包括FF-A規范
- ??? 根據自己的需求,學習相關軟件或OS
2、armv8匯編學習-書籍推薦
學個雞腿學, 其實不用看這樣的書。點擊此處看這個鏈接就可以了
ARM Assembly Language, 2nd Edition
ARM 64-Bit Assembly Language
總結
以上是生活随笔為你收集整理的armv8/armv9的简介-学习这一篇就够了的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mbedtls移植体验
- 下一篇: 深度学习armv8/armv9 cach