缓存内容管理的制作方法

文档序号:15200135发布日期:2018-08-19 10:42阅读:125来源:国知局

本公开涉及一种数据处理系统。更具体地,涉及数据处理系统中的缓存内容的管理。



背景技术:

将数据处理系统中的数据项的副本更靠近地缓存到数据处理操作所需的点(例如,靠近cpu)使得能够大大避免与从存储器中取回数据项相关联的显著延迟。然而,数据缓存通常必须比它们支持的存储器设备小得多,因此在任何给定时间从存储器设备选择保持在缓存设备中的数据项子集,都必须小心地进行管理以确保缓存有效地工作。可以用来将数据项填充到缓存中的一种机制是,由数据处理组件(例如,cpu)的数据访问使得数据项从存储器中被取回并且之后数据项可以被存储在本地缓存中的机制,其假设已从存储器中取回一次,很可能在不久的将来再次访问。替代地,尤其是在多数据处理组件和多缓存系统中,甚至在与该目标缓存相关联的处理组件请求该数据项之前,数据项可被主动地推送到目标数据缓存中。然而,这要求缓存具有可用的空间来容纳这种未经请求的数据,并且管理这样的系统增加了对缓存的管理的复杂性。



技术实现要素:

本文描述的至少一个示例提供了一种用于相干互连系统的集线器设备,包括:接口电路,用于从指定至少一个数据项的请求主设备接收一组相干协议事务的缓存预填充请求;以及事务控制电路,响应于接收到缓存预填充请求以使得指定至少一个数据项的一组相干协议事务的缓存预填充触发被发送到目标设备。

本文中描述的至少一个示例提供了一种操作相干互连系统中的集线器设备的方法,包括:从指定至少一个数据项的请求主设备接收一组相干协议事务的缓存预填充请求;以及通过使指定至少一个数据项的一组相干协议事务的缓存预填充触发被发送到目标设备,来响应缓存预填充请求的接收。

本文中描述的至少一个示例提供了一种用于相干互连系统的主设备,包括:缓存;接口电路,用于从指定至少一个数据项的集线器设备接收一组相干协议事务的缓存预填充触发;以及缓存控制电路,响应于接收到缓存预填充触发,用来:基于至少一个其他标准来确定是否对缓存预填充触发进行操作;并且当缓存控制电路确定对缓存预填充触发进行操作时,使得指定至少一个数据项的一组相干协议事务的缓存填充事务从接口电路被发送,使得至少一个数据项被缓存在缓存中。

附图说明

将通过仅示例的方式参照附图中所示的实施例进一步描述本技术,其中:

图1示意性地示出了一个实施例的具有多个主设备和多个从属设备(slavedevice)的相干互连系统;

图2示意性地示出一个实施例中的相干互连系统中的集线器设备的一些组件;

图3示意性地示出了一个实施例中的主设备的一些组件;

图4示意性地示出了一个实施例中集线器设备与请求主设备、目标主设备、从属设备和另一主设备的交互;

图5示出了一个实施例中在请求主设备、目标主设备、另一主设备和主节点(集线器设备)之间交换的一组通信消息的示例;

图6示出了一个实施例中在请求主设备、目标主设备、主节点(集线器设备)和从属数据存储设备之间交换的一组通信消息的示例;

图7示出了一个实施例中在请求主设备、主节点(集线器设备)和从属数据存储设备之间交换的一组通信消息的示例;

图8示出了一个实施例的方法中采取的一系列步骤。

具体实施方式

在一些示例的实施例中,提供了一种用于相干互连系统的集线器设备,包括:接口电路,用于从指定至少一个数据项的请求主设备接收一组相干协议事务的缓存预填充请求;以及事务控制电路,其响应于接收到缓存预填充请求以使得指定该至少一个数据项的一组相干协议事务的缓存预填充触发被发送到目标设备。

