传输控制通道程序处理转让专利

申请号 : CN200980129455.0

文献号 : CN102112974B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : D·卡斯皮尔J·弗拉纳格安

申请人 : 国际商业机器公司

摘要 :

提供了一种在I/O处理系统中处理具有链式链接分支的传输控制通道程序的计算机程序产品、设备和方法。该方法包括在控制单元从I/O子系统接收命令消息以执行I/O操作。该方法还包括读取命令消息中的指示在该命令消息之后跟着该I/O操作的随后命令消息的链式链接标记。该方法还包括读取命令消息中的串行化标记,该串行化标记请求将装置状态返回到I/O子系统以选择随后命令消息。该方法还包括执行命令消息中的一个或多个命令,并且响应于结合串行化标记执行所述一个或多个命令而向I/O子系统发送所述装置状态。

权利要求 :

1.一种用于在输入/输出I/O处理系统中的控制单元处理具有链式链接分支的传输控制通道程序的方法,所述控制单元被构造为与I/O子系统进行通信,所述方法包括:接收登录请求消息;

响应于该登录请求消息而发送登录接受消息,所述登录接受消息包括最大链接命令字段,该最大链接命令字段指示控制单元支持的第一命令消息之后的附加命令消息的最大计数;

在控制单元处从I/O子系统接收命令消息以执行I/O操作;

读取所述命令消息中的链式链接标记,所述链式链接标记指示在所述命令消息之后跟着该I/O操作的随后命令消息;

读取所述命令消息中的串行化标记,所述串行化标记请求将装置状态返回到I/O子系统从而选择随后命令消息;

执行所述命令消息中的一个或多个命令;以及

响应于结合串行化标记执行所述一个或多个命令,向I/O子系统发送装置状态。

2.根据权利要求1的方法,还包括:

响应于链式链接标记,确定预计有随后命令消息;以及持续运行与所述I/O操作关联的计数器以跨越所述命令消息和随后命令消息。

3.根据权利要求2的方法,还包括:

接收包括随后一组的一个或多个命令的随后命令消息;

检查与接收的随后一组的一个或多个命令中的每个命令关联的命令链标记以定位最后链式链接的命令;以及响应于定位并执行最后链式链接的命令,发送针对所述I/O操作的具有扩展状态的响应消息。

4.根据权利要求1的方法,其中,所述装置状态包括通道结束CE和装置结束DE,用于指示I/O子系统发送包含跟在所述命令消息中的所述一个或多个命令之后的连续命令的随后命令消息。

5.根据权利要求1的方法,其中,所述装置状态包括通道结束CE、装置结束DE和状态修改符SM,用于指示I/O子系统发送包含跟在所述命令消息中的所述一个或多个命令之后的非连续命令的随后命令消息。

6.根据权利要求1的方法,还包括:

确定与通信交换关联的一个或多个命令不能够执行;

向I/O子系统发送用于指示不能够执行的终止状态消息;以及关闭序列号大于与所述一个或多个不可执行命令关联的序列号的打开的通信交换。

7.根据权利要求1的方法,其中,所述I/O子系统是通道子系统,并且所述命令消息是包括具有一个或多个装置控制字DCW中的所述一个或多个命令的传输命令控制块TCCB的传输命令信息单元。

8.一种在输入/输出I/O处理系统中的通道子系统处理具有链式链接分支的传输控制通道程序的方法,所述通道子系统被构造为与控制单元进行通信,所述方法包括:发送包括通道最大链接命令字段的登录请求消息,该通道最大链接命令字段指示通道子系统支持的在所述命令消息之后排队的另外命令消息的最大计数;

响应于该登录请求消息接收登录接受消息,所述登录接受消息包括控制单元最大链接命令字段,该控制单元最大链接命令字段指示控制单元支持的在所述命令消息之后排队的另外命令消息的最大计数;

将到控制单元的发送限制为符合控制单元最大链接命令字段;

构造命令消息中的链式链接标记以指示在所述命令消息之后跟着随后命令消息以执行I/O操作;

构造所述命令消息中的串行化标记以请求将装置状态返回到通道子系统从而选择随后命令消息;以及将所述命令消息从通道子系统发送至控制单元。

9.根据权利要求8的方法,还包括:

响应于发送所述命令消息而接收装置状态;

响应于接收的装置状态而选择随后命令消息;以及

将选择的随后命令消息从通道子系统发送至控制单元。

10.根据权利要求8的方法,还包括:

建立传输控制字TCW的链式链接序列,其中TCW中的至少一个包括第一指针、第二指针和第三指针,其中,第一指针识别第一传输命令控制块TCCB包括在所述命令消息中;第二指针指向第二TCW,该第二TCW响应于从控制单元接收到第一类型的装置状态而识别第二TCCB包括在随后命令消息中;第三指针指向第三TCW,该第三TCW响应于从控制单元接收到第二类型的装置状态而识别第三TCCB包括在随后命令消息中。

11.根据权利要求10的方法,还包括:

将锚控制块ACB链接到TCW的链式链接序列,所述ACB包括指向响应于接收到对I/O装置的主动询问而访问的询问TCW的询问指针。

12.一种用于在输入/输出I/O处理系统中的控制单元处理具有链式链接分支的传输控制通道程序的设备,所述控制单元被构造为与I/O子系统进行通信,所述设备包括:用于接收登录请求消息的模块;

用于响应于该登录请求消息而发送登录接受消息的模块,所述登录接受消息包括最大链接命令字段,该最大链接命令字段指示控制单元支持的第一命令消息之后的附加命令消息的最大计数;

用于在控制单元处从I/O子系统接收命令消息以执行I/O操作的模块;

用于读取所述命令消息中的链式链接标记的模块,所述链式链接标记指示在所述命令消息之后跟着该I/O操作的随后命令消息;

用于读取所述命令消息中的串行化标记的模块,所述串行化标记请求将装置状态返回到I/O子系统从而选择随后命令消息;

用于执行所述命令消息中的一个或多个命令的模块;以及用于响应于结合串行化标记执行所述一个或多个命令,向I/O子系统发送装置状态的模块。

13.根据权利要求12的设备,还包括:

用于响应于链式链接标记,确定预计有随后命令消息的模块;以及用于持续运行与所述I/O操作关联的计数器以跨越所述命令消息和随后命令消息的模块。

14.根据权利要求13的设备,还包括:

用于接收包括随后一组的一个或多个命令的随后命令消息的模块;

用于检查与接收的随后一组的一个或多个命令中的每个命令关联的命令链标记以定位最后链式链接的命令的模块;以及用于响应于定位并执行最后链式链接的命令,发送针对所述I/O操作的具有扩展状态的响应消息的模块。

15.根据权利要求12的设备,其中,所述装置状态包括通道结束CE和装置结束DE,用于指示I/O子系统发送包含跟在所述命令消息中的所述一个或多个命令之后的连续命令的随后命令消息。

16.根据权利要求12的设备,其中,所述装置状态包括通道结束CE、装置结束DE和状态修改符SM,用于指示I/O子系统发送包含跟在所述命令消息中的所述一个或多个命令之后的非连续命令的随后命令消息。

17.根据权利要求12的设备,还包括:

用于确定与通信交换关联的一个或多个命令不能够执行的模块;

用于向I/O子系统发送用于指示不能够执行的终止状态消息的模块;以及用于关闭序列号大于与所述一个或多个不可执行命令关联的序列号的打开的通信交换的模块。

18.根据权利要求12的设备,其中,所述I/O子系统是通道子系统,并且所述命令消息是包括具有一个或多个装置控制字DCW中的所述一个或多个命令的传输命令控制块TCCB的传输命令信息单元。

19.一种在输入/输出I/O处理系统中的通道子系统处理具有链式链接分支的传输控制通道程序的设备,所述通道子系统被构造为与控制单元进行通信,所述设备包括:用于发送包括通道最大链接命令字段的登录请求消息的模块,该通道最大链接命令字段指示通道子系统支持的在所述命令消息之后排队的另外命令消息的最大计数;

用于响应于该登录请求消息接收登录接受消息的模块,所述登录接受消息包括控制单元最大链接命令字段,该控制单元最大链接命令字段指示控制单元支持的在所述命令消息之后排队的另外命令消息的最大计数;

用于将到控制单元的发送限制为符合控制单元最大链接命令字段的模块;

用于构造命令消息中的链式链接标记以指示在所述命令消息之后跟着随后命令消息以执行I/O操作的模块;

用于构造所述命令消息中的串行化标记以请求将装置状态返回到通道子系统从而选择随后命令消息的模块;以及用于将所述命令消息从通道子系统发送至控制单元的模块。

20.根据权利要求19的设备,还包括:

用于响应于发送所述命令消息而接收装置状态的模块;

用于响应于接收的装置状态而选择随后命令消息的模块;以及用于将选择的随后命令消息从通道子系统发送至控制单元的模块。

21.根据权利要求19的设备,还包括:

用于建立传输控制字TCW的链式链接序列的模块,其中TCW中的至少一个包括第一指针、第二指针和第三指针,其中,第一指针识别第一传输命令控制块TCCB包括在所述命令消息中;第二指针指向第二TCW,该第二TCW响应于从控制单元接收到第一类型的装置状态而识别第二TCCB包括在随后命令消息中;第三指针指向第三TCW,该第三TCW响应于从控制单元接收到第二类型的装置状态而识别第三TCCB包括在随后命令消息中。

