存储外壳内的结构交换图形模块

文档序号:1409655 发布日期:2020-03-06 浏览:7次 >En<

阅读说明:本技术 存储外壳内的结构交换图形模块 (Fabric switching graphics module within a storage enclosure ) 是由 J·布雷克斯通 C·R·隆 G·卡扎科夫 J·S·卡纳塔 于 2018-04-23 设计创作,主要内容包括:本文提供了分解式计算架构、平台和系统。在一个实施例中,提供了一种数据系统。所述数据系统包括第一组件,所述第一组件包括多个模块化存储托架,所述多个模块化存储托架装有一个或多个图形处理模块,每个图形处理模块包括图形处理单元(GPU),其中所述多个模块化存储托架各自包括托架连接器,所述托架连接器包括托架外围部件高速互连(PCIe)连接件。所述第一组件还包括PCIe交换机电路系统,所述PCIe交换机电路系统被配置为通过一个或多个外部PCIe链路将所述托架PCIe连接件通信地耦合到PCIe结构。(Decomposed computing architectures, platforms, and systems are provided herein. In one embodiment, a data system is provided. The data system includes a first component comprising a plurality of modular storage trays housing one or more graphics processing modules, each graphics processing module comprising a Graphics Processing Unit (GPU), wherein the plurality of modular storage trays each comprise a tray connector comprising a tray peripheral component interconnect express (PCIe) connection. The first component also includes PCIe switch circuitry configured to communicatively couple the carrier PCIe connector to a PCIe fabric through one or more external PCIe links.)

存储外壳内的结构交换图形模块

相关申请

本申请特此要求享有2017年5月8日提交的、标题为“FABRIC-SWITCHED GRAPHICSPROCESSING UNIT(GPU)ENCLOSURES”的美国临时专利申请62/502,806和2017年11月30日提交的、标题为“PEER-TO-PEER COMMUNICATION FOR GRAPHICS PROCESSING UNITS”的美国临时专利申请62/592,859的权益和优先权,这两个美国临时专利申请特此通过引用全部并入本文。

背景技术

计算机系统通常包括数据存储系统以及各种处理系统,所述处理系统可能包括中央处理单元(CPU)以及图形处理单元(GPU)。随着这些计算机系统中数据处理需求和数据存储需求增加,已经引入了在与最终用户计算机设备物理上分立的计算环境中处理大量数据的网络化存储系统。这些网络化存储系统通常通过一个或多个网络接口向最终用户或其他外部系统提供对大容量数据存储和数据处理的访问。可以在高密度设施(诸如机架安装环境)中包括这些网络化存储系统和远程计算系统。

然而,随着网络化存储系统和远程计算系统的密度增加,可能达到各种物理极限。这些极限包括基于底层存储技术的密度极限,诸如在旋转磁介质存储系统大型阵列的实施例中。这些极限还可以包括基于数据处理装备和网络互连的各种物理空间要求以及环境气候控制系统的大空间要求的计算或数据处理密度极限。除了物理空间限制之外,这些数据系统传统上受限于每个主机可以包括的设备的数目,这在期望较高容量、冗余度和可靠性的环境中可能是有问题的。随着网络化环境、云环境和企业环境中不断增长的数据存储和处理需要,这些缺点可能尤为突出。

发明内容

本文提供了分解式计算架构、平台和系统。在一个实施例中,提供了一种数据系统。该数据系统包括第一组件,该第一组件包括多个模块化存储托架(bay),所述多个模块化存储托架装有一个或多个图形处理模块,每个图形处理模块包括图形处理单元(GPU),其中所述多个模块化存储托架各自包括托架连接器,该托架连接器包括托架***部件高速互连(Peripheral Component Interconnect Express,PCIe)连接件。该第一组件还包括PCIe交换机电路系统,该PCIe交换机电路系统被配置为通过一个或多个外部PCIe链路将托架PCIe连接件通信地耦合到PCIe结构(fabric)。

提供本发明内容是为了以简化的形式介绍一些概念,这些概念将在下文的

具体实施方式

中被进一步描述。可以理解的是,本发明内容不意在确定所要求保护的主题的关键特征或必要特征,也不意在用来限制所要求保护的主题的范围。

附图说明

参考以下附图可以更好地理解本公开内容的许多方面。附图中的部件不一定按比例绘制,而是将重点放在清楚地例示本公开内容的原理上。此外,在附图中,相同的附图标记在所有若干视图中标示对应的部分。虽然结合这些附图描述了若干实施方案,但是本公开内容不限于本文所公开的实施方案。相反,目的是涵盖所有替代方案、改型和等同物。

图1例示了一个实施方式中的计算平台。

图2例示了一个实施方式中的计算平台的管理。

图3例示了一个实施方式中的管理处理器。

图4例示了一个实施方式中的计算平台的操作。

图5例示了一个实施方式中的计算平台的部件。

图6A例示了一个实施方式中的计算平台的部件。

图6B例示了一个实施方式中的计算平台的部件。

图7例示了一个实施方式中的计算平台的部件。

图8例示了一个实施方式中的计算平台的部件。

图9例示了一个实施方式中的计算平台的部件。

图10例示了一个实施方式中的计算平台的部件。

图11例示了一个实施方式中的计算平台的部件。

图12例示了一个实施方式中的计算平台的部件。

图13例示了一个实施方式中的计算平台的操作。

图14例示了一个实施方式中的计算平台的部件。

具体实施方式

图1是例示了计算平台100的系统图。计算平台100包括一个或多个管理处理器110和多个物理计算部件。所述物理计算部件包括处理器120、存储元件130、网络元件140、***部件高速互连(PCIe)交换机元件150和图形处理单元(GPU)170。这些物理计算部件通过由PCIe交换机元件150和各种对应的PCIe链路形成的PCIe结构151通信地耦合。PCIe结构151被配置为通信地耦合多个物理计算部件和使用PCIe结构内的逻辑分区建立计算块。这些计算块在图1中被称为机器160,每个计算块可以由任何数目的处理器120、存储单元130、网络接口140模块和GPU 170组成,包括零个任意模块。

平台100的部件可以被包括在一个或多个物理外壳(enclosure)中,所述物理外壳诸如是可以被进一步包括在搁架(shelving)单元或机架(rack)单元中的可机架安装的单元。平台100的预先确定数目的部件可以被***或安装到物理外壳内,所述物理外壳诸如是其中可以根据特定的最终用户的需要***和移除模块的模块化框架。封闭的模块化系统(诸如平台100)可以包括物理支撑结构和包含电路系统、印刷电路板、半导体系统和结构元件的外壳。包括平台100的部件的模块是从机架安装式外壳可***和可移除的。在一些实施例中,图1的元件被包括在机箱(chassis)(例如1U、2U或3U)中,以用于安装在更大的机架安装环境中。应理解,图1的元件可以被包括在任何物理安装环境中,并且不需要包括任何相关联的外壳或机架安装元件。

除了上文所描述的部件之外,可以采用外部外壳,该外部外壳包括多个图形模块、图形卡或包括GPU部分的其他图形处理元件。在图1中,示出了磁盘簇(just a box ofdisks,JBOD)外壳,该外壳包括PCIe交换机电路,该PCIe交换机电路通过一个或多个PCIe链路将任何数目的所包括的设备(诸如GPU 191)耦合到包括上文所讨论的计算元件、存储元件和网络元件的另一个外壳。该外壳可能不包括JBOD外壳,但是通常包括模块化组件,在模块化组件中各个图形模块可以被***和移除到相关联的插槽(slot)或托架(bay)中。在JBOD实施例中,通常***磁盘驱动器或存储设备来创建存储系统。然而,在本文的实施例中,***图形模块而不是存储驱动器或存储模块,这有利地提供大量GPU的耦合,以在类似的物理外壳空间内进行数据处理/图形处理。在一个实施例中,JBOD外壳可能包括用于存储模块/驱动器模块的24个插槽,所述插槽代替地装有图形模块上承载的一个或多个GPU。耦合外壳的外部PCIe链路可以包括本文所讨论的外部PCIe链路物理实施例和逻辑实施例中的任何一个。

一旦平台100的部件已经被***到一个或多个外壳内,所述部件就可以通过PCIe结构耦合并且在逻辑上隔离成任何数目的单独的“机器”或计算块。PCIe结构可以由管理处理器110配置,以在一个特定的计算模块的部件之间以及与外部系统选择性地路由通信量(traffic),同时维持不包括在一个特定的计算模块中的部件之间的逻辑隔离。以此方式,可以在平台100的部件之间建立灵活的“裸金属(bare metal)”配置。各个计算块可以与可以利用计算块的计算资源、存储资源、网络资源或图形处理资源的外部用户或客户机器相关联。此外,为了更大的并行性和容量,可以将任何数目的计算块分组成计算块的“集群”。尽管为了清楚起见未在图1中示出,但是还可以包括各种电源模块和相关联的电力和控制分布链路。

现在转到平台100的部件,管理处理器110可以包括一个或多个微处理器和从相关联的存储系统检索并且执行软件的其他处理电路系统,诸如用户接口112和管理操作系统111。处理器110可以在单个处理设备内实现,但是也可以被分布于在执行程序指令时协作的多个处理设备或子系统。处理器110的实施例包括通用中央处理单元、专用处理器和逻辑设备、以及任何其他类型的处理设备、其组合或变体。在一些实施例中,处理器110包括Intel微处理器或AMD微处理器、ARM微处理器、FPGA、ASIC、专用处理器或其他微处理器或处理元件。

在图1中,处理器110提供接口113。接口113包括处理器110和耦合到PCIe结构151的任何部件之间的通信链路。此接口采用通过PCIe链路传输的以太网通信量。另外,图1中的每个处理器120被配置有驱动器141,该驱动器141通过PCIe链路保证以太网通信。因此,处理器110和处理器120中的任何一个可以通过经由PCIe结构来传输的以太网通信。下文讨论了对通过PCIe配置的此以太网的进一步论述。

多个处理器120被包括在平台100中。每个处理器120包括一个或多个微处理器以及从相关联的存储系统检索并且执行软件的其他处理电路系统,诸如驱动器141和任何数目的最终用户应用程序。每个处理器120可以在单个处理设备内实现,但是也可以被分布于在执行程序指令时协作的多个处理设备或子系统。每个处理器120的实施例包括通用中央处理单元、专用处理器和逻辑设备、以及任何其他类型的处理设备、其组合或变体。在一些实施例中,每个处理器120包括Intel微处理器或AMD微处理器、ARM微处理器、图形处理器、计算核心、图形核心、专用集成电路(ASIC)或其他微处理器或处理元件。每个处理器120还可以通过一个或多个PCIe接口和PCIe结构151与其他计算单元(诸如同一个存储组件/外壳或另一个存储组件/外壳内的计算单元)通信。

