响应探听请求的制作方法

文档序号:15346991发布日期:2018-09-04 22:52阅读:150来源:国知局

本公开涉及数据处理。更具体地,涉及缓存。



背景技术:

在多处理器系统中,可能具有许多节点或处理器,各自具有它们自己的缓存。这些节点可以连接至一个或多个共享缓存或存储器。因此,特定数据值可以位于共享缓存或存储器中的一个中,或位于处理器中的一个处理器的本地缓存中。因此,在节点想要访问数据值时,有时需要从另一节点获得数据。这通过请求者向所谓主节点发送请求来实现,主节点维持数据在整个系统中的一致性。随后主节点使得节点“重新同步”,以便在从例如主系统存储器中访问数据之前,数据在系统中被一致地保存。如果不同节点要求相同数据值,则可能不得不在将来重复该过程。然而,访问主系统存储器可能耗费时间。



技术实现要素:

从第一示例性配置来看,提供了一种数据处理设备,包括:接收电路,用于接收由源节点发送的针对请求的数据的探听请求;发送电路;以及缓存电路,用于缓存至少一个数据值,其中,所述探听请求包括关于所述请求的数据是否将被返回至所述源节点的指示;并且在所述至少一个数据值包括所述请求的数据时,所述发送电路根据所述指示向所述源节点发送包括所述请求的数据的响应。

从第二示例性配置来看,提供了一种数据处理设备,包括:接收电路,用于接收针对请求的数据的数据请求;以及发送电路,用于向至少一个其他节点发送至少一个探听请求,其中,每个探听请求包括指示符,用于指示是否应当响应于其他节点具有所述请求的数据而将所述请求的数据转发回至所述数据处理设备。

从第三示例性配置来看,提供了一种数据处理方法,包括:缓存至少一个数据值;接收由源节点发送的针对根据请求节点的请求的数据的探听请求;以及发送对所述探听请求的响应,其中,所述探听请求包括关于所述请求的数据是否将被返回至所述源节点的指示;以及在所述至少一个数据值包括所述请求的数据时,所述发送电路根据所述指示向所述源节点发送所述请求的数据。

从第四示例性配置来看,提供了一种数据处理方法,包括:接收针对请求的数据的数据请求;以及向至少一个其他节点发送至少一个探听请求,其中,每个探听请求包括指示符,用于指示是否应当响应于其他节点具有所述请求的数据而转发回所述请求的数据。

附图说明

下面将通过示例的方式参考附图中示出的实施例来进一步描述本发明,其中:

图1示出了根据一个实施例的包括数据处理设备的系统;

图2示出了根据一个实施例的源节点、具有系统缓存的主节点、和四个请求者节点;

图3示意性地示出了根据一个实施例的请求者节点与源节点之间的消息的交换;

图4示出了根据一个实施例的在例如图2中示出的系统内随着时间而交换的一系列消息;

图5示出了根据一个实施例的在例如图2中示出的系统内随着时间而交换的一系列消息;并且

图6示出了根据一个实施例的数据处理的方法。

具体实施方式

在参考附图讨论实施例之前,提供了实施例的以下描述。

根据一个示例性配置,提供了一种数据处理设备,包括:接收电路,用于接收由源节点发送的针对请求的数据的探听请求;发送电路;以及缓存电路,用于缓存至少一个数据值,其中,所述探听请求包括关于所述请求的数据是否将被返回至所述源节点的指示;以及在所述至少一个数据值包括所述请求的数据时,所述发送电路根据所述指示向所述源节点发送包括所述请求的数据的响应。

