CN1729458B - 状态转发方法 - Google Patents

状态转发方法 Download PDF

Info

Publication number
CN1729458B
CN1729458B CN2003801065906A CN200380106590A CN1729458B CN 1729458 B CN1729458 B CN 1729458B CN 2003801065906 A CN2003801065906 A CN 2003801065906A CN 200380106590 A CN200380106590 A CN 200380106590A CN 1729458 B CN1729458 B CN 1729458B
Authority
CN
China
Prior art keywords
copy
node
data
request
cache
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN2003801065906A
Other languages
English (en)
Other versions
CN1729458A (zh
Inventor
H·胡姆
J·A·古德曼
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of CN1729458A publication Critical patent/CN1729458A/zh
Application granted granted Critical
Publication of CN1729458B publication Critical patent/CN1729458B/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0817Cache consistency protocols using directory methods
    • G06F12/0822Copy directories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0813Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

这里所述的是一种具有五种状态的高速缓存一致性协议,该五种状态为:修改、排它、共享、无效和转发(MESIF)。所述MESIF高速缓存一致性协议包括转发(F)状态,该状态指明单个数据副本,从所述数据副本中能够产生另一个副本。利用F状态下的超高速缓冲存储器线来响应对超高速缓冲存储器线的副本的请求。在一个实施例中,将新创建的副本置于F状态下并将先前处于F状态下的超高速缓冲存储器线置成共享(S)状态或无效(I)状态。由此,如果共享超高速缓冲存储器线,则一个共享的副本就处于F状态下并且剩余的超高速缓冲存储器线副本处于S状态下。

Description

状态转发方法
相关申请
本美国专利申请涉及下列同时提交的美国专利申请:
(1)2002年提交的名为″SPECULATIVE DISTRIBUTED CONFLICTRESOLUTION FOR A CACHE COHERENCY PROTOCOL(针对高速缓存一致性协议的投机性分布式冲突解决方案)″的申请No.10/XXX,XXX(文档号P13923)
(2)2002年提交的名为″HIERARCHICAL DIRECTORIES FOR CACHECOHERENCY IN A MULTIPROCESSOR SYSTEM(针对多处理器系统中的高速缓存一致性的分级目录)″的申请No.10/XXX,XXX(文档号P13984)
(3)2002年提交的名为″HIERARCHICAL VIRTUAL MODEL OF A CACHEHIERARCHY IN A MULTIPROCESSOR SYSTEM(多处理器系统中的高速缓存等级的分级虚拟模型)″的申请No.10/XXX,XXX(文档号P13985)
(4)2002年提交的名为″NON-SPECULATIVE DISTRIBUTED CONFLICTRESOLUTION FOR A CACHE COHERENCY PROTOCOL(针对高速缓存一致性协议的非投机性分布式冲突解决方案)″的申请No.10/XXX,XXX(文档号P13986)
技术领域
本发明涉及高速缓冲存储器。更特别地,本发明涉及一种供多处理器系统中的高速缓存一致性协议中使用的转发(F)状态。
背景技术
大部分的高速缓存一致性协议都具有共享状态,在该共享状态中数据能够在许多系统组件(例如,处理器)之间被共享。当系统组件请求数据的只读副本并且该数据已在另一个系统组件中处于排它(E)状态时,出现共享(S)状态。发请求的系统组件和具有数据副本的系统组件中的每一个都在共享状态下对数据进行标记。当数据处于共享状态时,请求数据的只读副本的系统组件能够自由地拷贝那个数据。
在基于总线的多处理器系统中,高速缓存一致性协议通常不许可系统组件向发请求的系统组件提供共享数据。而是,从存储系统中直接检索出所述数据。在基于目录的高速缓存一致性协议中,存储系统还向发请求的系统组件提供共享副本。将超高速缓冲存储器线状态(由此,数据状态)的目录定位在系统组件和存储器之间,由此从存储器检索出所述数据并将其发送给发请求的系统组件。
共享状态可能会带来多处理器系统中的许多问题,特别是当所述多处理器系统不依赖于用于追踪超高速缓冲存储器线状态的目录时,该多处理器系统在系统组件之间使用点对点互连网络。为了限制这类系统中的问题的发生,现有技术的解决方案提出:将来自系统组件的请求直接路由到存储系统,然后所述存储系统负责广播该请求以确定数据(超高速缓冲存储器线)状态,收集来自其它系统组件的响应,然后确定当履行所述请求时数据应为什么状态。这些协议导致将被返回的数据的四次跳跃(hop):1)对存储器的请求者,2)存储器向其它系统组件广播请求,3)系统组件对存储系统作出响应,和4)存储系统将数据转发给请求者。
为了在完全连接的点对点系统中缩短与履行请求相关联的等待时间,发请求的系统组件能够将它的请求广播到所有其它系统组件以及广播到存储系统。如果另一个系统组件具有处于共享状态下的数据,那么它就会直接把数据传送给请求者。当多个系统组件同时地请求同一个数据并且多个其它的系统组件具有处于共享状态下的数据时复杂度上升。所述请求者系统组件必须潜在地处理多个数据返回。当一个或多个系统组件请求修改共享数据的权利时,出现了更多的问题。
当其中一个系统组件想要修改数据时,那个组件必须发出″所有权请求(RFO)″,以从其余的系统那里要求修改被请求数据的许可。在RFO获得准许之后,数据的状态从共享状态变成表明所述数据已被修改的另一个状态(例如,修改状态)。
为了举例说明,图1a和1b是具有现有技术的高速缓存一致性协议的四节点系统的概念图解。在图1b的示例中,虚线表示先前发送的消息,而实线表示正在描述的消息。在这种系统中,仅仅采用四种常规的超高速缓冲存储器线状态:修改(M)、排它(E)、共享(S)和无效(I)。这公知为MESI高速缓存一致性协议。节点110、120和130是存储高速缓冲存储器中的被请求数据的副本(例如,超高速缓冲存储器线)的对等节点。本地节点140在存储器中存储数据原本,或者当将修改版本写回到存储器时存储数据的修改版本。也就是说,本地节点140负责非高速缓存的数据副本。在图1a的示例中,节点120和130两者都具有存储在高速缓冲存储器中的被请求数据的副本,并且该数据处于共享(S)状态。
当对等节点110发出请求修改数据的权利的RFO时,对等节点110将RFO广播到所述系统的其它节点。正如在图1b中举例说明的那样,节点120和130两者都通过提供被请求数据的副本,对来自对等节点110的请求作出响应。因为这两个节点120和130都能够提供被请求数据的副本,所以对等节点110必须能够接收和协调被请求数据的多个副本。这给对等节点110的设计增加了复杂度。随着系统中节点数目的增加,这要求复杂度方面的进一步增加,这增加了系统设计的成本和难度。
还可以存在更多的复杂状态,在其中多个发请求的节点中的每一个都能够接收被请求数据的副本,例如从三个或更多节点中接收。由此,每一个节点都必须能够解决被请求数据的多个冲突副本以便确保正确的系统功能。
发明内容
本发明涉及一种状态转发方法,其包括:
在具有多个高速缓冲存储器的系统当中的一个或多个高速缓冲存储器中存储数据块;
将单个高速缓存的数据块的副本指定为将用于对数据块的副本的广播请求作出响应的副本;以及
通过用存储所指定的数据块副本的高速缓冲存储器来提供数据块的副本以对数据块的广播请求作出响应,
所述方法进一步包括用发请求的高速缓冲存储器存储作为响应而提供的所述数据块的副本,其中将由发请求的高速缓冲存储器所存储的数据块的副本指定为将用来响应将来的数据块副本的请求的单个高速缓存副本。
优选地,其中相对于接收高速缓冲存储器中的高速缓存操作异步地广播所述请求。
优选地,其中数据块包括超高速缓冲存储器线。
优选地,其中通过用存储所指定的数据块副本的高速缓冲存储器提供数据块的副本来对数据块的请求作出响应包括:
接收数据块的请求;
确定数据块的副本是否被存储在本地高速缓冲存储器中;
如果数据块的副本被存储在本地高速缓冲存储器中,则确定所存储的数据块是否是所指定的数据块的副本;以及
如果所存储的数据块是所指定的数据块的副本,则将数据块的副本传输给发请求的高速缓冲存储器。
附图说明
本发明是按照举例的方式而不是作为限制在附图中加以说明的,在附图中相同的参考标记是指相似的元件。
图1a和1b是具有现有技术的高速缓存一致性协议的四节点系统的概念上的说明。
图2a和2b是利用转发状态将数据从其本地节点传送到发请求的节点的概念上的说明。
图3a-3c是利用转发状态将数据在对等节点之间传送在概念上的说明。
图4是与用于利用转发状态来提供数据副本的技术的一个实施例相对应的流程图。
图5是节点的一个实施例的框图。
图6是多处理器系统的一个实施例。
具体实施方式
描述用于多节点系统中的高速缓存一致性的转发(F)状态的使用。所述F状态许可共享数据从当前自己的系统组件被传输到发请求的系统组件,而不牵涉在发请求的系统组件上接收的多个数据副本,因为所述请求是只读请求或读取所有权的请求。
所述F状态不同于现有技术的高速缓存一致性协议当中的O状态,所述现有技术的高速缓存一致性协议通称MOESI(修改、所拥有、排它、共享和无效),因为具有处于O状态下的数据的系统组件在所述系统中具有唯一的更新数据值。此外,它与存储系统中的副本不一致。这需要系统组件刚一驱逐所拥有的数据就把那个数据发送回以存储在存储系统中。所述F状态表明所述数据值与存储系统中的副本相一致。如果系统组件驱逐处于F状态下的数据,那么所述组件就能够简单地删除该数据而无需将该数据存储回至存储系统。
在下面的说明中,为了解释起见,阐述了许多具体细节以便提供对本发明的彻底理解。然而,明显的是:对于本领域熟练技术人员而言,可以在没有这些具体细节中的一些细节的情况下实践本发明。在其它实例中,为了避免混淆本发明,以框图的形式示出了结构和装置。
在下面的说明中,描述包含五种状态(修改、排它、共享、无效、转发)的高速缓存一致性协议,并且也将其称为MESIF协议。在可替换的实施例中,所述转发状态能够与不同于MESI状态和/或除MESI状态以外的状态一起使用。换言之,其中一个是转发状态的五种状态不是必需的。
为了提供高速缓存一致性协议,描述了几种高速缓存一致性协议消息类型。作为初步解决的问题,在下面提供了用于高速缓存一致性的消息概要。并不需要所有的所描述的消息以提供具有F状态的一致性协议,而是可以使用消息群来提供具有F状态的高速缓存一致性协议。
请求消息
下列消息是来自发请求的节点(系统组件)的数据/动作请求。将这些消息广播到该系统的所有节点。
端口读取线(PRL):这是对数据段副本的请求,例如超高速缓冲存储器线。
端口读取无效线(PRIL):这是对数据段副本的请求,在其中使提供商节点的数据副本无效。这是″所有权请求″(RFO)型消息。
端口写线(PWL):这个消息令数据(例如,修改的超高速缓冲存储器线)将被写入存储器中。这个消息还可以称为″脏驱逐(dirtyeviction)″。
响应消息
[0016]下列消息是响应于上述请求从对等(即,非本地)节点发送到发请求的节点的消息。本地节点是包含与被请求的超高速缓冲存储器线相对应的存储系统的节点。
无效状态确认(IACK):这个消息是当发送响应的节点具有被请求数据的无效副本或没有被请求数据的副本时对请求(PRL、PRIL、PWL)的响应。
共享状态确认(SACK):这个消息是当发送响应的节点具有并保留有处于共享状态下的被请求数据的副本时对请求的响应。
数据收到确认(DACK):这个消息确认被请求数据的接收。
冲突:这个消息表明存在对被请求的超高速缓冲存储器线的共同待决(copending)请求。
到本地节点的消息
将这些消息通过对等节点传送到本地节点。
读(冲突):这个消息请求来自本地节点的数据并列出所有冲突(如果有的话)。
CNCL(冲突):响应于对等节点中的命中而将这个消息发送给本地节点,并且列出所有冲突(如果有的话)。这个消息取消本地节点的预取操作。
来自本地节点的消息
将这些消息从本地节点发送到对等节点和/或发请求的节点。
数据:这个消息包含被请求数据并且能够表明将被发请求的节点使用的数据的状态(M/E/F/S)。
确认(ACK):这个消息表明被请求数据已被发送给发请求的节点。
等待:这个消息令正在进行接收的节点在进一步发送消息之前等待输入数据。
传送(XFR):这个消息令正在进行接收的节点把数据传送到该消息中指明的节点。
MESIF高速缓存一致性协议的综述
这里所述的是具有五种状态的高速缓存一致性协议,该五种状态为:修改、排它、共享、无效和转发(MESIF)。所述MESIF高速缓存一致性协议包括指明单个数据副本的转发(F)状态,从该单个数据副本中能够进一步产生副本。使用处于F状态下的超高速缓冲存储器线来响应对超高速缓冲存储器线副本的请求。在一个实施例中,将新创建的副本置于F状态下,并且将另一个系统组件(非本地节点)中的先前处于F状态下的超高速缓冲存储器线置成共享(S)状态或无效(I)状态。由此,如果共享超高速缓冲存储器线,则一个系统组件中的一个共享副本就处于F状态下,而其它系统组件中的剩余的超高速缓冲存储器线副本就处于S状态下。
这里所描述的MESIF协议是新的,因为它实质上是一种没有单条串行化总线限制的监听协议。与监听高速缓存协议相类似,MESIF依赖于具有数据的高速缓存副本的节点以便保持一致。采用点对点链接而非同步链接,集中广播引入了时间异常(time-warp)(即从不同的节点的角度来看,事件看起来是以不同的顺序发生的事实)的问题。所述MESIF协议正确地处理时间异常,识别何时潜在错误会产生并确定该错误得到正确处理。本地节点的概念主要是为了判断未高速缓存的副本驻留在哪里,但是本地节点能够参予每个事务(而不必位于关键路径上)以便解决冲突和时间异常问题。由于所述方案的并发广播特性,MESIF实现了与监听协议相关联的低等待时间,从而在大多数情况下以最短的可能等待时间(单次往返路程的请求响应)获得可高速缓存的数据副本。
忽略时间异常的问题,就可能当在系统中存在唯一的高速缓存副本时实现两次跳跃的存取。F状态的引入将这一能力扩展到存在多个副本的常见情形。实质上,F状态建立判断当允许多个节点时哪一个节点应响应的″平等中的第一(first-among-equals)″。
所述MESIF协议包含向所有对等节点以及本地节点广播初始请求。如果在状态E、F或M下高速缓存副本的话,则它就被包含在所述响应当中。继而,向本地节点发送第二个消息,以通知它所述请求已被满足。如果未高速缓存被请求的线,或如果只有S状态的副本存在的话,则利用发送给本地节点的第二个请求来确认前一个请求,其中此刻可能已经从其存储器中取出所述本地节点。不论是在哪种情况下,为了同步化和冲突解决起见,所述本地节点都必须响应第二个请求(尽管它们往往能够被组合在一起也响应第一个请求)。注意,本地节点可以具有一个或多个高速缓存,所以它可以像任何其它节点那样响应初始请求。
所述数据一旦到达而非等待所有的响应,就因允许节点使用所述数据而造成复杂化。由此,允许接收数据副本的节点一接收就在内部立即使用所述数据,但是可以不影响使用其余系统可见的数据直到所述节点已经从本地节点那里接收到确认为止。所述确认还可以包括节点必须将它的副本转发给另一个节点的指令,并且或许会从它自己的高速缓存中驱逐所述节点。
当节点通过提供已高速缓存的数据对来自于另一个节点的请求作出响应时,所述节点推延它为同一个超高速缓冲存储器线接收的所有其它请求直到所述节点接收到来自本地节点的响应,该响应确认所述节点转发了该数据的事实,由此确保所有节点都注意到相同顺序的(可能可写的)超高速缓冲存储器线的传送。
所述本地节点是未高速缓存的数据的存储库,但是所述本地节点还可以具有产生请求的处理器并且包括一个或多个高速缓存。像任何其它的节点一样,当本地节点处理器错过时,所述本地节点必须向所有其它(对等)节点广播请求,并且所述本地节点必须内部地处理所述请求,因为它可能是针对本地节点而到达的任何其它请求。注意,这是一个特例,因为本地节点不显式地向它自身(本地节点)发送消息。另外,当外部请求针对局部高速缓存的数据而到达时,所述本地节点必须以这样一种方式来进行响应,以确保来自本地节点的最新响应不是有歧义的。也就是说,所述本地节点可以通过提供所述数据来响应初始请求,但是所述本地节点同时也必须作为本地节点来响应第二个请求。
协议的变形允许本地节点在不知道数据是否有效的情况下以这个数据的未高速缓存的副本响应,把它留给发请求的节点并且来自本地节点的第二个响应挑选出不适当地提供数据的情形。
转发状态的综述
在一个实施例中,所述转发状态是用在异步地广播请求的系统中的,这意味着所述响应不能被系统中的所有节点注意到,并且具有在F状态下存储的数据的节点不能具有唯一的副本,因为有效的副本是(例如,由本地节点)存储在存储器中的。由此,不同于MOESI协议的所拥有状态,其中处于O状态下的数据是唯一有效的数据副本,可以丢弃处于F状态下的数据或者如果期望的话则将其转变成S状态。
在存储器中存在有效的被请求数据的副本的环境下,所述F状态可以被称作为″平等中的第一″的概念。早先的协议(例如,MOESI和SCI)没有提供这种状态。所述MOESI协议维护所拥有的副本,因为有效的副本并不是维护在存储器中的。仅仅通过更新存储器中的副本就可以清除该所拥有的副本。所述SCI协议不是广播协议,因为请求是发送给将要处理的目录节点的。
图2a和2b是使用转发状态将数据从其本地节点传送到两个对等节点中的每一个的概念上的说明。在图2a和2b以及图3a至3c的示例中,虚线表示先前发送的消息,而实线表示正被描述的消息。为了保持图更加清楚,当分解一组消息(例如,PRIL和对应的IACK)时,所述这些线表示消息不再被包含在所述图中。
随后的论述是就多节点系统内的节点而言给出的。在一个实施例中,非本地节点包含具有内部高速缓冲存储器和/或外部高速缓冲存储器的处理器。在可替换的实施例中,非本地节点是与其它电子系统相连的电子系统(例如,计算机系统、移动装置)。在又一个实施例中,每个节点和所有节点都可以是具有内部高速缓冲存储器和邻接的存储系统的处理器。在上面描述的最后一个实施例中,当所请求的数据在节点的存储系统中是本地的时,所述节点能够充当对该请求的本地节点。
图2a举例说明了多节点系统,其中仅仅由本地节点240存储所请求的数据集(例如,超高速缓冲存储器线)。这个状态例如可以在存取数据集的第一时间出现。将数据存储在与本地节点240相关联的存储器中,而不是存储在与任何节点210、220和230相关联的高速缓冲存储器中。对等节点230通过向系统的所有节点广播PRL消息来请求数据块。对等节点230能够利用其它类型的消息(例如,PRIL消息)来请求数据块。
图2b举例说明了响应于对等节点230的数据请求的图2a的多节点系统。节点210和220向对等节点230发送IACK消息,以表明节点210和220的高速缓冲存储器不包含被请求数据的有效副本。本地节点240在DataE消息中向对等节点230发送被请求数据。所述DataE消息向对等节点230表明被请求数据应被存储在处于E状态下的对等节点230上。
当另一个对等节点(例如,对等节点220)对相同的超高速缓冲存储器线产生后续请求时,对等节点230通过以DataF消息(而非如本地节点240所提供的DataE消息)响应来自对等节点220的PRL请求来直接地向对等节点220提供超高速缓冲存储器线。对等节点230将其超高速缓冲存储器线的副本转变为共享状态(S)。此外,当对等节点220随着来自对等节点230的DataF消息一起接收来自对等节点210的响应时,该对等节点220就向本地节点240发送CNCL()消息。然后,本地节点240向对等节点220发送ACK消息,由此许可对等节点220使超高速缓冲存储器线保持在F状态下。对等节点220能继而以DataF响应对相同的超高速缓冲存储器线的后续请求。
在一个实施例中,处于F状态下的数据的副本是用来向随后发请求的节点提供附加副本的副本。由此,使用处于F状态下的数据来对将来的数据副本请求作出响应。将新创建的数据副本置于F状态下,而将早先处于F状态下的数据副本置成S状态。换言之,如果共享所述数据,则一个共享副本就处于F状态下,而剩余的数据副本(如果有的话)就处于S状态下。可替换地,使被请求数据的副本的源维持在F状态下,并且在S状态下存储新的副本。
处于F状态下的数据的单个副本带来了至少两个优点。第一,高速缓存到高速缓存的响应一般比存储器到高速缓存的响应更快速。因此,在指定单个的情况下,用来向发请求的节点提供副本的高速缓存的数据副本能够提高多节点系统的整体性能。
第二,所述F状态使数据从S状态到修改(M)状态的转变简单化。因为只有一个处于F状态下的数据副本存在,所以这允许了用于解决冲突请求的单个点并降低了转变成使所有其它副本无效的一种状态的可能。使用处于F状态下的副本以提供冗余的副本,使得更易于禁止在这期间副本的激增。
图3a至3c是利用转发状态在对等节点之间进行的数据传送的概念上的例图。图3a举例说明了对早先请求的数据和目前在F状态下存储于对等节点230中的数据进行请求的对等节点210(例如,正如在上面图2a和2b中举例说明的那样)。为了请求所述数据,对等节点210向系统的其它节点广播PRL消息(对等节点210还可以将PRL消息传输到节点的子集)。对等节点220以IACK消息响应,以表明对等节点220不具有被请求数据的有效副本。对等节点230以DataF消息响应,来向对等节点210提供数据副本并指示对等节点210应该在F状态下存储该数据。在另一个实施例中,将对等节点230所存储的被请求数据的副本置于S状态下。
图3b举例说明了响应于从对等节点230那里接收被请求数据的副本的、来自于对等节点210的消息。当对等节点210从对等节点220和230那里接收到所有的响应时,该对等节点210就向本地节点240发送CNCL()消息,该CNCL()消息使本地节点240响应于来自对等节点210的PRL消息,暂停已开始的取出操作,并且相对于该PRL消息指示不存在已知冲突。然后,所述本地节点240向节点210发送ACK消息。
图3c举例说明了来自本地节点240的、结束从对等节点230到对等节点220的数据传送的最终消息。在一个实施例中,一旦对等节点210接收到该ACK消息,该对等节点210就向对等节点230发送DACK消息以表明对等节点210已经从对等节点230那里接收到了被请求的数据。在可替换的实施例中,本地节点240能够向对等节点230发送DACK消息而不是让对等节点210向节点230发送该DACK消息。在可替换的实施例中,来自对等节点210的CNCL()消息包含指示对等节点210从对等节点230接收数据的信息以便本地节点240能够追踪到哪个对等节点应该接收该DACK消息。
虽然图2a和2b以及图3a至3c的示例是相对于四节点系统加以描述的,但是在这里描述的技术可应用到任何大小的多节点系统。图2a和2b以及图3a至3c的节点是用来表示能够存储数据和请求数据副本的任何类型的组件。例如,节点可能是多处理机计算机系统中的高速缓冲存储器,或者节点可能是网络中的计算机系统,或者节点可能是更复杂的系统内的一个或多个处理器和/或高速缓冲存储器的群组。
处理流程的一个实施例
图4是与用于利用转发状态来提供数据副本的技术的一个实施例相对应的流程图。在一个实施例中,当节点请求数据时,发请求的节点向系统的所有其它节点广播对数据的请求(例如,PRIL消息)(410)。在可替换的实施例中,可以将所述请求传输到系统内的节点的子集,或经由网络连接传输到其它节点。
从系统中的其它节点那里接收响应消息(415)。正如上面所论述的那样,所述响应消息可能采取几种形式。发请求的节点将从不具备被请求数据的有效副本的系统中的节点那里接收一个或多个xACK(例如,IACK、SACK)消息。发请求的节点还将从具有处于F状态下的被请求数据的副本的本地节点或对等节点那里接收DATAx(例如,DataF、DataM)消息。
如果已经接收到所有的响应(420),则发请求的节点就随已标识的冲突列表一起向本地节点发送READ消息或CANCEL消息(425)。如果ACK消息是接收自本地节点的(430),那么就在DATA消息所表示的状态下存储数据。如果XFER消息是接收自本地节点而非ACK消息的话(440),那么发请求的节点就处理来自于本地节点的XFER消息。
响应于XFER消息,发请求的节点向XFER消息所表示的节点发送DATA消息(445)。如果XFER消息表明所述数据应被无效(450),那么发请求的节点就使所保留的数据的副本无效(455)。如果XFER消息没有令发请求的节点使数据的副本无效(450),那么发请求的节点就在S状态下存储所述数据(460)。
节点的示例实施例
图5是节点的一个实施例的框图。节点500是以单个处理器、高速缓冲存储器、存储器控制器和存储器来举例说明的;然而,任何组件中的许多组件都能够被包含在节点当中。此外,还可以将附加的和/或不同的组件(例如,总线桥)包含在节点中。
处理器510可以是本领域中所公知的任何类型的处理器。在一个实施例中,处理器510包含高速缓冲存储器520。在可替换的实施例中,高速缓冲存储器520是位于处理器510之外的,并且/或者可以在处理器510之内或之外包含附加的高速缓冲存储器。
存储器控制器530与高速缓冲存储器520和存储器540相耦合。存储器控制器530作为处理器510、高速缓冲存储器520与存储器540之间的接口来进行操作。在一个实施例中,存储器控制器530根据这里所述的高速缓存一致性协议来维护高速缓存一致性。存储器控制器530经由节点链接550与其它节点进行交互。在可替换的实施例中,处理器510与存储器控制器530进行交互以维护如这里所述的高速缓存一致性,并且处理器510经由可替换的节点链接555来与其它节点进行交互。
多处理器系统的示例实施例
图6是多处理器系统的一个实施例。多处理器系统600是用来表示具有多个处理器的系统的范围,例如计算机系统、实时监控系统等等。可替换的多处理器系统可以包括更多的、更少的和/或不同的组件。在某些情形中,可以将这里所述的高速缓存管理技术应用于单个处理器和多处理器系统两者。可以把多处理器系统600配置成作为多节点系统进行操作。
多处理器系统600包括总线系统610或其它通信设备以传递信息。总线系统610可以包括许多总线和相关的互连电路(例如总线桥)。处理器620与总线系统610相耦合以处理信息。处理器620可以包括高速缓冲存储器622(例如零电平(LO)高速缓冲存储器)和高速缓存控制器624。在一个实施例中,处理器620还与高速缓存625相耦合,所述高速缓存625可以是任何类型的高速缓冲存储器。在可替换的实施例中,高速缓存625可以与总线系统610相耦合。还可以使用其它类型的处理器高速缓存配置。
在一个实施例中,高速缓存控制器624经由高速缓冲存储器接口628与高速缓冲存储器622相耦合,所述高速缓冲存储器接口628例如可以是到处理器620内部的总线。高速缓存控制器经由高速缓存接口626与高速缓冲存储器625相耦合,所述高速缓存接口626提供了处理器620和外部高速缓冲存储器之间的接口。
多处理器系统600还包括具有高速缓冲存储器632和高速缓存控制器634的处理器630。高速缓存控制器634经由高速缓存接口638与高速缓冲存储器632相耦合。同样,高速缓存控制器634经由高速缓存接口636与高速缓冲存储器635相耦合。在一个实施例中,高速缓冲存储器635与处理器630相耦合。
虽然多处理器系统600是以两个处理器来举例说明的,但是多处理器系统600能够包括许多处理器和/或协处理器。多处理器系统600还包括与总线系统610相耦合的存储系统640。在适当的情况下,存储系统640能够包括动态(例如,随机存取存储器)和静态(例如,只读存储器、CD-ROM、盘式存储器、快闪存储器)存储装置与相关的驱动器的任何组合。使用存储系统640的存储装置来存储将由多处理器系统600的处理器执行的信息和指令。还可以在由处理器执行指令期间使用存储系统640来存储临时变量或其它中间信息。
可以经由有线或无线的远程连接等等、从静态或远程存储装置那里向存储系统640提供指令,所述存储装置比如像磁盘、只读存储器(ROM)集成电路、CD-ROM、DVD。在可替换的实施例中,可以代替软件指令或与软件指令相结合地使用硬件实现的电路。因此,指令序列的执行不限于任何特定的硬件电路和软件指令的组合。
多处理器系统600还包括用于提供对诸如局域网和/或因特网之类的网络的访问的网络接口650。网络接口650能够提供无线和/或有线的网络接口,所述网络接口能够包括向和/或来自远程电子可访问介质的指令的通信。电子可访问介质包括以电子装置(例如,计算机、个人数字助理、蜂窝式电话)可读的形式提供(即,存储和/或传输)内容(例如,计算机可执行指令)的任何机构。
例如,机器可访问介质包括:只读存储器(ROM);随机存取存储器(RAM);磁盘存储介质;光存储介质;快闪存储装置;电学、光学、声学或其它形式的传播信号(例如,载波、红外信号、数字信号)。
多处理器系统600还可以包括用于显示信息的显示装置660,比如阴极射线管(CRT)或液晶显示器(LCD)。输入装置670例如包括具有字母数字键及其它键的键盘,该输入装置670被典型地耦合到总线610以向处理器620和/或630传递信息和命令选择。另一种类型的用户输入装置是用于向处理器620和630传递方向信息和命令选择并用于控制显示装置660上的光标移动的光标控制装置(比如鼠标、跟踪球或光标方向键)。
结论
在说明书中对″一个实施例″或″实施例″的引用意指结合实施例所描述的特定的特征、结构或特性是包含在本发明的至少一个实施例当中的。短语″在一个实施例中″在说明书中的不同地方的出现未必都是指同一个实施例。
在上述说明书中,已经参照本发明的特定实施例描述了本发明。然而,显然在不背离本发明的更宽泛的精神和范围的情况下能够对本发明作出各种不同的修改和变化。所以,应该把说明书和附图视作为说明性的而非限制性的。可以将F状态用在基于总线的多处理器系统中。

