硬件实施通道适配器资源的逻辑分区的方法和系统的制作方法

文档序号:7595483阅读:168来源:国知局
专利名称:硬件实施通道适配器资源的逻辑分区的方法和系统的制作方法
技术领域
本发明涉及改进的数据处理系统。更具体地,本发明提供了用于使用硬件实施单通道适配器资源的逻辑分区的方法和系统。
背景技术
在例如InfiniBand(IB)网络的系统区域网络(SAN)中,硬件提供可以被用于一般计算节点中间以及单个节点内的输入/输出设备(I/O)和进程间通信(IPC)的消息传送机制。通过将发送/接收消息置入SAN主机通道适配器(HCA)上的发送/接收工作队列中,设备上执行的进程访问SAN消息传送硬件。这些进程也被称作″客户(consumer)″。
发送/接收工作队列(WQ)作为队列对(QP)被分配给客户。可以通过5个不同的传送类型发送消息可靠连接(RC),可靠数据报(RD),不可靠连接(UC),不可靠数据报(UD)和原始数据报(RawD)。客户通过SAN发送和接收工作完成(WC)队列从完成队列(CQ)得到这些消息的结果。源通道适配器负责将出站消息分段并且将它们发送到目的地。目的通道适配器负责重新装配入站消息,并且将它们放置在目的地的客户所指定的存储器空间中。
在SAN结构的节点中提供2个通道适配器类型,即主机通道适配器(HCA)和目标通道适配器(TCA)。通用计算节点使用主机通道适配器访问SAN结构。客户使用SAN动词(verbs)访问主机通道适配器功能。解释动词和直接访问通道适配器的软件被称作通道接口(CI)。
目标通道适配器(TCA)被作为从主机通道适配器发送的消息的主体(subject)的节点使用。目标通道适配器在为目标节点提供针对SAN结构的接入点方面与主机通道适配器具有类似的功能。
于是,通过上述SAN体系结构,以太网设备驱动程序可以通过将发送/接收消息投送到主机通道适配器(HCA)来与以太网适配器通信,并且通过HCA的发送和接收工作队列得到这些消息的结果。以太网适配器包含目标通道适配器,目标通道适配器是连接到SAN的部件。于是,为连接到例如网际协议(IP)和以太网的局域网(LAN),需要以太网适配器和将以太网适配器连接到基于IP的LAN的交换机或路由器。
经常,对系统内的各个部件进行逻辑分区以支持多个操作系统环境会是有好处的。这种逻辑分区允许每个操作系统和该操作系统环境内工作的应用程序将系统的部件视为专用于该操作系统环境,即使实际上部件被多个操作系统环境所共享。这种逻辑分区允许系统支持多个不同环境,于是增加了系统的通用性,并且通过部件共享降低了维护不同环境的成本。
InfiniBand体系结构定义了通道适配器部件内的若干类型的资源。例如主机或目标通道适配器的通道适配器包含多个资源。这些资源包含队列对,完成队列,事件队列,存储器窗口和存储器区。在现有技术中,包含其全部内部资源的整个通道适配器部件可以被分配给单个分区。然而当通道适配器被分配给分区时,该通道适配器的全部内部资源也被分配给该单个分区。于是,当特定通道适配器被分配给一个分区时,通道适配器内包含的全部队列对,完成队列,事件队列,存储器窗口和存储器区也全部被分配给相同分区。
在现有技术中,由于整个通道适配器可以被分配给一个操作系统并且由其控制,该操作系统对硬件具有完全和直接的控制。于是,操作系统处理其全部进程的全部I/O。操作系统确保其不同任务不会彼此干扰。因此,操作系统可以直接访问通道适配器的资源以设置和/或改变指针或寄存器值。
因此,期望提供一种用于对单通道适配器的资源实施逻辑分区,使得单通道适配器内的各个资源可以被分配给不同分区的方法和系统。

发明内容
公开了一种对用于系统区域网络的单通道适配器的资源进行逻辑分区的方法和系统。单通道适配器被不同分区共享。资源中的第一个资源被分配给第一分区。资源中的第二个资源被分配给不同的第二分区。通过只允许第一分区访问第一资源,并且只允许第二分区访问第二资源,实施资源的分区。于是,通道适配器的各部分被分配给一个分区,而相同通道适配器的其它部分被分配给其它分区。
在一个最优实施例中,系统区域网络是InfiniBand网络。本发明为通道适配器提供逻辑划分支持,以允许多个操作系统共享单通道适配器,通常为主机通道适配器(HCA)的资源。
本发明保证每个操作系统不知道其正与其它操作系统共享HCA硬件资源,并且进一步保证各个操作系统不访问与其它操作系统相关的HCA硬件资源。
通过本发明,使用每个资源内包含的硬件寄存器对单通道适配器的资源进行逻辑分区。每个资源在其内部包含其自身的硬件寄存器。接着在资源的硬件寄存器中存储分区标识符。分区标识符(下面也称为 LPAR ID)标识资源已经分配到的分区。
本发明提供受信代码,在这里被称作管理程序(hypervisor),其控制软件对硬件的所有访问。通过管理程序过滤所有分区请求。每当任何软件尝试访问硬件时,管理程序得到控制。
只有受信管理程序软件可以访问其中存储分区标识符的硬件寄存器。于是,只有管理程序可以设置或改变分区标识符。当软件和资源均被分配给相同分区时,例如应用程序和操作系统的软件可以直接访问资源内的其它硬件寄存器。通过这种方式,软件可以通过设置资源内的指针将分配给相同分区的资源彼此关联。
本发明公开了通过检查每个资源的分区标识符来确定资源是否被分配给相同分区的方案。如果存储在资源中的分区标识符匹配,则资源被分配给相同分区。
本领域普通技术人员通过以下对优选实施例的详细描述可理解本发明的这些和其它特征及优点。


