首页> 中国专利> 促进通道子系统与输入/输出设备之间的传输模式输入/输出操作

促进通道子系统与输入/输出设备之间的传输模式输入/输出操作

摘要

一种用于执行以下方法的计算机程序产品:通过通道子系统将进程登录(PRLI)请求消息发送到控制单元,该消息指示所述通道子系统是否支持双向数据传输;从所述控制单元接收PRLI响应消息,该消息指示所述控制单元是否支持双向数据传输;收集多个命令,所述多个命令中的至少一个命令指定输入数据传输并且至少一个命令指定输出数据传输;将至少一个输出数据消息发送到所述控制单元,其中包括要传输到所述控制单元的输出数据,所述输出数据消息与所述多个命令中的至少一个指定输出数据传输的命令关联;并且从所述控制单元接收至少一个输入消息,其中包括要存储在所述主机计算机系统的主存储装置中的输入数据。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2016-10-19

    授权

    授权

  • 2014-03-12

    实质审查的生效 IPC(主分类):G06F13/42 申请日:20120411

    实质审查的生效

  • 2014-02-05

    公开

    公开

说明书

技术领域

本发明一般地涉及输入/输出(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设备与存储器之间传输数据。传输控制字 (TCW)指定一个或多个要执行的I/O命令。对于启动特定I/O操作的命 令,TCW指定与操作关联的存储区域、完成与该区域之间的传输之后所 执行的操作,以及其它选择。

此类I/O操作系统通常涉及处理作为输入数据操作(例如,读取操作) 或输出数据操作(例如,写入操作)的单独操作。这些通常一般不支持双 向操作,具体是指不包括用于产生或传输双向支持指示的能力。

发明内容

一个实施例包括一种用于在被配置为与控制单元通信的主机计算机系 统上执行输入/输出(I/O)操作指令发起的I/O操作的计算机程序产品。 所述计算机程序产品包括有形存储介质,其可被处理电路读取并存储被所 述处理电路执行以执行一种方法的指令,所述方法包括:通过所述主机计 算机系统中的通道子系统将进程登录(PRLI)请求消息发送到所述控制单 元以初始化所述通道子系统与所述控制单元之间的链路,所述PRLI请求 消息包括具有指示所述通道子系统是否支持双向数据传输的值的字段;从 所述控制单元接收PRLI响应消息,所述PRLI响应消息包括具有指示所 述控制单元是否支持双向数据传输的值的字段;向主机操作系统提供支持 双向数据传输的指示;以及响应于执行接收自所述主机计算机系统的所述 I/O操作指令,执行一种方法。所述方法包括:收集与接收自所述主机计 算机系统的I/O操作指令关联的多个命令,所述多个命令中的至少一个命 令指定输入数据传输并且所述多个命令中的至少一个命令指定输出数据传 输;将所述多个命令传输到所述控制单元;将至少一个输出数据消息发送 到所述控制单元,其中包括要传输到所述控制单元的输出数据,所述输出 数据消息与所述多个命令中的至少一个指定输出数据传输的命令关联;并 且从所述控制单元接收至少一个输入消息,其中包括要存储在所述主机计 算机系统的主存储装置中的输入数据,所述输入数据消息与所述多个命令 中的至少一个指定输入数据传输的命令关联。

另一实施例包括一种用于在被配置为与控制单元通信的主机计算机系 统上执行输入/输出(I/O)操作指令发起的I/O操作的装置。所述主机计 算机系统被配置为执行:通过所述主机计算机系统中的通道子系统将进程 登录(PRLI)请求消息发送到所述控制单元以初始化所述通道子系统与所 述控制单元之间的链路,所述PRLI请求消息包括具有指示所述通道子系 统是否支持双向数据传输的值的字段;从所述控制单元接收PRLI响应消 息,所述PRLI响应消息包括具有指示所述控制单元是否支持双向数据传 输的值的字段;向主机操作系统提供支持双向数据传输的指示;以及响应 于执行接收自所述主机计算机系统的所述I/O操作指令,执行一种方法, 所述方法包括:收集与接收自所述主机计算机系统的I/O操作指令关联的 多个命令,所述多个命令中的至少一个命令指定输入数据传输并且所述多 个命令中的至少一个命令指定输出数据传输;将所述多个命令传输到所述 控制单元;将至少一个输出数据消息发送到所述控制单元,其中包括要传 输到所述控制单元的输出数据,所述输出数据消息与所述多个命令中的至 少一个指定输出数据传输的命令关联;并且从所述控制单元接收至少一个 输入消息,其中包括要存储在所述主机计算机系统的主存储装置中的输入 数据,所述输入数据消息与所述多个命令中的至少一个指定输入数据传输 的命令关联。

另一实施例包括一种用于在被配置为与控制单元通信的主机计算机系 统上执行输入/输出(I/O)操作指令发起的I/O操作的方法。所述方法包 括:通过所述主机计算机系统中的通道子系统将进程登录(PRLI)请求消 息发送到所述控制单元以初始化所述通道子系统与所述控制单元之间的链 路,所述PRLI请求消息包括具有指示所述通道子系统是否支持双向数据 传输的值的字段;从所述控制单元接收PRLI响应消息,所述PRLI响应 消息包括具有指示所述控制单元是否支持双向数据传输的值的字段;向主 机操作系统提供支持双向数据传输的指示;以及响应于执行接收自所述主 机计算机系统的所述I/O操作指令,执行一种方法,所述方法包括:收集 与接收自所述主机计算机系统的I/O操作指令关联的多个命令,所述多个 命令中的至少一个命令指定输入数据传输并且所述多个命令中的至少一个 命令指定输出数据传输;将所述多个命令传输到所述控制单元;将至少一 个输出数据消息发送到所述控制单元,其中包括要传输到所述控制单元的 输出数据,所述输出数据消息与所述多个命令中的至少一个指定输出数据 传输的命令关联;并且从所述控制单元接收至少一个输入消息,其中包括 要存储在所述主机计算机系统的主存储装置中的输入数据,所述输入数据 消息与所述多个命令中的至少一个指定输入数据传输的命令关联。

借助该实施例的技术,可以实现其它特征和优点。其它实施例和方面 在此描述并被视为权利要求中声明的本发明的一部分。为了更好地理解本 发明的优点和特征,现在参阅描述和附图。

附图说明

被视为本发明的主题在说明书结尾处的权利要求中专门指出并明确声 明。当结合附图阅读下面的详细描述时,本发明的上述和其它目标、特征 和优点将变得显而易见,在这些附图中:

图1示出集成和使用本发明的一个或多个方面的I/O处理系统的一个 实施例;

图2示出传输控制字(TCW)的一个实施例;

图3示出传输命令控制块(TCCB)的一个实施例;

图4示出包括图3中的TCCB的传输命令信息单元(IU)的一个实施 例;

图5示出图4中的传输命令IU的传输命令头的一个实施例;

图6示出图4中的TCCB的传输命令区域头(TCAH)的一个实施例;

图7示出图4中的TCCB的传输命令区域(TCA)的一个实施例;

图8是说明用于单向数据传输操作的各种数据计数的示例性确定的 表;

图9是说明用于双向数据传输操作的各种数据计数的示例性确定的 表;

图10示出设备命令字(DCW)的一个实施例;

图11示出图10中的DCW的控制标志字段的一个实施例;

图12示出传输命令区域扩展(TCAX)的一个实施例;

图13示出CBC偏移块的一个实施例;

图14是示出用于执行传输模式I/O操作的方法的实施例的流程图;

图15示出用于在通道与控制单元和/或I/O设备之间传输输入和输出 数据的传输数据IU的实施例;

图16示出传输响应IU的一个实施例;

图17示出图16中的传输响应IU的状态区域的一个实施例;

图18示出示例性进程登录(PRLI)请求的组件;

图19示出示例性PRLI响应的组件;

图20示出从通道子系统提供给主机计算机系统OS的示例性通道路径 描述块;以及

图21示出图20中的描述块的示例性通道描述数据。

具体实施方式

本发明的实施例促进计算机系统中的输入/输出(I/O)处理。在一个 实施例中,提供传输命令以管理I/O操作并通过通道路径传输数据。传输 命令传输用于管理数据传输检查以及其它DCW传输的命令元信息 (TCMI)。TCMI可以在一个或多个数据传输信息单元(IU)中定义, 用于定义、指定和验证有关要在I/O操作中传输的数据的信息。传输命令 可以包括询问命令、传输CBC偏移块(TCOB)命令,以及传输TCA扩 展(TTE)命令。

在一个实施例中,I/O处理通过使主计算机增加可发送到设备以执行 I/O操作的命令数来促进。例如,采取传输命令区域扩展(TCAX)形式的 TCMI可从主机发送到设备以增加能够与I/O操作关联的命令数。在一个 实施例中,TCAX通过设备命令字(DCW)发送,该DCW被称为传输 TCA扩展(TTE)DCW,包括除了在传输命令区域(TCA)中发送的命 令之外,另外需要执行的命令。

I/O处理还可通过提供一种装置来促进,通过这种装置,I/O设备可以 在遇到不正确长度记录时继续I/O操作。例如,可在主系统和控制单元或 设备中安装DCW不正确长度功能。该功能提供可被控制单元执行的不正 确长度(IL)检查。可在被发送到设备的DCW中添加抑制不正确长度或 抑制长度指示(SLI)字段。当激活该位时,允许DCW链在控制单元检测 到不正确长度条件时继续。

I/O处理还可通过提供一种装置来促进,该装置用于通过单个I/O操 作,同时将读取和写入命令发送到设备。现有技术TCW通道程序指定所 有写入命令或所有读取命令。双向操作可通过在命令IU的传输命令头 (TCH)中设定一个或多个标志来指定,例如,通过将读取和写入标志设 为1,并同时提供读取和写入数据计数。此外,诸如进程登录(PRLI)请 求消息之类的发起或登录消息中的标志可被设为指示通道子系统支持双向 数据传输。诸如PRLI接受消息之类的响应消息可以包括可被设为指示设 备是否支持双向数据传输的标志。如果主机和控制单元都支持双向数据传 输,但是读取和写入标志在命令IU中设定,则设备不会报告错误。此功 能是现有技术光纤通道协议的改进,光纤通道协议不支持双向数据传输操 作。如在此描述的那样,“双向数据传输”是同时在单个TCW I/O操作内 执行输入和输出数据的传输,例如,在单个TCW I/O操作内同时发送和执 行读取和写入命令。

图1示出I/O处理系统100的示例性实施例,该处理系统包括含有数 据存储装置和/或处理系统的主机计算机系统102,例如国际商业机器公司 推出的大型计算机。IBM是位于美国纽约阿蒙克的国 际商业机器公司的注册商标。此处使用的其它名称可能是国际商业机器公 司或其它公司的注册商标、商标或产品名称。主机计算机系统102包括各 种处理、存储和通信元件。在一个实施例中,主机计算机系统102包括一 个或多个中央处理单元(CPU)104、诸如主存储装置或存储器106、扩展 存储装置或存储器108之类的存储器、由一个或多个CPU104执行的一个 或多个操作系统(OS)110。例如,一个CPU104可以执行操作 系统110和/或操作系统110作为不同的虚拟机实例。CPU104是I/O 处理系统100的控制中心。它包含用于指令执行、中断操作、定时功能、 初始程序加载以及其它机器相关功能的序列化和处理功能。CPU104通过 诸如双向或单向总线之类的连接113连接到主存储器106和/或扩展存储器 108。

主机计算机系统102还包括通道子系统114,该子通道系统提供主系 统101与各种I/O设备116之间的通信接口,它可以由一个或多个控制单 元118控制。I/O设备包括诸如打印机、磁带单元、直接访问存储设备、 显示器、键盘、通信控制器、远程处理设备和基于传感器的设备之类的设 备。在此处的描述中,术语“控制单元”和“设备”可以互换地使用,或 者控制单元可以被视为包括一个或多个设备。通道子系统114在I/O设备 116与主机计算机系统102之间引导信息流。它使得CPU104从直接与I/O 设备116通信的任务中解除出来并允许数据处理与I/O处理并行地进行。 通道子系统114通过诸如总线之类的连接120连接到CPU104、主存储器 106和/或扩展存储器108。

在一个实施例中,通道子系统114通过各个“通道路径”122连接到 每个I/O设备116,这些通道路径通过诸如串行或并行链路之类的连接124 将通道子系统114连接到每个控制单元118。控制单元118可以通过一个 以上的通道路径122连接到通信子系统114,并且I/O设备116可以连接 到一个以上的控制单元118和/或I/O设备116。总之,单独的I/O设备116 可被多个通道路径同时访问。通道路径可以使用各种类型的连接,例如并 行接口、串行I/O接口和FICON I/O接口。例如,串行通道路径可以包括 一个或多个光纤,这些光纤通过例如Fibre通道光纤中的动态开关126连 接到控制单元118,并且并行接口可以包括多个电导体或光纤导体。

在一个实施例中,通道子系统114包括一个或多个单独的通道128, 它们分别通过一个或多个通道路径122连接到一个或多个控制单元118和/ 或I/O设备116。每个通道128包括处理电子元件,例如本地通道微处理 器130以及连接到本地通道微处理器130并可被本地通道微处理器130访 问的本地通道存储器132。本地通道存储器132可以包括诸如通道程序指 定、通道路径标识符、设备号、设备计数、状态指示之类的信息,以及有 关路径可用性和待执行或正在执行的功能的信息。

另外每个通道128中还包括一个或多个子通道。每个子通道是位于通 道存储器132内的数据结构,它们提供有关关联的I/O设备116及其与通 道子系统114的连接的信息。子通道还提供有关I/O操作以及涉及关联的 I/O设备116的其它功能的信息。子通道是一种装置,通过这种装置,通 道子系统114将有关关联的I/O设备116的信息提供给CPU104。在一个 或多个实施例中,通道子系统提供的子通道的数量独立于关联的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处理系统100的一个或多个上述组件进一步在“z/Architecture Principles of Operation(z/Architecture操作原理, 公开号为SA22-7832-08,2010年8月,第9版)”中进行描述,该文档的 内容在此全部纳入作为参考。

I/O操作被描述为涉及主机计算机系统与I/O设备116之间的数据传 输的任何操作。如此处所述,I/O操作包括通道子系统114与设备116之 间的通信(在一个实施例中,通过控制单元118),其中单个命令(例如, 通道命令字或CCW)、包括多个命令的单个命令消息(例如,传输命令 信息单元或传输命令控制块(TCCB))、或多链命令(例如,多个CCW) 从通道子系统114发送到设备。I/O操作还可以包括设备166或关联的控 制单元118响应于接收到和/或执行命令或链命令而产生的一个或多个响应 消息。

在一个实施例中,I/O操作由设备116通过执行OS110产生的I/O指 令而发起,这些指令指定与设备116关联的子通道。此类指令在主系统中 由CPU104执行,具体方式是CPU104将参数发送到通道128或子通道 以请求通道子系统114执行I/O操作中的各种功能。

例如,CPU104通过将参数发送到目标子通道以请求通道子系统114 通过与子通道关联的I/O设备116执行启动功能而执行“START  SUBCHANNEL”指令。通道子系统114通过使用子通道上的信息(其中 包括在执行START SUBCHANNEL指令时传递的信息)查找设备116可 访问的通道路径,并且在选定通道路径之后执行的I/O操作来执行启动功 能。

当诸如START SUBCHANNEL之类的指令由CPU104执行时,通道 128开始执行I/O操作。在一个实施例中,通道子系统114根据高性能 FICON(HPF)协议执行操作,该协议用于通道子系统114与设备116和 /或控制单元118之间的通信。FICON和HPF进一步在“Fibre Channel: Single-Byte Command Code Sets Mapping Protocol–4(FC-SB-4)(光纤通 道:单字节命令代码集映射协议-4(FC-SB-4),T11Project2122-D,2009 年9月22日,修订版3.00)”中进行描述,该文档的内容在此全部纳入作 为参考。

在一个实施例中,START SUBCHANNEL指令的执行将操作请求块 (ORB)的内容传递给通道子系统114。ORB指定包括一个或多个命令字 (例如,下面进一步描述的通道命令字或传输命令字)的地址的通道程序。 存在两种子通道操作模式。在一个实施例中,主机计算机系统102在命令模 式下执行操作并指定采取通道命令字(CCW)形式的命令字。在另一实施 例中,主系统在传输模式下执行操作并指定采取传输命令字(TCW)形式 的命令字。

当安装FCX(光纤通道扩展)功能,并且作为执行指定TCW通道程序 的START SUBCHANNE指令的结果,在子通道上设定启动功能时,子通 道可以进入传输模式。子通道保持处于传输模式下,直到在子通道上重置 启动功能,在其它所有时间上,子通道处于命令模式下。

在命令模式下,通道执行CCW通道程序,该通道程序包括单个通道命 令字或按顺序执行的一系列通道命令字,这些通道命令字控制通道操作的 特定顺序。控制单元通过I/O设备解码、接受和执行CCW命令,执行CCW  I/O操作。被配置为循序执行的一个或多个CCW形成CCW通道程序并且分 别作为一个或多个I/O操作执行。

光纤通道扩展(FCX)功能是可选功能,它提供由传输控制字(TCW) 构成的传输模式通道程序的信息,传输控制字(TCW)指定传输命令控制 块(TCCB)和传输状态块(TSB)。TCCB包括传输命令区域(TCA), 该区域包含一个或多个(例如,最多30)采取设备命令字(DCW)形式的 I/O命令的列表。TCW及其TCCB可以指定读取或写入操作。在一个实施 例中,FCX双向数据传输功能可以安装在支持传输模式操作的系统中,在 连接设备116和控制单元118支持双向数据传输的情况下,该系统允许主机 计算机系统102通过单个传输模式I/O操作同时传输输入和输出数据。当控 制单元118识别双向数据传输时,TCW及其TCCB可以根据设备同时指定 读取和写入数据传输。

在传输模式下,单个传输命令字(TCW)指定在单个消息(而非命令 模式中的各个单独的CCW)中发送的TCCB存储器中的位置(以及一个或 多个数据区域的存储器106或108中的位置)。控制单元118通过解码、接受 和执行TCCB以及其中包括的各个DCW执行传输模式I/O操作。如果ORB 指定TCW通道程序,则通道子系统114使用所指定的TCW中的信息将 TCCB传输到控制单元118。在TCCB被传输到控制单元118之后,TCCB的 内容被通道子系统114忽略,这些内容仅对控制单元118及其关联的I/O设备 116有意义。

在示例性实施例中,控制单元118响应于执行通道程序而产生响应消 息。在某些实例中,控制单元118还可以不执行通道程序而直接产生响应消 息,例如,为了通知通道子系统114通道程序将不执行。控制单元118可以 包括多个元件以支持I/O通信适配器与I/O设备之间的通信,以及支持通道 程序执行。例如,除了一个或多个队列、计时器和寄存器之外,控制单元 118还可以包括控制逻辑以分析和处理消息,从而促进通信和状态监视。

图2示出传输控制字(TCW)140的实施例,该传输控制字存储在主系 统(例如,主存储器106)中并且指定至少一个将从通道128传输到控制单 元118的控制块。在一个实施例中,控制块是传输命令控制块(TCCB), 其内容将被传输到控制单元118和I/O设备116进行处理。当TCW140指定 TCCB时,TCCB包括指定一个或多个设备命令字(DCW)及其关联选择 的TCA。对于指定发起数据传输的命令的DCW(TCCB内包含的控制数据 除外),TCW140指定一个或多个其中包含数据的存储区域。

在一个实施例中,TCA包括传输TCA扩展(TTE)命令,提供该命令 是为了传输可包含在TCCB内的DCW和/或控制数据之外的其它DCW和/ 或控制数据。TTE将TCA扩展(TCAX)传输到控制单元(包括至少一个 DCW)并被视为与其关联的TCA的逻辑扩展(例如,通过将TCCB的最后 一个DCW链接到TTE的第一DCW)。

现在再次参考图2,TCW140的实施例是在64字节边界上指定的64字 节控制块。TCW包括下面所述的多个字段。

例如,多个标志字段142指示正在使用直接还是间接数据寻址查找输入 数据、输出数据或TCCB。输出传输间接数据寻址(TIDA)字段指示输出 数据直接还是间接被寻址。例如,当字0,TCW140的位7为0并且指定输 出数据时,输出数据地址字段144指定绝对存储中的输出数据位置。当位7 为1时,输出数据地址字段144指定TIDA字(TIDAW)或TIDAW列表 (TIDAL)中的第一TIDAW的绝对地址,该地址分别指定一个或多个输 出存储位置。输入TIDA字段指示输入数据直接还是间接地被寻址。例如, 当字0,位5为0并且指定输入数据时,输入数据地址字段146指定输入存储 位置的绝对地址(即,其中存储输入数据的位置)。当位5为1时,输入数 据地址字段146指定TIDAW或TIDAL中的第一TIDAW的绝对地址,该地 址指定一个或多个输入存储位置。传输命令控制块TIDA(TCCB-TIDA) 字段指示TCCB直接还是间接地被寻址。例如,当字0,位6为0时,TCCB 地址字段148指定TCW的TCCB绝对地址,当位6为1时,TCCB地址字段148 指定TIDAW或TIDAL的绝对地址,该地址指定一个或多个TCCB位置。

TCW140还包括传输命令控制块长度(TCCBL)字段150,该字段以 TCCB的字节数指定长度。例如,TCCBL字段包括无符号整数,其值(例 如,当针对单向数据传输加到20或者当针对双向数据传输加到24时)以字 节数指定TCCB的长度。

当指示要传输到主存储器106中的字节数时,读取操作(R)字段152 非零(例如,字1的位14为1)。当指示要传输到主存储器中的字节数时, 写入操作(W)字段154非零(例如,字1的位15为1)。如果R字段152和 W字段154均为1时,将识别到程序检查条件,除非目标设备116和控制单元 118支持双向数据传输。如果W位为1并且TCW为询问TCW时,将识别程 序检查条件。

输出数据地址字段144指示任何要发送到设备的输出数据在存储中的 位置。例如,当字1的位15(W字段位154)为1并且标志字段142(输出TIDA 标志)的位7为0时,字2-3指定绝对存储中的64位输出位置。当W位为1并 且输出TIDA标志为1时,字2-3指定TIDAW或TIDAW列表在绝对存储中的 64位位置,该位置指定一个或多个输出存储位置。输入数据地址字段146 指示当从设备接收任何输入数据时,存储这些任何输入数据的位置。例如, 当字1的位14(R字段位152)为1并且标志字段142的位5(输入TIDA标志) 为0时,字4-5指定绝对存储中的64位输入位置。当R位为1并且输入TIDA 标志为1时,字4-5指定TIDAW或TIDAW列表在绝对存储中的位置,该位 置指定输入存储位置。

传输状态块地址156指定TCW的传输状态块在存储中的地址。例如, 字6-7指定TCW的传输状态块在绝对存储中的64位位置。

传输命令控制块地址字段148指定一个或多个TCCB(直接或间接)地 址。例如,如果TCCB-TIDA位(标志字段的位6)为0,则字8-9指定TCCB 在绝对存储中的64位位置。当TCCB-TIDA位为0时,TCCB被指定为驻留 在存储的连续区域中。如果传输命令控制块TIDA位为1,则字8-9指定 TIDAW或TIDAW列表在绝对存储中的64位位置,该位置指定TCCB在绝 对存储中的位置。当TCCB-TIDA位为1时,TCCB可被指定为驻留在存储 的非连续区域中。

输出计数字段158指定TCW的输出字节数。例如,当字1的位15(W位) 为1时,字10包含TCW的输出字节的无符号整数总计数。输入计数字段160 指定TCW的输入字节数。例如,当字1的位14(R位)为1时,字11包含TCW 的输入字节的无符号整数总计数。

如果TCW指定询问操作,则询问TCW地址字段162指示询问TCW在 存储中的位置。例如,当START SUBCHANNEL指令指定TCW时,不检 查TCW的字15。但是,当CANCEL SUBCHANNEL指令指定作为TCW通 道程序的启动未决,而非状态未决的子通道时,由START SUBCHANNEL 指定的字15的位1-31指定用于发起子通道的询问操作的询问TCW在绝对 存储中的位置。如果当发出CANCEL SUBCHANNLE时,字15包含0,则 不发起询问操作。当发出CANCEL SUBCHANNLE时,字15的位0必须为0, 否则识别程序检查条件,并且指示询问失败状态。当发出CANCEL  SUBCHANNLE并且字15的位1-31不包含0时,字15的位1-31必须在64字节 边界上指定存储位置,否则识别程序检查条件,并且指示询问失败状态。 可以保留字14以将询问TCW地址字段扩展为64位。

现在参考图3和4,传输命令控制块(TCCB)170包括一个或多个单独 的命令作为TCW I/O操作的一部分,并且被通道128通过通道路径发送到控 制单元118和/或设备116。TCCB170使通道不必发送多个消息或信息单 元,另外还将执行操作的责任传递给控制单元并消除控制单元118发送每个 命令的响应的需要。相反,控制单元118可以执行所有命令并将在完成操作 时发送响应。

TCCB170的长度可变,可以包含头信息和尾信息,以及一个或多个(例 如,从1到30)命令作为设备命令字(DCW),这些设备命令字进行逻辑 链接(例如,形成链),以便可以由控制单元118按顺序执行。TCCB170 可以作为单个连续存储块存在,也可以作为多个非连续存储块存在。例如, 上述TCW140中的TCCB TIDA标志用于指定TCCB是否驻留在连续存储 中。

TCCB的实例在图3和4中示出。如图4所示,TCCB170可以从通道128 发送到控制单元118,它作为传输命令信息单元(IU)172的一部分,该信 息单元被发送到控制单元118以发起I/O操作。在一个实施例中,传输命令 IU172由8字节SB-4头174、后跟4字节传输命令头(TCH)176以及TCCB 170组成。TCCB170包括16字节传输命令区域头(TCAH)178、变长传输 命令区域(TCA)180和传输命令区域尾(TCAT)182。TCAT182可以进 一步包括4字节LRC字段184、4字节数据传输长度(DL)字段186,对于双 向操作,包括4字节双向读取数据传输长度(BRDL)字段188。这些字段 将在下面进一步描述。

现在参考图4,SB-4头174提供FC-4寻址信息以识别逻辑路径和设备 116来传输数据。SB-4头174提供包括通道128与控制单元118之间的逻辑路 径的通道图像ID和控制单元ID,以及设备ID的信息。

现在参考图5,TCH176包括有关TCCB170及其关联的设备操作的信 息。在一个实施例中,TCH176包含4字节,并且紧跟传输命令IU172中的 SB-4头174。TCH176包括诸如长度字段(“L1”)190、读取字段(“R”) 192和写入字段(“W”)194之类的字段。L1字段(位于例如位24-29上) 指定TCA180的长度(以字数表示)加上紧跟TCA180的1字LRC字段184。 例如,对于不支持双向操作的控制单元118,传输命令IU172中传输的总数 据量等于L1字段加8(即,L1字段加2字SB-4头、1字TCH、4字TCAH和1 字DL);否则,控制单元识别由数据计数错误造成的传输命令IU完整性错 误。对于支持双向操作的控制单元,传输命令IU172中传输的总数据量等 于L1字段加8(即,L1字段加2字SB-4头、1字TCH、4字TCAH和1字DL) 或者L1字段加9(即,L1字段加2字SB-4头、1字TCH、4字TCAH和1字DL, 以及用于双向操作的1字BRDL);否则,控制单元将识别由数据计数错误 造成的传输命令IU完整性错误。如果未识别到传输命令IU完整性错误,则 TCCB中LRV的位置基于L1字段进行查找并且可以执行LRC检查。

读取(R)字段192指定TCA180包括一个或多个读取或输入命令。在 图5的实施例中,R字段192为R位,位30,当被设为1时,该位指示TCA180 包含一个或多个传输读取数据的命令。当R位被设为0时,TCA180不包含 任何传输读取数据的命令。当R位为1并且W位(例如,位31)为0时,此 操作被称为读取操作。当R位和W位均被设为0时,TCA180不包含任何传 输读取或写入数据的命令,从而指示I/O操作不执行数据传输。当R位和W 位均被设为1时,TCA180可以包含同时传输读取和写入数据的命令,此操 作被称为双向操作。如果指定双向操作但是控制单元118不支持双向操作, 或者控制单元118支持双向操作但是传输命令IU172包含BRDL字段188, 则设备116或控制单元118识别由读取-写入冲突造成的TCH内容错误。当R 位为0并且控制单元118或设备116遇到TCA180中尝试传输读取数据的命 令时,识别由无效读取尝试造成的TCCB内容错误。

写入(W)字段194指定TCA180包括一个或多个写入或输出命令。在 图5的实施例中,W字段为W位,位31,当被设为1时,该位指示TCA180 包含一个或多个传输写入数据的命令。当该位被设为0时,TCA180不包含 任何传输写入数据的命令。当W位为1并且R位(位30)为0时,此操作被 称为写入操作。当W位为0并且控制单元118或设备116遇到TCA180中指定 写入命令的命令时,识别由无效写入条件造成的TCCB内容错误。

现在参考图6,TCA头(TCAH)178的实施例包括有关TCA180的信 息及其中描述的操作,例如TCA长度和设备指示。在该实施例中,字1的 字节3为“L2”长度字段196,该字段包含指定TCA180的长度(以字节数 表示)的无符号二进制整数加TCA头的字2和3,加紧跟TCA180的4字节 LRC字段184。服务操作码字段198(例如,字2的字节0-1)包括指定由TCCB 指定的操作类型的无符号整数值。例如,‘1FFE’的十六进制值指示SB-4 设备I/O操作,‘1FFF’的十六进制值指示SB-4设备支持功能。优先数字 段200(例如,字2的字节3)包括控制单元I/O优先数。

现在参考图7,传输命令区域(TCA)180是变长区域,该区域包含一 个或多个(例如,从1到30)命令作为设备命令字(DCW)202。在一个实 施例中,TCA180为具有4字节字的整数。对于指定设备控制数据的DCW 202,TCA180还包含与每个DCW202关联的控制数据。指定控制数据的每 个DCW202将最大DCW容量减少一个或多个DCW,具体取决于命令关联 数据的大小。对于指定输入或输出数据的DCW202,TCW140指定一个或 多个关联的存储区域,并且DCW指定要传输的字节计数。在一个实施例中, TCA的最大大小为240字节。如图7的实施例所示,当整个DCW202的TCA 180中存在足够空间时,DCW202在紧跟上一DCW202或与上一DCW202 关联的控制数据的字边界上开始。当TCA180中的最后一个DCW202指定 不是整数个字的控制数据时,后续LRC字段184在紧跟控制数据的字边界 上开始。

对于某些设备,DCW202的列表可以扩展为超过TCA180的容量。在 这种情况下,TCA扩展(TCAX)字段可以被指定为包括其它DCW,并且 就像TCAX为输出数据那样进行传输(例如,作为输出传输数据IU的一部 分传输)。但是,TCAX被视为TCA180的逻辑延续,而非传输数据。TCAX 由传输TCA扩展(TTE)DCW在TCA180中指定。TCAX和TTE DCW在 下面进一步描述,并且TCAX的实施例在图12和13中示出。

如图3和4所示,TCCB可以包括传输命令区域尾(TCAT)182,它提 供有关TCCB的附加信息,其中包括各种计数信息。在一个实施例中,当 指定单向数据传输时(将R位或W位设为1)或者不指定任何数据传输时(同 时将TCW中的R位和W位设为0),TCAT182的长度为2个字。当指定双 向数据传输时(同时将TCW中的R位和W位设为1),TCAT182的长度为 3个字。

例如,当指定单向数据传输时,传输计数或数据长度(DL)字段186 指定要传输的总数据的32位无符号整数计数(“传输计数值”)。当指定 读取操作时(TCW R位为1),TCAT中的传输计数字段中的值可通过对 分别指定读取类型命令的DCW202中的计数字段值求和来确定。该总数被 向上取整为最接近的4的倍数,并且取整的总数呈4倍增长以达到传输计数 值。当指定读取操作时,传输计数值应该等于TCW输入计数字段160中的 值,该值向上取整为下一4的倍数,加上4。

当指定写入操作时(TCW中的W位为1),对指定写入命令的DCW202 中的计数字段值求和。此外,指定传输命令元信息(TCMI)的传输的所 有传输命令DCW(下面进一步描述)中的计数字段值加上TCMI中的保留 字段的大小被加到该总数上(需要指出,TCMI保留字段的大小可设为0)。 任何TIDAW指定的控制块检查(CBC)或循环冗余检查(CRC)字节的 以及填充字节的总计数被加到该总数上。该总数被向上取整为最接近的4 的倍数,并且取整的总数呈4倍增长以达到传输计数值。当指定写入操作时, 传输计数值应该等于TCW输出计数字段158中的值,该值向上取整为下一4 的倍数,加上4。当既不指定读取操作,也不指定写入操作时(TCW中的 W位和R位均为0),传输计数值应该为0。

当指定双向数据传输时,DL字段186为写入计数并指定要传输的总输 出数据的32位无符号整数计数。TCAT182中的DL字段(写入计数字段) 中的传输计数值根据上面所述针对写入操作确定。双向读取数据长度 (BRDL)字段188指定要传输的总输入数据的35位无符号整数。BRDL字 段188的传输计数值根据上面所述针对读取操作确定。

在一个实施例中,对于写入操作或双向操作,DL字段应该包含4字节 无符号二进制整数,该整数指定要被通道传输到控制单元以执行操作的字 节数并且包括所有中间和最终的填充字节和CRC字节,如果COB包括在写 入操作的第一传输数据IU中,则它还包括COB、任何COB填充字节和COB  CRC字节。如果TTE DCW位于TCA中,则DL字段还包括TCAX、任何 TCAX填充字节和TCAX CRC字节。

图8和9分别是摘列确定单向和双向传输的TCW输入计数、输出计数和 TCAT传输计数值的表。

对于双向操作,双向读取数据长度(BRDL)字段包括4字节无符号二 进制整数,该整数指定要被控制单元传输到通道以执行操作的字节数,并 且包括需要取整到字边界的任何填充字节(如果尚未位于字边界上)加上4 字节CRC。对于非双向操作,如果传输命令IU包含BRDL字段,则设备应 该识别由读取写入冲突造成的TCH内容错误。

现在参考图10,设备命令字(DCW)202指定要执行的命令。对于发 起特定I/O操作的命令,它指定将被执行操作的字节计数、每当与存储的传 输完成时需要执行的操作,以及其它选项。根据命令指定的操作,由TCW 140的输入数据地址字段146或输出数据地址字段144指定与DCW数据传输 操作关联的一个或多个存储区域,TCW140指定包括DCW202的TCCB 170。输入数据地址字段146或输出数据地址字段144是否直接或间接地指定 存储由TCW140中的输入TIDA和输出TIDA标志指定。

在一个实施例中,DCW202为8字节控制块,该块在字边界上的TCW 140中指定。DCW202包括诸如命令代码字段204、控制标志字段206、控 制数据计数208和DCW数据计数210之类的字段。

命令代码字段204(例如,字0的位0-7)指定要执行的操作。命令是否 有效与设备相关并且取决于TCAH178中服务操作码字段198的值。基本命 令包括读取、写入、控制、检测和传输。通道子系统114区分以下操作:控 制、正向输出(写入)、正向输入(读取、检测、检测ID)、反向输入(反 向读取)、分支(在通道中传输)和传输。当执行时,有些命令不会导致 数据传输,但是导致设备链在一起并在满足所有命令链接条件时开始执行 下一命令。下面描述每个基本操作。

读取命令发起执行实现设备到通道数据传输的设备操作。写入命令发 起执行实现通道到设备数据传输的设备操作。控制命令发起执行使用DCW 中提供的控制数据的设备操作。这些检测命令类似于读取命令,只是数据 从检测指示器获取,而非从记录源获取。控制命令及其关联的控制数据在 执行I/O命令期间提供特定I/O设备的管理和设备的控制。传输命令用于管 理I/O操作和通过通道路径的数据传输,并不是设定特定的命令。这些命令 管理诸如循环冗余检查(CRC)数据之类的控制块检查数据的传输,以及 传输数据IU中其它DCW的传输。

控制数据(CD)计数字段208指定与DCW202关联的控制数据字节数。 例如,字0的字节3指定控制数据长度(以字节数表示)。如果命令代码指 定需要控制数据的命令,并且字0的字节3指定的控制数据计数小于命令所 需的计数,则识别设备检查条件或TCCB内容错误。如果命令代码指定需 要控制数据的命令,并且字0的字节3包含0或者包含指定超过TCA末端(或 者超过指定的TCAX的末端)的值,则识别设备检测程序检查条件或TCCB 内容。

DCW数据计数字段210指定数据(例如,要针对读取或写入操作传输 的数据,即,客户数据)字节计数,该数据由TCW针对DCW202指定。例 如,DCW数据计数包括在图10的DCW202的字1中,并且指定TCW针对该 DCW指定的存储区域中的32位无符号整数字节计数。DCW数据计数字段 210指示在执行DCW期间,要在通道与控制单元之间传输的字节数,不包 括任何填充字节或CRC字节。

现在参考图11,在一个实施例中,DCW202包括多个控制标志206。 链命令(CC)标志212指定需要执行命令链接。在当前设备操作正常完成 时以及在识别设备上的设备末端之后,命令链接导致执行TCA180中的下 一DCW202。CC标志212在TCA中的最后一个DCW中被设为0。在图10的 实施例中,字0的位9(CC位),当为1时,指定命令链接。当为1时,该位 导致下一DCW指定的操作在当前的DCW正常完成时被启动。当控制数据 计数为0时,下一DCW紧跟TCA或TCAX中的DCW。当控制数据计数不为 0时,下一DCW紧跟针对DCW指定的被取整到字边界的控制数据。在一个 实施例中,当链命令标志为1时,下一DCW在TCA或TCAX中的位置通过 将8和CD计数字段中的值加到当前DCW的位置上,并且向上取证到最近的 字边界来确定。如果在TAC的DCW中,链命令标志为1,则下一DCW位置 超过TCA的末端,并且指定TCAX,下一DCW位于指定的TCAX的开始处。

在一个实施例中,控制标志字段包括抑制长度指示(SLI)字段214。 当通道128和控制单元118支持DCW不正确长度功能时,在SLI标志字段214 中提供一个位(例如,位2),该位控制命令链接是否在不正确长度条件上 发生以及当不正确长度条件被控制单元118检测到时,不正确长度是否由该 控制单元在传输响应IU中指示。如果DCW数据计数与设备需要用于写入 DCW的数据量不匹配,或者如果DCW数据计数与设备上可用于读取DCW 的数据量不匹配,则不正确长度条件被控制单元检测到。当通道和控制单 元不支持DCW不正确长度功能时,位2被保留并被通道设为0,被控制单元 忽略。当SLI标志214为1并且针对当前DCW存在不正确长度条件时,命令 链接(如果被指示)应该被允许并且控制单元继续执行下一DCW。如果SLI 标志为0并且针对DCW存在不正确长度条件,命令链接(如果被指示)不 被允许并且控制单元118终止I/O操作。当不正确长度条件针对DCW202存 在并且DCW中的SLI标志214被设为1时,根据下面的描述执行数据传输, 否则终止操作并且应该报告操作的异常终止条件。

对于读取DCW202,如果DCW数据计数大于设备116上可用于命令的 数据量,则应用下面的规则。如果CC标志212为1(指示链),则设备116 上的可用数据被传输到通道128,并且传输填充字节(被设为0),以便针 对DCW202传输的数据量等于DCW数据计数。包括填充字节在内的所有 被传输的数据包括在操作所需的任何CRC计算中。如果CC标志212为0(不 指示链),则设备上的可用数据应该被传输到通道,不应传输任何其它数 据或者传输填充字节(被设为0),以便针对DCW传输的数据量等于DCW 数据计数。被传输的数据加上任何填充字节应该包括在操作所需的任何 CRC计算中。对于这种情况,是否传输填充字节无模型无关。如果DCW 数据计数小于设备上可用于命令的数据量,则仅由等于DCW数据计数的数 据量被针对DCW202传输到通道128。只有被传输的数据应该包括在操作 所需的CRC计算中。

对于写入DCW202,如果DCW数据计数大于设备116需要用于命令的 数据量,则应用下面的规则。如果CC标志212为1(指示链),则DCW数 据计数指定的数据量应该被传输到通道128。被传输的数据应该用于操作所 需的任何CRC计算,并且丢弃设备116不需要的数据。如果CC标志212为0 (不指示链),则设备116所需的数据量被传输到控制单元118。其它数据 被传输到下一中间CRC字,或者直到DCW的数据计数被用完。被传输的 所有数据用于操作所需的任何CRC计算。如果DCW数据计数小于设备116 需要用于命令的数据量,则DCW数据计数指定的数据量被传输到控制单元 118。被传输的数据用于操作所需的任何CRC计算中。

传输命令DCW是一类不指定特定数据传输命令(即,被请求通过主计 算机指令传输的客户数据),而是指定执行与传输模式I/O操作关联的支持 功能的传输命令的DCW。传输命令DCW可以指定控制数据,也可以指定 传输命令元信息(TCMI)的传输。TCMI包括用于控制I/O操作中的传输 功能的数据,例如,设备上的I/O操作状态、有关不能放入或可包含在当前 TCCB中的其它DCW的信息,以及诸如循环冗余检查(CRC)数据之类的 控制块检查(CBC)信息。

当传输命令DCW指定将TCMI传输到设备时,TCMI作为输出数据被 传输(例如,在传输数据IU中)。TCMI的大小与命令相关,例如为4的倍 数。当TCMI的大小为4的偶数倍时,TCMI可通过4个保留字节扩展,使用 TIDAW指定输出存储区域,插入CBC标志在用于指定包含TCMI的存储的 最后一个TIDAW中为1,链命令位在指定TCMI的传输命令DCW中为1, 并且后续DCW指定TCMI或输出数据的传输。需要指出,当传输命令指定 将TCMI传输到设备,并且由于满足上述所有条件而通过4个保留字节扩展 TCMI时,这4个保留字节不包括在传输命令DCW中的数据计数值中,而 是包括在以下值中:用于指定包含TCMI的存储的最后一个TIDAW中的计 数值、TCW中的输出计数值以及关联的TCCB中的传输计数值(对于单向 数据传输,对于双向传输,包括在关联的TCCB中的写入计数值中)。

在一个实施例中,TCMI包括询问信息(通过询问DCW)、CBC偏移 块(通过传输CBC偏移块DCW)和TCA扩展(通过传输TCA扩展DCW)。

图12示出了被称为传输TCA扩展(TTE)命令的一类传输命令DCW指 定的数据的实施例,该命令包括在TCCB170的TCA180中并指定要传输到 控制单元118的TCA扩展(TCAX)220。TCAX被视为TCA180的逻辑扩 展。对于某些设备116,与I/O操作关联的DCW202的列表超过可以容纳在 TCA180中的DCW的数量。在这种情况下,可以在TCW140的末端处包括 TTE DCW,该TCW指定作为输出数据传输的TCAX220(例如,在数据 传输IU中)。TTE DCW的内容可以包括命令代码,该命令代码包括传输 TCA扩展命令(例如,值50hex)。

例如,TCA180的长度可变,最大大小为240,DCW具有8个字节。这 样,在该实例中,可以在TCCB中传输最多30个DCW。但是,对于指定需 要控制数据的控制命令的DCW202,控制数据紧跟TCCB中的每个DCW 202。这样,包含此类命令的TCCB170被限定为小于30个DCW。TTE DCW 可用于指定I/O操作所需的不能放入TCA180的其它DCW。

如图12所示,TCA扩展(TCAX)为变长区域,它是TCA180在另一 传输命令IU或TCCB中的逻辑延续,并且包括DCW列表及其关联的控制数 据。TCAX包含一个或多个用于TCW I/O的其它DCW及其关联的控制数据 (除了在初始TCCB中传输的以外),可通过另一TCCB或传输数据IU发 送以扩展I/O操作所需的DCW列表。在一个实施例中,TCAX的长度为4的 整数倍。

如图12所示,在一个实施例中,TCAX220包括DCW202和/或上一 DCW的控制数据。当TCAX220中的最后一个信息为DCW202时,该DCW 202的末端定义TCAX220中的有意义信息的末端。当TCAX220中的最后 一个信息为控制数据,并且该控制数据在4字节边界上结束时,该控制数据 的末端定义TCAX220中的有意义信息的末端。当TCAX220中的最后一个 信息为控制数据并且该控制数据不在4字节边界上结束时,将填充字节附加 到控制数据上以达到4字节边界并且填充数据的末端定义TCAX220中的有 意义信息的末端。当TCAX220中的有意义信息的大小除以4等于奇数时, 没有保留字节;否则,紧跟TCAX220中的有意义信息的4个字节被保留并 且应该包含0。当TCAX180中的最后一个DCW202的控制数据包含在 TCAX220中时,控制数据是TCAX220中的第一数据。TCAX220中的其 它DCW和控制数据根据针对TCA180定义的方式进行处理。

在一个实施例中,当TCOB DCW(下面进一步描述)不位于TCA180 中时,TTE DCW是TCA180中的第一DCW202。当TCOB DCW位于TCA 180中时,TTE DCW是TCA180中的第二DCW202。TTE DCW数据计数 指定TCAX220的长度并且可以是4个字节的整数倍。TTE DCW控制数据 计数为0并且TTE DCW中的链命令标志被设为1。TTE DCW数据不包括 TCAX CRC或TCAX填充字节。

TTE命令(TTE DCW)应该被发送到指示支持TTE命令的设备,并 且在TCA长度具有特定最大值(例如,60个字)且TCA中的最后一个DCW 的控制数据延伸超过TCA中的最后一个字节,或者TCA长度大于例如58个 字且需要一个或多个其它DCW用于I/O操作时被发送。当COB在写入传输 数据IU中提供时,TCAX应该紧跟COB CRC。当不提供COB时,TCAX 应该通过I/O操作的第一写入传输数据IU发送。

另一类DCW为传输CBC偏移块(TCOB)DCW,它是将CBC偏移块 (COB)传输到控制单元的命令。CBC数据指示控制块检查数据,用于验 证在I/O操作中传输的输入或输出数据的正确量。在一个实施例中,CBC 数据为循环冗余检查(CRC)数据,COB为CRC偏移块,并且TCOB DCW 为传输CRC偏移块DCW。一般而言,循环冗余检查(CRC)为被配置为 检测在通道128与控制单元118之间发送的原始数据的意外改变的错误检测 代码。启用CRC的设备(例如,通道128)计算要发送或存储的每个数据 块的简短、固定长度的二进制序列,并将该序列附加到数据上,从而形成 代码字或“CRC字”。例如,当提供CRC产生时,通道128在发送数据上 产生CRC并插入在最后一个数据字节的末端计算的值。当CRC字被接收或 读取时,接收设备(例如,控制单元118)将其检查值与通过数据块新计算 的值进行比较,或者等价地,在整个代码字上执行CRC并将得出的检查值 与预期剩余常数进行比较。如果检查值不匹配,则块中包含传输数据中的 错误。尽管CBC在此处的实施例中描述为CRC数据,但是并不限于此。

如图13所示,COB222指定要进行写入或读取数据传输(例如,通过 传输数据IU)的传输数据内的中间CRC字的位置。在一个实施例中,当TCA 180中的第一DCW202包含TCOB命令时(即,TCOB DCW),提供COB。 中间CRC偏移是位于数据传输IU中的数据之间以及位于IU末端之前的 CRC字。COB222包含1字值列表,被称为CRC偏移224,每个偏移识别传 输数据中每个中间CRC字的字节偏移。例如,COB是变长控制块,其中包 括4字节条目列表,每个条目识别TIDAW指定的将被插入输出数据的CRC 偏移。

在图13所示的实施例中,COB222包括中间CRC偏移的1至N+1字 (CRC偏移字224)。如果COB222在传输数据IU中提供,则COB还可以 包括填充字节的0或1字以及CRC的1字。可以提供填充字节,以便包含CRC 的字位于并非双字边界的字边界上。COB的最后一个字应该包含CRC,该 CRC涵盖中间CRC偏移0至N以及体填充字(如果存在)。如果提供COB 作为TCOB DCW的控制数据,则应该没有COB填充或CRC,并且控制数 据计数应该等于COB中的中间CRC偏移字段数的4倍。

对于写入操作,TCOB DCW指定COB被传输到设备116。TCOB DCW 命令代码包括例如是值60hex的TCOB命令。COB的位置由控制数据计数 确定并且可以在I/O操作的第一写入传输数据IU中提供,或者作为紧跟I/O 操作的TCOB DCW的控制数据提供。Li8ru,当TCOB DCW的CD计数不 为0时,COB222紧跟TCA180中的TCOB DCW,并且CD计数指定COB中 的CRC偏移数乘以4。当CD计数为0时,COB222被指定为随输出数据传输 的TCMI,并且COB的位置由TCW140中的输出数据地址字段144指定。

COB222中的每个中间CRC偏移224指示与传输数据IU中数据的第一 字节相对的偏移(以字节数表示)。如果COB222在传输数据IU中提供, 则将被写入传输的数据的第一字节是紧跟COB CRC的第一字节(如果不提 供TCAX220)或者是尽管TCAX CRC的第一字节(如果提供TCAX)。 如果在TCA180中提供COB作为DCW控制数据,则将被写入传输的数据的 第一字节是传输数据IU中的第一字节(如果提供TCAX220)。当被在传 输数据IU中提供时,COB在I/O操作的第一写入传输数据IU中提供。

又一类型传输命令DCW是询问DCW,其用于确定设备116上的TCW  I/O操作的状态。询问命令不会在设备116上启动操作,不会影响设备116 的状态,并且不会重置与设备116关联的忠贞和关联的逻辑路径。示例性询 问DCW包括询问命令代码(例如,包含值40hex)。除了命令代码以外, SLI标志、计数和CD计数字段,DCW中的所有其它字段都应该包含0,否 则包含设备检测到的程序检查条件。如果询问DCW的CD计数大于0,则指 定询问数据。

对逻辑路径和正在执行TCW I/O操作的设备116执行询问操作,以获取 与设备116上的操作状态相关的数据。在一个实施例中,询问操作的TCCB 170包括具有询问命令代码(例如,X’40)的单个DCW。询问操作的TCAH 178可以包含被设为1以针对操作指定读取数据传输的R位。当控制单元118 接受指定询问命令的传输命令IU时,在控制单元118上识别询问操作。当 已经在控制单元118上识别询问操作并且控制单元118能够成功地执行询问 命令时,控制单元118可以在传输响应IU中提供状态,其中包括描述询问 传输命令IU指定的逻辑路径和设备地址的状态的询问扩展状态。

现在参考图14,其中示出执行传输模式I/O操作300的方法的实施例。 所述方法包括一个或多个阶段301-305。在一个实施例中,所述方法包括以 所描述的顺序执行所有阶段301-305。但是,有些阶段可省略,有些阶段可 添加,或者可以更改阶段的顺序。

在阶段301,主计算机(例如,OS110)执行使ORB被传输到通道子 系统114并指定TCW140的指令(例如,START SUBCHANNEL)。在一 个实施例中,与特定于捕捉状态和传输指定TCCB170的TCW字段的可用 性相关的程序检查条件由通道子系统114检查以确定是否将TCCB170传输 到I/O设备116。如果此类程序检查条件存在,则不传输TCCB170并且识别 程序检查条件。例如,检查指定可用存储位置的TCCB地址字段148。如果 TCCB-TIDA标志为1,则还检查TCCB地址字段148指定位于四倍长字边界 上的地址。下面进一步描述其它程序检查条件。

在阶段302,当通道128将包括TCW140的控制块(例如,传输命令控 制块(TCCB)170)及关联控制信息的传输命令IU172发送到选定设备116 时,使用I/O设备发起TCW I/O操作(例如,通过控制单元118)。在一个 实施例中,与I/O操作的执行和设备操作(例如,命令、输入数据和输出数 据)关联的信息在通道128与控制单元118之间作为信息单元(IU)执行。 在一个实施例中,IU采取SB-4信息单元(IU)的形式。

在一个实施例中,IU或其它消息借助一个或多个交换,在通道与控制 单元之间发送。对于所有SB-4链接控制功能和在命令模式下执行的所有 SB-4设备级功能,需要由两个单向交换构成的交换对(一个交换由通道128 用于发送IU,另一交换由控制单元118用于发送IU)。对于在传输模式下 执行的设备级功能,使用单个双向交换,也称为传输交换。在执行SB-4链 接控制功能或执行命令模式下的SB-4设备级功能期间由通道128发送的IU 被限于一个交换,在操作期间由通道接收的IU被限于另一交换。通道128 发送IU的交换被称为出站交换,通道128接收IU的交换被称为入站交换。 当出站交换和入站交换同时存在于通道128与控制单元118之间以执行相同 的链接级或设备级功能时,我们认为存在交换对,控制单元118被视为连接 到通道128。在单个连接中使用的通道程序仅使用一个交换对。如果在执行 通道程序期间因为关闭交换而删除了连接,则产生新的交换对以完成通道 程序。通道128可通过发送作为未经请求的命令或未经请求的控制信息种类 的IU(或启动IU)(打开新的交换)而发起交换对。控制单元118可通过 发送作为未经请求的控制或未经请求的数据信息种类而发起交换对。

通道和控制单元在执行I/O操作(在传输模式下执行)期间发送的UI 被限于单个双向交换(称为传输交换)。通道128通过发送作为未经请求的 命令种类的传输命令IU(启动IU)打开传输交换。通道128可打开多个传 输交换,每个交换针对不同的设备116或针对位于不同逻辑路径上的同一设 备116。可针对逻辑路径上的特定设备打开新的传输交换,前提是已针对该 设备和逻辑路径存在用于执行询问操作的传输交换;否则,通道128等待现 有的传输交换或交换对关闭,然后才能针对逻辑路径上的设备发起新的传 输交换。

在阶段303,控制单元118接收TCCB170和传输命令IU172,并且可以 在满足特定条件下接受TCCB170。当接收传输命令IU172时,TCCB170 被视为位于控制单元118上,直到控制单元118上的TCCB170执行被认为已 完成。如果由于错误条件不接受传输命令IU172,则将传输响应IU返回到 通道128,并将初始状态标志设为1以指示在设备116上开始执行TCCB170 之前发生错误。控制单元118可以在传输-响应IU(下面描述)中的状态和 I/O扩展状况字段中提供错误信息以识别传输命令IU错误。在一个实施例 中,下面描述的示例性条件应被满足,以便在控制单元118上接受传输命令 IU172:

1)传输命令IU满足以下完整性检查:

