



摘要:本技術白皮書將詳細闡述Cortex-M7處理器,探討在設計核心時面臨的架構考量、以及關于配置選項的信息,同時也說明它在IoT應用中的重要性。此信息適用于希望對處理器本身有更深一步了解的人士、或有興趣從事嵌入式系統設計和軟件開發的專業人士。本文網絡版地址:http://wxvxv.eepw.com.cn/article/27771 5.htm
關鍵詞:ARM;Cortex-M7;MCU;物聯網
ARM Cortex-M7處理器
Cortex-M處理器系列的最新成員是Cortex-M7。這款新的核心具備可用于支持新型嵌入式技術需求的功能,它設計用于需要較高處理性能、實時響應能力和能效的應用。總體而言,Cortex-M7處理器包含下列關鍵特性:
高性能、雙指令簽發6級流水線,每個時鐘周期最多可執行兩個指令;
64位AXI系統總線接口:
可選指令緩存(4到64KB)及數據緩存(4到64KB),每種緩存內存均有可選的ECC(錯誤校正碼)支持;
可選64位指令緊密耦合內存(ITCM)及可選雙32位數據TCM(D{O,1}TCM),每個TCM內存陣列均支持客戶ECC實現;
可選的低延遲AHB外設總線接口,允許在實時應用程序中對外設進行確定性的快速訪問。
ARM Cortex-M7處理器配置選項
Cortex—M7處理器的微架構與Cortex-M處理器系列中的其他核心不同。Cortex-M7的微架構具有6級超標量流水線實現,通過改善架構性能(減少每個指令周期數)和提升運行頻率,大幅改善系統性能。為支持超標量設計更高的指令和數據帶寬要求,其關鍵內存接口設計為64位寬度。AXI系統總線和單周期ITCM接口均為64位,雙32位D-TCM接口可以在一個周期內處理兩個32位傳輸或一個64位數據傳輸。表1總結了Cortex-M7處理器微架構中的總線,強調了新接口與前代ARM Cortex-M系列設備的對比。
在支持許多IoT應用所需的內存擴展性時,AXI主控器接口可發揮重要的功能。由于新的使用模型建立于持續收集和分析的數據基礎上,因此能夠利用外部內存來增加功能性顯得至關重要。除了AXI主機接口外,TCM接口也提供最優的單周期接口,用于執行控制所需的實時運算。若要支持超過5 CoreMarks/MHz的處理器性能級別,高性能內存和總線接口則至關重要。
選擇要在SoC中使用哪些總線以及如何加以利用時,需要考慮多個要素,其中包括:
哪些外設需要連接Cortex-M7處理器上的AHB外設總線,來實現低延遲訪問能力?
哪些外設需要由DMA控制器訪問?
需要哪些形式的訪問控制和內存保護?
舉例來說,在非常簡單的設計中,內存系統可以連接至TCM接口,外設可以連接至AHB外設接口,如圖2所示。這種配置使得SoC不僅能夠利用Cortex-M7核心的可縮放性能,而且仍然能夠應對與成本和尺寸相關的挑戰。例如,通過SRAM與TCM接口的連接,可以活動支持,實現需要實時性能的控制邊緣節點。
另一種配置選項是將嵌入式內存和(或)外部內存與AXI接口連接,并通過使用緩存內存來實現更高的性能。大多數微控制器應用包含許多小的控制循環,因此固件執行的緩存未命中數非常低。使用基于緩存的設計時,系統在從AXI總線系統執行程序時的確定性可能較低。不過,可以在與ITCM接口連接的SRAM中,放入異常矢量表和中斷處理程序,從而實現在執行中斷處理程序時的確定行為。
AXI接口和緩存的內存可擴展性、性能以及效率優勢是滿足應用需求的關鍵所在。此類配置提供與IoT應用相符的諸多優勢,如支持無線固件更新和利用大型外部內存的數據存儲需求。然而,并非所有應用案例都需要每個選項,所以必須要考量與成本、尺寸和功耗相關的挑戰。
內存系統的設計可以提供各種各樣的配置選項。需要考慮多個方面和因素,其中包括:
來自AXI或TCM接口的執行;
緩存大小(如果使用AXI);
嵌入式閃存訪問加速的方式,以及閃存的帶寬:
可選ECC支持。
許多不同因素可以影響到決策,如嵌入式閃存的讀取訪問速度,時鐘速度要求,以及目標應用的典型大小及其程序流行為。
如果嵌入式內存訪問速度與所需的處理器速度相近,則嵌入式閃存可以和具有一些閃存訪問加速的ITCM接口連接。而在其他情形中,使用帶有緩存的AXI將更加合適。如果應用需要從外部內存控制器執行程序,那么內存控制器通常會與AXI接口連接,也就需要指令緩存和數據緩存的支持。在一些情形中,應用可能只需要將外部內存用于數據存儲。這樣的情形中不需要指令緩存。
選擇緩存大小很大程度上取決于應用程序代碼的屬性。在嵌入式閃存運行程序代碼時,會同時利用指令緩存和數據緩存,因為程序映像通常會隨指令一起包含文字數據、查找表或只讀常量。與程序映像內部中的數據/常量相比,應用程序通常有更多指令字。隨著程序大小變大,緩存要求也在提高,指令緩存大于數據緩存也不罕見。相反,一些應用程序可能有很小的控制或DSP循環,同時可能有大量的數據用作計算的系數。在此類情形中,較大的D緩存可能比較大的I緩存更對系統性能有益。
當然,進行性能優化時,也需要最大化緩存以確保較大代碼和數據大小的最低延遲性。不過,通過以等同于處理器的速度運行大緩存內存,可能會根據其他因素而造成緩存查找消耗大量的功率。此外,大多數應用程序的緩存未命中率曲線隨著尺寸增大而向零靠近,這意味著進一步增大緩存大小并不會提高性能。所幸的是,Cortex-M7核心的可配置性使得SoC架構師能夠整合各種各樣的緩存尺寸,從無緩存到最高64KB的指令緩存和64KB數據緩存。借助這樣的靈活性,設計人員可以調節SoC來滿足目標應用的需求。
除了架構選項外,Cortex-M7處理器上的許多其他功能也可加以配置。例如,SoC的浮點單元(FPU)功能可以配置為完全不含FPU、具有IEEE-754單精度浮點運算的FPU,或者同時支持IEEE一754單精度運算和雙精度運算的FPU。
其他配置功能包括:
中斷數、以及NVIC中的優先級別數:
內存保護單元(MPU)配置;
調試與跟蹤功能:
功能安全性相關的功能(ECC、雙核鎖步)。
浮點運算硬件加速有諸多優點。顯而易見,具有硬件浮點單元時浮點運算的性能可以得到加速。此外,由于硬件支持減少了執行浮點運算所需的軟件庫數量和相關大小,因此內存空間也得以優化。縮短處理時間并且減少內存足跡最終提高應用的能效.為執行傳統上需要更多復雜嵌入式系統的功能掃清了障礙。這種優勢對能效而言非常重要,因為DSP過濾器的浮點運算最高可提速20倍。同時具備單精度和雙精度浮點功能選項可進一步提高新款處理器的可擴充性。
隨著IoT的演進逐步帶來技術的擴充,應對嵌入式應用的安全性和完整性挑戰的需求也在增長。除了與其他Cortex-M處理器相同的錯誤異常處理功能和內存保護單元外,Cortex-M7處理器也包含可選的TCM內存和緩存錯誤校正代碼(ECC)支持。這可以實現自動即時更正內存中的單比特錯誤、以及檢測雙比特錯誤。
此外,Cortex—M7處理器也支持雙核鎖步配置選項。在這種配置中,核心邏輯進行兩次實例化,緩存和TCM內存陣列則是共享的。這是因為它們可以通過ECC加以保護,其硅面積成本能大幅降低(見圖4),實現非常強健的容錯系統設計。飛思卡爾Kinetis KV5x MCU系列的實現
Cortex-M7處理器的一個實現選擇示例是飛思卡爾最新發布的KinetisKV 5x MCU系列,這一可擴充的MCU產品系列定位是面向電機控制和數字功率轉換應用。在這一SoC中,Cortex-M7處理器選擇的部分配置選項包括整合16KB指令緩存和8KB數據緩存。此SoC將64位AXI總線用作嵌入式閃存存儲器的訪問端口。指令緩存和數據緩存確保駐留于嵌入式內存中的控制軟件得以加速,支持所連的工業級控制用例所需的性能級別。除了緩存之外,Kinetis KV5x MCU系列還集成了64KB與ITCM接口連接的SRAM、以及128KB與DTCM接口連接的SRAM。這可提供必要的處理器本地存儲,以延遲性最低的內存支持實時控制運算。
Kinetis KV5x MCU配置僅僅是一個示例,說明了如何構建SoC以應對關注于聯網控制的特定應用。隨著時間推移、以及互連應用數量和多樣性的增加,未來必定會出現對SoC設計的調節,從而在Cortex-M7處理器上進行更廣泛范圍的配置。性能水平與可比較的Cortex-M4解決方案相比將可達到兩倍以上的提高,這將為嵌入式領域實現更多的創新。憑借其可擴充性、性能和可擴展功能,可調節型Cortex-M7核心將在支持“明日物聯網”的舞臺中扮演重要的角色。