CN104731758A - 用于在多处理器数据处理中通信的系统和方法 - Google Patents

用于在多处理器数据处理中通信的系统和方法 Download PDF

Info

Publication number
CN104731758A
CN104731758A CN201410699712.7A CN201410699712A CN104731758A CN 104731758 A CN104731758 A CN 104731758A CN 201410699712 A CN201410699712 A CN 201410699712A CN 104731758 A CN104731758 A CN 104731758A
Authority
CN
China
Prior art keywords
message
response
interconnection
processing node
order
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
CN201410699712.7A
Other languages
English (en)
Other versions
CN104731758B (zh
Inventor
G·L·格思里
C·F·马里诺
M·S·西格尔
W·J·斯塔克
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.)
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 CN104731758A publication Critical patent/CN104731758A/zh
Application granted granted Critical
Publication of CN104731758B publication Critical patent/CN104731758B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4027Coupling between buses using bus bridges
    • G06F13/4031Coupling between buses using bus bridges with arbitration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/36Handling requests for interconnection or transfer for access to common bus or bus system
    • G06F13/362Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

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

Abstract

本发明涉及一种用于在多处理器数据处理中通信的系统和方法。一个或多个系统、设备、方法和/或过程可以经由互连从处理节点接收消息,并且基于消息的第一部分的优先级或者基于消息的第二部分的到期时间,消息的所述第一部分可以取代消息的所述第二部分。在一个实例中,可以经由所述互连的结构控制器(FBC)的缓冲器存储消息的所述第二部分,并且与高于消息的所述第二部分的优先级关联的消息的所述第一部分可以在所述缓冲器中取代消息的所述第二部分。消息的所述第二部分可以包括推测命令。在另一个实例中,可以经由所述缓冲器存储消息的所述第二部分,并且与到期时间关联的消息的所述第二部分可以基于所述到期时间而取代消息的所述第二部分。

Description

