新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應用 > 利用Cortex M7緊密耦合內(nèi)存運行快速算法

利用Cortex M7緊密耦合內(nèi)存運行快速算法

作者: 時間:2017-03-09 來源:電子產(chǎn)品世界 收藏

     對于那些需要低功耗、成本效益和中等性能的嵌入式系統(tǒng)而言,ARM Cortex M系列無疑是首選的處理器系列。 Cortex M系列中最早得到應用的是其光譜中的小部分產(chǎn)品: Cortex M0用于實現(xiàn)最低的成本,Cortex M0+用于實現(xiàn)最高 的能效,Cortex M3用于實現(xiàn)功耗與性能之間的最佳平衡, Cortex M4用于實現(xiàn)那些需要數(shù)字信號處理(DSP)功能的應 用。
     該系列中最高性能的的首批應用現(xiàn)已開始涌 現(xiàn)。該處理器在保持適度能耗和成本的情況下,能以更快速 度運行更加復雜的算法。 采用65-nm嵌入式閃存工 藝,運行頻率為300MHz時CoreMark分數(shù)可達到1500,而且 其DSP性能是Cortex M4的兩倍。一個雙精度浮點單元和一個 雙發(fā)指令流水線進一步確立了的高速地位。憑借這些特性,當?shù)凸?、低成本應用需要嚴密的?視頻算法來實現(xiàn)豐富的影音功能時,Cortex M7成為了它們 當仁不讓的選擇。 Cor tex M7在無人機圖像處理、 語音控 制、物體識別、復雜的汽車傳感器融合以及高端物聯(lián)網(wǎng)傳感 領(lǐng)域得到了廣泛應用。

1  可快速、確定地執(zhí)行代碼的緊密耦合
為了實現(xiàn)實時響應和無縫的音視頻性能,F(xiàn)IR、FFT、 Biquad等算法經(jīng)常需要盡可能快速、確定地運行。為了滿足 系統(tǒng)的性能和時延目標,這些算法應以全時鐘頻率運行,不 受緩存未命中、中斷、上下文交換以及其它有損時間確定性 的執(zhí)行意外阻礙。
這意味著您不能在標準之外運行這些代碼,也不 能依賴標準來存儲正在處理的數(shù)據(jù)。閃存等典型內(nèi)存的 速度太慢,跟不上Cortex M7內(nèi)核的腳步,而且它們需要緩 存,所以,當發(fā)生緩存未命中時會導致較長的時延。因此, Cor tex M7架構(gòu)提供了一種方法, 使用“ 緊密耦合內(nèi)存”(TCM)來繞開標準的執(zhí)行機制。A R M 的 內(nèi) 核 提 供 T C M 接 口 , 用 于 實 現(xiàn) 以 處 理 器 全速 運 行 的 單 周 期 隨 機 TC M 存 取 。 一 個 6 4 位 指 令 內(nèi) 存 端 口(ITCM)支持雙發(fā)處理器架構(gòu),兩個數(shù)據(jù)端口(DTCM) 能夠?qū)崿F(xiàn)兩個并行的32位數(shù)據(jù)存取。但該架構(gòu)沒有指定應 提供內(nèi)存的類型以及大小。這些決定留由那些在微控制器(MCU)中實現(xiàn)Cortex M7內(nèi)核的設(shè)計人員作出,目的是鼓 勵創(chuàng)新和差異化設(shè)計。
     因此,我們可以將嵌入式閃存連接至TCM接口。但閃 存不能以處理器全速運行,因此需要緩存,從而給TCM旨 在提供的確定性帶來了威脅。DRAM中的代碼映射在理論上 可行,但成本過高。速度達到能夠?qū)崿F(xiàn)無緩存、直接存取的 唯一內(nèi)存類型就是SRAM。
