混合精确和不精确的缓存侦听过滤

文档序号:863604 发布日期:2021-03-16 浏览:14次 >En<

阅读说明:本技术 混合精确和不精确的缓存侦听过滤 (Mixed precise and imprecise cache snoop filtering ) 是由 M·米塔尔 J·达斯蒂达 于 2019-08-01 设计创作,主要内容包括:用于组合的精确和不精确的侦听过滤的电路和方法。存储器(102)和多个处理器(104、106、108、110)耦接到互连电路(152)。多个缓存电路(例如138、122、124)分别耦接到多个处理器电路。第一侦听过滤器(146)耦接到互连,并且被配置为通过存储器的第一地址子集的独立缓存线来过滤侦听请求。第二侦听过滤器(148)耦接到互连,并且被配置为通过存储器的第二地址子集的成组的缓存线来过滤侦听请求。每个组包含多条缓存线。(Circuits and methods for combined accurate and inaccurate snoop filtering. The memory (102) and the plurality of processors (104, 106, 108, 110) are coupled to the interconnect circuitry (152). A plurality of cache circuits (e.g., 138, 122, 124) are respectively coupled to the plurality of processor circuits. A first snoop filter (146) is coupled to the interconnect and configured to filter snoop requests through independent cache lines of a first address subset of the memory. A second snoop filter (148) is coupled to the interconnect and configured to filter snoop requests through the set of cache lines for a second subset of addresses of the memory. Each set containing a plurality of cache lines.)

混合精确和不精确的缓存侦听过滤

技术领域

本公开总体上涉及缓存侦听过滤。

背景技术

缓存存储器是在共享内存,多处理器数据处理系统中被利用来提高性能。通过将数据的本地副本存储在缓存中,可以减少访问共享内存中的数据所需的时间。由于内存是在多个处理器之间共享的,因此必须使用缓存一致性方案来确保每个处理器查看并有权访问缓存中的最新共享数据。

在基于侦听的缓存一致性协议中,每个处理器处的缓存控制电路都会监视用于本地缓存中被缓存的地址的内存总线。当缓存控制电路检测到另一个处理器对地址的写入并且该地址被本地缓存时,缓存控制电路可以将本地副本标记为无效。当处理器寻求访问已缓存并标记为无效的地址时,缓存控制电路将获取最新更新的数据。

侦听请求会降低系统性能。每个缓存控制电路向所有其他缓存控制电路广播缓存线更新的指示。在具有N个处理器的系统中,侦听流量将与N*(N-1)成比例。由于可能无法在处理器之间共享大量缓存线,因此许多侦听流量可能是浪费的。过多的侦听流量会减少可用于访问共享内存的带宽。

缓存控制电路可以用侦听过滤器实现,以减少不必要的侦听流量。通常,侦听过滤器跟踪被缓存的那些地址,并且过滤那些不引用缓存地址的请求。此外,侦听过滤器还可以跟踪请求了可缓存地址的副本的那些处理器或处理器的数量,并且不仅将侦听过滤到缓存的地址,而且还仅将侦听过滤到具有那些被缓存的跟踪的地址的处理器。缓存过滤器通常分为两种:精确缓存过滤器和不精确缓存过滤器。精确的侦听过滤器通过各个缓存线的地址过滤侦听请求。不精确的侦听过滤器通过缓存线组的地址过滤侦听请求。

发明内容

公开的电路布置包括互连电路、耦接到互连电路的存储器、以及耦接到互连电路的多个处理器电路。多个缓存电路分别耦接到多个处理器电路。第一侦听过滤器耦接到互连电路,并且被配置为通过存储器的地址的第一子集的各个缓存线过滤侦听请求。第二侦听过滤器耦接到互连电路,并且被配置为通过存储器的第二地址子集的成组的缓存线来过滤侦听请求。每个组包含多条缓存线。

一种方法包括缓存在多个处理器的缓存电路中的缓存存储器的缓存线。该方法具有第一侦听过滤器通过存储器的第一地址子集的各个缓存线来进行过滤侦听的请求,以及第二侦听过滤器通过存储器的第二地址子集的成组的缓存线进行过滤侦听的请求。每个组包含多条缓存线。

通过考虑以下的详细说明和权利要求,将认识到其他特征。

附图说明

