具有覆写无效性的读取事务的制作方法

文档序号:15257551发布日期:2018-08-24 20:52阅读:166来源:国知局

本技术涉及数据处理领域。



背景技术:

数据处理系统可包括数个主设备,主设备可共享对存储器系统的访问。一些主设备可具有用于保持来自存储器系统的数据的缓存器。可提供一致互连结构以基于根据特定一致性协议定义的一致性协议事务,来维持在缓存器中保持的数据及/或对应于非缓存数据的由主设备发动的读取/写入事务之间的一致性。



技术实现要素:

至少一些示例提供了一种系统,包括:多个主设备;以及互连结构,用于管理在多个主设备之间的一致性;其中响应于由该互连结构从请求将与目标地址相关的目标数据提供至做出请求的主设备的该做出请求的主设备接收的具有覆写无效性的读取事务(read-with-overridable-invalidatetransaction),当由缓存器储存与该目标地址相关的目标数据时,该互连结构被配置为向该缓存器发布探听请求,该探听请求触发该目标数据从该缓存器无效,除了当该互连结构及该缓存器的至少一个确定覆写该无效并将该目标数据保留在该缓存器中时。

至少一些示例提供了一种主设备,包括:处理电路,用于执行数据访问操作;以及接口电路,响应于数据访问操作以向互连结构发布事务,进而用于管理在该主设备与至少一个其它主设备之间的一致性;其中该接口电路被配置为将向该互连结构发布具有覆写无效性的读取事务,进而请求将与目标地址相关的目标数据提供至该主设备,并且当将该目标数据储存在缓存器中时,触发该目标数据从该缓存器无效,除了当该互连结构及该缓存器的至少一个确定覆写该无效并将该目标数据保留在该缓存器中时。

至少一些示例提供了一种互连结构,包括:接口电路,用于与多个主设备通信;以及控制电路,用于取决于经由该接口电路与主设备交换的事务来管理在主设备之间的一致性;其中响应于由该接口电路从请求将与目标地址相关的目标数据提供至做出请求的主设备的该做出请求的主设备接收的具有覆写无效性的读取事务,当由缓存器储存与该目标地址相关的目标数据时,该控制电路被配置为控制该接口电路发布探听请求,该探听请求触发该目标数据从该缓存器无效,除了当该控制电路及该缓存器的至少一个确定覆写该无效并将该目标数据保留在该缓存器中时。

至少一些示例提供了一种设备,包括:缓存器,用于储存数据;接口电路,用于从用于管理该缓存器中的数据的一致性的互连结构接收规定目标数据的目标地址并请求该目标数据从该缓存器无效的具有覆写无效性的探听请求;以及控制电路,用于响应于该具有覆写无效性的探听请求来确定是否覆写该目标数据的该无效并将该目标数据保留在该缓存器中。

至少一些示例提供了一种方法,包括:在用于管理多个主设备之间的一致性的互连结构处接收由请求将与目标地址相关的目标数据提供至做出请求的主设备的该做出请求的主设备发布的具有覆写无效性的读取事务;以及响应于该具有覆写无效性的读取事务:从缓存器或存储器获得该目标数据;将该目标数据提供至做出请求的主设备;以及当由该缓存器储存该目标数据时,触发该目标数据从该缓存器无效,除了当该互连结构及该缓存器的至少一个确定覆写该无效并将该目标数据保留在该缓存器中时。

本技术的进一步方面、特征及优点将从结合附图阅读的示例的以下描述显而易见。

附图说明

图1标出了具有数个主设备及用于管理主设备之间的一致性的互连结构的系统的示例;

图2示出了第一种形式的具有覆写无效性的读取事务的处理;

图3图示了响应于具有覆写无效性的读取事务来覆写无效的互连结构的示例;

图4图示了第二种形式的具有覆写无效性的读取无效事务的处理,对此抑制在该无效之后的脏数据的写回;

