CN110851076A - 存储器系统和删除重复存储器系统 - Google Patents

存储器系统和删除重复存储器系统 Download PDF

Info

Publication number
CN110851076A
CN110851076A CN201910764183.7A CN201910764183A CN110851076A CN 110851076 A CN110851076 A CN 110851076A CN 201910764183 A CN201910764183 A CN 201910764183A CN 110851076 A CN110851076 A CN 110851076A
Authority
CN
China
Prior art keywords
data
write
memory
bits
manager
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.)
Pending
Application number
CN201910764183.7A
Other languages
English (en)
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
Application filed by Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of CN110851076A publication Critical patent/CN110851076A/zh
Pending legal-status Critical Current

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/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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/174Redundancy elimination performed by the file system
    • 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/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
    • 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/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/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/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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
    • 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
    • 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)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Hardware Redundancy (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

一种存储器系统针对在主机系统的虚拟存储器空间中重复的用户数据对系统的物理存储器空间中的用户数据提供删除重复。事务管理器使用事务表来为虚拟存储器空间维护数据相干性及数据并发性。写入数据引擎管理器使用未完成桶编号及命令队列来为物理存储器空间维护数据相干性及数据并发性。写入数据引擎管理器从事务管理器接收数据写入请求,并将对应的写入命令发送到所选命令队列。写入数据引擎通过以下来对命令队列中的写入命令作出响应:如果数据未在虚拟存储器空间中重复,则将数据存储在溢出存储器区中;或者如果数据在虚拟存储器空间中重复,则使数据的参考计数器递增。也提供一种删除重复存储器系统。

Description

存储器系统和删除重复存储器系统
技术领域
本文所公开的主题涉及存储器系统。更具体来说,本文所公开的主题涉及一种针对在主机系统的虚拟存储器空间中重复的用户数据对系统的物理存储器空间中的用户数据提供删除重复的存储器系统。
背景技术
人工智能(Artificial Intelligence,AI)、大数据及存储器内处理使用越来越大的存储器容量。为满足此种需求,已开发出存储器内删除重复系统(删除重复动态随机存取存储器(dedupe-DRAM))。遗憾地,典型的删除重复系统具有一些缺点。举例来说,删除重复转换表可随着虚拟存储器的大小增长而非线性地增长。另外,删除重复操作通常导致对读取及写入等待时间的某种放大,也就是说,单次逻辑读取或写入可需要多次物理读取或写入,从而降低性能。
发明内容
示例性实施例提供一种存储器系统,其可包括至少一个系统分区(systempartition),所述至少一个系统分区可包括物理存储器、至少一个事务管理器(transaction manager,TM)、至少一个写入数据引擎管理器(write data enginemanager,WDEM)及写入数据引擎(write data engine,WDE)。所述物理存储器可具有为第一预定大小的物理存储器空间。所述至少一个TM可从主机系统接收数据写入请求及对应的数据,且所述至少一个TM使用事务表来为所述主机系统的虚拟存储器空间维护数据相干性及数据一致性。所述至少一个WDEM可包括至少一个命令队列,且所述WDEM可使用未完成桶编号(outstanding bucket number,OBN)及命令队列来为所述物理存储器空间维护数据相干性及数据一致性。所述WDEM可从所述TM接收所述数据写入请求并将与每一数据写入请求对应的写入命令发送到所述至少一个命令队列中的所选命令队列。所述WDE可对应于每一命令队列。所述WDE可通过以下来对存储在与所述WDE对应的所述命令队列中的写入命令作出响应:如果与数据写入请求对应的所述数据未在所述虚拟存储器空间中重复,则将所述数据存储在溢出存储器区中;或者如果与数据写入请求对应的所述数据在所述虚拟存储器空间中重复,则使所述数据的参考计数器递增。在一个实施例中,所述虚拟存储器空间可包括第二预定大小,所述第二预定大小大于或等于所述物理存储器空间的所述第一预定大小,且所述存储器系统可进一步包括转换表,所述转换表可包括与所述虚拟存储器空间的所述第二预定大小对应的第一预定数目个位、与所述物理存储器的所述第一预定大小对应的第二预定数目个位及数据粒度的第三预定数目个位,其中所述第二预定数目个位及所述第三预定数目个位可为所述第一预定数目个位的子集。
示例性实施例提供一种存储器系统,其可包括多个系统分区,其中至少一个系统分区可包括物理存储器、至少一个事务管理器(TM)、至少一个写入数据引擎管理器(WDEM)、写入数据引擎(WDE)及存储器区管理器(memory regional manager,MRM)。所述物理存储器可具有为第一预定大小的物理存储器空间且可包括多个存储器区。所述至少一个TM可从主机系统接收数据写入请求及对应的数据,且所述至少一个TM可使用事务表来为所述主机系统的虚拟存储器空间维护数据相干性及数据一致性。所述虚拟存储器空间可包括第二预定大小,所述第二预定大小大于或等于所述物理存储器空间的所述第一预定大小。所述至少一个TM可使用转换表来将所述主机系统的所述虚拟存储器空间转换成所述至少一个系统分区的所述物理存储器空间。所述至少一个WDEM可包括至少一个命令队列,且所述WDEM可使用未完成桶编号(OBN)及命令队列来为所述物理存储器空间维护数据相干性及数据一致性。所述WDEM可从所述TM接收所述数据写入请求并将与每一数据写入请求对应的写入命令发送到所述至少一个命令队列中的所选命令队列。所述WDE可对应于每一命令队列,且所述WDE可通过以下来对存储在与所WDE对应的所述命令队列中的写入命令作出响应:如果与所述数据写入请求对应的所述数据未在所述虚拟存储器空间中重复,则将所述数据存储在溢出区中;或者如果与数据写入请求对应的所述数据在所述虚拟存储器空间中重复,则使所述数据的参考计数器递增。MRM可对应于所述物理存储器的每一存储器区,且MRM可包括存储在所述存储器区中的数据的参考计数器存储空间且可控制对与所述MRM对应的所述存储器区的WDE存取。在一个实施例中,所述转换表可包括与所述虚拟存储器空间的所述第二预定大小对应的第一预定数目个位、与所述物理存储器的所述第一预定大小对应的第二预定数目个位及数据粒度的第三预定数目个位,其中所述第二预定数目个位及所述第三预定数目个位可为所述第一预定数目个位的子集。
示例性实施例提供一种删除重复存储器系统,其可包括多个系统分区,其中至少一个系统分区可包括物理存储器、至少一个事务管理器(TM)、至少一个写入数据引擎管理器(WDEM)及写入数据引擎(WDE)。所述物理存储器可具有为第一预定大小的物理存储器空间。所述至少一个TM可从主机系统接收数据写入请求及对应的数据,且所述至少一个TM可使用事务表来为所述主机系统的虚拟存储器空间维护数据相干性及数据一致性。所述虚拟存储器空间可包括第二预定大小,所述第二预定大小大于或等于所述物理存储器空间的所述第一预定大小。所述至少一个TM可使用转换表来将所述主机系统的所述虚拟存储器空间转换成所述至少一个系统分区的所述物理存储器空间,其中所述转换表可包括与所述虚拟存储器空间的所述第二预定大小对应的第一预定数目个位、与所述物理存储器的所述第一预定大小对应的第二预定数目个位及数据粒度的第三预定数目个位,且其中所述第二预定数目个位及所述第三预定数目个位可为所述第一预定数目个位的子集。所述至少一个WDEM可包括至少一个命令队列,且所述WDEM可使用未完成桶编号(OBN)及命令队列来为所述物理存储器空间维护数据相干性及数据一致性。所述WDEM可从所述TM接收所述数据写入请求且可将与每一数据写入请求对应的写入命令发送到所述至少一个命令队列中的所选命令队列。所述WDE可对应于每一命令队列。所述WDE可通过以下来对存储在与所述WDE对应的所述命令队列中的写入命令作出响应:如果与所述数据写入请求对应的所述数据未在所述虚拟存储器空间中重复,则将所述数据存储在溢出区中;或者如果与数据写入请求对应的所述数据在所述虚拟存储器空间中重复,则使参考计数器递增。
附图说明
在以下部分中,将参照各图中所示的示例性实施例来阐述本文所公开的主题的各个方面,在各图中:
图1绘示根据本文所公开主题的可扩缩删除重复存储器系统架构的示例性实施例的框图。
图2绘示根据本文所公开主题的图1所示系统分区的示例性实施例的更详细框图。
图3绘示根据本文所公开主题的系统分区的写入数据路径的组件中的数者的示例性实施例的另一框图。
图4绘示根据本文所公开主题的关于图1所示删除重复存储器系统的虚拟存储器空间与物理存储器空间的关系的示例性实施例的一些细节,其中所述关系可由转换表用于将主机系统的虚拟存储器空间转换成系统分区的物理存储器空间。
图5绘示根据本文所公开主题的示例性转换表的转换表条目与示例性散列表的散列表条目之间的关系。
图6绘示根据本文所公开主题由事务管理器提供的示例性控制过程的流程图。
图7绘示根据本文所公开主题由写入数据引擎管理器提供的示例性控制过程的流程图。
图8绘示根据本文所公开主题由写入数据引擎提供的示例性控制过程的流程图。
图9A绘示根据本文所公开主题包含具有嵌入式参考计数器的重构字段的物理行的示例性实施例。
图9B绘示根据本文所公开主题包括指示旗标的物理行的示例性实施例。
图9C绘示其中指示旗标被设定成指示用户数据的重复次数超过重构字段中嵌入式参考计数器的大小的情形,在所述情形中,重构字段的内容可包含针对扩充参考计数器表的索引,所述扩充参考计数器表包含有重复用户数据的扩充计数。
[符号的说明]
100:可扩缩删除重复存储器系统架构/系统架构;
101:主机装置或系统;
102:主机接口;
103:前端调度器;
200、200A~200K:系统分区/分区;
201:写入数据路径;
202:读取数据路径;
203:事务管理器(TM);
204:写入数据引擎管理器(WDEM);
205:写入数据引擎(WDE);
206:存储器区仲裁器;
207:存储器区管理器(MRM);
208:互连件;
209:存储器区(MR)/存储器;
210:转换表管理器(TT MGR);
211:转换表存储器(TT MEM);
212:读取数据引擎管理器(RDEM);
213:读取数据引擎(RDE);
214:写入数据缓冲器控制器;
215:TM控制器;
216:事务表/TM表;
217:未完成桶编号(OBN)表;
218:命令(CMD)调派器;
219:溢流存储器失效(OVMI)管理器;
220:命令队列(CQ);
221:写入数据缓冲器;
222:散列表/参考计数器管理器(HTRC MGR);
223:溢流存储器管理器(OVM MGR);
224:签名管理器(SIG MGR);
400、500:转换表;
501:散列表;
502:逻辑地址;
503:物理行标识(PLID)条目的格式;
600、700、800:控制过程;
601、602、603、604、605、606、607、608、609、701、702、703、704、705、706、707、708、709、710、711、801、802、803、804、805、806、807、808:操作;
900、910:物理行(PL);
901、912:重构字段;
911:指示旗标;
913:扩充参考计数器(RC)表;
914:特殊数据图案表;
HR R/W、OVM_W、SIG R/W:控制信息及数据信息;
VA_WIDTH:虚拟存储器空间;
PHY SPACE:物理存储器空间;
TT_IDX:系统转换表索引;
具体实施方式
在以下详细说明中,阐述许多具体细节来提供对公开内容的透彻理解。然而,所属领域中的技术人员应理解,无需这些具体细节也可实践所公开的各个方面。在其他情形中,未详细阐述众所周知的方法、程序、组件及电路,以免使本文所公开的主题模糊不清。另外,可实作所述的各个方面以在任何成像装置或系统(包括但不限于智能电话、用户设备(UserEquipment,UE)及/或膝上型计算机)中执行低功率三维(3D)深度测量。
本说明书通篇中所提及的“一个实施例(one embodiment)”或“实施例(anembodiment)”意指结合所述实施例所阐述的特定特征、结构或特性可包括在本文所公开的至少一个实施例中。因此,在本说明书通篇中各处出现的短语“在一个实施例中(in oneembodiment)”或“在实施例中(in an embodiment)”或者“根据一个实施例(according toone embodiment)”(或具有相似含义的其他短语)可能未必均指同一实施例。此外,在一个或多个实施例中,特定特征、结构或特性可采用任何适合的方式进行组合。就此而言,本文所用的词“示例性(exemplary)”意指“用作实例、例子或例示”。本文被阐述为“示例性”的任何实施例不应被视为与其他实施例相比必定是优选的或有利的。另外,在一个或多个实施例中,特定特征、结构或特性可采用任何适合的方式进行组合。此外,根据本文中的论述的上下文而定,单数用语可包括对应的复数形式且复数用语可包括对应的单数形式。相似地,带连字符的用语(例如,“二维(two-dimensional)”、“预定(pre-determined)”、“像素专有(pixel-specific)”等)偶尔可与对应的未带连字符的版本(例如,“二维(threedimensional)”、“预定(predetermined)”、“像素专有(pixel specific)”等)可互换地使用,且大写词条(例如,“计数器时钟(Counter Clock)”、“行选择(Row Select)”、“PIXOUT”等)可与对应的非大写版本(例如,“计数器时钟(counter clock)”、“行选择(rowselect)”、“pixout”等)可互换地使用。此种偶尔的可互换使用不应被视为彼此不一致。
此外,根据本文中的论述的上下文而定,单数用语可包括对应的复数形式且复数用语可包括对应的单数形式。还应注意,本文中所示及所论述的各个图(包括组件图)仅是出于例示目的,而并非按比例绘制。相似地,示出各种波形及时序图仅是用于例示目的。举例来说,为清晰起见,可相对于其他元件夸大元件中的一些元件的尺寸。此外,在适当情况下,在各个图中重复使用参考编号来指示对应的元件和/或类似元件。
本文所用术语仅是用于阐述一些示例性实施例的目的,而非旨在限制所主张的主题。除非上下文另外清楚地指明,否则本文所用单数形式“一(a、an)”及“所述(the)”旨在也包括复数形式。还应理解,当在本说明书中使用用语“包括(comprises和/或comprising)”时,是指明所陈述特征、整数、步骤、操作、元件和/或组件的存在,但不排除一个或多个其他特征、整数、步骤、操作、元件、组件和/或其群组的存在或添加。本文所用用语“第一(first)”、“第二(second)”等被用作位于所述用语后面的名词的标签,且除非明确定义,否则所述用语并不暗示任何类型的次序(例如,空间、时间、逻辑等)。此外,在两个或更多个图中可使用相同的参考编号来指代具有相同或相似的功能的部件、组件、块、电路、单元或模块。然而,这种用法仅是为了使例示简洁且易于论述起见;所述用法并不暗示这种组件或单元的构造细节或架构细节在所有实施例中是相同的或者这些通常提及的部件/模块是实作本文所公开示例性实施例中的一些的教示内容的唯一方式。
应理解,当将元件或层称为位于另一元件或层上、“连接到”或“耦合到”另一元件或层时,所述元件或层可直接位于所述另一元件或层上、直接连接或耦合到所述另一元件或层,或者可存在中间元件或层。对比之下,当将元件称为“直接位于”另一元件或层上、“直接连接到”或“直接耦合到”另一元件或层时,不存在中间元件或层。在通篇中,相同的编号指代相同的元件。本文所用的用语“及/或”包括相关联列举项中的一者或多者的任意及所有组合。
除非另外定义,否则本文所用所有用语(包括技术及科学用语)的含义均与本主题所属领域中的一般技术人员所通常理解的含义相同。还应理解,用语(例如在常用词典中所定义的用语)应被解释为具有与其在相关技术的上下文中的含义一致的含义,且除非在本文中明确定义,否则不应将其解释为具有理想化或过于正式的意义。
本文所用用语“模块”是指被配置成结合模块提供本文所述功能的软件、固件及/或硬件的任何组合。软件可被实施为软件封装、代码及/或指令集或指令,且在本文所述任何实施方案中所用的用语“硬件”可例如以单独形式或以任何组合的形式包括硬布线电路系统、可编程电路系统、状态机电路系统及/或存储由可编程电路系统执行的指令的固件。各模块可共同地或单独地实施为形成较大系统(例如但不限于集成电路(integratedcircuit,IC)、系统芯片(system on-chip,SoC)等等)一部分的电路系统。本文所公开的各种组件及/或功能块可被实施为可包括软件、固件及/或硬件的模块,所述软件、固件及/或硬件结合所述各种组件及/或功能块来提供本文所述的功能。
本文所公开的主题提供一种具有转换表的大型删除重复存储器系统架构,所述转换表的大小不随着系统的虚拟存储器大小增大而非线性地增大。在一个实施例中,本文所公开的存储器系统架构包括多个系统分区,其中每一系统分区内的功能可被并行化以提供高吞吐量(throughput)及低等待时间。
在一个实施例中,系统分区可包括一个或多个事务管理器,所述一个或多个事务管理器可被配置成管理存储器系统的虚拟存储器空间且这样一来为虚拟存储器空间提供并发性(concurrency)及相干性。另外,每一事务管理器可支持多个未完成事务,且还可支持多个线程,其中每一线程可包括多个未完成事务。
系统分区还可包括一个或多个数据引擎管理器,所述一个或多个数据引擎管理器可被配置成管理系统分区的物理存储器空间。数据引擎管理器还可被配置成管理多个并行数据引擎。所述多个数据引擎可对系统分区的多个正交存储器区执行存储器地址交错,以提供高吞吐量。本文关于所述多个存储器区所用的用语“正交”意指任何数据引擎可存取系统分区的任何存储器区。对于写入存取,在数据到达写入数据引擎(WDE)之前,由写入数据引擎管理器(WDEM)来管理存储器写入冲突。在数据到达WDE之后,存储器存取冲突已被去除。对于读取存取,读取数据引擎(Read Data Engine,RDE)不具有存储器存取冲突且可在无限制的情况下存取任何存储器区。存储器区管理器管理与应用相关联的存储器区,例如不同的删除重复存储器区。因此,物理存储器冲突已由WDEM“正交地”去除。
本文所公开的存储器系统架构还提供参考计数器(RC),所述参考计数器(RC)可嵌入存储在系统的物理存储器中的用户数据中且可减少由存储器系统使用的存储器量。在一个实施例中,所述参考计数器提供其中嵌入有参考计数器的数据在系统的虚拟存储器空间中重复的次数的指示。在一个实施例中,对于为64个字节的用户数据粒度,将参考计数器嵌入用户数据中可将系统存储器要求减少约6%。在另一实施例中,对于为32个字节的用户数据粒度,将参考计数器嵌入用户数据中可将系统存储器要求减少约12%。
在其中用户数据可在系统的虚拟存储器空间中重复的次数等于或大于预定次数的其他实施例中,可将用于参考计数器的字段替换成提供针对扩充参考计数器表或针对特殊数据图案表的索引的字段。在又一实施例中,如果用户数据在系统的虚拟存储器空间中重复的次数等于或大于预定次数,则由系统使用的转换表可包括具有针对特殊数据图案表的指针或索引的条目,从而减少等待时间且增大吞吐量。通过将指针或索引放置在转换表中,当存取转换表时,可自动地检测到在虚拟存储器空间中高度重复的用户数据。另外,通过由转换表的此种配置提供的自动检测,可较容易地分析此种高度重复的用户数据。
图1绘示根据本文所公开主题的可扩缩删除重复存储器系统架构100的示例性实施例的框图。系统架构100可包括一个或多个主机装置或系统101、主机接口102、前端调度器103及多个系统分区200A至200K。主机系统101可以通信方式耦合到主机接口102,且主机接口102可以通信方式耦合到前端调度器103。主机接口102可包括一个或多个直接存储器存取(direct memory access,DMA)装置DMA0至DMAH-1。前端调度器103可以通信方式耦合到所述多个系统分区200A至200K中的每一者。主机系统101、主机接口102及前端调度器103以众所周知的方式运行。
系统分区200可包括写入数据路径201及读取数据路径202。写入数据路径201可包括事务管理器(TM)203、写入数据引擎WDE管理器(WDEM)204、一个或多个存储器区管理器(MRM)207及一个或多个存储器区(memory region,MR)209。在一个实施例中,写入数据路径201可包括TM 203。在一个实施例中,每分区存在一个TM 203及一个WDEM 204。MR 209在图1中被绘示为包括存储器控制器(memory controller,MEM CNTRLR)及双列直插存储器模块(dual in-line memory module,DIMM)。其他实施例可包括MR 209的等效组件。MR209的存储器可为但不限于动态随机存取存储器(dynamic random access memory,DRAM)、静态随机存取存储器(static random access memory,SRAM)、易失性存储器及/或非易失性存储器。
与写入数据路径201相比,读取数据路径202可为相对简单的,这是因为不存在与读取数据路径相关联的数据相干性或数据并发性问题。如图1及图2中所示,读取数据路径202可包括所述一个或多个MR 209、所述一个或多个MRM 207(图1)、读取数据引擎(RDE)管理器(RDE manager,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(MRM0至MRM P-1)、互连件208及所述一个或多个MR 209(MR 0至MR P-1)。分区200的读取数据路径202可包括MR 209、互连件208、存储器区仲裁器206、RDEM 212及一个或多个读取数据引擎(RDE)213。系统分区还200可包括转换表(translation table,TT)管理器(TT manager,TT MGR)210及TT存储器(TT memory,TTMEM)211。系统分区200A至200K(图1)中的每一者可被相似地配置。
例如存储器区仲裁器206及互连件208等组件以众所周知的方式运行且本文将不再予以详述。另外,在图2中,存储器区仲裁器206已通过虚线被绘示成位于写入数据路径201及读取数据路径202中,然而,应理解,每一相应的路径可实际上包括单独的存储器区仲裁器,所述单独的存储器区仲裁器与另一存储器区仲裁器进行通信及协调。应注意,读取数据路径202如图1中所示“经过”MRM 207,但如图2中所示并不“经过”MRM207,因为RDEM 212仅需要读取转换表来获得物理存储器位置的物理行标识(physical lineidentification,PLID)且接着RDE 213读取由PLID标引的存储器位置。另外,图1及图2中所示的组件可实施为可包括软件、固件及/或硬件的模块,所述软件、固件及/或硬件结合各种组件及/或功能块来提供本文所述的功能。
图3绘示根据本文所公开主题的系统分区200的写入数据路径201的组件中的数者的示例性实施例的另一框图。更具体来说,图3所示系统分区200的组件可包括TM 203、WDEM204、WDE 205、互连件208及MR209。另外,写入数据路径201可包括写入数据缓冲器控制器214。
参照图1至图3,TM 203可包括TM控制器215及一个或多个事务表216。事务表216可用于保持跟踪在主机系统101与存储器209之间发生的未完成写入事务。WDEM 204可包括未完成桶编号(OBN)表217、命令(command,CMD)调派器218、溢出存储器失效(overflowmemory invalidate,OVMI)管理器219、及一个或多个命令队列(command queue,CQ)220(CQ0至CQ N-1)。WDE 205可包括一个或多个WDE(WDE 0至WDE N-1)。写入数据缓冲器控制器214可包括一个或多个写入数据缓冲器221。
TM 203可被配置成管理主机系统的虚拟存储器空间的数据相干性及数据并发性。在一个实施例中,TM 203可被配置成支持多个未完成写入事务及多个线程,以提供高数据吞吐量。在一个实施例中,事务表216可包含未完成写入事务的列表。在另一实施例中,事务表216可包含多个线程的列表,所述多个线程各自具有多个未完成写入事务。当从主机系统101接收到数据写入请求时,TM 203对数据写入请求指派事务标识编号(identificationnumber,ID),且事务ID及其他元数据被输入到所选事务表216中。与数据写入请求相关联的数据可存储在写入数据缓冲器221中。与写入数据缓冲器221中的数据相关的事务ID及信息可被向下游发送以由写入数据路径201进一步处理。TM 203还可使用TM表216中的一者或多者来在主机系统/虚拟存储器空间中保持使已发布存储器写入是以循序次序完成。
图4绘示根据本文所公开主题的关于转换表400的示例性实施例的一些细节,转换表400可由TM 203及RDEM 212用于保持跟踪系统分区200的物理存储器空间中的数据位置。存储在TT存储器211中的转换表及转换表400的特定示例性实施例是针对为1TB(即,240个字节)的虚拟存储器空间且由VA_WIDTH指示。删除重复粒度(数据粒度)是64个位(即,26个位)。转换表400的物理存储器空间是256GB(即,238个字节)且由PHY SPACE指示。所示的系统转换表索引TT_IDX具有34个位。由系统分区200提供的分割使得存储在TT存储器211中的转换表的索引保持在32个位之内,这不会随着MR 209中所存储的用户数据的大小增大而显著增大转换表的大小。在替代实施例中,虚拟存储器大小、物理存储器大小及删除重复(数据)粒度可不同于图4所示者。
图5绘示根据本文所公开主题的示例性转换表500的转换表条目与示例性散列表501的散列表条目之间的关系。参照图2及图5,在一个实施例中,转换表500可存储在TT MEM211中,且散列表501可存储在MR 209中的散列表/参考计数器存储器(hash table/reference counter memory,HTRC MEM)中。从主机系统101接收的逻辑地址502包括转换表索引(图4,TT_IDX)及粒度。转换表索引提供针对转换表500中的物理行标识(PLID)条目的索引。PLID条目的格式503包括针对散列表501的行(即,散列桶)索引(R_INDX)及列索引(COL_INDX)。散列表501的特定行及特定列处所包含的内容是可为粒度为2g的特定用户数据的物理行(physical line,PL)。举例来说,如果g等于6,则PL的粒度将为64个字节。
在一个实施例中,可通过对用户数据执行的散列函数h来产生散列表索引(即,行索引及列索引两者)。由于散列表条目是通过对用户数据C执行的散列函数h而产生,因此仅需将用户数据的一部分C″存储在PL中。换句话说,如果C表示粒度为2g的用户数据且C″表示用户数据C的需要存储在散列表中的一部分,则C′表示用户数据C的可使用散列函数h由C″重构的一部分。也就是说,
C={C′,C″}={h(C″),C″} (1)
PL中与C′对应的空间或字段可用于其他目的,例如存储与用户数据C在主机系统101的虚拟存储器中重复的次数有关的参考计数器(reference counter,RC)信息。PL中与C′对应的空间或字段可被称为重构字段。
图6绘示根据本文所公开主题由事务管理器TM 203提供的示例性控制过程600的流程图。在601处,TM 203可处于等待从主机系统101接收数据写入命令或从WEDM 204接收响应的闲置循环。在602处,如果从主机系统101接收到数据写入命令,则流程继续到603,在603处,对事务表216进行搜索。在604处,为数据写入命令指派事务ID并将数据写入命令插入到适当的事务表216中。在605处,将写入数据输入到写入数据缓冲器221中。在606处,读取存储在TT存储器211中的转换表以得到旧物理行标识(PLID)信息,且流程返回到601。
如果在602处未接收到数据写入命令,则流程继续到607,在607处,判断是否已接收到来自WEDM 204的响应。如果未接收到,则流程返回到601。如果接收到,则流程继续到608,在608处,更新事务表216。在609处,更新存储在TT存储器211中的转换表。接着,流程返回到601。
WDEM 204可被配置成通过管理WDE 205来管理分区200内的物理存储器空间的数据相干性及数据并发性。在一个实施例中,WDEM 204可使用命令调派器218及命令队列220(即,CQ 0至CQ N-1)来为不同的WDE205维护多个未完成写入事务/线程、及内部读取/写入事务/线程。WDEM 204运行以通过将针对同一散列桶的写入事务发送到同一命令队列CQ来确保针对同一散列桶的写入事务是依序执行。WDEM 204还可将部分高速缓存行写入合并,且对MR 209中的溢出存储器(overflow memory,OV MEM)区执行存储器管理。
WDEM 204可包括未完成桶编号(OBN)表217,未完成桶编号(OBN)表217可用于跟踪未完成写入命令的散列表桶编号及状态。命令调派器218可通过将写入命令存储在所选CQ220中来将命令指派给不同的WDE205。WDEM 204还可包括溢出存储器(OVM)失效表(图中未示出)。
图7绘示根据本文所公开主题由WEDM 204提供的示例性控制过程700的流程图。控制过程在701处开始。在702处,判断是否已从事务管理器TM 203接收到具有写入数据缓冲器ID及旧PLID信息的写入数据命令。如果接收到,则流程继续到703,在703处,读取写入数据表。在704处,如果从写入数据缓冲器221读取的写入数据被标记为特殊数据图案,则流程继续到706以向事务管理器发送响应。如果在704处,写入数据并非是特殊数据,则流程继续到705,在705处,更新未完成命令缓冲器OCB表。在707处,将操作码(opcode)添加到适当命令队列CQ 220,且在708处,过程结束。如果在709处从WDE 205接收到响应,则流程继续到710,在710处,更新未完成命令缓冲器(outstanding command buffer,OCB)表。在711处,将经更新状态发送到事务管理器TM 203,且在708处,过程结束。
每一WDE 205从WEDM 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,在803处,使用户数据的RC递减。接着,流程继续到804,在804处,将请求的状态返回到WDEM 204,且接着,流程返回到801。
如果在802处,从WDEM 204接收的请求是写入用户数据(即,物理行),则流程继续到805,在805处,将用户数据的签名与其他用户数据签名进行比较,且进一步将已存储在散列表中的用户数据进行比较。在806处,如果存在匹配,则流程继续到807,在807处,使用户数据的RC递增。流程继续到804,在804处,将请求的状态报告回到WDEM 204。如果在806处不存在匹配,则流程继续到808,在808处,如果未发现先前用户数据,则调用HTRC管理器以将用户数据保存在散列表中,其中RC等于“1”;或者如果散列桶为满的或者如果发生散列碰撞,则调用OVM管理器以将用户数据存储在溢出区中。流程继续到804,以将请求的状态报告给WDEM204。
MRM 207管理WDE 205对MR 209的存储器存取。MRM 207包括散列表/参考计数器管理器(hash table/reference counter manager,HTRC MGR)222、溢出存储器管理器(overflow memory manager,OVM MGR)223及签名管理器(signature manager,SIG MGR)224。每一MRM 207从WDE 205中的每一者接收HTRC MGR 222的控制信息及数据信息(HR R/W)、OVM MGR 223的控制信息及数据信息(OVM R/W)及SIG MGR 224的控制信息及数据信息(SIG R/W)。
图9A绘示根据本文所公开主题包含具有嵌入式参考计数器(RC)的重构字段901的PL 900的示例性实施例。在一个实施例中,重构字段包括嵌入式RC,由于用户数据可在虚拟存储器空间中重复的次数可为小的,因此所述嵌入式RC具有相对小的大小。对于此种系统情形,嵌入式RC可被配置成大小为r-1个位的基本RC。
在其中用户数据可在主机系统的虚拟存储器空间中重复的次数可超过PL的重构字段中的嵌入式RC的大小的另一实施例中,所述重构字段可包括针对扩充RC表条目的索引。在又一实施例中,可使用指示旗标(例如PL的所选位)来指示虚拟存储器空间中的用户数据的重复次数是否超过嵌入式RC的大小。
图9B绘示根据本文所公开主题包括指示旗标911的PL 910的示例性实施例。如图9B中所示,指示旗标911被设定成指示用户数据的重复次数等于或小于重构字段912中的嵌入式RC的大小。因此,重构字段912的内容将指示主机系统101的虚拟存储器空间中用户数据的重复次数。图9C绘示其中指示旗标911被设定成指示用户数据的重复次数超过重构字段912中的嵌入式RC的大小的情形,在所述情形中,重构字段的内容可包含针对扩充RC表913的索引,扩充RC表913包含有重复用户数据的扩充计数。作为另一选择,重构字段912可包含针对特殊数据图案表914的索引或指针,特殊数据图案表914可例如包含高度重复的数据。在一个实施例中,转换表还可包括PLID,如图8中所示,所述PLID是针对高度重复的用户数据的特殊数据图案表914的索引或指针,以减少原本与此种用户数据相关联的等待时间。也就是说,通过在转换表中放置指针或索引,当存取转换表时,可自动检测到虚拟存储器空间中高度重复的用户数据。
MR 209各自包括元数据存储器区及多个数据存储器区。如果系统分区200被配置为删除重复存储器,则元数据区包括转换表。包括在MR 209中的数据存储器区包括散列表/参考计数器(HTRC)存储器(HTRC MEM)、签名存储器(signature memory,SG MEM)及溢出存储器(overflow memory,OV MEM)。
从不同的虚拟地址对MR 209中同一物理存储器区的写入由MRM 207管理。HTRC管理器222及SIG管理器224执行删除重复功能且依据散列表行(即,桶)及列位置来计算存储器位置。从不同的虚拟地址对同一HTRC桶的写入可以与来自主机的原始次序不同的次序到达HTRC桶。一致性由WDEM 204管理。如果写入数据(例如写入数据A及写入数据B)到达同一PLID(A==B),则可简单地使RC递增。如果来自不同虚拟地址的写入数据不相等、具有相同的桶编号但不同的列(即,路)编号,则所述写入数据可存储到同一桶中但不同地存储在不同的路中。如果桶仅剩余一个条目,则A或B将被存储到最后一个条目中,且另一者可被存储到溢出区中。如果写入数据A与写入数据B为不同的但具有相同的散列桶编号及行编号,则第二者将存储在溢出区中。
如所属领域中的技术人员将认识到,可在广大范围的应用中对本文所述创新概念进行修改及变化。因此,所主张主题的范围不应仅限于以上所论述的任何具体示例性教示内容,而是由以上权利要求书来界定。

Claims (20)

1.一种存储器系统,包括:
至少一个系统分区,包括:
物理存储器,具有为第一预定大小的物理存储器空间;
至少一个事务管理器,从主机系统接收数据写入请求及对应的数据,所述至少一个事务管理器使用事务表来为所述主机系统的虚拟存储器空间维护数据相干性及数据一致性;
至少一个写入数据引擎管理器,包括至少一个命令队列,所述至少一个写入数据引擎管理器使用未完成桶编号及所述至少一个命令队列来为所述物理存储器空间维护数据相干性及数据一致性,所述至少一个写入数据引擎管理器从所述至少一个事务管理器接收所述数据写入请求并将与所述数据写入请求中的每一者对应的写入命令发送到所述至少一个命令队列中的所选命令队列;以及
写入数据引擎,对应于所述至少一个命令队列中的每一者,所述写入数据引擎通过以下来对存储在与所述写入数据引擎对应的命令队列中的写入命令作出响应:如果与数据写入请求对应的所述数据未在所述虚拟存储器空间中重复,则将所述数据存储在溢出存储器区中;或者如果与数据写入请求对应的所述数据在所述虚拟存储器空间中重复,则使所述数据的参考计数器递增。
2.根据权利要求1所述的存储器系统,其中所述虚拟存储器空间包括第二预定大小,所述第二预定大小大于或等于所述物理存储器空间的所述第一预定大小,且
其中所述存储器系统还包括转换表,所述转换表包括与所述虚拟存储器空间的所述第二预定大小对应的第一预定数目个位、与所述物理存储器的所述第一预定大小对应的第二预定数目个位及数据粒度的第三预定数目个位,所述第二预定数目个位及所述第三预定数目个位为所述第一预定数目个位的子集。
3.根据权利要求2所述的存储器系统,其中所述第一预定数目个位包括40个位,所述第二预定数目个位包括32个位,且所述数据粒度的所述第三预定数目个位包括6个位。
4.根据权利要求2所述的存储器系统,其中所述至少一个事务管理器响应于接收到数据写入请求而存取所述转换表,以确定与所述数据写入请求的虚拟地址对应的物理地址。
5.根据权利要求1所述的存储器系统,其中所述至少一个事务管理器为所述主机系统的所述虚拟存储器空间维护写后写数据相干性及一致性。
6.根据权利要求1所述的存储器系统,其中所述至少一个事务管理器使用所述事务表来跟踪从所述主机系统接收的多个数据写入请求。
7.根据权利要求6所述的存储器系统,其中所述至少一个事务管理器对所接收的所述数据写入请求指派事务标识,且
其中所述至少一个事务管理器将写入完成消息以与所接收的所述数据写入请求的所述事务标识对应的次序发送到所述主机系统。
8.根据权利要求6所述的存储器系统,其中所述至少一个事务管理器还使用所述事务表来跟踪所述数据写入请求的多个线程。
9.一种存储器系统,包括:
多个系统分区,至少一个系统分区包括:
物理存储器,具有为第一预定大小的物理存储器空间,所述物理存储器包括多个存储器区;
至少一个事务管理器,从主机系统接收数据写入请求及对应的数据,所述至少一个事务管理器使用事务表来为所述主机系统的虚拟存储器空间维护数据相干性及数据一致性,所述虚拟存储器空间包括第二预定大小,所述第二预定大小大于或等于所述物理存储器空间的所述第一预定大小,且所述至少一个事务管理器使用转换表来将所述主机系统的所述虚拟存储器空间转换成所述至少一个系统分区的所述物理存储器空间;
至少一个写入数据引擎管理器,包括至少一个命令队列,所述至少一个写入数据引擎管理器使用未完成桶编号及所述至少一个命令队列来为所述物理存储器空间维护数据相干性及数据一致性,所述至少一个写入数据引擎管理器从所述至少一个事务管理器接收所述数据写入请求并将与所述数据写入请求中的每一者对应的写入命令发送到所述至少一个命令队列中的所选命令队列;
写入数据引擎,对应于所述至少一个命令队列中的每一者,所述写入数据引擎通过以下来对存储在与所述写入数据引擎对应的命令队列中的写入命令作出响应:如果与所述数据写入请求对应的数据未在所述虚拟存储器空间中重复,则将所述数据存储在溢出区中;或者如果所述数据在所述虚拟存储器空间中重复,则使所述数据的参考计数器递增;以及
存储器区管理器,对应于所述物理存储器的每一存储器区,所述存储器区管理器包括存储在所述每一存储器区中的数据的参考计数器存储空间,所述存储器区管理器控制对与所述存储器区管理器对应的所述每一存储器区的写入数据引擎存取。
10.根据权利要求9所述的存储器系统,其中所述转换表包括与所述虚拟存储器空间的所述第二预定大小对应的第一预定数目个位、与所述物理存储器的所述第一预定大小对应的第二预定数目个位及数据粒度的第三预定数目个位,所述第二预定数目个位及所述第三预定数目个位为所述第一预定数目个位的子集。
11.根据权利要求10所述的存储器系统,其中所述第一预定数目个位包括40个位,所述第二预定数目个位包括32个位,且所述数据粒度的所述第三预定数目个位包括6个位。
12.根据权利要求9所述的存储器系统,其中所述至少一个事务管理器为所述主机系统的所述虚拟存储器空间维护写后写数据相干性及一致性。
13.根据权利要求9所述的存储器系统,其中所述至少一个事务管理器响应于接收到数据写入请求而存取所述转换表,以确定与所述数据写入请求的虚拟地址对应的物理地址。
14.根据权利要求9所述的存储器系统,其中所述至少一个事务管理器使用所述事务表来跟踪从所述主机系统接收的多个数据写入请求。
15.根据权利要求14所述的存储器系统,其中所述至少一个事务管理器对所接收的数据写入请求指派事务标识,且
其中所述至少一个事务管理器将写入完成消息以与所接收的所述数据写入请求的所述事务标识对应的次序写入到所述主机系统。
16.根据权利要求14所述的存储器系统,其中所述至少一个事务管理器使用所述事务表来跟踪所述数据写入请求的多个线程。
17.一种删除重复存储器系统,包括:
多个系统分区,至少一个系统分区包括:
物理存储器,具有为第一预定大小的物理存储器空间;
至少一个事务管理器,从主机系统接收数据写入请求及对应的数据,所述至少一个事务管理器使用事务表来为所述主机系统的虚拟存储器空间维护数据相干性及数据一致性,所述虚拟存储器空间包括第二预定大小,所述第二预定大小大于或等于所述物理存储器空间的所述第一预定大小,所述至少一个事务管理器使用转换表来将所述主机系统的所述虚拟存储器空间转换成所述至少一个系统分区的所述物理存储器空间,所述转换表表包括与所述虚拟存储器空间的所述第二预定大小对应的第一预定数目个位、与所述物理存储器的所述第一预定大小对应的第二预定数目个位及数据粒度的第三预定数目个位,所述第二预定数目个位及所述第三预定数目个位为所述第一预定数目个位的子集;
至少一个写入数据引擎管理器,包括至少一个命令队列,所述至少一个写入数据引擎管理器使用未完成桶编号及所述至少一个命令队列来为所述物理存储器空间维护数据相干性及数据一致性,所述至少一个写入数据引擎管理器从所述至少一个事务管理器接收所述数据写入请求并将与所述数据写入请求中的每一者对应的写入命令发送到所述至少一个命令队列中的所选命令队列;以及
写入数据引擎,对应于每一命令队列,所述写入数据引擎通过以下来对存储在与所述写入数据引擎对应的命令队列中的写入命令作出响应:如果与所述数据写入请求对应的所述数据未在所述虚拟存储器空间中重复,则将所述数据存储在溢出区中;或者如果与所述数据写入请求对应的所述数据在所述虚拟存储器空间中重复,则使参考计数器递增。
18.根据权利要求17所述的删除重复存储器系统,其中所述物理存储器包括多个存储器区,
所述删除重复存储器系统还包括与所述物理存储器的每一存储器区对应的存储器区管理器,所述存储器区管理器包括存储在所述存储器区中的数据的参考计数器存储空间,所述存储器区管理器控制对与所述存储器区管理器对应的所述存储器区的写入数据引擎存取。
19.根据权利要求18所述的删除重复存储器系统,其中所述第一预定数目个位包括40个位,所述第二预定数目个位包括32个位,且所述数据粒度的所述第三预定数目个位包括6个位。
20.根据权利要求19所述的删除重复存储器系统,其中所述至少一个事务管理器使用所述事务表来跟踪所述数据写入请求的多个线程。
CN201910764183.7A 2018-08-21 2019-08-19 存储器系统和删除重复存储器系统 Pending CN110851076A (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201862720909P 2018-08-21 2018-08-21
US62/720,909 2018-08-21
US16/180,003 2018-11-04
US16/180,003 US10628072B2 (en) 2018-08-21 2018-11-04 Scalable architecture enabling large memory system for in-memory computations

Publications (1)

Publication Number Publication Date
CN110851076A true CN110851076A (zh) 2020-02-28

Family

ID=69583520

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910764183.7A Pending CN110851076A (zh) 2018-08-21 2019-08-19 存储器系统和删除重复存储器系统

Country Status (5)

Country Link
US (2) US10628072B2 (zh)
JP (1) JP2020030822A (zh)
KR (1) KR20200021878A (zh)
CN (1) CN110851076A (zh)
TW (1) TWI812748B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11567683B2 (en) * 2019-03-28 2023-01-31 Intel Corporation Technologies for providing edge deduplication
US11702300B2 (en) * 2019-04-23 2023-07-18 Yamaha Hatsudoki Kabushiki Kaisha Linear conveyor system, a control method for a linear conveyor system, a control program for a linear conveyor system and a recording medium
US20230056665A1 (en) * 2021-08-18 2023-02-23 Micron Technology, Inc. Mechanism to provide reliable receipt of event messages
US11550642B1 (en) 2021-08-18 2023-01-10 Micron Technology, Inc. Mechanism to trigger early termination of cooperating processes

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6209003B1 (en) * 1998-04-15 2001-03-27 Inktomi Corporation Garbage collection in an object cache
CN101493756A (zh) * 2009-03-11 2009-07-29 威盛电子股份有限公司 数据写入方法与装置
CN103389944A (zh) * 2012-05-09 2013-11-13 辉达公司 用于具有存储器分配限制的协处理器的虚拟存储器结构
US20170017571A1 (en) * 2015-07-17 2017-01-19 Samsung Electronics Co., Ltd. Method and apparatus fori n-line deduplication in storage devices
CN106663060A (zh) * 2014-10-07 2017-05-10 谷歌公司 用于缓存线路去重的方法和系统
JP2017208096A (ja) * 2016-05-20 2017-11-24 三星電子株式会社Samsung Electronics Co.,Ltd. データの回収方法及び格納方法並びに重複除去モジュール
US20180081946A1 (en) * 2016-09-16 2018-03-22 Oracle International Corporation Duplicate reduction or elimination with hash join operations
JP2018120594A (ja) * 2017-01-25 2018-08-02 三星電子株式会社Samsung Electronics Co.,Ltd. 最大化された重複除去メモリのためのシステム及び方法

Family Cites Families (49)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4774659A (en) * 1986-04-16 1988-09-27 Astronautics Corporation Of America Computer system employing virtual memory
US5649157A (en) * 1995-03-30 1997-07-15 Hewlett-Packard Co. Memory controller with priority queues
US6055579A (en) * 1997-11-17 2000-04-25 Silicon Graphics, Inc. Distributed control and synchronization of multiple data processors using flexible command queues
US6141707A (en) * 1998-05-28 2000-10-31 Emc Corporation Input/output request allocation by establishing master command queue among plurality of command queues to receive and store commands, determine logical volume, and forwarding command to determined logical volume
US6286092B1 (en) * 1999-05-12 2001-09-04 Ati International Srl Paged based memory address translation table update method and apparatus
US7159073B2 (en) * 2003-03-27 2007-01-02 Stmicroelectronics, Inc. Data storage and caching architecture
US8112574B2 (en) * 2004-02-26 2012-02-07 Super Talent Electronics, Inc. Swappable sets of partial-mapping tables in a flash-memory system with a command queue for combining flash writes
US7418540B2 (en) * 2004-04-28 2008-08-26 Intel Corporation Memory controller with command queue look-ahead
US7849259B1 (en) * 2007-02-14 2010-12-07 Marvell International Ltd. Disk controller response handler for write commands
US7873809B2 (en) * 2007-03-29 2011-01-18 Hitachi, Ltd. Method and apparatus for de-duplication after mirror operation
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
US9223642B2 (en) * 2013-03-15 2015-12-29 Super Talent Technology, Corp. Green NAND device (GND) driver with DRAM data persistence for enhanced flash endurance and performance
US8271564B2 (en) * 2008-07-14 2012-09-18 Symbol Technologies, Inc. Lookup table arrangement and related management method for accommodating concurrent processors
US8126905B2 (en) * 2008-09-23 2012-02-28 Teradata Us, Inc. System, method, and computer-readable medium for optimizing the performance of outer joins
US8285681B2 (en) * 2009-06-30 2012-10-09 Commvault Systems, Inc. Data object store and server for a cloud storage environment, including data deduplication and data management across multiple cloud storage sites
US8688894B2 (en) * 2009-09-03 2014-04-01 Pioneer Chip Technology Ltd. Page based management of flash storage
US8204862B1 (en) * 2009-10-02 2012-06-19 Symantec Corporation Systems and methods for restoring deduplicated data
US9401967B2 (en) * 2010-06-09 2016-07-26 Brocade Communications Systems, Inc. Inline wire speed deduplication system
US9355109B2 (en) 2010-06-11 2016-05-31 The Research Foundation For The State University Of New York Multi-tier caching
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
EP2712450A4 (en) * 2012-03-30 2015-09-16 Commvault Systems Inc INFORMATONS MANAGEMENT OF DATA OF MOBILE DEVICES
US9135192B2 (en) * 2012-03-30 2015-09-15 Sandisk Technologies Inc. Memory system with command queue reordering
US9678863B2 (en) * 2012-06-12 2017-06-13 Sandisk Technologies, Llc Hybrid checkpointed memory
US9767036B2 (en) * 2013-03-14 2017-09-19 Nvidia Corporation Page state directory for managing unified virtual memory
US20140304464A1 (en) * 2013-04-03 2014-10-09 Lsi Corporation Methods and systems for performing deduplication in a data storage system
US20150006475A1 (en) * 2013-06-26 2015-01-01 Katherine H. Guo Data deduplication in a file system
US9176676B2 (en) * 2013-07-30 2015-11-03 Gerald Simon Efficiency of virtual machines that use de-duplication as primary data storage
US10055422B1 (en) * 2013-12-17 2018-08-21 Emc Corporation De-duplicating results of queries of multiple data repositories
US9529546B2 (en) * 2014-01-08 2016-12-27 Netapp, Inc. Global in-line extent-based deduplication
US10635316B2 (en) * 2014-03-08 2020-04-28 Diamanti, Inc. Methods and systems for data storage using solid state drives
US9442941B1 (en) * 2014-03-28 2016-09-13 Emc Corporation Data structure for hash digest metadata component
US9799017B1 (en) 2014-09-19 2017-10-24 Amazon Technologies, Inc. Cross-data-store operations in log-coordinated storage systems
US9195674B1 (en) * 2014-09-24 2015-11-24 Logzilla Corporation Systems and methods for large-scale system log analysis, deduplication and management
US9846650B2 (en) * 2015-03-09 2017-12-19 Samsung Electronics Co., Ltd. Tail response time reduction method for SSD
US10007619B2 (en) * 2015-05-29 2018-06-26 Qualcomm Incorporated Multi-threaded translation and transaction re-ordering for memory management units
US10248656B2 (en) 2015-06-18 2019-04-02 International Business Machines Corporation Removal of reference information for storage blocks in a deduplication system
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
US9904635B2 (en) * 2015-08-27 2018-02-27 Samsung Electronics Co., Ltd. High performance transaction-based memory systems
US10025531B2 (en) * 2015-09-10 2018-07-17 HoneycombData Inc. Reducing read command latency in storage devices
US9983821B2 (en) * 2016-03-29 2018-05-29 Samsung Electronics Co., Ltd. Optimized hopscotch 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
US10372620B2 (en) * 2016-12-30 2019-08-06 Intel Corporation Devices, systems, and methods having high data deduplication and low read latencies
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 (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6209003B1 (en) * 1998-04-15 2001-03-27 Inktomi Corporation Garbage collection in an object cache
CN101493756A (zh) * 2009-03-11 2009-07-29 威盛电子股份有限公司 数据写入方法与装置
CN103389944A (zh) * 2012-05-09 2013-11-13 辉达公司 用于具有存储器分配限制的协处理器的虚拟存储器结构
CN106663060A (zh) * 2014-10-07 2017-05-10 谷歌公司 用于缓存线路去重的方法和系统
US20170017571A1 (en) * 2015-07-17 2017-01-19 Samsung Electronics Co., Ltd. Method and apparatus fori n-line deduplication in storage devices
JP2017208096A (ja) * 2016-05-20 2017-11-24 三星電子株式会社Samsung Electronics Co.,Ltd. データの回収方法及び格納方法並びに重複除去モジュール
US20180081946A1 (en) * 2016-09-16 2018-03-22 Oracle International Corporation Duplicate reduction or elimination with hash join operations
JP2018120594A (ja) * 2017-01-25 2018-08-02 三星電子株式会社Samsung Electronics Co.,Ltd. 最大化された重複除去メモリのためのシステム及び方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
HAN-LIN LI; CHIA-LIN YANG; HUNG-WEI TSENG: "Energy-Aware Flash Memory Management in Virtual Memory System", IEEE TRANSACTIONS ON VERY LARGE SCALE INTEGRATION (VLSI) SYSTEMS, vol. 16, no. 8, XP011231661, DOI: 10.1109/TVLSI.2008.2000517 *

Also Published As

Publication number Publication date
JP2020030822A (ja) 2020-02-27
US20200065017A1 (en) 2020-02-27
US20200225862A1 (en) 2020-07-16
TWI812748B (zh) 2023-08-21
TW202009716A (zh) 2020-03-01
KR20200021878A (ko) 2020-03-02
US10628072B2 (en) 2020-04-21

Similar Documents

Publication Publication Date Title
US10318434B2 (en) Optimized hopscotch multiple hash tables for efficient memory in-line deduplication application
US20200225862A1 (en) Scalable architecture enabling large memory system for in-memory computations
US7496711B2 (en) Multi-level memory architecture with data prioritization
CN105917319B (zh) 存储器单元和方法
CN107704194B (zh) 无锁io处理方法及其装置
KR20170098187A (ko) 저장 서브시스템을 위한 연관적 및 원자적 라이트-백 캐싱 시스템 및 방법
CN110851074B (zh) 嵌入式参考计数器和特殊数据模式自动检测
US11030088B2 (en) Pseudo main memory system
US20140181371A1 (en) Method and system for reducing mapping table size in a storage device
US11748034B2 (en) Signalling for heterogeneous memory systems
US20230125792A1 (en) Error recovery for non-volatile memory modules
US20170286005A1 (en) Virtual bucket multiple hash tables for efficient memory in-line deduplication application
WO2018096322A1 (en) Data movement engine
KR102168193B1 (ko) 초과 공급 메모리 장치들을 통합하기 위한 시스템 및 방법
US11137941B2 (en) Command replay for non-volatile dual inline memory modules
CN114780025A (zh) 软件raid请求处理方法、控制器及raid存储系统
US20220405253A1 (en) Mechanism for managing a migration of data with mapped page and dirty page bitmap sections
CN113391760A (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