通过阅读以下详细说明并参考附图,所述方法和系统的各个方面和特征将变得显而易见。

图1示出了具有共享存储器和可访问共享存储器的多个缓存代理的示例性系统。

图2示出了由精确侦听过滤器逻辑跟踪的精确跟踪的缓存线的目录和由不精确侦听过滤器逻辑跟踪的不精确跟踪的缓存线的目录。

图3示出了侦听过滤处理的流程图,该侦听过滤处理是精确侦听过滤和不精确侦听过滤的混合。

图4示出了可以根据所公开的方法和电路来配置的示例性可编程IC。

具体实施方式

在以下描述中,阐述了许多具体细节以描述本文中提出的具体示例。然而,对于本领域的技术人员显而易见的是,可以在不给出以下所有具体细节的情况下实践一个或多个其他示例和/或这些示例的变型。在其他情况下,未详细描述众所周知的特征,以免使本文示例的描述不清楚。为了便于说明,在不同的图中可以使用相同的附图标记指代相同的元件或相同元件的其他实例。

精确和不精确的侦听过滤方案(precise and imprecise snoop filteringschemes)在规模和准确性之间进行了权衡。精确的侦听过滤器可伸缩性较差,但可提供精确的过滤。精确的侦听过滤器通过各个缓存线的地址过滤侦听请求。因此,由精确侦听过滤器发出的侦听请求通常不是虚假的,而仅针对所跟踪的缓存单元。精确的侦听过滤器无法很好地扩展,因为需要在侦听过滤器的大小,缓存单元的数量以及跨所有缓存单元跟踪的缓存的累积大小之间进行权衡。

不精确的侦听过滤器准确性较低,但具有可伸缩性。不精确的侦听过滤器会跟踪一组缓存线中缓存状态的总和。跟踪的粒度要比每个缓存线的粒度大。因此,与精确的侦听过滤器相比,不精确的侦听过滤器提供了更大的可伸缩性。由于被标记为存在于不精确的侦听过滤器中的特定缓存线在被跟踪的缓存单元内可能存在或可能不存在,因此由不精确的侦听过滤器发出的侦听请求可能是虚假的。不精确的侦听过滤器可很好地扩展,从而提供了更多的跟踪缓存单元,并且在跟踪缓存单元内提供了更大的累积跟踪缓存大小。

所公开的电路和方法提供了一种混合侦听过滤器,其提供了精确和不精确侦听过滤器的优点。混合侦听过滤器同时使用精确侦听过滤器和不精确侦听过滤器。另外,提供了在多个处理单元的缓存状态的细粒度精确跟踪和粗粒度不精确跟踪之间进行调制的电路,以在精度和规模之间实现最佳平衡。因此,该电路和方法避免了仅采用精确侦听过滤或仅采用不精确侦听过滤的方法的缺点。

混合(hybrid)侦听过滤器在具有在处理器之间共享的内存以及具有在处理器与共享内存之间以及在处理器之间提供点对点连接的互连电路的多处理器系统中特别有用。每个处理器都有一个本地缓存。精确的侦听过滤器按单个缓存线的地址进行过滤侦听请求,而不精确的侦听过滤器按包含一组缓存线的地址进行过滤侦听请求。每个精确侦听过滤和不精确侦听过滤的缺点可以通过基于侦听过滤器的访问模式和容量,在精确和不精确侦听过滤器之间重新分配缓存线的跟踪而减少。

图1示出了具有共享存储器102和可以访问共享存储器的多个缓存代理(cachingagents)104、106、108,…110的示例性系统。每个缓存代理都包括处理电路,该处理电路可以访问共享内存中的数据,并且可以把来自共享内存的数据副本本地存储在本地缓存中。在该示例性系统中,缓存代理104、106、108,…,110分别包括处理器电路114、116、118和120。处理器电路的示例包括中央处理器(CPU),图形处理单元(GPU),数字信号处理器(DSP),以现场可编程门阵列(FPGA)实现的电路,以专用集成电路(ASIC)实现的电路以及各种上述的组合。缓存代理和共享存储器102通过诸如在组件或共享总线之间提供点对点连接的交换机那样的互连电路耦接。

