国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

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

發(fā)布時(shí)間:2015-11-24 09:27    發(fā)布者:designapp
關(guān)鍵詞: TI , C6000
  摘要
  在C6000 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ì)C6000代碼進(jìn)行優(yōu)化,通過這一系列的工具,可以很輕松的完成L1P Cache性能的提升,本文詳細(xì)介紹了該工具的使用方法。
  1.引言
  目前,使用TI DSP的用戶越來越多,在C6000系列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)如下圖所示。
  


  Figure 1.C6000存儲(chǔ)器結(jié)構(gòu)
  存儲(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)長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è)極端情況。
  


  Figure 2. 函數(shù)的不正確排布
  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的部分。
  


  Figure 3. 函數(shù)的正確排布
  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 Instruments\C6000 Code Generation Tools 7.3.9\doc。
  


  同時(shí)在目錄下生成OBJ和ASM文件,這個(gè)和我們的實(shí)驗(yàn)關(guān)系不大,可以不用關(guān)注。out文件是一會(huì)需要下載到芯片里運(yùn)行的可執(zhí)行文件,而map文件用于幫助我們定位profile信息存放的內(nèi)存地址。
  如果用戶使用CCS編譯工具,則需要在Build的屬性里指定Feedback選項(xiàng),然后正常編譯即可生成攜帶分析代碼的可執(zhí)行文件。
  


  Figure 4. CCS初編譯的選項(xiàng)
                               
                  2.獲取分析信息
  根據(jù)用戶獲取分析數(shù)據(jù)的不同,這里有兩種方法,第一種方法適用于持續(xù)運(yùn)行的程序,比如在基于SYS/BIOS的程序里,有些任務(wù)是以循環(huán)的方式存在的,這時(shí)用戶需要自己從DSP內(nèi)存里讀取分析數(shù)據(jù)。
  首先打開map文件,可以找到.ppdata段的內(nèi)存地址,這個(gè)地址就是profile信息存放處,在例子中
  ppdata 0 0081fecc 00000034 UNINITIALIZED
  ppdata段位于0x0081fecc這個(gè)地址,長度是34個(gè)byte。
  啟動(dòng)CCS,連接EVM板,下載out文件到DSP上,在main函數(shù)末尾加上調(diào)試斷點(diǎn),可以讓程序到這里暫停(實(shí)際上,在用戶代碼中,可以把斷點(diǎn)設(shè)置在需要的任何地方,profile的信息是實(shí)時(shí)更新的)。
  


  運(yùn)行該程序,到達(dá)斷點(diǎn)后,在View菜單里打開memory browser,將地址設(shè)定為0x0081fecc, 可以讀到.ppdata 的信息,參考以下步驟將其存到工程目錄下。
  1)選取Save Memory
  


  2)存放路徑
  


  3)確定數(shù)據(jù)地址和長度,如下圖
  


  4)修改dat文件
  打開剛才存下的dat文件,注意到文件頭的數(shù)據(jù)長度是以32比特字為單位的,我們需要以8比特字節(jié)為單位,如
  1651 9 81fecc 0 d 1
  修改為
  1651 9 81fecc 0 34 1
  5)轉(zhuǎn)換文件格式
  對(duì)剛才的運(yùn)行profile信息進(jìn)行分析,得到優(yōu)化后的cmd 內(nèi)存排布文件,該文件內(nèi)容如下,用戶可根據(jù)自己的程序進(jìn)行修改
  


  如果是大端,則將-le選項(xiàng)改為-be選項(xiàng)。
  第二種方法,針對(duì)于只需運(yùn)行一次流程的程序,CCS可以自動(dòng)生成pdat文件,需要注意的是,生成pdat文件的分析代碼是在用戶程序結(jié)束也就是exit()程序執(zhí)行時(shí)進(jìn)行,因此用戶要保證自己的程序能完整運(yùn)行到主函數(shù)出口結(jié)束,否則無法生成pdat文件,需要用第一種方法來獲取數(shù)據(jù)。
  3.重新編譯代碼
  首先使用pdd6x從數(shù)據(jù)文件里提取prf文件作為重編譯的輸入文件
  


  在命令行形式下,可以以以下形式調(diào)用輸入文件生成csv文件,
  


  在CCS環(huán)境下,只需要在CCS里指定需要的數(shù)據(jù)文件后產(chǎn)生csv文件,
  


  Figure 5.CCS重編譯的選項(xiàng)
  通過調(diào)用clt6x生成內(nèi)存排布
  


  將輸出的pfo.cmd加入到項(xiàng)目的cmd文件重新編譯輸出優(yōu)化后的out文件,cache優(yōu)化到此完成。對(duì)比優(yōu)化結(jié)果,對(duì)于TCP/IP的例子應(yīng)用上,CLT帶來了接近20%的提升,對(duì)于視頻編碼等應(yīng)用CLT也帶來了5%左右的提升。而且,用戶代碼量越大,則CLT可能帶來的提升越明顯。
  4.結(jié)論
  通過使用CLT工具,可以方便快捷的對(duì)用戶代碼的Cache 分配進(jìn)行優(yōu)化,用戶不需要了解DSP Cache分配的詳細(xì)信息,只需要在Simulator或者硬件板卡上運(yùn)行定制的代碼,就可以方便快捷地得到Cache的詳細(xì)信息,并自動(dòng)根據(jù)這些信息對(duì)程序在內(nèi)存的分布進(jìn)行配置已達(dá)到提升性能的效果。
  參考文獻(xiàn)
  1.TMS320C66x DSP CorePac User Guide(SPRUGW0)
  2.KeyStone Architecture Multicore Shared Memory Controller(MSMC)User Guide(SPRUGW7)
  3.KeyStone Architecture DDR3 Memory Controller User Guide(SPRUGV8)
  4.Cache Layout Tools Example
                               
               
