光纤信道输入/输出数据路由系统和方法

文档序号:7852718阅读:249来源:国知局
专利名称:光纤信道输入/输出数据路由系统和方法
技术领域
本公开通常涉及输入/输出处理,特别是涉及便于在输入/输出处理期间信道子系统和网络接口之间的数据传输。
背景技术
输入/输出(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设备。信道子系统可以使用信道命令字(CCW)以在I/O设备和存储器之间传输数据。CCff指定要执行的命令。对于启动某些I/o操作的命令来说,CCW指定与操作有关的存储器区域、每当完成传输到或传输来自该区域时所要采取的动作、以及其它选项。信道子系统和I/o设备可以在支持一个或多个命令控制块(block)传输的传输模式下工作,以在I/o设备和存储器之间传输数据。传输控制字(TCW)指定要执行的一个或多个I/O命令。对于启动某些I/O操作的命令来说,TCW指示与操作有关的存储器区域、每当完成传输到或传输来自该区域时所要采取的处理、以及其它选项。一般来说,主机系统和信道子系统通过主机总线适配器(HBA)连接到链路上的I/O设备。HBA耦合到信道上,信道包括硬件,硬件包含出现于主机系统对HBA的信道微处理器和本地信道存储器。信道硬件使HBA与主机及其存储空间隔离。

发明内容
—个实施例包括一种计算机程序产品,用于在配置用于与控制单元通信的主机系统处执行输入/输出I/O处理操作。计算机程序产品包括由处理电路可读取的并存储由处理电路执行的指令的有形存储介质,以用于执行一种方法,该方法包括在主机系统中的信道子系统处获取与I/O操作相关的信息,所述信道子系统包括具有信道处理器和本地信道存储器的至少一个信道;与网络接口通信的信道子系统被配置为在I/O操作期间在所述信道子系统和所述控制单元之间传输数据;生成至少一个地址控制字ACW,其指定用于在主机系统和控制单元之间传输数据的一个或多个主存储器位置,并在本地信道存储器中存储该至少一个ACW,所述至少一个ACW包括数据校验字生成字段和数据校验字保存字段中的至少其中之一;生成用于由I/O操作所指定的每个数据传输的地址控制结构,并从至少一个信道转发每个地址控制结构到网络接口,每个地址控制结构指定在相应ACW的本地信道存储器中的位置;通过网络接口转发I/O命令消息到至少一个I/O设备;响应I/O命令消息,从包括地址控制结构的网络接口接收数据传输请求;响应包括将被存储在所述主存储器中的数据和至少一个数据校验字的数据传输请求,将所述至少一个数据校验字存储在数据校验字保存字段中,并且执行数据校验以确定数据是否已经损坏,以及响应于确定所述数据没有损坏,将所述数据路由到相应ACW指定的主存储器位置;以及响应包括请求从所述主存储器获取数据的数据传输请求,从由相应ACW指定的主存储器位置获取数据,基于所述数据校验字生成字段生成至少一个数据校验字,将所述至少一个数据校验字附加到所述数据,以及路由所述数据和所述至少一个数据校验字到所述网络接口。另一实施例包括一种用于在配置用于与控制单元通信的主机系统处执行输入/输出I/O处理操作的方法,该方法包括在主机系统中的信道子系统处获取与I/O操作相关的信息,所述信道子系统包括具有信道处理器和本地信道存储器的至少一个信道;与网络接口通信的信道子系统被配置为在I/o操作期间在所述信道子系统和所述控制单元之间传输数据;生成至少一个地址控制字ACW,其指定用于在主机系统和控制单元之间传输数据的一个或多个主存储器位置,并在本地信道存储器中存储该至少一个ACW,所述至少一个ACW包括数据校验字生成字段和数据校验字保存字段中的至少其中之一;生成用于由I/O 操作所指定的每个数据传输的地址控制结构,并从至少一个信道转发每个地址控制结构到网络接口,每个地址控制结构指定在相应ACW的本地信道存储器中的位置;通过网络接口转发I/O命令消息到至少一个I/O设备;响应I/O命令消息,从包括地址控制结构的网络接口接收数据传输请求;响应包括将被存储在所述主存储器中的数据和至少一个数据校验字的数据传输请求,将所述至少一个数据校验字存储在数据校验字保存字段中,并且执行数据校验以确定数据是否已经损坏,以及响应于确定所述数据没有损坏,将所述数据路由到相应ACW指定的主存储器位置;以及响应包括请求从所述主存储器获取数据的数据传输请求,从由相应ACW指定的主存储器位置获取数据,基于所述数据校验字生成字段生成至少一个数据校验字,将所述至少一个数据校验字附加到所述数据,以及路由所述数据和所述至少一个数据校验字到所述网络接口。另一实施例包括一种用于在配置用于与控制单元通信的主机系统处执行输入/输出I/o处理操作的装置,所述主机系统包括信道子系统,所述信道子系统被配置为通过网络接口与控制单元通信,所述信道子系统被配置为执行在主机系统中的信道子系统处获取与I/o操作相关的信息,所述信道子系统包括具有信道处理器和本地信道存储器的至少一个信道;与网络接口通信的信道子系统被配置为在I/o操作期间在所述信道子系统和所述控制单元之间传输数据;生成至少一个地址控制字ACW,其指定用于在主机系统和控制单元之间传输数据的一个或多个主存储器位置,并在本地信道存储器中存储该至少一个ACW,所述至少一个ACW包括数据校验字生成字段和数据校验字保存字段中的至少其中之一;生成用于由I/O操作所指定的每个数据传输的地址控制结构,并从至少一个信道转发每个地址控制结构到网络接口,每个地址控制结构指定在相应ACW的本地信道存储器中的位置;通过网络接口转发I/O命令消息到至少一个I/O设备;响应I/O命令消息,从包括地址控制结构的网络接口接收数据传输请求;响应包括将被存储在所述主存储器中的数据和至少一个数据校验字的数据传输请求,将所述至少一个数据校验字存储在数据校验字保存字段中,并且执行数据校验以确定数据是否已经损坏,以及响应于确定所述数据没有损坏,将所述数据路由到相应ACW指定的主存储器位置;以及响应包括请求从所述主存储器获取数据的数据传输请求,从由相应ACW指定的主存储器位置获取数据,基于所述数据校验字生成字段生成至少一个数据校验字,将所述至少一个数据校验字附加到所述数据,以及路由所述数据和所述至少一个数据校验字到所述网络接口。通过回顾下列附图和详细说明,根据实施例的其它装置、方法、和/或计算机程序产品对于本领域技术人员来说将是或变得显而易见的。意图使包含在本说明书内的所有这种额外的系统、方法、和/或计算机程序产品落在本发明的范围内,并通过附加的权利要求书加以保护。


在以说明书为结论的权利要求书中具体指出并明确要求了视为本发明的主题。从结合附图的下述详细说明中,本发明的上述及其它目的、特点和优点是显而易见的,其中图I描述了纳入和使用本发明的一个或多个方案的I/O处理系统的一个实施例; 图2描绘了通过用于传输模式I/O操作的主机系统所生成的示意性控制块;图3描述了包含与信道子系统连接的主机总线适配器(HBA)的I/O处理系统的现有技术的配置;图4描绘了含有与信道子系统连接的主机总线适配器(HBA)的I/O处理系统的一个实施例;图5描述了用于地址控制结构的地址字段的实施例;图6描绘了在传输模式I/O操作期间在信道和控制单元之间传输的各种消息的例子;图7是一个流程图,描绘了在I/O操作期间通过信道数据路由器和HBA处理数据传输的一个不意性方法;图8描绘了利用图7的数据路由器的信道本地存储器区域的一个实施例;图9是一个框图,描绘了通过图7的数据路由器的逻辑组件的数据流;图10描绘了地址控制字(ACW)的一个实施例;图11描绘了图10的ACW的一个实施例;图12描绘了图10的ACW的一个实施例;图13描绘了图10的ACW的一个实施例;图14描绘了图10的ACW的一个实施例;以及图15描绘了用于地址控制结构的地址字段的一个实施例。通过参考附图的例子,连同优点和特点一起,详细的说明书解释说明了本发明的优选实施例。
具体实施例方式根据本发明的一个方案,促进了输入/输出(I/O)处理。例如,通过在信道子系统的信道中提供数据路由器来促进I/o处理,信道子系统允许主机总线适配器(HBA)连接信道以在I/O操作期间直接访问主机的主存储器,而无需在信道中存储输入或输出数据。与其中通过信道微处理器校验、转换和转发在主机和HBA之间的所有事务的现有技术的信道存储和转发设计相比,这种配置提供了大幅增加的信道I/O开始速率(例如,2倍)以及减少的每个I/O操作的响应时间。
例如,信道装配有数据路由器硬件,配置数据路由器硬件以生成和提供具有一个或多个地址控制结构的HBA,通过其使信道通知HBA被分配给该HBA的本地信道存储器区域。为了允许HBA在主机存储器中对多个地址空间寻址,每个地址控制结构都包括关于在含有主存储器地址的本地信道存储器中位置的信息。在一个实施例中,一个或多个地址控制结构包括一个地址(例如,64位PCIe地址),该地址包含指定对应地址命令字(ACW)的本地信道存储器地址的字段。例如,地址控制结构包括ACW索引字段,该ACW索引字段包含对本地信道存储器中的ACW的连续块的索引。在一个实施例中,提供了一种系统和方法,当在I/O操作期间HBA直接对主存储器寻址时用于校验HBA。例如,ACW提供了数据路由器提供校验具有直接访问主存储器的器件所需水平的数据的能力、以及使出现故障的HBA与主机隔离的能力。例如,地址控制结构和相关的ACW包括在接收到HBA数据传输请求时由数据路由器校验的验证和偏移字段。在一个实施例中,提供了一种系统和方法,用于从HBA和主存储器之间的存储器 请求中插入或删除报头(header)。在现有技术的系统中,信道可以从本地信道存储器中的HBA读取请求中接收和存储报头信息,或生成报头并响应HBA写入请求给输出数据附加报头。本文所描述的实施例,在输入数据直接存储在主存储器中的同时允许信道(通过数据路由器硬件)在本地信道存储器中存储读取请求报头,并且还允许生成和附加报头给通过HBA写入请求已从主存储器中直接访问的输出数据。例如,读取ACW被提供给HBA读取请求以及写入ACW被提供给HBA写入请求。读取ACW被用于存储随输入数据接收的报头信息,以及写入ACW被用于存储用来给输出数据生成报头并附加报头的报头信息。在一个实施例中,提供了一种系统和方法,用于在I/O操作期间在HBA和主存储器之间直接数据传输的过程中插入校验字段进入输出数据并校验输入数据,以提供用于检测所传输的数据是否已损坏的方式。在现有技术的系统中,对于写入(输出)操作来说,信道建立具有已存储在本地信道存储器中的用户输出数据的数据校验字。对于读取(输入)操作来说,信道在本地信道存储器中存储输入数据和数据校验字,并执行数据校验。数据校验字的例子包括循环冗余校验(CRC)字、纵向冗余校验(LRC)字、以及校验和数据。在本文所描述的实施例中,信道数据路由器硬件使用ACW来插入和/或校验数据校验字(在这种情况下,当在主存储器和HBA之间直接传输用户数据、例如输入或输出数据时,从本地信道存储器中存储或生成数据校验字。)。例如,数据路由器使用发送到HBA的地址(例如,划分PCIe地址)以引用包括通过其存储或生成数据校验字的一个或多个位置的ACW。字段、例如在地址中的ACW索引字段用于引用ACW,其包含用于数据校验字和位置的初始值或“起始种子”以保存中间数据校验字和状态。在一个实施例中,如果在I/O操作中使用间接数据寻址,那么ACW还包括相关的传输间接数据地址字(TIDAW),其提供了相关处的主存储器地址、计数和控制信息以在出站数据上插入中间数据校验字和最终数据校验字。对于进站数据来说,如具体说明的话,如果数据被存储或丢弃,TIDAff提供通知硬件的主存储器地址、计数和标识位。在一个实施例中,系统和方法提供了数据路由器来确定在不按顺序接收HBA读取数据时如何将用户数据存储到主存储器的能力。此外,数据路由器具有检查缺失或丢失中间数据的能力。输入和输出数据将按使其传输的相同顺序被存储在主存储器中,以便正确计算数据校验字。在一个实施例中,用于I/o操作的地址控制结构(例如读取或写入地址控制结构)包括偏移字段,其是用于被发送到为了 I/o操作的信道的每个HBA传送请求的增量。对应的ACW包括下一个预期的偏移字段,其与在和地址控制结构关联的每个HBA传输请求中的偏移字段相比较。如果这些字段值不匹配,则例如,接收到的HBA请求在HBA接收队列的底部被重新排队。在一个实施例中,提供了系统和方法,用于在没有初始化HBA的情况下,通过HBA来终止正在执行的多个I/O操作之一(在此期间,HBA直接访问主存储器)。在某些情况下,I/O操作将会遇到主存储器异常,并且如果在主机上正在执行多个I/O操作的话,则希望仅仅终止该I/O操作。本实施例仅仅使引起异常的操作被终止,使得不会初始化HBA(其可能导致通过HBA正在执行的所有I/O操作被终止)。在本实施例中,用于数据传输的ACW可以包括指示是否发生主存储器异常的读取丢弃(Discard)位、写入放弃(Drop)位或固件读取丢弃位。如果所有这些位是零,数据路 由器处理HBA请求进入用于数据传输的主存储器请求。如果从主存储器请求中返回异常,则异常原因被存储进入相关的ACW中,同时写入放弃位或读取丢弃位被设为一。例如,如果I/O操作是写入,那么HBA被发送信号以使接收到获取存储异常的I/O操作中止。如果HBA作出用于I/O操作的新请求,则写入放弃位在ACW中被设为一,其将使HBA被发送信号以使I/O操作再次中止。如果I/O操作是读取操作,那么在主存储器存储请求上接收到存储异常使得ACW中的读取丢弃位被设为一。从HBA接收的用于I/O操作的所有后续数据将被丢弃。图I示例了 I/O处理系统100的一个示意性实施例,I/O处理系统100包括含有数据存储器的主机系统102和/或例如由国际商业机器公司(IBM )制造的Series馨大型机计算机的处理系统。IBM是设在美国纽约州阿蒙克市的国际商业机器公司的注册商标。本文所使用的其它名称可以是国际商业机器公司或其他公司的注册商标、商标或产品名称。主机系统102包括各种处理、存储和通信兀件。在一个实施例中,主机系统102包括一个或多个中央处理单元(CPU) 104、例如主存储器或内存106的存储器组件(例如,zSeries存储器)和/或扩展存储器或内存108 (统称为“主存储器”)。系统102还包括由一个或多个CPU 104执行的一个或多个操作系统(OS) 110。例如,一个CPU 104可以执行作为不同虚拟机实例的Linux 操作系统110和/或ζ/OS 操作系统no。cpu 104是i/o处理系统100的控制中心。其包含用于指令执行、中断动作、计时功能、初始化程序加载、以及其它机器相关的功能的列队和处理设备。CPU 104通过连接113、例如双向或单向总线,耦合到主存储器106和/或扩展存储器108。主机系统102还包括信道子系统114,信道子系统114提供主机系统102和各种I/O设备116之间的通信接口,并可以通过一个或多个控制单元118来控制。I/O设备包括如下设备,例如打印机、磁带单元、直接访问存储设备、显示器、键盘、通信控制器、远程处理设备和基于传感器的设备。信道子系统114引导I/O设备116和主机系统102之间的信息流。这减轻了与I/O设备116直接通信的CPU 104的任务,并允许数据处理与I/O处理同时进行。信道子系统114通过连接120 (例如总线)耦合到CPU 104、主存储器106和/或扩展存储器108。在一个实施例中,信道子系统114通过各自的“信道通路”122与每个I/O设备116连接,信道通路122通过例如串行或并行链路的连接124使信道子系统114与每个控制单元118连接。控制单元118可以通过至少一个信道通路122连接到信道子系统114,并且I/O设备116可以连接到至少一个控制单元118。总之,单个的I/O设备116可由多个信道通路访问。信道通路可以使用各种类型的连接,例如并行接口、串行I/O接口和FICON I/O接口。例如,串行信道通路可以包括通过例如光纤信道架构中的动态开关126连接到控制单元118的一个或多个光纤,而并行接口可以包括多个电导体。ANSI标准文献“FibreChannel Single-Byte Command Code Sets Mapping Protocol-4(FC-SB-4)”, Tll 项目2122-D,修订版3. 00,2000年9月22日,介绍了 FICON I/O接口,此处引入其全文供参考。在一个实施例中,信道子系统114包括一个或多个独立信道128,一个或多个独立信道128的每一个通过一个或多个信道通路122分别连接一个或多个控制单元118和/或I/O设备116。每个信道128包括例如本地信道微处理器130的处理电子设备和连接并可由本地信道微处理器130访问的本地信道存储器132。本地信道存储器132可以包括例如信道程序指示、信道通路标识符、设备数量、设备计数、状态指示的信息,以及关于等待或正在执行的通路可用性和功能的信息。
一个或多个子信道还位于每个信道128内。每个子信道是位于信道存储器132内的数据结构,其提供了关于相关的I/O设备116的信息并且其附着到信道子系统114上。子信道还提供了关于I/O操作的信息以及包含相关的I/O设备116的其它功能。子信道是通过其使信道子系统114提供关于相关的I/O设备116的信息给CPU 104的装置。连接多个控制单元122或多个I/O设备116的信道128可以具有多个子信道,每一个子信道专用于一个I/O设备116。在一个实施例中,通过信道子系统所提供的子信道的数量与相关的I/O设备116的信道通路122的数量无关。例如,通过可选信道通路122可访问的设备116仍然用单个子信道表示。每个控制单元118提供了逻辑以操作并控制一个或多个I/O设备116,并且通过使用共用设备使每个I/o设备116的特性适应于信道128所提供的链路接口。共用设备提供用于I/O操作的执行、涉及I/O设备116和控制单元118的状态的指示、在信道通路122上的数据传输计时的控制以及一定程度的I/O设备控制。控制单元118可以分开安置,或可以与I/O设备、信道子系统或CPU在物理上和逻辑上集成。I/O操作被描述为涉及主机系统102和I/O设备116之间传输数据的任何操作。如本文中所述,I/o操作包括在信道子系统114和设备116之间的通信(在一个实施例中,通过控制单元118 ),其中单个命令(例如,信道命令字或CCW)、含有多个命令的单个命令消息(例如,输送传输命令控制块(TCCB)的传输命令信息单兀)、或多个连锁命令(例如,多个CCW)被从信道子系统114发送到设备。I/O操作还可以包括响应接收和/或执行命令或连锁命令、由设备116或相关的控制单元118生成的一个或多个响应消息。在一个实施例中,通过执行由OS 110生成的I/O指令用设备116使I/O操作初始化,OS 110指示与设备116相关的子信道。通过发送参数给信道子信道由CPU 104在主机系统中执行这种指令,信道子信道请求信道子系统114通过一些信道128在I/O操作中执行各种功能。例如,CPU 104通过传递参数给目标子信道来执行“开始子信道”指令,目标子信道请求信道子系统114用与子信道有关的I/O设备116执行开始功能。信道子系统114通过使用子信道处的信息执行开始功能,包括在“开始子信道”指令执行期间传递的信息,以发现对设备116可访问的信道通路,并在一旦选中信道通路时执行I/O操作。当通过CPU 104执行例如“开始子信道”指令这样的指令时,信道128开始进行I/O操作。在一个实施例中,信道子系统114在例如高性能FICON (HPF)这样的光纤信道协议下操作,用于在信道子系统114与设备116和/或控制单元118之间通信。“Fibre ChannelSingle-Byte Command Code Sets Mapping Protocol-4 (FC-SB-4) v, Tll 项目 2122 _D,修订版3. 00,2000年9月22日,进一步说明了 FICON和HPF及其相位(phase),此处引入其全文供参考。在一个实施例中,“开始子信道”指令的执行传递操作请求块(ORB)的内容到信道子系统114。ORB指定包括一个或多个命令字(例如,信道命令字或下面进一步说明的传输命令字)的地址的信道程序。具有两种模式的子信道操作。在一个实施例中,主机系统102在命令模式下操作并指定按信道命令字(CCW)形式的命令字。在另一个实施例中,主机系统在传输模式下操作并指定按传输命令字(TCW)形式的命令字。 作为执行指定为TCW信道程序的“开始子信道”指令的结果,当安装FCX (光纤信道扩展)设备以及在子信道处设置启动功能时,子信道可以进入传输模式。子信道保持在传输模式,直到在子信道重新设置启动功能。在所有其它时间,子信道处于命令模式。在命令模式中,信道执行CCW信道程序,其包括单个信道命令字或控制具体系列信道操作的顺序执行的一系列信道命令字。控制单元通过I/o设备解码、接受及执行CCW命令来执行CCW I/O操作。排列用于顺序执行的一个或多个CCW形成了 CCW信道程序并分别被执行为一个或多个I/o操作。光纤信道扩展(FCX)设备是提供用于形成传输模式信道程序的光学设备,传输模式信道程序由指示传输命令控制块(TCCB)和传输状态块(TSB)的传输控制字(TCW)构成。TCCB包括传输命令区(TCA),传输命令区(TCA)含有按设备命令字(DCW)形式的一个或多个(例如,高至30)1/0命令的列表。TCW及其TCCB可以指定读取或写入操作。在一个实施例中,FCX双向数据传输设备可以安装在支持传输模式操作的系统中,如果连接的设备116和控制单元118支持双向数据传输的话,该系统允许主机系统102在单个传输模式I/O操作下指定输入和输出数据两者的传输。当控制单元118识别出双向数据传输时,TCW及其TCCB可以根据设备来指定读取和写入数据传输。在传输模式中,单个传输命令字(TCW)指定TCCB的存储器中的位置(以及一个或多个数据区的存储器106中的位置),TCCB取代命令模式中各自独立的CCW在单个消息中被发送。控制单元118通过解码、接受及执行TCCB和包含在其中的独立的DCW来执行传输模式I/O操作。如果ORB指定TCW信道程序,那么信道子系统114利用在所指定的TCW中的信息来传输TCCB到控制单元118。在TCCB被传输到控制单元118并且仅具有对控制单元118和相关I/O设备116的意义之后,通过信道子系统114忽略TCCB的内容。在一个示意性实施例中,控制单元118响应执行信道程序生成了响应消息。例如,在限制数量的信道场景的情况下,控制单元118还可以在不需要执行信道程序的情况下生成响应消息,以通知信道子系统114将不执行信道程序。控制单元118可以包括多个部件以支持在I/O通信适配器和I/O设备之间的通信,以及支持信道程序的执行。例如,除一个或多个队列、计时器和寄存器以外,控制单元118还可以包括解析和处理消息的控制逻辑,以便于通信和状态监测。
图2示出了示意性控制块,其是在OS软件执行指令(例如,“开始子信道”指令)之前借由软件在主存储器中设置的,该指令传递开始子信道消息给用于HPF I/O操作的信道子系统114中的I/O处理器(IOP)。这些控制块的架构和I/O处理系统100的一个或多个上述组件被进一步描述在 “ ΙΒΛ1 Ζ/Architecture Principles of Operation”,公开号SA22-7832-8,第9版,2010年8月,这里引入其全文供参考。如图2中所示,开始子信道消息140被传递给信道子系统114,其指示子信道142、TCW144和传输状态块(TSB)146。TCW包含TCCB 148的主存储器中的地址、指示用于I/O操作的读取数据的位置150、和/或指示用于I/O操作的写入数据的位置152。例如,通过传输间接数据地址列表(TIDAL) 153可以直接访问或间接访问TCCB148与位置150和152。图3示例了在主机系统102、信道子系统114和控制单元118之间的通信链路的现有技术配置的一个实施例。信道128通过信道微处理器130与主CPU通信,并配置为在 主存储器和本地信道存储器132之间传输数据,例如,用于恢复TCCB 148或TCCB 148的组件。网络或例如主机总线适配器(HBA) 154的链路接口通过例如PCIe总线155与信道128连接。HBA 154例如通过控制单元HBA 156协调信道128和控制单元118之间的信息流。在该实施例中,HBA 154与信道128通信并仅仅访问本地信道存储器132。从而,HBA 154与主机和主存储器隔离。被发送到或来自HBA 154的数据被存储在或获取自本地信道存储器132。这种隔离被用于错误校验在主存储器和控制单元118之间传输的数据。用于该隔离的性能补偿是,所有用户数据流经作为存储器的该隔离硬件并通过本地信道存储器132转发。图4示例了通信链路的一个实施例,在信道的本地存储器132中不必存储输入或输出数据的情况下,通信链路允许用于错误校验的隔离而同时允许HBA 154直接访问主存储器。与图3的配置相比,信道128包括微处理器以及数据路由器160。在一个实施例中,数据路由器160是支持FC-SB-4(也称为HPF)协议的高性能光纤信道数据路由器(HPF-DR)。在不需要在本地信道存储器132中存储每次I/O操作所请求的输入或输出数据(例如,用户数据)的情况下,数据路由器160允许HBA 154直接访问主存储器。在一个实施例中,数据路由器160包括数据路由器硬件162和本地信道存储器区域164,其中为数据路由器建立状态信息以处理HBA数据传输请求。如此处说明的“HBA数据传输请求”包括从HBA 154至信道128的任何通信,其请求从主存储器至控制单元118传输输出数据(即,写入或获取数据)(例如,“HBA写入请求”或“HBA获取请求”)或请求从控制单元118至主存储器传输输入数据(即,读取或存储数据)(例如,“HBA读取请求”或“HBA存储请求”。此外,在一个实施例中,本地信道存储器132包括分配给HBA 154并由HBA 154可访问的区域166 (例如,在4条旋转线之前),这是用于处理本地信道请求和操作。在从主机接收I/O指令和ORB之后,并在执行I/O操作以及发送I/O操作给HBA154之前,信道128建立一个或多个地址控制结构和相关的地址控制字(ACW),其被用于生成主存储器请求给主机102并允许HBA 154直接访问主存储器。ACW和数据控制结构还提供了一种方法,通过该方法,数据路由器160可以附加报头到由HBA154发送的HBA数据传输请求或或存储来自由HBA 154发送的HBA数据传输请求的报头,同时还提供了一种用于校验HBA请求错误的方法,而不用在本地信道存储器132中存储输入或输出数据。例如,在开始子信道消息140被传递到信道128 (例如,通过信道子系统114中的I/O处理器)之后,运转固件的信道微处理器130接收开始子信道消息140以读取和/或写入数据自和到设备116以及进入和离开主存储器。信道128使用开始子信道消息140中的信息以获取子信道142。在子信道142中是使用信道固件来获取TCW 144的主存储器地址。信道128使用来自开始子信道消息140、子信道142和TCW 144中的信息以建立各种ACW。每个ACW是控制块,使用数据路由器160以路由HBA数据传输请求到TCW 144中指定的主存储器地址。可以建立多个ACW,包括含有至少一个主存储器地址来存储输入数据的读取命令的一个ACW、含有至少一个主存储器地址来存储输出数据的写入命令的一个ACW、用于组装例如含有TCCB 148的传输命令信息单元(IU)的I/O命令消息的ACW、以及用于接收和存储状态信息的ACW。随着建立ACW,信道128建立了用于来自TCW 144中的信息的每个ACW的“地址控制结构”,并在HBA 154被通知I/O操作之前,通过本地信道存储器132传递地址控制结构给HBA 154 (例如,通过本地信道存储器HBA工作队列)。多个地址控制结构被传递给HBA154并由HBA 154使用来获取或存储信息进入或离开主存储器。地址控制结构允许HBA 154访 问多个地址空间,同时还允许数据路由器硬件校验所存储的或获取的数据的错误。例如,一个地址控制结构用于获取构成命令消息(例如,传输命令IU)的信息,一个用于存储在完成I/O操作时来自控制单元响应(例如,传输状态IU)的结束状态,以及可以通过HBA 154使用多个“数据地址控制结构”来传输输入或输出数据。例如,一个“读取地址控制结构”用于从设备116至主存储器传输的每8兆字节,以及一个“写入地址控制结构”用于从主存储器请求的每8兆字节。如果I/O操作仅在一个方向传输数据,那么仅需要读取或写入地址控制结构。每个地址控制结构包括发送到HBA 154的地址,其由HBA 154使用以作出请求到信道128。地址被HBA 154看作是单个地址,但用于指示在主存储器中的多个地址空间。示意性地址控制结构分别包括64位PCIe地址、数据字节计数、方向位和控制信息。例如,每个地址控制结构包括要被传输的数据量的数据字节计数,通过其地址控制结构和控制位通知HBA 154要传输的数据方向以及需要多少地址控制结构来传输数据。图5示例了示意性地址控制结构170的地址字段172的实施例。在本实施例中,地址字段172包括64位PCIe地址,但不局限于此。地址字段172包括控制(CTL)字段174(例如,地址172的字节2),其指示是否路由HBA请求到本地信道存储器以通过信道128内部解决,或者是否通过数据路由器160来处理和路由HBA请求到主存储器。例如,如果地址字段172包括设为零的CTL字段174,数据路由器160路由请求到本地信道存储器区域166。然而,如果CTL字段174设为所选值(例如,0x02),配置地址172以允许HBA 154通过数据路由器硬件对主存储器寻址。在该配置中,地址172 (如图5的第3行中所示)被划分成四个字段:ACW索引字段176 (例如,字节O和I)、CTL字段174 (例如,字节2)、验证字段178(例如,字节3和4)、以及偏移字段180 (例如,字节5-7)。在一个实施例中,ACW索引字段176是进入在本地信道存储器区域164中的ACW的连续块的索引,由数据路由器硬件来使用以为用于相关HBA请求和地址控制结构的ACW定位。验证字段178 (例如,16位字段)被设为用于在本地信道存储器区域164中所限定的每个ACW的唯一值。在信道128设置用于I/O操作的ACW和地址控制结构170之后,信道128通知HBA154待处理的I/O操作并发送需要用于执行I/O操作的相应地址控制结构170。
图6示例了在I/O操作期间在信道128和控制单元118之间所传输的各种消息。在信道微处理器130已建立具有请求信息的数据路由器160之后,HBA 154获取并存储各种信息单元(IU)。传输命令IU182包括TCCB 148和报头信息,并在信道通路122上发送给控制单元118。在执行I/O操作期间,传输包含读取传输数据IU 184和/或写入传输数据IU 186的数据IU以发送输入和/或输出数据。在一个实施例中,每个数据IU根据其大小可以被发送为一个或多个帧(frame) 188。帧188是在链路或信道通路上在链路打包器(wrapper)内被传输的数据单元或包,并且具有取决于链路架构的最大尺寸。在I/O操作结束时,从控制单元118中发送传输状态IU 190,其指示操作的传输状态(例如,完成或中止)。通常,传输命令IU 182和传输状态IU190分别在具有一个巾贞的链路上传输。在一个实施例中,IU的每个帧需要来自HBA 154的至少一个HBA请求(例如,PCIe请求)。在一个实施例中,IU包括位于IU末端或紧邻IU末端的一个或多个数据校验字192 (例如,CRC)。例如,用于传输命令IU 182的数据校验字192是来自IU末端的I或2个字。写入传输数据IU 182可以具有多个中间数据校验字192,分别校验一部分写入传输数据IU182。传输状态IU 190具有用于IU报头的数据校验字192和用于传输状态的数据 校验字192。示出了图7、8和9以示例执行I/O操作的方法200的实施例。该方法包括一个或多个阶段201-206。在一个实施例中,该方法包括按所述顺序执行全部步骤201-206。然而,可以省略某些步骤、可以添加步骤、或改变步骤的顺序。在第一步骤201中,信道128从主CPU 104中接收指令消息140和0RB,并获取子信道142和随后的TCW 144以及其它所需数据。在第二阶段202中,信道128或数据路由器160生成地址控制结构170和对应的ACff 210 (如图8中所示)。示意性控制结构170和ACW 210 (其参考下面的图10-15在下文中进一步说明)包括对应于传输命令IU 182的传输命令ACW和传输命令地址控制结构、对应于一个或多个读取传输数据IU 184或帧的传输读取数据ACW和一个或多个传输读取数据地址控制结构、对应于一个或多个写入传输数据IU186或帧的传输写入数据ACW和一个或多个传输写入数据地址控制结构、以及对应于传输状态IU 190的传输状态ACW和传输终止状态地址控制结构。数据路由器160传输地址控制结构170到HBA154。ACff 210的列表212组装在本地信道存储器区域164中。图8示例了路由器160的配置,其包括在本地地址存储器区域164中所存储的ACW210。在一个实施例中,存储器区域164是位于本地信道存储器132中的选定边界(例如,ITb边界)上的HBA地址空间,本地信道存储器132安置用于对主存储器寻址的ACW 210的列表212。在一个实施例中,列表212是连续ACW的列表。ACW源寄存器214是ACW 210的列表212的起始地址。来自数据控制结构中的ACW索引字段176的ACW索引176被加入到ACW源214中以生成本地地址,在本地地址中对应的ACW驻留于本地信道存储器区域164中。ACff界限寄存器216是ACW 210的列表212的结束地址。当ACW索引176被加入到ACW源以获取ACW时,结果不能大于ACW界限减去ACW大小。在第三阶段203中,传输命令IU 182组装在HBA 154处用于传输到控制单元118。通过发送HBA获取请求到数据路由器160,HBA154使用传输命令地址控制结构来发起从主存储器中获取TCCB 148。在一个实施例中,利用PCI快速(PCIe)协议控制发送到和来自HBA的请求,尽管也可以使用其它协议。在第四阶段204中,HBA获取请求到达数据路由器160,其通过把发送自HBA 154的位转换成数据包的接收逻辑220接收、并通过基于每个包中的HBA地址172的路由逻辑222路由。例如,具有指定本地存储器区域的地址的所有HBA请求(例如,低于240)被路由到信道微处理器224和本地信道存储器166,并内部处理为本地信道存储器请求。在一个实施例中,任何时候,PCIe总线处于64位寻址模式并且CTL字段174是0x00,或者当PCIe操作处于32位模式时,BHA请求被路由到本地信道存储器。这允许HBA 154直接访问HBA 154有对其访问权限的本地信道存储器区域。HBA 154没有给出直接访问其中存在ACW 210的本地信道存储器区域164的权限。具有在存储器区164中的地址的所有请求(例如,24°以上)被路由到任一获取阵列队列226或存储阵列队列228以通过数据路由器160来处理。从接收逻辑220所接收的整 个数据包(报头和数据)被保存为任一这两个阵列中的条目(entry)。获取阵列队列226和存储阵列队列228分别位于数据路由器获取硬件230和数据路由器存储硬件232中,其把来自这些阵列中的HBA请求处理成被传输到主存储器的主存储器请求。在第五阶段205中,处理逻辑234使在本地信道存储器164中的信道请求和在队列226和228中的HBA请求列队并区分优先次序,以及把请求包处理成主存储器包。处理逻辑234得到HBA请求包中的HBA地址的ACW索引字段176 (来自传输命令地址数据控制结构),以索引到在ACW源寄存器214处起始的ACW的ACW 210集的列表中,由此获取与HBA地址170对应的ACW。在本例子中,理想的ACW是传输命令ACW。例如,处理逻辑234取得ACW索引值,并把其添加到ACW源寄存器214中,以从其获取ACW处生成局部信道存储器地址。基于ACW中的存储器地址字段,处理逻辑234生成主存储器请求,其(例如,通过主存储器界面238)从传输逻辑236发送到主存储器,主存储器指示从其传输数据或存储数据的存储器地址。来自ACW的额外信息,包括区域ID、密钥数据长度,还可以用于生成主存储器请求。在本实施例中,在ACW存储器地址字段中的地址是TCCB 148的位置或多个位置。如果在ACW中不能启动间接数据寻址,那么主存储器地址是整个TCCB 148的地址。如果在ACff中能启动间接数据寻址,那么数据路由器160从主存储器地址中获取传输间接数据地址字(TIDAW),并随后使用TIDAW中的地址作为主存储器地址。在一个实施例中,如果ACW中的值表明正使用间接数据地址(例如,如图10中所示的HPF-DR控制258位17为0),则指定TIDAW。TIDAW包括地址和计数二者。为了在TIDAW中指定的数据字节的数量,在TIDAW中的TIDAW数据地址字段用于对于主存储器位置寻址。示意性TIDAW包括四个字,包括具有标识字段的第一字、指定要用该TIDAW传输的字节的数量的计数字段、TIDAff数据地址高字和TIDAW数据地址低字。下列标识可以包含在标识字段内位O-最后的TIDAW :该标识位设为一,通知数据路由器硬件这是在可用于该操作的该TIDAL中的最后的TIDAW。如果当前TIDAW标识位O “最后的TIDAW”不是有效的,然后在当前TIDAW中的字节计数转换为零并且ACW工作计数还没有转换为零时,数据路由器硬件将利用TIDAL中的下一个TIDAW来继续数据传输以对主存储器寻址。
位I-读取跳过该标识位设为一,通知数据路由器硬件丢弃该TIDAW的每一字节计数字段的从设备接收的数据。然而,随着丢弃数据,继续计算数据校验字。如果I/O操作是写入,那么取消该标识位。位2-数据传输中断该位导致数据路由器硬件在HPF-DR响应字254中设置TIDAW格式校验位10、并且在通过HPF-DR硬件试图使用该TIDAW时终止I/O操作。位3-T-TIC :该标识位设为一,通知数据路由器硬件在该TIDAW中的地址不用于数据而是用于起始新TIDAL的主存储器地址,新TIDAL必须从主存储器中获取以恢复要用于该I/O操作的下一个TIDAW ;以及位4-插入填充(PAD)以及数据校验字该标识位设为一,通知数据路由器硬件插入填充字节直到下一个字边界,如果不在字边界上,那么插入所计算的数据校验字的当前值。在已传输由该TIDAW指定的数据字节计数之后,插入填充字节(若有的话)和数据校验字,并且标识位O、最后的TIDAW不设为一。当前的ACW数据校验字随后再种回ACW中的数 据校验字种子。在第六阶段206中,数据路由器160通过主存储器接收逻辑240接收主存储器响应,在本实施例中,主存储器响应包括TCCB 148。在其它实施例中,根据主存储器请求,主存储器响应可以包括用于写入命令的输出数据或用于读取命令的状态消息。路由逻辑242把主存储器响应路由到数据缓冲器和逻辑246。数据缓冲器和逻辑246用响应包中的TCCB148从传输命令ACW中(S卩,从IU报头字段中)合并IU报头信息,响应包可以通过与HBA 154接口的出站逻辑244返回到HBA 154。对于包括多个输出数据请求的I/O操作来说,数据缓冲器246可以从多个请求中累积数据以生成完整的响应包返回到HBA154。如上所述,在执行I/O操作期间,传输数据IU可以在HBA 154和控制单元118之间传输。为执行写入命令,HBA 154请求信息以组装写入传输数据IU 186,包括来自主存储器的输出数据(用写入ACW的存储器地址字段指定其地址)以及从写入ACW中恢复的IU报头信息。为执行读取命令,HBA把来自读取传输数据IU 184的输入数据存储到主存储器地址,主存储器地址在读取ACW的存储器地址字段中被指定并把来自读取传输数据IU 184的IU报头信息存储到读取ACl例如,HBA 154接收读取传输数据IU 184并生成一个或多个HBA读取请求,一个或多个HBA读取请求被发送到信道128以存储输入数据进入主存储器。每个读取请求包括来自对应的读取数据地址控制结构的地址字段172。通过接收逻辑220接收HBA读取请求,并且路由逻辑222把HBA读取请求路由到存储阵列队列228。地址字段172的ACW索引字段176用于索引上述ACW210的列表,并获取读取ACW。读取传输数据IU报头信息存储在读取数据ACW中,并且主存储器读取请求被发送到主存储器以请求由读取数据ACW指定的地址中的输入数据的存储。在一个实施例中,可以得到多个主存储器读取请求来存储一个HBA读取请求。例如,如果每个主存储器读取请求是256字节以及HBA读取请求是2048字节,那么得到八个主存储器读取请求来存储一个HBA读取请求。在本实施例中,主存储器读取响应从主存储器接口 238返回到数据路由器硬件,其使每个响应关联到做出的每个读取请求。在另一个例子中,HBA 154可以发送写入传输数据IU 186到控制单元118。在一个实施例中,除非传输准备被禁止,在发送每个写入传输数据IU 186之前,信道128就会请求从控制单元118中发送传输准备IU。控制单元118可以通过发送另外的传输准备IU来请求另外的数据,直到它已请求了由TCCB 148指定的全部数据。如果传输准备被禁止,这允许HBA 154发送数据的IU到设备116,而无需设备116请求数据IU,然后HBA 154发起HBA写入请求到数据路由器160。HBA 154使用来自每个写入数据地址控制结构的地址字段172,来发送每个HBA写入请求以发起从主存储器中获取数据。通过路由逻辑222接收每个HBA写入请求,这把每个HBA写入请求路由到获取阵列队列226。来自地址字段172的ACW索引字段用于从本地信道存储器区域164中获取写入数据ACW。一个或多个主存储器写入请求被用于请求输出数据,其在主存储器写入响应中从主存储器中接收并通过连接HBA154的路由逻辑242和数据缓冲器246被发送到HBA 154。如果需要多个主存储器写入请求来处理一个HBA写入请求,则参考上述读取请求所描述的那样来处理每个主存储器写入响应。在一个实施例中,当设备116通过发送传输状态IU 190给HBA154来结束I/O操作时,HBA 154使用传输结束状态地址控制结构来发送HBA存储请求以发起存储结束状态 进入主存储器。数据路由器160利用HBA存储请求来获取传输状态ACW,并在状态ACW的IU报头区域中存储结束状态报头,以及主存储器存储请求被发送到主存储器以在状态ACW中指定的地址中存储扩展状态。在HBA 154已完成I/O操作之后,HBA 154生成具有在本地信道存储器132中被路由和存储的完成状态的HBA请求,并且I/O操作的控制返回到信道128固件。当HBA把I/O操作返回到信道微处理器固件时,在获取阵列队列中没有排列的获取请求,这是因为当所请求的数据返回到HBA 154时,HBA 154知道它们什么时候完成。然而,可以在存储阵列队列228中具有仍然排列的一个或多个主存储器存储请求,这是因为HBA 154没有收到用于HBA存储请求(多个)的完成响应。因此,在一个实施例中,当HBA 154把I/O操作例如在固件I/O操作完成队列上返回到信道微处理器时,微处理器固件可以执行在传输读取ACW和传输状态ACW中的位的下列测试对于传输状态ACW来说,如果ACW先前没有在状态2的话,固件等待ACW状态字段以移动到2 (下面进一步说明ACW状态字段)。当固件看到该ACW在状态2时,那么固件检查IU报头字段以确定哪个设备与ACW工作。现在,在检查或更改在分配给I/O操作的四个ACW的任一个中的任何字段之前,通过监视在每个ACW中有效请求计数=零、位设为一,对于读取ACW和状态ACW来说,固件等待有效请求计数递减为零。一旦有效请求计数对于ACW 二者来说都是零,那么固件检查传输状态ACW中的传输状态IU报头,并随后在子信道142中存储结束I/O状态。固件随后生成对信道子系统114的I/O处理器(IOP)的中断,通知IOP已完成了子信道的I/O操作。IOP然后生成中断返回到OS 110,其通知OS 110已完成了 I/O操作。图10示出了地址控制字(ACW)210的一个实施例,地址控制字(ACW)210通过在本地信道存储器中的固件来建立并由数据路由器160使用以在HBA存储器请求和主存储器请求之间转换。在处理每个主存储器请求之后,数据路由器硬件更新ACW210中的信息,以便利用该ACW210准备下一个HBA请求。一个示意性ACW210包括下列字段。ACW状态字段250 (例如,字O、字节O)提供了 ACW的状态。例如,当建立ACW用于I/O操作时,用固件设置位O (ACW有效位)为一,指示ACW是有效ACW。状态在例如位4_7中被限定并包括下列代码
O-空闲/读取设置。固件设置这种在已建立ACW来接收数据时的状态;I-写入设置。固件设置这种在已建立ACW来传输数据时的状态;2-ACff IU报头区域安全。当整个IU报头传送到或来自HBA以用于获取或存储时,数据路由器硬件使ACW状态从状态O、I或3变为状态2。当从链路接收数据时,在ACW状态250设为状态2之前,整个IU报头必须已被接收并存储进入ACW报头区域。一旦ACW状态设为状态2,数据路由器硬件不访问在ACW中的IU报头区域。一旦ACW设为状态2,其保持在状态2,直到固件使其改变。如果不存在用于IU的报头数据,那么固件可以设置ACW状态为状态2。3-进程中的IU报头。当PCIe请求只传输部分IU报头时,硬件从任一状态O或I设置为状态3。ACff状态保持在状态3,直到随后的PCIe请求完成整个IU报头的传输,然后ACW状态设为状态2。 如果在转发主存储器请求到主存储器时遇到异常,那么通过数据路由器可以设置读取丢弃或放弃位(例如,ACW状态250的位2)。对于HBA存储请求来说,设置读取丢弃位,使得存储数据到主存储器的所有HBA请求将产生要被丢弃并且还不会累积在数据校验字保存区280内的数据。设置该位的条件包括在存储用于该ACW的主存储器上接收到的任何异常、以及任何时候该ACW的HPF-DR响应字254位8 (“缺失的PCIe请求”)设置为一。对于HBA获取请求来说,可以设置写入放弃位(例如,ACff状态250、位3 ),使得用于该ACW的任何HBA获取请求将收到PCIe “事务层协议”(TLP)完成,其完成状态设为完成者中止。设置该位的条件是在用于该ACW的主存储器获取请求上接收到的任何异常;当由用于该ACW的固件请求时,由全局获取停顿硬件来设置。在一个实施例中,当处理进站HBA请求和设置固件读取丢弃位252时,数据路由器硬件设置读取丢弃位为一和缺少PCIe请求位为一。然后通过数据路由器硬件所采取的动作被列在位8下的HPF-DR响应字中(如下所述)。固件使用该位以恢复如下的ACW,所述ACW具有停留在存储阵列队列228中的HBA存储请求,由于尚未接收用于该ACW的先前的BHA请求,不能处理存储阵列队列228中的HBA存储请求。HPF-DR响应字字段254 (例如,字0,字节1、2、3)包括即 _01 响应字,其是在I/O操作完成时由数据路由器硬件提供给固件的ACW结束状态信息。结束状态和其相应的示意性位的例子包括位8-缺失HBA请求当用于该ACW的“延迟的” HBA存储事务超过所设定的“生存时间”时,该位可以设为一。如果由于超出命令条件而数据路由器硬件先前重新入队(re-en-queued)该HBA请求,并且由于缺失要接收的HBA请求,请求已等待在存储阵列队列118中的时间超过了设定的生存时间,就会发生这种情况。当处理了入站HBA (读取)请求以及ACW固件读取丢弃位被设为一时,该位也可以被设为一。当缺失HBA请求条件时所执行的动作包括在ACW中存储IU报头(若有的话)、在数据校验字中没有累积的情况下丢弃IU数据(若有的话)、以及设置ACW状态字段250的读取丢弃位2为一。在执行这些动作之后,用于该ACW的有效请求计数减一。位9-超过存储器请求阈值需要满足HBA请求的主存储器请求的数量超过了组存储器请求阈值。位10-TIDAL格式校验TIDA列表地址或TIDAW不符合协议格式规则。失效的TIDAff的地址写入该ACW的失效zSeries存储器地址字段。位11-工作计数溢出当数据通过数据路由器正在被获取自或存储到主存储器时,试图传输到或来自PCIe总线的数据的总字节计数、填充字节和数据校验字,超过了由ACff工作计数指定的数据的字节计数。位12-从HBA接收的重复HBA获取请求或失效HBA存储请求重复的HBA获取请求将不会被处理,相反,完成者中止完成TLP (Completer Abort completion TLP)将返回到HBA。写入放弃位(ACW状态字节位3)设为一;或者,对于失效的HBA存储请求来说,该位和读取丢弃(ACW状态字节位2)设为一,并且丢弃用于该ACW的所有后续的HBA存储请求。位13-有效请求计数=零无论何时数据路由器硬件更新ACW中的ACW有效请求计数,其设置该位等于下面所定义的有效请求计数字段290的所有位的N0R。位14-回转ACW:当24位下一预期的16兆字节偏移字段从OxFFFFFF回转到 0x000000时,该位设为一。设为一的该ACW回转位阻止数据路由器硬件将用于该ACW的0x000000至OxOOOOIF的16兆字节偏移值解释作为IU报头信息。位15-TIDA获取主存储器错误当所有下述语句为真的时候,设置该位响应用于TIDA列表中的TIDAW条目的主存储器获取请求收到异常或坏的硬件响应;从该不可用的TIDAW请求的HBA中接收用于数据的HBA请求;以及对于该1/0操作没有检测到先前的错误。从接收逻辑240接收的错误指示被存储在ACW TIDA硬件响应字段ACW字9、字节2和3中。产生这种错误的地址被写入失效zSeries存储器地址字段ACW字16和17中。位17-数据校验字不匹配为存储到主存储器,所计算的数据校验字不匹配接收的数据校验字。只有在ACW中通过HPF控制位3和不设为一的读取丢弃位2启动数据校验字校验,那么才发布(posted)。位18-方向错误在HPF-DR控制字中的ACW方向位O不匹配用于该ACW的HBA请求的方向。位21-主存储器响应错误从主存储器请求中接收错误。在一个实施例中,错误字节、详细的错误从主存储器响应被写入该ACW状态字段的位19-20以上或位24-31以下。产生错误的主存储器地址被写入到本ACW的失效zSeries存储器地址字段。位22-IU报头数据校验字段不匹配如果在ACW中不用HPF-DR控制字位16禁用所有进站IU的话,硬件对所有进站IU校验在28字节的IU报头信息上的IU报头数据校验字。如果IU报头数据校验字失效,丢弃在IU中存在的任何数据有效载荷。如果遇到在HPF-DR响应字中在结束状态时指示的上述错误,而同时从HBA到主存储器存储数据,丢弃在HBA中的剩余的字节和用于IU的所有后续HBA请求。当在该字中错误位8-12、15、17、18、21和22中任一个被设为一时,这是强制执行在ACW状态下的读取丢弃位要设为一。如果在从主存储器获取数据以传输通过PCIe总线时检测错误的话,HPR-DR硬件将发送信号给PCIe输出逻辑244以返回完成TLP (Completion TLP),其中完成状态被设置为完成者中止。这将使HBA终止启动引起异常的主存储器获取请求的交换。利用完成状态被设置为完成者中止的相同完成TLP来响应对该ACW的所有后续HBA请求。当在该字中错误位8-12、15、17、18、21和22中任一个被设为一时,强制执行上述内容,且在ACW状态中的写入放弃位要设为一。如果HPR-DR硬件遇到具有设为O的有效(位0)、或具有失效ACff状态的ACW (用于获取的O和4-F、或用于存储的I和4-F),提请HPR-DR硬件信道控制校验。再次参考图10,ACW还可以包括工作计数字段256。当用数据路由器处理用于该ACff的第一 HBA请求时,从启动计数字段(如下所述)的字7中初始化该字段。随着数据被从主存储器获取或存储到主存储器中,数据路由器硬件递减该计数。在该计数已递减为零之后,数据不会保存到主存储器。放弃在该计数已变为零之后的从PCIe总线接收的任何数据,并在HPF-响应字字段中将“工作计数溢出”位设为一。如果在ACW状态字节中任意写入放弃或读取丢弃位设为一,那么对于丢弃或放弃的数据字节来说,不会递减该计数。如果在HPF-响应字254中任何错误位已被设为I个,那么该计数的剩余值会失效,其指示在主存储器响应中接收错误。HPF-DR控制字字段258由固件设置并控制数据路由器执行的功能。说明示意性功能(对应在该字段中的示意性位)如下位O-ACW方向为从主存储器中获取设为‘Tb。为存储到主存储器设为‘0’b。该 位必须匹配参考该ACW的HBA请求,否则在HPF-DR响应字中的“方向错误”位18设为一。位1-2- “IU数据-数据校验字选择”如果下面的位3 (启动数据校验字)设为一,这些位用下列代码点进行编码,以通知用于数据IU的数据校验字类型的数据路由器硬件,下列代码指示所使用的数据校验字的类型O-利用数据校验字类型I。(LRC)I-利用数据校验字类型2。(校验和)2-利用数据校验字类型3。(CRC)3-利用数据校验字类型4。位3- “IU数据-数据校验字启动”‘0’ b的值指示关闭,即,有没有数据字校验/生成用于该条目。‘Tb的值指示开启,即,每上面位1-2的编码的数据字校验/生成能启动用于该ACW。位4-5 - IU报头数据校验字选择编码如果下面的位16被设为零,那么位4_5用下列代码点进行编码,以通知用于IU报头的数据校验字类型的数据路由器硬件(IU报头数据校验字启动):O-利用数据校验字类型I。(LRC)I-利用数据校验字类型2。(校验和)2-利用数据校验字类型3。(CRC)3-利用数据校验字类型4。位16-禁止IU报头数据校验字‘0’b的值(关闭)指示每次上面位4-5编码的IU报头数据字校验/生成能启动用于该ACW。‘Tb的值(开启)指示没有校验进站IU报头中的数据校验字字段。出站报头中的数据校验字字段不被修改并在设置在ACW中时被发送。位17-旁路TIDAL ‘0’ b的值指示要使用TIDAL处理。在ACW中的地址是TIDAW列表的起始地址。每个TIDAW具有主存储器地址和用于获取或存储数据的计数。‘Tb的值指示旁路TIDAL处理,并且获取或存储数据连续开始在ACW中的主存储器地址处。位22-23-有效载荷数据校验字位置这个两位编码表示,对于写入操作来说,从在设置数据校验字的有效载荷结束的字数目。对于读取操作忽略该编码。对于除了‘00’b的编码,开始工作计数必须是4字节的倍数(B卩,无填充)。跟随数据校验字之后的IU中的字不包含在数据校验字计数中。示意性代码包括‘00’ b :当工作计数=0时插入所生成的数据校验字。这在所传输的IU加填充字节的末端处放置数据校验字,以把数据校验字放在字边界上。该代码点用于传输除传输命令IU以外的一些。‘01’b :当工作计数=4时用所生成的数据校验字覆盖现有字。这从所传输的IU末端放置一个字(4字节)的数据校验字。该代码点仅用于传输传输命令IU。‘10’b:当工作计数=8时用所生成的数据校验字覆盖现有字。这从所传输的IU末端放置两个字(8字节)的数据校验字。该代码点仅用于传输传输命令IU。‘11’ b:无效的。再次参考图10,ACW还可以包括用固件设置的密钥259。密钥从ACW中获得并由数据路由器硬件插入在用于访问主存储器的主存储器请求中。区域ID字段260由固件设 置,以及从ACW中获得并由数据路由器硬件插入在用于访问主存储器的主存储器请求中。主存储器地址字段262指示主存储器中的开始地址(例如,如果控制字字段的位17是一)或者Tidal间接数据地址列表(TIDAL)(例如,如果位17是零)的开始地址,其中主存储器是要从该开始地址获取用于该ACW的数据或存储用于该ACW的数据。在ACW中的主存储器地址是数据的主存储器地址或称为TIDAL的传输间接地址列表(TransportIndirect Address List)的开始地址。在TIDAL中的每个条目是TIDAW,TIDAW是位于TIDAW中的计数字段中的用于数据字节数目的开始主存储器地址。如果用在HPF-DAR控制字中位17指示TIDAL,那么HPF-DR硬件从主存储器中获取TIDAL,然后使用每个TIDAW中的地址以在主存储器中获取或存储数据。通过数据路由器硬件使用IU报头计数字段263,以追踪要从PCTe传输到ACW或从ACff传输到PCTe的留下的IU报头字节数目。在IU传输或接收开始的时候,通过固件使IU报头计数初始化为要从离开ACW底部传输到PCIe总线或从PCIe总线传输到ACW底部的IU报头字节的数目。当建立ACW时,通过固件初始化24位的“下一个预期的16兆字节偏移”字段264。该偏移字段尽管被描述为16兆字节、但可以配置用于其它理想的偏移配置。当处理了每个HBA获取或存储请求时,数据路由器硬件将校验HBA地址中的16兆字节偏移180对比ACW中的下一个预期的16兆字节偏移字段。如果它们匹配,数据路由器硬件移动数据(如果该数据是到或来自ACW底部的IU报头)以及任何用户数据去往或来自主存储器。数据路由器硬件随后以HBA事务大小递增下ACW中的一个预期的16兆字节偏移字段。在一个实施例中,为了使用4字节工作计数字段,利用为3字节的下一个预期的16兆字节偏移字段,在工作计数传转变为零之前,下一个预期的偏移可以从OxFFFFFF回转到0x000000达到255次。下一个预期的偏移回转第一次时,在该ACW中,ACW回转位(在HPF-响应字字段254中的位14)被设为一。通过固件使用开始计数字段266以加载在该ACW控制下被传输用于I/O操作的数据的字节数目。该计数包括在传输数据上的所有插入填充和数据校验字字节,而不包括在传输或接收数据上IU报头字节或最终填充以及数据校验字字节。当第一 HBA请求被处理用于该ACW时,数据路由器硬件传输该计数给工作计数字段256。数据路由器硬件不修正ACff中的开始计数。
利用从HBA接收的地址字段172中的对应的CTL字段174和有效字段178,通过数据路由器硬件来比较CTL字段268和验证字段270。如果它们不相等,发布(post)错误,并且不执行主存储器操作。该错误导致信道控制校验。为了 HBA存储,由数据路由器硬件使用数据校验字状态字段272以追踪ACW中的最后4数据字节保存区(下面要说明的)中的哪些数据字节将被用于在用于该ACW的下一事务中的数据校验字计算。这需要用于如下情况,HBA存储请求没有结束在相对于数据传输的开始的字边界上,以及仅能完成字边界上的数据的四个字节字的数据校验字计算。因此,达到三个字节的预先接收数据和边界状态信息必须被保存在ACW中,直到接收数据的后续字节,以继续计算数据校验字。TIDAL硬件响应字段274用于存储被接收用于获取的TIDA列表的主存储器异常或不正确路由器硬件响应。该字段的位2-15具有与HPF-DR响应字字段254的位18-31相同的定义。因为需要使用TIDA列表之前其可以由HPF-DR硬件被预先获取,所以该不正确响应将不会被固件报告为错误,除非从HBA接收HBA请求以传输会使用该不可用TIDAW的数据。该后一条件表示,固件为HPF-DR响应字字段254的位15。 数据路由器硬件使用先前数据校验字保存区,以在每个HBA存储事务末端处保存邻近最后临时数据校验字值的那个值。通过利用所接收的最后4数据字节的计算不会修正该临时值。从而,如果当前HBA事务完成操作,该字段包含用于操作的最终计算的数据校验字值,并且所接收的最后4数据字节所接收的数据校验字,其被保存在该ACW中的随后字段中。最后4数据字节保存区278被硬件使用,以保存在每个HBA请求上接收的最后4数据字节。对于除最后的以外的HBA请求来说,如果当前HBA请求不结束在字边界上的话,达到三个的这些字节可以要求后续的数据校验字累积。关于需要字节的信息记录在数据校验字状态272中。对于最后的HBA请求来说,该字段包含所接收的数据校验字。在一个实施例中,为了 HBA PCIe获取,该字段保持达到以最后之前4字节PCIe边界为基础的最后四个数据字节。因此,如果PCIe地址以I结束,那么该字段保持所传输的最后字节。如果PCIe地址以2结束,该字段保持所传输的最后两个字节,并以此类推,直到最后四个字节。在每个HBA事务(获取或存储)的末端处,数据校验字保存区280被数据路由器硬件使用,以保存临时计算的数据校验字值,该临时计算的数据校验字值用于为用于该ACW的下一事务做种子。TIDAL工作区地址282是位于本地信道存储器中的256字节工作区的地址,并且由数据路由器硬件使用,以由数据路由器硬件缓存从主存储器中预先获取的TIDA列表元素(element)。固件设置该字段以指出用于该ACW的分配区。TIDAL工作区索引284是进入本地信道存储器TIDAL工作区的索引,其指出当前有效TIDAW条目并且由数据路由器硬件保持。数据校验字种子字段286被固件使用,以在该字中写入初始数据校验字种子值。在用于该ACW的数据传输的读取或写入时,该字用作用于数据校验字运算的开始种子,并且当用于写入的那个TIDAW计数变换为零时,还用于接下来的TIDAW中“插入数据校验字” TIDAW标识的处理的“重新播种”。对于传输命令ACW来说,固件获得用于传输命令IU的原始种子,并通过更新用于传输命令IU的开始数据校验字种子来计算传输命令IU ACff种子的新值,其中IU报头和写入和或读取长度字段位于传输IU的末端处。因此,即使在数据路由器硬件从ACW获得种子的情况下,传输命令IU数据校验字也覆盖整个传输命令IU,并且仅仅计算在IU的传输命令IU数据部分上的数据校验字。数据路由器硬件随后把数据校验字插入到IU中,并随后传输写入或读取长度字,或者如果I/O操作传输在双方向上的数据,那么传输写入和读取长度字段。失效的zSeries存储器地址288被用于存储引起异常的存储区的地址,并且适当的错误位设置在HPF-DR响应字254中。有效请求计数计数器290被ACW使用,以保持追踪在用于ACW的存储阵列队列228中当前存留多少HBA请求。该计数器对于存储到用于ACW的存储阵列队列中的每个HBA请求递增,并在已处理HBA请求时递减。当对请求发生下列之一情况时,考虑处理用于该ACW的HBA请求用于HBA请求的所有主存储器请求已利用主存储器响应完成;如果读取丢弃位、位2被设为一,那么用于HBA请求的所有数据已被放弃;对于仅包含IU报头信息的HBA请求来说,所有的IU报头信息存储在ACW中。在数据路由器硬件更新ACW中的ACW有效请求计数的任何情况下,其设置有效请求计数=零(HPD-DR响应字254、位13)到有效请求计 数的位的N0R。从而,当HPF-DR硬件递减有效请求计数到O时,有效请求计数=零的位将被设为一。IU报头信息字段292用于存储命令、状态和/或用在I/O操作中的数据IU报头。在一个实施例中,该字段是用于“IU报头”信息的8个字的区域。如果IU包含IU报头,那么IU报头信息是传输到或来自链路上的IU中的设备的第一个数据。IU报头信息被信道使用或生成,但不是被存储到或获取自主存储器的部分数据。因此,该信息被信道微处理器固件校验或生成。ACW控制块的底部8个字用于缓存IU报头并用作数据路由器硬件和用于IU报头的固件之间的界面。当ACW是读取数据ACW或写入数据ACW时,IU报头信息是传输通过PCIe总线的第一个数据。当数据路由器硬件完成IU报头的传输时,其把ACW状态字段250值改变为2。如果IU传输来说,固件在给HBA发信号传输IU之前在ACW中建立IU报头。对于所接收的IU来说,当固件被HBA告知I/O操作已完成并且已证实ACW处于ACW状态2时,固件核查ACff中的IU报头。固件还控制IU报头的最后字是否表示用于IU报头的数据或IU报头数据校验字,IU报头的最后字在本实施例中总是处于16兆字节偏移28、0x00001C处。HPF-DR控制位16(禁止IU报头数据校验)通知数据路由器硬件,用于IU报头的数据校验字是否要被生成或校验。如果启动,随着IU报头被发送到HBA时,数据路由器硬件生成IU报头数据校验字,并随后用所生成的数据校验字替代来自ACW的IU报头的最后字。如果启动,数据路由器硬件校验在所接收的HBA IU报头上数据校验字并报告HPF-DR响应字254中在位22的结果。固件可以建立ACW,使得数据路由器硬件传输少于8个字的IU报头信息。通过调整被PCIe HBA所使用的状态、报头计数、下一个预期16兆字节偏移和初始16兆字节偏移来做这件事情,使得要被传输或接收的最后IU报头字处在16兆字节偏移的28、0x00001C处,以及有效载荷(如果有的话)的第一个字节处在16兆字节偏移的32、0χ000020处。IU报头总是整数的字。在一个实施例中,如果IU报头不需要用于IU,那么固件建立ACW,如下
I.设置ACW IU报头计数为零。ACW字6、字节O ;2.设置ACW状态为状态2 ;3.设置ACW回转位为一(HPF-DR响应字位14)、在被提供给HBA的地址控制结构中设置开始16兆字节偏移为0x000000、以及设置相同值进入在ACW中的下一个预期的16兆字节偏移字段。4.设置ACW工作计数256等于ACW开始计数266 ;5.设置ACW数据校验字状态为0x00的值;以及6.设置先前数据校验字保存区276和数据校验字保存区280等于数据校验字种子286。现在看来,该ACW被分配给已接收或传输IU报头用于IU的数据路由器硬件。
以从I/O指令接收得到的信息为基础,由信道微处理器建立在上面描述的ACW中的某些字段。示意性字段包括ACW状态字段、响应字字段、HPF-DR控制字段、主存储器或TIDA存储器地址字段、报头计数、“下一个预期的16兆字节偏移”字段、D字段、CTL字段、验证字段、TIDAL工作区地址字段、数据校验字种子字段以及IU报头字段。在ACW中的其它字段是在执行I/O操作时被HPF-DR硬件使用的控制字段,并用于在已完成I/O操作之后呈现结束状态信息返回给固件。图11-14示例由ACW中的固件设置的示意性值,ACff存储在本地信道存储器中并被数据路由器硬件使用。参考图11,为生成传输命令ACW 300,其被HPF-DR使用来组装传输命令IU,采用下列设置I)对于ACW状态字段,ACff有效位设为一并且设置I的状态编码;2) ACff回转字段设为零,(当HPF-DR响应字设置为0x000000时的设置);3)对于HPF-DR控制字段,设置下列值位O (ACW方向)设为一。数据从信道中传输;位1-2 (IU数据-数据校验字选择)设为‘00’ b以指示要使用的LRC字;位3 (IU数据-数据校验字启动)设为一;位4-5 ( IU报头数据校验字选择)不被使用;位16 (禁止IU报头数据校验字)设为一;位17 (旁路TIDAL)设为TCW中的TCCB TIDAL标识位的反相;位22-23 (有效载荷数据校验字位置)设置有‘10’ b的代码值;4)从子信道中得到密钥值;5)从TCW中得到主存储器地址;6 )对于传输命令ACW,IU报头计数设为OxOC ;7)对于传输命令ACW,下一个预期的16兆字节偏移字段设为0x000014 ;8)从TCW中传输开始计数字段值;9)当建立ACW时,固件写入放弃位(D)设为零;10)对于所有传输ACW,CTL字段设为0x02 ;11)对于在信道初始化的该ACW,验证字段设为唯一值;12)对于在信道初始化的该ACW,TIDAL工作区域地址设为唯一值;13)数据校验字种子对于传输命令ACW,固件获得原始传输命令种子、计算新种子值,该新种子值用于来自在该ACW中建立的IU报头101数据中的数据路由器硬件和从TCW得到的写入和读取长度字段;以及14) IU报头101 :从子信道和TCW中建立12字节的IU报头101。参考图12,传输读取数据ACW 302被数据路由器使用,以接收读取传输数据IU并生成主存储器命令,以把读取数据发送到主存储器。通过采用下列设置生成传输读取ACW I)对于ACW状态字段,ACff有效位设为一并且设置2的状态编码;2) ACff回转字段设为一·,(当HPF-DR响应字段设置为0x020000时);3)对于HPF-DR控制字段,设置下列值位O (ACW方向)设为零。在信道中接收数据;位1-2 (IU数据-数据校验字选择)设为‘10’b以指示要使用的CRC字;位3 (IU数据-数据校验字启动)设为一;位4-5 (IU报头数据校验字选择)不被使用。设置上述ACW回转位;位16 (禁止IU报头数据校验字)不被使用。设置上述ACW回转位;位17 (旁路TIDAL)设为TCW中的TIDAL读取标识位的反相;位22-23 (有效载荷数据校验字位置)设置有‘00’ b的代码值,因为其不用于该ACff ;4)从子信道中得到密钥值;5)从TCW中得到主存储器地址;6 )对于传输读取数据ACW,IU报头计数设为0x00 ;7)对于传输读取数据ACW,下一个预期的16兆字节偏移字段设为0x000000 ;8)从TCW中的读取数据计数获得开始计数字段值;9)当建立ACW时,固件写入放弃位(D)设为零;10)对于所有传输ACW,CTL字段设为0x02 ;11)对于在信道初始化的该ACW,验证字段设为唯一值;12)对于在信道初始化的该ACW,TIDAL工作区域地址设为唯一值;以及13)对于传输读取数据ACW,数据校验字种子被设为OxFF FFFF FF。参考图13,传输读取数据ACW 304被数据路由器使用,以生成写入传输数据IU,以把写入数据传输到控制单元。通过采用下列设置生成传输写入ACW I)对于ACW状态字段,ACff有效位设为一并且设置2的状态编码;2)当HPF-DR响应字段设置为0x020000时,ACff回转字段设为一;3)对于HPF-DR控制字段,设置下列值位O (ACW方向)设为一。传输数据给控制单元;位1-2 (IU数据-数据校验字选择)设为‘10’ b以指示要使用的CRC字;位3 (IU数据-数据校验字启动)设为一;位4-5 (IU报头数据校验字选择)不被使用。设置上述ACW回转位;位16 (禁止IU报头数据校验字)不被使用。设置上述ACW回转位;位17 (旁路TIDAL)设为TCW中的TIDAL读取标识位的反相;位22-23 (有效载荷数据校验字位置)设置有‘00’ b的代码值;4)从子信道中得到密钥值;5)从TCW中得到主存储器地址;
6)对于传输写入数据ACW,IU报头计数设为0x00 ;7)对于传输写入数据ACW,下一个预期的16兆字节偏移字段设为0x000000 ;8)从TCW中的读取数据计数获得开始计数字段值;9)当建立ACW时,固件写入放弃位(D)设为零;10)对于所有传输ACW,CTL字段设为0x02 ;11)对于在信道初始化的该ACW,验证字段设为唯一值;12) TIDAL工作区域地址与传输命令ACW的工作区域相同;以及13)对于传输读取数据ACW,数据校验字种子被设为OxFF FFFF FF。 参考图14,传输状态ACW 306被数据路由器使用,以存储来自所接收的传输状态IU的扩展状态数据,并转发该状态数据给主存储器。通过采用下列设置生成传输状态块ACff I)对于ACW状态字段,ACff有效位设为一并且设置O的状态编码;2)当HPF-DR响应字段设置为0x000000时,ACff回转字段设为零;3)对于HPF-DR控制字段,设置下列值位O (ACW方向)设为零。从控制单元接收数据;位1-2 (IU数据-数据校验字选择)设为‘00’ b以指示要使用的LRC字;位3 (IU数据-数据校验字启动)设为一;位4-5 (IU报头数据校验字选择)设为‘00’ b以指示要使用的LRC字;位16 (禁止IU报头数据校验字)设为零。不禁止IU报头数据校验字;位17 (旁路TIDAL)设为一,当不使用间接寻址时;位22-23 (有效载荷数据校验字位置)设置有‘00’b的代码值,并且不用于该ACW ;4)对于该ACW,密钥值设为0x0 ;5)从TCW中得到主存储器地址;6 )对于传输状态ACW,IU报头计数设为0x20 ;7)对于传输状态ACW,下一个预期的16兆字节偏移字段设为0x000000 ;8)在每一光纤信道构架中,开始计数字段值设为0x40 ;9)当建立ACW时,固件写入放弃位(D)设为零;10)对于所有传输ACW,CTL字段设为0x02 ;11)对于在信道初始化的该ACW,验证字段设为唯一值;以及13)对于传输状态ACW,数据校验字种子被设为0xA5 5A A5 5A。参考图15,说明各种类型的地址控制结构的HBA地址部分的例子。在这些例子中,当CTL字段174等于0x02,16兆字节偏移180只是对来自用于I/O操作的HBA中的连续HBA请求进行递增的部分HBA地址172。数据的第一个32字节、用于要被传输或接收的信息单元(IU)的HBA请求可以是IU报头信息,其从ACW控制块的底部获取或存储进入ACW控制块的底部。数据路由器硬件获取或存储该信息来自或进入用于0x000000至0x0000IF范围内的PCIel6兆字节偏移地址的ACW底部。这允许达到32字节的IU报头被附加到或剥离于被传输到或接收自设备的传输数据IU。当16兆字节偏移回转时,其回转回到0x000000,但对于这种情况,由于它是一个回转条件并且在ACW中ACW回转位设为一,所以所接收的或传输的数据继续被存储或获取自主存储器、而不进入或离开ACW。固件具有建立ACW的能力,以使得如果没有IU报头信息出现在IU开始处的话,则IU报头信息不会获取自或存储进入ACW。ACW回转位是在ACW的HPF-DR响应字字段中的位14。对于传输命令地址控制结构,从TCW得到的字节计数从不使16兆字节偏移字段180回转,因此,只是ー个地址控制结构被需要用于数据路由器硬件和HBA以输送传输命令IU0命令IU的方向始终从信道ー侧的HBA到控制单元。对于传递到HBA的传输状态地址控制结构,字节计数从不使16兆字节偏移字段回转,因此,只是ー个地址控制结构被需要用于数据路由器硬件和HBA以接收传输命令IU。状态IU的方向始终从控制单元到信道ー侧的HBA。对于传输读取数据地址控制结构,通过TCW中的读取数据计数提供要从设备传输到HBA的读取数据的总量。如果读取数据计数大于16兆字节,传递到HBA用于传输读取数据的数据地址控制结构的数量是除以223的总读取数据计数,并如果有余数的话向上进一。每个传递到HBA的数据地址控制结构具有相同的64位PCIe地址。除了完成I/O数据传输的最后数据地址控制结构以外,在每个数据地址控制结构中的计数字段是223。这使得 对数据路由器硬件看起来,223兆字节偏移字段保持从0x7FFFFF到0x000000的回转。主存储器地址是来自ACW不断増加的主存储器地址262或者是来自从被存储器地址262寻址的TIDAL中的每个TIDAW中的主存储器地址。对于传输写入数据地址控制结构,通过TCW中的写入数据计数提供要从HBA传输到设备的写入数据的总量。按照与用于传输读取数据地址控制结构相同的方式来计算用于传输写入IU的地址控制结构的数量。本文说明的系统和方法提供了装置,其用于校验由数据路由器160处理的数据的错误。例如,当HBA 154參考(reference)主存储器的任何时候,数据路由器160校验各种各样的參考点。在一个例子中,数据路由器160校验出,在HBA地址字段172的ACW索引字段176中的ACW地址位置是在由ACW源寄存器214和ACW限制寄存器216界定的存储器区域内。在另ー个例子中,通过校验出HBA地址字段172中的CTL字段和校验字段匹配由HBA请求所參考的ACW中的CTL字段和校验字段,数据路由器160校验出HBA 154正使用用于HBA请求的校正ACW。如果这些字段不比较,那么信道128将用信道控制校验结束I/0操作。数据路由器160还校验出,地址字段172中的偏移字段(例如,HBA地址的低级24位)等于获取ACW中的下一个预期的16兆字节偏移。数据路由器160还包括生成或校验数据校验字(例如,LRC、CRC)的能力,使得允许数据路由器160检测要传输的数据是否已损坏。例如,数据路由器从主存储器中收集数据以发送到HBA 154,、例如TCCB 148或输出数据,数据路由器利用传输命令ACW中的数据校验字种子以及利用TCCB数据生成数据校验字192,并在传输命令IU中插入数据校验字(例如,在来自IU末端的两个字处)。通过传输命令IU报头和长度字段利用固件预先计算传输命令ACW中的数据校验字种子。这使得数据校验字能够覆盖包含跟随所传输的IU中的数据校验字的长度字的整个传输命令IU。在一个实施例中,始终在字边界上计算数据校验字。如果由数据校验字覆盖的数据的字节数量的字节计数不是4的倍数,那么在传输数据校验字之前需要填充字节来填补字边界。为了传输到控制単元118,填充字节始终是零。为了接收到主存储器,必须接受任何值的填充字节。填充字节被包括在数据校验字计算中。数据路由器160还可以生成数据校验字,该数据校验字在通过信道通路传输的过程中校验整个传输写入数据IU。以在传输写入ACW中的数据校验字种子为起始生成该数据校验字,并在从主存储器中获取数据时,用所获取的数据计算新的数据校验字。当获取并传输所有的数据时,随后所产生的数据校验字把填充字节附加并排列到字边界上,例如发送到HBA的最后4字节的数据。TIDAW字可以具有插入的填充并且数据校验字标识设为一,这将使数据路由器硬件在传输写入数据IU中插入中间数据校验字。控制单元将比较所接收的数据校验字与其自己所计算的数据校验字,以证实所接收的数据IU有效。对于从主存储器获取来说,当TIDAW计数递减为零并且TIDAW插入数据校验字标识位设为ー时,在填充字节位于字边界上之后,所计算的数据校验字始終被插入并传输。数据路由器160还可以生成数据校验字,该数据校验字校验在通过信道通路传输的传输读取数据IU。以在传输读取ACW中的数据校验字种子为起始生成该数据校验字,并在从主存储器中存储输入数据时,用读取数据计算更新的数据校验字。当已接收并存储进入主存储器中所有的数据时,由此产生的计算出的数据校验字与从设备中所接收的数据校 验字进行比较。所计算的数据校验字与所接收的数据校验字比较,证实所接收的数据IU有效。如果两个字段没有比较,那么用界面控制校验终止I/O操作。例如,在接收数据IU的末端处,如果“数据校验字启动”位3设为一,并且如果预期的数据校验字不匹配所接收的数据校验字,那么数据路由器硬件将设置“数据校验字失配”位17为一。在一个实施例中,当数据路由器160从设备中接收数据时,存在这样的情况,数据路由器160不得不应对判断已接收数据校验字的时候。例如,执行计数匹配,由此证实数据校验字是在ACW工作计数过渡到零之后所接收的4字节加上填充字节,以把数据校验字放在字边界上。在已接收数据校验字之后不接收额外的数据,否则HPF-DR响应字的位11 (エ作计数溢出)将设为一。在另ー个例子中,如果在控制单元118发送传输状态IU的时候,ACW工作计数还没有过渡到零,那么会碰到“提前结束”的情況。对于当用通过HBA 154的I/O完成中断信道128时的情况来说,信道128首先证实,对于对应的ACW来说有效请求计数=零位设为一,并随后证实出,通过比较作为所接收的数据校验字的ACW中的“最后4字节保存区”与在所接收的数据上包含计算的数据校验字的ACW中的“先前数据校验字保存区”,数据校验字是正确的。数据路由器硬件还计算校验从链路中接收的传输状态IU数据的数据校验字。以传输状态ACW中的数据校验字种子为起始计算数据校验字,并在传输状态IU数据存储在主存储器中时,计算新的数据校验字。当用于IU的所有数据已接收并存储进入主存储器吋,由此产生的计算数据校验字与从设备中接收的数据校验字进行比较。所计算的数据校验字与所接收的数据校验字比较,证实所接收的数据IU有效。如果两个字段没有比较,那么用界面控制校验终止I/O操作。TIDAff及其T-TIC标识位的架构,使得需要满足ー个4k字节的PCI Express总线(PICe)请求的zSeries存储器请求的数量要超过一万两千zSeries存储器请求。如果在姆个TIDAW中的字节计数字段和T-TIC标识位分别设为一,使得信道字中的传输-转移跟随每个TIDAW (其中信道字是下ー个TIDAW的新的zSeries存储器地址),那么就会出现上述情況。用于路由器硬件以作出所有这些zSeries存储器请求的时间量可以超出HBA用于ー个HBA请求的超时值。由此产生的错误将看起来像zSeries存储器超时,其表明zSeries存储器子系统丢失了 zSeries存储器请求。为了对需要满足HBA请求的主存储器请求的数量进行限制,在数据路由器硬件中的可编程请求阈值计数器可以限制用于满足ー个HBA请求的主存储器请求的数量。如果达到限制,那么“存储器请求阈值超出”(HPF-DR响应字位9)设为一。当信道硬件初始化吋,建立该阈值计数器。如上所述,提供HBA 154直接存储或获取用户数据进入或离开主存储器的能力,以提高信道的性能。然而,在微处理器130上运行的固件和HBA 154之间的所有通信是通过本地通道存储器132执行的。微处理器130通过为HBA 154存储所有所需的信息把工作传递给HBA 154,以处理在本地信道存储器区域164中的HBA工作队列上的I/O操作。同样,当HBA已完成I/O操作或者I/O操作失败时,HBA使具有状态的I/O操作返回到在本地信道存储器132中的固件I/O完成队列中的信道。 关于ACW占用期(tenure)和ACW原子性(atomicity)的下列规则被提供给固件的适当交互,HBA 154和数据路由器硬件利用ACW 210来处理HBA主存储器请求。在I/O操作期间,信道固件拥有指定用于达到一定时间的I/O操作的四个ACW(SP,传输命令ACW、传输读取ACW、写入数据ACW和传输状态ACW),固件使HBA工作队列上的I/O操作列队。从信道固件使HBA工作队列上的I/O操作入队的时间直到HBA 154使具有状态的I/O操作(四个相关的ACW)返回到在固件I/O完成队列上的固件上,数据路由器160和HBA 154间接地拥有用于I/O操作的四个ACW。对于成功完成的I/O操作来说,在HBA 154已接收并处理结束I/O操作的传输状态IU之后,HBA 154使I/O操作返回到在固件I/O完成队列上的固件上。除了极少数情况(例如,在ACW中的固件读取丢弃位设为一)以外,固件在数据路由器硬件和HBA 154拥有四个ACW的时间间隔期间不会更新四个ACW中任意ー个中的任何字段。为了使在数据路由器160控制下的ACW停顿(quiesce)以传输数据到设备,固件使用获取停顿硬件和逻辑310 (如图9中所示)。为了使在数据路由器160控制下的ACW停顿以从设备中接收数据,固件使用固件读取丢弃位252以及存储停顿硬件和逻辑312(如图9中所示)。在一个实施例中,提供原子性规则,使得ACW中的IU报头和所有状态字段在如下时间就会更新,所述时间是,固件从固件I/O完成队列上的HBA 154中接收结束完成状态时(其把ACW对I/O操作的拥有权返回给固件)。第一规则规定,在接收的结束完成状态id或者用于该ACW的ACW状态改变为状态2 (BP, ACff IU报头区安全)之前,数据路由器硬件必须把整个IU报头信息存储进入ACW。设计在ACW中的固件读取丢弃位,使得在不影响数据路由器硬件工作并且设计相同ACW中的任何字段的更新情况下,使其可以由固件设为一。第二规则规定,当数据路由器硬件发送“具有设为完成者中止的完成状态的事务层协议(TLP)”给HBA 154吋,数据路由器硬件必须确保,在处理要存储进入本地信道存储器内的任何接下来的HBA请求之前,完成对所对应的ACW的所有待定更新。第三规则規定,当两个背对背HBA请求到达路由逻辑222时,第一请求被路由到存储阵列队列228,以及第ニ请求被路由到本地信道存储器,在第二或者后续HBA请求被路由到或存储进入本地信道存储器之前,在ACW中的有效请求计数和有效请求计数=零的位必须被数据路由器硬件更新。存在如下情况(例如,当发生错误时),固件不能等待I/O操作完成,但不是必须阻止从主存储器中获取新的HBA数据获取请求或者阻止来自HBA数据存储请求中数据被存储到主存储器中。全局获取停顿硬件310提供方式给固件以停顿由数据路由器硬件所拥有的ACff并主动地从主存储器中获取数据。为了使被建立以从主存储器中获取数据的有效ACW停顿,固件利用固件请求停止的ACW索引来设置全局获取停顿硬件310中的ACW索引寄存器。在固件写入ACW索引寄存器之后,固件获取停顿逻辑310执行下列操作
I.在全局获取停顿逻辑中的停顿忙位设为一,其阻止获取硬件230处理来自获取阵列队列226中的任何新的HBA获取或者写入请求,并且阻止在获取硬件230中排列的主存储获取或写入请求被传输给处理逻辑234以用于传输到主存储器。然而,在处理逻辑234和传输逻辑236处、或在接收逻辑240和路由逻辑242处,已经列队并当前正在处理的主存储器获取请求不会受到影响;2.擦除在获取硬件230中已列队的主存储器获取请求,并且标记在获取硬件230中具有目标ACW索引的任何主存储器获取请求,以便在稍后处理主存储器请求吋,強制具有完成状态的TLP完成被设为完成者中止。3.写入放弃位、ACW状态250位3,在目标ACW中设为一。4.然后数据路由器硬件被解冻,以及现在处理在获取硬件230中列队的主存储器获取请求和在获取阵列队列226中列队的HBA请求;以及5.使全局获取停顿逻辑中的停顿忙位复位。在固件设置全局获取停顿逻辑310中的ACW索引寄存器之后,固件监控停顿忙位以确定全局获取停顿逻辑310已完成停顿操作的时间。一旦完成停顿操作,固件可以取决于以下因素I.具有目标ACW索引的、在获取硬件230中列队的任何HBA请求将接收具有设为完成者中止状态的完成状态的TLP完成。2.作为写入放弃位、ACW状态250位3在该ACW中被设为ー的结果,在获取阵列队列226中列队的任何HBA请求、或者来自HBA的任何新的用于目标ACW的HBA请求将响应于具有设为完成者中止的完成状态的TLP完成。当HBA 154接收具有设为完成者中止的完成状态的TLP完成吋,HBA 154发送用于I/O操作的中止给控制单元118和设备116。当HBA 154已经从正完成中止序列的设备116中接收到响应时,HBA154将通过在本地信道存储器中的固件I/O完成队列使该I/O操作返回到固件。还可能存在如下情况,其中固件要求阻止(停顿)任何新的HBA数据存储请求被存储进入用于I/O操作的主存储器中。通过固件读取丢弃位来提供这种能力。固件设置ACW中的固件读取丢弃位252为一,随后在存储阵列队列228中列队的所有新的和已存在的HBA请求将被存储硬件232丢弃。随着数据路由器160丢弃用于ACW的HBA存储请求,固件还可以具有如下能力,即,确定何时利用主存储器完成响应完成了对用于ACW的主存储器的、由存储元件232做出的所有先前主存储器存储请求。主存储器完成响应在路由逻辑242处被接收并被路由到做出请求的请求者,井随后以做出请求相同的顺序来处理,其包括递减在全局存储停顿逻辑312中的计数器。全局存储停顿逻辑和硬件312提供了对于固件如下方式,以使得固件知道何时已完成了由存储硬件232做出的对主存储器的所有先前主存储器存储请求。一旦读取丢弃位在ACW中设为一,那么知道已完成用于该ACW的所有先前主存储器存储请求的ー种方式是等待,直到在主存储器数据流水线(用处理逻辑234、传输逻辑236、接收逻辑240和路由逻辑242表示)中列队的所有当前HBA存储请求已被处理。为了在不阻止新的存储请求在存储阵列队列中列队或者不阻止处理在存储阵列队列中存在的条目的情况下实现这件事情,快照计数器被加载有在主存储器数据流水线中列队的条目的当前总数量。然后该快照计数器对于所接收的每次主存储器响应被递减。然后当快照计数器达到零时,固件知道,在用于感兴趣的ACW的存储器数据流水线位置中的队列中列队等候的所有先前主存储器存储请求已被处理。该功能可以由全局存储停顿硬件312执行,其 由下列计数器构成I.对于在主存储器数据通道中列队的所有ACW,全局有效请求计数器保持追踪HBA存储请求的总数量。该计数器在每次数据路由器存储硬件232生成对于主存储器的HBA存储请求的时候递增,并且在完成HBA存储请求的最后主存储器存储请求被确认的时候递减,其中确认是由从路由逻辑242到数据路由器控制逻辑所路由的返回的主存储器响应完成的。在一些实施例中,ー个HBA存储请求可能需要多达16个主存储器存储请求,以在HBA存储请求中存储所有的数据。2.全局有效快照计数器只是递减而从不递增。利用全局有效请求计数器的当前值在固件的控制下加载该计数器。用递减“全局有效请求计数器”的相同信号来递减该计数器。一旦该计数器递减到零,其保持在零处,直到固件利用全局有效请求计数器的新副本再次加载。固件可以读取全局有效快照计数器以确定什么时候其已过渡到零。下列程序可以被固件使用,以阻止先前建立以存储数据进入主存储器的的ACW以及随后确定什么时候已完成用于该ACW的所有先前主存储器请求I.固件设置在每个受到影响的ACW中的“固件读取丢弃”位为一,其之前被建立来存储数据进入主存储器;2.固件把全局有效请求计数器传输到全局有效快照计数器。然后,当每个主存储器存储请求完成吋,递减请求主动快照计数器;3.固件轮询全局有效快照计数器,直到其读数为零。现在,对于把固件读取丢弃位设为ー的感兴趣的所有ACW,已完成了在固件把全局有效请求计数器传输到全局有效快照计数器的时候所做出的所有主存储器存储请求。数据路由器硬件将不会进ー步做出代表这些ACW的主存储器存储请求。在某些情况下,按从设备传输数据的顺序不同的顺序,可以由数据路由器硬件接收来自HBA的数据。这带来了一个问题,其中,对接收到的数据的ー些类型的数据校验字计算必须以数据校验字在传输数据时最初生成的相同的数据顺序来计算。数据路由器硬件检测利用下一个预期的16兆字节偏移字段的条件。当处理每个HBA获取或存储请求时,数据路由器硬件检查在HBA请求中的PCIe 16兆字节偏移对比在ACW中的下一个预期的16兆字节偏移字段。如果它们匹配,数据路由器硬件将以HBA事务大小递增下一个预期的16兆字节偏移字段,移动数据去往或来自主存储器并处理数据校验字。如果这些字段不匹配以及HBA地址大于预期的HBA地址,那么当前HBA事务被数据路由器硬件顺序颠倒地接收,并且数据路由器硬件将在存储或获取阵列队列的底部重新列队该HBA请求。在第一次HBA请求在队列的底部被重新列队时,时间戳被写入HBA请求的控制数据中。该控制数据用于追踪在队列中的HBA请求。因为没有接收到具有匹配16兆字节偏移字段的HBA请求,所以毎次帧“冒泡(bubble)”到队列顶部用于再次处理并且它必须被重新列队时,校验时间戳。如果时间戳超出可配置的“生存时间”(即超时时间段),该HBA请求等待的前一帧被认为丢失了。当检测丢失帧的条件吋,缺失HBA请求的ACW (HPF-DR响应字字位8)设为一。用于主存储器存储的颠倒顺序的HBA请求可作如下处理。ACW缺失HBA请求位设为一。用于该HBA请求的有效载荷被丢弃,并且读取丢弃位252也设为一。这样确保丢弃了所有后续HBA请求以及用于该ACW的存储在主存储器中的数据。然而,任何IU报头信息、如果存在的话,始终存储在ACW中并从不会被丢弃。
随着每个HBA请求被丢弃,有效请求计数290在ACW中递减,正如在正常处理HBA请求时所做的那样。对于被丢弃的HBA请求,16兆字节偏移不会被校验。在固件从HBA中接收用于该I/O操作的完成中断之后,随后,校验固件以查看用于该ACW的有效请求计数290是否已过渡到零。当有效请求计数已过渡到零吋,已处理了用于该ACW的存储阵列队列中的所有HBA请求。对于如下这种情況,即在要存储数据到主存储器内的所接收到的HBA请求中的16兆字节偏移180小于下ー个预期的16兆字节偏移264,那么丢弃该请求,这是因为用于该请求的数据已在先前存储在主存储器中。由于先前存储的数据被用于计算在ACW中的数据校验字的当前值,如果在主存储器中所存储的先前数据不正确,那么数据校验字将标识错误。用于主存储器获取的颠倒顺序的HBA请求可作如下处理。一旦缺失HBA请求位在ACff中设为一,并且在等待缺失HBA获取请求吋“生存时间”期满,数据路由器硬件将响应具有TIL完成的HBA获取请求,TH完成具有设为完成者中止的完成状态,并且在该ACW设置写入放弃位252为一,以确保随着具有设为完成者中止的完成状态的TLP完成,将响应用于该ACW所接收的所有后续HBA请求。对于如下情况,即在要从主存储器中获取数据的所接收到的HBA请求中的地址小于下ー个预期的偏移,那么数据路由器硬件将利用设为完成者中止的完成状态的TLP完成响应该请求。示意性实施例的技术效果和优势包括网络接ロ通过信道直接访问主存储器的能力,同时提供了存储报头信息的信道的能力以及提供了在信道处在不需要存储输入或输出数据的情况下的错误校验。通过允许对主存储器直接寻址,本文所述的系统和方法允许安装高性能的HBA (例如,支持以SG位或以上的链路速度),而不需要重新设计存储和转发信道模型来提供微处理器速度和支持这种高性能HBA的本地信道存储器带宽。它们还提供了用于错误校验当前提供的失效HBA的必要隔离。此外,本文所述的系统和方法允许使用这样的HBA,该HBA仅配置有ー个地址空间以对主存储器中的多个地址空间寻址。用具有HBA直接对主存储器寻址的该方法,本地信道存储器的微处理器性能和带宽需求不必被重新设计来满足新HBA増加的性能需求。
其它技术效果包括提供了ー种方式,给连接的HBA访问本地信道存储器中的区域和主存储器中的任何区域的任何地址的能力;提供了ー种方式,在作为存在用于当前信道实现时实现HBA与zSeries主机的等效隔离;提供了ー种方式,当数据路由器从主存储器中获取数据或存储数据到主存储器时,用于信道在输出IU上插入信息単元(IU)报头信息以及从在信道本地的输入IU中去除和保存IU报头信息;提供了ー种方式,在TIDAL控制下,以及在当数据路由器存储或获取数据进入或来自主存储器时的输出数据的末端处,验证在输入数据上的数据校验字以及在输出数据上生成和插入中间的数据校验字;提供了ー种方式,如果没有按照正确逻辑帧顺序从HBA中接收HBA请求的话,以对从HBA接收的请求再次排序并且检测HBA请求或帧是否丢失;提供了一种适当的方式,終止可以与数据路由器エ作的许多I/O操作中的ー个I/O操作,而不会干扰其他有效I/O操作中的任意ー个;提供了ー种方式,以检测出,不切实际但架构合法的传输间接数据地址列表被使用,这需要过多的主存储器请求来处理,因此妨碍了主存储器请求被及时处理。本文所使用的术语是为了只描述具体的实施例,并不意图限制本发明。如此处所使用的,単数形式“ー个(a)”、“ー个(an)”和“该(the)”试图也同样包括复数形式,除非上下文中另有清楚地表明。将进一歩明白,在本说明书中使用的术语“包括(comprise)”和/ 或“构成(comprising)”,具体规定了所称特征的存在、整体(integers)、步骤、操作、元素、和/或组件,但不排除ー个或多个其它特征、整体、步骤、操作、元素、组件、和/或其组合的存在或增加。在下面的权利要求书中添加了功能元素的所有方式或步骤的对应结构、材料、行为和等效物,不意图包括用于执行功能的任何结构、材料或行为,该功能与如具体要求的其它要求的元素結合。为了示例和说明已展现了本发明的说明书,但不意图穷举或限制于以该公开形式的本发明。对本领域普通技术人员来说,在不脱离本发明范围和实g的情况下,许多修改和变化将是显而易见的。选择和描述实施例,是为了最好地解释说明本发明的原理和实际应用,并使本领域普通技术人员能够明白具有各种修改的各种实施例的本发明,各种修改为适合预期的特定用途。为了将被本领域技术人员领会,本发明的技术方案可以具体化为ー种系统、方法或计算机程序产品。因此,本发明的技术方案可以采取完全硬件的实施例、完全软件的实施例(包括固件、常驻软件、微代码,等等)、或结合了软件和硬件方案的实施例,本文中可以全部统称为“电路”、“模块”或“系統”。此外,本发明的技术方案可以采取计算机程序产品的形式,计算机程序产品具体体现在具有其上体现了计算机可读程序代码的ー个或多个计算机可读介质中。可利用一个或多个计算机可读介质的任意組合。计算机可读介质可以是计算机可读信号介质或是计算机可读存储介质。例如,计算机可读存储介质可以是、但不限于电子、磁性、光学、电磁、红外或半导体系统、装置、或设备、或上述任何合适的组合。计算机可读存储介质的更具体例子(非详尽列表)将包括以下内容具有一个或多个电线的电连接、便携式计算机软盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPR0M或快闪存储器)、光纤、便携式光盘只读存储器(CD-ROM)、光学存储器、磁性存储器、或上述任何合适的组合。在本文件的上下文中,计算机可读存储介质可以是任何有形的介质,其可以包含或存储被用于或与其结合的指令执行系统、装置或设备的程序。
计算机可读信号介质可以包括具有计算机可读程序代码的可传播数据信号,此处具体化的计算机可读程序代码例如在基带中或作为部分载波。这样的可传播数据信号可以采取任何多种多样的形式,包括但不局限于电-磁、光学、或任何合适的组合。计算机可读信号介质可以是任何的计算机可读介质,其不是计算机可读存储介质并且能够通信、传播、输送被用于或与其结合的指令执行系统、装置或设备的程序。在计算机可读介质上具体体现的程序代码可以使用任何合适的介质来传输,包括但不局限于无线、有线线路、光纤光缆、RF等、或上述任何合适的组合。对于本发明的技术方案来说,用于执行操作的计算机程序代码可以按ー个或多个编程语目的任何组合来编写,包括例如Java、Smalltalk、C++等之类的面向对象编程语目、 或例如“C”编程语言或类似的编程语言的传统程序的编程语言。程序代码可以在用户计算机上完全执行、在用户计算机上部分执行,作为ー个独立的软件包,在用户计算机上部分和在远程计算机上部分执行、或在远程计算机或服务器上完全执行。在后一种情况下,远程计算机可以通过任何类型的网络连接到用户的计算机上、包括局域网(LAN)或广域网(WAN),或者可以连接到外部计算机上(例如,通过利用互联网服务提供商的互联网)。下面參考根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图示例和/或框图,说明了本发明的技术方案。要明白,在每块流程图示例和/或框图、流程图示例和/或框图的块的组合,可以通过计算机程序指令来执行。这些计算机程序指令可以提供通用计算机、专用计算机、或其它可编程数据处理装置的处理器以生产一台机器,使得通过计算机或其它可编程数据处理装置的处理器执行的指令,创造出用于实现在流程图和/或框图块或组块中具体指定的功能/行为的装置。这些计算机程序指令还可以存储在计算机可读介质中,计算机可读介质可以指示为计算机、其它可编程数据处理装置、或以具体方式运转的其它设备,这样使得在计算机可读介质中存储的指令生产出包括实现在流程图和/或框图块或组块中具体指定的功能/行为的指令的制造产品。计算机程序指令也可以装载到计算机、其它可编程数据处理装置、或引起一系列操作步骤的其它设备上,以在计算机、其它可编程数据处理装置、或其它设备上执行以产生计算机实现的处理过程,这样使得在计算机或其它可编程装置上执行的指令提供了用于实现在流程图和/或框图块或组块中具体指定的功能/行为的处理过程。本文描述的流程图只是ー个例子。在不脱离本发明实g的情况下,对于此处所说明的该图或步骤(或操作)可以有许多变化。例如,步骤可以按不同的顺序执行,或步骤可以被増加、删除或修改。所有这些变化都被认为是所要求的本发明的一部分。当已说明了本发明的优选实施例吋,本领域技术人员应该明白,无论是现在还是将来,可以做出落在下面的权利要求书范围内的各种改进和增强。这些权利要求应解释为保持了对首次说明的本发明的适当保护。
权利要求
1.一种用于在配置用于与控制单元通信的主机系统处执行输入/输出I/o处理操作的方法,该方法包括 在主机系统中的信道子系统处获取与I/o操作相关的信息,所述信道子系统包括具有信道处理器和本地信道存储器的至少一个信道;与网络接口通信的信道子系统被配置为在I/o操作期间在所述信道子系统和所述控制单元之间传输数据; 生成至少一个地址控制字ACW,其指定用于在主机系统和控制单元之间传输数据的一个或多个主存储器位置,并在本地信道存储器中存储该至少一个ACW,所述至少一个ACW包括数据校验字生成字段和数据校验字保存字段中的至少其中之一; 生成用于由I/O操作所指定的每个数据传输的地址控制结构,并从至少一个信道转发每个地址控制结构到网络接口,每个地址控制结构指定在相应ACW的本地信道存储器中的位置; 通过网络接口转发I/O命令消息到至少一个I/O设备; 响应I/O命令消息,从包括地址控制结构的网络接口接收数据传输请求; 响应包括将被存储在所述主存储器中的数据和至少一个数据校验字的数据传输请求,将所述至少一个数据校验字存储在数据校验字保存字段中,并且执行数据校验以确定数据是否已经损坏,以及响应于确定所述数据没有损坏,将所述数据路由到相应ACW指定的主存储器位置;以及 响应包括请求从所述主存储器获取数据的数据传输请求,从由相应ACW指定的主存储器位置获取数据,基于所述数据校验字生成字段生成至少一个数据校验字,将所述至少一个数据校验字附加到所述数据,以及路由所述数据和所述至少一个数据校验字到所述网络接口。
2.如权利要求I所述的方法,所述至少一个数据校验字是从纵向冗余校验字LRC、循环冗余校验字CRC和校验和中选出的。
3.如权利要求I所述的方法,其中所述数据校验字生成字段是数据校验字种子字段,生成至少一个ACW包括将初始值插入到数据校验字种子字段中,用于生成与所述数据传输请求相对应的数据校验字。
4.如权利要求3所述的方法,其中I/O操作是传输模式操作,并且获取信息包括在信道子系统处获取传输命令字TCW,所述TCW包括传输命令控制块TCCB地址字段,含有TCCB地址,所述TCCB包括其每一个均包含I/O命令的多个设备命令字DCW。
5.如权利要求4所述的方法,其中所述数据传输请求是对于如下信息的请求,所述信息包括在传输命令信息单元IU中由网络接口传输到所述控制单元的传输的TCCB,以及利用来自所述TCW的传输命令ACW数据长度信息的所述数据校验字种子字段的所述初始值和所述TCCB生成至少一个数据校验字。
6.如权利要求4所述的方法,其中所述数据传输请求是对于从所述主存储器位置输出数据的请求,利用来自传输写入数据ACW的数据校验字种子字段的初始值和在所述信道处接收的数据的长度生成至少一个数据校验字,以及所述至少一个数据校验字被附加在路由至所述网络接口的输出数据的末尾。
7.如权利要求6所述的方法,其中所述主存储器位置是指定多个输出数据位置的传输间接数据地址TIDA的位置,以及所述至少一个数据校验字是利用所述多个位置中的一个的输出数据的长度信息生成的中间数据校验字。
8.如权利要求4所述的方法,其中所述数据传输请求包括从读取传输数据IU将被存储在所述主存储器中的输入数据,存储所述至少一个数据校验字包括存储从所述读取传输数据IU接收的数据校验字,以及执行所述校验包括利用传输读取数据ACW的数据校验字种子字段和通过所述数据传输请求接收的输入数据的长度生成数据校验字,以及将所接收的数据校验字与所生成的数据校验字进行比较。
9.一种用于在配置用于与控制单元通信的主机系统处执行输入/输出I/O处理操作的装置,所述主机系统包括信道子系统,所述信道子系统被配置为通过网络接口与控制单元通信,所述信道子系统被配置为执行 在主机系统中的信道子系统处获取与I/o操作相关的信息,所述信道子系统包括具有信道处理器和本地信道存储器的至少一个信道;与网络接口通信的信道子系统被配置为在I/o操作期间在所述信道子系统和所述控制单元之间传输数据; 生成至少一个地址控制字ACW,其指定用于在主机系统和控制单元之间传输数据的一个或多个主存储器位置,并在本地信道存储器中存储该至少一个ACW,所述至少一个ACW包括数据校验字生成字段和数据校验字保存字段中的至少其中之一; 生成用于由I/O操作所指定的每个数据传输的地址控制结构,并从至少一个信道转发每个地址控制结构到网络接口,每个地址控制结构指定在相应ACW的本地信道存储器中的位置; 通过网络接口转发I/O命令消息到至少一个I/O设备; 响应I/O命令消息,从包括地址控制结构的网络接口接收数据传输请求; 响应包括将被存储在所述主存储器中的数据和至少一个数据校验字的数据传输请求,将所述至少一个数据校验字存储在数据校验字保存字段中,并且执行数据校验以确定数据是否已经损坏,以及响应于确定所述数据没有损坏,将所述数据路由到相应ACW指定的主存储器位置;以及 响应包括请求从所述主存储器获取数据的数据传输请求,从由相应ACW指定的主存储器位置获取数据,基于所述数据校验字生成字段生成至少一个数据校验字,将所述至少一个数据校验字附加到所述数据,以及路由所述数据和所述至少一个数据校验字到所述网络接口。
10.如权利要求9所述的装置,所述至少一个数据校验字是从纵向冗余校验字LRC、循环冗余校验字CRC和校验和中选出的。
11.如权利要求9所述的装置,其中所述数据校验字生成字段是数据校验字种子字段,生成至少一个ACW包括将初始值插入到数据校验字种子字段中,用于生成与所述数据传输请求相对应的数据校验字。
12.如权利要求11所述的装置,其中I/O操作是传输模式操作,并且获取信息包括在信道子系统处获取传输命令字TCW,所述TCW包括传输命令控制块TCCB地址字段,含有TCCB地址,所述TCCB包括其每一个均包含I/O命令的多个设备命令字DCW。
13.如权利要求12所述的装置,其中所述数据传输请求是对于如下信息的请求,所述信息包括在传输命令信息单元IU中由网络接口传输到所述控制单元的传输的TCCB,利用来自所述TCW的传输命令ACW数据长度信息的所述数据校验字种子字段的所述初始值和所述TCCB生成至少一个数据校验字。
14.如权利要求12所述的装置,其中所述数据传输请求是对于从所述主存储器位置输出数据的请求,利用来自传输写入数据ACW的数据校验字种子字段的初始值和在所述信道处接收的数据的长度生成至少一个数据校验字,以及所述至少一个数据校验字被附加在路由至所述网络接口的输出数据的末尾。
15.如权利要求14所述的装置,其中所述主存储器位置是指定多个输出数据位置的传输间接数据地址TIDA的位置,以及所述至少一个数据校验字是利用所述多个位置中的一个的输出数据的长度信息生成的中间数据校验字。
16.如权利要求12所述的装置,其中所述数据传输请求包括根据读取传输数据IU将被存储在所述主存储器中的输入数据,存储所述至少一个数据校验字包括存储从所述读取传输数据IU接收的数据校验字,以及执行所述校验包括利用传输读取数据ACW的数据校验字种子字段和通过所述数据传输请求接收的输入数据的长度生成数据校验字,以及将所接收的数据校验字与所生成的数据校验字进行比较。
全文摘要
本发明涉及一种用于在配置用于与控制单元通信的主机系统处执行输入/输出I/O处理操作的装置和方法,包括生成用于由I/O操作所指定的每个数据传输的地址控制结构,并从至少一个信道转发每个地址控制结构到网络接口,每个地址控制结构指定在相应ACW的本地信道存储器中的位置;响应包括将被存储在所述主存储器中的数据和至少一个数据校验字的数据传输请求,执行数据校验以确定数据是否已经损坏,响应于确定所述数据没有损坏,将所述数据路由到相应ACW指定的主存储器位置;以及响应包括请求从主存储器获取数据的数据传输请求,从由相应ACW指定的主存储器位置获取数据。
文档编号H04L1/00GK102811112SQ20121017807
公开日2012年12月5日 申请日期2012年6月1日 优先权日2011年6月1日
发明者C·E·巴伯, D·F·卡斯波, J·R·弗拉纳甘 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1