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位元升級版,不管是內部架構、目標市場都極為類似。
▲藉由big.LITTLE架構和製程的演進,在持續衝高效能的同時,還能夠保持低耗電量(點圖可看大圖)。
(後面還有Cortex-A57:32位元效能3倍強的介紹唷)
頂級的智慧手機與功能簡單的陽春手機
整理中,歡迎討論和補充