图5图示了响应于具有覆写无效性的读取事务确定是否覆写无效的缓存器的示例;

图6图标了具有无效性的读取事务的处理的示例,对此该无效不可由互连结构或缓存器否决;并且

图7示出了可缓存的具有覆写无效性的读取事务的示例,对此于做出请求的主设备处缓存目标数据。

具体实施方式

数据处理系统可包括数个主设备及用于管理主设备之间的一致性的互连结构,该主设备可包括具有缓存器的缓存的主设备及/或不具有缓存器的非缓存的主设备。数种类型的事务可根据给出的一致性协议定义以控制由一个主设备对数据的读取或写入访问可触发在系统中的其它处保持的缓存的数据的一致性状态改变的方式。

本技术提供了可由做出请求的主设备发布的具有覆写无效性的读取事务,该做出请求的主设备规定了识别待提供至该做出请求的主设备的目标数据的目标地址。作为响应,互连结构获得目标数据(例如,从缓存器或存储器)并将该数据返回做出请求的主设备。当由缓存器(该缓存器可是另一主设备的缓存器或不分配给特定主设备的系统位准缓存器)保持数据时,互连结构向该缓存器发布探听请求以触发目标数据从该缓存器无效,除了当该互连结构及该缓存器的至少一个确定覆写该无效并将该目标数据保留在该缓存器中时。

因此,具有覆写无效性的读取事务允许做出请求的主设备信号传输待读取的数据的无效是预期但非重要的,其中保持目标数据的互连结构及/或缓存器具有确定是否覆写无效的随意处理权。具有覆写无效性的读取事务可被视为来自做出请求的主设备的隐示,即预期继续保持在缓存器中的数据将是不可用的,但若互连结构或缓存器知道更多(例如,基于地址访问的先前通信量),其等可选择忽视来自做出请求的主设备的隐示并保留数据。

此类型的事务在例如网络连接应用中可是特别有用的。网络接口可在网络上发送从缓存器读取的封包,并且一旦网络接口已经发送了该封包,彼封包将通常不经再次访问并且因此可能不会从将数据复本保持在缓存器中持续获益。读取数据的主设备将通常知晓数据属性并且因此在数据的重复使用是不可能的情况中可使用具有覆写无效性的读取事务以传输信号至可无效此数据的其它缓存器。尽管维持一致性或功能正确性不需要执行无效,通过移除将来不可能再使用的缓存器线,此举释放了可在稍后的缓存器分配时选择的未分配的缓存器条目,进而避免不必要驱逐原本从余留在缓存器中获益的不同缓存器线。因此,通过使用具有覆写无效性的读取事务而非不提供无效隐示的读取,可获得缓存器使用的较高效率并且因此通过减少所需数据不在缓存器中的可能性来改良作为整体的系统效能。

注意到,由具有覆写无效性的读取事务触发的探听请求可在一些情形中仅被发送至已知保持与目标地址相关的目标数据的缓存器。例如,互连结构可具有追踪哪些缓存器保持给出地址的探听过滤器或目录,这可用于避免向不保持目标数据的缓存器发送探听请求。然而,在一些系统中,可能不存在任何探听过滤器或探听过滤器的追踪可是较不精确的,使得探听请求也可被发送至不保持目标数据的一些缓存器,并且在此情形中发至不保持数据的缓存器的探听请求可触发指示数据不保持在缓存器中的探听响应。因此,目标数据的无效仅可当在接收探听请求的缓存器中存在目标数据时发生。

在一些情形中,用于触发从缓存器无效的探听请求也可导致该缓存器将数据返回到互连结构,使得该探听请求可被传递至请求主设备。然而,数据实际上是否返回到主设备可取决于数据的一致性状态——例如,如果若干缓存器保持共享的目标数据,则可通过将该目标数据保持在共享的脏状态的缓存器返回该目标数据,但由于可假设另一缓存器正将数据保持在共享的脏状态,将该目标数据保持在共享的干净状态的缓存器可能不需要返回数据。或者,如果缓存器是保持数据的唯一缓存器,则无论该数据是干净还是是脏的,该缓存器可需要返回数据。实际上由缓存器返回数据的精确条件可取决于所使用的特定一致性协议。无论是否返回数据,发至缓存器的探听请求触发了具有规定的目标地址的缓存数据的覆写无效。

