增加在基于约束链路的多处理器系统中的输入输出中心的制作方法

文档序号:6484626阅读:116来源:国知局
增加在基于约束链路的多处理器系统中的输入输出中心的制作方法
【专利摘要】描述了涉及增加在基于约束链路的多处理器系统中的输入输出中心的方法和装置。在一个实施例中,第一输入输出中心(IOH)和第二IOH耦合链路互连以及多个处理器,耦合到所述第一和第二IOH的处理器包括为单个IOH预分配的资源。还公开并要求保护其他实施例。
【专利说明】增加在基于约束链路的多处理器系统中的输入输出中心
【技术领域】
[0001]本公开一般涉及电子领域。更具体地,一些实施例涉及增加在基于约束链路的多处理器系统中的输入输出中心。
【背景技术】
[0002]中央处理单元(CPU)可经由输入输出中心(IOH)与输入/输出(IO)设备通信。某些CPU可能由于例如缺乏资源而只能够支持单个Ι0Η。在这样的系统中,该问题可能会降低性能,减少IO吞吐量,增加IO延迟,等等。
【专利附图】

【附图说明】
[0003]将参考附图提供详细描述。在附图中,参考标记最左边的数字表示参考标记第一次出现的附图。不同的附图中使用相同的标记指示类似或相同的项。
[0004]图1图示出根据实施例的计算系统的框图。
[0005]图2和图4-5图示出根据一些实施例的具有多个IOH的计算系统的框图。
[0006]图3图示出根据实施例的附加IOH的内容的框图。
【具体实施方式】
[0007]在以下的描述中,阐述了许多具体细节以便提供对各种实施例的透彻理解。但是,可以在没有这些具体细节的情况下实施本发明的一些实施例。在其它实例中,没有详细地描述已知的方法、过程、部件和电路,以便不模糊特定的实施例。可以使用各种手段,例如半导体集成电路(“硬件”)、组成一个或多个程序的计算机可读指令(“软件”)或硬件和软件的某种组合,来执行本发明的实施例的各个方面。为了该公开的目的,提及“逻辑”应当是指硬件、软件或其某种组合。
[0008]本文所讨论的一些实施例可提供具有成本效益的、高性能的和/或平衡的解决方案,来增加基于链路的多处理器系统中的输入输出中心(IOH)的数量。例如,这样的技术可用在CPU(本文中可互换地称作“处理器”)没有能力支持额外数量的IOH或没有资源去添加更多IOH的情况。在实施例中,每个处理器可包括一个或多个处理器内核。此外,在实施例中,一个或多个处理器内核和本文讨论的多个IOH可能存在于单个集成电路(IC)管芯中。
[0009]本文讨论了关于计算系统部件的各种实施例,如这里讨论的例如参照图1-5的部件。更具体地,图1图示出根据本发明的实施例的计算系统100的框图。系统100可包括一个或多个代理102-1至102-M(本文中统称为“多个代理102”或更一般地称为“代理102”)。在实施例中,代理102可以是计算系统(如本文所讨论的系统)的部件。
[0010]如图1所示,代理102可经由网络结构104进行通信。在实施例中,网络结构104可包括一个或多个互连(或互连网络),它们经由串行(如,点对点)链路和/或共享通信网络进行通信。例如,一些实施例可便于允许与全缓冲双列直插存储器模块(FBD)通信的链路上的部件调试或验证,例如,其中FBD链路是用于将存储器模块耦合到主机控制器设备(例如处理器或存储器中心(memory hub))的串行链路。调试信息可从FBD通道主机传送,从而可以通过通道流量跟踪捕获工具(例如一个或多个逻辑分析器)沿通道观测调试信息。
[0011]在一个实施例中,系统100可支持分层协议方案,其中可包括物理层、链路层、路由层、传输层、和/或协议层。对于点对点网络,结构104可进一步促进从一种协议(例如,高速缓存处理器或高速缓存感知存储器控制器)到另一种协议的数据(例如,呈分组形式)的传输。此外,在一些实施例中,网络结构104可提供遵守一个或多个高速缓存一致性协议的通信。
[0012]另外,如图1中箭头方向所示,代理102可经由网络结构104传送和/或接收数据。因此,一些代理可利用单向链路,而其他代理可利用双向链路进行通信。例如,一个或多个代理(如代理102-M)可传送数据(例如,经由单向链路106),其他代理(如代理102-2)可接收数据(例如,经由单向链路108),而某个(某些)代理(如代理102-1)可即发送又接收数据(例如,经由双向链路110)。
[0013]此外,根据实施例,一个或多个代理102可包括一个或多个10H120,如将例如参照图2进一步讨论的。
[0014]更具体地,图2是根据实施例的计算系统200的框图。在实施例中,基于快速路径互连(QPI)的系统可用在图2的系统中。一般地,QPI是链路互连,用于耦合系统中的代理(如参照图1所讨论的代理)。通过QPI耦合的代理可具有QPI代理的特征。QPI链路是一种分层架构。称为“链路层”的层为信息传输(系统中的代理之间)实现每个消息类信用机制,并且如果有足够的缓冲区的话,在接收端保存接收到的消息。即使QPI被用来描述各种实施例,本发明的实施例并不限于QPI,并且任何类型的链路或点对点(如,串行)的互连都可被使用。
[0015]如图2所示的实施例中,每个CPU代理有2个QPI链路。IOH代理(如,IOHO和IOHl)有2个QPI链路、以及在另一侧通过PCIe信道接口(外设部件互连标准快速?(PCIe)互连(依照PCI Express?规范基本规范2.0版本(2007年I月17日发布))耦合的输入/输出设备。在实施例中,一个或多个IOH代理可能还有一些其他的加速技术合并在一些实施例中。
[0016]一般来说,一个QPI需求是指:CPU代理需要为系统中可从从其收到请求的每个QPI代理预分配资源。例如,传入请求跟踪器(IRT)就是这样一种用于跟踪传入请求的预分配的资源。在目前的一些实现中,CPU设计可具有为两个更多的QPI代理(一个IOH和一个CPU代理)预分配的资源。单个IOH代理可能有用于系统中所有的QPI代理的共享资源池。任何QPI代理接收到的请求可由元组〈发送者NodelD,发送者RequestID〉标识。一般地,QPI发送者发送给CPU的请求数量可能不会超过接收CPU预分配给发送者的资源。在一些实施例中,CPU可能不具备通过硬件的路由以从一个QPI链路传递请求或消息至其他QPI链路。QPI代理可能将请求发送到系统中的任何其他QPI代理。
[0017]此外,单个IOH可被命名为Ι0Η0,其NodeID=O,其在ORBO中处理链路LO (绑定CPU0)上的未完成请求并具有NI个条目。IOHO可在ORBl中处理链路LI (绑定CPUl)上的未完成请求并具有N2个条目。每个CPU依次耦合到再多一个的CPU和Ι0Η0。此外,单个IOH可被耦合到CPUO和CPUl。
[0018]在具有单个IOH的示例性系统中,如果需要再多一个IOH (如,增加输入输出设备的总数或由IOH提供的其他平台级的特征),可能不会使用额外的Ι0Η,在某种程度上是由于以下三个主要原因:(I)通过再添加一个10H(QPI代理),因为QPI协议的预分配要求,所以需要在CPU中增加资源(诸如IRT跟踪器);(2) CPU可能仅能识别出两个更多的结点ID,因此将不能识别出新添加的QPI代理;以及(3) CPU可能只有两个链路,且再添加一个IOH可能需要CPU中有通过路径的路由。其结果是,添加这些特征可能需要CPU硬件的重大改变,这可能是非常昂贵的。
[0019]为此,一个实施例通过改变IOH来添加一个或多个Ι0Η。该解决方案可以利用现有的IOH硬件并增加额外的逻辑,这相对于改变CPU设计来说较便宜,详见下文。
[0020]更具体地,参照图2,示出了基于QPI链路的多处理器系统,在现有的IOH硬件上添加了第二个Ι0Η。在一些实施例中,利用本文讨论的技术可以添加多于一个Ι0Η。在图2的系统中,有两个CPU代理,命名为CPUO和CPUl,其NodeID分别是I和2。CPUO有NI个保留的为IOHO预分配的IRT条目,CPUl有N2个为IOHO预分配的IRT条目。名为IOHO和IOHl的两个IOH可能共享同一 NodeIDO。CPUO耦合到CPUl和Ι0Η0,且仍有仅为具有NodeID为O的单个IOH预分配的IRT资源。这里假设CPUO只有一个Ι0Η。CPUl耦合到CPUO和IOHl,且仍有仅为具有NodeID为O的单个IOH预分配的IRT资源。这里假设CPUl只有一个Ι0Η。IOHO和IOHl使用它们的QPI链路(LO)耦合到一个CPU (这里分别为CPUO和CPUl)。IOHO和IOHl的第二链路(LI)用来将这两个IOH彼此耦合,如图所示。
[0021]图3图示出根据实施例的部件和添加的IOH (如,参考图2讨论的10H1)内部的耦合的框图。以下根据一些实施例,罗列了一些IOHO的细节,同样,相似的细节也可用于解释IOHl:
[0022]1.主ORB或ORBO:在基于单个IOH的系统中,ORBO用来存储/处理来自PCIe代理且目标为CPUO的请求。在基于两个IOH的系统中,ORBO可能处理绑定到本地耦合的CPU(SP,CPU0)的全部请求。这可能包括源自本地PCIe代理的请求以及源自远程IOH (在这个例子中是IOHl)的请求。
[0023]a.0RBO仍然有与CPUO中为IOH (NodeID=O)预分配的IRT资源相等的大量条目。
[0024]b.这些可用的ORB被在本地PCIe请求和来自远程IOH的请求之间共享。
[0025]2.从ORB或ORBl:在基于单个IOH的系统中,ORBl用来存储/处理来自PCIe代理且目标为CPUl的请求。在基于两个IOH的系统中,ORBl处理来自本地PCIe代理且绑定到远程CPU (即,CPUl)和远程IOH (即,IOHl)的请求。
[0026]a.0RBl可能有比远程CPUl能够为IOH (NodeID=O)预分配的(N2个条目)多的条目(N3)。在一些实施例中,“归属” IOH负责确保这种超额预订(over-subscription)不会超过CPU的预分配限制和/或万一不幸检测到死锁时,确保事务不会死锁,计时器清除它所拥有的所有未完成的闻速缓存行。
[0027]3.RIQ:存在称为“远程IOH请求队列(RIQ)”的队列,其临时存储/保存来自远程IOH (IOHl)且目标为CPUO的请求。这个队列中的条目数可等于IOHl中的ORBl的条目数。这允许远程IOH (IOHl)中的ORBl具有多于本地ORBO的条目,从而隐藏远程请求处理的延迟。
[0028]4.MUXl:复用器选择逻辑(MuxI)选择来自本地PCIe代理和RIQ的请求。
[0029]5.1RH 传入QPI请求处理机”(IRH)用于存储/处理源自系统中任何其他QPI代理且目标为该IOH的QPI请求。它可能具有用于所有请求代理的共享资源。
[0030]6.路径R3是用于所有请求类型的请求路径,其从主ORB到耦合到本地CPU的QPI链路(即链路L0)。
[0031]7.路径R4:这是用于针对主ORB发送的请求接收自本地CPU的所有应答的路径。
[0032]8.路径R6和R9:R6是用于所有本地起源的请求且目标为远程IOH或远程CPU的路径。R9是用于针对通过R6发送的请求接收自远程IOH或CPU的应答的路径。
[0033]9.路径R7、R71用于源自远程IOH且目标为CPUO的所有请求。
[0034]10.路径R8用于针对通过用于远程IOH发起请求的响应R7路径接收的请求的所有应答的路径。
[0035]11.路径R13是通过从链路LO到链路LI的路径的路由,用于本地CPU (CPUO)发起且目标为远程IOH (IOHl)的所有请求。
[0036]12.路径R16:该路径用于通过从LI到LO的路径的响应路由,针对在本地CPU(CPUO)发起且目标为远程IOH (IOHl)的请求。
[0037]在一些实施例中,这些技术可被缩放。此外,所解释的实施例用于:在双CPU单IOH系统中添加第二 Ι0Η,此处CPU没有通过跨链路的路径的路由,并且需要预分配资源来处理来自其他QPI代理的请求。这也可以被缩放为以下架构:为单IOH的单CPU添加额外的Ι0Η。例如,如果存在一个具有上面解释的架构的CPU,且除此之外,如果CPU或IOH具有一些约束,从而IOH可能仅被耦合到CPU的一个链路,那么,类似的技术可被用于再添加一个IOH至如图4所示的这类系统。
[0038]在一些实施例中可能提供:添加m个额外的IOH至具有η个CPU和m个IOH的系统中,例如,在具有η个CPU代理和m个IOH代理的系统中,其中n,m>2。由于CPU的数目很多,系统可能会需要具有多QPI链路的CPU,及CPU中的支持跨链路的路由。
[0039]根据实施例,如果CPU的预分配资源已耗尽,且系统中没有范围添加更多的Ι0Η,则m个更多的IOH可能会耦合。这在图5中示出。每对耦合的IOH可能被表示为一个Ι0Η,且在每对IOH里一个IOH可能将请求的目标定为一组CPU,而另一个IOH将请求的目标定为其余的CPU。相应地,一些实施例可能在QPI平台中再添加一个Ι0Η,而无需CPU知道和支持,并且无需任何对CPU的设计要求。因此,基于QPI的设计可以提供代理能力来隐藏另一个QPI代理。此外,在CPU210H和10H210H之间可以处理多个QPI域。这可能涉及增加新QPI事务流,例如,QPI规范中未提到。例如,微架构的实施例可以通过这种方式提供:以如上所述使用相同的NodeID的两个Ι0Η,保持单个IOH功能不变。其结果是,每个IOH对远程CPU来说都是隐藏的,但对本地CPU是可见的。CPU可能仍然拥有它们自己的路由来与彼此进行交互。反过来,IOH到IOH的QPI链路可能用于IOH之间的通信。还需要注意的是在本发明的一些实施例中,两个或更多个IOH可通过菊花链连接,在菊花链的端部任一或两个IOH耦合到一个或两个CPU。
[0040]本文可以利用各种存储设备(如图2-4所示的存储器)来存储数据(包括指令)。例如,存储设备可包括易失性和/或非易失性存储器(或存储设备)。非易失性存储器可以包括以下中的一个或多个:只读存储器(ROM)、可编程R0M( PROM)、可擦除PR0M( EPROM)、电EPROM(EEPROM)、磁盘驱动、软盘、压缩磁盘ROM (⑶-ROM)、数字多功能盘(DVD )、闪速存储器、磁光盘、或能够存储电子数据(例如,包括指令)的其它类型的非易失性机器可读介质。易失性存储(或存储器)设备可包括随机存取存储器(RAM)、动态RAM (DRAM)、同步DRAM (SDRAM)、静态RAM(SRAM)、或其他类型的存储设备。此外,参照图1-5讨论的各种部件可以通过计算机网络(例如,经由调制解调器、网络接口设备、或其他通信装置)与其他部件进行通信。
[0041]在本发明的各种实施例中,本文讨论的操作(例如参照图1-5)可以被实现为硬件(例如,电路)、软件、固件、微码或其组合,可以将其作为计算机程序产品来提供,例如包括(例如,非瞬态的)机器可读介质或(例如,非瞬态的)计算机可读介质,其上存储有指令(或软件程序),所述指令用于对计算机编程以执行本文讨论的过程。另外,术语“逻辑”可包括,通过举例的方式,软件、硬件或软件和硬件的组合。机器可读介质可以包括存储设备,例如本文所讨论的那些。此外,这种计算机可读介质可以作为计算机程序产品被下载,其中,可以从远程计算机(例如,服务器)例如经由通信链路(例如,总线、调制解调器或网络连接)通过数据信号的方式将程序传输到请求计算机(例如,客户端)。
[0042]在说明书中提及的“一个实施例”或“一实施例”表示结合所述实施例描述的特定特征、结构或特性可以被包括在至少一个实现中。在说明书中各处出现的短语“在一个实施例中”可以或可以不都指代同一实施例。
[0043]此外,在说明书和权利要求书中,可以使用术语“耦合”与“连接”以及它们的派生词。在本发明的一些实施例中,“连接”可以用于指示两个或更多个元件彼此直接物理或电接触。“耦合”可以指两个或更多个元件直接物理或者电接触。但是,“耦合”还可以指两个或更多个元件可以并不是彼此直接接触,但仍可以彼此协作或交互。
[0044]因此,尽管已经以特定于结构特征和/或方法动作的语言描述了本发明的实施例,但是应当理解,所要求保护的主题可以并不限于所描述的特定特征或动作。而是,特定特征和动作被公开作为实现所要求保护的主题的示例形式。
【权利要求】
1.一种装置,包括: 第一输入输出中心(IOH); 第二 Ι0Η,其经由第一链路互连耦合到所述第一 Ι0Η,其中,所述第一 IOH和所述第二IOH共享单个结点标识符,所述标识符被多个处理器使用,并且其中,所述多个处理器包括为单个IOH预分配的资源。
2.如权利要求1所述的装置,其中,所述第一IOH包括远程IOH请求队列(RIQ),所述远程IOH请求队列用于临时存储来自远程IOH的请求。
3.如权利要求1所述的装置,其中,所述第一IOH包括传入请求处理机(IRH),所述传入请求处理机用于处理源自任何其他代理且目标为所述第一 IOH的请求。
4.如权利要求1所述的装置,其中,所述第一IOH包括:第一请求处理机,对应于所述多个处理器中的第一处理器;以及第二请求处理机,对应于所述多个处理器中的第二处理器。
5.如权利要求4所述的装置,其中,所述第一请求处理机或所述第二请求处理机包括未完成请求缓冲区(0RB),所述未完成请求缓冲区用于存储来自代理且目标为所述第一或第二处理器的请求。
6.如权利要求1所述的装置,其中,所述预分配的资源包括传入请求跟踪器(IRT),所述传入请求跟踪器用于跟踪在所述装置的每个代理处的传入请求。
7.如权利要求1所述的装置,其中,所述多个处理器中的每一对都经由第二链路互连耦合。
8.如权利要求1所述的装置,还包括链路层,所述链路层实现用于多个代理间信息传输的每一个消息类信用机制。
9.如权利要求1所述的装置,其中,所述第一链路互连包括快速路径互连(QPI)。
10.如权利要求1所述的装置,其中,所述多个处理器中的一个或多个包括一个或多个处理器内核。
11.如权利要求1所述的装置,其中,所述第一Ι0Η、所述第二 IOH以及所述多个处理器在同一集成电路管芯上。
12.—种方法,包括: 经由第一链路互连将第一 IOH耦合到第二 IOH ; 所述第一 IOH和所述第二 IOH共享单个结点标识符以供多个处理器使用, 其中,所述多个处理器包括为单个IOH预分配的资源。
13.如权利要求12所述的方法,还包括:将来自远程IOH的请求临时存储在远程IOH请求队列(RIQ)中。
14.如权利要求12所述的方法,还包括:将来自代理且目标为所述多个处理器的请求存储在未完成请求缓冲区(ORB)中。
15.如权利要求12所述的方法,其中,所述预分配的资源包括传入请求跟踪器(IRT),用于跟踪在每个代理处的传入请求。
【文档编号】G06F15/80GK103493031SQ201180069873
【公开日】2014年1月1日 申请日期:2011年12月21日 优先权日:2011年3月2日
【发明者】D·D·夏尔马, C·P·乔希, G·拉贾马尼 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1