(57)【要約】【課題】冗長プロセッサエレメントが実行するプログラムの信頼性を保証すること。【解決手段】冗長機能を有する第１のプロセッサエレメントＰＥａと、第２のプロセッサエレメントＰＥｂと、第１及び第２のプロセッサエレメントＰＥａ、ＰＥｂに共用され、第１のプロセッサエレメントＰＥａが実行するプログラムが格納された第１の記憶部と、前記プログラムが格納された領域に対し、第２のプロセッサエレメントＰＥｂがアクセスできないように設定可能なガード部ＰＧと、を備え、第１のプロセッサエレメントＰＥａが、ガード部ＰＧを設定した後、第２のプロセッサエレメントＰＥｂが起動するプロセッサシステム。【選択図】図４
2013037562.tif 000002
【特許請求の範囲】
【請求項１】
冗長機能を有する第１のプロセッサエレメントと、
第２のプロセッサエレメントと、
前記第１及び第２のプロセッサエレメントに共用され、前記第１のプロセッサエレメントが実行する第１のプログラムが格納された第１の記憶部と、
前記第１のプログラムが格納された領域に対し、前記第２のプロセッサエレメントがアクセスできないように設定可能なガード部と、を備え、
前記第１のプロセッサエレメントが前記ガード部を設定した後、前記第２のプロセッサエレメントが起動するプロセッサシステム。
【請求項２】
前記第１のプロセッサエレメントをリセットするハードウェアリセット信号と、前記第１のプロセッサエレメントが前記第１のプログラムを実行することにより前記ガード部を設定したことを示すソフトウェアリセット信号と、に基づいて前記第２のプロセッサエレメントの起動を制御する起動制御信号を生成する起動制御回路を、更に備えることを特徴とする請求項１に記載のプロセッサシステム。
【請求項３】
前記起動制御信号に応じて、前記第２のプロセッサエレメントのリセットが解除されることにより、前記第２のプロセッサエレメントが起動することを特徴とする請求項２に記載のプロセッサシステム。
【請求項４】
前記起動制御信号に応じて、前記第２のプロセッサエレメントへのクロック信号の供給が開始されることにより、前記第２のプロセッサエレメントが起動することを特徴とする請求項２に記載のプロセッサシステム。
【請求項５】
前記起動制御信号に基づいて、前記第２のプロセッサエレメントへの前記クロック信号の供給を制御するクロック供給制御回路を、更に備えることを特徴とする請求項４に記載のプロセッサシステム。
【請求項６】
前記第１のプログラムを検証する第３のプロセッサエレメントを、更に備えることを特徴とする請求項１〜５のいずれか一項に記載のプロセッサシステム。
【請求項７】
前記第３のプロセッサエレメントが前記第１のプログラムを検証した後、前記第１のプロセッサエレメントが起動することを特徴とする請求項６に記載のプロセッサシステム。
【請求項８】
前記第１及び第２のプロセッサエレメントからのアクセスが禁止され、前記第３のプロセッサエレメントが実行する第２のプログラムが格納された第２の記憶部を、更に備えることを特徴とする請求項７に記載のプロセッサシステム。
【請求項９】
前記第１のプロセッサエレメントと前記第３のプロセッサエレメントとの接続を遮断するスイッチを、更に備えることを特徴とする請求項６〜８のいずれか一項に記載のプロセッサシステム。
【請求項１０】
前記第１の論理回路が前記第１のプロセッサエレメントの内部に設けられていることを特徴とする請求項２に記載のプロセッサシステム。
【請求項１１】
前記第１の論理回路が前記第２のプロセッサエレメントの内部に設けられていることを特徴とする請求項２に記載のプロセッサシステム。
【請求項１２】
前記第１のプロセッサエレメントは、前記ソフトウェアリセット信号を保持するレジスタを備えることを特徴とする請求項２〜１１のいずれか一項に記載のプロセッサシステム。
【請求項１３】
第２のプロセッサエレメントが冗長機能を有しないことを特徴とする請求項１〜１２のいずれか一項に記載のプロセッサシステム。
【請求項１４】
冗長機能を有する第１のプロセッサエレメントと、
第２のプロセッサエレメントと、
前記第１及び第２のプロセッサエレメントに共用され、前記第１のプロセッサエレメントが実行するプログラムが格納された記憶部と、
前記第２のプロセッサエレメントが、前記プログラムが格納された領域に対し、アクセスできないように設定可能なガード部と、を備えたプロセッサシステムの起動方法であって、
前記第１のプロセッサエレメントを起動し、
前記第１のプロセッサエレメントにより、前記ガード部を設定した後、
前記第２のプロセッサエレメントを起動するプロセッサシステムの起動方法。
【請求項１５】
前記プロセッサシステムが前記プログラムを検証する第３のプロセッサエレメントを、更に備え、
前記第３のプロセッサエレメントを起動し、
前記第３のプロセッサエレメントにより、前記プログラムを検証した後、
前記第１のプロセッサエレメントを起動することを特徴とする請求項１４に記載のプロセッサシステムの起動方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のプロセッサエレメントを含むプロセッサシステム及びその起動方法に関する。
【背景技術】
【０００２】
近年、各種制御に用いられるマイクロコントローラ（いわゆるマイコン）では、高性能化と低消費電力化とを両立させるため、複数のプロセッサエレメント（ＰＥ：Processor Element）を含むプロセッサシステムが採用されている。そして、例えば自動車のエンジン制御やブレーキ制御などの用途のプロセッサシステムでは、非常に高度な信頼性が要求されている。具体的には、プロセッサエレメントの故障やノイズによる暴走などのアクシデントを検出するためのセーフティ機能と、プログラムの改竄などの意図的な攻撃を防止するためのセキュリティ機能とが要求されている。
【０００３】
セーフティ機能としては、上記プロセッサエレメントのアクシデントを検出するために、プロセッサエレメントに冗長機能を設ける手法が知られている。
セキュリティ機能としては、通常のプロセッサエレメントであるノーマルコアの他に高いセキュリティ性を有するプロセッサエレメントであるセキュアコアを設ける手法が特許文献１に開示されている。具体的には、まずセキュアコアが起動し、システム監査を行なって、システムに異常がなければ、ノーマルコアが起動する。
なお、特許文献２〜５には、あるプロセッサエレメントを起動した後、他のプロセッサエレメントを起動する手法が開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００６−０１８５２８号公報
【特許文献２】特開２００６−２２１６３２号公報
【特許文献３】特開２００６−３０９３３２号公報
【特許文献４】特開２００２−３１２３３４号公報
【特許文献５】特開平４−２９６９６４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
発明者は以下の課題を見出した。
複数のプロセッサエレメントを備えるプロセッサシステムでは、上述のセーフティ機能に関して、例えば、冗長機能を有しない通常のプロセッサエレメントが暴走することにより、冗長機能を有するプロセッサエレメント（以下、冗長プロセッサエレメント）が実行するプログラムが破壊されてしまうおそれがあった。つまり、冗長プロセッサエレメントが実行するプログラムの信頼性が保証されていなかった。
【課題を解決するための手段】
【０００６】
本発明に係るプロセッサシステムの一態様は、冗長機能を有する第１のプロセッサエレメントと、第２のプロセッサエレメントと、前記第１及び第２のプロセッサエレメントに共用され、前記第１のプロセッサエレメントが実行する第１のプログラムが格納された第１の記憶部と、前記第１のプログラムが格納された領域に対し、前記第２のプロセッサエレメントがアクセスできないように設定可能なガード部と、を備え、前記第１のプロセッサエレメントが、前記ガード部を設定した後、前記第２のプロセッサエレメントが起動するものである。
【０００７】
本発明に係るプロセッサシステムは、第１のプロセッサエレメントが実行するプログラムが格納された領域に対し、第２のプロセッサエレメントがアクセスできないように設定可能なガード部を備えている。そして、当該プロセッサシステムの起動時に、第１のプロセッサエレメントが、前記ガード部を設定した後、第２のプロセッサエレメントが起動する。そのため、ガード部を設定する前に第２のプロセッサエレメントが暴走し、第１のプロセッサエレメントが実行するプログラムを破壊してしまうおそれがない。そのため、第１のプロセッサエレメントが実行するプログラムの信頼性を保証することができる。
【発明の効果】
【０００８】
本発明に係るプロセッサシステムによれば、冗長プロセッサエレメントが実行するプログラムの信頼性を保証することができる。
【図面の簡単な説明】
【０００９】
【図１】本発明の実施の形態１に係るプロセッサシステムの全体を示すブロック図である。
【図２】本発明の実施の形態１に係るプロセッサシステムのブロック図である。
【図３】本発明の実施の形態１に係るＰＥガード２４のブロック図である。
【図４】本発明の実施の形態１に係るプロセッサシステムの起動方法を説明するための模式的ブロック図である。
【図５】本発明の実施の形態１に係るプロセッサシステムの起動方法を説明するためのタイミングチャートである。
【図６】本発明の実施の形態１の変形例に係るプロセッサシステムの起動方法を説明するための模式的ブロック図である。
【図７】本発明の実施の形態１の他の変形例に係るプロセッサシステムの起動方法を説明するための模式的ブロック図である。
【図８】本発明の実施の形態２に係るプロセッサシステムの起動方法を説明するための模式的ブロック図である。
【図９】本発明の実施の形態２に係るプロセッサシステムの起動方法を説明するためのタイミングチャートである。
【図１０】本発明の実施の形態２の変形例に係るプロセッサシステムの起動方法を説明するための模式的ブロック図である。
【図１１】本発明の実施の形態３に係るプロセッサシステムの起動方法を説明するための模式的ブロック図である。
【発明を実施するための形態】
【００１０】
以下、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。ただし、本発明が以下の実施の形態に限定される訳ではない。また、説明を明確にするため、以下の記載及び図面は、適宜、簡略化されている。
【００１１】
（実施の形態１）
以下、図面を参照して本発明の実施の形態について説明する。まず、本発明を適用可能なプロセッサシステム全体の概要について説明する。なお、以下で説明するプロセッサシステムはあくまでも一例であり、当然のことながら、他のプロセッサシステムに本発明を適用することも可能である。
【００１２】
図１は、本実施の形態に係るプロセッサシステムの全体を示すブロック図である。図１に示すように、本実施の形態に係るプロセッサシステムは、複数のプロセッサエレメントを用いることにより処理性能の向上を実現するものである。また、本発明に係るプロセッサシステムでは、機能毎に３つのサブシステムに分類される。図１に示すように、本発明に係るプロセッサシステムは、メインＰＥサブシステム、ＩＯ（Input Output）サブシステム、ＨＳＭ（Hardware Security Module）サブシステムを有する。
【００１３】
メインＰＥサブシステムは、予め内部に記憶されたプログラム又は外部から読み込んだプログラムに基づいて、本プロセッサシステムに求められる具体的な処理を行う。ＩＯサブシステムは、メインＰＥサブシステム又はＨＳＭサブシステムにより用いられる周辺装置が動作するための各種処理を行う。ＨＳＭサブシステムは、プロセッサシステムにおいて行われている処理のセキュリティ検証処理を行う。また、本実施の形態に係るプロセッサシステムでは、各サブシステムにクロック信号ＣＬＫａ、ＣＬＫｂ、ＣＬＫｃ、ＣＬＫｐが供給される。
【００１４】
図１に示す例では、メインＰＥサブシステムにはクロック信号ＣＬＫａが供給され、ＩＯサブシステムにはクロック信号ＣＬＫｂ、ＣＬＫｐが供給され、ＨＳＭサブシステムにはクロック信号ＣＬＫｃが供給される。これらのクロック信号ＣＬＫａ、ＣＬＫｂ、ＣＬＫｃは、システム全体構成の仕様に応じて、同一の周波数であっても、異なる周波数であってもよい。また、クロック信号ＣＬＫｐは、周辺装置に与えられ、ＩＯサブシステムに与えられるクロック信号ＣＬＫｂとは非同期のクロック信号である。
【００１５】
次に、より具体的に各サブシステムについて説明する。
メインＰＥサブシステムは、メインＰＥである２つのプロセッサエレメントＰＥａ、ＰＥｂ、第１の命令メモリ、データメモリ、システムバスを有する。メインＰＥサブシステムでは、プロセッサエレメントＰＥａ、ＰＥｂ、第１の命令メモリ及びデータメモリは、システムバスを介して互いに接続される。
【００１６】
第１の命令メモリには、プログラムが格納されている。データメモリは、外部から読み込んだプログラム及びプロセッサシステム内で処理されたデータを一時的に記憶する。プロセッサエレメントＰＥａ、ＰＥｂは、それぞれ第１の命令メモリ、データメモリ等を利用しながらプログラムを実行する。ここで、プロセッサエレメントＰＥａが冗長機能を有するプロセッサエレメントであるのに対し、プロセッサエレメントＰＥｂは冗長機能を有さない通常のプロセッサエレメントである。
【００１７】
冗長プロセッサエレメントＰＥａは、ハードウェア的には、同一構成の２つのプロセッサエレメントが一組になった（多重化された）構成もしくは通常のプロセッサエレメントに検査回路等が付加された構成を備えている。一方、ソフトウェア的には一つのプロセッサエレメントとして動作する。このような構成により、信頼性の高い動作を行うことができる。冗長動作の一例として、多重化された回路の出力結果が同一であるか否かをクロック毎に比較するロックステップ動作がある。
【００１８】
ＩＯサブシステムは、周辺バス、入出力プロセッサエレメント（ＩＯＰＥ）、周辺装置を有する。ＩＯＰＥは、周辺装置を利用する上で必要な処理を行う。なお、ＩＯＰＥはメインＰＥシステムの第１の命令メモリに記憶されているプログラムに基づき動作してもよく、他の記憶領域に記憶されているプログラムに基づき動作してもよい。周辺バスは、ＩＯＰＥ及び周辺装置を互いに接続する。
【００１９】
図１では、周辺装置として、ＣＡＮユニット、ＦＬＥＸＲＡＹユニット、ＳＰＩユニット、ＵＡＲＴユニット、ＡＤＣユニット、ＷＤユニット、タイマを例示した。ＣＡＮユニットは、自動車の車内通信規格の一つであるＣＡＮ（Controller Area Network）に基づく通信を行う。ＦＬＥＸＲＡＹユニットは、自動車の車内通信規格の一つであるFlex Ray規格に基づく通信を行う。ＳＰＩユニットは、３線又は４線のシリアル通信であるＳＰＩ（System Packet Interface）規格の通信を行う。ＵＡＲＴ（Universal Asynchronous Receiver Transmitter）ユニットは、調歩同期方式によるシリアル信号をパラレル信号に変換し、また、その逆方向の変換を行う。ＡＤＣ（Analog to Digital Converter）ユニットは、センサ等から与えられるアナログ信号をデジタル信号に変換する。ＷＤ（Watchdog）ユニットは、所定の期間が経過したことを検出するウォッチドックタイマ機能を提供する。タイマは、時間の計測、波形生成などを行う。図１の例では、上記ユニットを周辺装置としたが、他の機能を有するユニットを含むことも可能であり、また、一部のユニットのみを有する場合も考えられる。
【００２０】
ＨＳＭサブシステムは、セキュリティプロセッサエレメントＳＰＥ（Security Processor Element）と、第２の命令メモリとを有する。セキュリティプロセッサエレメントＳＰＥは、システムバスに接続される。セキュリティプロセッサエレメントＳＰＥは、メインＰＥサブシステムで実行されているプログラムの正当性又はプログラムを実行して得られるデータの正当性を判断する。第２の命令メモリには、プログラムが格納される。また、第２の命令メモリは、セキュリティプロセッサエレメントＳＰＥのみがアクセスできるメモリである。第２の命令メモリは、第１の命令メモリと物理的に独立して設けられている必要はないが、セキュリティプロセッサエレメントＳＰＥのみがアクセス可能な領域として、アクセス制御されている必要がある。つまり、第２の命令メモリは、第１の命令メモリと少なくとも論理的には独立している必要がある。
【００２１】
上記説明の通り、図１に示したプロセッサシステムは、複数のプロセッサエレメントにより処理能力を向上させつつ、予期しない故障、予期しないプログラムの改変等の不具合に対して高い耐性を有している。なお、図１に示したプロセッサシステムは、本発明が適用されるプロセッサシステムの一例を示したものであり、例えば、命令メモリ及びデータメモリの配置及びシステム中の個数は、そのシステムのアーキテクチャにより種々考えられる。また、メモリと各プロセッサエレメントとの接続は、例えば、複数のバスを介して接続される構成であってもよく、バスを介さずにプロセッサエレメントと接続される構成であってもよく、アーキテクチャの設計により種々の構成が考えられ得る。
【００２２】
図２は、実施の形態１に係るプロセッサシステムのブロック図である。図２に示すように、実施の形態１に係るプロセッサシステムは、プロセッサエレメントＰＥａ、ＰＥｂ、システムバス、周辺バスブリッジ２３、ＰＥガード２４〜２６、第１の命令メモリ、データメモリ、周辺バス、Ｉ／Ｏ（Input/Output）、ＷＤユニット、タイマを有する。ここで、システムバス、第１の命令メモリ、データメモリ、周辺バス、ＷＤユニット、タイマについては、図１に示したブロック図において説明したものと同じであるためここでは説明を省略する。また、図２のＩ／Ｏは、図１で示したＣＡＮユニット、ＦＬＥＸＲＡＹユニット、ＳＰＩユニット、ＵＡＲＴユニット、ＡＤＣユニットを含むものとする。
【００２３】
ＰＥガード２４〜２６は、１つのプロセッサエレメントのみにアクセスが許可されたアドレス範囲に対し、他のプロセッサエレメントからのアクセス要求があった場合、このアクセス要求を無効にする。具体的には、ＰＥガード２４〜２６は、信頼性の高い冗長機能を有するプロセッサエレメント（以下、冗長プロセッサエレメントとも称す）ＰＥａのみがアクセス可能なアドレス範囲に対し、プロセッサエレメントＰＥｂからアクセス要求があった場合、このアクセス要求を無効にする。
【００２４】
ここで、図３を用いて、ＰＥガード２４〜２６の詳細な構成について説明する。ＰＥガード２４〜２６は同じ構成であるため、ここでは、ＰＥガード２４を例にＰＥガードの詳細について説明する。図３は、実施の形態１に係るＰＥガード２４のブロック図である。
【００２５】
図３に示すように、ＰＥガード２４は、アクセス制御回路４０、ＰＥａ固有領域設定レジスタ４２、ＰＥａ固有領域判定部４３を有する。
ＰＥａ固有領域設定レジスタ４２には、冗長プロセッサエレメントＰＥａのみがアクセス可能なデータ格納領域（アドレス範囲）を規定する設定値（以下、ＰＥａ固有領域設定値と称す）ＡＳａが格納される。ＰＥａ固有領域設定レジスタ４２は、このＰＥａ固有領域設定値ＡＳａを出力する。
【００２６】
また、ＰＥａ固有領域設定レジスタ４２は、ＰＥａ固有領域設定値ＡＳａが格納されていない状態（例えば、プロセッサシステムの起動時やリセット時）では、イネーブル信号ＥＮａをディスエーブル状態とし、ＰＥａ固有領域設定値ＡＳａが格納された後にイネーブル信号ＥＮａをイネーブル状態とする。なお、ＰＥａ固有領域設定レジスタ４２は、アクセス対象回路に内蔵される構成としてもよい。
【００２７】
ＰＥａ固有領域判定部４３は、イネーブル信号ＥＮａがイネーブル状態の場合、判定を実行し、イネーブル信号ＥＮａがディスエーブル状態の場合、判定を実行しない。
ＰＥａ固有領域判定部４３は、アクセス要求ＲＱと共にプロセッサエレメントＰＥａ、ＰＥｂなどのバスマスタが出力するプロセッサエレメント識別信号ＰＥＩＤを受信する。
そして、ＰＥａ固有領域判定部４３は、プロセッサエレメント識別信号ＰＥＩＤがプロセッサエレメントＰＥｂであることを示し、かつ、アクセス対象回路に対するアクセスアドレスＡＤＤがＰＥａ固有領域設定値ＡＳａで特定されるアドレス範囲にある場合、検出信号ＤＥＴａをディスエーブル状態とする。それ以外の場合、ＰＥａ固有領域判定部４３は、検出信号ＤＥＴａをイネーブル状態とする。なお、ＰＥａ固有領域判定部４３は、イネーブル信号ＥＮａがディスエーブル状態の場合、検出信号ＤＥＴａをディスエーブル状態とする。
【００２８】
アクセス制御回路４０は、ＰＥａ固有領域判定部４３が出力する検出信号ＤＥＴａの状態を考慮してアクセス制御を行う。具体的には、検出信号ＤＥＴａがイネーブル状態である場合、アクセス要求ＲＱをアクセス対象回路に伝達する。一方、検出信号ＤＥＴａがディスエーブル状態である場合、アクセス要求ＲＱに対してエラー応答信号ＥＲＲを出力し、当該アクセス要求ＲＱを無効とする。図３の例では、プロセッサエレメントＰＥｂからＰＥａ固有領域設定値ＡＳａで特定されるアドレス範囲へのアクセスが遮断される。つまり、ＰＥガードが設けられているため、信頼性の高い冗長プロセッサエレメントＰＥａが実行するプログラムが、通常のプロセッサエレメントＰＥｂにより書き換えられるおそれがない。従って、プロセッサシステムの信頼性を向上させることができる。
【００２９】
また、ＰＥガードを設定するためのＰＥａ固有領域設定値ＡＳａ自体が、信頼性の高い冗長プロセッサエレメントＰＥａにより、ＰＥａ固有領域設定値ＡＳａで特定されるアドレス範囲に格納される。そのため、ＰＥａ固有領域設定値ＡＳａは一度設定されれば、通常のプロセッサエレメントＰＥｂの誤動作により変更されるおそれがない。従って、プロセッサシステムの信頼性を向上させることができる。
【００３０】
次に、図４、５を用いて、本実施の形態に係るプロセッサシステムの起動方法について説明する。上述の通り、本実施の形態に係るプロセッサシステムでは、ＰＥガードによりプロセッサシステムの信頼性を向上させることができる。しかしながら、ＰＥガードが設定される前に、通常のプロセッサエレメントＰＥｂが起動してしまうと、ＰＥガードが設定されるまでの間に、プロセッサエレメントＰＥｂにより、信頼性の高い冗長プロセッサエレメントＰＥａが実行するプログラムが書き換えられるおそれがある。
【００３１】
そのため、本実施の形態に係るプロセッサシステムでは、システム起動時にまず信頼性の高い冗長プロセッサエレメントＰＥａが起動し、上述のＰＥガードを設定する。その後、通常のプロセッサエレメントＰＥｂが起動する。つまり、通常のプロセッサエレメントＰＥｂが起動する前に、ＰＥガードのＰＥａ固有領域設定値ＡＳａが設定される。従って、上述の通り、プロセッサエレメントＰＥｂの誤動作により、冗長プロセッサエレメントＰＥａが実行するプログラムやＰＥａ固有領域設定値ＡＳａが書き換えられるおそれがない。
【００３２】
図４は、実施の形態１に係るプロセッサシステムの起動方法を説明するための模式的ブロック図である。図４に示すように、冗長プロセッサエレメントＰＥａは、レジスタＲＥＧ１、ＯＲゲートＯＲ１を備えている。図４におけるＰＥガードＰＧは、図２に示すように、ＰＥガード２４〜２６を含んでいる。図４における共用リソースＳＲは、冗長プロセッサエレメントＰＥａやプロセッサエレメントＰＥｂ等に共用されるリソースである。本実施の形態では、共用リソースＳＲは、図２に示すように、第１の命令メモリ、データメモリ、周辺バスブリッジ２３、周辺バス、Ｉ／Ｏ、ＷＤユニット、タイマを含んでいる。
【００３３】
図４に示すように、ハードウェアリセット信号ＨＷＲＳＴが、冗長プロセッサエレメントＰＥａに入力されている。この例では、ハードウェアリセット信号ＨＷＲＳＴは、Ｈ（Ｈｉｇｈ）のときリセット、Ｌ（Ｌｏｗ）のときリセット解除を意味する。また、ハードウェアリセット信号ＨＷＲＳＴによりレジスタＲＥＧ１の値がＨに初期化される。ハードウェアリセット信号ＨＷＲＳＴが、ＨからＬに切り換わると、冗長プロセッサエレメントＰＥａが起動し、共有リソースＳＲ内に格納されたプログラムに基づいて動作を開始する。ここで、冗長プロセッサエレメントＰＥａは、ＰＥガードＰＧを設定する。具体的には、図３に示したＰＥａ固有領域設定レジスタ４２に対してＰＥａ固有領域設定値ＡＳａを設定する。
【００３４】
冗長プロセッサエレメントＰＥａは、ＰＥガードＰＧを設定した後、レジスタＲＥＧ１の値をＨからＬへ書き換える。図４に示すように、このレジスタＲＥＧ１の値は、ソフトウェアリセット信号ＳＷＲＳＴ１としてＯＲゲートＯＲ１の一方の入力に入力されている。ＯＲゲートＯＲ１の他方の入力には、ハードウェアリセット信号ＨＷＲＳＴが入力されている。ＯＲゲートＯＲ１の出力からは、プロセッサエレメントＰＥｂを制御するためのリセット信号ＲＳＴ１が出力される。つまり、ＯＲゲートＯＲ１は、プロセッサエレメントＰＥｂの起動制御信号を生成する起動制御回路である。従って、ハードウェアリセット信号ＨＷＲＳＴが、ＨからＬに切り換わると、冗長プロセッサエレメントＰＥａがＰＥガードＰＧを設定し、その後レジスタＲＥＧ１の値をＨからＬへ書き換える。そして、リセット信号ＲＳＴ１がＨからＬに切り換わると、プロセッサエレメントＰＥｂが起動する。
【００３５】
図５は、実施の形態１に係るプロセッサシステムの起動方法を説明するためのタイミングチャートである。図５の上から、ハードウェアリセット信号ＨＷＲＳＴ、ソフトウェアリセット信号ＳＷＲＳＴ１、リセット信号ＲＳＴ１を示している。
まず、ハードウェアリセット信号ＨＷＲＳＴが、ＨからＬに切り換わると、上述の通り、冗長プロセッサエレメントＰＥａが起動し、ＰＥガードＰＧを設定する。
次に、冗長プロセッサエレメントＰＥａがＰＥガードＰＧを設定した後、レジスタＲＥＧ１の値をＨからＬへ書き換える。
最後に、レジスタＲＥＧ１の値がＨからＬへ書き換わると、リセット信号ＲＳＴ１もＨからＬに切り換わり、プロセッサエレメントＰＥｂが起動する。
【００３６】
このように、本実施の形態に係るプロセッサシステムでは、システム起動時にまず信頼性の高い冗長プロセッサエレメントＰＥａが起動し、上述のＰＥガードを設定する。その後、通常のプロセッサエレメントＰＥｂが起動する。つまり、通常のプロセッサエレメントＰＥｂが起動する前に、ＰＥガードのＰＥａ固有領域設定値ＡＳａが設定されている。従って、上述の通り、プロセッサエレメントＰＥｂの誤動作により、冗長プロセッサエレメントＰＥａが実行するプログラムやＰＥａ固有領域設定値ＡＳａが書き換えられるおそれがなく信頼性が保証される。
【００３７】
（実施の形態１の変形例）
次に、図６を用いて、実施の形態１の変形例について説明する。図６は、実施の形態１の変形例に係るプロセッサシステムの起動方法を説明するための模式的ブロック図である。図４では、冗長プロセッサエレメントＰＥａが、ＯＲゲートＯＲ１を備えていたが、図６では、冗長プロセッサエレメントＰＥａがＯＲゲートＯＲ１を備える代わりに、プロセッサエレメントＰＥｂがＯＲゲートＯＲ２を備えている。つまり、プロセッサエレメントＰＥｂを起動するためのリセット信号ＲＳＴ１が、図４では、冗長プロセッサエレメントＰＥａにおいて生成されていたのに対し、図６では、プロセッサエレメントＰＥｂにおいて生成されている。そのため、図４では、ハードウェアリセット信号ＨＷＲＳＴが、冗長プロセッサエレメントＰＥａのみに入力されていたのに対し、図６では、冗長プロセッサエレメントＰＥａ及びプロセッサエレメントＰＥｂの両方に入力されている。
【００３８】
動作については図４の場合と同様である。まず、ハードウェアリセット信号ＨＷＲＳＴによりレジスタＲＥＧ１の値がＨに初期化される。次に、ハードウェアリセット信号ＨＷＲＳＴが、ＨからＬに切り換わると、冗長プロセッサエレメントＰＥａが起動し、ＰＥガードＰＧを設定する。具体的には、図３に示したＰＥａ固有領域設定レジスタ４２に対してＰＥａ固有領域設定値ＡＳａを設定する。冗長プロセッサエレメントＰＥａがＰＥガードＰＧを設定した後、レジスタＲＥＧ１の値をＨからＬへ書き換える。
【００３９】
図６に示すように、このレジスタＲＥＧ１の値は、ソフトウェアリセット信号ＳＷＲＳＴ１としてＯＲゲートＯＲ２の一方の入力に入力されている。ＯＲゲートＯＲ２の他方の入力には、ハードウェアリセット信号ＨＷＲＳＴが入力されている。ＯＲゲートＯＲ２の出力からは、プロセッサエレメントＰＥｂを起動するためのリセット信号ＲＳＴ１が出力される。従って、ハードウェアリセット信号ＨＷＲＳＴが、ＨからＬに切り換わると、冗長プロセッサエレメントＰＥａがＰＥガードＰＧを設定し、その後レジスタＲＥＧ１の値をＨからＬへ書き換える。そして、リセット信号ＲＳＴ１がＨからＬに切り換わると、プロセッサエレメントＰＥｂが起動する。
【００４０】
このように、本実施の形態の変形例に係るプロセッサシステムでも、システム起動時にまず信頼性の高い冗長プロセッサエレメントＰＥａが起動し、上述のＰＥガードを設定する。その後、通常のプロセッサエレメントＰＥｂが起動する。つまり、通常のプロセッサエレメントＰＥｂが起動する前に、ＰＥガードのＰＥａ固有領域設定値ＡＳａが設定されている。従って、上述の通り、プロセッサエレメントＰＥｂの誤動作により、冗長プロセッサエレメントＰＥａが実行するプログラムやＰＥａ固有領域設定値ＡＳａが書き換えられるおそれがなく信頼性が保証される。
【００４１】
（実施の形態１の他の変形例）
次に、図７を用いて、実施の形態１の他の変形例について説明する。図７は、実施の形態１の他の変形例に係るプロセッサシステムの起動方法を説明するための模式的ブロック図である。図７では、図４の構成に加えて、ＡＮＤゲートＡＮ１をさらに備えている。図４では、ＯＲゲートＯＲ１から出力されるリセット信号ＲＳＴ１により、プロセッサエレメントＰＥｂの起動を制御していた。これに対し、図７では、ＯＲゲートＯＲ１から出力されるリセット信号ＲＳＴ１を用いて、冗長プロセッサエレメントＰＥａによるＰＥガードＰＧの設定が終了するまで、プロセッサエレメントＰＥｂへのクロック信号ＣＬＫｂの供給を停止する。また、図４では、ハードウェアリセット信号ＨＷＲＳＴが、冗長プロセッサエレメントＰＥａのみに入力されていたのに対し、図７では、冗長プロセッサエレメントＰＥａ及びプロセッサエレメントＰＥｂの両方に入力されている。
【００４２】
まず、ハードウェアリセット信号ＨＷＲＳＴによりレジスタＲＥＧ１の値がＨに初期化される。次に、ハードウェアリセット信号ＨＷＲＳＴが、ＨからＬに切り換わると、冗長プロセッサエレメントＰＥａが起動し、ＰＥガードＰＧを設定する。具体的には、図３に示したＰＥａ固有領域設定レジスタ４２に対してＰＥａ固有領域設定値ＡＳａを設定する。ここで、プロセッサエレメントＰＥｂにもハードウェアリセット信号ＨＷＲＳＴが入力されているため、プロセッサエレメントＰＥｂのリセットも解除されているが、クロック信号の供給が停止されているため起動しない。
【００４３】
冗長プロセッサエレメントＰＥａは、ＰＥガードＰＧを設定した後、レジスタＲＥＧ１の値をＨからＬへ書き換える。図７に示すように、このレジスタＲＥＧ１の値は、ソフトウェアリセット信号ＳＷＲＳＴ１としてＯＲゲートＯＲ１の一方の入力に入力されている。ＯＲゲートＯＲ１の他方の入力には、ハードウェアリセット信号ＨＷＲＳＴが入力されている。ＯＲゲートＯＲ１の出力からは、リセット信号ＲＳＴ１が出力される。
【００４４】
ここで、ＡＮＤゲートＡＮ１の一方入力には、ＯＲゲートＯＲ１から出力されるリセット信号ＲＳＴ１の反転信号が入力されている。ＡＮＤゲートＡＮ１の他方入力には、クロック信号ＣＬＫｂが入力されている。そして、ＡＮＤゲートＡＮ１から出力されるクロック信号がプロセッサエレメントＰＥｂに供給される。ここで、ＡＮＤゲートＡＮ１は、プロセッサエレメントＰＥｂへのクロック供給を制御するクロック供給制御回路である。なお、冗長プロセッサエレメントＰＥａには、クロック信号ＣＬＫｂが直接入力されている。
【００４５】
ハードウェアリセット信号ＨＷＲＳＴが、ＨからＬに切り換わると、冗長プロセッサエレメントＰＥａがＰＥガードＰＧを設定し、その後レジスタＲＥＧ１の値をＨからＬへ書き換える。そして、リセット信号ＲＳＴ１がＨからＬに切り換わると、プロセッサエレメントＰＥｂへのクロック信号の供給が開始され、プロセッサエレメントＰＥｂが起動する。
【００４６】
このように、本実施の形態の他の変形例に係るプロセッサシステムでも、システム起動時にまず信頼性の高い冗長プロセッサエレメントＰＥａが起動し、上述のＰＥガードを設定する。その後、通常のプロセッサエレメントＰＥｂが起動する。つまり、通常のプロセッサエレメントＰＥｂが起動する前に、ＰＥガードのＰＥａ固有領域設定値ＡＳａが設定されている。従って、上述の通り、プロセッサエレメントＰＥｂの誤動作により、冗長プロセッサエレメントＰＥａが実行するプログラムやＰＥａ固有領域設定値ＡＳａが書き換えられるおそれがなく信頼性が保証される。
【００４７】
（実施の形態２）
次に、図８を用いて、実施の形態２に係るプロセッサシステムについて説明する。
図８は、実施の形態２に係るプロセッサシステムの起動方法を説明するための模式的ブロック図である。本実施の形態に係るプロセッサシステムは、図４と比較して、図１に示したセキュリティプロセッサエレメントＳＰＥを備えている。図８に示すように、セキュリティプロセッサエレメントＳＰＥは、レジスタＲＥＧ２、ＯＲゲートＯＲ３を備えている。
【００４８】
図８におけるＳＰＥプログラム格納領域５１は、セキュリティプロセッサエレメントＳＰＥが実行するプログラムが格納された領域であって、図１に示した第２の命令メモリに含まれる。
図８におけるＰＥａプログラム格納領域５２は、冗長プロセッサエレメントＰＥａが実行するプログラムが格納された領域であって、図１に示した第１の命令メモリに含まれる。
【００４９】
まず、ハードウェアリセット信号ＨＷＲＳＴによりレジスタＲＥＧ１、ＲＥＧ２の値がＨに初期化される。次に、ハードウェアリセット信号ＨＷＲＳＴが、ＨからＬに切り換わると、セキュリティプロセッサエレメントＳＰＥが起動し、ＳＰＥプログラム格納領域５１内に格納されたプログラムに基づいて動作を開始する。ここで、セキュリティプロセッサエレメントＳＰＥは、プロセッサシステム全体を検証する。この際、ＰＥａプログラム格納領域５２に格納された冗長プロセッサエレメントＰＥａが実行するプログラムも検証される。
【００５０】
セキュリティプロセッサエレメントＳＰＥは、プログラムを検証した後、レジスタＲＥＧ２の値をＨからＬへ書き換える。図８に示すように、このレジスタＲＥＧ２の値は、ソフトウェアリセット信号ＳＷＲＳＴ２としてＯＲゲートＯＲ３の一方の入力に入力されている。ＯＲゲートＯＲ３の他方の入力には、ハードウェアリセット信号ＨＷＲＳＴが入力されている。ＯＲゲートＯＲ３の出力からは、冗長プロセッサエレメントＰＥａを制御するためのリセット信号ＲＳＴ２が出力される。
【００５１】
従って、ハードウェアリセット信号ＨＷＲＳＴが、ＨからＬに切り換わると、セキュリティプロセッサエレメントＳＰＥがプログラムを検証し、その後レジスタＲＥＧ２の値をＨからＬへ書き換える。そして、リセット信号ＲＳＴ２がＨからＬに切り換わると、冗長プロセッサエレメントＰＥａが起動し、ＰＥａプログラム格納領域５２に格納されたプログラムに基づいて動作を開始する。ここで、冗長プロセッサエレメントＰＥａは、ＰＥガードＰＧを設定する。具体的には、図３に示したＰＥａ固有領域設定レジスタ４２に対してＰＥａ固有領域設定値ＡＳａを設定する。
【００５２】
冗長プロセッサエレメントＰＥａは、ＰＥガードＰＧを設定した後、レジスタＲＥＧ１の値をＨからＬへ書き換える。図８に示すように、このレジスタＲＥＧ１の値は、ソフトウェアリセット信号ＳＷＲＳＴ１としてＯＲゲートＯＲ１の一方の入力に入力されている。ＯＲゲートＯＲ１の他方の入力には、ハードウェアリセット信号ＨＷＲＳＴが入力されている。ＯＲゲートＯＲ１の出力からは、プロセッサエレメントＰＥｂを制御するためのリセット信号ＲＳＴ１が出力される。従って、ハードウェアリセット信号ＨＷＲＳＴが、ＨからＬに切り換わると、冗長プロセッサエレメントＰＥａがＰＥガードＰＧを設定し、その後レジスタＲＥＧ１の値をＨからＬへ書き換える。そして、リセット信号ＲＳＴ１がＨからＬに切り換わると、プロセッサエレメントＰＥｂが起動する。
【００５３】
図９は、実施の形態２に係るプロセッサシステムの起動方法を説明するためのタイミングチャートである。図９の上から、ハードウェアリセット信号ＨＷＲＳＴ、ソフトウェアリセット信号ＳＷＲＳＴ２、リセット信号ＲＳＴ２、ソフトウェアリセット信号ＳＷＲＳＴ１、リセット信号ＲＳＴ１を示している。
まず、ハードウェアリセット信号ＨＷＲＳＴが、ＨからＬに切り換わると、上述の通り、セキュリティプロセッサエレメントＳＰＥが起動し、冗長プロセッサエレメントＰＥａが実行するプログラムを検証する。
次に、セキュリティプロセッサエレメントＳＰＥはプログラムを検証した後、レジスタＲＥＧ２の値をＨからＬへ書き換える。
次に、レジスタＲＥＧ２の値がＨからＬへ書き換わると、リセット信号ＲＳＴ２もＨからＬに切り換わり、冗長プロセッサエレメントＰＥａが起動し、ＰＥガードＰＧを設定する。
次に、冗長プロセッサエレメントＰＥａは、ＰＥガードＰＧを設定した後、レジスタＲＥＧ１の値をＨからＬへ書き換える。
最後に、レジスタＲＥＧ１の値がＨからＬへ書き換わると、リセット信号ＲＳＴ１もＨからＬに切り換わり、プロセッサエレメントＰＥｂが起動する。
【００５４】
つまり、本実施の形態に係るプロセッサシステムでは、システム起動時にまずセキュリティプロセッサエレメントＳＰＥが起動し、冗長プロセッサエレメントＰＥａが実行するプログラムを検証する。次に、冗長プロセッサエレメントＰＥａが起動し、上述のＰＥガードを設定する。最後に、通常のプロセッサエレメントＰＥｂが起動する。
【００５５】
そのため、冗長プロセッサエレメントＰＥａが起動する前に、セキュリティプロセッサエレメントＳＰＥにより、冗長プロセッサエレメントＰＥａが実行するプログラムが検証済である。従って、冗長プロセッサエレメントＰＥａが改竄されたプログラムを実行するおそれがなく信頼性が保証される。さらに、実施の形態１と同様に、通常のプロセッサエレメントＰＥｂが起動する前に、ＰＥガードのＰＥａ固有領域設定値ＡＳａが設定されている。従って、上述の通り、プロセッサエレメントＰＥｂの誤動作により、冗長プロセッサエレメントＰＥａが実行するプログラムやＰＥａ固有領域設定値ＡＳａが書き換えられるおそれがなく信頼性が保証される。
【００５６】
（実施の形態２の変形例）
次に、図１０を用いて、実施の形態２の変形例について説明する。図１０は、実施の形態２の変形例に係るプロセッサシステムの起動方法を説明するための模式的ブロック図である。図１０では、図８の構成に加えて、ＯＲゲートＯＲ４、スイッチＳＷ１をさらに備えている。また、ＳＰＥ制御領域５３を備えている。このような構成により、例えば当該プロセッサシステムの使用目的・用途等に応じて、セキュリティプロセッサエレメントＳＰＥを当該プロセッサシステムから切り離すことができる。換言すると、物理的にはセキュリティプロセッサエレメントＳＰＥを備えつつ、論理的にセキュリティプロセッサエレメントＳＰＥを無効化することができる。なお、図１０では、図８におけるＳＰＥプログラム格納領域５１、ＰＥガードＰＧ、共用リソースＳＲは省略されている。
【００５７】
ＳＰＥ制御領域５３からセキュリティプロセッサエレメントＳＰＥを無効化するための制御信号ＤＩＳが出力される。制御信号ＤＩＳはＯＲゲートＯＲ４の一方入力に入力される。ＯＲゲートＯＲ４の他方の入力には、ハードウェアリセット信号ＨＷＲＳＴが入力されている。制御信号ＤＩＳがＨの場合、セキュリティプロセッサエレメントＳＰＥに入力されるリセット信号は常時Ｈとなる。そのため、セキュリティプロセッサエレメントＳＰＥが無効化される。一方、制御信号ＤＩＳがＬの場合、セキュリティプロセッサエレメントＳＰＥに入力されるリセット信号は、ハードウェアリセット信号ＨＷＲＳＴと同じ信号レベルとなる。そのため、セキュリティプロセッサエレメントＳＰＥが有効となる。
【００５８】
また、図１０に示すように、制御信号ＤＩＳは、スイッチＳＷ１を切り換えるための制御信号でもある。制御信号ＤＩＳがＨの場合、スイッチＳＷ１はハードウェアリセット信号ＨＷＲＳＴに接続される。その結果、ハードウェアリセット信号ＨＷＲＳＴが、冗長プロセッサエレメントＰＥａ及びＯＲゲートＯＲ１に入力される。つまり、セキュリティプロセッサエレメントＳＰＥが無効化され、図４と同様の構成となる。
【００５９】
一方、制御信号ＤＩＳがＬの場合、スイッチＳＷ１はリセット信号ＲＳＴ２に接続される。その結果、リセット信号ＲＳＴ２が、冗長プロセッサエレメントＰＥａ及びＯＲゲートＯＲ１に入力される。つまり、セキュリティプロセッサエレメントＳＰＥが有効となり、図８と同様の構成となる。
【００６０】
（実施の形態３）
次に、図１１を用いて、実施の形態３に係るプロセッサシステムについて説明する。
図１１は、実施の形態３に係るプロセッサシステムの起動方法を説明するための模式的ブロック図である。本実施の形態に係るプロセッサシステムは、セキュリティプロセッサエレメントＳＰＥ、冗長プロセッサエレメントＰＥａ、ＳＰＥプログラム格納領域５１、ＰＥａプログラム格納領域５２を備えている。図１１に示すように、セキュリティプロセッサエレメントＳＰＥは、レジスタＲＥＧ２、ＯＲゲートＯＲ３を備えている。
【００６１】
図１１におけるＳＰＥプログラム格納領域５１は、セキュリティプロセッサエレメントＳＰＥが実行するプログラムが格納された領域であって、図１に示した第２の命令メモリの一部である。
図１１におけるＰＥａプログラム格納領域５２は、冗長プロセッサエレメントＰＥａが実行するプログラムが格納された領域であって、図１に示した第１の命令メモリの一部である。
【００６２】
まず、ハードウェアリセット信号ＨＷＲＳＴによりレジスタＲＥＧ２の値がＨに初期化される。次に、ハードウェアリセット信号ＨＷＲＳＴが、ＨからＬに切り換わると、セキュリティプロセッサエレメントＳＰＥが起動し、ＳＰＥプログラム格納領域５１内に格納されたプログラムに基づいて動作を開始する。実施の形態２と同様に、ここで、セキュリティプロセッサエレメントＳＰＥは、プロセッサシステム全体を検証する。この際、ＰＥａプログラム格納領域５２に格納された冗長プロセッサエレメントＰＥａが実行するプログラムも検証される。
【００６３】
セキュリティプロセッサエレメントＳＰＥは、プログラムを検証した後、レジスタＲＥＧ２の値をＨからＬへ書き換える。図１１に示すように、このレジスタＲＥＧ２の値は、ソフトウェアリセット信号ＳＷＲＳＴ２としてＯＲゲートＯＲ３の一方の入力に入力されている。ＯＲゲートＯＲ３の他方の入力には、ハードウェアリセット信号ＨＷＲＳＴが入力されている。ＯＲゲートＯＲ３の出力からは、冗長プロセッサエレメントＰＥａを制御するためのリセット信号ＲＳＴ２が出力される。
【００６４】
従って、ハードウェアリセット信号ＨＷＲＳＴが、ＨからＬに切り換わると、セキュリティプロセッサエレメントＳＰＥがプログラムを検証し、その後レジスタＲＥＧ２の値をＨからＬへ書き換える。そして、リセット信号ＲＳＴ２がＨからＬに切り換わると、冗長プロセッサエレメントＰＥａが起動し、ＰＥａプログラム格納領域５２に格納されたプログラムに基づいて動作を開始する。
【００６５】
つまり、本実施の形態に係るプロセッサシステムでは、システム起動時にまずセキュリティプロセッサエレメントＳＰＥが起動し、冗長プロセッサエレメントＰＥａが実行するプログラムを検証する。次に、冗長プロセッサエレメントＰＥａが起動する。そのため、冗長プロセッサエレメントＰＥａが起動する前に、セキュリティプロセッサエレメントＳＰＥにより、冗長プロセッサエレメントＰＥａが実行するプログラムが検証済である。従って、冗長プロセッサエレメントＰＥａが改竄されたプログラムを実行するおそれがなく信頼性が保証される。
【００６６】
以上、実施の形態を参照して本願発明を説明したが、本願発明は上記によって限定されるものではない。本願発明の構成や詳細には、発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
また、上述した発明の実施の形態１、２及びその変形例は、適宜組み合わせることも可能である。
【符号の説明】
【００６７】
２３  周辺バスブリッジ
２４〜２６  ＰＥガード
４０  アクセス制御回路
４２  ＰＥａ固有領域設定レジスタ
４３  ＰＥａ固有領域判定部
５１  ＳＰＥプログラム格納領域
５２  ＰＥａプログラム格納領域
５３  ＳＰＥ制御領域
ＡＮ１  ＡＮＤゲート
ＯＲ１〜ＯＲ４  ＯＲゲート
ＰＥａ  冗長プロセッサエレメント
ＰＥｂ  プロセッサエレメント
ＰＧ  ＰＥガード
ＲＥＧ１、ＲＥＧ２  レジスタ
ＳＰＥ  セキュリティプロセッサエレメント
ＳＲ  共用リソース
ＳＷ１  スイッチ
【図１】
2013037562.tif 000003
【図２】
2013037562.tif 000004
【図３】
2013037562.tif 000005
【図４】
2013037562.tif 000006
【図５】
2013037562.tif 000007
【図６】
2013037562.tif 000008
【図７】
2013037562.tif 000009
【図８】
2013037562.tif 000010
【図９】
2013037562.tif 000011
【図１０】
2013037562.tif 000012
【図１１】
2013037562.tif 000013