(57)【要約】  本発明を適用した１システムは、データを記憶する記憶装置と、命令を発行する演算処理装置と、演算処理装置が発行したデータ転送命令に従ってデータ転送を行うデータ転送装置を有する。データ転送装置は、演算処理装置が発行したデータ転送命令を受けた場合に、記憶装置が記憶するデータに基づき、データのエラーを検出する第１のエラー検査データを生成するとともに、データと第１のエラー検査データを入出力装置に転送し、演算処理装置が発行したデータ検査命令を受けた場合に、記憶装置が記憶するデータに基づき、データのエラーを検出する第２のエラー検査データを生成するとともに、他のデータ転送装置が生成した第１のエラー検査データと第２のエラー検査データを比較した結果が不一致である場合に、演算処理装置にエラーが発生した旨の通知を行なう。
2012108023.tif 000002
【特許請求の範囲】
【請求項１】
入出力装置に接続された情報処理装置において、
データを記憶する記憶装置と、
命令を発行する演算処理装置と、
前記演算処理装置が発行したデータ転送命令を受けた場合に、前記記憶装置が記憶するデータに基づき、前記データのエラーを検出する第１のエラー検査データを生成するとともに、前記データと前記第１のエラー検査データを前記入出力装置に転送し、前記演算処理装置が発行したデータ検査命令を受けた場合に、前記記憶装置が記憶するデータに基づき、前記データのエラーを検出する第２のエラー検査データを生成するとともに、他のデータ転送装置が生成した第１のエラー検査データと前記第２のエラー検査データを比較した結果が不一致である場合に、前記演算処理装置にエラーが発生した旨の通知を行なうデータ転送装置を有することを特徴とする情報処理装置。
【請求項２】
前記情報処理装置は、
複数のデータ転送装置を有し、
前記複数のデータ転送装置の各々が単位時間当たりにデータ転送を行なう時間の割合であるビジー率に基づき、前記複数のデータ転送装置から選択したデータ転送装置に、前記演算処理装置が発行したデータ検査命令を転送する制御装置を有することを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記データ転送装置はさらに、
前記複数のデータ転送装置のうち第１のデータ転送装置による前記第１のエラー検査データと前記複数のデータ転送装置のうち第２のデータ転送装置による前記第２のエラー検査データの比較結果が不一致である場合に、前記記憶装置が記憶するデータに基づき、前記データのエラーを検出する第３のエラー検査データを生成するとともに、前記第１のエラー検査データと前記第３のエラー検査データを比較した結果と前記第２のエラー検査データと前記第３のエラー検査データを比較した結果に基づき、前記複数のデータ転送装置の何れが故障しているかの判断を行なうことを特徴とする請求項２記載の情報処理装置。
【請求項４】
前記情報処理装置において、
前記記憶装置はさらに、前記データの前記記憶装置における開始アドレスと前記データのデータ長を記憶し、
前記データ転送装置は、前記開始アドレスと前記データ長を用いて、前記データに基づき、前記第１のエラー検査データを生成するとともに、前記開始アドレスと前記データ長を用いて、前記データに基づき、前記第２のエラー検査データを生成することを特徴とする請求項１記載の情報処理装置。
【請求項５】
データを記憶する記憶装置と命令を発行する演算処理装置を有するとともに、入出力装置に接続された情報処理装置の制御方法において、
前記演算処理装置が、前記情報処理装置が有する第１のデータ転送装置にデータ転送命令を発行するステップと、
前記データ転送命令を受けた前記第１のデータ転送装置が、前記記憶装置が記憶するデータに基づき、前記データのエラーを検出する第１のエラー検査データを生成するステップと、
前記第１のデータ転送装置が、前記データと前記第１のエラー検査データを前記入出力装置に転送するステップと、
前記演算処理装置が、前記情報処理装置が有する第２のデータ転送装置にデータ検査命令を発行するステップと、
前記データ検査命令を受けた前記第２のデータ転送装置が、前記記憶装置が記憶するデータに基づき、前記データのエラーを検出する第２のエラー検査データを生成するステップと、
前記第２のデータ転送装置が、前記第１のエラー検査データと前記第２のエラー検査データを比較するステップと、
前記第２のデータ転送装置が比較した結果が不一致である場合に、前記演算処理装置にエラーが発生した旨の通知を行なうステップを有することを特徴とする情報処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理システム及びデータ転送方法に関する。
【背景技術】
【０００２】
コンピュータ等の情報処理装置は、必要なデータを主記憶装置に格納して処理を行う。情報処理装置の主記憶装置に格納するデータは、当該情報処理装置に接続された外部記憶装置及び光ディスク等の記録媒体にアクセスする媒体駆動装置、或いは伝送路を介して接続された他の情報処理装置に接続された入出力装置（以降「ＩＯ（Input Output）装置」と総称）から転送される。このデータ転送を行うために、情報処理装置にはデータ転送装置が一台以上搭載される。情報処理装置、及びこの情報処理装置との間でデータの入出力を行うＩＯ装置を含む構成の情報処理システムは、情報処理装置に備えられたデータ転送装置を用いて、情報処理装置の主記憶装置とＩＯ装置間のデータ転送を行う。【０００３】
図１は、従来の情報処理システムで行われるデータ転送を説明する図である。
コンピュータ等の情報処理装置１は、演算処理装置であるＣＰＵ（Central Processing Unit）１１、主記憶装置であるメモリ１２、データ転送装置である複数のチャネル装置１３、及び各チャネル装置１３の動作を制御するＩＯプロセサ（ＩＯＰ：Input Output Processor）１４を備えている。図１に表す例では、各チャネル装置１３は、メモリ１２と、情報処理装置１と接続されたＩＯ装置２との間でデータ転送を行う。【０００４】
各チャネル装置１３は、データ転送を行う場合、ＩＯ装置２との間で、データ、及びＣＲＣ（Cyclic Redundancy Check：巡回冗長検査）データの送受信を行う。ＣＲＣデータは、送受信されるデータを用いて生成されるデータである。ＣＲＣデータの内容は、生成に用いるデータの内容に依存して変化する。このことから、ＣＲＣデータは、送受信するデータにエラー、つまり送受信するデータが正しいか否かを確認できるように加えられている。【０００５】
チャネル装置１３及びＩＯ装置２のなかでデータ及びＣＲＣデータを受信する受信側は、受信したデータを用いてＣＲＣデータを生成し、生成したＣＲＣデータを受信したＣＲＣデータと比較する。この比較により、受信側は、生成したＣＲＣデータと受信したＣＲＣデータが不一致の場合に、受信したデータにエラーが有ると判断する。このようにして、チャネル装置１３とＩＯ装置２間では、ＣＲＣデータを用いて適切なデータの送受信が実現されている。それにより、チャネル装置１３とＩＯ装置２間において転送されるデータは、ＣＲＣデータによる保護対象となっている。【０００６】
メモリ１２上の本来のデータ領域１２ａは、メモリ１２上で転送の対象となるデータが格納された領域、或いは転送されたデータを格納する領域である。この本来のデータ領域１２ａは、この本来のデータ領域１２ａの先頭を表す開始アドレス、及びデータ長（例えばバイト数）により指定される。この本来のデータ領域１２ａにアクセスさせるために、ＣＰＵ１１は例えばＩＯＰ１４を介してチャネル装置１３に対し、開始アドレス、及びデータ長を指定しての転送指示を行う。【０００７】
例えばチャネル装置１３とＩＯ装置２との間のデータ転送は適切に行えるが、メモリ１２の本来のデータ領域１２ａに適切にアクセスできない故障が、チャネル装置１３に発生する可能性がある。メモリ１２の本来のデータ領域１２ａにアクセスできない故障が発生した場合には、チャネル装置１３とＩＯ装置２間のデータ転送についてＣＲＣデータを用いてエラーを監視してもチャネル装置１３がメモリ１２のデータ領域１２ａにアクセスできない故障を検出することはできない。【０００８】
情報処理装置に、仮想記憶装置が実装される場合がある。仮想記憶装置が実装された情報処理装置では、物理的な記憶装置にアクセスを行なう際に用いられる実アドレス（物理アドレス）の他に、仮想空間にアクセスを行なう際に用いられるアドレスである論理アドレス（仮想アドレス）が用いられる。仮想記憶装置が実装された情報処理装置では、実アドレスと論理アドレスの２つの異なるアドレスが用いられることから、チャネル装置には論理アドレスを実アドレスに変換するアドレス変換機能が搭載される。例えば、このアドレス変換機能が故障したチャネル装置１３では、メモリ１２の本来のデータ領域１２ａにアクセスできない。このようなことから、適切なデータ転送をより確実に行うためには、従来、監視していたチャネル装置１３とＩＯ装置２間のデータ転送の範囲以外のデータ転送も監視すべきと云える。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開平５−７３４４４号公報
【特許文献２】特開２００９−２８２６５１号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
本発明は、情報処理装置の主記憶装置と入出力装置間における適切なデータ転送をより確実に行うための技術を提供することを目的とする。
【課題を解決するための手段】
【００１１】
本発明を適用した１システムは、データを記憶する記憶装置と、命令を発行する演算処理装置と、演算処理装置が発行したデータ転送命令を受けた場合に、記憶装置が記憶するデータに基づき、データのエラーを検出する第１のエラー検査データを生成するとともに、データと第１のエラー検査データを入出力装置に転送し、演算処理装置が発行したデータ検査命令を受けた場合に、記憶装置が記憶するデータに基づき、データのエラーを検出する第２のエラー検査データを生成するとともに、他のデータ転送装置が生成した第１のエラー検査データと第２のエラー検査データを比較した結果が不一致である場合に、演算処理装置にエラーが発生した旨の通知を行なうデータ転送装置を有する。
【発明の効果】
【００１２】
本発明を適用した情報処理システムでは、主記憶装置と入出力装置間での適切なデータ転送をより確実に行うことができる。
【図面の簡単な説明】
【００１３】
【図１】従来の情報処理システムで行われるデータ転送を説明する図である。
【図２】本実施形態による情報処理システムの構成を説明する図である。
【図３】本実施形態におけるＳＳＣＨ命令のデータ構成を説明する図である。
【図４】本実施形態によるチャネル装置の構成を説明する図である。
【図５】アドレス変換部の構成、及び動作を説明する図である。
【図６Ａ】セグメントテーブルのエントリに格納されるデータを説明する図である。
【図６Ｂ】ページテーブルのエントリに格納されるデータを説明する図である。
【図７】ＳＳＣＨ命令によるデータ転送が行われるシーケンスを表す図である。
【図８】各チャネル装置のビジー状態を把握するためにメモリに格納される情報および格納方法を説明する図である。
【図９】本実施形態によりデータ転送が監視される範囲を説明する図である。
【図１０】第１のデータ転送処理のフローチャートである。
【図１１】第２のデータ転送処理のフローチャートである。
【図１２】ＣＲＣ再計算処理のフローチャートである。
【図１３】ＩＯ処理の前半のフローチャートである。
【図１４】ＩＯ処理の後半のフローチャートである。
【図１５】正常動作時における各チャネル装置及びＣＰＵが実行する処理の流れを表すシーケンス図である。
【図１６】故障発生時における各チャネル装置及びＣＰＵが実行する処理の流れを表すシーケンス図である。
【発明を実施するための最良の形態】
【００１４】
以下、本発明の実施形態について、図面を参照しながら詳細に説明する。
図２は、本実施形態による情報処理システムの構成を説明する図である。
情報処理システムは、それぞれが１台のコンピュータ（情報処理装置）に相当する複数のクラスタ２０、複数台のＩＯ装置３０及びクラスタ２０とＩＯ装置３０を接続するスイッチ４０を含む構成である。図２にはクラスタ番号が０のクラスタ２０ａと直接接続されているＩＯ装置３０は１台のみである。また、クラスタ番号が１のクラスタ２０ｂと直接接続されているＩＯ装置３０は図示していないが、各クラスタ２０と直接接続されるＩＯ装置３０が存在しても良い。ＩＯ装置３０は、例えばハードディスク装置、光ディスク装置、或いは複種類の記憶装置を管理するファイルサーバ等のファイル装置である。ＩＯ装置３０は、ネットワークを介して接続される外部装置であっても良い。【００１５】
各クラスタ２０には、仮想記憶装置が実装されている。各クラスタ２０は、ＣＰＵ２０１、主記憶装置であるメモリ２０２、データ転送装置である複数のチャネル装置２０３、各チャネル装置の動作を制御するＩＯプロセサ（ＩＯＰ）２０４、及び割り込み機構２０５を備えている。チャネル装置２０３が行うデータ転送の完了は割り込み機構２０５を介してＣＰＵ２０１に通知される。図２には、クラスタ２０に内蔵された４台のチャネル装置２０３を表しているが、より多くのチャネル装置２０３が各クラスタ２０に搭載されていても良い。仮想記憶装置は、例えばＣＰＵ２０１に搭載されたメモリ管理装置等のハードウェア(例えばＭＭＵ：Memory Management Unit)と、ＣＰＵ２０１が実行するオペレーティング・システム（Operating System）とが協調することで実現される。【００１６】
ＣＰＵ２０１は、チャネル装置２０３にデータ転送を行わせる場合、ＳＳＣＨ（Start Sub Channel）命令を、ＩＯＰ２０４を介してチャネル装置２０３に発行する。本実施形態では、ＳＳＣＨ命令を実行させるチャネル装置２０３とは異なるチャネル装置２０３に、メモリ２０２上でデータ転送の対象となったデータにアクセスさせ、そのデータの内容に応じた識別情報を生成させる。生成された識別情報は、実際にデータ転送を行ったチャネル装置２０３が生成した識別情報と比較される。識別情報はデータの内容に依存して内容が変化するものであれば良い。本実施形態では、識別情報の例としてＣＲＣ（Cyclic Redundancy Check）データを用いる。【００１７】
ＣＰＵ２０１が実行するプログラムがメモリ２０２にアクセスする場合、ＣＰＵ２０１はプログラムにおいて指定された論理アドレスをメモリ２０２上の実アドレスに変換し、変換した実アドレスを含むページがメモリ２０２上に存在するか否かを確認する。ＣＰＵ２０１によるＳＳＣＨ命令の発行は、変換した実アドレスを含むページがメモリ２０２上に存在しないことが確認された場合に、メモリ２０２に存在しない実アドレスを含むページをＩＯ装置３０から取得するために行われる。【００１８】
各クラスタ２０では、実装された仮想記憶装置により、物理的な主記憶装置であるメモリ２０２にアクセスを行なう際に用いられる実アドレス（物理アドレス）の他に、仮想空間にアクセスを行なう際に用いられる論理アドレス（仮想アドレス）が用いられる。論理アドレスは、ＩＯ装置３０へのアクセスに用いられる。各チャネル装置は、論理アドレスを実アドレスに変換するアドレス変換機能を有する。このアドレス変換機能に故障が発生したチャネル装置２０３は、メモリ２０２との間で適切なデータ転送を行うことができない。つまりチャネル装置２０３がメモリ２０２へのアクセス、より具体的には、メモリ２０２からのデータの読み出し、或いはメモリ２０２へのデータの書き込みを適切に行えない可能性がある。しかし、互いに同じクラスタ内に設けられた、ＳＳＣＨ命令を実行したチャネル装置２０３及び別のチャネル装置２０３が共にメモリ２０２が記憶する同じデータへのアクセスを適切に行えた場合、各チャネル装置はメモリ２０２が記憶する同じデータにアクセスすることから、各チャネル装置２０３が生成する識別情報（ＣＲＣデータ）は一致することになる。このため、各チャネル装置が生成したＣＲＣデータを比較することにより、実際にデータ転送を行ったチャネル装置２０３がメモリ２０２との間のデータ転送を適切に行ったか否かを確認することができる。【００１９】
本実施形態では、ＣＲＣデータの比較を、データ転送を行なったチャネル装置２０３とは異なる別のチャネル装置２０３に行わせている。データ転送を行なったチャネル装置２０３とは異なる別のチャネル装置２０３にＣＲＣデータの比較を行わせることにより、メモリ２０２とチャネル装置２０３間のデータ転送を監視するために生じるＣＰＵ２０１の負荷の増大を抑えている。データ転送を行なったチャネル装置２０３とは異なる別のチャネル装置をデータ転送の監視に利用可能な資源として用いるのは、チャネル装置は多数、情報処理装置に搭載されるのが普通であることも理由の一つである。ＣＰＵ２０１の負荷が比較的に軽いような場合、ＣＰＵ２０１にＣＲＣデータの比較を行わせるようにしても良い。この場合、別のチャネル装置２０３に生成させたＣＲＣデータは後述する図３のメモリ２０２のＣＣＷ（Channel Command Word）３０２に格納することにより、ＣＰＵ２０１が取得可能にしても良い。【００２０】
チャネル装置２０３は、メモリ２０２上に格納されたデータに基づいてＣＲＣデータを生成する。これは、メモリ２０２へのアクセスはＩＯ装置３０と比較して高速に行えるということの他に、各チャネル装置の変換機能に不具合が存在する場合、メモリ２０２の適切な場所にアクセスできない可能性がある、ということも理由の一つである。【００２１】
図３は、本実施形態におけるＳＳＣＨ命令が用いるメモリ２０２に格納された制御データの構成を説明する図である。
ＳＳＣＨ命令２００は、メモリ２０２の各領域に格納された、ＯＲＢ（Operation Request Block）３０１、ＣＣＷ３０２、及びＳＳＷ（Subchannel Status Word）３０３の制御データを用いてデータ転送を指示する命令である。ＯＲＢ３０１は、チャネル装置２０３のスタート機能の制御に用いられる制御データである。ＣＣＷ３０２は、データ転送の詳細な内容を指定に用いられる制御データである。ＳＳＷ３０３は、チャネル装置２０３の状態の確認を可能とさせる。【００２２】
ＯＲＢ３０１には、ＣＲＣ  Ｃｈｅｃｋ  ｂｉｔ３０１ａ、及びＣＰＡ（Channel Program Address）３０１ｂが格納される。ＣＲＣ  Ｃｈｅｃｋ  ｂｉｔ３０１ａは、データ転送を行うＳＳＣＨ命令２００の実行、及びデータ転送を行わないＳＳＣＨ命令２００の実行のうちの何れかを選択的にチャネル装置２０３に実行させるための命令である。例えばＣＲＣ  Ｃｈｅｃｋ  ｂｉｔ３０１ａの値が０の場合はデータ転送の実行を指示し、１の場合はデータ転送を行うことなくＣＲＣデータの生成及びＣＲＣデータの比較の実行を指示する。ＣＰＡ３０１ｂは、参照すべきＣＣＷ３０２の格納場所を表すポインタである。【００２３】
ＣＣＷ３０２には、データ長（Ｂｙｔｅ  Ｃｏｕｎｔ）３０２ａ、論理アドレス（Ｌｏｇｉｃａｌ  Ｄａｔａ  Ａｄｄｒｅｓｓ）３０２ｂ、対象データ長（ＣＲＣ  Ｂｙｔｅ  Ｃｏｕｎｔ）３０２ｃ及びＣＲＣデータ３０２ｄが格納される。データ長３０２ａは、データ転送用に指定されたデータのバイト数である。対象データ長３０２ｃは、実際に転送されたデータのバイト数である。対象データ長３０２ｃはＣＲＣデータ３０２ｄと共に、ＳＳＣＨ命令２００を実行したチャネル装置２０３によって格納される。論理アドレス３０２ｂは、データを読み出す、或いは書き込むＩＯ装置３０上の場所を指定する。以降、便宜的に、データ転送を指示するＳＳＣＨ命令２００を実行するチャネル装置２０３は第１のチャネル装置２０３ａ、データ転送を行わずにＣＲＣデータの生成及びＣＲＣデータの比較を指示するＳＳＣＨ命令２００を実行するチャネル装置は第２のチャネル装置２０３ｂと表記する。【００２４】
ＳＳＷ３０３には、ＣＣＣ（Channel Control Check）３０３ａ及びＣＲＣ  Ｃｈｅｃｋ  ｂｉｔ３０３ｂが格納される。ＣＣＣ３０３ａは、エラーの発生の通知の他に、ＣＲＣデータが一致したか否かの通知に用いられる。このため、ＣＣＣ３０３ａは、ＳＳＣＨ命令２００を実行する全てのチャネル装置によって更新される可能性がある。ＣＲＣ  Ｃｈｅｃｋ  ｂｉｔ３０３ｂは、ＯＲＢ３０１からコピーされたＣＲＣデータであり、チャネル装置２０３による更新対象外である。【００２５】
本実施形態では、上記のような構成のＳＳＣＨ命令２００をチャネル装置２０３がＯＲＢ３０１のＣＲＣ  Ｃｈｅｃｋ  ｂｉｔ３０１ａの値に応じて実行する。それにより、チャネル装置２０３にデータ転送を指示するＳＳＣＨ命令２００実行させ、或いはチャネル装置２０３にデータ転送を実行させずにＣＲＣデータの生成およびＣＲＣデータの比較を指示するＳＳＣＨ命令２００を実行させる。【００２６】
図３のデータ構成は、本実施形態の説明に必要なデータを抜粋して表しているため、図３はＯＲＢ３０１、ＣＣＷ３０２、及びＳＳＷ３０３の全てのデータ構成を表していない。例えば、データ転送を行う場合、データ転送すべきデータが格納された記憶装置を特定する情報が必要である。この情報は図３には表していない。この情報は、例えばＣＣＷ３０２内に格納される。【００２７】
また、ＳＳＣＨ命令２００の実行には、図４に表すＳＣＢ（Sub Channel Block）４２０が必要である。このＳＣＢ４２０は、チャネル装置２０３の制御用に用いられる制御データであり、メモリ２０２上に確保された領域に格納されている。ＣＰＵ２０１は、汎用レジスタ（ＧＲ：General Register）２０１ａに格納されたＳＣＢ４２０を指定するＳＣＢ番号を用いてＳＳＣＨ命令２００を実行する。ＣＰＵ２０１がＳＳＣＨ命令２００を実行すると、ＧＲ２０１ａに格納されたＳＣＢ番号が、ＩＯＰ２０４に送信するための送信レジスタ２０１ｂに格納され、送信レジスタ２０１ｂに格納したＳＣＢ番号がＩＯＰ２０４に送信される。ＩＯＰ２０４の詳細は後述する。ＳＳＣＨ命令２００の実行時、ＣＰＵ２０１はＯＲＢ３０１を参照して、ＣＲＣ  Ｃｈｅｃｋ  ｂｉｔ３０１ａ、及びＣＰＡ３０１ｂをＳＣＢ４２０にコピーする。このため、チャネル装置２０３がＳＳＣＨ命令２００を実行する際、ＳＣＢ４２０には、ＯＲＢ３０１からコピーされたＣＲＣ  Ｃｈｅｃｋ
ｂｉｔ３０１ａがＣＲＣ  Ｃｈｅｃｋ  ｂｉｔ４２１として存在する。また、ＣＰＡ３０１ｂが、ＣＲＣ  Ｃｈｅｃｋ  ｂｉｔ４２１及びＣＰＡ４２２としてＳＣＢ４１０に存在する。【００２８】
図４は、本実施形態によるチャネル装置２０３の構成を説明する図である。次に上記のようなＳＳＣＨ命令２００を実行するチャネル装置２０３の構成について、図４を参照して具体的に説明する。【００２９】
チャネル装置２０３は、図４に表すように、受信レジスタ４０１、送信レジスタ４０２、仮想アドレスレジスタ４０３、アドレス変換部４０４、実アドレスレジスタ４０５、転送長レジスタ４０６、送受信部４０７、データバッファ４０８、ＣＲＣ計算部４０９、ＣＲＣ比較部４１０及び入出力制御部４１１を備えている。【００３０】
ＣＰＵ２０１のＧＲ２０１ａに格納されたＳＣＢ番号は、送信レジスタ２０１ｂを介してＩＯＰ２０４に送信され、受信レジスタ２０４ａに格納される。このＳＣＢ番号のＩＯＰ２０４への送信により、ＣＰＵ２０１側のＳＳＣＨ命令２００の処理は完了する。受信レジスタ２０４ａに格納されたＳＣＢ番号は、送信レジスタ２０４ｂを介してチャネル装置２０３に送信される。受信レジスタ４０１は、ＩＯＰ２０４から送信されたＳＣＢ番号の受信用である。送信レジスタ４０２は、ＳＳＣＨ命令２００の実行完了を通知するメッセージの格納用である。送信レジスタ４０２に格納されたメッセージは入出力部４１１を介してＩＯＰ２０４に送信され、受信レジスタ２０４ｃに格納される。ＩＯＰ２０４は、受信レジスタ２０４ｃにメッセージが格納された後、割り込み機構２０５にＣＰＵ２０１への割り込みを指示することにより、チャネル装置２０３のＳＳＣＨ命令２００の実行完了をＣＰＵ２０１に通知させる。この通知は、例えばＣＰＵ２０１が備えた割り込み通知用の対応するレジスタ（不図示）の値を書き換えることで行われる。【００３１】
上記入出力制御部４１１は、クラスタ２０内の他の構成要素、つまりメモリ２０２やＩＯＰ２０４との間でデータの入出力を行い、チャネル装置２０３全体の制御を行う。メモリ２０２上のデータ転送の対象となるデータが格納される領域へのアクセスは、入出力制御部４１１が実アドレスレジスタ４０５及び搬送長レジスタ４０６を参照して行う。また、チャネル装置２０３の動作頻度を評価し、その評価結果をメモリ２０２に格納する。本実施形態では、動作頻度（ビジー率）として、１秒あたりの動作時間を算出する。動作頻度を表す情報は、１秒あたりの動作時間以外のものであっても良い。【００３２】
仮想アドレスレジスタ４０３には、入出力制御部４１１によって、ＣＣＷ３０２に格納された論理アドレス３０２ｂが書き込まれる。アドレス変換部４０４は、論理アドレス３０２を実アドレスに変換し、変換した実アドレスを実アドレスレジスタ４０５に書き込む。第１のチャネル装置２０３ａでは、搬送長レジスタ４０６に、ＣＣＷ３０２のデータ長３０２ａが書き込まれる。ＩＯ装置３０との間でデータ転送を行う段階では、搬送長レジスタ４０６は実際に転送したデータのバイト数のカウントに用いられる。このため、第１のチャネル装置２０３ａは、ＣＣＷ３０２の対象データ長３０２ｃとして、搬送長レジスタ４０６の値を書き込む。第２のチャネル装置２０３ｂでは、搬送長レジスタ４０６には始めから対象データ長３０２ｃが書き込まれる。【００３３】
送受信部４０７は、ＩＯ装置３０との間でデータ転送を行う。このデータ転送は、仮想アドレスレジスタ４０３を参照して行われる。このデータ転送が行われるのは第１のチャネル装置２０３ａのみである。【００３４】
データバッファ４０８は、ＩＯ装置３０との間でデータ転送を行なうデータ、或いはＣＲＣデータの生成に用いるデータの格納に用いられる。ＣＲＣ計算部４０９は、データバッファ３０８に格納されたデータを用いてＣＲＣデータを生成する。第１のチャネル装置２０３ａでは、ＣＲＣ計算部４０９がデータバッファ３０８に格納されたデータに基づいて生成したＣＲＣデータがＣＣＷ３０２のＣＲＣデータ３０２ｄとして書き込まれる。ＩＯ装置３０にデータを転送する場合、このＣＲＣデータ３０２ｄはデータバッファ３０８に格納されたデータと共にＩＯ装置３０に送信される。データ領域４３０は、データ転送によりメモリ２０２にデータを書き込む領域、或いはメモリ２０２からデータを読み出す領域である。【００３５】
ＣＲＣ比較部４１０は、チャネル装置が第２のチャネル装置２０３ｂであった場合、ＣＲＣ計算部４０９が生成したＣＲＣデータを、ＣＣＷ３０２のＣＲＣデータ３０２ｄと比較する。この比較結果に応じて、ＳＳＷ３０３のＣＣＣ３０３ａの値が更新される。つまり比較結果が不一致であれば、ＣＣＣ３０２ａの値は１と書き換えられ、比較結果が一致であれば、書き換えは行われず、ＣＣＣ３０２ａの値は０のままとなる。チャネル装置２０３に何らかのエラーが発生したことを原因として、ＣＲＣ計算部４０９が生成したＣＲＣデータがＣＣＷ３０２のＣＲＣデータ３０２ｄと一致しない場合には、ＣＣＣ３０２ａの値は１とされる。チャネル装置がＩＯ装置３０からデータを受信する第１のチャネル装置２０３ａとして動作する場合、ＣＲＣ比較部４１０は、ＩＯ装置３０から受信されるＣＲＣデータをＣＲＣ計算部４０９が生成したＣＲＣデータと比較する。チャネル装置がＩＯ装置３０にデータを送信する第１のチャネル装置２０３ａとして動作する場合、ＣＲＣデータを比較する必要がないことから、ＣＲＣ比較部４１０は機能しない。【００３６】
ＣＣＣ３０２ａは、送信レジスタ４０２にメッセージの一部として格納される。それにより、ＣＣＷ３０２のＣＣＣ３０２ａの書き込みは、ＩＯＰ２０４が行う。
図５は、アドレス変換部の構成、及び動作を説明する図である。アドレス変換部４０４は、図５に表すように、操作部５０１、セグメントテーブルレジスタ５０２、セグメントエントリレジスタ５０３を備えている。【００３７】
図５に表すように、メモリ２０２上にはセグメントテーブル５１０及びページテーブル５２０が格納されている。セグメント及びページは共に、仮想的なデータのオブジェクトであり、セグメントはページよりも大きい範囲を対象とする単位である。セグメントテーブル５１０及びページテーブル５２０は、論理アドレスから実アドレスを求めるためのデータが各エントリに格納されている。より具体的には、図６Ａに表すように、セグメントテーブル５１０のエントリには対応するページテーブル５２０の格納場所（例えば先頭アドレス）を表すポインタが格納されている。ページテーブル５２０のエントリには、２０ビットの論理アドレス基本部、及び８ビットの論理アドレス拡張部が格納されている。【００３８】
論理アドレスレジスタ４０３に格納される論理アドレス３０２ｂは、上位のほうから、セグメントテーブル５１０中のエントリを指定する１１ビットの部分アドレス、ページテーブル５２０中のエントリを指定する８ビットの部分アドレス、及び実アドレスとして用いられる１２ビットの部分アドレスを含む。セグメントテーブルレジスタ５０２には、セグメントテーブル５１０の格納場所（例えば先頭アドレス）を表すポインタが格納されている。【００３９】
操作部５０１は、セグメントテーブルレジスタ５０２、及び仮想アドレスレジスタの１１ビットの部分アドレスを参照して、セグメントテーブル５１０の１エントリのデータを読み出し、セグメントエントリレジスタ５０３に格納する。次に、セグメントエントリレジスタ５０３の部分アドレス（ポインタ）、及び仮想アドレスレジスタの８ビットの部分アドレスを参照して、ページテーブル５２０の１エントリのデータ、つまり論理アドレス基本部及び論理アドレス拡張部を読み出す。読み出した論理アドレス拡張部は、上位８ビットの部分アドレスとして実アドレスレジスタ４０５に格納し、論理アドレス基本部は上位８ビットに続く２０ビットの部分アドレスとして格納する。論理アドレス基本部の下位のアドレスとして、論理アドレスの下位１２ビットの部分アドレスを格納する。そのようにして操作部５０１は、論理アドレスレジスタ４０３に格納された論理アドレスに対応する実アドレスを実アドレスレジスタ４０５に書き込む。【００４０】
本実施形態では、８ビットの論理アドレス基本部は固定値となっている。それにより、入出力制御部４１１は、実アドレスレジスタ４０５の上位８ビットの値を論理アドレス基本部の固定値と比較し、実アドレスレジスタ４０５の上位８ビットの値と論理アドレス基本部の固定値が異なっている場合に、エラーが発生していると見なす。【００４１】
図７は、ＳＳＣＨ命令によるデータ転送が行われるシーケンスを表す図である。ここで図７を参照して、データ転送のシーケンスについて詳細に説明する。
ＳＳＣＨ命令２００を実行する場合、ＣＰＵ２０１はＯＲＢ３０１を参照し、ＯＲＢ３０１に格納されているＣＲＣ  Ｃｈｅｃｋ  ｂｉｔ３０１ａを、ＳＣＢ４２０のＣＲＣ  Ｃｈｅｃｋ  ｂｉｔ４２１として書き込むとともに、ＯＲＢ３０１に格納されているＣＰＡ３０１ｂを、ＳＣＢ４２０のＣＰＡ４２２として書き込む（シーケンスＳ１）。次にＣＰＵ２０１は、ＣＲＣ  Ｃｈｅｃｋ  ｂｉｔ４２１及びＣＰＡ４２２を書き込んだＳＣＢ４２０のＳＣＢ番号をＧＲ２０１ａに格納し、ＧＲ２０１ａに格納したＳＣｂ番号を送信レジスタ２０１ｂに書き込み、ＩＯＰ２０４に送信する（シーケンスＳ２）。この送信により、ＣＰＵ２０１のＳＳＣＨ命令２００の処理は完了する。
ＩＯＰ２０４は、ＣＰＵ２０１からＳＣＢ番号を受信すると、関連するＰＭＣＷ（Path Management Control Word）７１０を参照し、チャネルパスＩＤ（ＣＨＰＩＤ：Channel Path Identification）、つまり第１のチャネル装置として動作させるチャネル装置を選択する（シーケンスＳ３）。以下、選択したチャネル装置を「第１のチャネル装置２０３ａ」と称する。ＰＭＣＷ７１０は、ＳＳＣＨ命令２００を処理させるチャネル装置を管理するためのものである。ＳＳＣＨ命令２００を処理可能なチャネル装置のそれぞれに識別情報として割り当てたチャネルパスＩＤが格納されている。図７中の「ＣＨＰＩＤ０」「ＣＨＰＩＤ１」等はそれぞれ異なるチャネルパスＩＤを表している。【００４２】
チャネル装置２０３を選択したＩＯＰ２０４は、ＳＣＢ番号を第１のチャネル装置として選択したチャネル装置２０３に送信する（シーケンスＳ４）。選択された第１のチャネル装置２０３ａは、ＩＯＰ２０４からのＳＣＢ番号を受信することにより起動し、起動した第１のチャネル装置２０３ａはＣＣＷ３０２を参照して、メモリ２０２とＩＯ装置３０間のデータ転送を行う（シーケンスＳ５）。このデータ転送を行った後、第１のチャネル装置２０３ａは、送信レジスタ４０２及び入出力制御部４１１を介して、ＣＣＣ３０２ａを含むメッセージをＩＯＰ２０４に送信する（シーケンスＳ６）。ＩＯＰ２０４は、受信したＣＣＣ３０２ａをＳＳＷ３０３に格納し、割り込み機構２０５にデータ転送の完了の通知を指示する（シーケンスＳ７）。割り込み機構２０５は、ＣＰＵ２０１に対し、データ転送の完了を通知する割り込み信号を出力する（シーケンスＳ８）。【００４３】
割り込み信号によってＣＰＵ２０１が備えた割り込み通知用レジスタの値が書き換えられる。割り込み通知用レジスタの値の書き換えによってデータ転送の完了が通知されたＣＰＵ２０１は、次に、メモリ２０２と第１のチャネル装置２０３ａ間のデータ転送が適切に行われたか否かを確認するために第２のチャネル装置２０３ｂにＣＲＣデータの生成および比較を行わせる。第２のチャネル装置２０３ｂの選択は、第１のチャネル装置２０３ａ以外の各チャネル装置のビジー率、例えば１秒あたりのチャネル装置の動作時間を参照して行う。本実施形態では、図８に表すように、メモリ２０２上に領域８００を確保し、この領域８００内に各チャネル装置２０３による１秒あたりの動作時間８１１を格納する個別領域８１０を用意している。このことから、ＣＰＵ２０１は、個別領域８１０を参照することにより、最もビジー率に余裕のあるチャネル装置、つまり１秒あたりの動作時間８１１が最も小さいチャネル装置を第２のチャネル装置２０３ｂとして選択する。ビジー率が最も低いチャネル装置を第２のチャネル装置２０３ｂとして選択することにより、第１のチャネル装置２０３ａによるデータ転送の結果の確認を最小限の時間で行えるようになる。ビジー率を表す１秒あたりの動作時間８１１は、その値が大きくなる程、チャネル装置２０３が高頻度に用いられていることを表している。第２のチャネル装置２０３の選択は、例えば、実行中のＳＳＣＨ命令２００の有無、或いは／及び、実行待ちとなっているＳＳＣＨ命令２００の数を考慮して行うようにしても良い。【００４４】
図９は、本実施形態によりデータ転送が監視される範囲を説明する図である。図９に表すように、チャネル装置２０３とＩＯ装置３０間はデータに付されたＣＲＣデータにより、データ転送が適切に行われたか否かが確認される。メモリ２０２とチャネル装置２０３間は、例えば２台（複数）のチャネル装置のうち、第１のチャネル装置として選択されたチャネル装置にはデータ転送を実際に行うＳＳＣＨ命令２００を実行させるとともに、第２のチャネル装置として選択されたチャネル装置にはデータ転送を行なわないＳＳＣＨ命令２００を実行させることにより、ＣＲＣデータを介してデータ転送が適切に行われたか否かが確認される。２台のチャネル装置２０３ａ、２０３ｂのうちの何れかが、本来のデータ領域４３０以外の誤ったデータ領域５３０にアクセスした場合、各チャネル装置２０３ａ、２０３ｂが生成するＣＲＣデータが異なるため、実際に行われたデータ転送が不適切である可能性がある。すなわち、各チャネル装置２０３ａ、２０３ｂが生成するＣＲＣデータを比較することにより、不適切に行われた可能性のあるメモリ２０２とチャネル装置２０３間のデータ転送を検出することができる。【００４５】
本実施形態では、２台のチャネル装置２０３ａ、２０３ｂがそれぞれ生成したＣＲＣデータが不一致となった場合、更にチャネル装置２０３ａ、２０３ｂ以外のチャネル装置（以降「第３のチャネル装置２０３ｃ」と表記）にＣＲＣデータの生成及びＣＲＣデータの比較を行わせるようにしている。それにより、ＩＯＰ２０４は、第３のチャネル装置２０３ｃを用いて、第１のチャネル装置２０３ａ及び第２のチャネル装置２０３ｂのうちで故障が発生している方を特定する。ＩＯＰ２０４は、チャネル装置２０３ａ、２０３ｂのうち、故障が発生していると判断されたチャネル装置は閉塞させ、ＳＳＣＨ命令２００を実行させる対象から除外させる。【００４６】
メモリ２０２と第１のチャネル装置２０３ａ間のデータ転送の第２のチャネル装置２０３ｂを用いた監視では、ＣＲＣデータが不一致となっても何れのチャネル装置に故障（エラー）が発生しているのかは特定することが困難である。このため、適切なデータ転送を確実に行わせるには、２台のチャネル装置２０３を閉塞させることが考えられる。しかし、第１のチャネル装置２０３ａと第２のチャネル装置２０３ｂに加え、第３のチャネル装置２０３ｃをＣＲＣデータの比較に用いることにより、故障しているチャネル装置を特定することができる。それにより、２台のチャネル装置２０３ａ、２０３ｂの両方を閉塞させなくとも済む。このことから、チャネル装置をより有効に使用できることとなる。【００４７】
２台のチャネル装置２０３ａ、２０３ｂを共に閉塞させる場合、つまり故障しているチャネル装置２０３を特定できない場合、メモリ２０２とＩＯ装置３０間の適切なデータ転送を確実に行うためには、データ転送を再度行わせる必要がある。しかし、故障しているチャネル装置２０３の特定は、第１のチャネル装置２０３ａによるデータ転送が適切に行われたか否かを特定できることを意味する。このため、再度のデータ転送は必要に応じて行わせれば良いことになる。【００４８】
ＩＯ装置３０とチャネル装置２０３間のデータ転送は、転送対象のデータが大きい程、長い時間が必要である。ＩＯ装置３０と第１のチャネル装置２０３ａ間の不要なデータ転送は、故障しているチャネル装置を特定することにより回避することができる。不要なデータ転送を回避することにより、より効率的なデータ処理をＣＰＵ２０１（クラスタ２０）に実行させることができる。このようなことから、故障しているチャネル装置２０３の特定は、メモリ２０２とチャネル装置２０３間のデータ転送の監視に伴うＣＰＵ２０１の負荷の増大を抑える効果もある。【００４９】
以降は、図１０〜図１５に表す各処理のフローチャートを参照して、チャネル装置２０３、及びＣＰＵ２０１の動作について詳細に説明する。
図１０〜図１２は、チャネル装置２０３が実行する各処理のフローチャートである。図１０は、ＩＯ装置３０からメモリ２０２へのデータ転送を実現させる第１のデータ転送処理のフローチャートである。図１１は、メモリ２０２からＩＯ装置３０へのデータ転送を実現させる第２のデータ転送処理のフローチャートである。図１２は、メモリ２０２とＩＯ装置３０間のデータ転送を行うことなく、ＣＲＣデータの生成及びＣＲＣデータの比較を行うためのＣＲＣ再計算処理のフローチャートである。図１０〜図１２に表す各処理の何れも、ＩＯＰ２０４からＳＣＢ番号を受信することでチャネル装置２０３が実行する処理を抜粋して流れを表したものである。図１０及び図１１の各処理は、ＯＲＢ３０１のＣＲＣ  Ｃｈｅｃｋ  ｂｉｔ３０１ａの値が０に設定されていた場合に実行される。図１２のＣＲＣ再計算処理はＯＲＢ３０１のＣＲＣ  Ｃｈｅｃｋ  ｂｉｔ３０１ａの値が１に設定されていた場合ＣＲＣ計算部４０９が生成したＣＲＣデータがＣＣＷ３０２のＣＲＣデータ３０２ｄと一致しない場合に実行される。【００５０】
始めに図１０を参照して、第１のデータ転送処理について詳細に説明する。
先ず、ステップＳ１１では、入出力制御部４１１は、ＣＣＷ３０２の論理アドレス３０２ｂを仮想アドレスレジスタ４０３に、データ長３０２ａを搬送長レジスタ４０６にそれぞれ格納する。アドレス変換部４０４は論理アドレス３０２ｂを実アドレスに変換して実アドレスレジスタ４０５に書き込み、送受信部４０７はＩＯ装置３０に論理アドレス３０２ｂを送信して、ＩＯ装置３０から転送されるデータをデータバッファ４０８に格納する。この際、送受信部４０７は、対象データ長３０２ｃ分のデータの転送を確認するために、例えば搬送長レジスタ４０６を用いて、ＩＯ装置３０から実際に転送されたデータ長をカウントする。入出力制御部４１１は、実アドレスレジスタ４０５及び搬送長レジスタ４０６を参照して、データバッファ４０８に格納されたデータをメモリ２０２に格納し、ＣＲＣ計算部４０９は、データバッファ４０８に格納されたデータを用いてＣＲＣデータを計算する。入出力制御部４１１は、データバッファ４０８に格納されたデータと、ＣＲＣ計算部４０９が生成したＣＲＣデータを用いてデータ転送を行い、データ転送が完了した後、ステップＳ１２に移行する。【００５１】
ステップＳ１２では、入出力制御部４１１は、搬送長レジスタ４０６に格納されている対象データ長及びＣＲＣ計算部４０９が計算したＣＲＣデータを、ＣＣＷ３０２の対象データ長３０２ｃ及びＣＲＣデータ３０２ｄとしてメモリ２０２に格納する。続くステップＳ１３では、入出力制御部４１１は、ＩＯＰ２０４にＣＣＣを含むメッセージを送信する。その後、この第１のデータ転送処理が終了する。ここでは、ＩＯＰ２０４に送信されるＣＣＣは、チャネル装置２０３にエラーが発生したか否かのみを表す。【００５２】
次に図１１を参照して、第２のデータ転送処理について詳細に説明する。
先ず、ステップＳ２１では、入出力制御部４１１は、ＣＣＷ３０２の論理アドレス３０２ｂを仮想アドレスレジスタ４０３に、データ長３０２ａを搬送長レジスタ４０６にそれぞれ格納する。アドレス変換部４０４は論理アドレス３０２ｂを実アドレスに変換して実アドレスレジスタ４０５に書き込む。そして、入出力制御部４１１は、実アドレスレジスタ４０５及び搬送長レジスタ４０６の各値により指定されるデータ領域４３０のデータを読み出してデータバッファ４０８に格納する。ＣＲＣ計算部４０９は、データバッファ４０８に格納されたデータを用いてＣＲＣデータを計算する。送受信部４０７は仮想アドレスレジスタ４０３を参照し、データバッファ４０８に格納されたデータをＣＲＣデータと共にＩＯ装置３０に送信する。この際、送受信部４０７は、搬送長レジスタ４０６を用いて対象データ長をカウントする。送受信部４０７によるデータバッファ４０８に格納されたデータとＣＲＣ計算部４０９が生成したＣＲＣデータのＩＯ装置３０へのデータ転送が完了した後、ステップＳ２２に移行する。【００５３】
ステップＳ２２では、入出力制御部４１１は、搬送長レジスタ４０６に格納された対象データ長及びＣＲＣ計算部４０９が計算したＣＲＣデータをＣＣＷ３０２の対象データ長３０２ｃ及びＣＲＣデータ３０２ｄとして格納する。続くステップＳ２３では、入出力制御部４１１は、ＩＯＰ２０４にＣＣＣを含むメッセージを送信する。その後、この第２のデータ転送処理が終了する。ここでも、ＩＯＰ２０４に送信されるＣＣＣは、チャネル装置２０３にエラーが発生したか否かのみを表す。【００５４】
最後に図１２を参照して、ＣＲＣ再計算処理について詳細に説明する。
先ず、ステップＳ４１では、入出力制御部４１１は、ＣＣＷ３０２の論理アドレス３０２ｂを読み出して仮想アドレスレジスタ４０３に書き込み、アドレス変換部４０４は論理アドレス３０２ｂを実アドレスに変換して実アドレスレジスタ４０５に書き込む。入出力制御部４１１は、実アドレスレジスタ４０５を参照し、メモリ２０２からデータを読み出してデータバッファ４０８に格納し、ＣＲＣ計算部４０９にデータバッファ４０８に格納したデータに基づいたＣＲＣデータの計算の開始を指示する。【００５５】
ステップＳ４２では、入出力制御部４１１は、ＣＣＷ３０２の対象データ長３０２ｃを読み出して搬送長レジスタ４０６に書き込み、ＣＲＣデータを生成する対象のデータのサイズを搬送長レジスタ４０６に指定することにより、ＣＲＣ計算部４０９にＣＲＣデータを計算させるデータ長を制限させる。その次に移行するステップＳ４３では、入出力制御部４１１は、ＣＲＣ計算部４０９がＣＲＣデータを計算するのを待つ。その後はステップＳ４４に移行する。【００５６】
ステップＳ４４では、入出力制御部４１１は、ＣＲＣ比較部４１０に、ＣＣＷ３０２のＣＲＣデータ３０２ｄとＣＲＣ計算部４０９が計算したＣＲＣデータとを比較させ、その比較結果を受け取り、２つのＣＲＣデータが一致するか否か判定する。２つのＣＲＣデータが一致する場合、判定はＹｅｓとなってステップＳ４５に移行する。２つのＣＲＣデータが不一致の場合、判定はＮｏとなってステップＳ４６に移行する。【００５７】
ステップＳ４５では、入出力制御部４１１は、ＣＣＣの値として０を設定し、ＣＣＣを含むメッセージをＩＯＰ２０４に送信する。その後、ＣＲＣ再計算処理が終了（正常終了）する。一方、ステップＳ４６では、入出力制御部４１１は、ＣＣＣの値として１を設定し、ＣＣＣを含むメッセージをＩＯＰ２０４に送信する。その後、ＣＲＣ再計算処理が終了（異常終了）する。【００５８】
このようにして第２のチャネル装置２０３ｂは、メモリ２０２上で第１のチャネル装置２０３ａがデータ転送の対象としたデータ、つまり第１のチャネル装置２０３ａがデータ転送を行った、或いはデータ転送により格納したデータを用いてＣＲＣデータを生成する。生成したＣＲＣデータを第１のチャネル装置２０３ａが生成したＣＲＣデータ３０２ｄと比較した結果は、上述したように、第２のチャネル装置２０３ｂが第１のチャネル装置２０３ａとメモリ２０２上の同じデータに基づいてＣＲＣデータを生成したか否かを表す。このため、ＣＣＣの１の値は、２台のチャネル装置２０３がメモリ２０２上の同じデータに基づいてＣＲＣデータを生成していないことを表している。【００５９】
エラーの検出によってＣＣＣの値は１とされる。チャネル装置２０３に発生したエラーは、適切な処理の実行を不可能にする。このことから、本実施形態では、ＣＲＣデータが一致するか否かの通知にＣＣＣを用いている。【００６０】
図１３及び図１４は、ＣＰＵ２０１が実行するＩＯ処理のフローチャートである。次に図１３及び図１４を参照して、ＣＰＵ２０１が実行するＩＯ処理について詳細に説明する。このＩＯ処理は、チャネル装置２０３によるデータ転送のためにＣＰＵ２０１が実行する処理を抽出してその流れを表したものである。図１３及び図１４の処理は、ＣＰＵ２０１がメモリ２０２に格納されたプログラムを実行することで実現される。【００６１】
先ず、ステップＳ５１では、ＣＲＣ  Ｃｈｅｃｋ  ｂｉｔの値を０とするＳＳＣＨ命令２００を発行する。ＳＳＣＨ命令２００の発行後はステップＳ５２に移行する。
値が０のＣＲＣ  Ｃｈｅｃｋ  ｂｉｔは、ＣＰＵ２０１によりメモリ２０２上のＯＲＢ３０１、ＳＣＢ４２０、及びＳＳＷ３０３にそれぞれ書き込まれる。ＳＣＢ４２０のＳＣＢ番号はＧＲ２０１ａ及び送信レジスタ２０１ｂを介してＣＰＵ２０１からＩＯＰ２０４に送信され、更にＩＯＰ２０４からＩＯＰ２０４が選択したチャネル装置２０３に送信される。ＳＣＢ番号を受信したチャネル装置２０３は、第１のチャネル装置２０３ａとして動作する。ステップＳ５２では、ＣＰＵ２０１はデータ転送（チャネル装置２０３によるＩＯ処理）の完了を通知する割り込みがチャネル装置２０３により発生するのを待つ。割り込みが発生すると、ステップＳ５３に移行する。【００６２】
ステップＳ５３では、ＣＰＵ２０１は、メモリ２０２上のＳＳＷ３０３を参照し、ＣＲＣ  Ｃｈｅｃｋ  ｂｉｔ３０３ｂの値は０か否か判定する。ＣＲＣ  Ｃｈｅｃｋ  ｂｉｔ３０３ｂの値が０であった場合、判定はＹｅｓとなってステップＳ５４に移行する。ＣＲＣ  Ｃｈｅｃｋ  ｂｉｔ３０３ｂの値が０でなかった場合、つまりＣＲＣ  Ｃｈｅｃｋ  ｂｉｔ３０３ｂの値が更新されていた場合、判定はＮｏとなり、ここでＩＯ処理を異常終了する。【００６３】
ＣＲＣ  Ｃｈｅｃｋ  ｂｉｔ３０３ｂの値を、チャネル装置２０３又はＩＯＰ２０４が更新することはできない。チャネル装置２０３はメモリ２０２にアクセスすることが可能であり、データ転送を完了したチャネル装置２０３はメモリ２０２に必要なデータの書き込みを行う。ＣＲＣ  Ｃｈｅｃｋ  ｂｉｔ３０３ｂの値が更新されたのは、ＣＰＵ２０１がＣＲＣ  Ｃｈｅｃｋ  ｂｉｔ３０３ｂの値をメモリ２０２に書き込んでから読み出すまでの極めて短い期間である。このようなことから、ＣＲＣ  Ｃｈｅｃｋ  ｂｉｔ３０３ｂの値が０でない場合、その期間に動作していたチャネル装置２０３に何らかの故障（エラー）が発生した可能性がある。ＳＳＣＨ命令２００が発行されたチャネル装置２０３はその期間に動作している。それにより、異常終了時には、ＳＳＣＨ命令２００が発行されたチャネル装置２０３、つまり第１のチャネル装置２０３ａは閉塞される。また、データ転送は適切に行われなかったと見なし、ＣＰＵ２０１は、他のチャネル装置２０３に再度データ転送を行わせる。【００６４】
ステップＳ５４では、ＣＰＵ２０１は、ＳＳＷ３０３のＣＣＣ３０３ａの値が０か否かを判定する。ＣＣＣ３０３ａの値が０の場合、判定はＹｅｓとなってステップＳ５６に移行する。ＣＣＣ３０３ａの値が１の場合には、判定はＮｏとなってステップＳ５５に移行し、ＣＰＵ２０１は第１のチャネル装置２０３ａを閉塞させる。その後、ＩＯ処理を異常終了させる。この異常終了時もデータ転送は適切に行われなかったと判断し、ＣＰＵ２０１は、他のチャネル装置２０３に再度データ転送を行わせる。【００６５】
ステップＳ５６では、ＣＰＵ２０１は、領域８００（図８）を参照して、ビジー率が最も低いチャネル装置として、第２のチャネル装置２０３ｂを選択し、ＣＲＣ  Ｃｈｅｃｋ  ｂｉｔの値を１とするＳＳＣＨ命令２００を発行する。ＳＳＣＨ命令２００の発行後はステップＳ５７に移行して、ＣＰＵ２０１は第２のチャネル装置２０３ｂによるＩＯ処理としてデータ転送の完了を通知する割り込みが発生するのを待つ。ＣＰＵ２０１に対する割り込みが発生すると、ステップＳ５８に移行する。【００６６】
ステップＳ５８では、ＣＰＵ２０１は、メモリ２０２上のＳＳＷ３０３を参照し、ＣＲＣ  Ｃｈｅｃｋ  ｂｉｔ３０３ｂの値が０か否か判定する。ＣＲＣ  Ｃｈｅｃｋ  ｂｉｔ３０３ｂの値が０であった場合、つまりＣＲＣ  Ｃｈｅｃｋ  ｂｉｔ３０３ｂの値が更新されていた場合、判定はＹｅｓとなり、ここでＩＯ処理を異常終了する。この異常終了時、例えばＣＰＵ２０１は第２のチャネル装置２０３ｂを閉塞させる。その後は、特には図示していないが、ステップＳ５６から再度、実行するようにしても良い。一方、ＣＲＣ  Ｃｈｅｃｋ  ｂｉｔ３０３ｂの値が０でなかった場合、Ｓ５８の判定はＮｏとなってステップＳ５９に移行する。【００６７】
ステップＳ５９では、ＣＰＵ２０１は、ＳＳＷ３０３のＣＣＣ３０３ａの値が０か否か判定する。ＣＣＣ３０３ａの値が０であった場合、つまり２つのＣＲＣデータが一致した場合、判定はＹｅｓとなり、ここでＩＯ処理を正常終了する。一方、ＣＣＣ３０３ａの値が１の場合には、判定はＮｏとなって図１４のステップＳ６０に移行する。【００６８】
ステップＳ６０では、ＣＰＵ２０１は、領域８００（図８）を参照して、ビジー率が第２のチャネル装置として選択したチャネル装置の次に低いチャネル装置をチャネル装置２０３ｃとしてＩＯＰ２０４に選択させ、ＣＲＣ  Ｃｈｅｃｋ  ｂｉｔの値を１とするＳＳＣＨ命令２００を発行する。ＳＳＣＨ命令２００の発行後はステップＳ６１に移行して、ＣＰＵ２０１は第３のチャネル装置２０３ｃによるＩＯ処理としてデータ転送の完了を通知する割り込みが発生するのを待つ。ＣＰＵ２０１に対する割り込みが発生すると、ステップＳ６２に移行する。【００６９】
ステップＳ６２では、ＣＰＵ２０１は、メモリ２０２上のＳＳＷ３０３を参照し、ＣＲＣ  Ｃｈｅｃｋ  ｂｉｔ３０３ｂの値が０か否か判定する。ＣＲＣ  Ｃｈｅｃｋ  ｂｉｔ３０３ｂの値が０であった場合、つまりＣＲＣ  Ｃｈｅｃｋ  ｂｉｔ３０３ｂの値が更新されていた場合、判定はＹｅｓとなり、ここでＩＯ処理を異常終了する。この異常終了時、上記のように例えばＣＰＵ２０１は第２のチャネル装置２０３ｂを閉塞させる。その後は、図示していないが、ステップＳ６０から再度、実行するようにしても良い。一方、ＣＲＣ  Ｃｈｅｃｋ  ｂｉｔ３０３ｂの値が０でなかった場合、判定はＮｏとなってステップＳ６３に移行する。【００７０】
ステップＳ６３では、ＣＰＵ２０１は、ＳＳＷ３０３のＣＣＣ３０３ａの値が０か否か判定する。ＣＣＣ３０３ａの値が０であった場合、つまり第１のチャネル装置２０３ａと第３のチャネル装置２０３ｃがそれぞれ生成したＣＲＣデータが一致した場合、判定はＹｅｓとなり、ＣＰＵ２０１はステップ６４で第２のチャネル装置２０３ｂを閉塞させた後、ＩＯ処理を正常終了させる。一方、ＣＣＣ３０３ａの値が０でなかった場合には、判定はＮｏとなり、ＣＰＵ２０１はステップ６５で第１のチャネル装置２０３ｂを閉塞させた後、ＩＯ処理を正常終了させる。【００７１】
ステップＳ６３での判定結果がＮｏの場合、第１のチャネル装置２０３ａ及び第２のチャネル装置２０３ｂが共に故障していた場合も考えられる。しかし、２台のチャネル装置２０３が同時に故障する確率は非常に小さい。このため、本実施形態では、第３のチャネル装置２０３ｃを用いることにより、故障が発生したチャネル装置２０３を特定する。【００７２】
図１５及び図１６は、各チャネル装置２０３及びＣＰＵ２０１が実行する処理の流れを表すシーケンス図である。図１５は、第１のチャネル装置２０３ａ及び第２のチャネル装置２０３ｂが共に正常に動作している場合のシーケンス図であり、図１６は、第１のチャネル装置２０３ａが故障している場合のシーケンス図である。次に図１５及び図１６を参照して、各チャネル装置及びＣＰＵ２０１の状況に応じた動作について詳細に説明する。【００７３】
始めに図１５を参照して、第１のチャネル装置２０３ａ、第２のチャネル装置２０３ｂが共に正常動作している場合の動作について詳細に説明する。
ＣＰＵ２０１は、チャネル装置２０３を使ったデータ転送が必要となる状況（図中「データ処理のＩＯ処理待ち」と表記）になるのを待って、ＣＲＣ  Ｃｈｅｃｋ  ｂｉｔの値を０とするＳＳＣＨ命令２００を発行する（ＳＡ１０。図１３のＳ５１）。データ転送が必要となる状況とは、上述したように、ＣＰＵ２０１が実行するプログラムが要求するデータ（ページ）がメモリ２０２上に存在しない状況のことである。このＳＳＣＨ命令２００の発行により、第１のチャネル装置２０３ａは指定されたデータ転送のための処理を実行し（ＳＢ１０。図１０或いは図１１）、データ転送処理の完了が割り込みによってＣＰＵ２０１に通知される。データ転送処理が完了した旨の通知を受け取ったＣＰＵ２０１は、ＳＳＷ３０３を参照することにより、ＣＣＣ３０２ａの値が０であり、且つＣＲＣ  Ｃｈｅｃｋ  ｂｉｔ３０３ｂの値が０であることを確認する（ＳＡ１１。図１３のＳ５４のＹｅｓ判定）。【００７４】
第１のチャネル装置２０３ａへのＳＳＣＨ命令２００の発行後、ＣＰＵ２０１は随時、ＳＳＣＨ命令２００を第１のチャネル装置２０３ａに発行する（ＳＡ２０、ＳＡ３０。図１３のＳ５１）。それにより、第１のチャネル装置２０３ａは、発行されたＳＳＣＨ命令２００に従ってデータ転送を行うための処理を実行する（ＳＢ２０、ＳＢ３０。図１０或いは図１１）。【００７５】
ＣＣＣ３０２ａの値が０であり、且つＣＲＣ  Ｃｈｅｃｋ  ｂｉｔ３０３ｂの値が０であることを確認したＣＰＵ２０１は、最もビジー率の低いチャネル装置を第２のチャネル装置２０３ｂとしてＩＯＰ２０４に選択させ、ＣＲＣ  Ｃｈｅｃｋ  ｂｉｔの値を１とするＳＳＣＨ命令２００を発行する（ＳＡ１２。図１３のＳ５６）。このＳＳＣＨ命令２００の発行により、第２のチャネル装置２０３ｂはＩＯ装置３０とのデータ転送を行うことなく、メモリ２０２から読み出したデータを用いてＣＲＣデータの計算及びＣＲＣデータの比較を実行し（ＳＣ１０。図１２）、ＣＲＣデータの計算及びＣＲＣデータの比較処理を完了した旨が割り込みによってＣＰＵ２０１に通知される。ＣＲＣデータの計算及びＣＲＣデータの比較が完了した旨の通知を受け取ったＣＰＵ２０１は、ＳＳＷ３０３を参照することにより、ＣＣＣ３０２ａの値が０であり、且つＣＲＣ  Ｃｈｅｃｋ  ｂｉｔ３０３ｂの値が１であることを確認する（ＳＡ１３。図１３のＳ５９のＹｅｓの判定）。ＣＣＣ３０２ａの値が０であり且つＣＲＣ  Ｃｈｅｃｋ  ｂｉｔ３０３ｂの値が１である場合には、以降のデータ処理（ＩＯ処理）の実行を継続させる。【００７６】
次に図１６を参照して、第１のチャネル装置２０３ａが故障している場合の動作について詳細に説明する。
ＣＰＵ２０１は、チャネル装置２０３を使ったデータ転送が必要となる状況（図中「データ処理のＩＯ処理待ち」と表記）になるのを待って、ＣＲＣ  Ｃｈｅｃｋ  ｂｉｔの値を０とするＳＳＣＨ命令２００を発行する（ＳＡ４０。図１３のＳ５１）。このＳＳＣＨ命令２００の発行により、第１のチャネル装置２０３ａは指定されたデータ転送のための処理を実行し（ＳＢ２０。図１０或いは図１１）、データ転送処理が完了した旨が割り込みによってＣＰＵ２０１に通知される。データ転送処理が完了した旨の通知を受け取ったＣＰＵ２０１は、ＳＳＷ３０３を参照することにより、ＣＣＣ３０２ａの値が０であり、且つＣＲＣ  Ｃｈｅｃｋ  ｂｉｔ３０３ｂの値が０であることを確認する（ＳＡ４１。図１３のＳ５４のＹｅｓの判定）。【００７７】
第１のチャネル装置２０３ａへのＳＳＣＨ命令２００の発行後、ＣＰＵ２０１は随時、ＳＳＣＨ命令２００を第１のチャネル装置２０３ａに発行する（ＳＡ５０、ＳＡ６０。図１３のＳ５１）。そして、第１のチャネル装置２０３ａは、発行されたＳＳＣＨ命令２００に従ってデータ転送を行うための処理を実行する（ＳＢ５０、ＳＢ６０。図１０或いは図１１）。【００７８】
ＣＣＣ３０２ａの値が０であり、且つＣＲＣ  Ｃｈｅｃｋ  ｂｉｔ３０３ｂの値が０であることを確認したＣＰＵ２０１は、最もビジー率の低いチャネル装置として第２のチャネル装置２０３ｂとしてＩＯＰ２０４に選択させ、ＣＲＣ  Ｃｈｅｃｋ  ｂｉｔの値を１とするＳＳＣＨ命令２００を発行する（ＳＡ４２。図１３のＳ５６）。このＳＳＣＨ命令２００の発行により、第２のチャネル装置２０３ｂはＩＯ装置３０とのデータ転送を行うことなく、メモリ２０２から読み出したデータを用いてＣＲＣデータの計算及びＣＲＣデータの比較を行うための処理を実行し（ＳＣ４０。図１２）、ＣＲＣデータの計算及びＣＲＣデータの比較を行うための処理が完了した旨の通知が割り込みによってＣＰＵ２０１に通知される。ＣＲＣデータの計算及びＣＲＣデータの比較を行うための処理が完了した旨の通知を受け取ったＣＰＵ２０１は、ＳＳＷ３０３を参照することにより、ＣＣＣ３０２ａの値が１であり、且つＣＲＣ  Ｃｈｅｃｋ  ｂｉｔ３０３ｂの値が１であることを確認する（ＳＡ４３。図１３のＳ５９のＮｏの判定）。【００７９】
ＣＣＣ３０２ａの値が１であり、且つＣＲＣ  Ｃｈｅｃｋ  ｂｉｔ３０３ｂの値が１であることを確認したＣＰＵ２０１は、次にビジー率の低いチャネル装置を第３のチャネル装置２０３ｃとしてＩＯＰ２０４に選択させ、ＣＲＣ  Ｃｈｅｃｋ  ｂｉｔの値を１とするＳＳＣＨ命令２００を再度発行する（ＳＡ４４。図１４のＳ６０）。このＳＳＣＨ命令２００の再発行により、第３のチャネル装置２０３ｃはＩＯ装置３０とのデータ転送を行うことなく、メモリ２０２から読み出したデータを用いてＣＲＣデータの計算及びＣＲＣデータの比較を行うための処理を実行し（ＳＤ４０。図１２）、ＣＲＣデータの計算及びＣＲＣデータの比較を行うための処理の完了した旨の通知が割り込みによってＣＰＵ２０１に通知される。その通知を受け取ったＣＰＵ２０１は、ＳＳＷ３０３を参照することにより、ＣＣＣ３０２ａの値が１であり、且つＣＲＣ  Ｃｈｅｃｋ  ｂｉｔ３０３ｂの値が１であることを確認する（ＳＡ４５。図１４のＳ６３のＮｏ判定）。このため、ＣＰＵ２０１は、第１のチャネル装置２０３ａを閉塞させる閉塞処理を実行する（ＳＡ４６。図１４のＳ６５）。なお、ＣＰＵ２０１がＣＣＣ３０２ａの値が０であり、且つＣＲＣ  Ｃｈｅｃｋ  ｂｉｔ３０３ｂの値が１であることを確認した場合、ＣＰＵ２０１は、第２のチャネル装置２０３ａを閉塞させる閉塞処理を実行する（ＳＡ４６。図１４のＳ６４）。【００８０】
なお、本実施形態では、ＳＳＣＨ命令に機能を追加し、２台の記憶装置間のデータ転送を行うことなく、ＣＲＣデータの生成及びＣＲＣデータの比較を指示できるようにしている。これは、ＣＰＵ２０１及びＩＯＰ２０４等を含め、制御内容の変更をできるだけ少なくするためである。ＣＲＣデータの生成及びＣＲＣデータの比較の指示は、例えば、新たな命令を追加して行わせるようにしても良い。また、チャネル装置２０３とＣＰＵ２０１間での必要なデータや命令の送受信方法も、本実施形態に特に限定されるものではない。【００８１】
本実施形態による情報処理システム及び情報処理装置は、チャネル装置２０３を用いて実現させているが、チャネル装置２０３以外のデータ転送装置を用いて実現させても良い。例えばデータ転送装置は、実際に転送するデータの格納場所を特定する機能が搭載されているＤＭＡ（Direct Memory Access）コントローラであっても良い。つまり、データ転送装置は、データ転送のために何らかの演算処理、或いは操作を行う機能が搭載されたものであれば良い。
【図１】
2012108023.tif 000003
【図２】
2012108023.tif 000004
【図３】
2012108023.tif 000005
【図４】
2012108023.tif 000006
【図５】
2012108023.tif 000007
【図６Ａ】
2012108023.tif 000008
【図６Ｂ】
2012108023.tif 000009
【図７】
2012108023.tif 000010
【図８】
2012108023.tif 000011
【図９】
2012108023.tif 000012
【図１０】
2012108023.tif 000013
【図１１】
2012108023.tif 000014
【図１２】
2012108023.tif 000015
【図１３】
2012108023.tif 000016
【図１４】
2012108023.tif 000017
【図１５】
2012108023.tif 000018
【図１６】
2012108023.tif 000019
【国際調査報告】
2012108023.tif 000020
2012108023.tif 000021