用于在多处理器数据处理中通信的系统和方法
技术领域
本公开一般地涉及数据处理,更具体地说,涉及多处理器数据处理系统中的通信。
背景技术
一般地说,可以通过以下各项维护对称多处理(SMP)系统中的存储一致性:基于目录的一致性协议,其中通过参考一个或多个存储目录解决一致性,或者基于窥探的一致性协议,其中通过在缓存代理之间传递消息解决一致性。随着SMP系统扩展到越来越大的n路系统,窥探一致性协议变得受到至少两个设计约束,即,有关缓存代理中用于跟踪请求和关联的一致性消息的排队结构的深度的限制,以及可用于消息传递的通信带宽方面的限制。
为了解决有关缓存代理中排队结构的深度的限制,某些设计采用非阻塞窥探协议,其不需要缓存代理来实现诸如消息队列之类的消息跟踪机制。相反,在非阻塞窥探协议中,缓存代理的请求具有时间限制(意味着窥探器将在固定时间内响应)并且对源节流(以便确保公平划分可用通信带宽)。例如,可以在系统中的所有可能处理节点之间平均划分总系统带宽(例如,经由时分多路复用),以便在所有处理节点都发出请求的最坏情况下确保一致性总线具有足够的带宽。但是,以这种方式平均划分一致性总线带宽将可用于任何特定处理节点的一致性带宽限制为不多于整体可用一致性带宽的预定子集。此外,当只有几个处理节点需要高带宽时,可以未充分使用系统的一致性带宽。
发明内容
所描述的一个或多个系统、设备、方法和/或过程可以经由互连从处理节点接收消息,并且基于消息的第一部分的优先级或者基于消息的第二部分的到期时间,消息的所述第一部分可以取代消息的所述第二部分。在一个实例中,可以经由所述互连的结构控制器(FBC)的缓冲器存储消息的所述第二部分,并且与高于消息的所述第二部分的优先级关联的消息的所述第一部分可以在所述缓冲器中取代消息的所述第二部分。例如,消息的所述第二部分可以包括推测命令。在另一个实例中,可以经由所述缓冲器存储消息的所述第二部分,并且与到期时间关联的消息的所述第二部分可以基于所述到期时间而取代消息的所述第二部分。
附图说明
当阅读以下详细描述并且参考附图时,各实施例将变得显而易见,这些附图是:
图1提供根据一个或多个实施例的示例性数据处理系统;
图2提供根据一个或多个实施例的示例性处理器单元;
图3A-3D提供根据一个或多个实施例的数据处理系统中的命令和响应数据流;
图3E提供根据一个或多个实施例的耦合到互连的多处理系统的示例性图;
图4提供根据一个或多个实施例的示出命令、一致性响应和数据传送序列的示例性计时图;
图5A-5D提供根据一个或多个实施例的过度使用(overcommit)协议的示例性计时图;
图6提供根据一个或多个实施例的过度使用系统的示例性框图;
图7提供根据一个或多个实施例的过度使用队列的示例性框图;
图8提供根据一个或多个实施例的操作过度使用系统的示例性方法;
图9提供根据一个或多个实施例的操作动态速率节流器的示例性方法;
图10提供根据一个或多个实施例的操作动态速率节流的另一个示例性方法;
图11提供根据一个或多个实施例的操作命令优先级超控主节点的示例性方法;
图12提供根据一个或多个实施例的操作命令优先级超控客户机的示例性方法;
图13提供根据一个或多个实施例的示例性计时系统,该系统可以确定在基于动态系统工作负载最大化性能和能源效率的同时处理器单元能够支持的最大命令数量;以及
图14提供根据一个或多个实施例的在计时系统中确定命令阈值的示例性方法。
具体实施方式
在一个或多个实施例中,在此描述的系统、方法和/或过程可以提供和/或实现结构控制器(FBC)(fabric controller),该控制器可以与可伸缩高速缓存一致多处理器系统一起使用。例如,FBC可以提供一致和非一致的存储器访问、输入/输出(I/O)操作、中断通信和/或系统控制器通信等。例如,FBC可以在存储系统和存储子系统等的一个或多个中提供命令和数据操作的接口、缓冲和排序。
在一个或多个实施例中,FBC链路可以是或者包括分离事务、多路复用命令和数据总线,其可以为多个处理节点(例如,多个多处理器单元的硬件实现)提供支持。例如,FBC链路可以为多个处理器单元提供支持。
在一个或多个实施例中,可以通过使用基于非阻塞窥探的一致性协议维护和/或获得高速缓存一致性。例如,起始处理节点(例如,多处理器单元的硬件实现)可以将命令广播到窥探器,窥探器可以将一致性响应(例如,按顺序)返回到起始处理节点,并且可以将组合窥探响应广播回到窥探器。在一个或多个实施例中,可以支持多个级别(例如,范围)的窥探过滤(例如,节点、组、远程组、系统等),以便利用数据和/或处理线程的本地性。例如,这种方法可以减少所需的互链带宽量,可以减少系统范围命令广播需要的带宽,和/或可以维护使用基于窥探的一致性协议的硬件实施的一致性。
在一个或多个实施例中,所谓的“节点范围”是范围限于单个集成电路芯片(例如,单个处理器单元或处理节点)中的窥探器的事务,并且所谓的“组范围”是范围限于在一组物理处理节点上发现的窥探器的命令广播范围的事务。如果使用更有限的广播范围(例如,节点或组)不能一致地完成事务,则基于窥探的一致性协议可以强迫将命令重新发给系统的其它处理节点(例如,包括系统的所有处理节点的组或系统)。
现在转到图1,示出根据一个或多个实施例的示例性数据处理系统100。如图所示,数据处理系统100包括处理节点110A-110D,它们可以用于处理数据和/或指令。在一个或多个实施例中,数据处理系统100可以是或者包括高速缓存一致对称多处理器(SMP)数据处理系统。如图所示,处理节点110A-110D耦合到系统互连120(例如,互连结构),系统互连120可以用于传送地址、数据和控制信息。系统互连120例如可以实现为总线互连、交换互连和/或混合互连等。
在一个或多个实施例中,每个处理节点110A-110D可以实现为包括多个处理器单元112的多芯片模块(MCM),其中每个处理器单元112A1-112D4可以实现为集成电路芯片。如图所示,处理节点110A可以包括处理器单元112A1-112A4和系统存储器114A;处理节点110B可以包括处理器单元112B1-112B4和系统存储器114B;处理节点110C可以包括处理器单元112C1-112C4和系统存储器114C;以及处理节点110D可以包括处理器单元112D1-112D4和系统存储器114D。在一个或多个实施例中,系统存储器114A-114D包括共享系统存储器,并且通常可以由数据处理系统100的任何处理器单元112读取和写入。
如图所示,每个处理节点110A-110D可以包括相应的互连116A-116D,它们可以以通信方式直接或间接耦合到互连120。如图所示,处理器单元112A1-112A4和系统存储器114A可以耦合到互连116A(例如,互连结构),处理器单元112B1-112B4和系统存储器114B可以耦合到互连116B(例如,互连结构),处理器单元112C1-112C4和系统存储器114C可以耦合到互连116C(例如,互连结构),并且处理器单元112D1-112D4和系统存储器114D可以耦合到互连116D(例如,互连结构)。
在一个或多个实施例中,包括在相应的处理节点110中的处理器单元112A1-112D4可以耦合以便彼此通信。在一个实例中,处理器单元112A1-112A4可以经由互连116A和/或互连120与其它处理器单元通信。在第二实例中,处理器单元112B1-112B4可以经由互连116B和/或互连120与其它处理器单元通信。在第三实例中,处理器单元112C1-112C4可以经由互连116C和/或互连120与其它处理器单元通信。在另一个实例中,处理器单元112D1-112D4可以经由互连116D和/或互连120与其它处理器单元通信。
在一个或多个实施例中,互连(例如,互连116A、116B、116C、116D、120等)可以包括网络拓扑,其中节点可以经由网络交换机、纵横式交换机等耦合到彼此。例如,互连可以确定物理广播,其中处理节点根据处理器单元提供的一致性范围来窥探命令。
在一个或多个实施例中,数据处理系统100可以包括未示出的其它组件,例如互连桥、非易失性存储装置、用于连接到网络的端口、附加设备等。例如,这些其它组件不是理解在此描述的实施例所必需的,它们未在图1中示出或进一步讨论。但是,还应该理解,本公开提供的增强适用于不同架构的高速缓存一致数据处理系统,并且决不限于图1中所示的广义数据处理系统架构。
现在转到图2,示出根据一个或多个实施例的示例性处理器单元112。如图所示,处理器单元112可以包括一个或多个处理器核心220,它们执行选定指令集架构(ISA)的指令。在一个或多个实施例中,多级别易失性存储器层次结构可以支持处理器核心220的操作,该层次结构在其最低级别具有共享系统存储器114,并且在其较高级别具有两个或更多级别的高速缓冲存储器,该高速缓冲存储器可以缓存位于可缓存地址中的数据和/或指令。在一个或多个实施例中,每个处理器核心220的高速缓冲存储器层次结构包括相应的贯穿存储(store-through)1级(L1)高速缓存222,其在处理器核心220中并且为处理器核心220所私有;内部存储(store-in)2级(L2)高速缓存230,其为处理器核心220所私有;以及可能共享3级(L3)受害者高速缓存240,其可以缓冲L2逐出。
如图所示,处理器单元112经由总线接口(BI)250耦合到互连116。例如,处理器单元112可以经由BI 250和互连116,与其它处理器单元112和系统存储器114进行信息通信。在一个实例中,所述信息可以包括请求数据的命令。在另一个实例中,所述信息可以包括与这种请求关联的一致性响应。在另一个实例中,所述信息可以包括与这种请求关联的数据。如图所示,互连116可以包括FBC 117。
如图所示,处理器单元112可以还包括窥探逻辑260、响应逻辑262和转发逻辑264。窥探逻辑260可以耦合到或者形成L2高速缓存230和L3高速缓存240的一部分,其可以负责确定个体一致性响应以及响应于在互连116上窥探的请求而执行的动作。响应逻辑262可以负责基于从请求接收者接收的个体一致性响应,确定对在互连116上发出的请求的组合响应。此外,转发逻辑264可以选择性地在其本地互连116和系统互连(例如,图1的互连120、图3E的互连330等)之间转发通信。
现在转到图3A-3E,示出根据一个或多个实施例的数据处理系统300中的命令和响应数据流。图3A-3D共同示出到达数据处理系统300的所有处理单元的系统范围的命令和响应流。如图3A-3E中所示,数据处理系统300可以包括多个多处理(MP)系统310A-310D。MP系统310A又包括处理节点310A1-310A4,MP系统310B包括处理节点310B1-310B4,MP系统310C包括处理节点310C1-310C4,并且MP系统310D包括处理节点310D1-310D4。在一个或多个实施例中,每个MP系统310A-310D可以包括如图1中所示的一个或多个数据处理系统100。
在一个或多个实施例中,可以通过将命令分组反映到一个MP系统和/或一组MP系统中的所有处理器单元,在数据处理系统300中维护和/或实现高速缓存一致性。接收反映的命令(例如,命令消息)的每个处理器单元可以发送部分响应(例如,部分响应消息),这些部分响应可以包括与窥探器状态关联的信息、窥探器的处理器单元,和/或在窥探器的处理器单元中保存的高速缓存行(如果有,并且如果由传输类型指定)。在一个或多个实施例中,发送部分响应消息的顺序可以与接收反映的命令的顺序匹配。
如图3A中所示,处理节点310A1可以将命令(请求)广播到处理节点310B1、310C1、310D1和310A2-310A4。在一个或多个实施例中,处理节点310A1、310B1、310C1和310D1可以是或者充当一个或多个命令的相应MP系统310A-310D的主处理节点。在一个或多个实施例中,处理节点310B1、310C1和310D1可以是中心节点和/或远程节点,并且处理节点310B2-310B4、310C2-310C4和310D2-310D4可以是叶节点。在一个或多个实施例中,处理节点310A2-310A4可以是附近节点。
如图3B中所示,充当命令的主处理节点,处理节点310B1可以将命令广播到其MP系统310B中的处理节点310B2-310B4,处理节点310C1可以将命令广播到其MP系统310C中的处理节点310C2-310C4,并且处理节点310D1可以将命令广播到其MP系统310D中的处理节点310D2-310D4。
在一个或多个实施例中,处理节点310A2-310A4、310B1-310B4、310C1-310C4和310D1-310D4可以确定其对广播的命令的相应个体一致性响应。如图3C中所示,处理节点310A2-310A4可以为主处理节点310A1提供其相应的响应,处理节点310B2-310B4可以为主处理节点310B1提供其相应的响应,处理节点310C2-310C4可以为主处理节点310C1提供其相应的响应,并且处理节点310D2-310D4可以为主处理节点310D1提供其相应的响应。因为这些一致性响应表示仅来自接收命令的范围的子集的响应,所以根据一个或多个实施例,来自处理节点310A2-310A4、310B2-310B4、310C2-310C4和310D2-310D4的一致性响应可以称为部分响应。
在一个或多个实施例中,处理节点310B1、310C1和310D1可以将接收的部分响应组合成相应的累积部分响应。如图3D中所示,每个处理节点310B1、310C1和310D1可以为处理节点310A1提供其累积部分响应。在处理节点310A1接收累积部分响应之后,处理节点310A1可以将累积部分响应组合成组合响应。
在一个或多个实施例中,可以过度使用互连总线(例如,如下面参考图4讨论的),可以删除某些命令,并且可以针对该处理节点或一组处理节点返回部分响应(例如,指示删除:“rty_dropped_rcmd”的反映的命令的响应)。在一个实例中,如果主处理节点超过可编程重试阈值,则机制和/或系统可以回退命令速率以便允许一个或多个处理节点向前进展。在另一个实例中,当第一处理节点具有的带宽不足以广播第一处理节点从第二处理节点接收的命令时,第一处理节点可以返回重试部分响应(例如,“rty_dropped_rcmd”)。该响应可以指示未将命令广播到第一处理节点或一组处理节点。
在一个或多个实施例中,可以将部分响应与其它处理节点的部分响应相组合,并且rty_dropped_rcmd的存在可能不一定导致命令失败。例如,即使未在系统中的所有处理节点上广播命令,命令仍然可以成功。例如,只要所有需要的参与方(例如,HPC(最高一致性点)和/或LPC(最低一致性点)等)能够窥探并且为命令提供非重试部分响应,操作便可以成功。
LPC在此定义为充当存储块的库的存储设备或I/O设备。如果存储块不存在HPC,则LPC保存存储块的真实影像,并且有权许可或拒绝用于生成存储块的其它缓存副本的请求。对于图1-2的数据处理系统实施例中的典型请求,LPC将是保存所参考的存储块的系统存储器114的存储控制器。根据一个或多个实施例,HPC在此定义为唯一标识的设备,其缓存存储块(其可以与LPC处的对应存储块一致也可以不一致)的真实映像,并且有权许可或拒绝用于修改存储块的请求。在描述上,HPC还可以例如响应于命令,为请求者提供存储块的副本。
例如,处理节点310C的处理器单元112的L3高速缓存240可以存储第一数据,并且处理节点310A的处理器单元112可以经由广播命令(其例如可以具有系统或组广播范围)请求第一数据。如果L3高速缓存240是第一数据的最高一致性点,则L3高速缓存240可以使用指示它将为处理节点310A的处理器单元112提供第一数据的部分响应,响应处理节点310A的命令。根据一个或多个实施例,在组合响应之前或者响应于组合响应,处理节点310C可以经由互连330为处理节点310A提供第一数据,互连330耦合MP系统310A-310D,如图3E中所示。
同样,在第二实例中,处理器单元112D3(图1中所示)的L2高速缓存230可以存储第二数据,并且处理器单元112D4可以广播对第二数据的请求(其中请求范围可以限于仅处理节点110D(即,节点范围))。如果处理器单元112D3是HPC或者由HPC指定这样做,则处理器单元112D3可以干预去往处理器单元112D4的第二数据,以便处理器单元112D4具有较低访问延迟的优点(即,不必等待从LPC(即,系统存储器)传送第二数据)。在这种情况下,处理器单元112D4广播命令,该命令指定第二数据的系统存储器地址。响应于窥探广播,处理器单元112D4(例如,为处理器单元112D3)提供部分响应,该部分响应指示处理器单元112D4可以提供第二数据。之后,在组合响应之前或者响应于组合响应,处理器单元112D4经由L2高速缓存230和互连116D为处理器单元112D3提供第二数据。
在一个或多个实施例中,发出触发重试组合响应的命令的参与者可以(或者在某些实现中可以需要)响应于重试组合响应,重新发出相同的命令。在一个或多个实施例中,可以利用删除优先级。例如,删除优先级可以指定为低、中或高。在一个实例中,与低删除优先级关联的命令可以是要删除或过度使用(使用参考下述图5D描述的过度使用协议)的第一个命令。在另一个实例中,与高删除优先级关联的命令可以是要删除或过度使用的最后一个命令。在某些实施例中,以推测方式发出的命令(例如数据预取命令)可以与低删除优先级关联。
现在转到图4,示出根据一个或多个实施例的显示命令、一致性响应和数据传送序列的示例性计时图。如图所示,总线连接的处理器单元410可以为总线控制逻辑412的命令选择420提供命令和命令标签515。例如,总线连接的处理器单元410可以包括在采用基于窥探的一致性协议的数据处理系统中的事务中。
在一个或多个实施例中,耦合到互连(例如,事务的“主节点”)的参与者(例如,处理器单元112)可以将命令415放在互连的命令接口上。在一个或多个实施例中,命令415可以指定事务类型(tType)、在传输标签(tTag)中提供的请求者的标识,以及可选地指定命令要访问的存储块的目标实地址。
示例性事务类型例如可以包括下面表Ⅰ中提供的那些类型。
表Ⅰ
在一个或多个实施例中,总线控制逻辑412可以从处理节点的主节点提供的可能多个命令以及从其它处理节点接收的反映的命令中选择命令,作为要发出的下一个命令。如图所示,经由互连将命令选择420(例如,控制逻辑)选择的命令传输到其它参与者,作为在可选排队之后的反映的命令425。
在一个或多个实施例中,在发出反映的命令以后的某一时间量(例如,tsnoop)之后,处理节点上的参与者(例如,窥探器)可以提供部分响应和/或确认标签430中的一个或多个。例如,为写入操作提供确认标签以便指示LPC(例如,系统存储器114)的位置。在一个或多个实施例中,总线控制逻辑412可以在命令的原始广播范围内组合来自处理节点的部分响应,并且可以生成组合响应。
在一个或多个实施例中,对于读取操作,在其一个高速缓存中保存目标存储块副本的参与者可以在接收命令的组合响应之前,确定该组合响应是目标存储块的源。因此,在总线控制逻辑412发出对命令的组合响应之前,该参与者可以向请求者传输目标存储块副本。这种早期数据传输在图4中的参考标号440处示出。
在一个或多个实施例中,部分响应累积和组合响应生成435可以指定数据路由基于目的地寻址,并且包括在路由标签中的地址指定要接收数据传输的参与者的目的地。例如,路由标签可以从tTag获得和/或基于tTag。例如,路由标签可以包括处理节点标识和/或处理器单元标识。在一个或多个实施例中,将读取数据返回到主节点的顺序可以不采用命令顺序。例如,处理器单元可以负责将数据传输与命令关联,因为路由标签可以与原始命令标签相同。
在一个或多个实施例中,可以将组合响应、原始命令标签和确认标签发送到处理节点的一个或多个窥探器,并且进行排队以便传输到系统的其它处理节点,如在参考标号445处所示。在一个实例中,组合响应指示事务的成功或失败。组合响应可以进一步指示主节点和/或其它参与者处的目标高速缓存行的一致性状态转变,以及主节点和/或其它参与者要执行的任何后续操作。例如,对于保存目标高速缓存行副本,并且不能判定它们是否提供仅基于命令的数据及其目标高速缓存行副本的一致性状态的窥探处理单元(多个),可以检查组合响应以便判定它们是否由HPC指定通过干预为请求者提供目标高速缓存行。
图4进一步示出参与者在参考标号450处传输读取命令请求的目标高速缓存行。例如,参与者用于传输目标高速缓存行的路由标签可以从原始命令tTag获得和/或基于原始命令tTag。在一个或多个实施例中,将目标高速缓存行返回到主节点的顺序可以不采用命令顺序。因此,使用从原始命令tTag获得或者包括原始命令tTag的路由标签例如允许请求者将不按顺序提供的数据与命令相匹配。
如图所示,数据传输455传输写入命令的写入数据460。例如,包括在写入命令的数据传送中的路由标签可以从确认标签获得和/或基于确认标签,要执行写入操作的参与者(例如,存储控制器)提供该确认标签。在一个或多个实施例中,将写入数据的目标高速缓存行提供给参与者的顺序可以不采用命令顺序。如上所述,使用包括确认标签或者基于确认标签的路由标签例如允许参与者将提供的数据与写入命令配对。
在一个或多个实施例中,在此描述的系统、方法和/或过程可以利用过度使用协议,该协议允许较高带宽主节点使用未使用的一致性带宽。例如,在此描述的系统、方法和/或过程可以使用结构互连上的未充分使用的一致性带宽,并且可以允许一致性主节点的传输速率高于针对固定时分多路复用系统指定的速率。
现在参考图5A和5B,示出根据一个或多个实施例的过度使用协议的示例性计时图。如图所示,处理节点110A-110D可以默认被分配和/或利用互连上的相等带宽,在图5A中表示为相等时间部分(例如,相同时间片)。这种布置通常称为时分多路复用(TDM)。如图所示,可以在相应的处理节点110A、110B、110D和110A的时间部分内提供消息510A、510B、510C、510D(它们例如可以是或者包括命令、一致性响应和/或数据)。在一个或多个实施例中,处理器单元可能不在其分配的时间部分内提供消息。如图5A中所示,空数据520的存在指示处理节点110C未在其分配的时间部分内提供数据。在一个或多个实施例中,空数据520可以是或者包括无意义数据、无效数据和/或可以以其他方式被忽略的垃圾数据。
在一个或多个实施例中,实际可以在其中空数据520否则被传送的时间部分内提供有意义消息。可以采用过度使用协议分配否则未使用的互连带宽以便由较高带宽主节点使用。例如,如图5B中所示,可以使用过度使用协议将处理节点110C的时间部分分配给处理节点110A,从而允许处理节点110A传送消息530。
现在转到图5C和5D,示出根据一个或多个实施例的过度使用协议的其它示例性计时图。如图所示,处理节点110A-110D可以默认被分配和/或使用互连上的相等带宽以便传输相应的命令,在图5C中表示为相等时间部分(例如,相同时间片)和/或TDM。如图所示,可以在相应的处理节点110A、110B、110C、110D和110A的时间部分内提供命令540A、540B、540C、540D和540E。在一个或多个实施例中,处理器单元可以在其分配的时间部分内为消息提供低优先级命令。例如,处理节点110D可以在其分配的时间部分内提供低优先级命令。
在一个或多个实施例中,可以在其中否则传送低优先级命令540D的时间部分内提供较高优先级命令而不是较低优先级命令。可以采用过度使用协议分配否则用于低优先级命令的带宽以便由较高优先级命令使用。例如,如图5D中所示,可以使用过度使用协议将处理节点110D的时间部分分配给处理节点110B,从而允许处理节点110B传送命令550。例如,命令550的优先级高于命令540D。
现在转到图6,示出根据一个或多个实施例的过度使用系统610的示例性框图。在一个或多个实施例中,过度使用系统610可以是或者包括互连的结构控制逻辑(例如,互连116A的FBC 117A)的过度使用系统,并且来自处理节点的命令可以是或者包括来自处理节点110A-110D和处理节点310A1-310D4等的一个或多个的命令。
如图所示,过度使用系统610包括链路纠偏缓冲器620和过度使用队列624,它们由队列控制器622管理。如图所示,链路纠偏缓冲器620可以从附近处理节点接收命令。在一个实例中,处理节点310A2-310A4可以是处理节点310A1的附近处理节点,如图3A中所示。在另一个实例中,处理节点310D2-310D4可以是处理节点310D1的附近处理节点。
在一个或多个实施例中,链路纠偏缓冲器620可以包括优先级队列,其包括表项620A1-620A4,每个表项可以与高优先级或低优先级关联。在一个实例中,如果处理节点310A1从与低优先级关联的处理节点310A3接收命令,并且优先级队列已满(即,表项620A1-620A4不可用于分配和/或存储),则可以删除来自与低优先级关联的处理节点310A3的命令,并且队列控制器622可以经由过度使用队列624返回重试部分响应(例如,“rty_dropped_rcmd”)。在另一个实例中,如果链路纠偏缓冲器620从与高优先级关联的处理节点310A3接收第一命令,优先级队列已满,并且优先级队列存储与低优先级关联的至少第二命令,则队列控制器622可以从纠偏缓冲器620的优先级队列中删除低优先级第二命令,以便允许存储第一命令。
在一个或多个实施例中,链路纠偏缓冲器620的表项620A1-620A4存储的命令可以与一个或多个到期时间关联。例如,经由表项620A1-620A4存储的命令可以在将命令放入纠偏缓冲器620中以后经过的某一时间量之后到期。例如,可以在将命令放入表项620A1中以后经过的某一时间量之后丢弃和/或覆盖存储在表项620A1中的命令。在一个或多个实施例中,过度使用来自附近处理节点的命令可以包括在存储在表项620中的数据到期之后,取代和/或覆盖表项的数据(例如,表项620A1-620A4之一存储的命令)。
在一个或多个实施例中,过度使用队列624存储来自链路纠偏缓冲器620和/或来自附近处理节点的命令的状态。例如,过度使用队列624可以保留与从附近处理节点接收的命令对应的响应的排序。
如图所示,链路纠偏缓冲器620可以进一步耦合到提交队列626。在一个或多个实施例中,存储在提交队列626中的数据可以在存储数据以后经过的某一时间量之后到期。如果存储在提交队列626中的命令到期,则可以将命令更改为无操作(NOP)命令。将命令更改为NOP命令可以保留与来自附近处理节点的命令对应的响应的排序。例如,NOP命令可以是或者包括过度使用NOP命令。
如图所示,提交队列626可以耦合到多路复用器628,并且多路复用器628可以耦合到窥探总线630,窥探总线630又耦合到附近处理节点的处理器单元的总线接口632A-632H。如图所示,多路复用器628可以进一步耦合到中央仲裁器634,其控制多路复用器628。如图所示,链路纠偏缓冲器620可以耦合到可包括在窥探调度器638中的动态速率节流器636。
在一个或多个实施例中,动态速率节流器636监视命令响应。例如,动态速率节流器636可以监视“retry dropped”响应(例如,“rty_dropped_rcmd”的响应)的速率。如果“retry dropped”响应的速率过高,则动态速率节流器636然后可以调整命令速率。如图所示,窥探调度器638可以耦合到主处理节点640。
在一个或多个实施例中,窥探调度器638为主处理节点640提供反馈信息,该反馈信息可以用于控制过度使用命令。在一个实例中,如果“retrydropped”响应的速率过高(例如,处于或高于阈值),则窥探调度器638可以为主处理节点640提供信息,该信息指示应该降低过度使用命令速率。在另一个实例中,如果“retry dropped”响应的速率处于或低于某一级别,则窥探调度器638可以为主处理节点640提供信息,该信息指示可以增加过度使用命令速率。例如,窥探调度器638可以提供以下信息:该信息指示可以适应较高过度使用命令发出速率。
现在转到图7,示出根据一个或多个实施例的图6的过度使用队列626的示例性框图。如图所示,过度使用队列626可以包括过度使用历史队列720A和本地部分响应队列750A,它们均耦合到多路复用器730A,多路复用器730A又耦合到输出多路复用器740。在一个或多个实施例中,过度使用历史队列720A可以控制多路复用器730A在来自本地部分响应队列750A和“retry dropped”部分响应(例如,rty_dropped_rcmd)的数据之间进行选择。
如图所示,过度使用队列626可以还包括过度使用历史队列720B和本地部分响应队列750B,它们均耦合到多路复用器730B,多路复用器730B又耦合到输出多路复用器740。在一个或多个实施例中,过度使用历史队列720B可以控制多路复用器730B在来自本地部分响应队列750B和“retrydropped”部分响应(例如,rty_dropped_rcmd)的数据之间进行选择。
在一个或多个实施例中,过度使用历史队列720A、本地部分响应队列750A和多路复用器730A可以用于偶数命令地址,并且过度使用历史队列720B、本地部分响应队列750B和多路复用器730B可以用于奇数命令地址。循环(RR)仲裁器760可以用于选择多路复用器730A和730B的一个输出作为输出多路复用器740的输出。
现在转到图8,示出根据一个或多个实施例的操作过度使用系统(例如图6的过度使用系统610)的示例性方法。图8的方法在方框810开始,此时图6的过度使用系统610从附近处理节点接收命令。在一个实例中,处理节点310A1(在图3A中示出)可以包括诸如过度使用系统610之类的过度使用系统,并且过度使用系统610可以从处理节点310A3接收命令。在另一个实例中,处理节点310D1(也在图3A中示出)可以包括诸如过度使用系统610之类的过度使用系统,并且过度使用系统610可以从处理节点310D3接收命令。
在方框815,队列控制器622判定链路纠偏缓冲器620是否已满(例如,满负荷)。如果链路纠偏缓冲器620未满,则可以将第一命令存储在链路纠偏缓冲器620中(方框820)。如果在方框815链路纠偏缓冲器620已满,则队列控制器622在方框825判定第一命令的优先级是否高于存储在链路纠偏缓冲器620中的第二命令。如果第一命令的优先级高于第二命令,则队列控制器622导致第一命令在链路纠偏缓冲器620中排队,从而取代第二命令(方框830)。根据一个或多个实施例,当第一命令取代第二命令时,第一命令被视为“过度使用”。
响应于在方框825判定第一命令的优先级不高于第二命令,队列控制器622在方框835判定存储在链路纠偏缓冲器620中的第三命令是否到期。响应于在方框835判定第三命令到期,队列控制器622导致第一命令在链路纠偏缓冲器620中排队,从而取代第三命令(方框830)。根据一个或多个实施例,当第一命令取代第三命令时,第一命令被视为“过度使用”。响应于在方框835判定第三命令未到期,在方框840删除第一命令。在一个或多个实施例中,第三命令可以是第二命令。
在一个或多个实施例中,如果取代或删除命令,则将仍然存储对应的部分响应。在一个实例中,如果在方框830取代第二命令,则队列控制器622在方框845将部分响应(例如,“rty_dropped_rcmd”)存储在过度使用队列626中。在另一个实例中,如果在方框840删除第一命令,则队列控制器622在方框845将部分响应(例如,“rty_dropped_rcmd”)存储在过度使用队列626中。
在方框850,过度使用队列626可以为互连提供部分响应。在一个实例中,过度使用队列626可以为互连120提供部分响应,该部分响应指示取代或删除第一命令或第二命令。在另一个实例中,过度使用队列626可以为互连117提供部分响应,该部分响应指示取代或删除第一命令或第二命令。在方框855,互连120可以为附近节点提供部分响应,该部分响应提供取代或已删除命令。
在一个或多个实施例中,互连可以根据删除优先级指定不同的命令发出速率。在一个实例中,低删除优先级可以与较高发出速率关联。例如,低删除优先级命令可以是推测命令。在另一个实例中,高删除优先级可以与较低发出速率关联。通过这种方式,互连可以控制发出的命令数,以便高删除优先级命令可以独立于系统业务而最可能成功,并且只要与其它处理节点的其它低删除优先级命令没有争用,低优先级命令便可以成功。
在一个或多个实施例中,结构命令仲裁器可以基于命令范围、删除优先级和命令速率级别等准则中的一个或多个,指定命令发出速率。例如,结构命令仲裁器可以包括使用一致性重试作为反馈的硬件控制机构。例如,结构命令仲裁器(例如,图6中所示的中央仲裁器634)可以被配置有八个发出速率级别,从0(最高)到7(最低)。下面的示例性表Ⅱ提供示例性反映的命令速率设置。
表Ⅱ
在一个或多个实施例中,包括在数据处理系统中的处理节点可以针对系统范围命令和远程组范围命令以相同速率级别运行,并且包括在组中的处理节点可以针对组范围命令以相同速率级别运行。可以将数据处理系统的一个处理节点指定为系统速率主节点(SRM)。例如,SRM可以通过窥探系统范围/远程组速率级别的更改速率请求命令,确定系统范围速率和远程组速率,并且可以通过发出更改速率许可命令进行响应以便设置新系统范围/远程组速率级别。可以将组中的一个处理节点指定为组速率主节点(GRM)。例如,GRM可以通过窥探本地组中的组范围速率级别的更改速率请求命令,确定组范围速率,并且可以通过发出更改速率许可命令进行响应以便设置新组范围速率级别。
在一个或多个实施例中,窥探调度器638(在图6中示出)可以从链路纠偏缓冲器620接收命令,并且可以充当控制过度使用速率的反馈机构。例如,动态速率节流器636可以接收更改速率许可命令,并且可以发出更改速率许可命令以便设置新速率级别。
在一个或多个实施例中,互连一致性传输可以包括两个窥探总线。例如,第一窥探总线可以用于偶数地址,并且第二窥探总线可以用于奇数地址。在一个或多个实施例中,可以从多个源发出命令,这些源可以是本地源(在本地处理节点中)、附近源(本地组中的其它处理节点),或者远程源(远程组中的处理节点)。互连(例如,网络拓扑,其中节点可以经由网络交换机、纵横式交换机等耦合到彼此)可以确定物理广播,其中处理节点根据处理器单元提供的一致性范围来窥探命令。
随着物理广播在每个时间段增加(例如,广播速率),命令将争用处理节点的有限窥探带宽的可能性可以增加。如果所有处理节点在最大广播范围内发出命令,则数据处理系统中可以具有不足的窥探带宽。在一个实例中,源处理节点可以限制其广播速率。在另一个实例中,数据处理系统可以处理窥探总线的过度利用。
现在转到图9,示出根据一个或多个实施例的操作图6的动态速率节流器636的方法。图9的方法在方框910开始,其示出图6的动态速率节流器636判定是否到达采样窗口的末端。在一个或多个实施例中,动态速率节流器636用作更改速率主节点。例如,动态速率节流器636可以用作处理节点(例如,图3A中所示的处理节点310A)的更改速率主节点。如果动态速率节流器636判定未到达采样窗口的末端,则所述方法保持在方框910。响应于动态速率节流器636确定到达采样窗口的末端,动态速率节流器636在方框915判定是否接收到更改速率请求。在一个或多个实施例中,更改速率请求可以基于推测命令的发出速率和过度使用故障数量等中的至少一个。
如果动态速率节流器636在方框915判定接收到更改速率请求,则动态速率节流器636判定当前速率级别是否小于参考命令速率级别(方框920)。在一个或多个实施例中,数据处理系统可以被配置有命令速率级别(例如,参考命令速率级别),其可以用作与其它命令速率级别和/或最小命令速率级别相比较的参考。如果动态速率节流器636判定当前速率级别小于参考命令速率级别,则动态速率节流器636将当前速率级别设置为参考命令速率级别(方框930)。但是,如果动态速率节流器636在方框920判定当前速率设置不小于参考命令速率级别,则动态速率节流器636使当前速率递减一个速率级别(方框935)。
再次参考方框915,如果动态速率节流器636判定未接收到更改速率请求,则动态速率节流器636可以进一步判定是否适用递增命令速率上升(方框925)。例如,动态速率节流器636可以基于系统配置判定是否适用递增命令速率上升。在一个或多个实施例中,递增命令速率上升可以包括在操作策略中。例如,操作策略可以包括使当前速率级别递增至少一个较快速率级别,而不是使当前速率级别递增到最快命令速率级别(例如,如表Ⅱ中所示的“最快定步速率”)。
如果动态速率节流器636在方框925判定适用递增命令速率上升,则动态速率节流器636可以判定是否经过上升时间(方框927)。在一个或多个实施例中,上升时间可以用于缓解和/或减缓递增命令速率上升。例如,动态速率节流器636可以在经过上升时间之后递增命令速率(递增到较快速率级别)。例如,如果动态速率节流器636判定要在经过上升时间之前递增当前命令速率级别,则动态速率节流器636将不会递增当前命令速率级别。如果已经过上升时间,则动态速率节流器636使当前速率递增一个较快速率级别(方框940)。但是,如果未经过上升时间,则所述方法可以返回到已经描述的方框910。
再次参考方框925,如果动态速率节流器636判定不适用递增命令速率上升,则动态速率节流器636将当前速率级别设置为最快命令速率级别(方框945)。如图所示,方框930-945的每一个可以继续到方框950,其示出动态速率节流器636使用如在方框930-945之一处设置的级别,发出更改速率许可命令。例如,动态速率节流器636可以使用方框930-945之一设置的级别,经由窥探调度器638发出更改速率许可命令到主处理节点640(在图6中示出)。在一个或多个实施例中,更改速率许可命令可以与组范围、远程组范围和系统范围等之一关联。在方框950之后,所述方法可以返回到已经描述的方框910。
现在参考图10,示出根据一个或多个实施例的操作动态速率节流器636的另一个方法。在方框1010,图6的动态速率节流器636可以判定是否到达采样窗口的末端。在一个或多个实施例中,动态速率节流器可以用作更改速率请求者。例如,动态速率节流器636可以用作处理节点(例如,图1中所示的处理节点110A)的更改速率请求者。根据一个或多个实施例,图10的过程保持在方框1010,直到到达采样窗口的末端。
响应于动态速率节流器636判定到达采样窗口的末端,动态速率节流器636可以做出如在方框1015、1025和1035所示的判定。具体地说,在方框1015,动态速率节流器636判定低优先级重试删除数量(rty_drop)是否高于第一阈值。如果动态速率节流器636在方框1015判定低优先级重试删除数量不高于第一阈值,则所述方法可以返回到方框1010。但是,如果动态速率节流器636判定低优先级重试删除数量高于第一阈值,则动态速率节流器636可以在方框1020设置低优先级重试请求。
在方框1025,动态速率节流器636判定中优先级重试删除数量(rty_drop)是否高于第二阈值。如果动态速率节流器636在方框1025判定中优先级重试删除数量不高于第二阈值,则所述方法可以返回到方框1010。另一方面,如果动态速率节流器636判定中优先级重试删除数量高于第二阈值,则动态速率节流器636可以在方框1030设置中优先级重试请求。
在方框1035,动态速率节流器636判定高优先级重试删除数量(rty_drop)是否高于第三阈值。如果动态速率节流器636在方框1035判定高优先级重试删除数量不高于第三阈值,则所述方法可以返回到方框1010。但是,如果动态速率节流器636在方框1035判定高优先级重试删除数量高于第三阈值,则动态速率节流器636可以在方框1040设置高优先级重试请求。
在一个或多个实施例中,可以以并行方式执行方框1015、1025和1035。例如,可以并发和/或同时执行方框1015、1025和1035。在一个或多个其它实施例中,可以顺序执行方框1015、1025和1035。例如,可以在执行方框1015、1025和1035中的第二和第三方框之前,执行方框1015、1025和1035中的第一方框。
如图所示,所述方法从方框1020、1030和1040中的任何一个或每一个继续到方框1045,其示出动态速率节流器636发送在方框1020、1030和1040之一确定的更改速率请求。例如,动态速率节流器636可以经由窥探调度器638,将方框1020、1030和1040之一设置的更改速率请求发送到主处理节点640(在图6中示出)。在方框1045之后,图10的方法可以返回到方框1010。
在一个或多个实施例中,图10中所示的方法可以与组范围、远程组范围和系统范围中的一个或多个一起使用。例如,表Ⅱ的低、中和高优先级可以与表Ⅱ中提供的组范围、远程组范围和系统范围中的一个或多个一起使用。例如,图10中所示的方法可以用于经由表Ⅱ提供的组范围、远程组范围和系统范围的每一个。
在一个或多个实施例中,重度使用的系统中的一致性带宽可以经历拥塞时段,视的高删除优先级命令可能不会成功广播到系统的处理节点,并且可以使用命令优先级超控(CPO)系统传送关键高删除优先级命令。在一个实例中,当高优先级系统维护命令由于过多重试次数而不能向前进展时,可以调用CPO系统。例如,CPO系统可以用于迫使和/或强迫中央仲裁器(例如,图6中所示的中央仲裁器634)回退到预先配置的命令速率(例如,表Ⅱ中枚举的速率级别中的某个速率级别)。在第二实例中,当重试次数超过阈值时,任何总线主节点可以断言CPO信号。在另一个实例中,总线窥探器的窥探调度器(例如,诸如图6中所示的窥探调度器638之类的窥探调度器)可以通过断言CPO信号,超控相应的一个或多个中央仲裁器的一个或多个命令速率级别。换言之,例如,处理器单元的总线窥探器可以断言CPO信号,以便超控其它处理器单元的其它总线窥探器的命令速率级别。
在一个或多个实施例中,CPO系统可以使用和/或实现带外信令。在一个实例中,CPO系统可以使用信令(例如,信息传送),该信令可以不同于一个或多个反映的命令。在另一个实例中,可以经由互连(例如,结构互连)和/或外部链路传输CPO信号。例如,在一个或多个拥塞时段,高删除优先级命令可能不会成功广播到系统的处理节点,CPO系统使用的带外信令可以提供一种机制,该机制在数据处理系统的处理节点之间或之中提供信息传输和/或接收。
现在转到图11,示出根据一个或多个实施例的操作命令优先级超控主节点的方法。图11的方法在方框1115开始,其中速率主节点可以发送速率主节点命令。在方框1120,窥探调度器638判定是否接收到与在方框1115发送的速率主节点命令关联的重试删除(例如,“rty_drop”)。如果窥探调度器638在方框1120判定未接收到与速率主节点命令关联的重试删除,则窥探调度器638可以重设CPO重试删除计数(方框1125)并且重设CPO信号(方框1130)。之后,所述方法可以返回到已经描述的方框1115。
参考方框1120,如果窥探调度器638判定已接收与速率主节点命令关联的重试删除,则窥探调度器638可以在方框1135递增CPO重试删除计数。在方框1140,窥探调度器638判定重试删除计数是否处于阈值。如果不是,则图11的方法返回到已经描述的方框1115。但是,如果窥探调度器638判定重试删除计数处于阈值,则窥探调度器638在方框1145设置CPO信号。在一个或多个实施例中,设置CPO信号可以包括设置更改速率级别,这些级别可以包括在CPO信号中。例如,窥探调度器638可以设置能够包括在CPO信号中的速率级别(例如,在表Ⅱ中描述)。例如,窥探调度器638可以设置速率级别7(例如,最慢定步速率)。
在方框1150,窥探调度器638广播CPO信号。在一个实例中,当窥探调度器638用作组速率主节点时,窥探调度器638可以将CPO信号广播到其组。例如,窥探调度器638可以经由互连116A(在图1中示出),将CPO信号广播到一个或多个处理器单元112A2-112A4。在另一个实例中,当窥探调度器638用作系统速率主节点时,窥探调度器638可以将CPO信号广播到系统(例如,MP系统、处理节点的系统等)。在一个实例中,窥探调度器638可以经由互连120(在图1中示出),将CPO信号广播到处理节点110B-110D中的一个或多个。在另一个实例中,窥探调度器638可以经由互连330(在图3E中示出),将CPO信号广播到MP系统110B-110C中的一个或多个。在方框1150之后,图11的方法可以返回到方框1115。
现在转到图12,示出根据一个或多个实施例的操作命令优先级超控客户机的方法。图12的方法在方框1210开始,其示出窥探调度器638判定是否检测到CPO信号。在一个或多个实施例中,窥探调度器638可以是不同于图11的窥探调度器的窥探调度器。例如,如图12中使用的窥探调度器638可以是或者包括处理器单元和/或处理节点的窥探调度器。在一个实例中,窥探调度器638可以经由互连116A(在图1中示出)和/或经由多路复用器628(如在图6中示出)的“本地节点”输入,检测CPO信号。在第二实例中,窥探调度器638可以经由互连120(在图1中示出)和/或经由多路复用器628(如在图6中示出)的“远程节点”输入,检测CPO信号。在另一个实例中,窥探调度器638可以经由互连330(在图3E中示出),检测CPO信号。
如果窥探调度器638在方框1210判定检测到CPO信号,则窥探调度器638可以在方框1215判定是否将CPO信号提供给其它处理器单元。如果窥探调度器638在方框1215判定要将CPO信号提供给其它处理器单元,则窥探调度器638可以将CPO信号提供给其它处理器单元(方框1220)。例如,窥探调度器638可以将CPO信号提供给一个或多个其它处理器单元,例如处理器单元112A2-112A4(如在图1中示出)中的一个或多个。另一方面,如果窥探调度器638在方框1215判定未将CPO信号提供给其它处理器单元,则窥探调度器638可以在方框1225使用经由CPO信号传送的一个或多个CPO更改速率级别。
再次参考方框1210,如果窥探调度器638判定未检测到CPO信号,则窥探调度器638可以使用当前一个或多个更改速率级别,如在方框1230所示。在一个或多个实施例中,使用当前一个或多个更改速率级别可以包括不改变当前一个或多个更改速率级别。如图所示,图12的方法可以从方框1225或方框1230返回到方框1210。
在一个或多个实施例中,可以基于动态系统工作负载最大化性能和能源效率。例如,一个或多个处理器单元和一个或多个相应的高速缓存可以使用多个时钟频率操作。在较低时钟频率下操作可以比在较高时钟频率下操作更具能源效率。在一个或多个实施例中,可以降低命令速率以便适应处理器单元、高速缓存和一致性总线中的一个或多个的降低时钟频率。例如,减小命令速率可以防止过度运行在降低时钟频率下运行的处理器单元、高速缓存和一致性总线中的一个或多个。
在一个或多个实施例中,中央命令仲裁器和响应仲裁器可以通过针对每个处理器单元维护计数器,分别跟踪对于每个处理器单元而言进行中的命令和响应的数量。例如,当广播命令或响应时,递增每个启用的处理器单元的计数器。在一个或多个实施例中,如果计数器达到可编程阈值,则可以不再广播命令或响应。
在一个或多个实施例中,命令或响应可以跨越处理器单元的异步接口,并且可以广播到其它处理器单元。当发生这种情况时,处理器单元可以将返回信用提供回中央仲裁器,并且中央仲裁器可以递减计数器,这可以允许广播更多命令或响应。
在一个或多个实施例中,处理器单元可以支持最大数量命令。例如,中央仲裁器阈值可以是处理器单元能够支持的最大命令数量。例如,最大命令数量可以是16,相应地中央仲裁器的阈值可以是16。
在一个或多个实施例中,处理器单元能够支持的最大命令数量和中央仲裁器的阈值可以是可编程和/或可设置的。例如,当处理器单元频率减小时,可以降低默认阈值。例如,可以将默认阈值降低到12个、8个、4个等未处理的命令。
现在转到图13,示出根据一个或多个实施例的计时系统1300,该系统可以确定在基于动态系统工作负载最大化性能和能源效率的同时处理器单元能够支持的最大命令数量(例如,反映的命令阈值)。出于示例目的,在图13中示出异步(async)跨越1330,以便在逻辑上(例如,不一定在物理上)对计时系统1300的各部分进行划分。如图所示,被示出在异步跨越1330右边的高速缓存时钟域1360可以包括元件1310-1320,例如锁存器1310、1314、1316和1318以及异或(XOR)门1312和1320。被示出在异步跨越1330左边的静态时钟域1370可以包括元件1342-1356,例如锁存器1342、1344和1356、XOR门1346和1354以及有限状态机(FSM)1350,FSM 1350耦合到计时器1348和查找表1352。
在一个或多个实施例中,静态时钟域1370与静态时钟频率关联,而高速缓存时钟域1360可以与基于动态系统工作负载的可变时钟频率关联。例如,高速缓存时钟域1360可以与处理器单元频率(例如,核心频率)的一半关联,并且核心频率(例如,处理器单元的频率)可以从静态时钟频率的一半变化到静态时钟频率的两倍(加或减百分之十)。在该实例中,可以经由静态时钟频率控制静态时钟域1370的锁存器1342、1344和1356,并且可以经由高速缓存时钟频率(例如,核心频率的一半)控制高速缓存时钟域1360的锁存器1310、1314、1316和1318。
在一个或多个实施例中,计时系统1300可以确定在信号两次穿过异步跨越1330(例如,往返时间)时,经过(例如,使用)的时钟周期数量。例如,在一个或多个实施例中,FSM 1350从初始空闲状态开始,并且响应于从计时器1348接收到输入信号,转变为“更新输出”状态,其中FSM1350为查找表1352和XOR门1354提供输出。
响应于从FSM 1350接收到信号,XOR门1354经由锁存器1356将信号传输到高速缓存时钟域1360,信号通过高速缓存时钟域1360循环(并且可选地由诸如XOR门1312和1320之类的逻辑元件修改)。然后将在高速缓存时钟域1360中锁存和修改的信号在锁存器1342处返回到静态时钟域1370。在由XOR门1346和锁存器1344进一步修改之后,循环信号由计时器1348接收。
在一个或多个实施例中,计时器1348可以是或者包括计数器和/或时钟分频器,其可以对从XOR 1346接收的信号进行计数和/或划分。在一个实例中,计时器1348可以为查找表1352提供计数(例如,计数的位模式)。在另一个实例中,计时器1348可以为查找表1352和FSM 1350提供“完成的”信号。例如,“完成的”信号可以基于时钟分频器和/或计数器的溢出。这样,计时系统1300可以确定在来自静态时钟域1370的信号在高速缓存时钟域1360中时经过的时钟周期数量。
在一个或多个实施例中,查找表1352可以基于计时器1348和FSM1350提供的输入,提供反映的命令阈值。例如,查找表1352可以为结构命令仲裁器(例如,图6中所示的中央仲裁器634)提供反映的命令阈值,例如16、12、8和4,如在表Ⅲ中提供的那样。
表Ⅲ
现在转到图14,示出根据一个或多个实施例的在例如图13中所示的计时系统中确定反映的命令阈值的示例性方法。如在方框1410和1415所示,FSM 1350响应于从计时器1348接收分界信号而初始化自身。在一个或多个实施例中,与方框1410关联的分界信号可以指示FSM 1350能够转变为初始状态。例如,当计时器1348启动和/或当计时器1348溢出(例如,达到其计数器限制)时,计时器1348可以为FSM 1350提供分界信号。在初始化之后,FSM 1350转变为计数状态(方框1420)。
在方框1425,XOR逻辑单元1354为输出锁存器1356提供启动信号。例如,启动信号可以是或者包括测试信号模式。在一个或多个实施例中,启动信号可以基于来自FSM 1350的信号和XOR门1354的反馈信号。在方框1430,输出锁存器1356为高速缓存时钟域1360的输入锁存器1316提供启动信号。在一个或多个实施例中,当输出锁存器1356为输入锁存器1316提供启动信号时,启动信号穿过异步跨越1330而从第一时钟域到第二时钟域。例如,第一时钟域在第一频率下操作,并且第二时钟域在第二频率下操作,第二频率可以与第一频率相同或不同。在一个或多个实施例中,第一频率可以是静态频率,并且第二频率可以是高速缓存时钟频率。
在方框1435,经由多个锁存器和XOR门在高速缓存时钟域1360中处理启动信号以便获得启动脉冲信号。例如,如图13中所示,可以经由输入锁存器1316、锁存器1318、XOR门1320、锁存器1310、XOR门1312和输出锁存器1314处理启动信号。在方框1440,输出锁存器1314为静态时钟域1370的输入锁存器1342提供启动脉冲信号。在一个或多个实施例中,当锁存器1314为输入锁存器1342提供启动脉冲信号时,启动脉冲信号穿过异步跨越1330而从第二时钟域到第一时钟域。
在方框1445,输入锁存器1342、锁存器1344和XOR门1346处理启动脉冲信号以便获得结束脉冲信号。在方框1450,XOR门1346为计时器1348提供结束脉冲信号。在方框1455,计时器1348为FSM 1350和查找表1352提供分界信号。在方框1460,查找表1352确定在基于动态系统工作负载最大化性能和能源效率的同时处理器单元能够支持的最大命令数量(例如,反映的命令阈值)。在方框1465,查找表1352为中央仲裁器634提供确定的最大命令数量。
如上所述,在一个实施例中,数据处理系统包括互连、耦合到所述互连的多个处理节点以及结构控制器,所述结构控制器被配置为响应于经由所述互连从所述多个处理节点接收多个消息,经由缓冲器存储至少所述多个消息中的第一消息和所述多个消息中的第二消息。所述结构控制器还被配置为确定以下至少一个:所述多个消息中的第三消息所关联的优先级高于与所述第一消息关联的优先级,以及已经过超出与所述第一消息关联的第一到期时间的第一时间量。所述结构控制器还被配置为响应于所述确定,经由取代所述缓冲器中的所述第一消息而将所述第三消息存储在所述缓冲器中,并且将所述第一、第二和第三消息传输到至少一个处理器单元。
虽然参考一个或多个优选实施例具体示出并描述了本发明,但是所属技术领域中的技术人员将理解,在不偏离本发明的精神和范围的情况下,可以在其中做出各种形式和细节上的更改。