多个存储单元130被包括在平台100中。每个存储单元130包括一个或多个存储驱动器,诸如在一些实施例中的固态驱动器。每个存储单元130还包括PCIe接口、控制处理器和电力系统元件。每个存储单元130还包括用于通信量统计和状态监测以及其他操作的滑块上(on-sled)处理器或控制系统。每个存储单元130包括具有PCIe接口的一个或多个固态存储器设备。在又一些其他实施例中,每个存储单元130包括一个或多个单独的固态驱动器(SSD)或磁硬盘驱动器(HDD)以及相关联的外壳和电路系统。

多个图形处理单元(GPU)170被包括在平台100中。每个GPU包括可以被分配给一个或多个计算单元的图形处理资源。GPU可以包括图形处理器、着色器、像素渲染元件、帧缓冲器、纹理映射器、图形核心、图形管线、图形存储器或其他图形处理和处理元件。在一些实施例中,每个GPU 170包括图形“卡”,该图形“卡”包括支持GPU芯片的电路系统。示例GPU卡包括nVidia Jetson卡或Tesla卡,所述nVidia Jetson卡或Tesla卡包括图形处理元件和计算元件,以及各种支持电路系统、连接器和其他元件。一些示例GPU模块还包括CPU或其他处理器以帮助GPU元件以及PCIe接口和相关电路系统的功能。GPU元件191还可以包括针对GPU170上文所讨论的元件,并且还包括可***到相关联的JBOD或其他外壳的托架的插槽内的物理模块或承载器(carrier)。

网络接口140包括用于通过TCP/IP(传输控制协议(TCP)/互联网协议)网络通信或用于承载用户通信量的网络接口卡,所述用户通信量诸如是用于存储单元130的iSCSI(互联网小型计算机系统接口)或NVMe(NVM Express)通信量或用于处理器120的其他TCP/IP通信量。网络接口140可以包括以太网接口装备,并且可以通过有线链路、光链路或无线链路通信。通过由网络接口140提供的分组网络链路提供对平台100的部件的外部访问。网络接口140通过相关联的PCIe链路和PCIe结构151与平台100的其他部件(诸如处理器120和存储单元130)通信。在一些实施例中,提供网络接口用于系统间网络通信以通过以太网进行通信,以用于在处理器120中的任何一个和处理器110之间交换通信。

每个PCIe交换机150通过相关联的PCIe链路通信。在图1中的实施例中,PCIe交换机150可以用于在网络接口140、存储单元130和处理单元120之间承载用户数据。每个PCIe交换机150包括用于在由每个PCIe交换机150处理的任何PCIe接口之间建立交换连接的PCIe交叉连接交换机。在一些实施例中,PCIe交换机150中的PCIe交换机包括PLX/Broadcom/Avago PEX8796 24-端口、96通道PCIe交换机芯片、PEX8725 10-端口、24通道PCIe交换机芯片、PEX97xx芯片、PEX9797芯片、或其他PEX87xx/PEX97xx芯片。

本文所讨论的PCIe交换机可以包括PCIe交叉点交换机,所述PCIe交叉点交换机至少基于由每个PCIe链路承载的通信量来在逻辑上互连相关联的PCIe链路中的各种PCIe链路。在这些实施例中,可以包括基于域的PCIe信令分发,其允许根据用户定义的组来进行PCIe交换机的PCIe端口的分隔。所述用户定义的组可以由处理器110管理,所述处理器110在逻辑上将部件集成到一个特定的集群的相关联的计算单元160内,并且在逻辑上在不同的集群之间隔离部件和计算单元。除了基于域的分隔之外或相对于基于域的分隔的另外一种选择,每个PCIe交换机端口可以是非透明(NT)端口或透明端口。NT端口可以允许端点之间的某种逻辑隔离,非常类似于桥,而透明端口不允许逻辑隔离,并且具有在纯交换配置中连接端点的效果。通过一个或多个NT端口的访问可以包括PCIe交换机和启动端点之间的附加握手,以选择特定的NT端口或以允许通过NT端口的可见性。

PCIe可以支持多重总线宽度,诸如x1、x4、x8、x16和x32,其中每重总线宽度包括用于数据传送的附加“通道”。PCIe还支持边带信令的传送,诸如系统管理总线(SMBus)接口和联合测试行动组(Joint Test Action Group,JTAG)接口、以及相关联的时钟、电力和引导(bootstrapping)以及其他信令。尽管图1中使用PCIe,但是应理解,可以代替地采用不同的通信链路或总线,诸如NVMe、以太网、串行连接SCSI(SAS)、光纤信道(FibreChannel)、雷雳接口(Thunderbolt)、串行连接高速ATA(SATA Express)、以及其他高速串行近范围接口、各种网络和链路接口。图1中的链路中的任何一个可以各自使用各种通信介质,诸如空气、空间、金属、光纤或某个其他信号传播路径、包括其组合。图1中的链路中的任何一个可以包括任何数目的PCIe链路或通道配置。图1中的链路中的任何一个可以各自是直接链路,或可能包括各种装备、中间部件、系统和网络。图1中的链路中的任何一个可以各自是公共链路、共享链路、聚合链路,或可以由离散的、单独的链路组成。

在图1中,任何计算模块120具有对如由PCIe结构在逻辑上分隔的任何/所有存储单元130或GPU 170/191的可配置的逻辑可见性。任何计算模块120可以传送数据以便存储在任何存储单元130上并且可以检索存储在任何存储单元130上的数据。因此,“m”个存储驱动器可以与“n”个处理器耦合,以允许具有高水平的冗余度和密度的大的、可扩展的架构。此外,任何计算模块120可以传送数据以用于由任何GPU 170/191处理或可以将对任何GPU的控制移交到另一个计算模块120。

为了提供每个计算模块120对任何存储单元130或GPU 170/191的可见性,可以采用各种技术。在第一实施例中,管理处理器110建立一个包括一个或多个计算单元160的集群。这些计算单元包括一个或多个处理器120元件、零个或多个存储单元130、零个或多个网络接口单元140、以及零个或多个图形处理单元170/191。这些计算单元的元件通过PCIe结构151的部分和任何相关联的外部PCIe接口通信地耦合到外部外壳,诸如JBOD 190。一旦计算单元160已经被分配给一个特定的集群,就可以将另一些资源(诸如存储资源、图形处理资源和网络接口资源、以及其他资源)分配给该集群。管理处理器110可以将平台100的存储资源总量的一个子集数目实例化/绑定到一个特定的集群,并且以供该集群的一个或多个计算单元160使用。例如,跨越4个存储单元的16个存储驱动器可能被分配给一个集群中的一组两个计算单元160。分配给一个集群的计算单元160然后处理用于该子集的存储单元的事务,诸如读事务和写事务。

每个计算单元160,特别是计算单元的处理器,可以具有对该集群内的存储单元或图形单元的存储器映射的可见性或基于路由表的可见性,而在被授予逻辑可见性之前,计算单元通常不可访问不与一个集群相关联的其他单元。此外,每个计算单元可能仅管理用于一个相关联的集群的一个子集的存储单元或图形单元。然而,可能通过与第一计算单元相关联的网络接口接收由第二计算单元管理的存储操作或图形处理操作。当不由第一计算单元管理(即,由第二计算单元管理)的资源单元期望存储操作或图形处理操作时,第一计算单元使用存储器映射的访问或基于路由表的可见性来通过第二计算单元将该操作引导到该事务的恰当的资源单元。该事务可以被传送和转移到管理与该事务的数据相关联的那个资源单元的适当的计算单元。对于存储操作,PCIe结构被用来在一个集群的计算单元/处理器之间传送数据,以使得一个特定的计算单元/处理器可以将数据存储在由该特定的计算单元/处理器管理的存储单元或存储驱动器中,即使可能通过与一个不同的计算单元/处理器相关联的网络接口接收该数据。对于图形处理操作,PCIe结构被用来在一个集群的计算单元/处理器之间传送图形数据和图形处理命令,以使得一个特定的计算单元/处理器可以控制由该特定的计算单元/处理器管理的一个或多个GPU,即使可能通过与一个不同的计算单元/处理器相关联的网络接口接收该数据。因此,虽然一个集群的每个特定的计算单元实际上管理全部资源单元(诸如存储单元中的存储驱动器或图形单元中的图形处理器)的一个子集,但是一个集群的所有计算单元都具有对该集群的资源单元中的任何一个的可见性,并且可以启动到该集群的资源单元中的任何一个的事务。通过至少使用存储器映射的地址空间或路由表来建立哪个处理模块处理针对一个特定的存储单元集合的存储操作,管理特定的资源单元的管理计算单元可以接收来自启动计算单元的重新传送的事务和任何相关联的数据。

在图形处理实施例中,交换PCIe结构中的NT分区或基于域的分区可以由具有NT端口或基于域的特征的PCIe交换机中的一个或多个提供。此分区可以确保GPU可以与一个期望的计算单元相互配合(interwork),并且确保不止一个GPU(诸如不止八(8)个GPU)可以与一个特定的计算单元相关联。此外,可以使用PCIe结构上的分区在运行中(on-the-fly)调整动态GPU-计算单元关系。共享网络资源也可以跨计算单元应用于图形处理元件。例如,当第一计算处理器确定该第一计算处理器不物理地管理与接收的图形操作相关联的图形单元时,则该第一计算处理器通过PCIe结构将该图形操作传送到集群的的确管理该图形单元的另一个计算处理器。

在另一些实施例中,可以在各个CPU/GPU对之间形成存储器映射的直接存储器访问(DMA)管道。除了其他配置之外,此存储器映射可以在PCIe结构地址空间上发生。为了在包括许多CPU和GPU的共享PCIe结构上提供这些DMA管道,可以采用本文所描述的逻辑分区。具体地,PCIe交换机上的NT端口或基于域的分区可以隔离相关联的CPU/GPU之间的各个DMA管道。

在存储操作(诸如写操作)中,数据可以由一个特定的集群的特定的处理器通过该集群的网络接口140接收。负载平衡或其他因素可以允许该集群的任何网络接口接收针对该集群的处理器中的任何一个以及用于该集群的存储单元中的任何一个的存储操作。例如,写操作可以是通过第一集群的第一网络接口140从采用iSCSI协议或NVMe协议的最终用户接收的写操作。该集群的第一处理器可以接收该写操作,并且确定该第一处理器是否管理与该写操作相关联的一个或多个存储驱动器,并且如果该第一处理器管理与该写操作相关联的一个或多个存储驱动器,则该第一处理器通过PCIe结构传送数据以便存储在存储单元的相关联的存储驱动器上。PCIe结构的各个PCIe交换机150可以被配置为在集群的各种存储、处理器和网络元件之间路由与集群相关联的PCIe通信量,诸如使用基于域的路由或NT端口。如果该第一处理器确定该第一处理器不物理地管理与该写操作相关联的一个或多个存储驱动器,则该第一处理器通过PCIe结构将该写操作传送到该集群的的确管理该一个或多个存储驱动器的另一个处理器。任何处理器都可以采用数据条带化(data striping)来在任何数目的存储驱动器或存储单元上(诸如在集群的存储单元中的一个或多个上)对特定的写入事务的数据进行条带化。

