亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

用于管理數(shù)據(jù)的系統(tǒng)和方法

文檔序號:6657124閱讀:304來源:國知局
專利名稱:用于管理數(shù)據(jù)的系統(tǒng)和方法
技術(shù)領(lǐng)域
本發(fā)明涉及用于管理數(shù)據(jù)(例如,進(jìn)行數(shù)據(jù)處理、壓縮數(shù)據(jù)、存儲數(shù)據(jù)、加載數(shù)據(jù),等等)的系統(tǒng)和方法,具體來說,用于對數(shù)據(jù)(例如,壓縮的和未壓縮的數(shù)據(jù)的混合)的進(jìn)行管理的系統(tǒng)和方法,其中,第一指令(例如,一組第一指令)用于對壓縮數(shù)據(jù)進(jìn)行操作,第二指令(例如,不同于第一指令的一組第二指令)用于對未壓縮的數(shù)據(jù)進(jìn)行操作。
背景技術(shù)
存儲器消耗無論是在高性能的還是在低性能的系統(tǒng)設(shè)計(jì)中都正在成為越來越關(guān)鍵的問題。在低端,隨機(jī)存取存儲器(RAM)消耗面積、功率以及資金。在高端,性能受到有效緩存大小以及從RAM進(jìn)入高速緩存的帶寬的限制,就中央處理單元(CPU)的時(shí)鐘周期而言變得比較慢。
此外,在存儲器和CPU之間傳輸?shù)脑S多比特沒有用,因?yàn)橹颠M(jìn)行壓縮。壓縮去除了冗余,如此降低了帶寬要求,并有效地使更多數(shù)據(jù)存儲在CPU附近。
當(dāng)前,使用應(yīng)用壓縮的技術(shù),試圖改善存儲器效率。然而,這樣的技術(shù)在存儲器層次結(jié)構(gòu)的對性能不非常敏感的部分沿著存儲器層次結(jié)構(gòu)(例如,在最低級別的高速緩存和主存儲器之間)相對地較遠(yuǎn)地應(yīng)用壓縮。因此,這樣的技術(shù)的優(yōu)點(diǎn)是有限的。