用于相干互连系统的集线器设备因此可以是将构成系统其余部分的多个不同设备连接在一起的相干互连组件,因此该集线器设备被布置为响应于可以从系统中的特定主设备接收到的新类型的请求,并且形成相干互连系统的设备被布置为彼此交换的一组相干协议事务的一部分。从请求主设备接收到的该缓存预填充请求指示至少一个数据项,并且作为响应,集线器设备的事务控制电路引起缓存预填充触发(其也形成系统的设备被布置为彼此交换的一组相干协议事务的一部分)被发送到指定该至少一个数据项的系统中的目标设备。因此,应该注意的是,至少在第一种情况下,事务控制电路被发送到目标设备的是缓存预填充触发,而不是该至少一个数据项本身。尽管如此,缓存预填充触发至少指定了数据项,并因此作为响应,目标设备本身可以评估它是否希望响应于缓存预填充触发,从而使得至少一个数据项被带入其缓存。这将在至少一个数据项被要求之前用至少一个数据项预填充它的缓存。然而,应该注意,目标设备对缓存预填充触发的响应还可以取决于目标设备的本质。上述示例预先假设目标设备是主设备,但在其他示例中它可能是从属设备,诸如存储器,其可以通过(一个或多个)提供指定的数据项来响应缓存预填充触发,即将被缓存在其他地方。

当目标设备确定如何对缓存预填充触发做出反应时,可以根据一系列标准来评估是否应该这样做。例如,这些标准可能是缓存当前的繁忙程度和请求是否可以处理的类型,并且可以使用各种数据,诸如先前访问的数据地址的存储的指示和何时访问这些地址、对先前触发作出响应(该响应导致有用的数据存储在缓存中)的频率的启发式等。因此,总的来说,特别要注意的是,用于使至少一个数据项被预填充到目标缓存中的机制不会将未经请求的数据推送到目标缓存中,而是“建议”缓存可以选择用所指定的至少一个数据项进行预填充。因此这避免了需要在缓存中保留可用存储空间,以预期未经请求的数据从另一系统组件和支持处理这种未经请求的数据项的接收所需的相关联的管理机制推送到其上。然而,提供了一种机制,通过该机制,一个系统组件(请求主设备)可以使用其具有的关于整个系统内发生的数据处理的知识,以使得对另一系统组件(目标设备)做出这种预填充“建议”,并且因此可以得到由整个系统实施的数据处理的更高效率。

设想作为从集线器设备发送的缓存预填充触发的接收者的目标设备可以在系统内采取各种各样的形式,并且许多不同类型的设备可以被配置为响应于这种缓存预填充触发。然而,在一些实施例中,目标设备是包括缓存的目标主设备,并且缓存预填充触发指示目标主设备应该确定是否使得该至少一个数据项的副本被取回到其缓存中。此外,是否使得该至少一个数据项的副本被取回到缓存中的确定,可以在包括缓存的这种目标主设备中(无论严格来说是由目标主设备自身,还是由缓存自身(或至少与其直接相关的控制电路)或两者的组合)以多种不同方式执行。无论哪种方式,根据上面的讨论可以理解,目标主设备处的本地确定用于确定是否应该使得该至少一个数据项的副本被取回。此外,还应理解,目标设备可以仅选择忽略缓存预填充触发,例如,当其当前太忙或太满而不能容纳该至少一个数据项时。

当其自身的缓存中具有可用的该至少一个数据项的缓存副本时,发出缓存预填充请求的请求主设备可以这样做。例如,缓存预填充请求可以采取写入请求的形式,该写入请求是由请求主设备在对其至少一个数据项的缓存副本进行本地处理之后发出。相应地,如果目标设备通过请求该至少一个数据项的副本来选择响应该缓存预填充触发,则在这样的实施例中,由请求主设备保存的缓存副本可以提供该副本并且避免从存储器中取回的延迟。因此,在一些实施例中,缓存预填充请求指定请求主设备具有可用的至少一个数据项的缓存副本。

可替代地,在一些实施例中,缓存预填充请求指定将从存储至少一个数据项的另一从属设备取回该至少一个数据项。因此,在这样的实施例中,请求主设备可以指示其没有可用的至少一个数据项的缓存副本(或至少对于目标设备提供该副本是不适当的),并且它可以选择指定要从中取回数据项的位置(该另一从属设备)。

