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

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > G.723.1算法在DSP上的優(yōu)化

          G.723.1算法在DSP上的優(yōu)化

          作者: 時(shí)間:2010-04-17 來(lái)源:網(wǎng)絡(luò) 收藏

            3.3匯編編程的

            線性匯編是TI提供的一種匯編語(yǔ)言,其指令系統(tǒng)和匯編語(yǔ)言的指令系統(tǒng)完全相同,但在編寫時(shí)不需要指定寄存器和操作單元,也不需要考慮延時(shí)的問(wèn)題,因此編寫線性匯編相對(duì)要容易一些。

            經(jīng)過(guò)以上的后,音頻編碼程序在DM642上的運(yùn)行狀況有了很大改善,但是經(jīng)測(cè)試仍然沒(méi)有到達(dá)可以接收的程度,而高級(jí)語(yǔ)言的效率幾乎發(fā)揮到了極致,所以在具體分析耗時(shí)大的模塊特點(diǎn)后,采用線性匯編語(yǔ)言重新編寫C代碼的低效率段程序,迸一步提高程序的執(zhí)行效率。

            在編寫線性匯編代碼的過(guò)程中,為了提高代碼執(zhí)行效率,我們需要遵循以下原則:

            (1)寫并行代碼:通過(guò)使用匯編指令并行執(zhí)行的方法減少循環(huán)內(nèi)的執(zhí)行周期數(shù),優(yōu)化線性匯編代碼。這里的關(guān)鍵問(wèn)題是弄清指令相關(guān)性,只有不相關(guān)的指令才能并行執(zhí)行。辨別指令是否相關(guān).可以使用相關(guān)圖。

            (2)處理跳轉(zhuǎn)指令和轉(zhuǎn)移指令:匯編程序的一大特點(diǎn)就是頻繁地跳轉(zhuǎn),當(dāng)滿足不同的條件時(shí),要求程序進(jìn)行不同的操作,或跳到相應(yīng)的位置。對(duì)于“大于”、“大于等于”、“小于”、“小于等于”等較為接近的邏輯判斷和處理,應(yīng)慎重對(duì)待,否則將產(chǎn)生邏輯性錯(cuò)誤,并且很難調(diào)試。當(dāng)發(fā)生溢出需進(jìn)行相應(yīng)處理時(shí),這種現(xiàn)象尤為突出。

            (3)盡量減少循環(huán)體內(nèi)的指令數(shù)[7]:G.72.1的實(shí)現(xiàn),有許多是在循環(huán)內(nèi)部完成的,有些地方如同定碼本搜索過(guò)程中,為了確定四個(gè)非0脈沖的位置和幅度,還用到了多重循環(huán)。在循環(huán)內(nèi)部,特別是在嵌套較深的循環(huán)內(nèi)部,減少一條指令可以大大降低程序的操作次數(shù)。例如。對(duì)于一個(gè)每重循環(huán)8次的四重嵌套循環(huán),在最內(nèi)層循環(huán)每減少一條指令,整個(gè)程序可以少執(zhí)行84=4096語(yǔ)句。因此在設(shè)計(jì)程序時(shí),能夠放在循環(huán)體外執(zhí)行的語(yǔ)句.盡量放在循環(huán)體外執(zhí)行。

            (4)展開(kāi)程序體:盡在一定條件下,盡量展開(kāi)程序,以減少子程序的調(diào)用和返回次數(shù),犧牲空問(wèn)換取時(shí)間。

            經(jīng)匯編優(yōu)化器優(yōu)化后,代碼效率比C語(yǔ)言直接編譯有明顯提高。

            4 優(yōu)化工作的創(chuàng)新點(diǎn)

            在對(duì)的優(yōu)化中.本文在前人研究成果的基礎(chǔ)上,針對(duì) C64xx系列芯片提}n了一些有價(jià)值的新方法。這些創(chuàng)新點(diǎn)在不同程度上提高了代碼的優(yōu)化速度和執(zhí)行效率,在語(yǔ)音編解碼的實(shí)時(shí)實(shí)現(xiàn)中起到了關(guān)鍵性作用。下面,本文將以舉例的方式闡明一些經(jīng)典的方法。

            (1)編寫連接命令文件.cmd

            明確了系統(tǒng)的程序和數(shù)據(jù)映射地址后,編寫連接器命令文件將部分調(diào)用次數(shù)較多的函數(shù)、堆棧段、數(shù)據(jù)段放入內(nèi)存:cmd文件內(nèi)容如下:

            一L\evmdm642_echocfg.cmd //連接CCS提供的連接命令文件

            SECTIONS

            {

            .tahles>SDRAM

           ?。甤init>ISRAM //將變量初值表放入內(nèi)存

            . far >SDRAM

            .const>ISRAM //將常數(shù)段放入內(nèi)存

           ?。畃init>SDRAM

            . tin >SDRAM

            .text>SDRAM

           ?。畉est >ISRAM

            }

            一levmdm642bsl.lib     //連接庫(kù)文件

            一levmdm642_edma_aic23.164 //連接驅(qū)動(dòng)程序的庫(kù)文件

            一lc6xlx_edma_mcasp.J64 //連接串口McASP的庫(kù)文件

            其中.test是筆者在C程序內(nèi)用#pragma CODE_SECTION或DATA_SECTION自定義的段。

            (2)高速緩沖寄存器Cache的使用

            Cache即高速緩存,是位于CPU和片內(nèi)存儲(chǔ)器之間的規(guī)模小速度快的存儲(chǔ)器。Cache的工作原理是保存CPU中最常用的數(shù)據(jù)。當(dāng)Cache中保存著CPU要讀寫的數(shù)據(jù)時(shí),CPU直接訪問(wèn)Cache。由于Cache的速度與CPU相當(dāng),CPU能在零等待狀態(tài)下迅速地實(shí)現(xiàn)數(shù)據(jù)存取。只有在Cache中不舍有CPU所需的數(shù)據(jù)時(shí)CPU才去訪問(wèn)片內(nèi)存儲(chǔ)器。因此Cache的有效利用對(duì)整個(gè)程序速度的提高有著舉足輕重的作用。在主函數(shù)中加入以下代碼,使Cache使能:

            CACHE_clean (CACHE_L2ALL,0,0}; //清除Cache內(nèi)原有內(nèi)容

            CACHE_setL2Mode (CACHE_64KCACHE); //設(shè)置Cache的大小為64K

            CACHE_enableCaching (CACHE_EMIFA_CE00); //Cache使能

            添加以上代瑪后,測(cè)試速度由原來(lái)的20幀/s提高到了400幀/s。提高了將近20倍。

            5 結(jié)束語(yǔ)

            本文詳緇分紹了標(biāo)準(zhǔn)的代碼優(yōu)化工作,重點(diǎn)描述了代碼優(yōu)化的方法和本課題的創(chuàng)新點(diǎn).對(duì)于中的一些函數(shù)提出了獨(dú)創(chuàng)性改寫方法?;诰€性匯編的優(yōu)化以及Cache的有效利用使本課題的工作取得了顯著成果,在沒(méi)有降低音質(zhì)的情況下,實(shí)現(xiàn)了DSP的語(yǔ)音實(shí)時(shí)編解碼。

            本文作者創(chuàng)新點(diǎn):在對(duì)的優(yōu)化中,針對(duì)TMS320DM 642 DSP系列芯片提出了一些有價(jià)值的新方法。例如:編寫連接命令文件.cmd和高速緩沖寄存器Cache的使用。這些創(chuàng)新點(diǎn)在不同程度上提高了代碼的優(yōu)化速度和執(zhí)行效率,在語(yǔ)音編解碼的DSP實(shí)時(shí)實(shí)現(xiàn)中起到了關(guān)鍵性作用。


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

          關(guān)鍵詞: 優(yōu)化 DSP 算法 G.723.1

          評(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); })();