CN108345432A - 用于超量配置存储器系统的高效压缩的算法方法 - Google Patents

用于超量配置存储器系统的高效压缩的算法方法 Download PDF

Info

Publication number
CN108345432A
CN108345432A CN201810013193.2A CN201810013193A CN108345432A CN 108345432 A CN108345432 A CN 108345432A CN 201810013193 A CN201810013193 A CN 201810013193A CN 108345432 A CN108345432 A CN 108345432A
Authority
CN
China
Prior art keywords
duplicate removal
granularities
storage system
storage
granularity
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
CN201810013193.2A
Other languages
English (en)
Other versions
CN108345432B (zh
Inventor
克里希纳·T·马兰迪
郑宏忠
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
Application filed by Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of CN108345432A publication Critical patent/CN108345432A/zh
Application granted granted Critical
Publication of CN108345432B publication Critical patent/CN108345432B/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/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/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
    • 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/023Free address space management
    • 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/0626Reducing size or complexity of 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • 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/0662Virtualisation aspects
    • G06F3/0665Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
    • 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/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement

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)
  • Computer Security & Cryptography (AREA)

Abstract

一种动态地选择存储器系统中的去重粒度以减少去重粒度并提高哈希表效率的方法,该方法包括:在使用存储器系统的应用的应用层处选择一个或多个去重粒度,该一个或多个去重粒度是根据存储器系统的特征来选择的;以及分配与所选择的一个或多个去重粒度中的每一个相对应的存储区域,其中该方法可以使用存储器管理器来共享存储器转换表和哈希表,并且系统可以使用该方法,使得对于频繁使用的行能够使用更高容量的预分配计数器字段。

Description

