(57)【特許請求の範囲】
【請求項１】
それぞれ予め決められた処理を実行する複数の処理部と、
前記複数の処理部にそれぞれ設けられ、前記複数の処理部の異常を検出して異常検出信号を生成する複数の異常検出回路と、
前記複数の異常検出回路のいずれかからの前記異常検出信号に応答して、前記複数の処理部のうちの、異常状態にある異常処理部以外の、正常状態にある少なくとも１つの正常処理部であって前記異常処理部とは異なる処理を行う正常処理部を、異常救済処理を実行するように制御する異常監視制御部と、
前記複数の処理部からアクセス可能な共有メモリと
を具備し、
前記正常処理部は、前記異常監視制御部の制御の下、前記共有メモリに格納された異常救済プログラムを実行して前記異常救済処理を行う
処理装置。
【請求項２】
請求項１に記載の処理装置において、
前記処理は少なくとも１つの処理単位を有し、
前記異常救済処理は、前記異常処理部での処理負荷、前記正常処理部での処理負荷、及び前記異常処理部と前記正常処理部で処理されるべき処理単位の優先度に基づいて決定される
処理装置。
【請求項３】
請求項１又は２に記載の処理装置において、
前記正常処理部は、前記異常救済処理において、前記異常処理部により実行されるべき処理を実行する
処理装置。
【請求項４】
請求項１又は２に記載の処理装置において、
前記正常処理部は、前記異常救済処理において、前記異常処理部により実行されるべき処理と前記正常処理部で実行されるべき処理のうち優先度に従って処理する
処理装置。
【請求項５】
請求項１乃至４のいずれかに記載の処理装置において、
単一の入出力端子と、
前記複数の処理部と前記入出力端子に接続され、選択制御信号に応答して前記入出力端子を前記正常処理部に接続するセレクタ部と
を更に具備し、
前記異常監視制御部は、前記異常検出信号に応答して、前記選択制御信号を生成する
処理装置。
【請求項６】
請求項１乃至５のいずれかに記載の処理装置において、
前記複数の処理部の各々は、
ＣＰＵと、
前記ＣＰＵに接続されたバスと、
前記バスに接続された少なくとも１つの入出力インターフェイスと
を具備し、
前記複数の異常検出回路の各々は、
前記ＣＰＵに対して設けられた第１異常検出回路と、
前記バスに対して設けられた第２異常検出回路と、
前記入出力インターフェイスに対して設けられた第３異常検出回路と
を具備する
処理装置。
【請求項７】
請求項１乃至６のいずれかに記載の処理装置において、
前記異常監視制御部は、
前記異常検出信号をデコードしてデコード結果信号を生成する検出信号デコーダと、
前記デコード結果信号を格納する記憶部と
を具備する
処理装置。
【請求項８】
請求項７に記載の処理装置において、
前記デコード結果信号を外部に出力するための端子を
更に具備する
処理装置。
【請求項９】
請求項７又は８に記載の処理装置において、
前記異常監視制御部は、
前記正常処理部からの要求に応答して前記記憶部をアクセスし、前記異常処理部のデータを前記正常処理部へ送信すると共に、前記異常検出信号に基づき前記異常処理部からの前記記憶部へのアクセスは拒否するアクセス部
を更に具備する
処理装置。
【請求項１０】
請求項１乃至９に記載の処理装置において、
前記正常処理部から、リセット命令が設定され、前記異常処理部をリセットするために前記設定されたリセット命令を前記異常処理部に出力するレジスタを
更に具備する
処理装置。
【請求項１１】
請求項１又は２に記載の処理装置において、
前記異常監視制御部は、前記複数の処理部のそれぞれから前記予め決められた処理の処理単位が終了する度に前記処理単位に関連したデータを受信する
処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の処理を同時に行う処理装置において、異常が発生したときの処理技術に関する。
【背景技術】
【０００２】
単一のＣＰＵを使用する処理装置が、制御処理のために使用されている。しかしながら、制御処理の高度化、複雑化により単一のＣＰＵでは、処理をこなしきれなくなって来ている。そのために、複数のＣＰＵが複数の処理を同時に実行するマルチプロセッサ処理装置が開発されてきた。
【０００３】
例えば、処理Ａを実行するマルチプロセッサ装置を考えてみる。マルチプロセッサ装置はＣＰＵ１とＣＰＵ２を備え、それらは処理Ａのうちの処理Ａ１と処理Ａ２をそれぞれ実行するとする。この場合、ＣＰＵ１とＣＰＵ２が正常に処理Ａ１とＡ２を実行することができれば何ら問題なく処理Ａは終了する。
【０００４】
しかしながら、そのようなマルチプロセッサ処理装置では、複数のＣＰＵのうち１つでも動作不能になるとシステム全体がダウンしてしまうことになる。例えば、ＣＰＵ１がフリーズ状態になり、あるいは無限ループを実行する等の異常状態になると、ＣＰＵ１による処理Ａ１が未完了である。このため、ＣＰＵ２が処理Ａ２を正常に完了することができたとしても、処理Ａは完了しないことになる。また、処理Ａが完了しないので、ＣＰＵ２は、処理Ａ２を完了しても次の処理を開始することができない。こうして、マルチプロセッサ処理装置全体として正常に動作しなくなってしまう。
【０００５】
マルチプロセッサ処理装置に関連する技術として、特開２０００−７６１９９号公報に開示されている技術が知られている（特許文献１参照）。この従来例では、ＣＰＵは、調停回路に対してリクエスト信号を調停回路に発行する。調停回路は、バス調停を行い、そのＣＰＵに対してバス使用権（グラント信号）を与える。バスを開放する場合には、ＣＰＵが調停回路に対して終了信号を発行し、それに基づいてバスが開放される。このように、バス使用権を確保することによりＣＰＵの切替（入出力Ｉ／Ｆの占有／開放の制御）を行っている。
【０００６】
【特許文献１】特開２０００−７６１９９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
本発明の目的は、複数のＣＰＵのうち１つが動作不能になったとしても、そのＣＰＵの処理が他のＣＰＵにより実行されることができる処理装置を提供することである。
【課題を解決するための手段】
【０００８】
以下に、［発明の実施の形態］で使用する番号・符号を用いて、課題を解決するための手段を説明する。これらの番号・符号は、[特許請求の範囲]の記載と発明の実施の形態の記載との対応関係を明らかにするために付加されたものであるが、［特許請求の範囲］に記載されている発明の技術的範囲の解釈に用いてはならない。
【０００９】
本発明の観点では、処理装置は、それぞれ予め決められた処理を実行する複数の処理部（１０２Ａ，１０２Ｂ）と、前記複数の処理部（１０２Ａ，１０２Ｂ）にそれぞれ設けられ、前記複数の処理部（１０２Ａ，１０２Ｂ）の異常を検出して異常検出信号を生成する複数の異常検出回路（１２２Ａ，１２２Ｂ）と、前記複数の異常検出回路（１２２Ａ，１２２Ｂ）のいずれかからの前記異常検出信号に応答して、前記複数の処理部（１０２Ａ，１０２Ｂ）のうちの、異常状態にある異常処理部以外の、正常状態にある少なくとも１つの正常処理部を、異常救済処理を実行するように制御する異常監視制御部（１０８）とを具備している。
前記異常救済処理は、前記異常処理部での処理負荷、前記正常処理部での処理負荷、前記異常処理部と前記正常処理部で処理されるべき処理の優先度に基づいて決定されることがのぞましく、前記正常処理部は、前記異常救済処理において、前記異常処理部により実行されるべき処理を実行してもよいし、前記正常処理部は、前記異常救済処理において、前記異常処理部により実行されるべき処理と前記正常処理部で実行されるべき処理のうち優先度に従って処理してもよい。
また、処理装置は、単一の入出力端子（Ｔｄ）と、前記複数の処理部（１０２Ａ，１０２Ｂ）と前記入出力端子（Ｔｄ）に接続され、選択制御信号に応答して前記入出力端子（Ｔｄ）を前記正常処理部に接続するセレクタ部（１０６）とを更に具備し、前記異常監視制御部（１０８）は、前記異常検出信号に応答して、前記選択制御信号を生成する。これにより、異常処理部が接続されていた端子に、正常処理部を接続することができる。
また、前記複数の処理部（１０２Ａ，１０２Ｂ）の各々は、ＣＰＵ（２Ａ，２Ｂ）と、前記ＣＰＵ（２Ａ，２Ｂ）に接続されたバス（１２Ａ，１２Ｂ）と、前記バス（１２Ａ，１２Ｂ）に接続された少なくとも１つの入出力インターフェイス（４−１−Ａ，４−１−Ｂ）とを具備し、前記複数の異常検出回路（１２２Ａ，１２２Ｂ）の各々は、前記ＣＰＵ（２Ａ，２Ｂ）に対して設けられた第１異常検出回路（２２Ａ，２２Ｂ）と、前記バス（１２Ａ，１２Ｂ）に対して設けられた第２異常検出回路（１０Ａ，１０Ｂ）と、前記入出力インターフェイス（４−１−Ａ，４−１−Ｂ）に対して設けられた第３異常検出回路（２４Ａ，２４Ｂ）とを具備する。
前記異常監視制御部（１０８）は、前記異常検出信号をデコードしてデコード結果信号を生成する検出信号デコーダ（８２ａ，８２ｂ，８２ｃ，８２ｄ，８２ｅ，８２ｆ）と、前記デコード結果信号を格納する記憶部（８６ｃ，８６ｄ，８６ｅ，８６ｆ）とを具備する。これにより、格納されているデコード結果を調べることにより異常の発生個所をしることができる。処理装置は、前記デコード結果信号を外部に出力するための端子（Ｔｅ）を更に具備する。これにより、異常の発生を直ちに外部に知らせることができる。
前記異常監視制御部（１０８）は、前記正常処理部からの要求に応答して前記記憶部（８６ｃ，８６ｄ，８６ｅ，８６ｆ）をアクセスし、前記異常処理部のデータを前記正常処理部へ送信するアクセス部（８８ｄ，８８ｅ，８８ｆ）を更に具備する。これにより、正常処理部は、異常処理部の今までの処理状態をしることができる。
また、処理装置は、前記正常処理部から、リセット命令が設定され、前記異常処理部をリセットするために前記設定されたリセット命令を前記異常処理部に出力するレジスタ（１６Ａ，１６Ｂ）を更に具備する。これにより、異常処理部がフリーズしているときには、リセットにより正常に戻せることになる。
また、処理装置は、前記複数の処理部（１０２Ａ，１０２Ｂ）のそれぞれに設けられ、前記複数の処理部（１０２Ａ，１０２Ｂ）が動作するための複数のクロック信号をそれぞれ生成する複数のクロック信号生成回路（１５ａ，１５Ｂ）と、電源電圧が閾値より低いことを検出して異常検出信号を前記異常監視制御部（１０８）に出力する電圧検出回路（９ｆ）を更に具備する。前記異常監視制御部（１０８）は、検出された電源電圧が閾値より低いとき、前記複数のクロック信号のうち、より高い周波数のクロック信号で動作する処理部を前記異常処理部と認定し、前記複数のクロック信号のうち、より低い周波数のクロック信号で動作する処理部を前記正常処理部と認定し、前記異常救済処理を行うよう前記正常処理部を制御する。これにより、電源電圧が低下しても直ちに動作が停止することなく、必要な処理は続行することができる。
【発明の効果】
【００１０】
本発明によれば、マルチプロセッサ処理装置において、いずれかのＣＰＵに異常が発生しても、直後のシステムダウンを避けることができる。また、安全の確保のための最低限の処理を実行することができる。負荷状態により、必要な処理は続行することができることになる。また、端子数が減らされても、端子が共有されているので、異常発生時にあっても、正常なＣＰＵにより外部との信号の交換が可能である。また、その共有を通して、柔軟なシステム構成をとることができる。
【発明を実施するための最良の形態】
【００１１】
以下に添付図面を参照して、本発明の処理装置について詳細に説明する。本発明の処理装置は、１つのチップ内に、半導体集積回路して実現されている。また、処理装置は制御システム内で制御処理のために使用されている例を挙げ、本発明を説明する。しかしながら、本発明はそのようなアプリケーションに限られるものではない。
【００１２】
図１は、本発明の第１実施形態による処理装置の構成を示すブロック図である。図１を参照して、第１実施形態の処理装置は、メモリ１００、複数の処理部１０２Ａ、１０２Ｂ、複数の異常検出回路１２２Ａ、１２２Ｂ、異常監視制御部１０８、セレクタ部１０６とを備えている。
【００１３】
メモリ１００は、複数の処理部１０２Ａ、１０２Ｂに共有されており、複数の処理部１０２Ａ、１０２Ｂのためにそれぞれメモリ領域１００Ａ、１００Ｂを有している。また複数の処理部１０２Ａ，１０２Ｂにより共通にアクセスされるべきメモリ領域１００Ｚを有している。メモリ領域１００Ａ、１００Ｂ、１００Ｚの各々は、処理プログラムＡ，Ｂ，Ｚや、そのプログラムの実行時に使用されるデータを格納している。
【００１４】
処理部１０２Ａは、メモリ１００のメモリ領域１００Ａをアクセスして、そこに格納されている処理プログラムＡを実行する。これにより、所望の処理が実行される。その処理は少なくとも１つの処理単位を含んでいる。処理部１０２Ａは、処理単位の処理が終了する度に、その処理単位と関連するデータを異常監視制御部１０８に出力する。また、処理部１０２Ａは、その処理のために外部データが必要なときには、また処理結果を外部に出力する時には、入出力端子Ｔｄが処理部１０２Ａに接続されるように異常監視制御部１０８に選択指示を出力する。異常監視制御部１０８から異常救済処理指示を受けたときには、メモリ領域１００Ａに格納されている処理プログラムＡに代えてメモリ領域１００Ｚに格納されている処理プログラムＺを実行する。また、処理プログラムＡを実行することができる。処理部１０２Ｂは、処理部１０２Ａと同様に動作する。
【００１５】
異常検出回路１２２Ａ、１２２Ｂは、それぞれ処理部１０２Ａ、１０２Ｂに対して設けられている。各異常検出回路１２２Ａ、１２２Ｂは、ウオッチドッグタイマ（図示せず）を有する。異常検出回路１２２Ａは、ウオッチドッグタイマにより処理部１０２Ａの異常を検出し、異常検出信号を異常監視制御部１０８に出力する。同様に、異常検出回路１２２Ｂは、処理部１０２Ｂの異常を検出し、異常検出信号を異常監視制御部１０８に出力する。
【００１６】
セレクタ部１０６は、単一の入出力端子ＴＤに接続されており、異常監視制御部１０８からの選択制御信号に応答して、入出力端子Ｔｄを処理部１０２Ａまたは処理部１０２Ｂに接続する。
【００１７】
異常監視制御部１０８は、処理部１０２Ａ、１０２Ｂの各々からの選択指示に基づいて選択制御信号を生成してセレクタ部１０６に出力する。これにより、入出力端子Ｔｄは、セレクタ部１０６を介して処理部１０２Ａ又は１０２Ｂに接続される。また、異常監視制御部１０８は、異常検出回路１２２Ａ、１２２Ｂからの異常検出信号に基づいて処理部１０２Ａ、１０２Ｂのいずれかの異常を検出し、入出力端子Ｔｄを正常な処理部に強制的に接続するように選択制御信号を発生する。また、異常監視制御部１０８は、異常検出信号に応答して、正常な処理部に対して異常救済処理指示を出力する。また、異常監視制御部１０８は、処理部１０２Ａ、１０２Ｂの各々から、所定の処理単位の処理が終了する度に、その処理単位に関連したデータを受信する。異常監視制御部１０８は、このデータに基づいて各処理部において何処まで処理が終了したかを知ることができる。
【００１８】
次に、図２を参照して、本発明の第１実施形態により処理装置の動作について説明する。初めに処理部１０２Ａ、１０２Ｂが起動され、それぞれメモリ領域１００Ａ、１００Ｂに格納されている処理プログラムＡ、Ｂの実行を開始する。処理プログラムＡの処理と処理プログラムＢの処理は異なるものとする。例えば、処理プログラムＡによる処理は図示されない外部装置の制御に関する処理であり、処理プログラムＢによる処理は演算処理であるとする。また、処理部１０２Ａ，１０２Ｂは所定の処理周期で、処理プログラムＡ，Ｂの実行を進めていくものとする。更に、処理プログラムＡは、複数の処理単位Ａ１，．．．，Ａ２、．．．を含み、処理プログラムＢは、複数の処理単位Ｂ１，．．．，Ｂ２、．．．を含んでいるものとする。ここで、処理単位Ａ１では、処理結果が入出力端子Ｔｄを介して出力されるものとする。
【００１９】
処理部１０２Ａは、処理プログラムＡを実行し、処理単位Ａ１の処理を終了する。その後、選択指示を異常監視制御部１０８に出力する。異常監視制御部１０８は、選択指示に応答して、選択制御信号をセレクタ部１０６に出力する。この結果、入出力端子Ｔｄはセレクタ部１０６を介して処理部１０２Ａに接続される。処理部１０２Ａは、処理単位Ａ１の処理結果をセレクタ部１０６と入出力端子Ｔｄを介して外部に出力する。同時に、処理単位Ａ１の処理と関連するデータを異常監視制御部１０８に出力する。これにより、異常監視制御部１０８は処理単位Ａ１の終了を知ることができる。処理部１０２Ｂも同様に、処理単位Ｂ１を実行する。
【００２０】
その後、処理周期Ｔ０における処理が進行し、処理周期Ｔ１の処理が開始されるとする。このとき、処理部１０２Ａは処理単位Ａ２の処理を開始する。また、処理部１０２Ｂは処理単位Ｂ２の処理を開始する。このとき、異常検出回路１２２Ａが処理部１０２Ａの異常を検出すると、異常検出信号を異常監視制御部１０８に出力する。異常監視制御部１０８は、異常検出信号に応答して異常救済処理指示を処理部１０２Ｂに出力する。併せて、異常監視制御部１０８は、何処まで処理が進んでいるかを示す進行状況データ、この例では、処理単位Ａ２と関連するデータが処理部１０２Ｂに送られる。処理部１０２Ｂは、処理プログラムＢの処理単位Ｂ２の処理を中断し、異常救済処理プログラムＺを実行し、異常処理を開始する。
【００２１】
図１０（ａ）は、処理部１０２ａと１０２Ｂに含まれるＣＰＵ１とＣＰＵ２の処理能力を示している。正常時において、ＣＰＵ１とＣＰＵ２に割り当てられている時間がＴのとき、ＣＰＵ１とＣＰＵ２は、１００％の処理能力で処理プログラムＡとＢとを時間Ｔ／２で処理している。このとき、ＣＰＵ２の処理に異常が発生し、ＣＰＵ２の処理もＣＰＵ１が実行しなければならないとき、図１０（ｂ）に示されるように、ＣＰＵ１は、時間Ｔで処理プログラムＡとＢの両方を処理することができる。
一方、図１１（ａ）は、処理部１０２ａと１０２Ｂに含まれるＣＰＵ１とＣＰＵ２の処理能力を示している。図１１（ａ）に示されるように、正常時において、ＣＰＵ１とＣＰＵ２に割り当てられている時間がＴのとき、ＣＰＵ１とＣＰＵ２は、１００％の処理能力で処理プログラムＡとＢとを時間Ｔ／２より長い時間とＴ／２の時間で処理している。このとき、ＣＰＵ２の処理に異常が発生し、ＣＰＵ２の処理もＣＰＵ１が実行しなければならないとき、図１１（ｂ）に示されるように、ＣＰＵ１は、時間Ｔでは処理プログラムＡとＢの両方を処理することができない。このような場合には、ＣＰＵ１が処理プログラムＡだけを実行するのか、処理プログラムＢだけを実行するのか等、何らかの対処が必要になる。
【００２２】
異常救済処理では、処理単位Ａ１の重要性／緊急性が判断される。処理単位Ａ１が実行され、制御が進んでいる場合、異常発生状態で直ちに、制御システムが停止されるべき場合もあるが、一方、後続の処理単位Ａ２の処理が行われなければならない場合もある。そのような場合、１つの処理部の異常で制御処理システム全体を停止させることはできない。続いて、処理部１０２Ｂは、処理部１０２Ａの処理負荷と処理部１０２Ｂの処理負荷を判断する。例えば、異常発生前の処理部１０２Ａの処理負荷が７０％であり、処理部１０２Ｂの処理負荷が３０％であれば、処理部１０２Ｂは、プログラムＡの処理とプログラムＢの処理の両方を処理することができる。しかしながら、異常発生前の処理部１０２Ａの処理負荷が８０％であり、処理部１０２Ｂの処理負荷が５０％であれば、処理部１０２Ｂは、プログラムＡの処理とプログラムＢの処理の両方を処理することはできない。そのような場合には、プログラムＡの処理とプログラムＢの処理（処理単位Ａ２，．．．と処理単位Ｂ２，．．．）の重要性／緊急性に基づいて実行されるべき処理が判断される。
【００２３】
図３は、処理プログラムＺによる異常救済処理を示すフローチャートである。図３を参照して、ステップＳ２で、処理部１０２Ｂは、異常発生後に予想される処理部１０２Ａ、１０２Ｂの負荷を獲得する。処理部１０２Ａの負荷は、異常監視制御部１０８から送られる、何処まで処理が進んでいるかを示す進行状況データと、処理プログラムＡに記述されている処理単位から求めることができる。また、処理部１０２Ｂの負荷は、異常発生時の処理状況に基づいて処理プログラムＢの処理単位から求めることができる。このとき、各処理単位の負荷が予め計算され、メモリ領域１００Ｚのテーブル（図示せず）に保持されていれば、負荷の計算のための時間を短縮することができる。
【００２４】
続いて、処理部１０２Ｂは、処理プログラムＡ，Ｂの各処理単位の重要度／緊急度を求める。そのためには、処理プログラムＡ，Ｂの各処理単位に予め優先度が割り当てられたメモリ領域１００Ｚのテーブル（図示せず）が用意されていればよい。これは、処理単位には、アクセサリ的な処理などが含まれているからである。そのような処理は、制御システムの安全の確保のためには必要ないので、優先度は低くなる。一方、途中まで制御処理が進んでいるが、その状態では不安定であり、所定の安定した状態にまで進めなければならない場合、あるいはその安定した状態まで戻さなければならない場合がある。そのために、例えば安全を確保するために必要な処理の優先度は高くなる。
【００２５】
そこで、ステップＳ６では、処理単位Ａ２の処理の重要性／緊急性（優先度）が処理単位Ｂ２より高いか否かが判定される。処理単位Ａ２の重要性／緊急性（優先度）が高い場合には、ステップＳ８が実行され、処理部１０２Ｂが本来実行すべき処理に加えて処理単位Ａ２を実行したとき、負荷がオーバーするか否かが判定される。負荷がオーバーしないときには、ステップＳ１４で処理単位Ａ２が実行され、続いて処理単位Ｂ２が実行される。処理単位Ａ２の処理が終了するとき、処理部１０２Ｂは、処理単位Ａ２の処理結果をセレクタ部１０６と入出力端子Ｔｄを介して外部に出力する。同時に、処理単位Ａ２の処理と関連するデータを異常監視制御部１０８に出力する。これにより、異常監視制御部１０８は処理単位Ａ２の終了を知ることができる。このとき、既に、異常監視制御部１０８により入出力端子Ｔｄはセレクタ部１０６を介して処理部１０２Ｂに接続されているので、処理部１０２Ｂは、選択指示を異常監視制御部１０８に出力する必要がない。
【００２６】
その後、処理の続行が可能か否かがステップＳ１６で判断され、続行可能であれば、ステップＳ１８で処理が続行される。また、処理の続行が不可能であれば、ステップＳ１２が実行され、制御処理は停止される。
【００２７】
また、負荷がオーバーすると判断されるときには、ステップＳ１０で処理単位Ａ２が実行され、安全が確保される。その後、ステップＳ１２が実行され、制御処理は停止される。
【００２８】
また、処理単位Ａ２の処理の重要性／緊急性が低い場合には、ステップＳ２０で、処理部１０２Ｂが本来実行すべき処理に加えて処理単位Ａ２を実行したとき、負荷がオーバーするか否かが判定される。負荷がオーバーするときには、ステップＳ２２で処理単位Ｂ２が実行され、その後、ステップＳ１２が実行され、制御処理は停止される。
【００２９】
また、ステップＳ２０で負荷がオーバーしないと判定されるときには、ステップＳ２４が実行される。ステップＳ２４では、処理単位Ｂ２が実行され、続いて処理単位Ａ２が実行される。処理単位Ａ２の処理が終了するとき、処理部１０２Ｂは、処理単位Ａ２の処理結果をセレクタ部１０６と入出力端子Ｔｄを介して外部に出力する。同時に、処理単位Ａ２の処理と関連するデータを異常監視制御部１０８に出力する。これにより、異常監視制御部１０８は処理単位Ａ２の終了を知ることができる。このとき、既に、異常監視制御部１０８により入出力端子Ｔｄはセレクタ部１０６を介して処理部１０２Ｂに接続されているので、処理部１０２Ｂは、選択指示を異常監視制御部１０８に出力する必要がない。
【００３０】
その後、処理の続行が可能か否かがステップＳ２６で判断され、続行可能であれば、ステップＳ２８で処理が続行される。また、処理の続行が不可能であれば、ステップＳ１２が実行され、制御処理は停止される。
【００３１】
このようにして、処理部１０２Ｂは、余った処理能力で、処理プログラムＡ、Ｂの処理単位のうち、いくつかを間引くことにより、処理プログラムＡ、Ｂの処理を進めることができる。
【００３２】
上記の例では、処理周期が規定されているので、処理部１０２Ａ、１０２Ｂの処理単位が処理周期内で完了する必要があったが、処理周期が規定されていない場合には、処理時間がかかるが、処理部１０２Ｂが処理プログラムＡと処理プログラムＢを実行すればよい。
【００３３】
また、上記の例では、処理部１０２Ａ、１０２Ｂが選択指示を異常監視制御部１０８に出力して、セレクタ部１０６を制御しているが、入出力端子Ｔｄが常時処理部１０２Ａに接続され、異常時のみ処理部１０２Ｂに接続されれば十分である場合には、処理部１０２Ａ、１０２Ｂが選択指示を異常監視制御部１０８に出力する必要はない。
【００３４】
また、処理部１０２Ａ、１０２Ｂは、処理単位の処理が終了する度に、処理単位に関連するデータを異常監視制御部１０８に送っているが、例えば、処理部１０２Ａが処理単位に関するデータを直接処理部１０２Ｂに送ってもよい。あるいは、メモリ領域１００Ｚのテーブル（図示せず）に書き込んでもよい。いずれの場合でも、処理部１０２Ａ、１０２Ｂは、処理単位の処理が終了する度に、処理単位に関連するデータを異常監視制御部１０８に送ることは不要である。
また、上記の例では、単一の入出力端子Ｔｄがセレクタ部１０６を介して処理部１０２Ａ、１０２Ｂに接続されている。しかしながら、複数の入出力端子（図示せず）が処理部１０２Ａ，１０２Ｂにそれぞれ接続されている構成でもよい。その場合には、セレクタ部１０６は不要であり、それに伴う異常監視制御部１０８の処理は不要になる。
【００３５】
次に、本発明の第２実施形態による処理装置を図４を参照して説明する。図４では、メモリ１００は図示されていないことに注意すべきである。また、第２実施形態による処理装置では、処理部は２つである。
【００３６】
第２実施形態の処理装置は、ＣＰＵ２Ａ，２Ｂ、異常検出回路２２Ａ，２２Ｂ、バス１２Ａ，１２Ｂ、バスブリッジ回路１０、入出力ポート４−１−Ａ、４−２−Ａ，４−１−Ｂ，４−２−Ｂ、異常検出回路２４Ａ、２４Ｂ、セレクタ部６、異常監視制御部８ａとを備えている。ここで、異常監視制御部８ａは、第１実施形態の異常監視制御部１０８に対応し、セレクタ部６は第１実施形態のセレクタ部１０６に対応する。以下に説明する実施形態では、異常監視制御部は、８ａ、８ｂ，８ｃ，８ｄ，８ｅ，８ｆと参照されるが、同様である。異常検出回路２２Ａ，２４Ａは、第１実施形態の異常検出回路１２２Ａに対応し、異常検出回路２２Ｂ，２４Ｂは、第１実施形態の異常検出回路１２２Ｂに対応する。また、ＣＰＵ２Ａ、バス１２Ａ、バスブリッジ回路１０、入出力ポート４−１−Ａ、４−２−Ａが第１実施形態の処理部１０２Ａに対応し、ＣＰＵ２Ｂ、バス１２Ｂ、バスブリッジ回路１０、入出力ポート入出力ポート４−１−Ｂ、４−２−Ｂが第１実施形態の処理部１０２Ｂに対応する。また、図４では、異常監視制御部８ａからＣＰＵ２Ａ，２Ｂへの異常救済処理指示のための信号線、ＣＰＵ２Ａ，２Ｂからの異常監視制御部８ａへの選択指示の信号線、処理単位が終了したときに送られる処理単位に関連するデータのための信号線が図示されてない。
【００３７】
ＣＰＵ２Ａ，２Ｂは、メモリ（図示せず）に格納された処理プログラムＡ，Ｂをそれぞれ実行する。異常検出回路２２Ａ，２２Ｂは、それぞれＣＰＵ２Ａ，２Ｂに対して設けられている。異常検出回路２２Ａ，２２Ｂの各々は、ウォッチドッグタイマを有し、対応するＣＰＵの異常を監視している。異常を検出したとき、異常検出信号を異常監視制御部８ａに出力する。
【００３８】
異常検出回路２４Ａは、入出力ポート４−１−Ａ、４−２−Ａに対して設けられ、異常検出回路２４Ｂは、入出力ポート４−１−Ｂ、４−２−Ｂに対して設けられている。異常検出回路２４Ａ，２４Ｂの各々は、各入出力ポートが固定値を出力しつづけているような状態を異常と判断して異常検出信号を異常監視制御部８ａに出力する。
【００３９】
入出力ポート４−１−Ａ、４−２−Ａは、バス１２Ａに接続され、入出力ポート４−１−Ｂ、４−２−Ｂは、バス１２Ｂに接続されている。バスブリッジ１０は、バス１２Ａと１２Ｂとを接続し、ＣＰＵ２Ａ，２Ｂと接続されている。これにより、入出力ポート４−１−Ａ、４−２−Ａと入出力ポート４−１−Ｂ、４−２−Ｂは、ＣＰＵ２Ａ，２Ｂと接続されている。
【００４０】
セレクタ部６は、バッファドライバ６２、ＡＮＤゲート７２、ＯＲゲート７８、セレクタ６４，６８，７４，７６を有している。入出力ポート４−１−ａ、４−１−Ｂの入力イネーブルＥＮＩは、ＯＲゲート７８の入力とセレクタ７６の入力に接続されている。セレクタ７６の出力とＯＲゲート７８の出力はセレクタ７４の入力に接続されている。セレクタ７４の出力はＡＮＤゲート７２の一方の入力に接続されている。入出力端子ＴｄはＡＮＤゲート７２の他方の入力に接続されている。ＡＮＤゲート７２の出力は、入出力ポート４−１−Ａ、４−１−Ｂのデータ入力ＤＩＮに接続されている。入出力ポート４−１−Ａ、４−１−Ｂの出力イネーブルＥＮＯは、セレクタ６４の入力に接続されている。セレクタ６４の出力はバッファドライバ６２の制御端子に接続されている。入出力ポート４−１−ａ、４−１−Ｂのデータ出力ＤＯＵＴは、セレクタ６８の入力に接続されている。セレクタ６８の出力は、バッファドライバ６２の入力に接続され、バッファドライバ６２の出力は入出力端子Ｔｄに接続されている。セレクタ６４，６８，７４，７６の各々には、異常監視制御部８ａから選択制御信号が供給されている。以上により、入出力端子Ｔｄは、通常は、入出力ポート４−１−Ａに接続され、異常時に入出力ポート４−１−Ｂに接続される。
【００４１】
異常監視制御部８ａは、検出信号デコーダ８２ａと切替信号出力回路８４ａとを有している。検出信号デコーダ８２ａは、異常検出回路２２Ａ，２２Ｂ，２４Ａ，２４Ｂからの異常検出信号をデコードして異常結果デコード信号を発生し、切替信号出力回路８４ａに出力する。切替信号出力回路８４ａは、異常結果デコード信号に応答して、選択制御信号をセレクタ部６に出力する。
【００４２】
第２実施形態による処理装置の動作は、第１実施形態の処理装置と同様なので、説明は省略する。
【００４３】
次に、図５を参照して、本発明の第３実施形態による処理装置について説明する。第３実施形態による処理装置は、第２実施形態による処理装置と同様である。第３実施形態による処理装置が、第２実施形態による処理装置と異なる点は、バス１２Ａ、１２Ｂとバスブリッジ回路１０に代えて、バス１２Ａ、１２Ｂだけが使用されており、それらに対して異常検出回路１０Ａ，１０Ｂがそれぞれ設けられていることである。バス異常は起きたときには、ＣＰＵからデータを入出力することはできない。そのため、異常検出回路１０Ａ、１０Ｂが設けられている。異常検出回路１０Ａ、１０Ｂは、例えば、バス上のデータが常に”１”あるいは”０”であるとき、バスの異常と判定し、異常検出信号を異常監視制御部８ｂに出力する。異常監視制御部８ｂは、構成と動作において、異常監視制御部８ａと同様である。
【００４４】
第３実施形態による処理装置の動作は、第１実施形態の処理装置と同様なので、説明は省略する。
【００４５】
次に、図６を参照して、本発明の第４実施形態による処理装置について説明する。第４実施形態による処理装置は、第２実施形態による処理装置と同様である。第３実施形態による処理装置が、第２実施形態による処理装置と異なる点は、異常監視制御部８ｃの構成と動作である。第４実施形態では、異常監視制御部８ｃは、検出信号デコーダ８２ｃと、切替信号出力回路８４ｃと、内部メモリ８６ｃとを有している。検出信号デコーダ８２ｃは、異常検出回路２２Ａ，２２Ｂ，２４Ａ，２４Ｂからの異常検出信号をデコードして異常結果デコード信号を発生し、切替信号出力回路８４ａに出力する。切替信号出力回路８４ａは、異常結果デコード信号に応答して、選択制御信号をセレクタ部６に出力する。内部メモリ８６ｃは、異常結果デコード信号を格納する。これにより、後で異常を解析するとき、内部メモリ８６ｃに格納されているデータを調べることにより、異常の発生個所を速やかに決定することができる。また、異常結果デコード信号は出力端子Ｔｅにより外部に出力される。外部装置は、出力端子Ｔｅの信号を監視することにより処理装置内での異常の発生を知ることができる。
【００４６】
第４実施形態による処理装置の動作は、第１実施形態の処理装置と同様なので、説明は省略する。
【００４７】
次に、図７を参照して、本発明の第５実施形態による処理装置について説明する。第５実施形態による処理装置は、第３実施形態による処理装置と同様である。第５実施形態による処理装置が、第３実施形態による処理装置と異なる点は、異常監視制御部８ｄの構成と動作である。第５実施形態では、異常監視制御部８ｄは、検出信号デコーダ８２ｄと、切替信号出力回路８４ｄと、内部メモリ８６ｄと、アクセス制御回路８８ｄを有している。検出信号デコーダ８２ｄは、異常検出回路２２Ａ，２２Ｂ，２４Ａ，２４Ｂ、１０Ａ，１０Ｂからの異常検出信号をデコードして異常結果デコード信号を発生し、切替信号出力回路８４ｄと内部メモリ８６ｄ、アクセス制御回路８８ｄに出力する。切替信号出力回路８４ｄは、異常結果デコード信号に応答して、選択制御信号をセレクタ部６に出力する。内部メモリ８６ｄは、異常結果デコード信号を格納する。これにより、後で異常を解析するとき、内部メモリ８６ｄに格納されているデータを調べることにより、異常の発生個所を速やかに決定することができる。また、異常結果デコード信号はアクセス制御回路８８ｄに出力される。アクセス制御回路８８ｄは、バス１２Ａ、１２Ｂと接続されている。ＣＰＵ２Ａ，２Ｂは、バス１２Ａ、１２Ｂを介して、アクセス制御回路８８ｄをアクセスすることができる。アクセス制御回路８８ｄは、ＣＰＵ２Ａ，２Ｂからの指示に従って、内部メモリ８６ｄからデータを読み出して指示の発行元に出力する。但し、アクセス制御回路８８ｄは、検出信号デコーダ８２ｄからの異常結果デコード信号に基づいて、異常発生側のＣＰＵからのアクセスは拒否する。異常救済処理指示に応答して、正常側のＣＰＵが異常救済処理を実行するとき、必要なデータを内部メモリ８６ｄから取り出すことができる。
【００４８】
第５実施形態による処理装置のその他の動作は、第１実施形態の処理装置と同様なので、説明は省略する。
【００４９】
次に、図８を参照して、本発明の第６実施形態による処理装置について説明する。第６実施形態による処理装置は、第５実施形態による処理装置と同様である。第６実施形態による処理装置が、第５実施形態による処理装置と異なる点は、ＲＥＳＥＴレジスタ１６Ａ，１６Ｂが、バス１２Ａ，１２Ｂと接続されるように設けられている点にある。ＣＰＵ２Ａは、バス１２Ａを介してＲＥＳＥＴレジスタ１６Ａにリセット命令を設定し、このリセット命令によりＣＰＵ２Ｂはリセットされる。また、ＣＰＵ２Ｂは、バス１２Ｂを介してＲＥＳＥＴレジスタ１６Ｂにリセット命令を設定し、このリセット命令によりＣＰＵ２Ａはリセットされる。こうして、例えば、ＣＰＵ２Ａがフリーズしたとき、異常監視制御部８ｅからの異常救済処理指示に応答してＣＰＵ２Ｂはレジスタ１６Ｂにリセット命令を設定し、ＣＰＵ２Ａをリセットする。これにより、ＣＰＵ２Ａの動作が正常に復帰することが期待され、ＣＰＵ２Ａは正常動作に復帰することができるであろう。
第６実施形態による処理装置のその他の動作は、第１実施形態の処理装置と同様なので、説明は省略する。
【００５０】
次に、図９を参照して、本発明の第７実施形態による処理装置について説明する。第７実施形態による処理装置は、第６実施形態による処理装置と同様である。第７実施形態による処理装置が、第６実施形態による処理装置と異なる点は、以下のとおりである。即ち、発振器１５Ａは高周波数のクロック信号を発生してＣＰＵ２Ａに供給し、ＣＰＵ２Ａは高周波数のクロック信号に同期して動作する。発振監視回路２６Ａがこの発振器１５Ａには設けられ、発振異常を検出したとき異常検出信号を異常監視制御部８ｆに出力する。また、発振器１５Ｂは低周波数のクロック信号を発生してＣＰＵ２Ｂに供給し、ＣＰＵ２Ｂは低周波数のクロック信号に同期して動作する。発振監視回路２６Ｂがこの発振器１５Ｂには設けられ、発振異常を検出したとき異常検出信号を異常監視制御部８ｆに出力する。また、低電圧検出回路９ｆが電源（図示せず）に対して設けられ、電源電圧が所定のレベルより低くなったとき、異常検出信号を異常監視制御部８ｆに出力する。低電圧検出回路9ｆから異常検出信号が受信されたとき、異常監視制御部８ｆは、ＣＰＵ２Ｂに異常救済処理指示を出力する。ＣＰＵ２Ｂは、ＣＰＵ２Ａに代わって処理プログラムＡを実行する。こうして、電源電圧が動作可能電圧より低くなる前に、必要な処理を実行することができる。
【００５１】
第６実施形態による処理装置のその他の動作は、第１実施形態の処理装置と同様なので、説明は省略する。
【００５２】
以上述べたように、本発明によれば、例えば、制御対象によっては、複数のＣＰＵのうち１つが動作不能になったとしても、安全が確保されるまで最低限の処理が行われることができる。また、処理能力が低下しても、主要な処理が継続して実行されることできる。
【００５３】
また、バスの調停回路に対してＣＰＵがリクエスト信号を発行する場合、調停回路は、バス調停を行い、そのＣＰＵに対してバス使用権（グラント信号）を与える。バスを開放する場合には、ＣＰＵが調停回路に対して終了信号を発行し、それに基づいてバスが開放される。ＣＰＵがバスの使用権を確保している間に異常が発生し、バス調停あるいはＣＰＵの切替が不可能になってしまったとしても、本発明では、異常が発生したＣＰＵ以外のＣＰＵにより処理が代行され、あるいはリセットがかけられることにより、システム全体のダウンが防止されている。
【００５４】
また、半導体集積回路では、端子数を減らすことが要望されている。その場合、従来では、特定の端子が特定のＣＰＵに固定的に割り当てられている場合、そのＣＰＵに異常が発生したとき、他のＣＰＵが処理を続行しようとしても、端子に接続できないのでデータを取得することができなかった。しかしながら、本発明によれば、異常発生時には代替ＣＰＵがその端子を介してデータを取得して処理を続行することができる。こうして、異常時だけでなく、処理装置の使用におけるフレキシビリティを増すこともできる。
【図面の簡単な説明】
【００５５】
【図１】図１は、本発明の第１実施形態による処理装置の構成を示すブロック図である。
【図２】図２は、本発明の第１実施形態により処理装置の動作を示すタイミングチャートである。
【図３】図３は、本発明の第１実施形態により処理装置の動作を示すフローチャートである。
【図４】図４は、本発明の第２実施形態による処理装置の構成を示すブロック図である。
【図５】図５は、本発明の第３実施形態による処理装置の構成を示すブロック図である。
【図６】図６は、本発明の第４実施形態による処理装置の構成を示すブロック図である。
【図７】図７は、本発明の第５実施形態による処理装置の構成を示すブロック図である。
【図８】図８は、本発明の第６実施形態による処理装置の構成を示すブロック図である。
【図９】図９は、本発明の第７実施形態による処理装置の構成を示すブロック図である。
【図１０】図１０は、本発明において、異常が発生したときの異常救済処理の例を示す図である。
【図１１】図１１は、本発明において、異常が発生したときの異常救済処理の他の例を示す図である。
【符号の説明】
【００５６】
１００：メモリ
１０２Ａ，１０２Ｂ：処理部
１２２Ａ，１２２Ｂ，２２ａ，２２Ｂ，２４Ａ，２４Ｂ，１０Ａ，１０Ｂ：異常検出回路
１０８，８ａ，８ｂ，８ｃ，８ｄ，８ｅ，８ｆ：異常監視制御部
２Ａ，２Ｂ：ＣＰＵ
１０６，６：セレクタ部
８２ａ，８２ｂ，８２ｃ，８２ｄ，８２ｅ，８２ｆ：検出信号デコーダ
８４ａ，８４ｂ，８４ｃ，８４ｄ，８４ｅ，８４ｆ：切替信号出力回路
８６ｃ，８６ｄ，８６ｅ，８６ｆ：内部メモリ
８８ｄ，８８ｅ，８８ｆ：アクセス制御回路
１６Ａ，１６Ｂ：ＲＥＳＥＴレジスタ
【図１】
0004831599.tif 000002
【図２】
0004831599.tif 000003
【図３】
0004831599.tif 000004
【図４】
0004831599.tif 000005
【図５】
0004831599.tif 000006
【図６】
0004831599.tif 000007
【図７】
0004831599.tif 000008
【図８】
0004831599.tif 000009
【図９】
0004831599.tif 000010
【図１０】
0004831599.tif 000011
【図１１】
0004831599.tif 000012