説明

データ処理装置及びアドレス空間保護方法

【課題】実行プログラムの切り替えに伴うアドレス空間保護情報の設定内容の更新に要する処理量の削減と、アドレス空間保護情報を記憶する記憶回路の回路規模の削減という2つの相反する要望に適応する。
【解決手段】データ処理装置1は、命令アドレス空間の中からCPU10のアクセスが可能な複数の部分アドレス空間を規定する命令保護情報を記憶する命令保護情報記憶部12と、データアドレス空間の中からCPU10のアクセスが可能な複数の部分アドレス空間を規定するデータ保護情報を記憶するデータ保護情報記憶部13と、命令保護情報記憶部12及びデータ保護情報記憶部13の設定内容に基づいて、CPU10によるアクセス可否を判定する保護違反判定部11を備える。さらに、命令保護情報記憶部12を用いた命令アドレス空間の保護は、データ保護情報記憶部13を用いた前記データアドレス空間の保護とは独立に選択的に無効化可能である。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、複数のプログラムを切り替えて実行するデータ処理装置におけるアドレス空間保護方法に関する。
【背景技術】
【0002】
CPU(Central Processing Unit)等のプログラムを実行する装置による不正なアクセスから、命令アドレス空間及びデータアドレス空間を含む論理アドレス空間を保護する技術、いわゆるアドレス空間保護技術が知られている。例えば、従来知られているアドレス空間保護技術は、CPUから命令フェッチアクセス、データライトアクセス又はデータリードアクセスが行なわれる際に、アドレス空間の中でアクセスが許可される部分アドレス空間を規定する保護情報とアクセス先アドレスとを比較照合することにより、アクセスの妥当性を検証する。また、CPUで実行されるプログラムに応じて、具体的には、プログラムに予め与えられた特権レベルに応じて、アドレス空間の保護内容を変更することも知られている。
【0003】
例えば、特許文献1には、単一のCPU上で複数のオペレーティングシステムプログラム(特許文献1ではスーパーバイザプログラム)が実行されるマルチOSシステムにおいて、複数のOSに対して異なる特権レベルを与え、特権レベルの違いに応じてアクセス可能なアドレス空間を制限する技術が開示されている。具体的には、特権レベルが高いOSのみがアクセス可能な部分アドレス空間を規定するアドレス情報と、当該部分アドレス空間へのアクセスが許可される特権レベルとを関連付け、これらを保護情報としてレジスタ等の所定の記憶回路に記憶しておく。そして、当該保護情報により規定される部分アドレス空間へのアクセスを受け付けたメモリ保護回路は、アクセス元OSの特権レベルが当該保護情報で規定された特権レベルと一致する場合にのみアクセスを許可する。
【0004】
また、特許文献2は、同じ特権レベルにあるプログラムに対して異なるアドレス空間保護の保護タイプを適用するために、プログラムと2つ以上の保護タイプとの間の関係を記述した詳細な保護情報に基づきアドレス空間保護を行なう技術を開示している。例えば、同じ特権レベルにある2つのアプリケーションプログラムA及びBに関して、プログラムAに関する部分アドレス空間からプログラムBに関する部分アドレス空間へのアクセスを許可し、プログラムBに関する部分アドレス空間からプログラムAに関する部分アドレス空間へのアクセスを禁止する内容の詳細化された保護情報をレジスタ等に保持しておく。これにより、例えば、同じ特権レベルのプログラムでありながら、プログラムAからプログラムBの呼び出しを許可し、プログラムBからプログラムAの呼び出しを禁止することが、特権レベルの切り替えを行なうことなく可能となる。
【0005】
また、非特許文献1は、複数のメモリ保護レジスタセットを有するデータ処理装置、具体的にはマイクロコントローラを開示している。ここで、メモリ保護レジスタセットとは、複数の(具体的には4つの)メモリ保護レジスタの集合であり、各々のメモリ保護レジスタは、アクセスが許可される1つの部分アドレス空間を規定する。より具体的に述べると、非特許文献1に開示されたマイクロコントローラは、上述した4つのメモリ保護レジスタから構成されるメモリ保護レジスタセットを合計8セット有している。このうちの4セットは、命令メモリを保護するために、命令アドレス空間内のアクセス許可される最大4つの部分アドレス空間の指定に使用される。また、残りの4セットは、データメモリを保護するために、データアドレス空間内のアクセス許可される最大4つの部分アドレス空間の指定に使用される。
【0006】
そして、非特許文献1に開示されたマイクロコントローラでは、命令保護レジスタセットとデータ保護レジスタセットとが、実行プログラムの切り替えに応じて一緒に切り替えられる。具体的には、各々が1つの命令保護レジスタセットと1つのデータ保護レジスタセットを含む合計4組のレジスタセットのいずれか1組が、PSW(Program Status Word)レジスタ内の2ビットのPRS(Protection Register Set)フィールドによって、アクティブなレジスタセットとして選択される。
【特許文献1】特開平3−141446号公報
【特許文献2】特開2006−216012号公報
【非特許文献1】"TriCore 1 32-Bit Unified Processor Core Volume 1: Core Architecture"、V1.3.6、2005年10月発行、Infineon Technologies、Chapter8: Memory Protection System
【発明の開示】
【発明が解決しようとする課題】
【0007】
上述した非特許文献1に開示されたマイクロコントローラは、例えば、アプリケーションプログラムから特権レベルの異なるシステムサービスプログラム(以下、S/Sプログラム)を呼び出した場合などの実行プログラムの切り替え時に、PRSフィールドの書き換えによって、アプリケーションプログラム用の1組の保護レジスタセットに代えて、S/Sプログラム用の他の1組の保護レジスタセットを選択して、アドレス空間保護に使用する。
【0008】
つまり、非特許文献1に開示されたマイクロコンピュータは、プログラムの特権レベルの違いに応じて異なる保護レジスタセットの組合せを使用することで、信頼性の高い高度なアドレス空間保護を実現している。このような構成は、実行プログラムの切り替え時にアドレス空間保護の設定内容の更新に要する処理量を小さくできる利点もある。
【0009】
しかしながら、マイクロコントローラ等のデータ処理装置に対しては、低コスト化に対する強い要望も存在する。アドレス空間保護のための保護情報を記憶する多数の保護レジスタセットが配置されている非特許文献1に開示されたマイクロコンピュータの構成は、低コスト化の要望に応えるためには不十分である場合がある。
【0010】
実行プログラムの切り替え時にアドレス空間保護の設定内容の更新に要する処理量を小さくしたいという要望と、アドレス空間保護のための保護情報を記憶するレジスタ等の記憶素子の規模を削減して低コスト化を図りたいという要望は、互いに相反する要望である。しかしながら、これらの相反する2つの要望に適応したデータ処理装置こそ、市場の要請に応え得るものである。
【0011】
なお、上述した特許文献1及び2も、実行プログラムの切り替えに伴うアドレス空間保護の設定内容の更新に要する処理量の削減と、アドレス空間保護情報を記憶する記憶回路の回路規模の削減という2つの相反する要望に応え得るものではない。
【課題を解決するための手段】
【0012】
本発明の第1の態様にかかるデータ処理装置は、命令実行部、命令保護情報記憶部、データ保護情報記憶部、及び保護違反判定部を備える。前記命令保護情報記憶部は、前記命令実行部で実行される命令を格納する命令アドレス空間の中から前記命令実行部によるアクセスが可能な複数の部分アドレス空間を規定するための命令保護情報を記憶する。前記データ保護情報記憶部は、前記命令実行部における演算に使用されるオペランドを格納するデータアドレス空間の中から前記命令実行部によるアクセスが可能な複数の部分アドレス空間を規定するためのデータ保護情報を記憶する。また、前記保護違反判定部は、前記命令保護情報記憶部及び前記データ保護情報記憶部の設定内容に基づいて、前記命令実行部によるアクセス可否を判定する。さらに、本態様にかかるデータ処理装置は、前記命令保護情報記憶部を用いた前記命令アドレス空間の保護を、前記データ保護情報記憶部を用いた前記データアドレス空間の保護とは独立に選択的に無効化可能である。
【0013】
上述したように、本発明の第1の態様にかかるデータ処理装置は、前記命令保護情報記憶部を用いた前記命令アドレス空間の保護の無効化を、前記データ保護情報記憶部を用いた前記データアドレス空間の保護とは独立に無効化可能である。すなわち、前記命令実行部において実行されるプログラムに応じて、前記命令アドレス空間の保護のみを選択的に無効化することができる。
【0014】
一般的には、特権レベルの異なる2つのプログラム(例えばアプリケーションプログラムとS/Sプログラム)に関するアドレス空間の保護を共通の命令保護記憶部及びデータ保護記憶部を用いて行なう場合、プログラムの切り替えに応じて、命令保護記憶部及びデータ保護記憶部の記憶内容を共に更新する必要がある。しかしながら、例えば、十分にデバッグされた信頼性の高いS/Sプログラムを実行する場合には、データアドレス空間の保護は必要であるものの、不正な命令フェッチアクセスから命令アドレス空間を保護することは必ずしも必要でないことが想定される。上述した本発明の第1の態様にかかるデータ処理装置は、このような信頼性の高いプログラムに切り替える場合に、命令メモリ空間の保護を選択的に無効化することで、命令保護記憶部の書き換えに要する処理量を削減することができる。
【発明の効果】
【0015】
本発明により、実行プログラムの切り替えに伴うアドレス空間保護の設定内容の更新に要する処理量の削減と、アドレス空間保護情報を記憶する記憶回路の回路規模の削減という2つの相反する要望に適応するデータ処理装置を提供できる。
【発明を実施するための最良の形態】
【0016】
以下では、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。各図面において、同一要素には同一の符号が付されており、説明の明確化のため、必要に応じて重複説明は省略される。
【0017】
<発明の実施の形態1>
本実施の形態にかかるデータ処理装置1は、アドレス空間保護機能を有する。図1は、データ処理装置1の主要な部分の構成を示すブロック図である。図1において、CPU10は、命令フェッチアクセスによってメモリ16から命令を読み出し、読み出した命令をデコードし、デコードされた命令に応じた処理、例えば、算術演算及び論理演算等の演算処理、並びにメモリ16に対するリードアクセス及びライトアクセスを実行する。
【0018】
さらに、本実施の形態にかかるCPU10は、オペレーティングシステムプログラム(OS)による制御の元で複数のプログラムを切り替えて実行可能である。PSW(Program Status Word)レジスタ100は、CPU10で実行されているプログラムに関する各種状態を保持するためのレジスタである。
【0019】
保護違反判定部11は、CPU10から出力されるメモリ16に対するメモリアクセス信号を入力する。CPU10から供給されるメモリアクセス信号には、リード/ライト種別、アクセス先アドレス、さらにライトアクセスの場合には書き込みデータが含まれる。アクセス先アドレスは、様々な形式で指定可能である。例えば、1ワード単位でアクセス先を指定するために、アクセス先アドレスが1つのアドレスによって指定される場合がある。また、複数ワード単位でアクセス先を指定するために、ベースアドレス及び転送を要求するデータサイズの組合せ、又は転送を要求するデータが配置された場所の下限アドレス及び上限アドレスの組合せ等によって指定される場合がある。
【0020】
保護違反判定部11は、後述する命令保護情報記憶部12に格納された命令保護情報又はデータ保護情報記憶部13に格納されたデータ保護情報と、CPU10がアクセスを要求するアクセス先アドレスとを照合することによって、メモリ16に対するアクセスを許可するか否かを決定する。
【0021】
具体的に述べると、CPU10のアクセス種別が命令フェッチアクセスである場合、保護違反判定部11は、命令保護情報記憶部12に格納された命令保護情報によって規定される部分アドレス空間(以下、アクセス許可空間と呼ぶ)にアクセス先アドレスが含まれることを条件に、CPU10のメモリアクセスを許可すればよい。一方、CPU10のアクセス先アドレスがアクセス許可空間に含まれない場合、保護違反判定部11は、メモリアクセスを禁止すればよい。このとき、保護違反判定部11は、不正なメモリアクセスの発生を示す違反検出信号をCPU10に対して出力してもよい。また、CPU10のアクセス種別がデータリードアクセス又はデータライトアクセスである場合、保護違反判定部11は、データ保護情報記憶部13に格納されたデータ保護情報によって規定されるアクセス許可空間にアクセス先アドレスが含まれることを条件に、CPU10のメモリアクセスを許可すればよい。
【0022】
命令保護情報記憶部12に格納される命令保護情報及びデータ保護情報記憶部13に格納されるデータ保護情報は、CPU10で実行されているプログラムに応じて設定され、CPU10で実行されるプログラムの切り替えに応じて、切り替え先のプログラムに対応した設定内容となるよう更新される。命令保護情報記憶部12及びデータ保護情報記憶部13の書き換えは、例えば、CPU10で実行されるプログラムの切り替えの際に起床される特権レベルのOSによって行なわれる。
【0023】
なお、アクセス先アドレスと同様に、命令保護情報及びデータ保護情報による部分アドレス空間の指定も様々な形式により行うことができる。例えば、メモリ保護情報における部分アドレス空間の指定は、部分アドレス空間の下限アドレス及び上限アドレスの組合せにより行なわれてもよいし、部分アドレス空間の先頭アドレス(下限アドレス又は上限アドレス)と領域サイズの組合せにより行なわれてもよい。また、メモリ領域の先頭アドレスとマスクされる下位ビット数を指定することによって、先頭アドレスから2のべき乗分の部分アドレス空間を指定する方法でもよい。つまり、間保護の対象となる部分アドレス空の指定方法は特に限定されない。
【0024】
メモリコントローラ14は、保護違反判定部11によって許可されたメモリアクセス信号を入力し、メモリアクセスによって指定されたアクセス先アドレスによってメモリ16にアクセスする。メモリコントローラ14は、命令フェッチアクセス又はデータリードアクセスであればメモリ16から読み出した命令又はデータをCPU10に転送し、データライトアクセスであればメモリ16に対するデータ書込みを行う。
【0025】
メモリ16は、メモリバス15を介してメモリコントローラ14と接続されている。メモリ16は、CPU10に読み出されて実行されるOS及びアプリケーションプログラムを格納するための命令コード格納領域、並びにOS及びアプリケーションプログラムによって使用されるデータを格納するためのデータ格納領域として使用される。つまり、メモリ16は、RAM、ROM、フラッシュメモリ等の組合せである。また、メモリバス15は、アドレスバス及びデータバスの総称である。
【0026】
さらに、本実施の形態にかかるデータ処理装置1は、CPU10で実行されるプログラムに応じて、命令保護情報記憶部12を用いた命令アドレス空間の保護の有効化と、データ保護情報記憶部13を用いたデータアドレス空間の保護の有効化とを各々独立に設定可能である。当該機能を実現するために、データ処理装置1は、命令保護制御ビット101及びデータ保護制御ビット102をPSWレジスタ100内に配置している。
【0027】
命令保護制御ビット101は、CPU10の命令フェッチアクセスに対する命令アドレス空間の保護の有効・無効を定める。例えば、命令保護制御ビット101を1ビット情報とし、保護無効を示す値を"0"、保護有効を示す値を"1"としてもよい。保護違反判定部11は、命令保護制御ビット101に保護有効を示す値がセットされている場合に、命令保護情報記憶部12を用いたアクセス可否の判定を実行する。一方、命令保護制御ビット101に保護無効を示す値がセットされている場合、保護違反判定部11は、命令保護情報記憶部12を用いたアクセス可否の判定を実行しない。つまり、保護違反判定部11は、命令保護制御ビット101が命令アドレス空間保護の無効を示す場合に、命令アドレス空間の全領域に対する命令フェッチアクセスを許可する。
【0028】
データ保護制御ビット102は、CPU10のデータアクセス(データリードアクセス及びデータライトアクセスを含む)に対するデータアドレス空間の保護の有効・無効を定める。例えば、データ保護制御ビット102を1ビット情報とし、保護無効を示す値を"0"、保護有効を示す値を"1"としてもよい。保護違反判定部11は、データ保護制御ビット102に保護有効を示す値がセットされている場合に、データ保護情報記憶部13を用いたアクセス可否の判定を実行する。一方、データ保護制御ビット102に保護無効を示す値がセットされている場合、保護違反判定部11は、データ保護情報記憶部13を用いたアクセス可否の判定を実行しない。つまり、保護違反判定部11は、データ保護制御ビット102がデータアドレス空間の保護無効を示す場合に、データアドレス空間の全領域に対するデータアクセスを許可する。
【0029】
なお、命令保護制御ビット101及びデータ保護制御ビット102は、OSの指示に基づいて、各々独立に有効又は無効を選択できる。本実施の形態では、アプリケーションプログラムの実行時に、命令保護制御ビット101及びデータ保護制御ビット102を共に有効化して命令アドレス空間及びデータアドレス空間の保護を行なう。しかしながら、アプリケーションプログラムに比べてより特権レベルの高いOS、S/Sプログラム等の実行時には、命令保護制御ビット101及びデータ保護制御ビット102を共に無効化して命令アドレス空間及びデータアドレス空間の保護を共に行なわないか、命令保護制御ビット101のみを選択的に無効化してデータアドレス空間の保護のみを実行する。アプリケーションプログラムによるS/Sプログラムの呼び出しに伴うアドレス空間保護レベルの変更手順、及びS/Sプログラムからアプリケーションプログラムに復帰する際のアドレス空間保護レベルの変更手順の具体例については後述する。
【0030】
なお、命令保護制御ビット101及びデータ保護制御ビット102をPSWレジスタ100に格納する図1の構成は、一例に過ぎないことは勿論である。つまり、命令保護制御ビット101及びデータ保護制御ビット102は、OS等の特権レベルのプログラムを実行するCPU10によってアクセス可能な記憶回路に格納されていればよい。
【0031】
続いて以下では、図1に示したデータ処理装置1に含まれる各要素の構成例及び動作について詳しく説明する。図2は、CPU10における実行プログラムの切り替えを説明するための概念図であり、アプリケーションプログラムAからのシステムコールに応じてS/Sプログラムが実行される例を示している。ここで、S/Sプログラムは、アプリケーションプログラムAから見てより上位の特権レベルで動作するプログラムの一例である。
【0032】
CPU10で実行されているアプリケーションプログラムAがS/Sプログラムの実行を要求する場合、ソフトウェア割り込みによるシステムコールが行われる(S101)。システムコールが行われると、アプリケーションプログラムAの実行は中断され、実行プログラムの切り替えを担うOSによって、S/Sプログラムへの分岐処理が行われる。
【0033】
S/Sプログラムに分岐する際の処理手順の具体例を図3のフローチャートに従って説明する。ステップS11では、システムコールによるソフトウェア割り込みに応じて、命令保護制御ビット101及びデータ保護制御ビット102が無効に設定される。
【0034】
ステップS12では、実行プログラムの切り替えを担うOSが、呼び出し元のアプリケーションプログラムAのデータ領域に加えて、S/Sプログラムのデータ領域をデータ保護情報記憶部13に追加設定する。ここで、アプリケーションプログラムAのデータ領域とは、アプリケーションプログラムAで使用されるオペランド及びアプリケーションプログラムAの実行結果が格納される記憶領域であり、データアドレス空間の中でアプリケーションプログラムAのアクセスが許可されるべき部分アドレス空間を意味する。同様に、S/SプログラムAのデータ領域とは、アプリケーションプログラムAで使用されるオペランド及びアプリケーションプログラムAの実行結果が格納される記憶領域であり、データアドレス空間の中でS/SプログラムAのアクセスが許可されるべき部分アドレス空間を意味する。
【0035】
ステップS13では、OSがデータ保護制御ビット102を有効化して、データアドレス空間の保護を有効化する。一方、命令保護制御ビット101は無効化したままとする。また、OSは、命令保護情報記憶部12の更新も行わず、命令保護情報記憶部12は、アプリケーションプログラムAの命令コード領域がアクセス許可空間として設定された状態を維持する。
【0036】
最後に、ステップS14では、プログラムカウンタ(不図示)の更新を行なってS/Sプログラムへ分岐し、S/Sプログラムの実行が開始される
【0037】
図2に戻り説明を続ける。上述したS/Sプログラムへの分岐処理が行われると、S/Sプログラムが実行される(S102)。S/Sプログラムの実行が正常に終了すると、OSは、S/Sプログラムの呼び出し元であるアプリケーションプログラムAへの復帰処理を実行する(S103)。
【0038】
S/Sプログラムに復帰する際の処理手順の具体例を図4のフローチャートに従って説明する。ステップS21では、データ保護情報記憶部13に追加設定されているS/Sプログラムのデータ領域に関する設定内容を消去する。ステップS22では、OSが、退避されていたアプリケーションプログラムAの実行中断時のPSWレジスタ100の状態を復旧する。これにより、既に有効化されているデータ保護制御ビット102に加えて、無効化されていた命令保護制御ビット101も有効化され、命令アドレス空間及びデータアドレス空間の保護が共に実行される状態となる。
【0039】
なお、上述したように、S/Sサービスの実行中は命令アドレス空間の保護が行なわれず、命令保護情報記憶部12は、アプリケーションプログラムAの命令コード領域がアクセス許可空間として設定された状態を維持している。このため、アプリケーションプログラムAへの復帰時に、命令保護情報記憶部12を設定し直す必要はない。
【0040】
最後に、ステップS23では、プログラムカウンタ(不図示)が更新され、実行中断時点からアプリケーションプログラムAが再開される。
【0041】
図5(a)及び(b)は、メモリ16のメモリマップの一例を示している。図5(a)は、命令アドレス空間を示すメモリマップである。図5(a)の例では、00000〜04FFF番地の領域が、S/Sプログラムの命令コード領域、つまりS/Sプログラムが格納された領域である。また、06000〜06FFF番地の領域が、アプリケーションプログラムAの命令コード領域である。一方、図5(b)は、データアドレス空間を示すメモリマップである。図5(b)の例では、10000〜11FFF番地の領域がS/Sプログラムのデータ領域とされ、14000〜144FF番地の領域が、アプリケーションプログラムのデータ領域とされている。
【0042】
図6(a)及び(b)並びに図7(a)及び(b)は、命令保護情報記憶部12及びデータ保護情報記憶部13の具体例な構成例を示す図である。なお、図6(a)及び(b)は、アプリケーションプログラムA実行時の命令保護情報記憶部12及びデータ保護情報記憶部13の設定内容を示している。
【0043】
図6(a)の例では、命令保護情報記憶部12はn個の命令保護レジスタ121〜12nにより構成されており、各命令保護レジスタは1つのアクセス許可される部分アドレス空間(以下、アクセス許可空間)を指定する。同様に、図6(b)の例では、データ保護情報記憶部13はn個のデータ保護レジスタ131〜13nにより構成されており、各データ保護レジスタは、1つのアクセス許可空間を指定する。
【0044】
例えば、図6(a)に示す命令保護レジスタ121は、図5(a)に示したアプリケーションプログラムAの命令コード領域に対応する設定を保持しており、下限アドレス指定部121Lに06000番地が指定され、上限アドレス指定部121Uに06FFF番地が指定されている。また、図6(b)に示すデータ保護レジスタ131は、図5(b)に示したアプリケーションプログラムAのデータ領域に対応する設定を保持しており、下限アドレス指定部131Lに14000番地が指定され、上限アドレス指定部131Uに144FF番地が指定されている。
【0045】
また、図6(a)に示す命令保護情報記憶部12の例では、n個の命令保護レジスタ121〜12nの各々に対応するn個の有効ビット記憶部121V〜12nVが設けられている。例えば、命令保護レジスタ121に対応する有効ビット記憶部121Vは、命令保護レジスタ121の下限アドレス指定部121L及び上限アドレス指定部121Uによるアクセス許可空間の指定の有効であるか否かを示す有効ビットを格納する。
【0046】
図6(a)の例では、有効ビット記憶部121Vの値が"1"のとき、下限アドレス指定部121L及び上限アドレス指定部121Uによるアクセス許可空間の指定が有効であることを示す。一方、有効ビット記憶部121Vの値が"0"のとき、下限アドレス指定部121L及び上限アドレス指定部121Uによるアクセス許可空間の指定が無効であること、言い換えると、下限アドレス指定部121L及び上限アドレス指定部121Uに有効な部分アドレス空間が指定されていても、当該レジスタがアクセス許可空間の設定に使用されないことを示す。
【0047】
有効ビット記憶部121V〜12nVは、プログラムの切り替え処理を担うOSの指示に基づいて設定される。なお、PSWレジスタ100に配置された命令保護制御ビット101が無効化された場合は命令保護情報に基づく保護が無効化されるため、保護違反判定部11は、有効ビット記憶部121V〜12nVの設定値によらず、全ての命令アドレス空間に対するアクセスを許可する。
【0048】
図6(b)に示すデータ保護情報記憶部13の例も、図6(a)と同様に、n個のデータ保護レジスタ131〜13nの各々に対応するn個の有効ビット記憶部131V〜13nVが設けられている。有効ビット記憶部131V〜13nVの設定手順、有効ビット記憶部131V〜13nVの設定内容に基づくデータアドレス空間の保護の無効化については、上述した命令アドレス空間保護のための有効ビット記憶部121V〜12nVと同様とすればよい。
【0049】
一方、図7(a)及び(b)は、S/Sプログラム実行時の命令保護情報記憶部12及びデータ保護情報記憶部13の設定内容を示している。上述したように、本実施の形態にかかるデータ処理装置1は、命令アドレス空間の保護に関して、アプリケーションプログラムAに比べて上位の特権レベルにあるS/Sプログラムの実行時に、命令アドレス空間の保護を行なわないことを特徴とする。さらに、データアドレス空間の保護に関しては、データ処理装置1は、S/Sプログラムの実行時に、呼び出し元のアプリケーションプログラムAがアクセス可能なデータアドレス空間(アプリケーションプログラムAのデータ領域)に加えて、S/Sプログラムのデータ領域に対するアクセスを許可することを特徴とする。
【0050】
例えば、図7(a)に示す命令保護レジスタ121〜12nの有効ビット記憶部121V〜12nVは、図6(a)に示したアプリケーションプログラムA実行時から変更しなくてもよい。上述したように、本実施の形態では、命令保護制御ビット101が無効化されたことに応じて、保護違反判定部11が、全ての命令アドレス空間に対する命令フェッチアクセスを許可するためである。ここで、注目すべきは、命令保護レジスタ121の設定内容は、呼び出し元のアプリケーションプログラムAに対応する設定値のまま保持されている点である。これにより、アプリケーションプログラムAへの復帰時は、命令保護レジスタ121の設定内容を更新することなく、命令保護制御ビット101の有効化のみで、アプリケーションプログラムAに対応した命令アドレス空間の保護状態に戻すことができる。
【0051】
また、図7(b)について見ると、データ保護レジスタ131の設定内容は、図6(b)に示したアプリケーションプログラムAに対する設定のまま維持されている。これに加えて、図7(b)では、S/Sプログラムのデータ領域にアクセス可能とするための設定が、データ保護レジスタ132に書き加えられている。具体的には、図5(b)に示したS/Sプログラムのデータ領域の下限アドレス10000番地が下限アドレス指定部131Lに指定され、上限アドレス11FFF番地が上限アドレス指定部131Uに指定されている。
【0052】
図6(b)及び図7(b)に示した構成例から明らかであるように、本実施の形態にかかるデータ処理装置1は、互いに特権レベルの異なるアプリケーションプログラムA及びS/Sプログラムに対して、共通の記憶資源(例えば、データ保護レジスタ131〜13n)を使用してデータアドレス空間の保護を行なう。これにより、データアドレス空間の保護に必要なデータ保護情報を記憶しておくための記憶資源の規模を縮小できる。また、データ処理装置1は、アプリケーションプログラムAに対応した設定内容とされているデータ保護レジスタ131〜13nに対して、S/Sプログラムに対するアクセス許可空間を追加的に設定することによって、S/Sプログラムに対応した適切なデータアドレス空間の保護状態に遷移できる。また、S/Sプログラムの実行が完了してアプリケーションプログラムAに復帰する際には、追加的に設定されたS/Sプログラムに対応するアクセス許可空間の設定を削除することで、アプリケーションプログラムA対応した適切なデータアドレス空間の保護状態に戻ることができる。
【0053】
図8(a)及び(b)は、命令保護制御ビット101及びデータ保護制御ビット102の設定内容、並びに命令保護情報記憶部12及びデータ保護情報記憶部13の設定内容と、アドレス空間の保護状態との関係を示す概念図である。図8(a)は、アプリケーションプログラムA実行時を示しており、図8(b)は、S/Sプログラム実行時を示している。
【0054】
データ処理装置1は、アプリケーションプログラムA実行時に、命令アドレス空間及びデータアドレス空間の保護を共に実行する。このため、図8(a)において、命令保護制御ビット101及びデータ保護制御ビット102は共に有効化されており、値"1"がセットされている。また、命令保護レジスタ121は、図5(a)のメモリマップに示したアプリケーションプログラムAの命令コード領域のアドレス情報を保持し、かつ、有効ビット記憶部121Vに有効値"1"がセットされている。なお、図5(a)に示した命令アドレス空間においてアプリケーションプログラムAにアクセス許可された部分アドレス空間は1つであるから、図8(a)に示した命令保護レジスタ122を含む命令保護レジスタ122〜12nは未使用である。このため、これら未使用のレジスタ122〜12nの有効ビット記憶部122V〜12nVには無効値"0"がセットされている。
【0055】
同様に、データ保護レジスタ131は、図5(b)のメモリマップに示したアプリケーションプログラムAのデータ領域のアドレス情報を保持し、かつ、有効ビット記憶部131Vに有効値"1"がセットされている。また、図8(a)に示したデータ保護レジスタ132を含むデータ保護レジスタ132〜13nは未使用であるため、これらの有効ビット記憶部132V〜13nVには無効値"0"がセットされている。
【0056】
命令保護レジスタ121〜12n及びデータ保護レジスタ131〜13nのこのような設定内容に基づいて、保護違反判定部11がアクセス可否を判定することにより、アプリケーションプログラムAの命令コード領域及びデータ領域へのアクセスが許可され、S/Sプログラムの命令コード領域及びデータ領域へのアクセスが禁止される。
【0057】
一方、データ処理装置1は、S/Sプログラムの実行時に、命令アドレス空間の保護を選択的に無効化し、データアドレス空間の保護のみを実行する。このため図8(b)において、命令保護制御ビット101は無効化され、値"0"がセットされている。これにより、S/Sプログラムの実行時は、命令アドレス空間の保護が行なわれず、全ての命令アドレス領域にアクセス可能な状態となる。また、このとき、アプリケーションプログラムAの命令コード領域に対応する命令保護レジスタ121の設定内容は維持される。
【0058】
また、データ処理装置1は、S/Sプログラムの実行時にデータアドレス空間の保護を行なうために、アプリケーションプログラムAのデータ領域に関する設定を維持したまま、S/Sプログラムのデータ領域にアクセス可能とするための設定を追加する。図8(b)では、アプリケーションプログラムAに関する設定内容をデータ保護レジスタ131に維持したまま、データ保護レジスタ132にS/Sプログラムのデータ領域の指定を追加し、有効ビット記憶部132Vが有効値"1"に書き換えられる。このような設定により、S/Sプログラムの実行時には、アプリケーションプログラムA及びS/Sプログラムのデータ領域へのCPU10のアクセスが許可され、その他のデータアドレス空間に対するアクセスが禁止される。
【0059】
上述したように、本実施の形態にかかるデータ処理装置1は、互いに特権レベルの異なるアプリケーションプログラムA及びS/Sプログラムのアドレス空間保護を、共通の記憶資源(例えば命令保護レジスタ121〜12n及びデータ保護レジスタ131〜13n)を用いて行なう。
【0060】
さらに、データ処理装置1は、CPU10の実行プログラムをアプリケーションプログラムAからS/Sプログラムに切り替える際に、命令保護制御ビット101の操作によって、命令アドレス空間の保護を選択的に無効化する。これにより、アプリケーションプログラムAに対応して設定されている命令保護情報記憶部12の設定内容を更新することなく、S/Sプログラムの命令コード領域へのアクセスが可能となる。つまり、命令保護情報記憶部12の設定内容をアプリケーションプログラムAに対応した設定内容に維持したままS/Sプログラムを実行できる。これにより、S/SプログラムからアプリケーションプログラムAに復帰する際には、命令保護制御ビット101の有効化のみにより、命令保護情報記憶部12のアドレス設定を更新することなく、アプリケーションプログラムAに対応した命令アドレス空間の保護を開始することができる。
【0061】
さらに、データ処理装置1は、データ保護情報記憶部13の設定内容をS/Sプログラムに対応したものに更新する際に、呼び出し元のアプリケーションプログラムAに対応する設定を保持している記憶回路、例えばデータ保護レジスタ131の設定内容をそのまま利用し、これに加えて、追加的に必要なS/Sプログラムのデータ領域に対応する設定内容を別の記憶回路、例えばデータ保護レジスタ132に追加設定することとした。これにより、S/SプログラムからアプリケーションプログラムAに復帰する際には、追加設定されたS/Sプログラムのデータ領域に対応する設定内容を消去することによって、少ない処理量で、アプリケーションプログラムAに対応したデータアドレス空間の保護を開始することができる。
【0062】
すなわち、データ処理装置1によれば、(1)命令保護制御ビット101の無効化、(2)データ保護制御ビット102の有効化、(3)データ保護情報記憶部13へのS/Sプログラムのデータ領域に対応する設定の追加によって、S/Sプログラムに対応したアドレス空間保護を開始できる。また、(1)命令保護制御ビット101の有効化、(2)S/Sプログラムのデータ領域に対応する設定のデータ保護情報記憶部13からの消去によって、少ない処理量で、アプリケーションプログラムAに対応したアドレス空間保護に戻ることができる。
【0063】
なお、命令保護情報記憶部12を用いた命令アドレス空間の保護が選択的に無効化されていることを保護違反判定部11に対して伝達するためには、例えば、命令保護制御ビット101の内容に応じて更新され、保護違反判定部11がアクセス可能なレジスタ等の記憶回路を配置すればよい。
【0064】
また、図6乃至8に示したように、命令保護レジスタ121〜12nの各々に1つずつの有効ビット記憶部を設ける構成は、各々の命令保護レジスタの設定内容が有効なものであることを保護違反判定部11に対して伝達するための具体的な構成の一例に過ぎない。例えば、上限アドレス及び下限アドレスとして無効値(例えば、FFFFF)を書き込むことによって、命令保護レジスタ121〜12nの各々の設定内容の有効性を保護違反判定部11に伝達してもよい。データ保護レジスタ131〜13nの構成に関しても同様である。
【0065】
<その他の実施の形態>
命令アドレス空間の保護の有効化・無効化と、データアドレス空間の保護の有効化・無効化を共に独立に設定できるデータ処理装置1の構成は一例である。例えば、データアドレス空間保護の無効化は行なえず、命令アドレス空間の保護のみを選択的に無効化できるよう構成してもよい。この場合、例えば、データ保護制御ビット102を配置せず、命令保護制御ビット101のみを配置すればよい。
【0066】
また、上述した発明の実施の形態1の図1において、メモリ16は、データ処理装置1の外部に設けられていても良い。また、保護違反判定部11にメモリコントローラ14を介してメモリ16が接続された構成は一例である。例えば、DMA転送を行う場合には、保護違反判定部11とメモリ16は、DMA転送を制御するDMAコントローラを介して接続されてもよい。
【0067】
また、上述したデータ処理装置1は、例えば、1チップ化されたマイクロコンピュータとして構成されてもよいし、複数チップからなるコンピュータシステムとして構成されてもよい。
【0068】
さらに、本発明は上述した実施の形態のみに限定されるものではなく、既に述べた本発明の要旨を逸脱しない範囲において種々の変更が可能であることは勿論である。
【図面の簡単な説明】
【0069】
【図1】本発明の実施の形態1にかかるデータ処理装置の構成を示すブロック図である。
【図2】本発明の実施の形態1にかかるデータ処理装置におけるプログラム呼び出しの動作を説明するための概念図である。
【図3】本発明の実施の形態1にかかるデータ処理装置におけるS/Sプログラムの呼び出し手順を示すフローチャートである。
【図4】本発明の実施の形態1にかかるデータ処理装置におけるS/Sプログラムから呼び出し元のアプリケーションプログラムへの復帰手順を示すフローチャートである。
【図5】本発明の実施の形態1にかかるデータ処理装置におけるアドレス空間保護を説明するためのメモリマップ図である。
【図6】本発明の実施の形態1にかかるデータ処理装置が有する命令保護情報記憶部及びデータ保護情報記憶部の構成例を示す図である。
【図7】本発明の実施の形態1にかかるデータ処理装置が有する命令保護情報記憶部及びデータ保護情報記憶部の構成例を示す図である。
【図8】本発明の実施の形態1にかかる情報処理装置におけるメモリ保護設定を説明するための概念図である。
【符号の説明】
【0070】
1 データ処理装置
10 CPU(Central Processing Unit)
11 保護違反判定部
12 命令保護情報記憶部
13 データ保護情報記憶部
14 メモリコントローラ
15 メモリバス
16 メモリ
100 PSW(Program Status Word)レジスタ
101 命令保護制御ビット
102 データ保護制御ビット
121〜12n 命令保護レジスタ
131〜13n データ保護レジスタ