SRAM具備眾多優(yōu)勢:可以將一個SRAM模組直接連接 到TCM接口;SRAM技術(shù)便于實現(xiàn)片上嵌入;SRAM支持處 理器全速隨機存取。SRAM的唯一缺點是位成本較高,高于 閃存和DR AM。因此,重要的是要保持有限的TCM大小, 即使是65nm或40nm的工藝也能以適當?shù)某杀緦崿F(xiàn)充足的 SRAM容量。
TC M 可 從 多 個 來 源 加 載 , 而 這 些 來 源 在 架 構(gòu) 中 也 未 明確指出。因此,各種MCU可能在內(nèi)存加載方式上存在差 異,必定包含的是一個直接內(nèi)存存取(DMA)引擎,而至 于是一個單一的DMA,還是來自視頻或USB等不同數(shù)據(jù)流的 多 個 加 載 數(shù) 據(jù) 之
一 , 這 個 由 M CU
設(shè)計人員決定。
在 T C M 之 外 執(zhí) 行 的 代 碼 由 系 統(tǒng) 編 程 人 員 確 定 。 在 準 備 一 個 軟 件 構(gòu) 建 時 , 編 程 人 員 需 要 確 定 應 用 在 T C M 上的 代 碼 段 和 數(shù)

本文引用地址:http://m.butianyuan.cn/article/201703/345019.htm

圖1    TCM接口提供一個單一的64位指令端口和兩個32位數(shù)據(jù)端口

圖2  將SRAM應用到內(nèi)存條時,多個DMA突發(fā)傳送會同時引發(fā)微量時延

圖3    Atmel SAM S70/E70系列可使用TCM或系統(tǒng)SRAM的SRAM提 高靈活性和利用率
據(jù)塊。通常是將Pragmas嵌入到軟件中,或者應用鏈接器設(shè) 置,以便讓該構(gòu)建能夠合理地放置代碼和內(nèi)存。