a)对于不支持双向操作的控制单元,TCH中的LI字段加8应该指 定一个数据量,使该数据量等于控制单元针对传输命令IU接收的数 据量,否则,应该识别由数据计数错误导致的传输命令IU完整性错 误;

b)对于支持双向操作的控制单元,TCH中的LI字段加8或9应该指 定一个数据量,使该数据量等于控制单元针对传输命令IU接收的数 据量,否则,应该识别由数据计数错误导致的传输命令IU完整性错 误;以及

c)TCCB中的LRC字段应该有效,否则,应该识别由无效的LRC 导致的传输命令IU完整性错误。

2)应该建立指定的逻辑路径,否则将识别“未建立逻辑路径”错误;

3)对于那些需要设备已被安装并准备就绪的命令,设备地址应该指定 已被安装并准备就绪的设备,否则将识别“地址异常”条件;

4)如果控制单元不支持双向数据传输或者传输命令IU不包含BRDL 字段,则不应该在TCH中将R位和W位设为1,否则将识别TCH内容错误;

5)传输命令IU中的TCCB应该满足下面的所有条件,否则将识别 TCCB内容错误:

a)L2字段应该指定正好为8字节的长度,该长度大于L1字段,并 且包含至少为20字节的值且不大于252字节;

b)TCAH的字0的字节1应该为0;