每个缓存代理104、106、108,…,110包括缓存电路。缓存电路包括缓存存储器和缓存控制电路。缓存存储器为缓存线的数据提供存储,并且可以被设置为关联的并且包括用于缓存线的标签。缓存控制电路可以包括转换后备缓冲器(TLB)和控件,用于从本地缓存或从共享内存中检索数据,将数据写回到共享内存,为外部侦听请求提供服务以及管理缓存的数据和缓存状态作为这些侦听请求的结果,通过缓存逐出算法管理缓存中的可用存储,以及使缓存中的缓存线无效等。缓存代理104、106、108和110包括缓存控制电路138、140、142,和144。

尽管精确跟踪的缓存和不精确跟踪的缓存被显示为在每个缓存代理中的单独的块,但是将认识到,精确跟踪的缓存线可以与缓存存储器中不精确跟踪的缓存线交织。精确侦听过滤器146跟踪被精确跟踪的缓存线的地址,而不精确侦听过滤器148跟踪被不精确跟踪的缓存线的地址。被精确跟踪的缓存线通过各个缓存线的地址进行跟踪。使用不精确的侦听过滤,对缓存线的地址按组进行跟踪。对于精确跟踪的每个缓存线,精确侦听过滤器存储缓存线的地址。对于不精确跟踪的缓存线,不精确侦听过滤器将存储一个标记,该标记映射到多个缓存线的地址。精确侦听过滤器146跟踪的共享内存的地址子集分别被显示为缓存代理104、106、108和110中的块122、126、130和134,以及不精确侦听过滤器148跟踪的共享存储器的地址子集分别被显示为缓存代理104、106、108和110中的块124、128、132和136。

精确侦听过滤器146和不精确侦听过滤器148以及控制电路150,由耦接到互连152的本地代理(home agent)112托管。该本地代理是为缓存代理之间的相关事务提供服务的电路。本地代理为给定的地址空间保持一致性,而不必是用于主存储器的存储器控制器电路。由给定事务流程所需的数据和所有权响应由本地代理提供。

精确侦听过滤器(PSF)146通过各个缓存线的地址过滤侦听请求。为了访问缓存,PSF控制发送侦听请求到本地缓存中具有缓存线A的那些缓存代理。不精确侦听过滤器(ISF)148通过成组的缓存线过滤侦听请求。为了访问缓存线A,ISF控制发送侦听请求到那些具有与缓存线A映射到同一组的缓存线(包括缓存线A)的缓存代理。

控制电路150在由PSF跟踪的缓存线与由ISF跟踪的缓存线的组之间实施分配,解除分配和/或转换。缓存代理可潜在地具有精确和不精确跟踪的缓存线的组合,具有全部精确跟踪的缓存线或具有全部不精确跟踪的缓存线,具体取决于缓存线的历史访问模式。不同的缓存代理可以在缓存地址的精确跟踪和不精确跟踪的部分之间具有不同的分配。

控制电路150可以将被精确跟踪的缓存线重新分配给不精确跟踪的一组,并且可以将不精确跟踪的一组重新分配给被精确跟踪的缓存线。从PSF到ISF的缓存线跟踪的重新分配可以是响应于从PSF移出缓存线而为新的缓存线地址腾出空间。可以将新的组添加到ISF,以覆盖移出的缓存线。从ISF到PSF的缓存线的重新分配可以是响应于策略选择,例如所引用的缓存线仅由一个缓存代理拥有或对缓存线地址的引用的时间局部性(temporallocality)。

其他策略选择可以包括访问静态分配的地址窗口和访问动态确定的地址热点。静态分配的地址窗口可以是一系列地址,其中对性能至关重要的同步数据结构由多个处理器共享。同时请求访问或拥有窗口中的数据是经常发生的,并且地址范围内的缓存线适合于由PSF管理。

可以通过长期监视对缓存线的访问来识别动态确定的地址热点。与典型的基于LRU的分配(其包括短期监视)相反,地址热点检测以及PSF中的后续优先分配,是基于对频繁访问的地址的长期确定或对特定地址的频繁争用。

图2示出了由精确侦听过滤器逻辑202跟踪的精确跟踪的缓存线的目录204和由不精确侦听过滤器逻辑206跟踪的不精确跟踪的缓存线的目录208。目录204可以被实现为由缓存线标签寻址的存储电路,而目录208可以被实现为由缓存组标签寻址的存储电路。