可提供不同形式的具有覆写无效性的读取事务。响应于第一种形式的具有覆写无效性的读取事务,当目标数据从缓存器无效并且该目标数据是脏时,互连结构可触发将该目标数据写回存储器或另一缓存器。此形式的事务可在尽管将不可能再次需要数据但仍可能需要该形式的事务的情形中使用,并且因此确保若需要的话保留该数据,稍后将脏数据写回存储器或另一缓存器。

然而,可提供第二种形式的具有覆写无效性的读取事务,对此当目标数据从缓存器无效并且目标数据是脏时,可抑制将该目标数据写回存储器或另一缓存器。因此,在做出请求的主设备知道保证将不会再次需要数据的情况中,可能无效缓存器条目并且避免将数据清除至主存储器或另一缓存器。此形式的事务有助于减少至主存储器的写入通信量。此事务在网络连接应用中可是特别有用的,例如,其中网络连接封包可流入片上系统中并且写入将封包保持在脏缓存器线中的系统位准缓存器,并且由于从片上系统发送封包,封包可被读取并从缓存器无效。在此情况中,一旦发送,一般而言已知将不会再次需要封包。通过使用第二种形式的具有覆写无效性的读取事务,可避免从互连结构至主存储器或另一缓存器的写入通信量的非必要串流,进而节省了等同于网络封包流通量的写入带宽量,并且因此增加其它写入通信量的效能。由于在第二种形式的具有覆写无效性的读取事务之后数据可丢失,做出请求的主设备在其使用此事务时可需要系谨慎的,但在已知将不会再次需要数据的情况中,则这可是非常有用的。

此外,第三种形式的具有覆写无效性的读取事务可触发互连结构确定是否写回来自缓存器的脏数据的无效。因此,不同于强制写回的第一种形式及不执行写回的第二种形式,第三种形式允许写入是可选的,其中互连结构具有确定是否执行写回的随意处理权。例如,在做出请求的主设备相信保证不再次需要目标数据并且因此不需要写回的情形中(例如,在上文所论述的分组串流情形中),此形式的具有覆写无效性的读取事务可由作请求装置使用,但互连结构具有否决并替代地触发写回的能力。例如,是否执行写回的确定可基于近期的地址访问行为。

一些实施方式可实施上文所论述的全部三种形式的具有覆写无效性的读取事务。其它实施方式仅可实施此等形式的具有覆写无效性的读取事务的一种或两种(例如,仅第一种形式及第二种形式而非第三种形式)。

具有覆写无效性的读取事务可是缓存的读取事务,对此当将目标数据返回至做出请求的主设备时,在做出请求的主设备的缓存器中缓存该目标数据。然而,在以下情况下该技术是特别有用的:具有覆写无效性的读取事务包括请求在抑制于做出请求的主设备处缓存目标数据的情况下将目标数据返回至做出请求的主设备的非缓存的读取事务。例如,做出请求的主设备可能根本不具有缓存器,因此可使用非缓存的读取事务以将不本端保留数据传输信号至互连结构。或者,即使做出请求的主设备不具有缓存器,该做出请求的主设备可选择当访问短期数据时发布非缓存的读取事务以避免污染缓存器并余留缓存是有用的且更频繁访问的数据可用的更多空间。实务上,主设备触发读取目标数据从另一装置的缓存器无效是可能有用的情况也是非缓存的读取事务是有用的情况。例如,当不会再使用数据时,不必于做出请求的主设备处缓存数据并且继续于其它缓存器处储存数据也是无用的。由此,一些实施方式可提供非缓存的具有覆写无效性的读取事务,而非缓存的具有覆写无效性的读取事务。尽管如此,其它实施方式也可提供缓存的具有覆写无效性的读取事务。

