用于缓存线路去重的方法和系统与流程

文档序号:11160909阅读:314来源:国知局
用于缓存线路去重的方法和系统与制造工艺

本申请要求2014年10月7日提交的美国临时专利申请序列号62/060,949的优先权,其全部公开内容通过引用合并入本文。



背景技术:

已经观察到:在操作系统的存储器中通常存在许多重复的缓存线路。虽然软件有可能扫描存储器并且检测重复的内容,但是按照这样的方式来使用软件通常非常昂贵。相反,更经济并且更有效的途径是使用硬件来检测存储器中的数据模式。



技术实现要素:

本发明内容以简化的形式介绍了对概念的选择以便提供对本公开的一些方面的基本理解。本发明内容不是对本公开的广泛概述,并且不旨在表示本公开的关键或者重要元素或者描绘本公开的范围。本发明内容仅呈现了本公开的概念中的一些以作为下面提供的具体实施方式的前序。

本公开大体上涉及用于管理存储器的方法和系统。更具体地,本公开的方面涉及通过检测缓存线路数据模式并且在多个物理地址及其公共数据值之间建立链接列表来对存储器中的缓存线路进行去重。

本公开的一个实施例涉及一种用于对缓存线路进行去重的方法,该方法包括:检测在对缓存线路的写入中的数据模式;确定该写入的物理地址是否与最后一级缓存中的条目匹配;确定在该写入中的数据模式是否和与该条目相关联的数据模式匹配;以及响应于确定该写入的物理地址与最后一级缓存中的条目匹配,以及确定在写入中的数据模式和与该条目相关联的数据模式匹配,使最后一级缓存中的该条目无效。

在另一实施例中,用于对缓存线路进行去重的方法进一步包括:响应于确定写入的物理地址与最后一级缓存中的条目匹配,以及确定在该写入中的数据模式和与该条目相关联的数据模式匹配,在对应的缓存线路过滤器的表中分配用于该写入的新条目。

在另一实施例中,用于对缓存线路进行去重的方法进一步包括:响应于确定写入的物理地址与最后一级缓存中的条目匹配,以及确定在该写入中的数据模式不同于与该条目相关联的数据模式,利用该写入的数据模式来更新最后一级缓存中的该条目。

在另一实施例中,用于对缓存线路进行去重的方法进一步包括:响应于确定该写入的物理地址不同于最后一级缓存中的所有条目,以及确定在该写入中的数据模式和与最后一级缓存中的条目相关联的数据模式匹配,在对应的缓存线路过滤器的表中分配用于写入的新条目。

在又一实施例中,用于对缓存线路进行去重的方法进一步包括:响应于确定写入的物理地址不同于最后一级缓存中的所有条目,以及确定在该写入中的数据模式不同于与最后一级缓存中的条目相关联的所有数据模式,在最后一级缓存中写入用于该写入的新条目。

本公开的另一实施例涉及一种用于对缓存线路进行去重的系统,该系统包括至少一个处理器和耦合至该至少一个处理器的非暂时性计算机可读介质,其具有存储在其上的指令,该指令在由至少一个处理器执行时致使该至少一个处理器:检测在对缓存线路的写入中的数据模式;确定该写入的物理地址是否与最后一级缓存中的条目匹配;确定在写入中的数据模式是否和与条目相关联的数据模式匹配;以及响应于确定写入的物理地址与最后一级缓存中的条目匹配,以及确定在该写入中的数据模式和与该条目相关联的数据模式匹配,使最后一级缓存中的条目无效。

在另一实施例中,用于对缓存线路进行去重的系统中的至少一个处理器被进一步致使来:响应于确定该写入的物理地址与最后一级缓存中的条目匹配,以及确定在写入中的数据模式和与该条目相关联的数据模式匹配,在对应的缓存线路过滤器的表中分配用于写入的新条目。

