ARM 處理器的 64位元革命,新款處理器 Cortex-A50 家族的特性解析

ADVERTISEMENT

ARMv8 運作分2種

架構更新為64位元之後,ARMv8的運作狀態包含2個部分,64位元稱為AArch64(ARM Architecture 64),指令集稱為A64,之前的32位元的指令集則包含在AArch32(ARM Architecture 32)之下,包含32位元的ARM指令(A32)和16/32位元均有的Thumb-2指令(T32)。

而且AArch64和Arch32是互斥的指令集,這點也與x86的世界不同;但ARMv8的處理器允許在這2種執行狀態下切換,也就是說,ARMv8允許執行ARMv7的程式,只要把執行狀態切換成Arch32模式即可。

讀者可別認為轉換到64位元之後,指令也增肥到64位元這麼長。A64的指令還是延32位元的長度。日益重要的加密演算法,在ARMv8中也新增專門對應的指令,在AArch32或AArch64中皆可執行,像是AES或SHA-1和SHA-256都有支援。藉由128bit的SIMD暫存器實作,代表每一個指令可以同時對128bit的資料進行運算操作。

2種資料模型

ARMv8在64位元執行環境下,定義了2種資料模型,分別為LP64和LLP64(跟LP33沒關係喔)。LP64的integer長度為32bit,long integer的長度為64bit,這種定義方式常使用於UNIX、Linux、OS X;而LLP64的integer或是long integer都定義為32bit長度,long long integer的長度才是64bit,常見於Windows作業系統之中。

強化浮點數處理

原始的ARM核心並不具備硬體浮點處理功能(但有專門的VFP協同處理器),如果想要計算浮點數只能呼叫fplib函式庫來用,想當然耳以軟體來模擬,效率較差。

ARMv8大幅強化浮點數處理能力,現在浮點數暫存器有32組,每一組有128bit寬,代表著每個暫存器可裝入2個雙精度浮點數,同時支援IEEE 754的浮點數處理,也能夠處理一些奇怪的例外狀況,比如說除以0或是非數字數值無窮大。

簡化的處理器狀態

在Cortex-A15的時候,處理器狀態分為8種,分別為User、System、Supervisor、Abort、Undefined、Interrupt、Fast Interrupt、Hyp。其中Hyp模式在Cortex-A15導入,為的是支援硬體虛擬化功能。

AArch64則是將CPU狀態簡化了,分別為EL0~3。EL0為User模式、EL1為Kernal模式、EL2為Hypervisor虛擬化之用、EL3為TrustZone安全監控之用。比起過往較為複雜的處理器模式,AArch64不但將模式簡化為4種,模式也更向x86 CPU靠攏。在這複習一下x86處理器的3種模式,分別是Real、Protected、System Management,若是x86-64處理器還會再多出1種Long模式。

ARMv8 Cortex-A50發表

2012年10月30號,在美國加州舉辦的ARM TechCon 2012上宣布,基於最新一代ARMv8架構設計的處理器核心Cortex-A53和Cortex-A57正式推出。Cortex-A53和Cortex-A57就是目前的Cortex-A7和Cortex-A15的64位元升級版,不管是內部架構、目標市場都極為類似。

ARM 處理器的 64位元革命,新款處理器 Cortex-A50 家族的特性解析

▲藉由big.LITTLE架構和製程的演進,在持續衝高效能的同時,還能夠保持低耗電量(點圖可看大圖)。

(後面還有Cortex-A57:32位元效能3倍強的介紹唷)

R.F.
作者

誤入叢林的小白兔,每天爬樓梯到七樓的白癡,幻想自己很瘦的豬,一放假就睡死的bed potato。

使用 Facebook 留言
發表回應
謹慎發言,尊重彼此。按此展開留言規則