CN1932791A - 用于数据处理的方法和设备 - Google Patents

用于数据处理的方法和设备 Download PDF

Info

Publication number
CN1932791A
CN1932791A CNA2006100917726A CN200610091772A CN1932791A CN 1932791 A CN1932791 A CN 1932791A CN A2006100917726 A CNA2006100917726 A CN A2006100917726A CN 200610091772 A CN200610091772 A CN 200610091772A CN 1932791 A CN1932791 A CN 1932791A
Authority
CN
China
Prior art keywords
request
data
communication interface
return data
interface
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.)
Granted
Application number
CNA2006100917726A
Other languages
English (en)
Other versions
CN100452015C (zh
Inventor
布赖恩·T·范德普尔
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN1932791A publication Critical patent/CN1932791A/zh
Application granted granted Critical
Publication of CN100452015C publication Critical patent/CN100452015C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

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
    • 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/0828Cache consistency protocols using directory methods with concurrent directory accessing, i.e. handling multiple concurrent coherency transactions

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

在从耦合到第二通信接口的多个源中的任意一个接收到应答之前,使用早期返回指示来通知第一通信接口当从返回数据的源接收到返回数据时可以由第一通信接口使用返回数据。通过这样做,第一通信接口通常可以准备通过其相关通信链路转发返回数据,以使得一旦从数据源获取数据,就可以在很短的延迟或没有延迟的情况下转发数据,并且在从其它源接收到所有应答之前,能够开始通信链路上的数据返回。由于第一通信接口不再被要求在通过通信链路转发返回数据之前等待相干目录更新的完成,所以早期返回指示还用作早相干指示。

Description

用于数据处理的方法和设备
技术领域
本发明涉及计算机和数据处理系统,本发明具体涉及在合并有共享存储器架构的数据处理系统中传送数据。
背景技术
由于在当今社会中越来越依赖于计算机,因此不得不在许多方面(front)推进计算机技术来跟上日益增长的需要。重要的研究和开发努力中的一个具体主题是并行性,即并行执行多个任务。
开发了大量计算机软件和硬件技术来促进日益增加的并行处理。从硬件观点来看,计算机日益依赖于多处理器来提供增加的工作负载容量。此外,已经开发了一些处理器来支持并行执行多线程的能力,从而有效地提供许多与通过使用多处理器获得的性能增益相同的性能增益。
然而,多处理器计算机中可能产生与每个处理器的数据传送相关的显著瓶颈,这通常称为通信成本。许多计算机依赖于用作计算机的主要工作存储器的主存储器。然而,通常要求以比处理器内部传送数据的速率低得多的速率来执行从主存储器获得数据以及将数据存储在主存储器中的操作。通常,当处理器使用数据时,使用被称为高速缓存的中间缓存器来临时存储来自主存储器的数据。这些高速缓存通常尺寸较小,但是速度明显比主存储器快。高速缓存通常有效利用数据的时间和空间的本地性,结果,通常显著减少计算机中发生的相对较慢的主存储器存取次数,并且降低计算机经历的整体通信成本。
通常,计算机中所有的处理器共享相同的主存储器,该架构通常称为对称多处理(SMP)。然而,由于在公共总线或内部互连上产生处理器和主存储器之间的所有通信的典型需求,所以在这种计算机上产生一种限制。随着计算机中的处理器的数量增加,与主存储器的通信业务量成为系统性能的瓶颈,而与中间高速缓存的使用无关。
为解决该潜在的瓶颈,大量的计算机设计依赖于另一种称为非统一存储器存取(NUMA)的共享存储器架构,借此,多个主存储器基本上遍布在计算机中,并且与处理器和高速缓存组物理上分组为物理子系统或模块(这里也称为“节点”)。在NUMA计算机的每个节点中的处理器、高速缓存和存储器通常安装在同一电路板或卡上,从而提供节点“本地”的所有部件之间的相对高速的交互。通常,包含一个或多个集成电路芯片的“芯片组”用于管理存储器架构中的各种部件和处理器之间的数据通信。在网络(诸如系统总线或点对点互连集合)上节点还彼此耦合,由此,允许一个节点中的处理器存取存储在另一节点中的数据,由此,有效地扩展计算机的整体能力。然而,由于存储在本地存储器(即,位于与处理器相同的节点的存储器)中的数据的存取时间通常远小于存储在远程存储器(即,位于另一节点的存储器)中的数据的存取时间,因此,存储器存取称为“非统一”。
然而,无论所使用的架构类型如何,存储器存取的延迟通常是计算机的整体性能的重要因素。结果,进行了大量努力来获得任何给定存储器请求的可能的最小存储器延迟。
在处理器经由中间芯片组耦合到存储器系统的计算机中,通常必须经由将请求处理器与芯片组互连的处理器总线将读取或加载请求转发(forward)到芯片组,然后芯片组确定所请求的数据当前是否位于例如主存储器、共享高速缓存、另一处理器的本地高速缓存中,或者在NUMA系统的情况下,是否位于不同节点的存储器或高速缓存中。通过执行相干目录的查找来进行该确定,这可以集中进行,或者在一些设计中,可以遍布到架构中的多个点。此外,可以在完成请求后根据所请求的数据将位于请求处理器中的事实来进行对相干目录的更新。
根据请求的数据的位置,芯片组然后初始化所请求的数据的获取操作,并且一旦返回数据,数据通常存储在芯片组的缓存器中。然后,芯片组中的通信接口(如通过处理器总线耦合到请求处理器的处理器总线接口)将通过从中央缓存器获取数据并通过处理器总线将返回数据驱动到请求处理器来使用返回数据。通常,从请求处理器通过处理器总线转发请求的时间开始一直到返回数据通过处理器总线返回到请求处理器为止来测量请求的延迟。
常规设计中可以影响存储器请求的延迟的一个操作与更新相干目录相关。具体讲,在许多设计中,直到更新相干目录来反映相关数据的新状态之后为止,从存储器或其它源返回的、并临时存储在芯片组缓存器中的数据不通过处理器总线接口转发到请求处理器。这通常是因为需要在将数据返回到请求处理器之前验证不需要取消存储器请求。因此,在许多这样的设计中,在从相干目录接收到用于指示该数据将要转发到请求处理器的确认之前,正在返回的数据在芯片组缓存器中等待。
在诸如基于NUMA的系统之类的多节点系统中,对于通过由节点之间的通信链路发送另一个节点请求的数据来说也具有类似的问题。例如,某些常规的设计在芯片组中使用可伸缩(scalability)端口接口来在节点对之间提供高速点对点互连。从节点中的芯片组来看,对通过可伸缩端口接收的存储器请求的处理与对来自本地处理器的存储器请求的处理方式非常相似(主要区别是在可伸缩端口上使用的通信协议通常是基于分组的),并且在经由可伸缩端口发送到另一节点之前要求将该数据格式化为信息的特定分组。从执行相干目录的查找来识别请求的数据的源、更新相干目录、从源检索所请求的数据、在缓存器中存储返回数据和等待来自相干目录的确认来看,在源于本地处理器的存储器请求和源于远程节点的存储器请求之间存在很少的差异。
通过要求多节点系统中的另一节点或处理器请求的数据在缓存器中等待,可以产生额外的数周期的延迟。此外,由于大多数存储器系统的管线特性,该要求通常要求更大的缓存器来使得多个请求的数据保留在芯片组中同时等待来自相干目录的确认。更大的缓存器通常导致给定设计的成本和复杂度增加,因此,只要可以,通常希望尽可能地降低芯片组中所要求的缓存量。
只要一个节点中的处理器请求的数据通过可伸缩端口由另一节点获取(sourced by another node),则基于NUMA的系统还可能经受与处理来自其它节点的应答相关的额外延迟。更具体地说,虽然通常不知道哪个特定节点将获取该数据,但是在许多设计中节点上的相干目录将能够确定所请求的数据将由另一个节点获取。结果,许多这样的系统使用广播协议来向系统中的所有其它节点转发请求。然后,一旦每个节点接收请求,节点就确定该节点是否应该返回所请求的数据。如果是这样,节点在应答中返回数据以及数据的状态的指示,其指示例如节点是否具有数据的共享或排斥副本。如果不是这样,节点仍然发送非数据应答来确认该节点接收了请求,该应答还可以指示节点不具有数据的有效副本。广播请求的节点在更新相干目录并允许返回数据转发到节点上的所请求的处理器之前,通常等待来接收来自所有节点的应答。
在某些设计中,可以使用目录协议来替代广播协议。利用目录协议,请求被发送到系统中的中央目录,该系统在当前节点中查找所请求的数据并向该节点发送请求。然后,接收请求的节点将所请求的数据转发回原始请求节点,并且(如果合适的话)以通知中央目录来指示将数据的所有权传递给请求节点。
虽然目录协议通常更加适合缩放,但是由于性能原因通常优选广播协议,在小型系统中尤其如此。然而,许多广播协议的一个缺点导致在允许节点上的处理器使用从系统中的另一节点接收的返回数据之前,需要等待该请求所有的应答。更具体讲,在某些情形中,在已经从其它节点接收到应答之前,可能从一个节点返回包含在应答中的所请求的数据。结果,甚至已经从另一节点接收到所请求的数据,但是在从其它节点接收到所有应答而且数据转发到请求处理器之前,可能经过多个周期。因此,由节点已经接收的返回数据可能需要存储在缓存器中并被保持多个周期。因此,存在降低共享存储器数据处理系统中的存储器请求的延迟的迫切需要。
发明内容
本发明通过在从耦合到第二通信接口的多个源中的任意一个或多个接收到应答之前,使用早(early)返回指示来通知第一通信接口当从返回数据的源接收到返回数据时可以由第一通信接口使用返回数据,从而解决了与现有技术相关的这些和其它问题。通过这样做,第一通信接口通常可以准备通过其相关通信链路转发返回数据,以使得一旦从数据源获取数据,就可以在很短的延迟或没有延迟的情况下转发数据,并且在从其它源接收到所有应答之前,能够开始通信链路上的数据返回。此外,在许多实施例中,由于第一通信接口不再被要求在通过通信链路转发返回数据之前等待相干目录更新的完成,所以早期返回指示还用作早相干指示。
在与本发明一致的某些实施例中,与多节点数据处理系统中的另一个节点返回的数据相关地使用早期返回指示,并且其中,已经请求了数据的节点正在执行不试图修改所请求的数据的读取请求(如可伸缩网络中的总线读取线(BRL)请求)。在这种情形下,众所周知,只要由另一节点返回数据,则在从系统的其它节点接收所有应答之前,在接收节点中使用该数据就是安全的。
因此,与本发明一致,在下述类型的数据处理系统中处理用于数据的请求,该数据处理系统包括第一通信接口,配置来通过第一通信链路耦合到至少一个请求者;和第二通信接口,配置来通过第二通信链路耦合到多个源。响应于请求者的请求,通过第二通信接口将该请求转发到多个源,并且跟踪(track)来自多个源的每一个中的请求的应答。此外,在从多个源中的任意一个或多个接收到应答之前,向第一通信接口做出指示:当通过第二通信接口从返回数据的源接收返回数据时,可以由第一通信接口使用响应于请求从源之一中接收的返回数据。
在所附权利要求中阐明了特征化本发明的这些和其它优点和特征。然而,为了通过其使用更好地理解本发明及其优点和目的,将参照附图及其相伴的说明书,在该说明书中描述了本发明的示例性实施例。
附图说明
图1是图解在实现共享存储器的多节点数据处理系统中的常规存储器事务(transaction)中的各个步骤的相对定时的功能定时图。
图2是图解在实现共享存储器并以与本发明一致的方式使用早期返回指示的多节点数据处理系统中的读取存储器事务的各个步骤的相对定时的功能定时图。
图3是图解在实现共享存储器并以与本发明一致的方式使用早期返回指示的多节点数据处理系统中读排斥(read exclusive)存储器事务的各个步骤的相对定时的功能定时图,其中,由读排斥存储器事务所请求的数据处于排斥状态。
图4是图解在实现共享存储器并以与本发明一致的方式使用早期返回指示的多节点数据处理系统中的读排斥存储器事务的各个步骤的相对定时的功能定时图,其中,由读排斥存储器事务所请求的数据处于共享状态。
图5是适用于以与本发明一致的方式使用早相干指示的多节点计算机系统的方框图。
图6是图解图5的芯片组中的相干单元,可伸缩端口接口,存储器接口和处理器总线接口之间的互连的方框图。
图7A-7B是图解图5的芯片组中的处理器请求的处理的流程图。
图8是准备发送图7A中参考的方框的示例性实现的方框图。
具体实施方式
下面讨论和说明的实施例使用早期返回指示来使一个通信接口能预测通过另一通信接口从源返回的数据,并且根据该预测,通过例如策划并执行任意的总线仲裁/信令、准备数据应答分组等等,为返回数据的传送作准备。然后,一旦通过其它接口从数据源返回数据,则通信接口可以以最短的延迟并以最少的缓存量直接向请求数据的实体传送数据。
只要确定将由经由第二通信接口存取的多个源中的一个源返回返回数据,并且一旦那个源返回了数据就可以由第一通信接口安全使用数据,与本发明一致的实施例就特别地加快通过第一通信接口向发出该数据请求的请求者返回数据的操作。与本发明一致的实施例额外合并相干协议,借此,通过第二通信接口将来自请求者的请求转发到多个源,然后跟踪来自那些源的应答来确定所有源已经接收了请求。每个源在本地更新它自身的相干信息来确保所请求的数据在整个系统中是相干的。一个或多个源还响应于请求(例如作为应答的一部分)来提供返回数据,并且在从所有源接收到应答之前可以验证返回数据的使用是很安全的特定情形下,在接收到所有应答之前,返回数据被提供到第一通信接口,以便于转发到请求者,因此具有降低的延迟和减少的缓存需求。
与本发明一致实施例通常通过许多相关的机制来降低延迟和缓存需求。首先,在合适的情形下,从处理存储器请求的关键路径中除去对存储器请求的应答集(collection),以使得可以在接收到所有应答之前有可能使用与应答之一相关地返回的数据。同样,在接收了请求的数据之后由跟踪和/或收集应答引起的任何延迟通常将不影响存储器请求的延迟。
第二,这里称为早期返回指示的早期指示被提供到第一通信接口,用于指示只要由通信接口通过第二通信接口从返回数据的源接收数据,就可以由第一通信接口使用数据并通过其相关通信链路转发返回数据。虽然可以在向源转发请求之前、之后或同时提供指示,但是通常在从任意源接收应答之前提供该指示。此外,该指示可以指示数据将在预定时间到达,例如在固定数量的周期之后到达。通过这样做,这允许第一通信接口在第一通信接口实际可用该数据之前开始仲裁总线并排列(line up)数据返回阶段,和/或准备数据应答分组,否则开始格式化数据以便于通过通信链路进行通信。
只要可以确定可以安全地使用返回数据,就声明早期返回指示,而不需要从所有的源接收应答。例如,在本发明的一个实现中,只要请求属于不具有修改所请求的数据的能力的请求类型(如在加载或读取请求的情况下),就可以确定在接收所有应答之前可以安全地使用返回数据。在这种情况下,即使其它源具有返回数据的副本,由于一旦已经由每个源本地地处理了该请求、则那些其它副本就将处于共享状态,所以使用返回数据通常是安全的。
在本发明的另一个实现中,只要请求属于具有修改所请求的数据的能力的请求类型,例如,在专用于或有意于修改请求的读取和当可以确定返回数据的源保留数据的排斥副本的情况下,就可以确定在接收所有应答之前可以安全地使用返回数据。在许多实施例中,由于在允许请求者具有数据的排斥副本之前需要验证所有其它源已经使它们自身的数据副本无效,所以在接收到所有应答之前,不是所有的读取排斥请求都能被安全地使用。然而,在已经发现了响应于请求而正在提供返回数据的源预先具有数据的排斥副本的情况下,可以确定没有其它源具有数据的副本,因此没有另一源将会尝试使用数据的过期(stale)副本的风险。
正如将在下面更加显而易见的那样,最好可以提供与两种情况的类型相关的早期返回指示。然而,在某些实施例中最好可以省略一种早期返回指示。
还应该理解,在与本发明一致的许多实施例中,相干目录的更新可以被视为与执行相干目录的查找分离的步骤,并且还可以从用于处理存储器请求的关键路径中除去。在这点上,早期返回指示还可以用作早相干指示,用于指示在更新相干目录之前可以使用返回数据。通过这样做,相干目录的更新实际上独立于根据相干目录的查找使通信接口能够通过通信链路传送返回数据的操作。同样,由更新相干目录引起的任何延迟通常不影响存储器请求的延迟。在U.S.Patent Application S/N 11/023706 filed on December 28,2004 byBarrett et al.and entitled“EARLY COHERENCY INDICATION FOR RETURNDATA IN SHARED MEMORY ARCHITECTURE”中提供了该理论的更加详细的论述,该申请通过引用将其合并在此。然而,正如这里论述的那样,应该理解,在某些实施例中不能关于早期返回指示使用早相干指示。此外,可以与处理不同类型的请求(例如经由可伸缩端口接口而源自其它节点的请求、由同一节点的另一处理器或节点的本地存储器获取的处理器请求)相关地使用早相干指示。
与本发明一致的实施例主要集中于向一个通信接口提供早期返回指示,以使该通信接口能够通过不同的通信接口返回的数据作准备。例如,在所说明的实施例中,当由多节点数据处理系统中的不同节点经由可伸缩端口接口获取返回数据时,将早期返回指示提供到处理总线接口来使该接口能够准备在处理器总线上向请求处理器发送返回数据。此外,在所说明的实施例中,只要处理器的本地节点上的相干目录确定不同的节点将获取返回数据,就响应于处理器请求,与在可伸缩网络中的其它节点转发请求相关地产生早期返回指示。
所说明的实施例依赖于这样的广播协议,该协议将请求传播到系统的每个其它节点,并且要求以系统中的每个其它节点返回应答的形式的确认或承认,以确保所有的节点已经以适当的方式(例如以通过在本地更新它们的用于数据的相干信息来保持整个系统的相干性)处理了请求。在其它实施例中,可以使用基于目录的协议或其它相干协议。此外,应该理解的是,通过从处理器向其它节点“转发”请求,转发到其它节点的请求不需要具有与来自处理器的请求相同的格式,并且可能确实需要重新格式化来遵从其它节点或节点所连接的源使用的协议。此外,请求的转发可能导致产生多个请求,如指向系统中的每个其它节点的请求。
通常,依据确保甚至在多个节点共享数据情况下也只有一个节点将响应于请求返回数据的串行化机制,只有一个节点或源响应于请求返回数据。例如,通过定义用于在具有数据的共享副本的节点和具有数据的共享副本而且还是数据的拥有者的节点之间进行区分的额外的高速缓存状态来实现该串行化机制。例如,最好为共享的数据定义四种状态:共享整齐(shared clean)、共享杂乱(shared dirty)、共享串行化整齐(shared serializer clean)和共享串行化杂乱(shared serializer dirty)。根据这些状态,每个节点可以在本地确定它是否应该响应于请求返回数据。然而,应该理解的是,在其它实施例中,由于节点接收负责确保返回数据的合适的副本的多个应答(例如,通过返回所返回的共享数据的第一副本),因此具有共享的数据的副本的每个节点将响应于请求返回数据。
如上所述,本发明考虑向第一通信接口提供指示,用于指示一旦从第二通信接口接收数据,则可以由第一通信接口使用正在通过第二通信接口返回的数据。在所说明的实施例中,例如第一通信接口是多节点数据处理系统中的节点的处理器总线接口,而第二通信接口是诸如从系统中的另一节点接收返回数据的可伸缩端口接口之类的节点间接口。然而,应该理解的是,与本发明一致的任一通信接口实际上可以包括任何用于响应于存储器请求将要被返回数据通信到该存储器请求的期望目的地的任何适当逻辑,它可以是处理器总线接口、节点间接口或本领域公知的任何其它合适的通信接口。
返回数据的源可以包括任何存储器存储或装有(housing)存储器的部件,它能够存储数据,并且响应于存储器请求返回数据。例如,在下面描述的多节点实现中,返回数据的源可以包括特定节点的主存储器存储、该节点中的芯片组中保留或管理的任意高速缓存和位于该节点中的任意处理器(或其本地高速缓存),以及可以一起位于不同节点的这种部件中的任意部件。此外,从正在由另一个节点返回到一个节点的返回数据来看,以及从请求节点来看,源可以只不过是返回数据的节点,而不考虑节点中数据实际源于哪里。
在下面论述的实施例中,倘若早期返回指示用作指示在更新相干目录之前可以使用数据的额外目的,则该指示也称为早相干指示。然而,应该理解的是,在其它实施例中,早期返回指示可能不提供关于相干性的任何这样的指示。此外,例如,当可以确定请求将结束时,从确定是否可以由通信接口使用返回数据来看,早相干指示中的其它因素可能是相关的。例如,在多节点系统中,如果确定正在处理中的另一请求指向相同的地址或高速缓存线(即,与另一请求冲突),则请求不能结束。
还应该理解的是,可以由通信接口使用多个指示符(indicator)来确定何时可以由通信接口使用返回数据。例如,在下面论述的实施例中,分离的相干指示被用于读取和读取排斥请求,并且额外的useSPdata指示用于指示何时可以响应于读取排斥请求使用共享数据。通过实例公开的启发,其它修改对于本领域普通技术人员将是显而易见的。
现在转向附图,其中,相同的附图标记在多个附图中表示相同的部分,图1-4突出了由常规数据处理系统(图1)和实现与本发明一致的早期返回指示的数据处理系统(图2-4)的芯片组中的处理器发出的示例性存储器请求的处理中的区别,其中,假设从多节点数据处理系统中的远程节点执行存储器请求。应该理解的是,图1-4图解的各种操作的定时在本质上是相对的,并且不应该由任一附图中的方框的具体位置暗示特定的定时。还假设请求者是经由处理器总线耦合到芯片组的处理器,并且数据处理系统中的其它节点经由可伸缩端口接口耦合到芯片组。
如图1的方框10所示,由常规芯片组接收作为处理器总线命令发出的处理器请求,从而导致目录查找的开始,以及用于在命令的寿命期间跟踪命令的处理的未决队列(PQ)项的加载。此外,在某些实施例中,该请求可以本质上是投机的(speculative),并且导致向节点上的存储器发出存储器请求。如方框12所示,在某些时间段后,返回冲突检测操作的结果,作为相干目录查找的结果(如方框14所示)。作为该查找的结果,确定所请求的数据的源是另一节点,同样向系统中的其它节点广播可伸缩端口(SCP)请求。
接下来,如方框17所示,某段时间后,接收对SCP请求的所有应答。这些应答之一将是数据应答,它包括处理器请求的数据。其它应答通常是非数据应答或空应答,它们不提供数据,但是提供每个节点接收请求的确认。
然后,如方框18和20所示,更新相干目录,并且如果需要,则将数据写入芯片组中的高速缓存。在常规设计中,一旦更新相干目录,如方框22所示,就做出处理器总线接口的处理器总线数据返回指示,并且在某段时间后,例如在处理器总线接口准备返回数据并仲裁处理器总线后,如方框24所示,处理器总线接口开始通过处理器总线的返回数据的传送。一旦通过处理器总线传送返回数据,如方框26所示,用于该命令的PQ项就可以被退出,并且命令的处理完成。
相反,与本发明一致的实施例在从数据处理系统中的其它节点接收所有应答之前提供早期返回指示给处理器总线接口,用于指示当数据变为有效时可以由通信接口使用返回数据,并且通过其相关通信链路转发返回数据。在所说明的实施例中,由于在更新相干目录之前做出指示,该早期返回指示还用作早相干指示。
例如,图2图解了诸如BRL请求之类的读取请求的处理,其中,发现该返回数据位于远程节点。在该实施例中,如方框28所示,通过提供早相干指示来实现早相干指示(early coherence indication),这发生在已经返回了冲突检测和相干目录的查找的结果之后,但是在方框18’所示的更新相干目录之前,并且在方框20’所示的可选地向芯片组写入之前。众所周知,虽然应该理解,只要在从远程节点接收到任何应答之前做出指示,就可以在广播SCP请求之前或之后交替地做出该指示,但是还与方框16中的向远程节点广播SCP请求同时执行该早相干指示。然后,如方框30所示,从其它节点接收包括具有所请求的数据的SCP应答的应答,直到如方框32所示接收到所有应答为止。应该理解的是,方框30中的数据应答的接收可以以相对于来自其它节点的非数据应答的任何顺序发生。
通过向处理器总线接口提供早期指示,处理器总线接口能够开始仲裁处理器总线,否则准备数据的返回,以使得如方框24’所示,一旦从远程节点返回数据,就可以在更早的时间通过处理器总线返回数据。在许多实例中,甚至可以在从所有节点接收应答(方框32)之前返回数据。
此外,如果相干目录的更新也在用于处理存储器请求的关键路径之外,则如方框18’和20’所示,如果希望,可以延迟目录更新和向芯片组高速缓存的选择性写入。因此,可以看出,与常规设计相比,从当请求初次放入处理器总线起、直到通过处理器总线返回返回数据为止的该请求的整体延迟降低。
接下来,图3和4图解诸如BRIL请求之类的读取排斥请求的处理,该请求为修改数据的目的而请求数据,因此要求请求节点获得所请求的数据的排斥存取,并且在由请求节点使用数据之前使其它节点上的所请求的数据的任何其它副本无效。如上所述,已经发现当发现返回数据在另一节点处于排斥状态时,只要从该其它节点接收到返回数据就可以使用返回数据,并且不要求所有其它节点向请求节点返回应答。这是因为作为处理远程节点中的请求的组成部分,远程节点使其返回数据的副本无效,所以数据应答充当在系统中没有其它节点具有返回数据的有效副本的确认。
同样,如图3所示,在方框10’发出读取排斥请求,它导致开始目录查找,以及为该请求加载PQ项。以与前面的图中的方框12和14中描述的方式相同的方式发生冲突检测和目录结果的返回。此外,在该实例中目录结果指示该请求将由另一个节点获取,并且同样如方框16所示广播SCP请求。然后,在接收广播SCP请求的任何应答之前,在方框34提供指示,该指示在这里称为条件早相干指示。从不允许处理器总线接口使用返回数据除非并直到知道返回数据的节点上的返回数据处于排斥状态为止的观点来看,这种指示都是有条件的。例如,如方框36所示,可以返回具有排斥数据的指示的SCP应答,从而如方框24’所示,导致在其后很短时间内甚至可能在方框32中接收到其余的SCP应答之前产生处理器总线数据返回。
相反,如图4所示,如果返回用于指示不由任何节点排斥地保持数据的应答,例如具有指示处于共享状态的返回数据的应答(方框40),则不满足早相干指示符的条件,所以要求节点在指示可以由处理器接口使用返回数据(方框24)之前等待其余的SCP应答,以确保系统中没有其它节点具有所请求的数据的有效副本。如方框42所示,在所说明的实施例中这样做的一种方式是通过分离的useSPdata指示,可以选择性地与方框18’和20’所示的更新目录和写入高速缓存同时声明该指示。应该理解的是,在只有一个节点被认为是任意给定高速缓存线的所有者的系统中,当以共享状态保持数据时,只有一个节点可以提供所请求的数据,由此,也保持数据的共享副本的其它节点可以发送用于指示共享状态的应答,而不用在该应答中附加返回数据。同样,如方框40所示,响应于在从另一节点接收返回数据之前接收的、用于指示共享状态的非数据应答,可以做出所请求的数据不处于排斥状态的确定。
现在转向图5,该图图解多节点计算机50,它代表一种适当的环境,在该环境中可以以与本发明一致的方式实现这里所描述的早期返回指示功能。例如,计算机50通常地代表任意数量的多用户计算机,诸如网络服务器、中型(midrange)计算机和大型机等。然而,应该理解的是可以在能够使用用于服务存储器请求者(包括其它计算机和数据处理系统)的数据总线的任意设备中实际实现本发明,例如在诸如工作站、桌面计算机、便携计算机之类的单用户计算机或诸如机顶盒、游戏机之类的其它可编程电子装置(如合并嵌入式控制器等)中实现本发明。
被实现为多节点计算机的计算机50包括多个节点52,每个节点52通常包括耦合到一个或多个系统或处理器总线56的一个或多个处理器54。此外耦合到每个处理器总线24的是合并了芯片组高速缓存59、处理器总线接口60和存储器接口62的芯片组58,它通过存储器总线66连接到存储器子系统64。存储器子系统通常包括多个存储器装置,如DRAM 68,它为每个节点52提供主存储器。
为了与外围设备和其它外部设备连接,芯片组58还包括用于提供对I/O子系统72的连接的输入/输出接口70。此外,为了提供节点间连接,在每个节点中提供节点间接口,例如可伸缩端口接口74,以经由通信链路75耦合到一个或多个其它节点52。芯片组58通常还包括许多位于其中的缓存器(如中央缓存器77)以及分别放置在处理器总线接口60和可伸缩端口接口74中的一个或多个排斥缓存器61、75。
芯片组58还包括在这里被称为相干单元76的控制逻辑,以管理由处理器54和/或远程节点52经由可伸缩端口互连75提供到芯片组的存储器请求的处理。在图5的实施例中,在芯片组58中实现了早期返回指示。此外,虽然将预见其它实现,但是下面描述的实施例提供早期返回指示作为芯片组的操作的可选模式,并且支持响应于由相同节点上的处理器(其中通过处理器总线返回数据)和不同节点上的处理器(其中通过可伸缩端口返回数据)发出的请求而正在被返回的数据的早期返回指示。此外,在下面论述的实施例中,应该理解的是,根据所请求的数据的位置,可以由远程节点经由可伸缩端口、经由位于节点上的主存储器、经由芯片组或本地节点上的另一处理器中的高速缓存来实现发送到芯片组的请求。
应该理解的是,可以在芯片组58中支持任何给定类型的多个端口或接口。如图5所示,例如可以希望在每个节点中支持多个处理器总线(或总线段),以后将明白,这可能导致通过从另一处理器总线上的处理器传送数据来获取由一个处理器总线上的处理器请求的数据的需要。
此外,芯片组58支持的各个接口可以实现任意数量的公知协议。例如,芯片组58可以与Intel公司的处理器的Xeon生产线的处理器总线协议兼容。然而,应该理解的是,本发明的原理可应用到其它计算机实现中,包括其它多节点设计、单节点设计和其它使用分离事务总线和/或协议的设计。
可以使用一个或多个集成电路装置实现芯片组58,并且可以用于将系统总线24与额外的电子部件,如图形控制器、声卡、固件、服务处理器等进行连接。因此,应该理解的是,术语芯片组可以描述用于实现这里描述的功能的单独的集成电路芯片,并且甚至可以全部或部分被集成在诸如处理器芯片之类的另一电子部件中。
计算机50,或其中的部件的任意子集,在下面可以被称为“设备”。应该认识到,术语“设备”可以被认为是合并了各种数据处理系统,诸如计算机和其它电子装置以及这样的系统中的各种部件,它们包括独立的集成电路装置及其组合。此外,在设备中,可以合并一个或多个逻辑电路,其电路装置通常实现在一个或多个集成电路器件上,并且可选地包括与之接口的额外的分立部件。
还应该认识到,电路装置通常被设计并制造来至少部分使用一个或多个计算机数据文件,在这里称为硬件定义程序,它定义集成电路器件上的电路装置的布局。通常,通过设计工具以已知的方式产生程序,并且然后在制造过程中使用该程序来产生用于定义应用到半导体晶片上的电路装置的布局模板(mask)。通常,使用诸如VHDL、Verilog、EDIF之类的硬件定义语言以预定的格式提供程序。因此,虽然在以完全功能性集成电路器件实现的电路装置的上下文中描述本发明,但是本领域技术人员将理解与本发明一致的电路装置能够作为各种形式的程序产品被分发,并且不考虑实际执行分发的计算机可读信号承载介质的特定类性等效地应用本发明。计算机可读信号承载介质的实例包括可记录类型介质,诸如易失性和非易失性存储器器件、软盘、硬盘驱动器、CD-ROM和DVD;和发送类型介质,诸如数字和模拟通信链路,但是计算机可读信号承载介质不限于此。
图6更详细地图解芯片组58中的、特别是关于通过处理器总线56之一转发到芯片组的处理器开始的存储器请求处理的、相干单元76、存储器接口62、处理器总线接口60和可伸缩端口接口74之间的互连。相干单元76包括未决队列78和相干目录80。
未决队列78包括耦合到冲突检测块86的控制逻辑82,它合并了PQ项84的阵列。每个PQ项配置来存储用于未决命令或由芯片组正在处理的请求的状态信息。额外地包含在所说明的实施例中使用的每个PQ项中的是状态字段,配置来指示(1)处理器总线接口是否已经被提供有早相干指示或条件早相干指示,(2)可伸缩端口接口是否已经被提供有早相干指示,(3)是否返回数据已经被转发到处理器总线但是仍然需要更新相干目录,和(4)是否返回数据已经被转发到可伸缩端口但是仍然需要更新相干目录。
未决队列78通常在命令或请求的寿命期间跟踪命令或请求的状态。通常,这将包括从处理器总线或可伸缩端口接口接收命令或请求;确定重试/冲突信息;接收目录结果来确定哪里可以看出所请求的高速缓存线的最新副本;通过允许快速路径(fastpath)存储器读取完成,取消快速路径存储器读取并向另一存储器总线发出新请求,或者取消存储器快速路径请求并通过可伸缩端口发出用于处理器源命令的请求,以确保获得所请求的数据;确保产生了数据返回;向请求者提供数据有效的通知;和确保请求者已经使用(consume)了该数据。众所周知,当使用早期返回指示时,在接收目录结果之后执行指示数据有效的通知,而不是在产生了数据返回之前等待。
冲突检测块86配置来将与新请求相关的地址或高速缓存线和存储在PQ项阵列中的未决请求的地址或高速缓存线相比较。指向与未决请求相同的地址或高速缓存线的任何新请求被认为与未决请求“冲突”,并且将被取消并在以后的时间重试。从新请求来看,来自冲突检测的、用于指示没有冲突存在的指示是提供早期返回指示的先决条件。此外,从未决请求来看,指向相同地址和高速缓存线的随后的请求将产生冲突的事实确保将不需要取消并重试未决请求,同样,在当请求的返回数据正在被返回时和当更新相干目录作为请求的结果时之间的时期期间,冲突检测作为该请求的防护(guard)。通过以这样的方式保护未决请求,可以确保由本地节点服务的请求和不与其它请求产生任何冲突的请求将能够完成。
相干目录80存储与相关节点相关的相干信息,如跟踪由本地处理器当前高速缓存的所有高速缓存线,是否由该节点或不同的节点拥有那些高速缓存线,以及跟踪由该节点拥有的、已经被另一节点高速缓存的所有高速缓存线。根据存储器请求的所请求的数据(如,高速缓存线)的源的指示,由于通常取消并在以后的时间重试用于请求由另一节点拥有的地址或高速缓存线的存储器请求,因此查找相干目录的结果还作为早期返回指示的先决条件。
从数据流来看,图6图解提供到控制逻辑82、冲突检测块86、相干目录80和存储器接口60中的每一个的输入处理器总线读取请求。在所说明的实施例中,由存储器接口60将读取请求当作投机请求,即快速路径请求,从而导致在完成相干目录的任何查找之前将存储器请求转发到存储器子系统。
此外,如图6所示,冲突检测块86和相干目录80能够向存储器接口60和控制逻辑82中的每一个提供冲突和目录取消信号,只要确定产生了冲突或所请求的数据的源冲突使得必须取消并重试当前存储器请求,就声明这些信号。相干目录80还向控制逻辑块82以及可伸缩端口接口74输出用于更新该请求的PQ项的目录结果,以指示当适当时远程节点将获取该请求,因此开始通过可伸缩端口接口向其它节点广播请求。
当知道给定的请求将完成并因此不需要重试时,控制逻辑82根据上述输入信号选择性地输出早相干指示。只要所请求的数据变成对由本地节点的处理器正在进行处理的那些请求可用,就将该指示与存储器接口62产生的数据返回信号一起提供到处理器总线接口60。根据这两个信号,处理器总线接口60能够通知处理器总线接口来开始通过处理器总线的返回数据的发送。此外,向处理器传送返回数据可以导致从处理器总线接口向控制逻辑82提供用于指示传送已经初始化的指示。
对于由远程节点正在处理的那些请求,控制逻辑82还可以使用上述早相干指示。为了处理读取排斥请求,控制逻辑82还向处理器总线接口60提供条件早相干指示符和useSPdata指示符,这将在下面详细描述。此外,提供在可伸缩端口接口74和处理器总线接口60之间的直接路径来使来自可伸缩端口接口的返回数据能够直接被提供到处理器总线接口,并且旁路中央缓存器。例如,该数据返回还在返回数据分组的首标中提供可以被编码的返回数据的状态。对于读取排斥请求,处理器总线接口60依赖于条件相干指示符和返回数据的状态来确定是否可以在从系统中的其它节点接收到所有应答之前将返回数据转发到请求处理器。
接下来,图7A-7B图解用于处理图5的芯片组中的处理器请求的示例性流程图。该流程图图解与处理导致简单存储器读取的处理器请求、导致其它处理器总线上的另一处理器的干预的处理器请求和导致发出可伸缩端口请求来从数据处理系统中的另一节点检索所请求的数据的处理器请求相关产生的步骤。此外,正如将在下面变得更加显而易见,请求可以是BRL(读取)请求或BRIL(排斥读取)请求,并且在图中进一步图解了与由可伸缩网络中的另一节点所获取请求相关的每一个的不同处理。应该注意的是,在流程图7A-7B中,由存储器接口62实现方框118和120,通过处理器总线接口60实现方框112和122-128,由可伸缩端口接口74实现图7B中显示的方框(方框138-146),并且由控制逻辑82实现剩下的方框。读者可能希望参照图6来与图7A-7B的论述进行结合。
如方框100所示,请求被最初加载到芯片组中,它可以包括存储器接口上开始快速路径(投机性)读取,由此在此刻,控制逻辑由于地址冲突(冲突检测器86检测的)或由于请求被指向位于其它节点的高速缓存线(由相干目录检测到的)具有取消的机会。此外,控制逻辑还可以确定由于避免总线锁和活锁而需要取消的请求。同样,方框102确定是否将重试请求(即没有完成)。如果是这样,则将控制传递到方框104,由此取消请求,并且对源重试该命令。然后,请求的处理完成。
否则,则将控制传递到方框106来从相干目录确定所请求的数据的源。假设其中所请求的数据的源是节点的本地存储器的情形,则将控制传递到方框114来用信号通知早相干指示符(ECI),用来向处理器总线接口指示当数据有效时可以使用要从存储器返回的数据。
从存储器接口来看,方框100中的快速路径读取的开始从方框118向处理器总线接口起始一指示,用于指示(假设没有取消请求)在固定(X)数量的周期内数据将从存储器子系统到达芯片组。当存储器接口在存储器总线发出命令时,通常声明该指示。然后,在方框120中,一旦数据到达芯片组,由存储器接口向处理器总线接口提供另一指示。
现在转向由处理器总线接口执行的方框122,处理器总线接口等待来自控制逻辑和存储器接口的指示来确定何时总线准备好传送所请求的数据。在由节点的本地存储器获取请求的情况下,方框122等待直到声明了ECI,并且还声明了来自118和120的任一指示为止。方框122还依赖于存储器重置没有发生(如当取消存储器读取时可能在方框108中设置的),它通知存储器总线接口来忽略用于该请求的任何已见到的数据并开始寻找新数据(如,如果在接收用于指示所请求的数据不应该源于本地存储器的目录结果之前返回数据)。众所周知,方框122可以等待与剩余的X周期不同数量(Y)的周期(如,更短)直到数据将从存储器接口到达为止。一旦满足了这些条件,方框122将则将控制传递到方框124来在数据将到达之前的(根据总线协议计算到的)适当数量的周期上开始处理器总线的仲裁,以开始数据返回。还应该理解,在此期间,控制逻辑将拖延与该请求冲突的任意后续请求。
接下来,则将控制传递到方框126来从芯片组向请求处理器传送所请求的数据(通常是与数据相关的高速缓存线)的所有权。例如,根据所支持的协议,可以在延迟的监听阶段(deferred snoop phase)或在IDS(标识选通(strobe))阶段期间,或以适合于特定协议的另一方式执行传送。接下来,如方框28所示,由于从存储器返回数据,该数据通常流入芯片组中的中央数据缓存器,并且还可选地直接流入处理器总线接口中的缓存器中,以在处理器接口缓存器满的情况下保留数据。由于早相干指示符允许早仲裁,所以处理器总线接口能够获得数据,并且在最小缓存的情况下在处理器总线上将数据传输出去。
此外,如方框130所示,由于通过处理器总线数据被返回到源处理器,所以处理器总线接口向控制逻辑提供IDS有效通知,用于指示已经产生的所请求的数据的所有权的转移和现在应该在相干目录中更新目录状态。然后,方框132更新相干目录,并且如果需要则将高速缓存线写入高速缓存。然后,该请求的处理完成。
现在转向方框106,假设其中所请求的数据的源是节点中另一处理器总线(或总线段)上的处理器,则将控制传递到方框108来取消存储器读取并重置指示数据将来自存储器的指示符。此外,方框108将命令支配(master)到适当的处理器总线来开始从返回数据所在的适当处理器中获取返回数据。
一旦将命令支配到其它总线,就将由处理器对总线执行监听来获得所请求的高速缓存线的状态。由于示例性实施例被配置来实现修改的干预,其中,仅当处理器具有处于修改状态的高速缓存线时处理器才干预,因此如果高速缓存线处于除修改之外的任意其他状态,则方框110将则将控制传递到方框116来简单地开始对存储器的新读取操作。应该理解的是,可以在其它实施例中支持其它干预协议。
一旦方框116完成,则将控制传递到方框114来声明ECI,以及经由方框118开始存储器总线的读取。然后,以用于最初被确定要由存储器获取请求的上述基本方式来处理存储器请求。
转向方框110,如果确定处理器具有高速缓存线的修改的副本,则将控制传递到方框114来用信号通知ECI。此外,如方框112所示,处理器总线接口为请求处理器向处理器总线提供数据指示符,用于指示数据将在固定数量的周期内到达。然后,一旦从其它处理器总线接收ECI和指示,则方框122开始数据返回,并且请求的处理以与由存储器所获取的请求的方式相似的方式进行,但是其它处理器总线向中央数据缓存器并可选地向请求存储器总线接口缓存器提供返回数据。此外,若有由存储器所获取的请求,由于早相干指示符允许的早仲裁,因此处理器总线接口能够获得数据并以最小的缓存将其驱动到请求处理器总线。
再次转向方框106,假设其中所请求的数据的源是另一节点上的处理器或存储器的情形,则代之以将控制传递到方框138(图7B)来通过可伸缩端口接口向其它节点广播SP请求。接下来,方框140确定该请求是读取请求(BRL)还是读取排斥请求(BRIL)。如果是读取请求,则在方框114声明ECI信号,而如果是读取排斥请求,则在方框134(图7A)声明条件早相干指示符(CECI)信号。转向图7B,无论请求的类型如何,都将控制传递到方框142来等待来自其它节点的对SP请求的应答。在方框144中处理每个所接收的应答(如通过跟踪应答的接收),并且方框146将控制返回方框142来等待其它应答直到已经接收到所有应答为止。一旦已经接收到所有的应答,方框146将则将控制传递到方框136(图7A)来声明useSPdata信号,以使得在处理器总线接口响应于读取排斥请求接收共享数据的事件中,当接收所有应答时可以通知接口。
图8图解用于以与本发明一致的方式处理早期返回指示的方框122的一个示例性实现。图8特别图解包括方框150-168的示例性逻辑图。
对于在本地节点上所获取的请求或由不同节点所获取的读取请求,ECI信号耦合到与门150,该与门的另一输入耦合到或门152的输出。门152接收y周期内进入的数据和方框118和120(图7A)输出的数据在此信号(datahere signal)以及只要由处理器总线接口从可伸缩端口接口接收应答数据就声明的、具有数据信号的可伸缩应答作为它的输入。
对于由另一节点所获取的读取排斥请求,CECI信号被耦合到与门154,该与门的另一输入被耦合到或门156。测试方框158从应答数据(如经由应答数据的首标)确定数据的状态是否是排斥的,并且输出指示该状态的信号。该输出提供到与门160,该与门还接收已经接收了具有数据的可伸缩应答的指示,以使得只要由可伸缩端口接口接收排斥数据应答就声明提供到或门156的与门160的输出。
或门156的其它输入被耦合到与门162,该与门将数据在此信号(方框120产生的)和useSPdata信号(方框136产生的)组合来指示何时数据已经从可伸缩端口到达和何时已经接收了所有应答。
由或门164组合与门150和154的输出,或门的输出输出到与门166,该与门将反相器168的输出作为其另一个输入,此外,反相器接收存储器重置信号(方框108产生的)。门166的输出是只要存储器总线接口准备好开始对通过处理器总线返回的数据进行仲裁就声明的就绪信号。
因此,只要可以确定在从接收请求的所有其它源接收到应答之前可以使用响应于请求从特定源返回的数据,以与本发明一致的方式的早期返回指示就能最小化延迟,并且可能最小化缓存要求。
早期返回数据还可以提供与本发明一致的额外的有益效果。例如,当从存储器正在返回数据时,可以允许数据流入处理器总线接口缓存器而不进行ECC校正。如果接收到数据没有产生ECC错误或校正,则数据是正确的,并且可以被直接驱动到请求者。如果产生ECC错误或校正,则由于需要接收正确的数据,因此还可以从存储器接口向处理器接口发送信号来使处理器总线接口在一个或多个周期内停止数据返回。
此外,当通过处理器总线返回数据时,可以根据诸如IntelXeon总线协议中使用的TRDY信号之类的数据传送信号提供“数据进入”指示。可以指定从TRDY信号到处理器总线上的数据的最小架构(architected)时间。然而,可以最好允许处理器来使用比最小时间更长的时间来提供数据。在其中根据最小定时数据不能到达的情况下,当知道数据将在中央缓存器(如果路由到可伸缩接口)或者在一个或多个周期停止数据返回时(如果路由到处理器总线接口),最好可以丢弃分组,然后在以后的时间重新开始分组。
因此,应该理解的是,提供早期返回指示降低了读取请求的延迟,并且能够使相干目录更新和应答跟踪从处理这样的读取请求的关键路径中除去。应该理解的是,可以对所说明的与本发明一致的实施例做出各种额外的修改。还应该理解的是,在置于芯片组或其它适当的集成电路器件中的逻辑电路中的上述功能性实现将会在研习过实例公开的本领域技术人员的能力范围内。

Claims (25)

1.一种设备,包括:
至少一个处理器;
处理器总线接口,配置来通过处理器总线耦合到处理器,并且配置来从处理器接收读取请求;
可伸缩端口接口,配置来耦合到多节点数据处理系统中的至少一个节点;
相干目录,配置来存储相干信息;和
耦合到处理器总线接口和可伸缩端口接口的控制逻辑,该控制逻辑配置来响应于请求执行相干目录的查找以确定是否将通过可伸缩端口接口提供用于读取请求的返回数据,通过可伸缩端口接口向多个源转发请求并从多个源的每一个中接收应答,更新相干目录,并且在从多个源的任意一个中接收应答并更新相干目录之前,向处理器总线接口指示当从返回数据的源中接收返回数据时由处理器总线接口使用该返回数据。
2.一种电路装置,包括:
第一通信接口,配置来通过第一通信链路耦合到至少一个请求者;
第二通信接口,配置来通过第二通信链路耦合到多个源;和
耦合到第一和第二通信接口的控制逻辑,配置来响应于通过第一通信接口从请求者接收的请求,将该请求通过第二通信接口转发到多个源,跟踪对来自多个源的每一个中的请求的应答,并且在从多个源中的任意一个接收到应答之前,指示第一通信接口当通过第二通信接口从返回数据的源中接收到返回数据时,由第一通信接口使用响应于请求从源之一中接收的返回数据。
3.如权利要求2所述的电路装置,还包括相干目录,配置来存储相干信息,其中,控制逻辑还配置来响应于请求,执行相干目录的查找以确定是否将由多个源之一经由第二通信接口提供返回数据并更新相干目录,并且其中,控制逻辑配置来指示第一通信接口在更新相干目录之前可以由第一通信接口使用返回数据。
4.如权利要求2所述的电路装置,其中,第一通信接口包括处理器总线接口,配置来通过处理器总线耦合到至少一个处理器,其中,由处理器产生请求,并由处理器总线接口接收该请求。
5.如权利要求4所述的电路装置,其中,第一和第二通信接口和控制逻辑放置在多节点数据处理系统中的第一节点中,并且其中,第二通信接口包括节点间接口,配置来将第一节点耦合到第二节点。
6.如权利要求5所述的电路装置,其中,节点间接口包括可伸缩端口接口,并且其中,所述请求包括总线读取请求。
7.如权利要求4所述的电路装置,其中,第一通信接口配置来响应于来自控制逻辑的指示,准备通过第一通信链路的返回数据的传送,并且在返回数据对于第一通信接口可用之前,通过仲裁通信链路来排列返回数据。
8.如权利要求2所述的电路装置,其中,对第一通信接口的指示包括条件早相干指示符。
9.如权利要求2所述的电路装置,还包括相干目录和跟踪未决请求的未决请求队列,其中,控制逻辑配置来指示第一通信接口响应于确定请求将完成而由第一通信接口使用返回数据,并且其中,控制逻辑配置来根据相干目录的查找和没有与另一请求的地址冲突中至少之一、与从存取未决请求队列作出确定一样,确定请求将完成。
10.如权利要求2所述的电路装置,其中,第一通信接口响应来自控制逻辑的指示,并配置来当在从所有多个源接收应答之前通过第二通信接口从返回数据的源接收返回数据时,开始通过第一通信链路传送返回数据。
11.如权利要求10所述的电路装置,其中,请求包括读取请求。
12.一种包括权利要求2的电路装置的集成电路器件。
13.一种包括权利要求2的电路装置的芯片组。
14.一种包括权利要求2的电路装置的计算机。
15.一种程序产品,包括用于定义权利要求2的电路装置的硬件定义程序;和承载硬件定义程序的计算机可读记录介质。
16.一种在包括第一通信接口和第二通信接口的数据处理系统中处理对数据的请求的方法,其中,第一通信接口配置来通过第一通信链路耦合到至少一个请求者,而第二通信接口配置来通过第二通信链路耦合到多个源,该方法包括:响应于请求者的请求,
通过第二通信接口将请求转发到多个源;
跟踪对来自多个源的每一个中的请求的应答;和
在从多个源中的任意一个接收应答之前,指示第一通信接口当通过第二通信接口从返回数据的源接收返回数据时由第一通信接口使用响应于请求从源之一中接收的返回数据。
17.如权利要求16所述的方法,还包括:
存取存储在相干目录中的相干信息;和
根据请求更新相干目录,其中,在更新相干目录之前执行指示第一通信接口由第一通信接口使用返回数据。
18.如权利要求17所述的方法,其中,第一通信接口包括处理器总线接口,配置来通过处理器总线耦合到至少一个处理器,其中,由处理器产生请求并由处理器总线接口接收该请求,其中,第一和第二通信接口和控制逻辑放置在多节点数据处理系统中的第一节点中,并且其中,第二通信接口包括节点间接口,配置来将第一节点耦合到第二节点。
19.如权利要求16所述的方法,还包括在第一通信接口中,响应于指示并在返回数据对于通信接口可用之前,准备通过通信链路的返回数据的传送。
20.如权利要求19所述的方法,其中,准备返回数据的传送包括仲裁通信链路来排列返回数据。
21.如权利要求16所述的方法,其中,对通信接口的指示包括早相干指示符。
22.如权利要求16所述的方法,其中,响应于根据存取相干信息和检测没有与另一请求的地址冲突中至少之一确定请求将完成,执行指示使用返回数据。
23.如权利要求16所述的方法,其中,指示第一通信接口当通过第二通信接口从返回数据的源接收返回数据时由第一通信接口使用响应于请求从源之一中接收的返回数据进一步指示:在从所有多个源接收应答之前由第一通信接口使用返回数据。
24.如权利要求16所述的方法,还包括:在第一通信接口中,当在从所有多个源接收应答之前通过第二通信接口从返回数据的源接收返回数据时,开始通过第一通信链路的返回数据的传送。
25.如权利要求16所述的方法,其中,请求包括读取请求。
CNB2006100917726A 2005-09-13 2006-06-12 用于数据处理的方法和设备 Expired - Fee Related CN100452015C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/225,656 2005-09-13
US11/225,656 US20070083715A1 (en) 2005-09-13 2005-09-13 Early return indication for return data prior to receiving all responses in shared memory architecture

Publications (2)

Publication Number Publication Date
CN1932791A true CN1932791A (zh) 2007-03-21
CN100452015C CN100452015C (zh) 2009-01-14

Family

ID=37878633

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2006100917726A Expired - Fee Related CN100452015C (zh) 2005-09-13 2006-06-12 用于数据处理的方法和设备

Country Status (2)

Country Link
US (1) US20070083715A1 (zh)
CN (1) CN100452015C (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016119630A1 (en) * 2015-01-27 2016-08-04 Huawei Technologies Co., Ltd. Optimizing synchronous write via speculation
CN111642022A (zh) * 2020-06-01 2020-09-08 重庆邮电大学 一种支持数据包聚合的工业无线网络确定性调度方法

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1692602A4 (en) * 2003-10-31 2007-10-24 Landmark Technology Partners I INTELLIGENT CLIENT ARCHITECTURE COMPUTER SYSTEM AND METHOD
US20070073974A1 (en) * 2005-09-29 2007-03-29 International Business Machines Corporation Eviction algorithm for inclusive lower level cache based upon state of higher level cache
US7702858B2 (en) * 2007-06-05 2010-04-20 Apple Inc. Latency reduction for cache coherent bus-based cache
US7827391B2 (en) * 2007-06-26 2010-11-02 International Business Machines Corporation Method and apparatus for single-stepping coherence events in a multiprocessor system under software control
EP2449472A1 (en) * 2009-07-03 2012-05-09 Jantsch, Axel A programmable controller
US8713277B2 (en) 2010-06-01 2014-04-29 Apple Inc. Critical word forwarding with adaptive prediction
US8725866B2 (en) 2010-08-16 2014-05-13 Symantec Corporation Method and system for link count update and synchronization in a partitioned directory
US8930528B2 (en) * 2010-08-16 2015-01-06 Symantec Corporation Method and system for partitioning directories
US8429209B2 (en) 2010-08-16 2013-04-23 Symantec Corporation Method and system for efficiently reading a partitioned directory incident to a serialized process
CN103197957B (zh) * 2013-03-20 2016-06-08 无锡江南计算技术研究所 一种用户程序执行时页面复制方法
US9369527B2 (en) * 2014-02-21 2016-06-14 Hitachi, Ltd. File server, file server control method, and storage system
GB2547189A (en) * 2016-02-03 2017-08-16 Swarm64 As Cache and method
US11449489B2 (en) * 2017-11-09 2022-09-20 International Business Machines Corporation Split transaction coherency protocol in a data processing system
CN111274174B (zh) * 2020-01-17 2021-05-18 浙江中控技术股份有限公司 数据传输系统及方法

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6631448B2 (en) * 1998-03-12 2003-10-07 Fujitsu Limited Cache coherence unit for interconnecting multiprocessor nodes having pipelined snoopy protocol
US6725341B1 (en) * 2000-06-28 2004-04-20 Intel Corporation Cache line pre-load and pre-own based on cache coherence speculation
US6738836B1 (en) * 2000-08-31 2004-05-18 Hewlett-Packard Development Company, L.P. Scalable efficient I/O port protocol
US6463510B1 (en) * 2000-12-29 2002-10-08 Compaq Information Technologies Group, L.P. Apparatus for identifying memory requests originating on remote I/O devices as noncacheable
US6678799B2 (en) * 2001-10-18 2004-01-13 Hewlett-Packard Development Company, Lp. Aggregation of cache-updates in a multi-processor, shared-memory system
US7296121B2 (en) * 2002-11-04 2007-11-13 Newisys, Inc. Reducing probe traffic in multiprocessor systems
US6954829B2 (en) * 2002-12-19 2005-10-11 Intel Corporation Non-speculative distributed conflict resolution for a cache coherency protocol
US7216205B2 (en) * 2004-01-12 2007-05-08 Hewlett-Packard Development Company, L.P. Cache line ownership transfer in multi-processor computer systems
US7124253B1 (en) * 2004-02-18 2006-10-17 Sun Microsystems, Inc. Supporting directory-based cache coherence in an object-addressed memory hierarchy

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016119630A1 (en) * 2015-01-27 2016-08-04 Huawei Technologies Co., Ltd. Optimizing synchronous write via speculation
US9524114B2 (en) 2015-01-27 2016-12-20 Futurewei Technologies, Inc. Optimizing synchronous write via speculation
CN111642022A (zh) * 2020-06-01 2020-09-08 重庆邮电大学 一种支持数据包聚合的工业无线网络确定性调度方法
CN111642022B (zh) * 2020-06-01 2022-07-15 重庆邮电大学 一种支持数据包聚合的工业无线网络确定性调度方法

Also Published As

Publication number Publication date
CN100452015C (zh) 2009-01-14
US20070083715A1 (en) 2007-04-12

Similar Documents

Publication Publication Date Title
CN100452015C (zh) 用于数据处理的方法和设备
CN100458758C (zh) 用于数据处理的方法和设备
US6374329B1 (en) High-availability super server
US7529799B2 (en) Method and apparatus for transaction tag assignment and maintenance in a distributed symmetric multiprocessor system
US6279084B1 (en) Shadow commands to optimize sequencing of requests in a switch-based multi-processor system
US6779036B1 (en) Method and apparatus for achieving correct order among bus memory transactions in a physically distributed SMP system
JP4307508B2 (ja) 異なるキャッシュロケーション長を有するキャッシュにおいてキャッシュコヒーレンシを保持するためのシステム及び方法
US6535941B1 (en) Method and apparatus for avoiding data bus grant starvation in a non-fair, prioritized arbiter for a split bus system with independent address and data bus grants
JP2000242621A (ja) 共用介入サポートを有する不均等メモリ・アクセス(numa)・データ処理システム
KR100387541B1 (ko) 멀티프로세서 시스템에서 캐쉬 코히어런시 유지 방법, 멀티프로세서 시스템 및 노드 제어기
JP2000227908A (ja) 共用介入サポ―トを有する不均等メモリ・アクセス(numa)デ―タ処理システム
US6529990B1 (en) Method and apparatus to eliminate failed snoops of transactions caused by bus timing conflicts in a distributed symmetric multiprocessor system
US6516379B1 (en) Method and apparatus for transaction pacing to reduce destructive interference between successive transactions in a distributed symmetric multiprocessor system
JP2010250863A (ja) 複数ノード間での通信方法、相互接続ポートおよび相互接続システム
US20190155729A1 (en) Method and apparatus for improving snooping performance in a multi-core multi-processor
US8266386B2 (en) Structure for maintaining memory data integrity in a processor integrated circuit using cache coherency protocols
US20060253662A1 (en) Retry cancellation mechanism to enhance system performance
US7000080B2 (en) Channel-based late race resolution mechanism for a computer system
EP0981092A2 (en) Non-uniform memory access (NUMA) data processing system that decreases latency by expediting rerun requests
US6542949B1 (en) Method and apparatus for increased performance of a parked data bus in the non-parked direction
US20050216675A1 (en) Method and apparatus for directory-based coherence with distributed directory management
JP2006079218A (ja) メモリ制御装置及び制御方法
EP1684181A2 (en) Memory control apparatus and method
US20050160233A1 (en) System and method to facilitate ordering point migration to memory
US8051251B2 (en) Method and apparatus for setting status of cache memory

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
C17 Cessation of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20090114

Termination date: 20100612