在间接数据地址列表不连续的输入/输出处理系统中提供间接数据寻址

申请号 CN200980105228.4 申请日 2009-02-10 公开(公告)号 CN101946242A 公开(公告)日 2011-01-12
申请人 国际商业机器公司; 发明人 D·卡斯帕; J·弗拉纳根; H·尤登弗兰德; M·凯洛斯; M·班迪克; G·西格曼三世; C·黄; D·莱迪; U·恩尤库;
摘要 用于在I/O处理系统的I/O子系统处提供间接数据寻址的系统、方法和 计算机程序 产品。所述计算机程序产品包括处理 电路 可读的有形存储介质,和用于处理电路执行的存储指令,用于执行一种方法。所述方法包括:接收用于I/O操作的控制字。所述控制字包括用于与所述I/O操作关联的数据的间接数据地址。所述间接数据地址包括共同 指定 数据的存储地址的列表的开始 位置 ,所述列表跨越两个或更多个不连续的存储位置。响应于所述列表聚集数据。向所述I/O处理系统中的控制单元发送聚集的数据。
权利要求

1.一种用于在输入/输出(I/O)处理系统的I/O子系统处提供间接数据寻址的计算机程序产品,所述计算机程序产品包括:
处理电路可读的有形存储介质,和用于处理电路执行的存储指令,用于执行包括以下步骤的方法:
接收用于I/O操作的控制字,所述控制字包括用于与所述I/O操
作关联的数据的间接数据地址,所述间接数据地址包括共同指定数据的存储地址的列表的开始位置,所述列表跨越两个或更多个不连续的存储位置;
响应于所述列表聚集数据;以及
向所述I/O处理系统中的控制单元发送聚集的数据。
2.如权利要求1所述的计算机程序产品,其中所述列表还包括与所述列表中的每个存储地址关联的标志;所述标志具有第一值,其指示关联的存储地址指向数据的一部分;以及所述标志具有第二值,其指示关联的存储地址指向所述列表中的附加存储地址所位于的存储位置。
3.如权利要求2所述的计算机程序产品,其中对于所述列表上的每个存储地址,所述聚集步骤包括:
访问所述存储地址以及与所述存储地址关联的标志;
响应于所述标志具有第一值,向数据增加来自所述存储地址的内容;
响应于所述标志具有第二值,访问第二存储地址以及位于所述存储地址的第二标志,以及响应于所述第二标志具有第一值,向数据增加来自所述第二存储地址的内容。
4.如权利要求2所述的计算机程序产品,其中当所述标志具有第一值时,所述列表中的第二存储地址定位于与所述列表中的第一存储地址连续;以及当所述标志具有第二值时,所述第二存储地址定位于与所述第一存储地址不连续。
5.如权利要求1所述的计算机程序产品,其中所述列表还包括与所述列表中的每个存储地址关联的计数字段,所述计数字段指示从所述存储地址读取的字节数,以及所述聚集步骤响应于所述计数字段和所述存储地址。
6.如权利要求1所述的计算机程序产品,其中所述控制字是传送控制字(TCW),存储地址的列表是传送间接数据地址列表(TIDAL),以及每个存储地址是传送间接数据地址字(TIDAW)。
7.如权利要求1所述的计算机程序产品,其中所述I/O子系统是通道子系统。
8.如权利要求1所述的计算机程序产品,其中所述控制字包括用以指示其包含间接数据地址的标志。
9.如权利要求1所述的计算机程序产品,其中所述数据包括控制数据。
10.如权利要求1所述的计算机程序产品,其中所述数据包括客户数据。
11.一种用于在I/O处理系统的I/O子系统处提供间接数据寻址的装置,所述装置包括:
I/O子系统,适于与所述I/O处理系统中的控制单元通信,所述I/O子系统执行包括以下步骤的方法:
接收用于I/O操作的控制字,所述控制字包括用于与所述I/O操作关联的数据的间接数据地址,所述间接数据地址包括共同指定数据的存储地址的列表的开始位置,所述列表跨越两个或更多个不连续的存储位置;
响应于所述列表聚集数据;以及
向所述控制单元发送聚集的数据。
12.如权利要求11所述的装置,其中所述列表还包括与所述列表中的每个存储地址关联的标志;所述标志具有第一值,其指示关联的存储地址指向数据的一部分;以及所述标志具有第二值,其指示关联的存储地址指向所述列表中的附加存储地址所位于的存储位置。
13.如权利要求12所述的装置,其中对于所述列表上的每个存储地址,所述聚集步骤包括:
访问所述存储地址以及与所述存储地址关联的标志;
响应于所述标志具有第一值,向数据增加来自所述存储地址的内容;
响应于所述标志具有第二值,访问第二存储地址以及位于所述存储地址的第二标志,以及响应于所述第二标志具有第一值,向数据增加来自所述第二存储地址的内容。
14.如权利要求12所述的装置,其中当所述标志具有第一值时,所述列表中的第二存储地址定位于与所述列表中的第一存储地址连续;以及当所述标志具有第二值时,所述第二存储地址定位于与所述第一存储地址不连续。
15.如权利要求11所述的装置,其中所述列表还包括与所述列表中的每个存储地址关联的计数字段,所述计数字段指示从所述存储地址读取的字节数,以及所述聚集步骤响应于所述计数字段和所述存储地址。
16.如权利要求11所述的装置,其中所述数据包括控制数据和客户数据中的一个或两个。
17.如权利要求11所述的装置,其中所述I/O子系统是包括在主机系统中的通道子系统,以及所述通道子系统中的I/O通信适配器适于使用FICON协议经由光纤通道网络与所述控制单元通信。
18.一种用于在I/O处理系统的I/O子系统处提供间接数据寻址的方法,所述方法包括:
在所述I/O子系统处接收用于I/O操作的控制字,所述控制字包括用于与所述I/O操作关联的数据的间接数据地址,所述间接数据地址包括共同指定数据的存储地址的列表的开始位置,所述列表跨越两个或更多个不连续的存储位置;
响应于所述列表聚集数据;以及
向所述I/O处理系统中的控制单元发送聚集的数据。
19.如权利要求18所述的方法,其中所述列表还包括与所述列表中的每个存储地址关联的标志;所述标志具有第一值,其指示关联的存储地址指向数据的一部分;以及所述标志具有第二值,其指示关联的存储地址指向所述列表中的附加存储地址所位于的存储位置。
20.如权利要求19所述的方法,其中对于所述列表上的每个存储地址,所述聚集步骤包括:
访问所述存储地址以及与所述存储地址关联的标志;
响应于所述标志具有第一值,向数据增加来自所述存储地址的内容;
响应于所述标志具有第二值,访问第二存储地址以及位于所述存储地址的第二标志,以及响应于所述第二标志具有第一值,向数据增加来自所述第二存储地址的内容。
21.如权利要求19所述的方法,其中当所述标志具有第一值时,所述列表中的第二存储地址定位于与所述列表中的第一存储地址连续;以及当所述标志具有第二值时,所述第二存储地址定位于与所述第一存储地址不连续。
22.如权利要求18所述的方法,其中所述列表还包括与所述列表中的每个存储地址关联的计数字段,所述计数字段指示从所述存储地址读取的字节数,以及所述聚集步骤响应于所述计数字段和所述存储地址。
23.如权利要求18所述的方法,其中所述数据包括控制数据。
24.如权利要求18所述的方法,其中所述数据包括客户数据。
25.一种用于在I/O处理系统的I/O子系统处提供间接数据寻址的计算机程序产品,所述计算机程序产品包括:
处理电路可读的有形存储介质,和用于处理电路执行的存储指令,用于执行包括以下步骤的方法:
接收用于I/O操作的控制字,所述控制字包括用于来自所述I/O操作的客户数据输出的间接数据地址,所述间接数据地址包括共同指定客户数据输出的存储位置的存储地址的列表的开始位置,所述列表跨越两个或更多个不连续的存储位置;
响应于所述I/O操作在所述I/O处理系统中的控制单元处执行,从所述控制单元接收所述客户数据输出;以及
响应于所述列表,将所述客户数据输出存储在所述I/O子系统处的存储位置处。