源节点可以是系统内的主节点,该主节点维持整个系统中的一致性,或源节点可以是主节点的代理。例如,在具有许多芯片的互连系统中,每个芯片上可以具有源节点,其中主节点位于芯片中的一个芯片上。因此,一些一致性功能可以在节点不必与主节点通信的情况下发生,如果节点在不同芯片上,则该通信可能耗费时间。替代地,可以通过使用本地源节点在一定程度上维持一致性。在这类实施例中,源节点生成探听请求。探听请求由响应节点接收,该响应节点可能具有探听请求中被提及的数据。探听请求包括请求的数据是否将被返回至源节点的指示。这可以作为对为了维持一致性而执行的任何其他一致性维持操作的补充。具体地,指示可以是数据将不被返回至源节点(例如,在默认将数据返回至源节点时),或指示可以是数据将被返回至源节点(例如,在默认不将数据返回至源节点时)。无论如何,根据指示(和任意默认行为)向源节点发送对探听请求的响应(该响应包括请求的数据)。以这种方法,源节点可以获得数据的副本,而不需要将数据写回至主存储器并且随后从存储器重新获取数据。

在一些实施例中,所述请求的数据与指示请求的数据是共享的缓存状态一起被存储在所述缓存电路中。共享缓存状态指示数据在若干节点处可访问(并且被本地存储),但节点不允许修改本地存储的数据。

在一些实施例中,在所述至少一个数据值包括所述请求的数据时,所述发送电路向请求节点发送包括所述请求的数据的另一响应,该请求节点在所述主节点处做出对所述请求的数据的请求。因此,发送至源节点的响应不必是由数据处理设备发出的唯一回应。具体地,数据可以直接被转发至转发节点,并且被转发回到源节点(根据探听请求中给出的指示)。以此方式,可以快速地将数据发送至源节点,以便数据可以在将来被更快速地访问,并且还被快速地发送至请求节点以用于访问。

在一些实施例中,关于所述请求的数据是否将被返回至所述源节点的所述指示被编码为所述探听请求的类型。探听请求的类型本身可以指示数据是否将被返回至源节点。或者,在一些其他实施例中,关于所述请求的数据是否将被返回至所述源节点的所述指示被编码为所述探听请求中的位。因此,探听请求本身可以具有字段(例如,单个位字段),该字段指示将数据返回至源是期望的还是不期望的。

在一些实施例中,所述发送电路根据另一条件来发送所述响应。换言之,在节点具有在探听请求消息中请求的数据时,如果默认行为和探听请求中的指示指示请求的数据值将被返回至源节点,则另一条件决定请求数据值是否被返回至源节点。

存在这类另一条件可以是什么的许多示例。然而,在一些实施例中,数据处理设备包括模式转换电路,用于将所述数据处理设备从返回允许模式转换至返回禁止模式,其中所述另一条件是所述数据处理设备处于返回允许模式中。模式转换电路使得节点可以在愿意对返回至源指示进行响应(从而在适当情况下将请求的数据返回至源节点)与不愿意对返回至源指示进行响应(从而即使在适当情况下也不将请求数据返回至源节点)之间进行转换。

在一些实施例中,在所述数据处理设备处于返回禁止模式、所述至少一个数据值包括所述请求的数据、并且所述指示指示所述请求的数据将被返回至所述源节点时,所述发送电路向所述源节点发送缺乏所述请求的数据的替代响应。因此,虽然包括请求的数据的响应可能由于数据处理设备的模式处于返回禁止模式而无法被发送,但是数据处理设备还可以发送替代响应(例如,不包括请求的数据)。在一些实施例中,替代响应包括数据处理设备的当前状态(例如,数据处理设备处于返回禁止模式中)。

在一些实施例中,在所述数据处理设备在所述返回允许模式与所述返回禁止模式之间变化时,所述数据处理设备被配置为使得所述发送电路向所述源节点发送包括所述数据处理设备的当前模式的通知。这类通知可以由源节点使用,以决定哪个探听请求(即,去往哪个节点)应当具有节点应当将请求的数据返回至源节点的返回至源指示。