指定要从中取回数据项的另一从属设备的这种缓存预填充请求,可以被发送到各种接收者,无论发送到之后自身可以选择请求从另一从属设备取回该至少一个数据项的另一主设备,还是其他实施例中,缓存预填充请求可以被发送到另一从属设备自身。因此,在一些这样的实施例中,目标设备是另一从属设备,并且缓存预填充触发指示该另一从属设备应该将该至少一个数据项的副本返回到集线器设备。换言之,可以理解,在这样的实施例中,(用于数据处理的)该至少一个数据项的最终目的地不由请求主设备指定,并且该机制使得该至少一个数据项被取回到集线器设备,并且当前可能不再进行。然而,存储器延迟通过使得(一个或多个)数据项被缓存到更靠近它或稍后将需要的位置,而被降低。集线器设备可以被提供有其自身的本地存储器,诸如缓冲器或缓存,从而保存这样的数据项副本,之后它可以在适当时被提供给系统中的其它设备。

因此,设想缓存预填充请求可以包括或不包括目标设备的规范。在一些实施例中,缓存预填充请求指定目标设备,而在其他实施例中,缓存预填充请求不指定目标设备。不指定目标设备可以以适合于所定义的一组相干协议事务的各种方式来实现,但是在一些实施例中,在缓存预填充请求中提供的用于指定目标设备的字段指示无效的目标设备标识符。

集线器设备可以以各种方式对缓存预填充请求做出响应,该缓存预填充请求不指定目标设备(或至少指示无效目标设备标识符的位置),但是在一些实施例中,事务控制电路响应于接收到缓存预填充请求,以使得缓存预填充触发被发送到其中存储该至少一个数据项的另一从属设备,从而使得该至少一个数据项被缓存在与集线器设备相关联的缓存中。因此,集线器设备可以具有,在接收到的缓存预填充请求中没有指定目标设备的情况下自身添加一个目标的能力,该目标设备例如可以是存储该至少一个数据项的从属设备,如上所述,可以仅仅通过提供该至少一个数据项来响应触发。此外,这然后可以使得该至少一个数据项被缓存在与集线器设备相关联的缓存中。该缓存可以采取各种形式,但是例如可以是连接到集线器设备的系统缓存。

然而,设想从另一从属设备取回至少一个数据项不需要导致该至少一个数据项被存储在集线器设备处或集线器设备附近,并且在一些实施例中,事务控制电路响应于接收到缓存预填充请求,使得缓存预填充触发被发送到存储该至少一个数据项的另一从属设备,从而使得该至少一个数据项被存储在位于另一从属设备与集线器设备之间的临时存储设备中。该临时存储设备可以是例如另一缓存,诸如位于另一从属设备(例如,存储器)和集线器设备之间的三级(l3)缓存,它还可以是为此目的提供的各种缓冲器或任何其他形式的临时存储设备,从而将该至少一个数据项保持在比另一从属设备接近集线器的地方(即,相对于集线器设备具有较低的取回延迟)。

在其他实施例中,事务控制电路响应于接收到缓存预填充请求,其不指定目标设备来选择缓存预填充触发被发送到的目标设备。因此,集线器设备可以指定预填充触发被发送到的目标设备(例如系统中具有专用缓存的主设备)。

集线器设备可以根据许多不同标准来选择目标设备,但是在一些实施例中,集线器设备还包括数据存取模式电路,以存储所连接的主设备的数据存取模式,并且事务控制电路被布置为根据数据存取模式来选择目标设备。这使得集线器设备能够基于这些数据存取模式来确定其可能预期的目标设备,即该至少一个数据项将很快有用。数据存取模式本身可以采用各种形式,但是可以例如被提供作为线程表、地址范围等。

在一些这样的实施例中,数据存取模式包括何时连接的主设备已经访问以数据存取模式表示的数据的指示。换言之,这样的实施例中的数据存取模式还包括时间分量,使得集线器设备能够更好地判断哪个连接的主设备最有可能例如基于它已经最近访问过这个至少一个数据项,从具有该至少一个数据项的其缓存的预填充中收益。

