TW201830249A - 最大化可去重複記憶體的方法、記憶體系統和產品 - Google Patents
最大化可去重複記憶體的方法、記憶體系統和產品 Download PDFInfo
- Publication number
- TW201830249A TW201830249A TW107100611A TW107100611A TW201830249A TW 201830249 A TW201830249 A TW 201830249A TW 107100611 A TW107100611 A TW 107100611A TW 107100611 A TW107100611 A TW 107100611A TW 201830249 A TW201830249 A TW 201830249A
- Authority
- TW
- Taiwan
- Prior art keywords
- hash table
- memory
- data
- physical address
- small
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
- G06F3/0607—Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0292—User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
- G06F3/0641—De-duplication techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System (AREA)
Abstract
公開一種記憶體系統。記憶體系統可以包含大雜湊表和小雜湊表。記憶體系統還可以包含溢位區域以及用於將邏輯位址映射到物理行識別字(PLID)的轉換表,物理行識別字可以包含區域識別字和物理位址。
Description
本發明概念大體上涉及記憶體,且更確切地說,涉及最大化可去重複記憶體。 [相關申請案資料]
本申請案要求2017年9月6日提交的第62/554,904號美國臨時專利申請案、2017年2月1日提交的第62/453,461號美國臨時專利申請案、2017年1月27日提交的第62/451,157號美國臨時專利申請案以及2017年1月25日提交的第62/450,502號美國臨時專利申請案的權益,這些申請案出於所有目的全部以引用方式併入本文中。
本申請案是2017年4月26日提交的目前待決的第15/498,371號美國專利申請案的部分繼續申請案,所述申請案是2017年3月31日提交的目前待決的第15/476,757號美國專利申請案的部分繼續申請案,並且要求2017年2月1日提交的第62/453,461號美國臨時專利申請案、2017年1月27日提交的第62/451,157號美國臨時專利申請案、2017年1月25日提交的第62/450,502號美國臨時專利申請案以及2016年7月29日提交的第62/368,775號美國臨時專利申請案的權益,這些申請案出於所有目的全部以引用方式併入本文中。第15/476,757號美國專利申請案是2016年5月23日提交的目前待決的第15/162,517號美國專利申請案以及2016年5月20日提交的目前待決的第15/161,136號美國專利申請案的部分繼續申請案,並且要求2017年2月1日提交的第62/453,461號美國臨時專利申請案、2017年1月27日提交的第62/451,157號美國臨時專利申請案、2017年1月25日提交的第62/450,502號美國臨時專利申請案、2016年7月29日提交的第62/368,775號美國臨時專利申請案以及2016年3月31日提交的第62/316,402號美國臨時專利申請案的權益,這些申請案出於所有目的全部以引用方式併入本文中。第15/162,517號美國專利申請案要求2016年3月31日提交的第62/316,397號美國臨時專利申請案的權益,這兩個申請案出於所有目的以引用方式併入本文中。第15/161,136號美國專利申請案要求2016年3月20日提交的第62/314,918號美國臨時專利申請案的權益,這兩個申請案出於所有目的以引用方式併入本文中。
去重複(或可去重複)記憶體提供儲存資料的更有效機制。在傳統記憶體解決方案中,將每個資料物件寫入到記憶體中的其自身位置。相同資料物件可以儲存在記憶體中的任何數目的位置中,每個作為單獨複本:記憶體系統無法識別或防止資料的此重複儲存。對於大的資料物件,資料的此重複儲存可能是浪費的。僅儲存任何資料物件的單個複本的可去重複記憶體嘗試解決此問題。
一些可去重複記憶體利用雜湊表來儲存資料物件。但是雜湊表可以僅通過使其大小加倍的機制遞增。這種大的遞增粒度通常留下不可以用作可去重複記憶體並且僅被視為溢位區域的大部分記憶體。由於溢位區域記憶體不可去重,因此當大部分記憶體不可去重時,總體去重率降低。
仍需要一種用於增加進行去重的記憶體的部分的方式。
本發明概念的實施例包含記憶體系統,包括:用於儲存資料的記憶體;儲存在記憶體中的大雜湊表,所述大雜湊表包含一數目的多個桶和第一數目的路徑並且包含記憶體的第一部分,所述記憶體的第一部分包含為2的第一冪的第一數目的位元組;儲存在記憶體中的小雜湊表,所述小雜湊表包含所述數目的多個桶和第二數目的路徑並且包含記憶體的第二部分,所述記憶體的第二部分包含為2的第二冪的第二數目的位元組;儲存在記憶體中的溢位區域,所述溢位區域包含記憶體的第三部分;以及轉換表,用於將邏輯位址映射到物理行識別字(Physical Line Identifier, PLID),所述物理行識別字包含區域識別字和物理位址。
現在將詳細參考本發明概念的實施例,在附圖中圖示所述實施例的實例。在以下詳細描述中,闡述眾多具體細節以實現對本發明概念的透徹理解。然而,應理解,本領域技術人員可以在沒有這些具體細節的情況下實踐本發明概念。在其它例子中,未詳細描述眾所周知的方法、程式、元件、電路和網路,以免不必要地混淆實施例的各方面。
應理解,雖然術語“第一”、“第二”等可以在本文中用於描述各種元件,但這些元件不應受這些術語限制。這些術語僅用於將一個元件與另一元件區分開來。舉例來說,在不脫離本發明概念的範圍內,第一模組可以被稱為第二模組,並且類似地,第二模組可以被稱為第一模組。
本文中用於本發明概念的描述中的術語是僅出於描述具體實施例的目的且並不希望限制本發明概念。如本發明概念和所附權利要求書的描述中所使用,單數形式“一(a、an)”和“所述”意在也包含複數形式,除非上下文另外明確指示。還將理解,如本文中所使用的術語“和/或”指代且涵蓋相關聯的所列專案中的一個或多個的任何和所有可能組合。應進一步理解,術語“包括(comprise)”和/或“包括(comprising)”在用於本說明書中時指定所陳述的特徵、整數、步驟、操作、元件和/或元件的存在,但並不排除一個或多個其它特徵、整數、步驟、操作、元件、元件和/或其群組的存在或添加。圖式中的元件和特徵未必是按比例繪製。
在常規雜湊表中,雜湊表的大小是m×n,其中m是雜湊桶(或列)的數目,並且n是路徑(或行)的數目。例如,雜湊表可以具有2m
=226
個雜湊桶以及2n
=25
個路徑。
當常規雜湊表增長時,雜湊表大小的增量是其當前大小的兩倍(因為N是以使雜湊表的尺寸加倍的指數增加)。雜湊桶的數目不會僅改變路徑的數目。因此,取決於可用記憶體容量和雜湊表的大小,不可能使雜湊表的大小加倍。這個事實將留下不可以去重的大部分記憶體,所述不可以去重的記憶體將用作溢位區域。
本文中,可擴展雜湊表可以包含作為常規雜湊表的大雜湊表(Big Hash Table, BHT)以及具有相同數目的雜湊桶,但具有較少數目的路徑的小雜湊表(Little Hash Table, LHT)。因此,例如,如果對於大雜湊表2m
=226
且2n
=25
(或替代地,m=26且n=5),則小雜湊表的大小可以是2m
=226
和2n'
,其中n'可以是1與n-1之間的任何數目。可擴展雜湊表實現了靈活性以通過更精細粒度調節雜湊表大小,從而最大化可去重複記憶體大小並實現高去重率。應注意,名稱“大雜湊表”和“小雜湊表”僅用於稱述提及哪個雜湊表。雜湊表可以很容易地被命名為“第一雜湊表”和“第二雜湊表”,而不會丟失任何功能性。
邏輯位址到物理記憶體(也稱為物理行ID或PLID)的映射通過轉換表管理。使用者資料(也稱為物理行或PL)儲存在大雜湊表、小雜湊表或溢位區域中的一個中。
轉換表條目包含指示使用者資料可以存在於大雜湊表中還是小雜湊表或溢位區域中的一個中的區域。因此,例如,如果區域儲存值0,則使用者資料可以存在於大雜湊表中;否則,使用者資料可以存在於小雜湊表或溢出區域中。
如果使用者資料不儲存在大雜湊表中,則轉換表條目還可以包含指示小雜湊表和溢位區域中的哪一個儲存使用者資料的子區域。因此,例如,如果子區域儲存值0,則使用者資料可以存在於小雜湊表中;否則,使用者資料可以存在於溢出區域中。
圖1示出根據本發明概念的實施例的可用於使用可去重複記憶體的機器。在圖1中,示出機器105。機器105可以是任何所需機器,包含但不限於,臺式電腦或筆記型電腦、伺服器(獨立伺服器或機架式伺服器),或可以得益于本發明概念的實施例的任何其它裝置。機器105還可以包含專用可擕式計算裝置、平板電腦、智慧型電話和其它計算裝置。機器105可以運行任何所需應用:資料庫應用是良好實例,但是本發明概念的實施例可以擴展到任何所需應用。
不管機器的特定形式如何,機器105可以包含處理器110、記憶體115和儲存裝置120。處理器110可以是任何種類的處理器:例如,Intel Xeon、Celeron、Itanium或Atom處理器、AMD Opteron處理器、ARM處理器等。儘管圖1示出單個處理器,但是機器105可以包含任何數目的處理器,所述處理器中的每一個可以是單核或多核處理器。記憶體115可以是任何種類的記憶體,例如快閃記憶體記憶體、靜態隨機存取記憶體(Static Random Access Memory, SRAM)、持久隨機存取記憶體、鐵電隨機存取記憶體(Ferroelectric Random Access Memory, FRAM),或非揮發性隨機存取記憶體(Non-Volatile Random Access Memory, NVRAM),例如磁阻隨機存取記憶體(Magnetoresistive Random Access Memory, MRAM)等。記憶體115還可以是不同記憶體類型的任何所需組合。記憶體115可以由作為機器105的一部分的記憶體控制器125控制。
儲存裝置120可以是任何種類的儲存裝置。儲存裝置120可以由可以駐留在記憶體115內的裝置驅動器130控制。
圖2示出圖1的機器105的額外細節。參考圖2,機器105通常包含一個或多個處理器110,所述處理器110可以包含可以用於協調機器105的元件的操作的記憶體控制器125和時脈205。處理器110還可以耦合到記憶體115,舉例來說,所述記憶體可以包含隨機存取記憶體(random access memory, RAM)、唯讀記憶體(read-only memory, ROM)或其它狀態保持媒體。處理器110還可以耦合到儲存裝置120和網路連接器210,所述網路連接器210可以是例如乙太網連接器或無線連接器。處理器110還可以連接到匯流排215,除了其它元件外,可以附接到匯流排215的使用者介面220和可以使用輸入/輸出引擎225管理的輸入/輸出介面埠。
在圖1至2中,記憶體115可以是可去重複記憶體。儘管可去重複記憶體的實現方案可以不同于更傳統形式的記憶體,例如動態隨機存取記憶體(Dynamic Random Access Memory,DRAM),但是這些差別可以與可去重複記憶體的實現方案不相關。此外,機器105的其它硬體元件,例如可以取決於那些元件是否需要知曉記憶體115的物理結構來瞭解記憶體115的特定實現方案的處理器110。對記憶體115的特定實現方案“缺乏的瞭解”還可以擴展到軟體元件,例如,在機器105上運行的應用程式。應用程式可以將讀取和寫入請求發送到記憶體115,而無需瞭解記憶體115是否包含DRAM、可去重複記憶體或任何其它形式的記憶體。
圖3示出如2017年4月26日提交的第15/498,371號母級美國專利申請案中描述以及如2017年10月5日提交的第2017/0286010號美國專利公開案所公開的用於圖1的機器105中的可去重複記憶體的常規雜湊表的使用,所述專利出於所有目的以引用方式併入本文中。在圖3中,記憶體115可以包含雜湊表305、轉換表310、簽名表315和溢位區域320。雜湊表305可以經組織以包含2m
個列或桶以及2n
個路徑或行。雜湊表305可以用於儲存使用者資料,其中每個使用者資料以特定方式儲存在特定雜湊桶內。儘管圖3的呈現表明雜湊表305是總記憶體的大致⅓,但是實際上,雜湊表305可以具有任何大小並且通常盡可能大以裝配在可用記憶體內(以最大化可去重複記憶體)。溢位區域320表示不可以用作可去重複記憶體的一部分記憶體115(因為存在比可以供雜湊表305使用的記憶體更多的記憶體,但是沒有足夠的額外記憶體來支持將雜湊表305中的路徑的數目加倍)。
圖4示出根據本發明概念的實施例的可擴展雜湊表的使用。相比於圖3,圖4包含大雜湊表305、轉換表310、簽名表315、溢位區域320和小雜湊表405。類似於大雜湊表305,小雜湊表405包含2m
個桶。但是小雜湊表包含2N'
個路徑,其中n'小於n。在本發明概念的一些實施例中,n'可以改變,從而准許小雜湊表405隨著時間推移動態地增長。因此,例如,n'可以從0或1開始(取決於實現方案),並且當小雜湊表足夠完整,使得可以不將新條目放入其桶中時,n'可以增加1。小雜湊表405還可以動態地縮小:例如,如果記憶體115正執行相對少的去重。在本發明概念的其它實施例中,可以靜態地建立小雜湊表405(可能與其在記憶體內一樣大)。
對於大雜湊表305或小雜湊表405中的給定行值和給定列值,雜湊表可以包含條目,例如條目410。條目410可以包含資料415和頻率計數器420。資料415儲存實際資料;頻率計數器420追蹤對資料的不同參考的數目。在應用表達對使用資料415的興趣時,可以增加頻率計數器420;在應用不再對資料415感興趣時,可以減少頻率計數器420。
應注意,n'不應大於n。最終,如果記憶體包含足夠的空間來將n'增長到與n一樣大,則大雜湊表305可能已變成本來的兩倍大,並且將不需要使用小雜湊表405。
以上論述表明不管小雜湊表405是靜態的還是動態的,靜態地建立大雜湊表305。儘管在本發明概念的一些實施例中,可以靜態地建立大雜湊表305,但是在本發明概念的其它實施例中,大雜湊表305可以視需要動態地增長(直到所述大雜湊表可以在物理記憶體的界限內不再增長)。另外,大雜湊表305與小雜湊表405之間不存在必需關係:大雜湊表和小雜湊表各自可以是靜態的或動態的。也就是說,兩個表可以是靜態的,一個可以是靜態的且另一個是動態的,或兩個都可以是動態的。
應注意,通過使用大雜湊表305和小雜湊表405兩者,記憶體115中的較多部分用於可去重複記憶體並且較少部分被分配給溢位區域320。這可以改進記憶體115的使用,從而將去重所需的去重率減小到有效的。
一些實例可能有説明。考慮以下情況:在274,877,906,944位元組(大致256 GB)的總記憶體容量下,大雜湊表305具有32(25
)個路徑,並且小雜湊表405具有16(24
)個路徑。下表1示出關於雜湊表的使用的相關資料,其比較雜湊表305本身的使用與使用大雜湊表305和小雜湊表405兩者。可以看到,為了實現3.0的有效去重率,雜湊表305本身所需的原始去重率是5.4:也就是說,儲存在記憶體115中的大致5.4%的資料必須表示重復資料以實現3.0的有效去重率。相反,當大雜湊表305和小雜湊表405一起使用時,需要僅3.9的原始去重率來實現3.0的有效去重率:相當大的改進。 表1
在使用大雜湊表305和小雜湊表405兩者時需要較低原始去重率的原因是記憶體115的較多部分用作可去重複記憶體:也就是說,溢位區域320較小。在記憶體115的較少部分用於溢位區域320的情況下,需要較低原始去重率,因為記憶體115總體上被更有效地使用。
作為第二實例,考慮相同物理記憶體中的相同雜湊表,但是在假設原始去重率不變的情況下查看有效去重率。表2說明此情況。可以看到,當單獨使用雜湊表305時的有效去重率低於當大雜湊表305和小雜湊表405一起使用時的有效去重率。 表2
上文所描述的本發明概念的實施例示出一個大雜湊表305和一個小雜湊表405。但是不存在僅使用一個小雜湊表405的原因。本發明概念的實施例可以減少投資回報的代價支持多個小雜湊表。例如,在圖5中,記憶體115被示為包含大雜湊表305、小雜湊表405和小雜湊表505。小雜湊表505在形式和功能上與小雜湊表405相同,不同之處在於,小雜湊表505包含N''個路徑,其中N''是比N'小2的某一冪(就像N'是比N小2的冪)。
轉換表310負責將邏輯位址映射到儲存所需使用者資料的位址。因此,轉換表310可以將行和列(或替代地,桶和路徑)儲存在儲存使用者資料的雜湊表中(如果使用者資料儲存在雜湊表中的一個中),或溢位區域320中的物理位址中(如果使用者資料未儲存在雜湊表中的一個中)。圖6說明此過程。
在圖6中,轉換表310可以從主機電腦接收邏輯位址605(邏輯位址605可以最終來自應用程式、作業系統,或需要從圖1的記憶體115存取資料的任何其它軟體或硬體)。邏輯位址605可以是資料請求的一部分,所述資料請求可以是讀取請求或寫入請求。邏輯位址605可以被視為包含兩個元素:轉換表索引和粒度。轉換表索引可以表示可以存在所請求資料的特定頁面(或快取記憶體列);粒度可以表示待檢索的資料的特定位元組。因此,可以通過遮掩從邏輯位址605產生的最低階位元來產生轉換表索引。遮蔽多少位元來產生轉換表索引可以取決於轉換表索引的大小(進而可以取決於圖1的記憶體115的大小以及用於電腦系統中的快取記憶體列的大小)。
轉換表索引隨後可以用作進入轉換表310的索引,可以從所述索引讀取物理行識別字(Physical Line Identifier, PLID)610。取決於使用者資料實際儲存的位置,物理行識別字 610可以採用不同形式。但是在所有情況下,物理行識別字 610包含區域識別字615和物理位址620。
如果使用者資料儲存在圖4的大雜湊表305中,則物理行識別字 610可以看起來類似於條目625。在條目625中,區域識別字包含指示使用者資料儲存在圖4的大雜湊表305中的單個位元。物理位址隨後包含列索引的m個位元(識別雜湊桶)以及行索引的n個位元(識別路徑)。由於m個位元足以在2m
個雜湊桶之中選擇,並且n個位元足以在2n
個路徑之中選擇,因此可以在大的雜湊表305內識別唯一使用者資料。
如果使用者資料儲存在圖4的小雜湊表405中,則物理行識別字 610可以看起來類似於條目630。在條目630中,區域識別字包含兩個位元:第一位元指示使用者資料不儲存在圖4的大雜湊表305中,並且第二位元指示使用者資料儲存在圖4的小雜湊表405中。物理位址隨後包含列索引的m個位元(識別雜湊桶)以及行索引的n'個位元(識別路徑)。應注意,因為n'總小於n,所以條目630不需要比條目625更多的位元,即使兩個位元用於識別儲存使用者資料的區域。
如果使用者資料儲存在圖4的溢位區域320中,則物理行識別字 610可以看起來類似於條目635。在條目635中,區域識別字同樣包含兩個位元:第一位元指示使用者資料不儲存在圖4的大雜湊表305中,並且第二位元指示使用者資料儲存在圖4的溢位區域320中。物理位址可以通過任何所需方式,包含行和列索引(類似於條目625和630),或是用任何其它所需格式來格式化。
儘管條目625、630和635示出如何區分圖4的大雜湊表305、圖4的小雜湊表405和圖4的溢位區域320中的條目,但是本發明概念的實施例可以支援所使用的其它形式。例如,在包含如圖5中所示的多個小雜湊表405和505的本發明概念的實施例中,區域615可以包含用於區分圖5的大雜湊表305和其它區域的一個位元,並且隨後使用兩個位元在圖5的小雜湊表405和505與圖5的溢位區域320之中選擇。或者,區域615可以總是使用兩個位元在多至四個不同區域之中選擇,或總是使用三個位元在多至八個不同區域之中選擇等。此方法具有以下優點:不需要可變數目的位元來選擇區域,但是將需要可變數目的位元來儲存整個物理行識別字,並且將留下未使用區域615的位元的某一組合。
應注意,儘管圖6將轉換表310描述為其中條目切斷從邏輯位址產生的多個位元的表,但是還可以使用其它技術:例如使用雜湊函數實施轉換表310。當使用雜湊函數時,特定邏輯位址(或邏輯位址的相關高階位元)可能經受雜湊函數。雜湊函數的結果隨後可以用於確定使用者資料的位置(圖4的大雜湊表305、圖4的小雜湊表405,或圖4的溢位區域320)和物理位址。
返回到圖4,在使用可去重複記憶體時的一個問題是檢查使用者資料是否實際上儲存在記憶體115中某處。例如,不同應用程式可以請求存取相同資料,但是使用不同邏輯位址(因為應用程式既不可能瞭解其它應用程式,其它應用程式也對使用者資料不感興趣)。簽名表315可以用於説明確定給定使用者資料是否是已存在於記憶體115中的一些其它使用者資料的複本,並且防止儲存使用者資料的冗餘複本。
當使用者資料將重新儲存在記憶體115中時,雜湊函數可以施加到使用者資料以生成簽名。此雜湊函數可以與可以用於確定使用者資料實際上在記憶體115中的儲存位置的雜湊函數相同,或此雜湊函數可以是不同雜湊函數。與可以用於確定使用者資料將儲存的位置的雜湊函數不同,用於生成簽名的雜湊函數對使用者資料本身,而不是使用者資料的邏輯位址執行雜湊。隨後可以搜索簽名表315以查看是否存在簽名。
應注意,簽名的長度將通常比使用者資料本身短(即,更少位元)。因此,不同使用者資料可以生成相同簽名。換句話說,如果在簽名表315中找到簽名匹配,所述匹配並不自動地表示使用者資料已儲存在記憶體115中。為了確定使用者資料是否實際上儲存在記憶體115中,使用者資料與記憶體115中的所識別資料進行比較:如果全面比較指示匹配,則使用者資料已儲存在記憶體115中。在這種情況下,轉換表310可以設定成使圖6的物理行識別字610指向儲存使用者資料的位置。應注意,逆主張是確實的:如果在簽名表315中未找到簽名匹配,則使用者資料尚未儲存在記憶體115中(因為相同資料將不會使用相同雜湊函數生成不同簽名)。在這種情況下,新條目可以添加到可以映射回邏輯位址的簽名表315。
簽名表315通常僅參考儲存在大雜湊表305和小雜湊表405中的使用者資料來使用。也就是說,簽名表315不用於儲存在溢位區域320中的資料。原因很簡單:溢位區域320不經受去重,因此重復資料可以儲存在那裡。
圖7A-7B示出根據本發明概念的實施例的將圖4的可擴展雜湊表與可去重複記憶體一起使用的實例過程的流程圖。在圖7A中,在塊705處,圖4的記憶體115可以從圖1的機器105(從運行於機器105上的應用程式、作業系統或某一其它元件)接收圖6的邏輯位址605,作為資料請求的一部分。在塊710處,圖4的記憶體115可以確定對應於圖6的邏輯位址605的圖6的物理行識別字 610。應注意,如何確定圖6的物理行識別字 610取決於是否讀取或寫入資料,因為在這些情況下,不同方法用於確定圖6的物理行識別字 610。下文分別參考圖8和9A-9C示出如何確定用於讀取和寫入請求的圖6的物理行識別字 610的流程圖。
在確定圖6的物理行識別字 610之後,隨後在塊715處,圖4的記憶體115使用圖6的物理行識別字 610的區域識別字來確定資料所儲存的位置。如果資料儲存在圖4的溢位區域320中,則在塊720處,使用從圖6的物理行識別字 610產生的物理位址存取使用者資料(取決於所發佈請求的類型,其可以從圖4的溢位區域320讀取資料或將資料寫入到圖4的溢位區域320),之後處理結束。否則,在塊725處,圖4的記憶體115確定圖4的大雜湊表305或圖4的小雜湊表405中(不同之處在於,在雜湊表儲存在圖4的記憶體115中的情況下,資料的存取相同)的行索引和列索引(即,雜湊桶和路徑)。
在塊730(圖7B)處,圖4的記憶體115確定是否可以在指定的行索引和列索引處“找到”所請求資料。例如,當資料將寫入到雜湊表中的一個時,可能會發生行索引和列索引識別已被資料佔用的位置(不太可能但可能發生的事)。在這種情況下,可以將使用者資料寫入到鄰近位置(例如,在與行索引的某一預定差量內,同一雜湊桶中的另一路徑),因此替代地在讀取時將需要從所述位置進行檢索。下文參考圖9A-9C進一步論述在雜湊表中視為“鄰近”的位置。應注意,在寫入請求的情況下,“找到”資料表示雜湊表中存在可以寫入資料的可用條目。
應注意,在圖6的邏輯位址605是讀取請求的一部分的情況下,圖4的記憶體115可能無法確定在指定行索引和列索引處的資料不是所請求資料。在此類情況下,塊730通常會返回“是”結果,並且自動地過渡到塊735以存取資料。
如果在指定行索引和列索引處找到資料,或如果指定行索引和列索引可用於儲存寫入請求的資料,則在塊735處,圖4的記憶體115可以存取資料,此後處理完成。否則,如果資料將寫入,但是行索引和列索引識別已儲存資料的位置,則在塊740處,圖4的記憶體115可以搜索用於寫入使用者資料的位置的鄰近條目。在塊745處,如果不存在可以寫入使用者資料的鄰近位置,則在塊750處,圖4的記憶體115可以報告錯誤。或者,且更確切地說,在資料將寫入到雜湊表中的一個,但出於某種原因不可以寫入到雜湊表中的一個的情況下,圖6的物理行識別字 610可以改變成指向圖4的溢位區域320,而不是雜湊表(在這種情況下,處理可以通過圖7A的塊720繼續)。否則,在鄰近“找到”資料,並且在塊735處,可以從雜湊表存取使用者資料,並且處理完成。
圖8示出根據本發明概念的實施例的用於確定用於圖4的記憶體115中的讀取請求中的邏輯位址的圖6的物理行識別字(Physical Line Identifier, PLID)610的實例過程的流程圖。在讀取請求的情況下,過程簡單。在塊805處,邏輯位址用於存取圖4的轉換表310。轉換表310隨後可以提供圖6的物理行識別字 610,可以從所述物理行識別字確定物理位址(其可以包含到雜湊表中的一個中的行索引和列索引),所述物理位址可以用於從圖4的記憶體115中的合適區域存取資料。
圖9A-9C示出根據本發明概念的實施例的用於確定用於圖4的記憶體115中的寫入請求中的邏輯位址的圖6的物理行識別字(Physical Line Identifier, PLID)610的實例過程的流程圖。在圖9A中,在塊905處,圖4的記憶體115可以生成正寫入的資料的簽名。在塊910處,圖4的簽名表315可以查看是否存在簽名。如果找到簽名匹配,則在塊915處,圖4的記憶體115可以查看儲存在雜湊表(其可以是圖4的大雜湊表305或圖4的小雜湊表405)中的資料是否匹配;否則,在塊920處,圖4的記憶體115可以查看圖4的簽名表315是否具有用於新條目的空間。
如果在塊915處,儲存在雜湊表中的資料匹配,則在塊925(圖9B)處,圖4的記憶體115可以查看圖4的參考計數器420是否會在遞增的情況下溢出(如果圖4的參考計數器420已達到其最大值,則可能發生溢出)。如果是,或如果在圖9A的塊920處簽名表不具有用於新條目的空間,則應將使用者資料寫入到圖4的溢位區域320,並且在塊930處,記憶體115生成用於圖4的溢位區域320的圖6的物理行識別字 610。或者,如果在圖4的簽名表315中找到簽名,資料與雜湊表中的條目匹配,並且圖4的參考計數器420不會溢出,則在塊935處,圖4的記憶體115可以使圖4的參考計數器420遞增,此後處理可以結束。應注意,如果圖4的參考計數器420可以在不溢出的情況下遞增,則根本不需要將資料寫入到圖4的記憶體115(所述資料已儲存在雜湊表中),使得圖7A中的處理也將結束。
如果在圖4的簽名表315中找到簽名,但是在塊915處,資料並不匹配,則已佔用邏輯位址通常可以映射到的雜湊桶和路徑的特定組合。此情況被稱為“雜湊衝突”。當出現雜湊衝突時,存在若干個回應方法。如在塊940處所示,一個可能是找到雜湊表中的新的可用位置並且將圖6的物理行識別字 610更到到指向新位置。第二可能是直接控制塊930並且將資料寫入到圖4的溢位區域320,而不是雜湊表,由此再次相應地更新圖6的物理行識別字 610。如塊945處所示的第三可能是保持圖6的物理行識別字 610不便,並且將所述物理行識別字留給圖4的記憶體115以確定資料實際上儲存在其它地方。例如,存在雜湊衝突的常規解決方案,例如開放定址,其中資料不儲存在所識別的準確位置處,但此後可以儲存在第一位置中的某處,在雜湊衝突之後,所述第一位置是空的。當使用開放定址時,資料可以儲存在由圖6的物理行識別字 610所識別的位置之後的任何位址中,或資料可以儲存在固定的預定數目的位置內(固定的預定數目可以設定成任何所需值)。在本發明概念的又一實施例中,資料甚至可以儲存在由圖6的物理行識別字 610指定的位置之前,同樣可能儲存在一些固定的預定數目的位置內。無論使用什麼方法,圖4的記憶體115可以使用此方法來生成圖6的物理行識別字 610以及從由圖6的物理行識別字 610指定的位置存取資料。本發明概念的實施例還可以支持雜湊衝突的其它解決方案。
如果在圖4的簽名表315中未找到簽名並且圖4的簽名表315具有用於新條目的空間,則在塊950(圖9C)處,可以將簽名添加到圖4的簽名表315,並且在塊955處,記憶體115可以取決於可以找到可用條目的位置而生成用於圖4的大雜湊表305或圖4的小雜湊表405的圖6的物理行識別字610。
圖10示出根據本發明概念的實施例的用於確定是否增加圖4的小雜湊表405的大小的實例過程的流程圖。在圖10中,在塊1005處,圖4的小雜湊表405可以查看其是否接近容量。圖4的記憶體115還可以查看圖4的溢位區域320是否具有可以再利用以供圖4的小雜湊表405使用的足夠的可用儲存空間。由於圖4的小雜湊表405的大小將加倍,因此圖4的溢位區域320需要具有至少與圖4的小雜湊表405已使用的空間一樣大的空間:可能更多空間,因為一些資料可能已儲存在圖4的溢位區域320中並且可能需要保持在圖4的溢位區域320中。如果圖4的小雜湊表405具有足夠空間,或圖4的溢位區域320具有不足以支援圖4的增加的小雜湊表405的儲存空間,則處理可以結束。否則(並且假設圖4的小雜湊表405的值n'比圖4的大雜湊表305的值n小至少2),則在塊1010處,可以減小圖4的溢位區域320的大小的代價來增加圖4的小雜湊表405的大小。隨後,在塊1015處,圖4的小雜湊表405可以使路徑的數目加倍(通過遞增值n')以使用新添加的記憶體,此後處理結束。
在圖7A-10中,示出本發明概念的一些實施例。但本領域技術人員將認識到,通過改變塊的次序、通過省略塊,或通過包含未在附圖中示出的鏈路,本發明概念的其它實施例也是可能的。無論是否明確地描述,流程圖的所有此類變化都被視為本發明概念的實施例。
以下論述預期提供其中可以實施本發明概念的某些方面的一個或多個合適機器的簡要一般描述。一個或多個機器可以至少部分地通過從例如鍵盤、滑鼠等常規輸入裝置的輸入,以及通過從另一機器接收的指令、與虛擬實境(virtual reality, VR)環境的交互、生物計量回饋或其它輸入信號控制。本文所使用的術語“機器”預期廣泛地涵蓋單個機器、虛擬機器,或以通信方式耦合的機器、虛擬機器或一起操作的裝置的系統。示例性機器包含計算裝置,例如個人電腦、工作站、伺服器、可擕式電腦、掌上型裝置、電話、平板電腦等,以及交通裝置,例如私人或公共交通工具,例如汽車、火車、計程車等。
一個或多個機器可以包含嵌入式控制器,例如,可程式設計或不可程式設計邏輯裝置或陣列、專用積體電路(Application Specific Integrated Circuit, ASIC)、嵌入式電腦、智慧卡等。一個或多個機器可以利用例如通過網路介面、資料機或其它通信耦合與一個或多個遠端機器的一個或多個連接。機器可以借助於物理和/或邏輯網路,例如企業內部網、網際網路、局域網、廣域網路等互連。本領域技術人員將理解,網路通信可以利用各種有線和/或無線短程或遠端載波和協議,包含射頻(radio frequency, RF)、衛星、微波、電氣電子工程師學會(Institute of Electrical and Electronics Engineer, IEEE)802.11、Bluetooth®、光學、紅外線、電纜、鐳射等。
可以參考或結合包含功能、過程、資料結構、應用程式等的相關聯資料描述本發明概念的實施例,所述相關聯資料在通過機器存取時引起機器執行任務或定義抽象資料類型或低級硬體環境。相關聯資料可以儲存在例如揮發性和/或非揮發性記憶體,例如RAM、ROM等中,或其它儲存裝置以及其相關聯儲存媒體中,包含硬碟驅動器、軟碟、光學儲存裝置、磁帶、快閃記憶體、儲存棒、數位視訊光碟、生物儲存裝置等。相關聯資料可以採用包、串列資料、並行資料、傳播信號等形式在包含物理和/或邏輯網路的傳輸環境上傳遞,並且可以用壓縮或加密格式使用。相關聯資料可以用於分散式環境中,並且本地地和/或遠端地儲存用於機器存取。
本發明概念的實施例可以包含有形的非暫時性機器可讀媒體,包括可由一個或多個處理器執行的指令,所述指令包括用於執行如本文所描述的發明性概念的元件的指令。
在參考所說明實施例描述和說明本發明概念的原理之後,將認識到,所說明實施例的佈置和細節可以在不脫離此原理的情況下進行修改,並且可以按任何所需方式組合。而且,儘管前述論述集中於具體實施例,但是預期其它配置。具體而言,即使本文使用例如“根據本發明概念的實施例”等的表達,但是這些詞語一般表示參考實施例可能性,且並不意圖將本發明概念限制到具體實施例配置。如本文所使用,這些術語可以參考組合到其它實施例中的相同或不同實施例。
前述說明性實施例不應被解釋為限制其本發明概念。雖然已經描述幾個實施例,但本領域技術人員將容易瞭解,在實質上不脫離本公開的新穎教示和優點的情況下,對這些實施例的許多修改是可能的。因此,所有此類修改預期包含在如所附權利要求中定義的此發明概念的範圍內。
本發明概念的實施例可以擴展到以下陳述,而不具有限制性: 陳述1. 本發明概念的實施例包含記憶體系統,所述記憶體系統包括: 記憶體,用於儲存資料; 儲存在所述記憶體中的大雜湊表,所述大雜湊表包含一數目的多個桶和第一數目的路徑並且包含所述記憶體的第一部分,所述記憶體的所述一部分包含為2的第一冪的第一數目的位元組; 儲存在所述記憶體中的小雜湊表,所述小雜湊表包含所述數目的多個桶和第二數目的路徑並且包含所述記憶體的第二部分,所述記憶體的所述第二部分包含為2的第二冪的第二數目的位元組; 儲存在所述記憶體中的溢位區域,所述溢位區域包含所述記憶體的第三部分;以及 轉換表,用於將邏輯位址映射到物理行識別字(Physical Line Identifier, PLID),所述物理行識別字包含區域識別字和物理位址。
陳述2. 本發明概念的實施例包含根據陳述1所述的記憶體系統,其中所述區域識別字包含指示所述物理行識別字識別所述大雜湊表中的資料的第一位元。
陳述3. 本發明概念的實施例包含根據陳述2所述的記憶體系統,其中所述物理位址包含行索引和列索引。
陳述4. 本發明概念的實施例包含根據陳述2所述的記憶體系統,其中: 所述第一位元指示所述物理行識別字未識別所述大雜湊表中的資料;以及 所述區域識別字包含指示所述物理行識別字資料是處於所述小雜湊表中還是處於所述溢位區域中的第二位元。
陳述5. 本發明概念的實施例包含根據陳述4所述的記憶體系統,其中: 所述第二位元指示所述物理行識別字識別所述小雜湊表中的資料;以及 所述物理位址包含行索引和列索引。
陳述6. 本發明概念的實施例包含根據陳述1所述的記憶體系統,其中所述小雜湊表可以動態地增長。
陳述7. 本發明概念的實施例包含根據陳述6所述的記憶體系統,其中所述大雜湊表可以動態地增長。
陳述8. 本發明概念的實施例包含根據陳述1所述的記憶體系統,其中在不具有所述小雜湊表的情況下,所述記憶體系統的第一有效最小去重率低於所述大雜湊表的第二有效最小去重率。
陳述9. 本發明概念的實施例包含根據陳述1所述的記憶體系統,其進一步包括儲存在所述記憶體中的簽名表,所述簽名表儲存資料的多個簽名,所述資料儲存於所述大雜湊表和所述小雜湊表中, 其中所述簽名表可以防止將具有一列共同簽名的多個資料儲存在所述大雜湊表或所述小雜湊表中。
陳述10. 本發明概念的實施例包含一種方法,所述方法包括: 從處理器接收邏輯位址; 使用轉換表將所述邏輯位址映射到物理行識別字(Physical Line Identifier, PLID),所述物理行識別字包含區域識別字和物理位址; 使用所述區域識別字確定所述物理位址處於記憶體中的大雜湊表、小雜湊表還是溢出區域中;以及 使用所述物理位址存取所述記憶體中的資料。
陳述11. 本發明概念的實施例包含根據陳述10所述的方法,其中使用所述區域識別字確定所述物理位址處於記憶體中的大雜湊表、小雜湊表還是溢出區域中包含:如果未設定所述區域識別字中的第一位元,確定所述物理位址處於所述大雜湊表中。
陳述12. 本發明概念的實施例包含根據陳述10所述的方法,其中使用所述區域識別字確定所述物理位址處於記憶體中的大雜湊表、小雜湊表還是溢出區域中包含:如果設定所述區域識別字中的第一位元並且未設定所述區域識別字中的第二位元,確定所述物理位址處於所述小雜湊表中。
陳述13. 本發明概念的實施例包含根據陳述10所述的方法,其中使用所述區域識別字確定所述物理位址處於記憶體中的大雜湊表、小雜湊表還是溢出區域中包含:如果設定所述區域識別字中的第一位元並且設定所述區域識別字中的第二位元,確定所述物理位址處於所述溢出區域中。
陳述14. 本發明概念的實施例包含根據陳述10所述的方法,其中使用所述物理位址存取所述記憶體中的資料包含: 從所述物理位址確定行索引和列索引;以及 使用所述行索引和所述列索引存取所述大雜湊表和所述小雜湊表中的一個中的所述資料。
陳述15. 本發明概念的實施例包含根據陳述14所述的方法,其中使用所述行索引和所述列索引存取所述大雜湊表和所述小雜湊表中的一個中的所述資料包含:如果在所述行索引和所述列索引處的所述小雜湊表中未找到所述資料,搜索所述小雜湊表中的鄰近條目。
陳述16. 本發明概念的實施例包含根據陳述10所述的方法,其中使用所述物理位址存取所述記憶體中的資料包含使用所述物理位址存取所述溢位區域中的所述資料。
陳述17. 本發明概念的實施例包含根據陳述10所述的方法,其進一步包括: 確定所述小雜湊表正接近容量;以及 增加所述小雜湊表的大小,同時減小所述溢位區域的大小。
陳述18. 本發明概念的實施例包含根據陳述17所述的方法,其中增加所述小雜湊表的大小包含: 使所述小雜湊表的所述大小加倍;以及 減小所述溢位區域的所述大小。
陳述19. 本發明概念的實施例包含根據陳述17所述的方法,其中增加所述小雜湊表的大小包含增加所述小雜湊表中的多個行。
陳述20. 本發明概念的實施例包含根據陳述10所述的方法,其中: 使用所述物理位址存取所述記憶體中的資料包含將所述資料寫入到所述記憶體;以及 使用轉換表將所述邏輯位址映射到物理行識別字(Physical Line Identifier, PLID)包含選擇所述大雜湊表、所述小雜湊表和所述溢位區域中的一個以使用所述轉換表寫入所述資料。
陳述21. 本發明概念的實施例包含根據陳述20所述的方法,其中使用所述區域識別字確定所述物理位址處於記憶體中的大雜湊表、小雜湊表還是溢出區域中包含: 將雜湊函數應用於所述資料以生成簽名; 在簽名表中檢查所述簽名;以及 如果所述簽名處於所述簽名表中,則將所述資料寫入到所述溢位區域。
陳述22. 本發明概念的實施例包含根據陳述21所述的方法,其中在簽名表中檢查所述簽名包含在所述簽名表中檢查所述物理位址中的一列所述簽名。
陳述23. 本發明概念的實施例包含產品,包括非暫時性儲存媒體,所述非暫時性儲存媒體具有儲存於其上的在由機器執行時引起以下操作的指令: 從處理器接收邏輯位址; 使用轉換表將所述邏輯位址映射到物理行識別字(Physical Line Identifier, PLID),所述物理行識別字包含區域識別字和物理位址; 使用所述區域識別字確定所述物理位址處於記憶體中的大雜湊表、小雜湊表還是溢出區域中;以及 使用所述物理位址存取所述記憶體中的資料。
陳述24. 本發明概念的實施例包含根據陳述23所述的產品,其中使用所述區域識別字確定所述物理位址處於記憶體中的大雜湊表、小雜湊表還是溢出區域中包含:如果不設定所述區域識別字中的第一位元,確定所述物理位址處於所述大雜湊表中。
陳述25. 本發明概念的實施例包含根據陳述23所述的產品,其中使用所述區域識別字確定所述物理位址處於記憶體中的大雜湊表、小雜湊表還是溢出區域中包含:如果設定所述區域識別字中的第一位元並且未設定所述區域識別字中的第二位元,確定所述物理位址處於所述小雜湊表中。
陳述26. 本發明概念的實施例包含根據陳述23所述的產品,其中使用所述區域識別字確定所述物理位址處於記憶體中的大雜湊表、小雜湊表還是溢出區域中包含:如果設定所述區域識別字中的第一位元並且設定所述區域識別字中的第二位元,確定所述物理位址處於所述溢出區域中。
陳述27. 本發明概念的實施例包含根據陳述23所述的產品,其中使用所述物理位址存取所述記憶體中的資料包含: 從所述物理位址確定行索引和列索引;以及 使用所述行索引和所述列索引存取所述大雜湊表和所述小雜湊表中的一個中的所述資料。
陳述28. 本發明概念的實施例包含根據陳述27所述的產品,其中使用所述行索引和所述列索引存取所述大雜湊表和所述小雜湊表中的一個中的所述資料包含:如果在所述行索引和所述列索引處的所述小雜湊表中未找到所述資料,搜索所述小雜湊表中的鄰近條目。
陳述29. 本發明概念的實施例包含根據陳述23所述的產品,其中使用所述物理位址存取所述記憶體中的資料包含使用所述物理位址存取所述溢位區域中的所述資料。
陳述30. 本發明概念的實施例包含根據陳述23所述的產品,所述非暫時性儲存媒體具有儲存於其上的在由所述機器執行時引起以下操作的其它指令: 確定所述小雜湊表正接近容量;以及 增加所述小雜湊表的大小,同時減小所述溢位區域的大小。
陳述31. 本發明概念的實施例包含根據陳述30所述的產品,其中增加所述小雜湊表的大小包含: 使所述小雜湊表的所述大小加倍;以及 減小所述溢位區域的所述大小。
陳述32. 本發明概念的實施例包含根據陳述30所述的產品,其中增加所述小雜湊表的大小包含增加所述小雜湊表中的多個行。
陳述33. 本發明概念的實施例包含根據陳述23所述的產品,其中: 使用所述物理位址存取所述記憶體中的資料包含將所述資料寫入到所述記憶體;以及 使用轉換表將所述邏輯位址映射到物理行識別字(Physical Line Identifier, PLID)包含選擇所述大雜湊表、所述小雜湊表和所述溢位區域中的一個以使用所述轉換表寫入所述資料。
陳述34. 本發明概念的實施例包含根據陳述33所述的產品,其中使用所述區域識別字確定所述物理位址處於記憶體中的大雜湊表、小雜湊表還是溢出區域中包含: 將雜湊函數應用於所述資料以生成簽名; 在簽名表中檢查所述簽名;以及 如果所述簽名處於所述簽名表中,則將所述資料寫入到所述溢位區域。
陳述35. 本發明概念的實施例包含根據陳述34所述的產品,其中在簽名表中檢查所述簽名包含在所述簽名表中檢查所述物理位址中的一列所述簽名。
因此,考慮到對本文所描述的實施例的各種置換,此詳細描述和隨附材料預期僅為說明性的,並且不應被視為限制本發明概念的範圍。因此,本發明概念所要求保護的是落入所附權利要求書以及其等效物的範圍和精神內的所有此類修改。
105‧‧‧機器
110‧‧‧處理器
115‧‧‧記憶體
120‧‧‧儲存裝置
125‧‧‧記憶體控制器
130‧‧‧裝置驅動器
205‧‧‧時脈
210‧‧‧網路連接器
215‧‧‧匯流排
220‧‧‧使用者介面
225‧‧‧輸入/輸出引擎
305‧‧‧大雜湊表
310‧‧‧轉換表
315‧‧‧簽名表
320‧‧‧溢位區域
405、505‧‧‧小雜湊表
410、625、630、635‧‧‧條目
415‧‧‧資料
420‧‧‧頻率計數器/參考計數器
605‧‧‧邏輯位址
610‧‧‧物理行識別字
615‧‧‧區域識別字
620‧‧‧物理位址
705、710、715、720、725、730、735、740、745、750、805、905、910、915、920、925、930、935、940、945、950、955、1005、1010、1015‧‧‧塊
圖1示出根據本發明概念的實施例的可用於使用可去重複記憶體的機器。 圖2示出圖1的機器的額外細節。 圖3示出用於圖1的機器中的可去重複記憶體的常規雜湊表的使用。 圖4至5示出根據本發明概念的實施例的可擴展雜湊表的使用。 圖6示出用於將邏輯位址映射到不同記憶體目的地的圖4的轉換表的使用。 圖7A-7B示出根據本發明概念的實施例的將圖4的可擴展雜湊表與可去重複記憶體一起使用的實例過程的流程圖。 圖8示出根據本發明概念的實施例的用於確定用於圖4的記憶體中的讀取請求中的邏輯位址的物理行識別字(Physical Line Identifier, PLID)的實例過程的流程圖。 圖9A-9C示出根據本發明概念的實施例的用於確定用於圖4的記憶體中的寫入請求中的邏輯位址的物理行識別字(Physical Line Identifier, PLID)的實例過程的流程圖。 圖10示出根據本發明概念的實施例的用於確定是否增加圖4的小雜湊表的大小的實例過程的流程圖。
Claims (20)
- 一種記憶體系統,包括: 記憶體,用於儲存資料; 大雜湊表,儲存在所述記憶體中,所述大雜湊表包含一數目的多個桶和第一數目的路徑並且包含所述記憶體的第一部分,所述記憶體的所述一部分包含為2的第一冪的第一數目的位元組; 小雜湊表,儲存在所述記憶體中,所述小雜湊表包含所述數目的多個桶和第二數目的路徑並且包含所述記憶體的第二部分,所述記憶體的所述第二部分包含為2的第二冪的第二數目的位元組; 溢位區域,儲存在所述記憶體中,所述溢位區域包含所述記憶體的第三部分;以及 轉換表,用於將邏輯位址映射到物理行識別字,所述物理行識別字包含區域識別字和物理位址。
- 如申請專利範圍第1項所述的記憶體系統,其中所述區域識別字包含指示所述物理行識別字識別所述大雜湊表中的資料的第一位元。
- 如申請專利範圍第2項所述的記憶體系統,其中所述物理位址包含行索引和列索引。
- 如申請專利範圍第2項所述的記憶體系統,其中: 所述第一位元指示所述物理行識別字未識別所述大雜湊表中的資料;以及 所述區域識別字包含指示所述物理行識別字資料是處於所述小雜湊表中還是處於所述溢位區域中的第二位元。
- 如申請專利範圍第1項所述的記憶體系統,其中所述小雜湊表能夠動態地增長。
- 如申請專利範圍第1項所述的記憶體系統,更包括儲存在所述記憶體中的簽名表,所述簽名表儲存資料的多個簽名,所述資料儲存於所述大雜湊表和所述小雜湊表中, 其中所述簽名表能夠防止將具有一列共同簽名的多個資料儲存在所述大雜湊表或所述小雜湊表中。
- 如申請專利範圍第1項所述的記憶體系統,更包括儲存在所述記憶體中的簽名表,所述簽名表儲存資料的多個簽名,所述資料儲存於所述大雜湊表和所述小雜湊表中, 其中所述簽名表能夠防止將具有一列共同簽名的多個資料儲存在所述大雜湊表或所述小雜湊表中。
- 一種方法,包括: 從處理器接收邏輯位址; 使用轉換表將所述邏輯位址映射到物理行識別字,所述物理行識別字包含區域識別字和物理位址; 使用所述區域識別字確定所述物理位址處於記憶體中的大雜湊表、小雜湊表還是溢出區域中;以及 使用所述物理位址存取所述記憶體中的資料。
- 如申請專利範圍第8項所述的方法,其中使用所述區域識別字確定所述物理位址處於記憶體中的大雜湊表、小雜湊表還是溢出區域中包含:如果未設定所述區域識別字中的第一位元,確定所述物理位址處於所述大雜湊表中。
- 如申請專利範圍第8項所述的方法,其中使用所述區域識別字確定所述物理位址處於記憶體中的大雜湊表、小雜湊表還是溢出區域中包含:如果設定所述區域識別字中的第一位元並且未設定所述區域識別字中的第二位元,確定所述物理位址處於所述小雜湊表中。
- 如申請專利範圍第8項所述的方法,其中使用所述區域識別字確定所述物理位址處於記憶體中的大雜湊表、小雜湊表還是溢出區域中包含:如果設定所述區域識別字中的第一位元並且設定所述區域識別字中的第二位元,確定所述物理位址處於所述溢出區域中。
- 如申請專利範圍第8項所述的方法,其中使用所述物理位址存取所述記憶體中的資料包含: 從所述物理位址確定行索引和列索引;以及 使用所述行索引和所述列索引存取所述大雜湊表和所述小雜湊表中的一個中的所述資料。
- 如申請專利範圍第12項所述的方法,其中使用所述行索引和所述列索引存取所述大雜湊表和所述小雜湊表中的一個中的所述資料包含:如果在所述行索引和所述列索引處的所述小雜湊表中未找到所述資料,搜索所述小雜湊表中的鄰近條目。
- 如申請專利範圍第8項所述的方法,更包括: 確定所述小雜湊表正接近容量;以及 增加所述小雜湊表的大小,同時減小所述溢位區域的大小。
- 如申請專利範圍第14項所述的方法,其中增加所述小雜湊表的大小包含增加所述小雜湊表中的多個行。
- 本發明概念的實施例包含產品,包括非暫時性儲存媒體,其特徵在於,所述非暫時性儲存媒體具有儲存於其上的在由機器執行時引起以下操作的指令: 從處理器接收邏輯位址; 使用轉換表將所述邏輯位址映射到物理行識別字,所述物理行識別字包含區域識別字和物理位址; 使用所述區域識別字確定所述物理位址處於記憶體中的大雜湊表、小雜湊表還是溢出區域中;以及 使用所述物理位址存取所述記憶體中的資料。
- 如申請專利範圍第16項所述的產品,其中使用所述區域識別字確定所述物理位址處於記憶體中的大雜湊表、小雜湊表還是溢出區域中包含:如果未設定所述區域識別字中的第一位元,確定所述物理位址處於所述大雜湊表中。
- 如申請專利範圍第16項所述的產品,其中使用所述區域識別字確定所述物理位址處於記憶體中的大雜湊表、小雜湊表還是溢出區域中包含:如果設定所述區域識別字中的第一位元並且未設定所述區域識別字中的第二位元,確定所述物理位址處於所述小雜湊表中。
- 如申請專利範圍第16項所述的產品,其中使用所述區域識別字確定所述物理位址處於記憶體中的大雜湊表、小雜湊表還是溢出區域中包含:如果設定所述區域識別字中的第一位元並且設定所述區域識別字中的第二位元,確定所述物理位址處於所述溢出區域中。
- 如申請專利範圍第16項所述的產品,其中使用所述物理位址存取所述記憶體中的資料包含: 從所述物理位址確定行索引和列索引;以及 使用所述行索引和所述列索引存取所述大雜湊表和所述小雜湊表中的一個中的所述資料。
Applications Claiming Priority (14)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201762450502P | 2017-01-25 | 2017-01-25 | |
US62/450,502 | 2017-01-25 | ||
US201762451157P | 2017-01-27 | 2017-01-27 | |
US62/451,157 | 2017-01-27 | ||
US201762453461P | 2017-02-01 | 2017-02-01 | |
US62/453,461 | 2017-02-01 | ||
US15/476,757 | 2017-03-31 | ||
US15/476,757 US10678704B2 (en) | 2016-03-29 | 2017-03-31 | Method and apparatus for enabling larger memory capacity than physical memory size |
US15/498,371 US10528284B2 (en) | 2016-03-29 | 2017-04-26 | Method and apparatus for enabling larger memory capacity than physical memory size |
US15/498,371 | 2017-04-26 | ||
US201762554904P | 2017-09-06 | 2017-09-06 | |
US62/554,904 | 2017-09-06 | ||
US15/823,549 | 2017-11-27 | ||
US15/823,549 US10437785B2 (en) | 2016-03-29 | 2017-11-27 | Method and apparatus for maximized dedupable memory |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201830249A true TW201830249A (zh) | 2018-08-16 |
TWI761419B TWI761419B (zh) | 2022-04-21 |
Family
ID=62961185
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW107100611A TWI761419B (zh) | 2017-01-25 | 2018-01-08 | 最大化可去重複記憶體的方法、記憶體系統和產品 |
Country Status (4)
Country | Link |
---|---|
JP (1) | JP7058132B2 (zh) |
KR (1) | KR102509913B1 (zh) |
CN (1) | CN108345433B (zh) |
TW (1) | TWI761419B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10628072B2 (en) * | 2018-08-21 | 2020-04-21 | Samsung Electronics Co., Ltd. | Scalable architecture enabling large memory system for in-memory computations |
CN109189349A (zh) * | 2018-10-16 | 2019-01-11 | 深圳忆联信息***有限公司 | 一种提升固态硬盘复写性能的方法及其*** |
CN112257368B (zh) * | 2019-07-02 | 2023-08-01 | 上海复旦微电子集团股份有限公司 | 时钟布局方法、装置、eda工具及计算机可读存储介质 |
CN112286966B (zh) * | 2020-09-23 | 2024-06-18 | 清华大学 | 一种数据流处理、恢复方法以及设备和存储介质 |
CN113595816A (zh) * | 2021-07-16 | 2021-11-02 | 清华大学 | 一种数据流测算方法、设备和存储介质 |
CN116991855B (zh) * | 2023-09-27 | 2024-01-12 | 深圳大普微电子股份有限公司 | 哈希表处理方法、装置、设备、介质、控制器及固态硬盘 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4060847B2 (ja) * | 2004-12-22 | 2008-03-12 | 株式会社東芝 | メモリ管理装置、コンピュータシステム及びメモリ管理方法 |
US7454592B1 (en) * | 2006-02-16 | 2008-11-18 | Symantec Operating Corporation | Block-level and hash-based single-instance storage |
JP5026213B2 (ja) | 2007-09-28 | 2012-09-12 | 株式会社日立製作所 | ストレージ装置及びデータ重複排除方法 |
US8312217B2 (en) * | 2008-12-30 | 2012-11-13 | Rasilient Systems, Inc. | Methods and systems for storing data blocks of multi-streams and multi-user applications |
US20110161553A1 (en) * | 2009-12-30 | 2011-06-30 | Nvidia Corporation | Memory device wear-leveling techniques |
CN102103518B (zh) * | 2011-02-23 | 2013-11-13 | 运软网络科技(上海)有限公司 | 一种在虚拟化环境中管理资源的***及其实现方法 |
US9223511B2 (en) * | 2011-04-08 | 2015-12-29 | Micron Technology, Inc. | Data deduplication |
US9501421B1 (en) | 2011-07-05 | 2016-11-22 | Intel Corporation | Memory sharing and page deduplication using indirect lines |
KR20130064518A (ko) * | 2011-12-08 | 2013-06-18 | 삼성전자주식회사 | 저장 장치 및 그것의 동작 방법 |
US9009165B2 (en) * | 2013-01-10 | 2015-04-14 | Telefonaktiebolaget L M Ericsson (Publ) | High performance hash-based lookup for packet processing in a communication network |
CN104035838B (zh) | 2013-03-08 | 2018-08-14 | 英特尔公司 | 硬件支持的存储日志记录 |
KR20140114515A (ko) * | 2013-03-15 | 2014-09-29 | 삼성전자주식회사 | 불휘발성 메모리 장치 및 그것의 중복 데이터 제거 방법 |
US10380073B2 (en) | 2013-11-04 | 2019-08-13 | Falconstor, Inc. | Use of solid state storage devices and the like in data deduplication |
US9792063B2 (en) * | 2014-01-15 | 2017-10-17 | Intel Corporation | Deduplication-based data security |
US9256549B2 (en) * | 2014-01-17 | 2016-02-09 | Netapp, Inc. | Set-associative hash table organization for efficient storage and retrieval of data in a storage system |
-
2018
- 2018-01-04 KR KR1020180001241A patent/KR102509913B1/ko active IP Right Grant
- 2018-01-08 TW TW107100611A patent/TWI761419B/zh active
- 2018-01-24 CN CN201810070223.3A patent/CN108345433B/zh active Active
- 2018-01-25 JP JP2018010614A patent/JP7058132B2/ja active Active
Also Published As
Publication number | Publication date |
---|---|
KR102509913B1 (ko) | 2023-03-14 |
KR20180087838A (ko) | 2018-08-02 |
TWI761419B (zh) | 2022-04-21 |
CN108345433B (zh) | 2023-05-02 |
JP7058132B2 (ja) | 2022-04-21 |
CN108345433A (zh) | 2018-07-31 |
JP2018120594A (ja) | 2018-08-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI761419B (zh) | 最大化可去重複記憶體的方法、記憶體系統和產品 | |
CN109085997B (zh) | 用于非易失性存储器的存储器高效持续键值储存 | |
US11874815B2 (en) | Key-value storage device and method of operating the same | |
US9846642B2 (en) | Efficient key collision handling | |
US7761648B2 (en) | Caching method for NAND flash translation layer | |
US20150113230A1 (en) | Directory storage method and query method, and node controller | |
KR102535828B1 (ko) | 메모리 컨트롤러 및 상기 메모리 컨트롤러의 동작 방법 | |
US20170364280A1 (en) | Object storage device and an operating method thereof | |
US11269811B2 (en) | Method and apparatus for maximized dedupable memory | |
US20140219041A1 (en) | Storage device and data processing method thereof | |
US11662932B2 (en) | Tiered storage system with defragmentation based on weighted flash fragmentation factor | |
US10482012B1 (en) | Storage system and method of operating thereof | |
US11132137B2 (en) | Methods and systems for providing read-optimized scalable offline de-duplication for blocks of data | |
US9524124B2 (en) | Semiconductor device | |
US11630780B2 (en) | Flash memory controller mechanism capable of generating host-based cache information or flash-memory-based cache information to build and optimize binary tree with fewer nodes when cache stores data from host | |
US11662949B2 (en) | Storage server, a method of operating the same storage server and a data center including the same storage server | |
TW202203016A (zh) | 用於排序鍵的鍵值儲存裝置及方法 | |
US20240192860A1 (en) | Method and device for log structured merge-tree based key-value data storage | |
US20230376201A1 (en) | Persistence logging over nvm express for storage devices application | |
US20230205427A1 (en) | Storage device including memory controller and operating method of the same |