(57)【要約】【課題】  Ｉ／Ｏ処理システムのＩ／Ｏサブシステムにおける間接データ・アドレッシングを提供するためのシステム、方法、およびコンピュータ・プログラムを提供する。【解決手段】  コンピュータ・プログラムは、処理回路によって読み取り可能であり、方法を実行するために処理回路によって実行するための命令を記憶する有形の記憶媒体を含む。この方法は、Ｉ／Ｏ動作のための制御ワードを受信するステップを含む。制御ワードは、Ｉ／Ｏ動作に対応付けられたデータのための間接データ・アドレスを含む。間接データ・アドレスは、データをひとまとめに特定する記憶アドレスのリストの開始位置を含み、リストは２つ以上の非連続的な記憶位置にまたがる。リストに応答してデータを収集する。収集したデータは、Ｉ／Ｏ処理システムにおける制御ユニットに送信する。【選択図】  図１１
2011512591.tif 000002
【特許請求の範囲】
【請求項１】
入出力（Ｉ／Ｏ）処理システムのＩ／Ｏサブシステムにおける間接データ・アドレッシングを提供するためのコンピュータ・プログラムであって、
処理回路によって読み取り可能であり、方法を実行するために前記処理回路によって実行するための命令を記憶する有形の記憶媒体であって、前記方法が、
Ｉ／Ｏ動作のための制御ワードを受信するステップであって、前記制御ワードが前記Ｉ／Ｏ動作に対応付けられたデータのための間接データ・アドレスを含み、前記間接データ・アドレスが前記データをひとまとめに特定する記憶アドレスのリストの開始位置を含み、前記リストが２つ以上の非連続的な記憶位置にまたがる、ステップと、
前記リストに応答して前記データを収集するステップと、
前記収集したデータを前記Ｉ／Ｏ処理システムにおける制御ユニットに送信するステップと、
を含む、コンピュータ・プログラム。
【請求項２】
前記リストが、前記リストにおける各記憶アドレスに対応付けられたフラグを更に含み、前記フラグが、前記対応付けられた記憶アドレスが前記データの一部を指すことを示す第１の値を有し、前記フラグが、前記対応付けられた記憶アドレスが、前記リスト内の追加の記憶アドレスが配された記憶位置を指すことを示す第２の値を有する、請求項１に記載のコンピュータ・プログラム。
【請求項３】
前記リスト上の各記憶アドレスについて、前記収集が、
前記記憶アドレスおよび前記記憶アドレスに対応付けられた前記フラグにアクセスすることと、
前記第１の値を有する前記フラグに応答して前記記憶アドレスからの内容を前記データに追加することと、
前記第２の値を有する前記フラグに応答して第２の記憶アドレスおよび前記記憶アドレスに配された第２のフラグにアクセスし、前記第１の値を有する前記第２のフラグに応答して前記第２の記憶アドレスからの内容を前記データに追加することと、
を含む、請求項２に記載のコンピュータ・プログラム。
【請求項４】
前記フラグが前記第１の値を有する場合は、前記リストにおける第２の記憶アドレスが前記リストにおける第１の記憶アドレスに対して連続的に配置され、前記フラグが前記第２の値を有する場合は、前記第２の記憶アドレスが前記第１の記憶アドレスに対して非連続的に配置されている、請求項２に記載のコンピュータ・プログラム。
【請求項５】
前記リストが、前記リストにおける各記憶アドレスに対応付けられたカウント・フィールドを更に含み、前記カウント・フィールドが、前記記憶アドレスから読み取るバイト数を示し、前記収集が、前記カウント・フィールドおよび前記記憶アドレスに応答する、請求項１に記載のコンピュータ・プログラム。
【請求項６】
前記制御ワードがトランスポート制御ワード（ＴＣＷ）であり、前記記憶アドレス・リストがトランスポート間接データ・アドレス・リスト（ＴＩＤＡＬ）であり、各記憶アドレスがトランスポート間接データ・アドレス・ワード（ＴＩＤＡＷ）である、請求項１に記載のコンピュータ・プログラム。
【請求項７】
前記Ｉ／Ｏサブシステムがチャネル・サブシステムである、請求項１に記載のコンピュータ・プログラム。
【請求項８】
前記制御ワードが、間接データ・アドレスを含むことを示すフラグを含む、請求項１に記載のコンピュータ・プログラム。
【請求項９】
前記データが制御データを含む、請求項１に記載のコンピュータ・プログラム。
【請求項１０】
前記データがカスタマ・データを含む、請求項１に記載のコンピュータ・プログラム。
【請求項１１】
Ｉ／Ｏ処理システムのＩ／Ｏサブシステムにおける間接データ・アドレッシングを提供するための装置であって、
前記Ｉ／Ｏ処理システムにおける制御ユニットと通信するように適合され、方法を実行するＩ／Ｏサブシステムであって、前記方法が、
Ｉ／Ｏ動作のための制御ワードを受信するステップであって、前記制御ワードが前記Ｉ／Ｏ動作に対応付けられたデータのための間接データ・アドレスを含み、前記間接データ・アドレスが前記データをひとまとめに特定する記憶アドレスのリストの開始位置を含み、前記リストが２つ以上の非連続的な記憶位置にまたがる、ステップと、
前記リストに応答して前記データを収集するステップと、
前記収集したデータを前記制御ユニットに送信するステップと、
を含む、装置。
【請求項１２】
前記リストが、前記リストにおける各記憶アドレスに対応付けられたフラグを更に含み、前記フラグが、前記対応付けられた記憶アドレスが前記データの一部を指すことを示す第１の値を有し、前記フラグが、前記対応付けられた記憶アドレスが、前記リスト内の追加の記憶アドレスが配された記憶位置を指すことを示す第２の値を有する、請求項１１に記載の装置。
【請求項１３】
前記リスト上の各記憶アドレスについて、前記収集が、
前記記憶アドレスおよび前記記憶アドレスに対応付けられた前記フラグにアクセスすることと、
前記第１の値を有する前記フラグに応答して前記記憶アドレスからの内容を前記データに追加することと、
前記第２の値を有する前記フラグに応答して第２の記憶アドレスおよび前記記憶アドレスに配された第２のフラグにアクセスし、前記第１の値を有する前記第２のフラグに応答して前記第２の記憶アドレスからの内容を前記データに追加することと、
を含む、請求項１２に記載の装置。
【請求項１４】
前記フラグが前記第１の値を有する場合は、前記リストにおける第２の記憶アドレスが前記リストにおける第１の記憶アドレスに対して連続的に配置され、前記フラグが前記第２の値を有する場合は、前記第２の記憶アドレスが前記第１の記憶アドレスに対して非連続的に配置されている、請求項１２に記載の装置。
【請求項１５】
前記リストが、前記リストにおける各記憶アドレスに対応付けられたカウント・フィールドを更に含み、前記カウント・フィールドが、前記記憶アドレスから読み取るバイト数を示し、前記収集が、前記カウント・フィールドおよび前記記憶アドレスに応答する、請求項１１に記載の装置。
【請求項１６】
前記データが制御データおよびカスタマ・データの一方または双方を含む、請求項１１に記載の装置。
【請求項１７】
前記Ｉ／Ｏサブシステムが、ホスト・システムに含まれたチャネル・サブシステムであり、前記チャネル・サブシステムにおけるＩ／Ｏ通信アダプタが、ＦＩＣＯＮプロトコルを用いてファイバ・チャネル・ネットワークを介して前記制御ユニットと通信を行うように適合されている、請求項１１に記載の装置。
【請求項１８】
Ｉ／Ｏ処理システムのＩ／Ｏサブシステムにおける間接データ・アドレッシングを提供するための方法であって、
前記Ｉ／ＯサブシステムにおいてＩ／Ｏ動作のための制御ワードを受信するステップであって、前記制御ワードが前記Ｉ／Ｏ動作に対応付けられたデータのための間接データ・アドレスを含み、前記間接データ・アドレスが前記データをひとまとめに特定する記憶アドレスのリストの開始位置を含み、前記リストが２つ以上の非連続的な記憶位置にまたがる、ステップと、
前記リストに応答して前記データを収集するステップと、
前記収集したデータを前記Ｉ／Ｏ処理システムにおける制御ユニットに送信するステップと、
を含む、方法。
【請求項１９】
前記リストが、前記リストにおける各記憶アドレスに対応付けられたフラグを更に含み、前記フラグが、前記対応付けられた記憶アドレスが前記データの一部を指すことを示す第１の値を有し、前記フラグが、前記対応付けられた記憶アドレスが、前記リスト内の追加の記憶アドレスが配された記憶位置を指すことを示す第２の値を有する、請求項１８に記載の方法。
【請求項２０】
前記リスト上の各記憶アドレスについて、前記収集が、
前記記憶アドレスおよび前記記憶アドレスに対応付けられた前記フラグにアクセスすることと、
前記第１の値を有する前記フラグに応答して前記記憶アドレスからの内容を前記データに追加することと、
前記第２の値を有する前記フラグに応答して第２の記憶アドレスおよび前記記憶アドレスに配された第２のフラグにアクセスし、前記第１の値を有する前記第２のフラグに応答して前記第２の記憶アドレスからの内容を前記データに追加することと、
を含む、請求項１９に記載の方法。
【請求項２１】
前記フラグが前記第１の値を有する場合は、前記リストにおける第２の記憶アドレスが前記リストにおける第１の記憶アドレスに対して連続的に配置され、前記フラグが前記第２の値を有する場合は、前記第２の記憶アドレスが前記第１の記憶アドレスに対して非連続的に配置されている、請求項１９に記載の方法。
【請求項２２】
前記リストが、前記リストにおける各記憶アドレスに対応付けられたカウント・フィールドを更に含み、前記カウント・フィールドが、前記記憶アドレスから読み取るバイト数を示し、前記収集が、前記カウント・フィールドおよび前記記憶アドレスに応答する、請求項１８に記載の方法。
【請求項２３】
前記データが制御データを含む、請求項１８に記載の方法。
【請求項２４】
前記データがカスタマ・データを含む、請求項１８に記載の方法。
【請求項２５】
Ｉ／Ｏ処理システムのＩ／Ｏサブシステムにおける間接データ・アドレッシングを提供するためのコンピュータ・プログラムであって、
処理回路によって読み取り可能であり、方法を実行するために前記処理回路によって実行するための命令を記憶する有形の記憶媒体であって、前記方法が、
Ｉ／Ｏ動作のための制御ワードを受信するステップであって、前記制御ワードが前記Ｉ／Ｏ動作からのカスタマ・データ出力のための間接データ・アドレスを含み、前記間接データ・アドレスが前記カスタマ・データ出力のための記憶位置をひとまとめに特定する記憶アドレスのリストの開始位置を含み、前記リストが２つ以上の非連続的な記憶位置にまたがる、ステップと、
前記Ｉ／Ｏ処理システムにおける制御ユニットにおいて前記Ｉ／Ｏ動作が実行されることに応答して、前記制御ユニットから前記カスタマ・データ出力を受信するステップと、
前記リストに応答して前記Ｉ／Ｏサブシステムにおける前記記憶位置において前記カスタマ・データ出力を記憶するステップと、
を含む、コンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に入出力処理に関し、具体的には、Ｉ／Ｏ処理システムのＩ／Ｏサブシステムにおける非連続的な（non-contiguous）間接データ・アドレッシング・リストの提供に関する。
【背景技術】
【０００２】
入出力（Ｉ／Ｏ）動作は、Ｉ／Ｏ処理システムのメモリとＩ／Ｏデバイスとの間でデータを転送するために用いられる。具体的には、Ｉ／Ｏ動作を実行することによって、メモリから１つ以上のＩ／Ｏデバイスにデータが書き込まれると共に、１つ以上のＩ／Ｏデバイスからメモリにデータが読み取られる。
【０００３】
Ｉ／Ｏ動作の処理を容易にするために、Ｉ／Ｏ処理システムのＩ／Ｏサブシステムが用いられる。Ｉ／Ｏサブシステムは、Ｉ／Ｏ処理システムのメイン・メモリおよびＩ／Ｏデバイスに結合され、メモリとＩ／Ｏデバイスとの間の情報フローを誘導する。Ｉ／Ｏサブシステムの一例は、チャネル・サブシステムである。チャネル・サブシステムは、チャネル経路を通信媒体として用いる。各チャネル経路が含むチャネルは制御ユニットに結合されており、制御ユニットは更に１つ以上のＩ／Ｏデバイスに結合されている。
【０００４】
チャネル・サブシステムは、Ｉ／Ｏデバイスとメモリとの間でデータを転送するために、チャネル・コマンド・ワード（ＣＣＷ：channel command word）を用いる。ＣＣＷは、実行するコマンドを特定する。あるＩ／Ｏ動作を開始するコマンドでは、ＣＣＷは、その動作に関連付けられたメモリ領域、その領域に対する転送またはその領域からの転送が完了した場合にいつでも行われるアクション、および他のオプションを指定する。
【０００５】
Ｉ／Ｏ処理の間、チャネルによってメモリからＣＣＷのリストがフェッチされる。チャネルは、ＣＣＷのリストからの各コマンドをパーズし、各々がそれ自身のエンティティ内にある多数のコマンドを、チャネルに結合された制御ユニットに送出する。次いで、制御ユニットがコマンドを処理する。チャネルは、各コマンドの状態を追跡し、いつ次のコマンド・セットを処理のために制御ユニットに送信するかを制御する。チャネルによって、各コマンドがそれ自身のエンティティ内で制御ユニットに送信されることが確実となる。更に、チャネルは、各コマンドについて制御ユニットからの応答の処理に関連したある情報を推論する。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】米国特許第５，４６１，７２１号
【特許文献２】米国特許第５，５２６，４８４号
【特許文献３】米国特許出願第１１／４６４，６１３号
【非特許文献】
【０００７】
【非特許文献１】「IBM(R)z/Architecture Principles of Operation」PublicationNo. SA22-7832-05、第６版（２００７年４月）
【非特許文献２】「FibreChannel Single Byte Command Code Sets-3 Mapping Protocol (FC-SB-3)」、T11/Project 1357-D/Rev. 1.6、INCITS（２００３年３月）
【非特許文献３】「InformationTechnology - Fibre Channel Protocol for SCSI, Third Version (FCP-3）」、T10 Project 1560-D、Revision 4（２００５年９月１３日）
【発明の概要】
【発明が解決しようとする課題】
【０００８】
ＣＣＷごとにＩ／Ｏ処理を実行することには、チャネル・サブシステムの大量の処理オーバーヘッドが伴う。なぜなら、チャネルがＣＣＷをパーズし、状態情報を追跡し、制御ユニットからの応答に対して反応するからである。従って、ＣＣＷおよび状態情報を解釈し管理することに関連した処理の負担の多くを、チャネル・サブシステムから制御ユニットに移すことが有益である場合がある。Ｉ／Ｏ処理システムにおいて、制御ユニットとオペレーティング・システムとの間の通信におけるチャネルの役割を簡略化すると、実行されるハンドシェイクが少なくなるので、通信スループットを高くすることができる。しかしながら、コマンド・シーケンスならびにチャネル・サブシステムおよび制御ユニットの役割を変更すると、単一のＩ／Ｏ動作内で転送されるデータ量が、１メガバイトを超えるまでになる可能性がある。これは、システム・ページ・サイズが４ｋバイトである場合、１つの連続的なトランスポート間接データ・アドレス・リストによって転送可能な最大データ量である。現在、既存のチャネル・コマンド・ワード（ＣＣＷ）は、単一のＩ／Ｏ動作内で６４ｋバイトを超えるデータ転送をサポートすることができない。なぜなら、ＣＣＷにおいて２バイト・カウント・フィールドという制限があるからである。トランスポート制御ワード（ＴＣＷ）は、ＴＣＷにおけるバイト・カウントを４バイトに増大することによってこの問題を解決したが、トランスポート間接データ・アドレス・リスト（ＴＩＤＡＬ）は、４ｋバイトである１ページ内に含めなければならず、この場合は２５６のアドレス・リスト・エントリしか可能ではないので、１メガバイトという次の制限が生じた。
【課題を解決するための手段】
【０００９】
本発明の実施形態は、入出力（Ｉ／Ｏ）処理システムのＩ／Ｏサブシステムにおける間接データ・アドレッシングを提供するためのコンピュータ・プログラムを含む。コンピュータ・プログラムは、処理回路によって読み取り可能であり、方法を実行するために処理回路によって実行するための命令を記憶する有形の記憶媒体を含む。この方法は、Ｉ／Ｏ動作のための制御ワードを受信するステップを含む。制御ワードは、Ｉ／Ｏ動作に対応付けられたデータのための間接データ・アドレスを含む。間接データ・アドレスは、データをひとまとめに特定する記憶アドレスのリストの開始位置を含み、リストは２つ以上の非連続的な記憶位置にまたがる。リストに応答してデータを収集する。収集したデータは、Ｉ／Ｏ処理システムにおける制御ユニットに送信する。
【００１０】
更に別の実施形態は、Ｉ／Ｏ処理システムのＩ／Ｏサブシステムにおける間接データ・アドレッシングを提供するための装置を含む。この装置は、Ｉ／Ｏ処理システムにおける制御ユニットと通信するように適合されたＩ／Ｏサブシステムを含む。Ｉ／Ｏサブシステムは、Ｉ／Ｏ動作のための制御ワードを受信するステップを含む方法を実行する。制御ワードはＩ／Ｏ動作に対応付けられたデータのための間接データ・アドレスを含む。間接データ・アドレスは、データをひとまとめに特定する記憶アドレスのリストの開始位置を含み、リストは２つ以上の非連続的な記憶位置にまたがる。リストに応答してデータを収集する。収集したデータは、制御ユニットに送信する。
【００１１】
更に別の実施形態は、Ｉ／Ｏ処理システムのＩ／Ｏサブシステムにおける間接データ・アドレッシングを提供するための方法を含む。この方法は、Ｉ／Ｏ動作のための制御ワードを受信するステップを含む。制御ワードは、Ｉ／Ｏ動作に対応付けられたデータのための間接データ・アドレスを含む。間接データ・アドレスは、データをひとまとめに特定する記憶アドレスのリストの開始位置を含み、リストは２つ以上の非連続的な記憶位置にまたがる。リストに応答してデータを収集する。収集したデータは、Ｉ／Ｏ処理システムにおける制御ユニットに送信する。
【００１２】
更に別の実施形態は、Ｉ／Ｏ処理システムのＩ／Ｏサブシステムにおける間接データ・アドレッシングを提供するためのコンピュータ・プログラムを含む。コンピュータ・プログラムは、処理回路によって読み取り可能であり、方法を実行するために処理回路によって実行するための命令を記憶する有形の記憶媒体を含む。この方法は、Ｉ／Ｏ動作のための制御ワードを受信するステップを含む。制御ワードは、Ｉ／Ｏ動作からのカスタマ・データ出力のための間接データ・アドレスを含む。間接データ・アドレスは、カスタマ・データ出力のための記憶位置をひとまとめに特定する記憶アドレスのリストの開始位置を含み、リストは２つ以上の非連続的な記憶位置にまたがる。Ｉ／Ｏ処理システムにおける制御ユニットにおいてＩ／Ｏ動作が実行されることに応答して、制御ユニットからカスタマ・データ出力を受信する。リストに応答して、Ｉ／Ｏサブシステムにおける記憶位置にカスタマ・データ出力を記憶する。
【００１３】
実施形態に従った、他の製造品、装置、または方法、あるいはそれら全ては、以下の図面および詳細な説明を検討すれば、当業者には明らかとなろう。かかる全ての追加の製造品、装置、または方法、あるいはそれら全ては、本記載内に包含され、本発明の範囲内にあり、添付の特許請求の範囲によって保護されることが意図される。
【００１４】
本発明として見なされる主題は、本明細書の最後にある特許請求の範囲に特に指摘され、明確に請求されている。本発明の前述およびその他の目的、特徴、および利点は、添付図面と関連付けて述べられる以下の詳細な説明から明らかである。
【図面の簡単な説明】
【００１５】
【図１】本発明の１つ以上の態様を組み込んで用いたＩ／Ｏ処理システムの一実施形態を示す。
【図２】従来技術のチャネル・コマンド・ワードの一例を示す。
【図３】従来技術のチャネル・コマンド・ワード・チャネル・プログラムの一例を示す。
【図４】図３のチャネル・コマンド・ワード・チャネル・プログラムを実行するためにチャネルと制御ユニットとの間の通信において用いられる従来技術のリンク・プロトコルの一実施形態を示す。
【図５】本発明の一態様に従ったトランスポート制御ワード・チャネル・プログラムの一実施形態を示す。
【図６】本発明の一態様に従った、図５のトランスポート制御ワード・チャネル・プログラムを実行するためにチャネルと制御ユニットとの間の通信に用いられるリンク・プロトコルの一実施形態を示す。
【図７】チャネル・コマンド・ワード・チャネル・プログラムの４つの書き込みコマンドを実行するためにチャネルと制御ユニットとの間の通信に用いられる従来技術のリンク・プロトコルの一実施形態を示す。
【図８】本発明の一態様に従った、トランスポート制御ワード・チャネル・プログラムの４つの書き込みコマンドを処理するためにチャネルと制御ユニットとの間の通信に用いられるリンク・プロトコルの一実施形態を示す。
【図９】本発明の一態様に従った、制御ユニットとチャネル・サブシステムの一実施形態を示す。
【図１０】本発明の一態様に従った、トランスポート・モード間接データ・アドレス・ワード（ＴＩＤＡＷ）の一実施形態を示す。
【図１１】Ｉ／Ｏサブシステムにおいて非連続的な間接データ・アドレッシングを提供するためのプロセスの一実施形態を示す。
【図１２】本発明の１つ以上の態様を組み込んだ製造品の一実施形態を示す。
【発明を実施するための形態】
【００１６】
詳細な説明は、一例として添付図面を参照して、利点および特徴と共に本発明の好適な実施形態を説明する。
【００１７】
本発明の一態様によれば、入出力（Ｉ／Ｏ）処理が容易になる。一例において、Ｉ／Ｏ処理を実行するために用いるＩ／Ｏ処理システムのコンポーネント間の通信を低減することによって、Ｉ／Ｏ処理を容易にする。例えば、チャネル等のＩ／Ｏ通信アダプタと制御ユニットとの間の交換およびシーケンスの数を減らす。これを達成するには、Ｉ／Ｏ通信アダプタから制御ユニットに、制御ユニットによって実行される単一のエンティティとして複数のコマンドを送信するか、または、制御ユニットが、もしもある場合は単一のエンティティとしてのコマンドの結果として得られたデータを送信する。
【００１８】
複数のコマンドは、本明細書においてトランスポート・コマンド制御ブロック（ＴＣＣＢ）と称するブロック内に含まれ、そのアドレスはトランスポート制御ワード（ＴＣＷ）において特定される。ＴＣＷは、オペレーティング・システム（ＯＳ）または他のアプリケーションからＩ／Ｏ通信アダプタに送信され、次いでこのＩ／Ｏ通信アダプタがコマンド・メッセージ内のＴＣＣＢを処理のために制御ユニットに送出する。制御ユニットは各コマンドを処理し、Ｉ／Ｏ通信アダプタによる個々のコマンドに関するステータスの追跡は行われない。また、複数のコマンドはチャネル・プログラムとも称され、これは、Ｉ／Ｏ通信アダプタでなく制御ユニット上でパーズされ実行される。
【００１９】
例示的な実施形態において、Ｉ／Ｏ動作のためのＴＣＷは、Ｉ／Ｏ動作に関連した制御データ（例えばＴＣＣＢ）およびカスタマ・データの位置を示すポインタを含む。例示的な実施形態において、ポインタは、間接データ・アドレスを示し、これは本明細書においてトランスポート・モード間接データ・アドレス・リスト（ＴＩＤＡＬ）と称される。ＴＩＤＡＬは、データが位置するアドレスのリストを含む。これらのアドレスは、本明細書において、トランスポート・モード間接データ・アドレス・ワード（ＴＩＤＡＷ）と称される。４Ｋページを有する現在のシステム設計では、ＴＩＤＡＬは４キロバイト（４Ｋ）よりも大きくすることができず、このため、単一のＴＩＤＡＬに含むことができる連続的なＴＩＤＡＷの数は、２５６（各ＴＩＤＡＬは１６バイト）に制限される。このため、４Ｋページであり、各ＴＩＤＡＬが１６バイトであり、ＴＩＤＡＬが１つの４Ｋページに含まれなければならないという想定では、１つのＩ／Ｏ動作によって転送することができる総データ量が１メガバイトに制限される。本発明の例示的な実施形態において、この制限を排除するために、ＴＩＤＡＷアドレスが、異なるページである場合がある別の記憶位置に次のＴＩＤＡＷの開始位置を示すことを可能とする。ＴＩＤＡＷ内のフラグを用いて、ＴＩＤＡＷのアドレスが、データ・アドレスを含むか、またはＴＩＤＡＷリストの連続のアドレスを含むかを示す。このように、単一のＴＩＤＡＬを構成するＴＩＤＡＷを、非連続的な記憶位置に配することができ、このため、単一のＴＩＤＡＬリスト内に２５６を超えるＴＩＤＡＷを含むことができる。これによって、単一のＩ／Ｏ動作内で、より多くのデータを転送することができる。例えば、例示的な実施形態においては、ＴＣＷにおけるカウント・フィールドが４バイトである場合、単一のＩ／Ｏ動作内で約４ギガバイト（４ギガバイトよりも１バイト少ない）を転送することができる。
【００２０】
図１を参照して、本発明の１つ以上の態様を組み込んで用いているＩ／Ｏ処理システムの一例を説明する。Ｉ／Ｏ処理システム１００はホスト・システム１０１を含み、これが更に、例えばメイン・メモリ１０２、１つ以上の中央演算処理装置（ＣＰＵ）１０４、記憶制御要素１０６、およびチャネル・サブシステム１０８を含む。ホスト・システム１０１は、メインフレームまたはサーバ等の大規模コンピューティング・システムとすれば良い。また、Ｉ／Ｏ処理システム１００は、１つ以上の制御ユニット１１０および１つ以上のＩ／Ｏデバイス１１２を含む。これらの各々につては、以下で説明する。
【００２１】
メイン・メモリ１０２は、Ｉ／Ｏデバイス１１２からの入力とすることができるデータおよびプログラムを記憶する。例えば、メイン・メモリ１０２は、ＣＰＵ１０４の１つ以上によって実行される１つ以上のオペレーティング・システム（ＯＳ）１０３を含むことができる。例えば、１つのＣＰＵ１０４は、Ｌｉｎｕｘ（Ｒ）オペレーティング・システム１０３およびｚ／ＯＳ（Ｒ）オペレーティング・システム１０３を異なる仮想マシン・インスタンスとして実行することができる。メイン・メモリ１０２は、直接アドレス可能であり、ＣＰＵ１０４およびチャネル・サブシステム１０８による高速データ処理を可能とする。
【００２２】
ＣＰＵ１０４は、Ｉ／Ｏ処理システム１００の制御センターである。これは、命令実行、割り込み動作、タイミング機能、初期プログラム・ロード、および他の機械関連機能のためのシーケンスおよび処理機構を含む。ＣＰＵ１０４は、双方向または単方向バス等の接続１１４を介して記憶制御要素１０６に結合されている。
【００２３】
記憶制御要素１０６は、バス等の接続１１６を介してメイン・メモリ１０２に結合され、接続１１４を介してＣＰＵ１０４に結合され、接続１１８を介してチャネル・サブシステム１０８に結合されている。記憶制御要素１０６は、例えば、ＣＰＵ１０４およびチャネル・サブシステム１０８によって行われる要求の待ち行列作成（queuing）および実行を制御する。
【００２４】
例示的な実施形態において、チャネル・サブシステム１０８は、ホスト・システム１０１と制御ユニット１１０との間の通信インタフェースを提供する。チャネル・サブシステム１０８は、上述のように記憶制御ユニット１０６に結合され、更に、シリアル・リンク等の接続１２０を介して制御ユニット１１０の各々に結合されている。接続１２０は、ファイバ・チャネル構造（fabric）における単一モードまたは多モード導波管を用いた光リンクとして実施することができる。チャネル・サブシステム１０８は、Ｉ／Ｏデバイス１１２とメイン・メモリ１０２との間の情報フローを誘導する。これは、Ｉ／Ｏデバイス１１２と直接通信を行うタスクからＣＰＵ１０４を解放し、Ｉ／Ｏ処理と同時にデータ処理が進行することを可能とする。チャネル・サブシステム１０８は、Ｉ／Ｏデバイス１１２への情報フローまたはＩ／Ｏデバイス１１２からの情報フローを管理する際の通信リンクとして、１つ以上のチャネル経路１２２を用いる。Ｉ／Ｏ処理の一部として、チャネル・サブシステム１０８は、チャネル経路の可用性についての試験を行い、利用可能なチャネル経路１２２を選択し、Ｉ／Ｏデバイス１１２による動作の実行を開始するという経路管理機能も実行する。
【００２５】
各チャネル経路１２２は、チャネル１２４（図１に示すように、一例においてチャネル１２４はチャネル・サブシステム１０８内に位置する）、１つ以上の制御ユニット１１０、および１つ以上の接続１２０を含む。別の例においては、チャネル経路１２２の一部として、１つ以上の動的スイッチ（図示せず）を有することも可能である。動的スイッチは、チャネル１２４および制御ユニット１１０に結合され、スイッチに取り付けられたいずれかの２つのリンクを物理的に相互接続する機能を提供する。別の例では、多数のシステムを有することも可能であり、従って制御ユニット１１０には多数のチャネル・サブシステム（図示せず）が取り付けられる。
【００２６】
また、チャネル・サブシステム１０８内には、サブチャネル（図示せず）も位置している。チャネル・サブシステム１０８を介してプログラムにアクセス可能な各Ｉ／Ｏデバイス１１２について、１つのサブチャネルが設けられて専用となっている。サブチャネル（例えばテーブル等のデータ構造）は、プログラムに対してデバイスの論理的外観を与える。各サブチャネルは、対応付けられたＩ／Ｏデバイス１１２およびそのチャネル・サブシステム１０８に対する取り付けに関する情報を与える。また、サブチャネルは、対応付けられたＩ／Ｏデバイス１１２に関連するＩ／Ｏ動作および他の機能に関する情報も与える。サブチャネルは、チャネル・サブシステム１０８が、対応付けられたＩ／Ｏデバイス１１２に関する情報をＣＰＵ１０４に与える手段であり、ＣＰＵ１０４はＩ／Ｏ命令を実行することによってこの情報を取得する。
【００２７】
チャネル・サブシステム１０８は、１つ以上の制御ユニット１１０に結合されている。各制御ユニット１１０は、１つ以上のＩ／Ｏデバイス１１２を動作させ制御するための論理を与え、共通の機構を用いることによって、各Ｉ／Ｏデバイス１１２の特徴を、チャネル１２４が与えるリンク・インタフェースに適合させる。共通の機構は、Ｉ／Ｏ動作の実行、Ｉ／Ｏデバイス１１２および制御ユニット１１０のステータスに関する指示、チャネル経路１２２を介したデータ転送のタイミングの制御、およびＩ／Ｏデバイス１１２のあるレベルの制御を可能とする。
【００２８】
各制御ユニット１１０は、接続１２６（例えばバス）を介して、１つ以上のＩ／Ｏデバイス１１２に取り付けられている。Ｉ／Ｏデバイス１１２は、情報を受信するか、またはメイン・メモリ１０２または他のメモリあるいはその両方に情報を記憶する。Ｉ／Ｏデバイス１１２の例は、いくつか名前を挙げると、カード・リーダおよびパンチ、磁気テープ・ユニット、直接アクセス記憶デバイス、ディスプレイ、キーボード、ポインタ、ポインティング・デバイス、遠隔処理デバイス、通信コントローラおよびセンサ・ベースの機器を含む。
【００２９】
Ｉ／Ｏ処理システム１００の上述のコンポーネントの１つ以上は、「IBM(R) z/Architecture Principles of Operation」Publication No. SA22-7832-05、第６版（２００７年４月）、１９９５年１０月２４日に発行されたCormier等の「System For Transferring Data Between I/ODevices And Main Or Expanded Storage Under Dynamic Control Of IndependentIndirect Address Words (IDAWS)」と題する米国特許第５，４６１，７２１号、および１９９６年６月１１日に発行されたCasper等の「Method And System For Pipelining TheProcessing Of Channel Words」と題する米国特許第５，５２６，４８４号に更に記載されている。ＩＢＭは、インターナショナル・ビジネス・マシーンズ社（米国ニューヨーク州アーモンク）の登録商標である。本明細書において用いる他の名称は、インターナショナル・ビジネス・マシーンズ社および他の企業の登録商標、商標、または製品名である場合がある。
【００３０】
一実施形態において、Ｉ／Ｏデバイス１１２とメモリ１０２との間でデータを転送するため、チャネル・コマンド・ワード（ＣＣＷ）を用いる。ＣＣＷは、実行するコマンドを特定し、処理を制御するための他のフィールドを含む。図２を参照してＣＣＷの一例を説明する。ＣＣＷ２００は、例えば、実行するコマンドを特定するコマンド・コード２０２（例えば読み取り、後方に読み取り、制御、検知および書き込み）、Ｉ／Ｏ動作を制御するために用いられる複数のフラグ２０４、データ転送を特定するコマンドについて、転送されるＣＣＷが指定する記憶領域におけるバイト数を特定するカウント・フィールド２０６、ならびに、直接アドレッシングを用いる場合にはデータを含むメイン・メモリ内の位置を指し示し、変更した間接データ・アドレッシングを用いる場合には処理対象の変更間接データ・アドレス・ワード（ＭＩＤＡＷ）のリスト（例えば連続的なリスト）を指し示すデータ・アドレス２０８を含む。変更間接アドレッシングについては、２００６年８月１５日に出願されたBrice等の「Flexibly Controlling The Transfer Of DataBetween Input/Output Devices And Memory」と題する米国特許出願第１１／４６４，６１３号に更に説明されている。
【００３１】
順次実行のために構成された１つ以上のＣＣＷは、本明細書においてＣＣＷチャネル・プログラムとも称されるチャネル・プログラムを形成する。ＣＣＷチャネル・プログラムは、例えば、オペレーティング・システムまたは他のソフトウェアによってセットアップされる。ソフトウェアは、ＣＣＷをセットアップし、チャネル・プログラムに割り当てられたメモリのアドレスを取得する。図３を参照して、ＣＣＷチャネル・プログラムの一例を説明する。ＣＣＷチャネル・プログラム２１０は、例えば、デファイン・エクステント（define extent）・コマンドによって用いられるデファイン・エクステント・データ２１６のメモリ内の位置に対するポインタ２１４を有するデフィアン・エクステントＣＣＷ２１２を含む。この例では、デファイン・エクステント・コマンドの後にチャネル内転送（ＴＩＣ：transfer in channel）２１８が続き、これが、レコード・データ２２０の位置を特定する（locate）ポインタ２１９を有するロケート・レコード（locate record）２１７および１つ以上の書き込みＣＣＷ２２１等の１つ以上の他のＣＣＷを含むメモリ内の別の領域（例えばアプリケーション領域）に、チャネル・プログラムを向かわせる。各書き込みＣＣＷ２２０は、データ領域２２４に対するポインタ２２２を有する。データ領域は、データに直接的にアクセスするためのアドレス、または、データに間接的にアクセスするためのデータ・アドレス・ワード（例えばＭＩＤＡＷまたはＩＤＡＷ）のリストを含む。更に、ＣＣＷチャネル・プログラム２１０は、ＣＣＷチャネル・プログラムを実行した結果として生じるステータス２２６のために、サブチャネルと呼ばれるデバイス・アドレスが定義するチャネル・サブシステム内の所定の領域を含む。
【００３２】
図４および図３を参照して、ＣＣＷチャネル・プログラムの処理を説明する。具体的には、図４は、ＣＣＷチャネル・プログラムが実行している場合にチャネルと制御ユニットとの間で行われる様々な交換およびシーケンスの一例を示す。通信のために用いられるリンク・プロトコルは、この例ではＦＩＣＯＮ（ファイバ接続）である。ＦＩＣＯＮに関する情報は、「Fibre Channel Single Byte CommandCode Sets-3 Mapping Protocol (FC-SB-3)」、T11/Project1357-D/Rev. 1.6、INCITS（２００３年３月）に記載されている。
【００３３】
図４を参照すると、チャネル３００は、制御ユニット３０２との交換をオープンし、制御ユニット３０２に、デファイン・エクステント・コマンドおよびそれに対応付けられたデータ３０４を送信する。コマンドは、デファイン・エクステントＣＣＷ２１２（図３）からフェッチされ、データは、デファイン・エクステント・データ領域２１６から取得される。チャネル３００は、ＴＩＣ２１８を用いて、ロケート・レコードＣＣＷおよび書き込みＣＣＷの位置を特定する。これは、ロケート・レコードＣＣＷ２１７（図３）およびロケート・レコード・データ２２０から、ロケート・レコード・コマンドおよびデータ３０６（図４）をフェッチする。書き込みコマンドおよびデータ３０８（図４）は、書き込みＣＣＷ２２１およびデータ領域２２４（図３）からフェッチされる。各々は、制御ユニット３０２に送信される。
【００３４】
制御ユニット３０２は、チャネル３００のオープン交換に応答して、チャネル３００との交換３１０をオープンする。これは、ロケート・コマンドおよびデータ３０６または書き込みコマンドおよびデータ３０８あるいはその両方の前または後に起こる場合がある。オープン交換と共に、応答（ＣＭＲ）がチャネル３００に送出される。ＣＭＲは、制御ユニット３０２がアクティブであり動作していることの指示をチャネル３００に与える。
【００３５】
制御ユニット３０２は、ステータスをチャネル３００に提供し、交換３１２をクローズする。これに応答して、チャネル３００は、データを記憶し、ステータスを調べ、交換３１４をクローズする。これは、ステータスが受信されたことを制御ユニット３０２に示す。
【００３６】
４ｋのデータを書き込むための上述のＣＣＷチャネル・プログラムの処理には、２つの交換をオープンおよびクローズして６つのシーケンスを行う必要がある。チャネル・プログラムの多数のコマンドをＴＣＣＢ内に折りたたむ（collapse）ことによって、チャネルと制御ユニットとの間の交換およびシーケンスの総数を減らす。例えば図１のチャネル１２４のようなチャネルは、ＴＣＷを用いて、ＴＣＣＢの位置、ならびに、チャネル・プログラムの実行に関連したステータスおよびデータにアクセスしこれを記憶するための位置を識別する。ＴＣＷは、チャネルによって解釈されるものであり、制御ユニットによって送信されたり認識されたりはしない。
【００３７】
図３におけるように、４ｋのデータを書き込むためのチャネル・プログラムの一例は、別個の個別のＣＣＷでなくＴＣＣＢを含み、これについて図５を参照して説明する。図示のように、本明細書ではＴＣＷチャネル・プログラムとも称されるチャネル・プログラム４００は、ＴＣＷ４０２を含み、これは、ＴＣＣＢ４０４のメモリ内の位置、および、データ領域４０６またはデータ領域４０６を指し示すＴＩＤＡＬ４１０（すなわち、ＭＩＤＡＷと同様のトランスポート・モード間接データ・アドレス・ワード（ＴＩＤＡＷ）のリスト）のメモリ内の位置、およびステータス領域４０８を特定する。ＴＩＤＡＷ０  ４１２、ＴＩＤＡＷ１  ４１４、およびＴＩＤＡＷ２  ４１６（まとめてＴＩＤＡＷ４１２〜４１６）は、データを捕獲または記憶するためのデータ領域４０６内の異なる位置を参照することができる。ＴＩＤＡＷ４１２〜４１６は、非連続的なデータ・ブロックまたは連続的なデータ・ブロックを参照することができる。ＴＩＤＡＬ４１０内のＴＩＤＡＷ４１２〜４１６は、メモリ内に順次位置付けるか、または相互に非連続的に位置付けることができる。ＴＩＤＡＬ４１０には３つのみのＴＩＤＡＷ４１２〜４１６を示すが、ＴＩＤＡＬ４１０にはいかなる数のＴＩＤＡＷも含ませることが可能であることは理解されよう。
【００３８】
図６を参照して、ＴＣＷチャネル・プログラムの処理を説明する。これらの通信のための用いられるリンク・プロトコルは、例えばファイバ・チャネル・プロトコル（ＦＣＰ）である。具体的には、ＦＣＰリンク・プロトコルの３つのフェーズを用い、ＦＣＰをサポートするホスト・バス・アダプタを使用可能として、ＣＣＷによって制御されるデータ転送を実行する。ＦＣＰおよびそのフェーズについては、「Information Technology - FibreChannel Protocol for SCSI, Third Version (FCP-3)」、T10Project 1560-D、Revision 4（２００５年９月１３日）において更に説明されている。
【００３９】
図６を参照すると、チャネル５００は、制御ユニット５０２との交換をオープンし、制御ユニット５０２にＴＣＣＢ５０４を送信する。一例においては、ＦＣＰ＿ＣＭＮＤ情報ユニット（ＩＵ）またはトランスポート・コマンドＩＵと称されるＦＣＰコマンドにおいて、ＴＣＣＢ５０４およびシーケンス・イニシアチブが制御ユニット５０２に転送される。制御ユニット５０２は、ＴＣＣＢ５０４において受信した書き込みコマンドについてデータを受信する準備ができると、チャネル５００に、転送レディ（ＸＦＥＲ＿ＲＤＹ）ＩＵ５１０を送信する。ＸＦＥＲ＿ＲＤＹ  ＩＵ５１０の受信に応答して、チャネル５００は、例えばＦＣＰ＿Ｄａｔａ  ＩＵを介して、制御ユニット５０２にデータ５０６を転送する。制御ユニット５０２は、ＴＣＣＢ５０４の多数のコマンド（例えば、デバイス制御ワード（ＤＣＷ）としてのデファイン・エクステント・コマンド、ロケート・レコード・コマンド、書き込みコマンド）を実行し、チャネル５００から受信したデータ５０６を書き込む。また、制御ユニット５０２は、ステータスを提供し、交換５０８をクローズする。一例として、例えばトランスポート応答ＩＵとも称されるＦＣＰ＿ＲＳＰ  ＩＵのペイロードのバイト１０または１１においてビット・アクティブを有するＦＣＰステータス・フレーム内で、最終ステータスを送信する。ＦＣＰ＿ＲＳＰ  ＩＵペイロードを用いて、追加のステータス情報と共にＦＩＣＯＮ終了ステータスをトランスポートすることができる。
【００４０】
図６に示すリンク・プロトコルの実施形態を利用するのは、ＸＦＥＲ＿ＲＤＹがイネーブルされている場合である。図６に示す実施形態においては、チャネル５００は、ＸＦＥＲ＿ＲＤＹ  ＩＵ５１０を介して制御ユニット５０２によって要求されるまで、制御ユニット５０２にデータ５０６を送信することはできない。代替的な例示的な実施形態では、ＸＦＥＲ＿ＲＤＹはディスエーブルされ、制御ユニットはチャネル５００にＸＦＥＲ＿ＲＤＹ  ＩＵ５１０を送信しない。このため、チャネル５００は、データ５０６の送信前に制御ユニット５０２がデータ５０６を要求するのを待つ必要はない。ＸＦＥＲ＿ＲＤＹがディゼーブルされているこの代替的な実施形態は、チャネル５００および制御ユニット５０２が相互に地理的に離れて位置付けられている（例えば２０キロメートルよりも遠く、５０キロメートルよりも遠い）場合に利用して、性能を改善することができる。特に明記しない限り、本明細書における考察は、ＸＦＥＲ＿ＲＤＹがイネーブルされていることを想定する。
【００４１】
更に別の例では、４Ｋのカスタマ・データを書き込むために、チャネル５００は、以下のようにＦＣＰリンク・プロトコル・フェーズを用いる。
１．ＦＣＰ＿ＣＭＮＤ  ＩＵにおけるＴＣＣＢおよびシーケンス・イニシアチブを制御ユニット５０２に転送する。
２．制御ユニットがデータを受信する準備ができたことを示すＸＦＥＲ＿ＲＤＹ  ＩＵを待つ。
３．データのＩＵおよびシーケンス・イニチアチブを制御ユニット５０２に転送する。
４．例えばＦＣＰ＿ＲＳＰ  ＩＵペイロードのバイト１０または１１においてビット・アクティブを有するＦＣＰステータス・フレームにおいて最終ステータスを送信する。ＦＣＰ＿ＲＳＰ＿ＩＮＦＯフィールドまたはセンス・フィールドを用いて、ＦＩＣＯＮ採集ステータスを、追加のステータス情報と共にトランスポートする。
【００４２】
図３（図４も参照のこと）のＣＣＷチャネル・プログラムにおける２つの交換とは異なり、図５のＴＣＷチャネル・プログラムを実行することによって、オープンしクローズする交換は１つだけとなる（図６も参照のこと）。更に、ＣＣＷチャネル・プログラム（図３から図４を参照）における６つの交換に比べ、ＴＣＷチャネル・プログラムでは、通信シーケンスは４つである（図５〜図６を参照）。
【００４３】
ＴＣＷチャネル・プログラムでは、プログラムに追加コマンドが加えられた場合であっても、交換およびシーケンスの数は同じままである。例えば、図７のＣＣＷチャネル・プログラムの通信を、図８のＴＣＷチャネル・プログラムの通信と比べる。図７のＣＣＷチャネル・プログラムでは、コマンド（例えばデファイン・エクステント・コマンドおよびデータ６００、ロケート・レコード・コマンドおよびデータ６０１、書き込みコマンドおよびデータ６０２、書き込みコマンドおよびデータ６０４、ロケート・レコード・コマンドおよびデータ６０６、書き込みコマンドおよびデータ６０８、および書き込みコマンドおよびデータ６２０）の各々を、別個のシーケンスで、チャネル６１０から制御ユニット６１２に送信する。このＣＣＷチャネル・プログラムには、オープンしクローズする２つの交換（例えば交換６２２、６２４をオープンし交換６２６、６２８をクローズする）、および１０の通信シーケンスが必要である。これは、図７のＣＣＷチャネル・プログラムと同じタスクを達成する図８のＴＣＷチャネル・プログラムの４つのシーケンスおよび１つの交換と比べられる。
【００４４】
図８に示すように、チャネル７００は、制御ユニット７０２との交換をオープンし、制御ユニット７０２にＴＣＣＢ７０４を送信する。ＴＣＣＢ７０４は、上述のように、ＤＣＷにおいて、デファイン・エクステント・コマンド、２つのロケート・レコード・コマンド、および４つの書き込みコマンドを含む。図６に示した例と同様に、もしＸＦＥＲ＿ＲＤＹのサポートがディゼーブルされていないならば、制御ユニット７０２は、ＸＦＥＲ＿ＲＤＹ  ＩＵ７０１を用いて、データ受信の準備ができたことをチャネル７００に通知する。チャネル７００は、ＸＦＥＲ＿ＲＤＹ  ＩＵ７１０を受信すると、単一のシーケンスで制御ユニット７０２に１６ｋのデータ７０６を送信する。チャネル７００は、シーケンスにおいてその１６ｋのデータ７０６の４ＫごとにＣＲＣを挿入する。４ＫごとのＣＲＣの挿入によって、制御ユニット７０２は、ＴＣＣＢ７０４内の書き込みコマンドを完了する前に１６Ｋ全体を検証のためにバッファするのでなく、１６Ｋのデータを漸進的に検証することができる。更に、制御ユニット７０２は、チャネル７００にステータスを提供し、交換７０８をクローズする。このため、図８のＴＣＷチャネル・プログラムでは、図７のＣＣＷチャネル・プログラムと同じデータ量を転送するために必要な通信が少なくて済む一方で、チャネル７００からの出力データ・ストリームに多数のＣＲＣを挿入することによって漸進的なデータ検証をサポートする。
【００４５】
ここで図９に移ると、ＴＣＷチャネル・プログラム実行をサポートする図１のチャネル・サブシステム１０８におけるチャネル１２４および制御ユニット１１０の一実施形態が更に詳細に示されている。制御ユニット１１０は、図８のＴＣＣＢ７０４等のＴＣＣＢを含むメッセージおよび接続１２０を介してチャネル１２４から受信したデータをパーズし処理するためのＣＵ制御論理８０２を含む。ＣＵ制御論理８０２は、制御ユニット１１０において受信したＴＣＣＢからＤＣＷおよび制御データを抽出して、例えば接続１２６を介してＩ／Ｏデバイス１１２等のデバイスを制御することができる。ＣＵ制御論理８０２は、Ｉ／Ｏデバイス１１２にデバイス・コマンドおよびデータを送信し、Ｉ／Ｏデバイス１１２からステータス情報および他のフィードバックを受信する。ＣＵ制御論理８０２が、図８の１６Ｋバイトのデータ７０６の第１のチェック・ブロック境界等のデータを受信すると、チェック・ブロック境界について受信されたＣＲＣがチェックされるまで、ＣＵ制御論理８０２は、この受信したデータを一時的な記憶のためにデータ・バッファ８０４に書き込む。次いで、このデータをＩ／Ｏデバイス１１２に送信することができる。これは、Ｉ／Ｏ動作が完了するまで、各チェック・ブロック境界について継続する。
【００４６】
制御ユニット１１０は、チャネル１２４とＩ／Ｏデバイス１１２との間の通信に関連した追加メッセージまたはステータス情報を記憶するための他のキューまたはメモリ要素（図示せず）を更に含むことができる。
【００４７】
チャネル・サブシステム１０８内のチャネル１２４は、制御ユニット１１０との通信をサポートするための要素を含む。例えば、チャネル１２４は、収集データ論理８１２とインタフェースするＣＨＮ制御論理８０６を含むことができる。収集データ論理８１２は、本明細書において、後に図１１を参照して説明する。例示的な実施形態においては、ＣＨＮ制御論理８０６は、チャネル・サブシステム１０８と制御ユニット１１０との間の通信を制御する。ＣＨＮ制御論理８０６は、接続１２０を介してＣＵ制御論理８０２に直接インタフェースして、トランスポート・コマンドおよび応答ＩＵ等のコマンドを送信し応答を受信することができる。あるいは、ＣＨＮ制御論理８０６とＣＵ制御論理８０２との間に、メッセージング・インタフェースまたは追加バッファ（図示せず）あるいはその両方を配置することも可能である。ＣＨＮサブシステム・レジスタ８１４は、コンフィグレーションおよびステータス情報を提供する固定値、ならびに、コマンドがトランスポートされ応答が受信されると更新される動的ステータス情報を含むことができる。ＣＨＮサブシステム・レジスタ８１４は、専用のハードウェア・レジスタまたはメモリ・マッピングを用いて確立される仮想レジスタあるいはその両方とすることができる。
【００４８】
一実施形態において、ＣＨＮサブシステム・レジスタ８１４は、メモリ・マップされたレジスタとして、図５のＴＩＤＡＬ４１０およびＴＩＤＡＷ４１２〜４１６を含む。
【００４９】
図１０に、ＴＩＤＡＷ９００の一例を示す。ＴＩＤＡＷ９００は、図５のＴＩＤＡＷ４１２〜４１６等、ＴＣＷチャネル・プログラムにおいて用いられるデータに対する間接アドレッシングを提供する。ＴＩＤＡＷ９００は、フラグ９０２、カウント９０４、およびアドレス９０６を含む。ＴＩＤＡＷフォーマット９００における各フィールド（すなわちフラグ９０２、カウント９０４、およびアドレス９０６）は、特定のバイト・アドレスに割り当てられて、フィールドのパーズをサポートする。図１０にはＴＩＤＡＷ９００内のフィールドの１つの構成を示すが、フィールドの順序を再構成して配列を交互にすることが可能であることは理解されよう。
【００５０】
例示的な実施形態においては、フラグ９０２は、他のフラグに加えて、最終ＴＩＤＡＷフラグおよびチャネル内トランスポート−転送（Ｔ−ＴＩＣ）フラグを含む。最終ＴＩＤＡＷフラグは、対応付けられたＴＩＤＡＷが、ＭＩＤＡＷのための定義と一致したＴＩＤＡＬにおける最後のＴＩＤＡＷであることを示す。最終ＴＩＤＡＷフラグがセットされた状態でカウント９０４がゼロになると、対応付けられたＩ／Ｏ動作のためのデータ転送は完了する。Ｔ−ＴＩＣフラグは、アドレス９０６の内容がＴＩＤＡＬ内の次のＴＩＤＡＷのデータまたはアドレスを含むか否かを示す。例示的な実施形態においては、Ｔ−ＴＩＣフラグがセットされた場合、ＴＩＤＡＷにおけるアドレス９０６はＴＩＤＡＬ内の次のＴＩＤＡＷのアドレスである。このように、アドレス９０６を用いて、現在のＴＩＤＡＷから非連続的な記憶位置のＴＩＤＡＷにアクセスすることができる。このため、ＴＩＤＡＷリストは、２５６エントリを超えるエントリを含むことができるので、現在の実施における可能な間接データ・アドレス・ワードの最大数を超える。例示的な実施形態においては、Ｔ−ＴＩＣフラグがセットされると、アドレス９０６は４つの下位ビットがゼロにセットされなければならない。なぜなら、１６バイトのＴＩＤＡＷは１６バイト・アドレスの境界上になければならないからである。Ｔ−ＴＩＣフラグがセットされない場合、ＴＩＤＡＷにおけるアドレス９０６は、Ｉ／Ｏ動作のために収集されたデータを構成するデータの一部のアドレスである。データのサイズは、カウント・フィールド９０４に示される。最終ＴＩＤＡＷフラグおよびＴ−ＴＩＣフラグがセットされない場合、次のＴＩＤＡＷが次の記憶位置に配される（例えば、これは現在のＴＩＤＡＷまで連続的である）。
【００５１】
ここで図１１に移り、例示的な実施形態に従って、更に図１のＩ／Ｏ処理システム１００を参照して、Ｉ／Ｏ動作のためにデータを収集するプロセス１０００について説明する。ブロック１００２において、チャネル・サブシステム１０８は、Ｉ／Ｏ動作のための制御ワード（例えばＴＣＷ）を受信する。制御ワードは、Ｉ／Ｏ動作が利用するデータを構成する記憶アドレス・リスト（例えば多数のＴＩＤＡＷを有するＴＩＤＡＬ）の開始アドレスを示す間接データ・アドレスを含む。例示的な実施形態において、データはカスタマ・データ（例えばＩ／Ｏ動作からのデータ入力または出力）である。代替的な例示的な実施形態においては、データは制御データ（例えばＴＣＣＢ）である。例示的な実施形態では、記憶アドレス・リストは、２つ以上の非連続的な記憶位置にまたがる。
【００５２】
ブロック１００４において、チャネル・サブシステム１００８に位置する命令によって、データを収集する。この収集は、リストの内容に基づいている。例示的な実施形態では、リスト内の各エントリ（例えば各ＴＩＤＡＷ）は、記憶アドレスおよびＴ−ＴＩＣフラグの双方を含み、記憶アドレスがデータの一部の位置であるか、または記憶アドレスが、もと多くの記憶アドレスを含むリストの別の部分の位置を指すのかを示す。このように、ＴＩＤＡＬの長さに対する制約を排除して、単一のＴＩＤＡＬを多数のページに含ませることができる。Ｔ−ＴＩＣフラグによって、記憶アドレスがデータの一部の位置であることが示される（例えばＴ−ＴＩＣフラグがセットされていない）場合、記憶位置におけるデータにアクセスしてデータに追加する。この新しいデータの追加は、すでに収集したデータとマージすること、すでに収集したデータに付加すること等、当技術分野において既知の方法で実行することができる。
【００５３】
Ｔ−ＴＩＣフラグによって、現在の記憶位置がリストの別の部分の位置であることが示される場合、処理は続いて、特定された記憶位置に配された新しいＴＩＤＡＷにアクセスする。新しいＴＩＤＡＷにおいて特定された記憶位置のデータにアクセスしてデータに追加する。例示的な実施形態において、ＴＩＤＡＷは、各記憶アドレスからどのくらいの量のデータを読み取るか（または書き込むか）を特定するためのカウント９０４を含む。最終ＴＩＤＡＷフラグを有するＴＩＤＡＷがセットされた場合、収集を完了する。その他の場合には、次のＴＩＤＡＷにアクセスし、データ収集を続ける。
【００５４】
ブロック１００６において、チャネル・サブシステム１０８によって、制御ユニット１１０にデータを送信する。
【００５５】
例示的な実施形態の技術的な効果は、Ｉ／Ｏサブシステムにおける非連続的な間接データ・アドレッシングを含む。多数の４ｋバイト・ページが記憶アドレス・リスト（ＴＩＤＡＬ）を含むことを可能とすることによって、ＴＩＤＡＷの数の制限をなくすことができ、従って、単一のＩ／Ｏ動作に、より多くのデータを対応付けることができる。大きいデータ転送によって、多数の小さいメッセージに関連した追加のハンドシェイクおよび他の遅延を回避することで、通信オーバーヘッドを軽減することができる。
【００５６】
例示的な実施形態を利用して大きいデータ・ブロックを動かすこと以上のことを実行可能である方法を、以下の例によって示す。
【００５７】
例示的な実施形態を利用して、オペレーティング・システムによるチャネル・プログラムのプレフィックス設定に役立てることができる。例えば、チャネル・プログラムがオペレーティング・システムに渡されると、オペレーティング・システムはチャネル・プログラムを変更して、コマンドＣＣＷまたはＤＣＷを追加、置換、または変更する場合がある。例示的な実施形態では、これは、ＴＣＣＢ  ＴＩＤＡＬを生成し、第１のＴＩＤＡＷが変更されたＴＣＣＢの第１の部分を含む記憶領域を指すようにすることを意味する。第２のＴＩＤＡＷは、変更されていないＴＣＣＢの残りを指す。
【００５８】
また、例示的な実施形態を用いて、ハイパーバイザによるチャネル・プログラムのプレフィックス設定に役立てることができる。ハイパーバイザがチャネル・プログラムを変更する必要がある場合、ゲストが渡したものよりも１つエントリが多いＴＩＤＡＬを生成する必要があるであろう。ゲストが渡したＴＩＤＡＬがすでに最大サイズ（２５６ＴＩＤＡＷ）である場合、ハイパーバイザは、２つのＴＩＤＡＷを有するＴＣＣＢ  ＴＩＤＡＬを生成し、その２つのうち１つをゲストが渡したＴＩＤＡＬの第１のＴＩＤＡＷに対するＴ−ＴＩＣとすることによって、それ自身の変更を行うことができる。
【００５９】
また、ＴＩＤＡＬ  Ｔ−ＴＩＣは、オペレーティング・システムに対する記憶要求を軽減することができる。ＴＣＣＢ  ＴＩＤＡＬを含むチャネル・プログラムを変更する必要がある場合、呼び出し元のＴＣＣＢ  ＴＩＤＡＬに１つ以上のＴＩＤＡＷを加えたものについて記憶を割り当てるよりも、１つのＴＩＤＡＷおよびＴ−ＴＩＣを生成する方が、必要な記憶は少ない。
【００６０】
上述のように、実施形態は、コンピュータ実施プロセスおよびこれらのプロセスを実行するための装置という形態で具現化することができる。例示的な実施形態においては、本発明は、１つ以上のネットワーク要素によって実行されるコンピュータ・プログラム・コードにおいて具現化される。実施形態は、図１２に示すようなコンピュータ・プログラム１１００を含み、これは、製造品として有形の媒体において具現化された命令を含むコンピュータ・プログラム・コード論理１１０４を有するコンピュータ使用可能媒体１１０２上にある。コンピュータ使用可能媒体１１０２についての例示的な製造品は、フレキシブル・ディスク、ＣＤ−ＲＯＭ、ハード・ドライブ、ユニバーサル・シリアル・バス（ＵＳＢ）・フラッシュ・ドライブ、または、他のいずれかのコンピュータ読み取り可能記憶媒体を含むことができ、この場合、コンピュータ・プログラム・コード論理１１０４がコンピュータにロードされてコンピュータによって実行されると、コンピュータは本発明を実行するための装置となる。実施形態は、コンピュータ・プログラム・コード論理１１０４を含み、これは、例えば、記憶媒体に記憶され、コンピュータにロードされるかまたはコンピュータによって実行されるかあるいはその両方であり、または、電気的配線もしくはケーブルを介して、光ファイバによって、または電磁放射によって等、何らかの伝送媒体を介して送信され、コンピュータ・プログラム・コード論理１１０４がコンピュータにロードされてコンピュータによって実行されると、コンピュータは本発明を実行するための装置となる。汎用マイクロプロセッサ上で実施されると、コンピュータ・プログラム・コード論理１１０４のセグメントは、特定の論理回路を生成するようにマイクロプロセッサを構成する。
【００６１】
本発明について、例示的な実施形態を参照して説明したが、本発明の範囲から逸脱することなく、様々な変更を行うことができ、その要素を均等物で置換することが可能であることは、当業者には理解されよう。更に、本発明の本質的な範囲から逸脱することなく、特定の状況または材料を本発明の教示に適合させるように多くの変形を行うことができる。従って、本発明は、本発明を実行するために考えられる最良の形態として開示された特定の実施形態に限定されるのでなく、本発明は、添付の特許請求の範囲内に該当する全ての実施形態を包含することが意図される。更に、第１、第２等の言葉の使用は、いかなる順序も重要性も意味するものではなく、第１、第２等の言葉は、ある要素を別のものから区別するために用いられる。更に、ａ、ａｎ（１つの）という言葉の使用は、量の限定を意
味するのではなく、参照したアイテムの少なくとも１つが存在することを意味する。
【図１】
2011512591.tif 000003
【図２】
2011512591.tif 000004
【図３】
2011512591.tif 000005
【図４】
2011512591.tif 000006
【図５】
2011512591.tif 000007
【図６】
2011512591.tif 000008
【図７】
2011512591.tif 000009
【図８】
2011512591.tif 000010
【図９】
2011512591.tif 000011
【図１０】
2011512591.tif 000012
【図１１】
2011512591.tif 000013
【図１２】
2011512591.tif 000014
【手続補正書】
【提出日】平成22年10月6日(2010.10.6)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
入出力（Ｉ／Ｏ）処理システムのＩ／Ｏサブシステムにおける間接データ・アドレッシングを提供するための方法であって、
前記Ｉ／ＯサブシステムにおけるＩ／Ｏ動作のための制御ワードを受信するステップであって、前記制御ワードが前記Ｉ／Ｏ動作に対応付けられたデータのための間接データ・アドレスを含み、前記間接データ・アドレスが前記データをひとまとめに特定する記憶アドレスのリストの開始位置を含み、前記リストが２つ以上の非連続的な記憶位置にまたがる、ステップと、
前記リストに応答して前記データを収集するステップと、
前記収集したデータを前記Ｉ／Ｏ処理システムにおける制御ユニットに送信するステップと、
を含み、前記リストが、前記リストにおける各記憶アドレスに対応付けられたフラグを更に含み、前記フラグが、前記対応付けられた記憶アドレスが前記データの一部を指すことを示す第１の値を有し、前記フラグが、前記対応付けられた記憶アドレスが、前記リスト内の追加の記憶アドレスが配された記憶位置を指すことを示す第２の値を有し、
前記リスト上の各記憶アドレスについて、前記収集が、
前記記憶アドレスおよび前記記憶アドレスに対応付けられた前記フラグにアクセスすることと、
前記第１の値を有する前記フラグに応答して前記記憶アドレスからの内容を前記データに追加することと、
前記第２の値を有する前記フラグに応答して第２の記憶アドレスおよび前記記憶アドレスに配された第２のフラグにアクセスし、前記第１の値を有する前記第２のフラグに応答して前記第２の記憶アドレスからの内容を前記データに追加することと、
を含む、方法。
【請求項２】
前記フラグが前記第１の値を有する場合は、前記リストにおける第２の記憶アドレスが前記リストにおける第１の記憶アドレスに対して連続的に配置され、前記フラグが前記第２の値を有する場合は、前記第２の記憶アドレスが前記第１の記憶アドレスに対して非連続的に配置されている、請求項１に記載の方法。
【請求項３】
前記リストが、前記リストにおける各記憶アドレスに対応付けられたカウント・フィールドを更に含み、前記カウント・フィールドが、前記記憶アドレスから読み取るバイト数を示し、前記収集が、前記カウント・フィールドおよび前記記憶アドレスに応答する、請求項１に記載の方法。
【請求項４】
前記データが制御データを含む、請求項１に記載の方法。
【請求項５】
前記データがカスタマ・データを含む、請求項１に記載の方法。
【請求項６】
前記制御ワードがトランスポート制御ワード（ＴＣＷ）であり、前記記憶アドレス・リストがトランスポート間接データ・アドレス・リスト（ＴＩＤＡＬ）であり、各記憶アドレスがトランスポート間接データ・アドレス・ワード（ＴＩＤＡＷ）である、請求項１に記載の方法。
【請求項７】
前記Ｉ／Ｏサブシステムがチャネル・サブシステムである、請求項１に記載の方法。
【請求項８】
前記制御ワードが、間接データ・アドレスを含むことを示すフラグを含む、請求項１に記載の方法。
【請求項９】
前出の方法の請求項のいずれかに記載の前記方法の全ての前記ステップを実行するために適合された手段を含むシステム。
【請求項１０】
コンピュータ・システム上で実行されると、前出の方法の請求項のいずれかに記載の前記方法の全ての前記ステップを実行するための命令を含む、コンピュータ・プログラム。
【国際調査報告】
2011512591.tif 000015
2011512591.tif 000016
2011512591.tif 000017