在另一实施例中,用于对缓存线路进行去重的系统中的至少一个处理器被进一步致使来:响应于确定该写入的物理地址与最后一级缓存中的条目匹配,以及确定在该写入中的数据模式不同于与条目相关联的数据模式,利用该写入的数据模式来更新最后一级缓存中的条目。

在另一实施例中,用于对缓存线路进行去重的系统中的至少一个处理器被进一步致使来:响应于确定该写入的物理地址不同于最后一级缓存中的所有条目,以及确定在该写入中的数据模式和与最后一级缓存中的条目相关联的数据模式匹配,在对应的缓存线路过滤器的表中分配用于写入的新条目。

在又一实施例中,用于对缓存线路进行去重的系统中的至少一个处理器被进一步致使来:响应于确定该写入的物理地址不同于最后一级缓存中的所有条目,以及确定在写入中的数据模式不同于与最后一级缓存中的条目相关联的所有数据模式,在最后一级缓存中写入用于该写入的新条目。

本公开的再一实施例涉及一种用于在存储器读取操作期间对缓存线路进行去重的方法,该方法包括:在片上缓存线路过滤器的表中执行查找;基于该查找,确定与读取请求相关联的数据是否在缓存线路过滤器中可用;响应于确定与该读取请求相关联的数据在缓存线路过滤器中可用,从缓存线路过滤器获得数据;以及响应于确定与读取请求相关联的数据在缓存线路过滤器中不可用,从最后一级缓存获得数据。

在另一实施例中,用于在存储器读取操作期间对缓存线路进行去重的方法进一步包括:响应于确定与读取请求相关联的数据在缓存线路过滤器中不可用,在工作存储器缓存溢出表中执行查找。

在再一实施例中,用于在存储器读取操作期间对缓存线路进行去重的方法进一步包括:基于该查找,确定与读取请求相关联的数据是被包含在工作存储器缓存中的重复数据。

在又一实施例中,用于在存储器读取操作期间对缓存线路进行去重的方法进一步包括:基于该查找,确定与读取请求相关联的数据存在于工作存储器缓存中;以及从该工作存储器缓存获得数据。

本公开的适用性的进一步范围将根据下面给出的具体实施方式而变得显而易见。然而,应当理解,具体实施方式和特定示例虽然指示优选实施例,但是仅通过说明的方式给出,这是因为在本公开的精神和范围内的各个改变和修改将根据该具体实施方式而对本领域的技术人员变得显而易见。

附图说明

本公开的这些和其它目的、特征、和特性根据与所附权利要求书和附图相结合的以下具体实施方式的研究,将对本领域的技术人员变得更显而易见,其所有内容形成本说明书的一部分。在附图中:

图1是图示了根据本文描述的一个或多个实施例的、用于对存储器中的缓存线路进行去重的示例系统的框图。

图2是图示了根据本文描述的一个或多个实施例的、示例片上缓存线路过滤器表的框图。

图3是图示了根据本文描述的一个或多个实施例的、示例片外缓存器溢出表的框图。

图4是图示了根据本文描述的一个或多个实施例的、用于在写入操作期间进行存储器去重的示例方法的流程图。

图5是图示了根据本文描述的一个或多个实施例的、用于在写入操作期间进行存储器去重的另一示例方法的流程图。

图6是图示了根据本文描述的一个或多个实施例的、用于在读取操作期间进行存储器去重的示例方法的流程图。

图7是图示了根据本文描述的一个或多个实施例的、被布置用于对存储器中的缓存线路的去重的示例计算设备的框图。

本文提供的标题仅仅是为了方便,并不一定会影响本公开中所要求保护的范围或含义。

在附图中,为了便于理解和便利,相同的附图标记和任何首字母缩略词标识具有相同或类似结构或功能的元件或动作。将在下面的具体实施方式的过程中对附图进行详细描述。

具体实施方式