c)TCAH中的格式控制字段应该等于hex’7F’;

d)TCAH中的服务操作码应该包含有效值(请参阅8.13.4.4);

e)如果R位和W位均被设为0,则数据长度(DL)字段应该被0;

6)如果另一TCW I/O操作正在针对传输命令IU中指定的逻辑路径和 设备地址执行,则服务操作码应该指定hex’1FFF’并且TCA的第一DCW中 的命令代码应该指定询问命令代码,否则将识别“无询问第二操作”错误。

在一个实施例中,当传输命令IU172被发送时,通道128考虑存在连接, 当传输命令IU172被接受时,控制单元118考虑存在连接。这样,通道128 不关心控制单元118是否已经接受TCCB170或不关心设备116上I/O操作的 进度,直到控制单元118使用传输响应IU终止I/O操作。在一个实施例中, 通道128可以设定时间窗口,针对该时间窗口从控制单元接收响应,以便如 果通道不在该窗口内接受传输响应IU,通道便会识别传输命令超时。

在阶段304,当TCCB170已被接受时,控制单元118处理TCA180并执 行每个DCW202。所执行的DCW202被识别为当前DCW。当DCW202是 传输模式程序第一DCW(即,TCCB中的第一DCW)并且被I/O设备116 选定执行,或者当在命令链接期间,后续的DCW202接管对I/O操作的控 制时,该DCW202变为当前DCW。要执行的第一DCW可被视为位于TCCB 170中的TCA180的偏移0上。通道程序中的每个其它DCW位于TCA180中 (或TCAX220中),并且在I/O设备116需要DCW时使用。