当响应于具有覆写无效性的读取事务来确定是否覆写无效时,保持目标数据的互连结构及/或缓存器可取决于在缓存器中访问的地址的监视而做出确定。例如,通过监视地址通信量,若互连结构或缓存器侦测到软件正在与目标数据相似的地址区域中访问数据,则在仍需要该目标数据的情形中,该互连结构或缓存器可确定不无效该目标数据。

具有覆写无效性的读取事务也可与选择总是覆写无效或总是执行目标数据的无效的互连结构或缓存器兼容。例如,不针对与具有覆写无效性的读取事务一起使用而设计的传统装置或互连结构可能不具有任何用于确定是否覆写无效的逻辑并且因此可适当地总是无效或总是覆写。尽管如此,系统中的至少一些缓存器或互连结构可基于若干因素(例如,近期地址通信量或缓存器的当前利用率)确定是否动态地覆写。

在一些示例中,响应于具有覆写无效性的读取事务而确定是否覆写无效的确定可由互连结构做出。互连结构可随后选择回应于具有覆写无效性的读取事务而发布至缓存器的探听请求是请求目标数据从缓存器无效的无效探听请求或请求探听操作的非无效探听请求,对此将目标数据保留在缓存器中(所请求的探听操作可是读取数据并返回的请求,或可仅仅请求例如将目标数据保持在缓存器中的一致性状态信息(例如,净/脏))。因此,互连结构可取决于其选择遵循由做出请求的主设备提供的无效隐示或覆写无效来改变发送至缓存器的探听请求的类型。此方法可是有用的,使得可使用传统缓存器而无需修改。缓存器本身可仅接收无效探听请求或非无效探听请求,该请求以与探听由不同于具有覆写无效性的读取事务的不同种类的读取请求触发的相同方式处理。用于确定是否覆写无效事务的逻辑可位于互连结构内。

或者,确定是否覆写无效可于缓存器本身处发生。这可有时是有用的,因为缓存器可具有近期访问模式或将来预期的访问模式的较多知识。响应于具有覆写无效性的读取事务,互连结构可发布具有覆写无效性的探听请求来作为发送至缓存器的探听请求,并且响应于具有覆写无效性的探听请求,缓存器可确定是否覆写无效。因此,可定义不同于标准无效或非无效探听请求的特殊种类的探听,该探听指示无效可执行(或预期)但是不重要的,使得取决于可能的将来访问行为的本端知识,无效可由缓存器覆写。

具有覆写无效性的读取事务可能不是所支持的读取的唯一类型并且做出请求的主设备也可发布其它类型的读取。例如,可提供具有无效性的读取事务,该事务请求将目标数据提供至做出请求的主设备,并且若该数据是在缓存器中,则若事务是具有覆写无效性的读取事务,触发了无论互连结构或缓存器是否已确定覆写无效均发生的非覆写无效。在允许数据驻留在其它缓存器中可导致一致性丢失的情况中,具有无效性的读取事务可由做出请求的主设备使用,使得必需强制无效。

一致性协议也可支持不具有无效性的读取事务,如果缓存数据,该事务可由做出请求的主设备发布以请求将目标数据提供至主设备而无需无效(在此情形中,不存在针对互连结构或缓存器触发无效的随意处理权)。响应于不具有无效性的读取事务,当将目标数据保持在给出的缓存器中时,互连结构可向缓存器发布非无效探听请求,进而请求探听操作,对此无论互连结构还是缓存器是否已响应于规定相同目标地址的具有覆写无效性的读取事务确定覆写无效,均将目标数据保留在缓存器中。因此,此事务可用于不需要无效的标准读取。

因此,通过提供额外类型的事务以信号传输无效是可选但是较佳的(覆写),以及无效或非无效读取事务,此举提供了做出请求的主设备给出可选无效可能改良效能的隐示的能力,但不是重要的。

