説明

情報処理装置及びそのプログラム実行制御方法

【課題】プログラムの呼び出しに起因した実行プログラムの切り替えに際して、呼び出し先プログラムの実行の妥当性をメモリ保護又は周辺装置保護の観点から効率良く検証する。
【解決手段】情報処理装置1が有するCPU10は、第1のプログラムによる第1のアクセス先アドレス情報を含むアクセス要求を出力するとともに、第1のプログラムによる第2のプログラムの呼び出しに起因した第1のプログラムから第2のプログラムへの実行プログラムの切り替えに際して、第2のアクセス先アドレス情報を含むチェック要求を出力する。情報処理装置1が有する保護設定チェック部14は、第1のプログラムによるメモリアクセス要求の違反検出のためにメモリ保護情報記憶部110に設定されたメモリ保護情報に基づいて、第2のアクセス先アドレス情報を含むチェック要求が、第1のプログラムに対する保護設定に適合するものであるかをチェックする。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、複数のプログラムを切り替えて実行する情報処理装置におけるプログラム実行制御技術に関する。
【背景技術】
【0002】
不正なメモリアクセスからメモリを保護する技術、いわゆるメモリ保護技術が知られている。従来知られているメモリ保護技術は、CPU(Central Processing Unit)等のプログラムを実行する装置からメモリへのアクセスが行なわれる際に、CPU等から出力されるメモリアクセス要求に含まれているアクセス先アドレス情報を、プログラムによるアクセスが許可されるメモリ領域を表すメモリ保護情報と比較照合することにより、アクセス要求の妥当性を検証するものである。これにより、アクセスが許可されていないメモリ領域への不正なメモリアクセスの検出が可能となり、不正なメモリアクセスからメモリを保護することができる。また、メモリ保護と同様の技術によって、クロック、リセット装置、割り込みコントローラ等の周辺装置に対するCPU等の命令実行装置による不正なアクセスを防止する周辺装置保護も可能である(例えば特許文献1を参照)。
【0003】
例えば、特許文献2は、情報処理装置におけるメモリ保護のためのアドレス比較方式を開示している。具体的に述べると、特許文献2に開示されたアドレス比較方式は、プログラムによってアクセスされるアクセス先アドレスが、アクセスが許可された部分メモリ空間の範囲内(アクセス許可範囲内)であるか否かを、アクセス許可範囲の下限アドレス及び上限アドレスとアクセス先アドレスを比較することによって判定する。そして、アクセス先アドレスがアクセス許可範囲内にあるときのみ、当該部分メモリ空間へのアクセスが許可される。
【0004】
しかしながら、メモリアクセスや周辺装置へのアクセスが発生した時点で個々のアクセスを許可するか否かを制御する上述した保護技術は、以下に述べる問題を有する。当該問題は、あるアプリケーションプログラム1が他のアプリケーションプログラム2(サブプログラム、関数等)を呼び出す場合、例えば、あるアプリケーションプログラム1が、通信インタフェースを動作させるためのドライバプログラムを呼び出してデータ転送を依頼する場合に発生する。
【0005】
すなわち、アプリケーションプログラム1の誤動作が発生した場合、及びアプリケーションプログラム1が悪意のある有害プログラムである場合等には、セキュリティに関する情報を不正に外部に転送すること、外部からデータを受信して他のプログラム又はオペレーティングシステム(OS)が利用しているメモリ領域を不正に上書きすること等の不正な処理が実行される可能性がある。この不正なアプリケーションプログラム1が、セキュリティに関する情報が記録されたメモリ領域や他のプログラム又はOSが使用するメモリ領域に対して直接的にアクセスを試みた場合は、上述したメモリ保護技術によって不正なメモリアクセスを禁止することが期待できる。しかしながら、不正なアプリケーションプログラム1が、通信用のデバイスドライバ等の他のアプリケーションプログラム2を経由して間接的にメモリアクセスを行う場合、上述したメモリ保護技術では、実質的に十分なメモリ保護を行なうことは困難である。例えば、不正なアプリケーションプログラム1によって呼び出されるアプリケーションプログラム2が、アプリケーションプログラム1に比べて広範囲なメモリ領域へのアクセスを許可されている場合に、メモリ保護が不十分となるおそれがある。つまり、アプリケーションプログラム2が呼び出される際の引数に、アプリケーションプログラム1のアクセスが禁止されアプリケーションプログラム2のアクセスが許可されたメモリ領域の指定が含まれ、アプリケーションプログラム2がそのメモリ領域にアクセスする場合、上述したメモリ保護技術では十分なメモリ保護を行なえない可能性がある。アプリケーションプログラム2は許可されたメモリ領域に対してメモリアクセスを行なっているから、アプリケーションプログラム2による実際のメモリアクセスが発生した時点では、これを不正アクセスとして検出することが困難であるためである。
【0006】
そこで、上述したプログラム呼び出しに関するメモリ保護上の問題点に対応するため、アプリケーションプログラム2の呼び出し時に引数で指定されたアドレスが、呼び出し元のアプリケーションプログラム1にとって正当なものであるか、つまり、アプリケーションプログラム1によるアクセスが許可されたメモリ領域に関するものであるかを、アプリケーションプログラム2の実行を開始するに際して、OS又はアプリケーションプログラム2によってチェックすることが行なわれる。
【0007】
このチェックは、例えば、アプリケーションプログラム2の呼び出しにOSを介在させることにより行なわれる。具体的には、プログラム呼び出しが発生した際に、OSが、呼出し元のアプリケーションプログラム1から渡された引数に含まれるアクセス先に対するアプリケーションプログラム1のアクセス権限をチェックし、アクセス権限の正当性が確認された場合にのみアプリケーションプログラム2の実行を開始する。
【特許文献1】特表2006−523347号公報
【特許文献2】特開昭61−75446号公報
【発明の開示】
【発明が解決しようとする課題】
【0008】
プログラム呼び出しが発生した際に、OS又は呼び出し先のアプリケーションプログラム2といった命令実行装置で実行されるソフトウェアが主体となって、呼出し元のアプリケーションプログラム1から渡された引数に含まれるアクセス先に対するアプリケーションプログラム1のアクセス権限をチェックするためには、以下の手順を実行する必要がある。すなわち、OS又はアプリケーションプログラム2が、メモリ保護情報をCPU内のレジスタなどの記憶部に読み出したうえ、読み出されたメモリ保護情報の設定値と引数の内容とを比較する演算を実行する必要がある。さらに、プログラムのアクセス可能なメモリ領域は、連続した1つのメモリ領域とは限らず、むしろ分割された複数のメモリ領域についてアクセス許可がなされる場合が多い。複数のメモリ領域についてアクセス許可がなされている場合は、メモリ保護情報には、複数のメモリ領域に関する複数の設定値が含まれるため、これら複数の設定値に関して順次チェックする必要がある。このため、メモリ保護の設定数の増大に比例して、チェック処理に要する時間も増大してしまう。
【0009】
つまり、CPU等の命令実行装置で実行されるソフトウェアが主体となって、呼び出し元プログラムのアクセス権限をチェックする方法では、チェック処理に要する時間が増大するという問題がある。
【課題を解決するための手段】
【0010】
本発明の第1の態様にかかる情報処理装置は、命令実行部、保護情報記憶部、保護違反検出部、及び保護設定チェック部を有する。前記命令実行部は、第1のプログラム及び第2のプログラムを切り替えて実行可能であって、前記第1のプログラムによる第1のアクセス先アドレス情報を含むアクセス要求を出力するとともに、前記第1のプログラムによる前記第2のプログラムの呼び出しに起因した前記第1のプログラムから前記第2のプログラムへの実行プログラムの切り替えに際して、第2のアクセス先アドレス情報を含むチェック要求を出力する。前記保護情報記憶部は、前記命令実行部で実行されるプログラムによるアクセス可否を指定する保護情報を記憶する。前記保護違反検出部は、前記第1のプログラムに対応して前記保護情報記憶部に設定された前記保護情報に基づいて、前記第1のアクセス先アドレス情報を含む前記アクセス要求が違反であるか否かを検出する。そして、保護設定チェック部は、前記第1のプログラムによる前記アクセス要求の違反検出のために前記保護情報記憶部に設定された前記保護情報に基づいて、前記第2のアクセス先アドレス情報を含む前記チェック要求が、前記第1のプログラムに対する保護設定に適合するものであるかをチェックする。
【0011】
上述したように、本発明の第1の態様にかかる情報処理装置は、前記第1のプログラムによる前記第2のプログラムの呼び出しに起因した前記第1のプログラムから前記第2のプログラムへの実行プログラムの切り替えに際して、前記命令実行部が第2のアクセス先アドレス情報を含むチェック要求を出力する。さらに、このチェック要求に応じて、前記保護設定チェック部が、前記第1のプログラムによる前記アクセス要求の違反検出のために前記保護情報記憶部に設定された前記保護情報に基づいて、前記チェック要求が、前記第1のプログラムに対する保護設定に適合するものであるかをチェックするよう構成されている。これにより、呼び出し元プログラムのアクセス権限をチェックするために命令実行部に保護情報を読み出す必要がなく、第2のプログラム呼び出しの妥当性を効率よく検証できる。
【0012】
また、前記保護設定チェック部は、呼び出し元である第1のプログラムによるアクセス要求の違反検出のために前記保護情報記憶部に既に設定済みの前記保護情報をそのまま利用して、第2のアクセス先アドレス情報に関するチェックを行うことができる。つまり、第2のアクセス先アドレス情報に関するチェックに際して、新たな保護情報の読み出し処理及び書き込み処理を特に必要としないため、チェック処理を一層効率良く行なうことができる。
【発明の効果】
【0013】
本発明により、プログラムの呼び出しに起因した実行プログラムの切り替えに際して、呼び出し先プログラムの実行の妥当性をメモリ保護又は周辺装置保護の観点から効率良く検証することができる。
【発明を実施するための最良の形態】
【0014】
以下では、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。各図面において、同一要素には同一の符号が付されており、説明の明確化のため、必要に応じて重複説明は省略される。
【0015】
なお、以下に述べる発明の実施の形態では、CPU(Central Processing Unit)の用語は、命令フェッチ機能、命令デコード機能、命令実行機能を有する処理ユニットを指すものとして使用される。
【0016】
<発明の実施の形態1>
本実施の形態にかかる情報処理装置1は、メモリ保護機能を有する。図1は、情報処理装置1の主要な部分の構成を示すブロック図である。図1において、CPU10は、メモリ13から命令を読み出し、読み出した命令をデコードし、デコードされた命令に応じた処理、例えば、算術演算及び論理演算等の演算処理、並びにメモリ13に対するリードアクセス及びライトアクセスを実行する。さらに、本実施の形態にかかるCPU10は、関数呼び出し又はサブプログラム呼び出し等のプログラム呼び出しに応じて実行プログラムの切り替えを行う際に、呼び出し先プログラムの実行の妥当性をメモリ保護又は周辺装置保護の観点から検証する。このため、CPU10は、呼び出し先プログラムの実行に先立って、呼び出し先プログラムがアクセスを行なう予定のメモリ領域(以下、被チェック領域と呼ぶ)のアドレスを後述する保護設定チェック部14に出力する。
【0017】
本実施の形態における被チェック領域は、呼び出し元プログラムが呼び出し先プログラムを介して間接的にアクセスを試みるメモリ領域を含む。呼び出し元プログラムが他のプログラムを介して間接的にアクセスを行なうメモリ領域は、例えば、上述したようにプログラム呼び出しの際の引数として明示的に指定されて、実行プログラムの切り替えを制御するOSに引き渡される。また、呼び出し元プログラムが間接的にアクセスを行なうメモリ領域は、暗黙的に指定されてもよく、例えば、OSは、プログラム呼び出しに応じて、呼び出し元又は呼び出し先プログラムに応じて予め定められた記憶領域(レジスタ等)を参照して被チェック領域を決定してもよい。
【0018】
メモリ保護部11は、CPU10が生成するメモリ13に対するアクセス要求を受信する。CPU10から供給されるアクセス要求には、リード/ライト種別、アクセス先アドレス、さらにライトアクセスの場合には書き込みデータが含まれる。アクセス先アドレスは、様々な形式で指定可能である。例えば、1ワード単位でアクセス先を指定するために、アクセス先アドレスが1つのアドレスによって指定される場合がある。また、複数ワード単位でアクセス先を指定するために、ベースアドレスと転送を要求するデータサイズの組合せ、又は転送を要求するデータが配置された場所の下限アドレスと上限アドレスの組合せ等によって指定される場合がある。
【0019】
メモリ保護情報記憶部110に格納されるメモリ保護情報は、CPU10で実行されているプログラムに応じて設定され、CPU10で実行されるプログラムの切り替えに応じて、切り替え先のプログラムに応じた設定内容となるよう更新される。メモリ保護情報記憶部110の書き換えは、例えば、CPU10で実行されるプログラムの切り替えの際に起床されるシステムプログラムによって、切り替え先のプログラムに応じた設定内容に更新される。メモリ保護情報におけるアクセス許可又は禁止されるメモリ領域の設定も、アクセス先アドレスと同様に、様々な形式により行うことができる。例えば、メモリ保護情報におけるメモリ領域の設定は、メモリ領域の下限アドレス及び上限アドレスの組合せにより指定してよいし、メモリ領域の先頭アドレス(下限アドレス又は上限アドレス)と領域サイズの組合せにより指定されてもよい。また、メモリ領域の先頭アドレスとマスクされる下位ビット数を指定することによって、先頭アドレスから2のべき乗分のメモリ領域を指定する方法でもよい。つまり、メモリ保護の対象となるメモリ領域の指定方法は特に限定されない。
【0020】
メモリ保護部11に含まれるメモリ保護違反検出部111は、CPU10がアクセスを要求するアクセス先アドレスとメモリ保護情報記憶部110に設定されたメモリ保護情報とを比較することによって、アクセス要求を許可するか否かを決定する。
【0021】
アクセス制御部112は、メモリアクセス要求に含まれるアクセス先アドレスがアクセスの許可されたメモリ領域を示す場合に、メモリアクセスを許可する。一方、アクセス制御部112は、アクセス先アドレスがアクセスの禁止されたメモリ領域を示す場合に、メモリアクセスを禁止する。なお、メモリ保護違反検出部111又はアクセス制御部112は、アクセスの禁止されたメモリ領域へのアクセスを検出した場合に、不正なアクセスを検出したことを示す信号をCPU10に出力するとよい。
【0022】
セレクタ113は、メモリ保護違反検出部111に入力され、メモリ保護情報と比較されるアドレス情報を、CPU10から入力されるメモリアクセス要求に含まれるアクセス先アドレスと、後述するチェック要求に含まれる被チェック領域アドレスとの間で切り替える。本実施の形態におけるセレクタ113の動作は、後述する保護設定チェック部14により制御される。
【0023】
メモリバス12は、メモリバス12を介してメモリ保護部11と接続されている。メモリ13は、例えば、CPU10に読み出されて実行されるシステムプログラムやアプリケーションプログラムの格納領域、及びシステムプログラムやアプリケーションプログラムによって使用されるデータの格納領域として使用される。つまり、メモリ13は、RAM、ROM、フラッシュメモリ等、又はこれらの組合せである。また、メモリバス12は、アドレスバス及びデータバスの総称である。
【0024】
保護設定チェック部14は、被チェック領域アドレスを含むチェック要求をCPU10から受信し、呼び出し元プログラムに対するメモリ保護設定に適合するか否かによって、被チェック領域アドレスの妥当性をチェックし、チェック結果をCPU10に供給する。する。より具体的に述べると、保護設定チェック部14は、呼び出し元プログラムによるアクセス要求の違反検出のためにメモリ保護情報記憶部110に既に設定済みのメモリ保護情報をそのまま利用し、呼び出し元プログラムに対応するメモリ保護情報と被チェック領域アドレスとの比較を行い、被チェック領域が、呼び出し元プログラムのアクセスが許可されたメモリ領域に含まれるか否かをチェックする。さらに、図1に示す本実施の形態の構成では、被チェック領域アドレスとメモリ保護情報とを比較照合するためのハードウェアを、メモリ保護違反検出部111に含まれるアクセス先アドレスとメモリ保護情報とを比較照合するためのハードウェアと兼用させている。
【0025】
なお、上述した図1の構成が一例に過ぎないことは勿論である。例えば、上述した説明では、メモリ保護部11がメモリバス12にアクセスするものとして説明したが、メモリバス12及びメモリ13へのアクセスは、メモリコントローラ(不図示)等の他の装置を介して行なうよう構成してもよい。また、チェック要求の物理的な転送経路とアクセス要求の物理的な転送経路の少なくとも一部は共通化されてもよい。また、図1では、セレクタ113がメモリ保護部11に含まれるように記載しているが、この記載が、情報処理装置1の現実のハードウェア構成を限定するものではない。つまり、図1のセレクタ113は、メモリアクセス要求に含まれるアクセス先アドレス又はチェック要求に含まれる被チェック領域アドレスをメモリ保護違反検出部111に対して選択的に供給できるよう、メモリ保護違反検出部111の前段に配置されていればよい。
【0026】
続いて以下では、図1に示した情報処理装置1に含まれる各要素の構成例及び動作について詳しく説明する。図2は、CPU10における実行プログラムの切り替えを説明するための概念図である。CPU10でアプリケーションプログラムAが実行されている際に、別のアプリケーションプログラムBが呼び出されると(S101)、呼び出し先のアプリケーションプログラムBの実行前に、システムプログラムつまりOSによって保護設定チェック部14に対してチェック要求が発行される(S102)。OSは、保護設定チェック部14からCPU10に供給されるチェック結果によって、被チェック領域アドレスが呼び出し元プログラムに対するメモリ保護に適合するものであることが確認できた場合に、呼び出し先のアプリケーションプログラムBを起動する(S103)。
【0027】
図3(a)及び(b)は、メモリ13のメモリマップの一例を示している。図3(a)は、アプリケーションプログラムAのアクセス許可領域の例を示すメモリマップである。図3(a)の例では、12000〜120FF番地、13000〜130FF番地、及び14000〜141FF番地の3つの領域について、アプリケーションプログラムAによるアクセスが許可されている。一方、図3(b)は、アプリケーションプログラムBのアクセス許可領域の例を示すメモリマップである。図3(b)の例では、プログラムAのアクセス許可領域を包含する11000〜14200番地に亘る1つの領域について、アプリケーションプログラムBによるアクセスが許可されている。
【0028】
図4(a)及び(b)は、メモリ保護情報記憶部110の具体的な構成例を示す図である。図4(a)は図3(a)に示したアプリケーションプログラムAのアクセス許可領域に対応する設定内容を示している。また、図4(b)は図3(b)に示したアプリケーションプログラムBのアクセス許可領域に対応する設定内容を示している。
【0029】
図4(a)及び(b)の例では、メモリ保護情報記憶部110がn個の保護設定レジスタ1101〜110nにより構成されており、各保護設定レジスタには、よって1つのアクセス許可領域が指定される。また、保護設定レジスタ1101〜110nの各々におけるアクセス許可領域の指定は、下限アドレス及び上限アドレスによって行なわれる。例えば、図4(a)に示す保護設定レジスタ1101は、図3(a)の12000〜120FF番地のアクセス許可領域に対応する設定を保持しているレジスタであり、下限アドレス指定部1101Lに12000番地が指定され、上限アドレス指定部1101Uに120FF番地が指定されている。同様に、図3(a)の保護設定レジスタ1102は、図3(a)の13000〜130FF番地のアクセス許可領域に対応する設定を保持している。また、図3(a)の保護設定レジスタ1103は、図3(a)の14000〜141FF番地のアクセス許可領域に対応する設定を保持している。一方、図4(a)の保護設定レジスタ1101は、図3(b)の11000〜141FF番地のアクセス許可領域に対応する設定を保持している。
【0030】
なお、アクセス許可領域の設定に使用されない未使用レジスタは、例えば、図4(a)の保護設定レジスタ110n及び図4(b)の保護設定レジスタ1102に示すように、上限アドレス及び下限アドレスとして無効値(例えば、FFFFF)を書き込むことによって無効な設定であることを明示してもよい。また、保護設定レジスタ1101〜110nの各々の有効・無効を示すフラグを保持する記憶領域を別途設けてもよい。
【0031】
次に、図5を参照して、メモリ保護違反検出部111の構成例を説明する。図5に示したメモリ保護情報記憶部110は、図4(a)及び(b)に示した具体例と同様に、つまり、複数個の保護設定レジスタの集合として構成されている。ただし、図5に示す各保護設定レジスタは、アクセス許可領域の上限アドレス及び下限アドレスに加えて、当該領域の許可種別、具体的には、ライトアクセス、リードアクセス及び命令フェッチアクセスの許可種別を定める。ライト許可指定部1101Wは、値"1"のときライトアクセス許可を示し、値"0"のときライトアクセス不許可を示す。同様に、リード許可指定部1101Rは、値"1"のときリードアクセス許可を示し、値"0"のときリードアクセス不許可を示す。また、実行許可指定部1101Eは、値"1"のとき命令フェッチアクセス許可を示し、値"0"のとき命令フェッチアクセス不許可を示す。
【0032】
図5において、セレクタ113U及び113Lは、図1に示したセレクタ113に含まれるセレクタである。セレクタ113Uは、メモリ保護違反検出部111に対して、CPU10によるアクセス先又は被チェック領域の上限アドレスを選択的に供給する。一方、セレクタ113Lは、メモリ保護違反検出部111に対して、CPU10によるアクセス先又は被チェック領域の下限アドレスを選択的に供給する。
【0033】
また、図5に示すメモリ保護違反検出部111は、保護設定レジスタと同数の照合回路の集合として構成されている。図5に示す各照合回路は、比較回路1110U及び1110L並びにAND回路1111〜1114を含む。AND回路1111〜1114はそれぞれ2つの入力値の論理積を出力する回路である。
【0034】
比較回路1110Uは、保護設定レジスタの上限アドレス指定部1101Uに保持された値と、セレクタ113Uから供給されるアドレスとを比較する。比較回路1110Uは、セレクタ113Uから供給されるアドレスが上限アドレス指定部1101Uに保持された上限アドレス以下である場合に真値として値"1"を出力し、上限アドレス指定部1101Uに保持された上限アドレスを超える場合に偽値として値"0"を出力する。
【0035】
比較回路1110Lは、保護設定レジスタの下限アドレス指定部1101Lに保持された値と、セレクタ113Lから供給されるアドレスとを比較する。比較回路1110Lは、セレクタ113Lから供給されるアドレスが下限アドレス指定部1101Lに保持された下限アドレス以上である場合に真値として値"1"を出力し、下限アドレス指定部1101Lに保持された下限アドレス未満である場合に偽値として値"0"を出力する。
【0036】
AND回路1111の出力は、比較回路1110U及びLの出力が共に真値である場合、つまり、セレクタ113U及びLから供給される2つのアドレス情報によって指定されるメモリ領域がアクセス許可領域内である場合に、真値"1"となる。また、AND回路1112の出力は、セレクタ113U及びLから供給される2つのアドレス情報によって指定されるメモリ領域がアクセス許可領域内であり、かつ、ライトアクセスが許可される場合に真値"1"となる。同様に、AND回路1113の出力は、セレクタ113U及びLから供給される2つのアドレス情報によって指定されるメモリ領域がアクセス許可領域内であり、かつ、リードアクセスが許可される場合に真値"1"となる。また、AND回路1114の出力は、セレクタ113U及びLから供給される2つのアドレス情報によって指定されるメモリ領域がアクセス許可領域内であり、かつ、命令フェッチアクセスが許可される場合に真値"1"となる。
【0037】
なお、図5の例では、メモリ保護違反検出部111が、ライトアクセス、リードアクセス、及び命令フェッチアクセスについて個別に検出結果の出力を行う構成を示したが、このような構成が一例に過ぎないことはもちろんである。例えば、メモリ保護違反検出部111は、さらに詳細なアクセス種別に関する違反検出を行ってもよいし、最小限の検出、つまりアクセス許可領域であるか否かだけを検出してもよい。
【0038】
続いて以下では、図6〜8を参照して、保護設定チェック部14の構成例及び動作を説明するとともに、CPU10と保護設定チェック部14の間におけるチェック要求およびチェック結果に関するデータ受け渡しの具体例について説明する。
【0039】
図6は、図1に示したメモリ保護部11及び保護設定チェック部14のより具体的な構成例を示すとともに、CPU10と保護設定チェック部14との間のデータ受け渡しに使用されるレジスタ群15を示している。
【0040】
メモリ保護部11に関して、図6では、セレクタ113に含まれるセレクタ113U及び113Lを示している。セレクタ113U及び113Lの入出力及び動作は、上述した通りである。
【0041】
図6に示す保護設定チェック部14は、チェック機能制御部141、加算回路142及びチェック結果整形部143を有する。チェック機能制御部141は、CPU10から供給されるチェック要求に応じた被チェック領域アドレスのチェック処理を制御する。
【0042】
図7は、チェック機能制御部141の動作状態の遷移図である。チェック機能制御部141は、通常状態201、つまりCPU10からチェック要求を受けていない状態では、メモリアクセス要求に含まれるアクセス先アドレスがメモリ保護違反検出部111に供給されるように、セレクタ131U及び131Lを制御する。
【0043】
チェック機能制御部141は、CPU10からチェック要求を受信した場合に、保護設定チェック状態202に遷移する(図7のS201)。保護設定チェック状態202では、チェック要求の対象となる被チェック領域アドレスが、メモリ保護違反検出部111に供給されるように、セレクタ131U及び131Lを制御する。これに応じて、メモリ保護違反検出部111が、被チェック領域アドレスを対象として、アクセス先アドレスに対する処理と同様の処理を行って検出結果を出力する。
【0044】
なお、図6の例では、チェック要求に含まれる被チェック領域に関するアドレス情報は、被チェック領域の先頭アドレス及び被チェック領域のサイズとしている。このため、図6の例では、加算回路142によって被チェック領域の先頭アドレス及び被チェック領域のサイズを加算することによって被チェック領域の上限アドレスを生成し、生成された上限アドレスをセレクタ131Uに供給している。
【0045】
チェック機能制御部141は、メモリ保護違反検出部111の検出終了後にチェック結果格納状態203に遷移する。例えば、メモリ保護違反検出部111の検出終了時に、メモリ保護違反検出部111からチェック機能制御部141に終了通知を出力させ、当該終了通知の受信に応じてチェック結果格納状態に遷移すればよい(図7のS202)。また、チェック機能制御部141は、明示的な終了通知の受信を行なわずに、予め定められた期間の経過に応じてチェック結果格納状態203に遷移してもよい。チェック結果格納状態203では、チェック結果整形部143が、メモリ保護違反検出部111による検出結果を入力し、検出結果の集約、選択等を行って予め定められた適当なデータ形式に整形し、整形して得たチェック結果をCPU10が参照可能な記憶領域に出力する。チェック結果の出力が完了したのちに、チェック機能制御部141は、通常状態201に戻る(図7のS203)。
【0046】
図6の例では、CPU10と保護設定チェック部14の間におけるチェック要求及びチェック結果に関するデータの受け渡しに、レジスタ群15に含まれる4つのレジスタを使用する。先頭アドレスレジスタ150は、被チェック領域の先頭アドレスが格納されるレジスタであり、CPU10によって書き込まれ、保護設定チェック部14により読み出される。サイズレジスタ151は、被チェック領域のサイズが格納されるレジスタであり、CPU10によって書き込まれ、保護設定チェック部14により読み出される。開始制御レジスタ152は、保護設定チェック部14にチェックを開始させるために、CPU10によって書き込まれるレジスタである。図6の保護設定チェック部14は、チェック開始を示すデータが開始制御レジスタ152に書き込まれたことに応じて上述した保護設定チェック状態202に遷移し、被チェック領域アドレスのチェック処理を開始する。最後に、結果レジスタ153は、チェック結果整形部143によって整形されたチェック結果が書き込まれるレジスタである。図6のCPU10は、結果レジスタ153を介して保護設定チェック部14からのチェック結果を取得する。
【0047】
また、図6に示した構成は、本実施の形態にかかる情報処理装置1の具体的な構成例の1つに過ぎない。例えば、図6では、CPU10による開始制御レジスタ152の書き込みに応じて、保護設定チェック部14がチェック処理を開始する構成例を示した。しかしながら、この構成に代えて、CPU10から供給される専用命令又は専用コマンドを保護設定チェック部14が受信し、この命令又はコマンドに従ってチェック処理を実行するよう構成してもよい。
【0048】
CPU10から供給される専用命令に従って保護設定チェック部14にチェック処理を実行させる構成例を図8に示す。図8において、CPU10に含まれる命令発行部101は、デコードされた命令がチェック処理の実行を指示する専用命令である場合に、当該専用命令をチェック機能制御部141に供給する。ロード/ストア命令実行部102は、命令発行部101から供給されるロード命令及びストア命令に基づいて、メモリ13へのメモリアクセスを実行する。
【0049】
汎用レジスタ群103は、ロード/ストア命令実行部102のほか、ALU等の図示していない他の命令実行部の入力データ及び出力データの格納場所としての使用、レジスタ間接アドレッシングモードを使用する場合のベースアドレスやインデックス値の格納場所としての使用など、様々な用途に使用可能なレジスタ群である。図8の例では、汎用レジスタ群103は、被チェック領域の先頭アドレス及びサイズ、並びに保護設定チェック部14から出力されるチェック結果の格納に使用される。
【0050】
図8のチェック機能制御部141は、チェック要求に関する専用命令を受け取ると、当該命令のオペランドに指定された汎用レジスタを参照し、汎用レジスタ群103から被チェック領域の先頭アドレス及びサイズを読み出す。また、チェック機能制御部141は、専用命令のオペランドに指定された結果レジスタを選択し、整形後のチェック結果を指定された結果レジスタに格納する。
【0051】
続いて、メモリ保護情報記憶部110に保持された呼び出し元プログラムに対するメモリ保護内容と、呼び出し先プログラムの実行に先立って保護設定チェック部14により行われる保護設定チェックの結果との関係について、図9及び10を参照して説明する。
【0052】
図9は、アプリケーションプログラムAに対して2つのアクセス許可領域が設定されている場合のメモリマップを示す概念図である。なお、アプリケーションプログラムAは、図2に示した呼び出し元のプログラムである。1つの目のアクセス許可領域(アクセス許可領域−1)は、11100〜11400番地である。また、2つ目のアクセス許可領域(アクセス許可領域−2)は、11000〜11200番地である。つまり、2つの許可領域の一部、11100〜11200番地が重複している。
【0053】
複数のアクセス許可領域が設定されている場合に、複数のアクセス許可領域に跨る被チェック領を正常と判定するか異常(不正)と判定するかは、情報処理装置1の設計者又は使用者の方針により適宜選択可能な事項であり、方針に応じてメモリ保護違反検出部111を構成すればよい。図9及び後述する図10では、これを異常(不正)とみなす。
【0054】
図9の例を詳しく見ると、チェック要求Bは、被チェック領域の全体が許可領域−2に含まれるため、チェック結果は"正常"となる。同様に、チェック要求Eは、被チェック領域の全体が許可領域−1に含まれるため、チェック結果は"正常"となる。また、チェック要求Cも、被チェック領域の全体が許可領域−1に含まれ、同時に許可領域−2にも含まれるため、チェック結果は"正常"となる。一方、チェック要求A及びFは、被チェック領域がアクセス得許可領域外であるため、また、チェック要求Dは、被チェック領域が2つのアクセス許可領域−1及び2に跨るため、チェック結果は"異常"となる。
【0055】
次に、図10を参照して説明する。図10は、図5に示した3つのアクセス種別、具体的にはライトアクセス、リードアクセス及び命令フェッチアクセスに関する詳細な判定が行われる場合を示したものである。図10の例では、アクセス許可領域−1に対するリードアクセス及び命令フェッチアクセスが許可され、ライトアクセスが禁止されている。また、アクセス許可領域−2に対するリードアクセス及びライトアクセスが許可され、命令フェッチアクセスが禁止されている。
【0056】
図10の例を詳しく見ると、チェック要求G、J及びLは、全てのアクセス種別ついてのアクセスが禁止される。被チェック領域にアクセス許可領域以外が含まれるか、被チェック領域が複数のアクセス許可領域に跨っているためである。一方、チェック要求Hの被チェック領域は、アクセス許可領域−2に包含されているため、アクセス許可領域−2に対応したチェック結果が出力される。同様に、チェック要求Kの被チェック領域は、アクセス許可領域−1に包含されているため、アクセス許可領域−1に対応したチェック結果が出力される。一方、チェック要求Iの被チェック領域は、アクセス許可領域−1及び2の重複領域に包含されている。この場合に、2つのアクセス許可領域に関する許可内容のAND判定を行うかOR判定を行うかは、情報処理装置1の設計事項として適宜選択可能である。図10の例では、2つのアクセス許可領域−1及び2に関する許可内容のOR判定を行う場合を示している。したがって、チェック要求Hに関するチェック結果は、ライトアクセス、リードアクセス及び命令フェッチアクセスの全てが"正常"となる。
【0057】
上述したように、本実施の形態にかかる情報処理装置1では、あるプログラムAによるプログラムBの呼び出しに起因したプログラムAからプログラムBへの実行プログラムの切り替えに際して、CPU10が被チェック領域を特定するためのアドレス情報を含むチェック要求を出力する。さらに、このチェック要求に応じて、保護設定チェック部14が、プログラムAによるアクセス要求の違反検出のためにメモリ保護情報記憶部110に設定されたメモリ保護情報に基づいて、チェック要求が、プログラムAに対するメモリ保護設定に適合するものであるかをチェックするよう構成されている。
【0058】
これにより、CPU10にメモリ保護情報を読み出してチェックを行なう必要がなく、プログラムA及びBの実行を行なうCPU10とは独立して設けられた保護設定チェック部14によりプログラムAによるプログラムBの読み出しの妥当性を検証できる。
【0059】
また、保護設定チェック部14は、呼び出し元であるプログラムAによるアクセス要求の違反検出のためにメモリ保護情報記憶部110に既に設定済みのメモリ保護情報をそのまま利用して、被チェック領域に関するチェックを行うことができる。つまり、被チェック領域に関するチェックに際して、新たなメモリ保護情報の読み出し処理及び書き込み処理を特に必要としないため、チェック処理を一層効率良く行なうことができる。
【0060】
また、本実施の形態にかかる保護設定チェック部14は、被チェック領域アドレスとメモリ保護情報とを照合するためのハードウェアを独自に有していない。つまり、情報処理装置1では、保護設定チェック部14が有するべき当該ハードウェアと、アクセス先アドレスとメモリ保護情報とを照合するためにメモリ保護違反検出部111が有する照合回路とを兼用させることで、構成を簡素化させている。
【0061】
また、図5に示すように、メモリ保護違反検出部111が、並列化された複数の照合回路を備える構成とすることによって、プログラムAに対して複数のアクセス許可領域が設定されている場合であっても、複数のアクセス許可領域の各々と被チェック領域アドレスとの照合を並行して実行することができる。つまり、アクセス許可領域の設定数の増大に比例して、チェック時間が増大することを抑制することができる。このため、図5に示したような構成、つまり、被チェック領域アドレスとメモリ保護情報とを照合するための複数のハードウェアを並列化した構成によれば、プログラム呼び出し時の正当性チェックを一層効率よく実行できる。
【0062】
実際、メモリアクセス要求に対するメモリ保護を効率的に実行するために図5に示すように照合回路は並列化される場合が多い。このため、本実施の形態で述べたように、メモリ保護違反検出部111が有する照合回路を被チェック領域アドレスとメモリ保護情報とを照合するためのハードウェアと兼用させる構成は、構成の簡素化とアドレスチェックの効率化の両方に効果がある。
【0063】
<発明の実施の形態2>
上述した発明の実施の形態1は、本発明をメモリ保護に適用した例について示したが、本発明は周辺装置保護のためにも利用可能である。本実施の形態にかかる情報処理装置2は、周辺装置保護機能を有し、プログラム呼び出しが発生した際に、呼び出し先のプログラムの実行可否を周辺装置保護の観点からチェックする機能を有する。
【0064】
図11は、本実施の形態にかかる情報処理装置2の要な部分の構成を示すブロック図である。図11において、周辺装置保護部21は、図1に示したメモリ保護部11に代えて設けられており、CPU10からアクセスされる周辺装置23A〜23CとCPU10との間に介在して、CPU10から周辺装置へのアクセスを制御する。
【0065】
周辺装置保護情報記憶部210は、CPU10で実行されているプログラムに応じた周辺装置保護情報を記憶する。周辺装置保護情報記憶部210は、CPU10で実行されるプログラムの切り替えに応じて、切り替え先のプログラムに応じた設定内容となるよう更新される。周辺装置保護情報記憶部210の書き換えは、例えば、CPU10で実行されるプログラムの切り替えの際に起床されるシステムプログラムによって行われる。周辺装置保護情報におけるアクセス許可又は禁止の指定もまた、様々な形式により行うことができ、その形式は任意である。例えば、周辺装置保護情報は、周辺装置23A〜23Cの各々についてアクセス許可又は不許可を示す1ビットの識別情報としてもよい。
【0066】
周辺装置保護違反検出部211は、CPU10がアクセスを要求するアクセス先アドレスと周辺装置保護情報記憶部210に設定された周辺装置保護情報とを比較することによって、周辺装置へのアクセス要求を許可するか否かを決定する。
【0067】
アクセス制御部212は、周辺装置アクセス要求に含まれるアクセス先アドレスがアクセスの許可された周辺装置を示す場合に、周辺装置へのアクセスを許可する。一方、アクセス制御部212は、アクセス先アドレスがアクセスの禁止された周辺装置を示す場合に、周辺装置アクセスを禁止する。なお、周辺装置保護違反検出部211又はアクセス制御部212は、アクセスの禁止された周辺装置へのアクセスを検出した場合に、不正なアクセスを検出したことを示す信号をCPU10に出力するとよい。
【0068】
図11に示すセレクタ213及び保護設定チェック部14それぞれの構成及び動作は、対象となるアドレスが周辺装置を指定するアドレスである点を除いて、発明の実施の形態1で説明したセレクタ113及び保護設定チェック部14と同一とすればよい。
【0069】
なお、上述した図11の構成が一例に過ぎないことは勿論である。例えば、上述した説明では、周辺装置保護部21が周辺バス22にアクセスするものとして説明したが、周辺バス22及び周辺装置23A〜Cへのアクセスは、バスコントローラ(不図示)、バスブリッジ(不図示)等の他の装置を介して行なうよう構成してもよい。また、チェック要求の物理的な転送経路とアクセス要求の物理的な転送経路の少なくとも一部は共通化されてもよい。
【0070】
周辺装置保護情報記憶部210及び周辺装置保護違反検出部211の構成例を図12に示す。図12に示す周辺装置保護情報記憶部210は、複数の保護設定レジスタ2100〜2104を有する。複数の保護設定レジスタ2100〜2104の各々によって、各周辺装置のアクセス可否が指定される。図12の例では、保護設定レジスタ2100〜2104は、周辺装置であるクロック、リセット装置、割り込みコントローラ(INTC)、DMA(Direct Memory Access)コントローラ及びタイマーに関する保護情報を格納する。保護設定レジスタ2100〜2104の各々は、例えば、周辺装置のアクセス許可又は不許可を示す1ビットの識別情報を保持すればよい。
【0071】
図12に示す周辺装置保護違反検出部211は、アドレスデコーダ2110及び保護設定レジスタ2100〜2104の数に対応した複数の判定部2111〜2115を有する。アドレスデコーダ2110は、セレクタ213を介して入力されるアクセス先アドレス又は被チェック領域アドレスをデコードし、周辺装置種別に対応して設けられた判定部2111〜2115のいずれかを選択する。判定部2111〜2115は、保護設定レジスタ2100〜2104に格納された周辺装置保護情報と、アドレスデコーダ2110による選択信号を入力し、アクセス許可又は不許可を示す検出結果を出力する。
【0072】
なお、情報処理装置2が、CPU10からのチェック要求に応じてセレクタ213の動作を制御し、周辺装置保護情報記憶部210に保持された周辺装置保護情報と周辺装置保護違反検出部211を使用して被チェック領域のチェックを実行することは、上述した発明の実施の形態1と同様である。
【0073】
本実施の形態にかかる情報処理装置2は、あるプログラムAによるプログラムBの呼び出しに起因したプログラムAからプログラムBへの実行プログラムの切り替えに際して、プログラムAによるプログラムBの読み出しの妥当性を周辺装置保護の観点から効率的に検証することができる。
【0074】
<発明の実施の形態3>
上述した発明の実施の形態1及び2では、被チェック領域アドレスとメモリ保護情報又は周辺装置保護情報とを照合するためのハードウェアを保護設定チェック部14に設けずに、メモリ保護違反検出部111又は周辺装置保護違反検出部211のハードウェアと兼用する構成を示した。しかしながら、構成は冗長となるものの、被チェック領域アドレスとメモリ保護情報又は周辺装置保護情報とを照合するためのハードウェアを保護設定チェック部14に設けてもよい。
【0075】
本実施の形態にかかる情報処理装置3の構成を図13に示す。図13において、保護設定チェック部34は、発明の実施の形態1にかかる情報処理装置1が有する保護設定チェック部14に被チェック領域アドレスとメモリ保護情報又は周辺装置保護情報とを照合するためのハードウェアを追加したものである。なお、保護設定チェック部34に追加する照合用のハードウェアは、図5に示したメモリ保護違反検出部111の照合回路と同様とすればよい。
【0076】
なお、上述した発明の実施の形態1〜3にかかる情報処理装置1〜3は、例えば、1チップ化されたマイクロコンピュータとして構成されてもよいし、複数チップからなるコンピュータシステムとして構成されてもよい。
【0077】
さらに、本発明は上述した実施の形態のみに限定されるものではなく、既に述べた本発明の要旨を逸脱しない範囲において種々の変更が可能であることは勿論である。
【図面の簡単な説明】
【0078】
【図1】本発明の実施の形態1にかかる情報処理装置の構成を示すブロック図である。
【図2】本発明の実施の形態1にかかる情報処理装置におけるプログラム呼び出しの動作を説明するための概念図である。
【図3】本発明の実施の形態1にかかる情報処理装置におけるメモリ保護設定を説明するためのメモリマップ図である。
【図4】本発明の実施の形態1にかかる情報処理装置が有するメモリ保護情報記憶部の構成例を示す図である。
【図5】本発明の実施の形態1にかかる情報処理装置が有するメモリ保護違反検出部の構成例を示す図である。
【図6】本発明の実施の形態1にかかる情報処理装置が有する保護設定チェック部の構成例を示す図である。
【図7】本発明の実施の形態1にかかる情報処理装置が有する保護設定チェック部の状態遷移図である。
【図8】本発明の実施の形態1にかかる情報処理装置が有する保護設定チェック部の構成例を示す図である。
【図9】本発明の実施の形態1にかかる情報処理装置による保護設定チェック動作を説明するための図である。
【図10】本発明の実施の形態1にかかる情報処理装置による保護設定チェック動作を説明するための図である。
【図11】本発明の実施の形態2にかかる情報処理装置の構成を示すブロック図である。
【図12】本発明の実施の形態2にかかる情報処理装置が有する周辺装置保護情報記憶部及び周辺装置保護違反検出部の構成例を示す図である。
【図13】本発明の実施の形態3にかかる情報処理装置の構成を示すブロック図である。
【符号の説明】
【0079】
1、2、3 情報処理装置
10 CPU(Central Processing Unit)
11、31 メモリ保護部
12 バス
13 メモリ
14、34 保護設定チェック部
15 レジスタ群
21 周辺装置保護部
101 命令発行部
102ロード/ストア命令実行部
103 汎用レジスタ群
110 メモリ保護情報記憶部
111 メモリ保護違反検出部
112 アクセス制御部
113、113U、113L セレクタ
141 チェック機能制御部
142 加算回路
143 チェック結果整形部
150 先頭アドレスレジスタ
151 サイズレジスタ
152 開始制御レジスタ
153 結果レジスタ
210 周辺装置保護情報記憶部
211 周辺装置保護違反検出部
212 アクセス制御部
213 セレクタ