Claims (20)

1.一种在数据处理系统中的数据处理的方法,所述数据处理系统包括互连以及耦合到所述互连的多个处理节点,所述方法包括:
结构控制器经由所述互连从所述多个处理节点接收多个消息;
所述结构控制器经由缓冲器存储至少所述多个消息中的第一消息和所述多个消息中的第二消息;
确定以下至少一个:
所述多个消息中的第三消息所关联的优先级高于与所述第一消息关联的优先级;以及
已经过超出与所述第一消息关联的第一到期时间的第一时间量;
响应于所述确定,经由取代所述缓冲器中的所述第一消息而将所述第三消息存储在所述缓冲器中;以及
将所述第一、第二和第三消息传输到至少一个处理器单元。
2.根据权利要求1的方法,其中:
所述确定是第一确定;
所述方法还包括:
第二确定以下至少一个:
所述多个消息中的第四消息所关联的优先级不高于与所述第二消息关联的优先级;以及
未经过超出与所述第二消息关联的第二到期时间的第二时间量;以及
响应于所述第二确定,删除所述第四消息。
3.根据权利要求2的方法,还包括:
响应于删除所述第四消息,向所述互连提供指示已删除所述第四消息的删除消息。
4.根据权利要求2的方法,还包括:
响应于删除所述第四消息,存储指示已删除所述第四消息的删除消息。
5.根据权利要求1的方法,还包括:
检测所述缓冲器在存储至少所述第一消息和所述第二消息时处于满负荷;
其中响应于检测所述缓冲器处于满负荷,执行所述确定。
6.根据权利要求1的方法,其中所述互连包括互连结构。
7.根据权利要求1的方法,其中所述数据处理系统包括对称多处理器系统。
8.一种数据处理系统,包括:
互连;
耦合到所述互连的多个处理节点;以及
结构控制器,其被配置为:
响应于经由所述互连从所述多个处理节点接收多个消息,经由缓冲器存储至少所述多个消息中的第一消息和所述多个消息中的第二消息;
确定以下至少一个:
所述多个消息中的第三消息所关联的优先级高于与所述第一消息关联的优先级;以及
已经过超出与所述第一消息关联的第一到期时间的第一时间量;
响应于所述确定,经由取代所述缓冲器中的所述第一消息而将所述第三消息存储在所述缓冲器中;以及
将所述第一、第二和第三消息传输到至少一个处理器单元。
9.根据权利要求8的数据处理系统,其中所述结构控制器还:
确定以下至少一个:
所述多个消息中的第四消息所关联的优先级不高于与所述第二消息关联的优先级;以及
未经过超出与所述第二消息关联的第二到期时间的第二时间量;以及
响应于确定以下至少一个而删除所述第四消息:所述多个消息中的所述第四消息所关联的所述优先级不高于与所述第二消息关联的所述优先级,以及未经过超出与所述第二消息关联的所述第二到期时间的所述第二时间量。
10.根据权利要求9的数据处理系统,其中所述结构控制器还:
响应于删除所述第四消息,向所述多个处理节点中提供所述第四消息的处理节点提供删除消息,所述删除消息指示已删除所述第四消息。
11.根据权利要求9的数据处理系统,其中所述互连还:
响应于删除所述第四消息,存储指示已删除所述第四消息的删除消息。
12.根据权利要求8的数据处理系统,其中所述互连还:
检测存储至少所述第一消息和所述第二消息的所述缓冲器处于满负荷;
其中响应于检测所述缓冲器处于满负荷,所述互连做出所述确定。
13.根据权利要求8的数据处理系统,其中所述互连包括互连结构。
14.根据权利要求8的数据处理系统,其中所述数据处理系统包括对称多处理器系统。
15.一种互连结构的结构控制器,所述互连结构被配置为耦合到多个处理节点,并且被配置以便所述结构控制器:
响应于经由所述互连从所述多个处理节点接收多个消息,经由缓冲器存储至少所述多个消息中的第一消息和所述多个消息中的第二消息;
确定以下至少一个:
所述多个消息中的第三消息所关联的优先级高于与所述第一消息关联的优先级;以及
已经过超出与所述第一消息关联的第一到期时间的第一时间量;
响应于所述确定,经由取代所述缓冲器中的所述第一消息而将所述第三消息存储在所述缓冲器中;以及
将所述第一、第二和第三消息传输到至少一个处理器单元。
16.根据权利要求15的结构控制器,其中所述结构控制器还:
确定以下至少一个:
所述多个消息中的第四消息所关联的优先级不高于与所述第二消息关联的优先级;以及
未经过超出与所述第二消息关联的第二到期时间的第二时间量;以及
响应于确定以下至少一个而删除所述第四消息:所述多个消息中的所述第四消息所关联的所述优先级不高于与所述第二消息关联的所述优先级,以及未经过超出与所述第二消息关联的所述第二到期时间的所述第二时间量。
17.根据权利要求16的结构控制器,其中所述结构控制器还:
响应于删除所述第四消息,向所述多个处理节点中提供所述第四消息的处理节点提供删除消息,所述删除消息指示已删除所述第三消息。
18.根据权利要求16的结构控制器,其中所述结构控制器还:
响应于删除所述第三消息,将指示已删除所述第四消息的删除消息存储在第二缓冲器中。
19.根据权利要求15的结构控制器,其中所述结构控制器还:
检测存储至少所述第一消息和所述第二消息的第一缓冲器处于满负荷;
其中响应于检测所述缓冲器处于满负荷,所述结构控制器执行所述确定。
20.根据权利要求15的结构控制器,其中所述数据处理系统包括对称多处理器系统。
CN201410699712.7A 2013-12-20 2014-11-27 用于在多处理器数据处理中通信的系统和方法 Active CN104731758B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/137264 2013-12-20
US14/137,264 US9367504B2 (en) 2013-12-20 2013-12-20 Coherency overcommit