图1示意地示出了数据处理系统2的示例(例如,集成电路或片上系统),该数据处理系统包括数个主设备4、6、8及用于管理主设备与其它缓存器之间的一致性的互连结构10。在此示例中,主设备包括用于执行通用处理的中央处理单元(cpu)4、用于执行圆形处理的圆形处理单元(gpu)6以及用于控制在网络上发送及接收数据的网络接口控制器(nic)8。cpu及gpu包括缓存器11、12、14,例如,与特定核心9相关的1阶缓存器以及用于cpu的共享的2阶缓存器12或用于gpu的共享的缓存器14(实务上,gpu的核心9也可具有独立的缓存器)。nic8具有用于控制网络封包发送及接收的处理电路18以及用于将封包发送至网络并从网络接收封包的网络接口20。主设备4、6、8的每个具有用于与一致互连结构交互的一致性界面16、22。例如,一致性接口16、22可负责从相关主设备的缓存器访问而产生所需一致性协议事务,并且响应于具有适当响应及一致性状态改变的来自互连结构10的探听请求。应了解,这仅是一些主设备的一个示例并且也可提供其它类型的主设备,诸如用于控制在屏幕上显示数据的显示控制器或用于控制在存储器与周边装置之间传送数据的dma(直接存储器访问)控制器,例如。可使用的一致性协议的示例是由英国ltdofcambridge提供的4ace及5chi一致性协定,但应了解,本文所论述的技术也可应用至其它一致性协议。

系统缓存器30耦接至一致互连结构10但不分配给特定主设备。例如,可提供系统缓存器30以加速由非缓存的主设备(诸如nic8)对数据的访问,进而允许与来自nic8的全部读取及写入必须由主存储器33服务的情况相比更快速的访问。系统缓存器30具有用于响应于来自一致互连结构的探听请求或数据的线填充的一致性接口31,或视情况可包括用于回应于如上文所论述的具有覆写无效性的读取事务控制是否执行目标数据的无效的控制电路32。互连结构也可耦接至其它类型的从属设备34,诸如用于向对主设备执行的操作提供密码支持的密码单元。

如图1所示,一致互连结构10可包括用于追踪于某些主设备4、6处缓存哪些数据地址的探听过滤器40。通过允许一致互连结构10确定何时于特定主设备处不缓存数据,探听过滤器40可用于减少探听通信量。探听过滤器40不是重要的,并且在一些实施例中可提供互连结构10,该互连结构不尝试追踪于每个主设备处缓存的数据。在此情形中,当一个主设备4、6、8发布可与其它主设备共享的对数据的读取或写入事务时,一致互连结构10可触发将探听事务发布至可具有来自相同地址的数据的缓存复本的每个其它主设备,并且管理于这些其它主设备处的一致性状态改变及/或对必要时具有更多数据的版本数据的请求主设备的响应。然而,若存在许多主设备,则向全部缓存的主设备广播探听的此方法可是复杂的并且导致在系统2中交换大容量的一致性通信量。

通过提供可至少部分追踪于相应主设备处缓存哪些地址的探听过滤器40,此举可有助于减少探听通信量的容积。在一些情形中,探听过滤器40可精确地追踪储存在每个主设备的缓存器中的数据,使得一致互连结构10可准确地确定此处缓存哪个数据。因此,当从导向潜在可共享的数据的发动主设备接收事务时,则互连结构10可从探听过滤器40的内容确定哪些其它主设备正从相同地址缓存数据并将探听事务发送至在探听过滤器中指示的这些主设备,避免需要将探听发送至当前不储存数据的其它主设备。