在此实施例中,与平台100相关联的PCIe结构151具有64位地址空间,其允许264字节的可寻址空间,导致至少16艾字节(exbibyte)的字节可寻址存储器。64位PCIe地址空间可以由所有计算单元共享,或在形成集群的各种计算单元之间分隔,以实现到资源单元的适当的存储器映射。PCIe结构的各个PCIe交换机150可以被配置为在特定的集群的各种存储、计算、图形处理和网络元件之间分隔和路由与该集群相关联的PCIe通信量。此分隔和路由可以是使用基于域的路由或NT端口来建立以在PCIe结构的各种PCIe交换机之间建立交叉点连接。还可以建立冗余度和故障转移(failover)路径,以使得当PCIe交换机中的一个或多个出现故障或变得无响应时,仍然可以在该集群的元件之间路由该集群的通信量。在一些实施例中,网格(mesh)配置由PCIe结构的PCIe交换机形成,以确保PCIe通信量的冗余路由。

管理处理器110通过一个或多个接口控制PCIe交换机150和PCIe结构151的操作,所述接口可以包括通信地耦合PCIe结构的每个PCIe交换机的内置集成电路(inter-integrated circuit,I2C)接口。管理处理器110可以使用PCIe交换机150在PCIe地址空间之间建立基于NT的或基于域的分隔。每个PCIe交换机可以被配置为分隔PCIe地址空间的部分以建立集群特定的分区。通过管理处理器110可以更改每个PCIe交换机的各种配置设置,以建立域和集群分隔。在一些实施例中,管理处理器110可以包括PCIe接口,并且通过在PCIe协议信令内传输的边带接口或PCIe接口来通信/配置PCIe交换机。

管理操作系统(OS)111由管理处理器110执行,并且提供对平台100的资源的管理。该管理包括创建、更改和监测一个或多个包括一个或多个计算单元的集群。管理OS 111为管理处理器110提供本文所描述的功能和操作。管理处理器110还包括用户接口112,该用户接口112可以向一个或多个用户呈现图形用户接口(GUI)。最终用户或管理员可以采用用户接口112和GUI来建立集群、将资产(计算单元/机器)分配给每个集群。用户接口112可以提供除GUI之外的其他用户接口,诸如命令行接口、应用程序编程接口(API)或其他接口。在一些实施例中,通过基于网络接口(websocket)的接口提供GUI。

可以在系统中包括不止一个管理处理器,诸如当每个管理处理器可以管理用于预先确定数目的集群或计算单元的资源时。用户命令(诸如通过GUI接收的用户命令)可以被接收到系统的管理处理器中的任何一个中,并且可以由接收管理处理器转发到处理管理处理器。每个管理处理器可以具有唯一的或预先分配的标识符,该标识符可以帮助将用户命令递送到恰当的管理处理器。另外,管理处理器可以彼此通信,诸如使用信箱进程(mailboxprocess)或其他数据交换技术。此通信可以通过专用边带接口(诸如I2C接口)发生,或可以通过耦合每个管理处理器的PCIe或以太网接口发生。

管理OS 111还包括仿真网络接口113。仿真网络接口113包括用于通过一个或多个PCIe接口传输网络通信量的传输机构。仿真网络接口113可以对管理处理器110仿真网络设备(诸如以太网设备),以使得管理处理器110可以通过PCIe接口与处理器120中的任何一个交互/接口连接,就像处理器在通过网络接口通信一样。仿真网络接口113可以包括内核级(kernel-level)元件或模块,该内核级元件或模块允许管理OS 111使用以太网式命令和驱动器来接口连接。仿真网络接口113允许应用程序或OS级进程与仿真网络设备通信,而不具有相关联的延迟和与网络堆栈相关联的处理开销。仿真网络接口113包括驱动器或模块,诸如内核级模块,该驱动器或模块对于由处理器设备执行的应用程序级和系统级软件表现为网络设备,但是不需要网络堆栈处理。相反,仿真网络接口113通过PCIe接口或PCIe结构将相关联的通信量传送到另一个仿真网络设备。有利地,仿真网络接口113不采用网络堆栈处理,但是仍然表现为网络设备,以使得相关联的处理器的软件可以在不修改的情况下与仿真网络设备交互。

仿真网络接口113将PCIe通信量转化为网络设备通信量,反之亦然。通过网络堆栈传送到网络设备的处理通信被省略,其中对于所呈现的网络设备/接口类型通常采用网络堆栈。例如,网络设备可以对操作系统或应用程序呈现为以太网设备。从操作系统或应用程序接收的通信将由网络设备传送到一个或多个目的地。然而,仿真网络接口113不包括用于处理从应用层向下到链路层的向下通信的网络堆栈。相反,仿真网络接口113自从操作系统或应用程序接收的通信提取有效载荷数据和目的地,并且将有效载荷数据和目的地转化成PCIe通信量,诸如通过使用与目的地相关联的寻址将有效载荷数据封装成PCIe帧。

管理驱动器141被包括在每个处理器120上。管理驱动器141可以包括仿真网络接口,诸如针对仿真网络接口113所讨论的。另外,管理驱动器141监测相关联的处理器120和由处理器120执行的软件的操作,并且向管理处理器110提供此操作的遥测(telemetry)。因此,可以由每个处理器120执行任何用户提供的软件,诸如用户提供的操作系统(Windows、Linux、MacOS、Android、iOS等……)或用户应用软件和驱动程序。管理驱动器141提供允许每个处理器120参与相关联的计算单元和/或集群的功能,以及向相关联的管理处理器提供遥测数据。每个处理器120还可以通过仿真网络设备彼此通信,该仿真网络设备通过PCIe结构传输网络通信量。驱动器141还为用户软件和操作系统提供API,以与驱动器141交互以及与管理处理器110交换控制/遥测信令。

图2是包括关于来自图1的元件的另一些细节的系统图。系统200包括处理器120以及管理处理器110的实施方式的详细视图。

在图2中,处理器120可以是集群的任何计算单元或机器中的示例性处理器。详细视图201示出了处理器120的若干层。第一层121是处理器120的硬件层或“金属”机器基础结构。第二层122提供OS以及管理驱动器141和API 125。最后,第三层124提供用户级应用程序。视图201示出用户应用程序可以访问集群的存储资源、计算资源、图形处理资源和通信资源,诸如当用户应用程序包括集群存储系统或集群处理系统时。

如上文所讨论的,驱动器141提供仿真网络设备,用于通过PCIe结构与管理处理器110(或其他处理器120元件)通信。这在图2中被示出为通过PCIe传输的以太网通信量。然而,在驱动器141中不采用网络堆栈来通过PCIe传输通信量。相反,驱动器141对操作系统表现为网络设备或对每个处理器120表现为内核。用户级服务/应用程序/软件可以与仿真网络设备交互而无需相对于普通或物理网络设备的修改。然而,与仿真网络设备相关联的通信量通过PCIe链路或PCIe结构传输,如所示出的。API 113可以提供标准化接口用于管理通信量,诸如用于控制指令、控制响应、遥测数据、状态信息或其他数据。

图3是例示了管理处理器300的框图。管理处理器300例示了本文所讨论的管理处理器中的任何一个(诸如图1的处理器110)的一个实施例。管理处理器300包括通信接口302、用户接口303和处理系统310。处理系统310包括处理电路系统311、随机访问存储器(RAM)312和存储装置313,但是可以包括另一些元件。

处理电路系统311可以在单个处理设备内实现,但是也可以被分布在执行程序指令时协作的多个处理设备或子系统上。处理电路系统311的实施例包括通用中央处理单元、微处理器、专用处理器和逻辑设备,以及任何其他类型的处理设备。在一些实施例中,处理电路系统311包括物理分布式处理设备,诸如云计算系统。

通信接口302包括用于通过通信链路、网络(诸如分组网络、互联网等)通信的一个或多个通信接口和网络接口。通信接口可以包括PCIe接口、以太网接口、串行接口、串行***接口(SPI)链路、集成电路总线(I2C)接口、通用串行总线(USB)接口、UART接口、无线接口或可以通过以太网或互联网协议(IP)链路通信的一个或多个局域网络通信接口或广域网通信接口。通信接口302可以包括被配置为使用一个或多个网络地址通信的网络接口,所述一个或多个网络地址可以与不同的网络链路相关联。通信接口302的实施例包括网络接口卡装备、收发器、调制解调器和其他通信电路系统。

用户接口303可以包括触摸屏、键盘、鼠标、语音输入设备、音频输入设备或用于接收来自用户的输入的其他触摸输入设备。输出设备(诸如显示器、扬声器、网页接口、终端接口和其他类型的输出设备)也可以被包括在用户接口303中。用户接口303可以通过网络接口(诸如通信接口302)提供输出和接收输入。在网络实施例中,用户接口303可以将显示数据或图形数据分组以用于由通过一个或多个网络接口耦合的显示系统或计算系统来远程显示。用户接口303的物理元件或逻辑元件可以向用户或其他操作人员提供警报或视觉输出。用户接口303还可以包括可由处理系统310执行的相关联的用户接口软件,以支持上文所讨论的各种用户输入设备和输出设备。用户接口软件和用户接口设备单独地或彼此结合以及与其他硬件元件和软件元件结合,可以支持图形用户接口、自然用户接口或任何其他类型的用户接口。

RAM 312和存储装置313一起可以包括非暂时性数据存储系统,尽管变体是可能的。RAM 312和存储装置313可以各自包括可由处理电路系统311读取并且能够存储软件的任何存储介质。RAM 312可以包括用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的以任何方法或技术实现的易失性和非易失性、可移除和不可移除介质。存储装置313可以包括非易失性存储介质,诸如固态存储介质、闪存、相变存储器或磁存储器、包括其组合。RAM 312和存储装置313可以各自被实现为单个存储设备,但是也可以在多个存储设备或子系统上实现。RAM 312和存储装置313可以各自包括能够与处理电路系统311通信的附加元件,诸如控制器。

