天天看點

嘗試梳理下ARM處理器的發展曆史

大家好,這篇文章是我的朋友Michael Yao寫的,我覺得非常不錯,分享給大家。

1. 前言

本文嘗試簡單梳理下ARM處理器的發展曆史、架構的演進,包括不同處理器的應用方向,但我們重點還是圍繞Cortex-A系列展開,也會介紹不同微架構處理器之間的繼承關系,以及它們分别出自哪個設計團隊等。不出意外,這将會是一個系列,分别是ARM處理器及架構發展概述、ARMV7-A架構以及微架構分析、ARMv8-A架構以及微架構分析,一些關鍵技術如Trustzone/big.LITTLE/NEON/AMBA、以及整個ARM軟體生态的總體情況分析等。

2. ARM處理器發展曆史及商業模式

嘗試梳理下ARM處理器的發展曆史

ARM的前身是英國劍橋的Acorn Computers ,1990年正式成立,從1997年釋出具有裡程碑意義的ARM9後,從此進入快速發展的階段。

嘗試梳理下ARM處理器的發展曆史

ARM架構是當今世界上應用最廣的RISC處理器架構之一,憑借其開放架構授權的商業模式,以低功耗為特點,是嵌入式和移動處理器領域絕對的霸主。除了CPU,ARM還會提供Mali GPU、符合AMBA協定的總線設計、一些常見外設IP,包括配套軟體等一整套SoC解決方案。

ARM 的商業模式為IP授權,即通過知識産權授權的方式,收取一次性技術授權費用和版稅提成。但ARM 隻專注于設計CPU/GPU等IP的設計,代工或生産由被授權的客戶自行解決。ARM收入包括前期授權費(license)和版稅(Royalty),其中版稅是按照使用ARM的晶片的出貨量,按比例抽成。

嘗試梳理下ARM處理器的發展曆史

ARM提供授權的方式有這麼幾種:

  • 處理器授權:是最低的授權層級,指授權合作廠商使用ARM設計好的處理器,對方不能改變原有設計,但可以根據需要調整如産品的頻率、功耗等。
  • POP(Processor Optimization Pack,處理器優化包)授權:處理器授權的進階形式, ARM出售優化後的處理器給授權合作廠商,友善其在特定工藝下設計、生産出性能有保證的處理器,如為三星、德州儀器、 博通、飛思卡爾、富士通等基于ARM處理器推出自己的晶片。
  • 架構/指令集層級授權:可以對 ARM架構或 ARM指令集進行改造以實作自行設計處理器,如高通的Krait架構和蘋果的Swift架構等。

3. ARM處理器架構發展概述

嘗試梳理下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處理器的發展曆史

ARM處理器現在産品線主要有Cortex-A、Cortex-R、Cortex-M、SecureCore、Neoverse等幾個系列。

Cortex-A系列處理器

嘗試梳理下ARM處理器的發展曆史

Application Processors(應用處理器),主要面向移動計算,智能手機領域,2011年引入big.LITTLE,至2017年演化為DynamIQ。該系列曆經ARMv7、ARMv8和ARMv9(上圖并沒有列出全部ARMv8處理器和ARMv9處理器,後面會有介紹)。系列支援基于記憶體管理單元(MMU)的虛拟記憶體系統體系結構(VMSA)。ARMv8它支援A64、A32和T32指令集,ARMv9開始已不再支援32位指令集。

Cortex-R系列處理器

嘗試梳理下ARM處理器的發展曆史

Real-time Processors(實時處理器),面向實時應用的高性能處理器系列,例如硬碟控制器,汽車傳動系統和Modem基帶等,該系列主要支援基于記憶體保護單元(MPU)的受保護記憶體系統體系結構(PMSA)。它支援A32和T32指令集。但最新的是Cortex-R82處理器,是64bit,帶MMU,支援RichOS,支援NEON。

Cortex-M系列處理器

嘗試梳理下ARM處理器的發展曆史

Microcontroller Processors(微控制器處理器),微控制器處理器通常設計成面積很小和能效比很高。通常這些處理器的流水線很短,最高時鐘頻率相對較低,它支援T32指令集的變種。主要面向IOT物聯網領域。

SecureCore系列處理器

嘗試梳理下ARM處理器的發展曆史

SecureCore,基于AR

M-M架構,增強了嵌入式安全,主要有SC000和SC300,分别基于Cortex-M0 (v6-M)和Cortex-M3

(v7-M)。

Neoverse系列處理器

嘗試梳理下ARM處理器的發展曆史

Neoverse(伺服器端),面向雲端到邊緣的HPC、AI/ML加速等領域,是Cortex之外的另一條面向伺服器和基礎設施裝置的核心IP。如初代釋出即收獲不錯市場反響的Neoverse N1核心IP,亞馬遜Graviton2、Ampere Altra是基于IP設計的産品。

ARM處理器的發展曆史如下所示:

嘗試梳理下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處理器的發展曆史

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系列處理器演進關系

嘗試梳理下ARM處理器的發展曆史

從整體演進關系我們可以看到A9分為:A5往下的系列CPU(超低功耗路線)、A15(大核和超大核)、A12/17(未演進?)、A7分支(小核)這麼幾個分支;其中大核從A77又分化成傳統大核和Cotex-X系列的超大核。

嘗試梳理下ARM處理器的發展曆史

大核演進路線為:A8->A9->A15->A57->A72->A73 -> A75 ->A76> A77->A78->A710->A715

嘗試梳理下ARM處理器的發展曆史

超大核是從A77這一支線分叉出來的,分别為 A77->X1->X2->X3

嘗試梳理下ARM處理器的發展曆史

小核的演進路線為:A9->A7->A53->A55>A73 -> A510

嘗試梳理下ARM處理器的發展曆史

超低功耗核的演進路線為:A9->A5->A35->A32/A34

ARM處理器設計團隊

嘗試梳理下ARM處理器的發展曆史
  • 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

參考文章

  • ​​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行業研究架構,太平洋證券
上一篇: hdu2009
下一篇: hdu2030