然而,其它探听过滤器可能不精确地追踪缓存器的内容。例如,可使用确保探听过滤器40避免假阴性的过滤器流程,进而确保将在缓存器11、12、14中存在的任何数据记录为在探听过滤器中存在,但这允许一些假阳性,使得有时探听过滤器40可指示在给出的主设备中缓存数据,但实际上主设备已经无效该数据。允许一些不精确的此方法可减少更新探听过滤器的额外负担,因为其意谓并非每个来自主设备的缓存器11、12、14的无效必须于探听过滤器处反映。

图2图示了处理读取一次干净无效(roci)事务的示例,该事务是第一种形式的具有覆写无效性的读取事务的示例。此事务规定了目标地址并将与彼地址相关的目标数据返回至做出请求的主设备8,以及提供目标数据应被写回存储器并从保持彼经寻址的数据的缓存器解除分配的隐示。然而,若需要的话,解除分配仅是隐示并且无效可由互连结构10或保持目标数据的缓存器12、14、30覆写。

图2图示了做出请求的主设备是nic8并且由roci事务规定的数据保持在系统缓存器30中的示例。应了解,相同事务也可由其它主设备发布并且目标数据可保持在主设备内的不同缓存器(诸如缓存器12、14)中,但出于便于说明的目的,后续示例使用nic8及系统缓存器30。注意到,若多个缓存器保持目标数据,则数据可从缓存器的(例如,将数据保持于脏状态的缓存器)返回并且将目标数据保持于干净状态的其它缓存器可能不需要返回该数据。脏数据是可能已经相对于存储器中的对应数据修改的数据-脏一致性状态指示保持数据的缓存器具有在无效时将数据写回缓存器的责任。

请求主设备8向互连结构10发布roci事务。在此示例中,互连结构10具有确定是否遵循或覆写无效隐示的功能。在图2的示例中,互连结构确定遵循无效隐示。因此,在已查找探听过滤器40以确定系统缓存器30保持地址数据之后,互连结构10通过发送snoopunique请求来响应于roci事务,该请求是请求系统缓存器30从缓存器30无效数据的无效探听请求。在此示例中,由于于脏状态缓存数据,缓存器10将该数据返回至互连结构,并且互连结构10触发写回操作以将数据写回主存储器33。然而,若数据是干净的,则将不需要写回,并且若另一缓存器将更多最新的数据保持于脏状态,则可能根本不返回数据。无论从缓存器本身还是从另一缓存器还是从存储器获得数据,互连结构10将读取数据返回至做出请求的主设备8。roci事务是非缓存的事务并且因此数据在接收时不由做出请求的主设备8缓存(在任何情形中,针对nic8的示例,请求主设备不具有缓存器,因此不可缓存数据-非缓存的主设备(如nic8)受限于发布非缓存的读取请求)。

图3图标了相同类型的roci事务的处理,但在此情形中,互连结构10确定应覆写无效并且将目标数据保留在缓存器30中。例如,互连结构10可基于近期地址模式做出此确定。例如,若互连结构10已经观察到存在对与所请求数据的地址相似范围地址的数个近期访问,则互连结构10可确定可能再次需要数据并且因此应不执行无效。因此,与如图2中的发送snoopunique请求不同,互连结构10回应于具有snooponce请求的roci事务,该请求是请求从缓存器30读取并返回与目标地址相关的脏数据同时将该数据保留在缓存器中的非无效探听请求。由于不存在无效,在此情形中不需要如图2中的写回并且同样将数据返回至做出请求的主设备8。

如图3所示,做出请求的主设备8也可发布规定目标地址的readonce事务(不具有无效性的读取事务),对此将数据读取并返回至做出请求的主设备8而不触发无效。在互连结构覆写无效的情形中以与roci事务相同的方式处置readonce事务。因此,readonce事务触发互连结构发布snooponce请求。通过选择给出的非缓存读取操作作为roci事务或readonce事务发布,做出请求的主设备8可传递指示是否可能再次需要目标数据的隐示。