Claims (4)

1.一种状态转发方法,其包括:
在具有多个高速缓冲存储器的系统当中的一个或多个高速缓冲存储器中存储数据块;
将单个高速缓存的数据块的副本指定为将用于对数据块的副本的广播请求作出响应的副本;以及
通过用存储所指定的数据块副本的高速缓冲存储器来提供数据块的副本以对数据块的广播请求作出响应,
所述方法进一步包括用发请求的高速缓冲存储器存储作为响应而提供的所述数据块的副本,其中将由发请求的高速缓冲存储器所存储的数据块的副本指定为将用来响应将来的数据块副本的请求的单个高速缓存副本。
2.如权利要求1所述的方法,其中相对于接收高速缓冲存储器中的高速缓存操作异步地广播所述请求。
3.如权利要求1所述的方法,其中数据块包括超高速缓冲存储器线。
4.如权利要求1所述的方法,其中通过用存储所指定的数据块副本的高速缓冲存储器来提供数据块的副本以对数据块的请求作出响应包括:
接收数据块的请求;
确定数据块的副本是否被存储在本地高速缓冲存储器中;
如果数据块的副本被存储在本地高速缓冲存储器中,则确定所存储的数据块是否是所指定的数据块的副本;以及
如果所存储的数据块是所指定的数据块的副本,则将数据块的副本传输给发请求的高速缓冲存储器。
CN2003801065906A 2002-12-19 2003-12-03 状态转发方法 Expired - Fee Related CN1729458B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/325,069 2002-12-19
US10/325,069 US6922756B2 (en) 2002-12-19 2002-12-19 Forward state for use in cache coherency in a multiprocessor system
PCT/US2003/038347 WO2004061678A2 (en) 2002-12-19 2003-12-03 Forward state for use in cache coherency in a multiprocessor system

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN2007101483019A Division CN101127009B (zh) 2002-12-19 2003-12-03 供多处理器系统中的高速缓存一致性中使用的转发状态

