亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種濾波裝置及其方法

文檔序號:7969064閱讀:218來源:國知局
專利名稱:一種濾波裝置及其方法
技術(shù)領(lǐng)域
本發(fā)明涉及一種濾波裝置及其方法,尤其涉及單指令多數(shù)據(jù)型
(SIMD)處理器中加速對稱或不對稱濾波的自修正裝置以及方法。
背景技術(shù)
圖像顯示以及音視頻數(shù)據(jù)(統(tǒng)稱為內(nèi)容數(shù)據(jù))的重放漸漸成為目 前計(jì)算設(shè)備最普遍的應(yīng)用,并且對微處理器的處理速度提出了越來越 高的要求。
目前指令級并行性體系構(gòu)架例如單指令多數(shù)據(jù)型(SIMD),多 指令多數(shù)據(jù)型(MIMD)、向量或陣列處理等逐漸成為提高微處理器 的處理速度的主要趨勢。其中應(yīng)用SIMD處理器的并行處理結(jié)構(gòu)的向 量機(jī)在集體處理大量諸如由像素構(gòu)成的圖像數(shù)據(jù)等向量數(shù)據(jù)的同時(shí)可 以減小計(jì)算時(shí)間,因此應(yīng)用SIMD處理器的向量機(jī)適于運(yùn)行具有繁重 矩陣計(jì)算負(fù)荷的圖像處理以及視頻編碼/解碼應(yīng)用程序。
在圖像及音視頻處理領(lǐng)域,轉(zhuǎn)置編碼以及矩陣轉(zhuǎn)置操作是圖像及 音視頻壓縮和解壓縮的通用技術(shù)。轉(zhuǎn)置矩陣涉及將矩陣的列重排為行。
對于向量機(jī),向量轉(zhuǎn)置通常是通過轉(zhuǎn)置寄存器實(shí)現(xiàn)的。這些轉(zhuǎn)置寄 存器是方便水平寫入和垂直讀出的特殊寄存器陣列。如圖2所示,保持 在寄存器陣列200中的數(shù)據(jù)處于先行后列的順序。當(dāng)從寄存器陣列讀出 這些數(shù)據(jù)時(shí),利用特殊的數(shù)據(jù)通路將垂直數(shù)據(jù)列讀出為向量。以圖2為 例,最初從轉(zhuǎn)置寄存器的寫端口 201a, 201b, 201c, 201d將數(shù)據(jù) [A0|A1|A2|A31,B0|B1|B2|B3,C0|Cl|C2|C3j,D0ID1ID2ID3寫入這個(gè)轉(zhuǎn) 置寄存器。然后數(shù)據(jù)A0,A1,A2,A31存儲在陣列單元中被表示為 202a,202b,202c,202d;數(shù)據(jù)B0,B1,B2,B3存儲在陣列單元中被表示為 203a,203b,203c,203d;數(shù)據(jù)1C0,C1,C2,C31存儲在陣列單元中被表示為
204a,204b,204c,204d;數(shù)據(jù)D0,D1,D2,D3存儲在陣列單元中被表示為 205a,205b,205c,205d。
當(dāng)執(zhí)行讀操作時(shí),從讀端口 206a, 206b, 206c, 206d讀出向量數(shù)據(jù)。 以垂直方向排列讀出的數(shù)據(jù),即通過連接陣列單元202a,203a,204a,205a 中的內(nèi)容形成讀出的第一向量數(shù)據(jù),也就是附圖中的讀出的數(shù)據(jù)A0,B0,C0,D01 。以類似的方式也可讀出向量數(shù)據(jù)Al,Bl,Cl,Dll,A2,B2,C2,D21, [A3,B3,C3,D3。水平寫入轉(zhuǎn)置寄存器陣列然后垂直讀出 的結(jié)果就是轉(zhuǎn)置的矩陣。這樣無論需要以垂直方向還是水平方向進(jìn)行矩 陣計(jì)算,均可以以上上述矩陣轉(zhuǎn)置的方式進(jìn)行向量計(jì)算。
當(dāng)希望以垂直方向進(jìn)行矩陣計(jì)算時(shí),矩陣轉(zhuǎn)置需包括N次水平寫操 作和N次垂直讀操作(2xN次循環(huán)),以便獲得轉(zhuǎn)置的NxN矩陣。具 體地,為獲得轉(zhuǎn)置的4x4矩陣,需要4次水平向量寫入和4次垂直向量 讀出,結(jié)果總共需要8次循環(huán)。
然而對于H.264標(biāo)準(zhǔn)(即用于視聽服務(wù)的先進(jìn)視頻編碼)中例如6 抽頭對稱濾波等、性能為關(guān)鍵指標(biāo)的算法核心(algorithm kernel)而言, 在濾波算法前轉(zhuǎn)置矩陣將對算法效率產(chǎn)生繁重的開銷。附圖3中示出了 理想的H.264對稱濾波,每個(gè)框代表所顯示圖片的一個(gè)像素,例如由 301a, 301b, 301c, 301d, 301e, 301f, 301g, 301h, 301i表示的框包含參考像 素p0,pl,p2,p3,p4,p5,p6,p7,p81的陣列。6抽頭對稱濾波需要以如下等式(l) -(4)從已知像素[p0,pl,p2,p3,p4,p5,p6,p7,p8中通過插值獲得包含在框 302a, 302b^02c,302d中的預(yù)測的半像素陣列p9,pl0,pll,pl21:
其中p0-p8是用作插值參考的已知像素;
a0, al, a2是濾波系數(shù)。在H.264標(biāo)準(zhǔn)中,aO=l, al= -5, a2 - 20; p9-pl2是從上述9個(gè)參考像素p0-p8預(yù)測得到的半像素.
通常p0-p8都是8位字。這樣每個(gè)64位向量寄存器可以保持8個(gè)
<formula>formula see original document page 10</formula>
像素。假設(shè)8個(gè)64位向量寄存器v0-V7中的內(nèi)容是
W = [p0|pl|p2|p3|p4|p5|p6|p7] W = [q0lqllq2lq3lq4lq5lq6lq7〗 W - [r0lrllr2lr3lr4lr5lr6lr7] W = [S0lslls2ls3ls4ls5ls6ls7] W =[. W- [ [
W=[
由于參考像素p0-p8最初以水平方式排列,因此很難以SIMD (單 指令多數(shù)據(jù))指令并行處理來獲得半像素p9, p10, pll, p12。
為了開發(fā)并行性,可以并行處理垂直半像素例如圖3所示的p9, p13, p14, p15。但是這就需要轉(zhuǎn)置像素矩陣。通過矩陣轉(zhuǎn)置,8個(gè)64位向量 寄存器v0-v7中的內(nèi)容變?yōu)?br> vtf ,=pO|qO|rO|sO|..|..|..|..|l V/,=[pl|ql|rl|sl|..|..|..|..|] V2,=p2|q2|r2|s2|..|..|..|..|
vJ,=[p3|q3|r3|s3|..|..|..|..|

v4, = [p4|q4|r4|s4|..|..|..|..|

v5,=p5|q5|r5|s5|"|..|..|..|l v6,=p6|q6|r6|s6|..|"|..|..|l v7,=[p7|q7|r7|s7|..|..|..|..|I
將向量數(shù)據(jù)從其原始的水平排列轉(zhuǎn)置成垂直排列,可以加速SIMD 處理。然后可以以并行方式計(jì)算半像素p9, p13, pl4,pl5:
p9|pl3|pl4|pl5|=aO*W , + al*W , + a2*v2, + a2*W, + al*v', + a0*v5,
即仍以圖3為例,在轉(zhuǎn)置后的矩陣中以如下方式計(jì)算 p9,pl3,pl4,pl5:
p9 = aO*pO + a"pl + a2*p2 + a2*p3 + al*p4 + a0*p5 pl3 = aO*qO + al*ql + a2*q2 + a2*q3 + al*q4 + a0*q5 pl4 = aO*rO + al*rl + a2*r2 + a2*r3 + al*r4 + a0*r5 pl5 = aO*sO + al*sl + a2*s2 + a2*s3 + al*s4 + a0*s5
但是,轉(zhuǎn)置需要相當(dāng)?shù)念~外指令來將矩陣轉(zhuǎn)置成所需格式。例如對
于NxN矩陣需要2xN次循環(huán)的開銷,這種濾波算法前轉(zhuǎn)置矩陣對算法
效率產(chǎn)生了繁重的開銷。因此需要一種對水平對稱濾波消除2xN的轉(zhuǎn)置 開銷的方法。

發(fā)明內(nèi)容
考慮到現(xiàn)有技術(shù)中橫向插值操作由于其源操作數(shù)的數(shù)據(jù)組織不適 合傳統(tǒng)的SIMD結(jié)構(gòu)進(jìn)行處理、其處理效率非常低的缺陷,本發(fā)明針對 水平濾波算法前轉(zhuǎn)置矩陣產(chǎn)生繁重開銷的缺點(diǎn)提出一種對水平對稱濾波 減小2xN次轉(zhuǎn)置開銷、提高編解碼效率的濾波方法、裝置以及計(jì)算機(jī)程 序,用于橫向插值時(shí)可使其達(dá)到與縱向插值相當(dāng)?shù)男省?br> 本發(fā)明的一個(gè)重要的目的在于提供一種可以進(jìn)行源數(shù)據(jù)移位自修 正的濾波裝置和方法,使得現(xiàn)有的濾波裝置或方法適于進(jìn)行橫向?yàn)V波;
本發(fā)明的另一個(gè)重要的目的在于提供一種可以修正計(jì)算次序以適 應(yīng)橫向(水平)濾波的濾波裝置和方法。
本發(fā)明的 一 個(gè)方面涉及 一 種濾波系數(shù)對稱的濾波裝置,該濾波裝置 包括
輸入裝置,用于從存儲裝置中輸入源搮作數(shù);
向量算術(shù)邏輯裝置,用于對所述源搮作數(shù)進(jìn)行濾波處理,以最終獲 得m個(gè)插值結(jié)果,其中m為不小于l的整數(shù);
多路復(fù)用陣列,用于對所述源操作數(shù)進(jìn)行移位自修正;
寫回裝置,用于將移位自修正后的上述源操作數(shù)寫回所述存儲裝置, 以繼續(xù)下一濾波處理。
優(yōu)選地,本發(fā)明還提供一種濾波系數(shù)對稱的濾波裝置,適于執(zhí)行 SIMD指令通過預(yù)定次數(shù)的濾波處理獲得m個(gè)插值結(jié)果,其中m為不小 于l的整數(shù),該濾波裝置包括
輸入裝置,用于分別從第一寄存器和第二寄存器輸入用于插值處理 的第一組源操作數(shù)和第二組源操作數(shù),其中第一組源操作數(shù)和第二組源 操作數(shù)的源操作數(shù)的個(gè)數(shù)為大于或等于m的整數(shù);
向量算術(shù)邏輯裝置,所述向量算術(shù)邏輯裝置包括
m個(gè)向量算術(shù)邏輯單元,分別用于對第一組源操作數(shù)中的最
左邊的m個(gè)源操作數(shù)和第二組源操作數(shù)中的最右邊的m個(gè)源搮作 數(shù)進(jìn)行邏輯運(yùn)算;
m個(gè)中間向量寄存器,分別用于存儲m個(gè)向量算術(shù)邏輯單元 的運(yùn)算結(jié)果;
m個(gè)并行乘法累加器,分別用于將來自上述m個(gè)中間向量寄 存器中的運(yùn)算結(jié)果與預(yù)定的濾波系數(shù)相乘,并將各個(gè)乘積分別與 已存儲在m個(gè)累加寄存器中的結(jié)果相加;和
m個(gè)累加寄存器,分別用于存儲上述的相加結(jié)果, 兩個(gè)多路復(fù)用陣列,通過分別對第一組源搮作數(shù)和第二組源操作數(shù) 向左移位和向右移位并將第一組源操作數(shù)的最右邊數(shù)據(jù)填零和將第二組 源操作數(shù)的最左邊數(shù)據(jù)填零進(jìn)行自修正,以使移位自修正后的第一組和 第二組源操作數(shù)成為下一濾波處理的源操作數(shù),
寫回裝置,用于分別將移位后的第一組源操作數(shù)和第二組源操作數(shù) 寫回到第一寄存器和第二寄存器,繼續(xù)下一濾波處理。
在此"濾波系數(shù)對稱"是指在偶數(shù)抽頭時(shí)抽頭系數(shù)相互對稱,在 奇數(shù)抽頭時(shí)除中心抽頭之外的其它濾波系數(shù)相互對稱的情況、在執(zhí)行 偶數(shù)抽頭對稱濾波處理時(shí),濾波處理的預(yù)定循環(huán)次數(shù)等于抽頭數(shù)的二分 之一。在執(zhí)行奇數(shù)抽頭對稱濾波處理時(shí),濾波處理的預(yù)定循環(huán)次數(shù)等于 "抽頭數(shù)+l"的二分之一,并且在最后l次濾波處理前使用所述多路復(fù) 用陣列使第二組源操作數(shù)全部變?yōu)榱?,將全部為零的第二組源操作數(shù)寫 回到第二寄存器。例如在m為l、 n為2時(shí),本發(fā)明的濾波裝置實(shí)現(xiàn)3 抽頭濾波,在2次循環(huán)后獲得m即1個(gè)插值。只要滿足n^:n^1, m和n 的取值不作上限。
理論上,本發(fā)明的濾波裝置也可應(yīng)用于2抽頭濾波,這種情況下 n甚至可等于m,并且在完成一次循環(huán)處理后即獲得所需的插值結(jié)果, 寫回裝置無需工作。因此在有效利用本發(fā)明的寫回裝置的情況下,優(yōu)選 n為大于m的整數(shù)。
另一方面,本發(fā)明還提供一種濾波方法,該濾波方法包括如下步驟
a) .使用輸入裝置從存儲裝置中輸入源操作數(shù);
b) .使用向量算術(shù)邏輯裝置對上述源操作數(shù)進(jìn)行濾波處理;
c) .使用多路復(fù)用陣列對上述輸入的源操作數(shù)進(jìn)行移位自修正;
d) .使用寫回裝置將移位自修正后的上述源操作數(shù)寫回所述存儲裝 置;
e) .重復(fù)步驟a) - d)直至獲得m個(gè)插值結(jié)果,其中m為不小于1的 整數(shù)。
更為優(yōu)選地,本發(fā)明還提供一種濾波系數(shù)對稱的濾波方法,用于執(zhí) 行SIMD指令通過預(yù)定次數(shù)的濾波處理獲得m個(gè)插值結(jié)果,其中m為 不小于l的整數(shù),該濾波方法包括如下步驟
a) .分別從第一寄存器和第二寄存器輸入用于插值處理的笫一組源 操作數(shù)和第二組源操作數(shù),其中第一組源操作數(shù)和第二組源操作數(shù)的源
操作數(shù)的個(gè)數(shù)為大于或等于m的整數(shù);
b) .使用m個(gè)向量算術(shù)邏輯單元分別對第一組源操作數(shù)中的最左邊 的m個(gè)源操作數(shù)和第二組源操作數(shù)中的最右邊的m個(gè)源^Mt數(shù)進(jìn)行邏輯 運(yùn)算,將獲得的m個(gè)運(yùn)算結(jié)果分別存儲在m個(gè)中間向量寄存器中;
c) .使用m個(gè)并行乘法累加器分別將來自上述m個(gè)中間向量寄存器 中的運(yùn)算結(jié)果與預(yù)定的濾波系數(shù)相乘,并將各個(gè)乘積分別與已存儲在m 個(gè)累加寄存器中的結(jié)果相加,將上述的相加結(jié)果存儲在m個(gè)累加寄存器 中;
d) .使用多路復(fù)用陣列,用于通過分別對第一組源操作數(shù)和第二組源 操作數(shù)向左移位和向右移位并將第一組源操作數(shù)的最右邊數(shù)據(jù)填零和將 第二組源操作數(shù)的最左邊數(shù)據(jù)填零進(jìn)行自修正,以使移位自修正后的笫 一組和第二組源操作數(shù)成為下一濾波處理的源操作數(shù),
e) .使用寫回通道分別將移位后的第一組源操作數(shù)和第二組源操作 數(shù)寫回到第一寄存器和第二寄存器;
f) .重復(fù)步驟a)-e)直至在m個(gè)累加寄存器中獲得m個(gè)插值結(jié)果,
本發(fā)明提出修正計(jì)算次序以適應(yīng)水平對稱濾波,并且在修正SIMD 計(jì)算的同時(shí)修正源操作數(shù)。
1. 修正源操作數(shù)以適應(yīng)水平對稱濾波
由于SIMD操作僅有利于對垂直排列的數(shù)據(jù)執(zhí)行向量處理,因此在 如圖3所示執(zhí)行水平對稱濾波時(shí),不會以SIMD機(jī)中的傳統(tǒng)方式排列水 平參考像素301a-301i。這樣就需要一種機(jī)構(gòu)從水平排列的數(shù)據(jù)中選擇合 適的數(shù)據(jù),從而使向量ALU引擎進(jìn)行計(jì)算。本發(fā)明提出的自修正W^通 過根據(jù)算法需要在與SIMD ALU中的計(jì)算流(computational flow)的同 時(shí)左移位和右移位對兩個(gè)源操作數(shù)進(jìn)行自修正。
2. <務(wù)正計(jì)算次序
如前對背景技術(shù)的描述執(zhí)行6抽頭對稱濾波的等式(l)、 (2)、 (3)和(4) 不適于直接在SIMD處理器中執(zhí)行。直接實(shí)現(xiàn)水平對稱濾波需要轉(zhuǎn)置像 素矩陣這樣的繁重開銷。為了開發(fā)對SIMD向量處理器中向量加法器/乘 法器/累加器等的充分應(yīng)用,本發(fā)明提出重新對上述等式(l)、 (2)、 (3)和(4) 進(jìn)行格式重排以便更好地使用已有的SIMD ALU (算術(shù)邏輯單元)。
例如在H.264標(biāo)準(zhǔn)視頻編解碼中執(zhí)行6抽頭對稱濾波處理,通it^f" 第一組源操作數(shù)p0,pl,p2,p3,p4,p5,p6,p7和第二組源搮作數(shù)pl,p2, p3,p4,p5,p6,p7p8執(zhí)行預(yù)定濾波系數(shù)分別為a0, al, a2的三次濾波處理, 在累加寄存器中獲得4個(gè)插值結(jié)果
acc = a0*(| p0+p5 | pl+p6 | p2+p7 | p3+p8 |) (5) acc = al*(| pl+p4 | p2+p5 | p3+p6 | p4+p7 |) + acc (6) acc = a2*(| p2+p3 | p3+p4 | p4+p5 | p5+p6 |) + acc (7)
新的等式(5)、 (6)和(7)與等式(1)、 (2)、 (3)和(4)的原始形式的區(qū)別主 要在于
1) 在等式(5)、 (6)和(7)中的運(yùn)算操作是先加后乘,而等式(l)、 (2)、 (3)和(4)中的計(jì)算順序是先乘后加;
2) 使用與上述等式(l)、 (2)、 (3)和(4)相同的濾波系數(shù)的乘法運(yùn)算分 別分組在新等式(5)、 (6)和(7)中,以便于在SIMD乘法器中執(zhí)行。
根據(jù)下面示意性實(shí)施例的說明(參照附圖)本發(fā)明的其它特點(diǎn)將 顯而易見。


