存储器模块和控制其的方法与流程

文档序号:13675300阅读:118来源:国知局

本申请要求于2016年8月3日提交的第62/370,655号美国临时专利申请和2016年10月4日提交的第15/285,437号美国专利申请的权益和优先权,所述申请的公开通过引用全部包含于此。

本公开总体涉及一种存储器系统,更具体地讲,涉及一种用于控制存储器系统的可编程的重复删除率的系统和方法。



背景技术:

在存储器系统的环境中,重复删除(deduplication)指通过消除冗余数据来减少存储需求的技术。仅数据的一个唯一实例被实际保留在存储介质(诸如,固态驱动器(ssd)和硬盘驱动器(hdd))中。使用指向该数据的唯一实例的指针来替换冗余数据。

相比于非重复删除存储器,用于重复删除存储器的列直插式存储器(in-linememory)重复删除方案可在减少单位比特成本的同时提供容量方面的益处。传统的存储器重复删除方案使用重复删除引擎与主机计算机的cpu和/或存储器控制器(mc)集成的以中央处理器(cpu)为中心的方法。这些存储器重复删除方案经常使用用于实现重复删除算法的简单的多路哈希数组。当哈希数组被填满时,数据可被放置在非重复删除溢出区中,以减少重复删除水平。此外,高重复删除率可潜在地降低重复删除存储器系统的存储器组件的消耗。



技术实现要素:

根据一个实施例,一种存储器模块,包括:逻辑,包括:编程寄存器、重复数据率控制逻辑和重复删除引擎;以及主机接口,用于在所述存储器模块与主机计算机之间进行通信。编程寄存器存储所述存储器模块的最大重复删除率。重复删除率控制逻辑被配置为:根据最大重复删除率来控制所述存储器模块的重复删除率。重复删除率通过主机计算机是可编程的。

根据另一实施例,一种控制存储器模块的方法,包括:在所述存储器模块中实现逻辑,所述逻辑包括:编程寄存器、重复删除率控制逻辑和重复删除引擎;将所述存储器模块的最大重复删除率存储在编程寄存器中;通过主机计算机编程重复删除率;根据最大重复删除率来控制所述存储器模块的重复删除率。

现在将参照附图更具体地描述并在权利要求中更具体地指出包括事件的实施方式和组合的各种新的细节的上面的和其他优选特征。将理解,在此描述的具体的系统和方法仅通过说明性的方法被示出,而不是限制。本领域技术人员将理解,在不脱离本公开的范围的情况下,在此描述的原理和特征可在各种实施例和许多实施例中被使用。

附图说明

作为本说明书的一部分包括的附图示出目前优选的实施例和上面给出的总体描述,并且下面给出的优选实施例的具体实施方式用于解释和教导在此描述的原理。

图1示出现有技术的精细的重复删除系统的框图。

图2示出在图1的重复删除系统中使用的示例哈希表。

图3示出根据一个实施例的示例重复删除存储器系统的架构。

图4示出根据一个实施例的示例重复删除存储器系统。

图5示出根据一个实施例的在示例重复删除系统中使用的哈希表。

图6示出根据一个实施例的示例重复删除写入处理的流程图。

图7示出根据一个实施例的重复删除存储器系统写入处理的示例流程图。

图8示出根据一个实施例的重复删除存储器系统读取处理的示例流程图。

贯穿附图,出于说明性目的,附图不必按比例绘制,并且相似的结构或功能的元件通常由相同的参考标号表示。附图仅意在帮助在此描述的各种实施例的描述。附图不描述在此公开的教导的每一方面,并且附图不限制权利要求的范围。

具体实施方式

在此公开的特征和教导均可被单独地或与其他特征和教导结合地利用,以提供用于控制存储器系统的可编程的重复删除率(deduplicationratio)的系统和方法。参照附图更详细地描述单独地以及结合地利用许多这些额外的特征和教导的代表性示例。本具体实施方式仅意在更详细地教导本领域技术人员以实践本教导的方面,而不意在限制权利要求的范围。因此,具体实施方式中的上面公开的特征的组合在广义上不是实践教导所必须的,而是仅被教导以描述本教导的具体代表性示例。

