(57)【要約】【課題】従来のプロセッサシステムでは、プログラムが利用するデータの信頼性を十分に確保できない問題があった。【解決手段】本発明のプロセッサシステムは、特定プログラムが格納された特定コード領域のアドレス範囲に対応する第１の設定値を保持する特定コード領域設定レジスタ１７と、特定プログラムが利用する特定データを格納する特定データ格納領域を有する周辺装置と、特定プログラムを含むプログラムを実行して周辺装置へのアクセス要求を出力すると共に、第１の設定値を参照して実行したプログラムが特定プログラムであるか否かを判断するプロセッサエレメントＰＥと、アクセス要求が特定プログラムの実行結果によるものであるか否かに応じて特定データ格納領域へのアクセスを制御するセイフティガード２０〜２２と、を有する。【選択図】図２
2013008145.tif 000002
【特許請求の範囲】
【請求項１】
特定プログラムが格納された特定コード領域のアドレス範囲に対応する第１の設定値を保持する特定コード領域設定レジスタと、
前記特定プログラムが利用する特定データを格納する特定データ格納領域を有する周辺装置と、
前記特定プログラムを含むプログラムを実行して前記周辺装置へのアクセス要求を出力すると共に、前記第１の設定値を参照して実行したプログラムが前記特定プログラムであるか否かを判断するプロセッサエレメントと、
前記アクセス要求が前記特定プログラムの実行結果によるものである場合は前記特定データ格納領域へのアクセスの許可し、前記アクセス要求が前記特定プログラム以外のプログラムの実行結果によるものである場合は前記特定データ格納領域へのアクセスを無効とするセイフティガードと、
を有するプロセッサシステム。
【請求項２】
前記セイフティガードは、前記特定データ格納領域のアドレス範囲を規定する第２の設定値を格納する特定データ領域設定レジスタを有し、
前記アクセス要求と共に前記プロセッサエレメントから出力されるアクセスアドレスと前記第２の設定値とを比較して前記アクセス要求が前記特定データ格納領域をアクセス対象とするものか否かを判断する請求項１に記載のプロセッサシステム。
【請求項３】
前記プロセッサエレメントは、実行したプログラムが前記特定プログラムである場合にイネーブル状態となる特定コード領域識別信号を出力し、
前記セイフティガードは、前記特定コード領域識別信号がイネーブル状態であるか否かに応じて前記アクセス要求が前記特定プログラムの実行結果に基づくものであるか否かを判断する請求項１又は２に記載のプロセッサシステム。
【請求項４】
前記プロセッサエレメントは、実行したプログラムが格納された前記特定コード領域のアドレスを示す値としてプログラムカウント値を生成し、
前記特定コード領域設定レジスタは、前記第１の設定値として前記特定プログラムが格納された前記特定コード領域に対応するアドレス範囲を示す値として特定プログラムカウント範囲値を有し、
前記プロセッサエレメントは、前記プログラムカウント値が前記特定プログラムカウント範囲値の範囲内である場合に前記特定コード領域識別信号をイネーブル状態とする特定コード判定部を有する請求項３に記載のプロセッサシステム。
【請求項５】
前記周辺装置は、前記プロセッサエレメントが実行する前記プログラムの実行時間をプログラム毎に管理するウォッチドックタイマを有し、
前記特定データには前記ウォッチドックタイマの設定値が含まれる請求項１乃至４のいずれか１項に記載のプロセッサシステム。
【請求項６】
複数の前記プロセッサエレメントを有し、
複数の前記プロセッサエレメントの一つのプロセッサエレメントは、前記第１の設定値を参照して実行したプログラムが前記特定プログラムであるか否かを判断する管理プロセッサエレメントとして機能し、
複数の前記プロセッサエレメントの他のプロセッサエレメントは、前記第１の設定値を参照して実行したプログラムが前記特定プログラムであるか否かを判断する処理を行わない通常プロセッサエレメントとして機能する請求項１乃至５のいずれか１項に記載のプロセッサシステム。
【請求項７】
複数の前記プロセッサエレメントは、自プロセッサエレメントを特定するプロセッサエレメント識別信号を前記アクセス要求と共に出力し、
前記セイフティガードは、
アクセスが許可されるデータ格納領域のアドレス範囲を前記プロセッサエレメント毎に規定する第３の設定値を格納する格納する特定データ領域設定レジスタを備え、前記第３の設定値と前記プロセッサエレメント識別信号とを参照して、一のプロセッサエレメントに対してアクセスが許可されるアドレス範囲に対する他のプロセッサエレメントからのアクセス要求を無効とするプロセッサエレメントガードを有する請求項６に記載のプロセッサシステム。
【請求項８】
前記第３の設定値は、前記特定データ格納領域に配置され、
前記第３の設定値を操作する特定プログラム及び前記特定データ格納領域は、前記通常プロセッサエレメントがアクセスできないアドレス範囲のデータ格納領域に配置される請求項７に記載のプロセッサシステム。
【請求項９】
前記管理プロセッサエレメントは、実行したプログラムのエラーを検出するエラー検出構成を有する請求項６乃至８のいずれか１項に記載のプロセッサエレメント。
【請求項１０】
前記管理プロセッサエレメントにおいて前記エラーが検出された場合、複数の前記プロセッサエレメントの動作を停止するシステムコントローラを有する請求項６乃至９のいずれか１項に記載のプロセッサシステム。
【請求項１１】
前記管理プロセッサエレメントにおいて前記エラーが検出された場合、前記エラーが検出された管理プロセッサエレメントを停止し、前記通常プロセッサエレメントの一つを前記管理プロセッサエレメントとするシステムコントローラを有する請求項６乃至９のいずれか１項に記載のプロセッサシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はプロセッサシステムに関し、特に複数のプログラムを動作させた場合に一のプログラムが利用するデータを他のプログラムが意図外に変更することを防止する構成を有するプロセッサシステムに関する。
【背景技術】
【０００２】
近年、一のプロセッサシステム上で複数のプログラムを実行することが多く行われている。このように、一のプロセッサシステム上で複数のプログラムを実行する場合、一のプログラムが利用するデータを他のプログラムが意図外に変更してしまった場合、一のプログラムの動作に不具合が生じるため問題である。
【０００３】
そこで、特許文献１では、プロセッサシステムで行われる処理のうち高い信頼性を要求する処理については、複数のプロセッサで同じ処理を行い、その処理結果を比較することで処理自体の信頼性を向上させる例が開示されている。しかし、特許文献１では、プロセッサシステム上で動作するプログラム間のデータの改ざんを防止する構成を有していないため、プログラム間のデータの改ざんを回避することはできない。
【０００４】
そこで、一のプロセッサシステム上で複数のプログラムを実行する場合に一のプログラムが利用するデータを他のプログラムが意図外に変更することを防止する構成を有する例が特許文献２に開示されている。特許文献２では、プロセッサシステムの例として４つのＣＰＵ（Central Processing Unit）を有するマルチプロセッサシステムが記載されている。特許文献２のマルチプロセッサシステムでは、メモリの複数の所定領域に対する各プロセッサのアクセス権限に関する情報を保持するアクセス権限情報保持手段と、アクセス権限に関する情報に基づいて各プロセッサによるメモリへのアクセスを管理するメモリ管理手段と、を備える。つまり、特許文献２に記載のプロセッサシステムでは、プロセッサのアクセス権限に関する情報に基づき、メモリの所定領域毎にアクセス可能なプロセッサを制限する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００７−１１６３９号公報
【特許文献２】特開２００８−１２３０３１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献２では、一の所定領域にアクセスが許可されるプロセッサを規定する設定値については、いずれのプロセッサ（又はプログラム）であっても変更可能である。つまり、特許文献２では、一の所定領域にアクセスが許可されるプロセッサを規定する設定値が意図外に改ざんされた場合、一の所定領域に格納されるデータが意図外のプロセッサ（又はプログラム）から改ざんされることを防ぐことができない問題がある。
【課題を解決するための手段】
【０００７】
本発明にかかるプロセッサシステムの一態様は、特定プログラムが格納された特定コード領域のアドレス範囲に対応する第１の設定値を保持する特定コード領域設定レジスタと、前記特定プログラムが利用する特定データを格納する特定データ格納領域を有する周辺装置と、前記特定プログラムを含むプログラムを実行して前記周辺装置へのアクセス要求を出力すると共に、前記第１の設定値を参照して実行したプログラムが前記特定プログラムであるか否かを判断するプロセッサエレメントと、前記アクセス要求が前記特定プログラムの実行結果によるものである場合は前記特定データ格納領域へのアクセスの許可し、前記アクセス要求が前記特定プログラム以外のプログラムの実行結果によるものである場合は前記特定データ格納領域へのアクセスを無効とするセイフティガードと、を有する。
【０００８】
本発明にかかるプロセッサシステムでは、保護対象となる特定データに対してアクセス動作を行う特定プログラムは予め決められたアドレス範囲の特定コード領域に格納されたものである。また、本発明にかかるプロセッサシステムでは、実行したプログラムが特定プログラムであるか否かを実行したプログラムが格納されていたプログラム可能領域のアドレスに基づき判断する。そして、本発明にかかるプロセッサシステムでは、特定プログラム以外のプログラムが意図外に特定データにアクセス要求を発行した場合には、当該アクセス要求をセイフティガードにおいて無効とする。これにより、本発明にかかるプロセッサシステムでは、特定プログラム以外のプログラムが意図外に特定データを改ざんすることを防止することができる。
【発明の効果】
【０００９】
本発明にかかるプロセッサシステムによれば、特定データが意図外のプログラムにより改ざんされることを防止することができる。
【図面の簡単な説明】
【００１０】
【図１】本発明にかかるプロセッサシステムの全体を示すブロック図である。
【図２】実施の形態１にかかるプロセッサシステムのブロック図である。
【図３】実施の形態１にかかるプロセッサシステムのセイフティガードのブロック図である。
【図４】実施の形態１にかかるプロセッサシステムにおける特定コード領域と特定データ領域を示すメモリ空間マップの概略図である。
【図５】実施の形態２にかかるプロセッサシステムのブロック図である。
【図６】実施の形態２にかかるプロセッサシステムのセイフティガードのブロック図である。
【図７】実施の形態２にかかるプロセッサシステムにおける特定コード領域と特定データ領域を示すメモリ空間マップの概略図である。
【図８】実施の形態２にかかるプロセッサシステムの第１のプロセッサエレメントに固有のメモリ空間マップの詳細を示すメモリ空間マップの概略図である。
【図９】実施の形態２にかかるプロセッサシステムの第２のプロセッサエレメントに固有のメモリ空間マップの詳細を示すメモリ空間マップの概略図である。
【図１０】実施の形態２にかかるプロセッサシステムの第３のプロセッサエレメントに固有のメモリ空間マップの詳細を示すメモリ空間マップの概略図である。
【図１１】実施の形態３にかかるプロセッサシステムのブロック図である。
【図１２】実施の形態４にかかるプロセッサシステムのブロック図である。
【図１３】実施の形態４にかかるプロセッサシステムのシステムコントローラの動作を示すフローチャートである。
【発明を実施するための形態】
【００１１】
実施の形態１
以下、図面を参照して本発明の実施の形態について説明する。本発明の詳細な実施の形態を説明する前に、本発明が適用されるプロセッサシステムの概要について説明する。なお、本発明は、以下で説明するプロセッサシステムに適用されるものではあるが、説明するプロセッサシステムは一例であり、他のプロセッサシステムに本発明を適用することも可能である。
【００１２】
本発明が適用されるプロセッサシステムの概略図を図１に示す。図１に示すように、本発明にかかるプロセッサシステムは、複数のＰＥ（Processing Element）を用いることにより処理性能の向上を実現するものである。また、本発明にかかるプロセッサシステムでは、ＰＥによる機能ブロックの分類とは別に３つのサブシステムによる機能の分類を行う。図１に示すように、本発明にかかるプロセッサシステムでは、メインＰＥ（Processing Element）サブシステム、ＩＯ（Input Output）サブシステム、ＨＳＭ（Hardware Security Module）サブシステムを有する。
【００１３】
メインＰＥサブシステムでは、予め内部に記憶されたプログラム又は外部から読み込んだプログラムに基づくプロセッサシステムに求められる具体的な処理を行う。ＩＯサブシステムでは、メインＰＥサブシステム又はＨＳＭサブシステムにより用いられる周辺装置が動作するための各種処理を行う。ＨＳＭサブシステムは、プロセッサシステムにおいて行われている処理のセキュリティ確認処理を行う。また、本発明にかかるプロセッサシステムでは、各サブシステムにクロック信号ＣＬＫａ、ＣＬＫｂ、ＣＬＫｃ、ＣＬＫｐが供給される。図１に示す例では、メインＰＥサブシステムにはクロック信号ＣＬＫａが供給され、ＩＯサブシステムにはクロック信号ＣＬＫｂ、ＣＬＫｐが供給され、ＨＳＭサブシステムにはクロック信号ＣＬＫｃが供給される。これらのクロック信号ＣＬＫａ、ＣＬＫｂ、ＣＬＫｃは、システム全体構成の仕様に応じて、同一の周波数であっても、異なる周波数であっても良い。また、クロック信号ＣＬＫｐは、周辺装置に与えられ、ＩＯサブシステムに与えられるクロック信号ＣＬＫｂとは非同期のクロック信号である。
【００１４】
続いて、より具体的に各サブシステムについて説明する。メインＰＥサブシステムは、メインＰＥａ、メインＰＥｂ、第１の命令メモリ、データメモリ、システムバスを有する。メインＰＥサブシステムでは、メインＰＥａ、メインＰＥｂ、命令メモリ及びデータメモリは、システムバスを介して互いに接続される。第１の命令メモリは、プログラムを格納する。データメモリは、外部から読み込んだプログラム及びプロセッサシステム内で処理されたデータを一時的に記憶する。メインＰＥａ及びメインＰＥｂは、それぞれ命令メモリ、データメモリ等を利用しながらプログラムを実行する。なお、メインＰＥａは、冗長動作が可能なように構成される。冗長動作とは、ソフトウェア的には一つのプロセッサエレメントとして動作するが、ハードウェアとしては多重化された構成又は検査回路等が付加された構成により高信頼な動作を行う動作である。冗長動作の一例として、クロック毎に多重化された回路の出力結果が同一であるか否かを比較するロックステップ動作がある。
【００１５】
ＩＯサブシステムは、周辺バス、ＩＯＰＥ、周辺装置を有する。ＩＯＰＥは、周辺装置を利用する上で必要な処理を行う。なお、ＩＯＰＥはメインＰＥシステムの第１の命令メモリに記憶されているプログラムに基づき動作しても良く、他の記憶領域に記憶されているプログラムに基づき動作しても良い。周辺バスは、ＩＯＰＥ及び周辺装置を互いに接続する。
【００１６】
図１では、周辺装置として、ＣＡＮユニット、ＦＬＥＸＲＡＹユニット、ＳＰＩユニット、ＵＡＲＴユニット、ＡＤＣユニット、ＷＤユニット、タイマを例示した。ＣＡＮユニットは、自動車の車内通信規格の一つであるＣＡＮ（Controller Area Network）に基づく通信を行う。ＦＬＥＸＲＡＹユニットは、自動車の車内通信規格の一つであるFlex Ray規格に基づく通信を行う。ＳＰＩユニットは、３線又は４線のシリアル通信であるＳＰＩ（System Packet Interface）規格の通信を行う。ＵＡＲＴ（Universal Asynchronous Receiver Transmitter）ユニットは、調歩同期方式によるシリアル信号をパラレル信号に変換し、また、その逆方向の変換を行う。ＡＤＣ（Analog to Digital Converter）ユニットは、センサ等から与えられるアナログ信号をデジタル信号に変換する。ＷＤ（Watch Dog）ユニットは、所定の期間が経過したことを検出するウォッチドックタイマ機能を提供する。タイマは、時間の計測、波形生成などを行う。図１の例では、上記ユニットを周辺装置としたが、他の機能を有するユニットを含むことも可能であり、また、一部のユニットのみを有する場合も考えられる。
【００１７】
ＨＳＭサブシステムは、セキュリティＰＥと、第２の命令メモリとを有する。セキュリティＰＥは、システムバスに接続される。セキュリティＰＥは、メインＰＥサブシステムで実行されているプログラムの正当性又はプログラムを実行して得られるデータの正当性を判断する。第２の命令メモリには、プログラムを格納する。また、第２の命令メモリは、セキュリティＰＥのみがアクセスできるメモリである。第２の命令メモリは、第１の命令メモリと共に一つの記憶領域として設けられていても良いが、セキュリティＰＥのみがアクセス可能な領域としてアクセス制御されていることが必要である。
【００１８】
上記説明の通り、本発明が適用されるプロセッサシステムでは、複数のＰＥにより処理能力を向上させながら、予期しない故障、予期しないプログラムの改変等の不具合に対して高い耐性を実現するものである。なお、ここまでに説明したプロセッサシステムは、本発明が適用されるプロセッサシステムの一例を示したものであり、例えば、命令メモリ及びデータメモリの配置及びシステム中の個数は、そのシステムのアーキテクチャにより種々考えられる。また、メモリと各プロセッサエレメントとの接続は、例えば、複数のバスを介して接続される構成であっても良く、バスを介さずにプロセッサエレメントと接続される構成であっても良く、アーキテクチャの設計により種々の構成が考えられ得る。
【００１９】
上記したプロセッサシステムの説明は、本発明が適用されるプロセッサシステムの全体的な構成を説明するためのものである。しかし、本発明の実施の形態の説明では、上記のプロセッサシステムの説明において説明しなかった構成要素についても適宜追加する。また、追加した当該構成要素についての説明も加える。
【００２０】
前述したプロセッサシステムでは、メインＰＥａ、メインＰＥｂ、セキュリティＰＥ、ＩＯＰＥを備えるが、本発明にかかる特徴は、いずれのプロセッサエレメントに対しても適用可能であり、かつ、一つのプロセッサエレメントに対して適用するのみであっても効果を生じるものである。そこで、以下の説明では、メインＰＥａ、メインＰＥｂ、セキュリティＰＥ、ＩＯＰＥの総称としてプロセッサエレメントＰＥとの語を用いる。また、本発明の実施の形態１では、本発明の特徴を明確にするために、プロセッサシステムに備えられるプロセッサエレメントを一つとした例について説明する。
【００２１】
実施の形態１にかかるプロセッサシステムのブロック図を図２に示す。図２に示すように、実施の形態１にかかるプロセッサシステムは、プロセッサエレメントＰＥ、システムバス、セイフティガード２０〜２２、第１の命令メモリ、データメモリ、周辺バスブリッジ２３、周辺バス、Ｉ／Ｏ（Input / Output）、ＷＤユニット、タイマを有する。ここで、システムバス、第１の命令メモリ、データメモリ、周辺バス、ＷＤユニット、タイマについては、図１に示したブロック図において説明したものと同じであるためここでは説明を省略する。また、図２のＩ／Ｏは、図１で示したＣＡＮユニット、ＦＬＥＸＲＡＹユニット、ＳＰＩユニット、ＵＡＲＴユニット、ＡＤＣユニットを含むものとする。
【００２２】
実施の形態１にかかるプロセッサエレメントＰＥは、特定プログラムを含むプログラムを実行して周辺装置へのアクセス要求を出力すると共に、第１の設定値を参照して実行したプログラムが特定プログラムであるか否かを判断する。この第１の設定値は、特定プログラムが格納された特定コード領域のアドレス範囲に対応する設定値である。実施の形態１では、プロセッサエレメントＰＥが第１の設定値を保持する特定コード領域設定レジスタを有するものとする。
【００２３】
また、実施の形態１にかかる周辺装置は、特定プログラムが利用する特定データを格納する特定データ格納領域を有する。実施の形態１では、周辺装置には、第１の命令メモリ、データメモリ、Ｉ／Ｏ、ＷＤユニット、タイマを含むものとする。
【００２４】
また、実施の形態１にかかるセイフティガード２０〜２２は、アクセス要求が特定プログラムの実行結果によるものである場合は特定データ格納領域へのアクセスの許可し、アクセス要求が特定プログラムの実行結果によるものである場合は特定データ格納領域へのアクセスを無効とする。なお、図２に示す例では、セイフティガード２０が第１の命令メモリに対して設けられ、セイフティガード２１がデータメモリに対して設けられ、セイフティガード２２が周辺バスに接続される周辺装置に対して設けられる。また、図２に示す例では、周辺バスとシステムバスは、周辺バスブリッジ２３を介して接続され、セイフティガード２２は、周辺バスブリッジ２３とシステムバスとの間に設けられる。周辺バスブリッジは、周辺バスに接続される周辺装置へのアクセス要求の調停処理を行う。
【００２５】
以下では、プロセッサエレメントＰＥ、セイフティガード２０〜２２についてさらに詳細に説明を行う。
【００２６】
プロセッサエレメントＰＥは、コード判定部１、演算部２を有する。演算部２は、プログラムを実行する演算コアである。コード判定部１は、第１の設定値を参照し、演算部２が実行しているプログラムのコードに基づき生成するプログラムカウント値が特定プログラムものであるか否かを判断する。そして、コード判定部１は、演算部２が実行しているプログラムが特定プログラムである場合は、プロセッサエレメントＰＥが出力する特定コード領域識別信号をイネーブル状態とする指示を演算部２に出力する。
【００２７】
図２に示すように、演算部２は、命令フェッチ制御部１０、命令デコード部１１、演算実行部１２、ライトバック制御部１３、レジスタファイル１４、バス制御部１５を有する。図２に示す例では、レジスタファイル１４には、演算実行部１２の処理により更新されたプログラムカウント値ＰＣが格納される。
【００２８】
命令フェッチ制御部１０は、レジスタファイル１４に格納されたプログラムカウント値ＰＣを参照してフェッチアドレスを生成する。命令フェッチ制御部１０は、このフェッチアドレスによりバス制御部１５を介して第１の命令メモリへのアクセスを行う。そして、命令フェッチ制御部１０は、第１の命令メモリのフェッチアドレスに対応する領域からプログラムのコードをフェッチする。命令フェッチ制御部１０は、フェッチした命令を命令デコード部１１に対して発行する。なお、以下の説明では、フェッチした命令を命令情報と称す。
【００２９】
命令デコード部１１は、命令フェッチ制御部１０が発行した命令情報をデコードして演算命令を生成する。また、命令デコード部１１は、演算命令のデコードと合わせて、当該演算命令のプログラムカウント値ＰＣを生成する。そして、命令デコード部１１は、演算命令と当該演算命令に対応したプログラムカウント値ＰＣを演算実行部１２に出力する。また、命令デコード部１１は、レジスタファイルに出力する演算命令において利用されるデータがある場合は、当該データを演算実行部１２に出力する。なお、命令デコード部１１は、演算実行部１２に出力する演算命令が利用するデータについて、当該データのレジスタファイル１４中の位置を示すレジスタアドレスを出力しても良い。
【００３０】
演算実行部１２は、命令デコード部１１が出力した演算命令に基づき演算処理を実行する。また、演算実行部１２は、実行中の演算命令に対応したプログラムカウント値ＰＣをコード判定部１に出力する。
【００３１】
ライトバック制御部１３は、演算実行部１２の実行結果をレジスタファイル１４に書き込む。このとき、ライトバック制御部１３は、演算実行部１２における処理で新たに生成されたプログラムカウント値ＰＣを実行結果と共にレジスタファイルに書き込む。レジスタファイル１４は、演算実行部１２の処理結果のデータ及び演算実行部１２により生成されたプログラムカウント値ＰＣを格納する。
【００３２】
バス制御部１５は、演算実行部１２からの指示に基づき、システムバスを介して周辺装置とデータの送受信を行う。例えば、バス制御部１５は、演算実行部１２が処理した演算命令がリード命令であった場合、アクセス要求ＲＱとしてリード命令を出力し、このリード命令と共にリードするデータの位置を示すアクセスアドレスＡＤＤを出力する。そして、周辺装置がアクセス要求に応じて出力したリードデータを受信すると、当該リードデータを演算実行部１２に渡す。また、バス制御部１５は、演算実行部１２が処理した演算命令がライト命令であった場合、アクセス要求ＲＱとしてライト命令を出力し、このライト命令と共にデータの書き込み位置を示すアクセスアドレスＡＤＤと、書き込み対象のデータを出力する。さらに、バス制御部１５は、演算実行部１２からの指示に基づきアクセス要求ＲＱと共に出力する特定コード領域識別信号ＣＩＤをイネーブル状態とディスイネーブル状態とのいずれかの状態とする。
【００３３】
コード判定部１は、特定コード領域判定部１６、特定コード領域設定レジスタ１７を有する。特定コード領域判定部１６は、演算実行部１２から実行中の演算命令に関するプログラムカウント値ＰＣを受け取り、当該プログラムカウント値ＰＣが第１の設定値で示される特定プログラムカウント範囲値ＳＣの範囲内の値であるか否かを判断する。そして、特定コード領域判定部１６は、プログラムカウント値ＰＣが特定プログラムカウント範囲値の範囲内である場合、演算実行部１２で実行されている演算命令は、特定プログラムのものである判断し、演算実行部１２に特定コード領域識別信号ＣＩＤをイネーブル状態とする指示を行う。一方、特定コード領域判定部１６は、プログラムカウント値ＰＣが特定プログラムカウント範囲値の範囲外である場合、演算実行部１２で実行されている演算命令は、特定プログラム以外のプログラムのものである判断し、演算実行部１２に特定コード領域識別信号ＣＩＤをディスイネーブル状態とする指示を行う。
【００３４】
特定コード領域設定レジスタ１７は、第１の設定値を保持する。この第１の設定値は、特定プログラムが格納される特定コード領域のアドレス範囲に対応する値である。実施の形態１では、演算実行部１２で実行中の演算命令が特定プログラムに属するものであるか否かを判断するため、この第１の設定値として特定コード領域のアドレス範囲に対応するプログラムカウント値ＰＣの範囲を設定する。特定コード領域設定レジスタ１７は、特定プログラムに対応するプログラムカウント値ＰＣの範囲を示す値として特定プログラムカウント範囲値ＳＣを出力する。なお、実施の形態１では、第１の設定値がアドレス範囲を示すものであるため、特定コード領域設定レジスタ１７は、アドレス範囲の上位側のアドレスを格納する第１のレジスタと下位側のアドレスを格納する第２のレジスタとを有する。なお、特定コード領域設定レジスタ１７は、プロセッサエレメントＰＥとは異なる領域に配置されていても良い。
【００３５】
また、実施の形態１にかかるプロセッサシステムでは、特定コード領域設定レジスタ１７への第１の設定値の格納処理は、プロセッサエレメントＰＥをリセットした後の初期値設定処理中に行う。
【００３６】
続いて、セイフティガード２０〜２２の詳細について説明する。セイフティガード２０〜２２は、同じ構成である。そのため、ここではセイフティガード２０を例に説明する。セイフティガード２０のブロック図を図３に示す。図３では、セイフティガード２０が保護するアクセス対象回路として第１の命令メモリを示した。図３に示すように、セイフティガード２０は、特定データ領域設定レジスタ３０、特定データ領域判定部３１、アクセス制御回路３２を有する。
【００３７】
特定データ領域設定レジスタ３０は、第２の設定値を格納する。この第２の設定値は、特定プログラムが利用する特定データが格納される特定データ格納領域のアドレス範囲を規定する値である。特定データ領域設定レジスタ３０は、第２の設定値により示されるアドレス範囲を特定データ領域信号ＡＳ１として出力する。また、特定データ領域設定レジスタ３０は、第２の設定値が未格納な状態（例えば、プロセッサシステムがリセット動作を行った後の状態）では、イネーブル信号ＥＮ１をディスイネーブル状態とし、第２の設定値が格納された後にイネーブル信号ＥＮ１をイネーブル状態とする。なお、特定データ領域設定レジスタ３０は、アクセス対象回路の一部として構成されていても良い。
【００３８】
特定データ領域判定部３１は、イネーブル信号ＥＮ１がイネーブル状態のときに有効になるブロックである。特定データ領域判定部３１は、アクセス要求ＲＱと共にプロセッサエレメントＰＥが出力する特定コード領域識別信号ＣＩＤを受信する。そして、特定データ領域判定部３１は、特定コード領域識別信号ＣＩＤがイネーブル状態、かつ、アクセス対象回路に対するアクセスアドレスＡＤＤが特定データ領域信号ＡＳ１で示されるアドレス範囲の範囲内である場合、検出信号ＤＥＴをイネーブル状態とする。また、特定データ領域判定部３１は、特定コード領域識別信号ＣＩＤがイネーブル状態、かつ、アクセスアドレスＡＤＤが特定データ領域信号ＡＳ１で示されるアドレス範囲の範囲外である場合、検出信号ＤＥＴをディスイネーブル状態とする。また、特定データ領域判定部３１は、特定コード領域識別信号ＣＩＤがディスイネーブル状態、かつ、アクセスアドレスＡＤＤが特定データ領域信号ＡＳ１で示されるアドレス範囲の範囲外である場合、検出信号ＤＥＴをイネーブル状態とする。なお、特定データ領域判定部３１は、イネーブル信号ＥＮ１がディスイネーブル状態である場合、検出信号ＤＥＴをディスイネーブル状態とする。
【００３９】
アクセス制御回路３２は、検出信号ＤＥＴがイネーブル状態である場合は、アクセス要求ＲＱをアクセス対象回路に伝達する。一方、アクセス制御回路３２は、検出信号ＤＥＴがディスイネーブル状態である場合、アクセス要求ＲＱに対してエラー応答信号ＥＲＲを出力し、当該アクセス要求を無効とする。つまり、アクセス制御回路３２は、検出信号ＤＥＴがディスイネーブル状態である場合、アクセス対象回路に対するアクセス要求ＲＱを無効とすることでプロセッサエレメントＰＥからアクセス対象回路へのアクセスを遮断する。
【００４０】
上記説明より、セイフティガード２０〜２２は、特定データ格納領域のアドレス範囲を規定する第２の設定値を格納する特定データ領域設定レジスタ３０を有する。そして、セイフティガード２０〜２２は、アクセス要求ＲＱと共にプロセッサエレメントＰＥから出力されるアクセスアドレスＡＤＤと第２の設定値とを比較してアクセス要求ＲＱが特定データ格納領域をアクセス対象とするものか否かを判断する。また、セイフティガード２０〜２２は、特定コード領域識別信号ＣＩＤがイネーブル状態であるか否かに応じてアクセス要求ＲＱが特定プログラムの実行結果に基づくものであるか否かを判断する。そして、セイフティガード２０〜２２は、特定プログラムの実行結果に基づいて特定データ領域に対するアクセス要求ＲＱがあった場合には当該アクセス要求ＲＱをアクセス対象回路に与える。また、セイフティガード２０〜２２は、特定プログラム以外のプログラムの実行結果に基づいて特定データ領域に対するアクセス要求ＲＱがあった場合には当該アクセス要求ＲＱを無効として特定データ領域に格納された特定データを保護する。また、セイフティガード２０〜２２は、特定プログラム以外のプログラムの実行結果に基づいて特定データ領域以外のデータ領域に対するアクセス要求ＲＱがあった場合には当該アクセス要求ＲＱをアクセス対象回路に与える。
【００４１】
上記説明より、実施の形態１にかかるプロセッサシステムでは、特定データ領域に対するアクセスを許可するか否かをアクセス要求ＲＱを発行したプログラムが特定コード領域に格納されたものか否かにより制御する。そこで、特定データ領域と特定コード領域とについてより詳細に説明する。図４に実施の形態１にかかるプロセッサシステムにおける特定コード領域と特定データ領域とを示すメモリ空間マップの概略図を示す。
【００４２】
図４に示すように、実施の形態１にかかるプロセッサシステムでは、周辺装置においてプログラム及びデータが格納される格納領域をメモリ空間マップの概念を利用して管理している。
【００４３】
実施の形態１にかかるプロセッサシステムでは、メモリ空間マップ上で、第１の設定値として規定される特定プログラムカウント範囲値に対応するアドレス範囲に特定コード領域が規定される。この特定コード領域には、特定プログラムに属する特定コードが格納される。この特定プログラムは、詳細な動作検証がなされた信頼済みのプログラムである。詳細な動作検証なされたプログラムとは、例えば、その動作がレジスタレベルで検証されており、不具合が取り除かれたプログラムである。また、特定プログラムは、その動作のエラーを検出する仕組みを有するプログラムであっても良い。
【００４４】
また、実施の形態１にかかるプロセッサシステムでは、メモリ空間マップ上で、第２の設定値として規定されるアドレス範囲に特定データ領域が規定される。この特定データは、特定プログラムによってアクセスされるデータである。特定データには、特定プログラムが演算に利用するデータ以外にも、ＷＤユニットの設定値を含むこともできる。プロセッサエレメントＰＥが暴走した場合、プログラムの実行時間が延びるため、ＷＤユニットでこのプログラムの実行時間を計測することでプロセッサエレメントＰＥの暴走を検出することができる。このとき、特定データにＷＤユニットの設定値を含めておくことで、プロセッサエレメントＰＥが暴走した場合にＷＤユニットの設定値が意図外に更新されることを防止して、プロセッサシステムの信頼性を向上させることができる。
【００４５】
上記説明より、実施の形態１にかかるプロセッサシステムでは、プロセッサエレメントＰＥにおいて実行されるプログラムが特定コード領域に格納された特定プログラムであるか否かを判断する。そして、セキュリティガードが、プロセッサエレメントＰＥが発行したアクセス要求ＲＱが特定プログラムの処理結果によるものか否かにより特定データ領域に対するアクセスを許可するか否かを制御する。これにより、実施の形態１にかかるプロセッサシステムは、特定プログラム以外のプログラムが特定データにアクセスすることを防止し、信頼性を向上させることができる。
【００４６】
従来のプロセッサシステムにおいては、アクセス権限に基づく特定データへのアクセス制御がなされる場合があるが、検証が不十分な信頼済みでないプログラムが意図外に特定データへのアクセス権限を有ししまう場合もあり、信頼性を十分に確保できない問題がある。しかしながら、実施の形態１にかかるプロセッサシステムでは、利用者が第１の設定値として設定したアドレス範囲で規定される特定コード領域に特定プログラムを格納することができる。このようなプログラムの配置が可能であるため、実施の形態１にかかるプロセッサシステムでは、特定コード領域以外のアドレス範囲に配置される信頼済みでないプログラムが特定データにアクセスすることを確実に防止し、信頼性を向上させることができる。
【００４７】
実施の形態２
実施の形態２では、複数のプロセッサエレメントＰＥを有するプロセッサシステムに本発明の構成を適用した場合について説明する。そこで、実施の形態２にかかるプロセッサシステムのブロック図を図５に示す。なお、実施の形態２の説明において、実施の形態１において説明した構成要素については、同じ符号を付して説明を省略する。また、図５に示すプロセッサシステムのブロック図では、プロセッサエレメント毎に個別にＷＤユニットとタイマとが備えられる例を示した。
【００４８】
図５に示すように、実施の形態２にかかるプロセッサシステムでは、プロセッサエレメントＰＥａ〜ＰＥｃを有する。そして、プロセッサエレメントＰＥａのみがコード判定部１を有する。つまり、実施の形態２ではプロセッサエレメントＰＥａが実施の形態１にかかるプロセッサエレメントＰＥと同じ構成を有する。一方、実施の形態２にかかるプロセッサエレメントＰＥｂ、ＰＥｃは、コード判定部１を有していないため、特定データへのアクセスを行うことができない。なお、プロセッサエレメントＰＥａ〜ＰＥｃは、アクセス要求ＲＱと共に、自プロセッサエレメントを特定するプロセッサエレメント識別信号ＰＥＩＤを出力するものとする。
【００４９】
また、図５に示すように、実施の形態２にかかるプロセッサシステムでは、セイフティガード２０〜２２に代えてセイフティガード２４〜２６が設けられる。セイフティガード２４〜２６は、セイフティガード２０〜２２にプロセッサエレメントガード（以下ＰＥガードと称す）を追加したものである。ＰＥガードは、アクセスが許可されるデータ格納領域のアドレス範囲をプロセッサエレメント毎に規定する第３の設定値を格納する格納するＰＥ固有領域設定レジスタを備え、第３の設定値とプロセッサエレメント識別信号ＰＥＩＤとを参照して、一のプロセッサエレメントに対してアクセスが許可されるアドレス範囲に対する他のプロセッサエレメントからのアクセス要求を無効とする。
【００５０】
ここで、セイフティガード２４〜２６の詳細な構成について説明する。セイフティガード２４〜２６は同じ構成であるため、ここでは、セイフティガード２４を例にセイフティガードの詳細について説明する。図６に実施の形態２にかかるセイフティガード２４のブロック図を示す。
【００５１】
図６に示すように、セイフティガード２４は、アクセス制御回路３２に代えてアクセス制御回路４０を有する。アクセス制御回路４０は、アクセス制御回路３２の機能にＰＥガード４１が出力する検出信号ＤＥＴａ〜ＤＥＴｃの状態を考慮してアクセス制御を行う機能を追加したものである。
【００５２】
また、セイフティガード２４は、ＰＥガード４１を有する。ＰＥガード４１は、ＰＥａ固有領域設定レジスタ４２、ＰＥａ固有領域判定部４３、ＰＥｂ固有領域設定レジスタ４４、ＰＥｂ固有領域判定部４５、ＰＥｃ固有領域設定レジスタ４６、ＰＥｃ固有領域判定部４７を有する。図６に示す例では、ＰＥａ固有領域設定レジスタ４２、ＰＥｂ固有領域設定レジスタ４４、ＰＥｃ固有領域設定レジスタ４６は、固有の領域に配置される例について示したが、これらレジスタは、アクセス対象回路に内蔵される構成としても良い。
【００５３】
ＰＥａ固有領域設定レジスタ４２は、プロセッサエレメントＰＥａがアクセス可能なデータ格納領域のアドレス範囲を規定する第３の設定値（以下、ＰＥａ固有領域設定値と称す）を格納する。ＰＥａ固有領域設定レジスタ４２は、ＰＥａ固有領域設定値により示されるアドレス範囲をＰＥａ固有領域信号ＡＳａとして出力する。また、ＰＥａ固有領域設定レジスタ４２は、ＰＥａ固有領域設定値が未格納な状態（例えば、プロセッサシステムがリセット動作を行った後の状態）では、イネーブル信号ＥＮａをディスイネーブル状態とし、ＰＥａ固有領域設定値が格納された後にイネーブル信号ＥＮａをイネーブル状態とする。
【００５４】
ＰＥａ固有領域判定部４３は、イネーブル信号ＥＮａがイネーブル状態のときに有効になるブロックである。ＰＥａ固有領域判定部４３は、アクセス要求ＲＱと共にプロセッサエレメントが出力するプロセッサエレメント識別信号ＰＥＩＤを受信する。そして、ＰＥａ固有領域判定部４３は、プロセッサエレメント識別信号ＰＥＩＤがプロセッサエレメントＰＥａであることを示し、かつ、アクセス対象回路に対するアクセスアドレスＡＤＤがＰＥａ固有領域信号ＡＳａで示されるアドレス範囲の範囲内である場合、検出信号ＤＥＴａをイネーブル状態とする。また、ＰＥａ固有領域判定部４３は、プロセッサエレメント識別信号ＰＥＩＤがプロセッサエレメントＰＥａ以外のプロセッサエレメントを示し、かつ、アクセスアドレスＡＤＤがＰＥａ固有領域信号ＡＳａで示されるアドレス範囲の範囲外である場合、検出信号ＤＥＴａをディスイネーブル状態とする。なお、ＰＥａ固有領域判定部４３は、イネーブル信号ＥＮａがディスイネーブル状態である場合、検出信号ＤＥＴａをディスイネーブル状態とする。
【００５５】
ＰＥｂ固有領域設定レジスタ４４は、プロセッサエレメントＰＥｂがアクセス可能なデータ格納領域のアドレス範囲を規定する第３の設定値（以下、ＰＥｂ固有領域設定値と称す）を格納する。ＰＥｂ固有領域設定レジスタ４４は、ＰＥｂ固有領域設定値により示されるアドレス範囲をＰＥｂ固有領域信号ＡＳｂとして出力する。また、ＰＥｂ固有領域設定レジスタ４４は、ＰＥｂ固有領域設定値が未格納な状態（例えば、プロセッサシステムがリセット動作を行った後の状態）では、イネーブル信号ＥＮｂをディスイネーブル状態とし、ＰＥｂ固有領域設定値が格納された後にイネーブル信号ＥＮｂをイネーブル状態とする。
【００５６】
ＰＥｂ固有領域判定部４５は、イネーブル信号ＥＮｂがイネーブル状態のときに有効になるブロックである。ＰＥｂ固有領域判定部４５は、アクセス要求ＲＱと共にプロセッサエレメントが出力するプロセッサエレメント識別信号ＰＥＩＤを受信する。そして、ＰＥｂ固有領域判定部４５は、プロセッサエレメント識別信号ＰＥＩＤがプロセッサエレメントＰＥｂであることを示し、かつ、アクセス対象回路に対するアクセスアドレスＡＤＤがＰＥｂ固有領域信号ＡＳｂで示されるアドレス範囲の範囲内である場合、検出信号ＤＥＴｂをイネーブル状態とする。また、ＰＥｂ固有領域判定部４５は、プロセッサエレメント識別信号ＰＥＩＤがプロセッサエレメントＰＥｂ以外のプロセッサエレメントを示し、かつ、アクセスアドレスＡＤＤがＰＥｂ固有領域信号ＡＳｂで示されるアドレス範囲の範囲外である場合、検出信号ＤＥＴｂをディスイネーブル状態とする。なお、ＰＥｂ固有領域判定部４５は、イネーブル信号ＥＮｂがディスイネーブル状態である場合、検出信号ＤＥＴｂをディスイネーブル状態とする。
【００５７】
ＰＥｃ固有領域設定レジスタ４６は、プロセッサエレメントＰＥｃがアクセス可能なデータ格納領域のアドレス範囲を規定する第３の設定値（以下、ＰＥｃ固有領域設定値と称す）を格納する。ＰＥｃ固有領域設定レジスタ４６は、ＰＥｃ固有領域設定値により示されるアドレス範囲をＰＥｃ固有領域信号ＡＳｂとして出力する。また、ＰＥｃ固有領域設定レジスタ４６は、ＰＥｃ固有領域設定値が未格納な状態（例えば、プロセッサシステムがリセット動作を行った後の状態）では、イネーブル信号ＥＮｃをディスイネーブル状態とし、ＰＥｃ固有領域設定値が格納された後にイネーブル信号ＥＮｃをイネーブル状態とする。
【００５８】
ＰＥｃ固有領域判定部４７は、イネーブル信号ＥＮｃがイネーブル状態のときに有効になるブロックである。ＰＥｃ固有領域判定部４７は、アクセス要求ＲＱと共にプロセッサエレメントが出力するプロセッサエレメント識別信号ＰＥＩＤを受信する。そして、ＰＥｃ固有領域判定部４７は、プロセッサエレメント識別信号ＰＥＩＤがプロセッサエレメントＰＥｃであることを示し、かつ、アクセス対象回路に対するアクセスアドレスＡＤＤがＰＥｃ固有領域信号ＡＳｃで示されるアドレス範囲の範囲内である場合、検出信号ＤＥＴｃをイネーブル状態とする。また、ＰＥｃ固有領域判定部４７は、プロセッサエレメント識別信号ＰＥＩＤがプロセッサエレメントＰＥｃ以外のプロセッサエレメントを示し、かつ、アクセスアドレスＡＤＤがＰＥｃ固有領域信号ＡＳｃで示されるアドレス範囲の範囲外である場合、検出信号ＤＥＴｃをディスイネーブル状態とする。なお、ＰＥｃ固有領域判定部４７は、イネーブル信号ＥＮｃがディスイネーブル状態である場合、検出信号ＤＥＴｃをディスイネーブル状態とする。
【００５９】
実施の形態２にかかるプロセッサシステムでは、プロセッサエレメントＰＥａのみが特定データ領域へのアクセスできる。そのため、実施の形態２にかかるアクセス制御回路４０は、検出信号ＤＥＴがイネーブル状態、かつ、検出信号ＤＥＴａがイネーブル状態である場合に、特定データへのアクセスを許可する。アクセス制御回路４０は、検出信号ＤＥＴがイネーブル状態、かつ、検出信号ＤＥＴａがディスイネーブル状態である場合に、特定データを除くＰＥａ固有領域へのアクセスを許可する。アクセス制御回路４０は、検出信号ＤＥＴｂがディスイネーブル状態である場合に、ＰＥｂ固有領域へのアクセスを許可する。アクセス制御回路４０は、検出信号ＤＥＴｃがディスイネーブル状態である場合に、ＰＥｃ固有領域へのアクセスを許可する。
【００６０】
アクセス制御回路４０が上記のようなアクセス制御を行うのは、実施の形態２にかかるプロセッサシステムが、第３の設定値により、図７に示すようなアドレス空間マップを設定しているためである。図７に示すように、実施の形態２にかかるプロセッサシステムでは、プロセッサエレメントＰＥａ固有領域に特定コード領域と特定データ領域とを配置する。また、プロセッサエレメントＰＥａ固有領域、プロセッサエレメントＰＥｂ固有領域、プロセッサエレメントＰＥｃ固有領域は、それぞれの固有領域が互いに重ならないように設定される。
【００６１】
ここで、実施の形態２にかかるプロセッサシステムにおけるプロセッサエレメントＰＥａ固有領域、プロセッサエレメントＰＥｂ固有領域、プロセッサエレメントＰＥｃ固有領域の設定方法について説明する。
【００６２】
まず、プロセッサエレメントＰＥａ固有領域のメモリ空間マップの概略図を図８に示す。図８に示すように、プロセッサエレメントＰＥａ固有領域には、特定コード領域と特定データ領域が配置される。そして、特定データ領域には、ＷＤユニット（ＷＤａ）の設定値と第３の設定値の情報が含まれる。また、プロセッサエレメントＰＥａ固有領域の特定データ領域と特定データ領域以外の領域にタイマａとＩ／Ｏの設定値が配置される。
【００６３】
次いで、プロセッサエレメントＰＥｂ固有領域のメモリ空間マップの概略図を図９に示す。図９に示すように、プロセッサエレメントＰＥｂ固有領域には、特定コード領域と特定データ領域は配置されない。そして、プロセッサエレメントＰＥｂ固有領域の任意の位置にＷＤユニット（ＷＤｂ）、タイマｂ及びＩ／Ｏの設定値が配置される。
【００６４】
次いで、プロセッサエレメントＰＥｃ固有領域のメモリ空間マップの概略図を図１０に示す。図１０に示すように、プロセッサエレメントＰＥｃ固有領域には、特定コード領域と特定データ領域は配置されない。そして、プロセッサエレメントＰＥｃ固有領域の任意の位置にＷＤユニット（ＷＤｃ）、タイマｃ及びＩ／Ｏの設定値が配置される。
【００６５】
上記説明より、実施の形態２にかかるプロセッサシステムでは、第１の設定値を参照して実行したプログラムが特定プログラムであるか否かを判断する管理プロセッサエレメント（例えば、プロセッサエレメントＰＥａ）を一つに限定し、他のプロセッサエレメントを第１の設定値を参照して実行したプログラムが特定プログラムであるか否かを判断する処理を行わない通常プロセッサエレメント（例えば、プロセッサエレメントＰＥｂ、ＰＥｃ）とする。このような構成とすることで、通常プロセッサエレメントが、誤って特定データにアクセスすることを防止することができる。
【００６６】
また、実施の形態２にかかるプロセッサシステムでは、特定コード領域及び特定データ領域へのアクセスを管理プロセッサエレメントに限定すると共に、それぞれのプロセッサエレメントがアクセス可能なデータ可能領域の範囲を規定する第３の設定値を特定データ内に配置する。これにより、実施の形態２にかかるプロセッサシステムでは、ＰＥガードの保護領域の設定（第３の設定値）が通常プロセッサエレメントの誤動作により変更されることを防ぐことができる。さらに、実施の形態２にかかるプロセッサシステムでは、特定コード領域に配置されたプログラムのみに特定データ領域へのアクセスを許可するため、管理プロセッサエレメントが意図外にＰＥガードの保護領域の設定（第３の設定値）を変更することを防止することができる。従って、実施の形態２にかかるプロセッサエレメントによれば、管理プロセッサエレメントの誤動作及び通常プロセッサエレメントの誤動作のいずれに対しても第３の設定値の変更を防止して、プロセッサシステムの信頼性を向上させることができる。
【００６７】
実施の形態３
実施の形態３では、実施の形態２にかかるプロセッサシステムをさらに変形させた例について説明する。図１１に実施の形態３にかかるプロセッサシステムのブロック図を示す。なお、実施の形態３の説明において、実施の形態１、２において説明した構成要素については、同じ符号を付して説明を省略する。
【００６８】
図１１に示すように、実施の形態３にかかるプロセッサシステムでは、プロセッサエレメントＰＥａが、冗長動作が可能なように構成される。冗長動作とは、ソフトウェア的には一つのプロセッサエレメントとして動作するが、ハードウェアとしては多重化された構成又は検査回路等が付加された構成により高信頼な動作を行う動作である。そして、実施の形態３にかかるプロセッサシステムでは、プロセッサエレメントＰＥａの冗長動作の結果を比較する比較部３を有する。比較部３は、冗長動作による２つの演算結果を比較して、２つの演算結果が不一致である場合にエラー信号を出力する。つまり、実施の形態３にかかるプロセッサシステムは、管理プロセッサエレメントとして動作するプロセッサエレメントＰＥａが、実行したプログラムのエラーを検出するエラー検出構成を有する。
【００６９】
さらに、実施の形態３にかかるプロセッサシステムは、管理プロセッサエレメント（例えば、プロセッサエレメントＰＥａ）においてエラーが検出された場合に、エラーが検出された管理プロセッサエレメントＰＥａを停止するシステムコントローラ５１を有する。図１１に示す例では、システムコントローラ５１は、比較部３がエラー信号を出力した場合に、プロセッサエレメントＰＥａ〜ＰＥｃに出力するストップ信号ＳＴＰをイネーブル状態とする。そして、プロセッサエレメントＰＥａ〜ＰＥｃは、ストップ信号ＳＴＰがイネーブル状態となったことに応じて、動作を停止する。また、システムコントローラ５１は、プロセッサシステムの外部にエラーが発生したことを通知する構成を有する。
【００７０】
上記説明より、実施の形態３にかかるプロセッサシステムは、管理プロセッサエレメントで不具合或いはプログラムの改ざんがなされた等の事象が生じた場合に、当該事象をエラーとして検出し、プロセッサシステムの動作を停止することができる。このように、エラー発生時にプロセッサシステムを停止することで、エラーに起因する被害が拡大することを防止することができる。
【００７１】
実施の形態４
実施の形態４では、実施の形態３にかかるプロセッサシステムをさらに変形させた例について説明する。図１２に実施の形態４にかかるプロセッサシステムのブロック図を示す。なお、実施の形態４の説明において、実施の形態１〜３において説明した構成要素については、同じ符号を付して説明を省略する。
【００７２】
実施の形態４にかかるプロセッサシステムでは、複数のプロセッサエレメントのいずれか一つを管理プロセッサエレメントとするが、管理プロセッサエレメントに不具合が生じた場合には管理プロセッサエレメントとして設定するプロセッサエレメントを他のプロセッサエレメントに移行させる。このような動作を行うために、実施の形態４にかかるプロセッサシステムでは、システムコントローラ５１に代えてシステムコントローラ５２を有する。
【００７３】
図１２に示すように、実施の形態４にかかるプロセッサシステムでは、プロセッサエレメントＰＥａ〜ＰＥｃがそれぞれコード判定部４、６、８を有する。また、プロセッサエレメントＰＥａ、ＰＥｃは、冗長動作が可能なように構成される。また、このプロセッサエレメントＰＥａ、ＰＥｃに対応して比較部５、７が設けられる。比較部５、７は、冗長動作による２つの演算結果を比較して、２つの演算結果が不一致である場合にエラー信号を出力する。つまり、実施の形態４にかかるプロセッサシステムは、プロセッサエレメントＰＥａ、ＰＥｃが、実行したプログラムのエラーを検出するエラー検出構成を有する。
【００７４】
また、コード判定部４、６、８は、実施の形態１にかかるコード判定部１と実質的に同じ動作をするが、システムコントローラ５２が出力するセーフモード信号ＳＭａ〜ＳＭｃにより動作の有効状態と無効状態とが制御される。
【００７５】
システムコントローラ５２は、セーフモード信号ＳＭａ〜ＳＭｃと、ストップ信号ＳＴＰａ〜ＳＴＰｃを出力する。このとき、システムコントローラ５２は、セーフモード信号ＳＭａ〜ＳＭｃのいずれか一つをイネーブル状態とする。そして、システムコントローラ５２は、イネーブル状態のセーフモード信号を与えたプロセッサエレメントがエラー信号を出力した場合、エラーを通知したプロセッサエレメントに対するストップ信号をイネーブル状態として、エラーを通知したプロセッサエレメントを停止させる。その後、システムコントローラ５２は、動作を停止したプロセッサエレメント以外のプロセッサエレメントの一つに出力するセーフモード信号をイネーブル状態とする。これにより、プロセッサシステムは、管理プロセッサエレメントとして設定するプロセッサエレメントに不具合が生じた場合には、管理プロセッサエレメントとして設定するプロセッサエレメントを他のプロセッサエレメントに移す。
【００７６】
ここで、システムコントローラ５２の動作の一例についてさらに詳細に説明する。システムコントローラ５２の動作の一例を示すフローチャートを図１３に示す。図１３に示すように、実施の形態４のプロセッサシステムでは、動作を開始すると、まず、システムコントローラ５２がセーフモード信号ＳＭａをイネーブル状態（例えば、１）とし、セーフモード信号ＳＭｂ、ＳＭｃをディスイネーブル状態（例えば、０）とする（ステップＳ１）。これにより、実施の形態４のプロセッサシステムではプロセッサエレメントＰＥａが管理プロセッサエレメントとして動作し、プロセッサエレメントＰＥｂ、ＰＥｃを通常プロセッサエレメントとして動作する（ステップＳ２）。
【００７７】
続いて、プロセッサエレメントＰＥａにおいてエラーが検出された場合、システムコントローラ５２は、ブロック内部で保持している故障検出ビットＤＦａを１、故障検出ビットＤＦｂ、ＤＦｃを０とし、プロセッサエレメントＰＥａに対するストップ信号ＳＴＰａをイネーブル状態とし、ストップ信号ＳＴＰｂ、ＳＴＰｃをディスイネーブル状態とする（ステップＳ３）。これにより、プロセッサエレメントＰＥａは、動作を停止する（ステップＳ４）。
【００７８】
続いて、システムコントローラ５２は、セーフモード信号ＳＭｂをイネーブル状態とし、セーフモード信号ＳＭａ、ＳＭｃをディスイネーブル状態とする（ステップＳ５）。これにより、実施の形態４のプロセッサシステムではプロセッサエレメントＰＥｃが管理プロセッサエレメントとして動作し、プロセッサエレメントＰＥｂを通常プロセッサエレメントとして動作する（ステップＳ６）。
【００７９】
続いて、プロセッサエレメントＰＥｃにおいてエラーが検出された場合、システムコントローラ５２は、ブロック内部で保持している故障検出ビットＤＦａ、ＤＦｃを１、故障検出ビットＤＦｃを０とし、プロセッサエレメントＰＥｃに対するストップ信号ＳＴＰｃをイネーブル状態とし、ストップ信号ＳＴＰｃをディスイネーブル状態とする（ステップＳ７）。これにより、プロセッサエレメントＰＥｃは、動作を停止する（ステップＳ８）。
【００８０】
続いて、システムコントローラ５２は、セーフモード信号ＳＭｃをイネーブル状態とし、セーフモード信号ＳＭａ、ＳＭｂをディスイネーブル状態とする（ステップＳ９）。これにより、実施の形態４のプロセッサシステムではプロセッサエレメントＰＥｂが管理プロセッサエレメントとして動作する（ステップＳ１０）。
【００８１】
このように、動作可能なプロセッサエレメントが一つになってしまった場合、プロセッサシステムが搭載されるシステム全体の動作を正常に動作する処理のみを行って、処理の完了後にシステム全体を停止させることが好ましい。エラーを検出する機構を有しないプロセッサエレメントは、処理の信頼性が低いため、このようなプロセッサエレメントにより動作を継続した場合、システム全体の信頼性が損なわれる危険性があるためである。
【００８２】
また、図１３に示すフローチャートでは説明を省略したが、管理プロセッサエレメントとして設定するプロセッサエレメントを変更した場合、プロセッサシステムに対してリセット処理を行わせて、コード判定部、セイフティガード、ＰＥガードの動作を行うための設定値を再設定することが好ましい。これは、コード判定部において判定される特定コード領域のアドレス範囲及びセイフティガードが保護する特定データ領域は、変更前の管理プロセッサが利用するプロセッサエレメント固有領域に配置されているため、この設定を変更後の管理プロセッサエレメントに合わせて変更する必要があるためである。
【００８３】
上記説明より、実施の形態４にかかるプロセッサシステムでは、管理プロセッサエレメントにおいてエラーが生じた場合には、管理プロセッサエレメントとして設定するプロセッサエレメントを他のプロセッサエレメントに移す。これにより、管理プロセッサエレメントとして設定される一つのプロセッサエレメントに故障が生じた場合などにプロセッサシステムを完全に停止させることなく、継続することができる。
【００８４】
また、実施の形態４にかかるプロセッサシステムでは、エラーを検出する機構を有するプロセッサエレメント（このようなプロセッサエレメントを高信頼プロセッサエレメントと称す）が複数ある場合、管理プロセッサエレメントとして設定するプロセッサエレメントを高信頼プロセッサエレメントから優先して選択する。これにより、プロセッサシステムの信頼性を維持しながら、動作を継続することが可能になる。
【００８５】
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。例えば、上記説明における第１〜第３の設定値の設定手順については、詳細には説明しなかったが、第１〜第３の設定値は、プロセッサシステムのリセット動作の後の初期値設定処理で行うことが好ましい。また、ＰＥガードの設定値である第３の設定値については、管理プロセッサエレメントにより値を変更できる構成であることが好ましい。プロセッサシステムのメモリ空間マップを柔軟に変更し、プロセッサシステムの構成の柔軟性を高めることができるためである。
【符号の説明】
【００８６】
１、４、６、８    コード判定部
２    演算部
３、５、７    比較部
１０    命令フェッチ制御部
１１    命令デコード部
１２    演算実行部
１３    ライトバック制御部
１４    レジスタファイル
１５    バス制御部
１６    特定コード領域判定部
１７    特定コード領域設定レジスタ
２０〜２２、２４〜２６    セイフティガード
２３    周辺バスブリッジ
３０    特定データ領域設定レジスタ
３１    特定データ領域判定部
３２、４０    アクセス制御回路
４１    ＰＥガード
４２、４４、４６    固有領域設定レジスタ
４３、４５、４７    固有領域判定部
５１、５２    システムコントローラ
ＡＤＤ    アクセスアドレス
ＡＳ１    特定データ領域信号
ＡＳａ〜ＡＳｃ    固有領域信号
ＣＩＤ    特定コード領域識別信号
ＤＥＴ、ＤＥＴａ〜ＤＥＴｃ    検出信号
ＥＮ１、ＥＮａ〜ＥＮｃ    イネーブル信号
ＥＲＲ    エラー応答信号
ＰＣ    プログラムカウント値
ＰＥＩＤ    プロセッサエレメント識別信号
ＰＥ、ＰＥａ〜ＰＥｃ    プロセッサエレメント
ＲＱ    アクセス要求
ＳＣ    特定プログラムカウント範囲値
ＳＭａ〜ＳＭｃ    セーフモード信号
ＳＴＰ、ＳＴＰａ〜ＳＴＰｃ    ストップ信号
【図１】
2013008145.tif 000003
【図２】
2013008145.tif 000004
【図３】
2013008145.tif 000005
【図４】
2013008145.tif 000006
【図５】
2013008145.tif 000007
【図６】
2013008145.tif 000008
【図７】
2013008145.tif 000009
【図８】
2013008145.tif 000010
【図９】
2013008145.tif 000011
【図１０】
2013008145.tif 000012
【図１１】
2013008145.tif 000013
【図１２】
2013008145.tif 000014
【図１３】
2013008145.tif 000015