CN108345433A - 用于最大化的可去重存储器的方法、存储器系统和产品 - Google Patents

用于最大化的可去重存储器的方法、存储器系统和产品 Download PDF

Info

Publication number
CN108345433A
CN108345433A CN201810070223.3A CN201810070223A CN108345433A CN 108345433 A CN108345433 A CN 108345433A CN 201810070223 A CN201810070223 A CN 201810070223A CN 108345433 A CN108345433 A CN 108345433A
Authority
CN
China
Prior art keywords
hash table
memory
data
physical address
big
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.)
Granted
Application number
CN201810070223.3A
Other languages
English (en)
Other versions
CN108345433B (zh
Inventor
姜冬岩
彭强
郑宏忠
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Priority claimed from US15/476,757 external-priority patent/US10678704B2/en
Priority claimed from US15/498,371 external-priority patent/US10528284B2/en
Priority claimed from US15/823,549 external-priority patent/US10437785B2/en
Application filed by Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of CN108345433A publication Critical patent/CN108345433A/zh
Application granted granted Critical
Publication of CN108345433B publication Critical patent/CN108345433B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0607Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • G06F3/0641De-duplication techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System (AREA)

Abstract

本发明公开一种用于最大化的可去重存储器的方法、存储器系统和产品。存储器系统可以包含大哈希表和小哈希表。存储器系统还可以包含溢出区域以及用于将逻辑地址映射到物理行标识符(PLID)的转换表,物理行标识符可以包含区域标识符和物理地址。

Description

用于最大化的可去重存储器的方法、存储器系统和产品
相关申请案数据
本申请案要求2017年9月6日提交的第62/554,904号美国临时专利申请案、2017年2月1日提交的第62/453,461号美国临时专利申请案、2017年1月27日提交的第62/451,157号美国临时专利申请案以及2017年1月25日提交的第62/450,502号美国临时专利申请案的权益,这些申请案出于所有目的全部以引用方式并入本文中。
本申请案是2017年4月26日提交的目前待决的第15/498,371号美国专利申请案的部分继续申请案,所述申请案是2017年3月31日提交的目前待决的第15/476,757号美国专利申请案的部分继续申请案,并且要求2017年2月1日提交的第62/453,461号美国临时专利申请案、2017年1月27日提交的第62/451,157号美国临时专利申请案、2017年1月25日提交的第62/450,502号美国临时专利申请案以及2016年7月29日提交的第62/368,775号美国临时专利申请案的权益,这些申请案出于所有目的全部以引用方式并入本文中。第15/476,757号美国专利申请案是2016年5月23日提交的目前待决的第15/162,517号美国专利申请案以及2016年5月20日提交的目前待决的第15/161,136号美国专利申请案的部分继续申请案,并且要求2017年2月1日提交的第62/453,461号美国临时专利申请案、2017年1月27日提交的第62/451,157号美国临时专利申请案、2017年1月25日提交的第62/450,502号美国临时专利申请案、2016年7月29日提交的第62/368,775号美国临时专利申请案以及2016年3月31日提交的第62/316,402号美国临时专利申请案的权益,这些申请案出于所有目的全部以引用方式并入本文中。第15/162,517号美国专利申请案要求2016年3月31日提交的第62/316,397号美国临时专利申请案的权益,这两个申请案出于所有目的以引用方式并入本文中。第15/161,136号美国专利申请案要求2016年3月20日提交的第62/314,918号美国临时专利申请案的权益,这两个申请案出于所有目的以引用方式并入本文中。
技术领域
本发明概念大体上涉及存储器,且更确切地说,涉及最大化可去重存储器。
背景技术
去重(或可去重)存储器提供存储数据的更有效机制。在传统存储器解决方案中,将每个数据对象写入到存储器中的其自身位置。相同数据对象可以存储在存储器中的任何数目的位置中,每个作为单独副本:存储器系统无法识别或防止数据的此重复存储。对于大的数据对象,数据的此重复存储可能是浪费的。仅存储任何数据对象的单个副本的可去重存储器尝试解决此问题。
一些可去重存储器利用哈希表来存储数据对象。但是哈希表可以仅通过使其大小加倍的机制递增。这种大的递增粒度通常留下不可以用作可去重存储器并且仅被视为溢出区域的大部分存储器。由于溢出区域存储器不可去重,因此当大部分存储器不可去重时,总体去重率降低。
仍需要一种用于增加进行去重的存储器的部分的方式。
发明内容
本发明概念的实施例包含一种用于最大化的可去重存储器的存储器系统,包括:用于存储数据的存储器;存储在存储器中的大哈希表,所述大哈希表包含一数目的多个桶和第一数目的路径并且包含存储器的第一部分,所述存储器的第一部分包含为2的第一幂的第一数目的字节;存储在存储器中的小哈希表,所述小哈希表包含所述数目的多个桶和第二数目的路径并且包含存储器的第二部分,所述存储器的第二部分包含为2的第二幂的第二数目的字节;存储在存储器中的溢出区域,所述溢出区域包含存储器的第三部分;以及转换表,用于将逻辑地址映射到物理行标识符(Physical Line Identifier,PLID),所述物理行标识符包含区域标识符和物理地址。
本发明概念的实施例包含一种用于最大化的可去重存储器的方法,其中包括:从处理器接收逻辑地址;使用转换表将所述逻辑地址映射到物理行标识符,所述物理行标识符包含区域标识符和物理地址;使用所述区域标识符确定所述物理地址处于存储器中的大哈希表、小哈希表或溢出区域中;以及使用所述物理地址访问所述存储器中的数据。
本发明概念的实施例包含一种用于最大化的可去重存储器的产品,包括非暂时性存储媒体,其中,所述非暂时性存储媒体具有存储于其上的在由机器执行时引起以下操作的指令:从处理器接收逻辑地址;使用转换表将所述逻辑地址映射到物理行标识符,所述物理行标识符包含区域标识符和物理地址;使用所述区域标识符确定所述物理地址处于存储器中的大哈希表、小哈希表或溢出区域中;以及使用所述物理地址访问所述存储器中的数据。
附图说明
图1示出根据本发明概念的实施例的可用于使用可去重存储器的机器。
图2示出图1的机器的额外细节。
图3示出用于图1的机器中的可去重存储器的常规哈希表的使用。
图4至5示出根据本发明概念的实施例的可扩展哈希表的使用。
图6示出用于将逻辑地址映射到不同存储器目的地的图4的转换表的使用。
图7A-7B示出根据本发明概念的实施例的将图4的可扩展哈希表与可去重存储器一起使用的实例过程的流程图。
图8示出根据本发明概念的实施例的用于确定用于图4的存储器中的读取请求中的逻辑地址的物理行标识符(Physical Line Identifier,PLID)的实例过程的流程图。
图9A-9C示出根据本发明概念的实施例的用于确定用于图4的存储器中的写入请求中的逻辑地址的物理行标识符(Physical Line Identifier,PLID)的实例过程的流程图。
图10示出根据本发明概念的实施例的用于确定是否增加图4的小哈希表的大小的实例过程的流程图。
附图标号说明
105:机器;
110:处理器;
115:存储器;
120:存储装置;
125:存储器控制器;
130:装置驱动器;
205:时钟;
210:网络连接器;
215:总线;
220:用户接口;
225:输入/输出引擎;
305:大哈希表;
310:转换表;
315:签名表;
320:溢出区域;
405、505:小哈希表;
410、625、630、635:条目;
415:数据;
420:频率计数器/参考计数器;
605:逻辑地址;
610:物理行标识符;
615:区域标识符;
620:物理地址;
705、710、715、720、725、730、735、740、745、750、805、905、910、915、920、925、930、935、940、945、950、955、1005、1010、1015:块。
具体实施方式
现在将详细参考本发明概念的实施例,在附图中图示所述实施例的实例。在以下详细描述中,阐述众多具体细节以实现对本发明概念的透彻理解。然而,应理解,本领域技术人员可以在没有这些具体细节的情况下实践本发明概念。在其它例子中,未详细描述众所周知的方法、程序、组件、电路和网络,以免不必要地混淆实施例的各方面。
应理解,虽然术语“第一”、“第二”等可以在本文中用于描述各种元件,但这些元件不应受这些术语限制。这些术语仅用于将一个元件与另一元件区分开来。举例来说,在不脱离本发明概念的范围内,第一模块可以被称为第二模块,并且类似地,第二模块可以被称为第一模块。
本文中用于本发明概念的描述中的术语是仅出于描述具体实施例的目的且并不希望限制本发明概念。如本发明概念和所附权利要求书的描述中所使用,单数形式“一(a、an)”和“所述”意在也包含复数形式,除非上下文另外明确指示。还将理解,如本文中所使用的术语“和/或”指代且涵盖相关联的所列项目中的一个或多个的任何和所有可能组合。应进一步理解,术语“包括(comprise)”和/或“包括(comprising)”在用于本说明书中时指定所陈述的特征、整数、步骤、操作、元件和/或组件的存在,但并不排除一个或多个其它特征、整数、步骤、操作、元件、组件和/或其群组的存在或添加。图式中的组件和特征未必是按比例绘制。
在常规哈希表中,哈希表的大小是m×n,其中m是哈希桶(或行)的数目,并且n是路径(或列)的数目。例如,哈希表可以具有2m=226个哈希桶以及2n=25个路径。
当常规哈希表增长时,哈希表大小的增量是其当前大小的两倍(因为N是以使哈希表的尺寸加倍的指数增加)。哈希桶的数目不会仅改变路径的数目。因此,取决于可用存储器容量和哈希表的大小,不可能使哈希表的大小加倍。这个事实将留下不可以去重的大部分存储器,所述不可以去重的存储器将用作溢出区域。
本文中,可扩展哈希表可以包含作为常规哈希表的大哈希表(Big Hash Table,BHT)以及具有相同数目的哈希桶,但具有较少数目的路径的小哈希表(Little HashTable,LHT)。因此,例如,如果对于大哈希表2m=226且2n=25(或替代地,m=26且n=5),则小哈希表的大小可以是2m=226和2n',其中n'可以是1与n-1之间的任何数目。可扩展哈希表实现了灵活性以通过更精细粒度调节哈希表大小,从而最大化可去重存储器大小并实现高去重率。应注意,名称“大哈希表”和“小哈希表”仅用于称述提及哪个哈希表。哈希表可以很容易地被命名为“第一哈希表”和“第二哈希表”,而不会丢失任何功能性。
逻辑地址到物理存储器(也称为物理行ID或PLID)的映射通过转换表管理。用户数据(也称为物理行或PL)存储在大哈希表、小哈希表或溢出区域中的一个中。
转换表条目包含指示用户数据可以存在于大哈希表中还是小哈希表或溢出区域中的一个中的区域。因此,例如,如果区域存储值0,则用户数据可以存在于大哈希表中;否则,用户数据可以存在于小哈希表或溢出区域中。
如果用户数据不存储在大哈希表中,则转换表条目还可以包含指示小哈希表和溢出区域中的哪一个存储用户数据的子区域。因此,例如,如果子区域存储值0,则用户数据可以存在于小哈希表中;否则,用户数据可以存在于溢出区域中。
图1示出根据本发明概念的实施例的可用于使用可去重存储器的机器。在图1中,示出机器105。机器105可以是任何所需机器,包含但不限于,台式电脑或笔记本电脑、服务器(独立服务器或机架式服务器),或可以得益于本发明概念的实施例的任何其它装置。机器105还可以包含专用便携式计算装置、平板计算机、智能电话和其它计算装置。机器105可以运行任何所需应用:数据库应用是良好实例,但是本发明概念的实施例可以扩展到任何所需应用。
不管机器的特定形式如何,机器105可以包含处理器110、存储器115和存储装置120。处理器110可以是任何种类的处理器:例如,Intel Xeon、Celeron、Itanium或Atom处理器、AMD Opteron处理器、ARM处理器等。尽管图1示出单个处理器,但是机器105可以包含任何数目的处理器,所述处理器中的每一个可以是单核或多核处理器。存储器115可以是任何种类的存储器,例如闪存存储器、静态随机存取存储器(Static Random Access Memory,SRAM)、持久随机存取存储器、铁电随机存取存储器(Ferroelectric Random AccessMemory,FRAM),或非易失性随机存取存储器(Non-Volatile Random Access Memory,NVRAM),例如磁阻随机存取存储器(Magnetoresistive Random Access Memory,MRAM)等。存储器115还可以是不同存储器类型的任何所需组合。存储器115可以由也作为机器105的一部分的存储器控制器125控制。
存储装置120可以是任何种类的存储装置。存储装置120可以由可以驻留在存储器115内的装置驱动器130控制。
图2示出图1的机器105的额外细节。参考图2,机器105通常包含一个或多个处理器110,所述处理器110可以包含可以用于协调机器105的组件的操作的存储器控制器125和时钟205。处理器110还可以耦合到存储器115,举例来说,所述存储器可以包含随机存取存储器(random access memory,RAM)、只读存储器(read-only memory,ROM)或其它状态保持媒体。处理器110还可以耦合到存储装置120和网络连接器210,所述网络连接器210可以是例如以太网连接器或无线连接器。处理器110还可以连接到总线215,除了其它组件外,可以附接到总线215的用户接口220和可以使用输入/输出引擎225管理的输入/输出接口端口。
在图1至2中,存储器115可以是可去重存储器。尽管可去重存储器的实现方案可以不同于更传统形式的存储器,例如动态随机存取存储器(Dynamic Random Access Memory,DRAM),但是这些差别可以与可去重存储器的实现方案不相关。此外,机器105的其它硬件组件,例如可以取决于那些组件是否需要知晓存储器115的物理结构来了解存储器115的特定实现方案的处理器110。对存储器115的特定实现方案“缺乏的了解”还可以扩展到软件元件,例如,在机器105上运行的应用程序。应用程序可以将读取和写入请求发送到存储器115,而无需了解存储器115是否包含DRAM、可去重存储器或任何其它形式的存储器。
图3示出如2017年4月26日提交的第15/498,371号美国专利申请母案中描述,也就是2017年10月5日公开的第2017/0286010号美国专利公开案所公开的用于图1的机器105中的可去重存储器的常规哈希表的使用,所述专利出于所有目的以引用方式并入本文中。在图3中,存储器115可以包含哈希表305、转换表310、签名表315和溢出区域320。哈希表305可以经组织以包含2m个行或桶以及2n个路径或列。哈希表305可以用于存储用户数据,其中每个用户数据以特定方式存储在特定哈希桶内。尽管图3的呈现表明哈希表305是总存储器的大致1/3,但是实际上,哈希表305可以具有任何大小并且通常尽可能大以装配在可用存储器内(以最大化可去重存储器)。溢出区域320表示不可以用作可去重存储器的一部分存储器115(因为存在比可以供哈希表305使用的存储器更多的存储器,但是没有足够的额外存储器来支持将哈希表305中的路径的数目加倍)。
图4示出根据本发明概念的实施例的可扩展哈希表的使用。相比于图3,图4包含大哈希表305、转换表310、签名表315、溢出区域320和小哈希表405。类似于大哈希表305,小哈希表405包含2m个桶。但是小哈希表包含2N'个路径,其中n'小于n。在本发明概念的一些实施例中,n'可以改变,从而准许小哈希表405随着时间推移动态地增长。因此,例如,n'可以从0或1开始(取决于实现方案),并且当小哈希表足够完整,使得可以不将新条目放入其桶中时,n'可以增加1。小哈希表405还可以动态地缩小:例如,如果存储器115正执行相对少的去重。在本发明概念的其它实施例中,可以静态地建立小哈希表405(可能与其在存储器内一样大)。
对于大哈希表305或小哈希表405中的给定行值和给定列值,哈希表可以包含条目,例如条目410。条目410可以包含数据415和频率计数器420。数据415存储实际数据;频率计数器420追踪对数据的不同参考的数目。在应用表达对使用数据415的兴趣时,可以增加频率计数器420;在应用不再对数据415感兴趣时,可以减少频率计数器420。
应注意,n'不应大于n。最终,如果存储器包含足够的空间来将n'增长到与n一样大,则大哈希表305可能已变成本来的两倍大,并且将不需要使用小哈希表405。
以上论述表明不管小哈希表405是静态的还是动态的,静态地建立大哈希表305。尽管在本发明概念的一些实施例中,可以静态地建立大哈希表305,但是在本发明概念的其它实施例中,大哈希表305可以视需要动态地增长(直到所述大哈希表可以在物理存储器的界限内不再增长)。另外,大哈希表305与小哈希表405之间不存在必需关系:大哈希表和小哈希表各自可以是静态的或动态的。也就是说,两个表可以是静态的,一个可以是静态的且另一个是动态的,或两个都可以是动态的。
应注意,通过使用大哈希表305和小哈希表405两者,存储器115中的较多部分用于可去重存储器并且较少部分被分配给溢出区域320。这可以改进存储器115的使用,从而将去重所需的去重率减小到有效的。
一些实例可能有帮助。考虑以下情况:在274,877,906,944字节(大致256GB)的总存储器容量下,大哈希表305具有32(25)个路径,并且小哈希表405具有16(24)个路径。下表1示出关于哈希表的使用的相关数据,其比较哈希表305本身的使用与使用大哈希表305和小哈希表405两者。可以看到,为了实现3.0的有效去重率,哈希表305本身所需的原始去重率是5.4:也就是说,存储在存储器115中的大致5.4%的数据必须表示重复数据以实现3.0的有效去重率。相反,当大哈希表305和小哈希表405一起使用时,需要仅3.9的原始去重率来实现3.0的有效去重率:相当大的改进。
表1
在使用大哈希表305和小哈希表405两者时需要较低原始去重率的原因是存储器115的较多部分用作可去重存储器:也就是说,溢出区域320较小。在存储器115的较少部分用于溢出区域320的情况下,需要较低原始去重率,因为存储器115总体上被更有效地使用。
作为第二实例,考虑相同物理存储器中的相同哈希表,但是在假设原始去重率不变的情况下查看有效去重率。表2说明此情况。可以看到,当单独使用哈希表305时的有效去重率低于当大哈希表305和小哈希表405一起使用时的有效去重率。
表2
上文所描述的本发明概念的实施例示出一个大哈希表305和一个小哈希表405。但是不存在仅使用一个小哈希表405的原因。本发明概念的实施例可以减少投资回报的代价支持多个小哈希表。例如,在图5中,存储器115被示为包含大哈希表305、小哈希表405和小哈希表505。小哈希表505在形式和功能上与小哈希表405相同,不同之处在于,小哈希表505包含N”个路径,其中N”是比N'小2的某一幂(就像N'是比N小2的幂)。
转换表310负责将逻辑地址映射到存储所需用户数据的地址。因此,转换表310可以将行和列(或替代地,桶和路径)存储在存储用户数据的哈希表中(如果用户数据存储在哈希表中的一个中),或溢出区域320中的物理地址中(如果用户数据未存储在哈希表中的一个中)。图6说明此过程。
在图6中,转换表310可以从主计算机接收逻辑地址605(逻辑地址605可以最终来自应用程序、操作系统,或需要从图1的存储器115访问数据的任何其它软件或硬件)。逻辑地址605可以是数据请求的一部分,所述数据请求可以是读取请求或写入请求。逻辑地址605可以被视为包含两个元素:转换表索引和粒度。转换表索引可以表示可以存在所请求数据的特定页面(或高速缓存行);粒度可以表示待检索的数据的特定字节。因此,可以通过遮掩从逻辑地址605产生的最低阶位来产生转换表索引。遮蔽多少位来产生转换表索引可以取决于转换表索引的大小(进而可以取决于图1的存储器115的大小以及用于计算机系统中的高速缓存行的大小)。
转换表索引随后可以用作进入转换表310的索引,可以从所述索引读取物理行标识符(Physical Line Identifier,PLID)610。取决于用户数据实际存储的位置,物理行标识符610可以采用不同形式。但是在所有情况下,物理行标识符610包含区域标识符615和物理地址620。
如果用户数据存储在图4的大哈希表305中,则物理行标识符610可以看起来类似于条目625。在条目625中,区域标识符包含指示用户数据存储在图4的大哈希表305中的单个位。物理地址随后包含行索引的m个位(识别哈希桶)以及列索引的n个位(识别路径)。由于m个位足以在2m个哈希桶之中选择,并且n个位足以在2n个路径之中选择,因此可以在大的哈希表305内识别唯一用户数据。
如果用户数据存储在图4的小哈希表405中,则物理行标识符610可以看起来类似于条目630。在条目630中,区域标识符包含两个位:第一位指示用户数据不存储在图4的大哈希表305中,并且第二位指示用户数据存储在图4的小哈希表405中。物理地址随后包含行索引的m个位(识别哈希桶)以及列索引的n'个位(识别路径)。应注意,因为n'总小于n,所以条目630不需要比条目625更多的位,即使两个位用于识别存储用户数据的区域。
如果用户数据存储在图4的溢出区域320中,则物理行标识符610可以看起来类似于条目635。在条目635中,区域标识符同样包含两个位:第一位指示用户数据不存储在图4的大哈希表305中,并且第二位指示用户数据存储在图4的溢出区域320中。物理地址可以通过任何所需方式,包含行和列索引(类似于条目625和630),或是用任何其它所需格式来格式化。
尽管条目625、630和635示出如何区分图4的大哈希表305、图4的小哈希表405和图4的溢出区域320中的条目,但是本发明概念的实施例可以支持所使用的其它形式。例如,在包含如图5中所示的多个小哈希表405和505的本发明概念的实施例中,区域615可以包含用于区分图5的大哈希表305和其它区域的一个位,并且随后使用两个位在图5的小散列表405和505与图5的溢出区域320之中选择。或者,区域615可以总是使用两个位在多至四个不同区域之中选择,或总是使用三个位在多至八个不同区域之中选择等。此方法具有以下优点:不需要可变数目的位来选择区域,但是将需要可变数目的位来存储整个物理行标识符,并且将留下未使用区域615的位的某一组合。
应注意,尽管图6将转换表310描述为其中条目切断从逻辑地址产生的多个位的表,但是还可以使用其它技术:例如使用哈希函数实施转换表310。当使用哈希函数时,特定逻辑地址(或逻辑地址的相关高阶位)可能经受哈希函数。哈希函数的结果随后可以用于确定用户数据的位置(图4的大哈希表305、图4的小哈希表405,或图4的溢出区域320)和物理地址。
返回到图4,在使用可去重存储器时的一个问题是检查用户数据是否实际上存储在存储器115中某处。例如,不同应用程序可以请求访问相同数据,但是使用不同逻辑地址(因为应用程序既不可能了解其它应用程序,其它应用程序也对用户数据不感兴趣)。签名表315可以用于帮助确定给定用户数据是否是已存在于存储器115中的一些其它用户数据的副本,并且防止存储用户数据的冗余副本。
当用户数据将重新存储在存储器115中时,哈希函数可以施加到用户数据以生成签名。此哈希函数可以与可以用于确定用户数据实际上在存储器115中的存储位置的哈希函数相同,或此哈希函数可以是不同哈希函数。与可以用于确定用户数据将存储的位置的哈希函数不同,用于生成签名的哈希函数对用户数据本身,而不是用户数据的逻辑地址执行哈希。随后可以搜索签名表315以查看是否存在签名。
应注意,签名的长度将通常比用户数据本身短(即,更少位)。因此,不同用户数据可以生成相同签名。换句话说,如果在签名表315中找到签名匹配,所述匹配并不自动地表示用户数据已存储在存储器115中。为了确定用户数据是否实际上存储在存储器115中,用户数据与存储器115中的所识别数据进行比较:如果全面比较指示匹配,则用户数据已存储在存储器115中。在这种情况下,转换表310可以设定成使图6的物理行标识符610指向存储用户数据的位置。应注意,逆主张是确实的:如果在签名表315中未找到签名匹配,则用户数据尚未存储在存储器115中(因为相同数据将不会使用相同哈希函数生成不同签名)。在这种情况下,新条目可以添加到可以映射回逻辑地址的签名表315。
签名表315通常仅参考存储在大哈希表305和小哈希表405中的用户数据来使用。也就是说,签名表315不用于存储在溢出区域320中的数据。原因很简单:溢出区域320不经受去重,因此重复数据可以存储在那里。
图7A-7B示出根据本发明概念的实施例的将图4的可扩展哈希表与可去重存储器一起使用的实例过程的流程图。在图7A中,在块705处,图4的存储器115可以从图1的机器105(从运行于机器105上的应用程序、操作系统或某一其它组件)接收图6的逻辑地址605,作为数据请求的一部分。在块710处,图4的存储器115可以确定对应于图6的逻辑地址605的图6的物理行标识符610。应注意,如何确定图6的物理行标识符610取决于是否读取或写入数据,因为在这些情况下,不同方法用于确定图6的物理行标识符610。下文分别参考图8和9A-9C示出如何确定用于读取和写入请求的图6的物理行标识符610的流程图。
在确定图6的物理行标识符610之后,随后在块715处,图4的存储器115使用图6的物理行标识符610的区域标识符来确定数据所存储的位置。如果数据存储在图4的溢出区域320中,则在块720处,使用从图6的物理行标识符610产生的物理地址访问用户数据(取决于所发布请求的类型,其可以从图4的溢出区域320读取数据或将数据写入到图4的溢出区域320),之后处理结束。否则,在块725处,图4的存储器115确定图4的大哈希表305或图4的小哈希表405中(不同之处在于,在哈希表存储在图4的存储器115中的情况下,数据的访问相同)的行索引和列索引(即,哈希桶和路径)。
在块730(图7B)处,图4的存储器115确定是否可以在指定的行索引和列索引处“找到”所请求数据。例如,当数据将写入到哈希表中的一个时,可能会发生行索引和列索引识别已被数据占用的位置(不太可能但可能发生的事)。在这种情况下,可以将用户数据写入到邻近位置(例如,在与列索引的某一预定差量内,同一哈希桶中的另一路径),因此替代地在读取时将需要从所述位置进行检索。下文参考图9A-9C进一步论述在哈希表中视为“邻近”的位置。应注意,在写入请求的情况下,“找到”数据表示哈希表中存在可以写入数据的可用条目。
应注意,在图6的逻辑地址605是读取请求的一部分的情况下,图4的存储器115可能无法确定在指定行索引和列索引处的数据不是所请求数据。在此类情况下,块730通常会返回“是”结果,并且自动地过渡到块735以访问数据。
如果在指定行索引和列索引处找到数据,或如果指定行索引和列索引可用于存储写入请求的数据,则在块735处,图4的存储器115可以访问数据,此后处理完成。否则,如果数据将写入,但是行索引和列索引识别已存储数据的位置,则在块740处,图4的存储器115可以搜索用于写入用户数据的位置的邻近条目。在块745处,如果不存在可以写入用户数据的邻近位置,则在块750处,图4的存储器115可以报告错误。或者,且更确切地说,在数据将写入到散列表中的一个,但出于某种原因不可以写入到散列表中的一个的情况下,图6的物理行标识符610可以改变成指向图4的溢出区域320,而不是哈希表(在这种情况下,处理可以通过图7A的块720继续)。否则,在邻近“找到”数据,并且在块735处,可以从哈希表访问用户数据,并且处理完成。
图8示出根据本发明概念的实施例的用于确定用于图4的存储器115中的读取请求中的逻辑地址的图6的物理行标识符(Physical Line Identifier,PLID)610的实例过程的流程图。在读取请求的情况下,过程简单。在块805处,逻辑地址用于访问图4的转换表310。转换表310随后可以提供图6的物理行标识符610,可以从所述物理行标识符确定物理地址(其可以包含到散列表中的一个中的行索引和列索引),所述物理地址可以用于从图4的存储器115中的合适区域访问数据。
图9A-9C示出根据本发明概念的实施例的用于确定用于图4的存储器115中的写入请求中的逻辑地址的图6的物理行标识符(Physical Line Identifier,PLID)610的实例过程的流程图。在图9A中,在块905处,图4的存储器115可以生成正写入的数据的签名。在块910处,图4的签名表315可以查看是否存在签名。如果找到签名匹配,则在块915处,图4的存储器115可以查看存储在哈希表(其可以是图4的大哈希表305或图4的小哈希表405)中的数据是否匹配;否则,在块920处,图4的存储器115可以查看图4的签名表315是否具有用于新条目的空间。
如果在块915处,存储在哈希表中的数据匹配,则在块925(图9B)处,图4的存储器115可以查看图4的参考计数器420是否会在递增的情况下溢出(如果图4的参考计数器420已达到其最大值,则可能发生溢出)。如果是,或如果在图9A的块920处签名表不具有用于新条目的空间,则应将用户数据写入到图4的溢出区域320,并且在块930处,存储器115生成用于图4的溢出区域320的图6的物理行标识符610。或者,如果在图4的签名表315中找到签名,数据与哈希表中的条目匹配,并且图4的参考计数器420不会溢出,则在块935处,图4的存储器115可以使图4的参考计数器420递增,此后处理可以结束。应注意,如果图4的参考计数器420可以在不溢出的情况下递增,则根本不需要将数据写入到图4的存储器115(所述数据已存储在哈希表中),使得图7A中的处理也将结束。
如果在图4的签名表315中找到签名,但是在块915处,数据并不匹配,则已占用逻辑地址通常可以映射到的哈希桶和路径的特定组合。此情况被称为“哈希冲突”。当出现哈希冲突时,存在若干个响应方法。如在块940处所示,一个可能是找到哈希表中的新的可用位置并且将图6的物理行标识符610更新到指向新位置。第二可能是直接控制块930并且将数据写入到图4的溢出区域320,而不是哈希表,由此再次相应地更新图6的物理行标识符610。如块945处所示的第三可能是保持图6的物理行标识符610不变,并且将所述物理行标识符留给图4的存储器115以确定数据实际上存储在其它地方。例如,存在散列冲突的常规解决方案,例如开放寻址,其中数据不存储在所识别的准确位置处,但此后可以存储在第一位置中的某处,在散列冲突之后,所述第一位置是空的。当使用开放寻址时,数据可以存储在由图6的物理行标识符610所识别的位置之后的任何地址中,或数据可以存储在固定的预定数目的位置内(固定的预定数目可以设定成任何所需值)。在本发明概念的又一实施例中,数据甚至可以存储在由图6的物理行标识符610指定的位置之前,同样可能存储在一些固定的预定数目的位置内。无论使用什么方法,图4的存储器115可以使用此方法来生成图6的物理行标识符610以及从由图6的物理行标识符610指定的位置访问数据。本发明概念的实施例还可以支持散列冲突的其它解决方案。
如果在图4的签名表315中未找到签名并且图4的签名表315具有用于新条目的空间,则在块950(图9C)处,可以将签名添加到图4的签名表315,并且在块955处,存储器115可以取决于可以找到可用条目的位置而生成用于图4的大哈希表305或图4的小哈希表405的图6的物理行标识符610。
图10示出根据本发明概念的实施例的用于确定是否增加图4的小哈希表405的大小的实例过程的流程图。在图10中,在块1005处,图4的小哈希表405可以查看其是否接近容量。图4的存储器115还可以查看图4的溢出区域320是否具有可以再利用以供图4的小哈希表405使用的足够的可用存储空间。由于图4的小哈希表405的大小将加倍,因此图4的溢出区域320需要具有至少与图4的小哈希表405已使用的空间一样大的空间:可能更多空间,因为一些数据可能已存储在图4的溢出区域320中并且可能需要保持在图4的溢出区域320中。如果图4的小哈希表405具有足够空间,或图4的溢出区域320具有不足以支持图4的增加的小哈希表405的存储空间,则处理可以结束。否则(并且假设图4的小哈希表405的值n'比图4的大哈希表305的值n小至少2),则在块1010处,可以减小图4的溢出区域320的大小的代价来增加图4的小哈希表405的大小。随后,在块1015处,图4的小哈希表405可以使路径的数目加倍(通过递增值n')以使用新添加的存储器,此后处理结束。
在图7A-图10中,示出本发明概念的一些实施例。但本领域技术人员将认识到,通过改变块的次序、通过省略块,或通过包含未在附图中示出的链路,本发明概念的其它实施例也是可能的。无论是否明确地描述,流程图的所有此类变化都被视为本发明概念的实施例。
以下论述预期提供其中可以实施本发明概念的某些方面的一个或多个合适机器的简要一般描述。一个或多个机器可以至少部分地通过从例如键盘、鼠标等常规输入装置的输入,以及通过从另一机器接收的指令、与虚拟现实(virtual reality,VR)环境的交互、生物计量反馈或其它输入信号控制。本文所使用的术语“机器”预期广泛地涵盖单个机器、虚拟机,或以通信方式耦合的机器、虚拟机或一起操作的装置的系统。示例性机器包含计算装置,例如个人计算机、工作站、服务器、便携式计算机、手持式装置、电话、平板电脑等,以及交通装置,例如私人或公共交通工具,例如汽车、火车、出租车等。
一个或多个机器可以包含嵌入式控制器,例如,可编程或不可编程逻辑装置或阵列、专用集成电路(Application Specific Integrated Circuit,ASIC)、嵌入式计算机、智能卡等。一个或多个机器可以利用例如通过网络接口、调制解调器或其它通信耦合与一个或多个远程机器的一个或多个连接。机器可以借助于物理和/或逻辑网络,例如企业内部网、因特网、局域网、广域网等互连。本领域技术人员将理解,网络通信可以利用各种有线和/或无线短程或远程载波和协议,包含射频(radio frequency,RF)、卫星、微波、电气电子工程师学会(Institute of Electrical and Electronics Engineer,IEEE)802.11、光学、红外线、电缆、激光等。
可以参考或结合包含功能、过程、数据结构、应用程序等的相关联数据描述本发明概念的实施例,所述相关联数据在通过机器访问时引起机器执行任务或定义抽象数据类型或低级硬件环境。相关联数据可以存储在例如易失性和/或非易失性存储器,例如RAM、ROM等中,或其它存储装置以及其相关联存储媒体中,包含硬盘驱动器、软盘、光学存储装置、磁带、闪存、存储棒、数字视频光盘、生物存储装置等。相关联数据可以采用包、串行数据、并行数据、传播信号等形式在包含物理和/或逻辑网络的传输环境上传递,并且可以用压缩或加密格式使用。相关联数据可以用于分布式环境中,并且本地地和/或远程地存储用于机器访问。
本发明概念的实施例可以包含有形的非暂时性机器可读媒体,包括可由一个或多个处理器执行的指令,所述指令包括用于执行如本文所描述的发明性概念的元件的指令。
在参考所说明实施例描述和说明本发明概念的原理之后,将认识到,所说明实施例的布置和细节可以在不脱离此原理的情况下进行修改,并且可以按任何所需方式组合。而且,尽管前述论述集中于具体实施例,但是预期其它配置。具体而言,即使本文使用例如“根据本发明概念的实施例”等的表达,但是这些词语一般表示参考实施例可能性,且并不意图将本发明概念限制到具体实施例配置。如本文所使用,这些术语可以参考组合到其它实施例中的相同或不同实施例。
前述说明性实施例不应被解释为限制其本发明概念。虽然已经描述几个实施例,但本领域技术人员将容易了解,在实质上不脱离本公开的新颖教示和优点的情况下,对这些实施例的许多修改是可能的。因此,所有此类修改预期包含在如所附权利要求中定义的此发明概念的范围内。
本发明概念的实施例可以扩展到以下陈述,而不具有限制性:
陈述1.本发明概念的实施例包含存储器系统,所述存储器系统包括:
存储器,用于存储数据;
存储在所述存储器中的大哈希表,所述大哈希表包含一数目的多个桶和第一数目的路径并且包含所述存储器的第一部分,所述存储器的所述一部分包含为2的第一幂的第一数目的字节;
存储在所述存储器中的小哈希表,所述小哈希表包含所述数目的多个桶和第二数目的路径并且包含所述存储器的第二部分,所述存储器的所述第二部分包含为2的第二幂的第二数目的字节;
存储在所述存储器中的溢出区域,所述溢出区域包含所述存储器的第三部分;以及
转换表,用于将逻辑地址映射到物理行标识符(Physical Line Identifier,PLID),所述物理行标识符包含区域标识符和物理地址。
陈述2.本发明概念的实施例包含根据陈述1所述的存储器系统,其中所述区域标识符包含指示所述物理行标识符识别所述大哈希表中的数据的第一位。
陈述3.本发明概念的实施例包含根据陈述2所述的存储器系统,其中所述物理地址包含行索引和列索引。
陈述4.本发明概念的实施例包含根据陈述2所述的存储器系统,其中:
所述第一位指示所述物理行标识符未识别所述大哈希表中的数据;以及
所述区域标识符包含指示所述物理行标识符数据处于所述小哈希表中或处于所述溢出区域中的第二位。
陈述5.本发明概念的实施例包含根据陈述4所述的存储器系统,其中:
所述第二位指示所述物理行标识符识别所述小哈希表中的数据;以及
所述物理地址包含行索引和列索引。
陈述6.本发明概念的实施例包含根据陈述1所述的存储器系统,其中所述小哈希表可以动态地增长。
陈述7.本发明概念的实施例包含根据陈述6所述的存储器系统,其中所述大哈希表可以动态地增长。
陈述8.本发明概念的实施例包含根据陈述1所述的存储器系统,其中在不具有所述小哈希表的情况下,所述存储器系统的第一有效最小去重率低于所述大哈希表的第二有效最小去重率。
陈述9.本发明概念的实施例包含根据陈述1所述的存储器系统,其进一步包括存储在所述存储器中的签名表,所述签名表存储数据的多个签名,所述数据存储于所述大哈希表和所述小哈希表中,
其中所述签名表可以防止将具有一行共同签名的多个数据存储在所述大哈希表或所述小哈希表中。
陈述10.本发明概念的实施例包含一种方法,所述方法包括:
从处理器接收逻辑地址;
使用转换表将所述逻辑地址映射到物理行标识符(Physical Line Identifier,PLID),所述物理行标识符包含区域标识符和物理地址;
使用所述区域标识符确定所述物理地址处于存储器中的大哈希表、小哈希表或溢出区域中;以及
使用所述物理地址访问所述存储器中的数据。
陈述11.本发明概念的实施例包含根据陈述10所述的方法,其中使用所述区域标识符确定所述物理地址处于存储器中的大哈希表、小哈希表或溢出区域中包含:如果未设定所述区域标识符中的第一位,确定所述物理地址处于所述大哈希表中。
陈述12.本发明概念的实施例包含根据陈述10所述的方法,其中使用所述区域标识符确定所述物理地址处于存储器中的大哈希表、小哈希表或溢出区域中包含:如果设定所述区域标识符中的第一位并且未设定所述区域标识符中的第二位,确定所述物理地址处于所述小哈希表中。
陈述13.本发明概念的实施例包含根据陈述10所述的方法,其中使用所述区域标识符确定所述物理地址处于存储器中的大哈希表、小哈希表或溢出区域中包含:如果设定所述区域标识符中的第一位并且设定所述区域标识符中的第二位,确定所述物理地址处于所述溢出区域中。
陈述14.本发明概念的实施例包含根据陈述10所述的方法,其中使用所述物理地址访问所述存储器中的数据包含:
从所述物理地址确定行索引和列索引;以及
使用所述行索引和所述列索引访问所述大哈希表和所述小哈希表中的一个中的所述数据。
陈述15.本发明概念的实施例包含根据陈述14所述的方法,其中使用所述行索引和所述列索引访问所述大哈希表和所述小哈希表中的一个中的所述数据包含:如果在所述行索引和所述列索引处的所述小哈希表中未找到所述数据,搜索所述小哈希表中的邻近条目。
陈述16.本发明概念的实施例包含根据陈述10所述的方法,其中使用所述物理地址访问所述存储器中的数据包含使用所述物理地址访问所述溢出区域中的所述数据。
陈述17.本发明概念的实施例包含根据陈述10所述的方法,其进一步包括:
确定所述小哈希表正接近容量;以及
增加所述小哈希表的大小,同时减小所述溢出区域的大小。
陈述18.本发明概念的实施例包含根据陈述17所述的方法,其中增加所述小哈希表的大小包含:
使所述小哈希表的所述大小加倍;以及
减小所述溢出区域的所述大小。
陈述19.本发明概念的实施例包含根据陈述17所述的方法,其中增加所述小哈希表的大小包含增加所述小哈希表中的多个列。
陈述20.本发明概念的实施例包含根据陈述10所述的方法,其中:
使用所述物理地址访问所述存储器中的数据包含将所述数据写入到所述存储器;以及
使用转换表将所述逻辑地址映射到物理行标识符(Physical Line Identifier,PLID)包含选择所述大哈希表、所述小哈希表和所述溢出区域中的一个以使用所述转换表写入所述数据。
陈述21.本发明概念的实施例包含根据陈述20所述的方法,其中使用所述区域标识符确定所述物理地址处于存储器中的大哈希表、小哈希表或溢出区域中包含:
将哈希函数应用于所述数据以生成签名;
在签名表中检查所述签名;以及
如果所述签名处于所述签名表中,则将所述数据写入到所述溢出区域。
陈述22.本发明概念的实施例包含根据陈述21所述的方法,其中在签名表中检查所述签名包含在所述签名表中检查所述物理地址中的一行所述签名。
陈述23.本发明概念的实施例包含产品,包括非暂时性存储媒体,所述非暂时性存储媒体具有存储于其上的在由机器执行时引起以下操作的指令:
从处理器接收逻辑地址;
使用转换表将所述逻辑地址映射到物理行标识符(Physical Line Identifier,PLID),所述物理行标识符包含区域标识符和物理地址;
使用所述区域标识符确定所述物理地址处于存储器中的大哈希表、小哈希表或溢出区域中;以及
使用所述物理地址访问所述存储器中的数据。
陈述24.本发明概念的实施例包含根据陈述23所述的产品,其中使用所述区域标识符确定所述物理地址处于存储器中的大哈希表、小哈希表或溢出区域中包含:如果不设定所述区域标识符中的第一位,确定所述物理地址处于所述大哈希表中。
陈述25.本发明概念的实施例包含根据陈述23所述的产品,其中使用所述区域标识符确定所述物理地址处于存储器中的大哈希表、小哈希表或溢出区域中包含:如果设定所述区域标识符中的第一位并且未设定所述区域标识符中的第二位,确定所述物理地址处于所述小哈希表中。
陈述26.本发明概念的实施例包含根据陈述23所述的产品,其中使用所述区域标识符确定所述物理地址处于存储器中的大哈希表、小哈希表或溢出区域中包含:如果设定所述区域标识符中的第一位并且设定所述区域标识符中的第二位,确定所述物理地址处于所述溢出区域中。
陈述27.本发明概念的实施例包含根据陈述23所述的产品,其中使用所述物理地址访问所述存储器中的数据包含:
从所述物理地址确定行索引和列索引;以及
使用所述行索引和所述列索引访问所述大哈希表和所述小哈希表中的一个中的所述数据。
陈述28.本发明概念的实施例包含根据陈述27所述的产品,其中使用所述行索引和所述列索引访问所述大哈希表和所述小哈希表中的一个中的所述数据包含:如果在所述行索引和所述列索引处的所述小哈希表中未找到所述数据,搜索所述小哈希表中的邻近条目。
陈述29.本发明概念的实施例包含根据陈述23所述的产品,其中使用所述物理地址访问所述存储器中的数据包含使用所述物理地址访问所述溢出区域中的所述数据。
陈述30.本发明概念的实施例包含根据陈述23所述的产品,所述非暂时性存储媒体具有存储于其上的在由所述机器执行时引起以下操作的其它指令:
确定所述小哈希表正接近容量;以及
增加所述小哈希表的大小,同时减小所述溢出区域的大小。
陈述31.本发明概念的实施例包含根据陈述30所述的产品,其中增加所述小哈希表的大小包含:
使所述小哈希表的所述大小加倍;以及
减小所述溢出区域的所述大小。
陈述32.本发明概念的实施例包含根据陈述30所述的产品,其中增加所述小哈希表的大小包含增加所述小哈希表中的多个列。
陈述33.本发明概念的实施例包含根据陈述23所述的产品,其中:
使用所述物理地址访问所述存储器中的数据包含将所述数据写入到所述存储器;以及
使用转换表将所述逻辑地址映射到物理行标识符(Physical Line Identifier,PLID)包含选择所述大哈希表、所述小哈希表和所述溢出区域中的一个以使用所述转换表写入所述数据。
陈述34.本发明概念的实施例包含根据陈述33所述的产品,其中使用所述区域标识符确定所述物理地址处于存储器中的大哈希表、小哈希表或溢出区域中包含:
将哈希函数应用于所述数据以生成签名;
在签名表中检查所述签名;以及
如果所述签名处于所述签名表中,则将所述数据写入到所述溢出区域。
陈述35.本发明概念的实施例包含根据陈述34所述的产品,其中在签名表中检查所述签名包含在所述签名表中检查所述物理地址中的一行所述签名。
因此,考虑到对本文所描述的实施例的各种置换,此详细描述和随附材料预期仅为说明性的,并且不应被视为限制本发明概念的范围。因此,本发明概念所要求保护的是落入所附权利要求书以及其等效物的范围和精神内的所有此类修改。