相干互连系统中的集线器设备可以包括探听过滤器电路,使其能够在必须发生在系统内的探听操作中发挥作用,从而维持所需的相干,并且在一些实施例中,集线器设备可以进一步使用该探听过滤器电路和当选择缓存预填充触发被发送到的目标数据设备时存储的缓存的数据的指示。例如,如果存储在探听过滤器电路中的缓存的数据的指示指出目标设备已经保存该至少一个数据项的有效的最新副本,则集线器设备将必要地将缓存预填充请求发送到该目标设备。此外,存储在探听过滤器电路中的缓存的数据的指示还可以指示所连接的主设备所保持的缓存的数据项的相干状态,并且该至少一个数据项的缓存副本的相干状态还可以被用于抑制缓存预填充触发向目标设备的传输,诸如当目标设备保存数据的“唯一”副本时,但缓存预填充请求已经指示该至少一个数据项的“共享”副本是其主题。

因此,在一些实施例中,缓存预填充请求指定了当被缓存时该至少一个数据项将被标记的相干状态。通常,请求主设备可以能够通过指定相干状态来提高系统的效率,这取决于它对于例如数据是否可能仅被读取或可能被修改的认知。

因此,在一些这样的实施例中,相干状态是可修改状态,指示当缓存该至少一个数据项时,允许在无需与相干互连系统进一步交换相干协议事务的情况下,来更新该至少一个数据项。这可以例如被标记为“唯一”相干状态,当期望相关联的处理设备将要修改相应的缓存行的内容(即,当缓存时的该至少一个数据项)时这可以是有益的。

在其它这样的实施例中,相干状态是不可修改的状态,该状态指示当该至少一个数据项被缓存时,需要在允许更新该至少一个数据项之前与相干互连系统进一步交换相干协议事务。这可以例如被标记为“共享”相干状态,其可以被使用在当预期相关联的处理设备将仅需要缓存行(即,缓存的至少一个数据项)以供读取时,并且然后,确保这个缓存行(即,该至少一个数据项)被缓存在以这种方式标记的状态中使得其他设备中的行的其他副本不需要被无效是有益的。

在一些示例的实施例中,存在一种操作相干互连系统中的集线器设备的方法,包括:从指定至少一个数据项的请求主设备接收一组相干协议事务的缓存预填充请求;以及通过使得指定该至少一个数据项的一组相干协议事务的缓存预填充触发被发送到目标设备,来响应缓存预填充请求的接收。

在一些示例的实施例中,存在用于相干互连系统的主设备,包括:缓存;接口电路,用于从指定至少一个数据项的集线器设备接收一组相干协议事务的缓存预填充触发;以及缓存控制电路,响应于接收到缓存预填充触发,进行:基于至少一个其他标准来确定是否对缓存预填充触发进行操作;并且当缓存控制电路确定对缓存预填充触发进行操作时,使得指定该至少一个数据项的一组相干协议事务的缓存填充事务从接口电路发送,以使该至少一个数据项被缓存在缓存中。

现在将参照附图描述一些特定实施例。

图1示意性地示出了在一个实施例中实现本技术的数据处理系统10。从图中可以看出,这是一个相对异构的系统,其包括多个不同的主设备和多个不同的从属设备,但是其他实施例同样可以更加同构化。图1所示的主设备包括中央处理设备14、图形处理设备16、直接存储器存取设备(dma)18和i/o相干主设备20。该i/o相干主机20提供了到网络接口卡(nic)40的桥接以与另一网络(未示出)进行通信。图1的示例中所示的从属设备包括存储器22和24、外部设备26以及系统缓存28。所有这些设备之间的通信和数据传送由相干互连12来传递,该相干互连12在本文中也被不同地称为主节点或集线器设备。从图中还可以看出,cpu装置14被示出为包括特定的cpu块30和相关联的本地(即,l1)缓存34,图形处理设备16被示出为包括特定的gpu块32和本地(l1)缓存36,并且i/o相干主设备20还被提供有其自身的本地(l1)缓存38。图1中所示的设备之间的通信采取来自一组相关协议事务的被定义的格式消息的形式,其使得存储在所示系统周围的多个位置中的数据项的多个副本的相干能够被维持。这组相干协议事务可以被各种定义为适用于所考虑的系统,但是一个合适的示例是limitedofcambridgeuk(英国剑桥的arm有限公司)提供的5chi(相干集线器接口)规范。本文公开的技术涉及可以定义一组相干协议事务以使得这样的规范能够进一步允许在实现该规范的系统中的缓存的预填充的方式,如以下将参考附图更详细描述的。