目录204中的每个条目包括缓存线标签210,线状态212和存在状态向量(presencevector)214。缓存线标签标识出由PSF逻辑202跟踪以及由线状态和存在状态向量描述的缓存线。线状态可以指示引用的缓存线是否是共享的,独占的,有效的等。存在状态向量可以是一组比特,其中每个比特对应于特定的缓存代理,并且比特的状态指示引用的缓存线是否由缓存代理缓存。

目录208中的每个条目包括缓存组标签216,组状态218,和存在状态向量220。缓存组标签标识由ISF逻辑206跟踪并由组状态和存在状态向量描述的一组缓存线。组状态可以指示该组的任何缓存线是否被共享,排他地持有,有效等。存在状态向量可以是一组比特,其中每个比特对应于一个特定的缓存代理,并且该比特的状态指示该组的任何缓存线是否都由缓存代理缓存。

每个组状态218可以包括访问计数。响应于缓存代理对关联的缓存组标签的访问,增加访问计数,并且响应于关联的缓存组标签所引用的缓存线的逐出通知,减少访问计数。维持访问计数支持响应于与缓存组标签相关联的访问计数递减为零,从ISF自动逐出缓存组标签。维持访问计数可允许跟踪同一缓存代理对同一缓存组中的缓存线的多次访问。如果没有访问计数,则无法对缓存组中的一个缓存线执行由一个缓存代理发出的逐出通知,因为必须继续维护存在于缓存代理的缓存中的缓存组的其他缓存线的存在状态向量。

图3示出侦听过滤过程的流程图,该侦听过滤过程是精确侦听过滤和不精确侦听过滤的混合。控制电路150执行各种操作,并协调在PSF 146和ISF 148中执行的其他操作。

在方框302,PSF-ISF分配电路接收参考例如特定的缓存线A的一致性请求(coherence request)。缓存一致性请求包括写请求和读请求。除了传达缓存一致性请求是写入还是读取(或无法归类为写入或读取的其他类型)之外,这些请求通常还会根据请求类型和缓存线在其他缓存中的先前状态传达其他信息。例如,缓存一致性请求可以传达写缓存线的缓存代理已保留排他的(因此希望在不与其他缓存进行通信的情况下执行将来的写操作)或共享副本的信息。另一个示例是缓存一致性请求,该请求传达读取缓存线的缓存代理想要接收排他的(因此可能希望在不与其他缓存进行通信的情况下执行将来的写操作)或共享副本的信息。

在判断框304,控制电路150检查参考的缓存线A是存在于PSF 146还是存在于ISF148中。在PSF中的存在性可以通过将在一致性请求中指定的缓存线的地址与PSF中缓存线标签进行比较来确定。类似地,在ISF中的存在性可以通过确定指定的缓存线地址的组标签,然后确定在ISF中是否存在所确定的组标签,而被确定。哈希(hash)函数可用于将缓存线地址映射到缓存组标签。

判断框306进行基于缓存地址线是在PSF 146还是在ISF 148中被跟踪的过程。响应于在PSF中跟踪了缓存地址线A,在框308,控制电路150更新缓存线A在PSF中的状态与一致性请求一致,并且在必要时将一致性请求发送到与PSF中的缓存线关联的存在状态向量中指示的缓存代理的缓存控制器。在仅更新存在状态向量的情况下,不需要为共享组状态和共享读取请求发送缓存一致性请求。

响应于缓存线A属于在ISF 148中跟踪的一组缓存线,在框310,分配电路向在与ISF中的组标签相关联的状态存在向量中指示的缓存代理的缓存控制器发送一致性请求。但是,在ISF和请求类型中存在缓存组状态的组合,在这种组合中,不必向所有在缓存线A组中存在缓存线的处理器发送缓存一致性请求。例如,在仅更新存在状态向量的情况下,对于共享组状态和共享读取请求,不需要发送缓存一致性请求。