用于超量配置存储器系统的高效压缩的算法方法
相关申请的交叉引用
本申请要求于2017年1月25日递交的美国临时申请62/450,502 的优先权和权益,其全部内容以引用方式并入本文。
技术领域
本公开的一方面涉及存储器系统。
背景技术
现代应用(如数据库、虚拟桌面基础架构和数据分析)具有相对 较大的主内存占用空间。随着系统规模的扩大,存储器容量也应增加, 并且应超线性地增加。
尽管动态随机存取存储器(DRAM)技术强势超越了20纳米半导体 器件制造节点,但为了超线性地增加存储器容量,架构师也可以应用系 统级技术,例如存储器去重,从而将存储器的虚拟容量增加高达两三 倍。一种可能的算法架构可以通过使用类似哈希表的机制来存储唯一数 据内容,以整合这种存储器系统。除了使用哈希表、引用计数器和转换表之外,还可以使用其他数据结构来可靠地跟踪唯一数据行,并且移除 不再由相应的底层存储器地址引用的数据行。然而,这样的技术增加了 元数据开销,从而实际上破坏了去重的原意图(例如,增加有效可用存 储器容量的意图)。
因此,相关技术中的问题可以包括以下内容:新的存储技术的缺 点;写入延迟差、带宽减小、与物理存储器系统的耐久性相关联的问 题;非易失性存储器的复杂管理;高成本比特率;无效地使用DRAM去 重来存储唯一内容;算法中存在元数据结构,例如转换表和引用计数 器;以及未能可靠地实现高数据压缩率。
发明内容
本公开的实施例提供了用于存储器系统的算法架构。该算法架构 可以具有三种不同的主要架构技术,这些技术增加了存储器系统的有效 容量,同时还有效地使用去重哈希表,由此在不显著增加元数据开销并 且不给存储器系统的性能带来负担的情况下提高存储器系统的去重率。
下面描述用于部署该算法架构所采用的三种主要架构技术的硬件 和软件机制。三种主要的架构技术包括哈希表效率(不增加额外开 销)、转换表效率和引用计数器效率。下面还描述用于存储器系统中有 效的元数据管理的路径。
本公开的实施例还减少了基于去重的存储器系统中的辅助数据结 构的开销,并且还通过提供选择适当的去重粒度的动态能力来提高对唯 一数据内容去重的效率。所描述的实施例的算法还为不同的应用提供更 高的有效去重率,并且改善对去重元数据的最大贡献者中的三个。
根据本公开的一方面,提供了一种动态地选择存储器系统中的去 重粒度以减少去重粒度并提高哈希表效率的方法,该方法包括:在使用 所述存储器系统的应用的应用层处选择一个或多个去重粒度,该一个或 多个去重粒度是根据所述存储器系统的特征来选择的;以及分配与所选 择的一个或多个去重粒度中的每一个相对应的存储区域。
选择所述一个或多个去重粒度可以包括使用与使用所述存储器系 统的所述应用相对应的软件驱动程序。
该方法还可以包括重新启动所述存储器系统,以实现由所述软件 驱动程序选择所述一个或多个去重粒度而产生的参数。
选择所述一个或多个去重粒度可以包括将存储空间划分为存储区 域,每个存储区域对应于所述一个或多个去重粒度中的一个相应的去重 粒度。
将存储空间划分为存储区域可以由所述存储器系统的内核驱动程 序来执行。
选择所述一个或多个去重粒度可以包括观察所述存储器系统的历 史趋势或模式,以及为每个高速缓存行动态地分配所述一个或多个去重 粒度中的一个相应的去重粒度。
可以使用在所述存储器系统的去重存储器模块上的去重片上系统 (SoC)来观察所述存储器系统的历史趋势或模式。
所述存储器系统的历史趋势或模式可以包括应用模式历史、去重 率或预计的表开销。
选择所述一个或多个去重粒度可以包括:将存储空间划分为两个 存储区域,每个存储区域对应于如所述一个或多个去重粒度中的两个去 重粒度中的一个相应的去重粒度;在输入高速缓存行上执行所述两个去 重粒度;以及在所述两个存储区域中针对每个去重粒度的每个存储区域 中存储表。
所述存储器系统的去重存储器模块上的去重片上系统(SoC)可以 用于对输入高速缓存行执行所述两个去重粒度,并且用于将表存储在所 述两个存储区域的每一个中。
根据本公开的一方面,提供了一种通过提高去重率来改善存储器 系统中的容量的方法,所述方法包括:建立逻辑上与存储器管理器邻接 的存储区域。
该方法还可以包括:使用固件来调整所述存储区域的各个方面。
该方法还可以包括:与哈希表存储器和转换表共享所述存储区 域。
该方法还可以包括:当唯一去重数据行被新的行引用时使引用计 数器递增,并且当与引用唯一去重数据行的行数相对应的值减小时使引 用计数器递减。
该方法还可以包括:改变引用计数器的大小。
该方法还可以包括:通过预先分配具有比引用计数器高的比特大 小的附加引用计数器来提高引用计数器效率,以及将包含被重复引用的 数据行的哈希表存储器(HTM)的溢出路迁移到与所述附加引用计数器 相对应的字段。
根据本公开的一方面,提供了一种改变存储器系统中的引用计数 器大小的方法,所述方法包括:提供具有第一比特大小的第一引用计数 器和具有比第一比特大小高的第二比特大小的第二引用计数器,执行哈 希表存储器(HTM)的数据行与第一和第二引用计数器的位置之间的一 对一映射,检测第一引用计数器的接近最大计数器值,以及将第一引用计数器提升到更高的字段值。
将第一引用计数器提升到更高的字段值可以包括:切换与第一引 用计数器相对应的HTM的第一路和与第二引用计数器相对应的HTM的第 二路的逻辑位置。
该方法还可以包括:通过使用标志准确地分类第一和第二引用计 数器的操作状态来跟踪第一路和第二路的逻辑位置的切换。
该方法还可以包括:使用字段来跟踪被提升的第一引用计数器的 目的地。
根据本公开的一方面,提供了一种用于部署去重存储器模块的系 统架构,所述系统架构被驱动程序或片上系统(SoC)控制,以在使用 所述存储器系统的应用的应用层处选择一个或多个去重粒度,其中所述 一个或多个去重粒度是根据所述存储器系统的特征来选择的,并且分配 与所选择的一个或多个去重粒度中的每一个相对应的存储区域。
附图说明
现在将在下文中参考附图更全面地描述实施例。然而,实施例可 以以不同的形式实施,并且不应解释为限于本文所阐述的具体实施例。 更确切地说,提供这些实施例使得本公开将是全面和完整的,并且将实 施例的范围充分传达给本领域技术人员,其中:
图1是描绘根据实施例的具有去重功能的系统存储器层级体系的 框图;
图2是描绘根据实施例的用于动态去重粒度架构的方法的框图;
图3是描绘根据实施例的动态去重粒度超量配置的方法的框图; 以及
图4是描绘根据实施例的计数器高速缓存架构的框图。
具体实施方式
通过参考以下实施例的详细描述和附图可以更容易地理解本发明 构思的特征以及实现本发明构思的方法。在下文中,将参考附图更详细 地描述实施例,其中相似的附图标记始终表示相似的元件。然而,本发 明可以按不同形式来体现,并且不应被解释为仅限于本文说明的实施 例。更确切地说,提供这些实施例作为示例,使得本公开将是全面和完整的,并且将本发明的各方面充分传达给本领域技术人员。因此,可能 不会描述本领域普通技术人员完整理解本发明的各方面所不需要的过 程、元素和技术。除非另有说明,否则在整个附图和书面描述中,相似 的附图标记表示相似的元件,并且因此将不重复其描述。在附图中,为 了清楚起见,可夸大元件、层和区域的相对大小。
在以下描述中,出于解释的目的,对多个具体细节进行阐述,以 提供对各个实施例的透彻理解。然而,显而易见的是,可以在没有这些 具体细节的情况下或者利用一个或多个等同布置来实践各个实施例。在 其他实例中,以框图形式示出了公知的结构和设备,以避免不必要地模 糊各个实施例。
将理解,虽然本文中可以使用术语“第一”、“第二”、“第 三”等来描述各种元件、组件、区域、层和/或部分,但是这些元件、 组件、区域、层和/或部分不应受这些术语限制。这些术语用于将一个 元件、组件、区域、层或部分与另一元件、组件、区域、层或部分进行 区分。因此,在不偏离本发明的精神和范围的情况下,下文中描述的第 一元件、组件、区域、层或部分可以被称为第二元件、组件、区域、层 或部分。
为便于解释,空间上的相对术语,诸如“在......之下”、 “在......下方”、“下方”、“下”、“在......上方”、“上”等 在本文中可以用来描述如在附图中所示的一个元件或特征与另一个或多 个元件或特征的关系。将理解的是,空间上的相对术语除了包括附图中示出的方位之外,还意在包含设备在使用中或操作中的不同方位。例 如,如果附图中的器件被翻转,则被描述为在其他元件或者特征“之 下”或者“下方”或者“下面”的元件将被定向在其他元件或者特征的 “之上”。因此,示例性术语“之下”和“下面”可以涵盖之上和之下两者的方位。器件可以以其他方式定向(例如,旋转90度或在其他方 位),且应相应地解释本文中使用的空间相对描述符。
将理解的是,当一元件、层、区域或组件被称为在另一元件、 层、区域或组件“上”、“连接到”或“耦接到”另一元件、层、区域 或组件时,其可以直接在该另一元件、层、区域或组件上,直接连接到 或耦接到该另一元件、层、区域或组件,或者可以存在一个或多个中间元件、层、区域或组件。此外,还将理解,当一元件或层被称为在两个 元件或层“之间”时,其可以是这两个元件或层之间的唯一元件或层, 或者也可以存在一个或多个中间元件或层。
出于本公开的目的,“X、Y和Z中的至少一个”和“从由X、Y和 Z组成的组中选择的至少一个”可以被解释为仅X,仅Y,仅Z,或者 X、Y和Z中的两个或更多个的任意组合,例如,XYZ、XYY、YZ和ZZ。 类似标记始终表示类似元件。如本文中所使用的术语“和/或”包括相 关列出项目中的一个或多个的任意和所有组合。
本文所用的术语仅是为了描述特定实施例,而不意在限制本发 明。如本文中使用的,单数形式“一”和“一个”意在也包括复数形 式,除非上下文明确地另外指示。还将理解的是,术语“包括”、“具 有”和/或“包含”在本说明书中使用时表示存在所陈述的特征、整数、步骤、操作、元件和/或组件,但并不排除存在或添加一个或多个 其他特征、整数、步骤、操作、元件、组件和/或其组合。诸如“…... 中的至少一个”之类的表述当在元件列表之后时修饰整个元件列表,而 不是修饰列表中的单独元件。
如本文所使用的,术语“基本”、“约”和类似术语被用作近似 术语而不是程度术语,并且旨在说明测量值或计算值中的固有偏差,这 些偏差将被本领域的普通技术人员所认识到。此外,当描述本发明的实 施例时,“可以”的使用表示“本发明的一个或多个实施例”。如本文 所使用的,术语“使用”、“通过使用”和“所使用的”可以被认为分 别与术语“利用”、“通过利用”和“所利用的”同义。此外,术语 “示例性”旨在表示示例或说明。
当某个实施例可以以不同方式实现时,可以与所描述的顺序不同 地执行特定的处理顺序。例如,可以基本同时地执行两个连续描述的处 理,或者以与所描述的顺序相反的顺序执行两个连续描述的处理。
本文中参考截面图描述了各个实施例,所述截面图是实施例和/或 中间结构的示意图。因此,例如由于制造技术和/或公差造成的图示的 形状的变化将被预期。因此,本文公开的实施例不应被解释为局限于具 体示出的区域形状,而应包括例如由制造导致的形状上的偏离。例如, 所示为矩形的注入区域将典型地具有圆形的或者弯曲的特征和/或在其 边缘处具有注入浓度的梯度,而不是从注入区域至未注入区域的二元变 化。同样地,由注入形成的埋入区域可以导致在埋入区域和通过其进行 所述注入的表面之间的区域中的一些注入。因此,附图中示出的区域本 质上是示意性的,它们的形状并不意在示出设备中区域的实际形状,也 不意在进行限制。
根据本文所述的本发明实施例的电子器件或电子设备和/或任何其 他相关设备或组件可以利用任何合适的硬件、固件(例如,专用集成电 路)、软件、或者软件、固件和硬件的组合来实现。例如,这些设备的 各个组件可以形成在一个集成电路(IC)芯片上或者分开的IC芯片 上。此外,这些设备的各个组件可以实现在柔性印刷电路膜、带载封装 (TCP)、印刷电路板(PCB)上,或者形成在一个基板上。此外,这些 设备的各个组件可以是在一个或多个计算设备中的一个或多个处理器上 运行的进程或线程,所述进程或线程执行计算机程序指令并与其他系统 组件进行交互以执行本文所述的各种功能。计算机程序指令被存储在存 储器中,并且可以使用标准存储器件(例如,随机存取存储器 (RAM))在计算设备中实现该存储器。计算机程序指令也可以被存储 在其他非暂时性计算机可读介质中,例如CD-ROM、闪存驱动器等。此 外,本领域技术人员应认识到,可以将各种计算设备的功能组合或集成 到单个计算设备中,或者可以将特定计算设备的功能分布在一个或多个 其他计算设备上,而不偏离本发明的示例性实施例的精神和范围。
除非另外定义,否则这里使用的所有术语(包括技术和科学术 语)具有与本发明所属领域的普通技术人员通常所理解的意义相同的意 义。还将理解的是,诸如在常用词典中定义的术语应被解释为其含义与 在相关技术和/或本说明书的上下文中的含义一致,而不应将其解释为 理想的或过于正式的含义,除非本文明确如此定义。
图1是描绘根据实施例的具有去重功能的系统存储器层级体系的 框图。
参考图1,提供了用于存储器系统中的去重的算法架构的描述,该 算法架构使用具有动态粒度的有效哈希表。本实施例的算法架构提供了 三种架构技术,用于在存储器系统100(例如,DRAM系统)中有效地部 署数据去重。尽管去重存储器系统可以通过仅存储唯一数据行来增加存 储器密度,但与其相关联的附加数据结构通常会增加开销,这会降低有效率,并且可能会更显著地增加更高存储器密度下的开销。
本实施例的存储器系统100是去重DRAM系统。存储器系统100可 以包含用于存储某个数据粒度下的数据行的哈希表存储器(HTM)110 的一个或多个哈希表、用于向对应的CPU主机地址呈现间接接口的转换 表120、以及用于形成一个或多个引用计数器130的数据结构,所述引 用计数器130用于存储在HTM 110中存储的每个唯一数据行的参考条目 的总数。
然而,应该注意的是,转换表120和引用计数器130两者都会导 致额外的数据开销,由此减少了去重率。另外,虽然选择使用小的数据 粒度可以相应地增加存储器系统100的元数据开销,但是对于较小的数 据粒度,可以提高HTM110的效率。
如下所述,本实施例的三种架构技术成功应对了与存储器系统100 的性能相关的挑战,同时提高了存储器系统100的去重率。例如,为了 在不增加开销的情况下实现HTM110的效率,本实施例提高了转换表 120的效率和引用计数器130的效率,从而创建具有动态或可选择的数 据粒度的有效HTM 110。
引用计数器130的效率可以通过提供架构方法来实现,以通过提 供软件透明的硬件架构以及通过提供包括智能软件驱动程序的软件驱动 程序耦合架构来减少元数据开销。
在本实施例中,可以通过使用以下内容来完成数据组织:包括用 于存储地址到LUT地址映射的存储设备在内的地址查找表(LUT)存储 器(ALUTM);三维哈希表存储器(HTM)110。HTM包括:用于存储HTM 110中的数据值的“m”个哈希桶111דn”个哈希表112דd”个槽 /路113(每个二维哈希表112对应于HTM 110的相应哈希函数,每个 哈希表包括m个哈希桶111和d个路113);缓冲存储器(BM)151, 作为片上系统(SoC)存储器缓冲区/高速缓存和虚拟密度超配置管理 (HTM溢出)的保留区;以及虚拟桶(VB)155,用于将数据放置在附 近的哈希桶111中并且具有“h”个哈希桶111的VB 155高度(m、n、 d和h表示整数)。
去重粒度的作用可以是在HTM 110中容易地找到数据行匹配,并 且可以导致存储更少的唯一内容以最终提高去重率。HTM 110被组织为 包括哈希桶111的三维数据结构,哈希桶111包含具有相同哈希值153 的值。在哈希桶111内,使用辅助哈希来组织数据行以帮助定位具有低 复杂度的数据行,并且在没有线性链的情况下减少硬件开销。另外,通 过具有相对较少的数据冲突,多个哈希表112进一步提高了HTM 110的 效率。此外,HTM 110中的每个数据行条目还具有附加结构,其可以被 称为“费用(toll)”115,用于跟踪该值的引用计数。
本实施例可以包括以下算法参数:16比特的签名;32路113(即 d=32);24比特的费用115大小;以及VB 155的高度为4(即, h=4)。例如,此算法架构的相对基本的实施方式可以具有64比特的去 重粒度,这与CPU高速缓存行大小一致。然而,当去重粒度减小到更小的大小(例如,32比特的去重粒度)时,可以提高去重率。
然而,去重粒度的减小对应于开销增大(例如,32比特的去重粒 度可能与64比特的去重粒度相比增加高达20%的额外开销),使得能 够存储更大数量的数据行条目,并且使得能够在与HTM 110分离的转换 表120中存储相关联的转换条目。粒度和开销之间的权衡可以取决于采 用本实施例的特定应用的特征,并且可以取决于使用场景。因此,通过 实现对不同应用的适应性,提供具有自适应行为的动态可选择粒度可以 产生高去重性,而不管使用存储器系统100的应用如何。
图2是描绘根据实施例的用于动态去重粒度架构的方法的框图。
参考图2,用于在应用层(例如,在图1的存储器系统100中)选 择去重粒度的四种方法可以使用设备驱动器/内核驱动器,并且可以提 高转换表120的效率。
第一种方法210是用于选择去重粒度的软件定义方法。在本方法 中,可以使用软件的驱动程序来定义去重粒度,并且可以采用系统重启 特征来调整硬件参数和分配以实现所选的去重粒度(例如,64比特去 重粒度)。
第二种方法220是用于选择去重粒度的软件分区方法。在本方法 中,用于去重存储器的内核驱动器可以将存储空间划分为两个不同的存 储区域222a和222b,每个存储区域222a和222b具有各自不同的去重 粒度(例如,一个存储区域222b中为32比特去重粒度,另一个存储区 域222a中为64比特去重粒度)。存储空间的一个存储区域(例如,存 储区域222a)可以具有基准去重率或去重率,并且存储空间的另一个 存储区域(例如,存储区域222b)可以具有更低的去重粒度。因此, 可以实现总体中间去重率,同时适度增加开销(开销增加约15%)。
第三种方法230是用于选择去重粒度的自适应方法。在本方法 中,去重片上系统(SoC)可以位于去重存储器模块上,所述去重存储 器模块用于通过观察和分析存储器系统100的历史趋势和其他模式(例 如,应用模式历史、提供的去重率和/或预计的表开销),来学习改进 的去重粒度。基于其观察分析,去重SoC可以为每个高速缓存行动态地 分配去重粒度(例如,32比特去重粒度或64比特去重粒度),并且可 以将分配的去重粒度存储在HTM110中。
第四种方法240是用于选择去重粒度的推测方法。在本方法中, 第三种方法230的去重SoC可以对输入高速缓存行执行两个不同的去重 粒度(例如,64比特去重和32比特去重),并且可以针对两个不同的 粒度,将表存储在存储器系统100的不同区域中。可以在存储器中存在 足够的空间来用于存储这两种实施方式的元数据的假设下存储不同的粒 度。但是,随着表的增长,垃圾收集可能会启发式地移除转换条目中的 一个,从而导致针对高速缓存行存储适当的去重粒度的最终状态。因 此,由于这两个粒度都被推测性地存储,所以本方法提供了有效地找到 重复的附加机会。
图3是描绘根据实施例的动态去重粒度超量配置的方法的框图。
参考图3,当去重超量配置算法在硬件中被固定时,由于使用固定 的转换表区域和固定的哈希表大小,所以实现复杂度较低。但是,可能 存在最大限制。为了解决去重算法的更高容量问题,在实施固定硬件资 源时提高去重率并且同时也扩展转换表可能会比较困难。然而,本实施 例可以能够增加去重率,超出先前假定的最大限制。去重率可能会提高,但可能浪费在硬件中分配的转换表资源,而提高的去重率可能不会 用于所有应用场景。
本实施例通过使用动态超量配置300以允许转换表120将去重率 增加为超出先前所认为的最大值的方法来解决这个问题。本实施例包含 逻辑上与类操作系统(0S)存储器管理器320邻接的附加存储区域 310。附加存储区域310可以完全以硬件实现,同时使用可以由去重驱 动器控制的固件“旋钮”来调整附加存储区域310的各方面。HTM 110 和附加转换表120可以共享该附加存储区域310。此外,由于额外的间 接性,对附加存储区域310的读取访问和写入访问可能更为昂贵。然 而,本实施例的动态转换表120设计使得去重SoC能够适应具有高去重 率的应用。
通过使用固定的去重超量配置可能会存在附加权衡。驱动程序定 义的固定超量配置可简化产品设计,并且可提供统一的较低读/写延 迟。另外,该动态设计允许SoC适应具有高去重率的应用。
除了HTM 110和转换表120之外,去重存储区域的另一个贡献因 子是“费用”115或者引用计数器130,其可以指代相同的概念。引用 计数器130是一种硬件计数器,当唯一去重数据行被新的行引用时,该 计数器递增,并且当该值改变时该计数器递减。通常,32比特计数器 甚至足以保存最常被引用的数据行。然而,许多应用使用场景具有长尾 延迟行为,其中大多数数据行很不充分地利用引用计数器130,从而增 加了开销。此外,当去重粒度减小(例如,减小到32比特去重粒度) 时,将有更多数量的唯一高速缓存行,从而增加整个计数器开销。
通过简单地具有可变引用计数器大小以使得能够将引用计数器比 特大小减小到较小值(例如,16比特),可以减少硬件开销,但是可 能面临引用计数器溢出,从而将附加的唯一数据行发送到保存不能被容 纳的数据行的溢出区域,从而对去重率不利。与软件分配不同,硬件分 配可以是预定义的,因此排除了增加计数器大小以适应所实现的应用的 机会。
本发明的动态超量配置方法300通过提供“计数器-高速缓存”方 法来解决这个问题,以通过与溢出区域共享来实现高效的引用计数器 130,而不浪费硬件资源。也就是说,本实施例可以预先分配具有较高 比特大小的一些引用计数器130,并且然后可以使用类似高速缓存的策 略来迁移包含高引用数据行的HTM 110的溢出路113,溢出路被迁移到 具有较长字段引用计数器130s的位置。
因此,本发明的动态超量配置方法300可以使用计数器高速缓 存,其可能够预先分配较高比特大小的计数器,可以使用策略将溢出路 113迁移到较长的字段,可以提供路113移动策略,并且可以分配归属 节点,使得在计数器字段的单次迁移之后没有另外的迁移。本发明的动 态超量配置方法300还可以通过提供一对一映射、不可逆交换来提供进 一步的简化。计数器高速缓存可以适当地提供用于存储嵌入到计数器比 特自身中的迁移或交换路信息的小量开销。
图4是描绘根据实施例的计数器高速缓存架构的框图。
参考图4,详细描绘了计数器高速缓存架构400。在本示例中,路 0410和路1 411的大小是32比特,而路2412和路3413都是16比 特。最初,在HTM110的数据行与相应的引用计数器130位置之间存在 一对一的映射。然而,随着应用越来越多地使用HTM 110,可能越来越 频繁地使用路2412,并且相应的引用计数器130可能接近最大计数器 值(即,在本示例中是216,因为路2412具有16比特)。当引用计数 器130达到最大计数器值时,SoC的内部逻辑将路2412“提升”到更 高的字段值。
在本示例中,通过交换路0410和路2412的逻辑位置,路2412 被提升到路0410。然而,应该跟踪两个不同的路113的逻辑位置的翻 转,以准确地分类高速缓存行的引用计数器130。因此,不是所有32 比特都被用于引用计数器130。在本示例中,1比特的标志420可以专 用于通知对于行的路113的相应提升/降级。此外,可以被称为“标 签”430的另一个4比特或5比特字段可以被用来跟踪目的地引用计数 器位置,从而留下剩余26比特的可用空间用于引用计数器130。
为了简化路移动策略,可以为每一行分配归属节点,并且归属节 点可在第一次路迁移之后不允许进行附加迁移。本实施例可以通过用于 迁移的一对一映射来进一步简化,该映射针对每个低比特计数器仅指定 单个高比特计数器,并且移除可逆交换。
根据上述实施例,通过使用三种所描述的架构,算法架构可以增 加存储器系统的有效去重率,而不会增加转换表或引用计数器开销。尽 管所描述的实施例可以完全以硬件实现,同时对驱动程序保持透明,但 是替代的实施例封装相同的硬件行为,同时将决策控制旋钮置于驱动程 序中以增加灵活性。
本文已经公开了多个实施例,并且尽管采用了特定术语,但是它 们仅用于且将被解释为一般的描述性意义,而不是为了限制的目的。在 一些情况下,如在提交本申请时本领域普通技术人员将清楚的,除非另 有明确说明,否则结合特定实施例描述的特征、特性和/或元件可以单 独使用或与结合其他实施例描述的特征、特性和/或元件相结合。因 此,本领域技术人员将理解,在不脱离由所附权利要求及其功能等同物 阐述的本公开的精神和范围的情况下,可以进行形式和细节上的各种改 变。

