(57)【要約】【課題】保護対象プログラムの動作解析が困難となり、命令コードの読出し/書き換えを禁止することで実現していたプログラムの保護レベルを向上させることができるプログラム保護機能を持つプロセッサを提供する。【解決手段】復号化されて平文となった保護プログラムは命令実行のための命令読み出しのみ可能としてプログラム保護を行うプロセッサコアモジュール１００であって、保護プログラムの命令を実行中であるか否かを検出する検出手段２００と、検出手段２００で保護プログラム実行中であることが検出された場合は、実行中の命令のトレース情報生成を停止する停止手段４００とを備えるプログラム保護機能を持つプロセッサ。【選択図】図２
2007058588.tif 000002
【特許請求の範囲】
【請求項１】
復号化されて平文となった保護プログラムは命令実行のための命令読み出しのみ可能としてプログラム保護を行うプロセッサであって、
保護プログラムの命令を実行中であるか否かを検出する検出手段と、
前記検出手段で保護プログラム実行中であることが検出された場合は、実行中の命令のトレース情報生成を停止する停止手段
とを備えることを特徴とするプログラム保護機能を持つプロセッサ。
【請求項２】
前記停止手段は、保護プログラム実行中であることが検出された場合は、実際に実行した命令のトレース情報ではなくて、命令を実行しなかったことを示すコードからなるトレース情報を生成することを特徴とする請求項１記載のプログラム保護機能を持つプロセッサ。
【請求項３】
保護プログラム実行時に、実行中の命令が分岐命令で、分岐が成立し分岐先のアドレスが保護領域でない場合は、分岐命令の実行を示すコードと、分岐先アドレスを含むトレース情報を生成するトレース情報生成手段を有することを特徴とする請求項１又は請求項２記載のプログラム保護機能を持つプロセッサ。
【請求項４】
保護プログラム実行時に出力する分岐先アドレスは、アドレスの全情報であることを特徴とする請求項３記載のプログラム保護機能を持つプロセッサ。
【請求項５】
復号化されて平文となった保護プログラムは命令実行のための命令読み出しのみ可能としてプログラム保護を行うプロセッサであって、
保護プログラムの命令を実行中であるか否かを検出する検出手段と、
前記検出手段で保護プログラム実行中であることが検出された場合は、デバッグ例外の発生を停止する停止手段
とを有することを特徴とするプログラム保護機能を持つプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセッサコアを備えたマイクロプロセッサのセキュリティ技術に関し、特に保護プログラムの動作解析を困難とする，プログラム保護機能を持つプロセッサに関する。
【背景技術】
【０００２】
近年、マイクロプロセッサは、システム開発におけるプログラム開発効率向上のため、デバッグ機能を内蔵するようになっている。更に、プロセッサが高速化して外部からの信号観測が困難となってきたことから、プログラムやデータのトレース機能を内蔵して、システムの実機上におけるプログラム開発を支援する技術が開発されている。
【０００３】
また、ユーザが開発したプログラムが不正に監視や改竄されないため、プログラムをプロセッサ外部のメモリに保存する時は暗号化し、プロセッサ内部の保護されたメモリに読み込む時に復号化してプログラムを実行するようにしてプログラムを保護する技術が開示されている（例えば、特許文献１参照。）。
【０００４】
更にまた、複数のシステム間で交信するデータを保護する時には、各システムのデータ保護の方式が一致する必要がある。このようなデータ保護で用いられる暗号化などのプログラムは、複数のシステム開発ユーザに開発に必要な情報とともに提供されることになるが、そのプログラムの安全性からシステム開発ユーザにも、内容を開示しないことが望ましい。このようなシステム開発においては、内容が開示されない保護対象のプログラムと開発対象で開発者にとっては非保護状態のプログラムが混在することになる。このような状況において適切なプログラム保護が可能なプロセッサ技術が開発されている。
【０００５】
しかし、プログラムコードを複製するためのアクセスから保護しても、トレースが可能なデバッグ機能を内蔵したプロセッサでは、プログラム実行順序やデータアクセス情報などをトレース結果から得たり、デバッグ例外を用いてシングルステップで実行させ、レジスタ値の変化情報を得たりすることができる。これらの情報から解析容易ではないもの、例えばプログラムの処理内容（アルゴリズム）を解析できてしまうという問題点があった。
【特許文献１】特開２００４−２８０６７８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
本発明の目的は、復号化されて平文状態の保護対象プログラムがロードされた領域のメモリへの読み書き命令実行を禁止して,プログラムを保護するマイクロプロセッサに、保護対象のプログラム実行時は,トレース情報出力を抑止するとともに、デバッグ例外の発生を抑止するように制御する機能を設けることで、保護対象プログラムの動作解析が困難となり、命令コードの読出し/書き換えを禁止することで実現していたプログラムの保護レベルを向上させることができるプログラム保護機能を持つプロセッサを提供することにある。
【課題を解決するための手段】
【０００７】
本発明の一態様によれば、復号化されて平文となった保護プログラムは命令読み出しのみ可能としてプログラム保護を行うプロセッサであって、（イ）保護プログラムの命令を実行中であるか否かを検出する検出手段と、（ロ）検出手段で保護プログラム実行中であることが検出された場合は、実行中の命令のトレース情報生成を停止する停止手段とを備えるプログラム保護機能を持つプロセッサが提供される。
【０００８】
本発明の他の他の態様によれば、復号化されて平文となった保護プログラムは命令読み出しのみ可能としてプログラム保護を行うプロセッサであって、（イ）保護プログラムの命令を実行中であるか否かを検出する検出手段と、（ロ）検出手段で保護プログラム実行中であることが検出された場合は、デバッグ例外の発生を停止する停止手段とを有するプログラム保護機能を持つプロセッサが提供される。
【発明の効果】
【０００９】
本発明のプログラム保護機能を持つプロセッサによれば、復号化されて平文状態の保護対象プログラムがロードされた領域のメモリへの読み書き命令実行を禁止して,プログラムを保護するマイクロプロセッサに、保護対象のプログラム実行時は,トレース情報出力を抑止するとともに、デバッグ例外の発生を抑止するように制御する機能を設けることで、保護対象プログラムの動作解析が困難となり、命令コードの読出し書き換えを禁止することで実現していたプログラムの保護レベルを向上させることができる。
【発明を実施するための最良の形態】
【００１０】
次に、図面を参照して、本発明の実施の形態を説明する。以下の図面の記載において、同一又は類似の部分には同一又は類似の符号を付している。ただし、図面は模式的なものであり、各ブロックの平面寸法等は現実のものとは異なることに留意すべきである。又、図面相互間においても互いの寸法の関係や比率が異なる部分が含まれていることはもちろんである。
【００１１】
また、以下に示す実施の形態は、この発明の技術的思想を具体化するための装置や方法を例示するものであって、この発明の技術的思想は、各ブロックの構成部品の配置等を下記のものに特定するものでない。この発明の技術的思想は、特許請求の範囲において、種々の変更を加えることができる。
【００１２】
[第１の実施の形態]
本発明の第１の実施の形態に係るプログラム保護機能を持つプロセッサを図１乃至図５を用いて説明する。図１乃至図４のブロック図の信号線は、本発明の第１の実施の形態に係るプログラム保護機能を持つプロセッサの説明で用いる主要なデータまたは制御信号を示している。
【００１３】
なお、以下の説明において、１つまたは複数のプロセッサやメモリを内部バスで接続して構成されるプロセッサ１との混乱を避けるため、本発明の第１の実施の形態に係るプログラム保護機能を持つプロセッサをプロセッサコアモジュール１００と記す。
【００１４】
本発明の第１の実施の形態に係るプログラム保護機能を持つプロセッサは、復号化されて平文となった保護プログラムは命令実行のための命令読み出しのみ可能としてプログラム保護を行うプロセッサであって、保護プログラムの命令を実行中であるか否かを検出する検出手段と、検出手段で保護プログラム実行中であることが検出された場合は、実行中の命令のトレース情報生成を停止する停止手段とを備える。
【００１５】
又、本発明の第１の実施の形態に係るプログラム保護機能を持つプロセッサにおいて、停止手段は、保護プログラム実行中であることが検出された場合は、実際に実行した命令のトレース情報ではなくて、命令を実行しなかったことを示すコードからなるトレース情報を生成する。
【００１６】
又、本発明の第１の実施の形態に係るプログラム保護機能を持つプロセッサにおいて、保護プログラム実行時に、実行中の命令が分岐命令で、分岐が成立し分岐先のアドレスが保護領域でない場合は、分岐命令の実行を示すコードと、分岐先アドレスを含むトレース情報を生成するトレース情報生成手段を有する。
【００１７】
又、本発明の第１の実施の形態に係るプログラム保護機能を持つプロセッサにおいて、保護プログラム実行時に出力する分岐先アドレスは、アドレスの全情報であっても良い。
【００１８】
又、本発明の第１の実施の形態に係るプログラム保護機能を持つプロセッサは、復号化されて平文となった保護プログラムは命令実行のための命令読み出しのみ可能としてプログラム保護を行うプロセッサであって、保護プログラムの命令を実行中であるか否かを検出する検出手段と、検出手段で保護プログラム実行中であることが検出された場合は、デバッグ例外の発生を停止する停止手段とを有する。
【００１９】
又、保護プログラムの命令を実行中であるか否かを検出する検出手段は、１個または複数個の領域から構成されるプログラムメモリで少なくとも平文の保護プログラムがロードされる領域に対応して、領域内のプログラムが保護状態であるか否かを示す保護ビットを有し、プログラムカウンタの示すアドレスのプログラムメモリから命令を読み出すとともに、プログラムカウンタが示すアドレスが含まれる領域の保護ビットを読み出して、命令が実行される場合に保護プログラムの命令を実行中であるか否かを検出する。
【００２０】
本発明の実施の形態に係るプログラム保護機能を持つプロセッサによれば、ユーザの開発中のプログラム（非保護プログラム）ではトレース情報を生成・表示することで実機上のデバッグを容易として開発効率を維持しながら、保護プログラムでは、実行履歴を示すトレース情報生成を抑制することで、例えば、保護プログラムにおけるプログラムループの状況やループ回数などの情報を用いたアルゴリズム解析が行われないようにして、保護機能レベルを向上することができる。
【００２１】
本発明の実施の形態に係るプログラム保護機能を持つプロセッサによれば、プロセッサに実装する場合、トレース情報は必要最小限のものが望ましく、トレース情報を圧縮するため、命令の実行アドレスを省いて命令の種類と分岐先アドレスを出力するように構成したトレース情報生成システムが用いられる。このようなシステムで、非保護プログラムと保護プログラムとが混在するように動作した時に、保護プログラムから非保護プログラムに分岐したアドレスが得られるので非保護プログラムのトレース情報解析をより確実に行うことができる。
【００２２】
本発明の実施の形態に係るプログラム保護機能を持つプロセッサによれば、ユーザの開発中のプログラム（非保護プログラム）では、デバッグ例外を用いて,指定時点のプロセッサ内の各種情報を表示させて,デバッグを容易として開発効率を維持しながら、保護プログラムでは、デバッグ例外を禁止することで,シングルステップ実行毎にプロセッサのレジスタなどの値の変化から命令の種類などを知ることができないようにして、保護機能レベルを向上することができる。
【００２３】
（プロセッサの全体構成）
図１は、命令メモリ保護とトレース可能なデバッグ機能を実装したプロセッサの概略構成図であり、デバッグ機能や保護プログラムのロード機能を実現するデバッグモジュール１２０と、保護プログラム書込みモジュール１１０と、プロセッサコアモジュール１００とを内蔵したプロセッサ１の模式的ブロック構成図である。
【００２４】
プロセッサ１は、図１に示すように、命令メモリ２００,実行部４００及びトレース情報生成ユニット３００を備えるプロセッサコアモジュール１００と、トレースメモリ３２を内蔵するトレース装置２０及びデバッグインターフェース２２を備えるデバッグモジュール１２０と、暗号ユニット１１２及びＤＭＡコントローラ１１４を備える保護プログラム書込みモジュール１１０と、プロセッサコアモジュール１００，デバッグモジュール１２０及び保護プログラム書込みモジュール１１０とそれぞれバス３６，３８及び６０を介して接続するメインバス３４と、プロセッサコアモジュール１００と保護プログラム書込みモジュール１１０間を接続するリード/ライト（Ｒ/Ｗ）バス６２と、プロセッサコアモジュール１００とデバッグモジュール１２０間を接続するトレース情報バス６４と、プロセッサ１の外部に配置されるデバッグ装置１２とデバッグモジュール１２０間を接続するデバッグ出力バス６６と、プロセッサ１の外部に配置される外部メモリ２とメインバス３４間を接続する外部バス６８とから構成される。
【００２５】
プロセッサコアモジュール１００は、プロセッサ命令を読み込み実行する。デバッグモジュール１２０は、デバッグインターフェース２２においてデバッグ出力バス６６を介して外部のデバッグ装置１２に接続されており、デバッグ時に、外部のデバッグ装置１２によって制御可能である。
【００２６】
プロセッサコアモジュール１００内に設けられたトレース情報生成ユニット３００は、トレース情報バス６４を介してトレース装置２０に接続されており、プロセッサコアモジュール１００の命令実行状態を示す情報を入力して、デバッグモジュール１２０内のトレース装置２０にトレース情報を出力する。
【００２７】
トレース装置２０は、図１に示すように、プロセッサ１のプログラム実行状態を示すトレース情報を格納するトレースメモリ３２を備え、トレースメモリ３２の内容のトレース解析を行う。
【００２８】
トレース動作時には、プログラムを実行したプロセッサコアモジュール１００内のトレース情報生成ユニット３００から、命令の種類，アドレス情報，データ情報，及びトレース情報生成ユニット３００の動作状況などからなるトレース情報を出力させて、トレース装置２０に入力する。
【００２９】
トレース動作終了後、デバッグ装置１２は、トレースメモリ３２の内容をトレース装置２０から読み出し、プロセッサコアモジュール１００上で実行中のプログラムをトレース解析プログラムを用いて解析し、トレース中のプロセッサコアモジュール１００のプログラム実行状況を出力する。
【００３０】
プロセッサ１において、図１に示すように、プログラム保護機能を有するプロセッサコアモジュール１００は、リード/ライト（Ｒ/Ｗ）バス６２を介して、保護プログラム書込みモジュール１１０と接続され、命令メモリ２００にプログラムが書き込まれる。更に、  プロセッサコアモジュール１００は、トレース情報バス６４を介して、デバッグモジュール１２０と接続され、トレース情報生成ユニット３００からトレース情報を出力する。
【００３１】
保護プログラム書込みモジュール１１０は、ＤＭＡコントローラ１１４によって、バス６０,メインバス３４及び外部バス６８を介して接続された外部メモリ２からプログラムを読み出して、命令メモリ２００に書き込む。保護されたプログラムの場合は、外部メモリ２上では暗号化されていて、ＤＭＡコントローラ１１４は読み出したプログラムを暗号ユニット１１２で復号化し、平文に変換された保護プログラムと保護情報信号ＰＩＳＡを命令メモリ２００に書き込む。
【００３２】
デバッグモジュール１２０は、トレース情報バス６４を介して、トレース情報生成ユニット３００からトレース情報を受信して、トレース装置２０内のトレースメモリ３２に保存するとともに、デバッグインターフェース２２及びデバッグ出力バス６６を介して、プロセッサ１の外部に設けられたデバッグ装置１２にトレース情報を出力する。
【００３３】
（プロセッサコアモジュール）
図２は、プロセッサコアモジュール１００のプログラム保護機能に係る主要なブロックを示す模式的ブロック構成図である。
【００３４】
プロセッサコアモジュール１００は、図２に示すように、命令ＲＡＭ２４及び保護ビット信号格納部２８を備え,実行するプログラムの命令コードを記憶する命令メモリ２００と、プロセッサコアモジュール１００の命令実行状況を示すトレース情報を生成するトレース情報生成ユニット３００と、保護情報信号生成回路３３及び命令フェッチユニット３０を備え,命令メモリ２００から読み出された命令コードを解読実行するとともに命令メモリ２００から次に実行する命令コード読み出す実行部４００を備える。
【００３５】
プロセッサコアモジュール１００は、保護プログラム書込みモジュール１１０からバス６２を介して、保護情報信号ＰＩＳＡ、及びアドレス/データＡＤＤ/ＤＡＴを命令メモリ２００に受信する。
【００３６】
命令メモリ２００は、４つの記憶領域（ブロック１〜ブロック４）を備える命令ＲＡＭ２４と、それぞれの記憶領域（ブロック１〜ブロック４）に対応し，ブロック１保護ビットを格納するブロック１保護ビット信号格納部２８1，ブロック２保護ビットを格納するブロック２保護ビット信号格納部２８2，ブロック３保護ビットを格納するブロック３保護ビット信号格納部２８3及びブロック４保護ビットを格納するブロック４保護ビット信号格納部２８4を備える保護ビット信号格納部２８を備える。
【００３７】
プログラム書込みモジュール１１０が出力するアドレスの命令ＲＡＭ２４にプログラム（データ）が書き込まれ、同時に書き込んだプログラムが復号化した保護プログラムかどうかを示す保護情報信号ＰＩＳＡの値がプログラムを書き込んだ命令ＲＡＭ２４の記憶領域に対応するブロック（１〜４）保護ビット信号格納部（２８1〜２８4）に書き込まれる。
【００３８】
保護プログラムの場合は、保護情報信号ＰＩＳＡがアクティブとなり、ブロック（１〜４）保護ビット信号格納部（２８1〜２８4）にはデータ「１」が書き込まれる。そして、実行部４００の命令フェッチユニット３０が出力するフェッチアドレスＦＡＳによって指定された命令メモリ２００内の領域に記憶された命令コードと対応するブロック保護ビットを読み出して、命令レジスタ２６と保護ビット信号格納レジスタ２９に出力する。
【００３９】
実行部４００は、命令レジスタ２６と保護ビット信号格納レジスタ２９に接続され, ブロック保護ビットを受信する保護情報信号生成回路３３及び命令フェッチユニット３０を備え、命令メモリ２００にフェッチアドレスＦＡＳを出力すると共に、トレース情報生成ユニット３００に対して、保護情報信号ＰＩＳＢ,トレースモード信号ＴＭＳ０及びトレースアドレス信号ＴＡＳ０を送信する。実行部４００の内部においては、保護情報信号ＰＩＳＢは保護情報信号生成回路３３から命令フェッチユニット３０に対しても送信される。
【００４０】
更に詳細に、実行部４００は、命令レジスタ２６に読み込まれた命令コードを実行するプロセッサコアの機能を実現する主要部分であり、命令を実行した場合に命令コードと同時に読み出したブロック保護ビットの値を用いて保護情報信号生成回路３３で、保護情報信号ＰＩＳＢを生成する。例えば、実行した命令コードが保護プログラムの書き込まれたブロック２から読み出された場合は、ブロック２保護ビット信号格納部２８2に書き込まれたデータ「１」が保護ビット信号格納レジスタ２９に読み出され、保護情報信号ＰＩＳＢとしてデータ「１」が生成される。
【００４１】
また、実行部４００は、命令を実行すると、保護情報信号ＰＩＳＢと図５に種類を示すその命令のトレースモード信号ＴＭＳ０を、命令が分岐やジャンプ命令の場合はトレースアドレス信号ＴＡＳ０を、トレース情報生成ユニット３００に出力する。
【００４２】
トレースモード信号の種類には、図５に示すように、現在、実行する命令が何もない場合を示すコード（ＮＩ＝４’ｂ００００）、分岐命令,例外発生時の命令,デバッグモード中の命令,以外の命令を実行したことを示すコード（ＩＥ＝４’ｂ０００１）、静的に分岐先が分かる分岐・ジャンプ命令を実行し分岐が発生したことを示すコード（ＢＴ＝４’ｂ００１０）、静的に分岐先が分からない分岐・ジャンプ命令を実行したことを示すコード（ＪＰ＝４’ｂ００１１）、現在、実行中の命令で、例外が発生したことを示すコード（ＥＸ＝４’ｂ０１０１）、デバッグ例外の発生と、デバッグモード中に命令を実行したことを示すコード（ＤＭ＝４’ｂ１００１）、静的に分岐先が分かる分岐・ジャンプ命令を実行し分岐が発生しなかったことを示すコード（ＢＮ＝４’ｂ１００１）等が含まれている。
【００４３】
（トレース情報生成ユニット）
次に、保護された命令を実行する場合の、プロセッサコアモジュール１００の外部に出力されるトレース情報の取り扱いについて図３を参照しながら説明する。図３は、トレース情報生成ユニット３００の保護情報制御部に係る主要なブロックを示す模式的ブロック構成図である。
【００４４】
トレース情報生成ユニット３００は、図３に示すように、実行部４００が出力する実行された命令の保護情報信号ＰＩＳＢと命令ＲＡＭ２４の４つのブロック保護情報ＢＰＩを用いて、実行部４００からトレースモード信号ＴＭＳ０とトレースアドレス信号ＴＡＳ０を受信し，実行された命令をトレースモード信号ＴＭＳとトレースアドレス信号ＴＡＳに変換し、デバッグモジュール１２０内のトレース装置２０に対して出力する。
【００４５】
更に詳細に、トレース情報生成ユニット３００は、図３に示すように、トレースアドレス信号ＴＡＳ０を受信するアドレスデコーダ４４及びトレースアドレス出力ユニット５４と、トレースモード信号ＴＭＳ０を受信する分岐先アドレス出力判定回路４６及びトレースモード出力ユニット５２と、アドレスデコーダ４４の出力信号Ｂ１,Ｂ２,Ｂ３,Ｂ４及び命令ＲＡＭ２４の４つのブロック保護情報ＢＰＩにそれぞれ対応するブロック１保護ビット信号ＰＢ１, ブロック２保護ビット信号ＰＢ２, ブロック３保護ビット信号ＰＢ３, ブロック４保護ビット信号ＰＢ４をそれぞれ受信するＡＮＤゲート４０1,４０2,４０3及び４０4と、ＡＮＤゲート４０1,４０2,４０3及び４０4の出力信号を受信するＯＲゲート４２と、ＯＲゲート４２の出力信号と分岐先アドレス出力判定回路４６からの出力信号ＢＡＳを受信するＡＮＤゲート４７と、分岐先アドレス出力判定回路４６の出力信号ＢＡＳを反転するインバータ４８と、ＡＮＤゲート４７の出力信号とインバータ４８の出力信号を受信するＯＲゲート４９と、保護情報信号ＰＩＳＢとＯＲゲート４９の出力信号を受信し, トレースアドレス出力ユニット５４及びトレースモード出力ユニット５２に対してトレース情報出力制御信号ＴＩＣを出力するＡＮＤゲート５０とを備える。
【００４６】
分岐先アドレス出力判定回路４６からの出力信号ＢＡＳは、ＡＮＤゲート４７及びインバータ４８のみならず、アドレスデコーダ４４にも入力されている。トレースモード信号ＴＭＳ０を受信したトレースモード出力ユニット５２は、実行された命令をトレースモード信号ＴＭＳに変換し、トレースアドレス信号ＴＡＳ０を受信したトレースアドレス出力ユニット５４は、実行された命令をトレースアドレス信号ＴＡＳに変換する。
【００４７】
トレース情報は、上述のように実行部４００から出力され、トレース情報生成ユニット３００を介して、プロセッサコアモジュール１００の外部に出力される。
【００４８】
トレース情報生成ユニット３００において、保護情報信号ＰＩＳＢがデータ「０」で、実行した命令が非保護状態の場合は、実行部４００から出力されたトレースモード信号ＴＭＳ０とトレースアドレス信号ＴＡＳ０をそのまま、プロセッサコアモジュール１００から出力するようにトレースモード出力ユニット５２とトレースアドレス出力ユニット５４が制御される。
【００４９】
トレース情報生成ユニット３００において、保護情報信号ＰＩＳＢがデータ「１」で、実行した命令が保護状態の場合は、プロセッサコアモジュール１００から出力するトレースモード信号ＴＭＳは、実行部４００から出力されたトレースモード信号ＴＭＳ０ではなく命令を実行しなかったことを示すコード（図５のＮＩコード＝４’ｂ００００）を出力するようにトレースモード出力ユニット５２が制御される。また、同時にトレースアドレス信号ＴＡＳは、全て０になるようにトレースアドレス出力ユニット５４が制御され、実際のトレースアドレス情報が出力されないように制御される。
【００５０】
ただし、保護情報信号ＰＩＳＢがデータ「１」の場合でも、実行部４００から出力されたトレースモード信号ＴＭＳ０が、分岐やジャンプを示すコード（図５のＢＴ＝４’ｂ００１０, ＪＰ＝４’ｂ００１１, ＥＸ＝４’ｂ０１０１）で、分岐先アドレス出力判定回路４６の出力信号ＢＡＳがアクティブとなる場合は、実行部４００から出力されたトレースアドレス信号ＴＡＳ０が示す分岐先アドレスが保護された命令ＲＡＭ２４のブロックであるか否かを調べる。  
分岐先アドレスが保護された命令ＲＡＭ２４のブロックの場合は、プロセッサコアモジュール１００から出力するトレースモード信号ＴＭＳは、実行部４００から出力されたトレースモード信号ＴＭＳ０ではなく,命令を実行しなかったことを示すコード（図５のＮＩコード＝４’ｂ００００）を出力するようにトレースモード出力ユニット５２が制御される。また、同時にトレースアドレス信号ＴＡＳは、全て０になるようにトレースアドレス出力ユニット５４が制御され、実際のトレースアドレス情報が出力されないように制御される。
【００５１】
分岐先アドレスが保護された命令ＲＡＭ２４のブロックでない場合は、保護プログラムから非保護プログラムへの分岐が行われたので、実行部４００から出力されたトレースモード信号ＴＭＳ０とトレースアドレス信号ＴＡＳ０をそのままプロセッサコアモジュール１００のトレース情報生成ユニット３００から、トレース情報バス６４を介して、デバッグモジュール１２０内のトレース装置２０に出力する。トレース装置２０は、このトレースモード信号ＴＭＳ０とトレースアドレス信号ＴＡＳ０からなるトレース情報をトレースメモリ３２に格納することができる。
【００５２】
分岐先のアドレス情報をトレースアドレス信号ＴＡＳとして出力する場合、現在実行中のプログラムカウンタの値と分岐先のアドレスの差分を出力したり、上位のアドレスが同じ場合に、この上位アドレスを出力しないように制御するプロセッサコアモジュール１００であっても、保護状態の分岐命令が、非保護領域に分岐する場合は、保護状態のプログラムカウンタの値が出力されていないため、必ず、３２ビットのアドレス情報を出力するように制御する。
【００５３】
なお、図３では命令メモリ２００のサイズは４ＫＢとしている。このため、命令ＲＡＭ２４のブロックが保護状態であるかを判定するためのアドレスデコーダ４４には、アドレスの上位より２２ビット分が入力されている。これは、命令ＲＡＭ２４のサイズが４ＫＢで、開始アドレスが０ｘ００００＿００００の場合は、
ブロック１のアドレスは、０ｘ００００＿００００〜０ｘ００００＿０３ＦＦ
ブロック２のアドレスは、０ｘ００００＿０４００〜０ｘ００００＿０７ＦＦ
ブロック３のアドレスは、０ｘ００００＿０８００〜０ｘ００００＿０８ＦＦ
ブロック４のアドレスは、０ｘ００００＿０Ｃ００〜０ｘ００００＿０ＦＦＦ
となるため、アドレスの３１ビット目から１２ビット目までの２０ビットが、０ｘ００００＿００である時は、命令ＲＡＭ２４を示し、アドレスの１１ビット目と１０ビット目の２ビットでどのブロックかを示す信号が生成されて、該当するブロックの保護ビットの値を出力することができる。
【００５４】
（命令フェッチユニット）
次に、保護された命令を実行する場合のデバッグ例外の取り扱いについて、図４を参照しながら説明する。
【００５５】
図４は、命令フェッチユニット３０のフェッチアドレス生成部３１に係る主要なブロックを示す模式的ブロック構成図である。
【００５６】
命令フェッチユニット３０のフェッチアドレス生成部３１は、図４に示すように、保護情報信号ＰＩＳＢを反転するインバータ８２と、インバータ８２の出力信号を入力端子の片側において受信し,例外信号ＥＸＳ１,ＥＸＳ２,…,ＥＸＳ５を入力端子の他方の側においてそれぞれ受信するＡＮＤゲート８０1,８０2,…,８０5と、ＡＮＤゲート８０1,８０2,…,８０5の出力信号を受信する例外ベクタアドレス生成回路７６と、ＡＮＤゲート８０1,８０2,…,８０5の出力信号を受信し,例外ベクタアドレス選択信号ＥＶＳを出力するＯＲゲート７８と、フェッチアドレスＦＡＳを受信する加算回路７４と、加算回路７４の出力信号,分岐アドレスＢＴＡ及び分岐成立選択信号ＢＴＳを受信する選択回路７２と、選択回路７２の出力信号,例外ベクタアドレス生成回路７６の出力信号及び例外ベクタアドレス選択信号ＥＶＳを受信する選択回路７１と、選択回路７１の出力信号を受信し, フェッチアドレスＦＡＳを出力するアドレスレジスタ（ＰＣ）７０とを備える。
【００５７】
デバッグ例外が発生し、プロセッサコアモジュール１００がその例外信号ＥＸＳ１,ＥＸＳ２,…,ＥＸＳ５を受け付けると、それぞれのデバッグ例外に応じて特定のアドレスレジスタ７０等に例外発生状況を示すデータが保存され、例外ベクタアドレス生成回路７６によって指定された例外ベクタアドレスを開始アドレスとする処理プログラムへ分岐する。
【００５８】
各処理プログラムによって、デバッグプログラムが起動される。プロセッサコアモジュール１００は、デバッグモジュール１２０を介して、外部のデバッグ装置１２とデバッグプログラムデータの入出力を実行し、デバッグ操作が実行される。この時デバッグ機能を実現するために使用されるデバッグ例外には、以下のような種類がある。
【００５９】
（ａ）シングルステップ
デバッグレジスタのシングルステップビットがデータ「１」にセットされると、命令の実行ごとに、デバッグ例外を発生する。デバッグ例外を発生した場合は、実行中の命令のプログラムカウンタの値を定められたデバッグ用プログラムカウンタレジスタに格納する。
【００６０】
（ｂ）命令アドレスブレーク
命令ブレークアドレスレジスタの値と実行している命令のプログラムカウンタ値が一致した場合に、デバッグ例外を発生さる。
【００６１】
（ｃ）データアドレス及びバリューブレーク
データブレークアドレスレジスタの値とロードストア命令でのデータアドレスの値が一致した場合に、デバッグ例外を発生させる。
【００６２】
（ｄ）デバッグブレーク命令
デバッグブレーク命令を実行した場合にデバッグ例外を発生させる。
【００６３】
（ｅ）デバッグ割込み
プロセッサの外部からのデバッグ割込み信号がアサートされると、デバッグ例外を発生する。
【００６４】
実行部４００の命令フェッチユニット３０内において、次に実行する命令のアドレスを生成するフェッチアドレス生成部３１では、図４に示すように、優先順位の一番高い例外信号が入力された時に、その信号に対応した例外ベクタアドレスが例外ベクタアドレス生成回路７６から出力され、アドレスレジスタ（ＰＣ）７０に書き込まれ、フェッチアドレスＦＡＳとして出力される。しかしながら、保護された命令を実行中は、保護情報信号ＰＩＳＢが「１」であるため、各例外信号ＥＸＳ１,ＥＸＳ２,…,ＥＸＳ５は、図示しないそれぞれの例外信号生成回路の出力値に係らず「０」となって、例外ベクタアドレスの生成やアドレス選択が行われない。
【００６５】
また、保護情報信号ＰＩＳＢで制御された例外信号ＥＸＳ１,ＥＸＳ２,…,ＥＸＳ５の出力は、図示しないがプロセッサコアモジュール１００内の例外発生時の各種データ保存動作回路にも入力されている。これによって、デバッグ例外が発生しないように制御される。
【００６６】
本発明の実施の形態に係るプログラム保護機能を持つプロセッサコアモジュールによれば、保護されたプログラムの命令実行時に、トレース情報の出力を抑制し、デバッグ例外の発生を抑制して、プログラムコードに関する間接的な情報生成を困難とすることでプログラムの保護性能が高く、プログラム保護機能を持つプロセッサを提供することができる。
【００６７】
本発明の実施の形態に係るプログラム保護機能を持つプロセッサによれば、ユーザの開発中のプログラム（非保護プログラム）ではトレース情報を生成・表示することで実機上のデバッグを容易として開発効率を維持しながら、保護プログラムでは、実行履歴を示すトレース情報生成を抑制することで、例えば、保護プログラムにおけるプログラムループの状況やループ回数などの情報を用いたアルゴリズム解析が行われないようにして、保護機能レベルを向上することができる。
【００６８】
本発明の実施の形態に係るプログラム保護機能を持つプロセッサによれば、プロセッサに実装する場合、トレース情報は必要最小限のものが望ましく、トレース情報を圧縮するため、命令の実行アドレスを省いて命令の種類と分岐先アドレスを出力するように構成したトレース情報生成システムが用いられる。このようなシステムで、非保護プログラムと保護プログラムとが混在するように動作した時に、保護プログラムから非保護プログラムに分岐したアドレスが得られるので非保護プログラムのトレース情報解析をより確実に行うことができる。
【００６９】
本発明の実施の形態に係るプログラム保護機能を持つプロセッサによれば、ユーザの開発中のプログラム（非保護プログラム）では、デバッグ例外を用いて,指定時点のプロセッサ内の各種情報を表示させて,デバッグを容易として開発効率を維持しながら、保護プログラムでは、デバッグ例外を禁止することで,シングルステップ実行毎にプロセッサのレジスタなどの値の変化から命令の種類などを知ることができないようにして、保護機能レベルを向上することができる。
【００７０】
[その他の実施の形態]
上記のように、本発明の実施の形態によって記載したが、この開示の一部をなす論述および図面はこの発明を限定するものであると理解すべきではない。この開示から当業者には様々な代替実施の形態、実施の形態および運用技術が明らかとなろう。
【００７１】
このように、本発明はここでは記載していない様々な実施の形態等を含むことは勿論である。したがって、本発明の技術的範囲は上記の説明から妥当な特許請求の範囲に係る発明特定事項によってのみ定められるものである。
【図面の簡単な説明】
【００７２】
【図１】命令メモリ保護とトレース可能なデバッグ機能を実装したプロセッサの模式的ブロック構成図。
【図２】プログラム保護機能を持つプロセッサコアモジュールのプログラム保護機能に係る主要な模式的ブロック構成図。
【図３】トレース情報生成ユニットの保護情報制御部に係る主要な模式的ブロック図。
【図４】命令フェッチユニットのフェッチアドレス生成部に係る主要な模式的ロック構成図。
【図５】トレースモード信号の種類を示す図。
【符号の説明】
【００７３】
１…プロセッサ
２…外部メモリ
１２…デバッグ装置
２０…トレース装置
２２…デバッグインターフェース
２４…命令ＲＡＭ
２６…命令レジスタ
２８…保護ビット信号格納部
２８1…ブロック１保護ビット信号格納部
２８2…ブロック２保護ビット信号格納部
２８3…ブロック３保護ビット信号格納部
２８4…ブロック４保護ビット信号格納部
２９…保護ビット信号格納レジスタ
３０…命令フェッチユニット
３１…フェッチアドレス生成部
３２…トレースメモリ
３３…保護情報信号生成回路
３４…メインバス
３６，３８…バス
４０1, ４０2, ４０3，４０4, ４７，５０，８０1, ８０2, ８０3…ＡＮＤゲート
４２，４９，７８…ＯＲゲート
４４…アドレスデコーダ
４６…分岐先アドレス出力判定回路
４８，８２…インバータ
５２…トレースモード出力ユニット
５４…トレースアドレス出力ユニット
６０…バス
６２…リード／ライト（Ｒ／Ｗ）バス
６４…トレース情報バス
６６…デバッグ出力バス
６８…外部バス
７１，７２…選択回路
７４…加算回路
１００…プロセッサコアモジュール
１１０…保護プログラム書き込みモジュール
１１２…暗号ユニット
１１４…ＤＭＡコントローラ
１２０…デバッグモジュール
２００…命令メモリ
３００…トレース情報生成ユニット
【図１】
2007058588.tif 000003
【図２】
2007058588.tif 000004
【図３】
2007058588.tif 000005
【図４】
2007058588.tif 000006
【図５】
2007058588.tif 000007