在判断框312,控制电路150确定是否应从ISF 148中删除缓存线A所属的组,以便将缓存线A添加到PSF 146,还是应从ISF中简单地删除该组。该确定可以基于应用特定的策略选择。例如,某些应用程序可能需要更高的准确性和更少的可伸缩性,这将导致该策略对从ISF迁移到PSF不太抗拒。某些应用程序可能需要更大的可伸缩性和更低的准确性,这将导致该策略更难以从ISF迁移到PSF。可以用来触发将缓存线从ISF分配给PSF的简单示例指示符是由缓存代理指定的对缓存线的唯一所有权(sole ownership)的一致性请求。指定缓存线的共享副本的一致性请求不会触发从ISF到PSF的缓存线重新分配。类似地,如果控制电路从缓存一致性请求确定缓存线只能存在于单个所有者中,并且还与ISF中的所有者计数1匹配,则可以将组重新分配给PSF。另一个例子是控制电路从缓存一致性请求的类型确定在处理请求之后缓存线的所有者计数将为1。所有者计数可以由在存在状态向量中设置的比特的数目来指示。

通过跟踪对组中的缓存线的访问次数,并在访问次数达到规定的时间段(本地时间)内达到阈值数时,将一组缓存线从ISF 148重新分配给PSF 146,可以对策略造成更多或更少限制。响应于确定不应将缓存线重新分配给PSF,在框314,控制电路更新缓存线A所属的缓存线的组的组状态。所述状态是基于缓存一致性请求的类型。

响应于确定应将缓存线重新分配给PSF 146或响应于在框310访问计数递减为零,应将缓存线简单地逐出,在框316,分配电路将缓存线A所属的一组缓存线逐出从ISF 148中删除。在逐出缓存线组时,分配电路从ISF中删除组标签。如果访问计数为零,则如判断框318和框330所示,不需要进一步的动作。否则,如果访问计数不等于零,则判断框318将处理引导至框320以开始将组中所有的缓存线加到PSF。由于从ISF撤出的一组缓存线的状态适用于该组中的所有缓存线,因此无法确定单个缓存线的状态,从而将组中的所有缓存线添加到PSF。从ISF中删除的组的状态将应用于添加到PSF的每条缓存线。哈希函数可用于将缓存线映射到组标签,而哈希函数的反函数可用于生成完整的缓存线地址以进行重新分配。

通过将针对缓存组中所有缓存线的状态查询侦听发送给存在状态向量指示的所有者,可以提高从ISF 148转换到PSF 146的效率。因此,在PSF中仅跟踪那些仍存在于任何缓存代理中的缓存线。此外,还可以在PSF中跟踪跨缓存代理的更新的累积缓存状态。状态查询侦听的总体效果是重新获得PSF中位置和状态的准确性。

对于从ISF 148逐出的组中添加到PSF 146的每个缓存线,可以执行框320、322、324、326和328的处理。类似地,在如在判断框304处确定的那样,在ISF和PSF都没有跟踪参考的缓存线的情况下,可以执行框320、322、324、326和328的处理。

在判断框320,控制电路150确定PSF 146是否具有空间可供用于在判断框304确定的被逐出的缓存线或丢失的缓存线。目录204具有用于最大数量的缓存线标签和状态的存储空间。如果有空间可用,则在框322,控制电路将PSF目录中的槽(slot)分配给缓存线,并相应地更新标签,缓存线状态,和存在状态向量。

如果在PSF 146中没有用于缓存线的空间,则在方框324,控制电路开始执行逐出处理,以为PSF目录中的缓存线腾出空间,并将缓存线从PSF重新分配给ISF 148。在方框326,控制电路从PSF中选择用于驱逐的缓存线,例如最近最少访问的缓存线,并确定在PSF中与被选择用于驱逐的缓存线属于同一组的所有缓存线。属于同一组的缓存线也被逐出。

在从PSF 146逐出缓存线时,在方框322和328的处理之前读取缓存线的标签,状态和存在信息,以便保留要添加到ISF 148的信息。在框328处,控制电路在ISF中为包括选择用于逐出的缓存线的缓存线组分配槽。另外,在框328处,控制电路将聚合的缓存状态(该组中的缓存线状态的逻辑或(OR))和被选择为逐出的缓存线的存在状态向量存储在ISF的分配的槽中。通过使用哈希函数将缓存线映射到缓存组标签,可以改善与创建缓存线组和逐出相关的处理性能。缓存线从PSF逐出到ISF可以因此减少在组中的缓存线之间的空间和/或时间关系。在方框322,控制电路如上所述地将缓存线添加到PSF。