存储在RAM 312或存储装置313上或中的软件可以包括具有进程的计算机程序指令、固件或某个其他形式的机器可读处理指令,所述进程在由处理系统执行时引导处理器300如本文所描述的那样操作。例如,软件320可以驱动处理器300以接收用户命令,以在包括计算模块、存储模块和网络模块的多个物理计算部件之间建立包括计算块的集群。软件320可以驱动处理器300以接收和监测遥测数据、统计信息、操作数据和其他数据,以向用户提供遥测数据和根据遥测数据或其他数据更改集群的操作。软件320可以驱动处理器300以管理集群和计算单元资源/图形单元资源、在PCIe结构元件之间建立域分区或NT分区、以及与各个PCIe交换机接口连接、以及其他操作。该软件还可以包括用户软件应用程序、应用程序编程接口(API)或用户接口。该软件可以被实现为单个应用程序或多个应用程序。通常,软件在被加载到处理系统中并且被执行时可以将处理系统从通用设备转变成如本文所描述的那样定制的专用设备。

系统软件320例示了RAM 312的示例配置的详细视图。应理解,不同的配置是可能的。系统软件320包括应用程序321和操作系统(OS)322。软件应用程序323-326各自包括可执行指令,所述可执行指令可由处理器300执行以根据本文所讨论的操作来操作集群控制器或其他电路系统。

具体地,集群管理应用程序323在计算平台的各种硬件元件之间建立和维护集群和计算单元,如在图1中所看到的。集群管理应用程序323还可以从通过相关联的PCIe结构的通信或逻辑连接来为PCIe设备提供服务(provision)或取消服务(disprovision),建立隔离功能以允许从一个或多个主机处理器动态分配PCIe设备,诸如GPU。用户接口应用程序324为最终用户提供一个或多个图形或其他用户接口以管理相关联的集群和计算单元以及监测集群和计算单元的操作。模块间通信应用程序325在其他处理器300元件之间提供通信,诸如通过I2C、以太网、仿真网络设备或PCIe接口。用户CPU接口327提供通信、API和仿真网络设备,用于与计算单元的处理器以及其专用驱动器元件通信。PCIe结构接口328在PCIe交换机元件之间建立各种逻辑分区或域、控制PCIe交换机元件的操作、以及从PCIe交换机元件接收遥测。

软件320可以在处理器300的执行和操作期间驻留在RAM 312中,并且可以在关机(power-off)状态期间驻留在存储系统313中,以及其他位置和状态。如针对计算机操作系统和应用程序所描述的,在启动或引导(boot)程序期间软件320可以被加载到RAM 312中。软件320可以通过用户接口303接收用户输入。此用户输入可以包括用户命令以及其他输入、包括其组合。

存储系统313可以包括闪存诸如NAND闪存或NOR闪存、相变存储器、电阻式存储器、磁存储器、以及其他固态存储技术。如图3中所示出的,存储系统313包括软件320。如上文所描述的,在处理器300的掉电(power-down)状态期间,软件320连同其他操作软件一起可以处于用于应用程序和OS的非易失性存储空间中。

处理器300通常意在表示用以部署和执行至少软件320以渲染或以其他方式实施本文所描述的操作的计算系统。然而,处理器300也可以表示任何如下的计算系统:在该计算系统上至少软件320可以被分级,并且软件320可以从该计算系统被分发、被输送、被下载或以其他方式被提供到又一个计算系统以用于部署和执行或又另外的分发。

图4是例示了对于本文所讨论的系统中的任何一个(诸如图1的平台100、图2的系统200或图3的处理器300)的操作实施例的流程图。在图4中,将在图1和图2的元件的上下文中讨论操作,尽管所述操作也可以应用于本文其他附图的元件。

管理处理器110向集群管理服务呈现(401)用户接口。此用户接口可以包括GUI或其他用户接口。用户接口允许用户创建集群(402)并且向其分配资源。根据已经分配了哪些资源可以图形化地表示集群,并且集群可以具有由用户指定的或由系统预先确定的相关联的名称或标识符。然后,用户可以建立计算块(403)并且将这些计算块分配给集群。计算块可以具有资源元件/单元,诸如处理元件、图形处理元件、存储元件和网络接口元件、以及其他元件。

一旦用户指定了这些各个集群和集群内的计算块,则管理处理器110可以实施(404)指令。该实施可以包括将资源分配给由处理器110维护的分配表或数据结构内的特定的集群和计算块。该实施还可以包括配置PCIe结构的PCIe交换机元件以将资源逻辑地划分为PCIe结构的路由域。该实施还可以包括初始化处理器、存储驱动器、GPU、存储器设备和网络元件,以使这些元件进入操作状态并且将这些元件与特定的集群或计算单元相关联。此外,该初始化可以包括将用户软件部署到处理器,利用相关联的地址和网络参数配置网络接口,以及在各存储元件之中建立分区或逻辑单元(LUN)。一旦已经将这些资源分配给集群/计算单元并且将其初始化,然后可以使它们对用户是可用的以执行用户操作系统、用户应用程序和用于用户存储过程以及其他用户目的。

另外,如下文将在图6-图14中讨论的,可以将多个GPU分配给单个主机,并且可以动态改变/更改这些分配。管理处理器110可以控制GPU向各种主机的分配,并且配置PCIe结构的属性和操作以实现此动态分配。此外,可以在GPU之间建立对等关系,以使得无需通过相关联的主机处理器传送GPU之间交换的通信量,从而大大提高吞吐量和处理速度。

图4示出了连续的操作,诸如用于用户监测或修改现有集群或计算单元的操作。在用户可以监测和修改元件以及这些元件可以被重新分配、聚合到集群中或从集群分解的地方,可以进行迭代过程。

在操作411中,根据用户指定的配置,诸如图4中所讨论的那些,来操作集群。操作可以包括执行用户操作系统、用户应用程序、用户存储过程、图形操作以及其他用户操作。在操作期间,处理器110从各种集群元件接收(412)遥测,所述各种集群元件诸如是PCIe交换机元件、处理元件、存储元件、网络接口元件和其他元件,包括由计算元件执行的用户软件。遥测数据可以通过用户接口向用户提供(413)、存储在一个或多个数据结构中,以及用来提示另一些用户指令(操作402)或修改集群的操作。

本文所讨论的系统和操作提供计算资源、图形处理资源、网络资源或存储资源到计算集群的动态分配。计算单元在由系统的用户分配之前,从任何特定的集群或计算单元分解。管理处理器可以控制集群的操作,并且向由通过管理处理器执行的软件提供的集群管理服务提供用户接口。一个集群包括至少一个“机器”或计算单元,而一个计算单元包括至少一个处理器元件。计算单元还可以包括网络接口元件、图形处理元件和存储元件,但是这些元件不是计算单元所要求的。

处理资源和其他元件(图形处理、网络、存储)可以在运行中被调入和调出计算单元和相关联的集群,并且这些资源可以被分配给其他计算单元或集群。在一个实施例中,图形处理资源可以由第一计算资源/CPU调度/编排,并且随后向另一个计算单元/CPU提供图形处理状态/结果。在另一个实施例中,当资源经历故障、挂起、过载状况时,则可以将附加的资源引入计算单元和集群以补充资源。

处理资源可以具有分配给其的唯一标识符,以用于由管理处理器识别和用于在PCIe结构上识别。当将处理资源添加到计算单元之后初始化处理资源时,根据需要可以将用户提供的软件(诸如操作系统和应用程序)部署到处理资源,并且当从计算单元移除该处理资源时,可以从该处理资源移除该用户提供的软件。可以从存储系统部署用户软件,管理处理器可以访问该存储系统以进行该部署。存储资源,诸如存储驱动器、存储设备和其他存储资源,可以在计算单元/集群之间进行分配和细分。这些存储资源可以跨越不同的或类似的存储驱动器或设备,并且可以具有任何数目的逻辑单元(LUN)、逻辑目标、分区或其他逻辑布置。这些逻辑布置可以包括一个或多个LUN、iSCSI LUN、NVMe目标或其他逻辑分区。可以采用存储资源的阵列,诸如镜像、条带化、独立磁盘冗余阵列(RAID)阵列,或者可以采用跨存储资源的其他阵列配置。网络资源,诸如网络接口卡,可以使用桥接或跨越技术在集群的计算单元之间共享。通过PCIe结构和PCIe交换机使用NT分区或基于域的分区,可以在集群的不止一个计算单元之间共享图形资源,诸如GPU。

图5是例示了计算平台500(诸如计算平台110)的资源元件的框图。资源元件通过由结构模块520提供的PCIe结构耦合。PCIe结构链路501-507每个提供到包括计算平台500的外壳内部的PCIe链路。集群PCIe结构链路508包括用于互连包括集群的各个外壳的外部PCIe链路。

通常提供资源单元510、530、540和550的多个实例,并且所述多个实例可以通过由结构模块520建立的PCIe结构在逻辑上耦合。不止一个结构模块520可能被包括以实现PCIe结构,部分取决于资源单元510、530、540和550的数目。

图5的模块各自包括一个或多个PCIe交换机(511,521,531,541,551)、具有相关联的保持电路(513,523,533,543,553)的一个或多个功率控制模块(512,522,532,542,552)、电力链路(518,528,538,548,558)和内部PCIe链路(517,527,537,547,557)。应理解,变体是可能的,并且可以省略每个模块的部件中的一个或多个。

结构模块520提供包括PCIe链路501-508的***部件高速互连(PCIe)结构的至少一部分。PCIe链路508为计算/存储集群的设备提供外部互连,诸如以互连各种计算/存储机架安装模块。PCIe链路501-507提供内部PCIe通信链路并且互连一个或多个PCIe交换机521。结构模块520还经由网络交换机525提供一个或多个以太网网络链路526。也可以在结构模块520中采用各种边带或辅助链路527,诸如系统管理总线(SMBus)链路、联合测试行动组(JTAG)链路、集成电路总线(I2C)链路、串行***接口(SPI)、控制器局域网(CAN)接口、通用异步收发器(UART)接口、通用串行总线(USB)接口或任何其他通信接口。可以包括为了清楚起见而未在图5中示出的另外的通信链路。

链路501-508中的每个可以包括各种宽度或通道的PCIe信令。PCIe可以支持多重总线宽度,诸如x1、x4、x8、x16和x32,其中每重总线宽度包括用于数据传送的附加“通道”。PCIe还支持边带信令(诸如SMBus和JTAG)、以及相关联的时钟、电力和引导以及其他信令的传送。例如,链路501-508中的每个可以包括具有四个通道的PCIe链路即“x4”PCIe链路、具有八个通道的PCIe链路即“x8”PCIe链路或具有16个通道的PCIe链路即“x16”PCIe链路、以及其他通道宽度。

