日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > 嵌入式 > 嵌入式硬件
[導(dǎo)讀]摘 要在C6000 DSP 的開發(fā)過程中,優(yōu)化是必不可少的一個環(huán)節(jié),根據(jù)對象不同可以分為系統(tǒng),算法,代碼以及內(nèi)存優(yōu)化。通常,開發(fā)者熟悉自己的代碼,會從前三個方面修改以獲得整

摘 要

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

1. 引言

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

4. 實(shí)例教程

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

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

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

1. 編譯代碼

使用TI 編譯器對該實(shí)例進(jìn)行編譯,為了產(chǎn)生用于profile 的信息,需要在編譯時增加 -- 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。

[!--empirenews.page--]

同時在目錄下生成OBJ 和ASM 文件,這個和我們的實(shí)驗(yàn)關(guān)系不大,可以不用關(guān)注。

out 文件是一會需要下載到芯片里運(yùn)行的可執(zhí)行文件,而map 文件用于幫助我們定位profile 信息存放的內(nèi)存地址。

如果用戶使用CCS 編譯工具,則需要在Build 的屬性里指定Feedback 選項(xiàng),然后正常編譯即可生成攜帶分析代碼的可執(zhí)行文件。

2. 獲取分析信息

根據(jù)用戶獲取分析數(shù)據(jù)的不同,這里有兩種方法,第一種方法適用于持續(xù)運(yùn)行的程序,比如在基于SYS/BIOS 的程序里,有些任務(wù)是以循環(huán)的方式存在的,這時用戶需要自己從DSP 內(nèi)存里讀取分析數(shù)據(jù)。

首先打開map 文件,可以找到.ppdata 段的內(nèi)存地址,這個地址就是profile 信息存放處,在例子中

.ppdata 0 0081fecc 00000034 UNINITIALIZED

.ppdata 段位于0x0081fecc 這個地址,長度是34 個byte。

啟動CCS,連接EVM 板,下載out 文件到DSP 上,在main 函數(shù)末尾加上調(diào)試斷點(diǎn),可以讓程序到這里暫停(實(shí)際上,在用戶代碼中,可以把斷點(diǎn)設(shè)置在需要的任何地方,profile 的信息是實(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)換文件格式

對剛才的運(yùn)行profile 信息進(jìn)行分析,得到優(yōu)化后的cmd 內(nèi)存排布文件,該文件內(nèi)容如下,用戶可根據(jù)自己的程序進(jìn)行修改

如果是大端,則將-le 選項(xiàng)改為-be 選項(xiàng)。

第二種方法,針對于只需運(yùn)行一次流程的程序,CCS 可以自動生成pdat 文件,需要注意的是,生成pdat 文件的分析代碼是在用戶程序結(jié)束也就是exit()程序執(zhí)行時進(jìn)行,因此用戶要保證自己的程序能完整運(yùn)行到主函數(shù)出口結(jié)束,否則無法生成pdat 文件,需要用第一種方法來獲取數(shù)據(jù)。

3. 重新編譯代碼

首先使用pdd6x 從數(shù)據(jù)文件里提取prf 文件作為重編譯的輸入文件

 

將輸出的pfo.cmd 加入到項(xiàng)目的cmd 文件重新編譯輸出優(yōu)化后的out 文件,cache 優(yōu)化到此完成。

對比優(yōu)化結(jié)果,對于TCP/IP 的例子應(yīng)用上,CLT 帶來了接近20%的提升,對于視頻編碼等應(yīng)用CLT 也帶來了5%左右的提升。而且,用戶代碼量越大,則CLT 可能帶來的提升越明顯。

4. 結(jié)論

通過使用CLT 工具,可以方便快捷的對用戶代碼的Cache 分配進(jìn)行優(yōu)化,用戶不需要了解DSP Cache 分配的詳細(xì)信息,只需要在Simulator 或者硬件板卡上運(yùn)行定制的代碼,就可以方便快捷地得到Cache 的詳細(xì)信息,并自動根據(jù)這些信息對程序在內(nèi)存的分布進(jìn)行配置已達(dá)到提升性能的效果。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: 驅(qū)動電源

在工業(yè)自動化蓬勃發(fā)展的當(dāng)下,工業(yè)電機(jī)作為核心動力設(shè)備,其驅(qū)動電源的性能直接關(guān)系到整個系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動勢抑制與過流保護(hù)是驅(qū)動電源設(shè)計(jì)中至關(guān)重要的兩個環(huán)節(jié),集成化方案的設(shè)計(jì)成為提升電機(jī)驅(qū)動性能的關(guān)鍵。

關(guān)鍵字: 工業(yè)電機(jī) 驅(qū)動電源

LED 驅(qū)動電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個照明設(shè)備的使用壽命。然而,在實(shí)際應(yīng)用中,LED 驅(qū)動電源易損壞的問題卻十分常見,不僅增加了維護(hù)成本,還影響了用戶體驗(yàn)。要解決這一問題,需從設(shè)計(jì)、生...

關(guān)鍵字: 驅(qū)動電源 照明系統(tǒng) 散熱

根據(jù)LED驅(qū)動電源的公式,電感內(nèi)電流波動大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關(guān)鍵字: LED 設(shè)計(jì) 驅(qū)動電源

電動汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動汽車的核心技術(shù)之一是電機(jī)驅(qū)動控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機(jī)驅(qū)動系統(tǒng)中的關(guān)鍵元件,其性能直接影響到電動汽車的動力性能和...

關(guān)鍵字: 電動汽車 新能源 驅(qū)動電源

在現(xiàn)代城市建設(shè)中,街道及停車場照明作為基礎(chǔ)設(shè)施的重要組成部分,其質(zhì)量和效率直接關(guān)系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進(jìn)步,高亮度白光發(fā)光二極管(LED)因其獨(dú)特的優(yōu)勢逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關(guān)鍵字: 發(fā)光二極管 驅(qū)動電源 LED

LED通用照明設(shè)計(jì)工程師會遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關(guān)鍵字: LED 驅(qū)動電源 功率因數(shù)校正

在LED照明技術(shù)日益普及的今天,LED驅(qū)動電源的電磁干擾(EMI)問題成為了一個不可忽視的挑戰(zhàn)。電磁干擾不僅會影響LED燈具的正常工作,還可能對周圍電子設(shè)備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...

關(guān)鍵字: LED照明技術(shù) 電磁干擾 驅(qū)動電源

開關(guān)電源具有效率高的特性,而且開關(guān)電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機(jī)重量也有所下降,所以,現(xiàn)在的LED驅(qū)動電源

關(guān)鍵字: LED 驅(qū)動電源 開關(guān)電源

LED驅(qū)動電源是把電源供應(yīng)轉(zhuǎn)換為特定的電壓電流以驅(qū)動LED發(fā)光的電壓轉(zhuǎn)換器,通常情況下:LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: LED 隧道燈 驅(qū)動電源
關(guān)閉