命令链接由DCW中的DCW链命令(CC)标志控制。该标志指定在用 完当前DCW时采取的操作。链接在TCA内的连续DCW之间发生。当指定 TCAX时,链接还在TCA中的最后一个DCW与TCAX中的第一DCW之间 发生,并且在TCAX内的连续DCW之间发生。当当前DCW指定命令链接, 并且在操作期间未检测到异常条件时,当前DCW的完成导致下一DCW变 为当前DCW并且由设备执行。如果指定TCAX并且下一DCW的偏移超过 TCA的末端,则链继续TCAX的第一DCW,其TCAX偏移通过用计算的偏 移减去TCA长度确定。这样,命令链接以TCA偏移的降序执行,然后当指 定TCAX时,TCAX发生偏移。如果出现诸如关注、设备检查、单位异常 或不正确长度之类的条件(除非DCW中的SLI字段214被激活),则推断操 作顺序,并且与当前操作关联的状态导致产生中断条件,在这种情况下, 不执行新DCW。

在处理TCCB170中的DCW202期间,借助一个或多个传输数据IU在 通道128与控制单元118之间发送被请求通过I/O操作传输的数据。读取操作 仅执行读取数据传输,写入操作仅执行写入数据传输,而双向操作可以同 时执行读取和写入数据传输。

