《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 業界動態 > 應用IA MMXTM技術的離散余弦變換

應用IA MMXTM技術的離散余弦變換

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

  摘 要: 在簡要介紹IA(Intel Architecture) MMXTM技術的基礎上,重點討論了應用IA MMXTM技術的DCT快速算法及其優越性能。
  關鍵詞: Intel體系結構 IA MMXTM技術 快速算法 離散余弦變換(DCT)和離散余弦反變換(IDCT)


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


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

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

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

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


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


  (1)由于僅有一個MMXTM移位單元,所以兩條MMXTM移位單元的MMXTM指令不能配對。移位操作可以在U流水線或V流水線中進行,但不能在同一個時鐘周期內的兩個流水線中處理。
  (2) 同樣,兩條MMXTM乘法指令不能配對。
  (3) 無論是對內存還是對整數寄存器的文件訪問的MMXTM指令僅被U流水線處理。
  (4) U流水線指令的MMXTM目的寄存器不與V流水線指令的源或目的寄存器配對。
  (5) EMMS指令不可配對。
  · U流水線中的整數指令和V流水線中的MMXTM技術指令配對規則
  (1)在浮點指令之后的第一條指令不能是MMXTM技術指令。
  (2)V流水線的MMXTM指令不能訪問內存或整數寄存器文件。
  (3)U流水線整數指令是可配對的U流水線整數指令。
  · U流水線中的MMXTM技術指令和V流水線中的整數指令配對規則
  (1)V流水線整數指令是可配對的V流水線整數指令。
  (2)U流水線MMXTM指令不能對內存或整數寄存器存取。
  根據以上配對原則,相信讀者可以自己安排程序中的指令配對。
  該程序雖然占用了不多的存儲單元,但是(接上頁)
  卻極大地提高了運算速度,由于大存儲量的存儲體價格較低,因此這一點并不重要。
  除此之外,筆者還在運動估計搜索算法中應用IA MMXTM技術,同樣性能顯著地提高了。
  總之,IA MMXTM技術在數據處理的許多算法中都能發揮優越的性能,能夠成倍地提高運行速度。目前在多媒體應用中,離散余弦變換(DCT)是經常用到的變換編碼技術,因此提高DCT的速度一直是這一應用領域中的關鍵。利用IA MMXTM技術在不增加其他硬件的情況下,充分發揮Intel Pentium處理器的性能可以輕松地完成這一任務。在多媒體應用中,IA MMXTM技術大大降低了程序對處理器的占用率,使處理器能夠同時更有效地執行其他任務。
參考文獻
1 Intel Architecture MMXTM Technology Programmer's Reference Manual.1996
2 Intel Architecture MMXTM Technology Manual.1996.
3 [美]Intel公司著,李暉譯.Intel體系結構MMXTM技術開發指南.北京:電子工業出版社,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)