發(fā)明內(nèi)容
鑒于前面的及其他問題、缺點(diǎn)以及如前所述的系統(tǒng)和方法的缺點(diǎn),本發(fā)明的示范性方面的目的是提供了用于管理數(shù)據(jù)的系統(tǒng)和方法,不僅增大隨機(jī)存取存儲器(RAM)的有效大小,而且也增大高速緩沖存儲器(例如,數(shù)據(jù)高速緩存或“D-高速緩存”)的有效大小,顯著地改善了性能。
本發(fā)明的示范性方面包括處理器,該處理器執(zhí)行用于對壓縮數(shù)據(jù)進(jìn)行操作的一組指令和用于對未壓縮的數(shù)據(jù)進(jìn)行操作的另一組指令。重要的是,另一組指令不同于所述指令組。此外,指令組和另一個指令組包括加載指令和存儲指令。
系統(tǒng)進(jìn)一步包括與處理器相鄰形成的第一級存儲器高速緩存,在第一級存儲器高速緩存和處理器之間形成的用于執(zhí)行壓縮數(shù)據(jù)和解壓縮數(shù)據(jù)中的至少一個操作的模塊。此外,模塊可以包括軟件模塊,所述軟件模塊包括數(shù)據(jù)獲取緩沖器。
模塊可以存儲不同標(biāo)記值,這些標(biāo)記值交換一系列值的帶符號的和無符號的指令。例如,模塊可以將數(shù)據(jù)從64比特壓縮到32比特、從32比特壓縮到16比特、從32比特壓縮到8比特,以及從16比特壓縮到8比特。
在本發(fā)明中,由語言運(yùn)行時(shí)系統(tǒng)基于存儲在特定存儲器位置的值可被壓縮的可能性,作出有關(guān)是否使用指令組或另一指令組來訪問該位置的數(shù)據(jù)的決定。
此外,系統(tǒng)進(jìn)一步包括用于執(zhí)行指令的軟件模塊,這些指令通過普通指令的序列模擬壓縮的加載指令和壓縮的存儲指令。軟件模塊使用主要相對編址來壓縮數(shù)據(jù),以便大多數(shù)指針值以相對形式存儲,以不同的形式存儲的一些區(qū)別值的子集除外。數(shù)據(jù)可以包括,例如,指針,軟件模塊與主要相對編址組合起來,以壓縮指針。
本發(fā)明的另一個方面包括集成電路設(shè)備,該設(shè)備包括中央處理單元(CPU),所述中央處理單元執(zhí)行用于對壓縮數(shù)據(jù)進(jìn)行操作的一組指令和用于對未壓縮的數(shù)據(jù)進(jìn)行操作的另一組指令,與CPU相鄰形成的存儲器高速緩存,以及在CPU和高速緩存之間形成的緩沖器。緩沖器在用戶模式程序控制下操作,以壓縮數(shù)據(jù)(例如,值和指針)。
此外,緩沖器包括硬件散列表加速器,加速器通過有效地址進(jìn)行索引,并以特殊指令擴(kuò)增,以支持值壓縮。
設(shè)備進(jìn)一步包括編程語言的軟件虛擬機(jī),所述虛擬機(jī)基于值可被壓縮的可能性使用該緩沖器。在一個示范性實(shí)施例中,緩沖器包括固定大小設(shè)置關(guān)聯(lián)的緩沖器。緩沖器還包括特殊用途的用戶可讀和可寫入的高速緩存,所述高速緩存包括通過存儲器地址索引的全字值。
例如,在本發(fā)明的示范性方面,當(dāng)給緩沖器提供了地址時(shí),緩沖器將地址分解為索引一組值的行編號,以及標(biāo)記,標(biāo)記用作標(biāo)識該組值的和與地址關(guān)聯(lián)的值匹配的成員的關(guān)鍵字,如果標(biāo)記匹配該組的成員,則返回緩沖器中的關(guān)聯(lián)的全字值,并存儲在始發(fā)指令的目標(biāo)寄存器中,如果標(biāo)記不匹配該組的成員,則生成緩沖器故障,控制到預(yù)先定義的處理程序的分支。
此外,當(dāng)發(fā)生溢出時(shí),緩沖器可以查詢軟件散列表,所述散列表與緩沖器具有相同邏輯結(jié)構(gòu),并映射將溢出的近指針存儲到實(shí)際全字絕對地址的地址。
例如,指令組可以包括Load and Uncompress HalfwordUnsigned(luhu)指令,所述指令由CPU執(zhí)行,以執(zhí)行操作,其中,如果值小于最大無符號半字量,則值返回到目標(biāo)寄存器,加零擴(kuò)展,如果值不小于最大無符號半字量,則最大無符號值充當(dāng)標(biāo)記,有效地址被用作查找緩沖器中的全字值的關(guān)鍵字。
指令組還包括Pointer Extract指令,所述指令由CPU執(zhí)行,以執(zhí)行操作,其中,如果溢出(OV)條件是1,則目標(biāo)寄存器中的值是從緩沖器中檢索的全字量,目標(biāo)寄存器保持保持不變,如果溢出(OV)條件是1之外的值,則目標(biāo)寄存器包括壓縮的指針。
指令組可以包括Store and Compress Halfword Unsigned(schu)指令。指令組包括Load and Uncompress Halfword Signed(luh)指令,所述指令由CPU執(zhí)行,以執(zhí)行操作,其中,最大負(fù)值充當(dāng)溢出標(biāo)記,而半字是符號擴(kuò)展。
指令組可以包括Store and Compress Halfword Signed(sch)指令。指令組可以包括Load and Uncompress Halfword Byte Unsigned(lubu)指令,所述指令由CPU執(zhí)行,以執(zhí)行操作,其中,如果值小于最大無符號字節(jié)量,則值返回到目標(biāo)寄存器,加零擴(kuò)展,如果值不小于最大無符號字節(jié)量,則有效地址可以被用作查找緩沖器中的全字值的關(guān)鍵字。
此外,如果指針是空值,則存儲空值標(biāo)記值,如果指針是非空的,則指針轉(zhuǎn)換為帶符號的偏移,如果指針適合半字,則指針存儲在編址存儲器中,如果指針不適合半字,則在緩沖器中創(chuàng)建或替換一個條目。
此外,指令組還包括Pointer Extract指令,所述指令由CPU執(zhí)行,以執(zhí)行操作,其中,如果目標(biāo)寄存器rd包含空值的標(biāo)記值,寄存器rd被清除,如果目標(biāo)寄存器rd不包含空值的標(biāo)記值,則向源寄存器rs的內(nèi)容中添加偏移,以產(chǎn)生有效地址,從所述有效地址加載寄存器rd的內(nèi)容。指令組還包括指針壓縮指令,所述指令由CPU執(zhí)行,以執(zhí)行操作,其中,如果源寄存器rs是空值,則指針變?yōu)闃?biāo)記值,如果源寄存器rs不是空值,則寄存器rs通過減去有效地址而轉(zhuǎn)換為相對指針。
本發(fā)明的另一個方面包括一種管理數(shù)據(jù)的方法,該方法包括執(zhí)行用于對壓縮數(shù)據(jù)進(jìn)行操作的一組指令和用于對未壓縮的數(shù)據(jù)進(jìn)行操作的另一組指令。
本發(fā)明的另一個方面包括可觸摸地實(shí)現(xiàn)可由數(shù)字處理設(shè)備執(zhí)行的機(jī)器可讀指令的程序的可編程存儲器介質(zhì),以執(zhí)行根據(jù)本發(fā)明的示范性方面的管理數(shù)據(jù)的方法。
本發(fā)明的另一個方面包括一種用于部署計(jì)算基礎(chǔ)架構(gòu)(其中,計(jì)算機(jī)可讀代碼集成到了計(jì)算系統(tǒng)中)的方法,以便代碼和計(jì)算系統(tǒng)組合起來,以執(zhí)行根據(jù)本發(fā)明的示范性方面的管理數(shù)據(jù)的方法。
利用本發(fā)明獨(dú)特和新穎的特征,本發(fā)明的示范性方面提供了管理數(shù)據(jù)的系統(tǒng)和方法,不僅增大RAM的有效大小,而且也增大D-高速緩存的有效大小,顯著地改善了性能。