在所附权利要求书中提出了被认为是本发明的特征的新颖特性。然而参照下列结合附图对一个示例性实施例进行的详细描述可以更好地理解本发明自身,最优使用模式,其它目标和优点,其中图1是基于本发明优选实施例的分布式计算系统的图例;图2是基于本发明优选实施例的主机处理器节点的功能模块图;图3A是基于本发明优选实施例的主机通道适配器的图例;图3B是基于本发明优选实施例的交换机的图例;图3C是基于本发明优选实施例的路由器的图例;图4的图例根据本发明的优选实施例图解了工作请求的处理;图5的图例根据其中使用可靠连接服务的本发明优选实施例图解了分布式计算系统的一部分;图6的图例根据其中使用可靠数据报服务的本发明优选实施例图解了分布式计算系统的一部分;图7根据本发明的优选实施例图解了数据分组;图8的图例图解了基于本发明优选实施例的分布式计算系统的一部分;图9的图例图解了基于本发明的分布式网络系统中使用的网络寻址;图10的图例根据其中示出SAN结构子网的结构的本发明优选实施例图解了分布式计算系统的一部分;图11是在本发明的一个最优实施例中使用的分层通信体系结构的图例;图11A根据本发明的优选实施例描述了逻辑分区环境中的主机通道适配器;图12是物理主机通道适配器的示例图,该主机通道适配器包含用于在基于本发明的通道适配器内的每个资源中存储逻辑分区标识符的逻辑分区寄存器;图13的高层流程解了基于本发明的管理程序,该管理程序使用资源中的分区标识符寄存器向特定分区分配通道适配器的资源;而图14的高层流程图根据本发明图解了对其资源实施分区的通道适配器。
具体实施例方式
逻辑分区(LPAR)环境正普遍用于所有规模的服务器以便允许单个硬件平台同时服务于不止一个操作系统(OS)。这些操作系统可以是相同OS的多个复本,相同OS的不同版本的复本,或完全不同的操作系统。当在一个系统上使用InfiniBand(IB)主机通道适配器(HCA)时,非常期望能够提供一种允许此单个HCA被多个不同分区使用的虚拟化环境。
分区环境的关键是能够隔离一个分区中的软件问题以免影响任何其他分区中的软件的操作。已经使用的一个技术是将所有硬件的控制指定给单个高度受信的固件集合(称作管理程序)。于是,通过管理程序过滤所有分区请求。然而这个技术影响了整个系统的性能,因为每当任何软件尝试访问硬件时,管理程序必须进行控制。
在任一时刻,单通道适配器内的各种硬件资源可以彼此逻辑相关,以便构造I/O操作的逻辑上下文。为了使一个资源与另一个资源逻辑关联,指向相关资源的指针被存储在资源的寄存器中。于是,一个指针被存储在第一资源内,其指向与这个第一资源相关的第二资源。
本发明在每个资源内增加了在这里被称作LPAR ID寄存器的新硬件寄存器,其中存储标识资源被分配或指派到的特定分区。通过这种方式,单通道适配器内的资源可以被分配给不同分区。例如,通过在第一资源的LPAR ID寄存器中存储标识第一分区的分区标识符,一个资源可以被分配给第一分区。通过在第二资源的LPAR ID寄存器中存储标识第二分区的分区标识符,相同通道适配器内的第二资源内可以被分配给第二分区。
只有管理程序可以设置特定资源的LPAR ID寄存器中存储的值。当管理程序选择和配置资源时,通常设置这个值。分区标识符允许硬件对通道适配器内的各种资源实施分区。单通道适配器的资源可以被分配给不同分区。通过这种方式,硬件可以保证分配给一个分区的操作系统和资源不访问分配给不同分区的资源。实施这种分区不需要管理程序。通道适配器本身通过比较资源中存储的分区标识符来实施分区。
只有管理程序可以访问LPAR ID寄存器。禁止操作系统访问这些寄存器。一旦通过设置LPAR ID寄存器中的分区标识符将资源分配给特定分区,操作系统会访问资源的其余部分,例如资源内被用于使一个资源与另一个资源相关的指针。
当资源被分配给LPAR(和OS)时,管理程序设置这些指针。一旦这些指针被设置,资源可以使用这些指针自由地、与操作系统或管理程序独立地访问彼此。通过每个资源中存储的分区标识符实施资源的逻辑分区,同时这些资源正访问彼此。于是,当一个资源尝试访问另一个资源时,如果资源被分配给相同分区,则允许访问,而如果资源被分配给不同分区,则禁止访问。
于是,每个分区具有使用每个资源的LPAR ID寄存器中存储的分区标识符标识的一组专用资源。当访问每个资源时,通过允许具有在其LPAR ID寄存器中存储的特定分区标识符的资源只访问也具有在其LPAR ID寄存器中存储的相同特定分区标识符的那些其它资源,使用这些分区标识符实施分区。
下面根据InfiniBand体系结构描述本发明的优选实施例,InfiniBand体系结构是其中可以使用本发明的一个可能系统区域网络。因此,首先针对图1-11A提供对InfiniBand网络的说明。
参照附图并且具体参照图1,其中根据本发明的优选实施例图解了分布式计算系统的图例。图1所示的分布式计算系统具有系统区域网络(SAN)100的形式,并且仅仅为了图解的目的而提供。下面描述的本发明实施例可以在下述通道适配器中的任何一或多个中实现。
实现本发明、包含本发明的计算机系统可以包括具有一个处理器和少数输入/输出(I/O)适配器的小型服务器,直至具有数百或数千处理器和数千I/O适配器的全并行超级计算机系统。此外,可以在通过因特网或内部网连接的远程计算机系统的基础设施中实现本发明。
SAN 100是分布式计算系统内的高带宽低时延网络互连节点。节点是连接到网络的一或多个链路并且形成网络内消息的起源和/或目的地的任何部件。在描述的例子中,SAN 100包含具有主机处理器节点102,主机处理器节点104,冗余阵列磁盘(RAID)子系统节点106和I/O机架节点108的形式的节点。图1中的节点仅用于图解目的,因为SAN 100可以连接任何数量和任何类型的独立处理器节点,I/O适配器节点和I/O设备节点。任何一个节点均可以充当端节点,这里将端节点定义为SAN 100中发出或最终用到消息或帧的设备。
在本发明一个实施例中,提供分布式计算系统中的差错处理机制,其中允许在例如SAN 100的分布式计算系统中的端节点之间进行可靠连接或可靠数据报通信。
如这里所使用的,消息是应用程序定义的数据交换单元,它是协作进程之间的基本通信单元。分组是通过网络协议头和/或尾封装的一个数据单元。头通常提供用于引导帧通过SAN 100的控制和路由信息。尾通常包含用于保证不传送具有受破坏内容的分组的控制和循环冗余校验(CRC)数据。
SAN 100包含支持分布式计算系统内的I/O和处理器间通信(IPC)的通信和管理基础设施。图1示出的SAN 100包含交换通信结构116,其允许许多设备在安全远程管理环境中并行传送高带宽和低时延的数据。端节点可以通过多个端口通信,并且可以使用通过SAN结构的多个路径。通过图1示出的SAN的多个端口和路径可以被用于容错和带宽增加的数据传送。
图1中的SAN 100包含交换机112,交换机114,交换机146和路由器117。交换机是这样的设备,其将多个链路连接在一起,并且允许使用较小头的目的本地标识符(DLID)字段将分组从子网内的一个链路路由到另一个链路。路由器是这样的设备,其将多个子网连接在一起,并且能够使用较大头的目的全局唯一标识符(DGUID)将帧从第一子网中的一个链路路由到第二子网中的另一个链路。
在一个实施例中,链路是任何2个网络结构单元,例如端节点,交换机或路由器之间的全双工通道。适当链路的例子包含但不限于铜电缆,光缆和底板和印制电路板上的印制电路铜轨线。
对于可靠服务类型,例如主处理器端节点和I/O适配器端节点的端节点产生请求分组并且返回确认分组。交换机和路由器从源向目的地传递分组。除了在网络中每个级段处更新的可变CRC尾字段之外,交换机未加修改地传递分组。当路由分组时,路由器更新可变CRC尾字段,并且修改头中的其它字段。
在图1所示的SAN 100中,主机处理器节点102,主机处理器节点104和I/O机架108包含接口到SAN 100的至少一个通道适配器(CA)。在一个实施例中,每个通道适配器是这样的端点,其足够充分地实现通道适配器接口以产生或汇聚(source or sink)SAN结构100上发送的分组的通道适配器接口。主机处理器节点102包含具有主机通道适配器118和主机通道适配器120的形式的通道适配器。主机处理器节点104包含主机通道适配器122和主机通道适配器124。主机处理器节点102也包含通过总线系统134互连的中央处理单元126-130和存储器132。类似地,主机处理器节点104包含通过总线系统144互连的中央处理单元136-140和存储器142。
主机通道适配器118和120提供到交换机112的连接,而主机通道适配器122和124提供到交换机112和114的连接。
通过硬件实现主机通道适配器。主机通道适配器硬件承担了大量中央处理单元和I/O适配器通信开销。这个主机通道适配器的硬件实现也允许在交换网络上进行多个并行通信,而没有与通信协议相关的传统开销。
在一个实施例中,图1中的主机通道适配器和SAN 100为分布式计算系统的I/O和处理器间通信(IPC)客户提供不涉及操作系统内核进程的零处理器复制(zero processor-copy)数据传送,并且使用硬件提供可靠容错的通信。如图1所示,路由器116被连接到针对其它主机或其它路由器的广域网(WAN)和/或局域网(LAN)连接。
图1中的I/O机架108包含I/O交换机146和多个I/O模块148-156。在这些例子中,I/O模块具有适配器卡的形式。图1中图解的适配器卡例子包含I/O模块148的SCSI适配器卡;针对I/O模块152的光纤通道集线器和光纤通道仲裁环路(FC-AL)设备的适配器卡;I/O模块150的以太网适配器卡;I/O模块154的图形适配器卡;和I/O模块156的视频适配器卡。可以实现任何已知类型的适配器卡。I/O适配器也包含I/O适配器底板中将适配器卡连接到SAN结构的交换机。这些模块包含目标通道适配器158-166。
在这个例子中,图1中的RAID子系统节点106包含处理器168,存储器170,目标通道适配器(TCA)172和多个冗余和/或分条存储磁盘单元174。目标通道适配器172可以是全功能的主机通道适配器。
SAN 100处理I/O和处理器间通信的数据通信。SAN 100支持I/O所需的高带宽和可伸缩性,并且支持处理器间通信所需的极低时延和低CPU开销。用户客户端可以绕过操作系统内核进程并直接访问网络通信硬件,例如主机通道适配器,这允许实施高效的消息传递协议。SAN 100适于当前计算模型,并且是新式I/O和计算机集群通信的构件。此外,图1中的SAN 100允许I/O适配器节点在其自身中间进行通信,或者与分布式计算系统中的任何或全部处理器节点进行通信。通过连接到SAN 100的I/O适配器,所得到的I/O适配器节点与SAN 100中的任何主机处理器节点具有基本相同的通信能力。
在一个实施例中,图1示出的SAN 100支持通道语义和存储器语义。通道语义有时被称作发送/接收或推送(push)通信操作。通道语义是其中源设备推送数据并且目的设备确定数据的最终目的地的传统I/O通道中使用的通信类型。在通道语义中,从源进程发送的分组指定目的进程的通信端口,但是不指定会将分组写入目的进程存储器空间中的哪个位置。于是,在通道语义中,目的进程预分配用于放置发送的数据的位置。
在存储器语义中,源进程直接对远程节点目的进程的虚拟地址空间进行读取或写入。远程目的进程只需要传送数据缓冲区的位置,而不需要涉及任何数据的传送。于是,在存储器语义中,源进程发送包含目的进程的目的缓冲存储器地址的数据分组。在存储器语义中,目的进程预先批准源进程访问其存储器。
通道语义和存储器语义通常是I/O和处理器间通信所需的。典型的I/O操作使用通道和存储器语义的组合。在图1示出的分布式计算系统I/O操作的图解例子中,例如主机处理器节点102的主机处理器节点通过使用通道语义启动I/O操作,以向例如RAID子系统目标通道适配器(TCA)172的磁盘I/O适配器发送磁盘写命令。磁盘I/O适配器检查命令,并且使用存储器语义直接从主机处理器节点的存储器空间读取数据缓冲区。在数据缓冲区被读取之后,磁盘I/O适配器使用通道语义将I/O完成消息推送回到主机处理器节点。
在一个示例性实施例中,图1示出的分布式计算系统执行操作,所述操作使用虚拟地址和虚拟存储器保护机构保证对所有存储器的正确和适当的访问。这种分布式计算系统中运行的应用程序不需要使用物理地址进行任何操作。
下面转到图2,其中根据本发明的优选实施例描述了主机处理器节点的功能模块图。主机处理器节点200是主机处理器节点,例如图1的主机处理器节点102的例子。
在这个例子中,图2示出的主机处理器节点200包含一组客户202-208,这些客户是主机处理器节点200上执行的进程。主机处理器节点200也包含通道适配器210和通道适配器212。通道适配器210包含端口214和216,同时通道适配器212包含端口218和220。每个端口连接到链路。端口可以连接到一个SAN子网或多个SAN子网,例如图1中的SAN 100。在这些例子中,通道适配器具有主机通道适配器的形式。
客户202-208通过动词接口222和消息和数据服务224向SAN传送消息。动词接口基本上是对主机通道适配器的功能的抽象描述。
操作系统可以通过其编程接口开放某些或全部动词功能。基本上,这个接口定义了主机的行为。另外,主机处理器节点200包含消息和数据服务224,消息和数据服务224是比动词层更高层的接口,并且被用来处理通过通道适配器210和通道适配器212接收的消息和数据。消息和数据服务224为客户202-208提供接口以处理消息和其它数据。
现在参照图3A,其中根据本发明的优选实施例描述了主机通道适配器的图例。图3A示出的主机通道适配器300A包含一组队列对(QP)302A-310A,这些队列对被用来向主机通道适配器端口312A-316A传送消息。
通过虚拟通道(virtual lane)(VL)318A-334A将数据缓冲到主机通道适配器端口312A-316A,其中每个VL具有其自身的流控。子网管理人员用每个物理端口的本地地址,即端口的LID配置通道适配器。
子网管理人员代理(SMA)336A是与子网管理人员通信以配置通道适配器的实体。存储器转换和保护(MTP)338A是将虚拟地址转换到物理地址并且验证访问权限的机构。直接存储器访问(DMA)340A提供使用存储器340A针对队列对302A-310A的直接存储器访问操作。
例如图3A示出的主机通道适配器300A的单通道适配器可以支持数千队列对。相比之下,I/O适配器中的目标通道适配器通常支持少得多的队列对。每个队列对包括发送工作队列(SWQ)和接收工作队列。发送工作队列被用来发送通道和存储器语义消息。接收工作队列接收通道和语义消息。客户调用特定于操作系统的编程接口(这里被称作动词)以将工作请求(WR)放入工作队列。
图3B描述了基于本发明优选实施例的交换机300E。交换机300E包含通过例如虚拟通道306B的虚拟通道与若干端口304E通信的分组转发器302B。通常,例如交换机300B的交换机可以将分组从一个端口路由到相同交换机上的任何其他端口。
类似地,附图3C描述了根据本发明优选实施例的路由器300C。路由器300C包含通过例如虚拟通道306C的虚拟通道与若干端口304C通信的分组转发器302C。类似于交换机300B,路由器300C通常能够将分组从一个端口路由到相同路由器上的任何其他端口。
通道适配器,交换机和路由器使用单个物理链路内的多个虚拟通道。如图3A,3B和3C所示,物理端口将端节点,交换机和路由器连接到子网。注入SAN结构的分组沿着一或多个虚拟通道从分组的源到达分组的目的地。所选择的虚拟通道映射自(mapped from)与分组相关的服务等级。在任一时刻,只有一个虚拟通道在指定物理链路上进行。虚拟通道提供对一个虚拟通道应用链路层流控但不影响其它虚拟通道的技术。当一个虚拟通道上的分组因冲突,服务质量(QoS)或其它问题而阻塞时,允许不同虚拟通道上的分组继续进行。
因许多原因而使用虚拟通道,其中一些原因如下所述虚拟通道提供QoS。在一个示例性实施例中,保留某些虚拟通道用于高优先级或同步业务传输以提供QoS。
虚拟通道提供死锁避免。虚拟通道允许包含环路的拓扑在所有物理链路上发送分组,并且仍然保证环路不会导致可能产生死锁的背压依赖(back pressure dependency)。
虚拟通道减轻队头(head-of-1ine)阻塞。当交换机没有更多信用(credits)可用于使用指定虚拟通道的分组时,允许使用具有足够信用的不同虚拟通道的分组继续进行前进。
现在参照图4,其中根据本发明的优选实施例描述了图解工作请求的处理的图例。在图4中,提供接收工作队列400,发送工作队列402和完成队列404以用于处理来自和针对客户406的请求。这些来自客户的请求最终被发送到硬件408。在这个例子中,客户406产生工作请求410和412并且接收工作完成414。如图4所示,放入工作队列的工作请求被称作工作队列单元(WQ)。
发送工作队列402包含工作队列单元(WQ)422-428,其描述将在SAN结构上发送的数据。接收工作队列400包含工作队列单元(WQ)416-420,其描述来自SAN结构的传入通道语义数据将放置在哪里。由主机通道适配器中的硬件408处理工作队列单元。
动词也提供用于从完成队列404得到完成的工作的机构。如图4所示,完成队列404包含完成队列单元(CQ)430-436。完成队列单元包含关于先前完成的工作队列单元的信息。完成队列404被用来产生针对多个队列对的单点完成通知。完成队列单元是完成队列上的数据结构。这个单元描述完成的工作队列单元。完成队列单元包含足够信息以确定完成的队列对和特定工作队列单元。完成队列上下文是包含管理各个完成队列所需的指针,长度和其它信息的信息块。
图4示出的发送工作队列402支持的工作请求的例子如下所述。发送工作请求是将一组本地数据分段推送到远程节点的接收工作队列单元所引用的数据分段的通道语义操作。例如,工作队列单元428包含针对数据分段4438,数据分段5440和数据分段6442的引用。每个发送工作请求的数据分段包含实际连续的存储器区。用于引用本地数据分段的虚拟地址处于产生本地队列对的进程的地址上下文中。
远程直接存储器访问(RDMA)读取工作请求提供存储器语义操作以读取远程节点上实际连续的存储器空间。存储器空间可以是存储器区的一部分,或者是存储器窗口的一部分。存储器区引用先前登记的,由虚拟地址和长度定义的一组实际连续存储器地址。存储器窗口引用已经绑定到先前登记的区域的一组实际连续存储器地址。
RDMA读取工作请求读取远程端节点上的实际连续存储器空间,并且向实际连续本地存储器空间写入数据。类似于发送工作请求,被RDMA读取工作队列单元用于引用本地数据分段的虚拟地址处于产生本地队列对的进程的地址上下文中。例如,接收工作队列400中的工作队列单元416引用数据分段1444,数据分段2446和数据分段3448。远程虚拟地址处于拥有RDMA读取工作队列单元所针对的远程队列对的进程的地址上下文中。
RDMA写入工作队列单元提供存储器语义操作以对远程节点上的实际连续存储器空间进行写入。RDMA写入工作队列单元包含本地实际连续存储器空间的分散列表(scatter list),和本地存储器空间被写入其中的远程存储器空间的虚拟地址。
RDMA FetchOp工作队列单元提供存储器语义操作以对远程字执行原子操作。RDMA FetchOp工作队列单元是组合的RDMA读取,修改和RDMA写操作。RDMA FetchOp工作队列单元可以支持若干读取-修改-写操作,例如比较并且在相等时交换。
绑定(释放(unbind))远程访问键(key)(R_Key)工作队列单元向主机通道适配器硬件提供命令,以便通过使存储器窗口与存储器区相关(解除相关)来修改(销毁)存储器窗口。R_Key是每次RDMA访问的一部分,并且被用来验证远程进程已经允许访问缓冲区。
在一个实施例中,图4示出的接收工作队列400只支持一种工作队列单元,其被称作接收工作队列单元。接收工作队列单元提供通道语义操作,其描述传入发送消息被写入到的本地存储器空间。接收工作队列单元包含描述若干实际连续存储器空间的分散列表。传入发送消息被写入到这些存储器空间。虚拟地址处于产生本地队列对的进程的地址上下文中。
对于处理器间通信,用户模式软件进程通过队列对直接从缓冲区驻留于存储器的位置传送数据。在一个实施例中,通过队列对的传送绕过操作系统,并且消耗较少的主机指令周期。队列对允许进行无操作系统内核参与的零处理器复制数据传送。零处理器复制数据传送提供对高带宽和低时延通信的高效支持。
当产生队列对时,队列对被设置成提供选定类型的传送服务。在一个实施例中,实现本发明的分布式计算系统支持4个类型的传送服务可靠,不可靠,可靠数据报和不可靠数据报连接服务。
可靠和不可靠连接服务使本地队列对与一个且唯一一个远程队列对相关。连接服务需要进程针对其将通过SAN结构与之通信的每个进程产生一个队列对。于是,如果N个主机处理器节点中的每个包含P个进程,并且每个节点上的所有P个进程希望与所有其它节点上的所有进程通信,则每个主机处理器节点需要P2x(N-1)个队列对。此外,一个进程可以将一个队列对连接到相同主机通道适配器上的另一个队列对。
图5图解了使用可靠连接服务在分布式进程之间进行通信的分布式计算系统的一部分。图5中的分布式计算系统500包含主机处理器节点1,主机处理器节点2和主机处理器节点3。主机处理器节点1包含进程A 510。主机处理器节点2包含进程E 540。并且主机处理器节点2包含进程C 520和进程D 530。
主机处理器节点1包含队列对4,6和7,其中每个队列对具有发送工作队列和接收工作队列。主机处理器节点2具有队列对9,主机处理器节点3具有队列对2和5。分布式计算系统500的可靠连接服务使本地队列对与一个且唯一一个远程队列对相关。于是,队列对4被用来与队列对2通信;队列对7被用来与队列对5通信;而队列对6被用来与队列对9通信。
放入可靠连接服务中一个队列对的WQE使数据被写入由连接队列对的接收WQE所引用的接收存储器空间中。RDMA操作对连接队列对的地址空间进行操作。
在本发明一个实施例中,因为硬件维护序列号并且确认所有分组传送,使得可靠连接服务可靠。硬件和SAN驱动软件的组合重试任何失败的通信。队列对的进程客户即使在存在位差错,接收速率过低和网络阻塞的情况下仍然获得可靠通信。如果在SAN结构中存在可选路径,则即使在存在结构的交换机,链路或通道适配器端口的故障时,仍然可以保持可靠通信。
另外,确认可以被用来在SAN结构上可靠传送数据。确认可以是或不是进程级的确认,即验证接收进程已经消耗数据的确认。可选地,确认可以是只指示数据已经到达其目的地的确认。
可靠数据报服务使本地端到端(EE)上下文与一个且唯一一个远程端到端上下文相关。可靠数据报服务允许一个队列对的客户进程与任何其他远程节点上的任何其他队列对通信。在接收工作队列上,可靠数据报服务允许来自任何其他远程节点上的任何发送工作队列的传入消息。
因为可靠数据报服务是无连接的,可靠数据报服务大大改进了可伸缩性。因此,与通过可靠连接传送服务相比,具有固定数量队列对的端节点通过可靠数据报服务可以与更多的进程和端节点通信。例如,如果N个主机处理器节点中的每个包含P个进程,并且每个节点上的所有P个进程希望与所有其它节点上的所有进程通信,则可靠连接服务在每个节点上需要P2x(N-1)个队列对。通过比较,无连接可靠数据报服务在每个节点上只需要P个队列对+(N-1)个EE上下文以完成相同的通信。
图6图解了使用可靠数据报服务在分布式进程之间进行通信的分布式计算系统的一部分。图6中的分布式计算系统600包含主机处理器节点1,主机处理器节点2和主机处理器节点3。主机处理器节点1包含具有队列对4的进程A 610。主机处理器节点2具有进程C620(具有队列对24)和进程D 630(具有队列对25)。主机处理器节点3具有进程E 640(具有队列对14)。
在分布式计算系统600中实现的可靠数据报服务中,队列对被连接在被称作无连接传送服务的服务中。例如,可靠数据报服务将队列对4连接到队列对24,25和14。具体地,可靠数据报服务允许队列对4的发送工作队列可靠地向队列对24,25和14中的接收工作队列传送消息。类似地,队列对24,25和14的发送队列可以可靠地向队列对4中的接收工作队列传送消息。
在本发明一个实施例中,可靠数据报服务使用与每个消息帧相关的序列号和确认以保证与可靠连接服务相同的可靠度。端到端(EE)上下文维护端到端特定状态以跟踪序列号,确认和超时值。EE上下文中保存的端到端状态由一对端节点之间的所有无连接队列对通信所共享。每个端节点对于其希望在可靠数据报服务中与之通信的每个端节点需要至少一个EE上下文(例如,指定端节点需要至少N个EE上下文以便能够与N个其它端节点进行可靠数据报服务)。
不可靠数据报服务是无连接的。管理应用程序使用不可靠数据报服务发现和集成新交换机,路由器和端节点到指定分布式计算系统中。不可靠数据报服务不提供可靠连接服务和可靠数据报服务的可靠性保证。因此,不可靠数据报服务在操作中在每个端节点上维护较少的状态信息。
下面转到图7,图7根据本发明的优选实施例图解了数据分组。数据分组是通过SAN结构路由的信息的单位。数据分组是端节点到端节点构造,于是由端节点产生和消耗。对于去往通道适配器(或者主机或目标)的分组,SAN结构中的交换机和路由器既不产生也不消耗数据分组。相反,对于去往通道适配器的数据分组,交换机和路由器简单地移动请求分组或确认分组以更接近最终目的地,其中在处理中修改可变链路分组头字段。当分组穿过子网边界时,路由器也修改分组的网络头。在穿过子网时,单个分组保持在单个服务等级上。
消息数据700包含数据分段1 702,数据分段2 704,和数据分段3706,这些数据分段类似于图4图解的数据分段。在这个例子中,这些数据分段形成分组708,该分组被放入数据分组712内的分组有效负载710中。另外,数据分组712包含CRC 714,其被用于错误检查。另外,路由头716和传送718被提供在数据分组712中。路由头716被用来标识数据分组712的源和目标端口。在这个例子中,传送头718指定数据分组712的目的队列对。另外,传送头718也提供例如数据分组712的操作码,分组序列号和分区的信息。
操作码标识分组是否是消息的第一个,最后一个,中间或唯一分组。操作码也指定操作是否是发送RDMA写入,读取或原子。当建立通信时,初始化分组序列号,并且每当队列对产生新分组时递增分组序列号。端节点的端口可以被构造成一或多个可能重叠的被称作分区的组的成员。
在图8中,描述了一部分分布式计算系统以图解示例性请求和确认事务。图8中的分布式计算系统包含主机处理器节点802和主机处理器节点804。主机处理器节点802包含主机通道适配器806。主机处理器节点804包含主机通道适配器808。图8中的分布式计算系统包含SAN结构810,其包含交换机812和交换机814。SAN结构包含将主机通道适配器806连接到交换机812的链路;将交换机连接到交换机814的链路;和将主机通道适配器808连接到交换机814的链路。
在示例性事务中,主机处理器节点802包含客户进程A。主机处理器节点804包含客户进程B。客户进程A通过队列对820与主机通道适配器硬件806交互。客户进程B通过队列对822与硬件通道适配器硬件808交互。队列对824和828是均包含发送工作队列和接收工作队列的数据结构。于是,队列对820包含发送工作队列824和接收工作队列826。队列对828包含发送工作队列828和接收工作队列830。
通过将工作队列单元置入队列对820的发送队列824中,进程A启动消息请求。在图4中图解了这种工作队列单元。由发送工作队列单元中包含的收集列表引用客户进程A的消息请求。收集列表中的每个数据分段指向实际连续本地存储器区域,该区域包含一部分消息,例如图4中分别保存消息部分1,2和3的数据分段1,2和3。
主机通道适配器806中的硬件读取工作队列单元,并且将虚拟连续缓冲区中存储的消息分割成数据分组。例如图7图解的数据分组。通过SAN结构路由数据分组。并且对于可靠传送服务,数据分组被最终目的端节点确认。如果未成功确认,则源端节点重发数据分组。数据分组被源端节点产生并且被目的端节点消耗。
参照图9,图9根据本发明图解了分布式网络系统中使用的网络寻址。主机名提供主机节点,例如主机处理器节点或I/O适配器节点的逻辑标识。主机名标识消息的端点,使得消息被送往主机名指定的端节点上驻留的进程。于是,每个节点有一个主机名,但是一个节点可以具有多个通道适配器(CA)。
单IEEE分配64位标识符(EUI-64)902被分配给每个部件。部件可以是交换机,路由器或CA。
每个CA端口906被分配一或多个全局唯一ID(GUID)标识符904。多个GUID(即IP地址)可以被用于若干理由,以下例子图解了其中一些理由。在一个实施例中,不同IP地址标识端节点上的不同分区或服务。在不同实施例中,不同IP地址被用来指定不同的服务质量(QoS)属性。在另一个实施例中,不同IP地址标识通过内部子网路由的不同路径。一个GUID 908被分配给交换机910。
本地ID(LID)是指用于标识单个子网内的CA端口的短地址ID。在一个示例性实施例中,子网具有多达216个的端节点,交换机和路由器,并且LID为16位。源LID(SLID)和目的LID(DLID)是局域网头中使用的源和目的LID。单个CA端口906具有多达2LMC个为其分配的LID 912。LMC表示CA中的LID屏蔽控制字段。屏蔽是用于接受或拒绝另一组数据中的位模式的位模式。多个LID可以被用于若干理由,通过以下例子提供了其中一些理由。在一个实施例中,不同LID标识端节点中的不同分区或服务。在另一个实施例中,不同LID被用来指定不同的QoS属性。在另一个实施例中,不同LID指定通过子网的不同路径。每个交换机910具有一个LID 918与之相关。
LID和GUID之间不必存在一一对应,因为对于每个端口,CA可以具有比GUID或多或少的LID。对于具有冗余端口和到多个SAN结构的冗余传导性的CA,CA可以在其端口中的每个上使用相同LID和GUID,但不必如此。
图10图解了根据本发明优选实施例的分布式计算系统的一部分。分布式计算系统1000包含子网1002和子网1004。子网1002包含主机处理器节点1006,1008和1010。子网1004包含主机处理器节点1012和1014。子网1002包含交换机1016和1018。子网1004包含交换机1020和1022。
路由器连接子网。例如,子网1002通过路由器1024和1026连接到子网1004。在一个示例性实施例中,子网具有多达216个的端节点,交换机和路由器。
子网被定义成一组端节点和级联交换机,其被管理为单个单元。通常,子网占据单个地理或功能区域。例如,一个房间中的单个计算机系统可以被定义成子网。在一个实施例中,子网中的交换机可以对消息执行非常快速的蛀孔(wormhole)或穿插(cut-through)路由。
子网内的交换机检查DLID,该DLID在子网内是唯一的,以允许交换机迅速和高效地路由传入消息分组。在一个实施例中,交换机是相对简单的电路,并且通常被实现为单个集成电路。子网可以具有通过级联交换机形成的数百到数千端节点。
如图10所示,为扩充到更加大型的系统,子网与路由器,例如路由器1024和1026连接。路由器解释IP目的ID(例如IPv6目的ID),并且路由IP类的分组。
在图3B中一般性地图解了交换机的示例性实施例。交换机或路由器上的每个I/O路径具有端口。通常,交换机可以将分组从一个端口路由到相同交换机上的任何其他端口。
在例如子网1002或子网1004的子网内,通过目的主机通道适配器端口的LID确定从源端口到目标端口的路径。在子网之间,通过会被用来到达目的子网的目的主机通道适配器端口的IP地址(例如IPv6地址)和路由器端口的LID地址确定路径。
在一个实施例中,请求分组使用的路径和请求分组的相应肯定确认(ACK)或否定确认(NAK)帧不需要是对称的。在一个使用遗忘路由的实施例中,交换机根据DLID选择输出端口。在一个实施例中,交换机对所有其输入端口使用一组路由判决准则。在一个示例性实施例中,路由判决准则被包含在一个路由表中。在可选实施例中,交换机针对每个输入端口使用分立的准则组。
本发明的分布式计算系统中的数据事务通常由若干个硬件和软件步骤组成。客户进程数据传送服务可以是用户模式或内核模式进程。客户进程通过一或多个队列对,例如图3A,5和6图解的队列对访问主机通道适配器硬件。客户进程调用特定于操作系统的编程接口,这里被称作″动词″。实现动词的软件代码将工作队列单元置入指定队列对工作队列中。
有许多可能的方法来置入工作队列单元,并且有许多可能的工作队列单元格式,这些格式允许有各种成本/性能设计点,但不影响互操作性。然而用户进程必须以明确定义的方式与动词通信,并且必须充分规定SAN结构上发送的数据的格式和协议以允许设备在异构厂商环境中进行互操作。
在一个实施例中,通道适配器硬件检测工作队列单元置入并且访问工作队列单元。在这个实施例中,通道适配器硬件转换和验证工作队列单元的虚拟地址并且访问数据。
传出消息被分割成一或多个数据分组。在一个实施例中,通道适配器硬件向每个分组加入传送头和网络头。传送头包含序列号和其它传送信息。网络头包含路由信息,例如目的IP地址和其它网络路由信息。链路头包含目的本地标识符(DLID)或其它本地路由信息。适当链路头始终被加入分组中。如果目的端节点驻留于远程子网,则适当全局网络头被加到指定分组中。
如果使用可靠传送服务,当请求数据分组到达其目的端节点时,目的端节点使用确认数据分组,以使请求数据分组发送方知道请求数据分组在目的地处被验证和接受。确认数据分组确认一或多个有效和接受的请求数据分组。在其接收任何确认之前,请求方可以具有多个未结束的请求数据分组。在一个实施例中,当产生队列对时,确定多个未结束消息,即请求数据分组的数量。
在图11中以图例的形式一般性图解了用于实现本发明的分层体系结构1100的一个实施例。图11的分层体系结构图例示出了数据通信路径的各个层次,和层次之间传递的数据和控制信息的组织。
主机通道适配器端节点协议层(例如由端节点1111使用)包含由客户1103定义的上层协议1102,传送层1104;网络层1106,链路层1108和物理层1110。交换机层(例如由交换机1113使用)包含链路层1108和物理层1110。路由层(例如由路由器1115使用)包含网络层1106,链路层1108和物理层1110。
分层体系结构1100通常遵循典型通信堆栈的概况。例如对于端节点1111的协议层,上层协议1102使用动词在传送层1104产生消息(1112)。传送层1104传递消息到网络层1106(1114)。网络层1106在网络子网之间路由分组(1116)。链路层1108在网络子网内路由分组(1118)。物理层1110向其它设备的物理层发送各个位或各个位组。每个层不知道其上层或下层如何执行其功能。
客户1103和1105表示使用其它层在端节点之间进行通信的应用程序或进程。传送层1104提供端到端消息传送。在一个实施例中,传送层提供如上所述的3个类型的传送服务,它们是可靠连接服务;可靠数据报服务;和不可靠数据报服务。网络层1106通过子网或多个子网执行到目的端节点的分组路由。链路层1108在链路上执行经过流控,检错和划分优先级的分组传送。
物理层1110执行技术相关的位发送。通过链路1122,1124和1126在物理层之间传递各个位或位组。可以通过印制电路铜轨线,铜电缆,光缆或其它适当链路实现链路。
如上所述,本发明涉及用于例如InfiniBand网络的系统区域网络的改进方法和系统,其中不同逻辑分区可以分配和使用系统区域网络的单个主机通道适配器(HCA)内的不同资源。通过本发明提供的对HCA的资源的逻辑分区支持,多个操作系统可以共享单个物理HCA。逻辑分区保证每个操作系统不知道其正与其它操作系统共享单个HCA硬件的各个资源,并且进一步保证各个操作系统和特定分区的应用程序不访问与其它分区相关的HCA硬件资源。
图11A根据本发明的优选实施例描述了逻辑分区环境中的主机通道适配器。物理HCA 1150包含多个资源,例如资源1151,1153,1155,1157和1159。物理HCA 1150包含物理端口1 1152和物理端口2 1154。本领域普通技术人员会认识到,根据实现,物理HCA 1150可以包含更多或更少的端口。物理HCA也包含逻辑交换机1156,1158。
物理HCA 1150与多个逻辑分区LPAR 1 1160到LPAR N 1162相关。LPAR与逻辑主机通道适配器LHCA 1 1164到LHCA N 1166相关。
物理HCA 1150的资源可以被分配给逻辑分区中的一个。例如,资源1151和1153被分配给逻辑分区1160。资源1155和1157被分配给逻辑分区1162。资源1159不被分配给任何分区。
图12是物理主机通道适配器的示例图,该主机通道适配器包含用于在基于本发明的通道适配器内的每个资源中存储逻辑分区标识符的逻辑分区寄存器。图12示出的主机通道适配器对应于图3A图解的主机通道适配器,但是具有本发明的增强以提供对主机通道适配器内的资源的逻辑分区支持。
如图12所示,主机通道适配器(HCA)1200包含管理程序事件队列(EQ)1202,完成事件队列1204,异步附属(asynchronousaffiliated)(ASYNC AFFIL)差错事件队列1206,完成队列1208,全局事件队列1210,存储器区1212和队列对1214。本领域的技术人员会认识到,这些资源的一或多个的多个不同实例可以被包含在单通道适配器内。例如,一个通道适配器可以包含12个不同队列对,这些队列对的配置类似于队列对1214。
根据本发明,资源可以彼此访问,只要两个资源被分配给相同逻辑分区。本发明使用每个资源的LPAR ID字段中存储的分区标识符实施这种分区。当两个资源存储有相同分区标识符时,资源可自由地彼此访问。当它们存储有不同分区标识符时,即它们被分配给不同分区时,它们不被允许彼此访问。
管理程序EQ 1202包含分区标识符寄存器,即LPAR ID寄存器1216,和寄存器1218。完成EQ 1204包含LPAR ID寄存器1220和寄存器1222。ASYNC AFFIL EQ 1206包含LPAR ID寄存器1224和寄存器1226。完成队列1208包含寄存器1228和LPAR ID寄存器1230。全局EQ1210包含LPAR ID寄存器1232和寄存器1234。存储器区1212包含LPAR ID寄存器1236和寄存器1238。队列对1214包含寄存器1240,寄存器1242和LPAR ID寄存器1244。
每个资源可以包含一或多个寄存器,例如寄存器1218,1222,1226,1228,1234,1238,1240和1242,用于存储针对其它资源或其它信息的指针。每个资源也包含分区标识符寄存器,例如1216,1220,1224,1230,1232,1236和1244,用于存储标识特定资源所分配到的分区的标识符。例如,LPAR ID寄存器1216存储标识管理程序EQ1202被分配到的分区的标识符。通常,管理程序被分配一特定分区标识符,例如FF或00。
LPAR ID寄存器1220存储标识完成EQ 1204被分配到的分区的标识符。LPAR ID寄存器1224存储标识ASYNC AFFIL EQ 1206被分配到的分区的标识符。LPAR ID寄存器1230存储标识完成队列1208被分配到的分区的标识符。LPAR ID寄存器1232存储标识全局EQ1210被分配到的分区的标识符。LPAR ID寄存器1236存储标识存储器区1212被分配到的分区的标识符。并且,LPAR ID寄存器1244存储标识队列对1214被分配到的分区的标识符。
资源的寄存器确定以下关系(1)存在队列对的完成队列号(CQ#)。CQ号标识被HCA用来置入队列对的完成事件的CQ。
(2)存在队列对的事件队列号(EQ#)。EQ号标识被通道适配器用来置入相关队列对的附属异步事件的事件队列。
(3)存在完成队列的事件队列号(EQ#)。EQ号标识被通道适配器用来置入完成队列的完成队列项(CQE)事件的EQ。
(4)通过队列对的工作队列单元(WQE)的数据分段中的L_Key或接收RDMA分组中的R_Key的索引部分确定队列对和存储器区之间的关系。
每当通道适配器使用这些关系中的一种从一个资源跨越到另一个资源时,通道适配器将初始资源的分区标识符与目标资源的分区标识符相比较。如果分区标识符匹配,则处理被允许继续执行,并且第一资源被允许访问第二资源。如果分区标识符不匹配,则检测到并且报告差错,如下所述(1)当队列对访问其完成队列以得到完成事件并且分区标识符不匹配时,在队列对中设置 CQ#的OS最可能出错。在这种情况下,如图12所示,可以通过管理程序的事件队列上的事件提醒管理程序,或可以针对操作系统产生事件。
(2)当队列对访问其事件队列以得到附属异步差错并且分区标识符不匹配时,在队列对中设置EQ#的OS最可能出错。在这种情况下,如图12所示,可以通过管理程序的事件队列上的事件提醒管理程序,或可以针对操作系统产生事件。
(3)当队列对访问其事件队列并且分区标识符不匹配时,在完成队列中设置EQ#的操作系统最可能出错。在这种情况下,如图12所示,可以通过管理程序的事件队列上的事件提醒管理程序,或可以针对操作系统产生事件。
(4)当L_Key或R_Key指向其分区标识符不匹配于相关队列对的分区标识符的存储器区时,负责产生键(Key)的用户软件最可能出错。在这种情况下,通过队列对的事件队列上的事件提醒拥有用户软件的OS,所述事件队列与用于异步附属事件的事件队列相同。
全局事件EQ 1210产生存储在管理程序EQ 1202中的管理程序事件,如信号1250所示。这些事件包含例如端口改变和端口出错的事件。队列对1214产生管理程序事件,如信号1252所示。当LPAR ID寄存器1244中存储的标识符不匹配于LPAR ID寄存器1220中存储的标识符时,队列对1214产生管理程序事件。当LPAR ID寄存器1244中存储的标识符不匹配于LPAR ID寄存器1224中存储的标识符时,队列对1214也产生管理程序事件。
当LPAR ID寄存器1244中存储的标识符匹配于LPAR ID寄存器1230中存储的标识符时,普通完成事件被存储在完成队列1208中,如信号1254所示。
当LPAR ID寄存器1230中存储的标识符匹配于LPAR ID寄存器1220中存储的标识符时,普通完成事件被存储在完成EQ 1204中,如信号1260所示。当LPAR ID寄存器1230中存储的标识符不匹配于LPAR ID寄存器1220中存储的标识符时,完成队列1208产生管理程序事件,如信号1258所示。
队列对1214也产生异步附属事件,如信号1256所示。队列对1214检查LPAR ID寄存器1236,如信号1262所示。当发生异步附属错误时,并且当存储器区LPAR ID寄存器1236中存储的标识符不匹配于LPAR ID寄存器1244中存储的标识符时,队列对1214产生异步附属事件,如信号1264所示。
只有管理程序可以设置每个LPAR ID寄存器中的值。当操作系统请求特定通道适配器内特定类型的资源时,管理程序选择特定类型的资源,配置资源,并且设置该资源的LPAR ID寄存器中的值,以标识请求操作系统被分配到的分区。此后,操作系统可以直接访问该资源,并且改变资源内寄存器中存储的指针。通过这种方式,通道适配器硬件执行必要的检查,以对特定通道适配器的各个资源实施分区。
图13的高层流程解了基于本发明的管理程序,该管理程序使用资源中的分区标识符寄存器向特定分区分配通道适配器的资源。处理从块1300开始,并且此后传递到块1302,其中图解了操作系统请求特定通道适配器内特定类型的资源。操作系统通过管理程序产生请求。操作系统被分配给特定分区。
接着,块1304描述了管理程序从特定通道适配器中选择所请求类型的特定资源。此后,块1306图解了管理程序配置选定资源以便使用。并且,管理程序在位于选定资源内的分区标识符寄存器中存储标识操作系统的分区的分区标识符。接着,块1308描述了管理程序向操作系统返回标识特定的选定资源的标识符。接着,如块1310所示,处理终止。
图14的高层流程图根据本发明图解了对其资源实施分区的通道适配器。处理从块1400开始,并且此后传递到块1402,其中图解了一个资源尝试访问第二资源。接着,块1404描述了包含第二资源的通道适配器确定请求方资源被分配到的分区。如果第一资源正尝试访问第二资源,则包含第二资源的通道适配器确定第一资源被分配到的分区。通过读取第一资源的分区标识符寄存器内存储的分区标识符,通道适配器进行这种确定。
此后,块1406图解了通道适配器通过读取第二资源的分区标识符寄存器中存储的分区标识符来确定第二资源被分配到的分区。接着,块1408描述了通道适配器将请求方或第一资源的分区标识符与第二资源的分区标识符相比较。接着,块1410图解了有关分区标识符是否标识相同分区的确定。如果它们标识相同分区,则处理传递到块1412,其中描述了允许请求方资源访问第二资源的通道适配器。接着,如块1414所示,处理终止。
再次参照块1410,如果确定分区标识符标识不同分区,则处理传递到块1416,其中描述了通道适配器通过忽略访问尝试来禁止访问,并且通过产生管理程序事件或操作系统事件来提醒管理程序或操作系统。接着,如块1414所示,处理终止。
必须注意,虽然前面针对一个全功能数据处理系统的环境描述了本发明,但本领域的普通技术人员会理解到,可以通过计算机可读指令介质的形式和其它各种形式分布本发明的过程,并且无论实际被用来完成分布的信号承载介质的具体类型如何,本发明均同样适用。计算机可读介质的例子包含诸如软盘,硬盘驱动器,RAM,CD-ROM的可记录类型介质和诸如数字与模拟通信链路的传输类型介质。
前面对本发明进行的描述只是为了图解和描述,不被用来对具有公开形式的本发明进行详细定义和限制。本领域的普通技术人员显然可以进行许多修改和改变。选择和描述实施例是为了提供对本发明原理及其实际应用的最优说明,并且也是为了使本领域的普通技术人员针对可以根据所考虑的具体使用情况进行各种修改的各种实施例理解本发明。
权利要求
1.一种对用于系统区域网络的单通道适配器的多个资源进行逻辑分区的方法,其中所述单通道适配器被不同分区共享,所述方法包括将所述多个资源中的第一个资源分配给第一分区;将所述多个资源中的第二个资源分配给第二分区;和通过允许所述第一分区访问所述多个资源中的所述第一个资源,并且允许所述第二分区访问所述多个资源中的所述第二个资源,对所述多个资源实施分区。
2.如权利要求1所述的方法,还包括步骤通过仅允许所述第一分区访问所述多个资源中的所述第一个资源,并且仅允许所述第二分区访问所述多个资源中的所述第二个资源,对所述多个资源实施分区。
3.如权利要求1所述的方法,还包括步骤使用所述多个资源中一个资源内存储的分区标识符确定所述多个资源中的所述一个资源被分配到的分区。
4.如权利要求1所述的方法,还包括步骤使用所述多个资源中的每个资源内包含的硬件寄存器对所述多个资源实施分区。
5.如权利要求1所述的方法,还包括步骤由所述多个资源中的所述第二个资源尝试访问所述多个资源中的所述第一个资源;通过确定所述第二分区和所述第一分区是否在相同分区中,来确定所述多个资源中的所述第一和第二个资源是否被分配给相同分区;响应确定所述第二分区和所述第一分区是相同分区,允许所述多个资源中的所述第二个资源访问所述多个资源中的所述第一个资源;和响应确定所述第二分区和所述第一分区是不同分区,禁止所述多个资源中的所述第二个资源访问所述多个资源中的所述第一个资源。
6.如权利要求5所述的方法,还包括步骤响应确定所述第二分区和所述第一分区是不同分区,报告错误。
7.如权利要求1所述的方法,还包括步骤由操作系统请求所述多个资源中一个具有特定类型的资源;由管理程序选择所述多个资源中具有所述特定类型的特定一个资源;确定所述操作系统被分配到的分区;在所述多个资源中的所述特定一个资源内的硬件寄存器中存储标识所述分区的分区标识符;和使用所述硬件寄存器内存储的所述分区标识符对所述多个资源实施分区。
8.如权利要求7所述的方法,还包括步骤只允许所述管理程序改变所述硬件寄存器的内容。
9.如权利要求1所述的方法,还包括步骤在所述多个资源中的资源被分区之后,允许软件设置中的多个资源中的所述资源之间的任意关系。
10.如权利要求1所述的方法,还包括步骤使用所述通道适配器内的硬件实施所述分区。
11.一种对用于系统区域网络的单通道适配器的多个资源进行逻辑分区的系统,其中所述单通道适配器被不同分区共享,所述系统包括所述多个资源中的第一个资源被分配给第一分区;所述多个资源中的第二个资源被分配给第二分区;和所述通道适配器通过仅允许所述第一分区访问所述多个资源中的所述第一个资源,并且仅允许所述第二分区访问所述多个资源中的所述第二个资源,对所述多个资源实施分区。
12.如权利要求11所述的系统,还包括所述通道适配器通过仅允许所述第一分区访问所述多个资源中的所述第一个资源,并且仅允许所述第二分区访问所述多个资源中的所述第二个资源,对所述多个资源实施分区。
13.如权利要求11所述的系统,还包括所述通道适配器使用所述多个资源中的一个资源内存储的分区标识符确定所述多个资源中的所述一个资源被分配到的分区。
14.如权利要求11所述的系统,还包括所述通道适配器使用所述多个资源中的每个资源内包含的硬件寄存器对所述多个资源实施分区。
15.如权利要求11所述的系统,还包括所述多个资源中的所述第二个资源尝试访问所述多个资源中的所述第一个资源;所述通道适配器通过确定所述第二分区和所述第一分区是否相同分区,来确定所述多个资源中的所述第一和第二个资源是否被分配给相同分区;响应确定所述第二分区和所述第一分区是相同分区,所述通道适配器允许所述多个资源中的所述第二个资源访问所述多个资源中的所述第一个资源;和响应确定所述第二分区和所述第一分区是不同分区,所述通道适配器禁止所述多个资源中的所述第二个资源访问所述多个资源中的所述第一个资源。
16.如权利要求15所述的系统,还包括响应确定所述第二分区和所述第一分区是不同分区,所述通道适配器报告错误。
17.如权利要求11所述的系统,还包括操作系统请求所述多个资源中一个具有特定类型的资源;管理程序选择所述多个资源中具有所述特定类型的特定一个资源;所述通道适配器确定所述操作系统被分配到的分区;所述管理程序在所述多个资源中的所述特定一个资源内的硬件寄存器中存储标识所述分区的分区标识符;和所述通道适配器使用所述硬件寄存器内存储的所述分区标识符对所述多个资源实施分区。
18.如权利要求17所述的系统,还包括所述通道适配器只允许所述管理程序改变所述硬件寄存器的内容。
19.如权利要求11所述的系统,还包括所述通道适配器允许软件在所述多个资源中的资源被分区之后设置所述多个资源中的所述资源之间的任意关系。
20.如权利要求11所述的系统,还包括所述通道适配器使用所述通道适配器内的硬件实施所述分区。
全文摘要
公开了一种对用于系统区域网络的单通道适配器的资源进行逻辑分区的方法和系统。每个资源包含在其中存储分区标识符的分区标识符寄存器。通过在资源中的第一个资源内的分区标识符寄存器中存储第一分区标识符,资源中的第一个资源被分配给第一分区。通过在资源中的第二个资源内的分区标识符寄存器中存储第二分区标识符,资源中的第二个资源被分配给第二分区。通过检查每个资源中的分区标识符以便只允许第一分区访问第一资源,并且只允许第二分区访问第二资源,实施资源的分区。
文档编号H04L29/06GK1604057SQ20041006332
公开日2005年4月6日 申请日期2004年7月8日 优先权日2003年9月30日
发明者理查德·路易斯·昂德, 布赖斯·里罗伊·布克马, 戴维·F·克莱德多克, 罗纳德·爱德华·福斯, 托马斯·安托尼·格里格, 多纳德·威廉·施密特, 布鲁斯·马沙尔·沃尔克 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1