大家好,這篇文章是我的朋友Michael Yao寫的,我覺得非常不錯,分享給大家。
1. 前言
本文嘗試簡單梳理下ARM處理器的發展歷史、架構的演進,包括不同處理器的應用方向,但我們重點還是圍繞Cortex-A系列展開,也會介紹不同微架構處理器之間的繼承關係,以及它們分別出自哪個設計團隊等。不出意外,這將會是一個系列,分別是ARM處理器及架構發展概述、ARMV7-A架構以及微架構分析、ARMv8-A架構以及微架構分析,一些關鍵技術如Trustzone/big.LITTLE/NEON/AMBA、以及整個ARM軟件生態的總體情況分析等。
2. ARM處理器發展歷史及商業模式
ARM的前身是英國劍橋的Acorn Computers ,1990年正式成立,從1997年發佈具有里程碑意義的ARM9後,從此進入快速發展的階段。
ARM 的商業模式爲IP授權,即通過知識產權授權的方式,收取一次性技術授權費用和版稅提成。但ARM 只專注於設計CPU/GPU等IP的設計,代工或生產由被授權的客戶自行解決。ARM收入包括前期授權費(license)和版稅(Royalty),其中版稅是按照使用ARM的芯片的出貨量,按比例抽成。
ARM提供授權的方式有這麼幾種:
處理器授權:是最低的授權層級,指授權合作廠商使用ARM設計好的處理器,對方不能改變原有設計,但可以根據需要調整如產品的頻率、功耗等。
POP(Processor Optimization Pack,處理器優化包)授權:處理器授權的高級形式, ARM出售優化後的處理器給授權合作廠商,方便其在特定工藝下設計、生產出性能有保證的處理器,如爲三星、德州儀器、 博通、飛思卡爾、富士通等基於ARM處理器推出自己的芯片。
架構/指令集層級授權:可以對 ARM架構或 ARM指令集進行改造以實現自行設計處理器,如高通的Krait架構和蘋果的Swift架構等。
3. ARM處理器架構發展概述
ARMv6主要特性
Thumb-2:是對32位ARM指令集的擴充,它的目標是爲了實現更高的代碼密度;
TrustZone:安全擴展,將物理資源隔離,分爲Secure word和nNormal word,處理器通過SMC指令,可以在兩個世界之間切換。該擴展需要總線、MMU的支持,DDR、SRAM、外設等也需要不同的IP來做控制,以實現安全隔離;
SIMD:這一代SIMD指令集依賴的向量寄存器,複用了ARM本身的通用寄存器。支持8/16bit整數,可以實現4個8bit整數或者2個16bit整數的並行計算;
ARMv7主要特性
高級SIMD:在ARM v7-A架構中,ARM進一步發展自身的SIMD指令集,並命名爲NEON。這一代的指令集,有32個64bit的NEON向量寄存器,同時也支持單精度浮點;
VFPv3/v4:浮點體系結構 (VFP) 爲半精度、單精度和雙精度浮點運算中的浮點操作提供硬件支持,符合 IEEE-754 標準,VFPv4相當於VPPv3主要增加了half-precision extension和乘加的指令。ARM的vfp可以實現爲32個或16個double-word register,分別以VFPv3-D32和VFPv3-D16來表示。當NEON和VFP同時實現時,VFP只可以實現爲VFP-D32;
LPAE(Large Physical Address Extension):大地址擴展,一般爲40位地址擴展,可以將尋址範圍從2^32 4GB擴展到2^40 1TB,也有處理器後來擴展到44bit ;
Virtualization:在 Normal world 裏面加入了一個新的CPU模式——HYP mode,需要MMU和GIC(中斷控制器)分別提供IPA(Intermediate Physical Address)和虛擬中斷的轉發的支持。
ARMv8主要特性
Secure EL2:該特性Armv8.4-A引入,在Secure word增加了虛擬化支持;
PA(Pointer Authentication):v8.3引入,增強安全,函數指針檢查,CPU在執行函數跳轉時檢查函數指針是否正確(使用MAC算法),防止跳轉指針被修改;
BTI(Branch Target Identifiers):v8.5引入,對間接跳轉的目標進行限制。與PA結合使用極大程度減少控制流攻擊;
MTE(Memory Tagging Extension):v8.5引入,內存區域進行標記,對保護區域訪問必須使用具有相同標記的指針。可檢測溢出、UAF類漏洞;
Scalar Floating Point:aarch64提供32個128-bit寄存器用於SIMD vector and scalar floating-point支持;aarch32提供32個64-bit寄存器用於SIMD vector and scalar floating-point支持;
Enhanced Crypto:v8一開始就增加了cryptography 指令,包括AES, SHA-1/SHA-256 等算法實現,又在v8.4增加了"SHA3/SHA512/SM3/SM4"的支持;
bfloat:v8.2引入,增加FP16數據處理指令
Vector Extensions:v8.2引入,Scalable Vector Extension(SVE)是arm AArch64架構下的下一代SIMD指令集,旨在加速高性能計算,允許vector從28到2048 bit長度可變 。
Improved virtualization support:v8.4引入
ARMv9主要特性
Improved Security:主要是引入了全新的CCA(confidential compute architecture,機密計算架構 )架構。機密計算可以打造基於硬件的安全運行環境來執行計算,保護部分敏感數據和代碼,甚至不受特權軟件的影響,即使是具有最高權限的OS也無法影響。雖然OS可以決定何時運行,但應用程序位於獨立的硬件保護內存區域,和系統中的一切是隔離的。這意味着就算應用感染了惡意軟件,也不會傳播給設備裏的其他部分。
Digital Signal Processing & Machine Learning:在ARMv8.2中引入SVE,但它的問題在於,新的可變矢量長度SIMD指令集的第一次迭代的範圍相當有限,並且更多地針對HPC工作負載,缺少了許多仍由NEON涵蓋的更通用的指令。SVE2,旨在通過用所需指令補充新的可擴展SIMD指令集來解決此問題,以服務於類似DSP/ML等目前仍在使用NEON的工作負載。除了增加的各種現代SIMD功能外,SVE和SVE2的優勢還在於其可變的向量大小,範圍覆蓋了128bits到2048bits,讓其無論在什麼硬件運行,都允許向量的可變粒度爲128b。如果純粹從向量處理和編程的角度來看,這意味着軟件開發人員將只需要編譯一次其代碼,並且如果將來某個CPU帶有本地的512b SIMD execution pipelines,該代碼將能夠充分利用單元的整個寬度。同樣,相同的代碼將能夠在具有較低硬件執行寬度能力的保守設計上運行,這對於Arm設計從物聯網、移動到數據中心的CPU而言至關重要。在保留Arm體系結構的32bits編碼空間的同時,它還可以完成所有這些工作。然而類似X86這樣的架構則需要根據矢量尺寸增加新的指令和擴展。
4. ARM處理器分類及應用領域
ARM處理器現在產品線主要有Cortex-A、Cortex-R、Cortex-M、SecureCore、Neoverse等幾個系列。
Cortex-A系列處理器
Application Processors(應用處理器),主要面向移動計算,智能手機領域,2011年引入big.LITTLE,至2017年演化爲DynamIQ。該系列歷經ARMv7、ARMv8和ARMv9(上圖並沒有列出全部ARMv8處理器和ARMv9處理器,後面會有介紹)。系列支持基於內存管理單元(MMU)的虛擬內存系統體系結構(VMSA)。ARMv8它支持A64、A32和T32指令集,ARMv9開始已不再支持32位指令集。
Cortex-R系列處理器
Real-time Processors(實時處理器),面向實時應用的高性能處理器系列,例如硬盤控制器,汽車傳動系統和Modem基帶等,該系列主要支持基於內存保護單元(MPU)的受保護內存系統體系結構(PMSA)。它支持A32和T32指令集。但最新的是Cortex-R82處理器,是64bit,帶MMU,支持RichOS,支持NEON。
Cortex-M系列處理器
SecureCore系列處理器
Neoverse系列處理器
ARM處理器的發展歷史如下所示:
其他應用領域
ARM的汽車增強(AE)IP系列產品,於2018年推出Cortex-A76AE處理器,主要用於汽車ADAS(高級駕駛員輔助)系統,其支持Split-Lock分離-鎖定技術,使得CPU核心可以運行在不同的模式下,分離模式下性能最大化,鎖定模式下兩個核心/線程可以互相鎖定,最大程度確保安全。除了安全性能之外,Cortex-A65AE處理器還是ARM首個支持SMT多線程技術的,SMT爲了提高數據吞吐率,因爲ADAS除了安全和性能外,還需要處理大量傳感器帶來大計算負載及高吞吐量。據ARM宣稱,Cortex-A65AE處理器在能效更高的情況下吞吐率比前代(Cortex-A53)提升3.5倍。2020年,ARM又推出了新的Cortex-A78AE,新產品帶來了更高性能的CPU內核,還首次採用了AE級GPU Mali-G78AE 和ISP Mali-C71AE。新的Cortex-A78AE基於Cortex-A78微架構,與上一代Corex-A76AE相比,IPC提升了30%。
蘋果在2020年11月,發佈了基於ARM處理器的MAC便攜機,該SoC芯片爲M1。另外,根據網上資料,高通基於ARM處理器的PC芯片應該會在這兩年推出。
5. ARM Cortex-A系列處理器
ARM Cortex-A系列處理器細分
ARM Cortex-A系列處理器目前主要有超低功耗核、小核、大核、超大核4個系列,我們主要關注ARMv7、ARMv8和ARMv9這三代架構的處理器。
超低功耗的處理器有:ARMv7架構的A5和A7,ARMv8架構的A35、A32和A34;
作爲小核的處理器有:ARMv7架構的A8和A9,ARMv8架構的A53和A55,以及ARMv9架構的A510;
作爲大核的處理器有:ARMv7架構的A15和A17,ARMv8架構的A57、A72、A73、A75、A76、A77和A78,以及ARMv9架構的A710和A715;
作爲超大核的處理器有:ARMv8架構的X1,以及ARMv9架構的X2和X3;
2011年有了big.LITTLE技術出來以後,ARMv7架構的A7可以作爲小核和A15/17作爲大核搭配;2012年ARMv8架構的A53作爲小核和A57/A72/A73搭配使用;當然有了A35後,A53/A55也可以作爲大核與A35作爲小核搭配使用;2017年big.LITTLE進化爲DynamIQ,大小核的搭配更爲靈活多變,A75到A78都可以作爲大核與A55進行搭配,此時出現了1+3+4(1個超大核、3個大核和4個小核)的搭配,一般用大核超頻當做超大核用。
直到2020年ARM發佈Cortex-X1,纔有了真正意義上的超大核,定義是“可定製”移動平臺,芯片商可以根據預算和需求向ARM提出要求,然後ARM再根據不同的應用場景調整各個模塊的規格設計,當然也需要單獨的授權。Cortex-X2/X3應該都是公版了(這塊存疑)。最新的搭配可以有1個X3(超大核)+3個A715(大核)+4個A510(小核)這樣的組合。
ARM Cortex-A系列處理器演進關係
超大核是從A77這一支線分叉出來的,分別爲 A77->X1->X2->X3
小核的演進路線爲:A9->A7->A53->A55>A73 -> A510
超低功耗核的演進路線爲:A9->A5->A35->A32/A34
ARM處理器設計團隊
ARM處理器主要出自Austin、Sophia、Cambridge三個Team之手,主要處理器如下:
Austin (Texas)
Cortex-A8, Cortex-A15, Cortex-A57, Cortex-A72, Cortex-A76, Cortex-A77, Cortex-A78
Cortex-X1, Cortex-X2, Cortex-X3
Neoverse N1, Neoverse N2, Neoverse V1
Sophia-Antipolis (France)
ARM11, Cortex-A9, Cortex-A12, Cortex-A17, Cortex-A73, Cortex-A75
Cambridge (UK)
Cortex-A5, Cortex-A7, Cortex-A53, Cortex-A35, , Cortex-A55
另外,從網上公開資料看,Cortex-A76AE是美國Arizona州Chandler design centre設計的,其他面向汽車領域的處理器如Cortex-A65E/A78E是否爲該團隊設計暫未可知。
全文完。
參考文章
https://en.wikichip.org/wiki/arm_holdings
https://en.wikipedia.org/wiki/AArch64
https://developer.arm.com/documentation/102378/0201/Armv8-x-and-Armv9-x-extensions-and-features
https://www.arm.com/zh-TW/architecture/security-features/arm-confidential-compute-architecture
https://broadgeek.com/2021/12/12/c8bf/
https://en.wikipedia.org/wiki/List_of_ARM_processors
https://www.anandtech.com/show/13727/arm-announces-cortex65ae-for-automotive-first-smt-cpu-core
https://www.anandtech.com/show/13398/arm-unveils-arm-safety-ready-initiative-cortexa76ae-processor
https://www.anandtech.com/show/16114/arm-announces-cortexa78ae-malig78ae-and-malic71ae-autonomous-system-ips
http://www.anandtech.com/show/10347/arm-cortex-a73-artemis-unveiled
ARM行業研究框架,太平洋證券