在一些实施例中,所述探听请求是无效探听请求。探听请求是无效的(与非无效相反),其中由请求节点做出的初始访问请求是使得请求数据值需要在其他缓存中无效。例如,这可能是其中请求节点需要唯一基础上的数据的情况。或者,这可能在请求节点期望修改数据的情况下发生。在这些情况的任一者中,一致性将需要其他节点使其版本的数据无效。在发出无效探听请求的情况下,无效探听请求被发送至可能具有本地缓存的请求的数据的全部节点,以便使数据的全部副本无效。然而,如果源节点需要请求的数据的副本,则使每个节点将数据发送回到源节点可能耗尽许多带宽。因此,能够指示单个节点将数据返回至源节点使得可以执行无效并且返回数据,同时耗费少量带宽。在一些实施例中,探听请求为非无效的。在这些情况下,可以向可能具有请求的数据的节点中的一个节点发送单个探听请求,其中指示数据应当被返回至源节点。当然,数据处理设备可以被配置为对无效探听请求和非无效探听请求两者进行响应。

根据另一示例性配置,提供了一种数据处理设备,包括:接收电路,用于接收针对请求的数据的数据请求;以及发送电路,用于向至少一个其他节点发送至少一个探听请求,其中,每个探听请求包括指示符,用于指示是否应当响应于其他节点具有所述请求的数据而将所述请求的数据转发回至所述数据处理设备。

根据上文,通过在探听请求消息中提供指示符,可以在数据保存在接收节点处时,向接收节点指示请求的数据是否将被提供回到源节点。如上文解释,指示可以与默认行为组合。换言之,默认行为可以是将数据返回至源节点,并且指示可以指示与此相反。或者,默认行为可以是不将数据返回至源节点,并且指示可以是数据将返回至源节点。

在一些实施例中,数据处理设备包括参与电路,用于存储所述至少一个其他节点中的哪些其他节点可以响应于所述探听请求以及具有所述请求的数据而转发所述请求的数据的列表,其中,在所述接收电路接收关于所述至少一个其他节点中的一个其他节点是否可以转发所述请求的数据的通知时,更新所述列表;并且所述发送电路被配置为基于来自所述参与电路的结果来阻止发送其中所述指示符指示应当将请求的数据转发回至所述数据处理设备的所述探听请求。以此方式,源节点可以追踪愿意将请求的数据转发回到源节点的节点以及不愿意将请求的数据转发回到源节点的那些节点。随后数据处理设备可以基于来自参与电路的结果来阻止发送探听请求(其中指示符指示应当将请求的数据转发回至数据处理设备)。例如,如果节点已经指示其无法(或不会)将数据返回至源节点,则发送电路可以阻止将指示数据将返回至源节点的探听请求发送至节点。这可以保护数据处理设备免于做出将不可避免地被拒绝的不必要的请求。

在一些实施例中,在所述接收电路接收对所述探听请求的、不具有所述请求的数据的响应时,所述发送电路向主存储器发送存储器访问请求以访问所述请求的数据。因此,替代追踪不准备将数据发送回到源节点的节点,可以通过从其他地方(例如,从主存储器或潜在地从另一节点)获得数据来响应任意拒绝。

在一些实施例中,所述数据处理设备包括试探电路,用于针对所述至少一个其他节点中的每个其他节点存储至少一个试探,并且基于所述至少一个试探从所述至少一个其他节点中提供选择的节点,其中,所述发送电路被配置为向所述选择的节点发送所述探听请求。存在许多可以使用的可能试探。然而,在一些实施例中,试探指示延迟。因此,在将从若干其他节点中的一个节点获取数据时,可以将探听请求(指示数据将被返回至源节点)发送至具有最低指示延迟的节点。因此,与向具有更高延迟的节点做出指示数据将被返回至源节点的请求的情况相比,将更加快速地获得数据。