图4示出了可以根据所公开的方法和电路来配置的示例性可编程IC 402。可编程IC也可以称为片上系统(SOC),其包括处理器子系统410和可编程逻辑子系统430。处理器子系统410可以被编程为通过执行用户程序来实现用户设计的软件部分。该程序可以被指定为配置数据流的一部分,或者可以从片上或片外数据存储设备中检索。处理器子系统410可以包括用于执行一个或多个软件程序的各种电路412、414、416和418。电路412、414、416和418可包括例如一个或多个处理器核,浮点单元(FPU),中断处理单元,片上存储器,存储器缓存,和/或缓存一致性互连。

可编程IC 402的可编程逻辑子系统430可以被编程为实现用户设计的硬件部分。例如,可编程逻辑子系统可以包括多个可编程资源432,其可以被编程为实现在配置数据流中指定的一组电路。可编程资源432包括例如可编程互连电路、可编程逻辑电路、和配置存储单元。可编程逻辑通过使用可编程元件来实现用户设计的逻辑,该可编程元件可以包括例如函数发生器、寄存器、算术逻辑等。可编程互连电路可以包括通过可编程互连点(PIP)互连的长度不同的大量互连线。

可以通过将配置数据流加载到配置存储器单元中来对可编程资源432进行编程,配置存储器单元定义了如何配置可编程互连电路和可编程逻辑电路。例如,将用于可配置锁存器的配置存储单元设置为第一值可以指导该可配置锁存器用作单边驱动的锁存器。将配置存储单元设置为第二值可以指导可配置锁存器用作双沿驱动锁存器。然后,各个存储器单元的集合状态确定可编程资源432的功能。配置数据可以从存储器(例如,从外部PROM)被读取,或者由外部设备被写入到可编程IC 402。在一些实施方式中,被包括在可编程逻辑子系统430中的配置控制器434可以响应于可编程IC的通电,通过从与可编程IC耦接的非易失性存储器中获取配置数据并加载配置数据到配置存储单元,来对可编程资源进行编程。在一些其他实施方式中,可以通过由处理器子系统410执行的启动过程将配置数据加载到配置存储单元中。

可编程IC 402可以包括各种电路,以将处理器子系统410与在可编程逻辑子系统430内实现的电路进行互连。在该示例中,可编程IC 402包括可以在处理器子系统410和可编程逻辑子系统430的各个数据端口之间路由数据信号的核心交换机426。核心交换机426还可以在可编程逻辑或处理子系统410和430的任一项与可编程IC的各种其他电路(例如内部数据总线)之间路由数据信号。替代地或附加地,处理器子系统410可以包括直接与可编程逻辑子系统连接的接口--旁路掉核心交换机426。这样的接口,例如,可以通过使用由ARM发布的AMBA AXI协议规范(AXI)来实现。

在一些实施方式中,处理器子系统410和可编程逻辑子系统430还可经由存储器控制器421来读取或写入到片上存储器422或片外存储器(未示出)的存储器位置。存储器控制器421可被实现为与一种或多种不同类型的存储器电路进行通信,所述存储器电路包括但不限于双数据速率(DDR)2,DDR3,低功耗(LP)DDR2类型的存储器,无论是16位,32位,16位带ECC等。列出了存储器控制器421能够与之通信的不同存储器类型的列表,仅出于说明的目的,并不旨在作为限制或穷举。如图4所示,可编程IC 402可以包括存储器管理单元420和转换后备缓冲器424,以将子系统410和430使用的虚拟存储器地址转换为由存储器控制器421使用的物理存储器地址,用于访问特定的存储器位置。

可编程IC可以包括用于与外部电路进行数据通信的输入/输出(I/O)子系统450。I/O子系统450可以包括各种类型的I/O设备或接口,包括例如闪存类型的I/O设备,更高性能的I/O设备,更低性能的接口,调试I/O设备,和/或RAM I/O设备。

I/O子系统450可以包括图示为460A和460B的一个或多个闪存接口460。例如,一个或多个闪存接口460可以被实现为被配置用于4比特通信的四串口外围接口(QSPI)。一个或多个闪存接口460可以被实现为并行的8位NOR/SRAM类型的接口。一个或多个闪存接口460可被实现为配置用于8比特和/或16比特通信的NAND接口。应当理解,所提供的所描述的特定接口是出于说明而非限制的目的。可以使用具有不同比特宽度的其他接口。

