(57)【要約】【課題】  入力／出力装置とメモリの間のデータ転送の制御を向上させる。【解決手段】  入力／出力装置とメモリとの間のデータ転送が制御される。データ転送は、１つの制御ブロックの制御のもとで開始され、１つの制御ブロックにおいて指定されたデータ量を転送したことに応答して、データ転送の制御が、１つの制御ブロックから他の制御ブロックに引き渡される。制御の引き渡しは、メモリ境界に関係なく行われ、データ転送を制御する際に融通性を提供する。各々の制御ブロックは、データ転送を制御し、これを容易にするフィールドを含む。【選択図】      図１
2008047116.tif 000002
【特許請求の範囲】
【請求項１】
処理環境のデータ転送を制御するためコンピュータに、
１つの制御ブロックにおいて指定されたメモリ・アドレスでデータ転送を開始する機能と、
特定のメモリ境界に関係なく、前記１つの制御ブロックにおいて指定されたデータ量を転送したことに応答して、前記データ転送の制御を別の制御ブロックに引き渡す機能と、  を実現させるためのプログラム。
【請求項２】
前記１つの制御ブロックは、転送される前記データ量を示すカウントを含み、前記カウントは、メモリ境界と無関係である、請求項１に記載のプログラム。
【請求項３】
更なるデータが転送されるべきかどうかを決定する機能をさらに含み、前記引き渡す機能は、更なるデータが転送されるべきであることを前記決定する機能が示すのにさらに応答して、前記データ転送の制御を別の制御ブロックに引き渡す、請求項１に記載のプログラム。
【請求項４】
前記決定する機能は、前記１つの制御ブロックのカウントを、前記１つの制御ブロックと関連したコマンド・ワードのカウントと比較して、前記更なるデータが転送されるべきかどうかを決定することを含む、請求項３に記載のプログラム。
【請求項５】
前記別の制御ブロックは、前記転送において用いられるメモリ内のアドレスを含み、前記アドレスは、特定のメモリ境界上にはない、前記１つの制御ブロックによって指定されたメモリのブロックに対して不連続なメモリのブロックを指定する、請求項１に記載のプログラム。
【請求項６】
前記別の制御ブロックが制御を受け取ったことに応答して、前記別の制御ブロックによって指定されたメモリの範囲についてのデータ転送がスキップされるべきかどうかを決定する機能をさらに含み、前記決定する機能は、前記別の制御ブロックのインジケータを用いて決定する、請求項１に記載のプログラム。
【請求項７】
前記１つの制御ブロック及び前記別の制御ブロックが、制御ブロックのリスト内に含まれており、前記データ転送に用いられる前記制御ブロックのリストが、指定されたデータ量を転送するのに十分な制御ブロックを含むことを検証する機能をさらに含む、請求項１に記載のプログラム。
【請求項８】
前記指定されたデータ量は、前記制御ブロックのリストと関連したコマンド・ワード内に含まれ、前記検証する機能は、前記制御ブロックのリストの少なくとも１つの制御ブロックのインジケータを用いて検証する、請求項７に記載のプログラム。
【請求項９】
少なくとも前記１つの制御ブロック及び前記別の制御ブロックが、制御ブロックのリスト内に含まれており、前記制御ブロックのリストは、前記データ転送を容易にするためにコマンド・ワードによって指定され、前記データ転送は、１つ又は複数の入力／出力装置と不連続なメモリとの間で行われる、請求項１に記載のプログラム。
【請求項１０】
前記データ転送は、チャネルと処理環境の制御ユニットとの間のオーバーヘッドをハンドシェークすることによって中断されずに進行する、請求項１に記載のプログラム。
【請求項１１】
データ転送の処理環境を制御するシステムであって、
データ転送が開始される位置を指定するメモリ・アドレスを有する１つの制御ブロックと、
メモリ境界に関係なく、前記１つの制御ブロックにおいて指定されたデータ量が転送されたことに応答して、前記１つの制御ブロックから前記データ転送の制御を受け取る別の制御ブロックと
を備えるシステム。
【請求項１２】
前記１つの制御ブロックは、更なるデータが転送されるべきかどうかを決定するために、前記１つの制御ブロックと関連したコマンド・ワードのカウントと比較されるべきカウントを含む、請求項１１に記載のシステム。
【請求項１３】
前記別の制御ブロックは、前記転送において用いられるメモリ内のアドレスを含み、前記アドレスは、特定のメモリ境界上にはない、前記１つの制御ブロックによって指定されたメモリのブロックに対して不連続なメモリのブロックを指定する、請求項１１に記載のシステム。
【請求項１４】
前記別の制御ブロックが制御を受け取ったことに応答して、前記別の制御ブロックによって指定されたメモリの範囲についてのデータ転送がスキップされるべきかどうかを決定するために用いられるインジケータを含む、請求項１１に記載のシステム。
【請求項１５】
前記１つの制御ブロック及び前記別の制御ブロックが、制御ブロックのリスト内に含まれており、前記制御ブロックのリストの少なくとも１つの制御ブロックは、前記データ転送に用いられる前記制御ブロックのリストが、指定されたデータ量を転送するのに十分な制御ブロックを含むことを検証するために用いられるインジケータを含む、請求項１１に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、入力／出力処理に関し、具体的には、処理環境の入力／出力装置とメモリの間のデータ転送を制御することに関する。
【背景技術】
【０００２】
メモリと入力／出力装置との間でデータを転送するために、入力／出力（Ｉ／Ｏ）動作が用いられる。具体的には、入力／出力動作を実行することによって、データが、メモリから１つ又は複数の入力／出力装置に書き込まれ、１つ又は複数の入力／出力装置からメモリに読み取られる。
【０００３】
幾つかの環境における入力／出力動作の処理を容易にするために、チャネル・コマンド・ワードが用いられる。チャネル・コマンド・ワードは、実行されるべきコマンドを指定し、特定のＩ／Ｏ動作を開始するコマンドについて、その動作と関連したメモリ領域、該領域への又は該領域からの転送が完了するたびに取られるべきアクション、及び他の選択肢を指定する。
【０００４】
チャネル・コマンド・ワードは、主メモリを直接アドレス指定する、又は連続したアドレスのリスト（contiguous list of addresses）のアドレスを指定して間接的にアドレス指定するアドレスを含む。間接データ・アドレス・ワード（indirectdata address words、ＩＤＡＷ）と呼ばれる、連続したアドレスのリストは、メモリの不連続な２ＫＢ又は４ＫＢのブロックにわたるデータの転送を制御するために用いられる。具体的には、プログラムが選択した２ＫＢ又は４ＫＢの境界に達したとき、制御が、リスト内の連続したＩＤＡＷに引き渡される。この転送は、チャネル・コマンド・ワードによって指定される全データ量が転送されるまで続く。あるＩＤＡＷから次のＩＤＡＷに制御を移すためのトリガは、プログラムが指定した２ＫＢ又は４ＫＢのメモリ境界であるので、ＩＤＡＷによって指定されたメモリ位置は、プログラムが指定した２ＫＢ又は４ＫＢの境界で終了する。
【０００５】
【特許文献１】米国特許第５，４６１，７２１号明細書
【特許文献２】米国特許第５，５２６，４８４号明細書
【非特許文献１】「ＩＢＭ（登録商標）  ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（ＩＢＭ社の商標）  Ｐｒｉｎｃｉｐｌｅｓ  ｏｆ  Ｏｐｅｒａｔｉｏｎ」、出版番号第ＳＡ２２−７８３２−０４、第５版、２００５年９月
【発明の開示】
【発明が解決しようとする課題】
【０００６】
上記に基づいて、入力／出力処理の際の、より融通性のある制御に対する必要性が存在する。例えば、プログラムが指定した２ＫＢ又は４ＫＢのメモリ境界以外の境界で、データ転送の制御を引き渡すことを可能にする機能に対する必要性が存在する。さらに、メモリのブロックが、任意の境界で開始し終了するように、及び／又は４ＫＢより大きくなるように転送することを可能にする機能に対する必要性も存在する。チャネルと制御ユニットと間のオーバーヘッドをハンドシェークすることによって中断されない、データを転送する機能に対する更なる必要性が存在する。転送されたデータ量を検証する機能に対する別の必要性が存在する。他の制御の選択肢も必要とされる。
【課題を解決するための手段】
【０００７】
処理環境のデータ転送を制御するため次の機能をコンピュータに実現させるためのプログラムを提供することにより、従来技術の欠点が克服され、更なる利点が提供される。この機能は、例えば、１つの制御ブロックにおいて指定されたメモリ・アドレスでデータ転送を開始する機能と、特定のメモリ境界に関係なく、１つの制御ブロックにおいて指定されたデータ量を転送することに応答して、データ転送の制御を別の制御ブロックに引き渡す機能とを含む。
一実施形態においては、１つの制御ブロック及び別の制御ブロックは、変更された間接データ・アドレス・ワードである。
【０００８】
本発明の別の態様として、チャネル・プログラムが提供される。チャネル・プログラムは、例えば、データを転送する際に使用可能な複数の変更された間接データ・アドレス・ワードのリストを指定するチャネル・コマンド・ワードを含み、変更された間接データ・アドレス・ワードは、メモリ・アドレス及びカウント・フィールドを含み、データ転送は、リスト内の１つの変更された間接データ・アドレス・ワードのアドレスで開始し、メモリ境界に関係なく、１つの変更された間接データ・アドレス・ワードのカウント・フィールドにおいて指定されたデータ量が転送されたことに応答して、データ転送の制御が、リスト内の別の変更された間接データ・アドレス・ワードに引き渡される。
【０００９】
上記に要約された機能に対応するコンピュータ・システム及びコンピュータ動作方法もここに説明され、特許請求される。
【００１０】
更なる特徴及び利点が、本発明の技術を通して実現される。本発明の他の実施形態及び態様は、ここに詳細に説明され、特許請求された本発明の一部とみなされる。
【発明を実施するための最良の形態】
【００１１】
本発明の１つ又は複数の態様が、明細書の冒頭の特許請求の範囲に例として特に示され、明確に特許請求される。本発明の上記及び他の目的、特徴並びに利点は、添付図面と共に得られる以下の詳細な説明から明らかである。
【００１２】
本発明の態様によると、メモリ境界に関係なく、データが、入力／出力（Ｉ／Ｏ）装置とメモリ（例えば、不連続な（すなわち、物理的に連続していない）主ストレージ、拡張ストレージ、主メモリ、ランダム・アクセス・メモリ、又は中央処理装置によって直接アクセス可能な他のストレージ）との間で転送される。例えば、データが、２ＫＢ又は４ＫＢバイトの境界で転送される必要はない。代わりに、変更された間接データ・アドレス指定（modifiedindirect data addressing）が用いられ、ここでは変更された間接データ・アドレス・ワード（modified indirect data addresswords、ＭＩＤＡＷ）と呼ばれる制御ブロックの制御のもとで、データを転送することが可能になる。制御は、あるＭＩＤＡＷにおいて転送のために指定されたデータ量に応じて、あるＭＩＤＡＷから別のＭＩＤＡＷに引き渡され、転送するデータがさらに存在することを推定する。制御の引き渡しは、メモリ境界（例えば、２ＫＢ、４ＫＢ）に関係なく行われ、データ転送の制御に融通性を提供する。
【００１３】
この融通性のあるデータ転送の制御は、これらに限られるものではないが、ニューヨーク州Ａｒｍｏｎｋ所在のＩｎｔｅｒｎａｔｉｏｎａｌ  Ｂｕｓｉｎｅｓｓ  Ｍａｃｈｉｎｅｓ  Ｃｏｒｐｏｒａｔｉｏｎ社によって提供される、チャネル・サブシステムのような入力／出力サブシステムを有する処理環境を含む、多くの環境において使用可能である。
【００１４】
本発明の１つ又は複数の態様を組み込み、使用する処理環境の一例が、図１を参照して説明される。処理環境１００は、例えば、主メモリ１０２、１つ又は複数の中央処理装置（ＣＰＵ）１０４、ストレージ制御要素１０６、チャネル・サブシステム１０８、１つ又は複数の制御ユニット１１０及び１つ又は複数の入力／出力（Ｉ／Ｏ）装置１１２を含み、これらの各々が以下に説明される。
【００１５】
主メモリ１０２は、入力装置１１２から入力されたデータ及びプログラムを格納する。主メモリ１０２は、直接アドレス指定することができ、中央処理装置（ＣＰＵ）１０４及びチャネル・サブシステム１０８によるデータの高速処理を提供する。一例を挙げれば、主メモリ１０２は、顧客領域及びシステム領域（図示せず）を含む。
【００１６】
中央処理装置１０４は、環境１００の制御センターである。中央処理装置１０４は、命令の実行、割り込みアクション、タイミング機能、初期プログラムのロード及び他のマシン関連機能のための順序付け及び処理機能部を含む。中央処理装置１０４は、双方向バス又は単方向バスのような接続１１４を介して、ストレージ制御要素１０６に連結される。
【００１７】
ストレージ制御要素１０６は、バスのような接続１１６を介して主メモリ１０２に、接続１１４を介して中央処理装置１０４に、そして、例えば、ダブルワード・バスのような接続１１８を介してチャネル・サブシステム１０８に連結される。ストレージ制御要素１０６は、例えば、ＣＰＵ１０４及びチャネル・サブシステム１０８によってなされた要求のキューイング及び実行を制御する。
【００１８】
チャネル・サブシステム１０８は、上述されたようにストレージ制御要素１０６に連結され、シリアル・リンクのような接続１２０を介して制御ユニットの各々に連結される。チャネル・サブシステム１０８は、入力／出力装置１１２と主メモリ１０２との間の情報の流れを方向付ける。チャネル・サブシステム１０８は、入力／出力装置と直接通信する中央処理装置のタスクを軽減し、データ処理が入力／出力処理と同時に進行することを可能にする。チャネル・サブシステムは、入力／出力装置１１２との間の情報の流れを管理する際の通信リンクとして、１つ又は複数のチャネル・パス１２２を用いる。入力／出力処理の一部として、チャネル・サブシステム１０８は、チャネル・パスの可用性を試験し、利用可能なチャネル・パスを選択し、入力／出力装置により動作の実行を開始する、パス管理機能も実行する。
【００１９】
各々のチャネル・パス１２２は、チャネル１２４（一例において、チャネルは、図１に示されるようなチャネル・サブシステム内に配置される）、１つ又は複数の制御ユニット１１０及び１つ又は複数の接続１２０を含む。別の例においては、チャネル・パスの一部として、１つ又は複数の動的スイッチを有することも可能である。動的スイッチは、チャネル及び制御ユニットに連結され、スイッチに取り付けられたいずれかの２つのリンクを物理的に相互接続する能力を提供する。
【００２０】
サブチャネル（図示せず）も、チャネル・サブシステム１０８内に配置される。１つのサブチャネルは、チャネル・サブシステムを通してプログラムにアクセス可能な各々の入力／出力装置について設けられ、これらの専用のものである。サブチャネル（例えば、表のようなデータ構造）は、装置の論理的外観をプログラムに提供する。各々のサブチャネルは、関連した入力／出力装置１１２及びその付属品に関する情報をチャネル・サブシステム１０８に提供する。サブチャネルはまた、入力／出力動作に関する情報、及び関連した入力／出力装置を必要とする他の機能も提供する。サブチャネルは、チャネル・サブシステム１０８が、入力／出力命令を実行することによってこの情報を獲得する中央処理装置１０４に、関連した入力／出力装置１１２についての情報を提供する手段である。
【００２１】
チャネル・サブシステム１０８は、１つ又は複数の制御ユニット１１０に連結される。各々の制御ユニットは、１つ又は複数の入力／出力装置を動作し制御するための論理を提供し、共通の機能部を用いて、チャネルによって提供されるリンク・インターフェイスに、各々の入力／出力装置の特性を適合させる。共通の機能部は、入力／出力動作の実行、入力／出力装置及び制御ユニットの状態に関する表示、チャネル・パス上のデータ転送のタイミングの制御及び指定レベルの入力／出力装置の制御を提供する。
【００２２】
各々の制御ユニット１１０は、接続１２６（例えば、バス）を介して、１つ又は複数の入力／出力装置１１２に取り付けられる。入力／出力装置１１２は、情報を受け取り、又は情報を主メモリ１０２及び／又は他のメモリに格納する。２〜３例を挙げると、入力／出力装置の例は、カード読取装置及び穿孔装置、磁気テープ・ユニット、直接アクセス・ストレージ装置、ディスプレイ、キーボード、プリンタ、ポインティング・デバイス、遠隔処理装置、通信コントローラ及びセンサ・ベースの機器を含む。
【００２３】
入力／出力動作は、装置と関連したサブチャネルを指定する入力／出力命令を実行することによって、装置１１２で開始される。一実施形態においては、入力／出力動作は、例えば、チャネル・コマンド・ワードを用いるＳＴＡＲＴ  ＳＵＢＣＨＡＮＮＥＬ命令によって開始され、制御される。ＳＴＡＲＴ  ＳＵＢＣＨＡＮＮＥＬ命令は、中央処理装置１０４によって実行され、入力／出力データを管理又は処理する他のプログラムからの入力／出力動作要求の流れを監督する中央処理装置プログラムの一部である。
【００２４】
ＳＴＡＲＴ  ＳＵＢＣＨＡＮＮＥＬ命令が実行されると、パラメータがターゲット・サブチャネルに渡され、チャネル・サブシステム１０８が、そのサブチャネルと関連した入力／出力装置を用いて開始機能を実行することを要求する。チャネル・サブシステムは、該サブチャネルにおいて、ＳＴＡＲＴ  ＳＵＢＣＨＡＮＮＥＬ命令の実行中に渡される情報を含む情報を使用することによって開始機能を実行し、装置へのアクセス可能なチャネル・パスを見つける。装置が選択されると、チャネル・サブシステム１０８及び入力／出力装置１１２によってチャネル・コマンド・ワードをデコードし、実行することによって、入力／出力動作の実行が達成される。チャネル・コマンド・ワードは、実行されるべきコマンドを指定し、順次実行するために配置された１つ又は複数のチャネル・コマンド・ワードが、チャネル・プログラムを形成する。一例として、命令及びチャネル・コマンド・ワードの両方が、主メモリ１０２から取り出される。
【００２５】
ＳＴＡＲＴ  ＳＵＢＣＨＡＮＮＥＬ命令及びチャネル、制御ユニット並びにチャネル・コマンド・ワードが、その全体が引用によりここに組み入れられる非特許文献１に詳細に説明されている。これらのコンポーネントの１つ又は複数も、各々の全体が引用によりここに組み入れられる、１９９５年１０月２４日に発行された、Ｃｏｒｍｉｅｒ他の「Ｓｙｓｔｅｍ  Ｆｏｒ  Ｔｒａｎｓｆｅｒｒｉｎｇ  Ｄａｔａ  Ｂｅｔｗｅｅｎ  Ｉ／Ｏ  Ｄｅｖｉｃｅｓ  Ａｎｄ  Ｍａｉｎ  Ｏｒ  Ｅｘｐａｎｄｅｄ  Ｓｔｏｒａｇｅ  Ｕｎｄｅｒ  Ｄｙｎａｍｉｃ  Ｃｏｎｔｒｏｌ  Ｏｆ  Ｉｎｄｅｐｅｎｄａｎｔ  Ｉｎｄｉｒｅｃｔ  Ａｄｄｒｅｓｓ  Ｗｏｒｄｓ（ＩＤＡＷＳ）」という名称の特許文献１、及び１９９６年６月１１日に発行された、Ｃａｓｐｅｒ他の「Ｍｅｔｈｏｄ  Ａｎｄ  Ｓｙｓｔｅｍ  Ｆｏｒ  Ｐｉｐｅｌｉｎｉｎｇ  Ｔｈｅ  Ｐｒｏｃｅｓｓｉｎｇ  Ｏｆ  Ｃｈａｎｎｅｌ  Ｃｏｍｍａｎｄ  Ｗｏｒｄｓ」という名称の特許文献２に詳細に説明されている。ＩＢＭは、米国ニューヨーク州Ａｒｍｏｎｋ所在のＩｎｔｅｒｎａｔｉｏｎａｌ  Ｂｕｓｉｎｅｓｓ  Ｍａｃｈｉｎｅｓ  Ｃｏｒｐｏｒａｔｉｏｎ社の登録商標である。本明細書に使用される他の名前は、Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｂｕｓｉｎｅｓｓ  Ｍａｃｈｉｎｅｓ  Ｃｏｒｐｏｒａｔｉｏｎ社又は他の会社の登録商標、商標、又は製品名であり得る。
【００２６】
データ転送要求の処理に関連した更なる詳細が、図２を参照して説明される。前述のように、Ｉ／Ｏ動作は、ＳＴＡＲＴ  ＳＵＢＣＨＡＮＮＥＬ命令（２００）を実行することによって開始される。ＳＴＡＲＴ  ＳＵＢＣＨＡＮＮＥＬ命令は、中央処理装置によって開始され、動作要求ブロック（operationrequest block、ＯＲＢ２０２）のメモリ（例えば、主メモリ）内のアドレスを含む、１つ又は複数のフィールドを有する。ＯＲＢ２０２は、本発明の態様による、変更された間接データ・アドレス指定を用いるべきかどうかを指定する制御装置２０４と、実行されるべきチャネル・プログラムの第１のＣＣＷ２０８を見つけるチャネル・コマンド・ワード（channel command word、ＣＣＷ）プログラム・アドレス２０６とを含む。例えば、制御装置が１に設定されるとき、制御装置は、チャネル・プログラムがＭＩＤＡＷリストを指定するＣＣＷを含み得ることを指定し、これらのＭＩＤＡＷリストは、下記にさらに詳細に説明される。
【００２７】
ＳＴＡＲＴ  ＳＵＢＣＨＡＮＮＥＬ命令の実行に応答して、チャネル・プログラムの実行が始まる。詳細には、プログラムの第１のＣＣＷが処理される。ＣＣＷは、処理を制御する多くのフィールドを有する。これらのフィールドは、例えば、実行されるべき動作を指定するコマンド・コード２１０と、Ｉ／Ｏ動作を制御するために用いられる複数のフラグ２１２と、データ転送を指定するコマンドについて、転送されるべきＣＣＷによって指定された記憶領域内のバイト数を指定するカウント・フィールド２１４と、間接アドレス指定が用いられないとき、又は、この場合は、変更された間接データ・アドレス指定が用いられるとき、処理されるべき変更された間接データ・アドレス・ワード（modified indirect data address words、ＭＩＤＡＷ）のリスト（例えば、連続したリスト）に対して、データを含む主メモリ内の位置を指し示すデータ・アドレス２１６とを含む。
【００２８】
これらに限られるものではないが、書き込み動作、読み取り動作、逆読み動作、制御動作及び感知動作を含む、実行可能な種々のＩ／Ｏ動作がある。書き込み動作、読み取り動作、制御動作及び感知動作の場合、メモリ位置は、アドレス昇順で用いられる。情報がメモリとの間で転送されるにつれて、アドレス・フィールドからのアドレスが増加し、カウント・フィールドからカウントが減少する。逆読み動作は、メモリ内のデータをアドレス降順で配置し、カウント及びアドレスの両方が減少する。カウントがゼロに達すると、ＣＣＷによって定められるメモリ領域が使い尽くされる。
【００２９】
本発明の態様によると、変更された間接データ・アドレス指定（ＭＩＤＡ）が用いられる。ＭＩＤＡにより、単一のチャネル・コマンド・ワードが、例えば、主メモリ（又は、他の実施形態においては、他のメモリ）において不連続なブロックにわたる６５，５３５バイトのデータまでの転送を制御することが可能になる。転送されるべきメモリの各ブロックは、任意の境界で指定することができ、任意の長さにすることができる。変更された間接データ・アドレス指定は、ＯＲＢ内のフラグによって制御され、ＣＣＷ内のフラグによって指定され、このことは、両方が設定されたとき、ＣＣＷデータ・アドレスが、データを直接アドレス指定するために用いられず、代わりに、１つ又は複数の更新された間接データ・アドレス・ワード（ＭＩＤＡＷ）の連続したリストを指し示すことを示す。リスト内のＭＩＤＡＷの数は、全てのＭＩＤＡＷカウントの合計がＣＣＷカウントと等しくなるという点で、ＣＣＷ内のカウントに依存している。ＣＣＷカウント・フィールドにおいて指定されたデータ量を転送するのに十分なＭＩＤＡがなければならない。
【００３０】
例のように、各々のＭＩＤＡＷ２２０は、オペレーティング・システム又は装置ドライバによって作成され、例えば、以下を含む複数のフィールドを有する。すなわち、
フラグ２２２：フラグ・フィールドが、
設定されたとき、このＭＩＤＡＷが、ＭＩＤＡＷの連続したリスト内の最後のものであることを指定する最後のＭＩＤＡＷフラグ、
設定されたとき、読み取り動作、逆読み動作、感知ＩＤ動作及び感知動作中に、メモリへの情報の転送の抑制を指定し、これによりスキップが有効であることが指定されるスキップ・フラグ。動作が読み取られず、逆読みされず、感知ＩＤされず、感知されないとき、このフラグは無視され、スキップは有効ではない。及び、
設定されたとき、装置がデータの転送を試みたときに認識されるべきプログラム・チェックを指定するデータ転送割り込み制御フラグ、
のような、複数のフラグを含む。
カウント２２４：ＭＩＤＡＷのカウント・フィールドは、データ・アドレス・フィールドによって指定されるメモリ領域内のバイト数を指定する。一例として、スキッピングが有効であるとき、カウント値は、１〜６５，５３５の範囲とすることができる。カウント値によって、総データ転送カウントが、ＣＣＷカウント・フィールドにおいて指定されたものを超えるとき、プログラム・チェック条件が認識される。
データ・アドレス２２６：ＭＩＤＡＷがデータ転送のために用いられるとき、ＭＩＤＡＷのこのフィールドは、一例として、転送されるべき情報の第１のバイトである、主メモリ内の位置のアドレスを指定する。カウント・フィールドがゼロを指定する場合には、このフィールドはチェックされない。
【００３１】
更新された間接データ・アドレス指定が指定されるとき、ＣＣＷのデータ・アドレス・フィールドは、ＣＣＷコマンドについてのデータ転送のために使用されることになる第１のＭＩＤＡＷの位置を指定する。ＣＣＷについてのデータ転送を完了するために必要とされる場合には、更なるＭＩＤＡＷが、メモリ内の連続した位置から取り出される。ＣＣＷについて用いられるＭＩＤＡＷの数は、ＣＣＷによって指定されたＭＩＤＡＷのリスト内のカウント・フィールドに関連したＣＣＷのカウント・フィールドによって決定される。
【００３２】
単一のＭＩＤＡＷリストによって転送又はスキップすることができる、或いはその両方を行うことができるバイトの総数は、ＣＣＷカウント・フィールドによって制限される。ＣＣＷによって指定されたリストにおける全てのＭＩＤＡＷ内のカウント・フィールドの合計は、ＣＣＷのカウント・フィールド内の値と等しくすべきある。
【００３３】
ＣＣＷによって指定されたＭＩＤＡＷは、メモリ内の任意の位置を指定することができる。ＭＩＤＡＷスキップ・フラグがゼロであり、ＣＣＷが読み取りコマンド、書き込みコマンド、制御コマンド、感知ＩＤコマンド、又は感知コマンドを指定するとき、ＭＩＤＡＷカウント・フィールドによって指定されたバイト数が転送されるまで、データは、より高次のメモリ位置に又はそこから連続的に転送される。ＭＩＤＡＷスキップ・フラグがゼロであり、ＣＣＷが逆読みコマンドを指定するとき、ＭＩＤＡＷカウント・フィールドによって指定されたバイト数が転送されるまで、データは、より低次のメモリ位置に連続的に転送される。ＭＩＤＡＷスキップ・フラグが１であり、ＣＣＷが読み取りコマンド、制御コマンド、感知ＩＤコマンド、又は感知コマンドを指定するとき、ＭＩＤＡＷカウント・フィールドによって指定されたバイト数がスキップされるまで、スキップは、より高次の位置に連続的に行われる。ＭＩＤＡＷスキップ・フラグが１であり、ＣＣＷが逆読みコマンドを指定するとき、ＭＩＤＡＷカウント・フィールドによって指定されたバイト数がスキップされるまで、スキップは、より低次のメモリ位置に連続的に行われる。
【００３４】
指定されたバイト数が転送又はスキップされ、次のＭＩＤＡＷが指定されると、次に、データ転送の制御が、リスト内の次のＭＩＤＡＷに引き渡される。ＣＣＷによって指定されたＭＩＤＡＷと同様に、次のＭＩＤＡＷは、任意の位置及び任意の長さを指定することができる。
【００３５】
図２には、１つのＭＩＤＡＷ及び１つのＣＣＷが示されているが、ＣＣＷは、ＭＩＤＡＷのリストと関連付けることができ、ＯＲＢは、処理されるべき複数のＣＣＷの１つのＣＣＷを指し示すことができる。複数のＣＣＷの各ＣＣＷは、１つ又は複数のＭＩＤＡＷを示す場合も、示さない場合もある。
【００３６】
現在のＣＣＷ又は予め取り出された（使用前に取り出された）ＣＣＷに関するＭＩＤＡＷを予め取り出すことができる。一実施形態においては、予め取り出すことができるＭＩＤＡＷの数は、ＭＩＤＡＷを指定するＣＣＷ内のカウントを満たすのに必要とされる数を超えるべきではない。ＣＣＷについて予め取り出され、Ｉ／Ｏ動作上の制御を受けない如何なるＭＩＤＡＷも用いられない。１つのＭＩＤＡＷから次のＭＩＤＡＷに制御を移すアクションは、いずれの取り付けられた装置にもトランスペアレントである。作動しているＣＣＷが（リスト内の第１のＭＩＤＡＷについての）制御を行うとき、又は、前のＭＩＤＡＷによって指定された最後のバイトが（リスト内の次のＭＩＤＡＷの全てについて）転送されたとき、ＭＩＤＡＷは、データ転送の制御を行い、作動しているＣＣＷが、更なるデータの転送を指定する。
【００３７】
前のＭＩＤＡＷについてのデータの最後のバイトを転送することによりＣＣＷ内のカウントがゼロに達した場合には、ＭＩＤＡＷは、Ｉ／Ｏ動作の制御を行わない。そのデータを予め取り出すための試みがなされたとしても、ＭＩＤＡＷがデータ転送の制御を行うまで、予め取り出されたＭＩＤＡＷにおいて検出されたプログラム・エラー又はアクセス・エラーは、プログラムに示されない。
【００３８】
図３を参照して、ＭＩＤＡＷの処理に関するさらなる詳細が説明される。最初に、チャネル・プログラムが構築される（ステップ３００）。チャネル・プログラムは、データ転送を制御するために用いられる１つ又は複数のＣＣＷを含む。その後、ＳＴＡＲＴ  ＳＵＢＣＨＡＮＮＥＬ命令が出され（ステップ３０２）、第１のＣＣＷが取り出され、使用される（ステップ３０４）。ＯＲＢ内のフラグ及びＣＣＷ内のフラグは、ＭＩＤＡＷが用いられるべきであり、よって、第１のＭＩＤＡＷが取り出され、使用されることを示す（ステップ３０６）。メモリ境界に関係なく、ＭＩＤＡＷにおいて指定されたデータ量が転送される（ステップ３０８）。その後、転送されるべきデータがさらに存在するかどうかについての判断がなされる（照会３１０）。ＣＣＷ内のカウント・フィールドによって示されるように、転送されるべきデータがさらに存在する場合には、選択されるべき別のＭＩＤＡＷがあるかどうかについて判断がなされる（照会３１２）。これが最後のＭＩＤＡＷであることを、現在のＭＩＤＡＷ内のフラグが示す場合には、要求されるデータ量を転送するのには不十分なＭＩＤＡＷを示すエラーが示される（ステップ３１４）。他の場合には、別のＭＩＤＡＷが選択される（ステップ３０６）。
【００３９】
照会３１０に戻ると、このＣＣＷについて転送されるべきデータがさらに存在しない場合には、処理されるべき別のＭＩＤＡＷがあるかどうかについての更なる照会がなされる（照会３１５）。別のＭＩＤＡＷが存在する場合には、ミスマッチが示され、転送されるべきデータの存在より多くのＭＩＤＡＷが存在することを示す（ステップ３１６）。しかしながら、処理されるべき別のＭＩＤＡＷが存在しない場合には（又は、別の実施形態においては、エラー３１４及び／又はエラー３１６を指定した後に）、処理されるべきＣＣＷがさらに存在するかどうかについての更なる照会がなされる（照会３１８）。一例においては、これは、現在のＣＣＷ内のフラグによって決定される。実行されるべきＣＣＷがさらに存在する場合には、処理は、ステップ３０４で続く。他の場合には、チャネル・プログラムの処理は完了する。
【００４０】
上記に詳述されたのは、更新された間接データ・アドレス・ワードのもとで、例えば、Ｉ／Ｏ装置と不連続なメモリとの間のデータ転送の融通性のある制御を提供する技術である。更新された間接データ・アドレス指定は、装置と多数のメモリの非連続なブロックとの間のデータ転送のために、より融通性があり有効な技術を提供する。更新された間接データ・アドレス指定は、単一のＣＣＷが、装置と仮想アドレス空間内のページにマッピングされたメモリとの間の任意の境界（すなわち、非ページ境界）上で始まり且つ終わるデータ転送の制御を可能にする。ＭＩＤＡはまた、データの不連続な４ＫＢのブロックより大きい転送も可能にする。
【００４１】
本発明の１つ又は複数の態様は、例えば、コンピュータ使用可能媒体を有する製品（例えば、１つ又は複数のコンピュータ・プログラム製品及び／又はシステム）内に含ませることができる。媒体は、例えば、本発明の能力を提供し、助けるために、論理（例えば、命令、コード、コマンド等）のコンピュータ可読プログラム・コード手段を内部に有する。製品は、コンピュータ・システムの一部として含ませることができ、又は別個に販売することができる。
【００４２】
図４を参照して、本発明の１つ又は複数の態様を組み込む製品又はコンピュータ・プログラム製品の一例が説明される。コンピュータ・プログラム製品４００は、例えば、本発明の１つ又は複数の態様を提供し助けるために、上にコンピュータ可読プログラム・コード手段又は論理４０４を格納するための、１つ又は複数のコンピュータ使用可能媒体４０２を含む。媒体は、電子媒体、磁気媒体、光媒体、電磁気媒体、赤外線媒体、又は半導体システム（或いは装置若しくはデバイス）媒体、或いは伝播媒体とすることができる。コンピュータ可読媒体の例には、半導体又はソリッド・ステート・メモリ、磁気テープ、取り外し可能コンピュータ・ディスケット、ランダム・アクセス・メモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）、剛性磁気ディスク及び光ディスクが挙げられる。光ディスクの例には、コンパクトディスク・読み出し専用メモリ（ＣＤ−ＲＯＭ）、コンパクトディスク読み取り／書き込み（ＣＤ−Ｒ／Ｗ）及びＤＶＤが挙げられる。
【００４３】
１つ又は複数のコンピュータ可読プログラム・コード手段又は論理によって定められた１つ又は複数の相互に関連したモジュールの一連のプログラム命令又は論理アセンブリが、本発明の１つ又は複数の態様の性能を方向付ける。
【００４４】
有利なことに、データ転送のための分散／収集技術が提供される。転送されるデータ量が特定のメモリ境界と無関係なデータを転送する機能が提供される。この技術により、他の間接データ・アドレシング技術により課されるプログラム選択可能な最大２ＫＢ／４ＫＢブロック・サイズの制限が軽減される。さらに、別個の転送カウントが、各間接データ・アドレスと関連付けられ、間接データ・アドレスと関連したカウント・フィールドに基づいて、制御は、１つの列挙された間接データ・アドレスから次のものに移される。間接アドレス及び関連したカウントごとのスキップも可能になり、間接データ・アドレスのリストのサイズが検証される。
有利なことに、チェーン・データＣＣＷを用いることなく、任意の境界及び長さ（例えば、一実施形態においては、６４Ｋ−１まで）で、メモリの不連続なブロックを指定することができる。
【００４５】
更新された間接データ・アドレス指定は、プログラムが、任意の境界及び任意のサイズであるメモリの不連続なブロックにわたるデータの転送を制御するチャネル・プログラムを指定することができる機構を提供する。こうしたチャネル・プログラムは、例えば、アドレス・フィールドが、データのアドレス指定のためには用いられないが、更新された間接データ・アドレス・ワードの連続したリストのアドレスを指定するために用いられる、１つ又は複数のチャネル・コマンド・ワードを含む。ＭＩＤＡＷリストは、アドレスのリストではないが、制御ブロックのリストであり、そこでは、各々の制御ブロック（すなわち、ＭＩＤＡＷ）が、処理に用いられる情報を含む。
【００４６】
各々のＭＩＤＡＷは、そのＭＩＤＡＷが制御されているとき、転送されるべきデータ量を指定するカウント・フィールドを含む。リスト上の１つのＭＩＤＡＷから次のＭＩＤＡＷへの制御の受け渡しは、ＣＣＷカウント・フィールド及びＭＩＤＡＷカウント・フィールドの組み合わせによって制御される。データ転送が始まると、リスト上の第１のＭＩＤＡＷが用いられ、例えば、主メモリ内の転送が始まる位置を指定する。ＣＣＷカウント・フィールドの値が、第１のＭＩＤＡＷ内のカウント・フィールドの値を超え、最後のＭＩＤＡＷフラグがゼロである場合には、次のＭＩＤＡＷは、そのＭＩＤＡＷによって指定された主メモリ・アドレスで制御及びデータ転送が続くと推定する。ＣＣＷカウント・フィールドによって指定された全データ量が転送されるまで、リスト内の連続したＭＩＤＡＷに制御を引き渡すこのプロセスが続く。
【００４７】
ＭＩＤＡＷがアドレス・フィールド及びカウント・フィールドを含むので、いずれかのＭＩＤＡＷによって指定されたメモリ位置は、任意の境界上で始まり、終わることができる。
さらに、各々のＭＩＤＡＷは、スキップ・インジケータがあるフラグ・フィールドを含む。データ転送中にＭＩＤＡＷが制御を獲得するとき、スキップ・インジケータが１である場合には、ＭＩＤＡＷによって指定されたメモリの範囲がスキップされ、その範囲についてのデータ転送は行われない。
【００４８】
ＭＩＤＡＷフラグ・フィールドはまた、そのＭＩＤＡＷがリスト内の最後のＭＩＤＡＷであるインジケータを含む。したがって、このインジケータが１であるとき、ＣＣＷカウント・フィールドが、次のＭＩＤＡＷへの制御の受け渡しを指定する場合には、ＣＣＷとＭＩＤＡＷリストとの間にミスマッチが存在する。同様に、ＣＣＷによって指定された全データ量が転送され、現在制御しているＭＩＤＡＷのフラグがゼロに設定された場合には、ＣＣＷとＭＩＤＡＷリストとの間にもミスマッチが存在する。どちらの場合にも、チャネル・プログラム・チェックを介してプログラムに通知し、エラーを示すことができる。
【００４９】
種々の実施形態が上述されているが、これらは例にすぎない。チャネル・サブシステム以外のＩ／Ｏサブシステムを用いる他のものなどの、本明細書に説明されるもの以外の処理環境が、本発明の１つ又は複数の態様を組み込み、使用することも可能である。さらに、種々の制御ブロックが示されたが、それらの制御ブロックにおける情報の位置は、本明細書に示されたもの以外であってもよい。さらに、各々の制御ブロックは、本明細書に説明されるものと比べて、更なる情報、より少ない情報、又は異なる情報を有することができる。例えば、更なるフラグ、より少ないフラグ、及び／又は異なるフラグを有することができるフィールドを含むことができる、更なるフィールド、より少ないフィールド、及び／又は異なるフィールドがある可能性がある。さらに、更なるフィールド・サイズ、より少ないフィールド・サイズ、及び／又は異なるフィールド・サイズがある可能性がある。さらに、実施形態の様々な部分において、主メモリについて述べられ、説明されているが、本発明の１つ又は複数の態様を他のメモリに適用することもできる。
【００５０】
さらに別の実施形態においては、所望であれば、指定の制限を実施することが可能である。例えば、ＭＩＤＡＷリストが、４ＫＢバイトの境界のような指定の境界を超えるように指定することができないという制限を与えることができる。これにより、最大ＭＩＤＡＷリストのサイズは、２５６のＭＩＤＡＷに制限される。さらに、単一のＭＩＤＡＷは、４ＫＢの境界のような指定の境界を超えることができないデータ・カウントを指定することができ、及び／又は４ＫＢバイトの境界を越えるデータの転送を指定するものではない。更に別の例において、スキップ・フラグは、読み取り動作だけに適用する必要はない。本発明の趣旨から逸脱することなく、いずれかの他の変更及び／又は向上をなすことができる。
【００５１】
さらに、処理環境は、指定のアーキテクチャ又はそのサブセットがエミュレートされるエミュレータ（例えば、ソフトウェア又は他のエミュレーション機構）を含むことができる。こうした処理環境においては、エミュレータを実行するコンピュータが、エミュレートされる能力とは異なるアーキテクチャを有することができても、エミュレータの１つ又は複数のエミュレーション機能が、本発明の１つ又は複数の態様を実施することが可能である。一例として、エミュレーション・モードにおいて、エミュレートされる指定の命令又は動作がデコードされ、個々の命令又は動作を実施するために、適切なエミュレーション機能が構築される。
【００５２】
エミュレーション環境においては、ホスト・コンピュータが、例えば、命令及びデータを格納するためのメモリと、メモリから命令を取り出し、随意的に取り出された命令のために局所的バッファリングを提供するための命令取り出しユニットと、命令取り出しユニットを受け取り、取り出された命令のタイプを決定するための命令デコード・ユニットと、命令を実行するための命令実行ユニットとを含む。実行は、記憶するためにデータをレジスタにロードすること、データをレジスタから再びメモリに格納すること、又は、デコード・ユニットによって決定されるような、何らかのタイプの算術演算又は論理演算を行うことを含むことができる。一例では、各々のユニットは、ソフトウェア内に実装される。例えば、ユニットによって行われる演算は、エミュレータ・ソフトウェア内の１つ又は複数のサブルーチンとして実施される。
【００５３】
さらに、システム・バスを通してメモリ要素に直接的に又は間接的に連結された少なくとも１つのプロセッサを含む、プログラム・コードを格納及び／又は実行するのに適したデータ処理システムが使用可能である。メモリ要素は、例えば、プログラム・コードの実際の実行中に用いられるローカル・メモリ、大容量記憶装置、及び実行中に大容量記憶装置からコードを検索しなければならない回数を減少させるために、少なくとも幾つかのプログラム・コードを一時的に格納するキャッシュ・メモリを含む。
【００５４】
入力／出力装置すなわちＩ／Ｏ装置（これらに限られるものではないが、キーボード、ディスプレイ、ポインティング・デバイス等を含む）は、直接的に又は介在するＩ／Ｏコントローラを通して、システムに連結することができる。ネットワーク・アダプタをシステムに連結することができ、データ処理システムが、介在するプライベート・ネットワーク又はパブリック・ネットワークを通して、他のデータ処理システム又は遠隔プリンタ、或いはストレージ装置に連結されるようになることを可能にする。モデム、ケーブル・モデム及びイーサネット（登録商標）・カードは、利用可能なネットワーク・アダプタのタイプのほんの幾つかである。
【００５５】
本発明の１つ又は複数の態様の能力は、ソフトウェア、ファームウェア、ハードウェア又はそれらの組み合わせにおいて実施することができる。本発明の能力を実施するマシンによって実行可能な命令の少なくとも１つのプログラムを具現化する、マシンによって読み取り可能な少なくとも１つのプログラム・ストレージ装置を提供することができる。
【００５６】
本明細書に示されるフロー図は、例にすぎない。本発明の精神から逸脱することなく、本明細書に記述されるこれらの図又はステップ（又は、動作）への多くの変形があり得る。例えば、ステップは、異なる順序で行うことができ、或いはステップを追加し、削減し、又は変更することができる。これらの変形の全ては、特許請求されている本発明の一部とみなされる。
【００５７】
好ましい実施形態がここに詳細に示され、説明されてきたが、当業者には、本発明の精神を逸脱することなく、種々の変更、追加、置換等をなし得ること、よって、これらが、上記の特許請求の範囲において定められる本発明の範囲内にあるとみなされることが明らかであろう。
【図面の簡単な説明】
【００５８】
【図１】本発明の１つ又は複数の態様を組み込み、用いる処理環境の一実施形態を示す。
【図２】本発明の態様による、入力／出力処理と関連した論理の一例を示す。
【図３】本発明の態様による、データ転送を制御するために、更新された間接データ・アドレス・ワードを使用することに関連付けられた論理の一実施形態を示す。
【図４】本発明の１つ又は複数の態様を組み込むコンピュータ・プログラム製品の一実施形態を示す。
【符号の説明】
【００５９】
１００：処理環境
１０２：主メモリ
１０４：ＣＰＵ（中央処理装置）
１０６：ストレージ制御要素
１０８：チャネル・サブシステム
１１０：制御ユニット
１１２：入力／出力装置
１１４、１１６、１１８、１２０、１２６：接続
【図１】
2008047116.tif 000003
【図２】
2008047116.tif 000004
【図３】
2008047116.tif 000005
【図４】
2008047116.tif 000006