图2示意性地示出了诸如由图1中的相干互连12表示的相干互连设备(即,主节点或集线器设备)的一些组件。在图2中示出该集线器设备为包括接口电路14,在图中通过三个单独的组件示出该接口电路以辅助视觉说明,但在一些实施例中,取决于必须提供给接口的特定设备,接口电路的这些部分实际上可能在物理上彼此分离。接口电路14被布置为从系统中的主设备接收缓存预填充请求,并且这被传递到事务控制电路16。响应于接收到缓存预填充请求,事务控制电路经由接口电路14使得缓存预填充触发被发布到目标设备。(在该实施例中)该目标设备原则上可以是连接到图1中的互连12的任何设备。如下面将更详细描述的,响应于接收到该缓存预填充触发,目标设备(例如,主设备和/或其缓存)可以选择请求使得在缓存预填充触发中指定的至少一个数据项被取回用于在该缓存中的临时存储。在其他示例中,目标设备是从属设备(诸如,图1所示的存储器22和24),并且因此缓存预填充触发可以使这些从属设备中的一个将在缓存预填充请求中指定的至少一个数据项的副本进行返回,使得然后该至少一个数据项可以被存储在系统内的任何位置:例如在存储器和相干互连之间的路径上、在相干互连中、在与相干互连(诸如,系统缓存28)相关联的存储设备中、或者由相干互连12转发到包括缓存的任何主设备。

因此,如图2所示,集线器设备经由其接口电路14连接到系统缓存28和从属存储设备40(实际上可以是图1所示的存储器22或24中的一个)。集线器设备12还包括事务控制电路16可以参考的数据存取模式存储设备42,其可以例如当从请求主设备接收的缓存预填充请求不指定目标设备时执行。然后,事务控制电路可以能够基于存储在数据存取模式存储设备42中的数据存取模式,来确定应该将缓存预填充触发发送到的适当目标设备。数据存取模式存储器42可以存储各种不同类型的数据,但是在本实施例中,设想它包括地址范围以及主设备进行这种访问时何时访问这些地址的指示。因此,一旦接收到指定给定数据项的缓存预填充请求(通过其存储器地址),事务处理控制电路可以涉及存储在数据存取模式存储设备42中的地址范围并且确定最近访问过该数据项的主设备是否存储了指示,因此表示该缓存预填充触发被发送到的目标设备的优秀候选者。

然而,图2中所示的事务控制电路16还具有对探听过滤器电路44的参考,并且可以利用存储在其中的信息来确定是否将缓存预填充触发转发到目标设备、和/或哪个目标设备应该接收缓存预填充触发(如果未在所接收的请求中指定)。在相干互连内提供探听过滤器,对于本领域普通技术人员来说是已知的,并且仅出于简洁的目的,在此不对其做出详细描述。然而,在探听过滤器电路包含被缓存在系统中各个位置的所存储的数据项的指示和这些项的相干状态的情况下,在本技术的上下文中,例如,接收到的缓存预填充请求指定了目标设备,以及探听过滤器电路中的信息指示所指定的目标设备已经保存了该至少一个数据项的有效副本的情况下,事务控制电路使用了该信息。可以得出结论,不需要将缓存预填充触发发送到该目标设备。在其他示例中,可以防止缓存预填充触发被发送到目标设备,其中缓存预填充请求中的数据项的指定相干状态与存储在系统中的另一缓存中并记录在探听过滤器电路44中的该数据项的缓存相干状态是不兼容的。例如,在缓存预填充请求指定(如果激活)缓存预填充触发应该使得该至少一个数据项具有“唯一”状态,但是探听过滤器的内容指示该数据项已经作为“唯一”被存储为另一位置中的情况下,则不进行缓存预填充触发到指定的目标设备的传输,因为该目标设备针对该数据项的唯一副本的请求当前不能得到满足。最后,事务控制电路16被示出为还包括缓存器16,其使得集线器设备12能够临时保存在系统中其他设备之间转换的数据项的副本。

