專利名稱:用于指令壓縮的方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及指令集的壓縮。
背景技術(shù):
許多數(shù)據(jù)處理系統(tǒng)包含精簡指令集計算機(RISC)處理器。這種類型的計算機結(jié)構(gòu)通過使用更簡單的指令減少了芯片復(fù)雜度。編譯器生成軟件例程(routine)來執(zhí)行先前由硬件執(zhí)行的復(fù)雜的指令。RISC型的處理器固有地承受低代碼密度。進行了許多嘗試通過對線性代碼段應(yīng)用壓縮來增加RISC處理器的代碼密度。這些嘗試包括使用字典(dictionary)途徑來壓縮指令。然而,這種類型的途徑不提供最優(yōu)壓縮,這是因為RISC處理器的指令的本質(zhì)是這樣的在指令的前一半對應(yīng)于小的操作碼(又稱為“op碼”)集的同時,指令的后一半可以是任意數(shù)量的寄存器或數(shù)據(jù)操作數(shù)。用于這種類型結(jié)構(gòu)的指令包括操作碼和操作數(shù)。操作碼是告訴計算機如何去做(例如輸入、加或產(chǎn)生轉(zhuǎn)移)的機器指令部分。操作數(shù)是引用數(shù)據(jù)或外部設(shè)備的機器指令部分。操作碼起到動詞的角色,而操作數(shù)起到對其采取動作的名詞的角色。這種類型的指令導(dǎo)致操作碼和操作數(shù)組合的可能的集合非常龐大。結(jié)果,在指令級上可用的重復(fù)很低。
發(fā)明內(nèi)容
根據(jù)第一方面,提供了一種在數(shù)據(jù)處理系統(tǒng)中用于處理指令集的方法,其中該指令集包括操作碼和操作數(shù),所述方法包括標(biāo)識在該指令集內(nèi)的順序操作碼的重復(fù)序列來形成操作碼的標(biāo)識序列;和使用操作碼的標(biāo)識序列壓縮該指令集來形成由處理器執(zhí)行的壓縮指令集。
最好提供一種改進的方法、裝置和計算機指令,用于處理器壓縮和解壓縮指令。
最好標(biāo)識在該指令集內(nèi)的操作數(shù)的重復(fù)序列來形成操作數(shù)的標(biāo)識序列;并且最好使用操作數(shù)的標(biāo)識序列來壓縮指令。
在優(yōu)選實施例中,生成用于解壓縮該指令集的字典。
在優(yōu)選實施例中,在與處理器相關(guān)的高速緩存中存儲該壓縮指令集和字典。
在優(yōu)選實施例中,在標(biāo)識順序操作碼的重復(fù)序列之前生成字典,并且該字典用于標(biāo)識順序操作碼的重復(fù)序列。
最好,響應(yīng)標(biāo)識順序操作碼的重復(fù)序列來動態(tài)地生成字典中的條目。
在優(yōu)選實施例中,由處理器執(zhí)行該壓縮指令集。最好在執(zhí)行該壓縮指令集期間,當(dāng)遇到壓縮指令時,對用于執(zhí)行的壓縮指令解壓縮。
最好,操作碼的標(biāo)識序列是一對操作碼。
在優(yōu)選實施例中,標(biāo)識在該指令集內(nèi)的操作數(shù)的重復(fù)序列來形成操作數(shù)的標(biāo)識序列。最好使用操作數(shù)的標(biāo)識序列壓縮指令來形成由處理器執(zhí)行的壓縮指令集。
在優(yōu)選實施例中,將該壓縮指令集的一部分載入與處理器相關(guān)的高速緩存中,并且最好響應(yīng)標(biāo)識要被發(fā)送到處理器來執(zhí)行的、該壓縮指令集內(nèi)的指令,確定該指令是否為壓縮指令。最好響應(yīng)作為壓縮指令的該指令,解壓縮該指令來形成解壓縮指令,并且最好將用于執(zhí)行的該解壓縮指令發(fā)送到處理器。
根據(jù)優(yōu)選實施例,提供了一種用于處理指令集的數(shù)據(jù)處理系統(tǒng),其中,該指令集包括操作碼和操作數(shù),該數(shù)據(jù)處理系統(tǒng)包括總線系統(tǒng);連接到總線系統(tǒng)的通信單元;連接到總線系統(tǒng)的存儲器,其中存儲器包含指令集;和連接到總線系統(tǒng)的處理單元,其中,處理單元執(zhí)行指令集標(biāo)識在指令集內(nèi)的順序操作碼的重復(fù)序列來形成操作碼的標(biāo)識序列,并且使用操作碼的標(biāo)識序列壓縮該指令集來形成由處理器執(zhí)行的壓縮指令集。
根據(jù)第二方面,提供了一種用于處理指令集的數(shù)據(jù)處理系統(tǒng),其中,該指令集包括操作碼和操作數(shù),該數(shù)據(jù)處理系統(tǒng)包括標(biāo)識設(shè)備,用于標(biāo)識在該指令集內(nèi)的順序操作碼的重復(fù)序列來形成操作碼的標(biāo)識序列;和壓縮設(shè)備,用于使用操作碼的標(biāo)識序列壓縮該指令集來形成由處理器執(zhí)行的壓縮指令集。
根據(jù)第三方面,提供了一種用于處理指令集的計算機程序產(chǎn)品,其中,該指令集包括操作碼和操作數(shù),該計算機程序產(chǎn)品包括第一指令,用于標(biāo)識在該指令集內(nèi)的順序操作碼的重復(fù)序列來形成操作碼的標(biāo)識序列;和第二指令,用于使用操作碼的標(biāo)識序列壓縮該指令集來形成由處理器執(zhí)行的壓縮指令集。
根據(jù)第四方面,提供一種用于處理指令集的計算機程序,其中,該指令集包括操作碼和操作數(shù),該計算機程序包括第一指令,用于標(biāo)識在該指令集內(nèi)的順序操作碼的重復(fù)序列來形成操作碼的標(biāo)識序列;和第二指令,用于使用操作碼的標(biāo)識序列壓縮該指令集來形成由處理器執(zhí)行的壓縮指令集。
現(xiàn)在將參照附圖僅僅通過示例的方式對本發(fā)明的優(yōu)選實施例進行描述,在附圖中圖1是可以根據(jù)本發(fā)明的優(yōu)選實施例來實施本發(fā)明的數(shù)據(jù)處理系統(tǒng)的圖示標(biāo)識;圖2是可以根據(jù)優(yōu)選實施例來實施本發(fā)明的數(shù)據(jù)處理系統(tǒng)的方框圖;圖3是圖解根據(jù)本發(fā)明的優(yōu)選實施例的、在壓縮和解壓縮處理器的指令中使用的部件的方框圖;圖4A到4C是圖解根據(jù)本發(fā)明的優(yōu)選實施例的壓縮處理的圖表;圖5A到5C是圖解根據(jù)本發(fā)明的優(yōu)選實施例的壓縮處理的圖表;圖6是根據(jù)本發(fā)明的優(yōu)選實施例的、使用靜態(tài)字典的壓縮代碼處理的流程圖;圖7是根據(jù)本發(fā)明的優(yōu)選實施例的、使用動態(tài)字典壓縮代碼的處理的流程圖;和圖8是是根據(jù)本發(fā)明的優(yōu)選實施例的、處理從高速緩存?zhèn)鬏數(shù)教幚砥鞯闹噶畹倪^程的流程圖。
具體實施例現(xiàn)在參照附圖,尤其參照圖1,根據(jù)本發(fā)明的優(yōu)選實施例圖示了可以實施本發(fā)明的數(shù)據(jù)處理系統(tǒng)的圖示表示。圖示了計算機100,其包括系統(tǒng)單元102、視頻顯示終端104、鍵盤106、可以包括軟盤驅(qū)動器或者其他類型的永久性和可抽取式存儲介質(zhì)在內(nèi)的存儲設(shè)備108以及鼠標(biāo)110。額外的輸入設(shè)備可以由個人計算機100包括,例如游戲手柄、觸摸墊(touch pad)、觸摸屏、跟蹤球、麥克風(fēng)等等??梢允褂萌魏芜m當(dāng)?shù)挠嬎銠C來實現(xiàn)計算機100,例如IBM eServer計算機或IntelliStation計算機,它們是位于紐約阿芒克的國際商業(yè)機器公司的產(chǎn)品。盡管圖示的示意圖顯示了計算機,但可以在諸如網(wǎng)絡(luò)計算機之類的其他類型的數(shù)據(jù)處理系統(tǒng)中實施本發(fā)明的其他實施例。計算機100最好還包括圖形用戶接口(GUI),圖形用戶接口可以通過計算機100中運行的駐留在計算機可讀介質(zhì)中的軟件來實現(xiàn)。
現(xiàn)在參照圖2,其顯示了可以根據(jù)本發(fā)明的優(yōu)選實施例來實施本發(fā)明的數(shù)據(jù)處理系統(tǒng)的方框圖。數(shù)據(jù)處理系統(tǒng)200是例如諸如圖1中的計算機100之類的計算機,其中可以放置有用于實施優(yōu)選實施例的處理的代碼或指令。數(shù)據(jù)處理系統(tǒng)200采取外設(shè)部件互連(PCI)局部總線結(jié)構(gòu)。盡管圖示的例子采用PCI總線,但也可以使用其他諸如加速圖形接口(AGP)和工業(yè)標(biāo)準(zhǔn)結(jié)構(gòu)(ISA)之類的總線結(jié)構(gòu)。處理器202和主存儲器204通過PCI橋208連接到PCI局部總線206。PCI橋208還可以包括用于處理器202的集成的存儲控制器和高速緩沖存儲器??梢酝ㄟ^直接部件互連或者通過內(nèi)裝板(add-inboard)進行到PCI局部總線206的額外連接。
在圖示的例子中,局域網(wǎng)(LAN)適配器210、小型計算機系統(tǒng)接口SCSI主機總線適配器212和擴充總線接口214通過直接部件連接來連接到PCI局部總線206。相反,音頻適配器216、圖形適配器218和音頻/視頻適配器219通過插入擴展插槽的內(nèi)裝板連接到PCI局部總線206。擴展總線接口214為鍵盤和鼠標(biāo)適配器220、調(diào)制解調(diào)器222和額外的存儲器224提供連接。SCSI主機總線適配器212為硬盤驅(qū)動器226、磁帶驅(qū)動器228和CD-ROM驅(qū)動器230提供連接。
操作系統(tǒng)運行在處理器202上,用于協(xié)調(diào)并提供對圖2中的數(shù)據(jù)處理系統(tǒng)200內(nèi)的各種部件的控制。操作系統(tǒng)可以是能商業(yè)得到的操作系統(tǒng),例如可以從國際商業(yè)機器公司得到的AIX。用于操作系統(tǒng)和應(yīng)用或程序的指令位于諸如硬盤驅(qū)動器226之類的存儲設(shè)備上,并且可以載入主存儲器204中來由處理器執(zhí)行。
本領(lǐng)域普通技術(shù)人員應(yīng)當(dāng)理解,圖2中的硬件可以根據(jù)實現(xiàn)而不同。除了圖2所示的硬件之外可以使用其他諸如閃速只讀存儲器(ROM)、等效的非易失性存儲器或光盤驅(qū)動器等等之類的內(nèi)部硬件或外部設(shè)備,或者后者可以取代前者。此外,可以將優(yōu)選實施例的處理可以應(yīng)用到多處理器數(shù)據(jù)處理系統(tǒng)。
例如,如果任選地將數(shù)據(jù)處理系統(tǒng)200配置為網(wǎng)絡(luò)計算機,則其可能不包括SCSI主機總線適配器212、硬盤驅(qū)動器226、磁帶驅(qū)動器228和CD-ROM驅(qū)動器230。在這種情況下,計算機(更恰當(dāng)?shù)胤Q為客戶計算機)包括某種類型的網(wǎng)絡(luò)通信接口,例如LAN適配器210、調(diào)制解調(diào)器222等等。作為另一個例子,數(shù)據(jù)處理系統(tǒng)200可以是配置成可以不依靠某種類型的網(wǎng)絡(luò)通信接口而啟動的孤立的系統(tǒng),而不管數(shù)據(jù)處理系統(tǒng)200是否包括某種類型的網(wǎng)絡(luò)通信接口。作為另一例子,數(shù)據(jù)處理系統(tǒng)200可以是個人數(shù)字助理(PDA),配有ROM和/或閃速ROM來提供用于存儲操作系統(tǒng)文件和/或用戶生成的數(shù)據(jù)的非易失性存儲器。
圖2中所示的例子和上述例子并非意欲暗示結(jié)構(gòu)限制。例如,數(shù)據(jù)處理系統(tǒng)200除了采用PDA的形式外,還可以是筆記本計算機或手持計算機。數(shù)據(jù)處理系統(tǒng)200還可以是公用信息站(kiosk)或者萬維網(wǎng)設(shè)備。
由處理器202使用計算機執(zhí)行的指令來執(zhí)行優(yōu)選實施例的處理,該指令可以位于諸如主存儲器204、存儲器224之類的存儲器中或者一個或多個外部設(shè)備226-230中。
根據(jù)優(yōu)選實施例,本發(fā)明提供一種用于為諸如RISC處理器之類的處理器壓縮和解壓縮指令的改進的方法、裝置和計算機指令。除了RISC處理器結(jié)構(gòu),本發(fā)明還可以應(yīng)用于其他處理器結(jié)構(gòu),例如基于復(fù)雜指令集計算機(CISC)的處理器。優(yōu)選實施例的機制認(rèn)識到許多指令和程序成對出現(xiàn)。認(rèn)識到這個事實,優(yōu)選實施例的機制通過程序中的順序的指令中分別壓縮操作碼字段和操作數(shù)字段來增加壓縮。這種類型的壓縮以很小開銷增長增加了程序的代碼密度。此外,隨著這種在代碼密度上的增加,也增加了高速緩存的命中機會,這是因為可以將更多的數(shù)據(jù)以壓縮形式放入高速緩存區(qū)。通過增加高速緩存命中率,處理器花費更少的時間等待信息在高速緩存中以及隨后在處理器中出現(xiàn)。
現(xiàn)在轉(zhuǎn)到圖3,根據(jù)本發(fā)明的優(yōu)選實施例圖示了圖解在壓縮和解壓縮處理器的指令中使用的部件的方框圖。在這個例子中,處理器300、高速緩存302和主存儲器304是在諸如圖2中的數(shù)據(jù)處理系統(tǒng)200之類的數(shù)據(jù)處理系統(tǒng)中可以發(fā)現(xiàn)的部件。主存儲器304中的程序306包含將要由處理器300執(zhí)行的指令。代碼308是來自程序306的指令的子集,存儲在高速緩存302內(nèi)以減少獲取由處理器300處理的指令所需的時間。此外,在這個例子中,字典310也位于高速緩存302中,并且提供用于壓縮和解壓縮代碼308內(nèi)指令的數(shù)據(jù)結(jié)構(gòu)。在這些例子中,由代碼管理單元312執(zhí)行壓縮和解壓縮指令的處理。在這個示例中,代碼管理單元是軟件部件。
在這些例子中,代碼管理單元312對主內(nèi)存304中的程序306執(zhí)行壓縮處理。使用標(biāo)識的順序指令的重復(fù)序列來分析程序306中的指令。這些重復(fù)序列可以是指令,或者在本發(fā)明的優(yōu)選實施例中,該重復(fù)序列根據(jù)在指令中的順序操作碼或操作符的重復(fù)序列來標(biāo)識。
在壓縮程序306后,接著將程序306的部分傳輸?shù)礁咚倬彺?02來形成代碼308。如果發(fā)生高速緩存命中,則檢查代碼308中的指令來確定指令是否經(jīng)過壓縮。如果該特定的指令經(jīng)過壓縮,則由代碼管理單元執(zhí)行解壓縮,接著將解壓縮指令發(fā)送到處理器300來執(zhí)行。字典310用于執(zhí)行代碼308的解壓縮。在這個例子中,字典310位于高速緩存302中。當(dāng)然,根據(jù)特定的實現(xiàn),字典310也可以位于其他位置,例如主存儲器304中。
字典310根據(jù)特定的實現(xiàn)可以采用靜態(tài)字典或動態(tài)字典的形式。如果字典310采用靜態(tài)字典的形式,則只壓縮匹配字典310內(nèi)的條目的程序306內(nèi)的指令。在字典310是動態(tài)的情況下,隨著分析程序306并由代碼管理單元312對其壓縮,生成字典。在這種情況下,每次將順序的多個指令標(biāo)識為在程序306內(nèi)重復(fù)時創(chuàng)建條目。在動態(tài)字典和靜態(tài)字典中,條目包括標(biāo)識為重復(fù)的指令或者指令的部分以及用于替代重復(fù)操作數(shù)或操作碼的代碼或關(guān)鍵字。
在這些例子中,可以通過標(biāo)識成對出現(xiàn)的順序操作數(shù)或操作碼而發(fā)生壓縮。當(dāng)然,也可以標(biāo)識其他多個操作數(shù)或操作碼用來壓縮。例如,順序的操作數(shù)集可以采用三個或四個操作數(shù)的形式,而不是兩個。那么,任何其他的順序指令的重復(fù)序列都用于壓縮程序306中的指令。
現(xiàn)在轉(zhuǎn)到圖4A-4C,根據(jù)本發(fā)明的優(yōu)選實施例圖示了圖解壓縮處理的圖表。在這個例子中,使用包含諸如圖4A中的條目400之類的條目的靜態(tài)字典執(zhí)行壓縮處理。可以使用例如圖3中的代碼管理單元312這樣的壓縮/解壓縮單元來執(zhí)行在這些例子中所執(zhí)行的壓縮。
在這個例子中,條目400包括定義402和關(guān)鍵字404。圖4B中的代碼406是來自可以使用靜態(tài)字典對其壓縮的程序的解壓縮代碼的示例。該字典可以是例如圖3中的字典310。在這個例子中,行408和410中的指令對應(yīng)于條目400中的定義402。結(jié)果,代碼管理單元壓縮圖4B中的代碼406來形成圖4C中的代碼412。可以看出,在這種情況下,將兩行代碼壓縮成一個關(guān)鍵字,對于諸如處理器的高速緩存之類的容量可能受限的存儲器,節(jié)省了存儲器。
現(xiàn)在轉(zhuǎn)到圖5A-5C,根據(jù)本發(fā)明的優(yōu)選實施例圖示了圖解壓縮處理的圖表。在這個例子中,使用動態(tài)字典來進行壓縮處理??梢允褂美鐖D3中的代碼管理單元312這樣的壓縮/解壓縮單元來執(zhí)行在這些例子中所執(zhí)行的壓縮。
在這個例子中,代碼500是程序的一部分,其中將行502和504中的操作碼標(biāo)識為在程序內(nèi)其他地方重復(fù)的順序操作碼。同樣,將行506和508中的操作碼標(biāo)識為在程序內(nèi)其他地方重復(fù)的順序指令。此外,行506和508中的操作數(shù)位于在程序代碼中的其他重復(fù)的順序指令中。
作為這些標(biāo)識的結(jié)果,如圖5B所示,代碼管理單元生成包含條目510、512和514的字典。在這種情況下,定義516和條目510包含來自行502和504上的指令的操作碼,同時為條目510分配關(guān)鍵字518。在條目512中,來自行506和508的操作碼形成定義520,同時為條目512分配關(guān)鍵字522。來自指令506和508的操作數(shù)用于形成條目514中的定義524,同時為條目514分配關(guān)鍵字526。使用這些條目壓縮代碼500來形成圖5C中的代碼528。
在這個例子中可以看出,分別將操作碼和操作數(shù)作為壓縮處理的部分處理。之所以使用這種操作碼和操作數(shù)分開的分叉方式(bifurcation),是因為根據(jù)優(yōu)選實施例的本發(fā)明認(rèn)識到,操作碼在程序中的其他地方常??梢詷?biāo)識為重復(fù)的,而包括操作碼和操作數(shù)的整個指令的情況則較少發(fā)生。使用自程序內(nèi)的重復(fù)的順序指令的標(biāo)識生成的條目來壓縮整個程序。通過順序地重復(fù),兩個或多個諸如在圖5A的行506和508中找到的ADD和STR指令之類的順序指令,可以在程序中的其他地方再次找到。當(dāng)然,這些例子顯示了成對的順序指令的使用。除了成對,順序指令還可以采用其他的數(shù)目。例如,可以將三個或四個順序指令標(biāo)識為重復(fù)的,并用于壓縮。
現(xiàn)在轉(zhuǎn)到圖6,根據(jù)本發(fā)明的優(yōu)選實施例圖示了使用靜態(tài)字典的壓縮代碼處理的流程圖??梢栽谥T如圖3中的代碼管理單元312之類的解壓縮/壓縮處理中實現(xiàn)圖6中圖解的處理。
處理由讀取程序文件開始(步驟600)。然后,對程序執(zhí)行搜索匹配字典序列的指令序列(步驟602)。然后,確定是否找到匹配(步驟604)。如果找到了匹配,則用對應(yīng)于字典中的該序列的關(guān)鍵字替換該序列(步驟606)。然后確定是否完成文件處理(步驟608)。在步驟608,如果在程序中搜索了字典中所有的定義,則完成處理。否則,處理回到步驟602來繼續(xù)使用字典中的另一個定義搜索。
重新回到步驟604,如果沒有找到匹配,則如上所述,處理前進到步驟608。
接下來參照圖7,根據(jù)本發(fā)明的優(yōu)選實施例圖示了使用動態(tài)字典的壓縮代碼處理的流程圖。可以使用諸如圖3中的代碼管理單元312之類的解壓縮/壓縮處理來實現(xiàn)圖6中圖解的處理。
處理由讀取程序文件開始(步驟700)。然后,執(zhí)行對順序指令的重復(fù)序列的搜索(步驟702)。然后,確定是否找到順序指令的重復(fù)序列(步驟704)。如果找到了順序指令的重復(fù)序列,則為該序列生成關(guān)鍵字(步驟706)。然后在字典中為關(guān)鍵字和序列生成條目(步驟708),然后處理回到上述的步驟702。再次參照步驟704,如果在程序文件中沒有找到順序指令的重復(fù)序列,則結(jié)束處理。
現(xiàn)在轉(zhuǎn)到圖8,根據(jù)本發(fā)明的優(yōu)選實施例圖示了處理從高速緩存?zhèn)鬏數(shù)教幚砥鞯闹噶畹倪^程的流程圖。可以在諸如圖3中的代碼管理單元312之類的解壓縮/壓縮處理中實現(xiàn)圖6中圖解的處理。
處理由從高速緩存中讀取匹配高速緩存命中的指令開始(步驟800)。然后確定該指令是否經(jīng)壓縮(步驟802)。通過將該指令與字典中的條目比較來做出確定。如果字典中的關(guān)鍵字匹配該指令,則將該指令標(biāo)識為經(jīng)壓縮的。根據(jù)特定的實施例,可以對指令的操作數(shù)和操作碼部分進行比較。
如果標(biāo)識該指令為經(jīng)壓縮的,則使用字典解壓縮該指令(步驟804)。通過用字典中的定義替代關(guān)鍵字或從高速緩存獲得的指令進行步驟804中的解壓縮。然后,將解壓縮指令發(fā)送到處理器(步驟806),隨后結(jié)束處理。
重新參照步驟802,如果沒有標(biāo)識該指令為經(jīng)壓縮的,則處理前進到上述步驟806。
因此,根據(jù)優(yōu)選實施例,本發(fā)明提供一種用于壓縮和解壓縮指令的改進的方法、裝置和計算機指令。優(yōu)選實施例的機制在程序中標(biāo)識在程序中重復(fù)的順序指令。用關(guān)鍵字替代這些順序指令。在所示的例子中,該處理可以采用靜態(tài)或動態(tài)的字典。此外,通過分別處理操作碼和操作數(shù),可以在壓縮中將指令分成兩部分。優(yōu)選實施例的機制通過這種類型的壓縮增加代碼密度。這樣,可以將更多的數(shù)據(jù)以壓縮的形式放入高速緩存區(qū),增加了高速緩存命中的可能性。由于高速緩存命中的可能性增加,處理器花費更少的時間等待信息在高速緩存中出現(xiàn)。
值得注意的是,盡管以全功能的數(shù)據(jù)處理系統(tǒng)的背景來描述了本發(fā)明,但本領(lǐng)域普通技術(shù)人員應(yīng)當(dāng)理解,本發(fā)明的處理能夠以具有指令的計算機可讀介質(zhì)的形式和各種形式進行分發(fā),并且本發(fā)明可以同等地應(yīng)用,而與實際用來實現(xiàn)分發(fā)的特定類型的信號承載介質(zhì)無關(guān)。計算機可讀介質(zhì)的例子包括可記錄型介質(zhì),例如軟盤、硬盤驅(qū)動器、RAM、CD-ROM、DVD-ROM;以及傳輸型介質(zhì),例如,使用諸如射頻和光波傳輸?shù)膫鬏斝问降臄?shù)字和模擬通信鏈路、有線或無線通信鏈路。計算機可讀介質(zhì)可以采用編碼的格式的形式,在特定的數(shù)據(jù)系統(tǒng)對其解碼以供實際使用。
為了說明和描述的目的對本發(fā)明進行了描述,并不意欲在公開的形式上窮舉或限制本發(fā)明。本領(lǐng)域普通技術(shù)人員應(yīng)當(dāng)明白各種修改和變型。挑選并描述實施例以便最好地說明本發(fā)明的原理和實際應(yīng)用,并且使得本領(lǐng)域其他普通技術(shù)人員理解具有適合于特定預(yù)期的用途的本發(fā)明的各種實施例的各種變型。
權(quán)利要求
1.一種在數(shù)據(jù)處理系統(tǒng)中用于處理指令集的方法,其中該指令集包括操作碼和操作數(shù),所述方法包括標(biāo)識在該指令集內(nèi)的順序操作碼的重復(fù)序列來形成操作碼的標(biāo)識序列;和使用操作碼的標(biāo)識序列壓縮該指令集來形成由處理器執(zhí)行的壓縮指令集。
2.如權(quán)利要求1所述的方法,還包括標(biāo)識在該指令集內(nèi)的操作數(shù)的重復(fù)序列來形成操作數(shù)的標(biāo)識序列;和使用操作數(shù)的標(biāo)識序列來壓縮指令。
3.如權(quán)利要求1所述的方法,還包括生成用于解壓縮該指令集的字典。
4.如權(quán)利要求3所述的方法,其中,在與處理器相關(guān)的高速緩存中存儲該壓縮指令集和字典。
5.如權(quán)利要求3所述的方法,其中,在標(biāo)識順序操作碼的重復(fù)序列之前生成字典,并且該字典用于標(biāo)識順序操作碼的重復(fù)序列。
6.如權(quán)利要求3所述的方法,其中,響應(yīng)標(biāo)識順序操作碼的重復(fù)序列來動態(tài)地生成字典中的條目。
7.如權(quán)利要求1所述的方法,還包括由處理器執(zhí)行該壓縮指令集;和在執(zhí)行該壓縮指令集期間,當(dāng)遇到壓縮指令時,對用于執(zhí)行的壓縮指令解壓縮。
8.如權(quán)利要求1所述的方法,其中,操作碼的標(biāo)識序列是一對操作碼。
9.如權(quán)利要求1所述的方法,其中,將該壓縮指令集的一部分載入與處理器相關(guān)的高速緩存中,并且還包括響應(yīng)標(biāo)識要被發(fā)送到處理器執(zhí)行的、該壓縮指令集內(nèi)的指令,確定該指令是否為壓縮指令;響應(yīng)作為壓縮指令的指令,解壓縮該指令來形成解壓縮指令;和將用于執(zhí)行的該解壓縮指令發(fā)送到處理器。
10.一種用于處理指令集的數(shù)據(jù)處理系統(tǒng),其中,該指令集包括操作碼和操作數(shù),該數(shù)據(jù)處理系統(tǒng)包括標(biāo)識設(shè)備,用于標(biāo)識在該指令集內(nèi)的順序操作碼的重復(fù)序列來形成操作碼的標(biāo)識序列;和壓縮設(shè)備,用于使用操作碼的標(biāo)識序列壓縮該指令集來形成由處理器執(zhí)行的壓縮指令集。
11.如權(quán)利要求10所述的數(shù)據(jù)處理系統(tǒng),其中,標(biāo)識設(shè)備是第一標(biāo)識設(shè)備并且壓縮設(shè)備是第一壓縮設(shè)備,還包括第二標(biāo)識設(shè)備,用于在該指令集內(nèi)的標(biāo)識操作數(shù)的重復(fù)序列,來形成操作數(shù)的標(biāo)識序列;和第二壓縮設(shè)備,用于使用操作數(shù)的標(biāo)識序列來壓縮指令。
12.如權(quán)利要求10所述的數(shù)據(jù)處理系統(tǒng),還包括生成設(shè)備,用于生成用于解壓縮該指令集的字典。
13.如權(quán)利要求12所述的數(shù)據(jù)處理系統(tǒng),其中,在與處理器相關(guān)的高速緩存中存儲該壓縮指令集和字典。
14.如權(quán)利要求12所述的數(shù)據(jù)處理系統(tǒng),其中,在標(biāo)識順序操作碼的重復(fù)序列之前生成字典,并且該字典用于標(biāo)識順序操作碼的重復(fù)序列。
15.如權(quán)利要求12所述的數(shù)據(jù)處理系統(tǒng),其中,響應(yīng)標(biāo)識順序操作碼的重復(fù)序列來動態(tài)地生成字典中的條目。
16.如權(quán)利要求10所述的數(shù)據(jù)處理系統(tǒng),還包括執(zhí)行設(shè)備,用于通過處理器執(zhí)行該壓縮指令集;和解壓縮設(shè)備,用于在執(zhí)行該壓縮指令集期間,當(dāng)遇到壓縮指令時,對用于執(zhí)行的壓縮指令解壓縮。
17.如權(quán)利要求10所述的數(shù)據(jù)處理系統(tǒng),其中,操作碼的標(biāo)識序列是一對操作碼。
18.如權(quán)利要求10所述的數(shù)據(jù)處理系統(tǒng),其中,將該壓縮指令集的一部分載入與處理器相關(guān)的高速緩存中,并且還包括確定設(shè)備,用于響應(yīng)標(biāo)識要被發(fā)送到處理器來執(zhí)行的、該壓縮指令集內(nèi)的指令來確定該指令是否為壓縮指令;解壓縮設(shè)備,用于響應(yīng)作為壓縮指令的指令來解壓縮指令,以形成解壓縮指令;和發(fā)送設(shè)備,用于將用于執(zhí)行的該解壓縮指令發(fā)送到處理器。
19.一種用于處理指令集的計算機程序產(chǎn)品,其中,該指令集包括操作碼和操作數(shù),該計算機程序產(chǎn)品包括第一指令,用于標(biāo)識在該指令集內(nèi)的順序操作碼的重復(fù)序列來形成操作碼的標(biāo)識序列;和第二指令,用于使用操作碼的標(biāo)識序列壓縮該指令集來形成由處理器執(zhí)行的壓縮指令集。
20.一種計算機程序,包括當(dāng)所述程序在計算機上運行時,適于執(zhí)行權(quán)利要求1到10中任一權(quán)利要求的方法的程序代碼設(shè)備。
全文摘要
一種用于處理指令集的方法、裝置和計算機指令,其中該指令集包括操作碼和操作數(shù)。標(biāo)識在該指令集中的順序操作碼的重復(fù)序列來形成操作碼的標(biāo)識序列。使用操作碼的標(biāo)識序列壓縮該指令集來形成由處理器執(zhí)行的壓縮指令集。
文檔編號G06F9/38GK1735860SQ200480002047
公開日2006年2月15日 申請日期2004年1月9日 優(yōu)先權(quán)日2003年1月9日
發(fā)明者萊恩·T·霍洛韋, 納迪姆·馬利克, 阿維吉特·薩哈 申請人:國際商業(yè)機器公司