在一些实施例中,所述数据处理设备包括缓存电路,用于缓存至少一个数据值,其中,在所述接收电路接收对所述探听请求的、包括所述请求的数据的响应时,所述请求的数据被存储在所述缓存中。通过将返回的数据值存储在缓存中,与必须发送探听请求以从系统中的另一节点获得数据的情况(或与必须从主系统存储器获得数据的情况)相比,针对该数据的未来请求可以通过源节点更加快速地返回。因此,可以改进针对该数据的后续请求的延迟。存在所述缓存可以是什么的许多可能性。然而,在一些实施例中,所述缓存是系统缓存。系统缓存可以是主系统存储器之前的存储器层级结构中的最后缓存阶层。因此,系统可以在系统中的全部节点之间共享,使得与从主系统存储器访问该数据相比,允许对数据快速访问。

现在将参考附图描述特定实施例。

图1示出了数据处理系统100。在数据处理系统100内,具有主节点110、第一请求节点120及第二请求节点130。第一请求节点120及第二请求节点130可以是互连内的主控节点。在图1中示出的实施例中,第一请求节点120将称作请求节点,而第二请求节点130将称作响应节点。数据处理系统100中的节点110、节点120、节点13中的每一者都包括缓存。每个缓存被示出为具有三列。第一列表示数据值的地址,第二列表示数据值本身,并且第三列表示与数据值相关联的缓存状态。在此实施例中,缓存状态可以是“i”(其指示特定条目被无效并且可以被改写)、“sd”(其指示特定条目是共享的并且是脏的(dirty)(即,特定条目由节点“所有”,使得条目由其他节点共享但是已经被本地修改))、“sc”(其指示条目是“共享的”,使得条目由系统中的其他节点共享且不可修改)、以及“uc”(其指示条目是“独占的”,使得条目由节点所独有且没有被修改)中的一个。如图1的实施例中示出的,节点120、节点130中的一个或多个可以访问另一节点不可访问的数据值。例如,请求节点120不可访问由响应节点130保存的数据值0x0094。同样地,响应节点130不可访问由请求节点120保存的数据值0x0090。因此,如果请求节点120期望访问数据值0x0094,则它必须将请求发送至主节点110(主节点110维持整个数据处理系统100中的一致性),从而获得对该数据值的访问。这通过分发一个或多个探听请求来实现。

虽然未在图1中示出,但是数据处理系统100还可以包括经由主节点110连接的主系统存储器。可以根据来自主节点110的请求从主系统存储器获取数据。然而,这个过程可能耗费时间,因为访问主系统存储器一般将比访问缓存中的一个缓存更慢。

图2示意性地示出了根据一个实施例的数据处理系统100。四个请求节点120、请求节点130、请求节点140及请求节点150连接至源节点160,源节点160接着连接至主节点110。源节点是可以发起探听请求的节点。因此,源节点可以充当主节点110的代理或可以是主节点110本身。通常,源节点160可以设置在芯片上,其中主节点110在不同芯片上。这可以减少芯片间通信的量,芯片间通信可以是缓慢的并且可能受带宽限制。

主节点110还连接至系统缓存170。系统缓存在系统100中充当共享缓存,并且可以例如缓存已经从主系统存储器获取的数据,以便可以在将来更加快速地访问数据。

图3示意性地示出了示例性请求节点的结构,该示例性请求节点充当交换消息的响应节点130和源节点160。在该示例中,假定另一请求节点120请求源节点160对地址0x0090处的数据进行访问。这使得源节点160生成探听请求,接着将探听请求发送至请求节点130。在该示例中,源节点160包括发送电路180,其是用于执行发送的电路;接收电路190,其是用于接收来自其他节点的发送的电路;参与电路195,其是用于追踪其他节点的模式的电路(下文将解释);缓存电路200,其是用于本地缓存数据的电路;以及试探电路210,其是用于执行试探分析的电路,例如基于统计和/或历史数据。请求/响应节点130包括用于接收来自其他节点的发送的接收电路220;发送电路230,其是用于执行发送的电路;缓存电路240,其是用于本地缓存数据的电路;以及模式转换电路250,其是用于转换请求/响应节点130的工作模式的电路。

