(57)【要約】【課題】運用中にアドレス接続正常性の検証を可能とする回路間データ転送方法およびシステムを提供する。【解決手段】回路５，６間でメモリ３を介してデータ転送を行う際に、メモリ３の転送用領域に書き込まれる転送データに所定アドレスカウント間隔で誤り訂正可能なエラービットを書き込み、メモリ３の転送用領域から読み出された転送データからエラーが検出されるアドレスカウント間隔を監視し（Ｓ５０４）、エラー検出間隔の異常を判別することで転送の正常性を検証する（Ｓ５０７、Ｓ５０８）。【選択図】図５
2009042855.tif 000002
【特許請求の範囲】
【請求項１】
回路間でメモリを介してデータ転送を行う方法において、
前記メモリの転送用領域に書き込まれる転送データに、所定アドレスカウント間隔で誤り訂正可能なエラービットを書き込み、
前記メモリの転送用領域から読み出された転送データからエラーが検出されるアドレスカウント間隔を監視することでデータ転送の正常性を検証する、
ことを特徴とする回路間データ転送方法。
【請求項２】
前記誤り訂正可能なエラービットは、１つのアドレスに書き込まれるべきデータの任意の１ビットを反転させた当該１ビットであることを特徴とする請求項１に記載の回路間データ転送方法。
【請求項３】
前記誤り訂正可能なエラービットを含めたデータを前記メモリの転送用領域内で順次シフトさせながら書き込み、
前記データ転送の正常性検証は、前記メモリの前記転送用領域からエラーが検出されるアドレスカウント間隔が前記所定アドレスカウント間隔と一致すればデータ転送正常と判断し、一致しなければデータ転送異常と判断する、
ことを特徴とする請求項１または２に記載の回路間データ転送方法。
【請求項４】
前記エラーが検出されるアドレスカウント間隔が前記所定アドレスカウント間隔と異なるエラー検出間隔異常が所定の複数回数連続して検出されると、アドレス接続異常であると判断する、ことを特徴とする請求項１−３のいずれか１項に記載の回路間データ転送方法。
【請求項５】
前記エラー検出間隔異常が所定の複数回数連続して検出されると、前記アドレス接続異常であると判断する前に、前記データ転送の正常性検証を停止して前記一定期間転送データがエラー未検出状態であるか否かを判断し、前記一定期間エラー未検出状態であれば前記誤り訂正可能なエラービットの書き込みおよび前記データ転送の正常性検証を実行し、再度、前記エラー検出間隔異常が所定の複数回数連続して検出されるとシステムの運用を停止する、ことを特徴とする請求項４に記載の回路間データ転送方法。
【請求項６】
前記誤り訂正可能なエラービットを書き込む前に、一定期間、転送データがエラー未検出状態であるか否かを判断し、前記一定期間エラー未検出状態であれば、前記誤り訂正可能なエラービットの書き込みおよび前記データ転送の正常性検証を実行することを特徴とする請求項１−５のいずれか１項に記載の回路間データ転送方法。
【請求項７】
前記一定期間にエラーが検出されると、システムの運用を停止する前に再度、前記一定期間転送データがエラー未検出状態であるか否かを判断し、前記一定期間エラー未検出状態であれば前記誤り訂正可能なエラービットの書き込みおよび前記データ転送の正常性検証を実行し、前記一定期間にエラーが再度検出されると、システムの運用を停止する、ことを特徴とする請求項６に記載の回路間データ転送方法。
【請求項８】
回路間でメモリを介してデータ転送を行うシステムにおいて、
前記メモリの転送用領域に書き込まれる転送データに、所定アドレスカウント間隔で誤り訂正可能なエラービットを書き込んだエラー検出用データを生成する生成手段と、
前記メモリの転送用領域から読み出された転送データからエラーが検出されるアドレスカウント間隔を監視することでデータ転送の正常性を検証する検査手段と、
を有することを特徴とする回路間データ転送システム。
【請求項９】
前記エラー検出用データは、１つのアドレスに書き込まれるべきデータの任意の１ビットを反転させたデータであることを特徴とする請求項８に記載の回路間データ転送システム。
【請求項１０】
前記エラー検出用データを前記メモリの転送用領域内で順次シフトさせながら書き込み、
前記データ転送の正常性検証は、前記メモリの前記転送用領域からエラーが検出されるアドレスカウント間隔が前記所定アドレスカウント間隔と一致すればデータ転送正常と判断し、一致しなければデータ転送異常と判断する、
ことを特徴とする請求項８または９に記載の回路間データ転送システム。
【請求項１１】
前記エラーが検出されるアドレスカウント間隔が前記所定アドレスカウント間隔と異なるエラー検出間隔異常が所定の複数回数連続して検出されると、アドレス接続異常であると判断する、ことを特徴とする請求項８−１０のいずれか１項に記載の回路間データ転送システム。
【請求項１２】
回路間でメモリを介してデータ転送を行うシステムであって、
前記メモリの転送用領域に書き込まれる転送データに、所定アドレスカウント間隔で誤り訂正可能なエラービットを書き込んだエラー検出用データを生成する生成手段と、
前記メモリの転送用領域から読み出された転送データからエラーが検出されるアドレスカウント間隔を監視することでデータ転送の正常性を検証する検査手段と、
を有する回路間データ転送システム、
としてコンピュータを機能させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は回路間でデータを転送する際の正常性検証を行うことができるデータ転送方法およびシステムに関する。
【背景技術】
【０００２】
２つのプロセッサ（ＣＰＵ）間でデータ転送を行う方式について各種提案されている。例えば、下記特許文献１には、データのライト（書き込み）およびリード（読み出し）を同時に行うことができるデュアルポートメモリを介してデータ転送を行う技術が開示されている。また、下記特許文献２には、２つのＣＰＵ間でＦＩＦＯメモリを通してデータ転送を行う場合、ＦＩＦＯメモリに転送したデータが正常か否かをチェックするチェック回路を設け、正常であればＣＰＵから応答がなくとも次の処理を実行可能にしたデータ転送方式が開示されている。
【０００３】
さらに、メモリを介してＣＰＵ間データ転送を行う場合、ＥＣＣ(Error Check and Correct)用メモリを用いてデータ接続の正常性を検証し、さらにＣＰＵが運用を開始する前に、全アドレスビットに対して試験的なライトおよびリードを行うことでアドレス接続の正常性を検証する方式が一般的に採用されている。
【０００４】
【特許文献１】特開平０９−０８１５３３
【特許文献２】特開平１１−０１８１２２
【発明の開示】
【発明が解決しようとする課題】
【０００５】
上述したメモリを介してＣＰＵ間データ転送を行う方式では、次のような問題が発生する可能性がある。たとえば、運用中にデータ転送用メモリでアドレスバスが断線するなどの異常が発生すると、誤ったアドレスにライト／リードアクセスが行われる。しかしながら、その場合でもデータ転送用メモリおよびＥＣＣメモリのデータ値は正常であるから、ＥＣＣによってエラー検出はされない。その結果、転送データの抜けや転送順序誤りが発生しても、その原因であるアドレス異常を発見することはできない。
【０００６】
本発明の目的は、運用中にアドレス接続の正常性を検証することができ、メモリアクセスの信頼性を向上させることができる回路間データ転送方法およびシステムを提供することにある。
【課題を解決するための手段】
【０００７】
本発明によるデータ転送方法は、回路間でメモリを介してデータ転送を行う方法であって、メモリの転送用領域に書き込まれる転送データに所定アドレスカウント間隔で誤り訂正可能なエラービットを書き込み、メモリの転送用領域から読み出された転送データからエラーが検出されるアドレスカウント間隔を監視することでデータ転送の正常性を検証する、ことを特徴とする。
【発明の効果】
【０００８】
本発明によれば、回路の運用中にアドレス接続の正常性を検証することができ、メモリアクセスの信頼性を向上させることができる。
【発明を実施するための最良の形態】
【０００９】
以下、データ転送を行う回路として、２つのＣＰＵ（中央処理装置）を例示し、これらＣＰＵ間での転送用メモリを介したデータ転送システムおよび方法について図面を参照しながら詳細に説明する。ただし、ＣＰＵの個数は２個に限定されるものではなく、複数のＣＰＵ間のデータ転送にも本発明は適用可能である。また、本発明においてデータ転送を行う回路は、ＣＰＵと呼ばれる回路に限定するものではなく、プログラム制御プロセッサまたはコア、あるいは一般に情報処理機能を有する回路であってもよい。
【００１０】
１．第１実施例
図１は本発明の第１実施例による回路間データ転送システムのブロック図である。図１に示すように、本実施例によるデータ転送回路１は、本実施例の特徴的な制御を実行するＥＣＣ制御部２、転送データを中継する転送用メモリ３、転送データから生成されたエラー訂正符号を格納するＥＣＣ用メモリ４、アドレスバスおよびデータバスで接続されている第１ＣＰＵ５と第２ＣＰＵ６、および、バス調停回路７を有する。なお、ＥＣＣ制御部２については後述する。
【００１１】
第１ＣＰＵ５および第２ＣＰＵ６は、転送用メモリ３を介して相互にデータ転送を行う。たとえば第１ＣＰＵ５から第２ＣＰＵ６へデータ転送を行う場合、第１ＣＰＵ５が転送するデータを転送用メモリ３へライトし、その後に第２ＣＰＵ６が転送用メモリ３にライトされたデータをリードする。ＥＣＣ用メモリ４は、転送用メモリ３を介したデータ転送時にエラー検出と訂正を行うためのエラー訂正符号を保存する。このようなデータ転送時のメモリ制御とエラー検出および訂正とはＥＣＣ制御部２により行われる。
【００１２】
バス調停回路７は、第１ＣＰＵ５から第２ＣＰＵ６へデータ転送する場合と、第２ＣＰＵ６から第１ＣＰＵ５へデータ転送する場合とを調停してデータ転送方向を決定する。第１ＣＰＵ５および第２ＣＰＵ６は、転送用メモリ３に対してライトアクセス又はリードアクセスを開始するときにバス調停回路７へ要求信号を出力する。バス調停回路７は、メモリアクセスを許可する方のＣＰＵに対して許可信号を出力する。許可信号が受けた第１ＣＰＵ５あるいは第２ＣＰＵ６は、アドレスとアクセス制御信号を出力し、データバスを介して転送用メモリ３に対してリードアクセスあるいはライトアクセスを行う。ＥＣＣ制御部２には、第１ＣＰＵ５および第２ＣＰＵ６のデータバスおよびアクセス制御信号が接続されており、転送用メモリ３とＥＣＣ用メモリ４のデータバスおよびアクセス制御信号、さらに第１ＣＰＵ５と第２ＣＰＵ６の制御信号も接続されている。
【００１３】
一方のＣＰＵから転送用メモリ３にライトアクセスが行われると、ＥＣＣ制御部２は、当該ＣＰＵから出力されるアクセス制御信号を転送用メモリ３およびＥＣＣ用メモリ４へ中継し、かつＣＰＵ間データバスに出力されるデータを転送用メモリ３へ中継する。これと同時に、ＥＣＣ制御部２はデータの値からエラー訂正符号を生成してＥＣＣ用メモリ４へ格納する。
【００１４】
これに続いて、他方のＣＰＵから転送用メモリ３にリードアクセスが行われると、ＥＣＣ制御部２は、当該ＣＰＵからのアクセス制御信号を転送用メモリ３およびＥＣＣ用メモリ４へ中継し、転送用メモリ３からのリードデータ出力値とＥＣＣ用メモリ４から読み出されたエラー訂正符号とを用いてエラー検査を行う。エラー検査の結果が、１ビット誤りで訂正可能な場合は訂正したデータを当該他方のＣＰＵへ転送し、複数ビット誤りで訂正不可能あるいはエラー検出無しの場合は転送用メモリ３のリードデータをそのまま当該他方のＣＰＵへ転送する。また、ＥＣＣ制御部２は制御信号を用いて第１ＣＰＵ５および第２ＣＰＵ６へアドレスバス異常を通知し、また第１ＣＰＵ５および第２ＣＰＵ６は制御信号によってＥＣＣ制御部２の動作を制御する。
【００１５】
図２に示すように、転送用メモリ３は、第１ＣＰＵ５がライトしたデータを第２ＣＰＵ６がリードしてデータ転送するための領域３ａと、第２ＣＰＵ６がライトしたデータを第１ＣＰＵ５がリードしてデータ転送するための領域３ｂで構成され、それぞれ連続したアドレスの領域で分けられる。たとえば、１回のデータ転送サイズが３２バイトで、転送用メモリ領域３ａおよび３ｂの各データサイズが１アドレスあたり１バイトであれば、転送用メモリ領域３ａおよび３ｂの各アドレス数は３２となる。
【００１６】
図２において、ＣＰＵ５は、転送領域３ａの最後のアドレス３ｄにアクセスすると、次は再び転送領域の先頭のアドレス３ｃに戻ってアクセスを行い、同様にＣＰＵ６は、転送領域３ｂの最後のアドレス３ｆにアクセスすると、次は再び転送領域の先頭のアドレス３ｅに戻ってアクセスを行う。データ転送においてリードアクセスはライトアクセスのアドレスを追い越してはならず、転送領域のアドレス数以上遅れてもいけないという条件を維持する必要がある。
【００１７】
この条件を維持するためのリードアクセスとライトアクセスの回数を調整する方法は本発明では任意に選択できる。一例としては、バス調停回路７を第１ＣＰＵ５と第２ＣＰＵ６のアクセスを交互に選択する動作とし、それぞれのＣＰＵでライトアクセスとリードアクセスを交互に行う動作とすれば、均等なアクセスとなり、リードアクセスとライトアクセスのアドレス関係も一定に保つことができる。
【００１８】
１．１）ＥＣＣ制御部
図３は本発明の第１実施例による回路間データ転送システムのＥＣＣ制御部の構成をより詳細に示すブロック図である。ＥＣＣ制御部２は、各種アクセス制御信号を中継する制御中継回路２１、第１ＣＰＵ５からのライト回数をカウントする第１ライトカウンタ２２、第２ＣＰＵ６からのライト回数をカウントする第２ライトカウンタ２３、第１ＣＰＵ５からのリード回数をカウントする第１リードカウンタ２４、第２ＣＰＵ６からのリード回数をカウントする第２リードカウンタ２５、ＥＣＣデータ生成回路２６、および、ＥＣＣデータ検査回路２７を備えている。
【００１９】
制御信号中継回路２１は、第１ＣＰＵ５と第２ＣＰＵ６のアクセス制御信号を転送用メモリ３とＥＣＣ用メモリ４へ中継する。具体的には、制御信号中継回路２１は、第１ＣＰＵ５のアクセス制御信号からライトアクセスであることを検出すると、第１ライトカウンタ２２へ通知し、ライトアクセスの通知がある毎に第１ライトカウンタ２２はカウンタを１ずつインクリメントする。また、制御信号中継回路２１は、第１ＣＰＵ５のアクセス制御信号からリードアクセスであることを検出すると、第１リードカウンタ２４へ通知し、リードアクセスの通知がある毎に第１リードカウンタ２４はカウンタを１ずつインクリメントする。
【００２０】
同様に、制御信号中継回路２１は、第２ＣＰＵ６のアクセス制御信号よりライトアクセス制御であることを検出すると、第２ライトカウンタ２３へ通知し、ライトアクセスの通知がある毎に第２ライトカウンタ２３はカウンタを１ずつインクリメントする。また、制御信号中継回路２１は、第２ＣＰＵ６のアクセス制御信号よりリードアクセス制御であることを検出すると、第２リードカウンタ２５へ通知し、ライトアクセスの通知がある毎に第２リードカウンタ２５はカウンタを１ずつインクリメントする。
【００２１】
第１ライトカウンタ２２および第２ライトカウンタ２３は、転送用メモリ３のデータ転送に使用するメモリ領域３ａあるいは３ｂのアドレス数に１を加算した値を上限としてカウントし、カウント値が上限に到達するとＥＣＣデータ生成回路２６へ通知し、その後カウント値を０にクリアしてカウント動作を継続する。第１リードカウンタ２４および第２リードカウンタ２５は、転送用メモリ３のデータ転送に使用するメモリ領域のアドレス数に１を加算した値を上限としてカウントし、カウント値が上限に到達するとＥＣＣデータ検査回路２７へ通知し、その後カウント値を０にクリアしてカウント動作を継続する。
【００２２】
ＥＣＣデータ生成回路２６は、第１ＣＰＵ５あるいは第２ＣＰＵ６のライトデータ値よりエラー訂正符号を算出してＥＣＣ用メモリ４へ格納する。また、第１ＣＰＵ５からのライトアクセスが発生した時に第１ライトカウンタ２２のカウント値が上限と到達した場合、ＥＣＣデータ生成回路２６は当該ライトデータの任意のビットを反転させ、１ビット誤りを含むデータを転送用メモリ３へライトする。同様に、第２ＣＰＵ６からのライトアクセスが発生した時に第２ライトカウンタ２３のカウント値が上限に到達したとすれば、ＥＣＣデータ生成回路２６は、当該ライトデータの任意のビットを反転させ、１ビット誤りを含むデータとして転送用メモリ３へライトする。以下、このように一定間隔で意図的にライトされる１ビット誤りを含むデータを、適宜、「エラー検出用データ」と呼ぶ。
【００２３】
本実施例の場合、ライトカウンタ値の上限は転送領域３ａあるいは３ｂのアドレス数に１を加算した値なので、ＥＣＣデータ生成回路２６が１ビット誤りを含むエラー検出用データを転送用メモリ３にライトするアドレスは、図４のように１アドレスずつ後方へずれていく。したがって、転送領域３ａあるいは３ｂの全てのアドレスに対して、エラー検出用データが一定の時間間隔で順次書き込まれることとなる。
【００２４】
第１ＣＰＵ５あるいは第２ＣＰＵ６からの制御信号に従って、ＥＣＣデータ生成回路２６により実行されるエラー検出用データの生成開始／停止が制御される。すなわち、第１ＣＰＵ５は、第２ＣＰＵ６のライトアクセスに対するエラー検出用データ生成の開始／停止の制御が可能であり、第２ＣＰＵ６は、第１ＣＰＵ５のライトアクセスに対するエラー検出用データ生成の開始／停止の制御が可能である。
【００２５】
ＥＣＣデータ検査回路２７は、第１ＣＰＵ５あるいは第２ＣＰＵ６からのリードアクセスに従って転送用メモリ３およびＥＣＣ用メモリ４から読み出されたそれぞれのデータ値に基づいてエラー検査を行う。エラー検査の結果が、１ビット誤りで訂正可能な場合は訂正したデータをリードアクセス元のＣＰＵ５あるいは６へ転送し、複数ビット誤りで訂正不可能あるいはエラー検出無しの場合は転送用メモリ３のリードデータをそのまま転送する。
【００２６】
ＥＣＣデータ検査回路２７の内部には、第１ＣＰＵ５のリードアクセス値エラー発生回数を計数する第１エラーカウンタ２８と、第２ＣＰＵ６のリードアクセス値エラー発生回数を計数する第２エラーカウンタ２９が設けられている。第１ＣＰＵ５のリードアクセス値の検査でエラーを検出した場合は第１リードカウンタ２４のカウンタ値を０にクリアさせて、第１エラーカウンタ２８のリードアクセス値エラー発生回数のカウントをインクリメントする。第２ＣＰＵ６のリードアクセス値の検査でエラーを検出した場合は第２リードカウンタ２５のカウンタ値を０にクリアさせて、第２エラーカウンタ２９のリードアクセス値エラー発生回数のカウントをインクリメントする。
【００２７】
ＥＣＣデータ検査回路２７は、エラー検出時に、当該ＣＰＵに対応するリードカウンタからカウント値の上限到達の通知があった場合は、対応するリードカウンタ値を０にクリアさせて、さらに、当該ＣＰＵのリードアクセス値エラー発生回数のカウント値を０にクリアする。
【００２８】
ライトカウンタ２２および２３の上限値とリードカウンタ２４および２５の上限値とは同じ値に設定されている。したがって、データ転送回路１が正常な状態にあるときは、ライトカウンタが上限値になる度にＥＣＣデータ生成回路２６が転送用メモリ３にライトするエラー検出用データは、リードカウンタが上限値になる度にＥＣＣデータ検査回路２７によってエラー検出される。このため、ＥＣＣデータ検出回路２７でリードアクセス値エラー発生回数のカウンタは定期的にクリアされる。
【００２９】
データ転送回路１のアドレスバスにショートや断線などの障害が発生すると、転送用メモリ３のデータ転送に使用するメモリ領域３ａあるいは３ｂの中で重複してライトアクセスあるいはリードアクセスが行われるアドレスが発生する。この障害状態では、リードカウンタのカウント値が上限になる前にＥＣＣデータ検査回路２７によってリードデータ値のエラーが検出され、当該ＣＰＵのアクセスに対応するリードアクセス値エラー発生回数がインクリメントされる。そのままデータ転送動作が継続すれば、リードアクセス値エラー発生回数のカウンタはクリアされることなく、インクリメントが続く。
【００３０】
上述したように、第１エラーカウンタ２８はＣＰＵ５のアクセスに対応するリードアクセス値エラー発生回数を示し、第２エラーカウンタ２９はＣＰＵ６のアクセスに対応するリードアクセス値エラー発生回数を示す。ＥＣＣデータ検査回路２７は第１エラーカウンタ２８および第２エラーカウンタ２９のいずれかにおいて、Ｎ回までのエラー発生を検出すると、アドレスバス異常検出として第１ＣＰＵ５および第２ＣＰＵ６へ通知する。ここで、回数Ｎは、アドレスバス異常によるエラー発生であるか、あるいは偶発的なエラー発生であるかを判定するためのしきい値である。偶発的なエラー発生は継続して発生しないのでエラー発生回数がＮ回に到達する前に正常状態に復旧し、リードアクセス値エラー発生回数のカウントがクリアされることを想定している。
【００３１】
１．２）動作
図５は本発明の第１実施例におけるデータ転送方法を説明するためのフローチャートである。ただし、ＣＰＵ間で行われる双方向のデータ転送は基本的に同様の動作であるから、煩雑さを回避するために、一方向のデータ転送だけを説明する。この例では、第１ＣＰＵ５から第２ＣＰＵ６へデータ転送される場合に着目する。
【００３２】
まず、第１ＣＰＵ５および第２ＣＰＵ６の両者が起動し（ステップＳ５０１）、両ＣＰＵがデータ運用開始可能になると（ステップＳ５０２）、第１ＣＰＵ５からのライトアクセスによってデータ転送が開始する。一例として、１回のデータ転送サイズが３２バイトで、転送用メモリ３の転送用メモリ領域３ａのデータサイズが１アドレスあたり１バイトである場合、データ転送は次のように実行される。第１ＣＰＵ５はバス調停回路７で調停されながら３２回連続してライトアクセスを行うことで１回分の転送データを領域３ａにライトする。続いて、第２ＣＰＵ６がバス調停回路７で調停されながら、３２回連続してリードアクセスを行うことで１回分のデータ転送が完了する。このように第１ＣＰＵ５および第２ＣＰＵ６がライトアクセスおよびリードアクセスを繰り返すことでデータ転送が継続する。
【００３３】
ステップ５０２の時点では、ＥＣＣデータ生成回路２６による１ビット誤りを含むエラー検出用データの生成は停止状態であるが、ＥＣＣデータ検査回路２７によるエラー検査は動作している。
【００３４】
この場合、第２ＣＰＵ６は、データ転送回路１が正常動作していることを確認するために、ＥＣＣ制御部２からエラー検出通知信号を入力していない期間が一定期間以上であるか否かを監視する（ステップＳ５０３）。このエラー検出通知信号は、アドレスバス異常の通知を目的としたものであるが、運用開始時点ではエラー検出通知信号はメモリやデータバスの障害の検出を目的としている。この運用開始時点でメモリやデータバスに障害があると（ステップＳ５０３のＮＯ）、第２ＣＰＵ６のリードアクセス時にＥＣＣデータ検査回路２７は頻繁に（あるいは連続して）エラー発生を検出する。したがって、第２リードカウンタ２５が上限値に達する前に、エラー検出が繰り返されることでリードアクセス値エラー発生回数がしきい値Ｎに到達する。リードアクセス値エラー発生回数がしきい値Ｎに到達すると、ＥＣＣデータ検査回路２７は、第１ＣＰＵ５および第２ＣＰＵ６へ同時に障害通知を出力し、両ＣＰＵのデータ運用が停止する（ステップ５０９）。
【００３５】
第２ＣＰＵ６は、ＥＣＣデータ検査回路２７から一定期間エラー通知が無い場合（ステップＳ５０３のＹＥＳ）、監視モードを開始する（ステップＳ５０４）。すなわち、第２ＣＰＵ６は、ＥＣＣデータ生成回路２６に対して１ビット誤りを含むエラー検出用データを生成するように制御する。上述したように、第１ＣＰＵ５がライトアクセスする度に第１ライトカウンタ２２はインクリメントするが、第１ライトカウンタ２２が上限値に達する毎に、ＥＣＣデータ生成回路２６は、転送用メモリ３にライトすべきデータの任意の１ビットを反転させ、この１ビットエラーを含むエラー検出用データを転送用メモリ領域３ａの現時点のアドレスにライトする。
【００３６】
転送用メモリ３の転送領域３ａのアドレス数が１２８個である場合を例にとると、第１ライトカウンタ２２は第１ＣＰＵ５が１２９回ライトアクセスを行う度にカウント値が上限値となるので、そのタイミングでＥＣＣデータ生成回路２６はエラー検出用データを生成する。前回エラー検出用データをライトした転送用メモリ領域３ａのアドレスが１００番目であったとすると、今回、ＥＣＣデータ生成回路２６がエラー検出用データをライトするアドレスは１０１番目となる（図４参照）。
【００３７】
続いて、ＥＣＣデータ検査回路２７は、エラー検出用データのエラービット検出間隔の判定を行う（ステップＳ５０５）。ただし、第１ＣＰＵ５のライトアクセスにより第１ライトカウンタ２２が初めて上限値に到達してＥＣＣデータ生成回路２６が最初にエラー検出用データを転送用メモリ３にライトした場合は、最初のエラービット検出であるから次のように動作する。最初にメモリ３にライトされたエラー検出用データは、第２ＣＰＵ６のリードアクセスでリードされるが、この時点では大抵の場合、第２リードカウンタ２５のカウント値は上限値ではない。したがって、このエラー検出用データがリードされたとき、ＥＣＣデータ検査回路２７の第２エラーカウンタ２９はリードアクセス値エラー発生回数を１としてカウントし、ステップ５０７に移る。この時点で第２リードカウンタ２５は０にクリアされる。第２リードカウンタ２５が０になると、次回のエラー検出用データがＥＣＣデータ検査回路２７で検出される時は、第２リードカウンタ２５が１２９回目のリードアクセスで上限値になるときと一致する。したがってリードアクセス値エラー発生回数のカウント値が０へクリアされ、ステップ５０５へ戻る。
【００３８】
データ転送回路１が正常な状態であれば、ＥＣＣデータ検査回路２７は、第２ＣＰＵ６によるリードアクセス回数が所定間隔である１２９回に到達する毎に、エラー検出用データの１ビットエラーを検出し、同時に第２リードカウンタ２５によって第２エラーカウンタ２９のリードアクセス値エラー発生回数のカウント値が０へクリアされる。こうして、データ転送回路１が正常状態であれば所定アドレス間隔で１ビットエラーが検出され、ステップ５０６およびステップ５０５が繰り返される。
【００３９】
ところが、第２エラーカウンタ２９でＮ回連続してリードアクセス値エラーの発生を検出すると、ＥＣＣデータ検査回路２７はアドレスバス異常検出として第１ＣＰＵ５および第２ＣＰＵ６へ通知する。このリードアクセス値エラーの連続発生回数Ｎは、上述したように、アドレスバス異常によるエラー発生であるか、あるいは偶発的なエラー発生であるかを判定するためのしきい値である。
【００４０】
一例として、転送用メモリ３の転送領域３ａのアドレス数が１２８個（アドレス値は１０進表記で０〜１２７）、アドレスバスの信号本数が７本のアドレス構成を考える。アドレスバス異常発生の一例として、第２ＣＰＵ６と転送用メモリ３との間のアドレスバスの下位から７本目（最上位ビット）の信号が断線状態となり、信号の値が常に０となったものとする。この例では、アドレス値の後半である６４（２進表記“１００００００”）〜１２７（“１１１１１１１”）に第２ＣＰＵ６がリードアクセスしようとすると、最上位ビットが“０”となるために誤って転送用メモリ３のアドレス値０（“０００００００”）〜６３（“０１１１１１１”）にリードアクセスされる現象が生じる。
【００４１】
このために、ＥＣＣデータ生成回路２６によって転送用メモリ領域３ａのアドレス値０にエラー検出用データがライトされた場合、第２ＣＰＵ６のリードアクセスはエラー検出用データを２回リードしてしまう。すなわち、アドレス値０でエラー検出用データを検出した後、アドレス値を順次増加させながらライトされた転送データをリードアクセスするが、上述したようにアドレス値６４のリードアクセスのつもりで再度アドレス値０のエラー検出用データを検出してしまう。このために見かけ上アドレス値０と６４の両方でエラー検出用データが検出されるようになり、エラー検出周期が所定間隔（１２９回のリードアクセス毎）より短くなる。
【００４２】
以下同様に、エラー検出用データがライトされるアドレス値が６３まで順次シフトする毎にエラー検出用データが２回ずつリードされ、エラー検出間隔は連続して所定間隔より短くなる。逆にリードアクセスするアドレス値が６４〜１２７の間にエラー検出用データがライトされる場合には、実際はアドレス値０〜６３がアクセスされるのでエラー検出用データはリードされなくなる。
【００４３】
他の例として、第２ＣＰＵ６と転送用メモリ３との間のアドレスバスの最下位ビットの信号が断線状態となり、信号の値が常に０となったものとする。この例では、直前のアドレス値が２回繰り返されることになる。たとえば、アドレス値０（２進表記“０００００００”）に続くアドレス値１は“００００００１”ではなく、“０００００００”となるので、実際にリードアクセスされるアドレス値は０となる。アドレス値２は“０００００１０”と正しくなるが、続くアドレス値３は“０００００１１”ではなく、“０００００１０”となるので、実際にリードアクセスされるアドレス値は２となる。したがって、ＥＣＣデータ生成回路２６によって、たとえば転送用メモリ領域３ａのアドレス値０にエラー検出用データがライトされた場合、第２ＣＰＵ６がアドレス値１にリードアクセスしようとすると、最下位ビットが“０”となるために誤って転送用メモリ３のアドレス値０（“０００００００”）にリードアクセスし、同じエラー検出用データをリードしてしまう。その他の断線状態であっても、同様にエラー検出用データを所定間隔（１２９回のリードアクセス毎）のうちに複数回リードする現象が生じる。
【００４４】
このようにアドレスバス異常が生じた場合には、いずれにしてもエラー検出周期が所定間隔（１２９回のリードアクセス毎）を維持できなくなる。そこで、ＥＣＣデータ検査回路２７は、このエラー検出周期異常がＮ回連続するか否かを判定する（ステップＳ５０７）。そして、エラー検出間隔の異常がしきい値Ｎ回連続した場合には（ステップＳ５０７のＹＥＳ）、ＥＣＣデータ検査回路２７はアドレスバス異常として判定する（ステップＳ５０８）。そして、その判定結果を第１ＣＰＵ５および第２ＣＰＵ６へ通知し、障害通知を受けた第１ＣＰＵ５および第２ＣＰＵ６は運用を停止する（ステップＳ５０９）。
【００４５】
エラーが検出されるのは、本実施例のようにエラー検出用データを意図的にライトした場合だけでなく、外来ノイズ等により偶発的にエラーが発生した場合もある。しかしながら、偶発的なエラーは一時的な発生に限られる。偶発的に発生したエラーによってもステップ５０５において所定間隔以外のエラー検出として判定され、ステップ５０７へ遷移するが、しきい値のＮ回検出に至る前に正常状態へ復旧するので、アドレスバス異常として判定されない。
【００４６】
なお、図５によって説明した本実施例では、第１ＣＰＵ５から第２ＣＰＵ６へのデータ転送の場合を例示したが、第２ＣＰＵ６から第１ＣＰＵ５へのデータ転送であっても基本的な動作は同じである。すなわち、上述した説明において、第１ＣＰＵ５と第２ＣＰＵ６とを置き換え、さらに第１ライトカウンタ２２の代わりに第２ライトカウンタ２３を、第２リードカウンタ２５の代わりに第１リードカウンタ２４を、第２エラーカウンタ２９の代わりに第１エラーカウンタ２８を、それぞれ置き換えれば、第２ＣＰＵ６から第１ＣＰＵ５へのデータ転送の場合の動作説明となる。
【００４７】
１．３）効果
上述した本発明の第１実施例によるデータ転送システムおよび方法によれば、プロセッサ運用中にアドレス接続の正常性を検証することができ、メモリアクセスの信頼性を向上させることができる。さらに、既存のＥＣＣ機能をアドレス検証に利用することで小規模回路を付加するだけでアドレス検証機能を実現できる。
【００４８】
２．第２実施例
本発明の第２実施例によれば、エラー検出により運用を停止する前に、もう一度エラー監視をやり直す機会を与えることでシステムの安定性を向上させる。以下、第２実施例について詳細に説明する。
【００４９】
２．１）構成
図６は本発明の第２実施例による回路間データ転送システムのＥＣＣ制御部の構成をより詳細に示すブロック図である。本実施例におけるＥＣＣ制御部２は、図３に示す第１実施例におけるＥＣＣ制御部２にフラグ回路３０を追加した構成を有する。その他の機能ブロックは図３と同じであるから、同一参照番号を付して説明は省略する。
【００５０】
フラグ回路３０は、フラグ状態として１ビットの論理状態を保持できる回路であり、ＥＣＣデータ検査回路２７によりフラグ状態を０または１に制御される。ＥＣＣデータ検査回路２７は、起動後の初期状態においてはフラグ回路３０の状態を０に設定する。ＥＣＣデータ検査回路２７は、リードアクセス値エラー発生回数をＮ回カウントしたときにフラグ回路３０のフラグ状態が０であればフラグ状態を１に設定する。ＥＣＣデータ検査回路２７は、フラグ回路３０のフラグ状態が１であれば、ＣＰＵ５およびＣＰＵ６へ異常検出を通知する。
【００５１】
また、フラグ回路３０のフラグ状態は、ＥＣＣデータ検査回路２７を通してＣＰＵ５およびＣＰＵ６へ常に通知される。この通知信号は、異常検出の通知信号とは別の信号である。ＣＰＵ５およびＣＰＵ６は、通知されるフラグ状態が０から１へ変化したことを検出すると、ＥＣＣデータ生成回路２６によるエラー検出用データの生成を停止する。ＥＣＣデータ検査回路２７のリードアクセス値エラー発生回数のカウンタ２８あるいは２９は、カウント値がＮとなった次にリードアクセス値エラーを検出すると、カウント値を０に戻してカウントを継続する。
【００５２】
２．２）動作
図７は本発明の第２実施例におけるデータ転送方法を説明するためのフローチャートである。以下、第１実施例の場合と同様に、第１ＣＰＵ５から第２ＣＰＵ６へデータ転送される場合に着目して説明する。
【００５３】
まず第１ＣＰＵ５および第２ＣＰＵ６の両者が起動すると（ステップＳ７０１）、フラグ回路３０のフラグ状態は０に設定され（ステップＳ７０２）、両ＣＰＵがデータ運用開始可能になると、第１ＣＰＵ５からのライトアクセスによってデータ転送が開始する（ステップＳ７０３）。すでに述べた例によれば、第１ＣＰＵ５は、バス調停回路７で調停されながら、３２回連続してライトアクセスを行うことで１回分の転送データを領域３ａにライトする。続いて、第２ＣＰＵ６がバス調停回路７で調停されながら、３２回連続してリードアクセスを行うことで１回分のデータ転送が完了する。このように第１ＣＰＵ５および第２ＣＰＵ６がライトアクセスおよびリードアクセスを繰り返すことでデータ転送が継続する。
【００５４】
一定期間中にエラー検出が繰り返されることでリードアクセス値エラー発生回数がしきい値Ｎに到達すると（ステップＳ７０４のＮＯ）、ＥＣＣデータ検査回路２７はフラグ回路３０のフラグ状態が１であるか否かをチェックする（ステップＳ７１２）。この時点ではフラグ状態は０であるから（ステップＳ７１２のＮＯ）、フラグ状態を１に設定して（ステップＳ７１３）、再度ステップＳ７０３へ戻り、ステップＳ７０４のエラー検出をやり直す。そして、フラグ状態が１に設定された状態で、一定期間中にエラー検出が繰り返されることでリードアクセス値エラー発生回数がしきい値Ｎに到達すると（ステップＳ７０４のＮＯ）、ＥＣＣデータ検査回路２７は第１ＣＰＵ５および第２ＣＰＵ６へ同時に障害通知を出力し、両ＣＰＵのデータ運用が停止する（ステップＳ７１５）。
【００５５】
第２ＣＰＵ６は、ＥＣＣデータ検査回路２７から一定期間エラー通知が無い場合（ステップＳ７０４のＹＥＳ）、監視モードを開始する（ステップＳ７０５）。以下、ステップＳ７０６〜Ｓ７０８までの動作は、上述した図５のステップＳ５０５〜Ｓ５０７の動作と同じであるから説明は省略する。
【００５６】
エラー検出間隔の異常がしきい値Ｎ回連続した場合（ステップＳ７０８のＹＥＳ）、ＥＣＣデータ検査回路２７はフラグ回路３０のフラグ状態が１であるか否かをチェックする（ステップＳ７０９）。フラグ状態が０であれば（ステップＳ７０９のＮＯ）、フラグ状態を１に設定する（ステップＳ７１０）。ＣＰＵはフラグ状態が０から１になったことを検出すると、ＥＣＣデータ生成回路２６のエラー検出データの生成を停止させる（ステップＳ７１１）。監視モード停止制御によりアドレス異常検出のためのエラー発生は無くなるので、ステップ７０３へ戻って再度エラー監視をやり直す。監視モードを停止して（ステップＳ７１１）、ステップＳ７０３へ戻る。
【００５７】
フラグ状態が１であれば（ステップＳ７０９のＹＥＳ）、アドレスバス異常と判定して（ステップＳ７１４）、その判定結果を第１ＣＰＵ５および第２ＣＰＵ６へ通知し、障害通知を受けた第１ＣＰＵ５および第２ＣＰＵ６は運用を停止する（ステップＳ７１５）。
【００５８】
３．本発明の諸側面
本発明の第１側面によれば、転送用メモリの転送用領域に書き込まれる転送データに、所定アドレスカウント間隔で誤り訂正可能なエラービットを書き込み、転送用領域から読み出された転送データからエラーが検出されるアドレスカウント間隔を監視することでデータ転送の正常性を検証する。
【００５９】
望ましくは、誤り訂正可能なエラービットは、１つのアドレスに書き込まれるべきデータの任意の１ビットを反転させた当該１ビットであり、誤り訂正可能なエラービットを含むデータがエラー検出用データである。
【００６０】
また、エラー検出用データは転送用領域内で順次シフトさせながら転送用メモリの全アドレスを対象に書き込まれる。データ転送の正常性検証は、前記転送用領域からエラーが検出されるアドレスカウント間隔が所定アドレスカウント間隔と一致すればデータ転送正常と判断し、一致しなければデータ転送異常と判断する、というように行われる。
【００６１】
このように、本発明の第１側面によれば、ＣＰＵ運用中にアドレス接続の正常性を検証することができ、メモリアクセスの信頼性を向上させることができる。さらに、既存のＥＣＣ機能をアドレス検証に利用することで小規模回路を付加するだけでアドレス検証機能を実現できるという効果を得る。
【００６２】
さらに望ましくは、エラーが検出されるアドレスカウント間隔が所定アドレスカウント間隔と異なるエラー検出間隔異常が所定の複数回数連続して検出されると、アドレス接続異常であると判断する。ただし、望ましい実施例として、エラー検出間隔異常が所定の複数回数連続して検出されると、アドレス接続異常であると判断する前に、データ転送の正常性検証を停止して一定期間転送データがエラー未検出状態であるか否かを判断し、一定期間エラー未検出状態であれば誤り訂正可能なエラービットの書き込みおよびデータ転送の正常性検証を実行し、再度、エラー検出間隔異常が所定の複数回数連続して検出されるとシステムの運用を停止する。
【００６３】
また、誤り訂正可能なエラービットを書き込む前に、一定期間、転送データがエラー未検出状態であるか否かを判断し、前記一定期間エラー未検出状態であれば、前記誤り訂正可能なエラービットの書き込みおよび前記データ転送の正常性検証を実行することもできる。望ましい実施例として、一定期間にエラーが検出されると、システムの運用を停止する前に再度、一定期間転送データがエラー未検出状態であるか否かを判断し、一定期間エラー未検出状態であれば誤り訂正可能なエラービットの書き込みおよびデータ転送の正常性検証を実行し、一定期間にエラーが再度検出されると、システムの運用を停止する。
【産業上の利用可能性】
【００６４】
本発明は、ＣＰＵなどの回路がメモリを介してデータ転送する装置一般に適用可能である。
【図面の簡単な説明】
【００６５】
【図１】本発明の第１実施例による回路間データ転送システムのブロック図である。
【図２】図２は転送用メモリの構成例を模式的に示す図である。
【図３】本発明の第１実施例による回路間データ転送システムのＥＣＣ制御部の構成をより詳細に示すブロック図である。
【図４】図４はＥＣＣデータ生成回路がエラー検出用データをライトする場合の説明図である。
【図５】本発明の第１実施例におけるデータ転送方法を説明するためのフローチャートである。
【図６】本発明の第２実施例による回路間データ転送システムのＥＣＣ制御部の構成をより詳細に示すブロック図である。
【図７】本発明の第２実施例におけるデータ転送方法を説明するためのフローチャートである。
【符号の説明】
【００６６】
１…データ転送回路
２…ＥＣＣ制御部
３…転送用メモリ
４…ＥＣＣ用メモリ
５…第１ＣＰＵ
６…第２ＣＰＵ
２２…第１ライトカウンタ
２３…第２ライトカウンタ
２４…第１リードカウンタ
２５…第２リードカウンタ
２６…ＥＣＣデータ生成回路
２７…ＥＣＣデータ検査回路
２８…第１エラーカウンタ
２９…第２エラーカウンタ
３０…フラグ回路
【図１】
2009042855.tif 000003
【図２】
2009042855.tif 000004
【図３】
2009042855.tif 000005
【図４】
2009042855.tif 000006
【図５】
2009042855.tif 000007
【図６】
2009042855.tif 000008
【図７】
2009042855.tif 000009