现在参考图15,对于写入操作或双向操作,通道128将一个或多个传输 数据IU310发送到控制单元118以传输用于操作的写入数据312。对于读取 操作或双向操作,控制单元118将至少一个传输数据IU314发送到通道128 以传输针对操作指定的读取数据316。填充字节318可以包括在将针对其计 算CRC的数据区域中的最后一个字内,并且当要涵盖的数据区域不是整数 个数据字时,被用于将数据区域填充到下一字边界。这适用于要被COB、 中间和最终CRC涵盖的数据区域。用于填充字节的值与模型有关。

当传输数据IU是通道128或控制单元118针对TCW I/O操作发送的最 后一个传输数据IU时,最终CRC字段320包括在传输数据IU310、314内。 在一个实施例中,最终CRC字段320包括字对齐32位冗余检查码。对于读 取或写入操作,TCCB中的DL字段指定将在操作期间传输的数据量,该数 据量可以包括所有必要的填充和CRC字节。对于双向操作,TCCB170的 DL字段指定将针对操作的写入数据传输部分传输的数据量,并且BRDL字 段指定将针对操作的读取数据传输部分传输的数据量。这些数据量可以包 括所有必要的填充和CRC字节。

在写入或双向数据传输期间,数据在与TCW I/O操作关联的传输交换 上通过一个或多个传输数据IU310传输到控制单元118。在一个实施例中, 当禁用第一传输就绪操作时,除了操作的第一写入传输数据IU310之外, 通道128还要求从控制单元118获取传输就绪IU,然后才能发送每个传输数 据IU310。控制单元118可通过发送其它传输就绪IU请求其它数据,直到它 针对写入操作请求完TCCB170的DL字段186指定的所有数据。对于写入操 作,控制单元118在完成TCCB中的DL字段指定的数据传输之后发送的下 一IU为传输响应IU。对于双向操作,控制单元118在完成TCCB中的DL字 段指定的数据传输之后发送的下一IU可以为传输数据IU或传输响应IU。

