提供用于i/o适配器的队列对的方法、系统和存储介质的制作方法

文档序号:7627906阅读:117来源:国知局
专利名称:提供用于i/o适配器的队列对的方法、系统和存储介质的制作方法
技术领域
本公开内容通常涉及计算机和处理器体系结构、输入/输出(I/O)处理、操作系统,以及更具体地说,涉及用于I/O适配器的低等待时间(low-latency)队列对(QP)。
背景技术
I/O适配器,诸如能远程直接存储器存取(remote direct memoryaccess)(RDMA)的适配器,或RDMA网络接口卡(RNIC),诸如InfiniBandTM(IB)主机通道适配器(host channel adapter)(HCA),定义了用于在网络结构上将消息信息从软件消费者传送到适配器的队列对(QPs)。工业标准,诸如可从InfiniBandTrade Association获得的InfiniBandTM体系结构规格和来自RDMA Consortium的iWarp,规定在QP上携带的消息信息是以携带属于该消息的控制信息的工作队列单元(work queue element,WQE)的形式。此外,一个或多个数据描述符指向将传送的消息数据或所接收的消息将处的位置。
一些QP应用、诸如高性能计算(HPC)需要降低在将消息从一个计算节点传送到另一个节点的过程中产生的等待时间。即使在现在,上述的工业标准机制也不再适合高性能计算系统。需要一种增强标准QP语义以便能实现由这些应用所需的更低等待时间同时对现有硬件的影响最小的机制。

发明内容
本发明旨在提出一种用于提供消除与工作队列单元有关的开销以及定义为允许将消息直接放在队列对上所需的机制的低等待时间队列对的系统、方法和计算机可读介质。
一个方面是用于提供用于输入/输出(I/O)适配器的队列对的系统,包括主存储器、I/O适配器和处理器。主存储器具有发送队列和接收队列。I/O适配器将在链路上接收的消息放在接收队列中,并在链路上传送在发送队列中保存的消息。处理器与主存储器和I/O适配器进行通信,并且执行主存储器中的用户处理(consumer process)。用户处理存取发送队列和接收队列。
另一方面是提供用于I/O适配器的队列对的方法。I/O适配器将在链路上接收的消息放在接收队列中。I/O适配器在链路上传送保存在发送队列中的消息。接收队列和发送队列在主存储器中。用户处理存取发送队列和接收队列。用户处理在与主存储器和I/O适配器通信的处理器上执行。
另一方面是计算机可读介质,存储用于执行提供用于I/O适配器的队列对的方法的指令。I/O适配器将在链路上接收的消息放在接收队列中。I/O适配器在链路上传送保存在发送队列中的消息。接收队列和发送队列在主存储器中。用户处理存取发送队列和接收队列。用户处理在与主存储器和I/O适配器通信的处理器上执行。


