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

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于C6000系列DSP的MPEG-4編碼器實(shí)現(xiàn)

          基于C6000系列DSP的MPEG-4編碼器實(shí)現(xiàn)

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

            ·可以將兩個(gè)16位數(shù)據(jù)或者四個(gè)8位數(shù)據(jù)合并成一個(gè)32位數(shù)據(jù),以提高存取效率;

            ·必須靜態(tài)地知道每條操作指令執(zhí)行需要的時(shí)鐘周期,這樣才能取得該操作的正確結(jié)果;

            ·這種結(jié)構(gòu)的處理器不能處理動(dòng)態(tài)事件,例如Cache突然消失;

            ·對(duì)于多周期才能完成的指令,在正確計(jì)算的基礎(chǔ)上,一定要提前執(zhí)行,以免出現(xiàn)一條指令必須等上一條指令執(zhí)行結(jié)束才能執(zhí)行的情況。

            下面結(jié)合C6000系列的指令及其具體資源情況,以中的算法為例說(shuō)明如何利用這兩種結(jié)構(gòu)設(shè)計(jì)出高效的代碼。

            3.1 利用流水線結(jié)構(gòu)設(shè)計(jì)程序

            流水線是指指令的處理可分為幾個(gè)子操作,每個(gè)子操作由不同的單元完成。對(duì)每個(gè)單元來(lái)說(shuō),每隔一個(gè)時(shí)鐘周期可進(jìn)入一條新指令,在同一時(shí)間內(nèi)不同單元可以同時(shí)處理多條指令。在C6000中B(.unit)lable是一條跳轉(zhuǎn)指令,它的執(zhí)行周期為7個(gè)時(shí)鐘周期,也就是說(shuō),在安排這條指令之后6個(gè)時(shí)鐘周期才能使程序轉(zhuǎn)移到lable處執(zhí)行,以程序1為例說(shuō)明如何利用流水線結(jié)構(gòu)設(shè)計(jì)程序。該程序的執(zhí)行順序如下:0000→0004→0008→000C-0010→0014→0008→000C...從程序執(zhí)行順序知道,要想在執(zhí)行完0014處的指令后跳轉(zhuǎn)到LOOP處,就應(yīng)該在0014的前6個(gè)時(shí)鐘周期處安排這條指令;如果不提前安排好這條指令,而是在0014后放置這條指令,就需要使CPU等待6個(gè)時(shí)鐘周期才能跳到LOOP處,從而使程序運(yùn)行效率降低。從這個(gè)程序的執(zhí)行順序可以看出,必須提前知道每一條指令的運(yùn)行周期數(shù),并提前安排該指令,才能達(dá)到減少等待周期、提高程序效率的效果。C6000系列指令集包括許多多時(shí)鐘周期的指令,如跳轉(zhuǎn)指令、數(shù)據(jù)訪問(wèn)指令等。編碼算法需要頻繁地訪問(wèn)大量數(shù)據(jù),并且有很多循環(huán),無(wú)論是數(shù)據(jù)訪問(wèn)還是循環(huán)都要用到多時(shí)鐘周期指令。以MEPG-4的DCT算法為例,每一個(gè)8×8的塊變換需要用16次的跳轉(zhuǎn)指令和256次數(shù)據(jù)訪問(wèn)指令,由此可見(jiàn)流水線在程序優(yōu)化中所起的作用。



          關(guān)鍵詞: DSP MPEG-4 視頻編碼

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