I/O子系统450可以包括一个或多个接口462,其提供比闪存接口460更高的性能水平。接口462A-462C中的每一个都可以分别耦接到DMA控制器464A-464C。例如,一个或多个接口462可以被实现为通用串行总线(USB)类型的接口。一个或多个接口462可以被实现为千兆以太网类型的接口。一个或多个接口462可以被实现为安全数字(SD)类型的接口。

I/O子系统450还可以包括一个或多个接口466,例如接口466A-466D,它们提供比接口462更低的性能。例如,一个或多个接口466可以被实现为通用I/O(GPIO)类型接口。一个或多个接口466可以实现为通用异步接收器/发送器(UART)类型的接口。一个或多个接口466可以以串行外围接口(SPI)总线类型的接口形式实现。一个或多个接口466可以以控制器区域网络(CAN)类型的接口和/或集成电路(I2C)类型的接口的形式实现。一个或多个接口466也可以以定时器类型的接口的形式实现。

I/O子系统450可以包括一个或多个调试接口468,例如处理器JTAG(PJTAG)接口468A和跟踪接口468B。PJTAG接口468A可以提供用于可编程IC 402的外部调试接口。跟踪接口468B可以提供用于从处理器子系统410或可编程逻辑子系统430接收调试(例如,跟踪)信息的端口。

如所显示的,接口460、462、466和468中的每一个都可以耦接至多路复用器470。多路复用器470提供可以直接路由或耦接至可编程IC 402的外部引脚的多个输出,例如,其中放置可编程IC 402的球。例如,可编程IC 402的I/O引脚可以在接口460、462、466和468之间共享。用户可以通过配置数据流配置多路复用器470,以选择要使用的接口460-468,以及因此,其经由多路复用器470被耦接到可编程IC 402的I/O引脚。I/O子系统450还可以包括结构多路复用器I/O(FMIO)接口(未示出),以将接口460-468连接到可编程逻辑子系统的可编程逻辑电路。附加地或替代地,可编程逻辑子系统430可以被配置为在可编程逻辑内实现一个或多个I/O电路。在一些实施方式中,可编程IC 402还可包括具有用于电源和/或安全管理的各种电路的子系统440。例如,子系统440可以包括电源管理单元446,该电源管理单元446被配置为监视和维持用于为可编程IC 402的各个子系统供电的一个或多个电压域。在一些实施方式中,电源管理单元446可以当空闲时,禁用各个子系统的电源以减少功耗,而不会禁用正在使用的子系统的电源。

子系统440还可以包括安全电路,以监视子系统的状态以确保正确的操作。举例来说,子系统440可包含一个或一个以上实时处理器442,其经配置以监视各种子系统的状态(例如,如状态寄存器444中所指示)。实时处理器442可以被配置为响应于检测到错误而执行许多任务。例如,对于某些错误,实时处理器442可以响应于检测到错误而生成警报。作为另一个示例,实时处理器442可以重置子系统以尝试恢复子系统以校正操作。子系统440包括可用于互连各种子系统的交换机网络448。例如,交换机网络448可以被配置为将各种子系统410、430和440连接到I/O子系统450的各种接口。在一些应用中,交换机网络448也可以用于将实时处理器442与要被监视的子系统的处理器442隔离开。某些应用标准(例如,IEC-61508SIL3或ISO-26262标准)可能需要这种隔离,以确保实时处理器442不受其他子系统中发生的错误的影响。

在一个示例中,提供了一种电路装置。这样的电路布置可以包括:互连电路;耦接到互连电路的存储器;耦接到互连电路的多个处理器电路;分别耦接到多个处理器电路的多个缓存电路;第一侦听过滤器,其耦接到所述互连并且被配置为通过所述存储器的第一地址子集的各个缓存线过滤侦听请求;以及第二侦听过滤器,其耦接到互连并被配置为通过存储器的第二地址子集的成组的缓存线过滤侦听请求,其中每个组包括多条缓存线。

一些这样的电路布置还可以包括耦接到第一侦听过滤器和第二侦听过滤器的控制电路,其中控制电路可以被配置为将由第二侦听过滤器过滤的一组缓存线重新分配给由第一侦听过滤器过滤的缓存线。

在一些这样的电路布置中,控制电路还可以被配置为基于对缓存线组的引用的时间局部性来选择缓存线组以重新分配给第一侦听过滤器。在一些这样的电路布置中,控制电路还可以被配置为基于该组缓存线中的缓存线的唯一所有权来选择该组缓存线以重新分配给第一侦听过滤器。

