新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 業(yè)界動(dòng)態(tài) > 選擇最適處理器核心架構(gòu) 嵌入式應(yīng)用提高性價(jià)比

選擇最適處理器核心架構(gòu) 嵌入式應(yīng)用提高性價(jià)比

作者: 時(shí)間:2016-05-23 來(lái)源:新電子 收藏

  現(xiàn)階段半導(dǎo)體晶片商多采用ARM的核心,來(lái)制造旗下或微控制器等產(chǎn)品。ARM的核心可分為A、R、M三個(gè)系列,各有不同性能,因此晶片商也須依各自瞄準(zhǔn)的市場(chǎng)、功耗需求和作業(yè)系統(tǒng)等差異,來(lái)選擇較適合的核心,藉以制造性價(jià)比佳的產(chǎn)品。

本文引用地址:http://butianyuan.cn/article/201605/291453.htm

  現(xiàn)今應(yīng)用內(nèi)須用到諸多,因此半導(dǎo)體廠商也積極投入布局,舉例來(lái)說(shuō)安謀國(guó)際(ARM)的處理器便廣泛應(yīng)用于領(lǐng)域。ARM Cortex-A系列處理器經(jīng)常使用在需要多功能作業(yè)系統(tǒng)(Rich OS)或高效能的應(yīng)用中,Cortex-R系列處理器擁有較佳的即時(shí)效能,Cortex-M系列處理器則用于微控制器等類型的小型應(yīng)用。

  目前采用Cortex-M的產(chǎn)品范圍涵蓋非常多樣化的選項(xiàng),從外型設(shè)計(jì)小巧、功耗低的Cortex-M0,其使用在深層嵌入、對(duì)成本敏感的應(yīng)用如智慧型感測(cè)器節(jié)點(diǎn)上,到應(yīng)用在大眾市場(chǎng)的微控制器的Cortex-M3及Cortex-M4。最佳的則是Cortex-M7,其具備更高的效能,可以執(zhí)行密集運(yùn)算的工作負(fù)載,像是訊號(hào)處理等。

  Cortex-M處理器采用的ARMv6-M和ARMv7-M架構(gòu),是更為簡(jiǎn)易且邏輯化的程式設(shè)計(jì)模型,專為簡(jiǎn)易使用所設(shè)計(jì)。處理器核心本身在設(shè)定上較彈性,能夠用于更多樣化的實(shí)作。

  雖然Cortex-M核心的簡(jiǎn)易性對(duì)大部分的應(yīng)用來(lái)說(shuō)是較佳的優(yōu)勢(shì),但仍有其他應(yīng)用需要更多功能、效能更高的環(huán)境。此類應(yīng)用同樣重視效率和耗電量,且經(jīng)常需要Linux或Android等類型的平臺(tái)作業(yè)系統(tǒng)。采用此類型的作業(yè)系統(tǒng),則能夠使用應(yīng)用范圍更廣、更具多功能且復(fù)雜的軟體生態(tài)系統(tǒng),開(kāi)發(fā)新的契機(jī)。

  Cortex-M處理器的設(shè)計(jì)并非針對(duì)這些高階的作業(yè)系統(tǒng),因此未包含其所需要的特定必要功能。舉例來(lái)說(shuō),這些處理器未具備記憶體管理單元(MMU),在無(wú)法支援虛擬記憶體環(huán)境的情況下,當(dāng)然也就不支援這一類的作業(yè)系統(tǒng)。若某項(xiàng)應(yīng)用需要更多功能的作業(yè)環(huán)境,首選的通常是較高效率的Cortex-A核心。這些核心提供平臺(tái)作業(yè)系統(tǒng)所需的較進(jìn)階功能,同時(shí)仍相當(dāng)重視功耗,整體來(lái)說(shuō)是更為高階且彈性化的程式設(shè)計(jì)模型。

  有鑒于此,ARM Cortex-A處理器多部署于各種深度嵌入的應(yīng)用,尤其是在需要Linux或其他多功能作業(yè)系統(tǒng)的市場(chǎng)。

  圖1顯示Cortex-A處理器目前的應(yīng)用范圍,重點(diǎn)在于其中的較低功耗核心。本文以此一系列中的最新型Cortex-A32處理器為主。

  

 

  圖1 Cortex-A處理器與架構(gòu)

  Cortex-A32是進(jìn)入Cortex-A系列較理想的入門款,可用于需要多功能作業(yè)系統(tǒng)環(huán)境,或從Cortex-A處理器所提供的效能及功能中獲益的應(yīng)用。該處理器為目前擁有低功耗的ARMv8-A處理器,為穿戴式裝置、物聯(lián)網(wǎng)(IoT)和多功能嵌入式應(yīng)用,尤其是需要Linux這一類平臺(tái)作業(yè)系統(tǒng)之應(yīng)用的較佳選擇。

  搶攻32位元運(yùn)算市場(chǎng) A系列新處理器功耗更低

  Cortex-A32在ARM架構(gòu)中扮演著獨(dú)特的角色。其采用ARMv8-A架構(gòu),但僅支援32位元的運(yùn)算。圖2顯示Cortex-A32如何融入ARMv8-A架構(gòu)設(shè)定,以及與Cortex-A35的差異。

  

 

  圖2 Cortex-A32與Cortex-A35比較

  Cortex-A35同時(shí)采用32位元的AArch32和64位元的AArch64兩種執(zhí)行狀態(tài),能夠完整提供ARMv8-A架構(gòu)的64位元功能。另一方面,Cortex-A32則只采用32位元的AArch32執(zhí)行狀態(tài)。移除了64位元的功能以后,不僅體積縮減,對(duì)于不需要64位元功能的使用來(lái)說(shuō),更能降低其功耗。盡管嵌入式領(lǐng)域中有許多應(yīng)用都可從64位元的執(zhí)行中獲益,但有許多仍著重在32位元,且將在可預(yù)見(jiàn)的未來(lái)保持現(xiàn)況,而這些應(yīng)用便是Cortex-A32的目標(biāo)市場(chǎng)。

  AArch32執(zhí)行狀態(tài)為更早期的Cortex-A處理器所采用的ARMv7-A架構(gòu)的進(jìn)化版。據(jù)了解,Cortex-A32即使不具備64位元的功能,但仍提供某些重要的強(qiáng)化,因此功耗還是優(yōu)于Cortex-A7和Cortex-A5。

  此外,對(duì)于仍采用這些舊版ARM處理器的延伸設(shè)計(jì),或以此相同市場(chǎng)為目標(biāo)的新設(shè)計(jì)而言,Cortex-A32仍是理想選擇。

  AArch32優(yōu)于ARMv7-A的特點(diǎn)包括:

  .新增許多新指令,加密演算功能效能更佳

  .新加入Load Acquire和Store Release指令,提供更有效率的記憶體排序功能,符合最新的C++11記憶體排序語(yǔ)法

  .額外的純量與SIMD浮點(diǎn)指令

  .廣泛的系統(tǒng)控制指令

  這些額外功能提供更佳的效能,更勝舊版32位元ARMv7-A處理器。

  Cortex-A32匯流排介面加入了先進(jìn)同步擴(kuò)展(ACE),因此能通過(guò)Cortex-A32來(lái)建構(gòu)完全同步的多重處理系統(tǒng),提高所需要的更高效能。

  假如空間或耗電量為主要的限制,Cortex-A32也有變體版本,特別針對(duì)單處理器應(yīng)用最佳化,省略互連邏輯,以節(jié)省更多的功耗。

  Cortex-A32透過(guò)Large Physical Address Extension(LPAE)擴(kuò)大了定址實(shí)體記憶體空間,超越Cortex-A5所提供的32位元(4GB)空間,可提供40位元定址空間。

  核心本身也整合其他多項(xiàng)有助于改善功耗的進(jìn)階功能,包括更彈性化的電源管理、更細(xì)微分布的電力區(qū)域,并使用保存功率閘級(jí)。

  ARMv7-M與ARMv8-A AArch32架構(gòu)比較

  下文將比較ARMv7-M與ARMv8-A AArch32的架構(gòu)特色與差異。

  ARMv7-M架構(gòu)特色

  ARM Cortex-M處理器系采用ARMv7-M架構(gòu)設(shè)定,Cortex-M0和Cortex-M0+則采用類似的ARMv6-M架構(gòu)。

  此架構(gòu)與先前的ARM架構(gòu)有許多共同的特色,且經(jīng)過(guò)特殊設(shè)計(jì),以支援深層嵌入、低成本的即時(shí)微控制器應(yīng)用。所以移除了舊架構(gòu)的許多功能,但也加入新功能,制造出一個(gè)更像類微控制器的程式設(shè)計(jì)模型。

  舉體來(lái)說(shuō),從舊型處理器(像是常見(jiàn)的ARM7TDMI)的變動(dòng)可總結(jié)如下:

  .作業(yè)模式的數(shù)量從七個(gè)以上大幅減少到兩個(gè):Handler模式和Thread模式。其中一項(xiàng)模式(Handler模式)具選擇性優(yōu)先權(quán)限。

  .暫存器檔經(jīng)過(guò)簡(jiǎn)化。雖然開(kāi)放供程式設(shè)計(jì)人員使用的暫存器基本上仍同樣是十六個(gè),舊型架構(gòu)中所用的備份暫存器復(fù)制機(jī)制也大幅減少,因此只有Stack Pointer(r13)會(huì)在兩個(gè)作業(yè)模式中加以暫存。備份暫存器為選擇性使用,甚至可以省略。

  .最大的變動(dòng)在于異常模式。由于一般的微控制器應(yīng)用可能會(huì)有大量的晶片周邊中斷,所以標(biāo)準(zhǔn)的巢狀向量中斷控制器(Nested Vectored Interrupt Controller, NVIC)規(guī)格會(huì)包含在架構(gòu)中,所有的Cortex-M核心均包含該規(guī)格。同樣地,異常處理模式已在包含處理常式位址的向量表上加以標(biāo)準(zhǔn)化。內(nèi)容的儲(chǔ)存與回復(fù)作業(yè)完全在硬體上實(shí)作,簡(jiǎn)化寫入中斷處理的軟體工作,如此可在實(shí)作時(shí)達(dá)到非常低且可預(yù)測(cè)的中斷延遲時(shí)間。

  .ARMv7-M定義選擇性的記憶體保護(hù)架構(gòu),該架構(gòu)與某些舊型ARM處理器所用的架構(gòu)類似。裸機(jī)系統(tǒng)或在即時(shí)作業(yè)系統(tǒng)(RTOS)下運(yùn)作的系統(tǒng)由于通常不需要虛擬記憶體,因此不支援虛擬記憶體。

  .為支援各種即時(shí)作業(yè)系統(tǒng)的運(yùn)作和執(zhí)行,有些標(biāo)準(zhǔn)的晶片周邊也會(huì)在架構(gòu)中加以定義,如SysTick Timer。

  .為縮小處理器核心的大小,ARMv7-M處理器的運(yùn)行限縮到只有Thumb指令集(包含Thumb-2延伸),僅執(zhí)行最小的子集,進(jìn)而實(shí)現(xiàn)最小的核心。

  ARMv8-A AArch32特色

  Cortex-A處理器采用ARMv7-A或ARMv8-A架構(gòu)設(shè)定。ARMv8-A處理器提供AArch32執(zhí)行狀態(tài),為32位元ARMv7-A架構(gòu)的向下相容演化版。這些架構(gòu)可實(shí)現(xiàn)專門設(shè)計(jì)用來(lái)支援Linux、Android、Windows等平臺(tái)作業(yè)系統(tǒng)的功能,而這些系統(tǒng)需要虛擬記憶體環(huán)境。

  其與Cortex-M處理器核心截然不同的特定功能包括:

  .有七個(gè)以上的作業(yè)模式:User、Supervisor、阻斷要求(IRQ)、快速中斷(Fast Interrupt, FIQ)、Undefined、Abort、System。每一模式皆用于處理特定類型事件(例如IRQ模式便是設(shè)計(jì)用于處理IRQ中斷)。AArch32亦支援Hyp和Monitor這兩個(gè)額外的模式,這兩個(gè)模式分別用于虛擬化及ARM TrustZone技術(shù)。

  .除了可用的登錄數(shù)量相同(16),AArch32還有許多與上述作業(yè)模式相關(guān)的“備份”暫存器。進(jìn)入相關(guān)的作業(yè)模式時(shí),這些暫存器將取代User模式下的暫存器。如此可簡(jiǎn)化許多異常處理工作,但也表示機(jī)器的管理和初始化工作將增加。

  .其異常模式極為不同,其原型存在于最早的ARM架構(gòu)裝置中。具體來(lái)說(shuō),向量表包含一組可執(zhí)行的指令集,而不是位址,且內(nèi)容的儲(chǔ)存與回復(fù)Restore工作幾乎完全交給程式設(shè)計(jì)人員執(zhí)行。

  .最大的差異是加入了記憶體管理單元,可執(zhí)行核心所核發(fā)之虛擬位址,以及記憶體系統(tǒng)所需要的實(shí)體位址間的轉(zhuǎn)譯。如此便能實(shí)作完全的隨選分頁(yè)虛擬記憶體環(huán)境,以供Linux等平臺(tái)作業(yè)系統(tǒng)使用。

  ARMv7-M與AArch32的差異

  從采用Cortex-M處理器的系統(tǒng)轉(zhuǎn)換到采用Cortex-A32處理器時(shí),有許多新功能值得關(guān)注。

  雖然這兩種架構(gòu)有許多類似之處(如備份暫存器和指令集之間有許多相同點(diǎn)),但重要的是ARMv8-A架構(gòu)的AArch32執(zhí)行狀態(tài)所含的許多功能,均是以舊型架構(gòu)的功能為基礎(chǔ)。

  接下來(lái)說(shuō)明AArch32所具備,但為ARMv7-M所無(wú)或差異極大的功能。

  作業(yè)模式

  如圖3所示,ARMv7-M只定義兩個(gè)作業(yè)模式:Thread模式與Handler模式。若無(wú)需要,Handler模式可選擇性取消優(yōu)先權(quán)限,雖然這項(xiàng)功能未必須要在軟體內(nèi)使用。Handler模式適用于處理異常,Thread模式則用于使用者處理程序。這兩個(gè)模式轉(zhuǎn)換基本上是自動(dòng)的,會(huì)在特定事件下發(fā)生,如圖3所示。例如,發(fā)生異常時(shí)會(huì)自動(dòng)進(jìn)入Handler模式,異常處理完成時(shí)則會(huì)退出Handler模式。SVCall指令為主要的方法,軟體用其來(lái)進(jìn)入Handler模式(也可將啟用的IRQ設(shè)定為待處理狀態(tài),以執(zhí)行Handler)。

  

 

  圖3 ARMv7-M作業(yè)模式

  圖4則顯示AArch32執(zhí)行狀態(tài)支援的作業(yè)模式。與ARMv7-M相較,AArch32有七個(gè)基本模式,其中五個(gè)指定用于處理特定異常。例如,取得FIQ異常時(shí)會(huì)進(jìn)入FIQ模式;若發(fā)生未定義指令等情形,會(huì)進(jìn)入U(xiǎn)ndef模式。

  

 

  圖4 AArch32作業(yè)模式

  模式的轉(zhuǎn)換通常為自動(dòng)發(fā)生,但也可在Current Program Status Register(CPSR)中寫入Mode欄位,用軟體控制來(lái)完整切換模式。其細(xì)節(jié)描述如下。與SVCall指令類似,SVC指令用于讓軟體引發(fā)SVC異常并進(jìn)入SVC模式。

  圖4中未顯示AArch32所支援的另兩個(gè)模式(為節(jié)省空間),也就是Hyp模式(用于Hypervisor)與Monitor模式(用于TrustZone安全性)。相關(guān)主題較為復(fù)雜,本文不予討論。


上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞: 處理器 嵌入式

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