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