天天看點

AArch64 是什麼

檢視Android裝置的CPU架構資訊,可以使用指令來完成:

1、adb shell  
2、cat  /proc/cpuinfo
           
➜  ~ adb shell
[email protected]:/ $ cat  /proc/cpuinfo
Processor	: AArch64 Processor rev 2 (aarch64) //cpu架構
processor	: 0
BogoMIPS	: 26.00

//核心數
Features	: fp asimd aes pmull sha1 sha2 crc32
CPU implementer	: 0x41
CPU architecture: AArch64
CPU variant	: 0x0
CPU part	: 0xd03
CPU revision	: 2

Hardware	: MT6795 //品牌
[email protected]:/ $
           

AArch64是ARMv8 架構的一種執行狀态。

為了更廣泛地向企業領域推進,需要引入 64 位構架。同時也需要在 ARMv8 架構中引入新的 AArch64 執行狀态。AArch64 不是一個單純的 32 位 ARM 構架擴充,而是 ARMv8 内全新的構架,完全使用全新的 A64 指令集。這些都源自于多年對現代構架設計的深入研究。更重要的是, AArch64 作為一個分離出的執行狀态,意味着一些未來的處理器可能不支援舊的 AArch32 執行狀态。 雖然最初的 64 位 ARM 處理器将會完全向後相容,但我們大膽且前瞻性地将 AArch64 作為在 ARMv8 處理器中唯一的執行狀态。我們在這些系統中将不支援 32 位執行狀态, 這将使許多有益的實作得到權衡,如預設情況下,使用一個較大的 64K 大小的頁面,并會使得純淨的 64 位 ARM 伺服器系統不受遺留代碼的影響。立即進行這種劃分是很重要的,因為有可能在未來幾年内将出現僅支援 64 位的伺服器系統。沒有必要在新的 64 位架構中去實作一個完整的 32 位流水線,這将會提高未來 ARM 伺服器系統的能效。這樣回想起來, AArch64 作為在 Fedora ARM 項目中被支援的 ARM 構架是一個很自然的過程: armv5tel、armv7hl、aarch64。新的架構被命名為:aarch64,這同 ARM 自己選擇的主線命名方式保持一緻,同時也考慮到了 ARM 架構名與 ARM 商标分開的期望。

ARMv8-A 将 64 位架構支援引入 ARM 架構中,其中包括:

  • 64 位通用寄存器、SP(堆棧指針)和 PC(程式計數器)
  • 64 位資料處理和擴充的虛拟尋址

兩種主要執行狀态:

  • AArch64 - 64 位執行狀态,包括該狀态的異常模型、記憶體模型、程式員模型和指令集支援
  • AArch32 — 32 位執行狀态,包括該狀态的異常模型、記憶體模型、程式員模型和指令集支援

這些執行狀态支援三個主要指令集

  • A32(或 ARM):32 位固定長度指令集,通過不同架構變體增強部分 32 位架構執行環境現在稱為 AArch32。
  • T32 (Thumb) 是以 16 位固定長度指令集的形式引入的,随後在引入 Thumb-2 技術時增強為 16 位和 32 位混合長度指令集。部分 32 位架構執行環境現在稱為 AArch32。
  • A64:提供與 ARM 和 Thumb 指令集類似功能的 32 位固定長度指令集。随 ARMv8-A 一起引入,它是一種 AArch64 指令集。

    ARM ISA 不斷改進,以滿足前沿應用程式開發人員日益增長的要求,同時保留了必要的向後相容性,以保護軟體開發投資。在 ARMv8-A 中,對 A32 和 T32 進行了一些增補,以保持與 A64 指令集一緻。

傳送門:

https://fedoraproject.org/wiki/Architectures/ARM/AArch64/zh-cn#.E4.BB.8B.E7.BB.8D

https://www.arm.com/zh/products/processors/instruction-set-architectures/armv8-architecture.php