CN110851074B - 嵌入式参考计数器和特殊数据模式自动检测 - Google Patents

嵌入式参考计数器和特殊数据模式自动检测 Download PDF

Info

Publication number
CN110851074B
CN110851074B CN201910457610.7A CN201910457610A CN110851074B CN 110851074 B CN110851074 B CN 110851074B CN 201910457610 A CN201910457610 A CN 201910457610A CN 110851074 B CN110851074 B CN 110851074B
Authority
CN
China
Prior art keywords
user data
memory space
data
entry
virtual memory
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
Application number
CN201910457610.7A
Other languages
English (en)
Other versions
CN110851074A (zh
Inventor
Q.彭
A.张
郑宏忠
D.蒋
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 CN110851074A publication Critical patent/CN110851074A/zh
Application granted granted Critical
Publication of CN110851074B publication Critical patent/CN110851074B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0745Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in an input/output transactions management context
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1448Management of the data involved in backup or backup restore
    • G06F11/1453Management of the data involved in backup or backup restore using de-duplication of the data
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • G06F12/1018Address translation using page tables, e.g. page table structures involving hashing techniques, e.g. inverted page tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9014Indexing; Data structures therefor; Storage structures hash tables
    • 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
    • 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
    • G06F3/0611Improving I/O performance in relation to response time
    • 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/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • 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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • 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/0664Virtualisation aspects at device level, e.g. emulation of a storage device or system
    • 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/0667Virtualisation aspects at data level, e.g. file, record or object virtualisation
    • 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
    • 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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/466Transaction processing
    • G06F9/467Transactional memory
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • 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)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Databases & Information Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Data Mining & Analysis (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

提供一种包括了虚拟存储器空间、物理存储器空间和存储器管理器的重复数据删除存储器系统。存储器管理器生成被存储在物理存储器空间中的用户数据条目。用户数据条目表示出现在虚拟存储器空间中的预定粒度的唯一用户数据,并且包括第一部分和第二部分。第一部分包括与对应于用户数据条目的唯一用户数据在虚拟存储器空间中被复制的重复次数的数目有关的信息;并且第二部分包括所述唯一用户数据从其能够被重建的唯一用户数据的选定部分。如果唯一用户数据的重复次数的数目大于或等于预定数目,则第一部分可以包括对扩展参考计数器表或特殊数据模式表的索引。

Description

嵌入式参考计数器和特殊数据模式自动检测
相关申请的交叉引用
本申请要求2018年8月21日提交的美国临时申请第62/720,901号的优先权,其公开通过引用的方式全部被合并于此。
技术领域
本公开涉及存储器系统。更具体地,本文公开的主题涉及一种存储器系统,其通过使用被嵌入在存储于物理数据空间中的用户数据中的参考计数器,为在主机系统的虚拟存储器空间中被复制的用户数据,提供存储器系统的物理存储器空间中的用户数据的重复删除(deduplication)。
背景技术
人工智能(AI)、大数据和内存(in-memory)处理使用越来越大的存储器容量。为了满足这种需求,已经开发了内存重复数据删除系统(重复数据删除DRAM)。不幸的是,典型的重复数据删除系统有一些缺点。例如,随着虚拟存储器的大小增加,重复数据删除转换表可能非线性地增长。此外,重复数据删除操作通常导致读取和写入延迟的某些放大,也就是说,单个逻辑读取或写入可能需要多次物理读取或写入,从而降低了性能。
发明内容
示例实施例提供了一种重复数据删除存储器系统,其可包括虚拟存储器空间、物理存储器空间和存储器管理器。存储器管理器可以生成可以被存储在物理存储器空间中的用户数据条目。该用户数据条目可以表示出现在虚拟存储器空间中的预定粒度的唯一用户数据,并且可以包括第一部分和第二部分。该第一部分可以包括与对应于用户数据条目的唯一用户数据在虚拟存储器空间中被复制的重复次数的数目有关的信息;并且第二部分包括所述唯一用户数据从其能够被重建的唯一用户数据的选定部分。在一个实施例中,如果在虚拟存储器空间中被复制的唯一用户数据的重复次数的数目大于或等于预定数目,则用户数据条目的第一部分可以包括对扩展参考计数器表中的条目的索引。在另一实施例中,如果在虚拟存储器空间中被复制的唯一用户数据的重复次数的数目大于或等于预定数目,则用户数据条目的第一部分可包括对特殊数据模式表中的条目的索引。
示例实施例提供了一种重复数据删除存储器系统,其可包括至少一个系统分区,该系统分区可包括虚拟存储器空间、物理存储器空间和存储器管理器。存储器管理器可以生成可以被存储在物理存储器空间中的用户数据条目。用户数据条目可以表示出现在虚拟存储器空间中的预定粒度的唯一用户数据,并且可以包括第一部分和第二部分。该第一部分可以包括与对应于用户数据条目的唯一用户数据在虚拟存储器空间中被复制的重复次数的数目有关的信息;并且第二部分包括所述唯一用户数据从其能够被重建的唯一用户数据的选定部分。在一个实施例中,如果在虚拟存储器空间中被复制的唯一用户数据的重复次数大于或等于预定数目,则用户数据条目的第一部分可以包括对扩展参考计数器表中的条目的索引。在另一实施例中,如果在虚拟存储器空间中被复制的唯一用户数据的重复次数大于或等于预定数目,则用户数据条目的第一部分可包括对特殊数据模式表中的条目的索引。
示例实施例提供了一种存储器系统,其可包括至少一个系统分区,该系统分区可包括虚拟存储器空间、具有第一预定大小和多个存储器区域的物理存储器空间以及存储器管理器。存储器管理器可以生成被存储在物理存储器空间的所选存储器区域中的用户数据条目。该用户数据条目可以表示出现在虚拟存储器空间中的预定粒度的唯一用户数据,并且可以包括第一部分和第二部分。该第一部分可以包括与对应于用户数据条目的唯一用户数据在虚拟存储器空间中被复制的重复次数的数目有关的信息;并且第二部分包括所述唯一用户数据从其能够被重建的唯一用户数据的选定部分。在一个实施例中,如果在虚拟存储器空间中被复制的唯一用户数据的重复次数大于或等于预定数目,则用户数据条目的第一部分可以包括对扩展参考计数器表中的条目的索引。在另一实施例中,如果在虚拟存储器空间中被复制的唯一用户数据的重复次数大于或等于预定数目,则用户数据条目的第一部分可以包括对特殊数据模式表中的条目的索引。
附图说明
在后续章节中,将参考附图中示出的示例性实施例来描述本公开的各方面,其中:
图1描绘了根据本文公开的主题的可缩放重复数据删除存储器系统架构的示例实施例的框图;
图2描绘了根据本文公开的主题的、图1中描绘的系统分区的示例实施例的更详细的框图;
图3描绘了根据本文公开的主题的系统分区的写入数据路径的若干组件的示例实施例的另一个框图;
图4描绘了根据本文公开的主题的、关于图1的重复数据删除存储器系统的虚拟存储器空间和物理存储器空间的关系的示例实施例的一些细节,其中该关系可以被转换表用来将主机系统的虚拟存储器空间转换为系统分区的物理存储器空间;
图5描绘了根据本文公开的主题的示例转换表的转换表条目和示例哈希表的哈希表条目之间的关系;
图6描绘了根据本文公开的主题的由事务管理器提供的示例控制过程的流程图;
图7描绘了根据本文公开的主题的由写入数据引擎管理器提供的示例控制过程的流程图;
图8描绘了根据本文公开的主题的由写入数据引擎提供的示例控制过程的流程图;
图9A描绘了根据本文公开的主题的包含具有嵌入式参考计数器的重建字段的物理线的示例实施例;
图9B描绘了根据本文公开的主题的包括指示符标记的物理线的示例实施例;以及
图9C描绘了根据本文公开的主题的、指示符标志被设置为指示用户数据的重复数目超过重建字段中的嵌入式参考计数器的大小的情况,在这种情况下,重建字段的内容可以包含对于扩展参考计数器表的索引,该扩展参考计算器表包含了被复制的用户数据的扩展计数。
具体实施方式
在以下详细描述中,许多具体细节被阐述以便提供对本公开的透彻理解。可以被理解,然而,所公开的方面可以由本领域技术人员在没有这些具体细节的情况下实践。在其他情况下,众所周知的方法、过程、组件和电路没有被详细描述以免模糊本公开。另外,所描述的方面可以被实现为在任何成像设备或系统中执行低功率3D深度测量,包括但不限于智能电话、用户设备(UE)和/或膝上型计算机。
本说明书中提到“一个实施例”或“实施例”意味着结合该实施例描述的特定特征、结构或特性可以被包括在本公开的至少一个实施例中。因此,贯穿本说明书在各个地方出现的短语“在一个实施例中”或“在实施例中”或“根据一个实施例”(或具有类似导入的其他短语)可能不一定都指代相同的实施例。此外,特定特征、结构或特性可以在一个或多个实施例中以任何合适的方式被组合。在这方面,如本文所使用的,词语“示例性”意味着“用作示例、实例或说明”。本文中描述为“示例性”的任何实施例不应被解释为必须优选或优于其他实施例。此外,特定特征、结构或特性可以在一个或多个实施例中以任何合适的方式被组合。另外,取决于本文讨论的上下文,单数术语可以包括相应的复数形式,并且复数术语可以包括相应的单数形式。类似地,带连字符的术语(例如,“二维(two-dimensional)”,“预定(pre-determined)”,“像素特定(pixel-specific)”等)可以偶尔地可互换地与对应的非连字版本一起被使用(例如,“二维(two dimensional)”,“预定的(predetermined)”,“像素特定的(pixel specific)”,等等);大写条目(例如,“计数器时钟(Counter Clock)”,“行选择(Row Select)”,“像素输出(PIXOUT)”等)可以与对应的非大写版本互换地被使用(例如,“计数器时钟(counter clock)”,“行选择(row select)”,“像素输出(pixout)”等。这种偶尔的可互换的使用不应被视为彼此不一致。
另外,取决于本文讨论的上下文,单数术语可以包括相应的复数形式,并且复数术语可以包括相应的单数形式。还应注意,本文示出和讨论的各种图(包括组件图)仅用于说明目的,并未按比例被绘制。类似地,各种波形和时序框图仅出于说明性目的而被示出。例如,为了清楚起见,一些元件的尺寸可能相对于其他元件被夸大。此外,如果认为合适,参考标号(reference numerals)在图中被重复使用以指示对应和/或类似的元件。
这里使用的术语仅用于描述一些示例实施例的目的,并不旨在限制所要求保护的主题。如这里所使用的,单数形式“一”,“一个”和“该”也旨在包括复数形式,除非上下文另有明确说明。将进一步理解,当在本说明书中被使用时,术语“包括”和/或“包含”指定所述特征、整数、步骤、操作、元件和/或组件的存在,但不排除存在或者添加一个或多个其他特征、整数、步骤、操作、元素,组件和/或其组。这里使用的术语“第一”、“第二”等被用作它们之前的名词的标签,并且不暗示任何类型的排序(例如,空间、时间、逻辑等),除非明确定义如此。此外,相同的参考标号可以在两个或更多个图中被使用来指代具有相同或相似功能的部件、组件、块、电路、单元或模块。然而,这种用法仅为了简化说明和仅为了便于讨论;这并不意味着这些组件或单元的构造或结构细节在所有实施例中是相同的,或者这种共同地被参考的部件/模块是实现本公开的一些示例实施例的唯一方式。
应当理解,当元件或层被称为接通、“连接到”或“耦合到”另一元件或层时,它可以被直接接通、连接或耦合到另一元件或层,或可以存在中间元件或层。相反,当元件被称为“直接接通、“直接连接到”或“直接耦合到”另一元件或层时,不存在中间元件或层。相同的标号始终表示相同的元件。如这里所使用的,术语“和/或”包括一个或多个相关所列项目的任何和所有组合。
如本文所使用的术语“第一”、“第二”等用作它们之前的名词的标签,并且不暗示任何类型的排序(例如,空间、时间、逻辑等),除非明确定义如此。此外,相同的参考标号可以在两个或更多个图中被使用来指代具有相同或相似功能的部件、组件、块、电路、单元或模块。然而,这种用法仅为了简化说明和仅为了便于讨论;这并不意味着这些组件或单元的构造或结构细节在所有实施例中是相同的,或者这种共同地被参考的部件/模块是实现本公开的一些示例实施例的唯一方式。
除非另外定义,否则在本文被使用的所有术语(包括技术和科学术语)具有与本公开所属领域的普通技术人员通常理解的含义相同的含义。将进一步理解的是,诸如在常用词典中被定义的那些术语应该被解释为具有与其在相关领域的上下文中的含义一致的含义,并且将不被理解为理想化或过于正式的含义,除非在此明确地被如此定义。
如本文所使用的,术语“模块”指的是被配置来提供在此描述的与模块有关的功能的软件、固件和/或硬件的任何组合。软件可以被体现为软件包、代码和/或指令集或指令;并且如在此描述的任何实现中使用的术语“硬件”可以包括,例如,单独地或以任何组合地,硬连线电路、可编程的电路、状态机电路和/或存储了由可编程电路执行的指令的固件。模块可以共同地或单独地被体现为形成较大系统的一部分的电路,例如但不限于,集成电路(IC)、片上系统(SoC)等。本公开的各种组件和/或功能块可以被体现为可以包括软件、固件和/或硬件的模块,其提供了与各种组件和/或功能块有关的在此描述的功能。
本公开的主题提供了一种大规模重复数据删除存储器系统体系结构,其具有随着系统的虚拟存储器大小增加而不会非线性地增加的转换表。在一个实施例中,这里公开的存储器系统架构包括多个系统分区,其中每个系统分区内的功能可以被并行化以提供高吞吐量和低等待时间。
在一个实施例中,系统分区可以包括一个或多个事务管理器,其可以被配置为管理存储器系统的虚拟存储器空间,并且这样操作为虚拟存储器空间提供了并发性和一致性。另外,每个事务管理器可以支持多个未完成(outstanding)事务,并且还可以支持多个线程,其中每个线程可以包括多个未完成事务。
系统分区还可以包括一个或多个数据引擎管理器,其可以被配置为管理系统分区的物理存储器空间。数据引擎管理器还可以被配置为管理多个并行数据引擎。多个数据引擎可以为系统分区的多个正交存储器区域执行存储器地址交织,以提供高吞吐量。如本文关于多个存储器区域所使用的,术语“正交”意味着任何数据引擎可以访问系统分区的任何存储器区域。对于写入访问,在数据到达写入数据引擎(WDE)之前,存储器写入冲突由WDEM(写入数据引擎管理器)来管理。在数据到达WDE之后,存储器访问冲突已被消除。对于读取访问,读取数据引擎(RDE)没有存储器访问冲突,可以无限制地访问任何存储器区域。存储器区域管理器管理与应用程序关联的存储器区域,例如不同的重复数据删除存储器区域。因此,物理存储器冲突可以由WDE管理器“正交地”消除。
本公开的存储器系统架构还提供参考计数器(RC),其可以被嵌入存储在存储器系统的物理存储器中的用户数据中,并且可以减少被存储器系统使用的存储器的量。在一个实施例中,参考计数器提供被嵌入了参考计数器的数据在存储器系统的虚拟存储器空间中被复制的次数的指示。在一个实施例中,对于64字节的用户数据粒度,在用户数据中嵌入参考计数器可以减少大约6%的系统存储器需求。在另一实施例中,对于32字节的用户数据粒度,在用户数据中嵌入参考计数器可以减少大约12%的系统存储器需求。
在其他的实施例中,用户数据可以在存储器系统的虚拟存储器空间中被复制的次数等于或大于预定次数,用于参考计数器的字段可以被替换为一个为扩展参考计数器表或特殊数据模式表提供索引的字段。在又一个实施例中,如果用户数据在存储器系统的虚拟存储器空间中被复制的次数等于或大于预定次数,则被存储器系统使用的转换表可以包括具有到特殊数据模式表的指针或索引的条目,从而减少延时并增加吞吐量。通过在转换表中放置指针或索引,在转换表被访问时,在虚拟存储器空间中被高度复制的用户数据可以被自动检测。另外,通过由转换表的这种配置提供的自动检测,这种被高度复制的用户数据可以被更容易地分析。
图1描绘了根据本文公开的主题的可缩放重复数据删除存储器系统架构100的示例实施例的方框图。系统架构100可以包括一个或多个主机设备或系统101、主机接口102、前端调度器103和多个系统分区200A-200K。主机系统101可以被通信地耦合到主机接口102,并且主机接口102可以被通信地耦合到前端调度器103。主机接口102可以包括一个或多个直接存储器访问(DMA)设备DMA0-DMAH-1。前端调度器103可以被通信地耦合到多个系统分区200A-200K中的每一个。主机系统101、主机接口102和前端调度器103以众所周知的方式操作。
系统分区200可以包括写入数据路径201和读取数据路径202。写入数据路径201可以包括事务管理器(TM)203、写入数据引擎(WDE)管理器(WDEM)204、一个或多个存储器区域管理器(MRM)207和一个或多个存储器区域(MR)209。在一个实施例中,写入数据路径201可以包括TM 203。在一个实施例中,每个分区有一个TM 203和一个WDEM 204。在图1中示出的MR 209包括存储器控制器(MEM CNTRLR)和双列直插式存储器模块(DIMM)。其他实施例可以包括用于MR 209的等效组件。MR 209的存储器可以是但不限于动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、易失性存储器和/或非易失性存储器。
与写入数据路径201相比,读取数据路径202可以相对简单,因为没有与读取数据路径202相关联的数据一致性或数据并发性问题。如图1和图2所示,读取数据路径202可以包括一个或多个MR 209、一个或多个MRM 207(图1)、读取数据引擎(RDE)管理器(RDEM)212和一个或多个RDE 213。从主机系统101接收的数据读取请求可以涉及转换表(图4),以及对适当的存储器区域的访问,该访问通过读取数据路径202响应于数据读取访问提供所请求的读取数据。
图2描绘了根据本文公开的主题的图1中描绘的系统分区200的示例实施例的更详细的框图。系统分区200的体系结构可以是可并行化的,以便多个事务和多个线程(及其多个事务)可以以提供高吞吐量的方式被处理。
系统分区200的写入数据路径201可以包括TM 203、WDEM 204、一个或多个WDE 205(WDE 0-WDE N-1)、存储器区域仲裁器206、MRM 207(MRM 0-MRM P-1)、互连208以及一个或多个MR 209(MR 0-MR P-1)。系统分区200的读取数据路径202可以包括MR 209、互连208、存储器区域仲裁器206、RDEM 212和一个或多个读取数据引擎(RDE)213。系统分区200还可以包括转换表(TT)管理器(TT MGR)210和TT 211存储器(TT MEM)。每个系统分区202A-202K(图1)可以被类似地配置。
诸如存储器区域仲裁器206和互连208的组件以众所周知的方式操作,这里将不再被详细描述。另外,存储器区域仲裁器206已在图2中示出,其在写入数据路径201和读取数据路径202中都是由虚线标识,然而,应当理解,每个相应的路径实际上可以包括与另一个存储器区域仲裁器通信和协调的单独的存储器区域仲裁器。应该被注意,读取数据路径202,如图1所示,“穿过”MRM 207,但不是如图2所示,因为RDEM 212仅需要读取转换表以获得物理存储器位置的物理线路标识(PLID),然后RDE 213读取由PLID索引的存储器位置。另外,在图1和图2中被描绘的组件可以被体现为包括了软件、固件和/或硬件的模块,其提供了与各种组件和/或功能块连接的在此描述的功能。
图3描绘了根据本文公开的主题的系统分区200的写入数据路径201的若干组件的示例实施例的另一框图。更具体地,图3中描绘的系统分区200的组件可以包括:TM 203、WDEM 204、WDE 205、互连208和MR 209。另外,写入数据路径201可以包括写入数据缓冲控制器214。
参见图1-3,TM 203可以包括TM控制器215和一个或多个事务表216。事务表216可以被用于跟踪在主机系统101和存储器209之间发生的未完成的写入事务。WDEM 204可以包括未完成桶(bucket)编号(OBN)表217、命令(CMD)调度器218、溢出存储器无效(OVMI)管理器219和一个或多个命令队列(CQ)220(CQ 0-CQ N-1)。WDE 205可以包括一个或多个WDE(WDE 0-WDE N-1)。写入数据缓冲控制器214可以包括一个或多个写入数据缓冲器221。
TM 203可以被配置来管理主机系统101的虚拟存储器空间的数据一致性和数据并发性。在一个实施例中,TM 203可以被配置为支持多个未完成的写入事务和多个线程以提供高数据吞吐量。在一个实施例中,事务表216可以包含未完成的写入事务的列表。在另一个实施例中,事务表216可以包含多个线程的列表,每个线程具有多个未完成的写入事务。当从主机系统101接收到数据写入请求时,TM 203可以分配事务标识(ID)号给数据写入请求,并且事务ID号和其他元数据可以被输入到所选定的事务表216中。与数据写入请求相关联的数据可以被存储在写入数据缓冲器221中。事务ID号和与写入数据缓冲器221中的数据有关的信息可以被发送到下游,以供写入数据路径201进一步处理。TM 203还可以使用TM表216中的一个或多个来在主机系统101和虚拟存储器空间中按顺序保持发布的存储器写入的完成。
图4描绘了根据本文公开的主题的关于转换表400的示例实施例的一些细节,该转换表400可以被TM 203和RDEM 212使用来跟踪系统分区200的物理存储器空间中的数据位置。转换表211和400的特定示例实施例用于1TB(即,240字节)的虚拟存储器空间,并且由VA_WIDTH指示。重复数据删除粒度(数据粒度)是64B(即26位)。转换表400的物理存储器空间是256GB(即,238字节),并由PHY_SPACE表示。所示的转换表索引TT_IDX具有34位。由系统分区200提供的分区使得转换表211的索引保持在32位内,随着被存储在MR 209中的用户数据的大小增加,转换表211的大小不会显著地增加。在备选实施例中,虚拟存储器大小、物理存储器大小和重复数据删除(数据)粒度可以与图4中描绘的不同。
图5描绘了根据本文公开的主题的示例转换表500的转换表条目与示例哈希表501的哈希表条目之间的关系。参考图2和5,在一个实施例中,转换表500可以被存储在TT MEM211中,并且哈希表501可以被存储在MR 209中的哈希表/参考计数器(HTRC)MEM中。从主机系统101接收的逻辑地址502包括转换表索引(图4,TT_IDX)和粒度。转换表索引提供了转换表500中的物理线路标识(PLID)条目的索引。PLID条目的格式503包括了到哈希表501的行(即,哈希桶)索引(R_INDX)和列索引(COL_INDX)。包含在哈希表501的特定行和特定列中的内容是物理线(PL),其可以是具有2g粒度的特定用户数据。例如,如果g等于6,则PL的粒度将为64字节。
在一个实施例中,哈希表索引(即,行索引和列索引)可以通过对用户数据执行的哈希函数h来生成。因为哈希表条目是由对用户数据C执行的哈希函数h生成的,所以仅用户数据的一部分C″需要被存储在PL中。换句话说,如果C表示粒度为2g的用户数据,并且C″表示需要被存储在哈希表中的用户数据C的一部分,则C′表示可以使用哈希函数h从C″被重建的用户数据C的一部分。那是,
C={C′,C″}={f(C″),C″}. (1)
PL中对应于C′的空间或字段可以被用于其他目的,例如存储与用户数据C在主机系统101的虚拟存储器中被复制的次数有关的参考计数器(RC)信息。对应于C′的PL中的空间或字段可以被称为重建字段。
图6描绘了根据本文公开的主题的由事务管理器TM 203提供的示例控制过程600的流程图。在601处,TM 203可以处于空闲循环中,以等待从主机系统101接收数据写入命令,或者从WDEM 204接收响应。在602处,如果从主机系统101接收到数据写入命令,则流程继续到603处,在此处事务表216被查找。在604处,数据写入命令被分配事务ID并被插入到适当的事务表216中。在605处,写入数据被录入到写入数据缓冲器221。在606处,转换表211被读取以获得旧的物理线路识别(PLID)信息,并且流程返回到601处。
如果在602处数据写入命令未被接收到,则流程继续到607处并在此处确定来自WDEM 204的响应是否已经被接收到。如果不是,则流程返回到601处。如果是,则流程继续到608处并在此处事务表216被更新。在609处,转换表211被更新。然后流程返回到601处。
WDEM 204可以被配置为通过管理WDE 205来管理系统分区200内的物理存储器空间的数据一致性和数据并发性。在一个实施例中,WDEM 204可以使用命令调度器218和命令队列220(即,CQ 0-CQ N-1)来为不同的WDE 205维护多个未完成的写入和内部读取/写入事务/线程。WDEM 204操作以通过将写入事务发送到相同的哈希桶到相同的命令队列CQ来确保到相同哈希桶的写入事务按顺序地被执行。WDEM 204还可以合并部分高速缓存行写入并对MR 209中的溢出存储器(OV MEM)区域执行存储器管理。
WDEM 204可以包括未完成的桶号(OBN)表217,其可以被用于跟踪哈希表桶号和未完成的写入命令的状态。命令调度器218可以通过在选定的CQ 220中存储写入命令来将命令分配给不同的WDE 205。WDEM 204还可以包括OVM无效表(未示出)。
图7描绘了根据本文公开的主题的由WDEM 204提供的示例控制过程700的流程图。控制过程(700)在701处开始。在702处,确定是否已经从事务管理器TM 203接收到具有写入数据缓冲器ID和旧PLID信息的写入数据命令。如果是,则流程继续到703处并在此处写入数据表被读取。在704处,如果从写入数据缓冲器221读取的写入数据被标记为特殊数据模式,则流程继续到706处以向事务管理器203发送响应。如果在705处,写入数据不是704处的特殊数据,则未完成的命令缓冲器OCB表被更新,并且在707处,操作码被添加到适当的命令队列CQ 220,并且在708处,过程结束。如果在709处,响应从WDE 205被接收到,则流程继续到710处,在此处未完成的命令缓冲器(OCB)表被更新。在711处,更新的状态被发送到事务管理器TM 203,并且在708处,过程结束。
每个WDE 205从WDEM 204中的对应CQ 220接收命令(操作码)。WDE 205被配置为执行重复数据删除决定和其他相关计算。WDE 205可以并行运行以提高系统分区200的总吞吐量。每个WDE 205与每个存储器区域中的MRM 207协调以交织存储器访问。
图8描绘了根据本文公开的主题的由WDE 205提供的示例控制过程800的流程图。在801处,WDE 205可以处于等待从WDEM 204接收命令的空闲循环中。在802处,确定是否该命令是将用户数据的签名与哈希桶中的其他用户数据签名进行比较,或者是否该命令是递减RC。如果命令(即,操作码)是要递减RC,则流程继续到803处,在此处用于用户数据的RC被递减。流程然后继续到804处,在此处请求的状态被返回到WDEM 204,然后返回到801处。
如果在802处,从WDEM 204接收的请求是写入用户数据(即,物理线路),则流程继续到805处以将用户数据的签名与哈希桶中的其他用户数据签名进行比较,并进一步比较已经被存储在哈希表中的用户数据。在806处,如果存在匹配,则流程继续到807处,在此处用于用户数据的RC被递增。流程继续到804处,在此处请求的状态被报告回WDEM 204。如果在806处没有匹配,则流程继续到808处,在此处如果没有找到先前的用户数据,则HTRC管理器被调用以保存用户数据至哈希表中,并将RC计数器等于“1”;或者,如果哈希桶已满或发生哈希冲突,则调用OVM管理器以存储用户数据至溢出区域中。流程继续到804处以向WDEM204报告请求的状态。
MRM 207管理针对WDE 205的MR 209的存储器访问。MRM 207包括哈希表/参考计数器管理器(HTRC MGR)222、溢出存储器管理器(OVM MGR)223和签名管理器(SIG MGR)224。每个MRM 207从用于HTRC MGR222(HR R/W)、OVM MGR 223(OVM R/W)和SIG MGR 224(SIG R/W)的每个WDE 205接收控制和数据信息。
图9A描绘了根据本文公开的主题的包含重建字段901的PL 900的示例实施例,该重建字段901具有嵌入式参考计数器(RC)。在一个实施例中,重建字段901包括具有相对小尺寸的嵌入式RC,因为在虚拟存储器空间中用户数据可以被复制的次数可以很小。对于这样的系统情况,嵌入式RC可以被配置为具有r-1比特大小的基本RC。
在另一实施例中,其中用户数据在主机系统101的虚拟存储器空间中可以被复制的次数可以超过PL的重建字段中的嵌入式RC的大小,重建的字段可以包括到扩展的RC表条目的索引。在又一个实施例中,指示符标志,例如PL的选定位,可用于指示虚拟存储器空间中的用户数据的重复次数是否超过嵌入式RC的大小。
图9B描绘了根据本文公开的主题的包括指示符标记911的PL 910的示例实施例。如图9B中所示,指示符标志911被设置为指示用户数据的重复次数等于或小于重建字段912中的嵌入式RC的大小。因此,重建字段912的内容将指示在主机系统101的虚拟存储器空间中用户数据的重复次数。
图9C描绘了指示符标志911被设置为指示用户数据的重复次数超过重建字段912中的嵌入式RC的大小的情况,在这种情况下,重建字段912的内容可以包含对扩展的RC表913的索引,该表包含了被复制的用户数据的扩展计数。或者,重建字段912可以包含对特殊数据模式表914的索引或指针,该特殊数据模式表914可以包含例如被高度复制的数据。在一个实施例中,为了减少与这种用户数据相关的延时时间,如图8所示,对于被高度复制的用户数据,转换表还可以包括作为对特殊数据模式表914的索引或指针的PLID。也就是说,通过在转换表中放置指针或索引,在转换表被访问时在虚拟存储器空间中被高度复制的用户数据可以被自动检测。
MR 209各自包括元数据存储器区域和多个数据存储器区域。如果系统分区200被配置为重复数据删除存储器,则元数据存储器区域包括转换表211。数据存储器区域209包括哈希表/参考计数器(HTRC)存储器(HTRC MEM)、签名存储器(SG MEM)和溢出存储器(OVMEM)。
从不同虚拟地址向MR 209中的相同物理存储器区域的写入由MRM 207来管理。HTRC和SG管理器222执行重复数据删除功能并根据哈希表行(也称为桶)和列位置来计算存储器位置。从不同虚拟地址对相同HTRC桶的写入可以以与来自主机系统101的原始排序不同的排序到达HTRC桶。一致性由WDEM 204来管理。如果写入数据,例如,写入数据A和写入数据B,到达相同的PLID(A==B),那么RC可以简单地被递增。如果来自不同虚拟地址的写入数据不相等,具有相同的桶号但不同的列(也称为路)号,则它们可以被存储在同一桶中,但被不同的存储在不同的路中。如果桶只剩下一个条目,则A或B将被存储到最后一个条目中,而另一个可以被存储到溢出区域中。如果写入数据A和写入数据B不同,但具有相同的哈希桶和行号,则第二个将被存储到溢出区域中。
如本领域技术人员将认识到的,本文描述的创新概念可以在广泛的应用中被修改和变化。因此,所要求保护的主题的范围不应限于上面讨论的任何特定示例性教导,而是由所附权利要求限定。

Claims (17)

1.一种重复数据删除存储器系统,包括:
虚拟存储器空间;
物理存储器空间;
存储器管理器电路,其控制被存储在物理存储器空间中的用户数据条目的生成,所述用户数据条目表示出现在虚拟存储器空间中的预定粒度的用户数据,所述用户数据条目包括第一部分和第二部分,所述第一部分包括与对应于用户数据条目的用户数据在虚拟存储器空间中被复制的重复次数的数目有关的信息,并且第二部分包括所述用户数据的选定部分,其中用户数据从该选定部分被重建;以及
事务管理器电路,其从主机系统接收数据写入请求,该事务管理器电路使用包括物理线路标识(PLID)条目的转换表;
其中,PLID条目包括用于在物理存储器中的位置处的用户数据条目的到哈希表的行索引和列索引;
其中,行索引和列索引通过对用户数据执行的哈希函数生成;以及
其中,用户数据条目的第二部分通过对用户数据执行的哈希函数生成,并且用户条目数据的第一部分包括使用哈希函数从第二部分重建的重建字段。
2.如权利要求1所述的重复数据删除存储器系统,其中基于所述用户数据在虚拟存储器空间中被复制的次数的数目大于或者等于预定数目,用户数据条目的第一部分包括到扩展参考计数器表中的条目的索引。
3.如权利要求1所述的重复数据删除存储器系统,其中基于所述用户数据在虚拟存储器空间中被复制的次数的数目大于或者等于预定数目,用户数据条目的第一部分包括到特殊数据模式表中的条目的索引。
4.如权利要求1所述的重复数据删除存储器系统,其中事务管理器电路使用事务表基于写入数据引擎管理器来维护主机系统的虚拟存储器空间的数据一致性和数据并发性并且维护物理存储器空间的数据一致性和数据并发性。
5.如权利要求4所述的重复数据删除存储器系统,
其中,基于虚拟存储器空间中的用户数据的重复的数目等于或大于预定数目,PLID条目包括到特殊数据模式表中的条目的索引。
6.如权利要求5所述的重复数据删除存储器系统,其中所述物理存储器空间包括第一预定大小;所述虚拟存储器空间包括大于或等于所述物理存储器空间的第一预定大小的第二预定大小,以及
其中,所述转换表包括对应于虚拟存储器空间的第二预定大小的第一预定数目的比特、对应于物理存储器空间的第一预定大小的第二预定数目的比特和用于数据粒度的第三预定数目的比特,所述第二预定数目的比特和第三预定数目的比特是第一预定数目的比特的子集。
7.一种重复数据删除存储器系统,包括:
至少一个系统分区,包括:
虚拟存储器空间;以及
物理存储器空间;
其中,所述系统分区控制被存储在物理存储器空间中的用户数据条目的生成,所述用户数据条目表示出现在虚拟存储器空间中的预定粒度的用户数据,所述用户数据条目包括第一部分和第二部分,所述第一部分包括与对应于用户数据条目的用户数据在虚拟存储器空间中被复制的重复次数的数目有关的信息,并且第二部分包括所述用户数据的选定部分,其中用户数据从该选定部分被重建;
其中,所述系统分区使用包括物理线路标识(PLID)条目的转换表;
其中,PLID条目包括用于在物理存储器中的位置处的用户数据条目的到哈希表的行索引和列索引;
其中,行索引和列索引通过对用户数据执行的哈希函数生成;以及
其中,用户数据条目的第二部分通过对用户数据执行的哈希函数生成,并且用户条目数据的第一部分包括使用哈希函数从第二部分重建的重建字段。
8.如权利要求7所述的重复数据删除存储器系统,其中基于所述用户数据在虚拟存储器空间中被复制的次数的数目大于或者等于预定数目,用户数据条目的第一部分包括到扩展参考计数器表中的条目的索引。
9.如权利要求7所述的重复数据删除存储器系统,其中基于所述用户数据在虚拟存储器空间中被复制的次数的数目大于或者等于预定数目,用户数据条目的第一部分包括到特殊数据模式表中的条目的索引。
10.如权利要求7所述的重复数据删除存储器系统,其中,所述至少一个系统分区还使用事务表基于写入数据引擎管理器来维护主机系统的虚拟存储器空间的数据一致性和数据并发性并且维护物理存储器空间的数据一致性和数据并发性。
11.如权利要求10所述的重复数据删除存储器系统,其中,基于虚拟存储器空间中的用户数据的重复的次数等于或大于预定数目,转换表包括条目,所述条目是到特殊数据模式表中的条目的索引。
12.如权利要求11所述的重复数据删除存储器系统,其中所述物理存储器空间包括第一预定大小,所述虚拟存储器空间包括大于或等于所述物理存储器空间的第一预定大小的第二预定大小,以及
其中,所述转换表包括对应于虚拟存储器空间的第二预定大小的第一预定数目的比特、对应于物理存储器空间的第一预定大小的第二预定数目的比特和用于数据粒度的第三预定数目的比特,所述第二预定数目的比特和第三预定数目的比特是第一预定数目的比特的子集。
13.一种存储器系统,包括:
至少一个系统分区包括:
虚拟存储器空间;以及
物理存储器空间,其包括第一预定大小和多个存储器区域;
其中,所述系统分区控制被存储在物理存储器空间的选定存储器区域中的用户数据条目的生成,所述用户数据条目表示出现在虚拟存储器空间中的预定粒度的用户数据,所述用户数据条目包括第一部分和第二部分,所述第一部分包括与对应于用户数据条目的用户数据在虚拟存储器空间中被复制的次数的数目有关的信息,并且所述第二部分包括所述用户数据的选定部分,其中用户数据从该选定部分被重建;
其中,所述系统分区使用包括物理线路标识(PLID)条目的转换表;
其中,PLID条目包括用于在物理存储器中的位置处的用户数据条目的到哈希表的行索引和列索引;
其中,行索引和列索引通过对用户数据执行的哈希函数生成;以及
其中,用户数据条目的第二部分通过对用户数据执行的哈希函数生成,并且用户条目数据的第一部分包括使用哈希函数从第二部分重建的重建字段。
14.如权利要求13所述的存储器系统,其中,基于用户数据在虚拟存储器空间中被复制的次数的数目大于或者等于预定数目,用户数据条目的第一部分包括到扩展参考计数器表中的条目的索引。
15.如权利要求13所述的存储器系统,其中,基于用户数据在虚拟存储器空间中被复制的次数的数目大于或者等于预定数目,用户数据条目的第一部分包括到特殊数据模式表中的条目的索引。
16.如权利要求13所述的存储器系统,其中,所述至少一个系统分区还使用事务表基于写入数据引擎管理器来维护主机系统的虚拟存储器空间的数据一致性和数据并发性并且维护物理存储器空间的数据一致性和数据并发性。
17.如权利要求16所述的存储器系统,其中,基于虚拟存储器空间中的用户数据的重复的数目等于或大于预定数目,转换表包括条目,所述条目是到特殊数据模式表中的条目的索引。
CN201910457610.7A 2018-08-21 2019-05-29 嵌入式参考计数器和特殊数据模式自动检测 Active CN110851074B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201862720901P 2018-08-21 2018-08-21
US62/720,901 2018-08-21
US16/180,002 US11079954B2 (en) 2018-08-21 2018-11-04 Embedded reference counter and special data pattern auto-detect
US16/180,002 2018-11-04

Publications (2)

Publication Number Publication Date
CN110851074A CN110851074A (zh) 2020-02-28
CN110851074B true CN110851074B (zh) 2022-03-15

Family

ID=69586144

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910457610.7A Active CN110851074B (zh) 2018-08-21 2019-05-29 嵌入式参考计数器和特殊数据模式自动检测

Country Status (3)

Country Link
US (1) US11079954B2 (zh)
KR (1) KR102505036B1 (zh)
CN (1) CN110851074B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11061618B1 (en) * 2020-02-25 2021-07-13 EMC IP Holding Company LLC Disk array enclosure configured to determine metadata page location based on metadata identifier
US11775467B2 (en) * 2021-01-14 2023-10-03 Nxp Usa, Inc. System and method for ordering transactions in system-on-chips
US12001529B1 (en) * 2021-11-05 2024-06-04 Validate Me LLC Counting machine for manufacturing and validating event-relevant identities via an ensemble network
CN116719483B (zh) * 2023-08-09 2023-10-27 成都泛联智存科技有限公司 数据去重方法、装置、存储设备和计算机可读存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9442941B1 (en) * 2014-03-28 2016-09-13 Emc Corporation Data structure for hash digest metadata component
CN107239230A (zh) * 2016-03-29 2017-10-10 三星电子株式会社 用于高效存储器内嵌去重应用的最优化的跳房子多散列表
CN107402889A (zh) * 2016-05-20 2017-11-28 三星电子株式会社 检索数据方法、存储数据方法和重复数据删除模块

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7739309B2 (en) * 2004-09-30 2010-06-15 Microsoft Corporation Method, system, and computer-readable medium for merging data from multiple data sources for use in an electronic document
US8768895B2 (en) * 2007-04-11 2014-07-01 Emc Corporation Subsegmenting for efficient storage, resemblance determination, and transmission
US20090319772A1 (en) * 2008-04-25 2009-12-24 Netapp, Inc. In-line content based security for data at rest in a network storage system
US8126905B2 (en) * 2008-09-23 2012-02-28 Teradata Us, Inc. System, method, and computer-readable medium for optimizing the performance of outer joins
US8510275B2 (en) 2009-09-21 2013-08-13 Dell Products L.P. File aware block level deduplication
US8204862B1 (en) * 2009-10-02 2012-06-19 Symantec Corporation Systems and methods for restoring deduplicated data
US8352447B2 (en) * 2011-03-01 2013-01-08 Hitachi, Ltd. Method and apparatus to align and deduplicate objects
US20180107591A1 (en) * 2011-04-06 2018-04-19 P4tents1, LLC System, method and computer program product for fetching data between an execution of a plurality of threads
US8462781B2 (en) * 2011-04-06 2013-06-11 Anue Systems, Inc. Systems and methods for in-line removal of duplicate network packets
US8660997B2 (en) 2011-08-24 2014-02-25 International Business Machines Corporation File system object-based deduplication
US8950009B2 (en) * 2012-03-30 2015-02-03 Commvault Systems, Inc. Information management of data associated with multiple cloud services
AU2013202553B2 (en) * 2012-03-30 2015-10-01 Commvault Systems, Inc. Information management of mobile device data
US9678863B2 (en) * 2012-06-12 2017-06-13 Sandisk Technologies, Llc Hybrid checkpointed memory
WO2014037767A1 (en) * 2012-09-05 2014-03-13 Indian Institute Of Technology, Kharagpur Multi-level inline data deduplication
US20150006475A1 (en) * 2013-06-26 2015-01-01 Katherine H. Guo Data deduplication in a file system
US10055422B1 (en) * 2013-12-17 2018-08-21 Emc Corporation De-duplicating results of queries of multiple data repositories
US10635316B2 (en) * 2014-03-08 2020-04-28 Diamanti, Inc. Methods and systems for data storage using solid state drives
US9195674B1 (en) * 2014-09-24 2015-11-24 Logzilla Corporation Systems and methods for large-scale system log analysis, deduplication and management
US10248656B2 (en) 2015-06-18 2019-04-02 International Business Machines Corporation Removal of reference information for storage blocks in a deduplication system
US10496543B2 (en) * 2016-03-31 2019-12-03 Samsung Electronics Co., Ltd. Virtual bucket multiple hash tables for efficient memory in-line deduplication application
US9966152B2 (en) * 2016-03-31 2018-05-08 Samsung Electronics Co., Ltd. Dedupe DRAM system algorithm architecture
US10282124B2 (en) * 2016-06-23 2019-05-07 International Business Machines Corporation Opportunistic handling of freed data in data de-duplication
US10268413B2 (en) * 2017-01-27 2019-04-23 Samsung Electronics Co., Ltd. Overflow region memory management
US10678778B1 (en) * 2017-10-19 2020-06-09 EMC IP Holding Company LLC Date deduplication acceleration
US10366011B1 (en) * 2018-05-03 2019-07-30 EMC IP Holding Company LLC Content-based deduplicated storage having multilevel data cache
US11308036B2 (en) * 2019-04-11 2022-04-19 EMC IP Holding Company LLC Selection of digest hash function for different data sets

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9442941B1 (en) * 2014-03-28 2016-09-13 Emc Corporation Data structure for hash digest metadata component
CN107239230A (zh) * 2016-03-29 2017-10-10 三星电子株式会社 用于高效存储器内嵌去重应用的最优化的跳房子多散列表
CN107402889A (zh) * 2016-05-20 2017-11-28 三星电子株式会社 检索数据方法、存储数据方法和重复数据删除模块

Also Published As

Publication number Publication date
US20200065016A1 (en) 2020-02-27
KR20200021867A (ko) 2020-03-02
US11079954B2 (en) 2021-08-03
KR102505036B1 (ko) 2023-03-03
CN110851074A (zh) 2020-02-28

Similar Documents

Publication Publication Date Title
CN110851074B (zh) 嵌入式参考计数器和特殊数据模式自动检测
CN110851076B (zh) 存储器系统和删除重复存储器系统
US11340794B2 (en) Multiprocessor system with independent direct access to bulk solid state memory resources
US10318434B2 (en) Optimized hopscotch multiple hash tables for efficient memory in-line deduplication application
US7496711B2 (en) Multi-level memory architecture with data prioritization
CN107844267B (zh) 缓冲区分配和存储器管理
CN105917319B (zh) 存储器单元和方法
JP2017151982A (ja) データストレージサブシステムにおけるキャッシングのための方法およびシステム
US11030088B2 (en) Pseudo main memory system
US11748034B2 (en) Signalling for heterogeneous memory systems
CN114780025B (zh) 软件raid请求处理方法、控制器及raid存储系统
US20230125792A1 (en) Error recovery for non-volatile memory modules
US11137941B2 (en) Command replay for non-volatile dual inline memory modules
US20220405253A1 (en) Mechanism for managing a migration of data with mapped page and dirty page bitmap sections

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