(57)【要約】【課題】フリーステップモードからロックステップモードへの切り替え時に、２つのプロセッサ各々が有する記憶回路の記憶状態の一致に要する時間を短縮可能とする。【解決手段】プロセッサシステム１００は、プロセッサ１及び２を有し、これら２つのプロセッサが同一の命令ストリームを実行するロックステップモードと異なる命令ストリームを実行するフリーステップモードとの間で動作モード切り替え可能に構成されている。さらに、システム１００は、プロセッサ１内の記憶回路１１とプロセッサ２内の記憶回路２１の間に配置された信号線群５及び選択回路２４を有する。信号線群５及び選択回路２４は、フリーステップモードからロックステップモードへの切り替えのために設けられたプロセッサ１及び２による命令ストリーム実行の停止期間内に、記憶回路１１及び１４の間を選択的に結合する。【選択図】図１
2010198131.tif 000002
【特許請求の範囲】
【請求項１】
第１の組み合わせ回路及び前記第１の組み合わせ回路の出力値の一時記憶と前記第１の組み合わせ回路への入力値の供給を行う第１の記憶回路を有し、供給される命令ストリームに応じた処理を行うよう構成された第１のプロセッサと、
第２の組み合わせ回路及び前記第２の組み合わせ回路の出力値の一時記憶と前記第２の組み合わせ回路への入力値の供給を行う第２の記憶回路を有し、供給される命令ストリームに応じた処理を行うよう構成された第２のプロセッサと、
前記第１及び第２のプロセッサが同一の命令ストリームを実行するロックステップモードと前記第１及び第２のプロセッサが異なる命令ストリームを実行するフリーステップモードとの間で動作モードを切り替える制御ユニットと、
前記第１及び第２の記憶回路の間に配置される少なくとも１つの信号線を含み、前記第１の記憶回路の記憶状態を前記第２の記憶回路に転送可能な信号線群と、
前記第２の記憶回路の接続先を前記第２の組み合わせ回路と前記信号線群の間で切り替え可能な選択回路と、
を備えるプロセッサシステム。
【請求項２】
前記選択回路は、前記制御ユニットによる制御に応じて動作し、
前記フリーステップモードから前記ロックステップモードへの切り替えのために設けられた前記第１及び第２のプロセッサによる命令ストリーム実行の第１の停止期間内に、前記第２の記憶回路を前記信号線群に接続するよう制御され、
前記第１及び第２のプロセッサによる命令ストリームの実行中には、前記第２の記憶回路を前記第２の組み合わせ回路に接続するよう制御される、
請求項１に記載のプロセッサシステム。
【請求項３】
前記信号線群及び前記選択回路は、前記第１の記憶回路に含まれる複数の記憶素子の一部分と前記第２の記憶回路に含まれる複数の記憶素子の一部分とを接続するよう構成されており、
前記第１の記憶回路に含まれる複数の記憶素子の他の部分のうち少なくとも一部と、前記第２の記憶回路に含まれる複数の記憶素子の他の部分のうち少なくとも一部は、前記第１の停止期間内に予め定められた固定値によって更新される、請求項１又は２に記載のプロセッサシステム。
【請求項４】
前記第１及び第２のプロセッサの各々は、前記固定値を生成する固定値生成回路をさらに備える、請求項３に記載のプロセッサシステム。
【請求項５】
前記第１及び第２のプロセッサの各々は、前記フリーステップモードを開始する際の開始アドレスを保持可能な開始アドレス保持回路をさらに備え、
前記制御ユニットは、前記ロックステップモードから前記フリーステップモードへの切り替えのために設けられた前記第１及び第２のプロセッサによる命令ストリーム実行の第２の停止期間内に、前記第１及び第２のプロセッサのそれぞれの前記開始アドレス保持回路に対して異なる開始アドレスを供給し、
前記第１及び第２のプロセッサは、前記第２の停止期間からの復帰時に、それぞれの前記開始アドレス保持回路に保持された開始アドレスを取り込んで実行を再開するよう構成されている、
請求項１〜４のいずれか１項に記載のプロセッサシステム。
【請求項６】
前記制御ユニットは、前記動作モードの切り替えを行う場合に、前記第１及び第２のプロセッサに対して停止要求を送信するよう構成され、
前記第１及び第２のプロセッサは、前記停止要求に応じて命令ストリームの実行を停止するとともに、停止完了応答を前記制御ユニットに送信するよう構成され、
前記制御ユニットは、前記第１及び第２のプロセッサからの前記停止完了応答の受信を条件として、前記第１及び第２のプロセッサへのクロック供給を停止する、請求項１〜５のいずれか１項に記載のプロセッサシステム。
【請求項７】
前記第１及び第２のプロセッサによる前記停止要求に応じた処理は、
新規の命令取得を停止すること、
プロセッサ内に残存する全命令を処理すること、及び
プロセッサ内に残存する全命令の処理が完了したことに応じて前記停止完了応答を送信すること、
を含む、請求項６に記載のプロセッサシステム。
【請求項８】
前記第１及び第２の記憶回路の各々は、プログラムカウンタ、ＰＳＷ（Program Status Word）レジスタ、及びパイプラインレジスタのうち少なくとも１つを含む、請求項１〜７のいずれか１項に記載のプロセッサシステム。
【請求項９】
第１及び第２のプロセッサを有し、前記第１及び第２のプロセッサが同一の命令ストリームを実行するロックステップモードと異なる命令ストリームを実行するフリーステップモードとの間で動作モード切り替え可能に構成されたプロセッサシステムであって、
前記第１のプロセッサ内の第１の記憶回路と前記第２のプロセッサ内の第２の記憶回路の間に配置され、前記フリーステップモードから前記ロックステップモードへの切り替えのために設けられた前記第１及び第２のプロセッサによる命令ストリーム実行の停止期間内に前記第１及び第２の記憶回路の間を選択的に結合するハードウェア回路を備える、プロセッサシステム。
【請求項１０】
前記ハードウェア回路は、前記第１の記憶回路に含まれる複数の記憶素子の一部分と前記第２の記憶回路に含まれる複数の記憶素子の一部分とを接続するよう構成されており、
前記第１の記憶回路に含まれる複数の記憶素子の他の部分のうち少なくとも一部と、前記第２の記憶回路に含まれる複数の記憶素子の他の部分のうち少なくとも一部は、前記停止期間内に予め定められた固定値によって更新される、請求項９に記載のプロセッサシステム。
【請求項１１】
前記第１及び第２のプロセッサの各々は、前記固定値を生成する固定値生成回路をさらに備える、請求項１０に記載のプロセッサシステム。
【請求項１２】
第１及び第２のプロセッサを有するプロセッサシステムの動作モード切り替え方法であって、
前記プロセッサシステムは、前記第１及び第２のプロセッサが同一の命令ストリームを実行するロックステップモードと異なる命令ストリームを実行するフリーステップモードとの間で動作モード切り替え可能に構成され
前記第１のプロセッサは、第１の組み合わせ回路及び前記第１の組み合わせ回路の出力値の一時記憶と前記第１の組み合わせ回路への入力値の供給を行う第１の記憶回路を有し、
前記第２のプロセッサは、第２の組み合わせ回路及び前記第２の組み合わせ回路の出力値の一時記憶と前記第２の組み合わせ回路への入力値の供給を行う第２の記憶回路を有し、
前記方法は、
前記第１の記憶回路と前記第２の記憶回路の間に配置された選択回路を制御することによって、前記フリーステップモードから前記ロックステップモードへの切り替えのために設けられた前記第１及び第２のプロセッサによる命令ストリーム実行の第１の停止期間内に、前記第１の記憶回路の記憶状態を前記第２の記憶回路に転送すること、
を含む、
動作モード切り替え方法。
【請求項１３】
前記第１及び第２のプロセッサの各々は、前記フリーステップモードを開始する際の開始アドレスを保持可能な開始アドレス保持回路をさらに備え、
前記方法は、
前記ロックステップモードから前記フリーステップモードへの切り替えのために設けられた前記第１及び第２のプロセッサによる命令ストリーム実行の第２の停止期間内に、前記第１及び第２のプロセッサのそれぞれの前記開始アドレス保持回路に対して異なる開始アドレスを供給すること、及び
前記第２の停止期間からの復帰時に、前記第１及び第２のプロセッサがそれぞれの前記開始アドレス保持回路に保持された開始アドレスを取り込んで実行を再開すること、
をさらに含む、
請求項１２に記載の動作モード切り替え方法。
【請求項１４】
前記動作モードの切り替えを行う場合に、前記第１及び第２のプロセッサに対して停止要求を送信すること、
前記停止要求に応じて前記第１及び第２のプロセッサが命令ストリームの実行を停止するとともに、停止完了応答を前記制御ユニットに送信すること、及び
前記第１及び第２のプロセッサからの前記停止完了応答の受信を条件として、前記第１及び第２のプロセッサへのクロック供給を停止すること、
をさらに含む請求項１２又は１３に記載の動作モード切り替え方法。
【請求項１５】
前記第１及び第２のプロセッサによる前記停止要求に応じた処理は、
新規の命令取得を停止すること、
プロセッサ内に残存する全命令を処理すること、及び
プロセッサ内に残存する全命令の処理が完了したことに応じて前記停止完了応答を送信すること、
を含む、請求項１４に記載の動作モード切り替え方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、少なくとも２つのプロセッサを有し、これら２つのプロセッサに同一の命令ストリームを実行させる"ロックステップモード"と異なる命令ストリームを実行させる"フリーステップモード"との間で動作モードを切り替えることができるプロセッサシステム、及びその動作モード切り替え方法に関する。
【背景技術】
【０００２】
少なくとも２つのプロセッサ（プロセッサコアとも呼ばれる）を有し、これら２つのプロセッサの動作モードを "ロックステップモード"と "フリーステップモード"の間で切り替え可能なプロセッサシステムが知られている（例えば特許文献１及び２を参照）。ロックステップモードでは、２以上のプロセッサに同一の処理を実行させ、これらの実行結果を相互に比較することによってエラー発生を検知する。一方、フリーステップモードでは、２以上のプロセッサに異なる処理を実行させることで、全体的なパフォーマンスの向上を図る。
【０００３】
特許文献３は、ロックステップモードとフリーステップモードを切り替え可能な２つのプロセッサ（第１及び第２のプロセッサと呼ぶ）がロックステップモードで同一の命令ストリームを実行する際に、外部回路から２つのプロセッサに同一のデータを供給するための構成が開示されている。具体的に述べると、特許文献３は、外部回路と第２のプロセッサが有するデータ受信部との間に選択回路を配置する構成を開示している。第２のプロセッサの選択回路には第１のプロセッサに対する入力信号線からの分岐配線が接続されている。そして、第１及び第２のプロセッサがロックステップモードで同一命令ストリームを実行している間は、外部回路から第１のプロセッサに供給される信号が分岐されて第２のプロセッサの選択回路にも供給される。選択回路を制御することにより、第１のプロセッサと同一のデータが第２のプロセッサにも供給される。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特表２００８−５１８３３８号公報
【特許文献２】特開２００６−３０２２８９号公報
【特許文献３】特開２００５−３０２０２０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
フリーステップモードとロックステップモードとの間で動作モードを切り替え可能な従来のプロセッサシステムは、ロックステップモードへの切り替えの際に２つのプロセッサの内部状態を一致させる必要がある。２つのプロセッサの内部状態が一致した状態でロックステップ動作を開始しなければ、２つのプロセッサの出力データが相違し、場合よってはエラーが検出されてしまうためである。
【０００６】
従来のプロセッサシステムは、フリーステップモードからロックステップモードへの切り替えの際に、２つのプロセッサの内部状態、つまり２つのプロセッサ各々が有する記憶回路の記憶状態を一致させるための処理に時間を要するという問題がある。例えば、一方のプロセッサ内の記憶回路の内容を外部の共有メモリへ出力するためのストア命令、および共有メモリの記憶内容を前記第２の記憶回路に転送するためのロード命令を繰り返すことで記憶状態を一致させる必要がある。
【０００７】
上述した特許文献１〜３は、２つのプロセッサの内部状態を一致させるための処理時間を短縮するための具体的な構成および切り替え手法は何ら開示していない。命令で参照することができないプロセッサ内の記憶回路の記憶状態を一致させるための構成についても同様である。なお、特許文献３は、ロックステップモードで動作中の２つのプロセッサに対する入力信号を共通化するための選択回路を有する構成を開示している。しかしながら当該構成は、フリーステップモードからロックステップモードへの切り替え時に、２つのプロセッサの内部状態、つまり２つのプロセッサ各々が有する記憶回路の記憶状態の一致に要する時間の短縮に寄与するものではない。
【課題を解決するための手段】
【０００８】
本発明の第１の態様にかかるプロセッサシステムは、第１のプロセッサ、第２のプロセッサ、制御ユニット、信号線群、および選択回路を備える。
前記第１のプロセッサは、第１の組み合わせ回路及び前記第１の組み合わせ回路の出力値の一時記憶と前記第１の組み合わせ回路への入力値の供給を行う第１の記憶回路を有し、供給される命令ストリームに応じた処理を行う。同様に、前記第２のプロセッサは、第２の組み合わせ回路及び前記第２の組み合わせ回路の出力値の一時記憶と前記第２の組み合わせ回路への入力値の供給を行う第２の記憶回路を有し、供給される命令ストリームに応じた処理を行う。前記制御ユニットは、前記第１及び第２のプロセッサが同一の命令ストリームを実行するロックステップモードと前記第１及び第２のプロセッサが異なる命令ストリームを実行するフリーステップモードとの間で動作モードを切り替える。
また、前記信号線群は、前記第１及び第２の記憶回路の間に配置される少なくとも１つの信号線を含み、前記第１の記憶回路の記憶状態を前記第２の記憶回路に転送可能である。最後に、前記選択回路は、前記第２の記憶回路の接続先を前記第２のプロセッサと前記信号線群の間で切り替えることができる。
【０００９】
上述した本発明の第１の態様によれば、前記選択回路の動作制御によって、前記信号線群を経由して前記第１の記憶回路の記憶内容を前記第２の記憶回路に複製することができる。つまり、前記第１の記憶回路の記憶内容を外部の共有メモリを介して前記第２の記憶回路に転送するために、ストア命令及びロード命令を繰り返す必要がない。よって、本発明の第１の態様は、２つのプロセッサ各々が有する記憶回路の記憶状態の一致に要する処理時間の短縮に寄与することができる。
【００１０】
本発明の第２の態様にかかるプロセッサシステムは、第１及び第２のプロセッサを有し、これら２つのプロセッサが同一の命令ストリームを実行するロックステップモードと異なる命令ストリームを実行するフリーステップモードとの間で動作モード切り替え可能に構成されている。さらに、当該プロセッサシステムは、前記第１のプロセッサ内の第１の記憶回路と前記第２のプロセッサ内の第２の記憶回路の間に配置され、前記フリーステップモードから前記ロックステップモードへの切り替えのために設けられた前記第１及び第２のプロセッサによる命令ストリーム実行の停止期間内に前記第１及び第２の記憶回路の間を選択的に結合するハードウェア回路を有する。
【００１１】
上述した本発明の第２の態様において２つのプロセッサ各々が有する記憶回路の記憶状態を一致させるためには、フリーステップモードからロックステップモードへの切り替え時に、前記ハードウェア回路によって前記第１及び第２の記憶回路の間を結合すればよい。２つのプロセッサの記憶状態を一致させるためにストア命令及びロード命令の繰り返しを必要としないため、本発明の第２の態様も、記憶内容の一致に要する処理時間の短縮に寄与することができる。
【発明の効果】
【００１２】
上述した本発明の第１及び第２の態様によれば、フリーステップモードからロックステップモードへの切り替え時に、２つのプロセッサ各々が有する記憶回路の記憶状態の一致に要する時間を短縮可能となる。
【図面の簡単な説明】
【００１３】
【図１】発明の実施の形態１にかかるプロセッサシステムの構成を示すブロック図である。
【図２】図１に示した制御ユニットによるフリーステップモードからロックステップモードへの切り替え制御手順を示すフローチャートである。
【図３】図１に示した制御ユニットによるロックステップモードからフリーステップモードへの切り替え制御手順を示すフローチャートである。
【図４】発明の実施の形態２にかかるプロセッサシステムの構成を示すブロック図である。
【発明を実施するための形態】
【００１４】
以下では、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。各図面において、同一要素には同一の符号が付されており、説明の明確化のため、必要に応じて重複説明は省略される。
【００１５】
＜発明の実施の形態１＞
本実施の形態にかかるプロセッサシステム１００は、プロセッサ１及び２を有する。システム１００は、プロセッサ１及び２が同一の命令ストリームを実行するロックステップモードと異なる命令ストリームを実行するフリーステップモードとの間で動作モードを切り替えることができる。図１は、システム１００の構成例を示すブロック図である。なお、図１の例では、ロックステップモード時のマスタープロセッサをプロセッサ１とし、チェッカープロセッサをプロセッサ２としている。つまり、ロックステップモード時には、プロセッサ１の演算結果が外部回路６１に出力され、プロセッサ２の外部回路６２への出力は無効化される。以下では、図１に示されている各要素について順に説明する。
【００１６】
プロセッサ１及び２の各々は、プログラムつまり命令ストリームを取得し、命令を解読し、解読された命令に応じた算術演算、論理演算、比較、シフト等の処理を行う。安全性を要求されるプログラム（タスク）は、ロックステップモードで、つまりプロセッサ１及び２で冗長的に実行される。一方、安全に対する要求の小さい通常のプログラム（タスク）群は、フリーステップモードで、つまりプロセッサ１又は２のいずれかに適宜分散されて実行される。
【００１７】
プロセッサ１は、組み合わせ回路１０及び記憶回路１１を有する。プロセッサ１は、組み合わせ回路１０及び記憶回路１１の結合によって、命令の取得、命令の解読、命令に応じた演算処理を行う。組み合わせ回路１０は、論理ゲート（ＮＯＴ、ＡＮＤ、ＯＲ、ＸＯＲ、ＮＯＲ、ＮＡＮＤ等）、エンコーダ、デコーダ、マルチプレクサ、デマルチプレクサ、バレルシフタ、比較器、加算器、乗算器などを含む。
【００１８】
記憶回路１１は、複数の記憶素子を含み、プロセッサ１の内部状態、プロセッサ１の命令に応じた処理の実行状態を記憶する。記憶回路１１内の各記憶素子は、組み合わせ回路１０への入力値及び組み合わせ回路１０からの出力値を記憶する。具体的に述べると、記憶回路１１は、複数のラッチ、複数のＦ／Ｆ、レジスタ、内部キャッシュ（ＳＲＡＭ（Static Random Access Memory）)を含む。ここで、レジスタには、プログラムカウンタ及びＰＳＷ（Program Status Word）レジスタ等の特定用途レジスタ、汎用レジスタ、パイプラインレジスタ、並びに各種のアドレスレジスタ等が含まれる。
【００１９】
カウンタ（例えば、アップ／ダウンカウンタ、ｎ進カウンタ、リングカウンタ）等の順序回路は、組み合わせ回路１０内の演算素子と記憶回路１１内の記憶素子の組み合わせによって形成される。つまり、組み合わせ回路１０及び記憶回路１１の結合によって、命令フェッチャ（シーケンサ）、命令デコーダ、レジスタファイル、ＡＬＵ（Arithmetic Logic Unit）等のプロセッサ１における命令実行のために必要な機能的な構成要素が形成されている。
【００２０】
また、プロセッサ１は、制御回路１２を有する。制御回路１２は、後述する制御ユニット３からの制御信号に応じて、プロセッサ１の動作モード切り替えに関して予め定められた動作・演算を行うシーケンサである。より具体的に述べると、制御回路１２は、制御ユニット３からの制御信号（図１ではREQ1、CMD1及びADS1）に応じて、組み合わせ回路１０及び記憶回路１１による命令実行の停止制御を行う。また、制御回路１２は、開始アドレスレジスタ（ＳＡＲ）１３を有する。ＳＡＲ１３は、制御ユニット３から供給される開始アドレスを保持する。開始アドレスは、フリーステップモードでの動作開始時の先頭アドレスを意味し、ロックステップモードからフリーステップモードに移行する際に制御ユニット３からプロセッサ１に供給される。
【００２１】
上述したプロセッサ１と同様に、プロセッサ２は、組み合わせ回路２０、記憶回路２１制御回路２２、およびＳＡＲ２３を有する。組み合わせ回路２０及び記憶回路２１の結合によって、命令フェッチャ（シーケンサ）、命令デコーダ、レジスタファイル、ＡＬＵ（Arithmetic Logic Unit）等のプロセッサ２における命令実行のために必要な機能的な構成要素が形成されている。
【００２２】
さらに、ロックステップモード時にチェッカープロセッサとして動作するプロセッサ２の組み合わせ回路２０と記憶回路２１の間には、選択回路２４が配置されている。選択回路２４は、後述する制御ユニット３からの制御信号（図１ではSTATE_CPY）に応じて、記憶回路２１の接続先を組み合わせ回路２０と信号線群５の間で切り換える。信号線群５は、プロセッサ１及び２の間を接続する信号線であり、選択回路２４の一方の入力とプロセッサ１の記憶回路１１との間を接続している。なお、選択回路２４には、例えば、単純な２：１マルチプレクサを用いればよい。
【００２３】
制御ユニット３からの制御信号に応じた選択回路２４の動作によって、フリーステップモードからロックステップモードへの切り替えのために設けられたプロセッサ１及び２による命令ストリーム実行の停止期間内に、記憶回路１１及び２１の間が選択的に結合される。これにより、記憶回路１１の記憶データが信号線群５を経由して記憶回路１１の記憶状態が記憶回路２１にコピーされる。
【００２４】
制御ユニット３は、プロセッサ１及び２の動作モードの切り替えを制御する。制御ユニット３が動作モードの切り替えを開始する契機は様々である。例えば、動作モードの切り替えは、定期的なタイマ割込みに応じて、外部からの要求（ユーザ操作、外部装置からの要求）に応じて、又はプロセッサ１若しくは２で実行されるＯＳ（operating system）やアプリケーション・プログラムからの要求に応じて行われる。なお、制御ユニット３による動作モード切り替え手順の具体例については後述する。
【００２５】
比較ユニット４は、ロックステップモード時に有効化され、プロセッサ１及び２による処理結果を比較し、処理結果間の矛盾の有無によってエラー発生を検出する。
【００２６】
外部回路６１は、プロセッサ１を外部メモリ、Ｄ／Ａコンバータ、通信コントローラ等の周辺機器に接続するためのインタフェースである。同様に、外部回路６２は、プロセッサ２を周辺機器に接続するためのインタフェースである。図１の例では、動作モードの変更に応じてプロセッサ２の入出力を切り替えるため、プロセッサ２と外部回路６２の間に選択回路６３及び６４が配置されている。
【００２７】
選択回路６３は、制御ユニット３からの制御信号（図１ではSEL）に応じて動作し、フリーステップモード時に外部回路６２からの入力信号をプロセッサ２に供給し、ロックステップモード時にプロセッサ１と共通の外部回路６１からの入力信号をプロセッサ２に供給する。
【００２８】
選択回路６４は、制御ユニット３からの制御信号（図１ではSEL）に応じて動作し、フリーステップモード時にプロセッサ２からの出力信号を外部回路６２に供給する。一方、ロックステップモード時には、選択回路６４は、プロセッサ２から外部回路６２への出力信号の供給を遮断する。図１の構成例では、ロックステップモード時には、予め定められた固定値を生成する固定値生成回路６５の出力が外部回路６２に供給される。なお、図１に示すプロセッサ１及び２と外部回路６１及び６２との接続関係は一例に過ぎない。例えば、プロセッサシステム１００の用途によっては、ロックステップモード時におけるプロセッサ１の出力を分岐することにより、外部回路６１及び６２の両方に供給してもよい。
【００２９】
続いて以下では、制御ユニット３による動作モードの切り替え手順について詳細に説明する。図２は、フリーステップモードからロックステップモードへの切り替え手順の具体例を示すフローチャートである。ステップＳ１１〜Ｓ１３は、プロセッサ１及び２による命令ストリームの実行を停止する処理である。ステップＳ１１では、制御ユニット３からプロセッサ１及び２に対して停止要求が送信される。図１の例では、プロセッサ１に対する停止要求は、REQ1信号を"要求有り"を示す値（例えば１）に設定し、CMD1信号を"停止要求"を示す値に設定することにより行なえばよい。同様に、プロセッサ２に対する停止要求は、REQ2信号を"要求有り"を示す値（例えば１）に設定し、CMD2信号を"停止要求"を示す値に設定することにより行えばよい。
【００３０】
ステップＳ１１の停止要求に応答してプロセッサ１及び２は、停止処理を行う。具体的に述べると、プロセッサ１及び２は、（ｉ）新規の命令取得を停止し、（ｉｉ）プロセッサ内に残存する全命令を処理し、（ｉｉｉ）プロセッサ内に残存する全命令の処理が完了したことに応じて停止完了応答（図１のACK1及びACK2）を制御ユニット３に送信すればよい。プロセッサ１及び２の双方から停止完了応答を受信したことに応じて（Ｓ１２）、制御ユニット３は、プロセッサ１及び２への要求を取り下げるとともに、プロセッサ１及び２へのクロック供給（CLK1及びCLK2）を停止する。要求の取り下げは、REQ1信号及びREQ2信号を"要求なし"を示す値（例えば０）に設定することにより行えばよい。
【００３１】
つまり、制御ユニット３は、停止要求によってプロセッサ１及び２に対して動作モード切り替えの予告を行い、プロセッサ１及び２が切り替え可能な状態になったことを停止完了応答によって確認した後に、後述するステップＳ１４以降の切り替え処理を行う。これにより、フリーステップモードにおけるタスクの異常終了を防止することができる。
【００３２】
ステップＳ１４では、プロセッサ１の状態、つまり記憶回路１１の記憶状態をプロセッサ２の記憶回路２１にコピーする。記憶回路１１から記憶回路２１へのコピーは、以下の手順により行えばよい。まず、選択回路２４に信号線群５を選択させる。図１の例では、STATE_CPY信号の値を"１"に設定することで、選択回路２４が信号線群５を選択する。これにより、記憶回路１１の記憶状態が記憶回路２１に供給される。この状態で、プロセッサ２のクロックCLK2を1クロック期間だけ供給することで、記憶回路１１の記憶状態が記憶回路２１に取り込まれる。コピー完了後は、STATE_CPY信号の値を"０"に戻す。
【００３３】
ステップＳ１５では、選択回路６３及び６４を制御して、マスタープロセッサ１とチェッカープロセッサ２の入力をともに外部回路６１とし、チェッカープロセッサ２の外部回路６２への出力を無効化する。図１の例では、SEL信号の値を"１"に設定すればよい。
【００３４】
ステップＳ１６では、比較ユニット４を有効化する。これは、比較ユニット４を制御するためのCMP_VALID信号を"有効化"を示す値（例えば１）に設定することにより行えばよい。
【００３５】
最後に、ステップＳ１７では、プロセッサ１及び２へのクロック供給（CLK1及びCLK2）を再開し、ロックステップモードによるプロセッサ１及び２の動作を開始させる。
【００３６】
続いて、図３を参照して、ロックステップモードからフリーステップモードへの切り替え手順について説明する。図３のフローチャートは、ロックステップモードからフリーステップモードへ切り替える際の制御ユニット３による処理手順の具体例を示している。
【００３７】
図３のステップＳ２１では、比較ユニット４を無効化する。これは、比較ユニット４を制御するためのCMP_VALID信号を"無効化"を示す値（例えば０）に設定することにより行えばよい。
【００３８】
ステップＳ２２では、制御ユニット３から開始アドレスレジスタ（ＳＡＲ）１３に、フリーステップモード動作時のプロセッサ１の開始アドレスをセットする。これは、REQ1信号に"要求有り"を示す値（例えば１）を設定し、CMD1信号に"開始アドレス設定"を示す値を設定し、ADS1信号に開始アドレスを設定することにより行えばよい。同様に、制御ユニット３からＳＡＲ２３に、フリーステップモード動作時のプロセッサ２の開始アドレスをセットする。
【００３９】
ステップＳ２３〜Ｓ２５は、プロセッサ１及び２による命令ストリームの実行を停止する処理である。これらの処理は、フリーステップモードからロックステップモードへの移行に関して上述したステップＳ１１〜Ｓ１３の処理内容と同様である。
【００４０】
ステップＳ２６では、選択回路６３及び６４を制御して、プロセッサ２の入力を外部回路６２に戻し、チェッカープロセッサ２の外部回路６２への出力を有効化する。図１の例では、SEL信号の値を"０"に設定すればよい。
【００４１】
最後に、ステップＳ１７では、プロセッサ１及び２に対して起動要求を行う。具体的には、プロセッサ１及び２へのクロック供給（CLK1及びCLK2）を再開し、プロセッサ１及び２に起動要求を送信すればよい。起動要求の送信は、例えば、REQ1信号に"要求有り"を示す値（例えば１）を設定し、CMD1信号に"起動要求"を示す値を設定すればよい。
【００４２】
図１及び図３を用いて説明した例では、フリーステップモードへの切り替えに際して、制御ユニット３からプロセッサ１及び２のそれぞれに異なる開始アドレスを予め与える。これにより、一方のプロセッサを先に動作させて他方のプロセッサに開始アドレスを与えて起動させる処理が不要となる。よって、本実施の形態によれば、プロセッサ１及び２がユーザタスク等の実効的なタスクを各々独立に実行する状態にいち早く移行できる。
【００４３】
以上に述べたように、本実施の形態にかかるプロセッサシステム１００は、記憶回路１１及び２１の間にハードウェア回路、つまり信号線群５及び選択回路２４、を配置している。そして、ロックステップモードへの切り替えの際に選択回路２４を動作させることで、記憶回路１１の記憶状態を記憶回路２１にコピーする。これにより、プロセッサ１及び２がストア命令、ロード命令、コピー命令等の命令を実行することなく、プロセッサ１と２の内部状態を一致させることができる。
【００４４】
また、従来のプロセッサシステムでは、命令で参照可能なキャッシュメモリや汎用レジスタ等の記憶状態を２つのプロセッサ間で一致させることはできるが、命令で参照することができない記憶回路（例えば、パイプラインレジスタ等）の記憶状態を一致させることが困難であるという問題がある。これに対して、本実施の形態にかかるプロセッサシステム１００は、信号線群５及び選択回路２４を命令によって参照することが困難な記憶素子間に配置することで、命令操作に依ることなくこれらの記憶素子間の記憶状態を一致させることができる。
【００４５】
なお、説明の容易化のため本実施の形態では２つのプロセッサ１及び２に着目して説明したが、プロセッサシステム１００は３つ以上のプロセッサを有していてもよい。また、高速な転送を可能とするためには信号線群５はコピー対象となる記憶素子数に応じた数だけ配置するとよい。しかしながら、配線スペースの制約がある場合等にはシリアライザを配置することでプロセッサ１と２の間の信号線数を削減してもよい。つまり、究極的には、信号線群５の線数は、コピーの対象となる配線素子数と同数でもよいし、反対に１本のみでもよい。
【００４６】
また、信号線群５及び選択回路２４を用いたコピーの対象となる記憶素子は、命令ストリームを実行するためにプロセッサ１及び２に配置された記憶回路の全体でなくてもよい。例えば、ロックステップモードでの動作開始時にプロセッサ１及び２の間で記憶内容が相違していてもプロセッサ１及び２の出力の不一致を招くおそれのない記憶素子はコピー対象から除外してもよい。
【００４７】
また、ロックステップモードでの動作開始時に一致させておかなければならない記憶素子の一部については、ロード命令・ストア命令・コピー命令等の実行によってプロセッサ１と２の間で記憶状態を一致させてもよい。この場合でも、ロード命令・ストア命令・コピー命令等の実行によって全ての記憶素子の記憶状態を一致させる場合に比べて、コピー処理に要する総時間を短縮することができる。
【００４８】
また、ロックステップモードでの動作開始時に一致させておかなければならない記憶素子の一部を、プロセッサ１及び２の間で共通の予め定められた値によって更新してもよい。この変形例について発明の実施の形態２で説明する。
【００４９】
＜発明の実施の形態２＞
本実施の形態にかかるプロセッサシステム２００は、プロセッサ７及び８を有する。システム２００は、上述したシステム１００と同様に、プロセッサ７及び８が同一の命令ストリームを実行するロックステップモードと異なる命令ストリームを実行するフリーステップモードとの間で動作モードを切り替えることができる。
【００５０】
図４は、プロセッサシステム２００の構成例を示すブロック図である。なお、図４では省略しているが、システム２００は、上述したシステム１００と同様に、制御ユニット３、外部回路６１並びに６２、選択回路６４並びに６５を有する。また、図４の例では、ロックステップモード時のマスタープロセッサをプロセッサ７とし、チェッカープロセッサをプロセッサ８としている。
【００５１】
図４中のプロセッサ７は、上述したプロセッサ１が有する構成要素に加えて、記憶回路１５、選択回路１６、及び固定値生成回路１７を有する。記憶回路１５は、複数の記憶素子を含み、上述した記憶回路１１と同様にプロセッサ１の内部状態を記憶する。しかしながら、フリーステップモードからロックステップモードへの切り替えの際に、記憶回路１５の記憶状態はプロセッサ２に転送されない。代わりに、記憶回路１５は、固定値生成回路１７が生成する固定値よって更新される。この固定値による記憶回路１５の更新のために、選択回路１６が配置されている。選択回路１６は、制御ユニット３からの制御信号に応じて、記憶回路１５の接続先を組み合わせ回路１０と固定値生成回路１７の間で切り換える。なお、選択回路１６の制御は、上述した選択回路２４と共通のSTATE_CPY信号を選択回路１６に与えることによって行えばよい。
【００５２】
図４中のプロセッサ８は、上述したプロセッサ２が有する構成要素に加えて、記憶回路２５、選択回路２６、及び固定値生成回路２７を有する。これらの役割及び動作は、プロセッサ７が有する記憶回路１５、選択回路１６、及び固定値生成回路１７と同様である。
【００５３】
プロセッサシステム２００における動作モードの切り替え手順は、図２及び３を用いて説明したシステム１００と同様とすればよい。なお。記憶回路１５及び２５の固定値による更新は、図２のステップＳ１４、すなわちプロセッサ１の記憶回路１１からプロセッサ２の記憶回路２１へのコピー動作と並行して行えばよい。図４の例では、選択回路１６及び２６に対して選択回路２４と共通の制御信号（STATE_CPY）が供給されている。このため、プロセッサ２が有する記憶回路２５の固定値による更新は、記憶回路２１に記憶回路１１の記憶状態がコピーされるのと同じタイミングで行われる。一方、プロセッサ１のクロックCLK1を1クロック期間だけ供給することで、記憶回路１５の記憶状態が固定値よって更新される。
【００５４】
本実施の形態で述べたように、ロックステップモードに移行する際に、プロセッサ７及び８が有する記憶素子の一部を固定値によって更新することによって、信号線群５の本数を削減することができる。
【００５５】
さらに、本発明は上述した実施の形態のみに限定されるものではなく、既に述べた本発明の要旨を逸脱しない範囲において種々の変更が可能であることは勿論である。
【符号の説明】
【００５６】
１００、２００  プロセッサシステム
１、２、７、８  プロセッサ
３  制御ユニット
４  比較ユニット
５  信号線群
１０  組合せ回路
１１  記憶回路
１２  制御回路
１３  開始アドレスレジスタ
１５  記憶回路
１６  選択回路
１７  固定値生成回路
２０  組合せ回路
２１  記憶回路
２２  制御回路
２３  開始アドレスレジスタ
２４  選択回路
２５  記憶回路
２６  選択回路
２７  固定値生成回路
６１、６２  外部回路
６３、６４  選択回路
６５  固定値生成回路
【図１】
2010198131.tif 000003
【図２】
2010198131.tif 000004
【図３】
2010198131.tif 000005
【図４】
2010198131.tif 000006