根据下述说明书、附加权利要求和附图,将更好地理解本发明的这些和其他特征、方面和优点,其中图1是用于本发明的实施例的示例性操作环境的、现有技术中的分布式计算系统的图;图2是用于本发明的实施例的示例性操作环境的一部分的、现有技术中的主机通道适配器的图;图3是示例说明用于本发明的实施例的示例性操作环境的一部分的、现有技术中的工作请求的处理的图;图4是示例说明现有技术中的分布式计算机系统的一部分的图,所述系统的一部分是用于本发明的实施例的示例性操作环境的一部分,其中使用可靠的连接服务;图5是用于本发明的实施例的示例性操作环境的一部分的、用在现有技术中的分层通信体系结构的图;图6是现有技术中的标准队列对结构的框图;以及图7是低等待时间队列对的示例性实施例的框图。
具体实施例方式
本发明的示例性实施例提供了消除与工作队列单元有关的开销并且定义为允许将消息直接放在队列对上所需的机制的低等待时间队列对。示例性实施例最好在分布式计算系统、诸如具有终端节点、交换机、路由器和互连这些部件的链路的现有技术系统区域网(SAN)中实现。图1至5显示了用于本发明的实施例的示例性操作环境的各个零件。图6显示了现有技术中的标准队列对结构。图7显示了低等待时间队列对的示例性实施例。
图1是分布式计算机系统的图。图1表示的分布式计算机系统采用系统区域网(SAN)100的形式,并且仅是为示例性目的而提供的。下面所述的本发明的示例性实施例能在各种其他类型和结构的计算机系统上实现。例如,实现示例性实施例的计算机系统的范围从具有一个处理器和少量输入/输出(I/O)适配器的小服务器到具有几百或几千个处理器和几千个I/O适配器的巨大并行巨型计算机系统。
SAN100是分布式计算机系统内的高带宽、低等待时间的网络互连节点。节点是连接到网络的一个或多个链路以及形成网络内的消息的源和/或目的地的任何部件。在所述的例子中,SAN100包括以主机处理器节点102、主机处理器节点104、冗余阵列独立磁盘(RAID)子系统节点106和I/O底盘节点108的形式的节点。在图1中所示的节点仅用于示例目的,因为SAN100能连接任意数目和任意类型的独立处理器节点、I/O适配器节点和I/O设备节点。这些节点的任何一个都能充当终端节点,在此定义为SAN100中发起或最终使用消息或帧的设备。
在一个示例性实施例中,分布式计算机系统中存在错误处理机制,其中,该错误处理机制允许分布式计算机系统、诸如SAN100中的终端节点间的可靠连接或可靠数据报通信。
消息,如在此所使用的,是数据交换的应用定义的单位,其是协作的处理过程间的通信的基本单位。分组是由连网协议头部和/或尾部封装的数据的一个单位。头部通常提供用于引导帧通过SAN100的控制和路由信息。尾部通常包含用于确保不在破坏内容的情况下递送分组的控制和循环冗余校验(CRC)。
SAN100包含支持分布式计算机系统内的I/O和处理器间通信(IPC)的通信和管理基础设施。图1所示的SAN100包括交换通信结构116,其允许许多设备在安全、远程管理的环境中同时利用高带宽和低等待时间传送数据。终端节点能在多个端口上通信以及利用通过SAN结构的多个通路。能将通过图1所示的SAN的多个端口和通路用于容错和增加的带宽数据传送。
图1中的SAN100包括交换机112、交换机114、交换机146和路由器117。交换机是将多个链路连接在一起并且允许使用小的头部目的地局部标识符(DLID)字段将分组从一个链路路由到另一链路的设备。路由器是将多个子网连接在一起并且能使用大的头部目的地全局唯一标识符(DGUID)将帧从第一子网的一个链路路由到第二子网中的另一链路的设备。
在一个实施例中,链路是任何两个网络结构单元、诸如终端节点、交换机或路由器间的全双工信道。示例性的适当的链路包括但不限于铜电缆、光缆以及底板和印刷电路板上的印刷电路铜线。
对可靠服务类型,终端节点,诸如主机处理器终端节点和I/O适配器终端节点生成请求分组并返回应答分组。交换机和路由器沿从源点到目的地传递分组。除在网络中的每一级处更新的不同CRC尾部字段外,交换机不变地向前传送分组。当路由分组时,路由器更新不同CRC尾部字段并修改头部中的其他字段。
在图1所示的SAN100中,主机处理器节点102、主机处理器节点104和I/O底盘108包括至少一个通道适配器(CA)以与SAN100进行接口。在一个实施例中,每个通道适配器是充分详细地实现到在SAN结构116上传送的源或接收器(sink)分组的通道适配器接口的端点。主机处理器节点102包含以主机通道适配器118和主机通道适配器120的形式的通道适配器。主机处理器节点104包含主机通道适配器122和主机通道适配器124。主机处理器节点102还包括由总线系统134互连的中央处理单元126-130和存储器132。主机处理器节点104类似地包括由总线系统144互连的中央处理单元136-140和存储器142。
主机通道适配器118和120提供到交换机112的连接,而主机通道适配器122和125提供到交换机112和114的连接。
在一个实施例中,主机通道适配器用硬件实现。在该实现中,主机通道适配器硬件卸下许多中央处理单元I/O适配器通信开销。主机通道适配器的该硬件实现还允许交换网上的多个并行通信,而没有与通信协议有关的传统开销。在一个实施例中,图1中的主机通道适配器和SAN100为分布式计算机系统的I/O和处理器间通信(IPC)用户提供零处理器复制数据传送,而不包含操作系统内核处理,并利用硬件来提供可靠的容错通信。
如图1所示,路由器117耦合到连到其他主机或其他路由器的广域网(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的Ethernet适配器卡、用于I/O模块154的图形适配器卡、以及用于I/O模块156的视频适配器卡。能实现任何已知类型的适配器卡。I/O适配器还包括I/O适配器中的交换机以便将适配器卡连接到SAN结构。这些模块包含目标通道适配器158-166。
在该例子中,图1中的RAID子系统节点106包括处理器168、存储器170、目标通道适配器(TCA)172和多个冗余和/或带状存储盘单元174。目标通道适配器172能够是全功能主机通道适配器。
SAN100处理用于I/O的数据通信和处理器间通信。SAN100支持用于I/O所需的高带宽和可扩展性(scalability),并且还支持用于处理器间通信所需的极其低的等待时间和低CPU开销。用户客户机还能绕过操作系统内核处理和直接存取网络通信硬件,诸如主机通道适配器,这允许高效的消息传递协议。SANl00适合于当前计算模型,并且是用于I/O和计算机群集通信的新形式的构造块。另外,图1中的SAN100允许I/O适配器节点在它们间通信或与分布式计算机系统中的任一或全部处理器节点通信。通过连接到SAN100的I/O适配器,最终I/O适配器节点基本上具有与SAN100中的任何主机处理器节点相同的通信能力。
在一个实施例中,图1所示的SAN100支持通信语义(channelsemantics)和存储器语义(memory semantics)。通道语义有时称为发送/接收或推进通信(push communication)操作。通道语义是在传统的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,描述现有技术中的主机通道适配器的图。图2所示的主机通道适配器200包括一组队列对(QP)202-210,用来将消息传送到主机通道适配器端口212-216。通过虚拟通路(VL)218-234,引导数据缓冲到主机通道适配器端口212-216,其中,每个VL具有其自己的流量控制。子网管理器通过用于每个物理端口的局部地址,即端口的LID,配置通道适配器。子网管理器代理(SMA)236是为配置通道适配器的目的而与子网管理器通信的实体。存储器变换和保护(MTP)238是将虚拟地址变换成物理地址并验证存取权限的机制。直接存储器存取(DMA)240相对于队列对202-210,使用存储器242,提供直接存储器存取操作。
单个通道适配器,诸如图2所示的主机通道适配器200,能支持几千个队列对。相反,I/O适配器中的目标通道适配器通常支持更少数目的队列对。每个队列对包括发送工作队列(SWQ)和接收工作队列。发送工作队列用来发送通道和存储器语义消息。接收工作队列接收通道语义消息。客户调用操作系统专用编程接口,其在此称为Verbs,以便将工作请求(WR)放在工作队列上。
现在参考图3,描述举例说明现有技术中的工作请求的处理的图。在图3中,存在接收工作队列300、发送工作队列302和完成队列304,用于处理来自以及用于用户306的请求。来自用户306的这些请求最终被发送到硬件308。在该例子中,用户306生成工作请求310和312,以及接收工作完成314。如图3所示,放在工作队列上的工作请求被称为工作队列单元(WQE)。
发送工作队列302包含工作队列单元(WQEs)322-328,其描述了将在SAN结构上传送的数据。接收工作队列300包含工作队列单元(WQE)316-320,其描述何处放置来自SAN结构的到来通道语义数据。工作队列单元由主机通道适配器中的硬件308处理。
Verbs还提供用于从完成队列304检索已完成工作的机制。如图3所示,完成队列304包含完成队列单元(CQE)330-336。完成队列单元包含有关先前已完成的工作队列单元的信息。完成队列304用来创建用于多个队列对的完成通信的单个点。完成队列单元是完成队列上的数据结构。该单元描述已完成的工作队列单元。完成队列单元包含足够的信息来确定队列对和指定完成的工作队列单元。完成队列上下文是包含指针、长度和管理各个完成队列所需的其他信息的信息块。
图3所示的支持发送工作队列302的示例性工作请求如下。发送工作队列是用来将一组局部数据段推进到由远程节点的接收工作队列单元参考(reference)的数据段的通道语义操作。例如,工作队列单元328包含到数据段4338、数据段5340和数据段6342的参考。每个发送工作请求的数据段包含虚拟连续的存储器空间。用来参考局部数据段的虚拟地址在创建局部队列对的处理的地址上下文中。
在一个实施例中,图3所示的接收工作队列300仅支持一种工作队列单元,其称为接收工作队列单元。接收工作队列单元提供描述向其中写入到来的发送消息的局部存储器空间的通道语义操作。接收工作队列单元包括描述几个虚拟连续的存储器空间的散射列表(scatterlist)。到来的发送消息被写入这些存储器空间中。虚拟地址在创建局部队列对的处理的地址上下文中。
对处理器间通信,用户模式软件处理通过队列对,直接从缓冲器驻留在存储器中的位置处传送数据。在一个实施例中,通过队列对的传送绕过操作系统并消耗更少主机指令周期。队列允许零处理器复制数据传送而不涉及操作系统内核。零处理器复制数据传送提供了对高带宽和低等待时间通信的有效支持。
当创建队列对时,设置队列对以便提供选定类型的传输服务。在一个实施例中,实现本发明的分布式计算机系统支持四种传输服务可靠连接、不可靠连接、可靠数据报和不可靠数据报连接服务。
利用可靠连接服务以便在分布式处理间通信的分布式计算机系统的一部分通常如图4所示。图4中的分布式计算机系统400包括主机处理器节点1、主机处理器节点2,以及主机处理器节点3。主机处理器节点1包括处理A410。主机处理器节点3包括处理C420和处理D430。主机处理器节点2包括处理E440。
主机处理器节点1包括队列对4、6和7,每个队列对具有发送工作队列和接收工作队列。主机处理器节点2具有队列对9,主机处理器节点3具有队列对2和5。分布式计算机系统400的可靠连接服务将本地队列对与一个并且仅仅一个远程队列对关联。因此,队列对4用来与队列对2通信;队列对7用来与队列对5通信;以及队列对6用来与队列对9通信。
位于可靠连接服务中的一个队列对上的WQE使数据被写入由连接的队列对的接收WQE参考的接收存储器空间中。RDMA操作在连接队列对的地址空间上操作。
在一个实施例中,因为硬件维持顺序号并应答所有分组传送,所以使可靠连接服务可靠。硬件和SAN驱动器软件的组合重试任何失败的通信。队列对的处理客户机即使在存在误码、运行下接收以及网络拥塞的情况下,也能获得可靠通信。如果有备选的通路存在于SAN结构中,那么即使在结构交换机、链路或通道适配器端口发生故障的情况下,也能维持可靠通信。
另外,可以利用应答来在SAN结构上可靠地传送数据。应答可以是,或可以不是处理级应答,即验证接收处理已经使用数据的应答。作为选择,应答可以是仅表示数据已经到达其目的地的应答。
实现本发明的分层通信体系结构500的一个实施例通常如图5所示。图5的分层体系结构图显示了数据通信通路的各个层以及层间传递的数据和控制信息的组织结构。
主机通道适配器终端节点协议层(由例如终端节点511所采用的)包括由用户503所定义的上层协议502、传输层504、网络层506、链路层508和物理层510。交换层(由例如交换机513采用的)包括链路层508和物理层510。路由层(由例如路由器515采用)包括网络层506、链路层508和物理层510。
分层体系结构500通常遵循典型通信栈的主要原则。关于终端节点511的协议层,例如,上层协议502采用Verbs来在传输层504创建消息。网络层506在网络子网(516)间路由分组。链路层508在网络子网(518)内路由分组。物理层510将每个位或位组发送到其他设备的物理层。每一层不知道上或下层如何执行它们的功能。
用户503和505表示将其他层用于在终端节点间通信的应用或处理。传输层504提供端对端消息移动。在一个实施例中,传输层提供如上所述的四种传输服务可靠连接服务、可靠数据报服务、不可靠数据报服务和原始数据报服务。网络层506通过一个子网或多个子网执行到目的地终端节点的分组路由。链路层508执行在链路上的流量受控的、纠错的和区分优先级的分组递送。
物理层510执行技术相关的位传输。经链路522、524和526,在物理层间传递位或位组。链路能用印刷电路铜线、铜电缆、光缆或通过其他适当的链路实现。
图6表示现有技术中标准的队列对结构。图6通过点划水平线分成两部分,即线上的主存储器600和线下的主机通道适配器(HCA)602。
主存储器600保持发送队列604和接收队列606,它们组成队列对608。这些队列包括工作队列单元(WQE)。发送队列中的每个WQE描述将在链路上传送的消息的特性和位置。例如,WQE1 610指向消息1611,WQE2 612指向消息2613,WQE3 614指向消息3615,WQE4 616指向消息4 617。此外,用户软件处理保持发送队列尾指针618和接收队列尾指针620。
HCA602包括QP表622,它具有多个条目624(QPTEs a/k/a QP上下文)。每个条目626包括发送队列头指针628、接收队列头指针630、发送队列加法器计数636、接收队列加法器计数638以及其他信息640。
图6所示的标准队列对用在传送和接收消息的过程中。
为传送消息,HCA602首先取出WQE。然后,通过地址转换处理,由WQE中的虚拟地址、密钥和长度信息确定主存储器中的消息的物理地址。接着,取出主存储器600中的消息。最后,构建一个或多个分组以便在链路上传送该消息。
当HCA602在链路上接收分组时,分组头部的一部分包括QP号。适配器将分组中的消息放在具有那个号的QP608的接收队列606上。然后,取出接收队列606的头部处的WQE(WQE1 660)以便确定将该消息放在主存储器600中的何处。通过用于那个QP号的QP表622的条目626中的接收队列头指针630,指向接收队列的头部。HCA602取出WQE(WQE1 660),其包含描述放置该消息的位置的虚拟地址、密钥和长度,HCA执行变换以便确定物理地址,然后,HCA将该消息放在该处。
图7显示了低等待时间队列对的示例性实施例。低等待时间是指用来将消息从一个节点传送到另一个节点所花费的时间。有一些性能关键的应用,诸如高性能计算,其中需要低等待时间。例如,与使用本发明的示例性实施例所花费的时间相比,具有标准QP的I/O适配器的一些建模处理花费约两倍的时间来将消息从一个节点中的存储器传送到另一个节点中的存储器。
图7通过点划水平线分成两部分,即线上的主存储器700和线下的I/O适配器702。主存储器700与处理器、诸如服务器有关。在处理器上运行的用户软件使用由硬件产生器、I/O适配器702产生的数据。数据可以是消息或任何类型的数据。I/O适配器702的例子包括支持RDMA(RDMA-capable)的适配器或RNIC、HCA或任何其他类型的适配器。最好是,I/O适配器702相对靠近主存储器700。
主存储器700保持发送队列704和接收队列706,它们组成队列对708。
适配器702包括QP表712,它具有按QP号716索引的多个条目(QPTEs a/k/a QP上下文)。每个条目718包括发送队列头指针720、接收队列头指针722、消息的发送队列长度724、消息的接收队列长度726、发送队列加法器计数728、接收队列加法器计数730、消息的发送队列号732、消息的接收队列数734、每个完成的多个发送队列消息738、接收队列完成与否740以及其他信息742。最好是,队列表712中的信息在I/O适配器中被高速缓存。
例如,在传送和接收消息的过程中,使用图7所示的示例性低等待时间队列对。为传送消息710,用户应用简单地将710消息直接放在发送队列704上。用户通知I/O适配器702通过将那个号码存储在发送队列加法器计数718中,已经将一个或多个消息710放在发送队列704上。然后,I/O适配器702直接从主存储器710取出由发送队列头指针720参考的消息,并构建分组以便在链路上发送。当适配器702在链路上接收分组时,适配器702简单地直接在接收队列706上移动消息710。因此,等待时间低于图6所示的标准队列对并且更高效。
示例性低等待时间队列对的一个应用是在高性能计算环境中,其中,有在集群中连接的多个节点并且在非常大的任务上执行并行处理。数据和控制消息在节点间流动。图7的示例性实施例将有助于增加这种系统的处理速度。通常,在这种系统中的消息可能是128字节长。
与图6相比,没有用在图7所示的示例性实施例中的WQE。消除WQEs出现了在图7的示例性实施例中解决的四个问题。
第一,适配器702需要在没有任何WQE的情况下,能查找将传送的消息710。这通过将消息710直接放在发送队列704上来解决。
第二,适配器702需要知道接收或将传送的消息710的长度。这通过生成如由LL消息724的SQ长度和LL消息726的RQ长度所述的QP表条目718的特性、即长度来解决。该长度是固定大小,这对适配器702硬件是有利的。消息大小的例子包括128字节、256字节、512字节等等。
第三,软件用户需要成功消息传送的完成通知以便回收队列上的空间。传统上,这种信息是WQE中的可选择参数。期望每次生成用于不只一个消息710的完成队列条目,以便降低带宽和提高性能。因此,每个QP表条目718包括每个完成的多个发送队列消息738。每个完成的发送队列消息数738可以是任何所需数,包括一。
类似地,软件用户需要知道何时接收消息710。这通过全有或全无(all-or-nothing)选项来解决,其是QP表条目718中的接收队列完成与否740字段。在“全有”模式中,对所接收的每个710消息给出完成。在“全无”模式中,对所接收的消息710,永不给出完成。在这种情况下,接收消息710的事实被嵌入在接收队列706的消息710本身中。例如,消息710内的有效位能由软件用户询问以确定何时接收有效消息710。
第四,适配器702需要知道何时将队列对708配置成低等待时间队列对。这通过生成配置选项、即低等待时间来解决。例如,当创建队列对时,软件用户能将队列对配置成低等待时间队列对708或标准队列对608(图6)。
本发明的示例性实施例具有许多优点。本发明的示例性实施例提供了消除与工作队列单元有关的开销的低等待时间队列对并且定义了允许将消息直接放在队列对上所需的机制。能在链路的发送和接收端实现这些节省。仿真结果已经表明使用本发明能使节点到节点的等待时间大约减半。另外,示例性实施例能与不实现那些示例性实施例的其他标准节点互相操作,而没有不利影响(但是不实现当在两个节点上实现时的全部性能好处)。
如上所述,可以以用于实施那些处理的计算机实现的处理和装置的形式,实现本发明的实施例。本发明的实施例也可以用包含有形介质、诸如软盘、CD-ROMs、硬盘驱动器或任何其他计算机可读存储介质中包含的指令的计算机程序代码的形式来实现,其中,当将计算机程序代码加载到计算机中并由其执行时,计算机变为用于实施本发明的装置。本发明也能用计算机程序代码的形式实现,例如,无论该程序代码是否存储在存储介质中、加载到和/或由计算机执行、或在一些传输介质上、诸如电线或电缆、通过光纤或经电磁辐射传送,其中,当将计算机程序代码加载到计算机中并由其执行时,计算机变为用于实施本发明的装置。当在通用微处理器上执行时,计算机程序码段配置微处理器以便创建专用逻辑电路。
尽管已经参考示例性实施例描述了本发明,但本领域的技术人员将理解到可以做出各种改变并且可以用等效物代替其元件,而不背离本发明的范围。此外,各种部件可以用硬件、软件、或固件或其任意组合来实现。最后,可以做出各种改进来使特定情形或材料适用于本发明的教导,而不背离其本质范围。因此,本发明不限于作为用于实现本发明所预期的最佳或唯一方式公开的特定实施例,而是本发明将包括落在附加权利要求书范围内的所有实施例。使用术语第一、第二等不表示任何顺序或重要性,而是使用术语第一、第二等来区别元件。使用术语一、一个等不表示数量的限制,相反表示存在至少一个引用项。
权利要求
1.一种用于提供用于输入/输出-I/O适配器的队列对的系统,包括主存储器,具有发送队列和接收队列;I/O适配器,用于将在链路上接收的消息放在所述接收队列中,以及用于在链路上传送在所述发送队列中保存的消息;以及处理器,与所述主存储器和所述I/O适配器通信,所述处理器执行所述主存储器中的用户处理,所述用户处理存取发送队列和接收队列。
2.如权利要求1所述的系统,其中,所述发送队列和所述接收队列不保持工作队列单元-WQE。
3.如权利要求1所述的系统,其中,所述I/O适配器包括队列对表,所述队列对表包括用于所述发送队列的发送队列特性和用于所述接收队列的接收队列特性。
4.如权利要求3所述的系统,其中,所述发送队列特性包括消息长度。
5.如权利要求3所述的系统,其中,所述接收队列特性包括消息长度。
6.如权利要求3所述的系统,其中,所述队列对表包括用于当消息已经放在所述发送队列上时通知所述I/O适配器的发送队列加法器计数器。
7.如权利要求3所述的系统,其中,所述特性包括每个完成的多个发送队列消息。
8.如权利要求3所述的系统,其中,所述特性包括是否具有接收队列完成。
9.如权利要求1所述的系统,其中,所述用户处理配置特定队列对,以便所述I/O适配器将指向在所述链路上接收的消息的工作队列单元-WQE放在用于那个特定队列对的接收队列中,以及在所述链路上传送由保存在用于那个特定队列对的发送队列中的WQE指向的消息。
10.一种提供用于输入/输出-I/O适配器的队列对的方法,包括由I/O适配器将在链路上接收的消息放在主存储器的接收队列中;由I/O适配器在链路上传送保存在发送队列中的消息,所述发送队列在所述主存储器中;由用户处理存取所述发送队列和所述接收队列,所述用户处理在与所述主存储器和所述I/O适配器通信的处理器上执行。
11.如权利要求10所述的方法,其中,所述发送队列和所述接收队列不保存工作队列单元-WQE。
12.如权利要求10所述的方法,其中,所述I/O适配器包括队列对表,所述队列对表包括用于所述发送队列的发送队列特性和用于所述接收队列的接收队列特性。
13.如权利要求12所述的方法,其中,所述发送队列特性包括消息长度。
14.如权利要求12所述的方法,其中,所述接收队列特性包括消息长度。
15.如权利要求12所述的方法,其中,所述队列对表包括用于当消息已经放在所述发送队列上时,通知所述I/O适配器的发送队列加法器计数器。
16.如权利要求12所述的方法,其中,所述特性包括每个完成的多个发送队列消息。
17.如权利要求12所述的方法,其中,所述特性包括是否具有接收队列完成。
18.如权利要求10所述的方法,进一步包括由所述用户处理配置特定队列对,以便所述I/O适配器将指向在所述链路上接收的消息的工作队列单元-WQE放在用于那个特定队列对的接收队列中,以及在所述链路上传送由保存在用于那个特定队列对的发送队列中的WQE指向的消息。
19.一种计算机可读介质,存储用于执行提供用于输入/输出-I/O适配器的队列对的方法的指令,所述方法包括由I/O适配器将在链路上接收的消息放在主存储器的接收队列中;由I/O适配器在链路上传送保存在发送队列中的消息,所述发送队列在所述主存储器中;由用户处理存取所述发送队列和所述接收队列,所述用户处理在与所述主存储器和所述I/O适配器通信的处理器上执行。
全文摘要
为I/O适配器提供低等待时间队列对(QP),其消除了与工作队列单元(WQEs)有关的开销,并且定义了为允许将消息直接放在队列对上所需的机制。
文档编号H04L12/56GK1815458SQ20051012461
公开日2006年8月9日 申请日期2005年11月9日 优先权日2004年11月10日
发明者戴维·F.·克拉多克, 托马斯·A.·格里格, 凯文·J.·雷利 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1