缓存一致性的制作方法

文档序号:11950065阅读:250来源:国知局
缓存一致性的制作方法与工艺
本公开涉及缓存一致性(cachecoherency)。
背景技术
:某些所谓的缓存一致性系统(在这样的系统中一致性得以跨相同数据的多个潜在副本被保持或至少被监控)利用缓存一致性控制器。缓存一致性控制器(或者也称为“一致性点”、“归属节点(homenode)”)负责监视到存储器地址的访问,并且可以使用所谓的侦听过滤器(snoopfilter)来检查要访问的存储器地址的缓存器版本是否由缓存一致性的系统中的另一缓存器所保持)。为了避免不必要的侦听查询,侦听过滤器可维持指示哪些存储器地址由系统中的哪些缓存器所保持的目录。这样的目录可能是涵盖性的,因为它试图存储针对所有缓存器的所有这种信息。作为示例,可以针对这样的目录提供联合(associative)结构。如果与新缓存器访问相关的条目需要被写入当前所有路径都被占用的联合目录的区域,则一个条目需要被删除。为了保持目录的涵盖性,这随后涉及缓存一致性控制器指令(一个或多个)相关缓存器来删除其相应的缓存线(cachedline)。该处理可被称为后向无效(backinvalidation)。对正常运行的缓存器而言后向无效一般是不希望的,因为它们可能减少缓存器命中的可能性,增大了存储器访问的功率要求和延迟。技术实现要素:在示例布置中,提供了一种缓存一致性控制器,包括:目录,该目录针对一致性缓存结构中的两个或更多个缓存存储器的群组所缓存的存储器地址,指示缓存存储器中的哪些缓存存储器正缓存着这些存储器地址,目录被联合以使得多个存储器地址被映射到不止一个目录条目的联合集合;以及控制逻辑,控制逻辑响应于要被新近缓存的存储器地址,并且被配置为检测被映射到该存储器地址的目录条目的集合中的一个或多个目录条目是否可用于存储关于两个或更多个缓存存储器中的哪些缓存存储器正缓存着该存储器地址的指示;控制逻辑被配置为使得当被映射到该存储器地址的目录条目的集合都被占用时,控制逻辑被配置为选择目录条目的集合中的一个目录条目作为要被覆盖的并且相应的经缓存的信息要被无效的目录条目,控制逻辑电路被配置为根据在两个或更多个缓存存储器之间的选择的可能性、基于由目录条目所指示的两个或更多个缓存存储器的群组中的缓存存储器,来从目录条目的集合中选择要被覆盖的目录条目。在另一示例布置中,提供了一种缓存一致性控制器,包括:用于存储目录的装置,该目录针对一致性缓存结构中的两个或更多个缓存存储器的群组所缓存的存储器地址,指示缓存存储器中的哪些缓存存储器正缓存着这些存储器地址,目录被联合以使得多个存储器地址被映射到不止一个目录条目的联合集合;用于响应于要被新近缓存的存储器地址并且被配置为检测被映射到该存储器地址的目录条目的集合中的一个或多个目录是否可用于存储关于两个或更多个缓存存储器中的哪些缓存存储器正缓存着该存储器地址的指示的装置;以及用于当被映射到该存储器地址的目录条目的集合都被占用时,根据在两个或更多个缓存存储器之间的选择的可能性、基于由目录条目指示的两个或更多个缓存存储器的群组中的缓存存储器选择目录条目集合中的一个目录条目作为要被覆盖的并且相应的经缓存的信息要被无效的目录条目的装置。在另一示例布置中,提供一种包括这样的缓存一致性控制器的缓存一致性数据通信设备。在另一示例布置中,提供一种存储器系统,包括:这样的缓存一致性数据通信设备,以及两个或更多个缓存存储器的群组,每个缓存存储器被连接到缓存一致性数据通信设备。在另一示例布置中,提供了一种方法,包括:存储目录,该目录针对一致性缓存结构中的两个或更多个缓存存储器的群组所缓存的存储器地址,指示缓存存储器中的哪些缓存存储器正缓存着这些存储器地址,目录被联合以使得多个存储器地址被映射到不止一个目录条目的联合集合;响应于要被新近缓存的存储器地址,检测被映射到该存储器地址的目录条目的集合中的一个或多个目录条目是否可用于存储存储关于两个或更多个缓存存储器中的哪些缓存存储器正缓存着该存储器地址的指示;以及当被映射到该存储器地址的目录条目的集合都被占用时,根据在两个或更多个缓存存储器之间的选择的可能性、基于由目录条目指示的两个或更多个缓存存储器的群组中的缓存存储器选择目录条目的集合中的一个目录条目作为要被覆盖的并且相应的经缓存的信息要被无效的目录条目。本技术进一步的各个方面和特征由所附权利要求限定。附图说明将仅通过示例性方式,参考其在附图中示出的实施例来进一步描述本技术,其中:图1示意性地示出了数据处理装置;图2示意性地示出了数据处理元件和相关联的缓存器;图3示意性地示出了包括侦听过滤器的缓存一致性控制器的操作;图4示意性地示出了侦听过滤器目录;图5示意性地示出了侦听目录条目;图6是示出了缓存器驱逐(eviction)操作的示意性流程图;图7是示出了释放侦听过滤器目录中的条目的操作的示意性流程图;图8示意性地示出了缓存一致性控制器的一部分;图9是示出了图8的布置的操作的示意性流程图;图10示意性示出了缓存存储器和数据错误检测器;图11示意性地示出了存储器和存储器控制器;以及图12是标签条目删除的方法的示意流程图。具体实施方式参照附图讨论实施例之前,提供对实施例的以下描述。示例实施例提供了一种缓存一致性控制器,包括:目录,该目录针对一致性缓存结构中的两个或更多个缓存存储器的群组所缓存的存储器地址,指示哪些缓存器正缓存着这些存储器地址,该目录被联合以使得多个存储器地址被映射到不止一个目录条目的联合集合;以及控制逻辑,该控制逻辑响应于要被新近缓存的存储器地址,并且被配置为检测映射到该存储器地址的目录条目集合中的一个或多个是否可用于存储关于两个或更多个缓存存储器中哪些缓存存储器正缓存着该存储器地址的指示;该控制逻辑被配置为使得当映射到该存储器地址的目录条目集合都被占用时,所述控制逻辑被配置为选择所述目录条目集合中的一个作为要被覆盖并且其相应的缓存器信息要被无效的目录条目,该控制逻辑电路被配置为根据在两个或更多个缓存存储器中选择的可能性,基于由该目录条目所指示的两个或更多个缓存存储器的群组中的缓存存储器,来从目录条目的集合中选择要被覆盖的目录条目。本公开提供了潜在的自适应向后无效过程(而不是例如完全的伪随机过程),从而通过应用相应可能性来朝向一个或多个缓存存储器确定向后无效目标。可能性可以是预定的,但在示例布置中,可能性是至少部分地从指示一组缓存存储器中的一个或多个的操作的度量来推导得出的。度量可以基于存储器性能,但在其它示例中度量可以至少部分地指示这样的缓存存储器:该缓存存储器不一定正确地向控制器通知它的缓存器驱逐。后向无效因此可至少部分地以这样的缓存存储器为目标。这具有两个潜在的有益效果。一个有益效果是正常运行的缓存存储器较少受到向后无效的影响。另一有益效果是不能正确地将其驱逐作为信号发送的缓存存储器不太可能受到向后无效的影响(如果事实上向后无效恰好涉及到已经驱逐但尚未通知的缓存线,对缓存存储器性能影响很小,因为对所缓存的线的数量没有影响,尽管由于使用了缓存器标签接入带宽可能存在相对小的影响)。当目录指示另一缓存存储器正缓存着该存储器地址时,缓存一致性控制器可在缓存存储器之间协调缓存存储器之一对该存储器地址的访问。在这种情况下,缓存一致性控制器被配置为将消息发送到由目录指示为要缓存正由另一缓存存储器所访问的存储器地址的缓存存储器,并且从接收到所述消息的缓存存储器接收响应,该响应指示该缓存存储器是否实际正缓存着该存储器地址。这转而允许检测器针对两个或更多个缓存存储器的群组中的每个,检测指示缓存存储器未缓存由目录指示为要由该缓存存储器缓存的存储器地址的响应的接收的实例;控制逻辑被配置为根据对于两个或更多个缓存存储器的群组中的每个检测到的实例的数量,来设置选择的可能性。这允许向后无效以更高可能性被导向发生侦听未命中(snoopmiss)(这指示侦听目录在该条目中不正确)的缓存存储器。侦听未命中是不正确驱逐通知的潜在指示。这因此代表了被配置为使得缓存存储器有更高选择可能性的控制逻辑的示例,从而该控制逻辑更可能响应于关于该缓存存储器检测到指示缓存存储器未缓存由目录指示要由该缓存存储器缓存的存储器地址的响应的数量更多的接收的实例而选择与该缓存存储器相关的目录条目以进行覆盖。在示例布置中,缓存一致性控制器可包括检测器和控制逻辑,该检测器被配置为对于两个或更多个缓存存储器的群组中的每个缓存存储器,检测新近被存储到该缓存存储器的存储器地址的实例,以及从该缓存存储器驱逐的存储器地址的实例;该控制逻辑被配置为根据新近被存储在每个缓存存储器中的存储器地址以及从每个缓存存储器驱逐的存储器地址之间的关系来设置选择的可能性。为减少不正确检测或虚假操作的机率,控制可能被配置从而忽略缓存存储器的操作的初始期间由检测器做出的检测。可用的度量的一个示例是控制逻辑被配置为使得缓存存储器有更高的选择可能性,从而该控制逻辑更可能响应于检测到与从该缓存存储器驱逐的存储器地址的实例相比有更多新近被存储在该缓存存储器中的存储器地址的实例,选择与该缓存存储器相关的目录条目以进行覆盖。对相较于驱逐有更多的写入的情况的检测可以指示驱逐未被正确地通知给控制器。因此,对于不正确地运行缓存存储器可能更容易发生向后无效。作为检测缓存存储器的缓存器操作的替代(或附加),缓存一致性控制器可以包括被配置为检测一个或多个缓存存储器的性能的方面的检测器;该控制逻辑被配置为响应于检测到的性能来设置选择的可能性。性能方面的示例是数据误差率,其中该控制逻辑被配置为使得缓存存储器有更高的选择可能性,从而控制逻辑是更可能响应于检测到关于该缓存存储器更高的数据误差率,选择与该缓存存储器相关的目录条目以进行覆盖。示例性布置可以实现为,例如,包括如上定义的缓存一致性控制器的缓存一致性数据通信设备(比如,互连或片上网络(networkonchip,NoC))装置。示例性布置可以实现为存储器系统,包括:如上定义的缓存一致性数据通信设备;以及一组两个或更多个缓存存储器,每个缓存存储器被连接到该缓存一致性数据通信设备。现在参照附图,图1示意性地示出了数据处理设备,包括:多个数据处理节点10、12、14、16、18、20以及连接到多个数据处理节点的互连电路30。互连电路包括多个接口40、42、44、46、48、50,每个接口与数据处理节点中的相应的一个相关联,该互连电路还包括数据路由电路60,用于控制和监测各数据处理节点之间的数据处理事务。数据处理节点10……20可以是各种类型的节点,例如,诸如CPU(中央处理单元,作为数据处理元件的一个示例)或CPU集群之类的处理元件(其可能具有相关联的缓存存储器);存储器;诸如输入/输出组件之类的外设组件;直接存储器存取(DMA)设备等。一些数据处理节点可以被配置为主节点,并且一些数据处理节点可以被配置为从节点,其中主/从区分指示哪些节点具有对这些节点之间的数据处理事务的控制权。图1的数据处理装置可以被实现为单一集成电路,例如,作为所谓的片上(SoC)系统。替代地,图1的数据处理装置可以被实现为多个离散并互联的系统。互连电路是缓存一致性数据通信设备的示例。另一个示例(未示出,但被认为是本技术的实施例)是所谓的片上网络(NoC)系统。图1的布置是存储器系统的示例,包括:缓存一致性数据通信设备;两个或更多个缓存存储器的群组,其中每个缓存存储器连接到该缓存一致性数据通信设备。在示例实施例中,互连电路可以是所谓的缓存一致性互连电路的示例。这里,术语“一致性”指的是维持存储在整个系统中的相同数据的多个副本之间的正确关系。例如,数据可以存储在作为一个数据处理节点(例如,节点10)的存储器设备中。其它节点(例如,节点12、14)可以是具有其相应缓存器的处理元件,缓存器可以根据处理元件的操作的性质来存储也保寸在存储器10中的数据的一个或多个副本。在一个节点做出到这样的信息的数据处理访问的情况下,有必要确保访问节点正访问所存储信息的最新版本,并且如果对所存储的信息做出任何改动,则或者其它版本正确地自我改变、或者其它版本被删除或无效。数据路由电路60包括提供一致性操作的各种机构和电路。将在下文讨论其示例。图2示意性示出了图1的布置中的示例节点。在此示例中,CPU200参考在相关联的缓存存储器210中存储的数据,其中CPU200和缓存存储器210两者都与互连电路30通信。缓存存储器210存储存储器10中所保存的信息的副本。在一些实例中,两个副本可以是相同的,例如如果副本已在存储器读取操作期间被缓存。在其它实例中,可能出现将导致副本彼此不同的情况,例如,如果数据写操作已由CPU200相对于存储在缓存器210中的数据项的副本进行。在具有多个缓存器的系统中,有必要确保在访问数据项的一个版本之前,已关于其它版本实现的任何变化都针对所有副本充分实现了。因此与缓存一致性功能相关联的逻辑的作用是确保数据处理事务发生之前,如果(由于在对相同数据项的另一个副本做出的变更)要访问的数据项的版本已过期,要访问的副本首先被更新为最新。类似地,如果数据处理事务包括修改数据项,则缓存一致性逻辑避免与数据项的其它现有副本的冲突。将在下文讨论实现这一点的技术。图3示意性示出了包括侦听过滤器的缓存一致性控制器的操作。术语“侦听过滤器”是一个历史悠久的术语,这里用来指具有相关联的“目录”的控制器,其中目录存储指示哪些数据被存储在哪个缓存器中的信息,并且侦听过滤器本身至少有助于到所缓存的信息的数据访问的处理,从而提供缓存一致性功能。在本实施例中,缓存一致性控制器包括侦听过滤器。缓存一致性控制器可以可选地提供其它功能。侦听过滤器可以提供与监督整个缓存一致性系统中的数据访问的处理相关的一些或所有功能。因此在一些实施例中,侦听过滤器可以被视作缓存一致性控制器。在其它实例中,包括侦听过滤器的缓存一致性控制器提供了缓存一致性控制器的示例。下文将要讨论的缓存一致性控制和/或侦听过滤器提供被如下所讨论地配置的控制电路或控制逻辑的示例。在图3中,具有如以上所讨论的目录310的侦听过滤器300形成与事务路由器320(其形成数据路由电路60的一部分)相关联的缓存一致性控制器305的一部分。事务路由器320与一个或多个缓存存储器(其两个示例330、340示于图3中)通信。每个缓存存储器有相关的代理335、345,这些代理负责关于该缓存存储器的数据读写操作的本地处理。侦听过滤器300处理这样的过程的至少一部分:当任何数据处理节点10……20意图访问或修改被作为缓存线存储在任意缓存存储器中的数据时,该节点获取这样做的许可。作为该过程的一部分,侦听过滤300检查任何其它缓存存储器是否有要被修改的行的副本。如果任何其它副本存在于其它缓存存储器处,则这些副本需要被清除和无效。如果这些副本本身包含对在该行中所存储的数据的修改,则在至少一些情况下,缓存一致性控制器305(或侦听过滤器300)指示缓存存储器将该行写回至主存储器。在由节点做出对于存储在缓存存储器中的数据的读访问的情况下,请求读取的节点10…20具有到所缓存的数据的最新正确版本的访问权限是重要的。缓存存储器控制器305监督该过程,从而如果另一缓存器具有所请求数据的最近修改的版本,该另一缓存器写回修改后的版本和/或转发的修改后的版本的副本以供在当前请求节点处缓存。因此,包括侦听过滤器300的缓存一致性控制器305提供了缓存一致性控制器的示例,该缓存一致性控制器被配置为当目录指示调缓存存储器中的一个缓存存储器正缓存着存储器地址时在缓存存储器之间协调缓存存储器中的另一缓存存储器对该存储器地址的访问。侦听操作提供了将消息发送到由目录指示为要缓存正由另一缓存存储器所访问的存储器地址的缓存存储器,并且从接收到该消息的缓存存储器接收响应的示例,该响应指示该缓存存储器是否实际正缓存着该存储器地址。在图1中所示的类型的数据处理系统的示例中,由侦听过滤器300执行的几乎全部检查将被预期为未命中,这是说它们不会揭露多个缓存器之间的数据的复制。但尽管如此,由侦听过滤器300执行的检查对保持缓存一致性是至关重要的。为提高该处理的效率,并且允许侦听过滤器300避免进行必将不命中的检查,侦听过滤器300保持向侦听过滤器300指示哪些数据被存储在哪个缓存器处的目录310。这不仅允许侦听过滤器300(通过避免在特定行未保存在任何缓存器中的情况下进行这样的操作来)减少侦听操作的数量,也允许与侦听操作有关的数据通信可以较好地定向(例如,作为单播或多播通信)至(一个或多个)适当的缓存器,而不是将数据事务广播到所有缓存器。因此,当发起了潜在的侦听操作时,侦听过滤器300咨询目录310,以检测正在考虑的信息是否被保存在一个或多个缓存器中。如果确实需要侦听操作来询问一个或多个缓存器处数据的当前状态,则在适当的情况下,侦听过滤器300可以将查询作为单播或多播通信(而不是广播通信)执行。因此,包括侦听过滤器300的缓存一致性控制器305提供了缓存一致性控制器的示例,该缓存一致性控制器包括例如:目录(如目录310),该目录针对由一致性缓存结构中的两个或更多个缓存存储器的群组所缓存的存储器地址指示正缓存这些存储器地址的缓存存储器,该目录是联合的从而多个存储器地址被映射到不止一个目录条目的联合集合(在此示例中,集合具有m个条目,其中m大于1);控制逻辑,该控制逻辑响应于要被新近缓存的存储器地址,并且被配置为检测映射到该存储器地址的目录条目集合中的一个或多个目录条目是否可存储关于两个或更多个缓存存储器中的哪些缓存存储器缓存着该存储器地址的指示。侦听过滤器300是所谓的涵盖性侦听过滤器,这意味着它具有维持由服从于缓存一致性的所有缓存器所保存的所有数据的完整列表的持续需求。为做到这一点,(作为缓存一致性控制器305的一部分的)侦听过滤器300需要由与缓存存储器相关联的代理器通知缓存器插入已经发生。但为了有效地执行此功能,如果缓存行已经或者由于简单的删除或无效(在未修改数据的情况下)、或者由于写回至主存储器(对于修改的数据)而被驱逐出缓存存储器(从该缓存存储器移除)则其也应收到来自代理的通知。将驱逐作为信号发送是相应的一致性代理的责任。然而,与多个缓存器相关联的一些运营协议可以推荐(recommend)驱逐的信令,但不一定会下达(mandate)这样的命令。在任何情况下,因为软件错误(例如在虚拟存储器系统中)或存储器错误,可能由此存在缓存存储器并不总是能发送关于所有驱逐的信号情况。在本说明书中,“静默驱逐”将指块或其它数据项被从缓存器驱逐而驱逐事件未被通过信号发送至侦听目录。为了保持侦听过滤器目录310的涵盖性,必须在目录310中提供针对每个存储的缓存行的条目。目录310的结构将在下文进一步讨论,但一般而言,目录310被充满是可能的,至少在相对于目录310中适于存储新近被访问的缓存行的区域的方面。这个容量问题可能由于如上所述的静默驱逐问题而加剧。如果静默驱逐发生,则侦听过滤器300无法从目录310清除相应的条目,这意味着当需要将新条目写入目录310时,目录310更可能出现已满的状态。由侦听过滤器300用于处理针对新创建的条目的容量不足问题的技术是执行所谓的“向后无效”。在这里,缓存一致性控制器305或侦听过滤器300选择侦听过滤器目录310中要被删除的条目(所谓的“牺牲者”条目),并且从相应的(一个或多个)缓存器发起对相应缓存行的驱逐。不期望向后无效的高速率,因为它通常会降低缓存存储器占用,并且因此降低缓存命中率,从而导致性能下降和功率增加(两者都由增加的主存储器访问所致)。这也可以增加执行次数,因为主存储器访问往往显著慢于缓存存储器访问。本公开的实施例提供了用于基于这些缓存存储器的一个或多个属性和/或由这些缓存存储器做出的数据访问,来优先选择要经受向后无效的缓存存储器的技术。下面将更加详细地讨论这些技术。图4示意性示出了诸如目录310之类的侦听过滤器目录。侦听过滤器目录310被组织为n×m条目的m路关联群组。在此,目录310中的条目的数量n×m可以被设置为,例如,1.5×缓存一致性系统中的所有缓存行的总数。路的数目m可被设置为低于每个缓存存储器的关联性的的路的数目。纯粹作为示例,在具有多个16路关联缓存存储器的系统中m可以是8。注意,本技术适用于其它关联结构,例如所谓的布谷鸟缓存器(cuckoocache)。关联性和“路(way)”的数目指示针对要由目录310保存的个体数据项的存储存在m个可能的位置。在本示例中,数据项被称为侦听目录“条目”,并且图5示意性地示出了侦听目录条目500。注意,在其它关联结构(例如,其中关联性是由相同系统的多个探针提供的或与之相关,例如包括所谓布谷鸟哈希结构的所谓哈希翻版结构)中,值m可以不固定,而是可以随操作而变化。但是,在(至少)在操作的单一点处,关联性提供了不止一个目录条目的集合作为针对特定操作的位置。侦听目录条目500包括两个部分:标签510和侦听向量520。标签510形成哪条缓存行(换言之,地址空间的哪个区域)由侦听目录条目500引用的说明的一部分。为了确定其中侦听目录条目被存储(或要被存储)到侦听目录310中的位置,与所讨论的缓存行相关的存储器地址的一部分用于选择或索引化目录310的条目的n个集合中的一个。存储器地址的剩余部分用于生成标签510。例如,存储器地址的多个最高有效位可以指示条目要被存储到目录310的n个条目集合中的哪个集合中,并且接下来的最高有效位的另一群组形成标签510。注意,最低有效位不一定需要作为正在考虑的缓存行的存储器地址的规范的一部分,因为缓存行包括表示一些存储器地址的数据。例如,缓存行可以包括8×32位的数据字,这意味着该存储器地址的5个最低有效位与指定缓存行在存储器空间中的位置无关。替代地,一些次高有效位(1esssignificantbit)可以用作索引,并且一些最高有效位形成标签。可就上文所讨论的过程中的任何部分的使用哈希化,从而引入目录310中存储条目的位置的不规则或伪随机分布,其转而能够避免多个缓存结构必须被存储在目录310中的相邻索引处的问题。在根据从正在考虑的存储器地址推导出的索引选择的目录310的条目的集合内,条目可以被存储在任意的m“路”处。当新的条目要被存储在目录310中时,如果存在空的路,则该路可用于存储新存储的条目。如果没有空的路,则不得不执行如上所述的向后无效处理以提供空的路。这将在下文更详细地描述。侦听向量指示哪些缓存器存储由索引和标签(在地址空间中)定义的缓存行。在图5所示的示例中,侦听向量适用于具有四个连贯缓存器并且包括四个位的系统,每个位(通过1或0)指示该缓存行是否由相应的缓存器保存。例如,侦听向量的格式可以如下:根据这种格式,表示为(例如)1001的侦听向量将指示由由该索引和标签定义的缓存行被缓存器A和缓存器D保存、但不被缓存器B和缓存器C保存。侦听过滤器可以维护该侦听目录的内容,因为(作为相干功能的一部分)侦听过滤器(或包括侦听过滤器的缓存一致性控制器)被通知了任何这样的操作:缓冲存储器通过这些操作来获取缓存行的副本。正常情况下,侦听过滤器也被通知缓存器驱逐,但如上文所讨论的,但可以存在其中驱逐没有得以正确地通知的情况。0000的侦听向量将指示侦听目录中的空条目。即使在保存缓存行的最后一个缓存器执行驱逐时条目也得以保存,但该条目随后可随意地被新创建的条目覆盖。当然,应当指出可以使用其它格式。图6是示出了缓存器驱逐操作的示意性流程图。处理步骤被示出在垂直虚线的左侧和右侧。示出在左侧的步骤指示由缓存存储器和/或其相应代理进行的事项。示出在行右侧的步骤指示由(作为缓存一致性控制器305的一部分的)侦听过滤器或缓存一致性控制器305(包括侦听过滤器300)和/或目录310执行的步骤。在步骤600,缓存器驱逐被发起。存在对要求缓存器驱逐的各种完备的理由,或者响应于在响应缓存器处本地执行的处理、或者响应于来自缓存一致性控制器305的指令。在步骤610,如果要驱逐的缓存行的内容是“脏的(diay)”(这是用于指代相较最初从主存储器检索的版本已被修改的缓存行内容的术语),则这些内容被写回至主存储器。在步骤620,代理通知缓存一致性控制器305(以及因此通知侦听过滤器)该驱逐,并且在步骤630侦听过滤器删除或至少无效缓存器中对应于该缓存行的目录条目。步骤630可涉及,例如,将对应于该缓存行的侦听向量的相关位设置为零。如上文所讨论的,如果步骤620出于任何理由而失败,则步骤630未被触发并且不必要的条目保持在侦听过滤器目录310中。图7是示出了释放条目并且在侦听过滤器目录中存储新创建的条目的操作的示意性流程图。该过程涉及当前未被保存在目录中的侦听向量,并且因此涉及生成关于存储特定缓存行的副本的第一缓存器的目录条目。在步骤700,索引值是从在缓存行的主存储器空间中要被存储在目录310中的地址导出的。如以上所讨论的,这可能是缓存行的存储器地址的一部分,或者可以是取决于从该地址推导出的哈希或其它值。它指示该条目要被存储在其中的目录中的条目的集合(图4中示出的示例中的n个集合中的一个)。标签例如是从缓存行的地址的剩余部分生成的。在步骤710,侦听过滤器检查是否与索引相关的所有m个条目都满了,这就是说是否索引的全部m个路都由当前的有效数据占据。如果m路全部包含具有至少有一个非零位的侦听向量的条目(根据上文所讨论的示例格式),则测试得以满足。如果这样,则在步骤720,侦听过滤器300选择将被删除的“牺牲者”条目,并且缓存器相关性控制器305发起对其中缓存行被记录为被存储的任何缓存存储器中(与牺牲者条目)对应的存储行的后备验证。图7中示出了关于一个示例缓存存储器的操作,但对于其中不止一个操作而言可能需要向后无效。相应的缓存行被存储于其中的一个或多个缓存存储器参考该缓存行执行驱逐过程(如图6所示的形式),并且向缓存一致性控制器305确认已做出上述操作。侦听过滤器随后在步骤740将新条目写到新空出的路中。返回到步骤710,如果在步骤710处执行的检查显示对应于所检测的索引的m个条目并非全满,则控制直接传递到步骤740,其中新的条目被简单地写到那些条目中的空路中。。图7因此提供了一种方法的示例,该方法包括:存储目录,该目录针对一致性缓存结构中的一组两个或更多个缓存存储器所缓存的存储器地址,指示缓存着这些存储器地址的缓存器,该目录被联合以使得多个存储器地址被映射到不止一个目录条目的联合集合(例如,m个目录条目的集合,其中m大于1);响应于要被新近缓存的存储器地址,检测映射到该存储器地址的目录条目集合中的一个或多个目录条目是否可用于存储关于两个或更多个缓存存储器中哪些缓存存储器正缓存着该存储器地址的指示;并且当映射到该存储器地址的目录条目集合都被占用时,将该目录条目的集合中的一个目录条目选择为要被覆盖并且其相应缓存器信息要被无效的目录条目,选择是根据在两个或更多个缓存存储器之间的选择的可能性、基于由该目录条目所指示的两个或更多个缓存存储器的群组中的缓存存储器来执行的。在根据图7的技术和那些将在下文讨论的技术的操作中,侦听过滤器300(和/或缓存器相关性控制器305)提供了控制逻辑的示例,该控制逻辑被配置为使得当映射到该存储器地址的目录条目集合全部被占用时,该控制逻辑被配置为将该目录条目集合中的一个选为要被覆盖并且其相应缓存器信息要被无效的目录条目,该控制逻辑电路被配置为根据在两个或更多个缓存存储器之间的选择的可能性、基于由该目录条目所指示的两个或更多个缓存存储器的群组中的缓存存储器,来从目录条目集合中选择要被覆盖的目录条目。据此,图7描述了向后无效过程。过程的一个显著方面是在步骤720处,在目录310中的条目的集合充满的情况下,选择要删除的牺牲者条目。简单地使用(例如)伪随机牺牲者选择技术是可能的,但在其中特定缓存存储器无论出于何种原因(如差的软件设计或误操作)未能正确地将缓存器驱逐通知给缓存一致性控制器305(并因此通知给侦听过滤器300)的系统的情况下,不相称的负担可能被置于其它缓存存储器上以为了应对由一个缓存存储器引起的问题而不得不处理向后无效。因此,在将在下文讨论的示例实施例中,使用除了随机或伪随机牺牲者选择算法以外的牺牲者选择布置。在示例实施例中,侦听过滤器300的侦听操作受到监视。在侦听过滤器300的常规操作中,每次该侦听目录310预测侦听命中(也就是说,该侦听目录指示缓存器正存储着正在考虑的缓存行的副本,因此侦听操作作为缓存一致性维护的一部分被执行),侦听消息就被发送到命中预期所在的一致性代理的缓存器。一般地,在不存在静默驱逐的情况下,侦听查询的结果是命中,也就是说目录中指示特定缓存行被存储在该缓存器处的条目是正确的。然而,如果发生静默驱逐或类似的问题,侦听查询实际上可以是未命中,这意味着尽管目录310指示了特定缓存行曾被缓存,正在考虑的决缓存器并不曾保存该缓存行。在侦听未命中的实例中,事件得以宣称(assert)。这些事件以逐缓存器为基础来计数。牺牲者选择随后可以在检测到的计数的基础上进行。以这种方式动作,侦听过滤300和/或缓存一致性控制器305提供了检测器的示例:该检测器被配置为针对两个或更多个缓存存储器的群组中的每个缓存存储器,检测指示缓存存储器未缓存由目录指示为要由该缓存存储器缓存的存储器地址的响应的接收的实例;该控制逻辑被配置为根据对于两个或更多个缓存存储器的群组中的每个缓存存储器检测到的实例的数量,来设置选择的可能性。例如,控制逻辑可以被配置为使得缓存存储器有的更高选择的可能性,从而从而该控制逻辑更可能响应于关于该缓存存储器检测到指示缓存存储器未缓存由目录指示要由该缓存存储器缓存的存储器地址的响应的数量更多的接收的实例而选择与该缓存存储器相关的目录条目以进行覆盖。参照图8,其示意性地示出了缓存一致性控制器305的一部分;检测器800检测如上所讨论的侦听未命中,并且计数器/过滤器810计数,并且如下文所讨论的,可选地以逐缓存器的基础过滤计数。控制器820控制与上文讨论的步骤720相对应的牺牲者选择过程。例如,侦听未命中的计数可以被直接使用,或者可以例如经过低通滤波。计数可用于设置步骤720处的牺牲者选择的优先级顺序,从而更高的计数或经过滤的计数指示针对牺牲者选择的更高优先级。例如,使用如上所述的四缓存器(A…D)示例,计数可以(使用例如数字)表示为下述总计数:ABCD342130在此示例中,缓存器A具有最高的计数,并且缓存器C具有次高的计数。侦听向量1000指示只有缓存器A保存缓存行。侦听向量0010表示只有缓存器C保存行。所以纯粹以举例的方式,控制器820可以控制牺牲者选择步骤720,以使得:(a)如果相关集合中的任何目录条目具有侦听向量1000,则选择该条目为牺牲者;(b)如果没有,那么如果相关集合中的任何目录条目具有侦听向量0010,则选择该条目;(c)如果没有,那么如果相关集合中的任何目录条目具有侦听向量1010,则选择该条目;(d)如果没有,则在伪随机的基础上选择集合中的任意条目。在本示例中,操作(b)和/或(c)可被省略,例如只给出两个操作阶段(a)和(d)。这些步骤(a)至(d)提供了不同的目录条目被选定为牺牲者的相应可能性(由计数值依次定义)的示例。如果具有侦听向量1000的目录条目存在,则根据步骤(a)至(d)的直接应用该目录条目将被选中(或者如果存在不止一个具有侦听向量1000的目录条目,其中的一个将被选中)。但在其它示例中,规则(a)至(d)或原始计数可与伪随机选择结合以对朝向特定潜在牺牲者的选择进行加权,但仍允许选择中的伪随机元素。例如,可以使用两个加权值,一个依赖于计数(例如,使用计数本身或使用将计数值映射到加权值的预定映射),并且一个依赖于伪随机值。则要选择的牺牲者可以是具有最高组合加权(即例如两个加权的加和或乘积)的条目。在其它实例中,计数可以是经过滤的计数(例如,使用无限脉冲响应(IIR)过滤器),从而在每个侦听操作时,或者在跨缓存器集合的每个检测到的未命中事件时,每个缓存器的现行计数值乘以零和一之间的因子,并且针对其当前已检测到未命中的缓冲器的计数值被递增。替代地,可以使用有限脉冲响应过滤技术,例如通过针对跨最后p次侦听操作、或者跨最后q次侦听未命中(跨所有缓存器)对每个缓存器的侦听未命中取移动平均,其中p和q为预定的整数。这些操作将由计数器/过滤器810来执行。任何或所有的上述技术可以与计数布置结合地被使用,该计数布置忽略或忽视对(比方说)缓存存储器的第一或初始操作周期中检测到的任何侦听未命中事件、或者第一预定数量的检测事件。除了对侦听未命中进行计数之外、或者替代对侦听未命中进行计数,可以使用其它度量并且其示例将在下文讨论。总体而言,图9是示出了图8的布置的操作的示意性流程图,其中在步骤900,度量(例如,侦听命中、经过滤的侦听命中、或诸如下文将要讨论的一个或多个度量的另一度量)关于缓存一致性系统的操作而被检测。在步骤910,对度量进行如上文所讨论的计数和/或过滤,并且在步骤920,根据步骤910的结果来控制步骤720的牺牲者选择过程。图9因此提供了选择的示例,当映射到该存储器地址的目录条目的集合都被占用时,根据在两个或更多个缓存存储器之间选择的可能性、基于由该目录条目所指示的两个或更多个缓存存储器的群组中的缓存存储器,将该目录条目的集合中的一个目录条目选择为要被覆盖并且其相应缓存器信息要被无效的目录条目。在根据图9的技术的操作中,缓存一致性控制器305和/或侦听过滤器300提供被配置为响应于对指示缓存存储器的群组中的一个或多个缓存存储器的操作的度量的检测,来设置选择的可能性的控制逻辑的示例。在步骤900由检测器800检测到的度量的另一示例是由特定缓存器的做出的缓存器插入和缓存器失效或驱逐之间的差异。通常,至少在稳定状态操作中,缓存器插入的数目,或者换言之,新写入的缓存行将预计为类似于缓存器驱逐的数目。如果存在大的差异,例如,如果存在对于迄今检测到的缓存器插入数目或者以移动为基础(高于或低于)至少阈值比例(例如,20%)的差异,则这可能指示未能正确地发信号表示从缓存器的驱逐。以这种方式操作,缓存一致性控制器305和/或侦听过滤器300提供缓存一致性控制器的示例,包括:检测器,该检测器被配置为针对两个或更多个缓存存储器的群组中的每个检测新近被存储在该缓存存储器中的存储器地址的实例以及被从该缓存器驱逐的存储器地址的实例;;该控制逻辑被配置为根据所检测到的新近被存储在每个缓存存储器中的存储器地址的实例与所检测到的被从每个缓存存储器驱逐的存储器地址的实例之间的关系,来设置选择的可能性。例如,控制逻辑可以被配置为使得缓存存储器有更高的选择的可能性,从而该控制逻辑更可能响应于关于该缓存存储器检测到更多这样的实例,而选择与该缓存存储器相关的目录条目以进行覆盖。图10示意性地示出了在其中在步骤900由检测器800检测到的度量可以是形成缓存一致性系统的一部分的每个缓存存储器的数据误差率的系统的情境中的缓存存储器1000和数据错误检测器1010。这里,较高的检测误差率(其可以被如以上所讨论地过滤和/或可以使得操作的初始阶段被如以上所讨论地忽略)将指示该缓存存储器对于向后无效的更高优先级。例如,对于上文讨论的示例性的缓存存储器A……D,牺牲者选择步骤可以由控制器820监督,从而:(a)如果相关的集合中的任何目录条目具有示出仅由具有最高的检测到的误差率的缓存存储器占有,则选择该条目为牺牲者;(b)如果没有,则在伪随机的基础上选择集合中的任意条目。在进一步的实施例中,牺牲者的选择或者至少牺牲者选择的优先级顺序可基于各个缓存存储器的性质、使用或属性来建立。以这种方式操作,缓存一致性控制器305和/或侦听过滤器300提供被配置为检测一个或多个缓存存储器的性能的方面的检测器的示例;控制逻辑被配置为响应于检测到的性能来设置选择的可能性。性能方面的示例是数据误差率,在这种情况下控制逻辑可被配置为使得缓存存储器有更高的选择可能性,从而控制逻辑更可能响应于针对该缓存存储器检测到较高数据错误率,选择与该目缓存存储器相关的目录条目用于覆盖。例如,在使用多个CPU的汽车应用中(每个CPU处理与车辆的操作相关的不同相应功能),与安全关键的功能相关的缓存存储器可被优先考虑,以免受到向后无效的影响,而可优先考虑使与诸如提供音频数据供用户收听之类相关的处理遭受向后无效。图11示意性地示出了存储器1100和控制器1110,其中存储器1100存储定义了哪个缓存存储器应当被优先考虑以进行向后无效的信息、和/或向后无效的优先级顺序,并且控制器1110根据存储在存储器1100中的优先级信息控制牺牲者选择步骤720的操作。例如,在上文讨论的示例性系统的上下文中,所存储的数据可指示A、B、C、D的优先顺序,在这种情况下,控制器1110的操作模式的示例是:(a)如果相关的集合中的任何目录条目具有侦听向量1000,则选择该条目为牺牲者;(b)如果没有,那么如果相关的集合中的任何目录条目具有侦听向量0100,则选择该条目;(c)如果没有,那么如果相关的集合中的任何目录条目具有侦听向量0010,则选择该条目;(d)如果没有,那么如果相关的集合中的任何目录条目具有侦听向量0001,则选择该条目;(e)如果没有,则在伪随机的基础上选择集合中的任意条目。此过程由图12的示意流程图总结,其中在步骤1200,控制器1110检测存储器1100中所存储的指示向后无效的优先级顺序的数据,并且在步骤1210控制器1110根据检测到的数据来控制牺牲者选择。在本申请中,词语“被配置为”被用于表示装置的元件具有能够执行所定义的操作的结构。在这种情境下,“配置”是指硬件或软件的互连的排布或方式。例如,装置可以具有提供所定义的操作的专用硬件,或处理器或其它处理设备(例如处理元件12)可以被编程以执行该功能。“被配置为”并不暗示该装置元件需要以任何方式被改变来提供所定义的操作。虽然本技术的说明性实施例已在本文中参照附图进行了详细描述,但应当理解,本技术不限于那些精确实施例,并且本领域技术人员可以在不脱离由所附权利要求限定的技术的范围和精神的情况下在其中做出各种改变、增加和修改。例如,从属权利要求的特征可以与独立权利要求的特征进行各种组合而不脱离本技术的范围。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1