如前文说明,假定在该示例中,另一请求节点120(未在该图中示出)已经请求对地址0x0090处之数据进行访问,该数据当前正由请求节点130保存。在将该对数据的请求发送至源节点160时,源节点生成探听请求消息。该探听请求消息旨在有助于系统中的一致性。例如,如果请求节点120正在请求写入访问地址0x0090处的数据,则探听请求将处理其中另一节点(诸如响应节点130)以前曾请求写入访问该数据的情况。两个节点不能同时写入访问数据,因为这可能使得数据的不同值存储在不同节点处。同样地,如果其他节点(诸如响应节点130)已经请求读取访问数据,则该数据应当被无效,因为一旦数据在请求节点160处接收且更新,保存在其他节点(诸如响应节点130)的数据的副本就将过时。

在本示例中,探听请求通过源节点160的发送电路180发送且通过响应节点130的接收电路220接收。探听请求消息包括专用标识符(rtntosrc),其指示保存在响应节点130处的数据值是否应当转发回到响应节点。在该示例中,标识符采取单个位的形式。然而,在其他实施例中,标识符可以形成探听请求消息的类型的一部分。在该情况下,伴随着响应节点的任意默认行为(即,不使用提供的数据进行响应)的指示使得数据响应于探听请求而被提供。该响应消息包括保存在响应节点130的缓存240中的请求的数据值(即,值5)。通过响应节点130的发送电路230发送响应消息,通过源节点160的接收电路190接收该响应消息。

在图3中示出的实施例中,响应节点130还包括模式转换电路250。模式转换电路使得节点可以在第一非返回模式(其中节点不会实践rtntosrc指示(即使请求))与第二返回模式(其中节点会实践rtntosrc指示)之间切换。换言之,在任何情况下,节点可以仍然响应于探听请求。然而,响应节点130的模式可以允许或阻止请求的数据返回至源节点160,而与请求无关。工作模式的变化可以通知给源节点160,源节点160追踪其参与电路195中的信息,以便源节点可以追踪对rtntosrc指示符响应/不响应的那些节点。以此方式,源节点160可以避免向不会将请求的数据返回至源节点的节点发送要返回数据的请求。

同时在图3中示出的实施例中,源节点160包括试探电路210。在试探电路210的情况下,源节点160保存试探数据。例如,这可以是关于其他节点的统计或历史数据。例如,数据可以由源节点用作学习程序的一部分,从而选择适当节点以用于发送rtntosrc指示的目的。在一些情况下,例如,仅单个节点可能需要响应于探听请求返回请求数据。因此,源节点160可以使用试探数据来确定哪个节点更可能最快响应,例如,哪个节点将具有最低延迟。

图4示出了根据一个实施例发生的一系列消息交换。最初,请求节点120向源节点160发送readunique消息,请求对数据的特定条目进行唯一访问。作为结果,源节点160使得保存在网络中的其他节点处的数据的副本无效。这通过将snpunique消息(无效探听请求的示例)发送至可能具有请求的数据的本地缓存的副本的节点来完成。节点150中仅有一个具有设置为1的rtntosrc指示符,以指出该节点将返回请求的数据。其他节点接收具有设置为0的rtntosrc指示符的消息,以指出节点将不返回请求发热数据。以此方式,源节点160能够获得数据的副本,而不用咨询主系统存储器,并且不需要返回数据的多个副本。如果源节点160具有试探数据,则可以使用试探数据来要求具有最低延迟的节点返回请求的数据的副本。以此方式,数据可以更快速地被提供回到请求节点120。在该情况下,响应节点150在snprespdata消息中返回请求的数据,snprespdata消息被发送回到源节点160。在每个请求节点处,缓存状态从sc(共享的且干净的)变化至i(无效),从而指示将不再需要缓存行且可以改写缓存行。

