买专利,只认龙图腾
首页 专利交易 科技果 科技人才 科技服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

【发明授权】用于超量配置存储器系统的高效压缩的算法方法_三星电子株式会社_201810013193.2 

申请/专利权人:三星电子株式会社

申请日:2018-01-05

公开(公告)日:2023-11-07

公开(公告)号:CN108345432B

主分类号:G06F3/06

分类号:G06F3/06;G06F12/02

优先权:["20170125 US 62/450,502","20170327 US 15/470,261"]

专利状态码:有效-授权

法律状态:2023.11.07#授权;2019.12.31#实质审查的生效;2018.07.31#公开

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

主权项:1.一种动态地选择存储器系统中的去重粒度以减少去重粒度并提高哈希表效率的方法,所述方法包括:在使用所述存储器系统的应用的应用层处选择一个或多个去重粒度,所述一个或多个去重粒度是根据所述存储器系统的特征来选择的;以及分配与所选择的所述一个或多个去重粒度中的每一个相对应的存储区域,其中,选择所述一个或多个去重粒度包括:观察所述存储器系统的历史趋势或模式;以及基于所观察的历史趋势或模式,为每个高速缓存行动态地分配所述一个或多个去重粒度中的一个相应的去重粒度。

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

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

百度查询: 三星电子株式会社 用于超量配置存储器系统的高效压缩的算法方法

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。