圖1示出SIMD向量機(jī)體系結(jié)構(gòu)的框圖。
圖2示出標(biāo)準(zhǔn)的轉(zhuǎn)置寄存器的示意圖。
圖3示出H.264中理想的6抽頭對稱濾波的操作示意圍。
圖4示出根據(jù)本發(fā)明實(shí)施方式1的用于水平對稱濾波的自修正 SIMD之?dāng)?shù)據(jù)通路。
圖5示出根據(jù)本發(fā)明實(shí)施方式2的在執(zhí)行偶數(shù)抽頭對稱濾波時(shí)的 寄存器va和vb中的內(nèi)容。
圖6示出根據(jù)本發(fā)明實(shí)施方式2的對水平排列數(shù)據(jù)的偶數(shù)抽頭對 稱濾波的偽代碼。
圖7示出根據(jù)本發(fā)明實(shí)施方式3的在執(zhí)行奇數(shù)抽頭對稱濾波時(shí)的 寄存器va和vb中的內(nèi)容。
圖8示出根據(jù)本發(fā)明實(shí)施方式3的對水平排列數(shù)據(jù)的奇數(shù)抽頭對 稱濾波的偽代碼。
具體實(shí)施例方式
下面,將參照附圖等詳細(xì)描述本發(fā)明的具體實(shí)施方式
。但是,本 發(fā)明可以通過多種不同的方式來實(shí)施,本領(lǐng)域人員可以很容易地理解 其方式和詳細(xì)內(nèi)容可以被變換為各種各樣的形式,而不脫離本發(fā)明的 宗旨及其范圍。因此,本發(fā)明不應(yīng)該被解釋為僅限定在實(shí)施方式所記 載的內(nèi)容中。
具體地,以下參考H.264視頻編解碼進(jìn)行描述,但本發(fā)明的實(shí)施 例并不局限于此,而是可以應(yīng)用于通用信號處理、圖象處理以及音視 頻編解碼中的濾波,例如與其它類型的視頻編碼標(biāo)準(zhǔn)操作(例如 MPEG-4, AVS等)一起使用。
處理器概述
圖1示出了執(zhí)行向量計(jì)算的并行處理結(jié)構(gòu)的SIMD向量機(jī)體系結(jié) 構(gòu)。SIMD是指由單指令流指令對多數(shù)據(jù)流的操作。
SIMD向量機(jī)100適于運(yùn)行具有繁重矩陣計(jì)算負(fù)荷的視頻編碼/解碼 應(yīng)用程序。通常向量機(jī)100如圖所示由處理器核心邏輯和存儲器接口邏 輯組成。
存儲器接口模塊通常具有兩個(gè)SRAM模塊。 一個(gè)指令SRAM模塊 IOI用于存儲指令,另一個(gè)數(shù)據(jù)SRAM模塊102用于存儲數(shù)據(jù)。位于圖 1上部的存儲器控制邏輯103用于向程序控制邏輯104饋送指令并向向 量寄存器文件105饋送數(shù)據(jù)。
處理器核心邏輯通常具有
1. 負(fù)責(zé)產(chǎn)生控制信號并監(jiān)控處理器中其它部件的功能的程序控制 邏輯104;
2. 用來執(zhí)行向量加/減/乘等運(yùn)算的向量算術(shù)邏輯單元(Vector ALU, Arithmetic Logic Unit) 106;
3. 用來在SRAM和ALU之間進(jìn)行接口的向量寄存器文件105;
4. 負(fù)責(zé)按照預(yù)定屏蔽(mask)產(chǎn)生寫回控制信號的寫回邏輯107, 該寫回控制信號允許某些通道被寫回而禁止其它的通道被寫回。
本發(fā)明的改進(jìn)在于SIMD向量機(jī)中的處理器核心邏輯,其中提出一 種新穎的由程序控制邏輯、向量寄存器、向量算術(shù)邏輯單元和寫回邏輯 構(gòu)成的自修正SIMD處理器用作插值濾波裝置,可以對水平對稱濾波減 小2xN次轉(zhuǎn)置開銷、提高編解碼效率。
實(shí)施方式1
圖4示出根據(jù)本發(fā)明實(shí)施方式1的用于水平對稱濾波的自修正 SIMD之?dāng)?shù)據(jù)通路。
該實(shí)施方式以2端口讀2端口寫的寄存器陣列為例描述本發(fā)明的自 修正SIMD處理器。該自修正SIMD核心處理器包括
2端口讀2端口寫的向量寄存器陣列401,從該寄存器陣列一次讀出
兩個(gè)向量寄存器va和vb的內(nèi)容數(shù)據(jù)(笫一組內(nèi)容數(shù)據(jù)和笫二組內(nèi)容數(shù) 據(jù)),在該實(shí)施方式中每個(gè)向量寄存器可包含8個(gè)像素, 向量算術(shù)邏輯裝置,所述向量算術(shù)邏輯裝置包括
4個(gè)向量算術(shù)邏輯單元(ALU) 404,分別用于對來自向量寄 存器va中的4個(gè)有效的內(nèi)容數(shù)據(jù)和來自向量寄存器vb中的4個(gè) 對應(yīng)的有效內(nèi)容數(shù)據(jù)進(jìn)行邏輯運(yùn)算;
4個(gè)中間向量寄存器407,分別用于存儲ALU404的運(yùn)算結(jié)
果;
4個(gè)并行乘法累加器(MAC)408,分別用于將來自上述4個(gè)中 間向量寄存器407中的數(shù)據(jù)內(nèi)容與預(yù)定濾波系數(shù)416相乘,并將 各個(gè)乘積與4個(gè)累加寄存器409中的內(nèi)^據(jù)相加;和 4個(gè)累加寄存器409,分別用于存儲上述的相加結(jié)果, 兩個(gè)多路復(fù)用(MUX)陣列405,406,分別對來自向量寄存器va和 vb的內(nèi)M據(jù)通過移位進(jìn)行自修正,以使移位后的第一組和第二組內(nèi)容 數(shù)據(jù)適于下一次濾波指令的操作,在如圖4所示的硬件結(jié)構(gòu)中MUX陣 列405, 406是將向量寄存器va的內(nèi)容數(shù)據(jù)向左移位一位并將最右邊的內(nèi) 容數(shù)據(jù)填零,而向量寄存器va的內(nèi)容數(shù)據(jù)中在移位前最靠左端的數(shù)據(jù)將 在移位后被拋棄(扔掉),將向量寄存器vb的內(nèi)容數(shù)據(jù)向右移位一位并 將最左邊的內(nèi)容數(shù)據(jù)填零,而向量寄存器vb的內(nèi)容數(shù)據(jù)中在移位前最靠 右端的數(shù)據(jù)將在移位后被拋棄(扔掉)。
寫回邏輯(寫回裝置),分別用于將向量寄存器va和vb的自修正 后的內(nèi)容數(shù)據(jù)寫回到寄存器陣列401,繼續(xù)下一濾波指令的處理,以及 程序控制邏輯,用于執(zhí)行上述核心處理器中的各邏輯功能。
應(yīng)當(dāng)理解,向量算術(shù)邏輯單元、中間向量寄存器、并行乘法累加器 和累加寄存器的個(gè)數(shù)不限于4個(gè),而是與最M獲得的插值個(gè)數(shù)相適應(yīng)。
這些向量算術(shù)i輯單元、中間向量^^器、'、并行乘法累加器和累加寄存
器的個(gè)數(shù)應(yīng)等于要獲得的插值個(gè)數(shù)。
本發(fā)明的自修正SIMD處理器可以應(yīng)用于對偶數(shù)抽頭和奇數(shù)抽頭 對稱濾波、優(yōu)選水平對稱濾波進(jìn)行加速。具體的指令描述如下
n_) sj附y(tǒng)ift—e OCC,m,v6,/WM7M —— 4禺?dāng)?shù)抽頭對稱濾波的指令
W sjw/ /(_0 flcc,va,v6,pawi-— 奇^t抽頭對稱濾波的指令 在偶數(shù)抽頭對稱濾波中使用symfilt一e指令。在奇數(shù)抽頭對稱濾波中 使用symfilt_o指令。
其中,acc是保持結(jié)果的目標(biāo)累加寄存器;
va和vb是提供濾波源(filtering source)的兩個(gè)向量寄存器,用于 存放參與插值的源操作數(shù),對于音頻濾波時(shí)是指不同采樣時(shí)間的采樣值, 對于圖像例如視頻應(yīng)用中的圖像時(shí)是指不同位置的像素?cái)?shù)據(jù);
parm是用于指定濾波系數(shù)的立即數(shù)。在以上所述的H.264 6抽頭濾 波實(shí)例中,parm字段的值可以是l, -5, 20。
利用本發(fā)明的自修正SIMD處理器對以上指令的執(zhí)行涉及如下操