Claims (10)

1.一种动态地选择存储器系统中的去重粒度以减少去重粒度并提高哈希表效率的方法,所述方法包括:
在使用所述存储器系统的应用的应用层处选择一个或多个去重粒度,所述一个或多个去重粒度是根据所述存储器系统的特征来选择的;以及
分配与所选择的所述一个或多个去重粒度中的每一个相对应的存储区域。
2.根据权利要求1所述的方法,其中,选择所述一个或多个去重粒度包括:使用与使用所述存储器系统的所述应用相对应的软件驱动程序。
3.如权利要求2所述的方法,还包括:重新启动所述存储器系统,以实现由所述软件驱动程序选择所述一个或多个去重粒度而产生的参数。
4.根据权利要求1所述的方法,其中,选择所述一个或多个去重粒度包括:将存储空间划分为存储区域,每个存储区域对应于所述一个或多个去重粒度中的一个相应的去重粒度。
5.根据权利要求4所述的方法,其中,将存储空间划分为存储区域由所述存储器系统的内核驱动程序来执行。
6.根据权利要求1所述的方法,其中,选择所述一个或多个去重粒度包括:
观察所述存储器系统的历史趋势或模式;以及
为每个高速缓存行动态地分配所述一个或多个去重粒度中的一个相应的去重粒度。
7.根据权利要求6所述的方法,其中,使用在所述存储器系统的去重存储器模块上的去重片上系统SoC来观察所述存储器系统的历史趋势或模式。
8.根据权利要求6所述的方法,其中,所述存储器系统的历史趋势或模式包括应用模式历史、去重率或预计的表开销。
9.根据权利要求1所述的方法,其中,选择所述一个或多个去重粒度包括:
将存储空间划分为两个存储区域,每个存储区域对应于如所述一个或多个去重粒度中的两个去重粒度中的一个相应的去重粒度;
在输入高速缓存行上执行所述两个去重粒度;
在所述两个存储区域中针对每个去重粒度的每个存储区域中存储表;以及
当所述两个存储区域的两个表的组合容量增加或达到阈值时,根据已学习的历史丢弃其中一个表的表条目。
10.一种改变存储器系统中的引用计数器大小的方法,所述方法包括:
提供具有第一比特大小的第一引用计数器和具有比所述第一比特大小高的第二比特大小的第二引用计数器;
执行哈希表存储器HTM的数据行与所述第一和第二引用计数器的位置之间的一对一映射;
检测所述第一引用计数器的接近最大计数器值;以及
将所述第一引用计数器提升到更高的字段值。
CN201810013193.2A 2017-01-25 2018-01-05 用于超量配置存储器系统的高效压缩的算法方法 Active CN108345432B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201762450502P 2017-01-25 2017-01-25
US62/450,502 2017-01-25
US15/470,261 US10489288B2 (en) 2017-01-25 2017-03-27 Algorithm methodologies for efficient compaction of overprovisioned memory systems
US15/470,261 2017-03-27