在下面的描述中,仅出于解释的目的,阐述特定术语以提供对本公开的完全理解。然而,对本领域技术人员将是清楚的是,不需要这些具体细节来实践本公开的教导。

根据对计算机存储器内数据位的操作的算法和符号表示来呈现这里的具体实施方式的一些部分。这些算法的描述和表示被数据处理领域的技术人员使用,以便有效地将他们工作的实质传达给本领域其他技术人员。在此算法通常被认为是导致期望的结果的自相一致(self-consistent)的一系列步骤。这些步骤是需要物理量的物理操作的步骤。通常(但不必须),这些量采用能够被存储、传递、组合、比较和另外操作的电子信号或磁信号的形式。主要出于普通使用的原因,已证明有时将这些信号称为位、值、元素、符号、字符、项、数字等是方便的。

然而,应牢记,所有这些术语和相似的术语将与合适的物理量相关联,并且仅是应用于这些量的方便的标记。除非另有如从下面的讨论清楚可知的特别声明,否则应理解,贯穿说明书,使用诸如“处理”、“运算”、“计算”、“确定”、“显示”等的术语的讨论指计算机系统或类似的电子计算装置的行为和处理,其将被表示为计算机系统的寄存器或存储器内的物理(电子)量的数据操作并转换为被类似地表示为计算机系统存储器或寄存器或其他这种信息存储、传输或显示装置内的物理量的其他数据。

在此呈现的算法不内在地与任何具体计算机或其他设备相关。各种通用系统、计算机服务器或个人计算机可使用根据在此的教导的程序,或者可证明构造更专业的设备以执行要求的方法步骤是方便的。各种各样的这些系统所要求的结构将从下面的描述变得清楚。将理解,各种程序语言可用于实现如在此所描述的本公开的教导。

此外,为了提供本教导的额外有用的实施例,可以以非具体枚举或非明确枚举的方式组合典型示例和从属权利要求的各种特征。还要特别注意,出于原始公开的目的以及出于限制所要求保护的主题的目的,所有的值的范围或实体的组的指示公开每一可能的中间值或中间实体。还要特别注意,附图中所示的组件的大小和形状被设计为帮助理解本教导如何被实践,而不意在限制示例中所示的大小和形状。

图1示出现有技术的重复删除系统的框图。在约翰彼得史蒂文森(johnpeterstevenson)著的博士论文(“fine-grainin-memorydeduplicationforlarge-scaleworkloads(针对大规模工作负荷的精细的存储器内重复删除)”,斯坦福大学,2013年12月)中讨论了用于实现精细的存储器内重复删除的细节。

重复删除系统100包括主机计算机160和多个ddr存储器模块1500-150n-1。主机计算机160具有:具有多核1100-110n-1的cpu、包括数据高速缓存器(l1d)112和指令高速缓存器(l1i)113的1级高速缓存器(l1)111、2级高速缓存器(l2)114、直接转换缓冲器(dtb)110、重复删除高速缓存器(ddc)120和存储器控制器130。可在包括具有多个核的cpu的系统中实现重复删除系统100。

ddc120表示重复删除存储器的高速缓存的版本。ddc120公开与标准的终级高速缓存器(llc:lastlevelcache)相同的接口,但是可明确地对转换线(translationline)、数据线(dataline)和参考计数(referencecount)进行高速缓存。ddc120可减少对ddr存储器模块1500-150n-1的存储器访问的次数。当在llc(终级高速缓存器)中高速缓存的特定数据和写入到存储器模块的特定值过时时,可从属于最近执行写入的cpu核的l1高速缓存器或l2高速缓存器提供读取请求。

图2示出在图1的重复删除系统中使用的示例哈希表。哈希表200包括包含m个哈希桶的哈希数组。每一哈希桶包括n条路(way)或槽(slot)。术语“路”和“槽”在此可交换地使用。哈希函数h可产生(log2m)位的哈希以将物理线id(plid)索引到哈希桶中。为了将线c插入到哈希数组中,h(c)的值被计算,并且哈希表中的h(c)的行t被检查以查看针对线c的插入是否有可用的路。如在图2中所示,哈希表200的总容量是m个哈希桶乘以n条数据线。

