詳解ARM Cortex-A32處理器 打造超高能效嵌入式環(huán)境
Cortex-A32是ARM架構(gòu)中獨一無二的產(chǎn)品,擁有重要地位。Cortex-A32基于ARMv8-A架構(gòu),卻是針對32位設(shè)計的處理器。下圖介紹了Cortex-A32與ARMv8-A架構(gòu)的匹配程度,并與Cortex-A35進行了對比。
本文引用地址:http://butianyuan.cn/article/201609/303274.htm圖一:Cortex-A32和ARMv8-A
基于上述,Cortex-A35可以實現(xiàn)兩種執(zhí)行態(tài),分別為32位AArch32及64位AArch64,從而充分發(fā)揮ARMv8-A架構(gòu)的64位操作能力;相對比,Cortex-A32僅支持32位AArch32執(zhí)行態(tài),這一決定不僅進一步壓縮產(chǎn)品面積,對于不需要64位操作能力的用例,還可以帶來顯著的功耗優(yōu)化。
無可否認,部分嵌入式應(yīng)用可以從64位獲益,但許多其他應(yīng)用都是32位的,將來很長一段時間市場也會依舊如此,Cortex-A32則專為這些應(yīng)用程序量身打造。
AArch32執(zhí)行態(tài)是早期Cortex-A處理器所用ARMv7-A架構(gòu)的升級版。盡管不具備64位功能,但在其它某些功能卻得到顯著增強,使 Cortex-A32與Cortex-A7和Cortex-A5相比更加高效;對基于更早ARM處理器的設(shè)計演變,或聚焦嵌入式市場的全新設(shè)計來說,都是理想的選擇。
對比ARMv7-A,AArch32在如下方面得到強化:
添加多項新指令,密碼函數(shù)性能提高;
全新的負載獲取及存儲釋放(Load Acquire and Store Release)指令,讓訪存排序更高效,與全新C++11訪存排序語義匹配;
額外的標量和單指令多數(shù)據(jù)結(jié)構(gòu)(SIMD)浮點指令;
更豐富的系統(tǒng)控制指令。
對比早期的32位ARMv7-A處理器,Arrch32這些額外特性使其具備更佳的性能。
Cortex-A32總線接口上的高級一致性擴展(Advanced Coherency Extensions,ACE)使其可以利用Cortex-A32構(gòu)建支持完全一致的多處理器系統(tǒng),按需升級,以實現(xiàn)更高的性能。不過,如果產(chǎn)品面積與功耗是最主要的限制因素,Cortex-A32也提供專門針對單處理器應(yīng)用優(yōu)化的版本, 移除一致性邏輯,實現(xiàn)更高功效。
經(jīng)過大物理地址擴展(Large Physical Address Extension,LPAE),Cortex-A32的可尋址內(nèi)存空間得到擴展,超過Cortex-A5的32位(4GB),達到40位物理地址空間。
核心本身配置了額外的高級功能,進一步提高效率。其中包括更靈活的功耗管理、更優(yōu)化的電源域和保留電源門控(retention power gating)的延伸使用。
ARMv7-M 主要特性
ARM Cortex-M處理器基于ARMv7-M架構(gòu)(Cortex-M0和Cortex-M0+ 采用類似的ARMv6-M架構(gòu))。雖然與早期的ARM架構(gòu)有眾多相似之處,但ARMv7-M經(jīng)過專門打造,更適合深度嵌入、低成本的實時微處理器應(yīng)用。因此,早期架構(gòu)的很多功能被刪除,并添加了新的特性,以構(gòu)建更符合“微控制器”環(huán)境的編程模式。
對比前代處理器(例如備受歡迎的ARM7TDMI),變化具體如下:
1.操作模式數(shù)量顯著減少,從7種甚至更多減至2種:僅保留處理器模式與線程模式。其中一種模式(處理器模式)可以默認為優(yōu)先采用。
2.寄存器文件簡化。雖然編程器可用的寄存器數(shù)量實質(zhì)上仍然是16個,但前代架構(gòu)使用的分組寄存器機制明顯減少,因此兩種操作模式寄存的只有棧指針(r13)。是否使用寄存拷貝可自行設(shè)置。
3.異常模式的變化最為明顯。由于典型的微控制器應(yīng)用可能會出現(xiàn)大量的芯片外設(shè)中斷,基于此,全新架構(gòu)中的所有Cortex-M核心都配置了標準嵌套中斷向量控制器(Nested Vectored Interrupt Controller,NVIC)。類似的,根據(jù)記載處理器地址的向量表,異常處理模式也被標準化。上下文保存和恢復(fù)操作完全在硬件中實現(xiàn),進一步簡化編寫中斷處理器的軟件任務(wù)。基于上述,實現(xiàn)過程中的干擾性延遲發(fā)生幾率被降到極低,且高度可預(yù)測。
4.與前代ARM處理器類似,ARMv7-M定義了可選內(nèi)存保護架構(gòu)。同時,因為裸金屬系統(tǒng)或在實時操作系統(tǒng)(RTOS)下運行的系統(tǒng)通常不需要虛擬內(nèi)存,ARMv7-M并不為其提供支持。
5.為協(xié)助實時操作系統(tǒng)(RTOS)的實現(xiàn)和移植,一些標準的片上外圍設(shè)備也在架構(gòu)中獲得定義,例如SysTick timer。
6.為進一步縮小處理器核心面積,ARMv7-M處理器僅采用Thumb指令集(包括Thumb-2指令集擴展)。
ARMv8-A AArch32 主要特性
Cortex-A處理器基于ARMv7-A或ARMv8-A架構(gòu)。ARMv8-A處理器支持AArch32執(zhí)行態(tài),是32位ARMv7-A架構(gòu)的兼容升級。這些架構(gòu)的設(shè)計添加了專屬特性,比如虛擬內(nèi)存環(huán)境,以支持包括Linux、Android、Windows等的平臺操作系統(tǒng)。
對比Cortex-M處理器核心,Cortex-A獨特之處包括:
1.擁有7種或更多操作模式:用戶、管理器、IRQ、FIQ、未定義、中止、系統(tǒng)。每種模式都可以處理一項具體事件,例如,IRQ模式被用于處理IRQ 中斷。AArch32還支持另外兩種模式:Hyp 和監(jiān)視器,這兩種模式分別用于虛擬化及ARM TrustZone。
2.雖然可以使用的寄存器數(shù)量同樣是16個,但AArch32有許多與上述操作模式相對應(yīng)的“分組”(banked)寄存器。一旦進入特定操作模式,這些寄存器就會取代對應(yīng)的用戶模式。這使異常處理的許多方面得到簡化,但也意味著需要提高機器管理能力,并在初始化上花更大的功夫。
3.異常模式有顯著差別,與最初的ARM架構(gòu)設(shè)備一脈相承。具體來說,向量表是由一組可執(zhí)行的指令組成,而不是地址,并且保存和恢復(fù)上下文的任務(wù)幾乎完全由編程器承擔(dān)。
4.還有一個重要差別是內(nèi)存管理單元(Memory Management Unit ,MMU),內(nèi)存管理單元會編譯核心提交的虛擬地址以及存儲系統(tǒng)需要的物理地址。針對Linux一樣的平臺操作系統(tǒng)所使用的完整需求分頁虛擬存儲器環(huán)境,Cortex-A也可以提供支持。
ARMv7-M 與 AArch32 的不同之處
從基于Cortex-M處理器的系統(tǒng)遷移到基于Cortex-A32處理器的系統(tǒng)時,許多新特性也有必要了解。盡管這兩種架構(gòu)之間有許多相似之處(如寄存器組和指令集存在多種共性),但仍然需要清楚一點,ARMv8-A架構(gòu)在AArch32執(zhí)行態(tài)下的許多特性是基于早期架構(gòu)的。本節(jié)將詳細介紹 AArch32的特性,這些特性在ARMv7-M中不具備,或者實現(xiàn)方式極其不同。
評論