説明

プロセッサシステム及びその起動方法

【課題】冗長プロセッサエレメントが実行するプログラムの信頼性を保証すること。
【解決手段】冗長機能を有する第1のプロセッサエレメントPEaと、第2のプロセッサエレメントPEbと、第1及び第2のプロセッサエレメントPEa、PEbに共用され、第1のプロセッサエレメントPEaが実行するプログラムが格納された第1の記憶部と、前記プログラムが格納された領域に対し、第2のプロセッサエレメントPEbがアクセスできないように設定可能なガード部PGと、を備え、第1のプロセッサエレメントPEaが、ガード部PGを設定した後、第2のプロセッサエレメントPEbが起動するプロセッサシステム。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、複数のプロセッサエレメントを含むプロセッサシステム及びその起動方法に関する。
【背景技術】
【0002】
近年、各種制御に用いられるマイクロコントローラ(いわゆるマイコン)では、高性能化と低消費電力化とを両立させるため、複数のプロセッサエレメント(PE:Processor Element)を含むプロセッサシステムが採用されている。そして、例えば自動車のエンジン制御やブレーキ制御などの用途のプロセッサシステムでは、非常に高度な信頼性が要求されている。具体的には、プロセッサエレメントの故障やノイズによる暴走などのアクシデントを検出するためのセーフティ機能と、プログラムの改竄などの意図的な攻撃を防止するためのセキュリティ機能とが要求されている。
【0003】
セーフティ機能としては、上記プロセッサエレメントのアクシデントを検出するために、プロセッサエレメントに冗長機能を設ける手法が知られている。
セキュリティ機能としては、通常のプロセッサエレメントであるノーマルコアの他に高いセキュリティ性を有するプロセッサエレメントであるセキュアコアを設ける手法が特許文献1に開示されている。具体的には、まずセキュアコアが起動し、システム監査を行なって、システムに異常がなければ、ノーマルコアが起動する。
なお、特許文献2〜5には、あるプロセッサエレメントを起動した後、他のプロセッサエレメントを起動する手法が開示されている。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2006−018528号公報
【特許文献2】特開2006−221632号公報
【特許文献3】特開2006−309332号公報
【特許文献4】特開2002−312334号公報
【特許文献5】特開平4−296964号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
発明者は以下の課題を見出した。
複数のプロセッサエレメントを備えるプロセッサシステムでは、上述のセーフティ機能に関して、例えば、冗長機能を有しない通常のプロセッサエレメントが暴走することにより、冗長機能を有するプロセッサエレメント(以下、冗長プロセッサエレメント)が実行するプログラムが破壊されてしまうおそれがあった。つまり、冗長プロセッサエレメントが実行するプログラムの信頼性が保証されていなかった。
【課題を解決するための手段】
【0006】
本発明に係るプロセッサシステムの一態様は、冗長機能を有する第1のプロセッサエレメントと、第2のプロセッサエレメントと、前記第1及び第2のプロセッサエレメントに共用され、前記第1のプロセッサエレメントが実行する第1のプログラムが格納された第1の記憶部と、前記第1のプログラムが格納された領域に対し、前記第2のプロセッサエレメントがアクセスできないように設定可能なガード部と、を備え、前記第1のプロセッサエレメントが、前記ガード部を設定した後、前記第2のプロセッサエレメントが起動するものである。
【0007】
本発明に係るプロセッサシステムは、第1のプロセッサエレメントが実行するプログラムが格納された領域に対し、第2のプロセッサエレメントがアクセスできないように設定可能なガード部を備えている。そして、当該プロセッサシステムの起動時に、第1のプロセッサエレメントが、前記ガード部を設定した後、第2のプロセッサエレメントが起動する。そのため、ガード部を設定する前に第2のプロセッサエレメントが暴走し、第1のプロセッサエレメントが実行するプログラムを破壊してしまうおそれがない。そのため、第1のプロセッサエレメントが実行するプログラムの信頼性を保証することができる。
【発明の効果】
【0008】
本発明に係るプロセッサシステムによれば、冗長プロセッサエレメントが実行するプログラムの信頼性を保証することができる。
【図面の簡単な説明】
【0009】
【図1】本発明の実施の形態1に係るプロセッサシステムの全体を示すブロック図である。
【図2】本発明の実施の形態1に係るプロセッサシステムのブロック図である。
【図3】本発明の実施の形態1に係るPEガード24のブロック図である。
【図4】本発明の実施の形態1に係るプロセッサシステムの起動方法を説明するための模式的ブロック図である。
【図5】本発明の実施の形態1に係るプロセッサシステムの起動方法を説明するためのタイミングチャートである。
【図6】本発明の実施の形態1の変形例に係るプロセッサシステムの起動方法を説明するための模式的ブロック図である。
【図7】本発明の実施の形態1の他の変形例に係るプロセッサシステムの起動方法を説明するための模式的ブロック図である。
【図8】本発明の実施の形態2に係るプロセッサシステムの起動方法を説明するための模式的ブロック図である。
【図9】本発明の実施の形態2に係るプロセッサシステムの起動方法を説明するためのタイミングチャートである。
【図10】本発明の実施の形態2の変形例に係るプロセッサシステムの起動方法を説明するための模式的ブロック図である。
【図11】本発明の実施の形態3に係るプロセッサシステムの起動方法を説明するための模式的ブロック図である。
【発明を実施するための形態】
【0010】
以下、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。ただし、本発明が以下の実施の形態に限定される訳ではない。また、説明を明確にするため、以下の記載及び図面は、適宜、簡略化されている。
【0011】
(実施の形態1)
以下、図面を参照して本発明の実施の形態について説明する。まず、本発明を適用可能なプロセッサシステム全体の概要について説明する。なお、以下で説明するプロセッサシステムはあくまでも一例であり、当然のことながら、他のプロセッサシステムに本発明を適用することも可能である。
【0012】
図1は、本実施の形態に係るプロセッサシステムの全体を示すブロック図である。図1に示すように、本実施の形態に係るプロセッサシステムは、複数のプロセッサエレメントを用いることにより処理性能の向上を実現するものである。また、本発明に係るプロセッサシステムでは、機能毎に3つのサブシステムに分類される。図1に示すように、本発明に係るプロセッサシステムは、メインPEサブシステム、IO(Input Output)サブシステム、HSM(Hardware Security Module)サブシステムを有する。
【0013】
メインPEサブシステムは、予め内部に記憶されたプログラム又は外部から読み込んだプログラムに基づいて、本プロセッサシステムに求められる具体的な処理を行う。IOサブシステムは、メインPEサブシステム又はHSMサブシステムにより用いられる周辺装置が動作するための各種処理を行う。HSMサブシステムは、プロセッサシステムにおいて行われている処理のセキュリティ検証処理を行う。また、本実施の形態に係るプロセッサシステムでは、各サブシステムにクロック信号CLKa、CLKb、CLKc、CLKpが供給される。
【0014】
図1に示す例では、メインPEサブシステムにはクロック信号CLKaが供給され、IOサブシステムにはクロック信号CLKb、CLKpが供給され、HSMサブシステムにはクロック信号CLKcが供給される。これらのクロック信号CLKa、CLKb、CLKcは、システム全体構成の仕様に応じて、同一の周波数であっても、異なる周波数であってもよい。また、クロック信号CLKpは、周辺装置に与えられ、IOサブシステムに与えられるクロック信号CLKbとは非同期のクロック信号である。
【0015】
次に、より具体的に各サブシステムについて説明する。
メインPEサブシステムは、メインPEである2つのプロセッサエレメントPEa、PEb、第1の命令メモリ、データメモリ、システムバスを有する。メインPEサブシステムでは、プロセッサエレメントPEa、PEb、第1の命令メモリ及びデータメモリは、システムバスを介して互いに接続される。
【0016】
第1の命令メモリには、プログラムが格納されている。データメモリは、外部から読み込んだプログラム及びプロセッサシステム内で処理されたデータを一時的に記憶する。プロセッサエレメントPEa、PEbは、それぞれ第1の命令メモリ、データメモリ等を利用しながらプログラムを実行する。ここで、プロセッサエレメントPEaが冗長機能を有するプロセッサエレメントであるのに対し、プロセッサエレメントPEbは冗長機能を有さない通常のプロセッサエレメントである。
【0017】
冗長プロセッサエレメントPEaは、ハードウェア的には、同一構成の2つのプロセッサエレメントが一組になった(多重化された)構成もしくは通常のプロセッサエレメントに検査回路等が付加された構成を備えている。一方、ソフトウェア的には一つのプロセッサエレメントとして動作する。このような構成により、信頼性の高い動作を行うことができる。冗長動作の一例として、多重化された回路の出力結果が同一であるか否かをクロック毎に比較するロックステップ動作がある。
【0018】
IOサブシステムは、周辺バス、入出力プロセッサエレメント(IOPE)、周辺装置を有する。IOPEは、周辺装置を利用する上で必要な処理を行う。なお、IOPEはメインPEシステムの第1の命令メモリに記憶されているプログラムに基づき動作してもよく、他の記憶領域に記憶されているプログラムに基づき動作してもよい。周辺バスは、IOPE及び周辺装置を互いに接続する。
【0019】
図1では、周辺装置として、CANユニット、FLEXRAYユニット、SPIユニット、UARTユニット、ADCユニット、WDユニット、タイマを例示した。CANユニットは、自動車の車内通信規格の一つであるCAN(Controller Area Network)に基づく通信を行う。FLEXRAYユニットは、自動車の車内通信規格の一つであるFlex Ray規格に基づく通信を行う。SPIユニットは、3線又は4線のシリアル通信であるSPI(System Packet Interface)規格の通信を行う。UART(Universal Asynchronous Receiver Transmitter)ユニットは、調歩同期方式によるシリアル信号をパラレル信号に変換し、また、その逆方向の変換を行う。ADC(Analog to Digital Converter)ユニットは、センサ等から与えられるアナログ信号をデジタル信号に変換する。WD(Watchdog)ユニットは、所定の期間が経過したことを検出するウォッチドックタイマ機能を提供する。タイマは、時間の計測、波形生成などを行う。図1の例では、上記ユニットを周辺装置としたが、他の機能を有するユニットを含むことも可能であり、また、一部のユニットのみを有する場合も考えられる。
【0020】
HSMサブシステムは、セキュリティプロセッサエレメントSPE(Security Processor Element)と、第2の命令メモリとを有する。セキュリティプロセッサエレメントSPEは、システムバスに接続される。セキュリティプロセッサエレメントSPEは、メインPEサブシステムで実行されているプログラムの正当性又はプログラムを実行して得られるデータの正当性を判断する。第2の命令メモリには、プログラムが格納される。また、第2の命令メモリは、セキュリティプロセッサエレメントSPEのみがアクセスできるメモリである。第2の命令メモリは、第1の命令メモリと物理的に独立して設けられている必要はないが、セキュリティプロセッサエレメントSPEのみがアクセス可能な領域として、アクセス制御されている必要がある。つまり、第2の命令メモリは、第1の命令メモリと少なくとも論理的には独立している必要がある。
【0021】
上記説明の通り、図1に示したプロセッサシステムは、複数のプロセッサエレメントにより処理能力を向上させつつ、予期しない故障、予期しないプログラムの改変等の不具合に対して高い耐性を有している。なお、図1に示したプロセッサシステムは、本発明が適用されるプロセッサシステムの一例を示したものであり、例えば、命令メモリ及びデータメモリの配置及びシステム中の個数は、そのシステムのアーキテクチャにより種々考えられる。また、メモリと各プロセッサエレメントとの接続は、例えば、複数のバスを介して接続される構成であってもよく、バスを介さずにプロセッサエレメントと接続される構成であってもよく、アーキテクチャの設計により種々の構成が考えられ得る。
【0022】
図2は、実施の形態1に係るプロセッサシステムのブロック図である。図2に示すように、実施の形態1に係るプロセッサシステムは、プロセッサエレメントPEa、PEb、システムバス、周辺バスブリッジ23、PEガード24〜26、第1の命令メモリ、データメモリ、周辺バス、I/O(Input/Output)、WDユニット、タイマを有する。ここで、システムバス、第1の命令メモリ、データメモリ、周辺バス、WDユニット、タイマについては、図1に示したブロック図において説明したものと同じであるためここでは説明を省略する。また、図2のI/Oは、図1で示したCANユニット、FLEXRAYユニット、SPIユニット、UARTユニット、ADCユニットを含むものとする。
【0023】
PEガード24〜26は、1つのプロセッサエレメントのみにアクセスが許可されたアドレス範囲に対し、他のプロセッサエレメントからのアクセス要求があった場合、このアクセス要求を無効にする。具体的には、PEガード24〜26は、信頼性の高い冗長機能を有するプロセッサエレメント(以下、冗長プロセッサエレメントとも称す)PEaのみがアクセス可能なアドレス範囲に対し、プロセッサエレメントPEbからアクセス要求があった場合、このアクセス要求を無効にする。
【0024】
ここで、図3を用いて、PEガード24〜26の詳細な構成について説明する。PEガード24〜26は同じ構成であるため、ここでは、PEガード24を例にPEガードの詳細について説明する。図3は、実施の形態1に係るPEガード24のブロック図である。
【0025】
図3に示すように、PEガード24は、アクセス制御回路40、PEa固有領域設定レジスタ42、PEa固有領域判定部43を有する。
PEa固有領域設定レジスタ42には、冗長プロセッサエレメントPEaのみがアクセス可能なデータ格納領域(アドレス範囲)を規定する設定値(以下、PEa固有領域設定値と称す)ASaが格納される。PEa固有領域設定レジスタ42は、このPEa固有領域設定値ASaを出力する。
【0026】
また、PEa固有領域設定レジスタ42は、PEa固有領域設定値ASaが格納されていない状態(例えば、プロセッサシステムの起動時やリセット時)では、イネーブル信号ENaをディスエーブル状態とし、PEa固有領域設定値ASaが格納された後にイネーブル信号ENaをイネーブル状態とする。なお、PEa固有領域設定レジスタ42は、アクセス対象回路に内蔵される構成としてもよい。
【0027】
PEa固有領域判定部43は、イネーブル信号ENaがイネーブル状態の場合、判定を実行し、イネーブル信号ENaがディスエーブル状態の場合、判定を実行しない。
PEa固有領域判定部43は、アクセス要求RQと共にプロセッサエレメントPEa、PEbなどのバスマスタが出力するプロセッサエレメント識別信号PEIDを受信する。
そして、PEa固有領域判定部43は、プロセッサエレメント識別信号PEIDがプロセッサエレメントPEbであることを示し、かつ、アクセス対象回路に対するアクセスアドレスADDがPEa固有領域設定値ASaで特定されるアドレス範囲にある場合、検出信号DETaをディスエーブル状態とする。それ以外の場合、PEa固有領域判定部43は、検出信号DETaをイネーブル状態とする。なお、PEa固有領域判定部43は、イネーブル信号ENaがディスエーブル状態の場合、検出信号DETaをディスエーブル状態とする。
【0028】
アクセス制御回路40は、PEa固有領域判定部43が出力する検出信号DETaの状態を考慮してアクセス制御を行う。具体的には、検出信号DETaがイネーブル状態である場合、アクセス要求RQをアクセス対象回路に伝達する。一方、検出信号DETaがディスエーブル状態である場合、アクセス要求RQに対してエラー応答信号ERRを出力し、当該アクセス要求RQを無効とする。図3の例では、プロセッサエレメントPEbからPEa固有領域設定値ASaで特定されるアドレス範囲へのアクセスが遮断される。つまり、PEガードが設けられているため、信頼性の高い冗長プロセッサエレメントPEaが実行するプログラムが、通常のプロセッサエレメントPEbにより書き換えられるおそれがない。従って、プロセッサシステムの信頼性を向上させることができる。
【0029】
また、PEガードを設定するためのPEa固有領域設定値ASa自体が、信頼性の高い冗長プロセッサエレメントPEaにより、PEa固有領域設定値ASaで特定されるアドレス範囲に格納される。そのため、PEa固有領域設定値ASaは一度設定されれば、通常のプロセッサエレメントPEbの誤動作により変更されるおそれがない。従って、プロセッサシステムの信頼性を向上させることができる。
【0030】
次に、図4、5を用いて、本実施の形態に係るプロセッサシステムの起動方法について説明する。上述の通り、本実施の形態に係るプロセッサシステムでは、PEガードによりプロセッサシステムの信頼性を向上させることができる。しかしながら、PEガードが設定される前に、通常のプロセッサエレメントPEbが起動してしまうと、PEガードが設定されるまでの間に、プロセッサエレメントPEbにより、信頼性の高い冗長プロセッサエレメントPEaが実行するプログラムが書き換えられるおそれがある。
【0031】
そのため、本実施の形態に係るプロセッサシステムでは、システム起動時にまず信頼性の高い冗長プロセッサエレメントPEaが起動し、上述のPEガードを設定する。その後、通常のプロセッサエレメントPEbが起動する。つまり、通常のプロセッサエレメントPEbが起動する前に、PEガードのPEa固有領域設定値ASaが設定される。従って、上述の通り、プロセッサエレメントPEbの誤動作により、冗長プロセッサエレメントPEaが実行するプログラムやPEa固有領域設定値ASaが書き換えられるおそれがない。
【0032】
図4は、実施の形態1に係るプロセッサシステムの起動方法を説明するための模式的ブロック図である。図4に示すように、冗長プロセッサエレメントPEaは、レジスタREG1、ORゲートOR1を備えている。図4におけるPEガードPGは、図2に示すように、PEガード24〜26を含んでいる。図4における共用リソースSRは、冗長プロセッサエレメントPEaやプロセッサエレメントPEb等に共用されるリソースである。本実施の形態では、共用リソースSRは、図2に示すように、第1の命令メモリ、データメモリ、周辺バスブリッジ23、周辺バス、I/O、WDユニット、タイマを含んでいる。
【0033】
図4に示すように、ハードウェアリセット信号HWRSTが、冗長プロセッサエレメントPEaに入力されている。この例では、ハードウェアリセット信号HWRSTは、H(High)のときリセット、L(Low)のときリセット解除を意味する。また、ハードウェアリセット信号HWRSTによりレジスタREG1の値がHに初期化される。ハードウェアリセット信号HWRSTが、HからLに切り換わると、冗長プロセッサエレメントPEaが起動し、共有リソースSR内に格納されたプログラムに基づいて動作を開始する。ここで、冗長プロセッサエレメントPEaは、PEガードPGを設定する。具体的には、図3に示したPEa固有領域設定レジスタ42に対してPEa固有領域設定値ASaを設定する。
【0034】
冗長プロセッサエレメントPEaは、PEガードPGを設定した後、レジスタREG1の値をHからLへ書き換える。図4に示すように、このレジスタREG1の値は、ソフトウェアリセット信号SWRST1としてORゲートOR1の一方の入力に入力されている。ORゲートOR1の他方の入力には、ハードウェアリセット信号HWRSTが入力されている。ORゲートOR1の出力からは、プロセッサエレメントPEbを制御するためのリセット信号RST1が出力される。つまり、ORゲートOR1は、プロセッサエレメントPEbの起動制御信号を生成する起動制御回路である。従って、ハードウェアリセット信号HWRSTが、HからLに切り換わると、冗長プロセッサエレメントPEaがPEガードPGを設定し、その後レジスタREG1の値をHからLへ書き換える。そして、リセット信号RST1がHからLに切り換わると、プロセッサエレメントPEbが起動する。
【0035】
図5は、実施の形態1に係るプロセッサシステムの起動方法を説明するためのタイミングチャートである。図5の上から、ハードウェアリセット信号HWRST、ソフトウェアリセット信号SWRST1、リセット信号RST1を示している。
まず、ハードウェアリセット信号HWRSTが、HからLに切り換わると、上述の通り、冗長プロセッサエレメントPEaが起動し、PEガードPGを設定する。
次に、冗長プロセッサエレメントPEaがPEガードPGを設定した後、レジスタREG1の値をHからLへ書き換える。
最後に、レジスタREG1の値がHからLへ書き換わると、リセット信号RST1もHからLに切り換わり、プロセッサエレメントPEbが起動する。
【0036】
このように、本実施の形態に係るプロセッサシステムでは、システム起動時にまず信頼性の高い冗長プロセッサエレメントPEaが起動し、上述のPEガードを設定する。その後、通常のプロセッサエレメントPEbが起動する。つまり、通常のプロセッサエレメントPEbが起動する前に、PEガードのPEa固有領域設定値ASaが設定されている。従って、上述の通り、プロセッサエレメントPEbの誤動作により、冗長プロセッサエレメントPEaが実行するプログラムやPEa固有領域設定値ASaが書き換えられるおそれがなく信頼性が保証される。
【0037】
(実施の形態1の変形例)
次に、図6を用いて、実施の形態1の変形例について説明する。図6は、実施の形態1の変形例に係るプロセッサシステムの起動方法を説明するための模式的ブロック図である。図4では、冗長プロセッサエレメントPEaが、ORゲートOR1を備えていたが、図6では、冗長プロセッサエレメントPEaがORゲートOR1を備える代わりに、プロセッサエレメントPEbがORゲートOR2を備えている。つまり、プロセッサエレメントPEbを起動するためのリセット信号RST1が、図4では、冗長プロセッサエレメントPEaにおいて生成されていたのに対し、図6では、プロセッサエレメントPEbにおいて生成されている。そのため、図4では、ハードウェアリセット信号HWRSTが、冗長プロセッサエレメントPEaのみに入力されていたのに対し、図6では、冗長プロセッサエレメントPEa及びプロセッサエレメントPEbの両方に入力されている。
【0038】
動作については図4の場合と同様である。まず、ハードウェアリセット信号HWRSTによりレジスタREG1の値がHに初期化される。次に、ハードウェアリセット信号HWRSTが、HからLに切り換わると、冗長プロセッサエレメントPEaが起動し、PEガードPGを設定する。具体的には、図3に示したPEa固有領域設定レジスタ42に対してPEa固有領域設定値ASaを設定する。冗長プロセッサエレメントPEaがPEガードPGを設定した後、レジスタREG1の値をHからLへ書き換える。
【0039】
図6に示すように、このレジスタREG1の値は、ソフトウェアリセット信号SWRST1としてORゲートOR2の一方の入力に入力されている。ORゲートOR2の他方の入力には、ハードウェアリセット信号HWRSTが入力されている。ORゲートOR2の出力からは、プロセッサエレメントPEbを起動するためのリセット信号RST1が出力される。従って、ハードウェアリセット信号HWRSTが、HからLに切り換わると、冗長プロセッサエレメントPEaがPEガードPGを設定し、その後レジスタREG1の値をHからLへ書き換える。そして、リセット信号RST1がHからLに切り換わると、プロセッサエレメントPEbが起動する。
【0040】
このように、本実施の形態の変形例に係るプロセッサシステムでも、システム起動時にまず信頼性の高い冗長プロセッサエレメントPEaが起動し、上述のPEガードを設定する。その後、通常のプロセッサエレメントPEbが起動する。つまり、通常のプロセッサエレメントPEbが起動する前に、PEガードのPEa固有領域設定値ASaが設定されている。従って、上述の通り、プロセッサエレメントPEbの誤動作により、冗長プロセッサエレメントPEaが実行するプログラムやPEa固有領域設定値ASaが書き換えられるおそれがなく信頼性が保証される。
【0041】
(実施の形態1の他の変形例)
次に、図7を用いて、実施の形態1の他の変形例について説明する。図7は、実施の形態1の他の変形例に係るプロセッサシステムの起動方法を説明するための模式的ブロック図である。図7では、図4の構成に加えて、ANDゲートAN1をさらに備えている。図4では、ORゲートOR1から出力されるリセット信号RST1により、プロセッサエレメントPEbの起動を制御していた。これに対し、図7では、ORゲートOR1から出力されるリセット信号RST1を用いて、冗長プロセッサエレメントPEaによるPEガードPGの設定が終了するまで、プロセッサエレメントPEbへのクロック信号CLKbの供給を停止する。また、図4では、ハードウェアリセット信号HWRSTが、冗長プロセッサエレメントPEaのみに入力されていたのに対し、図7では、冗長プロセッサエレメントPEa及びプロセッサエレメントPEbの両方に入力されている。
【0042】
まず、ハードウェアリセット信号HWRSTによりレジスタREG1の値がHに初期化される。次に、ハードウェアリセット信号HWRSTが、HからLに切り換わると、冗長プロセッサエレメントPEaが起動し、PEガードPGを設定する。具体的には、図3に示したPEa固有領域設定レジスタ42に対してPEa固有領域設定値ASaを設定する。ここで、プロセッサエレメントPEbにもハードウェアリセット信号HWRSTが入力されているため、プロセッサエレメントPEbのリセットも解除されているが、クロック信号の供給が停止されているため起動しない。
【0043】
冗長プロセッサエレメントPEaは、PEガードPGを設定した後、レジスタREG1の値をHからLへ書き換える。図7に示すように、このレジスタREG1の値は、ソフトウェアリセット信号SWRST1としてORゲートOR1の一方の入力に入力されている。ORゲートOR1の他方の入力には、ハードウェアリセット信号HWRSTが入力されている。ORゲートOR1の出力からは、リセット信号RST1が出力される。
【0044】
ここで、ANDゲートAN1の一方入力には、ORゲートOR1から出力されるリセット信号RST1の反転信号が入力されている。ANDゲートAN1の他方入力には、クロック信号CLKbが入力されている。そして、ANDゲートAN1から出力されるクロック信号がプロセッサエレメントPEbに供給される。ここで、ANDゲートAN1は、プロセッサエレメントPEbへのクロック供給を制御するクロック供給制御回路である。なお、冗長プロセッサエレメントPEaには、クロック信号CLKbが直接入力されている。
【0045】
ハードウェアリセット信号HWRSTが、HからLに切り換わると、冗長プロセッサエレメントPEaがPEガードPGを設定し、その後レジスタREG1の値をHからLへ書き換える。そして、リセット信号RST1がHからLに切り換わると、プロセッサエレメントPEbへのクロック信号の供給が開始され、プロセッサエレメントPEbが起動する。
【0046】
このように、本実施の形態の他の変形例に係るプロセッサシステムでも、システム起動時にまず信頼性の高い冗長プロセッサエレメントPEaが起動し、上述のPEガードを設定する。その後、通常のプロセッサエレメントPEbが起動する。つまり、通常のプロセッサエレメントPEbが起動する前に、PEガードのPEa固有領域設定値ASaが設定されている。従って、上述の通り、プロセッサエレメントPEbの誤動作により、冗長プロセッサエレメントPEaが実行するプログラムやPEa固有領域設定値ASaが書き換えられるおそれがなく信頼性が保証される。
【0047】
(実施の形態2)
次に、図8を用いて、実施の形態2に係るプロセッサシステムについて説明する。
図8は、実施の形態2に係るプロセッサシステムの起動方法を説明するための模式的ブロック図である。本実施の形態に係るプロセッサシステムは、図4と比較して、図1に示したセキュリティプロセッサエレメントSPEを備えている。図8に示すように、セキュリティプロセッサエレメントSPEは、レジスタREG2、ORゲートOR3を備えている。
【0048】
図8におけるSPEプログラム格納領域51は、セキュリティプロセッサエレメントSPEが実行するプログラムが格納された領域であって、図1に示した第2の命令メモリに含まれる。
図8におけるPEaプログラム格納領域52は、冗長プロセッサエレメントPEaが実行するプログラムが格納された領域であって、図1に示した第1の命令メモリに含まれる。
【0049】
まず、ハードウェアリセット信号HWRSTによりレジスタREG1、REG2の値がHに初期化される。次に、ハードウェアリセット信号HWRSTが、HからLに切り換わると、セキュリティプロセッサエレメントSPEが起動し、SPEプログラム格納領域51内に格納されたプログラムに基づいて動作を開始する。ここで、セキュリティプロセッサエレメントSPEは、プロセッサシステム全体を検証する。この際、PEaプログラム格納領域52に格納された冗長プロセッサエレメントPEaが実行するプログラムも検証される。
【0050】
セキュリティプロセッサエレメントSPEは、プログラムを検証した後、レジスタREG2の値をHからLへ書き換える。図8に示すように、このレジスタREG2の値は、ソフトウェアリセット信号SWRST2としてORゲートOR3の一方の入力に入力されている。ORゲートOR3の他方の入力には、ハードウェアリセット信号HWRSTが入力されている。ORゲートOR3の出力からは、冗長プロセッサエレメントPEaを制御するためのリセット信号RST2が出力される。
【0051】
従って、ハードウェアリセット信号HWRSTが、HからLに切り換わると、セキュリティプロセッサエレメントSPEがプログラムを検証し、その後レジスタREG2の値をHからLへ書き換える。そして、リセット信号RST2がHからLに切り換わると、冗長プロセッサエレメントPEaが起動し、PEaプログラム格納領域52に格納されたプログラムに基づいて動作を開始する。ここで、冗長プロセッサエレメントPEaは、PEガードPGを設定する。具体的には、図3に示したPEa固有領域設定レジスタ42に対してPEa固有領域設定値ASaを設定する。
【0052】
冗長プロセッサエレメントPEaは、PEガードPGを設定した後、レジスタREG1の値をHからLへ書き換える。図8に示すように、このレジスタREG1の値は、ソフトウェアリセット信号SWRST1としてORゲートOR1の一方の入力に入力されている。ORゲートOR1の他方の入力には、ハードウェアリセット信号HWRSTが入力されている。ORゲートOR1の出力からは、プロセッサエレメントPEbを制御するためのリセット信号RST1が出力される。従って、ハードウェアリセット信号HWRSTが、HからLに切り換わると、冗長プロセッサエレメントPEaがPEガードPGを設定し、その後レジスタREG1の値をHからLへ書き換える。そして、リセット信号RST1がHからLに切り換わると、プロセッサエレメントPEbが起動する。
【0053】
図9は、実施の形態2に係るプロセッサシステムの起動方法を説明するためのタイミングチャートである。図9の上から、ハードウェアリセット信号HWRST、ソフトウェアリセット信号SWRST2、リセット信号RST2、ソフトウェアリセット信号SWRST1、リセット信号RST1を示している。
まず、ハードウェアリセット信号HWRSTが、HからLに切り換わると、上述の通り、セキュリティプロセッサエレメントSPEが起動し、冗長プロセッサエレメントPEaが実行するプログラムを検証する。
次に、セキュリティプロセッサエレメントSPEはプログラムを検証した後、レジスタREG2の値をHからLへ書き換える。
次に、レジスタREG2の値がHからLへ書き換わると、リセット信号RST2もHからLに切り換わり、冗長プロセッサエレメントPEaが起動し、PEガードPGを設定する。
次に、冗長プロセッサエレメントPEaは、PEガードPGを設定した後、レジスタREG1の値をHからLへ書き換える。
最後に、レジスタREG1の値がHからLへ書き換わると、リセット信号RST1もHからLに切り換わり、プロセッサエレメントPEbが起動する。
【0054】
つまり、本実施の形態に係るプロセッサシステムでは、システム起動時にまずセキュリティプロセッサエレメントSPEが起動し、冗長プロセッサエレメントPEaが実行するプログラムを検証する。次に、冗長プロセッサエレメントPEaが起動し、上述のPEガードを設定する。最後に、通常のプロセッサエレメントPEbが起動する。
【0055】
そのため、冗長プロセッサエレメントPEaが起動する前に、セキュリティプロセッサエレメントSPEにより、冗長プロセッサエレメントPEaが実行するプログラムが検証済である。従って、冗長プロセッサエレメントPEaが改竄されたプログラムを実行するおそれがなく信頼性が保証される。さらに、実施の形態1と同様に、通常のプロセッサエレメントPEbが起動する前に、PEガードのPEa固有領域設定値ASaが設定されている。従って、上述の通り、プロセッサエレメントPEbの誤動作により、冗長プロセッサエレメントPEaが実行するプログラムやPEa固有領域設定値ASaが書き換えられるおそれがなく信頼性が保証される。
【0056】
(実施の形態2の変形例)
次に、図10を用いて、実施の形態2の変形例について説明する。図10は、実施の形態2の変形例に係るプロセッサシステムの起動方法を説明するための模式的ブロック図である。図10では、図8の構成に加えて、ORゲートOR4、スイッチSW1をさらに備えている。また、SPE制御領域53を備えている。このような構成により、例えば当該プロセッサシステムの使用目的・用途等に応じて、セキュリティプロセッサエレメントSPEを当該プロセッサシステムから切り離すことができる。換言すると、物理的にはセキュリティプロセッサエレメントSPEを備えつつ、論理的にセキュリティプロセッサエレメントSPEを無効化することができる。なお、図10では、図8におけるSPEプログラム格納領域51、PEガードPG、共用リソースSRは省略されている。
【0057】
SPE制御領域53からセキュリティプロセッサエレメントSPEを無効化するための制御信号DISが出力される。制御信号DISはORゲートOR4の一方入力に入力される。ORゲートOR4の他方の入力には、ハードウェアリセット信号HWRSTが入力されている。制御信号DISがHの場合、セキュリティプロセッサエレメントSPEに入力されるリセット信号は常時Hとなる。そのため、セキュリティプロセッサエレメントSPEが無効化される。一方、制御信号DISがLの場合、セキュリティプロセッサエレメントSPEに入力されるリセット信号は、ハードウェアリセット信号HWRSTと同じ信号レベルとなる。そのため、セキュリティプロセッサエレメントSPEが有効となる。
【0058】
また、図10に示すように、制御信号DISは、スイッチSW1を切り換えるための制御信号でもある。制御信号DISがHの場合、スイッチSW1はハードウェアリセット信号HWRSTに接続される。その結果、ハードウェアリセット信号HWRSTが、冗長プロセッサエレメントPEa及びORゲートOR1に入力される。つまり、セキュリティプロセッサエレメントSPEが無効化され、図4と同様の構成となる。
【0059】
一方、制御信号DISがLの場合、スイッチSW1はリセット信号RST2に接続される。その結果、リセット信号RST2が、冗長プロセッサエレメントPEa及びORゲートOR1に入力される。つまり、セキュリティプロセッサエレメントSPEが有効となり、図8と同様の構成となる。
【0060】
(実施の形態3)
次に、図11を用いて、実施の形態3に係るプロセッサシステムについて説明する。
図11は、実施の形態3に係るプロセッサシステムの起動方法を説明するための模式的ブロック図である。本実施の形態に係るプロセッサシステムは、セキュリティプロセッサエレメントSPE、冗長プロセッサエレメントPEa、SPEプログラム格納領域51、PEaプログラム格納領域52を備えている。図11に示すように、セキュリティプロセッサエレメントSPEは、レジスタREG2、ORゲートOR3を備えている。
【0061】
図11におけるSPEプログラム格納領域51は、セキュリティプロセッサエレメントSPEが実行するプログラムが格納された領域であって、図1に示した第2の命令メモリの一部である。
図11におけるPEaプログラム格納領域52は、冗長プロセッサエレメントPEaが実行するプログラムが格納された領域であって、図1に示した第1の命令メモリの一部である。
【0062】
まず、ハードウェアリセット信号HWRSTによりレジスタREG2の値がHに初期化される。次に、ハードウェアリセット信号HWRSTが、HからLに切り換わると、セキュリティプロセッサエレメントSPEが起動し、SPEプログラム格納領域51内に格納されたプログラムに基づいて動作を開始する。実施の形態2と同様に、ここで、セキュリティプロセッサエレメントSPEは、プロセッサシステム全体を検証する。この際、PEaプログラム格納領域52に格納された冗長プロセッサエレメントPEaが実行するプログラムも検証される。
【0063】
セキュリティプロセッサエレメントSPEは、プログラムを検証した後、レジスタREG2の値をHからLへ書き換える。図11に示すように、このレジスタREG2の値は、ソフトウェアリセット信号SWRST2としてORゲートOR3の一方の入力に入力されている。ORゲートOR3の他方の入力には、ハードウェアリセット信号HWRSTが入力されている。ORゲートOR3の出力からは、冗長プロセッサエレメントPEaを制御するためのリセット信号RST2が出力される。
【0064】
従って、ハードウェアリセット信号HWRSTが、HからLに切り換わると、セキュリティプロセッサエレメントSPEがプログラムを検証し、その後レジスタREG2の値をHからLへ書き換える。そして、リセット信号RST2がHからLに切り換わると、冗長プロセッサエレメントPEaが起動し、PEaプログラム格納領域52に格納されたプログラムに基づいて動作を開始する。
【0065】
つまり、本実施の形態に係るプロセッサシステムでは、システム起動時にまずセキュリティプロセッサエレメントSPEが起動し、冗長プロセッサエレメントPEaが実行するプログラムを検証する。次に、冗長プロセッサエレメントPEaが起動する。そのため、冗長プロセッサエレメントPEaが起動する前に、セキュリティプロセッサエレメントSPEにより、冗長プロセッサエレメントPEaが実行するプログラムが検証済である。従って、冗長プロセッサエレメントPEaが改竄されたプログラムを実行するおそれがなく信頼性が保証される。
【0066】
以上、実施の形態を参照して本願発明を説明したが、本願発明は上記によって限定されるものではない。本願発明の構成や詳細には、発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
また、上述した発明の実施の形態1、2及びその変形例は、適宜組み合わせることも可能である。
【符号の説明】
【0067】
23 周辺バスブリッジ
24〜26 PEガード
40 アクセス制御回路
42 PEa固有領域設定レジスタ
43 PEa固有領域判定部
51 SPEプログラム格納領域
52 PEaプログラム格納領域
53 SPE制御領域
AN1 ANDゲート
OR1〜OR4 ORゲート
PEa 冗長プロセッサエレメント
PEb プロセッサエレメント
PG PEガード
REG1、REG2 レジスタ
SPE セキュリティプロセッサエレメント
SR 共用リソース
SW1 スイッチ

