背景技术
计算网络可以填充有服务器和客户端计算机。服务器一般是向客户端计算机提供比如文件共享和因特网接入这样的常见功能的更强大的计算机。客户端计算机可以是每个具有处理器、硬驱动器、CD ROM驱动器、软驱动器和系统存储器的全功能计算机。
近来,瘦客户端计算设备已经变得为IT组织所采用。与全功能客户端计算机相比,瘦客户端可能仅仅具有相对少量的系统存储器和相对缓慢的处理器。另外,许多瘦客户端缺少硬驱动器、CD ROM驱动器或者软驱动器。瘦客户端可以包含它们自己的微操作系统或者可以连接到网络以引导操作系统或者加载应用程序,比如字处理器或者因特网浏览器。
瘦客户端提供优于全功能客户端计算机的若干优点。由于瘦客户端具有更少的移动部分,所以它们可以比它们的全功能客户端计算机更可靠。例如,许多瘦客户端没有它们自己的硬驱动器。由于硬驱动器是最可能发生故障的计算机部件之一,所以缺乏硬驱动器造成瘦客户端计算机与具有其自己的硬驱动器的全功能客户端计算机相比可靠性显著增加。
瘦客户端的高可靠性使得它们潜在地适于用于联网环境中。网络维护成本是大型网络环境中的一项重要开支,并且公司和其它组织花费大量资源以减少这些成本。瘦客户端通过访问服务器和其它网络资源上存储的数据和应用而不是在本地安装的硬驱动器上存储应用和数据来减少联网成本并且增加可靠性。
在典型的瘦客户端联网环境中,瘦客户端通过网络连接到集中式服务器。瘦客户端计算机经由多用户终端服务器应用程序来与集中式服务器通信。集中式服务器负责为连接到它的瘦客户端提供虚拟化操作系统。此外,集中式服务器可以按照需要向瘦客户端供应比如例如字处理或者因特网浏览这样的应用程序。用户的数据(比如例如文档文件、电子表格和因特网收藏)可以存储于集中式服务器上或者网络存储设备上。因此,当瘦客户端崩溃时,可以容易去除和更换它而无需比如对于传统全功能客户端计算机那样恢复用户的程序和数据。
刀片服务器是网络计算领域中的最新发展。刀片服务器是设计成在相对小的空间中提供高级计算能力的密集、低功率刀片计算机。刀片计算机可以在相对小的封装或者外形规格中运用低功率部件,比如低功率处理器和硬驱动器。在一些应用中,数以百计的刀片计算机可以装配于单个服务器机架中。
具体实施方式
这里描述用于将交换机层级结构(hierarchy)后面的多功能设备呈现为单功能设备的示例系统和方法。在如下刀片服务器的背景中给出这里描述的实施例,在该刀片服务器中,也称为主机节点的计算节点经由点到点通信协议(诸如例如PCI-Express切换设备)耦合到输入/输出(I/O)节点。这里描述的方法可以实施为计算机可读介质上的逻辑指令。当在一个或者多个处理器上执行时,逻辑指令使(一个或者多个)处理器编程为实施所述方法的专用机器。(一个或者多个)处理器在由逻辑指令配置成执行这里记载的方法时构成用于实现所述方法的结构。
图1是根据实施例的刀片服务器系统架构的示意图示。参照图1,示出了刀片服务器系统100。系统100至少包括主机设备102,其中主机节点104经由高速外围部件互连(“PCI-E”)结构耦合到I/O节点108,其中该结构将设备和节点连接到PCI-E交换机110A。在各种实施例中,说明性主机102可以代表多个主机,且说明性I/O节点108代表多个I/O节点。
I/O节点108经由PCI交换机110B耦合到一个或者多个I/O设备106。在一些实施例中,I/O设备106可以包括存储设备、网络接口控制器或者其它类型的I/O设备。I/O设备106可以实施为具有单个PCI端点的单功能PCI设备或者实施为具有多个端点的多功能PCI设备。在图1中所示实施例中,I/O设备包括单端点设备106A、多功能端点设备106B、单端点设备106C和多功能端点设备106D。
系统100由也称为“管理器处理器”112的中间管理器处理器112管理。中间管理器处理器112可以包括专用子系统或者可以是在操作中控制系统其余部分的节点。中间管理器处理器112通过以典型方式应用配置设置来初始化I/O设备106、但是在“中间”访问系统,这由PCI-E交换机110A促进。中间管理器处理器112然后向具体主机节点分配特定I/O功能或者将特定I/O功能绑定到该具体主机节点或者留下给定功能未分配。这样做时,如下文将进一步描述的那样,中间管理器处理器112防止未绑定到具体I/O设备和功能的主机节点在枚举期间“发现”或者“看见”该设备。功能的绑定或者分配因此将用于实现功能的信号导向至适当主机节点。可以基于在逻辑块中编程的值向具体主机分配或者绑定中断和其它主机特有接口信号以便有助于信号的恰当导向。
主机节点104包括将主机节点104耦合到主机102的PCI-E接口114、到主机的虚拟接口模块116、监视跨PCI-E结构的数据分组流的端到端流量控制模块118和共享I/O绑定120(即具体功能),所述共享I/O绑定120存储I/O设备106的每个功能到具体主机的映射。主机节点104也包括用于纠错的端到端循环冗余码122(“CRC”)模块。主机节点104也包括在检测到错误时生成标志的错误处置模块124、用于检错的实时诊断模块126和存储为跨PCI-E结构的业务而分派的信用的流量控制缓冲器保留模块128。主机节点104也包括处理穿过PCI-E结构到达主机节点104的分组的封装器/解封装器130。
I/O节点108包括将I/O节点108耦合到I/O设备106的PCI-E接口132、监视跨PCI-E结构的数据分组流的端到端流量控制模块134和存储I/O设备106的每个功能到具体主机的映射的共享I/O绑定136(即具体功能)。I/O节点108也包括用于纠错的端到端循环冗余码模块138。I/O节点108也包括地址转译映射140,该地址转译映射140存储用于实际配置寄存器中的每个值的修改配置寄存器值,从而对于系统中的每个主机存在修改配置。修改配置可以由简单替换从实际寄存器读取的配置的值组成或者由掩码组成,该掩码用掩码值施加逻辑运算(如“AND”、“OR”或者异或“XOR”)以修改从实际寄存器读取的值。I/O节点108也包括请求者ID转译单元142,该请求者ID转译单元142基于哪个主机请求配置寄存器数据值来提供地址转译140中为该特定主机而识别的修改值。I/O节点108也包括在检测到错误时生成标志的错误处置模块144、用于检错的实时诊断146、存储为跨PCI-E结构的业务而分派的信用的流量控制缓冲器保留模块148。I/O节点108也包括处理穿过PCI-E结构到达I/O节点108的分组的封装器/解封装器模块150。
在一些实施例中,系统100被配置成使得中间管理器处理器112能够将PCI交换机110B后面的I/O设备106呈现为单功能设备,即使这些设备为多功能设备。就这一点而言,中间管理器处理器112耦合到存储器模块160,该存储器模块160又包括枚举模块162和路由表164。参照图2和图3更详细地描述中间管理器处理器112实施的操作。
图2A、2B和3是图示了将PCI-Express交换机后面的设备呈现为单功能设备的方法的一个实施例中的操作的流程图。在一些实施例中,图2A、2B和3中描绘的操作可以实施为在计算机可读存储介质中存储并且在处理器上执行的逻辑指令。
在一些实施例中,图2A中描绘的操作可以由枚举模块162实施。先参照图2A,在操作210引导系统。在操作215,管理器处理器112阻止I/O设备106的主机枚举。如果在操作218不存在交换机层级结构,则控制转到操作240,该操作240将控制引导至图2B中描绘的运行时操作。对照而言,如果在操作218存在交换机层级结构,则控制转到操作220。在操作220,管理器处理器112枚举PCI交换机110B,并且在操作225,管理器处理器112枚举PCI交换机110B后面的PCI端点设备。例如,管理器处理器112单独枚举多功能PCI设备的每个端点。
在操作227,管理器处理器为PCIe交换机110B后面的所有输入/输出(I/O)设备的所有功能创建平坦(flat)地址映射。在操作230,管理器处理器112建立PCIe交换机110B中的地址窗以将事务路由到恰当目的地。在操作235,管理器处理器112向主机分派端点设备资源。控制然后转到操作240,该操作240将控制引导至图2B中描绘的运行时操作。
图2B是图示了在转换配置循环的方法的一个实施例中的操作的流程图。参照图2B,如果在操作270存在来自主机的配置循环,则控制转到操作272。在操作272,输入/输出(I/O)节点将配置循环转换成适当类型(即类型0或者类型1)。另外,将设备ID从主机域值修改成I/O域值。控制然后转到操作274。
如果在操作274存在来自主机的存储器循环,则控制转到操作276并且I/O节点将存储器地址从主机域值修改成I/O节点域值。控制然后转到操作278。
如果在操作278存在来自输入/输出(I/O)设备的断言(assert)中断(INTx),则控制转到操作280,其中确定端点设备的哪个功能生成中断以便确定适当主机。例如,请求者ID可能不存在或者可能指示PCIe交换机110B。中断(INTx)级别(A、B、C、D)可能已经由PCIe交换机110B映射到与功能本身指示的级别不同的级别。因此,将中断转换成INTA并且将其引导至恰当主机。控制然后转到操作282。
如果在操作282存在来自输入/输出(I/O)设备的解除断言(de-assert)中断(INTx),则控制转到操作284并且PCIe交换机110B对中断进行“线-或(wire-or)”操作以确定哪些主机需要接收解除断言。控制然后转到操作286。
如果在操作286存在其中请求者ID对应于PCIe交换机110B的任何其它事务层分组,则控制转到操作284并且管理器处理器处置TLP使得PCIe交换机对于主机保持不可见。控制然后转到操作290,并且管理器处理器轮询I/O设备中的断言INTx和解除断言INTx条件。在I/O设备中和在PCI交换机中的线或操作可能使得遗漏(miss)这些条件中的一些条件。控制然后转回到图2A的操作240,并且向(一个或者多个)端点设备发送PCIe事务。
当图2A和2B的操作完成时,枚举模块162已经构造了路由表164,该路由表提供主机102与I/O设备106的端点之间的映射。随后,中间管理器处理器112实施操作以管理来自I/O设备106的端点的中断消息。参照图3,在操作310,两个端点(A和B)发出中断(IntX)消息。在操作315,PCI交换机110B组合IntX消息并且向管理处理器112转发组合的消息。在操作320,管理处理器112接收组合的IntX消息,并且在操作325,管理处理器112读取消息中的端点设备以确定IntX消息的来源。
如果在操作330,特定端点具有未决中断,即如果在来自PCI交换机110B的IntX消息中识别该端点,则控制转到操作335并且管理处理器112生成到(一个或者多个)恰当主机(即绑定到端点设备的(一个或者多个)主机)的IntX消息。因此,操作330-335限定如下循环,管理器处理器112按照该循环向主机通知来自PCI交换机110B后面的端点设备的中断。
因此,图2和3的操作允许管理器处理器112将PCI交换机110B后面的单功能和多功能设备向主机呈现为单功能端点。图4是如从主机的角度来看的根据实施例的刀片服务器架构的示意图示。例如,从主机A 402A的角度来看,它表现为耦合到主机节点404A以及端点406A、406B、406C和406D,其中每一个可以代表多功能设备的一个功能或者离散端点设备。类似地,从主机B 402B的角度来看,它表现为耦合到主机节点404B以及端点406E、406F、406G和406H,其中每一个可以代表多功能设备的一个功能或者离散端点设备。
如这里引用的术语“逻辑指令”涉及可以被一个或者多个机器理解以用于执行一个或者多个逻辑操作的表达式。例如,逻辑指令可以包括可由处理器编译器解释以用于对一个或者多个数据对象执行一个或者多个操作的指令。然而,这仅为机器可读指令的例子并且实施例就这一点而言不受限制。
如这里引用的术语“计算机可读介质”涉及能够维持可由一个或者多个机器感知的表达式的介质。例如,计算机可读介质可以包括用于存储计算机可读指令或者数据的一个或者多个存储设备。这样的存储设备可以包括存储介质,诸如例如光学、磁或者半导体存储介质。然而,这仅为计算机可读介质的例子并且实施例就这一点而言不受限制。
如这里引用的术语“逻辑”涉及用于执行一个或者多个逻辑操作的结构。例如,逻辑可以包括基于一个或者多个输入信号来提供一个或者多个输出信号的电路。这样的电路可以包括接收数字输入并且提供数字输出的有线状态机或者响应于一个或者多个模拟输入信号来提供一个或者多个模拟输出信号的电路。可以在专用集成电路(ASIC)或者现场可编程门阵列(FPGA)中提供这样的电路。逻辑也可以包括存储于存储器中的机器可读指令,这些指令与执行这样的机器可读指令的处理电路相结合。然而,这些仅为可以提供逻辑的结构的例子并且实施例就这一点而言不受限制。
这里描述的一些方法可以实施为计算机可读介质上的逻辑指令。当在处理器上执行时,逻辑指令使处理器编程为实施所述方法的专用机器。处理器在由逻辑指令配置成执行这里所述方法时构成用于实现所述方法的结构。可选地,这里描述的方法可以精简成例如现场可编程门阵列(FPGA)、专用集成电路(ASIC)等上的逻辑。
在说明书和权利要求书中,可以使用术语耦合和连接及其派生词。在特定实施例中,连接可以用来指示两个或者更多元件相互进行直接的物理或者电接触。耦合可以意味着两个或者更多元件直接物理或者电接触。然而,耦合也可以意味着两个或者更多元件可以不相互直接接触、但是仍然可以相互协作或者交互。
在说明书中引用“一个实施例”或“实施例”意味着结合该实施例描述的特定特征、结构或者特性包含于至少一种实施方式中。在说明书中的各处出现短语“在一个实施例中”可以或者可以不都指代相同实施例。
虽然已经用结构特征和/或方法动作特有的语言描述了实施例,但是将理解要求保护的主题可以不限于所述具体特征或者动作。相反,公开具体特征和动作作为实施要求保护的主题的样本形式。