<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 使用CLT 工具優(yōu)化C6000 代碼

          使用CLT 工具優(yōu)化C6000 代碼

          作者: 時(shí)間:2016-09-12 來源:網(wǎng)絡(luò) 收藏

          摘 要

          本文引用地址:http://www.ex-cimer.com/article/201609/303829.htm

          DSP 的開發(fā)過程中,優(yōu)化是必不可少的一個(gè)環(huán)節(jié),根據(jù)對(duì)象不同可以分為系統(tǒng),算法,代碼以及內(nèi)存優(yōu)化。通常,開發(fā)者熟悉自己的代碼,會(huì)從前三個(gè)方面修改以獲得整體性能的提升,但是對(duì)于內(nèi)存尤其是緩存(Cache)的優(yōu)化,因?yàn)槠渖婕暗叫酒旧淼募軜?gòu),Cache 的維護(hù)由 DSP 自動(dòng)完成,用戶通常不能干預(yù),所以似乎無從著手;考慮到這些實(shí)際的問題,從 TI 的 7.0 系列編譯器開始支持使用緩存優(yōu)化工具(Cache Layout Tools)對(duì) 代碼進(jìn)行優(yōu)化,通過這一系列的工具,可以很輕松的完成 L1P Cache 性能的提升,本文詳細(xì)介紹了該工具的使用方法。

          1. 引言

          目前,使用TI DSP 的用戶越來越多,在 系列DSP 中,包含了C64x, C64x+, C66x 等。在C6000 DSP 的開發(fā)過程中,為了充分利用DSP 的計(jì)算資源,需要對(duì)用戶程序進(jìn)行優(yōu)化的工作,根據(jù)對(duì)象不同可以分為系統(tǒng),算法,代碼以及內(nèi)存優(yōu)化。通常,開發(fā)者熟悉自己的系統(tǒng)和代碼,可以比較方便的從前三個(gè)方面修改以獲得整體性能的提升,但是對(duì)于內(nèi)存尤其是緩存(Cache)的優(yōu)化,因?yàn)槠渖婕暗叫酒旧淼募軜?gòu),Cache 的維護(hù)由DSP 自動(dòng)完成,用戶通常不能干預(yù),所以似乎無從著手;考慮到這些實(shí)際的問題,從TI 的7.0 系列編譯器開始支持使用緩存優(yōu)化工具(Cache Layout Tools)對(duì)C6000 代碼進(jìn)行優(yōu)化,通過這一系列的工具,可以很輕松的完成L1P Cache 性能的提升,本文詳細(xì)介紹了該工具的使用方法。

          2. C6000 DSP 內(nèi)核緩存機(jī)制

          C6000 系統(tǒng)的存儲(chǔ)器結(jié)構(gòu)如下圖所示。

          c6000

          存儲(chǔ)器分成三級(jí):第一級(jí)是L1,包括數(shù)據(jù)存儲(chǔ)器(L1D)和代碼存儲(chǔ)器(L1P);第二級(jí)是代碼和數(shù)據(jù)共用存儲(chǔ)器(L2 以及MSMC SRAM);第三級(jí)是外部存儲(chǔ)器,主要是DDR 存儲(chǔ)器。L1P、L1D 和L2的Cache 功能分別由相應(yīng)的L1P 控制器、L1D 控制器和L2 控制器完成。

          在C6000 DSP 中通常我們會(huì)把L1P 全部配置成Cache,當(dāng)CPU 發(fā)出取指命令,首先會(huì)從L1P 里查找,如果L1P 找不到,則到下一級(jí)Cache 或者M(jìn)emory 里查找,當(dāng)找到需要的地址,則將其讀入L1P 里,CPU 從中讀取執(zhí)行。

          因?yàn)長(zhǎng)1P Cache 的大小是有限的(本文以32KB 為例),而用戶內(nèi)存空間一般大于32KB, 必須采取一種映射的方式使得所有地址都能被L1P 緩存;在C6000 DSP 中,L1P Cache 使用地址直接映射,所有DSP 核可訪問的地址對(duì)L1P Cache 大小(32K)取模就能得到該地址在L1P Cache 的偏移值。

          如果用戶代碼在內(nèi)存排布不合理,可能會(huì)在L1P Cache 中發(fā)生反復(fù)的內(nèi)容替換,下圖中的例子是一個(gè)極端情況。

          c6000

          TOP 函數(shù)中FOR 循環(huán)反復(fù)調(diào)用A 函數(shù),而A,B,C 三個(gè)函數(shù)在內(nèi)存地址的分布上,與32KB 邊界的偏移地址是一樣的,因此,A,B,C 將對(duì)應(yīng)L1P 里同一個(gè)CACHE 位置;其運(yùn)行流程如下

          · 當(dāng)執(zhí)行A 時(shí),CPU 需要把A 函數(shù)調(diào)入到Cache 偏移值N 的位置上;

          · A 調(diào)用B,此時(shí)調(diào)入B 到Cache 偏移值N 的位置上,覆蓋A 的代碼;

          · B 調(diào)用C,此時(shí)調(diào)入C 到Cache 偏移值N 的位置上,覆蓋B 的代碼;

          · C 返回,下一次循環(huán)調(diào)入A 到Cache 中覆蓋C 的代碼。

          DSP 核對(duì)L1P,L2,DDR 的訪問速度差異很大,對(duì)L1P 的訪問通常在1 個(gè)時(shí)鐘周期內(nèi)完成,而L2 平均需要 3-5 個(gè)周期,DDR 訪問需要的時(shí)間更多,因此我們應(yīng)該盡量避免上述這種反復(fù)重寫Cache的情況,盡可能的減少函數(shù)在Cache 中的置換。

          如何解決該問題?最好的解決方法則是將A, B, C 在內(nèi)存中連續(xù)排放,這樣對(duì)Cache 的操作次數(shù)將降到最低,能夠有效的提高執(zhí)行效率,如下圖所示,只要A,B,C 總的大小不超過32KB, 它們?cè)贑ache 中的偏移值就是連續(xù)的,不會(huì)發(fā)生覆蓋的現(xiàn)象,即使其總和大于32KB,發(fā)生置換的也僅僅是超過32K 的部分。

          c6000

          3. 內(nèi)存優(yōu)化工具

          通過上述機(jī)制可以看到,對(duì)于L1P Cache 的優(yōu)化主要通過分析函數(shù)調(diào)用關(guān)系和其在內(nèi)存的分布。由于用戶代碼日益復(fù)雜,人工分析代碼調(diào)用關(guān)系和地址排布需要花費(fèi)大量的時(shí)間。因此,從7.0 系列編譯工具開始,TI 提供了一套內(nèi)存優(yōu)化工具 (Cache Layout Tools) 來幫助用戶輕松快捷地解決該問題。

          該工具的原理是在用戶進(jìn)行程序編譯時(shí)打開生成分析信息選項(xiàng),編譯器會(huì)自動(dòng)加入分析記錄代碼到用戶程序里,之后用戶在TI DSP simulator 或者DSP 芯片上運(yùn)行該可執(zhí)行文件,內(nèi)置的分析代碼會(huì)自動(dòng)記錄用戶的函數(shù)調(diào)用關(guān)系及調(diào)用次數(shù)。運(yùn)行的案例越多,記錄的信息會(huì)更詳細(xì),優(yōu)化的效果也就越好。

          在得到函數(shù)運(yùn)行時(shí)信息以后,就可以使用編譯器工具對(duì)其進(jìn)行分析,生成函數(shù)排布的順序,最后將此排布順序輸入到編譯器里重新編譯原代碼,生成的可執(zhí)行文件就已經(jīng)優(yōu)化過內(nèi)存排布,具體的操作可以參照以下實(shí)例。

          4. 實(shí)例教程

          該實(shí)例主要由三個(gè)C 文件組成,

          實(shí)例中使用DSP 計(jì)數(shù)器 TSCL 來統(tǒng)計(jì)cycle 數(shù),子函數(shù)放在sub 目錄下。

          使用實(shí)例的步驟如下,

          1. 編譯代碼

          使用TI 編譯器對(duì)該實(shí)例進(jìn)行編譯,為了產(chǎn)生用于profile 的信息,需要在編譯時(shí)增加 -- gen_profile_info 選項(xiàng)。如果使用命令還形式,命令行下運(yùn)行Compile.bat 文件,cl6x 的具體參數(shù)可以參考spru186 和spru187 兩篇文檔,一般可以在編譯器的安裝目錄下找到他們,如C:Program Files (x86)Texas InstrumentsC6000 Code Generation Tools 7.3.9doc。


          上一頁(yè) 1 2 下一頁(yè)

          關(guān)鍵詞: C6000

          評(píng)論


          相關(guān)推薦

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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();