现在将对各个示例和实施例进行描述。以下描述提供具体细节以用于彻底理解并且实现对这些示例的描述。然而,相关领域的技术人员将理解,本文所描述的一个或多个实施例可以在没有这些细节中的许多细节的情况下实践。类似地,相关领域的技术人员还将理解,本公开的一个或多个实施例能够包括本文中未详细描述的许多其它明显的特征。此外,下面将不会详细示出或者描述一些公知的结构或功能,以便避免不必要地模糊相关描述。

本公开的实施例涉及用于通过检测缓存线路数据模式并且在多个物理地址与该多个物理地址的共同数据值之间建立链路列表来对物理存储器中的缓存线路进行去重的方法和系统。按照这种方式,例如,可以用32位(4字节)的地址来替换64字节的数据。根据至少一个实施例,可以应用该方法和系统以实现对片上缓存的去重。

如上面所提及的,硬件善于检测缓存线路数据模式。例如,可以通过使用数字逻辑门(例如,XOR门)和硬布线导出的、软件限定的、和/或硬件训练的模式来检测缓存线路数据模式。

图1是用于存储器去重的示例系统100。根据本文描述的一个或者多个实施例,系统100可以包括最后一级缓存(LLC)110、缓存线路过滤器(CL过滤器)120、构架130、低功率双倍数据速率存储器控制器(例如,LPDDR3Ctl)140、和具有LPDDR3接口标准150的物理动态随机存取存储器(DRAM)。

根据至少一个实施例,例如,LLC 110可以是8MB的片上静态随机存取存储器(SRAM),并且CL过滤器120可以是检测重复数据模式并且维持地址-数据映射而不是将重复数据写入高速缓冲存储器的缓存线路过滤器。构架130是在系统的各个代理(例如,组件、元件等)之间移动命令/分组的片上互连,例如包括,CPU、GPU、片上SRAM缓存、片外DRAM等。此外,LPDDR3Ctl 140是与JEDEC LPDDR3DRAM对接的存储器控制器。

图2示出了片上缓存线路过滤器表(CL过滤器表)200的示例。根据本文所描述的一个或多个实施例,CL过滤器表200可以形成CL过滤器的一部分和/或由CL过滤器利用(例如,在图1中示出的示例系统中的CL过滤器120)。

如图所示,根据本公开的至少一个实施例,两个数据结构可以被用于构成CL过滤器表200。例如,可以存在限定最常见的重复内容模式(例如,在模式寄存器中的16至64个条目)的一个表210。第二表220可以保存来自第一个表210的模式编号和重复缓存线路的物理地址。

可以在写入操作期间检测缓存线路复本。因此,每个写入可以涉及表查找和比较。如果存在命中,则仅保存地址而不是整个数据字符串。经去重的数据不在LLC(例如,在图1中示出的示例系统100中的LLC 110)中,其仅在表220中。例如,假设表220具有16K个条目并且每个条目具有模式编号和物理地址的4B有效载荷,则表220将覆盖多达1MB的重复内容。

根据一个或者多个实施例,当例如存在模式命中并且确定该模式命中是新的写入地址时,可以向CL过滤器表200分配新条目(例如,由表220表示的数据结构)。例如,可以通过将地址与LLC标签(其中,“标签”是整个缓存线路的地址)相比较来确定(例如识别)新的写入地址。现有地址将与LLC标签相匹配,而新地址将不会与LLC标签匹配。此外,当确定旧写入具有新模式时,可以更新CL过滤器表200中的条目或者使其无效。例如,如果在LLC中找到旧写入数据,但是新写入数据是例如“0000”,则可以将数据从LLC移动到CL过滤器表200中。将这样的事件视为对旧缓存条目的重写。

