CN104426814B - Numa节点外围交换机 - Google Patents

Numa节点外围交换机 Download PDF

Info

Publication number
CN104426814B
CN104426814B CN201410437326.0A CN201410437326A CN104426814B CN 104426814 B CN104426814 B CN 104426814B CN 201410437326 A CN201410437326 A CN 201410437326A CN 104426814 B CN104426814 B CN 104426814B
Authority
CN
China
Prior art keywords
pcie
switch
nic
address
node
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.)
Active
Application number
CN201410437326.0A
Other languages
English (en)
Other versions
CN104426814A (zh
Inventor
P·康纳
M·A·贾里德
D·C·洪
E·M·卡普勒
C·帕夫拉斯
S·P·杜巴尔
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 CN104426814A publication Critical patent/CN104426814A/zh
Application granted granted Critical
Publication of CN104426814B publication Critical patent/CN104426814B/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/4022Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Multi Processors (AREA)
  • Information Transfer Systems (AREA)
  • Bus Control (AREA)

Abstract

采用多对多和多对一外围交换机的方法、装置和计算机平台和体系结构。方法和装置可在具有多个节点的如采用NUMA体系结构的计算机平台上实现,每个节点包括多个部件,其包括具有至少一级存储器高速缓存并操作地耦合到系统存储器和多对多或多对一外围交换机的处理器,多对多外围交换机包括操作地耦合NIC和/或外围扩展槽的多个下游节点,多对一交换机使多个节点共享外围设备。在操作期间,在NIC处接收分组,使用识别目的地存储器地址的存储器写事务发起DMA存储器写。多对多和多对一外围交换机基于目的地地址在交换机内内部地转发事务分组,使得分组被转发到经由其能访问存储器地址的节点。平台体系结构还可配置成响应于节点的故障或更换来支持迁移操作。

Description

NUMA节点外围交换机
技术领域
本发明领域通常涉及计算机体系结构,且更具体地但不排他地涉及在计算机系统内部使用多对多和多对一的外围交换机的方法、装置和计算机平台以及体系结构。
背景技术
对计算机网络的访问变成当今计算机使用的普遍存在部分。不管是访问在企业环境中的局域网(LAN)以访问共享网络资源还是经由LAN或其它接入点访问互联网,看起来用户总是登录到经由计算机网络访问的至少一个服务。而且,基于云的服务的快速扩展导致计算机网络的甚至进一步使用,且这些服务被预测变得更普遍。
网络用途的扩展(特别是经由基于云的服务)经由网络带宽和处理器能力的大量增加而被促进。例如,宽带网络主干一般支持每秒10吉比特(Gbps)或更大的带宽,而当今的个人计算机的标准是设计成支持1Gbps以太网链路的网络接口。在处理器侧上,处理器能力通过较快的时钟速率和多于一个处理器核心的使用而增加。例如,当今的PC一般使用双核处理器或四核处理器,而服务器可使用具有甚至更多核心的处理器。对于一些种类的服务器,使用多个处理器来增强性能是常见的。此外,可以设想很多(如果不是大部分),未来处理器性能增加将从使用较大数量的核心的体系结构产生,以及未来服务器可使用较大数量的处理器。
在计算机系统中,一般通过使用网络接口控制器(NIC)(例如以太网NIC)而促进网络访问。在近年来,服务器NIC被设计成支持多核、多处理器平台体系结构的很多优化。这些优化包括接收端调节(RSS)和应用靶向路由(ATR)。这些优化在现有技术前侧总线(FSB)平台体系结构周围被设计,如图1所示。
更详细地,图1描绘了对称多处理(SMP)平台的简化前侧总线体系结构图。该体系结构包括耦合到前侧总线(FSB)102的多个处理器100。耦合到FSB102的还有北桥104,其又耦合到存储器106、高带宽输入/输出(I/O)接口(如平台部件快速互连(PCIe)x8接口108所描绘的)和南桥110。南桥110一般配置成与各种平台I/O设备和外围设备接口,例如由PCIex4接口112和114描绘的。
在这个传统体系结构下,网络接口控制器经由PCIe接口附接到北桥104或南桥110,如NIC116和118所描绘的。在任一情况下,NIC经由北桥104与一致存储器106通信。所有处理器100也经由北桥104访问存储器106。RSS和ATR的实现跨越核心而分布网络工作负荷,且虽然考虑了高速缓存影响,但主要目标是工作负荷分布。
处理器体系结构也在近年来改变了,从分立部件朝着高集成方法移动。例如很多年来,利用FSB的有线(例如板迹线)互连和在北桥和南桥之间的互连使用对北桥104和南桥110在物理上分开的芯片来实现北桥、南桥体系结构。在当今的处理器所采用的一般高集成设计的情况下,使用一个或多个处理器核心的处理器和提供稍微类似于北桥和南桥的功能的逻辑集成在具有嵌入芯片中的相应互连布线的单个芯片上。在这个高度集成的体系结构下,处理器核心被称为“核心”,且处理器电路的其余部分被称为“非核心”。
附图说明
本发明的前述方面和很多伴随的优点将变得更容易领会,因为在结合附图时通过参考后续详细描述其将变得更好理解,其中相似的参考数字在各视图中指相似的部件,除非另有规定:
图1是常规对称多处理器平台体系结构的示意图;
图2是进一步描绘在常规方法下处理分组的NUMA平台体系结构的示意图;
图3是根据一个实施例的使用多对多PCIe交换机的NUMA平台体系结构的示意图;
图3a是根据一个实施例的使用多对多PCIe交换机并包括用于每个NUMA节点的两个上行链路的NUMA平台体系结构的示意图;
图3b是根据一个实施例的使用多对多外围交换机的NUMA平台体系结构的示意图;
图3c是根据一个实施例的使用多对一外围交换机的NUMA平台体系结构的示意图;
图4是一般PCIe体系结构的图;
图5是示出PCIe堆栈的层和在每层处的分组组装/分解的细节的图;
图6是示出根据一个实施例的多对多PCIe交换机的逻辑交换方面的示意图;
图7是示出根据一个实施例的多对多PCIe交换机的内部结构和逻辑的示意图;
图7a是示出根据一个实施例的使用专用于网络业务的一对逻辑交换机的图7的体系结构的增强版本的示意图;
图7b是示出根据一个实施例的多对一PCIe交换机的内部结构和逻辑的示意图;
图8是示出根据一个实施例的用于列举与PCIe交换机相关联的PCIe层级的操作和逻辑的流程图;
图9是示出根据一个实施例的NIC、多对多PCIe交换机和关于执行PCIe TPL存储器写事务的NUMA节点A和B的系统存储器的部分的细节的示意图;
图10是示出根据一个实施例的在平台运行时间期间执行用来产生多对多PCIe交换机的NIC过滤器/规则和地址映射表条目的操作的流程图;
图11是示出根据一个实施例的与结合图10的体系结构处理网络分组和DMA写操作有关的操作的流程图;
图12是根据一个实施例的多NIC/多对多PCIe交换机的示意图;
图13是根据一个实施例的使用多对多PCIe交换机的四NUMA节点体系结构的示意图;
图13a是图13的四NUMA节点体系结构的示意图,在该体系结构下用于节点D的处理器节点板被移除;以及
图14是示出根据一个实施例的结合处理器节点板的移除和更换而执行的操作的流程图。
具体实施方式
本文描述了使用多对多和多对一外围交换机的方法、装置和计算机平台以及体系结构的实施例。在下面的描述中,阐述了很多特定的细节(例如使用PCIe相关部件和操作的实施例)来提供对本发明的实施例的彻底理解。然而相关领域中的技术人员将认识到,可在没有一个或多个特定细节的情况下或使用其它方法、部件、材料等实施本发明。在其它实例中,没有详细示出或描述公知的结构、材料或操作以避免使本发明的方面难理解。
在整个这个说明书中对“一个实施例”或“实施例”的提及意指关于实施例描述的特定特征、结构或特性包括在本发明的至少一个实施例中。因此,短语“在一个实施例中”或“在实施例中”在整个这个说明书中的不同地方中的出现并不一定都指同一实施例。此外,特定特征、结构或特性可以用任何适当的方式组合在一个或多个实施例中。
图2示出非一致存储器访问(NUMA)多处理器平台体系结构200,其使用两个NUMA节点202a和202b,也被标记为“A”和“B”。为了简单和方便起见,在本文中对节点的提及可以是它们的字母标记而不是它们的参考数字。此外,可用基本参考数字提及在节点当中共有的部件,同时字母“a”、“b”将被添加到附图中的参考数字以识别在特定节点上的部件。例如,节点A和B中的每个包括处理器204,其对于节点A的处理器被标记为204a而对于节点B的处理器被标记为204b。
除了处理器204以外,每个节点还包括系统存储器206、NIC208和多个PCIe槽1-N,其中可安装相应的PCIe卡(未示出)。每个处理器204包括核心部分,其包括多个处理器核心210,每个处理器核心包括局部1级(L1)和2级(L2)高速缓存。处理器的其余部分被称为非核心,包括用于连接处于通信中的在处理器上的各种功能块的各种互连电路和接口。为了简单起见,这个互连电路被描绘为互连212;然而,将理解,互连212可代表一个或多个互连结构,例如总线和单道或多道串行点对点或网状互连结构。
非核心电路的一部分配置成在图1的传统体系结构下处理很多北桥功能,包括存储器控制和设备的PCIe接口,例如NIC。在图2中的处理器非核心中描绘的相应示例性功能块包括PCIe接口(I/F)214、PCIe根复合体(RC)215、最后一级高速缓存(LL高速缓存)216、存储器控制器(MC)217、以及插口到插口链路接口(S到S I/F)218。除了这些所示的块以外,每个处理器204还包括为了清楚起见而没有示出的很多其它功能块。
每个处理器204经由插口操作地耦合到被称为主板220的印刷电路板,或否则经由直接耦合技术(例如倒装式接合)耦合到主板。在任一情况中,通常的实践是将处理器本身称为插口,以及因此使用术语“插口到插口链路”和“接口”用于耦合处于通信中的处理器节点。主板220包括电布线(例如迹线和通孔)以便于对应于在图2中描绘的各种互连的物理结构的电连接。这些互连包括在PCIe接口214和NIC208之间的PCIe互连222、在PCIe接口214和PCI槽1-N之间的互连224和225、以及耦合在插口到插口接口218a和218b之间的插口到插口链路226。在一个实施例中,插口到插口接口218a和218b使用因特尔快速路径互连协议和布线结构。
在NUMA体系结构下,处理器(和处理器核心)被启用以访问跨越平台分布的不同存储器资源。存储器资源可被考虑为局部存储器资源(例如,在与处理器或核心相同的节点上的存储器资源)或非局部存储器资源(例如,在其它节点上的存储器资源)。例如,在节点202a的观点下,系统存储器206a包括局部存储器资源,而系统存储器206b包括非局部存储器资源。在另一类型的NUMA体系结构(在本文没有描绘)下,非局部存储器资源也可在处理器之间被共享,而不与特定的处理器或节点相关联。因为对于给定节点,局部存储器资源操作地耦合到处理器,而非局部存储器资源没有耦合到处理器,对局部存储器资源的访问相对于非局部存储器资源不是相同的(例如访问是不一致的)。而且,当可用时使用局部存储器资源是优选的。
在平台体系结构200下,在一个节点中的处理器核心上运行的软件可被分配名义上与另一节点相关联的系统存储器中的存储器地址空间。因此,在一些实施例下,平台的存储器资源的一部分的地址空间可被管理为单个全局池,对池内的每个存储器地址位置有唯一的地址。此外,地址空间的一部分可被考虑为使用局部寻址的局部地址空间(例如分配到操作系统的地址空间),而另一部分可使用全局寻址来被寻址。
根据NUMA体系结构的另一方面,网络端口(和因而相关联的NIC)可被分派到在与所分派的端口相关联的节点不同的节点上的处理器(或处理器核心)上运行的软件应用。当分配到软件应用的存储器在与处理器相同的节点上时,接收分组的NIC和分组将被写入的预定存储器资源在分离的节点上。
如公知的,NIC配置成使用相应的网络协议(例如在图2中描绘的以太网协议)向接口提供计算机网络。在一般实现下,每个NIC与在逻辑上位于OS内核中的操作系统(OS)NIC(设备)驱动器相关联。NIC驱动器用作在操作系统软件和NIC之间的抽象接口,NIC是硬件设备。例如,NIC驱动器可提供对NIC上的寄存器的访问,提供对NIC的程序接口,等等。NIC驱动器还便于处理经由分组接收到的数据以及将其从网络转发到该数据的消费者,例如软件应用。例如,在常规使用下,分组在NIC输入端口处被接收并缓存在输入缓冲器中,然后被复制到在由操作系统分配到NIC驱动器的系统存储器中的存储器缓冲器。此外,分组数据的处理也可由NIC驱动器执行。
在NUMA体系结构下,可能存在这样的实例,其中经由计算机网络在第一节点上的NIC处接收到的分组需要被写入到与另一节点相关联的系统存储器或存储器高速缓存,如上面讨论的。这样的情况在图2中示出,图2进一步示出在常规方法下如何处置对应于分组228的数据,分组228由NIC在第一节点处接收但包含将被写入到第二节点上的系统存储器或高速缓存的数据。在图2所示的例子中,每个NIC A和B经由相应的以太网链路230连接到网络232。为了方便起见,网络232被示为两个单独的云;然而将理解,这些代表到同一网络的连接。可选地,在本文的附图中对单独的云的描绘可被解释为识别到单独的网络的连接,而不考虑是否使用同一参考数字来描绘它们。
通过由图2中的圈住的数字所描绘的相应操作,如下继续进行分组228的处置。首先,分组经由以太网链路230a在NIC208a的输入端口处被从网络232接收,被缓存(例如临时存储)在输入缓冲器中,并被分类和/或否则分组数据将被写入到的存储器地址被确定。在第二操作期间,分组228的分组数据随后从输入缓冲器复制并使用DMA(直接存储器存取)写操作写到系统存储器206a。这涉及使用PCIe存储器写事务经由互连212a将对应于经由PCIe链路222a和PCIe接口214a来自NIC208a的分组的分组数据转发到存储器控制器216a。存储器控制器216a接着将分组数据写到系统存储器206a,如在操作2a处描绘的。可选地,分组数据被写到LL高速缓存214a,如操作2b所描绘的。使用DMA写操作使存储器写能够独立于操作系统而被执行。
如在联网领域中的技术人员理解的,将分组数据从一个存储位置转发到另一存储位置通常被称为转发分组,而不考虑所使用的分组数据的副本的数量。因此,在适用时,在详细描述和权利要求中转发分组或转发分组数据包括隐含数据拷贝操作。此外,转发分组或转发分组数据可包括转移在分组中的数据的一个或多个部分、完整的分组、和/或与分组相关联的元数据例如分类结果、散列值等。
根据实现,在第三操作期间,在核心210a(例如NIC驱动器)之一上运行的软件实体将检测或被通知在系统存储器206a或LL高速缓存216a中的分组228的到达,并确定分组数据实际上关联于(例如分组的消费者是)具有存储器分配的消费软件应用,存储器分配包括在节点B上的系统存储器206b的存储器地址空间的一部分。或更简单地,可确定分组数据被写到在与系统存储器206b相关联的地址范围内的地址。因此,在第四操作期间,分组228的数据从系统存储器206a或LL高速缓存216a复制到在节点A上的插口到插口接口218a上的第一缓冲器,并通过互连链路226被发送到在节点B上的插口到插口接口218b,其中它在第二缓冲器中被接收。根据实现,在第五操作期间,分组228的缓冲副本然后被写到系统存储器206b或LL高速缓存216b,如操作5a和5b所描绘的。在这个阶段,分组数据可经由其在系统存储器214b或LL高速缓存216b中的位置由软件应用访问,该软件应用是分组的消费者。
前述常规方法需要涉及几个硬件部件和软件实体,这增加了处理器开销和互连业务,导致额外的分组转移时延和高速缓存污染。如现在讨论的,这些问题由本发明的实施例解决。在本文公开的实施例下,在NIC处对第一节点接收的分组(其注定被写到对应于第二节点的系统存储器或高速缓存)经由多对多PCIe交换机被转发到第二节点上的可应用的PCIe根复合体。一旦分组在PCIe根复合体处被接收到,它就被处理,好像分组经由第二NIC从网络被接收以开始一样。因此,这个过程对其它部件和在第一和第二节点上运行的软件实体是透明的。
图3示出根据一个实施例的包括NUMA节点302a和302b的NUMA多处理器平台体系结构300,其配置成实现前述方法。平台体系结构300的方面类似于平台体系结构200,其中类似地编号的部件执行类似的操作,而扩充的和新的部件以浅灰色示出。这包括多对多(M对M)PCIe交换机301、PCIe互连303a、303b、305a、305b、307a、307b、309a和309b、以及地址映射311a和311b,其便于在NIC308a和308b(NIC A和NIC B)以及在相应的PCIe接口214a和214b处的处理器304a和304b之间的通信。图3进一步示出在NUMA平台体系结构300下如何处置对应于分组228的数据,分组228由NIC在第一节点(A)处接收但包含将被写到第二节点(B)上的存储器资源的数据。
在图3的实施例下,分组228的处置如下继续进行。与以前一样,在第一操作期间,分组经由以太网链路230a从网络232在NIC308a处被接收,并缓存在NIC上的输入缓冲器中。在对应于由NIC308a执行的初始分组处理操作的第二操作期间,分组228的分组报头和/或分组有效载荷被检查,且基于分组报头字段数据和/或分组有效载荷数据而产生可应用的过滤器匹配输入数据,分组报头字段数据和/或分组有效载荷数据接着由在NIC308a上的分组处理逻辑使用作为对照在地址表中定义的过滤器和/或规则的输入查找表。如下面详述的,在地址表中的过滤器和/或规则识别可应用的分组数据将被写入的系统存储器地址。
在一个实施例中,NIC308a和308b的操作类似于在图2的常规方案中的NIC208a和208b的操作。也就是说,关于缓冲分组数据和执行一些初始分组处理,分组数据经由DMA写操作被复制到系统存储器。在NUMA体系结构下,经由不同的NUMA节点访问系统的存储器的部分,如上所述。同时,系统的地址空间是全局地址空间,使得对于给定地址在系统存储器中只有单个位置。而且,从外围设备等(例如NIC308a和308b)的视角看,这个全局地址空间看起来是物理地址空间,但是它可实际上由操作系统实现为虚拟地址空间。此外,地址虚拟化的另一层可由在主机平台操作系统上运行的虚拟机实现。
在图3所示的实施例下,经由PCIe事务层分组(TLP)存储器写事务实现系统存储器DMA写操作。(为了简单起见,这样的PCIe TPL存储器写事务可被称为PCIe存储器写事务。)在所示体系结构下,发起PCIe存储器写事务的NIC不知道将被写到的存储器高速缓存行的物理地址。因此,NIC(在本例中,NIC308a)简单地产生具有对应于写事务有效载荷数据将被写到的存储器地址的目的地地址的PCIe存储器写事务。PCIe存储器写事务然后作为一个或多个PCIe分组从NIC308a经由PCIe互连309a被发送,其中它在多对多PCIe交换机301的输入端口处被接收。当被接收到时,每个分组在多对多PCIe交换机301内部从在输入(PCIe下游)端口处的入口缓冲器路由到连接到PCIe互连303b的输出(PCIe上游)端口处的输出缓冲器。这个路由经由地址映射311a和311b而变得容易,该地址映射311a和311b包含在存储器地址和多对多PCIe交换机30上的相应输出端口之间的映射,PCIe存储器写事务经由多对多PCIe交换机30被转发,所以它们可到达适当的PCIe根复合体和(最终)可应用的存储器控制器和/或缓存代理用于完成存储器写事务。PCIe存储器写事务分组的路由被配置成使得分组被转发到NUMA节点,对应于事务的目的地地址的系统存储器地址空间的部分经由所述NUMA节点可被访问,而不考虑发起设备(或事务)是否在逻辑上与该NUMA节点或另一NUMA节点相关联。如在下面更详细解释的,从NIC308a和308b的视角看,它们每个经由单独的逻辑PCIe交换机连接到PCIe RC215a和215b。
如在图3中的操作2和3所示,分组在多对多PCIe交换机301内在内部从耦合到PCIe互连209a的输入端口路由到耦合到PCIe互连303b的输出端口。分组接着经由PCIe互连303b从这个输出端口转发,其中它在PCIe根复合体215b的PCIe接口214处被接收到,如由操作4描绘的。PCIe存储器写事务从PCIe根复合体转发到存储器控制器216a或可应用的高速缓存代理(未示出),导致事务有效载荷数据被写到系统存储器206b或LL高速缓存217b,如分别由操作5a和5b描绘的。
图3a示出NUMA多处理器平台体系结构300a,其包括被标记为PCIeRC215a1、215a2、215b1和215b5的每个NUMA节点304a和304b的两个PCIe根复合体。与以前一样,平台体系结构300a的方面类似于平台体系结构200和300,其中类似地编号的部件执行类似的操作,而扩充的和新的部件以浅灰色示出。除了PCIe根复合体以外,体系结构300a还包括PCIe互连303a1、303a2、303b1和303b2,其耦合到多对多PCIe交换机301a。为了帮助便于在交换机内的分组路由,多对多PCIe交换机301a包括如所示的地址映射311a1、311a2、311b1和311b2。
图3a进一步描绘在NIC308a处从网络232接收分组228以及经由相应的PCIe存储器写事务转发分组数据。用于实现PCIe存储器写事务的操作类似于在图3中示出和上面讨论的那些操作,除了可应用的PCIe根复合体是PCIe根复合体215b1而不是PCIe根复合体215b以外。
本文公开的PCIe多对多交换机是可使用本文提供的技术实现的更一般的多对多外围交换机的特定例子。使用多对多外围交换机301’的NUMA体系结构300b的例子在图3b中示出,其中具有与图2、3a和3b中所示的功能类似的功能的部件共享相同的参考数字。此外,撇号(’)被添加到在图3b中的一些参考数字以指示扩充的类似部件。
更详细地,多对多外围交换机301’作为IO接口214a’和214b’经由相应的互连303a’和303b’连接到IO根复合体215a’和215b’。多对多外围交换机301’还经由相应的互连连接到外围槽A1…AN、NIC308a、外围槽B1…BN和NIC308b,所述互连如互连305a’、307a’、309a’、305b’,307b’和309b’所描绘的。通常,IO根复合体215a’和215b’代表在现有或未来的IO互连层级中的顶级或根实体,包括可使用多个协议(例如通过使用互连到互连的桥等)的互连层级。例如,可以预期,未来可对现有的PCIe规范进行扩充,包括定义具有与PCIe不同的名称的互连结构和协议的新规范。因此,多对多外围交换机旨在说明具有这些互连结构和协议的实现。多对多外围交换机也示出以非PCIe互连(例如但不限于开放核心协议(OCP)互连)实现。
除了多对多外围交换机以外,多对一外围交换机也可以用类似的方式实现。例如,在图3c的平台体系结构350中所示的配置下,采用多对一外围交换机351以便于共享经由具有NUMA节点304a’和304b’的单个NIC308提供的网络访问。虽然在图3c中示出一两个NUMA节点,但多对一外围交换机体系结构可配置成支持N对一外围交换机,其中N是≥2的整数。除了访问NIC以外,在一些实施例下,多对一外围交换机可配置成与NIC的MAC层交互,包括单端口和多端口NIC。
如在本文讨论的,多对多PCIe交换机和多对一PCIe交换机的实施例用于在事务源和目标端点之间转发PCIe事务。因此,为了更好地理解实施例的方面,提供图4所示的一般PCIe体系结构的下面的简要讨论。
PCIe体系结构包括耦合到处理器402和存储器404的PCIe根复合体(RC)400。PCIeRC400被描绘为包括三个根端口406-1、406-2和406-3。根端口406-1经由PCIe链路410和PCIe端口412连接到PCI Express端点408。根端口406-2连接到PCI/PCI-X桥414的PCIExpress,其用作在PCIe和多个PCI/PCI-X设备416之间的接口。根端口406-3经由PCIe链路418和PCIe端口420连接到交换机416。交换机416被描绘为连接到一对传统端点422和424和一对PCI Express端点426和428。这些连接由PCIe链路430、432、434和436以及端口438、440、442、444、446、448、450和452促进。
根复合体表示将CPU/存储器子系统连接到IO(输入/输出)的IO层级的根。如图4所示,根复合体可支持一个或多个PCI Express端口。每个接口定义单独的层级域。每个层级域可由单个端点或包含一个或多个交换机部件和端点的子层级组成。根复合体可以可选地支持在层级域之间的对等事务的路由。
端点指的是一种的函数,其可以是代表它自己或代表不同的非PCI Express设备(而不是PCI设备或主机CPU)(例如PCI Express附接图形控制器或PCI Express-USB主机控制器)的PCI Express事务的请求器或完成器。端点被分类为传统、PCI Express或根复合体集成端点。
为了每次发送和接收数据,PCIe使用由一条或多条道构成的串行链路来支持点对点互连。PCIe链路具有至少一条道,每条道代表一组差分信号对(一对用于发送,一对用于接收)。为了缩放带宽,链路可聚集由xN表示的多条道,其中N可以是所支持的链路宽度中的任一个。例如,关于PCIe3.0规范,PCIe链路包括对x1、x2、x4、x8、x12、x16和x32道宽度的操作。(如在本文使用的,在适用时,PCIe规范应指PCIe3.0和以后的规范)。在硬件初始化期间,在通过在链路的每端处的两个代理协商道的宽度和操作的频率之后,建立每个PCIExpress链路。
图5的图500示出PCI Express分层协议和TLP(事务层分组)组装/分解的细节。在PCIe下,数据以分组化格式在两个PCIe端点或端口(如由设备A和设备B描绘的)之间传输。如上面讨论的,PCIe链路包括单或多道点对点互连。而且,点对点互连在相反的方向上在单向点对点互连中配置,使得每个链路对支持双向通信。传输起源于发送器或发射机,并由接收机接收。被发送的数据通过发送(Tx)路径被发送,且相应的数据通过接收(Rx)路径被接收。在PCIe设备之间交换的分组的两个主要类别是高级事务层分组(TLP)和被称为数据链路层分组(DLLP)的低级链路维护分组。共同地,各种TLP和DLLP使两个PCIe设备能够可靠地执行存储器、IO和配置空间事务,并使用消息来发起功率管理事件、产生中断、报告错误等。
PCIe标准的三个较低层包括事务层、数据链路层和物理(PHY)层。因此,设备A和B中的每一个被描绘为包括事务层(块)504、数据链路层(块)506和物理层(块)508。发起方设备(例如在本例中的设备A)产生待发送到接收设备(例如设备B)的数据510,其然后由PCIe层进行分组化并通过链路发送。在PCIe事务的上下文中,发起方被称为请求器,且接收方被称为完成器。
在事务层,数据被分组化为一个或多个分组,其具有包括头部(HDR)、分组有效载荷数据(数据)和摘要的分组格式512。在数据链路层处,序号(SeqNum)连同附加到末尾以形成分组格式514的CRC一起被添加到分组的开始。通过添加STP和结束控制(K)符号在物理层处进一步扩充分组格式以形成分组格式516。分组接着通过链路被发送以由接收机(设备B)使用相反的顺序处理,最终产生原始数据510。
如上所讨论的,PCIe规范需要层级域结构。这意味着任何给定的端点必须与在特定的根复合体上的单个端口相关联。为了符合PCIe规范,这个要求必须被遵守。本文公开的多对多PCIe交换机的实施例以多对多方式支持在PCI端口之间的交换,同时符合PCIe规范层级域要求。这部分地如下获得。
首先,下游链路在逻辑上与特定的上游链路相关联。这定义了其在PCIe层级内的域,并用于PCIe列举。为了这个目的,看起来(从根复合体的视角)每个根复合体经由单个上行连接而连接到单独的一对多常规PCIe交换机,其具有连接到平台上的PCIe槽和/或NIC中的一部分或全部的多个PCIe下行链路。如下面详述的,这些单独的交换机被实现为使用在逻辑上分离的域的逻辑交换机,每个PCIe根复合体有一个域,如规范要求的。其次,配置分组的严格路由被遵守。因此,不允许配置分组跨越这些逻辑域。
通过图6和7中的示例方式示出逻辑交换机和逻辑PCIe域的使用。如图6所示,每个PCIe根复合体215经由耦合在根端口604和上游端口606之间的PCIe上行链路(UL)602连接到相应的逻辑PCIe交换机600。例如,PCIe根复合体215a2经由耦合在根端口604a2和上游端口606a2之间的PCIe上行链路602a2连接到逻辑PCIe交换机600a2。在逻辑PCIe交换机上的每个下游端口608经由PCIe下行链路(DL)610连接到相应PCIe槽或NIC的PCIe接口的相应的上游端口612。在图6所示的实施例中,逻辑交换机600a1、600a2、600b1和600b2中的每个被类似地配置,并提供到包括PCIe槽A1-AN、NIC A、PCIe槽B1-BN和NIC B的PCIe端点的下行链路连接。(注意,只有PCIe槽A1-AN、NIC A、PCIe槽B1-BN和NIC B中的每个的单个物理实例;然而,为了例证性目的,在图6中示出这些PCIe端点的四个单独的实例。)图6的PCIe端点配置的逻辑交换机下行链路仅仅是示例性的,因为给定的逻辑交换机可经由PCIe下行链路连接到PCIe槽和/或NIC的全部或一部分。还注意,在本文对连接到PCI下游端口的NIC的提及和描绘仅仅是例证性的,因为NIC(或类似的网络接口电路和逻辑)可在占据PCIe槽之一的网络适配器卡等上实现。
图7示出多对多PCIe交换机700的一个实施例的另外的细节。类似于在图6中示出的实施例,多对多PCIe交换机700具有四个逻辑交换机600a1、600a2、600b1和600b2。每个逻辑交换机包括(仅)与该交换机相关联的相应的上游端口,如上游端口702a1、702a2、702b1和702b2所描绘的。相反,多对多PCIe交换机700的下游端口704、706、708、710、712和714在逻辑交换机600a1、600a2、600b1和600b2当中被共享,使得每个下游端口可经由每个逻辑交换机被访问。每个下游端口连接到PCIe槽A1-AN和B1-BN以及NIC A和B中的每个的PCIe接口处的相应的上游端口,如上游端口716、718、720、722、724和726所描绘的。
每个上游和下游端口与包括入口缓冲器728和出口缓冲器730的PCIe接口相关联,如对上游端口702a1所示的。更详细地,每个入口缓冲器728与入口PCIe端口相关联,而每个出口缓冲器与出口PCIe端口相关联;然而,为了简单起见,通常的实践是将入口和出口PCIe端口显示为在PCIe层级图中的单个端口。在一个实施例中,入口和出口缓冲器被实现为FIFO(先进先出)缓冲器。然而,可根据PCIe规范来实现各种其它类型的缓冲器和相关联的逻辑。例如,PCIe交换机可配置成支持不同的服务质量(QoS)类,在其下,给定服务类的分组可具有优于其它类的分组的优先级。因此,入口或出口端口可使用多个缓冲器和/或使用用于利用PCIe业务类标签来处置分组的多个QoS类的一组或多组指针。
多对多PCI交换机700还包括地址映射表732和交换机配置逻辑734。为了例证性目的,地址映射表732被描绘为包括分别用于NUMA节点A和B的单独的地址映射736和738。在一个实施例中,地址映射表732配置成存储与每个PCIe根复合体(且相应地,每个逻辑交换机)相关联的地址映射,其在如下面参考图10的流程图1000描述的系统运行时间操作期间产生。实际上,地址映射表条目可由NUMA节点、由PCIe根复合体划分,没有划分,或使用某个其它类型的划分方案。此外,地址映射表条目可参考PCIe上游端口的标识符(相应的PCIe根复合体经由该PCIe上游端口被访问),而不是或除了PCIe根复合体的标识符以外。因此,图7中的PCIe上游端口也被标记为PCIe接口/端口A1、A2、B1和B2,其中上游端口标识符(ID)分别是A1、A2、B1和B2,且地址映射表732将包括这些上游端口ID。
在图7的多对多PCIe交换机700下,每个下游端口在逻辑上连接(且经由交换逻辑在物理上可连接)到每个上游端口。可选地,一个或多个下游端口可仅与如在图7a的多对多PCIe交换机700a中所示的逻辑交换机的一部分相关联。因为NIC业务一般大于其它类型的I/O设备业务,在所示实施例下,NIC可经由在每个NUMA节点上的专用PCIe根复合体被访问,没有连接到多对多PCIe交换机的其它端点访问专用PCIe根复合体;因此,将不需要提供在NIC所连接到的下游端口和连接到系统中的其它PCIe根复合体的上游端口之间的内部路由。在图7a中示出这个配置的例子,其中未使用的逻辑交换机端口以交叉影线示出。用于实现逻辑交换机的电路可配置成使得这些未使用的端口不存在以开始。
图7b示出根据实施例的多对一PCIe交换机750的细节。多对一交换机便于单个下游外围设备(例如NIC752)与耦合到在相应的上游端口处的交换机的多个节点的共享,这些上游端口被示为PCIe上游部分702a…702n并且也被标记为端口A…N,其中N≥2。每个逻辑交换机600a…600n包括上游端口702i和下游端口708i,其中i=a…n。每个下游端口708i操作地耦合到单个下游PCIe端口708。多对一PCIe交换机750还包括地址映射表732’(其被描绘为包括分别用于NUMA节点A…N的单独地址映射736a…736n)和交换机配置逻辑734’。
在一个实施例中,交换机配置逻辑734和734’配置成根据由PCIe规范规定的PCIe层级列举过程来执行PCIe端口和交换机配置操作。PCIe列举用于发现PCIe拓扑结构,且一般在系统初始化期间被执行。此外,可响应于系统变化来执行PCIe列举,例如添加或移除如安装外围卡或从PCIe槽移除外围卡或添加或移除计算机系统中的支持热切换操作的热切换模块。
进一步参考图8的流程图800,在一个实施例中,与NUMA体系结构300和300a有关的PCIe列举操作如下继续进行。如同常规PCIe列举一样,PCIe层级列举过程在PCIe根复合体处开始,PCIe根复合体是PCIe层级的顶级实体。因此,流程图800包括指示对每个PCIe根复合体执行的外层循环内的操作的开始和结束循环块。为了简单起见,每个体系结构300和300a只描绘经由PCIe上行链路连接到多对多PCIe交换机的PCIe根复合体的PCIe接口。然而,将认识到,PCIe根复合体的根端口可连接到其它PCIe实体,例如交换机、总线、桥、端点等(未示出)。
如上面讨论的,多对多PCIe交换机和多对一PCIe交换机被实现为多个逻辑PCIe交换机,每个逻辑PCIe交换机具有(直接经由本文所示的PCIe上行链路,或在逻辑PCIe交换机上游端口和PCIe根复合体的根端口之间存在另一层级层)连接到单个PCIe根复合体的单个上游端口。因此,当对于给定PCIe根复合体沿着PCIe层级向下列举时,列举过程将遇到与逻辑PCIe交换机相关联的上游端口。如在流程图800中的内部循环的开始和结束循环块804和810所示,对于每个逻辑交换机,将根据PCIe层级过程在块806中列举下游层级。在块808中,使用PCIe配置消息将PCIe层级配置和PCIe端点能力随后沿着层级向上转发到可应用PCIe根复合体。这将使每个PCIe根复合体能够确定连接到其层级结构的每个PCIe端点的配置和能力。
如上所述,与逻辑交换机相关联的下游端口在逻辑上只连接到在多对多PCIe交换机上的单个物理下游端口。因此,消息和事务分组的下游转发相当简单,因为每个PCIe根复合体及其下层层级作为单独的域被操作。在常规PCIe层级下,起源于给定PCIe端点的事务可只使分组转发到在同一层级(和同一域)中的其它PCIe实体,例如在层级的顶部处的PCIe根复合体。相反,在使用多对多PCIe交换机或多对一PCIe交换机的本文的体系结构下,因为每个物理下游端口可连接到多个逻辑交换机,所以给定的PCIe端点可将事务分组转发到多个PCIe根复合体。作为结果,额外的条款(在PCIe规范中规定的那些条款之外)用于上游分组转发。
在一个实施例中,经由地址映射表732中的条目实现这些额外的条款。每个PCIeTLP分组包括目的地地址。在通过PCIe链路结构促进的DMA存储器写操作下,存储器写操作将被访问的目的地地址包括在TLP分组报头中。因为在系统存储器中的每个地址可经由单个NUMA节点被访问,所以期望将存储器写事务的TLP分组直接路由到那个NUMA节点,与上面参考图2讨论的常规方案相反。此外,根据NUMA节点和在节点上运行的软件如何被配置,给定系统存储器地址可以只经由单个PCIe根复合体被访问。因此,在一些实施例中使用事务分组将被转发到的PCIe根复合体的标识。
如在地址映射表732的表条目中所示的,每个条目包括第一地址、第二地址和PCIe根复合体标识符。可选地,如在括弧中所示的,第三列包括PCIe上游端口的标识符,经由该PCIe上游端口可到达PCIe根复合体。第一和第二地址跨越被分配到PCIe端点的唯一(物理或虚拟)实例的地址范围,如下所述。作为选择,单个地址可用于除了地址范围以外的一些条目。因此,在地址映射表中的每个条目将定义不与任何其它地址范围重叠的地址或地址范围。作为结果,TLP分组的目的地地址可用作对地址映射表732的查找表,输出是PCIe根复合体或PCIe上游端口的标识,对于匹配的表条目可经由该PCIe上游端口来访问PCI根复合体。
图9示出关于执行经由多对多PCIe交换机700转发的DMA存储器写事务的体系结构300和300a的选定元件的进一步的细节。NIC308包括耦合到物理(PHY)接口902a的输入端口900a、MAC(媒体访问通道)模块904a、分组处理逻辑906a和DMA引擎908a。MAC模块904包括FIFO输入缓冲器910a和缓存的转发表映射912a。
在图9中还描绘了NUMA节点A系统存储器206a和节点B系统存储器206b的存储器映射的一部分。节点A系统存储器206a包括用于应用A和应用B的地址空间,其通常示出在NUMA节点上运行的应用的地址空间。节点A系统存储器206a还包括地址映射表735的存储器实例。节点B系统存储器206b包括被分配到NIC B驱动器和应用C的存储器空间以及地址映射表738的存储器实例。在一个实施例中,地址映射表736和738的存储器实例响应于可应用的事件而被更新,而这些表的副本被缓存在NIC上的存储器中。可选地,只能缓存在映射表736和738的存储器实例中的一部分条目。
在近年来,计算机系统的虚拟化快速增长,特别是在服务器部署和数据中心中。在常规方法下,服务器直接在物理硬件资源(例如CPU、RAM、存储设备(例如硬盘)、网络控制器、I/O端口等)上运行操作系统的单个实例。在虚拟化方法下,物理硬件资源用于支持虚拟资源的相应实例,使得多个虚拟机(VM)可在服务器的物理硬件资源上运行,其中每个虚拟机包括其自己的CPU分配、存储器分配、存储设备、网络控制器、I/O端口等。相同或不同操作系统的多个实例然后在多个VM上运行。而且,通过使用虚拟机管理器(VMM)或“管理程序”,在服务器正运行时可动态地分配虚拟资源,使VM实例能够被添加、关闭或重新目的化,而不需要关闭服务器。这提供服务器利用的更大灵活性和服务器处理资源的更好使用,特别是对于多核处理器和/或多处理器服务器。
图10示出流程图900,其说明结合使用NUMA节点体系结构(例如体系结构300和300a)实现虚拟化环境而被执行以填充转发表映射912和地址映射表736和738的操作。在系统初始化期间和/或通过使用管理程序等,虚拟机实例被配置并发动;在块1002中描绘了用于添加虚拟机的操作。结合VM的发动,与支持虚拟联网操作的那些对应的软件实体(包括用于实现虚拟网络堆栈和虚拟网络适配器的软件)被装入托管VM的NUMA节点的系统存储器中。在一个实施例中,虚拟网络适配器将被分配虚拟MAC地址和虚拟IP(互联网协议)地址。
因为期望将网络业务路由到可应用的联网软件以用于分组处理和处置,所以使用一种机制来使在物理网络端口处接收到的分组被转发到适当的虚拟联网软件实例。这通常通过将MAC和/或IP地址映射到网络软件输入点(例如在虚拟NIC驱动器被装入的系统存储器中的地址)来完成。可选地,映射可以是配置成将分组转发到适当的虚拟NIC驱动器的物理NIC驱动器(由VM运行于其上的平台主机操作系统使用)的存储器地址。因此,在块1004中,部分地基于VM联网软件或虚拟或物理NIC驱动器的IP地址和/或虚拟MAP地址来产生NIC过滤器和/或规则。NIC过滤器/规则存储在托管VM(未示出)的可应用的NUMA节点的系统存储器中,且过滤器/规则的副本被发送到用于支持到VM的网络业务的每个NIC。这个信息用于更新在NIC的转发表映射(例如图9中的NIC 308a的转发表映射912a)中的NIC过滤器/规则。
通常,关于分组分类或预分类操作使用NIC过滤器/规则。在一些实施例中,NIC过滤器/规则的全部或一部分可实现散列函数等以确定关于分组分类或预分类的匹配。除了使用散列函数等并接着使用因而产生的散列值作为对照节点过滤查找表的查找数据输入来执行分组分类以外,一些协议还可便于识别分组将被直接写入的存储器地址。例如,对于例如支持直接数据放置(DDP)的以太网光纤通道(FCOE)的协议,在NIC的分组中存在足够的数据来确定分组的期望最终目的地(例如存储器地址)。因此,在一些实施例中,节点过滤器查找表可包括考虑在分组处理期间确定的存储器地址的过滤器和/或规则数据,相应的表条目识别分组将被转发到的节点和/或NIC。例如,过滤器列可包括对相应的节点和/或NIC的地址范围映射。
此时,存在用于将在NIC处接收到的分组映射到系统存储器中的适当地址的过滤器和规则,使NIC能够使用相应的PCIe TLP存储器写事务来发起DMA存储器写操作。然而,为了使用多对多PCIe交换机来支持分组的转发,需要地址映射信息以将TLP分组路由到适当的PCIe根复合体。对PCIe根复合体ID(和/或PCIe上游端口ID)映射的这些地址在块1008中产生,并在块1010中被添加到地址映射表732。在一个实施例中,映射由在每个NUMA节点上运行的软件实体产生,且该节点的地址映射表的副本被保持在系统存储器中;地址映射表条目接着被写到在多对多PCIe交换机700上的地址映射表732。
进一步参考图11的流程图1100,在NIC输入端口处接收到的分组的处置如下继续进行。首先,在块1102中,分组在NIC的输入端口处被接收并缓存在输入缓冲器中。这在图9中被描绘为包括报头916和有效载荷918的分组914,其在输入端口900a处被接收并缓存在FIFO输入缓冲器910a中。接着,分组由分组处理逻辑906a分类和/或分组的目的地地址被从分组报头916中提取出。以太网使用MAC寻址来利用局域网(LAN)将分组路由到在以太网NIC上的端口和以太网网络适配器卡。根据所使用的特定类型的传输协议,可使用虚拟IP目的地地址或虚拟MAC地址来转发分组。除了例如以太网的采用MAC地址的层2协议之外,使用采用IP地址的层3路由来转发大部分网络业务。最近,层2协议被扩充以支持跨越以太网子网进行层2转发以及提供对所确认的传送(例如可靠的传输)的支持。因此,用于托管一些类型的服务的数据中心等可采用层2路由用于在数据中心内的服务器上运行的VM之间的通信。
如在块1106中描绘的,网络分组的目的地地址(IP或MAC,在适用时)用作在转发表映射912a中的查找匹配的输入。基于目的地地址,转发表映射查找表将识别包含分组将从NIC缓冲器被DMA到系统存储器内的存储器地址的匹配条目。因此,在块1108中,使用与从查找表返回并发送出NIC的上游端口的存储器地址对应的目的地地址,来产生PCIe TLP存储器写事务分组。
一直到此时,在块1102、1104、1106和1108中的操作通常与常规分组处置操作有关,且PCIe存储器写事务分组将在与NIC相同的域中沿着PCIe层级向上转发到PCIe根复合体。然而,通过使用多对多PCIe交换机700,PCIe存储器写事务可在单独的域中转发到PCIe根复合体。这如下实现。
分组被转发出上游端口718并在多对多PCIe交换机700的端口708处被接收,如块1110所描绘的。当被接收到时,分组被缓存在入口缓冲器728中,且PCIe分组目的地地址被检查并用作在地址映射表732中的PCIe根复合体地址映射查找的查找。如由具有灰色背景的条目描绘的,地址映射查找识别分组将被转发到PCIe根复合体B1(215b1),或否则在内部被转发到PCIe上游端口B1。根据块1112,分组在多对多PCIe交换机700中内部地从端口708上的入口缓冲器被转发到在PCIe上游端口702b1(B1)上的出口缓冲器。在块1114中,接着通过经由上行链路303b1将分组从出口缓冲器发送到根端口604b1,来将分组转发到PCIe根复合体215b1。然后通过使用可应用的缓存代理和/或存储器控制器217b,以常规方式在块1116中完成DMA存储器写入。
如上面讨论的,在一些实例中,PCIe TLP存储器写目的地地址经由DMA引擎908a所促进的DMA写操作而对应于由与NIC驱动器(对于物理或虚拟NIC,在适用时)相关联的存储器地址规定的存储器位置,且分组有效载荷被复制到与被描绘为软件应用C的分组的软件消费者相关联的存储器地址。可选地,分组有效载荷可被直接复制到分配给软件消费者应用的可应用的存储器地址,或复制到可应用的目的地节点(B)的LL高速缓存中的可应用的地址。
根据一些实施例的额外方面,多对多PCIe交换机和多个NIC的功能可一起集成到单个部件或零件,例如知识产权(IP)块的集成电路。在图12中示出多NIC/多对多PCIe交换机1200的示例性配置。如所示,多NIC/多对多PCIe交换机1200包括逻辑PCIe交换机1202a1、1202a2、1202b1和1202b2,每个逻辑PCIe交换机具有单个上游端口和一对下游端口1204。上游端口分别被描绘为PCIe上游端口1206a1、1206a2、1206b1和1206b2(也被标记为接口/端口A1、A2、B1和B2)。每个下游端口1204通信地耦合到NIC1208a和1208b(NIC A和B)中的每个,其中每个NIC具有类似于图9所示的NIC308的配置,包括PHY接口902、分组处理逻辑906、DMA引擎908、FIFO输入缓冲器910和转发表映射912。此外对每个NIC308还进一步描绘了FIFO输出缓冲器914a。此外,多NIC/多对多PCIe交换机1200包括包含节点A和B的地址映射表1236和1238的地址映射表1232以及交换机配置逻辑1234。
图12的体系结构可被扩充以支持集成的NIC/多对一PCIe交换机或集成的多端口NIC/多对一PCIe交换机(未示出)。在一个实施例中,操作地耦合到一个或多个NIC端口的PHY层的MAC层的接口耦合到每个逻辑PCIe交换机的下游端口。
通常,可对使用两个或更多个节点的NUMA平台体系结构实现本文公开的实施例的方面。在图13中示出了示例性四节点NUMA平台体系结构,包括节点302a、302b、302c和302d,其中每个节点具有类似配置,包括相应的处理器304、存储器206和NIC309、LL高速缓存和PCIe根复合体(为了简单起见,没有示出PCIe接口和根端口)。虽然在处理器304a和304c上的插口到插口互连接口218被描绘为与在处理器304b和304d上的配合的插口到插口互连接口218镜像,但将理解在一个实施例中,处理器304a-d具有类似的配置;以及镜像图13中的接口的使用用于使互连路由更简单和更容易理解。类似地,虽然节点302c和302d被描绘为具有对节点302a和302b的镜像配置,将理解,这个表示仅仅是为了使互连更直接的例证性目的。
在图13的平台体系结构中,每个处理器304a-d经由相应的插口(未示出)操作地耦合到主板1302,或否则经由适当的接合方案(例如倒装式接合)安装到主板1302。可选地,给定节点的部件可安装或否则操作地耦合到子板,其又经由一个或多个连接器耦合到主板。在一个实施例中,主板1302包括布线迹线以便于在插口到插口接口218对之间的互连226xy,其中x和y对应于在经由互连的通信中链接的处理器的相应插口节点。例如,互连226ac是在插口到插口接口218a和218c之间的互连。在一个实施例中,存在被标记为226ac、226cd、226bd和226ab的四个插口到插口互连。在可选的配置下,存在额外的插口到插口互连226ad和226bc。
如上所述,图13的平台体系结构包括四个NIC308a-d,其也被标记为NIC A、NIC B、NIC C和NIC D。此外,平台体系结构包括多个PCIe槽1-N。通常,存在在逻辑上与节点相关联的PCIe槽,或PCIe槽的全部或一部分可通常与作为整体的平台相关联,其中在PCIe槽和节点之间的映射在平台初始化期间或在运行时间被确定。如下所述,图13的平台体系结构也可用于在一个或多个处理器板或卡被移除的情况下支持操作。
平台体系结构还包括多对多PCIe交换机1301,其包括四个上游端口1303a、1303b、1303c和1303d以及多个下游端口1304。下游端口经由PCIe互连连接到相应的PCIe槽或NIC,如PCIe互连1305、1307、1309、1311、1313和1315所描绘的。多对多PCIe交换机1301也被描绘为包括四个地址映射A、B、C和D,其对在四个节点302a、302b、302c和302d上运行的VM产生。
通常,图13的平台体系结构以类似于上面讨论的其它实施例的方式操作,除了现在有四个节点而不是两个以外。两个或四个节点的使用并不意味着是限制性的,因为本文公开的教导和原理可应用于具有其它数量的节点的平台体系结构,并可在NUMA和非NUMA体系结构中实现。
多对多外围交换机方法的另一方面是对没有安装所有其处理器板的多节点平台支持外围槽和NIC连接的能力。例如,在一些实施例下,NUMA节点或更一般地处理器节点可被实现为可被安装到平台系统板等或从平台系统板等移除的单独的板、子板、卡等。每个单独的板是通常可包括对其中的节点302描绘的部件的完备的一组部件。可选地,多节点平台可包括多个插口,在其中安装有处理器或安装有处理器子板等。在处理器节点板方案下,板通常可以或可以不包括系统存储器资源(例如一个或多个槽,在其中安装有存储器部件或安装到板的存储器)。在处理器或处理器子板配置下,可提供存储器接口或控制器,但存储器本身将不被包括。
图13a描绘节点302d的处理器节点板被移除的情况,而图14示出说明结合处理器节点板的移除和更换来执行的操作。平台配置以每个处理器节点板被安装开始,对应于图13所示的情况。如在流程图1400的块1402所示,在平台的初始化期间,以与上面描述的方式类似的方式对每个处理器节点列举PCIe根复合体层级。在层级列举期间,各种PCIe槽和NIC将在逻辑上与相应的节点相关联,相应的外围地址映射数据由可应用的软件资源产生并由多对多PCIe交换机1301使用。平台然后在这个原始配置下操作,如在块1404中描绘的。
在原始配置下的操作期间,在块1406中检测到对重新配置平台的请求。可选地,平台可配置成例如经由包括系统存储器的处理器节点板的存储器错误的检测来检测即将发生的节点故障。响应于对重新配置的请求或所检测的即将到来的节点故障,在块1408中发起外围设备资源的迁移和从待更换的节点或有故障节点到一个或多个其它节点的映射。关于迁移过程,待更换/有故障的节点的存储器数据迁移到一个或多个其它节点。在一个实施例中,迁移的外围设备到节点配置被提前确定,且存储器的可应用部分迁移到适当的节点。例如,为了NIC的迁移,与NIC的操作相关联的相应存储器资源从原始节点迁移到所迁移的节点,预料NIC将在迁移完成之后使用在所迁移的节点上的存储器资源。在一个实施例中,为待更换的节点所缓存的数据在迁移之前被写到系统存储器,使得在系统存储器中的数据代表节点的数据的当前状态。在一个实施例中,存储器使用插口到插口互连在节点之间迁移。
在各种实施例下,处理器节点板可被移除,同时平台正运行(例如在热切换操作期间),或系统可能需要首先被关闭。在一个关闭实施例下,存储器中的数据在关闭之前被写到非易失性存储设备。在一个实施例(在该实施例中,系统存储器在处理器节点板外部)中,可施加的电压可被施加到存储器以保存存储器数据,同时平台的其它部分关闭。
关于迁移,PCIe根复合体层级在块1412中被重新列举以反映迁移的配置,且VMM和/或VM(以及可能的其它软件实体)在块1414中被更新以反映迁移的配置。在关闭实施例中,在重新启动以反映更新的配置之后初始化系统,且系统存储器数据从非易失性存储设备装回到存储器。在迁移完成之后,平台在迁移的配置中操作,如在块1416中所示的。
如果处理器节点板将被更换,则可执行在块1418、1420、1422、1424、1426和1428中所示的额外操作。首先,在块1418中,例如经由管理控制台等来检测对重新配置平台以添加更换处理器节点板的请求。然后安装处理器节点板。在一个实施例中,这可在平台正运行时经由“热切换”操作来执行。可选地,以上面描述的方式之一关闭平台以便于第一数据迁移。
在处理器节点板被更换之后,在块1420中发起外围设备资源的迁移和从所迁移的节点回到原始节点(被更换的节点)的映射。关于这个操作,存储器数据在块1422中迁移回到更换节点,且PCIe根复合体层级在块1424中被重新列举以反映迁移的配置。此外,在块1426中更新可应用的VMM和/或VM映射。这将平台返回到其原始配置,在该配置下,在块1428中平台运行。
前述实施例提供优于常规NUMA方法的增强性能,在该方法下,NIC不知道哪个节点用于访问对应于DMA存储器写地址的系统存储器的部分。相反,通过使用多对多外围交换机或多对一外围交换机,对应于外围设备存储器事务的分组直接转发到可应用的节点(相应的存储器事务可经由该节点来完成),而不需要经由插口到插口互连在节点之间转发分组。这种方法避免额外的处理操作和在常规方法之下的互连使用,例如减少高速缓存一致性所需的所使用的QPI业务。对于直接数据IO实现,它也增加DDIO的有效性,因为分组数据可直接写到正确的处理器的最后一级高速缓存。
根据一些实施例的方面,促进通过多对多外围交换机进行的NUMA节点流切换的支持。在NUMA节点流切换下,维持NUMA节点流转发数据,其将分组流映射到它们将被转发到的NUMA节点用于进一步处理。可从多个不同的网络适配器端口和/或单独的网络适配器或NIC接收分组。在网络适配器/NIC端口处执行分组分类操作以将分组分类到流,且分组经由多对多外围交换机被转发到与处理分组的流相关联的NUMA节点。例如,在一个实施例中,在分组分类操作期间在流标识符(FlowID)处分派分组,同时在将FlowID映射到NUMA节点(和/或到上游端口,经由该上游端口可到达NUMA节点)的多对多外围交换机中维持表等。在交换机转发操作期间,分组的FlowID用作对表的查找,且识别出到达分派给流的NUMA节点的上游端口,且交换机配置成经由该上游端口将分组转发到NUMA节点。
在一些实施例下,可关于平台初始化来执行多对多和一对多外围交换机的配置。例如,当交换机设备被列举或通过OS特定设备驱动器时,可使用存储器和IO范围来对交换机编程,将利用BIOS、UEFI或引导加载程序对每个上游链路而支持该IO范围。此外,在运行时间操作期间可利用OS设备驱动器等实施配置变化。
虽然本文描绘的实施例被称为NUMA体系结构,但教导和原理可应用于其它非NUMA体系结构,在这种结构下,利用多对多外围交换机将分组从NIC转发到系统存储器。通常,这样的体系结构将包括多个节点,每个节点包括一个或多个处理器和/或处理器核心,处理器核心包括局部高速缓存。在一些体系结构下,系统存储器可配置成使得它以跨越节点的分布式方式而被访问,其中存储器的至少一部分不与特定的节点相关联。类似地,可以跨越节点的分布式方式配置最后一级高速缓存等。
可在如在本文的实施例中描述的这样的非NUMA体系结构下以类似方式实现多对多外围交换机和多对一外围交换机转发功能。在这些体系结构下,可经由多对多外围交换机实现转发,使得分组数据可由运行作为分组数据的消费者的软件应用的处理器或处理器核心访问。因此,考虑到与软件消费者(对于给定的分组)相关联的处理器或处理器核心的位置来配置地址映射表数据。
除了支持经由有线以太网链路到网络的连接以外,本发明的实施例还可配置成经由无线链路支持网络连接,例如经由在基于IEEE802.11(aka WiFi)的无线链路上的无线连接、WiMAX链路、或各种基于移动电信的数据链路,例如GSM、CDMA、GPRS、W-CDMA、EDGE、CDMA2000、UMTS、HSUPA、HSDPA、EV-DO、LTE等。为了支持无线网络链路,NIC可配置成处理相应的射频(RF)信号数据。可选地,可经由通信地耦合到NIC的单独部件或多个部件来实现RF信号数据处理。
虽然关于特定的实现描述了一些实施例,但根据一些实施例,其它实现是可能的。可选地,在附图中示出和/或在本文描述的元件或其它特征的布置和/或顺序不需要以所示和所述的特定方式来布置。根据一些实施例,很多其它布置是可能的。
在附图中所示的每个系统中,在一些情况下元件的每一个可以具有相同的参考数字或不同的参考数字,以暗示所代表的元件可以是不同的和/或相似的。然而,元件可足够灵活以具有不同的实现,并与在本文所示或所描述的系统中的一些或全部一起工作。在附图所示的各种元件可以是相同或不同的。哪个被称为第一元件以及哪个被称为第二元件是任意的。
在说明书和权利要求中,可使用术语“耦合”、“操作地耦合”和“连接”连同其派生词。应理解,这些术语并不打算作为彼此的同义词。更确切地,在特定实施例中,“连接”可用于指示两个或更多个元件彼此直接物理或电接触。“耦合”可意指两个或更多个元件直接物理或电接触。然而,“耦合”也可意指两个或更多个元件彼此不直接接触,但仍然彼此协作或交互作用,而“操作地耦合”可意指当部件或设备正操作时两个或更多个元件直接或间接连接。
实施例是发明的实现或例子。在说明书中对“实施例”、“一个实施例”、“一些实施例”或“其它实施例”的提及意指关于实施例描述的特定特征、结构或特性包括在发明的至少一些实施例中,但不一定是所有实施例。“实施例”、“一个实施例”或“一些实施例”的各种出现不一定都指相同的实施例。
不是在本文描述和示出的所有部件、特征、结构、特性等都需要包括在特定的一个或多个实施例中。如果说明书陈述部件、特征、结构或特性例如“可以(may)”、“可以(might)”、“可能(can)”、“可能(could)”被包括,则该特定部件、特征、结构或特性不需要被包括。如果说明书或权利要求提到“一(a)”或“一(an)”元件,则并不意味着只有一个元件。如果说明书或权利要求提到“额外的”元件,则并不排除存在多于一个的额外的元件。
本文的实施例的各种方面可由相应的软件和/或固件部件和应用促进,例如在服务器上运行的软件或由在网络元件上的嵌入式处理器执行的固件。因此,本发明的实施例可用作或支持在某种形式的处理核心(例如计算机的CPU、多核处理器的一个或多个核心)、在处理器或核心上运行的虚拟机上执行的或否则在机器可读介质上或内实施或实现的软件程序、软件模块、固件和/或分布式软件。机器可读介质包括用于存储或发送机器(例如计算机)可读形式的信息的任何机制。例如,机器可读介质可包括只读存储器(ROM)、随机存取存储器(RAM)、磁盘存储介质、光存储介质和闪存设备等。
本发明的所示实施例的上面描述(包括在摘要中描述的内容)并不意图是无遗漏的或将本发明限制到所公开的精确形式。虽然在本文为了例证性目的描述了本发明的特定实施例和例子,但在本发明的范围内的各种等效修改是可能的,如在相关领域中的技术人员将认识到的。
可按照上面详述的描述对本发明进行这些修改。在下面的权利要求中使用的术语不应被解释为将本发明限制到在说明书和附图中公开的特定实施例。更确切地,本发明的范围应完全由下面的权利要求确定,权利要求应根据权利要求解释的已确立的教义来解释。

Claims (37)

1.一种多对多外围交换机,包括:
多个快速外围部件互连(PCIe)上游端口;
多个PCIe下游端口;以及
交换电路,其配置成将每个PCIe上游端口选择性地耦合到所述多个PCIe下游端口中的至少一部分,所述交换电路包括多个逻辑PCIe交换机,每个逻辑PCIe交换机经由PCIe上行链路耦合到相应的PCIe上游端口并且经由一个或多个相应的PCIe下行链路耦合到所述多个PCIe下游端口中的至少一部分;
其中,所述多对多外围交换机配置成安装在具有多个节点、多个外围扩展槽和多个外围设备的计算机平台中,所述多个外围设备中的至少一部分安装在所述外围扩展槽中,以及
其中,在所述多对多外围交换机的操作期间,每个PCIe上游端口经由在PCIe上游端口和节点之间的PCIe链路操作地耦合到节点,且每个PCIe下游端口经由在PCIe下游端口与外围设备或扩展槽之间的PCIe链路操作地耦合到外围设备或扩展槽,并且所述多对多外围交换机配置成:
在所述多个PCIe下游端口处从所述多个外围设备接收分组,所述分组与所述多个外围设备发起的事务有关;
检查每个分组以确定其目的地地址;以及
在所述多对多外围交换机内将每个分组内部地从接收到所述分组的PCIe下游端口转发到操作地耦合到的能够经由其来访问所述目的地地址的节点的PCIe上游端口。
2.如权利要求1所述的多对多外围交换机,还包括:
地址映射表,其配置成存储将地址和地址范围映射到节点标识符或PCIe上游端口标识符中的至少一个的数据;
其中,在所述多对多外围交换机的操作期间,分组的目的地地址用作对所述地址映射表的查找,导致包括节点标识符或PCIe上游端口标识符中的至少一个的匹配条目,且所述分组被转发到被识别出的或操作地耦合到被识别出的节点的PCIe上游端口。
3.如权利要求1所述的多对多外围交换机,其中,所述计算机平台采用多个非一致存储器存取(NUMA)节点,每个NUMA节点包括具有至少一级高速缓存并操作地耦合到系统存储器的一部分的处理器,其中系统存储器的部分具有不重叠的单独地址空间,且每个NUMA节点还包括至少一个输入/输出(I/O)接口,在所述计算机平台的操作期间在所述多对多外围交换机上的PCIe上游端口操作地耦合到所述至少一个输入/输出(I/O)接口。
4.如权利要求1所述的多对多外围交换机,其中,所述多个逻辑交换机在PCIe层级中占据单独的一层。
5.如权利要求1所述的多对多外围交换机,其中,所述交换电路包括多个逻辑交换机,所述多个逻辑交换机包括至少四个逻辑交换机,所述多个外围设备包括第一网络接口控制器(NIC)和第二网络接口控制器(NIC)或网络适配器卡和多个其它类型的外围设备,且第一逻辑交换机和第二逻辑交换机专用于转发与起源于所述第一NIC和第二NIC或网络适配器的存储器写事务有关的分组,所述第一NIC和第二NIC或网络适配器操作地耦合到的所述下游端口耦合到所述第一逻辑交换机和第二逻辑交换机且不耦合到其它逻辑交换机。
6.如权利要求1所述的多对多外围交换机,其中,所述多对多外围交换机配置成安装在具有多个PCIe根复合体、包括PCIe槽的多个扩展槽、以及多个PCIe设备的计算机平台中,所述多个PCIe设备中的至少一部分安装在所述PCIe槽中,以及
其中,在所述多对多外围交换机的操作期间,每个PCIe上游端口操作地耦合到PCIe根复合体,且每个PCIe下游端口操作地耦合到PCIe设备或PCIe设备槽,且所述多对多外围交换机配置成:
在所述多个PCIe下游端口处从所述多个PCIe设备接收分组,所述分组与所述多个PCIe设备发起的PCIe事务有关;
检查每个分组以确定其目的地地址;以及
在所述多对多外围交换机内将每个分组内部地从接收到所述分组的PCIe下游端口转发到操作地耦合到能够经由其来访问所述目的地地址的节点上的PCIe根复合体的PCIe上游端口。
7.如权利要求6所述的多对多外围交换机,还包括:
地址映射表,其配置成存储将地址范围映射到PCIe根复合体标识符或PCIe上游端口标识符两者中的一个的数据;
其中,在所述多对多外围交换机的操作期间,分组的目的地地址用作对所述地址映射表的查找,导致包括PCIe根复合体标识符或PCIe上游端口标识符中的一个的匹配条目,且所述分组被转发到被识别出的或操作地耦合到被识别出的PCIe根复合体的PCIe上游端口。
8.如权利要求6所述的多对多外围交换机,其中,在操作期间,所述多对多外围交换机配置成在PCIe层级列举期间将PCIe层级配置信息报告给每个PCIe根复合体,使得每个逻辑PCIe交换机对其经由PCIe上游端口操作地耦合到的PCIe根复合体看起来是具有单独的PCIe域的物理PCIe交换机,且其中所述多对多外围交换机按照PCIe规范来操作。
9.一种采用多对多外围交换机的方法,包括:
在包括多个节点的计算机平台中的第一网络接口控制器(NIC)处接收分组,每个节点包括多个部件,所述多个部件包括操作地耦合到系统存储器的一部分的处理器以及操作地耦合到NIC的快速外围部件互连(PCIe)根复合体,所述第一NIC包括第一节点的部件;
经由多对多外围交换机将对应于所述分组的分组数据从所述第一NIC转发到在第二节点上的PCIe根复合体,所述多对多外围交换机包括:分别地且操作地耦合到所述第一NIC和包括第二节点的部件的第二NIC的第一PCIe下游端口和第二PCIe下游端口,以及操作地耦合到所述第一节点和第二节点中的相应PCIe根复合体的第一上游端口和第二上游端口;以及
在所述多对多外围交换机中实现多个逻辑PCIe交换机,每个逻辑PCIe交换机经由PCIe上行链路耦合到相应的PCIe上游端口和并且经由相应的PCIe下行链路耦合到至少两个PCIe下游端口,其中每个逻辑PCIe交换机与具有包括单个PCIe根复合体的根的单个PCIe层级域相关联。
10.如权利要求9所述的方法,还包括:
在所述第一NIC处接收分组;以及
经由所述多对多PCIe交换机将对应于所述分组的分组数据从所述第一NIC转发到在所述第二节点上的PCIe根复合体。
11.如权利要求10所述的方法,还包括:
在耦合到所述第一NIC的PCIe下游端口处接收PCIe事务层协议(TLP)分组,所述PCIeTLP分组对应于由所述第一NIC发起的PCIe存储器写事务并包括对应于系统存储器中的地址的目的地地址;
检查所述PCIe TLP分组以确定其目的地地址;
采用所述目的地地址作为对包含多个条目的地址映射表的查找的输入,每个条目包括地址或地址范围以及针对下述之一的标识符:将所述分组转发到的PCIe根复合体,或所述多对多PCIe交换机上的经由其操作地耦合转发所述分组的所述PCIe根复合体的上游端口;以及
在所述多对多PCIe交换机内将所述分组内部地从所述PCIe下游端口转发到由匹配地址映射表条目而识别出的、或操作地耦合到由所述匹配地址映射表条目识别出的所述PCIe根复合体的PCIe上游端口。
12.如权利要求11所述的方法,还包括:
对于所述第一节点和第二节点中的每个,从在该节点上运行的至少一个基于软件的实体接收地址映射表条目;以及
将接收到的地址映射条目添加到所述地址映射表。
13.如权利要求10所述的方法,其中,所述多对多PCIe交换机按照PCIe规范来操作。
14.如权利要求9所述的方法,其中,所述计算机平台被配置为采用多个NUMA节点的非一致存储器存取(NUMA)体系结构。
15.一种计算机可读存储介质,在其上存储有指令,所述指令被处理器执行以实现根据权利要求9-14中任一项所述的方法。
16.一种采用多对多外围交换机的计算机平台,包括:
主板,包括多个非一致存储器存取(NUMA)节点的部件被安装到或操作地耦合到所述主板,每个NUMA节点包括具有至少一级高速缓存并操作地耦合到所述计算机平台的系统存储器的一部分的处理器、至少一个快速外围部件互连(PCIe)根复合体;以及
多对多快速外围部件互连(PCIe)交换机,其包括:
多个PCIe上游端口;
多个PCIe下游端口;以及
多个逻辑PCIe交换机,每个逻辑PCIe交换机经由PCIe上行链路耦合到相应的PCIe上游端口并经由相应的PCIe下行链路耦合到所述多个PCIe下游端口中的至少一部分;
其中,在所述计算机平台的操作期间,每个PCIe上游端口经由耦合在PCIe上游端口和NUMA节点之间的PCIe链路操作地耦合到在NUMA节点上的PCIe根复合体,且每个PCIe下游端口经由耦合在PCIe下游端口和NIC或PCIe设备槽之间的PCIe链路操作地耦合到NIC或PCIe设备槽,且所述多对多PCIe交换机配置成:
在所述NIC操作地耦合到的PCIe下游端口处从所述NIC接收分组,所述分组与所述NIC发起的PCIe事务有关;
检查每个分组以确定其目的地地址;以及
在所述多对多PCIe交换机内将每个分组内部地从接收到所述分组的PCIe下游端口转发到操作地耦合到能够经由其来到达所述目的地地址的PCIe根复合体的PCIe上游端口。
17.如权利要求16所述的计算机平台,其中,所述多个NUMA节点中的至少一个包括第一PCIe根复合体和第二PCIe根复合体,且其中所述多对多PCIe交换机包括第一PCIe上游端口和第二PCIe上游端口,所述第一PCIe上游端口和第二PCIe上游端口经由相应的第一PCIe上行链路和第二PCIe上行链路连接到相应的第一PCIe根复合体和第二PCIe根复合体。
18.如权利要求16所述的计算机平台,其中,所述多个NUMA节点包括四个节点,且所述NIC包括至少四个NIC。
19.如权利要求16所述的计算机平台,其中,所述多对多PCIe交换机还包括:
地址映射表,其配置成存储将地址范围映射到PCIe根复合体标识符或PCIe上游端口标识符中的一个的数据;
其中,在所述计算机平台的操作期间,分组的目的地地址用作对所述地址映射表的查找,导致包括PCIe根复合体标识符或PCIe上游端口标识符中的一个的匹配条目,且所述分组被转发到被识别出的或操作地耦合到被识别出的所述PCIe根复合体的PCIe上游端口。
20.如权利要求16所述的计算机平台,其中,在操作期间,所述多对多PCIe交换机配置成在PCIe层级列举期间将PCIe层级配置信息报告给每个PCIe根复合体,使得每个逻辑PCIe交换机对其经由PCIe上游端口操作地耦合到的所述PCIe根复合体看其来是具有单独的PCIe域的物理PCIe交换机。
21.如权利要求16所述的计算机平台,其中,所述多个逻辑PCIe交换机包括至少四个逻辑PCIe交换机,且第一逻辑交换机和第二逻辑交换机专用于转发与起源于第一NIC和第二NIC的PCIe事务有关的分组,所述第一NIC和第二NIC操作地耦合到的所述PCIe下游端口耦合到所述第一逻辑交换机和第二逻辑交换机且不耦合到其它逻辑交换机。
22.如权利要求16所述的计算机平台,其中,所述多对多PCIe交换机按照PCIe规范来操作。
23.一种采用多对多外围交换机的装置,包括:
多个网络接口控制器(NIC);
多对多快速外围部件互连(PCIe)交换机,其包括:
多个PCIe上游端口;
多个PCIe下游端口,每个PCIe下游端口操作地耦合到相应的NIC;以及
多个逻辑PCIe交换机,每个逻辑PCIe交换机经由PCIe上行链路耦合到相应的PCIe上游端口并经由相应的PCIe下行链路耦合到所述多个PCIe下游端口中的至少一部分;
其中,所述装置配置成安装在具有多个PCIe根复合体的计算机平台中,以及
其中,在所述计算机平台的操作期间,每个PCIe上游端口经由在PCIe上游端口和PCIe根复合体之间的PCIe链路操作地耦合到PCIe根复合体,且所述多对多PCIe交换机配置成:
在所述多个NIC操作地耦合到的所述PCIe下游端口处从所述多个NIC接收分组,所述分组与所述NIC发起的PCIe事务有关;
检查每个分组以确定其目的地地址;以及
在所述多对多PCIe交换机内将每个分组内部地从接收到所述分组的所述PCIe下游端口转发到操作地耦合到能够经由其达到所述目的地地址的PCIe根复合体的PCIe上游端口。
24.如权利要求23所述的装置,还包括:
地址映射表,其配置成存储将地址范围映射到PCIe根复合体标识符或PCIe上游端口标识符中的一个的数据;
其中,在所述装置的操作期间,分组的目的地地址用作对所述地址映射表的查找,导致包括PCIe根复合体标识符或PCIe上游端口标识符中的一个的匹配条目,且所述分组被转发到被识别出或操作地耦合到被识别出的所述PCIe根复合体的所述PCIe上游端口。
25.如权利要求23所述的装置,其中,在操作期间,所述多对多PCIe交换机配置成在所述计算机平台的PCIe层级列举期间将PCIe层级配置信息报告给每个PCIe根复合体,使得每个逻辑PCIe交换机对其经由PCIe上游端口操作地耦合到的所述PCIe根复合体看起来是具有单独的PCIe域的物理PCIe交换机。
26.如权利要求23所述的装置,其中,所述多个逻辑PCIe交换机包括至少四个逻辑PCIe交换机,PCIe设备包括多个PCIe设备,所述多个PCIe设备包括第一网络接口控制器(NIC)和第二网络接口控制器(NIC)或网络适配器卡和多个其它类型的PCIe设备,且第一逻辑PCIe交换机和第二逻辑PCIe交换机专用于转发与起源于所述第一NIC和第二NIC或网络适配器的PCIe事务有关的分组,所述第一NIC和第二NIC或网络适配器操作地耦合到的所述PCIe下游端口耦合到所述第一逻辑PCIe交换机和第二逻辑PCIe交换机且不耦合到其它逻辑交换机。
27.如权利要求23所述的装置,其中,所述计算机平台采用多个非一致存储器存取(NUMA)节点,每个NUMA节点包括具有至少一级高速缓存并操作地耦合到系统存储器的一部分的处理器,其中系统存储器的部分具有不重叠的单独地址空间,且每个NUMA节点还包括在所述计算机平台的操作期间在所述多对多PCIe交换机上的PCIe上游端口操作地耦合到的至少一个PCIe根复合体。
28.一种在包括系统存储器并具有多个处理器节点的计算机平台上实现的方法,每个处理器节点包括多个部件,所述多个部件包括操作地耦合到系统存储器的一部分的处理器和输入/输出(IO)根复合体,所述计算机平台还包括根据权利要求1-8中的任一项所述的多对多外围交换机,所述多对多外围交换机配置成将多个网络接口控制器(NIC)和多个外围设备槽操作地耦合到所述IO根复合体,所述方法包括:
配置所述计算机平台以在第一配置中操作,在所述第一配置下,所述多个处理器节点中的每一个是能够操作的,且每个NIC和外围设备槽与相应的处理器节点相关联;
禁用所述多个处理器节点之一的操作;
重新配置所述计算机平台以利用第二配置来操作,在所述第二配置下,该处理器节点被通过下述操作来禁用:将与所禁用的处理器节点相关联的存储器数据迁移到一个或多个其它节点并重新配置所述多对多外围交换机以逻辑地将与所禁用的处理器节点逻辑地相关联的任何NIC和/或外围设备与另一节点相关联。
29.如权利要求28所述的方法,其中,所述多对多外围交换机是多对多快速外围部件互连(PCIe)交换机,且所述IO根复合体包括PCIe根复合体。
30.如权利要求28或29所述的方法,还包括:
移除与所禁用的处理器节点相关联的处理器节点板或处理器;
重新配置所述计算机平台以在所述第二配置中操作;
实现用更换处理器节点板或处理器来更换被移除的所述处理器节点板或处理器;以及
重新配置所述计算机平台以按照所述第一配置来操作。
31.一种采用多对多外围交换机的系统,包括:
用于在包括多个节点的计算机平台中的第一网络接口控制器(NIC)处接收分组的单元,每个节点包括多个部件,所述多个部件包括操作地耦合到系统存储器的一部分的处理器以及操作地耦合到NIC的快速外围部件互连(PCIe)根复合体,所述第一NIC包括第一节点的部件;
用于经由多对多外围交换机将对应于所述分组的分组数据从所述第一NIC转发到在第二节点上的PCIe根复合体的单元,所述多对多外围交换机包括:分别地且操作地耦合到所述第一NIC和包括第二节点的部件的第二NIC的第一PCIe下游端口和第二PCIe下游端口,以及操作地耦合到所述第一节点和第二节点中的相应PCIe根复合体的第一上游端口和第二上游端口;以及
用于在所述多对多外围交换机中实现多个逻辑PCIe交换机,每个逻辑PCIe交换机经由PCIe上行链路耦合到相应的PCIe上游端口和并且经由相应的PCIe下行链路耦合到至少两个PCIe下游端口的单元,其中每个逻辑PCIe交换机与具有包括单个PCIe根复合体的根的单个PCIe层级域相关联。
32.如权利要求31所述的系统,还包括:
用于在所述第一NIC处接收分组的单元;以及
用于经由所述多对多PCIe交换机将对应于所述分组的分组数据从所述第一NIC转发到在所述第二节点上的PCIe根复合体的单元。
33.如权利要求32所述的系统,还包括:
用于在耦合到所述第一NIC的PCIe下游端口处接收PCIe事务层协议(TLP)分组的单元,所述PCIe TLP分组对应于由所述第一NIC发起的PCIe存储器写事务并包括对应于系统存储器中的地址的目的地地址;
用于检查所述PCIe TLP分组以确定其目的地地址的单元;
用于采用所述目的地地址作为对包含多个条目的地址映射表的查找的输入的单元,每个条目包括地址或地址范围以及针对下述之一的标识符:将所述分组转发到的PCIe根复合体,或所述多对多PCIe交换机上的经由其操作地耦合转发所述分组的所述PCIe根复合体的上游端口;以及
用于在所述多对多PCIe交换机内将所述分组内部地从所述PCIe下游端口转发到由匹配地址映射表条目而识别出的、或操作地耦合到由所述匹配地址映射表条目识别出的所述PCIe根复合体的PCIe上游端口的单元。
34.如权利要求33所述的系统,还包括:
用于对于所述第一节点和第二节点中的每个,从在该节点上运行的至少一个基于软件的实体接收地址映射表条目的单元;以及
用于将接收到的地址映射条目添加到所述地址映射表的单元。
35.如权利要求32所述的系统,其中,所述多对多PCIe交换机按照PCIe规范来操作。
36.如权利要求31所述的系统,其中,所述计算机平台被配置为采用多个NUMA节点的非一致存储器存取(NUMA)体系结构。
37.一种设备,包括:
存储器,在其上存储有指令;
处理器,所述处理器执行所述指令以实现根据权利要求9-14中任一项所述的方法。
CN201410437326.0A 2013-08-30 2014-08-29 Numa节点外围交换机 Active CN104426814B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/014,775 US10684973B2 (en) 2013-08-30 2013-08-30 NUMA node peripheral switch
US14/014,775 2013-08-30

Publications (2)

Publication Number Publication Date
CN104426814A CN104426814A (zh) 2015-03-18
CN104426814B true CN104426814B (zh) 2018-02-16

Family

ID=52584886

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410437326.0A Active CN104426814B (zh) 2013-08-30 2014-08-29 Numa节点外围交换机

Country Status (2)

Country Link
US (3) US10684973B2 (zh)
CN (1) CN104426814B (zh)

Families Citing this family (58)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102012113116B4 (de) * 2012-12-27 2014-09-18 Georg Bernitz Ein-/Ausgabegerät sowie Kommunikationssystem
JP6029550B2 (ja) * 2013-07-19 2016-11-24 株式会社日立製作所 計算機の制御方法及び計算機
WO2015033384A1 (ja) * 2013-09-03 2015-03-12 株式会社アキブシステムズ I/oデバイスの仮想化のためのコンピュータシステム及びその運用方法並びにhub装置
US9374305B2 (en) 2013-10-24 2016-06-21 Dell Products L.P. Packet transfer system
JP6111181B2 (ja) * 2013-10-31 2017-04-05 株式会社日立製作所 計算機の制御方法及び計算機
KR102147629B1 (ko) * 2013-11-18 2020-08-27 삼성전자 주식회사 플렉시블 서버 시스템
US9864623B2 (en) * 2013-11-21 2018-01-09 Centurylink Intellectual Property Llc Physical to virtual network transport function abstraction
US9838498B2 (en) * 2014-10-30 2017-12-05 ScaleFlux Remote direct non-volatile cache access
US10545901B2 (en) * 2015-01-29 2020-01-28 Hewlett-Packard Development Company, L.P. Memory card expansion
US10210120B2 (en) * 2015-03-26 2019-02-19 Intel Corporation Method, apparatus and system to implement secondary bus functionality via a reconfigurable virtual switch
DE112015006516T5 (de) 2015-05-07 2018-01-25 Intel Corporation BUS-Einrichtung-Funktion-Adressraumabbildung
ES2726302T3 (es) * 2015-09-21 2019-10-03 Huawei Tech Co Ltd Sistema informático y procedimiento para acceder a un dispositivo de punto extremo del mismo
US10146613B2 (en) 2015-10-14 2018-12-04 International Business Machines Corporation Symmetry management in multiprocessor systems
US10877920B2 (en) 2015-10-16 2020-12-29 Avi Pty Ltd Communications device for routing signals on communications networks
CN106713183B (zh) * 2015-10-30 2020-03-17 新华三技术有限公司 网络设备的接口板以及该网络设备和报文转发方法
US11102323B1 (en) * 2015-12-16 2021-08-24 EMC IP Holding Company LLC Network-integrated storage data cache
KR102092660B1 (ko) * 2015-12-29 2020-03-24 후아웨이 테크놀러지 컴퍼니 리미티드 Cpu 및 다중 cpu 시스템 관리 방법
CN106936739B (zh) * 2015-12-30 2020-02-11 新华三技术有限公司 一种报文转发方法及装置
US10142231B2 (en) * 2016-03-31 2018-11-27 Intel Corporation Technologies for network I/O access
US10237169B2 (en) * 2016-04-01 2019-03-19 Intel Corporation Technologies for quality of service based throttling in fabric architectures
US20170344283A1 (en) * 2016-05-27 2017-11-30 Intel Corporation Data access between computing nodes
CN109844725B (zh) * 2016-07-01 2023-07-25 英特尔公司 点对点互连中的非对称通道
US10277677B2 (en) * 2016-09-12 2019-04-30 Intel Corporation Mechanism for disaggregated storage class memory over fabric
WO2018058403A1 (en) * 2016-09-29 2018-04-05 Intel Corporation Techniques for movement of data between virtual machines
CN108123901B (zh) * 2016-11-30 2020-12-29 新华三技术有限公司 一种报文传输方法和装置
WO2018101136A1 (ja) 2016-11-30 2018-06-07 株式会社ソシオネクスト 情報処理システム、半導体集積回路及び情報処理方法
US20180276161A1 (en) * 2017-03-27 2018-09-27 Sk Hynix Memory Solutions Inc. PCIe VIRTUAL SWITCHES AND AN OPERATING METHOD THEREOF
US10581968B2 (en) * 2017-04-01 2020-03-03 Intel Corporation Multi-node storage operation
CN114064534A (zh) * 2017-04-17 2022-02-18 伊姆西Ip控股有限责任公司 一种用于存储设备的转接卡
US20190044809A1 (en) 2017-08-30 2019-02-07 Intel Corporation Technologies for managing a flexible host interface of a network interface controller
CN107566302B (zh) * 2017-10-10 2020-05-12 新华三技术有限公司 报文转发方法和装置
CN107948072B (zh) * 2017-10-31 2021-04-27 新华三技术有限公司 报文转发方法和装置
CN107817953B (zh) * 2017-11-20 2020-07-28 杭州宏杉科技股份有限公司 一种双控存储设备访问硬盘的方法及装置
JP7181447B2 (ja) 2018-03-30 2022-12-01 株式会社ソシオネクスト 情報処理システム、情報処理方法及び半導体装置
US11646980B2 (en) 2018-03-30 2023-05-09 Intel Corporation Technologies for packet forwarding on ingress queue overflow
US20190334990A1 (en) * 2018-04-27 2019-10-31 Exten Technologies, Inc. Distributed State Machine for High Availability of Non-Volatile Memory in Cluster Based Computing Systems
US10521388B2 (en) 2018-09-28 2019-12-31 Intel Corporation Multi-uplink device enumeration and management
US10761874B2 (en) 2018-11-27 2020-09-01 Red Hat, Inc. Dynamic virtual input/output and NUMA node management
US11360925B2 (en) * 2018-12-25 2022-06-14 Intel Corporation Method and apparatus for host adaptation to a change of persona of a configurable integrated circuit die
CN109634678A (zh) * 2019-01-07 2019-04-16 烽火通信科技股份有限公司 一种灵活支持多种板卡的方法及系统
JP6597925B1 (ja) * 2019-04-26 2019-10-30 富士通クライアントコンピューティング株式会社 情報処理システム
US10831694B1 (en) * 2019-05-06 2020-11-10 Mellanox Technologies, Ltd. Multi-host network interface controller (NIC) with external peripheral component bus cable including plug termination management
WO2021168758A1 (zh) * 2020-02-27 2021-09-02 华为技术有限公司 一种基于PCIe的通信方法及装置
US11799986B2 (en) * 2020-09-22 2023-10-24 Apple Inc. Methods and apparatus for thread level execution in non-kernel space
US11537539B2 (en) * 2020-10-19 2022-12-27 Softiron Limited Acceleration of data between a network and local I/O in a NUMA system
US20220197729A1 (en) * 2020-12-23 2022-06-23 Intel Corporation Advanced queue monitoring system
US11934333B2 (en) 2021-03-25 2024-03-19 Mellanox Technologies, Ltd. Storage protocol emulation in a peripheral device
US11934658B2 (en) 2021-03-25 2024-03-19 Mellanox Technologies, Ltd. Enhanced storage protocol emulation in a peripheral device
US11620245B2 (en) * 2021-05-09 2023-04-04 Mellanox Technologies, Ltd. Multi-socket network interface controller with consistent transaction ordering
US11895027B2 (en) * 2021-05-20 2024-02-06 Pensando Systems Inc. Methods and systems for service distribution using data path state replication and intermediate device mapping
US11593294B2 (en) 2021-05-20 2023-02-28 Pensando Systems Inc. Methods and systems for loosely coupled PCIe service proxy over an IP network
US11949589B2 (en) 2021-05-20 2024-04-02 Pensando Systems Inc. Methods and systems for service state replication using original data packets
US11902184B2 (en) 2021-05-20 2024-02-13 Pensando Systems Inc. Methods and systems for providing a virtualized NVMe over fabric service
US11726666B2 (en) * 2021-07-11 2023-08-15 Mellanox Technologies, Ltd. Network adapter with efficient storage-protocol emulation
CN113568855B (zh) * 2021-07-30 2024-05-14 福州创实讯联信息技术有限公司 一种低成本的pcie热拔插多模式兼容装置
US11853234B2 (en) * 2022-01-05 2023-12-26 Dell Products L.P. Techniques for providing access of host-local storage to a programmable network interface component while preventing direct host CPU access
CN115617722B (zh) * 2022-12-05 2023-03-07 成都博宇利华科技有限公司 实现多pcie设备共享dma链表的系统及方法
US11973693B1 (en) 2023-03-13 2024-04-30 International Business Machines Corporation Symmetric receive-side scaling (RSS) for asymmetric flows

Family Cites Families (116)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3749845A (en) 1971-08-27 1973-07-31 Bell Telephone Labor Inc Digital data communication system
JPH0764525A (ja) 1990-02-05 1995-03-10 Scitex Corp Ltd カラー画像処理装置及びその方法
US5398245A (en) 1991-10-04 1995-03-14 Bay Networks, Inc. Packet processing method and apparatus
US5243699A (en) 1991-12-06 1993-09-07 Maspar Computer Corporation Input/output system for parallel processing arrays
EP1635520A3 (en) 1995-09-18 2009-03-18 Kabushiki Kaisha Toshiba Packet transfer method and device
US6021263A (en) 1996-02-16 2000-02-01 Lucent Technologies, Inc. Management of ATM virtual circuits with resources reservation protocol
US5781549A (en) 1996-02-23 1998-07-14 Allied Telesyn International Corp. Method and apparatus for switching data packets in a data network
KR100226781B1 (ko) 1997-03-05 1999-10-15 김영환 노드(node)인식(recognition)방법
US6434620B1 (en) 1998-08-27 2002-08-13 Alacritech, Inc. TCP/IP offload network interface device
US6226680B1 (en) 1997-10-14 2001-05-01 Alacritech, Inc. Intelligent network interface system method for protocol processing
US6658480B2 (en) 1997-10-14 2003-12-02 Alacritech, Inc. Intelligent network interface system and method for accelerated protocol processing
US5937169A (en) 1997-10-29 1999-08-10 3Com Corporation Offload of TCP segmentation to a smart adapter
US6216167B1 (en) 1997-10-31 2001-04-10 Nortel Networks Limited Efficient path based forwarding and multicast forwarding
US6351474B1 (en) 1998-01-14 2002-02-26 Skystream Networks Inc. Network distributed remultiplexer for video program bearing transport streams
US6246683B1 (en) 1998-05-01 2001-06-12 3Com Corporation Receive processing with network protocol bypass
US6157955A (en) 1998-06-15 2000-12-05 Intel Corporation Packet processing system including a policy engine having a classification unit
US6434115B1 (en) 1998-07-02 2002-08-13 Pluris, Inc. System and method for switching packets in a network
JP3111993B2 (ja) 1998-07-14 2000-11-27 日本電気株式会社 ノード装置
US6308282B1 (en) 1998-11-10 2001-10-23 Honeywell International Inc. Apparatus and methods for providing fault tolerance of networks and network interface cards
US6389468B1 (en) 1999-03-01 2002-05-14 Sun Microsystems, Inc. Method and apparatus for distributing network traffic processing on a multiprocessor computer
US6483804B1 (en) 1999-03-01 2002-11-19 Sun Microsystems, Inc. Method and apparatus for dynamic packet batching with a high performance network interface
US6453360B1 (en) 1999-03-01 2002-09-17 Sun Microsystems, Inc. High performance network interface
US6650640B1 (en) 1999-03-01 2003-11-18 Sun Microsystems, Inc. Method and apparatus for managing a network flow in a high performance network interface
US6768992B1 (en) 1999-05-17 2004-07-27 Lynne G. Jolitz Term addressable memory of an accelerator system and method
US6728265B1 (en) 1999-07-30 2004-04-27 Intel Corporation Controlling frame transmission
US6597661B1 (en) 1999-08-25 2003-07-22 Watchguard Technologies, Inc. Network packet classification
US6633576B1 (en) 1999-11-04 2003-10-14 William Melaragni Apparatus and method for interleaved packet storage
US6564267B1 (en) 1999-11-22 2003-05-13 Intel Corporation Network adapter with large frame transfer emulation
US6683873B1 (en) 1999-12-27 2004-01-27 Cisco Technology, Inc. Methods and apparatus for redirecting network traffic
US6973040B1 (en) 2000-03-13 2005-12-06 Netzentry, Inc. Method of maintaining lists of network characteristics
US7050437B2 (en) 2000-03-24 2006-05-23 International Business Machines Corporation Wire speed reassembly of data frames
US6574195B2 (en) 2000-04-19 2003-06-03 Caspian Networks, Inc. Micro-flow management
US6778548B1 (en) 2000-06-26 2004-08-17 Intel Corporation Device to receive, buffer, and transmit packets of data in a packet switching network
US6715005B1 (en) 2000-06-29 2004-03-30 International Business Machines Corporation Method and system for reducing latency in message passing systems
US6687905B1 (en) 2000-08-11 2004-02-03 International Business Machines Corporation Multiple port input/output job scheduling
US6718326B2 (en) 2000-08-17 2004-04-06 Nippon Telegraph And Telephone Corporation Packet classification search device and method
US6708292B1 (en) 2000-08-18 2004-03-16 Network Associates, Inc. System, method and software for protocol analyzer remote buffer management
US6665495B1 (en) 2000-10-27 2003-12-16 Yotta Networks, Inc. Non-blocking, scalable optical router architecture and method for routing optical traffic
US7032035B2 (en) 2000-12-08 2006-04-18 Intel Corporation Method and apparatus for improving transmission performance by caching frequently-used packet headers
US6618793B2 (en) 2000-12-18 2003-09-09 Redback Networks, Inc. Free memory manager scheme and cache
US6665755B2 (en) 2000-12-22 2003-12-16 Nortel Networks Limited External memory engine selectable pipeline architecture
US6662276B2 (en) 2000-12-29 2003-12-09 Intel Corporation Storing directory information for non uniform memory architecture systems using processor cache
JP4427196B2 (ja) 2001-02-07 2010-03-03 株式会社日立製作所 Ipパケット通信装置及び冗長構成切替え方法
JP2002259352A (ja) 2001-03-01 2002-09-13 Handotai Rikougaku Kenkyu Center:Kk マルチプロセッサシステム装置
US20020144004A1 (en) 2001-03-29 2002-10-03 Gaur Daniel R. Driver having multiple deferred procedure calls for interrupt processing and method for interrupt processing
WO2002084957A2 (en) 2001-04-13 2002-10-24 Motorola, Inc., A Corporation Of The State Of Delaware Manipulating data streams in data stream processors
US6816455B2 (en) 2001-05-09 2004-11-09 Telecom Italia S.P.A. Dynamic packet filter utilizing session tracking
US7164680B2 (en) 2001-06-04 2007-01-16 Koninklijke Philips Electronics N.V. Scheme for supporting real-time packetization and retransmission in rate-based streaming applications
US7590143B2 (en) 2001-07-05 2009-09-15 Qualcomm Incorporated System and method for voice over IP
US7305492B2 (en) 2001-07-06 2007-12-04 Juniper Networks, Inc. Content service aggregation system
EP1421750B1 (en) 2001-08-30 2007-01-17 Tellabs Operations, Inc. System and method for communicating data using a common switch fabric
US7039061B2 (en) 2001-09-25 2006-05-02 Intel Corporation Methods and apparatus for retaining packet order in systems utilizing multiple transmit queues
JP4093741B2 (ja) 2001-10-03 2008-06-04 シャープ株式会社 外部メモリ制御装置およびそれを含んだデータ駆動型情報処理装置
US6754800B2 (en) 2001-11-14 2004-06-22 Sun Microsystems, Inc. Methods and apparatus for implementing host-based object storage schemes
US7227870B2 (en) 2001-11-20 2007-06-05 Broadcom Corporation Systems including packet interfaces, switches, and packet DMA circuits for splitting and merging packet streams
US20030108044A1 (en) 2001-12-11 2003-06-12 Roland Hendel Stateless TCP/IP protocol
US6633835B1 (en) 2002-01-10 2003-10-14 Networks Associates Technology, Inc. Prioritized data capture, classification and filtering in a network monitoring environment
US6957281B2 (en) 2002-01-15 2005-10-18 Intel Corporation Ingress processing optimization via traffic classification and grouping
US7080308B2 (en) 2002-03-22 2006-07-18 Intel Corporation Method and apparatus to perform error control
US7342894B2 (en) 2002-04-03 2008-03-11 Qualcomm Incorporated System and method for transparent Mobile IP registration within PPP negotiation
US7496689B2 (en) 2002-04-22 2009-02-24 Alacritech, Inc. TCP/IP offload device
US7284272B2 (en) 2002-05-31 2007-10-16 Alcatel Canada Inc. Secret hashing for TCP SYN/FIN correspondence
US7373663B2 (en) 2002-05-31 2008-05-13 Alcatel Canada Inc. Secret hashing for TCP SYN/FIN correspondence
AU2003251492A1 (en) 2002-06-11 2003-12-22 Ashish A. Pandya High performance ip processor for tcp/ip, rdma and ip storage applications
US20030231657A1 (en) 2002-06-12 2003-12-18 Kacheong Poon System and method for a multi-data network layer transmit interface
US7080379B2 (en) 2002-06-20 2006-07-18 International Business Machines Corporation Multiprocessor load balancing system for prioritizing threads and assigning threads into one of a plurality of run queues based on a priority band and a current load of the run queue
US7142540B2 (en) 2002-07-18 2006-11-28 Sun Microsystems, Inc. Method and apparatus for zero-copy receive buffer management
US7162740B2 (en) 2002-07-22 2007-01-09 General Instrument Corporation Denial of service defense by proxy
US6968358B2 (en) 2002-07-25 2005-11-22 International Business Machines Corporation Method and apparatus for network communication card memory management
US7308000B2 (en) 2002-11-07 2007-12-11 Sun Microsystems, Inc. Methods and systems for efficient multi-packet data processing in a layered network protocol
US7043494B1 (en) 2003-01-28 2006-05-09 Pmc-Sierra, Inc. Fast, deterministic exact match look-ups in large tables
US7835397B2 (en) 2003-04-25 2010-11-16 Alcatel-Lucent Usa Inc. Frame processing
US7219228B2 (en) 2003-08-25 2007-05-15 Lucent Technologies Inc. Method and apparatus for defending against SYN packet bandwidth attacks on TCP servers
US7586925B2 (en) 2003-09-09 2009-09-08 Sonus Networks, Inc. Data adaptation protocol
US7188198B2 (en) 2003-09-11 2007-03-06 International Business Machines Corporation Method for implementing dynamic virtual lane buffer reconfiguration
US6981074B2 (en) 2003-10-14 2005-12-27 Broadcom Corporation Descriptor-based load balancing
US20050249228A1 (en) 2004-05-05 2005-11-10 Linden Cornett Techniques for providing scalable receive queues
US20060004933A1 (en) 2004-06-30 2006-01-05 Sujoy Sen Network interface controller signaling of connection event
US20060031474A1 (en) 2004-07-19 2006-02-09 Linden Cornett Maintaining reachability measures
US7639624B2 (en) 2004-07-23 2009-12-29 Hewlett-Packard Development Company, L.P. Method and system for monitoring network connectivity
US8098676B2 (en) 2004-08-12 2012-01-17 Intel Corporation Techniques to utilize queues for network interface devices
US20060064508A1 (en) 2004-09-17 2006-03-23 Ramesh Panwar Method and system to store and retrieve message packet data in a communications network
US7620046B2 (en) 2004-09-30 2009-11-17 Intel Corporation Dynamically assigning packet flows
US7620071B2 (en) 2004-11-16 2009-11-17 Intel Corporation Packet coalescing
US7693045B2 (en) 2004-12-29 2010-04-06 Hewlett-Packard Development Company, L.P. Verifying network connectivity
US7404040B2 (en) 2004-12-30 2008-07-22 Intel Corporation Packet data placement in a processor cache
US7302533B2 (en) 2005-03-11 2007-11-27 International Business Machines Corporation System and method for optimally configuring software systems for a NUMA platform
US7287114B2 (en) * 2005-05-10 2007-10-23 Intel Corporation Simulating multiple virtual channels in switched fabric networks
US7480303B1 (en) * 2005-05-16 2009-01-20 Pericom Semiconductor Corp. Pseudo-ethernet switch without ethernet media-access-controllers (MAC's) that copies ethernet context registers between PCI-express ports
US8311059B2 (en) 2005-09-07 2012-11-13 Emulex Design & Manufacturing Corporation Receive coalescing and automatic acknowledge in network interface controller
US7430630B2 (en) * 2005-10-27 2008-09-30 International Business Machines Corporation Routing mechanism in PCI multi-host topologies using destination ID field
US8134928B1 (en) 2005-12-15 2012-03-13 Nvidia Corporation Technique for identifying a failed network interface card within a team of network interface cards
US7707465B2 (en) * 2006-01-26 2010-04-27 International Business Machines Corporation Routing of shared I/O fabric error messages in a multi-host environment to a master control root node
US7676625B2 (en) * 2006-08-23 2010-03-09 Sun Microsystems, Inc. Cross-coupled peripheral component interconnect express switch
US20080137676A1 (en) * 2006-12-06 2008-06-12 William T Boyd Bus/device/function translation within and routing of communications packets in a pci switched-fabric in a multi-host environment environment utilizing a root switch
US7984454B2 (en) * 2006-12-19 2011-07-19 International Business Machines Corporation Migration of single root stateless virtual functions
US7836238B2 (en) * 2006-12-19 2010-11-16 International Business Machines Corporation Hot-plug/remove of a new component in a running PCIe fabric
US7562176B2 (en) * 2007-02-28 2009-07-14 Lsi Corporation Apparatus and methods for clustering multiple independent PCI express hierarchies
US7752346B2 (en) * 2007-12-21 2010-07-06 Aprius, Inc. Universal routing in PCI-Express fabrics
US9178839B2 (en) 2008-07-24 2015-11-03 International Business Machines Corporation Sharing buffer space in link aggregation configurations
US8140817B2 (en) 2009-02-24 2012-03-20 International Business Machines Corporation Dynamic logical partition management for NUMA machines and clusters
US8174835B2 (en) * 2009-04-01 2012-05-08 Fusion-Io, Inc. Hot swappable computer card carrier
US8335884B2 (en) * 2009-07-10 2012-12-18 Brocade Communications Systems, Inc. Multi-processor architecture implementing a serial switch and method of operating same
US8438284B2 (en) 2009-11-30 2013-05-07 Red Hat, Inc. Network buffer allocations based on consumption patterns
US9195623B2 (en) * 2010-06-23 2015-11-24 International Business Machines Corporation Multiple address spaces per adapter with address translation
US8725912B2 (en) 2010-09-17 2014-05-13 Oracle International Corporation Dynamic balancing of IO resources on NUMA platforms
US8694618B2 (en) 2011-04-13 2014-04-08 Microsoft Corporation Maximizing data transfer through multiple network devices
US20120265801A1 (en) 2011-04-13 2012-10-18 Microsoft Corporation Out of order assembling of data packets
US9021138B2 (en) 2011-08-26 2015-04-28 Microsoft Technology Licensing, Llc Performance of multi-processor computer systems
JP5565425B2 (ja) * 2012-02-29 2014-08-06 富士通株式会社 演算装置、情報処理装置および演算方法
TW201351930A (zh) * 2012-06-04 2013-12-16 Accusys Inc 交換器系統以及操作交換器的方法
US9450780B2 (en) 2012-07-27 2016-09-20 Intel Corporation Packet processing approach to improve performance and energy efficiency for software routers
CN102833332B (zh) 2012-08-23 2016-05-04 武汉烽火网络有限责任公司 一种分布式多对多设备通信和管理方法
US9189441B2 (en) * 2012-10-19 2015-11-17 Intel Corporation Dual casting PCIE inbound writes to memory and peer devices
US9047417B2 (en) 2012-10-29 2015-06-02 Intel Corporation NUMA aware network interface
US9146890B1 (en) * 2013-01-25 2015-09-29 Pmc—Sierra Us, Inc. Method and apparatus for mapped I/O routing in an interconnect switch

Also Published As

Publication number Publication date
US10684973B2 (en) 2020-06-16
US20230176987A1 (en) 2023-06-08
US11960429B2 (en) 2024-04-16
US11593292B2 (en) 2023-02-28
US20200301864A1 (en) 2020-09-24
CN104426814A (zh) 2015-03-18
US20150067229A1 (en) 2015-03-05

Similar Documents

Publication Publication Date Title
CN104426814B (zh) Numa节点外围交换机
US11102117B2 (en) In NIC flow switching
CN113810312B (zh) 用于管理存储器资源的系统和方法
TWI474181B (zh) 在多根pcie環境中區別刀鋒型目的地及訊務類型
US8904079B2 (en) Tunneling platform management messages through inter-processor interconnects
US9047417B2 (en) NUMA aware network interface
JP4931787B2 (ja) データ処理システム内で第1のホスト・システムと第2のホスト・システムとの間で通信するための方法、プログラム、およびシステム(トランザクション・プロトコルおよび共用メモリを使用するホスト・システム間の通信のためのシステムおよび方法)
US8176204B2 (en) System and method for multi-host sharing of a single-host device
JP5763873B2 (ja) データ処理システムの複数のルート複合体間の通信のために共用メモリを初期設定するための方法、コンピュータ・プログラム、およびデータ処理システム
US10911358B1 (en) Packet processing cache
US8374175B2 (en) System and method for remote direct memory access over a network switch fabric
JP5362980B2 (ja) データ処理システム内で第1のホスト・システムと第2のホスト・システムとの間で通信するための方法、プログラム、およびシステム(ソケット接続および共用メモリを使用するホスト・システム間の通信のためのシステムおよび方法)
CN101447986B (zh) 具有分区的片上网络及其处理方法
CN109582611A (zh) 加速器结构
US20140185611A1 (en) Distributed packet switching in a source routed cluster server
CN107111576A (zh) 发布的中断架构
US20040210693A1 (en) Managing I/O accesses in multiprocessor systems
US20140188996A1 (en) Raw fabric interface for server system with virtualized interfaces
US20070097949A1 (en) Method using a master node to control I/O fabric configuration in a multi-host environment
US20070067432A1 (en) Computer system and I/O bridge
US20070019637A1 (en) Mechanism to virtualize all address spaces in shared I/O fabrics
JP2008152786A (ja) データ処理システム内で1つまたは複数のエンドポイントの第1の物理機能から第2の物理機能に仮想機能を移行するための方法、プログラム、およびシステム(単一ルート・ステートレス仮想機能の移行のためのシステムおよび方法)
JP2008152787A (ja) データ処理システム内で実行中の通信ファブリックにコンポーネントをホット・プラグするための方法、プログラム、およびシステム(実行中のPCIeファブリックにおける新しいコンポーネントのホット・プラグ/除去のためのシステムおよび方法)
CN103392175A (zh) Pci快速多根i/o虚拟化环境中的低延迟优先排序
US8725919B1 (en) Device configuration for multiprocessor systems

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