(57)【要約】【課題】メモリの故障を診断することによるシステムパフォーマンスの低下を最小限に抑えつつ、システムとしての安全性を確保することを可能とするＮＣ装置を得ること。【解決手段】同一容量を有する２つのメモリ部３，４と、メモリ部３，４に対するライト／リードによる故障診断を実行する故障診断部、２つのメモリ部３，４の一方を故障診断対象とし、他方をＣＰＵからのアクセス対象とするメモリの選択切替え制御を、１つのメモリの全領域に対する故障診断が終了する度に実行する切替え制御部、一方のメモリの故障診断が終了すると、他方のメモリの記憶データを一方のメモリに転送するデータ転送部を有するテスト回路２とを備える。【選択図】図１
2011165085.tif 000002
【特許請求の範囲】
【請求項１】
同一容量を有する２つのメモリと、
ＮＣのシステム動作を実行するＣＰＵと、
設定されたテストパターンを前記メモリに書き込み、書き込んだテストパターンを前記メモリから読み出して、読み出したテストパターンと前記設定されたテストパターンとの比較を行うことにより前記メモリに対する故障診断を実行する故障診断部を有するテスト回路と、
ＣＰＵからのアクセスとテスト回路からの故障診断のためのアクセスとの選択を行い、この選択結果に応じて、ＣＰＵからのコマンドおよびテスト回路からのコマンドの何れか一方を前記各メモリに出力するコマンド選択回路と、
前記ＣＰＵからのアドレス、ライトデータと、前記テスト回路からのアドレス、ライトデータとを選択して、前記各メモリに出力する第１のセレクタ回路と、
前記各メモリからのリードデータを前記ＣＰＵおよびテスト回路に出力するリード出力回路と、
前記リード出力回路から前記ＣＰＵに出力される各メモリからのリードデータを選択して前記ＣＰＵに出力する第２のセレクタ回路と、
を備え、
前記テスト回路は、
前記２つのメモリの一方を故障診断対象とし、他方をＣＰＵからのアクセス対象とする前記第１及び第２のセレクタ回路の選択切替え制御を、１つのメモリの全領域に対する故障診断が終了する度に実行する切替え制御部と、
一方のメモリの故障診断が終了すると、他方のメモリの記憶データを一方のメモリに転送するデータ転送部と、
を備え、前記切替え制御部の選択切替え制御は、前記データ転送部によるデータ転送処理が終了後に実行されることを特徴とするＮＣ装置。
【請求項２】
前記切替え制御部の選択切替え制御は、定期的に実行されることを特徴とする請求項１に記載のＮＣ装置。
【請求項３】
前記切替え制御部の選択切替え制御は、設定されたタイミングで不定期に実行されることを特徴とする請求項１に記載のＮＣ装置。
【請求項４】
前記故障診断部において前記メモリが故障したと判定した場合に、前記ＣＰＵに対して前記メモリが故障したことを割り込み通知する割込制御部をさらに備えることを特徴とする請求項１〜３の何れか一つに記載のＮＣ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＣＰＵからアクセス可能なメモリを搭載した数値制御装置（Numerical  Control装置；以下、「ＮＣ装置」という）に関し、特にシステム稼動中にメモリの故障を検出するための技術に関する。
【背景技術】
【０００２】
メモリが物理的に破損した場合、メモリからＣＰＵへリードされるデータが意図しないビットに変化してしまう現象として現れる。このようなメモリから読み出されるデータの変化、すなわち誤りを訂正する手段として、データの誤りを訂正するための冗長なデータを付加することで１ビットのエラーを訂正できるＥＣＣ（Error Correcting Code）機能がある。このＥＣＣ機能を用いれば、６４ビットにおける１ビット分のエラーに対してのデータ訂正が可能となるため、システム動作を継続させることができる。
【０００３】
また、アプリケーションソフトウェアにて、ＣＰＵのアクセス対象となるメモリの任意のアドレスに対して特定のビットパターンの書き込みを実行し、書き込み後に同一アドレスから読み出されたリードデータと、書き込まれたビットパターンの照合を実行することで、メモリが正しく動作しているか、物理的にメモリが破損していないかを検出することができる。
【０００４】
特許文献１では、メインメモリを二重化し、ＣＰＵが実行するプログラムやデータを並行して同時にそれぞれのメインメモリに書き込み、両方のメインメモリが常に同一の内容の情報を記憶し、一方をマスター、他方をスレーブとして使用し、パリティチェック、二重化データの比較処理、リード／ライトチェックを組み合わせたメモリ診断を実行している。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平８−１７９９９４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、ＥＣＣ機能を用いた手法では、エラー訂正のために、メモリへのアクセスごとにＥＣＣ演算が実行されるため、システムとしてのパフォーマンスが落ちてしまうという、という問題があった。
【０００７】
また、アプリケーションソフトウェアでメモリの整合性を確認する手法では、ＥＣＣ機能を用いる場合と同様に、メモリへのアクセスごとに照合演算処理を実行することになるため、システムとしてのパフォーマンスが落ちてしまうという問題に加え、メモリが破損した場合には、正常なデータが存在しないために不正なデータが読み出されることになり、メモリのエラー検出を行うことはできてもシステム動作を継続させることができない、という問題があった。
【０００８】
また、上記特許文献１に示された技術は、所謂、メモリの二重化方式を採用しているために、両メモリに並列に同じデータを書き込むことができる特殊なＣＰＵ構成を採用する必要があり、また二重化メモリから並列にデータを読み出してエラーチェックを行うので、システムとしての本来の機能のパフォーマンスが低下するという問題がある。
【０００９】
本発明は、上記に鑑みてなされたものであって、システムとしてのパフォーマンスの低下を抑え、かつメモリ不良が発生した際に、アプリケーションソフトウェアがシステム動作を安全に継続させることができる信頼性の高いＮＣ装置を得ることを目的とする。
【課題を解決するための手段】
【００１０】
上述した課題を解決し、目的を達成するために、本発明は、同一容量を有する２つのメモリと、ＮＣのシステム動作を実行するＣＰＵと、設定されたテストパターンを前記メモリに書き込み、書き込んだテストパターンを前記メモリから読み出して、読み出したテストパターンと前記設定されたテストパターンとの比較を行うことにより前記メモリに対する故障診断を実行する故障診断部を有するテスト回路と、ＣＰＵからのアクセスとテスト回路からの故障診断のためのアクセスとの選択を行い、この選択結果に応じて、ＣＰＵからのコマンドおよびテスト回路からのコマンドの何れか一方を前記各メモリに出力するコマンド選択回路と、前記ＣＰＵからのアドレス、ライトデータと、前記テスト回路からのアドレス、ライトデータとを選択して、前記各メモリに出力する第１のセレクタ回路と、前記各メモリからのリードデータを前記ＣＰＵおよびテスト回路に出力するリード出力回路と、前記リード出力回路から前記ＣＰＵに出力される各メモリからのリードデータを選択して前記ＣＰＵに出力する第２のセレクタ回路とを備え、前記テスト回路は、前記２つのメモリの一方を故障診断対象とし、他方をＣＰＵからのアクセス対象とする前記第１及び第２のセレクタ回路の選択切替え制御を、１つのメモリの全領域に対する故障診断が終了する度に実行する切替え制御部と、一方のメモリの故障診断が終了すると、他方のメモリの記憶データを一方のメモリに転送するデータ転送部とを備え、前記切替え制御部の選択切替え制御は、前記データ転送部によるデータ転送処理が終了後に実行されることを特徴とする。
【発明の効果】
【００１１】
この発明によれば、同一容量の２つのメモリ部を備え、一方を故障診断対象とし、他方をＣＰＵ部のアクセス対象とし、テスト回路部から一方のメモリ部にアクセスすることによりメモリ故障診断を行い、テスト回路部によって故障診断対象メモリ部の切替えを１つのメモリの全領域に対する故障診断が終了する度に行うようにしたので、ＣＰＵ側のシステムパフォーマンスの低下させることなく、メモリ故障診断を実施することができる。
【図面の簡単な説明】
【００１２】
【図１】図１は、実施の形態１にかかるＮＣ装置の一構成例を示すブロック図である。
【図２】図２は、レジスタ部に格納される各種設定およびステータス情報の一例を示す図である。
【図３】図３は、テスト回路部の一構成例を示す図である。
【図４】図４は、実施の形態１にかかるＮＣ装置のメモリ故障診断動作を説明するフロー図である。
【図５】図５は、実施の形態１にかかるＮＣ装置のメモリ故障診断動作を説明するフロー図である。
【図６】図６は、実施の形態１にかかるＮＣ装置のメモリ故障診断動作を説明するフロー図である。
【図７】図７は、実施の形態１にかかるＮＣ装置のメモリ故障診断動作を説明するフロー図である。
【図８】図８は、実施の形態２にかかるＮＣ装置のメモリ故障診断動作を説明するフロー図である。
【図９】図９は、実施の形態２にかかるＮＣ装置のメモリ故障診断動作を説明するフロー図である。
【図１０】図１０は、実施の形態２にかかるＮＣ装置のメモリ故障診断動作を説明するフロー図である。
【図１１】図１１は、実施の形態２にかかるＮＣ装置のメモリ故障診断動作を説明するフロー図である。
【発明を実施するための形態】
【００１３】
以下に、本発明にかかるＮＣ装置の実施の形態を図面に基づいて詳細に説明する。なお、この実施の形態によりこの発明が限定されるものではない。
【００１４】
実施の形態１．
まず、実施の形態１にかかるＮＣ装置の構成について説明する。図１は、実施の形態１にかかるＮＣ装置の一構成例を示すブロック図である。ＮＣ装置は、主たる構成要素として、同一容量で、かつ同一のアドレス構造を有する２つのＲＡＭなどで構成されるメモリ部３，４、ＮＣ装置としてのシステム動作を実行するＣＰＵ部１、およびメモリ部３，４の故障診断を実行するテスト回路部２を備えている。
【００１５】
また、ＮＣ装置は、ＣＰＵ部１、テスト回路部２、およびメモリ部３，４間のアドレス信号、データ信号、および制御信号の授受を制御するための構成要素として、リードライトデータ変換部１０、アービトレーション回路部１１、リードデータセレクタ部１２、割込制御部１３、コマンド生成部１４、コマンドセレクタ部１５、レジスタ部１６、アドレスセレクタ部１７ａ，１７ｂ、リードデータ出力部１８ａ，１８ｂ、およびライトデータセレクタ部１９ａ，１９ｂを備えている。
【００１６】
アービトレーション回路部１１は、ＣＰＵ部１からのアクセスとテスト回路部２からのアクセスとを調停し、ＣＰＵ部１およびテスト回路部２のいずれにアクセス権があるかを示す調停信号を出力する。コマンド生成部１４は、ＣＰＵ部１からのコマンド信号をメモリアクセス用制御信号に変換する。コマンドセレクタ部１５は、アービトレーション回路部１１からの調停信号と、テスト回路部２の制御信号生成部２０からのセレクト制御信号（メモリ部３，４のうちの何れが故障診断対象であるかを識別可能）に基づいて、コマンド生成部１４からのメモリアクセス用制御信号とテスト回路部２からのメモリ故障診断用コマンドとをセレクトし、セレクトした何れか一方の信号を、メモリ部３、４の一方、あるいはメモリ部３、４の双方に供給する。すなわち、コマンドセレクタ部１５で、コマンド生成部１４を介したＣＰＵ１からのメモリアクセス用制御信号（ライトコマンド、リードコマンドなど）が調停信号に基づき選択された場合は、選択されたＣＰＵ１からのメモリアクセス用制御信号がメモリ部３，４の双方に供給される。コマンドセレクタ部１５で、テスト回路部２からのメモリ故障診断用コマンド（ライトコマンド、リードコマンドなど）が調停信号に基づき選択された場合は、選択されたメモリ故障診断用コマンドがメモリ部３、４のうちのセレクト制御信号に基づき選択された一方に供給される。
【００１７】
レジスタ部１６は、メモリ故障診断における各種設定およびステータス情報を保持する。割込制御部１３は、メモリ診断によってエラーが発生した場合にＣＰＵ部１へ割り込みを発行する。アドレスセレクタ部１７ａ，１７ｂは、テスト回路部２からのセレクト制御信号に基づいて、ＣＰＵ部１から発行されるアドレスとテスト回路部２から発行されるアドレスとをセレクトして、メモリ部３，４に供給する。ライトデータセレクタ部１９ａ，１９ｂは、テスト回路部２からのセレクト制御信号に基づいて、ＣＰＵ部１から発行されるライトデータとテスト回路部２から発行されるライトデータとをセレクトして、メモリ部３，４に供給する。リードデータ出力部１８ａ，１８ｂは、メモリ部３，４から読み出されたリードデータをテスト回路部２とリードデータセレクタ部１２に供給する。リードデータセレクタ部１２は、テスト回路部２からのセレクト制御信号に基づいて、メモリ部３、４からのリードデータと、レジスタ部１６からのレジスタ値の何れか一つを選択して、リードライトデータ変換部１０に供給する。リードライトデータ変換部１０は、ＣＰＵ部１０に接続されるデータバスに供給されるデータと、リードデータセレクト部１２からのデータ、ライトデータセレクタ部１９ａ，１９ｂに供給されるライトデータとの信号変換を実行する。アドレスセレクタ部１７ａ，１７ｂ、リードデータ出力部１８ａ，１８ｂ、およびライトデータセレクタ部１９ａ，１９ｂは、メモリ部３，４のメモリインターフェースとして機能する。
【００１８】
図２は、レジスタ部１６に格納される各種設定およびステータス情報の一例を示す図である。図２に示すように、レジスタ部１６には、メモリ故障診断に使用するテストパターンデータが設定されるテストパターンデータレジスタ３０、メモリ故障診断におけるメモリ部３，４の制御切替周期がカウンタ値として設定される周期設定タイミングレジスタ３１、周期性に依らず任意のタイミングでメモリ部３，４の切替を意図するビットが設定される任意切替タイミングレジスタ３２、初回のメモリ故障診断対象とするメモリ部３，４がいずれであるかが設定されるテストＲＡＭレジスタ３３、およびメモリ故障診断にて照合エラーが発生した場合のエラーステータスが格納されるエラーステータスレジスタ３４を備えている。
【００１９】
図３は、テスト回路部２の一構成例を示す図である。制御信号生成部２０は、メモリ部３，４へのライトアクセス、リードアクセスを実行するためのメモリ故障診断用コマンド（ライトコマンド、リードコマンドなど）をコマンドセレクタ部１５に発行するとともに、アクセス権を獲得するためのアクセス権要求信号をアービトレーション回路部１１に発行する。また、制御信号生成部２０は、制御切替周期のカウント動作を行い、このカウント結果と、レジスタ部１６の周期設定タイミングレジスタ３１、およびテストＲＡＭレジスタ３３の設定内容に基づき、メモリ部３，４のうちの何れが故障診断対象であるかを判別し、この判別結果に応じて、アドレスセレクト部１７ａ，１７ｂ、ライトデータセレクタ部１９ａ，１９ｂ、リードデータセレクト部１２に供給するセレクト制御信号の切替えを実行する。すなわち、制御信号生成部２０は、初回の故障診断対象はテストＲＡＭレジスタ３３の設定内容に基づいて決定し、２回目以降は、制御切替周期のカウント結果が周期設定タイミングレジスタ３１の設定値を越えた時点で、故障診断対象を他方に切り換えるような、セレクト制御信号の切替えを実行する。
【００２０】
パターンデータ生成部２１は、レジスタ１６内のテストパターンデータレジスタ３０に設定されたテストパターンデータのビットパターンを反転するデータ反転部２４と、テストパターンデータとデータ反転部２４の出力とをセレクトしてメモリ故障診断用データとして出力するセレクタ部２５とを備える。パターン比較部２２は、メモリ故障診断用データとメモリ部３，４からリードされてきたリードデータとを照合してデータ診断を実行し、比較結果をステータス信号としてレジスタ１６内のエラーステータスレジスタ３４へ送信する。メモリ部３，４は、同一のアドレス構造を有し、アドレス生成部２３は、メモリ部３，４に出力すべきアドレス信号のインクリメント動作と、アドレス信号の出力を実行する。メモリ部３，４は、同じアドレス構造を有しているので、アドレス生成部２３は、一方のメモリ部の容量分のアドレスについてのインクリメント動作を実行する。また、アドレス制御部２３は、故障診断対象となるメモリ部３，４に出力したアドレスを一時記憶しておき、一時記憶したアドレスとＣＰＵ部１からメモリ部３，４に出力されるアドレスとを照合し、この照合結果に基づきテストパターンデータの書き込み後であってテストパターンデータの読み出し前にＣＰＵ部１から故障診断対象となるメモリ部３，４の同一アドレスに対してアクセスがあったか否かを判断する。
【００２１】
つぎに、実施の形態１にかかるＮＣ装置の概略動作について、図１〜図３を参照して説明する。
【００２２】
ＣＰＵ部１は、アドレス信号、データ信号、コマンド信号を用いてメモリ部３，４へアクセスする。コマンド信号は、コマンド生成部１４にて、メモリアクセス用制御信号に変換され、コマンドセレクタ部１５にて、テスト回路２からのメモリ故障診断用コマンドとセレクトされたあと、メモリ部３，４の双方に送られる。なお、コマンドセレクタ部１５に送られたメモリアクセス用制御信号およびメモリ故障診断用コマンドは、レジスタ部１６へのアクセスにも用いられる。
【００２３】
アドレス信号は、メモリ部３，４のそれぞれに接続されたアドレスセレクタ部１７ａ，１７ｂに送られ、テスト回路部２からのセレクト制御信号によってテスト回路部２から送られてくるテストアドレスとセレクトされてメモリ部３，４に送られる。
【００２４】
データ信号は、リードライトデータ変換部１０にてライトデータとリードデータに変換される。メモリ部３，４へのライトアクセスの場合、リードライトデータ変換部１０を経由したライトデータは、ライトデータセレクタ部１９ａ，１９ｂに送られ、テスト回路部２からのセレクト制御信号によってテスト回路部２から送られてくるテストパターンデータとセレクトされてメモリ部３，４に送られる。また、ライトデータは、メモリ部３、４以外に、テスト回路２の動作を設定するためのレジスタ部１６にも送られ、ＣＰＵ部１からの任意のライトデータをレジスタ部１６に書き込む際に使用される。
【００２５】
メモリ部３，４からのリードデータは、リードデータ出力部１８ａ，１８ｂを経由して一旦リードデータセレクタ部１２に送られ、メモリ部３，４から出力されるリードデータおよびレジスタ部１６から出力されるレジスタ値のうちのいずれのデータをＣＰＵ部１へ送るかがセレクトされる。ここでセレクトされたリードデータは、最終的にリードライトデータ変換部１０にてリードデータとしてＣＰＵ部１へ送信される。レジスタ部１６のレジスタ値は、ＣＰＵ１がこれを参照する際に、ＣＰＵ１に読み込まれる。
【００２６】
また、メモリ部３，４からのリードデータは、ＣＰＵ部１へのリードレスポンスとなるデータのほかに、メモリ故障診断におけるリードデータとして、リードデータ出力部１８ａ，１８ｂを経由してテスト回路部２へ送られる。メモリ故障診断におけるリードデータは、テスト回路部２内のパターン比較部２２において、パターン生成部２１で生成されたメモリ故障診断用データとの照合に使用される。パターン比較部２２においてリードデータとメモリ故障診断用データとの不一致が発生した場合には、メモリ部３，４にメモリ破損を含む不良が発生したと判定し、パターン比較部２２は、照合エラーを示すエラーステータス信号をレジスタ部１６内のエラーステータスレジスタ３４に送る。
【００２７】
アービトレーション回路部１１は、ＣＰＵ部１からメモリ部３，４へのアクセスとテスト回路部２からメモリ部３，４へのアクセスとのアクセス権調停制御を行い、その調停結果をテスト回路部２の制御信号生成部２０およびコマンドセレクタ部１５に出力する。アクセスの優先順位はＣＰＵ部１からのアクセスが上位にあり、ＣＰＵ部１からのアクセスがある場合には、テスト回路部２からのメモリアクセスを中断し、ＣＰＵ部１のメモリアクセスが完了するまで待機させることで、ＣＰＵ部１からシステム動作のために使用されているメモリ部３，４のアクセスウェイトを最小限に抑えることを実現する。
【００２８】
つぎに、実施の形態１にかかるＮＣ装置のメモリ故障診断動作について、図１〜図７を参照して説明する。図４〜図７は、実施の形態１にかかるＮＣ装置のメモリ故障診断動作を説明するフロー図である。ここでは、初回のメモリ故障診断対象となるメモリ部をメモリ部４とした場合の具体的な動作を説明する。
【００２９】
図４に示すように、ＮＣ装置の電源を投入すると初期設定が開始され、ＣＰＵ部１からレジスタ部１６内のテストパターンデータレジスタ３０に任意のテストパターンデータを設定する（ステップＳＴ１０１）。この際設定されるテストパターンデータは、メモリ部３，４上のビット不良を見つけ出すため、隣り合うビット間の影響を考慮して、例えば３２ビットのビットデータで５ａ５ａ５ａ５ａｈなどのトグルパターンを設定する。
【００３０】
つぎに、ＣＰＵ部１は、メモリ故障診断を実施した後に、ＣＰＵ部１が使用するメモリ部３とテスト回路部２が使用するメモリ部４を切り替えるためのタイミングをレジスタ１６内の周期切替タイミングレジスタ３１に設定する（ステップＳＴ１０２）。ここで、制御切替周期は、メモリ部３，４の容量により異なり、一方のメモリ部の全領域を診断する所要時間より長くなるように設定され、またＣＰＵ部１によるアクセスによる故障診断の待ち時間、さらには、つぎに故障診断を行う一方のメモリ部から故障診断が終了した他方のメモリ部に対して記憶データを転送記憶するデータコピー処理に要する時間も考慮して決定される。
【００３１】
つぎに、ＣＰＵ部１は、初回のメモリ故障診断対象がメモリ部４であることをレジスタ１６内のテストＲＡＭレジスタ３３に設定する（ステップＳＴ１０３）。これにより、これ以降、第１回目の故障診断の際は、テスト回路部２はメモリ部４をメモリ故障診断対象としてアクセスし、ＣＰＵ部１からメモリ部３へのアクセスとは別にメモリ故障診断を実行することになる。なお、初期設定以降、ＣＰＵ部１はテスト回路部２が自動的にメモリ部３，４を切り替えていることは意識せず動作することができる。
【００３２】
ステップＳＴ１０１〜ステップＳＴ１０３での初期設定が終了すると、テスト回路部２の制御信号生成部２０は、レジスタ部１６のテストＲＡＭレジスタ３３の設定内容に基づき、メモリ部３，４のうちの何れが故障診断対象であるかを判別し、この判別結果に応じて、アドレスセレクト部１７ａ，１７ｂ、ライトデータセレクタ部１９ａ，１９ｂ、リードデータセレクト部１２に供給するセレクト制御信号を設定する。この場合は、初回は、メモリ部４が故障診断対象であるので、アドレスセレクタ部１７ｂ、ライトデータセレクタ部１９ｂは、テスト回路部２側を選択し、アドレスセレクタ部１７ａ、ライトデータセレクタ部１９ａは、ＣＰＵ１側を選択し、リードデータセレクタ部１２は、メモリ部３側を選択するように、各セレクト制御信号を設定する。この設定は、初回のメモリ部４に対する故障診断が終了するまで、固定される。また、メモリ部３，４のうちの何れが故障診断対象であるかを示すセレクト制御信号は、コマンドセレクタ部１５にも入力される。コマンドセレクタ部１５は、調停信号がテスト回路部２にアクセス権があることを示しているときは、セレクト制御信号に基づいて制御信号生成部２０から入力されるメモリ故障診断用コマンドをメモリ部３，４のうちの故障診断対象側のメモリ部に出力する。
【００３３】
つぎに、テスト回路部２は、アービトレーション回路部１１から出力される調停信号（ＣＰＵ部１がアクセス権を得ているかテスト回路部２がアクセス権を得ているかが識別可能）に基づきＣＰＵ部１にアクセス権が付与されていないことを確認する（ステップＳＴ１０４）。ＣＰＵ部１にアクセス権が付与されている場合には（ステップＳＴ１０４：Ｎｏ）、アービトレーション回路部１１は、ＣＰＵ部１からメモリ部３へのアクセスを実行させ（ステップＳＴ１１１）、テスト回路部２は、ＣＰＵ部１からメモリ部３へのアクセスが完了するのを待つ（ステップＳＴ１１２）。
【００３４】
テスト回路部２は、ＣＰＵ部１からのアクセス要求がない場合（ステップＳＴ１０４：Ｙｅｓ）、制御信号生成部２０からアービトレーション回路部１１へアクセス要求を発行してアクセス権を獲得し、アドレス生成部２３から故障診断を行うテストアドレスを出力するとともに出力したテストアドレスを一時記憶し（ステップＳＴ１０５）、制御信号生成部２０からコマンドセレクタ部１５にライトコマンドを発行し、さらにパターン生成部２１からテストパターンデータレジスタ３０に設定されたビットパターン５ａ５ａ５ａ５ａｈをメモリ故障診断用データとして出力する（ステップＳＴ１０６）。ライトコマンドは、コマンドセレクタ部１５を介してメモリ部４に入力され、またテストアドレスはアドレスセレクタ部１７ｂを介してメモリ部４に入力される。メモリ故障診断用データは、ライトデータセレクタ部１９ｂを介してメモリ部４に入力される。
【００３５】
続いて、テスト回路部２は、指定したテストアドレスに対して書き込まれたデータの確認を行う。まず、テスト回路部２は、前記と同様にして、ＣＰＵ部１にアクセス権が付与されていないことを確認する（ステップＳＴ１０７）。ＣＰＵ部１にアクセス権が付与されている場合には（ステップＳＴ１０７：Ｎｏ）、アービトレーション回路部１１は、ＣＰＵ部１からメモリ部３へのアクセスを実行させ（ステップＳＴ１１３）、テスト回路部２は、ＣＰＵ部１からメモリ部３へのアクセスが完了するのを待つ（ステップＳＴ１１４）。テスト回路部２は、ＣＰＵ部１からメモリ部３に出力されたアドレスがステップＳＴ１０５で一時記憶したテストアドレスと一致している場合には、再度同一のテストアドレス、ライトコマンドおよびメモリ故障診断用データを発行して、メモリ部４の同一アドレスにメモリ故障診断用データを書き込む。
【００３６】
テスト回路部２は、ＣＰＵ部１からのアクセス要求がない場合（ステップＳＴ１０７：Ｙｅｓ）、制御信号生成部２０からメモリ部４に対してリードコマンドを出力する（ステップＳＴ１０８）。続いて、テスト回路部２は、パターン比較部２２においてメモリ部４からのリードデータとメモリ故障診断用データ、すなわちライトデータとの比較を行い（ステップＳＴ１０９）、比較結果が不一致と判断された場合には（ステップＳＴ１０９：Ｎｏ）、図７に示すステップＳＴ１４１〜ステップＳＴ１４３の処理に移行する。ステップＳＴ１４１〜ステップＳＴ１４３の処理については、後述する。
【００３７】
リードデータとライトデータとの比較結果が同じ値であると判断された場合には（ステップＳＴ１０９：Ｙｅｓ）、次のシーケンスとして、テスト回路部２は、パターン生成部２１内のデータ反転部２４においてテストパターンデータレジスタ３０に設定された値の反転値ａ５ａ５ａ５ａ５ｈを生成し、メモリ故障診断用データとしてメモリ部４へ書き込むべくセレクタ部２５へ送信する（ステップＳＴ１１０）。
【００３８】
図５に示すフローに移行し、ここでも、まず、テスト回路部２は、前記と同様にして、ＣＰＵ部１にアクセス権が付与されていないことを確認する（ステップＳＴ１１６）。ＣＰＵ部１にアクセス権が付与されている場合には（ステップＳＴ１１６：Ｎｏ）、アービトレーション回路部１１は、ＣＰＵ部１からメモリ部３へのアクセスを実行させ（ステップＳＴ１２４）、テスト回路部２は、ＣＰＵ部１からメモリ部３へのアクセスが完了するのを待つ（ステップＳＴ１２５）。
【００３９】
テスト回路部２は、ＣＰＵ部１からのアクセス要求がない場合（ステップＳＴ１１６：Ｙｅｓ）、制御信号生成部２０からアービトレーション回路部１１へアクセス要求を発行してアクセス権を獲得し、アドレス生成部２３から故障診断を行うテストアドレスを出力するとともに出力したテストアドレスを一時記憶し（ステップＳＴ１１７）、制御信号生成部２０からコマンドセレクタ部１５にライトコマンドを発行し、さらにパターン生成部２１からテストパターンデータレジスタ３０に設定された値の反転値をメモリ故障診断用データとして出力する（ステップＳＴ１１８）。ライトコマンドは、コマンドセレクタ部１５を介してメモリ部４に入力され、またテストアドレスはアドレスセレクタ部１７ｂを介してメモリ部４に入力される。反転値としてのメモリ故障診断用データは、ライトデータセレクタ部１９ｂを介してメモリ部４に入力される。
【００４０】
続いて、テスト回路部２は、指定したテストアドレスに対して書き込まれたデータの確認を行う。まず、テスト回路部２は、前記と同様にして、ＣＰＵ部１にアクセス権が付与されていないことを確認する（ステップＳＴ１１９）。ＣＰＵ部１にアクセス権が付与されている場合には（ステップＳＴ１１９：Ｎｏ）、アービトレーション回路部１１は、ＣＰＵ部１からメモリ部３へのアクセスを実行させ（ステップＳＴ１２６）、テスト回路部２は、ＣＰＵ部１からメモリ部３へのアクセスが完了するのを待つ（ステップＳＴ１２７）。テスト回路部２は、ＣＰＵ部１からメモリ部３に出力されたアドレスがステップＳＴ１１７で一時記憶したテストアドレスと一致している場合には、再度同一のテストアドレス、ライトコマンドおよび反転値としてのメモリ故障診断用データを発行して、メモリ部４の同一アドレスにメモリ故障診断用データを書き込む。
【００４１】
テスト回路部２は、ＣＰＵ部１からのアクセス要求がない場合（ステップＳＴ１１９：Ｙｅｓ）、制御信号生成部２０からメモリ部４に対してリードコマンドを出力する（ステップＳＴ１２０）。続いて、テスト回路部２は、パターン比較部２２においてメモリ部４からのリードデータとメモリ故障診断用データすなわちライトデータとの比較を行い（ステップＳＴ１２１）、比較結果が不一致と判断された場合には（ステップＳＴ１２１：Ｎｏ）、図７に示すステップＳＴ１４１〜ステップＳＴ１４３の処理に移行する。リードデータとライトデータとの比較結果が同じ値であると判断された場合には（ステップＳＴ１２１：Ｙｅｓ）、次のシーケンスとして、テスト回路部２は、アドレス生成部２３内においてテストアドレスをインクリメントし（ステップＳＴ１２２）、続いてインクリメントされたアドレスがメモリ容量に従った最終アドレスか否かの判断を行う（ステップＳＴ１２３）。
【００４２】
インクリメントされたアドレスが最終アドレスではない場合（ステップＳＴ１２３：Ｎｏ）、図４のステップＳＴ１０４に戻り、インクリメントされたアドレスに対して前述と同様にして、メモリ故障診断用データの書き込み処理を実行する（ステップＳＴ１０４）。以下、最終アドレスへのメモリ故障診断が実行されるまで同じ処理を繰り返す（ステップＳＴ１０４〜ステップＳＴ１２３）。
【００４３】
インクリメントされたアドレスが最終アドレスと判断された場合（ステップＳＴ１２３）、テスト回路部２は、メモリ部４の全領域に対するメモリ故障診断の結果、メモリの破損を含む不良ビットは存在しないと判断し、続いてＣＰＵ部１がアクセスしていたメモリ部３の記憶データをメモリ部４に転送記憶するデータコピー処理を実行する。このデータコピー処理の際には、アドレスセレクタ部１７ａ，１７ｂ、ライトデータセレクタ部１９ａ，１９ｂの切替え方が、故障診断中とは異なる。すなわち、テスト回路部２は、データコピー処理の際には、例えば、アービトレーション回路部１１から出力される調停信号に基づき、ＣＰＵ部１がアクセス中のときは、アドレスセレクタ部１７ａ，１７ｂ、ライトデータセレクタ部１９ａ，１９ｂがＣＰＵ部１側を選択し、テスト回路部２側がアクセス中のときは、アドレスセレクタ部１７ａ，１７ｂ、ライトデータセレクタ部１９ａ，１９ｂがテスト回路２側を選択するような切替えを実行する。なお、リードデータセレクタ部１２では、初回の診断処理中と同様、メモリ部３側を選択している。
【００４４】
つぎに、ＣＰＵ部１がアクセスしていたメモリ部３の記憶データをメモリ部４に転送記憶するデータコピー処理について具体的に説明する。この実施の形態では、ＣＰＵ部１がアクセスしていたメモリ部３の記憶データを故障診断が終了したメモリ部４に転送記憶するに当たり、メモリ部３，４の双方からデータを読み出し、読み出した双方のデータのうちのメモリ部３のデータを選択し、選択したメモリ部３のデータをメモリ３，４に書き込むことで、結果的にメモリ部３からメモリ４へのデータコピーを実現する。このため、テスト回路部２の制御信号生成部２０でデータコピー処理であることを示す信号（図示せず）をコマンドセレクタ部１５に入力する。コマンドセレクタ部１５では、データコピー処理であることを示す信号が入力された場合は、調停信号がテスト回路部２にアクセス権があることを示している場合でも、制御信号生成部２０から入力されるメモリ故障診断用コマンド（ライトコマンド、リードコマンド）をメモリ部３，４の双方に出力する。図６に示すフローに移行し、テスト回路部２は、まず、前記と同様にして、ＣＰＵ部１からのアクセス要求が発行されていないことを確認する（ステップＳＴ１２９）。ＣＰＵ部１からのアクセスが発行されている場合には（ステップＳＴ１２９：Ｎｏ）、アービトレーション回路部１１は、ＣＰＵ部１からメモリ部３へのアクセスを実行させ（ステップＳＴ１３７）、テスト回路部２は、ＣＰＵ部１からメモリ部３へのアクセスが終了するまで待つ（ステップＳＴ１３８）。
【００４５】
ＣＰＵ部１からのアクセス要求がない場合（ステップＳＴ１２９：Ｙｅｓ）、テスト回路部２は、アドレス生成部２３から先頭アドレスを出力し（ステップＳＴ１３０）、制御信号生成部２０からリードコマンドを出力する（ステップＳＴ１３１）。このリードコマンドはコマンドセレクタ部１５を介してメモリ部３，４に入力され、またアドレス信号はアドレスセレクタ部１７ａ，１７ｂを介してメモリ部３，４に入力される。メモリ部３，４からリードされたデータは、リードデータ出力部１８ａ，１８ｂを介してテスト回路部２のパターン比較部２２に入力され、一時記憶される。勿論、メモリ部４から読み出されたデータは不要であるので、一時記憶しないようにしてもよい。
【００４６】
つぎに、テスト回路部２は、ＣＰＵ部１からのアクセス要求が発行されていないことを確認する（ステップＳＴ１３２）。ＣＰＵ部１からのアクセスが発行されている場合には（ステップＳＴ１３２：Ｎｏ）、アービトレーション回路部１１は、ＣＰＵ部１からメモリ部３へのアクセスを実行させ（ステップＳＴ１３９）、テスト回路部２は、ＣＰＵ部１からメモリ部３へのアクセスが終了するまで待つ（ステップＳＴ１４０）。
【００４７】
ＣＰＵ部１からのアクセス要求が発行されていない場合は（ステップＳＴ１３２：Ｙｅｓ）、テスト回路部２は、メモリ部４に対してメモリ部３からリードしてきたデータの書き込みを実行する（ステップＳＴ１３３）。すなわち、テスト回路部２は、アドレス生成部２３から先頭アドレスを出力し、制御信号生成部２０からライトコマンドを出力し、パターン生成部２１からパターン比較部２２に一時記憶されたメモリ３からのリードデータをライトデータとして出力する。このライトコマンドはコマンドセレクタ部１５を介してメモリ部３，４に入力され、またアドレス信号はアドレスセレクタ部１７ａ，１７ｂを介してメモリ部３，４に入力され、またライトデータはライトデータセレクタ部１９ａ，１９ｂを介してメモリ部３，４に入力される。
【００４８】
つぎに、テスト回路部２のアドレス生成部２３は、アドレスをインクリメントし（ステップＳＴ１３４）、そのインクリメントされたアドレスが最終アドレスか否かを判断する（ステップＳＴ１３５）。インクリメントされたアドレスが最終アドレスでない場合には（ステップＳＴ１３５：Ｎｏ）、ステップＳＴ１２９に戻り、引き続きメモリ部３からのデータのリードとメモリ部４へのリードデータの書き込みを繰り返し実行する（ステップＳＴ１２９〜ステップＳＴ１３５）。
【００４９】
なお、メモリ故障診断用コマンド（ライトコマンド、リードコマンド）を所要の一方のメモリ部３，４に入力するようにして、上記データコピー処理を実現するようにしてもよい。この場合も、制御信号生成部２０からデータコピー処理であることを示す信号（図示せず）をコマンドセレクタ部１５に入力する。コマンドセレクタ部１５は、データコピー処理であることを示す信号が入力された場合、セレクト制御信号に基づきＣＰＵ部１がアクセスしている側のメモリ部３を識別し、識別したメモリ部３にのみテスト回路部２からのリードコマンドを出力する。この結果、メモリ部３のデータが読み出されてテスト回路部２に一時記憶される。また、コマンドセレクタ部１５は、データコピー処理であることを示す信号が入力された場合、セレクト制御信号に基づき故障診断対象側のメモリ部４を識別し、識別したメモリ部４にのみテスト回路部２からのライトコマンドを出力する。この結果、メモリ部３から読み出されたデータは、メモリ部４に書き込まれる。
【００５０】
なお、ステップＳＴ１２９〜ステップＳＴ１３５の処理を行っている間にＣＰＵ部１からメモリ部３へのライトアクセスが発行された場合、メモリ部３，４の両者に対してライトアクセスが実行される。すなわち、テスト回路部２によるデータコピー実行後に、データコピーが完了したメモリ部３のアドレスに対してＣＰＵ部１からライトアクセスされてデータが書き換えられた場合でも、メモリ部４への書き換えも同時に行われているため、ＣＰＵ部１からライトアクセスされたデータは、正常にメモリ部４に反映される。
【００５１】
インクリメントされたアドレスが最終アドレスと認識された場合（ステップＳＴ１３５：Ｙｅｓ）、周期切替タイミングレジスタ３１に設定された時間が経過した後に、テスト回路部２は、故障診断対象をメモリ部４からメモリ部３へ切り替える（ステップＳＴ１３６）。具体的には、テスト回路部２は、アドレスセレクタ部１７ｂ、ライトデータセレクタ部１９ｂは、ＣＰＵ部１を選択し、アドレスセレクタ部１７ａ、ライトデータセレクタ部１９ａは、テスト回路２側を選択し、リードデータセレクタ部１２は、メモリ部４側を選択するように、各セレクト制御信号を設定する。この設定は、メモリ部３に対する故障診断が終了するまで、固定される。
【００５２】
そして、図４に示すステップＳＴ１０４に戻り、テスト回路部２は、メモリ部３に対するメモリ故障診断を実施する（ステップＳＴ１０４〜ステップＳＴ１３６）。以下、ＮＣ装置の電源が遮断されるまで、メモリ部３，４に対して交互にメモリ故障診断が実施される。
【００５３】
なお、メモリ部からのリードデータとライトデータとの比較を行い（ステップＳＴ１０９、ステップＳＴ１２１）、ライトデータとリードデータとの比較結果が異なった値と判断された場合には（ステップＳＴ１０９、ステップＳＴ１２１：Ｎｏ）、診断対象のメモリ部に物理的なビット破損などの不良が発生したと判断し、図７に示すフローに移行する。パターン比較部２２は、レジスタ部１６内のエラーステータスレジスタ３４に対して、照合エラーを示すステータスビットを送信する（ステップＳＴ１４１）。エラーステータスレジスタ３４にエラーステータスが設定されると、ステータス信号が割込制御部１３へ通知され、割込制御部１３は、ＣＰＵ部１に対して割り込み信号を出力する（ステップＳＴ１４２）。ＣＰＵ部１は、割り込み信号を受信すると、システムアプリケーションとしてあらかじめ設定された割り込み処理を実行する（ステップＳＴ１４３）。
【００５４】
この際、他方のメモリ部３には破損は発生していないため、システムとしては動作を停止することはなく動作を継続することが可能である。システム全体の安全性を考慮して、すぐにシステムとして停止させるか、あるいはある程度の動作を継続したあとに停止させるかは、システムアプリケーション側の処理（ステップＳＴ１４３）に依存するものとする。なお、このシステムアプリケーション側の処理により、この発明が限定されるものではないことは無論である。
【００５５】
以上のように、実施の形態１のＮＣ装置によれば、同一容量で、かつ同一のアドレス構造を有する２つのメモリ部を備え、一方を故障診断対象とし、他方をＣＰＵ部のアクセス対象とし、テスト回路部から一方のメモリ部にアクセスすることによりメモリ故障診断を行い、テスト回路部によって故障診断対象メモリ部の切替えを１つのメモリの全領域に対する故障診断が終了する度に行うようにしたので、メモリ故障診断を実施することによるシステムとしてのパフォーマンスの低下を抑えることができる。また、故障診断非対象メモリの切り替えをテスト回路部が行うようにしたので、ＣＰＵ部がアクセス対象となるメモリ部が変更されたことを意識することなく、システム動作を継続させることができ、いずれか一方のメモリ部に不良が発生しても、ＣＰＵ部が他方のメモリ部にアクセスすることにより、システム動作を安全に継続させることができる。
【００５６】
また、ＣＰＵ部からメモリ部へのアクセスがある場合には、ＣＰＵ部からメモリ部へのアクセスが完了するまで、テスト回路部からメモリ部へのアクセスを待機させるようにしたので、ＣＰＵ部からメモリ部へのアクセスウェイトを最小限に抑えることができる。
【００５７】
また、メモリ部の不良が発生したと判断した場合に、テスト回路部からＣＰＵ部に対してハードウェアによる割り込みを発行するようにしたので、正常にシステム動作を継続しつつ、任意のタイミングで安全にシステムを停止させることができる。
【００５８】
実施の形態２． 
実施の形態１では、メモリ故障診断対象メモリ部の切り替えを、あらかじめ設定された周期的な切り替えにより実施する場合について説明したが、実施の形態２では、テスト回路部２からの任意のタイミングで切り替える場合について説明する。
【００５９】
図８〜図１１は、実施の形態２にかかるＮＣ装置のメモリ故障診断動作を説明するフロー図である。なお、実施の形態１と同一の処理ステップには同一符号を付して、その詳細な説明は省略する。また、ＮＣ装置の構成についても、実施の形態１と同一であるので、その詳細な説明は省略する。図８〜図１１に示すフローチャートでは、図４のステップＳＴ１０２を削除し、図６のステップＳＴ１３６を図１０のステップＳＴ２３６に変更している。
【００６０】
実施の形態２では、図８に示すように、初期設定の際、周期切替タイミングレジスタ３１を設定せずにメモリ故障診断を開始する（ステップＳＴ１０１、ステップＳＴ１０３）。以降、図８〜図１１に示すように、実施の形態１と同様にして、先頭アドレスから最終アドレスまで診断対象のメモリ部に対するメモリ故障診断を実行する。実施の形態２では、アドレス比較により最終アドレスと認識された場合（図１０のステップＳＴ１３５）、テスト回路部２が任意切替タイミングレジスタ３２にメモリ故障診断対象メモリ部の切り替えを意図するビット設定を行うことで、テスト回路部２は、診断対象をメモリ部４からメモリ部３へ切り替える（ステップＳＴ２３６：図１０参照）。このとき、ＣＰＵ部１からメモリ部３，４へアクセスするためのリードデータセレクタ部１２、アドレスセレクタ部１７ａ，１７ｂ、およびライトデータセレクタ部１９ａ，１９ｂは、メモリ部３からメモリ部４へ切り替えられ、ＣＰＵ部１のアクセス対象がメモリ部４に切り替わり、テスト回路部２によるメモリ故障診断の対象がメモリ部３に切り替わる。
【００６１】
以上のように、実施の形態２によれば、任意切替タイミングレジスタ３２へのテスト回路部２による設定によって診断対象メモリを切替えるようにしているので、診断対象メモリの不定期のタイミングによる切替えが可能となる。
【００６２】
なお、上記実施の形態では、レジスタ部１６の各レジスタの設定を、ＣＰＵ部１が行うようにしたが、テスト回路部２がレジスタ部１６の各レジスタの設定を行うようにしてもよい。また、以上の実施の形態に示した構成は、本発明の構成の一例であり、別の公知の技術と組み合わせることも可能であるし、本発明の要旨を逸脱しない範囲で、一部を省略する等、変更して構成することも可能であることは言うまでもない。
【産業上の利用可能性】
【００６３】
以上のように、本発明にかかるＮＣ装置は、システム稼動中において、システム動作の安全性を確保しつつ、メモリの故障を検出することができる発明として有用である。
【符号の説明】
【００６４】
１        ＣＰＵ部
２        テスト回路部
３        メモリ部
４        メモリ部
１０      リードライト変換部
１１      アービトレーション回路部
１２      リードデータセレクタ部
１３      割込制御部
１４      コマンド生成部
１５      コマンドセレクタ部
１６      レジスタ部
１７ａ    アドレスセレクタ部
１７ｂ    アドレスセレクタ部
１８ａ    リードデータ出力部
１８ｂ    リードデータ出力部
１９ａ    ライトデータセレクタ部
１９ｂ    ライトデータセレクタ部
２０      制御信号生成部
２１      パターンデータ生成部
２２      パターン比較部
２３      アドレス生成部
２４      データ反転部
２５      セレクタ部
３０      テストパターンデータレジスタ
３１      周期設定タイミングレジスタ
３２      任意切替タイミングレジスタ
３３      テストＲＡＭレジスタ
３４      エラーステータスレジスタ
【図１】
2011165085.tif 000003
【図２】
2011165085.tif 000004
【図３】
2011165085.tif 000005
【図４】
2011165085.tif 000006
【図５】
2011165085.tif 000007
【図６】
2011165085.tif 000008
【図７】
2011165085.tif 000009
【図８】
2011165085.tif 000010
【図９】
2011165085.tif 000011
【図１０】
2011165085.tif 000012
【図１１】
2011165085.tif 000013