TWI710901B - 記憶體重刪的方法及重刪動態隨機存取記憶體記憶體模組 - Google Patents
記憶體重刪的方法及重刪動態隨機存取記憶體記憶體模組 Download PDFInfo
- Publication number
- TWI710901B TWI710901B TW105136351A TW105136351A TWI710901B TW I710901 B TWI710901 B TW I710901B TW 105136351 A TW105136351 A TW 105136351A TW 105136351 A TW105136351 A TW 105136351A TW I710901 B TWI710901 B TW I710901B
- Authority
- TW
- Taiwan
- Prior art keywords
- hash
- buckets
- bucket
- memory
- data
- Prior art date
Links
Images
Classifications
-
- 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
-
- 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/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
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
-
- 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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
- G06F12/1018—Address translation using page tables, e.g. page table structures involving hashing techniques, e.g. inverted page tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
- G06F15/7821—Tightly coupled to memory, e.g. computational memory, smart memory, processor in memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/174—Redundancy elimination performed by the file system
- G06F16/1748—De-duplication implemented within the file system, e.g. based on file segments
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2255—Hash tables
-
- 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/0614—Improving the reliability of storage systems
- G06F3/0616—Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
-
- 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/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- 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/0625—Power saving in 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/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0647—Migration mechanisms
- G06F3/0649—Lifecycle management
-
- 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/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/065—Replication mechanisms
-
- 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/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- 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/0662—Virtualisation aspects
- G06F3/0665—Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
-
- 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
-
- 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
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- 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/0683—Plurality of storage devices
- G06F3/0685—Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/70—Masking faults in memories by using spares or by reconfiguring
- G11C29/74—Masking faults in memories by using spares or by reconfiguring using duplex memories, i.e. using dual copies
-
- 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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
-
- 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/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
- G06F2212/1044—Space efficiency improvement
-
- 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/40—Specific encoding of data in memory or cache
- G06F2212/401—Compressed data
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
一種記憶體重刪的方法包括:辨識多個雜湊表,每一個
所述雜湊表對應於雜湊函數且包括多個實體桶,每一實體桶包括路線且用以儲存資料;辨識多個虛擬桶,所述多個虛擬桶的每一個包括一些實體桶,且與另一虛擬桶共享實體桶;將實體桶中其上儲存有資料的每一實體桶辨識為被指派至單個虛擬桶;根據雜湊函數對資料線進行雜湊,以生成雜湊值;根據雜湊值判斷對應虛擬桶是否具有給資料區塊的可用空間;當對應虛擬桶不具有可用空間時將資料自對應虛擬桶依序移動至相鄰的虛擬桶直至對應虛擬桶具有給資料區塊的空間為止;以及將資料區塊儲存於對應虛擬桶中。
Description
本申請案主張於2016年3月29日在美國專利及商標局提出申請的美國臨時申請案第62/314,918號的優先權及權利,所述美國臨時申請案的內容全文併入本案供參考。
根據本發明的實施例的一或多個態樣是有關於資料重刪(data deduplication)。
資料重刪(或資料去重刪(data duplication elimination))指代減少記憶體裝置中的冗餘資料,以由此降低記憶體裝置的容量成本(capacity cost)。在資料重刪中,資料物件/項(例如,資料檔案)被分割成一或多個資料線/塊/區塊。藉由將由相同的資料組成的多個資料區塊與所儲存的單一資料區塊相關聯,資料區塊的重覆拷貝可藉由電腦記憶體而得到減少或去除,由此減少記憶體裝置中的冗餘資料拷貝的總數量。冗餘資料拷貝的減少可提高讀取速度及記憶體帶寬,且可潛在地使電力得到節省。
因此,若重覆的資料拷貝可減少至單個資料拷貝,則在使用相同數量的實體資源的同時記憶體裝置的總可用容量會增大。由於記憶體裝置的所得縮減(resultant economization)使得能夠減少資料重寫計數、且由於可捨棄對已儲存於記憶體中的重覆資料區塊的寫入請求,因此可藉由有效地提高寫入持久性(write endurance)來延長實作資料重刪的記憶體裝置的壽命。
傳統的資料重刪方法可能使用記憶體中重刪技術(in-memory deduplication technology),藉此將重刪引擎與中央處理單元或記憶體控制器(memory controller,MC)按以中央處理單元為中心的方式進行整合。此類方法通常實作經重刪快取(deduplicated cache,DDC),所述經重刪快取與所述記憶體控制器運作進而使得中央處理單元處理器能夠察覺到副本,並嘗試根據所述記憶體控制器的控制來服務經重刪記憶體操作(例如,內容查找、參考計數更新等)。重刪方法亦可實作直接轉譯緩衝器(direct translation buffer,DTB),所述直接轉譯緩衝器是用於對轉譯線進行快取以藉由自關鍵路徑移除轉譯提取(translation fetch)來提高資料讀取的快取,且直接轉譯緩衝器可相似於旁視緩衝器(lookaside buffer)。
重刪已被最普遍地用於硬驅動機。然而,對於在例如動態隨機存取記憶體(dynamic random-access memory,DRAM)等揮發性記憶體的區域中提供微粒重刪(fine grain deduplication)亦存在關注。
在此背景技術章節揭露的以上資訊僅是為了增強對本發明的背景技術的理解,且因此以上資訊可含有不構成先前技術的資訊。
本發明的實施例的各個態樣是針對動態隨機存取記憶體(DRAM)系統中的記憶體重刪。
根據本發明的實施例,提供一種記憶體重刪的方法,所述方法包括:辨識多個雜湊表,所述多個雜湊表的每一者對應於雜湊函數且包括多個實體雜湊桶,每一個所述實體雜湊桶包括路線且用以儲存資料;辨識多個虛擬桶,所述多個虛擬桶的每一者包括所述實體雜湊桶中的部份,且與所述虛擬桶中的另一者共享所述多個實體雜湊桶中的至少一者;將所述多個實體雜湊桶中其上儲存有資料的每一者辨識為被指派至所述多個虛擬桶中的對應的單個虛擬桶;根據各雜湊函數中的對應一者對資料線進行雜湊,以生成雜湊值;根據所述雜湊值判斷對應雜湊表的所述多個虛擬桶中的對應一者是否具有給資料區塊的可用空間;當所述多個虛擬桶中的所述對應一者不具有可用空間時將資料自所述多個虛擬桶中的所述對應一者依序移動至所述多個虛擬桶中的相鄰的一者直至所述多個虛擬桶的所述對應一者具有給所述資料區塊的空間為止;以及將所述資料區塊儲存於所述多個虛擬桶的所述對應一者中。
所述方法可更包括:對位址查找表記憶體進行更新,以
改變與所移動的所述資料區塊對應的一或多個查找位址。
所述多個雜湊表中的每一者可更包括參考計數線、簽名線、及跳字線。
所述方法可更包括:產生跳字向量,用於指示所述多個實體雜湊桶中含有資料的哪一實體雜湊桶對應於所述多個虛擬桶中的哪一者。
產生所述跳字向量可包括:對於所述多個虛擬桶中的每一者,利用二元指標來指示所述多個虛擬桶中的相應一者的所述多個實體雜湊桶中的每一者是否含有與所述多個虛擬桶中的所述相應一者相關聯的資料區塊。
所述方法可更包括:產生跳字值,所述跳字值包括每實體雜湊桶的log2(H)位元來指示所述實體雜湊桶中含有資料的哪一實體雜湊桶對應於所述多個虛擬桶中的哪一者。
產生所述跳字值可包括產生二維陣列,包括所述實體雜湊桶中含有資料的每一實體雜湊桶在表示相關聯的各對所述實體雜湊桶與所述虛擬桶的位置處的準位址。
可將所述雜湊表儲存於揮發性記憶體上。
所述揮發性記憶體可包括動態隨機存取記憶體(DRAM)。
所述方法可更包括:以實體線ID(PLID)對所述雜湊表進行索引,所述實體線ID(PLID)包括log2(H)位元的虛擬桶利用值域且包括與所述虛擬桶中的對應一者中的資料區塊的數目相
等的值。
所述方法可更包括:當將物件寫入至所述虛擬桶中的所述對應一者時,將所述虛擬桶利用值域增加一。
所述方法可更包括:當所述對應的雜湊表已滿時,將所述資料區塊儲存於緩衝記憶體中。
根據本發明的實施例,提供一種重刪動態隨機存取記憶體(DRAM)記憶體模組,用於藉由減少記憶體中的重覆資料區塊來重刪記憶體,所述重刪DRAM記憶體模組包括:雜湊表記憶體,用於儲存經重刪的多個資料區塊;位址查找表記憶體(address lookup table memory,ALUTM),用於儲存與所述經重刪資料區塊對應的位址;以及處理器,用於接收讀取請求以致能所述重刪DRAM記憶體模組自所述雜湊表記憶體擷取所述多個資料區塊並輸出所述多個資料區塊,且用於接收寫入請求以致能所述重刪DRAM記憶體模組將所述多個資料區塊儲存於所述雜湊表記憶體中。
所述雜湊表記憶體可包括儲存於所述雜湊表記憶體中的多個雜湊表的三維陣列,所述多個雜湊表中的每一者包括多個實體雜湊桶,每一個所述實體雜湊桶包括路線且用以儲存所述經重刪的所述多個資料區塊。
所述多個雜湊表中的每一者可更包括多個虛擬桶,所述多個虛擬桶的每一者包括所述多個實體雜湊桶中的兩個或更多個。
所述重刪DRAM記憶體模組被配置以使所述經重刪的所述多個資料區塊於所述多個雜湊表中的對應一者內在所述多個虛擬桶中的相鄰多個虛擬桶之間移動。
所述重刪DRAM記憶體模組可能夠無需外部供應的命令而執行資料重刪。
所述重刪DRAM記憶體模組可更包括緩衝記憶體,所述緩衝記憶體用於當所述雜湊表記憶體已滿時儲存資料。
根據本發明的實施例,提供一種重刪DRAM記憶體模組,用於減少記憶體中的重覆資料區塊,所述重刪DRAM記憶體模組包括:儲存於所述重刪DRAM記憶體模組中的多個雜湊表的三維陣列,所述多個雜湊表中的每一者包括多個實體雜湊桶,每一個所述實體雜湊桶包括路線且被配置以儲存所述多個資料區塊;處理器;以及記憶體,其中所述記憶體上儲存有指令,所述指令當由所述處理器執行時會使得所述重刪DRAM記憶體模組對先前儲存的經重刪資料區塊在所述多個雜湊表中的一者的相鄰的多個虛擬桶之間移動,所述多個虛擬桶中的每一者包括所述多個實體雜湊桶中的兩個或更多個。
所述記憶體上可更儲存有指令,所述指令當由所述處理器執行時會使得所述重刪DRAM記憶體模組將新進資料儲存於所述虛擬桶中多個的一個,在此一個中先前儲存的經重刪的所述資料區塊是已被移動。
100:重刪隨機存取記憶體(DRAM)系統架構
110:處理器
120:記憶體控制器
130:重刪DRAM記憶體模組
140:中央處理單元模組/核心模組
210:位址查找表記憶體
220:雜湊表記憶體
230:溢出區/緩衝記憶體
310:雜湊桶/實體雜湊桶
320:雜湊路線
330:簽名線
340:參考/頻率計數線
342:參考計數
350:實體線ID
380:多路線雜湊表/雜湊陣列/雜湊表
400:雜湊表陣列/陣列/多雜湊表陣列
410:雜湊桶/實體桶/實體雜湊桶/「附近位置」雜湊桶/第一可用實體桶/第一實體桶/意圖實體桶/佔用實體桶
420:雜湊路線
460:虛擬雜湊桶/虛擬桶/意圖虛擬桶
480:多雜湊表/雜湊表/第一意圖雜湊表
591:跳字值
592:跳字向量
650:實體線ID
651:鍵值
652:虛擬桶利用值域/虛擬桶利用值
PB0:實體桶/實體雜湊桶
PB1:意圖實體桶/實體桶/實體雜湊桶
PB2:實體桶/意圖實體桶/實體雜湊桶
PB3:實體桶/實體雜湊桶
PB4:實體桶/實體雜湊桶
PB5:實體桶/實體雜湊桶
PB6:實體桶
S701、S702、S702a、S703、S703a、S704、S705、S706、S706a、S707、S801、S802、S803、S804、S805:操作
VB0:虛擬桶/第一虛擬桶
VB1:虛擬桶/第二虛擬桶
VB2:虛擬桶/第三虛擬桶
VB3:虛擬桶/第四虛擬桶
參照說明書、申請專利範圍、及附圖,將領會且理解本發明的該些及其他態樣,在附圖中:
圖1是本發明實施例的重刪DRAM系統架構的方塊圖。
圖2是圖1所示實施例的重刪DRAM記憶體模組中的各類記憶體的方塊圖。
圖3是圖2所示實施例的雜湊表記憶體的雜湊表的方塊圖。
圖4是根據本發明實施例的多雜湊表陣列的方塊圖。
圖5A、圖5B、及圖5C繪示根據本發明實施例的用於產生跳字(hopword)以將虛擬桶與特定實體桶相關聯的二維陣列。
圖6是根據本發明實施例的用於對雜湊表記憶體中的資料區塊進行定址的實體線ID(PLID)的方塊圖。
圖7是說明根據本發明實施例的用於使用跳格(hopscotch)方法將資料寫入至記憶體模組的多雜湊表陣列中的過程的流程圖。
圖8是說明根據本發明實施例的用於自記憶體模組的多雜湊表陣列讀取資料的過程的流程圖。
藉由參照以下對實施例的詳細說明及附圖,可更易於理解本發明概念的特徵及達成該些特徵的方法。在下文中,將參照附圖來更詳細地闡述示例性實施例,在所有附圖中相同的參考號碼指代相同的元件。然而,本發明可被實施為各種不同的形式,
且不應被視為僅限於本文中所說明的實施例。確切而言,提供該些實施例作為例子是為了使此揭露內容將透徹及完整,並將向熟習此項技術者充分傳達本發明的態樣及特徵。因此,為了全面理解本發明的態樣及特徵,可不再闡述對於此項技術中具有通常知識者而言不必要的過程、元件、及技術。除非另外注明,否則在所有附圖及書面說明通篇中,相同的參考編號表示相同的元件,且因此將不再對其予以贅述。在圖式中,為清晰起見,可誇大元件、層、及區的相對大小。
應理解,儘管本文中可能使用用語「第一(first)」、「第二(second)」、「第三(third)」等來闡述各種元件、組件、區、層、及/或區段,然而該些元件、組件、區、層、及/或區段不應受該些用語限制。該些用語用於區分各個元件、組件、區、層、或區段。因此,在不背離本發明的精神及範圍的條件下,可將以下所述的第一元件、組件、區、層、或區段稱為第二元件、組件、區、層、或區段。
為易於說明,本文中可能使用例如「在...之下(beneath)」、「在...下面(below)」、「下方的(lower)」、「在…以下(under)」、「在...之上(above)」、「上方的(upper)」等空間相對性用語來闡述圖中所示的一個元件或特徵與另一(其他)元件或特徵的關係。應理解,所述空間相對性用語旨在除圖中所繪示的定向以外亦囊括所述裝置在使用或操作中的不同定向。舉例而言,若圖中裝置被翻轉,則被闡述為在其他元件或特徵「下面」
或「之下」或者「以下」的元件此時將被定向為在其他元件或特徵「之上」。因此,實例性用語「在...下面」及「在...以下」可囊括上方及下方兩種定向。所述裝置亦可具有其他定向(例如,旋轉90度或處於其他定向),且本文中所用的空間相對性描述語應相應地進行解釋。
應理解,當稱元件、層、區、或組件位於另一元件、層、區、或組件「上(on)」、「連接至(connected to)」或「耦合至(coupled to)」另一元件、層、區、或組件時,所述元件、層、區、或組件可直接位於所述另一元件、層、區、或組件上、直接連接至或直接耦合至所述另一元件、層、區、或組件,抑或可存在一或多個中間元件、層、區、或組件。另外,亦應理解,當稱元件或層位於兩個元件或層「之間(between)」時,所述元件或層可為所述兩個元件或層之間的唯一元件或層,抑或亦可存在一或多個中間元件或層。
在以下例子中,x軸、y軸、及z軸並非僅限於直角座標系的三個軸,而是可以更寬泛的意義進行解釋。舉例而言,x軸、y軸、及z軸可彼此垂直,或可代表彼此不垂直的不同的方向。
本文中所用的術語僅是為了闡述具體實施例,而非旨在限制本發明。除非上下文中清楚地另外指明,否則本文所用的單數形式「一(a及an)」旨在亦包含複數形式。更應理解,當在本說明書中使用用語「包括(comprises/comprising)」、及「包含(includes/including)」時,是指明所陳述特徵、整數、步驟、操
作、元件、及/或組件的存在,但不排除一或多個其他特徵、整數、步驟、操作、元件、組件及/或其群組的存在或增添。本文中使用的用語「及/或(and/or)」包括相關所列項其中一或多個項的任意及所有組合。當例如「…中的至少一者(at least one of)」等表達位於一系列元件之前時,是修飾整個系列的元件,而並非修飾所述系列中的各別元件。
本文所用用語「實質上(substantially)」、「大約(about)」及類似用語用作近似值用語、而並非作為程度用語,並且旨在慮及此項技術中具有通常知識者將知的量測值或計算值的固有偏差。此外,在闡述本發明的實施例時使用「可(may)」是指代「本發明的一或多個實施例」。本文所用用語「使用(use)」、「正使用(using)」、及「被使用(used)」可視為分別與用語「利用(utilize)」、「正利用(utilizing)」、及「被利用(utilized)」同義。此外,用語「示例性(exemlary)」旨在指代例子或說明。
當可以不同的方式實作某一實施例時,可與所述次序不同地執行一特定過程次序。舉例而言,可實質上同時執行或以與所述次序相反的次序執行兩個連續的所述過程。
根據本文所述本發明的實施例的電子裝置或電裝置及/或任何其他相關裝置或組件可利用任何適合的硬體、韌體(例如,應用專用積體電路(application-specific integrated circuit))、軟體、或軟體、韌體、及硬體的組合來實作。舉例而言,可將該些裝置中的各種組件形成於一個積體電路(integrated circuit,IC)
晶片上或單獨的積體電路晶片上。此外,可將該些裝置的各種組件實作於撓性印刷電路膜、膠帶載體封裝(tape carrier package,TCP)、印刷電路板(printed circuit board,PCB)上、或形成於一個基板上。此外,該些裝置的各種組件可為在一或多個計算裝置中由一或多個處理器運行、執行電腦程式指令並與用於執行本文所述各種功能性的其他系統組件進行交互的過程或線程。電腦程式指令儲存於可在使用例如(舉例而言,隨機存取記憶體(random access memory,RAM))等標準記憶體裝置的計算裝置中實作的記憶體中。電腦程式指令亦可儲存於例如(舉例而言,光碟唯讀記憶體(CD-ROM)、快閃驅動機、或類似元件)等其他非暫時性電腦可讀媒體中。此外,熟習此項技術者應知,在不背離本發明示例性實施例的精神及範圍的條件下,可將各種計算裝置的功能性組合或整合成單一的計算裝置,或者可使一特定計算裝置的功能性跨越一或多個其他計算裝置來分佈。
除非另外定義,否則本文所用的全部用語(包括技術及科學用語)的含義皆與本發明所屬技術領域中具有通常知識者所通常理解的含義相同。更應理解,該些用語(例如在常用字典中所定義的用語)應被解釋為具有與其在相關技術的上下文及/或本說明書中的含義一致的含義,且除非本文中進行明確定義,否則不應將其解釋為具有理想化或過於正式的意義。
圖1是本發明實施例的重刪DRAM系統架構的方塊圖。
參照圖1,為用作電腦記憶體,重刪記憶體執行被稱為「轉
譯(translation)」的功能以記錄原始資料的內容與已進行重刪的一組獨有記憶體區塊之間的關係,其中所記錄的關係被以壓縮形式進行記憶。舉例而言,原始資料的位址可儲存於查找表中。
通常,中央處理單元的處理器110缺少對實體記憶體(例如,重刪DRAM記憶體模組130)的直接存取,取而代之,所述實體記憶體被作為記憶體線陣列而由記憶體控制器120進行管理。以中央處理單元為中心的重刪系統在中央處理單元內部的資料到達記憶體系統之前試圖對所述資料進行快取。
本實施例的重刪DRAM系統架構100使用與傳統的以中央處理單元為中心的重刪相對的以記憶體為中心的重刪,意為重刪DRAM記憶體模組130可在不存在來自處理器110的命令的情況下執行記憶體重刪。重刪DRAM系統架構100亦使用儲存於重刪DRAM記憶體模組130中的可配置重刪演算法來增大所述記憶體的容量效益(capacity benefit),以由此提供大容量記憶體解決方案(memory solution)。亦即,不同於以中央處理單元為中心的重刪,本實施例的重刪DRAM系統架構100具有包含於隨機存取記憶體模組(例如,重刪DRAM記憶體模組130)內的所有重刪智慧(deduplication intelligence)。因此,重刪能夠得以在中央處理單元模組140不知情的情況下在重刪DRAM記憶體模組130內執行,由此使得重刪DRAM記憶體模組130的容量能夠增大。亦即,由於重刪是以微粒的方式進行且是在揮發性記憶體內(例如,在重刪DRAM記憶體模組130內)進行操作,因此本實施例的所
有重刪智慧均發生於重刪DRAM記憶體模組130自身內,而中央處理單元中的核心(kernel)模組140可察覺不到在重刪DRAM記憶體模組130內執行的重刪操作的具體細節。
應理解,儘管本實施例闡述使用DRAM作為重刪DRAM記憶體模組130,然而在本發明的其他實施例中亦可使用其他類型的記憶體。此外,本實施例的重刪DRAM系統架構100能夠支援與多種類型的記憶體進行的介接。亦即,本實施例的重刪DRAM記憶體模組130能夠藉由記憶體控制器120而與多個不同類型的記憶體介面(例如,雙倍資料速率第四代同步動態隨機存取記憶體(double data rate fourth-generation synchronous dynamic random-access memory,DDR4)、周邊組件快速互連(Peripheral Component Interconnect Express,PCIe),周邊組件快速互連為用於將電腦連接至一或多個周邊裝置、DDR-T、及KTI的串列擴展匯流排標準)相關聯。因此,應注意,可使用不同的架構將重刪DRAM記憶體模組130整合成重刪DRAM系統架構100。
此外,儘管可能對現有的DRAM記憶體模組作出某些改變(例如,驅動器更新)來實作本實施例,然而,軟體實施方案使得能夠使用本實施例的重刪DRAM系統架構100而無需對作業系統(operating system)/中央處理單元模組140或處理器110作出實體改變。
本實施例的重刪DRAM系統架構100可針對DRAM智慧協定而在重刪DRAM記憶體模組130上實作系統晶片(system on
a chip,SoC),所述DRAM智慧協定例如為重刪、內容可定址能力(content addressability)、保全性(security)、記憶體內置處理器(processor-in-memory,PIM)、列位址選通(row address strobe,RAS)等,所述列位址選通為被發送至DRAM以告知所述DRAM關聯位址是列位址、藉此使所述DRAM中的資料位元儲存於藉由行位址與列位址的交叉點而進行定位的胞元中的訊號。
重刪DRAM系統架構100亦可具有智慧型系統軟體,所述智慧型系統軟體使得處理器110能夠與記憶體控制器120相結合地達成虛擬密度管理(virtual density management)、智慧型資料放置(smart data placement)、及DRAM智慧應用程式設計介面(Application Programming Interface,API)等。
重刪DRAM記憶體模組130可更具有3DS DRAM組件,例如具有各種形狀因數(form factor)的高容量DRAM記憶體模組(例如,雙列直插記憶體模組(dual in-line memory module,DIMM),2.5英吋,全高半長(full height half length,FHHL)、半高半長(half height half length,HHHL)、全高全長(full height full length,FHFL)等)。
因此,藉由提供使用本實施例的重刪DRAM系統架構100的以記憶體為中心的重刪系統,可直接在記憶體介面處執行重刪寫入過程,由此增大重刪DRAM記憶體模組130的容量。
圖2是圖1所示實施例的重刪DRAM記憶體模組中的各類記憶體的方塊圖,且圖3是圖2所示實施例的雜湊表記憶體的
雜湊表的方塊圖。
參照圖2,本發明的實施例的重刪DRAM記憶體模組可具有其中重刪DRAM記憶體模組130內部的記憶體空間被歸類成三個不同的區的重刪演算法架構。所述三個不同的區包括:位址查找表(lookup table,LUT)記憶體(address LUT memory,ALUTM)210,用於指示所儲存的經重刪資料區塊的位置;雜湊表記憶體220,用於儲存所述經重刪資料區塊;以及溢出/緩衝記憶體230,用於在雜湊表記憶體的雜湊表的各雜湊路線均已滿時儲存資料。
當資料區塊欲進入至重刪DRAM記憶體模組130中時,所述重刪演算法可運作以判斷所述資料區塊是否為新的先前未被儲存的、在位址查找表記憶體210中缺少任何對應位址的資料區塊。為執行此操作,重刪演算法將對位址查找表記憶體210進行存取。為確保相同的資料區塊僅作為單一的表項而進行儲存,位址查找表記憶體210內的指針(pointer)(例如,以下針對圖5所進一步闡述的實體線ID(PLID))指示所述相同的資料區塊儲存於雜湊表記憶體220中的何處。亦即,位址查找表記憶體210為用於將雜湊表內的位置(例如,位址)與查找位址映射指針(例如,實體線ID)相關聯的儲存裝置。因此,若資料區塊先前已被儲存於雜湊表記憶體220中,則位址查找表記憶體210內的指針能夠指向雜湊表記憶體220的其中儲存有所述相同的資料區塊的位址,由此消除對儲存所述資料區塊的重覆拷貝的需要,由此增大重刪DRAM記憶體模組130的記憶體容量。
參照圖3,記憶體重刪可使用相對高效但又簡單的多路線雜湊表/雜湊陣列380,以確保達成高程度的重刪、且因此確保重刪DRAM記憶體模組130達成大的記憶體容量。本實施例的重刪DRAM記憶體模組130的雜湊表記憶體220是一或多個雜湊表380所處之處,且因其在判斷資料區塊是否為獨有的方面的有用性而得到使用。雜湊表380可被視作包括雜湊桶310(列)及雜湊路線320(行)的二維陣列。亦即,本實施例的雜湊表380包括m列雜湊桶310,每一雜湊桶310含有指示雜湊桶310的容量的n行資料線/槽/表項/雜湊路線320(m及n為整數)。
所述資料區塊儲存於雜湊表記憶體220的雜湊路線320中,且位址查找表記憶體210中的位址指針可儲存用於指示與特定資料區塊相關聯的特定雜湊桶310及特定雜湊路線320的值。因此,位址(例如,64位元位址)可被索引至位址查找表記憶體210中,且藉此,雜湊表380的雜湊桶310的儲存與所述位址對應的資料區塊的關聯雜湊路線320可得到確定。
因此,在寫入過程(例如,64位元組資料寫入)期間,當接收到寫入請求(即,對記錄包括一或多個資料區塊的新進資料(incoming data)的請求)時,使用雜湊函數/雜湊演算法對所述新進資料計算雜湊值(即,所述新進資料「被雜湊」),進而使得可確定出對應的雜湊桶310及雜湊路線320。因此,所述雜湊值指示所述資料區塊所欲放置之處,或當所述資料區塊(例如,64位元組資料區塊)為副本時,所述雜湊值指示雜湊表記憶體220
中已儲存有所述資料區塊之處。隨著資料內容被增添至記憶體,所述m個雜湊桶310中的某些雜湊桶310可首先達到容量。因此,重刪DRAM記憶體模組130包括使用緩衝記憶體230來儲存無法進入至雜湊表記憶體220中的資料區塊的溢出儲備(overflow provision)。此後,可擷取到原始查找位址,且位址查找表記憶體210可根據藉由對新進資料進行雜湊而計算出的查找位址而進行更新。
可當在所嘗試的寫入過程期間確定所有雜湊路線320均已滿時使用緩衝記憶體230。亦即,當雜湊表380裝滿時,可在緩衝記憶體230的未經重刪的溢出區中放置資料,由此降低重刪程度。因此,緩衝記憶體230本質上是有保留的、標準的、簡單的溢出記憶體區,其充當用於實作虛擬密度過儲備管理溢出(virtual density over-provision management overflow)的系統晶片記憶體緩衝器/快取。一旦資料被放置於緩衝記憶體230中,所述資料便不再被雜湊,且不可再被重刪。
若電腦應用試圖多次將相同的值序列儲存至記憶體,則儲存於位址查找表記憶體210中的轉譯陣列中的多個表項指代其中資料區塊儲存於雜湊表記憶體220中的相同位址,其中位址查找表記憶體210中的表項小於所述原始的獨有資料區塊,由此使得能夠達成高效的壓縮。
所述m個雜湊桶310中的每一者可更包括參考/頻率計數線340及簽名線330,參考/頻率計數線340包括用於指示雜湊桶
310的對應雜湊路線320的獨有辨識符。對於每一雜湊桶310,對應的簽名線330含有零來指示自由線(free line),或含有非零第二雜湊值來達成內容查找最佳化。因此,對於內容查找,通常不存在需要欲基於簽名線中的零表項來進行分配的自由線的簽名匹配,或者存在單一的簽名匹配,進而使得後續對資料線及內容比較進行的讀取確認出存在副本。所述m個雜湊桶310中的每一者可更包括以下將參照圖5A、圖5B、及圖5C進一步闡述的跳字線。
實體線ID(PLID)350可用於將資料索引至雜湊表380中。實體線ID 350可用於辨識記憶體線,所述記憶體線可被劃分至位址查找表記憶體210、雜湊表記憶體220、或緩衝記憶體230中的一者中。每一記憶體線可被稱作資料線或轉譯線,所述資料線用於將獨有內容儲存於雜湊表380中,所述轉譯線用於儲存若干實體線ID 350及用於提供自處理器匯流排位址至雜湊表380中的經重刪資料區塊的映射。亦即,匯流排位址辨識轉譯線,且進一步辨識轉譯線中含有相關實體線ID 350的表項,此轉而會指明特定的資料線。因此,實體線ID 350可被實作成包括溢出旗標(overflow flag),且可包括用於指示特定的對應雜湊表380的資料、對應雜湊桶位元、及用於指示資料區塊的與實體線ID 350對應的位置的對應路線位元。
對於每一雜湊桶310,存在一種關聯雜湊函數/雜湊演算法「h(x)」,「h(x)」為產生用於將資料索引至雜湊桶310中的log2(m)位元雜湊的演算法(例如,若雜湊表380具有8個實體雜湊桶310,
則此雜湊表380的雜湊函數將產生3位元雜湊)。亦即,雜湊函數h(x)使得相當大數量的輸入資料(例如,欲儲存於記憶體中的輸入資料檔案)能夠被輸入至雜湊函數h(x)中,且藉由欲儲存於雜湊表380中的雜湊函數h(x)而產生並輸出實質上不同的較小數量的輸出資料(例如,雜湊值)。因此,由於不同的資料設定可間或地對同一雜湊值進行雜湊,因此雜湊函數h(x)使得能夠達成壓縮。
在對經重刪記憶體進行寫入時,當接收到對應於資料檔案的寫入請求時,所述經重刪記憶體首先執行重覆搜索以判斷雜湊表380中是否已儲存有相同的/重覆的資料區塊。所述經重刪記憶體接著對位址查找表記憶體210中的及雜湊表記憶體220中的表項進行更新。舉例而言,可藉由更新雜湊表記憶體220中的原始查找位址的頻率計數(即,減小1)來對參考/頻率計數線340進行更新,且當頻率計數達到0時在雜湊表記憶體220中刪除對應的資料區塊。此外,位址查找表記憶體210中可產生新的實體線ID 350。
在所述重覆搜索(其可稱作內容查找)期間,重刪DRAM記憶體模組130對期望寫入的資料檔案或資料檔案的一部分的先存實例(pre-existing instance)進行搜尋。當存在儲存於雜湊表記憶體220中的資料的先存實例時,所述重覆搜索返回指向對應資料線的實體線ID 350。當未找到資料的先存實例時,則藉由對雜湊表380中的空間進行分配、在所述空間中寫入內容、並返回新的實體線ID 350而為對應資料區塊創建新的資料線。所述內容可
藉由以一偏差將實體線ID 350儲存於位址查找表記憶體210中而得到記錄,所述偏差是藉由匯流排位址而確定。
為將資料線「C」插入至雜湊表380中,可將C的對應雜湊函數「h(C)」作為數學運算來進行計算。一旦對資料線C計算雜湊函數,便可藉由內容查找操作來檢查雜湊表的列T(h(C))以查看是否存在充足的可用空間來容許插入資料線C(或查看在雜湊表380中是否已存在資料線C的副本)。
如所提及般,雜湊表380的每一雜湊桶310另外包括簽名線330及參考/頻率計數線340,由於簽名線330的簽名332及參考/頻率計數線340的參考計數342可被設計成小到足以使若干個量封包至每一雜湊桶310中此一事實,因此簽名線330及參考/頻率計數線340中的每一者僅佔用單一的雜湊路線320。亦即,在雜湊表380中,雜湊表380的一個整行可被指派至分別從屬於各雜湊桶310的各簽名線330,且一個整行可被指派至分別從屬於各雜湊桶310的各參考/頻率計數線340。
隨著例如資料線「C」等真實資料區塊被增添至雜湊表380,雜湊表380開始被填充以資料,所述資料可隨後藉由將儲存於位址查找表記憶體210中的對應實體線ID 350匹配至每一各別經重刪資料線的雜湊表380內的位址而得到存取。雜湊表380內的位址可藉由以下方式來辨識:辨識在其中定位所述資料的特定雜湊桶310及特定雜湊路線320(例如,辨識雜湊表380的列及行)。因此,對於儲存於雜湊表380中的每一資料區塊,存在藉由
一或多個對應實體線ID 350而辨識的一或多個對應位址,所述一或多個對應位址儲存於位址查找表記憶體210中且指向所述資料區塊的位置。一旦雜湊表380被資料裝滿,便在未經重刪的溢出區/緩衝記憶體230中放置新引入的資料,由此降低重刪程度。
在自經重刪記憶體進行讀取時,所述經重刪記憶體返回來自雜湊表記憶體220的資料線的拷貝或來自緩衝記憶體230的溢出線的拷貝。舉例而言,當欲自所儲存資料進行讀取時,當接收到讀取請求時,使用儲存於位址查找表記憶體210中的實體線ID 350來查找雜湊表380的對應位址。接著,對每一位址中的對應區塊進行擷取並重組。
圖4是根據本發明實施例的多雜湊表陣列的方塊圖。
參照圖4,根據本發明實施例的重刪DRAM系統架構使用包括多雜湊表(multiple hash table,MHT)480的雜湊表陣列400,所述多雜湊表480中的每一者包括m個雜湊桶410,每一雜湊桶410包括n個雜湊路線420。儘管本實施例將雜湊表480與雜湊桶410闡述為就其維數而言為一致的(例如,m及n被闡述為整數),然而在其他實施例中,同一多雜湊表陣列中的不同雜湊表可具有不同數目的雜湊桶,且相似地,多雜湊表陣列內、或甚至同一雜湊表內的不同雜湊桶可具有不同數目的雜湊路線。此外,儘管多雜湊表480被集體利用,然而不同的雜湊表480在某種程度上彼此獨立(例如,不同的雜湊表480可具有不同的相應雜湊函數,或可具有共用的雜湊函數)。
若雜湊表的陣列400包括「k」個平行的雜湊表T1、T2、…、Tk(k為整數),則其中每一雜湊表480分別使用單獨的獨立的雜湊函數h1(x)、h2(x)、…、hk(x),乃因雜湊表T1、T2、…、Tk中的每一者含有m個雜湊桶410,進而使得雜湊函數h1(x)、h2(x)、…、hk(x)仍生成log2(m)位元雜湊,且由於每一實體桶410含有n個雜湊路線420,因此3維(3-dimensional,3D)雜湊表陣列(例如,多雜湊表陣列)的容量為m×n×k。
每一雜湊表480可對應於單一的雜湊函數,所述單一的雜湊函數確定如何對資料進行索引。藉由對欲被寫入的新進資料進行雜湊,可將所得計算結果(例如,包括查找位址及鍵值的雜湊值)與一鍵值及一值進行比較,且若匹配所述值,則對應雜湊桶410中的參考/頻率計數線340增大,由此指示位址查找表記憶體210中的附加實體線ID 350指向特定線。
不同於傳統的雜湊表,本實施例的多雜湊表480包括多個虛擬雜湊桶/虛擬桶460,虛擬桶460由多個實體雜湊桶/實體桶410構成。在下文中,用語「實體桶」將指代先前所論述的雜湊桶310,且將用於區分先前所論述的雜湊桶310與虛擬桶460。
每一虛擬桶460可包括對應雜湊表480的m個實體桶410中的H個實體桶410,H為小於m的整數。然而,應注意,同一雜湊表480中的虛擬桶460中的各個不同的虛擬桶460可共享一或多個實體桶410。如以下將闡述,藉由使用根據本發明的實施例的虛擬桶460,第四維數被增添至所述3維多雜湊表陣列。因此,
可在對資料的排列及放置方面提供更大的撓性,由此提高效率且增大所述重刪DRAM系統架構的壓縮比率。
本實施例使用虛擬桶460來將資料放置撓性提高另一程度以釋放由其他虛擬桶460所共享的其他實體桶410,乃因儲存於雜湊表480中的一者中的資料區塊可在對應虛擬桶460內移動、或移動至不同的實體桶410。藉由釋放雜湊表480內的空間,可藉由移除陳舊的/重覆的資料來達成重刪。亦即,藉由使用根據本發明的實施例的虛擬桶460,使用雜湊函數對資料線進行雜湊不會對受約束的對應位置造成嚴格限制,且資料能夠被放置於「附近位置」雜湊桶410中,「附近位置」雜湊桶410指代位於包括最初意圖(但被佔用)實體雜湊桶410的同一虛擬桶460內的實體桶410。
作為例子,內容(例如,資料線C)欲放置於所述k個雜湊表T1(h1(C))、T2(h2(C))、…、Tk(hk(C))中的一者的實體桶410中的一者中。若資料線C欲放置於T1(h1(C))中,則作為對需要將資料線C放置於由T1(h1(C))表示的實體桶410中的替代,本實施例容許使用較單一的實體桶410大且包括由T1(h1(C))表示的實體桶410、但亦總共含有H個實體桶410的虛擬桶460。亦即,虛擬桶460含有對齊於雜湊表480內、包括T1(h1(C))、T1(h1(C)+1)、T1(h1(C)+2)、…、T1(h1(C)+H-1)的H個毗鄰的、或相鄰的實體桶410的集合。
因此,虛擬桶460容許資料區塊在雜湊表480內移動或為未來的寫入操作釋放空間。本實施例的容許先前進入至雜湊表
480中的資料區塊(在雜湊表480的含有實體桶410的虛擬桶460內)移動的操作可稱作跳格。可如下所述對使用用於記憶體重刪的多雜湊表480的跳格操作進行改善。
首先,重刪DRAM記憶體模組130可嘗試將資料線C插入至雜湊表480中來作為雜湊表480的雜湊函數的結果。然而,有時可使不同的資料線預先進入至雜湊表480中來作為同一雜湊函數的結果。亦即,儘管不同,然而不同的資料線可被引導至雜湊表480內的同一位置來作為雜湊函數的結果。為確定應在何處插入資料線C,所述操作可首先查找位於被表示為T(h(C))的實體桶410處或跟隨所述被表示為T(h(C))的實體桶410的第一可用實體桶410。
因此,在確定向何處寫入資料線C時,由於被表示為T(h(C))的最初意圖實體桶410可能被佔用,因此第一可用實體桶410(即,可向其中插入資料線的第一空的空間)可被表示為T(h(C)+f),其中f為0或大於0。假定被表示為T(h(C))的實體桶410為對應虛擬桶460的H個實體桶410中的第一實體桶410,若f小於H(即,若同一虛擬桶460內存在未被佔用的實體桶410),則可將資料線C放置至對應虛擬桶460中。相似地,若被表示為T(h(C))的實體桶410為對應虛擬桶460的第二實體桶,若f小於H-1,則可將資料線C放置至對應虛擬桶460中。
然而,並且假設對應虛擬桶460的第一實體桶410為意圖實體桶410,若f大於或等於H(即,虛擬桶460中不存在可將
資料線C適配於其中的實體桶410),則儘管資料線C不能適配至其虛擬桶460中,然而所述操作可嘗試以以下方式在虛擬桶460中創建空的空間。舉例而言,本發明實施例的重刪DRAM記憶體模組130可察看各實體桶410,首先察看由T(h(C)+f-H)表示的實體桶410、接著察看由T(h(C)+f-H+1)表示的實體桶、且以此類推直至判斷出由T(h(C)+f-1)表示的實體桶410是否具有包含於其中的資料為止(例如,可自頭至尾對虛擬桶460進行掃描)。重刪DRAM記憶體模組130可接著判斷是否可將實體桶410 T(h(C)+f-H)至T(h(C)+f-1)中所含有的任一資料物件放置至空的空間T(h(C)+f)中。亦即,重刪DRAM記憶體模組130可判斷具有實體桶T(h(C)+f)的共用虛擬桶460中是否存在實體桶T(h(C)+f-H)至T(h(C)+f-1)中的任一者,由此容許移動其中所含有的資料。重刪DRAM記憶體模組130可接著將所找到的最早的此類資料物件放置於所述空的空間中以由此在由T(h(C)+e)(e為小於f的整數)表示的實體桶410中創建新的空的空間。可重覆進行此過程直至e小於H(例如,可以級聯方式使資料在所述雜湊表內移動),由此在對應虛擬桶460中釋放足以容許放置資料線C的空間。
舉例而言,且參照圖5B,在本例子中,我們將把實體桶PB2指派為意圖實體桶410。由於意圖實體桶PB2是以與虛擬桶VB1相關聯的方式被佔用,因此可自頭至尾(例如,自實體桶PB2至實體桶PB5)掃描虛擬桶VB2。由於實體桶PB3、PB4、及PB5亦被佔用,因此第一可用實體桶410為實體桶PB6(即,f等於4,
且因此大於或等於H,且對應虛擬桶VB2中不存在第一可用實體桶410)。因此,可使實體桶PB5中的資料移動至實體桶PB6,由此釋放虛擬桶VB2中的空間,進而使得可將資料線C放置於對應虛擬桶VB2中(實體桶PB5中)。然而,若意圖實體桶本來為PB1(即,對應虛擬桶460本來為VB1),則可重覆所述過程,進而使得可使實體桶PB4中的資料自虛擬桶VB1移動至相鄰的虛擬桶VB2,即移動至實體桶PB5的所新釋放的空間中。此後,可將資料線C寫入虛擬桶VB1中與意圖實體桶PB1對應的實體桶PB4中。
因此,由於某些實體桶410被不同的虛擬桶460所共有,此可理解為由於不同的虛擬桶460的重疊,資料可自一個虛擬桶460移動至另一虛擬桶460,由此為最初的雜湊桶410創建空間。
在另一實施例中,在寫入過程期間,當接收到對將資料區塊寫入至雜湊表的陣列400的請求時,重刪DRAM記憶體模組130可查找每一雜湊表的整個虛擬桶460的資料價值以檢查雜湊表480中的一者中是否已存在現有項。若第一意圖雜湊表480已滿,且若在第一意圖雜湊表480中未找到所述資料區塊(即,每一實體桶410的每一雜湊路線420被不同的資料區塊佔用),則接著重刪DRAM記憶體模組130可試圖使資料進入至雜湊表陣列400的另一雜湊表480中。然而,若多雜湊表陣列400的所有雜湊表480均已滿,則接著所述資料區塊將「外溢(spill over)」至緩衝記憶體230。在此種實施例中,雜湊表陣列400內的資料的移動
可被重刪DRAM記憶體模組130禁止。
圖5A、圖5B、及圖5C繪示根據本發明實施例的用於產生跳字以將虛擬桶與特定實體桶相關聯的二維陣列。
參照圖5A、圖5B、及圖5C,根據本實施例,各種虛擬桶460可使用跳字值591或跳字向量592、及使用虛擬桶利用值來高效地跟蹤資料移動而與其對應的實體桶410相關聯。由於每一佔用實體桶410可僅對應於單一的虛擬桶460,因此跳字值591或跳字向量592可用於跟蹤與每一佔用實體桶410對應的是哪一虛擬桶460。
在本例子中,四個虛擬桶VB0、VB1、VB2、及VB3分別具有與實體桶PB0、PB1、PB2、PB3、PB4、PB5、及PB6此一群組不同的一組四個相連的實體桶(即,H等於4)。
舉例而言,參照圖5A及圖5B,跳字向量592可藉由以下步驟來確定:創建包括實體桶位置及虛擬桶位置(例如,準位址(quasi-address))的二維陣列;以及在每一含有用於每一虛擬桶460的資料的實體桶410中放置1(例如,二元指標(binary indicator)),應注意,在與實體桶410對應的任一行中的1可不多於單一的1。因此,跳字向量592可包括可用於對每一虛擬桶460的實體桶使用進行跟蹤的為多個1及多個0的陣列。在本例子中,第一虛擬桶VB0佔用實體桶PB0、PB1、及PB3,第二虛擬桶VB1佔用實體桶PB2及PB4,第三虛擬桶VB2僅佔用實體桶PB5,且第四虛擬桶VB3未被佔用。
相似地,且參照圖5C,可在確知哪一虛擬桶460對應於所佔用實體桶410的條件下基於所述所佔用實體桶410來創建跳字值591。跳字值591可具有log2(H)位元的長度(H為每虛擬桶460的實體雜湊桶410的數目)。
關於跳字向量592或跳字值591的資訊可儲存於用於每一雜湊桶410的跳字線中,進而使得實體桶410與虛擬桶460之前的關係可在記憶體中進行索引。
圖6是根據本發明實施例的用於對雜湊表記憶體中的資料區塊進行定址的實體線ID(PLID)的方塊圖。
參照圖6,根據本發明的實施例,提供經修改的實體線ID 650。本發明的實施例的實體線ID 650包括多個位元,所述多個位元分別指示位址、偏差、表的索引、雜湊、及槽/路線、以及與具體的虛擬桶460成對以對在各虛擬桶460之間移動的物件進行跟蹤的鍵值651。因此,若鍵值651匹配具體的虛擬桶460,則可向此具體的虛擬桶460寫入資料物件。
然而,在另一實施例中,實體線ID 650以包括log2(H)位元的虛擬桶利用值域652(例如,虛擬桶索引)取代鍵值651(例如,具有16個實體桶的高度的虛擬桶將對應於實體線ID 650中的4位元虛擬桶利用值域)。虛擬桶利用值域652指示對應於每一佔用實體桶410的是哪一虛擬桶460。因此,當將資料物件寫入至虛擬桶460時,已存在於虛擬桶460中的物件的數目可得到計算,且值p(其等於已存在於虛擬桶中的項的數目加一)可被寫作虛擬
桶利用值652。藉由使用實體線ID 650中的虛擬桶利用值652,實體線ID 650的儲存費用可減少。
圖7是說明根據本發明實施例的用於使用跳格方法將資料寫入至記憶體模組的多雜湊表陣列中的過程的流程圖。
參照圖7,在操作S701中,可辨識多個雜湊表,所述雜湊表中的每一者對應於雜湊函數且分別包括實體雜湊桶,每一實體雜湊桶包括雜湊路線且用以儲存資料(例如,重刪DRAM記憶體模組130可辨識k個雜湊表480,所述k個雜湊表480分別對應於雜湊函數h(x)、分別包括m個實體雜湊桶410,每一實體雜湊桶包括n個雜湊路線420)。
在操作S702中,可辨識多個虛擬桶,所述虛擬桶中的每一者包括所述實體雜湊桶中的某些實體雜湊桶,且分別與另一虛擬桶共享至少一個實體雜湊桶(例如,如圖4中所示,重刪DRAM記憶體模組130可辨識多個虛擬桶460,虛擬桶460中的每一者包括所述m個實體雜湊桶410中的H個實體雜湊桶410,且每一虛擬桶460與另一虛擬桶460共享實體雜湊桶410中的至少一者)。在操作S702a中,可藉由以下步驟來辨識所述多個虛擬桶:以實體線ID(PLID)對所述雜湊表進行索引,所述實體線ID(PLID)包括log2(h)位元的虛擬桶利用值域且包括與所述虛擬桶中的對應一者中的資料區塊的數目相等的值;以及當將物件寫入至所述虛擬桶中的所述對應一者時將所述虛擬桶利用值域增加一(例如,如圖6中所示,可藉由以包括虛擬桶利用值域652且包括與虛擬
桶460中的對應一者中的資料區塊的數目相等的值的實體線ID(PLID)650對雜湊表480進行索引來辨識虛擬桶460,其中當將物件或資料區塊寫入至虛擬桶460中的所述對應一者時可將虛擬桶利用值域652增加一。
在操作S703中,可將所述實體雜湊桶中其上儲存有資料的每一實體雜湊桶辨識為被指派至所述虛擬桶中的對應的單個虛擬桶(例如,如圖5B及圖5C中所示,重刪DRAM記憶體模組130可將其上儲存有資料的實體雜湊桶410(PB0、PB1、PB2、PB3、PB4、及PB5)辨識為被指派至虛擬桶460(VB0、VB1、及VB2)中的對應的單個虛擬桶460)。在操作S703a中,可藉由產生用於指示實體雜湊桶中含有資料的哪一實體雜湊桶與虛擬桶中的哪一者對應的跳字向量或跳字值來辨識所述實體雜湊桶(例如,如圖5B及圖5C中所示,重刪DRAM記憶體模組130可產生用於指示實體雜湊桶410中含有資料的哪一實體雜湊桶410與虛擬桶460中的哪一者對應的跳字向量592或跳字值591)。
在操作S704中,可根據所述雜湊函數中的對應一者來對資料線進行雜湊,以生成雜湊值(例如,重刪DRAM記憶體模組130可自記憶體控制器120接收與資料線C對應的寫入請求,且可根據所述雜湊函數h(x)中的對應一者來對新進資料進行雜湊,以生成雜湊值)。
在操作S705中,可根據所述雜湊值來判斷對應雜湊表的虛擬桶中的對應一者是否具有給資料區塊的可用空間(例如,如
圖5B及圖5C中所示,重刪DRAM記憶體模組130可確定虛擬桶460 VB3在實體桶PB6中具有給資料區塊的空間)。
在操作S706中,當虛擬桶中的所述對應一者不具有可用空間時可將資料自所述虛擬桶中的所述對應一者依序移動至所述虛擬桶中的相鄰的一者直至所述虛擬桶中的所述對應一者具有給資料區塊的空間為止(例如,如圖5B及圖5C中所示,當虛擬桶VB2不具有任何其他可用實體桶時,重刪DRAM記憶體模組130可將資料自虛擬桶VB2的實體桶PB5依序移動至虛擬桶VB3直至虛擬桶VB2具有給資料區塊的空間為止,其中若虛擬桶VB1是虛擬桶460中的所述對應一者,則可重覆進行所述過程以將資料自虛擬桶VB1的實體桶PB4移動至虛擬桶VB2的實體桶PB5)。在操作S706a中,可對位址查找表記憶體進行更新以改變與所移動的資料區塊對應的一或多個查找位址(例如,重刪DRAM記憶體模組130可對位址查找表記憶體210進行更新以改變與所移動的資料區塊對應的一或多個位址指針,進而使得可擷取到雜湊表記憶體220中的所移動資料區塊的新位址)。
在操作S707中,可將所述資料區塊儲存於虛擬桶中的所述對應一者中(例如,如圖5B及圖5C中所示,若虛擬桶VB1為意圖虛擬桶460,則重刪DRAM記憶體模組130可將所述資料區塊儲存於虛擬桶VB1的實體桶PB4中)。若確定包括虛擬桶VB1的雜湊表480已滿,則可將所述資料區塊儲存於緩衝記憶體230中。
圖8是說明根據本發明實施例的用於自記憶體模組的多雜湊表陣列讀取資料的過程的流程圖。
在操作S801中,可接收與儲存於所述雜湊表陣列中的多個資料區塊對應的讀取請求(例如,重刪DRAM記憶體模組130可自記憶體控制器120接收與構成資料線C的多個資料區塊對應的讀取請求,所述資料區塊儲存於雜湊表記憶體220的雜湊表陣列400中)。
在操作S802中,可自所述位址查找表記憶體210擷取所述指針中與所述多個資料區塊對應的對應指針(例如,重刪DRAM記憶體模組130可自位址查找表記憶體210擷取與構成資料線C的所述多個資料區塊對應的位址指針)。
在操作S803中,可基於所述指針中的所述對應的指針在所述雜湊表記憶體中對所述多個資料區塊進行存取(例如,重刪DRAM記憶體模組130可在雜湊表記憶體220中自雜湊表陣列400內的不同位址對資料區塊進行存取及擷取,所述不同位址對應於所擷取的位址指針)。
在操作S804中,可對所述多個資料區塊進行重組以生成經重組資料(例如,重刪DRAM記憶體模組130可對自雜湊表記憶體220擷取到的資料區塊進行重組以產生可等價於與所接收的讀取請求對應的資料線C的重組資料)。
在操作S805中,可將所述經重組資料自所述記憶體模組發送至記憶體控制器(例如,重刪DRAM記憶體模組130可將資
料線C發送至記憶體控制器120)。
如上所述,資料重刪可使用本發明實施例的重刪DRAM記憶體模組來執行。因此,對記憶體的存取可減少,且DRAM系統的壽命可延長。
前述者是對示例性實施例的說明,且不應被視為對示例性實施例進行限制。儘管已闡述了一些示例性實施例,然而熟習此項技術者將易於領會,可在不實際上背離示例性實施例的新穎教示內容及優點的條件下在示例性實施例中作出諸多潤飾。因此,所有此類潤飾皆旨在包含於如在申請專利範圍中所界定的示例性實施例的範圍內。在申請專利範圍中,方式加功能條款旨在涵蓋本文所述的用於執行所敍述功能的結構、且不僅涵蓋結構性等效形式而且亦涵蓋等效結構。因此,應理解,前述者是對示例性實施例的說明且不應被視為僅限於所揭露的具體實施例,且對所揭露示例性實施例所作的潤飾以及其他示例性實施例皆旨在包含於隨附申請專利範圍的範圍內。本發明概念是由以下申請專利範圍所界定,其中在本發明概念中欲包含申請專利範圍的等效範圍。
400:雜湊表陣列/陣列/多雜湊表陣列
410:雜湊桶
420:雜湊路線
460:虛擬雜湊桶/虛擬桶/意圖虛擬桶
480:多雜湊表/雜湊表/第一意圖雜湊表
Claims (24)
- 一種記憶體重刪的方法,所述方法包括:辨識多個雜湊表,所述多個雜湊表的每一者對應於雜湊函數且包括多個實體雜湊桶,每一個實體雜湊桶包括路線且用以儲存資料;辨識多個虛擬桶,所述多個虛擬桶的每一者包括所述多個實體雜湊桶中的部份,且與所述多個虛擬桶中的另一者共享所述多個實體雜湊桶中的至少一者;將所述多個實體雜湊桶中其上儲存有資料的每一者辨識為被指派至所述多個虛擬桶中的對應的單個虛擬桶;根據所述多個雜湊函數中的對應一者對資料線進行雜湊,以生成雜湊值;根據所述雜湊值判斷對應的雜湊表的所述多個虛擬桶中的對應一者是否具有給資料區塊的可用空間;當所述多個虛擬桶中的所述對應一者不具有可用空間時將資料自所述多個虛擬桶中的所述對應一者依序移動至所述多個虛擬桶中的相鄰的一者直至所述多個虛擬桶的所述對應一者具有給所述資料區塊的空間為止;以及將所述資料區塊儲存於所述多個虛擬桶的所述對應一者中。
- 如申請專利範圍第1項所述的方法,更包括:對位址查找表記憶體進行更新,以改變與所述資料區塊對應的一或多個查找位址。
- 如申請專利範圍第1項所述的方法,其中所述多個雜湊表中的每一者更包括參考計數線、簽名線、及跳字線。
- 如申請專利範圍第3項所述的方法,更包括:產生跳字向量,用於指示所述多個實體雜湊桶中含有資料的哪一實體雜湊桶對應於所述多個虛擬桶中的哪一者。
- 如申請專利範圍第4項所述的方法,其中產生所述跳字向量包括:對於所述多個虛擬桶中的每一者,利用二元指標來指示所述多個虛擬桶中的相應一者的所述多個實體雜湊桶中的每一者是否含有與所述多個虛擬桶中的所述相應一者相關聯的資料區塊。
- 如申請專利範圍第3項所述的方法,更包括:產生跳字值,所述跳字值包括每實體雜湊桶的log2(H)位元來指示所述多個實體雜湊桶中含有資料的哪一實體雜湊桶對應於所述多個虛擬桶中的哪一者。
- 如申請專利範圍第6項所述的方法,其中產生所述跳字值包括產生二維陣列,所述二維陣列包括所述實體雜湊桶中含有資料的每一實體雜湊桶在表示相關聯的各對所述實體雜湊桶與所述虛擬桶的位置處的準位址。
- 如申請專利範圍第1項所述的方法,其中將對應的所述雜湊表儲存於揮發性記憶體上。
- 如申請專利範圍第8項所述的方法,其中所述揮發性記憶體包括動態隨機存取記憶體(DRAM)。
- 如申請專利範圍第1項所述的方法,更包括:以實體線ID(PLID)對對應的所述雜湊表進行索引,所述實體線ID(PLID)包括log2(H)位元的虛擬桶利用值域且包括與所述多個虛擬桶中的對應一者中的資料區塊的數目相等的值。
- 如申請專利範圍第10項所述的方法,更包括:當將物件寫入至所述多個虛擬桶中的所述對應一者時,將所述虛擬桶利用值域增加一。
- 如申請專利範圍第1項所述的方法,更包括:當對應的所述雜湊表已滿時,將所述資料區塊儲存於緩衝記憶體中。
- 一種重刪動態隨機存取記憶體(DRAM)記憶體模組,用於藉由減少記憶體中的重覆資料區塊來重刪記憶體,所述重刪DRAM記憶體模組包括:雜湊表記憶體,用於僅儲存經重刪的多個資料區塊,且包括儲存於所述雜湊表記憶體的多個雜湊表的三維陣列,所述多個雜湊表中的每一者包括多個實體雜湊桶,每一個實體雜湊桶包括路線且用以儲存經重刪的所述多個資料區塊;位址查找表記憶體(ALUTM),用於儲存與經重刪的所述多個資料區塊對應的位址;以及處理器,用於接收讀取請求以致能所述重刪DRAM記憶體模組自所述雜湊表記憶體擷取所述多個資料區塊並輸出所述多個資料區塊,且用於接收寫入請求以致能所述重刪DRAM記憶體模組將所述多個資料區塊儲存於所述雜湊表記憶體中。
- 如申請專利範圍第13項所述的重刪DRAM記憶體模組,其中所述多個雜湊表中的每一者更包括多個虛擬桶,所述多個虛擬桶的每一者包括所述多個實體雜湊桶中的兩個或更多個實體雜湊桶。
- 如申請專利範圍第14項所述的重刪DRAM記憶體模組,其中所述重刪DRAM記憶體模組被配置以使經重刪的所述多個資料區塊於所述多個雜湊表中的對應一者內在所述多個虛擬桶中的相鄰多個之間移動。
- 如申請專利範圍第13項所述的重刪DRAM記憶體模組,其中所述重刪DRAM記憶體模組無需外部供應的命令而執行資料重刪。
- 如申請專利範圍第13項所述的重刪DRAM記憶體模組,其中所述重刪DRAM記憶體模組更包括緩衝記憶體,所述緩衝記憶體用於當所述雜湊表記憶體已滿時儲存資料。
- 一種重刪DRAM記憶體模組,用於減少記憶體中的重覆多個資料區塊,所述重刪DRAM記憶體模組包括:儲存於所述重刪DRAM記憶體模組中的多個雜湊表的三維陣列,所述多個雜湊表中的每一者包括多個實體雜湊桶,每一個實體雜湊桶包括路線且被配置以儲存所述多個資料區塊;處理器;以及記憶體,其中所述記憶體上儲存有指令,所述指令當由所述處理器執行時會使得所述重刪DRAM記憶體模組對先前儲存的經 重刪的資料區塊在所述多個雜湊表中的一者的相鄰的多個虛擬桶之間移動,所述多個虛擬桶中的每一者包括所述多個實體雜湊桶中的兩個或更多個。
- 如申請專利範圍第18項所述的重刪DRAM記憶體模組,其中所述記憶體上更儲存有指令,所述指令當由所述處理器執行時會使得所述重刪DRAM記憶體模組將新進資料儲存於所述多個虛擬桶中的一個虛擬桶,在此一個虛擬桶中先前儲存的經重刪的所述資料區塊是已被移動。
- 一種重刪動態隨機存取記憶體(DRAM)記憶體模組,用於藉由在晶片上執行重刪及減少記憶體中的重覆資料區塊來重刪記憶體,以增加所述重刪DRAM記憶體模組的邏輯容量、減少主機處理器資料的使用、以及減少所述重刪DRAM記憶體模組的記憶體存取的數目,所述重刪DRAM記憶體模組包括:雜湊表記憶體,用於僅儲存經重刪的多個資料區塊;位址查找表記憶體(ALUTM),用於儲存與經重刪的所述多個資料區塊對應的位址;以及處理器,用於接收讀取請求以致能所述重刪DRAM記憶體模組自所述雜湊表記憶體擷取所述多個資料區塊並輸出所述多個資料區塊,且用於接收寫入請求以致能所述重刪DRAM記憶體模組將所述多個資料區塊儲存於所述雜湊表記憶體中,其中所述雜湊表記憶體儲存於揮發性記憶體上,並且包括儲存於所述雜湊表記憶體的多個雜湊表的三維陣列,所述多個雜湊 表中的每一者包括多個實體雜湊桶,每一個實體雜湊桶包括路線且用以儲存經重刪的所述多個資料區塊。
- 如申請專利範圍第20項所述的重刪DRAM記憶體模組,其中所述多個雜湊表中的每一者更包括多個虛擬桶,所述多個虛擬桶的每一者包括所述多個實體雜湊桶中的兩個或更多個實體雜湊桶。
- 如申請專利範圍第21項所述的重刪DRAM記憶體模組,其中所述重刪DRAM記憶體模組被配置以使經重刪的所述多個資料區塊於所述多個雜湊表中的對應一者內在所述多個虛擬桶中的相鄰多個之間移動。
- 如申請專利範圍第20項所述的重刪DRAM記憶體模組,其中所述重刪DRAM記憶體模組無需外部供應的命令而執行資料重刪。
- 如申請專利範圍第20項所述的重刪DRAM記憶體模組,其中所述重刪DRAM記憶體模組更包括緩衝記憶體,所述緩衝記憶體用於當所述雜湊表記憶體已滿時儲存資料。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201662314918P | 2016-03-29 | 2016-03-29 | |
US62/314,918 | 2016-03-29 | ||
US15/161,136 | 2016-05-20 | ||
US15/161,136 US9983821B2 (en) | 2016-03-29 | 2016-05-20 | Optimized hopscotch multiple hash tables for efficient memory in-line deduplication application |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201734803A TW201734803A (zh) | 2017-10-01 |
TWI710901B true TWI710901B (zh) | 2020-11-21 |
Family
ID=59958768
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW105136351A TWI710901B (zh) | 2016-03-29 | 2016-11-09 | 記憶體重刪的方法及重刪動態隨機存取記憶體記憶體模組 |
Country Status (5)
Country | Link |
---|---|
US (2) | US9983821B2 (zh) |
JP (1) | JP6764362B2 (zh) |
KR (1) | KR102597640B1 (zh) |
CN (1) | CN107239230B (zh) |
TW (1) | TWI710901B (zh) |
Families Citing this family (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10437785B2 (en) | 2016-03-29 | 2019-10-08 | Samsung Electronics Co., Ltd. | Method and apparatus for maximized dedupable memory |
KR102190403B1 (ko) * | 2016-05-20 | 2020-12-11 | 삼성전자주식회사 | 물리적 메모리 크기보다 큰 메모리 용량을 가능하게 하기 위한 방법 및 장치 |
US10462059B2 (en) * | 2016-10-19 | 2019-10-29 | Intel Corporation | Hash table entries insertion method and apparatus using virtual buckets |
US11644992B2 (en) * | 2016-11-23 | 2023-05-09 | Samsung Electronics Co., Ltd. | Storage system performing data deduplication, method of operating storage system, and method of operating data processing system |
US10394784B2 (en) | 2016-12-22 | 2019-08-27 | Intel Corporation | Technologies for management of lookup tables |
US10700974B2 (en) * | 2018-01-30 | 2020-06-30 | Marvell Israel (M.I.S.L) Ltd. | Dynamic allocation of memory for packet processing instruction tables in a network device |
CN108427539B (zh) * | 2018-03-15 | 2021-06-04 | 深信服科技股份有限公司 | 缓存设备数据的离线去重压缩方法、装置及可读存储介质 |
US11392491B2 (en) * | 2018-06-27 | 2022-07-19 | Intel Corporation | Hardware-assisted paging mechanisms |
US11487473B2 (en) | 2018-07-23 | 2022-11-01 | SK Hynix Inc. | Memory system |
US11288012B2 (en) | 2018-07-23 | 2022-03-29 | SK Hynix Inc. | Memory system |
US10915470B2 (en) | 2018-07-23 | 2021-02-09 | SK Hynix Inc. | Memory system |
KR102516584B1 (ko) | 2018-11-21 | 2023-04-03 | 에스케이하이닉스 주식회사 | 메모리 시스템 |
KR102513919B1 (ko) | 2018-11-05 | 2023-03-27 | 에스케이하이닉스 주식회사 | 메모리 시스템 |
KR102665410B1 (ko) * | 2018-07-30 | 2024-05-13 | 삼성전자주식회사 | 메모리 장치의 내부 프로세싱 동작 방법 |
US11079954B2 (en) * | 2018-08-21 | 2021-08-03 | Samsung Electronics Co., Ltd. | Embedded reference counter and special data pattern auto-detect |
US10628072B2 (en) * | 2018-08-21 | 2020-04-21 | Samsung Electronics Co., Ltd. | Scalable architecture enabling large memory system for in-memory computations |
KR20200036461A (ko) * | 2018-09-28 | 2020-04-07 | 삼성전자주식회사 | 메모리 디바이스들 사이의 직접 통신을 위한 메모리 시스템 및 메모리 디바이스 |
US11308036B2 (en) * | 2019-04-11 | 2022-04-19 | EMC IP Holding Company LLC | Selection of digest hash function for different data sets |
CN112068948B (zh) * | 2019-06-10 | 2024-03-26 | 上海赜睿信息科技有限公司 | 数据散列方法、可读存储介质和电子设备 |
EP3764233A1 (en) * | 2019-07-08 | 2021-01-13 | Continental Teves AG & Co. OHG | Method of identifying errors in or manipulations of data or software stored in a device |
US11429573B2 (en) * | 2019-10-16 | 2022-08-30 | Dell Products L.P. | Data deduplication system |
CN111143340B (zh) * | 2019-12-25 | 2023-03-21 | 北京中网易企秀科技有限公司 | 一种数据处理方法、装置及服务器、客户端 |
US11500815B2 (en) | 2020-03-26 | 2022-11-15 | EMC IP Holding Company LLC | Dual relationship-based hash structure for non-volatile memory technology |
US20210326271A1 (en) * | 2020-04-18 | 2021-10-21 | International Business Machines Corporation | Stale data recovery using virtual storage metadata |
US11475160B2 (en) | 2020-05-20 | 2022-10-18 | EMC IP Holding Company LLC | Data masking in a microservice architecture |
US11347690B2 (en) * | 2020-05-20 | 2022-05-31 | EMC IP Holding Company LLC | Data masking in a microservice architecture |
US11468193B2 (en) | 2020-05-20 | 2022-10-11 | EMC IP Holding Company LLC | Data masking in a microservice architecture |
CN112799841B (zh) * | 2021-01-29 | 2023-04-25 | 烽火通信科技股份有限公司 | 一种数据对象存储管理的方法和装置 |
TWI780696B (zh) | 2021-05-10 | 2022-10-11 | 創鑫智慧股份有限公司 | 查找表壓縮方法與查找表讀取方法及其計算設備、主機與裝置 |
CN113298930A (zh) * | 2021-05-12 | 2021-08-24 | 天海欧康科技信息(厦门)有限公司 | 基于webgl技术的三维工艺可视化设计方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW201227291A (en) * | 2010-08-31 | 2012-07-01 | Falconstor Inc | Data deduplication |
US20140281361A1 (en) * | 2013-03-15 | 2014-09-18 | Samsung Electronics Co., Ltd. | Nonvolatile memory device and related deduplication method |
TW201506769A (zh) * | 2013-03-14 | 2015-02-16 | Lsi Corp | 儲存元件輔助之重複資料刪除 |
US9116812B2 (en) * | 2012-01-27 | 2015-08-25 | Intelligent Intellectual Property Holdings 2 Llc | Systems and methods for a de-duplication cache |
Family Cites Families (54)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6438560B1 (en) | 1999-09-16 | 2002-08-20 | International Business Machines Corporation | Reuse of immutable objects during object creation |
US8407428B2 (en) | 2010-05-20 | 2013-03-26 | Hicamp Systems, Inc. | Structured memory coprocessor |
US8504791B2 (en) | 2007-01-26 | 2013-08-06 | Hicamp Systems, Inc. | Hierarchical immutable content-addressable memory coprocessor |
EP2115593B1 (en) | 2007-01-26 | 2018-10-24 | Intel Corporation | Hierarchical immutable content-addressable memory processor |
JP5026213B2 (ja) * | 2007-09-28 | 2012-09-12 | 株式会社日立製作所 | ストレージ装置及びデータ重複排除方法 |
US8219534B2 (en) | 2008-02-27 | 2012-07-10 | Dell Products L.P. | Multiple file compaction for network attached storage |
US7984022B2 (en) | 2008-04-18 | 2011-07-19 | International Business Machines Corporation | Space recovery with storage management coupled with a deduplicating storage system |
US8370593B2 (en) | 2010-04-14 | 2013-02-05 | Hitachi, Ltd. | Method and apparatus to manage groups for deduplication |
US9401967B2 (en) | 2010-06-09 | 2016-07-26 | Brocade Communications Systems, Inc. | Inline wire speed deduplication system |
US9141625B1 (en) | 2010-06-22 | 2015-09-22 | F5 Networks, Inc. | Methods for preserving flow state during virtual machine migration and devices thereof |
US20120011144A1 (en) | 2010-07-12 | 2012-01-12 | Frederik Transier | Aggregation in parallel computation environments with shared memory |
JP5603997B2 (ja) | 2010-10-26 | 2014-10-08 | 株式会社日立製作所 | ストレージ装置及びデータ制御方法 |
US20120158674A1 (en) | 2010-12-20 | 2012-06-21 | Mark David Lillibridge | Indexing for deduplication |
US9639543B2 (en) | 2010-12-28 | 2017-05-02 | Microsoft Technology Licensing, Llc | Adaptive index for data deduplication |
US8462781B2 (en) | 2011-04-06 | 2013-06-11 | Anue Systems, Inc. | Systems and methods for in-line removal of duplicate network packets |
US8938469B1 (en) | 2011-05-11 | 2015-01-20 | Juniper Networks, Inc. | Dynamically adjusting hash table capacity |
US9501421B1 (en) | 2011-07-05 | 2016-11-22 | Intel Corporation | Memory sharing and page deduplication using indirect lines |
US8886508B2 (en) | 2011-08-22 | 2014-11-11 | Freescale Semiconductor, Inc. | Circuit simulation acceleration using model caching |
US9069616B2 (en) * | 2011-09-23 | 2015-06-30 | Google Inc. | Bandwidth throttling of virtual disks |
US9298707B1 (en) | 2011-09-30 | 2016-03-29 | Veritas Us Ip Holdings Llc | Efficient data storage and retrieval for backup systems |
CN103975303B (zh) | 2011-12-07 | 2017-08-08 | 英特尔公司 | 用于预链接软件以改善虚拟系统中的存储器去重的技术 |
KR20130064518A (ko) | 2011-12-08 | 2013-06-18 | 삼성전자주식회사 | 저장 장치 및 그것의 동작 방법 |
US20130275699A1 (en) | 2012-03-23 | 2013-10-17 | Hicamp Systems, Inc. | Special memory access path with segment-offset addressing |
US9177028B2 (en) | 2012-04-30 | 2015-11-03 | International Business Machines Corporation | Deduplicating storage with enhanced frequent-block detection |
US9069810B2 (en) | 2012-07-25 | 2015-06-30 | International Business Machines Corporation | Systems, methods and computer program products for reducing hash table working-set size for improved latency and scalability in a processing system |
US20140115260A1 (en) * | 2012-10-18 | 2014-04-24 | Oracle International Corporation | System and method for prioritizing data in a cache |
US9135383B2 (en) | 2012-11-16 | 2015-09-15 | Freescale Semiconductor, Inc. | Table model circuit simulation acceleration using model caching |
US9502139B1 (en) | 2012-12-18 | 2016-11-22 | Intel Corporation | Fine grained online remapping to handle memory errors |
US9424267B2 (en) | 2013-01-02 | 2016-08-23 | Oracle International Corporation | Compression and deduplication layered driver |
US9141554B1 (en) | 2013-01-18 | 2015-09-22 | Cisco Technology, Inc. | Methods and apparatus for data processing using data compression, linked lists and de-duplication techniques |
US9537771B2 (en) | 2013-04-04 | 2017-01-03 | Marvell Israel (M.I.S.L) Ltd. | Exact match hash lookup databases in network switch devices |
US9471500B2 (en) | 2013-04-12 | 2016-10-18 | Nec Corporation | Bucketized multi-index low-memory data structures |
US9148387B2 (en) * | 2013-05-10 | 2015-09-29 | Brocade Communications Systems, Inc. | Hardware hash table virtualization in multi-packet processor networking systems |
US10339109B2 (en) * | 2013-07-15 | 2019-07-02 | International Business Machines Corporation | Optimizing hash table structure for digest matching in a data deduplication system |
US20150019815A1 (en) | 2013-07-15 | 2015-01-15 | International Business Machines Corporation | Utilizing global digests caching in data deduplication of workloads |
US10073853B2 (en) | 2013-07-17 | 2018-09-11 | International Business Machines Corporation | Adaptive similarity search resolution in a data deduplication system |
US9898410B2 (en) * | 2013-09-10 | 2018-02-20 | Intel Corporation | Hybrid main memory using a fine-grain level of remapping |
WO2015066719A2 (en) | 2013-11-04 | 2015-05-07 | Falconstor, Inc. | Use of solid state storage devices and the like in data deduplication |
US9870176B2 (en) * | 2013-11-08 | 2018-01-16 | Fujitsu Limited | Storage appliance and method of segment deduplication |
KR20150067583A (ko) * | 2013-12-10 | 2015-06-18 | 삼성전자주식회사 | 불휘발성 메모리 장치 및 그것의 중복 데이터 제거 방법 |
US9792063B2 (en) * | 2014-01-15 | 2017-10-17 | Intel Corporation | Deduplication-based data security |
US10380183B2 (en) * | 2014-04-03 | 2019-08-13 | International Business Machines Corporation | Building and querying hash tables on processors |
US8868825B1 (en) | 2014-07-02 | 2014-10-21 | Pure Storage, Inc. | Nonrepeating identifiers in an address space of a non-volatile solid-state storage |
EP2966562A1 (en) * | 2014-07-09 | 2016-01-13 | Nexenta Systems, Inc. | Method to optimize inline i/o processing in tiered distributed storage systems |
US9658774B2 (en) * | 2014-07-09 | 2017-05-23 | Hitachi, Ltd. | Storage system and storage control method |
US9454488B2 (en) * | 2014-08-08 | 2016-09-27 | PernixData, Inc. | Systems and methods to manage cache data storage |
US9489239B2 (en) | 2014-08-08 | 2016-11-08 | PernixData, Inc. | Systems and methods to manage tiered cache data storage |
WO2016057670A1 (en) * | 2014-10-07 | 2016-04-14 | Google Inc. | Hardware-assisted memory compression management using page filter and system mmu |
CN104504076A (zh) * | 2014-12-22 | 2015-04-08 | 西安电子科技大学 | 一种高并发和高空间利用率的分布式缓存方法 |
US9703797B2 (en) | 2015-02-18 | 2017-07-11 | Exagrid Systems, Inc. | Multi-level deduplication |
KR20150035876A (ko) * | 2015-02-24 | 2015-04-07 | 포항공과대학교 산학협력단 | 데이터 중복 제거 방법 및 장치 |
US9892053B2 (en) | 2015-03-24 | 2018-02-13 | Intel Corporation | Compaction for memory hierarchies |
US10089320B2 (en) * | 2015-07-31 | 2018-10-02 | Hiveio Inc. | Method and apparatus for maintaining data consistency in an in-place-update file system with data deduplication |
KR102190403B1 (ko) * | 2016-05-20 | 2020-12-11 | 삼성전자주식회사 | 물리적 메모리 크기보다 큰 메모리 용량을 가능하게 하기 위한 방법 및 장치 |
-
2016
- 2016-05-20 US US15/161,136 patent/US9983821B2/en active Active
- 2016-11-09 TW TW105136351A patent/TWI710901B/zh active
- 2016-11-10 KR KR1020160149705A patent/KR102597640B1/ko active IP Right Grant
-
2017
- 2017-03-24 JP JP2017058521A patent/JP6764362B2/ja active Active
- 2017-03-29 CN CN201710196455.9A patent/CN107239230B/zh active Active
-
2018
- 2018-02-26 US US15/905,746 patent/US10318434B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW201227291A (en) * | 2010-08-31 | 2012-07-01 | Falconstor Inc | Data deduplication |
US9116812B2 (en) * | 2012-01-27 | 2015-08-25 | Intelligent Intellectual Property Holdings 2 Llc | Systems and methods for a de-duplication cache |
TW201506769A (zh) * | 2013-03-14 | 2015-02-16 | Lsi Corp | 儲存元件輔助之重複資料刪除 |
US20140281361A1 (en) * | 2013-03-15 | 2014-09-18 | Samsung Electronics Co., Ltd. | Nonvolatile memory device and related deduplication method |
Also Published As
Publication number | Publication date |
---|---|
JP2017182803A (ja) | 2017-10-05 |
CN107239230A (zh) | 2017-10-10 |
KR102597640B1 (ko) | 2023-11-03 |
TW201734803A (zh) | 2017-10-01 |
US9983821B2 (en) | 2018-05-29 |
CN107239230B (zh) | 2022-04-05 |
US20170286003A1 (en) | 2017-10-05 |
US10318434B2 (en) | 2019-06-11 |
KR20170112952A (ko) | 2017-10-12 |
US20180181495A1 (en) | 2018-06-28 |
JP6764362B2 (ja) | 2020-09-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI710901B (zh) | 記憶體重刪的方法及重刪動態隨機存取記憶體記憶體模組 | |
TWI683217B (zh) | 使用去重複dram系統演算法架構的去重複記憶體模組及其方法 | |
TWI714664B (zh) | 有效的記憶體在線重刪應用之虛擬桶多雜湊表 | |
TWI804466B (zh) | 擷取記憶體中儲存的資料的方法與去重複模組 | |
US10678704B2 (en) | Method and apparatus for enabling larger memory capacity than physical memory size | |
WO2016082196A1 (zh) | 文件访问方法、装置及存储设备 | |
CN112639748B (zh) | 异步正向缓存存储器系统和方法 | |
US20210286551A1 (en) | Data access ordering for writing-to or reading-from memory devices | |
US10528284B2 (en) | Method and apparatus for enabling larger memory capacity than physical memory size | |
TW202009716A (zh) | 記憶體系統及刪除重複記憶體系統 | |
CN112602071A (zh) | 正向高速缓存应用程序编程接口系统和方法 | |
US11914587B2 (en) | Systems and methods for key-based indexing in storage devices | |
WO2020237409A1 (en) | Technologies for memory-efficient key-value lookup |