【特許請求の範囲】
【請求項1】
冗長機能を有する第1のプロセッサエレメントと、
第2のプロセッサエレメントと、
前記第1及び第2のプロセッサエレメントに共用され、前記第1のプロセッサエレメントが実行する第1のプログラムが格納された第1の記憶部と、
前記第1のプログラムが格納された領域に対し、前記第2のプロセッサエレメントがアクセスできないように設定可能なガード部と、を備え、
前記第1のプロセッサエレメントが前記ガード部を設定した後、前記第2のプロセッサエレメントが起動するプロセッサシステム。
【請求項2】
前記第1のプロセッサエレメントをリセットするハードウェアリセット信号と、前記第1のプロセッサエレメントが前記第1のプログラムを実行することにより前記ガード部を設定したことを示すソフトウェアリセット信号と、に基づいて前記第2のプロセッサエレメントの起動を制御する起動制御信号を生成する起動制御回路を、更に備えることを特徴とする請求項1に記載のプロセッサシステム。
【請求項3】
前記起動制御信号に応じて、前記第2のプロセッサエレメントのリセットが解除されることにより、前記第2のプロセッサエレメントが起動することを特徴とする請求項2に記載のプロセッサシステム。
【請求項4】
前記起動制御信号に応じて、前記第2のプロセッサエレメントへのクロック信号の供給が開始されることにより、前記第2のプロセッサエレメントが起動することを特徴とする請求項2に記載のプロセッサシステム。
【請求項5】
前記起動制御信号に基づいて、前記第2のプロセッサエレメントへの前記クロック信号の供給を制御するクロック供給制御回路を、更に備えることを特徴とする請求項4に記載のプロセッサシステム。
【請求項6】
前記第1のプログラムを検証する第3のプロセッサエレメントを、更に備えることを特徴とする請求項1〜5のいずれか一項に記載のプロセッサシステム。
【請求項7】
前記第3のプロセッサエレメントが前記第1のプログラムを検証した後、前記第1のプロセッサエレメントが起動することを特徴とする請求項6に記載のプロセッサシステム。
【請求項8】
前記第1及び第2のプロセッサエレメントからのアクセスが禁止され、前記第3のプロセッサエレメントが実行する第2のプログラムが格納された第2の記憶部を、更に備えることを特徴とする請求項7に記載のプロセッサシステム。
【請求項9】
前記第1のプロセッサエレメントと前記第3のプロセッサエレメントとの接続を遮断するスイッチを、更に備えることを特徴とする請求項6〜8のいずれか一項に記載のプロセッサシステム。
【請求項10】
前記第1の論理回路が前記第1のプロセッサエレメントの内部に設けられていることを特徴とする請求項2に記載のプロセッサシステム。
【請求項11】
前記第1の論理回路が前記第2のプロセッサエレメントの内部に設けられていることを特徴とする請求項2に記載のプロセッサシステム。
【請求項12】
前記第1のプロセッサエレメントは、前記ソフトウェアリセット信号を保持するレジスタを備えることを特徴とする請求項2〜11のいずれか一項に記載のプロセッサシステム。
【請求項13】
第2のプロセッサエレメントが冗長機能を有しないことを特徴とする請求項1〜12のいずれか一項に記載のプロセッサシステム。
【請求項14】
冗長機能を有する第1のプロセッサエレメントと、
第2のプロセッサエレメントと、
前記第1及び第2のプロセッサエレメントに共用され、前記第1のプロセッサエレメントが実行するプログラムが格納された記憶部と、
前記第2のプロセッサエレメントが、前記プログラムが格納された領域に対し、アクセスできないように設定可能なガード部と、を備えたプロセッサシステムの起動方法であって、
前記第1のプロセッサエレメントを起動し、
前記第1のプロセッサエレメントにより、前記ガード部を設定した後、
前記第2のプロセッサエレメントを起動するプロセッサシステムの起動方法。
【請求項15】
前記プロセッサシステムが前記プログラムを検証する第3のプロセッサエレメントを、更に備え、
前記第3のプロセッサエレメントを起動し、
前記第3のプロセッサエレメントにより、前記プログラムを検証した後、
前記第1のプロセッサエレメントを起動することを特徴とする請求項14に記載のプロセッサシステムの起動方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate


【公開番号】特開2013−37562(P2013−37562A)
【公開日】平成25年2月21日(2013.2.21)
【国際特許分類】
【出願番号】特願2011−173711(P2011−173711)
【出願日】平成23年8月9日(2011.8.9)
【出願人】(302062931)ルネサスエレクトロニクス株式会社 (8,021)
【Fターム(参考)】