JPWO2012108023A1 - 情報処理装置、情報処理システム及びデータ転送方法 - Google Patents
情報処理装置、情報処理システム及びデータ転送方法 Download PDFInfo
- Publication number
- JPWO2012108023A1 JPWO2012108023A1 JP2012556705A JP2012556705A JPWO2012108023A1 JP WO2012108023 A1 JPWO2012108023 A1 JP WO2012108023A1 JP 2012556705 A JP2012556705 A JP 2012556705A JP 2012556705 A JP2012556705 A JP 2012556705A JP WO2012108023 A1 JPWO2012108023 A1 JP WO2012108023A1
- Authority
- JP
- Japan
- Prior art keywords
- data
- data transfer
- channel device
- error
- crc
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1004—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Debugging And Monitoring (AREA)
Abstract
本発明を適用した1システムは、データを記憶する記憶装置と、命令を発行する演算処理装置と、演算処理装置が発行したデータ転送命令に従ってデータ転送を行うデータ転送装置を有する。データ転送装置は、演算処理装置が発行したデータ転送命令を受けた場合に、記憶装置が記憶するデータに基づき、データのエラーを検出する第1のエラー検査データを生成するとともに、データと第1のエラー検査データを入出力装置に転送し、演算処理装置が発行したデータ検査命令を受けた場合に、記憶装置が記憶するデータに基づき、データのエラーを検出する第2のエラー検査データを生成するとともに、他のデータ転送装置が生成した第1のエラー検査データと第2のエラー検査データを比較した結果が不一致である場合に、演算処理装置にエラーが発生した旨の通知を行なう。
Description
本発明は、情報処理装置、情報処理システム及びデータ転送方法に関する。
コンピュータ等の情報処理装置は、必要なデータを主記憶装置に格納して処理を行う。情報処理装置の主記憶装置に格納するデータは、当該情報処理装置に接続された外部記憶装置及び光ディスク等の記録媒体にアクセスする媒体駆動装置、或いは伝送路を介して接続された他の情報処理装置に接続された入出力装置(以降「IO(Input Output)装置」と総称)から転送される。このデータ転送を行うために、情報処理装置にはデータ転送装置が一台以上搭載される。情報処理装置、及びこの情報処理装置との間でデータの入出力を行うIO装置を含む構成の情報処理システムは、情報処理装置に備えられたデータ転送装置を用いて、情報処理装置の主記憶装置とIO装置間のデータ転送を行う。
図1は、従来の情報処理システムで行われるデータ転送を説明する図である。
コンピュータ等の情報処理装置1は、演算処理装置であるCPU(Central Processing Unit)11、主記憶装置であるメモリ12、データ転送装置である複数のチャネル装置13、及び各チャネル装置13の動作を制御するIOプロセサ(IOP:Input Output Processor)14を備えている。図1に表す例では、各チャネル装置13は、メモリ12と、情報処理装置1と接続されたIO装置2との間でデータ転送を行う。
コンピュータ等の情報処理装置1は、演算処理装置であるCPU(Central Processing Unit)11、主記憶装置であるメモリ12、データ転送装置である複数のチャネル装置13、及び各チャネル装置13の動作を制御するIOプロセサ(IOP:Input Output Processor)14を備えている。図1に表す例では、各チャネル装置13は、メモリ12と、情報処理装置1と接続されたIO装置2との間でデータ転送を行う。
各チャネル装置13は、データ転送を行う場合、IO装置2との間で、データ、及びCRC(Cyclic Redundancy Check:巡回冗長検査)データの送受信を行う。CRCデータは、送受信されるデータを用いて生成されるデータである。CRCデータの内容は、生成に用いるデータの内容に依存して変化する。このことから、CRCデータは、送受信するデータにエラー、つまり送受信するデータが正しいか否かを確認できるように加えられている。
チャネル装置13及びIO装置2のなかでデータ及びCRCデータを受信する受信側は、受信したデータを用いてCRCデータを生成し、生成したCRCデータを受信したCRCデータと比較する。この比較により、受信側は、生成したCRCデータと受信したCRCデータが不一致の場合に、受信したデータにエラーが有ると判断する。このようにして、チャネル装置13とIO装置2間では、CRCデータを用いて適切なデータの送受信が実現されている。それにより、チャネル装置13とIO装置2間において転送されるデータは、CRCデータによる保護対象となっている。
メモリ12上の本来のデータ領域12aは、メモリ12上で転送の対象となるデータが格納された領域、或いは転送されたデータを格納する領域である。この本来のデータ領域12aは、この本来のデータ領域12aの先頭を表す開始アドレス、及びデータ長(例えばバイト数)により指定される。この本来のデータ領域12aにアクセスさせるために、CPU11は例えばIOP14を介してチャネル装置13に対し、開始アドレス、及びデータ長を指定しての転送指示を行う。
例えばチャネル装置13とIO装置2との間のデータ転送は適切に行えるが、メモリ12の本来のデータ領域12aに適切にアクセスできない故障が、チャネル装置13に発生する可能性がある。メモリ12の本来のデータ領域12aにアクセスできない故障が発生した場合には、チャネル装置13とIO装置2間のデータ転送についてCRCデータを用いてエラーを監視してもチャネル装置13がメモリ12のデータ領域12aにアクセスできない故障を検出することはできない。
情報処理装置に、仮想記憶装置が実装される場合がある。仮想記憶装置が実装された情報処理装置では、物理的な記憶装置にアクセスを行なう際に用いられる実アドレス(物理アドレス)の他に、仮想空間にアクセスを行なう際に用いられるアドレスである論理アドレス(仮想アドレス)が用いられる。仮想記憶装置が実装された情報処理装置では、実アドレスと論理アドレスの2つの異なるアドレスが用いられることから、チャネル装置には論理アドレスを実アドレスに変換するアドレス変換機能が搭載される。例えば、このアドレス変換機能が故障したチャネル装置13では、メモリ12の本来のデータ領域12aにアクセスできない。このようなことから、適切なデータ転送をより確実に行うためには、従来、監視していたチャネル装置13とIO装置2間のデータ転送の範囲以外のデータ転送も監視すべきと云える。
本発明は、情報処理装置の主記憶装置と入出力装置間における適切なデータ転送をより確実に行うための技術を提供することを目的とする。
本発明を適用した1システムは、データを記憶する記憶装置と、命令を発行する演算処理装置と、演算処理装置が発行したデータ転送命令を受けた場合に、記憶装置が記憶するデータに基づき、データのエラーを検出する第1のエラー検査データを生成するとともに、データと第1のエラー検査データを入出力装置に転送し、演算処理装置が発行したデータ検査命令を受けた場合に、記憶装置が記憶するデータに基づき、データのエラーを検出する第2のエラー検査データを生成するとともに、他のデータ転送装置が生成した第1のエラー検査データと第2のエラー検査データを比較した結果が不一致である場合に、演算処理装置にエラーが発生した旨の通知を行なうデータ転送装置を有する。
本発明を適用した情報処理システムでは、主記憶装置と入出力装置間での適切なデータ転送をより確実に行うことができる。
以下、本発明の実施形態について、図面を参照しながら詳細に説明する。
図2は、本実施形態による情報処理システムの構成を説明する図である。
情報処理システムは、それぞれが1台のコンピュータ(情報処理装置)に相当する複数のクラスタ20、複数台のIO装置30及びクラスタ20とIO装置30を接続するスイッチ40を含む構成である。図2にはクラスタ番号が0のクラスタ20aと直接接続されているIO装置30は1台のみである。また、クラスタ番号が1のクラスタ20bと直接接続されているIO装置30は図示していないが、各クラスタ20と直接接続されるIO装置30が存在しても良い。IO装置30は、例えばハードディスク装置、光ディスク装置、或いは複種類の記憶装置を管理するファイルサーバ等のファイル装置である。IO装置30は、ネットワークを介して接続される外部装置であっても良い。
図2は、本実施形態による情報処理システムの構成を説明する図である。
情報処理システムは、それぞれが1台のコンピュータ(情報処理装置)に相当する複数のクラスタ20、複数台のIO装置30及びクラスタ20とIO装置30を接続するスイッチ40を含む構成である。図2にはクラスタ番号が0のクラスタ20aと直接接続されているIO装置30は1台のみである。また、クラスタ番号が1のクラスタ20bと直接接続されているIO装置30は図示していないが、各クラスタ20と直接接続されるIO装置30が存在しても良い。IO装置30は、例えばハードディスク装置、光ディスク装置、或いは複種類の記憶装置を管理するファイルサーバ等のファイル装置である。IO装置30は、ネットワークを介して接続される外部装置であっても良い。
各クラスタ20には、仮想記憶装置が実装されている。各クラスタ20は、CPU201、主記憶装置であるメモリ202、データ転送装置である複数のチャネル装置203、各チャネル装置の動作を制御するIOプロセサ(IOP)204、及び割り込み機構205を備えている。チャネル装置203が行うデータ転送の完了は割り込み機構205を介してCPU201に通知される。図2には、クラスタ20に内蔵された4台のチャネル装置203を表しているが、より多くのチャネル装置203が各クラスタ20に搭載されていても良い。仮想記憶装置は、例えばCPU201に搭載されたメモリ管理装置等のハードウェア(例えばMMU:Memory Management Unit)と、CPU201が実行するオペレーティング・システム(Operating System)とが協調することで実現される。
CPU201は、チャネル装置203にデータ転送を行わせる場合、SSCH(Start Sub Channel)命令を、IOP204を介してチャネル装置203に発行する。本実施形態では、SSCH命令を実行させるチャネル装置203とは異なるチャネル装置203に、メモリ202上でデータ転送の対象となったデータにアクセスさせ、そのデータの内容に応じた識別情報を生成させる。生成された識別情報は、実際にデータ転送を行ったチャネル装置203が生成した識別情報と比較される。識別情報はデータの内容に依存して内容が変化するものであれば良い。本実施形態では、識別情報の例としてCRC(Cyclic Redundancy Check)データを用いる。
CPU201が実行するプログラムがメモリ202にアクセスする場合、CPU201はプログラムにおいて指定された論理アドレスをメモリ202上の実アドレスに変換し、変換した実アドレスを含むページがメモリ202上に存在するか否かを確認する。CPU201によるSSCH命令の発行は、変換した実アドレスを含むページがメモリ202上に存在しないことが確認された場合に、メモリ202に存在しない実アドレスを含むページをIO装置30から取得するために行われる。
各クラスタ20では、実装された仮想記憶装置により、物理的な主記憶装置であるメモリ202にアクセスを行なう際に用いられる実アドレス(物理アドレス)の他に、仮想空間にアクセスを行なう際に用いられる論理アドレス(仮想アドレス)が用いられる。論理アドレスは、IO装置30へのアクセスに用いられる。各チャネル装置は、論理アドレスを実アドレスに変換するアドレス変換機能を有する。このアドレス変換機能に故障が発生したチャネル装置203は、メモリ202との間で適切なデータ転送を行うことができない。つまりチャネル装置203がメモリ202へのアクセス、より具体的には、メモリ202からのデータの読み出し、或いはメモリ202へのデータの書き込みを適切に行えない可能性がある。しかし、互いに同じクラスタ内に設けられた、SSCH命令を実行したチャネル装置203及び別のチャネル装置203が共にメモリ202が記憶する同じデータへのアクセスを適切に行えた場合、各チャネル装置はメモリ202が記憶する同じデータにアクセスすることから、各チャネル装置203が生成する識別情報(CRCデータ)は一致することになる。このため、各チャネル装置が生成したCRCデータを比較することにより、実際にデータ転送を行ったチャネル装置203がメモリ202との間のデータ転送を適切に行ったか否かを確認することができる。
本実施形態では、CRCデータの比較を、データ転送を行なったチャネル装置203とは異なる別のチャネル装置203に行わせている。データ転送を行なったチャネル装置203とは異なる別のチャネル装置203にCRCデータの比較を行わせることにより、メモリ202とチャネル装置203間のデータ転送を監視するために生じるCPU201の負荷の増大を抑えている。データ転送を行なったチャネル装置203とは異なる別のチャネル装置をデータ転送の監視に利用可能な資源として用いるのは、チャネル装置は多数、情報処理装置に搭載されるのが普通であることも理由の一つである。CPU201の負荷が比較的に軽いような場合、CPU201にCRCデータの比較を行わせるようにしても良い。この場合、別のチャネル装置203に生成させたCRCデータは後述する図3のメモリ202のCCW(Channel Command Word)302に格納することにより、CPU201が取得可能にしても良い。
チャネル装置203は、メモリ202上に格納されたデータに基づいてCRCデータを生成する。これは、メモリ202へのアクセスはIO装置30と比較して高速に行えるということの他に、各チャネル装置の変換機能に不具合が存在する場合、メモリ202の適切な場所にアクセスできない可能性がある、ということも理由の一つである。
図3は、本実施形態におけるSSCH命令が用いるメモリ202に格納された制御データの構成を説明する図である。
SSCH命令200は、メモリ202の各領域に格納された、ORB(Operation Request Block)301、CCW302、及びSSW(Subchannel Status Word)303の制御データを用いてデータ転送を指示する命令である。ORB301は、チャネル装置203のスタート機能の制御に用いられる制御データである。CCW302は、データ転送の詳細な内容を指定に用いられる制御データである。SSW303は、チャネル装置203の状態の確認を可能とさせる。
SSCH命令200は、メモリ202の各領域に格納された、ORB(Operation Request Block)301、CCW302、及びSSW(Subchannel Status Word)303の制御データを用いてデータ転送を指示する命令である。ORB301は、チャネル装置203のスタート機能の制御に用いられる制御データである。CCW302は、データ転送の詳細な内容を指定に用いられる制御データである。SSW303は、チャネル装置203の状態の確認を可能とさせる。
ORB301には、CRC Check bit301a、及びCPA(Channel Program Address)301bが格納される。CRC Check bit301aは、データ転送を行うSSCH命令200の実行、及びデータ転送を行わないSSCH命令200の実行のうちの何れかを選択的にチャネル装置203に実行させるための命令である。例えばCRC Check bit301aの値が0の場合はデータ転送の実行を指示し、1の場合はデータ転送を行うことなくCRCデータの生成及びCRCデータの比較の実行を指示する。CPA301bは、参照すべきCCW302の格納場所を表すポインタである。
CCW302には、データ長(Byte Count)302a、論理アドレス(Logical Data Address)302b、対象データ長(CRC Byte Count)302c及びCRCデータ302dが格納される。データ長302aは、データ転送用に指定されたデータのバイト数である。対象データ長302cは、実際に転送されたデータのバイト数である。対象データ長302cはCRCデータ302dと共に、SSCH命令200を実行したチャネル装置203によって格納される。論理アドレス302bは、データを読み出す、或いは書き込むIO装置30上の場所を指定する。以降、便宜的に、データ転送を指示するSSCH命令200を実行するチャネル装置203は第1のチャネル装置203a、データ転送を行わずにCRCデータの生成及びCRCデータの比較を指示するSSCH命令200を実行するチャネル装置は第2のチャネル装置203bと表記する。
SSW303には、CCC(Channel Control Check)303a及びCRC Check bit303bが格納される。CCC303aは、エラーの発生の通知の他に、CRCデータが一致したか否かの通知に用いられる。このため、CCC303aは、SSCH命令200を実行する全てのチャネル装置によって更新される可能性がある。CRC Check bit303bは、ORB301からコピーされたCRCデータであり、チャネル装置203による更新対象外である。
本実施形態では、上記のような構成のSSCH命令200をチャネル装置203がORB301のCRC Check bit301aの値に応じて実行する。それにより、チャネル装置203にデータ転送を指示するSSCH命令200実行させ、或いはチャネル装置203にデータ転送を実行させずにCRCデータの生成およびCRCデータの比較を指示するSSCH命令200を実行させる。
図3のデータ構成は、本実施形態の説明に必要なデータを抜粋して表しているため、図3はORB301、CCW302、及びSSW303の全てのデータ構成を表していない。例えば、データ転送を行う場合、データ転送すべきデータが格納された記憶装置を特定する情報が必要である。この情報は図3には表していない。この情報は、例えばCCW302内に格納される。
また、SSCH命令200の実行には、図4に表すSCB(Sub Channel Block)420が必要である。このSCB420は、チャネル装置203の制御用に用いられる制御データであり、メモリ202上に確保された領域に格納されている。CPU201は、汎用レジスタ(GR:General Register)201aに格納されたSCB420を指定するSCB番号を用いてSSCH命令200を実行する。CPU201がSSCH命令200を実行すると、GR201aに格納されたSCB番号が、IOP204に送信するための送信レジスタ201bに格納され、送信レジスタ201bに格納したSCB番号がIOP204に送信される。IOP204の詳細は後述する。SSCH命令200の実行時、CPU201はORB301を参照して、CRC Check bit301a、及びCPA301bをSCB420にコピーする。このため、チャネル装置203がSSCH命令200を実行する際、SCB420には、ORB301からコピーされたCRC Check
bit301aがCRC Check bit421として存在する。また、CPA301bが、CRC Check bit421及びCPA422としてSCB410に存在する。
bit301aがCRC Check bit421として存在する。また、CPA301bが、CRC Check bit421及びCPA422としてSCB410に存在する。
図4は、本実施形態によるチャネル装置203の構成を説明する図である。次に上記のようなSSCH命令200を実行するチャネル装置203の構成について、図4を参照して具体的に説明する。
チャネル装置203は、図4に表すように、受信レジスタ401、送信レジスタ402、仮想アドレスレジスタ403、アドレス変換部404、実アドレスレジスタ405、転送長レジスタ406、送受信部407、データバッファ408、CRC計算部409、CRC比較部410及び入出力制御部411を備えている。
CPU201のGR201aに格納されたSCB番号は、送信レジスタ201bを介してIOP204に送信され、受信レジスタ204aに格納される。このSCB番号のIOP204への送信により、CPU201側のSSCH命令200の処理は完了する。受信レジスタ204aに格納されたSCB番号は、送信レジスタ204bを介してチャネル装置203に送信される。受信レジスタ401は、IOP204から送信されたSCB番号の受信用である。送信レジスタ402は、SSCH命令200の実行完了を通知するメッセージの格納用である。送信レジスタ402に格納されたメッセージは入出力部411を介してIOP204に送信され、受信レジスタ204cに格納される。IOP204は、受信レジスタ204cにメッセージが格納された後、割り込み機構205にCPU201への割り込みを指示することにより、チャネル装置203のSSCH命令200の実行完了をCPU201に通知させる。この通知は、例えばCPU201が備えた割り込み通知用の対応するレジスタ(不図示)の値を書き換えることで行われる。
上記入出力制御部411は、クラスタ20内の他の構成要素、つまりメモリ202やIOP204との間でデータの入出力を行い、チャネル装置203全体の制御を行う。メモリ202上のデータ転送の対象となるデータが格納される領域へのアクセスは、入出力制御部411が実アドレスレジスタ405及び搬送長レジスタ406を参照して行う。また、チャネル装置203の動作頻度を評価し、その評価結果をメモリ202に格納する。本実施形態では、動作頻度(ビジー率)として、1秒あたりの動作時間を算出する。動作頻度を表す情報は、1秒あたりの動作時間以外のものであっても良い。
仮想アドレスレジスタ403には、入出力制御部411によって、CCW302に格納された論理アドレス302bが書き込まれる。アドレス変換部404は、論理アドレス302を実アドレスに変換し、変換した実アドレスを実アドレスレジスタ405に書き込む。第1のチャネル装置203aでは、搬送長レジスタ406に、CCW302のデータ長302aが書き込まれる。IO装置30との間でデータ転送を行う段階では、搬送長レジスタ406は実際に転送したデータのバイト数のカウントに用いられる。このため、第1のチャネル装置203aは、CCW302の対象データ長302cとして、搬送長レジスタ406の値を書き込む。第2のチャネル装置203bでは、搬送長レジスタ406には始めから対象データ長302cが書き込まれる。
送受信部407は、IO装置30との間でデータ転送を行う。このデータ転送は、仮想アドレスレジスタ403を参照して行われる。このデータ転送が行われるのは第1のチャネル装置203aのみである。
データバッファ408は、IO装置30との間でデータ転送を行なうデータ、或いはCRCデータの生成に用いるデータの格納に用いられる。CRC計算部409は、データバッファ308に格納されたデータを用いてCRCデータを生成する。第1のチャネル装置203aでは、CRC計算部409がデータバッファ308に格納されたデータに基づいて生成したCRCデータがCCW302のCRCデータ302dとして書き込まれる。IO装置30にデータを転送する場合、このCRCデータ302dはデータバッファ308に格納されたデータと共にIO装置30に送信される。データ領域430は、データ転送によりメモリ202にデータを書き込む領域、或いはメモリ202からデータを読み出す領域である。
CRC比較部410は、チャネル装置が第2のチャネル装置203bであった場合、CRC計算部409が生成したCRCデータを、CCW302のCRCデータ302dと比較する。この比較結果に応じて、SSW303のCCC303aの値が更新される。つまり比較結果が不一致であれば、CCC302aの値は1と書き換えられ、比較結果が一致であれば、書き換えは行われず、CCC302aの値は0のままとなる。チャネル装置203に何らかのエラーが発生したことを原因として、CRC計算部409が生成したCRCデータがCCW302のCRCデータ302dと一致しない場合には、CCC302aの値は1とされる。チャネル装置がIO装置30からデータを受信する第1のチャネル装置203aとして動作する場合、CRC比較部410は、IO装置30から受信されるCRCデータをCRC計算部409が生成したCRCデータと比較する。チャネル装置がIO装置30にデータを送信する第1のチャネル装置203aとして動作する場合、CRCデータを比較する必要がないことから、CRC比較部410は機能しない。
CCC302aは、送信レジスタ402にメッセージの一部として格納される。それにより、CCW302のCCC302aの書き込みは、IOP204が行う。
図5は、アドレス変換部の構成、及び動作を説明する図である。アドレス変換部404は、図5に表すように、操作部501、セグメントテーブルレジスタ502、セグメントエントリレジスタ503を備えている。
図5は、アドレス変換部の構成、及び動作を説明する図である。アドレス変換部404は、図5に表すように、操作部501、セグメントテーブルレジスタ502、セグメントエントリレジスタ503を備えている。
図5に表すように、メモリ202上にはセグメントテーブル510及びページテーブル520が格納されている。セグメント及びページは共に、仮想的なデータのオブジェクトであり、セグメントはページよりも大きい範囲を対象とする単位である。セグメントテーブル510及びページテーブル520は、論理アドレスから実アドレスを求めるためのデータが各エントリに格納されている。より具体的には、図6Aに表すように、セグメントテーブル510のエントリには対応するページテーブル520の格納場所(例えば先頭アドレス)を表すポインタが格納されている。ページテーブル520のエントリには、20ビットの論理アドレス基本部、及び8ビットの論理アドレス拡張部が格納されている。
論理アドレスレジスタ403に格納される論理アドレス302bは、上位のほうから、セグメントテーブル510中のエントリを指定する11ビットの部分アドレス、ページテーブル520中のエントリを指定する8ビットの部分アドレス、及び実アドレスとして用いられる12ビットの部分アドレスを含む。セグメントテーブルレジスタ502には、セグメントテーブル510の格納場所(例えば先頭アドレス)を表すポインタが格納されている。
操作部501は、セグメントテーブルレジスタ502、及び仮想アドレスレジスタの11ビットの部分アドレスを参照して、セグメントテーブル510の1エントリのデータを読み出し、セグメントエントリレジスタ503に格納する。次に、セグメントエントリレジスタ503の部分アドレス(ポインタ)、及び仮想アドレスレジスタの8ビットの部分アドレスを参照して、ページテーブル520の1エントリのデータ、つまり論理アドレス基本部及び論理アドレス拡張部を読み出す。読み出した論理アドレス拡張部は、上位8ビットの部分アドレスとして実アドレスレジスタ405に格納し、論理アドレス基本部は上位8ビットに続く20ビットの部分アドレスとして格納する。論理アドレス基本部の下位のアドレスとして、論理アドレスの下位12ビットの部分アドレスを格納する。そのようにして操作部501は、論理アドレスレジスタ403に格納された論理アドレスに対応する実アドレスを実アドレスレジスタ405に書き込む。
本実施形態では、8ビットの論理アドレス基本部は固定値となっている。それにより、入出力制御部411は、実アドレスレジスタ405の上位8ビットの値を論理アドレス基本部の固定値と比較し、実アドレスレジスタ405の上位8ビットの値と論理アドレス基本部の固定値が異なっている場合に、エラーが発生していると見なす。
図7は、SSCH命令によるデータ転送が行われるシーケンスを表す図である。ここで図7を参照して、データ転送のシーケンスについて詳細に説明する。
SSCH命令200を実行する場合、CPU201はORB301を参照し、ORB301に格納されているCRC Check bit301aを、SCB420のCRC Check bit421として書き込むとともに、ORB301に格納されているCPA301bを、SCB420のCPA422として書き込む(シーケンスS1)。次にCPU201は、CRC Check bit421及びCPA422を書き込んだSCB420のSCB番号をGR201aに格納し、GR201aに格納したSCb番号を送信レジスタ201bに書き込み、IOP204に送信する(シーケンスS2)。この送信により、CPU201のSSCH命令200の処理は完了する。
IOP204は、CPU201からSCB番号を受信すると、関連するPMCW(Path Management Control Word)710を参照し、チャネルパスID(CHPID:Channel Path Identification)、つまり第1のチャネル装置として動作させるチャネル装置を選択する(シーケンスS3)。以下、選択したチャネル装置を「第1のチャネル装置203a」と称する。PMCW710は、SSCH命令200を処理させるチャネル装置を管理するためのものである。SSCH命令200を処理可能なチャネル装置のそれぞれに識別情報として割り当てたチャネルパスIDが格納されている。図7中の「CHPID0」「CHPID1」等はそれぞれ異なるチャネルパスIDを表している。
SSCH命令200を実行する場合、CPU201はORB301を参照し、ORB301に格納されているCRC Check bit301aを、SCB420のCRC Check bit421として書き込むとともに、ORB301に格納されているCPA301bを、SCB420のCPA422として書き込む(シーケンスS1)。次にCPU201は、CRC Check bit421及びCPA422を書き込んだSCB420のSCB番号をGR201aに格納し、GR201aに格納したSCb番号を送信レジスタ201bに書き込み、IOP204に送信する(シーケンスS2)。この送信により、CPU201のSSCH命令200の処理は完了する。
IOP204は、CPU201からSCB番号を受信すると、関連するPMCW(Path Management Control Word)710を参照し、チャネルパスID(CHPID:Channel Path Identification)、つまり第1のチャネル装置として動作させるチャネル装置を選択する(シーケンスS3)。以下、選択したチャネル装置を「第1のチャネル装置203a」と称する。PMCW710は、SSCH命令200を処理させるチャネル装置を管理するためのものである。SSCH命令200を処理可能なチャネル装置のそれぞれに識別情報として割り当てたチャネルパスIDが格納されている。図7中の「CHPID0」「CHPID1」等はそれぞれ異なるチャネルパスIDを表している。
チャネル装置203を選択したIOP204は、SCB番号を第1のチャネル装置として選択したチャネル装置203に送信する(シーケンスS4)。選択された第1のチャネル装置203aは、IOP204からのSCB番号を受信することにより起動し、起動した第1のチャネル装置203aはCCW302を参照して、メモリ202とIO装置30間のデータ転送を行う(シーケンスS5)。このデータ転送を行った後、第1のチャネル装置203aは、送信レジスタ402及び入出力制御部411を介して、CCC302aを含むメッセージをIOP204に送信する(シーケンスS6)。IOP204は、受信したCCC302aをSSW303に格納し、割り込み機構205にデータ転送の完了の通知を指示する(シーケンスS7)。割り込み機構205は、CPU201に対し、データ転送の完了を通知する割り込み信号を出力する(シーケンスS8)。
割り込み信号によってCPU201が備えた割り込み通知用レジスタの値が書き換えられる。割り込み通知用レジスタの値の書き換えによってデータ転送の完了が通知されたCPU201は、次に、メモリ202と第1のチャネル装置203a間のデータ転送が適切に行われたか否かを確認するために第2のチャネル装置203bにCRCデータの生成および比較を行わせる。第2のチャネル装置203bの選択は、第1のチャネル装置203a以外の各チャネル装置のビジー率、例えば1秒あたりのチャネル装置の動作時間を参照して行う。本実施形態では、図8に表すように、メモリ202上に領域800を確保し、この領域800内に各チャネル装置203による1秒あたりの動作時間811を格納する個別領域810を用意している。このことから、CPU201は、個別領域810を参照することにより、最もビジー率に余裕のあるチャネル装置、つまり1秒あたりの動作時間811が最も小さいチャネル装置を第2のチャネル装置203bとして選択する。ビジー率が最も低いチャネル装置を第2のチャネル装置203bとして選択することにより、第1のチャネル装置203aによるデータ転送の結果の確認を最小限の時間で行えるようになる。ビジー率を表す1秒あたりの動作時間811は、その値が大きくなる程、チャネル装置203が高頻度に用いられていることを表している。第2のチャネル装置203の選択は、例えば、実行中のSSCH命令200の有無、或いは/及び、実行待ちとなっているSSCH命令200の数を考慮して行うようにしても良い。
図9は、本実施形態によりデータ転送が監視される範囲を説明する図である。図9に表すように、チャネル装置203とIO装置30間はデータに付されたCRCデータにより、データ転送が適切に行われたか否かが確認される。メモリ202とチャネル装置203間は、例えば2台(複数)のチャネル装置のうち、第1のチャネル装置として選択されたチャネル装置にはデータ転送を実際に行うSSCH命令200を実行させるとともに、第2のチャネル装置として選択されたチャネル装置にはデータ転送を行なわないSSCH命令200を実行させることにより、CRCデータを介してデータ転送が適切に行われたか否かが確認される。2台のチャネル装置203a、203bのうちの何れかが、本来のデータ領域430以外の誤ったデータ領域530にアクセスした場合、各チャネル装置203a、203bが生成するCRCデータが異なるため、実際に行われたデータ転送が不適切である可能性がある。すなわち、各チャネル装置203a、203bが生成するCRCデータを比較することにより、不適切に行われた可能性のあるメモリ202とチャネル装置203間のデータ転送を検出することができる。
本実施形態では、2台のチャネル装置203a、203bがそれぞれ生成したCRCデータが不一致となった場合、更にチャネル装置203a、203b以外のチャネル装置(以降「第3のチャネル装置203c」と表記)にCRCデータの生成及びCRCデータの比較を行わせるようにしている。それにより、IOP204は、第3のチャネル装置203cを用いて、第1のチャネル装置203a及び第2のチャネル装置203bのうちで故障が発生している方を特定する。IOP204は、チャネル装置203a、203bのうち、故障が発生していると判断されたチャネル装置は閉塞させ、SSCH命令200を実行させる対象から除外させる。
メモリ202と第1のチャネル装置203a間のデータ転送の第2のチャネル装置203bを用いた監視では、CRCデータが不一致となっても何れのチャネル装置に故障(エラー)が発生しているのかは特定することが困難である。このため、適切なデータ転送を確実に行わせるには、2台のチャネル装置203を閉塞させることが考えられる。しかし、第1のチャネル装置203aと第2のチャネル装置203bに加え、第3のチャネル装置203cをCRCデータの比較に用いることにより、故障しているチャネル装置を特定することができる。それにより、2台のチャネル装置203a、203bの両方を閉塞させなくとも済む。このことから、チャネル装置をより有効に使用できることとなる。
2台のチャネル装置203a、203bを共に閉塞させる場合、つまり故障しているチャネル装置203を特定できない場合、メモリ202とIO装置30間の適切なデータ転送を確実に行うためには、データ転送を再度行わせる必要がある。しかし、故障しているチャネル装置203の特定は、第1のチャネル装置203aによるデータ転送が適切に行われたか否かを特定できることを意味する。このため、再度のデータ転送は必要に応じて行わせれば良いことになる。
IO装置30とチャネル装置203間のデータ転送は、転送対象のデータが大きい程、長い時間が必要である。IO装置30と第1のチャネル装置203a間の不要なデータ転送は、故障しているチャネル装置を特定することにより回避することができる。不要なデータ転送を回避することにより、より効率的なデータ処理をCPU201(クラスタ20)に実行させることができる。このようなことから、故障しているチャネル装置203の特定は、メモリ202とチャネル装置203間のデータ転送の監視に伴うCPU201の負荷の増大を抑える効果もある。
以降は、図10〜図15に表す各処理のフローチャートを参照して、チャネル装置203、及びCPU201の動作について詳細に説明する。
図10〜図12は、チャネル装置203が実行する各処理のフローチャートである。図10は、IO装置30からメモリ202へのデータ転送を実現させる第1のデータ転送処理のフローチャートである。図11は、メモリ202からIO装置30へのデータ転送を実現させる第2のデータ転送処理のフローチャートである。図12は、メモリ202とIO装置30間のデータ転送を行うことなく、CRCデータの生成及びCRCデータの比較を行うためのCRC再計算処理のフローチャートである。図10〜図12に表す各処理の何れも、IOP204からSCB番号を受信することでチャネル装置203が実行する処理を抜粋して流れを表したものである。図10及び図11の各処理は、ORB301のCRC Check bit301aの値が0に設定されていた場合に実行される。図12のCRC再計算処理はORB301のCRC Check bit301aの値が1に設定されていた場合CRC計算部409が生成したCRCデータがCCW302のCRCデータ302dと一致しない場合に実行される。
図10〜図12は、チャネル装置203が実行する各処理のフローチャートである。図10は、IO装置30からメモリ202へのデータ転送を実現させる第1のデータ転送処理のフローチャートである。図11は、メモリ202からIO装置30へのデータ転送を実現させる第2のデータ転送処理のフローチャートである。図12は、メモリ202とIO装置30間のデータ転送を行うことなく、CRCデータの生成及びCRCデータの比較を行うためのCRC再計算処理のフローチャートである。図10〜図12に表す各処理の何れも、IOP204からSCB番号を受信することでチャネル装置203が実行する処理を抜粋して流れを表したものである。図10及び図11の各処理は、ORB301のCRC Check bit301aの値が0に設定されていた場合に実行される。図12のCRC再計算処理はORB301のCRC Check bit301aの値が1に設定されていた場合CRC計算部409が生成したCRCデータがCCW302のCRCデータ302dと一致しない場合に実行される。
始めに図10を参照して、第1のデータ転送処理について詳細に説明する。
先ず、ステップS11では、入出力制御部411は、CCW302の論理アドレス302bを仮想アドレスレジスタ403に、データ長302aを搬送長レジスタ406にそれぞれ格納する。アドレス変換部404は論理アドレス302bを実アドレスに変換して実アドレスレジスタ405に書き込み、送受信部407はIO装置30に論理アドレス302bを送信して、IO装置30から転送されるデータをデータバッファ408に格納する。この際、送受信部407は、対象データ長302c分のデータの転送を確認するために、例えば搬送長レジスタ406を用いて、IO装置30から実際に転送されたデータ長をカウントする。入出力制御部411は、実アドレスレジスタ405及び搬送長レジスタ406を参照して、データバッファ408に格納されたデータをメモリ202に格納し、CRC計算部409は、データバッファ408に格納されたデータを用いてCRCデータを計算する。入出力制御部411は、データバッファ408に格納されたデータと、CRC計算部409が生成したCRCデータを用いてデータ転送を行い、データ転送が完了した後、ステップS12に移行する。
先ず、ステップS11では、入出力制御部411は、CCW302の論理アドレス302bを仮想アドレスレジスタ403に、データ長302aを搬送長レジスタ406にそれぞれ格納する。アドレス変換部404は論理アドレス302bを実アドレスに変換して実アドレスレジスタ405に書き込み、送受信部407はIO装置30に論理アドレス302bを送信して、IO装置30から転送されるデータをデータバッファ408に格納する。この際、送受信部407は、対象データ長302c分のデータの転送を確認するために、例えば搬送長レジスタ406を用いて、IO装置30から実際に転送されたデータ長をカウントする。入出力制御部411は、実アドレスレジスタ405及び搬送長レジスタ406を参照して、データバッファ408に格納されたデータをメモリ202に格納し、CRC計算部409は、データバッファ408に格納されたデータを用いてCRCデータを計算する。入出力制御部411は、データバッファ408に格納されたデータと、CRC計算部409が生成したCRCデータを用いてデータ転送を行い、データ転送が完了した後、ステップS12に移行する。
ステップS12では、入出力制御部411は、搬送長レジスタ406に格納されている対象データ長及びCRC計算部409が計算したCRCデータを、CCW302の対象データ長302c及びCRCデータ302dとしてメモリ202に格納する。続くステップS13では、入出力制御部411は、IOP204にCCCを含むメッセージを送信する。その後、この第1のデータ転送処理が終了する。ここでは、IOP204に送信されるCCCは、チャネル装置203にエラーが発生したか否かのみを表す。
次に図11を参照して、第2のデータ転送処理について詳細に説明する。
先ず、ステップS21では、入出力制御部411は、CCW302の論理アドレス302bを仮想アドレスレジスタ403に、データ長302aを搬送長レジスタ406にそれぞれ格納する。アドレス変換部404は論理アドレス302bを実アドレスに変換して実アドレスレジスタ405に書き込む。そして、入出力制御部411は、実アドレスレジスタ405及び搬送長レジスタ406の各値により指定されるデータ領域430のデータを読み出してデータバッファ408に格納する。CRC計算部409は、データバッファ408に格納されたデータを用いてCRCデータを計算する。送受信部407は仮想アドレスレジスタ403を参照し、データバッファ408に格納されたデータをCRCデータと共にIO装置30に送信する。この際、送受信部407は、搬送長レジスタ406を用いて対象データ長をカウントする。送受信部407によるデータバッファ408に格納されたデータとCRC計算部409が生成したCRCデータのIO装置30へのデータ転送が完了した後、ステップS22に移行する。
先ず、ステップS21では、入出力制御部411は、CCW302の論理アドレス302bを仮想アドレスレジスタ403に、データ長302aを搬送長レジスタ406にそれぞれ格納する。アドレス変換部404は論理アドレス302bを実アドレスに変換して実アドレスレジスタ405に書き込む。そして、入出力制御部411は、実アドレスレジスタ405及び搬送長レジスタ406の各値により指定されるデータ領域430のデータを読み出してデータバッファ408に格納する。CRC計算部409は、データバッファ408に格納されたデータを用いてCRCデータを計算する。送受信部407は仮想アドレスレジスタ403を参照し、データバッファ408に格納されたデータをCRCデータと共にIO装置30に送信する。この際、送受信部407は、搬送長レジスタ406を用いて対象データ長をカウントする。送受信部407によるデータバッファ408に格納されたデータとCRC計算部409が生成したCRCデータのIO装置30へのデータ転送が完了した後、ステップS22に移行する。
ステップS22では、入出力制御部411は、搬送長レジスタ406に格納された対象データ長及びCRC計算部409が計算したCRCデータをCCW302の対象データ長302c及びCRCデータ302dとして格納する。続くステップS23では、入出力制御部411は、IOP204にCCCを含むメッセージを送信する。その後、この第2のデータ転送処理が終了する。ここでも、IOP204に送信されるCCCは、チャネル装置203にエラーが発生したか否かのみを表す。
最後に図12を参照して、CRC再計算処理について詳細に説明する。
先ず、ステップS41では、入出力制御部411は、CCW302の論理アドレス302bを読み出して仮想アドレスレジスタ403に書き込み、アドレス変換部404は論理アドレス302bを実アドレスに変換して実アドレスレジスタ405に書き込む。入出力制御部411は、実アドレスレジスタ405を参照し、メモリ202からデータを読み出してデータバッファ408に格納し、CRC計算部409にデータバッファ408に格納したデータに基づいたCRCデータの計算の開始を指示する。
先ず、ステップS41では、入出力制御部411は、CCW302の論理アドレス302bを読み出して仮想アドレスレジスタ403に書き込み、アドレス変換部404は論理アドレス302bを実アドレスに変換して実アドレスレジスタ405に書き込む。入出力制御部411は、実アドレスレジスタ405を参照し、メモリ202からデータを読み出してデータバッファ408に格納し、CRC計算部409にデータバッファ408に格納したデータに基づいたCRCデータの計算の開始を指示する。
ステップS42では、入出力制御部411は、CCW302の対象データ長302cを読み出して搬送長レジスタ406に書き込み、CRCデータを生成する対象のデータのサイズを搬送長レジスタ406に指定することにより、CRC計算部409にCRCデータを計算させるデータ長を制限させる。その次に移行するステップS43では、入出力制御部411は、CRC計算部409がCRCデータを計算するのを待つ。その後はステップS44に移行する。
ステップS44では、入出力制御部411は、CRC比較部410に、CCW302のCRCデータ302dとCRC計算部409が計算したCRCデータとを比較させ、その比較結果を受け取り、2つのCRCデータが一致するか否か判定する。2つのCRCデータが一致する場合、判定はYesとなってステップS45に移行する。2つのCRCデータが不一致の場合、判定はNoとなってステップS46に移行する。
ステップS45では、入出力制御部411は、CCCの値として0を設定し、CCCを含むメッセージをIOP204に送信する。その後、CRC再計算処理が終了(正常終了)する。一方、ステップS46では、入出力制御部411は、CCCの値として1を設定し、CCCを含むメッセージをIOP204に送信する。その後、CRC再計算処理が終了(異常終了)する。
このようにして第2のチャネル装置203bは、メモリ202上で第1のチャネル装置203aがデータ転送の対象としたデータ、つまり第1のチャネル装置203aがデータ転送を行った、或いはデータ転送により格納したデータを用いてCRCデータを生成する。生成したCRCデータを第1のチャネル装置203aが生成したCRCデータ302dと比較した結果は、上述したように、第2のチャネル装置203bが第1のチャネル装置203aとメモリ202上の同じデータに基づいてCRCデータを生成したか否かを表す。このため、CCCの1の値は、2台のチャネル装置203がメモリ202上の同じデータに基づいてCRCデータを生成していないことを表している。
エラーの検出によってCCCの値は1とされる。チャネル装置203に発生したエラーは、適切な処理の実行を不可能にする。このことから、本実施形態では、CRCデータが一致するか否かの通知にCCCを用いている。
図13及び図14は、CPU201が実行するIO処理のフローチャートである。次に図13及び図14を参照して、CPU201が実行するIO処理について詳細に説明する。このIO処理は、チャネル装置203によるデータ転送のためにCPU201が実行する処理を抽出してその流れを表したものである。図13及び図14の処理は、CPU201がメモリ202に格納されたプログラムを実行することで実現される。
先ず、ステップS51では、CRC Check bitの値を0とするSSCH命令200を発行する。SSCH命令200の発行後はステップS52に移行する。
値が0のCRC Check bitは、CPU201によりメモリ202上のORB301、SCB420、及びSSW303にそれぞれ書き込まれる。SCB420のSCB番号はGR201a及び送信レジスタ201bを介してCPU201からIOP204に送信され、更にIOP204からIOP204が選択したチャネル装置203に送信される。SCB番号を受信したチャネル装置203は、第1のチャネル装置203aとして動作する。ステップS52では、CPU201はデータ転送(チャネル装置203によるIO処理)の完了を通知する割り込みがチャネル装置203により発生するのを待つ。割り込みが発生すると、ステップS53に移行する。
値が0のCRC Check bitは、CPU201によりメモリ202上のORB301、SCB420、及びSSW303にそれぞれ書き込まれる。SCB420のSCB番号はGR201a及び送信レジスタ201bを介してCPU201からIOP204に送信され、更にIOP204からIOP204が選択したチャネル装置203に送信される。SCB番号を受信したチャネル装置203は、第1のチャネル装置203aとして動作する。ステップS52では、CPU201はデータ転送(チャネル装置203によるIO処理)の完了を通知する割り込みがチャネル装置203により発生するのを待つ。割り込みが発生すると、ステップS53に移行する。
ステップS53では、CPU201は、メモリ202上のSSW303を参照し、CRC Check bit303bの値は0か否か判定する。CRC Check bit303bの値が0であった場合、判定はYesとなってステップS54に移行する。CRC Check bit303bの値が0でなかった場合、つまりCRC Check bit303bの値が更新されていた場合、判定はNoとなり、ここでIO処理を異常終了する。
CRC Check bit303bの値を、チャネル装置203又はIOP204が更新することはできない。チャネル装置203はメモリ202にアクセスすることが可能であり、データ転送を完了したチャネル装置203はメモリ202に必要なデータの書き込みを行う。CRC Check bit303bの値が更新されたのは、CPU201がCRC Check bit303bの値をメモリ202に書き込んでから読み出すまでの極めて短い期間である。このようなことから、CRC Check bit303bの値が0でない場合、その期間に動作していたチャネル装置203に何らかの故障(エラー)が発生した可能性がある。SSCH命令200が発行されたチャネル装置203はその期間に動作している。それにより、異常終了時には、SSCH命令200が発行されたチャネル装置203、つまり第1のチャネル装置203aは閉塞される。また、データ転送は適切に行われなかったと見なし、CPU201は、他のチャネル装置203に再度データ転送を行わせる。
ステップS54では、CPU201は、SSW303のCCC303aの値が0か否かを判定する。CCC303aの値が0の場合、判定はYesとなってステップS56に移行する。CCC303aの値が1の場合には、判定はNoとなってステップS55に移行し、CPU201は第1のチャネル装置203aを閉塞させる。その後、IO処理を異常終了させる。この異常終了時もデータ転送は適切に行われなかったと判断し、CPU201は、他のチャネル装置203に再度データ転送を行わせる。
ステップS56では、CPU201は、領域800(図8)を参照して、ビジー率が最も低いチャネル装置として、第2のチャネル装置203bを選択し、CRC Check bitの値を1とするSSCH命令200を発行する。SSCH命令200の発行後はステップS57に移行して、CPU201は第2のチャネル装置203bによるIO処理としてデータ転送の完了を通知する割り込みが発生するのを待つ。CPU201に対する割り込みが発生すると、ステップS58に移行する。
ステップS58では、CPU201は、メモリ202上のSSW303を参照し、CRC Check bit303bの値が0か否か判定する。CRC Check bit303bの値が0であった場合、つまりCRC Check bit303bの値が更新されていた場合、判定はYesとなり、ここでIO処理を異常終了する。この異常終了時、例えばCPU201は第2のチャネル装置203bを閉塞させる。その後は、特には図示していないが、ステップS56から再度、実行するようにしても良い。一方、CRC Check bit303bの値が0でなかった場合、S58の判定はNoとなってステップS59に移行する。
ステップS59では、CPU201は、SSW303のCCC303aの値が0か否か判定する。CCC303aの値が0であった場合、つまり2つのCRCデータが一致した場合、判定はYesとなり、ここでIO処理を正常終了する。一方、CCC303aの値が1の場合には、判定はNoとなって図14のステップS60に移行する。
ステップS60では、CPU201は、領域800(図8)を参照して、ビジー率が第2のチャネル装置として選択したチャネル装置の次に低いチャネル装置をチャネル装置203cとしてIOP204に選択させ、CRC Check bitの値を1とするSSCH命令200を発行する。SSCH命令200の発行後はステップS61に移行して、CPU201は第3のチャネル装置203cによるIO処理としてデータ転送の完了を通知する割り込みが発生するのを待つ。CPU201に対する割り込みが発生すると、ステップS62に移行する。
ステップS62では、CPU201は、メモリ202上のSSW303を参照し、CRC Check bit303bの値が0か否か判定する。CRC Check bit303bの値が0であった場合、つまりCRC Check bit303bの値が更新されていた場合、判定はYesとなり、ここでIO処理を異常終了する。この異常終了時、上記のように例えばCPU201は第2のチャネル装置203bを閉塞させる。その後は、図示していないが、ステップS60から再度、実行するようにしても良い。一方、CRC Check bit303bの値が0でなかった場合、判定はNoとなってステップS63に移行する。
ステップS63では、CPU201は、SSW303のCCC303aの値が0か否か判定する。CCC303aの値が0であった場合、つまり第1のチャネル装置203aと第3のチャネル装置203cがそれぞれ生成したCRCデータが一致した場合、判定はYesとなり、CPU201はステップ64で第2のチャネル装置203bを閉塞させた後、IO処理を正常終了させる。一方、CCC303aの値が0でなかった場合には、判定はNoとなり、CPU201はステップ65で第1のチャネル装置203bを閉塞させた後、IO処理を正常終了させる。
ステップS63での判定結果がNoの場合、第1のチャネル装置203a及び第2のチャネル装置203bが共に故障していた場合も考えられる。しかし、2台のチャネル装置203が同時に故障する確率は非常に小さい。このため、本実施形態では、第3のチャネル装置203cを用いることにより、故障が発生したチャネル装置203を特定する。
図15及び図16は、各チャネル装置203及びCPU201が実行する処理の流れを表すシーケンス図である。図15は、第1のチャネル装置203a及び第2のチャネル装置203bが共に正常に動作している場合のシーケンス図であり、図16は、第1のチャネル装置203aが故障している場合のシーケンス図である。次に図15及び図16を参照して、各チャネル装置及びCPU201の状況に応じた動作について詳細に説明する。
始めに図15を参照して、第1のチャネル装置203a、第2のチャネル装置203bが共に正常動作している場合の動作について詳細に説明する。
CPU201は、チャネル装置203を使ったデータ転送が必要となる状況(図中「データ処理のIO処理待ち」と表記)になるのを待って、CRC Check bitの値を0とするSSCH命令200を発行する(SA10。図13のS51)。データ転送が必要となる状況とは、上述したように、CPU201が実行するプログラムが要求するデータ(ページ)がメモリ202上に存在しない状況のことである。このSSCH命令200の発行により、第1のチャネル装置203aは指定されたデータ転送のための処理を実行し(SB10。図10或いは図11)、データ転送処理の完了が割り込みによってCPU201に通知される。データ転送処理が完了した旨の通知を受け取ったCPU201は、SSW303を参照することにより、CCC302aの値が0であり、且つCRC Check bit303bの値が0であることを確認する(SA11。図13のS54のYes判定)。
CPU201は、チャネル装置203を使ったデータ転送が必要となる状況(図中「データ処理のIO処理待ち」と表記)になるのを待って、CRC Check bitの値を0とするSSCH命令200を発行する(SA10。図13のS51)。データ転送が必要となる状況とは、上述したように、CPU201が実行するプログラムが要求するデータ(ページ)がメモリ202上に存在しない状況のことである。このSSCH命令200の発行により、第1のチャネル装置203aは指定されたデータ転送のための処理を実行し(SB10。図10或いは図11)、データ転送処理の完了が割り込みによってCPU201に通知される。データ転送処理が完了した旨の通知を受け取ったCPU201は、SSW303を参照することにより、CCC302aの値が0であり、且つCRC Check bit303bの値が0であることを確認する(SA11。図13のS54のYes判定)。
第1のチャネル装置203aへのSSCH命令200の発行後、CPU201は随時、SSCH命令200を第1のチャネル装置203aに発行する(SA20、SA30。図13のS51)。それにより、第1のチャネル装置203aは、発行されたSSCH命令200に従ってデータ転送を行うための処理を実行する(SB20、SB30。図10或いは図11)。
CCC302aの値が0であり、且つCRC Check bit303bの値が0であることを確認したCPU201は、最もビジー率の低いチャネル装置を第2のチャネル装置203bとしてIOP204に選択させ、CRC Check bitの値を1とするSSCH命令200を発行する(SA12。図13のS56)。このSSCH命令200の発行により、第2のチャネル装置203bはIO装置30とのデータ転送を行うことなく、メモリ202から読み出したデータを用いてCRCデータの計算及びCRCデータの比較を実行し(SC10。図12)、CRCデータの計算及びCRCデータの比較処理を完了した旨が割り込みによってCPU201に通知される。CRCデータの計算及びCRCデータの比較が完了した旨の通知を受け取ったCPU201は、SSW303を参照することにより、CCC302aの値が0であり、且つCRC Check bit303bの値が1であることを確認する(SA13。図13のS59のYesの判定)。CCC302aの値が0であり且つCRC Check bit303bの値が1である場合には、以降のデータ処理(IO処理)の実行を継続させる。
次に図16を参照して、第1のチャネル装置203aが故障している場合の動作について詳細に説明する。
CPU201は、チャネル装置203を使ったデータ転送が必要となる状況(図中「データ処理のIO処理待ち」と表記)になるのを待って、CRC Check bitの値を0とするSSCH命令200を発行する(SA40。図13のS51)。このSSCH命令200の発行により、第1のチャネル装置203aは指定されたデータ転送のための処理を実行し(SB20。図10或いは図11)、データ転送処理が完了した旨が割り込みによってCPU201に通知される。データ転送処理が完了した旨の通知を受け取ったCPU201は、SSW303を参照することにより、CCC302aの値が0であり、且つCRC Check bit303bの値が0であることを確認する(SA41。図13のS54のYesの判定)。
CPU201は、チャネル装置203を使ったデータ転送が必要となる状況(図中「データ処理のIO処理待ち」と表記)になるのを待って、CRC Check bitの値を0とするSSCH命令200を発行する(SA40。図13のS51)。このSSCH命令200の発行により、第1のチャネル装置203aは指定されたデータ転送のための処理を実行し(SB20。図10或いは図11)、データ転送処理が完了した旨が割り込みによってCPU201に通知される。データ転送処理が完了した旨の通知を受け取ったCPU201は、SSW303を参照することにより、CCC302aの値が0であり、且つCRC Check bit303bの値が0であることを確認する(SA41。図13のS54のYesの判定)。
第1のチャネル装置203aへのSSCH命令200の発行後、CPU201は随時、SSCH命令200を第1のチャネル装置203aに発行する(SA50、SA60。図13のS51)。そして、第1のチャネル装置203aは、発行されたSSCH命令200に従ってデータ転送を行うための処理を実行する(SB50、SB60。図10或いは図11)。
CCC302aの値が0であり、且つCRC Check bit303bの値が0であることを確認したCPU201は、最もビジー率の低いチャネル装置として第2のチャネル装置203bとしてIOP204に選択させ、CRC Check bitの値を1とするSSCH命令200を発行する(SA42。図13のS56)。このSSCH命令200の発行により、第2のチャネル装置203bはIO装置30とのデータ転送を行うことなく、メモリ202から読み出したデータを用いてCRCデータの計算及びCRCデータの比較を行うための処理を実行し(SC40。図12)、CRCデータの計算及びCRCデータの比較を行うための処理が完了した旨の通知が割り込みによってCPU201に通知される。CRCデータの計算及びCRCデータの比較を行うための処理が完了した旨の通知を受け取ったCPU201は、SSW303を参照することにより、CCC302aの値が1であり、且つCRC Check bit303bの値が1であることを確認する(SA43。図13のS59のNoの判定)。
CCC302aの値が1であり、且つCRC Check bit303bの値が1であることを確認したCPU201は、次にビジー率の低いチャネル装置を第3のチャネル装置203cとしてIOP204に選択させ、CRC Check bitの値を1とするSSCH命令200を再度発行する(SA44。図14のS60)。このSSCH命令200の再発行により、第3のチャネル装置203cはIO装置30とのデータ転送を行うことなく、メモリ202から読み出したデータを用いてCRCデータの計算及びCRCデータの比較を行うための処理を実行し(SD40。図12)、CRCデータの計算及びCRCデータの比較を行うための処理の完了した旨の通知が割り込みによってCPU201に通知される。その通知を受け取ったCPU201は、SSW303を参照することにより、CCC302aの値が1であり、且つCRC Check bit303bの値が1であることを確認する(SA45。図14のS63のNo判定)。このため、CPU201は、第1のチャネル装置203aを閉塞させる閉塞処理を実行する(SA46。図14のS65)。なお、CPU201がCCC302aの値が0であり、且つCRC Check bit303bの値が1であることを確認した場合、CPU201は、第2のチャネル装置203aを閉塞させる閉塞処理を実行する(SA46。図14のS64)。
なお、本実施形態では、SSCH命令に機能を追加し、2台の記憶装置間のデータ転送を行うことなく、CRCデータの生成及びCRCデータの比較を指示できるようにしている。これは、CPU201及びIOP204等を含め、制御内容の変更をできるだけ少なくするためである。CRCデータの生成及びCRCデータの比較の指示は、例えば、新たな命令を追加して行わせるようにしても良い。また、チャネル装置203とCPU201間での必要なデータや命令の送受信方法も、本実施形態に特に限定されるものではない。
本実施形態による情報処理システム及び情報処理装置は、チャネル装置203を用いて実現させているが、チャネル装置203以外のデータ転送装置を用いて実現させても良い。例えばデータ転送装置は、実際に転送するデータの格納場所を特定する機能が搭載されているDMA(Direct Memory Access)コントローラであっても良い。つまり、データ転送装置は、データ転送のために何らかの演算処理、或いは操作を行う機能が搭載されたものであれば良い。
Claims (5)
- 入出力装置に接続された情報処理装置において、
データを記憶する記憶装置と、
命令を発行する演算処理装置と、
前記演算処理装置が発行したデータ転送命令を受けた場合に、前記記憶装置が記憶するデータに基づき、前記データのエラーを検出する第1のエラー検査データを生成するとともに、前記データと前記第1のエラー検査データを前記入出力装置に転送し、前記演算処理装置が発行したデータ検査命令を受けた場合に、前記記憶装置が記憶するデータに基づき、前記データのエラーを検出する第2のエラー検査データを生成するとともに、他のデータ転送装置が生成した第1のエラー検査データと前記第2のエラー検査データを比較した結果が不一致である場合に、前記演算処理装置にエラーが発生した旨の通知を行なうデータ転送装置を有することを特徴とする情報処理装置。 - 前記情報処理装置は、
複数のデータ転送装置を有し、
前記複数のデータ転送装置の各々が単位時間当たりにデータ転送を行なう時間の割合であるビジー率に基づき、前記複数のデータ転送装置から選択したデータ転送装置に、前記演算処理装置が発行したデータ検査命令を転送する制御装置を有することを特徴とする請求項1記載の情報処理装置。 - 前記データ転送装置はさらに、
前記複数のデータ転送装置のうち第1のデータ転送装置による前記第1のエラー検査データと前記複数のデータ転送装置のうち第2のデータ転送装置による前記第2のエラー検査データの比較結果が不一致である場合に、前記記憶装置が記憶するデータに基づき、前記データのエラーを検出する第3のエラー検査データを生成するとともに、前記第1のエラー検査データと前記第3のエラー検査データを比較した結果と前記第2のエラー検査データと前記第3のエラー検査データを比較した結果に基づき、前記複数のデータ転送装置の何れが故障しているかの判断を行なうことを特徴とする請求項2記載の情報処理装置。 - 前記情報処理装置において、
前記記憶装置はさらに、前記データの前記記憶装置における開始アドレスと前記データのデータ長を記憶し、
前記データ転送装置は、前記開始アドレスと前記データ長を用いて、前記データに基づき、前記第1のエラー検査データを生成するとともに、前記開始アドレスと前記データ長を用いて、前記データに基づき、前記第2のエラー検査データを生成することを特徴とする請求項1記載の情報処理装置。 - データを記憶する記憶装置と命令を発行する演算処理装置を有するとともに、入出力装置に接続された情報処理装置の制御方法において、
前記演算処理装置が、前記情報処理装置が有する第1のデータ転送装置にデータ転送命令を発行するステップと、
前記データ転送命令を受けた前記第1のデータ転送装置が、前記記憶装置が記憶するデータに基づき、前記データのエラーを検出する第1のエラー検査データを生成するステップと、
前記第1のデータ転送装置が、前記データと前記第1のエラー検査データを前記入出力装置に転送するステップと、
前記演算処理装置が、前記情報処理装置が有する第2のデータ転送装置にデータ検査命令を発行するステップと、
前記データ検査命令を受けた前記第2のデータ転送装置が、前記記憶装置が記憶するデータに基づき、前記データのエラーを検出する第2のエラー検査データを生成するステップと、
前記第2のデータ転送装置が、前記第1のエラー検査データと前記第2のエラー検査データを比較するステップと、
前記第2のデータ転送装置が比較した結果が不一致である場合に、前記演算処理装置にエラーが発生した旨の通知を行なうステップを有することを特徴とする情報処理装置の制御方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2011/052791 WO2012108023A1 (ja) | 2011-02-09 | 2011-02-09 | 情報処理装置、情報処理システム及びデータ転送方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPWO2012108023A1 true JPWO2012108023A1 (ja) | 2014-07-03 |
Family
ID=46638266
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2012556705A Pending JPWO2012108023A1 (ja) | 2011-02-09 | 2011-02-09 | 情報処理装置、情報処理システム及びデータ転送方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20130311838A1 (ja) |
JP (1) | JPWO2012108023A1 (ja) |
WO (1) | WO2012108023A1 (ja) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH02209022A (ja) * | 1989-02-09 | 1990-08-20 | Fujitsu Ltd | Crc生成ビットチェック方式 |
JPH10133903A (ja) * | 1996-10-30 | 1998-05-22 | Nec Eng Ltd | データ転送制御装置及び折返し試験方式 |
JP2002043943A (ja) * | 2000-07-21 | 2002-02-08 | Toshiba Corp | アナログ出力装置 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6012839A (en) * | 1995-06-30 | 2000-01-11 | Quantum Corporation | Method and apparatus to protect data within a disk drive buffer |
US5758188A (en) * | 1995-11-21 | 1998-05-26 | Quantum Corporation | Synchronous DMA burst transfer protocol having the peripheral device toggle the strobe signal such that data is latched using both edges of the strobe signal |
US6715004B1 (en) * | 2000-03-29 | 2004-03-30 | Intel Corporation | Method and apparatus for intermediate validation of data transferred between a host and a device |
JP4227737B2 (ja) * | 2000-08-30 | 2009-02-18 | 日本電気株式会社 | 無線ネットワーク、中継ノード及びそれに用いる中継伝送方法並びにそのプログラム |
US8898536B2 (en) * | 2007-04-27 | 2014-11-25 | Netapp, Inc. | Multi-core engine for detecting bit errors |
US8885514B2 (en) * | 2009-07-30 | 2014-11-11 | New Jersey Institute Of Technology | Assigning source nodes to a select group in a wireless communication network |
-
2011
- 2011-02-09 JP JP2012556705A patent/JPWO2012108023A1/ja active Pending
- 2011-02-09 WO PCT/JP2011/052791 patent/WO2012108023A1/ja active Application Filing
-
2013
- 2013-07-29 US US13/952,758 patent/US20130311838A1/en not_active Abandoned
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH02209022A (ja) * | 1989-02-09 | 1990-08-20 | Fujitsu Ltd | Crc生成ビットチェック方式 |
JPH10133903A (ja) * | 1996-10-30 | 1998-05-22 | Nec Eng Ltd | データ転送制御装置及び折返し試験方式 |
JP2002043943A (ja) * | 2000-07-21 | 2002-02-08 | Toshiba Corp | アナログ出力装置 |
Also Published As
Publication number | Publication date |
---|---|
WO2012108023A1 (ja) | 2012-08-16 |
US20130311838A1 (en) | 2013-11-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5284905B2 (ja) | データ移行方法、及びプログラム | |
US9021155B2 (en) | Fibre channel input/output data routing including discarding of data transfer requests in response to error detection | |
US8364853B2 (en) | Fibre channel input/output data routing system and method | |
US8924606B2 (en) | Storage system and data transfer control method | |
US8583988B2 (en) | Fibre channel input/output data routing system and method | |
JP5076488B2 (ja) | 情報処理装置、履歴管理方法、履歴管理プログラム | |
JP2008047116A (ja) | 入力/出力装置とメモリ間のデータ転送の融通性のある制御 | |
JP5359601B2 (ja) | ダンプ出力制御装置、ダンプ出力制御プログラム、ダンプ出力制御方法 | |
US20030014697A1 (en) | System and method for dynamically moving checksums to different memory locations | |
JP4834722B2 (ja) | 演算処理装置及び演算処理装置の制御方法 | |
JP4394533B2 (ja) | ディスクアレイシステム | |
US8683083B2 (en) | Fibre channel input/output data routing system and method | |
WO2009098737A1 (ja) | 外部デバイスアクセス装置、その制御方法及びシステムlsi | |
US8769253B2 (en) | Fibre channel input/output data routing system and method | |
WO2012108023A1 (ja) | 情報処理装置、情報処理システム及びデータ転送方法 | |
JP6812332B2 (ja) | 情報処理システム及び情報処理方法 | |
JP3964629B2 (ja) | ディスクアレイ装置のパトロールによるデータパス異常検出方法及びディスクアレイ装置を備えたコンピュータシステム | |
JP2019159437A (ja) | 情報処理装置、転送制御方法および転送制御プログラム | |
KR101967955B1 (ko) | 에러 정정 전에 비휘발성 고체 상태 디바이스로부터 데이터를 송신하는 시스템 및 방법 | |
US20110113161A1 (en) | Optical disk control device | |
JP5888419B2 (ja) | データ処理装置、プロセッサ、及び動作履歴記録方法 | |
JP4466530B2 (ja) | ディスクアレイ装置及び論理アドレス制御方法並びにプログラム | |
US6317857B1 (en) | System and method for utilizing checksums to recover data | |
WO2016151774A1 (ja) | 情報処理装置、情報処理システムおよび情報処理装置の制御プログラム | |
JP2007179084A (ja) | ディスク装置およびディスク書込データ転送方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20140902 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20150210 |