專利名稱:使用多線程單指令多數(shù)據(jù)處理并行執(zhí)行媒體編碼的制作方法
使用多線程單指令多數(shù)據(jù)處理并行執(zhí)行媒體編碼
背景技術(shù):
用于對媒體數(shù)據(jù)進行編碼的各種技術(shù)已經(jīng)由在例如移動圖像專
家組(MPEG)、國際電信聯(lián)盟(ITU)、國際標準化組織(ISO)和國際電工 委員會(IEC)的各種組織發(fā)布的多種標準中進行了描述。例如, MPEG-1 、 MPEG-2和MPEG-4視頻壓縮標準描述了塊編碼技術(shù),在 該技術(shù)中,將一副圖像分割為多個片(slice)、宏塊和塊。在執(zhí)行了時 間運動預(yù)測和/或者空間預(yù)測之后,對一個塊中的殘余值進行熵編碼。 熵編碼的一個公共實例是可變長度編碼(VLC),其包括將數(shù)據(jù)符號轉(zhuǎn) 換為可變長度碼。熵編碼的更多復(fù)雜的實例包括基于上下文 (context-based)的自適應(yīng)可變長度編碼(CAVLC)和基于上下文的自適 應(yīng)二進制算術(shù)編碼(CABAC),其在MPEG-4第10部分或者ITU/正C H.264視頻壓縮標準,Video coding for Very Low Bit Rate Communication用于超低比特率通信的視頻編碼),ITU-T Recommendation H.264(2003年5月)。
視頻編碼器通常利用由功能固定的邏輯電路或者標量處理器實 現(xiàn)的單個單元來執(zhí)行順序編碼。由于在熵編碼中使用的復(fù)雜度的增 加,順序視頻編碼消耗了大量的處理器時間,即使是采用幾個GHz 的機器也是如此。
圖1示出了節(jié)點的一個實施例; 圖2示出了媒體處理的一個實施例; 圖3示出了系統(tǒng)的一個實施例;以及 圖4示出了邏輯流程的一個實施例。
具體實施例方式
圖1示出了節(jié)點的一個實施例。圖1示出了媒體處理節(jié)點100的 框圖。 一個節(jié)點通??梢栽谙到y(tǒng)100中包括用于傳遞信息的任何物理
實體或邏輯實體,并且按照一組給定的設(shè)計參數(shù)或者執(zhí)行約束的需 要,節(jié)點可以實現(xiàn)為硬件、軟件或者其任何組合。
在各種實施例中,節(jié)點可以包括或者可以實現(xiàn)為計算機系統(tǒng)、 計算機子系統(tǒng)、計算機、應(yīng)用設(shè)備、工作站、終端、服務(wù)器、個人計
算機(PC)、膝上型電腦、超小型膝上型電腦、手持計算機、個人數(shù)字 助理(PDA)、機頂盒(STB)、電話、移動電話、蜂窩電話、手機、無 線接入點、基站、無線電網(wǎng)絡(luò)控制器(RNC)、移動客戶中心(MSC)、 微處理器、諸如特定用途集成電路(ASIC)之類的集成電路、可編程邏 輯器件(PLD)、諸如通用處理器之類的處理器、數(shù)字信號處理器(DSP) 和/或者網(wǎng)絡(luò)處理器、接口、輸入/輸出(I/0)設(shè)備(例如,鍵盤、鼠標、 顯示器、打印機)、路由器、集線器、網(wǎng)關(guān)、橋、交換機、電路、邏 輯門、寄存器、半導(dǎo)體裝置、芯片、晶體管、或者任何其他裝置、機 器、工具、設(shè)備、組件、或者其組合。
在各種實施例中,節(jié)點可以包括或者可以實現(xiàn)為軟件、軟件模 塊、應(yīng)用程序、程序、子程序、指令集、計算碼、字、值、符號、或 者其組合。節(jié)點可以根據(jù)預(yù)定的計算機語言、方式或者語法來實現(xiàn), 以命令處理器執(zhí)行特定的功能。計算機語言的實例可以包括C、 C++、 Java、 BASIC、 Perl、 Matlab、 Pascal、 Visual BASIC、匯編語言、機 器碼、用于網(wǎng)絡(luò)處理器的微代碼、等等。實施例并不局限于該情況。
在各種實施例中,媒體處理節(jié)點ioo可以包括或者可以實現(xiàn)為以
下一個或多個處理系統(tǒng)、處理子系統(tǒng)、處理器、計算機、裝置、編
碼器、解碼器、編解碼器(CODEC)、壓縮裝置、解壓裝置、濾波裝置 (例如,圖形縮放裝置、解塊濾波裝置)、變換裝置、娛樂系統(tǒng)、顯示 器、或者任何其他的處理結(jié)構(gòu)。實施例并不局限于該情況。
在各種實施例中,媒體處理節(jié)點ioo可以被設(shè)置為執(zhí)行一個或多 個處理操作。處理操作通??梢陨婕耙粋€或多個操作,例如生成、管 理、通信、發(fā)送、接收、轉(zhuǎn)存、訪問、讀取、寫入、操作、編碼、解 碼、壓縮、解壓、重構(gòu)、加密、濾波、流形成、或者其他信息處理。
實施例并不局限于該情況。
在各種實施例中,媒體處理節(jié)點IOO可以被設(shè)置為處理一種或多
種信息,例如視頻信息。視頻信息通常涉及源自一個或多個視頻圖像 的或者與一個或多個視頻圖像相關(guān)聯(lián)的任何數(shù)據(jù)。例如,在一個實施
例中,視頻信息可以包括以下一個或多個視頻數(shù)據(jù)、視頻序列、圖 像組、圖像、對象、幀、片、宏塊、塊、像素、等等。指定給像素的
^:可以包括實數(shù)和/或者整數(shù)。實施例并不局限于該情況。
在各種實施例中,媒體處理節(jié)點ioo可以執(zhí)行諸如以下的媒體處
理操作將視頻數(shù)據(jù)編碼和/或者壓縮為可以進行存儲或者形成流的 文件,從存儲的文件或者媒體流中解碼和/或者解壓出視頻數(shù)據(jù),濾 波(例如,圖形縮放、解塊濾波),視頻重放,基于互聯(lián)網(wǎng)的視頻應(yīng)用, 電話會議應(yīng)用,和流媒體視頻應(yīng)用。實施例并不局限于該情況。
在各種實施例中,媒體處理節(jié)點IOO可以按照一個或多個協(xié)議對
信息進行通信、管理、或者處理。協(xié)議可以包括用于管理多個節(jié)點之 間通信的一組預(yù)定規(guī)則或者指令。協(xié)議可以通過由標準化組織(例如,
ITU、 ISO、 IEC、 MPEG、互聯(lián)網(wǎng)工程任務(wù)組(IETF)、電子電氣工程 師協(xié)會(IEEE)等等)發(fā)布的一種或多種標準來定義。例如,所描述的 實施例可以被設(shè)置為按照諸如MPEG-1、 MPEG-2、 MPEG-4、 H.264
之類的用于視頻處理的標準來工作。實施例并不局限于該情況。
在各種實施例中,媒體處理節(jié)點100可以包括多個模塊。按照一 組給定的設(shè)計或者執(zhí)行約束的要求,所述模塊可以包括或者實現(xiàn)為 一個或多個系統(tǒng)、子系統(tǒng)、處理器、裝置、機器、工具、組件、電路、 寄存器、應(yīng)用程序、子程序、或者其任何組合。在各種實施例中,所 述模塊可以通過一個或多個通信介質(zhì)連接。通信介質(zhì)通常可以包括能 夠攜帶信息信號的任何介質(zhì)。例如,按照給定的實現(xiàn)要求,通信介質(zhì) 可以包括有線通信介質(zhì)、無線通信介質(zhì)、或者其組合。實施例并不 局限于該情況。
媒體處理節(jié)點100可以包括運動估計模塊102。在各種實施例中, 運動估計模塊102可以被設(shè)置為接收輸入視頻數(shù)據(jù)。在各種實現(xiàn)中, 輸入視頻數(shù)據(jù)的一個幀可以包括一個或多個片、宏塊和塊。例如,片
可以包括I片、P片或者B片,并且一個片可以包含幾個宏塊。例如, 每個宏塊可以包括幾個塊,諸如亮度塊和/或者色度塊。在一個實施 例中, 一個宏塊可以包括16X16像素的區(qū)域, 一個塊可以包括8X8 像素的區(qū)域。在其他實施例中,例如, 一個宏塊可以被劃分為各種塊 大小,諸如16X16、 16X8、 8X16、 8X8、 8X4、 4X8禾Q4X4。應(yīng) 該理解的是,雖然提及了宏塊和塊,但是所描述的實施例和實現(xiàn)可以 應(yīng)用于視頻數(shù)據(jù)的其他劃分方式。實施例并不局限于該情況。
在各種實施例中,運動估計模塊102可以被設(shè)置為對一個或多個 宏塊進行運動估計。運動估計模塊102可以根據(jù)一個或多個參考幀, 估計宏塊中的當前塊內(nèi)容。在各種實現(xiàn)中,運動估計模塊102可以將 當前幀中的一個或多個宏塊與在參考幀中的周圍區(qū)域進行比較,以確 定匹配區(qū)域。在一些實施例中,運動估計模塊102可以使用多個參考 幀(例如,過去的、先前的、將來的)來執(zhí)行運動估計。在一些實現(xiàn)中, 例如,運動估計模塊102可以使用運動矢量,來估計匹配區(qū)域從一個 或多個參考幀到當前幀之間的運動。實施例并不局限于該情況。
媒體處理節(jié)點IOO可以包括模式?jīng)Q定模塊104。在各種實施例中, 模式?jīng)Q定模塊104可以被設(shè)置為確定一個或多個宏塊的編碼模式。例 如,所述編碼模式可以包括預(yù)測編碼模式,諸如幀內(nèi)編碼預(yù)測和/或 者幀間編碼預(yù)測。幀內(nèi)塊預(yù)測可以包括使用先前解碼的像素從同一幀 中估計像素值。幀間塊預(yù)測可以包括從在一個序列中連續(xù)的多個幀中 估計像素值。實施例并不局限于該情況。
媒體處理節(jié)點IOO可以包括運動預(yù)測模塊106。在各種實施例中, 運動預(yù)測模塊106可以被設(shè)置為執(zhí)行時間運動預(yù)測和/或者空間預(yù)測, 以預(yù)測一個塊的內(nèi)容。例如,運動預(yù)測模塊106可以被設(shè)置為使用諸 如幀內(nèi)預(yù)測和/或者幀間預(yù)測之類的預(yù)測技術(shù)。在各種實現(xiàn)中,運動 預(yù)測模塊106可以支持雙向預(yù)測。在一些實施例中,運動預(yù)測模塊 106可以根據(jù)周圍塊中的運動矢量來執(zhí)行運動矢量預(yù)測。實施例并不 局限于該情況。
在各種實施例中,運動預(yù)測模塊106可以被設(shè)置為根據(jù)在當前幀 與一個或多個參考幀之間的差異,來提供殘余。例如,該殘余可以包含在一個塊的被預(yù)測內(nèi)容(例如,像素、運動矢量)與實際內(nèi)容之間的 差異。實施例并不局限于該情況。
媒體處理節(jié)點100可以包括變換模塊108,例如正向離散余弦變 換(FDCT)模塊。在各種實施例中,變換模塊108可以被設(shè)置為提供 所述殘余的頻率描述。在各種實現(xiàn)中,變換模塊108可以將所述殘余 轉(zhuǎn)換到頻域,并且生成頻率系數(shù)矩陣。例如,16X16的宏塊可以被 變換為16X16的頻率系數(shù)矩陣,8X8的塊可以被變換為8X8的頻 率系數(shù)矩陣。在一些實施例中,變換模塊108可以使用基于8X8像 素的變換和/或者基于4X4像素的變換。實施例并不局限于該情況。
媒體處理節(jié)點IOO可以包括量化器模塊IIO。在各種實施例中, 量化器模塊IIO可以被設(shè)置為對經(jīng)過變換的系數(shù)進行量化,并輸出殘 余系數(shù)。在各種實現(xiàn)中,量化器模塊110可以輸出殘余系數(shù),其包含 有相對少的幾個非零值系數(shù)。量化器模塊no可以通過將很多經(jīng)過變 換的頻率系數(shù)驅(qū)至零,來使得編碼變得容易。例如,量化器模塊iio 可以用頻率系數(shù)除以一個量化因子或者量化矩陣,量化因子或者量化 矩陣將較小的系數(shù)(例如,高頻系數(shù))驅(qū)至零。實施例并不局限于該情 況。
媒體處理節(jié)點100可以包括逆量化器模塊112和逆變換模塊 (IDCT)114。在各種實施例中,逆量化器模塊112可以被設(shè)置為接收 經(jīng)過量化的變換后的系數(shù),并執(zhí)行逆量化,以生成經(jīng)過變換的系數(shù), 例如DCT系數(shù)。逆變換模塊114可以被設(shè)置為接收經(jīng)過變換的系數(shù), 例如DCT系數(shù),并執(zhí)行逆變換,以生成像素數(shù)據(jù)。在各種實現(xiàn)中, 逆量化和逆變換可以用于預(yù)測在量化過程中產(chǎn)生的損失。實施例并不 局限于該情況。
媒體處理節(jié)點IOO可以包括運動補償模塊116。在各種實施例中, 運動補償模塊116可以接收逆變換模塊114的輸出,并對一個或多個 宏塊執(zhí)行運動補償。在各種實現(xiàn)中,運動補償模塊116可以被設(shè)置為 補償匹配區(qū)域在當前幀與一個或多個參考幀之間的運動。實施例并不 局限于該情況。
媒體處理節(jié)點IOO可以包括掃描模塊118。在各種實施例中,掃
描模塊118可以被設(shè)置為從量化器模塊110接收經(jīng)過變換、量化的殘 余系數(shù),并執(zhí)行掃描操作。在各種實現(xiàn)中,掃描模塊118可以根據(jù)一 種掃描次序,諸如Z字型掃描次序,來掃描殘余系數(shù),以生成經(jīng)過變 換、量化的殘余系數(shù)的一個序列。實施例并不局限于該情況。
媒體處理節(jié)點100可以包括熵編碼模塊120,例如VLC模塊。 在各種實施例中,熵編碼模塊120可以被設(shè)置為執(zhí)行熵編碼,例如 VLC(例如,游程-級別VLC)、 CAVLC、 CABAC、等等。通常,CAVLC 和CABAC比VLC更為復(fù)雜。例如,CAVLC可以使用整數(shù)數(shù)量的比 特來對一個值進行編碼,CABAC可以使用算術(shù)編碼,并使用小數(shù)數(shù) 量的比特來對值進行編碼。實施例并不局限于該情況。
在各種實施例中,熵編碼模塊120可以被設(shè)置為執(zhí)行VLC操作, 例如使用霍夫曼表的游程-級別VLC。在這種實施例中,可以將掃描 的經(jīng)過變換、量化的系數(shù)序列表示為游程-級別(run-levd)符號的序列。 每個游程-級別符號可以包括一個游程-級別對,其中級別是非零值系 數(shù)的值,游程是在該非零值系數(shù)之前的零值系數(shù)的數(shù)量。例如,原始 序列的一部分Xp X2, X3, 0, 0, 0, 0, 0, X4可以表示為游程-級別符號(O, X,)(O, X2)(0, X3)(5, X4)。在各種實現(xiàn)中,熵編碼模塊120 可以被設(shè)置為根據(jù)一組預(yù)定的霍夫曼表,將每個游程-級別符號轉(zhuǎn)換 為不同長度的比特序列。實施例并不局限于該情況。
媒體處理節(jié)點IOO可以包括比特流打包模塊122。在各種實施例 中,在各種實施例中,比特流打包模塊122可以被設(shè)置為根據(jù)掃描次 序?qū)K的熵編碼比特序列打包,以形成塊的VLC序列。比特流打包 模塊122可以根據(jù)塊次序?qū)Χ鄠€塊的比特序列進行打包,以形成宏塊 等等的編碼序列。在各種實現(xiàn)中,可以唯一地確定一個符號的比特序 列,以使得打包處理的逆操作可以用于實現(xiàn)對塊和宏塊的唯一解碼。 實施例并不局限于該情況。
在各種實施例中,媒體處理節(jié)點IOO可以實現(xiàn)多級功能管道。如 圖1所示,例如,媒體處理節(jié)點IOO可以實現(xiàn)一種功能管道,其被劃 分為級A中的運動估計操作、級B中的編碼操作、和級C中的比特 流打包操作。在一些實現(xiàn)中,在級B中的編碼操作可以進一步劃分。
在各種實施例中,媒體處理節(jié)點100可以執(zhí)行基于功能和數(shù)據(jù)域的劃
分,以實現(xiàn)對于多線程計算機結(jié)構(gòu)而言可以充分利用的并行性。
在各種實現(xiàn)中,各個獨立的線程可以執(zhí)行運動估計級、編碼級和 打包比特流級。每個線程可以包括計算機程序的一部分,其可以與其 他線程相互獨立地且并行地執(zhí)行。在各種實施例中,可以使用互斥對 象(互斥體)和/或者信號燈來實現(xiàn)線程同步。可以通過存儲器訪問和/ 或者直接的寄存器訪問來實現(xiàn)線程通信。實施例并不局限于該情況。
在各種實施例中,媒體處理節(jié)點100可以執(zhí)行并行的多線程操 作。例如,三個獨立的線程可以并行地執(zhí)行級A中的運動估計操作、 級B中的編碼操作、和級C中的比特流打包操作。在各種實現(xiàn)中, 對級A進行操作的多個線程、對級B進行操作的多個線程和對級C 進行操作的多個線程可以并行進行。實施例并不局限于該情況。
在各種實現(xiàn)中,功能管道可以被劃分為使得級C中的比特流打 包操作與級A中的運動估計操作和級B中的編碼操作相互分開。功 能管道的劃分可以是基于功能和數(shù)據(jù)域的,以實現(xiàn)線程級的并行性。 例如,運動估計級A和編碼級B可以在數(shù)據(jù)域上劃分為宏塊,并且 比特流打包級C可以被劃分為行,其允許與其他級的計算有更高的 并行度。在各種實施例中,對宏塊或者塊的最終的比特序列打包可以 與對宏塊或者塊之內(nèi)的游程-級別符號的比特序列打包相互分開,從 而使得對于不同宏塊和塊的熵編碼(例如,VLC)操作可以通過不同的 線程并行執(zhí)行。通過將最后的順序操作,即打包比特流,移到基于宏 塊的編碼操作的外部,可以降低順序依賴性,并且可以提高并行度。 實施例并不局限于該情況。
圖2示出了媒體處理的一個實施例。圖2示出了可以由諸如媒體 處理節(jié)點100之類的媒體處理節(jié)點執(zhí)行的一個并行多線程處理的實 施例。在各種實施例中,可以對宏塊、塊、和行進行并行多線程處理。 在圖2所示的實例中,例如,每個宏塊(m, n)可以包括16X16的宏 塊。對于720像素X480行的標準分辨率(SD)幀來說,M=45, N==30。
實施例并不局限于該情況。
在一個實施例中,在級B中對于宏塊(IO)、 (11)、 (12)、和(13)中的一個或多個宏塊的編碼操作可以與級c中對行-oo執(zhí)行的比特流打
包操作并行執(zhí)行。在各種實現(xiàn)中,塊級別的處理可以與宏塊級別的處
理并行執(zhí)行。在級B中,例如,在宏塊(10)中的塊級別的編碼操作可 以與對宏塊(OO)、 (01)、 (02)、和(03)的宏塊級別的編碼操作并行執(zhí)行。 實施例并不局限于該情況。
在各種實施例中,并行多線程操作可能受到層內(nèi)和/或者層間數(shù) 據(jù)的相關(guān)性的影響。在圖2所示的實例中,層內(nèi)數(shù)據(jù)相關(guān)性用實線箭 頭表示,層間數(shù)據(jù)相關(guān)性用虛線箭頭表示。在該實例中,當執(zhí)行級A 中的運動估計操作時,宏塊(12)、 (13)和(21)之間可能存在層內(nèi)數(shù)據(jù)相 關(guān)性。在級A和級B之間還可能存在宏塊(11)的層間相關(guān)性。結(jié)果, 在級B中對宏塊(ll)執(zhí)行的編碼操作只有在級A中對宏塊(ll)執(zhí)行的 運動估計操作完成之后才可以開始。在級B和級C之間還可能存在 宏塊(OO)、 (01)、 (02)、和(03)的層間相關(guān)性。結(jié)果,在級C中對行-OO 的比特流打包操作只有在對宏塊(OO)、 (01)、 (02)、和(03)的操作完成
之后才可以開始。實施例并不局限于該情況。
圖3示出了系統(tǒng)的一個實施例。圖3示出了單指令多數(shù)據(jù)(SIMD) 處理系統(tǒng)300的框圖。在各種實現(xiàn)中,SIMD處理系統(tǒng)300可以被設(shè) 置為執(zhí)行各種媒體處理操作,包括媒體編碼操作(例如VLC操作)的 多線程并行執(zhí)行。在各種實施例中,媒體處理節(jié)點IOO可以通過實現(xiàn) SIMD處理,來執(zhí)行媒體編碼的多線程并行執(zhí)行。應(yīng)該理解的是,所 述的SIMD處理系統(tǒng)300是一個示例性的實施例,并且其可以包括額 外的組件,在此為了清楚和便于理解而將這些組件省略。
SIMD處理系統(tǒng)300可以包括媒體處理設(shè)備302。在各種實施例 中,媒體處理設(shè)備302可以包括SIMD處理器304, SIMD處理器304 可以訪問多種功能單元或資源。SIMD處理器304可以包括,例如, 通用處理器、專用處理器、DSP、媒體處理器、圖形處理器、通信處 理器、等等。實施例并不局限于該情況。
在各種實施例中,SIMD處理器304可以包括,例如,多個處理 引擎(諸如微引擎或核)。每個處理引擎可以被設(shè)置為執(zhí)行編程邏輯, 例如在微引擎的線程上運行的宏塊,以執(zhí)行多個線程(例如,4個或8
個)。實施例并不局限于該情況。
在各種實施例中,SIMD處理器304可以包括,例如,SIMD執(zhí) 行引擎(諸如n-操作數(shù)的SIMD執(zhí)行引擎),以在一個指令周期中同時 執(zhí)行數(shù)據(jù)的n個操作數(shù)的SIMD指令。例如,8通道的SIMD執(zhí)行引 擎可以同時執(zhí)行用于數(shù)據(jù)的8個32比特操作數(shù)的一個SIMD指令。 每個操作數(shù)都可以被映射到SIMD執(zhí)行引擎的一個單獨的計算通道。 在各種實現(xiàn)中,SIMD執(zhí)行引擎可以接收SIMD指令和n-分量的數(shù)據(jù) 矢量,以對SIMD執(zhí)行引擎的相應(yīng)通道進行處理。SIMD引擎可以同 時對在該矢量中的所有分量執(zhí)行該SIMD指令。實施例并不局限于該 情況。
在各種實現(xiàn)中,SIMD指令可以是條件型的。例如,SIMD指令 或者SIMD指令集可以在滿足一個或多個預(yù)定條件時執(zhí)行。在各種實 施例中,特定處理操作的并行循環(huán)的結(jié)束可以通過使用SIMD條件分 支和循環(huán)機制來實現(xiàn)。所述條件可以是基于一個或多個宏塊和/或者 塊。實施例并不局限于該情況。
在各種實施例中,SIMD處理器304可以實現(xiàn)基于區(qū)域的寄存器 訪問。SIMD處理器304可以包括,例如,寄存器文件和索引文件, 以便在寄存器文件中存儲描述區(qū)域的值,以存儲信息。在一些情況下, 區(qū)域可以是動態(tài)的。被索引的寄存器可以包括多個獨立的片。在各種 實現(xiàn)中,在索引寄存器中的一個值可以定義寄存器文件中的一個區(qū)域 的一個或多個起點。例如,該值可以表示寄存器識別符和/或者子寄 存器識別符,其指示在寄存器中的數(shù)據(jù)元素的位置。寄存器區(qū)域的描 述(例如,寄存器號、子寄存器號)可以被編碼到用于每個操作數(shù)的指 令字中。索引寄存器可以包括用于描述寄存器區(qū)域的其他值,例如寄 存器區(qū)域的寬度、水平跨距或者數(shù)據(jù)類型。實施例并不局限于該情況。
在各種實施例中,SIMD處理器304可以包括一個標志結(jié)構(gòu)。 SIMD處理器304可以包括,例如,用于存儲標志字或者標志的一個 或多個標志寄存器。標志字可以與處理操作所生成的一個或多個結(jié)果 相關(guān)聯(lián)。例如,所述結(jié)果可以與零、非零、等于、不等于、大于、大 于等于、小于、小于等于、和域者溢出條件相關(guān)聯(lián)。標志寄存器和/
或者標志字的結(jié)構(gòu)可以是靈活的。實施例并不局限于該情況。
在各種實施例中,標志寄存器可以包括n-通道SIMD執(zhí)行引擎的 n-比特標志寄存器。標志寄存器的每個比特可以與一個通道相關(guān)聯(lián), 并且標志寄存器可以從SIMD執(zhí)行單元接收并存儲信息。在各種實現(xiàn) 中,SIMD處理器304可以包括用于一個或多個標志寄存器的水平和 /或者垂直求值單元。實施例并不局限于該情況。
SIMD處理器304可以通過總線306耦合到一個或多個功能單元。 在各種實施例中,總線306可以包括一個或多個芯片上總線的集合, 這些芯片上總線將媒體處理設(shè)備302的各種功能單元相互連接。盡管 為了便于理解,將總線306描述為單個總線,但應(yīng)該理解的是,總線 306可以包括任何總線構(gòu)架并且可以包括任意數(shù)量的總線和總線的任 意組合。實施例并不局限于該情況。
SIMD處理器304可以耦合到指令存儲單元308和數(shù)據(jù)存儲單元 310。在各種實施例中,指令存儲單元308可以被設(shè)置為存儲SIMD 指令,數(shù)據(jù)存儲單元310可以被設(shè)置為存儲數(shù)據(jù),例如與二維圖像、 三維圖像和/或者移動圖像相關(guān)聯(lián)的標量和矢量。在各種實現(xiàn)中,指 令存儲單元308和/或者數(shù)據(jù)存儲單元310可以與單獨的指令高速緩 存和數(shù)據(jù)高速緩存、共享的指令數(shù)據(jù)高速緩存、由公共共享高速緩存 所支援的單獨的指令高速緩存和數(shù)據(jù)高速緩存、或者任何其他緩存體 系相關(guān)聯(lián)。實施例并不局限于該情況。
指令存儲單元308和數(shù)據(jù)存儲單元310可以包括或者可以實現(xiàn)為 能夠存儲數(shù)據(jù)的任意計算機可讀存儲介質(zhì),包括易失性存儲器和非易 失性存儲器。存儲介質(zhì)的實例包括隨機存取存儲器(RAM)、動態(tài) RAM(DRAM)、 雙倍數(shù)據(jù)速率 DRAM(DDRAM)、 同步 DRAM(SDRAM)、閃存、ROM、可編程ROM(PRAM)、可擦除可編 程ROM(EPROM)、電可擦除可編程ROM(EEPROM)、閃存、內(nèi)容可 尋址存儲器(CAM)、聚合物存儲器(例如,鐵電聚合物存儲器、奧氏 存儲器、相變或者鐵電存儲器)、硅-氧-氮-氧-硅(SONOS)存儲器、盤 存儲器(例如軟盤、硬盤、光盤、磁盤)、或者卡(例如,磁卡、光卡)、 或者適合存儲信息的任何其他類型的介質(zhì)。存儲介質(zhì)可以包括機器可讀存儲裝置和/或者各種控制器的各種組合,以存儲計算機程序指令 和數(shù)據(jù)。實施例并不局限于該情況。
媒體處理設(shè)備302可以包括通信接口 312。通信接口 312可以包 括能夠?qū)⒚襟w處理設(shè)備302耦合到一個或多個網(wǎng)絡(luò)和/或者網(wǎng)絡(luò)裝置 上的任何合適的硬件、軟件、或者硬件與軟件的組合。在各種實施例 中,通信接口 312可以包括一種或多種接口,例如,發(fā)送接口、接收 接口、媒體交換結(jié)構(gòu)(MSF)接口、系統(tǒng)分組接口(SPI)、公共交換接口 (CSI)、外設(shè)部件接口(PCI)、小型計算機系統(tǒng)接口(SCSI)、互聯(lián)網(wǎng)交 換(IE)接口、結(jié)構(gòu)接口芯片(FIC)、線卡、端口、或者任何其他合適的 接口。實施例并不局限于該情況。
在各種實現(xiàn)中,通信接口 312可以被設(shè)置為將媒體處理設(shè)備302 連接到一個或多個物理層裝置和/或者交換結(jié)構(gòu)314。媒體處理設(shè)備 302可以提供網(wǎng)絡(luò)與交換結(jié)構(gòu)314之間的接口 。媒體處理設(shè)備302可 以對數(shù)據(jù)進行各種媒體處理,以便通過交換結(jié)構(gòu)314進行傳輸。實施 例并不局限于該情況。
在各種實施例中,SIMD處理系統(tǒng)300可以通過采用SIMD指令 能力和靈活地訪問一個或多個被索引寄存器、基于區(qū)域的寄存器和/ 或者標志寄存器,來實現(xiàn)數(shù)據(jù)級的并行性。在各種實現(xiàn)中,例如,SIMD 處理系統(tǒng)300可以接收數(shù)據(jù)的多個塊和/或者宏塊,并以SIMD方式 執(zhí)行塊級的和宏塊級的處理??梢允褂渺`活的標志結(jié)構(gòu)將處理操作 (例如,比較操作)的結(jié)果打包為標志字??梢圆⑿械貙Ρ淮虬絊IMD 寄存器中的不同塊的標志字執(zhí)行SIMD操作。例如,可以對標志字使 用諸如前導(dǎo)零檢測(leading-zero-detection, LZD)操作之類的指令,來 確定非零值系數(shù)之前的零值系數(shù)的數(shù)量??梢允褂没趨^(qū)域的寄存器 訪問能力,將多個塊的標志字打包到SIMD寄存器中。使用多索引 SIMD移動指令和對于多個源和/或者多個目的地索引的基于區(qū)域的 寄存器訪問,可以執(zhí)行多個塊的非零值系數(shù)值的并行移動。使用數(shù)據(jù) 端口分散聚集(scatter-gathering)能力,可以執(zhí)行并行的存儲器訪問, 例如表(例如,霍夫曼表)查詢。實施例并不局限于該情況。
可以參考以下附圖和相關(guān)的實例來進一步描述各種實施例的操
作。 一些視圖可以包括邏輯流程。應(yīng)該理解的是,該邏輯流程僅僅是 提供了如何實現(xiàn)所描述功能的一個實例。此外,除非明確指出,否則 所給出的邏輯流程并不是必須要按照所示出的順序執(zhí)行。此外,該邏 輯流程可以用硬件元件、由處理器執(zhí)行的軟件元件、或者其組合來實 現(xiàn)。實施例并不局限于該情況。
圖4示出了邏輯流程400的一個實施例。圖4示出了用于執(zhí)行媒 體處理的邏輯流程400。在各種實施例中,邏輯流程400可以通過媒 體處理節(jié)點來執(zhí)行,例如媒體處理節(jié)點100和/或者編碼模塊(諸如熵 編碼模塊120)。邏輯流程400可以包括對宏塊進行基于SIMD的編碼。 基于SIMD的編碼可以包括例如熵編碼,諸如VLC(例如游程-級別 VLC)、 CAVLC、 CABAC等等。在各種實現(xiàn)中,熵編碼可以包括將 一個被掃描系數(shù)(例如,經(jīng)過變換、量化、掃描的系數(shù))序列表示為游 程-級別符號序列。每個游程-級別符號可以包括一個游程-級別對,其 中級別是非零值系數(shù)的值,游程是在該非零值系數(shù)之前的零值系數(shù)的 數(shù)量。實施例并不局限于該情況。
邏輯流程400可以包括輸入宏塊數(shù)據(jù)(402)。在各種實施例中, 一個宏塊可以包含N個塊(例如,YUV420為6個塊,YUC444為12 個塊,等等),并且該宏塊數(shù)據(jù)可以包含該宏塊中每個塊的掃描系數(shù) (例如,經(jīng)過DCT變換、量化、掃描后的系數(shù))序列。例如, 一個宏 塊可以包括6個數(shù)據(jù)塊,并且每個數(shù)據(jù)塊可以包括一個8X8的系數(shù) 矩陣。在該情況下,對于該宏塊中每個塊,宏塊數(shù)據(jù)可以包含一個 64個系數(shù)的序列。在各種實現(xiàn)中,可以以SIMD方式并行地處理宏
塊數(shù)據(jù)。實施例并不局限于該情況。
邏輯流程400可以包括根據(jù)宏塊數(shù)據(jù)生成標志字(404)。在各種
實施例中,可以對宏塊數(shù)據(jù)執(zhí)行相對于零的比較,并且可以根據(jù)該比 較結(jié)果生成標志字。例如,可以對宏塊中每個塊的掃描系數(shù)序列執(zhí)行 相對于零的比較。每個標志字可以包含基于該比較結(jié)果的、針對每個 系數(shù)的1個比特。例如,可以根據(jù)8X8塊的64個系數(shù),生成64比 特標志字,其包含根據(jù)該比較結(jié)果的多個1和多個0。在各種實施例 中,通過將多個塊的比較結(jié)果打包到SIMD的靈活的標志寄存器中,
可以以SIMD方式并行地生成多個標志字。實施例并不局限于該情 況。
邏輯流程400可以包括存儲標志字(406)。在各種實施例中,可 以并行存儲多個塊的標志字。例如,可以并行存儲與宏塊中的6個塊 相對應(yīng)的6個64比特標志字。在各種實現(xiàn)中,通過將標志字打包到 具有基于區(qū)域的寄存器訪問能力的SIMD寄存器中,可以以SIMD方 式并行地存儲多個塊的標志字。實施例并不局限于該情況。
邏輯流程400可以包括判斷所有標志字是否都為零(408)。在各 種實施例中,可以對每個標志字進行比較,以判斷標志字是否僅僅包 含零值系數(shù)。當標志字包含零值時,可以確定已經(jīng)到達該塊的塊尾 (EOB)。在各種實現(xiàn)中,可以對多個標志字并行地執(zhí)行多個判斷。例 如,可以為6個64比特標志字并行地執(zhí)行判斷。實施例并不局限于 該情況。
邏輯流程400可以包括在所有標志字不都是零的情況下,根據(jù) 標志字確定游程值(410)。在各種實施例中,可以對標志字執(zhí)行前導(dǎo) 零檢測(LZD)操作。例如,可以使用SIMD指令以SIMD方式執(zhí)行LZD 操作。LZD操作的結(jié)果可以包括在標志字中非零值系數(shù)之前的零值 系數(shù)的數(shù)量??梢愿鶕?jù)LZD操作的結(jié)果設(shè)置游程值,例如,游程= LZD(標志)。游程值可以對應(yīng)于與該標志字相關(guān)聯(lián)的塊的掃描系數(shù)序 列中的非零值系數(shù)之前的零值系數(shù)的數(shù)量。由此,所確定的游程值可 以用于與該標志相關(guān)聯(lián)的塊的游程-級別符號。在各種實現(xiàn)中,可以 并行地對被打包到SIMD寄存器中的多個塊的多個標志字執(zhí)行SIMD LZD操作。例如,可以并行地對6個64比特標志字執(zhí)行SIMD LZD 操作。實施例并不局限于該情況。
邏輯流程400可以包括根據(jù)游程值執(zhí)行系數(shù)的索引移動(412)。 在各種實施例中,例如,可以使用SIMD指令以SIMD方式執(zhí)行索引 移動。所述系數(shù)可以包括塊的掃描系數(shù)序列中的非零值系數(shù)。游程值 可以對應(yīng)于塊的掃描系數(shù)序列中的非零值系數(shù)之前的零值系數(shù)的數(shù) 量。索引移動可以將非零值系數(shù)從存儲位置(例如寄存器)移動到輸出 端。在各種實施例中,非零值系數(shù)可以包括塊的游程-級別符號中的
級別值。在各種實現(xiàn)中,可以并行地為多個塊執(zhí)行索引移動操作。例
如,可以使用多索引SIMD移動指令和對于多個源和/或者多個目的 地索引的基于區(qū)域的寄存器訪問,來執(zhí)行索引移動。多索引SIMD移 動指令可以有條件的執(zhí)行??梢酝ㄟ^對于一個塊是否到達了 EOB, 來判斷上述條件。如果對于一個塊達到了 EOB,則不對該塊執(zhí)行移 動。同時,如果對于另一個塊還沒有達到EOB,則對該塊執(zhí)行移動。 實施例并不局限于該情況。
邏輯流程400可以包括執(zhí)行對遞增游程的索引存儲(414)。在各 種實施例中,例如,可以使用SIMD指令以SIMD方式執(zhí)行索引存儲。 遞增游程可以用于確定在掃描系數(shù)序列中下一個非零值系數(shù)的位置。 例如,當對一個塊的掃描系數(shù)序列中的非零值系數(shù)執(zhí)行索引移動時, 可以使用遞增游程。在各種實現(xiàn)中,可以并行地為多個塊執(zhí)行索引存 儲操作。多索引SIMD存儲指令可以有條件的執(zhí)行。可以通過對于一 個塊是否到達了 EOB,來判斷上述條件。如果對于一個塊達到了 EOB,則不對該塊執(zhí)行存儲。同時,如果對于另一個塊還沒有達到 EOB,則對該塊執(zhí)行存儲。實施例并不局限于該情況。
邏輯流程400可以包括執(zhí)行標志字的左移(416)。在各種實施例 中,可以對標志字執(zhí)行左移,以便從一個塊的標志字中移走非零值系 數(shù)。例如,可以以SIMD方式使用SIMD指令執(zhí)行左移操作。在各種 實施例中,可以并行地對多個塊的多個標志字執(zhí)行左移操作。SIMD 左移指令可以有條件的執(zhí)行。可以通過對于一個塊是否到達了 EOB, 來判斷上述條件。如果對于一個塊達到了 EOB,則不對該塊的標志 字執(zhí)行左移。同時,如果對于另一個塊還沒有達到EOB,則對該塊 的標志字執(zhí)行左移。實施例并不局限于該情況。
邏輯流程400可以包括執(zhí)行一個或多個并行循環(huán)以確定一個宏 塊中的塊的所有游程-級別符號。在各種實施例中,例如,可以使用 SIMD循環(huán)機制以SIMD方式執(zhí)行并行循環(huán)。在各種實現(xiàn)中,例如, 可以使用SIMD條件分支機制以SIMD方式執(zhí)行條件分支。條件分支 可以用于當對于一個塊的處理巳經(jīng)結(jié)束時終止和/或者繞過一個循 環(huán)。所述條件可以是基于一個塊、 一些塊或者全部塊。例如,當與特
定塊相關(guān)聯(lián)的標志字僅僅包含零值系數(shù)時,條件分支可以中斷對于該 特定塊的迸一步處理,同時允許對于其他塊繼續(xù)進行處理。該處理可 以包括但是不局限于確定游程值、系數(shù)的索引移動、以及遞增游程 的索引存儲。實施例并不局限于該情況。
邏輯流程400可以包括當所有標志字都為零時輸出VLC碼陣
列(41S)。在各種實施例中,可以根據(jù)預(yù)定的霍夫曼表,將游程-級別 符號轉(zhuǎn)換為VLC碼。在各種實現(xiàn)中,例如,可以使用數(shù)據(jù)端口的分 散-聚集能力以SIMD方式執(zhí)行并行的霍夫曼表査詢??梢詫LC碼 陣列輸出到打包模塊,例如比特流打包模塊122,以形成一個宏塊的 碼序列。實施例并不局限于該情況。
在各種實現(xiàn)中,所描述的實施例可以使用SIMD處理來進行媒體 編碼(例如VLC)的并行執(zhí)行。所描述的實施例可以包括以下或者通過 以下所實現(xiàn)各種處理器結(jié)構(gòu)(例如多線程和/或者多核結(jié)構(gòu))和/或者 各種SIMD能力(例如,SIMD指令集、基于區(qū)域的寄存器、帶有多個 獨立索引的索引寄存器、和/或者靈活的標志寄存器)。實施例并不局 限于該情況。
在各種實現(xiàn)中,所描述的實施例可以實現(xiàn)媒體編碼的線程級和/ 或者數(shù)據(jù)級的并行性,其實現(xiàn)了處理性能的提高。例如,多線程方法 的實現(xiàn)可以大約與處理核的數(shù)量和/或者硬件線程的數(shù)量成線性地提 高多線程處理速度(例如,在16核處理器上有約16倍的速度提高)。 使用標志字和LZD指令的LZD檢測的實現(xiàn)與標量循環(huán)實現(xiàn)相比可以 提高處理速度(例如,約4-10倍的速度提高)。使用SIMD LZD操作 和分支/循環(huán)機制的多個塊(例如6個塊)的并行處理與按照塊的順序 的算法相比可以提高處理速度(例如,約6倍的速度提高)。實施例并 不局限于該情況。
在此,可以提出各種具體細節(jié)來提供對上述實施例的透徹理解。 然而,本領(lǐng)域技術(shù)人員應(yīng)該理解的是,沒有這些具體細節(jié)也可以實現(xiàn) 上述實施例。在其他實例中,沒有詳細的描述已知的操作、組件和電 路,以便不會使得上述實施例變得模糊??梢岳斫獾氖?,在此公開的 具體結(jié)構(gòu)和功能細節(jié)是代表性的,而不是必須要限制上述實施例的范圍。
在各種實現(xiàn)中,所描述的實施例可以包括或者形成有線通信系 統(tǒng)、無線通信系統(tǒng)或者其組合的一部分。盡管可以通過舉例使用特定 通信介質(zhì)來描述特定的實施例,但是應(yīng)該理解的是,在此所討論的原 理和技術(shù)可以使用各種通信介質(zhì)和相關(guān)技術(shù)來實現(xiàn)。
在各種實現(xiàn)中,所描述的實施例可以包括或者形成網(wǎng)絡(luò)的一部
分,該網(wǎng)絡(luò)例如為廣域網(wǎng)(WAN)、局域網(wǎng)(LAN)、城域網(wǎng)(MAN)、互
聯(lián)網(wǎng)、世界互聯(lián)網(wǎng)、電話網(wǎng)絡(luò)、無線電網(wǎng)絡(luò)、電視網(wǎng)絡(luò)、電纜網(wǎng)、衛(wèi)
星網(wǎng)、無線個域網(wǎng)(WMAN)、無線WAN(WWAN)、無線LAN(WLAN)、
無線MAN(WMAN)、碼分多址(CDMA)蜂窩無線電話通信網(wǎng)絡(luò)、第
三代(3G)網(wǎng)絡(luò)(諸如寬帶CDMA(WCDMA))、第四代(4G)網(wǎng)絡(luò)、時分
多址(TDMA)網(wǎng)絡(luò)、擴展TDMA(E-TDMA)蜂窩無線電話網(wǎng)絡(luò)、全球
移動通信系統(tǒng)(GSM)蜂窩無線電話網(wǎng)絡(luò)北美數(shù)字蜂窩(NADC)蜂窩無
線電話網(wǎng)絡(luò)、全球移動電話系統(tǒng)(UMTS)網(wǎng)絡(luò)、和/或者任何其他用于
運載數(shù)據(jù)的有線或者無線通信網(wǎng)絡(luò)。實施例并不局限于該情況。
在各種實現(xiàn)中,所描述的實施例可以被設(shè)置為在一個或多個有線
通信介質(zhì)上傳輸信息。有線通信介質(zhì)的實例可以包括電線、電纜、印 刷電路板(PCB)、底板、交換結(jié)構(gòu)、半導(dǎo)體材料、雙絞線、同軸電纜、
光纖等等。
在各種實現(xiàn)中,所描述的實施例可以被設(shè)置為在一種或多種類型
的無線通信介質(zhì)上傳輸信息。無線通信介質(zhì)的一個實例可以包括無線 譜的多個部分,例如射頻(RF)譜。在這種實現(xiàn)中,所描述的實施例可 以包括適合于在指定的無線譜上傳輸信息信號的組件和接口 ,例如一 個或多個天線、無線發(fā)射機/接收機("收發(fā)機")、放大器、濾波器、 控制邏輯電路、等等。如在此所用到的,術(shù)語"收發(fā)機"可以以非常 廣泛的意義來使用,包括發(fā)射機、接收機、或者兩者的組合,并且可 以包括各種組件,例如天線、放大器等等。天線的實例可以包括內(nèi)部 天線、全向天線、單極天線、偶極天線、底端饋電天線、圓形極化天 線、微帶天線、分集天線、雙天線、天線陣列、等等。實施例并不局 限于該情況。
在各種實施例中,通信介質(zhì)可以連接到使用輸入/輸出(i/o)適配
器的節(jié)點。1/0適配器可以被設(shè)置為采用任何合適的技術(shù)來工作,以
使用所需要的一組通信協(xié)議、服務(wù)或者操作流程來控制節(jié)點之間的信
息信號。I/O適配器還可以包括合適的物理連接器,以便將I/O適配
器與相應(yīng)的通信介質(zhì)相連。1/0適配器的實例可以包括網(wǎng)絡(luò)接口、
網(wǎng)絡(luò)接口卡(NIC)、線卡、盤控制器、視頻控制器、音頻控制器、等 等。實施例并不局限于該情況。
在各種實現(xiàn)中,所描述的實施例可以被設(shè)置為傳輸一種或者多種 信息,例如媒體信息和控制信息。媒體信息通??梢陨婕氨硎緦τ谟?戶而言有意義的內(nèi)容的任何數(shù)據(jù),例如圖像信息、視頻信息、圖形信 息、音頻信息、聲音信息、文本信息、數(shù)字信息、文字數(shù)字符號、字 符符號、等等。控制信息通??梢陨婕氨硎緦τ谧詣酉到y(tǒng)而言有意義 的命令、指令或者控制字的任何數(shù)據(jù)。例如,控制信息可以用于通過 一個系統(tǒng)路由媒體信息,或者命令一個節(jié)點以特定方式處理媒體信 息。媒體信息和控制信息可以在多個不同裝置和網(wǎng)絡(luò)之間來回發(fā)送。 實施例并不局限于該情況。
在一些實現(xiàn)中,可以根據(jù)一個或多個IEEE 802標準,包括用于 WLAN的IEEE 802.11x(例如,802.11a、 b、 g/h、 j、 n)標準和/或用于 WMAN的802.16標準,來傳輸信息。可以根據(jù)一個或多個數(shù)字視頻 廣播地面(D VB -T)廣播標準以及高性能無線局域網(wǎng)(HiperL AN)標準 來傳輸信息。實施例并不局限于該情況。
在各種實現(xiàn)中,例如,所描述的實施例可以包括或者形成分組網(wǎng) 絡(luò)的一部分,該分組網(wǎng)絡(luò)根據(jù)由一個或多個IEEE 802標準所定義的 分組協(xié)議來傳輸信息。在各種實施例中,可以使用異步傳輸模式(ATM) 協(xié)議、物理層會聚協(xié)議(PLCP)、幀中繼、系統(tǒng)網(wǎng)絡(luò)架構(gòu)(SNA)等等來 傳輸分組。在一些實現(xiàn)中,可以使用介質(zhì)訪問控制協(xié)議,例如由一個 或多個IEEE 802以太網(wǎng)標準所定義的具有沖突檢測的載波監(jiān)聽多路 訪問(CSMA/CD),來傳輸分組。在一些實現(xiàn)中,可以根據(jù)互聯(lián)網(wǎng)協(xié) 議,例如傳輸控制協(xié)議(TCP)和互聯(lián)網(wǎng)協(xié)議(IP)、 TCP/IP、 X.25、超文 本傳輸協(xié)議(HTTP)、用戶數(shù)據(jù)報協(xié)議(UDP)等等,來傳輸分組。實施
例并不局限于該情況。
一些實施例可以使用例如機器可讀介質(zhì)或者產(chǎn)品來實現(xiàn),所述機 器可讀介質(zhì)或者產(chǎn)品可以存儲指令或者指令集,當所述指令或者指令 集被機器執(zhí)行時,可以使得該機器執(zhí)行根據(jù)上述實施例的方法和/或 者操作。這種機器可以包括,例如,任意合適的處理平臺、計算平臺、 計算裝置、處理裝置、計算系統(tǒng)、處理系統(tǒng)、計算機、處理器等等, 并且可以使用硬件和/或者軟件的任意合適的組合來實現(xiàn)。該機器可 讀介質(zhì)或者產(chǎn)品可以包括,例如,任何適合類型的存儲器單元、存儲 器裝置、存儲器產(chǎn)品、存儲器介質(zhì)、存儲裝置,存儲產(chǎn)品、存儲介質(zhì) 和/或者存儲單元,例如,存儲器、可移動或者不可移動介質(zhì)、可擦 除或者不可擦除介質(zhì)、可寫或者可重寫介質(zhì)、數(shù)字或者模擬介質(zhì)、硬
盤、軟盤、壓縮盤ROM(CD-ROM)、可記錄壓縮盤(CD-R)、可重寫 壓縮盤(CD-RW)、光盤、磁盤、磁光盤、可移動存儲卡或者盤、各種 類型的數(shù)字多功能盤(DVD)、磁帶、盒式磁帶、等等。所述指令可以 包含任何合適類型的碼,例如源代碼、編譯過的代碼、經(jīng)過解釋的代 碼、可執(zhí)行代碼、靜態(tài)代碼、動態(tài)代碼、等等。所述指令可以使用任 何合適的高級、低級、面向?qū)ο蟮?、可視的、?jīng)過編譯的和/或者經(jīng) 過解釋的編程語言來實現(xiàn)。實施例并不局限于該情況。
使用可以根據(jù)任意數(shù)量的因素變化的結(jié)構(gòu)來實現(xiàn)一些實施例,這 些因素例如為需要的計算速率、功率等級、耐熱性、處理循環(huán)預(yù)算、 輸入數(shù)據(jù)速率、輸出數(shù)據(jù)速率、存儲器資源、數(shù)據(jù)總線速度、和其他 性能約束。例如,可以使用由通用處理器或者專用處理器執(zhí)行的軟件 來實現(xiàn)實施例。在另一個實例中,實施例可以實現(xiàn)為專用硬件,例如 電路、ASIC、 PLD、 DSP等等。在再一個實施例中,可以使用編程 的通用計算機組件或者用戶定制的硬件組件的任意組合來實現(xiàn)實施 例。實施例并不局限于該情況。
除非特別聲明,否則應(yīng)該理解諸如"處理"、"計算"、"運算"、 "判斷"等等術(shù)語指的是計算機或者計算機系統(tǒng)、或者類似的電子計 算裝置的動作和/或者處理,類似的電子計算裝置用于將在該計算系 統(tǒng)的寄存器和/或者存儲器中表示為物理量(電子)的數(shù)據(jù),處理和/或
者變換為在該計算系統(tǒng)的存儲器、寄存器或者其他這種信息存儲、傳 輸或者顯示裝置中表示為物理量(電子)的數(shù)據(jù)。實施例并不局限于該 情況。
還要指出的是,任何"一個實施例"或者"實施例"的稱謂都意 味著結(jié)合該實施例所描述的特定特征、結(jié)構(gòu)或者特點包含在至少一個 實施例中。在本說明書中的各個位置處的短語"在一個實施例中"的 出現(xiàn)并不是必須指同一實施例。
雖然在此已經(jīng)描述了各個實施例的特定特征,但是本領(lǐng)域技術(shù)人 員可以進行各種修改、替代、改變、和等價變化。因此要理解的是, 附帶的權(quán)利要求目的是覆蓋落入上述實施例的真實精神范圍之內(nèi)的 所有這些修改和變化。
權(quán)利要求
1、一種設(shè)備,包括媒體處理節(jié)點,用于對宏塊數(shù)據(jù)執(zhí)行單指令多數(shù)據(jù)處理,所述宏塊數(shù)據(jù)包含宏塊中多個塊的系數(shù),所述媒體處理節(jié)點包括編碼模塊,用于根據(jù)所述宏塊數(shù)據(jù),生成與所述多個塊相關(guān)聯(lián)的多個標志字,并且根據(jù)所述標志字并行地確定多個塊的游程值。
2、 如權(quán)利要求l所述的設(shè)備,其中,所述系數(shù)包括所述多個塊 中每個塊的經(jīng)過變換、量化、掃描的系數(shù)的序列。
3、 如權(quán)利要求1所述的設(shè)備,其中,所述編碼模塊將標志字存 儲在標志寄存器中。
4、 如權(quán)利要求l所述的設(shè)備,其中,所述編碼模塊通過執(zhí)行前 導(dǎo)零檢測來確定游程值。
5、 如權(quán)利要求l所述的設(shè)備,其中,所述編碼模塊根據(jù)所述游 程值,對多個塊的非零值系數(shù)執(zhí)行并行的移動。
6、 如權(quán)利要求5所述的設(shè)備,其中,所述非零值系數(shù)對應(yīng)于多個塊的級別值。
7、 如權(quán)利要求l所述的設(shè)備,其中,所述編碼模塊輸出碼陣列 至打包模塊,以形成所述宏塊的碼序列。
8、 如權(quán)利要求7所述的設(shè)備,其中, 所述打包模塊與所述編碼模塊分離,并且 所述編碼模塊對多個宏塊執(zhí)行多線程處理。
9、 一種系統(tǒng),包括 通信介質(zhì);單指令多數(shù)據(jù)處理設(shè)備,耦合至所述通信介質(zhì),所述單指令多數(shù) 據(jù)處理設(shè)備包括媒體處理節(jié)點,用于處理宏塊數(shù)據(jù),所述宏塊數(shù)據(jù)包含宏塊中多 個塊的系數(shù),所述媒體處理節(jié)點包括編碼模塊,其根據(jù)所述宏塊數(shù)據(jù) 生成與所述多個塊相關(guān)聯(lián)的多個標志字,并且根據(jù)所述標志字并行地 確定多個塊的游程值。
10、 如權(quán)利要求9所述的系統(tǒng),其中,所述系數(shù)包括所述多個塊 中每個塊的經(jīng)過變換、量化、掃描的系數(shù)的序列。
11、 如權(quán)利要求9所述的系統(tǒng),其中,所述編碼模塊將標志字存 儲在標志寄存器中。
12、 如權(quán)利要求9所述的系統(tǒng),其中,所述編碼模塊通過執(zhí)行前 導(dǎo)零檢測來確定游程值。
13、 如權(quán)利要求9所述的系統(tǒng),其中,所述編碼模塊根據(jù)所述游 程值,對多個塊的非零值系數(shù)執(zhí)行并行的移動。
14、 如權(quán)利要求13所述的系統(tǒng),其中,所述非零值系數(shù)對應(yīng)于 多個塊的級別值。
15、 如權(quán)利要求9所述的系統(tǒng),其中,所述編碼模塊輸出碼陣列 至打包模塊,以形成所述宏塊的碼序列。
16、 如權(quán)利要求15所述的系統(tǒng),其中, 所述打包模塊與所述編碼模塊分離,并且 所述編碼模塊對多個宏塊執(zhí)行多線程處理。
17、 一種方法,包括步驟接收宏塊數(shù)據(jù),所述宏塊數(shù)據(jù)包含宏塊中多個塊的系數(shù);并且 對所述宏塊數(shù)據(jù)執(zhí)行單指令多數(shù)據(jù)處理,包括步驟根據(jù)所述宏塊數(shù)據(jù)生成與所述多個塊相關(guān)聯(lián)的多個標志字,并且根據(jù)所述標志字并行地確定多個塊的游程值。
18、 如權(quán)利要求17所述的方法,其中,所述系數(shù)包括所述多個 塊中每個塊的經(jīng)過變換、量化、掃描的系數(shù)的序列。
19、 如權(quán)利要求17所述的方法,還包括將標志字存儲在標志 寄存器中。
20、 如權(quán)利要求17所述的方法,還包括通過執(zhí)行前導(dǎo)零檢測 來確定游程值。
21、 如權(quán)利要求17所述的方法,還包括根據(jù)所述游程值,對 多個塊的非零值系數(shù)執(zhí)行并行的移動。
22、 如權(quán)利要求21所述的方法,還包括根據(jù)所述非零值系數(shù), 確定多個塊的級別值。
23、 如權(quán)利要求17所述的方法,還包括輸出碼陣列,以形成所述宏塊的碼序列。
24、 如權(quán)利要求23所述的方法,還包括對多個宏塊執(zhí)行多線程處理。
25、 一種包含有機器可讀存儲介質(zhì)的產(chǎn)品,所述機器可讀存儲介 質(zhì)所包含的指令在執(zhí)行時使得系統(tǒng) 接收宏塊數(shù)據(jù),所述宏塊數(shù)據(jù)包含宏塊中多個塊的系數(shù);并且 對所述宏塊數(shù)據(jù)執(zhí)行單指令多數(shù)據(jù)處理,包括步驟根據(jù)所述宏塊數(shù)據(jù)生成與所述多個塊相關(guān)聯(lián)的多個標志字,并且根據(jù)所述標志字并行地確定多個塊的游程值。
26、 如權(quán)利要求25所述的產(chǎn)品,其中,所述系數(shù)包括所述多個 塊中每個塊的經(jīng)過變換、量化、掃描的系數(shù)的序列。
27、 如權(quán)利要求25所述的產(chǎn)品,還包括指令,其在執(zhí)行時使得所述系統(tǒng)將標志字存儲在標志寄存器中。
28、 如權(quán)利要求25所述的產(chǎn)品,還包括指令,其在執(zhí)行時使得所述系統(tǒng)通過執(zhí)行前導(dǎo)零檢測來確定游程值。
29、 如權(quán)利要求25所述的產(chǎn)品,還包括指令,其在執(zhí)行時使得所述系統(tǒng):根據(jù)所述游程值,對多個塊的非零值系數(shù)執(zhí)行并行的移動。
30、 如權(quán)利要求29所述的產(chǎn)品,還包括指令,其在執(zhí)行時使得所述系統(tǒng)根據(jù)所述非零值系數(shù),確定多個塊的級別值。
31、 如權(quán)利要求25所述的產(chǎn)品,還包括指令,其在執(zhí)行時使得 所述系統(tǒng)輸出碼陣列,以形成所述宏塊的碼序列。
32、 如權(quán)利要求25所述的產(chǎn)品,還包括指令,其在執(zhí)行時使得所述系統(tǒng)對多個宏塊執(zhí)行多線程處理。
33、 一種方法,包括接收宏塊數(shù)據(jù);并且對所述宏塊數(shù)據(jù)執(zhí)行并行的多線程處理,包括并發(fā)的運動估計操 作、編碼操作、以及重構(gòu)操作,其中,所述編碼操作在功能和數(shù)據(jù)域 上與所述重構(gòu)操作分離,以實現(xiàn)線程級的并行性。
34、 如權(quán)利要求33所述的方法,其中,多線程處理包括可變長 度編碼操作。
35、 如權(quán)利要求33所述的方法,其中,多線程處理包括比特流 打包操作。
全文摘要
描述了一種設(shè)備、系統(tǒng)、方法和產(chǎn)品,其用于使用單指令多數(shù)據(jù)處理并行地執(zhí)行媒體編碼。所述設(shè)備可以包括媒體處理節(jié)點,用于對宏塊數(shù)據(jù)執(zhí)行單指令多數(shù)據(jù)處理。宏塊數(shù)據(jù)可以包含一個宏塊中多個塊的系數(shù)。媒體處理節(jié)點可以包括編碼模塊,用于根據(jù)所述宏塊數(shù)據(jù),生成與多個塊相關(guān)聯(lián)的多個標志字,并且根據(jù)所述標志字并行地確定多個塊的游程值。還描述和聲明了其他實施例。
文檔編號G06F15/80GK101176089SQ200680016686
公開日2008年5月7日 申請日期2006年5月2日 優(yōu)先權(quán)日2005年5月16日
發(fā)明者洪 江 申請人:英特爾公司