TW201741883A - 能使記憶體容量較實體記憶體大小大的方法與去重複模組 - Google Patents
能使記憶體容量較實體記憶體大小大的方法與去重複模組 Download PDFInfo
- Publication number
- TW201741883A TW201741883A TW106116633A TW106116633A TW201741883A TW 201741883 A TW201741883 A TW 201741883A TW 106116633 A TW106116633 A TW 106116633A TW 106116633 A TW106116633 A TW 106116633A TW 201741883 A TW201741883 A TW 201741883A
- Authority
- TW
- Taiwan
- Prior art keywords
- hash
- data
- buckets
- memory
- bucket
- Prior art date
Links
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
- 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
- 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/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
- G06F12/0261—Garbage collection, i.e. reclamation of unreferenced memory using reference counting
-
- 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/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- 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
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
-
- 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
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 Of A Hierarchy Structure (AREA)
- Memory System (AREA)
Abstract
提供一種擷取在與去重複模組相關聯的記憶體中儲存的資料的方法。所述方法包括:辨識資料的邏輯位址;藉由在轉譯表中查找所述邏輯位址的至少一部分來根據邏輯位址辨識資料的實體線ID;對相應實體線進行定位,所述相應實體線對應於實體線ID;以及自相應實體線擷取資料,所述擷取包括將相應雜湊圓柱體拷貝至讀取快取,所述相應雜湊圓柱體包括:相應雜湊桶,所述相應雜湊桶包括所述相應實體線;以及相應參考計數器桶,所述相應參考計數器桶包括與所述相應實體線相關聯的相應參考計數器。
Description
根據本發明的實施例的一或多個態樣是有關於系統記憶體及儲存器,且更具體而言是有關於高容量低潛時記憶體及儲存器。
例如資料庫(database)、虛擬桌上架構(virtual desktop infrastructure)、及資料分析(data analytics)等典型現代電腦應用程式需要大的主記憶體。隨著電腦系統按比例減小以執行更複雜的資料及儲存密集型應用程式,對較大記憶體容量的需求成比例地增長。
通常,隨機存取記憶體(random-access memory,RAM)在所述隨機存取記憶體的實體設計可儲存的資料數量方面受限。舉例而言,8吉位元組(GB)的動態隨機存取記憶體(dynamic random access memory,DRAM)可通常最大容納8吉位元組的資料。此外,未來的資料中心應用程式將使用高容量低潛時記憶體。
在此先前技術章節中揭露的以上資訊僅用於增強對本發明的背景的理解,且因此其可能含有不構成先前技術的資訊。
本發明的實施例的各態樣是有關於能使隨機存取記憶體(RAM)內的記憶體容量較所述隨機存取記憶體的實體記憶體大小大的方法及相關聯結構。根據本發明的實施例,使用去重複演算法來達成資料記憶體減小(data memory reduction)及上下文定址(context addressing)。根據本發明的實施例,將使用者資料儲存於藉由所述使用者資料的雜湊值來進行索引的雜湊表中。
根據本發明的實施例,提供一種擷取在與去重複模組相關聯的記憶體中儲存的資料的方法,所述去重複模組包括讀取快取,所述記憶體包括轉譯表及組合資料結構,所述組合資料結構包括雜湊表及參考計數器表,所述雜湊表及所述參考計數器表各自儲存於所述組合資料結構的多個雜湊圓柱體中,所述雜湊表包括多個雜湊桶,所述多個雜湊桶各自包括多個實體線,每一所述實體線儲存資料,所述參考計數器表包括多個參考計數器桶,所述多個參考計數器桶各自包括多個參考計數器。所述方法包括:辨識所述資料的邏輯位址;藉由在轉譯表中查找所述邏輯位址的至少一部分來根據所述邏輯位址辨識所述資料的實體線ID(physical line ID,PLID);對所述多個實體線中的相應實體線進行定位,所述相應實體線對應於所述實體線ID;以及自所述相應實體線擷取所述資料,所述擷取包括將所述多個雜湊圓柱體中的相應雜湊圓柱體拷貝至所述讀取快取,所述相應雜湊圓柱體包括:所述多個雜湊桶中的相應雜湊桶,所述相應雜湊桶包括所述相應實體線;以及所述多個參考計數器桶中的相應參考計數器桶,所述相應參考計數器桶包括與所述相應實體線相關聯的相應參考計數器。
所述方法可更包括基於所述實體線ID來確定所述資料儲存於所述雜湊表中。
所述實體線ID可利用應用於所述資料的第一雜湊函數來產生。所述實體線ID可包括指向所述雜湊表中的位置的位址。
所述實體線ID可包括:第一辨識符,表示所述資料是儲存於所述雜湊表中還是儲存於溢出記憶體區中;第二辨識符,表示儲存有所述資料的列;以及第三辨識符,表示儲存有所述資料的行(或路線(way))。
所述組合資料結構可更包括簽名表,所述簽名表包括多個簽名桶,每一所述簽名桶包括多個簽名。所述相應雜湊圓柱體可更包括所述多個簽名桶中的相應簽名桶,所述相應簽名桶包括與所述相應實體線相關聯的相應簽名。
所述實體線ID可利用應用於所述資料的第一雜湊函數來產生。所述實體線ID可包括指向所述雜湊表中的位置的位址。所述多個簽名可利用較所述第一雜湊函數小的第二雜湊函數來產生。
每一參考計數器可追蹤針對儲存於所述雜湊表中的對應資料進行的去重複次數。
根據本發明的實施例,提供一種將資料儲存於與去重複引擎相關聯的記憶體中的方法。所述方法包括:辨識將被儲存的所述資料;利用第一雜湊函數來確定與在所述記憶體中的雜湊表中所述資料所應儲存之處對應的第一雜湊值;將所述資料儲存於所述雜湊表中與所述第一雜湊值對應的位置;利用較所述第一雜湊函數小的第二雜湊函數來確定亦與所述資料所應儲存之處對應的第二雜湊值;將所述第一雜湊值儲存於所述記憶體中的轉譯表中;以及將所述第二雜湊值儲存於所述記憶體中的簽名表中。
所述方法可更包括使參考計數器表中與所述資料對應的參考計數器遞增。
所述記憶體可包括:所述雜湊表,儲存多個資料;所述轉譯表,儲存利用所述第一雜湊函數產生的多個實體線ID(PLID);所述簽名表,儲存利用所述第二雜湊函數產生的多個簽名;參考計數器表,儲存多個參考計數器,每一所述參考計數器追蹤針對儲存於所述雜湊表中的對應資料進行的去重複次數;以及溢出記憶體區。
所述實體線ID中的每一者可包括:第一辨識符,表示所述資料是儲存於所述雜湊表中還是儲存於所述溢出記憶體區中;第二辨識符,表示儲存有所述資料的列;以及第三辨識符,表示儲存有所述資料的行。
所述雜湊表、所述簽名表、及所述參考計數器表可被整合至組合資料結構中。所述組合資料結構可包括多個雜湊圓柱體,每一所述雜湊圓柱體包括:雜湊桶,包括多個實體線;簽名桶,包括與所述多個實體線對應的相應簽名;以及參考計數器桶,包括與所述多個實體線對應的相應參考計數器。
所述將所述資料儲存於所述雜湊表中與所述第一雜湊值對應的位置可包括將所述資料儲存於與所述第一雜湊值對應的所述雜湊桶中。所述將所述第二雜湊值儲存於所述簽名表中可包括將所述第二雜湊值儲存於與儲存所述資料的所述雜湊桶對應的所述簽名桶中。
根據本發明的實施例,提供一種去重複模組,所述去重複模組包括:讀取快取;去重複引擎,自主機系統接收資料擷取請求;以及記憶體,所述記憶體包括轉譯表以及組合資料結構,所述組合資料結構包括:雜湊表,包括多個雜湊桶,每一所述雜湊桶包括多個實體線,每一所述實體線均儲存資料;參考計數器表,包括多個參考計數器桶,每一所述參考計數器桶包括多個參考計數器;以及多個雜湊圓柱體,每一所述雜湊圓柱體包括所述雜湊桶中的一者及所述參考計數器桶中的一者。所述資料擷取請求使所述去重複引擎:辨識所述資料的邏輯位址;藉由在轉譯表中查找所述邏輯位址的至少一部分來根據所述邏輯位址辨識所述資料的實體線ID(PLID);對所述多個實體線中的相應實體線進行定位,所述相應實體線對應於所述實體線ID;以及自所述實體線擷取所述資料,所述擷取所述資料包括將所述多個雜湊圓柱體中的相應雜湊圓柱體拷貝至所述讀取快取,所述相應雜湊圓柱體包括:所述多個雜湊桶中的相應雜湊桶,所述相應雜湊桶包括所述相應實體線;以及所述多個參考計數器桶中的相應參考計數器桶,所述相應參考計數器桶包括與所述相應實體線相關聯的相應參考計數器。
所述資料擷取請求可更使所述去重複引擎基於所述實體線ID來確定所述資料儲存於所述雜湊表中。
所述實體線ID可利用應用於所述資料的第一雜湊函數來產生。所述實體線ID可包括指向所述雜湊表中的位置的位址。
所述實體線ID可包括:第一辨識符,表示所述資料是儲存於所述雜湊表中還是儲存於溢出記憶體區中;第二辨識符,表示儲存有所述資料的列;以及第三辨識符,表示儲存有所述資料的行。
所述組合資料結構可更包括簽名表,所述簽名表包括多個簽名桶,每一所述簽名桶包括多個簽名。所述相應雜湊圓柱體可更包括所述多個簽名桶中的相應簽名桶,所述相應簽名桶包括與所述相應實體線相關聯的相應簽名。
所述實體線ID可利用應用於所述資料的第一雜湊函數來產生。所述實體線ID可包括指向所述雜湊表中的位置的位址。所述多個簽名可利用較所述第一雜湊函數小的第二雜湊函數來產生。
每一所述參考計數器可追蹤針對儲存於所述雜湊表中的對應資料進行的去重複次數。
根據本發明的實施例,提供一種去重複模組,所述去重複模組包括:主機介面;傳送管理器,經由所述主機介面自主機系統接收資料傳送請求;以及多個分區,每一所述分區包括:去重複引擎,自所述傳送管理器接收分區資料請求;多個記憶體控制器;記憶體管理器,位於所述去重複引擎與所述記憶體控制器之間;以及多個記憶體模組,每一所述記憶體模組耦合至所述記憶體控制器中的一者。
根據本發明的實施例,提供一種去重複模組,所述去重複模組包括讀取快取、記憶體、及去重複引擎。所述記憶體包括:轉譯表;雜湊表,包括多個雜湊桶,每一所述雜湊桶包括多個實體線,每一所述實體線均儲存資料;以及參考計數器表,包括多個參考計數器桶,每一所述參考計數器桶包括多個參考計數器。所述去重複引擎辨識所述多個雜湊桶中的第一雜湊桶的V個虛擬桶,所述虛擬桶是所述多個雜湊桶中的位於所述第一雜湊桶附近的其他桶,所述虛擬桶將在所述第一雜湊桶已滿時儲存所述第一雜湊桶的資料中的一些資料,V是整數且基於所述第一雜湊桶的虛擬桶有多滿來動態地設定。
本發明的實施例是有關於能使記憶體(例如,隨機存取記憶體(RAM))內的記憶體容量較實體記憶體大小大的方法及相關聯結構。根據本發明的實施例,使用去重複演算法來達成資料記憶體減小及上下文定址。根據本發明的實施例,使用者資料儲存於藉由所述使用者資料的雜湊值來進行索引的雜湊表中。
儘管動態隨機存取記憶體(DRAM)技術急劇地按比例減小以超越20奈米(nm)製程技術來滿足對記憶體容量的此增長需求,然而可應用例如去重複等技術來將系統記憶體的虛擬記憶體容量相較於所述系統記憶體的實體記憶體容量提高多達2至3倍或更多。另外,本發明的實施例可利用其他類型的記憶體(例如,快閃記憶體)。
使用輔助壓縮方法,本發明的實施例可提供先進的經去重複記憶體及資料結構以藉由充分利用所有記憶體資源來持續達成高的去重複比率。
資料中心應用程式非常需要具有高容量及低潛時的記憶體裝置。此記憶體裝置可採用去重複方案及資料壓縮方案來提供較其實體記憶體大小大的記憶體容量。經去重複記憶體裝置可藉由減小重複使用者資料及充分利用可用的記憶體資源而持續地達成高的去重複比率。另外,由經去重複記憶體裝置所採用的去重複方案可達成對經去重複資料的高效定址。
資料去重複(或資料重複去除(data duplication elimination))指代減少記憶體裝置中的冗餘資料,以由此降低記憶體裝置的容量成本(capacity cost)。在資料去重複中,資料物件/項(例如,資料檔案)被分割成一或多個資料線/塊/區塊。藉由將由相同的資料組成的多個資料區塊與所儲存的單一資料區塊相關聯,資料區塊的重複拷貝可藉由電腦記憶體而得到減少或去除,由此減少記憶體裝置中的冗餘資料拷貝的總數量。冗餘資料拷貝的減少可提高讀取潛時及記憶體頻寬,且可潛在地使電力得到節省。
因此,若重複的資料拷貝可減少至單個資料拷貝,則在使用相同數量的實體資源的同時記憶體裝置的總可用容量會增大。由於記憶體裝置的所得縮減(resultant economization)使得能夠減少資料重寫計數、且由於可捨棄對已儲存於記憶體中的重複資料區塊的寫入請求,因此可藉由有效地提高寫入持久性(write endurance)來延長實作資料去重複的記憶體裝置的壽命。
相關技術的資料去重複方法可能使用記憶體中去重複技術(in-memory deduplication technology),藉此將去重複引擎與中央處理單元(central processing unit,CPU)或記憶體控制器(memory controller,MC)按以中央處理單元為中心的方式進行整合。此類方法通常實作經去重複快取(deduplicated cache,DDC),所述經去重複快取與所述記憶體控制器運作進而使得中央處理單元處理器能夠察覺到複本,並嘗試根據所述記憶體控制器的控制來提供經去重複記憶體操作(例如,內容查找、參考計數更新等)。去重複方法亦可實作直接轉譯緩衝器(direct translation buffer,DTB),所述直接轉譯緩衝器是用於對轉譯線進行快取以藉由自關鍵路徑移除轉譯提取(translation fetch)來提高資料讀取的快取,且直接轉譯緩衝器可相似於旁視緩衝器(lookaside buffer)。
去重複已被最普遍地用於硬驅動機。然而,對於在例如動態隨機存取記憶體(DRAM)等揮發性記憶體的區域中提供微粒去重複(fine grain deduplication)亦存在關注。
以下結合附圖闡述的詳細說明旨在說明根據本發明而提供的能使隨機存取記憶體(或其他記憶體儲存器)內的記憶體容量較所述隨機存取記憶體(或其他記憶體儲存器)的實體記憶體大小大的方法及相關聯結構的示例性實施例,且並非旨在代表可用以構造或利用本發明的僅有形式。本說明結合所示實施例闡述本發明的特徵。然而應理解,相同的或等效的功能及結構亦可藉由亦旨在被囊括於本發明的精神及範圍內的不同實施例來達成。如本文他處所示,相同的元件編號旨在表示相同的元件或特徵。
圖1是根據本發明實施例的去重複模組的方塊圖。參照圖1,根據本發明實施例的去重複模組100包括橋接器130、記憶體控制器140、主機介面(host interface,host I/F)160、讀取快取170、一或多個記憶體模組180、及去重複引擎200。
橋接器130可提供用於使去重複引擎200及讀取快取170能夠與記憶體控制器140通訊的介面。記憶體控制器140可提供用於使橋接器130與記憶體模組180通訊的介面。讀取快取170可為記憶體模組180的一部分。
在一些實施例中,橋接器130可不存在。在此種情形中,記憶體控制器140可直接與去重複引擎200及讀取快取170通訊。
去重複引擎200經由主機介面160與主機系統通訊以在記憶體模組180中儲存或存取資料。去重複引擎200可進一步經由主機介面160與主機系統的其他組件通訊。
記憶體模組180可為用於連接動態隨機存取記憶體的雙列直插記憶體模組(dual in-line memory module,DIMM)槽,或者其可為快閃記憶體(用於連接其他類型的記憶體的槽)等。
圖2是根據本發明另一實施例的去重複模組的方塊圖。參照圖2,去重複模組150可包括一或多個分區250(例如,分區0 205-0、分區1 205-1等)、傳送管理器230、及主機介面(I/F)162。每一分區250可包括去重複引擎202、記憶體管理器210、一或多個記憶體控制器(例如,記憶體控制器(MC0) 142、記憶體控制器(MC1) 144等)、以及一或多個記憶體模組(例如,DIMM/快閃記憶體0 182、DIMM/快閃記憶體1 184等)。
去重複引擎202中的每一者可直接與傳送管理器230通訊或經由主機介面162與主機系統通訊。傳送管理器230可經由主機介面162與主機系統通訊。
傳送管理器230可經由主機介面162自主機系統接收資料傳送請求。傳送管理器230可進一步管理往來於去重複模組的所述一或多個分區250進行的資料傳送。在一些實施例中,傳送管理器230可確定在哪一分區250上儲存將被儲存的(例如,儲存於隨機存取記憶體中的)資料。在其他實施例中,傳送管理器自主機系統接收關於應在哪一分區250上儲存資料的指令。在一些實施例中,傳送管理器230可對自主機系統接收的資料進行拆分並將其發送至所述分區中的兩者或更多者。
去重複模組150可經由主機介面162與主機系統的各組件通訊。
去重複引擎202可為其相應分區250而自傳送管理器230接收分區資料請求。去重複引擎202可進一步控制資料在記憶體模組中的存取及儲存。記憶體管理器210可確定在所述一或多個記憶體模組中的哪一記憶體模組上儲存所述資料或者應在所述一或多個記憶體模組中的哪一記憶體模組上儲存所述資料。所述一或多個記憶體控制器可控制資料在其相應記憶體模組上的儲存或存取。
在一些實施例中,去重複引擎202及記憶體管理器210可被實作成能夠執行記憶體管理器的功能與去重複引擎的功能二者的單一的記憶體管理器。
所述一或多個記憶體控制器、記憶體管理器210、及去重複引擎可各自利用任何適合的硬體(例如,應用專用積體電路(application-specific integrated circuit,ASIC))、韌體(例如,數位訊號處理器(digital signal processor,DSP)或現場可程式化閘陣列(field programmable gate array,FPGA))、軟體、或者軟體、韌體、及硬體的適合組合來實作。此外,在下文中,可更詳細地闡述去重複引擎。
根據一些實施例,當記憶體具有大的容量時,可使用分區來減小轉譯表大小。
圖3是根據本發明實施例的去重複引擎的邏輯概念的方塊圖。參照圖3,去重複引擎200可包括多個表。去重複引擎200可包括雜湊表220、轉譯表240、簽名及參考計數器表260、以及溢出記憶體區280。
雜湊表220可包括多個實體線(physical line,PL)。每一實體線可包括資料(例如,使用者資料)。雜湊表220內的資料被去重複(即,重複資料已合併至單一位置中以減少儲存空間使用)。
轉譯表240包括儲存於轉譯表240中的多個實體線ID。雜湊表的每一實體線具有儲存於轉譯表240中的相關聯實體線ID(PLID)。儲存於轉譯表240中的實體線ID是邏輯位址到實體位址的轉譯。舉例而言,當去重複引擎200需要對與特定邏輯位址相關聯的資料進行定位時,去重複引擎200可利用轉譯表240來查詢儲存於所述邏輯位址處的資料並接收與儲存有所述資料的雜湊表220的實體線對應的所述資料的實體線ID。去重複引擎200可接著存取儲存於雜湊表220中的對應實體線處的資料。
實體線ID可使用第一雜湊函數來產生。舉例而言,當需要將資料保存於雜湊表內時,對所述資料運行第一雜湊函數以確定與應儲存所述資料的實體線對應的第一雜湊值。第一雜湊值被保存作為所述資料的實體線ID。
每一實體線ID表示目標資料線的實體位置。由於資料線可位於雜湊表220中或溢出記憶體區280中,因此實體線ID可為雜湊表220中的或溢出記憶體區280中的位置。
雜湊表220可被視作具有列行結構的表。在此種情形中,實體線ID是由區位元、列位元、及行位元組成(例如,參見圖4及其說明)。第一雜湊函數可產生列位元作為起點來尋找可在其中儲存資料的可用實體線。當找到可用實體線時可確定其他位元。
若在以上步驟中在雜湊表220中未找到可用實體線,則可將資料寫入至溢出記憶體區280。在此種情形中,實體線ID將為溢出記憶體區表項的實體位置。
使用第二雜湊函數計算出的資料的第二雜湊值(例如,簽名)被儲存於簽名表中。第二雜湊函數可較第一雜湊函數小。第一雜湊函數與第二雜湊函數可為任何適合的雜湊函數且其可為不同的雜湊函數。
可使用簽名來對兩個資料線進行快速比較。當有新資料線即將被寫入至雜湊表220時,可進行檢查以查看在所述雜湊表中是否已存在相同的資料線。執行此檢查可避免多次儲存相同的資料。
若不使用簽名來進行所述檢查,則對記憶體的特定區(整個桶或整個虛擬桶)中的所有資料進行讀取以偵測重複。當使用簽名來進行所述檢查時,僅自記憶體讀取用於所述特定區的資料的簽名,此可節省頻寬。
當不存在匹配簽名時,不存在與新資料線匹配的資料線。否則,當找到匹配簽名時,由於簽名比較可能為誤報(false positive),因此自記憶體讀取具有匹配簽名的資料線以進行進一步比較。
雜湊表中的每一資料線在簽名表中具有對應簽名且每一資料線在參考計數器表中具有對應參考計數器。
參考計數器表追蹤針對雜湊表220中的實體線中的每一者進行的去重複次數(例如,資料已重複的次數)。當將經去重複資料的實例增添至雜湊表時,可使參考計數器表中的對應參考計數器遞增,而不是增添與前面所儲存的使用者資料相同的新使用者資料,且當自雜湊表刪除經去重複資料的實例時,可將參考計數器表中的對應參考計數器減小一。
此外,經去重複記憶體(即,雜湊表)是由實體線(PL)構成,其是具有固定位元寬度的使用者資料C。預設實體線長度可為64位元組,但本發明並非僅限於此。實體線長度可被配置成其他大小,舉例而言,實體線大小可大於或小於64位元組。舉例而言,實體線大小可為32位元組。
較大的實體線大小可減小轉譯表的大小而且亦可減少重複資料的數量(即,減少因需要匹配大得多的位元圖案而進行的去重複次數)。較小的實體線大小可增大轉譯表的大小且亦可增大重複資料的數量(即,增大去重複次數)。
轉譯表儲存被稱作實體線ID(PLID)的邏輯位址到實體位址的轉譯。實體線ID是藉由雜湊函數h1(C)而產生。另外,對於每一實體線,在簽名表中儲存有與所述實體線相關聯的簽名。所述簽名較藉由雜湊函數h2
(C)而產生的使用者資料的雜湊結果小得多。在參考計數器表中儲存有亦與所述實體線相關聯的參考計數器。所述參考計數器對使用者資料匹配實體線內容的次數(即,去重複比率)進行計數。
雜湊表、簽名表、及參考計數器表皆可具有相同的資料結構但具有不同的粒度(granularity)。
儘管所述多個表被示作去重複模組的一部分,然而本發明並非僅限於此。根據本發明的一些實施例,所述多個表可儲存於位於去重複模組內的記憶體(例如,隨機存取記憶體)中,且根據其他實施例,所述多個表儲存於位於去重複模組外部的記憶體(例如,隨機存取記憶體)中且由所述去重複模組以本文所述方式進行控制。
對本發明的以上特徵的其他說明可在美國專利申請案第15/473,311號中找到,所述美國專利申請案的全部內容併入本案供參考。
圖4是根據本發明實施例的包括單層式轉譯表的去重複引擎的邏輯概念的方塊圖。轉譯表是主要元資料表,其可因自身的大小及在使用時所耗用的時間而對去重複比率、系統容量、及/或系統潛時造成影響。參照圖4,邏輯位址(LA)310可作為資料在系統記憶體(例如,動態隨機存取記憶體)中所儲存的位置而被電腦系統使用。
邏輯位址310可為x位元長,其中x是整數。邏輯位址310可包括為g位元長的粒度314,其中g是整數。粒度314可定位於邏輯位址310的位元0至位元g-1處。邏輯位址310可更包括轉譯表索引312。轉譯表索引312可為x-g位元長且可定位於邏輯位址310的位元g至位元x-1處。在一些實施例中,當實體線為32位元組長時,g為5(25
= 32),且當實體線為64位元組長時,g為6(26
= 64[[54]])。在一些實施例中,當支援1太位元組(terabyte)(1TB)的虛擬容量時,x為40(240
為1太位元組)。
轉譯表索引312對應於轉譯表240內的實體位址320。實體位址320可包括區位元(RGN) 322、列索引(R_INDX) 326、及行索引(COL_INDX) 328。區位元(RGN) 322可為單一位元且可表示雜湊表220中或溢出記憶體區280中是否儲存有資料。列索引(R_INDX) 326可為m個位元且對應於雜湊表220中的M個列(0至M-1或0至2m
-1)。行索引(COL_INDX) 328可為n個位元且對應於雜湊表220中的N個行(0至N-1或0至2n
-1)。M、N、m、及n是整數。根據一些實施例,當雜湊表為128吉位元組(237
)且g = 6時,m = 26,n = 5,M = 226
,且N = 25
。
此外,溢出記憶體區280儲存未放置在雜湊表中的資料。
圖5是根據本發明實施例的包括兩層式轉譯表的去重複引擎的邏輯概念的方塊圖。轉譯表是主要元資料表,其可對去重複比率、系統容量、及系統潛時造成影響。在圖5所示去重複引擎中,轉譯表包括兩層,即頁面索引表242及第2層(L2)映射表244。
邏輯位址310’可作為資料在記憶體(例如,隨機存取記憶體)中所儲存的位置被電腦系統使用。邏輯位址310’可為x位元長,其中x是整數。邏輯位址310’可包括為g位元長的粒度314’,其中g是整數。粒度314’可定位於邏輯位址310’的位元0至位元g-1處。邏輯位址310’可更包括頁面表項318及頁面索引316。頁面表項318可為12-g位元長且可定位於邏輯位址310’的位元g至位元11處。頁面索引可為x-12位元長且可定位於邏輯位址310’的位元12至位元x-1處。在一些實施例中,當實體線為32位元組長時,g為5(25
= 32),且當實體線為64位元長時,g為6(26
= 64[[54]])。在一些實施例中,當支援1太位元組(1TB)的虛擬容量時,x為40(240
為1太位元組)。
頁面索引316對應於頁面索引表242內的頁面。頁面索引表242內的頁面對應於第2層映射表244內的表項0位置。頁面表項318表示哪一表項會在表項0之後儲存所儲存資料的與邏輯位址310’對應的實體位址320’。
換言之,頁面索引316與一組第2層映射表項相關聯且頁面表項318指定所述組中的表項。頁面索引316引向所述組中的第一表項,且頁面表項318示出此表項組中的哪一特定表項含有實體位址320’。頁面索引表242中的每一頁面可包括區位元(RGN)。區位元(RGN) 322’可為單一位元且可表示雜湊表220’中或溢出記憶體區280’中是否儲存有資料。
實體位址320’可包括列索引(R_INDX) 326’及行索引(COL_INDX) 328’。列索引(R_INDX) 326’可為m個位元且對應於雜湊表220’中的M個列(0至M-1或0至2m
-1)。行索引(COL_INDX) 328’可為n個位元且對應於雜湊表220’中的N個行(0至N-1或0至2n
-1)。M、N、m、及n是整數。根據一些實施例,當雜湊表為128吉位元組(237
)且g = 6時,m = 26,n = 5,M = 226
,且N = 25
。
此外,溢出記憶體區280儲存未放置在雜湊表中的資料。
圖6是根據本發明實施例的包括具有動態第2層映射表及溢出記憶體區的兩層式轉譯表的去重複引擎的邏輯概念的方塊圖。參照圖6,兩層式轉譯表可為溢出記憶體區騰出額外空間。
根據一些實施例,簽名及參考計數器表260’的大小以及頁面索引表242’的大小是固定的,但第2層映射表244’及溢出記憶體區280’’的亂七八糟是動態的。
隨著第2層映射表244’及溢出記憶體區280’’的大小增大,其會朝彼此擴展。如此一來,儲存空間可藉由容許第2層映射表244’或溢出記憶體區280’’向未使用空間中擴展而得到高效使用。
圖7是根據本發明實施例的雜湊圓柱體的邏輯概念的方塊圖。圖8是根據本發明實施例的組合資料結構的邏輯概念的方塊圖。參照圖7及圖8,簽名表、參考計數器表、及雜湊表被劃分開且排列於組合資料結構600(例如,組合結構600或組合表600)的雜湊圓柱體500(例如,雜湊圓柱體500-i)內的桶(例如,雜湊桶i)中。每一雜湊圓柱體500包括雜湊表的雜湊桶560(例如,雜湊桶560-i)、簽名表的簽名桶520(例如,簽名桶520-i)、及參考計數器表的參考計數器桶540(例如,參考計數器桶i)。
雜湊桶560包括多個表項或實體線(例如,表項0至表項N-1)。
簽名桶520包括多個簽名,所述多個簽名對應於儲存於同一雜湊圓柱體500的雜湊桶560內的實體線中的資料。
參考計數器桶540包括多個參考計數器,所述多個參考計數器對應於儲存於同一雜湊圓柱體500的雜湊桶560內的實體線中的資料已被去重複的次數。
換言之,雜湊表被劃分成多個雜湊桶560,每一雜湊桶560包括多個表項。簽名表被劃分成多個簽名桶520,每一簽名桶520包括多個簽名。參考計數器表被劃分成多個參考計數器桶540,每一參考計數器桶540包括多個參考計數器。
組合資料結構600被組織成將一個雜湊桶560、一個簽名桶520、及一個參考計數器桶540一起放置於雜湊圓柱體500中。根據本發明的一些實施例,各所述桶以下次序進行排列:第一簽名桶520-0、第一參考計數器桶540-0、第一雜湊桶560-0、第二簽名桶520-1、第二參考計數器桶540-1、第二雜湊桶560-1等。
在此排列中,第一簽名桶520-0包括與儲存於第一雜湊桶560-0中的資料相關聯的簽名,且第一參考計數器桶540-0包括與儲存於第一雜湊桶560-0中的資料相關聯的參考計數器。此外,第二簽名桶520-1包括與儲存於第二雜湊桶560-1中的資料相關聯的簽名,且第二參考計數器桶540-1包括與儲存於第二雜湊桶560-1中的資料相關聯的參考計數器。此外,第一圓柱體500-0包括第一簽名桶520-0、第一參考計數器桶540-0、及第一雜湊桶560-0,且第二圓柱體500-1包括第二簽名桶520-1、第二參考計數器桶540-1、及第二雜湊桶560-1。
如此一來,每一雜湊圓柱體500包括資料以及與儲存於同一雜湊圓柱體500內的所述資料相關聯的簽名及參考計數器。
當對儲存於組合資料結構600的雜湊圓柱體500-i內的資料作出請求時,整個雜湊圓柱體500-i被拷貝至讀取快取170’中。由於整個雜湊圓柱體500-i被拷貝至讀取快取170’中,因此擷取所請求資料、對應簽名(或相應簽名)、及對應參考計數器(或相應參考計數器)中的所有者所需的時間可減少。
根據一些實施例,讀取資料快取可與雜湊圓柱體為相同大小。
此外,當去重複引擎判斷雜湊表內是否已存在資料(以避免重複)時,整個雜湊圓柱體500可被拷貝至讀取快取170’中。由於去重複引擎在判斷是否可進行去重複時且在儲存資料時存取簽名、參考計數器、及資料,因此使讀取快取拷貝整個讀取圓柱體可減少存取時間及提高總計算速度。
換言之,為改善潛時及效能,可創建雜湊圓柱體500作為雜湊表項、簽名、及參考計數器表項的整合單元。整合雜湊圓柱體500可藉由減少系統記憶體存取循環來改善系統潛時。所述密實的資料結構可減少記憶體存取時間。每一雜湊圓柱體500包括去重複引擎執行計算所需的所有資訊。組合資料結構600亦可使快取更容易。
圖9是根據本發明實施例的與虛擬桶相關聯的雜湊桶及對應的參考計數器桶的邏輯概念的方塊圖。參照圖9,每一雜湊桶560’可與一或多個虛擬桶VB(例如,VB-0至VB-V-1)相關聯。每一雜湊桶560’可包括N個路線(例如,WAY0至WAYN-1)。
與相關技術的雜湊表不同,本實施例的雜湊表各自包括多個虛擬雜湊桶或虛擬桶,所述虛擬桶是由多個實體雜湊桶或實體桶構成。在下文中,用語「實體桶」將指代前面所論述的雜湊桶,且將用於將前面所論述的所述雜湊桶與所述虛擬桶加以區別。
每一虛擬桶可包括雜湊表的實體桶中的部分實體桶。然而,應注意,所述虛擬桶中的不同虛擬桶可共享一或多個實體桶。如以下將闡述,使用根據本發明實施例的虛擬桶,額外的維數被增添至雜湊表。因此,可在排列及放置資料方面提供更大的撓性,由此提高效率且提高去重複動態隨機存取記憶體系統的壓縮比率(compression ratio)。
本實施例使用虛擬桶來將資料放置撓性提高另一程度以釋放由其他虛擬桶所共享的其他實體桶,乃因儲存於雜湊桶中的一者中的資料區塊可在對應虛擬桶內移動、或移動至不同的實體桶。藉由釋放雜湊表內的空間,可藉由移除陳舊的/重複的資料來達成去重複。亦即,藉由使用根據本發明的實施例的虛擬桶,使用雜湊函數對資料線進行雜湊不會對受約束的對應位置造成嚴格限制,且資料能夠被放置於附近/「附近位置(near-location)」實體桶中,附近/「附近位置」實體桶指代位於包括最初意圖(但被佔用)實體雜湊桶的同一虛擬桶內的實體桶。
作為例子,內容(例如,資料線)將被放置於實體桶中的一者中。若資料線將被放置於第一實體桶中,則作為對需要將資料線放置於實體桶中的替代,本實施例容許使用較單一的實體桶大且包括所述實體桶、但亦包括其他實體桶的虛擬桶。亦即,虛擬桶含有對齊於雜湊表內的毗鄰的、或相鄰的實體桶的集合。
因此,虛擬桶容許資料區塊在雜湊表內移動以為未來的寫入操作釋放空間。
對虛擬桶的其他說明請參見於2016年5月23日提出申請的美國專利申請案第15/162,512號及於2016年5月23日提出申請的美國專利申請案15/162,517號,該些美國專利申請案的全部內容皆併入本案供參考。
此外,虛擬桶可具有動態高度或大小。具有動態虛擬桶高度(virtual bucket height,VBH)可使得在限制潛時影響的同時提高記憶體利用率。
與實體桶相關聯的虛擬桶的數目是由虛擬桶(virtual bucket,VB)高度索引來表示。虛擬桶高度資訊被儲存於與雜湊桶560’相關聯的參考計數器桶540’中的最末參考計數器中。參考計數器的位元的一部分被用作虛擬桶高度索引(例如,VBH[1:0])。
使用雜湊桶i作為例子,若虛擬桶高度為V,則雜湊桶i的虛擬桶可指代雜湊桶i+1至雜湊桶i+V。當雜湊桶i已滿時,去重複引擎將會將使用者資料放入虛擬桶中。
旗標(flag)(一個RC位元的一部分,例如雜湊桶M中的最末RC計數器)表示當前雜湊桶i正使用多少虛擬桶。如此一來,由於無需搜索多於所需數量的虛擬桶,因此潛時可減少。相關技術的虛擬桶使用固定的虛擬桶高度。使用固定的虛擬桶高度使得搜索邏輯將搜索所有虛擬桶而無論雜湊桶i實際使用多少虛擬桶,此可能增大潛時。
虛擬桶不需要其他記憶體空間。其使用附近雜湊桶中的未使用表項。舉例而言,對於雜湊桶i+1,其虛擬桶可指代雜湊桶i+2至雜湊桶i+V’+1。
此外,當雜湊桶i的虛擬桶(例如,雜湊桶i+1至雜湊桶i+V)已滿時,根據本發明實施例的去重複引擎會增加所述虛擬桶的高度V以利用更多附近的雜湊桶中的可用空間。由於相關技術的虛擬桶高度是預先設定的(而非動態的),因此其無法增大。如此一來,當雜湊桶i的虛擬桶(例如,雜湊桶i+1至雜湊桶i+V)已滿時,相關技術的去重複引擎無法使高度V增大。
另外,藉由動態地調整虛擬桶的高度,當去重複引擎判斷雜湊表內是否已存在資料(以避免重複)時,所述去重複引擎將僅需檢查正被使用的虛擬桶而不是檢查為預先設定數目的虛擬桶。此可減少存取時間且提高總計算速度。
圖10是說明根據本發明實施例的擷取在隨機存取記憶體中儲存的資料的方法的流程圖。儘管圖10示出使用隨機存取記憶體,然而本發明並非僅限於此且可將任何其他適合的記憶體類型與本文中的方法一起使用。
參照圖10,電腦系統的中央處理單元可請求儲存於隨機存取記憶體中的資料。所述中央處理單元可提供隨機存取記憶體內的資料的位置的位址。本發明並非僅限於此且舉例而言,其他組件亦可自隨機存取記憶體請求資料並提供邏輯位址。
根據本發明實施例的擷取在隨機存取記憶體內儲存的資料的方法包括辨識在隨機存取記憶體中儲存的資料的邏輯位址(1000)。邏輯位址可對應於轉譯表中的位置。
所述方法更包括藉由在轉譯表中查找所述邏輯位址來根據所述邏輯位址辨識資料的實體線ID(PLID)(1010)。
所述方法更包括基於所述實體線ID來判斷資料是儲存於隨機存取記憶體的雜湊表中還是儲存於所述隨機存取記憶體的溢出記憶體區中(1020)。
當資料儲存於雜湊表中時,所述方法更包括對所述雜湊表的與實體線ID對應的實體線進行定位(1030)及自所述雜湊表的實體線擷取資料(1040)。擷取資料可包括自簽名表及參考計數器表擷取對應資料。
當資料儲存於溢出記憶體中時,所述方法更包括對所述溢出記憶體區的與實體線ID對應的實體線進行定位(1050)及自所述溢出記憶體區的實體線擷取資料(1060)。
可使用應用於所述資料的第一雜湊函數來產生實體線ID。所述實體線ID可包括指向隨機存取記憶體的雜湊表中的或所述隨機存取記憶體的溢出記憶體區中的位置的位址。
實體線ID可包括:第一辨識符(例如,參見圖4中的RGN),表示資料是儲存於雜湊表中還是儲存於溢出記憶體區中;第二辨識符(例如,參見圖4中的R_INDX),表示儲存有所述資料的列;以及第三辨識符(例如,參見圖4中的COL_INDX),表示儲存有所述資料的行。
所述方法可更包括自簽名表擷取與所述資料相關聯的簽名。
所述隨機存取記憶體可包括:所述雜湊表,儲存多個資料;所述轉譯表,儲存使用第一雜湊函數產生的多個實體線ID;簽名表,儲存使用較第一雜湊函數小的第二雜湊函數產生的多個簽名;參考計數器表,儲存多個參考計數器,每一所述參考計數器追蹤針對儲存於雜湊表中的對應資料進行的去重複次數;以及所述溢出記憶體區。
雜湊表、簽名表、及參考計數器表可被整合至組合資料結構中。所述組合資料結構可包括多個雜湊圓柱體,且每一雜湊圓柱體可包括:雜湊桶,包括多個實體線;簽名桶,包括與所述多個實體線對應的相應簽名;以及參考計數器桶,包括與所述多個實體線對應的相應參考計數器。
自實體線或溢出記憶體區擷取資料可包括將包括實體線、對應簽名、及對應參考計數器在內的整個雜湊圓柱體拷貝至讀取快取。
圖11是說明根據本發明實施例的將資料儲存於隨機存取記憶體中的方法的流程圖。儘管圖11示出使用隨機存取記憶體,然而本發明並非僅限於此且可將任何其他適合的記憶體類型與本文中的方法一起使用。
參照圖11,電腦系統的中央處理單元可請求將資料儲存於隨機存取記憶體中。所述中央處理單元可提供將被儲存於隨機存取記憶體內的資料。本發明並非僅限於此且舉例而言,其他組件亦可請求將資料儲存於隨機存取記憶體中並提供所述資料。
根據本發明實施例的將資料儲存於隨機存取記憶體內的方法包括辨識將被儲存於隨機存取記憶體中的資料(1100)。
所述方法更包括利用第一雜湊函數來確定與所述資料所應在隨機存取記憶體的雜湊表中儲存之處對應的第一雜湊值(1110)。
所述方法更包括將資料儲存於雜湊表中與第一雜湊值對應的位置(1120)。
所述方法更包括利用第二雜湊函數來確定亦與所述資料所應儲存之處對應的第二雜湊值(1130)。第二雜湊函數可小於第一雜湊函數。
所述方法更包括將第一雜湊值儲存於轉譯表中(1140)。
所述方法更包括將第二雜湊表儲存於簽名表中(1150)。
所述方法可更包括使參考計數器表中與所述資料對應的參考計數器遞增。
所述隨機存取記憶體可包括:所述雜湊表,儲存多個資料;所述轉譯表,儲存使用第一雜湊函數產生的多個實體線ID(PLID);所述簽名表,儲存使用第二雜湊函數產生的多個簽名;參考計數器表,儲存多個參考計數器,每一所述參考計數器追蹤針對儲存於雜湊表中的對應資料進行的去重複次數;以及溢出記憶體區。
實體線ID中的每一者可包括:第一辨識符(例如,參見圖4中的RGN),表示所述資料是儲存於雜湊表中還是儲存於溢出記憶體區中;第二辨識符(例如,參見圖4中的R_INDX),表示儲存有所述資料的列;以及第三辨識符(例如,參見圖4中的COL_INDX),表示儲存有所述資料的行。
雜湊表、簽名表、及參考計數器表可被整合至組合資料結構中。所述組合資料結構可包括多個雜湊圓柱體。每一雜湊圓柱體可包括:雜湊桶,包括多個實體線;簽名桶,包括與所述多個實體線對應的相應簽名;以及參考計數器桶,包括與所述多個實體線對應的相應參考計數器。
將資料儲存於雜湊表中與第一雜湊值對應的位置可包括將所述資料儲存於與所述第一雜湊值對應的雜湊桶中。將第二雜湊值儲存於簽名表中可包括將所述第二雜湊值儲存於與儲存有所述資料的雜湊桶對應的簽名桶中。
因此,本發明的實施例是有關於能使記憶體(例如,隨機存取記憶體)內的記憶體容量較實體記憶體大小大的方法及相關聯結構。根據本發明的實施例,使用去重複來達成資料記憶體減小及上下文定址。根據本發明的實施例,將使用者資料儲存於藉由所述使用者資料的雜湊值來進行索引的雜湊表中。
應理解,儘管本文中可能使用用語「第一(first)」、「第二(second)」、「第三(third)」等來闡述各種元件、組件、區、層、及/或區段,然而該些元件、組件、區、層、及/或區段不應受該些用語限制。該些用語用於區分一元件、組件、區、層、或區段自其他元件、組件、區、層、或區段。因此,在不背離本發明的精神及範圍的條件下,可將以下所論述的第一元件、組件、區、層、或區段稱為第二元件、組件、區、層、或區段。
根據本文所述本發明的實施例的一(或多個)相關裝置或組件(例如,去重複引擎)可利用任何適合的硬體(例如,應用專用積體電路)、韌體(例如,數位訊號處理器(DSP)或現場可程式化閘陣列(FPGA))、軟體、或者軟體、韌體、及硬體的適合組合來實作。舉例而言,可將相關裝置的各種組件形成於一個積體電路(integrated circuit,IC)晶片上或單獨的積體電路晶片上。此外,可將相關裝置的各種組件實作於撓性印刷電路膜、膠帶載體封裝(tape carrier package,TCP)、印刷電路板(printed circuit board,PCB)上、或與一或多個電路及/或其他裝置形成於相同的基板上。此外,相關裝置的各種組件可為在一或多個計算裝置中由一或多個處理器運行、執行電腦程式指令並與用於執行本文所述各種功能性的其他系統組件進行交互的過程或執行緒。電腦程式指令儲存於可在使用例如(舉例而言,隨機存取記憶體(RAM))等標準記憶體裝置的計算裝置中實作的記憶體中。電腦程式指令亦可儲存於例如(舉例而言,光碟唯讀記憶體(CD-ROM)、快閃驅動機、或類似元件)等其他非暫時性電腦可讀媒體中。此外,熟習此項技術者應知,在不背離本發明示例性實施例的精神及範圍的條件下,可將各種計算裝置的功能性組合或整合成單一的計算裝置,或者可使一特定計算裝置的功能性跨越一或多個其他計算裝置來分佈。
此外,亦應理解,當稱一個元件、組件、區、層、及/或區段位於兩個元件、組件、區、層、及/或區段「之間(between)」時,所述元件、組件、區、層、及/或區段可為所述兩個元件、組件、區、層、及/或區段之間的唯一元件、組件、區、層、及/或區段,抑或亦可存在一或多個中間元件、組件、區、層、及/或區段。
本文中所用的術語僅是為闡述具體實施例,而非旨在限制本發明。除非上下文中清楚地另外指明,否則本文所用的單數形式「一(a及an)」旨在亦包含複數形式。更應理解,當在本說明書中使用用語「包括(comprise/comprises/comprising)」、及「包含(includes/including/include)」時,是指明所陳述特徵、整數、步驟、操作、元件、及/或組件的存在,但不排除一或多個其他特徵、整數、步驟、操作、元件、組件及/或其群組的存在或增添。
本文中使用的用語「及/或(and/or)」包括相關所列項其中一或多個項的任意及所有組合。當例如「…中的至少一者(at least one of)」、「…中的一者(one of)」、及「選自…的(selected from)」等表達位於一系列元件之前時,是修飾整個系列的元件,而並非修飾所述系列中的各別元件。此外,在闡述本發明的實施例時使用「可(may)」是指代「本發明的一或多個實施例」。此外,用語「示例性(exemplary)」旨在指代例子或說明。
本文所用用語「使用(use)」、「正使用(using)」、及「被使用(used)」可視為分別與用語「利用(utilize)」、「正利用(utilizing)」、及「被利用(utilized)」同義。
針對本發明的一或多個實施例闡述的特徵可結合本發明的其他實施例的特徵來加以使用。舉例而言,在第一實施例中闡述的特徵可與在第二實施例中闡述的特徵加以組合以形成第三實施例,儘管所述第三實施例可能未在本文中具體闡述。
熟習此項技術者亦應知,可藉由硬體、韌體(例如,藉由應用專用積體電路)、或以軟體、韌體、及/或硬體的任何組合來執行所述過程。此外,所述過程的步驟的順序不是固定的,而是可更改成如熟習此項技術者所知的任何所期望順序。所更改順序可包括所述步驟中的所有者或所述步驟的一部分。
儘管已針對一些具體實施例闡述了本發明,然而熟習此項技術者將不費力地構想出所述實施例的變型,此決不背離本發明的範圍及精神。此外,對於熟習各種技術者,本文所述發明自身將提出針對其他任務的解決方案及針對其他應用程式的修改形式。申請者意圖使申請專利範圍涵蓋本發明的所有此種用途以及在不背離本發明的精神及範圍的條件下可對出於揭露目的而選擇的本發明實施例作出的變化及潤飾。因此,本發明的當前實施例應被視作說明性的而非約束性的,本發明的範圍將由隨附申請專利範圍及其等效範圍來表示。
100、150‧‧‧去重複模組
130‧‧‧橋接器
140‧‧‧記憶體控制器
142‧‧‧記憶體控制器0
144‧‧‧記憶體控制器
1160、162‧‧‧主機介面
170、170’‧‧‧讀取快取
180‧‧‧記憶體模組
182‧‧‧雙列直插記憶體模組/快閃記憶體0
184‧‧‧雙列直插記憶體模組/快閃記憶體1
200、202‧‧‧去重複引擎
210‧‧‧記憶體管理器
220、220’‧‧‧雜湊表
230‧‧‧傳送管理器
240‧‧‧轉譯表
242、242’‧‧‧頁面索引表
244、244’‧‧‧第2層映射表
260、260’‧‧‧簽名及參考計數器表
280、280’、280’’‧‧‧溢出記憶體區
310、310’‧‧‧邏輯位址
312‧‧‧轉譯表索引
314、314’‧‧‧粒度
316‧‧‧頁面索引
318‧‧‧頁面表項
320、320’‧‧‧實體位址
322‧‧‧區位元
326、326’‧‧‧列索引
328、328’‧‧‧行索引
400、400’‧‧‧實體線
500、500-i、500-M-1‧‧‧雜湊圓柱體
500-0‧‧‧第一圓柱體
520、520-i、520-M-1‧‧‧簽名桶
520-0‧‧‧第一簽名桶
540、540’、540-i、540-M-1‧‧‧參考計數器桶
540-0‧‧‧第一參考計數器桶
560、560’、560-i、560-M-1‧‧‧雜湊桶
560-0‧‧‧第一雜湊桶
600‧‧‧組合資料結構/組合結構/組合表
1000、1010、1020、1030、1040、1050、1060、1100、1110、1120、1130、1140、1150‧‧‧步驟
COL_INDX‧‧‧行索引
LA‧‧‧邏輯位址
R_INDX‧‧‧列索引
RGN‧‧‧區位元
V‧‧‧高度
VBH‧‧‧虛擬桶高度索引
130‧‧‧橋接器
140‧‧‧記憶體控制器
142‧‧‧記憶體控制器0
144‧‧‧記憶體控制器
1160、162‧‧‧主機介面
170、170’‧‧‧讀取快取
180‧‧‧記憶體模組
182‧‧‧雙列直插記憶體模組/快閃記憶體0
184‧‧‧雙列直插記憶體模組/快閃記憶體1
200、202‧‧‧去重複引擎
210‧‧‧記憶體管理器
220、220’‧‧‧雜湊表
230‧‧‧傳送管理器
240‧‧‧轉譯表
242、242’‧‧‧頁面索引表
244、244’‧‧‧第2層映射表
260、260’‧‧‧簽名及參考計數器表
280、280’、280’’‧‧‧溢出記憶體區
310、310’‧‧‧邏輯位址
312‧‧‧轉譯表索引
314、314’‧‧‧粒度
316‧‧‧頁面索引
318‧‧‧頁面表項
320、320’‧‧‧實體位址
322‧‧‧區位元
326、326’‧‧‧列索引
328、328’‧‧‧行索引
400、400’‧‧‧實體線
500、500-i、500-M-1‧‧‧雜湊圓柱體
500-0‧‧‧第一圓柱體
520、520-i、520-M-1‧‧‧簽名桶
520-0‧‧‧第一簽名桶
540、540’、540-i、540-M-1‧‧‧參考計數器桶
540-0‧‧‧第一參考計數器桶
560、560’、560-i、560-M-1‧‧‧雜湊桶
560-0‧‧‧第一雜湊桶
600‧‧‧組合資料結構/組合結構/組合表
1000、1010、1020、1030、1040、1050、1060、1100、1110、1120、1130、1140、1150‧‧‧步驟
COL_INDX‧‧‧行索引
LA‧‧‧邏輯位址
R_INDX‧‧‧列索引
RGN‧‧‧區位元
V‧‧‧高度
VBH‧‧‧虛擬桶高度索引
參照本說明書、申請專利範圍、及附圖將領會及理解本發明的該些及其他特徵及態樣,在附圖中:
圖1是根據本發明實施例的去重複模組的方塊圖。 圖2是根據本發明另一實施例的去重複模組的方塊圖。 圖3是根據本發明實施例的去重複引擎的邏輯概念的方塊圖。 圖4是根據本發明實施例的包括單層式轉譯表的去重複引擎的邏輯概念的方塊圖。 圖5是根據本發明實施例的包括兩層式轉譯表的去重複引擎的邏輯概念的方塊圖。 圖6是根據本發明實施例的包括具有動態第2層(level two,L2)映射表、簽名及參考計數器表、以及溢出記憶體區的兩層式轉譯表的去重複引擎的邏輯概念的方塊圖。 圖7是根據本發明實施例的雜湊圓柱體的邏輯概念的方塊圖。 圖8是根據本發明實施例的組合資料結構的邏輯概念的方塊圖。 圖9是根據本發明實施例的與虛擬桶相關聯的雜湊桶及對應的參考計數器桶的邏輯概念的方塊圖。 圖10是說明根據本發明實施例的擷取在隨機存取記憶體(RAM)中儲存的資料的方法的流程圖。 圖11是說明根據本發明實施例的將資料儲存於隨機存取記憶體中的方法的流程圖。
1000、1010、1020、1030、1040、1050、1060‧‧‧步驟
Claims (22)
- 一種擷取在與去重複模組相關聯的記憶體中儲存的資料的方法,所述去重複模組包括讀取快取,所述記憶體包括轉譯表及組合資料結構,所述組合資料結構包括雜湊表及參考計數器表,所述雜湊表及所述參考計數器表各自儲存於所述組合資料結構的多個雜湊圓柱體中,所述雜湊表包括多個雜湊桶,所述多個雜湊桶各自包括多個實體線,每一所述實體線儲存資料,所述參考計數器表包括多個參考計數器桶,所述多個參考計數器桶各自包括多個參考計數器,所述方法包括: 辨識所述資料的邏輯位址; 藉由在所述轉譯表中查找所述邏輯位址的至少一部分來根據所述邏輯位址辨識所述資料的實體線ID(PLID); 對所述多個實體線中的相應實體線進行定位,所述相應實體線對應於所述實體線ID;以及 自所述相應實體線擷取所述資料,所述擷取包括將所述多個雜湊圓柱體中的相應雜湊圓柱體拷貝至所述讀取快取,所述相應雜湊圓柱體包括: 所述多個雜湊桶中的相應雜湊桶,所述相應雜湊桶包括所述相應實體線;以及 所述多個參考計數器桶中的相應參考計數器桶,所述相應參考計數器桶包括與所述相應實體線相關聯的相應參考計數器。
- 如申請專利範圍第1項所述的方法,更包括基於所述實體線ID來確定所述資料儲存於所述雜湊表中。
- 如申請專利範圍第1項所述的方法, 其中所述實體線ID是利用應用於所述資料的第一雜湊函數來產生,且 其中所述實體線ID包括指向所述雜湊表中的位置的位址。
- 如申請專利範圍第3項所述的方法,其中所述實體線ID包括: 第一辨識符,表示所述資料是儲存於所述雜湊表中還是儲存於溢出記憶體區中; 第二辨識符,表示儲存有所述資料的列;以及 第三辨識符,表示儲存有所述資料的行。
- 如申請專利範圍第1項所述的方法, 其中所述組合資料結構更包括簽名表,所述簽名表包括多個簽名桶,每一所述簽名桶包括多個簽名,且 其中所述相應雜湊圓柱體更包括所述多個簽名桶中的相應簽名桶,所述相應簽名桶包括與所述相應實體線相關聯的相應簽名。
- 如申請專利範圍第5項所述的方法, 其中所述實體線ID是利用應用於所述資料的第一雜湊函數來產生, 其中所述實體線ID包括指向所述雜湊表中的位置的位址,且 其中所述多個簽名是利用較所述第一雜湊函數小的第二雜湊函數來產生。
- 如申請專利範圍第1項所述的方法,其中每一所述參考計數器追蹤針對儲存於所述雜湊表中的對應資料進行的去重複次數。
- 一種將資料儲存於與去重複引擎相關聯的記憶體中的方法,所述方法包括: 辨識將被儲存的所述資料; 利用第一雜湊函數來確定與所述資料所應在所述記憶體中的雜湊表中儲存之處對應的第一雜湊值; 將所述資料儲存於所述雜湊表中與所述第一雜湊值對應的位置; 利用較所述第一雜湊函數小的第二雜湊函數來確定亦與所述資料所應儲存之處對應的第二雜湊值; 將所述第一雜湊值儲存於所述記憶體中的轉譯表中;以及 將所述第二雜湊值儲存於所述記憶體中的簽名表中。
- 如申請專利範圍第8項所述的方法,更包括使參考計數器表中與所述資料對應的參考計數器遞增。
- 如申請專利範圍第8項所述的方法,其中所述記憶體包括: 所述雜湊表,儲存多個資料; 所述轉譯表,儲存利用所述第一雜湊函數產生的多個實體線ID(PLID); 所述簽名表,儲存利用所述第二雜湊函數產生的多個簽名; 參考計數器表,儲存多個參考計數器,每一所述參考計數器追蹤針對儲存於所述雜湊表中的對應資料進行的去重複次數;以及 溢出記憶體區。
- 如申請專利範圍第10項所述的方法,其中所述實體線ID中的每一者包括: 第一辨識符,表示所述資料是儲存於所述雜湊表中還是儲存於所述溢出記憶體區中; 第二辨識符,表示儲存有所述資料的列;以及 第三辨識符,表示儲存有所述資料的行。
- 如申請專利範圍第10項所述的方法, 其中所述雜湊表、所述簽名表、及所述參考計數器表被整合至組合資料結構中,且 其中所述組合資料結構包括多個雜湊圓柱體,每一所述雜湊圓柱體包括: 雜湊桶,包括多個實體線; 簽名桶,包括與所述多個實體線對應的相應簽名;以及 參考計數器桶,包括與所述多個實體線對應的相應參考計數器。
- 如申請專利範圍第12項所述的方法, 其中所述將所述資料儲存於所述雜湊表中與所述第一雜湊值對應的位置包括將所述資料儲存於與所述第一雜湊值對應的所述雜湊桶中,且 其中所述將所述第二雜湊值儲存於所述簽名表中包括將所述第二雜湊值儲存於與儲存所述資料的所述雜湊桶對應的所述簽名桶中。
- 一種去重複模組,包括: 讀取快取; 去重複引擎,自主機系統接收資料擷取請求;以及 記憶體,所述記憶體包括: 轉譯表;以及 組合資料結構,包括: 雜湊表,包括多個雜湊桶,每一所述雜湊桶包括多個實體線,每一所述實體線均儲存資料; 參考計數器表,包括多個參考計數器桶,每一所述參考計數器桶包括多個參考計數器;以及 多個雜湊圓柱體,每一所述雜湊圓柱體包括所述雜湊桶中的一者及所述參考計數器桶中的一者, 其中所述資料擷取請求使所述去重複引擎: 辨識所述資料的邏輯位址; 藉由在所述轉譯表中查找所述邏輯位址的至少一部分來根據所述邏輯位址辨識所述資料的實體線ID(PLID); 對所述多個實體線中的相應實體線進行定位,所述相應實體線對應於所述實體線ID;以及 自所述相應實體線擷取所述資料,所述擷取所述資料包括將所述多個雜湊圓柱體中的相應雜湊圓柱體拷貝至所述讀取快取,所述相應雜湊圓柱體包括: 所述多個雜湊桶中的相應雜湊桶,所述相應雜湊桶包括所述相應實體線;以及 所述多個參考計數器桶中的相應參考計數器桶,所述相應參考計數器桶包括與所述相應實體線相關聯的相應參考計數器。
- 如申請專利範圍第14項所述的去重複模組,其中所述資料擷取請求更使所述去重複引擎基於所述實體線ID來確定所述資料儲存於所述雜湊表中。
- 如申請專利範圍第14項所述的去重複模組, 其中所述實體線ID是利用應用於所述資料的第一雜湊函數來產生,且 其中所述實體線ID包括指向所述雜湊表中的位置的位址。
- 如申請專利範圍第16項所述的去重複模組,其中所述實體線ID包括: 第一辨識符,表示所述資料是儲存於所述雜湊表中還是儲存於溢出記憶體區中; 第二辨識符,表示儲存有所述資料的列;以及 第三辨識符,表示儲存有所述資料的行。
- 如申請專利範圍第14項所述的去重複模組, 其中所述組合資料結構更包括簽名表,所述簽名表包括多個簽名桶,每一所述簽名桶包括多個簽名,且 其中所述相應雜湊圓柱體更包括所述多個簽名桶中的相應簽名桶,所述相應簽名桶包括與所述相應實體線相關聯的相應簽名。
- 如申請專利範圍第18項所述的去重複模組, 其中所述實體線ID是利用應用於所述資料的第一雜湊函數來產生, 其中所述實體線ID包括指向所述雜湊表中的位置的位址,且 其中所述多個簽名是利用較所述第一雜湊函數小的第二雜湊函數來產生。
- 如申請專利範圍第14項所述的去重複模組,其中每一所述參考計數器追蹤針對儲存於所述雜湊表中的對應資料進行的去重複次數。
- 一種去重複模組,包括: 主機介面; 傳送管理器,經由所述主機介面自主機系統接收資料傳送請求;以及 多個分區,每一所述分區包括: 去重複引擎,自所述傳送管理器接收分區資料請求; 多個記憶體控制器; 記憶體管理器,位於所述去重複引擎與所述記憶體控制器之間;以及 多個記憶體模組,每一所述記憶體模組耦合至所述記憶體控制器中的一者。
- 一種去重複模組,包括: 讀取快取; 記憶體,所述記憶體包括: 轉譯表;以及 雜湊表,包括多個雜湊桶,每一所述雜湊桶包括多個實體線,每一所述實體線均儲存資料;以及 參考計數器表,包括多個參考計數器桶,每一所述參考計數器桶包括多個參考計數器;以及 去重複引擎,辨識所述多個雜湊桶中的第一雜湊桶的V個虛擬桶,所述虛擬桶是所述多個雜湊桶中的位於所述第一雜湊桶附近的其他雜湊桶,所述虛擬桶將在所述第一雜湊桶已滿時儲存所述第一雜湊桶的資料中的部分資料,V是整數且基於所述第一雜湊桶的虛擬桶有多滿來動態地設定。
Applications Claiming Priority (14)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
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 |
US15/162,517 | 2016-05-23 | ||
US15/162,517 US10496543B2 (en) | 2016-03-31 | 2016-05-23 | Virtual bucket multiple hash tables for efficient memory in-line deduplication application |
US201662368775P | 2016-07-29 | 2016-07-29 | |
US62/368,775 | 2016-07-29 | ||
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 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201741883A true TW201741883A (zh) | 2017-12-01 |
TWI804466B TWI804466B (zh) | 2023-06-11 |
Family
ID=60404742
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW106116633A TWI804466B (zh) | 2016-05-20 | 2017-05-19 | 擷取記憶體中儲存的資料的方法與去重複模組 |
Country Status (4)
Country | Link |
---|---|
JP (1) | JP6920107B2 (zh) |
KR (1) | KR102190403B1 (zh) |
CN (1) | CN107402889B (zh) |
TW (1) | TWI804466B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI685743B (zh) * | 2018-07-09 | 2020-02-21 | 慧榮科技股份有限公司 | 資料存取控制裝置及方法以及電腦程式產品 |
US11023374B2 (en) | 2018-07-09 | 2021-06-01 | Silicon Motion, Inc. | Apparatus and method and computer program product for controlling data access |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9983821B2 (en) * | 2016-03-29 | 2018-05-29 | Samsung Electronics Co., Ltd. | Optimized hopscotch multiple hash tables for efficient memory in-line deduplication application |
US10705969B2 (en) * | 2018-01-19 | 2020-07-07 | Samsung Electronics Co., Ltd. | Dedupe DRAM cache |
KR102540964B1 (ko) * | 2018-02-12 | 2023-06-07 | 삼성전자주식회사 | 입출력 장치의 활용도 및 성능을 조절하는 메모리 컨트롤러, 애플리케이션 프로세서 및 메모리 컨트롤러의 동작 |
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 |
CN109299215B (zh) * | 2018-09-28 | 2024-06-18 | 平安科技(深圳)有限公司 | 倒排索引查询的资源分配方法、装置及存储介质、服务器 |
CN112181242B (zh) * | 2019-07-02 | 2021-11-02 | 北京百度网讯科技有限公司 | 页面展示方法及装置 |
CN114253472B (zh) * | 2021-11-29 | 2023-09-22 | 郑州云海信息技术有限公司 | 一种元数据管理方法、设备及存储介质 |
KR102467372B1 (ko) * | 2022-01-06 | 2022-11-14 | 삼성전자주식회사 | 스토리지 장치 및 이의 동작 방법 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5796939A (en) * | 1997-03-10 | 1998-08-18 | Digital Equipment Corporation | High frequency sampling of processor performance counters |
JP2003030040A (ja) * | 2001-07-12 | 2003-01-31 | Nec Commun Syst Ltd | オブジェクトデータベースシステムの複数ハッシュインデックスおよび非ユニークインデックス管理方式 |
US8407428B2 (en) * | 2010-05-20 | 2013-03-26 | Hicamp Systems, Inc. | Structured memory coprocessor |
JP5026213B2 (ja) * | 2007-09-28 | 2012-09-12 | 株式会社日立製作所 | ストレージ装置及びデータ重複排除方法 |
CN101655861B (zh) * | 2009-09-08 | 2011-06-01 | 中国科学院计算技术研究所 | 基于双计数布鲁姆过滤器的哈希方法和哈希装置 |
US8370593B2 (en) * | 2010-04-14 | 2013-02-05 | Hitachi, Ltd. | Method and apparatus to manage groups for deduplication |
WO2012056491A1 (en) * | 2010-10-26 | 2012-05-03 | Hitachi, Ltd. | Storage apparatus and data control method |
US9047304B2 (en) * | 2011-11-28 | 2015-06-02 | International Business Machines Corporation | Optimization of fingerprint-based deduplication |
US8688661B2 (en) * | 2012-06-15 | 2014-04-01 | International Business Machines Corporation | Transactional processing |
US9069782B2 (en) * | 2012-10-01 | 2015-06-30 | The Research Foundation For The State University Of New York | System and method for security and privacy aware virtual machine checkpointing |
US9792063B2 (en) * | 2014-01-15 | 2017-10-17 | Intel Corporation | Deduplication-based data security |
US9983821B2 (en) * | 2016-03-29 | 2018-05-29 | Samsung Electronics Co., Ltd. | Optimized hopscotch multiple hash tables for efficient memory in-line deduplication application |
US10496543B2 (en) * | 2016-03-31 | 2019-12-03 | Samsung Electronics Co., Ltd. | Virtual bucket multiple hash tables for efficient memory in-line deduplication application |
-
2017
- 2017-05-19 TW TW106116633A patent/TWI804466B/zh active
- 2017-05-19 JP JP2017099688A patent/JP6920107B2/ja active Active
- 2017-05-19 CN CN201710358270.3A patent/CN107402889B/zh active Active
- 2017-05-19 KR KR1020170062408A patent/KR102190403B1/ko active IP Right Grant
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI685743B (zh) * | 2018-07-09 | 2020-02-21 | 慧榮科技股份有限公司 | 資料存取控制裝置及方法以及電腦程式產品 |
US11023374B2 (en) | 2018-07-09 | 2021-06-01 | Silicon Motion, Inc. | Apparatus and method and computer program product for controlling data access |
US11308171B2 (en) | 2018-07-09 | 2022-04-19 | Silicon Motion, Inc. | Apparatus and method for searching linked lists |
Also Published As
Publication number | Publication date |
---|---|
TWI804466B (zh) | 2023-06-11 |
CN107402889A (zh) | 2017-11-28 |
KR102190403B1 (ko) | 2020-12-11 |
CN107402889B (zh) | 2023-07-11 |
JP6920107B2 (ja) | 2021-08-18 |
JP2017208096A (ja) | 2017-11-24 |
KR20170131274A (ko) | 2017-11-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI804466B (zh) | 擷取記憶體中儲存的資料的方法與去重複模組 | |
US10318434B2 (en) | Optimized hopscotch multiple hash tables for efficient memory in-line deduplication application | |
US10678704B2 (en) | Method and apparatus for enabling larger memory capacity than physical memory size | |
US10936503B2 (en) | Device access point mobility in a scale out storage system | |
TWI683217B (zh) | 使用去重複dram系統演算法架構的去重複記憶體模組及其方法 | |
US10176117B2 (en) | Efficient metadata in a storage system | |
US10496543B2 (en) | Virtual bucket multiple hash tables for efficient memory in-line deduplication application | |
US10528284B2 (en) | Method and apparatus for enabling larger memory capacity than physical memory size | |
US11200159B2 (en) | System and method for facilitating efficient utilization of NAND flash memory | |
US20150312366A1 (en) | Unified caching of storage blocks and memory pages in a compute-node cluster | |
US10795596B1 (en) | Delayed deduplication using precalculated hashes | |
Xie et al. | An adaptive separation-aware FTL for improving the efficiency of garbage collection in SSDs |