專利名稱:用于結(jié)構(gòu)化存儲器的迭代寄存器的制作方法
用于結(jié)構(gòu)化存儲器的迭代寄存器
對其他申請的交叉引用本申請要求2009 年 7 月 31 日提交的、題為 “Iterator Register for EfficientStructured Memory Access (用于高效的結(jié)構(gòu)化存儲器訪問的迭代寄存器)”的美國臨時專利申請No. 61/273,179的權(quán)益,為了所有目的通過引用將其并入本文。
背景技術(shù):
一些計算機系統(tǒng)已努力為復(fù)雜的數(shù)據(jù)結(jié)構(gòu)提供處理器和存儲器支持。例如,ー些結(jié)構(gòu)化存儲系統(tǒng)為稀疏矩陣以及自動存儲和引用管理提供支持。但是,硬件數(shù)據(jù)結(jié)構(gòu)支持對每種可能的使用而言相對于專門的軟件數(shù)據(jù)結(jié)構(gòu)可能引入額外的復(fù)雜度和開銷。 計算機系統(tǒng)逐漸發(fā)展成支持數(shù)量不斷増加的并行執(zhí)行處理器核,允許更大的并發(fā)性。這可能増加高效訪問軟件數(shù)據(jù)結(jié)構(gòu)的難度。有處理并發(fā)訪問的需要,以確保副本是ー致的,更新沒有干擾,并且復(fù)雜的更新能夠自動被執(zhí)行。
在以下的詳細說明和附圖中公開了本發(fā)明的各個實施例。圖I是本發(fā)明一實施例的框圖。圖2示出供本發(fā)明ー實施例使用的示例性迭代寄存器構(gòu)成。圖3示出將兩個32位元素壓縮成單個64位字的示例。圖4示出將四個16位元素壓縮成單個64位字的示例。圖5示出將八個8位元素壓縮成單個64位字的示例。圖6示出兩級壓縮的示例。圖7a_c示出路徑壓縮的示例。圖8a_b示出削減零后綴的示例。圖9是用于在第O層進行削減/壓縮的流程圖。圖10是用于在第I層進行削減/壓縮的流程圖。圖11是用于在第2層進行削減/壓縮的流程圖。圖12是用于在第3層及更高的層進行削減/壓縮的流程圖。圖13是用于擴展處于第3層以上的層的經(jīng)壓縮的行的流程圖。圖14是用于擴展處于第3層的經(jīng)壓縮的行的流程圖。圖15是用于擴展處于第2層的經(jīng)壓縮的行的流程圖。圖16是用于擴展處于第I層的經(jīng)壓縮的行的流程圖。
具體實施例方式本發(fā)明能夠通過許多方式來實現(xiàn),包括實現(xiàn)為過程、設(shè)備、系統(tǒng)、物質(zhì)組成、在計算機可讀存儲介質(zhì)上實施的計算機程序產(chǎn)品和/或處理器,諸如配置成執(zhí)行存儲在耦合于該處理器的存儲器上和/或由該存儲器提供的指令的處理器。在本說明書中,這些實現(xiàn)或本發(fā)明可采取的任何其他形式可被稱作技木。一般來說,所公開過程的步驟的順序可在本發(fā)明的范圍之內(nèi)改變。除非另有說明,否則描述為配置成執(zhí)行任務(wù)的、諸如處理器或存儲器(memory)的部件可被實現(xiàn)為在給定時間暫時配置成執(zhí)行該任務(wù)的通用部件或者制造成執(zhí)行該任務(wù)的專用部件。如在本文中所使用的那樣,術(shù)語“處理器”指的是配置成處理諸如計算機程序指令的數(shù)據(jù)的ー個或多個裝置、電路和/或處理核。下面連同附圖一起提供本發(fā)明的一個或多個實施例的詳細說明,附圖示出本發(fā)明的原理。結(jié)合這樣的實施例來描述本發(fā)明,但本發(fā)明并不局限于任何實施例。本發(fā)明的范圍僅由權(quán)利要求限制,并且本發(fā)明包含許多備選、修改和等效方案。在以下說明中闡明大量具體細節(jié),以便提供對本發(fā)明的透徹理解。為了示例的目的來提供這些細節(jié),并且本發(fā)明可在沒有這些具體細節(jié)中的ー些或全部的情況下按照權(quán)利要求來實踐。為了清楚的目的,沒有詳細描述與本發(fā)明相關(guān)的技術(shù)領(lǐng)域中的已知技術(shù)資料,以免不必要地混淆本發(fā)明。計算機存儲系統(tǒng)通常作為線性矩陣被訪問,其中存儲器単元(字節(jié)或字)與每個地址A關(guān)聯(lián),所述地址起始于0,并且不間斷地延伸到最大規(guī)定的物理地址MPA。
由處理器進行的常規(guī)存儲器訪問需要指定寄存器Rd和Ra的加載指令,引起數(shù)據(jù)到地址A的寄存器Rd中的加載(即讀取),其中A是存儲在寄存器Ra中的值。Ra通常被稱作地址或索引寄存器。(作為最優(yōu)選,加載或存儲的存儲器地址常常還能夠直接在指令本身中指定或者相對于某個基地址來指定。)與這種簡單的硬件模型對比,軟件必然常常使用更復(fù)雜的方式來訪問所需數(shù)據(jù),由軟件要求推動。具體來說,軟件應(yīng)用通常具有值集合,其中每個值由具有大的值范圍的某個關(guān)鍵字值標識/索引。例如,ー個集合可由具有無限數(shù)量的可能串值的可變長度字符串值來索引。這通常被稱作關(guān)聯(lián)矩陣。作為另ー示例,集合可由長度為128位的IPv6地址來索引。在這兩種情況下,可能的關(guān)鍵字值的數(shù)量較大,因而使用從關(guān)鍵字到存儲器単元的直接映射是不可行的。因此,軟件在這些情況下常規(guī)地將其對數(shù)據(jù)的訪問實現(xiàn)為如上所述的使用地址/索引寄存器的一系列存儲器加載操作。例如,它可讀取整個串以計算所謂的散列值,并且進而將來自這個散列值的截取值用作偏移量來計算線性矩陣(散列向量)的地址,訪問該計算得到的地址上的條目,并且進而將變元關(guān)鍵字與條目處的關(guān)鍵字比較,進而在關(guān)鍵字匹配的情況下加載該條目處的值,否則將執(zhí)行某個動作以使用這個數(shù)據(jù)結(jié)構(gòu)的散列沖突作用(hash collision action)來查找可能匹配的其他可能的條目。鏈接的散列表中的后一種情況需要加載存儲在這個第一條目中的指向另一條目的地址,并且訪問這個另一條目,重復(fù)所述關(guān)鍵字比較。因此,加載所需值可能需要數(shù)十至數(shù)百(或更多)額外的加載操作。此外,軟件常常執(zhí)行應(yīng)用于集合的每個成員的操作,這被稱作在集合范圍內(nèi)進行迭代。當?shù)卩徑拥拇鎯ζ鲀?nèi)數(shù)據(jù)結(jié)構(gòu)(即矩陣)范圍內(nèi)進行時,硬件支持預(yù)取是常見的。但是,對于軟件所使用的復(fù)雜非鄰接存儲器結(jié)構(gòu),硬件預(yù)取機制一般是無效的,因為軟件的下一個數(shù)據(jù)元素不是相對于硬件所發(fā)出的上ー個地址加載/存儲的下一個數(shù)據(jù)元素。類似地,由于如上文所述那樣處理集合元素需要復(fù)雜的數(shù)據(jù)結(jié)構(gòu),對存儲器數(shù)據(jù)結(jié)構(gòu)的軟件修改可能需要許多加載和存儲操作。復(fù)雜的可變尺寸數(shù)據(jù)結(jié)構(gòu)還引入用于分配存儲器和釋放存儲器的開銷。一些計算機系統(tǒng)已努力為復(fù)雜數(shù)據(jù)結(jié)構(gòu)提供處理器和存儲器支持。例如,HICAMP (如在上文所提及的美國專利申請12/653,889中更詳細地描述的那樣)為稀疏矩陣以及自動存儲和引用管理提供支持,從而支持上述形式的集合等等。但是,硬件數(shù)據(jù)結(jié)構(gòu)支持對每種可能的使用而言相對于專門的軟件數(shù)據(jù)結(jié)構(gòu)可能引入額外的復(fù)雜度和開銷。例如,軟件中的稀疏矩陣使用不同的表示。Fresh Breeze是為結(jié)構(gòu)化存儲器提供硬件支持的系統(tǒng),支持稀疏矩陣。通過采用包括迭代寄存器的計算機架構(gòu)來公開對于存儲器訪問的提高的效率。此處并且貫穿整個說明,術(shù)語“寄存器”指的是在計算機處理單元上可用的、與例如主存儲器和/或高速緩存的其他類別的系統(tǒng)存儲器相比能夠由關(guān)聯(lián)的處理單元更快速地訪問的少量存儲。在一些實施例中,雖然不同的寄存器能夠具有不同的訪問時間,但是慢寄存器比高速緩存和/或主存儲器快。每個迭代寄存器包括兩個或更多個指針字段,這些指針字段為形成導向數(shù)據(jù)元素的指針鏈的兩個或更多個指針提供存儲。優(yōu)選地,這個數(shù)據(jù)元素還存儲在其對應(yīng)的迭代寄存器中(但是數(shù)據(jù)元素也能夠被存儲在其他位置,諸如在主存儲器和/或高速緩存中)。因此,迭代寄存器與上述常規(guī)的地址寄存器的不同之處在于,與單個指針相對比,在其中提供了對具有2個或更多個指針的指針鏈的存儲。術(shù)語“指針鏈”指的是ー組指針,該組指針被鏈接成使得除了指向數(shù)據(jù)元素的最后指針之外,所述鏈中的每個指針指向該鏈中的下ー個指針。提供指針鏈的存儲的寄存器在本文中被稱作“迭代寄存器”,因為它們極大地便利在指針鏈接數(shù)據(jù)結(jié)構(gòu)的所有元素范圍內(nèi)系統(tǒng)地進行迭代的常見操作。因此,當存儲在計算機存儲系統(tǒng)中的數(shù)據(jù)被組織為ー個或多個指針鏈接數(shù)據(jù)結(jié)構(gòu)時,具有迭代寄存器的架構(gòu)提供了許多優(yōu)點。優(yōu)選實施例能夠單個地或者以任何組合包括下列特征中的ー個或多個。系統(tǒng)存儲器中的指針鏈接數(shù)據(jù)結(jié)構(gòu)能夠用不可變的物理存儲塊來構(gòu)造,其中當塊正被系統(tǒng)有效使用(例如引用)時不允許對塊的內(nèi)容進行任何改變。指針鏈接數(shù)據(jù)結(jié)構(gòu)能夠用物理存儲塊來構(gòu)造,其中非重復(fù)慣例被強制執(zhí)行,使得沒有兩個活動的物理存儲塊具有相同內(nèi)容。使用不可變的非重復(fù)存儲塊是HICAMP架構(gòu)的特性特征,如在上文所提及的美國專利申請12/653, 889中更詳細地描述的那樣,為了所有目的通過引用將其并入本文。對系統(tǒng)存儲器的訪問能夠通過迭代寄存器排他地進行。對于特定處理器活動的迭代寄存器的數(shù)量能夠在軟件控制下被改變。除了如上所述的迭代寄存器之外,處理器還能夠包括常規(guī)的寄存器。為了概括要點,単獨考慮其中數(shù)據(jù)來自其他系統(tǒng)存儲器并且轉(zhuǎn)到迭代寄存器的操作(在本文中被稱作存儲器加載或寄存器寫入操作)以及其中數(shù)據(jù)從迭代寄存器轉(zhuǎn)到其他系統(tǒng)存儲器的操作(在本文中被稱作存儲器存儲或寄存器讀取操作)是有幫助的。在通過迭代寄存器所執(zhí)行的、對于存儲器內(nèi)指針鏈接數(shù)據(jù)結(jié)構(gòu)的連續(xù)存儲器加載操作期間,能夠部分或完全緩存迭代寄存器中的指針鏈信息。例如,如果指針鏈接數(shù)據(jù)結(jié)構(gòu)A的元素A[100]和A[101]具有分別有5個指針并且只有最后指針不同的對應(yīng)指針鏈,則在經(jīng)由迭代寄存器訪問A[100]之后經(jīng)由迭代寄存器訪問A[101]將僅需要一個指針從存儲器到寄存器的加載。與之形成鮮明對比,常規(guī)方式將需要加載與A[101]相關(guān)的所有五個指針,以便追隨從A的根到A[101]的鏈接。在這個示例中,從存儲器加載A[100]能夠被看作是將第一指針鏈寫入迭代寄存器的第一數(shù)據(jù)元素的第一加載。類似地,從存儲器加載A[101]能夠被看作是將第二指針鏈寫入迭代寄存器的第二數(shù)據(jù)元素的第二加載。第二加載僅在迭代寄存器中寫入第二指針鏈與第一指針鏈不同的指針。如在這個示例中那樣,第二加載能夠是數(shù)據(jù)結(jié)構(gòu)中在第一元素之后的下ー個非默認元素。第二元素的預(yù)取能夠被提供。能夠通過在迭代寄存器之內(nèi)進行迭代來高效并且系統(tǒng)地訪問數(shù)據(jù)結(jié)構(gòu)。在一些實施例中,指針鏈的存儲器內(nèi)表示被壓縮。在這些實施例中,作為存儲器加載的一部分,存儲器中的壓縮指針表示能夠被轉(zhuǎn)換成迭代寄存器中的非壓縮表示。在系統(tǒng)存儲器不可變(例如HICAMP架構(gòu))的情況下,迭代寄存器的使用便利地提供“快照語義(snapshot semantics)”。例如,迭代寄存器中對存儲器內(nèi)數(shù)據(jù)結(jié)構(gòu)的根的單次引用在將根從存儲器加載到迭代寄存器時有效地提供這個數(shù)據(jù)結(jié)構(gòu)的狀態(tài)的前后一致的快照。這個表示確保選定的數(shù)據(jù)結(jié)構(gòu)(例如其根被加載在迭代寄存器中的數(shù)據(jù)結(jié)構(gòu))在上述第一與第二加載之間不發(fā)生變化(即確保對一致的數(shù)據(jù)結(jié)構(gòu)狀態(tài)的訪問)。這個概念延伸到任何數(shù)量的存儲器加載操作。對于存儲器存儲操作,本方式的一個關(guān)鍵方面在于,能夠通過執(zhí)行ー個或多個寄 存器操作并且將指針包括在迭代寄存器的指針字段中來構(gòu)建與指針鏈接數(shù)據(jù)結(jié)構(gòu)相關(guān)的本地狀態(tài)(local state)。貫穿本說明書,“本地狀態(tài)”可表示迭代寄存器中的任何狀態(tài),包括其指針字段或迭代寄存器中的其他存儲元素內(nèi)所存儲的狀態(tài)。存儲器存儲操作進而能夠通過按照這個本地狀態(tài)更新存儲器內(nèi)容來繼續(xù)進行。例如,存儲器中的指針鏈接數(shù)據(jù)結(jié)構(gòu)能夠按照這個本地狀態(tài)來初始化或更新。這種方式的ー個重要特征在干,能夠使存儲器存儲操作原子化,使得對存儲器內(nèi)數(shù)據(jù)結(jié)構(gòu)的所有改變能夠通過單個機器級指令來進行。在一些實施例中,指針鏈的存儲器內(nèi)表示被壓縮。在這些實施例中,作為存儲器存儲的一部分,非壓縮指針表示能夠被轉(zhuǎn)換成壓縮表示。圖I是本發(fā)明一實施例的框圖。在這個示例中,計算機處理器102包括算木/邏輯單元(ALU) 104和寄存器組110。組110中的一些寄存器被標記為112、114、116、118。寄存器組110中的寄存器是如上文所描述的迭代寄存器。處理器102與存儲器106通信,存儲器106能夠包括主存儲器和/或高速緩沖存儲器的任何組合。如上文所指示的那樣,存儲器加載操作需要數(shù)據(jù)從存儲器106到寄存器組110的轉(zhuǎn)移,而存儲器存儲操作需要數(shù)據(jù)從寄存器組110到存儲器106的轉(zhuǎn)移。迭代寄存器118的擴展視圖在圖I上被示出。這個視圖示出迭代寄存器中的字段。更具體來說,第一字段122為第一指針Pl提供存儲,而第二字段126為第二指針Pn提供存儲??蛇x地,為ー個或多個附加指針提供存儲的一個或多個附加指針字段124能夠存在于迭代寄存器中。存儲在迭代寄存器的指針字段中的兩個或更多個指針形成如上所述的、導向數(shù)據(jù)元素E的指針鏈。在一優(yōu)選實施例中,迭代寄存器包括字段128以為數(shù)據(jù)元素E提供存儲,但是這不作要求。能夠在系統(tǒng)內(nèi)的其他位置上為數(shù)據(jù)元素E提供存儲(例如在存儲器106中,或者在主存儲器中或者在高速緩沖存儲器中)。在一些實施例中,用每個計算機處理器中特定的一組寄存器來擴大計算機系統(tǒng),所述特定的一組寄存器被指明為迭代寄存器。每個迭代寄存器被設(shè)計為了解軟件所使用的存儲器內(nèi)數(shù)據(jù)結(jié)構(gòu),并且因此能夠提供訪問的高效定位、數(shù)據(jù)的加載、數(shù)據(jù)的存儲和對數(shù)據(jù)結(jié)構(gòu)的修改以及原子更新。在一實施例中,所述架構(gòu)支持使用有向非循環(huán)圖(DAG)對可變尺寸矩陣的表示。能夠通過從DAG的根遍歷到對應(yīng)于所指明的偏移量的葉節(jié)點來訪問矩陣中的特定項。通過保持準平衡表示,訪問成本能夠限定到正比Iog(N)的水平,其中N是矩陣中的元素數(shù)量。在這個實施例中,當?shù)拇嫫鞅患虞d成表示矩陣的寄存器時,其加載DAG中從根到DAG中的所指明的樹 葉的中間節(jié)點(即指針鏈)。因此,對矩陣中處于所指明的偏移量的數(shù)據(jù)的后續(xù)加載能夠以單個存儲器訪問來訪問,即以迭代寄存器被加載時所標識的葉節(jié)點部分。這個狀態(tài)全部能夠作為單個迭代寄存器傳送(move)指令從ー個迭代寄存器轉(zhuǎn)移到另ー迭代寄存器。迭代寄存器在矩陣內(nèi)的重新定位也是高效的,因為它能夠在新位置接近當前位置的情況下重復(fù)使用其當前已加載的中間節(jié)點。常見情況實際上是將迭代寄存器移至矩陣中的下ー個數(shù)據(jù)。具體來說,在一實施例中,迭代寄存器支持與經(jīng)由迭代寄存器訪問數(shù)據(jù)結(jié)合的后自動遞増。這種遞增自動地將位置移動矩陣數(shù)據(jù)元素的尺寸。此外,自動遞增迭代程序訪問能夠按照迭代程序是否到達分段/矩陣的末尾來設(shè)置條件代碼,從而消除了對用于這個條件的単獨測試的需要。最后,在一實施例中,如果迭代程序還沒有經(jīng)過矩陣的末尾,則迭代寄存器能夠預(yù)取處于迭代寄存器的新位置的數(shù)據(jù)。例如,考慮如下所示的向量加法的簡單情況 for(int i = O ;i ! = max ;++i) {
vec2 [i] = vecO[i]+vecl [i];
}在一優(yōu)選實施例中,這個代碼將被轉(zhuǎn)換為以下偽匯編碼
權(quán)利要求
1.一種存儲系統(tǒng),其包括 包括節(jié)點的指針鏈接數(shù)據(jù)結(jié)構(gòu);以及 迭代寄存器,其中 所述迭代寄存器包括存儲對應(yīng)指針的多個指針字段; 多個所述對應(yīng)指針形成導向特定節(jié)點的指針鏈;以及 所述指針鏈的一部分被用于訪問所述指針鏈接數(shù)據(jù)結(jié)構(gòu)中 的相關(guān)節(jié)點。
2.如權(quán)利要求I所述的存儲系統(tǒng),其中訪問相關(guān)節(jié)點是訪問下一個葉節(jié)點。
3.如權(quán)利要求I所述的存儲系統(tǒng),其中采用所述迭代寄存器所執(zhí)行的對所述指針鏈接數(shù)據(jù)結(jié)構(gòu)的連續(xù)存儲器加載操作利用所述迭代寄存器中的完全緩存的指針鏈的部分而不是全部。
4.如權(quán)利要求I所述的存儲系統(tǒng),其中采用所述迭代寄存器所執(zhí)行的對所述指針鏈接數(shù)據(jù)結(jié)構(gòu)的存儲器存儲操作對與所述迭代寄存器關(guān)聯(lián)的本地狀態(tài)進行對應(yīng)修改,并且在此之后按照所述本地狀態(tài)來更新所述指針鏈接數(shù)據(jù)結(jié)構(gòu)。
5.如權(quán)利要求I所述的存儲系統(tǒng),其中所述指針鏈接數(shù)據(jù)結(jié)構(gòu)是分層的。
6.如權(quán)利要求I所述的存儲系統(tǒng),其中所述指針鏈接數(shù)據(jù)結(jié)構(gòu)由不可變的存儲塊構(gòu)成。
7.如權(quán)利要求I所述的存儲系統(tǒng),其中所述指針鏈接數(shù)據(jù)結(jié)構(gòu)是消重的。
8.如權(quán)利要求I所述的存儲系統(tǒng),其中所述迭代寄存器同時存儲多個指針鏈。
9.如權(quán)利要求I所述的存儲系統(tǒng),其中所述迭代寄存器保持瞬時行狀態(tài)。
10.如權(quán)利要求I所述的存儲系統(tǒng),其中所述指針鏈接數(shù)據(jù)結(jié)構(gòu)表示下列各項中的一個或多個內(nèi)容可尋址存儲器、快照檢查點存儲器、數(shù)據(jù)庫、無鎖執(zhí)行的狀態(tài)快照、反向索引和稀疏矩陣。
11.如權(quán)利要求I所述的存儲系統(tǒng),其中能夠在軟件控制下使所述迭代寄存器活動或不活動。
12.如權(quán)利要求I所述的存儲系統(tǒng),其中所述迭代寄存器還包括為節(jié)點提供存儲的元素字段。
13.—種從計算機存儲系統(tǒng)加載數(shù)據(jù)的方法,其包括 從存儲一個或多個指針鏈接數(shù)據(jù)結(jié)構(gòu)的存儲器將具有導向選定的指針鏈接數(shù)據(jù)結(jié)構(gòu)的第一元素的兩個或更多個指針的第一指針鏈加載到選定的迭代寄存器中; 將具有導向所述選定的指針鏈接數(shù)據(jù)結(jié)構(gòu)的第二元素的兩個或更多個指針的第二指針鏈加載到所述選定的迭代寄存器; 其中所述第二指針鏈的加載重復(fù)使用所述第一指針鏈的與所述第二指針鏈一樣的部分。
14.如權(quán)利要求13所述的方法,其中所述第二元素是所述選定的數(shù)據(jù)結(jié)構(gòu)中在所述第一元素之后的下一個非默認元素。
15.如權(quán)利要求14所述的方法,其還包括執(zhí)行所述第二元素的預(yù)取。
16.如權(quán)利要求13所述的方法,其中通過在所述選定的迭代寄存器之內(nèi)進行迭代來順序地訪問所述選定的數(shù)據(jù)結(jié)構(gòu)。
17.如權(quán)利要求13所述的方法,其還包括將所述選定的數(shù)據(jù)結(jié)構(gòu)中的壓縮指針表示轉(zhuǎn)換成所述選定的迭代寄存器中的非壓縮指針表示。
18.如權(quán)利要求13所述的方法,其還包括提供所述選定的數(shù)據(jù)結(jié)構(gòu)的不可變表示,以確保所述選定的數(shù)據(jù)結(jié)構(gòu)在所述第一加載之后并且在所述第二加載之前不發(fā)生變化。
19.如權(quán)利要求18所述的方法,其中所述選定的數(shù)據(jù)結(jié)構(gòu)的不可變表示被用于為通過所述選定的迭代寄存器對所述選定的數(shù)據(jù)結(jié)構(gòu)的三個或更多個連續(xù)加載操作提供快照語義。
20.一種修改存儲在計算機存儲系統(tǒng)中的數(shù)據(jù)的方法,所述方法包括 通過執(zhí)行與選定的迭代寄存器相關(guān)的一個或多個寄存器操作并且將指針包括在所述選定的迭代寄存器的指針字段中來生成與所述選定的迭代寄存器關(guān)聯(lián)的本地狀態(tài),所述選定的迭代寄存器包括用于存儲形成導向數(shù)據(jù)元素的指針鏈的兩個或更多個指針的兩個或更多個指針字段; 按照所述本地狀態(tài)來更新存儲系統(tǒng)中的指針鏈接數(shù)據(jù)結(jié)構(gòu)。
21.如權(quán)利要求20所述的方法,其中自動執(zhí)行更新指針鏈接數(shù)據(jù)結(jié)構(gòu)。
22.如權(quán)利要求20所述的方法,其還包括將所述選定的迭代寄存器中的非壓縮指針表示轉(zhuǎn)換成所述指針鏈接數(shù)據(jù)結(jié)構(gòu)中的壓縮指針表示。
23.如權(quán)利要求20所述的方法,其中所述迭代寄存器還分別包括為所述數(shù)據(jù)元素提供存儲的元素字段。
24.如權(quán)利要求20所述的方法,其還包括將所述選定的迭代寄存器中的壓縮指針表示轉(zhuǎn)換成所述指針鏈接數(shù)據(jù)結(jié)構(gòu)中的壓縮指針表示。
全文摘要
本發(fā)明公開了從計算機存儲系統(tǒng)加載和修改數(shù)據(jù)。在存儲器中,存儲在存儲系統(tǒng)中的數(shù)據(jù)被組織為一個或多個指針鏈接的樹形數(shù)據(jù)結(jié)構(gòu)。一個或多個迭代寄存器被提供。將具有導向選定的指針鏈接數(shù)據(jù)結(jié)構(gòu)的第一元素的兩個或更多個指針的第一指針鏈加載到選定的迭代寄存器。將具有導向選定的指針鏈接數(shù)據(jù)結(jié)構(gòu)的第二元素的兩個或更多個指針的第二指針鏈加載到所述選定的迭代寄存器。第二指針鏈的加載重復(fù)使用第一指針鏈的與第二指針鏈一樣的部分。通過執(zhí)行與選定的迭代寄存器相關(guān)的一個或多個寄存器操作并且將指針包括在所述選定的迭代寄存器的指針字段中來生成與所述選定的迭代寄存器關(guān)聯(lián)的本地狀態(tài)。
文檔編號G06F12/06GK102687127SQ201080044937
公開日2012年9月19日 申請日期2010年7月29日 優(yōu)先權(quán)日2009年7月31日
發(fā)明者A·Y·索洛馬特尼科夫, A·費魯沙希安, D·R·徹里頓 申請人:??财障到y(tǒng)股份有限公司