(57)【特許請求の範囲】
【請求項１】
命令実行部と、
前記命令実行部で実行される命令を格納する命令アドレス空間の中から前記命令実行部によるアクセスが可能な複数の部分アドレス空間を規定するための命令保護情報を記憶する命令保護情報記憶部と、
前記命令実行部における演算に使用されるオペランドを格納するデータアドレス空間の中から前記命令実行部によるアクセスが可能な複数の部分アドレス空間を規定するためのデータ保護情報を記憶するデータ保護情報記憶部と、
前記命令保護情報記憶部及び前記データ保護情報記憶部の設定内容に基づいて、前記命令実行部によるアクセス可否を判定する保護違反判定部とを備え、
前記命令保護情報記憶部を用いた前記命令アドレス空間の保護を、前記データ保護情報記憶部を用いた前記データアドレス空間の保護とは独立に選択的に無効化可能であるデータ処理装置。
【請求項２】
前記命令実行部における実行プログラムを第１のプログラムから前記第１のプログラムとは異なる第２のプログラムに切り替える際に、前記命令保護情報記憶部を用いた前記命令アドレス空間の保護を無効化するとともに、前記命令保護情報記憶部の記憶内容を前記第１のプログラムに対応した前記命令保護情報のまま維持する手段と、
前記第２のプログラムから前記第１のプログラムに復帰する際に、前記命令アドレス空間の保護を有効化する手段と、
をさらに備える請求項１に記載のデータ処理装置。
【請求項３】
前記第１のプログラムから前記第２のプログラムに切り替える際に、前記第１のプログラムに対応した前記データ保護情報に加えて前記第２のプログラムに対応した前記データ保護情報を前記データ保護情報記憶部に格納する手段と、
前記第２のプログラムから前記第１のプログラムに復帰する際に、前記データ保護情報記憶部に書き加えられた前記第２のプログラムに対応した前記データ保護情報を消去する手段と、
をさらに備える請求項２に記載のデータ処理装置。
【請求項４】
前記命令実行部における実行プログラムを第１のプログラムから第２のプログラムに切り替える際に、前記第１のプログラムに対応した前記データ保護情報に加えて前記第２のプログラムに対応した前記データ保護情報を前記データ保護情報記憶部に格納する手段と、
前記第２のプログラムから前記第１のプログラムに復帰する際に、前記データ保護情報記憶部に書き加えられた前記第２のプログラムに対応した前記データ保護情報を消去する手段と、
をさらに備える請求項１に記載のデータ処理装置。
【請求項５】
前記命令保護情報記憶部を用いた前記命令アドレス空間の保護の有効化、及び前記データ保護情報記憶部を用いた前記データアドレス空間の保護の有効化を各々独立に指定する保護制御情報を記憶する保護制御情報記憶部をさらに備える請求項１乃至４のいずれか１項に記載のデータ処理装置。
【請求項６】
前記保護制御情報記憶部は、前記保護制御情報を前記命令実行部で実行されるプログラムに応じて書き換え可能に記憶する請求項５に記載のデータ処理装置。
【請求項７】
前記保護制御情報は、前記命令アドレス空間の保護の有効化を指定する命令保護制御ビット、及び前記データアドレス空間の保護の有効化を指定するデータ保護制御ビットを含む請求項５又は６に記載のデータ処理装置。
【請求項８】
データ処理装置が備える命令実行部で実行される命令を格納する命令アドレス空間及び前記命令実行部における演算に使用されるオペランドを格納するデータアドレス空間を、前記命令実行部によるアクセスから保護するためのアドレス空間保護方法であって、
前記データ処理装置が、前記命令実行部において第１のプログラムが実行されている間は、前記命令アドレス空間の中から前記命令実行部によるアクセスが可能な複数の部分アドレス空間を規定するための命令保護情報を記憶する命令保護情報記憶部の記憶内容と、前記データアドレス空間の中から前記命令実行部によるアクセスが可能な複数の部分アドレス空間を規定するためのデータ保護情報を記憶するデータ保護情報記憶部の記憶内容とに基づいて、前記命令実行部によるアクセスから前記命令アドレス空間及び前記データアドレス空間を保護し、
前記データ処理装置が、前記命令実行部における実行プログラムを前記第１のプログラムから第２のプログラムに切り替える際に、前記命令保護情報記憶部を用いた前記命令アドレス空間の保護を無効化するとともに、前記命令保護情報記憶部の記憶内容を前記第１のプログラムに対応した前記命令保護情報のまま維持し、
前記データ処理装置が、前記第２のプログラムが実行されている間は、前記命令アドレス空間の保護を無効化した状態で、前記データ保護情報記憶部に基づく前記データアドレス空間の保護を行い、
前記データ処理装置が、前記第２のプログラムから前記第１のプログラムに復帰する際に、前記命令保護情報記憶部を用いた前記命令アドレス空間の保護を再び有効化する、アドレス空間保護方法。
【請求項９】
前記データ処理装置が、前記第１のプログラムから前記第２のプログラムに切り替える際に、前記第１のプログラムに対応する前記データ保護情報に追加して、前記第２のプログラムに対応する前記データ保護情報を前記データ保護情報記憶部に書き加え、
前記データ処理装置が、前記第２のプログラムが実行されている間は、前記データ保護情報記憶部に記憶されている前記第１及び第２のプログラムに対応した前記データ保護情報に従って前記データアドレス空間を保護し、
前記データ処理装置が、前記第２のプログラムから前記第１のプログラムに復帰する際に、前記データ保護情報記憶部に書き加えられた前記第２のプログラムに対応する前記データ保護情報を消去する、請求項８に記載のアドレス空間保護方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のプログラムを切り替えて実行するデータ処理装置におけるアドレス空間保護方法に関する。
【背景技術】
【０００２】
ＣＰＵ（Central Processing Unit）等のプログラムを実行する装置による不正なアクセスから、命令アドレス空間及びデータアドレス空間を含む論理アドレス空間を保護する技術、いわゆるアドレス空間保護技術が知られている。例えば、従来知られているアドレス空間保護技術は、ＣＰＵから命令フェッチアクセス、データライトアクセス又はデータリードアクセスが行なわれる際に、アドレス空間の中でアクセスが許可される部分アドレス空間を規定する保護情報とアクセス先アドレスとを比較照合することにより、アクセスの妥当性を検証する。また、ＣＰＵで実行されるプログラムに応じて、具体的には、プログラムに予め与えられた特権レベルに応じて、アドレス空間の保護内容を変更することも知られている。
【０００３】
例えば、特許文献１には、単一のＣＰＵ上で複数のオペレーティングシステムプログラム（特許文献１ではスーパーバイザプログラム）が実行されるマルチＯＳシステムにおいて、複数のＯＳに対して異なる特権レベルを与え、特権レベルの違いに応じてアクセス可能なアドレス空間を制限する技術が開示されている。具体的には、特権レベルが高いＯＳのみがアクセス可能な部分アドレス空間を規定するアドレス情報と、当該部分アドレス空間へのアクセスが許可される特権レベルとを関連付け、これらを保護情報としてレジスタ等の所定の記憶回路に記憶しておく。そして、当該保護情報により規定される部分アドレス空間へのアクセスを受け付けたメモリ保護回路は、アクセス元ＯＳの特権レベルが当該保護情報で規定された特権レベルと一致する場合にのみアクセスを許可する。
【０００４】
また、特許文献２は、同じ特権レベルにあるプログラムに対して異なるアドレス空間保護の保護タイプを適用するために、プログラムと２つ以上の保護タイプとの間の関係を記述した詳細な保護情報に基づきアドレス空間保護を行なう技術を開示している。例えば、同じ特権レベルにある２つのアプリケーションプログラムＡ及びＢに関して、プログラムＡに関する部分アドレス空間からプログラムＢに関する部分アドレス空間へのアクセスを許可し、プログラムＢに関する部分アドレス空間からプログラムＡに関する部分アドレス空間へのアクセスを禁止する内容の詳細化された保護情報をレジスタ等に保持しておく。これにより、例えば、同じ特権レベルのプログラムでありながら、プログラムＡからプログラムＢの呼び出しを許可し、プログラムＢからプログラムＡの呼び出しを禁止することが、特権レベルの切り替えを行なうことなく可能となる。
【０００５】
また、非特許文献１は、複数のメモリ保護レジスタセットを有するデータ処理装置、具体的にはマイクロコントローラを開示している。ここで、メモリ保護レジスタセットとは、複数の（具体的には４つの）メモリ保護レジスタの集合であり、各々のメモリ保護レジスタは、アクセスが許可される１つの部分アドレス空間を規定する。より具体的に述べると、非特許文献１に開示されたマイクロコントローラは、上述した４つのメモリ保護レジスタから構成されるメモリ保護レジスタセットを合計８セット有している。このうちの４セットは、命令メモリを保護するために、命令アドレス空間内のアクセス許可される最大４つの部分アドレス空間の指定に使用される。また、残りの４セットは、データメモリを保護するために、データアドレス空間内のアクセス許可される最大４つの部分アドレス空間の指定に使用される。
【０００６】
そして、非特許文献１に開示されたマイクロコントローラでは、命令保護レジスタセットとデータ保護レジスタセットとが、実行プログラムの切り替えに応じて一緒に切り替えられる。具体的には、各々が１つの命令保護レジスタセットと１つのデータ保護レジスタセットを含む合計４組のレジスタセットのいずれか１組が、ＰＳＷ（Program Status Word）レジスタ内の２ビットのＰＲＳ（Protection Register Set）フィールドによって、アクティブなレジスタセットとして選択される。
【特許文献１】特開平３−１４１４４６号公報
【特許文献２】特開２００６−２１６０１２号公報
【非特許文献１】"TriCore 1 32-Bit Unified Processor Core Volume 1: Core Architecture"、V1.3.6、2005年10月発行、Infineon Technologies、Chapter8: Memory Protection System
【発明の開示】
【発明が解決しようとする課題】
【０００７】
上述した非特許文献１に開示されたマイクロコントローラは、例えば、アプリケーションプログラムから特権レベルの異なるシステムサービスプログラム（以下、Ｓ／Ｓプログラム）を呼び出した場合などの実行プログラムの切り替え時に、ＰＲＳフィールドの書き換えによって、アプリケーションプログラム用の１組の保護レジスタセットに代えて、Ｓ／Ｓプログラム用の他の１組の保護レジスタセットを選択して、アドレス空間保護に使用する。
【０００８】
つまり、非特許文献１に開示されたマイクロコンピュータは、プログラムの特権レベルの違いに応じて異なる保護レジスタセットの組合せを使用することで、信頼性の高い高度なアドレス空間保護を実現している。このような構成は、実行プログラムの切り替え時にアドレス空間保護の設定内容の更新に要する処理量を小さくできる利点もある。
【０００９】
しかしながら、マイクロコントローラ等のデータ処理装置に対しては、低コスト化に対する強い要望も存在する。アドレス空間保護のための保護情報を記憶する多数の保護レジスタセットが配置されている非特許文献１に開示されたマイクロコンピュータの構成は、低コスト化の要望に応えるためには不十分である場合がある。
【００１０】
実行プログラムの切り替え時にアドレス空間保護の設定内容の更新に要する処理量を小さくしたいという要望と、アドレス空間保護のための保護情報を記憶するレジスタ等の記憶素子の規模を削減して低コスト化を図りたいという要望は、互いに相反する要望である。しかしながら、これらの相反する２つの要望に適応したデータ処理装置こそ、市場の要請に応え得るものである。
【００１１】
なお、上述した特許文献１及び２も、実行プログラムの切り替えに伴うアドレス空間保護の設定内容の更新に要する処理量の削減と、アドレス空間保護情報を記憶する記憶回路の回路規模の削減という２つの相反する要望に応え得るものではない。
【課題を解決するための手段】
【００１２】
本発明の第１の態様にかかるデータ処理装置は、命令実行部、命令保護情報記憶部、データ保護情報記憶部、及び保護違反判定部を備える。前記命令保護情報記憶部は、前記命令実行部で実行される命令を格納する命令アドレス空間の中から前記命令実行部によるアクセスが可能な複数の部分アドレス空間を規定するための命令保護情報を記憶する。前記データ保護情報記憶部は、前記命令実行部における演算に使用されるオペランドを格納するデータアドレス空間の中から前記命令実行部によるアクセスが可能な複数の部分アドレス空間を規定するためのデータ保護情報を記憶する。また、前記保護違反判定部は、前記命令保護情報記憶部及び前記データ保護情報記憶部の設定内容に基づいて、前記命令実行部によるアクセス可否を判定する。さらに、本態様にかかるデータ処理装置は、前記命令保護情報記憶部を用いた前記命令アドレス空間の保護を、前記データ保護情報記憶部を用いた前記データアドレス空間の保護とは独立に選択的に無効化可能である。
【００１３】
上述したように、本発明の第１の態様にかかるデータ処理装置は、前記命令保護情報記憶部を用いた前記命令アドレス空間の保護の無効化を、前記データ保護情報記憶部を用いた前記データアドレス空間の保護とは独立に無効化可能である。すなわち、前記命令実行部において実行されるプログラムに応じて、前記命令アドレス空間の保護のみを選択的に無効化することができる。
【００１４】
一般的には、特権レベルの異なる２つのプログラム（例えばアプリケーションプログラムとＳ／Ｓプログラム）に関するアドレス空間の保護を共通の命令保護記憶部及びデータ保護記憶部を用いて行なう場合、プログラムの切り替えに応じて、命令保護記憶部及びデータ保護記憶部の記憶内容を共に更新する必要がある。しかしながら、例えば、十分にデバッグされた信頼性の高いＳ／Ｓプログラムを実行する場合には、データアドレス空間の保護は必要であるものの、不正な命令フェッチアクセスから命令アドレス空間を保護することは必ずしも必要でないことが想定される。上述した本発明の第１の態様にかかるデータ処理装置は、このような信頼性の高いプログラムに切り替える場合に、命令メモリ空間の保護を選択的に無効化することで、命令保護記憶部の書き換えに要する処理量を削減することができる。
【発明の効果】
【００１５】
本発明により、実行プログラムの切り替えに伴うアドレス空間保護の設定内容の更新に要する処理量の削減と、アドレス空間保護情報を記憶する記憶回路の回路規模の削減という２つの相反する要望に適応するデータ処理装置を提供できる。
【発明を実施するための最良の形態】
【００１６】
以下では、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。各図面において、同一要素には同一の符号が付されており、説明の明確化のため、必要に応じて重複説明は省略される。
【００１７】
＜発明の実施の形態１＞
本実施の形態にかかるデータ処理装置１は、アドレス空間保護機能を有する。図１は、データ処理装置１の主要な部分の構成を示すブロック図である。図１において、ＣＰＵ１０は、命令フェッチアクセスによってメモリ１６から命令を読み出し、読み出した命令をデコードし、デコードされた命令に応じた処理、例えば、算術演算及び論理演算等の演算処理、並びにメモリ１６に対するリードアクセス及びライトアクセスを実行する。
【００１８】
さらに、本実施の形態にかかるＣＰＵ１０は、オペレーティングシステムプログラム（ＯＳ）による制御の元で複数のプログラムを切り替えて実行可能である。ＰＳＷ（Program Status Word）レジスタ１００は、ＣＰＵ１０で実行されているプログラムに関する各種状態を保持するためのレジスタである。
【００１９】
保護違反判定部１１は、ＣＰＵ１０から出力されるメモリ１６に対するメモリアクセス信号を入力する。ＣＰＵ１０から供給されるメモリアクセス信号には、リード／ライト種別、アクセス先アドレス、さらにライトアクセスの場合には書き込みデータが含まれる。アクセス先アドレスは、様々な形式で指定可能である。例えば、１ワード単位でアクセス先を指定するために、アクセス先アドレスが１つのアドレスによって指定される場合がある。また、複数ワード単位でアクセス先を指定するために、ベースアドレス及び転送を要求するデータサイズの組合せ、又は転送を要求するデータが配置された場所の下限アドレス及び上限アドレスの組合せ等によって指定される場合がある。
【００２０】
保護違反判定部１１は、後述する命令保護情報記憶部１２に格納された命令保護情報又はデータ保護情報記憶部１３に格納されたデータ保護情報と、ＣＰＵ１０がアクセスを要求するアクセス先アドレスとを照合することによって、メモリ１６に対するアクセスを許可するか否かを決定する。
【００２１】
具体的に述べると、ＣＰＵ１０のアクセス種別が命令フェッチアクセスである場合、保護違反判定部１１は、命令保護情報記憶部１２に格納された命令保護情報によって規定される部分アドレス空間（以下、アクセス許可空間と呼ぶ）にアクセス先アドレスが含まれることを条件に、ＣＰＵ１０のメモリアクセスを許可すればよい。一方、ＣＰＵ１０のアクセス先アドレスがアクセス許可空間に含まれない場合、保護違反判定部１１は、メモリアクセスを禁止すればよい。このとき、保護違反判定部１１は、不正なメモリアクセスの発生を示す違反検出信号をＣＰＵ１０に対して出力してもよい。また、ＣＰＵ１０のアクセス種別がデータリードアクセス又はデータライトアクセスである場合、保護違反判定部１１は、データ保護情報記憶部１３に格納されたデータ保護情報によって規定されるアクセス許可空間にアクセス先アドレスが含まれることを条件に、ＣＰＵ１０のメモリアクセスを許可すればよい。
【００２２】
命令保護情報記憶部１２に格納される命令保護情報及びデータ保護情報記憶部１３に格納されるデータ保護情報は、ＣＰＵ１０で実行されているプログラムに応じて設定され、ＣＰＵ１０で実行されるプログラムの切り替えに応じて、切り替え先のプログラムに対応した設定内容となるよう更新される。命令保護情報記憶部１２及びデータ保護情報記憶部１３の書き換えは、例えば、ＣＰＵ１０で実行されるプログラムの切り替えの際に起床される特権レベルのＯＳによって行なわれる。
【００２３】
なお、アクセス先アドレスと同様に、命令保護情報及びデータ保護情報による部分アドレス空間の指定も様々な形式により行うことができる。例えば、メモリ保護情報における部分アドレス空間の指定は、部分アドレス空間の下限アドレス及び上限アドレスの組合せにより行なわれてもよいし、部分アドレス空間の先頭アドレス（下限アドレス又は上限アドレス）と領域サイズの組合せにより行なわれてもよい。また、メモリ領域の先頭アドレスとマスクされる下位ビット数を指定することによって、先頭アドレスから２のべき乗分の部分アドレス空間を指定する方法でもよい。つまり、間保護の対象となる部分アドレス空の指定方法は特に限定されない。
【００２４】
メモリコントローラ１４は、保護違反判定部１１によって許可されたメモリアクセス信号を入力し、メモリアクセスによって指定されたアクセス先アドレスによってメモリ１６にアクセスする。メモリコントローラ１４は、命令フェッチアクセス又はデータリードアクセスであればメモリ１６から読み出した命令又はデータをＣＰＵ１０に転送し、データライトアクセスであればメモリ１６に対するデータ書込みを行う。
【００２５】
メモリ１６は、メモリバス１５を介してメモリコントローラ１４と接続されている。メモリ１６は、ＣＰＵ１０に読み出されて実行されるＯＳ及びアプリケーションプログラムを格納するための命令コード格納領域、並びにＯＳ及びアプリケーションプログラムによって使用されるデータを格納するためのデータ格納領域として使用される。つまり、メモリ１６は、ＲＡＭ、ＲＯＭ、フラッシュメモリ等の組合せである。また、メモリバス１５は、アドレスバス及びデータバスの総称である。
【００２６】
さらに、本実施の形態にかかるデータ処理装置１は、ＣＰＵ１０で実行されるプログラムに応じて、命令保護情報記憶部１２を用いた命令アドレス空間の保護の有効化と、データ保護情報記憶部１３を用いたデータアドレス空間の保護の有効化とを各々独立に設定可能である。当該機能を実現するために、データ処理装置１は、命令保護制御ビット１０１及びデータ保護制御ビット１０２をＰＳＷレジスタ１００内に配置している。
【００２７】
命令保護制御ビット１０１は、ＣＰＵ１０の命令フェッチアクセスに対する命令アドレス空間の保護の有効・無効を定める。例えば、命令保護制御ビット１０１を１ビット情報とし、保護無効を示す値を"０"、保護有効を示す値を"１"としてもよい。保護違反判定部１１は、命令保護制御ビット１０１に保護有効を示す値がセットされている場合に、命令保護情報記憶部１２を用いたアクセス可否の判定を実行する。一方、命令保護制御ビット１０１に保護無効を示す値がセットされている場合、保護違反判定部１１は、命令保護情報記憶部１２を用いたアクセス可否の判定を実行しない。つまり、保護違反判定部１１は、命令保護制御ビット１０１が命令アドレス空間保護の無効を示す場合に、命令アドレス空間の全領域に対する命令フェッチアクセスを許可する。
【００２８】
データ保護制御ビット１０２は、ＣＰＵ１０のデータアクセス（データリードアクセス及びデータライトアクセスを含む）に対するデータアドレス空間の保護の有効・無効を定める。例えば、データ保護制御ビット１０２を１ビット情報とし、保護無効を示す値を"０"、保護有効を示す値を"１"としてもよい。保護違反判定部１１は、データ保護制御ビット１０２に保護有効を示す値がセットされている場合に、データ保護情報記憶部１３を用いたアクセス可否の判定を実行する。一方、データ保護制御ビット１０２に保護無効を示す値がセットされている場合、保護違反判定部１１は、データ保護情報記憶部１３を用いたアクセス可否の判定を実行しない。つまり、保護違反判定部１１は、データ保護制御ビット１０２がデータアドレス空間の保護無効を示す場合に、データアドレス空間の全領域に対するデータアクセスを許可する。
【００２９】
なお、命令保護制御ビット１０１及びデータ保護制御ビット１０２は、ＯＳの指示に基づいて、各々独立に有効又は無効を選択できる。本実施の形態では、アプリケーションプログラムの実行時に、命令保護制御ビット１０１及びデータ保護制御ビット１０２を共に有効化して命令アドレス空間及びデータアドレス空間の保護を行なう。しかしながら、アプリケーションプログラムに比べてより特権レベルの高いＯＳ、Ｓ／Ｓプログラム等の実行時には、命令保護制御ビット１０１及びデータ保護制御ビット１０２を共に無効化して命令アドレス空間及びデータアドレス空間の保護を共に行なわないか、命令保護制御ビット１０１のみを選択的に無効化してデータアドレス空間の保護のみを実行する。アプリケーションプログラムによるＳ／Ｓプログラムの呼び出しに伴うアドレス空間保護レベルの変更手順、及びＳ／Ｓプログラムからアプリケーションプログラムに復帰する際のアドレス空間保護レベルの変更手順の具体例については後述する。
【００３０】
なお、命令保護制御ビット１０１及びデータ保護制御ビット１０２をＰＳＷレジスタ１００に格納する図１の構成は、一例に過ぎないことは勿論である。つまり、命令保護制御ビット１０１及びデータ保護制御ビット１０２は、ＯＳ等の特権レベルのプログラムを実行するＣＰＵ１０によってアクセス可能な記憶回路に格納されていればよい。
【００３１】
続いて以下では、図１に示したデータ処理装置１に含まれる各要素の構成例及び動作について詳しく説明する。図２は、ＣＰＵ１０における実行プログラムの切り替えを説明するための概念図であり、アプリケーションプログラムＡからのシステムコールに応じてＳ／Ｓプログラムが実行される例を示している。ここで、Ｓ／Ｓプログラムは、アプリケーションプログラムＡから見てより上位の特権レベルで動作するプログラムの一例である。
【００３２】
ＣＰＵ１０で実行されているアプリケーションプログラムＡがＳ／Ｓプログラムの実行を要求する場合、ソフトウェア割り込みによるシステムコールが行われる（Ｓ１０１）。システムコールが行われると、アプリケーションプログラムＡの実行は中断され、実行プログラムの切り替えを担うＯＳによって、Ｓ／Ｓプログラムへの分岐処理が行われる。
【００３３】
Ｓ／Ｓプログラムに分岐する際の処理手順の具体例を図３のフローチャートに従って説明する。ステップＳ１１では、システムコールによるソフトウェア割り込みに応じて、命令保護制御ビット１０１及びデータ保護制御ビット１０２が無効に設定される。
【００３４】
ステップＳ１２では、実行プログラムの切り替えを担うＯＳが、呼び出し元のアプリケーションプログラムＡのデータ領域に加えて、Ｓ／Ｓプログラムのデータ領域をデータ保護情報記憶部１３に追加設定する。ここで、アプリケーションプログラムＡのデータ領域とは、アプリケーションプログラムＡで使用されるオペランド及びアプリケーションプログラムＡの実行結果が格納される記憶領域であり、データアドレス空間の中でアプリケーションプログラムＡのアクセスが許可されるべき部分アドレス空間を意味する。同様に、Ｓ／ＳプログラムＡのデータ領域とは、アプリケーションプログラムＡで使用されるオペランド及びアプリケーションプログラムＡの実行結果が格納される記憶領域であり、データアドレス空間の中でＳ／ＳプログラムＡのアクセスが許可されるべき部分アドレス空間を意味する。
【００３５】
ステップＳ１３では、ＯＳがデータ保護制御ビット１０２を有効化して、データアドレス空間の保護を有効化する。一方、命令保護制御ビット１０１は無効化したままとする。また、ＯＳは、命令保護情報記憶部１２の更新も行わず、命令保護情報記憶部１２は、アプリケーションプログラムＡの命令コード領域がアクセス許可空間として設定された状態を維持する。
【００３６】
最後に、ステップＳ１４では、プログラムカウンタ（不図示）の更新を行なってＳ／Ｓプログラムへ分岐し、Ｓ／Ｓプログラムの実行が開始される
【００３７】
図２に戻り説明を続ける。上述したＳ／Ｓプログラムへの分岐処理が行われると、Ｓ／Ｓプログラムが実行される（Ｓ１０２）。Ｓ／Ｓプログラムの実行が正常に終了すると、ＯＳは、Ｓ／Ｓプログラムの呼び出し元であるアプリケーションプログラムＡへの復帰処理を実行する（Ｓ１０３）。
【００３８】
Ｓ／Ｓプログラムに復帰する際の処理手順の具体例を図４のフローチャートに従って説明する。ステップＳ２１では、データ保護情報記憶部１３に追加設定されているＳ／Ｓプログラムのデータ領域に関する設定内容を消去する。ステップＳ２２では、ＯＳが、退避されていたアプリケーションプログラムＡの実行中断時のＰＳＷレジスタ１００の状態を復旧する。これにより、既に有効化されているデータ保護制御ビット１０２に加えて、無効化されていた命令保護制御ビット１０１も有効化され、命令アドレス空間及びデータアドレス空間の保護が共に実行される状態となる。
【００３９】
なお、上述したように、Ｓ／Ｓサービスの実行中は命令アドレス空間の保護が行なわれず、命令保護情報記憶部１２は、アプリケーションプログラムＡの命令コード領域がアクセス許可空間として設定された状態を維持している。このため、アプリケーションプログラムＡへの復帰時に、命令保護情報記憶部１２を設定し直す必要はない。
【００４０】
最後に、ステップＳ２３では、プログラムカウンタ（不図示）が更新され、実行中断時点からアプリケーションプログラムＡが再開される。
【００４１】
図５（ａ）及び（ｂ）は、メモリ１６のメモリマップの一例を示している。図５（ａ）は、命令アドレス空間を示すメモリマップである。図５（ａ）の例では、０００００〜０４ＦＦＦ番地の領域が、Ｓ／Ｓプログラムの命令コード領域、つまりＳ／Ｓプログラムが格納された領域である。また、０６０００〜０６ＦＦＦ番地の領域が、アプリケーションプログラムＡの命令コード領域である。一方、図５（ｂ）は、データアドレス空間を示すメモリマップである。図５（ｂ）の例では、１００００〜１１ＦＦＦ番地の領域がＳ／Ｓプログラムのデータ領域とされ、１４０００〜１４４ＦＦ番地の領域が、アプリケーションプログラムのデータ領域とされている。
【００４２】
図６（ａ）及び（ｂ）並びに図７（ａ）及び（ｂ）は、命令保護情報記憶部１２及びデータ保護情報記憶部１３の具体例な構成例を示す図である。なお、図６（ａ）及び（ｂ）は、アプリケーションプログラムＡ実行時の命令保護情報記憶部１２及びデータ保護情報記憶部１３の設定内容を示している。
【００４３】
図６（ａ）の例では、命令保護情報記憶部１２はｎ個の命令保護レジスタ１２１〜１２ｎにより構成されており、各命令保護レジスタは１つのアクセス許可される部分アドレス空間（以下、アクセス許可空間）を指定する。同様に、図６（ｂ）の例では、データ保護情報記憶部１３はｎ個のデータ保護レジスタ１３１〜１３ｎにより構成されており、各データ保護レジスタは、１つのアクセス許可空間を指定する。
【００４４】
例えば、図６（ａ）に示す命令保護レジスタ１２１は、図５（ａ）に示したアプリケーションプログラムＡの命令コード領域に対応する設定を保持しており、下限アドレス指定部１２１Ｌに０６０００番地が指定され、上限アドレス指定部１２１Ｕに０６ＦＦＦ番地が指定されている。また、図６（ｂ）に示すデータ保護レジスタ１３１は、図５（ｂ）に示したアプリケーションプログラムＡのデータ領域に対応する設定を保持しており、下限アドレス指定部１３１Ｌに１４０００番地が指定され、上限アドレス指定部１３１Ｕに１４４ＦＦ番地が指定されている。
【００４５】
また、図６（ａ）に示す命令保護情報記憶部１２の例では、ｎ個の命令保護レジスタ１２１〜１２ｎの各々に対応するｎ個の有効ビット記憶部１２１Ｖ〜１２ｎＶが設けられている。例えば、命令保護レジスタ１２１に対応する有効ビット記憶部１２１Ｖは、命令保護レジスタ１２１の下限アドレス指定部１２１Ｌ及び上限アドレス指定部１２１Ｕによるアクセス許可空間の指定の有効であるか否かを示す有効ビットを格納する。
【００４６】
図６（ａ）の例では、有効ビット記憶部１２１Ｖの値が"１"のとき、下限アドレス指定部１２１Ｌ及び上限アドレス指定部１２１Ｕによるアクセス許可空間の指定が有効であることを示す。一方、有効ビット記憶部１２１Ｖの値が"０"のとき、下限アドレス指定部１２１Ｌ及び上限アドレス指定部１２１Ｕによるアクセス許可空間の指定が無効であること、言い換えると、下限アドレス指定部１２１Ｌ及び上限アドレス指定部１２１Ｕに有効な部分アドレス空間が指定されていても、当該レジスタがアクセス許可空間の設定に使用されないことを示す。
【００４７】
有効ビット記憶部１２１Ｖ〜１２ｎＶは、プログラムの切り替え処理を担うＯＳの指示に基づいて設定される。なお、ＰＳＷレジスタ１００に配置された命令保護制御ビット１０１が無効化された場合は命令保護情報に基づく保護が無効化されるため、保護違反判定部１１は、有効ビット記憶部１２１Ｖ〜１２ｎＶの設定値によらず、全ての命令アドレス空間に対するアクセスを許可する。
【００４８】
図６（ｂ）に示すデータ保護情報記憶部１３の例も、図６（ａ）と同様に、ｎ個のデータ保護レジスタ１３１〜１３ｎの各々に対応するｎ個の有効ビット記憶部１３１Ｖ〜１３ｎＶが設けられている。有効ビット記憶部１３１Ｖ〜１３ｎＶの設定手順、有効ビット記憶部１３１Ｖ〜１３ｎＶの設定内容に基づくデータアドレス空間の保護の無効化については、上述した命令アドレス空間保護のための有効ビット記憶部１２１Ｖ〜１２ｎＶと同様とすればよい。
【００４９】
一方、図７（ａ）及び（ｂ）は、Ｓ／Ｓプログラム実行時の命令保護情報記憶部１２及びデータ保護情報記憶部１３の設定内容を示している。上述したように、本実施の形態にかかるデータ処理装置１は、命令アドレス空間の保護に関して、アプリケーションプログラムＡに比べて上位の特権レベルにあるＳ／Ｓプログラムの実行時に、命令アドレス空間の保護を行なわないことを特徴とする。さらに、データアドレス空間の保護に関しては、データ処理装置１は、Ｓ／Ｓプログラムの実行時に、呼び出し元のアプリケーションプログラムＡがアクセス可能なデータアドレス空間（アプリケーションプログラムＡのデータ領域）に加えて、Ｓ／Ｓプログラムのデータ領域に対するアクセスを許可することを特徴とする。
【００５０】
例えば、図７（ａ）に示す命令保護レジスタ１２１〜１２ｎの有効ビット記憶部１２１Ｖ〜１２ｎＶは、図６（ａ）に示したアプリケーションプログラムＡ実行時から変更しなくてもよい。上述したように、本実施の形態では、命令保護制御ビット１０１が無効化されたことに応じて、保護違反判定部１１が、全ての命令アドレス空間に対する命令フェッチアクセスを許可するためである。ここで、注目すべきは、命令保護レジスタ１２１の設定内容は、呼び出し元のアプリケーションプログラムＡに対応する設定値のまま保持されている点である。これにより、アプリケーションプログラムＡへの復帰時は、命令保護レジスタ１２１の設定内容を更新することなく、命令保護制御ビット１０１の有効化のみで、アプリケーションプログラムＡに対応した命令アドレス空間の保護状態に戻すことができる。
【００５１】
また、図７（ｂ）について見ると、データ保護レジスタ１３１の設定内容は、図６（ｂ）に示したアプリケーションプログラムＡに対する設定のまま維持されている。これに加えて、図７（ｂ）では、Ｓ／Ｓプログラムのデータ領域にアクセス可能とするための設定が、データ保護レジスタ１３２に書き加えられている。具体的には、図５（ｂ）に示したＳ／Ｓプログラムのデータ領域の下限アドレス１００００番地が下限アドレス指定部１３１Ｌに指定され、上限アドレス１１ＦＦＦ番地が上限アドレス指定部１３１Ｕに指定されている。
【００５２】
図６（ｂ）及び図７（ｂ）に示した構成例から明らかであるように、本実施の形態にかかるデータ処理装置１は、互いに特権レベルの異なるアプリケーションプログラムＡ及びＳ／Ｓプログラムに対して、共通の記憶資源（例えば、データ保護レジスタ１３１〜１３ｎ）を使用してデータアドレス空間の保護を行なう。これにより、データアドレス空間の保護に必要なデータ保護情報を記憶しておくための記憶資源の規模を縮小できる。また、データ処理装置１は、アプリケーションプログラムＡに対応した設定内容とされているデータ保護レジスタ１３１〜１３ｎに対して、Ｓ／Ｓプログラムに対するアクセス許可空間を追加的に設定することによって、Ｓ／Ｓプログラムに対応した適切なデータアドレス空間の保護状態に遷移できる。また、Ｓ／Ｓプログラムの実行が完了してアプリケーションプログラムＡに復帰する際には、追加的に設定されたＳ／Ｓプログラムに対応するアクセス許可空間の設定を削除することで、アプリケーションプログラムＡ対応した適切なデータアドレス空間の保護状態に戻ることができる。
【００５３】
図８（ａ）及び（ｂ）は、命令保護制御ビット１０１及びデータ保護制御ビット１０２の設定内容、並びに命令保護情報記憶部１２及びデータ保護情報記憶部１３の設定内容と、アドレス空間の保護状態との関係を示す概念図である。図８（ａ）は、アプリケーションプログラムＡ実行時を示しており、図８（ｂ）は、Ｓ／Ｓプログラム実行時を示している。
【００５４】
データ処理装置１は、アプリケーションプログラムＡ実行時に、命令アドレス空間及びデータアドレス空間の保護を共に実行する。このため、図８（ａ）において、命令保護制御ビット１０１及びデータ保護制御ビット１０２は共に有効化されており、値"１"がセットされている。また、命令保護レジスタ１２１は、図５（ａ）のメモリマップに示したアプリケーションプログラムＡの命令コード領域のアドレス情報を保持し、かつ、有効ビット記憶部１２１Ｖに有効値"１"がセットされている。なお、図５（ａ）に示した命令アドレス空間においてアプリケーションプログラムＡにアクセス許可された部分アドレス空間は１つであるから、図８（ａ）に示した命令保護レジスタ１２２を含む命令保護レジスタ１２２〜１２ｎは未使用である。このため、これら未使用のレジスタ１２２〜１２ｎの有効ビット記憶部１２２Ｖ〜１２ｎＶには無効値"０"がセットされている。
【００５５】
同様に、データ保護レジスタ１３１は、図５（ｂ）のメモリマップに示したアプリケーションプログラムＡのデータ領域のアドレス情報を保持し、かつ、有効ビット記憶部１３１Ｖに有効値"１"がセットされている。また、図８（ａ）に示したデータ保護レジスタ１３２を含むデータ保護レジスタ１３２〜１３ｎは未使用であるため、これらの有効ビット記憶部１３２Ｖ〜１３ｎＶには無効値"０"がセットされている。
【００５６】
命令保護レジスタ１２１〜１２ｎ及びデータ保護レジスタ１３１〜１３ｎのこのような設定内容に基づいて、保護違反判定部１１がアクセス可否を判定することにより、アプリケーションプログラムＡの命令コード領域及びデータ領域へのアクセスが許可され、Ｓ／Ｓプログラムの命令コード領域及びデータ領域へのアクセスが禁止される。
【００５７】
一方、データ処理装置１は、Ｓ／Ｓプログラムの実行時に、命令アドレス空間の保護を選択的に無効化し、データアドレス空間の保護のみを実行する。このため図８（ｂ）において、命令保護制御ビット１０１は無効化され、値"０"がセットされている。これにより、Ｓ／Ｓプログラムの実行時は、命令アドレス空間の保護が行なわれず、全ての命令アドレス領域にアクセス可能な状態となる。また、このとき、アプリケーションプログラムＡの命令コード領域に対応する命令保護レジスタ１２１の設定内容は維持される。
【００５８】
また、データ処理装置１は、Ｓ／Ｓプログラムの実行時にデータアドレス空間の保護を行なうために、アプリケーションプログラムＡのデータ領域に関する設定を維持したまま、Ｓ／Ｓプログラムのデータ領域にアクセス可能とするための設定を追加する。図８（ｂ）では、アプリケーションプログラムＡに関する設定内容をデータ保護レジスタ１３１に維持したまま、データ保護レジスタ１３２にＳ／Ｓプログラムのデータ領域の指定を追加し、有効ビット記憶部１３２Ｖが有効値"１"に書き換えられる。このような設定により、Ｓ／Ｓプログラムの実行時には、アプリケーションプログラムＡ及びＳ／Ｓプログラムのデータ領域へのＣＰＵ１０のアクセスが許可され、その他のデータアドレス空間に対するアクセスが禁止される。
【００５９】
上述したように、本実施の形態にかかるデータ処理装置１は、互いに特権レベルの異なるアプリケーションプログラムＡ及びＳ／Ｓプログラムのアドレス空間保護を、共通の記憶資源（例えば命令保護レジスタ１２１〜１２ｎ及びデータ保護レジスタ１３１〜１３ｎ）を用いて行なう。
【００６０】
さらに、データ処理装置１は、ＣＰＵ１０の実行プログラムをアプリケーションプログラムＡからＳ／Ｓプログラムに切り替える際に、命令保護制御ビット１０１の操作によって、命令アドレス空間の保護を選択的に無効化する。これにより、アプリケーションプログラムＡに対応して設定されている命令保護情報記憶部１２の設定内容を更新することなく、Ｓ／Ｓプログラムの命令コード領域へのアクセスが可能となる。つまり、命令保護情報記憶部１２の設定内容をアプリケーションプログラムＡに対応した設定内容に維持したままＳ／Ｓプログラムを実行できる。これにより、Ｓ／ＳプログラムからアプリケーションプログラムＡに復帰する際には、命令保護制御ビット１０１の有効化のみにより、命令保護情報記憶部１２のアドレス設定を更新することなく、アプリケーションプログラムＡに対応した命令アドレス空間の保護を開始することができる。
【００６１】
さらに、データ処理装置１は、データ保護情報記憶部１３の設定内容をＳ／Ｓプログラムに対応したものに更新する際に、呼び出し元のアプリケーションプログラムＡに対応する設定を保持している記憶回路、例えばデータ保護レジスタ１３１の設定内容をそのまま利用し、これに加えて、追加的に必要なＳ／Ｓプログラムのデータ領域に対応する設定内容を別の記憶回路、例えばデータ保護レジスタ１３２に追加設定することとした。これにより、Ｓ／ＳプログラムからアプリケーションプログラムＡに復帰する際には、追加設定されたＳ／Ｓプログラムのデータ領域に対応する設定内容を消去することによって、少ない処理量で、アプリケーションプログラムＡに対応したデータアドレス空間の保護を開始することができる。
【００６２】
すなわち、データ処理装置１によれば、（１）命令保護制御ビット１０１の無効化、（２）データ保護制御ビット１０２の有効化、（３）データ保護情報記憶部１３へのＳ／Ｓプログラムのデータ領域に対応する設定の追加によって、Ｓ／Ｓプログラムに対応したアドレス空間保護を開始できる。また、（１）命令保護制御ビット１０１の有効化、（２）Ｓ／Ｓプログラムのデータ領域に対応する設定のデータ保護情報記憶部１３からの消去によって、少ない処理量で、アプリケーションプログラムＡに対応したアドレス空間保護に戻ることができる。
【００６３】
なお、命令保護情報記憶部１２を用いた命令アドレス空間の保護が選択的に無効化されていることを保護違反判定部１１に対して伝達するためには、例えば、命令保護制御ビット１０１の内容に応じて更新され、保護違反判定部１１がアクセス可能なレジスタ等の記憶回路を配置すればよい。
【００６４】
また、図６乃至８に示したように、命令保護レジスタ１２１〜１２ｎの各々に１つずつの有効ビット記憶部を設ける構成は、各々の命令保護レジスタの設定内容が有効なものであることを保護違反判定部１１に対して伝達するための具体的な構成の一例に過ぎない。例えば、上限アドレス及び下限アドレスとして無効値（例えば、ＦＦＦＦＦ）を書き込むことによって、命令保護レジスタ１２１〜１２ｎの各々の設定内容の有効性を保護違反判定部１１に伝達してもよい。データ保護レジスタ１３１〜１３ｎの構成に関しても同様である。
【００６５】
＜その他の実施の形態＞
命令アドレス空間の保護の有効化・無効化と、データアドレス空間の保護の有効化・無効化を共に独立に設定できるデータ処理装置１の構成は一例である。例えば、データアドレス空間保護の無効化は行なえず、命令アドレス空間の保護のみを選択的に無効化できるよう構成してもよい。この場合、例えば、データ保護制御ビット１０２を配置せず、命令保護制御ビット１０１のみを配置すればよい。
【００６６】
また、上述した発明の実施の形態１の図１において、メモリ１６は、データ処理装置１の外部に設けられていても良い。また、保護違反判定部１１にメモリコントローラ１４を介してメモリ１６が接続された構成は一例である。例えば、ＤＭＡ転送を行う場合には、保護違反判定部１１とメモリ１６は、ＤＭＡ転送を制御するＤＭＡコントローラを介して接続されてもよい。
【００６７】
また、上述したデータ処理装置１は、例えば、１チップ化されたマイクロコンピュータとして構成されてもよいし、複数チップからなるコンピュータシステムとして構成されてもよい。
【００６８】
さらに、本発明は上述した実施の形態のみに限定されるものではなく、既に述べた本発明の要旨を逸脱しない範囲において種々の変更が可能であることは勿論である。
【図面の簡単な説明】
【００６９】
【図１】本発明の実施の形態１にかかるデータ処理装置の構成を示すブロック図である。
【図２】本発明の実施の形態１にかかるデータ処理装置におけるプログラム呼び出しの動作を説明するための概念図である。
【図３】本発明の実施の形態１にかかるデータ処理装置におけるＳ／Ｓプログラムの呼び出し手順を示すフローチャートである。
【図４】本発明の実施の形態１にかかるデータ処理装置におけるＳ／Ｓプログラムから呼び出し元のアプリケーションプログラムへの復帰手順を示すフローチャートである。
【図５】本発明の実施の形態１にかかるデータ処理装置におけるアドレス空間保護を説明するためのメモリマップ図である。
【図６】本発明の実施の形態１にかかるデータ処理装置が有する命令保護情報記憶部及びデータ保護情報記憶部の構成例を示す図である。
【図７】本発明の実施の形態１にかかるデータ処理装置が有する命令保護情報記憶部及びデータ保護情報記憶部の構成例を示す図である。
【図８】本発明の実施の形態１にかかる情報処理装置におけるメモリ保護設定を説明するための概念図である。
【符号の説明】
【００７０】
１  データ処理装置
１０  ＣＰＵ（Central Processing Unit）
１１  保護違反判定部
１２  命令保護情報記憶部
１３  データ保護情報記憶部
１４  メモリコントローラ
１５  メモリバス
１６  メモリ
１００  ＰＳＷ（Program Status Word）レジスタ
１０１  命令保護制御ビット
１０２  データ保護制御ビット
１２１〜１２ｎ  命令保護レジスタ
１３１〜１３ｎ  データ保護レジスタ
【図１】
0004939387.tif 000002
【図２】
0004939387.tif 000003
【図３】
0004939387.tif 000004
【図４】
0004939387.tif 000005
【図５】
0004939387.tif 000006
【図６】
0004939387.tif 000007
【図７】
0004939387.tif 000008
【図８】
0004939387.tif 000009