图4图示了读取一次确定无效(romi)事务的示例,该事务是第二种形式的具有覆写无效性的读取事务的示例。若无效不由互连结构10覆写,则romi事务以与图2相同的方式触发互连结构10发布snoopunique请求。若无效由互连结构10覆写,则romi触发以与图3相同的方式处置的snooponce请求。在将snoopunique请求发送至缓存器30的情形中,此举以与图2相同的方式触发了目标数据从缓存器30无效并且返回数据。然而,与图2中的roci事务不同,针对romi事务而言,即使所返回的数据处于脏状态,抑制将数据写回主存储器33或写回另一缓存器。此举节省了对主存储器33的额外写入操作,因为存在处置对存储器的其它访问可用的更多带宽,这可有助于改良效能。在做出请求的主设备8知道保证将不会再需要数据的情况中可发布romi事务并且因此通过避免非必要写入,可改良效能。

或者,一些实施方式可实施romi,使得互连结构10具有确定是否执行写回的随意处理权。在此情形中,不同于明确不导向执行写回,romi可被解释为将不会再需要数据的对互连结构10的隐示并且因此可省略写回,但互连结构10可确定以任何方式执行写回(如果需要的话)——例如,因为已看到对相同地址或邻近地址的访问,或因为当前存储器带宽利用率低并且因此存在用于执行写回的空闲带宽以提防做出请求的主设备8不正确地选择使用romi指令替代roci的非常罕见的情形。在romi指令指示写回是可选的但仍可执行的示例中,romi可由互连结构10有效地处理为roci,但roci不可被处理为romi-若发布roci,则即使若事务是romi且选择不执行写回,当从缓存器30无效的目标数据是脏时互连结构10应执行写回。

图2至图4图示了将选择是否遵循或覆写由roci或romi事务提供的无效隐示的随意处理权给予互连结构10的示例。然而,一些互连结构可选择总是忽视隐示或遵循隐示。例如,互连结构10的一些实施方式可确定应总是覆写无效隐示,并且因此可将roci或romi事务降级至readonce事务。在此情形中,roci/romi事务可触发如图3中的snooponce请求,使得将数据保留在缓存器30中。

在图2至图4的示例中,如果缓存器30可已经处置如上文所论述的无效及非无效形式的探听请求(snoopunique及snooponce),则不需要修改缓存器30本身。然而,在图5的示例中,定义了新类型的探听请求(具有覆写无效性的探听请求),该探听请求回应于来自做出请求的主设备8的roci或romi事务由互连结构10发送至缓存器30。如图5所示,具有覆写无效性的探听请求指示缓存器30应将数据(如果是脏的)读取并返回至互连结构10,但是否无效数据可由缓存器本身确定。这不同于标准探听,后者将规定应无效或应不无效数据,但不将随意处理权给予缓存器本身。预期可是缓存器30将在大部分情形中无效以释放缓存器容量,但可有时取决于近期地址访问历史而覆写。系统缓存器30中的控制电路32、或用于与缓存的主设备4、6相关的缓存器的一致性接口16可负责确定执行或覆写无效。与缓存器30、12、14相关的控制电路可具有与做出请求的主设备8相比较佳的近期访问模式的本端知识,并且因此通过提供缓存器30、12、14忽视无效的能力,通过减少无效实际上仍需要的数据值的可能性以使得该数据值必须从存储器撷取或甚至在romi的情形中一起丢弃,此举可有时改良效率。若缓存器的控制电路32、16确定无效,则互连结构可取决于事务是roci还是romi来选择是否写回(或针对romi而言,取决于其它因素,诸如存储器是统带宽或地址访问历史),而若缓存器选择覆写无效,则不需要写回。

