(57)【要約】【課題】命令を読込んで実行しながら、命令の異常を検出する。【解決手段】データプロセッサ（１）は、命令を読込んで実行するＣＰＵ（２）を有する。ＣＰＵは、命令をフェッチする命令レジスタ（５）と、フェッチされた命令をデコードする命令デコーダ（６）と、積算演算回路（７）と、第１レジスタ（８）とを有し、さらに、デコードされた命令に基づいてこれらを制御する制御回路（９）等を有する。積算演算回路は、制御信号ｃ１に従って、命令フローの区間Ａ〜Ｃで実行される命令のサム値を得る演算を開始する。ＣＰＵは、区間Ａ〜Ｃ毎のサム値に、調整値Ａ〜Ｃを加算する命令を実行する。制御回路は、サム値に調整値を加算することで得られる値が、予め設定された期待値と一致するか否かを判定し、両者が不一致であれば、それ以降の命令の実行を停止させる。【選択図】図１
2008287449.tif 000002
【特許請求の範囲】
【請求項１】
命令を読込んで実行するデータプロセッサであって、
命令フローの所定区間毎に、前記区間に含まれる前記命令に対するサム値を演算し、
同一区間において前回の前記演算で得られたサム値と今回の前記演算で得られたサム値とが不一致であれば、前記命令の実行を停止、又は前記命令の実行順序を強制的に変更するデータプロセッサ。
【請求項２】
前記区間は、レジスタに設定されたアドレスにより規定され、
前記アドレスは、前記演算を開始及び終了する命令の命令アドレスである請求項１記載のデータプロセッサ。
【請求項３】
前記アドレスと、前記アドレスをタグとするサム値が格納されるキャッシュテーブルを含むキャッシュメモリをさらに有し、
前記キャッシュメモリは、リードアクセス要求を受けて前記キャッシュテーブルをアクセスし、前記リードアクセス要求より与えられたアドレスと、前記キャッシュテーブルに格納された前記アドレスとを比較し、一致すれば前記サム値を読み出す請求項２記載のデータプロセッサ。
【請求項４】
今回実行した命令のアドレスと前回実行した命令のアドレスとの差分値が１つの命令の命令語長よりも大きいとき、前記演算を開始する請求項１記載のデータプロセッサ。
【請求項５】
前記区間は、前記演算の開始を指示するオペコードを含む第１命令と、前記演算の終了を指示するオペコードを含む第２命令とから規定される請求項１記載のデータプロセッサ。
【請求項６】
前記第１命令は、前記命令フローでの分岐命令、ジャンプ命令、サブルーチンコール命令のそれぞれの飛び先で実行される命令であり、
前記第２命令は、前記分岐命令、前記ジャンプ命令、サブルーチンリターン命令である請求項５記載のマイクロコンピュータ。
【請求項７】
命令を読込んで実行するデータプロセッサであって、
命令フローの所定区間毎に、前記区間に含まれる前記命令に対するサム値を演算し、
前記区間で前記演算によって得られる前記サム値に所定値の加算を指示する命令を実行し、前記区間において前記演算で得られた前記サム値に前記所定値を加算した値が、予め設定された期待値と不一致であれば、前記命令の実行を停止、又は前記命令の実行順序を強制的に変更するデータプロセッサ。
【請求項８】
前記予め設定された期待値が０である請求項７記載のデータプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データプロセッサに係り、特にセキュリティ機能を有するＩＣカード用マイコンとされるデータプロセッサに適用して有効な技術に関する。
【背景技術】
【０００２】
ＩＣカード用マイコンのセキュリティ機能としては、例えば暗号鍵を用いて秘密情報を暗号化するものが知られている。ところが、この暗号鍵を物理的な破壊をせずに推定する攻撃方法があり、その１つとして誤動作アタックがある。誤動作アタックとは、ＩＣカード用マイコンの中央処理装置（ＣＰＵ）に対して、外部から異常な電圧、クロック、データを供給したり、異常な温度、電磁波等を与えることによって、ＩＣカード用マイコンを誤動作させる、というものである。誤動作アタックは、数十万回も繰返され、例えば正常動作時と誤動作時でのＣＰＵによる演算結果の差分を検証することで、暗号鍵を推定する。このような現状の下、セキュリティ機能を高めた各種装置が知られている。
【０００３】
特許文献１には、ゲームカートリッジのプログラムデータが外部に読み出されるとき、読み出し手順によってチェックサムの値が異なることに着目し、ゲームカートリッジにセキュリティチップを組み込んだプログラム保護装置が開示されている。セキュリティチップは、プログラムデータが正規の手順で読み出されているか否かを判定し、正規の手順であるときのみ、ゲーム機のプロセッサ要求に応答する。これにより、プログラムデータが例えばゲーム機以外の外部機器に読み出され、不正コピーされてしまうことを防止できる。特許文献２には、ゲームプログラムから抽出した分岐命令と、非分岐命令と、非分岐命令のチェックサムとを圧縮し、この圧縮データを暗号化してプログラムメモリに格納する暗号プログラム生成装置が開示されている。この技術では、チェックサムを用いることでゲームプログラムが改竄されたか否かを判定でき、圧縮データを暗号化することでセキュリティ機能を高めることができる。
【０００４】
特許文献３には、命令コードを読み込んだとき、命令コードを予め一定の計算方法で生成した第一の暗号コードを、命令コードが格納されている領域とは別の領域に格納し、上記一定の計算方法で再計算した第二の暗号コードと、第一の暗号コードとを比較し、一致すれば命令を実行するデータプロセッサが開示されている。この技術では、第一の暗号コードと第二の暗号コードを比較することで、不正に改竄されたプログラムが実行されることを防止できる。特許文献４には、第２保護手段を有するプログラム実行装置が開示されている。第２保護手段は、第１コンピュータプログラムを含む処理プログラムが生成されたときに少なくとも一部に基づいて生成される第１改竄検出値を取得し、処理手段が第１コンピュータプログラムを実行する前に、処理プログラムの少なくとも一部に基づいて第２改竄検出値を生成する。そして、第２保護手段は、第１改竄検出値と第２改竄検出値とが異なる場合に、処理手段が第１コンピュータプログラムに従って動作することを抑制するので、不正に改竄された第１コンピュータプログラムが実行されることを防止できる。
【０００５】
【特許文献１】特開平０９−２８２１５６号公報
【特許文献２】特開２００５−１６６０７０号公報
【特許文献３】特開２００４−１７８２５０号公報
【特許文献４】特開２００５−１００３７８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
本発明者は、ＩＣカード用マイコンが誤動作アタックによって本来の命令フローと異なる動作を行うことを確認し、その原因について考察した。本発明者は、誤動作アタックによる現象として、メモリやレジスタの値が変化すること、分岐命令等で命令実行がスキップされること、演算結果を間違うこと、プログラムカウンタ（ＰＣ）の値が意図しない値に変化すること等を確認した。そして、上記現象が、ＩＣカード用マイコンのＣＰＵに読込まれ実行される命令が不正に変化したことに起因することを見出し、命令の異常を検出することの重要性を認識した。
【０００７】
特許文献１は、ゲーム機のプロセッサからの読み出しアクセスのアドレスの正当性をチェックすることで、不正な読み出しを阻止するものであり、セキュリティチップで正規の手順であると判定された後に、プロセッサとバスの間で命令が不正に変化した場合には、その命令の異常は検出できない。特許文献２は、プログラムメモリに格納された命令が改竄されたことは検出できるが、命令が実行されているときには、命令の異常を検出できない。特許文献３は、ある種のエラー検出コードを暗号コードと称して命令毎に付与しているから、個々の命令が改竄されたことは検出できるが、ＰＣの値が意図しない値となり命令の実行順序が変化した場合には、その異常を検出できない。特許文献４は、処理手段が処理プログラムを実行する前であれば、第１コンピュータプログラムが改竄されているか否かを検出できるが、処理プログラムの実行後では、命令が不正に変化したことを検出できない。
【０００８】
また、命令フローのチェックをソフトウエアによる実装で行うことも考えられるが、これは、ソフトウエアを構成する命令に異常がないことが前提となっている。このため、命令の異常を検出するために二重チェック等、複数回のソフト対策が必要とされ、ＣＰＵのパフォーマンスを低下させてしまうという問題がある。
【０００９】
本発明の目的は、命令を読込んで実行しながら命令の異常を検出し、セキュリティ機能を高めることができるデータプロセッサを提供することにある。
【００１０】
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【００１１】
本願において開示される発明のうち代表的なものについて簡単に説明すれば下記のとおりである。
【００１２】
即ち、データプロセッサは、命令フローの所定区間毎に、区間に含まれる命令に対するサム値を演算し、同一区間において前回の演算で得られたサム値と今回の演算で得られたサム値とが不一致であれば、命令の実行を停止、又は命令の実行順序を強制的に変更する。これにより、中央処理装置が命令を読込んで実行しながら、所定区間での命令の異常を検出でき、セキュリティ機能を高めることができる。
【発明の効果】
【００１３】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記の通りである。
【００１４】
すなわち、命令を読込んで実行しながら命令の異常を検出し、セキュリティ機能を高めることができる。
【発明を実施するための最良の形態】
【００１５】
１．代表的な実施の形態
先ず、本願において開示される発明の代表的な実施の形態について概要を説明する。代表的な実施の形態についての概要説明で括弧を付して参照する図面の参照符号はそれが付された構成要素の概念に含まれるものを例示するに過ぎない。
【００１６】
〔１〕本発明の代表的な実施の形態に係るデータプロセッサ（２Ａ）は、命令を読込んで実行する。このデータプロセッサは、命令フローの所定区間（Ａ１，Ｂ１，Ｃ１）毎に、前記区間に含まれる前記命令に対するサム値を演算し、同一区間において前回の前記演算で得られたサム値と今回の前記演算で得られたサム値とが不一致であれば、前記命令の実行を停止、又は前記命令の実行順序を強制的に変更する。
【００１７】
上記より、データプロセッサが命令フローの所定区間に含まれる命令を繰返して実行する毎にサム値を演算するから、命令を読込んで実行しながら、同一区間における命令が不正に変化したことをサム値の不一致により検出できる。そして、命令が不正に変化したことを検出したデータプロセッサは、命令の実行を停止して例えばデータプロセッサをリセットしたり、それ以降の命令の実行順序を変更するから、誤動作アタックにより暗号鍵が推定されることを困難とし、セキュリティ機能を高めることができる。
【００１８】
具体的な一つの形態として、前記区間は、レジスタ（２０，２１）に設定されたアドレスにより規定され、前記アドレスは、前記演算を開始及び終了する命令の命令アドレスである。上記より、データプロセッサに読込まれ実行される命令がＲＯＭ等に格納されており、区間を規定する命令を書込めないような場合でも、命令アドレスを指定することで演算を行う区間を容易に規定できる。
【００１９】
別の形態として、前記アドレス（３１ａ）と、前記アドレスをタグとするサム値（３１ｂ）が格納されるキャッシュテーブル（３１）を含むキャッシュメモリ（３０）をさらに有する。前記キャッシュメモリは、リードアクセス要求を受けて前記キャッシュテーブルをアクセスし、前記リードアクセス要求より与えられたアドレスと、前記キャッシュテーブルに格納された前記アドレスとを比較し、一致すれば前記サム値を読み出す。上記より、データプロセッサは、同一区間について先にキャッシュメモリに格納されているサム値を比較対象として用いることができる。
【００２０】
更に別の形態として、前記データプロセッサ（２Ｃ）は、今回実行した命令のアドレスと前回実行した命令のアドレスとの差分値が１つの命令の命令語長よりも大きいとき、前記演算を開始する。上記より、今回実行した命令は、例えば分岐命令、ジャンプ命令、サブルーチンコール命令のそれぞれの飛び先で実行された命令と判定できるから、この命令のアドレスを、命令が不正に変化しない限りサム値が一定となる区間の開始アドレスとすることができる。
【００２１】
更に別の形態として、前記区間は、前記演算の開始を指示するオペコードを含む第１命令と、前記演算の終了を指示するオペコードを含む第２命令とから規定される。上記より、区間を規定する命令のビット数は、区間を規定するアドレスのビット数よりも小さいから、区間を規定するために要する容量を小さくできる。
【００２２】
更に別の形態として、前記第１命令は、前記命令フローでの分岐命令、ジャンプ命令、サブルーチンコール命令のそれぞれの飛び先で実行される命令であり、前記第２命令は、前記分岐命令、前記ジャンプ命令、サブルーチンリターン命令である。上記より、命令が不正に変化しない限りサム値が一定となる区間が規定される。
【００２３】
〔２〕別の観点によれば、命令を読込んで実行するデータプロセッサ（２）は、命令フローの所定区間（Ａ，Ｂ，Ｃ）毎に、前記区間に含まれる前記命令に対するサム値を演算し、前記区間で前記演算によって得られる前記サム値に所定値の加算を指示する命令を実行する。データプロセッサは、前記区間において前記演算で得られた前記サム値に前記所定値を加算した値が、予め設定された期待値と不一致であれば、前記命令の実行を停止、又は前記命令の実行順序を強制的に変更する。
【００２４】
上記より、データプロセッサが命令フローの所定区間に含まれる命令を繰返して実行する毎にサム値と所定値を加算した値を演算するから、命令を読込んで実行しながら、同一区間における命令が不正に変化したことを上記値と期待値の不一致により検出できる。そして、データプロセッサは、上記〔１〕のデータプロセッサと同様にして誤動作アタックにより暗号鍵が推定されることを困難とし、セキュリティ機能を高めることができる。
【００２５】
２．実施の形態の説明
次に、実施の形態について更に詳述する。
【００２６】
《実施形態１》
図１には本発明に係るデータプロセッサの一例が示される。同図に示されるデータプロセッサ２はデータバス３からバッファレジスタ４を介して命令レジスタ５に命令をフェッチし、フェッチした命令を命令デコーダ６が解読する。解読結果が与えられる制御回路９は命令実行を制御する。命令を実行するための実行部として、代表的に示されたレジスタ回路１２、演算回路１３及びプログラムカウンタ１１を有する。レジスタ回路１２は例えば汎用レジスタＲ０〜Ｒ７を有する。プログラムカウンタ１１は実行すべき命令アドレスを保有する。データプロセッサ２は不正なアタックを検出するための演算回路として、減算回路７とアキュムレータ８を有する。減算回路７は命令レジスタ５が保有する命令コードをアキュムレータ８が保有する値から減算し、減算結果をアキュムレータ８に戻す。減算回路７は減算結果がゼロになったとき、ゼロフラグＺＦＬＧをセットして制御回路９に供給する。制御回路９は、所定の命令実行区間において、セット状態のゼロフラグＺＦＬＧを検出すると、命令実行を停止し、或いは特定の無限ループに入って、本来のプログラム実行を停止する。所定の命令実行区間において、減算回路７及びアキュムレータ８の動作は命令レジスタ５にフェッチした命令の実行に並行して行われる。
【００２７】
所定の命令実行区間の始点は特定の命令ＡＤＤＳＵＭ．Ｂを実行するステップである。特定の命令ＡＤＤＳＵＭ．Ｂは、例えばサブルーチンの開始点、分岐命令の次、及び分岐先命令の直前に挿入される。前記特定の命令ＡＤＤＳＵＭ．Ｂはアキュムレータ８に調整値をプリセットし、以降の命令実行毎に減算回路７を用いた減算を１回づつ行う動作を指定する。調整値とは、前記特定の命令ＡＤＤＳＵＭ．Ｂの次の命令から所定の命令実行区間の終点の命令までの各命令の命令コードを加算した値（サム値）とされる。したがって、正規の命令実行フローに従って命令が実行されれば、前記所定の命令実行区間の終点において減算回路の値はゼロになり、ゼロフラグはセット状態にされる。前記所定の命令実行区間の終点は、条件分岐命令を実行するステップ、リターン命令を実行するステップ、及び分岐命令による分岐先命令の直前の命令の実行ステップである。分岐命令、リターン命令、及び分岐先命令の直前の命令には拡張コードが付加される。命令デコーダ６はこの拡張コードをデコードすることにより、制御回路９にゼロフラグＺＦＬＧを判別させ、セット状態であれば、その後の本来の命令実行を停止し、リセット状態であれば減算回路７及びアキュムレータ８による動作を停止させる。尚、ソースプログラムに対して前記特定の命令を挿入し、また、拡張コードを付加する箇所はコンパイルの段階で決定されている。
【００２８】
図２には図１のデータプロセッサ２による命令実行フローが例示される。図２には一つのサブルーチンを例示する。ソースプログラムで指定された処理に対応するステップはＳ２，Ｓ３，Ｓ５，Ｓ６，Ｓ７，Ｓ９，Ｓ１０である。ここではＡ，Ｂ，Ｃのそれぞれが前記所定の命令実行区間であり、その先頭の特定命令ＡＤＤＳＵＭ．Ｂは夫々の区間に固有の調整値を有する。例えばステップＳ１で調整値Ａがアキュムレータ８にプリセットされ、Ｓ２，Ｓ３で夫々の命令コードがアキュムレータ８から順次減算される。Ｓ３において拡張コードの解読結果に応答してゼロフラグＺＦＬＧはセット状態であることが検出されれば、それ以降本来の命令実行が停止される。そうでなければ命令実行はステップＳ４に続く。区間Ｂ，Ｃにおいても同様に機能される。
【００２９】
このようにして、データプロセッサ２では、命令フローの区間Ａ〜Ｃに含まれる命令を読込んで実行しながら、命令の異常を検出できる。さらにデータプロセッサ２では、命令の異常を検出したら、それ以降の命令の実行を停止するから、誤動作アタック等による暗号鍵の推定を困難とし、セキュリティ機能を高めることができる。
【００３０】
《実施形態２》
図３には本発明の実施形態２に係るデータプロセッサの概略構成が例示される。図１との相違は、誤動作アタックに対して命令実行を停止させる制御に特別な命令や拡張コードを挿入したりせず、その制御を行う命令実行区間を命令アドレスの区間によって規定しようとするものである。その区間を規定するのに、スタートアドレスレジスタ２０及びエンドアドレスレジスタ２１を有し、それらの値は逐次プログラムカウンタ（ＰＣ）１１の値とアドレスコンパレータ（ＣＭＰ）２２によって比較される。スタートアドレスレジスタ２０及びエンドアドレスレジスタ２１に対する初期値設定は例えばデータプロセッサ２Ａのパワーオンリセット時に図示を省略する不揮発性メモリから内部転送されて行われる。そのアドレス区間は、間に分岐命令及び分岐先命令を含まない区間である。制御回路９はコントロールフラグＣＦＬＧを有し、コントロールフラグＣＦＬＧはデータプロセッサ２Ａのリセット解除後にリセット状態に初期化される。アドレスコンパレータ２２は、ＰＣ１１が出力する命令実行アドレスがスタートアドレスレジスタ２０のスタートアドレスに一致することを検出すると、一致検出信号φＳを制御回路９Ａに与え、また、ＰＣ１１が出力する命令実行アドレスがエンドアドレスレジスタ２１のエンドアドレスに一致することを検出すると、一致検出信号φＥを制御回路９Ａに与える。制御回路９Ａは一致検出信号φＳに応答して、実行命令毎に加減算回路７Ａとアキュムレータ８を用いてにＩＲ５が保有する命令コードを累積加算演算させる。この累積加算演算は一致検出信号φＥが一致レベルにされたとき終了され、このとき、制御フラグがリセット状態であれば、それによって得られた累積加算値（サム値）を期待値レジスタ２３に内部転送させ、その後制御フラグをセット状態に反転させて、一連の累積加算演算処理を終了する。一方、一致検出信号φＥが一致レベルにされたとき、制御フラグＣＦＬＧがセット状態であれば、それによって得られた累積加算値（サム値）から期待値レジスタ２３が保有する累積加算値を減算する。減算結果がゼロであるか否かがゼロフラグＺＦＬＧによって制御回路９Ａに与えられる。制御回路はゼロフラグがゼロであれば後続の命令を可能とし、ゼロで無ければ其の後の本来の命令実行を停止する。
【００３１】
したがってデータプロセッサ２Ａは、誤動作アタックに対して命令実行を停止させる制御に特別な命令や拡張コードを挿入したりせず、その制御を行う命令実行区間を命令アドレスの区間によって規定することができる。命令コードに空きが無いような場合にも、不正アタックに対するセキュリティを高めることができる。
【００３２】
スタートアドレスとエンドアドレスのペアを複数設定する場合には当該ペア毎に比較回路２２と期待値レジスタ２３と制御フラグＣＦＬＧを設ければよい。
【００３３】
《実施形態３》
図４には、本発明の実施形態３に係るデータプロセッサの概略構成が例示される。同図に示されるデータプロセッサ２Ｂは、図３の期待値レジスタ２３と制御フラグＣＦＬＧに代えてキャッシュメモリ（ＣＡＣＨＥ）３０を有する。アドレスバッファはプログラムカウンタ11の値に従って命令をフェッチするときその命令アドレスをアドレスバス３３に出力する。命令アドレスがエンドアドレスレジスタ２１の命令アドレスに一致して信号φＥがアクティブになったとき、制御部９Ｂは、当該命令アドレスをアドレスバッファ３１からキャッシュメモリ３０に供給する。これによって、キャッシュメモリ３０はその命令アドレスを用いてインデックス動作を行い、インデックスされたタグアドレスを参照してキャッシュヒットか否かの判定を行い、その結果が制御部９Ｂに与えられる。制御部９Ｂは、キャッシュミスの場合、アキュムレータ８の累積加算されたサム値と当該キャッシュミスに係るキャッシュタグをアドレスをそのキャッシュエントリにフィルする。この後、再び、前記スタートアドレスからエンドアドレスまでの命令が実行された時は、一致信号φＥのイネーブルに応答してキャッシュメモリ３０はキャッシュヒットとされる。制御回路９Ｂはキャッシュヒットの場合、キャッメモリから読み出されたキャッシュヒットに係るサム値をアキュムレータ８が保持するサム値から減算させ、その結果がゼロか否かをゼロフラグＺＦＬＧを参照して判別する。ゼロであれば、以降の正規の命令実行を継続させ、ゼロで無ければ正規のプログラムの実行を停止する。図５にはキャッシュメモリのキャッシュエントリが例示される。キャッシュエントリＣＥ０〜ＣＥｉは、アドレスタグフィールドＴＡＧ、データフィールドＤＡＴ、管理フィールドＶＬＤを有する。アドレスタグフィールドＴＡＧには所定の命令実行区間のエンドアドレスが格納され、データフィールドにはその命令実行区間に対応される命令コードのサム値が格納され、管理フィールドには当該キャッシュエントリの有効又は無効を示すバリッドフラグが格納される。
【００３４】
このように、データプロセッサ２Ｂでは、同一区間において先にキャッシュメモリ３０に格納されていたサム値を比較対象として用いることができ、命令を実行しながら、１回目の演算によるサム値と２回目以降の演算によるサム値とを区別できる。
【００３５】
スタートアドレスとエンドアドレスのペアを複数設定する場合には当該ペア毎に比較回路２２を設けると共に、キャッシュメモリ３０はそのペアの数分だけキャッシュエントリを保有できればよい。
【００３６】
《実施形態４》
図６には、本発明の実施形態４に係るデータプロセッサの概略構成が例示される。データプロセッサ２Ｃは、プログラムカウンタ１１が１命令実行サイクル前に保有していた命令アドレスを保有するレジスタ（ＰＣ−１）３４をアドレスレジスタ２０、２１に代えて採用する。比較回路（ＣＭＰ）３５はレジスタ３４が保有する命令アドレスと、プログラムカウンタ１１が保有する命令アドレスとに命令の最大語長よりも大きな差があるかを判別する。例えば最大命令語長を４バイトとし、アドレスをバイトアドレスとすると、下位３ビットに５以上の差があるとき、検出信号φＤをアサートする。これにより、制御部９ＣのイネーブルフラグＥＦＬＧがセットされ、制御部９Ｃは、イネーブルフラグＥＦＬＧがリセットされるまで命令実行サイクル毎に前記サム値の累積加算を行う。この後、再び検出信号φＤがアサートされると、制御部９ＣはイネーブルフラグＥＦＬＧをリセットし、前記サム値の累積加算を終了して前記キャッシュメモリ３０のインデックス動作等を制御して図４と同様に動作制御する。前記出信号φＤがアサートされるのは、その条件より明らかなように、条件分岐やサブルーチン分岐、リターン命令を実行するときのように、命令実行順序が変更される区間の始点と終点において、検出信号φＤがアサートされる。この区間が所定の命令実行区間とされ、上記同様に、最初にその区間の命令が実行されることによってサム値が取得され、第２回目以降で取得されるサム値が最初に取得されたサム値と一致しているときは正規のプログラム実行が継続されるが、一旦不一致になると、それ以降正規のプログラム実行が停止される。
【００３７】
《実施形態５》
図７には、本発明の実施形態５に係るデータプロセッサの概略構成が例示される。データプロセッサ２Ｄは、図４に対して、サム値の累積加算演算を行う区間を規定するのにスタートアドレスレジスタ及びエンドアドレスレジスタを用いず、サム値の累積加算演算開始を指示する累積加算演算開始命令と、累積加算演算停止命令を用いる。それら命令はソースプログラムのコンパイル時にサブルーチン区間や、分岐による命令実行区間の先頭と終点に追加される。累積加算演算開始命令を命令デコーダ６Ａでデコードした時の制御動作は、図４で説明したＰＣ１１による実行命令アドレスがスタートアドレスレジスタのアドレスに一致した場合と同じであり、累積加算演算停止命令をデコードした時の制御動作は、図４で説明したＰＣ１１による実行命令アドレスがエンドアドレスレジスタのアドレスに一致した場合と同じである。その他の構成は図４と同じであるからその詳細な説明は省略する。この実施の形態によれば、累積加算演算開始命令及び累積加算演算停止命令に割り当て空き命令コードを要するが、アドレスレジスタ及び比較回路等のハードウェアを縮小することができる。
【００３８】
以上、本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
【００３９】
正規の命令実行停止の形態は、命令実行それ自体を完全停止する場合に限定されない。無意味な無限ループを構成する命令実行、若しくはＮＯＰ命令を連続的に実行するプログラムフローにはいってもよい。或いは強制的にリセット処理ルーチンに入ってもよい。何れにしても正規のプログラム実行が抑制されればよい。
【００４０】
さらに、上記処理は、命令を読込んで実行しながら命令の異常を検出するから、ソフトウェア的に更に別のチェック法を採用しても、データプロセッサのパフォーマンスの低下を抑制して、誤動作アタックに対するセキュリティ機能を高めることができる。
【図面の簡単な説明】
【００４１】
【図１】本発明の実施形態１に係るデータプロセッサの概略構成を例示する図である。
【図２】図１に示すデータプロセッサで実行される命令フローを例示するフローチャートである。
【図３】本発明の実施形態２に係るデータプロセッサの概略構成を例示する図である。
【図４】本発明の実施形態３に係るデータプロセッサの概略構成を例示する図である。
【図５】キャッシュメモリに含まれるキャッシュテーブルを例示する説明図である。
【図６】本発明の実施形態４に係るデータプロセッサの概略構成を例示する図である。
【図７】本発明の実施形態５に係るデータプロセッサの概略構成を例示する図である。
【符号の説明】
【００４２】
２，２Ａ〜２Ｃ  データプロセッサ
３  データバス
４  データバッファレジスタ
５  命令レジスタ
６，６Ａ  命令デコーダ
７  減算回路
７Ａ  加減算回路
８  アキュムレータ
９，９Ａ，９Ｂ，９Ｃ，９Ｄ  制御回路
１０  内部バス
１１  プログラムカウンタ
１２  汎用レジスタ回路
２０  スタートアドレスレジスタ
２１  エンドアドレスレジスタ
２２  コンパレータ
２３  期待値レジスタ
２５  アドレスバス
３０  キャッシュメモリ
３４  レジスタ
３５  コンパレータ
【図１】
2008287449.tif 000003
【図２】
2008287449.tif 000004
【図３】
2008287449.tif 000005
【図４】
2008287449.tif 000006
【図５】
2008287449.tif 000007
【図６】
2008287449.tif 000008
【図７】
2008287449.tif 000009