專利名稱:用于2維數(shù)組處理的寄存器的制作方法
背景領(lǐng)域本發(fā)明一般涉及計(jì)算機(jī)系統(tǒng),具體說,涉及處理器結(jié)構(gòu)。
一些處理器設(shè)計(jì)為為多媒體操作提供它們的指令集結(jié)構(gòu)(ISA)的擴(kuò)展。例如,由PentiumII,PentiumIII,和CeleronTM處理器支持的MMXTM指令可從加里福尼亞州的Santa Clara市的因特爾公司購(gòu)買,它可以實(shí)現(xiàn)對(duì)多媒體應(yīng)用有用的各種功能,諸如數(shù)字信號(hào)處理,和音頻視頻處理。這些指令支持對(duì)多媒體和通信數(shù)據(jù)類型的“單指令多數(shù)據(jù)”(SIMD)操作。雖然這些指令的使用提供對(duì)預(yù)存在指令的組合的改進(jìn)來執(zhí)行一個(gè)給定的功能,以及個(gè)別MMXTM指令對(duì)某些類型的處理是有效的,但是對(duì)更快的多媒體處理仍然存在各種障礙。例如,基于塊的圖像的許多實(shí)現(xiàn)和視頻處理算法(諸如聯(lián)合圖像專家組(JPEG)和運(yùn)動(dòng)圖像專家組(MPEG)模式)導(dǎo)致存儲(chǔ)在一組可作為為MMXTM指令的操作數(shù)訪問的寄存器中存儲(chǔ)的數(shù)據(jù)在數(shù)組數(shù)學(xué)運(yùn)算期間被轉(zhuǎn)置。然而,寄存器中間的數(shù)據(jù)的轉(zhuǎn)置擔(dān)負(fù)相當(dāng)大的開銷,從而減少了對(duì)多媒體處理的總的處理器的通過量。因此,為避免或減小這些延遲的任何技術(shù)都是處理器技術(shù)中的有價(jià)值的進(jìn)步。
發(fā)明概述本發(fā)明的一個(gè)實(shí)施例是一個(gè)處理器,它具有存儲(chǔ)數(shù)據(jù)數(shù)組的第一組寄存器,和連接到第一組的第二組寄存器,第二組寄存器存儲(chǔ)數(shù)據(jù)數(shù)組的轉(zhuǎn)置拷貝。
本發(fā)明的另一個(gè)實(shí)施例是一種由處理器為數(shù)組處理使用兩組寄存器的方法。該方法包括在第一組寄存器中存儲(chǔ)數(shù)據(jù)數(shù)組,第一組寄存器具有第一數(shù)目的寄存器,每一寄存器包括第一數(shù)目的存儲(chǔ)單元,每一存儲(chǔ)單元存儲(chǔ)數(shù)組的一個(gè)元素,和數(shù)據(jù)數(shù)組轉(zhuǎn)置到第二組寄存器,該第二組寄存器具有第二數(shù)目的寄存器,每一寄存器包括第二數(shù)目的存儲(chǔ)單元。該方法還包括引用第一組寄存器中的一個(gè)來操作數(shù)據(jù)數(shù)組的一行,和引用第二組寄存器中的一個(gè)來操作數(shù)據(jù)數(shù)組的一列。
從下面對(duì)本發(fā)明的詳細(xì)說明可以顯見本發(fā)明的特征和優(yōu)點(diǎn),其中,
圖1是一組根據(jù)現(xiàn)有技術(shù)的MMXTM寄存器的示意圖;圖2是存儲(chǔ)圖像數(shù)據(jù)的8象素乘8象素塊的該組MMXTM寄存器的示意圖;圖3是存儲(chǔ)圖像數(shù)據(jù)轉(zhuǎn)置的8象素乘8象素塊的該組MMXTM寄存器的示意圖;圖4是根據(jù)本發(fā)明的一個(gè)實(shí)施例連接到MMXTM寄存器組的一個(gè)虛擬MMXTM寄存器組的示意圖;圖5是存儲(chǔ)圖像數(shù)據(jù)轉(zhuǎn)置的8象素乘8象素塊的虛擬MMXTM寄存器組的示意圖;圖6是一個(gè)系統(tǒng)的示意圖,該系統(tǒng)具有一個(gè)處理器,它具有按照本發(fā)明的一個(gè)MMXTM寄存器組和一個(gè)虛擬MMXTM寄存器組的示意圖。
發(fā)明詳述本發(fā)明的一個(gè)實(shí)施例包括一種為擴(kuò)展MMXTM寄存器為用于2維(2-D)數(shù)組運(yùn)算更加有效的方法和裝置。
說明書中對(duì)本發(fā)明的“一個(gè)實(shí)施例”的參考意味著結(jié)合該實(shí)施例說明的一種特定的特征、結(jié)構(gòu)或特性至少被包含在本發(fā)明的一個(gè)實(shí)施例中。這樣,在本說明書中不同地方出現(xiàn)的短語“在一個(gè)實(shí)施例中”不一定所有都指同一個(gè)實(shí)施例。
當(dāng)執(zhí)行一個(gè)指令時(shí),一個(gè)處理器通常引用一個(gè)或多個(gè)寄存器操作數(shù)。對(duì)于MMXTM指令,寄存器操作數(shù)可以是稱為MMXTM寄存器的一組或多組特殊的寄存器。圖1是一組根據(jù)現(xiàn)有技術(shù)的MMXTM寄存器的示意圖。在圖1所示的寄存器組10中,有8個(gè)MMXTM寄存器,標(biāo)以mm012到mm714。在其它實(shí)施例中,寄存器的數(shù)目可以多于或少于8個(gè)。每一寄存器包括多個(gè)數(shù)據(jù)單元,從所示低單元16到高單元18排序。在一個(gè)實(shí)施例中,一個(gè)單元包括一個(gè)字節(jié)。在其它實(shí)施例中,一個(gè)單元可以包括一個(gè)字、一個(gè)雙字、或其它存儲(chǔ)單元。在至少一個(gè)已知系統(tǒng)中,每個(gè)MMXTM寄存器的單元數(shù)目(例如字節(jié))是8,雖然在其它系統(tǒng)中可以使用其它單元數(shù)目。為使用MMXTM寄存器有效實(shí)現(xiàn)SIMD多媒體處理,要被處理的數(shù)據(jù)應(yīng)該這樣排列,使得多個(gè)相關(guān)的數(shù)據(jù)項(xiàng)排列在單一MMXTM寄存器中。例如,假定一個(gè)8象素乘8象素的圖像數(shù)據(jù)塊在MMXTM寄存器中如圖2所示排列,每一象素值P(i,j)表示一個(gè)單元,總寄存器組表示一個(gè)數(shù)組。8象素乘8象素塊可以是一個(gè)較大圖像的一部分。在該例中,該圖像數(shù)據(jù)塊的第一行存儲(chǔ)在第一MMXTM寄存器mm0 12中,第一行的第一列存儲(chǔ)在mm0的低單元中,第一行的最后一列存儲(chǔ)在mm0的高單元中,圖像數(shù)據(jù)的第二行存儲(chǔ)在第二MMXTM寄存器mm1 20中,該第二行的第一列存儲(chǔ)在mm1的低單元中,第二行的最后一列存儲(chǔ)在mm1的高單元中,等等。
一旦數(shù)據(jù)如所示存儲(chǔ)在MMXTM寄存器中,則處理器可以執(zhí)行指令,每次一行有效操作該8×8數(shù)組。這一類型處理通常例如用于基于塊的圖像應(yīng)用和其它應(yīng)用中。例如,行0的所有數(shù)據(jù)可以使用單一MMXTM指令加到行3的數(shù)據(jù)上,如下所示。
PADDB MM0,MM3;把行0加到行3上并把結(jié)果存儲(chǔ)到行0中。
然而,為一次一列操作8×8數(shù)組會(huì)出現(xiàn)問題,因?yàn)槊恳涣械臄?shù)據(jù)分布在8個(gè)MMXTM寄存器中間。例如,第一列的數(shù)據(jù)分別分布在mm0 12到mm7 14的低單元中間,最后一列數(shù)據(jù)分布在mm0到mm7的高單元中間。為繼續(xù)增加使用MMXTMSIMD處理的好處,必須如圖3所示轉(zhuǎn)置8×8數(shù)組。數(shù)組轉(zhuǎn)置在數(shù)學(xué)中公知。在轉(zhuǎn)置后,第一MMXTM寄存器mm012存儲(chǔ)數(shù)據(jù)原來的第一列,原來第一列的第一行存儲(chǔ)在低單元16中,原來第一列的最后一列存儲(chǔ)在高單元18中,如圖所示。相似地,其它MMXTM寄存器如所示存儲(chǔ)8×8數(shù)組的列。
雖然8×8數(shù)組的轉(zhuǎn)置可以使用公知的打包和解包指令執(zhí)行,但是這一處理效率很低并且引起相當(dāng)高的處理開銷。一般,對(duì)于一個(gè)8×8數(shù)組的轉(zhuǎn)置處理通過執(zhí)行4×4數(shù)組的轉(zhuǎn)置實(shí)現(xiàn),每一轉(zhuǎn)置對(duì)PentiumIII處理器需要至少12個(gè)處理周期。這樣,僅為轉(zhuǎn)置該數(shù)據(jù)至少使用64個(gè)周期,以便可以使用一個(gè)MMXTM指令來操作一個(gè)給定列的8個(gè)元素。
本發(fā)明的實(shí)施例通過在處理器中提供另一組寄存器幫助多媒體處理通過一系列打包和解包指令克服了轉(zhuǎn)置MMXTM寄存器中數(shù)據(jù)的需要。在本發(fā)明的實(shí)施例中,在處理器結(jié)構(gòu)中設(shè)計(jì)一個(gè)等價(jià)的“鏡像”MMXTM寄存器組。該寄存器組可以叫作虛擬MMXTM寄存器組,或VMX組。圖4是根據(jù)本發(fā)明的一個(gè)實(shí)施例連接到MMXTM寄存器的虛擬MMXTM寄存器組的示意圖。在一個(gè)實(shí)施例中,在MMXTM寄存器組10中的MMXTM寄存器的數(shù)目和在VMX寄存器組22中提供的VMX寄存器的數(shù)目相同。另外,在一個(gè)實(shí)施例中,VMX寄存器的數(shù)目大于或等于在每一寄存器中的單元數(shù)目(取決于實(shí)現(xiàn),單元是字節(jié),字,雙字,或其它存儲(chǔ)單元)。VMX寄存器組22存儲(chǔ)來自MMXTM寄存器組中的轉(zhuǎn)置的數(shù)組數(shù)據(jù)并當(dāng)MMXTM寄存器組中的任何寄存器的任何單元被更新時(shí)通過寄存器更新邏輯23可以自動(dòng)地更新。因此,MMXTM寄存器組10的一行的加載自動(dòng)導(dǎo)致VMX寄存器組22的一列加載。例如,來自第一MMXTM寄存器mm0 12的數(shù)據(jù)可以自動(dòng)地存儲(chǔ)在VMX寄存器VM0到VM7的低單元中,來自第二MMXTM寄存器mm1 20的數(shù)據(jù)可以自動(dòng)地存儲(chǔ)在VMX寄存器的次最低單元中,等等。
回過來看圖2,如果MMXTM寄存器用一個(gè)用圖示P0,0到P7,7指示的8×8數(shù)組加載的話,則VMX寄存器可以由寄存器更新邏輯用轉(zhuǎn)置的數(shù)組自動(dòng)加載,如圖5所示。為操作該數(shù)組的行元素,一個(gè)程序可以簡(jiǎn)單地引用一個(gè)或多個(gè)MMXTM寄存器nm0 12到nm7 14。然而,為操作該數(shù)組的列元素,一個(gè)程序可以代之以引用VMX寄存器vm0 24到vm7 26。因?yàn)镸MXTM寄存器在處理器硬件中用VMX寄存器鏡像,因此沒有一致性問題。所有MMXTM指令都可以用任何一個(gè)寄存器組通過使用對(duì)所需要的適合的寄存器的引用來操作。不需對(duì)處理器的指令集進(jìn)行改變,只有操作數(shù)引用可能在程序中改變。
本發(fā)明的實(shí)施例對(duì)現(xiàn)有處理器結(jié)構(gòu)的一個(gè)優(yōu)點(diǎn)是本發(fā)明為數(shù)組操作提供更大的平行性。這通過執(zhí)行多個(gè)打包和解包指令避免了為列操作進(jìn)行的費(fèi)用大的轉(zhuǎn)置而實(shí)現(xiàn)。
怎樣使用本發(fā)明的一個(gè)例子是在許多視頻處理方案中為處理8象素乘8象素塊使用的離散余弦變換(DCT)。當(dāng)前,為執(zhí)行8×8 DCT時(shí),處理包括首先執(zhí)行一個(gè)1×8的列變換,轉(zhuǎn)置8×8數(shù)組,執(zhí)行另一個(gè)1×8列變換,然后再次轉(zhuǎn)置該結(jié)果以得到DCT系數(shù)。當(dāng)前在Pentium類處理器上運(yùn)行的最優(yōu)化的DCT需要大約300個(gè)周期的處理。在這一數(shù)量中,大約100個(gè)周期用于執(zhí)行為8×8數(shù)組的轉(zhuǎn)置操作。這樣,本發(fā)明的實(shí)現(xiàn)為DCT處理產(chǎn)生大約30%的改善。對(duì)逆DCT可以實(shí)現(xiàn)相似的性能增益。雖然這里討論的是DCT的例子,但是本發(fā)明的實(shí)施例可以對(duì)任何數(shù)組操作都有用,包括在各種圖像和視頻壓縮算法中使用的那些。
雖然上面在2維(2-D)數(shù)組的意義上討論本發(fā)明,但是該概念可以適用于3維或更多維。例如,可以在處理器的設(shè)計(jì)中包括一個(gè)第三寄存器組來存儲(chǔ)數(shù)組數(shù)據(jù)的其它轉(zhuǎn)置。
圖6是包括具有按照本發(fā)明的實(shí)施例的MMXTM寄存器組和虛擬MMXTM寄存器組的處理器的系統(tǒng)的示意圖。系統(tǒng)50可以包括連接到存儲(chǔ)器54的處理器52。處理器52包括在該技術(shù)中公知的各種部件,為清楚起見其中許多在圖6中省略。指令存儲(chǔ)器56存儲(chǔ)可以引用一個(gè)或者多個(gè)MMXTM寄存器10或一個(gè)或多個(gè)VMX寄存器22的指令。當(dāng)MMXTM寄存器改變時(shí)寄存器更新邏輯23協(xié)調(diào)自動(dòng)更新VMX寄存器22。多路轉(zhuǎn)接器(MUX)58從MMXTM寄存器或VMX寄存器中的一個(gè)為給算術(shù)邏輯單元(ALU)60的輸入選擇數(shù)據(jù)。ALU產(chǎn)生為數(shù)據(jù)存儲(chǔ)器52的數(shù)據(jù)。
本發(fā)明允許以更直覺的方式操作MMXTM寄存器。通過增加鏡像寄存器組,可以簡(jiǎn)化任何基于塊的算法的實(shí)現(xiàn),并且它們的性能增加。可以從本發(fā)明得到好處的一些應(yīng)用例子包括用于視頻壓縮算法的離散余弦變換(DCT),3維(3-D)圖形算法中的數(shù)組變換,及其它。
雖然本發(fā)明參考圖示實(shí)施例說明,但是該說明并不打算被解釋為限制的意義。對(duì)熟悉本發(fā)明所屬技術(shù)領(lǐng)域的人明顯的對(duì)圖示實(shí)施例以及本發(fā)明的其它實(shí)施例的各種修改都被視為在本發(fā)明的精神和范圍之內(nèi)。
權(quán)利要求
1.一種處理器,包括第一組寄存器,該第一組寄存器存儲(chǔ)數(shù)據(jù)數(shù)組;和連接到第一組寄存器的第二組寄存器,第二組寄存器存儲(chǔ)數(shù)據(jù)數(shù)組的轉(zhuǎn)置拷貝。
2.權(quán)利要求1所述處理器,另外包括當(dāng)在第一組寄存器中的數(shù)組的任何部分被修改時(shí)自動(dòng)更新在第二組寄存器中的數(shù)據(jù)數(shù)組的轉(zhuǎn)置拷貝的邏輯。
3.權(quán)利要求2所述處理器,其中,在第一組寄存器中的數(shù)組的行的修改自動(dòng)導(dǎo)致在第二組寄存器中的數(shù)組的轉(zhuǎn)置拷貝的列的相應(yīng)修改。
4.權(quán)利要求1所述處理器,其中,第一組寄存器包括第一數(shù)目的寄存器,每一寄存器包括第一數(shù)目的存儲(chǔ)單元,第二組寄存器包括第二數(shù)目的寄存器,每一寄存器包括第二數(shù)目的存儲(chǔ)單元,并且第二數(shù)目的存儲(chǔ)單元大于或等于第一數(shù)目的寄存器。
5.權(quán)利要求4所述處理器,其中,第一數(shù)目的寄存器等于第二數(shù)目的寄存器。
6.權(quán)利要求5所述處理器,其中,第一組寄存器包括MMXTM寄存器,第一數(shù)目的寄存器是8,數(shù)據(jù)數(shù)組包含圖像數(shù)據(jù)。
7.權(quán)利要求1所述處理器,其中,處理器執(zhí)行引用第一組寄存器中的一個(gè)寄存器的指令來操作數(shù)據(jù)數(shù)組的一行和執(zhí)行引用第二組寄存器中的一個(gè)寄存器的指令來操作數(shù)據(jù)數(shù)組的一列。
8.一種由處理器使用為數(shù)組處理的兩組寄存器的方法,包括存儲(chǔ)數(shù)據(jù)數(shù)組到第一組寄存器,該第一組寄存器包括第一數(shù)目的寄存器,每一寄存器包括第一數(shù)目的存儲(chǔ)單元,每一存儲(chǔ)單元存儲(chǔ)數(shù)組的一個(gè)元素;數(shù)據(jù)數(shù)組轉(zhuǎn)置到第二組寄存器,該第二組寄存器包括第二數(shù)目的寄存器,每一寄存器包括第二數(shù)目的存儲(chǔ)單元;引用第一組寄存器中的一個(gè)寄存器來操作數(shù)據(jù)數(shù)組的一行;引用第二組寄存器中的一個(gè)寄存器來操作數(shù)據(jù)數(shù)組的一列。
9.權(quán)利要求8所述方法,另外包括當(dāng)在第一組寄存器中的數(shù)組的任何部分被修改時(shí)自動(dòng)更新在第二組寄存器中轉(zhuǎn)置的數(shù)據(jù)數(shù)組。
10.權(quán)利要求9所述方法,另外包括修改在第一組寄存器中的數(shù)組的行和自動(dòng)修改在第二組寄存器中的轉(zhuǎn)置數(shù)組的相應(yīng)列。
11.權(quán)利要求8所述方法,另外包括對(duì)存儲(chǔ)在第二組寄存器中的一個(gè)寄存器中的列數(shù)據(jù)執(zhí)行變換操作。
12.權(quán)利要求11所述方法,其中,執(zhí)行變換操作包括對(duì)存儲(chǔ)在第二組寄存器中的一個(gè)寄存器中的列數(shù)據(jù)執(zhí)行離散余弦變換操作。
13.權(quán)利要求8所述方法,其中,第二數(shù)目的存儲(chǔ)單元大于或等于第一數(shù)目的寄存器。
14.權(quán)利要求8所述方法,其中,第一數(shù)目的寄存器等于第二數(shù)目的寄存器。
15.權(quán)利要求8所述方法,其中,第一組寄存器包括MMXTM寄存器,第一數(shù)目的寄存器是8,數(shù)據(jù)數(shù)組包含圖像數(shù)據(jù)。
16.一種系統(tǒng),包括存儲(chǔ)器;連接到存儲(chǔ)器的處理器,該處理器包括第一組寄存器,該第一組寄存器存儲(chǔ)數(shù)據(jù)數(shù)組;連接到第一組寄存器的第二組寄存器,該第二組寄存器存儲(chǔ)數(shù)據(jù)數(shù)組的轉(zhuǎn)置拷貝。
17.權(quán)利要求16所述系統(tǒng),其中處理器另外包括當(dāng)在第一組寄存器中的數(shù)組的任何部分被修改時(shí)自動(dòng)更新在第二組寄存器中的數(shù)據(jù)數(shù)組的轉(zhuǎn)置拷貝的邏輯。
18.權(quán)利要求17所述系統(tǒng),其中,在第一組寄存器中的數(shù)組的行的修改自動(dòng)導(dǎo)致在第二組寄存器中的數(shù)組的轉(zhuǎn)置拷貝的列的相應(yīng)修改。
19.權(quán)利要求16所述系統(tǒng),其中,第一組寄存器包括第一數(shù)目的寄存器,每一寄存器包括第一數(shù)目的存儲(chǔ)單元,第二組寄存器包括第二數(shù)目的寄存器,每一寄存器包括第二數(shù)目的存儲(chǔ)單元,并且第二數(shù)目的存儲(chǔ)單元大于或等于第一數(shù)目的寄存器。
20.權(quán)利要求19所述系統(tǒng),其中,第一數(shù)目的寄存器等于第二數(shù)目的寄存器。
21.權(quán)利要求20所述系統(tǒng),其中,第一組寄存器包括MMXTM寄存器,第一數(shù)目的寄存器是8,數(shù)據(jù)數(shù)組包含圖像數(shù)據(jù)。
22.權(quán)利要求16所述系統(tǒng),其中,處理器執(zhí)行引用第一組寄存器中的一個(gè)寄存器的指令來操作數(shù)據(jù)數(shù)組的一行和執(zhí)行引用第二組寄存器中的一個(gè)寄存器的指令來操作數(shù)據(jù)數(shù)組的一列。
23.一種由處理器使用為圖像數(shù)據(jù)數(shù)組的離散余弦變換(DCT)處理的兩組寄存器的方法,包括存儲(chǔ)數(shù)組到第一組寄存器,該第一組寄存器包括第一數(shù)目的寄存器,每一寄存器包括第一數(shù)目的存儲(chǔ)單元,每一存儲(chǔ)單元存儲(chǔ)數(shù)組的一個(gè)元素;數(shù)組轉(zhuǎn)置到第二組寄存器,該第二組寄存器包括第二數(shù)目的寄存器,每一寄存器包括第二數(shù)目的存儲(chǔ)單元;至少部分引用第二組寄存器中的一個(gè)寄存器執(zhí)行DCT處理來操作數(shù)組的一列。
24.權(quán)利要求23所述方法,另外包括當(dāng)在第一組寄存器中的數(shù)組的任何部分被修改時(shí)自動(dòng)更新在第二組寄存器中轉(zhuǎn)置的數(shù)據(jù)數(shù)組。
25.權(quán)利要求23所述方法,另外包括修改第一組寄存器中的數(shù)組的行和自動(dòng)修改第二組寄存器中的轉(zhuǎn)置數(shù)組的相應(yīng)列。
全文摘要
一個(gè)處理器具有至少兩組寄存器。第一組存儲(chǔ)數(shù)據(jù)數(shù)組,第二組存儲(chǔ)該數(shù)據(jù)數(shù)組的轉(zhuǎn)置拷貝。當(dāng)修改第一組的任何行的任何部分時(shí),也自動(dòng)修改在第二組中的轉(zhuǎn)置拷貝的列的相應(yīng)部分。由處理器使用為數(shù)組處理的兩組寄存器的方法包括存儲(chǔ)數(shù)據(jù)數(shù)組到第一組寄存器,第一組寄存器具有第一數(shù)目的寄存器,每一寄存器包括第一數(shù)目的存儲(chǔ)單元,每一存儲(chǔ)單元存儲(chǔ)數(shù)組的一個(gè)元素,和轉(zhuǎn)置該數(shù)據(jù)數(shù)組到第二組寄存器,第二組寄存器具有第二數(shù)目的寄存器,每一寄存器包括第二數(shù)目的存儲(chǔ)單元。該方法還包括引用第一組寄存器中的一個(gè)寄存器來操作數(shù)據(jù)數(shù)組的一行和引用第二組寄存器中的一個(gè)寄存器來操作數(shù)據(jù)數(shù)組的一列。
文檔編號(hào)G06F9/302GK1365463SQ00810883
公開日2002年8月21日 申請(qǐng)日期2000年6月26日 優(yōu)先權(quán)日1999年7月26日
發(fā)明者G·K·陳 申請(qǐng)人:英特爾公司