22.根据权利要求21的设备,还包括:

用于将锚控制块ACB链接到TCW的链式链接序列的模块,所述ACB包括指向响应于接收到对I/O装置的主动询问而访问的询问TCW的询问指针。

说明书 :

传输控制通道程序处理

技术领域

[0001] 本发明一般涉及输入/输出(I/O)处理,更具体地讲,涉及I/O处理系统中的传输控制通道程序链式链接分支(chain linkedbranching)。

背景技术

[0002] 输入/输出(I/O)操作用于在I/O处理系统的I/O装置与存储器之间传送数据。具体地讲,数据从存储器写入到一个或多个I/O装置,并且通过执行I/O操作将数据从一个或多个I/O装置读入存储器。
[0003] 为了便于I/O操作的处理,采用I/O处理系统的I/O子系统。该I/O子系统耦接到I/O处理系统的主存储器和I/O装置并且引导存储器与I/O装置之间的信息流。I/O子系统的一个例子是通道子系统。通道子系统使用通道路径作为通信介质。每个通道路径包括耦接到控制单元的通道,该控制单元还耦接到一个或多个I/O装置。
[0004] 通道子系统可以采用通道命令字(CCW)在I/O装置与存储器之间传送数据。CCW指定要执行的I/O命令。对于发起某些I/O操作的命令,CCW指定与该操作关联的存储区域、每当向该区域的传送或来自该区域的传送完成时要采取的动作、以及其它选项。
[0005] 在I/O处理期间,通过通道从存储器取CCW的列表。该通道对CCW的列表中的每个命令进行解析并且将多个命令(每个命令是独立的)发送到与该通道耦接的控制单元。控制单元然后对这些命令进行处理。通道跟踪每个命令的状态并且控制何时将下一组命令发送到控制单元进行处理。通道确保每个命令被独立地发送到控制单元。另外,通道推断与处理控制单元对于每个命令的响应相关联的特定信息。基于每个CCW执行I/O处理可以涉及通道子系统的大量处理开销,这是因为通道解析CCW,跟踪状态信息并且对来自控制单元的响应作出反应。

发明内容

[0006] 一个示例性实施例包括一种用于在控制单元处处理具有链式链接分支的传输控制通道程序的计算机程序产品,该控制单元被构造为与I/O处理系统中的I/O子系统进行通信。该计算机程序产品包括可由处理电路读取并且存储由处理电路执行以执行一种方法的指令的有形存储介质。该方法包括在控制单元接收来自I/O子系统的命令消息以执行I/O操作。该方法还包括读取命令消息中的链式链接标记,该链式链接标记指示在所述命令消息之后跟着该I/O操作的随后命令消息。该方法还包括读取命令消息中的串行化标记,该串行化标记请求将装置状态返回到I/O子系统以选择随后命令消息。该方法另外包括执行命令消息中的一个或多个命令,以及响应于结合串行化标记执行所述一个或多个命令而向I/O子系统发送装置状态。
[0007] 另一个示例性实施例包括一种在I/O处理系统中的控制单元处处理具有链式链接分支的传输控制通道程序的设备。该设备包括被构造为与I/O处理系统的I/O子系统进行通信的控制单元。该控制单元从I/O子系统接收命令消息以执行I/O操作,并且读取命令消息中的链式链接标记。该链式链接标记指示在所述命令消息之后跟着该I/O操作的随后命令消息。控制单元读取命令消息中的串行化标记,该串行化标记请求将装置状态返回到I/O子系统以选择随后命令消息。该控制单元执行命令消息中的一个或多个命令,并且响应于结合串行化标记执行所述一个或多个命令而向I/O子系统发送装置状态。
[0008] 另一个示例性实施例包括一种在控制单元处处理具有链式链接分支的传输控制通道程序的方法,该控制单元被构造为与I/O处理系统中的I/O子系统进行通信。该方法包括在控制单元接收来自I/O子系统的命令消息以执行I/O操作。该方法还包括读取命令消息中的链式链接标记,该链式链接标记指示在所述命令消息之后跟着该I/O操作的随后命令消息。该方法还包括读取命令消息中的串行化标记,该串行化标记请求将装置状态返回到I/O子系统以选择随后命令消息。该方法另外包括执行命令消息中的一个或多个命令,以及响应于结合串行化标记执行所述一个或多个命令而向I/O子系统发送装置状态。
[0009] 另一个示例性实施例包括一种在通道子系统处理具有链式链接分支的传输控制通道程序的计算机程序产品,该通道子系统被构造为与I/O处理系统中的控制单元进行通信。该计算机程序产品包括可由处理电路读取并且存储由处理电路执行以执行一种方法的指令的有形存储介质。该方法包括构造命令消息中的链式链接标记以指示在所述命令消息之后跟着随后命令消息以执行I/O操作。该方法还包括构造命令消息中的串行化标记以请求将装置状态返回到通道子系统从而选择随后命令消息。该方法还包括将命令消息从通道子系统发送至控制单元。
[0010] 另一个示例性实施例包括一种在I/O处理系统中的通道子系统处理具有链式链接分支的传输控制通道程序的设备。该设备包括被构造为与I/O处理系统的控制单元进行通信的通道子系统。该通道子系统构造命令消息中的链式链接标记以指示在所述命令消息之后跟着随后命令消息以执行I/O操作。该通道子系统还构造命令消息中的串行化标记以请求将装置状态返回到通道子系统以选择随后命令消息。另外,通道子系统将命令消息从通道子系统发送到控制单元。
[0011] 通过本发明的技术实现附加特征和优点。本发明的其它实施例和方面在这里被详细描述并且被认为是要求保护的发明的一部分。为了更好理解本发明的优点和特征,参照说明书和附图。

附图说明

[0012] 现在将参照附图仅仅作为例子描述本发明的实施例,在附图中:
[0013] 图1示出了包括并使用本发明的一个或多个方面的I/O处理系统的一个实施例;
[0014] 图2示出了根据本发明的一个方面的控制单元和通道子系统的一个实施例;
[0015] 图3示出了根据本发明的一个方面的具有链式链接分支的传输控制字(TCW)通道程序的一个实施例;
[0016] 图4示出了根据本发明的一个方面的用于识别I/O处理系统的兼容控制单元的链接协议的一个实施例;
[0017] 图5示出了图4的链接协议的请求消息的一个实施例;
[0018] 图6示出了图4的链接协议的接受消息的一个实施例;
[0019] 图7示出了根据本发明的一个方面的锚(anchor)控制块的一个实施例;
[0020] 图8示出了根据本发明的一个方面的TCW的一个实施例;
[0021] 图9示出了根据本发明的一个方面的从通道子系统传送至控制单元的命令消息的一个实施例;
[0022] 图10示出了根据本发明的一个方面的用于在通道与控制单元之间进行通信以执行图3的具有链式链接分支的TCW通道程序的链接协议的一个实施例;
[0023] 图11示出了根据本发明的一个方面的用于在通道子系统提供TCW通道程序链式链接分支的过程的一个实施例;
[0024] 图12示出了根据本发明的一个方面的用于在控制单元提供TCW通道程序链式链接分支的过程的一个实施例;以及
[0025] 图13示出了包括本发明的一个或多个方面的制造品的一个实施例。

具体实施方式