在接收到来自响应节点150的数据时,源节点160可以将数据返回至请求节点120,和/或可以使得数据存储回缓存中(例如,系统缓存170和/或主系统存储器)。以此方式,数据可以快速地被提供至请求节点120(即,不产生从主存储器访问数据的延迟)且可以被存储在缓存170中,以便在由另一节点做出另一请求的情况下可以更快速地访问数据。

在此描述中,假定响应节点具有在请求节点中请求的数据。如果情况并非如此,则明显地,响应节点不能提供请求的数据。这可以被通知回到源节点160,或可以根据情况不给出响应。例如,如果节点处于非返回模式使得不允许返回数据,则节点可以不提供其不具有请求的数据的指示。

如果在请求时节点不将数据返回至源节点160(或如果花费太长时间来接收响应而使得源节点160断定数据将不再返回),则源节点160可以从另一请求节点或从主系统存储器或共享缓存(例如,系统缓存170)查找数据。是否这样做的决定可以取决于预期成功与每个不同选项所花费的时间。另外,这可以使用试探数据(如果可用的话)来确定。

图5示出了根据一个实施例发生的一系列消息交换。在该示例中,请求节点120仅需要对数据进行共享访问。因此,在将相应readshared消息发送至源节点160时,源节点160可以发送非无效探听snpsharedfwd。这是因为,如果不需要请求节点120成为读取访问数据的唯一节点,则不需要使数据在其他节点处无效。相反,仅仅通过发送具有rtntosrc指示符的探听请求而获得数据的副本是足够的,该rtntosrc指示符被设置为指示数据应当被返回。同时,试探数据可以被用来从将被查询的节点中选择节点,例如,使得最小化延迟。在接收探听请求时,响应节点130在snprespdata消息中将请求的数据返回至源节点160。

注意,在该实施例中,响应节点130还被指令将请求的数据返回至请求节点120,这在compdata消息中发生。随后请求节点120可以用已经接收到请求的数据的指示(compack)来响应源节点160,并且源节点160因此不需要将请求的数据第二次转发至请求节点120。

图6包括流程图260,其示出根据一个实施例的数据处理的方法。该方法例如可以由源节点160实施。过程在步骤270处开始,其中例如通过请求节点120接收对特定数据的请求。在步骤280处,由源节点160生成探听请求。在步骤290处,探听请求被发送至单个节点,其中指示符(rtntosrc)被设置为指示数据值应当返回至源节点。基于在步骤270处接收到的数据请求,适当地设置探听请求的性质(无效或非无效)。在步骤300处,确定是否发出无效探听请求。如果发出,则在步骤310处,将类似探听请求发送至可能存储请求数据的副本的其他节点,以使来自这些节点的缓存的数据值无效。在这些消息中,设置rtntosrc指示符,使得节点不会返回请求数据的副本。这有助于在仅有一个副本为必需的情况下,防止源节点接收请求数据的大量副本。一旦完成,或如果探听请求在步骤300处是非无效的,则在步骤320处,处理返回的数据。例如,请求数据可以存储在存储器或缓存(例如,系统缓存)中。另外,如果适当的话,则可以将请求的数据转发至请求节点。

以此方式,可见可以获得请求的数据,而无需求助主系统存储器。此外,获取的数据可存储在缓存中,以便可以更加快速地响应将来的请求。

在本申请案中,使用用语“被配置...”意谓设备组件具有能够执行所定义操作的配置。在此上下文中,“配置”意谓硬件或软件的互连的排列或方式。例如,设备可以具有提供定义操作的专用硬件,或处理器或其他处理组件可以经程序化以执行功能。“被配置为”不暗示设备组件需要以任何方式改变以便提供所定义的操作。

尽管本文已参考所附图式详细地描述本发明的说明性实施例,但应理解,本发明并不限于这些精确实施例,并且在不偏离由所附权利要求定义的本发明的范畴及精神的情况下,本领域的普通技术人员可以在其中实施各种改变、添加及修改。例如,可以在不脱离本发明的范畴下,对从属权利项的特征与独立权利项的特征进行多种组合。

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