功率控制模块(512,522,532,542,552)可以被包括在每个模块中。功率控制模块通过相关联的输入电力链路(519,529,539,549,559)接收源输入电力,并且转换/调节输入电力以供相关联的模块的元件使用。功率控制模块通过相关联的电力链路将功率分布到相关联的模块的每个元件。功率控制模块包括选择性地和单独地向相关联的模块的元件中的任何一个提供功率的电路系统。功率控制模块可以通过相关联的PCIe链路或边带链路(为了清楚起见未在图5中示出)接收来自可选控制处理器的控制指令。在一些实施例中,功率控制模块的操作由针对控制处理器524所讨论的处理元件提供。功率控制模块可以包括各种电源电子器件,诸如功率调节器、升压转换器、降压转换器、降压-升压转换器、功率因数校正电路、以及其他功率电子器件。各种磁、固态和其他电子部件通常根据特定应用的最大功率消耗来定尺寸,并且这些部件被附于相关联的电路板。

保持电路(513,523,533,543,553)包括能量存储设备,用于存储通过电力链路接收的功率以供在电力中断事件(诸如输入电力丧失)期间使用。保持电路可以包括电容存储设备,诸如电容器阵列、以及其他能量存储设备。过量的或剩余的保持电力可以被保持以供将来使用、被泄放到虚负载中、或通过PCIe电力链路或其他电力链路重新分布到其他设备。

每个PCIe交换机(511,521,531,541,551)包括一个或多个PCIe交叉点交换机,所述PCIe交叉点交换机至少基于由相关联的PCIe链路承载的通信量在逻辑上互连相关联的PCIe链路中的PCIe链路。每个PCIe交换机在由每个PCIe交换机处理的任何PCIe接口之间建立交换连接。在一些实施例中,PCIe交换机中的PCIe交换机包括PLX/Broadcom/AvagoPEX8796 24-端口、96通道PCIe交换机芯片、PEX8725 10-端口、24通道PCIe交换机芯片、PEX97xx芯片、PEX9797芯片、或其他PEX87xx/PEX97xx芯片。在一些实施例中,经由一个或多个PCIe交换机建立冗余度,诸如在PCIe交换机中具有主和辅/备用PCIe交换机。从主PCIe交换机到辅/备用PCIe交换机的故障转移可以由至少控制处理器524处理。在一些实施例中,可以使用到不同PCIe交换机的冗余PCIe链路在所述不同PCIe交换机中提供主和辅功能。在其他实施例中,可以使用到同一PCIe交换机的冗余链路在所述同一PCIe交换机中提供主和辅功能。

PCIe交换机521各自包括集群互连接口508,集群互连接口508被采用以互连在另外的外壳中的存储系统的另外的模块。通过相关联的外部连接器和外部布线在外部系统(诸如其他存储系统)之间提供PCIe互连。这些连接可以是由所包括的PCIe交换机以及未示出的其他PCIe交换机中的任何一个提供的PCIe链路,用于经由PCIe链路互连存储系统的其他模块。用于集群互连的PCIe链路可以在外部连接器处终止,所述外部连接器诸如是微型串行连接SCSI(SAS)HD连接器、zSFP+互连、或四元小形状因数可插拔(Quad Small FormFactor Pluggable,QSFFP)或QSFP/QSFP+插孔,其被采用以通过相关联的布线——诸如微型SAS或QSFFP布线——承载PCIe信令。在另外的实施例中,采用MiniSAS HD电缆,与6Gb/s的标准SAS电缆相对,MiniSAS HD电缆驱动12Gb/s。12Gb/s可以支持至少PCIe第3代。

PCIe链路501-508还可以承载由主机处理器或主机系统发出的NVMe(NVMExpress)通信量。NVMe(NVM Express)是用于大容量存储设备(诸如硬盘驱动器和固态存储器设备)的接口标准。NVMe可以取代串行ATA(SATA)接口,用于与个人计算机和服务器环境中的大容量存储设备接口连接。然而,这些NVMe接口限于一对一的主机驱动器关系,类似于SATA设备。在本文所讨论的实施例中,PCIe接口可以被采用以传输NVMe通信量,并且将包括许多存储驱动器的多驱动器系统在PCIe接口上呈现为一个或多个NVMe虚拟逻辑单元号(VLUN)。

图5的每个资源单元还包括相关联的资源元件。存储模块510包括一个或多个存储驱动器514。计算模块530包括一个或多个中央处理单元(CPU)534、存储系统535和软件536。图形模块540包括一个或多个图形处理单元(GPU)544。网络模块550包括一个或多个网络接口卡(NIC)554。应理解,每个资源单元中可以包括其他元件,包括存储器设备、辅助处理设备、支持电路系统、电路板、连接器、模块外壳/机箱和其他元件。

图6A和图6B例示了示例图形处理配置。图形模块640和650可以包括两种不同样式的图形模块。第一样式640包括GPU 641以及CPU 642和PCIe根复合体(root complex)643,有时被称为PCIe主机。第二样式650包括GPU 651,GPU 651充当PCIe端点653,有时被称为PCIe设备。模块640和650中的每个可以被包括在承载器(诸如机架安装组件)中。例如,模块640被包括在组件610中,并且模块650被包括在组件620中。这些机架安装组件可以包括JBOD承载器,该JBOD承载器通常被用来承载存储驱动器、硬盘驱动器或固态驱动器。示例机架安装物理配置被示出在图1的外壳190和下文的图8-图9中。

图6A例示了第一示例图形处理配置。每个都包括GPU 641、CPU 642和PCIe根复合体643的多个图形模块640可以通过PCIe交换机630耦合到控制器,诸如耦合到计算模块530中的CPU 531。PCIe交换机630可以包括隔离元件631,诸如非透明端口、逻辑PCIe域、端口隔离或隧道窗口连接(Tunneled Window Connection,TWC)机构,所述隧道窗口连接机构允许PCIe主机通过PCIe接口通信。通常,在一个PCIe系统总线上仅允许一个“根复合体”。然而,在各种设备之间使用某种形式的PCIe接口隔离,可以在一个如本文所讨论的一个增强型PCIe结构上包括不止一个根复合体。

在图6A中,每个GPU 641伴有一个CPU 642和一个相关联的PCIe根复合体643。每个CPU 531伴有一个相关联的PCIe根复合体532。为了有利地允许这些PCIe根复合体实体与控制主机CPU 531通信,隔离元件631被包括在PCIe交换机电路系统630中。因此,计算模块530以及每个图形模块640可以包括它们自己的根复合体结构。此外,当在单独的外壳中采用时,图形模块640可以被包括在可***外壳或从外壳移除的承载器或模块化机箱上。计算模块530可以以此方式动态地添加、移除和控制大量具有根复合体元件的图形模块。DMA传送可以被用来在计算模块530和每个单独的图形模块640之间传送数据。因此,GPU的集群可以由单个计算模块或主CPU创建和控制。此主CPU可以为图形模块和GPU中的每个编排任务和图形/数据处理。可以添加附加的PCIe交换机电路来按比例增加GPU的数量,同时维持根复合体之间的隔离,以便在主CPU和每个单独的GPU之间进行数据/控制的DMA传送。

图6B例示了第二示例图形处理配置。包括至少GPU 651和PCIe端点元件653的多个图形模块650可以通过PCIe交换机633耦合到控制器,诸如计算模块530。在图6B中,每个GPU651可选地伴随有CPU 652,并且图形模块650充当不具有根复合体的PCIe端点或设备。计算模块530可以各自包括根复合体结构532。当在单独的外壳中采用时,图形模块650可以被包括在可***外壳或从外壳移除的承载器或模块化机箱上。计算模块530可以以此方式动态地添加、移除和控制大量的作为端点设备的图形模块。因此,可以由单个计算模块或主机CPU创建和控制GPU的集群。此主机CPU可以为图形模块和GPU中的每个编排任务和图形/数据处理。可以添加附加的PCIe交换机电路以按比例增加GPU的数量。

图7是例示了存储系统700的示例物理配置的框图。图7包括与计算模块和其他模块类似的外壳中的图形模块540。图8和图9示出了可能被包括在与外壳701分开的外壳中的图形模块,所述分开的外壳诸如是通常被配置为保持磁盘驱动器的JBOD外壳。外壳701以及图8和图9中的外壳可以通过一个或多个外部PCIe链路(诸如通过由结构模块520提供的链路)通信地耦合。

图7是例示了先前的图的与中平面(midplane)有关的各种模块的框图。图7的元件被示出为物理地配合到中平面组件。中平面组件740包括电路板元件和多个物理连接器,用于与任何相关联的***器(interposer)组件715、存储子外壳710、结构模块520、计算模块530、图形模块540、网络模块550或电源模块750配合。中平面740包括一个或多个印刷电路板、连接器、物理支撑构件、机箱元件、结构元件和相关联的链路,作为金属迹线或光学链路用于互连图7的各种元件。中平面740可以用作底板(backplane),但不是如在单端底板实施例中那样使滑块或模块配合在仅一侧上,中平面740具有在至少两侧(即前面和后面)上配合的滑块或模块。图7的元件可以对应于本文中的附图的类似元件,诸如计算平台100,尽管变体是可能的。

图7示出了包括在1U外壳701中的许多元件。该外壳可以代替地具有任何倍数的标准化计算机机架高度,诸如1U、2U、3U、4U、5U、6U、7U等,并且可以包括相关联的机箱、物理支撑件、冷却系统、安装特征、壳体(case)和其他外壳元件。通常,每个滑块或模块将装配到包括在外壳701的机箱部分中的相关联的插槽或凹槽(groove)特征中,以滑动到预先确定的插槽内并且导引与每个模块相关联的一个或多个连接器与中平面740上的一个或多个相关联的连接器配合。系统700实现模块或滑块中的任何一个的热插拔(hot-swapping),并且可以包括其他特征,诸如电源灯、活动指示器、外部管理接口等。

存储模块510各自具有相关联的连接器716,该连接器716配合到相关联的***器组件715的配合连接器中。每个***器组件715具有相关联的连接器781,连接器781与中平面740上的一个或多个连接器配合。在此实施例中,多达八个存储模块510可以被***到单个***器组件715中,该***器组件715随后配合到中平面740上的多个连接器。这些连接器可以是由计算模块530和连接器783使用的共用或共享样式/类型。另外,存储模块510和***器组件715的每个集合可以被包括在子组件或子外壳710中,该子组件或子外壳710可以模块化方式***到中平面740中。计算模块530各自具有相关联的连接器783,该连接器783可以是与***器组件715类似类型的连接器。在一些实施例中,诸如在上文的实施例中,计算模块530各自***中平面740上的不止一个配合连接器内。

结构模块520经由连接器782耦合到中平面740,并且通过集群互连链路793提供对系统700的存储和处理部件的集群范围访问。结构模块520通过控制平面链路792提供其他1U系统的控制器模块之间的控制平面访问。在操作中,结构模块520各自经由链路782和中平面740通过PCIe网格与计算模块530、图形模块540和存储模块510通信地耦合,诸如图7中所示出的。

图形模块540包括一个或多个图形处理单元(GPU)以及任何相关联的支持电路系统、存储器元件和通用处理元件。图形模块540经由连接器784耦合到中平面740。

网络模块550包括一个或多个网络接口卡(NIC)元件,所述网络接口卡元件可以进一步包括收发器、变压器、隔离电路系统、缓冲器等。网络模块550可以包括吉比特以太网接口电路系统,其可以承载以太网通信量以及任何相关联的互联网协议(IP)和传输控制协议(TCP)通信量,以及其他网络通信格式和协议。网络模块550经由连接器785耦合到中平面740。

集群互连链路793可以包括PCIe链路或其他链路和连接器。用于外部互连的PCIe链路可以终止于外部连接器处,诸如微型SAS或微型SAS HD插孔或连接器——其被采用以通过微型SAS布线承载PCIe信令。在另外的实施例中,采用微型SAS HD电缆,与6Gb/s的标准SAS电缆相对,微型SAS HD电缆驱动12Gb/s。12Gb/s可以支持PCIe第三代。四元(4信道)小形状因数可插拔(QSFP或QSFP+)连接器或插孔也可以被采用以用于承载PCIe信令。

控制平面链路792可以包括用于承载控制平面通信的以太网链路。相关联的以太网插孔可以支持10吉比特以太网(10GbE)以及其他吞吐量。另外的外部接口可以包括PCIe连接件、FiberChannel连接件、管理控制台连接件、边带接口(诸如USB、RS-232)、视频接口(诸如视频图形阵列(VGA))、高密度媒体接口(HDMI)、数字视频接口(DVI),以及其他,诸如键盘/鼠标连接件。

外部链路795可以包括网络链路,所述网络链路可以包括以太网、TCP/IP、Infiniband(无限带宽)、iSCSI或其他外部接口。外部链路795可以包括用于与外部系统通信的链路,所述外部系统诸如是主机系统、管理系统、最终用户设备、互联网系统、分组网络、服务器或包括类似于系统700的其他外壳的其他计算系统。外部链路795可以包括承载至少40GbE信令的四元小形状因数可插拔(QSFFP)或四元(4信道)小形状因数可插拔(QSFP或QSFP+)插孔、或zSFP+互连。

在一些实施例中,系统700包括壳体或外壳元件、机箱和中平面组件,其可以适应模块和相关联的电路卡的灵活配置和布置。尽管图7例示了在中平面组件740的第一侧上的存储模块配合和控制器模块以及在中平面组件740的第二侧上配合的各种模块,但是应理解,其他配置是可能的。系统700可以包括机箱以适应以下配置中的任何一个,在前装载配置或后装载配置中:每个包含多个SSD的存储模块;包含HHHL卡(半高半长PCIe卡)或FHHL卡(全高半长PCIe卡)的模块,其可以包括图形卡或图形处理单元(GPU)、PCIe存储卡、PCIe网络适配器或主机总线适配器;具有包括控制器模块的PCIe卡(全高全长PCIe卡)的模块,其可以包括nVIDIA Tesla、nVIDIA Jetson或Intel Phi处理器卡,以及其他处理或图形处理器;包含2.5英寸PCIe SSD的模块;或交叉连接模块、***器模块、和控制元件。

另外,用于系统700的各种模块的功率和相关联的功率控制信令由一个或多个电源模块750通过相关联的链路781提供,所述相关联的链路781可以包括一个或多个不同电压电平(诸如+12VDC或+5VDC等)的链路。尽管在图7中电源模块750被示出为包括在系统700中,但是应理解,电源模块750可以代替地被包括在单独的外壳(诸如单独的1U外壳)中。每个电源节点750还包括用于从电力源——诸如AC或DC输入电力——接收功率的电力链路790。

另外,电力保持电路系统可以被包括在保持模块751中,该保持模块751可以响应于链路790中的电力丧失或者来自电源模块750的故障而通过链路780递送保持电力。电力保持电路系统也可以被包括在每个滑块或模块上。此电力保持电路系统可以被用来在电力中断期间——诸如当从电力源丧失主输入或系统电力时,向相关联的滑块或模块提供临时电力。另外,在使用保持电力期间,根据使用统计以及其他考虑因素,可以采用每个滑块或模块的处理部分来选择性地使每个模块的部分掉电。此保持电路系统可以在电力中断或电力丧失事件期间提供足够的电力以提交正在飞行中的(in-flight)写入数据。这些电力中断和电力丧失事件可以包括来自电力源的电力丧失,或可以包括从中平面740上的相关联的插座或连接器移除滑块或模块。该保持电路系统可以包括电容器阵列、超级电容器(super-capacitor)、超级电容器(ultra-capacitor)、电池、燃料电池、或其他储能部件,以及任何相关联的功率控制、转换、调节和监测电路系统。

图8是例示了图形模块承载器外壳的示例物理配置的框图。在此实施例中,采用JBOD组件800,该JBOD组件800具有由外壳801提供的多个插槽或托架,该外壳包括机箱和其他结构/包封部件。JBOD组件800中的托架通常被配置为保持存储驱动器或磁盘驱动器,诸如HDD、SSD或其他驱动器,所述存储驱动器或磁盘驱动器仍然可以被***外壳801的托架或插槽中。可以包括磁盘驱动器模块、图形模块和网络模块(550)的混合物。JBOD组件800可以通过电力链路790接收输入电力。图8中示出了可选的电源751、结构模块520和保持电路系统751。

可以采用JBOD承载器802来将图形模块650或存储驱动器保持到JBOD组件800的各个托架中。在图8中,每个图形模块仅占用一个插槽或托架。图8示出了包括在各个插槽/托架中的24个图形模块650。图形模块650可以各自包括承载器或滑块,该承载器或滑块承载组装成可移除模块的GPU、CPU和PCIe电路系统。图形模块650还可以包括承载器电路板和连接器,以确保每个GPU、CPU和PCIe接口电路系统可以物理地、电气地和逻辑地配合到相关联的托架中。在一些实施例中,图8中的图形模块650各自包括装配到承载器内的nVIDIAJetson模块,该承载器被配置为被***到JBOD外壳800的单个托架中。包括底板组件810,该底板组件810包括连接器、互连件和PCIe交换机电路系统以将在外部控制平面链路792和外部PCIe链路793上的插槽/托架耦合到由另一个外壳(诸如外壳701)提供的PCIe结构。

JBOD承载器802经由用于每个承载器的一个或多个相关联的连接器连接到底板组件810。底板组件810可以包括相关联的配合连接器。JBOD承载器802中的每个上的这些连接器可能包括U.2驱动连接器,也称为SFF-8639连接器,其可以承载PCIe或NVMe信令。底板组件810然后可以将此信令路由到JBOD组件800的结构模块520和相关联的PCIe交换机电路系统,以用于将模块通信地耦合到PCIe结构。因此,当装有一个或多个图形处理模块(诸如图7中的图形模块650)时,图形处理模块被***到通常被保留给通过U.2驱动连接器耦合的存储驱动器的托架中。这些U.2驱动连接器可以承载每托架x4PCIe接口。

在另一个示例托架配置中,呈现了图9。图9是例示了图形模块承载器外壳的另一个示例物理配置的框图。在此实施例中,采用JBOD组件900,该JBOD组件900具有由外壳901提供的多个插槽或托架,该外壳901包括机箱和其他结构/包封部件。JBOD组件900中的托架通常被配置为保持存储驱动器或磁盘驱动器,诸如HDD、SSD或其他驱动器,所述存储驱动器或磁盘驱动器仍然可以被***到外壳901的托架或插槽中。可以包括磁盘驱动器模块、图形模块和网络模块(550)的混合物。JBOD组件900可以通过电力链路790接收输入电力。图9中示出了可选的电源751、结构模块520和保持电路系统751。

可以采用JBOD承载器902来将图形模块640或存储驱动器保持到JBOD组件900的各个托架中。在图9中,每个图形模块占用四(4)个插槽或托架。图9示出了包括在相关联的跨越的插槽/托架中的6个图形模块640。图形模块640可以各自包括承载器或滑块,该承载器或滑块承载组装成可移除模块的GPU、CPU和PCIe电路系统。图形模块640还可以包括承载器电路板和连接器,以确保每个GPU、CPU和PCIe接口电路系统可以物理地、电气地和逻辑地配合到相关联的托架中。在一些实施例中,图形模块640包括装配到承载器内的nVIDIA Tesla模块,该承载器被配置为被***到JBOD外壳900的四托架跨越中。包括底板组件910,该底板组件910包括连接器、互连件和PCIe交换机电路系统,以通过外部控制平面链路792和外部PCIe链路793将插槽/托架耦合到由另一个外壳(诸如外壳701)提供的PCIe结构。

JBOD承载器902经由用于每个承载器的不止一个相关联的连接器连接到底板组件910。底板组件910可以包括相关联的配合连接器。JBOD承载器902中的每个上的这些单独的连接器可能包括单独的U.2驱动连接器,也称为SFF-8639连接器,其可以承载PCIe或NVMe信令。然后底板组件910可以将此信令路由到JBOD组件900的结构模块520或相关联的PCIe交换机电路系统,以用于将模块通信地耦合到PCIe结构。当装有一个或多个图形处理模块(诸如图形模块640)时,图形处理模块各自被***以跨越不止一个托架,这包括连接到不止一个托架连接器和不止一个托架PCIe接口。这些单独的托架通常被保留给通过单独的托架U.2驱动连接器和每托架x4PCIe接口耦合的存储驱动器。在一些实施例中,可以采用跨越不止一个托架的图形模块640和仅使用一个托架的图形模块650的组合。

图9与图8类似,除了图形模块640使用较大的托架占地面积(footprint),以有利地适应较大的图形模块功率或PCIe接口要求。在图8中,供应到单个托架/插槽的电力足够为相关联的图形模块650供电。然而,在图9中,图形模块640的较大的功率要求排除了使用单个插槽/托架,而是由单个模块/承载器跨越四个(4)托架,以提供每个图形处理模块640所要求的大约300瓦。可以从12伏和5伏电源汲取功率,以为每个“跨越的”托架建立300瓦的功率。单个模块化滑块或承载器可以物理地跨越多个插槽/托架连接器,以允许采用用于这些托架的功率和信令。此外,PCIe信令可以跨越多个托架,并且较宽的PCIe接口可以被采用以用于每个图形模块640。在一个实施例中,每个图形模块650具有x4PCIe接口,而每个图形模块640具有x16PCIe接口。其他PCIe通道宽度是可能的。在其他实施例中,可能跨越与4个不同的数目的托架。

在图8和图9中,PCIe信令以及其他信令和功率经由底板组件(诸如组件810和910)连接在“背”侧上。此“背”侧包括***到对应的一个或多个托架中的每个承载器的内部分。然而,可以为在模块的“前”侧上的每个图形处理模块提供另外的通信耦合。图形模块可以经由跨越不止一个图形模块的前侧点对点或网格通信链路920耦合。在一些实施例中,NVLink接口、InfiniBand、点对点PCIe链路、或其他高速串行近范围接口被应用以将两个或更多个图形模块耦合在一起,以用于在图形模块之间进一步通信。

图10例示了一个实施方式中的计算平台1000的部件。计算平台1000包括通过PCIe结构通信地耦合的若干元件,该PCIe结构由各种PCIe链路1051-1053和一个或多个PCIe交换机电路1050形成。主机处理器或中央处理单元(CPU)可以被耦合到此PCI结构,以用于与各种元件(诸如在前述图中所讨论的那些元件)通信。然而,在图10中,将讨论主机CPU 1010和GPU 1060-1063。GPU 1060-1063各自包括图形处理电路系统、PCIe接口电路系统,并且通过对应的链路1058a-1058n和1059a-1059n耦合到相关联的存储器设备1065。

在图10中,管理处理器(CPU)1020可以通过至少在PCIe结构中提供隔离功能1080通过PCIe结构建立GPU之间的对等布置,该隔离功能1080被配置为将与GPU相关联的设备PCIe地址域与和启动GPU之间的对等布置的主机CPU 1010相关联的本地PCIe地址域隔离。具体地,主机CPU 1010可能希望在平台1000中的两个或更多个GPU之间启动对等布置(诸如对等通信链路)。此对等布置使得GPU能够更直接地彼此通信,以绕过通过主机CPU 1010传送通信。

例如,在没有对等布置的情况下,GPU之间的通信量通常通过主机处理器来路由。这可以在图10中被看作通信链路1001,该通信链路1001示出了GPU 1060和GPU 1061之间的通信,所述通信通过PCIe链路1051和1056、PCIe交换机1050和主机CPU 1010路由。通过处理通过许多链路、交换机电路系统和处理元件的通信量,此布置的延迟可能较高,以及还有其他带宽减少。有利地,可以在PCIe结构中建立隔离功能1080,该隔离功能1080允许GPU 1060更直接地与GPU 1061通信,绕过链路1051和主机CPU 1010。遇到较少的延迟以及较高的带宽通信。此对等布置在图10中被示出为对等通信链路1002。

管理CPU 1020可以包括控制电路系统、处理电路系统和其他处理元件。管理CPU1020可以包括图1-图2中的管理处理器110或图3的管理处理器300的元件。在一些实施例中,管理CPU 1020可以被耦合到PCIe结构或被耦合到各种PCIe交换机电路系统上的管理/控制端口,或并入PCIe交换机电路系统或其控制部分。在图10中,管理CPU 1020建立隔离功能并且促进对等链路1002的建立。对等布置的元件以及管理CPU1020和相关电路系统的操作实施例的进一步讨论见于图11-图14中。管理CPU 1020可以通过管理链路1054-1055与PCIe交换机1050通信。这些管理链路包括PCIe链路,诸如x1或x4PCIe链路,并且可以包括I2C链路、网络链路或其他通信链路。

图11例示了一个实施方式中的计算平台1100的部件。平台1100示出了针对图10的元件的一个更详细的实施方式示例,尽管变体是可能的。平台1100包括主机处理器1110、存储器1111、控制处理器1120、PCIe交换机1150和GPU 1161-1162。主机处理器1110和GPU1161-1162通过PCIe交换机1150中的交换机电路系统1159通信地耦合,该交换机电路系统1159与PCIe链路1151-1155一起形成PCIe结构的一部分。控制处理器1120还通过PCIe链路(即链路1156)与PCIe交换机1150通信,但是此链路通常包括控制端口、管理链路(administration link)、管理链路(management link)或功能上专用于控制PCIe交换机1150的操作的其他链路。其他实施例具有经由PCIe结构耦合的控制处理器1120。

在图11中,建立了两个或更多个PCIe寻址域。这些地址域(1181,1182)被建立为隔离功能的一部分,以在逻辑上将主机处理器1110的PCIe通信量与GPU 1161-1162隔离。此外,由控制处理器1120创建合成PCIe设备,以进一步包括PCIe地址域之间的隔离功能。此隔离功能保证了主机处理器1110与GPU 1161-1162的隔离以及保证了GPU之间的增强的对等布置。

为了实现此隔离功能,采用图11的各种元件,诸如上文指示的那些。隔离功能1121包括地址陷阱(trap,俘获)1171-1173和合成设备1141。这些地址陷阱包括地址监测部分和地址转化部分。地址监测部分监测PCIe帧或其他PCIe通信量中的PCIe目的地地址,以确定是否遇到一个或多个受影响的地址。如果遇到这些地址,则地址陷阱将原始的PCIe目的地地址转化为修改的PCIe目的地地址,并且传送PCIe通信量以用于通过PCIe结构递送到对应于修改的PCIe目的地地址的主机或设备。地址陷阱1171-1173可以包括一个或多个地址转化表或其他数据结构,诸如示例表1175,其映射用来相应地修改PCIe地址的、传入的目地地址和传出的目地地址之间的转化。表1175包含条目,所述条目转化本地地址空间中的合成设备与全局/设备地址空间中的物理/实际设备之间的寻址。

合成设备1141-1142包括表示GPU 1161-1162中的对应的GPU的逻辑PCIe设备。合成设备1141表示GPU 1161,并且合成设备1142表示GPU 1162。如下文将进一步详细讨论的,当主机处理器1110发出PCIe通信量以便递送到GPU 1161-1162时,此通信量实际上被寻址以便递送到合成设备1141-1142。具体地,对于由主机处理器110针对GPU1161-1162发出的任何PCIe通信量,主机处理器1110的设备驱动器使用对应于相关联的合成设备1141-1142的目的地寻址。此通信量通过PCIe结构和交换机电路系统1159传送。地址陷阱1171-1172拦截包括合成设备1141-1142的寻址的此通信量,并且重新路由此通信量以便递送到与GPU1161-1162相关联的寻址。同样地,由GPU 1161-1162发出的PCIe通信量通过GPU寻址,以便递送到主机处理器1110。以此方式,GPU 1141和GPU 1142中的每个可以使用对应于合成设备1141和合成设备1142的PCIe寻址关于主机处理器1110操作。

主机处理器1110和合成设备1141-1142被包括在第一PCIe地址域(即主机处理器1110的‘本地’地址空间1181)中。控制处理器1120和GPU1161-1162被包括在第二PCIe地址域(即‘全局’地址空间1182)中。地址空间的命名仅是示例性的,并且可以采用其他命名方案。全局地址空间1182可以由控制处理器1120使用以为设备(诸如GPU)提供服务或取消服务,以供各种主机处理器使用。因此,任何数目的GPU可以被通信地耦合到一个主机处理器,并且这些GPU可以被动态地添加和移除以供任何给定的主机处理器使用。

应注意,合成设备1141-1142各自在本地寻址(LA)域中具有对应的基础地址寄存器(BAR 1143-1144)和对应的设备地址1145-1146。此外,GPU 1161-1162各自在全局寻址(GA)域中具有对应的基础地址寄存器(BAR 1163-1164)和对应的设备地址1165-1166。LA和GA地址对应于将被采用以到达相关联的合成或实际设备的寻址。

为了进一步例示各种寻址域的操作,呈现了图12。图12例示了一个实施方式中的计算平台1200的部件。平台1200包括主机处理器1210、控制处理器1220和主机处理器1230。每个主机处理器被通信地耦合到PCIe结构,诸如本文所讨论的这些PCIe结构中的任何一个。此外,控制处理器1220可以被耦合到该PCIe结构或被耦合到各种PCIe交换机电路系统上的管理端口,或并入PCIe交换机电路系统或其控制部分。

图12是在PCIe地址空间之间形成的PCIe寻址和相关联的域的示意性表示。每个主机处理器具有对应的“本地”PCIe地址空间,诸如与相关联的根复合体对应的PCIe地址空间。每个单独的PCIe地址空间可以包括PCIe规范的64位地址空间的完整域,或其一部分。此外,附加的PCIe地址空间/域与控制处理器1220相关联,在本文中被称为‘全局’或‘设备’PCIe地址空间。

具有相关联的地址陷阱的隔离功能在合成设备和实际设备之间形成链路。合成设备表示除了设备本身的PCIe空间以外在另一个PCIe空间中的实际设备。在图12中,各种设备(诸如GPU或任何其他PCIe设备)被配置为驻留在由控制处理器1220控制的全局地址空间内。在图12中,实际设备由‘D’符号表示。在图12中用‘S’符号表示的各种合成设备被配置为驻留在用于对应的主机处理器的相关联的本地地址空间上。

在图12中,示出了四个地址陷阱,即地址陷阱1271-1274。形成地址陷阱以将各种合成设备耦合到各种物理/实际设备。这些地址陷阱(诸如图11中所讨论的那些)被配置为拦截引导到合成设备的PCIe通信量并且转发到对应的物理设备。同样地,地址陷阱被配置为拦截引导到物理设备的PCIe通信量并且转发到对应的合成设备。执行地址转化以更改PCIe通信量的对应于各种地址陷阱的PCIe地址。

有利地,具有对应的本地PCIe地址空间的任何主机处理器可以被动态配置为与驻留在全局PCIe地址空间中的任何PCIe设备通信,反之亦然。在主机处理器操作期间可以添加和移除设备,这可以支持按比例增加或按比例减少每个添加的/移除的设备的可用资源。当采用GPU作为设备时,则GPU资源可以在运行中被添加到任何主机处理器或从任何主机处理器移除。增强了PCIe设备的热插拔,并且可以根据需要将安装到包括数十个GPU的机架安装组件中的设备智能地分配和重新分配给主机处理器。可以根据需要创建/破坏合成设备,或可以为特定的主机提供合成设备池,并且可以为合成设备配置适当的寻址,以允许对应的地址陷阱功能以将通信量路由到期望的GPU/设备。控制处理器1220处理合成设备、地址陷阱、合成设备的设置以及设备/GPU的提供服务/取消服务。

现在转向图10-图12的元件的示例性操作,呈现了图13。图13是例示计算平台(诸如计算平台1000、1100或1200)的示例操作的流程图。在图11的元件的上下文中讨论了图13的操作。然而,应理解,可以采用本文的附图中的任何一个的元件。图13还讨论了GPU或其他PCIe设备之间的对等布置的操作,诸如通过图10中的对等链路1002或图11中的对等链路1104看到的。对等链路允许在PCIe设备(诸如GPU)之间更直接地传送数据或其他信息,以实现增强的处理、增加的数据带宽和较低的延迟。

