在PCIe架构中路由I/O扩展请求和响应的制作方法

文档序号:6360468阅读:255来源:国知局
专利名称:在PCIe架构中路由I/O扩展请求和响应的制作方法
技术领域
一般地,本发明涉及在计算环境中的处理器输入/输出(I/O)对接,更具体地,涉及在PCIe总线和交换机架构上I/O扩展请求和响应的路由。
背景技术
PCIe是定义用于I/O适配器和主机系统之间的事务的双方通信协议的组件级互连标准。根据用于在PCIe总线上传输的PCIe标准,将PCIe通信封装在分组中。在I/O适配器处发起并在主机系统处结束的分组称为上行Upbound)分组。在主机系统处发起并在I/O适配器处结束的分组称为下行(downbound)分组。PCIe事务包括请求分组,并且如果需要,在相对方向还包括完成分组(这里还称为“响应分组”)。PCIe拓扑基于成对(例如一个上行链路,一个下行链路)的点到点单向链路以形成PCIe总线。由外围组件互连特定兴 趣组(PCI-SIG)来保持和发布PCIe标准。使用PCIe的一个缺点在于需要与PCIe总线连接的所有I/O适配器在PCIe标准下定义的参数中运行(即,他们是PCIe兼容的I/O适配器)。PCIe标准针对请求和完成,以及针对分组打包和寻址设置严格的限制。在例如丨BIV1 系统架构的一些系统架构中,需要能够使用PCIe标准不支持的事务支持在I/O适配器和主机系统之间的PCIe总线上的通信。一个实例为能够与非PCIe兼容适配器(例如I/O扩展适配器)通信,所述非PCIe兼容适配器典型地支持难以(例如,由于技术问题和/或费用)变换成PCIe标准的遗留系统和应用。因此,当PCIe适合于其与PCIe兼容适配器通信的特定目的时,仍旧需要扩展这个能力,以允许PCIe与非PCIe兼容适配器通信,从而支持遗留系统。

发明内容
第一方面,本发明提供一种系统,用于在标准化的输入/输出(I/O)架构中实现非标准I/O适配器,所述系统包括可通信地耦合至I/O总线的I/O集线器和在I/O适配器地址处的多个I/o适配器,所述I/O集线器包括从多个I/O适配器接收请求的部件,每个请求包括目标接收方的地址和操作码;将请求方的I/o适配器地址与他们对应的目标接收方地址和操作码一起存储的部件;向目标接收方发送所述请求的部件;从应答方地址处的应答方接收响应的部件,所述响应指示完成了请求,所述响应包括目标接收方的地址和应答方操作码;确定所述响应为除了 I/o总线支持的格式之外的格式的部件;将所述响应变换成I/o总线支持的格式的部件;定位已存储的I/O适配器地址的部件,所述已存储的I/O适配器地址具有匹配应答方地址的对应的目标接收方地址和匹配应答方操作码的对应的操作码;和向已存储的I/o适配器地址发送变换后的响应的部件。优选地,所述I/O总线是PCIe总线。优选地,所述请求的格式是I/O扩展格式。优选地,至少一个I/O适配器包括至少一个I/O扩展适配器和至少一个PCIe适配器。优选地,变换后的请求是I/O适配器和请求方不支持的格式。该系统还包括确定所述请求是存储数据的请求的部件;响应于所述确定,在I/O集线器中存储关于请求方的信息的部件,所述信息包括请求方地址;和操作码,所述操作码识别要执行的操作。该系统还包括响应于确定在I/o总线上不支持所述响应建立新请求;和经由I/O总线发送指示在新请求的头部中已完成所述请求的响应。第二方面,提供一种方法,用于在标准化的输入/输出(I/O)架构中实现非标准I/O适配器,所述方法包括在I/O集线器处从多个I/O适配器接收请求,每个请求包括目标接收方的地址和操作码;将请求方的I/o适配器地址与他们对应的目标接收方地址和操作码一起存储;向目标接收方发送所述请求;从应答方地址处的应答方接收响应,所述响应指示完成了请求,所述响应包括目标接收方的地址和应答方操作码;确定所述响应为除了I/o总线支持的格式之外的格式;将所述响应变换成I/o总线支持的格式;定位已存储的I/O适配器地址,所述已存储的I/O适配器地址具有匹配应答方地址的对应的目标接收方地址和匹配应答方操作码的对应的操作码;和向已存储的I/O适配器地址发送变换后的响应。优选地,第二方面的方法特征包括与第一方面的系统的部件的行为对应的方法步骤。
第三方面,提供一种计算机程序,包括在计算机可读介质上存储的计算机程序代码,当加载至计算机系统并在其上执行时,使得所述计算机系统执行根据第二方面的方法的所有步骤。在实现中,提供一种系统,用于在标准化的输入/输出(I/O)架构中实现非标准I/O适配器,所述系统包括可通信地耦合至I/O总线的I/O集线器和在I/O适配器地址处的多个I/o适配器,所述I/O集线器包括用于执行包括以下步骤的方法的逻辑,所述方法包括从多个I/o适配器接收请求,每个请求包括目标接收方的地址和操作码;将请求方的I/O适配器地址与他们对应的目标接收方地址和操作码一起存储;向目标接收方发送所述请求。该方法还包括从应答方地址处的应答方接收响应,所述响应指示完成了请求,所述响应包括目标接收方的地址和应答方操作码;确定所述响应为除了 I/o总线支持的格式之外的格式;将所述响应变换成I/o总线支持的格式;定位已存储的I/O适配器地址,所述已存储的I/O适配器地址具有匹配应答方地址的对应的目标接收方地址和匹配应答方操作码的对应的操作码;和向已存储的I/o适配器地址发送变换后的响应。在实现中,提供一种方法,用于在标准化的输入/输出(I/O)架构中实现非标准I/O适配器,所述方法包括在I/O集线器处从多个I/O适配器接收请求,每个请求包括目标接收方的地址和操作码;将请求方的I/o适配器地址与他们对应的目标接收方地址和操作码一起存储;向目标接收方发送所述请求。该方法还包括从应答方地址处的应答方接收响应,所述响应指示完成了请求,所述响应包括目标接收方的地址和应答方操作码;确定所述响应为除了 I/o总线支持的格式之外的格式;将所述响应变换成I/o总线支持的格式;定位已存储的I/o适配器地址,所述已存储的I/O适配器地址具有匹配应答方地址的对应的目标接收方地址和匹配应答方操作码的对应的操作码;和向已存储的I/o适配器地址发送变换后的响应。在实现中,提供一种计算机程序产品,包括存储指令的非临时性存储介质,当由计算机执行时,在标准化的I/o架构中实现非标准I/O适配器,所述计算机程序产品实现一种方法,所述方法包括在I/o集线器处从多个I/O适配器接收请求,每个请求包括目标接收方的地址和操作码;将请求方的I/o适配器地址与他们对应的目标接收方地址和操作码一起存储;向目标接收方发送所述请求。该方法还包括从应答方地址处的应答方接收响应,所述响应指示完成了请求,所述响应包括目标接收方的地址和应答方操作码;确定所述响应为除了 I/O总线支持的格式之外的格式;将所述响应变换成I/o总线支持的格式;定位已存储的I/o适配器地址,所述已存储的I/O适配器地址具有匹配应答方地址的对应的目标接收方地址和匹配应答方操作码的对应的操作码;和向已存储的I/o适配器地址发送变换后的响应。


