ARM Cortex-M23處理器的五大特色
ARM® Cortex®-M23采用TrustZone®技術(shù),是尺寸最小、能效最高的處理器。小型嵌入式應用對芯片的安全性能有嚴格要求,基于ARMv8-M基線架構(gòu)的Cortex-M23處理器則是最佳解決方案。
本文中,我將帶各位領(lǐng)略全新Cortex-M23處理器的強大特色:
· Cortex-M23最重要的特色是加入了TrustZone安全基礎(chǔ)技術(shù)
· 極緊湊的架構(gòu)與布線
· 強化的調(diào)試糾錯和追溯能力(對開發(fā)商的生產(chǎn)力提高至關(guān)重要)
· 存儲保護單元獲得改善(該單元定義軟件組件的訪問許可,全新設(shè)計提升編程的效率,重新定義存儲區(qū)域)
· 新增多條增強性能的指令
1. 為ARMv8-M量身打造的TrustZone技術(shù):安全實現(xiàn)的基礎(chǔ)
TrustZone技術(shù)為ARMv8-M度身優(yōu)化,可以在每一臺搭載Cortex-M23處理器的設(shè)備上以硬件形式實現(xiàn)可信軟件和非可信軟件強制隔離。因此,采用TrustZone,設(shè)計師只需一個處理器就可以設(shè)計嵌入式應用,此前則必須使用多個處理器才能在可信區(qū)域和非可信區(qū)域之間實現(xiàn)物理隔離。僅需Cortex-M23處理器,既可出色實現(xiàn)多項安全需求,如設(shè)備識別管理、高價值固件保護、軟件認證、安全根等等。
采用TrustZone技術(shù)的Cortex-M23處理器具備以下兩種安全狀態(tài):
· 安全狀態(tài) – 可以訪問安全和非安全資源(存儲、周邊設(shè)備等)
· 非安全狀態(tài) – 只可訪問非安全資源
兩種安全狀態(tài)下的代碼執(zhí)行轉(zhuǎn)換和代碼訪問均由硬件監(jiān)管,最大限度地降低轉(zhuǎn)換管理成本并保證確定性——這也是所有Cortex-M處理器的標志性功能。
2. 緊湊二階布線處理器
Cortex-M23是一款簡單的二階布線馮諾依曼處理器(Von Neumann processor),但卻足以支持全套ARMv8-M基線指令集。熟悉Cortex-M0+的用戶一定可以迅速指出Cortex-M23使能效最大化的眾多相似特色:WFI(等待中斷)/WFE(等待事件)和睡眠/深度睡眠模式、退出時睡眠、SysTick定時器和選配的單循環(huán)IO等。
指令集共包含80條左右的拇指指令,其中大多數(shù)都是16位指令(為了盡可能提高代碼的緊湊度),但仍有一些為了提升效率而設(shè)置的32位指令。Cortex-M23支持所有的ARMv6-M指令,以幫助設(shè)計師輕而易舉地將代碼從Cortex-M0和Cortex-M0+處理器轉(zhuǎn)移至Cortex-M23。此外ARMv8-M基線指令集中還加入了多條新指令以提升條件運算、互斥訪問、硬件劃分運算和即時移動的效率。
3. 強化的調(diào)試糾錯與追溯能力
僅憑一臺高效安全的32位處理器,尚無法成功實現(xiàn)字段部署,軟件開發(fā)的成本通常超過生產(chǎn)和硬件IP的總和。Cortex-M23引入更多可配置的硬件斷點和數(shù)據(jù)觀測點,對比其他ARMv6-M處理器,可以助設(shè)計師更輕松地實現(xiàn)軟件開發(fā)與調(diào)試。除了Cortex-M0+ 處理器中也配置的微型跟蹤緩沖器(MTB),Cortex-M23還包括選配的嵌入式跟蹤宏單元(ETM)。有了這些選配功能,設(shè)計師可以自行判斷,究竟選擇更加豐富全面的指令追溯能力;還是性價比更高、更加精簡的指令追溯能力。
4. 用于任務隔離的存儲保護單元
Cortex-M23還包括選配存儲保護單元(MPU),基于全新PMSAv8架構(gòu)打造,設(shè)計師使用起來非常方便。它可以在安全和非安全狀態(tài)的任何一個狀態(tài)下最多“保護”16個區(qū)域。每個區(qū)域都有一個基礎(chǔ)地址、結(jié)束地址、訪問許可和存儲屬性設(shè)置。在多任務環(huán)境下,操作系統(tǒng)可以在任務情境切換的過程中重新編程MPU,定義每個任務的存儲許可,比如允許應用任務訪問全部或部分應用數(shù)據(jù)和特定的周邊設(shè)備。通過保護許可之外的數(shù)據(jù)免遭污染,并阻止未授權(quán)來源訪問許可之外的周邊設(shè)備,該MPU可以顯著提升系統(tǒng)可靠性。
更易設(shè)置的存儲區(qū)域
Cortex-M23的存儲保護架構(gòu)采用基線和限值比較器,用以定義存儲區(qū)域,而此前使用的是二次方尺寸對齊比較器。這項改進簡化了軟件研發(fā)的復雜程度,而且在某些情況下,當區(qū)域尺寸不是完美的二次方尺寸時,還能減少存儲浪費。
5. 全新ARMv8-M基線指令
對比ARMv6-M,Cortex-M23加入了許多全新指令,但絲毫沒有折損Cortex-M系列處理器的超高能效。大多數(shù)新指令(除用于安全拓展外)都繼承自ARMv7-M的架構(gòu)指令集,進一步拓展Cortex-M23的功能,并與Cortex-M0+ 處理器形成鮮明區(qū)分。
5.1安全拓展
ARMv8-M采用的TrustZone安全技術(shù)為基線指令集補充了全新指令,包括安全網(wǎng)關(guān)(SG)、非安全支路(BXNS、BLXNS)以及測試目標(TT)指令。欲知詳情,請參閱Yiu撰寫的《ARMv8-M 架構(gòu)介紹》。
5.2 僅執(zhí)行代碼生成
對僅執(zhí)行(Execute-Only)代碼存儲區(qū)的支持也獲得改善,新增加的即時移動指令(從ARMv7-M繼承的MOV/MOVT)可以在僅執(zhí)行代碼中生成即時數(shù)據(jù),讓設(shè)計師僅憑2條指令便能生成32位值,且無需運行實際負載。
5.3代碼優(yōu)化
條件比較和支路指令(從ARMv7-M繼承的CBNZ/CBZ)可以提高多項條件控制代碼序列的性能。長偏移即時支路(從ARMv7-M繼承的)可以將支路指向遙遠的目標地址;硬件整數(shù)劃分指令(從ARMv7-M繼承的SDIV/UDIV)則可以減少除法運算的處理循環(huán)。
5.4排斥存取
Cortex-M23還從ARMv7-M繼承了負載和儲存的專用指令,提升Cortex-M23在多核系統(tǒng)中的一貫性,確保多個處理器以同樣的機制處理信號。此外,為了對C11/C++11提供穩(wěn)定支持,Cortex-M23還新增ARMv8-A(Thumb 32版本)的負載獲取與儲存釋放指令,并包括這些指令的排斥存取變種。