(57)【要約】【課題】  メモリへの書き込みが正常に終了したか否かをチェックすることが出来る障害検出装置を提供する。【解決手段】  I/O装置とメモリユニット間に障害検出装置を設け、I/O装置から発行されたライトリクエストによるメモリユニットへの書き込みが正常に終了したか否かを検出する。障害検出装置は、I/O装置から発行されたライトリクエストに対応するリードリクエストを生成し、そのライトリクエストにより書き込まれたデータをメモリユニットから読み出す。メモリユニットから読み出したデータとライトリクエストのデータとを比較する。比較した結果、メモリユニットから読み出したデータとライトリクエストのデータとが異なった場合は、障害を検出したとして外部に通知する。【選択図】  図２
2006065394.tif 000002
【特許請求の範囲】
【請求項１】
メモリリクエスト元とメモリとに接続された障害検出装置であって、
前記メモリリクエスト元から前記メモリの所定のアドレスへ第１のデータを書き込むライトリクエストを前記メモリへ出力する出力手段と、
前記メモリの前記アドレスから第２のデータを読み出すためのデータリードリクエストを生成し、前記メモリへ出力するリードリクエスト手段と、
前記第１のデータと前記データリードリクエストにより前記メモリの前記アドレスから読み出された前記第２のデータとを比較する比較手段と、
前記比較により前記第１のデータと前記第２のデータとが異なった場合は、障害信号を出力する障害通知手段と、
を備えることを特徴とする障害検出装置。
【請求項２】
前記出力手段、又は前記比較手段は、バッファを備えることを特徴とする請求項１に記載の障害検出装置。
【請求項３】
前記メモリからの出力を受け取るデータ制御手段をさらに含み、
前記データ制御手段は、前記第２のデータを受け取った場合は、前記第２のデータを前記メモリリクエスト元へ送出することを抑止することを特徴とする請求項１又は２に記載の障害検出装置。
【請求項４】
前記データ制御手段は、前記メモリへのライトが完了したことをメモリリクエスト元に伝えるライトリプライを受け取る前に、前記第２のデータを受け取った場合は、前記第２のデータを前記比較手段に送出することを抑止することを特徴とする請求項３に記載の障害検出装置。
【請求項５】
前記データ制御手段は、前記メモリリクエスト元から前記第１のデータの転送処理が完了したことを上位装置に伝える通知を受け取った後に、前記第２のデータを受け取った場合は、前記第２のデータを前記比較手段に送出することを抑止することを特徴とする請求項３又は４に記載の障害検出装置。
【請求項６】
前記データ制御手段は、バッファを備えることを特徴とする請求項３乃至５に記載の障害検出装置。
【請求項７】
前記障害通知手段は、前記第１のデータと前記第２のデータとが異なった場合は、外部へ信号を出力することを特徴とする請求項１乃至６に記載の障害検出装置。
【請求項８】
前記比較手段は、前記第１のデータの識別子と前記第２のデータの識別子とが一致した場合に前記第１のデータと前記第２のデータとの比較を行うことを特徴とする請求項１乃至７に記載の障害検出装置。
【請求項９】
前記メモリリクエスト元から入力した前記第１のデータのライトリクエストに識別子を割り当てる識別子割り当て手段を備えることを特徴とする請求項８に記載の障害検出装置。
【請求項１０】
メモリリクエスト元とメモリとに接続され、障害を検出する障害検出方法であって、
前記メモリリクエスト元から前記メモリの所定のアドレスへ第１のデータを書き込むライトリクエストを前記メモリへ出力するステップと、
前記メモリの前記アドレスから第２のデータを読み出すためのデータリードリクエストを生成するステップと、
前記データリードリクエストを前記メモリへ出力するステップと、
前記データリードリクエストにより前記メモリの前記アドレスから読み出された第２のデータを受け取り、前記第１のデータと前記第２のデータとを比較するステップと、
前記比較により前記第１のデータと前記第２のデータとが異なった場合は、障害信号を出力するステップと、
を含むことを特徴とする障害検出方法。
【請求項１１】
前記メモリから出力された前記第２のデータを受け取った場合は、前記第２のデータを前記メモリリクエスト元へ送出することを抑止するステップを含むことを特徴とする請求項１０に記載の障害検出方法。
【請求項１２】
前記メモリへのライトが完了したことをメモリリクエスト元に伝えるライトリプライを受け取る前に、前記第２のデータを受け取った場合は、前記第２のデータを前記比較手段に送出することを抑止するステップを含むことを特徴とする請求項１１に記載の障害検出方法。
【請求項１３】
前記データ制御手段は、前記メモリリクエスト元から前記第１のデータの転送処理が完了したことを上位装置に伝える通知を受け取った後に、前記第２のデータを受け取った場合は、前記第２のデータを前記比較手段に送出することを抑止するステップを含むことを特徴とする請求項１１又は１２に記載の障害検出方法。
【請求項１４】
前記障害信号を出力するステップは、前記第１のデータと前記第２のデータとが異なった場合は、外部へ信号を出力することを特徴とする請求項１０乃至１３に記載の障害検出方法。
【請求項１５】
前記比較するステップは、前記第１のデータの識別子と前記第２のデータの識別子とが一致した場合に前記第１のデータと前記第２のデータとの比較を行うことを特徴とする請求項１０乃至１４に記載の障害検出方法。
【請求項１６】
前記メモリリクエスト元から入力した前記第１のデータのライトリクエストに識別子を割り当てるステップを含むことを特徴とする請求項１５に記載の障害検出方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置のデータ通信にかかる障害を検出する障害検出装置に関し、特にDirect Memory Access（DMA）転送時のデータ通信にかかる障害を検出する障害検出装置に関する。
【背景技術】
【０００２】
従来、I／O装置とメモリユニットとの間の中間装置では、ParityCheck、Error-Correcting Code（ECC）、チェックサムなどのチェック方式により障害検出が行われている。これらの方式は、送信元が転送データに対して、チェックコードを付加して送信し、受信装置がチェックコードによりデータを検査することによって、データの正当性を確保しようとする方式である（例えば、特許文献１参照。）。（以下、第１の従来技術という。）
また、チェックコードを用いるデータの保障方法の他に、高い信頼性を必要とするシステムで行われているデータ保障方法として、システムを多重化することによりデータの正合性を保障する方式がある。この方式は、システムを多重化し、同じデータを複数のシステムを用いて転送し、転送先でデータの一致チェックをする等して、データの欠損や破壊が発生していないかを検証する方式である。（以下、第２の従来技術という。）
【特許文献１】特開２００３−３３０８１３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
上述の第１の従来技術では、チェックコードによりエラーを検出しており、チェックコードで検出できるエラー量を超えた場合は、エラーを正確に検出できないという問題がある。
【０００４】
また、上述の第２の従来技術では、上記のチェックコードを用いる方式に比べて高い信頼性を確保することが出来るが、システムを多重化することによりシステムを構成するハードウェア量が大幅に増大するという問題がある。
【０００５】
本発明の目的は、エラー量が多い場合でもメモリへの書き込みが正常に終了したか否かをチェックすることができる障害検出装置を、システムを多重化せず少ないハードウェア量で提供することにある。
【０００６】
本発明の他の目的は、メモリへの書き込みが正常に終了したか否かのチェックを必要最小限にし、メモリアクセス処理の高速性を損なうことなくメモリ障害の検出を行う障害検出装置を提供することにある。
【０００７】
さらに、本発明の他の目的は、メモリへの書き込みが正常に終了したか否かのチェックを必要最小限だけ行い、複雑な構成を採用せず回路規模を増大させることなくメモリ障害の検出を行う障害検出装置を提供することにある。
【課題を解決するための手段】
【０００８】
上述の目的を達成するために、本発明の障害検出装置は、メモリリクエスト元とメモリとに接続された障害検出装置であって、前記メモリリクエスト元から前記メモリの所定のアドレスへ第１のデータを書き込むライトリクエストを前記メモリへ出力する出力手段と、前記メモリの前記アドレスから第２のデータを読み出すためのデータリードリクエストを生成し、前記メモリへ出力するリードリクエスト手段と、前記第１のデータと前記データリードリクエストにより前記メモリの前記アドレスから読み出された前記第２のデータとを比較する比較手段と、前記比較により前記第１のデータと前記第２のデータとが異なった場合は、障害信号を出力する障害通知手段とを備えることを特徴とする。
【０００９】
また、本発明の他の障害検出装置は、前記出力手段、又は前記比較手段は、バッファを備えることを特徴とする。
【００１０】
さらに、本発明の他の障害検出装置は、前記メモリからの出力を受け取るデータ制御手段をさらに含み、前記データ制御手段は、前記第２のデータを受け取った場合は、前記第２のデータを前記メモリリクエスト元へ送出することを抑止することを特徴とする。
【００１１】
また、本発明の他の障害検出装置は、前記データ制御手段は、前記メモリへのライトが完了したことをメモリリクエスト元に伝えるライトリプライを受け取る前に、前記第２のデータを受け取った場合は、前記第２のデータを前記比較手段に送出することを抑止することを特徴とする。
【００１２】
さらに、本発明の他の障害検出装置は、前記データ制御手段は、前記メモリリクエスト元から前記第１のデータの転送処理が完了したことを上位装置に伝える通知を受け取った後に、前記第２のデータを受け取った場合は、前記第２のデータを前記比較手段に送出することを抑止することを特徴とする。
【００１３】
また、本発明の他の障害検出装置は、前記データ制御手段は、バッファを備えることを特徴とする。
【００１４】
さらに、本発明の他の障害検出装置は、前記障害通知手段は、前記第１のデータと前記第２のデータとが異なった場合は、外部へ信号を出力することを特徴とする。
【００１５】
また、本発明の他の障害検出装置は、前記比較手段は、前記第１のデータの識別子と前記第２のデータの識別子とが一致した場合に前記第１のデータと前記第２のデータとの比較を行うことを特徴とする。
【００１６】
さらに、本発明の他の障害検出装置は、前記メモリリクエスト元から入力した前記第１のデータのライトリクエストに識別子を割り当てる識別子割り当て手段を備えることを特徴とする。
【００１７】
上記課題を解決するために本発明の障害検出方法は、メモリリクエスト元とメモリとに接続され、障害を検出する障害検出方法であって、前記メモリリクエスト元から前記メモリの所定のアドレスへ第１のデータを書き込むライトリクエストを前記メモリへ出力するステップと、前記メモリの前記アドレスから第２のデータを読み出すためのデータリードリクエストを生成するステップと、前記データリードリクエストを前記メモリへ出力するステップと、前記データリードリクエストにより前記メモリの前記アドレスから読み出された第２のデータを受け取り、前記第１のデータと前記第２のデータとを比較するステップと、前記比較により前記第１のデータと前記第２のデータとが異なった場合は、障害信号を出力するステップとを含むことを特徴とする。
【００１８】
また、本発明の他の障害検出方法は、前記メモリから出力された前記第２のデータを受け取った場合は、前記第２のデータを前記メモリリクエスト元へ送出することを抑止するステップを含むことを特徴とする。
【００１９】
さらに、本発明の他の障害検出方法は、前記メモリへのライトが完了したことをメモリリクエスト元に伝えるライトリプライを受け取る前に、前記第２のデータを受け取った場合は、前記第２のデータを前記比較手段に送出することを抑止するステップを含むことを特徴とする。
【００２０】
また、本発明の他の障害検出方法は、前記データ制御手段は、前記メモリリクエスト元から前記第１のデータの転送処理が完了したことを上位装置に伝える通知を受け取った後に、前記第２のデータを受け取った場合は、前記第２のデータを前記比較手段に送出することを抑止するステップを含むことを特徴とする。
【００２１】
さらに、本発明の他の障害検出方法は、前記障害信号を出力するステップは、前記第１のデータと前記第２のデータとが異なった場合は、外部へ信号を出力することを特徴とする。
【００２２】
また、本発明の他の障害検出方法は、前記比較するステップは、前記第１のデータの識別子と前記第２のデータの識別子とが一致した場合に前記第１のデータと前記第２のデータとの比較を行うことを特徴とする。
【００２３】
さらに、本発明の他の障害検出方法は、前記メモリリクエスト元から入力した前記第１のデータのライトリクエストに識別子を割り当てるステップを含むことを特徴とする。
【発明の効果】
【００２４】
上述した手段によれば、本発明は、障害検出装置内で作成したリードリクエストにより読み出されたデータとライトリクエストのデータとを比較することによって、システムを多重化させることなく、エラー量が多い場合でもメモリへの書き込みが正常に終了したか否かを検出することができる。
【００２５】
また、本発明では、障害検出装置内で作成したリードリクエストにより読み出されたデータをI/O装置へ送出することを抑止することによって、本来の処理と無関係のデータをI/O装置へ送出することがないので、I/O装置における処理手順の変更なしに本発明の障害検出装置を適用することができる。
【００２６】
さらに、障害検出装置内で作成したリードリクエストにより読み出されたデータが、ライトリクエストによりメモリへのライトが完了する前に読み出したデータである可能性のある場合は、ライトリクエストのデータと比較しないことにより、必要最小限のデータの検証を行うことができ、メモリアクセスの高速性を損なわずメモリ障害の検出を行うことが出来る。
【００２７】
また、障害検出装置内で作成したリードリクエストにより読み出されたデータが、CPUが他の処理を行った後に読み出したデータである可能性のある場合は、ライトリクエストのデータと比較しないことにより、必要最小限のデータの検証を行うことができ、メモリアクセスの高速性を損なわずメモリ障害の検出を行うことが出来る。
【００２８】
さらに、本発明では、ライトリクエストによりメモリに書き込まれたデータとリードリクエストにより読み出されたデータが異なっていた場合に、外部に通知することもできる。
【００２９】
また、本発明では、障害検出装置内でIDの割り当てを行うので、I/O装置からのライトリクエストにIDが付加されていない場合でも障害検出を行うことができる。
【発明を実施するための最良の形態】
【００３０】
本発明の障害検出装置１の実施の形態について図面を参照して詳細に説明する。
【００３１】
図１を参照すると、障害検出装置１は、I/O装置２とメモリユニット３とに接続されている。メモリユニット３は、CPU４（上位装置）に接続されている。CPU４からメモリユニット３および障害検出装置１を介して、I/O装置２へDMA転送命令が伝送される構成になっている。I/O装置２は、メモリユニット３からライトリクエストによるライトが完了したことをI/O装置に伝えるライトリプライデータが送られてくると、CPU４へDMA転送の終了を通知するため、障害検出装置１及びメモリユニット３を介して、CPU４へDMA転送完了通知を送る。I/O装置２は複数設けられていてもよい。
【００３２】
次に、障害検出装置１の内部構成について説明する。
【００３３】
図２を参照すると、障害検出装置１は、I/O装置２から発行されたライトリクエスト３００及びリードリクエストをメモリユニット３へ出力するとともにライトリクエスト３００に基づいて作成されたリードリクエストをメモリユニット３へ出力するリクエスト出力手段１００と、I/O装置２からのライトリクエスト３００に基づいてリードリクエストを生成するリクエスト生成手段１０２と、リードリクエストに対応するデータをメモリユニット３から受け取るリプライデータ制御手段１０３と、ライトリクエスト３００のデータとリードリクエストにより読み出されたデータとを比較する比較手段１０５と、比較手段１０５が比較したデータが異なっていた場合に障害をリクエスト出力手段１００または外部へ通知する障害通知手段１０７とを含む。リクエスト出力手段１００は、データバッファ１０１を有し、複数のライトリクエスト及び複数のリードリクエストを保存することが出来る。また、リプライデータ制御手段１０３は、データバッファ１０４を有し、複数のリードリクエストを保存することができる。また、比較手段１０５はデータバッファ１０５を有し、複数のライトリクエストを保存することが出来る。
【００３４】
ここで、図３を参照して、ライトリクエスト３００について説明する。ライトリクエスト３００は、ライトリクエスト情報３０１とライトデータ３０２とを含む。ライトリクエスト情報３０１は、書込み命令コード、リクエスト識別子（ID）、及び書込み先のメモリ内のアドレスを含む。IDは各々のライトリクエストに固有のものである。I/O装置２は、ライトリプライデータが送られてきたときに、このIDに基づいて、ライトリプライデータがどのライトリクエストの処理に対応するものであるかを判断する。I/O装置２が複数ある場合は、IDは送信元のI/O装置２を示す情報も含む。
【００３５】
再び図２を参照すると、I/O装置２からメモリユニット３に対して送られるライトリクエスト３００は、データパス２００を介してリクエスト出力手段１００へ送られる。また、I/O装置２から、ライトリクエスト情報３０１がデータパス２０１を介してリクエスト生成手段１０２へ送られる。
【００３６】
リクエスト出力手段１００は、I/O装置２で発行されたライトリクエスト３００及びリードリクエスト、リクエスト生成手段１０２によりライトリクエスト情報３０１に基づいて作成されたリードリクエスト、及びI/O装置２で発行されたDMA転送完了通知をデータバッファ１０１に保存する。データバッファ１０１には、First-In First-Out（FIFO）方式のバッファを用い、リクエスト出力手段１００は、データバッファ１０１に保存された順にメモリユニット３へ送出する。また、リクエスト出力手段１００は、ライトリクエスト情報３０１に基づいて作成されたリードリクエスト及びI/O装置で発行されたDMA転送完了通知を、それぞれ、データパス２０５を介してメモリユニット３へ送ると同時に、それぞれと同じものをデータパス２０４を介してリプライデータ制御手段１０３へ送る。
【００３７】
リクエスト生成手段１０２は、送られてきたライトリクエスト情報３０１に基づいて、ライトリクエスト３００によりメモリユニット３内に書き込まれたデータを書き込み先のアドレスから読み出すためのリードリクエストを生成する。リクエスト生成手段１０２で生成されたリードリクエストは、データパス２０２を介してリクエスト出力手段１００へ送られる。
【００３８】
リプライデータ制御手段１０３は、データパス２０４を介してリクエスト出力手段１００から送られてきたライトリクエスト情報３０１に基づいて作成されたリードリクエスト、及びI/O装置で発行されたDMA転送完了通知をデータバッファ１０４に保存する。また、リプライデータ制御手段１０３は、データパス２０６を介して、メモリユニット３からのリプライデータを受け取る。リプライデータには、ライトリクエストによるライトが完了したことをI/O装置に伝えるライトリプライデータ、I/O装置２で発行されたリードリクエストによりメモリユニット３から読み出されたリードリプライデータ、またはリクエスト生成手段１０２で発行されたリードリクエストによりメモリユニット３から読み出されたリードリプライデータが含まれる。I/O装置２で発行されたリードリクエストによりメモリユニット３から読み出されたリードリプライデータ、及びリクエスト生成手段１０２で発行されたリードリクエストによりメモリユニット３から読み出されたリードリプライデータには、所望のアドレスから読み出されたデータとIDとが含まれる。各々のリードリプライデータに含まれるIDとしては、メモリユニット３により各々に対応するリードリクエストのIDが与えられる。リプライデータ制御手段１０３は、IDに基づき以下の（１）〜（３）をチェックする。
（１）リクエスト生成手段１０２で発行されたリードリクエストに対応するデータであることをIDによりチェックする。これは、障害検出装置１内のリクエスト生成手段１０２で発行されたリードリクエストに対応するデータだけを比較し、リクエスト生成手段１０２で発行されたリードリクエストに対応するデータは、I/O装置２へは送らないためである。また、リクエスト生成手段１０２で発行されたリードリクエストに対応するデータではないもの、つまり、ライトリプライデータ及びI/O装置２で発行されたリードリクエストに対応するリードリプライデータは、I/O装置２へ送る。
（２）メモリユニット３から送られたリードリプライデータが、そのIDに対応するライトリプライデータより後にリプライデータ制御手段１０３に送られてきたこと、すなわちメモリユニット３にライトされた後にリードされたデータであることをチェックする。メモリユニット３にライトされた後にリードされたデータについての比較を行うためである。ライトリプライデータより前にリードデータがリプライデータ制御手段１０３に送られてきた場合は、そのリードデータは、ライトされる前にリードされたデータである可能性があるので、そのリードデータは比較対照としない。
（３）リードリプライデータがメモリユニット３から送られた時に、そのリードリプライデータのIDに対応するDMA転送完了通知がデータバッファ１０４に保存されていないこと、すなわちI/O装置２からDMA転送完了通知がメモリユニット３、すなわちCPU４へ送られていないことをチェックする。DMA転送完了通知がCPU４に送られると、CUP４はメモリユニット３内のその転送終了したアドレスのデータに対して別の処理、例えば、書き換えを行うことができる。従って、リプライデータ制御部１０３にDMA転送完了通知が送られてきた後にリードデータが送られてきた場合は、CPU４が別の処理を行った後のデータをリードしている可能性があるので、そのリードデータは比較対照としない。
【００３９】
（１）〜（３）全てを満たす場合は、メモリユニット３から送られてきたデータは、リクエスト生成手段１０２で発行されたリードリクエストに対応するリードリプライデータであり、リプライデータ制御手段１０３により、データパス２０７を介して、リクエスト生成手段１０２で発行されたリードリクエストに対応するデータを比較手段１０５へ送られる。
【００４０】
（１）は満たすが、（２）又は（３）を満たさない場合は、メモリユニット３からのデータは、リクエスト生成手段１０２で発行されたリードリクエストに対応するリードリプライデータであるが、ライトリクエスト３００によりライトされる前にリードしたデータであるか、又は、CPU４により他の処理が行われたデータである可能性があり、比較対照のデータにはならないので、そのデータは破棄する。
【００４１】
（１）を満たさない場合は、メモリユニット３からのデータは、リクエスト生成手段１０２で発行されたリードリクエストに対応するデータではなく、ライトリプライデータ、またはI/O装置２で発行されたリードリクエストに対応するリードリプライデータであり、リプライデータ制御手段１０３により、データパス２０８を介して、そのデータはI/O装置２へ送られる。
【００４２】
また、比較手段１０５は、バッファ１０6に記憶しているライトリクエストのデータとリプライデータ制御手段１０３から送られたリクエスト生成手段１０２で発行されたリードリクエストにより読み出されたデータとを比較する。比較手段１０５は、リクエスト生成手段１０２で発行されたリードリクエストのIDに一致するIDを持つライトリクエストを検索し、ライトリクエストのデータとリクエスト生成手段１０２で発行されたリードリクエストにより読み出されたデータとを比較する。比較した結果、ライトリクエストのデータとリードリクエストにより読み出されたデータとが一致した場合は、比較手段１０５は、それぞれのデータを消去する。ライトリクエストに対応するデータとリードリクエストに対応するデータとが異なった場合は、そのライトリクエストを障害通知手段１０７に通知する。
【００４３】
障害通知手段１０７はデータパス２１０を介して障害信号を障害検出装置１の外部に出力する。外部に出力された信号を用いて、外部のLEDを点灯させる又はブザーを鳴らす等の外部へ報知する手法をとる。
【００４４】
次に、本発明の第１の実施の形態の動作について図面を参照して説明する。
【００４５】
図２、３および、４を参照すると、時刻T１において、データをメモリユニット３の所定のアドレスに書き込むライトリクエストA１がI/O装置２から発行される。
【００４６】
時刻T２において、ライトリクエストA１は、データパス２００を介してリクエスト出力手段１００へ送られ、データパス２０５を介してメモリユニット３へ送られる。ライトリクエストA１は、データパス２０３を介して、比較手段１０５に送られ、データバッファ１０６に保存される。また、リクエスト生成手段１０２において、ライトリクエストA１に対応するものであって、メモリユニット３の所定のアドレスからデータを読み出すためのリードリクエストB1が生成される。
【００４７】
時刻T３において、リクエスト出力手段１００はデータパス２０２を介してリクエスト生成手段１０２からリードリクエストB1を受け取る。リクエスト出力手段１００は、データパス２０５を介してメモリユニット３へリードリクエストB1を送る。さらに、リクエスト出力手段１００は、データパス２０４を介してリプライデータ制御手段１０３へ、リードリクエストB１を送る。リプライデータ制御手段１０３は、送られてきたリードリクエストB１をデータバッファ１０４に保存する。また、メモリユニット３では、ライトリクエストA１によって、データC１が書き込まれる。
【００４８】
時刻T４において、メモリユニット３は、リードリクエストB1により読み出されたデータC1を、データパス２０６を介してリプライデータ制御手段１０３へ送る。また、メモリユニット３は、ライトリクエストA１のライトが終了したことをI/O装置２に通知するライトリプライデータD1を、データパス２０６を介してリプライデータ制御手段１０３へ送る。さらに、リプライデータ制御手段１０３は、メモリユニット３から送られてきたライトリプライデータデータD1を、データパス２０８を介してI/O装置２へ送る。
【００４９】
時刻T５において、リプライデータ制御手段１０３は、上述した（１）〜（３）をチェックする。図４においては、データC1がリードリクエストB1により読み出されたデータであり、対応するライトリプライデータD１はT４でI/O装置２へ送られており、また、DMA転送完了通知E１はまだ発行されていない。従って、リプライデータ制御手段１０３は、データパス２０７を介して比較手段１０５へデータC１を送る。比較手段１０５は、データC1とバッファに保存されているライトリクエストA１とを比較する。図４では、データC1とライトリクエストA１のデータとが同一であるので、それらのデータを削除する。また、I/O装置２は、ライトリプライデータD１に基づいて、DMA転送完了通知E１を発行する。
【００５０】
時刻T６において、DMA転送完了通知E1は、データパス２００を介してリクエスト出力手段１００へ送られ、データパス２０５を介してメモリユニット３へ送られる。また、リプライデータ制御手段１０３は、送られてきたDMA転送完了通知E1をデータバッファ１０４に保存する。しかし、DMA転送完了通知E1に対応するリードデータC１は比較手段１０３へ送られており、比較手段１０５に対する転送は正常に完了しているので、リプライデータ制御手段１０３に送られたDMA転送完了通知E1は破棄される。
【００５１】
次に、図５を用いて、メモリユニット３に書き込まれたデータC１´が誤っている場合の動作について説明する。図４の説明と重複する部分は省略する。
【００５２】
時刻T３において、メモリユニット３にライトリクエストA１により、データC１´が書き込まれる。
【００５３】
時刻T４に、メモリユニット３は、リードリクエストB1により読み出されたデータC1´を、データパス２０６を介してリプライデータ制御手段１０３へ送る。
【００５４】
時刻T５に、図５においては、データC１´がリードリクエストB1により読み出されたデータであり、対応するライトリプライデータD１はT４でI/O装置２へ送られており、また、DMA転送完了通知E１はまだ発行されていない。従って、リプライデータ制御手段１０３は、データパス２０７を介して比較手段１０５へデータC１´を送る。比較手段１０５は、データC１´とバッファに保存されているライトリクエストA１とを比較する。図５では、データC１´とライトリクエストA１のデータとが異なるので、書込みエラー信号Fを、データパス２０９を介して障害通知手段１０７へ送る。また、I/O装置２は、ライトリプライデータD１に基づいて、DMA転送完了通知E１を発行する。
【００５５】
時刻T６において、DMA転送完了通知E1は、データパス２００を介してリクエスト出力手段１００へ送られ、データパス２０５を介してメモリユニット３へ送られる。また、リプライデータ制御手段１０３は、送られてきたDMA転送完了通知E1をデータバッファ１０４に保存する。しかし、DMA転送完了通知E1に対応するリードデータC１´は比較手段１０３へ送られており、比較手段１０５に対する転送は正常に完了しているので、リプライデータ制御手段１０３に送られたDMA転送完了通知E1は破棄される。
【００５６】
本発明の第１の実施の形態では、リクエスト生成手段１０２により作成したリードリクエストB１により読み出されたデータとライトリクエストA１のデータとを比較することによって、システムを多重化することなく、エラー量が多い場合でもメモリへの書き込みが正常に終了したか否かを検出することができる。また、リクエスト生成手段１０２により作成したリードリクエストB１により読み出されたデータをI/O装置２へ送出することを抑止することによって、本来の処理と無関係のデータをI/O装置２へ送出することがないので、I/O装置２における処理手順の変更なしに本発明の障害検出装置１を適用することができる。
【００５７】
次に、本発明の第２の実施の形態について図面を参照して詳細に説明する。本発明の第２の実施の形態では、何らかの事情により、リプライデータ制御手段１０３において、ライトリプライデータD2が送られてくる前にリードリプライデータC２´がメモリユニット３から送られてきた場合、リードリプライデータC２´がライトリプライデータD2によりメモリユニット３にライトされる前にリードされたデータである可能性があり、正確な比較結果が得られないので、本第２の実施の形態の障害検出装置はリードリプライデータC２´を用いた比較を行わない。
【００５８】
図６を参照すると、時刻T１において、データをメモリユニット３の所定のアドレスに書き込むライトリクエストA２がI/O装置２から発行される。
【００５９】
時刻T２において、ライトリクエストA２は、データパス２００を介してリクエスト出力手段１００へ送られ、データパス２０５を介してメモリユニット３へ送られる。ライトリクエストA２は、データパス２０３を介して、比較手段１０５に送られ、データバッファ１０６に保存される。また、リクエスト生成手段１０２において、ライトリクエストA２に対応するものであって、メモリユニット３の所定のアドレスからデータを読み出すためのリードリクエストB２が生成される。
【００６０】
時刻T３において、リクエスト出力手段１００はデータパス２０２を介してリクエスト生成手段１０２からリードリクエストB２を受け取る。リクエスト出力手段１００は、データパス２０５を介してメモリユニット３へリードリクエストB２を送る。さらに、リクエスト出力手段１００は、データパス２０４を介してリプライデータ制御手段１０３へ、リードリクエストB２を送る。リプライデータ制御手段１０３は、送られてきたリードリクエストB２をデータバッファ１０４に保存する。
【００６１】
時刻T４において、メモリユニット３は、リードリクエストB２により読み出されたリードリプライデータC２´を、データパス２０６を介してリプライデータ制御手段１０３へ送る。
【００６２】
時刻T５において、メモリユニット３では、ライトリクエストA２によって、データC２が書き込まれる。また、リプライデータ制御手段１０３は、上述した（１）〜（３）をチェックする。図６においては、リードリプライデータC２´がリードリクエストB２により読み出されたリードリプライデータであり、対応するライトリプライデータD２はリプライデータ制御手段１０３には届いておらず、また、DMA転送完了通知E２はまだ発行されていない。従って、リードリプライデータC２´は、ライトリクエストA２によりライトされる前にリードされたデータである可能性があり、ライトリクエストA２との比較対照としないので、リプライデータ制御手段１０３は、リードリプライデータC２´を、比較手段１０５には送らずに破棄する。
【００６３】
時刻T６において、メモリユニット３は、ライトリクエストA２のライトが終了したことをI/O装置２に通知するライトリプライデータD２を、データパス２０６を介してリプライデータ制御手段１０３へ送る。さらに、リプライデータ制御手段１０３は、メモリユニット３から送られてきたライトリプライデータD２を、データパス２０８を介してI/O装置２へ送る。
【００６４】
時刻T７において、I/O装置２は、ライトリプライデータD２に基づいて、DMA転送完了通知E２を発行する。
【００６５】
時刻T８において、DMA転送完了通知E２は、データパス２００を介してリクエスト出力手段１００へ送られ、データパス２０５を介してメモリユニット３へ送られる。また、リプライデータ制御手段１０３は、送られてきたDMA転送完了通知E２をデータバッファ１０４に保存する。しかし、DMA転送完了通知E２に対応するリードリプライデータC２´は時刻T５において破棄されているので、リプライデータ制御手段１０３に送られたDMA転送完了通知E２は破棄される。
【００６６】
本発明の第２の実施の形態では、リードリプライデータC２´がライトリプライデータD2によりメモリユニット３にライトされた後にリードされたデータであることが不確かな場合には、比較を行わないことにより、ライトされた後にリードされたデータであることを確認すること、又は再度リードすることにかかる時間を省略するため、メモリアクセス処理の高速性を損なうことがない。
【００６７】
次に、本発明の第３の実施の形態について図面を参照して詳細に説明する。I/O装置２は、メモリユニット３からライトリクエストA２によるライトが完了したことをI/O装置に伝えるライトリプライデータD２が送られてくると、CPU４へDMA転送の終了を通知するため、障害検出装置１及びメモリユニット３を介して、CPU４へDMA転送完了通知E２を送る。本発明の第３の実施の形態では、何らかの事情により、リプライデータ制御手段１０３において、メモリユニット３からリードリプライデータC３´が送られてくる前に、DMA転送完了通知E３がI/O装置２から送られてきた場合、リードリプライデータC３´はCPU４が別の処理を行った後のデータをリードしている可能性があり、正確な比較結果が得られないので、本第３の実施の形態の障害検出装置はリードリプライデータC３´を用いた比較を行わない。
【００６８】
図７を参照すると、時刻T１において、データをメモリユニット３の所定のアドレスに書き込むライトリクエストA３がI/O装置２から発行される。
【００６９】
時刻T２において、ライトリクエストA３は、データパス２００を介してリクエスト出力手段１００へ送られ、データパス２０５を介してメモリユニット３へ送られる。ライトリクエストA３は、データパス２０３を介して、比較手段１０５に送られ、データバッファ１０６に保存される。また、リクエスト生成手段１０２において、ライトリクエストA３に対応するものであって、メモリユニット３の所定のアドレスからデータを読み出すためのリードリクエストB３が生成される。
【００７０】
時刻T３において、リクエスト出力手段１００はデータパス２０２を介してリクエスト生成手段１０２からリードリクエストB３を受け取る。リクエスト出力手段１００は、データパス２０５を介してメモリユニット３へリードリクエストB３を送る。さらに、リクエスト出力手段１００は、データパス２０４を介してリプライデータ制御手段１０３へ、リードリクエストB３を送る。リプライデータ制御手段１０３は、送られてきたリードリクエストB３をデータバッファ１０４に保存する。また、メモリユニット３では、ライトリクエストA３によって、データC３が書き込まれる。
【００７１】
時刻T４において、メモリユニット３は、リードリクエストB３により読み出されたリードリプライデータC３´を、データパス２０６を介してリプライデータ制御手段１０３へ送る。また、メモリユニット３は、ライトリクエストA３のライトが終了したことをI/O装置２に通知するライトリプライデータD３を、データパス２０６を介してリプライデータ制御手段１０３へ送る。さらに、リプライデータ制御手段１０３は、メモリユニット３から送られてきたライトリプライデータD３を、データパス２０８を介してI/O装置２へ送る。
【００７２】
時刻T５において、I/O装置２は、ライトリプライデータD３に基づいて、DMA転送完了通知E３を発行する。
【００７３】
時刻T６において、DMA転送完了通知E３は、データパス２００を介してリクエスト出力手段１００へ送られ、データパス２０５を介してメモリユニット３へ送られる。また、リプライデータ制御手段１０３は、送られてきたDMA転送完了通知E３をデータバッファ１０４に保存する。
【００７４】
時刻T７において、メモリユニット３は、リードリクエストB３により読み出されたリードリプライデータC３´を、データパス２０６を介してリプライデータ制御手段１０３へ送る。
【００７５】
時刻T８において、リプライデータ制御手段１０３は、上述した（１）〜（３）をチェックする。図７においては、リードリプライデータC３´がリードリクエストB３により読み出されたデータであり、対応するライトリプライデータD３はリプライデータ制御手段１０３には届いているが、DMA転送完了通知E３が発行され、リプライデータ制御手段１０３に届いている。従って、リードリプライデータC３´は、CPU４により書き換えが行われた後にリードされたデータである可能性があり、ライトリクエストA３との比較対照にはならないので、リプライデータ制御手段１０３は、リードリプライデータC３´を、比較手段１０５には送らずに破棄する。
【００７６】
本発明の第３の実施の形態では、読み出されたデータが、CPU４が他の処理を行った後に読み出したデータである可能性のある場合は、比較を行わないことにより、リードされたデータに対しCPU４による他の処理が行われていないことを確認することにかかる時間を省略するため、メモリアクセス処理の高速性を損なうことがない。
【００７７】
次に、本発明の第４の実施の形態について図面を参照して詳細に説明する。図１に示した第１の実施の形態の部分と同等の部分には同一の参照番号を付し、重複する説明は省略する。
【００７８】
図８を参照すると、第４の実施の形態では、データパス２００上にID割り当て手段１０８を加え、リプライ制御手段１１３からID割り当て手段１０８へデータパス２１１を配接した点が第１の実施の形態と異なる。他の構成は第１の実施の形態と同様である。
【００７９】
第１の実施の形態では、ライトリクエストにIDが含まれているものを扱っていたが、第４の実施の形態では、I/O装置２からのライトリクエストにIDが含まれないものを扱う。ID割り当て手段１０８は、I/O装置２が１つの場合でもI/O装置２が複数ある場合でも、受け取ったライトリクエスト３００に対して、ID割り当て手段１０８が受け取った順に連続したIDを割り当て、ライトリクエスト３００をリクエスト出力手段１００へ、ライトリクエスト情報３０１をリクエスト生成手段１０２へ送る。リプライデータ制御手段１１３は、メモリユニット３からIDを割り当てられたライトリクエストに対するライトリプライデータが送られてきたときに、そのライトリプライデータからIDを削除し、I/O装置２へID削除済みのライトリプライデータを送る。リプライデータ制御手段１１３は、削除したIDをデータパス２１１を介してID割り当て手段１０８へ送る。ID割り当て手段１０８は送られてきたIDに基づき、一定時間内は使用されたIDを他のライトリクエストには割り当てないようにする。これら以外の動作に関しては第１の実施の形態と同じである。
【００８０】
本発明の第４の実施の形態では、ID割り当て手段１０８によりIDの割り当てを行うので、I/O装置からのライトリクエストにIDが付加されていない場合でも障害検出を行うことができる。
【００８１】
以上好ましい実施の形態及び実施の形態をあげて本発明を説明したが、本発明は必ずしも上記実施の形態及び実施の形態に限定されるものではなく、その技術的思想の範囲内において様々に変形し実施することが出来る。
【図面の簡単な説明】
【００８２】
【図１】本発明の実施の形態を示すブロック図である。
【図２】本発明の第１の実施の形態を示すブロック図である。
【図３】本発明の実施の形態のライトリクエストの例を示す図である。
【図４】本発明の第１の実施の形態の動作を示すタイミングチャートである。
【図５】本発明の第１の実施の形態の動作を示すタイミングチャートである。
【図６】本発明の第２の実施の形態の動作を示すタイミングチャートである。
【図７】本発明の第３の実施の形態の動作を示すタイミングチャートである。
【図８】本発明の第４の実施の形態を示すブロック図である。
【符号の説明】
【００８３】
１  障害検出装置
２  I/O装置
３  メモリユニット
４  CPU
１００  リクエスト出力手段
１０１、１０４、１０６  データバッファ
１０２  リクエスト生成手段
１０３  リプライデータ制御手段
１０５  比較手段
１０７  障害通知手段
１０８  ID割り当て手段
２００、・・・、２１０  データパス
３００  ライトデータ
３０１  ライトリクエスト情報
３０２  ライトデータ
【図１】
2006065394.tif 000003
【図２】
2006065394.tif 000004
【図３】
2006065394.tif 000005
【図４】
2006065394.tif 000006
【図５】
2006065394.tif 000007
【図６】
2006065394.tif 000008
【図７】
2006065394.tif 000009
【図８】
2006065394.tif 000010