图3示意性地示出了主设备50,该主设备是上述被称为目标设备的示例,即,缓存预填充触发的接收者。主设备50包括接口电路52,通过接口电路它经由相干互连与系统的其它组件交换相干协议事务。在主设备50内总地示出了缓存,其在图中被示为包括缓存存储设备54和其相关联的缓存控制器56。然而,如图所示,组件56实际上可以被提供为接口控制器,并且缓存控制器或接口控制器可以处理经由接口电路52接收到的缓存预填充触发。无论如何,在所示出的实施例中,该控制器包括存取模式存储58和启发式存储60。基本上,在接收到缓存预填充触发时,与缓存相关联的控制部分决定是否对该触发采取行动并且发出对从系统中的其他位置取回并存储在缓存存储设备54中的(一个或多个)指定数据项的请求。这个做出决定的过程可以分层级地实现,因为在第一个决定层级,控制器必须确定缓存是否甚至能够响应于接收到的特定缓存预填充触发(以相干协议事务的形式)。如果不是,那么处理仅在该点结束。在决定的下一层级,控制器可以确定缓存当前是否太忙或者没有可用空间(或至少其愿意清除的缓存牺牲品)从而容纳(一个或多个)所提议的数据项。最后,控制器可以参考其存取模式存储器58和/或其启发式存储60来确定是否响应于缓存预填充触发。存取模式存储58可以包括例如那些线程将访问的线程和相关联的地址的表,使得控制器可以基于当前正在该主设备上执行的处理来确定(一个或多个)所指定的数据项是否落入其预计在不久的将来由当前或即将到来的线程访问的地址范围内。可选地或另外地,存取模式存储设备可以存储地址范围和相关联的时间指示,其示出何时最近访问了某些存储器地址或存储器地址范围,并且控制器可以在此基础上决定是否认为值得主动地将该至少一个数据项取回到缓存中。启发式存储60可以在统计基础上被配置为指示对触发请求(通常或针对特定地址或地址范围)的肯定响应导致缓存的数据项对主设备有用(即,在主设备对其进行请求之前,使得该数据项被短暂存储在缓存中)的频率。然后,这些指示可以指导在控制器内定义的阈值,以决定是否响应于给定的接收到的缓存预填充触发。

图4示意性地示出了根据本技术的数据处理系统的一些组件和它们的交互,以说明一些系统组件可以如何另一系统组件进行交互的总体原则。在该系统中,请求主设备70发布被发送到集线器设备(互连)72的缓存预填充请求。此示例的缓存预填充请求指定了目标主设备。在接收到缓存预填充请求的基础上,集线器设备72标识该指定的目标,并且使得缓存预填充触发被发送到该目标。在图4所示的示例中,这是包括其本身的l1缓存76的目标主设备74。作为响应(如上面参考图3所述的示例),目标主设备确定是否响应于缓存预填充触发。当它确实响应时,相应的数据请求被返回到集线器设备72。响应于该数据请求,集线器设备72可以从其本地可访问的系统缓存存储器78中取回指定的数据,或通过向从属存储设备80发送数据请求,该从属存储设备然后将数据返回到集线器设备。取决于所请求的数据项的相干状态,集线器设备72还可以向系统中的(至少一个)其他主设备82发送探听请求,该主设备还包括其自身的本地缓存84,并且作为响应,另一主设备提供探听响应,集线器设备72可以考虑该探听响应以确定如何响应从目标主设备74接收到的数据请求。因此最终,如果来自从属设备的数据取回和来自另一主设备的探听响应允许,则然后数据从集线器设备72被转发到目标主设备74的缓存76。