通過參考附圖對本發(fā)明的實(shí)施例的下列詳細(xì)描述,將更好地理解前面的及其他目的,方面和優(yōu)點(diǎn),其中圖1顯示了根據(jù)本發(fā)明的示范性方面的管理數(shù)據(jù)的系統(tǒng)100;
圖2提供了根據(jù)本發(fā)明的示范性方面的地址如何與BDFB中的全字值(例如,a 512-entry,2KB,2-way set-associative Big DataFetch Buffer(BDFB))關(guān)聯(lián)的例圖;圖3是顯示了根據(jù)本發(fā)明的示范性方面的BDFB用于Loadand Uncompress Halfword Unsigned(luhu)指令的操作的流程圖;圖4是顯示了根據(jù)本發(fā)明的示范性方面的BDFB用于Storeand Compress Halfword Unsigned(schu)指令的操作的流程圖;圖5是顯示了根據(jù)本發(fā)明的示范性方面的BDFB用于Loadand Uncompress Halfword signed(luh)指令的操作的流程圖;圖6是顯示了根據(jù)本發(fā)明的示范性方面的BDFB用于Storeand Compress Halfword Signed(sch)指令的操作的流程圖;圖7是顯示了根據(jù)本發(fā)明的示范性方面的BDFB用于Loadand Uncompress Byte Unsigned(lubu)指令的操作的流程圖;圖8是顯示了根據(jù)本發(fā)明的示范性方面的BDFB用于新指令“Pointer Extract”或px的操作的流程圖;圖9是顯示了根據(jù)本發(fā)明的示范性方面的BDFB用于Pointer Compress(pc)指令的操作的流程圖;圖10是顯示了根據(jù)本發(fā)明的示范性方面的管理數(shù)據(jù)的方法1000的流程圖;圖11顯示了系統(tǒng)1100,這是用于實(shí)現(xiàn)本發(fā)明的系統(tǒng)和方法的典型的硬件配置;以及圖12顯示了可觸摸地實(shí)現(xiàn)可由數(shù)字處理器執(zhí)行的機(jī)器可讀指令的程序的用于執(zhí)行本發(fā)明的方法的可編程存儲器介質(zhì)1200(例如,軟盤)。
具體實(shí)施例方式
現(xiàn)在請參看附圖,圖1顯示了用于管理數(shù)據(jù)的系統(tǒng)100。該系統(tǒng)包括處理器110(例如,至少一個處理器),該處理器110執(zhí)行用于對壓縮數(shù)據(jù)進(jìn)行操作的一組指令(例如,第一指令)以及用于對未壓縮的數(shù)據(jù)進(jìn)行操作的另一組指令(例如,可能不同于第一指令的第二指令)。
在示范性實(shí)施例中,系統(tǒng)100可以包括第一級存儲器高速緩存120(它與處理器110相鄰),模塊130(例如,硬件或軟件壓縮和解壓縮模塊),用于執(zhí)行壓縮(例如,透明值和數(shù)據(jù)壓縮)和解壓縮數(shù)據(jù)中的至少一個操作,在第一級存儲器高速緩存和處理器之間形成(例如,對所述數(shù)據(jù)進(jìn)行操作)。例如,模塊130包括數(shù)據(jù)獲取緩沖器(例如,大數(shù)據(jù)獲取緩沖器(BDFB)),該數(shù)據(jù)獲取緩沖器包括對透明數(shù)據(jù)和指示符壓縮的有效的硬件支持。
在本發(fā)明中,通過使用1)模擬加載/存儲指令(例如,加載指令和/或存儲指令),以及2)所有軟件結(jié)構(gòu),完全在標(biāo)準(zhǔn)硬件上模擬壓縮/解壓縮數(shù)據(jù)的模塊。如此,不需要其他硬件模塊與處理器和第一級存儲器高速緩存相鄰。
與傳統(tǒng)技術(shù)(沿著存儲器層次結(jié)構(gòu)(例如,在最低級別的高速緩存和主存儲器之間)相對地較遠(yuǎn)地應(yīng)用壓縮)不同,本發(fā)明的示范性方面提供了改進(jìn)開發(fā)對于存儲器層次結(jié)構(gòu)的處理器(例如,中央處理單元(CPU))和第一級存儲器高速緩存之間的對性能最敏感的部分應(yīng)用起來足夠有效的系統(tǒng)和方法。
本發(fā)明的示范性方面提供了新型硬件后備緩沖區(qū)(例如,大數(shù)據(jù)獲取緩沖器(BDFB)),這用于在用戶模式程序控制下壓縮數(shù)據(jù)和指針。BDFB包括,例如,硬件散列表加速器,加速器通過有效地址進(jìn)行索引,并以特殊指令擴(kuò)增,以支持值壓縮。
發(fā)明人進(jìn)行了測量,顯示了對于Java虛擬機(jī)中的大部分?jǐn)?shù)據(jù)對象,中等大小的BDFB產(chǎn)生兩倍的壓縮。此外,由于數(shù)據(jù)以壓縮的形式存儲在數(shù)據(jù)高速緩存中,本發(fā)明的示范性方面不僅增大了RAM的有效大小,而且也增大了D-高速緩存的有效大小,顯著地改善了性能。如此,本發(fā)明的示范性方面(例如,包括BDFB)導(dǎo)致面積、功率,以及RAM要求降低,同時(shí)提高了性能。
大數(shù)據(jù)獲取緩沖器BDFB用來進(jìn)行各種壓縮和優(yōu)化。BDFB包括,例如,通過存儲器地址索引的全字(例如,32比特)值的特殊用途的用戶可讀和可寫入的高速緩存。當(dāng)給BDFB提供了地址時(shí),它將地址分解為行編號和標(biāo)記,正如普通高速緩存那樣。行編號索引一組值,標(biāo)記用作確定該組值的哪一個成員(如果有的話)包含與提供的地址關(guān)聯(lián)的值的關(guān)鍵字。
如果標(biāo)記匹配,則返回BDFB中的關(guān)聯(lián)的全字值,并存儲在始發(fā)指令的目標(biāo)寄存器中。如果標(biāo)記不匹配,則生成BDFB故障,控制到預(yù)先定義的(用戶級別)處理程序的分支。
圖2提供了地址如何與BDFB 200中的全字值關(guān)聯(lián)的地址的例圖。如圖2所示,BDFB 200將地址205分解為索引一組全字值的行編號210,以及標(biāo)記215,該標(biāo)記被用作確定該組值的哪一個成員(如果有的話)包含與地址關(guān)聯(lián)的值的關(guān)鍵字。從BDFB檢索的全字值220存儲在處理器的目標(biāo)寄存器rd225中。
例如,圖2顯示了根據(jù)本發(fā)明的示范性方面的512-entry,2KB,2-way set-associative Big Data Fetch Buffer(BDFB))。在此示范性方面,對于3.5KB的總的空間消耗,標(biāo)記消耗額外的1.5KB。具體來說,標(biāo)記215包括有效地址205的高23比特和低比特,中間的8比特構(gòu)成行編號210。
此外,為了處理溢出情況,本發(fā)明的示范性方面以軟件維護(hù)散列表(例如,Big Data Table(BDT)),所述散列表映射了溢出的值(例如,近指針)存儲到實(shí)際全字絕對地址上的地址。BDT中的條目稱為大數(shù)據(jù)表?xiàng)l目(BDTE)。
在每次故障時(shí)以軟件查詢散列表將非常慢,并導(dǎo)致性能瘋狂的變化。因此,散列表(例如,BDT)可以與BDFB具有相同邏輯結(jié)構(gòu),該結(jié)構(gòu)被用作BDT條目的硬件加速的高速緩存。
一般而言,通過更新條目、刪除條目,以及通過清空緩沖器來操作BDFB。此外,對于上下文開關(guān),在清空時(shí),在標(biāo)記上包括用戶/管理比特(例如,用戶比特和/或管理比特),以避免在時(shí)鐘報(bào)時(shí)中斷時(shí)的清空。
此外,在本發(fā)明的示范性方面,只有在發(fā)生散列表沖突的情況下,才“轉(zhuǎn)至”軟件。此外,對于指針數(shù)據(jù),最差情況的開銷是2-3倍。
值壓縮指針不是以比較高的概率小于它們的最大值的唯一量。許多種數(shù)據(jù)適合此范例。已經(jīng)提出了許多靜態(tài)技術(shù)來解決此問題,但是有許多靜態(tài)技術(shù)失敗的情況。
本發(fā)明的示范性方面(例如,包括BDFB)用于進(jìn)行值壓縮以及指針壓縮,并用來高效地處理這些情況。具體來說,本發(fā)明用于一般性數(shù)據(jù)壓縮以及專門的應(yīng)用程序,例如,壓縮的Unicode字符串(例如,每個字符使用一個字節(jié))。
例如,圖3-7包括顯示了本發(fā)明中的指令的各種操作的流程圖。一般而言,圖3、5和7顯示了加載和解壓縮指令的操作(例如,從數(shù)據(jù)高速緩存350(例如,在從源寄存器rs330計(jì)算出的有效地址和I-高速緩存340中的指令的偏移部分)到目標(biāo)寄存器rd390),圖4和6顯示了存儲和壓縮指令的操作(例如,從目標(biāo)寄存器rd390到數(shù)據(jù)高速緩存350(例如,在從源寄存器rs330計(jì)算出的有效地址和I-高速緩存340中的指令的偏移部分))。
具體來說,圖3是顯示了BDFB 300用于Load andUncompress Halfword Unsigned(luhu)指令的操作的流程圖(例如,存儲在指令高速緩存(I-高速緩存)340)中。在一種情況下(例如,典型情況),值(例如,存儲在數(shù)據(jù)高速緩存(D-高速緩存)350中)小于最大無符號半字量,該值返回到目標(biāo)寄存器rd390,加零擴(kuò)展。否則,最大無符號值充當(dāng)標(biāo)記360,有效地址305被用作查找BDFB300中的全字值的關(guān)鍵字。
圖4顯示了BDFB用于Store and Compress HalfwordUnsigned(schu)指令的操作的情況。在此情況下,偏移(例如,從I-高速緩存340)添加到源寄存器rs330的內(nèi)容中,以產(chǎn)生有效地址305,并提供給BDFB 300。在源寄存器rs330的值大于或等于最大無符號半字量的情況下(例如,rs>=216-1),值存儲在BDFB 300中,標(biāo)記值360存儲在數(shù)據(jù)高速緩存(D-高速緩存)350中。否則,在源寄存器rs330的值小于最大無符號半字量的情況下(例如,rs<216-1),值存儲在數(shù)據(jù)高速緩存(D-高速緩存)350中。
圖5顯示了BDFB 300用于Load and Uncompress Halfwordsigned(luh)指令的操作的情況。luh指令的操作類似于如圖3所示的luhu指令的操作,如此,參考圖3的大多數(shù)討論也同樣適用于圖5。然而,與圖3的luhu指令不同,對于luh指令的操作,最大負(fù)值充當(dāng)溢出標(biāo)記,而半字是符號擴(kuò)展而不是加零擴(kuò)展。
圖6顯示了BDFB 300用于Store and Compress HalfwordSigned(sch)指令的操作的情況。sch指令的操作類似于如圖4所示的schu指令的操作,如此,參考圖4的大多數(shù)討論也同樣適用于圖6。
然而,與圖4的schu指令不同,對于sch指令的操作,在源寄存器rs330的絕對值大于或等于最大半字量的情況下(例如,|rs|>=215),值存儲在BDFB 300中,標(biāo)記值360存儲在數(shù)據(jù)高速緩存(D-高速緩存)350中。否則,在源寄存器rs 330的絕對值小于最大無符號半字量的情況下(例如,|rs|<215),絕對值存儲在數(shù)據(jù)高速緩存(D-高速緩存)350中。
圖7顯示了BDFB 300用于Load and Uncompress ByteUnsigned(lubu)指令的操作的情況。此操作類似于圖3的luhu指令的操作(如此,參考圖3的大多數(shù)以上的討論這里也同樣適用),只是使用了“字節(jié)”量,而不是“半字”量。
在一種情況下(例如,典型情況),值(例如,存儲在數(shù)據(jù)高速緩存350中)小于最大無符號字節(jié)量(例如,255),該值返回到目標(biāo)寄存器rd390,加零擴(kuò)展。否則,最大無符號字節(jié)量(例如,255)充當(dāng)標(biāo)記360,有效地址305被用作查找BDFB 300中的全字值的關(guān)鍵字。
指針壓縮本發(fā)明的示范性方面(例如,BDFB)也用于降低指針(例如,“近指針”和“遠(yuǎn)指針”)的存儲要求。遠(yuǎn)指針包括絕對全字量,而近指針包括相對半字量。近指針作為帶符號的16比特值存儲,這是相對于存儲器中的它們自己的地址。
傳統(tǒng)上,近指針/遠(yuǎn)指針(例如,近指針和/或遠(yuǎn)指針)系統(tǒng)已經(jīng)由程序員提取,因?yàn)檫@樣的系統(tǒng)需要大量額外的編碼和較低的抽象級別,并常常需要代碼路徑的多個版本。
然而,本發(fā)明的示范性方面使用BDFB提供壓縮的指針表示形式的優(yōu)點(diǎn),而使區(qū)別對于程序透明。具體來說,本發(fā)明以16比特半字以它們的壓縮的相對形式存儲指針。在通常的情況下,預(yù)計(jì)指針適合16比特。事實(shí)上,由于正在加載字指針,已知,結(jié)果指針的兩個低比特將是0,如此,范圍增大到218字節(jié)或±128KB。
有兩種其他情況要么指針是空值,要么它溢出了18比特偏移。空指針通過最大正半字值來表示(不使用0,由于某些算法依賴于能夠使用自我指針),導(dǎo)致目標(biāo)寄存器被設(shè)置為0。
圖8顯示了BDFB 300用于新指令“Pointer提取”或px的情況。一般而言,如果目標(biāo)寄存器rd390包含空值的標(biāo)記值,則清除源寄存器rs330。否則,向源寄存器rs330的內(nèi)容中添加偏移,以產(chǎn)生有效地址305,從所述有效地址加載目標(biāo)寄存器rd的內(nèi)容。將此值添加到目標(biāo)寄存器rd390的內(nèi)容,以將它從相對指針轉(zhuǎn)換為絕對指針。
具體來說,指令px rd,偏移(rs)(例如,從指令高速緩存(例如,I-高速緩存)340)呈現(xiàn)由load and uncompress halfword signed指令(例如,luh指令)加載的值(例如,參見圖5),并將值作為編碼的相對指針。寄存器和偏移參數(shù)應(yīng)該正好與前面的luh指令的相同。
如果加載的值溢出了半字并必須從BDFB 300獲取,則luh指令將設(shè)置溢出(OV)條件碼。如果半字值相當(dāng)于最大正半字整數(shù)(被指針壓縮指令用作空值的標(biāo)記),則它也將設(shè)置相等的(EQ)條件碼。
指針提取指令按如下方式進(jìn)行操作如果OV=1,則它表示目標(biāo)寄存器rd390中的值是從BDFB 300檢索出的全字量,在這種情況下,寄存器rd390保持不變。否則,寄存器rd390包含壓縮的指針,該指針要么是空值,要么是相對指針。
如果設(shè)置了EQ條件碼,那么,寄存器rd390包含空值標(biāo)記值,寄存器rd390被清空。如果沒有設(shè)置EQ條件碼,那么,寄存器rd390包含相對于從其加載它的字對準(zhǔn)的有效地址的字對準(zhǔn)的指針。在該情況下,寄存器rd390被設(shè)置為字對準(zhǔn)的有效地址305和向左偏移兩個比特的寄存器rd390的內(nèi)容的總和。
然而,如果在BDFB 300中沒有發(fā)現(xiàn)值,則生成BDFB Fault(BDFB故障),調(diào)用以前注冊的用戶級別故障處理程序。然后,故障處理程序查詢軟件維護(hù)的BDT中的期望值并更新BDFB 300。
在BDFB 300被更新以包含值之后,處理程序返回控制,并重新執(zhí)行故障指令。由于BDFB 300現(xiàn)在包含期望的值,則指令如上文所描述的那樣正常地完成。
在px中有各種可以提供的指令(例如,“pointer extract”指令)。至少,應(yīng)該提供字節(jié)指針指令,但事實(shí)上,各種粒度的相對指針都有用(例如,雙字、四字、頁面-大小等等)。作為指令編碼中的編譯時(shí)常量,或者通過第三寄存器參數(shù)動態(tài)地提供校準(zhǔn)。
類似地,本發(fā)明的示范性方面為將指針壓縮為字節(jié)寬的量提供支持,或更深入地,如果本發(fā)明包括可變的字節(jié)寬度子字指針,則壓縮為任意大小。
圖9顯示了BDFB 300用于Pointer Compress(pc)指令的操作的情況。一般而言,如果源寄存器rs330是空值,則它被變?yōu)闃?biāo)記值(最大正整數(shù))。否則,寄存器rs330通過減去有效地址305轉(zhuǎn)換為相對指針。
具體來說,Pointer Compress(pc)指令對指針提取指令px執(zhí)行補(bǔ)碼操作(即,pcrs,offset(rd))。如果指針是空值,則存儲空值標(biāo)記值。如果非空的指針被轉(zhuǎn)換為帶符號的偏移,如果指針適合半字,指針存儲在編址存儲器中。否則,在BDT和BDFB 300中創(chuàng)建(或替換)一個條目。
存儲指針使條目被從BDT中刪除(可能是BDFB 300)。因此,這樣的存儲必須服從寫通(write-through)策略。因此,希望非常有效地,可能以硬件實(shí)現(xiàn)BDFB故障處理程序。普通(非沖突)BDT更新就確定地是這種情況。
簡而言之,本發(fā)明包括具有兩組(例如,類)指令的機(jī)器用于對壓縮的數(shù)據(jù)進(jìn)行操作的指令和用于對未壓縮的數(shù)據(jù)進(jìn)行操作的指令(例如,不同于用于對壓縮數(shù)據(jù)進(jìn)行操作的指令)。重要的是,數(shù)據(jù)可以是L1高速緩存(例如,與CPU最近的高速緩存的級別,在與CPU同一個芯片上形成)和CPU之間的壓縮的/未壓縮的(例如,壓縮和/或未壓縮的)數(shù)據(jù)。
此外,用于壓縮和解壓縮的指令包括加載/存儲(例如,加載指令和/或存儲)指令。例如,機(jī)器包括大數(shù)據(jù)獲取緩沖器硬件結(jié)構(gòu)。此外,不同標(biāo)記值(高比特對區(qū)別的值)交換一系列值的帶符號的/無符號的指令(例如,帶符號的指令和/或無符號的指令)。此外,機(jī)器將數(shù)據(jù)從64比特壓縮到32比特、從32比特壓縮到16比特、從32比特壓縮到8比特,以及從16比特壓縮到8比特。
此外,由語言運(yùn)行時(shí)系統(tǒng)基于存儲在特定存儲器位置的值可被壓縮的可能性,作出有關(guān)是否使用壓縮的指令或未壓縮的指令來訪問該位置的數(shù)據(jù)的決定。
除通過使用硬件結(jié)構(gòu)來實(shí)現(xiàn)外,本發(fā)明(例如,機(jī)器)也通過普通指令的序列模擬壓縮的加載/存儲指令用軟件來實(shí)現(xiàn)。即,大數(shù)據(jù)獲取緩沖器可以用軟件(例如,完全用軟件)來實(shí)現(xiàn)。
此外,機(jī)器可以使用主要相對編址來壓縮數(shù)據(jù)。即,大多數(shù)指針值以相對形式存儲(例如,指針-有效地址或P-EA),以不同的形式存儲的一些區(qū)別值的子集除外。具體來說,專門地處理空值(0)和EA的方案允許實(shí)現(xiàn)空值始終是零(0)的期望的屬性。
此外,通過將主要相對編址與大數(shù)據(jù)獲取緩沖器(硬件、軟件、硬件/軟件組合等等)組合,進(jìn)行指針的壓縮。
如圖10所示,本發(fā)明的另一個方面旨在提供一種管理數(shù)據(jù)的方法1000,包括執(zhí)行(100)用于對壓縮數(shù)據(jù)進(jìn)行操作的一組指令(例如,第一指令)以及用于對未壓縮的數(shù)據(jù)進(jìn)行操作的另一組指令(例如,不同于第一指令的第二指令)。該方法進(jìn)一步包括在第一級存儲器高速緩存和處理器之間執(zhí)行壓縮數(shù)據(jù)和解壓縮數(shù)據(jù)(例如,值和指針)中的至少一個操作。
現(xiàn)在請參看圖11,系統(tǒng)1100顯示了用于實(shí)現(xiàn)用于管理數(shù)據(jù)的本發(fā)明的系統(tǒng)和方法的典型的硬件配置。優(yōu)選情況下,配置至少具有一個處理器或中央處理單元(CPU)1111。CPU 1111通過系統(tǒng)總線1112互連到隨機(jī)存取存儲器(RAM)1114、只讀存儲器(ROM)1116、輸入/輸出(I/O)適配器1118(用于將諸如光盤單元1121和磁帶驅(qū)動器1140之類的外圍設(shè)備連接到總線1112),用戶接口適配器1122(用于將鍵盤1124、鼠標(biāo)1126、揚(yáng)聲器1128、麥克風(fēng)1132,和/或其他用戶接口設(shè)備連接到總線1112),通信適配器1134,用于將信息處理系統(tǒng)連接到數(shù)據(jù)處理網(wǎng)絡(luò)、因特網(wǎng)、內(nèi)部網(wǎng)、個人區(qū)域網(wǎng)絡(luò)(PAN)等等,以及顯示適配器1136,用于將總線1112連接到顯示設(shè)備1138和/或打印機(jī)1139。此外,還包括自動化讀取器/掃描儀1141。這樣的讀取器/掃描儀從許多地方買到。
除了上文所描述的系統(tǒng)之外,本發(fā)明的不同方面包括用于執(zhí)行以上所述的方法的計(jì)算機(jī)實(shí)現(xiàn)的方法。作為示例,此方法以上文所討論的特定環(huán)境中。
這樣的方法通過對計(jì)算機(jī)進(jìn)行操作來實(shí)現(xiàn),計(jì)算機(jī)作為數(shù)字?jǐn)?shù)據(jù)處理設(shè)備來實(shí)現(xiàn),以執(zhí)行機(jī)器可讀指令的序列。這些指令駐留在各種信號承載介質(zhì)中。
如此,本發(fā)明的此方面旨在提供編程產(chǎn)品,包括信號承載介質(zhì),可觸摸地實(shí)現(xiàn)可由數(shù)字?jǐn)?shù)據(jù)處理器執(zhí)行的機(jī)器可讀指令的程序,以執(zhí)行以上所述的方法。
這樣的方法通過運(yùn)轉(zhuǎn)CPU 1111以執(zhí)行機(jī)器可讀指令的序列來實(shí)現(xiàn)。這些指令駐留在各種信號承載介質(zhì)中。
如此,本發(fā)明的此方面旨在提供編程產(chǎn)品,包括信號承載介質(zhì),可觸摸地實(shí)現(xiàn)可由數(shù)字?jǐn)?shù)據(jù)處理器(包括CPU 1111和上述硬件)執(zhí)行的機(jī)器可讀指令的程序,以執(zhí)行本發(fā)明的方法。
此信號承載介質(zhì)包括,例如,CPU 1111內(nèi)包含的RAM,以快速訪問存儲器代表?;蛘撸噶畎诹硪环N信號承載介質(zhì)中,如可由CPU 1111直接或間接地訪問的磁性數(shù)據(jù)存儲磁盤1200(圖12)。
無論是包含在計(jì)算機(jī)服務(wù)器/CPU 1111中,還是在別處,指令都存儲在各種機(jī)器可讀數(shù)據(jù)存儲介質(zhì)中,如DASD存儲器(例如,常規(guī)的“硬盤驅(qū)動器”或RAID陣列)、磁帶、電子只讀存儲器(例如,ROM、EPROM或EEPROM)、光存儲設(shè)備(例如,CD-ROM、WORM、DVD、數(shù)字光帶等等)、紙張“沖孔”卡,或其他合適的信號承載介質(zhì),包括傳輸介質(zhì),如數(shù)字和模擬和通信鏈路和無線方式。在本發(fā)明的說明性實(shí)施例中,機(jī)器可讀指令包括從諸如Java、“C”等等之類的語言編譯的軟件目標(biāo)代碼。
利用其獨(dú)特和新穎的特點(diǎn),本發(fā)明的示范性方面提供了管理數(shù)據(jù)的系統(tǒng)和方法,不僅增大RAM的有效大小,而且也增大D-高速緩存的有效大小,顯著地改善了性能。
盡管是通過一個或多個實(shí)施例來對本發(fā)明進(jìn)行描述的,但是,那些本領(lǐng)域技術(shù)人員將認(rèn)識到,可以在所附的權(quán)利要求的精神和范圍內(nèi),對本發(fā)明進(jìn)行修改。具體來說,那些本領(lǐng)域普通技術(shù)人員將理解,這里的附圖只是說明性的,本發(fā)明的組件的設(shè)計(jì)不僅限于這里所說明的情況,而且,在本發(fā)明的精神和范圍內(nèi),也可以進(jìn)行修改。
此外,還應(yīng)該理解,這里所使用的術(shù)語“數(shù)據(jù)”應(yīng)該解釋為包括值和指針中的至少一個,但是,不僅限于此。此外,還應(yīng)該理解,這里所使用的術(shù)語“管理數(shù)據(jù)”應(yīng)該解釋為包括存儲數(shù)據(jù)、加載數(shù)據(jù)、壓縮數(shù)據(jù)、解壓縮數(shù)據(jù)中的至少一個,但是,不僅限于此。
此外,申請人的意圖是包含所有權(quán)利要求元素的等效內(nèi)容,對本申請中的任何權(quán)利要求的修改不應(yīng)該被理解為放棄對修改的權(quán)利要求的任何元素或特點(diǎn)的等效內(nèi)容的任何興趣或權(quán)利。
權(quán)利要求
1.一種用于管理數(shù)據(jù)的系統(tǒng),包括處理器,該處理器執(zhí)行用于對壓縮數(shù)據(jù)進(jìn)行操作的一組指令和用于對未壓縮的數(shù)據(jù)進(jìn)行操作的另一組指令。
2.根據(jù)權(quán)利要求1所述的系統(tǒng),其中,所述另一組指令不同于所述一組指令。
3.根據(jù)權(quán)利要求1所述的系統(tǒng),其中,所述一組指令和所述另一指令組包括加載指令和存儲指令。
4.根據(jù)權(quán)利要求1所述的系統(tǒng),進(jìn)一步包括與所述處理器相鄰形成的第一級存儲器高速緩存;以及在所述第一級存儲器高速緩存和所述處理器之間形成的用于執(zhí)行壓縮數(shù)據(jù)和解壓縮數(shù)據(jù)中的至少一個操作的模塊。
5.根據(jù)權(quán)利要求4所述的系統(tǒng),其中,所述模塊包括軟件模塊,所述軟件模塊包括數(shù)據(jù)獲取緩沖器。
6.根據(jù)權(quán)利要求4所述的系統(tǒng),其中,所述模塊存儲了不同標(biāo)記值,這些標(biāo)記值交換一系列值的帶符號的和無符號的指令。
7.根據(jù)權(quán)利要求4所述的系統(tǒng),其中,所述模塊將數(shù)據(jù)從64比特壓縮到32比特、從32比特壓縮到16比特、從32比特壓縮到8比特,以及從16比特壓縮到8比特。
8.根據(jù)權(quán)利要求1所述的系統(tǒng),其中,由語言運(yùn)行時(shí)系統(tǒng)基于存儲在特定存儲器位置的值可被壓縮的可能性,作出有關(guān)是使用所述一組指令還是所述另一指令組來訪問所述特定存儲器位置的數(shù)據(jù)的決定。
9.根據(jù)權(quán)利要求1所述的系統(tǒng),進(jìn)一步包括用于執(zhí)行指令的軟件模塊,這些指令通過普通指令的序列模擬壓縮的加載指令和壓縮的存儲指令。
10.根據(jù)權(quán)利要求9所述的系統(tǒng),其中,所述軟件模塊使用主要相對編址來壓縮數(shù)據(jù),以便大多數(shù)指針值以相對形式存儲,以不同的形式存儲的一些區(qū)別值的子集除外。
11.根據(jù)權(quán)利要求9所述的系統(tǒng),其中,所述數(shù)據(jù)包括指針,所述軟件模塊與主要相對編址組合起來,以壓縮所述指針。
12.一種集成電路設(shè)備,包括中央處理單元(CPU),所述中央處理單元執(zhí)行用于對壓縮數(shù)據(jù)進(jìn)行操作的一組指令和用于對未壓縮的數(shù)據(jù)進(jìn)行操作的另一組指令;與所述CPU相鄰形成的存儲器高速緩存;以及在所述CPU和所述存儲器高速緩存之間形成的緩沖器。
13.根據(jù)權(quán)利要求12所述的設(shè)備,其中,所述緩沖器在用戶模式程序控制下操作,以壓縮值和指針。
14.根據(jù)權(quán)利要求12所述的設(shè)備,其中,所述緩沖器包括硬件散列表加速器,所述加速器通過有效地址進(jìn)行索引,并以特殊指令擴(kuò)增,以支持值壓縮。
15.根據(jù)權(quán)利要求12所述的設(shè)備,進(jìn)一步包括編程語言的軟件虛擬機(jī),所述虛擬機(jī)基于值可被壓縮的可能性使用所述緩沖器。
16.根據(jù)權(quán)利要求12所述的設(shè)備,其中,所述緩沖器包括固定大小設(shè)置關(guān)聯(lián)的緩沖器。
17.根據(jù)權(quán)利要求12所述的設(shè)備,其中,所述緩沖器包括特殊用途的用戶可讀和可寫入的高速緩存,所述高速緩存包括通過存儲器地址索引的全字值。
18.根據(jù)權(quán)利要求12所述的設(shè)備,其中,當(dāng)給所述緩沖器提供了地址時(shí),所述緩沖器將所述地址分解為索引一組值的行編號,以及標(biāo)記,所述標(biāo)記用于標(biāo)識所述組的和與所述地址關(guān)聯(lián)的值匹配的成員,以及其中,如果所述標(biāo)記匹配所述組的成員,則返回所述緩沖器中的關(guān)聯(lián)的全字值,并存儲在始發(fā)指令的目標(biāo)寄存器中,如果所述標(biāo)記與所述組的成員不匹配,則生成緩沖器故障,控制到預(yù)先定義的處理程序的分支。
19.根據(jù)權(quán)利要求12所述的設(shè)備,其中,當(dāng)發(fā)生溢出時(shí),所述緩沖器查詢軟件散列表,所述散列表與所述緩沖器具有相同邏輯結(jié)構(gòu),并映射將溢出的近指針存儲到實(shí)際全字絕對地址的地址。
20.根據(jù)權(quán)利要求12所述的設(shè)備,其中,所述數(shù)據(jù)包括值、近指針和遠(yuǎn)指針。
21.根據(jù)權(quán)利要求12所述的設(shè)備,其中,所述一組指令包括Load and Uncompress Halfword Unsigned(luhu)指令,所述指令由所述CPU執(zhí)行,以執(zhí)行操作,其中,如果值小于最大無符號半字量,則所述值返回到目標(biāo)寄存器,加零擴(kuò)展,如果值不小于所述最大無符號半字量,則最大無符號值充當(dāng)標(biāo)記,使用有效地址查找所述緩沖器中的全字值。
22.根據(jù)權(quán)利要求12所述的設(shè)備,其中,所述一組指令包括指針提取指令,所述指令由所述CPU執(zhí)行,以執(zhí)行操作,其中,如果溢出(OV)條件是1,則目標(biāo)寄存器中的值包括從所述緩沖器中檢索的全字量,所述目標(biāo)寄存器保持不變,如果所述溢出(OV)條件是1之外的值,則所述目標(biāo)寄存器包括壓縮的指針。
23.根據(jù)權(quán)利要求12所述的設(shè)備,其中,所述一組指令包括Store and Compress Halfword Unsigned(schu)指令。
24.根據(jù)權(quán)利要求12所述的設(shè)備,其中,所述一組指令包括Load and Uncompress Halfword Signed(luh)指令,所述指令由所述CPU執(zhí)行,以執(zhí)行操作,其中,最大負(fù)值充當(dāng)溢出標(biāo)記,而所述半字是符號擴(kuò)展。
25.根據(jù)權(quán)利要求12所述的設(shè)備,其中,所述一組指令包括Store and Compress Halfword Signed(sch)指令。
26.根據(jù)權(quán)利要求12所述的設(shè)備,其中,所述一組指令包括Load and Uncompress Byte Unsigned(lubu)指令,所述指令由所述CPU執(zhí)行,以執(zhí)行操作,其中,如果值小于最大無符號字節(jié)量,則所述值返回到目標(biāo)寄存器,加零擴(kuò)展,如果值不小于最大無符號字節(jié)量,則使用有效地址作為查找所述緩沖器中的全字值的關(guān)鍵字。
27.根據(jù)權(quán)利要求12所述的設(shè)備,其中,如果指針是空值,則存儲空值標(biāo)記值,以及其中,如果所述指針是非空的,則指針轉(zhuǎn)換為帶符號的偏移,如果所述指針適合半字,則所述指針存儲在編址存儲器中,如果所述指針不適合半字,則在緩沖器中創(chuàng)建或替換一個條目。
28.根據(jù)權(quán)利要求12所述的設(shè)備,其中,所述一組指令包括Pointer Extract指令,所述指令由所述CPU執(zhí)行,以執(zhí)行操作,其中,如果目標(biāo)寄存器rd包含空值的標(biāo)記值,所述寄存器rd被清除,如果所述目標(biāo)寄存器rd不包含空值的標(biāo)記值,則向源寄存器rs的內(nèi)容中添加偏移,以產(chǎn)生有效地址,從所述有效地址加載所述寄存器rd的內(nèi)容。
29.根據(jù)權(quán)利要求12所述的設(shè)備,其中,所述一組指令包括指針壓縮指令,所述指令由所述CPU執(zhí)行,以執(zhí)行操作,其中,如果源寄存器rs是空值,則指針變?yōu)闃?biāo)記值,如果所述源寄存器rs不是空值,則所述寄存器rs通過減去有效地址轉(zhuǎn)換為相對指針。
30.一種用于管理數(shù)據(jù)的方法,包括執(zhí)行用于對壓縮數(shù)據(jù)進(jìn)行操作的一組指令和用于對未壓縮的數(shù)據(jù)進(jìn)行操作的另一組指令。
31.一種可編程存儲器介質(zhì),用于可觸摸地實(shí)現(xiàn)可由數(shù)字處理設(shè)備執(zhí)行的機(jī)器可讀指令的程序,以執(zhí)行管理數(shù)據(jù)的方法,所述方法包括執(zhí)行用于對壓縮數(shù)據(jù)進(jìn)行操作的一組指令和用于對未壓縮的數(shù)據(jù)進(jìn)行操作的另一組指令。
32.一種用于部署其中計(jì)算機(jī)可讀代碼被集成到計(jì)算系統(tǒng)中的計(jì)算基礎(chǔ)架構(gòu)的方法,以便所述代碼和所述計(jì)算系統(tǒng)組合起來,以執(zhí)行管理數(shù)據(jù)的方法,所述用于管理數(shù)據(jù)的方法包括執(zhí)行用于對壓縮數(shù)據(jù)進(jìn)行操作的一組指令和用于對未壓縮的數(shù)據(jù)進(jìn)行操作的另一組指令。
33.一種用于管理數(shù)據(jù)的系統(tǒng),包括用于執(zhí)行用于對壓縮數(shù)據(jù)進(jìn)行操作的一組指令的裝置;以及用于執(zhí)行用于對未壓縮的數(shù)據(jù)進(jìn)行操作的另一組指令的裝置。
全文摘要
用于管理數(shù)據(jù)的系統(tǒng)和方法包括執(zhí)行用于對壓縮數(shù)據(jù)進(jìn)行操作的一組指令和用于對未壓縮的數(shù)據(jù)進(jìn)行操作的另一組指令(例如,不同的指令)。
文檔編號G06F9/318GK101040254SQ200580035424
公開日2007年9月19日 申請日期2005年10月27日 優(yōu)先權(quán)日2004年11月16日
發(fā)明者大衛(wèi)·F·培根, 佩里·程, 大衛(wèi)·P·格洛沃 申請人:國際商業(yè)機(jī)器公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1