根据至少一个实施例,当发生“路”冲突时,可以将CL过滤器表200中的条目逐出(例如,去除)并且移动至DRAM溢出表(将在下面提供关于DRAM溢出表和“路”冲突的进一步细节)。应当理解,CL过滤器表200是片上结构,并且因此空间是有限的。因此,当例如达到容量时,可以将CL过滤器表200中的条目逐出至DRAM溢出表。由于在CL过滤器表200中的最近写入的条目具有最高的被读取概率,因此,CL过滤器表200中最旧的条目很可能是被逐出至DRAM溢出表的第一条目。LLC(例如,在图1示出的示例系统100中的LLC 110)中没有重复内容。

如本文所使用的,“n-路”表示可以将地址划分成两个字段-“索引”字段和“路”字段(如由在图2中示出的示例CL过滤器表200的表220中的列和行所表示)。索引字段基于待分配的条目的数目(例如,缓存的深度)。此外,缓存线路偏移基于缓存线路的大小。

例如,在路索引的场境(context)中,“4-路”指示能够容纳多达四个唯一标签,其中标签是在由深度和宽度条目限定的表中的任何框的值。同样,可以将4-路缓存理解为意指在任何表条目中允许四个唯一标签。在这个意义上,例如,当存在试图进入索引的第五标签时,可能出现路冲突。

图3是根据本文描述的一个或者多个实施例的片外存储器(例如DRAM)溢出表300的示例。

DRAM溢出表300扩展了片上SRAM概念以释放额外层级的DRAM缓存空间。例如,4MB的DRAM溢出表能够释放64MB的DRAM缓存空间。应当注意,DRAM溢出表300比片上SRAM慢。片上SRAM空间在MB范围内。DRAM缓存能够在数百MB范围内。数量级越高,时间/成本越高。虽然DRAM溢出表300不一定提供速度效益,但是其确实使缓存覆盖区(cache footprint)看起来比其物理大小更大。效能与未优化的缓存大致相同,因为CL过滤器表(例如,图2中示出的CL过滤器表200)总是比缓存更快快,即使是在DRAM中。

DRAM溢出表300将去重概念应用于DRAM存储器缓存。例如,根据至少一个实施例,DRAM溢出表(128K个条目×32B有效载荷)充当片上缓存线路过滤器的备份。取决于实施方式,DRAM溢出表能够覆盖多达64MB的重复内容。应当注意,散列函数能够被用于分散条目索引以避免冲突并且使传入地址随机化。物理地址为32位,散列为17位。因此,散列通过使用来自标签的31-6的附加位来生成半随机索引。随机化是好的,因为否则只有特定索引会被写入,所以通过这种方式,使用了更多索引来分散索引字段。

根据本公开的至少一个实施例,可选地,可以将DRAM溢出表300用作硬件垃圾收集器。例如,软件可以偶尔进行场境切换并且清理页表,使得DRAM溢出表中的重复地址不再有效。因此,当存在软件可以清理某些页面的可能性时,可以执行周期性垃圾收集以清理属性并且重新设置每个有效位。例如,由于不知道“脏”数据是否在当前页面中,因此可以将这样的数据写入回存储器。页表需要与软件数据一致。因此,对于来自存储器的无效的任何页面,不写回任何脏数据。按照这种方式,垃圾收集允许缓存与主存储器同步。

图4和图5图示了根据本文描述的一个或多个实施例的、在存储器写入操作期间进行去重的示例过程。如在示例过程400和500中示出的,取决于仅在模式中找到命中、仅在物理地址中找到命中、在模式和物理地址两者中找到命中、还是既没有在模式中也没有在物理地址中找到命中,可以关于LLC和/或CL过滤器表(例如,在图1示出的示例系统100中的LLC 110和/或在图2中示出的示例CL过滤器表200,上面对其中的每一个都进行了详细描述)而执行不同的操作。下面提供了关于在写入操作期间的存储器去重的示例过程400和500中的框405至440和505至540中的一个或多个的各个细节。