Publications (2)

Publication Number Publication Date
CN104731758A true CN104731758A (zh) 2015-06-24
CN104731758B CN104731758B (zh) 2017-12-01

Family

ID=53400186

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410699712.7A Active CN104731758B (zh) 2013-12-20 2014-11-27 用于在多处理器数据处理中通信的系统和方法

Country Status (2)

Country Link
US (2) US9367504B2 (zh)
CN (1) CN104731758B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106327559A (zh) * 2016-08-22 2017-01-11 苏州伟卓奥科三维科技有限公司 通信方法、数据处理方法和计算系统
CN107577625A (zh) * 2017-09-22 2018-01-12 算丰科技(北京)有限公司 数据处理芯片和系统、数据存储转发处理方法
CN107643991A (zh) * 2017-09-22 2018-01-30 算丰科技(北京)有限公司 数据处理芯片和系统、数据存储转发处理方法
CN113900973A (zh) * 2020-07-06 2022-01-07 美光科技公司 命令队列中的命令优先级排序

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10574788B2 (en) * 2016-08-23 2020-02-25 Ebay Inc. System for data transfer based on associated transfer paths
US10628313B2 (en) * 2017-05-26 2020-04-21 International Business Machines Corporation Dual clusters of fully connected integrated circuit multiprocessors with shared high-level cache
US10394636B2 (en) 2017-08-02 2019-08-27 International Business Machines Corporation Techniques for managing a hang condition in a data processing system with shared memory
US10642760B2 (en) 2017-08-02 2020-05-05 International Business Machines Corporation Techniques for command arbitation in symmetric multiprocessor systems
US11449489B2 (en) * 2017-11-09 2022-09-20 International Business Machines Corporation Split transaction coherency protocol in a data processing system
US20220197844A1 (en) * 2020-12-23 2022-06-23 Intel Corporation Bootstrapping circuit, sampling apparatuses, receiver, base station, mobile device and method of operating a bootstrapping circuit

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020146022A1 (en) * 2000-05-31 2002-10-10 Van Doren Stephen R. Credit-based flow control technique in a modular multiprocessor system
CN1545034A (zh) * 2003-11-26 2004-11-10 中国人民解放军国防科学技术大学 片内多处理器局部cache一致性的双环监听方法
US20100161770A1 (en) * 2008-12-22 2010-06-24 At&T Services, Inc. User-controlled network video management
US20130074088A1 (en) * 2011-09-19 2013-03-21 Timothy John Purcell Scheduling and management of compute tasks with different execution priority levels
CN103019838A (zh) * 2012-11-14 2013-04-03 清华大学 一种基于多dsp处理器平台的分布式实时多任务操作系统

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100537582B1 (ko) 2001-02-24 2005-12-20 인터내셔널 비지네스 머신즈 코포레이션 신규의 초병렬 수퍼컴퓨터
US7373462B2 (en) 2005-03-29 2008-05-13 International Business Machines Corporation Snoop filter for filtering snoop requests
US8065499B2 (en) 2006-02-22 2011-11-22 Oracle America, Inc. Methods and apparatus to implement parallel transactions
US8140771B2 (en) 2008-02-01 2012-03-20 International Business Machines Corporation Partial cache line storage-modifying operation based upon a hint
US7650488B2 (en) 2008-06-18 2010-01-19 Intel Corporation Communication between processor core partitions with exclusive read or write to descriptor queues for shared memory space
US8312219B2 (en) 2009-03-02 2012-11-13 International Business Machines Corporation Hybrid caching techniques and garbage collection using hybrid caching techniques
DE102009002007B3 (de) * 2009-03-31 2010-07-01 Robert Bosch Gmbh Netzwerkcontroller in einem Netzwerk, Netzwerk und Routingverfahren für Nachrichten in einem Netzwerk
US8364922B2 (en) 2009-12-21 2013-01-29 International Business Machines Corporation Aggregate symmetric multiprocessor system
US20130007376A1 (en) 2011-07-01 2013-01-03 Sailesh Kottapalli Opportunistic snoop broadcast (osb) in directory enabled home snoopy systems
US8775904B2 (en) 2011-12-07 2014-07-08 International Business Machines Corporation Efficient storage of meta-bits within a system memory

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020146022A1 (en) * 2000-05-31 2002-10-10 Van Doren Stephen R. Credit-based flow control technique in a modular multiprocessor system
CN1545034A (zh) * 2003-11-26 2004-11-10 中国人民解放军国防科学技术大学 片内多处理器局部cache一致性的双环监听方法
US20100161770A1 (en) * 2008-12-22 2010-06-24 At&T Services, Inc. User-controlled network video management
US20130074088A1 (en) * 2011-09-19 2013-03-21 Timothy John Purcell Scheduling and management of compute tasks with different execution priority levels
CN103019838A (zh) * 2012-11-14 2013-04-03 清华大学 一种基于多dsp处理器平台的分布式实时多任务操作系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
陈宏铭 等: "基于NUCA结构的同构单芯片多处理器", 《中国集成电路》 *

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106327559A (zh) * 2016-08-22 2017-01-11 苏州伟卓奥科三维科技有限公司 通信方法、数据处理方法和计算系统
CN106327559B (zh) * 2016-08-22 2019-03-19 苏州伟卓奥科三维科技有限公司 通信方法、数据处理方法和计算系统
CN107577625A (zh) * 2017-09-22 2018-01-12 算丰科技(北京)有限公司 数据处理芯片和系统、数据存储转发处理方法
CN107643991A (zh) * 2017-09-22 2018-01-30 算丰科技(北京)有限公司 数据处理芯片和系统、数据存储转发处理方法
CN107577625B (zh) * 2017-09-22 2023-06-13 北京算能科技有限公司 数据处理芯片和系统、数据存储转发处理方法
CN107643991B (zh) * 2017-09-22 2023-09-19 北京算能科技有限公司 数据处理芯片和系统、数据存储转发处理方法
CN113900973A (zh) * 2020-07-06 2022-01-07 美光科技公司 命令队列中的命令优先级排序

