專利名稱:用于在并行處理系統(tǒng)中處理多媒體數(shù)據(jù)的子塊的方法和裝置的制作方法
技術(shù)領(lǐng)域:
0002本發(fā)明總的涉及并行處理,更具體地,本發(fā)明涉及用于在并行 處理系統(tǒng)中處理多媒體數(shù)據(jù)的方法和裝置。
背景技術(shù):
0003多i某體數(shù)據(jù)日益增加的使用已經(jīng)導(dǎo)致不斷要求以更快速和更 有效的方式來實(shí)時(shí)處理和遞送這些數(shù)據(jù)。特別地,對(duì)于以更快速和更有效 的方式并行處理諸如圖像和音頻相關(guān)的多^ 某體數(shù)據(jù)的需求正日益增加。并 行處理的需要一直上升,例如,在諸如多媒體數(shù)據(jù)的壓縮和/或解壓縮的計(jì) 算密集的處理期間,需要進(jìn)行相對(duì)數(shù)量較大的計(jì)算,并要求足夠快速實(shí)現(xiàn), 以使得可以實(shí)時(shí)遞送音頻和^L頻。
0004相應(yīng)地,期望可以在多媒體數(shù)據(jù)的并行處理中繼續(xù)提高處理 能力。特別期望產(chǎn)生更快速和更有效的方法用于這些數(shù)據(jù)的并行處理。這 些方法需要針對(duì)塊并行處理、子塊并行處理和雙線性濾波器并行處理。
發(fā)明內(nèi)容
0005本發(fā)明可以以多種方式實(shí)現(xiàn),包括作為一種方法和一種計(jì)算 機(jī)可讀介質(zhì)。本發(fā)明的多個(gè)實(shí)施例將在下文討論。
0006在具有計(jì)算單元的并行處理陣列中,所述計(jì)算單元被配置為 處理圖像的數(shù)據(jù)的塊, 一種方法包括產(chǎn)生圖像數(shù)據(jù)的塊,其中,圖像數(shù) 據(jù)的所述塊的每一個(gè)被分為多個(gè)子塊,并且每一子塊的第一數(shù)據(jù)點(diǎn)標(biāo)志所 述子塊的起始位置,并且對(duì)于圖像數(shù)據(jù)的所述塊的每一個(gè),產(chǎn)生類型數(shù)據(jù) 的塊,其中,類型數(shù)據(jù)的所述塊的每一個(gè)包括圖像數(shù)據(jù)的多個(gè)塊中的所有 子塊的第一數(shù)據(jù)點(diǎn)。
0007在另一方面,其上具有計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)可讀介質(zhì),
所述計(jì)算機(jī)可執(zhí)行指令用于一種在具有計(jì)算單元的并行處理陣列中的處
理方法,所述計(jì)算單元被配置為處理圖像的數(shù)據(jù)的塊,所述方法包括產(chǎn)
生圖像數(shù)據(jù)的塊,其中,圖像數(shù)據(jù)的所述塊的每一個(gè)被分為多個(gè)子塊,并 且每一子塊的第一數(shù)據(jù)點(diǎn)標(biāo)志所述子塊的起始位置,并且對(duì)于圖像數(shù)據(jù)的 所述塊的每一個(gè),產(chǎn)生類型數(shù)據(jù)的塊,其中,類型數(shù)據(jù)的所述塊的每一個(gè) 包括圖像數(shù)據(jù)的多個(gè)塊中的所有子塊的第 一數(shù)據(jù)點(diǎn)。
0008通過閱讀說明書、權(quán)利要求書和附圖,本發(fā)明的其它目的和 特征將變得明顯。
圖l概念性示出1080i高清晰度(HD)幀的宏塊;
圖2A和2B進(jìn)一步示出在諸如圖像幀中的宏塊的塊的布置;
圖3A-3C示出從圖像中的宏塊的布置到各個(gè)并行處理器的映射;
圖4A-4E示出對(duì)于各種圖像格式的圖像到各個(gè)并行處理器的映射;
圖5A-5B示出16x8映射,用于映射圖像的子塊到各個(gè)并行處理器中;
圖6A-6B示出16x4映射,用于映射圖像的子塊到各個(gè)并行處理器中;
圖7A-7C示出才艮據(jù)本發(fā)明的實(shí)施例的映射圖像塊到并行處理器的替代方
法;
圖8A-8C示出圖^象格式的數(shù)據(jù)結(jié)構(gòu)的詳細(xì)細(xì)節(jié),包括灰階(luma )和色 度信息;
圖9A-9C示出根據(jù)本發(fā)明的實(shí)施例的映射多個(gè)圖像塊到并行處理器的各 種替代方法;
圖10A-10C示出根據(jù)本發(fā)明的實(shí)施例的數(shù)據(jù)塊數(shù)據(jù)位置、子塊位置、子 塊標(biāo)志數(shù)據(jù)位置和類型數(shù)據(jù)塊;
圖11A-11B示出算法處理步驟和選擇代碼,用于指示哪些處理步驟用于 哪些數(shù)據(jù)變量;
圖12示出并行處理器。
0010相同的附圖標(biāo)記在整個(gè)附圖中指的是相應(yīng)的部分。
具體實(shí)施例方式
0011此處描述的本發(fā)明涉及并行處理改進(jìn)的三個(gè)主要區(qū)域地址塊 并行處理、子塊并行處理和類似算法并行處理。
塊并4于處理
0012就某種意義而言,本發(fā)明涉及一種更有效的方法用于多媒體數(shù) 據(jù)的并行處理。眾所周知,在不同的圖像格式中,圖像被細(xì)分為塊,其中, 由于圖像典型的是矩陣形式,"較后"塊通常位于圖#_中其它塊的下面和右 邊,并且取決于"較前"塊的信息,所述"較前"塊是位于較后塊的上面和 左邊的圖像。較前塊一定會(huì)在較后塊之前處理,因?yàn)檩^后塊需要來自于較前 塊的通常稱之為相關(guān)數(shù)據(jù)的信息。相應(yīng)地,塊(或者其中部分)依據(jù)其相關(guān) 數(shù)據(jù)的順序被傳輸?shù)礁鱾€(gè)并行處理器。較前塊被首先發(fā)送到并行處理器,較 后塊稍后發(fā)送。塊被存儲(chǔ)在并行處理器中的特定位置,并且如果必要就一皮移 位,使得每一塊在處理時(shí)具有其位于較前數(shù)據(jù)塊的特定組的、特定位置的相 關(guān)數(shù)據(jù)。以此方式,相關(guān)數(shù)據(jù)可以使用相同命令獲取。也就是,較前塊被移 位,使得較后塊可以使用單個(gè)命令集處理,所述命令集指示每一處理器從特 定位置獲取其相關(guān)數(shù)據(jù)。通過允許每一并行處理器使用同一命令集處理塊, 本發(fā)明的方法不需要發(fā)送單獨(dú)的命令到每一處理器,而是允許發(fā)送單一全局 命令集。這將產(chǎn)生更快速和更有效的處理。
0013圖1概念性示出圖像的示例性幀,其一4殳被視作矩陣形式和/ 或在存儲(chǔ)器中存儲(chǔ)。在此例中,1080iHD圖像矩陣10被細(xì)分為68行,每一 行12Q個(gè)宏塊12。典型地,諸如此1080i幀的圖像通過各自宏塊12處理, 也就是,并行處理陣列的每一計(jì)算單元(或者處理器)處理一個(gè)或者多個(gè)宏 塊U。但是,盡管本發(fā)明經(jīng)常在宏塊12的上下文中討論,但應(yīng)該認(rèn)識(shí)到本 發(fā)明可以將圖像和其它數(shù)據(jù)細(xì)分為任意部分(通常稱為塊),其可以被并行 處理。
0014如上所述,諸如圖1的1080i HD幀的圖像的宏塊包括相關(guān)數(shù) 據(jù),如在圖2A-2B中進(jìn)一步示出的。根據(jù)諸如但不限于h. 264改進(jìn)的視頻編 碼標(biāo)準(zhǔn)和VC-1 MPEG-4標(biāo)準(zhǔn)的標(biāo)準(zhǔn),圖像的塊R的處理需要來自塊a、 d、 b 和c的相關(guān)數(shù)據(jù)(例如插值所需數(shù)據(jù))。也就是,根據(jù)這些標(biāo)準(zhǔn),圖像的每 一塊的處理需要來自左側(cè)緊鄰的塊的數(shù)據(jù),以及來自對(duì)角方向上左上緊鄰的 塊、上方緊鄰的塊和對(duì)角方向上右上緊鄰的塊的數(shù)據(jù)。因此,塊a依賴于來 自塊d和b的信息,塊b依賴于來自塊d的信息等等,但是塊d并不依賴于 任一其它塊的信息。因此可以看出這些塊的并行處理需要沿對(duì)角線處理,其 中,首先處理塊d,緊接著處理依賴于塊d信息的塊a和b,然后是依賴于 塊a、 d和b的信息的塊R和c,等等。
0015隨后參見圖3A-3C,因此可以看出,對(duì)于最佳的并行處理,塊 可以被映射到處理器,并且以處理較前塊先于較后塊的順序被處理。圖3A 示出示例性圖像的宏塊結(jié)構(gòu),如該圖像對(duì)觀察者所呈現(xiàn)的。如上所述,按照 對(duì)于較后塊保持其相關(guān)數(shù)據(jù)的順序,圖3A的塊被處理。圖3B示出必須被處 理的對(duì)角線,該對(duì)角線被處理的順序是要保持用于較后塊的相關(guān)數(shù)據(jù)。每一 行示出 一條單獨(dú)的對(duì)角線,每一對(duì)角線僅需要來自其上面的行的相關(guān)數(shù)據(jù)。 例如,塊()。被首先處理,因?yàn)槠湮挥趫D像的最左上角,并且因此不具有任何 相關(guān)數(shù)據(jù)。緊接著處理塊0。,因此出現(xiàn)在下一行,因?yàn)槠鋬H需要來自塊()。的 相關(guān)數(shù)據(jù)。接著處理塊、和1。,并且因此顯示在接下一行,因此塊l,需要來自 塊()。和0。的相關(guān)數(shù)據(jù),并且塊1。需要來自塊0。的相關(guān)數(shù)據(jù)。因此可以看出圖 3A中的塊的每一對(duì)角線(用虛線突出顯示)可以被映射到圖3B中示出的并 行處理陣列的行中。
0016雖然映射塊到圖3B所示的計(jì)算單元的多行來保存所有必須的 上面每一行的相關(guān)數(shù)據(jù),但仍然存在困難。更具體地,用于每一塊的相關(guān)數(shù) 據(jù)仍然經(jīng)常位于相對(duì)于所述塊的不同位置中。例如,從圖3A可以看出塊4,具 有位于下述塊的相關(guān)數(shù)據(jù),以順時(shí)針方形分別是3。 1。、 2。和3。。當(dāng)被映 射到圖3B所示的處理器中,這些處理器如箭頭所示布置,3。 1。、 2。和3。在 塊4,上面布置成L形。相反,用于塊93的相關(guān)數(shù)據(jù)位于塊83、 82、 72和62中,
其以箭頭所示方式布置。這說明為了在處理陣列中所示的位置處理每一塊, 每一計(jì)算單元將需要其自己的命令以引導(dǎo)其來荻取相關(guān)數(shù)據(jù)。換句話說,因
為對(duì)于每一塊(如塊4,和93所示),其各自的相關(guān)數(shù)據(jù)布置不同,必須將單獨(dú) 的數(shù)據(jù)獲取命令推送到每一處理器,降低了圖像被處理的速度。
0017在本發(fā)明的實(shí)施例中,通過在處理每一塊之前移位每一塊的相 關(guān)數(shù)據(jù),克服了此問題。本領(lǐng)域的普通技術(shù)人員可以認(rèn)識(shí)到可以以任一方式 移位相關(guān)數(shù)據(jù)。但是,圖3C示出一種用于移位相關(guān)數(shù)據(jù)的方便的方法,其 中,包含相關(guān)數(shù)據(jù)的塊一皮移位為上述的"L"形。也就是,當(dāng)處理塊X時(shí), 需要來自塊A-D的相關(guān)數(shù)據(jù)。圖像中,這些塊分別位于塊X的正上方、左上 緊鄰、左邊緊鄰和右上緊鄰的位置。在并行處理陣列中,這些塊可以隨后分 別被移位到X上方的兩個(gè)處理器的位置、上方的三個(gè)處理器的位置、上方的 一個(gè)處理器的位置和緊鄰右上方的處理器的位置。例如,圖3B中,對(duì)于塊93 的處理,將包含塊8x,和6x的每一行向右移一個(gè)位置,將83、 82、 72和62置為 特征"L"形。
0018在處理塊X之前通過將所有這樣的相關(guān)數(shù)據(jù)移位為"L"形, 同樣的命令集可以用于處理每一塊X。這意味著命令集只需要在一個(gè)加載操 作中被載入到并行處理器,而不需要對(duì)于每一處理器載入單獨(dú)的命令集。這 可以使得在處理圖像時(shí)帶來顯著的時(shí)間節(jié)省,特別是對(duì)于大的處理陣列而5 。
0019本領(lǐng)域內(nèi)普通技術(shù)人員將會(huì)認(rèn)識(shí)到以上描述的方法僅是本發(fā)明 的一個(gè)實(shí)施例。更具體地,將會(huì)認(rèn)識(shí)到盡管數(shù)據(jù)可以被移成上述"L"形, 但本發(fā)明不限于將數(shù)據(jù)塊移位成此結(jié)構(gòu)。而是,本發(fā)明包括將相關(guān)數(shù)據(jù)移位 為任一結(jié)構(gòu),或者特征位置,這可以共同用于被處理的每一塊X。特別地, 不同圖像格式可以具有不同于圖2A中所示的位于塊中的相關(guān)數(shù)據(jù),可以利 用更便利應(yīng)用的除了 "L"形的其它特征位置或者形狀。
0020本領(lǐng)域的普通技術(shù)人員也將認(rèn)識(shí)到,盡管到目前為止本發(fā)明已 在具有多個(gè)宏塊的1080i HD幀的上下文中進(jìn)行了說明,本發(fā)明也可包括可 以被分為任一子塊的任一圖像格式。也就是說,本發(fā)明的方法可以應(yīng)用于 任一幀的任一子塊。圖4A-4E說明了這一點(diǎn),其示出不同類型幀的對(duì)角線 如何被映射到不同數(shù)量的處理器行中。圖4A中,HD幀的對(duì)角線可以被映射 到圖示處理器的連續(xù)行中,產(chǎn)生梯形(或者替換為菱形,或者甚至為二者 組合)布局,其中使用257行處理器, 一行中最多使用61個(gè)處理器。更小 的幀使用更少的行,也就是更少的處理器。例如,在圖4B中,CIF幀使用 59行處理器,任一行中最多19個(gè)處理器。類似的,在圖4C中,當(dāng)映射到 并行處理陣列時(shí),625 SD幀將使用117行,每行最多36個(gè)處理器。類似, 在圖4D中,當(dāng)映射到同一陣列中,SIF幀將使用51行,每行最多16個(gè)處 理器。在圖4E中,525 SD幀將使用107行,并且每行最多30個(gè)處理器。 從這些例子可以看出,本發(fā)明可以用于映射任一圖像到并行處理陣列,其 中,數(shù)據(jù)可以被移位到上述的行中,允許使用單個(gè)命令或者命令集處理塊。0021也應(yīng)該認(rèn)識(shí)到本發(fā)明不限于在塊和并行處理陣列的計(jì)算單元之 間嚴(yán)格的l-l對(duì)應(yīng)。也就是說,本發(fā)明包括這樣的實(shí)施例,其中,塊的部分 被映射為計(jì)算單元的部分,通過處理這些塊,增加效率和速度。圖5A-兄說 明這樣一個(gè)實(shí)施例,其中,圖像的塊被分為兩部分。隨后這些子部的每一個(gè) 如上所述被處理,除了每一子部被映射到處理器的一半并且由這一半處理器 處理。參見圖5A,塊^皮分為所示的上半部分和下半部分。也就是,左上角塊 被分為兩個(gè)子塊0和2。類似的,與其相鄰的塊被分為子塊1和3,以此類
推。注意,對(duì)于相關(guān)目的而言,每一子塊相當(dāng)于一個(gè)完整塊,即子塊l僅需 要來自塊O的相關(guān)數(shù)據(jù),最左邊的子塊2需要來自塊0和1的相關(guān)數(shù)據(jù),等
等。參見圖5B,這些子塊隨后被映射到所示處理器的等分部分中,子塊0 和l被映射到第一行,子塊2和子塊3被映射到第二行,以此類推。隨后可 以以上述同樣的方式使用本發(fā)明的過程,如果必要,子塊沿著處理器的行移 位。
0022以此方式,可以看出不同于前述實(shí)施例,在同一時(shí)刻使用多個(gè) 處理器,允許使用多個(gè)處理器陣列,并且因此帶來更快的圖像處理。特別地, 參見圖3B,注意所使用的處理器數(shù)量每隔一行增加一個(gè)前兩行每行使用一 個(gè)處理器,緊接著的兩行每行使用兩個(gè)處理器,以此類推。相反,圖5B示 出的實(shí)施例中所使用的處理器數(shù)量每行增加一個(gè)第一行使用 一個(gè)處理器, 第二行使用兩個(gè),以此類推。圖5A-5B的實(shí)施例因此同時(shí)使用更多的處理器, 產(chǎn)生更快的處理。
0023圖6A-6B示出另一個(gè)這樣的實(shí)施例,其中圖像的塊被分為四個(gè) 子塊,例如,圖像的左上塊被分為子塊0、 2、 4和6。這些子塊隨后按照其 相關(guān)數(shù)據(jù)所需的順序被映射到處理器的部分。也就是,每一處理器可以被分 為四個(gè)"子行,,,每一個(gè)子行可以處理一行子塊。各個(gè)子塊隨后可以被映射 到所示處理器的子行。例如,子塊O、 1、 2和3可以全部被映射到第一行中 的兩個(gè)處理器(第一處理器處理子塊0和1以及一個(gè)子塊2和一個(gè)子塊3, 并且第二處理器處理其余子塊2和3),并且相應(yīng)處理。注意,此實(shí)施例使用 第一行中的兩個(gè)處理器,而不是一個(gè),并且處理器的數(shù)量每行增加兩個(gè),因 此允許每行使用更多的處理器。
0024本發(fā)明也包括將塊和處理器分為16個(gè)部分。此外,本發(fā)明包 括"并排"處理多個(gè)塊,即每行處理多個(gè)塊。圖7A-7C示出這些概念。圖7A 說明塊被分為所示的16個(gè)子塊()。-8。,本領(lǐng)域內(nèi)技術(shù)人員可以認(rèn)識(shí)到單獨(dú)的 塊可以被獨(dú)單獨(dú)處理,只要它們被布置成可以正確確定它們的相關(guān)數(shù)據(jù)。圖 7B示出這樣的事實(shí),即不互相要求相關(guān)數(shù)據(jù)的塊(即不相關(guān)塊)可以被并行 處理。每一塊如圖7A所分,所示子塊為了簡化而沒有下標(biāo),此處,例如, 第一塊被分為16子塊,標(biāo)以0-9,其中如上,具有相同的標(biāo)號(hào)的子塊被同時(shí) 處理。只要每一行中的塊不互相要求相關(guān)數(shù)據(jù),其可以在同一行中一起被處 理。因此, 一組處理器可以同時(shí)處理多個(gè)不相關(guān)塊。例如,圖7B中的頂4亍 的四個(gè)塊(分別標(biāo)以0-9、 10-19、 20-29和30-39的子塊)可以^使用單個(gè)處
理器集來處理。
0025圖7C說明了這點(diǎn),其中示出處理器(沿左側(cè)用數(shù)字標(biāo)識(shí))和 相應(yīng)載入的子塊的表。此處,子塊0-9可以被載入處理器0-9 (其中處理器 沿著左方標(biāo)識(shí))的子塊中,形成所示的類菱形模式。其余塊隨后被載入處理 器的交迭的集中,其中,子塊10-19被載入處理器4-13中,等等。以此方 式,塊的其余子塊以及進(jìn)入處理器交迭的集的多個(gè)塊的"鏈"二者,允許更 快速地使用多個(gè)處理器,帶來更快處理。
0026圖7A-7C說明4 x 4處理,應(yīng)該明白同樣的技術(shù)可以使用8 x 8
來實(shí)現(xiàn)。
0027除了在不同的處理器中處理不同的塊,也應(yīng)該注意到同一塊中 的不同類型的數(shù)據(jù)可以在不同的處理器中處理。更具體地,本發(fā)明包括來自 同一塊的亮度(intensity)信息、灰階(luma )信息和色度(chroma)信 息的獨(dú)立處理。也就是,來自一個(gè)塊的亮度信息可以獨(dú)立于來自此塊的灰階 信息被處理,灰階信息可以獨(dú)立于來自此塊的色度信息被處理。本領(lǐng)域內(nèi)的 普通技術(shù)人可以注意到灰階信息和色度信息可以被映射到處理器并且如上 處理(即,如有必要移位等等),并且也可以被分割,其子塊被映射到不同 的處理器,來提高處理效率。圖8A-8C示出這一點(diǎn)。在圖8A中,灰階數(shù)據(jù) 的一個(gè)塊可以被映射到一個(gè)處理器,而其相應(yīng)的色度數(shù)據(jù)的"半個(gè)塊"被映 射到同一處理器或者不同處理器。更具體地,注意到,量度、灰階和色度數(shù) 據(jù)可以被映射到處理器的相鄰集,或者類似于圖7B的行的至少部分交迭的 集中?;译A和色度信息也可以被分為子塊,用于在各個(gè)計(jì)算單元的子塊中處 理,如結(jié)合圖5A-5B和圖6A-6B所描述的。更具體地,圖8B-8C說明一個(gè)幀 的灰階和色度數(shù)據(jù)分別分為兩個(gè)和四個(gè)子塊。圖8B的兩個(gè)子塊可以隨后在 處理器的不同等分部分中處理,如結(jié)合圖5A-5B所描述。類似地,圖8C的 四個(gè)子塊可以在處理器的不同的四個(gè)之一中處理,如圖6A-6B中描述。
0028盡管一些上述實(shí)施例包括通過同一行或者多行處理器并排處理 不同塊,但也應(yīng)該注意到本發(fā)明包括沿著同一列處理器處理不同塊,也可以 提高處理的效率和速度。圖9A-9C概念性示出不同塊使用的處理器,其描述 了后一概念的實(shí)施例。此處,多行處理器沿著垂直軸延伸,而列沿著水平軸 延伸。因此可以看出當(dāng)?shù)湫偷膲K映射到多行處理器陣列時(shí),其將使用由區(qū)域 100-104描述的大體上呈梯形的處理器。更具體地,注意,區(qū)域104并不使 用多個(gè)處理器,因此減少處理陣列的總的用量。這可以通過處理占用區(qū)域
100-104的塊的正下方的另一塊的數(shù)據(jù)來至少部分補(bǔ)救。這個(gè)塊可以占用區(qū)
域106-112,允許使用更多的處理器,特別在隨后塊之間的"過渡"區(qū)域 104-106中。相比于如果用戶僅在完成區(qū)域100-104中的塊的處理之后才處 理區(qū)域106-112的塊,以此方式,可以更快完成處理并且使用更多的陣列。
0029圖9B-9C示出這個(gè)概念的其余延伸。更具體地,注意,所映射 的塊的垂直"鏈"可以在兩個(gè)或者多個(gè)塊上持續(xù),使得使用足夠多的陣列。 更具體地,塊可以被映射到互相相鄰的列中, 一個(gè)塊占用區(qū)域116-120,另 一塊占用區(qū)域122-126,以此類推。
0030應(yīng)該注意到,可以使用菱形替代梯形或者與梯形結(jié)合使用。此 外,不同格式的映射的任意組合可以通過不同尺寸的菱形和/或梯形或者其 組合來實(shí)現(xiàn),從而便于同時(shí)處理多個(gè)數(shù)據(jù)流。
0 0 31本領(lǐng)域內(nèi)的普通技術(shù)人員也可以注意到以上所述的本發(fā)明的過 程和方法可以通過多個(gè)不同并行處理器執(zhí)行。本發(fā)明構(gòu)想由具有多個(gè)計(jì)算單 元(每一計(jì)算單元可以處理圖像數(shù)據(jù)塊)的任一并行處理器使用,并且并行 處理器可以移位此數(shù)據(jù)用于保持相關(guān)。盡管構(gòu)思了使用多個(gè)這樣的并行處理 器,但一個(gè)適合的例子在2006年10月19日提交的美國專利申請(qǐng)第 11/584480、名稱為"集成處理器陣列、指令定序器和1/0控制器"中描述, 其公開內(nèi)容通過應(yīng)用全部包括在本申請(qǐng)中并用于所有目的。 子塊并行處理
0032圖10A-10C示出與子塊并行處理相關(guān)的改進(jìn)。#4居上述的^1頻 標(biāo)準(zhǔn),每一宏塊12為數(shù)據(jù)位(即像素)的16行乘16列(16x16)的矩陣, 劃分為四個(gè)或者多個(gè)子塊20。更具體地,每一矩陣分為至少四個(gè)相等的四分 體子塊20,每一子塊20的尺寸為8 x 8。每一四分體子塊20可以進(jìn)一步分 為具有尺寸8x4、 4x8和4x4的子塊20。因此,任一給定塊12可以#皮分 為具有尺寸8x8、 8x4、 4 x 8和4 x 4的子塊20。
0033圖10A示出塊12,其具有一個(gè)8 x 8子塊20a、兩個(gè)4 x 8子塊 20b、兩個(gè)8x4子塊20c和四個(gè)4x4子塊20d。每一尺寸的子塊20的數(shù)目 (如果有的話),以及其在塊12中的位置可以變化。此外,各種尺寸的子塊 20的lt量和位置可以隨塊12到塊12改變。
0034因此,為了以并行方式處理具有子塊的塊12,必須首先確定子 塊的位置和尺寸。確定每一塊12的子塊的位置和尺寸是^^時(shí)的,其對(duì)于上 述塊12的并行處理增加了顯著的處理開銷。需要處理器分析塊12兩次,一次來確定子塊20的位置和數(shù)量,并且然后再次以正確的順序來處理子塊(注
意,如上所述, 一些子塊20可能需要來自另一子塊處理的相關(guān)數(shù)據(jù),這就
是為什么必須首先確定各個(gè)子塊的位置和尺寸的原因)。
0035為了解決這個(gè)問題,本發(fā)明要求包括類型數(shù)據(jù)的特定塊,所述 類型數(shù)據(jù)用于標(biāo)識(shí)塊12中所有子塊20的類型(即位置和尺寸),因此避免 要求處理器做出此決定。圖10B示出塊12,并且示出可能形成用于任一給定 子塊20的第一數(shù)據(jù)位置(首先意味著子塊20的最左上方項(xiàng))的十六個(gè)數(shù)據(jù) 位置22。對(duì)于每一塊12,這十六個(gè)位置22將包括必要的數(shù)據(jù)來標(biāo)志此數(shù)據(jù) 位置是否構(gòu)成新子塊20的第一項(xiàng)。如果此位置被標(biāo)志,隨后此位置被作為 數(shù)據(jù)塊20的起始點(diǎn),并且其左邊緊鄰的位置(如果存在)被認(rèn)為是左邊緊 鄰的最后一列子塊20,并且上方緊鄰的位置(如果存在)被作為上方緊鄰的 最后一行子塊20。如果沒有標(biāo)志,則此項(xiàng)表示同一子塊20的持續(xù)。因此, 可以看出這十六個(gè)標(biāo)志數(shù)據(jù)位置22包括所有確定子塊20的位置和尺寸必須 的數(shù)據(jù)。
0036圖IOC示出根據(jù)本發(fā)明的類型數(shù)據(jù)塊,其中,類型數(shù)據(jù)塊24, 具有16x4的尺寸,和每一塊12相關(guān)。塊24的四行對(duì)應(yīng)于包括該標(biāo)志數(shù)據(jù) 位置22的塊12中的四行。因此,通過僅分析類型數(shù)據(jù)塊24的每一行中的 第一、第五、第九和第十三數(shù)據(jù)位置,可以確定子塊20的位置和尺寸。對(duì) 于實(shí)現(xiàn)此目的,無需進(jìn)一步地分析塊20。此外,保持塊20中的數(shù)據(jù)位置可 以被用于存儲(chǔ)其它數(shù)據(jù),諸如子塊類型(I局部預(yù)測、使用具有運(yùn)動(dòng)矢量的 P預(yù)測和B雙向預(yù)測)、塊向量等等。因此,如圖IOC所示,僅標(biāo)志構(gòu)成新子 塊的起始的那些數(shù)據(jù)位置22,并且塊24的每一行中的第一、第五、第九和 第十三數(shù)據(jù)位置匹配此標(biāo)志。 相似性算法并行處理
0037并行處理優(yōu)化的另一個(gè)來源涉及具有某些相似性(例如,相似 計(jì)算)的同時(shí)處理算法。計(jì)算機(jī)處理涉及兩個(gè)基本計(jì)算數(shù)值計(jì)算和數(shù)據(jù)移 動(dòng)。通過執(zhí)行計(jì)算數(shù)值運(yùn)算或者移動(dòng)(或者復(fù)制)期望數(shù)據(jù)到新的位置的算 法實(shí)現(xiàn)這些計(jì)算過程。這些算法通常使用一系列"IF"語句執(zhí)行,其中如果 符合某些標(biāo)準(zhǔn),則執(zhí)行一個(gè)計(jì)算,然而如果不符合,則不做此計(jì)算或者做一 個(gè)不同的計(jì)算過程。通過利用多個(gè)IF語句,可以在每一數(shù)據(jù)中執(zhí)行所期望 的全部計(jì)算過程。但是,此方法存在多個(gè)缺陷,首先其耗時(shí),并且不利于并 行處理。第二,因?yàn)閷?duì)于每一IF語句,存在一個(gè)計(jì)算過程行,以及或者轉(zhuǎn)
移到下一個(gè)計(jì)算過程或者進(jìn)行下一個(gè)計(jì)算,帶來資源浪費(fèi)。因此,對(duì)于算法 通過IF語句所經(jīng)過的處理的每一路徑來說,多達(dá)一半的處理器功能(和寶 貴的晶片空間)沒有被使用。第三,需要開發(fā)獨(dú)特代碼,以實(shí)現(xiàn)算法到每一 獨(dú)特的數(shù)據(jù)集的每一置換。
00 38此解決方案包括用于多個(gè)單獨(dú)的計(jì)算或者數(shù)據(jù)移動(dòng)的所有計(jì)算 過程的算法的實(shí)現(xiàn),其中,所有數(shù)據(jù)可能經(jīng)歷算法中的每一步,因?yàn)樗械?多個(gè)數(shù)據(jù)被并行處理。隨后使用選擇代碼來確定算法的哪一部分用于哪一數(shù) 據(jù)。因此,同一代碼(算法)通常被應(yīng)用于所有數(shù)據(jù),并且僅有選擇代碼需 要為每一數(shù)據(jù)被設(shè)計(jì),以確定每一計(jì)算如何進(jìn)行。此處的優(yōu)點(diǎn)在于如果處理 多個(gè)數(shù)據(jù),其中多個(gè)處理步驟相同,則應(yīng)用一個(gè)算法代碼到共同的計(jì)算和非 共用的計(jì)算簡化了該系統(tǒng)。為了應(yīng)用此技術(shù)到類似算法,可以通過觀察指令 本身,或者通過以更細(xì)的粒度表示指令并且隨后尋找相似性,來發(fā)現(xiàn)相似性
0039圖IU和IIB示出上述概念的一個(gè)例子。這個(gè)例子涉及用于產(chǎn) 生像素之間中間值的雙線性濾波器,其中執(zhí)行某些數(shù)字計(jì)算(盡管此技術(shù)可 以用于任一數(shù)據(jù)算法)。這些算法需要使用數(shù)值加和數(shù)據(jù)移位步驟的同一基 本集合計(jì)算各個(gè)值,但是根據(jù)所做計(jì)算,這些步驟的順序和編號(hào)不同。所以, 圖1U中,用于1/2和3/4雙三次方公式的第一次計(jì)算為編號(hào)53,其要求7 個(gè)計(jì)算步驟完成。第二次計(jì)算過程為編號(hào)18,需要6個(gè)計(jì)算步驟,其中,四 個(gè)步驟與前一計(jì)算過程中發(fā)生的四個(gè)步驟相同并且以同樣的順序。第 一公式 的最后兩個(gè)計(jì)算過程再次具有與前兩個(gè)計(jì)算重疊的計(jì)算步驟。對(duì)于1/2雙三 次方公式的其它計(jì)算,以及圖11B的三個(gè)雙線性公式都涉及同一計(jì)算步驟的 不同組合,并且所有都具有四個(gè)計(jì)算過程來完成。
O040對(duì)于每一公式,所有四個(gè)計(jì)算過程可以使用具有四個(gè)處理單元 32的并行處理器30結(jié)合和算法每一步驟相關(guān)的選擇代碼來執(zhí)行,每一個(gè)處 理單元具有圖12所示的自己的存儲(chǔ)器34。存在和每一步驟相關(guān)的選擇代碼 指示四個(gè)變量中的哪一個(gè)由此步驟處理。例如,存在圖1U和11B的計(jì)算中 示意的九個(gè)算法步驟。對(duì)于圖11A的第一公式,第一步驟僅應(yīng)用到第三和第 四變量,其通過和此步驟相關(guān)的"0011"選擇代碼指示(其中如果用于此步 驟的所述代碼和變量為'T,,則此步驟應(yīng)用到此變量,若為"0",則不應(yīng)用)。 因此,"0011"的選擇代碼指示該步驟僅用于第三和第四變量,不用于第一 和第二變量。第二步驟由"0100"的選擇代碼指示,其僅應(yīng)用于第二變量。同樣的方法用于使用所示選擇代碼的所有公式的所有步驟和變量。
0041使用選擇代碼的優(yōu)點(diǎn)在于不用產(chǎn)生二十個(gè)算法代碼來進(jìn)行二十 個(gè)圖IIA和11B中說明的各個(gè)計(jì)算(或者起碼不用產(chǎn)生至少八個(gè)不同的算法 代碼來進(jìn)行八個(gè)獨(dú)特的數(shù)值計(jì)算),并且不用把這些算法代碼的每一個(gè)載入 四個(gè)處理單元的每一個(gè)中,僅需要產(chǎn)生和加載單個(gè)算法代碼(或者被加載在 進(jìn)分布式存儲(chǔ)器配置的各個(gè)處理單元中,或者加載進(jìn)所有處理單元共享的單 個(gè)存儲(chǔ)器位置)。僅需要產(chǎn)生和加載選擇代碼到各個(gè)處理單元,以實(shí)現(xiàn)期望 的計(jì)算,這變得極其簡單。由于算法代碼僅選擇性地和并行地應(yīng)用所有變量 一次,因此增加了并4亍處理速度和效率。
0042盡管圖IIA和IIB示出對(duì)于數(shù)據(jù)計(jì)算應(yīng)用的選擇代碼的使用, 用于選擇性指示哪一算法步驟應(yīng)用到數(shù)據(jù)的選擇代碼同樣可用于移動(dòng)凝:據(jù) 的算法。
0043為了說明的目的,前述描述使用具體術(shù)語來提供對(duì)本發(fā)明的一 個(gè)全面的理解。但是,對(duì)于本領(lǐng)域內(nèi)普通技術(shù)人員來說,這些具體細(xì)節(jié)并不 是用于實(shí)現(xiàn)本發(fā)明所需要的。因此,本發(fā)明的具體實(shí)施例的前述描述用于說 明和描述的目的。其意圖并不是窮盡本發(fā)明或者將本發(fā)明限制到所公開的精 確形式。根據(jù)上述教導(dǎo)可以有多種修改和變化。例如,本發(fā)明可以用于處理 任一圖像格式的任一部分。也就是,本發(fā)明可以并行處理任一格式的圖像, 無論其是1080i HD圖像、CIF圖像、SIF圖像,還是任一其它圖像。這些圖 像也可以被分為任一細(xì)分形式,無論是圖像的宏塊還是任一其它形式。任一 圖像數(shù)據(jù)也可以被同樣處理,無論其是亮度信息、灰階信息、色度信息,還 是任一其它信息。所選和說明的實(shí)施例是為了最好的解釋本發(fā)明的原理與其 實(shí)際應(yīng)用,因此使得本領(lǐng)域內(nèi)技術(shù)人員可以最好的使用本發(fā)明和具有不同修 改的各個(gè)實(shí)施例以適用于所構(gòu)思的具體應(yīng)用。
0044本發(fā)明可以以方法的形式和用于實(shí)現(xiàn)此方法的裝置的形式被實(shí) 施。本發(fā)明也可以以實(shí)施于有利介質(zhì)中的程序代碼的形式被實(shí)施,諸如軟盤、 CD-ROM、硬盤驅(qū)動(dòng)器、固件或者任一機(jī)器可讀存儲(chǔ)介質(zhì),其中,當(dāng)程序代碼 被載入諸如計(jì)算機(jī)的機(jī)器并由其執(zhí)行時(shí),機(jī)器成為實(shí)施本發(fā)明的裝置。本發(fā) 明也可以以程序代碼的形式被實(shí)施,例如,無論是存儲(chǔ)在存儲(chǔ)介質(zhì)中、載入 和/或由機(jī)器執(zhí)行、或者在一些傳輸介質(zhì)(諸如通過電線或者電纜、通過光 纖或者經(jīng)電;茲輻射)上傳輸,其中,當(dāng)編程代碼被載入并且由諸如計(jì)算機(jī)的 機(jī)器執(zhí)行時(shí),機(jī)器成為實(shí)現(xiàn)本發(fā)明的裝置。當(dāng)在通用處理器上實(shí)現(xiàn)時(shí),編程 代碼片段與處理器相結(jié)合來提供獨(dú)特的設(shè)備,其操作類似于專用邏輯電路。
權(quán)利要求
1.在具有計(jì)算單元的并行處理陣列中,所述計(jì)算單元被配置為處理圖像的數(shù)據(jù)的塊,一種方法包括產(chǎn)生圖像數(shù)據(jù)的塊,其中,圖像數(shù)據(jù)的所述塊的每一個(gè)被分為多個(gè)子塊,并且每一子塊的第一數(shù)據(jù)點(diǎn)標(biāo)志所述子塊的起始位置;并且對(duì)于圖像數(shù)據(jù)的所述塊的每一個(gè),產(chǎn)生類型數(shù)據(jù)的塊,其中,類型數(shù)據(jù)的所述塊的每一個(gè)包括圖像數(shù)據(jù)的多個(gè)塊中的所有子塊的第一數(shù)據(jù)點(diǎn)。
2、 權(quán)利要求l的方法,還包括使用并行處理計(jì)算單元的陣列處理圖像數(shù)據(jù)的所迷塊,所述計(jì)算單元 被配置為使用類型數(shù)據(jù)的塊識(shí)別圖像數(shù)據(jù)的塊中的所述子塊的位置和尺 寸。
3、 權(quán)利要求l的方法,其中,圖像數(shù)據(jù)的所述塊包括圖像數(shù)據(jù)的行, 并且其中類型數(shù)據(jù)的所述塊包括類型數(shù)據(jù)的行,并且類型數(shù)據(jù)的每一行對(duì) 應(yīng)于圖像數(shù)據(jù)的多個(gè)塊的圖像數(shù)據(jù)行中的 一行,其包括所述子塊的第 一數(shù) 據(jù)點(diǎn)的任一個(gè)。
4、 權(quán)利要求1的方法,其中,圖像數(shù)據(jù)的所述塊包括所述圖像數(shù)據(jù) 的行;僅有圖像數(shù)據(jù)的所述塊中的所述圖像數(shù)據(jù)的行的預(yù)設(shè)子集可以包括 所述子塊的所述第一數(shù)據(jù)點(diǎn)對(duì)的任一個(gè);并且類型數(shù)據(jù)的所述塊包括類型數(shù)據(jù)的行,每一數(shù)據(jù)類型行對(duì)應(yīng)于圖像數(shù) 據(jù)的塊中的所述圖像數(shù)據(jù)的行的預(yù)設(shè)子集中的 一 個(gè)。
5、 權(quán)利要求4的方法,其中,所述圖像數(shù)據(jù)的塊中的所述圖像數(shù)據(jù) 的預(yù)設(shè)行和類型數(shù)據(jù)的所述塊中的數(shù)據(jù)的行具有相同的長度。
6、 權(quán)利要求4的方法,其中,圖像數(shù)據(jù)的所述塊每一個(gè)包括所述圖 像數(shù)據(jù)的16行和16列;所述子塊的每一個(gè)包括所述圖像數(shù)據(jù)的2、 4或8行以及2、 4或8歹'J;并且類型數(shù)據(jù)的所述塊每一個(gè)包括所述類型數(shù)據(jù)的4行和16列。
7、 權(quán)利要求6的方法,其中,除了所述子塊的所述第一數(shù)據(jù)點(diǎn)外, 所述類型數(shù)據(jù)還包括補(bǔ)充數(shù)據(jù)。
8、 權(quán)利要求7的方法,其中所述補(bǔ)充數(shù)據(jù)包括指示所述圖像數(shù)據(jù)是 否局部可預(yù)測、使用先前運(yùn)動(dòng)矢量預(yù)測或雙向可預(yù)測的數(shù)據(jù)。
9、 權(quán)利要求3的方法,其中,對(duì)于圖像數(shù)據(jù)的塊的每一個(gè),還包括 使用類型數(shù)據(jù)的塊識(shí)別圖像數(shù)據(jù)的所述塊中的所述子塊的位置和尺寸;并且隨后使用并行處理計(jì)算單元的陣列,每次一行地處理所述圖像數(shù)據(jù)的所述行。
10、 一種其上具有計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)可讀介質(zhì),所述計(jì)算機(jī) 可執(zhí)行指令用于一種在具有計(jì)算單元的并行處理陣列中的處理方法,所述 計(jì)算單元被配置為處理圖像的數(shù)據(jù)的塊,所述方法包括產(chǎn)生圖像數(shù)據(jù)的塊,其中,圖像數(shù)據(jù)的所述塊的每一個(gè)被分為多個(gè)子 塊,并且每一子塊的第一數(shù)據(jù)點(diǎn)標(biāo)志所述子塊的起始位置;并且對(duì)于圖像數(shù)據(jù)的所述塊的每一個(gè),產(chǎn)生類型數(shù)據(jù)的塊,其中,類型數(shù) 據(jù)的所述塊的每一個(gè)包括圖像數(shù)據(jù)的多個(gè)塊中的所有子塊的第 一數(shù)據(jù)點(diǎn)。
11、 權(quán)利要求10的計(jì)算機(jī)可讀介質(zhì),其中所述方法還包括 使用并行處理計(jì)算單元的陣列處理圖像數(shù)據(jù)的所述塊,所述計(jì)算單元被配置為使用類型數(shù)據(jù)的塊識(shí)別圖像數(shù)據(jù)的塊中的所述子塊的位置和尺 寸。
12、 權(quán)利要求10的計(jì)算機(jī)可讀介質(zhì),其中,圖像數(shù)據(jù)的所述塊包括 圖像數(shù)據(jù)的行,并且其中類型數(shù)據(jù)的所述塊包括類型數(shù)據(jù)的行,并且類型 數(shù)據(jù)的每一行對(duì)應(yīng)于圖像數(shù)據(jù)的多個(gè)塊的圖像數(shù)據(jù)中的一行,其包括所述 子塊的第 一 數(shù)據(jù)點(diǎn)的任 一 個(gè)。
13、 權(quán)利要求10的計(jì)算機(jī)可讀介質(zhì),其中,圖像數(shù)據(jù)的所述塊包括 所述圖像數(shù)據(jù)的行;僅有圖像數(shù)據(jù)的所述塊中的所述圖像凄史據(jù)的行的預(yù)設(shè)子集可以包括 所述子塊的所述第一數(shù)據(jù)點(diǎn)的任一個(gè);并且類型數(shù)據(jù)的所述塊包括類型數(shù)據(jù)的行,每一數(shù)據(jù)類型行對(duì)應(yīng)于圖像數(shù) 據(jù)的塊中的所述圖像數(shù)據(jù)的行的預(yù)設(shè)子集中的 一 個(gè)。
14、 權(quán)利要求13的計(jì)算機(jī)可讀介質(zhì),其中,所述圖像數(shù)據(jù)的塊中的 所述圖像數(shù)據(jù)的預(yù)設(shè)行和類型數(shù)據(jù)的所述塊中的數(shù)據(jù)的行具有相同的長 度。
15、 權(quán)利要求13的計(jì)算機(jī)可讀介質(zhì),其中,圖像數(shù)據(jù)的所述塊每一 個(gè)包括所述圖像數(shù)據(jù)的16行和16列; 所述子塊的每一個(gè)包括所述圖像數(shù)據(jù)的2、 4或8行以及2、 4或8歹ij;并且類型數(shù)據(jù)的所述塊每一個(gè)包括所述類型數(shù)據(jù)的4行和16列。
16、 權(quán)利要求15的計(jì)算機(jī)可讀介質(zhì),其中,除了所述子塊的所述第 一數(shù)據(jù)點(diǎn)外,所述類型數(shù)據(jù)還包括補(bǔ)充數(shù)據(jù)。
17、 權(quán)利要求16的計(jì)算機(jī)可讀介質(zhì),其中所述補(bǔ)充數(shù)據(jù)包括指示所 述圖像數(shù)據(jù)是否局部可預(yù)測、使用先前運(yùn)動(dòng)矢量預(yù)測或雙向可預(yù)測的數(shù)據(jù)。
18、 權(quán)利要求12的計(jì)算機(jī)可讀介質(zhì),其中,對(duì)于圖像數(shù)據(jù)的塊的每一 個(gè),所述方法還包括使用類型數(shù)據(jù)的塊識(shí)別圖像數(shù)據(jù)的所述塊中的所述子塊的位置和尺寸; 并且隨后使用并行處理計(jì)算單元的陣列,每次一行地處理所述圖像數(shù)據(jù)的所述行。
全文摘要
一種用于數(shù)據(jù)子塊的并行處理的有效的方法和設(shè)備。并行處理陣列具有計(jì)算單元,所述計(jì)算單元被配置為以并行方式處理圖像的數(shù)據(jù)的塊,產(chǎn)生圖像數(shù)據(jù)的塊,其中,圖像數(shù)據(jù)的所述塊的每一個(gè)被分為多個(gè)子塊,并且每一子塊的第一數(shù)據(jù)點(diǎn)標(biāo)志所述子塊的起始位置。對(duì)于圖像數(shù)據(jù)的所述塊的每一個(gè),產(chǎn)生類型數(shù)據(jù)的塊,類型數(shù)據(jù)的所述塊的每一個(gè)包括圖像數(shù)據(jù)的多個(gè)塊中的所有子塊的第一數(shù)據(jù)點(diǎn),使得在不需要首先處理圖像數(shù)據(jù)的塊的前提下可以確定圖像數(shù)據(jù)的每一塊中的所有子塊的數(shù)量和位置。
文檔編號(hào)G06K9/46GK101371264SQ200780002253
公開日2009年2月18日 申請(qǐng)日期2007年1月10日 優(yōu)先權(quán)日2006年1月10日
發(fā)明者B·米圖, L·比沃拉斯基 申請(qǐng)人:光明測量公司