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