在一些这样的电路布置中,控制电路还可以被配置为基于确定缓存线组中的频繁访问的缓存线来选择该缓存线组以重新分配给第一侦听过滤器。

在一些这样的电路布置中,控制电路还可以被配置为:确定属于为35次重新分配选择的组的缓存线;以及将属于该组的缓存线重新分配给第一个侦听过滤器。

在一些这样的电路布置中,控制电路还可以被配置为将第一缓存线从第一侦听过滤器重新分配给由第二侦听过滤器过滤的第一组。

在一些这样的电路布置中,控制电路还可以被配置为:确定由第一侦听过滤器过滤的、属于第一组的缓存线;将属于第一组的缓存线的缓存线状态聚合为组状态;存储与第一组的标签相关联的组状态;并从第一个侦听过滤器中删除第一组中的缓存线。

在一些这样的电路布置中,控制电路还可以被配置为响应于第一15个侦听过滤器的目录已满,将第一缓存线从第一侦听过滤器重新分配给由第二侦听过滤器过滤的第一组。

在一些这样的电路布置中,控制电路还可以被配置为基于最近最少使用的第一缓存线来选择要从第一侦听过滤器重新分配给由第二侦听过滤器过滤的第一组的第一缓存线。

在一些这样的电路布置中:第一侦听过滤器包括被配置为存储各个缓存线的多个缓存线标签的第一存储器;以及第二侦听过滤器包括被配置为分别存储与缓存线的组相关联的多个组标签的第二存储器,其中每个组标签映射到多个缓存线。

在一些这样的电路布置中,控制电路还可以被配置为:确定由第二侦听过滤器过滤的第一组缓存线的所有者计数;以及响应于第一组的所有者计数等于1并且第一组30的访问计数大于零,将第一组缓存线的缓存线从第二侦听过滤器重新分配给第一侦听过滤器。

在另一个示例中,可以提供一种方法。这样的方法可以包括:在多个处理器的缓存电路中缓存存储器的缓存线;通过第一侦听过滤器过滤,通过所述存储器的地址的第一子集的各个缓存线进行侦听请求;通过第二侦听过滤器过滤存储器的第二地址子集的缓存线的侦听请求,其中每个组包含多条缓存线。

一些这样的方法还可以包括由控制电路将由第二侦听过滤器过滤的一组缓存线重新分配给由5个第一侦听过滤器过滤的缓存线。

一些这样的方法还可以包括由控制电路基于对缓存线组的引用的时间局部性来选择缓存线组以重新分配给第一侦听过滤器。

一些这样的方法还可以包括由控制电路基于缓存线组中的缓存线的唯一所有权来选择用于重新分配给第一侦听过滤器的缓存线组。

一些这样的方法还可以包括由控制电路基于确定缓存线组中的频繁访问的缓存线来选择用于重新分配给第一侦听过滤器的缓存线组。

一些这样的方法还可以包括:确定属于被选择用于重新分配的组的缓存线;并将属于该组的缓存线重新分配给第一侦听过滤器。

一些这样的方法还可以包括将第一缓存线从第一侦听过滤器重新分配给由第二侦听过滤器过滤的第一组。

一些这样的方法还可以包括:确定由第一侦听过滤器过滤的属于第一组的缓存线;将属于第一组的缓存线的缓存线状态聚合为组状态;与第一组的标签相关联地存储组状态;以及从第一侦听过滤器中去除第一组中的缓存线。

尽管在某些情况下可以在各个附图中描述各方面和特征,但是应当理解也可以将一个附图中的特征可以与另一附图中的特征进行组合,即使这些组合未被明确显示为或明确描述为组合。

所公开的方法和系统被认为适用于用于过滤缓存一致性侦听请求的各种系统。通过考虑说明书,其他方面和特征对于本领域技术人员将是显而易见的。该方法和系统可以被实现为可配置成执行软件的一个或多个处理器,被实现为专用集成电路(ASIC),或者被实现为可编程逻辑设备上的逻辑。说明书和附图仅被认为是示例,本发明的真实范围由所附权利要求指示。

17页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:传感器数据处理设备、传感器数据处理方法、传感器装置以及信息处理设备

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类