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