图5示出了在一个示例中在相干互连系统的设备之间交换的一组通信(相干协议事务)的示例。该特定示例示出了当请求主设备向主节点(集线器设备)发送作为缓存预填充事务请求的事务的情形,该缓存预填充请求被分类为“写入唯一(writeunique)”并指定目标主设备。本领域的普通技术人员将认识到由limitedofcambridge,uk提供的规范的这个术语。因此,重要的是,应注意,本公开利用已知的术语作为描述该事务的基础,以辅助本领域的普通技术人员的理解,但是本公开随后根据本文中首次呈现的技术来完善该事务(即,使其成为缓存预填充请求)。响应于此,主节点向请求主设备发送确认消息以进行,除非当前没有空间可用来接收数据(由写请求中的请求主设备指定)。主节点还将缓存预填充触发发送到目标主设备,该缓存预填充触发指定在缓存预填充请求中指定的(一个或多个)数据项,并且主节点还向系统中的(至少一个)其他主设备发布“探听唯一(snoopunique)”,然后以相应的探听响应作出响应。响应于缓存预填充触发,目标主设备发布触发确认(指示它已正确接收到触发消息),在图5的示例中,目标主设备决定对触发采取行动,并且还向主节点发布“读取唯一(readunique)”数据请求。接收到确认以从主节点继续进行的请求主设备开始将(一个或多个)指定的数据项传送到主节点。一旦主节点已经接收到所有探听响应,该主节点向请求的主设备发布完成响应,指示与缓存预填充请求相关的动作现在已经完成。此外,一旦主节点已经从请求主设备接收到数据,它就开始将该数据传送到目标主设备,该目标主设备设备响应以完成传送确认。由请求主设备在其“写入唯一”中指定的(一个或多个)数据项已经被传送到主节点(如果合适,可以从该处写入到存储器中),并且该数据还被提供给目标主设备用于对其缓存进行预填充。

图6示出了在以下示例中的在系统组件之间的通信的示例:请求主机基于用于被分类为“readonceshare”事务的读取事务的协议发布缓存预填充请求,该读取事务指定目标主设备但不提供任何数据。如上所述,仍重要的是注意到,这种已知术语的使用作为描述这一事务的基础仅仅是为了便于本领域普通技术人员的理解,但是本公开根据本文中首次呈现的技术(即,使其成为缓存预填充请求)来完善该事务。在接收到这种类型的缓存预填充请求时,主节点生成缓存预填充触发,该缓存预填充触发被发送到指定的目标主设备,并且在所示的示例中,主节点推测性地已经发布“readnosnoop”事务到存储指定数据的从属设备。需要注意,这种读取是推测性的,因为还不知道目标主设备实际上是否会响应于触发并且请求数据,但是延迟可以通过这种推测性读取而被减少。响应于接收到缓存预填充触发,目标主设备向主节点发布触发确认,然后当它选择对触发采取行动时,向主节点发出“readshared”事务。大约在这个时候,一旦主节点向目标主设备发布缓存预填充触发,则主节点还用完成信号向请求主设备确认缓存预填充请求事务。作为对readnosnoop的响应,从属设备将所请求的数据传送到主节点,主节点随后在收到数据时将该数据转发给目标主设备。最后,当目标主设备在接收到数据(并填充其缓存)时,向主节点发布完成传送确认。

图7示出了一个示例,其中,请求主机发布既不指定目标设备也不提供(一个或多个)指定数据项的缓存预填充请求。响应于这样的缓存预填充请求,主节点确定(一个或多个)指定的数据项的位置并且向对应的从属设备(数据存储)发布“readnosnoop”。然后,它向请求的主设备发布一个完成确认,表明已经对缓存预填充请求已经采取行动。然后从数据存储设备被返回的数据可以根据系统配置和其当前要求来填充系统中的各种不同的存储组件。通常,如图7所示,响应于readnosnoop请求,从属设备将所请求的数据发送回主节点。然而,如图中所示,系统还可以包括介于从属设备和主节点之间的一些中间存储设备(无论是缓存还是缓冲器),并且返回数据可以替代地填充该中间存储设备。然后,中间存储设备用信号通知向主节点的传送完成(并且数据不再被传送)。然而,当主节点是数据传送的目标时,主节点然后可以选择本地地(例如,在相关联的系统缓存中)存储数据。取决于具体的系统配置,主节点可以替代地或附加地用信号通知整个过程的完成。数据是否已被存储在中间存储设备中或在与主节点相关联的存储设备中,一旦完成事务,就可以将该数据以信号发送回请求主设备。