签名线和参考计数线中的每一线可在哈希桶中占用一路。总的来说,m个哈希桶的签名线和参考计数线中的每一线可占用哈希数组的一整列。签名和参考计数可以足够小以将多个量打包在每一线中。例如,哈希数组包括64路,签名为8位以适合8位的数据线。在这种情况下,哈希数组的线为64字节(64×8位)。

在另一示例中,签名为x位,参考计数为y位,哈希数组的物理线为64字节。如果每一哈希桶的路的数量为n,则每一n路桶的签名需要总共n/(64×8/x)条物理线。相似地,每一n路桶的参考计数需要n/(64×8/y)条物理线。哈希数组总共具有n(1+1/(64×8/x)+1/(64×8/y))条路。这些与规定所有的参考计数线和签名线可针对哈希桶被打包为一条线的哈希表中的列对应。

在现有技术的重复删除存储器中,cpu不具有对于物理存储器的直接访问。相反,在本示例中,主机计算机的存储器控制器可以以64字节的存储器线的数组来管理物理存储器。每一物理线可通过它的物理线id(plid)被识别。plid划分为三个区域:转换数组、哈希数组和溢出。plid可使用哈希函数h索引到哈希数组中。例如,plid可具有下面的实现方式:

plid=溢出标记|哈希位|路位。

哈希位允许哈希桶索引到哈希数组。路位被赋予路索引。如果正被指向的数据位于哈希表200中,则溢出标记被设置为0。如果溢出标记被设为1,则plid中的剩余位被用作到溢出数组的索引。

plid的宽度通过哈希表200的大小来确定。针对在图2中所示的哈希表200,哈希位和路位需要log2m+log2n位。加上溢出标记的额外位,plid的宽度通过下式被计算:

|plid|=1+log2m+log2n。

本公开提供一种用于针对重复删除存储器系统的可编程重复删除率控制机制的系统和方法。重复删除率控制机制通过使用可配置的重复删除算法,来采用与传统的重复删除存储器系统的以cpu为中心的方法完全不同的以存储器为中心的方法,以将重复删除存储器系统的存储器容量最大化。重复删除率控制机制可针对各种重复删除存储器产品(例如,库存单元(sku))加盖最大的重复删除率,并根据编程的重复删除率来配置重复删除存储器产品。不同的重复删除率可根据重复删除存储器系统的意向目标应用(例如,数据库)被编程到相同的产品。

图3示出根据一个实施例的示例重复删除存储器系统的架构。重复删除存储器系统300包括主机计算机360和重复删除存储器310。重复删除存储器310包括片上系统(soc)逻辑320,其中,soc逻辑320包括:重复删除率寄存器321、重复删除率控制逻辑322和集成的重复删除引擎325。重复删除率寄存器321通过主机计算机是可编程的,并且可存储重复删除存储器310的最大重复删除率。重复删除率寄存器321可通过任何编程的方法被编程,其中,编程包括(但不限于)永久硬件编程(例如,设置熔丝)的编程以及从电可擦可编程只读存储器(eeprom)读取和写入到eeprom。重复删除率寄存器321可根据系统管理需求,在重复删除存储器310的生产期间或者在后期生产时间(例如,在系统启动时间期间)被编程。

重复删除率控制逻辑322可根据在重复删除率寄存器321中存储的编程的最大重复删除率,来控制地址查找表(lut)的表大小,以限制重复删除存储器310的虚拟容量。重复删除率控制逻辑322可将重复删除存储器310的编程的最大重复删除率和/或虚拟容量提供给外部请求器和内部重复删除引擎325。在一个实施例中,通过重复删除存储器310的物理容量乘以重复删除率来计算最大重复删除率。重复删除引擎325可基于重复删除存储器310的最大虚拟容量,来管理对于重复删除存储器310的读取/写入请求。

根据一个实施例,重复删除存储器310包括哈希表存储器350。哈希表存储器350包括:地址lut(alut)351、哈希表(ht)352和缓冲存储器(bm)353。地址lut(alut)351存储装置地址与查找地址之间的映射信息。哈希表(ht)352将值存储在哈希表中。缓冲存储器(bm)353是用于作为soc存储器缓冲器/高速缓存器和虚拟密度过度供给管理(htm溢出)的保留的存储器区域。

