Arm 架構(gòu)已經(jīng)主導(dǎo)了當(dāng)今嵌入式處理和計(jì)算市場(chǎng),但在過(guò)去的幾十年里,Arm 架構(gòu)卻走過(guò)了漫長(zhǎng)的道路。從20世紀(jì)80年代開(kāi)始,它起初是作為家用電腦處理器,然后在20世紀(jì)90年代成為手機(jī)芯片的基礎(chǔ)。如今,在幾乎所有技術(shù)細(xì)分市場(chǎng),Arm都是一個(gè)強(qiáng)有力的競(jìng)爭(zhēng)者。許多人認(rèn)為,Arm 架構(gòu)已成為 32 位或 64 位處理器的首選。由于這種廣泛應(yīng)用,現(xiàn)在已經(jīng)有成千上萬(wàn)種基于Arm架構(gòu)的變體。了解這些內(nèi)核彼此之間的不同是做出選擇決策的重要一環(huán)。
早在 2004 年,最初的 Cortex 家族就使 Arm架構(gòu)分化為三個(gè)內(nèi)核產(chǎn)品組,每個(gè)產(chǎn)品組都針對(duì)不同類型的應(yīng)用。最早集成到芯片的是Cortex-M,它已成為基于Arm微控制器(MCU)生態(tài)系統(tǒng)的支柱。盡管Cortex-M系列首次推出的是基于版本7架構(gòu)的內(nèi)核,但后來(lái)針對(duì)超低成本設(shè)備(即M0、M0+和M1)的新產(chǎn)品則是基于早期版本6架構(gòu)。所有Cortex-M處理器僅執(zhí)行Thumb指令集。另外兩個(gè)系列被設(shè)計(jì)為支持Thumb和完整的A32指令集。
圖1:Silicon Labs的EFM Tiny Gecko(小壁虎)。
自推出以來(lái),Cortex-M3已經(jīng)得到許多MCU供應(yīng)商的采用,Cortex-M3內(nèi)核幫助這些MCU廠商定義其32位產(chǎn)品?,F(xiàn)在市場(chǎng)可用的MCU包括相對(duì)簡(jiǎn)單但又具備高性價(jià)比的產(chǎn)品,例如針對(duì)低功耗系統(tǒng)的Silicon Labs 的 EFM TIny Gecko,以及賽普拉斯(Cypress)半導(dǎo)體的 PSoC5片上系統(tǒng),它使傳統(tǒng)的MCU外設(shè)與高度靈活的可編程模擬功能結(jié)合在一起。
隨著MCU應(yīng)用開(kāi)始要求提供更高的數(shù)字信號(hào)處理(DSP)性能,Arm推出Cortex-M4以滿足市場(chǎng)的需求。該內(nèi)核可為浮點(diǎn)運(yùn)算提供支持,得到許多廠商的采用。一種常見(jiàn)的配置是將強(qiáng)大的Cortex-M4F內(nèi)核與較為簡(jiǎn)單的Cortex-M0或Cortex-M0+整合在一起,為用戶提供高效的電源管理和資源分配。
在賽普拉斯 PSoC6 或恩智浦(NXP)LPC5411x等器件中,M0+內(nèi)核可以處理中斷(interrupts),使M4或M4F可自由處理 DSP 任務(wù),而不會(huì)產(chǎn)生中斷,從而能夠最大限度地提高數(shù)據(jù)吞吐量。這種責(zé)任劃分也使更強(qiáng)大的M4內(nèi)核能夠在活動(dòng)突發(fā)之間進(jìn)行較長(zhǎng)時(shí)間睡眠。低功耗M0+ 可在相對(duì)有限的運(yùn)行期間處理比較簡(jiǎn)單的系統(tǒng)管理任務(wù)。
圖 2:來(lái)自賽普勒斯半導(dǎo)體的 PSoC6。
2014 年,Arm推出了M7內(nèi)核,將 Cortex-M 的性能提高到新的層級(jí)。此內(nèi)核采用六級(jí)超標(biāo)量(superscalar)流水線架構(gòu),支持亂序操作,并通過(guò)完整的浮點(diǎn)運(yùn)算單元來(lái)進(jìn)一步增強(qiáng)。意法半導(dǎo)體的STM32F730x8集成了M7內(nèi)核、各種外設(shè)和公司專有的ART加速器技術(shù)(能夠?qū)崿F(xiàn)閃存的零等待狀態(tài)執(zhí)行)。
Cortex-A
2005 年,出于滿足手機(jī)業(yè)務(wù)向智能手機(jī)和平板電腦方向發(fā)展的需求變化,Arm推出了Cortex-A家族的首個(gè)成員。Cortex-A 旨在提供一系列針對(duì)應(yīng)用處理器定制的功能,也為在服務(wù)器和其他高端計(jì)算系統(tǒng)中部署 Arm內(nèi)核鋪平了道路。
Cortex-A 處理器與其他系列處理器之間的一個(gè)主要區(qū)別是支持分頁(yè)內(nèi)存管理單元(MMU)。Linux和類似的操作系統(tǒng)都需要MMU,因?yàn)樗軌驅(qū)⒊绦蚣捌鋽?shù)據(jù)在現(xiàn)實(shí)內(nèi)存中映射到不同虛擬地址空間,這提供了一定程度的安全保護(hù)功能,可防止不同任務(wù)使用的數(shù)據(jù)被破壞,此外還能夠?qū)⑽锢韮?nèi)存視為大型緩存。盡管程序是動(dòng)態(tài)加載和卸載,它還能夠避免內(nèi)存碎片化引起的問(wèn)題。
使用分頁(yè)虛擬地址的一個(gè)潛在缺點(diǎn)是它們可能干擾實(shí)時(shí)操作,因此在Cortex-A處理器中增加了MMU,但在具有更強(qiáng)嵌入式系統(tǒng)功能的產(chǎn)品系列中卻沒(méi)有。Cortex-A架構(gòu)從誕生之初的一個(gè)關(guān)鍵創(chuàng)新是TrustZone,由此可實(shí)現(xiàn)一個(gè)基于硬件的安全層,如果沒(méi)有所需的安全證書(shū),虛擬設(shè)備管理器(hypervisor)能夠拒絕任何任務(wù)對(duì)處理器和內(nèi)存某些部分的訪問(wèn)。TrustZone可將加密操作和其他敏感操作納入受硬件防火墻保護(hù)的虛擬處理器。
在內(nèi)核方面,范圍從相對(duì)簡(jiǎn)單的Cortex-A5到高性能超標(biāo)量處理器,如Cortex-A72整合了同時(shí)發(fā)出三個(gè)指令的能力和執(zhí)行無(wú)序操作,簡(jiǎn)化了調(diào)度以實(shí)現(xiàn)最高效率。
Cortex-A家族的第二個(gè)重大創(chuàng)新是LITTLE框架,它是在2011年推出,這主要反映了針對(duì)應(yīng)用處理器市場(chǎng)的M4引入后不同Cortex-M內(nèi)核的耦合,增強(qiáng)了支持應(yīng)用處理器需求的其他功能。
對(duì)于較大LITTLE,Arm采用了將低端內(nèi)核(如A5或A7)與高性能,且通常是超標(biāo)量實(shí)施相結(jié)合的方法。在可能的情況下,操作系統(tǒng)會(huì)保持低功耗處理器的活動(dòng)時(shí)間盡可能長(zhǎng),然后在工作負(fù)載超過(guò)特定閾值時(shí)才激活高功率內(nèi)核。與傳統(tǒng)的雙核架構(gòu)不同,任務(wù)可以根據(jù)系統(tǒng)條件從一個(gè)處理器遷移到另一個(gè)處理器。隨著對(duì)性能需求的增加,越來(lái)越多的Cortex-A實(shí)施都是圍繞處理器復(fù)合體采用四個(gè)高端內(nèi)核。通過(guò)在性能要求比較平靜的期間關(guān)閉一個(gè)或多個(gè)內(nèi)核,這種安排可以節(jié)省功率。
Cortex-R
Cortex-R是Arm公司第三大系列內(nèi)核,通過(guò)采用實(shí)時(shí)且高度可靠的功能,能夠支持新一代復(fù)雜的汽車和網(wǎng)絡(luò)系統(tǒng)。在一些目標(biāo)應(yīng)用中需要一些確定性性能,意味著通常用于加快其他 Arm 處理器的緩存并不總是最佳方案。由于緩存會(huì)動(dòng)態(tài)地將指令和數(shù)據(jù)值替換為最近使用的條目,因此,當(dāng)中斷服務(wù)例程或?qū)崟r(shí)任務(wù)需要時(shí),關(guān)鍵信息可能不在緩存中。Cortex-R家族通過(guò)支持緊密耦合存儲(chǔ)器(TCM)庫(kù)克服了這一問(wèn)題。因此,關(guān)鍵信息可以在操作過(guò)程中存儲(chǔ)在其中,并且通過(guò)軟件管理,避免了指令和數(shù)據(jù)被緩存管理子系統(tǒng)替換的風(fēng)險(xiǎn)。
自從最初的Cortex-R4誕生以來(lái),這個(gè)家族已經(jīng)發(fā)生了很多進(jìn)化,其中Cortex-R5和R7內(nèi)核具有低延遲外圍端口。大多數(shù)內(nèi)核都設(shè)計(jì)為與Arm 硬件總線 (AHB)等片上總線配合使用,或者在最近的內(nèi)核中,結(jié)合使用高級(jí)可擴(kuò)展接口(AXI)基礎(chǔ)架構(gòu)。低延遲端口將內(nèi)核直接連接到重要的外圍設(shè)備,無(wú)需對(duì)總線進(jìn)行仲裁,或等待其他總線訪問(wèn)活動(dòng)完成,即可進(jìn)行訪問(wèn)。
為了支持高度可靠的操作,Cortex-R內(nèi)核上的緩存、TCM 和系統(tǒng)總線可以使用錯(cuò)誤修改編碼來(lái)透明地更正單位(single-bit)錯(cuò)誤并檢測(cè)雙位錯(cuò)誤。由于模塊化冗余是安全關(guān)鍵型系統(tǒng)的核心部分,Cortex-R 系列內(nèi)核設(shè)計(jì)為可使用副本在鎖定步驟中工作。如果片上監(jiān)視器檢測(cè)到輸出差異,它可以警告存在的問(wèn)題,以便軟件能夠采取糾正措施。采用Cortex-R 系列而生產(chǎn)的一個(gè)芯片例證是賽普拉斯半導(dǎo)體的Traveo S6J33xx系列 MCU,它集成有Cortex-R5F內(nèi)核,運(yùn)行在高達(dá)240MHz的頻率,并集成有針對(duì)汽車儀表板中驅(qū)動(dòng)儀表群集而優(yōu)化的外圍設(shè)備。
Arm v8
在2011 年,隨著版本8體系架構(gòu)的創(chuàng)建,迎來(lái)了Arm內(nèi)核產(chǎn)品的第二波更改,包括增強(qiáng)了具體應(yīng)用在64位模式下運(yùn)行的能力,極大地?cái)U(kuò)展了應(yīng)用處理器的最大可尋址內(nèi)存空間。具有64位能力的Arm v8 處理器可以在 32位或 64位模式下運(yùn)行。32位運(yùn)行與為版本7處理器編寫(xiě)的應(yīng)用提供向后兼容性。由于Cortex-M 系列中的版本8處理器專注于MCU應(yīng)用,因而不支持64位尋址。但是,它們確實(shí)增加了許多額外的指令和功能,以提高性能并增強(qiáng)安全操作。
其中一個(gè)重要的進(jìn)步是重新設(shè)計(jì)的內(nèi)存保護(hù)單元(MPU),它允許更靈活地管理分區(qū)。另一個(gè)是完全支持僅執(zhí)行內(nèi)存(execute-only-memory),以幫助防止反向工程和黑客攻擊。但是,安全性方面最大的變化是支持專門針對(duì)深度嵌入式處理器而優(yōu)化的TrustZone機(jī)制。
對(duì)于Cortex-M 版本中TrustZone,無(wú)需軟件虛擬設(shè)備管理器來(lái)管理安全狀態(tài)和非安全狀態(tài)之間的轉(zhuǎn)換。相反,可使用專用指令從不安全的任務(wù)傳遞數(shù)據(jù)到安全的功能,以保護(hù)允許在特權(quán)模式下運(yùn)行。如果沒(méi)有正確的權(quán)限,即使高優(yōu)先級(jí)中斷也無(wú)法讀取到寄存器中的安全數(shù)據(jù)。安全功能允許創(chuàng)建保護(hù)良好的 IoT 設(shè)備,這些都可以通過(guò)基于Cortex-M23和Cortex-M33等內(nèi)核的MCU實(shí)現(xiàn)。
Microchip的 SAML11 MCU采用了Cortex-M23增強(qiáng)型片上加密控制器,可為傳感器節(jié)點(diǎn)和類似設(shè)計(jì)提供硬件安全保證。Nordic Semiconductor的nRF9160采用Cortex-M33來(lái)提供需要安全射頻通信的器件處理功能。
圖 3:Microchip公司的 SAML11 MCU 示例。
結(jié)論
毫無(wú)疑問(wèn),Arm是全球電子行業(yè)中最偉大的成功案例之一。為了滿足許多不同市場(chǎng)的需求,Arm提供的廣泛產(chǎn)品組合繼續(xù)向多個(gè)方向擴(kuò)展。Cortex-A、Cortex-M和Cortex-R等細(xì)分產(chǎn)品系列的進(jìn)一步區(qū)分,已證明是這種快速增長(zhǎng)的基礎(chǔ),并且將繼續(xù)推動(dòng)Arm內(nèi)核在不斷出現(xiàn)的新領(lǐng)域得到廣泛應(yīng)用。