(57)【要約】【課題】少なくとも２つのプロセッサの動作を停止することなく、フリーステップモードからロックステップモードへと動作モードを切り替えることを可能とすること。【解決手段】フリーステップモードからロックステップモードに切り替えられると、各プロセッサ１、２のメモリ部１１、２１の各データ領域に対応付けられたフラグが、データが利用不可であることを示すアンロック状態に設定される。このフラグは、新たなデータがメモリ部１１、２１に書き込まれたときに、データが利用可能であることを示すロック状態に更新される。命令を実行するために、読み出し対象となったデータが記憶されているデータ領域に対応付けられたフラグが利用不可を示す状態であると、モード切替制御部４が、各プロセッサ１、２の演算処理部１２、２２へのデータ提供元をバックアップメモリ部３１に切り替える。【選択図】図１
2019016107.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも２つのプロセッサ（１、２）を備え、動作モードとして、前記少なくとも２つのプロセッサが、別個の命令ストリームを実行するフリーステップモードと、同じ命令ストリームを実行するロックステップモードとを有するマイクロコンピュータ（１００）であって、
前記少なくとも２つのプロセッサは、それぞれ、
命令に応じた演算処理を実行する演算処理部（１２、２２）と、
データを記憶する複数のデータ領域と、複数のデータ領域にそれぞれ対応付けられ、各データ領域のデータが利用可能であるか否かを示すフラグを記憶するフラグ領域と、を含むメモリ部（１１、２１）と、を有し、
前記マイクロコンピュータは、さらに、
前記ロックステップモードの開始後に、前記少なくとも２つのプロセッサの前記メモリ部の対応するデータ領域に記憶される新たなデータを記憶する、前記少なくとも２つのプロセッサにて共用されるバックアップメモリ部（３１）を含むバックアップ制御部（３）と、
前記フリーステップモードと前記ロックステップモードとの間で、動作モードの切り替えを制御するモード切替制御部（４）と、
前記少なくとも２つのプロセッサに対してそれぞれ設けられ、前記演算処理部へのデータ提供元を、対応する前記メモリ部と前記バックアップメモリ部とのいずれかに切り替えるデータ切替部（１４、２４）と、を備え、
すべてのフラグ領域のフラグは、前記フリーステップモードから前記ロックステップモードへの切り替え時に、前記メモリ部のすべてのデータ領域のデータが利用不可であることを示す状態となるように設定され、
前記少なくとも２つのプロセッサにおいて、前記ロックステップモードの開始後に、新たなデータが前記メモリ部のデータ領域に記憶されると、そのデータ領域に対応付けられたフラグが利用可能であることを示す状態に更新され、
前記少なくとも２つのプロセッサが同じ命令を実行するために、読み出し対象となったデータが記憶されているデータ領域に対応付けられたフラグが、データの利用が可能であることを示す状態であるか否かが判定され、利用可能であることを示す状態と判定された場合、前記データ切替部により前記演算処理部へのデータ提供元が前記メモリ部に切り替えられ、利用不可を示す状態であると判定された場合、前記演算処理部へのデータ提供元が前記バックアップメモリ部に切り替えられるマイクロコンピュータ。
【請求項２】
前記バックアップ制御部は、前記少なくとも２つのプロセッサの前記メモリ部の対応するデータ領域に記憶される新たなデータが一致するか否かを判定するデータ一致判定部（３２）を有し、
前記バックアップメモリ部には、前記データ一致判定部にて一致したと判定されたデータが記憶される請求項１に記載のマイクロコンピュータ。
【請求項３】
前記バックアップ制御部は、前記データ一致判定部において、前記少なくとも２つのプロセッサの前記メモリ部のデータ領域に記憶される新たなデータが一致しないと判定された場合、エラー信号を出力する請求項１又は２に記載のマイクロコンピュータ。
【請求項４】
前記ロックステップモードは、前記メモリ部の一部のデータ領域のデータが利用不可である中間ロックステップモードと、前記メモリ部のすべてのデータ領域のデータが利用可能である完全ロックステップモードとを含み、
前記モード切替制御部は、すべてのフラグ領域のフラグが利用可能であることを示す状態に更新されると、前記中間ロックステップモードから前記完全ロックステップモードに移行し、読み出し対象データが記憶されているデータ領域に対応付けられたフラグの状態に基づくデータ提供元の切り替えが終了され、前記演算処理部へのデータ提供元が前記メモリ部に固定される請求項１乃至３のいずれかに記載のマイクロコンピュータ。
【請求項５】
前記モード切替制御部は、前記完全ロックステップモードと前記中間ロックステップモードの両方のモードから前記フリーステップモードへ動作モードを切り替えることが可能であり、前記フリーステップモードへの切り替え時には、前記バックアップ制御部の動作が停止される請求項４に記載のマイクロコンピュータ。
【請求項６】
前記ロックステップモードにおいて、前記少なくとも２つのプロセッサから出力される出力データが一致するか否かを判定し、不一致である場合にはエラー信号を出力する出力データ一致判定部（５）を備える請求項４又は５に記載のマイクロコンピュータ。
【請求項７】
前記モード切替制御部による、前記中間ロックステップモードあるいは前記完全ロックステップモードから前記フリーステップモードへの切り替え時に、前記出力データ一致判定部は動作を停止する請求項６に記載のマイクロコンピュータ。
【請求項８】
前記モード切替制御部は、前記少なくとも２つのプロセッサの外部に設けられる請求項１乃至７のいずれかに記載のマイクロコンピュータ。
【請求項９】
前記少なくとも２つのプロセッサは、それぞれ、各部の動作を制御する制御部を有し、
前記制御部が、前記モード切替制御部の機能の一部を担い、前記少なくとも２つのプロセッサの外部に設けられた前記モード切替制御部と協働して、動作モードの切り替え処理を実行し、
前記制御部は、前記モード切替制御部の機能の一部として、少なくとも、対応するプロセッサにおける前記データ切替部によるデータ提供元の切替処理とを実行する請求項８に記載のマイクロコンピュータ。
【請求項１０】
前記メモリ部は、汎用レジスタを含む請求項１乃至９のいずれかに記載のマイクロコンピュータ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、動作モードとして、少なくとも２つのプロセッサが、別個の命令ストリームを実行するフリーステップモードと、同じ命令ストリームを実行するロックステップモードとを有するマイクロコンピュータに関する。
【背景技術】
【０００２】
例えば特許文献１に、少なくとも２つのプロセッサに同一の命令ストリームを実行させるロックステップモードと、異なる命令ストリームを実行させるフリーステップモードとの間で、動作モードを切り替え可能に構成されたプロセッサシステムについて開示されている。
【０００３】
特許文献１のプロセッサシステムでは、フリーステップモードからロックステップモードへの切り替え時に、２つのプロセッサが有する記憶回路の記憶状態を一致させるために要する時間を短縮することを狙いとしている。そのため、特許文献１のプロセッサシステムは、一方のプロセッサの記憶回路と、他方のプロセッサの記憶回路との間に信号線群及び選択回路を配置する。そして、フリーステップモードからロックステップモードへの切り替え時には、信号線群及び選択回路を用いて、一方の記憶回路と他方の記憶回路間を選択的に結合し、一方の記憶回路の記憶状態を他方の記憶回路へ転送可能としている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１０−１９８１３１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１のプロセッサシステムでは、一方の記憶回路の記憶状態を他方の記憶回路へ転送してコピーする前に、２つのプロセッサの動作を停止することが必要である。２つのプロセッサの動作を停止するために、特許文献１のプロセッサシステムでは、まず、動作モードを切り替える制御ユニットが、２つのプロセッサに停止要求を送信する。この停止要求に応じて、２つのプロセッサは、中途の処理を全て完了した上で処理を停止して、停止完了応答を制御ユニットに送信する。すると、制御ユニットは、２つのプロセッサへのクロック供給を停止する。
【０００６】
このように、特許文献１のプロセッサシステムでは、フリーステップモードからロックステップモードへ移行する際に、２つのプロセッサの動作を停止した上で、一方の記憶回路の記憶状態を他方の記憶回路へ転送してコピーするようにしている。このため、特許文献１のプロセッサシステムにおいても、未だ、フリーステップモードからロックステップモードへと動作モードを移行するために、相応の時間を要するものとなっている。
【０００７】
本発明は、上述した点に鑑みてなされたものであり、少なくとも２つのプロセッサの動作を停止することなく、フリーステップモードからロックステップモードへと動作モードを切り替えることを可能とし、それにより、従来よりもさらに動作モードの切り替えに要する時間を短縮することが可能なマイクロコンピュータを提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記目的を達成するために、本発明によるマイクロコンピュータは、少なくとも２つのプロセッサを備え、動作モードとして、少なくとも２つのプロセッサが、別個の命令ストリームを実行するフリーステップモードと、同じ命令ストリームを実行するロックステップモードとを有するものであって、
少なくとも２つのプロセッサは、それぞれ、
命令に応じた演算処理を実行する演算処理部と、
データを記憶する複数のデータ領域と、複数のデータ領域にそれぞれ対応付けられ、各データ領域のデータが利用可能であるか否かを示すフラグを記憶するフラグ領域と、を含むメモリ部と、を有し、
マイクロコンピュータは、さらに、
ロックステップモードの開始後に、少なくとも２つのプロセッサのメモリ部の対応するデータ領域に記憶される新たなデータを記憶する、少なくとも２つのプロセッサにて共用されるバックアップメモリ部を含むバックアップ制御部と、
フリーステップモードとロックステップモードとの間で、動作モードの切り替えを制御するモード切替制御部と、
少なくとも２つのプロセッサに対してそれぞれ設けられ、演算処理部へのデータ提供元を、対応するメモリ部とバックアップメモリ部とのいずれかに切り替えるデータ切替部と、を備え、
すべてのフラグ領域のフラグは、フリーステップモードからロックステップモードへの切り替え時に、メモリ部のすべてのデータ領域のデータが利用不可であることを示す状態となるように設定され、
少なくとも２つのプロセッサにおいて、ロックステップモードの開始後に、新たなデータがメモリ部のデータ領域に記憶されると、そのデータ領域に対応付けられたフラグが利用可能であることを示す状態に更新され、
少なくとも２つのプロセッサが同じ命令を実行するために、読み出し対象となったデータが記憶されているデータ領域に対応付けられたフラグが、データの利用が可能であることを示す状態であるか否かが判定され、利用可能であることを示す状態と判定された場合、データ切替部により演算処理部へのデータ提供元がメモリ部に切り替えられ、利用不可を示す状態であると判定された場合、演算処理部へのデータ提供元がバックアップメモリ部に切り替えられる。
【０００９】
上述した構成を備える本発明によるマイクロコンピュータにおいては、フリーステップモードからロックステップモードに切り替えられると、最初に、メモリ部のすべてのデータ領域のデータが利用不可であることを示す状態となるように、すべてのフラグ領域のフラグが設定される。
【００１０】
そして、ロックステップモードにおける命令を実行するために、読み出し対象となったデータが記憶されているデータ領域に対応付けられたフラグが、利用不可を示す状態であると、データ切替部は、少なくとも２つのプロセッサの演算処理部へのデータ提供元を、共通のバックアップメモリ部に切り替える。このバックアップメモリ部には、過去のロックステップモードにおいて、少なくとも２つのプロセッサのメモリ部の対応するデータ領域に記憶されたデータが記憶されている。従って、少なくとも２つのプロセッサは、バックアップメモリ部に記憶された共通のデータを用いて、ロックステップモードにおける同じ命令を実行することができる。
【００１１】
ロックステップモードの開始後に、新たなデータがメモリ部の対応するデータ領域に記憶されると、そのデータ領域に対応付けられたフラグは、利用可能であることを示す状態に更新される。このようにして更新されたフラグに対応付けられているデータ領域のデータが読み出し対象となったときには、データ切替部は、それぞれのプロセッサのメモリ部を演算処理部へのデータ提供元に切り替える。従って、少なくとも２つのプロセッサは、ロックステップモードにおける同じ命令に応じた演算処理を、新たに記憶されたデータに基づきより適切に行うことができる。
【００１２】
このように、本発明によるマイクロコンピュータでは、少なくとも２つのプロセッサが、ロックステップモードへの切り替え直後から、バックアップメモリ部に記憶された共通のデータを用いて、ロックステップモードにおける同じ命令を実行することが可能である。従って、従来技術のように、２つのプロセッサの動作を停止する必要がないので、フリーステップモードからロックステップモードへの切り替えに要する時間を、従来技術よりもさらに短縮することができる。
【００１３】
上記括弧内の参照番号は、本発明の理解を容易にすべく、後述する実施形態における具体的な構成との対応関係の一例を示すものにすぎず、なんら本発明の範囲を制限することを意図したものではない。
【００１４】
また、上述した特徴以外の、特許請求の範囲の各請求項に記載した技術的特徴に関しては、後述する実施形態の説明及び添付図面から明らかになる。
【図面の簡単な説明】
【００１５】
【図１】第１実施形態に係るマイクロコンピュータの構成の概要を示すブロック図である。
【図２】メモリ部のデータ領域とフラグ領域とを模式的に表した図である。
【図３】マイクロコンピュータの動作モードの遷移について説明するための説明図である。
【図４】動作モードがフリーステップモードから中間ロックステップモードに切り替えられたときに実行される処理を示すフローチャートである。
【図５】動作モードが中間ロックステップモードからフリーステップモードに切り替えられるときに実行される処理を示すフローチャートである。
【図６】動作モードが完全ロックステップモードからフリーステップモードに切り替えられるときに実行される処理を示すフローチャートである。
【図７】第２実施形態に係るマイクロコンピュータの構成の概要を示すブロック図である。
【発明を実施するための形態】
【００１６】
以下、図面を参照しながら、本発明を実施するための複数の実施形態を説明する。各実施形態において、先行する実施形態で説明した事項に対応する部分には同一の参照符号を付して、重複する説明を省略する場合がある。
【００１７】
（第１実施形態）
図１は、第１実施形態に係るマイクロコンピュータ１００の構成の概要を示すブロック図である。図１に示すように、マイクロコンピュータ１００は、第１プロセッサ１、第２プロセッサ２、バックアップ制御部３、モード切替制御部４、ロックステップ比較器５、外部回路６１、６２、及び選択器６３を有する。マイクロコンピュータ１００は、動作モードとして、第１プロセッサ１及び第２プロセッサ２が、別個の命令ストリーム（プログラム）を実行するフリーステップモードと、同じ命令ストリーム（プログラム）を実行するロックステップモードとを有する。マイクロコンピュータ１００は、外部からの要求などに応じて、フリーステップモードとロックステップモード間で、動作モードの切り替えを行う。以下、図１に示されている各要素について順に説明する。
【００１８】
第１プロセッサ１及び第２プロセッサ２は、ともに、例えば外部回路６１、６２を通じて、プログラムつまり命令ストリームを取得し、取得した命令ストリームに含まれる各命令を解読し、解読した命令に応じた算術演算、論理演算、比較、シフト等の処理を行う。例えば高い安全性が求められるプログラム（タスク）は、ロックステップモードにより、第１プロセッサ１及び第２プロセッサ２によって冗長的に実行される。一方、それほど高い安全性が求められない通常のプログラム（タスク）は、フリーステップモードにより、その通常のプログラムが、第１プロセッサ１と第２プロセッサ２とに適宜に振り分けて実行されたり、異なる別個のプログラムが、第１プロセッサ１と第２プロセッサ２とでそれぞれ実行されたりする。
【００１９】
第１プロセッサ１は、データや命令を保存するメモリ部１１、算術論理演算を行う演算処理部１２、命令の解読や命令に応じた演算処理の実行を指示する制御部１３、及び選択器１４、１５を有する。第１プロセッサ１は、これらメモリ部１１、演算処理部１２、及び制御部１３の協働により、命令の取得、命令の解読、命令に応じた演算処理などを行う。
【００２０】
メモリ部１１は、第１プロセッサ１にて演算処理を行うためのデータや命令などを保存するためのものである。より具体的には、メモリ部１１は、データを保存するための汎用レジスタや、命令を保存するための命令レジスタを有している。命令は、例えば、外部回路６１を通じて図示しない主記憶装置から取得される。また、データは、その主記憶装置から取得されたり、演算処理部１２における演算結果が、データとして、メモリ部１１に保存されたりする。
【００２１】
図２に示すように、メモリ部１１は、データを記憶する複数のデータ領域と、その複数のデータ領域にそれぞれ対応付けられ、各データ領域のデータが利用可能であるか否かを示すフラグを記憶するフラグ領域とを含む。このフラグは、制御部１３によって、対応するデータ領域のデータが利用不可であることを示すアンロック状態に設定され得るものである。また、アンロック状態に設定されたフラグは、対応するデータ領域に新たなデータが書き込まれるときに、制御部１３によってロック状態に更新される。すなわち、アンロック状態が示す「データが利用不可」とは、演算処理部１２が、そのデータをメモリ部１１から読み出して利用することができないことを意味し、「データが利用不可」の状態であっても、そのデータ領域に新たなデータを書き込むことは可能である。そして、新たなデータが書き込まれて、フラグがロック状態に更新されると、演算処理部１２は、その新たなデータにアクセスして読み出すことができるようになる。
【００２２】
演算処理部１２は、論理ゲート、エンコーダ、デコーダ、シフタ、比較器、加算器、乗算器などを含むものである。演算処理部１２は、実行される命令に応じて、どの回路を動作させるかを選択することで、様々な演算処理を実行する。
【００２３】
制御部１３は、命令の解読や命令に応じた演算処理の実行を指示するために、第１プロセッサ１内の相互接続ネットワークのリンクを通じて、データや命令の送信を管理する。例えば、制御部１３は、必要な命令やデータを外部回路６１を通じて主記憶装置からメモリ部１１に送信させたりする。また、制御部１３は、時期が到来すると、それらの命令やデータをメモリ部１１から演算処理部１２に送信させたりする。演算処理が終了すると、必要に応じて、制御部１３は、その演算処理によるデータをメモリ部１１に送信させる。メモリ部１１は、そのデータをリリースされる準備が整うまで保持する。なお、図１では、制御部１３と、各部を結ぶコントロールバスは省略されている。
【００２４】
また、制御部１３は、モード切替制御部４からフラグのクリア要求を示す制御信号（例えば、図１のＳＥＬ信号）を受けると、上述したように、メモリ部１１のすべてのデータ領域に対応付けられたすべてのフラグ領域のフラグを、データが利用不可であることを示す状態となるようにアンロック状態に設定する。なお、図１では、第１プロセッサ１とモード切替制御部４との間のコントロールバスも省略されている。
【００２５】
さらに、制御部１３は、ロックステップモードにおいて、メモリ部１１のデータ領域のフラグの状態に応じたフラグ状態信号STATE_FLAG1をモード切替制御部４に送信する。例えば、ある命令を実行するために、読出対象となったデータが保存されているデータ領域のフラグが、データ利用不可を示すアンロック状態であるとき、制御部１３は、「０」にセットされたフラグ状態信号STATE_FLAG1をモード切替制御部４に送信する。逆に、読出対象となったデータが保存されているデータ領域のフラグが、データ利用可能を示すロック状態であるときには、制御部１３は、「１」にセットされたフラグ状態信号STATE_FLAG1をモード切替制御部４に送信する。
【００２６】
なお、制御部１３は、モード切替制御部４からのフラグのクリア要求に応じて、すべてのフラグをアンロック状態に設定すると、「００」にセットされたフラグ状態信号STATE_FLAG1をモード切替制御部４に送信する。これにより、モード切替制御部４は、すべてのフラグがクリアされたことを確認することができる。また、制御部１３は、すべてのフラグがロック状態に更新されたときには、「１１」にセットされたフラグ状態信号STATE_FLAG1をモード切替制御部４に送信する。これにより、モード切替制御部４は、すべてのフラグがロック状態に更新されたことを把握することができる。
【００２７】
なお、本実施形態では、フリーステップモードからロックステップモードに動作モードが切り替えられて、ロックステップモードが開始された後、メモリ部１１の一部のデータ領域のデータが利用不可である状態を中間ロックステップモードと定義し、メモリ部１１のすべてのデータ領域のデータが利用可能となった状態を完全ロックステップモードと定義する。つまり、本実施形態では、ロックステップモードは、中間ロックステップモードと完全ロックステップモードとを含む。本実施形態では、このように、フリーステップモードと完全ロックステップモードとの間に中間ロックステップモードを介在させているので、第１及び第２プロセッサ１、２を停止させることなく、フリーステップモードからロックステップモードへ動作モードを移行させることができるようになっている。
【００２８】
選択器１４は、モード切替制御部４からの制御信号MEM_SEL1に従い、演算処理部１２へのデータ提供元をメモリ部１１とバックアップメモリ部３１とのいずれかに切り替える。
【００２９】
選択器１５は、プロセッサ１内部の相互接続ネットワークを通じて送信される制御部１３からの制御信号に従い、外部回路６１を通じて伝送されたデータや命令と演算処理部１２によって演算処理されたデータとのいずれかを選択して出力するものである。そして、ロックステップモードにおいては、選択器１５からデータが出力されると、そのデータはメモリ部１１に供給され、メモリ部１１の指定されたデータ領域に記憶される。さらに、メモリ部１１のデータ領域に記憶されたデータは、バックアップ制御部３にも供給される。バックアップ制御部３に供給されたデータは、バックアップ比較器３２において、第２プロセッサ２から供給されるデータと比較され、バックアップ比較器３２は、両データが一致しているか否かを判定する。
【００３０】
第２プロセッサ２は、上述した第１プロセッサ１と同様の構成を備えている。すなわち、第２プロセッサ２は、メモリ部２１、演算処理部２２、制御部２３、及び選択器２４、２５を有する。そして、第２プロセッサも、メモリ部２１、演算処理部２２、及び制御部２３の協働により、命令の取得、命令の解読、命令に応じた演算処理などを行うことで、命令ストリーム（プログラム）を実行する。メモリ部２１は、データ領域及びフラグ領域に関して、メモリ部１１と同等の構造及び容量を有している。また、第２プロセッサ２の選択器２４、２５は、第１プロセッサ１の選択器１４、１５と同様の機能を有する。
【００３１】
バックアップ制御部３は、バックアップメモリ部３１と、バックアップ比較器３２とを有している。バックアップ制御部３は、上述したように、ロックステップモードにおいて、第１プロセッサ１のメモリ部１１及び第２プロセッサ２のメモリ部２１に記憶されたデータの供給を受ける。バックアップ比較器３２は、第１プロセッサ１からのデータと第２プロセッサ２からのデータとを比較し、一致するか否かを判定する。バックアップ比較器３２は、両データが一致したと判定すると、その一致判定したデータをバックアップメモリ部３１に出力する。一方、両データが一致しないと判定すると、バックアップ比較器３２はエラー信号を出力する。
【００３２】
バックアップメモリ部３１は、第１プロセッサ１のメモリ部１１及び第２プロセッサ２のメモリ部２１におけるデータ領域に相当する容量の記憶領域を備えている。バックアップ比較器３２によって一致判定されたデータは、メモリ部１１及びメモリ部２１において記憶されたデータ領域に対応する記憶領域に記憶される。そして、バックアップメモリ部３１は、モード切替制御部４によって、第１プロセッサ１の選択器１４及び第２プロセッサ２の選択器２４が、それぞれの演算処理部１２、２２へのデータ提供元をバックアップメモリ部３１に切り替えたとき、該当する記憶領域に記憶された同一のデータを演算処理部１２、２２に同時に提供する。
【００３３】
ロックステップ比較器５は、ロックステップモードにおいて、第１プロセッサ１から外部回路６１へ出力される出力データと、第２プロセッサ２から外部回路６２へ出力される出力データとを比較して、両データが一致するか否かを判定する。ロックステップ比較器５は、両データが一致しないと判定すると、エラー信号を出力する。
【００３４】
なお、ロックステップモードにおいて、いずれか一方のプロセッサ１（又はプロセッサ２）からの出力データが外部回路６１（又は外部回路６２）に出力されれば良い場合には、例えば、他方のプロセッサ２（又はプロセッサ１）と外部回路６２（又は外部回路６１）及びロックステップ比較器５との間に選択器を設けても良い。この場合、選択器は、フリーステップモードでは、他方のプロセッサ２（又はプロセッサ１）の出力データが、外部回路６２（又は外部回路６１）に出力されるように出力先を切り替える。一方、ロックステップモードでは、選択器は、他方のプロセッサ２（又はプロセッサ１）の出力データが、ロックステップ比較器５に出力されるように出力先を切り替える。
【００３５】
また、上述したバックアップメモリ部３１が、データを記憶する条件として、バックアップ比較器３２による一致判定だけでなく、ロックステップ比較器５における一致判定を併せて採用しても良い。
【００３６】
外部回路６１及び外部回路６２は、第１プロセッサ１及び第２プロセッサ２を、それぞれ、外部の主記憶装置、Ｄ／Ａコンバータ、通信コントローラ等の周辺機器に接続するためのインタフェースである。
【００３７】
選択器６３は、モード切替制御部４からの制御信号SELに応じて、外部回路６１からの入力信号と、外部回路６２からの入力信号とのいずれかを選択して、第２プロセッサ２に供給する。選択器６３は、フリーステップモードのとき、外部回路６２からの入力信号をプロセッサ２に供給する。一方、選択器６３は、ロックステップモードのとき、第１プロセッサ１と共通の外部回路６１からの入力信号を第２プロセッサ２に供給する。
【００３８】
モード切替制御部４は、マイクロコンピュータ１００の動作モードの切り替えを制御するものである。モード切替制御部４は、様々な要因で動作モードの切り替えを開始することができる。例えば、モード切替制御部４は、外部からの要求（ユーザ操作、外部装置からの要求）、定期的なタイマ割込み、第１プロセッサ１又は第２プロセッサ２で実行されるオペレーティングシステムやアプリケーションプログラムからの要求に応じて、動作モードの切り替えを開始することができる。
【００３９】
例えば、モード切替制御部４は、動作モードの切り替え処理として、マイクロコンピュータ１００の動作モードがフリーステップモードから中間ロックステップモードに切り替えられたときには、第１プロセッサ１からのフラグ状態信号STATE_FLAG1と第２プロセッサ２からのフラグ状態信号STATE_FLAG2に応じた制御信号MEM_SEL1、MEM_SEL２を選択器１４、２４に出力する処理を行う。具体的には、モード切替制御部４は、フラグ状態信号STATE_FLAG1、STATE_FLAG2が、該当するデータ領域が利用不可であることを示す「０」である場合には、演算処理部１２、２２へのデータ提供元をバックアップメモリ部３１とするための制御信号MEM_SEL1、MEM_SEL2を選択器１４、２４に出力する。一方、モード切替制御部４は、フラグ状態信号STATE_FLAG1、STATE_FLAG2が、該当するデータ領域が利用可能であることを示す「１」である場合には、演算処理部１２、２２へのデータ提供元をメモリ部１１、２１とするための制御信号MEM_SEL1、MEM_SEL2を選択器１４、２４に出力する。
【００４０】
そして、モード切替制御部４は、フラグ状態信号STATE_FLAG1、STATE_FLAG2が、すべてのデータ領域に対応するフラグが、データの利用可能を示すロック状態に更新されたことを示す「１１」となると、中間ロックステップモードから完全ロックステップモードへの移行が可能であるとみなす。この場合、モード切替制御部４は、フラグ状態信号STATE_FLAG1、STATE_FLAG2に基づく、選択器１４、２４による切り替え処理を終了し、演算処理部１２、２２へのデータ提供元をメモリ部１１、２１に固定する。これにより、マイクロコンピュータ１００の動作モードは、中間ロックステップモードから完全ロックステップモードに移行する。
【００４１】
さらに、モード切替制御部４は、動作モードがロックステップモードである間、選択器６３に対して、外部回路６１からの入力信号を出力するように切り替え指示する制御信号SELを出力する。上述したように、この制御信号SELは制御部１３、２３にも与えられ、制御部１３、２３は、制御信号SELの出力開始を、フラグクリア要求とみなして、メモリ部１１、２１のすべてのデータ領域に対応付けられたフラグをアンロック状態に設定する。なお、モード切替制御部４は、制御信号SELによってではなく、フラグ状態信号STATE_FLAG1、STATE_FLAG2を受信するポートから、第１プロセッサ１及び第２プロセッサ２に対して、すべてのフラグをアンロック状態に設定することを指示するフラグクリア要求信号を送信するようにしても良い。
【００４２】
また、モード切替制御部４は、ロックステップモードへの切り替え中、バックアップ制御部３及びロックステップ比較器５に対して、それぞれ動作することを指示する制御信号BKUP_VALID、CMP_VALIDを出力する。これにより、バックアップ制御部３及びロックステップ比較器５は、動作モードがロックステップモードである間、各メモリ部１１、２１に記憶されたデータの一致判定や、各プロセッサ１、２の出力データの一致判定を実行することが可能となる。なお、モード切替制御部４は、動作モードがロックステップモードである間、常に、バックアップ制御部３に制御信号BKUP_VALIDを出力しても良いが、中間ロックステップモードの間だけ、バックアップ制御部３に制御信号BKUP_VALIDを出力するようにしても良い。
【００４３】
次に、上述した構成を備えるマイクロコンピュータ１００において、動作モードの切り替え時に行われる処理について、図４〜６のフローチャートを参照して説明する。なお、図４のフローチャートは、動作モードがフリーステップモードから中間ロックステップモードに切り替えられたときに実行される処理を示している。換言すれば、図４のフローチャートは、マイクロコンピュータ１００の動作モードが中間ロックステップモードとなったときに、マイクロコンピュータ１００において実行される処理を示している。図５のフローチャートは、動作モードが中間ロックステップモードからフリーステップモードに切り替えられるときに実行される処理を示している。そして、図６のフローチャートは、動作モードが完全ロックステップモードからフリーステップモードに切り替えられるときに実行される処理を示している。
【００４４】
つまり、本実施形態では、図３に示すように、マイクロコンピュータ１００の動作モードは、フリーステップモードから中間ロックステップモードを介して完全ロックステップモードに移行可能である一方で、中間ロックステップモードからフリーステップモードに移行することも可能であるし、完全ロックステップモードからフリーステップモードに移行することも可能である。
【００４５】
図４のフローチャートのステップＳ１１では、モード切替制御部４から制御部１３、２３にフラグクリア要求信号が出力され、そのクリア要求信号に基づき、制御部１３、２３が、メモリ部１１、２１のすべてのデータ領域のフラグをアンロック状態に設定する。これにより、演算処理部１２、２２は、メモリ部１１、２１に記憶されたデータを利用することができなくなる。
【００４６】
なお、すべてのデータ領域に対応付けられたフラグがアンロック状態に設定されると、第１及び第２プロセッサ１、２は、「００」のフラグ状態信号STATE_FLAG1、STATE_FLAG2をモード切替制御部４に出力する。この際、モード切替制御部４が、フラグ状態信号STATE_FLAG1、STATE_FLAG2を受信するポートからフラグクリア信号を出力している場合には、「００」のフラグ状態信号STATE_FLAG1、STATE_FLAG2の受信に応じて、モード切替制御部４は、フラグクリア信号の出力を終了する。
【００４７】
上述したように、メモリ部１１、２１のすべてのデータ領域のフラグをアンロック状態に設定する理由は、フリーステップモードでは、メモリ部１１、２１のデータ領域に保存されているデータが一致するかどうかは不確定であるとともに、ロックステップモードでは、第１及び第２プロセッサ１、２の内部状態が一致する必要があるためである。
【００４８】
続くステップＳ１２では、モード切替制御部４は、バックアップ制御部３及びロックステップ比較器５に対して、それぞれ動作することを指示する制御信号BKUP_VALID、CMP_VALIDを出力する。そして、ステップＳ１３において、第２プロセッサ２への入力信号が、外部回路６２からではなく、第１プロセッサ１と共通の外部回路６１から与えられるように、選択器６３を切り替える。
【００４９】
ステップＳ１４では、モード切替制御部４が、命令によって読み出されるべきデータが記憶されたメモリ部１１、２１のデータ領域のフラグがロック状態であるかどうかを、フラグ状態信号STATE_FLAG1、STATE_FLAG2に基づいて判定する。具体的には、読出対象となっているデータ領域のフラグがアンロック状態である場合、制御部１３、２３は、「０」のフラグ状態信号STATE_FLAG1、STATE_FLAG2をモード切替制御部４に出力する。一方、読出対象となっているデータ領域のフラグがロック状態である場合、制御部１３、２３は、「１」のフラグ状態信号STATE_FLAG1、STATE_FLAG2をモード切替制御部４に出力する。従って、モード切替制御部４は、フラグ状態信号STATE_FLAG1、STATE_FLAG2に基づいて、読出対象となっているデータ領域のフラグがロック状態であるか否かを判定することができる。この際、モード切替制御部４が、フラグはロック状態ではない、すなわち、アンロック状態であると判定すると、ステップＳ１５の処理に進む。逆に、モード切替制御部４は、フラグはロック状態であると判定すると、ステップＳ１６の処理に進む。
【００５０】
ステップＳ１５では、モード切替制御部４は、選択器１４、２４に対して、演算処理部１２、２２へのデータ提供元をバックアップメモリ部３１に切り替えるための制御信号MEM_SEL1、MEM_SEL2を出力する。一方、ステップＳ１６では、モード切替制御部４は、選択器１４、２４に対して、演算処理部１２、２２へのデータ提供元をメモリ部１１、２１に切り替えるための制御信号MEM_SEL1、MEM_SEL2を出力する。
【００５１】
そして、演算処理部１２、２２において命令に応じた演算処理が行われて処理結果が出力されると、ステップＳ１７において、制御部１３、２３は、その出力結果が各メモリ部１１、２１のデータ領域に記憶されたか否かを判定する。この判定処理において、出力結果が各メモリ部１１、２１に記憶されたと判定すると、ステップＳ１８の処理に進む。ステップＳ１８では、制御部１３、２３が、出力結果が記憶されたデータ領域に対応付けられたフラグをロック状態に更新する。
【００５２】
このように、本実施形態では、中間ロックステップモードにおいて、各メモリ部１１、２１のデータ領域に新たなデータが記憶されると、そのデータ領域に対応付けられたフラグが、利用可能であることを示す状態に更新される。従って、次回以降の制御処理において、更新されたフラグに対応付けられているデータ領域のデータが読み出し対象となったときには、フラグがロック状態に更新されているので、モード切替制御部４は、各メモリ部１１、２１が演算処理部１２、２２へのデータ提供元となるように、選択器１４、２４を切り替える。このため、第１及び第２プロセッサ１、２は、ロックステップモードにおける同じ命令に応じた演算処理を、中間ロックステップモードの開始後に新たにメモリ部１１、２１に記憶されたデータに基づきより適切に行うことができる。一方、制御部１３、２３は、出力結果が各メモリ部１１、２１に記憶されていないと判定すると、ステップＳ２２の処理に進む。
【００５３】
各演算処理部１２、２２の演算出力が各メモリ部１１、２１に記憶される場合、それらの演算出力は、バックアップ制御部３にも入力される。ステップＳ１９では、バックアップ制御部３のバックアップ比較器３２が、第１プロセッサ１からの演算出力と、第２プロセッサ２からの演算出力とが一致するか否かを判定する。この判定処理において、両演算出力が一致すると判定した場合には、ステップＳ２０の処理に進んで、その一致した演算出力を、メモリ部１１及びメモリ部２１において記憶されたデータ領域に対応するバックアップメモリ部３１の記憶領域に記憶する。一方、両演算出力が一致しないと判定した場合には、ステップＳ２１に進んで、バックアップ制御部３からエラー信号を出力する。このエラー信号が出力された場合、フリーステップモードからロックステップモードへの移行が無効となり、例えば、マイクロコンピュータ１００のリセット、外部装置への通知、異常状態からの復帰のための割込み処理、マイクロコンピュータ１００の停止などの少なくとも１つの安全処置が取られる。
【００５４】
なお、ステップＳ１９では、さらに、ロックステップ比較器５による第１及び第２プロセッサ１、２の出力データが一致しているか否かも併せて判定し、演算出力と出力データとのいずれかでも不一致であればエラー信号を出力するようにしても良い。
【００５５】
この結果、バックアップメモリ部３１には、中間ロックステップモードにおいて、実際にメモリ部１１、２１に記憶され、かつ一致判定されたデータが記憶される。本実施形態では、フリーステップモードから中間ロックステップモードに移行した後、メモリ部１１、２１に記憶されたデータが一致するかどうか不確定である場合には、このバックアップメモリ部３１に記憶されたデータを用いて、演算処理部１２、２２における演算を実行する。従って、過去の中間ロックステップモードにおいて、一致するとの判定がなされた共通のデータを用いて、中間ロックステップモードにおける同じ命令を実行することができる。従って、本実施形態によれば、ロックステップモードへの切り替え時に、第１及び第２プロセッサ１、２を停止させる必要はないので、フリーステップモードからロックステップモードへの切り替えに要する時間を、従来技術よりもさらに短縮することができる。
【００５６】
なお、図４のフローチャートでは、各演算処理部１２、２２の演算出力が各メモリ部１１、２１に記憶されるときに、併せてバックアップ比較器３２において、一致判定する例を説明した。しかし、中間ロックステップモードが開始された後に、外部回路６１を通じて主記憶装置などの外部装置から取得したデータが各メモリ部１１、２１に記憶されるときにも、フラグの更新、一致判定、及び一致と判定した場合のバックアップメモリ部３１への記憶などの処理を行っても良い。
【００５７】
続くステップＳ２２では、各メモリ部１１、２１のすべてのデータ領域のフラグがロック状態に更新されたか否かを判定する。この判定処理において、すべてのデータ領域のフラグがロック状態に更新されたと判定すると、ステップＳ２３において、完全ロックステップモードに移行するための処理を行う。具体的には、すべてのデータ領域のフラグがロック状態に更新された場合、「１１」のフラグ状態信号STATE_FLAG1、STATE_FLAG2が、各プロセッサ１、２からモード切替制御部４に出力される。モード切替制御部４は、フラグ状態信号STATE_FLAG1、STATE_FLAG2に基づいて、すべてのデータ領域のフラグがロック状態に更新されたと判定すると、完全ロックステップモードに移行が可能とみなす。完全ロックステップモードへの移行が可能である場合、モード切替制御部４は、演算処理部１２、２２へのデータ提供元をメモリ部１１、２１に固定するための制御信号MEM_SEL1、MEM_SEL2を出力する。さらに、モード切替制御部４は、それ以後、フラグ状態信号STATE_FLAG1、STATE_FLAG2に基づき、選択器１４、２４へ出力する制御信号MEM_SEL1、MEM_SEL2を切り替える処理を終了する。
【００５８】
一方、ステップＳ２２の判定処理において、すべてのデータ領域のフラグがロック状態に更新されていないと判定すると、ステップＳ２４の処理に進む。ステップＳ２４では、フリーステップモードへの移行要求が、モード切替制御部４に入力されたか否かを判定する。フリーステップモードへの移行要求が入力されたと判定した場合には、ステップＳ２５に進み、中間ロックステップモードからフリーステップモードへの移行処理を実行する。一方、フリーステップモードへの移行要求が入力されていないと判定した場合には、ステップＳ１４に戻り、上述した処理を繰り返す。
【００５９】
次に、図５のフローチャートを参照して、中間ロックステップモードからフリーステップモードへの移行処理について説明する。
【００６０】
まず、ステップＳ３１では、モード切替制御部４は、バックアップ制御部３及びロックステップ比較器５に対して、動作することを指示する制御信号BKUP_VALID、CMP_VALIDの出力を停止する。これにより、バックアップ制御部３及びロックステップ比較器５の動作が停止する。なお、バックアップメモリ部３１は不揮発性メモリであり、バックアップ制御部３は動作を停止しても、その記憶内容を保持することができる。
【００６１】
続くステップＳ３２では、モード切替制御部４は、各選択器１４、２４に対して、演算処理部１２、２２へのデータ提供元をメモリ部１１、２１に固定するための制御信号MEM_SEL1、MEM_SEL2を出力する。このとき、モード切替制御部４は、まだアンロック状態となっているフラグを、すべてロック状態に変更することを制御部１３に指示しても良い。
【００６２】
そして、ステップＳ３３において、モード切替制御部４は、選択器６３に対して、外部回路６１ではなく、外部回路６２からの入力信号を出力するように切り替え指示する制御信号SELを出力する。これにより、第２プロセッサ２には、外部回路６２からの入力信号が入力され、第１プロセッサ１には、外部回路６１からの入力信号が入力されるようになる。
【００６３】
以上の処理を行うことにより、マイクロコンピュータ１００の動作モードが中間ロックステップモードからフリーステップモードに移行する。これにより、第１及び第２プロセッサ１、２は、フリーステップモードにおいて、それぞれ別個の命令ストリームを実行することができるようになる。
【００６４】
次に、図６のフローチャートを参照して、完全ロックステップモードからフリーステップモードへの移行処理について説明する。この移行処理は、完全ロックステップモードを実行中に、モード切替制御部４にフリーステップモードへの移行要求が入力された場合に開始される。
【００６５】
図６のフローチャートに示すように、最初のステップＳ４１において、モード切替制御部４は、バックアップ制御部３及びロックステップ比較器５に対して、動作することを指示する制御信号BKUP_VALID、CMP_VALIDの出力を停止する。続くステップＳ４２において、モード切替制御部４は、選択器６３に対して、外部回路６１ではなく、外部回路６２からの入力信号を出力するように切り替え指示する制御信号SELを出力する。
【００６６】
つまり、完全ロックステップモードからフリーステップモードへの移行処理は、中間ロックステップモードからフリーステップモードへの移行処理におけるステップＳ３２の処理を省略したものと同等である。これは、完全ロックステップモードでは、すでに、演算処理部１２、２２へのデータ提供元がメモリ部１１、２１に固定されており、また、データ領域の各フラグはすべてロック状態に更新されているためである。
【００６７】
（第２実施形態）
次に、第２実施形態に係るマイクロコンピュータについて説明する。図７は、第２実施形態に係るマイクロコンピュータ２００の構成の概要を示すブロック図である。
【００６８】
上述した第１実施形態では、第１及び第２プロセッサ１、２の外部にモード切替制御部４を設け、当該モード切替制御部４が、マイクロコンピュータ１００の動作モードを切り替えるための大部分の処理を行うように構成されていた。
【００６９】
それに対して、本実施形態では、第１及び第２プロセッサ１０１、１０２の制御部１３、２３が、モード切替制御部１０４の機能の一部を担うようにし、制御部１３、２３とモード切替制御部１０４とが協働して動作モードの切り替え処理を実行するように構成したものである。なお、制御部１３、２３とモード切替制御部１０４とに、どのように機能を振り分けるかに関して、本実施形態は、単なる一例を示すものにすぎず、機能の振り分けは適宜に行い得る。
【００７０】
本実施形態のマイクロコンピュータ２００においても、モード切替制御部１０４は、動作モードをフリーステップモードから（中間）ロックステップモードへ切り替えるときに、第１及び第２プロセッサ１０１、１０２に対して、信号線７１、７２を通じてフラグクリア要求信号ＲＥＱ１、ＲＥＱ２を送信する。このフラグクリア要求信号ＲＥＱ１、ＲＥＱ２に応じて、第１及び第２プロセッサ１０１、１０２のそれぞれの制御部１３、２３は、対応するメモリ部１１、２１のすべてのメモリ領域に対応付けられたフラグをアンロック状態に設定する。ここまでの処理は、上述した第１実施形態のマイクロコンピュータ１００と同様である。
【００７１】
しかし、本実施形態では、中間ロックステップモードにおいて、第１及び第２プロセッサ１０１、１０２が、ある命令を実行するために、読出対象となったデータが保存されているデータ領域のフラグの状態に応じたフラグ状態信号STATE_FLAG1、STATE_FLAG2は、信号線１６、２６を介してメモリ部１１、２１から制御部１３、２３に送信される。そして、制御部１３、２３は、そのフラグ状態信号STATE_FLAG1、STATE_FLAG2に応じて、演算処理部１２、２２へのデータ提供元をメモリ部１１、２１とバックアップメモリ部３１とのいずれかに切り替えるための制御信号MEM_SEL1、MEM_SEL2を、信号線１７、２７を介して選択器１４、２４に送信する。
【００７２】
このように、本実施形態では、各プロセッサ１０１、１０２の内部に設けられた構成部に対する制御信号は、各プロセッサ１０１、１０２の制御部１３、２３から出力されるように構成されている。このように、第１及び第２プロセッサ１０１、１０２の制御部１３、２３が、モード切替制御部１０４の機能の一部を担うように構成した場合であっても、第１実施形態と同様に、マイクロコンピュータ２００の動作モードの切り替え処理を実行することができる。
【００７３】
本実施形態のマイクロコンピュータ２００における、その他の構成及び作動は、上述した第１実施形態のマイクロコンピュータ１００と同様であるため、説明を省略する。
【００７４】
以上、本発明の好ましい実施形態について説明したが、本発明は、なんら上述した実施形態に制限されることなく、本発明の主旨を逸脱しない範囲において、種々変形して実施することができる。
【００７５】
例えば、上述した各実施形態では、マイクロコンピュータ１００、２００が２つのプロセッサ１、２、１０１、１０２を有する例について説明したが、プロセッサの数は３つ以上であっても良い。
【符号の説明】
【００７６】
１：第１プロセッサ、２：第２プロセッサ、３：バックアップ制御部、４：モード切替制御部、５：ロックステップ比較器、１１：メモリ部、１２：演算処理部、１３：制御部、１４：選択器、１５：選択器、２１：メモリ部、２２：演算処理部、２３：制御部、２４：選択器、２５：選択器、３１：バックアップメモリ部、３２：バックアップ比較器、６１：外部回路、６２：外部回路、１００：マイクロコンピュータ
【図１】
2019016107.tif 000003
【図２】
2019016107.tif 000004
【図３】
2019016107.tif 000005
【図４】
2019016107.tif 000006
【図５】
2019016107.tif 000007
【図６】
2019016107.tif 000008
【図７】
2019016107.tif 000009