(57)【要約】【課題】  高い割り込み応答性を実現しつつ、あらかじめ定められた領域以外へのメモリアクセスを禁止して、メモリ領域の保護を図るメモリ保護装置を提供する。【解決手段】  メモリ領域情報レジスタ１３２（１）〜（ｍ）は、それぞれ、対応するグループ番号の割り込みに対応する処理でアクセス可能なメモリ領域を指定する情報を保持する。選択回路１３３は、グループ番号レジスタ１３１が保持するグループ番号に応じて、メモリ領域情報レジスタ１３２（１）〜（ｍ）の何れかを選択し、選択したメモリ領域情報レジスタ１３２が保持するメモリ領域を指定する情報を出力する。アドレスバス監視部１０６は、選択回路１３３が出力するメモリ領域を指定する情報に基づいて、プロセッサによる不正メモリアクセスの発生の有無を監視する。【選択図】    図１
2005275841.tif 000002
【特許請求の範囲】
【請求項１】
割り込みに対応する処理を実行するプロセッサによるメモリアクセスを制限してメモリを保護するメモリ保護装置であって、
プロセッサが実行する処理に対応してアクセス可能なメモリ領域を指定するメモリ領域情報を生成して出力するメモリ情報生成回路と、
プロセッサによるメモリアクセスを監視し、メモリ情報生成回路が生成したメモリ領域情報で示されるメモリ領域外のメモリアクセスを検知すると、不正メモリアクセスが発生した旨の信号を出力するメモリアクセス監視回路とを備えることを特徴とするメモリ保護装置。
【請求項２】
前記割り込みのそれぞれには、グループ番号が設定されており、
前記メモリ情報生成回路は、前記グループ番号に対応して前記メモリ領域情報を記憶するメモリ領域情報記憶部と、プロセッサが実行中の処理に対応する割り込みのグループ番号を記憶するグループ番号レジスタと、該グループ番号レジスタが記憶する情報に基づいて、前記メモリ領域情報記憶部から前記メモリ領域情報を読み出すメモリ領域情報選択部とを備える、請求項１に記載のメモリ保護装置。
【請求項３】
発生した割り込みに対応するグループ番号を生成するグループ番号生成回路を更に備え、前記グループ番号保持レジスタは、プロセッサが割り込みを受け付けると、前記グループ番号生成回路が出力するグループ番号によって更新される、請求項２に記載のメモリ保護装置。
【請求項４】
プロセッサが受け付けた割り込みのグループ番号の履歴を記憶する履歴管理部を更に備え、該履歴管理部は、前記グループ番号レジスタのグループ番号の更新に先立って、前記グループ番号レジスタに記憶されたグループ番号を記憶する、請求項３に記載のメモリ保護装置。
【請求項５】
前記履歴管理部は、複数のグループ番号を記憶するスタック領域を備える、請求項４に記載のメモリ保護装置。
【請求項６】
前記グループ番号保持レジスタは、プロセッサが復帰命令を発生すると、前記履歴管理部が記憶するグループ番号によって更新される、請求項４又は５に記載のメモリ保護装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリ保護装置に関し、特に、プログラムが、そのプログラムに設定されたメモリ領域以外の領域にアクセスすることを禁止して、メモリに記憶されたデータやプログラムを保護するメモリ保護装置に関する。
【背景技術】
【０００２】
特定用途向けの組み込みシステム（embedded system）が普及している。組み込みシステムの適用は、例えば、家電機器や、自動車等といった多岐の分野にわたっている。組み込みシステムでは、通常、プロセッサは、制御対象から割り込み信号を入力し、発生した割り込みに対応する処理を実行して、機器の制御等を行う。
【０００３】
図３は、割り込みの発生に伴って、プロセッサが実行する処理が変化する様子を示している。プロセッサは、ある処理の実行中に、時刻ｔ１で割り込み１を受け付けると、現在行っている処理を中断して、割り込み１に対応した処理を実行する。その割り込み１に対応した処理が終了し、時刻ｔ２で復帰（ＲＥＴ）命令が発生すると、プロセッサは、割り込み１を受け付けるために中断した処理を再開する。その後、プロセッサは、時刻ｔ３で新たに発生した割り込み８を受け付けると、実行中の処理を再び中断して、割り込み８に対応した処理を実行する。
【０００４】
プロセッサは、割り込み８に対応した処理の実行中に、時刻ｔ４で再び割り込み１を受け付けると、処理を中断して、割り込み１に対応した処理を実行する。また、プロセッサは、割り込み１に対応する処理の実行中に、時刻ｔ５で割り込み２を受け付けると、実行中の処理を中断して、割り込み２に対応する処理を実行する。割り込み２に対応した処理が時刻ｔ６で復帰命令を発生すると、プロセッサは、中断した割り込み１に対応する処理を再開する。プロセッサは、再開された割り込み１に対応する処理が時刻ｔ７で復帰命令を発生すると、割り込み８に対応した処理を再開し、割り込み８に対応する処理が時刻ｔ８で復帰命令を発生すると、時刻ｔ３で割り込み８に対応した処理を実行するために中断した処理を再開する。
【０００５】
組み込みシステムでは、通常、各割り込みに対応した処理は、同じメモリ資源を用いて実行される。このため、プロセッサが実行する処理が図３のように推移する場合において、割り込み２に対応する処理が、その直前に実行していた割り込み１に対応する処理がデータ領域やプログラム領域として使用していたメモリ領域の内容を書き換えると、割り込み１に対応する処理で使用するデータ等が破壊され、時刻ｔ７以降に再開される割り込み１に対応する処理が正しく実行されないといった事態が発生する。このような事態を防止するため、各割り込みに対応した処理は、その処理にあらかじめ設定されたメモリ領域以外へのメモリアクセスを禁止するメモリ保護機能の下で実行されることが好ましい。
【０００６】
メモリ保護機能は、ＯＳが、各割り込みに対応する処理においてアクセス可能なメモリ範囲を設定することで実現する。例えば、図３において、時刻ｔ５でプロセッサが割り込み２を受け付ける際には、ＯＳのプログラムが実行されて、次に実行する割り込み２に対応する処理においてアクセス可能なメモリ領域の設定を含む多くのプログラムを実行してから、割り込み２に対応する処理が実行される。また、時刻ｔ６で復帰命令が発生し、割り込み１に対応した処理を再開する際には、ＯＳのプログラムが実行されて、割り込み１に対応する処理においてアクセス可能なメモリ領域の設定を含む多くのプログラムを実行してから、割り込み１に対応した処理が再開される。このようなアクセス可能なメモリ領域等の設定をＯＳが行う技術は、例えば特許文献１に記載されている。
【０００７】
ここで、プロセッサに入力される複数の割り込みには、発生してから所定の時間制約以内に必ず処理を完了しなければならない割り込み、つまりは要求されるリアルタイム性が高い処理に対応する割り込みが含まれる。このような要求されるリアルタイム性が高い処理について、上記のように、ＯＳがメモリ保護の設定を行う場合には、割り込みが発生し、その割り込みに対応した処理を開始するまでの間に、ＯＳがアクセス可能なメモリ領域の設定を含む多くの処理を実行する必要があるため、割り込み応答性が低下し、処理のリアルタイム性が損なわれるおそれがある。
【０００８】
各処理において、アクセス可能なメモリ範囲の設定が可能であるということは、結局、その処理においてメモリ領域の任意の領域にアクセス可能であるということを意味する。このため、アクセス可能なメモリ領域の設定は、ＯＳによってされなければならず、この場合、高い割り込み応答性を実現しつつ、メモリ保護を図ることは困難である。このことから、高いリアルタイム性が要求されるシステムでは、高い割り込み応答性が重視され、割り込みに対応する各処理は、図３に示すように、ＯＳによってアクセス可能なメモリ領域等の設定を受けることなく、メモリ保護なしで実行されている。
【特許文献１】特開２０００−１６３３０９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
ところで、各処理に対応するプログラムを、全て同じ部門（プログラマ）によって作成する場合には、各処理におけるメモリ等の使用状況を勘案してプログラミングすることで、ある処理で使用されるデータが他の処理で書き換えられてデータが破壊される事態を防止できる。しかし、組み込みシステムでは、１つのプロセッサが制御する対象が増えてきており、各割り込みに対応する処理のプログラムを、制御対象ごとに、異なる部門で作成することも行われている。この場合、異なる部門で作成されたプログラム間では、メモリ等の使用状況等をあらかじめ知ることができず、本来ならばアクセス可能ではないメモリ範囲にアクセスして、データ等が破壊される事態を防止できない。
【００１０】
上記のような事態を防止するため、高いリアルタイム性が要求されるシステムにおいても、各処理におけるアクセス可能なメモリ範囲を制限して、メモリ保護を図りたいという要求が高まっている。しかし、従来は、前述のようにＯＳがアクセス可能なメモリ範囲の設定を行う必要があったため、高い割り込み応答性とメモリ保護の双方を両立させることは困難であった。
【００１１】
本発明は、上記問題を解消し、高い割り込み応答性を実現しつつ、あらかじめ定められた領域以外へのメモリアクセスを禁止して、メモリ領域の保護を図るメモリ保護装置を提供することを目的とする。
【課題を解決するための手段】
【００１２】
上記目的を達成するために、本発明のメモリ保護装置は、割り込みに対応する処理を実行するプロセッサによるメモリアクセスを制限してメモリを保護するメモリ保護装置であって、プロセッサが実行する処理に対応してアクセス可能なメモリ領域を指定するメモリ領域情報を生成して出力するメモリ情報生成回路と、プロセッサによるメモリアクセスを監視し、メモリ情報生成回路が生成したメモリ領域情報で示されるメモリ領域外のメモリアクセスを検知すると、不正メモリアクセスが発生した旨の信号を出力するメモリアクセス監視回路とを備えることを特徴とする。
【００１３】
本発明のメモリ保護装置では、メモリアクセス監視部は、メモリ情報生成回路が生成したメモリ領域情報に基づいて、不正アクセスの有無を監視する。このため、メモリ保護の設定をＯＳが行う場合に比して、アクセスできるメモリ領域の制限を高速に行うことができ、高い割り込み応答性を維持しつつ、プロセッサが実行する処理を、メモリ保護ありの状態で実行することができる。
【００１４】
本発明のメモリ保護装置では、前記割り込みのそれぞれには、グループ番号が設定されており、前記メモリ情報生成回路は、前記グループ番号に対応して前記メモリ領域情報を記憶するメモリ領域情報記憶部と、プロセッサが実行中の処理に対応する割り込みのグループ番号を記憶するグループ番号レジスタと、該グループ番号レジスタが記憶する情報に基づいて、前記メモリ領域情報記憶部から前記メモリ領域情報を読み出すメモリ領域情報選択部とを備えることが好ましい。この場合、グループ番号レジスタに、現在実行中の処理に対応するグループ番号を記憶させることで、メモリ領域情報選択部は、その実行中の処理でアクセス可能なメモリ領域を指定する情報を読み出すことができる。
【００１５】
本発明のメモリ保護装置は、発生した割り込みに対応するグループ番号を生成するグループ番号生成回路を更に備え、前記グループ番号保持レジスタは、プロセッサが割り込みを受け付けると、前記グループ番号生成回路が出力するグループ番号によって更新されることが好ましい。この場合には、新たに実行される処理に対応するグループ番号で、グループ番号レジスタを更新することができる。
【００１６】
本発明のメモリ保護装置は、プロセッサが受け付けた割り込みのグループ番号の履歴を記憶する履歴管理部を更に備え、該履歴管理部は、前記グループ番号レジスタのグループ番号の更新に先立って、前記グループ番号レジスタに記憶されたグループ番号を記憶することが好ましい。この場合、新たな処理に対応するグループ番号によって、グループ番号レジスタが記憶するグループ番号が更新される前に、そのグループ番号レジスタが記憶していたグループ番号を履歴管理部に待避して記憶させることができる。
【００１７】
本発明のメモリ保護装置では、前記履歴管理部は、複数のグループ番号を記憶するスタック領域を備える構成とすることができる。
【００１８】
本発明のメモリ保護装置では、前記グループ番号保持レジスタは、プロセッサが復帰命令を発生すると、前記履歴管理部が記憶するグループ番号によって更新されることが好ましい。この場合、復帰命令が発生した際に、グループ番号レジスタが記憶するグループ番号を、再開された処理に対応するグループ番号で、更新することができる。
【発明の効果】
【００１９】
本発明のメモリ保護装置は、ＯＳを介さずに割り込みに対応する処理に対してアクセス可能なメモリ領域を指定できるため、高い割り込み応答性が要求されるシステムにおいても、高い割り込み応答性を実現しつつ、あらかじめ定められた領域以外へのメモリアクセスを禁止して、メモリ領域の保護を図ることができる。
【発明を実施するための最良の形態】
【００２０】
以下、図面を参照し、本発明の実施形態例に基づいて、本発明を更に詳細に説明する。図１は、本発明の一実施形態例のメモリ保護装置の構成を示している。このメモリ保護装置１００は、プロセッサ（図示せず）と共に組み込みシステムを構成するシステムＬＳＩ等の半導体装置に内蔵される。図１に示すように、メモリ保護装置１００は、グループ番号生成回路１０１、セレクタ１０２、メモリ情報生成回路１０３、履歴管理バッファ１０４、制御部１０５、及び、アドレスバス監視部１０６を備える。メモリ保護装置１００は、プロセッサによるメモリアクセスを監視して、不正メモリアクセスの発生を防止する。
【００２１】
プロセッサは、複数の割り込み（ＩＮＴ（１）〜（ｎ））（ｎ：２以上の整数）を入力し、それら割り込みに対応して、複数の制御対象に対する処理を行う。ｎ個の割り込みは、ＯＳレベルの割り込みと、ユーザレベルの割り込みとに大別され、グループ０からグループ（ｍ）までにグループ分けされる。ＯＳレベルの割り込みは、ＯＳ割り込み等の特権モードで動作する特殊な割り込みであり、そのグループは、グループ０に設定される。ユーザレベルの割り込みは、グループ１〜（ｍ）（ｍ：１≦ｍ≦ｎを満たす整数）にグループ分けされる。ユーザ割り込みの数がｎ個であり、割り込み数ｎ＝グループ数ｍであるときには、各割り込みとグループとは１対１に対応する。ここで、同じグループに設定された割り込み間に対応する処理のプログラムは、例えば同じ部門により作成され、同じグループ内の割り込み間では、メモリ保護違反は発生しないものとする。
【００２２】
グループ番号生成回路１０１は、プロセッサに入力される、複数の割り込みＩＮＴ（１）〜ＩＮＴ（ｎ）を入力し、発生した割り込みに設定されたグループ番号を出力する。履歴管理バッファ１０４は、発生した割り込みに対応するグループ番号の履歴を保持する。メモリ情報生成回路１０３は、プロセッサが実行中の割り込みに対応する処理がアクセス可能なメモリ領域に関する情報をアドレスバス監視部１０６に出力する。アドレスバス監視部１０６は、入力するメモリ領域に関する情報に基づいて、アドレスバスを監視する。
【００２３】
制御部１０５は、プロセッサが新たに割り込みを受け付ける際に活性化される割り込み受け付け信号ＩＮＴＡＣＫと、プロセッサが復帰命令を発生した際に活性化される復帰実行信号ＲＥＴＥＥＸとを生成する。制御部１０５は、プロセッサが新たに割り込みを受け付けるタイミングで、割り込み受け付け信号ＩＮＴＡＣＫを活性化状態（“１”）とし、それ以外の期間では、割り込み受け付け信号ＩＮＴＡＣＫを非活性化状態（“０”）とする。また、プロセッサが現在行っている処理において復帰命令を発生した際には、制御部１０５は、復帰命令実行信号ＲＥＴＥＸを活性化状態（“１”）とし、それ以外の期間では、復帰実行信号ＲＥＴＥＸを非活性化状態（“０”）とする。
【００２４】
グループ番号生成回路１０１は、割り込みＩＮＴ（１）〜（ｎ）に対応して、任意に書き換えが可能なグループ番号設定レジスタ１１１（１）〜（ｎ）を有する。各グループ番号設定レジスタ１１１は、それぞれ対応する割り込みが属するグループ番号を保持する。グループ番号生成回路１０１は、何れかの割り込みが発生すると、その発生した割り込みに対応するグループ番号設定レジスタ１１１が保持するグループ番号を、発生グループ番号ＮＧＥＮ＿ＮＵＭとしてセレクタ１０２に向けて出力する。
【００２５】
履歴管理バッファ１０４は、履歴記憶部１４１、ライトポインタ１４２、及び、リードポインタ１４３を備える。履歴管理バッファ１０４には、制御信号として、割り込み受け付け信号ＩＮＴＡＣＫと、復帰命令実行信号ＲＥＴＥＸとが入力される。履歴記憶部１４１は、グループ番号を記憶するエントリを複数有する。ライトポインタ１４２は、履歴記憶部１４１に新たなグループ番号を記憶させる際のアドレス（エントリ）を指定する。リードポインタ１４３は、履歴記憶部１４１からグループ番号を読み出す際のアドレスを指定し、ライトポインタ１４２が示すアドレスの１つ前のアドレスを保持する。
【００２６】
ライトポインタ１４２及びリードポインタ１４３は、割り込み受け付け信号ＩＮＴＡＣＫが活性化されるとそれぞれインクリメント（＋１）され、復帰命令実行信号ＲＥＴＥＸが活性化されるとデクリメント（−１）される。履歴管理バッファ１０４は、リードポインタ１４３が指定するアドレスに記憶されたグループ番号を読み出し、そのグループ番号を、復帰グループ番号ＲＥＴ＿ＮＵＭとして、セレクタ１０２に向けて出力する。ライトポインタ１４２が先頭アドレスを示す「エントリ１」を保持するとき、リードポインタ１４３は、読み出すべきアドレスがないことを示す「エントリ０」を保持する。この場合には、履歴管理バッファ１０４は、ＮＵＬＬ値、又は、メモリ保護なしを示すグループ番号「０」を、復帰グループ番号ＲＥＴ＿ＮＵＭとして出力する。
【００２７】
セレクタ１０２は、グループ番号生成回路１０１から出力された発生グループ番号ＮＧＥＮ＿ＮＵＭと、履歴管理バッファ１０４から出力された復帰グループ番号ＲＥＴ＿ＮＵＭとを入力し、そのうちの一方を、割り込み受け付け信号ＩＮＴＡＣＫに基づいて選択し、選択したグループ番号を出力する。セレクタ１０２は、割り込み受け付け信号ＩＮＴＡＣＫが活性化状態にあるときには、発生グループ番号ＮＧＥＮ＿ＮＵＭを出力し、割り込み受け付け信号ＩＮＴＡＣＫが非活性化状態にあるときには、復帰グループ番号ＲＥＴ＿ＮＵＭを出力する。
【００２８】
メモリ情報生成回路１０３は、グループ番号レジスタ１３１、メモリ領域設定レジスタ１３２（１）〜（ｍ）、及び、選択回路１３３を有する。メモリ情報生成回路１０３には、制御信号として、割り込み受け付け信号ＩＮＴＡＣＫと、復帰命令実行信号ＲＥＴＥＸとが入力される。メモリ情報生成回路１０３には、セレクタ１０２を介して、発生グループ番号ＮＧＥＮ＿ＮＵＭ、又は、復帰グループ番号ＲＥＴ＿ＮＵＭが入力される。
【００２９】
グループ番号レジスタ１３１は、現在プロセッサが実行中の割り込みに設定されたグループ番号を保持する。グループ番号レジスタ１３１は、現在保持しているグループ番号を、カレントグループ番号ＣＵＲ＿ＮＵＭとして、選択回路１３３と履歴管理バッファ１０４とにそれぞれ出力する。グループ番号レジスタ１３１は、割り込み受け付け信号ＩＮＴＡＣＫが活性化されると、記憶するグループ番号を、発生グループ番号ＮＧＥＮ＿ＮＵＭで更新する。言い換えると、記憶するグループ番号を、新たに受け付ける割り込みに設定されたグループ番号で更新する。グループ番号レジスタ１３１は、復帰命令実行信号ＲＥＴＥＸが活性化されると、記憶するグループ番号を、復帰グループ番号ＲＥＴ＿ＮＵＭで更新する。
【００３０】
メモリ領域設定レジスタ１３２（１）〜（ｍ）は、グループ１〜ｍのそれぞれに対応して設けられている。各メモリ領域設定レジスタ１３２は、各グループに対応する処理でアクセス可能なメモリ領域に関する情報を保持する。各メモリ領域設定レジスタ１３２は、アクセス可能なメモリ領域に関する情報として、そのメモリ領域の先頭アドレスと終了アドレスとの組合せを保持している。各メモリ領域設定レジスタ１３２は、アクセス可能なメモリ領域が複数の領域に分散しているときには、その分散された領域のそれぞれについて、その先頭ドレスと終了アドレスとの組合せを保持する。各メモリ領域設定レジスタ１３２が保持するメモリ領域に関する情報は、各割り込みが使用するメモリ領域に応じて、任意に書き換え可能である。
【００３１】
選択回路１３３は、グループ番号レジスタ１３１が保持するグループ番号が「０」以外のときには、そのグループ番号に対応するメモリ領域設定レジスタ１３２を選択し、その選択されたメモリ領域設定レジスタ１３２が保持する、アクセス可能なメモリ領域に関する情報を、アドレスバス監視部１０６に出力する。選択回路１３３は、グループ番号レジスタ１３１が保持するグループ番号が「０」であるときには、メモリ領域に関する情報として、アクセス可能なメモリ範囲が制限されないことを示し、メモリ保護なしで実行されることを示すＮＵＬＬを出力する。
【００３２】
アドレスバス監視部１０６は、アドレスバスを監視し、入力するメモリ領域に関する情報に基づいて、メモリ保護違反の発生の有無を判断する。アドレスバス監視部１０６は、メモリ情報生成回路１０３が出力する、アクセス可能なメモリ領域に関する情報がＮＵＬＬ以外であるときには、入力するメモリ領域に関する情報で示されるアドレス以外のアドレスに対するアクセスがあるか否かを検出する。アドレスバス監視部１０６は、アクセス可能なメモリ領域外に対するメモリアクセスを検出すると、不正メモリアクセスがあったとして、メモリ保護違反が発生した旨の割り込みを発生し、その旨の割り込みをプロセッサに入力する。プロセッサは、メモリ保護違反が発生した旨の割り込みを入力すると、それに対応した処理を実行する。アドレスバス監視部１０６は、入力するメモリ領域に関する情報がＮＵＬＬであるときには、その処理では全てのメモリ領域にアクセス可能であることから、不正アクセスの有無を検出しない。
【００３３】
図２は、メモリ保護装置１００の各部の動作をタイミングチャートで示している。以下、メモリ保護装置１００が、図２に示すように動作する例について、各部の動作を詳細に説明する。なお、ここでは、各割り込みに設定されているグループ番号は、以下の通りであるとする。割り込みＩＮＴ（１）は、グループ４に設定され、割り込みＩＮＴ（２）は、グループ５に設定され、割り込みＩＮＴ（３）は、グループ２に設定されている。また、割り込みＩＮＴ（８）は、ＯＳ割り込みであり、グループ０に設定されている。
【００３４】
フェーズＰ１では、プロセッサは、割り込みＩＮＴ（３）に対応する処理を実行している。この状態では、グループ番号レジスタ１３１は、割り込みＩＮＴ（３）に対応するグループ番号「２」を保持し、カレントグループ番号ＣＵＲ＿ＮＵＭ「２」を出力している。また、選択回路１３３は、グループ番号「２」に対応してメモリ領域設定レジスタ１３２（２）を選択している。アドレスバス監視部１０６は、メモリ領域設定レジスタ１３２（２）が保持するメモリ領域に関する情報に基づいて、アドレスバスを監視し、グループ「２」に対応したメモリ保護機能を実現する。
【００３５】
フェーズＰ１では、次にプロセッサによって受け付けられるべき割り込みとして割り込みＩＮＴ（１）が発生している。グループ番号生成回路１０１は、その割り込みＩＮＴ（１）に対応するグループ番号設定レジスタ１１１（１）が保持するグループ番号「４」を、発生グループ番号ＮＧＥＭ＿ＮＵＭとして出力する。履歴記憶部１４１は、グループ番号を記憶していない状態であり、ライトポインタ１４２は履歴記憶部１４１の先頭アドレスを示す「エントリ１」を保持している。このとき、リードポインタ１４３は、読み出すべきアドレスがないことを示す「エントリ０」を保持し、履歴管理バッファ１０４は、メモリ保護なしを示すグループ番号「０」を復帰グループ番号ＲＥＴ＿ＮＵＭ（図２では図示せず）として出力している。
【００３６】
プロセッサによって割り込みＩＮＴ（１）が受け付けられると、プロセッサは、フェーズＰ１で行っていた処理を中断し、新たに受け付けた割り込みＩＮＴ（１）に対応する処理を実行するフェーズＰ２へ移行する。このとき、履歴管理バッファ１０４では、活性化状態となった割り込み受け付け信号ＩＮＴＡＣＫに基づいて、ライトポインタ１４２が示す履歴記憶部１４１の「エントリ１」に、カレントグループ番号ＣＵＲ＿ＮＵＭ「２」が記憶され、ライトポインタ１４２及びリードポインタ１４３の値がインクリメントされる。
【００３７】
フェーズＰ１からフェーズＰ２へ移行する際には、メモリ情報生成回路１０３では、グループ番号レジスタ１３１が保持するグループ番号が、セレクタ１０２を介して入力する発生グループ番号ＮＧＥＮ＿ＮＵＭ「４」で更新され、選択回路１３３は、更新されたグループ番号「４」に従って、メモリ領域設定レジスタ１３２（４）を選択する。アドレスバス監視部１０６は、メモリ領域設定レジスタ１３２（４）が保持するメモリ領域に関する情報に基づいて、アドレスバスを監視し、フェーズＰ２では、グループ番号「４」に対応するメモリ保護機能が実現する。
【００３８】
割り込みＩＮＴ（１）の処理が終了し、プロセッサが復帰命令を発生すると、中断したフェーズＰ１の処理を再開するフェーズＰ３へ移行する。フェーズＰ２では、リードポインタ１４３が保持するアドレスが「エントリ１」となることから、履歴管理バッファ１０４は、履歴記憶部１４１の「エントリ１」に記憶されたグループ番号「２」を、復帰グループ番号ＲＥＴ＿ＮＵＭとして出力している。メモリ情報生成回路１０３では、活性化状態となった復帰命令実行信号ＲＥＴＥＸに基づいて、グループ番号レジスタ１３１が保持するグループ番号が、セレクタ１０２を介して入力する復帰グループ番号ＲＥＴ＿ＮＵＭ「２」で更新され、選択回路１３３は、更新されたグループ番号「２」に従って、メモリ領域設定レジスタ１３２（２）を選択する。これにより、アドレスバス監視部１０６は、フェーズＰ１と同様に、メモリ領域設定レジスタ１３２（２）が保持するメモリ領域に関する情報に基づいて、アドレスバスを監視し、フェーズＰ３では、グループ番号「２」に対応するメモリ保護機能が実現する。
【００３９】
フェーズＰ２からフェーズＰ３へ移行する際には、履歴管理バッファ１０４では、活性化状態となった復帰命令実行信号ＲＥＴＥＸに基づいて、ライトポインタ１４２及びリードポインタ１４３の値がデクリメントされる。このため、ライトポインタ１４２は、再び「エントリ１」を保持し、リードポインタ１４３は、「エントリ０」を保持する。
【００４０】
フェーズＰ３では、次にプロセッサによって受け付けられるべき割り込みとして割り込みＩＮＴ（８）が発生している。グループ番号生成回路１０１は、その割り込みＩＮＴ（８）に対応するグループ番号設定レジスタ１１１（８）が保持する、メモリ保護なしを示すグループ番号「０」を、発生グループ番号ＮＧＥＭ＿ＮＵＭとして出力する。プロセッサによって割り込みＩＮＴ（８）が受け付けられると、フェーズＰ３で実行していた処理は再び中断され、新たに受け付けた割り込みＩＮＴ（８）に対応する処理を実行するフェーズＰ４へ移行する。
【００４１】
フェーズＰ３からフェーズＰ４へ移行する際には、フェーズＰ１からフェーズＰ２へ移行する際と同様に、履歴記憶部１４１の「エントリ１」にカレントグループ番号ＣＵＲ＿ＮＵＭ「２」が記憶され、ライトポインタ１４２及びリードポインタ１４３の値がインクリメントされる。また、グループ番号レジスタ１３１が保持するグループ番号が、発生グループ番号ＮＧＥＮ＿ＮＵＭ「０」で更新され、選択回路１３３は、メモリ保護なしを示すＮＵＬＬを出力する。これにより、フェーズＰ４では、メモリ保護機能がない状態で、割り込みＩＮＴ（８）に対応する処理が実行される。
【００４２】
フェーズＰ４では、次にプロセッサによって受け付けられるべき割り込みとして割り込みＩＮＴ（１）が再び発生している。この割り込みＩＮＴ（１）が再びプロセッサによって受け付けられ、割り込みＩＮＴ（８）に対応する処理を中断して、割り込みＩＮＴ（１）に対応する処理を実行するフェーズＰ５に移行する際には、履歴記憶部１４１の「エントリ２」にカレントグループ番号ＣＵＲ＿ＮＵＭ「０」が記憶され、ライトポインタ１４２及びリードポインタ１４３の値がインクリメントされる。また、グループ番号レジスタ１３１が保持するグループ番号が、発生グループ番号ＮＧＥＮ＿ＮＵＭ「４」で更新され、アドレスバス監視部１０６は、フェーズＰ２と同様に、メモリ領域設定レジスタ１３２（４）が保持するメモリ領域に関する情報に基づいてアドレスバスを監視し、フェーズＰ５では、グループ番号「４」に対応するメモリ保護機能が実現する。
【００４３】
フェーズＰ５では、次にプロセッサによって受け付けられるべき割り込みとして、割り込みＩＮＴ（２）が発生している。グループ番号生成回路１０１は、グループ番号設定レジスタ１１１（２）が保持するグループ番号「５」を、発生グループ番号ＮＧＥＮ＿ＮＵＭとして出力する。割り込みＩＮＴ（２）がプロセッサによって受け付けられ、その割り込みに対応した処理を実行するフェーズＰ６へ移行する際には、履歴記憶部１４１の「エントリ３」にカレントグループ番号ＣＵＲ＿ＮＵＭ「４」が記憶され、グループ番号レジスタ１３１が保持するグループ番号が、発生グループ番号ＮＧＥＮ＿ＮＵＭ「５」で更新される。アドレスバス監視部１０６は、メモリ領域設定レジスタ１３２（５）が保持するメモリ領域に関する情報に基づいてアドレスバスを監視し、フェーズＰ６では、グループ番号「５」に対応するメモリ保護機能が実現する。
【００４４】
フェーズＰ６において、プロセッサが復帰命令を発生すると、フェーズＰ５で中断した割り込み１に対応する処理を再開するフェーズＰ７へ移行する。このときには、フェーズＰ２からフェーズＰ３へ移行する際と同様に、リードポインタ１４３が示す「エントリ３」に記憶されたグループ番号「４」によってグループ番号レジスタ１３１が保持するグループ番号が更新され、選択回路１３３は、メモリ領域設定レジスタ１３２（４）を選択する。アドレスバス監視部１０６は、フェーズＰ５と同様に、メモリ領域設定レジスタ１３２（４）が保持するメモリ領域に関する情報に基づいて、アドレスバスを監視し、フェーズＰ７では、グループ番号「５」に対応するメモリ保護機能が実現する。また、履歴管理バッファ１０４では、ライトポインタ１４２及びリードポインタ１４３の値がデクリメントされる。
【００４５】
以降、フェーズＰ７において、プロセッサが復帰命令を発生させると、グループ番号レジスタ１３１は、履歴記憶部１４１の「エントリ２」に記憶されたグループ番号「０」で更新され、フェーズＰ８では、メモリ保護機能なしで割り込みＩＮＴ（８）に対応する処理が再開される。また、フェーズＰ８において、プロセッサが復帰命令を発生させると、グループ番号レジスタ１３１は、履歴記憶部１４１の「エントリ１」に記憶されたグループ番号「２」で更新され、フェーズＰ９では、フェーズＰ３で中断した割り込みＩＮＴ（３）に対応した処理が、グループ「２」に対応するメモリ保護機能の下で再開される。
【００４６】
本実施形態例では、メモリ情報生成回路１０３は、各グループに対応して、そのグループに設定された割り込みに対応する処理でアクセス可能なメモリ領域に関する情報を記憶しており、グループ番号レジスタ１３１が保持するグループ番号に応じて、現在処理中の割り込みに対応する処理でアクセス可能なメモリ領域に関する情報を選択してこれを出力する。このため、例えば、グループごとにプログラムが作成され、他のグループにおけるメモリの使用状況をあらかじめ知ることができないような場合でも、あるグループに設定された割り込みに対応する処理がデータ領域として使用するメモリ領域が、他のグループに設定された割り込みに対応する処理によって書き換えられる事態を防止して、メモリ保護を図ることができる。
【００４７】
従来は、割り込みに対応した処理の開始の際と、割り込みに対応した処理から復帰する際とにおいて、それぞれ、ＯＳが、次に実行される処理でアクセス可能なメモリ範囲を設定して、メモリ保護を図っていたため、メモリ保護を実現するのに要する時間が長く、割り込み応答性が悪化した。本実施形態例では、ＯＳを介さずに、ハードウェアでメモリ保護を実現しているため、メモリ保護を実現するのに要する時間が短く、高い割り込み応答性を維持できる。このため、高いリアルタイム性が要求されるシステムにおいても、メモリ保護を図りつつ、各処理を実行することができ、メモリ保護違反を起してプログラムやデータが破壊される事態を防止して、システムの信頼性を向上させることができる。
【００４８】
本実施形態例では、プロセッサが新たに割り込みを受け付ける際には、現在実行中の割り込みに設定されたグループ番号を履歴管理バッファ１０４に格納して、グループ番号レジスタ１３１を、新たに受け付ける割り込みに設定されたグループ番号で更新する。また、現在処理中の割り込みが復帰命令を発生した際には、グループ番号レジスタ１３１を、履歴管理バッファ１０４に格納された、復帰命令を発生した現在実行中の割り込みの１つ前に実行していた割り込みに対応するグループ番号で更新する。このように構成することで、割り込みが多重に発生したような場合にも、メモリ情報生成回路１０３は、復帰先の割り込みに設定されたグループに対応する、アクセス可能なメモリ領域に関する情報を正しく設定することができる。
【００４９】
なお、上記実施形態例では、グループ番号生成回路１０１が、各割り込みに対応して設けられたグループ番号設定レジスタ１１１を参照して、発生した割り込みに対応するグループ番号を生成する例について説明したが、これに代えて、グループ番号生成回路１０１内に、各割り込みとグループ番号とを対応付けたテーブルを用意しておき、そのテーブルを参照してグループ番号を生成するようにしてもよい。また、履歴管理バッファ１０４は、現在実行中の割り込みよりも前に実行された割り込みに設定されたグループ番号の履歴を保持する構成であればよく、履歴記憶部１４１と、ライトポインタ１４２及びリードポインタ１４３とを用いる構成には限定されない。
【００５０】
上記実施形態例では、ＯＳレベルの割り込みを、特別な割り込みとしてグループ０に設定したが、これに代えて、ＯＳレベルの割り込みとユーザレベルの割り込みとを特に区別せずに、ＯＳレベルの割り込みを、グループ番号「１」〜「ｍ」の何れかのグループに設定することもできる。この場合、ＯＳレベルの割り込みに割り当てられたグループに対応するメモリ領域設定レジスタ１３２は、そのグループの割り込みに対応する処理がアクセス可能なメモリ領域に関する情報として、メモリ領域の全領域を示す情報、或いは、ＮＵＬＬを保持するように構成することで、ＯＳレベルの割り込みに対応する処理では、アドレスバス監視部１０６が、メモリ保護違反を検出しない構成とすることができる。
【００５１】
以上、本発明をその好適な実施形態例に基づいて説明したが、本発明のメモリ保護装置は、上記実施形態例にのみ限定されるものではなく、上記実施形態例の構成から種々の修正及び変更を施したものも、本発明の範囲に含まれる。
【図面の簡単な説明】
【００５２】
【図１】本発明の一実施形態例のメモリ保護装置を示すブロック図。
【図２】図１のメモリ保護装置の各部の動作を処理の進行と共に示すタイミングチャート。
【図３】割り込みの発生に伴って、プロセッサが実行する処理が変化する様子を示すタイミングチャート。
【符号の説明】
【００５３】
１００：メモリ保護装置
１０１：グループ番号生成回路
１０２：セレクタ
１０３：メモリ情報生成回路
１０４：履歴管理バッファ
１０５：制御部
１０６：アドレスバス監視部
１１１：グループ番号設定レジスタ
１３１：グループ番号レジスタ
１３２：メモリ領域設定レジスタ
１３３：選択回路
１４１：履歴記憶部
１４２：ライトポインタ
１４３：リードポインタ
【図１】
2005275841.tif 000003
【図２】
2005275841.tif 000004
【図３】
2005275841.tif 000005