[轉帖]嘗試梳理下ARM處理器的發展歷史

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

1. 前言

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

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

364c7d1e4f8bd3cd14ee8dc2bf053102.png

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

34852eddd0bbed4c8088131d02dc8e38.png

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

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

d788d6a2bcb8f7db6e88e1d21ed3b62c.pngARM提供授權的方式有這麼幾種:

  • 處理器授權:是最低的授權層級,指授權合作廠商使用ARM設計好的處理器,對方不能改變原有設計,但可以根據需要調整如產品的頻率、功耗等。

  • POP(Processor Optimization Pack,處理器優化包)授權:處理器授權的高級形式, ARM出售優化後的處理器給授權合作廠商,方便其在特定工藝下設計、生產出性能有保證的處理器,如爲三星、德州儀器、 博通、飛思卡爾、富士通等基於ARM處理器推出自己的芯片。

  • 架構/指令集層級授權:可以對 ARM架構或 ARM指令集進行改造以實現自行設計處理器,如高通的Krait架構和蘋果的Swift架構等。

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

9c953e181916cbf5dfe5dd85406141ea.png

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處理器分類及應用領域

b87d1a00a37d243a6ee404a93882169b.png

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

Cortex-A系列處理器

351d66f36ab1e48149c525169197517a.png

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

Cortex-R系列處理器

db39c52ac53129a684975c3e733422be.png

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

Cortex-M系列處理器

d92d93197ff88d011eaefd78207b5db9.png

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

SecureCore系列處理器

e7d381cdc468038ce1d0980661652caf.png

SecureCore,基於AR M-M架構,增強了嵌入式安全,主要有SC000和SC300,分別基於Cortex-M0 (v6-M)和Cortex-M3 (v7-M)。

Neoverse系列處理器

b87e714248e159b1fd870377ffcf7c68.png

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

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

707ec2999a06b3607c70205ac9fb01ab.png

其他應用領域

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系列處理器細分

5f50cf5c9559ce34437385bc5e567ceb.png

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

7a0d78333021250b0919326ded4154e5.png

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

be2f103b3b06455839b229ab3a363598.png

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

9179cf1e14ea8699bdd8ec04f51752a6.png

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

6aebcf4b9b2a56749459c43e1559ad95.png

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

72e5a9db251a9e6e54f7e200de2eba01.png

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

ARM處理器設計團隊

2c15a816b36e3398467a5ebe1bbbbf23.png

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是美國ArizonaChandler 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行業研究框架,太平洋證券

c1e31cf8238824b88335c4428ef93d5a.jpeg

1fe95eca5acf6cf68d5507cfbc69662a.png

文章知識點與官方知識檔案匹配,可進一步學習相關知識
Java技能樹首頁概覽143104 人正在系統學習中
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章