图4示出根据一个实施例的示例重复删除存储器系统。重复删除存储器系统400可使用可配置的重复删除算法来提供以存储器为中心的数据重复删除,以将存储器容量最大化。在本示例中,重复删除存储器系统400包括主机计算机410、dramdimm420和重复删除存储器模块430。主机计算机410包括:被配置为运行操作系统411(例如,linux)的处理器413和使用内核模块412的用户应用。此外,主机计算机410包括一个或多个存储器和接口控制器(共同被称作存储器/接口控制器414),以提供用于dramdimm420和重复删除存储器模块430的多个存储器接口的支持。本示例示出一个dramdimm420和一个重复删除存储器模块430。然而,应理解,在不脱离本公开的范围的情况下,重复删除存储器系统400可包括任何数量的dramdimm和/或重复删除存储器模块。

dramdimm420和重复删除存储器模块430中的每个通过特定接口连接到主机计算机410。例如,dramdimm420通过双倍数据速率(ddr)(例如,ddr4)存储器接口连接到主机计算机410。重复删除存储器模块430可通过ddr4存储器接口或任何其他非存储器接口(诸如,外围组件互连快速(pcie)接口、非易失性存储器快速(nvme)和超纤nvm(nvmf))连接到主机计算机410。在一个实施例中,重复删除存储器模块430可为包括一个或多个非易失性存储器装置(例如,闪存)或者至少一个非易失性存储器装置和一个或多个dram装置的非易失性双列直插式存储器模块nvdimm。

根据一个实施例,主机计算机410可具有通过特定接口(例如,ddr4、pcie等)访问重复删除存储器模块430的高速缓存线。soc可将重复删除存储器模块430的过度供给的存储器容量(即,虚拟存储器容量)提供到主机计算机。由于重复删除的数据被存储在重复删除存储器模块430中,所以重复删除存储器模块430的虚拟存储器容量可大于它的物理存储器容量。重复删除存储器模块430的soc431可将智能特征(诸如,数据重复删除、可寻址的数据、安全性、存储器中处理(pim)和光栅化处理(ras))提供给主机计算机410。此外,soc431可提供虚拟密度管理和有效数据布置以及dram接口(例如,ddr4)。重复删除存储器模块430可具有多样的形状因素,其中,所述多样的形状因素包括(但不限于):dimm、2.5英寸硬驱动器、全高半长(fhhl)、半高半长(hhhl)和全高全长(fhfl)。

图5示出根据一个实施例的示例哈希表。哈希表(ht)500包括3d数据,该3d数据包括m个哈希桶、n个哈希函数和针对每一哈希函数的d条路。虚拟桶(vb)允许近位置哈希桶(例如,在哈希桶的vb高度h内)中的数据布置。对于每一哈希桶,存在一个相关联的函数h(x),该相关联的函数h(x)产生log2(m)位哈希以将数据索引到哈希桶中。例如,如果哈希表具有8个哈希桶,则哈希表的哈希函数产生3位哈希。也就是说,哈希函数h(x)允许相对大量的输入数据(例如,将被存在存储器中的输入数据文件)被输入到哈希函数h(x),并且实质上不同的更小的量的输出数据(例如,哈希值)通过哈希函数h(x)产生并被输出,以被存储在哈希表中。因此,当不同的数据集可能偶尔哈希到相同的哈希值时,哈希函数h(x)启用压缩。

图6示出根据一个实施例的示例重复删除写入处理的流程图。重复删除存储器的重复删除引擎可确定使用非自适应重复删除算法还是使用自适应重复删除算法(601)。对于非自适应重复删除算法,在主机计算机上运行的软件可定义重复删除算法。对于自适应重复删除算法,重复删除存储器的重复删除引擎可基于各种参数(例如,应用历史和选择策略)来定义重复删除算法。

当选择非自适应重复删除算法时,加载到主机os的内核中的重复删除存储器的驱动器设置重复删除线大小、哈希表的数量、哈希桶的数量、路的数量、虚拟桶高度(611)。如在图3中所示,soc创建以下区域:哈希表、地址lut和缓冲存储器(612)。驱动器选择预处理算法(613)并选择哈希算法(614)。重复删除存储器的soc创建重复删除写入算法(615)。

