前面的文章中經(jīng)常提到Armv8-A。那么到底Armv8-A是什么東西呢?這個(gè)問題要說簡(jiǎn)單也很簡(jiǎn)單,要說復(fù)雜也很復(fù)雜。今天我們花點(diǎn)時(shí)間來簡(jiǎn)單研究一下。
眾所周知,ARM是一家設(shè)計(jì)并授權(quán)處理器和相應(yīng)IP(比如互連總線,中斷處理器,圖像處理器等等)的公司,目前其處理器產(chǎn)品分為三類:
Cortex-A系列:這個(gè)系列主要是應(yīng)用(Application)處理器,這類處理器的特點(diǎn)是高性能,一般支持高速緩存,亂序執(zhí)行,分支預(yù)測(cè),指令多發(fā)射等等技術(shù)。
Cortex-R系列:這個(gè)系列主要是實(shí)時(shí)(Real-time)處理器,這類處理器的特點(diǎn)是對(duì)于外部事件的響應(yīng)時(shí)間在可控范圍,這里的實(shí)時(shí)并不是說處理器的速度快,而是對(duì)外部事件的響應(yīng)時(shí)間可預(yù)測(cè)。
Cortex-M系列:這個(gè)系列主要是微控制(Micro-controller)處理器,這類處理器一般設(shè)計(jì)相對(duì)簡(jiǎn)單,芯片規(guī)模小,功耗值低,一般作為低成本芯片的控制器使用。
這三個(gè)系列的代表字母加起來剛好是ARM,所以這應(yīng)該是ARM公司故意為之的。其實(shí)ARM公司的處理器產(chǎn)品在很早的時(shí)候并不是這么命名的,比如很早之前的ARM9,ARM11。現(xiàn)在ARM的處理器產(chǎn)品又增加了Neoverse系列,與A系列的處理器區(qū)分開來,不過這都是后話,暫時(shí)不用管它,還是認(rèn)為是三個(gè)系列好了。
再返回來說Armv8.x-A,前綴Arm不用解釋了;v表示的是版本(version);8表示的是大版本號(hào);x表示的是擴(kuò)展版本號(hào),也稱為小版本號(hào),比如8.4就是大版本是8,擴(kuò)展版本是4,Armv8-A的基礎(chǔ)版本是Armv8.0-A;最后的A表示的是A系列,所以一定還有R和M對(duì)不?不過本人對(duì)于R和M了解很少,就不介紹了,后面的內(nèi)容都是以A為基礎(chǔ)。
Armv8-A的執(zhí)行狀態(tài)有兩種,AArch64和AArch32。相應(yīng)的Armv8-A支持兩種指令集:AArch64(A64)和AArch32,其中AArch32又分為A32和T32。A64是固定長(zhǎng)度指令集,指令編碼32-bit;A32同樣是固定長(zhǎng)度指令集,32-bit指令編碼;T32是變長(zhǎng)指令集,16-bit和32-bit指令編碼。由于A32和T32主要是為了向前兼容,在Armv8-A中實(shí)際應(yīng)用較少,后面內(nèi)容基本都是介紹AArch64的相關(guān)內(nèi)容。
AArch64中擴(kuò)展了一些寄存器,包括以下:31個(gè)通用的64位寄存器 (X0-X30),處理器狀態(tài)寄存器PSTATE及相關(guān)的若干寄存器,堆棧寄存器SP等等。以后會(huì)找時(shí)間專門分析一下這些寄存器。 Armv8-A中定義了四種異常等級(jí)(Exception Level),這在前面的文章中重復(fù)過很多次了。
Armv8-A支持GICv3,GICv4,SMMU3。 對(duì)于其處理器具體實(shí)現(xiàn)的指令集,ARM有一個(gè)約定,比如某個(gè)處理器實(shí)現(xiàn)了Armv8.1-A,那么該處理器:
必須實(shí)現(xiàn)Armv8.0-A和Armv8.1-A強(qiáng)制要求的功能
可以實(shí)現(xiàn)某些Armv8.2-A中擴(kuò)展的功能
不允許實(shí)現(xiàn)Armv8.3-A和更高版本擴(kuò)展的功能
對(duì)于Armv8.0-A要求的功能,以后有機(jī)會(huì)慢慢分析。這不是一朝一夕能完成的,畢竟單其架構(gòu)文檔已經(jīng)上萬頁了。今天先簡(jiǎn)單列一下Armv8.0-A以后的版本所擴(kuò)展的功能,后面我們?cè)俾治鯝rmv8.0-A的基礎(chǔ)功能和這些擴(kuò)展功能。
1. Armv8.1-A
Atomic memory access instructions (AArch64)
Limited Order regions (AArch64)
Increased Virtual Machine Identifier (VMID) size, and Virtualization Host Extensions (AArch64)
Privileged Access Never (PAN) (AArch32 and AArch64)
2. Armv8.2-A
Support for 52-bit addresses (AArch64)
The ability for PEs to share Translation Lookaside Buffer (TLB) entries (AArch32 and AArch64)
FP16 data processing instructions (AArch32 and AArch64)
Statistical profiling (AArch64)
Reliability Availability Serviceability (RAS) support becomes mandatory (AArch32 and AArch64)
3. Armv8.3-A
Pointer authentication (AArch64)
Nested virtualization (AArch64)
Advanced Single Instruction Multiple Data (SIMD) complex number support (AArch32 and AArch64)
Improved JavaScript data type conversion support (AArch32 and AArch64)
A change to the memory consistency model (AArch64)
ID mechanism support for larger system-visible caches (AArch32 and AArch64)
4. Armv8.4-A
Secure virtualization (AArch64)
Nested virtualization enhancements (AArch64)
Small translation table support (AArch64)
Relaxed alignment restrictions (AArch32 and AArch64)
Memory Partitioning and Monitoring (MPAM) (AArch32 and AArch64)
Additional crypto support (AArch32 and AArch64)
Generic counter scaling (AArch32 and AArch64)
Instructions to accelerate SHA
5. Armv8.5-A and Armv9.0-A
Memory Tagging (AArch64)
Branch Target Identification (AArch64)
Random Number Generator instructions (AArch64)
Cache Clean to Point of Deep Persistence (AArch64)
6. Armv8.6-A and Armv9.1-A
General Matrix Multiply (GEMM) instructions (AArch64)
Fine grained traps for virtualization (AArch64)
High precision Generic Timer
Data Gathering Hint (AArch64)
7. Armv8.7-A and Armv9.2-A
Enhanced support for PCIe hot plug (AArch64)
Atomic 64-byte load and stores to accelerators (AArch64)
Wait For Instruction (WFI) and Wait For Event (WFE) with timeout (AArch64)
Branch-Record recording (Armv9.2 only)
8.Armv8.8-A and Armv9.3-A
Non-maskable interrupts (AArch64)
Instructions to optimize memcpy() and memset() style operations (AArch64)
Enhancements to PAC (AArch64)
Hinted conditional branches
Armv9-A是ARM公司最新的架構(gòu),但是目前還沒有完全公開。
最后提一句,現(xiàn)在基于ARM處理器的多核服務(wù)器芯片設(shè)計(jì)正火,國內(nèi)外玩家越來越多。ARM公司推出了Server Base System Architecture(SBSA)規(guī)范,提出了服務(wù)器的硬件要求。下表總結(jié)了與Armv8.x-A相關(guān)的SBSA要求。
SBSA文檔是公開的,感興趣的朋友可以去官網(wǎng)下載。目前我看到的SBSA文檔版本是7.0,在2021年1月發(fā)布。 其實(shí)SBSA中就是規(guī)定了一些規(guī)則(rule),對(duì)于不同等級(jí)有不同的要求。下圖是SBSA的不同等級(jí)對(duì)處理器,SMMU和GIC的要求,可以與上一張圖結(jié)合看。
審核編輯:劉清
-
寄存器
+關(guān)注
關(guān)注
31文章
5401瀏覽量
122749 -
圖像處理器
+關(guān)注
關(guān)注
1文章
105瀏覽量
15777 -
中斷處理
+關(guān)注
關(guān)注
0文章
94瀏覽量
11166 -
ARMv8
+關(guān)注
關(guān)注
1文章
35瀏覽量
14367
原文標(biāo)題:ARM系列 -- Armv8-A
文章出處:【微信號(hào):Ithingedu,微信公眾號(hào):安芯教育科技】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
ARM重新定義ARMv8新架構(gòu),ARMv8新架構(gòu)特性解說

ARMv8-A AArch32主要特性
請(qǐng)問Armv8-A到底是什么東西呢
Armv8-A內(nèi)存定序模型詳解
ARM Cortex-A系列ARMv8-A程序員指南
ARMv8-A處理器的裸機(jī)引導(dǎo)代碼
ARMv8-A TrustZone軟件對(duì)實(shí)施SVE的系統(tǒng)的影響
ARM公司64位ARMv8-A技術(shù)授權(quán)新里程
工業(yè)觸摸屏到底是一個(gè)什么東西
芯片到底是什么東西
集成電路到底是什么東西
脈寬調(diào)制到底是個(gè)什么東西?

評(píng)論