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