《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 業(yè)界動態(tài) > 應(yīng)用IA MMXTM技術(shù)的離散余弦變換

應(yīng)用IA MMXTM技術(shù)的離散余弦變換

2009-02-03
作者:李維釗 王廣偉

  摘 要: 在簡要介紹IA(Intel Architecture) MMXTM技術(shù)的基礎(chǔ)上,重點討論了應(yīng)用IA MMXTM技術(shù)的DCT快速算法及其優(yōu)越性能。
  關(guān)鍵詞: Intel體系結(jié)構(gòu) IA MMXTM技術(shù) 快速算法 離散余弦變換(DCT)和離散余弦反變換(IDCT)


1 IA MMXTM技術(shù)簡介
  個人計算機(jī)處理數(shù)據(jù)的復(fù)雜度和數(shù)量的急劇增長,對微處理器的性能提出了更高的要求。其中以視頻、3D圖形、動畫、音頻和虛擬現(xiàn)實為特征的應(yīng)用更是對微處理器的性能提出嶄新的要求。IA MMXTM技術(shù)應(yīng)運而生。它的設(shè)計目的就是用來加強(qiáng)多媒體和通信方面的應(yīng)用。這一技術(shù)包括新的指令和數(shù)據(jù)類型。IA MMXTM技術(shù)介紹了一些新的通用指令,這些指令以并行處理的方式完成對一個64位數(shù)據(jù)組中的多個數(shù)據(jù)元素的操作。IA MMXTM指令集在不增加新的模式并保持對操作系統(tǒng)的透明性的基礎(chǔ)上,形成了一個簡單而靈活的軟件模型。IA MMXTM技術(shù)定義了57條新的指令、8個64位寬度的IA MMXTM 寄存器和四種新數(shù)據(jù)類型。
  IA MMXTM 技術(shù)最重要的特點是單指令多操作數(shù)據(jù)(SIMD),這一技術(shù)允許一條指令并行處理多個數(shù)據(jù)元素。正是這種并行處理的能力極大地提高了應(yīng)用程序的性能。IA MMXTM指令處理定點數(shù),多個整數(shù)字節(jié)、字或雙字被組合在一個單獨的64位IA MMXTM寄存器中。定點值的小數(shù)點位置由程序員自己決定,這樣保證了處理數(shù)據(jù)精度的靈活性。在IA MMXTM技術(shù)中支持有符號和無符號的定點整數(shù)字節(jié)、字、雙字和四字的各種運算。
  Intel Pentium處理器是先進(jìn)的超標(biāo)量處理器,它建立在兩個通用整數(shù)流水線和一個可流水作業(yè)的浮點處理單元之上。一個軟件透明的動態(tài)分支預(yù)測機(jī)制使得流水線阻塞降低到最小。帶有IA MMXTM 技術(shù)的Intel Pentium處理器給流水線加入新的處理階段。Intel Pentium處理器能在一個時鐘周期內(nèi)執(zhí)行兩條指令,每條流水線執(zhí)行一條指令。第一條邏輯流水線稱為U流水線,第二條稱為V流水線。在任何指令的解碼期間,下兩條指令被檢查,如果可能,它們被分別送入U、V流水線;否則,下一條指令送入U流水線,而沒有指令送入V流水線。IA MMXTM技術(shù)指令通過指令調(diào)度可以充分利用Intel Pentium處理器的雙流水線機(jī)制以提高程序的運行速度。IA MMXTM 寄存器和狀態(tài)是IA浮點寄存器和狀態(tài)的別名,這保證了IA MMXTM技術(shù)與現(xiàn)有的操作系統(tǒng)和應(yīng)用的完全兼容性。但是應(yīng)用浮點操作和IA MMXTM指令混合編程時,浮點操作指令流和IA MMXTM指令流必須分開并且在執(zhí)行完離開時要進(jìn)行必要的清理工作,在IA MMXTM技術(shù)指令后要寫一條EMMS指令,在浮點操作完成后要清空浮點寄存器堆棧。IA MMXTM技術(shù)指令集如表1所示。


  由于IA 體系的復(fù)雜性和IA MMXTM技術(shù)的本身特點,開發(fā)一個應(yīng)用IA MMXTM技術(shù)的應(yīng)用程序?qū)⑹潜容^復(fù)雜的,涉及到許多方面。其中主要有應(yīng)用的特點是否適應(yīng)IA MMXTM技術(shù)的要求,算法是否具有強(qiáng)的并行特點。這是決定應(yīng)用IA MMXTM技術(shù)的前提條件。具體在編程時要進(jìn)行優(yōu)化,一般的優(yōu)化策略包括地址生成互鎖(AGI)優(yōu)化、代碼及數(shù)據(jù)對齊、避免部分寄存器阻塞、分支預(yù)測信息和指令的合理調(diào)度。另外指令選擇優(yōu)化、內(nèi)存優(yōu)化和高速緩存優(yōu)化也極大地制約了應(yīng)用的性能。