Publications (2)

Publication Number Publication Date
CN108345432A true CN108345432A (zh) 2018-07-31
CN108345432B CN108345432B (zh) 2023-11-07

Family

ID=62906408

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810013193.2A Active CN108345432B (zh) 2017-01-25 2018-01-05 用于超量配置存储器系统的高效压缩的算法方法

Country Status (3)

Country Link
US (1) US10489288B2 (zh)
KR (1) KR102259088B1 (zh)
CN (1) CN108345432B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10489288B2 (en) * 2017-01-25 2019-11-26 Samsung Electronics Co., Ltd. Algorithm methodologies for efficient compaction of overprovisioned memory systems
JP7367470B2 (ja) * 2019-11-05 2023-10-24 富士通株式会社 情報処理装置およびキャッシュ制御プログラム
JP2021128514A (ja) * 2020-02-13 2021-09-02 株式会社日立製作所 ストレージシステムおよび重複データ管理方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120150954A1 (en) * 2010-12-09 2012-06-14 Quantum Corporation Adaptive collaborative de-duplication
US20140115258A1 (en) * 2012-10-18 2014-04-24 Oracle International Corporation System and method for managing a deduplication table
CN105740266A (zh) * 2014-12-10 2016-07-06 国际商业机器公司 用于数据去重的方法和设备
CN106020722A (zh) * 2016-05-19 2016-10-12 浪潮(北京)电子信息产业有限公司 一种云存储系统的重复数据去重方法、装置及系统
CN106055271A (zh) * 2016-05-17 2016-10-26 浪潮(北京)电子信息产业有限公司 一种基于云计算的重复数据去重选择方法及装置

