管理數據操作的存儲器和存儲空間的制作方法
【專利說明】管理數據操作的存儲器和存儲空間
[0001]相關申請的交叉引用
[0002]本申請要求享有2013年5月17日提交的61/824,686號美國專利申請的優先權。
技術領域
[0003]本申請涉及一種管理數據操作的存儲器和存儲空間。
【背景技術】
[0004]—些計算系統使用虛擬存儲器方案來管理在操作系統內執行的程序所使用的存儲器設備。例如,使用從存儲設備換入和換出的存儲器頁面,操作系統可以處理存儲器設備(也稱為“主存儲器”)的較大虛擬地址空間和較小實地址空間之間的轉譯,其中上述存儲設備用作具有比存儲器設備更大存儲容量的后備存儲。因此,程序可訪問的工作存儲器的量不受限于主存儲器的大小。在虛擬存儲器方案中,程序的工作存儲器中地址頁面在存儲器設備和后備存儲之間的往返移動對使用該工作存儲器的程序而言通常是透明的。一些計算系統可能具有對虛擬存儲器的硬件支持,諸如內置于中央處理單元(CPU)中的存儲器管理單元(MMU)。一些計算系統還可以使用具有一個或多個級別的緩存系統來在相對更快速的高速緩沖存儲器中存儲有限量的主存儲器地址的副本,以加速對存儲器地址的重復訪問。
【發明內容】
[0005]在一個方案中,一般而言,一種計算系統,包括:存儲器設備,用于提供工作存儲器空間;存儲設備,用于提供溢出存儲空間;以及至少一個處理器,被配置為處理多個數據單元以產生結果信息。所述處理包括:為多個數據單元的數據單元第一子集的每個數據單元執行數據操作并且將與該數據操作的結果相關聯的信息存儲在所述工作存儲器空間中存儲的一個或多個數據結構的第一集合中;在所述工作存儲器空間的溢出條件滿足之后,將信息存儲在所述溢出存儲空間中并且釋放至少一些所述工作存儲器空間,并為所述多個數據單元的數據單元第二子集的每個數據單元執行所述數據操作,且將與該數據操作的結果相關聯的信息存儲在所述工作存儲器空間中存儲的一個或多個數據結構的第二集合中;將一個或多個數據結構的多個集合結合,包括所述第一集合和第二集合,以產生所述結果信息。將與數據操作的結果相關聯的所述信息存儲在一個或多個數據結構的集合中包括,對于至少一個數據單元,執行改變一個或多個數據結構的所述集合中信息的操作而免于增大一個或多個數據結構的所述集合所使用的所述工作存儲器空間的量。
[0006]這些方案可包括一個或多個以下特征。
[0007]如果一個或多個數據結構的所述第一集合所使用的所述工作存儲器空間的所述量大于等于預定閾值,則所述工作存儲器空間的所述溢出條件滿足。
[0008]所述處理還包括,在所述溢出條件滿足之后并且在為所述數據單元第二子集的每個數據單元執行所述數據操作之前,將一個或多個數據結構的所述第一集合存儲在所述溢出存儲空間中,并且從所述工作存儲器空間移除一個或多個數據結構的所述第一集合。
[0009]將一個或多個數據結構的多個集合結合包括將所述第一集合的至少一個數據結構與所述第二集合的至少一個數據結構合并。
[0010]將所述第一集合的至少一個數據結構與所述第二集合的至少一個數據結構合并包括將一個或多個數據結構的所述第一集合的所述數據結構中的第一鍵與一個或多個數據結構的所述第二集合的所述數據結構中的第二鍵相匹配,并且對與所述第一鍵相關聯的值和與所述第二鍵相關聯的值執行聚合操作。
[0011]所述處理還包括,在所述溢出條件滿足之后并且在為所述數據單元第二子集的每個數據單元執行所述數據操作之前,為數據單元的所述第二子集的每個數據單元執行所述數據操作,為所述多個數據單元的數據單元第三子集的每個數據單元執行所述數據操作,并且將與該數據操作的結果相關聯的信息存儲在所述工作存儲器空間中存儲的一個或多個數據結構的所述第一集合中。
[0012]所述數據單元第二子集是所述數據單元第三子集的數據單元的子集。
[0013]所述處理還包括,在為所述數據單元第三子集的第一數據單元執行所述數據操作之后,確定將與該數據操作的結果相關聯的信息存儲在:(I)所述工作存儲器空間中存儲的一個或多個數據結構的所述第一集合中,或者(2)所述溢出存儲空間中。
[0014]改變一個或多個數據結構的所述集合中的信息的所述操作包括就地存儲器操作,所述就地存儲器操作將所述工作存儲器空間內一位置中存儲的值覆寫為不同值并存儲在所述工作存儲器空間內的相同位置中。
[0015]將與所述數據操作的結果相關聯的信息存儲在所述溢出存儲空間中包括將所述第一數據單元的至少一些內容存儲在所述溢出存儲空間中。
[0016]為所述第一數據單元執行所述數據操作包括將所述第一數據單元中的鍵與一個或多個數據結構的所述第一集合中的一個或多個鍵相比較,并且如果所述比較結果為匹配,則將與該數據操作的結果相關聯的所述信息存儲在所述工作存儲器空間中存儲的一個或多個數據結構的第一集合中,而如果所述比較結果為不匹配,則將與該數據操作的結果相關聯的所述信息存儲在所述溢出存儲空間中。
[0017]所述處理還包括根據數據源產生所述多個數據單元,每個數據單元包括數據源的字段的標識符以及出現在所述數據源的記錄內的該字段中的值。
[0018]所述數據操作包括使用所述數據單元中包括的所述值作為鍵來對多個數據單元的信息進行聚合,所述鍵用來選擇信息經過聚合的匹配數據單元。
[0019]所述存儲器設備包括易失性存儲器設備。
[0020]所述存儲設備包括非易失性存儲設備。
[0021]在另一個方案中,一般而言,一種計算系統,包括:用于提供工作存儲器空間的裝置;用于提供溢出存儲空間的裝置;以及用于處理多個數據單元以產生結果信息的裝置。所述處理包括:為多個數據單元的數據單元第一子集的每個數據單元執行數據操作并且將與該數據操作的結果相關聯的信息存儲在所述工作存儲器空間中存儲的一個或多個數據結構的第一集合中;在所述工作存儲器空間的溢出條件滿足之后,將信息存儲在所述溢出存儲空間中并且釋放至少一些所述工作存儲器空間,并為所述多個數據單元的數據單元第二子集的每個數據單元執行所述數據操作,且將與該數據操作的結果相關聯的信息存儲在所述工作存儲器空間中存儲的一個或多個數據結構的第二集合中;將一個或多個數據結構的多個集合結合,包括所述第一集合和第二集合,以產生所述結果信息。將與所述數據操作的結果相關聯的所述信息存儲在一個或多個數據結構的集合中包括,對于至少一個數據單元,執行改變一個或多個數據結構的所述集合中信息的操作而免于增大一個或多個數據結構的所述集合所使用的所述工作存儲器空間的量。
[0022]在另一個方案中,一般而言,一種用于處理多個數據單元以產生結果信息的方法,包括:為多個數據單元的數據單元第一子集的每個數據單元執行數據操作并且將與該數據操作的結果相關聯的信息存儲在存儲器設備的工作存儲器空間中存儲的一個或多個數據結構的第一集合中;在所述工作存儲器空間的溢出條件滿足之后,將信息存儲在存儲設備的溢出存儲空間中并且釋放至少一些所述工作存儲器空間,并為所述多個數據單元的數據單元第二子集的每個數據單元執行所述數據操作,且將與該數據操作的結果相關聯的信息存儲在所述工作存儲器空間中存儲的一個或多個數據結構的第二集合中;以及將一個或多個數據結構的多個集合結合,包括所述第一集合和第二集合,以產生所述結果信息。將與所述數據操作的結果相關聯的所述信息存儲在一個或多個數據結構的集合中包括,對于至少一個數據單元,執行改變一個或多個數據結構的所述集合中信息的操作而免于增大一個或多個數據結構的所述集合所使用的所述工作存儲器空間的量。
[0023]在另一個方案中,一般而言,軟件存儲在計算機可讀介質上用于處理多個數據單元以產生結果信息。所述軟件包括指令用于使得計算系統執行:為多個數據單元的數據單元第一子集的每個數據單元執行數據操作并且將與該數據操作的結果相關聯的信息存儲在存儲器設備的工作存儲器空間中存儲的一個或多個數據結構的第一集合中;在所述工作存儲器空間的溢出條件滿足之后,將信息存儲在存儲設備的溢出存儲空間中并且釋放至少一些所述工作存儲器空間,并為所述多個數據單元的數據單元第二子集的每個數據單元執行所述數據操作,且將與該數據操作的結果相關聯的信息存儲在所述工作存儲器空間中存儲的一個或多個數據結構的第二集合中;以及將一個或多個數據結構的多個集合結合,包括所述第一集合和第二集合,以產生所述結果信息。將與所述數據操作的結果相關聯的所述信息存儲在一個或多個數據結構的集合中包括,對于至少一個數據單元,執行改變一個或多個數據結構的所述集合中信息的操作而免于增大一個或多個數據結構的所述集合所使用的所述工作存儲器空間的量。
[0024]在另一個方案中,一般而言,一種計算系統,包括:存儲器設備,用于提供工作存儲器空間;存儲設備,用于提供溢出存儲空間;以及至少一個處理器,被配置為處理多個數據單元以產生結果信息。所述處理包括:為多個數據單元的數據單元第一子集的每個數據單元執行數據操作并且將與該數據操作的結果相關聯的信息存儲在所述工作存儲器空間中存儲的一個或多個數據結構的第一集合中;在所述工作存儲器空間的溢出條件滿足之后,為所述多個數據單元的數據單元的第二子集的每個數據單元執行所述數據操作,并且確定將與所述數據操作的結果相關聯的信息存儲在:(I)所述工作存儲器空間中存儲的一個或多個數據結構的所述第一集合中,或者(2)所述溢出存儲空間中。
[0025]這些方案可包括一個或多個以下特征。
[0026]如果一個或多個數據結構的所述第一集合所使用的所述工作存儲器空間的所述量大于等于預定閾值,則所述工作存儲器空間的所述溢出條件滿足。
[0027]所述數據操作至少部分基于每個數據單元中的鍵值,并且所述確定包括在所述第一集合的至少一個所述數據結構中搜索至少一個鍵值以確定:(1)更新與所述工作存儲器空間中一個或多個數據結構的所述第一集合的數據結構中的該鍵值相關聯的信息,或者
(2)存儲與所述溢出存儲空間中的該鍵值相關聯的信息。
[0028]所述數據操作包括就地存儲器操作,所述就地存儲器操作將所述工作存儲器空間內一位置中存儲的值覆寫為不同值并存儲在所述工作存儲器空間內的相同位置處。
[0029]將與所述數據操作的結果相關聯的信息存儲在所述溢出存儲空間中包括將執行了所述數據操作的數據單元的至少一些內容存儲在所述溢出存儲空間中。
[0030]為所述第一數據單元執行所述數據操作包括將所述第一數據單元中的鍵與一個或多個數據結構的所述第一集合中的一個或多個鍵相比較,并且如果所述比較結果為匹配,則將與該數據操作的結果相關聯的所述信息存儲在所述工作存儲器空間中存儲的一個或多個數據結構的第一集合中,并且如果所述比較結果為不匹配,則將與該數據操作的結果相關聯的所述信息存儲在所述溢出存儲空間中。
[0031]所述處理還包括根據數據源產生所述多個數據單元,每個數據單元包括數據源的字段的標識符以及出現在所述數據源的記錄內的該字段中的值。
[0032]所述數據操作包括使用所述數據單元中包括的所述值作為鍵來對多個數據單元的信息進行聚合,所述鍵用來選擇信息經過聚合的匹配數據單元。
[0033]產生所述多個數據單元包括為所述數據源的至少第一字段和所述數據源的至少第二字段產生數據單元。
[0034]為所述第二子集的每個數據單元執行所述數據操作包括:將與在第一數據單元上執行的所述數據操作的結果相關聯的信息存儲在一個或多個數據結構的所述第一集合中,并且將與在第二數據單元上執行的所述數據操作的結果相關聯的信息存儲在所述溢出存儲空間中。
[0035]所述第一數據單元和所述第二數據單元對于所述數據源的相同字段分別包括各標識符。
[0036]所述存儲器設備包括易失性存儲器設備。
[0037]所述存儲設備包括非易失性存儲設備。
[0038]在另一個方案中,一般而言,一種計算系統,包括:用于提供工作存儲器空間的裝置;用于提供溢出存儲空間的裝置;以及用于處理多個數據單元以產生結果信息的裝置,所述處理包括:為多個數據單元的數據單元第一子集的每個數據單元執行數據操作并且將與該數據操作的結果相關聯的信息存儲在所述工作存儲器空間中存儲的一個或多個數據結構的第一集合中;以及在所述工作存儲器空間的溢出條件滿足之后,為所述多個數據單元的數據單元第二子集的每個數據單元執行所述數據操作,并且確定將與該數據操作的結果相關聯的信息存儲在:(I)所述工作存儲器空間中存儲的一個或多個數據結構的所述第一集合中,或者(2)所述溢出存儲空間中。
[0039]在另一個方案中,一般而言,一種用于處理多個數據單元以產生結果信息的方法,包括:為多個數據單元的數據單元第一子集的每個數據單元執行數據操作并且將與該數據操作的結果相關聯的信息存儲在存儲器設備的工作存儲器空間中存儲的一個或多個數據結構的第一集合中;以及在所述工作存儲器空間的溢出條件滿足之后,為所述多個數據單元的數據單元第二子集的每個數據單元執行所述數據操作,并且確定是否將與該數據操作的結果相關聯的信息存儲在:(1)所述工作存儲器空間中存儲的一個或多個數據結構的所述第一集合中,或者(2)存儲設備的溢出存儲空間中。
[0040]在另一個方案中,一般而言,軟件存儲在計算機可讀介質上用于處理多個數據單元以產生結果信息。所述軟件包括指令用于使得計算系統執行:為多個數據單元的數據單元第一子集的每個數據單元執行數據操作并且將與該數據操作的結果相關聯的信息存儲在存儲設備的工作存儲器空間中存儲的一個或多個數據結構的第一集合中;以及在所述工作存儲器空間的溢出條件滿足之后,為所述多個數據單元的數據單元第二子集的每個數據單元執行所述數據操作,并且確定是否將與該數據操作的結果相關聯的信息存儲在:(I)所述工作存儲器空間中存儲的一個或多個數據結構的所述第一集合中,或者(2)存儲設備的溢出存儲空間中。
[0041]在另一個方案中,一般而言,一種計算系統,包括:存儲器設備,用于提供工作存儲器空間;存儲設備,用于提供溢出存儲空間;以及至少一個處理器,被配置為處理多個數據單元以產生結果信息。所述處理包括:為多個數據單元的數據單元第一子集的每個數據單元執行數據操作,該數據操作包括在所述工作存儲器空間中存儲的一個或多個數據結構的第一集合的至少一個數據結構內的數據單元中搜索一值,并