(57)【特許請求の範囲】
【請求項１】
第１動作権限レベル又は前記第１動作権限レベルよりも高い動作権限レベルの第２動作権限レベルで複数のプログラムを実行する演算回路と、
前記演算回路に接続され、前記演算回路の周辺装置に対するアクセスの制御を行う周辺装置保護回路と、を備え、
前記周辺装置保護回路は、
前記周辺装置に対するアクセスの許可又は不許可を指定する設定値を含む第１保護設定値と、
前記第１保護設定値よりも高い保護レベルとして設定され、前記周辺装置に対するアクセスの許可又は不許可を指定する設定値を含む第２保護設定値と、
前記演算回路からの前記周辺装置に対するアクセスが、前記第１動作権限レベルあるいは第２動作権限レベルかどうかを判定し、前記第１動作権限レベルであることを示す第１判定信号と、前記第２動作権限レベルであることを示す第２判定信号とを出力する権限判定回路と、
前記第１判定信号と前記第１保護設定値とを参照し、前記演算回路から不許可となっている前記第１動作権限レベルのアクセスがあるかどうかを示す第３の判定信号を生成し、前記第１及び第２判定信号と前記第２保護設定値とを参照し、前記演算回路から不許可となっている前記第１または第２動作権限レベルのアクセスがあるかどうかを示す第４の判定信号を生成し、前記第３及び第４の判定信号を参照し、不許可となっているアクセスがある場合にはアクセス不許可を、ない場合にはアクセス許可を示すアクセス許可／不許可情報を生成する設定選択回路と、
前記演算回路から出力される前記周辺装置に対するアクセス情報と前記アクセス許可／不許可情報とを入力して前記演算回路から前記周辺装置へのアクセスの許可／不許可を判断するアクセス保護回路と、
を有するデータ処理装置。
【請求項２】
前記演算回路は、前記複数のプログラム毎に前記第１保護設定値又は前記第２保護設定値を変更する請求項１に記載のデータ処理装置。
【請求項３】
前記演算回路は、前記第２動作権限レベルで動作している期間に前記第１保護設定値を変更する請求項１又は２に記載のデータ処理装置。
【請求項４】
前記演算回路は、前記第２動作権限レベルで動作している期間に前記第２保護設定値を変更する請求項１乃至３のいずれか１項に記載のデータ処理装置。
【請求項５】
前記演算回路は、前記第１動作権限レベルで動作している期間は前記第１保護設定値及び前記第２保護設定値を変更することができない請求項１乃至４のいずれか１項に記載のデータ処理装置。
【請求項６】
前記演算回路は、前記第２動作権限レベルで動作する期間において予め準備された上位権限移行プログラムを実行することで、前記第２保護設定値よりも高い保護レベルとして設定され、前記第１及び第２動作権限レベルで動作する前記演算回路の前記周辺装置に対するアクセスの許可又は不許可を指定する第３保護設定値を変更する請求項１乃至５のいずれか１項に記載のデータ処理装置。
【請求項７】
前記周辺装置保護回路は、同じ動作権限レベルで動作する前記複数のプログラムにおいて共通して用いられる前記第１保護設定値と前記第２保護設定値のうち少なくとも一方の設定値を含む共通保護設定値を有し、
前記設定選択回路は、前記動作権限レベルに応じて前記共通保護設定値を参照し、前記演算回路の前記周辺装置に対するアクセス許可／不許可情報を生成する請求項１乃至６に記載のデータ処理装置。
【請求項８】
前記周辺装置保護回路は、前記第１保護設定値を格納する第１の設定レジスタと前記第２保護設定値を格納する第２の設定レジスタとを備える設定レジスタ群を有する請求項１乃至７のいずれか１項に記載のデータ処理装置。
【請求項９】
前記設定レジスタ群は、前記共通保護設定値を格納するカバーレジスタを有する請求項７に記載のデータ処理装置。
【請求項１０】
前記設定レジスタ群は、複数の前記周辺装置のそれぞれに対して設けられる請求項７又は８に記載のデータ処理装置。
【請求項１１】
前記アクセス保護回路は、
前記周辺装置のアドレスを示す周辺装置アドレスと前記アクセス情報に含まれる前記アクセス先アドレスとの比較一致結果信号を出力するアクセス先判定回路と、
前記比較一致結果信号と前記設定選択回路から出力される前記アクセス許可／不許可情報とに基づき前記周辺装置に対するアクセスの許可又は不許可を示すアクセス制御情報を出力する許可判定回路と、
前記アクセス制御情報に基づき前記アクセス情報の前記周辺装置に対する送信を行うか否かを制御するアクセス制御回路と、
を有する請求項１乃至１０のいずれか１項に記載のデータ処理装置。
【請求項１２】
第１動作権限レベル又は前記第１動作権限レベルよりも高い動作権限レベルの第２動作権限レベルで複数のプログラムを実行する演算回路と、
前記周辺装置に対するアクセスの許可又は不許可を指定する設定値を含む第１保護設定値と、前記第１保護設定値よりも高い保護レベルとして設定され、前記周辺装置に対するアクセスの許可又は不許可を指定する設定値を含む第２保護設定値と、に基づき前記演算回路の周辺装置に対するアクセスの制御を行う周辺装置保護回路と、
を備えるデータ処理装置の周辺装置保護方法であって、
前記演算回路からの前記周辺装置に対するアクセスが、前記第１動作権限レベルあるいは第２動作権限レベルかどうかを判定し、前記第１動作権限レベルであることを示す第１判定信号と、前記第２動作権限レベルであることを示す第２判定信号とを出力し、
前記第１判定信号と前記第１保護設定値とを参照し、前記演算回路から不許可となっている前記第１動作権限レベルのアクセスがあるかどうかを示す第３の判定信号を生成し、
前記第１及び第２判定信号と前記第２保護設定値とを参照し、前記演算回路から不許可となっている前記第１または第２動作権限レベルのアクセスがあるかどうかを示す第４の判定信号を生成し、
前記第３及び第４の判定信号を参照し、不許可となっているアクセスがある場合にはアクセス不許可を、ない場合にはアクセス許可を示すアクセス許可／不許可情報を生成するデータ処理装置における周辺装置保護方法。
【請求項１３】
前記演算回路は、前記複数のプログラム毎に前記第１保護設定値又は前記第２保護設定値を変更する請求項１２に記載のデータ処理装置における周辺装置保護方法。
【請求項１４】
前記演算回路は、前記第２動作権限レベルで動作している期間に前記第１保護設定値を変更する請求項１２又は１３に記載のデータ処理装置における周辺装置保護方法。
【請求項１５】
前記演算回路は、前記第２動作権限レベルで動作している期間に前記第２保護設定値を変更する請求項１２乃至１４のいずれか１項に記載のデータ処理装置における周辺装置保護方法。
【請求項１６】
前記演算回路は、前記第１動作権限レベルで動作している期間は前記第１保護設定値及び前記第２保護設定値を変更することができない請求項１２乃至１５のいずれか１項に記載のデータ処理装置における周辺装置保護方法。
【請求項１７】
前記演算回路は、前記第２動作権限レベルで動作する期間において予め準備された上位権限移行プログラムを実行することで、前記第２保護設定値よりも高い保護レベルとして設定され、前記第１及び第２動作権限レベルで動作する前記演算回路の前記周辺装置に対するアクセスの許可又は不許可を指定する第３保護設定値を変更する請求項１２乃至１６のいずれか１項に記載のデータ処理装置における周辺装置保護方法。
【請求項１８】
前記周辺装置保護回路は、前記複数のプログラムにおいて共通して用いられる前記第１保護設定値と前記第２保護設定値のうち少なくとも一方の設定値を含む共通設定値を有し、
前記動作権限レベルに応じて前記共通設定値を参照し、前記演算回路の前記周辺装置に対するアクセス許可／不許可を判定する請求項１２乃至１７に記載のデータ処理装置における周辺装置保護方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明にかかるデータ処理装置及びデータ処理装置における周辺装置保護方法は、特にプログラムを実行する演算回路と、演算回路から周辺装置へのアクセスの制御を行う周辺装置保護回路とを有するデータ処理装置及びデータ処理装置における周辺装置保護方法に関する。
【背景技術】
【０００２】
プログラムを実行する演算回路と、演算回路によってアクセスされる周辺装置とを有するデータ処理装置では、実行するプログラムに応じて演算回路がアクセス可能な周辺装置を制限することがある。周辺装置へのアクセスを制限することで、例えば、現在実行中のプログラムが使用する周辺装置に対して不正な動作を行う他のプログラムからアクセスがされることを防止することができる。
【０００３】
このようなアクセス制限を行うデータ処理装置の一例が特許文献１に開示されている。特許文献１では、周辺装置のひとつであるメモリに対する保護方式が提案されている。特許文献１は、複数のメモリ保護マップレジスタと、これらメモリ保護マップレジスタを選択する複数のメモリ保護制御ビットとを設ける。そして、メモリ保護マップレジスタの内容に対応するメモリ領域へのアクセスを制限することで、メモリ保護マップレジスタの内容に対応するメモリ領域に格納されているデータが不正な変更を防止する。また、メモリ保護制御ビットの内容を制御して、使用するメモリ保護マップレジスタの組み合わせを選択する。これにより、演算回路において実行されているタスクの切り替え時にメモリ保護マップの切り替えを行う。
【０００４】
また、特許文献２には、バスを介してバスマスタ、バススレーブ及び周辺装置がそれぞれ接続されるデータ処理システムにおいて、バスマスタ及びバススレーブの周辺装置に対するアクセスを制限する方法が開示されている。特許文献２では、バスマスタに対する権限及び信頼属性と、各周辺装置に対するアクセス制御と、を信頼済みバスマスタが動的に更新することで、データ処理システムにおける周辺装置へのアクセスの信頼性を向上させている。
【特許文献１】特開昭６０−２３０２４８号公報
【特許文献２】特表２００６−５２３３４７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１において開示されている技術では、周辺装置に対するアクセス制限の設定をシステム上において実行されるプログラムのそれぞれで行わなければならない。例えば、プログラムがＯＳのような信頼済みのものであっても、ユーザーアプリケーションのような信頼済みでないものであっても、それぞれのプログラム毎に行わなければならない。また、特許文献２では、信頼済みのバスマスタが信頼済みでないバスマスタ等のアクセス制限を設定する。しかし、特許文献２においても、アクセス制限に関する設定は、システムの設計者あるいはシステム上で実行されるプログラムの設計者が行う。そのため、信頼性を向上させるためには、各プログラムあるいはシステムにおいて確実な設定がなされていなければならない。しかしながら、アクセス制限の設定そのものに誤りがあった場合、特許文献１、２に開示されている技術では、誤りに対してそれを補償するものがないため、十分なシステムの信頼性を確保できない問題がある。特に、信頼済みでないプログラムが複数のベンダーにより供給されるシステムでは、アクセス制限の設定に誤りが混入する可能性が高く信頼性を大きく低下させる問題がある。
【０００６】
また、レジスタ等にアクセス制限に関する設定を格納した場合、アプリケーションにおいてなされた設定が正しいものであったとしても、ソフトエラー等のハードウェアのエラーにおいて設定が破壊されることがある。特許文献１、２に開示される方法では、アクセス制限に関する設定がプログラムあるいはシステム毎に定められるだけである。そのため、このようなハードウェアのエラーに起因するアクセス制限の設定の破壊が生じた場合、破壊された設定に基づきシステムが動作するため、誤動作が発生するおそれがある。つまり、特許文献１、２に開示される方法では、ハードウェアのエラーに起因する問題により、十分な信頼性を確保できない問題がある。
【課題を解決するための手段】
【０００７】
本発明の一態様は、第１動作権限レベル又は前記第１動作権限レベルよりも高い動作権限レベルの第２動作権限レベルで複数のプログラムを実行する演算回路と、前記演算回路に接続され、前記演算回路の周辺装置に対するアクセスの制御を行う周辺装置保護回路と、を備え、前記周辺装置保護回路は、前記周辺装置に対するアクセスの許可又は不許可を指定する設定値を含む第１保護設定値と、前記第１保護設定値よりも高い保護レベルとして設定され、前記周辺装置に対するアクセスの許可又は不許可を指定する設定値を含む第２保護設定値と、前記演算回路が前記第１動作権限レベルで動作中に前記周辺装置に対してアクセスを実行する場合には前記第１及び第２保護設定値の双方ともに参照してアクセス許可／不許可情報を生成し、前記演算回路が前記第２動作権限レベルで動作中に前記周辺装置に対してアクセスを実行する場合には前記第２保護設定値を参照して前記アクセス許可／不許可情報を生成する設定選択回路と、前記演算回路から出力される前記周辺装置に対するアクセス情報と前記アクセス許可／不許可情報とを入力して前記演算回路から前記周辺装置へのアクセスの許可／不許可を判断するアクセス保護回路と、を有するデータ処理装置である。
【０００８】
また、本発明の別の態様は、第１動作権限レベル又は前記第１動作権限レベルよりも高い動作権限レベルの第２動作権限レベルで複数のプログラムを実行する演算回路と、前記周辺装置に対するアクセスの許可又は不許可を指定する設定値を含む第１保護設定値と、前記第１保護設定値よりも高い保護レベルとして設定され、前記周辺装置に対するアクセスの許可又は不許可を指定する設定値を含む第２保護設定値と、に基づき前記演算回路の周辺装置に対するアクセスの制御を行う周辺装置保護回路と、を備えるデータ処理装置のアクセス保護方法であって、前記演算回路が前記第１動作権限レベルで動作中に前記周辺装置に対してアクセスを実行する場合には前記第１及び第２保護設定値の双方ともに参照してアクセス許可／不許可を判定し、前記演算回路が前記第２動作権限レベルで動作中に前記周辺装置に対してアクセスを実行する場合には前記第２保護設定値を参照して前記アクセス許可／不許可を判定するデータ処理装置におけるアクセス保護方法である。
【０００９】
本発明にかかるデータ処理装置及びデータ処理装置におけるアクセス保護方法は、演算回路から周辺装置に対してアクセスが発生した場合に、第１保護設定値又は／及び第２保護設定値と動作権限レベルとに基づきアクセスを制御する周辺装置保護回路を有する。より具体的には、周辺装置保護回路は、第１動作権限レベルで演算回路が動作する場合に第１及び第２保護設定値を参照してアクセス許可／不許可情報を生成し、第２動作権限レベルで演算回路が動作する場合に第２保護設定値を参照してアクセス許可／不許可情報を生成する。これにより、例えば、第１保護設定値が誤っていた場合であっても、第２保護設定値においてアクセスが制限されていれば、第１動作権限レベルによる周辺装置に対するアクセスを防止することができる。つまり、本発明のデータ処理装置では、上位レベルの保護設定の内容を下位レベルの保護設定に反映させる。これにより、本発明によれば、データ処理装置の信頼性を向上させることができる。
【発明の効果】
【００１０】
本発明のデータ処理装置によれば、アクセス制限の設定に誤りがあった場合であっても高い信頼性を確保することができる。
【発明を実施するための最良の形態】
【００１１】
実施の形態１
以下、図面を参照して本発明の実施の形態について説明する。実施の形態１にかかるデータ処理装置１のブロック図を図１に示す。図１に示すように、データ処理装置１は、演算回路（例えば、ＣＰＵ：Central Processing Unit）１０、記憶装置（例えば、メモリ）１１、周辺装置保護回路１２、周辺装置Ａ〜Ｄ、データバス、周辺バスを有する。ＣＰＵ１０は、データバスを介してメモリ１１及び周辺装置保護回路１２と接続される。また、ＣＰＵ１０は、周辺装置保護回路１２を介して周辺バスと接続される。周辺バスには周辺装置Ａ〜Ｄが接続される。なお、図１では、４つの周辺装置を示したが、周辺バスにはさらに多くの周辺装置が接続されていても良い。また、図１では、周辺装置保護回路１２をデータバスと周辺バスとの間に配置したが、周辺装置保護回路１２は、ＣＰＵ１０と周辺装置との間に配置されていれば良く、例えば周辺装置と周辺バスとの接続箇所にそれぞれ配置されていても良い。また、ＣＰＵ１０とデータバスの間に配置されていても良く、この場合、データバスと周辺バスとは同一のバスであり、周辺装置保護回路１２によってメモリ１１へのアクセスが制限されても良い。
【００１２】
ＣＰＵ１０は、プログラムを実行する演算部である。また、ＣＰＵ１０は、実行するプログラムに応じてアクセス制限情報、動作権限情報及びアクセス情報を出力する。アクセス制限情報は、実行するプログラム毎に指定される動作権限レベル毎の周辺装置に対するアクセスの許可又は不許可を指定する情報である。動作権限情報は、実行するプログラムに応じて動作権限レベルを示す情報である。動作権限レベルは、ＣＰＵ１０回路の動作権限を示すものであり、ＣＰＵ１０がアクセス可能な周辺装置の範囲を示すものである。アクセス情報は、データバス上に出力される情報であって、アクセス対象となる前記周辺装置のアドレスを示すアクセス先アドレスを含む情報である。
【００１３】
なお、動作権限レベルは、第１動作権限レベルと第１動作権限レベルよりも高い動作権限レベルの第２動作権限レベルを含む。以下の説明では、データ処理装置１が３段階の保護レベル（例えば、ユーザー権限、ＯＳ権限、管理権限）を有する例について説明する。そこで、以下の説明における動作権限レベルは、３つの動作権限レベルのうち２つを参照し、低いレベルの動作権限レベルが第１動作権限レベルに相当するものとし、高いレベルの動作権限レベルが第２動作権限レベルに相当するものとする。
【００１４】
また、アクセス制限情報には第１保護設定値及び第２保護設定値が含まれる。第１保護設定値は、ＣＰＵ１０の周辺装置に対するアクセスの許可又は不許可を指定する設定値を含む。第２保護設定値は、第１保護設定値よりも高い保護レベルとして設定され、ＣＰＵ１０の周辺装置に対するアクセスの許可又は不許可を指定する設定値を含む。以下の説明では、データ処理装置１が３段階の保護レベル（例えば、レベル１、レベル２、レベル３）を有する例について説明する。そこで、以下の説明における保護設定値は、３つの保護設定値のうち２つを参照し、低い動作権限レベルに対応して設けられる設定値が第１保護設定値に相当するものとし、高い動作権限レベルに対応して設けられる設定値が第２保護設定値に相当するものとする。
【００１５】
メモリ１１は、ＣＰＵ１０において実行されるプログラムの格納領域、及び、ＣＰＵ１０において実行されるプログラムの処理で生じたデータの一時記憶領域として用いられる。
【００１６】
周辺装置保護回路１２は、アクセス制限情報、アクセス情報及び動作権限情報に基づきＣＰＵ１０から周辺装置Ａ〜Ｄに対して送信されるアクセス情報を周辺装置Ａ〜Ｄに伝達するか否かを制御する。より具体的には、周辺装置保護回路１２は、アクセス制限情報、アクセス情報及び動作権限情報が入力され、動作権限情報により示される動作権限レベルがアクセス制限情報において許可とされるレベル以上であった場合に、周辺装置Ａ〜Ｄに対するアクセス情報の送信を許可する。周辺装置保護回路１２の詳細は後述する。
【００１７】
周辺装置Ａ〜Ｄは、ＣＰＵ１０によってアクセスされる各種機能が実現される装置である。例えば、動作クロックの生成及び周波数の制御を行うクロック制御回路、シリアルインタフェース回路、又は、割り込みコントローラなどの回路である。なお、メモリ１１は、周辺装置の１つとして含めることが可能である。
【００１８】
ここで、周辺装置保護回路１２の詳細について説明する。周辺装置保護回路１２のブロック図を図２に示す。図２に示すように、周辺装置保護回路１２は、周辺装置保護設定回路２０とアクセス保護回路３０とを有する。周辺装置保護設定回路２０は、複数の設定レジスタ群２１ａ〜２１ｄ、複数の設定選択回路２２ａ〜２２ｄを有する。
【００１９】
設定レジスタ群２１ａ〜２１ｄは、保護対象となる周辺装置の数に対応して設けられる数が決まる。図２に示す例では、保護対象となる周辺装置が４つであるため、設定レジスタ群も４つ設けられる。設定レジスタ群２１ａ〜２１ｄは同じ構成であるため、設定レジスタ群２１ａを例に設定レジスタ群について説明する。設定レジスタ群２１ａは第１〜第３の設定レジスタを有する。第１〜第３の設定レジスタには、ＣＰＵ１０から送信されるアクセス制限情報に含まれる動作権限レベル毎の周辺装置に対するアクセスの許可又は不許可を示す設定値が格納される。より具体的には、第１の設定レジスタには、動作権限情報が最下位の権限レベルを示す場合における周辺装置に対する許可又は不許可の設定値が格納される。第２の設定レジスタには、動作権限情報が最上位と最下位との間の中間レベルの権限レベルを示す場合における周辺装置に対する許可又は不許可の設定値が格納される。第３の設定レジスタには、動作権限情報が最上位の権限レベルを示す場合における周辺装置に対する許可又は不許可の設定値が格納される。
【００２０】
複数の設定選択回路２２ａ〜２２ｄは、保護対象となる周辺装置の数に対応して設けられる数が決まる。図２に示す例では、保護対象となる周辺装置が４つであるため、設定選択回路も４つ設けられる。また、設定選択回路２２ａ〜２２ｄは、それぞれ設定レジスタ群２１ａ〜２１ｄに対応して設けられる。図２に示す例では、設定レジスタ群２１ａに対応して設定選択回路２２ａが設けられ、設定レジスタ群２１ｂに対して設定選択回路２２ｂが設けられている。設定選択回路２２ａ〜２２ｄは、それぞれ設定レジスタ群２１ａ〜２１ｄに格納されたアクセス制限情報を参照し、動作権限情報に含まれる動作権限レベルがアクセス制限情報において許可とされるレベル以上であった場合にアクセスを許可する状態を示すアクセス許可／不許可情報（例えば、０）を出力する。一方、動作権限情報に含まれる動作権限レベルがアクセス制限情報において許可とされるレベルよりも低いものであった場合にアクセスを不許可とする状態を示すアクセス許可／不許可情報（例えば、１）を出力する。設定選択回路２２ａ〜２２ｄの具体的構成については後述する。
【００２１】
アクセス保護回路３０は、アクセス先判定回路３１ａ〜３１ｄ、許可判定回路３２ａ〜３２ｄ、アクセス制御回路３３を有する。アクセス先判定回路３１ａ〜３１ｄは、それぞれ対応する周辺装置のアドレスを示す周辺装置アドレスが予め設定されている。そして、アクセス先判定回路３１ａ〜３１ｄは、周辺装置アドレスとアクセス情報に含まれるアクセス先アドレスとの比較一致結果信号を出力する。例えば、周辺装置アドレスとアクセス先アドレスとが一致していれば比較一致結果信号は０となり、周辺装置アドレスとアクセス先アドレスとが不一致であれば比較一致結果信号は１となる。また、本実施の形態においては、アクセス先判定回路３１ａはクロック制御回路に対応しており、アクセス先制御回路３１ｂは割り込みコントローラＩＮＴＣに対応しており、アクセス先判定回路３１ｃはＤＭＡ（Direct Memory Access）コントローラに対応しており、アクセス先判定回路３１ｄはタイマーに対応している。
【００２２】
許可判定回路３２ａ〜３２ｄは、それぞれ設定選択回路２２ａ〜２２ｄから出力されるアクセス許可／不許可情報とアクセス先判定回路が出力する比較一致結果信号とに基づき周辺装置に対するアクセスの許可又は不許可を示すアクセス制御情報を出力する。より具体的には、比較一致結果信号が一致状態（例えば、０）である周辺装置に対して、これと対応するアクセス許可／不許可情報が０を示す場合に許可状態を示すアクセス制御情報（例えば、０）を出力する。一方、比較結果一致信号又はアクセス許可／不許可情報のいずれか１つが不一致又は不許可を示している場合は、不許可状態を示すアクセス制御情報（例えば、１）を出力する。
【００２３】
アクセス制御回路３３は、アクセス制御情報に基づきアクセス情報の周辺装置に対する送信を行うか否かを制御する。本実施の形態におけるアクセス情報は、ＣＰＵ１０からデータバスを介して出力されるものであって、アクセス先アドレス、周辺アクセス要求、その他アクセス情報を含む。そして、アクセス制御回路３３には、これらのアクセス情報が入力される。アクセス制御回路３３は、許可判定回路３２ａ〜３２ｄから出力されるアクセス制御情報の値のうちいずれか１つが許可状態であれば、アクセス情報を周辺バスに出力する。一方、アクセス制御回路３３は、許可判定回路３２ａ〜３２ｄから出力されるアクセス制御情報の値の全てが不許可状態であれば、アクセス情報を遮断する。アクセス情報の遮断を行った場合アクセス制御回路３３がＣＰＵ１０に違反通知を行う構成としても良い。
【００２４】
次に、設定選択回路２２ａ〜２２ｄの構成について説明する。設定選択回路２２ａ〜２２ｄは同じ構成であるため、ここでは、設定選択回路２２ａを例に、設定選択回路の構成を説明する。設定選択回路２２ａのブロック図を図３に示す。図３に示すように、設定選択回路２２ａは、第１〜第３の権限判定回路２３ａ〜２３ｃ、ＡＮＤ回路２４、２６、２８、ＯＲ回路２５、２７、２９を有する。
【００２５】
第１の権限判定回路２３ａは、動作権限情報により示される動作権限レベルが最下位レベルを示すものか否かを判定する。この最下位レベルの動作権限レベルは、例えば、ＣＰＵ１０においてユーザープログラムが実行されているときに示されるユーザー権限である。つまり、第１の判定回路２３ａは、動作権限情報により示される動作権限レベルがユーザー権限である場合に判定結果として１を出力する。一方、動作権限情報により示される動作権限レベルがユーザー権限以外であった場合、判定結果として０を出力する。
【００２６】
第２の権限判定回路２３ｂは、動作権限情報により示される動作権限レベルが最上位レベルと最下位レベルとの中間とレベルとなる中位レベルを示すものか否かを判定する。この中位レベルの動作権限レベルは、例えば、ＣＰＵ１０においてＯＳ（Operating System）に関するタスクが実行されているときに示されるＯＳ権限である。つまり、第２の判定回路２３ｂは、動作権限情報により示される動作権限レベルがＯＳ権限である場合に判定結果として１を出力する。一方、動作権限情報により示される動作権限レベルがＯＳ権限以外であった場合、判定結果として０を出力する。
【００２７】
第３の権限判定回路２３ｃは、動作権限情報により示される動作権限レベルが最上位レベルを示すものか否かを判定する。この最上位レベルの動作権限レベルは、例えば、ＣＰＵ１０において管理プログラムが実行されているときに示される管理権限である。つまり、第３の判定回路２３ｃは、動作権限情報により示される動作権限レベルが管理権限である場合に判定結果として１を出力する。一方、動作権限情報により示される動作権限レベルが管理権限以外であった場合、判定結果として０を出力する。
【００２８】
ＡＮＤ回路２４、２６、２８は、入力される複数の信号の論理積演算結果を出力する。また、ＯＲ回路２５、２７、２９は、入力される複数の信号の論理積演算結果を出力する。ＡＮＤ回路２４には、第１の権限判定回路２３ａが出力する値と第１の設定レジスタに格納された設定値とが入力される。ＯＲ回路２５には、第１の権限判定回路２３ａが出力する値と、第２の権限判定回路２３ｂが出力する値とが入力される。ＡＮＤ回路２６には、ＯＲ回路２５が出力する値と第２の設定レジスタに格納された設定値とが入力される。ＯＲ回路２７には第１の権限判定回路２３ａが出力する値と、第２の権限判定回路２３ｂが出力する値と、第３の権限判定回路２３ｃが出力する値とが入力される。ＡＮＤ回路２８には、ＯＲ回路２７が出力する値と、第３の設定レジスタに格納された設定値とが入力される。ＯＲ回路２９には、ＡＮＤ回路２４、２６、２８が出力する値が入力され、これら入力される値の論理和演算結果をアクセス許可／不許可情報として出力する。アクセス許可／不許可情報は、値が０である場合にアクセス許可状態を示し、値が１である場合にアクセス不許可状態を示す。なお、第１〜第３の設定レジスタに格納されるアクセス情報は、格納される値が０ならばアクセス許可を示し、値が１ならばアクセス不許可を示す。
【００２９】
ここで、図４に設定選択回路２２ａの真理値表を参照して、設定選択回路２２ａの動作について説明する。図４において左側に示す設定レジスタの設定値は、レベル３の欄に示されている値が第３の設定レジスタに格納されている設定値であり、レベル２の欄に示されている値が第２の設定レジスタに格納されている設定値であり、レベル１の欄に示されている値が第１の設定レジスタに格納されている設定値である。また、右側に示すアクセス許可／不許可情報の値は、左側の設定値の状態においてどの動作権限レベルであればアクセス許可／不許可情報が許可あるいは不許可となるかを示す。
【００３０】
まず、各設定レジスタに格納される設定値が第１の設定であるときについて説明する。第１の設定では、レベル１〜レベル３の全てが０（許可状態）である。この場合、ＡＮＤ回路２４、２６、２８には対応する設定レジスタから０が入力される。そのため、ＡＮＤ回路２４、２６、２８の出力はいずれも０となる。従って、いずれの動作権限レベルであってもアクセス許可／不許可情報は０（許可状態）となる。
【００３１】
各設定レジスタに格納される設定値が第２の設定であるときについて説明する。第２の設定では、レベル１が１（不許可状態）であって、レベル２、３が０（許可状態）である。この場合、ＡＮＤ回路２４には第１の設定レジスタから１が入力される。そして、動作権限情報がユーザー権限であればＡＮＤ回路２４の出力は１となる。一方、ＡＮＤ回路２６、２８には対応する設定レジスタから０が入力される。そのため、ＡＮＤ回路２６、２８の出力はいずれも０となる。従って、動作権限レベルがユーザー権限である場合のみアクセス許可／不許可情報は１（不許可状態）となる。
【００３２】
各設定レジスタに格納される設定値が第３の設定であるときについて説明する。第３の設定では、レベル２が１（不許可状態）であって、レベル３が０（許可状態）である。この場合、ＡＮＤ回路２６には第２の設定レジスタから１が入力される。そして、動作権限情報がユーザー権限又はＯＳ権限であればＡＮＤ回路２６の出力は１となる。一方、ＡＮＤ回路２８には第３の設定レジスタから０が入力される。そのため、ＡＮＤ回路２８の出力は０となる。従って、動作権限レベルがＯＳ権限である場合、アクセス許可／不許可情報は１（不許可状態）となる。一方、動作権限レベルが管理権限である場合、アクセス許可／不許可情報は０（許可状態）となる。また、動作権限レベルがユーザー権限であった場合、レベル２の設定値に基づきＡＮＤ回路２６の出力が１となるため、レベル１の設定値にかかわらずアクセス許可／不許可情報は１（不許可状態）となる。
【００３３】
各設定レジスタに格納される設定値が第４の設定であるときについて説明する。第４の設定では、レベル３が１（不許可状態）である。この場合、ＡＮＤ回路２８には第３の設定レジスタから１が入力される。そして、動作権限情報がユーザー権限、ＯＳ権限、管理権限のいずれであってもＡＮＤ回路２８の出力は１となる。従って、レベル３の設定値が１である場合、いずれの動作権限レベルであっても、アクセス許可／不許可情報は１（不許可状態）となる。つまり、レベル３の設定値が１である場合、レベル１、２の設定値が０又は１のいずれであっても、ユーザー権限及びＯＳ権限に対するアクセス許可／不許可情報は１（不許可状態）となる。
【００３４】
つまり、本実施の形態にかかる周辺装置保護回路１２は、上位レベルに対応する設定レジスタにおいて１（不許可状態）が設定されていれば、設定レジスタに格納されている値にかかわらず、不許可状態が設定されている動作権限レベル以下の動作権限レベルによる周辺装置に対するアクセスを制限することができる。
【００３５】
次に、本実施の形態におけるアクセス保護設定の一例について説明する。図５に本実施の形態におけるアクセス保護設定の一例を示す。図５に示すように、本実施の形態では、データ処理装置１の動作の基本部分に関わるクロック制御回路のような重要な周辺装置に対する保護設定は、第１〜第３の設定レジスタのいずれにも１（不許可状態）を設定し、保護を強化する。また、割り込みコントローラＩＮＴＣのような周辺装置に対するアクセス制限は、データ処理装置において実行されるプログラム間の独立性を補償するために管理権限レベルの動作に対してのみ許可状態とし、データ処理装置の信頼性を向上させる。
【００３６】
さらに、ＤＭＡコントローラやタイマーなどのユーザープログラムにおいて頻繁に用いられる周辺装置に対しては、ユーザープログラムの動作に応じて許可と不許可を切り替える。図５に示す例では、ＤＭＡコントローラに対するユーザー権限によるアクセスは不許可状態とし、タイマーに対するユーザー権限によるアクセスは許可状態とする。第２の設定レジスタ及び第３の設定レジスタに格納される設定値に基づき上位の動作権限レベルに対して許可状態となる周辺装置に対するアクセス制限はユーザープログラムに応じて切り替えることが可能である。つまり、第１の設定レジスタに格納される値はユーザープログラム毎に異なる設定となることがある。
【００３７】
続いて、設定レジスタに格納される設定値の変更方法について説明する。図６に設定レジスタの設定変更方法の概念図を示す。図６に示すように、最下位レベルの動作権限レベルであるユーザー権限で動作するプログラムは、ユーザー権限に対するアクセス制限を設定する第１の設定レジスタの設定を変更することはできない。また、ユーザー権限ではＯＳ権限に対するアクセス制限を設定する第２の設定レジスタ、及び、管理権限に対するアクセス制限を設定する第３の設定レジスタの設定を変更することはできない。
【００３８】
中位レベルの動作権限レベルとなるＯＳ権限で動作するプログラムは、最下位レベルのユーザー権限に対するアクセス制限を設定する第１の設定レジスタの設定を変更することができる。一方、ＯＳ権限では、ＯＳ権限に対するアクセス制限を設定する第２の設定レジスタの設定は変更することができない。また、ＯＳ権限では、管理権限に対するアクセス制限を設定する第３の設定レジスタの設定は変更することができない。
【００３９】
最上位レベルの動作権限レベルとなる管理権限で動作するプログラムは、中位レベルのＯＳ権限に対するアクセス制限を設定する第２の設定レジスタの設定、および、最下位レベルのユーザー権限に対するアクセス制限を設定する第１の設定レジスタの設定、を変更することができる。また、管理権限で動作するプログラムは、管理権限に対するアクセス制限を設定する第３の設定レジスタの設定をも変更することができる。ただし、本実施の形態では、管理権限で動作するプログラムは、上位権限移行プログラム（例えば、設定変更専用プログラム）を呼び出し、設定変更専用プログラムにより設定変更動作を行う。これにより、管理権限で動作するプログラムによる無造作な設定変更による信頼性の低下を防ぐことができる。
【００４０】
続いて、本実施の形態のデータ処理装置１の動作について説明する。図７にデータ処理装置１の動作を示すフローチャートを示す。なお、フローチャートにおいて、ステップＡ１０１〜Ａ１１３は管理権限で実行される処理であり、ステップＳ１０１〜Ｓ１１０はＯＳ権限で実行される処理であり、ステップＵ１０１〜Ｕ１０３はユーザー権限で実行される処理である。
【００４１】
図７に示すように、まずＣＰＵ１０に対してリセットが発生すると、ＣＰＵ１０は、管理権限で動作を開始する（Ａ１０１）。続いてＣＰＵ１０の初期化が開始される（ステップＡ１０２）。そして、初期化の最初のステップとして、ＣＰＵ１０は、アクセス制限情報を出力し、第３の設定レジスタに設定を格納する（ステップＡ１０３）。ステップＡ１０３の処理により、データ処理装置１において最も重要な周辺装置に対するアクセスが保護される。続いて、ＣＰＵ１０の初期化処理を引き続き実行し、初期化処理を完了させる（ステップＡ１０４）。その後、ＣＰＵ１０は、アクセス制限情報を出力し、第２の設定レジスタに設定を格納する（ステップＡ１０５）。ステップＡ１０５が完了すると、管理権限で実行されるプログラムは、ＯＳに動作権限を移行し、ＣＰＵ１０はＯＳ権限による動作を開始する（ステップＡ１０６）。
【００４２】
続いて、ＣＰＵ１０は、メモリ１１からＯＳプログラムを呼び出し、ＯＳプログラムを起動する（ステップＳ１０１）。そして、ＯＳの初期化処理を実行して、ＯＳプログラムに関する初期化を完了させる（ステップＳ１０２）。その後、ＣＰＵ１０は、ユーザープログラムに基づき実行されるユーザータスクのスケジュールを行う（Ｓ１０３）。そして、スケジュールに基づき実行されるユーザータスクに対応した設定を第１の設定レジスタに対して行う（ステップＳ１０４）。その後、ＯＳプログラムは、ユーザープログラムに動作権限を移行し、ＣＰＵ１０はユーザー権限にて動作を開始する（ステップＳ１０５）。
【００４３】
ユーザー権限での動作では、ステップＵ１０１〜Ｕ１０３においてユーザータスクを実行する。ユーザープログラムの実行中に割り込み等の処理が発生しない場合、ユーザータスクの処理が完了するとユーザープログラムは動作権限をＯＳプログラムに移行させ、ＣＰＵ１０はＯＳ権限による動作を開始する（ステップＳ１０６）。この下位権限から上位権限への動作権限の移行は、システムコール命令を実行するなどＯＳ権限で動作するプログラムの動作開始と同時に行われる。そのためユーザープログラムの実行が行われている最中に動作権限が移行することはない。ステップＳ１０６の処理が完了すると処理はステップＳ１０３に戻る。一方、ユーザータスクの実行中に割り込み要求が発生した場合、実行中のユーザータスクの処理を抜けてステップＳ１０７に進む（ステップＵ１０２）。
【００４４】
ステップＳ１０７では、ＯＳプログラムがユーザープログラムから動作権限を譲り受け、ＣＰＵ１０の動作権限をＯＳ権限に移行させる。そして、ステップＵ１０２で割り込み要求した処理がクロックの変更等のＯＳ権限において制限されている処理であるか否かを判定する（ステップＳ１０８）。ステップＳ１０８において、割り込み処理がクロックの変更ではないと判定された場合、ステップＳ１０９に進む。ステップＳ１０９では、割り込み処理を実行し、割り込み処理を完了させる。その後、ＯＳプログラムは、動作権限をユーザープログラムに戻し、ＣＰＵ１０の動作権限をユーザー権限に移行させる（ステップＳ１１０）。ステップＳ１１０が完了するとステップＵ１０３の処理が実行される。なお、図７に示したフローチャートは動作の一例であり、ステップＵ１０１〜Ｕ１０３では複数の割り込みが発生することがある。また、ステップＳ１０９での処理の結果、ステップＳ１０３へ進むなど元のユーザープログラムに戻らないこともある。
【００４５】
一方、ステップＳ１０８において、割り込み処理がクロックの変更であると判断された場合、処理はステップＡ１０７に進む。ステップＡ１０７では、ＯＳプログラムから管理プログラムに権限が移行され、ＣＰＵ１０が管理権限で動作を開始する。そして、管理プログラムは、設定変更専用プログラムとしてクロック制御タスクを起動する（ステップＡ１０８）。このクロック制御タスクによってクロック制御回路に対する保護設定が格納される第３の設定レジスタの設定を変更する（ステップＡ１０９）。その後、ＣＰＵ１０からクロック制御回路へのアクセスが行われ、クロック制御回路の設定が変更される（ステップＡ１１０）。次に、ＣＰＵ１０は、第３の設定レジスタの設定を再度不許可状態に変更する（ステップＡ１１１）。そして、ＣＰＵ１０は、クロック制御タスクの終了処理を行う（ステップＡ１１２）。また、管理プログラムはＯＳプログラムに権限を移行し、ＣＰＵ１０は、ＯＳ権限で動作を再開する（ステップＡ１１３）。その後、処理はステップＳ１０３に戻る。
【００４６】
上記説明より、本実施の形態のデータ処理システムでは、管理プログラム、ＯＳプログラム、ユーザープログラムが実行される。管理プログラムは、最もレベルの高い動作権限レベルで動作するプログラムである。この管理プログラムは、例えば、データ処理装置を利用する者が設計するものであって、例えば、データ処理システムの基本的な設定を行うプログラムと自己診断プログラムを含む。つまり、管理プログラムは、データ処理装置の基本的な動作を行う。そのため、管理プログラムは、精度の高い動作検証が行われた、いわゆる信頼済みのプログラムと呼ばれる。
【００４７】
ＯＳプログラムは、データ処理装置において実行されるユーザープログラムが共通して用いる機能の提供、及び、ユーザープログラム間の調停を行う。このＯＳプログラムはデータ処理装置を利用する者が設計しても良く、第三者（例えばサードパーティ）によって提供されるものであっても良い。ＯＳプログラムは、ユーザープログラムにおいて共通に用いられるため、高精度な検証が行われているが、プログラム自体が大きいため、管理プログラムよりも不具合が混入する確率が高い。従って、ＯＳプログラムは、信頼済みのプログラムではあるものの、管理プログラムよりは信頼性が劣る。
【００４８】
ユーザープログラムは、ＯＳプログラムの制御下で動作する個別機能を提供するプログラムであって、データ処理装置を利用する者の他にも様々なベンダーから供給される。つまり、ユーザープログラムは、各ベンダーにおいて個別に設計されるため、システムの不理解やヒューマンエラー等により不具合が混入する確率が高い。また、ユーザープログラムは、個別のベンダーにより設計されるため、他のユーザープログラムとの協調動作を考慮した信頼性の試験を十分に行っていない可能性が高い。このようなことから、ユーザープログラムは信頼済みでないプログラムと呼ばれる。
【００４９】
本実施の形態にかかるデータ処理装置は、管理プログラム、ＯＳプログラム、ユーザープログラムが動作するデータ処理装置において周辺装置のアクセス制限の信頼性を向上させることができる。
【００５０】
具体的には、データ処理装置１におけるＣＰＵ１０が、実行するプログラムに応じて動作権限レベルを切り替え、周辺装置保護回路１２が、動作権限レベルと動作権限レベル毎のアクセスの許可又は不許可を設定するアクセス制限情報とを参照し、動作権限レベルがアクセス制限情報において不許可状態であるレベル以下である場合にＣＰＵ１０から出力されるアクセス情報を遮断する。つまり、周辺装置保護回路１２は、上位レベルの動作権限において不許可が設定されていれば、そのレベルよりも低いレベルの動作権限レベルでは、ＣＰＵ１０の周辺装置に対するアクセスを防止する。
【００５１】
このようなアクセス制限を行うことで、信頼済みでないユーザープログラムに対してなされた設定が誤っていた場合であっても、それよりも上位のアクセス制限の設定によって、重要な周辺装置に対するアクセスを禁止することができる。つまり、信頼済みでないプログラムが実行されるデータ処理装置において、本実施の形態にかかるＣＰＵ１０及び周辺装置保護回路１２を採用することで、アクセス制限に関する信頼性を向上させることができる。信頼済みでないユーザープログラムが多数動作するシステムにおいては、設定の誤りが混入する確率が高いため、本実施の形態にかかるデータ処理装置１による信頼性向上の効果は特に高い。
【００５２】
また、本実施の形態では、信頼済みプログラムによって、データ処理装置において重要な周辺装置に対するアクセス制限情報を設定しておくことができる。そのため、信頼済みでないユーザープログラムによる重要な周辺装置に対するアクセスを確実に防止することがでる。つまり、本実施の形態にかかるデータ処理装置１によれば、ユーザープログラムの誤りに対してもシステムの信頼性を向上させることができる。
【００５３】
さらに、本実施の形態では、アクセス制限情報を設定レジスタに格納する。このとき、従来と同様にソフトエラー等に起因して格納したデータにビット反転が発生する場合がある。しかし、このようなビット反転によって、低レベルの動作権限レベルに対応した設定レジスタに格納した設定値が破壊された場合であっても、データの破壊が生じた設定レジスタよりも高いレベルの動作権限レベルに対応した設定レジスタによって、データが破壊された設定レジスタに対応する動作権限レベルに関するアクセスを制限することができる。つまり、本実施の形態にかかるデータ処理装置１は、ソフトエラー等のハードウェアエラーに起因する不具合に対しても信頼性を向上させることができる。
【００５４】
また、本実施の形態にかかるデータ処理装置によれば、アクセス制限に関する設定変更にかかるオーバーヘッドを削減することができる。従来の方法では、設定レジスタの設定をプログラムの変更だけでなく動作権限レベルの変更に応じて書き換える必要がある。しかしながら、本実施の形態にかかる設定レジスタ群２１ａ〜２１ｄは、それぞれ各動作権限レベルに対する設定レジスタを有している。そして、各設定レジスタには、それぞれの動作権限レベルに対応したアクセスの許可又は不許可情報が格納されている。そのため、本実施の形態にかかるデータ処理装置１では、動作権限レベルの変更に伴い設定レジスタの変更を行うことがない。また、設定選択回路２２ａ〜２２ｄは、常に第１〜第３の設定レジスタの設定値を参照して、アクセス許可／不許可情報を出力する。つまり、本実施の形態におけるデータ処理装置１では、動作権限レベルの変更に伴い、動作権限情報に含まれる動作権限レベルを変更するのみで、各動作権限レベルにおけるアクセス保護を的確に行うことができる。従って、本実施形態にかかるデータ処理装置１では、動作権限レベルの切り替えに伴い設定レジスタの書き換えが発生することがなく、設定レジスタの書き換えによる動作のオーバーヘッドを低減することができる。なお、ＯＳ権限及び管理権限に対する設定変更は本実施の形態にかかるデータ処理装置１においても発生する。例えば、本実施の形態では、管理権限に対する設定変更は、起動時（ステップＡ１０３）及び個々に重要な周辺装置にアクセスするとき（ステップＡ１０９）に発生するのみである。更に、ステップＡ１０９における設定変更は設定値の全てを変更する必要はない。また、ＯＳ権限に対する設定変更は、ＯＳの起動前に発生する（ステップＡ１０５）のみである。つまり、ユーザー権限に対する設定変更の頻度に比べ、ＯＳ権限及び管理権限に対する設定変更は極まれにしか発生しないため、データ処理装置１の性能劣化への影響は極めて小さいものである。なお、システムの運用形態によってはＯＳ権限や管理権限に対する設定変更を、実行するプログラム切り替え時に変更しても良い。
【００５５】
実施の形態２
実施の形態２は、周辺装置保護設定回路２０の変形例を示すものである。実施の形態２にかかる周辺装置保護設定回路２０のブロック図を図８に示す。図８に示すように、実施の形態２にかかる周辺装置保護設定回路２０は、設定レジスタ群４１ａ及び設定選択回路４２ａを有する。
【００５６】
設定レジスタ群４１ａは、実施の形態１における設定レジスタ群２１ａの最下位レベルの設定に対するカバーレジスタを加えたものである。カバーレジスタには、その他の設定レジスタと同様にＣＰＵ１０から出力されるアクセス制限情報に基づき値が設定される。カバーレジスタには、最下位レベルの動作権限レベルで動作する全てのユーザープログラムにおいて共通して用いられる共通保護設定値が格納される。実施の形態２において示す例では、カバーレジスタに設定される共通保護設定値は、最下位レベルの動作権限レベルに対応した最下位設定レジスタ（例えば、第１の設定レジスタ）に格納される値の論理積演算結果を格納する。より具体的には、第１の設定レジスタには、ＣＰＵ１０で実行されるユーザープログラム毎に異なる値が設定される。カバーレジスタには、ユーザープログラム毎に第１の設定レジスタに格納される複数の設定値の論理積演算結果を格納する。
【００５７】
また、設定選択回路４２ａは、実施の形態１にかかる設定選択回路２２ａにＡＮＤ回路４３を追加したものである。ＡＮＤ回路４３は、カバーレジスタに設定された値と第１の権限判定回路が出力する値の論理積演算結果を出力する。そして、ＡＮＤ回路４３の出力は、他のＡＮＤ回路の出力とともにＯＲ回路２９に入力される。
【００５８】
ここで、カバーレジスタを用いた場合に各設定レジスタに格納される値の例を図９に示す。そして、図９を参照してカバーレジスタの設定について説明する。図９に示すように、第１の設定レジスタには、ユーザープログラム毎に異なる値が設定される。そこで、いずれのユーザープログラムにおいても不許可（例えば、１）とされるＤＭＡコントローラに対しては、カバーレジスタに不許可を設定する。また、一方、タイマーＡや、タイマーＢ等の設定値は、いずれかのユーザープログラムにおいて許可（例えば、０）の設定がされる。そのため、カバーレジスタの設定値としては許可の設定を行う。
【００５９】
カバーレジスタの設定を全てのユーザープログラムにおいて共通に用いられるアクセスの許可又は不許可を示す値とすることで、本来いずれのユーザープログラムにおいても不許可設定がなされなければならない周辺装置に対して、第１の設定レジスタで許可の設定が誤ってなされた場合であっても、カバーレジスタの設定値に基づきその周辺装置に対するアクセスを防止することができる。具体的には、第１の設定レジスタの設定値が誤って許可設定となってしまった場合、ＡＮＤ回路２４は０を出力する。これに対して、カバーレジスタが不許可設定であった場合、ＡＮＤ回路４３はユーザー権限において１を出力する。つまり、第１の設定レジスタの設定値に不正があった場合であっても、カバーレジスタの設定値に基づき不正なアクセスを防止することができる。
【００６０】
上記説明より、実施の形態２にかかるデータ処理装置によれば、カバーレジスタによって設定に対する信頼性を向上させることができる。つまり、実施の形態２にかかるデータ処理装置１は、保護設定レジスタの不正書き換えに対して実施の形態１よりも高い信頼性を確保することができる。なお、カバーレジスタの設定値の変更は、カバーレジスタの論理積演算対象が第１の設定レジスタである場合、ＯＳ権限のプログラムにより実行される。
【００６１】
なお、カバーレジスタに格納される共通保護設定値は、ＯＳプログラムの動作状況に応じて書き換えられる第２の設定レジスタの設定値のうち複数の動作状況において共通に用いられる設定値としても良い。この場合、設定選択回路２２ａは、ＯＳ権限でアクセスが行われた場合に第２の設定レジスタに格納された設定値と共通保護設定値を参照してアクセス許可／不許可情報を出力する。この場合、カバーレジスタは第２の設定レジスタに対応して設けられることになる。
【００６２】
さらに、カバーレジスタに格納される共通保護設定値は、第１の設定レジスタ及び第２の設定レジスタに格納される設定値のうち共通する値であっても良い。この場合、設定選択回路２２ａは、第１の設定レジスタ及び第２の設定レジスタの設定値に加え、共通保護設定値を参照してアクセス許可／不許可情報を出力する。
【００６３】
つまり、共通保護設定値は、保護すべき動作権限レベル以下の設定値において、共通となる設定値であれば良い。そして、設定選択回路２２ａは、動作権限レベルに応じて共通設定値を参照すれば良い。なお、カバーレジスタは、１つの設定レジスタ群の中に複数も受けられていても良い。例えば、第１の設定レジスタに対する共通保護設定値を格納した第１のカバーレジスタと、第２の設定レジスタに対する共通保護設定値を格納した第２のカバーレジスタとを有していても良い。
【００６４】
実施の形態３
実施の形態３は、実施の形態１の周辺装置保護設定回路２０の変形例を示すものである。実施の形態３にかかる周辺装置保護設定回路２０のブロック図を図１０に示す。図１０に示すように、実施の形態３にかかる周辺装置保護設定回路２０は、設定選択回路５２ａを有する。
【００６５】
設定選択回路５２ａは、設定選択回路２２ａから第３の権限判定回路２３ｃ、ＯＲ回路２７、及び、ＡＮＤ回路２８を除いたものである。つまり、実施の形態３では、動作権限レベルとして、上位レベルとなるＯＳ権限と下位レベルとなるユーザー権限の２つのレベルしか設定されていない。そのため、第３の設定レジスタに対応する動作権限レベルが存在しない。つまり、実施の形態３は、動作権限レベルとは対応しないが、最上位レベルよりも上位の保護設定を行う設定レジスタを有する場合を示すものである。
【００６６】
ここで、実施の形態３における設定レジスタの設定値の変更方法の概念図を図１１に示す。そして、図１１を参照して、実施の形態３における設定値の変更方法について説明する。図１１に示すように、実施の形態３においても、ユーザー権限で動作するプログラムはいずれの設定レジスタの設定も変更することができない。一方、実施の形態３では、ＯＳ権限で動作するプログラムが、第１の設定レジスタ及び第２の設定レジスタの設定を変更する。さらに、ＯＳプログラムから設定変更専用プログラムを呼び出すことで、第３の設定レジスタの設定値を変更することができる。
【００６７】
上記説明より、実施の形態３にかかるデータ処理装置１では、管理プログラム等の信頼済みプログラムを準備することなく、３つの権限に対応する設定レジスタの設定を行うことができる。ＯＳプログラムにより、このような設定を可能にすることで、実施の形態３では、管理プログラムの作成期間及びコストを削減することができる。また、管理プログラムの検証時間を削減することができる。
【００６８】
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。例えば、設定選択回路の構成は上記実施の形態に限られたものではなく適宜変更することが可能である。
【図面の簡単な説明】
【００６９】
【図１】実施の形態１にかかるデータ処理装置のブロック図である。
【図２】実施の形態１にかかる周辺装置保護回路のブロック図である。
【図３】実施の形態１にかかる設定選択回路のブロック図である。
【図４】実施の形態１にかかる設定選択回路の真理値表である。
【図５】実施の形態１にかかるデータ処理装置における設定レジスタの設定値の例を示す図である。
【図６】実施の形態１にかかるデータ処理装置における設定レジスタの変更方法を示す概念図である。
【図７】実施の形態１にかかるデータ処理装置の動作を示すフローチャートである。
【図８】実施の形態２にかかる設定選択回路のブロック図である。
【図９】実施の形態２にかかるデータ処理装置における設定レジスタの設定値の例を示す図である。
【図１０】実施の形態３にかかる設定選択回路のブロック図である。
【図１１】実施の形態１にかかるデータ処理装置における設定レジスタの変更方法を示す概念図である。
【符号の説明】
【００７０】
１    データ処理装置
１０    ＣＰＵ
１１    メモリ
１２    周辺装置保護回路
２０    周辺装置保護設定回路
２１ａ〜２１ｄ、４１ａ    設定レジスタ群
２２ａ〜２２ｄ、４２ａ、５２ａ    設定選択回路
２３ａ〜２３ｃ    権限判定回路
２４、２６、２８、４３    ＡＮＤ回路
２５、２７、２９    ＯＲ回路
３０    アクセス保護回路
３１ａ〜３１ｄ    アクセス先判定回路
３２ａ〜３２ｄ    許可判定回路
３３    アクセス制御回路
Ａ〜Ｄ    周辺装置
【図１】
0004335940.tif 000002
【図２】
0004335940.tif 000003
【図３】
0004335940.tif 000004
【図４】
0004335940.tif 000005
【図５】
0004335940.tif 000006
【図６】
0004335940.tif 000007
【図７】
0004335940.tif 000008
【図８】
0004335940.tif 000009
【図９】
0004335940.tif 000010
【図１０】
0004335940.tif 000011
【図１１】
0004335940.tif 000012