在读取数据传输期间,数据在与TCW I/O操作关联的传输交换上通过 一个或多个传输数据IU314传输到通道128。通过每个传输数据IU发送的数 据量由控制单元118确定,并且可被设为任何值,只要针对操作在所有传输 数据IU314中传输的总数据量不超过DL字段186中的值,或者对于双向操 作,不超过BRDL字段188中的值。对于读取操作,如果控制单元所发送的 数据量小于TCCB中的DL字段,传输响应IU中的剩余计数应该是CU发送 的数据量与TCCB中的DL字段之差。如果控制单元在传输响应IU中提供的 剩余计数不匹配DL与通道实际接收的字节数之差,则通道识别设备级协议 错误。

对于写入和双向操作,传输响应IU中的DL剩余计数应该是通道发送的 数据量与TCCB中的DL字段之差。如果控制单元在传输响应IU中提供的 DL剩余计数不匹配DL与实际被发送到通道的字节数之差,则通道识别设 备级协议错误。对于双向操作,如果控制单元发送的数据量小于TCCB中 的BRDL字段,则传输响应IU中的BRDL剩余计数应该是CU发送的数据量 与TCCB中的BRDL字段之差。如果控制单元在传输响应IU中提供的BRDL 剩余计数不匹配BRDL与通道实际接收的字节数之差,则通道识别设备级 协议错误。

对于写入或双向操作,当禁用第一传输就绪操作时,通道在传输命令 IU之后紧接着发送传输数据IU。对于第一传输数据IU之后的所有来自通道 的传输数据IU和对于不禁用第一传输就绪操作时的所有来自通道的传输 数据IU,通道仅在接收传输就绪IU之后发送写入传输数据IU。通道应该在 每次接收传输就绪IU之后发送传输数据IU,直到传输完TCCB指定的所有 写入数据或接收到传输响应IU。

对于读取或双向操作,控制单元将至少一个传输数据IU发送到通道以 传输针对操作指定的读取数据。

对于双向操作,当禁用第一传输就绪操作未生效时,控制单元选择要 传输的第一传输数据IU。控制单元将传输就绪IU发送到通道以请求传输数 据IU,或者将传输数据IU发送到通道。如果禁用第一传输就绪操作针对操 作生效,则通道在传输命令IU之后接着发送传输数据IU。

对于双向操作,可同时执行写入和读取数据传输。写入数据传输和读 取数据传输可以根据上面的描述执行。除了禁用第一传输就绪操作生效时 的第一传输数据IU之外,通道与控制单元之间的数据传输由控制单元通过 以下方式控制:通过发送读取传输数据IU或通过发送传输就绪IU以请求写 入传输数据IU。

对于双向操作而言,已经通过传输数据IU接收的数据被存储到主机存 储中的顺序与提取主机存储中的数据以通过传输数据IU发送的顺序之间 的关系不可预测。

当通道在禁用第一传输就绪操作生效时候传输第一传输数据IU或者 当控制单元通过发送传输就绪IU从通道请求传输数据IU时,通道通过传输 数据IU发送的数据可以针对写入DCW,这些DCW在执行TCA中的读取 DCW之后执行。

如图15所示,一个或多个中间CRC字320可位于通道128发送的传输数 据IU310中。中间CRC字320在传输TCA180指定的整个数据区域之前提供 数据的CRC检查。当COB222通过传输数据IU传输时,COB CRC字322可 以位于传输数据IU310中。

现在再次参考图14,在阶段305,TCW I/O操作由通道128或控制单元 118终止。作为异常条件或终止已发起的程序的结果,通道128可以发起终 止TCW I/O操作。作为完成操作执行的结果或作为在执行命令期间检测到 异常条件的结果,控制单元118可以发起终止操作。控制单元118可通过发 送传输响应IU,或者在特定错误情况下,通过终止交换来发起终止TCW  I/O操作。在一个实施例中,控制单元118可以在以下任何情况下发起终止 TCW I/O操作:已执行TCA180(以及TCAX,如果被指定)中的所有DCW 202;当支持DCW不正确长度功能并且SLI214被设为0时,已检测到DCW 的不正确长度条件;已检测到设备检查条件;诸如传输错误之类的异常条 件;或已识别需要终止交换的另一错误。

图16-18示出可被控制单元118发送的示例性传输响应IU330。传输响 应IU330提供TCW I/O操作的状态,该状态可以包括正常结束状态,或者 当检测到异常条件时,包括指示操作异常终止原因的终止状态。传输响应 IU330还可以包括扩展状态字段,该字段提供进一步的操作状态。传输响 应IU可以关闭传输交换,也可以不关闭传输交换。在一个实施例中,交换 是否被传输响应IU关闭在FC-FS-3头中指示。如果传输交换尚未被传输响 应IU关闭,则通道可以在接收传输响应IU之后发送关闭交换的传输确认 IU。

在一个实施例中,传输响应IU330包括SB-4头332,后跟状态字段334、 状态LRC344和可选的扩展状态字段346,该扩展状态字段包含例如从32 到46字节。当提供扩展状态时,4字节扩展状态LRC字段340可以作为传输 响应IU330的最后一个字提供。如果扩展状态字节数不在字边界上,则将 填充字节添加到扩展状态以取整到下一字边界。SB-4头332具有类似于传输 命令IU的格式,并且针对此交换被设为等于传输命令IU中的SB-4头。

现在参考图17,状态区域334的实施例例如是20字节并包含有关TCW  I/O操作的信息。“状态标志1”字段336包括一个或多个异常码,这些异常 码被控制单元118设定以报告在TCW I/O操作期间检测到的异常条件。示例 性代码包括:

0-由地址异常条件导致的设备级异常;

2-由逻辑路径未建立条件导致的链路级拒绝;

3-重置事件通知-重置事件在逻辑路径以及与传输命令IU关联的设 备上发生。当此代码在传输响应IU中设定时,控制单元请求状态的状态确 认。如果接收到状态确认,则在设备上针对逻辑路径重置重置事件条件; 否则重置事件条件保持未决;

4-设备检测到的程序检查/IFCC–控制单元已检测到可能导致报告 程序检查或IFCC的条件。属于此类的错误包括以下错误类型:指示传输命 令IU以损坏的状态到达(例如,TCCB完整性错误)、针对写入数据检测 到无效的CRC,并且针对逻辑路径和设备地址接收到并非询问操作的第二 I/O操作。

5-设备检测到的程序检查–控制单元在TCH的内容中检测到错误

在一个实施例中,状态标志1字段336包括不正确长度(IL)标志338。 当通道和控制单元支持DCW不正确长度功能时,位0是Il标志,当被设为1 时,应该指示由DCW偏移指示的DCW不正确长度条件导致终止TCW I/O 操作。如果DCW数据计数不匹配设备针对写入DCW所需的数据量,或者 如果DCW计数不匹配设备上可用于读取DCW的数据量,则控制单元118 检测到不正确长度。

在一个实施例中,如果DCW202包括SLI标志214,则仅当SLI标志214 为0并且当设备状态包括不带设备检查状态的通道结束状态时,IL标志338 才被设为1。当IL标志338在传输响应IU中被设为1时,DCW偏移识别包含 不正确长度条件的DCW,并且DCW剩余计数指示数据传输量,如果有, 则针对不正确长度DCW传输这些数据传输量。针对位于TCA中的不正确长 度DCW之前的DCW的数据传输(如果有)应该完成,并且针对所传输的 数据的所有CRC检查应该已经执行,如下所述。

当包含不正确长度条件的DCW为读取DCW时,在TCW I/O操作期间 针对所有被传输到通道的读取数据将最后一个传输数据IU发送到通道 INCLUDES CRC。如果写入DCW位于TCA中的不正确长度读取DCW之 前,则针对这些写入DCW的数据应该被控制单元接收并且应该针对数据执 行CRC检查。TCA中紧跟不正确长度读取DCW的写入DCW的数据应该根 据需要传输到控制单元以获取写入数据的CRC并执行CRC检查。

不正确长度条件不被询问命令、传输CRC偏移命令或TTE命令识别, 无论通道和控制单元是否支持不正确长度功能。

传输响应IU330还可以包括数据长度剩余计数(DLRC)字段340。对 于写入操作和双向操作,DL剩余计数为32位无符号二进制整数,该整数指 定传输命令IU中的DL字段与实际从通道接收的字节数之差。对于读取操 作,DL剩余计数为32位无符号二进制整数,该整数指定传输命令IU中的 DL字段与实际发送到通道的字节数之差。

对于双向操作,BRDL剩余计数字段342还包括在传输响应IU300中。 对于双向操作,BRDL剩余计数为32位无符号二进制整数,该整数指定传 输命令IU中的BRDL字段与实际发送到通道的字节数之差。

状态标志3字段344可被控制单元118用于提供有关关联的传输模式操 作的信息。该字段可以包括扩展状态已发送(ESS)位以指示包括可能的 检测数据的扩展状态已通过传输响应IU发送。该扩展状态包括扩展状态 (ES)标志,这些标志包括诸如ES类型码字段之类的字段。类型码包括I/O 状态(扩展状态区域包含传输模式I/O操作的有效结束状态)、I/O异常(扩 展状态区域包含有关由异常条件导致的传输模式I/O操作终止的信息),以 及询问状态(扩展状态区域包含询问操作的状态)。

当ES标志中的ES类型码为I/O异常时,ES包括原因代码(RC)。示例 性原因代码包括:

1-TCCB完整性错误:控制单元确定TCCB以损坏的状态到达(当异 常码4在状态标志1字段中指示时提供);

2-检测到无效的CRC:在已接收的数据上检测到无效的CRC(当异 常码4在状态标志1字段中指示时提供);

3-不正确TCCB长度指定(当异常码5在状态标志1字段中指示时提 供);

4-TCAH指定错误(当异常码5在状态标志1字段中指示时提供);

5-DCW指定错误:存在错误,其中DCW由扩展状态中的DCW偏移 字段指定(当异常码5在状态标志1字段中指示时提供);

6-传输方向指定错误:扩展状态中的DCW偏移指定的DCW所指定的 命令指定数据传输方向,该方向与TCH中指定的传输方向不同,或者R位 和W位在TCH中均被设为1并且控制单元不支持双向数据传输(当异常码5 在状态标志1字段中指示时提供);