当选择自适应重复删除算法时,重复删除存储器的soc在线选择自适应重复删除算法(622)。当选择自适应重复删除算法时,soc参照各种参数,例如,应用模式历史池、重复删除算法池和重复删除选择策略(621)。soc可应用不同的重复删除写入算法631a-631x。可由soc在启动时间对不同的存储器区域选择不同的算法。直到下一启动时间才可改变选择的算法。

图7示出根据一个实施例的重复删除存储器系统写入处理的示例流程图。写入请求通过特定接口(例如,ddr4和pcie)到达重复删除存储器(711)。例如,写请求是将数据0x3456789a写入到装置地址0x2。在重复删除存储器的soc中实现的重复删除引擎根据写入请求,来哈希将被写入的数据。在这个示例中,哈希的数据具有查找(lu)地址0x5和关键值(key)0x3。重复删除引擎将哈希的lu地址0x5和关键值0x3与在哈希表722中存储的关键值和值进行比较(712)。如果在哈希表722中找到匹配的值,则重复删除引擎将用于匹配项的频率计数从1增加到2。频率计数是指示在地址查找转换数组中有多少plid指向特定线的参考计数。重复删除引擎得到原始lu地址(例如,0x5)并在地址lut723中更新lu地址(713)。重复删除引擎在哈希表722中更新原始lu地址(例如,0x5)的频率计数(714)。如果在哈希表722中没有找到匹配项,则重复删除引擎在哈希表722和地址lut723两者中添加具有1频率计数1的新的项。重复删除引擎向主机存储器控制器报告写入请求完成(751)。

图8示出根据一个实施例的重复删除存储器系统读取处理的示例流程图。读取请求通过特定接口(例如,ddr4和pcie)到达重复删除存储器(811)。例如,读取请求是到装置地址0x2。装置地址指将被读取的数据的地址,lu地址指在哈希表823中存储的数据的实际地址。重复删除引擎从读取地址lut822得到lu地址(812)。重复删除引擎从读取的哈希表823得到与lu地址0x4对应的值(0x12345678)(813)。重复删除引擎将读取的数据发送到主机存储器控制器以完成读取请求(851)。

根据一个实施例,存储器模块包括逻辑,其该逻辑包含编程寄存器、重复删除率控制逻辑和重复删除引擎。编程寄存器存储存储器模块的最大重复删除率。重复删除率控制逻辑被配置为根据最大重复删除率来控制存储器模块的重复删除率。重复删除率通过主机计算机是可编程的。

重复删除率控制逻辑还可被配置为经由主机接口将存储器模块的重复删除率通信至主机计算机。

存储器模块的重复删除率可在存储器模块的生产时被编程。

存储器模块的重复删除率可在系统启动时间被编程。

存储器模块还可包括哈希表存储器。哈希表存储器可包括:地址查找表(lut)、哈希表和缓冲存储器。

重复删除率控制逻辑可被配置为根据在编程寄存器中存储的编程的重复删除率,来控制地址查找表的表大小,以限制存储器模块的虚拟容量。

主机接口可为双倍数据速率(ddr)接口。

主机接口可为外围组件互连快速(pcie)接口。

根据另一实施例,一种方法包括:在存储器模块中实现逻辑,该逻辑包括:编程寄存器、重复删除率控制逻辑和重复删除引擎;将存储器模块的最大重复删除率存储在编程寄存器中;通过主机计算机编程重复删除率;根据最大重复删除率控制存储器模块的重复删除率。

该方法还可包括:经由主机接口将存储器模块的重复删除率与主机计算机通信。

存储器模块的重复删除率可在存储器模块的生产时被编程。

存储器模块的重复删除率可在系统启动时间被编程。

该方法还可包括:提供包括地址查找表(lut)、哈希表和缓冲器存储器的哈希表存储器。

该方法还可包括:根据在编程寄存器中存储的编程的重复删除率,来控制地址查找表的表大小,以限制存储器模块的虚拟容量。

主机接口可为双倍数据速率(ddr)接口。

主机接口可为外围组件互连快速(pcie)接口。

在上文已描述了上面的示例实施例,以示出用于实现和提供用于控制存储器系统的可编程重复删除率的系统和方法的各种实施例。本领域普通技术人员将想到来自公开的示例实施例的各种修改和偏差。在权利要求中阐述意在处于发明的范围内的主题。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1