现在,仅通过实例,参照附图,将描述本发明的优选实施例,其中图I示出可由示例性实施例实现的计算机系统的框图;图2a示出标准PCIe请求头部的框图;图2b示出标准PCIe完成头部的框图; 图3示出用于下行请求和完成处理的I/O扩展逻辑的示例性实施例的框图;图4示出用于上行请求和完成处理的I/O扩展逻辑的示例性实施例的框图;图5示出用于在PCIe请求中路由下行响应的I/O扩展逻辑的示例性实施例的处
理流程;图6示出从I/O扩展适配器发出的变换后的PCI请求的框图;和图7示出包含I/O扩展响应的变换后的PCI请求头部的示例性实施例的框图。
具体实施例方式本发明的示例性实施例提供了在PCIe架构中用于输入/输出(I/O)扩展请求和响应的处理,而不需PCIe总线和PCIe交换机架构的修改。图I示出可由本发明的示例性实施例实现的计算机系统100。在实施例中,计算机系统100是由国际商业机器公司(IBM )提供的系统Z 服务器。系统Z基于由IBM提供的z/Architectlire 。关于 z/Architecture 的细节在题为 “z/Architecture Principlesof Operation” IBM出版物No. SA22-7832-07,2009年2月的IBM出版物中由所描述。在示例性实施例中,计算机系统100包括经由存储器控制器106与系统存储器104耦合的一个或多个中央处理单元(CPU)102。当CPU 102、PCIe适配器110、或I/O扩展适配器111 (统称为I/O适配器)发出包括用于访问系统存储器104的地址的存储器请求(读或写)时,访问系统存储器104。存储器请求中包括的地址典型地不直接用于访问系统存储器104,因此,他需要转换成直接用于访问系统存储器104的地址。在实施例中,经由地址转换机制(ATM) 108来转换地址。在实施例中,ATM 108使用例如动态地址转换(DAT)将地址从虚拟地址转换成真实或绝对地址。由存储器控制器106接收包括已转换的地址的存储器请求。在实施例中,存储器控制器106保持在系统存储器104中的一致性,并在用于从硬件和软件组件(包括但不限于,CPU 102、PCIe适配器110、和I/O扩展适配器111,统称为I/O适配器)访问系统存储器104的请求之间仲裁。在示例性实施例中,PCIe适配器110执行一个或多个PCIe I/O功能;并且I/O扩展适配器111不是PCIe兼容的,并执行一个或多个非PCIe I/O功能。首先,将从CPU 102之一向PCIe适配器110或I/O扩展适配器111发送的存储器请求(即下行存储器请求)路由至与PCIe总线126 (这里还描述为I/O总线)连接的I/O集线器112 (例如PCIe集线器)。然后,经由一个或多个PCIe交换机114将存储器请求从PCIe总线126发送至PCIe适配器。110之一或I/O扩展适配器111之一。PCIe总线126和PCIe交换机114以本领域已知的标准PCIe格式来通信。在示例性实施例中,I/O集线器112包括一个或多个状态机;和I/O扩展逻辑122,用于在主机系统124和I/O扩展适配器111之间双向解释和发送I/O扩展操作。主机系统124以I/O扩展适配器111支持但PCIe总线126和PCIe交换机114不兼容(即不支持)的格式向I/O扩展适配器111发送请求。I/O扩展逻辑122经由主机总线120从主机系统124接收请求和响应,并将其变换成PCIe总线126支持的格式。如图I所示,I/O扩展逻辑122包括下行扩展逻辑128和上行扩展逻辑130两者,他们显示为单独逻辑框,然而,在这些框中的逻辑的部分或全部可重叠。图I中示出的I/O集线器112还包括根合体116,其从PCIe交换机114之一接收请求和完成。存储器请求包括需要转换的I/O地址,因此,I/O集线器112向地址转换和保护单元(ATP单元)118提供地址。如果需要,ATP单元用于将I/O地址转换成可直接用于访问系统存储器104的地址。经由例如主机总线120,向存储器控制器106提供从PCIe适配器110或I/O扩展适配器111之一发出的包括地址(已转换的,或初始的地址,如果不需要转换)的上行存储器请求。存储器控制器106执行仲裁,并在适当时间向系统存储器104转发具有该地址的存储器请求。在示例性实施例中,通过PCIe适配器110之一、通过I/O扩展适配器111之一、或通过主机系统124发出存储器请求。在示例性实施例中,存在两种存储器请求,发布的(posted)请求和未发布(non-posted)的请求。未发布的请求(例如存储器读)返回称为完成的响应,其包含请求的数据和与处理相关存储器请求的结果的状态相关的信息,以下将更详细描述。发布的事务(例如存储器写)类似于未发布的事务,除了数据为有效载荷,并且发布的事务不返回完成分组。因此,在发布的事务期间发生的任何错误将对于请求方是未知的。发布的和未发布的请求两者基于在他们头部中包含的地址信息流过PCIe架构,以下将更详细描述。当PCI仅定义从PCIe适配器110到根合体116的存储器读和发布的存储器写请求时,系统z使用PCI规范没有定义的若干更高功能请求。所有这些请求是用于锁定协议和比特操作的各种类型的原子请求。一个请求称为测试和设置(Test and Set)。这个请求类似于存储器读那样操作,并且包括锁定字节和存储器地址。目标地址(排列8个字节)的第一字节为0,将锁定字节写入这个第一字节。在这个方案中,直到256字节的目标数据返回至请求方。第二请求称为测试和存储(Test and Store)。这个请求类似于存储器写那样操作,在这个方案中利用直到256字节的有效载荷。这区别于存储器写,因为有效载荷的第一字节用作锁定字节。如果在目标地址中的第一字节为0,则将有效载荷写入目标地址。如果目标地址中的第一字节不为0,则不将有效载荷写入目标地址,并且生成指示第一目标字节不为O的响应。三个其他请求操作存储器中的比特,并且一个还弓丨起中断。所有三个类似于存储器写请求那样操作,并且所有三个包括指示应该设置或重设哪个目标比特的掩码(mask)。这个方案中,掩码为8字节。设置比特请求设置由存储器中目标处的掩码指示的比特。重设比特请求重设由目标存储器处的掩码指示的比特。具有中断请求的设置比特首先设置由存储器中目标处的掩码指示的比特,然后引起到主机处理器的中断。现在,转到图2a和2b,将描述标准PCIe请求和完成头部。典型的PCIe存储器请求包括头部,并且如果该请求为写,则他还包括有效载荷数据。对于读请求的典型的PCIe存储器完成包括报头和有效载荷数据。标准PCIe请求报头200包括多个字段。如图2a的实施例所示,标准64比特地址PCIe请求报头200的前4字节202包括由“R”指示的8个保留比特、描述地址长度(32或64比特)和分组是请求还是完成的格式字段、业务类字段(“TC”)、事务层分组摘要(“TD”)、破坏比特(“EP”)、属性(“Attr”)、地址类型(AT)、4字节增量的长度、请求方ID字段204和标记字段210 (他们在一起包括事务ID)、和最后和第一双字字节启用(最后DW BE和第一 DW BE)。请求方ID字段204包括由计算机系统100的路由机制用于识别请求的来源并向请求方路由响应(如果提供)的信息。地址字段(206和208) 包括一组高阶比特206和一组低阶比特208。地址字段(206和208)在一起,对于下行事务指示将请求指向的PCIe适配器110或I/O扩展适配器111的地址,或对于上行事务指示系统存储器104的系统存储器地址。一般地,完成分组包括报头和有效载荷(未示出)段。图2b示出标准PCIe完成报头250。PCIe完成报头250的第一字节252包括由“R”指示的9个保留比特、描述地址长度(32或64比特)和分组是请求还是完成的格式字段、业务类字段(“TC”)、事务层分组摘要(“TD”)、破坏比特(“EP”)、属性(Attr)、4字节增量的长度、完成方ID 254、完成状态258、字节计数修改260 (“BCM”)、字节计数262、请求方ID字段256和标记字段264 (其包括请求的事务ID)、和指示有效载荷数据的开始点的低阶地址268。完成方ID字段254是执行完成的PCIe适配器110或I/O扩展适配器111的标识。PCIe完成报头250的请求方ID 256和标记264包含PCIe请求报头200的请求方ID 204和标记210,以将存储器完成匹配至他们的对应存储器请求。请求方ID 256用于将完成信息路由回存储器请求的发起方。PCIe完成报头250还包括用于指示是否成功完成请求或在适配器(PCIe适配器110或I/O扩展适配器111)或主机正在处理请求时是否发生错误的完成状态字段258。现在转到图3,将描述图I所示的下行扩展逻辑128的示例性实施例,其用于解释和从主机总线120向PCIe总线126发送I/O扩展操作。I/O扩展操作包括多个存储器请求(这里还称为“下行请求”)和多个响应(这里还称为“下行响应”)。主机总线120将主机系统124连接至图I的I/O集线器112,提供用于将来自主机系统124的请求和响应指向PCIe适配器110和I/O扩展适配器111的传输服务。I/O扩展适配器111以与PCIe总线126使用的PCIe标准格式不兼容(即不支持)的通信格式运行,因此,变换逻辑132在I/O扩展适配器111中执行以能够向PCIe总线126进行通信。变换逻辑132将I/O扩展适配器111中的请求和响应变换为(即重新格式化为)可由PCIe总线126解释的格式。在示例性实施例中,变换逻辑132在I/O扩展适配器111上的逻辑电路中执行。在备选实施例中,变换逻辑132在可通信地耦合至I/O扩展适配器111和PCIe总线126的一个或多个指定硬件电路上执行。在额外的备选实施例中,变换逻辑132作为I/O扩展适配器111中的软件执行。尽管下行请求和下行响应是均由主机系统124发起的操作,但是使用下行扩展逻辑128中的不同处理流程来处理每个操作。在示例性实施例中,将下行请求放置于主机总线120上。在将下行请求放置于主机总线120之后,图I的I/O集线器112收集下行请求,并降低传递至下行扩展逻辑128。下行扩展逻辑128基于存储器请求中包含的信息提供路由和变换服务。使用下行I/O扩展向量304来确定是否正在向图I的I/O扩展适配器111之一发送下行请求。下行I/O扩展向量304从下行请求的头部提取信息,并使用比特选择逻辑306确定下行请求的目的地。如果主机系统124指示了需要响应,缓存抑制(Cl)加载/存储控制308存储与下行请求相关的信息,例如,指示目标I/O扩展适配器111的主机地址的一部分和操作码。在示例性实施例中,通过复用器312,将对于图I的I/O扩展适配器111之一绑定的下行请求变换成PCIe兼容的下行请求。在额外实施例中,Cl加载/存储控制308设置在从I/O集线器112向PCIe总线126发送的存储器请求的头部中的操作码(opcode),这个数据用于在框310处理上行响应,将参照图4更详细描述。在示例性实施例中,响应于完成来自I/O扩展适配器111之一的请求,从主机系统124发起下行响应。将下行响应放置于主机总线120上,并通过I/O集线器112来收集,并传递至下行扩展逻辑128。如图3所示,DMA完成表320包含对于正在等待响应的所有请求 的记录。在示例性实施例中,更新DMA完成表320中的记录,以包括将下行响应从主机系统124转发至I/O扩展适配器111所需的信息。使用响应地址表(RAT) 318来查询下行响应路由信息。存储地址信息,以用于在请求被处理时将其从I/O扩展适配器111向主机总线120发送的请求(这里还称为“上行请求”),以下将更详细描述。在框316,上行处理逻辑在适当的处理步骤处将地址数据发送至RAT 318,以下将参照图4更详细描述。控制逻辑322将操作码(这里还称为“opcode”)增加至下行响应,由I/O扩展适配器111使用其处理下行响应。在示例性实施例中,在I/O集线器中的硬件电路中实现下行扩展逻辑128,然而,可理解,在备选实施例中,可作为集线器中的软件或作为在集线器或其他逻辑电路上执行的硬件和软件的组合来执行下行扩展逻辑,这时本领域已知的。现在转到图4,将描述图I所示的上行扩展逻辑130(1/0扩展逻辑122的一部分)的示例性实施例,其用于解释和从PCIe总线126向主机总线120发送I/O扩展操作。这些I/O扩展操作包括多个存储器请求(这里还称为“上行请求”)和多个响应(这里还称为“上行响应”)。上行请求和上行响应都由I/O扩展适配器111的一个或多个来启动。使用上行I/O扩展向量422来确定是否正在从I/O扩展适配器111发送上行请求。上行I/O扩展向量422从上行请求的头部提取信息,并且使用比特选择逻辑424确定上行请求的来源。一旦确定了上行请求的来源,则通过在框416,向RAT 318传输数据,将地址路由信息存储在图3的RAT 318。使用复用器412从上行请求中图2的PCIe请求头部200提取请求方ID字段204。将请求方ID字段204的总线号传递至RAT 318。将包括总线号、设备号、和功能号的请求方ID字段204从复用器412传递至请求方ID内容可寻址存储器(RID CAM)414。RID CAM 414向设备表412中提供索引。使用设备表402,以基于请求方ID字段204确定在图I的I/O扩展适配器111中特定功能的虚拟地址。从设备表402提取的数据通过复用器410来修改,并且由地区重分配表404使用复用器410的输出,以确定要对其发送请求的主机系统124的正确地址和分区。分组的操作码通过控制逻辑418来处理,并在发送至主机总线120之前变换成适当I/O扩展操作码。在示例性实施例中,如上所述处理上行完成,然而,在框420,当如上所述处理下行请求时,控制逻辑418使用从Cl加载/存储控制308向其发送的数据将上行完成与下行请求匹配。现在转到图5,现在将描述上行I/O扩展的发布的写响应路由处理流程的示例性实施例的详细框图。如上所述,PCIe标准不支持对于发布的写请求的响应,因此需要额外的处理,以将发布的写响应路由至I/O扩展适配器111。在示例性实施例中,上行I/O扩展的发布的写响应路由处理流程在图I的I/O集线器112的I/O扩展逻辑122中执行,并将下行请求(或下行事务)的I/O扩展响应变换成图2a的PCIe请求头部200的格式。在框502,图I的I/O扩展适配器111之一启动例如图6所示的变换后的PCIe请求头部600的格式的请求,用于在图I的主机系统124之一(这里,还称为目标接收方)上执行的操作。PCIe请求头部202的前4字节保持不便,并且按关于图2a所示的相同方式起作用。如图6所示,将图2a的请求方ID字段204替换为两个新字段,请求ID总线号字段602和地区id字段604。请求ID总线号字段602识别在主机系统124上从其中接收请求的I/O扩展适配
器111。地区id字段604用于指示主机系统124的逻辑分区(未示出),这由I/O扩展逻辑122使用以指示请求用于系统存储器104的哪个区域。每个逻辑分区(LPAR)(未示出)具有系统存储器104的其单独区域,称为地区(zone)(未示出)。将图2a的地址字段206的高阶比特替换为向I/O扩展逻辑122指示这个请求为DMA写操作而并非源自或测试和存储操作(他们同样作为发布的存储器写请求从I/O扩展适配器111发送)的字段,以及用于保护未授权的系统存储器访问的密钥字段608。包括地址字段206的高阶比特的剩余段留下不变。地址字段208的低阶比特留下不变,如保留比特216。尽管描述了特定修改,但是可理解,在备选实施例中可修改或增加请求头部中的其他字段或值,同时仍旧保持上述功能。现在返回框504,该请求在I/O集线器112处被接收,并通过I/O扩展逻辑122处理。检查该请求,以确定他是否是从I/o扩展适配器111之一到PCIe适配器110之一。如果该请求是来自PCIe适配器110之一,则在框520,I/O集线器112将该请求转发至图I的主机总线120。否则,如果该请求是来自I/O扩展适配器111之一,则将请求ID总线号字段602用作RAT 318中的索引。RAT 318包含将用于生成向I/O扩展适配器111返回的PCIe响应的PCIe地址的一部分。在RAT 318中,对于每个请求ID有一个项目。RAT 318包含多达256个项目,他们将容纳所有可能的请求ID。每个RAT项目包括图7的PCIe地址706的一部分。这个部分包括槽号708和子槽号710。当在线地带来I/O扩展适配器111时,RAT 318中每个项目通过固件(未示出)来初始化。在框506,从PCI请求提取地区id字段604和写标记字段210,并且使用这些字段形成对主机系统124的请求。在框508,将从RAT318提取的路由信息存储在图3的DMA完成表320。在框510,将请求发送至图I的主机总线120,主机总线120将其发送至主机系统124,并且I/O扩展逻辑122等待要从I/O扩展适配器111返回的响应。在框512,I/O集线器112从主机系统124接收响应,其指示请求的完成状态。I/O扩展逻辑122处理该响应,并将主机响应中的标记匹配于DMA完成表320中存储的突出的路由信息,以确定匹配请求的响应。如果响应是针对来自PCIe适配器110的存储器读请求,则来自主机系统124的响应变为PCI请求。如果响应是针对来自PCIe适配器110的发布的存储器写请求,则丢弃来自主机系统124的响应。如果响应针对来自I/O扩展适配器111的存储器读请求,则来自主机系统124的响应变为PCI定义的完成,然而,来自主机系统124的响应码替换完成方ID (未示出)中的字段。如果响应是针对来自I/O扩展适配器111的发布的存储器写请求,则将来自主机系统124的响应变换为发布的存储器写请求。这个情况下,在框514,使用DMA完成表320中存储的路由信息来查询I/O扩展的目的地信息。来自主机系统124的响应码字段714和操作码字段704指示这个分组是来自发布的存储器写请求的响应。将包括槽号和子槽号的目的地信息嵌入至变换后的PCIe请求头部,例如图7所示的变换后的PCI请求头部700。PCIe请求头部202的前4字节保持不变,并且按关于图2a所示的相同方式起作用。如图7所示,将图2a的请求方ID字段204替换为两个新字段,请求ID总线号字段702和操作码字段704。请求ID总线号字段702是主机根合体(未示出)的总线号。操作码字段704用于指示I/O扩展适配器111正在发出的请求的类型,并由主机系统124之一用于指示他应该执行的操作。将图2a的地址字段206的高阶比特替换为槽号字段708和子槽号710,他们在框514从RAT 318提取,用于指示该响应将发送至哪个I/O扩展适配器。包括地址字段206的高阶比特的剩余段留下不变。地址字段208的低阶比特未使用,并设置为O。响应码字段714通过响应码根据来自主机系统124的响应来设置,并用于指示请求的操作的状态。响应码包括良好状态码和若干不佳状态码,例如无效地址和一般错误。标记字段710根据请求来设置,并用于将响应与请求匹配。将额外过滤字 段718设置为0,以保持排列的256字节边界内的任何有效载荷。图2a的保留比特216保持不变。尽管描述了特定修改,但是可理解,在备选实施例中可修改或增加请求头部中的其他字段或值,同时仍旧保持上述功能。现在转到图5的框518,一旦I/O扩展逻辑122修改了 PCIe请求头部,则在PCIe请求头部600中将响应发送至I/O扩展适配器111。技术效果和优点包括能够与PCIe兼容适配器一起使用在PCIe架构上实现的非PCIe兼容I/O适配器,而不需对PCIe总线和PCIe交换机机制的修改。这里使用的术语仅用于描述特定实施例的目的,并非用于限制示例性实施例。这里,单数形式“一”、“一个”和“所述”旨在还包括复数形式,除非上下文明确指出。还可理解,术语“包括”、“包含”、“含有”和/或“具有”在使用时指定相关特征、整数、步骤、操作、元件和/或组件的存在,并非排除一个或多个其他特征、整数、步骤、操作、元件、组件和/或其组的存在或增加。以下权利要求中的对应结构、材料、动作和所有装置或步骤加功能元件的等同物旨在包括用于执行与特别主张的其他主张元素组合的功能的任意结构、材料、或动作。提供本发明的说明,用于图示和说明的目的,并非用于以公开的形式穷举或限制本发明。本领域技术人员清楚,在不脱离本发明的范围和精神的情况下,可以精细许多修改和改变。选择和描述该实施例,旨在最佳地说明本发明的原理和实践性应用,并且使得本领域技术人员能够理解对于具有适合于特定使用目的的各种修改的各个实施例的发明。本领域技术人员可理解,本发明实施例的方面可实现为系统、方法、或计算机程序产品。由此,本发明实施例的方面可采用完全硬件实施例、完全程序实施例(包括固件、驻留软件、微代码等)或通常在这里都可称为“电路”、“模块”或“系统”的组合程序和软件方面的实施例的形式。此外,本发明实施例可采用在上面实现有计算机可读程序代码的一个或多个计算机可读介质中实现的计算机程序产品的形式。可利用一个或多个计算机可读介质的任意组合。计算机可读介质可以是计算机可读信号介质或计算机可读存储介质。计算机可读存储介质可以是例如,但不限于,电子、磁、光、电磁、红外、或半导体系统、装置、或设备、或上述的任意适当组合。计算机可读存储介质的更多特定实例(非排他性列表)可包括具有一个或多个布线的电连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪速存储器)、光纤、便携式压缩盘只读存储器(CD-ROM)、光存储装置、磁存储装置、或上述的任意适当组合。在这个文档的上下文中,计算机可读存储介质可以是可包含、或存储由指令执行系统、装置或设备使用或与其结合的程序的任意有形介质。计算机可读信号介质可包括上面实现有计算机可读程序代码的传播数据信号,例如在基带中或作为载波的一部分。这样的传播信号可采用各种形式中的任一个,包括但不限于,电磁、光、或其任意适当组合。计算机可读信号介质可以是并非计算机存储介质并且通信、传播或传输由指令执行系统、装置或设备使用或与其结合的程序的任意计算机可读介质。可使用任何适当的介质(包括,但不限于,无线、有线线路、光纤电缆、RF等、或上述的任意适当组合)来传输计算机可读介质上实现的程序代码。
可以一种或多种程序设计语言的任何组合撰写用于执行本发明的操作的计算机程序码,该一种或多种编程语言诸如Java、Smalltalk、C++或其类似者的面向对象程序设计语言及诸如“C”程序设计语言的公知编程程序设计语言,或类似编程语言。程序代码可完全在用户的计算机上执行、部分地在用户的计算机上执行、作为独立软件包执行,部分地在用户的计算机上执行且部分地在远程计算机上执行,或完全在远程计算机或服务器上执行。在后一种情形中,远程计算机可经由任何类型的网络(包括局域网络(LAN)或广域网络(WAN))连接至用户的计算机,或可(例如,使用因特网服务提供者,经由因特网)连接至外部计算机。以下参照方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明实施例的方面。可理解,流程图和/或框图的每个框、以及流程图和/或框图中的框的组合可通过计算机可读介质中实现的计算机程序指令来实现。这些计算机程序指令可提供至通用计算机、专用计算机、或其他可编程数据处理装置以生成机器,从而经由计算机的处理器或其他可编程数据处理装置执行的指令建立用于实现由流程图和/或框图的一个或多个框指定的功能/行为的部件。这些计算机程序指令也可存储于可指引计算机、其他可编程数据处理装置、或其他设备以特定方式运行的计算机可读介质中,从而计算机可读介质中存储的指令生成制品,其包括实现由流程图和/或框图的一个或多个框指定的功能/行为的指令。计算机程序指令也可加载到计算机、其他可编程数据处理装置、或其他设备上,使得一系列操作在计算机、其他可编程装置、或其他设备上执行以生成计算机实现的处理,从而在计算机或其他可编程装置上执行的指令提供用于实现流程图和/或框图的一个或多个框指定的功能/行为的处理。如上所述,实施例可通过用于实践这些处理的计算机实现的处理和装置来实现。在示例性实施例中,本发明在由一个或多个网络元件执行的计算机程序代码中实现。实施例包括在计算机可用介质上的计算机程序产品,其具有作为制品的包含有形介质中实现的计算机程序代码逻辑。用于计算机可用介质的示例性制品可包括软盘、CD-ROM、硬驱动器、通用串行总线(USB)闪速驱动器、或任意其他计算机可读介质,其中,当计算机程序代码逻辑加载至计算机并由其执行时,计算机变为实践本发明的装置。实施例包括计算机程序代码逻辑,例如,无论是存储于存储介质中,加载至计算机和/或由计算机执行,或在某些传输介质上发送(例如在电线或电缆上,通过光纤,或经由电磁辐射),其中当计算机程序代码逻辑加载至计算机和/或由计算机执行时,计算机变为实践本发明的装置。当在通用微处理器上实现时,计算机程序代码逻辑段配置微处理器,以建立特定逻辑电路。附图中的流程图和框图示出根据本发明各个实施例的系统、方法、和计算机程序产品的可能实现的架构、功能、和操作。由此,流程图或框图中的每个框可表示包括用于实现特定逻辑功能的一个或多个可执行指令的模块、段、或代码部分。还应注意,在一些实施例中,在框中提及的功能可并非按照附图中提及的顺序发生。例如,连续示出的两个框可事
实上基本同时执行,或所述框有时候可按相反顺序执行,这取决于涉及的功能。框图和/或流程图的框的每个框、以及框图和/或流程图的框的组合可通过执行特定功能或行为的基于专用硬件系统与专用硬件和计算机指令结合来实现。
权利要求
1.一种系统,用于在标准化的输入/输出(I/o)架构中实现非标准I/O适配器,所述系统包括可通信地耦合至I/o总线的I/O集线器和在I/O适配器地址处的多个I/O适配器,所述I/o集线器包括 从多个I/o适配器接收请求的部件,每个请求包括目标接收方的地址和操作码; 将请求方的I/o适配器地址与他们对应的目标接收方地址和操作码一起存储的部件; 向目标接收方发送所述请求的部件; 从应答方地址处的应答方接收响应的部件,所述响应指示完成了请求,所述响应包括目标接收方的地址和应答方操作码; 确定所述响应为除了 I/o总线支持的格式之外的格式的部件; 将所述响应变换成I/o总线支持的格式的部件; 定位已存储的I/o适配器地址的部件,所述已存储的I/O适配器地址具有匹配应答方地址的对应的目标接收方地址和匹配应答方操作码的对应的操作码;和向已存储的I/o适配器地址发送变换后的响应的部件。
2.如权利要求I所述的系统,其中所述I/o总线是PCIe总线。
3.如权利要求I或2所述的系统,其中所述请求的格式是I/O扩展格式。
4.如任意先前权利要求所述的系统,其中至少一个I/O适配器包括至少一个I/O扩展适配器和至少一个PCIe适配器。
5.如任意先前权利要求所述的系统,其中变换后的请求是I/O适配器和请求方不支持的格式。
6.如权利要求I所述的系统,还包括 确定所述请求是存储数据的请求的部件; 响应于所述确定,在I/o集线器中存储关于请求方的信息的部件,所述信息包括 请求方地址;和 操作码,所述操作码识别要执行的操作。
7.如任意先前权利要求所述的系统,还包括 响应于确定在I/O总线上不支持所述响应建立新请求的部件;和 经由I/o总线发送指示在新请求的头部中已完成所述请求的响应的部件。
8.一种方法,用于在标准化的输入/输出(I/O)架构中实现非标准I/O适配器,所述方法包括 在I/o集线器处从多个I/O适配器接收请求,每个请求包括目标接收方的地址和操作码; 将请求方的I/o适配器地址与他们对应的目标接收方地址和操作码一起存储; 向目标接收方发送所述请求; 从应答方地址处的应答方接收响应,所述响应指示完成了请求,所述响应包括目标接收方的地址和应答方操作码; 确定所述响应为除了 I/o总线支持的格式之外的格式; 将所述响应变换成I/o总线支持的格式; 定位已存储的I/o适配器地址,所述已存储的I/O适配器地址具有匹配应答方地址的对应的目标接收方地址和匹配应答方操作码的对应的操作码;和向已存储的I/O适配器地址发送变换后的响应。
9.如权利要求8所述的方法,其中所述I/O总线是PCIe总线。
10.如权利要求8或9所述的方法,其中所述请求的格式是I/O扩展格式。
11.如权利要求8至10中任一项所述的方法,其中至少一个I/O适配器包括至少一个I/o扩展适配器和至少一个PCIe适配器。
12.如权利要求8至11中任一项所述的方法,其中变换后的请求是I/O适配器和请求方不支持的格式。
13.如权利要求8至12中任一项所述的方法,还包括 确定所述请求是存储数据的请求; 响应于所述确定,在I/o集线器中存储关于请求方的信息,所述信息包括 请求方地址;和 操作码,所述操作码识别要执行的操作。
14.如权利要求8至13中任一项所述的方法,还包括 响应于确定在I/O总线上不支持所述响应建立新请求;和 经由I/O总线发送指示在新请求的头部中已完成所述请求的响应。
15.一种计算机程序,包括在计算机可读介质上存储的计算机程序代码,当加载至计算机系统并在其上执行时,使得所述计算机系统执行根据权利要求8至14中任一项的方法的所有步骤。
全文摘要
一种系统,用于在标准化的输入/输出(I/O)架构中实现非标准I/O适配器,所述系统包括可通信地耦合至I/O总线的I/O集线器和在I/O适配器地址处的多个I/O适配器,所述I/O集线器包括用于执行包括以下步骤的方法的逻辑,所述方法包括从多个I/O适配器接收请求;将请求方的I/O适配器地址与他们对应的目标接收方地址和操作码一起存储;从应答方接收响应,所述响应指示完成了请求;确定所述响应为除了I/O总线支持的格式之外的格式;将所述响应变换成I/O总线支持的格式;定位已存储的I/O适配器地址,所述已存储的I/O适配器地址具有匹配应答方地址的对应的目标接收方地址和匹配应答方操作码的对应的操作码;和向已存储的I/O适配器地址发送所述响应。
文档编号G06F13/40GK102893269SQ201180024158
公开日2013年1月23日 申请日期2011年6月14日 优先权日2010年6月23日
发明者T·格雷格, D·克拉多克, E·N·莱丝 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1