图6图示了readunique(具有无效性的读取)事务的示例,该事务可由做出请求的主设备4、6发布以触发从另一缓存器30强制无效数据。例如,若做出请求的主设备4、6将部分更新缓存器线,则readunique事务可是有用的,使得由于该缓存器线的其它部分将不由后续写入重写,该事务需要缓存器线的其它部分的大部分数据版本。通过在其它缓存器30中触发无效,此举避免了在做出请求的主设备写入之后在彼其它缓存器中保留陈旧数据。与roci或romi事务不同,利用读取唯一事务,需要无效并且该无效不可由互连结构10或缓存器30覆写。因此,readunique事务触发了至缓存器30的snoopunique请求。与roci/romi不同,readunique事务是缓存的读取事务,因此当将数据返回至做出请求的主设备时,做出请求的主设备4、6将数据储存在其缓存器中。因此,由于最新的数据仍保留在做出请求的主设备4、6的缓存器中,即使数据是脏的,不需要响应于readunique而触发写回。

图7图标了在缓存的读取事务上使用覆写无效的隐示的示例。在此情形中,做出请求的主设备4、6发送readsharedinvalidatehint事务,该事务是可缓存形式的具有覆写无效性的读取事务的示例。此事务以与如图2所示者相同的方式处置,除了当将数据返回至做出请求的主设备4、6时,将该事务储存在主设备的缓存器12、14中并且不需要写回。尽管图7图示了互连结构10确定是否遵循或覆写无效隐示的示例,应了解此形式的事务也可利用如图5中确定是否重写有效的缓存器30处置。因此,readsharedinvalidatehint事务将发布事务的能力给予请求主设备4、6,该事务命令互连结构无效缓存器线,但主设备不希望接受互连结构或目标缓存器30覆写此请求并不无效该线。互连结构也可支持来自主设备的readshared请求,该请求不将任何指令给予互连结构以无效线但若其愿意的话,将允许互连结构无效。相较于提供覆写非无效的请求的readshared事务,readsharedinvalidatehint事务因此提供覆写无效的请求(区别在于默认对事务的响应应缺乏由互连结构或目标缓存器所确定的任何例外条件)。因此,当预期继续缓存数据将是无用时,主设备4、6可使用readsharedinvalidatehint事务,并且否则使用readshared事务。

基于指示需要哪种类型的事务的由所执行的软件提供的软件隐示,可控制由一致性接口16响应于在给出的主设备4、6、8中由处理电路10、18执行的给出的加载/储存操作而触发的一致性事务类型(例如,roci、romi、readonce或readunique)。然而,常常使用互连结构10实施的一致性协议可对软件完全透明,使得该软件仅发布加载/储存操作,但彼操作是否触发roci、romi、readonce或readunique事务可由一致性接口16、22(例如)基于多个因素(诸如由接口观察的先前地址使用模式)或基于在所需地址(例如,一些地址可被标记为非共享,使得不必维持一致性并且因此由于将不在其它处缓存数据,不需要使用roci或romi)的存储器管理单元中定义的参数确定。因此,尽管提供对roci或romi指令的isa支持可有助于程序设计员影响一致性事务的选择,在许多情形中,roci/romi事务等等可从对软件透明的通信量模式及数据可用信息的知识通过一致性接口16、22或通过非cpu请求者(诸如nic8)自动产生。

上文所论述的各种类型的读取事务可通过规定事务类型的事务识别符来区分。或者,一些事务可共享相同事务识别符,但具有进一步定义事务功能的独立参数(例如,规定读取是缓存或非缓存读取的位或规定无效是强制或覆写的位)。应了解,给出的是统实施方式可能不实施全部上文所论述的事务类型,但可仅选择此等事务的子集。

在本申请案中,词语“被配置为……”用于意谓设备的组件具有能够进行所定义操作的配置。在此上下文中,“配置”意谓硬件或软件的互连结构的布置或方式。例如,设备可具有提供所定义的操作的专用硬件,或处理器或其它处理设备可经程序化以执行该功能。“被配置为”不隐含需要以任何方式改变设备组件以便提供所定义的操作。

尽管已在本文中参考附图详细描述了本发明的说明性实施例,应理解,本发明不限于这些精确实施例,且本领域技术人员可在其中实现各种变化及修改而不偏离由随附申请专利范围所定义的本发明的范围及精神。

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