【特許請求の範囲】
【請求項1】
第1のプログラム及び第2のプログラムを切り替えて実行可能であって、前記第1のプログラムによる第1のアクセス先アドレス情報を含むアクセス要求を出力するとともに、前記第1のプログラムによる前記第2のプログラムの呼び出しに起因した前記第1のプログラムから前記第2のプログラムへの実行プログラムの切り替えに際して、第2のアクセス先アドレス情報を含むチェック要求を出力する命令実行部と、
前記命令実行部で実行されるプログラムによるアクセス可否を指定する保護情報を記憶する保護情報記憶部と、
前記第1のプログラムに対応して前記保護情報記憶部に設定された前記保護情報に基づいて、前記第1のアクセス先アドレス情報を含む前記アクセス要求が違反であるか否かを検出する保護違反検出部と、
前記第1のプログラムによる前記アクセス要求の違反検出のために前記保護情報記憶部に設定された前記保護情報に基づいて、前記第2のアクセス先アドレス情報を含む前記チェック要求が、前記第1のプログラムに対する保護設定に適合するものであるかをチェックする保護設定チェック部と、
を備える情報処理装置。
【請求項2】
前記保護違反検出部に含まれる前記保護情報と前記第1のアクセス先アドレス情報を照合する第1の照合回路、及び前記保護設定チェック部に含まれる前記保護情報と前記第2のアクセス先アドレス情報を照合する第2の照合回路が、前記命令実行部とは独立したハードウェアとして構成されていることを特徴とする請求項1に記載の情報処理装置。
【請求項3】
前記保護違反検出部に対して、前記アクセス要求に含まれる前記第1のアクセス先アドレス情報又は前記チェック要求に含まれる前記第2のアクセス先アドレス情報を選択的に供給するセレクタ回路をさらに備え、
前記第2の照合回路が前記第1の照合回路と共通化されていることを特徴とする、請求項2に記載の情報処理装置。
【請求項4】
前記第2のアクセス先アドレス情報は、呼び出し先である前記第2のプログラムを介して前記第1のプログラムが間接的にアクセスを要求するアドレスの指定を含む、請求項1乃至3のいずれか1項に記載の情報処理装置。
【請求項5】
前記第2のアクセス先アドレス情報は、前記呼び出しの引数に指定される、請求項4に記載の情報処理装置。
【請求項6】
情報処理装置におけるプログラム実行制御方法であって、
前記情報処理装置は、命令実行部と、前記命令実行部で実行されるプログラムによるアクセス可否を指定するための保護情報を記憶する保護情報記憶部とを備え、
前記命令実行部が第1のプログラムを実行中である場合に、前記命令実行部から出力される第1のアクセス先アドレス情報を含むアクセス要求が違反であるか否かを、前記第1のプログラムに対応して前記保護情報記憶部に設定された前記保護情報に基づいて検出し、
前記第1のプログラムによる前記第2のプログラムの呼び出しに起因して前記第1のプログラムから前記第2のプログラムへ実行プログラムの切り替えを行う場合に、前記命令実行部から出力される第2のアクセス先アドレス情報を含むチェック要求が、前記第1のプログラムに対する保護設定に適合するものであるか否かを、前記第1のプログラムによる前記アクセス要求の違反検出のために前記保護情報記憶部に設定された前記保護情報に基づいてチェックし、
前記チェック要求が前記第1のプログラムに対する保護設定に適合するものであると判定された場合に、前記第1のプログラムによる呼び出しに応じて前記第2のプログラムを実行する、プログラム実行制御方法。
【請求項7】
前記チェック要求に対するチェック完了後に、前記保護情報記憶部に記憶される前記保護情報を前記第2のプログラムに対応した設定に変更する、請求項6に記載のプログラム実行制御方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate