專利名稱:排序數(shù)組元素以優(yōu)化數(shù)組修改的計(jì)算機(jī)系統(tǒng)及方法
技術(shù)領(lǐng)域:
本發(fā)明總的來說涉及計(jì)算機(jī)與數(shù)據(jù)處理系統(tǒng)中實(shí)現(xiàn)的數(shù)組數(shù)據(jù)結(jié)構(gòu),特別是涉及在諸如存儲(chǔ)器壓縮的應(yīng)用中對(duì)數(shù)據(jù)結(jié)構(gòu)的操作。
數(shù)組是一種常見的數(shù)據(jù)結(jié)構(gòu),在計(jì)算機(jī)或其它數(shù)據(jù)處理系統(tǒng)中用來存儲(chǔ)數(shù)據(jù)。在數(shù)組數(shù)據(jù)結(jié)構(gòu)中通常把多個(gè)數(shù)組元素放到一個(gè)列表中,通過一個(gè)唯一的索引訪問每個(gè)數(shù)組元素。例如,許多計(jì)算機(jī)存儲(chǔ)器系統(tǒng)都以數(shù)組來管理,各個(gè)存儲(chǔ)器單元或一組存儲(chǔ)器單元都可被作為數(shù)組元素,每一元素都有對(duì)之索引的唯一的一個(gè)存儲(chǔ)器地址。
使用數(shù)組數(shù)據(jù)結(jié)構(gòu)的最主要的優(yōu)點(diǎn)是它能隨機(jī)訪問,比如能通過指向元素的指針或索引快速訪問每一元素。但其缺點(diǎn)是很難有一種高效的方法對(duì)改變整個(gè)數(shù)組大小的修改進(jìn)行處理。特別是人們希望能對(duì)任一數(shù)據(jù)結(jié)構(gòu)進(jìn)行緊致存放,只利用所必須的存儲(chǔ)器空間。所以,一旦數(shù)組被修改,如刪除或增加元素,或者是對(duì)支持可變大小的數(shù)組元素的數(shù)組進(jìn)行修改,改變?cè)氐拇笮?,跟在被修改元素后的每一個(gè)元素通常也要修改或移動(dòng)其在內(nèi)存的位置。但是移動(dòng)數(shù)組元素是一個(gè)費(fèi)時(shí)的內(nèi)存?zhèn)鬏敳僮鳎瑥亩档痛鎯?chǔ)器系統(tǒng)的效率。
另外,每一個(gè)數(shù)組元素可以用未使用過的存儲(chǔ)單元來“填充”,因此可以在不影響數(shù)組中隨后元素的起始元素地址的情況下,允許元素“變大”或“縮小”。但是這種技術(shù)會(huì)由于數(shù)組中存在尚未使用的存儲(chǔ)器而極其浪費(fèi)。而且這種技術(shù)既無法適應(yīng)數(shù)組元素的刪除與增加,也無法對(duì)溢出了可用填充的較大的數(shù)組元素進(jìn)行修改。
數(shù)組一個(gè)重要的應(yīng)用是存儲(chǔ)器壓縮,這種應(yīng)用需要高存儲(chǔ)密度及快速的存儲(chǔ)器傳送操作。在一些存儲(chǔ)器壓縮應(yīng)用中,數(shù)據(jù)頁被安排成塊的數(shù)組,然后把塊壓縮成幀,以減少內(nèi)存占用量,在對(duì)壓縮的數(shù)據(jù)進(jìn)行修改后,再次對(duì)它們進(jìn)行壓縮。不論幀中的數(shù)據(jù)何時(shí)被修改,幀必須重新壓縮,這通常改變了幀大小及/或幀中存儲(chǔ)的信息量。該頁中跟在重新壓縮的幀之后的每一幀也通常被更新,例如移動(dòng)或重壓縮,從而優(yōu)化該頁的壓縮。當(dāng)存儲(chǔ)在靠近一頁的開始的幀中的數(shù)據(jù)被修改時(shí),通常該頁中絕大部分或所有幀都被更新,這對(duì)該存儲(chǔ)器系統(tǒng)中的總的性能有很顯著的影響。
因此減小修改數(shù)組中的元素所引起的性能降低是一個(gè)實(shí)際的問題,特別是在存儲(chǔ)器壓縮或其它類似應(yīng)用中。
本發(fā)明解決現(xiàn)有技術(shù)中在提供維護(hù)數(shù)組的方式方面有關(guān)的這些以及其它問題,該數(shù)組通常由一種排序算法對(duì)其元素進(jìn)行排序,該算法至少部分依賴于那些元素有可能被修改的所預(yù)測(cè)的頻率。具有較高修改頻率的數(shù)組元素放在靠近數(shù)組尾部的地方,以便響應(yīng)對(duì)這些元素的修改將通常需要更新的數(shù)組元素?cái)?shù)減至最小。對(duì)于那些具有較小修改可能性的數(shù)組元素,保留了需要更新較多數(shù)組元素的數(shù)組元素修改。這樣,響應(yīng)任一數(shù)組元素的修改需要更新的數(shù)組元素的平均數(shù)目,對(duì)于該數(shù)組在整體上減少了,從而減少了數(shù)組修改的整體性能影響。
本發(fā)明還不限于此,它的一個(gè)特殊的有益的應(yīng)用是在存儲(chǔ)器壓縮領(lǐng)域,這是因?yàn)猷徑鼉?nèi)存邏輯頁開始位置的數(shù)據(jù)要比鄰近該頁末端位置的數(shù)據(jù)改變得頻繁。對(duì)于一個(gè)給定頁將數(shù)據(jù)塊以倒序排列,無論一個(gè)數(shù)據(jù)塊何時(shí)被修改,必須要被更新的塊的平均數(shù)減至最小。
突出本發(fā)明特征的這些以及其它優(yōu)點(diǎn)與特點(diǎn)在隨后的提出,并作為其中的一部分。但為了更好地理解本發(fā)明及其通過其應(yīng)用所帶來的優(yōu)點(diǎn)及其特色,將參照附圖及說明來描述本發(fā)明,其中描述了本發(fā)明的實(shí)施例。
圖1為描述一個(gè)數(shù)組中對(duì)元素進(jìn)行各種修改時(shí)的框圖。
圖2為一個(gè)計(jì)算機(jī)系統(tǒng)的框圖,它與本發(fā)明的原則相一致。
圖3是圖2中計(jì)算機(jī)系統(tǒng)的內(nèi)存映象框圖。
圖4是描述圖2計(jì)算機(jī)系統(tǒng)的內(nèi)存邏輯頁的框圖。
圖5是描述圖1中計(jì)算機(jī)系統(tǒng)的一個(gè)建立表的項(xiàng)與一個(gè)邏輯塊數(shù)組之間的映射框圖。
圖6是顯示對(duì)圖5中邏輯塊數(shù)組進(jìn)行了一種示例的數(shù)據(jù)修改后所得的結(jié)果的框圖。
本發(fā)明示意性實(shí)施例通常是通過對(duì)數(shù)值元素進(jìn)行排序來操作的,這種排序是根據(jù)預(yù)測(cè)的數(shù)組元素被修改的有關(guān)頻率進(jìn)行的,它允許修改數(shù)組元素,這種修改影響到數(shù)組尾部的后續(xù)元素,從而減少了由于修改數(shù)組中的任一給定元素而影響到的數(shù)組元素的平均數(shù)。特別是最好經(jīng)常維護(hù)在連續(xù)內(nèi)存空間的數(shù)組元素,在元素之間很少或幾乎沒有未使用的空間。從而減小數(shù)組占用的存儲(chǔ)量。應(yīng)該可以理解,一個(gè)數(shù)組的連續(xù)存儲(chǔ)空間在一定程度上可以是非連續(xù)的,即邏輯存儲(chǔ)位置可以被映射到固定大小的分區(qū)上,比如在隨后結(jié)合所示意的實(shí)施例所討論的壓縮數(shù)據(jù)分區(qū)所示出的。
對(duì)可以影響隨后數(shù)組元素的數(shù)組元素修改操作一般包括刪除數(shù)組元素及增加新的數(shù)組元素。而且,對(duì)于支持可變長(zhǎng)數(shù)組元素的數(shù)組來說,另一種修改操作還包括改變數(shù)組元素的大小。
例如在圖1中,一個(gè)數(shù)組5有元素A-F,它們存儲(chǔ)在連續(xù)的存儲(chǔ)空間中。如果比如從該數(shù)組中刪除元素C,該數(shù)組的后續(xù)元素D-F必須向左移動(dòng)或移位,或在內(nèi)存中“向下移動(dòng)”,從而能保持存儲(chǔ)空間連續(xù)。如數(shù)組5′所示。比如如果增加元素C的大小,元素D-F必須向右移動(dòng)或移位,或在內(nèi)存中“向上移動(dòng)”,從而保證元素C不會(huì)溢出到元素D中。如數(shù)組5″所示。同樣的,如果在元素C后增加一個(gè)新元素G,元素D-F必須向右移動(dòng)或移位,以便騰出空間給新元素。如數(shù)組5″′所示。
本發(fā)明的示意性實(shí)施例能根據(jù)修改的增加頻率使用靜態(tài)或動(dòng)態(tài)排序算法安排數(shù)組元素。靜態(tài)排序算法通常被硬編碼進(jìn)數(shù)組處理程序代碼中,因此可以以與所選定的排序算法相一致的一種預(yù)定方式存儲(chǔ)或修改數(shù)組元素。當(dāng)使用一種靜態(tài)算法時(shí),數(shù)組元素的修改頻率將通過一種已知的關(guān)系或?qū)嶒?yàn)測(cè)試決定。
另一方面,動(dòng)態(tài)排序算法在數(shù)組操作過程中不僅要確定一種可行的排序算法,還要實(shí)現(xiàn)這種算法。比如,在數(shù)據(jù)庫(kù)系統(tǒng)中,一個(gè)或多個(gè)數(shù)據(jù)庫(kù)中記錄的修改歷史被實(shí)時(shí)監(jiān)視,從而允許對(duì)影響記錄的未來操作的各種記錄或記錄類型進(jìn)行衡量,或者作為例行維護(hù)函數(shù),有可能允許記錄在內(nèi)存中重排序。
在下面討論的實(shí)施例中,數(shù)組元素表示為壓縮數(shù)據(jù)塊,這些數(shù)據(jù)塊排列成表示為內(nèi)存邏輯頁的一個(gè)列表或數(shù)組形式??梢杂糜谶@一方面的一個(gè)可行的計(jì)算機(jī)系統(tǒng)在Hovis等人申請(qǐng)的美國(guó)專利申請(qǐng)(專利申請(qǐng)?zhí)枮镾/N 08/324,050,1994年10月17日提交)中公開,作為參考結(jié)合在本申請(qǐng)中。還可以選擇使用其它的計(jì)算機(jī)與存儲(chǔ)器系統(tǒng),以及與其共同使用的其它存儲(chǔ)器管理控制器與壓縮引擎(compression engine)等。
在許多計(jì)算機(jī)系統(tǒng)(包括上述所提的系統(tǒng))中已發(fā)現(xiàn),靠近內(nèi)存邏輯頁開頭的數(shù)據(jù)要比靠近邏輯頁末尾的數(shù)據(jù)更可能被修改。比如,在一些使用4KB邏輯頁的內(nèi)存系統(tǒng)中已發(fā)現(xiàn)第1個(gè)KB,即最開頭的2個(gè)512字節(jié)的邏輯塊的修改頻率大約是最后一個(gè)KB的修改頻率的2倍。這有可能發(fā)生,因?yàn)楸热鐑?nèi)存分配操作不需要整頁內(nèi)存,或需要多頁內(nèi)存但在頁中間結(jié)束,通常在一頁的開頭開始分配內(nèi)存。
在下面討論的實(shí)施例中,邏輯頁安排成邏輯塊數(shù)組,該數(shù)組在內(nèi)存中使用內(nèi)存壓縮算法以壓縮格式存儲(chǔ),壓縮算法將邏輯塊壓縮成多個(gè)固定大小的幀,如512字節(jié)。無論塊中的數(shù)據(jù)何時(shí)被修改,通常是由于從高速緩存的回寫操作,包含該塊的幀會(huì)被更新,如重新壓縮。而且,如果在任一幀中塊的大小的改變超過所允許的填充,具有被修改的塊的幀之后至少有一幀通常是全部幀,也要被更新。在另一實(shí)施例中,幀可有可變的大小,由此隨后的幀有可能不需要再壓縮,但有可能只需要根據(jù)幀大小的修改而移動(dòng)。
在下面討論的實(shí)施例中,使用靜態(tài)排序算法,它把邏輯頁中數(shù)據(jù)的邏輯塊以倒序排列。因此把最后的邏輯塊放在數(shù)組開頭,第一個(gè)邏輯塊放在最后。所以,相對(duì)于具有較少修改頻率的一頁中的最后一個(gè)邏輯塊中的數(shù)據(jù),第一個(gè)邏輯塊中有較高修改頻率的數(shù)據(jù)修改要求較少或不需再壓縮或移動(dòng)隨后的幀。通常這會(huì)導(dǎo)致每一數(shù)據(jù)操作后被修改幀的平均數(shù)為較低,而且提高了總體性能。
因此,數(shù)據(jù)邏輯塊通常與所示實(shí)施例的數(shù)組元素很相似。但是可以理解元素尤其能表示具有任何固定的或可變的大小的任何類型的內(nèi)存塊或段。
還要理解,盡管隨后的討論是針對(duì)內(nèi)存壓縮應(yīng)用中壓縮數(shù)據(jù)的安排,本發(fā)明還不限于這個(gè)特定的應(yīng)用。例如可以類似地用于其它計(jì)算機(jī)與數(shù)據(jù)處理應(yīng)用中其它數(shù)據(jù)形式的數(shù)組操作。
現(xiàn)在回到附圖中,在整個(gè)描述中相同的部件用相同的數(shù)字表示,圖2示出了與本發(fā)明的原則相一致的計(jì)算機(jī)系統(tǒng)。代表許多數(shù)據(jù)處理系統(tǒng)的計(jì)算機(jī)系統(tǒng)10通常包括耦合到存儲(chǔ)器系統(tǒng)30的一個(gè)或多個(gè)處理單元20。計(jì)算機(jī)系統(tǒng)10的其它部件,如用戶輸入設(shè)備、通訊設(shè)備、信息顯示設(shè)備等都與本發(fā)明的理解無關(guān),在此不單獨(dú)說明了。
存儲(chǔ)器系統(tǒng)30通常包括連接在處理單元20與系統(tǒng)存儲(chǔ)器40之間的存儲(chǔ)器控制器32。存儲(chǔ)器控制器使用高速緩存目錄33,確定當(dāng)前什么數(shù)據(jù)被高速緩存在系統(tǒng)中。壓縮引擎34依賴于幀表35,該引擎與存儲(chǔ)器管理器32連結(jié),處理系統(tǒng)存儲(chǔ)器40中的數(shù)據(jù)壓縮。
如圖3所示,系統(tǒng)存儲(chǔ)器40被分割成一組內(nèi)存區(qū),包含非壓縮高速緩存42、壓縮數(shù)據(jù)區(qū)44、非壓縮數(shù)據(jù)區(qū)47與建立表48??煽吹竭@些內(nèi)存區(qū)可由相同的或不同的內(nèi)存硬件部件實(shí)現(xiàn)。邏輯存儲(chǔ)體以壓縮格式在壓縮數(shù)據(jù)區(qū)44中維護(hù)。系統(tǒng)中許多存儲(chǔ)器操作都在高速緩存42中完成,并且42能維護(hù)區(qū)44中被選定頁的非壓縮的備份,以優(yōu)化內(nèi)存性能。典型較小的非壓縮區(qū)47是可選的,以用于額外的存儲(chǔ)目的。
圖4中主存儲(chǔ)器被組織成邏輯頁,如邏輯頁45,包含多個(gè)邏輯塊,如邏輯塊A-H。比如在該示意性實(shí)施例中,使用4KB邏輯頁,每一頁有8個(gè)512字節(jié)的邏輯塊。這時(shí)邏輯頁包含一個(gè)具有固定大小的多個(gè)幀的鏈,如圖3中的幀46,然后以壓縮格式存儲(chǔ)。
壓縮數(shù)據(jù)區(qū)中存儲(chǔ)的每一邏輯頁通過使用建立表48中的項(xiàng)而被訪問,即建立表項(xiàng)49,它有n+1個(gè)指針,n是該頁中邏輯塊數(shù)。如圖5中所示,項(xiàng)49包含9個(gè)指針,指針0-8。第一個(gè)指針,指針0包含40位,因此能提供1兆兆字節(jié)的地址空間。其余指針有32位,利用第1個(gè)指針的高位字節(jié),從而它們指向存儲(chǔ)器中同一4千兆字節(jié)的內(nèi)存段。比如通過在512字節(jié)的邊界上對(duì)齊幀,以及對(duì)指向幀的開始的塊的指針的低10位進(jìn)行屏蔽,可以獲得邏輯塊中間開始的幀的起始地址,其它大小指針可用來尋址其它地址空間以及頁/塊大小。
與本發(fā)明相一致,邏輯頁45中的邏輯塊A-H以倒序鏈接,第一個(gè)指針指向邏輯塊H,隨后的每一個(gè)指針指向每一個(gè)前繼邏輯塊的開始。最后一個(gè)指針,指針8指向邏輯塊A的尾部。
所示的邏輯塊壓縮成固定大小的幀46a-46f。可理解,實(shí)際存儲(chǔ)邏輯頁的幀數(shù)目非常依賴于所使用的壓縮算法對(duì)該頁的數(shù)據(jù)的壓縮程度。
存儲(chǔ)器系統(tǒng)元素的操作與前面提到的Hovis等人的申請(qǐng)相似。典型地,大部分內(nèi)存訪問是對(duì)高速緩存的存儲(chǔ)器進(jìn)行的。無論何時(shí)對(duì)存儲(chǔ)在高速緩存中的單元進(jìn)行存儲(chǔ)器訪問,就訪問建立表48,從區(qū)44獲取壓縮數(shù)據(jù),然后解壓并存儲(chǔ)這些數(shù)據(jù)到高速緩存中。但如果該高速緩存已“滿”;“老”數(shù)據(jù)必須首先從高速緩存中移出,以便有空間給最近訪問的數(shù)據(jù)。老數(shù)據(jù)則由一個(gè)壓縮引擎處理,以再壓縮并存回到區(qū)44中。
使用部分重壓縮算法能減少在將數(shù)據(jù)存儲(chǔ)到區(qū)44之前對(duì)該數(shù)據(jù)再壓縮所需要的處理量,因此只對(duì)存儲(chǔ)該邏輯塊(其在高速緩存中被更新)的幀以及鏈中隨后的幀進(jìn)行再壓縮??墒褂眠@類不同的壓縮算法。另外,通過以在這里討論方式對(duì)邏輯塊進(jìn)行排序,通常減少響應(yīng)高速緩存回寫操作進(jìn)行重新壓縮的幀的數(shù)量。
例如,在圖5中的示意性實(shí)施例中,假設(shè)修改塊A與塊B的頻率是修改塊G和H的頻率的兩倍,相對(duì)于對(duì)塊G與H的修改則需要再壓縮6幀,即幀46a-46f而言,對(duì)塊A和塊B更頻繁的修改只需要對(duì)3幀重壓縮,即幀46d-46f。圖6說明了更新邏輯塊B中的數(shù)據(jù)所導(dǎo)致的邏輯頁45重壓縮的結(jié)果。重壓縮后,由于較高的壓縮率,可以看到邏輯塊B占據(jù)較小的內(nèi)存空間。更新后,只有三幀,即幀46d′-46f′被重壓縮。
可以看到,各種應(yīng)用程序以及實(shí)現(xiàn)本發(fā)明各種實(shí)施例的計(jì)算機(jī)程序可以在不同時(shí)間駐留在一個(gè)或多個(gè)程序存貯設(shè)備中,這些設(shè)備包括能夠以一種揮發(fā)或非揮發(fā)方式存儲(chǔ)諸如數(shù)據(jù)或程序代碼的信息的設(shè)備或裝置。相應(yīng)地,程序存儲(chǔ)設(shè)備可包括內(nèi)存設(shè)備,如RAM,ROM,EPROM、處理器及高速緩沖內(nèi)存、快速內(nèi)存、定制集成電路等,以及固定的或可拆卸大容量存儲(chǔ)介質(zhì),如固定的或可拆卸磁盤,CD-ROM、磁帶等。另外可理解,各種應(yīng)用、程序及計(jì)算機(jī)過程,總的稱之為“程序產(chǎn)品”,可通過網(wǎng)絡(luò)或調(diào)制解調(diào)器轉(zhuǎn)輸或下載到計(jì)算機(jī)系統(tǒng)上,代替了軟盤或CD-ROM這樣的存儲(chǔ)介質(zhì),通常這要首先在計(jì)算機(jī)系統(tǒng)與服務(wù)器型計(jì)算機(jī)之間建立連接,然后傳輸程序產(chǎn)品到計(jì)算機(jī)系統(tǒng)上。因此,應(yīng)當(dāng)理解,程序存儲(chǔ)設(shè)備還可以包括服務(wù)器類計(jì)算機(jī)上的任一種所述存儲(chǔ)器與存儲(chǔ)介質(zhì),如公告板(bulletin board)或文件傳輸服務(wù)(ftp)站點(diǎn),它們下載或傳輸程序產(chǎn)品到其它計(jì)算機(jī)系統(tǒng)上,但實(shí)際上并不執(zhí)行下載或傳輸?shù)某绦虍a(chǎn)品。
對(duì)所示意性實(shí)施例說明的各種修改并沒有脫離本發(fā)明的精神與范圍。因此本發(fā)明僅依從于所附的權(quán)利要求書。
權(quán)利要求
1.一個(gè)在一個(gè)計(jì)算機(jī)系統(tǒng)中存儲(chǔ)數(shù)據(jù)的方法,該系統(tǒng)的存儲(chǔ)器被分割成多個(gè)頁,每頁包括以多個(gè)塊存儲(chǔ)的數(shù)據(jù),該方法包括以下步驟(a)以壓縮格式將數(shù)據(jù)存儲(chǔ)到該存儲(chǔ)器中,并且每頁中的塊以倒序排列;(b)修改存儲(chǔ)器中在選定頁中選定塊中存儲(chǔ)的數(shù)據(jù),包括更新該選定塊,以及如果有的話,更新該選定頁中隨后排列的至少一個(gè)隨后的塊的步驟。
2.根據(jù)權(quán)利要求1的方法,其特征在于更新步驟包括移動(dòng)該隨后的塊。
3.根據(jù)權(quán)利要求1的方法,其特征在于該更新步驟包括重新壓縮該選定塊及其隨后的塊的步驟。
4.根據(jù)權(quán)利要求3的方法,其特征在于該存儲(chǔ)步驟在每頁中以多個(gè)固定大小的幀存儲(chǔ)塊,而且該更新步驟只重新壓縮那些至少在其中存儲(chǔ)該選定塊的至少一部分或一個(gè)隨后塊的幀。
5.一個(gè)計(jì)算機(jī)系統(tǒng)包括(a)一個(gè)存儲(chǔ)器,其被配制和安排用來存儲(chǔ)數(shù)據(jù)的邏輯頁,該邏輯頁包括形成一個(gè)數(shù)組的多個(gè)塊;以及(b)連接到該存儲(chǔ)器的一個(gè)控制器,以壓縮格式及倒序方式在該存儲(chǔ)器中存儲(chǔ)該多個(gè)塊,該倒序與該邏輯頁中塊的排列有關(guān),其中響應(yīng)對(duì)一個(gè)選定塊中數(shù)據(jù)的修改,該控制器要更新該選定塊,以及如果有的話,更新在該存儲(chǔ)器中隨后排列的至少一個(gè)隨后塊。
6.根據(jù)權(quán)利要求5的計(jì)算機(jī)系統(tǒng),其特征在于還包括連接到該控制器的一個(gè)壓縮引擎。
7.根據(jù)權(quán)利要求5的計(jì)算機(jī)系統(tǒng),其特征在于控制器通過對(duì)該所選擇的以及隨后的塊中的數(shù)據(jù)進(jìn)行再壓縮對(duì)其進(jìn)行更新。
8.根據(jù)權(quán)利要求7的計(jì)算機(jī)系統(tǒng),其特征在于該控制器以多個(gè)固定大小的幀存儲(chǔ)該多個(gè)塊,以及,該控制器通過只重新壓縮那些存儲(chǔ)所選定塊的至少一部分或其隨后塊的幀,來更新該所選定的塊及其隨后塊。
9.一種把一個(gè)程序產(chǎn)品傳輸?shù)揭粋€(gè)計(jì)算機(jī)系統(tǒng)中的方法,該方法包括如下步驟(a)建立與該計(jì)算機(jī)系統(tǒng)的連接;以及(b)把該程序產(chǎn)品傳輸?shù)皆撚?jì)算機(jī)系統(tǒng),該程序產(chǎn)品可由該計(jì)算機(jī)系統(tǒng)執(zhí)行,以運(yùn)行在計(jì)算機(jī)系統(tǒng)中存儲(chǔ)數(shù)據(jù)的步驟,該計(jì)算機(jī)系統(tǒng)的存儲(chǔ)器被分割成多個(gè)頁,每頁包括以多個(gè)塊存儲(chǔ)的數(shù)據(jù),該步驟具體為(1)以一種壓縮格式存儲(chǔ)數(shù)據(jù),并且每頁中的塊以倒序排列;以及(2)修改該存儲(chǔ)器中選定頁中選定塊中的數(shù)據(jù),包括更新該選定頁中的選定的塊,以及如果有的話,更新該選定頁中隨后排列的至少一個(gè)后續(xù)塊。
全文摘要
對(duì)一個(gè)數(shù)組數(shù)據(jù)結(jié)構(gòu)應(yīng)用一個(gè)排序算法,以根據(jù)那些數(shù)組元素有可能被修改的預(yù)計(jì)頻率排列這些元素。具有較高修改頻率的數(shù)組元素被放在接近該數(shù)組尾部的地方,減少由于修改這些元素造成的其它通常必須被更新的的數(shù)組元素的數(shù)目,對(duì)于那些具有較低的修改可能性的數(shù)組元素,保留了需要更新更多數(shù)組元素的修改。對(duì)于一個(gè)給定的頁,適于內(nèi)存壓縮的排序算法,以倒序方式排列頁中的塊,這是因?yàn)榻咏豁摰拈_始的數(shù)據(jù)的修改的概率要高于接近一頁的尾部的數(shù)據(jù)。
文檔編號(hào)G06F12/00GK1339744SQ0112574
公開日2002年3月13日 申請(qǐng)日期2001年8月21日 優(yōu)先權(quán)日1997年2月7日
發(fā)明者R·E·約翰森 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司