Also Published As

Publication number Publication date
US9367504B2 (en) 2016-06-14
US9367505B2 (en) 2016-06-14
US20150178205A1 (en) 2015-06-25
CN104731758B (zh) 2017-12-01
US20150178233A1 (en) 2015-06-25

Similar Documents

Publication Publication Date Title
CN104731733A (zh) 用于跨数据处理系统的接口的频率确定的系统和方法
CN104731758A (zh) 用于在多处理器数据处理中通信的系统和方法
US6279084B1 (en) Shadow commands to optimize sequencing of requests in a switch-based multi-processor system
US6249520B1 (en) High-performance non-blocking switch with multiple channel ordering constraints
CN104731757A (zh) 用于基于已删除命令确定命令速率的系统和方法
US9575921B2 (en) Command rate configuration in data processing system
US10437725B2 (en) Master requesting missing segments of a cache line for which the master has coherence ownership
US7451231B2 (en) Data processing system, method and interconnect fabric for synchronized communication in a data processing system
EP3788494B1 (en) Transfer protocol in a data processing network
US20080175272A1 (en) Data processing system, method and interconnect fabric for selective link information allocation in a data processing system
US11449489B2 (en) Split transaction coherency protocol in a data processing system
US20200042449A1 (en) Link-level cyclic redundancy check replay for non-blocking coherence flow
US7809004B2 (en) Data processing system and processing unit having an address-based launch governor
US10394636B2 (en) Techniques for managing a hang condition in a data processing system with shared memory
US10642760B2 (en) Techniques for command arbitation in symmetric multiprocessor systems
US7254694B2 (en) Processors interconnect fabric with relay broadcasting and accumulation of partial responses
US10606777B2 (en) Dropped command truncation for efficient queue utilization in multiprocessor data processing system

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant