用于改善可路由架构的性能的系统和方法

文档序号:6477893阅读:196来源:国知局

专利名称::用于改善可路由架构的性能的系统和方法性能的系统和方法
背景技术
:数据中心环境产生对计算系统(例如服务器、刀片服务器(blade)等)的、提供大量的I/O带宽的巨大需求。服务器通常通过支持用于添加多个I/O卡/设备(也称为"适配器")的装置(provision)和/或直接在服务器内结合嵌入式设备来提供所需的I/O带宽需要。嵌入式设备和/或附加适配器接口通常是但不限于PCIE邓ress、PCI/PCI-X、以及HyperTransport。适配器表示多种设备类别,包括存储器(SCSI、SATA、SAS、RAID、备份等)、网络(以太网、ATM)、集群(Infiniband、ServerNet)、多媒体(视频、音频)等等。由于可能需要大量的组件引脚,将许多I/O设备直接连接到计算节点或其它处理元件常常是不切实际的(例如由于可靠性、成本、以及组件产率(yield))。处理器、芯片组、以及组件供应商已经通过将各种功能和接口(例如作为计算、存储器、和1/0接口)划分成多个设备来解决这些问题。所述体系结构和划分方案提供构造多个平台的通用且简单的方式,所述多个平台的范围涵盖从具有一个或两个组件的小的简单系统到具有每个组件的一个或多个实例的大系统。较大系统(例如基于Opteron的系统)可以包括多个处理器核/插座、多个芯片组组件、以及许多I/O扩展槽。这些系统被设计为使CPU-CPU和CPU存储器带宽最优化。因此,大部分计算节点(或处理器)的总线/互连专用于连接存储器、存储器控制器、和/或其它处理器。根据系统的复杂性,一个或多个处理器可以没有可用的附加接口,或具有可用于连接到I/0子系统(或多计算节点环境中的计算网格的其它部分)的非常有限/受限(可能在带宽方面)的接口。这种情况可能迫使I/O或扩展芯片组("芯片组")为计算节点内的处理元件的"拐角(corner)"或外围(periphery)。芯片组与处理器/存储器元件之间的减少/有限的连接性的另一副作用是在协议转换器(或"芯片组")的任一侧上的带宽量之间可能存在大的不均等性。例如,系统配置可以具有支持PCIE邓ress(PCIe)的超过三十二个通道(lane)的芯片组组件,同时到处理器/存储器接口的芯片组仅具有至多8个通道。代表系统供应商的芯片组供应商已选择在芯片组与处理器/存储器组件之间包括附加接口(例如HyperTransport)。所述附加接口不仅提供附加带宽,而且提供各种接口(芯片组、协议等)之间的更好平衡。到芯片组的附加接口的包括可以减少给定设计所需的芯片组组件的数目,结果节省成本。芯片组可以具对节点(例如处理器和存储器组件)的不同"视图(view)"。如前所述,CPU-CPU和CPU-存储器互连的优化可能不允许芯片组被直接连接到每个节点。到/来自节点的芯片组事务(transaction)必须从一个节点横穿到另一节点,直至到达目的地节点为止。节点和/或芯片组之间的每个链路表示一个"跳跃(hop)"。从芯片组的角度出发,计算环境内的不同节点可以相距不同数目的跳跃。具有较少跳跃的节点更"近",而与芯片组相距较多数目的跳跃的节点更"远"。系统性能直接与活动(active)芯片组(例如I/0)带宽的量和芯片组到目标节点的跳跃数目相关。芯片组事务沿着芯片组到目标节点路径在每个节点处被复制。芯片组事务从每个本地节点的可用带宽(例如存储器)中消耗带宽并从而限制该节点内的(多个)处理器及其它设备的带宽量。3当芯片组支持到计算节点环境中的多个链路时,附加芯片组带宽可用。当前计划的芯片组体系结构提供上游(计算节点)接口与下游(计算节点、架构(fabric)、或I/O)接口之间的软或硬划分。业务(traffic)(DMA、中断、消息、管理等)被从下游接口附着(pin)到仅一个上游接口。下游接口到单个上游接口的此附着(经由软件和/或硬件配置/跨接(strapping))可能由于特定业务在芯片组与目标节点之间遇到的跳跃数目而未提供最优系统性能。当操作系统调度程序将任务/进程(例如驱动程序、应用程序)从一个节点移动到计算环境内的另一节点时,问题非常明显。根据芯片组的业务分布(profile)(例如跳跃数目),这些进程的动态移动可以改善或阻碍系统性能。图1是具有可路由(routable)架构的示例性处理系统的示意图。图la和lb举例说明示例性地址转换。图2是示出使用可路由架构中的分叉(bifurcated)设计的改善性能的示例性2S设计的高级图示。图3是示出使用可路由架构中的分叉设计的改善性能的示例性4S设计的高级图示。图4是示出使用可路由架构中的分叉设计的改善性能的示例性8S设计的高级图示。图5是举例说明用于改善可路由架构的性能的示例性操作的流程图。具体实施例方式在(多个)芯片组设备内提供附加的智能水平以便使用最直接的路径(例如最少的跳跃数目)将其业务路由到目标节点是有益的。提供到CPU复合体(complex)的多个路径可以减少跳跃的数目,从而减少或完全消除CPU总线上的数据的复制。示例性实施例增加I/0带宽连接性并利用所有可用1/0链路。对于高带宽设备(例如GPU、10GbpsNIC、以及RAID适配器)而言,这是特别期望的。示例性系统图1是具有可路由架构150的示例性处理系统100的示意图。在示例性实施例中,处理系统100可以包括多个计算节点IIO和110'。计算节点IIO可以具有一个或多个CPU核112ab、高速缓存器114ad、和/或(多个)系统请求接口116。可以提供纵横开关118以经由集成存储器控制器122将CPU核112ab连接到共享存储器资源120ab。虽然在本文中未指明,但图1中还示出用于计算节点110'的类似组件并用"prime(')"符号来指示。当然,如根据以下说明将轻易地显而易见的那样,还可以在处理系统100中提供多于两个的计算节点110和110'。每个计算节点IIO和110'还可以包括到可路由架构的一个或多个接口。在示例性实施例中,这些接口可以分别由一个或多个HT接口130和130'组成。通常,HT接口130和130'可以包括电路和程序代码(例如固件)以便通过可路由架构150将多个设备140af(直接地或经由一个或多个适当的互连转换(例如桥接器)设备)连接到计算节4点110和110'中的一个或多个。当然,还可以实现其它点到点链路且其不限于HT链路(在本实施例中HT链路仅仅是示例性的)。该设备可以包括存储介质(例如RAID)、网络接口卡(NIC)、多媒体设备、PCIe卡、嵌入式和非嵌入式设备、和/或现在已知或后来开发的其它设备。设备140af中的任何设备可以经由芯片组160或160'、通过直接路径155ae、穿过可路由架构150连接到计算节点110和110'中的任何节点。虽然所有的设备140af可以同时连接到单独的计算节点110和110'且多个设备140af可以跨越可路由架构而同时连接/通信。在示例性实施例中,连接到可路由架构的设备可以包括一个或多个逻辑和/或物理架构接口。单个物理接口可以被划分成多个逻辑接口,每个提供到可路由架构中的唯一"端口"或"路径"。在示例性实施例中,可以使用HyperTransport链路来建立多个路径155ae。HyperTransport3.0规范允许将链路划分(例如分叉)成多个独立的连接。这允许基于HT的设备具有连接到多个/其它HT设备的能力。例如,可以将16xHT链路分离(split)或划分(例如分叉)成两个逻辑8xHT链路。也就是说,可以将来自处理器的单个HT端口分成逻辑端口(例如HT0、HT1、HT2等)以提供多个路径155a和155b。还可以将来自芯片组160'的另一单个HT链路分离(例如分叉)成逻辑端口HT0和HT1以提供路径155c和155d。应注意的是在示例性实施方式中每个芯片组160、160'具有两个独立的HT链路。然而,在其它实施方式中,可以采用分叉链路。应注意的是根据带宽要求,分叉HT链路能够作为两个8xHT链路或作为单个16xHT链路操作。双HT接口使得能够在图1所示的2S设计中将每个芯片组160和160'连接到计算节点110和110'两者且在两个节点110与110'之间路由业务。在4S(参见图3)和8S(参见图4)设计中,分叉(和/或多个HT接口)允许在两个平台之间使用相同的I/O子系统。例如,在4S设计中,每个芯片组组件经由独立的8x链路连接到两个处理器,这允许芯片组是到计算节点110的连接数目的两倍,或者允许多个计算节点110与110'之间的同时连接。应注意的是对于可以包括在可路由架构中的路径的数目不存在理论极限,且分叉仅仅被示为示例性实施例。路径的数目主要受到在可路由架构中实现的连接性和对接到可路由架构的设备的限制。还应注意的是所述处理系统不限于1S、2S、4S、或8S设计,而是还可以扩展至其它处理环境。还应注意的是描述分叉和双HT链路仅仅是为了举例说明可以实现的典型芯片组和处理器体系结构的一个示例。还可以预期其它实施例以允许芯片组直接连接到2+计算节点(CPU)。在示例性实施例中,范围注册表(registry)170可以被实现为在每个芯片组160和160'的接口堆栈中设置的物理注册表以便通过可路由架构150中的多个路径155ae来动态地引导业务。BIOS或软件可以设置芯片组路由表。例如,BIOS可以提供到路由表的扩展以便提供CPU/存储器的"加权(weighted)"视图和端点密切联系(affinity)。这提供告知OS和软件对于特定的I/O设备而言有多少跳跃的机制,从而使得OS和驱动器能够基于最直接的路径使I/0设备(或计算节点)业务和其它架构端点(DRAM存储器或其它设备)密切联系(affinitize)。另外,范围注册表170及相关逻辑/电路将业务(DAM请求、消息等)从设备端口BlBn引导到架构互连端口155中的一个或多个。范围注册表引导业务以便使业务的路径最优化(通过使跳跃数目最小化)。在示例性实施例中,每个路由表条目包括定义物理基地址的描述符、物理地址极限(或孔径尺寸)、以及包括读、写、预取、和写置入的可配置访问参数。每个路由表条目还可以包含将描述符关联/连结于特定的上游端口的配置机制。每个描述符可以被路由到一个上游端口(而不是两个)。多个描述符可以用来允许在两个上游端口之间映射多个地址范围。当发生总线主控器(DMA)请求时,路由代理180在必要时首先执行虚拟到物理地址转换。在示例性实施例中,路由代理可以是I/0存储器映射单元(IO匪U)。路由代理(IO匪U)负责虚拟到物理地址转换和/或安全/认证任务。在可能需要多次转换以确定最终物理地址的情况下,路由代理还可以执行虚拟到虚拟地址转换。在任何情况下,随后将所转换(如果需要)地址与路由表条目相比较以确定应经由纵横开关185将循环(cycle)转送到哪个上游端口。该上游端口随后将事务转送到可路由架构互连155。参照图la和lb可以更好地理解地址转换。图la示出从每个计算节点的角度出发的示例性物理存储器映射。在本示例中,存储器映射(memorymap)190对应于计算节点1且存储器映射192对应于计算节点2(虽然可以存在任何数目的计算节点)。计算节点1不能在没有某种地址转换的情况下直接访问计算节点2的存储器/资源。计算节点1具有直接访问计算机点2处的存储器(在可寻址空间的顶部示出)的能力,但是需要某种形式的地址转换以便向下重新映射到计算节点2处的物理范围(例如可用DRAM)内。图lb示出具有两个节点的示例性系统体系结构(如图1所示),每个计算节点具有其自己的本地存储器和系统资源视图(如图la所示)。开关195ab(例如HT桥接器/开关、PCIe、或其它架构互连)充当架构互连。所述架构互连提供地址转换服务(如果需要)并将业务引导到架构内的适当端口或路径。在图lb所示的示例中,箭头和文字举例说明在各种阶段可能发生什么类型的地址转换。在本示例中,仅详细描述设备170(例如存储器和/或网络控制器)对目标计算节点的访问。在继续之前,应注意的是如刚刚描述的那样,通过可路由架构150中的多个路径155ae来动态引导业务是出于举例说明的目的且并不意图具有限制性。另外,还可以提供其它功能组件且其不限于本文所示和所述的那些。还应注意的是本文所述的示例性实施例特别适合于在PCI配置空间内使用。可以经由标准PCI配置循环(configurationcycle)、存储器映射循环(memory-m即pedcycle)、或其它类型的消息或管理协议来访问配置空间。每个上游链路(例如HT0和HT1)连接到一个或多个处理器(例如计算节点)上的唯一端口。通过公共体系结构实施方式(例如基于PCI的系统),每个1/0链路包含其自己的唯一PCI总线号集合。可以将集成设备(例如PCIE邓ress桥接器、P2P桥接器、嵌入式设备)配置("附着")到任一端口但不是两个端口(以便符合通用软件设备发现算法)。各个设备必须仅仅出现在PCI配置空间中一次(除非包括软件/硬件以处理将被一个或多个架构连接设备发现多次的设备)。应注意的是每个CPU可以具有唯一的PCI配置路由表以使PCI配置循环到芯片组的路由最优化。这允许用于配置循环的多个入口点(例如,根据哪个设备发起/转送配置循环,到总线60xYY的PCI配置循环可以从任一可路由架构端口进入设备),并提供发起者与目标设备之间的最直接(例如最短)路由路径。另外,应注意的是本文所述的示例性实施例允许整个I/0在所有产品号码(或SKU)中可用。在4S和8S设计中,分叉使得能够在两个平台之间使用相同的1/0子系统。例如,可以将4S系统配置为2S或4S(每个芯片组组件经由唯一的8x链路连接到两个处理器,使得能够实现2S或4S配置中的完全I/O连接性)。8S系统可以被配置为4S或8S(前四个处理器通过8x链路钩(hook)到四个芯片组组件,而其余的4个处理器经由8x链路钩到相同的芯片组组件)。本文所述的示例性实施例还使得能够实现1/0(芯片组)与系统存储器之间的较高并发性(即存在更多的活动HT链路)。可以在不必添加芯片组组件的情况下在系统内利用所有的链路。此外,如果可路由架构内的设备(例如芯片组)将业务引导到最近和/或最佳端口,则可以减少数据在1/0(数据组)与系统存储器2S设计之间进行的"跳跃"的平均数目。例如,在2S设计中跳跃的平均数据从1.5变为1.0(改善33%)。在4S设计中跳跃的平均数目从1.75变为1.5(改善14%)。而且,如参照图24所示的图示将更好地理解的那样,在8S设计中,跳跃的平均数目从1.875变为1.75(改善6.7%)。图2是示出使用可路由架构中的分叉设计的改善性能的示例性2S设计的高级图示。在传统2S互连200中,所有的I/O均经由16xHT链路连接到CPU1。CPU插座2的纵横能力(crossbarcapability)未被完全实现,且要到达任何一个CPU处的存储器资源需要从芯片组开始的平均1.5个跳跃。然而,在分叉2S设计250中,每个处理器经由8xHT链路连接到芯片组。在1S和2S配置二者中,所有的1/0均可用,且I/0跨所有纵横是平衡的。因此,要到达任一CPU处的存储器资源,需要平均1.0个跳跃,与传统的2S互连200相比引起33%的跳跃数目减少。图3是示出使用可路由架构中的分叉设计的改善性能的示例性4S设计的高级图示。在传统4S互连300中,所有的I/O均经由16xHT链路连接到CPU1且所有CPU经由16xHT链路互连。要到达任何一个CPU处的存储器资源需要从芯片组开始的平均1.75个跳跃。然而,在分叉4S设计350中,每个处理器经由8xHT链路连接到芯片组,且所有CPU经由16xHT链路互连。在2S和4S配置二者中,所有的I/0均可用,且I/0跨所有纵横是平衡的。因此,要到达任一CPU处的存储器资源,需要平均1.5个跳跃,与传统的4S互连300相比引起14%的跳跃数目减少。图4是示出使用可路由架构中的分叉设计的改善性能的示例性8S设计的高级图示。在传统8S互连400中,所有I/O经由8xHT链路连接到CPU1,且所有CPU经由8xHT链路互连。然而,与传统的4S设计相比,只有50X的HT带宽可用于I/O。也就是说,存在四个未使用的HT链路(CPU5CPU8)。要到达任一CPU处的存储器资源,需要从芯片组开始的平均1.875个跳跃。然而,在分叉8S设计450中,每个处理器经由8xHT链路连接到芯片组,且所有CPU经由8xHT链路互连。在4S和8S配置二者中,所有的I/O子系统均可用,且所有HT链路均被使用(即存在到I/O的8个链路)。因此,要到达任一CPU处的存储器资源,需要平均1.75个跳跃,与传统的8S互连400相比引起6.7%的跳跃数目减少。应注意的是上文所讨论的示例性系统是出于图示的目的而提供的。还可以预期其它实施方式。示例性操作图5是举例说明用于改善可路由架构的性能的示例性操作的流程图。操作500可以被体现为一个或多个计算机可读介质上的逻辑和/或逻辑指令。当被执行时,所述逻辑指令促使一个或多个设备被编程以便实现所述的操作。在示例性实施例中,可以使用图中所描绘的组件和连接来改善可路由架构的性能。在操作510中,从连接到计算复合体的多个设备中的任何设备接收数据分组(诸如但不限于DAM请求、管理、配置、中断、以及消息)。所述计算复合体可以包含处理器、芯片组、存储器、可路由架构接口、和/或设备的任何组合。在操作520中,基于存储在多个范围寄存器中的数据为通过可路由架构的数据分组识别可用路径。例如,可以实现范围寄存器(rangeregister)或虚拟化代理(例如IO匪U)以转换数据分组的地址以便识别通过可路由架构的最高效和/或直接的路径。在操作530中,数据分组被动态地引导到计算复合体中的多个计算节点中的任何节点。将数据分组动态地引导到计算复合体中的多个计算节点中的任何节点减少CPU-CPU或CPU-I/0跳跃的数目。将数据分组动态地引导到计算复合体中的多个计算节点中的任何节点还减少CPU总线上的数据复制。这还允许架构的可伸縮性/可扩充性/可扩展性以包括多个计算节点。提供本文所示和所述的操作是为了举例说明用于改善可路由架构的性能的示例性实施例。应注意的是所述操作不限于所示和所述的顺序。另外,还可以实现其它操作。举例来说,操作可以实现物理到虚拟、物理到物理、和/或虚拟到虚拟地址转换(例如基于存储在范围寄存器和/或诸如IO匪U等虚拟化代理中的数据)。可以由一个或多个I/0存储器管理单元(IO匪U)利用IO匪U条目来处理所述转换特征。由IO匪U来执行初始转换服务和访问权限(例如安全)。所转换地址(虚拟到物理或虚拟到虚拟)基于所产生的所转换地址而被发送到适当的"架构端口"。除本文明确地阐述的特定实施例之外,鉴于本文公开的说明书,其它方面和实施方式对于本领域的技术人员来说将是显而易见的。意图在于在以下权利要求的真实精神和范围的情况下,本说明书和举例说明的实施方式仅仅被视为示例。8权利要求一种系统,包括(100)多个计算节点(110);可路由架构(150);以及多个芯片组(160),被所述可路由架构连接到所述多个计算节点(110),芯片组(160)具有范围寄存器,该范围寄存器通过可路由架构(150)动态地将业务从任何设备引导到所述多个计算节点(110)中的任何节点。2.权利要求1的系统(100),还包括至少一个表格和逻辑,用以转换物理地址以便通过可路由架构(150)将业务从任何设备引导到所述多个计算节点(110)中的任何节点。3.权利要求1的系统(100),还包括至少一个表格和逻辑,用以转换虚拟地址以便通过可路由架构(150)将业务从任何设备引导到所述多个计算节点(110)中的任何节点。4.权利要求l的系统(IOO),其中,所述可路由架构(150)包括以下各项中的至少一个点到点链路链路、HT链路、分离式HT链路、以及分叉的分离式HT链路。5.权利要求1的系统(IOO),其中,所述多个芯片组(160)包括桥接器,且该桥接器包括以下各项中的至少一个PCI控制器、PCIe控制器、存储控制器、视频控制器、音频控制器、I/0存储器管理单元(IOMMU)和网络接口控制器。6.权利要求l的系统(IOO),其中,所述多个芯片组(160)包括端点设备,且该端点设备包括以下各项中的至少一个附加适配器或嵌入式组件、存储介质、网络控制器、存储设备、视频设备、以及音频设备。7.—种用于改善可路由架构的性能的方法(500),包括从连接到计算复合体的多个设备中的任何设备接收(510)数据分组;基于存储在多个范围寄存器中的数据来识别(520)用于通过可路由架构(150)的数据分组的可用路径;以及动态地(530)将所述数据分组引导到所述计算复合体中的多个计算节点(110)中的任何节点。8.权利要求7的方法(500),其中,动态地将所述数据分组引导到所述计算复合体中的多个计算节点(110)中的任何节点减少了CPU-CPU或CPU-I/0跳跃的数目。9.权利要求7的方法(500),其中,减少CPU-CPU或CPU-I/O跳跃的数目减少CPU总线上的数据复制。10.权利要求7的方法(500),其中,所述可路由架构(150)包括分离式点到点链路、点到点链路、或分离式点到点分叉HT链路。全文摘要本发明公开了用于改善可路由架构的性能的系统和方法。在示例性实施例中,系统可以包括多个计算节点、可路由架构、以及通过所述可路由架构连接到所述多个计算节点的多个芯片组。所述芯片组具有通过可路由架构动态地将业务从任何设备引导到所述多个计算节点中的任何节点的范围寄存器。文档编号G06F15/16GK101765838SQ200880100415公开日2010年6月30日申请日期2008年5月27日优先权日2007年7月25日发明者B·T·普尔塞尔,M·K·贝内迪特申请人:惠普开发有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1