用于数据处理系统中的缓存一致性的探听过滤器的制作方法

文档序号:11582555阅读:206来源:国知局
用于数据处理系统中的缓存一致性的探听过滤器的制造方法与工艺
本公开涉及数据处理系统,更具体地涉及用于数据处理系统中的缓存一致性的探听过滤器。
背景技术
:诸如片上系统(soc)之类的数据处理系统可包含多个处理器核心、多个数据缓存、以及共享数据资源。例如在共享存储器系统中,每个处理器核心可对单个共享地址空间进行读和写。缓存一致性是包括一个或多个缓存以及不止一个装置共享单个缓存区中的数据的任何系统中存在的议题。包括多个缓存的系统存在两个潜在问题。第一,存储器可在缓存的装置已经取走复本之后(被另一装置)更新。此时,缓存内的数据是过期的或者无效的,并且不再包含最新的数据。第二,包括回写式缓存的系统必须对以下情形进行处理:其中,装置对本地缓存的复本进行写入,此时存储器不再包含最新的数据。读取存储器的第二装置将看到过期的(陈腐的)数据。监视数据事务的探听过滤器可被用于确保缓存一致性。技术实现要素:根据本发明的第一方面,提供一种数据处理系统中的数据传输的方法,该数据处理系统具有共享数据资源和多个节点的网络,共享数据资源能由网络中的多个请求节点经由网络的归属节点来进行访问,所述方法包括:响应于在归属节点处从多个请求节点中的第一请求节点接收的、针对存储在共享数据资源中的系统地址处的数据的读请求,确定所请求的数据是被存储在归属节点的缓存中还是被存储在多个请求节点中一个或多个第二请求节点的本地缓存中;当所请求的数据未被存储在归属节点的缓存中而是被存储在一个或多个第二请求节点的本地缓存中时,向一个或多个第二请求节点发送探听以请求所述数据;当响应于探听而数据被返回时,用返回的数据填充归属节点的缓存,在所述缓存中把该数据标记为“脏”,并且更新归属节点的探听过滤器以指示第一请求节点具有数据的复本;以及向第一请求节点转发返回的数据,当所请求的数据未被存储在归属节点的缓存中或者一个或多个第二请求节点的本地缓存中时,从共享数据资源取回所请求的数据;更新归属节点的探听过滤器以指示第一请求节点具有数据的复本;以及向第一请求节点转发所取回的数据,当所请求的数据被存储在归属节点的缓存中时,更新归属节点的探听过滤器以指示第一请求节点具有数据的复本;以及向第一请求节点转发所取回的数据。根据本发明的第二方面,提供一种用于数据处理系统的探听过滤器,所述数据处理系统还包括:多个处理器,每个处理器具有本地缓存和缓存控制器;共享数据资源;以及系统缓存,其中探听过滤器监视由多个处理器对共享数据资源的访问,并且其中探听过滤器包括:探听过滤器控制逻辑,该探听过滤器控制逻辑能操作以与多个处理器的缓存控制器通信;以及探听过滤器缓存,该探听过滤器缓存能操作以针对多个处理器中的处理器的本地缓存中的每个数据块存储以下各项:标识数据块的标签;数据块处于“独有脏”、“共享脏”、“独有干净”或者“无效”状态的指示;以及表明哪些本地缓存共享数据块的复本的存在性向量,其中探听过滤器缓存不对存储处于“共享脏”状态的数据块的任何本地缓存进行标识,并且其中探听过滤器控制逻辑被配置为执行如根据第一方面所述的方法。根据本发明的第三方面,提供一种包括硬件描述语言的指令的非暂态计算机可读介质,所述指令定义如根据第二方面所述的数据处理系统。根据本发明的第四方面,提供一种用于数据处理系统的探听过滤器,所述数据处理系统包括:多个处理器,每个处理器具有本地缓存和缓存控制器;共享数据资源;以及系统缓存,其中探听过滤器监视由多个处理器对所述共享数据资源的访问,其中来自共享数据资源的、存储在多个处理器中的处理器的本地缓存中的数据被标记为处于“独有脏”、“共享脏”、“独有干净”或者“无效”状态,其中如果来自共享数据资源的、存储在所述系统缓存中的数据不与所述共享数据资源中的对应数据相匹配,则它被标记为处于“脏”状态,否则被标记为“干净”,并且其中探听过滤器包括:探听过滤器控制逻辑,该探听过滤器控制逻辑能操作以与多个处理器的缓存控制器通信;以及探听过滤器缓存,该探听过滤器缓存能操作以针对多个处理器中的处理器的本地缓存中的每个数据块存储以下各项:标识数据块的标签;数据块处于“独有脏”、“共享脏”、“独有干净”或者“无效”状态的指示;以及表明哪些本地缓存共享数据块的复本的存在性向量,其中探听过滤器缓存不对存储处于“共享脏”状态的数据块的任何本地缓存进行标识。根据本发明的第五方面,提供一种包括硬件描述语言的指令的非暂态计算机可读介质,所述指令定义如根据第四方面所述的数据处理系统。根据本发明的第六方面,提供一种数据处理系统,包括:多个处理器,每个处理器具有本地缓存和缓存控制器,其中被存储在多个处理器中的处理器的本地缓存中的数据被标记为处于“独有脏”、“共享脏”、“独有干净”或者“无效”状态;系统缓存,其中如果被存储在所述系统缓存中的数据不与共享数据资源中的对应数据相匹配,则它被标记为处于“脏”状态,否则被标记为“干净”,其中共享数据资源能由多个处理器访问;以及探听过滤器,该探听过滤器监视由所述多个处理器对共享数据资源的访问,其中,探听过滤器包括:探听过滤器控制逻辑,该探听过滤器控制逻辑能操作以与多个处理器的缓存控制器通信;以及探听过滤器缓存,该探听过滤器缓存能操作以针对多个处理器中的处理器的本地缓存中的每个数据块存储以下各项:标识数据块的标签;数据块处于“独有脏”、“共享脏”、“独有干净”或者“无效”状态的指示;以及表明哪些本地缓存共享数据块的复本的存在性向量,其中探听过滤器缓存不对存储处于“共享脏”状态的数据块的任何本地缓存进行标识。根据本发明的第七方面,提供一种包括如根据第六方面所述的数据处理系统的片上系统。根据本发明的第八方面,提供一种包括硬件描述语言的指令的非暂态计算机可读介质,所述指令定义如第六方面所述的数据处理系统。附图说明附图提供了可视表示,它们将被用于更全面地描述各种代表性实施例,并且可被本领域技术人员用来更好地理解所公开的代表性实施例及其内在的优点。在这些视图中,相同的标号表示相应的元素。图1是根据各种代表性实施例的数据处理系统的框图。图2示出根据各种代表性实施例的缓存一致性模型的状态。图3是数据缓存一致性数据处理系统的探听过滤器的框图。图4是根据各种代表性实施例的数据缓存一致性数据处理系统的探听过滤器的框图。图5是根据各种代表性实施例的操作数据缓存一致性数据处理系统的探听过滤器的操作方法的流程图。具体实施方式虽然本发明易有许多不同形式的实施例,但在附图中示出并且将在此详细描述具体实施例。应理解,本公开应被认为是本发明的原理的示例,并不意欲将本发明限制于所示和所述的具体实施例。在下面的描述中,附图中的若干视图中相同的标号被用于描述相同、相似或相应的部件。在本文中,诸如第一和第二、上和下等关系术语可被仅用来把一个实体或动作与另一实体或动作区分开,而并非必要地要求或暗示这些实体或动作之间存在任何实际的这种关系或顺序。术语“包括”、“包含”或其任何其他变型意在覆盖非排他性的包括,诸如包括列出的元素的过程、方法、物品或设备并不是仅包括那些元素,而是可以包括其他未被明确列出的元素或者这些过程、方法、物品或设备固有的元素。冠以“包括”的元素在没有更多限制的情况下并不排除在包括此元素的过程、方法、物品或设备中还存在另外的等同元素。贯穿本文对“一个实施例”、“某些实施例”、“实施例”或类似术语的提及意味着结合该实施例描述的特定特征、结构或特性被包括在本发明的至少一个实施例中。因此,这种短语的出现或者在本说明书的各处出现这种短语并不一定全部都指相同的实施例。此外,特定特征、结构或特性可以不受限制地以任何适当方式组合在一个或多个实施例中。如在此所使用的术语“或”应被解释为包括性的或者意味着任何一个或任何组合。因此,“a,b或c”指如下中的任一项:a;b;c;a和b;a和c;b和c;a,b和c。对此定义的例外仅当元件、功能、步骤或动作的组合以某种固有方式彼此互斥时才发生。为了说明的简单和清楚,标号可能在各视图间被重复以指代相应或相似的元素。若干细节被提出以提供对在此所描述的实施例的理解。这些实施例可以在没有这些细节的情况下实施。在其他实例中,公知的方法、过程、组件并未详细描述,以避免模糊所描述的实施例。本文的说明不应被认为被限制于在此所描述的实施例的范围。诸如片上系统(soc)之类的数据处理系统可包含多个处理器核心、多个数据缓存、以及共享数据资源。图1是根据各种代表性实施例的数据处理系统100的框图。系统100例如可在片上系统(soc)集成电路中实现。在图示的简化示例中,系统100被布置为具有经由互连电路连接在一起的若干功能块的网络。如图所示,功能块包括多个块102,各自包括共享l2缓存的(cpu的)处理核心的集群,每个处理核心具有它自己的l1缓存。可使用其它装置,例如图形应用单元(gpu)、数字信号处理器(dsp)、现场可编程门阵列(fpga)、或专用集成电路(asic)装置。此外,可包括一个或多个i/o主控装置104。块102和104这里被称作请求节点(rn),其可生成对于数据事务(例如,“加载”和“存储”)的请求。请求节点是这些事务的端点。块102和104经由互连电路106被耦合至数据资源,数据资源经由归属节点(homenode)108和存储器控制器110进行访问,归属节点108和存储器控制器110使得请求节点能够访问共享的主存储器112或者输入/输出装置。主存储器112可以在片上或者在芯片外部。块102生成数据访问请求并在这里被称作请求节点(rn)。装置108用作与多组数据地址相关联的数据块的归属点并在这里被称作归属节点(hn)。归属节点对来自请求节点的数据事务进行回应,并且作为响应可执行与其它功能块(例如,存储器控制器或者i/o装置)的数据事务。注意,为了简洁起见,soc中的许多元件(例如,时钟)在图1中已经被省略。缓存一致性是包括一个或多个缓存以及不止一个装置共享单个缓存区中的数据的任何系统中存在的议题。包括多个缓存的系统存在两个潜在问题。第一,存储器可在缓存的装置已经取走复本之后(被另一装置)更新。此时,缓存内的数据是过期的或者无效的,并且不再包含最新的数据。第二,包括回写式缓存的系统必须对以下情形进行处理:其中,装置对本地缓存的复本进行更新,此时存储器不再包含最新的数据。读取存储器的第二装置将看到过期的(陈腐的)数据。缓存一致性可通过探听过滤器的使用来维持。当多个rn共享数据或存储器资源时,一致性协议可被使用,并且节点可被称作完全一致的(例如,rn-f和hn-f)或者i/o一致的(例如,rn-i)。其它装置可提供到另一集成电路(例如,rn-c和hn-c)的连接。为了维持一致性,每个rn包括缓存控制器114,该缓存控制器接受来自处理器核心的加载和存储指令。缓存控制器114还发出一致性请求并且经由互连电路106从其它节点接收响应。归属节点108包括系统缓存116。这里,系统缓存116被称作l3缓存,然而其它级别的缓存可被使用。例如,在具有多个缓存的系统中,缓存116可以是最低一级或最后一级的缓存(llc)。为了避免请求节点102的缓存控制器114之间的过多消息交换,归属节点108还包括探听过滤器400来监视数据事务并且维持在系统缓存116中存储的数据的状态以及操作来维持系统的各个缓存中的数据的一致性。归属节点一般提供对于诸如存储器或i/o装置之类的数据资源的接口。归属节点用作一致性点,因为它发出一致性响应并且经由互连电路106从其它节点接收一致性请求。归属节点是中间节点:它对来自请求节点的数据事务请求做出回应,并且能够向诸如存储器控制器之类的其它装置发出数据事务请求。因此,归属节点可用作请求节点和存储器之间的中间节点,并且可包括用于数据的临时存储的缓存。归属节点的探听过滤器充当缓存控制器和一致性点。由于针对共享数据资源中给定组的存储器地址的存储器访问通过相同的归属节点,归属节点能够监视或者“探听”事务并且确定所请求的数据应当从主存储器中取回,从归属节点的缓存中取回,还是从一个请求节点的本地缓存中取回。总之,探听过滤器400和缓存控制器114监视数据事务并且交换消息以确保缓存一致性。为了维持各个本地缓存中的数据一致性,每个缓存行或缓存块的状态被跟踪。例如,如果本地缓存(例如,缓存114)中的数据是最新的但是不与存储器或最低级别缓存中的数据相匹配,则它被称为处于“脏”状态。否则,数据被称为是“干净”的。缓存一致性协议可采用moesi缓存一致性模型,其中缓存数据可处于若干状态中的一种状态。这些状态是:已修改(m)、已拥有(o)、独占(e)、共享(s)、和无效(i)。已修改数据(也叫做“独有脏”(ud)数据)不被其它缓存共享。本地缓存中的已修改数据已经被装置更新,但还没有被回写到存储器,所以它是“脏”的。已修改数据是独占并且已拥有的。本地缓存仅具有数据的有效复本。已拥有数据(也叫做“共享脏”(sd)数据)被其它缓存共享。它还没有被回写到存储器,所以它是“脏”的。独占数据(也叫做“独有干净”(uc)数据)不是共享的并且匹配存储器中的对应数据。共享数据(也叫做“共享干净”(sc)数据)是共享的并且匹配存储器中的对应数据。共享数据不是独占的,不是脏的,并且不是已拥有的。无效数据是已经在存储器和/或另一缓存中被更新的数据,所以是过期的。有效数据是最新的数据。它可被读取,但是如果它也是独占的,则它仅可被写入。图2示出了moesi缓存一致性模型下的各种数据状态。本地缓存中存储的有效数据可以是干净的或脏的,独有的或共享的,本文给出了四种可能的有效状态。在mesi模型中,“已拥有”状态被省略并且共享的数据作为干净数据进行维护。图3是采用moesi缓存一致性模型的探听过滤器300的框图。探听过滤器300包括探听过滤器缓存302和探听过滤器控制逻辑304,该探听过滤器控制逻辑生成输出的探听信号306。输出的探听信号306可被定向至特定节点、至多个节点的子集(多播)、或者至所有节点(广播),从而与其它节点处的缓存控制器通信。探听信号可以是对于与特定地址相关联的数据的请求。这样的探听信号被简称做“探听(snoop)”。探听过滤器缓存302包括与系统中缓存的数据相关联的若干记录308。每个记录308包括标签字段310(标识相关联的数据)、指示数据的moesi状态的缓存一致性状态字段312、标识任何共享脏(sd)数据或已拥有数据的拥有者的rnf-id字段314、以及存在性向量316。存在性向量316包含指示系统中的哪些节点在它们的本地缓存中具有该数据的比特位。因此,此类探听过滤器在字段314中除了保持对于共享脏(sd)数据的所有共享者的跟踪之外还可保持对于该数据的拥有者的跟踪。sd数据的拥有者是诸如针对cpu集群、gpu、dsp的请求节点等等的装置。对拥有者的跟踪除了使用相关联的逻辑之外还可使用探听过滤器中的标签存储)。在moesi缓存一致性模型中,探听过滤器必须跟踪哪个节点是sd(共享脏)数据的拥有者。就是说,探听过滤器中在多个rnf(例如,多个cpu集群)之间共享的数据。这例如通过表1中的一系列操作来示出。表1...操作(节点)rnf0rnf1系统缓存sf状态sf存在性sfsdrnfid1独有读(0)ud----uc01--2读(1)sdsc干净sd11rnf03回写(0)isc脏sc10--在此示例中,请求节点rnf0执行对于(地址a处的)一致性存储器的可缓存存储,并然后执行表1的第1行处的独有读(readunique)操作以获得对于行的独占拥有权,并且在rnf0缓存(例如,它的l1或l2缓存)中把该行安装以脏(ud)状态。该事务将在hnf探听过滤器中把rnf0标记为地址a的独占拥有者。探听过滤器把数据记录为独有干净(uc)并且更新存在性向量(sf存在性)以指示rnf0具有数据的复本。接下来,在第2行处,另一请求节点rnf1执行对于相同存储器位置(地址a)的可缓存读取。这使得hnf探听过滤器向rnf0发送对于地址a的探听,因为探听过滤器指示该数据在rnf0的缓存中。探听过滤器中的状态被更新为“sd”,并且数据的标识符(sdrnfid)被更新为rnf0。注意,系统缓存被填充并且系统缓存中的数据被标记为“干净”。sf指示存在具有脏数据的上游缓存(在此情形中,rnf0)。该sd标记要求探听过滤器中的(如图3中的字段314所指示的)额外存储。响应于该探听,rnf0把它的缓存中的数据降级为状态sd(也在表的第2行中)并且提供数据和探听响应。rnf1接收处于sc状态的缓存数据(通过互连或者直接从rnf0接收)。此时,hnf探听过滤器将把rnf0和rnf1二者标记为缓存数据的共享者,如表的第2行中的sf存在性向量所示。任何其它rnf对地址a的任何其它一致性读操作将向rnf0发送探听来取得数据。如表1的第3行所示,来自rnf0的后续回写清除了sf中的存在性并且将把数据安装在系统缓存中,被标记为“脏”。如果探听过滤器不具有rnf0的sd标记,则hnf必须对地址a的所有共享者进行探听直至一个rnf被发现能够提供数据。如果不能够提供数据,该数据经由存储器控制器(mc)来获得。对共享者的探听可通过以下方式来执行:向所有共享者广播针对一致性读取的探听,或者逐一地探听共享者直至发现一个提供数据的rnf。类似地,例如共享干净cmo和永久cmo之类的其它操作可生成广播探听。上面描述的moesi缓存一致性协议的一个问题是“共享脏”(sd)跟踪要求探听过滤器标签中除了跟踪rnf存在性向量之外的额外存储。根据本公开的各种实施例,提供了在探听过滤器中不跟踪已拥有或“共享脏”(sd)状态的一种探听过滤器。然而,探听过滤器可与使用moesi缓存一致性模型的装置进行操作。存储于缓存中并且在缓存之间传送的数据被标记以moesi状态,但是sd数据的拥有者未记录在探听过滤器中。图4是根据各种实施例的探听过滤器200的框图。过滤器被配置为使用遵循moesi或mesi模型的数据状态来运行。探听过滤器200包括探听过滤器缓存402和探听过滤器控制逻辑404,该探听过滤器控制逻辑生成输出的探听命令406。输出的探听命令406可被定向至特定节点、至多个节点的子集、或者至所有节点,从而使得其它节点处的探听过滤器能够被维持。探听过滤器缓存402包括与系统中缓存的数据行相关联的若干记录408。每个记录408包括标签字段410(标识数据块)、仅指示数据行的mesi状态的缓存一致性状态字段412、以及存在性向量414。存在性向量414包含指示系统中的哪些节点在它们的本地缓存中具有该数据行的比特位。与图3中的探听过滤器相比,不要求rnf-id字段314和相关联的逻辑。系统(例如,图1中所示的系统)通常以模块化的方式来构造并且由可被独立设计和测试的功能逻辑块建成。这些块到块之间的耦合是通过定义标准接口和接口协议来辅助的。当协议被修改或者新的协议被引入时,该协议提供与先前协议的后向兼容从而使得先前设计的功能逻辑块能够被重复使用是有利的。例如,请求节点中的缓存控制器(图1中的114)可使用moesi缓存一致性模型,但是它可能期望它可与不跟踪处于sd状态中的数据的拥有者的归属节点和互连一起操作。根据各种实施例,提供了不要求针对“共享脏”(sd)缓存数据使用rnf-id字段但是可与使用moesi缓存一致性模型的装置兼容的探听过滤器。根据各种实施例,数据处理系统的归属节点(hnf)具有探听过滤器和系统缓存。探听过滤器可与使用moesi缓存一致性模型的装置相兼容,但是要求探听过滤器标签和探听过滤器控制中的逻辑或存储以实现sd跟踪。图5是根据各种实施例的数据处理系统的完全一致的归属节点(hn-f)的探听过滤器的探听过滤器控制逻辑的操作方法的流程图500。如下,在块502处,从rn-f发送到hn-f的请求要访问系统存储器中的一地址处的数据,在块504处在hn-f的系统缓存和探听过滤器(sf)中查找该地址。如果请求是读请求(如来自判定块506的“读(read)”分支所示),流程继续以判定块508。如果未在缓存中发现该地址(缓存“未命中”)(如来自判定块508的否定分支所示),流程继续到判定块510以根据探听过滤器确定任何其它缓存是否包括所请求的数据。如果未在探听过滤器中发现该地址(探听过滤器“未命中”)(如来自判定块510的否定分支所示),从存储器读取该数据的信号在块512处被发送至存储器控制器(mc),并且探听过滤器被更新。数据在块514处从存储器控制器被接收到并且在块516处被转发至请求rn-f。这就完成了响应,如块518所示。如果在探听过滤器中发现该地址(探听过滤器“命中”)(如来自判定块510的肯定分支所示),数据被存储在rn-f缓存中,并且在块520处向对应的rn-f发送探听。探听被发送至共享数据的所有节点。如果对于该探听的响应未能返回所请求的数据(如来自判定块522的否定分支所示),流程继续至块512以使用存储器控制器从存储器取回数据。如果rn-f响应于该探听而提供了数据(如来自判定块522的肯定分支所示),则在块524处将数据存储在系统缓存中,并且缓存数据的状态在探听过滤器中被标记为“脏”。通过在块524处更新缓存,请求节点的本地缓存中的数据被保证是干净的,因此不需要识别共享脏数据的拥有者。流程然后继续至块516。任何后续读请求将不生成任何探听并且数据将从系统缓存来提供。数据的拥有者不被标记。如果在缓存中发现该地址(缓存“命中”)(如来自判定块508的肯定分支所示),数据已经被存储在hn-f节点的系统缓存中。探听过滤器(sf)在块526处被更新以指示请求rn-f将具有数据的复本并且数据在块524处被转发至rn-f节点。如果请求是回写请求(如来自判定块506的“wb”分支所示),流程继续至判定块530。如果回写数据的状态是干净(如来自判定块530的“干净(clean)”分支所示)或者该状态是“独有脏”(如来自判定块532的“ud”分支所示)或者数据尚不在系统缓存中(如来自判定块534的否定分支所示),流程继续至块536,其中探听过滤器目录中的对应条目被清除并且数据被存储在系统缓存中且被标记为“干净”。如果回写数据的状态是“共享脏”并且已经在系统缓存中(如来自判定块534的肯定分支所示),则探听过滤器目录中的对应条目被清除并且数据不被写入到系统缓存。此方式确保存储器仅被写入一次。不利地,如果“脏”数据被存储在缓存中,hn-f将会需要执行到存储器的额外回写。这不再被需要,因此避免了不必要的存储器控制流量。图5中所示的方法避免了广播探听或者在转到存储器控制器之前逐一地探听rn-f直至一个rn-f被发现的复杂控制逻辑。上述机制使得探听过滤器标签存储能够被减少,并且另外减少了在一些情形中利用cmo操作的广播探听的数量。表2示出了一系列操作和结果的状态的示例。在此示例中,请求节点rnf0执行对于(地址a处的)一致性存储器的可缓存存储,并然后执行表2的第1行处的独有读操作以获得对于行的独占拥有权,并且在rnf0缓存(例如,它的l1或l2缓存)中把该行安装以脏(ud)状态。探听过滤器把数据记录为独有干净(uc)并且更新存在性向量(sf存在性)以指示rnf0具有数据的复本。接下来,在第2行处,另一请求节点rnf1执行对于相同存储器位置(地址a)的可缓存读取。这使得hnf探听过滤器向rnf0发送对于地址a的探听,因为探听过滤器存在性向量指示该数据在rnf0的缓存中。探听过滤器中的状态被更新为“sc”,但是未记录拥有者的标识符。响应于该探听,rnf0把它的缓存中的数据降级为状态sd(也在表的第2行中)并且提供数据和探听响应。rnf1接收处于sc状态的缓存数据(通过互连或者直接从rnf0接收)。系统缓存被填充并且系统缓存中的数据被标记为“脏”,因为归属节点确定数据存储rnf0现在应当是sd状态。此时,hnf探听过滤器将把rnf0和rnf1二者标记为缓存数据的共享者,如表的第2行中的sf存在性向量所示。由任何其它rnf对地址a的任何其它一致性读操作将向rnf0和/或rnf1发送探听来取得数据,因为二者在sf存在性向量中被指示为共享者。当从rnf0接收到后续的回写请求时发生什么是根据对应的数据是否保留于归属节点的系统缓存中或者它是否已经被从缓存中驱逐来确定。如果被驱逐,则数据将已经被回写到存储器中,因为它被标记为“脏”。表2的第3行显示当在数据已经被从系统缓存中驱逐之后从rnf0接收到后续的回写请求时发生了什么。回写请求再次指示来自rnf0的数据处于sd状态。探听过滤器状态是sc,这向探听过滤器控制逻辑指示系统缓存先前持有数据的“脏”复本并且已经将它驱逐至存储器。因为存储器已经被更新,所以没有意图在系统缓存中保存处于“脏”状态的数据。因而,系统缓存被填充以“干净”。sf中的存在性向量被更新以指示rnf0不再共享该数据并且该数据被存储在系统缓存中并且被标记为“脏”。rnf0把它的本地缓存中该数据的状态更新为“无效”。表2的第4行显示当在数据已经被从系统缓存中驱逐之前从rnf0接收到后续的回写请求时发生了什么。探听控制器确定数据已在系统缓存中处于“脏”状态,所以数据被丢弃并且不对缓存做出任何改变。探听过滤器存在性向量被更新以指示rnf0不再共享该数据。rnf0把它的本地缓存中该数据的状态更新为“无效”。表2在上文描述的方法中,未使用探听过滤器状态“sd”并且拥有者id未被探听过滤器记录或跟踪,从而减少了探听过滤器缓存的大小并且简化了探听过滤器控制逻辑。将会认识到,这里描述的一些或全部功能可以通过没有存储程序指令的状态机(例如,定制逻辑)实现,被实现于一个或多个专用集成电路(asic)中、诸如fpga之类的可重配置逻辑中、或者具有存储的指令的一个或多个编程的处理器中。当然,也可使用这些方法的组合。因此,这里已经描述了这些功能的方法和装置。此外,预期到本领域技术人员在此所公开的概念和原理的教导下虽然受某些因素(例如,可用时间、当前技术、经济考量)驱动而可能需要大量努力和许多设计选择但将能够容易地用最少的实验生成这样的集成电路、软件指令和程序。如这里所用,术语处理器、控制器等等可涵盖处理器、控制器、微控制器单元(mcu)、微处理器、图形处理单元(gpu)、数字信号处理器(dsp)、现场可编程门阵列(fpga)、专用集成电路(asic)装置、存储器控制器、或者i/o主控装置。本领域技术人员将会认识到本发明已经结合示例性实施例而被描述,但是它不被如此限制。本发明可以使用硬件组件来实现,诸如与所描述并要求保护的公开等同的专用硬件和/或专用处理器。类似地,通用计算机、基于微处理器的计算机、微控制器、光学计算机、模拟计算机、专用处理器和/或专用硬连线逻辑可用于构建本公开的实施例的等同替换。此外,本领域技术人员将认识到用于实现上述实施例的程序流和关联数据可以使用各种形式的存储装置来实现,例如,只读存储器(rom)、随机存储存储器(ram),电可擦除可编程只读存储器(eeprom);非易失性存储器(nvm);如硬盘驱动,软盘驱动,光盘驱动的海量存储装置、光存储元件、磁存储元件、磁光存储元件、闪存、核心存储器和/或不脱离本发明的其他等同存储技术。这些替代存储装置应被认为是等同的。在此描述的各种实施例利用运行编程指令的编程的处理器来实施,其中编程指令以流程图的形式被广义的描述并且可被存储在任何适当电子存储介质上或通过任何适当电子通信介质被传输。然而,本领域技术人员将会认识到上述处理可以在任何数量的变体中以及以许多适当编程语言来实现,而不脱离本发明。例如,在不脱离本发明的情况下,所执行的某些操作的顺序通常可被改变,另外的操作可被增加,或者操作可被删除。错误捕获可被添加和/或增强,并且在用户界面和信息呈现方面也可做出变型,而不脱离本发明。这些变型是可预期的并被认为是等同的。相应地,所公开的实施例的一些方面和特征在下面编号的项目中被给出。1.一种数据处理系统中的数据传输的方法,该数据处理系统具有共享数据资源和多个节点的网络,共享数据资源能由网络中的多个请求节点经由网络的归属节点来进行访问,方法包括:响应于在归属节点处从多个请求节点中的第一请求节点接收的、针对存储在共享数据资源中的系统地址处的数据的读请求,确定所请求的数据是被存储在归属节点的缓存中还是被存储在多个请求节点中一个或多个第二请求节点的本地缓存中;当所请求的数据未被存储在归属节点的缓存中而是被存储在一个或多个第二请求节点的本地缓存中时,向一个或多个第二请求节点发送探听以请求数据;当响应于探听而数据返回时,用返回的数据填充归属节点的缓存,在缓存中把该数据标记为“脏”,并且更新归属节点的探听过滤器以指示第一请求节点具有数据的复本;以及向第一请求节点转发返回的数据,当所请求的数据未被存储在归属节点的缓存中或者一个或多个第二请求节点的本地缓存中时,从共享数据资源取回所请求的数据;更新归属节点的探听过滤器以指示第一请求节点具有数据的复本;以及向第一请求节点转发所取回的数据,当所请求的数据被存储在归属节点的缓存中时,更新归属节点的探听过滤器以指示第一请求节点具有数据的复本;以及向第一请求节点转发所取回的数据。2.如项目1的方法,其中被转发至第一请求节点的数据被标记为处于“独有脏”状态。3.如项目1的方法,其中存储在多个请求节点的本地缓存中的数据被标记为处于“独有脏”、“共享脏”、“独有干净”或者“无效”状态。4.如项目3的方法,其中第一请求节点的本地缓存中的数据被标记为处于“共享脏”状态,并且其中探听过滤器不标识第一请求节点。5.如项目1的方法,其中更新归属节点的探听过滤器以指示第一请求节点具有数据的复本包括:更新探听过滤器中的存在性向量。6.如项目1的方法,其中向一个或多个第二请求节点发送探听以请求数据使得第二请求节点把它的本地缓存中的数据从“ud”状态更新为“sd”状态。7.如项目1的方法,还包括:响应于在归属节点处从多个请求节点中的第一请求节点接收的、请求回写数据存储至共享数据资源中的系统地址的回写请求,确定回写数据的状态;当数据的状态处于“干净”或“独有”状态时或者当归属节点的缓存中未存储与系统地址相关联的任何数据时,把回写数据作为“干净”数据存储在归属节点的缓存中;当与系统地址相关联的数据已被存储在归属节点的缓存中时,丢弃回写数据而无需把它存储在归属节点的缓存中;以及更新探听过滤器中的存在性向量。8.如项目7的方法,还包括:当归属节点的缓存中被标记为“脏”的数据被从归属节点的缓存中驱逐时,把数据回写至共享数据资源。9.如项目7的方法,还包括:多个请求节点中的第一请求节点在它的本地缓存中把要回写的数据的复本标记为“无效”。10.一种用于数据处理系统的探听过滤器,数据处理系统还包括:多个处理器,每个处理器具有本地缓存和缓存控制器;共享数据资源;以及系统缓存,其中探听过滤器监视由多个处理器对共享数据资源的访问,并且其中探听过滤器包括:探听过滤器控制逻辑,该探听过滤器控制逻辑能操作以与多个处理器的缓存控制器通信;以及探听过滤器缓存,该探听过滤器缓存能操作以针对多个处理器中的处理器的本地缓存中的每个数据块存储以下各项:标识数据块的标签;数据块处于“独有脏”、“共享脏”、“独有干净”或者“无效”状态的指示;以及表明哪些本地缓存共享数据块的复本的存在性向量,其中探听过滤器缓存不对存储处于“共享脏”状态的数据块的任何本地缓存进行标识,并且其中探听过滤器控制逻辑被配置为执行如项目7的方法。11.一种包括硬件描述语言的指令的非暂态计算机可读介质,指令定义如项目10的数据处理系统。12.如项目1的方法,其中从共享数据资源取回所请求的数据包括:探听过滤器的控制器经由互连电路向存储器控制器发送读请求;存储器控制器访问存储器中系统地址处存储的数据;以及存储器控制器经由互连电路向归属节点返回所访问的数据。13.一种用于数据处理系统的探听过滤器,数据处理系统包括:多个处理器,每个处理器具有本地缓存和缓存控制器;共享数据资源;以及系统缓存,其中探听过滤器监视由多个处理器对共享数据资源的访问,其中来自共享数据资源的、存储在多个处理器中的处理器的本地缓存中的数据被标记为处于“独有脏”、“共享脏”、“独有干净”或者“无效”状态,其中如果来自共享数据资源的、存储在系统缓存中的数据不与共享数据资源中的对应数据相匹配,则它被标记为处于“脏”状态,否则被标记为“干净”,并且其中探听过滤器包括:探听过滤器控制逻辑,该探听过滤器控制逻辑能操作以与多个处理器的缓存控制器通信;以及探听过滤器缓存,该探听过滤器缓存能操作以针对多个处理器中的处理器的本地缓存中的每个数据块存储以下各项:标识数据块的标签;数据块处于“独有脏”、“共享脏”、“独有干净”或者“无效”状态的指示;以及表明哪些本地缓存共享数据块的复本的存在性向量,其中探听过滤器缓存不对存储处于“共享脏”状态的数据块的任何本地缓存进行标识。14.一种包括硬件描述语言的指令的非暂态计算机可读介质,指令定义如项目13的数据处理系统。15.一种数据处理系统,包括:多个处理器,每个处理器具有本地缓存和缓存控制器,其中被存储在多个处理器中处理器的本地缓存中的数据被标记为处于“独有脏”、“共享脏”、“独有干净”或者“无效”状态;系统缓存,其中如果被存储在系统缓存中的数据不与共享数据资源中的对应数据相匹配,则它被标记为处于“脏”状态,否则被标记为“干净”,其中共享数据资源能由多个处理器访问;以及探听过滤器,该探听过滤器监视由多个处理器对共享数据资源的访问,其中,探听过滤器包括:探听过滤器控制逻辑,该探听过滤器控制逻辑能操作以与多个处理器的缓存控制器通信;以及探听过滤器缓存,该探听过滤器缓存能操作以针对多个处理器中处理器的本地缓存中的每个数据块存储以下各项:标识数据块的标签;数据块处于“独有脏”、“共享脏”、“独有干净”或者“无效”状态的指示;以及表明哪些本地缓存共享数据块的复本的存在性向量,其中探听过滤器缓存不对存储处于“共享脏”状态的数据块的任何本地缓存进行标识。16.如项目15的数据处理系统,其中数据处理系统由集成电路组成。17.如项目15的数据处理系统,还包括存储器控制器,其中共享数据资源包括能经由存储器控制器访问的存储器。18.如项目15的数据处理系统,还包括互连电路,其中数据处理系统被配置为由互连电路耦合的节点的网络,其中:网络的请求节点包括多个处理器中的处理器,并且具有其本地缓存和缓存控制器;并且网络的归属节点包括探听过滤器和系统缓存。19.一种包括如项目15的数据处理系统的片上系统。20.一种包括硬件描述语言的指令的非暂态计算机可读介质,指令定义如项目15的数据处理系统。在此已经详细描述的各种代表性实施例已经通过示例而非限制的方式被呈现。本领域技术人员将会理解在所描述的实施例的形式和细节上可以做出各种带来在所附权利要求的范围内的等同实施例的改变。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1