Claims (20)

1.一种用于最大化的可去重存储器的存储器系统,其特征在于,包括:
存储器,用于存储数据;
大哈希表,存储在所述存储器中,所述大哈希表包含一数目的多个桶和第一数目的路径并且包含所述存储器的第一部分,所述存储器的所述一部分包含为2的第一幂的第一数目的字节;
小哈希表,存储在所述存储器中,所述小哈希表包含所述数目的多个桶和第二数目的路径并且包含所述存储器的第二部分,所述存储器的所述第二部分包含为2的第二幂的第二数目的字节;
溢出区域,存储在所述存储器中,所述溢出区域包含所述存储器的第三部分;以及
转换表,用于将逻辑地址映射到物理行标识符,所述物理行标识符包含区域标识符和物理地址。
2.根据权利要求1所述的存储器系统,其特征在于,所述区域标识符包含指示所述物理行标识符识别所述大哈希表中的数据的第一位。
3.根据权利要求2所述的存储器系统,其特征在于,所述物理地址包含行索引和列索引。
4.根据权利要求2所述的存储器系统,其特征在于,:
所述第一位指示所述物理行标识符未识别所述大哈希表中的数据;以及
所述区域标识符包含指示所述物理行标识符数据处于所述小哈希表中或处于所述溢出区域中的第二位。
5.根据权利要求1所述的存储器系统,其特征在于,所述小哈希表动态地增长。
6.根据权利要求1所述的存储器系统,其特征在于,其进一步包括存储在所述存储器中的签名表,所述签名表存储数据的多个签名,所述数据存储于所述大哈希表和所述小哈希表中,
其中所述签名表防止将具有一行共同签名的多个数据存储在所述大哈希表或所述小哈希表中。
7.根据权利要求1所述的存储器系统,其进一步包括存储在所述存储器中的签名表,所述签名表存储数据的多个签名,所述数据存储于所述大哈希表和所述小哈希表中,
其中所述签名表防止将具有一行共同签名的多个数据存储在所述大哈希表或所述小哈希表中。
8.一种用于最大化的可去重存储器的方法,其特征在于,包括:
从处理器接收逻辑地址;
使用转换表将所述逻辑地址映射到物理行标识符,所述物理行标识符包含区域标识符和物理地址;
使用所述区域标识符确定所述物理地址处于存储器中的大哈希表、小哈希表或溢出区域中;以及
使用所述物理地址访问所述存储器中的数据。
9.根据权利要求8所述的方法,其特征在于,使用所述区域标识符确定所述物理地址处于存储器中的大哈希表、小哈希表或溢出区域中包含:如果未设定所述区域标识符中的第一位,确定所述物理地址处于所述大哈希表中。
10.根据权利要求8所述的方法,其特征在于,使用所述区域标识符确定所述物理地址处于存储器中的大哈希表、小哈希表或溢出区域中包含:如果设定所述区域标识符中的第一位并且未设定所述区域标识符中的第二位,确定所述物理地址处于所述小哈希表中。
11.根据权利要求8所述的方法,其特征在于,使用所述区域标识符确定所述物理地址处于存储器中的大哈希表、小哈希表或溢出区域中包含:如果设定所述区域标识符中的第一位并且设定所述区域标识符中的第二位,确定所述物理地址处于所述溢出区域中。
12.根据权利要求8所述的方法,其特征在于,使用所述物理地址访问所述存储器中的数据包含:
从所述物理地址确定行索引和列索引;以及
使用所述行索引和所述列索引访问所述大哈希表和所述小哈希表中的一个中的所述数据。
13.根据权利要求12所述的方法,其特征在于,使用所述行索引和所述列索引访问所述大哈希表和所述小哈希表中的一个中的所述数据包含:如果在所述行索引和所述列索引处的所述小哈希表中未找到所述数据,搜索所述小哈希表中的邻近条目。
14.根据权利要求8所述的方法,其特征在于,还包括:
确定所述小哈希表正接近容量;以及
增加所述小哈希表的大小,同时减小所述溢出区域的大小。
15.根据权利要求14所述的方法,其特征在于,增加所述小哈希表的大小包含增加所述小哈希表中的多个列。
16.一种用于最大化的可去重存储器的产品,包括非暂时性存储媒体,其特征在于,所述非暂时性存储媒体具有存储于其上的在由机器执行时引起以下操作的指令:
从处理器接收逻辑地址;
使用转换表将所述逻辑地址映射到物理行标识符,所述物理行标识符包含区域标识符和物理地址;
使用所述区域标识符确定所述物理地址处于存储器中的大哈希表、小哈希表或溢出区域中;以及
使用所述物理地址访问所述存储器中的数据。
17.根据权利要求16所述的产品,其特征在于,使用所述区域标识符确定所述物理地址处于存储器中的大哈希表、小哈希表或溢出区域中包含:如果未设定所述区域标识符中的第一位,确定所述物理地址处于所述大哈希表中。
18.根据权利要求16所述的产品,其特征在于,使用所述区域标识符确定所述物理地址处于存储器中的大哈希表、小哈希表或溢出区域中包含:如果设定所述区域标识符中的第一位并且未设定所述区域标识符中的第二位,确定所述物理地址处于所述小哈希表中。
19.根据权利要求16所述的产品,其特征在于,使用所述区域标识符确定所述物理地址处于存储器中的大哈希表、小哈希表或溢出区域中包含:如果设定所述区域标识符中的第一位并且设定所述区域标识符中的第二位,确定所述物理地址处于所述溢出区域中。
20.根据权利要求16所述的产品,其特征在于,使用所述物理地址访问所述存储器中的数据包含:
从所述物理地址确定行索引和列索引;以及
使用所述行索引和所述列索引访问所述大哈希表和所述小哈希表中的一个中的所述数据。
CN201810070223.3A 2017-01-25 2018-01-24 用于最大化的可去重存储器的方法、存储器系统和产品 Active CN108345433B (zh)