Publications (2)

Publication Number Publication Date
CN1729458A CN1729458A (zh) 2006-02-01
CN1729458B true CN1729458B (zh) 2012-02-22

Family

ID=32593643

Family Applications (2)

Application Number Title Priority Date Filing Date
CN2007101483019A Expired - Fee Related CN101127009B (zh) 2002-12-19 2003-12-03 供多处理器系统中的高速缓存一致性中使用的转发状态
CN2003801065906A Expired - Fee Related CN1729458B (zh) 2002-12-19 2003-12-03 状态转发方法

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN2007101483019A Expired - Fee Related CN101127009B (zh) 2002-12-19 2003-12-03 供多处理器系统中的高速缓存一致性中使用的转发状态

Country Status (7)

Country Link
US (1) US6922756B2 (zh)
EP (1) EP1573556A2 (zh)
JP (3) JP2006510119A (zh)
KR (1) KR100634932B1 (zh)
CN (2) CN101127009B (zh)
AU (1) AU2003294560A1 (zh)
WO (1) WO2004061678A2 (zh)

Families Citing this family (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8185602B2 (en) 2002-11-05 2012-05-22 Newisys, Inc. Transaction processing using multiple protocol engines in systems having multiple multi-processor clusters
US8145847B2 (en) * 2004-01-20 2012-03-27 Hewlett-Packard Development Company, L.P. Cache coherency protocol with ordering points
US8468308B2 (en) * 2004-01-20 2013-06-18 Hewlett-Packard Development Company, L.P. System and method for non-migratory requests in a cache coherency protocol
US7620696B2 (en) * 2004-01-20 2009-11-17 Hewlett-Packard Development Company, L.P. System and method for conflict responses in a cache coherency protocol
US20050160238A1 (en) * 2004-01-20 2005-07-21 Steely Simon C.Jr. System and method for conflict responses in a cache coherency protocol with ordering point migration
US7395374B2 (en) * 2004-01-20 2008-07-01 Hewlett-Packard Company, L.P. System and method for conflict responses in a cache coherency protocol with ordering point migration
US7818391B2 (en) 2004-01-20 2010-10-19 Hewlett-Packard Development Company, L.P. System and method to facilitate ordering point migration
US8090914B2 (en) * 2004-01-20 2012-01-03 Hewlett-Packard Development Company, L.P. System and method for creating ordering points
US7769959B2 (en) 2004-01-20 2010-08-03 Hewlett-Packard Development Company, L.P. System and method to facilitate ordering point migration to memory
US8176259B2 (en) * 2004-01-20 2012-05-08 Hewlett-Packard Development Company, L.P. System and method for resolving transactions in a cache coherency protocol
US7822929B2 (en) * 2004-04-27 2010-10-26 Intel Corporation Two-hop cache coherency protocol
US20060143384A1 (en) * 2004-12-27 2006-06-29 Hughes Christopher J System and method for non-uniform cache in a multi-core processor
US7788240B2 (en) * 2004-12-29 2010-08-31 Sap Ag Hash mapping with secondary table having linear probing
US7437518B2 (en) * 2005-09-07 2008-10-14 Intel Corporation Hiding conflict, coherence completion and transaction ID elements of a coherence protocol
US7620694B2 (en) * 2005-09-27 2009-11-17 Intel Corporation Early issue of transaction ID
US20070073979A1 (en) * 2005-09-29 2007-03-29 Benjamin Tsien Snoop processing for multi-processor computing system
US20070150664A1 (en) * 2005-12-28 2007-06-28 Chris Dombrowski System and method for default data forwarding coherent caching agent
US7543115B1 (en) 2006-01-11 2009-06-02 Intel Corporation Two-hop source snoop based cache coherence protocol
US7512741B1 (en) * 2006-01-11 2009-03-31 Intel Corporation Two-hop source snoop based messaging protocol
JP5168800B2 (ja) * 2006-03-08 2013-03-27 富士通株式会社 マルチプロセッサシステム
US7536515B2 (en) * 2006-06-30 2009-05-19 Intel Corporation Repeated conflict acknowledgements in a cache coherency protocol
US7506108B2 (en) * 2006-06-30 2009-03-17 Intel Corporation Requester-generated forward for late conflicts in a cache coherency protocol
US7721050B2 (en) * 2006-06-30 2010-05-18 Intel Corporation Re-snoop for conflict resolution in a cache coherency protocol
US7774551B2 (en) * 2006-10-06 2010-08-10 Hewlett-Packard Development Company, L.P. Hierarchical cache coherence directory structure
US8495272B2 (en) * 2006-11-29 2013-07-23 International Business Machines Corporation Method to save bus switching power and reduce noise in an engineered bus
US8131940B2 (en) * 2007-03-31 2012-03-06 Intel Corporation Methods and apparatuses to support memory transactions using partial physical addresses
FR2927437B1 (fr) 2008-02-07 2013-08-23 Bull Sas Systeme informatique multiprocesseur
WO2009130671A1 (en) * 2008-04-22 2009-10-29 Nxp B.V.Accomp. Pdoc Multiprocessing circuit with cache circuits that allow writing to not previously loaded cache lines
US8423721B2 (en) * 2008-04-30 2013-04-16 Freescale Semiconductor, Inc. Cache coherency protocol in a data processing system
US8706974B2 (en) * 2008-04-30 2014-04-22 Freescale Semiconductor, Inc. Snoop request management in a data processing system
US8762652B2 (en) * 2008-04-30 2014-06-24 Freescale Semiconductor, Inc. Cache coherency protocol in a data processing system
US8190820B2 (en) * 2008-06-13 2012-05-29 Intel Corporation Optimizing concurrent accesses in a directory-based coherency protocol
US8111615B2 (en) 2008-07-07 2012-02-07 Intel Corporation Dynamic update of route table
US8205045B2 (en) * 2008-07-07 2012-06-19 Intel Corporation Satisfying memory ordering requirements between partial writes and non-snoop accesses
US8250311B2 (en) 2008-07-07 2012-08-21 Intel Corporation Satisfying memory ordering requirements between partial reads and non-snoop accesses
US9189424B2 (en) * 2011-05-31 2015-11-17 Hewlett-Packard Development Company, L.P. External cache operation based on clean castout messages
WO2013103347A1 (en) * 2012-01-06 2013-07-11 Intel Corporation Improving value of forward state by increasing local caching agent forwarding
US9235519B2 (en) 2012-07-30 2016-01-12 Futurewei Technologies, Inc. Method for peer to peer cache forwarding
CN102902631B (zh) * 2012-09-18 2015-04-15 杭州中天微系统有限公司 一种避免读缺失时数据回写的多处理器核间传输方法
CN104380269B (zh) * 2012-10-22 2018-01-30 英特尔公司 高性能互连相干协议
US10268583B2 (en) 2012-10-22 2019-04-23 Intel Corporation High performance interconnect coherence protocol resolving conflict based on home transaction identifier different from requester transaction identifier
CN103294612B (zh) * 2013-03-22 2014-08-13 浪潮电子信息产业股份有限公司 在多级缓存一致性域系统局部域构造Share-F状态的方法
CN104714901B (zh) * 2015-03-13 2018-07-03 浪潮集团有限公司 一种基于计数器的粗结构目录设计方法
CN104991868B (zh) * 2015-06-09 2018-02-02 浪潮(北京)电子信息产业有限公司 一种多核处理器系统和缓存一致性处理方法
CN105446840B (zh) * 2015-11-24 2019-02-12 无锡江南计算技术研究所 一种Cache一致性极限测试方法
US10795817B2 (en) * 2018-11-16 2020-10-06 Western Digital Technologies, Inc. Cache coherence for file system interfaces
US11544193B2 (en) 2020-09-11 2023-01-03 Apple Inc. Scalable cache coherency protocol

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1171159A (zh) * 1994-12-23 1998-01-21 英特尔公司 具有减少功率操作特性的高速缓存一致性多道处理计算机系统
US5787478A (en) * 1997-03-05 1998-07-28 International Business Machines Corporation Method and system for implementing a cache coherency mechanism for utilization within a non-inclusive cache memory hierarchy

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5297269A (en) * 1990-04-26 1994-03-22 Digital Equipment Company Cache coherency protocol for multi processor computer system
JP2746530B2 (ja) * 1993-01-30 1998-05-06 洲 植 全 共有メモリマルチプロセッサ
JP3183993B2 (ja) * 1993-03-31 2001-07-09 株式会社東芝 ディスク制御システム
US5940856A (en) * 1997-04-14 1999-08-17 International Business Machines Corporation Cache intervention from only one of many cache lines sharing an unmodified value
US5946709A (en) * 1997-04-14 1999-08-31 International Business Machines Corporation Shared intervention protocol for SMP bus using caches, snooping, tags and prioritizing
US6189043B1 (en) * 1997-06-09 2001-02-13 At&T Corp Dynamic cache replication in a internet environment through routers and servers utilizing a reverse tree generation
US6370621B1 (en) * 1998-12-21 2002-04-09 Advanced Micro Devices, Inc. Memory cancel response optionally cancelling memory controller's providing of data in response to a read operation
US6275905B1 (en) * 1998-12-21 2001-08-14 Advanced Micro Devices, Inc. Messaging scheme to maintain cache coherency and conserve system memory bandwidth during a memory read operation in a multiprocessing computer system
US6263409B1 (en) * 1998-12-22 2001-07-17 Unisys Corporation Data processing system and method for substituting one type of request for another for increased performance when processing back-to-back requests of certain types
JP4363539B2 (ja) * 1999-06-04 2009-11-11 諏訪熱工業株式会社 ボールペン用ボール
US6795900B1 (en) * 2000-07-20 2004-09-21 Silicon Graphics, Inc. Method and system for storing data at input/output (I/O) interfaces for a multiprocessor system
US6826619B1 (en) * 2000-08-21 2004-11-30 Intel Corporation Method and apparatus for preventing starvation in a multi-node architecture
US7124252B1 (en) * 2000-08-21 2006-10-17 Intel Corporation Method and apparatus for pipelining ordered input/output transactions to coherent memory in a distributed memory, cache coherent, multi-processor system
US6571322B2 (en) * 2000-12-28 2003-05-27 International Business Machines Corporation Multiprocessor computer system with sectored cache line mechanism for cache intervention
US6615319B2 (en) * 2000-12-29 2003-09-02 Intel Corporation Distributed mechanism for resolving cache coherence conflicts in a multi-node computer architecture

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1171159A (zh) * 1994-12-23 1998-01-21 英特尔公司 具有减少功率操作特性的高速缓存一致性多道处理计算机系统
US5787478A (en) * 1997-03-05 1998-07-28 International Business Machines Corporation Method and system for implementing a cache coherency mechanism for utilization within a non-inclusive cache memory hierarchy

Also Published As

Publication number Publication date
WO2004061678A2 (en) 2004-07-22
JP2009064471A (ja) 2009-03-26
US20040123046A1 (en) 2004-06-24
CN101127009A (zh) 2008-02-20
WO2004061678A3 (en) 2005-02-03
CN1729458A (zh) 2006-02-01
US6922756B2 (en) 2005-07-26
AU2003294560A1 (en) 2004-07-29
JP2013058225A (ja) 2013-03-28
KR100634932B1 (ko) 2006-10-18
JP2006510119A (ja) 2006-03-23
KR20050085848A (ko) 2005-08-29
EP1573556A2 (en) 2005-09-14
CN101127009B (zh) 2012-01-11

Similar Documents

Publication Publication Date Title
CN1729458B (zh) 状态转发方法
JP4261487B2 (ja) キャッシュ・コヒーレンス・プロトコルに対する投機的分散競合解決
US7434006B2 (en) Non-speculative distributed conflict resolution for a cache coherency protocol
JP3644587B2 (ja) 共用介入サポートを有する不均等メモリ・アクセス(numa)・データ処理システム
US7360033B2 (en) Hierarchical virtual model of a cache hierarchy in a multiprocessor system
US7814279B2 (en) Low-cost cache coherency for accelerators
US8205045B2 (en) Satisfying memory ordering requirements between partial writes and non-snoop accesses
JP4789926B2 (ja) 効率的な2つのホップ・キャッシュ・コヒーレンシ・プロトコル
US6859864B2 (en) Mechanism for initiating an implicit write-back in response to a read or snoop of a modified cache line
JP2000227908A (ja) 共用介入サポ―トを有する不均等メモリ・アクセス(numa)デ―タ処理システム
US20080005482A1 (en) Requester-generated forward the late conflicts in a cache coherency protocol
US20050262250A1 (en) Messaging protocol

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20120222

Termination date: 20171203

CF01 Termination of patent right due to non-payment of annual fee