图8示出了在一个实施例的方法中在相干互连系统的主节点中执行的一系列步骤。流程始于步骤100,其中由采用缓存预填充请求形式的本地(集线器)结点来接收相干协议事务。然后,流程进行到步骤102,集线器确定该请求是否为写入事务的形式。如果是,则流程进行到步骤104,在该处确定是否在该请求中指定目标设备。在这种情况下,流程进行到步骤106,其中集线器将缓存预填充触发发送到该指定的目标设备,然后在步骤108,集线器发送探听请求到系统中的其他缓存。然后,那些其他缓存将在步骤110处提供探听响应和流的循环,直到所有这样的探听响应已经被接收,包括合并任何部分缓存行以形成暂时被缓冲在集线器中的全缓存行。一旦完成,流程进行到步骤112,在该步骤中,确定目标是否请求了指定的数据,以响应于接收到缓存预填充触发。如果否,则流程仅在步骤114结束,而如果是,则流程进行到步骤116,在该处,集线器将指定的数据转发到指定的目标,并且流程在步骤118结束。

继续考虑步骤104,当确定写入事务未指定缓存预填充请求的目标时,则在步骤120,集线器确定其是否可以指定合适的目标。这可以参考如上所述的数据存取模式存储和/或探听过滤器来完成。如果它选择否(或不能),则流程进行到步骤122,其中,集线器从存储数据的从属存储设备将数据取回到中间存储设备(如上面参考图7描述的)或取回到集线器本地的存储(例如,系统缓存)中,并且流程在步骤124结束。

继续考虑步骤120,如果集线器然后指定目标,则流程前进到步骤126,其中,集线器将缓存预填充触发发送到该目标,并且此后流程进行到步骤112(如以上所描述)。

现在继续考虑步骤102,如果确定缓存预填充请求不是写入事务,则流程进行到步骤128,在该步骤中确定是否在请求中指定目标。如果否,则流程进行到步骤130,在此处(如上所述)集线器可以指定目标。然后,当集线器没有指定目标时(步骤132),集线器仅从存储在中间存储设备或系统缓存的从属存储设备中取回数据(以与上面参照步骤122所描述的相同的方式)。该流程在步骤134结束。然而,如果集线器能够或选择在步骤130处指定目标,则流程进行到步骤136,其中集线器启动从存储数据的从属存储设备取回指定的数据。流程然后进行到步骤126(如上所述)。

现在转而考虑步骤128,在指定目标的情况下,流程进行到步骤138,其中集线器设备确定其探听过滤器是否示出了指定的目标当前不保存数据的有效副本。在这种情况下,然后流程进行到步骤136(如以上所描述)。然而,如果探听过滤器数据确实显示指定的目标当前保存了(一个或多个)指定数据项的副本,则在步骤140确定缓存预填充请求是“唯一(unique)”类型还是“共享(shared)”类型。如果请求是“共享”,则流程在步骤142结束。然而,当请求是“唯一”时,则在步骤144确定目标是否具有以“共享”相干状态存储的数据,并且在这种情况下,流程进行到步骤136(如上所述)。这使得目标即使在具有“共享”状态下的副本,也能够获得处于“唯一”状态的相应的缓存行(即,(一个或多个)指定的数据项)。然而,如果步骤144确定,目标具有处于“唯一”状态的数据,则流程在步骤146结束。

总的来说,总体上提出了一种在相干互连系统中操作集线器设备和目标设备的装置和相应的方法。从指定至少一个数据项的请求主设备接收系统中的一组相干协议事务的缓存预填充请求,并且集线器设备通过使得指定该至少一个数据项的一组相干协议事务的缓存预填充触发被发送到目标设备来作出响应。该触发可以使得目标设备请求将指定的至少一个数据项取回并带入缓存。由于目标设备因此可以决定是否响应于触发,所以它不会主动接收缓存的数据,简化其配置,同时仍然允许一些数据被预先缓存。

在本申请中,词语“被配置为...”或“被设置为”用于表示装置的元件具有能够执行所定义的操作的配置。在这种情况下,“配置”是指硬件或软件互连的布置或方式。例如,该装置可以具有提供所定义操作的专用硬件,或者处理器或其他处理设备可以被编程为执行该功能。“被配置为”或“被布置为”并不意味着设备元件需要以任何方式改变以提供所定义的操作。

尽管已经参照附图详细描述了本发明的说明性实施例,但应该理解,本发明不限于那些精确的实施例,在不偏离由所附权利要求书限定的本发明的范围和精神的情况下,本领域技术人员可以对其进行各种改变、添加和修改。例如,在不脱离本发明的范围的情况下,从属权利要求的特征可以与独立权利要求的特征进行各种组合。

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