说明书全文

在间接数据地址列表不连续的输入/输出处理系统中提供

间接数据寻址

技术领域

[0001] 概括地说,本发明涉及输入/输出处理,更具体地,涉及在I/O处理系统的I/O子系统处提供不连续的间接数据寻址列表。

背景技术

[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操作的命令,CCW指明与操作关联的存储器区域、每当完成向或从该区域的传送时要采取的行为、和其他选项。
[0005] 在I/O处理期间,通过通道从存储器提取CCW列表。通道解析来自CCW列表的每条命令,并将多条命令(在其自身实体中的每条命令)转发至与通道耦合的控制单元。然后,控制单元处理命令。通道跟踪每条命令的状态,并控制何时将下一命令集发送至控制单元用于处理。通道确保将每条命令发送至其自身实体中的控制单元。此外,通道推断与处理来自控制单元的对于每条命令的响应关联的某些信息。
[0006] 由于通道解析CCW,跟踪状态信息,对来自控制单元的响应作出反应,所以对于通道子系统,基于每个CCW执行I/O处理可涉及大量处理负载。因此,有益地,将与解释和管理CCW和状态信息关联的大部分处理负担从通道子系统转移至控制单元。由于简化I/O处理系统中的控制单元和操作系统之间通信的通道色执行更少的握手,所以这样可增加通信吞吐量。然而,改变命令序列以及通道子系统和控制单元的角色使得在一个I/O操作内传送的数据量达到多于1兆字节。当系统页面大小为4k字节时,上述字节是可利用一个传送间接数据地址的连续列表传送的最大数据量。目前,由于现有的通道命令字(CCW)中的2个字节计数字段的限制,所以CCW不能够在一个I/O操作中支持多于64k字节的数据传送。传送控制字(TCW)通过将字节计数增加至TCW中的4字节来解决这个问题,但是随后遇到下一个1兆字节的限制,因为传送间接数据地址列表(TIDAL)必须包含在为仅允许256个地址列表项的4k字节的一个页面中。

发明内容

[0007] 本发明的实施例包括一种用于在输入/输出(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子系统处提供间接数据寻址的方法。所述方法包括:接收用于I/O操作的控制字。所述控制字包括用于与所述I/O操作关联的数据的间接数据地址。所述间接数据地址包括共同指定数据的存储地址的列表的开始位置,所述列表跨越两个或更多个不连续的存储位置。响应于所述列表聚集数据。向所述I/O处理系统中的控制单元发送聚集的数据。
[0010] 另外实施例包括一种用于在I/O处理系统的I/O子系统处提供间接数据寻址的计算机程序产品。所述计算机程序产品包括:处理电路可读的有形存储介质,和用于处理电路执行的存储指令,用于执行一种方法。所述方法包括:接收用于I/O操作的控制字。所述控制字包括用于来自所述I/O操作的客户数据输出的间接数据地址。所述间接数据地址包括共同指定客户数据输出的存储位置的存储地址的列表的开始位置,所述列表跨越两个或更多个不连续的存储位置。响应于所述I/O操作在所述I/O处理系统中的控制单元处执行,从所述控制单元接收所述客户数据输出。响应于所述列表,将所述客户数据输出存储在所述I/O子系统处的存储位置处。
[0011] 在阅览了以下附图和具体实施方式之后,对于本领域普通技术人员而言,根据实施例的制品、装置和/或方法的其他物品将变得清楚。目的在于,制品、装置和/或方法的所有这些附加物品都应该包括在本说明书中,在本发明的范围内,以及受到所附权利要求的保护。

附图说明

[0012] 特别地指出作为本发明的主题,并且在说明书中包含的权利要求书中不同地主张。根据集合附图进行的以下具体实施方式,本发明的以上和其他目的、特征、和优点变得清楚,其中:
[0013] 图1示出结合和使用本发明的一个或多个方面的I/O处理系统的一个实施例;
[0014] 图2A示出现有技术的通道命令字的一个实例;
[0015] 图2B示出现有技术的通道命令字通道程序的一个实例;
[0016] 图3示出在通道和控制单元之间的通信中使用的执行图2B的通道命令字通道程序的现有技术链路协议的一个实施例;
[0017] 图4示出根据本发明一方面的传送控制子通道程序的一个实施例;
[0018] 图5示出根据本发明一方面的用于在通道和控制单元之间通信的执行图4的传送控制字通道程序的链路协议的一个实施例;
[0019] 图6示出用于在通道和控制单元之间通信的以执行通道命令字通道程序的4个写入命令的现有技术链路协议的一个实施例;
[0020] 图7示出根据本发明一方面的用于在通道和控制单元之间通信的以处理传送控制字通道程序的4个写入命令的链路协议的一个实施例;
[0021] 图8示出根据本发明一方面的控制单元和通道子系统的一个实施例;
[0022] 图9示出根据本发明一方面的传送模式间接数据地址字(TIDAW)的一个实施例;
[0023] 图10示出用于在I/O子系统处提供不连续间接数据寻址的处理的一个实施例;以及
[0024] 图11示出结合本发明的一方面或多个方面的制品的一个实施例。
[0025] 具体实施方式参照附图借助于实例说明本发明的优选实施例、以及优点和特点。

具体实施方式

[0026] 根据本发明的一方面,便于输入/输出(I/O)处理。在一个实例中,通过减少用于执行I/O处理的I/O处理系统的组件之间的通信来便于I/O处理。例如,减少在I/O通信适配器(例如通道)和控制单元之间交换和序列的数目。这可通过从I/O通信适配器向作为单独实体的控制单元发送多条命令用于控制单元的执行,以及通过控制单元作为单独实体发送从命令得到的数据(如果存在)来实现。
[0027] 多条命令包括在这里称为传送命令控制(TCCB)的块中,其地址在传送控制字(TCW)中指定。将TCW从操作系统(OS)或其他应用发送至I/O通信适配器,后者随后将命令消息中的TCCB转发至控制单元用于处理。控制单元通过I/O通信适配器处理每条命令,其不具有相对于那些个体命令的状态的跟踪。多条命令还称为通道程序,其在控制单元而非I/O通信适配器上被解析和执行。
[0028] 在示例性实施例中,用于I/O操作的TCW包括用于指示控制数据(例如TCCB)的位置的指针以及与I/O操作关联的客户数据。在示例性实施例中,指针指向间接数据地址,这里称为传送模式间接数据地址列表(TIDAL)。TIDAL包括数据所在的地址的列表;这些地址在这里称为传送模式间接数据地址字(TIDAW)。在具有4K页面的当前系统设计中,TIDAL不能够大于4千字节(4K),由此将可包括在单一TIDAL中的连续TIDAW的数目限制在256(每个TIDAL为16字节)。假设4K的页面,每个TIDAL为16字节,并且TIDAL必须包含在一个4K页面中,则这将可由一个I/O操作传送的总数据量限制在1兆字节。在本发明的示例性实施例中,通过允许TIDAW地址指示在另一存储位置(可能在不同页面中)处的下一TIDAW的开始地址来消除这个限制。利用TIDAW中的标志来指示TIDAW的地址包括数据地址还是TIDAW列表的连续的地址。这样,构成单一TIDAL的TIDAW可位于不连续的存储位置中,因此多于256个TIDAW可包含在一个TIDAL列表中。这允许更多的数据在一个I/O操作中传送。例如,在示例性实施例中,如果TCW中的计数字段为4字节,则可在单一I/O操作中传送大约4兆字节(4兆字节减1字节)。
[0029] 参照图1描述结合和使用本发明一个或多个方面的I/O处理系统的一个实例。I/O处理系统100包括主机系统101,其进一步包含例如主存储器102、一个或多个中央处理单元(CPU)104、存储控制元件106、和通道子系统108。主机系统101可以是大型计算系统,例如大型机或服务器。I/O处理系统100还包括一个或多个控制单元110和一个或多个I/O设备112,其每个如下所述。
[0030] 主存储器102存储可从I/O设备112输入的数据和程序。例如,主存储器102可包括由CPU 104中的一个或多个执行的一个或多个操作系统(OS)103。例如,作为不同的虚拟机实例,一个CPU 104可执行Linux 操作系统103和z/OS 操作系统103。主存储器102是可直接寻址的,以及提供由CPU 104和通道子系统108进行的数据的高速处理。
[0031] CPU 104是I/O处理系统100的控制中心。其包含用于指令执行、中断行为、定时功能、初始程序加载、和其他机器相关功能的定序和处理装备。CPU 104经由连接114(例如双向或单向总线)耦合至存储控制元件106。
[0032] 存储控制元件106经由连接116(例如总线)耦合至主存储器102;经由连接114耦合至CPU 104;以及经由连接118耦合至通道子系统108。存储控制元件106控制例如由CPU 014和通道子系统108发出的请求的排队和执行。
[0033] 在示例性实施例中,通道子系统108提供主机系统101和控制单元110之间的通信接口。通道子系统108耦合至存储控制元件106,如上所述;以及经由连接120(例如串行链路)耦合至每个控制单元110。连接120可实现为光链路,在光纤通道结构中采用单模或多模波导。通道子系统108指引I/O设备112和主存储器102之间的信息流。其免除了CPU 104直接与I/O设备112通信的任务,并允许数据处理与I/O处理同时进行。在管理到或从I/O设备112的信息流时,通道子系统108将一个或多个通道路径122用作通信链路。作为I/O处理的一部分,通道子系统108还执行测试通道路径可用性、选择可用通道路径122、和通过I/O设备启动操作的执行的路径管理功能。
[0034] 每个通道路径122包括通道124(在一个实例中,通道124位于通道子系统108中,如图1所示)、一个或多个控制单元110和一个或多个连接120。在另一实例中,其还可以具有一个或多个动态开关(未示出),作为通道路径122的一部分。动态开关耦合至通道124和控制单元110,并提供对于附连至开关的任意两个链路物理互连的能。在另一实例中,其还可具有多个系统,因此具有附连至控制单元110的多个通道子系统(未示出)。
[0035] 同样位于通道子系统108中的有子通道(未示出)。提供一个子通道用于和专用于可通过通道子系统108访问程序的每个I/O设备112。子通道(例如数据结构,如表)向程序提供设备的逻辑表示。每个子通道提供关于关联的I/O设备112的信息及其到通道子系统108的附连。子通道还提供关于I/O操作的信息以及涉及关联的I/O设备112的其他功能。子通道是通道子系统108向CPU 104提供关于关联的I/O设备112的信息所借助的手段,所述CPU 104通过执行I/O指令获得该信息。
[0036] 通道子系统108耦合至一个或多个控制单元110。每个控制单元110提供操作和控制一个或多个I/O设备112以及通过使用共同装备使得每个I/O设备112的特征适配于通道124提供的链路接口的逻辑。共同装备提供了I/O操作的执行、关于I/O设备112和控制单元110的状态的指示、在通道路径112上的数据传送的定时的控制、以及I/O设备112的某些等级的控制。
[0037] 每个控制单元110经由连接126(例如总线)附连至一个或多个I/O设备112。I/O设备112接收信息,或将信息存储在主存储器102和/或其他存储器中。I/O设备112的实例包括例如读卡器和打孔器、磁带单元、直接访问存储设备、显示器、键盘打印机、定点设备、远程处理设备、通信控制器和基于传感器的装置。
[0038] I/O处理系统100的上述组件中的一个或多个进一步描述在以下文献中:“IBMz/Architecture Principles of Operation”,公开号No.SA22-7832-05,第6版,2007年4月;美国专利No.5,461,721,题为“System For Transferring Data Between I/O Devices And Main Or Expanded Storage Under Dynamic Control Of Independent Indirect Address Words(IDAWS)”Cormier等人,发布于1995年10月24日;和美国专利No.5,526,484,题为“Method And System For Pipelining The Processing Of Channel Command Words”Casper等人,发布于1996年6月11日,其中每个的全部内容通过引用合并于此。IBM是美国纽约阿蒙克的国际商业机器公司的注册商标。这里使用的其他名称可以是国际商业机器公司或其他公司的注册商标、商标或产品名称。
[0039] 在一个实施例中,为了在I/O设备112和存储器102之间传送数据,使用通道命令字(CCW)。CCW指定要执行的命令,并包括控制处理的其他字段。参照图2A描述CCW的一个实例。CCW 200包括例如,命令码202,指定要执行(例如,读取、反向读取、控制、感测和写入)的命令;多个标志204,用于针对指定数据传送的命令控制I/O操作;计数字段206,指定在要传送的CCW所指明的存储区域中的字节数;以及数据地址208,当采用直接寻址时其指向包括数据的主存储器中的位置,或当采用修改间接数据寻址时其指向要处理的修改间接数据地址字(MIDAW)的列表(例如连续列表)。修改间接寻址进一步在以下文件中描述:美国专利序号11/464,613,题为“Flexibly Controlling The Transfer Of Data Between Input/Output Devices And Memory”Brice等人,2006年8月15日递交,其全部内容通过引用合并于此。
[0040] 被设置用于按序执行的一个或多个CCW形成通道程序,这里还称为CCW通道程序。CCW通道程序通过例如操作系统或其他软件来设置。软件设置CCW,并获得分配给通道程序的存储器地址。参照图2B描述CCW通道程序的实例。CCW通道程序210包括例如界定范围CCW 212,其具有指针214,指向要通过界定范围命令使用的界定范围数据216的存储器中的位置。在该实例中,通道传送(TIC)218遵循界定范围命令,其使得通道程序指向包括一个或多个其他CCW(例如,定位记录217,其具有指针219以定位记录数据220;和一个或多个写入CCW 221)的存储器中的另一区域(例如应用区域)。每个写入CCW 220具有指向数据区域224的指针222。数据区域包括直接访问数据的地址或间接访问数据的数据地址字的列表(例如MIDAW或IDAW)。此外,CCW通道程序210包括由设备地址定义的通道子系统中的预定区域,称为用于从CCW通道程序的执行得到的状态226的子通道。
[0041] 参照图3以及参照图2B描述CCW通道程序的处理。具体地,图3示出当CCW通道程序正在执行时发生在通道和控制单元之间的各种交换和序列的实例。在这个实例中,用于通信的链路协议为FICON(光纤连接)。关于FICON的信息在以下文件中描述:“Fibre Channel Single Byte Command Code Sets-3 Mapping Protocol(FC-SB-3)”,T11/Project1357-D/Rev.1.6,INCITS(2003年3月),其全部内容通过引用合并于此。
[0042] 参照图3,通道300打开与控制单元302的交换,并向控制单元302发送界定范围命令和与其关联的数据304。从界定范围CCW 212提取命令(图2B),以及从界定范围数据区域216获得数据。通道300使用TIC 218来定位所述定位记录CCW和写入CCW。其从定位记录CCW 217(图2B)和定位记录数据220提取定位记录命令和数据306(图3)。从写入CCW221和数据区域224(图2B)提取写入命令和数据308(图3)。将每个发送至控制单元302。
[0043] 响应于通道300的打开的交换,控制单元302打开与通道300的交换310。这可发生在定位命令和数据306和/或写入命令和数据308之前或之后。除了打开的交换之外,向通道300转发响应(CMR)。CMR向通道300提供控制单元302为活动和正在运行的指示。
[0044] 控制单元302向通道300提供状态,并关闭交换312。响应于此,通道300存储数据,检查状态和关闭交换314,其向控制单元302指示状态被接收。
[0045] 上述CCW通道程序的写入4k数据的处理需要两个要打开和关闭的交换和六个序列。通过将通道程序的多个命令放置于TCCB中来减少在通道和控制单元之间的交换和序列的总数。通道(例如图1的通道124)使用TCW来识别TCCB的位置,以及用于访问和存储与执行通道程序关联的状态和数据的位置。TCW通过通道来解释,并且不通过控制单元发送或看到。
[0046] 参照图4描述通道程序的写入4k数据(如图2B,但包括TCCB,并非单独的个体CCW)的一个实例。如图所示,通道程序400(这里称为TCW通道程序)包括TCW 402,其指定TCCB 404的存储器中的位置,以及数据区域406的存储器中的位置或指向数据区域406的TIDAL 410(即,传送模式间接数据地址字(TIDAW)的列表,类似于MIDAW)、和状态区域408。TIDAW零412、TIDAW一414、和TIDAW二416(共同地,TIDAW 412-416)可指向用于获取或存储数据的数据区域406中的不同位置。TIDAW 412-416可指向数据的不连续块或数据的连续块。TIDAL 410中的TIDAW 412-416可在存储器中顺序地定位,或相对于彼此不连续地定位。尽管在TIDAL 410中仅示出3个TIDAW 412-416,但是应理解,可在TIDAL 410中包括任意数目个TIDAW。
[0047] 参照图5描述TCW通道程序的处理。用于这些通信的链路协议为例如光纤通道协议(FCP)。具体地,使用FCP链路协议的3个阶段,从而允许使用主机总线适配器,其支持FCP执行可由CCW控制的数据传送。FCP及其阶段进一步在以下文献中描述:“Information Technology-Fibre Channel Protocol for SCSI,Third Version(FCP-3)”T10Project1560-D,版本4,2005年9月13日,其全部内容通过引用合并于此。
[0048] 参照图5,通道500打开与控制单元502的交换,并向控制单元502发送TCCB 504。在一个实例中,在FCP命令(称为FCP CMND信息单元(IU)或传送命令IU)中将TCCB 504和序列初步操作(initiative)传送至控制单元502。当通道500准备接收用于TCCB 504中接收的写入命令的数据时,控制单元502将传送准备(XFER_RDY)IU 510发送至通道500。
响应于接收XFER_RDY IU 510,通道500例如经由FCP_Data IU将数据506传送至控制单元
502。
[0049] 控制单元502执行TCCB 504的多个命令(例如,作为设备控制字(DCW)的界定范围命令、定位记录命令、写入命令),并写入从通道500接收的数据506。控制单元502还提供状态并关闭交换508。作为一个实例,在例如FCP_RSP IU(还称为传送响应IU)的有效载荷的字节10或11中具有比特活动的FCP状态中发送最终状态。除了附加状态信息之外,FCP_RSP IU有效载荷可用于传送FICON结束状态。
[0050] 当启用XFER_RDY时,利用图5中所示的链路协议的实施例。在图5中所示的实施例中,通道500不能够向控制单元502发送数据506,直到由控制单元502经由XFER_RDY IU510对其进行请求。在备选示例性实施例中,禁用XFER_RDY,并且控制单元不向通道500发送XFER_RDYIU 510。因此,通道500不必在发送数据506之前等待控制单元502请求数据
506。当通道500和控制单元502定位于地理上彼此远离(例如大于2万米,大于5万米)时,可利用这个备选实施例(其中XFER_RDY被禁用)来提高性能。除非特别指定,这里的讨论假设启用XFER_RDY。
[0051] 在另一实例中,为了写入4K客户数据,通道500使用FCP链路协议阶段如下:
[0052] 1.向控制单元502传送FCP_CMND IU中的TCCB和序列初步操作。
[0053] 2.等待XFER_RDY IU,其指示控制单元准备接收数据。
[0054] 3.向控制单元502传送数据的IU,和序列初步操作。
[0055] 4.在例如FCP_RSP IU有效载荷的字节10或11中具有比特活动的FCP状态帧中发送最终状态。除了附加状态信息之外,FCP_RSP_INFO字段或感测字段用于传送FICON结束状态。
[0056] 通过执行图4的TCW通道程序,仅存在1个打开和关闭的交换(也可见图5),并非图2B的CCW通道程序的2个交换(也可见图3)。此外,相比于针对CCW通道程序的6个序列(见图2B-3),对于TCW通道程序,存在4个通信序列(见图4-5)。
[0057] 对于TCW通道程序,即使向该程序增加附加命令,交换和序列的数目保持相同。例如,将图6的CCW通道程序的通信与图7的TCW通道程序的通信相比较。在图6的CCW通道程序中,在从通道610到控制单元612的单独序列中发送每条命令(例如界定范围命令和数据600、定位记录命令和数据601、写入命令和数据602、写入命令和数据604、定位记录命令和数据606、写入命令和数据608、和写入命令和数据620)。这个CCW通道程序需要2个打开和关闭的交换(例如打开交换622、624,和关闭交换626、628),和10个通信序列。这相比于图7的TCW通道程序的4个序列和1个交换,实现了与图6的CCW通道程序相同的任务。
[0058] 如图7所示,通道700打开与控制单元702的交换,并向控制单元702发送TCCB704。TCCB 704包括DCW中的界定范围命令、两个定位记录命令、和四个写入命令,如上所述。类似于图5中所示的实例,假如XFER_RDY支持没有禁用,控制单元702可使用XFER_RDY IU 710来向通道700通知其准备接收数据。在接收到XFER_RDY IU 710时,通道700在单一序列中向控制单元702发送16k数据706。通道700在序列中的16k数据706的每
4K插入CRC。每4K的CRC的插入允许控制单元702递增地验证16K数据,而并非在完成TCCB 704中的写入命令之前缓冲整个16K用于验证。此外,控制单元702向通道700提供状态,并关闭交换708。因此,图7的TCW通道程序需要更少的通信来传送与图6的CCW通道程序相同的数据量,同时经由在来自通道700的输出数据流中的多CRC插入来支持递增的数据验证。
[0059] 现在转到图8,更详细地示出了支持TCW通道程序执行的在通道子系统108中的通道124和图1的控制单元110的一个实施例。控制单元110包括CU控制逻辑802,用以解析和处理含有TCCB(例如图7的TCCB704)的消息,以及经由连接120从通道124接收的数据。CU控制逻辑802可从在控制单元110处接收的TCCB提取DCW和控制数据,以经由连接126控制例如I/O设备112的设备。CU控制逻辑802向I/O设备112发送设备命令和数据,以及从I/O设备112接收状态信息和其他反馈。当CU控制逻辑802接收数据(例如,图7的16K字节数据706的第一检查块边界)时,CU控制逻辑802将接收的这个数据写入数据缓冲器804,用于临时存储,直到接收到用于检查块边界的CRC,然后可将该数据发送至I/O设备112。对于每个检查块边界,这个操作继续,直到完成I/O操作。
[0060] 控制单元110可进一步包括其他队列或存储器元件(未示出),用于存储与通道124和I/O设备112之间的通信关联的附加消息或状态信息。
[0061] 通道子系统108中的通道124包括支持与控制单元110通信的元件。例如,通道124可包括CHN控制逻辑806,其与聚集数据逻辑812对接。以下参照图10来描述聚集数据逻辑812。在示例性实施例中,CHN控制逻辑806控制通道子系统108和控制单元110之间的通信。CHN控制逻辑806可经由连接120直接对接至CU控制逻辑802,以发送命令和接收响应,例如传送命令和响应IU。备选地,消息接口和/或附加缓冲器(未示出)可放置于CHN控制逻辑806和CU控制逻辑802之间。CHN子系统寄存器814可包括提供配置和状态信息以及动态状态信息的固定值,其在传送命令和接收响应时更新。CHN子系统寄存器
814可以是专用的硬件寄存器和/或使用存储器映射建立的虚拟寄存器。
[0062] 在一个实施例中,CHN子系统寄存器814包括图4的TIDAL 410和TIDAW 412-416,作为存储映射的寄存器。
[0063] 图9中示出TIDAW 900的一个实例。TIDAW 900对于TCW通道程序中使用的数据提供间接寻址,例如图4中的TIDAW 412-416。TIDAW900包括标志902、计数904、和地址906。将TIDAW格式900的每个字段(即标志902、计数904、和地址906)分配给特定字节地址,以支持字段的解析。尽管图9中示出TIDAW 900中的字段的一个安排,但是应理解,字段的顺序可以重新安排以改变排序。
[0064] 在示例性实施例中,除了其他标志之外,标志902包括最后TIDAW标志和传输-通道传送(T-TIC)标志。根据MIDAW的定义,最后TIDAW标志指示关联的TIDAW是TIDAL中的最后TIDAW。当通过最后TIDAW标志的设置使得计数904到达零时,完成对于关联的I/O操作的数据传送。T-TIC标志指示地址906的内容包括数据还是TIDAL中的下一TIDAW的地址。在示例性实施例中,当T-TIC标志被设置时,随后TIDAW中的地址906是TIDAL中的下一TIDAW的地址。以这个方式,可利用地址906从当前TIDAW访问在不连续存储位置处的TIDAW。因此,TIDAW列表可包含多于256个项,从而超过当前方案中可容许的间接数据地址字的最大数。在备选实施例中,当T-TIC标志被设置时,地址906必须具有设置为零的四个低阶比特,因为16字节TIDAW必须在16字节地址边界上。当T-TIC标志没有被设置时,随后,TIDAW中的地址906是构成为I/O操作正在被聚集的数据的一部分数据的地址。在计数字段904中指示出数据的大小。如果最后TIDAW标志和T-TIC标志没有被设置,则下一TIDAW定位于下一存储位置(例如,他与当前TIDAW连续)。
[0065] 现在转到图10,现在将根据示例性实施例并引用图1的I/O处理系统100来描述为I/O操作聚集数据的处理1000。在框1002,通道子系统108接收用于I/O操作的控制字(例如TCW)。该控制字包括间接数据地址,其指向构成由I/O操作利用的数据的存储地址列表(例如具有多个TIDAW的TIDAL)的开始地址。在示例性实施例中,数据是客户数据(例如从I/O操作输入或输出的数据)。在备选示例性实施例中,数据是控制数据(例如TCCB)。在示例性实施例中,存储地址列表跨越两个或更多个不连续的存储位置。
[0066] 在框1004,通过定位于通道子系统108的指令聚集数据。聚集是基于列表的内容。在示例性实施例中,列表中的每个项(例如每个TIDAW)包括存储地址和T-TIC标志,以指示存储地址是否为数据的一部分的地址,或存储地址是否指向含有更多存储地址的列表的另一部分的位置。这样,单一TIDAL可包含在多个页面中,以排除在TIDAL的长度方面的任何限制。当T-TIC标志指示存储地址为数据的一部分的位置(例如T-TIC标志没有被设置)时,在该存储位置的数据被访问并增加至数据。新数据的这种增加可通过本领域已知的任意方式执行,例如与已经聚集的数据合并,附加至已经聚集的数据等。
[0067] 当T-TIC标志指示当前存储地址为列表的另一部分的位置时,则处理通过访问位于特定存储位置的新TIDAW来继续。访问在新TIDAW中指定的存储位置处的数据,并将其增加至数据。在示例性实施例中,TIDAW包括计数904,以指定要从每个存储地址读取(或写入)多少数据。当前设置了具有最后TIDAW标志的TIDAW时,完成聚集。否则,访问下一TIDAW,并且数据聚集继续。
[0068] 在框1006,通过通道子系统108向控制单元110发送数据。
[0069] 示例性实施例的技术效果包括在I/O子系统处提供不连续间接数据寻址。通过允许多个4k字节页面包含存储地址的列表(TIDAL)使得TIDAW的数目不受限制,因此更多数据可与单一I/O操作关联。数据的大量传送可通过避免附加握手和与多条更小的消息关联的其他延迟来减少通信负担。
[0070] 以下实例描述了在其中可利用示例性实施例来执行不仅仅移动较大数据块的方式。
[0071] 示例性实施例可用于通过操作系统来辅助通道程序加前缀。例如,当通道程序通过操作系统时,操作系统可修改通道程序,以增加、替换、或修改命令CCW或DCW。在示例性实施例中,这暗示了将创建TCCBTIDAL,其中第一TIDAW指向含有修改的TCCB的第一部分的存储区域。第二TIDAW指向未修改的TCCB的剩余部分。
[0072] 示例性实施例也可用于通过管理程序来辅助通道程序加前缀。如果管理程序需要修改通道程序,则其将需要创建具有比访客传递的TIDAL多一项的TIDAL。如果访客传递的TIDAL已经是最大的大小(256TIDAW),则管理程序可通过创建具有2个TIDAW(其中一个是对于访客传递的TIDAL的第一TIDAW的T-TIC)的TCCB TIDAL来作出其自身的修改。
[0073] TIDAL T-TIC也可改善操作系统的存储需求。如果含有TCCBTIDAL的通道程序需要被修改,则相比于调用者的TCCB TIDAL加又一个TIDAW的分配的存储空间,其采用更少的存储空间来创建TIDAW和T-TIC。
[0074] 如上所述,实施例可通过用于实践这些处理的计算机实现的处理和装置的形式来实现。在示例性实施例中,本发明在一个或多个网络元件执行的计算机程序代码中实现。实施例包括如图11所示的在计算机可用介质1102上的计算机程序产品1100,其具有计算机程序代码逻辑1104,包含在有形介质中作为制品实现的指令。用于计算机可用介质1102的示例性制品可包括软盘、CD-ROM、硬盘驱动器、通用串行总线(USB)闪速驱动器、或任意其他计算机可读存储介质,其中,当计算机程序代码逻辑1104加载至计算机中并由其执行时,计算机成为实践本发明的装置。
[0075] 实施例包括计算机程序代码逻辑1104,例如可存储在存储介质中,加载至计算机中和/或由其执行,或通过某些传输介质(例如在电线或电缆上,通过光纤,或经由电磁辐射)来发送,其中,当计算机程序代码逻辑1104加载至计算机中并由其执行时,计算机成为实践本发明的装置。当在通用微处理器上实现时,计算机程序代码逻辑1104分段配置微处理器,以创建特定的逻辑电路
[0076] 尽管参照示例性实施例描述了本发明,但是本领域普通技术人员应理解,在不脱离本发明的范围的情况下,可作出各种改变,以及等价物可替换其元素。此外,可作出许多修改,以在不脱离本发明实质范围的情况下,可针对本发明的教导采用特定情形或材料。因此,目的在于本发明不限于为了执行本发明而设想的最优模式而公开的特定实施例,但是本发明将需要落入所附权利要求的范围内的所有实施例。此外,术语第一、第二等的使用没有指定任意顺序或重要性,相反术语第一、第二等用于一个元件与另一个元件区分。此外,术语一、一个的使用没有指定数量的限制,相反指定存在至少一个所引用物体。
QQ群二维码
意见反馈