Applications Claiming Priority (14)

Application Number Priority Date Filing Date Title
US201762450502P 2017-01-25 2017-01-25
US62/450,502 2017-01-25
US201762451157P 2017-01-27 2017-01-27
US62/451,157 2017-01-27
US201762453461P 2017-02-01 2017-02-01
US62/453,461 2017-02-01
US15/476,757 US10678704B2 (en) 2016-03-29 2017-03-31 Method and apparatus for enabling larger memory capacity than physical memory size
US15/476,757 2017-03-31
US15/498,371 2017-04-26
US15/498,371 US10528284B2 (en) 2016-03-29 2017-04-26 Method and apparatus for enabling larger memory capacity than physical memory size
US201762554904P 2017-09-06 2017-09-06
US62/554,904 2017-09-06
US15/823,549 2017-11-27
US15/823,549 US10437785B2 (en) 2016-03-29 2017-11-27 Method and apparatus for maximized dedupable memory

Publications (2)

Publication Number Publication Date
CN108345433A true CN108345433A (zh) 2018-07-31
CN108345433B CN108345433B (zh) 2023-05-02

Family

ID=62961185

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810070223.3A Active CN108345433B (zh) 2017-01-25 2018-01-24 用于最大化的可去重存储器的方法、存储器系统和产品