在图13中,提供(1301)PCIe结构以耦合GPU和一个或多个主机处理器。在图11中,此PCIe结构可以被形成在PCI交换机1150和PCIe链路1151-1155之间以及在通过PCIe链路耦合的另外的PCIe交换机之间。然而,此时的GPU和主机处理器仅被电耦合到PCIe结构,并且尚未被配置为通信。主机处理器(诸如主机处理器1110)可能希望与一个或多个GPU设备通信,并且此外允许那些GPU设备通过对等布置通信以增强GPU的处理性能。控制处理器1120可以通过PCIe结构在GPU之间建立(1302)对等布置。一旦被建立,控制处理器1120就可以将GPU动态地添加(1303)到该对等布置中,并且从该对等布置中动态地移除(1304)GPU。

为了建立该对等布置,控制处理器1120提供(1305)隔离功能以将与GPU相关联的设备PCIe地址域与和主机处理器相关联的本地PCIe地址域隔离。在图11中,主机处理器1110包括PCIe根复合体或与PCIe根复合体耦合,该PCIe根复合体与本地PCIe地址空间1181相关联。控制处理器1120可以为‘全局’或设备PCIe地址空间1182提供根复合体,或未在图11中示出的另一个元件可能提供此根复合体。地址空间1182中包括多个GPU,并且采用全局地址1165-1166作为用于相关联的GPU的设备/端点地址。这两个不同的PCIe地址空间在逻辑上彼此隔离,并且PCIe通信量或通信不跨PCIe地址空间传送。

为了使PCIe地址空间之间的PCIe通信量或通信相互配合,控制处理器1120建立(1306)表示本地PCIe地址域中的GPU的合成PCIe设备。所述合成PCIe设备按照PCIe交换机1150或控制处理器1120提供的逻辑形成,并且每个合成PCIe设备提供一个如下的PCIe端点,该PCIe端点表示特定的主机处理器的本地地址空间中的相关联的GPU。此外,为每个合成设备提供地址陷阱,所述地址陷阱拦截去往对应的合成设备的PCIe通信量,并且重新路由PCIe通信量以便递送到适当的物理/实际GPU。因此,控制处理器1120建立地址陷阱1171-1172,地址陷阱1171-1172重新引导(1307)由主机处理器1110针对本地PCIe地址域中的GPU1161-1162传送的通信量,以便递送到设备PCIe地址域中的GPU中的多个GPU。在第一实施例中,可以寻址由主机处理器1110发出的PCIe通信量以便递送到合成设备1141,即本地地址(LA)1145。合成设备1141已经被建立为此通信量的端点,并且地址陷阱1171被建立以重新引导此通信量以便递送到全局地址(GA)1165处的GPU 1161。在第二实施例中,可以寻址由主机处理器1110发出的PCIe通信量以便递送到合成设备1142,即LA 1146。合成设备1142已经被建立为此通信量的端点,并且地址陷阱1172被建立以重新引导此通信量,以便递送到在GA 1166处的GPU 1162。

由GPU发出的PCIe通信量的处理可以类似的方式工作。在第一实施例中,GPU 1161发出通信量以便递送到主机处理器1110,并且此通信量可以标识主机处理器1110的本地地址空间中的地址,而不是全局地址空间地址。陷阱1171将此通信量标识为去往主机处理器1110的通信量,并且重新引导该通信量以便递送到在与主机处理器1110相关联的地址域/空间中的主机处理器1110。在第二实施例中,GPU 1162发出通信量以便递送到主机处理器1110,并且此通信量可能标识主机处理器1110的本地地址空间中的地址,而不是全局地址空间地址。陷阱1172将此通信量标识为去往主机处理器1110,并且重新引导该通信量以便递送到在与主机处理器1110相关联的地址域/空间中的主机处理器1110。

除了上文所讨论的主机到设备的通信量之外,隔离功能1121可以提供GPU之间的对等布置。控制处理器1120建立地址陷阱1173,该地址陷阱1173重新引导(1308)由第一GPU传送的对等通信量到全局/设备PCIe地址域中的第二GPU,该对等通信量指示第二GPU作为在本地PCIe地址域中的目的地。每个GPU不必知道不同的PCIe地址空间,诸如在上文的主机-设备实施例中,其中对于向主机处理器发出的通信量,GPU使用主机处理器的本地地址空间中的相关联的地址。同样地,每个GPU在从事对等通信时,可以使用原产于主机处理器1110的本地地址空间的寻址而不是原产于全局/设备地址空间的寻址来发出PCIe通信量以便递送到另一个GPU。然而,由于每个GPU被配置为响应于全局地址空间中的寻址,因此地址陷阱1173被配置为相应地重新引导通信量。由于主机处理器1110通常与GPU通信以初始化GPU之间的对等布置,因此GPU使用主机处理器1110的本地地址空间的寻址。尽管通过管理PCIe结构和隔离功能1121的控制处理器1120促进了该对等布置,但是主机处理器和GPU通常不知道隔离功能和不同的PCIe地址空间。相反,主机处理器与合成设备1141-1142通信,就好像这些合成设备是实际的GPU。同样地,GPU 1161-1162在不知道合成设备或地址陷阱功能的情况下与主机处理器通信并且彼此通信。因此,由GPU 1161针对GPU 1162发出的通信量使用在那些GPU被分配给的主机处理器的本地地址空间中的寻址。地址陷阱1173通过在本地地址空间中的寻址来检测通信量,并且使用全局地址空间中的寻址来重新引导通信量。

在对等通信的一个具体实施例中,主处理器将首先在GPU之间建立布置,并且指示对等控制指令,所述对等控制指令标识在主机处理器的本地PCIe地址空间内的到GPU的寻址。因此,即使主机处理器与在PCIe结构或PCIe交换机电路系统内建立的合成设备通信,GPU仍然在主机处理器的控制之下。当GPU 1161具有用于递送到GPU 1162的通信量时,GPU1161将寻址去往本地地址空间(即与合成设备1142相关联的LA1146)中的GPU 1162的通信量,并且地址陷阱1173将重新引导此通信量到GA 1166。此重新引导可以包括转化在PCIe地址空间之间的寻址,诸如通过替换或修改PCIe通信量的寻址以包括重新引导目的地地址而不是原始目的地地址。当GPU 1162具有用于递送到GPU 1161的通信量时,GPU 1162将寻址去往本地地址空间(即与合成设备1141相关联的LA1145)中的GPU 1161的通信量,并且地址陷阱1173将重新引导此通信量到GA 1165。此重新引导可以包括替换或修改PCIe通信量的寻址,以包括重新引导目的地地址而不是原始目的地地址。因此,在逻辑上创建对等链路1104,该对等链路1104允许GPU之间的通信更直接的流动。

呈现了图14以例示在将主机处理器通信地耦合到PCIe设备(诸如GPU)时关于地址空间隔离和适当的地址的选择的另外的细节。在图14中,呈现了计算平台1400。计算平台1400包括若干主机CPU 1410、管理CPU 1420、PCIe结构1450、以及容纳多个相关联的GPU1462-1466以及对应的PCIe交换机1451的一个或多个组件1401-1402。组件1401-1402可能包括本文的机箱、机架安装或JBOD组件中的任何一个,诸如在图1和图7-图9中所找到的。多个PCIe链路互连图14中的元件,即PCIe链路1453-1456。通常,PCIe链路1456包括特定的控制/管理链路,该链路使得能够对PCIe结构1450的控制的管理(administrative)或管理级(management-level)访问。然而,应理解,可以代替地采用与其他PCIe链路类似的链路。

根据图10-图13中的实施例,可以建立隔离功能以允许PCIe设备(诸如GPU)从一个或多个主机处理器/CPU的动态提供服务/取消服务。这些隔离功能可以提供单独的PCIe地址空间或域,诸如用于部署的每个主机处理器的独立的本地PCIe地址空间,以及所有实际GPU共享的全局或设备PCIe地址空间。然而,当采用某个另外的下游PCIe交换机电路系统时,在主机处理器的本地地址空间和GPU的全局地址空间内使用的寻址上重叠可以在PCIe交换机电路系统在处理PCIe通信量时导致冲突或错误。

因此,图14例示了用于选择PCIe地址分配和地址空间配置的增强操作。操作1480例示了用于在配置隔离功能和地址域/空间中使用的管理CPU 1420的示例操作。管理CPU1420识别(1481)何时采用下游PCIe交换机,诸如何时通过PCIe链路将外部组件耦合到将主机处理器耦合到另外的计算或存储元件的PCIe结构。在图14中,这些下游PCIe交换机由PCIe交换机1451-1452指示。管理CPU 1420可以使用通过PCIe结构的各种发现协议、过边带信令(诸如I2C或以太网信令)或使用其他进程来识别何时采用这些下游交换机。在一些实施例中,下游PCIe交换机包括比上游采用的PCIe交换机更原始或能力更弱的样式/类型的PCIe交换机,并且管理CPU 1420可以经由型号检测这些配置,或者由操作人员编程以补偿此减少的功能。减少的功能可以包括不能够像其他类型的PCIe交换机一样有效地处理多个PCIe寻址域/空间,这可能导致PCIe通信量冲突。因此,在操作1482-1483中提供了增强的操作。

在操作1482中,管理CPU 1420关于主机处理器的本地PCIe地址空间在设备/全局地址空间中为物理/实际PCIe设备中的每个建立非冲突寻址。该非冲突寻址通常包括被采用以用于下游/端点PCIe设备的唯一、非重叠地址。当本文采用合成PCIe设备时,这样做以防止PCIe寻址之间的冲突。当由各种地址陷阱元件执行地址转化以将PCIe通信量从主机处理器的本地地址空间重新引导到PCIe设备的全局地址空间时,通过为全局地址空间中的PCIe设备智能选择寻址来防止冲突。用于设备的全局地址空间地址被选择为非重叠的、不常见的或唯一的,以使得不止一个主机处理器在相关联的本地地址空间中不使用类似的设备地址。这些地址在相关联的PCIe设备和合成配对物的引导、初始化、枚举或实例化过程中指示给主机处理器,以使得任何相关联的主机驱动器跨整个PCIe结构采用唯一的寻址,即使每个主机处理器可能具有逻辑上单独的/独立的本地地址空间。一旦寻址已经被选择并且被指示给适当的主机处理器,计算平台1400就可以根据非冲突地址空间来操作(1483)上游PCIe交换机电路系统和主机处理器。有利地,许多主机处理器不太可能在PCIe通信量中与其他主机处理器发生冲突。

所包括的描述和附图描绘了具体实施方案,以教导本领域技术人员如何制作和使用最佳模式。出于教导发明原理的目的,已经简化或省略了一些常规方面。本领域技术人员将理解落入本公开内容的范围内的这些实施方案的变体。本领域技术人员还将理解,可以以各种方式组合上文所描述的特征以形成多个实施方案。因此,本发明不限于上文所描述的具体实施方案,而是仅由权利要求及其等同物限制。

41页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:数字功率复用器

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!