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