(57)【特許請求の範囲】
【請求項１】
プログラムコードまたはデータを記憶する記憶手段と、前記記憶手段からバスを介して取得した前記プログラムコードまたはデータの一部をキャッシュする複数のプロセッサモジュールであって役割に応じた異なる処理を実行する複数のプロセッサモジュールとを備える電子情報記録媒体であって、
前記複数のプロセッサモジュールのうち、前記プログラムコードまたはデータのキャッシュミス発生時に停止させる前記プロセッサモジュールを予め設定する設定手段と、
前記キャッシュミスが発生したか否かを判定する判定手段と、
前記判定手段により、前記設定手段により予め設定された前記プロセッサモジュールを含む複数のプロセッサモジュールにおいて前記キャッシュミスが発生したと判定された場合、前記設定手段により予め設定された前記プロセッサモジュールの動作を停止させ、当該停止される前記プロセッサモジュール以外の前記プロセッサモジュールの動作であって、前記記憶手段から、当該停止される前記プロセッサモジュール以外の前記プロセッサモジュールにおける前記キャッシュミスの対象となった前記プログラムコードまたはデータを取得する動作を行わせる制御手段と、
を備えることを特徴とする電子情報記録媒体。
【請求項２】
プログラムコードまたはデータを記憶する記憶手段と、前記記憶手段からバスを介して取得した前記プログラムコードまたはデータの一部をキャッシュする複数のプロセッサモジュールであって役割に応じた異なる処理を実行する複数のプロセッサモジュールとを備える電子情報記録媒体における前記プロセッサモジュールの動作制御方法であって、
前記複数のプロセッサモジュールのうち、前記プログラムコードまたはデータのキャッシュミス発生時に停止させる前記プロセッサモジュールを予め設定する設定ステップと、
前記キャッシュミスが発生したか否かを判定する判定ステップと、
前記設定ステップで予め設定された前記プロセッサモジュールを含む複数のプロセッサモジュールにおいて前記キャッシュミスが発生したと前記判定ステップで判定された場合、前記設定ステップで予め設定された前記プロセッサモジュールの動作を停止させ、当該停止される前記プロセッサモジュール以外の前記プロセッサモジュールの動作であって、前記記憶手段から、当該停止される前記プロセッサモジュール以外の前記プロセッサモジュールにおける前記キャッシュミスの対象となった前記プログラムコードまたはデータを取得する動作を行わせるステップと、
を含むことを特徴とするプロセッサモジュールの動作制御方法。
【請求項３】
プログラムコードまたはデータを記憶する記憶手段と、前記記憶手段からバスを介して取得した前記プログラムコードまたはデータの一部をキャッシュする複数のプロセッサモジュールであって役割に応じた異なる処理を実行する複数のプロセッサモジュールとを備える電子情報記録媒体におけるコンピュータに、
前記複数のプロセッサモジュールのうち、前記プログラムコードまたはデータのキャッシュミス発生時に停止させる前記プロセッサモジュールを予め設定する設定ステップと、
前記キャッシュミスが発生したか否かを判定する判定ステップと、
前記設定ステップで予め設定された前記プロセッサモジュールを含む複数のプロセッサモジュールにおいて前記キャッシュミスが発生したと前記判定ステップで判定された場合、前記設定ステップで予め設定された前記プロセッサモジュールの動作を停止させ、当該停止される前記プロセッサモジュール以外の前記プロセッサモジュールの動作であって、前記記憶手段から、当該停止される前記プロセッサモジュール以外の前記プロセッサモジュールにおける前記キャッシュミスの対象となった前記プログラムコードまたはデータを取得する動作を行わせるステップと、
を実行させることを特徴とするプロセッサモジュールの動作制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のプロセッサモジュールを備える電子情報記録媒体の技術分野に関する。  
【背景技術】
【０００２】
従来、ＩＣカードにおいて、レーザー光などを用いた故障利用攻撃などにより内部の機密情報が不正に漏洩してしまうことがあり、異常を検知するなどの対策が検討されている（例えば、特許文献１及び特許文献２参照）。一般に異常を検知するための処理は冗長であり、これを行うことで本来外部より要求されている処理よりも長い処理時間となってしまう。不正を検知するための専用の回路を用意することも可能ではあるが、例えば、実行中のプログラムコードに対しチェックコードを演算する場合、チェックコードの演算方式は固定的もしくは選択的となり、もしこれらの演算方式に致命的な欠陥が見つかった場合では対応が困難である。
【０００３】
ところで、内部にキャッシュメモリを備えるプロセッサモジュールが、スプリット方式のバスに複数接続され、各プロセッサモジュールがメモリを共有しているマルチプロセッサシステムが知られている（例えば、特許文献３参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特許第５２００６６４号
【特許文献２】特許第４９７６８５４号
【特許文献３】特許第３２１９４２２号
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献３に開示されたマルチプロセッサシステムのように、複数のプロセッサモジュールを含み、この中の一部のプロセッサモジュールを外部からの要求のための処理を行なうＩＣカードが想定される。このようなＩＣカードでは、プロセッサモジュールはそれぞれ独立して機能することが可能であるが、プロセッサモジュールに含まれるキャッシュメモリのメモリサイズは数kbyte程度に制限されている。このため、プログラムコードもしくはデータがキャッシュメモリ上に存在しない場合には、キャッシュミスとなり、バスを介してメモリからキャッシュメモリへのデータ転送（メモリ転送）が必要となる。インターロック方式のバスでは、このメモリ転送を行なう間、当該バスが一方のプロセッサモジュールに占有されることとなるが、他方のプロセッサモジュールもキャッシュミスが発生した場合にこのメモリ転送が終了するまで待たなくてはならない。一方、スプリット方式のバスであっても、所定間隔で分割された時間、当該バスが一方のプロセッサモジュールに占有されることとなる。このため、通信などの高速性が求められる処理などでは、これらの待ち時間が致命的な問題となる可能性がある。また異常を検知した場合は、通常処理を進めることで不正な状況が広がる可能性もある。
【０００６】
そこで、本発明は、上記問題等に鑑みてなされたものであり、複数のプロセッサモジュールのうち、状況に応じて何れかのプロセッサモジュールを優先して動作させることが可能な電子情報記録媒体、プロセッサモジュールの動作制御方法、及びプロセッサモジュールの動作制御プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記課題を解決するために、請求項１に記載の発明は、プログラムコードまたはデータを記憶する記憶手段と、前記記憶手段からバスを介して取得した前記プログラムコードまたはデータの一部をキャッシュする複数のプロセッサモジュールであって役割に応じた異なる処理を実行する複数のプロセッサモジュールとを備える電子情報記録媒体であって、前記複数のプロセッサモジュールのうち、前記プログラムコードまたはデータのキャッシュミス発生時に停止させる前記プロセッサモジュールを予め設定する設定手段と、前記キャッシュミスが発生したか否かを判定する判定手段と、前記判定手段により、前記設定手段により予め設定された前記プロセッサモジュールを含む複数のプロセッサモジュールにおいて前記キャッシュミスが発生したと判定された場合、前記設定手段により予め設定された前記プロセッサモジュールの動作を停止させ、当該停止される前記プロセッサモジュール以外の前記プロセッサモジュールの動作であって、前記記憶手段から、当該停止される前記プロセッサモジュール以外の前記プロセッサモジュールにおける前記キャッシュミスの対象となった前記プログラムコードまたはデータを取得する動作を行わせる制御手段と、を備えることを特徴とする。
【００１１】
請求項２に記載の発明は、プログラムコードまたはデータを記憶する記憶手段と、前記記憶手段からバスを介して取得した前記プログラムコードまたはデータの一部をキャッシュする複数のプロセッサモジュールであって役割に応じた異なる処理を実行する複数のプロセッサモジュールとを備える電子情報記録媒体における前記プロセッサモジュールの動作制御方法であって、前記複数のプロセッサモジュールのうち、前記プログラムコードまたはデータのキャッシュミス発生時に停止させる前記プロセッサモジュールを予め設定する設定ステップと、前記キャッシュミスが発生したか否かを判定する判定ステップと、前記設定ステップで予め設定された前記プロセッサモジュールを含む複数のプロセッサモジュールにおいて前記キャッシュミスが発生したと前記判定ステップで判定された場合、前記設定ステップで予め設定された前記プロセッサモジュールの動作を停止させ、当該停止される前記プロセッサモジュール以外の前記プロセッサモジュールの動作であって、前記記憶手段から、当該停止される前記プロセッサモジュール以外の前記プロセッサモジュールにおける前記キャッシュミスの対象となった前記プログラムコードまたはデータを取得する動作を行わせるステップと、を含むことを特徴とする。
【００１２】
請求項３に記載の発明は、プログラムコードまたはデータを記憶する記憶手段と、前記記憶手段からバスを介して取得した前記プログラムコードまたはデータの一部をキャッシュする複数のプロセッサモジュールであって役割に応じた異なる処理を実行する複数のプロセッサモジュールとを備える電子情報記録媒体におけるコンピュータに、前記複数のプロセッサモジュールのうち、前記プログラムコードまたはデータのキャッシュミス発生時に停止させる前記プロセッサモジュールを予め設定する設定ステップと、前記キャッシュミスが発生したか否かを判定する判定ステップと、前記設定ステップで予め設定された前記プロセッサモジュールを含む複数のプロセッサモジュールにおいて前記キャッシュミスが発生したと前記判定ステップで判定された場合、前記設定ステップで予め設定された前記プロセッサモジュールの動作を停止させ、当該停止される前記プロセッサモジュール以外の前記プロセッサモジュールの動作であって、前記記憶手段から、当該停止される前記プロセッサモジュール以外の前記プロセッサモジュールにおける前記キャッシュミスの対象となった前記プログラムコードまたはデータを取得する動作を行わせるステップと、を実行させることを特徴とする。
【発明の効果】
【００１３】
本発明によれば、複数のプロセッサモジュールのうち、状況に応じて何れかのプロセッサモジュールを優先して動作させることができる。
【図面の簡単な説明】
【００１４】
【図１】ＩＣチップＣの概要構成例を示す図である。
【図２】実施例１におけるスペシャルファンクションレジスタの構成例を示す図である。
【図３】プロセッサ制御回路７により行われる処理の一例を示すフローチャートである。
【図４】実施例２におけるスペシャルファンクションレジスタの構成例を示す図である。
【図５】実施例２におけるプロセッサモジュール２により行われる異常判定処理の一例を示すフローチャートである。
【図６】実施例３におけるプロセッサモジュール２により行われる異常判定処理の一例を示すフローチャートである。
【図７】実施例４におけるスペシャルファンクションレジスタの構成例を示す図である。
【図８】（Ａ）は、プロセッサモジュール１にてキャッシュミスが発生しキャッシュ読込み動作を行なっている際に、優先順位が低く設定されたプロセッサモジュール２でもキャッシュミスが発生した場合の動作を示すタイミングチャートである。（Ｂ）は、優先順位が低く設定されたプロセッサモジュール２にてキャッシュミスが発生しキャッシュ読込み動作を行なっている際に、プロセッサモジュール１でもキャッシュミスが発生した場合の動作を示すタイミングチャートである。
【発明を実施するための形態】
【００１５】
以下、図面を参照して本発明の実施形態について詳細に説明する。以下に説明する実施形態は、ＩＣチップに対して本発明を適用した場合の実施の形態である。
【００１６】
先ず、図１を参照して、本実施形態に係るＩＣチップの概要構成について説明する。図１は、ＩＣチップＣの概要構成例を示す図である。ＩＣチップＣは、本発明の電子情報記録媒体の一例である。なお、ＩＣチップＣは、キャッシュカード、クレジットカード、社員カード等に搭載されて使用される。或いは、ＩＣチップＣは、スマートフォンや携帯電話機等の通信機器に組み込まれる。ＩＣチップＣは、通信機器の回路基板上に直接組み込んで構成するようにしてもよい。
【００１７】
ＩＣチップＣは、図１に示すように、プロセッサモジュール１、プロセッサモジュール２、ＲＡＭ（Random Access Memory）３、ＲＯＭ（Read Only Memory）４、ＮＶＭ（Nonvolatile Memory）５、Ｉ／Ｏ回路６、及びプロセッサ制御回路７を備えて構成され、これらの構成要素は、バス８に接続されている。バス８は、アドレスバスとデータバスを備える。なお、図１に示すＩＣチップＣは、２つのプロセッサモジュールを備えるが、３つ以上のプロセッサモジュールを備えてもよい。ＲＡＭ３、ＲＯＭ４、及びＮＶＭ５は、プログラムコードまたはデータを記憶する記憶手段の一例である。例えば、ＲＯＭ４、またはＮＶＭ５には、ＯＳ、アプリケーションプログラム（複数のプログラムコードから構成）、及び本発明の動作制御プログラムが記憶される。ＮＶＭ５には、フラッシュメモリ、または「Electrically Erasable Programmable Read-Only Memory」が適用される。Ｉ／Ｏ回路６は、外部機器とのインターフェイスを担う。接触式のＩＣチップＣの場合、Ｉ／Ｏ回路６には、例えば、Ｃ１〜Ｃ８の８個の端子が備えられている。例えば、Ｃ１端子は電源端子、Ｃ２端子はリセット端子、Ｃ３端子はクロック端子、Ｃ５端子はグランド端子、Ｃ７端子は外部機器との間で通信を行うための端子である。一方、非接触式のＩＣチップＣの場合、Ｉ／Ｏ回路６には、例えば、アンテナ、及び変復調回路が備えられている。なお、外部機器の例としては、ＩＣカード発行機、ＡＴＭ、改札機、認証用ゲート等が挙げられる。或いは、ＩＣチップＣが通信機器に組み込まれる場合、外部機器には通信機器の機能を担う制御部が該当する。更に、外部機器として、電圧センサー、温度センサー、光センサー等の異常検知センサーが挙げられる。なお、異常検知センサーは、ＩＣチップＣに搭載されてもよい。
【００１８】
プロセッサモジュール１，２は、それぞれ、ＣＰＵコア１１，２１、及びキャッシュ１２，２２等を備える。プロセッサモジュール１とプロセッサモジュール２とは同一の構成を有するが、役割に応じた異なる処理を実行する。例えば、プロセッサモジュール１は、外部機器からＩ／Ｏ回路６を介して入力されたコマンドに応じて処理（以下、「メイン処理」という）を行う。一方、プロセッサモジュール２は、例えば、メイン処理とは異なる冗長的なサブ処理（例えば、異常検知処理、及び異常判定処理）を行う。ＣＰＵコア１１，２１は、それぞれ、図示しないが、演算器、プログラムカウンタ、及びレジスタ等により構成される。ＣＰＵコア１１は、メイン処理において、プログラムコードをキャッシュ１２からレジスタにフェッチ（取得）して解釈（デコード）、及び実行する。一方、ＣＰＵコア２１は、サブ処理において、プログラムコードをキャッシュ２２からレジスタにフェッチ（取得）して解釈（デコード）、及び実行する。キャッシュ１２，２２は、それぞれ、図示しないが、キャッシュメモリ、及びキャッシュメモリ制御部等により構成される。キャッシュメモリ制御部は、ＣＰＵコア１１，２１の制御の下、ＲＡＭ３、ＲＯＭ４、またはＮＶＭ５からバス８を介して取得したプログラムコードまたはデータの一部をキャッシュメモリにキャッシュ（一時的に保持）する。また、キャッシュメモリ制御部は、例えばＣＰＵコア１１から要求されたプログラムコードもしくはデータがキャッシュメモリ上に存在しない場合（つまり、キャッシュミスが発生した場合）、バス８を介して、ＲＡＭ３、ＲＯＭ４、またはＮＶＭ５からキャッシュメモリへのデータ転送（メモリ転送）を行う。なお、キャッシュ１２，２２は、プログラムコードに利用されるものと、データに利用されるものが物理的に分離されていてもよい。また、キャッシュ１２，２２の一部を複数のプロセッサモジュールにて共有してもよい。
【００１９】
プロセッサ制御回路７は、本発明の設定手段、判定手段、及び制御手段を備え、プロセッサモジュール１２，２２のうち、所定の状況発生時に停止させるプロセッサモジュール（１２または２２）を予め設定し、当該所定の状況が発生したと判定された場合、上記設定されたプロセッサモジュールの動作を停止させ、当該停止されるプロセッサモジュール以外のプロセッサモジュールの動作を行わせる。これにより、複数のプロセッサモジュールのうち、状況に応じて何れかのプロセッサモジュールを優先して動作させることができる。なお、プロセッサ制御回路７は、例えば、ハードウェアにより構成されるが、プロセッサ制御回路７による処理は、ソフトウェアで構成されてもよく、この場合、プロセッサ制御回路７は、コンピュータとして本発明の動作制御プログラムに従って、本発明の設定手段、判定手段、及び制御手段として機能する。
【００２０】
次に、本発明のＩＣチップＣの動作例について、実施例１〜実施例４に分けて説明する。
【００２１】
（実施例１）
先ず、図２及び図３を参照して、実施例１の動作について説明する。なお、実施例１において、所定の状況は、割込みイベントである。また、実施例１では、プロセッサ制御回路７は、スペシャルファンクションレジスタを備える。図２は、実施例１におけるスペシャルファンクションレジスタの構成例を示す図である。図２の例では、スペシャルファンクションレジスタとして、モジュール動作表示レジスタ７１、発生イベント設定レジスタ７２、停止イベント設定レジスタ７３、及びモジュール動作設定レジスタ７４ａ〜７４ｈを示している。なお、図２の例では、それぞれのレジスタは、ｂ（ビット）１〜ｂ８の８ビットで構成されているが、これに限定されない。
【００２２】
モジュール動作表示レジスタ７１は、プロセッサモジュール１（PM1）とプロセッサモジュール２（PM2）の現在の動作状態（０：停止、１：動作）を示すレジスタである。図２の例では、このレジスタ７１のｂ１がプロセッサモジュール１の動作状態を示し、このレジスタ７１のｂ２がプロセッサモジュール２の動作状態を示す。また、モジュール動作表示レジスタ７１のｂ１及びｂ２（“０”または“１”）は、それぞれ、プロセッサ制御回路７、またはプロセッサモジュール１，２によりスイッチ可能（言い換えれば、ソフト的に切替設定可能）になっている。これにより、プロセッサモジュール１，２は、それぞれ、動作状態が切り換えられる。
【００２３】
発生イベント設定レジスタ７２は、発生した割込みイベントが設定（ハード的に設定）されるレジスタである。割込みイベントには、例えば、データ受信（Ｉ／Ｏ回路６を介したデータ（コマンド含む）受信）、データ送信（Ｉ／Ｏ回路６を介したデータ送信）、ＮＶＭ更新、異常検知、ソフト割込み等、複数種類ある。なお、異常検知には、ハードウェア（例えば、異常検知センサー）による異常検知と、ソフトウェアによる異常検知とがある。図２の例では、発生した割込みイベントが、データ受信である場合、レジスタ７２のｂ１が“０”から“１”に変更設定される。また、例えば発生した割込みイベントが、データ送信である場合、レジスタ７２のｂ２が“０”から“１”に変更設定される。また、例えば発生した割込みイベントが、異常検知である場合、レジスタ７２のｂ７が“０”から“１”に変更設定される。
【００２４】
停止イベント設定レジスタ７３は、プロセッサモジュール１またはプロセッサモジュール２を停止させる割込みイベントが設定（ソフト的に設定）されるレジスタである。この設定は、例えばＩＣカードの利用者からＩ／Ｏ回路６を介して入力される指示に従ってプロセッサ制御回路７により行われる。例えば、図２に示すように、レジスタ７３のｂ１が“１”に設定されている場合、データ受信が発生したときにプロセッサモジュール１またはプロセッサモジュール２が停止されることになる。プロセッサモジュール１とプロセッサモジュール２のどちらが停止されるかは、モジュール動作設定レジスタ７４ａ〜７４ｈにて設定される。例えば、モジュール動作設定レジスタ７４ａは、データ受信に対応するレジスタであり、図２の例では、このレジスタ７４ａのｂ１は、“１”（プロセッサモジュール１が動作）に設定され、このレジスタ７４ａのｂ２は、“０”（プロセッサモジュール２が停止）に設定されている。この設定により、データ受信時に一定期間処理ができないことによる通信エラーの発生を防ぐことができる。このように、プロセッサ制御回路７は、互いに異なる複数の割込みイベントごとに、当該割込みイベントの発生時に停止させるプロセッサモジュールを設定することができる。
【００２５】
図３は、プロセッサ制御回路７により行われる処理の一例を示すフローチャートである。図３に示す処理は、所定周期で繰り返し実行される。図３に示す処理では、先ず、プロセッサ制御回路７は、割込みイベントが発生したか否かを判定する（ステップＳ１）。発生イベント設定レジスタ７２における何れかのビットに“１”が設定されている場合、割込みイベントが発生したと判定される。例えば、発生イベント設定レジスタ７２におけるｂ１に“１”が設定されている場合、割込みイベント“データ受信”が発生したと判定される。割込みイベントが発生したと判定された場合（ステップＳ１：ＹＥＳ）、ステップＳ２へ進む。一方、割込みイベントが発生していないと判定された場合（ステップＳ１：ＮＯ）、当該処理が終了する。
【００２６】
ステップＳ２では、プロセッサ制御回路７は、発生した割込みイベントが、プロセッサモジュールを停止させる割込みイベントであるか否かを判定する。停止イベント設定レジスタ７３において、発生した割込みイベントに対応するビットに“１”が設定されている場合、発生した割込みイベントが、プロセッサモジュールを停止させる割込みイベントであると判定される。例えば、停止イベント設定レジスタ７３におけるｂ１に“１”が設定されている場合、発生した割込みイベント“データ受信”が、プロセッサモジュールを停止させる割込みイベントであると判定される。発生した割込みイベントが、プロセッサモジュールを停止させる割込みイベントであると判定された場合（ステップＳ２：ＹＥＳ）、ステップＳ３へ進む。一方、プロセッサモジュールを停止させる割込みイベントでないと判定された場合（ステップＳ２：ＮＯ）、当該処理が終了する。
【００２７】
ステップＳ３では、プロセッサ制御回路７は、停止させるプロセッサモジュールを特定する。例えば、停止させる割込みイベントが“データ受信”である場合、データ受信に対応するモジュール動作設定レジスタ７４ａにおいて“１”が設定されているビットに対応するプロセッサモジュールを、停止させるプロセッサモジュールとして特定（図２の例では、プロセッサモジュール２が特定）する。
【００２８】
次いで、プロセッサ制御回路７は、ステップＳ３で特定されたプロセッサモジュールが動作中であるか否かを判定する（ステップＳ４）。モジュール動作表示レジスタ７１において、上記特定されたプロセッサモジュールに対応するビットに“１”が設定されている場合、当該プロセッサモジュールが、動作中であると判定される。特定されたプロセッサモジュールが動作中であると判定された場合（ステップＳ４：ＹＥＳ）、ステップＳ５へ進む。一方、特定されたプロセッサモジュールが動作中でないと判定された場合（ステップＳ４：ＮＯ）、当該処理が終了する。
【００２９】
ステップＳ５では、プロセッサ制御回路７は、ステップＳ３で特定されたプロセッサモジュールの動作を停止させる。例えば、モジュール動作表示レジスタ７１において、上記特定されたプロセッサモジュール（例えば、プロセッサモジュール２）に対応するビットを“１”から“０”に切り替えることでプロセッサモジュールが動作（例えば、サブ処理）を停止させる。
【００３０】
その後、プロセッサ制御回路７は、プロセッサモジュールの復帰処理を行う。この復帰処理では、プロセッサ制御回路７は、発生した割込みイベントに応じた処理（例えば、プロセッサモジュール１によるデータ受信に応じた処理（例えば、メイン処理））の終了を検知した場合、上記ステップＳ５で停止させたプロセッサモジュールの動作を復帰させる。例えば、モジュール動作表示レジスタ７１において、上記停止されたプロセッサモジュール（例えば、プロセッサモジュール２）に対応するビットを“０”から“１”に切り替えることでプロセッサモジュールの動作を復帰させる。なお、発生した割込みイベントに応じた処理が終了すると、発生イベント設定レジスタ７２における当該割込みイベントに対応するビットに“０”が設定されることになる。
【００３１】
以上説明したように、実施例１によれば、複数のプロセッサモジュール１，２のうち、割込みイベント発生（例えば、データ受信）に応じて何れかのプロセッサモジュールを優先して動作させることができる。従って、例えば外部機器との通信などの高速性が求められる処理において、迅速に応答を返すことができる。
【００３２】
（実施例２）
次に、図４及び図５を参照して、実施例２の動作について説明する。なお、実施例２において、所定の状況は、ハードウェアによる異常検知である。また、実施例２でも、プロセッサ制御回路７は、実施例１と同一のスペシャルファンクションレジスタを備える。図４は、実施例２におけるスペシャルファンクションレジスタの構成例を示す図である。なお、図４に示すように、実施例２は、実施例１と比べて、停止イベント設定レジスタ及びモジュール動作設定レジスタの設定内容が異なるが、その他の構成は実施例１と同様である。図４の例では、停止イベント設定レジスタ７３のｂ７が“１”に設定されており、異常検知に対応するモジュール動作設定レジスタ７４ｇのｂ１は、“０”（プロセッサモジュール１が停止）に設定され、このレジスタ７４ｇのｂ２は、“１”（プロセッサモジュール２が動作）に設定されている。このような設定では、割込みイベントとして“異常検知”（ ハードウェアによる異常検知）が発生すると、図３に示すステップＳ２で、発生した割込みイベントが、プロセッサモジュールを停止させる割込みイベントであると判定される。そして、図３に示すステップＳ３で、停止させるプロセッサモジュールとして、プロセッサモジュール１が特定され、このプロセッサモジュール１の動作が停止（つまり、異常停止）され、プロセッサモジュール２の動作が行われる。この動作において、プロセッサモジュール２は、異常判定処理を実行する。
【００３３】
図５は、実施例２におけるプロセッサモジュール２により行われる異常判定処理の一例を示すフローチャートである。図５に示す処理が開始されると、プロセッサモジュール２は、異常検知された異常の原因を確認し（ステップＳ１１）、異常検知された異常が、問題となる異常（予め設定）であるか否かを判定する（ステップＳ１２）。ここで、問題となる異常は、通常の運用時に発生し得ない異常であり、ＩＣチップＣを停止する必要がある異常である。例えば、問題となる異常として、高電圧検知異常、高温検知異常、低温検知異常、光検知異常などが挙げられる。高電圧検知異常は、電圧センサーにより閾値（所定電圧）以上の高電圧が検知された異常をいう。高温検知異常は、温度センサーにより閾値（所定温度）以上の高温度が検知された異常をいう。低温検知異常は、温度センサーにより閾値以下の低温度が検知された異常をいう。光検知異常は、光センサーにより閾値（所定ルクス）以上の光が検知された異常（例えば、レーザ攻撃による）をいう。一方、問題とならない異常は、電気的なノイズや接触部分の問題など、通常の運用時に発生し得る異常である。例えば、問題とならない異常として、電源に対するグリッジ異常、低電圧検知異常、高周波数検知異常などが挙げられる。
【００３４】
プロセッサモジュール２は、異常検知された異常が、問題となる異常であると判定した場合（ステップＳ１２：ＹＥＳ）、全ての処理を停止する（ステップＳ１３）。一方、プロセッサモジュール２は、異常検知された異常が、問題となる異常でないと判定した場合（ステップＳ１２：ＮＯ）、異常検知カウンタを確認する（ステップＳ１４）。ここで、異常検知カウンタは、問題とならない異常の検知回数をカウントするカウンタであり、例えばＮＶＭ５に設けられる。次いで、プロセッサモジュール２は、異常検知カウンタの値が、予め設定された上限値であるか否かを判定する（ステップＳ１５）。そして、異常検知カウンタの値が上限値である場合（ステップＳ１５：ＹＥＳ）、プロセッサモジュール２は、全ての処理を停止する（ステップＳ１３）。一方、異常検知カウンタの値が上限値でない場合（ステップＳ１５：ＮＯ）、プロセッサモジュール２は、異常検知カウンタを更新（つまり、異常検知カウンタの値を１インクリメント）する（ステップＳ１６）。次いで、プロセッサモジュール２（つまり、停止されたプロセッサモジュール１以外のプロセッサモジュール２）は、停止されたプロセッサモジュール１の動作を復帰させる（ステップＳ１７）。例えば、プロセッサモジュール２は、プロセッサ制御回路７に指令を与え、モジュール動作表示レジスタ７１においてプロセッサモジュール１に対応するビットを“０”から“１”に切り替えることでプロセッサモジュール１の動作を復帰させる。
【００３５】
以上説明したように、実施例２によれば、複数のプロセッサモジュール１，２のうち、異常検知の割込みイベント発生に応じて何れかのプロセッサモジュールを優先して動作させることができる。従って、異常検知時にメイン処理を進めることで不正な状況が広がることを防止することができる。
【００３６】
（実施例３）
次に、図６を参照して、実施例３の動作について説明する。なお、実施例３において、所定の状況は、ソフトウェアによる異常検知である。また、実施例３でも、プロセッサ制御回路７は、実施例２と同一のスペシャルファンクションレジスタを備えてもよいが、発生イベント設定レジスタ７２、停止イベント設定レジスタ７３、及びモジュール動作設定レジスタ７４ａ〜７４ｈは使用されない。図６は、実施例３におけるプロセッサモジュール２により行われる異常判定処理の一例を示すフローチャートである。図６に示す異常検知処理は、例えばプロセッサモジュール２が異常検知プログラムにしたがって異常を検知（つまり、ソフトウェアによる異常検知が発生）した場合に開始される。なお、ソフトウェアによる異常検知方法として、ＣＲＣ（Cyclic Redundancy Check）チェック、ＲＡＭの値チェック、ＮＶＭの値チェック、プログラム処理値チェックなどが挙げられる。ＣＲＣチェックでは、予め保持された値と、ＣＲＣ演算により算出された値とが異なる場合に異常検知される。ＲＡＭの値チェックでは、ＲＡＭ３に記憶された値と期待値とが異なる場合に異常検知される。ＮＶＭの値チェックでは、ＮＶＭ５に記憶された値と期待値とが異なる場合に異常検知される。プログラム処理値チェックでは、プログラムの処理の流れから得られる値と期待値とが異なる場合に異常検知される。
【００３７】
図６に示す処理が開始されると、プロセッサモジュール２は、プロセッサモジュール１の動作を停止させる（ステップＳ２１）。例えば、プロセッサモジュール２は、プロセッサ制御回路７に指令を与え、モジュール動作表示レジスタ７１においてプロセッサモジュール１に対応するビットを“１”から“０”に切り替えることでプロセッサモジュール１の動作を停止させる。次いで、プロセッサモジュール２は、異常検知された異常の原因を確認し（ステップＳ２２）、異常検知された異常が、問題となる異常（予め設定）であるか否かを判定する（ステップＳ２３）。ここで、問題となる異常（つまり、通常の運用時に発生し得ない異常）として、例えば、ＲＡＭの値チェックによる異常、プログラム処理値チェックによる異常などが挙げられる。一方、問題とならない異常（つまり、通常の運用時に発生し得る異常）として、例えば、ＮＶＭの値チェックによる異常などが挙げられる。
【００３８】
プロセッサモジュール２は、異常検知された異常が、問題となる異常であると判定した場合（ステップＳ２３：ＹＥＳ）、全ての処理を停止する（ステップＳ２４）。一方、プロセッサモジュール２は、異常検知された異常が、問題となる異常でないと判定した場合（ステップＳ２３：ＮＯ）、異常検知カウンタを確認する（ステップＳ２５）。なお、ステップＳ２６以降の処理は、ステップＳ１５以降の処理と同様である。
【００３９】
以上説明したように、実施例３によれば、複数のプロセッサモジュール１，２のうち、ソフトウェアによる異常検知に応じて何れかのプロセッサモジュールを優先して動作させることができる。従って、異常検知時にメイン処理を進めることで不正な状況が広がることを防止することができる。
【００４０】
（実施例４）
次に、図７及び図８を参照して、実施例４の動作について説明する。なお、実施例４において、所定の状況は、プログラムコードまたはデータのキャッシュミスである。また、実施例４でも、プロセッサ制御回路７は、スペシャルファンクションレジスタを備える。図７は、実施例４におけるスペシャルファンクションレジスタの構成例を示す図である。図７の例では、スペシャルファンクションレジスタとして、優先イベント設定レジスタ７５、及びモジュール優先順位設定レジスタ７６，７７を示している。なお、実施例４でも、プロセッサ制御回路７は、実施例１と同一のスペシャルファンクションレジスタを備えてもよいが、発生イベント設定レジスタ７２、停止イベント設定レジスタ７３、及びモジュール動作設定レジスタ７４ａ〜７４ｈは使用されない。
【００４１】
優先イベント設定レジスタ７５は、プロセッサモジュール１またはプロセッサモジュール２に優先処理させる割込みイベントが設定（ソフト的に設定）されるレジスタである。この設定は、例えばＩＣカードの利用者からＩ／Ｏ回路６を介して入力される指示に従ってプロセッサ制御回路７により行われる。例えば、図７に示すように、レジスタ７５のｂ１が“１”に設定されている場合、優先処理させる割込みイベントはデータ受信となる。
【００４２】
モジュール優先順位設定レジスタ７６は、優先イベント設定レジスタ７５で設定された割込みイベントの発生時におけるプロセッサモジュール１の優先順位が設定されるレジスタであり、モジュール優先順位設定レジスタ７７は、優先イベント設定レジスタ７５で設定された割込みイベントの発生時におけるプロセッサモジュール２の優先順位が設定されるレジスタである。例えば、このようなレジスタにおける値の小さい方が優先順位が高い。優先順位の低いプロセッサモジュールは、キャッシュミスの発生時に停止させるプロセッサモジュールである。図７の例では、モジュール優先順位設定レジスタ７６に設定された値“００”の方が、モジュール優先順位設定レジスタ７７に設定された値“０１”よりも小さいため、プロセッサモジュール２がキャッシュミスの発生時に停止される。なお、優先順位を設定する代わりに、キャッシュミスの発生時に停止させるプロセッサモジュールを設定するように構成してもよい。
【００４３】
実施例４におけるプロセッサ制御回路７は、キャッシュミスが発生したと判定した場合、モジュール優先順位設定レジスタ７６で優先順位が低く設定された（つまり、キャッシュミスの発生時に停止させるとして設定された）プロセッサモジュールの動作を停止させ、当該停止されるプロセッサモジュール以外のプロセッサモジュールの動作であって、ＲＡＭ３等からバス８を介してプログラムコードまたはデータを取得させるキャッシュ読込み動作（つまり、データ転送）を行わせる。これにより、バス競合時に優先順位が低く設定された方のプロセッサモジュールの動作を停止させ、他方のプロセッサモジュールの動作を優先させることができる。
【００４４】
図８（Ａ）は、プロセッサモジュール１にてキャッシュミスが発生しキャッシュ読込み動作を行なっている際に、優先順位が低く設定されたプロセッサモジュール２でもキャッシュミス（データ受信の処理実行中にキャッシュミス）が発生した場合の動作を示すタイミングチャートである。図８（Ａ）の例では、プロセッサモジュール１のＣＰＵコア１１と、プロセッサモジュール２のＣＰＵコア２１とが共に動作しているときに、まず、プロセッサモジュール１にてキャッシュミスが発生すると、ＣＰＵコア１１は動作を停止し、キャッシュ１２（キャッシュメモリ制御部）は、キャッシュ読込み（つまり、データ転送）動作を開始する。つまり、キャッシュ１２によるキャッシュ読込み動作中、ＣＰＵコア１１は動作を停止しているがキャッシュ１２は動作しているので、プロセッサモジュール１としては動作中ということになる。そして、キャッシュ１２によるキャッシュ読込み動作中に、プロセッサモジュール２でもキャッシュミスが発生すると、ＣＰＵコア２１は動作を停止し、キャッシュ２２（キャッシュメモリ制御部）はキャッシュ読込み動作を待機する。つまり、キャッシュ１２によるキャッシュ読込み動作中、ＣＰＵコア２１及びキャッシュ２２はともに動作を停止するので、プロセッサモジュール２としては動作停止中になる（つまり、プロセッサモジュール２の動作を停止させる）。そして、キャッシュ１２によるキャッシュ読込み動作が終了するとＣＰＵコア１１は動作を再開する。このとき、キャッシュ２２は、キャッシュ読込み動作を開始する（つまり、プロセッサモジュール２の動作を復帰させる）。そして、キャッシュ２２によるキャッシュ読込み動作が終了するとＣＰＵコア２１は動作を再開する。
【００４５】
一方、図８（Ｂ）は、優先順位が低く設定されたプロセッサモジュール２にてキャッシュミスが発生しキャッシュ読込み動作を行なっている際に、プロセッサモジュール１でもキャッシュミス（データ受信の処理実行中にキャッシュミス）が発生した場合の動作を示すタイミングチャートである。図８（Ｂ）の例では、プロセッサモジュール１のＣＰＵコア１１と、プロセッサモジュール２のＣＰＵコア２１とが共に動作しているときに、まず、プロセッサモジュール２にてキャッシュミスが発生すると、ＣＰＵコア２１は動作を停止し、キャッシュ２２（キャッシュメモリ制御部）は、キャッシュ読込み動作を開始する。そして、キャッシュ２２によるキャッシュ読込み動作中に、プロセッサモジュール１でもキャッシュミスが発生すると、キャッシュ２２はキャッシュ読込み動作を一時停止し（つまり、プロセッサモジュール２の動作を停止させる）、且つ、キャッシュ１２はキャッシュ読込み動作を開始する。そして、キャッシュ１２によるキャッシュ読込み動作が終了するとＣＰＵコア１１は動作を再開する。このとき、キャッシュ２２は、キャッシュ読込み動作を再開する（つまり、プロセッサモジュール２の動作を復帰させる）。そして、キャッシュ２２によるキャッシュ読込み動作が終了するとＣＰＵコア２１は動作を再開する。
【００４６】
以上説明したように、実施例４によれば、複数のプロセッサモジュール１，２のうち、キャッシュミスの発生に応じて何れかのプロセッサモジュールを優先して動作させることができる。従って、例えば外部機器との通信などの高速性が求められる処理において、迅速に応答を返すことができる。
【００４７】
なお、上記実施形態においては、電子情報記録媒体としてＩＣチップＣを例にとって説明したが、ＩＣチップＣ以外の例えば組み込み型のマイクロコンピュータに対して本発明を適用してもよい。
【符号の説明】
【００４８】
１，２  プロセッサモジュール
３  ＲＡＭ
４  ＲＯＭ
５  ＮＶＭ
６  Ｉ／Ｏ回路
７  プロセッサ制御回路
８  バス
１１，２１  ＣＰＵコア
１２，２２  キャッシュ
Ｃ  ＩＣチップ
【図１】
0006398449.tif 000002
【図２】
0006398449.tif 000003
【図３】
0006398449.tif 000004
【図４】
0006398449.tif 000005
【図５】
0006398449.tif 000006
【図６】
0006398449.tif 000007
【図７】
0006398449.tif 000008
【図８】
0006398449.tif 000009