1. 從向量寄存器陣列401中讀出存儲在兩個(gè)源向量寄存器(圖4中 由402表示的做和由403表示的)中的數(shù)據(jù)。在此為清楚起見假設(shè)向 量寄存器v" ^€ v14而向量寄存器^€ v15。
2. 根據(jù)預(yù)定模式從寄存器陣列401的兩個(gè)讀端口 l和2將向量寄存 器v14和v15中的內(nèi)^lt據(jù)分別傳送到包括向量ALU0-ALU3在內(nèi)的向 量ALU404的兩個(gè)輸入端417和418。上述模式為
字436, 448連接到ALUO作為其輸入ALU0(436,448)
字437, 449連接到ALU1作為其輸入ALU1(437,449)
字438, 450連接到ALU2作為其輸入ALU2(438,450)
-字439, 451連接到ALU3作為其輸入ALU3(439,451)
以ALUO為例,在輸入總線412的最左邊的字436被連接到ALUO
作為其輸入,而另一條輸入總線413的第5個(gè)字448同樣連接到ALUO 作為其第二輸入。
3. 由附困標(biāo)記404表示的向量ALU0-ALU3對從輸入端417和418 輸入的內(nèi)容數(shù)據(jù)執(zhí)行算術(shù)或邏輯運(yùn)算,示例地,此處為加法運(yùn)算,然后 將運(yùn)算結(jié)果暫時(shí)存儲到中間向量寄存器407,以用于下次操作。
4. 在上述3的同時(shí),通過兩個(gè)多路復(fù)用(MUX)陣列405, 406對 輸入總線412和413的內(nèi)^據(jù)進(jìn)行自修正以將其重新整形為預(yù)定格式。 特別的,用于對稱濾波的預(yù)定格式為
a) 將讀端口 1 (輸入總線412)上的內(nèi)容數(shù)據(jù)向左移位一個(gè)像素寬
度;
b) 將讀端口 2 (輸入總線413)上的內(nèi)^lt據(jù)向右移位一個(gè)像素寬
度;
c) 利用硬件線路414在輸入總線412上最右邊像素443中填充零;
d) 利用硬件線路415在輸入總線413上最右邊像素443中填充零; 隨后通過兩個(gè)寫回通道410, 411將新格式的內(nèi)容數(shù)據(jù)寫回到寄存器
陣列401。
5. 中間向量寄存器407中的數(shù)據(jù)(452,453,454,456)然后被分別輸入 到由4個(gè)并行乘法累加器(MAC: Multiply&Accumulate) (408)組成的專
用數(shù)據(jù)通路。
6. 中間向量寄存器407中的數(shù)據(jù)452,453,454,456的內(nèi)^t據(jù)首先與 在指令字的直接插入/w附字教中指定的預(yù)定濾波系數(shù)416相乘,然后再 與累加寄存器456,457,458,459中的內(nèi)M據(jù)相加,最后其結(jié)果被存儲在 由累加寄存器456,457,458,459構(gòu)成的累加寄存器409中,以更新原累加 寄存器409中的內(nèi)容數(shù)據(jù)。
實(shí)施方式2
在最新的視頻編碼標(biāo)準(zhǔn)H.264/AVC中,運(yùn)動預(yù)測的精度達(dá)到1/4 像素。為了提高運(yùn)動預(yù)測的速度,同樣希望實(shí)現(xiàn)運(yùn)動預(yù)測過程的SIMD 并行運(yùn)算,其間遇到的最大問題就是1/4像素精度參考圖像的傳統(tǒng)存 儲方式不適合并行操作。本發(fā)明提出的上述自修正SIMD處理器實(shí)現(xiàn) 了運(yùn)動預(yù)測過程的SIMD并行運(yùn)算,通過對偶數(shù)抽頭和奇數(shù)抽頭水平
對稱濾波進(jìn)行加速減少了整個(gè)運(yùn)動預(yù)測過程消耗的時(shí)間。
現(xiàn)在以H.264中的6抽頭(水平對稱)濾波為例,結(jié)合圖4所示的 硬件構(gòu)架和圖5所示的寄存器內(nèi)容描述本發(fā)明的自修正機(jī)構(gòu)如何實(shí)現(xiàn)對 稱濾波的。
假設(shè)像素的精度為通常的8位,向量寄存器的寬度為64位,則一 個(gè)向量寄存器可包含8個(gè)像素??梢栽O(shè)想本發(fā)明使用的像素位數(shù)和向量 寄存器的尺寸并不限于8位和64位,6位像素顯然可以應(yīng)用于本發(fā)明, 而向量寄存器的尺寸可以根據(jù)待處理的像素位數(shù)和數(shù)量作相應(yīng)調(diào)整。
向量寄存器文件^^沒計(jì)為如圖4所示的2端口讀2端口寫(2讀2 寫)的寄存器陣列。在對稱濾波開始之前,參考像素P0,pl,p2,p3,p4,p5,p6,p71和lpl,p2,p3,p4,p5,p6,p7,p81首先全部被加栽到 如圖5所示的寄存器文件(501-518)中。
從讀端口 1讀出寄存器va中的內(nèi) 據(jù),如圖5的第一循環(huán)處理 555中所示為p0-p7,從另一讀端口讀出寄存器vb中的內(nèi)容數(shù)據(jù),如圖5 所示為pl-p8。如圖5所示,從寄存器va讀出的在位置501-504的最左 邊的4個(gè)像素p0,pl,p2,p3,以及從寄存器vb讀出的位置513-516的最 右邊的4個(gè)像素[p5,p6,p7,p81首先被選出并分別被傳送到4個(gè)向量ALU (在圖4中的ALU 404),進(jìn)行加法運(yùn)算。這樣在下一個(gè)^示為cl的 循環(huán)處理中,可在臨時(shí)寄存器452-455中分別獲得來自p0+p5lpl+p6lp2+p7lp3+p8I的結(jié)果。
然后在下一個(gè)循環(huán)c2,在臨時(shí)寄存器452-455中的結(jié)果將會首先與 parm字段中指定的直接插入?yún)?shù)416相乘,在h.264標(biāo)準(zhǔn)的實(shí)例中該第 一parm的值為l。隨后將上述乘積添加到累加寄存器456-459,該累加 寄存器456-459已經(jīng)由早先的指令"clraccO"(圖6所示)被初始化到零。 在執(zhí)行完第一^附/ /(^指令后,則在累加寄存器中獲得等式(5)的結(jié)果
acc = a0*(| p0+p5 | pl+p6 | p2+p7 | p3+p8 |) (5) 在第一個(gè)循環(huán)cl中,分別使讀端口 l和讀端口 2上的內(nèi)^b據(jù)向左
和向右移位一個(gè)像素寬度。更具體地,在H.264中的6抽頭(水平對稱) 濾波的實(shí)例中,借助多路復(fù)用陣列405,406 ,在va側(cè)像素 [pl,p2,p3,p4,p5,p6,p7,0
(如圖中第2循環(huán)處理556中顯示在位置518到 525)由多路復(fù)用陣列405選擇,其中像素pO被移位操作所拋棄而不再 被存儲,然后被傳送到寫回端口 1 (經(jīng)由寫回通道410)。在vb側(cè)像素0,pl,p2,p3,p4,p5,p6,p7(如圖5中第2循環(huán)處理556中顯示在位置526 到533 )由多路復(fù)用陣列406選擇,其中像素p8被移位操作所拋棄而不 再^MC存儲,然后被傳送到寫回端口 2 (經(jīng)由寫回通道411)。
接下來當(dāng)下一個(gè)循環(huán)c2的向量寄存器陣列寫入搮作被觸發(fā)時(shí),上述 被移位的值將被寫回到vfl和v辦。在執(zhí)行完第一 ^附y(tǒng)^一e指令后,寄存 器va和現(xiàn)在保持著移位后的像素值。如圖5的第2循環(huán)處理556所 示,第二砂附力/Le指令將分別在讀端口 1 (輸入總線412)和讀端口 2 (輸 入總線"S)讀出像素pl,p^p^p4(在寄存器v/i的位置518-521上)和像 素p4,p5,p6,p7(在寄存器的位置530-533上)。這樣在執(zhí)行完笫二 矽wy^一e指令后,則在累加寄存器中獲得等式(6)的結(jié)果
acc = al*(| pl+p4 | p2+p5 | p3+p6 | p4+p7 |) + acc (6)
類似地,當(dāng)執(zhí)行完第三矽w/^—e指令后,讀端口 l和讀端口 2上的
數(shù)據(jù)分別變?yōu)?b>p2,p3,p4,p5
(在寄存器w的位置537-540)和p3,p4,p5,p6
(在寄存器的位置549-553)。這樣在執(zhí)行完第三sjw/^一e指令后,則
在累加寄存器中獲得等式(7)的結(jié)果
acc = a2*(| p2+p3 | p3+p4 | p4+p5 | p5+p6 |) + acc (7)
通過將寄存器v"中的內(nèi)容數(shù)據(jù)向左移位一個(gè)像素以及通過將寄存 器中的內(nèi)^t據(jù)向右移位一個(gè)像素,就獲得了適于等式(5)、 (6)和(7) 中的操作運(yùn)算的源操作數(shù)排列。這樣可將8個(gè)參考像素(以它們在向量 寄存器中存在的原始形式而不經(jīng)過任何額外數(shù)據(jù)重組)直接送進(jìn)SIMD ALU,因此可以減輕水平排列的數(shù)據(jù)所需的額外數(shù)據(jù)重組帶來的開銷。
圖6給出了用于對水平源數(shù)據(jù)的偶數(shù)抽頭(以6抽頭為例)對稱濾波 操作的參考代碼(6-tap symmetric horizontal filtering pseudo-codes):
首先"弁defme parm0 0x0001"、 "#defme parml 0xfffb,,以及"弁defme
parm2 0x0010"分別用來定義對稱濾波的系數(shù),在H.264 6抽頭濾波實(shí) 例中parm字段的值分別1,-5,20; i^"load vl4,*address_of(pixd_0)r 以及"load vl5,*[address_of(pixel—1)"分別用來將從像素p0開始的8個(gè) 連續(xù)像素加栽到v14和將從像素pl開始的8個(gè)連續(xù)像素加栽到vl5;隨 后"clr acc0"將累加寄存器全部清零;接著"symfilt—e acc0,vl4,vl5,parm0,, 、 "symfilt一e acc0,vl4,vl5,parml"以及"symfilt一e accO,vl4,vl5,parm2"進(jìn)行第 一 、第二和第三循環(huán)的濾波。
另外,為獲得二分之一像素運(yùn)動向量精度繼續(xù)執(zhí)行垂直6抽頭濾波 時(shí),由于縱向插值操作其源操作數(shù)的數(shù)據(jù)組織適合傳統(tǒng)的SIMD結(jié)構(gòu), 因此可以方便地以SIMD進(jìn)行處理。例如預(yù)測的像素p18 (圖3中框308 所包含的像素)可以由其垂直相鄰的像素p9, p13, p14, p15, p16, p17 (302a, 303, 304, 305, 206, 307)產(chǎn)生p18 = a0*p9 + al*pl3 + a2*pl4 + a2*pl5 + al*pl6 + a0*pl7 (在H.264標(biāo)準(zhǔn)中aO-l, al=-5, a2 = 20), 在該實(shí)施方式2中是將橫向插值的結(jié)果從圖4的累加寄存器(ACC) 409 加栽到圖4中的向量寄存器陣列401,利用傳統(tǒng)的SIMD乘法指令即可 以完成縱向插值,獲得圖3中的像素p18。以此類推,位于像素p18右 邊的同一行上的三個(gè)像素均可由垂直方向上相鄰的6像素產(chǎn)生。因此本 發(fā)明實(shí)施方式2將不再對垂直對稱濾波進(jìn)行詳述。
使用本發(fā)明的實(shí)施方式2,可以進(jìn)一步將全像素和二分之一像素位 置的釆樣值進(jìn)行平均得到四分之一像素位置的預(yù)測值,提高運(yùn)動預(yù)測精 度使運(yùn)動補(bǔ)償中運(yùn)動矢量精確到1/4像素級。
應(yīng)當(dāng)了解,本發(fā)明的實(shí)施方式2可以應(yīng)用于8抽頭水平對稱濾波。 相對于6抽頭濾波,8抽頭對稱濾波的具體操作只需要再增加一次循環(huán)處 理以第4個(gè)濾波系數(shù)進(jìn)行插值操作即可。由此可見,本發(fā)明的實(shí)施方式 2可以針對抽頭系數(shù)對稱的其它任何的偶數(shù)抽頭濾波處理,只要計(jì)算不 超出并行乘法累加器(MAC)的數(shù)值范圍。
實(shí)施方式3
同樣本發(fā)明的自修正SIMD處理器可實(shí)現(xiàn)對奇數(shù)抽頭對稱濾波的加速。
奇數(shù)抽頭對稱濾波操作與偶數(shù)抽頭對稱濾波操作略有區(qū)別,如圖7 所示,區(qū)別僅在于最后一個(gè)計(jì)算步驟。以5抽頭對稱濾波為例,本發(fā)明 提出按照以下等式(8)、 (9)和(10)進(jìn)行計(jì)算
acc = aO*(| p0+p4 | pl+p5 | p2+p6 | p3+p7 |) (8) acc = al*(| pl+p3 | p2+p4 | p3+p5 | p4+p6 |) + acc (9) acc = a2*(| p2+ 0 | p3+ 0 | p4+ 0 | p5+ 0 |) + acc (10)
因此與6抽頭對稱濾波操作的等式(5)、 (6)和(7)相比較,主要區(qū)別 僅在于最后一個(gè)計(jì)算步驟中其中一半操作數(shù)由零代替(見等式IO),由 此實(shí)現(xiàn)5抽頭對稱濾波。
對于奇數(shù)抽頭對稱濾波操作,硬件同樣可以使用如圖4所示硬件結(jié)構(gòu)。
考慮到5抽頭對稱濾波操作數(shù)的變化(如等式(8)、(9)和(10)中所示), 5抽頭對稱濾波操作與圖6所示的偶數(shù)抽頭對稱濾波的操作除以下區(qū)別 外幾乎完全一樣1)現(xiàn)在由存儲器從p0的地址開始加載寄存器vl5(即 vb)中的值,如圖7所示在位置709處,而在圖6所示的6抽頭濾波操 作中,加載到vl5中的第一像素是pl而不是p0; 2). 5抽頭對稱濾波操 作的最后操作(即第三次循環(huán)處理)是執(zhí)行由零代替一半操作數(shù)的指令。
這種由零代替一半操作數(shù)的指令,在本發(fā)明中稱為^my /o 指令, 該指令與^w,/一e指令的區(qū)別在于在矽/ ,/(_"旨令,移位后的值(例 如圖5所示第三循環(huán)處理557中位置549-552的像素p3至p6 )被傳送到 SIMD ALU的輸入端,以便在下一個(gè)循環(huán)執(zhí)行SIMD加法操作。而在 矽wy^一0指令的情況下,移位后的值(例如圖7所示第三循環(huán)處理757 中的位置749-752處的值)被零取代(如等式10所示),以便在下一個(gè) 循環(huán)執(zhí)行SIMD加法4IMt。這樣在矽w/^一o指令的情況下,SIMDALU 在第三循環(huán)處理中實(shí)際上僅變?yōu)?一 串選擇線。
圖8給出了用于對水平源數(shù)據(jù)的奇數(shù)抽頭(以5抽頭為例)對稱濾波 操作的參考代碼(5-tap symmetric horizontal filtering pseudo-codes):
首先"弁define parm0 0x0001"、 "#defme parml 0xfffb,,以及'嗜define parm2 0x0010"分別用來定義對稱濾波的系數(shù),在H.264 6抽頭濾波實(shí) 例中parm字段的值分別1,曙5,20;隨后"load vl4,*[address—of(pixel_0)
" 以及"load vl5,*address—of(pixe1—l)l,,分別用來將從像素p0開始的8個(gè) 連續(xù)像素加載到v14和將從像素p0開始的8個(gè)連續(xù)像素加栽到vl5;隨 后"clr acc0"將累加寄存器全部清零;接著"symfilt—e accO,vl4,vl5,parmO" 、 "symfilt一e acc0,vl4,vl5,parml"以及"symfilt一o acc0,vl4,vl5,parm2,,進(jìn)行第 一 、第二和第三循環(huán)的濾波。
同樣應(yīng)當(dāng)了解,本發(fā)明的實(shí)施方式3可以應(yīng)用于其它抽頭系數(shù)對稱 的奇數(shù)抽頭濾波處理,只要計(jì)算不超出并行乘法累加器(MAC)的數(shù)值范 圍即可。
以上所述的SIMD處理器中加速對稱濾波的自修正機(jī)構(gòu)可以應(yīng) 用于圖像處理、音視頻編解碼,甚至普通的信號處理,其操作可以由 處理器系統(tǒng)、微控制器、可編程邏輯器件或微處理器實(shí)現(xiàn)部分或全部 的操作。另外,其中的一些操作也可以用軟件實(shí)現(xiàn)。實(shí)現(xiàn)這些操作的 互連功能單元或軟件模塊可以被集成到單一的邏輯器件、程序或操作 中。其中上述裝置和方法同樣適于不對稱的濾波裝置或方法,本領(lǐng)域 技術(shù)人員無需任何創(chuàng)造性的勞動,就可以根據(jù)本發(fā)明的裝置和方法, 增加相應(yīng)的選擇邏輯以及在指令中擴(kuò)展一個(gè)指令域來存放另外一組的
非對稱的系數(shù),就可以將本發(fā)明擴(kuò)展為不對稱的濾波裝置和方法。
盡管已經(jīng)結(jié)合實(shí)施例具體說明了由本發(fā)明的發(fā)明人所做出的發(fā) 明,但是本發(fā)明不限于這樣的實(shí)施例,在不脫離本發(fā)明主旨的情況下, 可以進(jìn)行各種修改。
權(quán)利要求
1.一種濾波裝置,該濾波裝置包括輸入裝置,用于從存儲裝置中輸入源操作數(shù);向量算術(shù)邏輯裝置,用于對所述源操作數(shù)進(jìn)行濾波處理,以最終獲得m個(gè)插值結(jié)果,其中m為不小于1的整數(shù);多路復(fù)用陣列,用于對所述源操作數(shù)進(jìn)行移位自修正;寫回裝置,用于將移位自修正后的上述源操作數(shù)寫回所述存儲裝置,以繼續(xù)下一濾波處理。
2. —種如權(quán)利要求l所述的濾波裝置,其中所述存儲裝置至少包括 第一寄存器和第二寄存器。
3. —種如權(quán)利要求l所述的濾波裝置,其中所述源^Mt數(shù)至少包括 第一組源操作數(shù)和第二組源操作數(shù),第一組源操作數(shù)以及第二組源操作 數(shù)中的源操作數(shù)的個(gè)數(shù)分別至少大于或者等于插值結(jié)果的個(gè)數(shù)m。
4. 一種如權(quán)利要求2所述的濾波裝置,其中所述輸入裝置從所述第 一寄存器和所述第二寄存器分別輸入所述第一組源操作數(shù)和所述第二組 源操作數(shù),所述第一組源操作數(shù)以及所述笫二組源操作數(shù)中的源操作數(shù)的個(gè)數(shù)分別至少大于或者等于插值結(jié)果的個(gè)數(shù)m。
5. —種如權(quán)利要求l所述的濾波裝置,其中所述向量算術(shù)邏輯裝置 包括向量算術(shù)邏輯單元,用于對所述源操作數(shù)中的部分源操作數(shù)進(jìn)行邏輯運(yùn)算;中間向量寄存器,用于存儲上述向量算術(shù)邏輯單元的運(yùn)算結(jié)果; 并行乘法累加器,用于將來自上述中間向量寄存器中的運(yùn)算結(jié)果與預(yù)定的濾波系數(shù)相乘,并將所獲得的乘積分別與已存儲在累加寄存器中的結(jié)果相加;和累加寄存器,用于存儲上迷的相加結(jié)果。
6. —種如權(quán)利要求5所述的濾波裝置,其中所述向量算術(shù)邏輯裝置 包括至少m個(gè)向量算術(shù)邏輯單元、至少m個(gè)中間向量寄存器、至少m個(gè)并行乘法累加器、至少m個(gè)累加寄存器,所述源搮作數(shù)至少包括笫一 組源操作數(shù)和第二組源搮作數(shù),m個(gè)所述向量算術(shù)邏輯單元分別用于對 第 一組源操作數(shù)中的最左邊m個(gè)源操作數(shù)和第二組源搮作數(shù)中的最右邊 m個(gè)源操作數(shù)進(jìn)行邏輯運(yùn)算,m個(gè)所述中間向量寄存器分別用于存儲上 述m個(gè)向量算術(shù)邏輯單元的運(yùn)算結(jié)果,m個(gè)所述并行乘法累加器分別用 于將來自上述m個(gè)中間向量寄存器中的運(yùn)算結(jié)果與預(yù)定的濾波系數(shù)相 乘,并將各個(gè)乘積分別與已存儲在m個(gè)所述累加寄存器中的結(jié)果相加和將所獲得的相加結(jié)果再分別存儲在該m個(gè)所述累加寄存器中。
7. —種如權(quán)利要求3、 4、 5、 6所述的濾波裝置,其中所述濾波裝置包括至少兩個(gè)多路復(fù)用陣列,該多路復(fù)用陣列將第一組源操作數(shù)向左移位并將第一組源操作數(shù)的最右邊數(shù)據(jù)填零,將第二組源操作數(shù)向右移 位和將第二組源操作數(shù)的最左邊數(shù)據(jù)填零,以對上述源操作數(shù)進(jìn)行自修正,并使移位后的第一組源操作數(shù)和第二組源搮作數(shù)成為下一濾波處理 的源操作數(shù)。
8. —種如權(quán)利要求7所述的濾波裝置,其中所述存儲裝置包括至少 第一寄存器和第二寄存器,所述寫回裝置將所述移位后的第一組源操作 數(shù)和第二組源搮作數(shù)分別寫回到所述第 一寄存器和所述第二寄存器。
9. 一種如權(quán)利要求8所述的濾波裝置,其中所述濾波裝置包括至少 兩個(gè)所述寫回裝置。
10. —種如權(quán)利要求1-9中任一項(xiàng)所述的濾波裝置,其中所述濾波 裝置的所述濾波系數(shù)是對稱的。
11. 如權(quán)利要求5、 6中任一項(xiàng)所述的濾波裝置,其中所述向量算術(shù) 邏輯單元分別對第一組源操作數(shù)中的源操作數(shù)和第二組源操作數(shù)中對應(yīng)的源操作數(shù)進(jìn)行加法運(yùn)算。
12. 根據(jù)權(quán)利要求1-11中任一項(xiàng)的濾波裝置,適于執(zhí)行SIMD 指令通過對水平排列的所迷源操作數(shù)進(jìn)行預(yù)定次數(shù)的濾波處理,以獲得 m個(gè)橫向插值結(jié)果。
13. 根據(jù)權(quán)利要求1 - 11中任一項(xiàng)的濾波裝置,適于執(zhí)行偶數(shù)抽頭 對稱濾波處理,其中濾波處理的預(yù)定次數(shù)等于抽頭數(shù)的二分之一。
14. 根據(jù)權(quán)利要求13的濾波裝置,適于在H.264標(biāo)準(zhǔn)視頻編解碼 中執(zhí)行6抽頭對稱濾波處理,其中第一組源操作數(shù)是表示8個(gè)像素點(diǎn)的p0,pl,p2,p3,p4,p5,p6,p7,第二組源操作數(shù)是表示8個(gè)像素點(diǎn)的pl,p2, p3,p4,p5,p6,p7,p8,通過對第一和第二組源操作數(shù)執(zhí)行預(yù)定對稱濾波系數(shù)分別為a0, al, a2的三次濾波處理,在累加寄存器中獲得4個(gè)插值結(jié)果<formula>formula see original document page 4</formula>其中acc表示累加寄存器的保持結(jié)果。
15. 根據(jù)權(quán)利要求1 - 11中任一項(xiàng)的濾波裝置,適于執(zhí)行奇數(shù)抽頭 對稱濾波處理,其中濾波處理的預(yù)定次數(shù)等于"抽頭數(shù)+ l"的二分之一, 并且在最后1次濾波處理前所述兩個(gè)多路復(fù)用陣列使第二組源操作數(shù)全 部變?yōu)榱恪?br> 16. 根據(jù)權(quán)利要求15的濾波裝置,適于執(zhí)行5抽頭對稱濾波處理, 其中第一組源操作數(shù)是表示8個(gè)像素點(diǎn)的p0,pl,p2,p3,p4,p5,p6,p7,第二組源操作數(shù)是表示相同8個(gè)像素點(diǎn)的p0,pl,p2,p3,p4,p5,p6,p7,通過對第一和第二組源操作數(shù)執(zhí)行預(yù)定濾波系數(shù)分別為a0, al, a2的三次濾波處理,在累加寄存器中獲得4個(gè)插值結(jié)果<formula>formula see original document page 4</formula>其中acc表示累加寄存器的保持結(jié)果。
17. —種濾波方法,該濾波方法包括如下步驟a) .使用輸入裝置從存儲裝置中輸入源操作數(shù);b) .使用向量算術(shù)邏輯裝置對上述源操作數(shù)進(jìn)行濾波處理;c) .使用多路復(fù)用陣列對上述輸入的源操作數(shù)進(jìn)行移位自修正;d) .使用寫回裝置將移位自修正后的上述源操作數(shù)寫回所述存儲裝 置;e) .重復(fù)步驟a)-d)直至獲得m個(gè)插值結(jié)果,其中m為不小于l的整數(shù)。
18. —種如權(quán)利要求17所述的濾波方法,其中步驟a)是從至少包括 第 一寄存器和第二寄存器的存儲裝置中分別輸入所述源操作數(shù)。
19. 一種如權(quán)利要求17所述的濾波方法,其中所述源操作數(shù)至少包 括第一組源操作數(shù)和第二組源操作數(shù),第一組源操作數(shù)以及第二組源操 作數(shù)中的源操作數(shù)的個(gè)數(shù)分別大于或等于插值結(jié)果的個(gè)數(shù)m。
20. —種如權(quán)利要求18所述的濾波方法,其中所述輸入裝置從笫一 寄存器和第二寄存器分別輸入第一組源操作數(shù)和第二組源操作數(shù),第一 組源操作數(shù)以及第二組源操作數(shù)中的源操作數(shù)的個(gè)數(shù)分別大于或等于插 值結(jié)果的個(gè)數(shù)m。
21. —種如權(quán)利要求17所述的濾波方法,其中步驟b)包括下列步驟 使用向量算術(shù)邏輯單元對所述源操作數(shù)中的部分源操作數(shù)進(jìn)行邏輯運(yùn)算;使用中間向量寄存器存儲上述向量算術(shù)邏輯單元的運(yùn)算結(jié)果;使用并行乘法累加器將來自上述中間向量寄存器中的運(yùn)算結(jié)果與預(yù)定的濾波系數(shù)相乘,并將所獲得的乘積分別與已存儲在累加寄存器中的結(jié)果相加;和使用累加寄存器存儲上述的相加結(jié)果。
22. —種如權(quán)利要求21所述的濾波方法,其中所述向量算術(shù)邏輯裝 置包括至少m個(gè)向量算術(shù)邏輯單元、至少m個(gè)中間向量寄存器、至少m 個(gè)并行乘法累加器、至少m個(gè)累加寄存器,所述源搮作數(shù)至少包括笫一 組源操作數(shù)和第二組源操作數(shù),使用m個(gè)所述向量算術(shù)邏輯單元分別對 第一組源操作數(shù)中的最左邊m個(gè)源操作數(shù)和第二組源操作數(shù)中的最右邊 m個(gè)源操作數(shù)進(jìn)行邏輯運(yùn)算,使用m個(gè)所述中間向量寄存器分別存儲上 述m個(gè)向量算術(shù)邏輯單元的運(yùn)算結(jié)果,使用m個(gè)所述并行乘法累加器分 別將來自上述m個(gè)中間向量寄存器中的運(yùn)算結(jié)果與預(yù)定的濾波系數(shù)相 乘,并將各個(gè)乘積分別與已存儲在m個(gè)所述累加寄存器中的結(jié)果相加和 將所獲得的相加結(jié)果再分別存儲在該m個(gè)所述累加寄存器中。
23. —種如權(quán)利要求19、 20、 21、 22所述的濾波方法,其中采用至少兩個(gè)多路復(fù)用陣列,使用該多路復(fù)用陣列分別將第 一組源搮作數(shù)向左 移位并將第一組源操作數(shù)的最右邊數(shù)據(jù)填零,和將第二組源操作數(shù)向右 移位并將第二組源搮作數(shù)的最左邊數(shù)據(jù)填零,以對上述源搮作數(shù)進(jìn)行自 修正,并使移位自修正后的第 一組源操作數(shù)和第二組源操作數(shù)成為下一 濾波處理的源操作數(shù)。
24. —種如權(quán)利要求23所述的濾波方法,其中使用所述寫回裝置將 移位后的所述第 一組源操作數(shù)和所述第二組源操作數(shù)分別寫回到所述存 儲裝置的所述第 一寄存器和所述第二寄存器。
25. —種如權(quán)利要求24所述的濾波方法,其中所述濾波方法使用至 少兩個(gè)所述寫回裝置。
26. —種如權(quán)利要求17-25中任一項(xiàng)所述的濾波裝置,其中所述濾 波裝置的所述濾波系數(shù)是對稱的。
27. 根據(jù)權(quán)利要求21、 22中的濾波方法,其中所述向量算術(shù)邏輯 單元分別對第一組源操作數(shù)中的部分源操作數(shù)和第二組源操作數(shù)中對應(yīng) 的源操作數(shù)進(jìn)行加法運(yùn)算。
28. 根據(jù)權(quán)利要求17-27中任一項(xiàng)的濾波方法,其中通過對水平 排列的源操作數(shù)進(jìn)行預(yù)定次數(shù)的濾波處理獲得m個(gè)橫向插值結(jié)果。
29. 根據(jù)權(quán)利要求17-27中任一項(xiàng)的濾波方法,用于執(zhí)行偶數(shù)抽 頭對稱濾波處理,其中濾波處理的預(yù)定次數(shù)等于抽頭數(shù)的二分之一。
30. 才艮據(jù)權(quán)利要求29的濾波方法,用于在H.264標(biāo)準(zhǔn)視頻編解碼 中執(zhí)行6抽頭對稱濾波處理,其中第一組源搮作數(shù)是表示8個(gè)像素點(diǎn)的p0,pl,p2,p3,p4,p5,p6,p7,第二組源操作數(shù)是表示8個(gè)像素點(diǎn)的pl,p2, p3,p4,p5,p6,p7p8,通過對第一和第二組源操作數(shù)執(zhí)行預(yù)定濾波系數(shù)分別為a0, al, a2的三次濾波處理,在累加寄存器中獲得4個(gè)插值結(jié)果acc = a0*(| p0+p5 | pl+p6 | p2+p7 | p3+p8 |)acc = al*(| pl+p4 | p2+p5 | p3+p6 | p4+p71) + accacc = a2*(| p2+p3 | p3+p4 | p4+p5 | p5+p6 |) + acc其中acc表示累加寄存器的保持結(jié)果。
31. 根據(jù)權(quán)利要求17-27中任一項(xiàng)的濾波方法,適于執(zhí)行奇數(shù)抽 頭對稱濾波處理,其中濾波處理的預(yù)定次數(shù)等于"抽頭數(shù)+r的二分之一,并且在最后i次濾波處理前使用兩個(gè)多路復(fù)用陣列使第二組源操作數(shù)全 部變?yōu)榱?,將全部為零的第二組源操作數(shù)寫回到第二寄存器。
32. 根據(jù)權(quán)利要求31的濾波方法,適于執(zhí)行5抽頭對稱濾波處理, 其中第一組源操作數(shù)是表示8個(gè)像素點(diǎn)的p0,pl,p2,p3,p4,p5,p6,p7,第二組源操作數(shù)是表示相同8個(gè)像素點(diǎn)的p0,pl,p2,p3,p4,p5,p6,p7,通過對第一和第二組源操作數(shù)執(zhí)行預(yù)定濾波系數(shù)分別為a0, al, a2的三次濾波處理,在累加寄存器中獲得4個(gè)插值結(jié)果acc = a0*(| p0+p4 | pl+p5 | p2+p6 | p3+p7 |)acc = al*(| pl+p3 | p2+p4 | p3+p5 | p4+p6 |) + accacc = a2*(| p2+ 0 | p3+ 0 | p4+ 0 | p5+ 0 |) + acc其中acc表示累加寄存器的保持結(jié)果。
33. —種濾波系數(shù)對稱的濾波裝置,適于執(zhí)行SIMD指令通過預(yù)定 次數(shù)的濾波處理獲得m個(gè)插值結(jié)果,其中m為不小于1的整數(shù),該濾波 裝置包括輸入裝置,用于分別從第一寄存器和笫二寄存器輸入用于插值處理 的笫一組源操作數(shù)和第二組源操作數(shù),其中笫一組源操作數(shù)和第二組源 操作數(shù)的源操作數(shù)的個(gè)數(shù)為大于或等于m的整數(shù); 向量算術(shù)邏輯裝置,所述向量算術(shù)邏輯裝置包括m個(gè)向量算術(shù)邏輯單元,分別用于對第一組源操作數(shù)中的最 左邊的m個(gè)源操作數(shù)和笫二組源操作數(shù)中的最右邊的m個(gè)源操作 數(shù)進(jìn)行邏輯運(yùn)算;m個(gè)中間向量寄存器,分別用于存儲m個(gè)向量算術(shù)邏輯單元 的運(yùn)算結(jié)果;m個(gè)并行乘法累加器,分別用于將來自上述m個(gè)中間向量寄 存器中的運(yùn)算結(jié)果與預(yù)定的濾波系數(shù)相乘,并將各個(gè)乘積分別與 已存儲在m個(gè)累加寄存器中的結(jié)果相加;和m個(gè)累加寄存器,分別用于存儲上述的相加結(jié)果, 兩個(gè)多路復(fù)用陣列,通過分別對第一組源操作數(shù)和第二組源操作數(shù) 向左移位和向右移位并將第一組源操作數(shù)的最右邊數(shù)據(jù)填零和將第二組 源操作數(shù)的最左邊數(shù)據(jù)填零進(jìn)行自修正,以使移位自修正后的第 一組和 第二組源操作數(shù)成為下一濾波處理的源搮作數(shù),寫回裝置,用于分別將移位后的第一組源操作數(shù)和第二組源操作數(shù) 寫回到第一寄存器和第二寄存器,繼續(xù)下一濾波處理。
34. —種濾波系數(shù)對稱的濾波方法,用于執(zhí)行SIMD指令通過預(yù)定 次數(shù)的濾波處理獲得m個(gè)插值結(jié)果,其中m為不小于1的整數(shù),該濾波 方法包括如下步驟a) .分別從第一寄存器和第二寄存器輸入用于插值處理的第一組源 操作數(shù)和第二組源操作數(shù),其中第一組源操作數(shù)和第二組源操作數(shù)的源 操作數(shù)的個(gè)數(shù)為大于或等于m的整數(shù);b) .使用m個(gè)向量算術(shù)邏輯單元分別對第一組源操作數(shù)中的最左邊 的m個(gè)源操作數(shù)和第二組源操作數(shù)中的最右邊的m個(gè)源操作數(shù)進(jìn)行邏輯 運(yùn)算,將獲得的m個(gè)運(yùn)算結(jié)果分別存儲在m個(gè)中間向量寄存器中;c) .使用m個(gè)并行乘法累加器分別將來自上述m個(gè)中間向量寄存器 中的運(yùn)算結(jié)果與預(yù)定的濾波系數(shù)相乘,并將各個(gè)乘積分別與已存儲在m 個(gè)累加寄存器中的結(jié)果相加,將上述的相加結(jié)果存儲在m個(gè)累加寄存器中;d) .使用多路復(fù)用陣列,用于通過分別對第一組源操作數(shù)和第二組源 操作數(shù)向左移位和向右移位并將第一組源操作數(shù)的最右邊數(shù)據(jù)填零和將 第二組源操作數(shù)的最左邊數(shù)據(jù)填零進(jìn)行自修正,以使移位自修正后的第 一組和第二組源操作數(shù)成為下一濾波處理的源操作數(shù),e) .使用寫回通道分別將移位后的第 一組源操作數(shù)和第二組源操作 數(shù)寫回到第一寄存器和第二寄存器;f) .重復(fù)步驟a)-e)直至在m個(gè)累加寄存器中獲得m個(gè)插值結(jié)果。
全文摘要
本發(fā)明提出修正計(jì)算次序以適應(yīng)水平對稱濾波,并且在修正SIMD計(jì)算的同時(shí)修正源操作數(shù),以免除需要轉(zhuǎn)置像素矩陣這樣的繁重開銷。具體地,本發(fā)明針對6抽頭對稱濾波提出通過將現(xiàn)有技術(shù)中涉及插值濾波的等式重排為等式(5)、(6)和(7),將其時(shí)鐘循環(huán)減少為3次即可獲得插值結(jié)果acc=a0*(|p0+p5|p1+p6|p2+p7|p3+p8|)(5);acc=a1*(|p1+p4|p2+p5|p3+p6|p4+p7|)+acc(6);acc=a2*(|p2+p3|p3+p4|p4+p5|p5+p6|)+acc(7)。
文檔編號H04N7/26GK101163240SQ20061013614
公開日2008年4月16日 申請日期2006年10月13日 優(yōu)先權(quán)日2006年10月13日
發(fā)明者律 萬, 洋 劉, 敏 朱, 林國輝 申請人:國際商業(yè)機(jī)器公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1