7-传输计数指定错误(当异常码5在状态标志1字段中指示时提供);

8-两个I/O操作处于活动状态:尽管I/O操作在设备上处于活动状态, 但是第二非询问TCCB已被传输到设备进行执行。RCQ字段无意义。当异 常码4在状态标志1字段中指示时提供该原因代码。

9-CRC偏移块中的一个或多个条目指示中间CRC不在适合于设备的 位置上和/或当异常码4在状态标志1字段中指示时提供正在执行的命令。

扩展状态还可以提供原因代码限定符(RCQ),该限定符提供有关I/O 异常原因的其它信息。不同的原因代码限定符类型可用于不同的错误类型, 例如TCCB完整性错误、输出数据CRC错误、不正确TCCB长度指定、 TCAH指定错误以及DCW指定错误。TCCB完整性错误的示例性RCQ包 括:

0-无其它消息;

1-数据计数错误-针对传输命令IU传输的数据量不等于不支持双向 操作的控制单元的TCH中的L1字段加上8指定的数据量,或者不等于不支 持双向操作的控制单元的L1字段加上8或9指定的数据量;以及

2LRC错误-传输命令IU上的LRC无效。

DCW指定的示例性RCQ包括:

1-保留字段指定错误:包含0所需的DCW中的保留字段包含非零值;

2-标志字段命令链接指定错误:命令链接位为1,并且下一DCW的偏 移使得下一DCW的部分或全部扩展超过TCA的末端,或者命令链接位为0 并且3个以上未使用字节保留在TCA中;

3-控制数据计数指定错误:CD计数指定超过TCA的末端的控制数据;

4-TCOB DCW位置错误:第一TCOB DCW不是TCA中的第一DCW;

5-TCOB DCW复制错误:在TCA中指定多于1个TCOB DCW;

6-TCOB DCW多计数指定错误:CD计数和DCW数据计数均为0或非 零;

7-TCOB DCW方向错误:TCOB DCW在TCA中指定,并且TCH中的 W位为0;

8-TCOB DCW链错误:TCOB DCW中的链命令位为0;

9-TCOB计数指定错误:TCOB DCW具有非零的CD计数或不是4的倍 数的数据计数;

10-TTE DCW位置错误:未指定TCOB DCW并且遇到不是TCA中的 第一DCW的TTE DCW,或者已指定TCOB DCW,并且遇到不是TCA中 的第二DCW的TTE DCW;

11-TTE DCW复制错误:在TCA中遇到多于1个TTE DCW;

12-TTE DCW CD计数指定错误:TTE DCW中的控制数据计数指定不 为0的值;

13-TTE DCW数据计数指定错误:TTE DCW中的数据计数指定小于8 或不是4的倍数的值;

14-TTE DCW方向错误:指定TTE DCW并且TCH中的W位为0;

15-TTE DCW链错误:TTE DCW中的链命令位为0;以及

16-TCAX指定错误:指定TTE DCW并且以下任一项为真:

TCA的长度为58个字或更少,或者

TCA的长度为59个字,并且TCA中的最后一个DCW指定控制数据以及 经扩展超过59个字的控制数据长度,或者

TCA的最大长度为60个字并且TCA中的最后一个字包含DCW的第一 个字。

传输方向指定错误的示例性RCQ包括:

1-读取方向指定错误:DCW指定输入操作并且TCH中的R位为0;

2-写入方向指定错误:DCW指定输出操作并且TCH中的W位为0。 注意-当指定TCOB或TTE DCW并且TCH中的W位为0时,识别DCW指 定;

3-读取-写入冲突:TCH中的R位和W位均为1并且控制单元不支持双 向操作,或者控制单元支持双向操作但是传输命令IU不包含BRDL字段, 或者R位和W位均不为1,但是传输命令IU包含BRDL字段;

传输计数指定错误的示例性RCQ包括:

1-读取计数指定错误:对于读取操作,TCCB中的DL字段指定的值 不等于TCA中的DCW加上填充字节和CRC指定的总数据字节计数;对于 双向操作,TCCB中的BRDL字段指定的值不等于TCA中的读取DCW加上 填充字节和CRC指定的总数据字节计数。

2-写入计数指定错误:TCCB中的DL字段指定的值不等于TCA中的 DCW加上中间填充字节、中间CRC、最终填充字节和最终CRC字节指定 的总数据字节计数,如果写入数据传输的第一传输数据IU中包括COB,则 计数包括COB、任何COB填充字节和COB CRC字节。如果TCA中包括TTE  DCW,则计数还包括TCAX和TCAX CRC字节。

当通道子系统检测到设计错误时,执行程序检查。对于传输模式操作, 设计错误还可被I/O设备116检测到并报告为程序检查。程序检查条件可能 是由以下任一原因导致:

无效的TCW指定:当检测到以下任一条件时,识别无效的TCW指定:

1.TCW中针对0检查的保留字段不包含0。

2.非零值在TCW格式字段中指定。

3.TCW中的读取位和写入位均为1,TCW标志字段的位10为0,未安 装FCX双向数据传输功能或指定的设备不支持双向数据传输。

4.TCW标志字段中的位10为0并且TCW中的TCCB长度字段指定的长 度小于12或大于244。

5.TCW标志字段中的位10为1并且TCW的写入操作(W)位为0,TCW 的读取操作(R)位为0,或者两者均为0。

6.TCW标志字段中的位10为1并且指定的子通道不与已被配置为传输 光纤通道服务请求的控制单元关联。

当使用TTE DCW时,在存在以下任一条件时识别设备检测的程序检 查:

1.当未指定TCOB DCW时,TTE DCW不是TCA中的第一DCW。当指 定TCOB DCW时,TTE DCW不是TCA中的第二DCW。

2.指定TTE DCW并且未指定写入操作(即,TCW中的W位为0)。

3.TTE DCW中的链命令为0。

4.指定一个以上TTE DCW。

5.TTE DCW中的控制数据计数字段不包含0。

6.计数字段包含小于8的值或者不是4的倍数的值。

7.对于TCA,以下任一项均为真:

TCA不包含至少一个不是传输命令DCW的DCW。

TCA包含一个或多个不是传输命令DCW的DCW并且TCA的最后一个 DCW中的链命令标志为0。

当使用TTE DCW并且其它TCMI和/或输出数据紧跟TCAX时,以下各 项应该为真;否则可以识别设备检测到的程序检查:

TCW中的输出-TIDA标志(标志位7)必须为1;或者

当TIDAW用于传输TCAX并用于传输数据时,插入CBC控制必须在或 仅在用于传输TCAX的最后一个TIDAW中设为1。当TIDAW仅用于传输 TCAX时,没必要在或仅在最后一个TIDAW中设定插入CBC。

在处理TCA期间,当检测以下任一条件时,可识别TCCB内容错误:

1.所遇到的第一TCOB DCW不是TCA中的第一DCW;

2.在TCA中遇到第二TCOB DCW;

3.当TCAH中的W位为0时,在TCA中遇到TCOB DCW;

4.TCOB DCW未设定链标志;

5.遇到TCOB DCW,其中CD计数和数据计数均为0;

6.遇到TCOB DCW,其中CD计数和数据计数均为非零值;

7.遇到TCOB DCW,其中CD计数为0,数据计数不是4的倍数;

8.遇到TCOB DCW,其中数据计数为0,CD计数不是4的倍数;

9.未指定TCOB DCW并且TTE DCW不是TCA中的第一DCW,或者 指定TCOB并且TTE DCW不是TCA中的第二DCW;

10.当TCAH中的W位为0时,在TCA中遇到TTE DCW;

11.TTE DCW未设定链标志;

12.在TCA中遇到第二TTE DCW;

13.遇到TTE DCW,其中CD计数为非零值;

14.遇到TTE DCW,其中数据计数为0或者不是4的倍数;

15.指定TTE DCW并且以下任一项为真:TCA的长度为58个字或更 少;TCA的长度为59个字,TCA中的最后一个DCW指定控制数据并且控 制数据长度经扩展超过59个字;或者TCA的最大长度为60个字并且TCA中 的最后一个字包含DCW的第一个字;

16.DCW包含需要控制数据的命令,并且CD计数字段为0或者包含指 定超过TCA的末端的数据的值;

17.DCW包含非零的CD计数字段并且命令不允许提供控制数据;

18.在写入操作期间,设备在TCA中遇到尝试执行读取数据传输的命 令;

19.在读取操作期间,设备在TCA中遇到尝试执行写入数据传输的命 令;

20.CC位在DCW中为0并且3个以上未使用的字节保留在TCA中;

21.CC位在DCW中为1并且下一DCW位置被确定为距离TCA的末端 小于8个字节,从而指示未提供TCAX,或者已提供TCAX但是下一DCW 位置被确定为距离TCAX的末端小于8个字节;

22.对于读取操作或双向操作,当TCA中的读取DCW变为当前DCW 时,所有之前的读取DCW和当前DCW的数据计数之和加上所有填充字节 和CRC字节超过TCCB中的DL字段,或者,对于双向操作,超过TCCB中 的BRDL字段;

23.对于读取操作或双向操作,当TCA中的最后一个DCW变为当前 DCW时,所有读取DCW的数据计数之和加上所有填充字节和CRC字节不 等于TCCB中的DL字段,或者,对于双向操作,不等于TCCB中的BRDL 字段;

24.对于写入操作或双向操作,当TCA中的DCW变为当前DCW时, 所有写入DCW的数据计数之和加上所有填充字节和CRC字节(包括所有 中间填充字节和CRC字节)以及COB字节、COB填充字节和COB CRC字 节(如果传输数据IU中包括COB)以及TCAX字节、TCAX填充字节和 TCAX CRC字节(如果存在TCAX)超过TCCB中的DL字段,或者

25.对于写入操作或双向操作,当TCA中的最后一个DCW变为当前 DCW时,所有写入DCW的数据计数之和加上所有填充字节和CRC字节(包 括所有中间填充字节和CRC字节)以及COB字节、COB填充字节和COB  CRC字节(如果传输数据IU中包括COB)以及TCAX字节、TCAX填充字 节和TCAX CRC字节(如果存在TCAX)不等于TCCB中的DL字段。

在一个实施例中,在执行命令模式或传输模式操作之前,建立通道子 系统114与控制单元118和/或设备116之间的链路。与一个或多个控制单元 具有物理连接的I/O系统中的每个通道128被称为“N_Port”,其具有唯一 标识符(“N_Port_ID”)。同样,每个控制单元118也可以被称为N_Port, 其具有关联的N_Port_ID。通道128和控制单元118分别可以包括多个通道 图像或控制单元图像。每个N_Port包括地址标识符,该标识符在登录进程 初始化和执行期间指定。显式N_Port登录可在初始化处理期间通过N_Port 登录(PLOG)扩展链路服务执行。当N_Port使用另一N_Port执行N_Port 登录时,该N_Port被视为通过其它N_Port登入。

在一个实施例中,通道子系统与控制单元之间的链路初始化使用进程 登录(PRLI)扩展链路服务(ELS)执行。PRLI ELS的一般方面(包括 PRLI ELS请求和响应的格式)在“Fibre Channel:Link Services(FL-LS-2) (光纤通道:链路服务(FL-LS-2),T11Project2103-D,2008年6月26日, 修订版2.00)”中给出,该文档的内容在此全部纳入作为参考,其中针对 FC-SB-4的特定设定在下面的部分中定义。

在PRLI进程中,支持PRLI的通道128根据其配置将请求发送到每个控 制单元118,其配置也支持进程登录ELS以确定控制单元118是否支持传输 模式操作。在一个实施例中,PRLI请求在建立逻辑路径之前,在通道初始 化期间发送,并且还可以作为进程登出(PRLO)的结果发送。PRLI ELS 用于在通道128与控制单元118之间交换进程登录服务参数。PRLI ELS请求 可以在建立与控制单元的逻辑路径时由通道发送到控制单元,并且适用于 所有已建立的逻辑路径。这些参数可以通过PRLI请求和PRLI响应,在通 道与控制单元之间交换。