[0026] 根据本发明的一个方面,链式链接分支便于输入/输出(I/O)从而实现传输控制通道程序部分的有条件执行。还可以提供对传输控制通道程序的各部分之间的程序控制中断的支持。传输控制通道程序通过减少用于执行I/O处理的I/O处理系统的部件之间的通信,使I/O处理变简单。例如,减少了I/O通信适配器(例如,通道)与控制单元之间的交换和序列的数目。这是通过向控制单元发送多个命令和/或数据而非发送单独的通道命令字(CCW)而实现的,所述多个命令和/或数据被整批地分组以在控制单元执行。
[0027] 用CCW实现的通道程序(也称作“CCW通道程序”)包括很大程度的用于执行任务的握手。例如,使用CCW通道程序写4千字节的数据块通常需要:打开交换;发送定义范围命令和数据;发送定位记录命令和数据;以及将写命令和数据从通道发送到控制单元。控制单元通常通过打开交换并且发送用于确认该写命令的响应,当完成写命令时发送状态消息并且关闭它打开的交换,来进行响应。通道然后可以通过关闭它打开的交换进行响应。使用TCW通道程序,传输命令控制块(TCCB)可以作为命令块从通道发送到控制单元,从而避免了使用CCW通道程序以其它方式执行的通道与控制单元之间的许多消息。例如,TCW通道程序能够避免打开交换以响应控制单元接收到写命令。当运行TCW通道程序替代CCW通道程序时多个命令序列上的累积效应能够导致节省大量时间,并且由此整个I/O处理系统的吞吐量增加。在一个示例性实施例中,I/O处理系统能够支持命令模式下的CCW通道程序和传输模式下的TCW通道程序。传输模式是指通道向控制单元传输命令和数据而不解释或区分传输的命令和数据。
[0028] 在一个示例性实施例中,用于命令模式通信的链接协议是FICON(Fibre Connectivity,光纤连接性)。在“Fibre Channel Single ByteCommand Code Sets-3 Mapping Protocol(FC-SB-3),T11/Project 1357-D/Rev.1.6,INCITS(March 2003)”中描述了关于FICON的信息,该文献的全部内容通过引用并入本文。例如,用于传输模式通信的链接协议可以是光纤通道协议(FCP)。具体地讲,能够使用FCP链接协议的三个阶段,从而允许使用支持FCP的主机总线适配器来执行数据传送。另外在“Information Technology-Fibre Channel Protocol for SCSI,ThirdVersion(FCP-3),”T10 Project1560-D,Revision 4,September 13,2005”中描述了FCP及其各阶段,该文献的全部内容通过引用并入本文。应该理解,在本发明的范围内可以使用这些协议和/或类似协议的其它版本。
[0029] 多个命令(例如,装置命令字或者“DCW”)能够包括在TCCB中,该TCCB的内容经由一个或多个地址引用(间接或直接)而定位在传输控制字(TCW)中。在一个示例性实施例中,TCW从操作系统(OS)或其它应用发送到I/O通信适配器,该I/O通信适配器继而将TCCB在一命令消息中转发到控制单元以进行处理。控制单元对每个命令进行处理,而不由I/O通信适配器跟踪相对于那些个体命令的状态。所述多个命令还称作通道程序,该通道程序在控制单元上而非在I/O通信适配器上被解析和执行。
[0030] 单个TCCB的大小可以根据链接协议或缓冲器大小约束进行限制,这进而能够限制与TCCB关联的命令的数目和/或数据的量。与可包括在单个TCCB中的命令的数目或者数据量相比,一些I/O操作可以包括更多数目的命令或者更大的数据量。在一个示例性实施例中,采用与TCCB关联的多个TCW的链式链接以创建更大的TCW通道程序,从而允许单个I/O操作跨越多个TCW和TCCB。还支持程序控制中断(PCI)以将链式链接的TCW通道程序的进展的中间通知从通道发送到OS,使OS能够释放或重用先前在PCI之前已经为TCCB的一个或多个命令分配的资源。PCI用作简洁状态指示器,而不在每个TCCB之后要求完全的扩展状态消息。TCW通道程序的链式链接与PCI支持能够增强将冗长CCW通道程序转换到与单个TCCB能够保持的命令的数目相比将包括更大数目的命令的、链式链接的TCW通道程序。另外,链式链接的TCW通道程序比运行一系列单独的TCW通道程序更高效,因为可以将扩展状态消息拖延直至完全的链式链接TCW通道程序完成,而不是对每个单独的TCW通道程序发送扩展状态消息。此外,与一系列单独的TCW通道程序(每个单独的TCW通道程序完成I/O操作的一部分)相比,当运行链式链接TCW通道程序时,能够进一步减少构造和管理通信所涉及的开销。
[0031] 如果利用闭环或分支,则一些I/O操作会更加高效。例如,为了在I/O装置上定位数据,可以重复执行带有搜索参数的搜索命令,直到找到搜索参数。在一个示例性实施例中,TCW和TCCB被修改为包括支持TCCB之间的条件分支的链式链接分支以执行I/O操作。可以在TCW和TCCB中定义串行化位以提供DCW之间的跳跃状态。I/O通信适配器向控制单元发送包含“n”个DCW的第一组TCCB。响应于控制单元针对第一组n个DCW向I/O通信适配器提供状态,I/O通信适配器检查该状态并且确定要取回多个TCCB中的哪一个并发送到控制单元。
[0032] 参照图1描述包括并使用本发明的一个或多个方面的I/O处理系统的一个例子。I/O处理系统100包括主机系统101,主机系统101例如还包括主存储器102、一个或多个中央处理单元(CPU)104、存储控制元件106和通道子系统108。主机系统101可以是大规模计算系统,诸如大型机或者服务器。I/O处理系统100还包括一个或多个控制单元110以及一个或多个I/O装置112,将在下文中描述它们中的每个。
[0033] 主存储器102存储数据和程序,这些数据和程序能够从I/O装置112输入。例如,主存储器102可以包括一个或多个操作系统(OS)103,这些操作系统103由一个或多个CPU104执行。例如,一个CPU104可以执行Linux操作系统103和z/OS操作系统103,作为不同的虚拟机实例。主存储器102可直接寻址并且通过CPU 104和通道子系统108提供数据的高速处理。
[0034] CPU 104是I/O处理系统100的控制中心。它包含用于指令执行、中断动作、定时功能、初始程序加载和其它机器相关功能的排序和处理设施。CPU 104经由连接114(例如,双向或单向总线)耦接到存储控制元件106。
[0035] 存储控制元件106经由连接116(例如,总线)耦接到主存储器102;经由连接114耦接到CPU 104;并经由连接118耦接到通道子系统108。例如,存储控制元件106控制由CPU 104和通道子系统108进行的请求的排队和执行。
[0036] 在一个示例性实施例中,通道子系统108提供主机系统101与控制单元110之间的通信接口。如上所述,通道子系统108耦接到存储控制元件106,并且经由连接120(例如,串行链接)耦接到每个控制单元110。连接120可以实现为光链接,采用光纤通道构造(例如,光纤通道网络)中的单模或多模波导。通道子系统108引导I/O装置112与主存储器102之间的信息流动。它免除了CPU 104直接与I/O装置112进行通信的任务并且允许与I/O处理并发地进行数据处理。通道子系统108使用一个或多个通道路径122作为管理到达或来自I/O装置112的信息流时的通信链接。作为I/O处理的一部分,通道子系统108还执行路径管理功能:测试通道路径可用性、选择可用通道路径122以及启动用I/O装置112执行操作。
[0037] 每个通道路径122包括通道124(在一个例子中,如图1所示,通道124位于通道子系统108内)、一个或多个控制单元110以及一个或多个连接120。在另一个例子中,还可以用一个或多个动态开关(未示出)作为通道路径122的一部分。动态开关耦接到通道124和控制单元110并且提供对附接到该开关的任两个链接的物理互连能力。在另一个例子中,还可以令多个系统(由此为多个通道子系统(未示出))附接到控制单元110。
[0038] 另外,通道子系统108内有子通道(未示出)。对通过通道子系统108可访问程序的每个I/O装置112,提供专用的一个子通道。子通道(例如,诸如表的数据结构)向程序提供装置的逻辑表观(appearance)。每个子通道提供关于关联的I/O装置112的信息以及它的对于通道子系统108的附接。子通道还提供了关于涉及关联的I/O装置112的I/O操作和其它功能的信息。子通道是通道子系统108向CPU 104提供关于关联的I/O装置112的信息的手段,其中,CPU 104通过执行I/O指令获得该信息。
[0039] 通道子系统108耦接到一个或多个控制单元110。每个控制单元110提供操作并控制一个或多个I/O装置112的逻辑,并且通过使用公共设施使得每个I/O装置112的特性适于由通道124提供的链接接口。这些公共设施提供I/O操作的执行、关于I/O装置112和控制单元110的状态的指示、通道路径122上的数据传送的定时控制和一定等级的I/O装置112控制。
[0040] 每个控制单元110经由连接126(例如,总线)附接到一个或多个I/O装置112。I/O装置112接收信息或者将信息存储在主存储器102和/或其它存储器中。I/O装置112的例子包括读卡器和打孔器、磁带单元、直接存取存储装置、显示器、键盘、打印机、点击装置、远程处理装置、通信控制器和基于传感器的设备等。
[0041] 在“ z/Architecture Principles of Operation,”Publication No.SA22-7832-05,6th Edition,April 2007、标题 为“System For TransferringData Between I/O Devices And Main Or Expanded Storage UnderDynamic Control Of Independent Indirect Address Words(IDAWS)”的美国专利No.5,461,721(Cormier等人,1995年10月24日授权)和标题为“Method And System For Pipelining The Processing Of ChannelCommand Words”的美国专利No.5,526,484(Casper等人,1996年6月11日授权)中进一步描述了I/O处理系统100的以上部件中的一个或多个,上述各文献的全部内容通过引用并入本文。IBM是位于Armonk,New York,USA的国际商业机器公司的注册商标。这里使用的其它名称可以是国际商业机器公司或者其它公司的注册商标、商标或产品名称。
[0042] 现在参照图2,更加详细地描述支持链式链接分支TCW通道程序执行的图1的控制单元110和通道124的一个实施例。控制单元110包括控制单元控制逻辑202,控制单元控制逻辑202对经由连接120从通道124接收的包含一个或多个TCCB的命令消息进行解析和处理。控制单元控制逻辑202能够从在控制单元110接收的TCCB提取DCW和控制数据,从而经由连接126控制装置,例如I/O装置112。控制单元控制逻辑202向I/O装置112发送装置命令和数据以及从I/O装置112接收状态信息和其它反馈。控制单元控制逻辑202可以使用控制单元链逻辑204执行在控制单元110接收的命令消息的各种检查以及确定适当的响应。例如,控制单元链逻辑204能够向通道124通知支持的链接的命令的最大数目。控制单元链逻辑204还可以处理填充、错误长度抑制、链式链接以及DCW等级的链式链接分支。尽管与控制单元控制逻辑202分离地示出了控制单元链逻辑204,但是应该明白,控制单元链逻辑204可以并入作为控制单元控制逻辑202的一部分。
[0043] 控制单元控制逻辑202能够访问并控制控制单元110内的其它元件,诸如控制单元定时器206和控制单元寄存器208。控制单元定时器206可以包括多个定时器功能,用于跟踪完成一个I/O操作序列或单个I/O操作花费多少时间。控制单元定时器206还可以包括一个或多个倒计数定时器,用于监视和中止在预定时间内没有完成的I/O操作和命令。在一个示例性实施例中,控制单元定时器206在链接的TCCB之间持续运行,直到该链作为跨越多个TCCB的I/O操作完成。控制单元寄存器208可以包括提供配置和状态信息的固定值以及当控制单元控制逻辑202执行命令时更新的动态状态信息。控制单元110还可以包括用于存储与通道124与I/O装置112之间的通信关联的多个消息或状态信息的其它缓冲器或存储器元件(未示出)。控制单元寄存器208可以包括最大链接命令参数,该参数定义控制单元110支持的一个I/O操作的流式命令消息的最大数目。
[0044] 通道子系统108中的通道124包括用于支持与控制单元110的通信的多个元件。例如,通道124可以包括通道控制逻辑210,通道控制逻辑210与通道子系统定时器212和通道子系统寄存器214对接。在一个示例性实施例中,通道控制逻辑210控制通道子系统
108与控制单元110之间的通信。通道控制逻辑210可以经由连接120直接与控制单元控制逻辑202对接以发送命令和接收响应,例如,传输命令信息单元(TC_IU)和响应IU。或者,能够在通道控制逻辑210与控制单元控制逻辑202之间设置消息发送接口和/或缓冲器(未示出)。通道子系统定时器212可以包括多个定时器功能,用于除了由控制单元110跟踪的时间以外还跟踪完成一I/O操作序列花费多少时间。通道子系统212还可以包括一个或多个倒计数定时器,用于监视并中止在预定时间内没有完成的命令序列。通道子系统寄存器214可以包括提供配置和状态信息的固定值、以及当传输命令和接收响应时更新的动态状态信息。
[0045] 在一个示例性实施例中,通道子系统108还包括通道链逻辑216。通道链逻辑216能够管理链式链接、链式链接分支和针对通道124的PCI产生。尽管与通道控制逻辑210分离地示出了通道链逻辑216,但是应该明白通道链逻辑216能够并入作为通道控制逻辑210的一部分。
[0046] 图3示出了具有链式链接分支的TCW通道程序300的一个实施例,TCW通道程序300包括锚控制块(ACB)302以及TCW 304、306、308和310。在一个示例性实施例中,当链中的第一TCW(TCW304)包括用于进行分支的两个接下来的TCW地址时,ACB 302用作初始控制块。为了使在TCW 304到310上支持共同的格式化和改变大小(sizing)约束,原本用于保持询问地址位置的TCW字段可以保持用于进行分支的第二后续TCW地址。作为TCW格式变型,ACB 302的大小可以与TCW 304到310的大小相同,并且包含询问地址位置,这释放了TCW 304中的空间以支持分支。ACB 302被链式链接到TCW 304,TCW 304被链式链接到TCW 306和TCW 310。TCW 306被链式链接到TCW 308。在TCW通道程序300的执行期间,响应于在TCCB 312中执行DCW,基于从控制单元110接收的状态,通道判断是分支到TCW 306还是TCW 310。
[0047] TCW 304还包括到TCCB 312和传输状态块(TSB)314的链接。TCW 306包括到TCCB316、TSB 314和数据区318的链接。TCW 308包括到TCCB 320、TSB 314和数据区322的链接。TCW 310包括到TCCB 324、TSB 314和数据区326的链接。到TCCB、TSB和数据区(例如,TCCB 312、316、320和324)的各种链接能够直接或间接地引用存储器的区域。例如,传输块和数据区312和316-326能够被进一步细分成较小块(邻接或不邻接)并且使用指向较小块的间接列表(例如,传输模式间接数据地址字列表(TIDAL))进行管理。在一个示例性实施例中,TCCB 312从图1的通道子系统108发送至目标控制单元110,目标控制单元
110对TCCB 312中的DCW进行解析和执行。控制单元110在一状态消息中将与TCCB 312中DCW的执行关联的条件报告给通道124。通道124中的通道链逻辑216可以基于该状态消息中的各条件选择向控制单元110发送TCCB 316还是TCCB 324。如果通道选择了TCCB
316,则TCCB 320也被发送至控制单元110。
[0048] TSB 314可以仍在通道子系统108中保持与在控制单元110处执行TCCB 312、316、320和/或324相关联的状态信息,使OS 103能够访问状态信息。数据区318、322和
326能够用于保持要发送到控制单元110的写数据或从控制单元110接收的读数据。
[0049] 在一个示例性实施例中,具有链式链接分支的TCW通道程序300表示单个I/O操作,这个I/O操作包括跨越TCW 304到310以及TCCB 312、316、320和324进行链接的多个命令。TCW 304到310分别包括指向同一TSB 314的TSB地址。如果该I/O操作成功结束,则通道124仅仅使用最后TCW(TCW 308或310)中的TSB地址;然而,如果该I/O操作由于无论什么原因而提早结束,则通道124可以使用通道124可以与之工作的任何TCW中的TSB地址,以获得在TSB314内存储结束状态的存储器地址。
[0050] 图3的TCW还可以包括PCI支持,以当在执行TCCB的控制单元110处在关联的TCCB中的命令的完成时产生PCI。应该明白,TCW 304到310和ACB 302的构造和数目仅仅表示一个实施例,而并非限制范围,这是因为可以存在链式链接有分支的任何数目的TCW,包括多个PCI作为TCW通道程序300的一部分或者不包括PCI。此外,在示例性实施例中可以实现其它分支构造。例如,TCW能够分支返回到它自身地址以在同一命令组上循环,直到条件满足,诸如搜索。分支还能够用于跳过或者循环返回到TCW通道程序300中的任何TCW。
[0051] 为了确定控制单元是否能够支持链式链接的TCW通道程序,可以在向控制单元发送链式链接TCCB之前采用兼容性链接协议。在图4中示出了兼容性链接协议的例子。通道400以缺省通信格式向控制单元402发送过程登录(PRLI)请求404。控制单元42用PRLI接受406进行响应,该PRLI接受406可以包括定义控制单元402可接受的通信参数的信息。
响应于接收到PRLI接受406,通道可以继续向控制单元402发送链式链接TCCB以供执行,诸如链式链接TCCB 312、316、320和324。作为链接初始化和配置的一部分,还可以在通道
400与控制单元402之间交换其它消息。通道400和控制单元402表示图1的通道124和控制单元110的实施例。
[0052] 图5示出了PRLI请求消息500的例子,它表示图4的PRLI请求404的实施例。PRLI请求消息500的净荷可以包括服务参数页,该服务参数页包括用于一个或所有图像对的服务参数。
[0053] PRLI请求消息500的服务参数页可以包括多个字段,诸如类型码502、类型扩展504、最大发起延迟时间506、标记508和最大链接命令510。PRLI请求消息500的页中的每个字段被分配给特定字节地址。尽管在图5中示出了PRLI请求消息500的页内的字段的一种布置,但是应该明白在本发明的范围内可以将字段的顺序重新布置成替换排序。此外,在本发明的范围内,PRLI请求消息500的页中的字段能够被省去或组合。
[0054] 位于字0、字节0的类型码字段502表示协议类型码,诸如光纤通道单字节协议类型码。例如,这个字节中十六进制的值“1B”指示在选择的协议(例如,光纤通道单字节)中定义了这个服务参数页500。位于字0、字节1的类型扩展504可以进一步补充类型码字段502。
[0055] 位于字3、字节0的最大发起延迟时间字段506提供图1的通道124在来自控制单元110的过程退出(PRLO)中的发起延迟时间字段中能够允许的最大时间(例如,以秒为单位)。
[0056] 在一个示例性实施例中,标记508具有下面的定义:
[0057] 位0-传输模式/命令模式。这个位的值设置为一(1)意味着发送方支持命令模式和传输模式两者。如果该位设置为零(0),则发送方仅仅支持命令模式。如果通道124将这个位设置为一,则在控制单元110支持传输模式的情况下可以通过将这个位设置为一进行响应。
[0058] 位1到6-保留。
[0059] 位7-数据的第一传送就绪禁用。如果通道124和控制单元110二者均选择禁用第一写传送就绪信息单元(XFER_RDY IU),则在针对I/O操作的第一TC_IU发送第一数据信息单元(数据IU)之前,在通道124与控制单元110之间执行写的所有I/O操作的第一TC_IU在不使用XFER_RDY IU的情况下操作。如果对于通道程序的当前TC_IU和任何随后的TC_IU有任何附加数据IU,则发送XFER_RDY IU以请求每个附加数据IU。
[0060] 最大链接命令字段510指示在第一TC_IU已经发送到控制单元110后通道124支持流入控制单元110作为针对同一I/O装置112的链式链接命令的附加传输命令信息单元(TC_IU)的最大计数。值可以从0到15,值为零意味着通道124不支持TC_IU的链式链接。X等于1到15的值指示通道124将在第一TC_IU之后针对同一I/O装置112发出X个TC_IU(如果存在X个TCW链式链接在一起的话)并且然后针对完成的每个先前TC_IU发出一个新的TC_IU,直到完全执行了通道程序。
[0061] 在一个示例性实施例中,PRLI请求消息500的页中的剩余字段被保留和/或设置为零(0)。例如,字0的字节2和字节3、字1和字2设置为零。字3的字节1以及字节2的一部分也可以保留。
[0062] 现在参照图6,示出了PRLI接受消息600的一个例子,它表示图4的PRLI接受406的实施例。PRLI接受消息600的净荷可以包括服务参数页。PRLI接受消息600的服务参数页可以包括多个字段,诸如类型码602、类型扩展604、响应码606、第一突发(burst)大小608、标记610和最大链接命令612。PRLI接受消息600的页中的每个字段被分配给特定字节地址。尽管在图6中示出了PRLI接受消息600的页内的字段的一种布置,但是应该明白在本发明的范围内,字段的顺序可以重新布置成替代排序或者能够被省去或组合。
[0063] 位于字0、字节0的类型码字段602是协议类型码并且与图5的类型码字段502类似。位于字0、字节1的类型扩展字段604对应于图5的类型扩展字段504。
[0064] 位于字0、字节2、位4到7的响应码字段606由它的对应协议(例如光纤通道成帧和信令协议(FC-FS))进行定义,在“ANSIINCITS 433-2007,Information Technology Fibre Channel Link Services(FC-LS)”(July 2007)中进一步对其进行了描述,上述文献的全部内容以引用方式并入本文。
[0065] 位于字3、字节0到1、位0到15的第一突发大小608提供了当数据的第一传送就绪禁用标记位(字3、字节3、位7)被设置为1时在第一TC_IU后立即发送的第一数据IU中允许的最大数据量(例如,4k字节数据块的最大数目)。这个字段中的零值指示不存在指定的第一突发大小。
[0066] 标记610与结合PRLI请求消息500描述的图5的标记508类似。控制单元110对这些标记设置与它将与通道124运行的操作模式对应的值。
[0067] 在一个示例性实施例中,最大链接命令字段612是控制单元110对一个I/O操作支持的流式TC_IU的最大计数。控制单元110用等于或小于通道124在PRLI请求消息500的服务参数页中发送至控制单元110的值的计数进行响应。通道124使用从控制单元110接收的计数作为在控制单元110排队的链接TC_IU的最大数目。如果控制单元110用计数零进行响应,则这意味着控制单元110不支持TC_IU的链式链接。
[0068] 在一个示例性实施例中,PRLI接受消息600的页中的剩余字段被保留和/或设置为零(0)。例如,字0、字节2的位1到3以及字1和字2设置为零。字0的字节3被保留并设置为零。字3的字节2的一部分也可以保留。
[0069] 在图7中示出了锚控制块(ACB)700的示例性实施例,作为一种TCW。当链中的第一TCW包括两个TCW地址指针时,图1的通道124可利用ACB 700链接到链中的第一TCW,诸如图3的链接到TCW 304的ACB 302。ACB 700是当一个开始子通道命令使用进行分支的多个TCW时使用的TCW的列表的第一控制块。ACB 700没有将TCCB驱动到控制单元110。当通道124接收到询问I/O装置112的动机时,通道124保留ACB 700的地址以获取询问TCW地址712。
[0070] 在图7所示的示例性ACB 700中,等于二进制“01”的格式字段702指示后面的是ACB 700,而非二进制值“00”表示的标准TCW。二进制值“10”和“11”的格式字段702可以保留用于未来的TCW/ACB格式。ACB 700可以包括保留位置704、706和708以用于可能的未来用途。第一TCW地址字段710是用于执行的链中的第一TCW(例如,TCW304)的地址。当建立ACB 700时,OS 103可以构造第一TCW地址字段710。询问TCW地址字段712包含另一个TCW的地址并且在取消子通道I/O指令的促使下由通道124使用来询问操作的状态。
[0071] 图7所示的ACB 700是如何能够构造ACB的一个例子。可以有其它构造,其中,包括另外的字段和/或不包括图7所示的字段。
[0072] 在图8中示出了传输控制字(TCW)800的示例性实施例。图1的通道124可以利用TCW 800建立I/O操作并且TCW 800没有被发送到控制单元110。图8所示的TCW在单个I/O操作内提供输入和输出数据。TCW 800示出了能够用于利用链式链接分支的TCW(例如,图3的TCW 304)的格式化。
[0073] 在图8所示的示例性TCW 800中,等于二进制“00”的格式字段802指示后面的是标准TCW 800,其它值(例如,01、10、11)等同于TCW格式变型。TCW 800可以包括保留位804用于可能的未来用途。
[0074] TCW 800还包括标记字段806。标记字段806中的保留标记可以设置为零。映射到标记字段806的标记位的例子包括链式链接标记位、串行化标记位、PCI标记位、跳跃状态支持标记位、TIDAL读标记、TCCB TIDAL标记和TIDAL写标记。
[0075] 当链式链接标记位设置为1时,这向通道124通知下一个TCW地址字段828要用作为了继续I/O程序而要执行的下一个TCW。当链式链接标记设置为零时,计数器、定时器和状态跟踪(例如,图2的控制单元定时器206和/或通道子系统定时器212)能够从一个TCCB继续到下一个TCCB,诸如在TCCB 312和316或324之间。如果串行化标记位设置为零,则对于成功执行的中间TCCB,由控制单元110关闭交换,等效于关联的传输响应IU中的FCP零状态。如果串行化标记位设置为1,则在传输响应IU中发送状态响应。直到执行了链式链接通道程序的最后TCCB或者直到控制单元110遇到提早结束条件,才传送具有扩展状态的全传输响应IU。由于TCW 800保留在通道124本地,所以链式链接标记的状态能够被发送至控制单元110,作为(作为TC_IU的一部分的)TCCB中的链式链接TCCB标记。
[0076] 如果链式链接标记位设置为1并且串行化标记位设置为1,则通道124等待直到当前TCW完成,然后获取下一个TCW并且将下一个TCCB发送到控制单元110(例如,TCW 304到TCW 306或者310)。在一个示例性实施例中,如果软件将另一个TCW附加到当前TCW之后或者如果对于当前TCW和后面的TCW存在共同数据地址,则串行化标记位设置为1。此外,如果要执行的下一个TCW/TCCB取决于来自I/O装置112的结束装置状态,则串行化标记位可以设置为1。当串行化标记位设置为1时,TCCB中的串行化要求TCCB标记位也设置为1,从而向控制单元110通知在传输响应IU中向通道124发送装置状态。
[0077] 如果设置了链式链接标记和PCI标记,则当TCW 800完成时,通道124产生中间状态中断。这可以导致将关联的子通道标记为子通道活跃、装置活跃和中间状态未决。
[0078] 跳跃状态支持标记位指示对于TCW 800是否支持跳跃状态。响应于确定期望TCCB中的DCW之间的非顺序执行,控制单元110可以发送作为在传输响应IU中设置的通道结束(CE)、装置结束(DE)和状态修改符(SM)的组合进行编码的跳跃状态。SM指示控制单元110检测到已经出现了状态修改条件,以及应该执行非顺序指令而非继续进行到下一个顺序指令。当接收到通过CE、DE和SM的组合确定的跳跃状态并且链式链接、串行化和跳跃状态支持标记位全都设置为1时,TCW 800的字14和字15被用于获取要执行的下一个TCW(CE、DE和SM状态字段830的下一个TCW地址)。如果跳跃状态支持标记位设置为零并且接收到跳跃状态,则通道124产生程序校验。
[0079] 在一个示例性实施例中,当输入数据地址字段818包含TIDAL的地址时,TIDAL读标记设置为1。如果TIDAL读标记设置为零,则输入数据地址字段818包含数据地址。在一个示例性实施例中,当TCCB地址字段822包含TIDAL的地址时,TCCB TIDAL标记设置为1。如果TCCB TIDAL标记设置为零,则TCCB地址字段822对TCCB直接寻址。TCCB TIDAL标记允许操作系统软件或管理程序对功能分层以及在用户通道程序前进行附加。在一个示例性实施例中,当输出数据地址字段816包含TIDAL的地址时,TIDAL写标记设置为1。如果TIDAL写标记设置为零,则输出数据地址字段816包含数据地址。
[0080] TCW 800还包括TCCB长度字段810,TCCB长度字段810间接表示TCCB的长度并且可用于确定TCCB的实际长度。
[0081] TCW 800中的读/写位812用于指示作为执行TCW 800的结果是否正在读和/或写数据。在一个示例性实施例中,读/写位812中的读位设置为1以指示作为执行TCW 800的结果,输入数据正在从I/O装置112传送到主机系统101中的系统存储器(例如,主存储器102)。读/写位812中的写位设置为1以指示作为执行TCW 800的结果,输出数据正在从主机系统101中的系统存储器(例如,主存储器102)传送到I/O装置。
[0082] 输出数据地址字段816包括输出数据(如果有的话)的地址。如上所述,输出数据地址字段816的内容可以是输出数据的TIDAL的地址(例如,间接地址)或者输出数据的实际地址(例如,直接地址)。输入数据地址字段818包括输入数据(如果有的话)的地址。如上所述,输入数据地址字段818的内容可以是输入数据的TIDAL的地址或者输入数据的实际地址。
[0083] TCW 800还包括传输状态块地址字段820。I/O操作的传输响应IU中的完成状态的一部分(例如,扩展状态部分)存储在这个地址。TCW 800中的TCCB地址字段822包括TCCB在系统存储器中的地址。如上所述,TCCB是针对TCW 800执行的DCW所驻留的控制块。另外如上所述,TCCB地址字段822的内容可以是TCCB的TIDAL的地址或者TCCB的实际地址。
[0084] TCW 800中的输出计数字段824指示针对输出操作通过TCW/TCCB传送的输出数据的量。在一个示例性实施例中,输出计数字段824指定由要传送的TCW(输出数据地址816)设计的输出存储区中的字节数。TCW 800中的输入计数字段826指示针对输入操作通过TCW/TCCB传送的输入数据的量。在一个示例性实施例中,输入计数字段826指定由要传送的TCW(输入数据地址818)设计的输入存储区中的字节数。
[0085] 在一个示例性实施例中,TCW 800的字12和字13用作CE、DE状态的下一个TCW地址字段828,用于保持当从I/O装置112接收的状态是CE和DE并且链式链接和串行化标记位设置为1时要执行的下一个TCW的地址。例如,在图3的具有链式链接分支的TCW通道程序300中,CE、DE状态的下一个TCW地址是TCW 304的字段828并且可以是TCW 306的地址。
[0086] 如上所述,TCW 800的字14和字15可以是CE、DE和SM状态的下一个TCW地址字段830,保持当从I/O装置112接收的状态是跳跃状态(CE、DE、SM)并且链式链接、串行化和跳跃状态支持标记位设置为1时要执行的下一个TCW的地址。例如,在图3的具有链式链接分支的TCW通道程序300中,CE、DE和SM状态的下一个TCW地址是TCW 304的字段830并且可以是TCW 310的地址。因此,根据从控制单元110返回的状态,通道链逻辑216能够在至少两个TCW之间进行选择以确定用于执行的下一个TCW。下一个TCW地址字段828和830可以指向作为通道程序的一部分的任何TCW,包括循环返回到同一TCW以继续执行命令序列。
[0087] 图8所示的TCW 800是如何能够构造TCW的一个例子。可以有其它构造,其中,包括另外的字段和/或不包括图8所示的字段。
[0088] 图9示出了从通道子系统108传送至控制单元110以执行TCW通道程序的命令消息900(例如,传输命令IU)的一个例子。命令消息900示出了能够用于各种TC_IU的格式化。命令消息900包括首标902、传输命令首标(TCH)904、传输命令区域首标(TCAH)906、传输命令区域(TCA)908和传输命令区域尾标(TCAT)910。在一个示例性实施例中,图3的TCCB 312、316、320和324利用在TCAH906、TCA 908和TCAT 910中所示的格式化。
[0089] 首标902可以包括作为地址首标912的多个字,用于定义命令消息900中的最高等级的首标。首标902可以包括诸如通道和控制单元图像ID和装置地址的信息。
[0090] TCH 904包括序列号913。序列号913向控制单元110通知执行都是以I/O装置(例如,I/O装置112)为目标的同一通道I/O操作的一部分的多个命令消息900的顺序。对于每次启动I/O装置112,序列号913在第一TC_IU中从(01h)开始,这与对于最后一次启动同一I/O装置112序列号913结束的值无关。如果I/O操作仅包含一个TCW/TCCB,则序列号913的值设置为零。链式链接在一起的TC_IU按序列号的顺序执行,即使没有按顺序在控制单元110接收到这些TC_IU。
[0091] TCH 904包括任务信息914,任务信息914可以设置成保留值(例如,零)而在传输模式下操作。TCH 904还包括L1长度916和读/写字段918。L1长度916以字数+1来定义TCA 908的长度。L1长度916能够用于限制并定义TCA 908的大小。读/写字段918定义在命令消息900中是正在传送读数据、写数据还是没有传送数据,其中,读是从控制单元110到通道子系统108的传送。
[0092] TCAH 906包括格式字段920和控制字段922。格式字段920和控制字段922可以分别设置为如SPC-4定义的固定值(例如,十六进制的7FH和零),以指示使用了可变长度格式。在“SCSI PrimaryCommands-4(SPC-4)”,Project T10/1731-D,Rev 11,INCITS(May2007)中进一步描述了SPC-4,该文献的全部内容通过引用并入本文。TCAH906还包括保留字段924和926、TCCB标记927以及L2长度928。
[0093] TCCB标记927向控制单元110通知命令消息900(当前TC_IU)的特性。TCCB标记927可以包括链式链接TCCB标记位和串行化要求标记位。设置为1的链式链接TCCB标记向控制单元110通知在当前TC_IU后面还有另一个TC_IU,其是同一I/O操作的一部分。当链式链接TCCB标记设置为1时,计数器、定时器和状态跟踪(例如,图2的控制单元定时器206和/或通道子系统定时器212)能够从一个TCCB继续到下一个TCCB,并且对于这个TC_IU,在TCA 908中的最后DCW(例如,DCW 946)中CC位设置为1。如果串行化要求标记位没有设置为1,则当成功执行了TC_IU时(等效于FCP零状态)可以关闭交换,这等同于仅通道结束(CE)、装置结束(DE)状态。如果串行化要求标记位设置为1,则如在本文中进一步所述在响应IU中发送装置状态。直到执行了TCW通道程序的最后TC_IU或者针对结束了TCW通道程序的TC_IU,才传送扩展状态。通道124基于TCW800中的串行化标记位和TC_IU流化计数的值(能够在图2的通道子系统寄存器214中进行跟踪)向控制单元110发送下一个TC_IU。如果串行化标记设置为零,则通道124发送TC_IU直到最大链接命令(例如,最大链接命令612),并且然后当每个前一TC_IU完成时发送随后的TC_IU。如果串行化标记位设置为1,则通道124等待直到接收到发送到控制单元110的最后TC_IU的状态,然后发送下一个TC_IU。
[0094] 如果链式链接TCCB标记位没有设置为1,则串行化要求标记位没有意义。串行化要求标记位向控制单元110通知:即使链式链接TCCB标记位设置为1,直到在8字传输响应IU中将装置状态发送至通道124,控制单元110才会看见下一个TC_IU。然而,对于这种情况,在传输响应IU中不发送扩展状态。
[0095] L2长度928还称作传输命令区域长度(TCAL)并且可以表示命令消息900中这个位置之后的字节数。L2长度928限制TCA 908的大小。TCAH 906还包括服务动作码930、保留字段932、优先级934和保留字段936。服务动作码930定义用于TCA 908的DCW的类型。可以与在FC-SB-3中定义的FICON命令首标的优先级字节等同地设置优先级934。
[0096] TCA 908包括DCW1和控制数据940、DCW2942、DCW3944和DCW4946。DCW1和控制数据940包括DCW字段,诸如命令948、标记字段950、保留字段952、控制数据(CD)计数954和数据字节计数956。命令948可以与CCW命令字节等效,但是直接由控制单元110而非由通道子系统108进行解释。标记字段950包括保留位以及分配给特定功能的一个或多个位,诸如指示在TCA 908中是否存在附加DCW作为命令链的一部分。标记字段950还可以包括命令链(CC)标记位。
[0097] CC标记位指示到TCA 908中的下一个DCW的命令链。设置为零的CC标记位意味着关联的DCW是程序的最后DCW。如果在TCCB标记字段927中设置了链式链接TCCB标记并且在TCW 800中的标记字段806中设置了链式链接标记位,则能够在TCA 908的最后DCW中设置CC标记位。
[0098] CD计数954是控制数据958的字节计数。CD计数954可以一直填充至下一个4字节边界,从而随后的DCW在4字节边界上开始。数据字节计数956是无填充的数据的4字节计数(例如,用户数据)。当CD计数954不是零时存在控制数据958。在示例性命令消息900中,DCW2942、DCW3944和DCW4946包含与DCW1和控制数据940基本相似的字段。例如,按照与命令948相似的方式对命令960、970和980进行格式化。另外,标记字段962、
972和982的格式化与标记字段950相似。此外,CD计数966、976和986的格式化与CD计数954相似,并且数据字节计数968、978和988的格式化与数据字节计数956相似。尽管在命令消息900中仅仅示出了四个DCW,包括一个具有控制数据的DCW(即,DCW1和控制数据
940),但是应该明白在命令消息900中可以包括具有和不具有控制数据的不同数目的DCW,包括单个DCW。
[0099] TCAT 910包括在整个命令消息900上计算的纵向冗余校验(LRC)字990。通过对初始种子值与包括在LRC计算中的每个字段连续进行异或运算可以产生LRC字990。TCAT910还包括传输数据字节计数992,用于指示对于读或写I/O操作进行传送的字节的总数。
如果在读/写字段918中读和写位都是活跃的,则传输数据字节计数992用于写数据,并且TCAT 910中的双向读数据长度994是读传输数据字节计数。
[0100] 当多个TCW/TCCB被链接以形成链式链接通道程序时,可以如下处理不寻常结束条件。对于链式链接TCW通道程序,暂停子通道命令使得对于I/O装置112所有活跃交换中止并且使得子通道向OS 103返回主要(primary)、次要(secondary)和警告状态。链式链接TCW通道程序的清除子通道命令可以使得对于I/O装置112所有活跃交换中止,然后向I/O装置112发送选择性复位命令。
[0101] 对于通道124向控制单元110发送链式链接在一起的多个TCCB(在TC_IU中)的情况,如果控制单元110不能够执行TCCB中的任何一个,则控制单元110能够通过对于提早结束的TCCB的交换,发送终止结束状态、忙状态(仅仅能够响应于通道程序的第一TC_IU而发送)或重试状态以及状态确认。控制单元110还关闭序列号大于发送了终止状态的交换的序列号的、同一I/O操作的其它未完成交换。当通道124通过针对确认请求的请求检测到终止结束状态IU时,通道124停止针对该操作向控制单元110发送新TCCB。在超时时间(例如,100毫秒)后没有关闭的该I/O操作的所有其它交换被通道124中止。当针对该I/O操作关闭了所有其它交换时,通道124发送确认消息,这关闭最后的交换。
[0102] 如果为了向控制单元110发送链式链接在一起的TCCB而打开的许多交换之中的一个交换丢失,则通道124对该交换设置超时并且向控制单元110发送读交换简要(Read Exchange Concise,REC)以询问该交换。如果控制单元110向通道124通知它没有该交换,则通道124中止针对该I/O操作的与控制单元110的未完成交换。
[0103] 图10示出了用于在通道1000与控制单元1002之间进行通信以执行图3的具有链式链接分支的TCW通道程序的链接协议的一个实施例,其中,通道1000和控制单元1002是图1的通道124和控制单元110的实施例。一旦通道124和控制单元110建立了支持传输模式并且建立了最大数目的链接命令,则能够执行具有链式链接的TCW通道程序。OS(例如,图1的OS 103)建立了图3所示的ACB 302和TCW304、306、308和310以及关联控制块TCCB 312、316、320和324,并且通过指向ACB 302的操作请求块中的地址执行开始子通道命令。ACB 302提供了指向链中的第一TCW的指针(例如,指向TCW 304的第一TCW地址字段710),并且还是当通道1000被促使执行询问时通道1000为了获得询问地址(例如,询问TCW地址字段712)而重新获取的控制块。在这个例子中假设在TCW 304和306中链式链接标记位设置为1并且在TCW 304中串行化标记位设置为1。
[0104] 当尝试获取第一TCW时,通道1000基于格式字段702发现它实际上是ACB(ACB302)。通道1000记住ACB 302的地址并且使用ACB 302中的第一TCW地址字段710获取TCW 304和关联的TCCB312。
[0105] 通道1000在TC_IU 1004中发送TCCB 312,打开序列号为1的与控制单元1002的交换A。由于在TCW 304中串行化标记位和链式链接标记位设置为1,所以通道1000直到对于TC_IU 1004从控制单元1002接收到状态(例如,I/O装置112的状态),才会获取下一个TCW。对于这个例子,在TCW 304中以及在TCCB 312中,读和写位都被设置为零,这告诉通道1000和控制单元1002:对于TCW 304/TCCB 312,将不传送用户数据。
[0106] 在控制单元1002,在TC_IU 1004中链式链接TCCB标记位设置为1,向控制单元1002通知序列号比TC_IU 1004的序列号大1的另一个TC IU是这个I/O操作的一部分。
串行化要求标记位也设置为1,向控制单元1002通知:直到对于TC_IU 1004,装置状态被发送到通道1000,通道1000才会发送下一个TC_IU。
[0107] 当控制单元1002完成在I/O装置112执行TC_IU 1004时,它发送32字节传输响应IU 1006,该传输响应IU 1006包括还关闭交换A并且向通道1000通知TC_IU 1004已经完成的装置状态。对于这个例子,假定装置状态是CE、DE和SM(跳跃状态),这使得通道1000使用TCW 304中的CE、DE和SM状态字段830的下一个TCW地址获取图3的TCW 310。
[0108] 通道1000在TC_IU 1008中向控制单元1002发送TCCB 324用于打开序列号为2的交换B。控制单元在I/O装置112执行TC_IU 1008并且将通过TC_IU 1008中的读DCW命令从I/O装置112读取的数据发送到通道1000作为交换B上的数据IU 1010。当控制单元1002完成TC_IU 1008时,它发送完成传输响应IU 1012,该完成传输响应IU1012包括扩展状态,该扩展状态包括48到64(或更多)字节并关闭交换B并且向通道1000通知整个I/O操作已经完成。通道1000向OS(例如,OS 103)呈现主要状态,向OS通知I/O操作已经完成。
[0109] 在一个示例性实施例中,扩展状态包括使用图2的控制单元定时器206计算的能够在TC_IU(诸如TC_IU 1004和1008)之间持续的各种定时参数。例如,扩展状态可以包括总装置时间参数、延迟时间参数、排队时间参数、装置忙时间参数、装置仅活跃时间参数和附加装置传感数据。总装置时间参数是从当控制单元1002接收到TC_IU 1004时到针对该I/O操作发送传输响应IU 1012的消逝时间。延迟时间参数指示控制单元延迟时间。这是当没有与通道1000执行通信时与I/O装置(例如,I/O装置112)工作的控制单元1002累积的时间。排队时间参数是I/O操作在I/O装置处排队的时间,但是不包括在同一系统或另一个系统上的不同OS(例如,OS 103)的控制之下由另一个控制通道1000保留I/O装置的装置忙时间的排队时间。装置忙时间参数是TC_IU在控制单元1002处排队等待由于在同一系统或另一个系统上的不同OS的控制之下由另一个通道1000保留I/O装置导致的装置忙的时间。装置仅活跃时间参数是当控制单元1002保持CE直到DE可用时在控制单元1002处在CE与DE之间的消逝时间。附加装置传感数据是响应于装置状态中的活跃单元校验(UC)位,控制单元1002有条件提供的补充状态。
[0110] 图11示出了根据一个示例性实施例的在通道子系统提供TCW通道程序链式链接分支的过程1100,并且参照图1的I/O处理系统100和随后的附图进行描述。还结合图12所示的过程1200描述过程1100,其中,过程1200用于在控制单元(例如在图1的通道子系统108的通道124与控制单元110之间)提供TCW通道程序链式链接分支。在一个示例性实施例中,图2的通道链逻辑216管理与用于通道124的链式链接分支关联的处理,控制单元链逻辑204管理与用于控制单元110的链式链接分支关联的处理。在块1102,通道子系统108的通道124在命令消息中构造链式链接标记以指示在该命令消息之后跟着随后的命令消息用于执行I/O操作。在块1104,通道子系统108的通道124在命令消息中构造串行化标记以请求返回装置状态,从而选择随后的命令消息。在块1106,通道子系统108的通道124将该命令消息从通道子系统108的通道124发送到控制单元110。
[0111] 在块1202,控制单元110从通道子系统108的通道124接收命令消息以执行I/O操作。例如,该命令消息可以是如图9所示格式化的图10的TC_IU 1004。
[0112] 在块1204中,控制单元110读取命令消息中的链式链接TCCB标记。链式链接TCCB标记指示在该命令消息之后跟着该I/O操作的随后命令消息,诸如图10的TC_IU 1008在TC_IU 1004之后。
[0113] 在块1206,控制单元110读取命令消息中的串行化标记。该串行化标记请求将装置状态返回到通道子系统108的通道124以选择随后的命令消息。
[0114] 在块1208,控制单元110执行命令消息中的一个或多个命令。所述一个或多个命令可以是DCW,诸如图9的DCW 940到946,请求对I/O装置112读或写数据。控制单元110响应于执行所述一个或多个命令,接收装置状态。该装置状态可以包括CE、DE和/或SM,其中,CE、DE和SM的组合是跳跃状态。
[0115] 在块1210,控制单元110响应于结合串行化标记执行所述一个或多个命令,向通道子系统108的通道124发送装置状态。该装置状态可以在无扩展状态的传输响应IU(例如,图10的传输响应IU 1006)中发送。
[0116] 返回图11,在块1108,通道子系统108的通道124响应于发送命令消息而接收装置状态。在块1110,通道子系统108的通道124响应于接收的装置状态而选择随后的命令消息。通道124检查在传输响应IU中接收的装置状态并且确定对于保持随后的命令的TCCB,访问哪个TCW。如果接收的装置状态包括CE和DE,则通道124读取当前TCW的CE、DE状态字段828的下一个TCW地址,以确定作为随后的命令消息的下一个TCW/TCCB,该随后的命令消息包括与当前命令连续的随后一组一个或多个命令。如果接收的装置状态包括CE、DE和SM,则通道124读取当前TCW的CE、DE和SM状态字段830的下一个TCW地址,以确定作为随后的命令消息的下一个TCW/TCCB,该随后的命令消息包括不与当前命令连续的随后一组一个或多个命令。例如,如果在执行TCCB 312中的命令后设置了CE、DE和SM,则通道124可以选择TCW 310和TCCB 324作为下一个TCW/TCCB;然而,如果在执行了TCCB 312中的命令后没有设置SM,则通道124能够选择TCW 306和TCCB 316作为下一个TCW/TCCB。在块1112,通道子系统108的通道124将选择的随后命令消息从通道子系统108的通道124发送到控制单元110。
[0117] 能够在控制单元110接收另外的随后消息作为链式链接通道程序的一部分。控制单元110能够读取命令消息中的链式链接标记(例如,图9的TCCB标记927中的链式链接TCCB标记)以确定是否预计在第一命令消息之后跟着随后的命令消息跟随作为该I/O操作的一部分。响应于确定预计到随后的命令消息并且当执行接收的所述一个或多个命令时,控制单元110可以持续运行与I/O操作关联的计数器以跨越多个命令消息(例如,控制单元定时器206),并且发送无扩展状态的传输响应消息。能够以相似方式对接收的每个命令消息进行分析以确定是否预计另外的命令消息作为链接的I/O操作的一部分。控制单元110接收包括随后的一组一个或多个命令的随后命令消息,并且检查与接收的随后一个或多个命令中的每个命令关联的命令链标记(例如,DCW标记950、962、972和/或982的CC位)以定位最后链式链接命令。控制单元110响应于定位并执行最后链式链接命令而发送针对该I/O操作的具有扩展状态的响应消息,在这种情况下,随后命令消息是链的最后命令消息。作为无扩展状态的传输响应消息进行传送的较短状态消息能够向通道124提供在最后命令消息之前在执行每个命令消息后的中间状态。当执行了最后命令消息的命令时,发送扩展状态,该扩展状态提供整个I/O操作的附加信息和状态。
[0118] 控制单元110还可以处理其它错误条件。例如,控制单元110可以确定与通信交换关联的一个或多个命令不能够执行。控制单元110能够通过向通道子系统108的通道124发送用于指示不能够执行的终止状态消息进行响应。控制单元110关闭序列号大于与所述一个或多个不可执行命令关联的序列号的打开通信交换。例如,如果控制单元110接收到关于交换A、B、C和D的序列号1、2、3和4并且在执行与序列号2关联的命令时出现错误,则控制单元110能够通过在交换B上请求确认用扩展状态将关于交换B的错误通知通道124,并且关闭交换C和D。在通道124看见交换A、C和D已经关闭后,它将通过对交换B的确认关闭交换B(假定在序列1命令成功完成后A关闭)。
[0119] 示例性实施例的技术效果包括用条件链接将多个TCW和TCCB链接在一起以形成具有跨越I/O操作的多个TCW和TCCB的链式链接分支的传输控制通道程序。通道读取用于对约束进行格式化的TCW内容以确定是否TCW实际上是ACB,以及响应于从控制单元返回的状态进一步确定访问哪个地址。通道可以向控制单元通知:随后命令消息被链式链接到当前命令消息,并且响应于控制单元返回与当前命令消息关联的装置状态,通道将选择特定的随后命令消息。如果通道接收到跳跃状态,则它能够获取非连续TCW和TCCB,而非前进至链中的下一个紧邻的TCW和TCCB。非连续TCW/TCCB可以分支返回到当前TCW,在可顺序到达的同一链路径中跳到前面或者重新定向到在通道程序的顺序前进期间本来不会访问的不同链路径。在传输控制通道程序正在执行但没有完全完成时,通道还可以发送周期性状态中断。周期性状态使得主机能够确认已经执行了多个命令并且由此能够释放或重用与已经完成的命令关联的缓冲器,而不用等待全部程序完成。
[0120] 能够以软件、固件、硬件或者它们的某组合实现本发明的能力。
[0121] 本领域技术人员应该明白,本发明可以实施为一种系统、方法或计算机程序产品。因此,本发明可以采取完全硬件实施例、完全软件实施例(包括固件、驻留软件、微代码等)或者组合软件和硬件方面的实施例的形式,它们都可被统称为“电路”、“模块”或“系统”。
另外,本发明可以采用计算机程序产品的形式,可以在任何有形介质内实施该计算机程序产品,即,将计算机可用程序代码实现在该介质中。一个例子包括计算机可用介质1302上的如图13所示的计算机程序产品1300,该计算机可用介质1302具有计算机程序代码逻辑
1304,该计算机程序代码逻辑1304包含在作为制造品的有形介质中实施的指令。可以存在多个计算机程序产品1300,每个计算机程序产品1300用于在单独的处理电路上执行功能过程。例如,图11和图12的过程1100和1200能够实施为单独的计算机程序产品1300上的计算机程序代码逻辑1304,其中,一个可以在图1的主机系统101上执行,另一个可以在图1的一个或多个控制单元110上执行。或者,过程1100和1200可以作为计算机可执行代码存储在单个计算机程序产品1300上。
[0122] 可以利用一个或多个计算机可用或计算机可读介质的任何组合。计算机可用或计算机可读介质例如可以是但不限于电子、磁、光、电磁、红外或半导体系统、设备、装置或传播介质。计算机可读介质的更具体的例子(非穷尽性列表)将包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪存)、光纤、便携式压缩盘只读存储器(CDROM)、光存储装置、例如支持互联网或内联网的传输介质、或者磁存储装置。注意,计算机可用或计算机可读介质甚至可以是其上印刷有程序的纸或另一种合适介质,因为例如能够经由对纸或其它介质的光学扫描以电子方式捕获程序,然后进行编译、解释或以另外的合适方式处理(如果需要的话),然后存储在计算机存储器中。在本文的上下文中,计算机可用或计算机可读介质可以是能够包含、存储、通信、传播或传输由指令执行系统、设备或装置使用或结合其使用的程序的任何介质。计算机可用介质可以包括传播数据信号,其中,计算机可用程序代码或者在基带内或者作为载波的一部分利用该传播数据信号进行实施。可以使用任何恰当介质(包括但不限于无线、有线、光纤、RF等)发送计算机可用程序代码。
[0123] 可以通过一个或多个编程语言的任何组合编写用于执行本发明的操作的计算机程序代码,这些编程语言包括面向对象编程语言(例如,Java、Smalltalk、C++等)和传统的过程编程语言(例如,“C”编程语言或者类似编程语言)。图13的计算机程序代码逻辑1304表示程序代码的实施例。该程序代码可以作为独立软件包完全在用户的计算机上、部分在用户的计算机上执行、部分在用户的计算机且部分在远程计算机上或者完全在远程计算机或服务器上执行。在后者情况下,远程计算机可以通过任何类型的网络(包括局域网(LAN)或广域网(WAN))连接到用户的计算机,或者可以(例如,使用互联网服务提供商通过互联网)连接到外部计算机。
[0124] 参照根据本发明的实施例的方法、设备(系统)和计算机程序产品的流程图和/或框图描述了本发明。应该明白,流程图和/或框图的每个块以及流程图和/或框图中的块的组合能够由计算机程序指令执行。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理设备的处理器以生成机器,从而经由计算机或其它可编程数据处理设备的处理器执行的指令创建用于实现在流程图和/或框图块中指定的功能/动作的装置。
[0125] 这些计算机程序指令还可以存储在计算机可读介质中,其能够引导计算机或其它可编程数据处理设备以特定方式工作,从而存储在计算机可读介质中的指令生成包括执行在流程图和/或框图块中指定的功能/动作的指令装置的制造品。
[0126] 计算机程序指令还可以加载到计算机或其它可编程数据处理设备上以使得在计算机或其它可编程设备上执行一系列的操作步骤以生成计算机执行的过程,从而在计算机或其它可编程设备上执行的指令提供用于执行在流程图和/或框图块中指定的功能/动作的过程。
[0127] 附图中的流程图和框图示出了根据本发明的各个实施例的系统、方法和计算机程序产品的可行实现方式的架构、功能和操作。在这点上,流程图或框图中的每个块可以表示包括用于执行指定的逻辑功能的一个或多个可执行指令的模块、段或者代码部分。还应该注意,在一些另选实施方式中,块内注明的功能可以不以附图中所示的顺序执行。例如,根据涉及的功能,连续示出的两个块实际上可以基本上同时执行,或者这些块有时候可以以反向顺序执行。还应该注意,能够通过执行指定功能或动作的基于专用硬件的系统或者专用硬件和计算机指令的组合,实现框图和/或流程图的每个块以及框图和/或流程图中的块的组合。
[0128] 这里使用的术语的目的在于仅仅描述特定实施例而非意图限制本发明。这里使用的单数形式“a”、“an”、“the”旨在包括复数形式,除非在上下文中清楚地指出不是这样。还应该明白,说明书中使用的术语“包括”和/或“包含”指定所述的特征、整数、步骤、操作、元件和/或部件的存在,但没有排除一个或多个其它特征、整数、步骤、操作、部件和/或它们的组的存在或添加。
[0129] 所有装置或步骤外加下面权利要求中的功能元件的对应结构、材料、动作和等同物旨在包括用于与特别要求的其它要求的元件结合执行功能的任何结构、材料或动作。针对展示和说明的目的呈现本发明的描述,但是本发明的描述并非是详尽的或者旨在将本发明限制为公开的形式。在不脱离本发明的精神和范围的情况下,本领域普通技术人员可以明白许多变型和变动。选择并描述实施例从而最佳地解释本发明的原理以及实际应用以及使得本领域其它技术人员能够理解本发明的具有适于特定应用的各种变动的各种实施例。
[0130] 本文所示的流程图仅仅是一个例子。在不脱离本发明的精神的情况下,可以对这个图或者本文所述的步骤(或操作)进行许多变动。例如,这些步骤可以以不同顺序进行执行或者可以添加、删除或修改步骤。所有这些变动被认为是要求的发明的一部分。
[0131] 尽管已经描述了本发明的优选实施例,但是应该明白本领域技术人员现在或将来都能够在权利要求的范围内进行各种改进或增强。这些权利要求应该被解释为保持对首先描述的本发明的恰当保护。