專(zhuān)利名稱(chēng)::可以對(duì)復(fù)合操作數(shù)進(jìn)行壓縮操作的微處理器的制作方法
背景技術(shù):
:本發(fā)明包括使用單個(gè)控制信號(hào)處理多個(gè)數(shù)據(jù)元素而執(zhí)行操作的一種裝置和方法。本發(fā)明允許對(duì)壓縮數(shù)據(jù)類(lèi)型執(zhí)行移動(dòng)、壓縮和拆開(kāi)的操作。當(dāng)今,大多數(shù)個(gè)人計(jì)算機(jī)系統(tǒng)的工作機(jī)制是使用一個(gè)指令產(chǎn)生一個(gè)結(jié)果。通過(guò)增加指令的執(zhí)行速度和處理器指令的復(fù)雜程度以及并行執(zhí)行多個(gè)指令來(lái)增加處理器性能,這種計(jì)算機(jī)稱(chēng)為復(fù)雜指令集計(jì)算機(jī)(CISC)。例如加里福尼亞州SantaClara的INTEL公司的INTEL80386TM微處理器就屬于CISC類(lèi)型的處理器。先前的計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)經(jīng)過(guò)優(yōu)化以利用CISC概念。這樣的系統(tǒng)通常具有32位寬的數(shù)據(jù)總線。然而,針對(duì)計(jì)算機(jī)支持的協(xié)作(CSC-電話會(huì)議與混合媒體數(shù)據(jù)操作集成)、2維/3維圖像、圖像處理、視頻壓縮/解壓、識(shí)別算法和音頻處理方面的應(yīng)用增加了對(duì)更高性能的需求。但是,執(zhí)行速度和指令復(fù)雜性的增加只是一種解決方案。這些應(yīng)用的一個(gè)共同的特征是它們常常操作大量的數(shù)據(jù),其中只有少數(shù)位是重要的。也就是說(shuō),是有關(guān)位用比數(shù)據(jù)總線大小少得多的位表示的數(shù)據(jù)。例如,處理器的許多操作是就8位和16位數(shù)據(jù)執(zhí)行的(例如視頻圖像中的像素彩色分量),但是具有寬得多的數(shù)據(jù)總線和寄存器。因此,具有32位數(shù)據(jù)總線和寄存器并且執(zhí)行這樣一種算法的處理器可能損失多達(dá)75%的數(shù)據(jù)處理、運(yùn)載和存儲(chǔ)能力,因?yàn)橹挥星?位數(shù)據(jù)是重要的。因此,希望有一個(gè)處理器,它通過(guò)更加有效地利用表示被操作數(shù)據(jù)需要的位數(shù)和處理器實(shí)際數(shù)據(jù)運(yùn)載和存儲(chǔ)容量之間的差,從而提高其性能。發(fā)明總結(jié)本文說(shuō)明一種改進(jìn)了數(shù)據(jù)處理操作的處理器。一種處理器,它包括存儲(chǔ)第一壓縮數(shù)據(jù)的第一寄存器,一個(gè)解碼器和一個(gè)功能單元。解碼器有一個(gè)控制信號(hào)輸入??刂菩盘?hào)輸入用于接收第一控制信號(hào)和第二控制信號(hào)。第一控制信號(hào)用于指示一個(gè)壓縮操作。第二控制信號(hào)用于指示一個(gè)拆開(kāi)操作。功能單元連接到解碼器和寄存器。功能單元使用第一壓縮數(shù)據(jù)執(zhí)行壓縮和拆開(kāi)操作。處理器還支持移動(dòng)操作。雖然在說(shuō)明書(shū)和附圖中包含了大量的細(xì)節(jié),但是,本發(fā)明由權(quán)利要求的范圍限定。只有在這些權(quán)利要求中提到的限制適用于本發(fā)明。附圖的簡(jiǎn)要說(shuō)明本發(fā)明用附圖中的、但不限于附圖中的實(shí)例說(shuō)明,相同的參考標(biāo)號(hào)表示相似的元件。圖1表示使用本發(fā)明的方法和裝置的計(jì)算機(jī)系統(tǒng)的一個(gè)實(shí)施例;圖2表示本發(fā)明的處理器的一個(gè)實(shí)施例;圖3是說(shuō)明由本發(fā)明的處理器使用的操作寄存器文件中的數(shù)據(jù)的總步驟的流程圖;圖4a說(shuō)明存儲(chǔ)器數(shù)據(jù)類(lèi)型;圖4b、圖4c和圖4d說(shuō)明整數(shù)數(shù)據(jù)的寄存器內(nèi)表示;圖5a表示壓縮數(shù)據(jù)類(lèi)型;圖5b,圖5c和圖5d說(shuō)明壓縮數(shù)據(jù)的寄存器內(nèi)表示;圖6a表示在該計(jì)算機(jī)系統(tǒng)中使用的指示使用壓縮數(shù)據(jù)的控制信號(hào)格式;圖6b表示第二控制信號(hào)格式,它可以用于該計(jì)算機(jī)系統(tǒng)指示使用壓縮數(shù)據(jù)或者整數(shù)數(shù)據(jù);圖7表示由處理器在對(duì)壓縮數(shù)據(jù)執(zhí)行壓縮操作時(shí)所遵循的方法的一個(gè)實(shí)施例;圖8a表示能夠?qū)嚎s字節(jié)數(shù)據(jù)實(shí)現(xiàn)壓縮操作的電路;圖8b表示能夠?qū)嚎s字?jǐn)?shù)據(jù)實(shí)現(xiàn)壓縮操作的電路;圖9表示由處理器在對(duì)壓縮數(shù)據(jù)執(zhí)行拆開(kāi)操作時(shí)所遵循的方法的一個(gè)實(shí)施例;圖10表示能夠?qū)嚎s數(shù)據(jù)實(shí)現(xiàn)拆開(kāi)操作的電路。優(yōu)選實(shí)施例的說(shuō)明本文敘述了對(duì)多個(gè)數(shù)據(jù)元素進(jìn)行移動(dòng)、壓縮和拆開(kāi)操作的處理器。在下面的說(shuō)明中,敘述了大量的諸如電路等這樣的細(xì)節(jié),以便提供對(duì)本發(fā)明徹底的了解。在另外的場(chǎng)合,為避免不必要地沖淡對(duì)本發(fā)明的理解,對(duì)熟知的結(jié)構(gòu)和技術(shù)未作詳細(xì)的敘述。定義為了對(duì)理解本發(fā)明的實(shí)施例的說(shuō)明提供基礎(chǔ),提供下面的定義。位X到位Y定義二進(jìn)制數(shù)的一個(gè)子字段。例如字節(jié)001110102(以2為基表示)的位6到位0表示子字段1110102,二進(jìn)制數(shù)后面的2表示以2為基。因此,10002等于810,而F16等于1510。Rx是一個(gè)寄存器。寄存器是能夠存儲(chǔ)和提供數(shù)據(jù)的任何設(shè)備。寄存器的另外的功能下面說(shuō)明。一個(gè)寄存器不一定是處理器組件的一部分。DEST是一個(gè)數(shù)據(jù)地址。SRC1是一個(gè)數(shù)據(jù)地址。SRC2是一個(gè)數(shù)據(jù)地址。Result要存儲(chǔ)在由DEST尋址的寄存器中的數(shù)據(jù)。Source1存儲(chǔ)在由SRC1尋址的寄存器中的數(shù)據(jù)。Source2存儲(chǔ)在由SRC2尋址的寄存器中的數(shù)據(jù)。計(jì)算機(jī)系統(tǒng)參考圖1,可以實(shí)現(xiàn)本發(fā)明的實(shí)施例的計(jì)算機(jī)系統(tǒng)作為計(jì)算機(jī)系統(tǒng)100表示。計(jì)算機(jī)系統(tǒng)100包括總線101或者其它傳輸信息的通信硬件和軟件以及與總線101連接的處理信息的處理器109。計(jì)算機(jī)系統(tǒng)100另外還包括一個(gè)隨機(jī)存取存儲(chǔ)器(RAM)或者其它動(dòng)態(tài)存儲(chǔ)設(shè)備(稱(chēng)為主存儲(chǔ)器104),它連接到總線101上,用于存儲(chǔ)信息和要由處理器109執(zhí)行的指令。主存儲(chǔ)器104也可以用于暫存變量或者其它在處理器109執(zhí)行指令時(shí)期的中間信息。計(jì)算機(jī)系統(tǒng)100還包括連接在總線101上的只讀存儲(chǔ)器(ROM)106,和/或其它靜態(tài)存儲(chǔ)設(shè)備,用于存儲(chǔ)靜態(tài)信息和處理器109要執(zhí)行的指令。數(shù)據(jù)存儲(chǔ)設(shè)備107連接到總線101上用于存儲(chǔ)信息和指令。另外,數(shù)據(jù)存儲(chǔ)設(shè)備107,例如磁盤(pán)或光盤(pán)以及它們相應(yīng)的驅(qū)動(dòng)器,可以連接到計(jì)算機(jī)100上。計(jì)算機(jī)系統(tǒng)100也可以通過(guò)總線101連接到一個(gè)顯示設(shè)備121上,以便顯示信息給計(jì)算機(jī)用戶。顯示設(shè)備121可以包括一個(gè)幀緩沖器,專(zhuān)用圖形處理設(shè)備,一個(gè)陰極射線管(CRT),和/或一個(gè)平面面板顯示器。通常一個(gè)包括字母數(shù)字和其它鍵的字母數(shù)字輸入設(shè)備122連接到總線101上,用于給處理器109傳輸信息和命令選擇。另一類(lèi)型的用戶輸入設(shè)備是光標(biāo)控制設(shè)備123,例如鼠標(biāo)、軌跡球、光筆、觸摸屏、或者光標(biāo)指示鍵,用于給處理器109傳輸方向信息和命令選擇以及控制光標(biāo)在顯示設(shè)備121上的移動(dòng)。這種輸入設(shè)備通常在兩個(gè)軸上有兩個(gè)自由度,第一軸(例如x軸)和第二軸(例如y軸),它們?cè)试S光標(biāo)控制設(shè)備在一個(gè)平面內(nèi)指定位置。然而本發(fā)明不應(yīng)該局限于只有兩個(gè)自由度的輸入設(shè)備。另一個(gè)可以連接到總線101上的設(shè)備是硬拷貝設(shè)備124,它可能用于在諸如紙、膠片、或者類(lèi)似類(lèi)型介質(zhì)上打印指令、數(shù)據(jù)或者其它信息。另外計(jì)算機(jī)系統(tǒng)100可以連接到聲音記錄和/或回放設(shè)備125上,例如連接到一個(gè)麥克風(fēng)上記錄信息的音頻數(shù)字轉(zhuǎn)換器。另外,該設(shè)備還可能包括一個(gè)連接到數(shù)/模(D/A)轉(zhuǎn)換器的揚(yáng)聲器,用于回放數(shù)字化的聲音。還有,計(jì)算機(jī)系統(tǒng)100可以是一個(gè)計(jì)算機(jī)網(wǎng)絡(luò)(例如一個(gè)局域網(wǎng))的一個(gè)終端。這樣,計(jì)算機(jī)系統(tǒng)100便是包括若干連網(wǎng)設(shè)備的一個(gè)計(jì)算機(jī)系統(tǒng)的一個(gè)計(jì)算機(jī)子系統(tǒng)。計(jì)算機(jī)系統(tǒng)100可以包括視頻數(shù)字化設(shè)備126。視頻數(shù)字化設(shè)備126可以用于獲取視頻圖像,而傳輸給網(wǎng)絡(luò)中的其它設(shè)備。計(jì)算機(jī)系統(tǒng)100對(duì)于支持計(jì)算機(jī)支持的協(xié)作(CSC-電話會(huì)議與混合介質(zhì)數(shù)據(jù)操作的集成)、2維/3維圖形、圖像處理、視頻壓縮/解壓、識(shí)別算法和音頻操作十分有用。處理器圖2表示處理器109的詳圖。處理器109可以在使用一層或多層諸如BiCMOS、CMOS和NMOS等工藝技術(shù)的基底上實(shí)現(xiàn)。處理器109包括一個(gè)解碼由處理器109使用的控制信號(hào)和數(shù)據(jù)的解碼器202。然后數(shù)據(jù)可以通過(guò)內(nèi)部總線205存儲(chǔ)在寄存器文件204中。顯然,一個(gè)實(shí)施例的寄存器不應(yīng)該局限于特定類(lèi)型的電路,相反,一個(gè)實(shí)施例的寄存器只需要能夠存儲(chǔ)和提供數(shù)據(jù),以及執(zhí)行這里敘述的功能。根據(jù)不同的數(shù)據(jù)類(lèi)型,數(shù)據(jù)可能存儲(chǔ)在整數(shù)寄存器組201、寄存器組209、狀態(tài)寄存器組208或者指令指針寄存器211中。其它的寄存器例如浮點(diǎn)寄存器可以包含在寄存器文件204中。在一個(gè)實(shí)施例中,整數(shù)寄存器組201存儲(chǔ)32位整數(shù)數(shù)據(jù)。在一個(gè)實(shí)施例中寄存器209組包括8個(gè)寄存器,R0212a到R7212h。寄存器組209中的每一個(gè)寄存器為64位長(zhǎng)。R1212a、R2212b和R3212c是寄存器組209中單個(gè)寄存器的例子。寄存器組209中的一個(gè)寄存器的32位可以移動(dòng)到整數(shù)寄存器組201中的一個(gè)整數(shù)寄存器中。類(lèi)似地,一個(gè)整數(shù)寄存器中的值可以移動(dòng)到寄存器組209中的一個(gè)寄存器的32位中。狀態(tài)寄存器組208指示處理器109的狀態(tài)。指令指針寄存器211存儲(chǔ)下一要執(zhí)行的指令的地址。整數(shù)寄存器組201、寄存器組209、狀態(tài)寄存器組208、和指令指針寄存器211都連接到內(nèi)部總線205上。任何另外的寄存器也都應(yīng)該連接到內(nèi)部總線205上。在另一個(gè)實(shí)施例中,這種寄存器中的某一些可以用于兩種類(lèi)型的數(shù)據(jù)。例如,寄存器組209和整數(shù)寄存器組201可以組合,其中每一個(gè)寄存器既可以存儲(chǔ)整數(shù)數(shù)據(jù)也可以存儲(chǔ)壓縮數(shù)據(jù)。在另一個(gè)實(shí)施例中,寄存器組209可以用作浮點(diǎn)寄存器組。在這一實(shí)施例中,壓縮數(shù)據(jù)或者浮點(diǎn)數(shù)據(jù)可以存儲(chǔ)在寄存器組209中。在一個(gè)實(shí)施例中,組合寄存器為64位長(zhǎng),而整數(shù)用64位表示。在該實(shí)施例中,在存儲(chǔ)壓縮數(shù)據(jù)和整數(shù)數(shù)據(jù)時(shí),寄存器不需區(qū)分這兩種數(shù)據(jù)類(lèi)型。功能單元203執(zhí)行由處理器109執(zhí)行的操作。這樣的操作包括移位、加法、減法和乘法等。功能單元203連接到內(nèi)部總線205。高速緩沖存儲(chǔ)器206是處理器109的一個(gè)選件,可以用于緩沖存儲(chǔ)例如來(lái)自主存儲(chǔ)器104的數(shù)據(jù)和/或控制信號(hào)。高速緩沖存儲(chǔ)器206連接到解碼器202以接收控制信號(hào)207。圖3表示處理器109的總操作。也就是說(shuō),圖3表示處理器109在對(duì)壓縮數(shù)據(jù)執(zhí)行操作、對(duì)未壓縮數(shù)據(jù)執(zhí)行操作或者執(zhí)行某個(gè)其它操作時(shí)遵循的步驟。例如這樣的操作包括用從高速緩沖存儲(chǔ)器206、主存儲(chǔ)器104、只讀存儲(chǔ)器(ROM)106或者數(shù)據(jù)存儲(chǔ)設(shè)備107的數(shù)據(jù)加載寄存器文件204中的一個(gè)寄存器的加載操作。在本發(fā)明的一個(gè)實(shí)施例中,處理器109支持由加里福尼亞州圣大克拉熱INTEL公司的INTEL80486TM支持的大多數(shù)指令。在本發(fā)明另一個(gè)實(shí)施例中,處理器109支持由加里福尼亞州圣大克拉熱INTEL公司的INTEL80486TM支持的全部操作。在本發(fā)明的再一個(gè)實(shí)施例中,處理器109支持由加里福尼亞州圣大克拉熱INTEL公司制造的奔騰處理器、INTEL80486TM處理器、80386TM處理器、INTEL80286TM處理器、和INTEL8086TM處理器支持的全部操作。在本發(fā)明的另一個(gè)實(shí)施例中,處理器109支持由加里福尼亞州SantaClara的INTEL公司定義的IATM-INTEL結(jié)構(gòu)支持的全部操作(參見(jiàn)“微處理器”,INTEL數(shù)據(jù)叢書(shū)卷1和卷2,1992年和1993年,加里福尼亞州SantaClaraINTEL公司出版)。一般來(lái)說(shuō),處理器109可以支持奔騰處理器的當(dāng)前指令集,但是也可以修改為支持未來(lái)指令以及這里敘述的指令集的集合。重要的是,處理器109除這里敘述的操作外,可以支持先前所用的操作。在步驟301,解碼器202從高速緩沖存儲(chǔ)器206或者總線101接收一個(gè)控制信號(hào)207。解碼器202解碼控制信號(hào)以判定要執(zhí)行的操作。在步驟302,解碼器202訪問(wèn)寄存器204或者存儲(chǔ)器中的一個(gè)存儲(chǔ)單元。根據(jù)在控制信號(hào)207中指定的寄存器地址訪問(wèn)寄存器文件204中的寄存器或在存儲(chǔ)器中的存儲(chǔ)單元。例如,為對(duì)壓縮數(shù)據(jù)進(jìn)行操作,控制信號(hào)207可以包括SRC1、SRC2和DEST寄存器地址。SRC1是第一源寄存器地址。SRC2是第二源寄存器地址。在一些情況下,SRC2地址是可選項(xiàng),因?yàn)椴⒎撬械牟僮餍枰獌蓚€(gè)源地址。如果一個(gè)操作不需要SRC2地址,則只使用SRC1地址。DEST是存儲(chǔ)結(jié)果數(shù)據(jù)的目的寄存器的地址。在一個(gè)實(shí)施例中,SRC1或SRC2也用作DEST。SRC1、SRC2和DEST將結(jié)合圖6a和圖6b更充分地說(shuō)明。存儲(chǔ)在相應(yīng)寄存器中的數(shù)據(jù)分別稱(chēng)為Source1、source2和Result。它們每一個(gè)為64位長(zhǎng)。在本發(fā)明的另一個(gè)實(shí)施例中,SRC1、SRC2和DEST中的任何一個(gè)或者全部可以定義為處理器109中的可尋址存儲(chǔ)器空間的一個(gè)存儲(chǔ)單元。例如,SRC1可能確定在主存儲(chǔ)器104中的一個(gè)存儲(chǔ)單元,而SRC2確定在整數(shù)寄存器組201中的第一寄存器,以及DEST確定寄存器組209中的第二寄存器。這里為說(shuō)明簡(jiǎn)單起見(jiàn),參考標(biāo)號(hào)是對(duì)寄存器文件204的訪問(wèn)標(biāo)注的,然而這些訪問(wèn)也可以對(duì)存儲(chǔ)器進(jìn)行。在本發(fā)明的另一個(gè)實(shí)施例中,操作碼只包含兩個(gè)地址,SRC1和SRC2。在該實(shí)施例中,運(yùn)算結(jié)果存儲(chǔ)在SRC1或SRC2寄存器中,也就是說(shuō),SRC1(或SRC2)用作DEST。這種類(lèi)型的尋址與前面只具有兩個(gè)地址的CISC指令兼容。這簡(jiǎn)少了解碼器202的復(fù)雜性。注意,在這一實(shí)施例中,如果在SRC1寄存器中包含的數(shù)據(jù)不準(zhǔn)備破壞,則在執(zhí)行操作前必須首先把該數(shù)據(jù)復(fù)制到另一個(gè)寄存器中。這一復(fù)制需要一個(gè)另外的指令。這里為說(shuō)明簡(jiǎn)單起見(jiàn),將使用三地址尋址模式(亦即SRC1、SRC2和DEST)。然而應(yīng)當(dāng)記住,在一個(gè)實(shí)施例中,控制信號(hào)可能只包括SRC1和SRC2,以及SRC1(或SRC2)標(biāo)識(shí)目的寄存器。在控制信號(hào)需要一個(gè)操作時(shí),在步驟303,允許功能單元203對(duì)來(lái)自寄存器文件204的被訪問(wèn)的數(shù)據(jù)執(zhí)行該項(xiàng)操作。一旦功能單元203執(zhí)行完這一操作,在步驟304,則根據(jù)控制信號(hào)207的要求把結(jié)果回存到寄存器文件204中。數(shù)據(jù)和存儲(chǔ)格式圖4a表示可以用于圖1的計(jì)算機(jī)系統(tǒng)的一些數(shù)據(jù)格式。這些數(shù)據(jù)格式是定點(diǎn)格式。處理器109可以操作這些數(shù)據(jù)格式。多媒體算法常常使用這些數(shù)據(jù)格式。一個(gè)字節(jié)401包含8個(gè)信息位。一個(gè)字402包含16個(gè)信息位,或者兩個(gè)字節(jié)。一個(gè)雙字403包含32個(gè)信息位,或者4個(gè)字節(jié)。于是,處理器109執(zhí)行可能操作這些存儲(chǔ)器數(shù)據(jù)格式中任何一個(gè)的控制信號(hào)。在下面的說(shuō)明中,對(duì)位、字節(jié)、字、和雙字的子字段加參考標(biāo)號(hào)。例如,字節(jié)001110102(以2為基表示)的位6到位0表示子字段1110102。圖4b到圖4d表示本發(fā)明的實(shí)施例中使用的寄存器內(nèi)表示。例如無(wú)符號(hào)字節(jié)寄存器內(nèi)表示410可以表示存儲(chǔ)在整數(shù)寄存器組201中的一個(gè)寄存器中的數(shù)據(jù)。在一個(gè)實(shí)施例中,整數(shù)寄存器組201中的一個(gè)寄存器為64位長(zhǎng)。在另一個(gè)實(shí)施例中,整數(shù)寄存器組201中的一個(gè)寄存器為32位長(zhǎng)。為說(shuō)明簡(jiǎn)單起見(jiàn),下面敘述64位的整數(shù)寄存器,然而也可以使用32位的整數(shù)寄存器。無(wú)符號(hào)字節(jié)的寄存器內(nèi)表示410示出處理器109在整數(shù)寄存器組201中存儲(chǔ)一個(gè)字節(jié)401,在該寄存器中的頭8位,即位7到位0用于該數(shù)據(jù)字節(jié)401。這些位表示為。為適當(dāng)?shù)乇硎具@一字節(jié),其余的56位必須為0。對(duì)于一個(gè)有符號(hào)字節(jié)的寄存器內(nèi)表示411,整數(shù)寄存器組201在頭7位,即位6到位0存儲(chǔ)該數(shù)據(jù),為數(shù)據(jù)部分,第7位表示符號(hào)位,圖中表示為{S}。其余的位63到位8為該字節(jié)的符號(hào)的延續(xù)。無(wú)符號(hào)字的寄存器內(nèi)表示412存儲(chǔ)在整數(shù)寄存器組201中的一個(gè)寄存器中。位15到位0包含一個(gè)無(wú)符號(hào)字402。這些位表示為{w}。為適當(dāng)?shù)乇硎驹撟郑溆嗟奈?3到位16必須為0。帶符號(hào)的字402存儲(chǔ)在位14到位0,如帶符號(hào)字的寄存器內(nèi)表示413所示。其余的位64到位15是符號(hào)字段。雙字403可以作為無(wú)符號(hào)雙字的寄存器內(nèi)表示414存儲(chǔ),或者作為帶符號(hào)雙字的寄存器內(nèi)表示415存儲(chǔ)。無(wú)符號(hào)雙字的寄存器內(nèi)表示414的位31到位0為數(shù)據(jù)。這些位表示為xv3r9jzsqg。為適當(dāng)表示該無(wú)符號(hào)雙字,其余的位63到位32必須為0。整數(shù)寄存器組201在其位30到位0存儲(chǔ)一個(gè)帶符號(hào)雙字的寄存器內(nèi)表示415,其余的位63到位31是符號(hào)字段。如上面圖4b到圖4d所示,一些數(shù)據(jù)類(lèi)型在64位寬的寄存器中的存儲(chǔ)是一種低效的存儲(chǔ)方法。例如,為存儲(chǔ)一個(gè)無(wú)符號(hào)字節(jié)的寄存器內(nèi)表示410,位63到位8必須為0,而只有位7到位0可能包含非0位。因此,在一個(gè)64位寄存器中存儲(chǔ)一個(gè)字節(jié)的處理器只使用寄存器容量的12.5%。相似地,由功能單元203執(zhí)行的操作只有前幾位是重要的。圖5a表示壓縮數(shù)據(jù)的數(shù)據(jù)格式。每一壓縮數(shù)據(jù)包括多于一個(gè)獨(dú)立的數(shù)據(jù)元素。圖中說(shuō)明3種壓縮數(shù)據(jù)格式壓縮字節(jié)501,壓縮字502和壓縮雙字503。在本發(fā)明的一個(gè)實(shí)施例中,壓縮字節(jié)為64位長(zhǎng),包含8個(gè)數(shù)據(jù)元素,每一個(gè)數(shù)據(jù)元素為一字節(jié)長(zhǎng)。一般來(lái)說(shuō),一個(gè)數(shù)據(jù)元素是一個(gè)單個(gè)的數(shù)據(jù),它與具有同樣長(zhǎng)度的其它數(shù)據(jù)元素存儲(chǔ)在一個(gè)單一寄存器中(或存儲(chǔ)單元)。在本發(fā)明的一個(gè)實(shí)施例中,存儲(chǔ)在一個(gè)寄存器中的數(shù)據(jù)元素的數(shù)目等于64除以數(shù)據(jù)元素的位長(zhǎng)。壓縮字502為64位長(zhǎng),包含4個(gè)字402數(shù)據(jù)元素。每一個(gè)字402數(shù)據(jù)元素包含16個(gè)信息位。壓縮雙字503為64位長(zhǎng),包含兩個(gè)雙字403數(shù)據(jù)元素。每一個(gè)雙字403數(shù)據(jù)元素包含32個(gè)信息位。圖5b到圖5d表示寄存器內(nèi)壓縮數(shù)據(jù)存儲(chǔ)表示。無(wú)符號(hào)壓縮字節(jié)的寄存器內(nèi)表示510示出壓縮字節(jié)501在寄存器組R0212a到寄存器組Rn212af中的一個(gè)寄存器中的存儲(chǔ)方式。每個(gè)字節(jié)數(shù)據(jù)元素的信息對(duì)于字節(jié)0存儲(chǔ)在位7到位0,對(duì)于字節(jié)1存儲(chǔ)在位15到位8,對(duì)于字節(jié)2存儲(chǔ)在位23到位16,對(duì)于字節(jié)3存儲(chǔ)在位31到位24,對(duì)于字節(jié)4存儲(chǔ)在位39到位32,對(duì)于字節(jié)5存儲(chǔ)在位47到位40,對(duì)于字節(jié)6存儲(chǔ)在位55到位48,對(duì)于字節(jié)7存儲(chǔ)在位63到位56。因此寄存器中所有可用的位都被使用。這種存儲(chǔ)安排增加了處理器的存儲(chǔ)效率。另外,通過(guò)訪問(wèn)8個(gè)數(shù)據(jù)元素,現(xiàn)在可以同時(shí)對(duì)8個(gè)數(shù)據(jù)元素執(zhí)行操作。帶符號(hào)壓縮字節(jié)的寄存器內(nèi)表示511類(lèi)似地存儲(chǔ)在寄存器組209中的一個(gè)寄存器中。注意,每一字節(jié)數(shù)據(jù)元素只有第8位是必須的符號(hào)位,其它位可以用于或者可以不用于指示符號(hào)。無(wú)符號(hào)壓縮字的寄存器內(nèi)表示512示出字3到字0是怎樣存儲(chǔ)在寄存器組209中的一個(gè)寄存器中的。位15到位0包含對(duì)于字0的數(shù)據(jù)元素信息,位31到位16包含對(duì)于字1的數(shù)據(jù)元素信息,位47到位32包含對(duì)于字2的數(shù)據(jù)元素信息,而位63到位48包含對(duì)于字3的數(shù)據(jù)元素信息。帶符號(hào)壓縮字的寄存器內(nèi)表示513類(lèi)似于無(wú)符號(hào)壓縮字的寄存器內(nèi)表示512。注意,每一字?jǐn)?shù)據(jù)元素只有第16位包含必要的符號(hào)指示符。無(wú)符號(hào)壓縮雙字的寄存器內(nèi)表示514表示寄存器組209怎樣存儲(chǔ)兩個(gè)雙字?jǐn)?shù)據(jù)元素。雙字0存儲(chǔ)在寄存器的位31到位0。雙字1存儲(chǔ)在寄存器的位63到位32。帶符號(hào)壓縮雙字的寄存器內(nèi)表示515類(lèi)似于無(wú)符號(hào)壓縮雙字的寄存器內(nèi)表示514。注意,必要的符號(hào)位是該雙字?jǐn)?shù)據(jù)元素的第32位。如前所述,寄存器組209既可以用于壓縮數(shù)據(jù),也可以用于整數(shù)數(shù)據(jù)。在本發(fā)明的這一實(shí)施例中,可以要求單個(gè)程序處理器109跟蹤一個(gè)被尋址的寄存器,例如R1212a,是否正在存儲(chǔ)壓縮數(shù)據(jù)或者簡(jiǎn)單整數(shù)/定點(diǎn)數(shù)據(jù)。在另一可選實(shí)施例中,處理器109可以跟蹤存儲(chǔ)在寄存器組209中的單個(gè)寄存器中的數(shù)據(jù)類(lèi)型。因此,如果例如試圖對(duì)簡(jiǎn)單/定點(diǎn)整數(shù)數(shù)據(jù)施行一個(gè)壓縮的加法運(yùn)算的話,這一可選實(shí)施例可能產(chǎn)生錯(cuò)誤??刂菩盘?hào)格式下面說(shuō)明處理器109所用操作壓縮數(shù)據(jù)的控制信號(hào)格式的一個(gè)實(shí)施例。在本發(fā)明的一個(gè)實(shí)施例中,控制信號(hào)用32位表示。解碼器202可以從總線101接收控制信號(hào)207。在另一個(gè)實(shí)施例中,解碼器202也可以從高速緩沖存儲(chǔ)器206接收這樣的控制信號(hào)。圖6a表示對(duì)壓縮數(shù)據(jù)進(jìn)行操作的控制信號(hào)的一般格式。操作字段OP601,即位31到位26,提供關(guān)于由處理器109要執(zhí)行的操作的信息;例如壓縮加,壓縮減等。SRC1602,即位25到位20,提供寄存器組209中的一個(gè)寄存器的源寄存器地址。該源寄存器包含在控制信號(hào)執(zhí)行中要用的第一壓縮數(shù)據(jù),Source1。相似地,SRC2603,即位19到位14,包含寄存器組209中的一個(gè)寄存器的地址。這一第二源寄存器包含執(zhí)行操作期間要用到的壓縮數(shù)據(jù),Source2。DEST605,即位5到位0包含寄存器組209中的一個(gè)寄存器的地址。該目的寄存器將存儲(chǔ)壓縮數(shù)據(jù)操作的結(jié)果壓縮數(shù)據(jù)Result??刂莆籗Z610,即位12和位13,指示在第一和第二壓縮數(shù)據(jù)源寄存器中的數(shù)據(jù)元素的長(zhǎng)度。如果SZ610等于012,則壓縮數(shù)據(jù)作為壓縮字節(jié)501格式化。如果SZ610等于102,則壓縮數(shù)據(jù)作為壓縮字502格式化。SZ610等于002或112預(yù)留,然而,在另一個(gè)實(shí)施例中,其中的一個(gè)可以用來(lái)指示壓縮雙字503??刂莆籘611,即位11,指示該操作是否以飽和方式執(zhí)行。如果T611等于1,則執(zhí)行飽和操作。如果T611等于0,則執(zhí)行非飽和操作。后面說(shuō)明飽和操作??刂莆籗612,即位10,指示使用帶符號(hào)操作。如果S612等于1,則執(zhí)行帶符號(hào)操作;如果S612等于0,則執(zhí)行無(wú)符號(hào)操作。圖6b表示操作壓縮數(shù)據(jù)的控制信號(hào)的第二種一般格式。該格式相應(yīng)于在“奔騰處理器系列用戶手冊(cè)”中敘述的一般整數(shù)操作碼格式,該手冊(cè)由INTEL公司文獻(xiàn)銷(xiāo)售部出版,地址為P.O.Box7641,Mt.prospect,IL,60056-7641。注意,OP601,SZ610,T611,和S612都結(jié)合在一個(gè)大字段中。對(duì)于一些控制信號(hào),位3到位5是SRC1602。在一個(gè)實(shí)施例中,其中有一個(gè)SRC1602地址,則位3到位5也相應(yīng)于DEST605。在一個(gè)可選的實(shí)施例中,其中有一個(gè)SRC2603地址,則位0到位2也相應(yīng)于DEST605。對(duì)于其它的控制信號(hào),例如壓縮移位立即操作,位3到位5表示操作碼場(chǎng)的擴(kuò)展。在一個(gè)實(shí)施例中,這種擴(kuò)展允許程序員把一個(gè)立即數(shù)與控制信號(hào)結(jié)合,例如一個(gè)移位計(jì)數(shù)值。在一個(gè)實(shí)施例中,立即數(shù)跟著控制信號(hào)。這在“奔騰處理器系列用戶手冊(cè)”一書(shū)的附錄F,從F-1到F-3頁(yè)有詳細(xì)介紹。位0到位2表示SRC2603。這種一般格式允許寄存器到寄存器,存儲(chǔ)器到寄存器,由存儲(chǔ)器對(duì)寄存器,由寄存器對(duì)寄存器,由立即數(shù)對(duì)寄存器,由寄存器到存儲(chǔ)器尋址。在一個(gè)實(shí)施例中,這種一般格式也可以支持整數(shù)寄存器到寄存器和寄存器到整數(shù)寄存器尋址。飽和/非飽和的說(shuō)明如前所述,T611指示操作是否可選為飽和。在允許飽和的場(chǎng)合,當(dāng)一個(gè)操作的結(jié)果溢出或下溢數(shù)據(jù)的范圍時(shí),其結(jié)果被箝位。箝位指的是如果結(jié)果超過(guò)該范圍的最大或最小值時(shí)把結(jié)果設(shè)定在最大或最小值。在下溢的場(chǎng)合,飽和把結(jié)果箝位在該范圍的最小值,而在溢出的場(chǎng)合,飽和把結(jié)果箝位在最大值。對(duì)于每一種數(shù)據(jù)格式允許的范圍示于表1。表1如上所述,T611指示是否正在執(zhí)行飽和操作。因此,使用無(wú)符號(hào)字節(jié)數(shù)據(jù)格式,如果一個(gè)運(yùn)算結(jié)果=258并且允許飽和,則在該結(jié)果被存儲(chǔ)在該操作的目的寄存器之前被箝位在255。類(lèi)似地,如果運(yùn)算的結(jié)果=-32999且處理器109使用帶符號(hào)字?jǐn)?shù)據(jù)格式同時(shí)允許飽和,則運(yùn)算結(jié)果在被存儲(chǔ)在該運(yùn)算的目的寄存器之前被箝位在-32768。數(shù)據(jù)處理操作在本發(fā)明的一個(gè)實(shí)施例中,多媒體應(yīng)用的性能不僅通過(guò)支持標(biāo)準(zhǔn)的CISC指令集(未壓縮數(shù)據(jù)操作),而且通過(guò)支持對(duì)壓縮數(shù)據(jù)的操作而得以改善。這樣的壓縮數(shù)據(jù)操作可能包括加法、減法、乘法、比較、移位、與和異或。然而,為充分使用這些操作,已經(jīng)確定,應(yīng)該包括數(shù)據(jù)處理操作。這樣的數(shù)據(jù)處理操作可能包括移動(dòng)、壓縮和拆開(kāi)。移位、壓縮和拆開(kāi)由于產(chǎn)生出允許程序員容易使用的格式的壓縮數(shù)據(jù)而方便了其它操作的執(zhí)行。對(duì)于其它壓縮操作的進(jìn)一步的背景,參見(jiàn)流水號(hào)為—,于—申請(qǐng)的“具有比較操作的微處理器”,流水號(hào)為—于—申請(qǐng)的“具有移位操作的新型處理器”,流水號(hào)為08/176123,于1993年12月30日申請(qǐng)的“處理器中使用壓縮數(shù)據(jù)的方法和裝置”,流水號(hào)為08/175772,于1993年12月30日申請(qǐng)的“在處理器中使用新型操作的方法和裝置”,所有這些申請(qǐng)都轉(zhuǎn)讓給本發(fā)明的受讓人。移動(dòng)操作移動(dòng)操作把數(shù)據(jù)傳輸給寄存器209或從寄存器209傳輸出數(shù)據(jù)。在一個(gè)實(shí)施例中,SRC2603是包含源數(shù)據(jù)的地址,而DEST605是數(shù)據(jù)要傳輸?shù)降牡刂?。在該?shí)施例中,不用SRC1602。在另一個(gè)實(shí)施例中,SRC1602就是DEST605。為解釋移動(dòng)操作,要區(qū)分寄存器和存儲(chǔ)單元這兩種情況。寄存器在寄存器文件204中尋找,而存儲(chǔ)器可以是高速緩沖存儲(chǔ)器206、主存儲(chǔ)器104、ROM106、數(shù)據(jù)存儲(chǔ)設(shè)備107。移動(dòng)操作可以從存儲(chǔ)器到寄存器組209、從寄存器組209到存儲(chǔ)器、和從寄存器組209中的一個(gè)寄存器到寄存器組209中的另一個(gè)寄存器移動(dòng)數(shù)據(jù)。在一個(gè)實(shí)施例中,壓縮數(shù)據(jù)存儲(chǔ)在不同于存儲(chǔ)整數(shù)數(shù)據(jù)的寄存器中。在該實(shí)施例中,移動(dòng)操作可以把數(shù)據(jù)從整數(shù)寄存器組201移動(dòng)到寄存器組209中。例如,在處理器109中,如果壓縮數(shù)據(jù)存儲(chǔ)在寄存器組209中而整數(shù)數(shù)據(jù)存儲(chǔ)在整數(shù)寄存器組201中,則可以使用移動(dòng)指令從整數(shù)寄存器組201移動(dòng)數(shù)據(jù)到寄存器組209,反之亦然。在一個(gè)實(shí)施例中,當(dāng)為移動(dòng)指定一個(gè)存儲(chǔ)器地址時(shí),在存儲(chǔ)單元(指示最低有效字節(jié)的存儲(chǔ)器單元)中的數(shù)據(jù)的8個(gè)字節(jié)加載到寄存器組209中的一個(gè)寄存器或從該寄存器存儲(chǔ)數(shù)據(jù)的8個(gè)字節(jié)到該存儲(chǔ)單元。當(dāng)指定寄存器組209中的一個(gè)寄存器時(shí),該寄存器中的內(nèi)容被移動(dòng)到寄存器組209中的第二寄存器或從寄存器組209中的第二寄存器加載內(nèi)容到該寄存器。如果整數(shù)寄存器201為64位長(zhǎng),且指定一個(gè)整數(shù)寄存器,則在該整數(shù)寄存器中的數(shù)據(jù)的8個(gè)字節(jié)加載到寄存器209中的一個(gè)寄存器中或從后者存儲(chǔ)在該整數(shù)寄存器中。在一個(gè)實(shí)施例中,整數(shù)用32位表示。當(dāng)從寄存器組209到整數(shù)寄存器組201執(zhí)行移動(dòng)操作時(shí),則只有低32位壓縮數(shù)據(jù)移動(dòng)到指定的整數(shù)寄存器。在一個(gè)實(shí)施例中,高階32位被置0。相似地,當(dāng)執(zhí)行從整數(shù)寄存器組201到寄存器組209的移動(dòng)時(shí),只加載寄存器組209中的一個(gè)寄存器的低32位。在一個(gè)實(shí)施例中,處理器109支持在寄存器組209的一個(gè)寄存器到存儲(chǔ)器之間的32位移動(dòng)操作。在另一個(gè)實(shí)施例中,只有32位的移動(dòng)操作是就壓縮數(shù)據(jù)的高階32位進(jìn)行的。壓縮操作在本發(fā)明的一個(gè)實(shí)施例中,SRC1602寄存器包含數(shù)據(jù)(source1),SRC2603寄存器包含數(shù)據(jù)(source2),而DEST605寄存器包含運(yùn)算的結(jié)果數(shù)據(jù)(Result)。也就是說(shuō),Source1的各部分和Source2的各部分壓縮在一起產(chǎn)生Result。在一個(gè)實(shí)施例中,壓縮操作通過(guò)把源壓縮字(或雙字)的低位字節(jié)(或字)壓縮到Result的字節(jié)(或字)中而把壓縮字(或雙字)變換為壓縮字節(jié)(或字)。在一個(gè)實(shí)施例中,壓縮操作把四壓縮字變換為壓縮雙字。這一操作可選使用帶符號(hào)數(shù)據(jù)執(zhí)行。另外,該操作可選使用飽和方式執(zhí)行。圖7表示對(duì)壓縮數(shù)據(jù)執(zhí)行壓縮操作的方法的實(shí)施例。該實(shí)施例可以在圖2中的處理器109中實(shí)現(xiàn)。在步驟701,解碼器202解碼由處理器109接收的控制信號(hào)207。于是,解碼器202解碼適當(dāng)?shù)膲嚎s操作的操作碼;寄存器組209中的SRC1602、SRC2603和DEST605的地址;飽和/非飽和、帶符號(hào)/無(wú)符號(hào)、和在壓縮數(shù)據(jù)中的數(shù)據(jù)元素的長(zhǎng)度。如前所述,SRC1602(或SRC2603)可以用作DEST605。在步驟702,通過(guò)內(nèi)部總線205,解碼器202訪問(wèn)寄存器□文件204中的寄存器組209,給出SRC1602和SRC2603的地址。寄存器組209供給功能單元203存儲(chǔ)在SRC1602寄存器中的數(shù)據(jù)(Source1)和存儲(chǔ)在SRC2603寄存器中的數(shù)據(jù)(Source2)。也就是說(shuō),寄存器組209通過(guò)內(nèi)部總線205給功能單元203傳輸數(shù)據(jù)。在步驟703,解碼器202允許功能單元203執(zhí)行適當(dāng)?shù)膲嚎s操作。解碼器202通過(guò)內(nèi)部總線205進(jìn)一步傳輸在Source1和Source2中的數(shù)據(jù)元素的飽和和大小。飽和作為選項(xiàng)用以使在結(jié)果數(shù)據(jù)元素中的數(shù)據(jù)取最大值。如果在Source1和Source2中的數(shù)據(jù)元素的值大于或者小于在Result中的數(shù)據(jù)元素所能表示的值的范圍,則相應(yīng)的結(jié)果數(shù)據(jù)元素設(shè)定為其最大或最小值。例如,如果在Source1和Source2中的字?jǐn)?shù)據(jù)元素中的帶符號(hào)值小于0X80(或?qū)﹄p字來(lái)說(shuō)為0X8000),則結(jié)果字節(jié)(或字)數(shù)據(jù)元素箝位在0X80(或?qū)﹄p字來(lái)說(shuō)為0X8000)。如果在Source1和Source2中的字?jǐn)?shù)據(jù)元素中的帶符號(hào)值大于0X7F(或?qū)﹄p字來(lái)說(shuō)為0X7FFF),則結(jié)果字節(jié)(或字)數(shù)據(jù)元素箝位在0X7F(或0X7FFF)。在步驟710,數(shù)據(jù)元素的大小決定下一步要執(zhí)行哪個(gè)步驟。如果數(shù)據(jù)元素的大小為16位(壓縮字502數(shù)據(jù)),則功能單元203執(zhí)行步驟712。然而,如果壓縮數(shù)據(jù)的數(shù)據(jù)元素的大小為32位(壓縮雙字503數(shù)據(jù)),則功能單元203執(zhí)行步驟714。假定源數(shù)據(jù)元素的大小為16位,則執(zhí)行步驟712。在步驟712,執(zhí)行下面的內(nèi)容。Source1位7到0為Result位7到0。Source1位23到16為Result位15到8。Source1位39到32為Result位23到16。Source1位63到56為Result位31到24。Source2位7到0為Result位39到32。Source2位23到16為Result位47到40。Source2位39到32為Result位55到48。Source2位63到56為Result31到24。如果設(shè)定了飽和,則測(cè)試每一字的高階位以判定是否要箝位Result數(shù)據(jù)元素。假定源數(shù)據(jù)元素的大小為32位,則執(zhí)行步驟714。在步驟714,執(zhí)行下面的內(nèi)容。Source1位15到0為Result位15到0。Source1位47到32為Result位31到16。Source2位15到0為Result位47到32。Source2位47到32為Result位63到48。如果設(shè)定了飽和,則測(cè)試每一雙字的高階位以判定是否要箝位Result數(shù)據(jù)元素。在一個(gè)實(shí)施例中,步驟712的壓縮操作同時(shí)執(zhí)行。然而,在另一個(gè)實(shí)施例中,這一壓縮操作順序執(zhí)行。在再一個(gè)實(shí)施例中,一部分壓縮操作同時(shí)執(zhí)行,而一部分順序執(zhí)行。這一討論也適用于步驟714的壓縮操作。在步驟720,Result存儲(chǔ)在DEST605寄存器中。表2表示非飽和無(wú)符號(hào)字壓縮操作的寄存器內(nèi)表示。第一行的位為Source1的壓縮數(shù)據(jù)表示。第二行的位為Source2的數(shù)據(jù)表示。第三行的位為Result的壓縮數(shù)據(jù)表示。每一數(shù)據(jù)元素位下面的數(shù)字是該數(shù)據(jù)元素的號(hào)碼。例如,Source1數(shù)據(jù)元素3是100000002。壓縮電路在本發(fā)明的一個(gè)實(shí)施例中,為有效地執(zhí)行壓縮操作,使用并行方法。圖8a和圖8b表示能夠?qū)嚎s數(shù)據(jù)執(zhí)行壓縮操作的一個(gè)電路的實(shí)施例。該電路可選執(zhí)行飽和壓縮操作。圖8a和圖8b的電路包括操作控制電路800,結(jié)果寄存器852,結(jié)果寄存器853,8個(gè)16位到8位的飽和測(cè)試電路,和4個(gè)32位到16位的飽和測(cè)試電路。操作控制電路800從解碼器202接收信息以允許壓縮操作。操作控制電路800使用飽和值允許對(duì)每一飽和測(cè)試電路進(jìn)行飽和測(cè)試。如果源壓縮數(shù)據(jù)的大小為字壓縮數(shù)據(jù)503,則輸出許可信號(hào)831由操作控制電路800置位。這就允許輸出寄存器852輸出。如果源壓縮數(shù)據(jù)的大小是雙字壓縮數(shù)據(jù)504,則輸出許可信號(hào)832由操作控制電路800置位。這就允許輸出寄存器853輸出。每一飽和測(cè)試電路可以選擇測(cè)試飽和。如果飽和測(cè)試被禁止,則每一飽和測(cè)試電路僅僅把低階位傳送給一個(gè)結(jié)果寄存器的相應(yīng)位置。如果飽和測(cè)試被許可,則每一飽和測(cè)試電路測(cè)試高階位以判定是否應(yīng)該對(duì)結(jié)果箝位。飽和測(cè)試810到飽和測(cè)試817有16位輸入和8位輸出。8位輸出是輸入的低8位,或可選為一個(gè)箝位值(0X80,0X7F,或0XFF)。飽和測(cè)試810接收Source1位15到0而為結(jié)果寄存器852輸出位7到0。飽和測(cè)試811接收Source1位31到16而為結(jié)果寄存器852輸出位15到8。飽和測(cè)試812接收Source1位47到32而為結(jié)果寄存器852輸出位23到16。飽和測(cè)試813接收Source1位63到48而為結(jié)果寄存器852輸出位31到24。飽和測(cè)試814接收Source2位15到0而為結(jié)果寄存器852輸出位39到32。飽和測(cè)試815接收Source2位31到16而為結(jié)果寄存器852輸出位47到40。飽和測(cè)試816接收Source2位47到32而為結(jié)果寄存器852輸出位55到48。飽和測(cè)試817接收Source2位63到48而為結(jié)果寄存器852輸出位63到56。飽和測(cè)試820到823有32位輸入和16位輸出。16位輸出是輸入的低16位,或可選為一個(gè)箝位值(0X8000,0X7FFF,或0XFFFF)。飽和測(cè)試820接收Source1位31到0而為結(jié)果寄存器853輸出位15到0。飽和測(cè)試821接收Source1位63到32而為結(jié)果寄存器853輸出位31到16。飽和測(cè)試822接收Source2位31到0而為結(jié)果寄存器853輸出位47到32。飽和測(cè)試823接收Source2位63到32而為結(jié)果寄存器853輸出位63到48。例如在表4中,執(zhí)行無(wú)符號(hào)不飽和字壓縮操作。操作控制電路800許可結(jié)果寄存器852輸出結(jié)果[630]860。Source1</tables>3201Source2</tables>3201Result</tables>76543210表4然而,如果執(zhí)行無(wú)符號(hào)不飽和雙字壓縮操作,則操作控制電路800許可結(jié)果寄存器853輸出結(jié)果[630]860。表5表示這一結(jié)果。Source1</tables>10Source2</tables>10Rcsult</tables>320表5拆開(kāi)操作在一個(gè)實(shí)施例中,拆開(kāi)操作交錯(cuò)放置兩個(gè)源壓縮數(shù)據(jù)的低階壓縮字節(jié)、字或者雙字以產(chǎn)生結(jié)果壓縮字節(jié)、字或者雙字。圖9表示對(duì)壓縮數(shù)據(jù)執(zhí)行拆開(kāi)操作的方法的實(shí)施例。該實(shí)施例可以在圖2中的處理器109中實(shí)現(xiàn)。首先執(zhí)行步驟701和702。在步驟903,解碼器202許可功能單元203執(zhí)行拆開(kāi)操作。解碼器202通過(guò)內(nèi)部總線205傳輸Source1和Source2中的數(shù)據(jù)元素的大小。在步驟910,數(shù)據(jù)元素的大小決定下一步執(zhí)行哪一步驟。如果數(shù)據(jù)元素的大小為8位(壓縮字節(jié)數(shù)據(jù)501),則功能單元203執(zhí)行步驟712。然而,如果壓縮數(shù)據(jù)中的數(shù)據(jù)元素的大小為16位(壓縮字?jǐn)?shù)據(jù)502),則功能單元203執(zhí)行步驟714。然而,如果壓縮數(shù)據(jù)中的數(shù)據(jù)元素的大小為32位(壓縮雙字?jǐn)?shù)據(jù)503),則功能單元203執(zhí)行步驟716。假定源數(shù)據(jù)元素的大小為8位,則執(zhí)行步驟712。在步驟712,執(zhí)行下面的內(nèi)容Source1位7到0為Result位7到0。Source2位7到0為Result位15到8。Source1位15到8為Result位23到16。Source2位15到8為Result位31到24。Source1位23到16為Result位39到32。Source2位23到16為Result位47到40。Source1位31到24為Result位55到48。Source2位31到24為Result位63到56。假定源數(shù)據(jù)元素的大小為16位,則執(zhí)行步驟714。在步驟714,執(zhí)行下面的內(nèi)容Source1位15到0為Result位15到0。Source2位15到0為Result位31到16。Source1位31到16為Result位47到32。Source2位31到16為Result位63到48。假定源數(shù)據(jù)元素的大小為32位,則執(zhí)行步驟716。在步驟716,執(zhí)行下面的內(nèi)容Source1位31到0為Result位31到0。Source2位31到0為Result位63到32。在一個(gè)實(shí)施例中,步驟712的拆開(kāi)操作同時(shí)執(zhí)行。然而,在另一個(gè)實(shí)施例中,拆開(kāi)操作順序執(zhí)行。在再一個(gè)實(shí)施例中,拆開(kāi)操作的一部分同時(shí)執(zhí)行,另一部分順序執(zhí)行。這一討論也適用于在步驟714和步驟716的拆開(kāi)操作。在步驟720,Result存儲(chǔ)在DEST605寄存器中。表6示出字節(jié)拆開(kāi)操作的寄存器內(nèi)表示。Source10010101001010101010101011111111110000000011100001000111110001000</table>76543210Source20000000000000000110000000000000011110011000000001000111010001000</table>76543210Result1111001110000000000000000111000010001110100011111000100010001000</table>76543210表6表7示出字拆開(kāi)操作的寄存器內(nèi)表示。Source10010101001010101010101011111111110000000011100001000111110001000</table>3201Source20000000000000000110000000000000011110011100000001000111010001000</table>3201Result1111001100000000100000000111000010001110100010001000111110001000</table>3201表7表8示出雙字拆開(kāi)操作的寄存器內(nèi)表示。Source10010101001010101010101011111111110000000011100001000111110001000</table>10Source20000000000000000110000000000000011110011000000001000111010001000</table>10Result1111001100000000100011101000100010000000011100001000111110001000</table>10表8拆開(kāi)電路在本發(fā)明的一個(gè)實(shí)施例中,為有效地執(zhí)行拆開(kāi)操作,使用并行方法。圖10表示能夠?qū)嚎s數(shù)據(jù)執(zhí)行拆開(kāi)操作的一個(gè)電路的實(shí)施例。圖10的電路包括操作控制電路800,結(jié)果寄存器1052,結(jié)果寄存器1053和結(jié)果寄存器1054。操作控制電路800從解碼器202接收信息而許可拆開(kāi)操作。如果源壓縮數(shù)據(jù)的大小是字節(jié)壓縮數(shù)據(jù)502,則由操作控制電路800置位輸出許可信號(hào)1032。這就允許結(jié)果寄存器1052輸出。如果源壓縮數(shù)據(jù)的大小為字壓縮數(shù)據(jù)503,則輸出許可信號(hào)1033由操作控制電路800置位。這就允許輸出寄存器1053輸出。如果源壓縮數(shù)據(jù)的大小是雙字壓縮數(shù)據(jù)504,則輸出許可信號(hào)1034由操作控制電路800置位。這就允許輸出結(jié)果寄存器1054輸出。結(jié)果寄存器1052有下列輸入。Source1位7到0為結(jié)果寄存器1052的位7到0。Source2位7到0為結(jié)果寄存器1052的位15到8。Source1位15到8為結(jié)果寄存器1052的位23到16。Source2位15到8為結(jié)果寄存器1052的位31到24。Source1位23到16為結(jié)果寄存器1052的位39到32。Source2位23到16為結(jié)果寄存器1052的位47到40。Source1位31到24為結(jié)果寄存器1052的位55到48。Source2位31到24為結(jié)果寄存器1052的位63到56。結(jié)果寄存器1053有下列輸入。Source1位15到0為結(jié)果寄存器1053的位15到0。Source2位15到0為結(jié)果寄存器1053的位31到16。Source1位31到16為結(jié)果寄存器1053的位47到32。Source2位31到16為結(jié)果寄存器1053的位63到48。結(jié)果寄存器1054有下列輸入。Source1位31到0為結(jié)果寄存器1054的位31到0。Source2位31到0為結(jié)果寄存器1054的位63到32。例如,在表9中,執(zhí)行一個(gè)字拆開(kāi)操作。操作控制電路800將允許結(jié)果寄存器1053輸出結(jié)果[630]860。表9Source1Source2Result然而,如果執(zhí)行雙字拆開(kāi)操作,則操作控制電路800將允許結(jié)果寄存器1054輸出結(jié)果[630]860。表10表示這一結(jié)果。Source1Source2Result表10因此,移動(dòng)、壓縮和拆開(kāi)操作可以操作多個(gè)數(shù)據(jù)元素。在現(xiàn)有技術(shù)的處理器中,為執(zhí)行這些類(lèi)型的操作,需要多個(gè)單獨(dú)的操作來(lái)執(zhí)行單一壓縮數(shù)據(jù)移動(dòng)、壓縮或者拆開(kāi)操作。在一個(gè)實(shí)施例中,用于壓縮數(shù)據(jù)操作的數(shù)據(jù)線都帶有相關(guān)的數(shù)據(jù)。它將提高計(jì)算機(jī)系統(tǒng)的性能。權(quán)利要求1.一個(gè)處理器,包括用于存儲(chǔ)第一壓縮數(shù)據(jù)的第一寄存器;具有控制信號(hào)輸入的解碼器,所述控制信號(hào)輸入用于接收第一控制信號(hào)和第二控制信號(hào),所述第一控制信號(hào)用于指示一個(gè)壓縮操作,所述第二控制信號(hào)用于指示一個(gè)拆開(kāi)操作;連接到所述解碼器和所述第一寄存器的功能單元,所述功能單元使用所述第一壓縮數(shù)據(jù)執(zhí)行所述壓縮操作和所述拆開(kāi)操作。2.權(quán)利要求1所述處理器,其中,所述第一壓縮數(shù)據(jù)包括多個(gè)數(shù)據(jù)元素,所述多個(gè)數(shù)據(jù)元素的每一個(gè)數(shù)據(jù)元素具有大小,以及所述第一控制信號(hào)另外包括一個(gè)相應(yīng)于所述大小的指示符。3.權(quán)利要求2所述處理器,其中,所述大小是壓縮字節(jié)、壓縮字和壓縮雙字中的一個(gè)。4.權(quán)利要求2所述處理器,其中,所述第一壓縮數(shù)據(jù)為64位。5.權(quán)利要求1所述處理器,其中,所述第一控制信號(hào)包括一個(gè)源地址。6.權(quán)利要求1所述處理器,其中,所述第一控制信號(hào)包括一個(gè)符號(hào)指示符,所述符號(hào)指示符用于判定所述壓縮操作是帶符號(hào)執(zhí)行還是不帶符號(hào)執(zhí)行。7.權(quán)利要求1所述處理器,其中,所述控制信號(hào)輸入另外用于接收第三控制信號(hào),所述第三控制信號(hào)用于指示一個(gè)移動(dòng)操作;其中,所述處理器另外包括一個(gè)第二寄存器,所述第二寄存器用于存儲(chǔ)整數(shù)數(shù)據(jù),所述移動(dòng)操作引起所述處理器在所述第一寄存器和所述第二寄存器之間移動(dòng)數(shù)據(jù)。8.權(quán)利要求1所述處理器,其中,所述處理器包括一個(gè)寄存器文件,所述寄存器文件包括一個(gè)寄存器;其中,所述第一控制信號(hào)和所述第二控制信號(hào)包括一個(gè)第二存儲(chǔ)單元和所述第二存儲(chǔ)單元相應(yīng)于所述寄存器;其中,所述功能單元進(jìn)一步用于從執(zhí)行一個(gè)操作來(lái)產(chǎn)生一個(gè)結(jié)果,以及其中所述結(jié)果存儲(chǔ)在所述第二存儲(chǔ)單元。9.權(quán)利要求1所述處理器,其中,所述處理器的第一控制信號(hào)包括一個(gè)第二存儲(chǔ)單元和所述第二存儲(chǔ)單元相應(yīng)于一個(gè)存儲(chǔ)器位置;其中,所述功能單元進(jìn)一步用于從執(zhí)行一個(gè)操作來(lái)產(chǎn)生一個(gè)結(jié)果;以及其中,所述結(jié)果存儲(chǔ)在所述第二存儲(chǔ)單元。10.在處理器中操作壓縮數(shù)據(jù)的方法,所述處理器具有一個(gè)解碼器,一個(gè)功能單元,第一寄存器和第二寄存器,所述解碼器連接到所述功能單元、所述第一寄存器和所述第二寄存器,所述方法包括下述步驟所述解碼器解碼一個(gè)控制信號(hào);如果所述解碼器判定所述控制信號(hào)指示一個(gè)壓縮操作,則所述處理器執(zhí)行下述步驟訪問(wèn)存儲(chǔ)在所述第一寄存器中的第一壓縮數(shù)據(jù),訪問(wèn)存儲(chǔ)在所述第二寄存器中的第二壓縮數(shù)據(jù),將所述第二壓縮數(shù)據(jù)與所述第一壓縮數(shù)據(jù)壓縮在一起,產(chǎn)生一個(gè)結(jié)果壓縮數(shù)據(jù),把所述結(jié)果壓縮數(shù)據(jù)存儲(chǔ)在所述第一寄存器中;如果所述解碼器判定所述控制信號(hào)指示一個(gè)拆開(kāi)操作,則所述處理器執(zhí)行下述步驟存取存儲(chǔ)在所述第一寄存器中的所述第一壓縮數(shù)據(jù),存取存儲(chǔ)在所述第二寄存器中的所述第二壓縮數(shù)據(jù),將所述第一壓縮數(shù)據(jù)和所述第二壓縮數(shù)據(jù)拆開(kāi),產(chǎn)生所述結(jié)果壓縮數(shù)據(jù),把所述結(jié)果壓縮數(shù)據(jù)存儲(chǔ)在所述第一寄存器中;如果所述解碼器判定所述控制信號(hào)指示一個(gè)移動(dòng)操作,則所述處理器執(zhí)行下述步驟,存取存儲(chǔ)在所述第二寄存器中的所述第二壓縮數(shù)據(jù),把所述第二壓縮數(shù)據(jù)的一部分存儲(chǔ)在第三寄存器中,所述第三寄存器用于存儲(chǔ)整數(shù)數(shù)據(jù)。11.權(quán)利要求10所述方法,其中,所述壓縮操作不帶飽和執(zhí)行;其中,所述壓縮操作包括訪問(wèn)所述第一壓縮數(shù)據(jù)和第二壓縮數(shù)據(jù)中的每一數(shù)據(jù)元素的低階位;以及其中所述低階位被包含在所述結(jié)果壓縮數(shù)據(jù)中。12.權(quán)利要求10所述方法,其中,所述第一壓縮數(shù)據(jù)包括多個(gè)第一數(shù)據(jù)元素,所述第一多個(gè)數(shù)據(jù)元素中的每一個(gè)數(shù)據(jù)元素由第一預(yù)定數(shù)目述第一預(yù)定位數(shù);以及其中所述結(jié)果壓縮數(shù)據(jù)包括第二多個(gè)數(shù)據(jù)元素,所述第二多個(gè)數(shù)據(jù)元素為所述第一多個(gè)數(shù)據(jù)元素的兩倍,所述第二多個(gè)數(shù)據(jù)元素中的每一個(gè)數(shù)據(jù)元素由第二預(yù)定位數(shù)表示,而所述第二預(yù)定位數(shù)為所述第一預(yù)定位數(shù)的一半。13.權(quán)利要求10所述方法,其中,所述第一壓縮數(shù)據(jù)包括第一組數(shù)據(jù)元素;其中,所述第二壓縮數(shù)據(jù)包括第二組數(shù)據(jù)元素;以及其中,所述拆開(kāi)操作包括交錯(cuò)放置所述第一組數(shù)據(jù)元素的低階數(shù)據(jù)元素和所述第二組數(shù)據(jù)元素的低階數(shù)據(jù)元素。14.權(quán)利要求10所述方法,其中,所述第一寄存器為64位長(zhǎng),以及所述第一壓縮數(shù)據(jù)包括4個(gè)壓縮字?jǐn)?shù)據(jù)元素。全文摘要一個(gè)處理器包括用于存儲(chǔ)第一壓縮數(shù)據(jù)的第一寄存器(209),解碼器(202)和功能單元(203)。解碼器有一個(gè)控制信號(hào)輸入(207),用以接收第一控制信號(hào)和第二控制信號(hào)。第一控制信號(hào)用以指示壓縮操作,而第二控制信號(hào)用以指示拆開(kāi)操作。功能單元連接到解碼器(202)和寄存器(209)上。功能單元除執(zhí)行移動(dòng)操作外還使用第一壓縮數(shù)據(jù)執(zhí)行壓縮操作和拆開(kāi)操作。文檔編號(hào)G06F9/315GK1173230SQ95197430公開(kāi)日1998年2月11日申請(qǐng)日期1995年12月1日優(yōu)先權(quán)日1994年12月2日發(fā)明者A·皮萊格,Y·雅列,M·米陶爾,L·M·門(mén)納梅爾,B·艾坦申請(qǐng)人:英特爾公司