(57)【特許請求の範囲】
【請求項１】
入出力処理システム内のチャネル・サブシステムと通信するように構成された制御装置において可変長のデバイス・コマンド・ワード（ＤＣＷ）を処理するための方法であって、
前記制御装置によって、  ホスト・システムから１つまたは複数のＩ／Ｏ操作を指定するＤＣＷを受信するステップ（１１０２）を含み、
前記ＤＣＷが、コマンドと、制御データ・カウントと、前記制御データ・カウントによって指定された長さを有する可変長の制御データとを含み、
前記制御装置によって、前記制御データ・カウントに応答して前記制御データを抽出するステップ（１１０４）と、
前記制御装置によって、前記指定された１つまたは複数の入出力操作を実行するために、前記抽出された制御データに応答して前記コマンドを実行するステップ（１１０６）とを含み、
前記ＤＣＷが、前記ＤＣＷに関連するカスタマ・データの量を指定するカスタマ・データ・カウントをさらに含む、方法。
【請求項２】
前記カスタマ・データ・カウントが０より大きい値を有し、前記方法が、前記制御装置によって、前記チャネル・サブシステムから前記カスタマ・データを受信するステップをさらに含む、請求項１記載の方法。
【請求項３】
前記カスタマ・データ・カウントが０より大きい値を有し、前記方法が、前記制御装置によって、前記チャネル・サブシステムに前記カスタマ・データを送信するステップをさらに含む、請求項１記載の方法。
【請求項４】
前記入出力操作の完了に応答して、前記制御装置によって、前記チャネル・サブシステムに完了メッセージを送信するステップとをさらに含む、請求項１記載の方法。
【請求項５】
前記ＤＣＷが、トランスポート・コマンド域（ＴＣＡ）ヘッダと、前記ＤＣＷが位置するＴＣＡと、ＴＣＡトレーラとを含む、トランスポート・コマンド制御ブロック（ＴＣＣＢ）を介して受信される、  請求項１記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、入出力（Ｉ／Ｏ：input/output）処理に関し、特に、入出力処理システム内の制御装置において可変長のデバイス・コマンド・ワードを処理することに関する。
【背景技術】
【０００２】
入出力（Ｉ／Ｏ）操作は、入出力処理システムのメモリと入出力装置との間でデータを転送するために使用される。具体的には、入出力操作を実行することにより、メモリから１つまたは複数の入出力装置にデータが書き込まれ、１つまたは複数の入出力装置からメモリにデータが読み込まれる。
【０００３】
入出力操作の処理を容易にするため、入出力処理システムの入出力サブシステムが使用される。入出力サブシステムは、入出力処理システムのメイン・メモリおよび入出力装置に結合され、メモリと入出力装置との間の情報の流れを誘導する。入出力サブシステムの一例はチャネル・サブシステムである。チャネル・サブシステムは通信媒体としてチャネル・パスを使用する。各チャネル・パスは制御装置に結合されたチャネルを含み、その制御装置は１つまたは複数の入出力装置にさらに結合されている。
【０００４】
チャネル・サブシステムは、入出力装置とメモリとの間でデータを転送するためにチャネル・コマンド・ワード（ＣＣＷ：channel command word）を使用することができる。ＣＣＷは、実行すべき入出力コマンドを指定するものである。特定の入出力操作を開始するコマンドの場合、ＣＣＷは、その操作に関連するメモリ領域と、その領域との間の転送が完了したときに取るべきアクションと、その他のオプションを指定する。
【０００５】
入出力処理中に、チャネルによってメモリからＣＣＷのリストが取り出される。チャネルは、ＣＣＷのリストから各コマンドを解析し、そのチャネルに結合された制御装置にそのコマンドのうちのいくつか、すなわち、それ専用のエンティティ内の各コマンドを転送する。次に、制御装置がそのコマンドを処理する。チャネルは、各コマンドの状態を追跡し、処理のために次の１組のコマンドを制御装置に送信する時期を制御する。チャネルは、各コマンドがそれ専用のエンティティ内で制御装置に送信されることを保証する。さらに、チャネルは、各コマンドについて制御装置からの応答を処理することに関連する特定の情報を推論する。
【０００６】
チャネルはＣＣＷを解析し、状態情報を追跡し、制御装置からの応答に反応するので、ＣＣＷごとに入出力処理を実行することは、チャネル・サブシステムに関する大量の処理オーバヘッドを伴う可能性がある。したがって、ＣＣＷおよび状態情報の解釈および管理に関連する処理負担の多くをチャネル・サブシステムから制御装置にシフトすることは有益である可能性がある。入出力処理システム内で制御装置とオペレーティング・システムとの間で通信する際のチャネルの役割を単純化すると、実行されるハンドシェークが少なくなるので、通信スループットを増加することができる。通信におけるチャネルの役割を単純化することは、複数のコマンドを単一の入出力操作にグループ化することを含むことができる。
【０００７】
いくつかのコマンドは、制御データとカスタマ・データの両方を必要とする。現在、単一のコマンド・ワード（たとえば、ＣＣＷ）は制御データとカスタマ・データの両方を転送できるわけではない。制御データとカスタマ・データの両方を含むコマンドは、制御データとカスタマ・データの両方を指定するために複数の転送を必要とする。これは、コマンドをグループ化することによって得られるスループットの増加に影響を及ぼすものである。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】米国特許第５４６１７２１号
【特許文献２】米国特許第５５２６４８４号
【特許文献３】米国特許出願第１１／４６４６１３号
【非特許文献】
【０００９】
【非特許文献１】２００７年４月発行の「IBM (R) z/Architecture Principles of Operation」という資料番号ＳＡ２２−７８３２−０５の第６版
【非特許文献２】「Fibre Channel Single Byte Command Code Sets-3 Mapping Protocol」(FC-SB-3)、T11/Project 1357-D/Rev. 1.6、INCITS（２００３年３月）
【非特許文献３】２００５年９月１３日発行の「Information Technology - Fibre Channel Protocol for SCSI, Third Version (FCP-3)」T10 Project 1560-D、Revision 4
【発明の概要】
【発明が解決しようとする課題】
【００１０】
単一のコマンド・ワードで制御データとカスタマ・データの両方を転送する能力を提供することにより、パフォーマンスを改善することができる。
【課題を解決するための手段】
【００１１】
模範的な一実施形態は、入出力（Ｉ／Ｏ）処理システム内の入出力サブシステムと通信するように構成された制御装置において可変長のデバイス・コマンド・ワード（ＤＣＷ：device command word）を処理するためのコンピュータ・プログラムを含む。このコンピュータ・プログラムは、処理回路によって読み取り可能な有形記憶媒体であって、ある方法を実行するために処理回路によって実行するための命令を格納する有形記憶媒体を含む。この方法は、入出力サブシステムから制御装置でＤＣＷを受信するステップを含む。ＤＣＷは、１つまたは複数の入出力操作を指定し、コマンドと、制御データ・カウントと、制御データ・カウントによって指定された長さを有する可変長の制御データとを含む。制御データは、制御データ・カウントに応答して抽出される。次に、コマンドは、指定された１つまたは複数の入出力操作を実行するために、抽出された制御データに応答して実行される。
【００１２】
他の模範的な実施形態は、入出力処理システム内で可変長のＤＣＷを処理するための装置を含む。この装置は、入出力サブシステムと通信するように構成された制御装置を含む。制御装置は、入出力サブシステムから制御装置でＤＣＷを受信するステップを含む方法を実行する。ＤＣＷは、１つまたは複数の入出力操作を指定し、コマンドと、制御データ・カウントと、制御データ・カウントによって指定された長さを有する可変長の制御データとを含む。制御データは、制御データ・カウントに応答して抽出される。次に、コマンドは、指定された１つまたは複数の入出力操作を実行するために、抽出された制御データに応答して実行される。
【００１３】
さらに他の模範的な一実施形態は、入出力（Ｉ／Ｏ）処理システム内の入出力サブシステムと通信するように構成された制御装置において可変長のＤＣＷを処理するための方法を含む。この方法は、入出力サブシステムから制御装置でＤＣＷを受信するステップを含む。ＤＣＷは、１つまたは複数の入出力操作を指定し、コマンドと、制御データ・カウントと、制御データ・カウントによって指定された長さを有する可変長の制御データとを含む。制御データは、制御データ・カウントに応答して抽出される。次に、コマンドは、指定された１つまたは複数の入出力操作を実行するために、抽出された制御データに応答して実行される。
【００１４】
諸実施形態によるその他のコンピュータ・プログラム、装置、または方法、あるいはこれらの組み合わせは、以下の図面および詳細な説明を検討すると、当業者にとって自明なものになるであろう。このような追加のコンピュータ・プログラム、装置、または方法、あるいはこれらの組み合わせはいずれも、この説明の範囲内に含まれ、本発明の範囲内であり、特許請求の範囲によって保護されることが意図されている。
【００１５】
本発明と見なされる主題は、特許請求の範囲で詳細に指摘され、明瞭に請求されている。本発明の前記その他の目的、特徴、および利点は、添付図面と併せて以下の詳細な説明を読めば明らかになる。
【図面の簡単な説明】
【００１６】
【図１】本発明の１つまたは複数の側面を包含し且つ使用する入出力処理システムの一実施形態を描写する図である。
【図２】従来技術のチャネル・コマンド・ワード（ＣＣＷ）の一例を示す図である。
【図３】従来技術のＣＣＷチャネル・プログラムの一例を示す図である。
【図４】図３のＣＣＷチャネル・プログラムを実行するためにチャネルと制御装置との間で通信する際に使用される従来技術のリンク・プロトコルの一実施形態を示す図である。
【図５】本発明の一側面に従った、トランスポート制御ワード（ＴＣＷ：transport control word）チャネル・プログラムの一実施形態を示す図である。
【図６】本発明の一側面に従った、図５のＴＣＷチャネル・プログラムを実行するために、ＸＦＥＲ＿ＲＤＹを使用不可にせずに、チャネルと制御装置との間で通信するために使用されるリンク・プロトコルの一実施形態を示す図である。
【図７】ＣＣＷチャネル・プログラムの４つの書き込みコマンドを実行するために、チャネルと制御装置との間で通信するために使用される従来技術のリンク・プロトコルの一実施形態を示す図である。
【図８】本発明の一側面に従った、ＴＣＷチャネル・プログラムの４つの書き込みコマンドを処理するために、ＸＦＥＲ＿ＲＤＹを使用不可にせずに、チャネルと制御装置との間で通信するために使用されるリンク・プロトコルの一実施形態を示す図である。
【図９】本発明の一側面に従った、制御装置およびチャネル・サブシステムの一実施形態を示す図である。
【図１０】本発明の一側面に従った、トランスポート・コマンド制御ブロック（ＴＣＣＢ：transport command control block）の一実施形態を示す図である。
【図１１】本発明の一側面に従った、ＤＣＷの一実施形態を示す図である。
【図１２】本発明の一側面に従った、可変長のＤＣＷを提供するためのプロセスの一実施形態を示す図である。
【図１３】本発明の１つまたは複数の側面を包含するコンピュータ・プログラムの一実施形態を示す図である。
【発明を実施するための形態】
【００１７】
この詳細な説明は、図面を参照して、一例として、利点および特徴とともに本発明の好ましい諸実施形態を説明するものである。
【００１８】
本発明の一側面に従って、単一のコマンド・ワードが制御データを含み、カスタマ・データも転送できるようにすることにより、入出力（Ｉ／Ｏ）は容易になる。コマンドが必要とする制御データのバイト・カウントを定義するために、コマンド・ワードに１バイト・カウント・フィールドが追加される。したがって、コマンド・ワードは、一方が制御データ用で、もう一方がカスタマ・データ用という２つのカウント・フィールドを含む。模範的な一実施形態では、可変長の制御データがコマンド・ワードのすぐ後に続く。
【００１９】
これは、入出力処理を実行するために使用される入出力処理システムのコンポーネント間の通信を低減することにより入出力処理を容易にする。たとえば、チャネルなどの入出力通信アダプタと制御装置との間の交換およびシーケンスの数が低減される。これは、制御装置による実行のための単一のエンティティとして（たとえば、同じ制御ワードの一部として）制御データとカスタマ・データの両方を制御装置に送信することによって実施される。
【００２０】
この複数のコマンド（たとえば、デバイス・コマンド・ワードまたは「ＤＣＷ」）は、本明細書でトランスポート・コマンド制御ブロック（ＴＣＣＢ：transport command control block）と呼ばれるブロックに含まれ、そのアドレス（間接または直接）はトランスポート制御ワード（ＴＣＷ）で指定される。模範的な一実施形態では、ＴＣＷはオペレーティング・システム（ＯＳ）またはその他のアプリケーションから入出力通信アダプタに送信され、次にその入出力通信アダプタは処理のためにＴＣＣＢをコマンド・メッセージに入れて制御装置に転送する。制御装置は、入出力通信アダプタによる個々のコマンドに関する状況の追跡なしに、それぞれのコマンドを処理する。この複数のコマンドはチャネル・プログラムとも呼ばれ、入出力通信アダプタではなく制御装置上で解析され実行される。
【００２１】
図１を参照して、本発明の１つまたは複数の側面を包含し且つ使用する入出力処理システムの一例について説明する。入出力処理システム１００はホスト・システム１０１を含み、このホスト・システムはさらに、たとえば、メイン・メモリ１０２と、１つまたは複数の中央演算処理装置（ＣＰＵ）１０４と、記憶制御素子１０６と、チャネル・サブシステム１０８とを含む。ホスト・システム１０１は、メインフレームまたはサーバなどの大規模コンピュータ・システムにすることができる。また、入出力処理システム１００は、１つまたは複数の制御装置１１０と１つまたは複数の入出力装置１１２とを含み、そのそれぞれについては以下に説明する。
【００２２】
メイン・メモリ１０２は、入出力装置１１２から入力することができるデータおよびプログラムを格納する。たとえば、メイン・メモリ１０２は、ＣＰＵ１０４のうちの１つまたは複数によって実行される１つまたは複数のオペレーティング・システム（ＯＳ）１０３を含むことができる。たとえば、１つのＣＰＵ１０４は、異なる仮想計算機インスタンスとしてＬｉｎｕｘ（Ｒ）オペレーティング・システム１０３およびｚ／ＯＳ（Ｒ）オペレーティング・システム１０３を実行することができる。メイン・メモリ１０２は、直接的にアドレス可能であり、ＣＰＵ１０４およびチャネル・サブシステム１０８による高速データ処理を可能にする。
【００２３】
ＣＰＵ１０４は、入出力処理システム１００のコントロール・センタである。これは、命令実行、割り込みアクション、タイミング機能、初期プログラム・ローディング、その他の機械関連機能のための順序付けおよび処理機構を含む。ＣＰＵ１０４は、双方向バスまたは単一方向バスなどの接続部１１４を介して記憶制御素子１０６に結合される。
【００２４】
記憶制御素子１０６は、バスなどの接続部１１６を介してメイン・メモリ１０２に結合され、接続部１１４を介してＣＰＵ１０４に結合され、接続部１１８を介してチャネル・サブシステム１０８に結合される。記憶制御素子１０６は、たとえば、ＣＰＵ１０４およびチャネル・サブシステム１０８によって行われる要求の待ち行列化および実行を制御する。
【００２５】
模範的な一実施形態では、チャネル・サブシステム１０８は、ホスト・システム１０１と制御装置１１０との間の通信インターフェースを提供する。チャネル・サブシステム１０８は、前述の通り、記憶制御素子１０６に結合され、シリアル・リンクなどの接続部１２０を介して制御装置１１０のそれぞれに結合される。接続部１２０は、ファイバ・チャネル・ファブリック（たとえば、ファイバ・チャネル・ネットワーク）内で単一モードまたはマルチモード導波管を使用する光リンクとして実装することができる。チャネル・サブシステム１０８は、入出力装置１１２とメイン・メモリ１０２との間の情報の流れを誘導する。これは、入出力装置１１２と直接通信するタスクからＣＰＵ１０４を解放し、入出力処理と同時にデータ処理を続行できるようにする。チャネル・サブシステム１０８は、入出力装置１１２との間の情報の流れを管理する際に通信リンクとして１つまたは複数のチャネル・パス１２２を使用する。入出力処理の一部として、チャネル・サブシステム１０８は、チャネル・パスの可用性のテスト、使用可能なチャネル・パス１２２の選択、入出力装置１１２による操作の実行の開始というパス管理機能も実行する。
【００２６】
各チャネル・パス１２２は、チャネル１２４（図１に示されている一例では、チャネル１２４はチャネル・サブシステム１０８内に位置する）と、１つまたは複数の制御装置１１０と、１つまたは複数の接続部１２０とを含む。他の例では、チャネル・パス１２２の一部として１つまたは複数の動的スイッチ（図示せず）を有することも可能である。動的スイッチは、チャネル１２４および制御装置１１０に結合され、スイッチに接続される任意の２つのリンクを物理的に相互接続する機能を提供する。他の例では、複数のシステム、したがって、制御装置１１０に接続された複数のチャネル・サブシステム（図示せず）を有することも可能である。
【００２７】
また、チャネル・サブシステム１０８内にはサブチャネル（図示せず）も位置する。１つのサブチャネルは、チャネル・サブシステム１０８によりプログラムにアクセス可能な各入出力装置１１２用に設けられ、各入出力装置１１２に専用のものである。サブチャネル（たとえば、テーブルなどのデータ構造）は、ある装置の論理的外観をプログラムに提供する。各サブチャネルは、関連する入出力装置１１２およびその接続機構に関する情報をチャネル・サブシステム１０８に提供する。また、サブチャネルは、関連する入出力装置１１２を伴う入出力操作およびその他の機能に関する情報も提供する。サブチャネルは、それによりチャネル・サブシステム１０８が関連する入出力装置１１２に関する情報をＣＰＵ１０４に提供する手段であり、ＣＰＵ１０４は入出力命令を実行することによりこの情報を入手する。
【００２８】
チャネル・サブシステム１０８は１つまたは複数の制御装置１１０に結合される。各制御装置１１０は、１つまたは複数の入出力装置１１２を操作し制御するためのロジックを提供し、共通機構の使用により、各入出力装置１１２の特性を、チャネル１２４によって提供されるリンク・インターフェースに適合させる。共通機構は、入出力操作の実行、入出力装置１１２および制御装置１１０の状況に関する表示、チャネル・パス１２２によるデータ転送のタイミングの制御、および特定のレベルの入出力装置１１２の制御を可能にする。
【００２９】
各制御装置１１０は、接続部１２６（たとえば、バス）を介して１つまたは複数の入出力装置１１２に接続される。入出力装置１１２は、情報を受信するか、またはメイン・メモリ１０２またはその他のメモリあるいはその両方に情報を格納する。入出力装置１１２の例としては、少し例を挙げると、カード・リーダおよびパンチ、磁気テープ装置、直接アクセス記憶装置、ディスプレイ、キーボード、プリンタ、ポインティング・デバイス、テレプロセシング装置、通信コントローラ、およびセンサベースの機器を含む。
【００３０】
入出力処理システム１００の前記のコンポーネントのうちの１つまたは複数については、非特許文献１、特許文献１、および特許文献２にさらに記載されている。
【００３１】
一実施形態では、入出力装置１１２とメモリ１０２との間でデータを転送するために、チャネル・コマンド・ワード（ＣＣＷ）が使用される。ＣＣＷは、実行すべきコマンドを指定するものであり、処理を制御するためのその他のフィールドを含む。図２を参照して、ＣＣＷの一例について説明する。ＣＣＷ２００は、たとえば、実行すべきコマンド（たとえば、読み取り、逆読み（read backward）、制御、センス、および書き込み）を指定するコマンド・コード２０２と、入出力操作を制御するために使用される複数のフラグ２０４と、データの転送を指定するコマンドの場合に、転送すべきＣＣＷによって指定される記憶領域内のバイト数を指定するカウント・フィールド２０６と、直接アドレス指定を使用するときにデータを含むメイン・メモリ内の位置を指すデータ・アドレス２０８または変更間接データ・アドレス指定を使用するときに処理すべき変更間接データ・アドレス・ワード（ＭＩＤＡＷ：modified indirect data address word）のリスト（たとえば、連続リスト）を指すデータ・アドレス２０８とを含む。変更間接アドレス指定については、特許文献３にさらに記載されている。
【００３２】
順次実行用に配置された１つまたは複数のＣＣＷは、本明細書でＣＣＷチャネル・プログラムとも呼ばれるチャネル・プログラムを形成する。ＣＣＷチャネル・プログラムは、たとえば、オペレーティング・システムまたはその他のソフトウェアによってセットアップされる。このソフトウェアは、ＣＣＷをセットアップし、チャネル・プログラムに割り当てられたメモリのアドレスを入手する。図３を参照して、ＣＣＷチャネル・プログラムの一例について説明する。ＣＣＷチャネル・プログラム２１０は、たとえば、エクステント定義コマンドとともに使用すべきエクステント定義データ２１６のメモリ内の位置を指すポインタ２１４を有するエクステント定義（define extent）ＣＣＷ２１２を含む。この例では、エクステント定義コマンドの後にチャネル内転送（ＴＩＣ：transfer in channel）２１８が続き、これはチャネル・プログラムに対し、レコード位置指定データ２２０を指すポインタ２１９を有するレコード位置指定（locate record）２１７などの１つまたは複数の他のＣＣＷならびに１つまたは複数の書き込みＣＣＷ２２１を含むメモリ内の他の領域（たとえば、アプリケーション領域）を参照させるものである。各書き込みＣＣＷ２２１は、データ領域２２４を指すポインタ２２２を有する。そのデータ領域は、そのデータに直接アクセスするためのアドレスまたはそのデータに間接的にアクセスするためのデータ・アドレス・ワード（たとえば、ＭＩＤＡＷまたはＩＤＡＷ）のリストを含む。さらに、ＣＣＷチャネル・プログラム２１０は、ＣＣＷチャネル・プログラムの実行の結果得られ、状況用サブチャネル（subchannel for status）２２６と呼ばれる、装置アドレスによって定義されたチャネル・サブシステム内の既定の領域を含む。
【００３３】
図３および図４を参照して、ＣＣＷチャネル・プログラムの処理について説明する。特に、図４は、ＣＣＷチャネル・プログラムが実行されているときにチャネルと制御装置との間で行われる様々な交換およびシーケンスの一例を示している。この通信に使用されるリンク・プロトコルは、この例では、ＦＩＣＯＮ（Fiber Connectivity）である。ＦＩＣＯＮに関する情報は、非特許文献２に記載されている。
【００３４】
図４を参照すると、チャネル３００は、制御装置３０２との交換をオープンし、それに関連するエクステント定義コマンドおよびデータ３０４を制御装置３０２に送信する。このコマンドはエクステント定義ＣＣＷ２１２（図３）から取り出され、データはエクステント定義データ領域２１６から得られる。チャネル３００はＴＩＣ２１８を使用して、レコード位置指定ＣＣＷおよび書き込みＣＣＷの場所を突き止める。これは、レコード位置指定ＣＣＷ２１７（図３）およびレコード位置指定データ２２０からレコード位置指定コマンドおよびデータ３０６（図４）を取り出す。書き込みコマンドおよびデータ３０８（図４）は書き込みＣＣＷ２２１およびデータ領域２２４（図３）から取り出される。それぞれ制御装置３０２に送信される。
【００３５】
制御装置３０２は、チャネル３００の交換オープンに応答して、チャネル３００との交換３１０をオープンする。これは、位置指定コマンドおよびデータ３０６または書き込みコマンドおよびデータ３０８あるいはその両方の前または後に行うことができる。交換オープンとともに、応答（ＣＭＲ）がチャネル３００に転送される。ＣＭＲは、制御装置３０２がアクティブであり動作しているという表示をチャネル３００に提供する。
【００３６】
制御装置３０２は、チャネル３００に状況を提供し、交換３１２をクローズする。これに応答して、チャネル３００は、データを格納し、状況を検査し、交換３１４をクローズし、これにより、制御装置３０２に対し、状況が受信されたことを表示する。
【００３７】
４ｋのデータを書き込むための前記のＣＣＷチャネル・プログラムの処理は、２回の交換のオープンおよびクローズと、６つのシーケンスを必要とする。チャネルと制御装置との間の交換およびシーケンスの総数は、チャネル・プログラムの複数のコマンドを１つのＴＣＣＢに集約することによって削減される。このチャネル、たとえば、図１のチャネル１２４は、ＴＣＷを使用して、ＴＣＣＢの位置を識別するとともに、チャネル・プログラムの実行に関連する状況およびデータにアクセスし、それを格納するための位置を識別する。ＴＣＷは、チャネルによって解釈されるものであって、制御装置には送信されず、制御装置によって認識されないものである。
【００３８】
図５を参照して、図３のように４ｋのデータを書き込むためのチャネル・プログラムであるが、個別の個々のＣＣＷの代わりに１つのＴＣＣＢを含むチャネル・プログラムの一例について説明する。図示の通り、本明細書でＴＣＷチャネル・プログラムと呼ばれるチャネル・プログラム４００は、ＴＣＷ４０２を含む。ＴＣＷ４０２は、ＴＣＣＢ４０４のメモリ内の位置と、データ領域４０６またはデータ領域４０６を指すＴＩＤＡＬ４１０（すなわち、ＭＩＤＡＷと同様に、トランスポート・モード間接データ・アドレス・ワード（ＴＩＤＡＷ）のリスト）のメモリ内の位置と、状況領域４０８とを指定する。ＴＩＤＡＷ０ ４１２、ＴＩＤＡＷ１ ４１４、およびＴＩＤＡＷ２ ４１６（ＴＩＤＡＷ４１２〜４１６と総称）は、データを取得または格納するためにデータ領域４０６内の種々の位置を参照することができる。ＴＩＤＡＷ４１２〜４１６は、不連続ブロックのデータまたは連続ブロックのデータを参照することができる。ＴＩＤＡＬ４１０内のＴＩＤＡＷ４１２〜４１６は、メモリ内に連続的に位置する場合もあれば、相互に対して不連続に位置する場合もある。ＴＩＤＡＬ４１０には３つのＴＩＤＡＷ４１２〜４１６のみが示されているが、ＴＩＤＡＬ４１０内には任意の数のＴＩＤＡＷを含むことができることを理解できるであろう。
【００３９】
図６を参照してＴＣＷチャネル・プログラムの処理について説明する。これらの通信に使用されるリンク・プロトコルは、たとえば、ファイバ・チャネル・プロトコル（ＦＣＰ：Fibre Channel Protocol）である。特に、ＦＣＰリンク・プロトコルの３つのフェーズを使用して、ＣＣＷによって制御されるデータ転送を実行するためにＦＣＰをサポートするホスト・バス・アダプタを使用できるようにする。ＦＣＰおよびそのフェーズについては、非特許文献３にさらに記載されている。
【００４０】
図６に示されているリンク・プロトコルの実施形態は、ＸＦＥＲ＿ＲＤＹが使用可能であるときに使用される。図６に示されている実施形態では、チャネル５００は、ＸＦＥＲ＿ＲＤＹ ＩＵ５１０を介して制御装置５０２によって要求されるまで、制御装置５０２にデータ５０６を送信することができない。模範的な代替一実施形態では、ＸＦＥＲ＿ＲＤＹが使用不可になっており、制御装置はチャネル５００にＸＦＥＲ＿ＲＤＹ ＩＵ５１０を送信しない。したがって、チャネル５００は、データ５０６を送信する前に制御装置５０２がデータ５０６を要求するのを待つ必要がない。ＸＦＥＲ＿ＲＤＹが使用不可になっている、この代替実施形態は、パフォーマンスを改善するために、チャネル５００と制御装置５０２が地理的に（たとえば、２０キロメートル超、５０キロメートル超）相互に離れて位置するときに使用することができる。特に指定がない限り、本明細書の考察では、ＸＦＥＲ＿ＲＤＹが使用可能であると想定する。
【００４１】
他の一例では、４Ｋのカスタマ・データを書き込むために、チャネル５００は以下のようにＦＣＰリンク・プロトコル・フェーズを使用する。
１．ＦＣＰ＿ＣＭＮＤ ＩＵに入れたＴＣＣＢおよびシーケンス・イニシアティブを制御装置５０２に転送する。
２．制御装置５０２がデータを受信する準備ができているというＸＦＥＲ＿ＲＤＹ ＩＵ表示を待つ。
３．データのＩＵおよびシーケンス・イニシアティブを制御装置５０２に転送する。
４．最終状況は、たとえば、ＦＣＰ＿ＲＳＰ ＩＵペイロードのバイト１０または１１にアクティブ・ビットを有するＦＣＰ状況フレームに入れて送信される。ＦＣＰ＿ＲＳＰ＿ＩＮＦＯフィールドまたはセンス・フィールドは、追加の状況情報に加えて、ＦＩＣＯＮ終了状況をトランスポートするために使用される。
【００４２】
２回の交換のオープン及びクローズが必要となる図３（図４も参照）のＣＣＷチャネル・プログラムとは対照的に、図５のＴＣＷチャネル・プログラムを実行することにより、１回の交換のオープンおよびクローズのみが必要となるに過ぎない（図６も参照）。さらに、６つの通信シーケンスが必要となるＣＣＷチャネル・プログラム（図３および図４を参照）に比べると、ＴＣＷチャネル・プログラム（図５および図６を参照）の場合は、４つの通信シーケンスが必要となるに過ぎない。
【００４３】
プログラムに追加のコマンドが追加された場合でも、ＴＣＷチャネル・プログラムの場合、交換およびシーケンスの数は同じである。たとえば、図７のＣＣＷチャネル・プログラムの通信と図８のＴＣＷチャネル・プログラムの通信を比較されたい。図７のＣＣＷチャネル・プログラムでは、各コマンド（たとえば、エクステント定義コマンドおよびデータ６００、レコード位置指定コマンドおよびデータ６０１、書き込みコマンドおよびデータ６０２、書き込みコマンドおよびデータ６０４、レコード位置指定コマンドおよびデータ６０６、書き込みコマンドおよびデータ６０８、および書き込みコマンドおよびデータ６２０）は、別々のシーケンスでチャネル６１０から制御装置６１２に送信される。このＣＣＷチャネル・プログラムは、２回の交換のオープンおよびクローズ（たとえば、交換のオープン６２２、６２４、交換のクローズ６２６、６２８）を必要とし、１０個の通信シーケンスを必要とする。これと比較して、図８のＴＣＷチャネル・プログラムは、１回の交換のオープンおよびクローズと４つの通信シーケンスだけで、図７のＣＣＷチャネル・プログラムと同じタスクを達成する。
【００４４】
図８に示されている通り、チャネル７００は、制御装置７０２との交換をオープンし、ＴＣＣＢ７０４を制御装置７０２に送信する。ＴＣＣＢ７０４は、前述の通り、エクステント定義コマンドと、２つのレコード位置指定コマンドと、ＤＣＷ内の４つの書き込みコマンドとを含む。チャネル７００は、ＸＦＥＲ＿ＲＤＹ ＩＵ７１０を受信すると、単一のシーケンスで１６ｋのデータ７０６を制御装置７０２に送信する。チャネル７００は、そのシーケンス内の１６ｋのデータ７０６のうちの４ＫごとにＣＲＣを挿入することができる。４ＫごとにＣＲＣを挿入することにより、制御装置７０２は、ＴＣＣＢ７０４内の書き込みコマンドを完了する前に検証のために１６Ｋ全体をバッファリングするのではなく、１６Ｋのデータを増分式に検証することができる。さらに、制御装置７０２は、チャネル７００に状況を提供し、交換７０８をクローズする。したがって、図８のＴＣＷチャネル・プログラムは、チャネル７００からの出力データ・ストリームに複数のＣＲＣを挿入することにより増分データ検証をサポートしながら、図７のＣＣＷチャネル・プログラムと同じ量のデータを転送するために必要な通信がかなり少なくなる。
【００４５】
次に、図９を参照すると、ＴＣＷチャネル・プログラムの実行をサポートする、図１のチャネル・サブシステム内のチャネル１２４および制御装置１１０の一実施形態がより詳細に示されている。制御装置１１０は、接続部１２０を介してチャネル１２４から受信した、図８のＴＣＣＢ７０４などのＴＣＣＢを含むコマンド・メッセージを解析し処理するためのＣＵ制御ロジック８０２を含む。ＣＵ制御ロジック８０２は、制御装置１１０で受信したＴＣＣＢからＤＣＷおよび制御データを抽出して、接続部１２６を介して装置、たとえば、入出力装置１１２を制御することができる。ＣＵ制御ロジック８０２は、デバイス・コマンドおよびデータを入出力装置１１２に送信し、状況情報およびその他のフィードバックを入出力装置１１２から受信する。たとえば、入出力装置１１２は、入出力装置１１２をターゲットとする、以前の予約要求のために使用中である可能性がある。同じ入出力装置１１２にアクセスするための複数の要求を制御装置１１０が受信したときに発生する可能性のある潜在的な装置予約競合問題を管理するために、ＣＵ制御ロジック８０２は、装置使用中メッセージおよび関連データを追跡し、それを装置使用中待ち行列８０４に格納する。模範的な一実施形態では、図１のＯＳ１０３は、予約がアクティブである間に他のＯＳ１０３が入出力装置１１２にアクセスしないように入出力装置１１２を予約する。すべての入出力操作について装置予約が必要であるわけではないが、固定時間の間、排他的アクセスを必要とする操作、たとえば、ディスク・フォーマットをサポートするために装置予約を使用することができる。
【００４６】
制御装置１１０は、チャネル１２４と入出力装置１１２との間の通信に関連する複数のメッセージまたは状況情報を格納するためにその他のバッファまたはメモリ素子（図示せず）をさらに含むことができる。たとえば、制御装置１１０上に位置するレジスタは、制御装置１１０がサポートする制御装置交換オープンの最大数を定義する最大制御装置交換パラメータを含むことができる。
【００４７】
チャネル・サブシステム１０８内のチャネル１２４は、制御装置１１０との通信をサポートするために複数のエレメントを含む。模範的な一実施形態では、ＣＨＮ制御ロジック８０６は、チャネル・サブシステム１０８と制御装置１１０との間の通信を制御する。ＣＨＮ制御ロジック８０６は、トランスポート・コマンドおよび応答ＩＵなど、コマンドを送信し、応答を受信するために、接続部１２０を介してＣＵ制御ロジック８０２へのインターフェースを直接取ることができる。代替的に、ＣＨＮ制御ロジック８０６とＣＵ制御ロジック８０２との間にメッセージ・インターフェースまたはバッファあるいはその両方（図示せず）を配置することもできる。
【００４８】
図１０は、本発明の一側面に従った、ＴＣＣＢ９００の一実施形態を示している。図１０のＴＣＣＢ９００は、ＴＣＷによって示されているアドレスに位置する。このアドレスは、直接アドレスまたは間接アドレスにすることができ、ＴＣＣＢ９００の内容は１つの記憶位置に存在するかまたは複数の不連続記憶位置に分散することができる。前述の通り、ＴＣＣＢ９００はソフトウェアによって構築された制御ブロックであり、その後、チャネル１２４は実行のためにそれを（たとえば、トランスポート・コマンドＩＵに入れて）制御装置１１０に送信する。ＴＣＣＢ９００は、制御装置１１０によって実行すべきコマンドと、そのコマンドが必要とする任意の制御データとを含む。チャネル１２４は、ＴＣＣＢ９００の内容を調べない。チャネル１２４は、ＴＣＣＢ９００をパッケージ化し、それを制御装置１１０に送信する。このため、ＦＩＣＯＮの代わりに、ＦＣＰトランスポート・プロトコルを使用することができる。
【００４９】
ＴＣＣＢ９００はトランスポート制御域ヘッダ（ＴＣＡＨ：transport control area header）９０２を含み、これは、模範的な一実施形態では、トランスポート・コマンド域（ＴＣＡ：transport command area）９０４およびＴＣＡ９０４内の操作に関する情報（たとえば、長さ、サービス・コード）を含む。また、図１０に示されているＴＣＣＢ９００は、可変長のＴＣＡ９０４も含む。可変長のＴＣＡ９０４は、１つまたは複数のＤＣＷ９０６を含み、その各々はＤＣＷ制御データ９０８を含むことができる。模範的な一実施形態では、ＤＣＷ制御データ９０８は可変長である。模範的な一実施形態では、各ＤＣＷ９０６は、コマンド・フラグ（チェーニング）と、制御データ長と、読み取り／書き込みデータ長とを含む。ＤＣＷ制御データ９０８は、任意選択であり（ＤＣＷ９０６に依存）、そのＤＣＷ９０６用の制御パラメータを含む。たとえば、ＤＣＷ制御データ９０８は、エクステント定義パラメータまたは接頭部パラメータあるいはその両方を含むことができる。模範的な一実施形態では、ＤＣＷ制御データは、ＴＣＡ９０４内のＤＣＷ９０６の末尾に位置し、ＤＣＷ９０６によって指し示されるものではない。最後に、ＴＣＣＢ９００は、ＴＣＣＢ９００で転送されるバイトのカウントなどのデータを含む、ＴＣＡトレーラ（ＴＣＡＴ：TCA trailer）９１０を含む。
【００５０】
図１１は、本発明の一側面に従った、ＤＣＷ１０００の一実施形態を示している。模範的な一実施形態では、ＤＣＷ１０００は、８バイトの長さに制御データ１００２の長さを加えたものである。ＤＣＷは、コマンド・フィールド１００４と、フラグ・フィールド１００６と、予約フィールド１００８と、制御データ（ＣＤ）カウント・フィールド１０１０と、データ・バイト・カウント・フィールド１０１２とを含む。ＤＣＷコマンド・フィールド１００４は、１バイトの長さであり、ＣＣＷで使用されるＣＣＷコマンド・バイトと同じである（しかし、ＣＣＷによって使用されない追加のコマンド・コードを含むこともできる）。フラグ・フィールド１００６は８ビットを含み、模範的な一実施形態では、２番目のビットはＴＣＡ９０４内の次のＤＣＷ１０００へのチェーン・コマンドである。このフラグ・ビットが０に設定されると、これがＴＣＡ９０４内のＤＣＷプログラムの最後のＤＣＷ１０００であることを示す。フラグ・フィールド１００６内の残りのビットは予約され、０に設定される。
【００５１】
ＣＤカウント・フィールド１０１０は、このＤＣＷ１０００によって使用される制御データ１００２のバイト・カウントを含む、１バイト・フィールドである。制御データ１００２は、ＤＣＷ１０００の末尾に付加される。模範的な一実施形態では、制御データ１００２が存在するときにＤＣＷ１０００同士の間に使用されるスペースは、ＤＣＷ１０００が必ず４バイト境界から始まるように次の４バイト境界まで埋め込まれる制御データ１００２のサイズである。データ・バイト・カウント・フィールド１０１２は、４バイトのＤＣＷバイト・カウント・フィールドである。これは、カスタマ・データ（たとえば、図５のデータ４０６）のＤＣＷカウントである。模範的な一実施形態では、このカウントは、このＤＣＷコマンドによって転送されるＣＲＣバイトまたは埋め込みを含まない。このＤＣＷバイト・カウント・フィールド１０１２は、かなり大きくなる可能性があることを除き、ＣＣＷ内のカウント・フィールドと同じ意味を有する。ＤＣＷコマンドが即時コマンドまたはノーオペレーション・コマンドである（すなわち、カスタマ・データをまったく含まない）場合、データ・バイト・カウント・フィールド１０１２は０になる。
【００５２】
模範的な一実施形態では、制御データ１００２は、その制御データ１００２が関連するＤＣＷ１０００の末尾にある同じＴＣＡ９０４に含まれる。模範的な一実施形態では、制御データ１００２は、ＴＣＡ９０４内の次の４バイト境界まで埋め込まれる。ＣＤカウント・フィールド１０１０は制御データ１００２のバイト数を反映する。模範的な一実施形態では、ＴＣＡ９０４内の制御データ１００２の最大長は１つのＤＣＷ１０００を想定した２３２バイトであり、ＴＣＡ９０４の残りの部分はＤＣＷ１０００に関する制御データによって占有される。
【００５３】
図１２は、本発明の一側面に従った、可変長のＤＣＷを提供するためのプロセスの一実施形態を示している。ブロック１１０２では、制御装置が可変長のＤＣＷ１０００を受信する。ＤＣＷ１０００は、コマンド１００４、制御データ・カウント１０１０、および可変長の制御データ１００２によって定義された複数の同等のレガシー入出力操作（たとえば、エクステント定義、レコード位置指定、ならびに、読み取り操作または書き込み操作など）を指定する。制御データの長さは制御データ・カウントによって指定される。ブロック１１０４では、ＤＣＷ１０００の末尾の何バイトが制御データに含まれるかを判断するために制御データ・カウントを使用して、ＤＣＷから制御データ１００２を抽出する。ブロック１１０６では、実行への入力として制御データを使用して、制御装置によりコマンドを実行する。この実行の結果、複数の同等のレガシー入出力操作が実行される。ＤＣＷがカスタマ・データも含む（たとえば、データ・バイト・カウント１０１２が非ゼロである）場合、制御データおよびカスタマ・データに応答してコマンドを実行する。加えて、制御装置はコマンドの完了状況（たとえば、正常完了、エラー条件など）をホスト・システムに伝送することができる。
【００５４】
したがって、図３および図１１に戻って参照すると、本発明の模範的な一実施形態を使用して、エクステント定義ＣＣＷ２１２、レコード位置指定ＣＣＷ２１７、および書き込みＣＣＷ２２１を単一のＤＣＷに結合することができる。このＤＣＷは、エクステント定義、レコード位置指定、およびカスタマ・データ書き込みを意味する、複合コマンドである。この模範的な実施形態では、エクステントおよびレコード位置指定パラメータ・データは、その長さが制御データ・カウント１０１０によって定義されるＤＣＷの一部である制御データである。カスタマ・データ長は、データ・バイト・カウント１０１２によって制御される。転送されるカスタマ・データは、同じＤＣＷにおける書き込み（出力）または読み取り（入力）のみにすることができ、両方にすることはできない。制御装置への制御データ（エクステント定義パラメータおよびレコード位置指定パラメータ）を獲得するための唯一の方法はチャネルが制御装置へのデータとしてこれらのパラメータを転送することであったので、ＣＣＷ内のこのコマンドの結合は現行実装例で実行することはできなかった。
【００５５】
模範的な諸実施形態の技術的効果としては、同じＤＣＷ内でカスタマ・データと制御データを転送する能力を含む。このため、同じ数の機能を実行するために必要な交換の数を削減することによりパフォーマンスを改善することができる。
【００５６】
前述の通り、諸実施形態は、コンピュータによって実行されるプロセスおよびこれらのプロセスを実施するための装置の形式で具体化することができる。模範的な諸実施形態では、本発明は、１つまたは複数のネットワーク・エレメントによって実行されるコンピュータ・プログラム・コードの形式で具体化される。図１３に示されるように、諸実施形態は、コンピュータ使用可能媒体１２０２上の、コンピュータ・プログラム１２００を含む。コンピュータ使用可能媒体１２０２は、有形媒体内に具体化された命令を保持するコンピュータ・プログラム・コード・ロジック１３０４を有する。コンピュータ・プログラム・コード・ロジック１２０４がコンピュータにロードされ、コンピュータによって実行されると、そのコンピュータが本発明を実施するための装置になる。コンピュータ使用可能媒体１２０２は、フレキシブル・ディスク、ＣＤ−ＲＯＭ、ハード・ディスク、ユニバーサル・シリアル・バス（ＵＳＢ）フラッシュ・ドライブ等のコンピュータ可読記憶媒体を含むことができる。汎用マイクロプロセッサ上に実装されると、コンピュータ・プログラム・コード・ロジック１２０４のセグメントは、特定の論理回路を作成するようにマイクロプロセッサを構成する。
【００５７】
模範的な諸実施形態を参照して本発明を説明してきたが、当業者であれば、本発明の範囲を逸脱せずに、様々な変更が可能であり、その諸要素の代わりに同等のものを使用できることを理解できるであろう。加えて、本発明の本質的な範囲を逸脱せずに、特定の状況または物質を本発明の教示に適合させるために多くの変更を行うことができる。したがって、本発明は、本発明を実施するために企図された最良の形態として開示された特定の実施形態に限定されず、特許請求の範囲内に該当するすべての実施形態を含むことが意図されている。
【図１】
0005159902.tif 000002
【図２】
0005159902.tif 000003
【図３】
0005159902.tif 000004
【図４】
0005159902.tif 000005
【図５】
0005159902.tif 000006
【図６】
0005159902.tif 000007
【図７】
0005159902.tif 000008
【図８】
0005159902.tif 000009
【図９】
0005159902.tif 000010
【図１０】
0005159902.tif 000011
【図１１】
0005159902.tif 000012
【図１２】
0005159902.tif 000013
【図１３】
0005159902.tif 000014