2 用于更高速SRAM存取的多個端口
雖然TCM可提供一個用于快速、緊密運行重要程序的 直接機制,但我們經(jīng)常需要將一定容量的系統(tǒng)SRAM配置為 通用高速內(nèi)存,供處理器和外設(shè)通過DMA使用。雖然這種 內(nèi)存在邏輯上與TCM分離,但一個SRAM模組也能共享TCM 和通用功能,而且還能讓設(shè)計人員為每種應用情況對TCM 和系統(tǒng)SRAM之間的分離作出調(diào)整。
通用系統(tǒng)SRAM中實現(xiàn)的外設(shè)數(shù)據(jù)緩沖區(qū)通常由DMA傳 送且通過系統(tǒng)外設(shè)加載。但是,從眾多來源加載的能力會引 發(fā)多個DMA試圖同時存取內(nèi)存,從而導致不必要的時延和 沖突的可能性。
在一個典型的例子中,有三個不同的實體對SR AM的 DMA存取進行相互競爭:處理器(64位存取,而在本例中 要求是128位存?。┖蛢蓚€分離的外設(shè)DMA請求(DMA0和 DMA1,均為32位存?。W屛覀兗僭O(shè)處理器的優(yōu)先級高于 DMA,而DMA0的優(yōu)先級高于DMA1。
圖2 顯示了這個例子。左側(cè)顯示了一個64位寬式單條內(nèi) 存的性能,右側(cè)顯示了由4個32位內(nèi)存條組成的同一個內(nèi)存 中處理相同事務。
使 用 單 條 內(nèi) 存 時 , 處 理 器 可 以 在 兩 個 周 期 內(nèi) 完 成 存 取, 然后, DM A0突發(fā)在下一個周期啟動。 DM A1會被鎖 定,直至DMA0完成。任何優(yōu)先級更高的處理器請求都會中 斷DMA加載,從而進一步增加時延。如圖2所示,周期5中 的一個取指令給兩個DMA操作增加了一個周期時延。
為了提高操作效率,可以使用配有交錯地址的多個內(nèi) 存條組成一個內(nèi)存,每個內(nèi)存條可以被單獨存取。在這種方 法中,DMA0會在處理器存取完第一個內(nèi)存條時啟動,而在 同時,處理器會存取高優(yōu)先級的內(nèi)存條。DMA1不再需要等待整個DMA0傳送結(jié)束,它可以在DMA0存取完第一個內(nèi)存 條之后的一個周期中啟動。
由于具備更高的優(yōu)先級,處理器看不出這兩種方案在 時延上的差別。但DMA0的時延從2個周期縮短為1個周期, DMA1的時延從7個周期縮短為2個。DMA操作期間的一個取 指令甚至可能會與DMA操作同時發(fā)生,從而導致無附加時 延。更低的時延不僅提高了性能,同時也意味著您可以縮小 外設(shè)FIFO。
有了這些可行且有用的內(nèi)存方案,MCU設(shè)計人員將能 設(shè)想如何讓閃存、系統(tǒng)SRAM和TCM配合工作。它們是相互 獨立嗎?占用類似的容量嗎?芯片上還是芯片外?不同的考 量將催生出差異化的Cortex M7。

3 一個具體的Cortex M7 TCM實例
Cortex M7 MCU的一個實例在Atmel的SAM S70、SAM E70和SAM V70/1系列中實現(xiàn)。它擁有一個由4個內(nèi)存條組 成的SR AM,可被用作通用SR AM(Atmel將其稱為“系統(tǒng) SRAM”)和TCM。在被配置為TCM的部分中,指令能夠以
300 MHz的內(nèi)核全速運行確定性的單周期存取,無取指令或 緩存時延。與此類似, TCM中的數(shù)據(jù)也可以實現(xiàn)無緩存時 延存取。
指令TCM(ITCM)和數(shù)據(jù)TCM(DTCM)大小必須類 似,每個可以是32K、64K或128K字節(jié)。尺寸是不能輕易更 改的構(gòu)建時設(shè)置。
整 個 S R A M 模 組 最 大 可 為 3 8 4 K 字 節(jié) , 這 意 味 著 系 統(tǒng) SR AM和TCM可以同時使用。配置為TCM的內(nèi)存容量將占 用系統(tǒng)SRAM的容量。例如,如果ITCM被配置為128 KB, D T C M 也 被 配 置 為 1 2 8 K B , 那 么 系 統(tǒng)SR A M的容量將降至128 KB。 系統(tǒng)SR A M能夠以最高150 MHz的速度運行,即一半的處理器速度,而且它由四個內(nèi)存條組成,可降低DMA時 延。既可固定也可循環(huán)設(shè)置的DMA存取優(yōu)先級與系統(tǒng)SRAM 相同,因為它們針對的是內(nèi)部總線矩陣。
一個寄存器位可激活或取消激活TCM,因此,存取目 標將取決于TCM激活。設(shè)備總是在ITCM取消激活時被引 導,以便讓代碼能夠從引導內(nèi)存加載。引導完成后,需要時 可以激活TCM。
ITCM地址空間與引導內(nèi)存疊加。如果取消激活TCM, 指令存取將前往引導內(nèi)存。如果激活TCM,TCM地址空間 中的存取將在TCM中進行,TCM空間以外的存取將在閃存 中進行。可以使用MPU保護各個空間,以確保不會發(fā)生對錯誤
內(nèi)存的無意存取。4  Cortex M7是下一波ARM內(nèi)核
Cortex M7正在興起,運行更加高級的算法,同時依然 保持適度的功耗和成本。緊密耦合內(nèi)存是Cortex M7的一大 特性,能夠以處理器全速確定地執(zhí)行緊密的代碼。
如 何 在M CU 上 是 實 現(xiàn) 這 種 性 能 將 取 決 于 設(shè) 計 人 員 將 Cortex M7集成到MCU中時的系統(tǒng)選擇。我們可以將SRAM 配置為TCM來實現(xiàn)最高的速度。這個SR AM可以與一個更 為通用的系統(tǒng)SR AM共享, 而且通過使用多個內(nèi)存條組成 SRAM,可以將時延降至最低。
這些架構(gòu)特性雖然簡單,但卻能夠顯著提升性能,實
現(xiàn)個人、工業(yè)和汽車設(shè)備所需的嵌入式功能。



關(guān)鍵詞: Cortex M7 內(nèi)存

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