应当注意,虽然在图4中示出的去重400的示例过程中包括的框中的许多与在图5中示出的去重500的示例过程中的对应框类似,但是框410和510表示可以根据本文描述的一个或多个实施例来应用的两个分离的情况。具体地,在示例过程400的框410处,可以确定新的写入地址是否与LLC中的条目匹配,而在示例过程500的框510处,可以确定新的写入地址是否与CL过滤器表中的条目匹配。

例如,如果新的写入地址命中物理地址上的现有条目,但是写入数据是不同的模式,则能够确定存在利用预定义模式中的一个的在前写入。因此,已经在CL过滤器表中分配了条目。在这样的情况下,只有必要利用正被写入的新模式(例如,全部为1)来更新该模式编号(例如,全部为零)。

在LLC中已经存在条目但是新的写入数据与预定义模式中的一种(例如,全部为1)相匹配的实例中,则可以使该LLC条目无效并且在CL过滤器表中分配新条目。

如果对现有CL过滤器地址的重写导致唯一数据,则使CL过滤器表条目无效并且对LLC的写入继续。

如上所述,物理地址命中意指存在利用预定义模式中的一个的在前写入。如果其是唯一模式,则使在CL过滤表中的条目无效并且作为替代存在对LLC的写入。另一方面,如果该在前写入是不同的模式,则利用新的模式编号来更新该CL过滤器表中的条目。

当存在模式命中时,仅在不存在物理地址命中的情况下向CL过滤器表分配条目。其原因是因为:否则这意指CPU正试图再次写入相同的数据。如果不存在物理地址命中或模式命中,则该过程继续对LLC的写入。

如果新的写入数据是重复的,则使LLC条目无效并且将其移动至CL过滤器表(分配新的CL过滤器表条目,因为如果是在LLC中则能够没有物理地址命中)。

根据本公开的一个或多个实施例,在使用DRAM的情况下,如果片上CL过滤器表条目已满(在图4中未示出),则可能有必要对DRAM溢出表(例如,在图3中示出的DRAM溢出表300)实施RMW(读取-修改-写入),例如{模式#,物理地址}。在这样的场景中,检查DRAM溢出表,修改条目,并且然后向表写入新条目(例如,如果片上CL过滤器表已满)。

可以并行(例如,同时)检查CL过滤器表和LLC。如果片上CL已满,则DRAM溢出表有可能具有该数据。基于索引来进行读取,针对匹配进行检查(修改),并且然后使LLC无效或者对LLC进行写入,并且将状态写入回DRAM溢出。写入动作与CL过滤器表相同。溢出只是CL过滤器数据的更大的表。

图6是根据本文描述的一个或者多个实施例的、在存储器读取操作期间进行存储器去重的示例过程。先前在上面提供了关于在读取操作期间的存储器去重的示例过程600中的框605至640中的一个或多个的各个细节。

图7是被布置用于提供对存储器中的缓存线路的去重的示例性计算机(700)的高级框图。例如,根据本文描述的一个或多个实施例,可以将计算机(700)配置为检测缓存线路数据模式并且在多个物理地址及其公共数据值之间建立链接列表。在非常基本的配置(701)中,计算设备(700)通常包括一个或多个处理器(710)和系统存储器(720)。存储器总线(730)能够被用于在处理器(710)和系统存储器(720)之间进行通信。

取决于期望的配置,处理器(710)能够是任何类型的处理器,包括但不限于:微处理器(μΡ)、微控制器(μθ)、数字信号处理器(DSP)、或者其任何组合。处理器(710)能够包括更多级别的缓存,诸如,级1缓存(711)和级2缓存(712)、处理器内核(713)、和寄存器(714)。处理器内核(713)能够包括算术逻辑单元(ALU)、浮点单元(FPU)、数字信号处理核心(DSP Core)、或者其任何组合。存储控制器(716)还能够和处理器(710)一起使用,或者在一些实施方式中,存储控制器(715)能够是处理器(710)的内部部分。

取决于期望的配置,系统存储器(720)能够是任何类型的存储器,包括但不限于:易失性存储器(诸如,RAM)、非易失性存储器(诸如,ROM、闪速存储器等)或者其任何组合。系统存储器(720)通常包括操作系统(721)、一个或者多个应用(722)、和程序数据(724)。应用(722)可以包括用于对存储器缓存线路进行去重的系统(723)。

程序数据(724)可以包括存储指令,该存储指令在由一个或多个处理设备执行时实现用于对存储器缓存线路进行去重的系统和方法。此外,根据至少一个实施例,程序数据(724)可以包括模式和物理地址数据(725),该模式和物理地址数据可以被用于例如检测缓存线路中的重复数据模式,并且维持地址-数据映射而不是将重复数据写入高速缓冲存储器。在一些实施例中,能够将应用(722)布置为与操作系统(721)上的程序数据(724)一起操作。

计算设备(700)能够具有附加特征或功能、和附加接口以促进基本配置(701)与任何所需的设备和接口之间的通信。

系统存储器(720)是计算机存储介质的示例。计算机存储介质包括但不限于:RAM、ROM、EEPROM、闪速存储器或者其它存储器技术、CD-ROM、数字多功能盘(DVD)、或者其它光学储存器、盒式磁带、磁带、磁盘储存器或者其它磁存储设备、或者能够被用于存储期望的信息并且能够由计算设备700访问的任何其它介质。任何这样的计算机存储介质都能够是设备(700)的一部分。

能够将计算设备(700)实施为小封装技术(small-formfactor)便携式(或者移动)电子设备,诸如手机、智能电话、个人数字助理(PDA)、个人媒体播放器设备、平板计算机(平板)、无线网络观看设备、个人头戴式送受话器设备、专用设备、或者包括上面的功能中的任何一种的混合设备)的一部分。还能够将计算设备(700)实现为包括膝上型计算机和非膝上型计算机配置二者的个人计算机。