Country Status (4)

Country Link
JP (1) JP7058132B2 (zh)
KR (1) KR102509913B1 (zh)
CN (1) CN108345433B (zh)
TW (1) TWI761419B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109189349A (zh) * 2018-10-16 2019-01-11 深圳忆联信息系统有限公司 一种提升固态硬盘复写性能的方法及其系统
CN112257368A (zh) * 2019-07-02 2021-01-22 上海复旦微电子集团股份有限公司 时钟布局方法、装置、eda工具及计算机可读存储介质

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10628072B2 (en) 2018-08-21 2020-04-21 Samsung Electronics Co., Ltd. Scalable architecture enabling large memory system for in-memory computations
CN112286966B (zh) * 2020-09-23 2024-06-18 清华大学 一种数据流处理、恢复方法以及设备和存储介质
CN116991855B (zh) * 2023-09-27 2024-01-12 深圳大普微电子股份有限公司 哈希表处理方法、装置、设备、介质、控制器及固态硬盘

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006178764A (ja) * 2004-12-22 2006-07-06 Toshiba Corp メモリ管理装置、コンピュータシステム及びメモリ管理方法
US7454592B1 (en) * 2006-02-16 2008-11-18 Symantec Operating Corporation Block-level and hash-based single-instance storage
CN104904167A (zh) * 2013-01-10 2015-09-09 瑞典爱立信有限公司 通信网络中对于分组处理的高性能基于哈希的查找
CN105683898A (zh) * 2014-01-17 2016-06-15 网络装置公司 对储存系统中数据高效存储与检索的组相关哈希表组织

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5026213B2 (ja) 2007-09-28 2012-09-12 株式会社日立製作所 ストレージ装置及びデータ重複排除方法
US8312217B2 (en) * 2008-12-30 2012-11-13 Rasilient Systems, Inc. Methods and systems for storing data blocks of multi-streams and multi-user applications
US20110161553A1 (en) * 2009-12-30 2011-06-30 Nvidia Corporation Memory device wear-leveling techniques
CN102103518B (zh) * 2011-02-23 2013-11-13 运软网络科技(上海)有限公司 一种在虚拟化环境中管理资源的系统及其实现方法
US9223511B2 (en) * 2011-04-08 2015-12-29 Micron Technology, Inc. Data deduplication
US9501421B1 (en) 2011-07-05 2016-11-22 Intel Corporation Memory sharing and page deduplication using indirect lines
KR20130064518A (ko) * 2011-12-08 2013-06-18 삼성전자주식회사 저장 장치 및 그것의 동작 방법
CN104035838B (zh) 2013-03-08 2018-08-14 英特尔公司 硬件支持的存储日志记录
KR20140114515A (ko) * 2013-03-15 2014-09-29 삼성전자주식회사 불휘발성 메모리 장치 및 그것의 중복 데이터 제거 방법
WO2015066719A2 (en) 2013-11-04 2015-05-07 Falconstor, Inc. Use of solid state storage devices and the like in data deduplication
US9792063B2 (en) * 2014-01-15 2017-10-17 Intel Corporation Deduplication-based data security

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006178764A (ja) * 2004-12-22 2006-07-06 Toshiba Corp メモリ管理装置、コンピュータシステム及びメモリ管理方法
US7454592B1 (en) * 2006-02-16 2008-11-18 Symantec Operating Corporation Block-level and hash-based single-instance storage
CN104904167A (zh) * 2013-01-10 2015-09-09 瑞典爱立信有限公司 通信网络中对于分组处理的高性能基于哈希的查找
CN105683898A (zh) * 2014-01-17 2016-06-15 网络装置公司 对储存系统中数据高效存储与检索的组相关哈希表组织

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109189349A (zh) * 2018-10-16 2019-01-11 深圳忆联信息系统有限公司 一种提升固态硬盘复写性能的方法及其系统
CN112257368A (zh) * 2019-07-02 2021-01-22 上海复旦微电子集团股份有限公司 时钟布局方法、装置、eda工具及计算机可读存储介质

