專利名稱:用于產(chǎn)生兩個(gè)獨(dú)立絕對(duì)差和的指令的制作方法
技術(shù)領(lǐng)域:
本發(fā)明實(shí)施例大體來說涉及一種用于產(chǎn)生兩個(gè)獨(dú)立絕對(duì)差和的指令。
背景技術(shù):
當(dāng)前,運(yùn)動(dòng)估計(jì)是廣泛用于對(duì)視頻信息進(jìn)行編碼/壓縮的一種方法。在基于塊的
運(yùn)動(dòng)估計(jì)中,每一視頻幀被分割為塊(像素陣列),例如16x16、 8x8或4x4像素的 塊。圖1是一種運(yùn)動(dòng)估計(jì)方法的概念圖。如圖1中所示,對(duì)于當(dāng)前幀105的當(dāng)前塊 110來說,在參考幀115 (例如,所述當(dāng)前幀之前或之后的幀)的搜索區(qū)域120中執(zhí) 行搜索以找出其最匹配的塊(根據(jù)像素值)。當(dāng)在參考幀115中找到最匹配的塊125 時(shí),使用運(yùn)動(dòng)向量130 (指示最匹配的塊125相對(duì)于當(dāng)前塊110的位移)及與當(dāng)前塊 110的像素值差來對(duì)所述當(dāng)前塊進(jìn)行編碼。針對(duì)所述當(dāng)前幀中的每一塊重復(fù)此過程。
用于確定參考幀中的與當(dāng)前塊最匹配的塊的技術(shù)通常使用使用絕對(duì)差和(SAD) 運(yùn)算確定的準(zhǔn)則(例如,平均絕對(duì)誤差(MAE)或平均絕對(duì)差(MAD)準(zhǔn)則)。在這些技 術(shù)中,計(jì)算當(dāng)前塊與參考幀的搜索區(qū)域中的每一塊之間的像素值的絕對(duì)差和。對(duì)具有 像素值A(chǔ)的當(dāng)前塊及具有像素值Bi的參考?jí)K執(zhí)行的SAD運(yùn)算可由以下方程式表示
SIAi陽Bil = C,
針對(duì)所述搜索區(qū)域中的每一參考?jí)K執(zhí)行SAD運(yùn)算且將具有最低SAD值(C)的參 考?jí)K選擇為最匹配塊。然而,運(yùn)動(dòng)估計(jì)中所需要的大量SAD運(yùn)算在計(jì)算上密集且可 消耗大量的處理時(shí)間及資源。因此,需要一種用以執(zhí)行SAD運(yùn)算的高效方式。
發(fā)明內(nèi)容
所揭示的某些方面提供一種用于在接收到單個(gè)SAD指令時(shí)執(zhí)行兩個(gè)獨(dú)立SAD運(yùn) 算的方法及設(shè)備。在某些實(shí)施例中,并行執(zhí)行所述兩個(gè)獨(dú)立SAD運(yùn)算。所述SAD運(yùn) 算處理存儲(chǔ)在兩個(gè)源寄存器中的源值,其中將所述運(yùn)算的兩個(gè)和結(jié)果加載到目的寄存 器中。在某些實(shí)施例中,所述源寄存器及目的寄存器各自包含一對(duì)經(jīng)對(duì)準(zhǔn)的寄存器, 所述對(duì)中的第一寄存器稱作第一部分,而所述對(duì)中的第二寄存器稱作所述源寄存器或 目的寄存器的第二部分。在某些實(shí)施例中,可獨(dú)立地存取一對(duì)經(jīng)對(duì)準(zhǔn)的寄存器的每一 部分(寄存器),使得第一 SAD運(yùn)算可存取所述源寄存器或目的寄存器的第一部分 (寄存器),而第二獨(dú)立SAD運(yùn)算可同時(shí)(并行)存取所述源寄存器或目的寄存器 的第二部分。對(duì)存儲(chǔ)在所述第一源寄存器的第一部分中的第一組值及存儲(chǔ)在所述第二源寄存
器的第一部分中的第二組值執(zhí)行所述第一SAD運(yùn)算。然后,將所述第一SAD運(yùn)算的
結(jié)果存儲(chǔ)到所述目的寄存器的第一部分中。對(duì)存儲(chǔ)在所述第一源寄存器的第二部分中
的第三組值及存儲(chǔ)在所述第二源寄存器的第二部分中的第四組值執(zhí)行所述第二 SAD 運(yùn)算。然后,將所述第二SAD運(yùn)算的結(jié)果存儲(chǔ)到所述目的寄存器的第二部分中。
在某些實(shí)施例中,所述兩個(gè)獨(dú)立SAD運(yùn)算所處理的值為視頻幀的塊的像素值。 在某些實(shí)施例中,所述兩個(gè)獨(dú)立SAD運(yùn)算用于視頻壓縮或運(yùn)動(dòng)估計(jì)。
圖1是一種運(yùn)動(dòng)估計(jì)方法的概念圖2顯示對(duì)當(dāng)前塊及參考?jí)K執(zhí)行的SAD運(yùn)算的概念圖3顯示并行塊處理的概念圖4顯示其中并行執(zhí)行兩個(gè)獨(dú)立SAD運(yùn)算的計(jì)算機(jī)架構(gòu)的概念圖-, 圖5顯示在圖4中所示的計(jì)算機(jī)架構(gòu)中產(chǎn)生兩個(gè)獨(dú)立SAD結(jié)果的單個(gè)SAD指令 的指令語法;
圖6顯示其中并行執(zhí)行兩個(gè)獨(dú)立SAD運(yùn)算的替代性計(jì)算機(jī)架構(gòu)的概念圖7顯示在圖6中所示的替代性計(jì)算機(jī)架構(gòu)中產(chǎn)生兩個(gè)獨(dú)立SAD結(jié)果的單個(gè)
SAD指令的指令語法;
圖8是顯示可用于在硬件中實(shí)施SAD指令的編譯器本征及編碼的表格;
圖9是一種用于使用兩個(gè)源寄存器及一 目的寄存器并行執(zhí)行兩個(gè)獨(dú)立SAD運(yùn)算
的方法的流程圖;及
圖IO顯示用于某些實(shí)施例中的通用計(jì)算機(jī)架構(gòu)的概念圖。
具體實(shí)施例方式
本文所用"實(shí)例性" 一詞意指"用作實(shí)例、例證或例示"。本文中說明為"實(shí)例 性"的任一實(shí)施例未必解釋為優(yōu)選或比其它實(shí)施例有利。
圖2顯示對(duì)當(dāng)前幀的當(dāng)前塊205及參考幀的參考?jí)K210執(zhí)行的SAD運(yùn)算的概念 圖。在圖2的實(shí)例中,幀的塊包含4x4像素陣列,每一像素包含1字節(jié)的像素值。在 其它實(shí)施例中,塊包含不同大小的像素陣列,每一像素包含不同大小的像素值。
如圖2中所示,當(dāng)前塊205包含多個(gè)像素AO-A15且參考?jí)K210包含多個(gè)像素 B0-B15。對(duì)所述當(dāng)前及參考?jí)K執(zhí)行的SAD運(yùn)算首先確定所述當(dāng)前與參考?jí)K205及210 的對(duì)應(yīng)像素的像素值之間的差(即,AO-BO、 A1-B1、 A2-B2, ...A15-B15)。然后, 所述SAD運(yùn)算確定一組絕對(duì)差,其包含所述當(dāng)前與參考?jí)K205及210的對(duì)應(yīng)像素的 像素值之間的絕對(duì)差(即,IAO-BOI、 IA1-Bll、 IA2-B2I,…lA15-B151)。最后,所述 SAD運(yùn)算確定所述組絕對(duì)差的和(即,IA0-B0I + IA1-B1I + IA2-B2I ...+ IA15—B15I)。如本文中所使用,對(duì)包含至少兩個(gè)值(例如,像素值A(chǔ)O及Al)的第一組值及
包含至少兩個(gè)值(例如,像素值B0及B1)的第二組值執(zhí)行SAD運(yùn)算,所述SAD運(yùn) 算確定一組絕對(duì)差,其包含所述第一及第二組值的特定值之間的至少兩個(gè)絕對(duì)差(例 如,IAO-BOI及IAl-Bll)及所述組至少兩個(gè)絕對(duì)差的和(例如,IAO-B0I + IA1-B1I)。 在某些實(shí)施例中,所述第一及第二組值各自包含兩個(gè)以上的值(例如,像素值A(chǔ)0-A15 及B0-B15)。對(duì)第一組值A(chǔ),及第二組值Bi執(zhí)行的SAD運(yùn)算可由以下方程式表示
SlAi-Bil = C
其中C表示所述SAD運(yùn)算的結(jié)果(即,所產(chǎn)生的值)。
通常通過軟件或硬件(例如,中央處理器、微處理器、數(shù)字信號(hào)處理器或類似裝 置)來實(shí)施針對(duì)運(yùn)動(dòng)估計(jì)執(zhí)行的SAD運(yùn)算。取決于所述軟件或硬件如何經(jīng)配置來使 用SAD運(yùn)算將當(dāng)前塊與多個(gè)參考?jí)K相比較,可串行或并行進(jìn)行塊比較。在串行塊比 較中,在與第二參考?jí)K的任何像素的比較開始之前,將當(dāng)前塊的像素與第一參考?jí)K的 所有對(duì)應(yīng)像素相比較。
圖2中圖解說明串行塊比較的實(shí)例,其中在與來自另一參考?jí)K的像素值的比較開 始之前,將來自當(dāng)前塊205的所有像素值(A0-A15)與來自參考?jí)K210的所有像素值 (B0-B15)相比較。將來自當(dāng)前塊205的像素值(A0-A15)及來自參考?jí)K210的像素值 (B0-B15)從存儲(chǔ)器加載到寄存器以在來自另一參考?jí)K的任何像素值被從存儲(chǔ)器加載 到所述寄存器(但通常需要兩個(gè)或兩個(gè)以上加載循環(huán),此取決于所述寄存器的大小) 之前完成所述參考?jí)K的處理。
在其它實(shí)施例中,可執(zhí)行并行塊比較,從而將當(dāng)前塊的第一子組像素(例如,第 一行像素)與第一參考?jí)K的對(duì)應(yīng)像素子組(例如,第一行像素)相比較,且還同時(shí)與
第二參考?jí)K的對(duì)應(yīng)像素子組(例如,第一行像素)相比較。然后,將所述當(dāng)前塊的下 一子組像素(例如,第二行像素)與所述第一參考?jí)K的對(duì)應(yīng)下--子組像素(例如,第 二行像素)相比較且還同時(shí)與第二參考?jí)K的對(duì)應(yīng)下一子組像素(例如,第二行像素) 相比較等等,直到處理完所述當(dāng)前以及第一及第二參考?jí)K的每一像素。因此,在并行 塊比較中,可并行執(zhí)行當(dāng)前塊與兩個(gè)或兩個(gè)以上參考?jí)K之間的比較。應(yīng)注意,在并行 塊比較中,可減少數(shù)據(jù)檢索時(shí)間,因?yàn)閺拇鎯?chǔ)器檢索較少數(shù)據(jù)。舉例來說,值A(chǔ)0-A3 被一次檢索且用于兩個(gè)SAD運(yùn)算中(而在串行塊比較中,檢索值A(chǔ)0-A7需要較長檢 索時(shí)間)。
圖3顯示并行塊處理的概念圖,其中對(duì)當(dāng)前塊的第一行305 (包含像素A0-A3) 及第一參考?jí)K的第一行310 (包含像素B0-B3)執(zhí)行第一SAD運(yùn)算,且對(duì)當(dāng)前塊305 的第一行及第二參考?jí)K的第一行315 (包含像素C0-C3)執(zhí)行第二 SAD運(yùn)算。在某些 實(shí)施例中,并行執(zhí)行所述第一及第二 SAD運(yùn)算。在圖3的實(shí)例中,幀的塊包含4x4 像素陣列,所述陣列中的每一行包含4個(gè)像素,每一像素包含1字節(jié)的像素值。在其 它實(shí)施例中,塊包含不同大小的像素陣列,所述陣列中的每一行包含不同數(shù)量的像素, 每一像素包含不同大小的像素值。通常將來自當(dāng)前塊205的像素值(A0-A3)及來自第一及第二參考?jí)K的像素值 (B0-B3及C0-C3)加載到寄存器中以進(jìn)行處理。對(duì)所述當(dāng)前塊的第一行305及所述第 一參考?jí)K的第一行310 (包含像素B0-B3)執(zhí)行的第一 SAD運(yùn)算包含確定對(duì)應(yīng)像素之 間的絕對(duì)差(即,IAO-BOI、 IAl-Bll、 lA2-B2l及IA3-B31)及將所述絕對(duì)差相加(艮口, IA0-B0I + IA1-B1I + IA2-B2I + IA3-B3I)。對(duì)所述當(dāng)前塊的第一行305及所述第二參 考?jí)K的第一行315 (包含像素CO-C3)執(zhí)行的第二 SAD運(yùn)算包含確定對(duì)應(yīng)像素之間的 絕對(duì)差(即,IAO-COI、 IA1-Cll、 lA2-C2l及IA3-C3l)及將所述絕對(duì)差相加(即,IAO-COI + IA1-C1I + IA2-C2I + IA3-C3I)。然后,對(duì)所述當(dāng)前及第一及第二參考?jí)K的第二行像 素執(zhí)行第三及第四SAD運(yùn)算等等,直到處理完所述當(dāng)前塊的所有像素。
不管使用SAD運(yùn)算串行還是并行將當(dāng)前塊與參考?jí)K相比較,如果可通過減少使 用處理時(shí)間及資源高效地執(zhí)行SAD運(yùn)算,那么可優(yōu)化運(yùn)動(dòng)估計(jì)。在某些實(shí)施例中, 使用用于存儲(chǔ)兩個(gè)獨(dú)立SAD運(yùn)算的結(jié)果的目的寄存器并行執(zhí)行所述兩個(gè)獨(dú)立SAD運(yùn) 算。在某些實(shí)施例中,使用單個(gè)指令來規(guī)定所述兩個(gè)獨(dú)立SAD運(yùn)算,其中所述單個(gè) 指令的執(zhí)行產(chǎn)生兩個(gè)獨(dú)立的SAD結(jié)果。
圖4顯示計(jì)算機(jī)架構(gòu)400的概念圖,其中使用兩個(gè)源寄存器及一 目的寄存器并行 執(zhí)行兩個(gè)獨(dú)立SAD運(yùn)算401及402。應(yīng)注意,圖4僅出于例示的目的且圖解說明SAD 運(yùn)算的分離步驟。在其它實(shí)施例中,SAD運(yùn)算不通過多個(gè)步驟(如圖4中所示)來 執(zhí)行,而是在單個(gè)步驟中執(zhí)行。如圖4中所示,對(duì)加載到第一源寄存器Rss405的值 X0-X7及加載到第二源寄存器Rtt 410的值Y0-Y7執(zhí)行所述兩個(gè)SAD運(yùn)算401及402。 如本文中所提及,由SAD運(yùn)算處理的輸入值(例如,X0-X7及Y0-Y7)稱作源值。 源寄存器中的每一值具有相對(duì)于所述源寄存器中的其它值的特定排序或位置(第一 值、第二值等)。如果所述第一源寄存器中的特定值與所述第二源寄存器中的特定值 在所述第一及第二源寄存器中具有相同的排序或位置,那么將其視為"對(duì)應(yīng)值"。舉 例來說,所述第一源寄存器中的第一值與所述第二源寄存器中的第一值為對(duì)應(yīng)值。將 所述兩個(gè)SAD運(yùn)算401及402的結(jié)果加載到目的寄存器Rdd 425中。
可在串行塊處理中使用所述SAD運(yùn)算401及402 (例如,其中值X0-X7等于值 A0-A7,而值Y0-Y7等于圖2的值B0-B7)??稍诓⑿袎K處理中使用所述SAD運(yùn)算 401及402(例如,其中值X0-X3等于值A(chǔ)O-A3,值X4-X7也等于值A(chǔ)0-A3,值Y0-Y3 等于值C0-C3,且值Y4-Y7等于圖3的值B0-B3)。在其它實(shí)施例中,在其它類型的 處理中使用所述SAD運(yùn)算401及402。在某些實(shí)施例中,所述SAD運(yùn)算401及402 處理包含兩個(gè)向量的值并產(chǎn)生超標(biāo)量值結(jié)果。
對(duì)存儲(chǔ)在第一源寄存器Rss 405的第一部分中的第一組值X0-X3及存儲(chǔ)在第二源 寄存器Rtt 410的第一部分中的第二組值Y0-Y3執(zhí)行第一 SAD運(yùn)算401。所述第一 SAD運(yùn)算401包含確定第一組絕對(duì)差,其包含存儲(chǔ)在所述第一及第二源寄存器的第 一部分中的第一及第二組值中的對(duì)應(yīng)值之間的絕對(duì)差(即,1X0-Y0I、IX1-Y1I、IX2-Y2I 及IX3-Y31)并將所述第一組絕對(duì)差相加(即,1X0-YOI + 1X1-Yll + 1X2-Y2I +IX3-Y31)。將所述第一 SAD運(yùn)算401的和結(jié)果存儲(chǔ)在目的寄存器Rdd 425的第一部 分(W0)中。
對(duì)存儲(chǔ)在第一源寄存器Rss405的第二部分中的第三組值X4-X7及存儲(chǔ)在第二源 寄存器Rtt 410的第二部分中的第四組值Y4-Y7執(zhí)行第二 SAD運(yùn)算402。所述第二 SAD運(yùn)算402包含確定第二組絕對(duì)差,其包含存儲(chǔ)在所述第一及第二源寄存器的第 二部分中的第三及第四組值中的對(duì)應(yīng)值之間的絕對(duì)差(即,1X4-Y4I、IX5-Y5UX6-Y6I 及IX7-Y71)并將所述第二組絕對(duì)差相加(即,1X4-Y4I + 1X5-Y5I + IX6-Y6I + IX7-Y71)。將所述第二SAD運(yùn)算402的和結(jié)果存儲(chǔ)在目的寄存器Rdd425的第二部 分(W1)中。
在某些實(shí)施例中,圖4中所圖解說明的處理步驟由具有經(jīng)配置以執(zhí)行上文所說明 的處理步驟的組件(例如,算術(shù)邏輯單元)的執(zhí)行單元實(shí)施。舉例來說,多個(gè)AD組 件415可經(jīng)配置以執(zhí)行絕對(duì)差(AD)運(yùn)算,且多個(gè)加法組件420可經(jīng)配置以執(zhí)行加法運(yùn) 算。在其它實(shí)施例中,圖4中圖解說明的處理步驟由算術(shù)邏輯單元內(nèi)所包含的執(zhí)行單 元實(shí)施。
在某些實(shí)施例中,由所述執(zhí)行單元用來執(zhí)行運(yùn)算的所述寄存器的架構(gòu)使得可將一 個(gè)或一個(gè)以上寄存器作為單個(gè)寄存器或作為經(jīng)對(duì)準(zhǔn)的寄存器對(duì)來存取。舉例來說,所 述寄存器可包含多個(gè)32位寄存器,可將其作為單個(gè)寄存器或作為經(jīng)對(duì)準(zhǔn)的64位寄存 器對(duì)來存取,使得指令可處理32位或64位值。在某些實(shí)施例中,所述源寄存器及目 的寄存器(Rss、 Rtt及Rdd)各自包含一對(duì)經(jīng)對(duì)準(zhǔn)的寄存器,所述對(duì)中的第一寄存器 稱作第一部分,而所述對(duì)中的第二寄存器稱作所述源寄存器或目的寄存器的第二部 分。在某些實(shí)施例中,可獨(dú)立地存取一對(duì)經(jīng)對(duì)準(zhǔn)的寄存器的每一部分(寄存器),使 得第一 SAD運(yùn)算可存取所述源寄存器或目的寄存器的第一部分(例如,以檢索并處 理存儲(chǔ)在所述第一部分中的值或?qū)⒅导虞d到所述第一部分中),而第二獨(dú)立SAD運(yùn) 算可同時(shí)(并行)存取所述源寄存器或目的寄存器的第二部分(例如,以檢索并處理 存儲(chǔ)在所述第一部分中的值或?qū)⒅导虞d到所述第二部分中)。在某些實(shí)施例中,所述 第一 SAD運(yùn)算存取/使用兩個(gè)源寄存器及一 目的寄存器的第一部分,而所述第二 SAD 運(yùn)算存取/使用所述兩個(gè)源寄存器及所述目的寄存器的第二部分,可獨(dú)立地存取每一 寄存器的第一及第二部分。
舉例來說,假設(shè)所述第一及第二源寄存器Rss及Rtt中的每一值(X0-X7及Y0-Y7) 包含l個(gè)字節(jié),使得所述第一及第二源寄存器Rss及Rtt為64位(雙字)經(jīng)對(duì)準(zhǔn)的寄 存器對(duì)且每一加法組件420為32位加法器。因此,所述第一SAD運(yùn)算存取存儲(chǔ)在所 述第一源寄存器Rss的第一32位(單字)部分/寄存器中的值X0-X3且存取存儲(chǔ)在所 述第二源寄存器Rtt的第一 32位(單字)部分/寄存器中的值Y0-Y3。此外,所述第 二 SAD運(yùn)算同時(shí)存取存儲(chǔ)在所述第一源寄存器Rss的第二 32位部分/寄存器中的值 X4-X7并存取存儲(chǔ)在所述第二源寄存器RU的第二 32位部分/寄存器中的值Y4-Y7。 所述目的寄存器Rdd將為64位(雙字)經(jīng)對(duì)準(zhǔn)的寄存器對(duì)。將所述第一 SAD運(yùn)算的和結(jié)果存儲(chǔ)到第一32位部分/寄存器(用于字0的"W0")中且將所述第二SAD運(yùn) 算的和結(jié)果存儲(chǔ)到所述目的寄存器Rdd的第二32位部分/寄存器(用于字1的"W1")中。
在某些實(shí)施例中,圖4中所圖解說明的兩個(gè)獨(dú)立SAD運(yùn)算可由單個(gè)SAD指令規(guī) 定。圖5顯示在圖4中所示的計(jì)算機(jī)架構(gòu)400中產(chǎn)生兩個(gè)獨(dú)立SAD結(jié)果的單個(gè)SAD 指令的指令語法505。圖5還顯示當(dāng)接收并執(zhí)行所述單個(gè)SAD指令(例如,通過處 理器的執(zhí)行單元)時(shí)所產(chǎn)生的行為/所得步驟540。
所述指令語法505包括規(guī)定SAD運(yùn)算的指令識(shí)別符510 (例如,"sad")。指 令語法505還包括目的寄存器識(shí)別符515 (例如,Rdd),其識(shí)別存儲(chǔ)所述兩個(gè)獨(dú) 立SAD結(jié)果的寄存器;及兩個(gè)源寄存器識(shí)別符520 (例如,Rss及Rtt),其識(shí)別存 儲(chǔ)將由所述兩個(gè)SAD運(yùn)算處理的源值的兩個(gè)寄存器。在某些實(shí)施例中,指令語法505 可進(jìn)一步包括表征所述源值(輸入)或所述SAD運(yùn)算的所產(chǎn)生的值(輸出)的識(shí)別 符。舉例來說,可使用"vr"(代表"減小的向量")來指示所述源值包含兩個(gè)向量 且所產(chǎn)生的結(jié)果為超標(biāo)量值。作為其它實(shí)例,可使用"ub"(針對(duì)"無符號(hào)字節(jié)") 來指示所述源值包含無符號(hào)字節(jié)值。
在圖5的行為/所得步驟510部分中說明執(zhí)行單個(gè)SAD指令所導(dǎo)致的過程。所述 所得步驟包括所述目的寄存器的初始化(Rdd = 0),用于處理存儲(chǔ)在所述源寄存器 的第一部分中的值的第一組步驟545,及用于處理存儲(chǔ)在所述源寄存器的第二部分中 的值的第二組步驟550。所述第一及第二組處理步驟各自包括絕對(duì)差運(yùn)算565、所述 絕對(duì)差相加到目的寄存器560中及運(yùn)算555的重復(fù)(達(dá)一特定迭代數(shù)量)。在某些實(shí) 施例中,并行執(zhí)行所述第一及第二組處理步驟。
舉例來說,所述第一組處理步驟545包括確定存儲(chǔ)在所述源寄存器Rss及Rtt 的第一部分(在字節(jié)0到3處)中的值的絕對(duì)差("ABS((Rss.ub[i] -Rtt.ub[i])"); 將所述絕對(duì)差相加到所述目的寄存器的第一部分(WO)中("Rdd.w
= (Rdd.w
+ ABS((Rss.ub[i] — Rtt.ub[i])))");及重復(fù)所述運(yùn)算達(dá)一特定迭代數(shù)量("其中i二O; i < 4; i++")。舉例來說,所述第二組處理步驟550包括確定存儲(chǔ)在所述源寄存 器Rss及Rtt的第二部分(在字節(jié)4到7處)中的值的絕對(duì)差("ABS((Rss.ub[i] -Rtt.ub[i])");將所述絕對(duì)差相加到所述目的寄存器的第二部分(Wl)中("Rdd.w[l] =(Rdd.w[l] + ABS((Rss.ub[i] - Rtt.ub[i])))");及重復(fù)所述運(yùn)算達(dá)一特定迭代數(shù)量("其 中i = 4; i<8; i++")。
圖6顯示替代性計(jì)算機(jī)架構(gòu)600的概念圖,其中使用兩個(gè)源寄存器Rss及Rtt及 一目的寄存器Rdd并行執(zhí)行兩個(gè)獨(dú)立SAD運(yùn)算。應(yīng)注意,圖6僅出于例示的目的且 圖解說明SAD運(yùn)算的分離歩驟。在其它實(shí)施例中,SAD運(yùn)算不通過多個(gè)步驟(如圖 6中所示)來執(zhí)行,而是在單個(gè)步驟中執(zhí)行。
替代性計(jì)算機(jī)架構(gòu)600類似于圖4的計(jì)算機(jī)架構(gòu)400,除替代性計(jì)算機(jī)架構(gòu)600 包括用于每一 SAD運(yùn)算的累加循環(huán)605。累加循環(huán)605允許兩個(gè)或兩個(gè)以上SAD運(yùn)算的和結(jié)果累加到所述目的寄存器Rdd的特定部分中。舉例來說,假設(shè)對(duì)所述兩個(gè)源
寄存器的第一部分中的源值執(zhí)行第一 SAD運(yùn)算,所述運(yùn)算產(chǎn)生被存儲(chǔ)到所述目的寄
存器的第一部分中的第一和結(jié)果。那么此后,將新的源值加載到所述兩個(gè)源寄存器的
第一部分中且對(duì)所述新源值執(zhí)行第二 SAD運(yùn)算以產(chǎn)生第二和結(jié)果。累加循環(huán)605允 許所述第二和結(jié)果與存儲(chǔ)在所述目的寄存器的第一部分中的第一和結(jié)果累加/相加。 然后,將所述所累加的和(第一和+第二和)存儲(chǔ)回所述目的寄存器的相同第一部分。 應(yīng)注意,替代性計(jì)算機(jī)架構(gòu)600中的加法組件420還從目的寄存器Rdd接收輸入。
因此,通過使用累加循環(huán)605,可將當(dāng)前SAD運(yùn)算的當(dāng)前和結(jié)果與一個(gè)或一個(gè) 以上先前SAD運(yùn)算的一個(gè)或一個(gè)以上先前和結(jié)果(通常包含非零值)相加/累加。在 某些實(shí)施例中,將當(dāng)前SAD運(yùn)算的和結(jié)果與所述目的寄存器的特定部分中的非零值 相加/累加(所述非零值包含一個(gè)或一個(gè)以上先前SAD運(yùn)算的一個(gè)或一個(gè)以上先前和 結(jié)果),其中然后將所述所累加的和(當(dāng)前和+—個(gè)或一個(gè)以上先前和)存儲(chǔ)回所述 目的寄存器的相同部分。
圖7顯示在圖6中所示的替代性計(jì)算機(jī)架構(gòu)600中產(chǎn)生兩個(gè)獨(dú)立SAD結(jié)果的單 個(gè)SAD指令的指令語法705。圖7還顯示當(dāng)接收并執(zhí)行所述單個(gè)SAD指令(例如, 通過處理器的執(zhí)行單元)時(shí)所產(chǎn)生的行為/所得步驟740。應(yīng)注意,在圖6的所述替代 性計(jì)算機(jī)架構(gòu)600的指令語法705中,需要來自寄存器Rss、 Rtt及Rdd的值的三個(gè) 輸入。此與圖4的計(jì)算機(jī)架構(gòu)400的指令語法505形成對(duì)比,其僅需要兩個(gè)輸入(來 自寄存器Rss及Rtt中的值)。還應(yīng)注意,在指令語法505的所得步驟540中,將所 述目的寄存器初始化為零(Rdd = 0),因?yàn)橹噶钫Z法505的所得步驟540不累加當(dāng) 前與先前SAD運(yùn)算的和。然而,在指令語法705的所得步驟740中,不將所述目的 寄存器初始化為零,因?yàn)樗瞿康募拇嫫骺赡鼙4嬉粋€(gè)或一個(gè)以上先前SAD運(yùn)算的 和且指令語法705的所得步驟740累加當(dāng)前與先前SAD運(yùn)算的和。
和的累加在其中需要當(dāng)前塊與參考?jí)K的所有像素的絕對(duì)差的總和的塊比較中尤 其有益。每一塊比較需要多個(gè)SAD運(yùn)算,因?yàn)閱蝹€(gè)SAD運(yùn)算通常僅可處理當(dāng)前及參 考?jí)K的一部分。舉例來說,對(duì)于具有四行像素的當(dāng)前及參考?jí)K來說,通常需要四個(gè) SAD運(yùn)算(一個(gè)SAD運(yùn)算用于每一行)來將所述當(dāng)前與參考?jí)K相比較。因此,必須 確定所述四個(gè)SAD運(yùn)算的結(jié)果的總和(即,所述四個(gè)和結(jié)果的累加)。累加循環(huán)605 允許在每一 SAD運(yùn)算之后累加對(duì)相同當(dāng)前及參考?jí)K執(zhí)行的分離SAD運(yùn)算的和結(jié)果。 因此,不需要稍后通過分離的指令將所述分離SAD運(yùn)算的和結(jié)果相加在一起。
圖8是顯示可用于在硬件中實(shí)施SAD指令的編譯器本征及編碼的表格。當(dāng)用高 級(jí)語言(例如C語言)寫入代碼時(shí),所述編譯器本征對(duì)于編程師來說有用。所述編程 師可使用所述編譯器本征來指導(dǎo)編譯器在匯編級(jí)使用對(duì)應(yīng)于Rdd = vrsadub (Rss, Rtt) 或Rxx+ = vrsadub (Rss, Rtt)(如圖8中所示)的指令。所述編碼可用于設(shè)計(jì)處理器(例 如,數(shù)字信號(hào)處理器)的指令單元。在其它實(shí)施例中,不同的編譯器本征及編碼用于 在硬件中實(shí)施SAD指令。圖9是一種用于使用兩個(gè)源寄存器及一 目的寄存器并行執(zhí)行兩個(gè)獨(dú)立SAD運(yùn)算
的方法900的流程圖。在某些實(shí)施例中,在軟件或硬件中實(shí)施(例如,通過處理器的 執(zhí)行單元)方法900的某些步驟。方法900的步驟僅出于例示性目的且步驟的次序或 編號(hào)可在其它實(shí)施例中改變或互換。
當(dāng)接收單個(gè)SAD指令(在905處)時(shí),方法900開始,所述指令規(guī)定SAD運(yùn)算、 存儲(chǔ)源值的第一及第二源寄存器及用以存儲(chǔ)所述SAD運(yùn)算結(jié)果(例如,"Rdd = vrsadub(Rss,Rtt)")的目的寄存器。響應(yīng)于接收所述單個(gè)SAD指令,然后所述方法 900執(zhí)行兩個(gè)獨(dú)立的SAD運(yùn)算。為進(jìn)行此運(yùn)算,所述方法從存儲(chǔ)器將第一組值(例 如,X0-X3)加載到所述第一源寄存器的第一部分中,將第二組值(例如,Y0-Y3) 加載到所述第二源寄存器的第一部分中,將第三組值(例如,X4-X7)加載到所述第 一源寄存器的第二部分中且將第四組值(例如,Y4-Y7)加載到所述第二源寄存器的 第二部分中(在907處)。然后,所述方法執(zhí)行用于對(duì)存儲(chǔ)在所述源寄存器的第一部 分中的源值執(zhí)行第一 SAD運(yùn)算的第一組步驟(910-920)及用于對(duì)存儲(chǔ)在所述源寄存器 的第二部分中的源值執(zhí)行第二 SAD運(yùn)算的第二組步驟(925-935)。在某些實(shí)施例中, 并行執(zhí)行所述第一及第二組步驟(即,所述第一及第二SAD運(yùn)算)。
在步驟910處,方法900確定第一組絕對(duì)差,其包含存儲(chǔ)在所述第一及第二源寄 存器的所述第一部分中的第一及第二組值中的對(duì)應(yīng)值的絕對(duì)差。然后,所述方法將所 述第一組絕對(duì)差相加(在915處)。視情況,然后,所述方法將所述第一組絕對(duì)差的 和與存儲(chǔ)在目的寄存器的第一部分中的一個(gè)或一個(gè)以上先前SAD運(yùn)算的一個(gè)或一個(gè) 以上先前和(通常為非零值)相加/累加(在917處)。然后,所述方法將所述和或 累加結(jié)果加載到所述目的寄存器的第一部分中(在920處)。
在步驟925處,方法900確定第二組絕對(duì)差,其包含存儲(chǔ)在所述第一及第二源寄 存器的所述第二部分中的第三及第四組值中的對(duì)應(yīng)值的絕對(duì)差。然后,所述方法將所 述第二組絕對(duì)差相加(在930處)。視情況,然后,所述方法將所述第二組絕對(duì)差的 和與存儲(chǔ)在目的寄存器的第二部分中的一個(gè)或一個(gè)以上先前SAD運(yùn)算的一個(gè)或一個(gè) 以上先前和(通常為非零值)相加/累加(在932處)。然后,所述方法將所述和或 累加結(jié)果加載到所述目的寄存器的第二部分中(在935處)。然后,所述方法結(jié)束。
圖IO顯示用于某些實(shí)施例中的通用計(jì)算機(jī)架構(gòu)1000的概念圖。架構(gòu)1000包括 存儲(chǔ)器1010、處理單元1030及將存儲(chǔ)器1010耦合到處理單元1030的一個(gè)或一個(gè)以 .上總線1020。
存儲(chǔ)器IOIO存儲(chǔ)數(shù)據(jù)(例如,視頻幀的塊的像素值)及指令,包括至少一個(gè)SAD 指令。數(shù)據(jù)及指令在存儲(chǔ)器1010中具有用于從存儲(chǔ)器IOIO檢索所述數(shù)據(jù)或指令的特 定地址。存儲(chǔ)器的尋址方案在所屬技術(shù)領(lǐng)域中眾所周知且在此不予以詳細(xì)論述。通過 總線1020將存儲(chǔ)器1010中的數(shù)據(jù)及/或指令加載到處理單元1030中。
處理單元1030包含定序器1035,用于多個(gè)執(zhí)行單元1045的多個(gè)管線1040、通 用寄存器堆1050 (包含多個(gè)通用寄存器)及控制寄存器堆1060。處理單元1030可包含中央處理器、微處理器、數(shù)字信號(hào)處理器及類似裝置。在某些實(shí)施例中,所述多個(gè)
執(zhí)行單元1045包括經(jīng)配置以執(zhí)行SAD運(yùn)算的一個(gè)或一個(gè)以上執(zhí)行單元(稱作SAD 執(zhí)行單元)。SAD執(zhí)行單元包含經(jīng)配置以執(zhí)行SAD運(yùn)算所需要的處理步驟的組件(例 如算術(shù)邏輯單元)(例如用于執(zhí)行絕對(duì)差運(yùn)算的多個(gè)AD組件415及用于將值累加/ 相加的多個(gè)加法組件420)。在其它實(shí)施例中,SAD執(zhí)行單元包含于算術(shù)邏輯單元中。 通常,每一指令包含關(guān)于處理指令所需要的執(zhí)行單元1045的類型的信息,其中 每一執(zhí)行單元通常僅可處理特定類型的指令。定序器1035從存儲(chǔ)器IOIO接收指令, 將所述指令解碼、確定用于每一指令的適當(dāng)執(zhí)行單元1045 (使用所述指令中所包含 的信息)。在針對(duì)指令作出此確定之后,定序器1035向適當(dāng)?shù)膱?zhí)行單元1045發(fā)送控 制信號(hào)且將所述指令輸入到適當(dāng)管線1040中以通過所述適當(dāng)執(zhí)行單元1045進(jìn)行處 理。
接收指令的每一執(zhí)行單元1045使用通用寄存器堆1050執(zhí)行所述指令。如所屬技 術(shù)領(lǐng)域中眾所周知,通用寄存器堆1050包含寄存器陣列。從存儲(chǔ)器IOIO檢索執(zhí)行指 令所需要的任何數(shù)據(jù)(例如,像素值)且將其加載到通用寄存器堆1050中的寄存器 中。在通過執(zhí)行單元1045執(zhí)行指令之后,將所得數(shù)據(jù)(例如,SAD運(yùn)算結(jié)果)存儲(chǔ) 到所述通用寄存器堆1050中且然后將其加載并存儲(chǔ)到存儲(chǔ)器1010中。通過總線1020 將數(shù)據(jù)加載到存儲(chǔ)器1010中及從存儲(chǔ)器IOIO加載數(shù)據(jù)。為執(zhí)行指令,執(zhí)行單元1045 還可使用控制寄存器堆1060??刂萍拇嫫?060通常包含一組專用寄存器,例如修改 器、狀態(tài)及斷定寄存器??刂萍拇嫫?060還可用于存儲(chǔ)與軟件或硬件循環(huán)(例如, 循環(huán)計(jì)數(shù))(反復(fù)計(jì)數(shù))相關(guān)的信息。
舉例來說,如果定序器1035接收SAD指令,那么定序器1035將所述指令輸入 到適當(dāng)管線1040中以通過SAD執(zhí)行單元1045進(jìn)行處理。此外,將執(zhí)行所述SAD指 令所需要的數(shù)據(jù)(例如,像素值)加載到通用寄存器堆1050中的兩個(gè)源寄存器中。 因此,所述SAD指令致使處理單元1030 (使用SAD執(zhí)行單元1045)執(zhí)行兩個(gè)獨(dú)立 SAD運(yùn)算并產(chǎn)生兩個(gè)和結(jié)果。將所述兩個(gè)和結(jié)果存儲(chǔ)到通用寄存器堆1050中的目的 寄存器,然后,通過總線1020將其加載并存儲(chǔ)到存儲(chǔ)器1010中。在某些實(shí)施例中, SAD執(zhí)行單元1045所使用的所述源寄存器及目的寄存器各自包含可單獨(dú)存取的一對(duì) 經(jīng)對(duì)準(zhǔn)的寄存器。
所屬技術(shù)領(lǐng)域中的技術(shù)人員應(yīng)了解,可使用各種不同技術(shù)及技法中的任一種來表 示信息及信號(hào)。舉例來說,以上說明通篇可能提及的數(shù)據(jù)、指令、命令、信息、信號(hào)、 位、符號(hào)、及碼片均可由電壓、電流、電磁波、磁場(chǎng)或粒子、光場(chǎng)或粒子或其任一組 合表示。
所屬技術(shù)領(lǐng)域中的技術(shù)人員應(yīng)進(jìn)一步了解,結(jié)合本文所揭示實(shí)施例而說明的各種 例示性邏輯塊、模塊、電路及算法步驟可實(shí)施為電子硬件、計(jì)算機(jī)軟件或兩者的組合。 為清楚地圖解說明硬件與軟件的此種可互換性,上文就其功能性大體說明了各種例示 性組件、塊、模塊、電路及歩驟。所述功能性實(shí)施為硬件還是軟件取決于特定應(yīng)用及施加于整個(gè)系統(tǒng)上的設(shè)計(jì)約束條件。所屬技術(shù)領(lǐng)域中的技術(shù)人員可針對(duì)每一特定應(yīng)用 采用不同的方法執(zhí)行所說明的功能性,但所述實(shí)施決策不應(yīng)被解釋為背離本發(fā)明的范 圍。
結(jié)合本文所揭示實(shí)施例說明的各種例示性邏輯塊、模塊及電路可通過以下裝置實(shí) 施或執(zhí)行通用處理器、數(shù)字信號(hào)處理器(DSP)、專用集成電路(ASIC)、現(xiàn)場(chǎng)可
編程門陣列(FPGA)或其它可編程邏輯裝置、離散門或晶體管邏輯、離散硬件組件
或其設(shè)計(jì)用于執(zhí)行本文所說明功能的任一組合。通用處理器可以是微處理器,但另一 選擇為,所述處理器可以是任一常規(guī)處理器、控制器、微控制器或狀態(tài)機(jī)。處理器也
可實(shí)施為計(jì)算裝置的組合,例如DSP與微處理器的組合、多個(gè)微處理器的組合、一 個(gè)或一個(gè)以上微處理器與DSP核心的聯(lián)合或任何其它此類配置。
結(jié)合本文所揭示實(shí)施例說明的方法或算法的步驟可直接包含于硬件中、由處理器 執(zhí)行的軟件模塊中或兩者的組合中。軟件模塊可駐存在RAM存儲(chǔ)器、快閃存儲(chǔ)器、 ROM存儲(chǔ)器、EPROM存儲(chǔ)器、EEPROM存儲(chǔ)器、寄存器、硬盤、可抽換式磁盤、 CD-ROM或所屬技術(shù)領(lǐng)域中已知的任一其它形式的存儲(chǔ)媒體中。例示性存儲(chǔ)媒體耦 合到所述處理器,使得所述處理器可從所述存儲(chǔ)媒體讀取信息及向所述存儲(chǔ)媒體寫入 信息。另一選擇為,所述存儲(chǔ)媒體可與所述處理器成一體。所述處理器及所述存儲(chǔ)媒 體可駐存于ASIC中。ASIC可駐存于用戶終端中。另一選擇為,所述處理器及所述 存儲(chǔ)媒體可作為離散組件駐存于用戶終端中。
提供對(duì)所揭示實(shí)施例的以上說明旨在使所屬技術(shù)領(lǐng)域中的技術(shù)人員能夠制作或 使用本發(fā)明。所屬技術(shù)領(lǐng)域中的技術(shù)人員將容易地明了對(duì)這些實(shí)施例的各種修改,且 本文所定義的一般原理也可在背離本發(fā)明的精神或范圍的情況下應(yīng)用于其它實(shí)施例。 因此,并非打算將本發(fā)明限定為本文所示實(shí)施例,而是賦予其與本文所揭示原理及新 穎特征相一致的最寬廣范圍。
權(quán)利要求
1、一種計(jì)算機(jī)可讀媒體,其包含包含在所述媒體中的絕對(duì)差和(SAD)指令,其規(guī)定用以存儲(chǔ)SAD運(yùn)算結(jié)果的目的寄存器,所述絕對(duì)差和指令在由處理單元執(zhí)行時(shí)致使所述處理單元執(zhí)行兩個(gè)獨(dú)立SAD運(yùn)算,所述第一SAD運(yùn)算的結(jié)果存儲(chǔ)在所述目的寄存器的第一部分中且所述第二SAD運(yùn)算的結(jié)果存儲(chǔ)在所述目的寄存器的第二部分中。
2、 如權(quán)利要求1所述的計(jì)算機(jī)可讀媒體,其中所述處理單元并行執(zhí)行所述兩個(gè) SAD運(yùn)算。
3、 如權(quán)利要求1所述的計(jì)算機(jī)可讀媒體,其中所述SAD指令進(jìn)一步規(guī)定存儲(chǔ)用 于通過所述兩個(gè)SAD運(yùn)算進(jìn)行處理的源值的兩個(gè)源寄存器,其中所述處理單元通過 以下方式執(zhí)行所述兩個(gè)獨(dú)立SAD運(yùn)算對(duì)存儲(chǔ)在所述第一源寄存器的第一部分中及所述第二源寄存器的第一部分中的 源值執(zhí)行所述第一SAD運(yùn)算;及對(duì)存儲(chǔ)在所述第一源寄存器的第二部分中及所述第二源寄存器的第二部分中的 源值執(zhí)行所述第二 SAD運(yùn)算,其中所述目的寄存器及源寄存器各自包含一對(duì)經(jīng)對(duì)準(zhǔn) 的寄存器,所述經(jīng)對(duì)準(zhǔn)的寄存器對(duì)中的所述第一寄存器包含所述第一部分且所述經(jīng)對(duì) 準(zhǔn)的寄存器對(duì)中的所述第二寄存器包含所述源寄存器或目的寄存器的所述第二部分。
4、 如權(quán)利要求3所述的計(jì)算機(jī)可讀媒體,其中所述源寄存器及目的寄存器各自 包含兩個(gè)可獨(dú)立存取的部分,使得所述第一 SAD運(yùn)算可存取所述寄存器的第一部分, 而所述第二獨(dú)立SAD運(yùn)算可同時(shí)存取所述寄存器的第二部分。
5、 如權(quán)利要求3所述的計(jì)算機(jī)可讀媒體,其中所述處理單元通過確定第一組絕對(duì)差的和來執(zhí)行所述第一 SAD運(yùn)算,所述第一 組絕對(duì)差包含存儲(chǔ)在所述第一及第二源寄存器的所述第一部分中的對(duì)應(yīng)源值的絕對(duì) 差;且所述處理單元通過確定第二組絕對(duì)差的和來執(zhí)行所述第二 SAD運(yùn)算,所述第二 組絕對(duì)差包含存儲(chǔ)在所述第一及第二源寄存器的所述第二部分中的對(duì)應(yīng)源值的絕對(duì)差。
6、 如權(quán)利要求3所述的計(jì)算機(jī)可讀媒體,其中存儲(chǔ)在所述第一及第二源寄存器中的所述源值包含視頻幀的像素值;且所述第一源寄存器存儲(chǔ)當(dāng)前幀的當(dāng)前塊的像素值且所述第二源寄存器存儲(chǔ)參考 幀的兩個(gè)不同塊的像素值。
7、 如權(quán)利要求1所述的計(jì)算機(jī)可讀媒體,其中所述處理單元通過以下方式執(zhí)行 所述兩個(gè)獨(dú)立SAD運(yùn)算將存儲(chǔ)在所述目的寄存器的所述第一部分中的另一 SAD運(yùn)算的結(jié)果與所述第一 SAD運(yùn)算的所述結(jié)果相加并將所述和存儲(chǔ)在所述目的寄存器的所述第一部分中;及將存儲(chǔ)在所述目的寄存器的所述第二部分中的另一SAD運(yùn)算的結(jié)果與所述第二 SAD運(yùn)算的所述結(jié)果相加并將所述和存儲(chǔ)在所述目的寄存器的所述第二部分中。
8、 一種用于執(zhí)行絕對(duì)差和(SAD)運(yùn)算的方法,所述方法包含 接收規(guī)定用以存儲(chǔ)SAD運(yùn)算結(jié)果的目的寄存器的單個(gè)SAD指令;及 響應(yīng)于接收到所述單個(gè)SAD指令,執(zhí)行兩個(gè)獨(dú)立SAD運(yùn)算,所述第一SAD運(yùn)算的結(jié)果存儲(chǔ)在所述目的寄存器的第一部分中且所述第二 SAD運(yùn)算的結(jié)果存儲(chǔ)在所 述目的寄存器的第二部分中。
9、 如權(quán)利要求8所述的方法,其中并行執(zhí)行所述兩個(gè)SAD運(yùn)算。
10、 如權(quán)利要求8所述的方法,其中所述單個(gè)SAD指令進(jìn)一步規(guī)定存儲(chǔ)用于通 過所述兩個(gè)SAD運(yùn)算進(jìn)行處理的源值的兩個(gè)源寄存器,其中執(zhí)行所述兩個(gè)獨(dú)立SAD 運(yùn)算進(jìn)一步包含對(duì)存儲(chǔ)在所述第一源寄存器的第一部分及所述第二源寄存器的第一部分中的源 值執(zhí)行所述第一SAD運(yùn)算;及對(duì)存儲(chǔ)在所述第一源寄存器的第二部分及所述第二源寄存器的第二部分中的源 值執(zhí)行所述第二SAD運(yùn)算,其中所述目的寄存器及源寄存器各自包含一對(duì)經(jīng)對(duì)準(zhǔn)的寄存器,所述經(jīng)對(duì)準(zhǔn)的寄 存器對(duì)中的所述第一寄存器包含所述第一部分且所述經(jīng)對(duì)準(zhǔn)的寄存器對(duì)中的所述第 二寄存器包含所述源寄存器或目的寄存器的所述第二部分。
11、 如權(quán)利要求IO所述的方法,其中所述源寄存器及目的寄存器各自包含兩個(gè) 可獨(dú)立存取的部分,使得所述第一 SAD運(yùn)算可存取所述寄存器的第一部分,而所述 第二獨(dú)立SAD運(yùn)算可同時(shí)存取所述寄存器的第二部分。
12、 如權(quán)利要求IO所述的方法,其中執(zhí)行所述第一 SAD運(yùn)算進(jìn)一步包含確定第一組絕對(duì)差的和,所述第一組絕對(duì)差 包含存儲(chǔ)在所述第一及第二源寄存器的所述第一部分中的對(duì)應(yīng)源值的所述絕對(duì)差;且執(zhí)行所述第二 SAD運(yùn)算進(jìn)一步包含確定第二組絕對(duì)差的和,所述第二組絕對(duì)差 包含存儲(chǔ)在所述第一及第二源寄存器的所述第二部分中的對(duì)應(yīng)源值的所述絕對(duì)差。
13、 如權(quán)利要求IO所述的方法,其中存儲(chǔ)在所述第一及第二源寄存器中的所述源值包含視頻幀的像素值;且所述第一源寄存器存儲(chǔ)當(dāng)前幀的當(dāng)前塊的像素值且所述第二源寄存器存儲(chǔ)參考 幀的兩個(gè)不同塊的像素值。
14、 如權(quán)利要求8所述的方法,其中執(zhí)行所述兩個(gè)SAD運(yùn)算包含 將存儲(chǔ)在所述目的寄存器的所述第一部分中的另一SAD運(yùn)算的結(jié)果與所述第一SAD運(yùn)算的所述結(jié)果相加并將所述和存儲(chǔ)在所述目的寄存器的所述第一部分中;及 將存儲(chǔ)在所述目的寄存器的所述第二部分中的另一SAD運(yùn)算的結(jié)果與所述第二 SAD運(yùn)算的所述結(jié)果相加并將所述和存儲(chǔ)在所述目的寄存器的所述第二部分中。
15、 一種用于執(zhí)行絕對(duì)差和(SAD)運(yùn)算的設(shè)備,所述設(shè)備包含 用于接收規(guī)定用以存儲(chǔ)SAD運(yùn)算結(jié)果的目的寄存器的單個(gè)SAD指令的裝置;及 用于響應(yīng)于接收到所述單個(gè)SAD指令而執(zhí)行兩個(gè)獨(dú)立SAD運(yùn)算的裝置,所述第一 SAD運(yùn)算的結(jié)果存儲(chǔ)在所述目的寄存器的第一部分中且所述第二 SAD運(yùn)算的結(jié)果 存儲(chǔ)在所述目的寄存器的第二部分中。
16、 如權(quán)利要求15所述的設(shè)備,其中并行執(zhí)行所述兩個(gè)SAD運(yùn)算。
17、 如權(quán)利要求15所述的設(shè)備,其中所述單個(gè)SAD指令進(jìn)一步規(guī)定存儲(chǔ)用于通 過所述兩個(gè)SAD運(yùn)算進(jìn)行處理的源值的兩個(gè)源寄存器,其中所述用于執(zhí)行所述兩個(gè) 獨(dú)立SAD運(yùn)算的裝置包含用于對(duì)存儲(chǔ)在所述第一源寄存器的第一部分及所述第二源寄存器的第一部分中 的源值執(zhí)行所述第一SAD運(yùn)算的裝置;及用于對(duì)存儲(chǔ)在所述第一源寄存器的第二部分及所述第二源寄存器的第二部分中 的源值執(zhí)行所述第二 SAD運(yùn)算的裝置,其中所述目的寄存器及源寄存器各自包含一 對(duì)經(jīng)對(duì)準(zhǔn)的寄存器,所述經(jīng)對(duì)準(zhǔn)的寄存器對(duì)中的所述第一寄存器包含所述第一部分且 所述經(jīng)對(duì)準(zhǔn)的寄存器對(duì)中的所述第二寄存器包含所述源寄存器或目的寄存器的所述 第二部分。
18、 如權(quán)利要求17所述的設(shè)備,其中所述源寄存器及目的寄存器各自包含兩個(gè) 可獨(dú)立存取的部分,使得所述第一 SAD運(yùn)算可存取所述寄存器的第一部分,而所述 第二獨(dú)立SAD運(yùn)算可同時(shí)存取所述寄存器的第二部分。
19、 如權(quán)利要求17所述的設(shè)備,其中所述用于執(zhí)行所述第一 SAD運(yùn)算的裝置進(jìn)一步包含用于確定第一組絕對(duì)差的和 的裝置,所述第一組絕對(duì)差包含存儲(chǔ)在所述第一及第二源寄存器的所述第一部分中的 對(duì)應(yīng)源值的絕對(duì)差;且所述用于執(zhí)行所述第二 SAD運(yùn)算的裝置進(jìn)一步包含用于確定第二組絕對(duì)差的和 的裝置,所述第二組絕對(duì)差包含存儲(chǔ)在所述第一及第二源寄存器的所述第二部分中的 對(duì)應(yīng)源值的絕對(duì)差。
20、 如權(quán)利要求17所述的設(shè)備,其中存儲(chǔ)在所述第一及第二源寄存器中的所述源值包含視頻幀的像素值,,且 所述第一源寄存器存儲(chǔ)當(dāng)前幀的當(dāng)前塊的像素值且所述第二源寄存器存儲(chǔ)參考 幀的兩個(gè)不同塊的像素值。
21、 如權(quán)利要求15所述的設(shè)備,其中所述用于執(zhí)行所述兩個(gè)SAD運(yùn)算的裝置包含用于將存儲(chǔ)在所述目的寄存器的所述第一部分中的另一SAD運(yùn)算的結(jié)果與所述 第一 SAD運(yùn)算的所述結(jié)果相加并將所述和存儲(chǔ)在所述目的寄存器的所述第一部分中 的裝置;及用于將存儲(chǔ)在所述目的寄存器的所述第二部分中的另一SAD運(yùn)算的結(jié)果與所述 第二 SAD運(yùn)算的所述結(jié)果相加并將所述和存儲(chǔ)在所述目的寄存器的所述第二部分中 的裝置。
22、 一種用于執(zhí)行絕對(duì)差和(SAD)運(yùn)算的設(shè)備,所述設(shè)備包含存儲(chǔ)器,其用于存儲(chǔ)規(guī)定用以存儲(chǔ)SAD運(yùn)算結(jié)果的目的寄存器的至少一個(gè)SAD 指令;及處理單元,其耦合到所述存儲(chǔ)器,所述處理單元經(jīng)配置以在接收到單個(gè)SAD指 令時(shí)執(zhí)行兩個(gè)獨(dú)立SAD運(yùn)算,所述處理單元包含一個(gè)或一個(gè)以上執(zhí)行單元,其經(jīng)配置以執(zhí)行SAD運(yùn)算;及 一組寄存器,其包含目的寄存器,其中所述第一SAD運(yùn)算的結(jié)果存儲(chǔ)在所述 目的寄存器的第一部分中且所述第二 SAD運(yùn)算的結(jié)果存儲(chǔ)在所述目的寄存器的第 二部分中。
23、 如權(quán)利要求22所述的設(shè)備,其中所述處理單元經(jīng)配置以并行執(zhí)行所述兩個(gè) SAD運(yùn)算。
24、 如權(quán)利要求22所述的設(shè)備,其中所述SAD指令進(jìn)一步規(guī)定存儲(chǔ)用于通過所述兩個(gè)SAD運(yùn)算進(jìn)行處理的源值的兩 個(gè)源寄存器;所述組寄存器進(jìn)一步包含兩個(gè)源寄存器;且所述處理單元經(jīng)配置以通過以下方式執(zhí)行所述兩個(gè)獨(dú)立SAD運(yùn)算對(duì)存儲(chǔ)在所述第一源寄存器的第一部分及所述第二源寄存器的第一部分中的源值執(zhí)行所述第一 SAD運(yùn)算;及對(duì)存儲(chǔ)在所述第一源寄存器的第二部分及所述第二源寄存器的第二部分中 的源值執(zhí)行所述第二 SAD運(yùn)算,其中所述目的寄存器及源寄存器各自包含一對(duì)經(jīng) 對(duì)準(zhǔn)的寄存器,所述經(jīng)對(duì)準(zhǔn)的寄存器對(duì)中的所述第一寄存器包含所述第一部分且 所述經(jīng)對(duì)準(zhǔn)的寄存器對(duì)中的所述第二寄存器包含所述源寄存器或目的寄存器的所 述第二部分。
25、 如權(quán)利要求24所述的設(shè)備,其中所述源寄存器及目的寄存器各自包含兩個(gè) 可獨(dú)立存取的部分,使得所述第一 SAD運(yùn)算可存取所述寄存器的第一部分,而所述 第二獨(dú)立SAD運(yùn)算可同時(shí)存取所述寄存器的第二部分。
26、 如權(quán)利要求24所述的設(shè)備,其中所述處理單元經(jīng)配置以通過確定第一組絕對(duì)差的和來執(zhí)行所述第一 SAD運(yùn)算, 所述第一組絕對(duì)差包含存儲(chǔ)在所述第一及第二源寄存器的所述第一部分中的對(duì)應(yīng)源 值的所述絕對(duì)差;且所述處理單元經(jīng)配置以通過確定第二組絕對(duì)差的和來執(zhí)行所述第二 SAD運(yùn)算, 所述第二組絕對(duì)差包含存儲(chǔ)在所述第一及第二源寄存器的所述第二部分中的對(duì)應(yīng)源 值的所述絕對(duì)差。
27、 如權(quán)利要求24所述的設(shè)備,其中存儲(chǔ)在所述第一及第二源寄存器中的所述源值包含視頻幀的像素值;且 所述第一源寄存器存儲(chǔ)當(dāng)前幀的當(dāng)前塊的像素值且所述第二源寄存器存儲(chǔ)參考 幀的兩個(gè)不同塊的像素值。
28、 如權(quán)利要求22所述的設(shè)備,其中所述處理單元經(jīng)配置以通過以下方式執(zhí)行 所述兩個(gè)獨(dú)立SAD運(yùn)算將存儲(chǔ)在所述目的寄存器的所述第一部分中的另一 SAD運(yùn)算的結(jié)果與所述第一 SAD運(yùn)算的所述結(jié)果相加并將所述和存儲(chǔ)在所述目的寄存器的所述第一部分中;及將存儲(chǔ)在所述目的寄存器的所述第二部分中的另一 SAD運(yùn)算的結(jié)果與所述第二 SAD運(yùn)算的所述結(jié)果相加并將所述和存儲(chǔ)在所述目的寄存器的所述第二部分中。
全文摘要
本發(fā)明提供用于在接收單個(gè)指令(505、705)時(shí)執(zhí)行兩個(gè)獨(dú)立的絕對(duì)差和(SAD)運(yùn)算的方法及設(shè)備??刹⑿袌?zhí)行所述兩個(gè)運(yùn)算。將運(yùn)算過程值存儲(chǔ)在兩個(gè)源寄存器(405、410)中且將結(jié)果存儲(chǔ)到目的寄存器(425)中。所述源寄存器及目的寄存器各自具有兩個(gè)可獨(dú)立存取的部分,由此第一SAD運(yùn)算(401)可存取第一部分,而第二獨(dú)立SAD運(yùn)算(402)可同時(shí)存取所述寄存器的第二部分。對(duì)所述源寄存器的第一部分中的值執(zhí)行所述第一SAD運(yùn)算,將所述結(jié)果存儲(chǔ)到所述目的寄存器的第一部分中。對(duì)所述源寄存器的第二部分中的值執(zhí)行所述第二SAD運(yùn)算,將所述結(jié)果存儲(chǔ)到所述目的寄存器的第二部分中。所述值可包含像素值。
文檔編號(hào)H04N7/36GK101438598SQ200780016458
公開日2009年5月20日 申請(qǐng)日期2007年5月7日 優(yōu)先權(quán)日2006年5月10日
發(fā)明者盧奇安·科德雷斯庫, 貿(mào) 曾 申請(qǐng)人:高通股份有限公司