本文地址:http://www.qingdxww.cn/thread-157374-1-1.html     【打印本頁】

本站部分文章為轉(zhuǎn)載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀點(diǎn)和對(duì)其真實(shí)性負(fù)責(zé);文章版權(quán)歸原作者及原出處所有,如涉及作品內(nèi)容、版權(quán)和其它問題,我們將根據(jù)著作權(quán)人的要求,第一時(shí)間更正或刪除。
zzxydedu118 發(fā)表于 2015-11-26 15:14:50
輕松就業(yè),高薪實(shí)習(xí),讓眾多有志往單片機(jī)PLC、ARM/嵌入式系統(tǒng)、Linux、FPGA方向發(fā)展的朋友迅速提升職業(yè)技能,
經(jīng)過系統(tǒng)提升后,保證就業(yè)5-10K.更多疑問咨詢深圳信盈達(dá):Q483059208  13083712301袁老師!
您需要登錄后才可以發(fā)表評(píng)論 登錄 | 立即注冊(cè)

廠商推薦

  • Microchip視頻專區(qū)
  • 利用模擬開發(fā)工具生態(tài)系統(tǒng)進(jìn)行安全電路設(shè)計(jì)
  • 我們是Microchip
  • 你仿真過嗎?使用免費(fèi)的MPLAB Mindi模擬仿真器降低設(shè)計(jì)風(fēng)險(xiǎn)
  • 更佳設(shè)計(jì)的解決方案——Microchip模擬開發(fā)生態(tài)系統(tǒng)
  • 貿(mào)澤電子(Mouser)專區(qū)

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權(quán)所有   京ICP備16069177號(hào) | 京公網(wǎng)安備11010502021702
快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲日本视频在线观看 | 五月婷婷之综合激情 | 丝袜美腿视频一区二区三区 | 韩国日本一区二区 | 麻豆精品免费视频入口 | 精品日韩二区三区精品视频 | aaa毛片在线 | 九九热九九热 | 国内精品 第一页 | 99热这里只有精品99 | 91免费看片 | 99毛片 | 青青草国产免费久久久下载 | 亚洲国产日韩欧美一区二区三区 | 久久网精品视频 | 日韩视频 中文字幕 视频一区 | 中文国产成人精品久久96 | 亚洲一区二区三区免费视频 | 日韩专区一区 | 亚州精品视频 | 国产欧美一区二区三区免费看 | 欧美一级精品 | 四虎影视成人永久在线观看 | 亚洲日韩精品欧美一区二区 | 精品在线观看视频 | 新四虎影院 | 久久精品免视着国产成人 | 日日夜夜天天 | 草逼视频下载 | 综合色天天 | 91香蕉视频导航 | 最近最新视频中文字幕4 | 黑人视频在线观看 | 免费毛片视频网站 | 毛片特级 | 日本xxxxx高清免费观看 | 国产最新精品精品视频 | 日韩视频一区二区三区 | 正在播放91大神调教偷偷 | 青久久| 精品日韩欧美一区二区三区 |