在一个实施例中,如果控制单元接收将修改通道中已生效的进程登录 的服务参数的PRLI ELS请求,则控制单元使用链路服务拒绝(LS_RJT) 对PRLI ELS请求做出响应。LS_RJT响应通过原因代码hex'09'“此时无法 执行命令请求”发送。在控制单元发送LS_RJT之后,控制单元应该将进 程登出(PRLO)ELS请求发送到通道以允许通过通道重试要成功执行的 PRLI ELS请求。

现在参考图18,PRLI请求包括服务参数页,其中可以包括用于建立服 务参数的各种字段。例如,服务参数页400可以包括识别传输模式或FC-4 协议的类型码字段(例如,被设为hex'1B'以指示SB-4协议)。类型码扩展 字段404(例如,字0的字节1)被设为0。FC-LS标志字段406(例如,字0 的位16-19)可被通道进行以下设定:

位16-发起者进程关联符有效性:该位被通道设为0,被控制单元忽略;

位17-响应者进程关联符有效性:该位被通道设为0,被控制单元忽略;

位18:建立图像对:该位被通道设为0,被控制单元忽略;以及

位19:保留:该位被通道设为0,被控制单元忽略。

服务参数页可以包括其它字段,例如发起者进程关联符字段408(例如, 字1),该字段被通道设为0,以及响应者进程关联符字段408(例如,字2)。 最大发起者延时字段412(字3的字节0)包含二进制整数,该整数以秒为单 位指定控制单元可以在进程登出(PROL)请求中设为发起者延时的最大 值。PROL请求被通道或控制单元用于终止通道与控制单元之间的传输模 式操作。最大发起者延时值一般基于通道可以在不中断主系统的情况下延 迟发起新的I/O操作的时间量。

FC-SB-4标志字段414(例如,PRLI请求页的字3的字节3)包括一个 或多个下面描述的标志:

0-支持传输模式。当位0被设为0时,通道不支持传输模式操作。当位 0被设为1时,通道支持传输模式操作。

1-保留。

2-支持DCW不正确长度(IL)功能。例如,当IL标志处于活动状态 时(例如,当位2被设为1时),通道128支持DCW IL功能。当位2被设为0 时,通道128不支持DCW IL功能。DCW IL功能包括支持抑制长度指示器 (SLI)标志214和不正确长度标志338。当支持传输模式的位(位0)等于 0时,位2应该被设为0。

5-支持双向数据传输。当双向数据传输指示处于活动状态时(例如, 位5被设为1),通道128支持双向数据传输。当位5被设为0时,通道不支持 双向数据传输。仅当支持传输模式的位等于1时,该位才有意义。

7-支持禁用第一传输就绪操作。当位7被设为1时,通道支持禁用第一 传输就绪操作。当位7被设为0时,通道不支持禁用第一传输就绪操作。当 支持传输模式的位(位0)等于0时,位7应该被设为0。

当通道和控制单元指示支持禁用第一传输就绪操作时,则在禁用第一 传输就绪操作生效的情况下执行传输模式中的写入数据传输,以便通道可 以在不必等待来自控制单元的传输就绪IU的情况下,将第一传输数据IU发 送到控制单元。如果通道或控制单元指示它们不支持禁用第一传输就绪操 作,则对于传输模式操作而言,禁用第一传输就绪操作不生效。

现在参考图19,在一个实施例中,PRLI响应包括PRLI接受服务参数 页420,其中可以包括以下字段:例如识别传输模式或FC-4协议的类型码 字段402(例如,被设为hex'1B'以指示SB-4协议)和被设为0的类型码扩展 字段404(例如,字0的字节1)。FC-LS-2标志字段406(例如,字0的位13-19) 可被通道进行以下设定:

位16-发起者进程关联符有效性:该位被控制单元设为0,被通道忽略;

位17-响应者进程关联符有效性:该位被控制单元设为0,被通道忽略;

位18:建立图像对:该位被控制单元设为0,被通道忽略;以及

位19:保留:该位被控制单元设为0,被通道忽略。

响应码字段422(例如,字0的位20-23)包含二进制整数,该整数指示 PRLI请求的结果。响应码值的意义由FC-LS-2定义。第一释放量字段424 (例如,字3的字节0-1)包含二进制整数,该整数指定当通道和控制单元 都支持禁用第一传输就绪操作时,被允许针对写入数据传输通过第一传输 数据IU发送的最大数据量(例如,以4k字节为单位)。0值指示没有第一 释放量限制。第一释放量字段424可由所有支持禁用第一传输就绪操作的控 制单元实现。

PRLI接受服务参数页420还可以包括FC-SB-4标志字段414(例如,字 3的字节3),该字段包括下面定义的一个或多个标志:

0-支持传输模式。当位0被设为0时,控制单元118不支持传输模式操 作。当位0被设为1时,控制单元118支持传输模式操作。

2-支持DCW不正确长度(IL)功能。当位2被设为1时,控制单元118 支持DCW不正确长度(IL)功能。当位2被设为0时,控制单元118不支持 DCW IL功能。DCW不正确长度功能包括支持SLI标志214和不正确长度标 志338。当支持传输模式的位(位0)等于0时,位2应该被设为0。

5-支持双向数据传输。当双向数据传输指示处于活动状态时(例如, 位5被设为1),控制单元118支持双向数据传输。当位5被设为0时,控制单 元118不支持双向数据传输。仅当支持传输模式的位等于1时,该位才有意 义。

7-支持禁用第一传输就绪操作。当位7被设为1时,控制单元支持禁用 第一传输就绪操作。当位7被设为0时,控制单元不支持禁用第一传输就绪 操作。当支持传输模式的位(位0)等于0时,位7应该被设为0。

这样,通道子系统和控制单元可以使用诸如PRLI消息之类的登录消息 相互提供有关它们各自对双向数据传输的支持的指示。通道子系统和/或控 制单元还可以将指示提供给主系统(例如,OS110)。例如,可以将有关 控制单元支持双向数据传输的指示从控制单元提供给OS。在一个实施例 中,通道子系统提供有关通道子系统和/或控制单元功能的指示,其中包括 支持双向数据传输的功能。例如,通道子系统可响应于来自OS的指令而提 供功能信息。

功能指示的实例在图20和21中示出。如图20所示,通道子系统可响应 于OS指令(例如,STORE CHANNEL PATH DESCRIPTION指令)而将 通道路径描述块500发送到OS。通道路径描述块500包括以下字段:例如通 道路径标识符(CHIPID)字段502、描述符504和通道描述特定的数据 (CDSD)字段506。现在参考图21,示例性CDSD字段506是通道路径描述 块500的字(例如,字5),并且包括最大数据长度(例如,支持用于 TCW/TCCB的最大数据长度)字段508。例如,CDSD字段506中被设为(00 01h)的位0-15标志每个TCW/TCCB的最大字节数为64k。扩展支持字段510 (例如,位31)指示诸如FCX之类的协议或协议扩展。附加字段512(例如, 位16-30)可以包括有关通道子系统功能的信息。例如,字段512的BIDI位 (例如,位28)指示通道子系统支持双向数据传输。

进一步的描述在“Determining Extended Capability of a Channel Path (判定通道路径的扩展功能,2008年2月15日提交的序列号为12/030,912的 美国专利申请,该申请被公开为美国专利公开第2009/0210557号)”。

示例性实施例的技术效应和优势包括除了位于TCCB中的I/O命令和 设备支持数据之外,还能将传输支持数据以及其它命令传输到控制单元。 技术效应还包括能够持续处理DCW,不管是否检测到不正确长度条件,这 样允许控制单元继续处理I/O命令,无需终止I/O操作。其它技术效应包括 能够在单个I/O操作期间,在通道与控制单元之间同时传输输入和输出数 据。

此处使用的术语只是为了描述特定的实施例并且并非旨在作为本发明 的限制。如在此使用的那样,单数形式“一”、“一个”和“所述”旨在 同样包括复数形式,除非上下文明确地另有所指。还将理解,当在此说明 书中使用时,根术语“包括”和/或“包含”指定存在声明的特征、整数、 步骤、操作、元素和/或组件,但是并不排除存在或增加一个或多个其它特 征、整数、步骤、操作、元素、组件和/或它们构成的组。

下面权利要求中的对应结构、材料、操作以及所有装置或步骤和功能 元件的等同替换,旨在包括任何用于与在权利要求中具体指出的其它元件 相组合地执行该功能的结构、材料或操作。出于示例和说明目的给出了对 本发明的描述,但所述描述并非旨在是穷举的或是将本发明限于所公开的 形式。在不偏离本发明的范围和精神的情况下,对于所属技术领域的普通 技术人员来说许多修改和变化都将是显而易见的。实施例的选择和描述是 为了最佳地解释本发明的原理和实际应用,并且当适合于所构想的特定使 用时,使得所属技术领域的其它普通技术人员能够理解本发明的具有各种 修改的各种实施例。

所属技术领域的技术人员知道,本发明的各个方面可以实现为系统、 方法或计算机程序产品。因此,本发明的各个方面可以具体实现为以下形 式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、驻留软 件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电 路”、“模块”或“系统”。此外,本发明的各个方面还可以实现为在一 个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质 中包含计算机可读的程序代码。

可以采用一个或多个计算机可读介质的任意组合。计算机可读介质可 以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质 例如可以是—但不限于—电、磁、光、电磁、红外线、或半导体的系统、 装置或器件,或者上述的任意合适的组合。计算机可读存储介质的更具体 的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计 算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦 式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储 器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。 在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质, 该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。

计算机可读的信号介质可以包括例如在基带中或者作为载波一部分传 播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号 可以采用多种形式,包括—但不限于—电磁信号、光信号或上述的任意合 适的组合。计算机可读的信号介质可以是计算机可读存储介质以外的任何 计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令 执行系统、装置或者器件使用或者与其结合使用的程序。

计算机可读介质上包含的程序代码可以用任何适当的介质传输,包 括—但不限于—无线、有线、光缆、RF等等,或者上述的任意合适的组合。

可以以一种或多种程序设计语言的任意组合来编写用于执行本发明的 各个方面的操作的计算机程序代码,所述程序设计语言包括面向对象的程 序设计语言—诸如Java、Smalltalk、C++等,还包括常规的过程式程序设 计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在 用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包 执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计 算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过 任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计 算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过 因特网连接)。

下面将参照根据本发明实施例的方法、装置(系统)和计算机程序产 品的流程图和/或框图描述本发明的各个方面。应当理解,流程图和/或框图 的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指 令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它 可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通 过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图 和/或框图中的一个或多个方框中规定的功能/动作的装置。

也可以把这些计算机程序指令存储在计算机可读介质中,这些指令使 得计算机、其它可编程数据处理装置、或其它设备以特定方式工作,从而, 存储在计算机可读介质中的指令就产生出包括实现流程图和/或框图中的 一个或多个方框中规定的功能/动作的指令的制造品(article of  manufacture)。

也可以把计算机程序指令加载到计算机、其它可编程数据处理装置、 或其它设备上,使得在计算机、其它可编程装置或其它设备上执行一系列 操作步骤,以产生计算机实现的过程,从而使得在计算机或其它可编程装 置上执行的指令提供实现流程图和/或框图中的一个或多个方框中规定的 功能/动作的过程。

在此示出的流程图只是一个实例。在此描述的这些图或步骤(或操作) 可以存在许多变化而不偏离本发明的精神。例如,可以按不同的顺序执行 步骤,或者可以添加、删除或修改步骤。所有这些变化都被视为要求保护 的本发明的一部分。

尽管描述了本发明的优选实施例,但所属技术领域的技术人员将理解 的是,可以在现在和将来进行各种属于下面权利要求范围的改进和增强。 这些权利要求应该被解释为维护对首次描述的本发明的正确保护。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号