CN107402889B - 检索数据方法、存储数据方法和重复数据删除模块 - Google Patents
检索数据方法、存储数据方法和重复数据删除模块 Download PDFInfo
- Publication number
- CN107402889B CN107402889B CN201710358270.3A CN201710358270A CN107402889B CN 107402889 B CN107402889 B CN 107402889B CN 201710358270 A CN201710358270 A CN 201710358270A CN 107402889 B CN107402889 B CN 107402889B
- Authority
- CN
- China
- Prior art keywords
- hash
- data
- physical
- bucket
- physical row
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
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
- 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 (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
提供一种检索数据方法、存储数据方法和重复数据删除模块。所述方法包括:识别数据的逻辑地址;根据逻辑地址,通过查找转换表中的逻辑地址的至少一部分,识别数据的物理行ID;对各个物理行进行定位,所述各个物理行对应于物理行ID;从所述各个物理行检索数据,检索的步骤包括将各个哈希缸复制到读取缓存,所述各个哈希缸包括:各个哈希桶,所述各个哈希桶包括所述各个物理行;各个参考计数器桶,所述各个参考计数器桶包括与所述各个物理行相关联的各个参考计数器。
Description
本申请是于2016年5月20日提交的第15/161,136号美国非临时专利申请的部分继续申请,其要求于2016年3月29日提交的第62/314,918号美国临时专利申请的优先权和权益,本申请还是于2016年5月23日提交的第15/162,517号美国非临时专利申请的部分继续申请,其要求于2016年3月31日提交的第62/316,397号美国临时专利申请的优先权和权益,本申请还要求于2017年2月1日提交的第62/453,461号美国临时专利申请、于2016年7月29日提交的第62/368,775号美国临时专利申请、于2017年1月27日提交的第62/451,157号美国临时专利申请、于2016年3月31日提交的第62/316,397号美国临时专利申请和于2017年1月25日提交的第62/450,502号美国临时专利申请的优先权和权益,这些申请的全部内容通过引用包含于此。
技术领域
根据本发明的实施例的一个或多个方面涉及系统存储器,更具体地讲,涉及高容量低延迟存储器。
背景技术
典型的现代计算机应用(诸如,数据库、虚拟桌面架构和数据分析学)需要大的主存储器。随着计算机系统扩展到执行更复杂的数据和存储密集型应用,针对更大存储器容量的需要在成比例地增加。
通常,随机存取存储器(RAM)受限于RAM的物理设计所能存储的数据量。例如,8GB的DRAM通常可支持最大8GB的数据。此外,未来的数据中心应用将使用高容量低延迟存储器。
以上在背景技术部分公开的信息仅用于提高对发明背景的理解,因此可包含没有构成现有技术的信息。
发明内容
本公开的实施例的多个方面指向用于使随机存取存储器(RAM)内大于RAM的物理存储器尺寸的存储器容量成为可能的方法和相关联的结构。根据本发明的实施例,重复数据删除(deduplication)算法用于实现数据存储减少和上下文寻址(contextaddressing)。根据本发明的实施例,用户数据被存储在由用户数据的哈希值索引的哈希表中。
根据本发明的实施例,提供一种对在与重复数据删除模块相关联的存储器中存储的数据进行检索的方法,重复数据删除模块包括读取缓存,存储器包括转换表和组合数据结构,组合数据结构包括哈希表和参考计数器表,哈希表和参考计数器表均被存储在组合数据结构的多个哈希缸中,哈希表包括多个哈希桶,每个哈希桶包括多个物理行,每个物理行存储数据,参考计数器表包括多个参考计数器桶,每个参考计数器桶包括多个参考计数器。所述方法包括:识别数据的逻辑地址;根据逻辑地址,通过在转换表中查找逻辑地址的至少一部分,识别数据的物理行ID(PLID);对所述多个物理行中的各个物理行进行定位,所述各个物理行对应于PLID;从所述各个物理行检索数据,检索的步骤包括将所述多个哈希缸中的各个哈希缸复制到读取缓存,所述各个哈希缸包括:所述多个哈希桶中的各个哈希桶,所述各个哈希桶包括所述各个物理行;所述多个参考计数器桶中的各个参考计数器桶,所述各个参考计数器桶包括与所述各个物理行相关联的各个参考计数器。
所述方法还可包括基于PLID确定数据被存储在哈希表中。
PLID可利用应用于数据的第一哈希函数来产生。PLID可包括指向哈希表中的位置的地址。
PLID可包括:第一识别符,指示数据是被存储在哈希表中还是被存储在溢出存储器区域中;第二识别符,指示数据被存储的行;第三识别符,指示数据被存储的列。
组合数据结构还可包括:签名表,包括多个签名桶,每个签名桶包括多个签名。所述各个哈希缸还可包括:所述多个签名桶中的各个签名桶,所述各个签名桶包括与所述各个物理行相关联的各个签名。
PLID可利用应用于数据的第一哈希函数来产生。PLID可包括指向哈希表中的位置的地址。所述多个签名可利用比第一哈希函数小的第二哈希函数来产生。
每个参考计数器可跟踪在哈希表中存储的相应的数据的重复数据删除的次数。
根据本发明的实施例,提供一种将数据存储在与重复数据删除引擎相关联的存储器中的方法。所述方法包括:识别将被存储的数据;利用第一哈希函数确定与数据应被存储在所述存储器中的哈希表中的位置相应的第一哈希值;将数据存储在哈希表中的与第一哈希值相应的位置;利用比第一哈希函数小的第二哈希函数确定也与数据应被存储的位置相应的第二哈希值;将第一哈希值存储在所述存储器中的转换表中;将第二哈希值存储在所述存储器中的签名表中。
所述方法还可包括:在参考计数器表中增加与数据对应的参考计数器。
所述存储器可包括:哈希表,存储多个数据;转换表,存储利用第一哈希函数产生的多个物理行ID(PLID);签名表,存储利用第二哈希函数产生的多个签名;参考计数器表,存储多个参考计数器,每个参考计数器跟踪在哈希表中存储的相应的数据的重复数据删除的次数;溢出存储器区域。
所述多个PLID中的每个PLID可包括:第一识别符,指示数据是被存储在哈希表中还是被存储在溢出存储器区域中;第二识别符,指示数据被存储的行;第三识别符,指示数据被存储的列。
哈希表、签名表和参考计数器表可被集成为组合数据结构。组合数据结构包括多个哈希缸,每个哈希缸包括:哈希桶,包括多个物理行;签名桶,包括与所述多个物理行相应的各个签名;参考计数器桶,包括与所述多个物理行相应的各个参考计数器。
将数据存储在哈希表中的与第一哈希值相应的位置的步骤可包括:将数据存储在与第一哈希值相应的哈希桶中。将第二哈希值存储在签名表中的步骤可包括:将第二哈希值存储在与数据被存储的哈希桶相应的签名桶中。
根据本发明的实施例,提供一种重复数据删除模块,包括:读取缓存;重复数据删除引擎,用于从主机系统接收数据检索请求;存储器,存储器包括:转换表;组合数据结构,包括:哈希表,包括多个哈希桶,每个哈希桶包括多个物理行,每个物理行存储数据;参考计数器表,包括多个参考计数器桶,每个参考计数器桶包括多个参考计数器;多个哈希缸,每个哈希缸包括所述多个哈希桶之一和所述多个参考计数器桶之一。数据检索请求导致重复数据删除引擎执行以下处理:识别数据的逻辑地址;根据逻辑地址,通过在转换表中查找逻辑地址的至少一部分识别数据的物理行ID(PLID);对所述多个物理行中的各个物理行进行定位,所述各个物理行对应于PLID;从所述各个物理行检索数据,所述检索数据的处理包括:将所述多个哈希缸中的各个哈希缸复制到读取缓存,所述各个哈希缸包括:所述多个哈希桶中的各个哈希桶,所述各个哈希桶包括所述各个物理行;所述多个参考计数器桶中的各个参考计数器桶,所述各个参考计数器桶包括与所述各个物理行相关联的各个参考计数器。
数据检索请求还可导致重复数据删除引擎基于PLID确定数据被存储在哈希表中。
PLID可利用应用于数据的第一哈希函数来产生。PLID可包括指向哈希表中的位置的地址。
PLID可包括:第一识别符,指示数据是被存储在哈希表中还是被存储在溢出存储器区域中;第二识别符,指示数据被存储的行;第三识别符,指示数据被存储的列。
组合数据结构还可包括:签名表,包括多个签名桶,每个签名桶包括多个签名。所述各个哈希缸还可包括:所述多个签名桶中的各个签名桶,所述各个签名桶包括与所述各个物理行相关联的各个签名。
PLID可利用应用于数据的第一哈希函数来产生。PLID可包括指向哈希表中的位置的地址。所述多个签名可利用比第一哈希函数小的第二哈希函数来产生。
每个参考计数器可跟踪在哈希表中存储的相应的数据的重复数据删除的次数。
根据本发明的实施例,提供一种重复数据删除模块,包括:主机接口;传输管理器,用于经由主机接口从主机系统接收数据传输请求;多个分区,每个分区包括:重复数据删除引擎,用于从传输管理器接收分区数据请求;多个存储器控制器;存储器管理器,设置在重复数据删除引擎与存储器控制器之间;多个存储器模块,每个存储器模块连接到所述多个存储器控制器之一。
根据本发明的实施例,提供一种重复数据删除模块,包括:读取缓存;存储器,存储器包括:转换表;哈希表,包括多个哈希桶,每个哈希桶包括多个物理行,每个物理行存储数据;参考计数器表,包括多个参考计数器桶,每个参考计数器桶包括多个参考计数器;重复数据删除引擎,用于识别所述多个哈希桶中的第一哈希桶的V个虚拟桶,虚拟桶是所述多个哈希桶中的与第一哈希桶邻近的其他哈希桶,虚拟桶用于当第一哈希桶充满时存储一些第一哈希桶的数据,V是基于第一哈希桶的虚拟桶的充满程度而动态设置的整数。
附图说明
参照说明书、权利要求和附图,本发明的这些和/或其他特征和方面将被理解和明白,其中:
图1是根据本发明的实施例的重复数据删除模块的框图;
图2是根据本发明的另一实施例的重复数据删除模块的框图;
图3是根据本发明的实施例的重复数据删除引擎的逻辑视图的框图;
图4是根据本发明的实施例的包括一级转换表的重复数据删除引擎的逻辑视图的框图;
图5是根据本发明的实施例的包括二级转换表的重复数据删除引擎的逻辑视图的框图;
图6是根据本发明的实施例的包括具有动态L2映射表和溢出存储器区域的二级转换表的重复数据删除引擎的逻辑视图的框图;
图7是根据本发明的实施例的哈希缸(hash cylinder)的逻辑视图的框图;
图8是根据本发明的实施例的组合数据结构的逻辑视图的框图;
图9是根据本发明的实施例的与虚拟桶和相应的参考计数器桶相关联的哈希桶(hash bucket)的逻辑视图的框图;
图10是示出根据本发明的实施例的对在随机存取存储器(RAM)中存储的数据进行检索的方法的流程图;
图11是示出根据本发明的实施例的将数据存储在RAM中的方法的流程图。
具体实施方式
本公开的实施例指向用于使存储器(例如,随机存取存储器(RAM))内大于RAM的物理存储器尺寸的存储器容量成为可能的方法和相关联的结构。根据本发明的实施例,重复数据删除(deduplication)算法用于实现数据存储减少和上下文寻址(contextaddressing)。根据本发明的实施例,用户数据被存储在由用户的哈希值索引的哈希表中。
在动态随机存取存储器(DRAM)技术积极地扩展到超过20nm工艺技术,以应对针对存储器容量的不断增加的需求的同时,诸如重复数据删除的技术可被应用,以将系统存储器的虚拟存储器容量增加2-3倍或更多倍的系统存储器的物理存储器容量。此外,本发明的实施例可利用其他类型的存储器(例如,闪存)。
使用辅助压缩方法,本发明的实施例可提供先进的重复数据删除的存储器和数据结构,以通过充分利用所有的存储器资源来一贯实现高重复数据删除率。
具有高容量和低延迟的存储器装置对于数据中心应用是高度需求的。这样的存储器装置可使用重复数据删除方案和数据压缩方案以提供比它们的物理存储器尺寸更大的存储器容量。重复数据删除的存储器装置可通过减少重复的用户数据和充分利用可用的存储器资源来一贯实现高重复数据删除率。此外,由重复数据删除的存储器装置使用的重复数据删除方案可实现到重复数据删除的数据的有效寻址。
数据重复删除(或者,数据重复移除)表示存储器中的冗余数据的减少,从而减少存储器装置的容量花费。在数据重复删除中,数据对象/数据项(例如,数据文件)被划分为一个或多个数据行/数据段/数据块。通过将构成相同数据的多个数据块与单个存储的数据块进行关联,重复的数据块拷贝可通过计算机存储器减少或移除,从而在存储器装置中减少冗余的数据拷贝的总量。冗余的数据拷贝的减少可改善读取延迟和存储器带宽,并可潜在地导致节能。
因此,如果重复的数据拷贝可减少到单个数据拷贝,则当使用相同的物理资源量时,存储器装置的总的可用容量增加。因为作为结果的存储器装置的节省允许数据重写计数的减少,并且因为针对重复的在存储器中已被存储的数据块的写入请求可被丢弃,所以实现数据重复删除的存储器装置的寿命可通过有效地增加写入耐久性而延长。
现有技术的数据重复删除的方法可使用存储器中的重复数据删除技术,借此在以中央处理器(CPU)为中心的方法中,重复数据删除引擎与CPU或存储器控制器(MC)进行集成。这样的方法通常实现与存储器控制器一起操作的重复数据删除缓存(DDC),以根据存储器控制器的控制来实现CPU处理器对复制的意识,并试图实现重复数据删除的存储器操作(例如,内容查找表、参考计数更新等)。重复数据删除的方法还实现直接转换缓冲器(DTB),其中,DTB是用于缓冲转换行以通过从关键路径去除转换提取(fetch)来提高数据读取的缓存,并且DTB可相似于旁视缓冲器。
重复数据删除已经最普遍用于硬盘驱动器。然而,存在在易失性存储器(诸如,动态随机存取存储器(DRAM))区域中提供精细粒度的重复数据删除的兴趣。
以下结合附图阐述的详细描述意在作为根据本发明提供的使RAM(或者,其他存储器)内大于RAM(或者,其他存储器)的物理存储器尺寸的存储器容量成为可能的方法和相关联的结构的示例性实施例的描述,并不意在表示本发明可被构建或利用的仅有的形式。该描述结合所示的实施例阐述本发明的特征。然而,将理解,相同的或等价的功能和结构可通过也意在被包含在本发明的精神和范围内的不同的实施例实现。如这里的其他地方所示,相同的元件编号意在指示相同的元件或特征。
图1是根据本发明的实施例的重复数据删除模块的框图。参照图1,根据本发明的实施例的重复数据删除模块100包括:桥130、存储器控制器140、主机接口(主机I/F)160、读取缓存170、一个或多个存储器模块180和重复数据删除引擎200。
桥130可提供用于允许重复数据删除引擎200和读取缓存170与存储器控制器140进行通信的接口。存储器控制器140可提供用于桥130和存储器模块180进行通信的接口。读取缓存170可以是存储器模块180的一部分。
在一些实施例中,桥130可不存在。在这种情况下,存储器控制器140可直接与重复数据删除引擎200和读取缓存170进行通信。
重复数据删除引擎200经由主机I/F 160与主机系统进行通信,以存储或访问存储器模块180中的数据。重复数据删除引擎200还可经由主机I/F 160与主机系统的其他组件进行通信。
存储器模块180可以是用于连接DRAM的DIMM插槽,或者可以是闪存、用于连接其他类型存储器的插槽等。
图2是根据本发明的另一实施例的重复数据删除模块的框图。参照图2,重复数据删除模块150可包括:一个或多个分区250(例如,分区0 250-0,分区1 250-1等)、传输管理器230和主机接口(I/F)162。每个分区250可包括:重复数据删除引擎202、存储器管理器210、一个或多个存储器控制器(例如,存储器控制器MC0 142、存储器控制器MC1 144等)和一个或多个存储器模块(例如,DIMM/FLASH0 182、DIMM/FLASH1 184等)。
每个重复数据删除引擎202可直接与传输管理器230进行通信,或者经由主机I/F162与主机系统进行通信。传输管理器230可经由主机I/F 162与主机系统进行通信。
传输管理器230可经由主机I/F 162从主机系统接收数据传输请求。传输管理器230还可管理去往和来自重复数据删除模块的一个或多个分区250的数据传输。在一些实施例中,传输管理器230可确定哪个分区250用于存储将被存储(例如,存储在RAM中)的数据。在其他实施例中,传输管理器230从主机系统接收关于数据应被存储在哪个分区250上的指令。在一些实施例中,传输管理器230可对从主机系统接收到的数据进行拆分,并将数据发送到两个或多个分区。
重复数据删除模块150可经由主机I/F 162与主机系统的组件通信。
重复数据删除引擎202可从传输管理器230接收针对各个分区250的分区数据请求。重复数据删除引擎202还可控制对存储器模块中的数据的访问和存储。存储器管理器210可确定数据被存储在或数据应被存储在一个或多个存储器模块中的哪个存储器模块上。一个或多个存储器控制器可控制在它们各自的存储器模块上的数据的存储和访问。
在一些实施例中,重复数据删除引擎202和存储器管理器210可被实现为能够执行存储器管理器210和重复数据删除引擎202两者功能的单个存储器管理器。
一个或多个存储器控制器、存储器管理器210和重复数据删除引擎202均可使用任何合适的硬件(例如,专用集成电路)、固件(例如,DSP或FPGA)、软件或者软件、固件和硬件的合适的组合来实现。此外,在下文中可更详细地描述重复数据删除引擎。
根据一些实施例,当存储器具有大的容量时,分区可用于减少转换表尺寸。
图3是根据本发明的实施例的重复数据删除引擎的逻辑视图的框图。参照图3,重复数据删除引擎200可包括多个表。重复数据删除引擎200可包括:哈希表220、转换表240、签名和参考计数器表260以及溢出存储器区域280。
哈希表220可包括多个物理行(PL)。每个物理行可包括数据(例如,用户数据)。哈希表220内的数据是经过重复数据删除的(即,重复的数据已经被合并到单个位置以减少存储空间使用)。
转换表240包括存储在其中的多个物理行ID。哈希表的每个物理行具有在转换表240中存储的相关联的物理行ID(PLID)。在转换表240中存储的PLID是逻辑地址到物理地址的转换。例如,当重复数据删除引擎200需要定位与特定逻辑地址相关联的数据时,重复数据删除引擎200可使用转换表240查询存储在逻辑地址的数据,并接收与哈希表220的数据被存储的物理行对应的数据的PLID。重复数据删除引擎200然后可访问在哈希表220中的相应的物理行存储的数据。
PLID可使用第一哈希函数来生成。例如,当数据需要被存储在哈希表内时,第一哈希函数在数据上被运行,以确定与数据应被存储到的物理行对应的第一哈希值。第一哈希值被保存为数据的PLID。
每个PLID指示目标数据行的物理位置。因为数据行可以在哈希表220中或者在溢出存储器区域280中,所以PLID可以是哈希表220或溢出存储器区域280中的位置。
哈希表220可被认为是具有行列结构的表。在这种情况下,PLID由区域位、行位和列位组成(例如,见图4及其描述)。第一哈希函数可产生行位,其中,行位是用于查找将数据存储在其中的可用物理行的起始点。当可用物理行被找到时,其他位可被确定。
如果在以上步骤中没有找到哈希表220中的可用物理行,则数据可被写入到溢出存储器区域280。在这种情况下,PLID将是溢出存储器区域条目的物理位置。
使用第二哈希函数计算的数据的第二哈希值(例如,签名)被存储在签名表中。第二哈希函数可以小于第一哈希函数。第一哈希函数和第二哈希函数可以是任何合适的哈希函数,并且它们可以是不同的哈希函数。
签名可用于两个数据行之间的快速比较。当新数据行将被写入到哈希表220时,可以进行检验以判定在哈希表中是否已存在相同的数据行。执行这项检验可避免存储相同的数据多次。
如果不使用签名进行检验,则对存储器的特定区域(整个桶或整个虚拟桶)中的所有数据进行读取以检测重复。当使用签名进行检验时,进从存储器读取特定区域的数据的签名,这可节省带宽。
当不存在匹配的签名时,不存在与新数据行匹配的数据行。另外,当找到匹配的签名时,从存储器读取具有相匹配的签名的数据行,以进行进一步比较,这是因为签名比较可能是误判。
哈希表中的每个数据行具有签名表中的相应的签名,并且每个数据行具有参考计数器表中的相应的参考计数器。
参考计数器表跟踪哈希表220中的每个物理行的重复数据删除的次数(例如,数据已经被重复删除的次数)。当重复数据删除后的数据的实例(instance)被添加到哈希表时,参考计数器表中的相应的参考计数器可增加,而不是添加与之前存储的用户数据相同的新用户数据,当从哈希表删除重复数据删除后的数据的实例时,参考计数器表中的相应的参考计数器可减少一。
此外,重复数据删除后的存储器(也称为哈希表)由物理行(PL)组成,其中,物理行是具有固定宽度的位的用户数据C。默认的物理行长度可以是64字节,但本发明不限于此。PL长度可配置为其他尺寸,例如,PL尺寸可大于或小于64字节。例如,PL尺寸可以是32字节。
较大的PL尺寸可降低转换表的尺寸,但还会降低重复数据删除后的数据的量(即,由于需要匹配更大的为模式而减少重复数据删除的次数)。较小的PL尺寸可增加转换表的尺寸,但还会增加重复数据删除后的数据的量(即,增加重复数据删除的次数)。
转换表存储被称为物理行ID(PLID)的逻辑地址到物理地址的转换。PLID通过哈希函数h1(C)来产生。此外,针对每个物理行,存在存储在签名表中的与每个物理行相关联的签名。签名是用户数据的更小的哈希结果,签名通过哈希函数h2(C)来产生。参考计数器也与物理行相关联,参考计数器被存储在参考计数器表中。参考计数器对用户数据匹配PL内容的次数(也称为重复数据删除率)进行计数。
哈希表、签名表和参考计数器可都具有相同的数据结构,但具有不同的粒度(granularity)。
虽然多个表被示出为重复数据删除模块的一部分,但本发明不限于此。根据本发明的一些实施例,所述多个表可被存储在位于重复数据删除模块内的存储器(例如,RAM)中,根据其他实施例,所述多个表被存储在位于重复数据删除模块外部的存储器(例如,RAM)中,并通过重复数据删除模块以在此描述的方式被控制。
本发明的以上特征的额外描述可在第15/473,311号美国专利申请中被找到,该申请的全部内容通过引用包含于此。
图4是根据本发明的实施例的包括一级转换表的重复数据删除引擎的逻辑视图的框图。转换表是可由于它的尺寸和使用它花费的时间而具有对重复数据删除率、系统容量和/或系统延迟的影响的主要元数据表。参照图4,逻辑地址310可被计算机系统用作在系统存储器(例如,DRAM)中存储的数据的位置。
逻辑地址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)。在一些实施例中,当支持1太字节(1TB)虚拟容量时,x是40(240是1TB)。
转换表索引312与转换表240内的物理地址320对应。物理地址320可包括区域位RGN 322、行索引R_INDX 326和列索引COL_INDX 328。区域位RGN 322可以是单个位,并可指示数据被存储在哈希表220中还是被存储在溢出存储器区域280中。行索引R_INDX 326可以是与哈希表220中的M行相应的m位(0至M-1或0至2m-1)。列索引COL_INDX 328可以是n位,并与哈希表220中的N列对应(0至N-1或0至2n-1)。M、N、m和n是整数。根据一些实施例,当哈希表是128GB(237)时,g=6,m=26,n=5,M=226,以及N=25。
此外,溢出存储器区域280存储未被放置在哈希表中的数据。
图5是根据本发明的实施例的包括二级转换表的重复数据删除引擎的逻辑视图的框图。转换表是可具有对重复数据删除率、系统容量和/或系统延迟的影响的主要元数据表。在图5的重复数据删除引擎中,转换表包括两级:页索引表242和第二级(L2)映射表244。
逻辑地址310’可被计算机系统用作在存储器(例如,RAM)中存储的数据的位置。逻辑地址310’可以是x位长,其中,x是整数。逻辑地址310’可包括g位长的粒度,其中,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)。在一些实施例中,当支持1太字节(1TB)的虚拟容量时,x是40(240是1TB)。
页索引316与页索引表242内的页对应。页索引表242内的页与L2映射表244内的条目0的位置对应。页条目318指示条目0之后的哪个条目存储与逻辑地址310’相应的存储的数据的物理地址320’。
换言之,页索引316与一组L2映射条目和指定在所述一组L2映射条目中的哪个条目的页条目318相关联。页索引316通向所述一组L2映射条目中的第一条目,页条目318示出所述一组L2映射条目的哪个特定条目包含物理地址320’。页索引表242中的每个页可包括区域位RGN。区域位RGN可以是单个位,并可指示数据被存储在哈希表220’中还是被存储在溢出存储器区域280’中。
物理地址320’可包括行索引R_INDX 326’和列索引COL_INDX 328’。行索引R_INDX326’可以是与哈希表220’中的M行相应的m位(0至M-1或0至2m-1)。列索引COL_INDX 328’可以是n位,并与哈希表220’中的N列对应(0至N-1或0至2n-1)。M、N、m和n是整数。根据一些实施例,当哈希表是128GB(237)时,g=6,m=26,n=5,M=226,以及N=25。
此外,溢出存储器区域280’存储未被放置在哈希表中的数据。
图6是根据本发明的实施例的包括具有动态L2映射表和溢出存储器区域的二级转换表的重复数据删除引擎的逻辑视图的框图。参照图6,二级转换表可针对溢出存储器区域安排额外空间。
根据一些实施例,签名和参考计数器表260’以及页索引表242’的尺寸被固定,但L2映射表244’和溢出存储器区域280”的尺寸是动态的。
当L2映射表244’和溢出存储器区域280”增加尺寸时,它们朝向彼此扩展。以这种方式,存储空间可通过允许L2映射表244’或溢出存储器区域280”扩展到未使用的空间而被有效使用。
图7是根据本发明的实施例的哈希缸(hash cylinder)的逻辑视图的框图。图8是根据本发明的实施例的组合数据结构的逻辑视图的框图。参照图7和图8,签名表、参考计数器表和哈希表被划分并布置在组合数据结构600(例如,组合结构600或组合表600)的哈希缸500(例如,哈希缸500-i)内的桶(例如,哈希桶i)中。每个哈希缸500包括哈希表的哈希桶560(例如,哈希桶560-i)、签名表的签名桶520(例如,签名桶520-i)和参考计数器表的参考计数器桶540(例如,参考计数器桶540-i)。
哈希桶560包括多个进入条目或物理行(例如,条目0至条目N-1)。
签名桶520包括与在同一哈希缸500的哈希桶560内的物理行中存储的数据对应的多个签名。
参考计数器桶540包括与在同一哈希缸500的哈希桶560内的物理行中存储的数据已被重复数据删除的次数对应的多个参考计数器。
换言之,哈希表被划分为多个哈希桶560,每个哈希桶560包括多个条目。签名表被划分为多个签名桶520,每个签名桶包括多个签名。参考计数器表被划分为多个参考计数器桶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路(例如,路0至路N-1)。
与现有技术的哈希表不同,本实施例的哈希表均包括多个虚拟哈希桶或虚拟桶,虚拟桶由多个物理哈希桶或物理桶组成。在下文中。术语“物理桶”将表示之前讨论的哈希桶,并将用于将之前讨论的哈希桶与虚拟桶区分开来。
每个虚拟桶可包括哈希表的一些物理桶。然而,应注意,不同的虚拟桶可共享一个或多个物理桶。如以下将描述的,通过使用根据本发明的实施例的虚拟桶,额外的维度被添加到哈希表。因此,可提供布置和放置数据的更大的灵活性,从而增加效率并增加重复数据删除DRAM系统的压缩比。
因为在哈希桶之一中存储的数据块可在相应的虚拟桶内被移动(或者,被移动到不同的物理桶),从而释放由其他虚拟桶共享的其他物理桶,所以本实施例使用虚拟桶以增加另一级的数据放置的灵活性。通过释放哈希表内的空间,重复数据删除可通过去除过时的/重复的数据来实现。也就是,通过使用根据本发明的实施例的虚拟桶,不存在通过使用哈希函数将数据行哈希化为受限的相应位置而造成的严格的限制,并且数据能够被放置在邻近/“附近位置”的物理桶中,其中,邻近/“附近位置”的物理桶表示处于包括最初意图的(而不是占有的)物理哈希桶的同一虚拟桶内的物理桶。
作为示例,内容(例如,数据行)将被放置到一个物理桶中。如果数据行将被放置到第一物理桶中,与需要将数据行放置在物理桶中不同,本实施例考虑比单个物理桶大并包括该物理桶而且还包括其他物理桶的虚拟桶。也就是,虚拟桶包含在哈希表内对齐的连续的(或者,相邻的)物理桶的集合。
因此,虚拟桶允许数据块在哈希表内移动,以释放用于未来的写入操作的空间。
针对虚拟桶的额外描述,请参考于2016年3月23日提交的第15/162,512号和于2016年3月23日提交的第15/162,517号美国专利申请,该申请的全部内容通过引用包含于此。
此外,虚拟桶可具有动态高度或尺寸。具有动态虚拟桶高度(VBH)可在有限的延迟影响的情况下改善存储器使用。
与物理桶相关联的虚拟桶的数量通过虚拟桶(VB)高度索引来指示。虚拟桶高度信息被存储在与哈希桶560’相关联的参考计数器桶540’的最后的参考计数器中。参考计数器的位的一部分被用作VB高度索引(例如,VBH[1:0])。
使用哈希桶i作为示例,如果VB高度是V,则哈希桶i的虚拟桶可表示哈希桶i+1至哈希桶i+V。当哈希桶i充满时,重复数据删除引擎将用户数据放置在虚拟桶中。
标记(一个参考计数器(RC)位的一部分,例如,哈希桶M的最后的RC计数器)指示有多少虚拟桶正被当前的哈希桶i使用。以这种方式,因为我们不需要搜索比需要的更多的虚拟桶,所以可减少延迟。现有技术的虚拟桶使用固定的VB高度。使用固定的虚拟桶高度,无论有多少虚拟桶实际被哈希桶i使用,搜索逻辑都将搜索所有的虚拟桶,这可能造成增加延迟。
虚拟桶不需要额外的存储器空间。它们使用在邻近的哈希桶中的未使用的条目。例如,针对哈希桶i+1,它的虚拟桶可表示哈希桶i+2至哈希桶i+V’+1。
此外,当哈希桶i的虚拟桶(例如,哈希桶i+1至哈希桶i+V)充满时,根据本发明的实施例的重复数据删除引擎增加虚拟桶的高度V,以在更邻近的哈希桶中利用可用空间。因为现有技术的虚拟桶高度是预设的(而不是动态的),所以它们不能增加。如此,当哈希桶i的虚拟桶(例如,哈希桶i+1至哈希桶i+V)充满时,现有技术的重复数据删除引擎不能增加高度V。
此外,通过动态地调节虚拟桶的高度,当重复数据删除引擎正在确定数据是否已存在于哈希表内时(为了避免重复),重复数据删除引擎将仅需要检查正被使用的虚拟桶,而不是预设数量的虚拟桶。这可减少访问时间并增加整个计算速度。
图10是示出根据本发明的实施例的对在RAM中存储的数据进行检索的方法的流程图。虽然图10示出使用RAM,但本发明不限于此,并且任何其他合适的存储器类型可用于该方法。
参照图10,计算机系统的CPU可对在RAM中存储的数据进行请求。CPU可提供RAM内的数据位置的地址。本发明不限于此,例如,其他组件可向RAM请求数据并提供逻辑地址。
根据本发明的实施例的对在RAM内存储的数据进行检索的方法包括对在RAM中存储的数据的逻辑地址进行识别(1000)。逻辑地址可与转换表中的位置对应。
该方法还包括根据逻辑地址,通过查找转换表中的逻辑地址,识别数据的物理行地址ID(PLID)(1010)。
该方法还包括基于PLID来确定数据是被存储在RAM的哈希表中还是被存储在RAM的溢出存储器区域中(1020)。
当数据被存储在哈希表中时,该方法还包括对与PLID相应的哈希表的物理行进行定位(1030),并从哈希表的物理行检索数据(1040)。检索数据的步骤可包括从签名表和参考计数器表检索相应的数据。
当数据被存储在溢出存储器区域中时,该方法还包括对与PLID相应的溢出存储器区域的物理行进行定位(1050),并从溢出存储器区域的物理行检索数据(1060)。
PLID可使用应用于数据的第一哈希函数来产生。PLID可包括指向RAM的哈希表中的位置或RAM的溢出存储器区域中的位置的地址。
PLID可包括:指示数据是存储在哈希表中还是存储在溢出存储器区域中的第一识别符(例如,见图4中的RGN);指示数据所存储的行的第二识别符(例如,见图4中的R_INDX);指示数据所存储的列的第三识别符(例如,见图4中的COL_INDX)。
该方法还可包括从签名表检索与数据相关联的签名。
RAM可包括:存储多个数据的哈希表;存储使用第一哈希函数产生的多个PLID的转换表;存储使用比第一哈希函数小的第二哈希函数产生的多个签名的签名表;存储多个参考计数器的参考计数器表,其中,每个参考计数器跟踪针对在哈希表中存储的相应的数据的重复数据删除的次数;溢出存储器区域。
哈希表、签名表和参考计数器表可被集成为组合数据结构。组合数据结构可包括多个哈希缸,每个哈希缸可包括:包括多个物理行的哈希桶;包括与所述多个物理行相应的各个签名的签名桶;包括与所述多个物理行相应的各个参考计数器的参考计数器桶。
从物理行或溢出存储器区域检索数据的步骤可包括将包括物理行、相应的签名和相应的参考计数器的哈希缸复制到读取缓存。
图11是示出根据本发明的实施例的将数据存储在RAM中的方法的流程图。虽然图11示出使用RAM,但本发明不限于此,并且任何其他合适的存储器类型在这里可用于该方法。
参照图11,计算机系统的CPU可对在RAM中存储的数据进行请求。CPU可提供将在RAM内存储的数据。本发明不限于此,例如,其他组件可对在RAM中存储的数据进行请求,并提供数据。
根据本发明的实施例的将数据存储在RAM内的方法包括对将在RAM中存储的数据进行识别(1100)。
该方法还包括使用第一哈希函数确定与数据应被存储在RAM的哈希表中的位置相应的第一哈希值(1110)。
该方法还包括将数据存储在哈希表中的与第一哈希值相应的位置(1120)。
该方法还包括利用第二哈希函数确定也与数据应被存储的位置相应的第二哈希值(1130)。第二哈希函数可小于第一哈希函数。
该方法还包括将第一哈希值存储在转换表中(1140)。
该方法还包括将第二哈希值存储在签名表中(1150)。
该方法还可包括将对应于数据的参考计数器增加在参考计数器表中。
RAM可包括:存储多个数据的哈希表;存储使用第一哈希函数产生的多个物理行ID(PLID)的转换表;存储使用第二哈希函数产生的多个签名的签名表;存储多个参考计数器的参考计数器表,其中,每个参考计数器跟踪针对在哈希表中存储的相应的数据的重复数据删除的次数;溢出存储器区域。
每个PLID可包括:指示数据是被存储在哈希表中还是被存储在溢出存储器区域中的第一识别符(例如,见图4中的RGN);指示数据所存储的行的第二识别符(例如,见图4中的R_INDX);指示数据所存储的列的第三识别符(例如,见图4中的COL_INDX)。
哈希表、签名表和参考计数器表可被集成为组合数据结构。组合数据结构可包括多个哈希缸。每个哈希缸可包括:包括多个物理行的哈希桶;包括与所述多个物理行相应的各个签名的签名桶;包括与所述多个物理行相应的各个参考计数器的参考计数器桶。
将数据存储在哈希表中的与第一哈希值相应的位置的步骤可包括将数据存储在与第一哈希值相应的哈希桶中。将第二哈希值存储在签名表中的步骤可包括将第二哈希值存储在与数据被存储的哈希桶相应的签名桶中。
因此,本公开的实施例指向用于使存储器(例如,RAN)内大于物理存储器尺寸的存储器容量成为可能的方法和相关联的结构。根据本发明的实施例,重复数据删除用于实现数据存储减少和上下文寻址。根据本发明的实施例,用户数据被存储在由用户数据的哈希值索引的哈希表中。
将理解,尽管术语“第一”、“第二”、“第三”等可在此被用于描述各种元件、组件、区域、层和/或部分,但这些元件、组件、区域、层和/或部分不应被这些术语限制。这些数据被用于将一个元件、组件、区域、层或部分与另一元件、组件、区域、层或部分区分开来。因此,在不脱离本发明的精神和范围的情况下,以上讨论的第一元件、组件、区域、层或部分可被命名为第二元件、组件、区域、层或部分。
根据在此描述的本发明的实施例的相关装置或组件(或者,相关多个装置或组件)(例如,重复数据删除引擎)可利用任何合适的硬件(例如,专用集成电路)、固件(例如,DSP或FPGA)、软件或硬件、固件和软件的合适的组合来实现。例如,相关装置的各种组件可形成在一个集成电路(IC)芯片上或形成在单独的IC芯片上。此外,相关装置的各种组件可实现在柔性印刷电路膜、带载封装(TCP)、印刷电路板(PCB)上,或者形成在与一个或多个电路和/或其他装置相同的基板上。此外,相关装置的各种组件可以是在一个或多个计算装置中的一个或多个处理器上运行的进程或线程,所述进程或线程执行计算机程序指令并与其他系统组件交互,以执行在此描述的各种功能。计算机程序指令被存储在可在计算装置中使用标准存储器装置实现的存储器(诸如,随机存取存储器(RAM))中。计算机程序指令还可被存储在其他非暂时性计算机可读介质(例如,CD-ROM、闪存驱动器等)中。此外,本领域技术人员应认识到,在不脱离本发明的示例性实施例的精神和范围的情况下,各种计算装置的功能可被合并或集成到单个计算装置中,或者特定计算装置的功能可分布在一个或多个其他计算装置中。
此外,还将理解,当一个元件、组件、区域、层和/或部分被称为位于两个元件、组件、区域、层和/或部分“之间”时,可以仅有元件、组件、区域、层和/或部分位于两个元件、组件、区域、层和/或部分之间,或者还可存在一个或多个中间的元件、组件、区域、层和/或部分。
在此描述的术语是为了描述特定实施例的目的,而不意在限制本发明。如在此使用的,除非上下文另外清楚地指示,否则单数形式也意在包括复数形式。还将理解,当在本说明书中使用时,术语“包含”和“包括”说明存在叙述的特征、整体、步骤、操作、元件和/或组件,但是不排除存在或添加一个或多个其它特征、整体、步骤、操作、元件、组件和/或它们的组。
如在此使用的,术语“和/或”包括一个或多个相关联的列出项的任何和所有的组合。当诸如“…中的至少一个”、“…之一”和“从…选择的”的表述在一列元素之后时,修饰整列元素,而不是修饰列中的单个元素。此外,当描述本发明的实施例时使用“可”表示“本发明的一个或多个实施例”。此外,术语“示例性”意在表示示例或说明。
如在此使用的,术语“使用”、“正在使用”和“被使用”可被认为分别与术语“利用”、“正在利用”和“被利用”同义。
关于本发明的一个或多个实施例描述的特征可用于与本发明的其他实施例的特征结合使用。例如,在第一实施例中描述的特征可与在第二实施例中描述的特征进行组合,以形成第三实施例,即使第三实施例可能没有在此具体描述。
本领域技术人员还应认识到,处理可经由硬件、固件(例如,经由ASIC)或在软件、固件和/或硬件的任何组合中被执行。此外,处理的步骤的顺序不被固定,而是可被改变为如被本领域技术人员所认识到的任何期望的顺序。改变的顺序可包括所有的步骤或部分的步骤。
尽管本发明已参照特定的具体实施例被描述,但在不脱离本发明的范围和精神的情况下,本领域技术人员对于想出描述的实施例的变型没有困难。此外,对于各领域技术人员来说,在此描述的发明本身将暗示用于其他任务的方案以及针对其他应用的改编。申请人的意图是通过权利要求涵盖本发明以及在不脱离发明的精神和范围的情况下为了公开的目的而对在此选择的本发明的实施例做出的那些改变和修改的所有这样的使用。因此,本发明的实施例应该在所有的说明性和非限制性的方面被考虑,本发明的范围将通过权利要求和它们的等同物指示。
Claims (20)
1.一种对在与重复数据删除模块相关联的存储器中存储的数据进行检索的方法,其中,重复数据删除模块包括读取缓存,存储器包括转换表和组合数据结构,组合数据结构包括哈希表和参考计数器表,哈希表和参考计数器表均被存储在组合数据结构的多个哈希缸中,哈希表包括多个哈希桶,每个哈希桶包括多个物理行,每个物理行存储数据,参考计数器表包括多个参考计数器桶,每个参考计数器桶包括多个参考计数器,所述方法包括:
识别数据的逻辑地址;
根据逻辑地址,通过在转换表中查找逻辑地址的至少一部分,识别数据的物理行ID,其中,物理行ID包括第一识别符,第一识别符指示数据是被存储在哈希表中还是被存储在溢出存储器区域中;
基于物理行ID来确定数据是被存储在哈希表中还是被存储在溢出存储器区域中;
对所述多个物理行中的各个物理行进行定位,所述各个物理行对应于物理行ID;
从所述各个物理行检索数据,检索的步骤包括将所述多个哈希缸中的各个哈希缸复制到读取缓存,所述各个哈希缸包括:
所述多个哈希桶中的各个哈希桶,所述各个哈希桶包括所述各个物理行;
所述多个参考计数器桶中的各个参考计数器桶,所述各个参考计数器桶包括与所述各个物理行相关联的各个参考计数器。
2.如权利要求1所述的方法,
其中,物理行ID利用应用于数据的第一哈希函数来产生,
其中,物理行ID包括指向哈希表中的位置的地址。
3.如权利要求2所述的方法,其中,物理行ID还包括:
第二识别符,指示数据被存储的行;
第三识别符,指示数据被存储的列。
4.如权利要求1所述的方法,
其中,组合数据结构还包括签名表,签名表包括多个签名桶,每个签名桶包括多个签名,
其中,所述各个哈希缸还包括所述多个签名桶中的各个签名桶,所述各个签名桶包括与所述各个物理行相关联的各个签名。
5.如权利要求4所述的方法,
其中,物理行ID利用应用于数据的第一哈希函数来产生,
其中,物理行ID包括指向哈希表中的位置的地址,
其中,所述多个签名利用比第一哈希函数小的第二哈希函数来产生。
6.如权利要求1所述的方法,其中,每个参考计数器跟踪在哈希表中存储的相应的数据的重复数据删除的次数。
7.一种将数据存储在与重复数据删除引擎相关联的存储器中的方法,所述方法包括:
识别将被存储的数据;
利用第一哈希函数确定与数据应被存储在所述存储器中的哈希表中的物理行相应的第一哈希值;
当哈希表中的物理行可用时,将数据存储在哈希表中的与第一哈希值相应的位置,当哈希表中的物理行不可用时,将数据存储在与溢出存储器区域对应的位置;
利用比第一哈希函数小的第二哈希函数确定也与数据应被存储的位置相应的第二哈希值;
将第一哈希值存储在所述存储器中的转换表中,其中,第一哈希值被保存为数据的物理行ID,物理行ID包括第一识别符,第一识别符指示数据是被存储在哈希表中还是被存储在溢出存储器区域中;
将第二哈希值存储在所述存储器中的签名表中。
8.如权利要求7所述的方法,还包括:在参考计数器表中增加与数据对应的参考计数器。
9.如权利要求7所述的方法,所述存储器包括:
哈希表,存储多个数据;
转换表,存储利用第一哈希函数产生的多个物理行ID;
签名表,存储利用第二哈希函数产生的多个签名;
参考计数器表,存储多个参考计数器,每个参考计数器跟踪在哈希表中存储的相应的数据的重复数据删除的次数;
溢出存储器区域。
10.如权利要求9所述的方法,其中,所述多个物理行ID中的每个物理行ID还包括:
第二识别符,指示数据被存储的行;
第三识别符,指示数据被存储的列。
11.如权利要求9所述的方法,
其中,哈希表、签名表和参考计数器表被集成为组合数据结构,
其中,组合数据结构包括多个哈希缸,每个哈希缸包括:
哈希桶,包括多个物理行;
签名桶,包括与所述多个物理行相应的各个签名;
参考计数器桶,包括与所述多个物理行相应的各个参考计数器。
12.如权利要求11所述的方法,
其中,将数据存储在哈希表中的与第一哈希值相应的位置的步骤包括:将数据存储在与第一哈希值相应的哈希桶中,
其中,将第二哈希值存储在签名表中的步骤包括:将第二哈希值存储在与数据被存储的哈希桶相应的签名桶中。
13.一种重复数据删除模块,包括:
读取缓存;
重复数据删除引擎,用于从主机系统接收数据检索请求;
存储器,存储器包括:
转换表;
组合数据结构,包括:
哈希表,包括多个哈希桶,每个哈希桶包括多个物理行,每个物理行存储数据;
参考计数器表,包括多个参考计数器桶,每个参考计数器桶包括多个参考计数器;
多个哈希缸,每个哈希缸包括所述多个哈希桶之一和所述多个参考计数器桶之一,
其中,数据检索请求导致重复数据删除引擎执行以下处理:
识别数据的逻辑地址;
根据逻辑地址,通过在转换表中查找逻辑地址的至少一部分识别数据的物理行ID,其中,物理行ID包括第一识别符,第一识别符指示数据是被存储在哈希表中还是被存储在溢出存储器区域中;
基于物理行ID来确定数据是被存储在哈希表中还是被存储在溢出存储器区域中;
对所述多个物理行中的各个物理行进行定位,所述各个物理行对应于物理行ID;
从所述各个物理行检索数据,所述检索数据的处理包括:将所述多个哈希缸中的各个哈希缸复制到读取缓存,所述各个哈希缸包括:
所述多个哈希桶中的各个哈希桶,所述各个哈希桶包括所述各个物理行;
所述多个参考计数器桶中的各个参考计数器桶,所述各个参考计数器桶包括与所述各个物理行相关联的各个参考计数器。
14.如权利要求13所述的重复数据删除模块,
其中,物理行ID利用应用于数据的第一哈希函数来产生,
其中,物理行ID包括指向哈希表中的位置的地址。
15.如权利要求14所述的重复数据删除模块,其中,物理行ID还包括:
第二识别符,指示数据被存储的行;
第三识别符,指示数据被存储的列。
16.如权利要求13所述的重复数据删除模块,
其中,组合数据结构还包括签名表,签名表包括多个签名桶,每个签名桶包括多个签名,
其中,所述各个哈希缸还包括所述多个签名桶中的各个签名桶,所述各个签名桶包括与所述各个物理行相关联的各个签名。
17.如权利要求16所述的重复数据删除模块,
其中,物理行ID利用应用于数据的第一哈希函数来产生,
其中,物理行ID包括指向哈希表中的位置的地址,
其中,所述多个签名利用比第一哈希函数小的第二哈希函数来产生。
18.如权利要求13所述的重复数据删除模块,其中,每个参考计数器跟踪在哈希表中存储的相应的数据的重复数据删除的次数。
19.一种重复数据删除模块,包括:
主机接口;
传输管理器,用于经由主机接口从主机系统接收数据传输请求;
多个分区,每个分区包括:
重复数据删除引擎,用于从传输管理器接收分区数据请求;
多个存储器控制器;
存储器管理器,设置在重复数据删除引擎与存储器控制器之间;
多个存储器模块,每个存储器模块连接到所述多个存储器控制器之一,
其中,重复数据删除引擎被配置为:
识别数据的逻辑地址;
根据逻辑地址,通过在转换表中查找逻辑地址的至少一部分,识别数据的物理行ID,其中,物理行ID包括第一识别符,第一识别符指示数据是被存储在哈希表中还是被存储在溢出存储器区域中;
基于物理行ID来确定数据是被存储在哈希表中还是被存储在溢出存储器区域中;
对与物理行ID对应的物理行进行定位;
从哈希表中的物理行或溢出存储器区域中的物理行检索数据。
20.一种重复数据删除模块,包括:
读取缓存;
存储器,存储器包括:
转换表;
哈希表,包括多个哈希桶,每个哈希桶包括多个物理行,每个物理行存储数据;
参考计数器表,包括多个参考计数器桶,每个参考计数器桶包括多个参考计数器;
重复数据删除引擎,用于识别所述多个哈希桶中的第一哈希桶的V个虚拟桶,虚拟桶是所述多个哈希桶中的与第一哈希桶邻近的其他哈希桶,虚拟桶用于当第一哈希桶充满时存储一些第一哈希桶的数据,V是当第一哈希桶的虚拟桶充满时而动态调整的整数,
其中,重复数据删除引擎被配置为:
识别数据的逻辑地址;
根据逻辑地址,通过在转换表中查找逻辑地址的至少一部分,识别数据的物理行ID,其中,物理行ID包括第一识别符,第一识别符指示数据是被存储在哈希表中还是被存储在溢出存储器区域中;
基于物理行ID来确定数据是被存储在哈希表中还是被存储在溢出存储器区域中;
对所述多个物理行中的各个物理行进行定位,所述各个物理行对应于物理行ID;
从所述各个物理行检索数据。
Applications Claiming Priority (14)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/161,136 US9983821B2 (en) | 2016-03-29 | 2016-05-20 | Optimized hopscotch multiple hash tables for efficient memory in-line deduplication application |
US15/161,136 | 2016-05-20 | ||
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 |
---|---|
CN107402889A CN107402889A (zh) | 2017-11-28 |
CN107402889B true CN107402889B (zh) | 2023-07-11 |
Family
ID=60404742
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710358270.3A Active CN107402889B (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) |
Families Citing this family (12)
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 | 삼성전자주식회사 | 입출력 장치의 활용도 및 성능을 조절하는 메모리 컨트롤러, 애플리케이션 프로세서 및 메모리 컨트롤러의 동작 |
US11023374B2 (en) | 2018-07-09 | 2021-06-01 | Silicon Motion, Inc. | Apparatus and method and computer program product for controlling data access |
CN110765156A (zh) | 2018-07-09 | 2020-02-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 | 삼성전자주식회사 | 스토리지 장치 및 이의 동작 방법 |
CN117857468A (zh) * | 2024-01-05 | 2024-04-09 | 合肥卓讯云网科技有限公司 | 一种基于dpdk的网络数据包去重方法和装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003030040A (ja) * | 2001-07-12 | 2003-01-31 | Nec Commun Syst Ltd | オブジェクトデータベースシステムの複数ハッシュインデックスおよび非ユニークインデックス管理方式 |
CN101655861A (zh) * | 2009-09-08 | 2010-02-24 | 中国科学院计算技术研究所 | 基于双计数布鲁姆过滤器的哈希方法和哈希装置 |
CN103959256A (zh) * | 2011-11-28 | 2014-07-30 | 国际商业机器公司 | 基于指纹的数据重复删除 |
Family Cites Families (10)
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 |
US8407428B2 (en) * | 2010-05-20 | 2013-03-26 | Hicamp Systems, Inc. | Structured memory coprocessor |
JP5026213B2 (ja) * | 2007-09-28 | 2012-09-12 | 株式会社日立製作所 | ストレージ装置及びデータ重複排除方法 |
US8370593B2 (en) * | 2010-04-14 | 2013-02-05 | Hitachi, Ltd. | Method and apparatus to manage groups for deduplication |
JP5603997B2 (ja) * | 2010-10-26 | 2014-10-08 | 株式会社日立製作所 | ストレージ装置及びデータ制御方法 |
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 |
US10496543B2 (en) * | 2016-03-31 | 2019-12-03 | Samsung Electronics Co., Ltd. | Virtual bucket multiple hash tables for efficient memory in-line deduplication application |
US9983821B2 (en) * | 2016-03-29 | 2018-05-29 | Samsung Electronics Co., Ltd. | Optimized hopscotch multiple hash tables for efficient memory in-line deduplication application |
-
2017
- 2017-05-19 KR KR1020170062408A patent/KR102190403B1/ko active IP Right Grant
- 2017-05-19 TW TW106116633A patent/TWI804466B/zh active
- 2017-05-19 CN CN201710358270.3A patent/CN107402889B/zh active Active
- 2017-05-19 JP JP2017099688A patent/JP6920107B2/ja active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003030040A (ja) * | 2001-07-12 | 2003-01-31 | Nec Commun Syst Ltd | オブジェクトデータベースシステムの複数ハッシュインデックスおよび非ユニークインデックス管理方式 |
CN101655861A (zh) * | 2009-09-08 | 2010-02-24 | 中国科学院计算技术研究所 | 基于双计数布鲁姆过滤器的哈希方法和哈希装置 |
CN103959256A (zh) * | 2011-11-28 | 2014-07-30 | 国际商业机器公司 | 基于指纹的数据重复删除 |
Also Published As
Publication number | Publication date |
---|---|
TWI804466B (zh) | 2023-06-11 |
KR20170131274A (ko) | 2017-11-29 |
TW201741883A (zh) | 2017-12-01 |
KR102190403B1 (ko) | 2020-12-11 |
JP6920107B2 (ja) | 2021-08-18 |
CN107402889A (zh) | 2017-11-28 |
JP2017208096A (ja) | 2017-11-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107402889B (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 | |
US11010300B2 (en) | Optimized record lookups | |
CN111033477B (zh) | 逻辑到物理映射 | |
US9966152B2 (en) | Dedupe DRAM system algorithm architecture | |
US10152428B1 (en) | Virtual memory service levels | |
US10496543B2 (en) | Virtual bucket multiple hash tables for efficient memory in-line deduplication application | |
US8850115B2 (en) | Memory package utilizing at least two types of memories | |
US8694563B1 (en) | Space recovery for thin-provisioned storage volumes | |
JP7377952B2 (ja) | 圧縮キャッシュに対するフレキシブルな辞書共有 | |
US10528284B2 (en) | Method and apparatus for enabling larger memory capacity than physical memory size | |
US12038852B2 (en) | Partial logical-to-physical (L2P) address translation table for multiple namespaces | |
Boggavarapu | Deduplication-aware Page Cache in Linux Kernel for Improved Read Performance |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |