CN106575283A - 使用元胞自动机的群集服务器配置 - Google Patents

使用元胞自动机的群集服务器配置 Download PDF

Info

Publication number
CN106575283A
CN106575283A CN201580044442.9A CN201580044442A CN106575283A CN 106575283 A CN106575283 A CN 106575283A CN 201580044442 A CN201580044442 A CN 201580044442A CN 106575283 A CN106575283 A CN 106575283A
Authority
CN
China
Prior art keywords
node
calculate node
message
configuration
calculate
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
CN201580044442.9A
Other languages
English (en)
Other versions
CN106575283B (zh
Inventor
迈克尔·E·詹姆斯
珍-菲利浦·弗里克
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.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices Inc
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 Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of CN106575283A publication Critical patent/CN106575283A/zh
Application granted granted Critical
Publication of CN106575283B publication Critical patent/CN106575283B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0876Aspects of the degree of configuration automation
    • H04L41/0886Fully automatic configuration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17356Indirect interconnection networks
    • G06F15/17368Indirect interconnection networks non hierarchical topologies
    • G06F15/17387Three dimensional, e.g. hypercubes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0803Configuration setting
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0803Configuration setting
    • H04L41/0806Configuration setting for initial configuration or provisioning, e.g. plug-and-play
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/16Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks using machine learning or artificial intelligence
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/48Routing tree calculation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/48Routing tree calculation
    • H04L45/488Routing tree calculation using root node determination
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network

Abstract

在系统复位或其他配置事件之后配置群集计算机服务器[100]。为了配置的目的,所述群集计算服务器的结构的每个节点[101、102]用作元胞自动机中的元胞,由此避免了对于用于从中央管理单元传递配置信息的特殊配置网络的需要。实际上,所述节点使用在所述节点处的软件服务的正常执行期间用于传递消息的相同结构互连[112]来传递配置信息。

Description

使用元胞自动机的群集服务器配置
公开背景领域
本公开大体涉及处理系统,并且更具体地涉及群集服务器的配置。
现有技术描述
有时使用通过一个或多个结构互连连接在一起的计算节点来实现诸如服务器系统的高性能计算系统。计算节点执行软件程序以便执行指定的服务,诸如文件管理、数据库管理、文档打印管理、网页存储和呈现、计算机游戏服务等、或其组合。多个计算节点有助于处理相对大量的数据,同时还有助于计算系统的直接建立和缩放。结构互连为计算节点之间的通信提供骨干,并且因此可具有对处理器性能的重大影响。为了在系统复位之后使用结构互连,计算节点通常必须配置有实现结构互连的通信方案的地址表和路由表。
附图简述
通过参考附图,可更好地理解本公开,并且它的许多特征和优点对本领域技术人员来说变得显而易见。在不同图示中相同参考符号的使用指示类似或相同的物件。
图1是根据一些实施方案的群集计算服务器的框图。
图2是示出根据一些实施方案的针对群集计算服务器实现的示例性网络拓扑的框图。
图3是示出根据一些实施方案的示例性计算节点以及所述计算节点与图2的网络拓扑中的其连接的计算节点的维度关系的框图。
图4是示出根据一些实施方案的群集计算服务器的计算节点的配置状态字段的框图。
图5是示出根据一些实施方案的图4的一个配置状态字段的配置状态集合的框图。
图6是根据一些实施方案的配置群集计算服务器的结构的方法的流程图。
图7是示出根据一些实施方案的包括管理单元节点的群集计算服务器的示例性结构拓扑的框图。
图8是示出根据一些实施方案的图4的节点在配置期间的状态转换的框图。
图9是示出根据一些实施方案的由群集计算服务器的节点自组织的示例性生成树的框图。
图10是示出根据一些实施方案的在图8的生成树上传递CHAIN型配置消息的实例的框图。
图11是示出根据一些实施方案的在图8的生成树上传递CHAIN型配置消息的实例的框图。
图12是示出根据一些实施方案的群集计算服务器的节点的示例性物理布置的框图。
图13是示出根据一些实施方案的群集计算服务器的计算节点的示例性实现方式的框图。
图14是示出根据一些实施方案的用于设计和制造集成电路(IC)装置的方法的流程图。
实施方案详述
图1-14示出用于在系统复位或其他配置事件之后配置群集计算服务器的结构的技术。为了配置的目的,将结构的每个节点用作元胞自动机中的元胞,由此避免了对于用于从中央管理单元传递配置信息的特殊配置网络的需要。实际上,节点使用用于在节点处的软件服务的正常执行期间传递消息的相同结构互连来传递配置信息,而不需要提前根据固定拓扑预配置用于网络路由选择的结构互连。这降低了服务器复杂性,并且提供了群集计算服务器的更好可扩展性。
为了说明,群集计算服务器采用结构互连来连接其各个节点。在正常操作期间,当计算节点执行软件服务时,每个节点能够将单播消息传递到服务器的每个其他节点是有用的,从而改善软件服务的整体服务器效率和质量。因此,在正常操作期间,计算服务器的结构实现消息路由选择方案,由此每个节点在结构中具有固定地址,并且本地存储描述消息路由选择方案的路由选择规则的路由选择信息(例如,路由表)。因为结构拓扑可能由于单独计算节点处的错误或故障而随时间改变,所以在每个计算节点处永久地存储固定的路由选择信息通常是不可行的。此类拓扑变化将使大部分固定的路由选择信息无效,从而降低服务器性能。因此,计算服务器在每次系统复位之后配置结构是有用的,由此在配置结构期间:1)识别由结构的功能节点所限定的结构拓扑,以及2)向每个功能节点分配唯一的地址和路由选择信息。此过程在本文中被称为计算服务器的“配置”(或结构的配置)。
为了执行配置,常规的群集计算服务器通常采用“带外”网络,所述“带外”网络与用于在正常操作期间在节点之间传递消息的结构互连分开。然而,在具有许多计算节点的服务器系统中,带外网络需要大量时间来分配节点地址和路由选择信息,并且另外配置每个结构节点。此外,带外网络自身必须具有用于将所有配置消息路由到单独节点的基础结构,从而增加了计算服务器的复杂性和成本。
与常规的计算服务器相反,本文所公开的技术提供一种群集计算服务器,其通过在每个计算节点处并入用于存储一组定义的配置字段的寄存器或其他存储结构来传递节点地址、路由选择信息和其他配置信息,由此每个字段可呈现任何有限的一组对应状态。在限定的时间间隔(在此称为配置周期)中,服务器的每个节点基于配置字段的先前状态以及基于通过结构互连而连接到所述节点的每个其他节点处的对应配置字段的状态,设置其每个配置字段的状态(保持在其先前状态或演进到新状态)。基于其配置字段的状态,节点将执行与配置字段的状态相关联的一个或多组预定义的、存储的配置指令。因此,配置字段限定在计算节点处执行的一个或多个任务,并且仅取决于在其连接的节点的配置寄存器处的对应字段的状态。因此,本文所公开的群集计算服务器不需要采用带外配置网络,从而简化计算服务器设计并且允许更快地配置大数目的计算节点。实际上,本文所公开的技术通过基于相邻节点中的状态变化分配配置信息来创建虚拟带外网络。
在一些实施方案中,计算节点处的改变状态针对群集计算服务器执行至少两个配置操作:拓扑分析和配置消息的传递。对于拓扑分析,计算节点的配置字段的状态演进,以使得1)检测并准备功能计算节点以用于配置消息的传递;以及2)计算节点自组织成生成树。一旦已经组织生成树,结构节点就可传递配置消息,其中节点根据消息类型所暗示的分配规则将消息分配到其连接的节点。群集计算服务器的一个或多个管理单元通过在生成树的根计算节点处初始化配置消息来注入配置信息,并且每个节点处的分配规则致使消息到达生成树中的每一个计算节点。管理单元从而可分配诸如路由表、节点地址信息等的配置信息以便使节点准备正常操作。
在一些情况下,群集计算服务器可响应于所限定的错误条件(诸如检测到生成树中的故障计算节点)重新进行拓扑分析。然后,计算节点将通过使对应配置字段自动返回对应拓扑分析状态并且重整生成生成树来调整生成树拓扑。因此,计算节点可针对单独计算节点处的故障和其他错误自动地进行调整。
为了便于说明,在如以下参照图1-12描述的群集计算服务器的示例性上下文中描述服务器的配置。此类服务器的实例包括可购自Advanced Micro Devices公司的SeaMicro(TM)部门的SM10000系列或SM15000系列的服务器。尽管以下描述了概述,但是在美国专利号7,925,802和8,140,719中发现关于群集计算服务器的实施方案的附加细节,所述专利申请的全部内容通过引用并入本文。本文所描述的技术不限于此示例性上下文,实际上可在各种服务器中的任一个中实现。此外,虽然在采用MAC地址的以太网实现方式的上下文中描述这些技术,但是这些技术可在各种链路层协议和寻址方案中的任何一个中实现。
图1示出根据一些实施方案的群集计算服务器100。在本文中被称为“服务器100”的群集计算服务器100包括在机架单元(RU)系统中将计算、存储、交换和服务器管理汇集在一起的数据中心平台。服务器100基于通过结构互连112链接在一起的独立低功率计算节点(例如,计算节点101-106)、存储节点(例如,存储节点107-109)、网络节点(例如,网络节点110和111)和管理节点(例如,管理单元113)的并行阵列,所述结构互连112包括高带宽、低延迟超级计算机互连。每个节点被实现为独立的现场可更换单元(FRU),其包括设置在基于印刷电路板(PCB)的卡或刀片上的部件,以便有助于有效的建立、缩放、维护、修复和热插拔能力。
计算节点操作来执行各种软件程序,包括操作系统(OS)、管理程序、虚拟化软件、计算应用程序等。与常规的服务器节点一样,服务器100的计算节点包括一个或多个处理器、以及用于存储供由所述一个或多个处理器使用的指令和数据的系统存储器。然而,与常规的服务器节点不同的是,在一些实施方案中,计算节点并未单独地并入诸如存储装置、I/O控制装置和网络接口卡(NIC)的各种本地外围设备。相反,在计算节点之间共享服务器100的远程外围资源,从而允许从计算节点消除通常在服务器主板上发现的许多部件(诸如I/O控制器和NIC),并且除结构接口装置之外主要留下一个或多个处理器和系统存储器。
在响应于系统复位的配置之后,可以被实现为例如专用集成电路(ASIC)的结构接口装置操作来虚拟化服务器100的远程共享外围资源,以使得这些远程外围资源对于在每个处理器处执行的OS呈现为位于对应处理器的本地外围总线上。这些虚拟化外围资源可包括但不限于:大容量存储装置、控制台、以太网NIC、光纤通道NIC、无线带宽(TM)NIC、存储主机总线适配器(HBA)、基本输入/输出系统(BIOS)、通用串行总线(USB)装置、火线(TM)装置、PCIe装置、用户接口装置(例如,视频、键盘和鼠标)等。远程外围资源在硬件中的这种虚拟化和共享使得远程外围资源的虚拟化对于计算节点处的OS和其他本地软件是透明的。此外,通过结构接口装置的远程外围资源的这种虚拟化和共享容许使用结构接口装置来代替通常在服务器主板上发现的多个部件。这减少了在每个计算节点处实现的部件的数目,这进而使得计算节点能够具有更小的形状因数,同时比实现独立和单独的外围资源的常规服务器刀片消耗更少的能量。
存储节点和网络节点(统称为“输入/输出(I/O)节点”)实现管理一个或多个共享外围资源的外围装置控制器。此控制器与计算节点的结构接口装置协调,以便虚拟化和共享由资源管理器管理的外围资源。为了说明,存储节点107管理硬盘驱动器(HDD)116,并且存储节点108管理固态驱动器(SSD)118。在一些实施方案中,任何内部大容量存储装置可安装任何处理器。此外,大容量存储装置可在逻辑上分成切片或“虚拟盘”,所述切片或“虚拟盘”中的每一个可以被分发给单个计算节点,或者如果以只读模式使用所述切片或“虚拟盘”,则所述切片或“虚拟盘”被多个计算节点共享作为大型共享数据高速缓存。虚拟盘的共享使得用户能够为整个服务器100一次性存储或更新公用数据,诸如操作系统、应用软件和高速缓存数据。作为由I/O节点管理的共享外围资源的另一个实例,存储节点109管理远程BIOS 120、控制台/通用异步收发器(UART)121和数据中心管理网络123。网络节点110和111各自管理连接到数据中心网络114的一个或多个以太网上行链路。以太网上行链路类似于机架顶交换机的上行链路端口,并且可被配置来直接连接到例如数据中心网络114的行尾交换机或核心交换机。远程BIOS 120可以与大容量存储装置、NIC和其他外围资源相同的方式被虚拟化,以便作为服务器的一些或所有节点的本地BIOS操作,从而容许此类节点放弃在每个节点处实现本地BIOS的至少一部分。在一些实施方案中,服务器的节点各自包括响应于系统复位而执行的本地BIOS。本地BIOS的执行允许每个节点参与本文进一步描述的配置过程。特别地,本地BIOS的执行根据节点的状态在节点处执行任务,并且根据节点的先前状态和其连接的节点的状态将节点转换到不同状态。
计算节点的结构接口装置、I/O节点的结构接口和结构互连112一起操作,作为使计算节点的计算资源与I/O节点的外围资源连接的结构122。为此,结构122实现分布式交换设施,由此结构接口和结构接口装置中的每一个包括连接到结构互连112的双向链路的多个端口,并且在响应于系统复位而配置结构互连112之后,根据在服务器100的节点处实现的确定性路由选择逻辑作为链路层交换机操作以便在端口中路由分组流量。注意,术语“链路层”通常是指开放系统互连(OSI)模型的数据链路层或层2。
结构互连112可包括固定或柔性互连,诸如背板、印刷线路板、主板、电缆或其他柔性线路、或其组合。此外,结构互连112可包括电信令、光子信令或其组合。在一些实施方案中,结构互连112的链路包括根据以下中的一个或多个实现的高速双向串行链路:快速外围部件互连(PCIE)标准、快速IO标准、Rocket IO标准、超传输标准、光纤通道标准、基于以太网的标准(诸如千兆以太网(GbE)附接单元接口(XAUI)标准)等。
尽管如以下参照图12所描述的实现节点的FRU通常物理布置在服务器盒中的一行或多行中,在配置期间,结构122可以各种网格拓扑或其他网络拓扑中的任何一种逻辑地布置节点,所述其他网络拓扑诸如环面、多维环面(也称为k叉n立方)、树、胖树等。为了说明的目的,本文在多维环面网络拓扑的上下文中描述服务器100。然而,可在使用本文所提供的准则的其他网络拓扑中类似地应用所描述的技术。
计算节点101-106中的每一个包括配置状态寄存器(例如,在计算节点101处的配置状态寄存器170),以便存储对应计算节点的一组配置字段。如本文进一步描述的,每个配置字段存储对应计算节点的配置的特定方面的状态信息。例如,一个配置字段可在映射服务器100的节点的生成树中存储指示对应计算节点相对于其连接的节点的位置的配置信息。在操作中,每个计算节点周期性地检查在其连接的计算节点的配置状态寄存器处的配置字段,并且基于这些字段的值更新其自身的配置状态寄存器的配置字段处的值。基于其配置状态寄存器的配置字段处的值,计算节点执行所限定的配置操作,诸如对配置消息进行内部处理、将配置消息传递到其连接的节点、响应于配置消息生成数据等。此外,通过在其连接的节点处致使转换并且观察那些节点处的状态变化,计算节点可识别其未连接到的节点(远程节点)的状态和配置并且可生成消息,所述消息在通过如本文描述的结构传播时致使远程节点处的状态和配置改变。
为了配置每个计算节点,在每个计算节点的配置状态寄存器处的配置字段基于由管理节点113注入的配置信息随时间演进。限定每个配置字段的状态更新,以使得配置字段的演进导致每个计算节点接收结构互连112的拓扑中的唯一地址以及路由选择信息,所述信息允许根据每个节点的唯一地址在节点之间路由消息。计算节点由此准备在服务器100的正常(配置后)操作期间路由单播消息。
图2示出根据一些实施方案的在被布置为k叉n立体或多维环面的网络拓扑中的服务器100的示例性配置。在所描绘的示例中,服务器100实现深度为三(即,k=n=3)的三维(3D)环面网络拓扑(在本文中被称为“环面网络200”)。因此,服务器100实现布置在三个正交维度(X,Y,Z)中形成的环网络中的总共二十七个节点,并且每个节点是三个不同环的成员,在每个维度中存在一个环。每个节点通过结构互连112的双向串行链路(参见图1)连接到多达六个相邻节点。在图2中,通过位置元组(x,y,z)识别环面网络200中的每一个节点的相对位置,其中x、y和z分别表示计算节点在X维度、Y维度和Z维度中的位置。这样,节点的元组(x,y,z)也可用作其在环面网络200内的地址,并且因此用作用于将分组路由到由位置元组(x,y,z)表示的位置处的目的地节点的源路由选择控制。
在一些实施方案中,响应于系统复位,结构互连112配置每个节点,使得一个或多个媒体访问控制(MAC)地址暂时或永久地与给定节点相关联。这种相关联的MAC地址中的一些或全部可直接表示位置元组(x,y,z),这允许基于分组的目的地MAC地址确定并源路由目的地节点在环面网络200中的位置。在配置期间,可在节点处高速缓存用于定位元组平移的MAC地址的分布式查找表,以便有助于基于目的地MAC地址识别目的地节点的位置。
应当理解,所示出的X维度、Y维度和Z维度表示描述每个节点在网络中的位置的逻辑维度,但未必表示指示每个节点的物理布局的物理维度。例如,环面网络200的3D环面网络拓扑可通过结构互连112的布线来实现,其中网络中的节点物理地布置在背板上或机架中的一行或多行中。也就是说,环面网络200中的给定节点的相对位置由其连接到的节点限定,而不是由计算节点的物理位置限定。在一些实施方案中,结构122(参见图1)包括通过结构互连112线连在一起的多个插座以便实现3D环面网络拓扑,并且每个节点包括被配置来耦接到结构互连112所使用的插座的现场可更换单元(FRU),以使得节点在环面网络200中的位置由将FRU插入其中的插座指定。
在服务器100中,在配置结构互连112之后,在节点之间传递的消息被分段成一个或多个分组,在源节点与目的地节点之间的路由选择路径上路由所述分组。路由选择路径可包括零个、一个或多于一个中间节点。如上所述,每个节点(包括每个I/O节点)包括到结构互连112的接口,所述接口实现链路层交换机以便在连接到结构互连212的对应链路的节点的端口中路由分组。在一些实施方案中,在配置这些分布式交换机之后,所述分布式交换机操作来使用有助于避免结构死锁的源路由选择或源路由方案在结构122上路由分组,所述源路由方案诸如严格确定性维序路由选择方案(也即是说,在移动到另一维度之前在一个维度上完全穿过环面网络200)。为了说明严格确定性维序路由选择的实例,从位置(0,0,0)处的节点传输到位置(2,2,2)处的分组将会:如果最初在X维度上从节点(0,0,0)传输到节点(1,0,0),则其将在X维度上继续到节点(2,0,0),此时它将在Y平面中从节点(2,0,0)移动到节点(2,1,0),并且然后移动到节点(2,2,0),以及然后在Z平面中从节点(2,2,0)移动到节点(2,2,1),并且然后移动到节点(2,2,2)。在源与目的地之间完全穿过平面的顺序可以被预配置,并且对于每个节点可不同。
此外,由于在环面网络200中的节点之间存在多个路由,所以结构212可以在配置过程期间被配置以便在主路径故障的情况下使分组流量穿过次级路径。结构212还可以被配置来实现分组分类和虚拟通道,以便更有效地利用链路带宽并且消除分组环路,以及因此避免对链路级环路预防和冗余协议(诸如生成树协议)的需要。
常规地,某些类型的节点被配置成在服务器处的软件服务的正常执行期间在其路由选择能力上受限制。例如,容许计算节点充当在分组的源节点与分组的目的地节点之间的分组路由选择路径中存在的中间节点,然而I/O节点被配置以便仅充当源节点或目的地节点,并且不充当将分组路由到其他节点的中间节点。在所示出的实施方案中,每个I/O节点被配置来以类似于计算节点的方式路由分组,使得所有节点提供类似的路由选择能力。
结构122可被配置来实现各种分组路由选择和技术协议。例如,为了避免在每个节点的交换机处需要大缓冲器,结构122可在配置之后使用基于流控制数(“微片”)的交换,由此每个分组被分段成一系列微片。被称为头微片的第一微片保持有关分组的路由的信息(即目的地地址),并且为与所述分组相关联的所有后续微片设置路由选择行为。头微片后面是零个或更多个体微片,其包含数据的实际有效载荷。被称为尾微片的最终微片执行某种簿记,以便释放源节点和目的地节点上的以及路由选择路径中的所有中间节点上的分发的资源。然后,可使用开通式路由选择或虫孔路由选择将这些微片路由通过环面网络200,所述开通式路由选择在分组级别上分发缓冲器和通道带宽,所述虫孔路由选择在微片级别上分发缓冲器和通道带宽。虫孔路由选择具有能够在环面网络200中使用虚拟通道的优点。虚拟通道保持在通道上协调对分组微片的处理所需的状态,其包括用于路由的下一跳的当前节点的输出通道、以及虚拟通道的状态(例如,空闲、等待资源、或活动)。虚拟通道还可包括指向当前节点上缓冲的分组微片的指针、以及下一个节点上可用的微片缓冲器的数目。
图3示出结构122的节点301、以及其连接的节点302、303、304、305、306和307。节点301通过对应的通信端口连接到节点302-307中的每一个。在一些实施方案中,节点301根据其连接的节点302-307在3D环面拓扑中的预期相对位置来内部识别所述节点302-307中的每一个。因此,节点302被节点301识别为其是“+X”节点,从而指示期望节点302相对于节点301沿3D环面的X平面位于一个方向上。节点305被节点301识别为其是“-X”节点,从而指示期望节点302相对于节点301沿3D环面的X平面位于节点302的相反方向上。由于类似的原因,节点303被节点301识别为其是“+Y”节点,节点306被节点301识别为其是“-Y节点”,节点304被节点301识别为其是“+Z”节点,并且节点307被节点301识别为其是“-Z”节点。
响应于系统复位,节点301周期性地通过结构互连122向其连接的节点302-307发送指示其每个配置字段的当前状态的令牌。此外,节点301通过结构互连122从其连接的节点302-307接收指示每个连接的节点302-307的每个配置字段的对应状态的令牌。基于其配置字段的当前状态和其连接的节点302-307处的配置字段的状态,节点301调整其自身的配置字段状态的状态,并且执行所调整的状态所需的任何处理操作。
图4示出根据一些实施方案的配置状态寄存器(CSR)170的实例。在所示出的实例中,CSR 170存储多个配置字段的值,包括地址和取向字段401、生成树状态字段402、中断转发状态字段403、波消息状态404和链消息状态405。配置字段401-405中的每一个存储指示所述字段状态的值。在每个配置周期期间,计算节点102基于每个配置字段的状态采取配置动作。此外,在每个配置周期结束时,计算节点102基于其每个校正节点处的对应配置字段的值来更新配置字段401-405中的每一个。
为了说明,地址和取向字段401存储指示与计算节点102相关联的FRU的取向的信息。在系统复位之后,计算节点102设置地址和取向字段401处的值以便指示FRU的取向是未知的。响应于其连接的节点中的一个处的地址和取向字段指示其对应FRU的特定取向,计算节点102更新地址和取向字段401,以便指示与计算节点102相关联的FRU具有与所连接的节点的FRU相同的取向。
生成树状态字段402存储指示计算节点102是否准备加入结构互连112的节点的生成树的信息,并且一旦所述计算节点102已经加入,则存储指示其相对于其连接的节点在生成树中的位置的信息。例如,在系统复位之后,计算节点102可将生成树状态字段402处的值设置为空闲状态,其指示计算节点102尚未加入生成树。响应于其连接的节点中的一个处的生成树状态字段被置于就绪状态,计算节点102将生成树状态字段402设置为就绪状态,从而指示其准备好加入生成树。基于在其连接的每个节点处的生成树状态字段处的状态的后续变化,计算节点102使生成树状态字段402的状态演进,以便指示计算节点在生成树中相对于其连接的节点的位置。如本文进一步描述的,由于服务器100的每个计算节点处的生成树状态字段的演进导致的生成树用于传递配置消息以便配置每个节点。
中断转发状态字段403存储指示从计算节点102的连接节点接收或发送到计算节点102的连接节点的中断消息状态的信息。例如,在一些实施方案中,在计算节点102已经加入结构互连112的节点的生成树之后,所述计算节点102基于在其连接的节点处的中断转发状态字段的状态设置中断转发状态字段403的状态,以便反映从那些连接的节点接收到的中断状态,以便反映它何时从其连接的节点中的一个接收到中断消息,它是否已经将中断消息转发到其连接的节点中的另一个,是否已经接收到对中断消息的响应等。此外,计算节点102基于其转发状态字段403的状态处理接收到的中断消息和响应,包括基于转发字段403的状态将接收到的消息转发到其他连接的节点。中断转发字段403从而提供用于通过结构互连112转发中断消息的低延迟机构,而不使用对单独节点的直接寻址。
如本文进一步描述的,波消息状态字段404和链消息状态字段405各自存储指示特定配置消息类型的处理状态的值。在配置期间,计算节点102基于接收到的每种类型的消息使字段404和405中的每一个的状态演进,以便确保根据限定的协议处理消息。
在一些实施方案中,计算节点102存储BIOS代码或其他配置信息,其在由计算节点102执行时根据由BIOS代码或其他配置信息限定的对应公式更新配置字段401-405中的每一个。这确保每个配置字段处的状态信息根据如公式所指示的限定过程演进,确保每个节点根据限定的配置过程来配置。因为公式提供配置字段的演进而没有配置节点或其他控制节点所进行的状态信息的直接传递,所以避免了对特殊带外配置网络的需要。
下面阐述了提供配置字段演进的公式的一般形式:
Si,n+1=f({Sj,n|j∈N(i)})
其中Si,n是在配置周期n处的节点S的配置字段的状态,并且N(i)是节点S的感兴趣的连接元胞。特定函数和N(i)对于每个配置字段可以是不同的,并且N(i)可基于一个或多个配置字段的状态而改变,从而提供配置字段的更复杂的演进。
图5示出根据一些实施方案的计算节点102的配置字段的状态的示例性集合500。所述组500包括状态501、502、503和504,其各自由存储在配置字段处的不同值表示。状态501-504之间的箭头表示由于连接到计算节点102的一个或多个节点的对应配置字段处的值的变化而导致的状态之间的转换。
为了说明,在一些实施方案中,集合500是图1的生成树状态402的状态集合。响应于系统复位,生成树状态402被置于表示空闲状态的状态501。在空闲状态下,计算节点102周期性地向其连接的节点发送指示其空闲状态的令牌。
响应于从其连接的节点中的至少一个接收对应的连接节点已经进入就绪状态的令牌(为了描述目的而被称为“TOPO”令牌),计算节点102将生成树状态402转换到表示就绪状态的状态502。当处于就绪状态时,响应于从其连接的节点中的一个接收到指示连接的节点在生成树中的相对位置的生成树信息,计算节点102将生成树状态402转换到状态503。在状态503中,计算节点102识别其相对于其连接的节点在生成树中的位置。例如,在一些实施方案中,计算节点将发送TOPO令牌的连接节点识别为更靠近生成树根的节点。发送TOPO令牌的节点因此被计算节点102识别为其针对生成树的“近侧节点”。然后,计算节点102可转换回就绪状态502。
此外,在就绪状态502中,计算节点102可从其连接的节点接收指示计算节点102已经被建立为一个或多个连接节点的近侧节点的令牌。作为响应,计算节点102将生成树状态402转换到状态504。当生成树状态402处于状态504时,计算节点102存储指示其连接的节点中的哪些是其在生成树中的“远侧节点”的信息。通过识别其近侧节点和其远侧节点,计算节点102识别其自身相对于其连接的节点在生成树中的位置,而不识别生成树的整体拓扑。这简化了结构122的每个节点处的配置。
在一些情况下,当处于空闲状态501时,计算节点102可同时从其连接的节点中的多个节点接收TOPO令牌,所述TOPO令牌指示多个节点中的每一个已从空闲状态501转换到就绪状态502。作为响应,计算节点102转换到就绪状态,并且根据BIOS代码中反映的预定惯例,将发送TOPO令牌的连接节点中的一个识别为其在生成树中的近侧节点。例如,在一些实施方案中,每个节点包括计数器,由此响应于系统复位将计数器初始设置为零。响应于转换到就绪状态502,节点使其计数器递增,并且将递增值作为并入其发送的TOPO令牌中的树深度字段传递到其连接的节点。响应于在空闲状态501中接收到单个TOPO令牌,节点将其自身计数器设置为树深度字段值。因此,每个节点的计数器将指示节点在生成树中的深度。响应于在空闲状态中接收到多个TOPO令牌,节点选择树深度字段值最低的TOPO令牌,使得所述值递增并且将递增值存储在其自身计数器处,并且存储指示对应的连接节点是其在生成树中的近侧节点的信息。因此,每个节点在生成树中将仅具有一个近侧节点,但可具有多个远侧节点。
当处于就绪状态502时,计算节点102可接收指示其近侧节点已经经历某种故障的令牌,或可以其他方式识别其近侧节点已经经历某种故障。作为响应,计算节点102返回到空闲状态501。计算节点102随后将接收指示它的其他连接的节点中的一个处于就绪状态的令牌,从而允许计算节点102返回就绪状态502并且重新建立其相对于它的其他连接的节点在生成树中的位置。因此,结构122的节点可调整单独节点在配置期间的故障,从而改善配置过程的鲁棒性。
应当理解,集合500表示计算节点102的仅一个配置字段的不同状态,并且每个配置字段可具有不同于图5所示的状态的其自身的对应状态集合。此外,计算节点102可基于在其连接的节点处的对应配置字段的状态,在每个配置周期中调整其配置字段中的多于一个的状态。例如,在一些情景下,计算节点102可在同一配置周期期间,从其连接的节点中的一个接收指示其中断转发状态变化的令牌,以及从其连接的节点中的另一个接收指示其波消息状态变化的令牌。因此,在配置周期期间,计算节点102响应于令牌可更新其中断转发状态和其波消息状态两者,并且采取对应于两个字段的更新状态的配置动作。这允许在同一配置周期期间配置计算节点102的多个方面,从而提高配置过程的效率。
图6示出根据一些实施方案的配置服务器的方法600的流程图。为了描述的目的,相对于图1-5中描述的结构122处的示例实现方式来描述方法600。在方框602处,服务器100经历系统复位,诸如可响应于电力在服务器100处循环,响应于软件复位、复位开关的激活等而发生系统复位。响应于系统复位,结构122的每个节点复位。在方框604处,结构122的每个节点使本地时钟(在本文中被称为配置时钟)与其连接的节点的配置时钟同步。每个节点基于其配置时钟来管理所述节点在其配置字段状态之间的转换。在一些实施方案中,连接节点的配置时钟通过每个节点内的正在进行的反馈过程来同步。反馈过程使得节点的配置时钟在所限定的容差内与其连接的节点同步。所限定的容差被限定,使得所有节点的配置时钟在总容差内同步。总容差建立周期性实例,其中预期每个节点已经完成任何所需的状态转换。由这些周期性实例所限定的时间在本文中被称为“配置周期”。特别地,配置周期建立结构122的节点处的状态转换的总体定时构造,由此期望每个节点处的状态转换在配置周期开始时或之后开始,并且期望在同一配置周期结束时或之前完成所述状态转换,即使任何两个给定节点的配置时钟可能不是完全同步的。
在方框606处,结构122的节点以类似于以上相对于图5所描述的方式从空闲状态转换到就绪状态。在一些实施方案中,如本文进一步描述的,结构122包括至少一个处理器,其被称为控制结构122的配置的管理单元(MU)。MU连接到包括配置信息(诸如路由表、节点地址等)的存储器以便配置结构122的每个节点。MU连接到结构122的计算节点中的一个。响应于系统复位,MU执行其自身的BIOS代码以便向其连接的计算节点发送将计算节点从空闲状态转换到就绪状态的命令。这致使结构122的每个功能节点最终转换到就绪状态。
当节点转换到就绪状态时,在方框608处,它们自组织成如以上参考图5所描述的生成树。在方框610处,MU使用诸如链消息和波消息的消息以便向每个节点分配配置信息。配置信息的实例包括每个节点的地址、每个节点的路由表等,以便允许每个节点通过节点之间的一个或多个单播消息与任何其他节点通信。在方框612处,结构122的节点执行软件服务,其中所述执行包括基于在方框610处分配的地址、路由表和其他配置信息在节点之间发送消息。
图7示出根据一些实施方案的包括通过结构互连连接的计算节点602-613的结构700。结构700以类似于上述结构122的方式操作,但为了描述的目的而以二维拓扑布置。应当理解,本文针对结构700所讨论的原理和技术也应用于具有3D拓扑(例如,3D环面)的结构。在图7的所示实例中,结构700包括连接到节点702的单个MU 701。MU 701通过将节点702-713转换到其就绪状态来控制结构700的配置以用于执行软件服务。此外,一旦节点702-713处于其就绪状态,MU通过在整个结构700上传播配置消息来配置每个节点。参考图8-10的实例可更好地理解这些技术。
图8示出根据一些实施方案的示例性序列,其中节点702-713从空闲状态转换到就绪状态。这些转换致使节点702-713自组织成生成树,所述生成树管理配置消息通过结构700的传播。图8通过描绘配置周期801-806的序列示出转换。处于空闲状态的节点被示为没有交叉影线的圆,而处于就绪状态的节点被示为交叉阴影圆。
在配置周期801之前,结构700已经经历系统复位,从而导致MU 701的初始化和节点702-713处的配置时钟的同步。在配置周期801,MU 701向节点702发布命令(例如,通过写入节点702的指定寄存器)以便将其生成树状态字段转换到就绪状态。因此,在配置周期802时,节点702已将其生成树状态字段转换到就绪状态,并且因此向节点703、704和706发布TOPO令牌。在配置周期803时,节点703、704和706各自将它们相应的生成树状态字段从空闲状态转换到就绪状态,并且因此向其连接的节点(节点705、707和609)发布TOPO令牌。因此,在配置周期804时,节点705、707和708已经从空闲状态转换到就绪状态,并且向其连接的节点(节点708、710和712)发布TOPO令牌。响应于TOPO令牌,节点708、710和712通过配置周期805将其生成树状态字段转换到就绪状态,并且因此向其连接的节点711和713发布TOPO令牌。作为响应,节点711和713在配置周期806时转换到就绪状态。因此,在图8的所示实例中,节点702-713都基于MU 401向节点中的单个节点(即节点702)发布命令,将其生成树状态字段从空闲状态转换到就绪状态。这相对于常规系统减少了MU 401处的开销,由此MU 401必须通过经由带外网络向每个节点发送单独的消息来单独地为配置准备每个节点。
以类似于以上相对于图5所描述的方式的方式,当节点702-713转换到就绪状态时,它们通过识别其相对于其连接的一个或多个节点在生成树中的位置而自组织成生成树。在图9中示出示例性生成树900。注意,生成树900可不表示通过图8的示例性序列形成的生成树,而是示出不同结构拓扑的生成树,以便示出节点702-713的不同节点可在形成的生成树中具有不同数目的远侧节点。因此,在生成树900的所示实例中,节点702具有两个远侧节点(即节点702和704),而节点706具有单个远侧节点710,并且节点707具有三个远侧节点711、712和713。然而,节点702-713中的每一个仅具有单个对应的近侧节点。
可沿生成树900的拓扑传播配置消息,以便将配置信息从MU701分配到节点702-713中的一个或多个。具体地,节点602-613中的每一个管理对应于消息类型的配置字段的状态以便管理不同消息类型的处理。图10示出用于使用链消息类型来传递配置信息的示例性技术。响应于接收到链消息,节点702-713中的每一个将其链消息状态字段置于其中节点向其远侧节点中的一个(如果有的话)提供链消息的状态。如果节点在生成树700中具有多于一个远侧节点,则其向其每个远侧节点指派固定数,并且将其链消息状态转换到以下状态:其中它将链消息发送到链消息尚未被发送到的最低编号的连接节点。如果节点识别消息已经被发送到其所有远侧节点,则它将其链消息状态转换到其中节点向其近侧节点提供消息的状态。链消息由此执行生成树700的深度遍历,从而在消息返回根节点702的情况下结束遍历。从那里,链消息或其有效载荷可被提供给MU 701以用于进一步处理。
图10示出根据一些实施方案的一组配置周期,其示出在整个结构上传播链消息的一部分。在配置周期1001时,节点702从MU 601接收链消息。作为响应,节点702识别将发送到其降低编号的远侧节点(被识别为节点703)的消息,并且因此将消息传递到对应于节点703的输出端口。在配置周期1002时,链消息已经被递送到节点703,并且节点703将其连接的远侧节点705识别为还没有接收到链消息的最低编号的远侧节点。节点703因此向节点705提供链消息。在配置周期1003时,节点705将节点708识别为其最低编号的远侧节点,并向节点708提供链消息。在配置周期1004时,节点708识别其没有远侧节点,并且因此将链消息传递到其近侧节点705。在配置周期1005时,节点705识别其还未接收到链消息的其最低编号的远侧节点是节点709。因此,节点705向节点709提供链消息。在配置周期1006时,节点709确定其不具有远侧节点,并且因此向近侧节点705提供链消息。节点705确定链消息已经被提供给其所有远侧节点,并且因此向其近侧节点703提供消息。链消息继续根据生成树900的拓扑结构沿其遍历结构直到它到达根节点702,所述根节点702可向MU 701提供链消息或其有效载荷。
配置节点可使用链消息以便向一个或多个节点702-713发送和接收配置信息。例如,在一些实施方案中,链消息包括配置信息的有效载荷,诸如地址信息、路由表信息或其他配置信息。链消息还包括将节点702-713中的特定节点识别为有效载荷信息的目标的字段。在一些实施方案中,MU通过在消息中包括具有元组(x,y,z)的目标节点的相对位置来识别消息的目标。当每个节点将链消息传递到其连接的节点中的一个时,它基于接收节点到通信节点的相对位置来调整元组值。例如,如果接收节点是相对于传递节点的“+X”节点,则通信节点可将元组的x值减1。因此,当其到达其目的地时,元组将具有值(0,0,0)。当每个节点接收到链消息时,它检查链消息的节点识别符,并且如果元组值是(0,0,0),则节点将有效载荷存储在其配置寄存器中的一个处,其中可根据在节点执行的BIOS代码来进一步处理其。在一些实施方案中,此进一步处理生成响应有效载荷,目标节点在将所述响应有效载荷提供到生成树700中的下一个节点之前可将其存储在链消息处。因为链消息最终返回到根节点702并且从那里到MU 701,所以链消息提供了一种用于将信息从MU 701传递到目标节点,以及用于将返回信息从目标节点传递到MU 701的技术。此外,执行配置信息的此通信,而无需MU 701确定到目标节点的直接路径,并且无需任何节点702-713沿由目标节点的位置限定的特定路由选择路径路由配置消息。这允许在软件服务的执行期间,通过稍后用于沿节点702-713之间的限定的路由选择路径传递配置消息的相同结构互连来传递消息。
为了通过实例示出,如果MU 701希望向节点708传递配置信息,则其在配置周期1001向节点702提供具有配置信息的链消息。通过配置周期1004,链消息已经到达节点708。作为响应,节点708识别它是链消息的目标节点,并且因此将链消息的有效载荷信息存储在其配置寄存器中的一个或多个处,生成任何响应信息,并且将响应信息存储在链消息的有效载荷处。在配置周期1005,节点708向远侧节点705提供修改的链消息。链消息在随后的配置周期上继续遍历生成树,直到链消息已经返回节点702,所述节点702向MU701提供消息的有效载荷(包括来自节点708的任何响应信息)。
图11示出根据一些实施方案的示出如何通过生成树900传播波消息的配置周期的序列。响应于接收波类型消息,每个节点将其波消息状态字段置于其中节点识别其先前是否已向其远侧节点提供波消息的状态,并且如果没有的话,则转换其波状态消息字段,其中节点向其所有远侧节点提供消息。如果消息先前已经被提供给其远侧节点,则节点将其波状态消息字段转换到其中它待来自其所有远侧节点的对波消息的响应的状态。一旦它已经从其所有远侧节点接收对波消息的响应,则节点将其波消息状态字段转换到其中节点向其近侧节点提供波消息的状态。因此,在图11的所示实例中,在配置周期1101时,节点702从MU701接收波消息。作为响应,节点702向其远侧节点703和704两者提供波消息。在配置周期1102时,节点703和704各自确定先前未向其远侧节点提供波消息。因此,节点703向其远侧节点705和706提供波消息,并且节点704向其远侧节点707提供波消息。以类似方式,在配置周期1103时,节点705向其远侧节点708和709提供波消息,节点706向其远侧节点710提供波消息,并且节点707向其远侧节点711、712和713提供波消息。
在配置周期1104时,节点708-713中的每一个识别出其在生成树800中没有远侧节点。因此,节点708-713中的每一个向其对应的近侧节点提供波消息。例如,节点709向其近侧节点705提供波消息。在配置周期1105和1106时,波消息继续沿生成树900向远侧行进,直到其在配置周期1106返回MU 701。
图12示出根据一些实施方案的服务器100的节点的示例性物理布置。在所示实例中,结构互连112(图1)包括一个或多个互连1202,其具有插入式插座1204的一个或多个行或其他聚集。互连1202可包括固定或柔性互连,诸如背板、印刷线路板、主板、电缆或其他柔性线路、或其组合。此外,互连1202可实现电信令、光子信令或其组合每个插入式插座1204包括卡边缘插座,其操作来将一个或多个FRU(例如FRU 1206-1211)与互连1202连接。每个FRU表示服务器100的对应节点。例如,FRU 1206-1209可包括计算节点,FRU 1210可包括网络节点,并且FRU 1211可包括存储节点。FRU1206-1211中的一个或多个还可包括对应的管理单元。
每个FRU包括设置在PCB上的部件,由此部件通过PCB的金属层互连并且提供由FRU表示的节点的功能。例如,在此实例中为计算节点的FRU 1206包括PCB 1212,其实现包括一个或多个处理器核心1122的处理器1220;一个或多个存储器模块1124,诸如DRAM双串列式存储器模块(DIMM);以及结构接口装置1126。每个FRU还包括插座接口1240,其操作来通过插入式插座1204将FRU连接到互连1202。
互连1202提供插入式插座1204之间的数据通信路径,以使得互连1202操作来将FRU连接到环中并且将环连接到2D或3D环面网络拓扑中,诸如图3的环面网络300。FRU通过其对应的结构接口(诸如FRU 1206的结构接口装置1226)利用这些数据通信路径。插座接口1230提供电触点(例如,卡边缘引脚),其电连接到插入式插座1204的对应触点的以便用作:用于X维环的端口接口(例如,用于针脚0和1的环-X_IN端口1232、以及用于针脚2和3的环-XOUT端口1234)、用于Y维环的端口接口(例如,用于引脚4和5的环-Y_IN端口1136、以及用于引脚6和7的环-YOUT端口1238)、以及用于Z维环的端口接口(例如,用于引脚8和9的环-Z_IN端口1240、以及用于引脚10和11的环-Z_OUT端口1242)。在所示的实例中,每个端口是包括例如PCIE通道的输入端口或输出端口的差动式发射器。本领域技术人员将理解,端口可包括附加的TX/RX信号引脚以便适应附加通道或附加端口。
图13示出根据一些实施方案的在图1的服务器100中实现的计算节点1300。计算节点1300对应于例如图1的计算节点101-106中的一个。在所描绘的实例中,计算节点1300包括处理器1302、系统存储器1304和结构接口装置1306(分别表示图12的处理器1320、一个或多个存储器模块1224和结构接口装置1226)。处理器1302包括一个或多个处理器核心1308和北桥1210。一个或多个处理器核心1308可包括多种类型的处理器核心中的任一种或其组合,诸如中央处理单元(CPU)核心、图形处理单元(GPU)核心、数字信号处理单元(DSP)核心等,并且可实现各种指令集架构中的任何一种,诸如x86指令集架构或高级RISC机器(ARM)架构。系统存储器1204可包括一个或多个存储器模块,诸如DRAM模块、SRAM模块、闪存或其组合。北桥1310互连一个或多个核心1308、系统存储器1304和结构接口装置1306。在一些实施方案中,结构接口装置1306在诸如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、掩模可编程门阵列、可编程逻辑等中实现。
在常规计算系统中,北桥1310将连接到南桥,所述南桥然后将操作作为北桥1310(以及因此处理器核心1308)与管理本地外围资源的一个或多个本地I/O控制器之间的接口。然而,如上所述,在一些实施方案中,计算节点1300不维护本地外围资源或其I/O控制器,而是使用服务器100中的其他节点处的共享远程外围资源。为了使此布置对在处理器1302处执行的软件是透明的,结构接口装置1306虚拟化分配给计算节点的远程外围设备资源,以使得结构接口装置1306的硬件仿真南桥,并且因此对北桥1310看来是连接到本地外围资源的本地南桥。
为此,结构接口装置1306包括I/O总线接口1312、虚拟网络控制器1314、虚拟存储控制器1316、分组格式器1318、以及包括结构交换机1320的NIC 1319。I/O总线接口1312通过本地I/O总线1324连接到北桥1310,并且通过截取寻址到看起来在本地I/O总线1324上的虚拟化外围资源的请求以及以与本地外围资源相同的方式响应请求,用作每个本地处理器核心1208的虚拟端点,尽管由于外围资源的远程位置由I/O总线接口1312虚拟地表示而具有潜在的更长的延迟。
虽然I/O总线接口1312提供到北桥1310的物理接口,但是更高级响应由虚拟网络控制器1314和虚拟存储控制器1316生成。通过I/O总线1324发送的对连接到外部网络的网络外围设备(诸如连接到数据中心网络114(图1)的以太网NIC)的请求由I/O总线接口1312路由到虚拟网络控制器1314,而存储请求由I/O总线接口1312路由到虚拟存储控制器1316。虚拟网络控制器1314基于例如以太网协议提供对输入请求和输出请求的处理。虚拟存储控制器基于例如串行ATA(SATA)协议/串行连接SCSI(SAS)协议、通用串行总线(USB)协议等提供对输入请求和输出请求的处理。
在如以上相对于图1-11所描述的每个计算节点的配置之后,计算节点1300执行生成请求的软件服务。在被虚拟网络控制器1314或虚拟存储控制器1316处理之后,请求被转发到分组格式器1318,所述分组格式器1318将请求封装到一个或多个分组中。分组格式器1318然后确定管理旨在用于请求的物理外围设备资源的I/O节点的结构地址或其他位置标识符。分组格式器1318将所识别的结构地址(在本文中被称为“结构ID”)添加到其中封装了请求的一个或多个分组的报头,并且向NIC 1319的结构交换机1320提供分组以用于传输。
如图所示,结构交换机1320实现多个端口,每个端口与结构互连112的不同链路对接。为了说明使用图2的3x3环面网络200,假设计算节点1300表示(1,1,1)处的计算节点1300。在此实例中,结构交换机1320将具有至少七个端口以便将其耦接到七个双向链路:到分组格式器1318的内部链路;到(0,1,1)处到节点的外部链路;到(1,0,1)处的节点的外部链路、到(1,1,0)处的节点的外部链路、到(1,2,1)处的节点的外部链路、到(2,1,1)处的节点的外部链路、以及到(1,1,2)处的节点的外部链路。在计算节点1200的配置之后,基于集成确定性切换逻辑并且基于在服务器100中实现的确定性路由来确定在结构交换机1320的端口中的数据交换的控制,所述集成确定性切换逻辑基于由分组指示的目的地地址(即目的地结构ID)指定出口端口。每个计算节点的目的地结构ID可在配置期间分配到相应节点。例如,MU可通过如上所述的一系列链消息向每个计算节点分配其目的地结构ID。
在MU所进行的配置之后,并且在软件服务的正常执行期间,计算节点1300如下处理接收的分组。对于从另一其他节点接收的分组,其中分组的目的地是计算节点1300,结构交换机1320基于确定性路由逻辑将输入分组路由到连接到分组格式器1318的端口。分组格式器1318然后解封装来自分组的响应/请求,并且基于包括在请求中的类型识别符向虚拟网络控制器1314或虚拟存储控制器1316提供所述响应/请求。接收请求的控制器然后处理响应/请求并且控制I/O总线接口1312以便向北桥1310发信号通知请求,此时响应/请求被处理成好像它是来自本地外围资源的响应或请求。
对于计算节点1300是分组路由选择路径中的中间节点的暂时性单播分组,结构交换机1320根据暂时分组的报头确定目的地址(例如,元组(x,y,z),并且向确定性路由选择逻辑所识别的对应输出端口提供分组。在一些实施方案中,结构交换机1320使用本地存储的路由表来确定目的地地址。在配置期间,如上所述,MU可使用链消息或波消息将路由表分配到每个计算节点。
如上所述,用于配置计算节点1300的BIOS的一部分同样可是虚拟化外围资源。在这种情况下,结构接口装置1306可包括BIOS控制器1326,其通过本地I/O总线1224或通过单独低引脚数(LPC)总线1328连接到北桥1310。与存储资源和网络资源一样,BIOS控制器1326可通过响应来自北桥1310的BIOS请求,通过经由分组格式器1318和架构式交换机1320将BIOS请求转发到管理远程BIOS的I/O节点,并且然后提供进而供应到北桥1310的BIOS数据,仿真本地BIOS。
在图13的所示实例中,结构接口装置1306包括配置状态寄存器170。在服务器100的配置期间,如以上相对于图1-12所描述的,结构接口装置1306响应于连接到计算节点1300的节点处的配置状态寄存器的对应字段的更新来更新配置状态寄存器170的字段。基于配置寄存器170处的每个字段的状态,结构接口装置识别计算节点1300相对于其连接的节点在生成树中的位置,接收、处理和传递配置消息,以及执行其他配置操作。
在一些实施方案中,上文所述功能中的至少一些功能可通过执行切实地存储在计算机可读介质上的一个或多个软件程序的一个或多个处理器来实现,并且据此所述一个或多个软件程序包括相应指令,所述指令在执行时会操纵一个或多个处理器来执行上文所述的一个或多个功能。在一些实施例中,上述设备和技术在包括一个或多个集成电路(IC)装置(也被称为集成电路封装或微芯片)的系统中实现,诸如以上参考图1-13所描述的服务器100的某些部件(例如,结构接口装置或计算节点)。可在这些IC装置的设计和制造中使用电子设计自动化(EDA)和计算机辅助设计(CAD)软件工具。这些设计工具通常呈现为一个或多个软件程序。所述一个或多个软件程序包括可由计算机系统执行的代码,以便操纵计算机系统来操作表示一个或多个IC装置的电路的代码,从而执行相应过程的至少一部分来设计或改动加工系统,以便制造电路。这个代码可包括指令、数据或指令和数据的结合。表示设计工具或制造工具的软件指令通常存储在可由计算系统访问的计算机可读存储介质中。同样地,表示IC装置设计和制造的一个或多个阶段的代码可存储在同一计算机可读存储介质或不同计算机可读存储介质中,以及从同一计算机可读存储介质或不同计算机可读存储介质进行存取。
计算机可读存储介质可包括使用期间可由计算机系统存取的任何存储介质或存储介质的组合,以便将指令和/或数据提供给计算机系统。此类存储介质可包括但不限于光学介质(例如,压缩光盘(CD)、数字通用光盘(DVD)、蓝光光盘)、磁性介质(例如,软盘、磁带或磁性硬盘)、易失性存储器(例如,随机存取存储器(RAM)或高速缓冲存储器)、非易失性存储器(例如,只读存储器(ROM)或闪存存储器)或基于微机电系统(MEMS)的存储介质。计算机可读介质可嵌入在计算系统中(例如,系统RAM或ROM)、固定地附接到计算系统(例如,磁性硬盘驱动器)、可移除地附接到计算系统(例如,光盘或基于通用串行总线(USB)的闪存)或经由有线或无线网络而连接到计算机系统(例如,网络可存取储存器(NAS))。
图14为流程图,其示出用以设计和制造实施一个或多个方面的IC装置的示例性方法1400。如上文所指出的,针对下述过程中的每一个过程所生成的代码会存储在计算机可读存储介质中或者以其他方式嵌入在计算机可读存储介质中,以便由对应的设计工具或制造工具来存取和使用。
在方框1402处,生成IC装置的功能规格。功能规格(通常称为微架构规格(MAS))可由各种编程语言或建模语言中的任何语言来表示,包括C、C++、SystemC、Simulink(TM)或MATLAB(TM)。
在方框1404上,使用功能规格来生成表示IC装置硬件的硬件描述代码。在一些实施方案中,使用至少一个硬件描述语言(HDL)来表示硬件描述代码,所述硬件描述语言(HDL)包括用于IC装置电路的形式描述和设计的各种计算机语言、规格语言或建模语言中的任何语言。生成的HDL编码通常表示IC装置电路的操作、所述电路的设计和组织,以及用以通过模拟来验证IC装置的正确操作的测试。HDL的示例包括模拟HDL(AHDL)、VerilogHDL、SystemVerilog HDL以及VHDL。对于实施同步数字电路的IC装置来说,硬件描述符代码可包括寄存器传输级(RTL)代码,以便提供同步数字电路的操作的抽象表现形式。对于其他类型的电路,硬件描述符代码可包括行为级代码,以便提供电路的操作的抽象表现形式。由硬件描述代码所表示的HDL模型通常经受一轮或多轮的模拟和调试,以便通过设计验证。
在检验由硬件描述代码表示的设计之后,在方框1406处,合成工具用来合成硬件描述代码,从而生成表示或定义IC设备电路的初始物理实现形式的代码。在一些实施方案中,合成工具生成包括电路装置实例(例如,门极、晶体管、电阻器、电容器、电感器、二极管等)和电路装置实例之间的网络或连接的一个或多个网络列表。或者,网络列表的全部或一部分可手动生成,而不使用合成工具。正如与硬件描述代码一样,在最终一组的一个或多个网络列表生成之前,网络列表可经受一个或多个测试和验证过程。
或者,可使用原理图编辑工具来编制IC装置电路的原理图,并且随后可使用原理图捕获工具来捕获最终产生的电路图以及生成表示电路图的部件和连接性的一个或多个网络列表(存储在计算机可读介质上)。所捕获的电路图随后可经受一轮或多轮的模拟而进行测试和验证。
在方框1408上,一个或多个EDA工具使用方框1406上所产生的网络列表,以便生成表示IC装置电路的物理布局的代码。此过程可包括:例如放置工具使用网表来确定或固定IC装置的电路的每个元件的位置,此外,路由工具建立在放置过程上以便根据网表添加和路由连接电路元件所需的电线。最终产生的代码表示IC装置的三维模型。所述代码可以用数据库文件格式(例如像图形数据库系统II(GDSII)格式)来表示。处于这个格式下的数据通常表示几何形状、文本标签或关于呈层次形式的电路布局的其他信息。
在方框1410上,将物理布局代码(例如,GDSII代码)提供给生产设施,所述生产设施使用物理布局代码来配置或者以其他方式改动生产设施的制造工具(例如,通过掩膜作业),从而制造IC装置。也就是说,物理布局代码可被编程至一个或多个计算机系统中,所述一个或多个计算机系统随后可整个或部分地控制生产设施的工具的运行或其中所执行的生产操作。
应注意,并非上文在一般说明中描述的所有活动或元件都是需要的,具体活动或装置的一部分可能是不需要的,并且一个或多个其他活动可加以执行,或者,除所描述的那些元件之外,还可包括其他元件。更进一步来说,活动列出的顺序并非必须是它们所执行的顺序。
另外,已经参考具体实施方案描述了相应概念。然而,本领域中的普通技术人员会了解,可在不背离所附权利要求书中所阐述的本公开范围的情况下,做出各种修改和改变。因此,本说明书和附图将视为说明性而非限制性的,并且所述此类修改意在包括于本公开的范围内。
上文已经参照具体实施方案描述了相应益处、其他优点以及问题的解决方案。然而,所述益处、优点、问题解决方案,以及可使得任何益处、优点或问题解决方案出现或变得更为显著的任何特征,都不应解释为是任何或所有权利要求的关键、必需或必要特征。

Claims (14)

1.一种服务器系统[100],其包括:
结构互连[112],其用于在软件服务的执行期间路由消息;
多个计算节点[101、102],其耦接到所述结构互连以便执行用于所述服务器系统的服务,所述多个计算节点中的每一个被配置为元胞自动机中的元胞以便使用所述结构互连来传递配置信息[401、402、403、404、405]。
2.如权利要求1所述的服务器系统,其中所述多个计算节点中的每一个用于:
响应于在连接的计算节点处的对应状态字段的状态[502、503]中的转换,在预定状态集合中的状态字段集合中进行转换;
基于所述状态字段集合的所述转换来接收路由选择信息[610];并且
基于所述路由选择信息,通过所述结构互连向所述多个计算节点中的其他计算节点路由接收到的消息[612]。
3.如权利要求2所述的服务器系统,其中所述多个计算节点中的每一个用于:
基于所述状态字段集合中的所述转换,识别所述计算节点相对于其连接的计算节点中的一个或多个在生成树中的位置[608]。
4.如权利要求3所述的服务器系统,其中所述多个计算节点中的每一个用于:
基于所述生成树,通过所述结构互连向连接的计算节点传递路由选择信息,所述传递基于所述状态字段集合中的所述转换[610]。
5.如权利要求3所述的服务器系统,其中所述多个计算节点中的至少一个用于:
响应于接收第一类型的消息:
基于所述状态字段集合中的所述转换,相对于所述至少一个计算节点在所述生成树中的位置,将所述第一类型的所述消息传递到所述生成树中的多个远侧节点中的所选择的第一远侧节点[1001、1002、1003]。
6.如权利要求5所述的服务器系统,其中所述多个计算节点中的所述至少一个用于:
响应于随后从所述多个远侧节点中的所选择的第一远侧节点接收所述第一类型的所述消息:
基于所述状态字段集合中的所述转换,将所述第一类型的所述消息传递到所述多个远侧节点中的所选择的第二远侧节点[1004、1005]。
7.如权利要求6所述的服务器系统,其中所述多个计算节点中的所述至少一个用于:
响应于随后从所述多个远侧节点中的所选择的第二远侧节点接收所述第一类型的所述消息:
基于所述状态字段集合中的所述转换,将所述第一类型的所述消息传递到所述生成树中的所述至少一个计算节点的近侧节点[1007]。
8.如权利要求5所述的服务器系统,其中所述多个计算节点中的所述至少一个用于:
响应于识别出所述第一类型的所述消息的有效载荷以所述多个计算节点中的所述至少一个为目标,基于所述状态字段集合中的所述转换,将所述消息的所述有效载荷存储在所述多个计算节点中的所述至少一个的配置寄存器处。
9.如权利要求5所述的服务器系统,其中所述多个计算节点中的所述至少一个用于:
响应于接收第二类型的消息:
基于所述状态字段集合中的所述转换,相对于所述至少一个计算节点在所述生成树中的位置,将所述路由选择信息同时传递到所述生成树中的所述多个远侧节点中的每一个[1101、1102]。
10.如权利要求2所述的服务器系统,其中所述路由选择信息是识别所述多个计算节点中的一个在所述结构互连中的位置的节点地址信息。
11.如权利要求1所述的服务器系统,所述多个计算节点的第一计算节点可基于所述第一计算节点的连接的计算节点的状态[501、502]中的转换,识别它未连接到的第二计算节点的配置。
12.一种方法,其包括:
响应于在包括耦接到结构互连以便路由消息的多个计算节点的服务器处的系统复位:
响应于连接的计算节点处的对应状态字段的状态中的转换,在所述多个计算节点中的第一计算节点[101]处,在预定状态集合[501、502]中的状态字段集合中进行转换;
基于所述状态字段集合的所述转换来接收路由选择信息[610];以及
基于所述路由选择信息,通过所述结构互连向所述多个计算节点中的其他计算节点路由接收到的消息[612]。
13.如权利要求12所述的方法,其还包括:
在所述第一计算节点处,基于所述状态字段集合的所述转换,识别所述第一计算节点相对于其连接的计算节点中的一个或多个在生成树中的位置[608]。
14.如权利要求13所述的方法,其还包括:
基于所述生成树,通过所述结构互连从所述第一计算节点向连接的计算节点传递路由选择信息,所述传递基于所述状态字段集合中的所述转换[610]。
CN201580044442.9A 2014-08-18 2015-08-11 使用元胞自动机的群集服务器配置 Active CN106575283B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/461,614 2014-08-18
US14/461,614 US10158530B2 (en) 2014-08-18 2014-08-18 Configuration of a cluster server using cellular automata
PCT/US2015/044607 WO2016028545A1 (en) 2014-08-18 2015-08-11 Configuration of a cluster server using cellular automata

Publications (2)

Publication Number Publication Date
CN106575283A true CN106575283A (zh) 2017-04-19
CN106575283B CN106575283B (zh) 2021-06-29

Family

ID=54539424

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201580044442.9A Active CN106575283B (zh) 2014-08-18 2015-08-11 使用元胞自动机的群集服务器配置

Country Status (6)

Country Link
US (1) US10158530B2 (zh)
EP (1) EP3183664B1 (zh)
JP (1) JP6491741B2 (zh)
KR (1) KR102546237B1 (zh)
CN (1) CN106575283B (zh)
WO (1) WO2016028545A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112562767A (zh) * 2020-12-29 2021-03-26 国家数字交换系统工程技术研究中心 一种晶上软件定义互连网络装置与方法

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102610984B1 (ko) * 2017-01-26 2023-12-08 한국전자통신연구원 토러스 네트워크를 이용하는 분산 파일 시스템 및 토러스 네트워크를 이용하는 분산 파일 시스템의 운영 방법
US11321136B2 (en) * 2017-12-28 2022-05-03 Intel Corporation Techniques for collective operations in distributed systems
US10944693B2 (en) * 2018-11-13 2021-03-09 Advanced Micro Devices, Inc. Routing flits in a network-on-chip based on operating states of routers
US11042416B2 (en) * 2019-03-06 2021-06-22 Google Llc Reconfigurable computing pods using optical networks
US10992571B2 (en) * 2019-05-25 2021-04-27 Devashi TANDON Method and system for plug and play routing
US11444829B2 (en) * 2019-09-09 2022-09-13 Intel Corporation Link layer communication by multiple link layer encodings for computer buses
US11153181B1 (en) * 2019-12-04 2021-10-19 Amazon Technologies, Inc. Dynamic node reconfiguration and provisioning of network devices

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030097468A1 (en) * 2001-10-27 2003-05-22 Youssef Hamadi Configuration of computer networks
US20090219827A1 (en) * 2002-07-30 2009-09-03 Brocade Communication Systems, Inc. Registered state change notification for a fibre channel network
CN103309652A (zh) * 2012-02-09 2013-09-18 国际商业机器公司 用于在并行计算机中开始集合操作的方法和装置
CN103942197A (zh) * 2013-01-17 2014-07-23 阿里巴巴集团控股有限公司 数据监控处理方法及设备

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020049859A1 (en) * 2000-08-25 2002-04-25 William Bruckert Clustered computer system and a method of forming and controlling the clustered computer system
US7072976B2 (en) * 2001-01-04 2006-07-04 Sun Microsystems, Inc. Scalable routing scheme for a multi-path interconnection fabric
US7187659B2 (en) * 2002-07-30 2007-03-06 Brocade Communications Systems, Inc. Fibre channel switch having a push/pull method for caching remote switch information
US8776050B2 (en) 2003-08-20 2014-07-08 Oracle International Corporation Distributed virtual machine monitor for managing multiple virtual resources across multiple physical nodes
US20070050520A1 (en) * 2004-03-11 2007-03-01 Hewlett-Packard Development Company, L.P. Systems and methods for multi-host extension of a hierarchical interconnect network
US7836238B2 (en) 2006-12-19 2010-11-16 International Business Machines Corporation Hot-plug/remove of a new component in a running PCIe fabric
US8332497B1 (en) 2007-02-20 2012-12-11 Netapp, Inc. Generic resynchronization between persistent management store and dynamic configuration
US7925802B2 (en) 2007-06-21 2011-04-12 Seamicro Corp. Hardware-based virtualization of BIOS, disks, network-interfaces, and consoles using a direct interconnect fabric
US8140719B2 (en) 2007-06-21 2012-03-20 Sea Micro, Inc. Dis-aggregated and distributed data-center architecture using a direct interconnect fabric
US8606962B2 (en) * 2008-04-22 2013-12-10 Telefonaktiebolaget Lm Ericsson (Publ) Method of operating a signalling gateway and an application server, and signalling gateway and application server
US9680770B2 (en) * 2009-10-30 2017-06-13 Iii Holdings 2, Llc System and method for using a multi-protocol fabric module across a distributed server interconnect fabric
US8442048B2 (en) 2009-11-04 2013-05-14 Juniper Networks, Inc. Methods and apparatus for configuring a virtual network switch
US8775781B2 (en) 2010-03-25 2014-07-08 Microsoft Corporation Intelligent boot device selection and recovery
US9531644B2 (en) * 2011-12-21 2016-12-27 Juniper Networks, Inc. Methods and apparatus for a distributed fibre channel control plane
US8958340B2 (en) * 2012-06-15 2015-02-17 Dell Products L.P. System and methods for open fabric management
US20140188996A1 (en) * 2012-12-31 2014-07-03 Advanced Micro Devices, Inc. Raw fabric interface for server system with virtualized interfaces
US9288138B2 (en) * 2013-12-27 2016-03-15 Dell Products L.P. N-node virtual link trunking (VLT) systems and methods

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030097468A1 (en) * 2001-10-27 2003-05-22 Youssef Hamadi Configuration of computer networks
US20090219827A1 (en) * 2002-07-30 2009-09-03 Brocade Communication Systems, Inc. Registered state change notification for a fibre channel network
CN103309652A (zh) * 2012-02-09 2013-09-18 国际商业机器公司 用于在并行计算机中开始集合操作的方法和装置
CN103942197A (zh) * 2013-01-17 2014-07-23 阿里巴巴集团控股有限公司 数据监控处理方法及设备

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112562767A (zh) * 2020-12-29 2021-03-26 国家数字交换系统工程技术研究中心 一种晶上软件定义互连网络装置与方法
CN112562767B (zh) * 2020-12-29 2021-09-28 国家数字交换系统工程技术研究中心 一种晶上软件定义互连网络装置与方法

Also Published As

Publication number Publication date
EP3183664A4 (en) 2018-03-07
WO2016028545A1 (en) 2016-02-25
KR20170042600A (ko) 2017-04-19
EP3183664A1 (en) 2017-06-28
EP3183664B1 (en) 2021-03-10
CN106575283B (zh) 2021-06-29
US10158530B2 (en) 2018-12-18
JP6491741B2 (ja) 2019-03-27
KR102546237B1 (ko) 2023-06-21
JP2017527031A (ja) 2017-09-14
US20150333956A1 (en) 2015-11-19

Similar Documents

Publication Publication Date Title
CN106575283A (zh) 使用元胞自动机的群集服务器配置
US9331958B2 (en) Distributed packet switching in a source routed cluster server
EP2936554B1 (en) Die-stacked device with partitioned multi-hop network
US9176799B2 (en) Hop-by-hop error detection in a server system
US20140188996A1 (en) Raw fabric interface for server system with virtualized interfaces
US9806908B2 (en) Route mapping at individual nodes of a cluster server
CN109426648A (zh) 用于由智能网络接口控制器处理网络分组的技术
CN103338217B (zh) 基于低等待时间接口的连网及用于该连网的处理装置
CN104246724B (zh) 用于用内容表格条目存储数据的系统和方法
CN107852379A (zh) 用于现场可编程门阵列的定向二维路由器和互连网络、以及所述路由器和网络的其他电路和应用
CN107968756A (zh) 高性能互连链路层
CN102685017A (zh) 一种基于fpga的片上网络路由器
KR20210033996A (ko) 전용 저 레이턴시 링크를 사용한 다수의 하드웨어 가속기에 대한 통합된 어드레스 공간
Abdallah et al. Basic network-on-chip interconnection for future gigascale MCSoCs applications: Communication and computation orthogonalization
EP3742485B1 (en) Layered super-reticle computing: architectures and methods
CN104077138A (zh) 一种集成网络路由器的众核处理器系统及其集成方法和实现方法
CN104636301B (zh) 一种基于pci‑e接口的大规模plc高速背板总线系统
CN106161117A (zh) 一种afdx网络的仿真系统及仿真方法
CN108563501A (zh) 动态可重构高速串行总线的中断请求方法及装置
US20240020455A1 (en) Software-defined wafer-level switching system design method and apparatus
CN113168388A (zh) 总线上的存储器请求链接
CN205827367U (zh) 数据处理装置和服务器
JP7355983B2 (ja) マルチビット量子フィードバック制御のための量子測定・制御システム
CN208569619U (zh) 动态可重构高速串行总线的中断请求装置
Hassan et al. Hardware Implementation of NoC based MPSoC Prototype using FPGA

Legal Events

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