2 圖象處理中的DCT和IDCT
  在圖象處理中,離散余弦變換(DCT)及其反變換(IDCT)一直是運動估計/補(bǔ)償變換編解碼系統(tǒng)的速度瓶頸。盡管出現(xiàn)了大量的快速算法,但是由于圖象處理數(shù)據(jù)量非常大,使得這一系統(tǒng)在實時應(yīng)用中性能不佳。注意到圖象處理的DCT中,輸入數(shù)據(jù)和輸出數(shù)據(jù)都是整數(shù),基于這一特點本文介紹了應(yīng)用奔騰處理器IA MMXTM技術(shù),選擇特定的快速算法,將8×8塊的DCT和IDCT的速度提高了3倍以上。限于篇幅,這里只介紹DCT。
2.1采用行列快速算法DCT
  在計算二維N×N點DCT時、一種常用的算法是采用行列快速算法。該算法首先按行計算N個一維DCT,再按列計算N個一維DCT,從而把乘法的計算量減少到直接計算的一半,其算法規(guī)律性強(qiáng),便于程序?qū)崿F(xiàn)。
  c(u)=α(u)∑f(n)cos[πu(2n+1)/2N]        (1)
  (1)式給出了計算公式、這里、α(0)=1/、 α(u)=,u≠0。直接計算一個1D N點DCT的乘法次數(shù)為N2次。通過研究DCT的特點,Chun-Yen Lu和Kuei-Ann Wen提出了系數(shù)選擇8點一維DCT模式,現(xiàn)在簡單介紹其方法。實數(shù)序列{f(n):n=0、1、...、N-1}的1D DCT-II可以表述如下:
  在這里我們設(shè)定N=8、對于(1)式我們定義如下的系數(shù)矩陣F(n)和數(shù)據(jù)矩陣D(n):
  

  
  從(2)式可以看出,1D8點DCT的計算可以分解為以下幾步:
  ·計算數(shù)據(jù)向量D;
  ·通過排列矩陣P重新排列D0,D1,D2和D3,即:D’=PD;
  ·計算SFD’,相應(yīng)的余弦系數(shù)集通過選擇矩陣Si從F中選擇。
  通過這一過程,我們不難看出,系數(shù)選擇模式1D 8點DCT具有簡明的規(guī)律性,便于程序?qū)崿F(xiàn)。
2.2 算法的IA MMXTM技術(shù)實現(xiàn)
2.2.1 對上述算法的改進(jìn)

  簡單地利用(2)式來計算DCT,并不能充分發(fā)揮IA MMXTM技術(shù)的優(yōu)越性能,我們對(2)式做如下變形:
  

  u=0、1...7。[D′(u)]T是8點數(shù)據(jù)的規(guī)律性組合(見D(u)、區(qū)別是分別去掉了系數(shù)1、p(n)、q(n)、r(n)),是DCT的固定部分,對于不同數(shù)據(jù)的DCT保持不變。 從而將DCT分為固定部分[[SuF] [PuDc(u)]]T,和數(shù)據(jù)部分D′(u)。這樣計算時可以首先計算[[SuF][PuDc(u)]]T并制成表存儲起來,程序中通過查表獲取乘法因子。從而使得1D8點DCT的計算變得適合IA MMXTM技術(shù)的實現(xiàn)。
2.2.2 將浮點運算轉(zhuǎn)換為整數(shù)運算
  雖然通過算法的改進(jìn)使之適合程序?qū)崿F(xiàn)、但是在算法中仍然存在浮點乘法、對于數(shù)字視頻,其象素的各個分量一般為8位整數(shù),為了消除浮點運算,將余弦系數(shù)擴(kuò)大65536倍,相當(dāng)于左移16位,因為這里的余弦系數(shù)都小于1/2,因此擴(kuò)大后的數(shù)據(jù)不會超出16位有符號短整型數(shù)據(jù)的范圍。這樣就把浮點運算轉(zhuǎn)化為整型運算。制定如下數(shù)組:
  short A[8][4]={{iA1、iA1、iA1、iA1}、{iC1、iC2、iC3、iC4}、{iB1、iB2、-iB2、-iB1}、{iC2、-iC4、-iC1、-iC3}、{iA1、-iA1、-iA1、iA1}、{iC3、-iC1、iC4、iC2}、{iB2、-iB1、iB1、-iB2}、{iC4、-iC3、iC2、-iC1}};
  其中iA1=A1×65536,iBu=Bu×65536,iCj=Cj×65536,u=1,2;j=1,2,3,4。注意到該數(shù)組共占用8×4×2=64個字節(jié),正好是奔騰處理器高速緩存線的整數(shù)倍,并且要把數(shù)組的起始位置放在32字節(jié)邊界上,這樣就可以優(yōu)化高速緩存的線讀入。
2.2.3 輸入數(shù)據(jù)格式
  假設(shè)輸入是按自然順序的8點數(shù)據(jù),由D(n)的定義、在處理前要對后四點進(jìn)行反序調(diào)整、既將前四點按順序放入MMXTM寄存器中、并將其擴(kuò)展成16位數(shù)據(jù)、將后四位反序后以同樣的格式放入另一個MMXTM寄存器中。這樣可以用以下三條指令得出f(i)±f(7-i)、i=0、1、2、3。(設(shè)前四個放在MM0中、后四個放在MM2中)。
  MOVQ MM1、MM0
  PADDSW MM0、MM2 //MM0存放四個和值
  PSUBSW MM1、MM2 //MM1存放四個差值
  這樣、MM0和MM1為分別對應(yīng)n為偶數(shù)和奇數(shù)的情況。調(diào)整好輸入數(shù)據(jù)的格式將為IA MMXTM技術(shù)指令的應(yīng)用提供極大方便。