【特許請求の範囲】
【請求項1】
命令実行部と、
前記命令実行部で実行される命令を格納する命令アドレス空間の中から前記命令実行部によるアクセスが可能な複数の部分アドレス空間を規定するための命令保護情報を記憶する命令保護情報記憶部と、
前記命令実行部における演算に使用されるオペランドを格納するデータアドレス空間の中から前記命令実行部によるアクセスが可能な複数の部分アドレス空間を規定するためのデータ保護情報を記憶するデータ保護情報記憶部と、
前記命令保護情報記憶部及び前記データ保護情報記憶部の設定内容に基づいて、前記命令実行部によるアクセス可否を判定する保護違反判定部とを備え、
前記命令保護情報記憶部を用いた前記命令アドレス空間の保護を、前記データ保護情報記憶部を用いた前記データアドレス空間の保護とは独立に選択的に無効化可能であるデータ処理装置。
【請求項2】
前記命令実行部における実行プログラムを第1のプログラムから前記第1のプログラムとは異なる第2のプログラムに切り替える際に、前記命令保護情報記憶部を用いた前記命令アドレス空間の保護を無効化するとともに、前記命令保護情報記憶部の記憶内容を前記第1のプログラムに対応した前記命令保護情報のまま維持する手段と、
前記第2のプログラムから前記第1のプログラムに復帰する際に、前記命令アドレス空間の保護を有効化する手段と、
をさらに備える請求項1に記載のデータ処理装置。
【請求項3】
前記第1のプログラムから前記第2のプログラムに切り替える際に、前記第1のプログラムに対応した前記データ保護情報に加えて前記第2のプログラムに対応した前記データ保護情報を前記データ保護情報記憶部に格納する手段と、
前記第2のプログラムから前記第1のプログラムに復帰する際に、前記データ保護情報記憶部に書き加えられた前記第2のプログラムに対応した前記データ保護情報を消去する手段と、
をさらに備える請求項2に記載のデータ処理装置。
【請求項4】
前記命令実行部における実行プログラムを第1のプログラムから第2のプログラムに切り替える際に、前記第1のプログラムに対応した前記データ保護情報に加えて前記第2のプログラムに対応した前記データ保護情報を前記データ保護情報記憶部に格納する手段と、
前記第2のプログラムから前記第1のプログラムに復帰する際に、前記データ保護情報記憶部に書き加えられた前記第2のプログラムに対応した前記データ保護情報を消去する手段と、
をさらに備える請求項1に記載のデータ処理装置。
【請求項5】
前記命令保護情報記憶部を用いた前記命令アドレス空間の保護の有効化、及び前記データ保護情報記憶部を用いた前記データアドレス空間の保護の有効化を各々独立に指定する保護制御情報を、前記命令実行部で実行されるプログラムに応じて書き換え可能に記憶する保護制御情報記憶部をさらに備える請求項1乃至4のいずれか1項に記載のデータ処理装置。
【請求項6】
前記保護制御情報は、前記命令アドレス空間の保護の有効化を指定する命令保護制御ビット、及び前記データアドレス空間の保護の有効化を指定するデータ保護制御ビットを含む請求項5に記載のデータ処理装置。
【請求項7】
命令実行部で実行される命令を格納する命令アドレス空間及び前記命令実行部における演算に使用されるオペランドを格納するデータアドレス空間を、前記命令実行部によるアクセスから保護するためのアドレス空間保護方法であって、
前記命令実行部において第1のプログラムが実行されている間は、前記命令アドレス空間の中から前記命令実行部によるアクセスが可能な複数の部分アドレス空間を規定するための命令保護情報を記憶する命令保護情報記憶部の記憶内容と、前記データアドレス空間の中から前記命令実行部によるアクセスが可能な複数の部分アドレス空間を規定するためのデータ保護情報を記憶するデータ保護情報記憶部の記憶内容とに基づいて、前記命令実行部によるアクセスから前記命令アドレス空間及び前記データアドレス空間を保護し、
前記命令実行部における実行プログラムを前記第1のプログラムから第2のプログラムに切り替える際に、前記命令保護情報記憶部を用いた前記命令アドレス空間の保護を無効化するとともに、前記命令保護情報記憶部の記憶内容を前記第1のプログラムに対応した前記命令保護情報のまま維持し、
前記第2のプログラムが実行されている間は、前記命令アドレス空間の保護を無効化した状態で、前記データ保護情報記憶部に基づく前記データアドレス空間の保護を行い、
前記第2のプログラムから前記第1のプログラムに復帰する際に、前記命令保護情報記憶部を用いた前記命令アドレス空間の保護を再び有効化する、アドレス空間保護方法。
【請求項8】
前記第1のプログラムから前記第2のプログラムに切り替える際に、前記第1のプログラムに対応する前記データ保護情報に追加して、前記第2のプログラムに対応する前記データ保護情報を前記データ保護情報記憶部に書き加え、
前記第2のプログラムが実行されている間は、前記データ保護情報記憶部に記憶されている前記第1及び第2のプログラムに対応した前記データ保護情報に従って前記データアドレス空間を保護し、
前記第2のプログラムから前記第1のプログラムに復帰する際に、前記データ保護情報記憶部に書き加えられた前記第2のプログラムに対応する前記データ保護情報を消去する、請求項7に記載のアドレス空間保護方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate


【公開番号】特開2009−140256(P2009−140256A)
【公開日】平成21年6月25日(2009.6.25)
【国際特許分類】
【出願番号】特願2007−316301(P2007−316301)
【出願日】平成19年12月6日(2007.12.6)
【出願人】(302062931)NECエレクトロニクス株式会社 (8,021)
【Fターム(参考)】