Also Published As

Publication number Publication date
TWI761419B (zh) 2022-04-21
KR102509913B1 (ko) 2023-03-14
CN108345433B (zh) 2023-05-02
KR20180087838A (ko) 2018-08-02
JP2018120594A (ja) 2018-08-02
JP7058132B2 (ja) 2022-04-21
TW201830249A (zh) 2018-08-16

Similar Documents

Publication Publication Date Title
CN108345433A (zh) 用于最大化的可去重存储器的方法、存储器系统和产品
CN105593828B (zh) 管理文件的方法、分布式存储系统和管理节点
CN105373342B (zh) 异构统一存储器
US20220350784A1 (en) Key-value storage device and method of operating the same
CN108255958A (zh) 数据查询方法、装置和存储介质
DE102017128967A1 (de) Speichervorrichtung, welche eine Hashing-basierte Übersetzung zwischen einer logischen Adresse und einer physikalischen Adresse durchführt
EP3260993A1 (en) File operation method and device
CN103294610B (zh) 可重复使用的内容可寻址存储
CN105631035B (zh) 数据存储方法和装置
US20150169570A1 (en) Method and device for managing data
CN108170726A (zh) 数据查询方法和装置
CN105740454A (zh) 一种图片文件夹的显示方法、装置及电子设备
US11269811B2 (en) Method and apparatus for maximized dedupable memory
CN112988060A (zh) 键值存储装置和用于操作键值存储装置的方法
CN112596949B (zh) 一种高效率的ssd删除数据恢复方法及系统
CN103927355A (zh) 广告拦截方法、装置及系统
CN101356495B (zh) 矢量图形硬件中的缓冲器管理
CN107209761A (zh) 一种数据访问方法、装置及系统
DE102011055097A1 (de) Speichersystem und damit verbundenes Betriebsverfahren
CN110597849A (zh) 数据查询方法及装置
CN106528623B (zh) 一种搜索引擎加速方法及装置
CN110109869B (zh) 一种快速定位连接设备文档的方法
CN112948291A (zh) 数据传输方法、电子设备和可读存储介质
CN109284290B (zh) 一种基于分布式储存空间的数据读取方法
CN109634514A (zh) 一种芯片存储器的读、写数据方法及系统

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