2.2.4 乘法運算與精度問題
  通過以上的準(zhǔn)備工作,接下來就是依次計算8個DCT系數(shù)C(u)(u=0、1...7)了。這涉及到指令選擇的優(yōu)化問題,從公式(3)我們知道,對于每個DCT系數(shù)C(u)是四個并行16位×16位的整數(shù)乘積的和,為了保證精度要求結(jié)果保留32位。在IA MMXTM技術(shù)指令集中,PMADDWD 正好完成這一并行乘法運算和兩個乘積的和值計算,只要再做一次和就可以得出結(jié)果。另外,要根據(jù)n是偶數(shù)或奇數(shù)選擇f(i)±f(7-i)。下面是PMADDWD的操作示例:


  在做完乘法和加法以后,要對數(shù)據(jù)進(jìn)行右移16位,相當(dāng)于除以65536,這樣就將數(shù)據(jù)還原為其真實值了。如果要進(jìn)一步提高精度可以對數(shù)據(jù)進(jìn)行四舍五入處理,關(guān)于這一點在此不做詳細(xì)說明。鑒于程序流程簡單明了,其流程圖和程序清單就不在此占用篇幅了。
  在實際編程中,必須注意指令的調(diào)度問題,這也是程序優(yōu)化的很關(guān)鍵的一個方面。下面就IA MMXTM技術(shù)指令與整型指令的配對規(guī)則做簡要介紹。
  · 整型指令的配對規(guī)則如表2
  · MMXTM技術(shù)指令的配對


  (1)由于僅有一個MMXTM移位單元,所以兩條MMXTM移位單元的MMXTM指令不能配對。移位操作可以在U流水線或V流水線中進(jìn)行,但不能在同一個時鐘周期內(nèi)的兩個流水線中處理。
  (2) 同樣,兩條MMXTM乘法指令不能配對。
  (3) 無論是對內(nèi)存還是對整數(shù)寄存器的文件訪問的MMXTM指令僅被U流水線處理。
  (4) U流水線指令的MMXTM目的寄存器不與V流水線指令的源或目的寄存器配對。
  (5) EMMS指令不可配對。
  · U流水線中的整數(shù)指令和V流水線中的MMXTM技術(shù)指令配對規(guī)則
  (1)在浮點指令之后的第一條指令不能是MMXTM技術(shù)指令。
  (2)V流水線的MMXTM指令不能訪問內(nèi)存或整數(shù)寄存器文件。
  (3)U流水線整數(shù)指令是可配對的U流水線整數(shù)指令。
  · U流水線中的MMXTM技術(shù)指令和V流水線中的整數(shù)指令配對規(guī)則
  (1)V流水線整數(shù)指令是可配對的V流水線整數(shù)指令。
  (2)U流水線MMXTM指令不能對內(nèi)存或整數(shù)寄存器存取。
  根據(jù)以上配對原則,相信讀者可以自己安排程序中的指令配對。
  該程序雖然占用了不多的存儲單元,但是(接上頁)
  卻極大地提高了運算速度,由于大存儲量的存儲體價格較低,因此這一點并不重要。
  除此之外,筆者還在運動估計搜索算法中應(yīng)用IA MMXTM技術(shù),同樣性能顯著地提高了。
  總之,IA MMXTM技術(shù)在數(shù)據(jù)處理的許多算法中都能發(fā)揮優(yōu)越的性能,能夠成倍地提高運行速度。目前在多媒體應(yīng)用中,離散余弦變換(DCT)是經(jīng)常用到的變換編碼技術(shù),因此提高DCT的速度一直是這一應(yīng)用領(lǐng)域中的關(guān)鍵。利用IA MMXTM技術(shù)在不增加其他硬件的情況下,充分發(fā)揮Intel Pentium處理器的性能可以輕松地完成這一任務(wù)。在多媒體應(yīng)用中,IA MMXTM技術(shù)大大降低了程序?qū)μ幚砥鞯恼加寐?,使處理器能夠同時更有效地執(zhí)行其他任務(wù)。
參考文獻(xiàn)
1 Intel Architecture MMXTM Technology Programmer's Reference Manual.1996
2 Intel Architecture MMXTM Technology Manual.1996.
3 [美]Intel公司著,李暉譯.Intel體系結(jié)構(gòu)MMXTM技術(shù)開發(fā)指南.北京:電子工業(yè)出版社,1997
4 Chung-Yen Lu,Kuei-Ann Wen.On the Design of Selective Coefficient DCT Module.IEEE TRANSACTIONS ON CIRCUITS AND SYSTEMS FOR VIDEO TECHNOLOGY、1998;8(2)(收稿日期:1999-12-29)

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。