前面描述的详细描述已经经由使用框图、流程图、和/或示例来对设备和/或过程的各个实施例进行了阐述。在这样的框图、流程图、和/或示例包含一个或多个功能和/或操作的情况下,本领域技术人员将理解,在这样的框图、流程图、或者示例中的每个功能和/或操作能够由广泛多种硬件、软件、固件、或者几乎其任何组合来单独地和/或共同地实现。在一个实施例中,可以经由专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、或者其它整合的格式来实现本文描述的主题的若干部分。然而,本领域的技术人员将认识到,本文所公开的实施例的一些方面能够整体地或部分地在集成电路中等效地被实现为在一个或多个计算机上运行的一个或多个计算机程序、在一个或多个处理器上运行的一个或多个程序、固件、或者几乎其任何组合,并且根据本公开,设计电路系统和/或编写软件和/或固件的代码也将在本领域的技术人员的技能范围内。

此外,本领域的技术人员将认识到,能够将本文描述的主题的机制作为各种形式的程序产品来分发,并且无论被用于实际执行该分发的非暂时性信号承载介质的特定类型如何,本文描述的主题的说明性实施例都适用。非暂时性信号承载介质的示例包括但不限于以下:可记录型介质,诸如软盘、硬盘驱动器、压缩盘(CD)、数字视频盘(DVD)、数字磁带、计算机存储器等;以及传输型介质,诸如数字和/或模拟通信介质(例如,光纤线缆、波导、有线通信链路、无线通信链路等)。

关于本文几乎任何复数的和/或单数的术语的使用,本领域的技术人员能够从复数转化为单数和/或从单数转化为复数,以适于场境和/或应用。为了清楚起见,可以在此对各种单/复数置换进行清楚地阐述。

因此,已经对本主题的特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作能够按照不同的顺序来执行并且仍然实现期望的结果。此外,在附图中描绘的过程不一定要求所示的特定顺序或者连续顺序来实现期望的结果。在某些实施方式中,多任务处理和并行处理可以是有利的。

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