Family Cites Families (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6088777A (en) * 1997-11-12 2000-07-11 Ericsson Messaging Systems, Inc. Memory system and method for dynamically allocating a memory divided into plural classes with different block sizes to store variable length messages
US6438560B1 (en) 1999-09-16 2002-08-20 International Business Machines Corporation Reuse of immutable objects during object creation
TWI417722B (zh) 2007-01-26 2013-12-01 Hicamp Systems Inc 階層式不可改變的內容可定址的記憶體處理器
US8504791B2 (en) 2007-01-26 2013-08-06 Hicamp Systems, Inc. Hierarchical immutable content-addressable memory coprocessor
US8479080B1 (en) 2009-07-12 2013-07-02 Apple Inc. Adaptive over-provisioning in memory systems
US8423520B2 (en) * 2009-11-23 2013-04-16 Dell Products L.P. Methods and apparatus for efficient compression and deduplication
US8364652B2 (en) 2010-09-30 2013-01-29 Commvault Systems, Inc. Content aligned block-based deduplication
EP2622452A4 (en) 2010-09-30 2017-10-04 Nec Corporation Storage system
US9442806B1 (en) * 2010-11-30 2016-09-13 Veritas Technologies Llc Block-level deduplication
US8533407B2 (en) 2010-12-01 2013-09-10 International Business Machines Corporation Capacity management in deduplication storage systems
US9639543B2 (en) * 2010-12-28 2017-05-02 Microsoft Technology Licensing, Llc Adaptive index for data deduplication
US8688651B2 (en) 2011-01-25 2014-04-01 Sepaton, Inc. Dynamic deduplication
US8977812B1 (en) * 2011-03-30 2015-03-10 Emc Corporation Iterating in parallel for deduplication
US9436292B1 (en) * 2011-06-08 2016-09-06 Emc Corporation Method for replicating data in a backup storage system using a cost function
US9501421B1 (en) 2011-07-05 2016-11-22 Intel Corporation Memory sharing and page deduplication using indirect lines
US8918375B2 (en) * 2011-08-31 2014-12-23 Microsoft Corporation Content aware chunking for achieving an improved chunk size distribution
US8639669B1 (en) * 2011-12-22 2014-01-28 Emc Corporation Method and apparatus for determining optimal chunk sizes of a deduplicated storage system
US20130275699A1 (en) 2012-03-23 2013-10-17 Hicamp Systems, Inc. Special memory access path with segment-offset addressing
US8650163B1 (en) 2012-08-20 2014-02-11 International Business Machines Corporation Estimation of data reduction rate in a data storage system
US20140059271A1 (en) 2012-08-27 2014-02-27 Apple Inc. Fast execution of flush commands using adaptive compaction ratio
US9348538B2 (en) * 2012-10-18 2016-05-24 Netapp, Inc. Selective deduplication
US9465808B1 (en) * 2012-12-15 2016-10-11 Veritas Technologies Llc Deduplication featuring variable-size duplicate data detection and fixed-size data segment sharing
US8751763B1 (en) 2013-03-13 2014-06-10 Nimbus Data Systems, Inc. Low-overhead deduplication within a block-based data storage
KR20140141348A (ko) * 2013-05-31 2014-12-10 삼성전자주식회사 호스트 장치와 저장 장치가 연계하여 중복 제거 프로세스를 수행하는 방법 및 스토리지 시스템
US9632720B2 (en) 2013-08-29 2017-04-25 International Business Machines Corporation Data de-duplication
US9898410B2 (en) 2013-09-10 2018-02-20 Intel Corporation Hybrid main memory using a fine-grain level of remapping
US8935446B1 (en) * 2013-09-26 2015-01-13 Emc Corporation Indexing architecture for deduplicated cache system of a storage system
US9792063B2 (en) 2014-01-15 2017-10-17 Intel Corporation Deduplication-based data security
US9760578B2 (en) 2014-07-23 2017-09-12 International Business Machines Corporation Lookup-based data block alignment for data deduplication
US9697079B2 (en) 2015-07-13 2017-07-04 International Business Machines Corporation Protecting data integrity in de-duplicated storage environments in combination with software defined native raid
US10169358B2 (en) * 2015-10-08 2019-01-01 International Business Machines Corporation Data deduplication using a small hash table
US10592150B2 (en) * 2016-02-15 2020-03-17 Hitachi, Ltd. Storage apparatus
US10489288B2 (en) * 2017-01-25 2019-11-26 Samsung Electronics Co., Ltd. Algorithm methodologies for efficient compaction of overprovisioned memory systems

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120150954A1 (en) * 2010-12-09 2012-06-14 Quantum Corporation Adaptive collaborative de-duplication
US20140115258A1 (en) * 2012-10-18 2014-04-24 Oracle International Corporation System and method for managing a deduplication table
CN105740266A (zh) * 2014-12-10 2016-07-06 国际商业机器公司 用于数据去重的方法和设备
CN106055271A (zh) * 2016-05-17 2016-10-26 浪潮(北京)电子信息产业有限公司 一种基于云计算的重复数据去重选择方法及装置
CN106020722A (zh) * 2016-05-19 2016-10-12 浪潮(北京)电子信息产业有限公司 一种云存储系统的重复数据去重方法、装置及系统

Also Published As

Publication number Publication date
US10489288B2 (en) 2019-11-26
KR20180087821A (ko) 2018-08-02
KR102259088B1 (ko) 2021-06-02
CN108345432B (zh) 2023-11-07
US20180210659A1 (en) 2018-07-26

Similar Documents

Publication Publication Date Title
CN106471460B (zh) 用于在存储器系统中分割数据结构的系统及方法
US11507516B2 (en) Adaptive cache partitioning
DE102020007986A1 (de) Proaktiver daten-vorabruf mit angewandter quality-of-service
US9983821B2 (en) Optimized hopscotch multiple hash tables for efficient memory in-line deduplication application
CN107273042B (zh) 重复删除dram系统算法架构的存储器模块及方法
CN1258146C (zh) 动态分配关联资源的系统和方法
CN108345432A (zh) 用于超量配置存储器系统的高效压缩的算法方法
US12111764B2 (en) Forward caching memory systems and methods
US10496543B2 (en) Virtual bucket multiple hash tables for efficient memory in-line deduplication application
EP3529697A1 (en) Mechanisms to improve data locality for distributed gpus
CN106104477A (zh) 用于扩展应用虚拟机的对象存储区的方法和系统
CN109213697A (zh) 智能存储器数据存储或加载方法和装置
CN112052196B (zh) 高速缓存表项管理的方法、对象仓储和计算机可读介质
CN108959113A (zh) 用于闪存感知堆存储器管理的方法和系统
CN103218312A (zh) 文件访问方法及系统
EP3827355B1 (en) Forward caching application programming interface systems and methods
US10528284B2 (en) Method and apparatus for enabling larger memory capacity than physical memory size
CN106775684A (zh) 一种基于新型非易失性存储器的磁盘缓存掉电恢复方法
US11989135B2 (en) Programmable address range engine for larger region sizes
US9747049B2 (en) Computer memory management method and system
US20240345959A1 (en) Resource management
Vijaykumar Enhancing Programmability, Portability, and Performance with Rich Cross-layer Abstractions
Batni et al. A new multi-tiered solid state disk using SLC/MLC combined flash memory
Davoodi et al. Cache-oblivious persistence

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