(57)【要約】【課題】外部からのアクセスを効果的に禁止することのできるマイクロプロセッサを提供する。【解決手段】プロセッサコア１１０を備えたマイクロプロセッサ１００であって、外部から取得した情報が暗号化された暗号化情報である場合に、当該暗号化情報を復号化し、平文を得る復号化手段１３４と、復号化手段１３４によって復号化された平文を保持する平文保持手段１２３と、復号化手段１３４による復号化が施されたか否かに基づいて、平文に対し保護又は非保護を示す保護属性を付与する保護属性付与手段１３５と、平文保持手段１２３に保持されている平文へのアクセス要求を取得するアクセス要求取得手段１２４と、アクセス要求取得手段１２４が取得したアクセス要求の要求種別を特定する要求元特定手段１２４と、要求元および保護属性に基づいて平文へのアクセスを制限するアクセス制御手段１２４とを備えた。【選択図】        図１
2006072963.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサコアを備えたマイクロプロセッサであって、
前記プロセッサコアが利用する情報を外部から取得する情報取得手段と、
前記情報取得手段が取得した情報が暗号化された暗号化情報である場合に、当該暗号化情報を復号化し、平文情報を得る復号化手段と、
前記復号化手段によって復号化された前記平文情報を保持する平文情報保持手段と、
前記復号化手段による復号化が施されたか否かに基づいて、前記平文情報に対し保護又は非保護を示す保護属性を付与する保護属性付与手段と、
前記平文情報保持手段に保持されている前記平文情報へのアクセス要求を取得するアクセス要求取得手段と、
前記アクセス要求取得手段が取得した前記アクセス要求の要求種別を特定する要求種別特定手段と、
前記要求種別特定手段が特定した前記要求種別および前記保護属性付与手段が付与した前記保護属性に基づいて前記平文情報へのアクセスを制御するアクセス制御手段と
を備えたことを特徴とするマイクロプロセッサ。
【請求項２】
前記保護属性付与手段は、前記復号化手段によって復号化された前記平文情報に対して、保護を示す保護属性を付与し、
前記アクセス制御手段は、保護を示す保護属性が付与された前記平文情報へのアクセスを制限することを特徴とする請求項１に記載のマイクロプロセッサ。
【請求項３】
前記平文情報保持手段は、前記情報取得手段が取得した情報が暗号化されていない平文情報である場合に、当該平文情報を保持し、
前記保護属性付与手段は、前記復号化手段によって復号化されていない前記平文情報に対し非保護を示す保護属性を付与し、
前記アクセス制御手段は、非保護を示す保護属性が付与された前記平文情報へのアクセスを許可することを特徴とする請求項１または２に記載のマイクロプロセッサ。
【請求項４】
前記アクセス制御手段は、前記要求種別特定手段が特定した前記要求種別が、予め登録されている登録要求種別以外の要求種別である場合に、前記平文情報へのアクセスを制限することを特徴とする請求項１から３のいずれか一項に記載のマイクロプロセッサ。
【請求項５】
前記アクセス制御手段は、前記要求種別特定手段が特定した前記要求種別が、予め登録されている登録要求種別である場合に、前記平文情報へのアクセスを許可することを特徴とする請求項１から３のいずれか一項に記載のマイクロプロセッサ。
【請求項６】
前記アクセス制御手段は、前記要求種別特定手段が特定した前記要求種別が前記登録要求種別以外であって、かつ前記平文情報に保護を示す保護属性が付与されている場合に、当該平文情報へのアクセスを制限することを特徴とする請求項５に記載のマイクロプロセッサ。
【請求項７】
前記アクセス制御手段は、前記要求種別および前記保護属性に基づいて、前記平文情報へのアクセスを禁止することを特徴とする請求項１から６のいずれか一項に記載のマイクロプロセッサ。
【請求項８】
前記アクセス制御手段は、前記要求種別および前記保護属性に基づいて、前記平文情報を出力するか、前記平文情報を暗号化した暗号化情報を出力するかを決定することを特徴とする請求項１から７のいずれか一項に記載のマイクロプロセッサ。
【請求項９】
前記アクセス制御手段は、前記要求種別および前記保護属性に基づいて、前記平文情報への上書きを制限することを特徴とする請求項１から８のいずれか一項に記載のマイクロプロセッサ。
【請求項１０】
前記平文情報保持手段が保持している平文情報の上書きを許可するか否かを示す上書き命令を取得する上書き命令取得手段をさらに備え、
前記アクセス制御手段は、前記上書き命令取得手段が前記上書きを許可する旨を示す上書き命令を取得した場合に、前記平文情報への上書きを許可することを特徴とする請求項９に記載のマイクロプロセッサ。
【請求項１１】
前記アクセス制御手段は、前記要求種別および前記保護属性に基づいて、前記平文情報への上書きの前に、既に保持されている前記平文情報を消去するか否かを決定することを特徴とする請求項１から８のいずれか一項に記載のマイクロプロセッサ。
【請求項１２】
前記復号化手段が復号化を行うときに利用する複数の復号鍵を保持する復号鍵保持手段と、
前記復号鍵保持手段が保持している前記復号鍵を識別する鍵識別情報と、前記保護属性とを対応付けて保持する保護属性テーブルと
をさらに備え、
前記保護属性付与手段は、前記保護属性テーブルにおいて、前記復号化手段が利用した前記復号鍵に対応付けられている保護属性を前記平文情報の保護属性として付与することを特徴とする請求項１から１１のいずれか一項に記載のマイクロプロセッサ。
【請求項１３】
前記復号化手段が復号化を行うときに利用すべき前記復号鍵の指定をユーザから受け付ける復号鍵指定手段をさらに備え、
前記復号化手段は、前記復号鍵指定手段によって設定された前記復号鍵を利用して前記暗号化情報を復号化することを特徴とする請求項１２に記載のマイクロプロセッサ。
【請求項１４】
前記平文情報保持手段は、複数の前記平文情報と、各平文情報の保護属性とを対応付けて保持し、
前記アクセス制御手段は、前記平文情報保持手段に保持されている各平文情報に対応付けられている保護属性および要求種別に基づいて、平文情報ごとにアクセスを制御することを特徴とする請求項１から１３のいずれか一項に記載のマイクロプロセッサ。
【請求項１５】
前記平文情報保持手段は、内部メモリに設けられており、
前記登録要求種別として、前記プロセッサコアによる命令フェッチが登録されており、
前記アクセス制御手段は、前記要求種別特定手段が特定した前記要求種別が前記プロセッサコアによる命令フェッチ以外である場合にアクセスを制限することを特徴とする請求項４に記載のマイクロプロセッサ。
【請求項１６】
前記アクセス制御手段は、前記要求種別および前記保護後属性に基づいて、前記プロセッサコアがプログラムの実行に利用する前記平文情報へのアクセスを制限することを特徴とする請求項１に記載のマイクロプロセッサ。
【請求項１７】
前記プロセッサコアは、前記平文情報保持手段が保持する前記平文情報をパイプラインにより実行し、
前記アクセス制御手段は、前記要求種別および前記プロセッサコアの各ユニットが実行している各平文情報に付与された各保護属性に基づいて、前記プロセッサコアが実行している前記平文情報へのアクセスを制限することを特徴とする請求項１６に記載のマイクロプロセッサ。
【請求項１８】
前記パイプラインの各ステージが実行している前記平文情報に対する保護属性を保持する保護属性保持手段を前記ステージ毎に複数備え、
前記アクセス制御手段は、複数の前記保護属性保持手段が保持している各保護属性に基づいて、前記プロセッサコアがプログラムの実行に利用している前記平文情報へのアクセスを制限することを特徴とする請求項１７に記載のマイクロプロセッサ。
【請求項１９】
前記アクセス制御手段は、前記プロセッサコアの複数のステージのうち、少なくとも１つのステージが実行している前記平文情報に前記保護を示す保護属性が付与されている場合に、前記プロセッサコアがプログラムの実行に利用している前記平文情報へのアクセスを制限することを特徴とする請求項１７または１８に記載のマイクロプロセッサ。
【請求項２０】
プロセッサコアを備えたマイクロプロセッサであって、
前記プロセッサコアが利用する情報を外部から取得する情報取得手段と、
前記情報取得手段が取得した情報が暗号化された暗号化情報である場合に、当該暗号化情報を復号化し、平文情報を得る復号化手段と、
前記復号化手段によって復号化された前記平文情報を保持する平文情報保持手段と、
前記復号化手段が復号化を行うときに利用する復号鍵を保持する復号鍵保持手段と、
前記平文情報に対し、前記復号鍵保持手段が保持している前記復号鍵を識別する鍵識別情報を付与する鍵識別情報付与手段と、
前記鍵識別情報付与手段が付与した前記鍵識別情報を保持する鍵識別情報保持手段と、
前記平文情報保持手段に保持されている前記平文情報へのアクセス要求を取得するアクセス要求取得手段と、
前記アクセス要求取得手段が取得した前記アクセス要求の要求種別を特定する要求種別特定手段と、
前記要求種別特定手段が特定した前記要求種別および前記鍵識別情報保持手段が保持した前記鍵識別情報に基づいて前記平文情報へのアクセスを制御するアクセス制御手段と
を備えたことを特徴とするマイクロプロセッサ。
【請求項２１】
前記鍵識別情報は、対応する平文情報の保護属性が保護であるか非保護であるかをさらに示す情報であって、
前記アクセス制御手段は、前記鍵識別情報が示す保護属性が保護である場合に前記平文情報へのアクセスを制限することを特徴とする請求項２０に記載のマイクロプロセッサ。
【請求項２２】
前記鍵識別情報は、対応する平文情報の保護属性が保護であるか非保護であるかをさらに示す情報であって、
前記アクセス制御手段は、前記鍵識別情報が示す保護属性が非保護である場合に前記平文情報へのアクセスを許可することを特徴とする請求項２０または２１に記載のマイクロプロセッサ。
【請求項２３】
前記アクセス制御手段は、前記要求種別特定手段が特定した前記要求種別が、予め登録されている登録要求種別以外の要求種別である場合に、前記平文情報へのアクセスを制限することを特徴とする請求項２０から２２のいずれか一項に記載のマイクロプロセッサ。
【請求項２４】
前記アクセス制御手段は、前記要求種別特定手段が特定した前記要求種別が、予め登録されている登録要求種別である場合に、前記平文情報へのアクセスを許可することを特徴とする請求項２０から２２のいずれか一項に記載のマイクロプロセッサ。
【請求項２５】
前記アクセス制御手段は、前記要求種別特定手段が特定した前記要求種別が前記登録要求種別以外の要求であって、かつ前記鍵識別情報が示す保護属性が保護である場合に、前記平文情報へのアクセスを制限することを特徴とする請求項２４に記載のマイクロプロセッサ。
【請求項２６】
前記アクセス制御手段は、前記要求種別および前記保護属性に基づいて、前記平文情報へのアクセスを禁止することを特徴とする請求項２０から２５のいずれか一項に記載のマイクロプロセッサ。
【請求項２７】
前記平文情報保持手段の初期化を指示する初期化命令を取得する初期化命令取得手段と、
前記初期化命令取得手段が前記初期化命令を取得した場合に、前記保護属性が非保護であることを示す鍵識別情報を前記鍵識別情報保持手段に保持させる初期化手段と
をさらに備えたことを特徴とする請求項２２に記載のマイクロプロセッサ。
【請求項２８】
前記初期化手段により前記鍵識別情報保持手段が初期化された初期化状態であるか否かを示す状態情報を保持する状態保持手段をさらに備え、
前記アクセス制御手段は、前記状態保持手段が初期化状態であることを示す前記状態情報を保持している場合に、前記平文情報へのアクセスを許可することを特徴とする請求項２７に記載のマイクロプロセッサ。
【請求項２９】
前記アクセス要求取得手段が取得する前記アクセス要求は、前記鍵識別情報を含み、
前記アクセス制御手段は、さらに前記アクセス要求に含まれる前記鍵識別情報と前記鍵識別情報保持手段が保持している前記鍵識別情報とに基づいて、前記平文情報へのアクセスを制御することを特徴とする請求項２０に記載のマイクロプロセッサ。
【請求項３０】
前記アクセス制御手段は、前記アクセス要求に含まれる前記鍵識別情報と前記鍵識別情報保持手段が保持している前記鍵識別情報とが一致する場合に、前記平文情報へのアクセスを許可することを特徴とする請求項２９に記載のマイクロプロセッサ。
【請求項３１】
前記アクセス制御手段は、前記要求種別および前記鍵識別情報に基づいて、前記平文情報を出力するか、前記平文情報を暗号化した暗号化情報を出力するかを決定することを特徴とする請求項２０から３０のいずれか一項に記載のマイクロプロセッサ。
【請求項３２】
前記アクセス制御手段は、前記要求種別および前記鍵識別情報に基づいて、前記プロセッサコアがプログラムの実行に利用する前記平文情報へのアクセスを制限することを特徴とする請求項２０に記載のマイクロプロセッサ。
【請求項３３】
前記プロセッサコアは、前記平文情報保持手段が保持する前記平文情報をパイプラインにより実行し、
前記アクセス制御手段は、前記要求種別および前記プロセッサコアの各ユニットが実行している各平文情報に付与された各鍵識別情報に基づいて、前記プロセッサコアがプログラムの実行に利用している前記平文情報へのアクセスを制限することを特徴とする請求項３２に記載のマイクロプロセッサ。
【請求項３４】
前記パイプラインの各ステージが実行している前記平文情報に対する鍵識別情報を保持する鍵識別情報保持手段を前記ステージ毎に複数備え、
前記アクセス制御手段は、複数の前記鍵識別情報保持手段が保持している各鍵識別情報に基づいて、前記プロセッサコアがプログラムの実行に利用している前記平文情報へのアクセスを制限することを特徴とする請求項３３に記載のマイクロプロセッサ。
【請求項３５】
前記鍵識別情報は、対応する平文情報の保護属性が保護であるか非保護であるかをさらに示す情報であって、
前記アクセス制御手段は、前記プロセッサコアの複数のステージのうち、少なくとも１つのステージが実行している前記平文情報に対する前記鍵識別情報の保護属性が保護を示す場合に、前記プロセッサコアが実行している前記平文情報へのアクセスを制限することを特徴とする請求項３３または３４に記載のマイクロプロセッサ。
【請求項３６】
パイプラインを有するマイクロプロセッサであって、
前記パイプラインの各ステージが実行しているプログラムに対する保護属性を、各ステージに対応付けて保持する保護属性保持手段と、
デバッガからのデバッグ要求を取得するデバッグ要求取得手段と、
前記デバッグ要求取得手段が前記デバッグ要求を取得したときに前記保護属性保持手段が保持している前記保護属性がすべて非保護を示す保護属性である場合に、前記デバッガからのアクセスを許可するデバッグ割込制御手段と
を備えたことを特徴とするマイクロプロセッサ。
【請求項３７】
デバッグ割込制御手段は、前記デバッグ要求取得手段が前記デバッグ要求を取得したときに前記保護属性保持手段が保持している前記保護属性のうち少なくとも１つが保護を示す保護属性である場合に、前記デバッガからのアクセスを制限することを特徴とするマイクロプロセッサ。
【請求項３８】
プロセッサコアを備えたマイクロプロセッサであって、
前記プロセッサコアが実行しているプログラムに対する保護属性を保持する保護属性保持手段と、
前記保護属性保持手段が保持している前記保護属性が非保護を示す保護属性である場合に、前記マイクロプロセッサから得られたトレース情報の出力を許可するトレース情報出力制御手段と
を備えたことを特徴とするマイクロプロセッサ。
【請求項３９】
前記トレース情報出力制御手段は、前記保護属性保持手段が保持している前記保護属性が保護を示す保護属性である場合に、前記トレース情報の出力を制限することを特徴とするマイクロプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセッサコアを備えたマイクロプロセッサに関するものである。
【背景技術】
【０００２】
近年、マイクロプロセッサ内部にデバッガインタフェースを内蔵し、それとデバッガを接続することによって、プロセッサ内部の状態を解析して、ソフトウェア開発時のデバッグを容易にする方法が知られている。
【０００３】
この方法を利用することにより、デバッガからプロセッサに内蔵されたデバッグインタフェースを経由して、プロセッサ内部のレジスタやメモリ等のリソースにアクセスすることができる。また、プロセッサで動作しているプログラムのステップ実行をすることができるなどの利点がある。
【０００４】
しかし、デバッガインタフェースを内蔵することにより、ソフトウェア開発者がプログラムの動作を検証しやすくなる一方で、他のソフトウェア開発者やユーザがソフトウェアを解析しやすくなるといった問題がある。
【０００５】
例えば、開発したソフトウェアに機密情報が含まれる場合には、ソフトウェアユーザだけでなく、他のソフトウェア開発者からの解析も防ぐ必要がある。
【０００６】
そのための技術として、復号化の際に選択した鍵に基づいて、デバッグ機能を禁止する方法や、プロセッサ内部のメモリに格納された保護対象のプログラムがデバッグ対象として選択された場合に、デバッグ機能の動作を禁止する方法が提案されている（例えば、特許文献１参照）。
【０００７】
【特許文献１】特開２００２−２４４７５７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、保護対象のプログラムと非保護対象のプログラムが混在する場合がある。この場合には、保護対象のプログラムに対してのみデバッガからのアクセスを禁止する必要がある。このように、より適切なプログラムの保護が可能なマイクロプロセッサの提供が望まれている。
【０００９】
本発明は、上記に鑑みてなされたものであって、外部からのアクセスを効果的に禁止することのできるマイクロプロセッサを提供することを目的とする。
【課題を解決するための手段】
【００１０】
上述した課題を解決し、目的を達成するために、本発明は、プロセッサコアを備えたマイクロプロセッサであって、前記プロセッサコアが利用する情報を外部から取得する情報取得手段と、前記情報取得手段が取得した情報が暗号化された暗号化情報である場合に、当該暗号化情報を復号化し、平文情報を得る復号化手段と、前記復号化手段によって復号化された前記平文情報を保持する平文情報保持手段と、前記復号化手段による復号化が施されたか否かに基づいて、前記平文情報に対し保護又は非保護を示す保護属性を付与する保護属性付与手段と、前記平文情報保持手段に保持されている前記平文情報へのアクセス要求を取得するアクセス要求取得手段と、前記アクセス要求取得手段が取得したアクセス要求の要求種別を特定する要求種別特定手段と、前記要求種別特定手段が特定した前記要求種別および前記保護属性付与手段が付与した前記保護属性に基づいて前記平文情報へのアクセスを制御するアクセス制御手段とを備えたことを特徴とする。
【００１１】
また、本発明の他の形態としては、プロセッサコアを備えたマイクロプロセッサであって、前記プロセッサコアが利用する情報を外部から取得する情報取得手段と、前記情報取得手段が取得した情報が暗号化された暗号化情報である場合に、当該暗号化情報を復号化し、平文情報を得る復号化手段と、前記復号化手段によって復号化された前記平文情報を保持する平文情報保持手段と、前記復号化手段が復号化を行うときに利用する復号鍵を保持する復号鍵保持手段と、前記平文情報に対し、前記復号鍵保持手段が保持している前記復号鍵を識別する鍵識別情報を付与する鍵識別情報付与手段と、前記鍵識別情報付与手段が付与した前記鍵識別情報を保持する鍵識別情報保持手段と、前記平文情報保持手段に保持されている前記平文情報へのアクセス要求を取得するアクセス要求取得手段と、前記アクセス要求取得手段が取得した前記アクセス要求の要求種別を特定する要求種別特定手段と、前記要求種別特定手段が特定した前記要求種別および前記鍵識別情報保持手段が保持した前記鍵識別情報に基づいて前記平文情報へのアクセスを制御するアクセス制御手段とを備えたことを特徴とする。
【００１２】
また、本発明の他の形態としては、パイプラインを有するマイクロプロセッサであって、前記パイプラインの各ステージが実行しているプログラムに対する保護属性を、各ステージに対応付けて保持する保護属性保持手段と、デバッガからのデバッグ要求を取得するデバッグ要求取得手段と、前記デバッグ要求取得手段が前記デバッグ要求を取得したときに前記保護属性保持手段が保持している前記保護属性がすべて保護を示す保護属性である場合に、前記デバッガからのアクセスを許可するデバッグ割込制御手段とを備えたことを特徴とする。
【００１３】
また、本発明の他の形態としては、プロセッサコアを備えたマイクロプロセッサであって、前記プロセッサコアが実行しているプログラムに対する保護属性を保持する保護属性保持手段と、前記保護属性保持手段が保持している前記保護属性が非保護を示す保護属性である場合に、前記マイクロプロセッサから得られたトレース情報の出力を許可するトレース情報出力制御手段とを備えたことを特徴とする。
【発明の効果】
【００１４】
本発明にかかるマイクロプロセッサにおいては、情報取得手段が、プロセッサコアが利用する情報を外部から取得し、復号化手段が、情報取得手段が取得した情報が暗号化された暗号化情報である場合に、当該暗号化情報を復号化し、平文情報を得て、平文情報保持手段が、復号化手段によって復号化された平文情報を保持し、保護属性付与手段が、復号化手段による復号化が施されたか否かに基づいて、平文情報に対し保護又は非保護を示す保護属性を付与し、アクセス要求取得手段が、平文情報保持手段に保持されている平文情報へのアクセス要求を取得し、要求種別特定手段が、アクセス要求取得手段が取得したアクセス要求の種別を特定し、アクセス制御手段が、要求種別特定手段が特定した要求種別および保護属性付与手段が付与した保護属性に基づいて平文情報へのアクセスを制御する。すなわち、保護属性付与手段は外部から取得した情報を復号化したか否かに基づいて、当該情報に保護属性を付与し、アクセス要求を取得すると、保護属性およびアクセス要求の要求種別に基づいて情報へのアクセスを制御するので、外部からの情報への不正なアクセスを効率的に禁止することができるという効果を奏する。
【００１５】
また、本発明の他の形態にかかるマイクロプロセッサにおいては、情報取得手段が、プロセッサコアが利用する情報を外部から取得し、復号化手段が、情報取得手段が取得した情報が暗号化された暗号化情報である場合に、当該暗号化情報を復号化し、平文情報を得て、平文情報保持手段が、復号化手段によって復号化された平文情報を保持し、復号鍵保持手段が、復号化手段が復号化を行うときに利用する復号鍵を保持し、鍵識別情報付与手段が、平文情報に対し、復号鍵保持手段が保持している復号鍵を識別する鍵識別情報を付与し、鍵識別情報保持手段が、鍵識別情報付与手段が付与した鍵識別情報を保持し、アクセス要求取得手段が、平文情報保持手段に保持されている平文情報へのアクセス要求を取得し、要求種別特定手段が、アクセス要求取得手段が取得したアクセス要求の要求種別を特定し、アクセス制御手段が、要求種別特定手段が特定した要求種別および鍵識別情報保持手段が保持した鍵識別情報に基づいて平文情報へのアクセスを制御するので、外部からの情報への不正なアクセスを効率的に禁止することができるという効果を奏する。
【００１６】
また、本発明の他の形態にかかるマイクロプロセッサにおいては、保護属性保持手段が、パイプラインの各ステージが実行しているプログラムに対する保護属性を、各ステージに対応付けて保持し、デバッグ要求取得手段が、デバッガからのデバッグ要求を取得し、
デバッグ割込制御手段が、デバッグ要求取得手段がデバッグ要求を取得したときに保護属性保持手段が保持している保護属性がすべて保護を示す保護属性である場合に、デバッガからのアクセスを許可するので、デバッガによる不正なアクセスを禁止することができるという効果を奏する。
【００１７】
また、本発明の他の形態にかかるマイクロプロセッサにおいては、保護属性保持手段が、プロセッサコアが実行しているプログラムに対する保護属性を保持し、トレース情報出力制御手段が、保護属性保持手段が保持している保護属性が非保護を示す保護属性である場合に、マイクロプロセッサから得られたトレース情報の出力を許可するので、出力されたトレース情報が不正に読み取られるのを防ぐことができるという効果を奏する。
【発明を実施するための最良の形態】
【００１８】
以下に、本発明にかかるマイクロプロセッサの実施の形態を図面に基づいて詳細に説明する。なお、この実施の形態によりこの発明が限定されるものではない。
【００１９】
（実施の形態１）
図１は、本発明にかかるマイクロプロセッサを備えたシステム１０の全体構成を示す図である。システム１０は、プロセッサ１００と外部メモリ２００と、ユーザインターフェース３００と、外部バス４００とを備えている。プロセッサ１００は、プロセッサコア１１０と、内部メモリ１２０と、ダイレクトメモリアクセスコントローラ（ＤＭＡコントローラ）１３０と、デバッガインターフェース１４０と、バスインターフェースユニット（ＢＩＵ）１５０とを有している。
【００２０】
外部メモリ２００は、プロセッサコア１１０の実行対象となるプログラムを保持している。なお、外部メモリ２００は、暗号化の施された暗号化プログラムと、暗号化の施されていない平文プログラムとを保持している。
【００２１】
ＤＭＡコントローラ１３０は、外部メモリ２００と内部メモリ１２０の間のデータの転送を行う。ＤＭＡコントローラ１３０は、暗号化プログラムを取得した場合には、復号化し、平文プログラムとして内部メモリ１２０に保持させる。また、平文プログラムを取得した場合には、そのまま内部メモリ１２０に保持させる。
【００２２】
プロセッサコア１１０は、内部メモリ１２０、キャッシュコントローラ（図示せず）、外部メモリ２００に保持されているプログラムを読み出し、実行する。ＢＩＵ１５０は、外部との入出力を行うインターフェースであって、プロセッサコア１１０やキャッシュコントローラ（図示せず）からの要求により、外部メモリ２００に保持されているデータを読み書きする。
【００２３】
デバッガインターフェース１４０は、外部でデバッガ５００に接続されている。そして、デバッガ５００からの要求に対して、プロセッサコア１１０、内部メモリ１２０、ＤＭＡコントローラ１３０等へ要求を振り分ける。また、各部からの要求に対応した実行結果を受け取ると、実行結果をデバッガ５００に返す。
【００２４】
ＤＭＡコントローラ１３０は、鍵ＩＤレジスタ１３２と、鍵テーブル１３３と、暗号復号器１３４と、保護属性付与部１３５とを有している。
【００２５】
鍵ＩＤレジスタ１３２には、外部メモリ２００から読み出したプログラムを復号化するときに利用する暗号復号鍵を識別する鍵ＩＤが設定される。ここで、鍵ＩＤの値は、ユーザインターフェース３００を介し、ユーザによって設定される。また、外部メモリ２００から読み出すプログラムが暗号化されていない平文プログラムである場合には、鍵ＩＤレジスタ１３２に「０」が設定される。なお、他の例としては、鍵ＩＤの値は、プログラムの実行により自動的に設定されてもよい。
【００２６】
鍵テーブル１３３は、鍵ＩＤと暗号復号鍵とを対応付けて保持している。図２は、鍵テーブル１３３のデータ構成を模式的に示している。鍵テーブル１３３は、暗号復号化に利用する暗号復号鍵を識別する鍵ＩＤと、暗号復号鍵とを対応付けて保持している。なお、鍵テーブル１３３に保持される鍵ＩＤは、「０」以外の値である。
【００２７】
これにより、鍵ＩＤレジスタ１３２に設定されている値が「０」か否かによって、復号化が行われた否か、すなわちプログラムを暗号化された状態で取得したか否かを特定することができる。
【００２８】
鍵ＩＤレジスタ１３２に「０」以外が設定されている場合には、外部メモリ２００から取得したプログラムは暗号化されたプログラムであるので、暗号復号器１３４は、鍵テーブル１３３を利用して鍵ＩＤレジスタ１３２に設定された鍵ＩＤに対応する暗号復号鍵を特定する。そして、特定した暗号復号鍵を利用して、暗号化プログラムを復号化して、平文プログラムを得る。暗号復号器１３４はまた、鍵ＩＤレジスタ１３２に「０」がセットされている場合には、平文プログラムであるので復号化を行わない。
【００２９】
保護属性付与部１３５は、外部メモリ２００から取得したプログラムの保護属性を付与する。図３は、保護属性付与部１３５が保護属性を付与するときに利用する保護属性決定テーブル１３６を示している。
【００３０】
図３に示すように保護属性付与部１３５は、鍵ＩＤレジスタ１３２に「０」がセットされている場合は、対応するプログラムに対して非保護を示す保護属性「０」を付与する。また、鍵ＩＤレジスタ１３２に「０」以外の値がセットされている場合は、対応する平文プログラムに対して保護を示す保護属性「１」を付与する。すなわち、暗号化プログラムとして外部から取得したプログラムに対しては、保護を示す保護属性を付与し、平文プログラムとして外部から取得したプログラムに対しては、非保護を示す保護属性を付与する。
【００３１】
これにより、暗号化プログラムとして取得したプログラムのみを保護対象とすることができる。
【００３２】
なお、実施の形態１においては、保護属性として「０」、「１」を利用したが、保護および非保護を特定できればよく、これに限定されるものではない。例えば、保護属性として、鍵ＩＤレジスタ１３２に設定される値を利用してもよく、また例えば暗号復号鍵の値を保護属性として利用してもよい。
【００３３】
保護属性付与部１３５は、平文プログラムに対して付与した保護属性を、当該平文プログラムに対応付けて内部メモリ１２０に保持させる。
【００３４】
内部メモリ１２０は、プログラムを保持する命令メモリ部１２１と、データを保持するデータメモリ部１２５とを有している。さらに、命令メモリ部１２１は、保護属性メモリ１２２と、命令メモリ１２３と、命令メモリアクセス制御部１２４とを有している。
【００３５】
命令メモリ１２３は、暗号復号器１３４から取得した平文プログラムを保持する。保護属性メモリ１２２は、命令メモリ１２３に保持されている平文プログラムに対して付与された保護属性を保持する。命令メモリアクセス制御部１２４は、外部から命令メモリ１２３へのアクセスを制御する。
【００３６】
図４は、命令メモリアクセス制御部１２４のアクセス制御のルールを模式的に示している。図４に示すように、プロセッサコア１１０による命令フェッチであって、かつ要求されているプログラムに保護を示す保護属性が付与されている場合には、アクセスを許可する。また、プロセッサコア１１０による命令フェッチ以外のアクセス要求であって、かつ要求されているプログラムに保護を示す保護属性が付与されている場合には、アクセスを制限する。すなわち、エラーを出力する。また、要求されているプログラムに非保護を示す保護属性が付与されている場合には、要求種別に関わらずアクセスを許可する。
【００３７】
このように、特定の要求種別以外の要求種別によるアクセスを制限することにより、第三者が不正に平文プログラムを読み出すのを防止することができる。また、このように、保護を示す保護属性が付与されたプログラムへのアクセスを制限することにより、所定の平文プログラムが不正に読み出されるのを防止することができる。
【００３８】
図５は、外部メモリ２００に保持されているプログラムをＤＭＡコントローラ１３０を介して内部メモリ１２０に書き込む処理を示すフローチャートである。
【００３９】
まず、ユーザは、プロセッサコア１１０に実行させるべきプログラムを外部メモリ２００に格納する。ここで、プログラムを外部メモリ２００上のアドレスＸ〜Ｙに格納するとする。また、プログラム実行前に、ＤＭＡコントローラ１３０の鍵ＩＤレジスタ１３２に、鍵ＩＤを設定する(ステップＳ１００，ステップＳ１０２)。ここで、暗号復号鍵の設定は、ユーザインターフェース３００を介してユーザからの指示により行われる。
【００４０】
プロセッサコア１１０は、ＤＭＡ転送要求をＤＭＡコントローラ１３０へ送る（ステップＳ１０４）。ここで、ＤＭＡ転送要求は、外部メモリ２００上のアドレスＸ〜Ｙのデータを内部メモリに転送することを要求する情報である。
【００４１】
ＤＭＡコントローラ１３０は外部メモリ２００からアドレスＸ〜Ｙに対応するプログラムＥ２[Ｃ(Ｘ〜Ｙ)]を読み出す（ステップＳ１０６）。このとき鍵ＩＤレジスタ１３２に設定されている値が「０」以外である場合は(ステップＳ１０８，Ｎｏ)、暗号復号器１３４は、鍵テーブル１３３から得られた鍵で読み出した暗号化プログラムＥ２[Ｃ(Ｘ〜Ｙ)]に対して復号化処理を施し、平文プログラムＣ（Ｘ〜Ｙ）を得る（ステップＳ１１０）。
【００４２】
このように、鍵ＩＤレジスタ１３２に「０」以外の値が設定されている場合には、対象となるプログラムは暗号化されているので、復号化により平文プログラムを得る。
【００４３】
一方、鍵ＩＤレジスタ１３２に設定されている値が「０」である場合は(ステップＳ１０８，Ｙｅｓ)、復号化処理を行わず、後述のステップＳ１１２へ進む。
【００４４】
このように、鍵ＩＤレジスタ１３２に「０」が設定されている場合には、対象となるプログラムは、平文であるので、復号化は行う必要がない。
【００４５】
次に、保護属性付与部１３５は、鍵ＩＤレジスタ１３２の値に基づいて、内部メモリ１２０に保持させるべき平文プログラムに保護属性を付与する（ステップＳ１１２）。具体的には、保護属性付与部１３５は、鍵ＩＤレジスタ１３２に設定されている値が「０」である場合、すなわち対象とするプログラムを平文として取得した場合には、非保護を示す保護属性「０」を付与する。
【００４６】
また、鍵ＩＤレジスタ１３２に設定されている値が「０」以外である場合、すなわち対象とするプログラムを暗号化した状態で取得した場合には、保護を示す保護属性「１」を付与する。
【００４７】
そして、暗号復号器１３４は、平文プログラムを内部メモリ１２０に送る（ステップＳ１１４）。さらに、保護属性付与部１３５は、平文プログラムに付与された保護属性を内部メモリ１２０に送る（ステップＳ１１６）。
【００４８】
内部メモリ１２０は、ＤＭＡコントローラ１３０から送られてきた復号結果である、平文プログラムＣ(Ｘ〜Ｙ)を命令メモリ１２３に保持させる（ステップＳ１２０）。また、内部メモリ１２０は、保護属性を保護属性メモリ１２２に保持させる（ステップＳ１２２）。
【００４９】
そして、ＤＭＡコントローラ１３０から内部メモリ１２０への平文プログラムの転送が完了すると、プロセッサコア１１０に対して、ＤＭＡ転送が完了したことを通知する（ステップＳ１２４）。
【００５０】
次に、プロセッサコア１１０は、命令フェッチにより、平文プログラムの読み出しを要求する(ステップＳ１２６)。内部メモリ１２０は、読出要求を取得すると、要求された平文プログラムをプロセッサコア１１０に出力する(ステップＳ１２８)。
【００５１】
以上の処理により、内部メモリ１２０にプログラムが保存され、プロセッサコア１１０がプログラムを実行可能な状態となる。
【００５２】
図６は、図５を参照しつつ説明した処理によって内部メモリ１２０に保持されたプログラムを読み出す場合の読出処理を説明するためのフローチャートである。
【００５３】
内部メモリ１２０の命令メモリアクセス制御部１２４は、命令メモリ１２３に保存されているプログラムの読み出しを示す読出要求を取得すると（ステップＳ２００）、読出要求を出力した要求種別がプロセッサコア１１０による命令フェッチか否かを特定する。具体的には、例えば、物理的な配線によって要求種別を特定してもよい。要求種別がプロセッサコア１１０による命令フェッチである場合には(ステップＳ２０２，Ｙｅｓ)、命令メモリアクセス制御部１２４は、命令メモリ１２３に保存されている平文プログラムをプロセッサコア１１０に出力する（ステップＳ２１２）。
【００５４】
要求種別がプロセッサコア１１０による命令フェッチ以外である場合には(ステップＳ２０２，Ｎｏ)、暗号復号器１３４は、要求されている平文プログラムの保護属性を特定する(ステップＳ２０４)。
【００５５】
要求されている平文プログラムに保護を示す保護属性が付与されている場合には(ステップＳ２０６，Ｙｅｓ)、エラーを出力する(ステップＳ２１０)。一方、要求されている平文プログラムに非保護を示す保護属性が付与されている場合には(ステップＳ２０６，Ｎｏ)、平文プログラムを出力する(ステップＳ２１２)。以上で読出処理が完了する。
【００５６】
ここで、プロセッサコア１１０が命令フェッチによって内部メモリ１２０の読出要求を行った場合について具体的に説明する。内部メモリ１２０にある命令メモリアクセス制御部１２４は、プロセッサコア１１０による命令フェッチであると判断すると、図４を参照しつつ説明したルールにしたがい、命令メモリ１２３から読み出した平文プログラムＣ(Ｘ〜Ｙ)をプロセッサコア１１０に送る(ステップＳ２０２，Ｙｅｓ、ステップＳ２１２)。そして、プロセッサコア１１０は、取得した平文プログラムを実行する。
【００５７】
要求種別がプロセッサコア１１０による命令フェッチ以外であって(ステップＳ２０２，Ｎｏ)、かつ保護属性が非保護を示す「０」である場合には、（ステップＳ２０６，Ｎｏ)、平文プログラムを出力する(ステップＳ２１２)。
【００５８】
要求種別がプロセッサコア１１０による命令フェッチ以外であって(ステップＳ２０２，Ｎｏ)、かつ保護属性が保護を示す「１」である場合には(ステップＳ２０６，Ｙｅｓ)、エラーを出力する(ステップＳ２１０)。
【００５９】
このように、内部メモリ１２０の命令メモリアクセス制御部１２４は、プロセッサコア１１０による命令フェッチ以外の要求種別に対しては、平文プログラムの読み出しを制限するので、第三者によって不正に平文プログラムが読み出されるのを防止することができる。
【００６０】
また、外部メモリ２００に暗号化プログラムとして保持されていたプログラムは、秘匿性が高いプログラムである可能性が高い。そこで、暗号化プログラムとして保持されていたプログラムのみに保護を示す保護属性を付与し、アクセス制御の対象とすることにより、所定のプログラムについてのみ、アクセス制御を行うことができる。
【００６１】
このように、外部メモリから複数のプログラムを読み込む場合には、アクセスを制御すべき保護プログラムと、アクセスを制限しない非保護プログラムとが内部メモリ１２０等に混在する場合がある。保護プログラムと非保護プログラムとが混在する場合であっても、保護プログラムへのアクセスのみを効率的に制限することができる。
【００６２】
なお、保護プログラムと非保護プログラムとが混在する場合としては、空間的な混在や時間的な混在がある。例えば、ある時刻には、保護プログラムが内部メモリ１２０に保持されているが、他の時刻には、非保護プログラムが内部メモリ１２０に保持されている場合がある。
【００６３】
また例えば、命令メモリ１２３の１０００番地には、保護プログラムが保持されているが、命令メモリ１２３の５０００番地には、非保護プログラムが保持されている場合がある。
【００６４】
デバッガ５００によってソフトウェアを解析する方法の１つとして、デバッガ５００からデバッガインターフェース１４０を介して内部メモリ１２０に保持されている平文プログラムの読出要求を行う方法が考えられる。
【００６５】
しかしこの場合、要求種別がプロセッサコア１１０による命令フェッチ以外であることから、図６において説明した読出処理にしたがい、保護を示す保護属性が付与された平文プログラムの読み出しを制限する。すなわち、命令メモリアクセス制御部１２４は、デバッガインターフェース１４０に対してエラーを出力する。したがって、デバッガ５００を介して平文プログラムが読み出されるのを防止することができる。
【００６６】
また他の方法としては、ＤＭＡコントローラ１３０を介して第三者が不正に平文プログラムを読み出す方法が考えられる。例えば、デバッガ５００が、ＤＭＡコントローラ１３０に対して、鍵ＩＤ０を指定して内部メモリ１２０から外部メモリ２００へのＤＭＡ転送要求を行うことにより実現できる。このＤＭＡ転送要求は、内部メモリ１２０に保持されているプログラムを、内部メモリ１２０内の領域から外部メモリ２００の適当な領域への転送要求である。
【００６７】
この場合、ＤＭＡコントローラ１３０は、デバッガ５００からのＤＭＡ転送要求に対し、内部メモリ１２０からの転送を行う。具体的には、内部メモリ１２０の命令メモリ１２３から読み出し、外部メモリ２００へ書き込みを行う。
【００６８】
しかしこの場合、要求種別がプロセッサコア１１０による命令フェッチ以外であることから、図６において説明した読出処理に従い、保護を示す保護属性が付与されたプログラムの読み出しを制限する。すなわち、エラーを出力する。
【００６９】
このように、デバッガ５００は、デバッガインターフェース１４０を介したアクセスだけでなく、ＤＭＡコントローラ１３０や、ＢＩＵ１５０を介してアクセスすることができる。しかし、この場合であっても、第三者に不正にプログラムが読み出されるのを防止することができる。
【００７０】
図７は、命令メモリ１２３に既に平文プログラムが保持された状態において、保護を示す保護属性が付与されているときに、新たに平文プログラムの書き込み、すなわち上書きが指示された場合の書込処理を示すフローチャートである。
【００７１】
内部メモリ１２０は、書込要求を取得すると（ステップＳ３００）、既に保持されている平文プログラムに付与された保護属性を特定する(ステップＳ３０２)。平文プログラムに保護を示す保護属性「１」が付与されている場合には（ステップＳ３０４，Ｙｅｓ）、既にプログラムが保持されている命令メモリ１２３の内容を総てクリアする（ステップＳ３０６）。次に、書込要求が示すプログラムを命令メモリ１２３に書き込む（ステップＳ３０８）。
【００７２】
一方、平文プログラムに非保護を示す保護属性「０」が付与されている場合には(ステップＳ３０４，Ｎｏ)、ステップＳ３０８に進む。すなわち、命令メモリ１２３の内容をクリアすることなく、新たな平文プログラムを命令メモリ１２３に書き込む(ステップＳ３０８)。以上で、書込処理が完了する。なお、ステップＳ３０８における書込処理は、図５を参照しつつ説明した書込処理と同様である。
【００７３】
プログラムが既に書き込まれた状態で、プログラムの一部の上書きを許可した場合には、それ以外の既にプログラムが格納されている領域へのアクセスが可能となるため、既に保持されているプログラムを読み出すことが可能である。これを利用して、第三者が不正に平文プログラムを読み出すことが考えられる。
【００７４】
しかし、図７を参照しつつ説明したように、保護を示す保護属性が付与されたプログラムが既に保持されている場合には、命令メモリ１２３にプログラムを書き込む処理が開始する前に、命令メモリ１２３に既に保持されているプログラムを総てクリアし、その後で新たな平文プログラムを書き込むので、既に保持されているプログラムが不正に読み出されるのを防ぐことができる。
【００７５】
本発明を実施の形態を用いて説明したが、上記実施の形態に多様な変更または改良を加えることができる。
【００７６】
そうした第１の変更例としては、命令メモリ１２３は、複数の平文プログラムを同時に保持し、平文プログラム単位でアクセスを制限してもよい。図８は、この場合の保護属性メモリ１２２のデータ構成を模式的に示している。図８に示すように保護属性メモリ１２２は、平文プログラムを識別するプログラムＩＤと保護属性とを対応付けて保持している。
【００７７】
そして、第１の変更例においては、命令メモリアクセス制御部１２４は、保護属性メモリ１２２における対応関係に基づいて、各平文プログラムが保持されている領域単位で命令メモリ１２３へのアクセスを制限する。
【００７８】
例えば、プログラムＩＤ「０００１」に対応する領域に対する読出要求を取得したとする。図８に示すようにプログラムＩＤ「０００１」で識別される平文プログラムには保護を示す保護属性が付与されている。そこで、命令メモリ１２３は、プログラムＩＤ「０００１」で識別される平文プログラムへのアクセスを制限する。また、プログラムＩＤ「０００２」で識別される保護プログラムへのアクセスについては制限を行わない。
【００７９】
具体的には、プログラムＩＤ「０００１」の読出要求を取得した場合には、プログラムＩＤ「０００１」で識別される平文プログラムには、保護を示す保護属性が付与されているので、図６に示す読出処理にしたがい、平文プログラムを出力するか、エラーを出力するかを決定する。
【００８０】
一方、プログラムＩＤ「０００２」の読出要求を取得した場合には、プログラムＩＤ「０００２」で識別される平文プログラムには、非保護を示す保護属性が付与されているので、図６に示す読出処理にしたがい、平文プログラムを出力する。
【００８１】
またプログラムＩＤ「０００１」の書込要求を取得した場合には、プログラムＩＤ「０００１」で識別される平文プログラムには、保護を示す保護属性が付与されているので、図７に示す書込処理にしたがい、平文プログラムが既に保持されている領域に新たにプログラムを書き込む前に、既に保持されている平文プログラムをクリアする。
【００８２】
一方、プログラムＩＤ「０００２」の書込要求を取得した場合には、プログラムＩＤ「０００２」で識別される平文プログラムには、非保護を示す保護属性が付与されているので、図７に示す書込処理にしたがい、既に保持されている平文プログラムをクリアせずに、平文プログラムが既に保持されている領域に新たにプログラムを書き込む。
【００８３】
このように、保護を示す保護属性を付与された平文プログラムと、非保護を示す保護属性を付与された平文プログラムとを同時に保持している場合であっても、保護を示す保護属性が付与された平文プログラムへのアクセスのみを制限することができるので、所定の平文プログラムが第三者に不正に読み出されるのを防止することができる。
【００８４】
第２の変更例としては、第１の変更例においては、保護属性メモリ１２２は、プログラムＩＤと保護属性とを対応付けて保持していたが、これにかえて保護属性メモリ１２２は、命令メモリ１２３におけるバンク位置と保護属性とを対応付けて保持してもよい。
【００８５】
図９は、この場合の保護属性メモリ１２２のデータ構成を模式的に示している。図９に示すように、保護属性メモリ１２２は、命令メモリ１２３におけるバンク位置と各バンク位置に保持されている平文プログラムに付与された保護属性とを対応付けて保持している。第２の変更例においては、命令メモリアクセス制御部１２４は、バンク位置と保護属性との対応関係に基づいて各プログラムが保持されている領域単位で命令メモリ１２３へのアクセスを制御する。
【００８６】
例えば、バンク１と保護を示す保護属性とが対応付けられており、かつバンク１にプログラムＩＤ「０００１」で識別される平文プログラムが保持されている場合には、プログラムＩＤ「０００１」で識別される平文プログラムへのアクセスを制限する。また、バンク２と非保護を示す保護属性とが対応付けられており、かつバンク２にプログラムＩＤ「０００２」で識別される平文プログラムが保持されている場合には、プログラムＩＤ「０００２」で識別される平文プログラムへのアクセスを許可する。
【００８７】
このように、第２の変更例によれば、命令メモリ１２３が複数のプログラムを同時に保持している場合であっても、バンク単位で、第三者が平文プログラムを不正に読み出すのを防止することができる。
【００８８】
第３の変更例としては、実施の形態１においては、プログラムに対するアクセス制御について説明したが、これにかえてデータに対するアクセス制御を行ってもよい。図１０は、第３の変更例にかかるシステム１０の全体構成を示す図である。データメモリ部１２５は、命令メモリ部１２１と同様に、保護属性メモリ１２６と、データメモリ１２７と、データメモリアクセス制御部１２８とを有する。
【００８９】
なお、保護属性メモリ１２６の構成および処理は、保護属性メモリ１２２の構成および処理と同様である。また、データメモリ１２７の構成および処理は、命令メモリ１２３の構成および処理と同様である。また、データメモリアクセス制御部１２８の構成および処理は、命令メモリアクセス制御部１２４の構成および処理と同様である。
【００９０】
また、他の例としては、プログラムに対するアクセス制御とデータに対するアクセス制御とをともに行ってもよい。このように、アクセス制御の対象は、実施の形態に限定されるものではない。
【００９１】
第４の変更例としては、第３の変更例のようにデータに対するアクセス制御を行う場合、図７に示すように書込処理においては、データに付与された保護属性に基づいて、データを書き込む前に既に保持されているデータをクリアするか否かを決定したが、他の例としては、保護属性に加えて、要求元に応じてデータをクリアするか否かを決定してもよい。
【００９２】
図１１は、第４の変更例にかかる書込処理を示すフローチャートである。図１１に示すように、第４の変更例にかかる書込処理においては、取得した書込要求の要求種別がプロセッサコアからの書込要求である場合には(ステップＳ３２０，Ｙｅｓ)、ステップＳ３０８へ進む。すなわち、要求種別がプロセッサコア１１０からの書込要求である場合にはクリア処理を行わずに新たな平文プログラムの書き込みを行う。
【００９３】
このように、要求種別に基づいてアクセスを制御することにより、他の要求種別からのアクセスを制御することなく、所定の要求種別からのアクセスのみを効率的に制御することができる。
【００９４】
第５の変更例としては、実施の形態１においては、保護を示す保護属性が付与された平文プログラムに対する読出要求を取得した場合のアクセス制御として、読み出しを禁止することとしたが、これにかえて、暗号化した状態でプログラムを要求元に提供することとしてもよい。これにより、アクセス制御を行う場合には、プログラムが平文の状態で読み出されることがないので、第三者が不正に平文プログラムを読み出すのを防止することができる。
【００９５】
第６の変更例としては、実施の形態１においては、既に平文プログラムが保持されている領域にプログラムを上書きする場合には、プログラムの保護属性に応じて上書き処理の前に既に保持されているプログラムをクリアするか否かを決定したが、さらにユーザからの指示によって、プログラムをクリアするか否かを決定してもよい。
【００９６】
具体的には、既に保持されている平文プログラムに対するアクセス制御を行う場合には、保護を示す属性が付与された領域に対する上書きは禁止し、ユーザインターフェース３００を介してユーザから既に保持されている平文プログラムをクリアする旨の指示を受け付けた場合にのみ平文プログラムをクリアし、これ以外の場合には、エラーを出力してもよい。これにより、ユーザがクリアをしない限り書き込みが出来ず、平文プログラムを保護できる。
【００９７】
（実施の形態２）
次に、実施の形態２にかかるシステム１０について説明する。実施の形態２にかかるシステム１０は、プロセッサコア１１０に保持されているレジスタ等へのアクセスを制御する。この点で、実施の形態１にかかるシステム１０と異なっている。
【００９８】
図１２は、実施の形態２にかかるシステム１０の全体構成を示す図である。実施の形態２にかかるシステム１０のプロセッサコア１１０は、実行ユニット１１２と、カレント保護属性レジスタ１１４およびコアアクセス制御部１１６を有している。
【００９９】
実行ユニット１１２は、プログラムを実行する。カレント保護属性レジスタ１１４は、実行ユニット１１２が実行中のプログラムの保護属性を保持する。コアアクセス制御部１１６は、プロセッサコア１１０が実行中のプログラムへのアクセスを制御する。
【０１００】
図１３は、実施の形態２にかかるシステム１０のプロセッサコア１１０がプログラムを実行するときの処理を示すフローチャートである。図１３を参照しつつ、ユーザがプログラムを実行するときに行う処理について説明する。なお、外部メモリ２００に保持されているプログラムを内部メモリ１２０の命令メモリ１２３に保持させるまでの処理は、実施の形態１において図５を参照しつつ説明した処理（ステップＳ１００〜ステップＳ１２４）と同様である。
【０１０１】
実行ユニット１１２が命令メモリ１２３に保持されているプログラムを実行する場合、まずプロセッサコア１１０は、命令フェッチにより内部メモリ１２０からプログラムの読出要求を行う（ステップＳ４００）。
【０１０２】
内部メモリ１２０の命令メモリアクセス制御部１２４は、読出要求の要求種別を特定する。要求種別がプロセッサコア１１０による命令フェッチである場合には（ステップＳ４０２，Ｙｅｓ）、命令メモリアクセス制御部１２４はプログラムを読み出す（ステップＳ４０４）。さらに、保護属性メモリ１２２からプログラムに付与されている保護属性を読み出す（ステップＳ４０６）。
【０１０３】
次に、命令メモリアクセス制御部１２４は、プログラムおよび保護属性をプロセッサコア１１０に送る（ステップＳ４０８）。次に、プロセッサコア１１０は、内部メモリ１２０から取得したプログラムを実行ユニット１１２に渡す（ステップＳ４１０）。さらに、内部メモリ１２０から取得した保護属性をカレント保護属性レジスタ１１４に保持する（ステップＳ４１２）。なお、ステップＳ４０２において、要求種別がプロセッサコア１１０による命令フェッチ以外である場合には(ステップＳ４０２，Ｎｏ)、命令メモリ１２３は、エラーを出力する(ステップＳ４１４)。
【０１０４】
以上で、実行ユニット１１２がプログラムを実行できる状態となり、実行ユニット１１２は、プログラムの実行を開始する。
【０１０５】
コアアクセス制御部１１６は、カレント保護属性レジスタ１１４が保持している保護属性に応じて、実行ユニット１１２が実行しているプログラムに関するレジスタの値に対するデバッガインターフェース１４０からのアクセスを制御する。
【０１０６】
以下、図１４を参照しつつ、ソフトウェアの動作を解析する場合の処理を例に、アクセス制御にかかる処理を具体的に説明する。コアアクセス制御部１１６は、外部からプロセッサコア１１０のカレント保護属性レジスタ１１４の値の読出要求を取得する（ステップＳ４２０）。次に、コアアクセス制御部１１６は、カレント保護属性レジスタ１１４に保持されている保護属性を特定する（ステップＳ４２２）。
【０１０７】
カレント保護属性レジスタ１１４が保護を示す保護属性を保持している場合には（ステップＳ４２４，Ｙｅｓ）、デバッガに対してエラーを出力する（ステップＳ４３２）。一方、カレント保護属性レジスタ１１４が非保護を示す保護属性を保持している場合には（ステップＳ４２４，Ｎｏ）、実行ユニット１１２が実行中のプログラムに関連するレジスタの値を出力する（ステップＳ４３０）。以上で、アクセス制御処理が完了する。
【０１０８】
このように、デバッガインターフェース１４０がカレント保護属性レジスタ１１４の読出要求を行った場合には、コアアクセス制御部１１６は、アクセス制御処理にしたがい、デバッガインターフェース１４０に対して、エラーを出力する。したがって、デバッガインターフェース１４０に不正にプログラムが読み出されるのを防止することができる。
【０１０９】
なお、実施の形態２にかかるシステム１０のこれ以外の構成および処理は、実施の形態１にかかるシステム１０の構成および処理と同様である。
【０１１０】
図１５は、実施の形態２の変更例にかかる読出処理を示すフローチャートである。図１５に示すように、変更例にかかる読出処理においては、取得した読出要求の要求種別がデバッガインターフェース１４０以外によるアクセスである場合には(ステップＳ４４０，Ｎｏ)、ステップＳ４３０へ進む。すなわち、要求種別がデバッガインターフェース１４０によるアクセス以外である場合には、実行中のプログラムに関するレジスタの値を出力する。このように、要求種別に基づいてアクセスを制御することにより、他の要求種別からのアクセスを制御することなく、所定の要求種別を効率的に制御することができる。
【０１１１】
（実施の形態３）
図１６は、実施の形態３にかかるシステム１０の全体構成を示す図である。実施の形態３にかかるシステム１０のプロセッサコア１１０は、パイプライン６００と、ＯＲ回路６２０と、コアアクセス制御部１１６とを有している。
【０１１２】
実施の形態３にかかるプロセッサコア１１０は、パイプラインのステージごとに実行ユニットとカレント保護属性レジスタを有している。そして、各カレント保護属性レジスタ６１１〜６１４は、対応する実行ユニット６０１〜６０４において実行されているプログラムの保護属性を保持している。また、ＯＲ回路６２０は、各カレント保護属性レジスタ６１１〜６１４が保持している複数の保護属性に対してＯＲ演算を行う。
【０１１３】
そして、コアアクセス制御部１１６は、各カレント保護属性レジスタ６１１〜６１４が保持している保護属性に基づいて、外部からのアクセスを制限する。具体的には、４つのカレント保護属性レジスタ６１１〜６１４それぞれに保持されている複数の保護属性のうち少なくとも１つが保護を示す保護属性である場合に、外部からのアクセスを制限する。
【０１１４】
このように、パイプラインにおいて複数のプログラムが同時に実行されている場合には、実行対象のプログラムのうち少なくとも１つのプログラムに保護を示す保護属性が付与されている場合には、外部からのアクセスを制限する。これにより、パイプライン処理においても、第三者が平文プログラムを不正に読み出すのを防ぐことができる。
【０１１５】
なお、実施の形態３にかかるシステム１０のこれ以外の構成および処理は、実施の形態１にかかるシステム１０の構成および処理と同様である。
【０１１６】
実施の形態３にかかるシステム１０の第１の変更例としては、ステージ単位でアクセスを制御してもよい。この場合、実施の形態１における第１の変更例または第２の変更例において説明したのと同様に、ステージ単位でアクセス制御すればよい。これにより、非保護を示す保護属性が付与されているプログラムを実行しているステージへのアクセスを制御することなく、保護を示す保護属性が付与されているプログラムを保持しているステージへのアクセスのみを制御することができる。
【０１１７】
第２の変更例としては、本実施の形態におけるパイプラインは４つのステージを有したが、ステージの数は実施の形態に限定されるものではなく、４つより多くてもよく、また少なくてもよい。
【０１１８】
（実施の形態４）
次に、実施の形態４にかかるシステム１０について説明する。実施の形態４にかかるシステム１０においては、鍵ＩＤに基づいて命令メモリ１２３へのアクセスを制御する。この点で他の実施の形態にかかるシステム１０と異なっている。
【０１１９】
図１７は、実施の形態４にかかるシステム１０の全体構成を示す図である。実施の形態４にかかるシステム１０のＤＭＡコントローラ１３０は、保護属性付与部１３５と保護属性決定テーブル１３６とにかえて、鍵ＩＤ付与部１３９を有している。
【０１２０】
鍵ＩＤ付与部１３９は、外部メモリ２００から取得したプログラムに対し、鍵ＩＤレジスタ１３２に設定されている鍵ＩＤを付与する。鍵ＩＤ付与部１３９はまた、付与した鍵ＩＤを当該プログラムに対応付けて内部メモリ１２０に保持させる。なお、ここで、鍵ＩＤは、保護または非保護を示す保護属性を示す情報でもある。具体的には、鍵ＩＤ「０」は、非保護の保護属性に対応する。また、「０」以外の鍵ＩＤは、保護の保護属性に対応する。したがって、鍵ＩＤに基づいて保護属性を特定することができる。
【０１２１】
命令メモリ部１２１は、命令メモリ１２３と、命令メモリアクセス制御部１２４と、命令鍵ＩＤメモリ１６０と、状態メモリ１６２と、命令メモリ初期化部１６４とを有している。
【０１２２】
命令鍵ＩＤメモリ１６０は、命令メモリ１２３に保持されている平文プログラムに対して付与された鍵ＩＤを保持する。
【０１２３】
状態メモリ１６２は、命令メモリ１２３に保持されている平文プログラムの状態を保持する。図１８は、平文プログラムの状態の遷移を示す状態遷移図である。図１８に示すように、プロセッサ１００の起動時、すなわちリセット時には保護状態となる。特殊命令により初期化が指示されると初期化状態に遷移する。初期化状態のときに、鍵ＩＤ「０」、すなわち非保護の保護属性を示すプログラムに対する処理が行われると、非保護状態に遷移する。一方、初期化状態のときに、「０」以外の鍵ＩＤ、すなわち保護の保護属性に対応するプログラムに対する処理が行われると、保護状態に遷移する。
【０１２４】
保護対象のプログラムが内部メモリ１２０に保持された状態でプロセッサ１００がリセットされた場合には、内部メモリ１２０の状態メモリ１６２には、保護状態が保持される。そして、初期化しない限り保護の保護属性を示すプログラムの読み出しおよび書き込みは行うことができない。したがって、悪意の第三者が不正にアクセスするのを防止することができる。
【０１２５】
また、保護状態から非保護状態への直接の遷移が許可されていない。したがって、悪意の第三者が、保護対象のプログラムを部分的に上書きし、不正に書き込むのを防止することができる。さらに、非保護状態から保護状態への直接の遷移も許可されていない。したがって、悪意の第三者が、保護対象でないプログラムの一部に保護対象のプログラムを上書きして不正に実行するのを防止することができる。
【０１２６】
再び説明を図１７に戻す。命令メモリ初期化部１６４は、外部からの特殊命令により命令メモリ１２３を初期化する。また、命令鍵ＩＤメモリ１６０が保持している鍵ＩＤに「０」をセットする。また、状態メモリ１６２が保持している保護状態を初期化状態にする。
【０１２７】
図１９は、命令メモリアクセス制御部１２４における、データの読み出しに対するアクセス制御のルールを模式的に示している。図１９に示すように、プロセッサコア１１０による命令フェッチであって、かつ要求されているプログラムに「０」以外の鍵ＩＤが付与されている場合には、読み出しを許可する。このときのプログラムの状態は、保護状態である。
【０１２８】
また、プロセッサコア１１０による命令フェッチ以外の読み出しアクセス要求であって、かつ要求されているプログラムに「０」以外の鍵ＩＤが付与されている場合には、読み出しを制限する。すなわち、エラーを出力する。このときのプログラムの状態は、保護状態である。
【０１２９】
また、要求されているプログラムに鍵ＩＤ「０」が付与されている場合には、要求種別にかかわらず読み出しを許可する。なお、このときの保護状態は、初期化状態または非保護状態のいずれかの状態である。また、これ以外の場合には、エラーを出力する。
【０１３０】
このように、実施の形態４にかかるシステム１０においては、鍵ＩＤに基づいて命令メモリ１２３からのデータの読み出しを制御することができる。さらに、鍵ＩＤにより保護属性を特定することができるので、実施の形態１にかかるシステム１０と同様に、保護を示す保護属性が付与されたプログラムへのアクセスを制御することができる。すなわち、所定の平文プログラムが不正に読み出されるのを防止することができる。
また、特定の要求種別以外の要求種別によるアクセスを制限することにより、第三者が不正に平文プログラムを読み出すのを防止することができる。
【０１３１】
図２０は、命令メモリアクセス制御部１２４における、データの書き込みに対するアクセス制御のルールを模式的に示している。図２０に示すように、プログラムの状態が初期化状態であり、かつ鍵ＩＤが「０」である場合には、アクセス要求元から取得した鍵ＩＤの値によらず書き込みを許可する。要求されているプログラムに鍵ＩＤ「０」が付与されており、プログラムの状態が非保護状態であり、かつアクセス要求元から取得した鍵ＩＤが「０」である場合には、書き込みを許可する。要求されているプログラムに鍵ＩＤ「０」が付与されており、プログラムの状態が非保護状態であり、かつアクセス要求元から取得した鍵ＩＤが「０」以外である場合には、書き込みを制限する。すなわちエラーを出力する。
【０１３２】
要求されているプログラムに「０」以外の鍵ＩＤが付与されており、かつアクセス要求元から取得した鍵ＩＤが「０」である場合には、エラーを出力する。要求されているプログラムに「０」以外の鍵ＩＤが付与されており、かつ付与された鍵ＩＤとアクセス要求元から取得した鍵ＩＤが同じ値である場合には、書き込みを許可する。要求されているプログラムに「０」以外の鍵ＩＤが付与されており、かつ付与された鍵ＩＤとアクセス要求元から取得した鍵ＩＤが異なる値である場合には、エラーを出力する。これ以外の組み合わせの場合には、エラーを出力する。
【０１３３】
このように、アクセス要求されているプログラムに付与された鍵ＩＤと、アクセス要求元から取得した鍵ＩＤとが一致しない場合には、アクセスを制限することにより、第三者が不正に平文プログラムの一部を上書きし、改ざんするのを防止することができる。さらに、プログラムの部分転送を行うことができる。また、保護の保護属性を示すプログラムへのアクセスを制限することにより、所定の平文プログラムが不正に上書きされたり、改ざんされるのを防止することができる。
【０１３４】
また、付与された鍵ＩＤが「０」以外である場合には、さらに要求元から取得した鍵ＩＤと命令鍵ＩＤメモリ１６０が保持している鍵ＩＤとが一致する場合にのみ書き込みを許可するので、第三者が不正に平文プログラムを上書きし、改ざんすることを防止することができる。
【０１３５】
図２１は、特殊命令による初期化における処理を説明するためのフローチャートである。ユーザより初期化が指示されると、プロセッサコア１１０は、内部メモリ１２０に対し、命令メモリ初期化要求を送る（ステップＳ５００）。内部メモリ１２０は、命令メモリ初期化要求を取得すると、内部メモリ１２０を初期化する。具体的には、命令メモリ１２３を初期化する（ステップＳ５０２）。また、命令鍵ＩＤメモリ１６０に保持されている鍵ＩＤの値を「０」に変更する（ステップＳ５０４）。また、状態メモリ１６２に保持されている状態を初期化状態に変更する（ステップＳ５０６）。以上が完了すると、内部メモリ１２０は、プロセッサコア１１０に完了通知を送る（ステップＳ５０８）。以上で、初期化処理が完了する。
【０１３６】
初期化処理により、保護状態または非保護状態にある内部メモリ１２０を初期化状態に戻すことができる。初期化状態においては、命令鍵ＩＤメモリ１６０に保持されている鍵ＩＤの値は「０」である。すなわち、初期化状態においては、非保護の保護属性を示す。
【０１３７】
図２２は、外部メモリ２００に保持されているプログラムをＤＭＡコントローラ１３０を介して内部メモリ１２０に書き込む書込処理を示すフローチャートである。ここでは、プログラムを外部メモリ２００上のアドレスＸ〜Ｙに格納するとする。ステップＳ１００からステップＳ１１０までの処理は実施の形態１にかかるシステム１０におけるステップＳ１００からステップＳ１１０までの処理と同様である。
【０１３８】
本実施の形態にかかるシステム１０においては、復号化処理（ステップＳ１１０）の後、プログラム、および鍵ＩＤを出力する（ステップＳ１１４、ステップＳ１４０）。次にプログラム保持処理（ステップＳ１５０）を行う。なお、書込処理におけるこれ以外の処理は、実施の形態１にかかる書込処理と同様である。
【０１３９】
図２３は、プログラム保持処理（ステップＳ１５０）における内部メモリ１２０の詳細な処理を示すフローチャートである。ステップＳ１１４、ステップＳ１４０により、平文プログラムと鍵ＩＤを取得すると、命令メモリアクセス制御部１２４は、命令鍵ＩＤメモリ１６０に保持されている鍵ＩＤを特定する（ステップＳ１５０２）。また状態メモリ１６２に保持されている状態を特定する（ステップＳ１５０４）。さらに、アクセス要求元から取得した鍵ＩＤを特定する（ステップＳ１５０６）。
【０１４０】
以下、図２０のルールにしたがい、書き込みが許可される条件の場合にのみプログラムを命令メモリ１２３に保持させる（ステップＳ１５１２）。さらに、鍵ＩＤを命令鍵ＩＤメモリ１６０に保持させる（ステップＳ１５１４）。
【０１４１】
具体的には、命令鍵ＩＤメモリ１６０の鍵ＩＤが「０」であって、かつ初期化状態の場合（ステップＳ１５０８，Ｙｅｓ、ステップＳ１５１０，Ｙｅｓ）と、命令鍵ＩＤメモリ１６０の鍵ＩＤが「０」であって、非保護状態であって、かつアクセス要求元から取得した鍵ＩＤが「０」である場合（ステップＳ１５０８，Ｙｅｓ、ステップＳ１５１０，Ｎｏ、ステップＳ１５１６，Ｙｅｓ）と、命令鍵ＩＤメモリ１６０の鍵ＩＤが「０」以外であって、アクセス要求元から取得した鍵ＩＤが「０」であって、かつ取得した鍵ＩＤと命令鍵ＩＤメモリ１６０に保持されている鍵ＩＤとが同じ値である場合（ステップＳ１５０８，Ｎｏ、ステップＳ１５２０，Ｎｏ、ステップＳ１５２２，Ｙｅｓ）にプログラムが保持される。
【０１４２】
これ以外の場合、すなわち、命令鍵ＩＤメモリ１６０の鍵ＩＤが「０」であって、非保護状態であって、かつアクセス要求元から取得した鍵ＩＤが「０」以外である場合（ステップＳ１５０８，Ｙｅｓ、ステップＳ１５１０，Ｎｏ、ステップＳ１５１６，Ｎｏ）と、命令鍵ＩＤメモリ１６０の鍵ＩＤが「０」以外であって、アクセス要求元から取得した鍵ＩＤが「０」である場合（ステップＳ１５０８，Ｎｏ、ステップＳ１５２０，Ｙｅｓ）と、命令鍵ＩＤメモリ１６０の鍵ＩＤが「０」以外であって、アクセス要求元から取得した鍵ＩＤが「０」以外であって、かつ取得した鍵ＩＤが命令鍵ＩＤメモリ１６０の鍵ＩＤと異なる値である場合（ステップＳ１５０８，Ｎｏ、ステップＳ１５２０，Ｎｏ、ステップＳ１５２２，Ｎｏ）には、エラーが出力される。
【０１４３】
図２４は、内部メモリ１２０に保持されたプログラムを読み出す場合の読出処理を説明するためのフローチャートである。平文プログラムの読み出し要求を取得すると（ステップＳ２００）、命令鍵ＩＤメモリ１６０の鍵ＩＤおよびプログラムの状態を特定する（ステップＳ２２０）。次に、図１９を参照しつつ説明したルールにしたがい、読み出しが許可される条件の場合にのみプログラムを読み出す（ステップＳ２２６）。さらに、鍵ＩＤと状態を読み出す（ステップＳ２２８）。
【０１４４】
具体的には、特定したＩＤ、すなわち命令鍵ＩＤメモリ１６０の鍵ＩＤが「０」であって、かつ初期化状態または非保護状態である場合には（ステップＳ２２２，Ｙｅｓ、ステップＳ２２４，Ｙｅｓ）、命令メモリアクセス制御部１２４は、命令メモリ１２３に保持されている平文プログラムを出力する（ステップＳ２２６）。さらに、鍵ＩＤを出力する（ステップＳ２２８）。
【０１４５】
また、命令鍵ＩＤメモリ１６０の鍵ＩＤが「０」以外であって、保護状態であって、かつ要求種別がプロセッサコア１１０からの命令フェッチである場合にも（ステップＳ２２２，Ｎｏ、ステップＳ２４０，Ｙｅｓ、ステップＳ２４２，Ｙｅｓ）、命令メモリアクセス制御部１２４は、平文プログラムと鍵ＩＤを出力する。
【０１４６】
これ以外の組み合わせについては、エラーを出力する。例えば、命令鍵ＩＤメモリ１６０の鍵ＩＤが「０」であって、かつ保護状態である場合（ステップＳ２２２，Ｙｅｓ、ステップＳ２２４，Ｎｏ）、命令鍵ＩＤメモリ１６０の鍵ＩＤが「０」以外であって、かつ保護状態以外の状態である場合（ステップＳ２２２，Ｎｏ、ステップＳ２４０，Ｎｏ）、および命令鍵ＩＤメモリ１６０の鍵ＩＤが「０」以外であって、保護状態以外の状態であって、かつプロセッサコア１１０からの命令フェッチ以外である場合（ステップＳ２２２，Ｎｏ、ステップＳ２４０，Ｙｅｓ、ステップＳ２４２，Ｎｏ）に、エラーを出力する（ステップＳ２３０，ステップＳ２４４）。
【０１４７】
実施の形態４にかかるシステム１０においては、鍵ＩＤから保護属性を特定することができるので、他の実施の形態にかかるシステム１０と同様に、保護属性および要求種別に基づいて、プログラムの読み出しを制限することができる。これにより、第三者による不正なアクセスを防止することができる。
【０１４８】
実施の形態４にかかるシステム１０のこれ以外の構成および処理は、他の実施の形態にかかるシステム１０の構成および処理と同様である。
【０１４９】
なお、実施の形態４にかかるシステム１０においては、保護属性を特定する情報として、鍵ＩＤを利用したが、保護属性を特定でき、かつプログラムを特定できる情報であればよく、例えば、暗号復号鍵の値を利用してもよい。
【０１５０】
（実施の形態５）
次に、実施の形態５にかかるシステム１０について説明する。実施の形態４にかかるシステム１０は、プロセッサコア１１０へのデバッグ割り込みを制限する。また、プロセッサコア１１０からのトレース情報の出力を制限する。この点で、他の実施の形態にかかるシステム１０とは異なる。
【０１５１】
図２５は、実施の形態５にかかるシステム１０の全体構成を示す図である。実施の形態５にかかるシステム１０は、パイプライン６００と、デバッグ割込制御部６６２と、トレース情報出力制御部６６４とを有している。
【０１５２】
プロセッサコア１１０は、パイプラインのステージ６４１〜６４５毎に鍵ＩＤレジスタ６５１〜６５５を有している。各鍵ＩＤレジスタ６５１〜６５５は、対応するステージ６５１〜６５５において実行される命令で利用された鍵ＩＤを保持している。
【０１５３】
デバッグ割込制御部６６２は、各鍵ＩＤレジスタ６５１〜６５５が保持している鍵ＩＤに基づいて、外部からのデバッガ割り込みを制限する。本実施の形態にかかるデバッグ割込制御部６６２は、特許請求の範囲に記載のデバッグ要求取得手段とデバッグ割込制御手段とに対応する。トレース情報出力制御部６６４は、実行ユニット（ＥＸＵ）６４３の鍵ＩＤレジスタ６５３が保持している鍵ＩＤに基づいて、デバッガインターフェース１４０へのトレース情報出力を制限する。本実施の形態にかかる実行ユニットは、特許請求の範囲に記載の実行手段に対応する。
【０１５４】
デバッガインターフェース１４０は、外部でデバッガ５００に接続されている。そして、デバッガ５００からの要求に対して、プロセッサコア１１０、内部メモリ１２０、ＤＭＡコントローラ１３０等へ要求を振り分ける。また、各部からの要求に対応した実行結果や、各部からのトレース情報等を受け取ると、実行結果をデバッガ５００に返す。
【０１５５】
図２６は、実施の形態５にかかるシステム１０のプロセッサコア１１０がプログラムを実行するときの処理を示すフローチャートである。図２６を参照しつつ、ユーザがプログラムを実行するときに行う処理について説明する。
【０１５６】
命令メモリ１２３に保持されているプログラムを実行する場合、まずパイプライン６００にある命令フェッチユニット（ＩＦＵ）６４１は、命令フェッチにより内部メモリ１２０からプログラムの読み出し要求を行う（ステップＳ６００）。
【０１５７】
内部メモリ１２０の命令メモリアクセス制御部１２４は、プログラムの読み出し要求を受け取ると、読み出し要求の要求種別を特定する。要求種別がプロセッサコア１１０による命令フェッチである場合には（ステップＳ６０２，Ｙｅｓ）、命令メモリアクセス制御部１２４は、プログラムを読み出す（ステップＳ６０４）。さらに、命令鍵ＩＤメモリ１６０からプログラムに付与されている鍵ＩＤを読み出す（ステップＳ６０６）。
次に、命令メモリアクセス制御部１２４は、プログラムおよび鍵ＩＤをパイプライン６００のＩＦＵ６４１に送る（ステップＳ６０８）。要求種別がプロセッサコア１１０による命令フェッチ以外である場合には（ステップＳ６０２，Ｎｏ）、エラーを出力する（ステップＳ６１０）。
【０１５８】
ＩＦＵ６４１は、内部メモリ１２０からプログラムおよび鍵ＩＤを取得すると、取得した鍵ＩＤを鍵ＩＤレジスタ６５１に保持する（ステップＳ６１２）。さらに、ＩＦＵ６４１は、取得したプログラムと鍵ＩＤレジスタ６５１の値をデコードユニット（ＤＥＣ）６４２に送る（ステップＳ６１４）。
【０１５９】
ＤＥＣ６４２は、ＩＦＵ６４１から取得した鍵ＩＤを鍵ＩＤレジスタ６５２に保持する（ステップＳ６１６）。さらに、ＤＥＣ６４２は、デコード（ステップＳ６１８）をした後、デコード結果と鍵ＩＤレジスタ６５２の値を実行ユニット（ＥＸＵ）６４３に送る（ステップＳ６２０）。
【０１６０】
ＥＸＵ６４３は、ＤＥＣ６４２から取得した鍵ＩＤを鍵ＩＤレジスタ６５３に保持する（ステップＳ６２２）。ＥＸＵ６４３は、デコード結果から命令を実行し（ステップＳ６２４）、その後、実行結果と鍵ＩＤレジスタ６５３の値をメモリアクセスユニット（ＭＥＭ）６４４に送る（ステップＳ６２６）。
【０１６１】
ＭＥＭ６４４は、ＥＸＵ６４３から取得した鍵ＩＤを鍵ＩＤレジスタ６５４に保持する（ステップＳ６２８）。ＭＥＭ６４４は、結果にしたがって内部メモリ１２０にアクセスし（ステップＳ６３０）、その後、結果とＭＥＭ６４４の値をレジスタ書込部（ＷＥＵ）６４５に送る（ステップＳ６３２）。
【０１６２】
ＷＥＵ６４５は、ＭＥＭ６４４から取得した鍵ＩＤを鍵ＩＤレジスタ６５５に保持する（ステップＳ６３４）。ＷＥＵ６４５は、メモリアクセスの結果にしたがってレジスタへの書き込みを行う（ステップＳ６３６）。以上で、プログラムの実行が完了する。
【０１６３】
図２７は、プロセッサコア１１０に対してデバッグ割り込みが行われるときのデバッガ割込処理を示すフローチャートである。デバッグ割込制御部６６２は、デバッガ５００からの割り込み要求であるデバッガ割込要求を取得すると（ステップＳ７００）、パイプライン６００の各ステージの鍵ＩＤレジスタ６５１〜６５５に保持されている鍵ＩＤを特定する（ステップＳ７０２）。各ステージの鍵ＩＤがすべて「０」の場合、すなわちすべてのステージが非保護の保護属性を示す場合には（ステップＳ７０４，Ｙｅｓ）、デバッガ割込要求を受け付けてデバッグモードに移行する（ステップＳ７０６）。これにより、プロセッサコア１１０をデバッグモードで動作させ、ステップ実行やブレークポイントを設定したデバッグが可能となる。
【０１６４】
一方で、ステップＳ７０２において特定した各ステージの鍵ＩＤのうち少なくとも１つが「０」以外の値である場合、すなわち少なくとも１つのステージが保護の保護属性を示す場合には（ステップＳ７０４，Ｎｏ）、デバッガ割込要求を無視し、エラーを出力する（ステップＳ７０８）。以上で、デバッガ割込処理が完了する。
【０１６５】
このように、全てのステージが非保護の保護属性を示す場合にのみデバッガ割り込みを許可することにより、第三者が不正にアクセスするのを防止することができる。
【０１６６】
図２８は、プロセッサコア１１０からトレース情報を出力するトレース情報出力処理を説明するためのフローチャートである。トレース情報出力制御部６６４は、ＥＸＵ６４３からトレース情報を取得すると（ステップＳ７２０）、鍵ＩＤレジスタ６５３に保持されている鍵ＩＤを特定する（ステップＳ７２２）。特定した鍵ＩＤが「０」の場合、すなわち非保護の保護属性を示す場合には（ステップＳ７２４，Ｙｅｓ）、トレース情報を出力する（ステップＳ７２６）。
【０１６７】
一方、特定した鍵ＩＤが保護を示す鍵ＩＤ「０」以外の値である場合、すなわち保護の保護属性を示す場合には（ステップＳ７２４，Ｎｏ）、トレース情報の出力を停止し、ダミー情報を出力する（ステップＳ７２８）。以上で、トレース情報出力処理が完了する。このように、トレース情報の出力を制限することができる。なお、他の例としてはエラーを出力してもよい。
【０１６８】
このように、ＥＸＵ６４３の鍵ＩＤレジスタに保持されている鍵ＩＤにより特定された保護属性が保護を示す場合には、トレース情報の出力を制限することができる。これにより、第三者が不正にアクセスするのを防止することができる。
【０１６９】
実施の形態５にかかるシステム１０のこれ以外の構成および処理は、他の実施の形態にかかるシステム１０の構成および処理と同様である。
【０１７０】
（実施の形態６）
次に、実施の形態６にかかるシステム１０について説明する。実施の形態６にかかるシステム１０は、データメモリへのアクセスを制限する。この点で、実施の形態４にかかるシステム１０と異なる。
【０１７１】
図２９は、実施の形態６にかかるシステム１０の全体構成を示す図である。実施の形態６にかかるシステム１０のデータメモリ部１２５は、データメモリ１２７と、それに対応するデータ鍵ＩＤメモリ１７２と、状態メモリ１７４と、データメモリアクセス制御部１２８と、データメモリ初期化部１７６とを有している。
【０１７２】
データメモリ１２７は、暗号復号器１３４から取得した平文データや、プロセッサコア１１０やデバッガ５００からの平文データを保持する。データ鍵ＩＤメモリ１７２は、データメモリ１２８に保持されている平文データに対して付与された鍵ＩＤを保持する。データメモリアクセス制御部１２８は、外部からデータメモリ１２７へのアクセスを制御する。状態メモリ１７４は、実施の形態４にかかる状態メモリ１６２と同様、データの状態を保持する。
【０１７３】
データメモリ初期化部１７６は、外部からの特殊命令によりデータメモリ１２７を初期化する。また、データ鍵ＩＤメモリ１７２が保持している鍵ＩＤに「０」をセットする。また、状態メモリ１７４が保持している保護状態を初期化状態にする。
【０１７４】
図３０は、データメモリアクセス制御部１２８における、データの読み出しアクセス制御ルールを模擬的に示している。図３０に示すように、要求されているプログラムの状態が初期化状態または非保護状態であり、かつ鍵ＩＤが「０」である場合には、付与された鍵ＩＤの値によらず読み出しを許可する。
【０１７５】
要求されているプログラムに「０」以外の鍵ＩＤが付与されており、プログラムの状態が保護状態であり、かつ付与された鍵ＩＤとアクセス要求元から取得した鍵ＩＤが同じ値である場合には、読み出しを許可する。
【０１７６】
要求されているプログラムに「０」以外の鍵ＩＤが付与されており、かつ付与された鍵ＩＤとアクセス要求元から取得した鍵ＩＤが異なる値である場合には、エラーを出力する。これ以外の組み合わせの場合には、エラーを出力する。
【０１７７】
このように、保護を示す鍵ＩＤが付与されたデータへのアクセスを制限することにより、所定の平文データが不正に読み出されるのを防止することができる。さらに鍵ＩＤが一致しないデータへのアクセスを制限することにより、第三者が不正に平文データを読み出すのを防止することができる。
【０１７８】
図３１は、データメモリアクセス制御部１２８における、データの書き込みアクセス制御ルールを模式的に示している。図３１に示すように、データの状態が初期化状態であり、かつ鍵ＩＤが「０」である場合には、付与された鍵ＩＤの値によらず書き込みを許可する。要求されているデータに鍵ＩＤ「０」が付与されており、データの状態が非保護状態であり、かつアクセス要求元から取得した鍵ＩＤが「０」である場合には、書き込みを許可する。
【０１７９】
要求されているデータに「０」以外の鍵ＩＤが付与されており、データの状態が保護状態であり、かつ付与された鍵ＩＤとアクセス要求元から取得した鍵ＩＤが同じ値である場合には、書き込みを許可する。要求されているデータに「０」以外の鍵ＩＤが付与されており、かつ付与された鍵ＩＤとアクセス要求元から取得した鍵ＩＤが異なる値である場合には、エラーを出力する。これ以外の組み合わせの場合には、エラーを出力する。
【０１８０】
このように、アクセス要求されているデータに付与された鍵ＩＤと、送られてきた鍵ＩＤが一致しない場合にアクセスを制限することにより、第三者が不正に平文データの一部を上書きし、改ざんすることを防止することができる。また、データの部分転送ができる。また、保護を示す鍵ＩＤが付与されたデータへのアクセスを制限することにより、所定の平文データが不正に上書き、改ざんされるのを防止することができる。
【０１８１】
図３２は、外部メモリ２００に保持されているデータをＤＭＡコントローラ１３０を介して内部メモリ１２０に書き込む書込処理を示すフローチャートである。ここでは、データを外部メモリ２００上のアドレスＰ〜Ｑに格納するとする。
【０１８２】
プロセッサコア１１０は、鍵ＩＤの設定要求をＤＭＡコントローラ１３０に送った後、ＤＭＡ転送要求をＤＭＡコントローラ１３０に送る（ステップＳ１６０）。ここで、ＤＭＡ転送要求は、外部メモリ２００上のアドレスＰ〜Ｑのデータを内部メモリ１２０に転送することを要求する情報である。
【０１８３】
ＤＭＡコントローラ１３０は、外部メモリ２００からアドレスＰ〜Ｑに対応するデータＥ３［Ｃ（Ｐ〜Ｑ）］を読み出す（ステップＳ１６２）。このとき、鍵ＩＤレジスタ１３２に設定されている値が「０」以外である場合は（ステップＳ１０８，Ｎｏ）、暗号復号器１３４は、鍵テーブル１３３から得られた鍵で読み出した暗号化データＥ３［Ｃ（Ｐ〜Ｑ）］に対して復号処理を施し、平文データＣ（Ｐ〜Ｑ）を得る（ステップＳ１１０）。
【０１８４】
次に、データ、および鍵ＩＤを出力する（ステップＳ１６４、ステップＳ１６６）。次にデータ保持処理（ステップＳ１７０）を行う。また、プロセッサコア１１０が命令フェッチにより平文データの読み出しを要求すると（ステップＳ１２６）、内部メモリ１２０は、要求された平文データをプロセッサコア１１０に出力する（ステップＳ１７２）。書込処理におけるこれ以外の処理は、実施の形態１にかかる書込処理と同様である。
【０１８５】
図３３は、データ保持処理（ステップＳ１７０）における内部メモリ１２０の詳細な処理を示すフローチャートである。ステップＳ１６４、ステップＳ１６６により、平文データと鍵ＩＤを取得すると、データメモリアクセス制御部１２８は、データ鍵ＩＤメモリ１７２に保持されている鍵ＩＤを特定する（ステップＳ１７０２）。また状態メモリ１６２に保持されている状態を特定する（ステップＳ１７０４）。さらに、アクセス要求元から取得した鍵ＩＤを特定する（ステップＳ１７０６）。
【０１８６】
以下、図３１のルールにしたがい、書き込みが許可される条件の場合にのみデータをデータメモリ１２８に保持させる（ステップＳ１７１２）。さらに、鍵ＩＤをデータ鍵ＩＤメモリ１７２に保持させる（ステップＳ１７１４）。
【０１８７】
具体的には、データ鍵ＩＤメモリ１７２の鍵ＩＤが「０」であって、かつ初期化状態の場合（ステップＳ１７０８，Ｙｅｓ、ステップＳ１７１０，Ｙｅｓ）と、データ鍵ＩＤメモリ１７２の鍵ＩＤが「０」であって、非保護状態であって、かつアクセス要求元から取得した鍵ＩＤが「０」である場合（ステップＳ１７０８，Ｙｅｓ、ステップＳ１７１０，Ｎｏ、ステップＳ１７１６，Ｙｅｓ）と、データ鍵ＩＤメモリ１７２の鍵ＩＤが「０」以外であって、アクセス要求元から取得した鍵ＩＤとデータ鍵ＩＤメモリ１７２の鍵ＩＤとが同じ値である場合（ステップＳ１７０８，Ｎｏ、ステップＳ１７２０，Ｙｅｓ）にデータが保持される。
【０１８８】
これ以外の場合、すなわち、データ鍵ＩＤメモリ１７２の鍵ＩＤが「０」であって、非保護状態であって、かつアクセス要求元から取得した鍵ＩＤが「０」でない場合（ステップＳ１７０８，Ｙｅｓ、ステップＳ１７１０，Ｎｏ、ステップＳ１７１６，Ｎｏ）と、データ鍵ＩＤメモリ１７２の鍵ＩＤが「０」以外であって、かつ取得した鍵ＩＤがデータ鍵ＩＤメモリ１７２の鍵ＩＤと異なる値である場合（ステップＳ１７０８，Ｎｏ、ステップＳ１７２０，Ｎｏ）には、エラーが出力される。
【０１８９】
ソフトウェアで利用されるデータに対して、プロセッサコア１１０を用いた上書き要求を行う場合が考えられる。この場合、パイプラインのＭＥＭは、内部メモリ１２０に対して平文データの書込要求を行う。このとき、同時にＭＥＭの鍵ＩＤレジスタが保持している鍵ＩＤを送る。
【０１９０】
本実施の形態にかかるシステム１０においては、ＭＥＭから取得した鍵ＩＤとデータ鍵ＩＤメモリ１７２の鍵ＩＤの値に基づいてデータへのアクセスを制御することができる。すなわち、同じ鍵ＩＤで関連付けられているプログラムは、データメモリ１７８にデータを保持させることができる。一方、異なる鍵ＩＤのプログラムからのアクセスは制限される。すなわち、異なる鍵ＩＤのプログラムは、データメモリ１２７にデータを保持させようとした場合にはエラーが返される。
【０１９１】
このように、第三者が、ストア命令等を利用してデータメモリにアクセスする際に、不正にデータを書き込まれるのを防止することができる。
【０１９２】
また、ソフトウェアを改ざんする方法の１つとして、デバッガ５００を用いてデバッガインターフェース１４０を介して内部メモリ１２０に保持されている平文データの書込要求を行う方法が考えられる。
【０１９３】
しかしこの場合、データ鍵ＩＤメモリ１７２に保持されている鍵ＩＤが、非保護を示す「０」でなく、デバッガ５００から送られてくる鍵ＩＤと一致しないことから、図３３を参照しつつ説明した、データ保持処理、すなわちデータ書込処理にしたがい、保護の保護属性を示すデータメモリ１２７への書き込みを制限する。すなわち、データメモリアクセス制御部１２８は、デバッガインターフェース１４０を介して平文データが上書きされるのを防止することができる。
【０１９４】
また他の方法として、ＤＭＡコントローラ１３０を介して第三者が不正に平文データを書き込む方法が考えられる。たとえば、デバッガ５００が、ＤＭＡコントローラ１３０に対して、鍵ＩＤ「０」を指定して外部メモリ２００から内部メモリ１２０へのＤＭＡ転送要求を行うことにより実現できる。このＤＭＡ転送要求は、外部メモリ１２０に保持されているデータを、外部メモリ２００の適当な領域から内部メモリ１２０内の領域への転送要求である。
【０１９５】
この場合、ＤＭＡコントローラ１３０は、デバッガ５００からのＤＭＡ転送要求に対して、内部メモリ１２０への転送を行う。具体的には、外部メモリ２００から読み出し、内部メモリ１２０のデータメモリ１２７へ書き込みを行う。
【０１９６】
しかしこの場合、データ鍵ＩＤメモリ１７２に保持されている鍵ＩＤが、非保護を示す「０」でなく、デバッガ５００を介してＤＭＡコントローラ１３０から送られてくる鍵ＩＤ「０」と一致しないことから、図３３において説明した書込処理にしたがい、保護を示す鍵ＩＤが付与されたデータの上書きを制限する。
【０１９７】
このように、デバッガ５００は、デバッガインターフェースを介したアクセスだけでなく、ＤＭＡコントローラ１３０やＢＩＵ１５０を介してアクセスすることができる。しかし、この場合であっても、第三者に不正に上書きされるのを防止することができる。
【０１９８】
図３４は、内部メモリ１２０に保持されたデータを読み出す場合の読出処理を説明するためのフローチャートである。内部メモリ１２０のデータメモリアクセス制御部１２８は、データメモリ１２８に保持されているデータの読み出しを示す読出要求を取得すると（ステップＳ２５０）、要求されているデータに対応する鍵ＩＤとしてデータ鍵ＩＤメモリ１７２に保持されている鍵ＩＤを特定し、対応する状態として状態メモリ１７４に保持されている状態を特定する（ステップＳ２５２）。
【０１９９】
特定したＩＤ、すなわちデータ鍵ＩＤメモリ１７２の鍵ＩＤが「０」であって、かつ初期化状態または非保護状態である場合には（ステップＳ２５４，Ｙｅｓ、ステップＳ２５６，Ｙｅｓ）、データメモリアクセス制御部１２８は、データメモリ１２７に保持されている平文データと鍵ＩＤを出力する（ステップＳ２５８，ステップＳ２６０）。
【０２００】
また、データ鍵ＩＤメモリ１７２の鍵ＩＤが「０」以外であって、保護状態であって、かつデータ鍵ＩＤメモリ１７２の鍵ＩＤとアクセス要求元から取得した鍵ＩＤとが一致する場合にも（ステップＳ２５４，Ｎｏ、ステップＳ２７０，Ｙｅｓ、ステップＳ２７２，Ｙｅｓ）、データメモリアクセス制御部１２８は、データメモリ１２７に保持されている平文データと鍵ＩＤを出力する（ステップＳ２５８，ステップＳ２６０）。
【０２０１】
これ以外の組み合わせについては、エラーを出力する。例えば、命令鍵ＩＤメモリ１６０の鍵ＩＤが「０」であって、かつ保護状態である場合（ステップＳ２５４，Ｙｅｓ、ステップＳ２５６，Ｎｏ）、命令鍵ＩＤメモリ１６０の鍵ＩＤが「０」以外であって、かつ保護状態以外の状態である場合（ステップＳ２５４，Ｎｏ、ステップＳ２７０，Ｎｏ）、および命令鍵ＩＤメモリ１６０の鍵ＩＤが「０」以外であって、保護状態以外の状態であって、かつプロセッサコア１１０からの命令フェッチ以外である場合（ステップＳ２５４，Ｎｏ、ステップＳ２７０，Ｙｅｓ、ステップＳ２７２，Ｎｏ）に、エラーを出力する（ステップＳ２６２，ステップＳ２７４）。
【０２０２】
実施の形態６にかかるシステム１０においては、鍵ＩＤから保護属性を特定することができるので、他の実施の形態にかかるシステム１０と同様に、保護属性および要求種別に基づいて、データの読み出しを制限することができる。これにより、第三者による不正なアクセスを防止することができる。
【０２０３】
なお、実施の形態６にかかるシステム１０のこれ以外の構成および処理は、実施の形態４にかかるシステム１０の構成および処理と同様である。
【図面の簡単な説明】
【０２０４】
【図１】システム１０の全体構成を示す図である。
【図２】鍵テーブル１３３のデータ構成を模式的に示す図である。
【図３】保護属性付与部１３５が保護属性を付与するときに利用する保護属性決定テーブル１３６を示す図である。
【図４】命令メモリアクセス制御部１２４のアクセス制御のルールを模式的に示す図である。
【図５】外部メモリ２００に保持されているプログラムをＤＭＡコントローラ１３０を介して内部メモリ１２０に書き込む読込処理を示すフローチャートである。
【図６】図５を参照しつつ説明した処理によって内部メモリ１２０に保持されたプログラムを読み出す場合の読出処理を説明するためのフローチャートである。
【図７】命令メモリ１２３に既に平文プログラムが保持された状態において、デバッガモードに設定されているときに、新たに平文プログラムの書き込み、すなわち上書きが指示された場合の書込処理を示すフローチャートである。
【図８】実施の形態１の第１の変更例にかかる保護属性メモリ１２２のデータ構成を模式的に示す図である。
【図９】実施の形態１の第２の変更例にかかる保護属性メモリ１２２のデータ構成を模式的に示す図である。
【図１０】実施の形態１の第３の変更例にかかるシステム１０の全体構成を示す図である。
【図１１】実施の形態１の第４の変更例にかかる書込処理を示すフローチャートである。
【図１２】実施の形態２にかかるシステム１０の全体構成を示す図である。
【図１３】実施の形態２にかかるシステム１０のプロセッサコア１１０がプログラムを実行するときの処理を示すフローチャートである。
【図１４】ソフトウェアの動作を解析する場合の処理を示すフローチャートである。
【図１５】実施の形態２の変更例にかかる読出処理を示すフローチャートである。
【図１６】実施の形態３にかかるシステム１０の全体構成を示す図である。
【図１７】実施の形態４にかかるシステム１０の全体構成を示す図である。
【図１８】平文プログラムの状態の遷移を示す状態遷移図である。
【図１９】命令メモリアクセス制御部１２４における、データの読み出しに対するアクセス制御のルールを模式的に示す図である。
【図２０】命令メモリアクセス制御部１２４における、データの書き込みに対するアクセス制御のルールを模式的に示す図である。
【図２１】特殊命令による初期化における処理を説明するためのフローチャートである。
【図２２】外部メモリ２００に保持されているプログラムをＤＭＡコントローラ１３０を介して内部メモリ１２０に書き込む書込処理を示すフローチャートである。
【図２３】プログラム保持処理（ステップＳ１５０）における内部メモリ１２０の詳細な処理を示すフローチャートである。
【図２４】内部メモリ１２０に保持されたプログラムを読み出す場合の読み出し処理を説明するためのフローチャートである。
【図２５】実施の形態５にかかるシステム１０の全体構成を示す図である。
【図２６】実施の形態５にかかるシステム１０のプロセッサコア１１０がプログラムを実行するときの処理を示すフローチャートである。
【図２７】プロセッサコア１１０に対してデバッグ割り込みが行われるときのデバッガ割込処理を示すフローチャートである。
【図２８】プロセッサコア１１０からトレース情報を出力するトレース情報出力処理を説明するためのフローチャートである。
【図２９】実施の形態６にかかるシステム１０の全体構成を示す図である。
【図３０】データメモリアクセス制御部１２８における、データの読み出しアクセス制御ルールを模擬的に示す図である。
【図３１】データメモリアクセス制御部１２８における、データの書き込みアクセス制御ルールを模式的に示す図である。
【図３２】外部メモリ２００に保持されているデータをＤＭＡコントローラ１３０を介して内部メモリ１２０に書き込む書込処理を示すフローチャートである。
【図３３】データ保持処理（ステップＳ１７０）における内部メモリ１２０の詳細な処理を示すフローチャートである。
【図３４】内部メモリ１２０に保持されたデータを読み出す場合の読出処理を説明するためのフローチャートである。
【符号の説明】
【０２０５】
１０  システム
１００  プロセッサ
１１０  プロセッサコア
１１２  実行ユニット
１１４  カレント保護属性レジスタ
１１６  コアアクセス制御部
１２０  内部メモリ
１２１  命令メモリ部
１２２  保護属性メモリ
１２３  命令メモリ
１２４  命令メモリアクセス制御部
１２５  データメモリ部
１２６  保護属性メモリ
１２７  データメモリ
１２８  データメモリアクセス制御部
１３０  ＤＭＡコントローラ
１３２  鍵ＩＤレジスタ
１３３  鍵テーブル
１３４  暗号復号器
１３５  保護属性付与部
１３６  保護属性決定テーブル
１３９  鍵ＩＤ付与部
１４０  デバッガインターフェース
１５０  ＢＩＵ
１６０  命令鍵ＩＤメモリ
１６２  状態メモリ
１６４  命令メモリ初期化部
１７２  データ鍵ＩＤメモリ
１７４  状態メモリ
１７６  データメモリ初期化部
２００  外部メモリ
３００  ユーザインターフェース
４００  外部バス
５００  デバッガ
６００  パイプライン
６０１〜６０４  実行ユニット
６１１〜６１４  カレント保護属性レジスタ
６２０  ＯＲ回路
６４１〜６４５  ステージ
６５１〜６５５  鍵ＩＤレジスタ
６６２  デバッグ割込制御部
６６４  トレース情報出力制御部
【図１】
2006072963.tif 000003
【図２】
2006072963.tif 000004
【図３】
2006072963.tif 000005
【図４】
2006072963.tif 000006
【図５】
2006072963.tif 000007
【図６】
2006072963.tif 000008
【図７】
2006072963.tif 000009
【図８】
2006072963.tif 000010
【図９】
2006072963.tif 000011
【図１０】
2006072963.tif 000012
【図１１】
2006072963.tif 000013
【図１２】
2006072963.tif 000014
【図１３】
2006072963.tif 000015
【図１４】
2006072963.tif 000016
【図１５】
2006072963.tif 000017
【図１６】
2006072963.tif 000018
【図１７】
2006072963.tif 000019
【図１８】
2006072963.tif 000020
【図１９】
2006072963.tif 000021
【図２０】
2006072963.tif 000022
【図２１】
2006072963.tif 000023
【図２２】
2006072963.tif 000024
【図２３】
2006072963.tif 000025
【図２４】
2006072963.tif 000026
【図２５】
2006072963.tif 000027
【図２６】
2006072963.tif 000028
【図２７】
2006072963.tif 000029
【図２８】
2006072963.tif 000030
【図２９】
2006072963.tif 000031
【図３０】
2006072963.tif 000032
【図３１】
2006072963.tif 000033
【図３２】
2006072963.tif 000034
【図３３】
2006072963.tif 000035
【図３４】
2006072963.tif 000036