ARM v8處理器概述、架構(gòu)及技術(shù)介紹
ARMv8架構(gòu)的概述
ARMv8架構(gòu)包含32位和64位執(zhí)行狀態(tài),其引入了使用 64 位寬寄存器執(zhí)行執(zhí)行的功能,并且提供了向后兼容性機(jī)制,使現(xiàn)有的 ARMv7 軟件能夠執(zhí)行。
- ? AArch64 :ARMv8中64位的執(zhí)行狀態(tài)。
- ? AArch32:ARMv8中32位的執(zhí)行狀態(tài),與ARMv7幾乎相同。
在GNU和Linux的文檔中(除了Redhat和Fedora外),有時(shí)會(huì)將AArch64稱為ARM64。
Cortex-A 系列處理器現(xiàn)在包括在 ARMv8-A 和 ARMv7-A 中實(shí)現(xiàn):
- ? Cortex-A5, Cortex-A7, Cortex-A8, Cortex-A9, Cortex-A15以及Cortex-A17處理器全部由 ARMv7-A 架構(gòu)實(shí)現(xiàn)。
- ? Cortex-A53,Cortex-A57 和Cortex-A73處理器由 ARMv8-A 架構(gòu)實(shí)現(xiàn)。
ARMv8 處理器仍然支持為 ARMv7-A 處理器編寫的軟件(有一些例外)。這意味著,例如,為 ARMv7 Cortex-A 系列處理器編寫的 32 位代碼也可運(yùn)行在 ARMv8 處理器(如 Cortex-A57)上。但是,僅當(dāng) ARMv8 處理器處于 AArch32 執(zhí)行狀態(tài)時(shí),代碼才會(huì)運(yùn)行。
此外,A64 的64 位指令集不能在 ARMv7 處理器上運(yùn)行,而只能在 ARMv8 處理器上運(yùn)行。
從32位到64位的變化The changes from 32 bits to 64 bits
64位的處理器其性能上有很大的提升,其中包括以下改變:
1.Larger register pool(更大的寄存器池)
A64 指令集提供了一些顯著的性能優(yōu)勢,其中包括一個(gè)更大的寄存器池。A64具有31個(gè)64bits通用寄存器和ARM Architecture Procedure Call Standard (AAPCS) 提供了性能上的加速,當(dāng)用戶在函數(shù)調(diào)用中需要傳遞四個(gè)以上參數(shù)(需要四個(gè)以上寄存器)時(shí),在ARMv7中可能要使用棧,而在AArch64中,最多可以在寄存器中傳遞八個(gè)參數(shù),因此可以增加性能,減少棧的使用。
2.Wider integer registers(具有更寬的整數(shù)寄存器)
更寬的整數(shù)寄存器使對 64 位數(shù)據(jù)運(yùn)行的代碼能夠更高效地工作。32 位處理器可能需要多個(gè)操作才能對 64 位數(shù)據(jù)執(zhí)行算術(shù)運(yùn)算。64 位處理器可能能夠在單個(gè)操作中執(zhí)行相同的任務(wù),速度通常和以同一處理器執(zhí)行 32 位操作相同。因此,執(zhí)行許多 64 位大小操作的代碼速度明顯更快。
3.Larger virtual address spac(更大的虛擬地址空間)
64 位操作使應(yīng)用程序能夠使用更大的虛擬地址空間。雖然大型物理地址擴(kuò)展 (Large Physical Address Extension,LPAE) 將 32 位處理器的物理地址空間擴(kuò)展到 40 位,但它不會(huì)擴(kuò)展虛擬地址空間。這意味著即使使用 LPAE,單個(gè)應(yīng)用程序也僅限于 32 位 (4GB) 地址空間。這是因?yàn)榇说刂房臻g中的某些空間是為操作系統(tǒng)保留的。
較大的虛擬地址空間還支持內(nèi)存映射較大的文件。這是將文件內(nèi)容映射到線程的內(nèi)存映射。即使物理 RAM 可能不夠大,無法包含整個(gè)文件,也可能發(fā)生這種情況。
32位地址空間
作為32位的微處理器,ARM體系結(jié)構(gòu)所支持的最大尋址空間為4GB(2^32^字節(jié)), 可將該地址空間看作是大小為 2^32^ 個(gè)字節(jié)(8bit),這些字節(jié)的單元地址是一個(gè)無符號的32位數(shù)值,其取值范圍為0~2^32-1^。ARM地址空間也可以看作是2^30^個(gè)32位的字(1 word = 4 bytes)單元。這些字單元的地址可以被4整除,也就是說該地址的低兩位為00。地址為A的字?jǐn)?shù)據(jù),包括地址為A,A+1,A+2,A+3這4個(gè)字節(jié)單元的內(nèi)容。
每執(zhí)行一條指令,當(dāng)前指令計(jì)數(shù)器加4個(gè)字節(jié)。
4.Larger physical address space(更大的物理地址空間)
在 32 位體系結(jié)構(gòu)上運(yùn)行的軟件可能需要在執(zhí)行時(shí)映射內(nèi)存中的一些數(shù)據(jù)進(jìn)行輸入輸出。具有更大的地址空間(使用 64 位指針)可避免此問題。
但是,使用 64 位指針確實(shí)會(huì)產(chǎn)生一些成本:同一段代碼通常比使用 32 位指針使用更多的內(nèi)存。
每個(gè)指針都存儲(chǔ)在內(nèi)存中,需要8個(gè)字節(jié)而不是4個(gè)字節(jié)。這聽起來可能微不足道,但可能會(huì)造成重大負(fù)擔(dān)。此外,與64 位相關(guān)的內(nèi)存空間使用量的增加,可能會(huì)導(dǎo)致緩存中命中(hit)率下降,這反過來又會(huì)降低性能。
- ? 64-bit pointers: 8 bytes
- ? 32-bit pointers: 4 bytes
ARMv8-A 架構(gòu)
ARM架構(gòu)可以追溯到1985年,自早期的ARM內(nèi)核以來,它已經(jīng)得到了巨大的發(fā)展,在每一步都增加了特性和功能。
ARMv4 and earlier
這些早期的處理器僅使用 ARM 32 位指令集。
ARMv4T
ARMv4T 架構(gòu)將 Thumb 16 位指令集添加到 ARM 32 位指令集中。這是第一個(gè)廣泛許可的架構(gòu)。它由ARM7TDMI?和ARM9TDMI?處理器實(shí)現(xiàn)。
ARMv5TE
ARMv5TE 架構(gòu)為 DSP 類型操作、飽和算術(shù)以及 ARM 和 Thumb 互通增加了改進(jìn)。ARM926EJ-S? 實(shí)現(xiàn)了這種架構(gòu)。
ARMv6
ARMv6 進(jìn)行了多項(xiàng)增強(qiáng),包括對未對齊內(nèi)存訪問的支持、對內(nèi)存體系結(jié)構(gòu)的重大更改以及對多處理器的支持。此外,還包括對 32 位寄存器中的字節(jié)或半字操作的 SIMD 操作的一些支持。ARM1136JF-S? 實(shí)現(xiàn)了這種架構(gòu)。ARMv6架構(gòu)還提供了一些可選的擴(kuò)展,特別是Thumb-2和安全擴(kuò)展(TrustZone?)。Thumb-2 將 Thumb 擴(kuò)展為混合長度的 16 位和 32 位指令集。
ARMv7-A
ARMv7-A 體系結(jié)構(gòu)強(qiáng)制使用 Thumb-2 擴(kuò)展,并添加了高級 SIMD 擴(kuò)展 (NEON)。在 ARMv7 之前,所有內(nèi)核都遵循基本相同的架構(gòu)或功能集。為了幫助解決越來越多的不同應(yīng)用,ARM 引入了一組架構(gòu)配置:
- ? ARMv7-A提供了支持Linux等平臺(tái)操作系統(tǒng)所需的所有功能
- ? ARMv7-R 提供可預(yù)測的實(shí)時(shí)高性能。
- ? ARMv7-M 面向深度嵌入式微控制器。ARMv6 體系結(jié)構(gòu)中還添加了 M 配置,以啟用舊體系結(jié)構(gòu)的功能。ARMv6M 配置由低功耗的低成本微處理器使用。
ARMv8-A
ARMv8 體系結(jié)構(gòu)包括 32 位執(zhí)行和 64 位執(zhí)行。它引入了使用 64 位寬寄存器,同時(shí)保持了與現(xiàn)有 ARMv7 軟件的向后兼容性。
Development of the ARMv8 architecture
ARMv8-A 架構(gòu)引入了許多更改,從而可以設(shè)計(jì)出性能更高的處理器實(shí)現(xiàn):
較大的物理地址
這使處理器能夠訪問超過 4GB 的物理內(nèi)存。
64 位虛擬尋址
這允許超過 4GB 限制的虛擬內(nèi)存。這對于使用內(nèi)存映射文件 I/O 或稀疏尋址的現(xiàn)代桌面和服務(wù)器軟件非常重要。
自動(dòng)事件信號
這可實(shí)現(xiàn)高能效、高性能的自旋鎖。
更大的寄存器文件
31 個(gè) 64 位通用寄存器可提高性能并減少堆棧使用。
高效的 64 位立即數(shù)生成
對文本池的需求較少。
較大的 PC 相對尋址范圍
一個(gè) +/-4GB 的尋址范圍,可在共享庫和位置獨(dú)立的可執(zhí)行文件中實(shí)現(xiàn)高效的數(shù)據(jù)尋址。
額外的 16KB 和 64KB 轉(zhuǎn)換粒度
這降低了Translation Lookaside Buffer (TLB)的未命中率和頁面瀏覽深度。
新的異常模型
這降低了操作系統(tǒng)和虛擬機(jī)管理程序軟件的復(fù)雜性。
高效的緩存管理
用戶空間緩存操作可提高動(dòng)態(tài)代碼生成效率。使用數(shù)據(jù)緩存零指令清除快速數(shù)據(jù)緩存(DC)。
硬件加速加密
提供 3× 到 10×的軟件加密性能提升。這對于小粒度解密和加密非常有用,這些小顆粒解密和加密太小而無法有效地裝載到硬件加速器,例如https。
Load-Acquire,Store-Release 指令
專為 C++11、C11、Java 內(nèi)存模型而設(shè)計(jì)。它們通過消除顯式內(nèi)存屏障指令來提高線程安全代碼的性能。
NEON 雙精度浮點(diǎn)高級 SIMD
這使得 SIMD 矢量化能夠應(yīng)用于更廣泛的算法集,例如科學(xué)計(jì)算、高性能計(jì)算 (High Performance Computing,HPC) 和超級計(jì)算機(jī)。
ARMv8-A 處理器:A53,A57和A73
Comparison of A53 and A73
A73:
Cortex-A73 processor implementation options
A73所有內(nèi)核共享一個(gè)公共 L2 緩存,并且每個(gè)內(nèi)核對所有參數(shù)具有相同的配置。
Cortex-A53 處理器
Cortex-A53 處理器是一款中檔低功耗(mid-range, low-power)處理器,在單個(gè)cluster中具有1到4個(gè)內(nèi)核,每個(gè)內(nèi)核都有一個(gè) L1 緩存子系統(tǒng)、一個(gè)可選的集成 GICv3/4 接口和一個(gè)可選的 L2 緩存控制器。Cortex-A53 處理器是一款高能效極高的處理器,能夠支持 32 位和 64 位代碼。它提供的性能明顯高于大獲成功的 Cortex-A7 處理器。它能夠部署為獨(dú)立的應(yīng)用處理器,或與Cortex-A57處理器配對,使用big.LITTLE 配置即可實(shí)現(xiàn)最佳性能、可擴(kuò)展性和能效。
Cortex-A53 processor
Cortex-A53 處理器具有以下特點(diǎn):
- ? 按順序排列,八級流水線。
- ? 通過使用分層時(shí)鐘門控、電源域和高級保持模式,降低功耗。
- ? 通過重復(fù)執(zhí)行資源和雙指令解碼器,增強(qiáng)了dual-issue capability 。
- ? 功耗優(yōu)化的 L2 高速緩存設(shè)計(jì)可提供更低的延遲,并在性能與效率之間取得平衡。
Cortex-A57 處理器
Cortex-A57 處理器面向移動(dòng)和企業(yè)計(jì)算應(yīng)用,包括計(jì)算密集型 64 位應(yīng)用,如高端計(jì)算機(jī)、平板電腦和服務(wù)器產(chǎn)品。它可以與Cortex-A53處理器一起使用ARM big.LITTLE 配置,即可實(shí)現(xiàn)可擴(kuò)展的性能和更高效的能源使用。
Cortex-A57 處理器具有與其他處理器(包括用于 GPU 計(jì)算的 ARM Mali? 系列圖形處理單元 (GPU))的緩存一致互操作性,并為高性能企業(yè)應(yīng)用提供可選的可靠性和可擴(kuò)展性功能。它提供比 ARMv7 Cortex-A15 處理器更高的性能,具有更高的能效。與上一代處理器相比,包含加密擴(kuò)展可將加密算法的性能提高 10 倍。
Cortex-A57 processor core
Cortex-A57 處理器完全實(shí)現(xiàn)了 ARMv8-A 架構(gòu)。它支持多核操作,在單個(gè)集群中具有一到四個(gè)內(nèi)核的多處理。通過 AMBA5 CHI 或 AMBA 4 ACE 技術(shù),可以實(shí)現(xiàn)多個(gè)相干的 SMP 集群。調(diào)試和跟蹤可通過 CoreSight 技術(shù)獲得。
Cortex-A57 處理器具有以下特點(diǎn):
- ? 無序的15 個(gè)以上的流水線。
- ? 節(jié)能功能包括way預(yù)測、tag減少和緩存查找抑制。
- ? 通過重復(fù)執(zhí)行資源提高峰值指令吞吐量。功耗優(yōu)化的指令解碼,具有本地化解碼,3-wide解碼帶寬。
- ? 性能優(yōu)化的 L2 高速緩存設(shè)計(jì)使cluster中的多個(gè)內(nèi)核能夠同時(shí)訪問 L2。
Cortex-A73 處理器
這是ARM 2016年發(fā)布的最新A系列處理器,Cortex-A73支持全尺寸ARMv8-A構(gòu)架,包括128位 AMBR 4 ACE接口和ARM的big.LITTLE系統(tǒng)一體化接口,采用了目前最先進(jìn)的10nm技術(shù)制造,可以提供比Cortex-A72高出30%的持續(xù)處理能力,非常適合移動(dòng)設(shè)備和消費(fèi)級設(shè)備使用。
Cortex-A73
Example Cortex-A73 processor configuration