本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
亚洲精品久久久蜜桃| 欧美亚洲日本国产| 亚洲男人av电影| 日韩一级免费| 91久久国产自产拍夜夜嗨| 韩国欧美国产1区| 韩日在线一区| 国产亚洲一区二区在线观看| 国产精品一区免费观看| 国产精品毛片a∨一区二区三区|国 | 小黄鸭精品aⅴ导航网站入口| 亚洲少妇最新在线视频| av成人免费在线| 99热这里只有成人精品国产| aaa亚洲精品一二三区| 夜夜嗨av一区二区三区网站四季av| 91久久亚洲| 亚洲靠逼com| 亚洲毛片在线| 99re6这里只有精品| 日韩天天综合| 亚洲一区二区综合| 亚洲免费影视第一页| 亚洲欧美国产日韩天堂区| 亚洲欧美视频在线| 欧美一级网站| 久久黄金**| 亚洲伦理在线观看| 这里只有精品视频在线| 亚洲一区二区在线观看视频| 亚洲欧美www| 欧美影视一区| 久久综合狠狠综合久久综青草 | 国产精品一区免费在线观看| 国产一区二区三区高清在线观看| 国内外成人免费视频| 亚洲激情视频| 中文在线一区| 欧美专区一区二区三区| 亚洲欧洲在线一区| 亚洲天堂av在线免费观看| 亚洲欧美日韩视频二区| 久久久99精品免费观看不卡| 蜜臀99久久精品久久久久久软件| 欧美精品一区二区三区视频| 国产精品视频99| 激情婷婷亚洲| 99在线|亚洲一区二区| 西瓜成人精品人成网站| 91久久精品美女| 亚洲在线电影| 久久天堂精品| 欧美精品在线视频观看| 国产精品一区久久久久| 亚洲福利av| 亚洲一区二区欧美| 亚洲第一综合天堂另类专| 一本色道久久加勒比精品| 先锋a资源在线看亚洲| 鲁大师成人一区二区三区 | 激情婷婷久久| 在线中文字幕一区| 久久精品九九| 亚洲一区二区免费视频| 久久久久久网址| 欧美日韩一二三区| 国产主播一区二区三区| 日韩视频在线一区二区三区| 欧美亚洲免费| 一本色道久久综合亚洲精品不| 久久激情五月激情| 欧美日韩免费| 一区精品久久| 午夜精品一区二区三区在线| 日韩视频中午一区| 久久精品99| 欧美性大战久久久久| 狠狠色狠狠色综合日日tαg| 一区二区三区精品| 亚洲国产精品毛片| 性欧美激情精品| 欧美精品久久一区二区| 国内精品伊人久久久久av影院 | 亚洲国产精品一区二区久| 亚洲主播在线观看| 日韩一区二区福利| 久久只精品国产| 国产欧美视频一区二区| 日韩视频免费观看| 亚洲黄色免费电影| 久久男女视频| 国产午夜精品在线观看| 在线亚洲美日韩| 在线亚洲伦理| 欧美黄色影院| 亚洲国产精品久久久久婷婷老年 | 亚洲欧美视频在线观看| 欧美日韩国产综合一区二区| 黄色欧美日韩| 午夜精品福利一区二区三区av| 中文久久精品| 欧美激情性爽国产精品17p| 国产一区二区毛片| 亚洲一区免费| 亚洲综合精品自拍| 欧美日韩亚洲在线| 亚洲精品综合| 夜夜嗨网站十八久久| 欧美国产专区| 亚洲国产免费| 亚洲日本va午夜在线影院| 久久亚洲精品欧美| 韩国av一区二区三区在线观看| 亚洲欧洲99久久| 欧美主播一区二区三区| 国产伦精品免费视频| 亚洲综合色激情五月| 亚洲欧美日韩精品久久奇米色影视| 欧美日韩中文精品| 99精品热视频| 亚洲综合三区| 国产精品毛片va一区二区三区 | 久久久久一区二区三区| 国产手机视频精品| 欧美在线啊v一区| 久久人体大胆视频| 在线观看国产精品淫| 最新国产成人av网站网址麻豆| 欧美成人午夜视频| 亚洲经典视频在线观看| 一区二区三区成人| 国产精品久久7| 亚洲女性喷水在线观看一区| 欧美一区二区三区免费观看视频| 国产精品视频免费| 校园激情久久| 美女精品国产| 亚洲人永久免费| 亚洲一区二区免费| 国产精品一区二区三区四区| 欧美诱惑福利视频| 看片网站欧美日韩| 亚洲狠狠丁香婷婷综合久久久| 99精品欧美| 国产精品爱啪在线线免费观看| 亚洲在线成人| 久久色中文字幕| 亚洲黄色精品| 亚洲欧美日本日韩| 国产一二三精品| 亚洲电影有码| 欧美极品色图| 一区二区日韩精品| 久久精品人人做人人综合| 伊人男人综合视频网| 9人人澡人人爽人人精品| 国产精品盗摄久久久| 久久精品国产精品亚洲| 欧美精品一区二区三区四区| 亚洲午夜精品久久| 久久一区二区三区av| 日韩午夜激情电影| 欧美一级电影久久| 亚洲第一区在线| 亚洲一区精品电影| 国产一区自拍视频| 一本久久青青| 韩国精品一区二区三区| 亚洲视频成人| 国产亚洲美州欧州综合国| 亚洲精品在线观看视频| 国产精品久久久久免费a∨| 亚洲国产午夜| 国产精品青草综合久久久久99| 亚洲电影免费观看高清| 欧美三级不卡| 亚洲大片精品永久免费| 欧美日本高清视频| 欧美亚洲综合久久| 欧美精品免费观看二区| 羞羞视频在线观看欧美| 欧美日韩精品免费看| 欧美影院一区| 国产精品成人一区二区三区夜夜夜 | 国内精品久久久久影院 日本资源| 一区二区三区久久| 国内成+人亚洲+欧美+综合在线| 在线视频欧美一区| 在线观看成人av电影| 亚洲欧美一区在线| 在线观看视频日韩| 欧美一级久久| 亚洲九九九在线观看| 久久一区二区三区四区| 亚洲一区二区三区免费在线观看| 麻豆av福利av久久av| 午夜精品久久久久影视 | 欧美淫片网站| 一二三四社区欧美黄| 免费久久99精品国产自|