(57)【要約】【課題】周辺デバイス単位でのアクセス保護が実現する。【解決手段】一実施の形態による情報処理装置１００は、メモリ保護ユニット１１とアクセス制御部２０とを備える。ＣＰＵ１０のアドレス空間は複数のＩ／Ｏエイリアスアドレス範囲を含み、各Ｉ／Ｏエイリアスアドレス範囲ごとに情報処理装置１００に設けられた複数の周辺デバイスＤ１〜Ｄｎがマッピングされている。メモリ保護ユニット１１は、ＣＰＵ１０からのアクセスを許可するアクセス許可領域をアドレス空間内に設定する。アクセス制御部２０は、上記の複数のＩ／Ｏエイリアスアドレス範囲のうちどのＩ／Ｏエイリアスアドレス範囲がＣＰＵ１０によってアクセスされているかに応じて、ＣＰＵからのアクセスが有効か無効かを周辺デバイスＤ１〜Ｄｎごとに切り替える。【選択図】図１
2015035155.tif 000002
【特許請求の範囲】
【請求項１】
ＣＰＵ（Central  Processing  Unit）と、
複数の周辺デバイスとを備え、
前記ＣＰＵのアドレス空間は複数のＩ／Ｏエイリアスアドレス範囲を含み、前記Ｉ／Ｏエイリアスアドレス範囲ごとに前記複数の周辺デバイスがマッピングされ、
さらに、前記アドレス空間内に、前記ＣＰＵからのアクセスを許可するアクセス許可領域を設定するメモリ保護ユニットと、
前記複数のＩ／Ｏエイリアスアドレス範囲のうちどのＩ／Ｏエイリアスアドレス範囲が前記ＣＰＵによってアクセスされているかに応じて、前記ＣＰＵからのアクセスが有効か無効かを前記周辺デバイスごとに切り替えるアクセス制御部とを備える、情報処理装置。
【請求項２】
前記メモリ保護ユニットは、前記複数のＩ／Ｏエイリアスアドレス範囲のうちのいずれか１つを前記アクセス許可領域に設定する、請求項１に記載の情報処理装置。
【請求項３】
前記複数のＩ／Ｏエイリアスアドレス範囲は、前記情報処理装置で実行する複数のアプリケーションソフトウェアにそれぞれ対応し、
前記メモリ保護ユニットは、実行しているアプリケーションソフトウェアに対応するＩ／Ｏエイリアスアドレス範囲を前記アクセス許可領域に設定する、請求項２に記載の情報処理装置。
【請求項４】
前記アクセス制御部は、前記複数の周辺デバイスにそれぞれ対応する複数の比較器を含み、
各前記比較器は、前記ＣＰＵから出力されたアドレスのうちの複数の特定ビットの値が、各前記比較器ごとに定められた基準値に一致するか否かを判定し、
前記ＣＰＵから各前記周辺デバイスへのアクセスは、前記複数の特定ビットの値が対応の比較器について定められた前記基準値に一致するときに有効になる、請求項１に記載の情報処理装置。
【請求項５】
前記アクセス制御部は、
前記複数の周辺デバイスにそれぞれ対応する複数の第１の比較器と、
前記複数の周辺デバイスにそれぞれ対応する複数の第２の比較器とを含み、
各前記第１の比較器は、前記ＣＰＵから出力されたアドレスのうち複数の第１の特定ビットの値が、前記第１の比較器ごとに定められた第１の基準値に一致するか否かを判定し、
各前記第２の比較器は、前記ＣＰＵから出力されたアドレスのうち複数の第２の特定ビットの値が、前記第２の比較器ごとに定められた第２の基準値に一致するか否かを判定し、
前記ＣＰＵから各前記周辺デバイスへのアクセスは、前記複数の第１の特定ビットの値が対応の第１の比較器について定められた前記第１の基準値に一致し、かつ、前記複数の第２の特定ビットの値が対応の第２の比較器について定められた前記第２の基準値に一致するときに有効になる、請求項１に記載の情報処理装置。
【請求項６】
各前記第２の比較器は、対応の周辺デバイスの内部に設けられる、請求項５に記載の情報処理装置。
【請求項７】
前記複数の周辺デバイスは、メモリマップトＩ／Ｏ方式で前記アドレス空間にマッピングされている、請求項１に記載の情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、メモリ保護ユニットを用いてメモリおよび周辺デバイスへのアクセスを制限する情報処理装置に関する。
【背景技術】
【０００２】
組込みソフトウェアの大規模化に伴い、各機能を安全に動作させるために組込みシステムにおいてもメモリ保護の必要性が高まっている。メモリ保護とは、組込みソフトウェアを構成するアプリケーションソフトウェアごとにアクセス可能なメモリおよび周辺デバイスを制限することである。
【０００３】
組込みシステムでは、メモリ保護ユニット（ＭＰＵ：Memory Protection Unit）と呼ばれるハードウェアによってメモリ保護を実現することが多い。ＭＰＵはアドレス空間に複数の領域を設定し、その領域毎にアクセス権を与える（ＭＰＵの概要は、たとえば、下記の非特許文献１，２を参照）。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】ルネサスエレクトロニクス、「Ｖ８５０Ｅ２Ｍマイクロプロセッサ・コア  ユーザーズマニュアル  アーキテクチャ編」、第３編  第６章  メモリ保護、Rev.1.00、２０１０年１０月
【非特許文献２】ARM,  "Cortex-M3  Revision  r2p1  Technical  Reference  Manual",  Chap.5  Memory  Protection  Unit
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ＭＰＵによって設定できる領域の数には上限があり、通常は１０個以下である。このため、一般的なＯＳとアプリケーションプログラムとを動作させると、メモリの保護のために多数の領域を使用してしまい、周辺デバイスの保護に使用可能な領域の数が不足する。この結果、各周辺デバイス単位でのアクセス保護が実現できないという問題が生じる。
【０００６】
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【０００７】
一実施の形態による情報処理装置は、メモリ保護ユニットとアクセス制御部とを備える。ＣＰＵのアドレス空間は複数のＩ／Ｏエイリアスアドレス範囲を含み、各Ｉ／Ｏエイリアスアドレス範囲ごとに情報処理装置に設けられた複数の周辺デバイスがマッピングされている。メモリ保護ユニットは、ＣＰＵからのアクセスを許可するアクセス許可領域をアドレス空間内に設定する。アクセス制御部は、上記の複数のＩ／Ｏエイリアスアドレス範囲のうちどのＩ／Ｏエイリアスアドレス範囲がＣＰＵによってアクセスされているかに応じて、ＣＰＵからのアクセスが有効か無効かを周辺デバイスごとに切り替える。
【発明の効果】
【０００８】
上記の一実施の形態の情報処理装置によれば、周辺デバイス単位でのアクセス保護が実現できる。
【図面の簡単な説明】
【０００９】
【図１】実施の形態１による情報処理装置の構成を概略的に示すブロック図である。
【図２】ＣＰＵのアドレス空間の一例を示す図である。
【図３】周辺デバイスのアドレスマッピングをより詳細に示す図である。
【図４】実施の形態１の情報処理装置において、どのアプリケーションソフトウェアの実行時にどの周辺デバイスがアクセス可能になるように設定されるかを表形式で示す図である。
【図５】アプリケーションソフトウェア１の動作時において、ＭＰＵによる領域設定について説明するための図である。
【図６】アプリケーションソフトウェア１の動作時において、アクセス制御部の動作について説明するための図である。
【図７】アプリケーションソフトウェア２の動作時において、ＭＰＵによる領域設定について説明するための図である。
【図８】アプリケーションソフトウェア２の動作時において、アクセス制御部の動作について説明するための図である。
【図９】比較例の情報処理装置において、どのアプリケーションソフトウェアの実行時にどの周辺デバイスがアクセス可能になるように設定されるかを表形式で示す図である。
【図１０】比較例の情報処理装置の場合のアプリケーションソフトウェア１の動作時において、ＭＰＵによる領域設定について説明するための図である。
【図１１】比較例の情報処理装置の場合のアプリケーションソフトウェア２の動作時において、ＭＰＵによる領域設定について説明するための図である。
【図１２】実施の形態２による情報処理装置の構成を示すブロック図である。
【図１３】実施の形態２の情報処理装置において、どのアプリケーションソフトウェアの実行時にどの周辺デバイスがアクセス可能になるように設定されるかを表形式で示す図である。
【図１４】図１３の設定例における情報処理装置の動作を説明するための図である。
【図１５】実施の形態３による情報処理装置の構成を示すブロック図である。
【発明を実施するための形態】
【００１０】
以下、各実施の形態について図面を参照して詳しく説明する。なお、同一または相当する部分には同一の参照符号を付して、その説明を繰返さない。
【００１１】
＜実施の形態１＞
［情報処理装置の構成］
図１は、実施の形態１による情報処理装置の構成を概略的に示すブロック図である。
【００１２】
図１を参照して、情報処理装置１００は、組込みシステムなどのコンピュータシステムとして構成される。情報処理装置１００は、中央処理装置（ＣＰＵ：Central  Processing  Unit）１０と、フラッシュメモリ１２と、ＤＲＡＭ（Dynamic  Random  Access  Memory）１３と、ｎ個の周辺デバイス１〜ｎ（Ｄ１〜Ｄｎ）と、メモリ保護ユニット（ＭＰＵ：Memory  Protection  Unit）１１と、アクセス制御部２０と、バス１４とを含む。図１に示すように、情報処理装置１００を構成する各要素は、共通のバス１４を介して相互に接続されている。
【００１３】
ＣＰＵ１０は、情報処理装置全体の制御処理および演算処理を行う。この実施の形態では、ＣＰＵ１０が扱えるデータのビット数を３２ビットとする。ＣＰＵ１０は、バス１４を介して、フラッシュメモリ１２、ＤＲＡＭ１３、および周辺デバイス１〜ｎ（Ｄ１〜Ｄｎ）と接続され、これらのメモリおよび各周辺デバイスにアクセスする。
【００１４】
フラッシュメモリ１２は、ＲＯＭ（Read  Only  Memory）および外部記憶装置として用いられる。フラッシュメモリ１２には、ＯＳ（Operating  System）および複数のアプリケーションプログラムが予め格納されている。ＤＲＡＭ１３は主記憶装置として用いられ、実行時に必要なプログラムがフラッシュメモリ１２から呼び出される。なお、図１には図示されていないが、情報処理装置１００は、プロセッサ内蔵メモリなど、その他のメモリを有していてもよい。
【００１５】
周辺デバイス１〜ｎ（Ｄ１〜Ｄｎ）は、たとえば、タイマ、シリアル通信インターフェイス、ＤＭＡ（Direct  Memory  Access）コントローラ、割り込みコントローラ、汎用入出力ポート、および表示コントローラなどにそれぞれ対応する。この明細書では、周辺デバイスを単にデバイスと記載する場合ある。
【００１６】
ＭＰＵ１１は、メモリ保護に特化したハードウェアである。組込みシステムでは、メモリ管理ユニット（ＭＭＵ：Memory  Management  Unit）を用いた仮想記憶によってメモリ保護を実現するのではなく、ＭＰＵによってメモリ保護が実現される場合が多い。
【００１７】
具体的に、ＭＰＵ１１は、ＣＰＵ１０のアドレス空間内に複数の領域（アクセス許可領域とも称する）を指定し、その領域毎にアクセス権（リード／ライト）を与えることができる。リード／ライトの一方のみが許可される場合もあるし、両方とも許可される場合もある。領域の指定はアドレスの上限と下限を指定する方法が一般的であるが、開始アドレスとサイズを指定することもある。作成可能な領域の数には上限があり一般的には１０枚以下である。これは、領域の数を増やすと、コンパレータが多くなるために、回路面積が大きくなるばかりか、遅延が発生するためである。
【００１８】
［デバイスアクセス保護について］
次に実施の形態１による情報処理装置１００において、周辺デバイスのアクセス保護の特徴について説明する。情報処理装置１００は、以下の特徴を有している。
【００１９】
（１）  周辺デバイスへのデータ入出力のためにアドレス空間内に複数のアドレス範囲（以下、Ｉ／Ｏ（Input/Output）エイリアスアドレス範囲と称する）が設けられる。周辺デバイス１〜ｎ（Ｄ１〜Ｄｎ）は、各Ｉ／Ｏエイリアスアドレス範囲ごとにマッピングされる。
【００２０】
（２）  メモリ保護ユニット（ＭＰＵ）を有するプロセッサ（ＣＰＵ）が用いられる。好ましくは、ＭＰＵによって複数のＩ／Ｏエイリアスアドレス範囲のうちいずれか１つのアクセスが許可される。
【００２１】
（３）  複数のＩ／Ｏエイリアスアドレス範囲のうちどのＩ／Ｏエイリアスアドレス範囲がアクセスされたかに応じて、各周辺デバイスに対するアクセスを有効または無効に切り替えるための機構（アクセス制御部）が設けられる。以下、各特徴について詳しく説明する。
【００２２】
（１．周辺デバイスのマッピング方式）
図２は、ＣＰＵ１０のアドレス空間の一例を示す図である。
【００２３】
図２に示す例では、４ＧＢ（ギガバイト）のアドレス空間（０ｘ００００００００〜０ｘＦＦＦＦＦＦＦＦ）のうち、フラッシュメモリ１２が０ｘ００００００００〜０ｘ０ＦＦＦＦＦＦＦにマッピングされ、ＤＲＡＭ１３が０ｘ１０００００００〜０ｘ１ＦＦＦＦＦＦＦにマッピングされる。なお、アドレスが１６進数であることを明示するためにアドレスの先頭に“０ｘ”が付加されている。
【００２４】
この実施の形態では、各周辺デバイスにデータを入出力する方式として、メモリマップトＩ／Ｏが用いられる。メモリマップトＩ／Ｏでは、アドレス空間内にメモリと周辺デバイスとが共存し、メモリのリード／ライト命令が各周辺デバイスにも用いられる。具体的に図２の例では、周辺デバイス１〜ｎ（Ｄ１〜Ｄｎ）が０ｘ２０００００００〜０ｘ２ＦＦＦＦＦＦＦにマッピングされている。
【００２５】
図３は、周辺デバイスのアドレスマッピングをより詳細に示す図である。
図３を参照して、ＣＰＵ１０のアドレス空間には、周辺デバイス１〜ｎ（Ｄ１〜Ｄｎ）をアクセスするために複数のアドレス範囲（Ｉ／Ｏエイリアスアドレス範囲１，２，３，…）が設けられる。周辺デバイス１〜ｎ（Ｄ１〜Ｄｎ）は、各Ｉ／Ｏエイリアスアドレス範囲ごとにマッピングされている。たとえば、図３に示すように、デバイス１は、Ｉ／Ｏエイリアスアドレス範囲１のうちアドレス範囲０ｘ２００１００００〜０ｘ２００１０ＦＦＦにマッピングされるとともに、Ｉ／Ｏエイリアスアドレス範囲２のうちアドレス範囲０ｘ２００２００００〜０ｘ２００２０ＦＦＦにマッピングされている。デバイス１は、さらに、Ｉ／Ｏエイリアスアドレス範囲３のうちアドレス範囲０ｘ２００３００００〜０ｘ２００３０ＦＦＦにマッピングされている。他のデバイス２，３，…についても同様である。
【００２６】
（２．ＭＰＵによる保護領域の設定）
上記の各Ｉ／Ｏエイリアスアドレス範囲は、各アプリケーションソフトウェアに個別に対応する。たとえば、Ｉ／Ｏエイリアスアドレス範囲１，２，３…は、アプリケーションソフトウェア１，２，３にそれぞれ対応する。ＭＰＵは、動作中のアプリケーションソフトウェアに対応するＩ／Ｏエイリアスアドレス範囲をアクセス許可領域に指定する。したがって、図３のＩ／Ｏエイリアスアドレス範囲はアプリケーションソフトウェアの個数分必要になる。なお、ＭＰＵによる保護領域の切替えは、動作させるアプリケーションソフトウェアの切替時にＯＳなどのシステムソフトウェアによって実行される。
【００２７】
（３．アクセス制御部）
アクセス制御部２０は、上記のＩ／Ｏエイリアスアドレス範囲１，２，３，…のうちどのＩ／Ｏエイリアスアドレス範囲がＣＰＵによってアクセスされているかに応じて、周辺デバイスごとにアクセスが有効か無効かを切り替える。アクセス制御部２０のこの機能とＭＰＵによる保護領域の設定とを組み合わせることによって、アプリケーションソフトウェアに応じてアクセス可能な周辺デバイスを周辺デバイス単位で切替えることができる。以下、具体例を用いて各デバイスに対するアクセス制御についてさらに説明する。
【００２８】
（４．デバイスアクセス制御の具体例）
図４は、実施の形態１の情報処理装置において、どのアプリケーションソフトウェアの実行時にどの周辺デバイスがアクセス可能になるように設定されるかを表形式で示す図である。図４に示す例では、周辺デバイス１および４は、アプリケーションソフトウェア１の動作時にアクセス可能であるが、その他のアプリケーションソフトウェアの動作時にはアクセスできないように設定される。周辺デバイス２および３は、アプリケーションソフトウェア２の動作時にアクセス可能であるが、その他のアプリケーションソフトウェアの動作時にはアクセスできないように設定される。このようなアプリケーションごとのデバイスアクセス制御をデバイス単位で実現するために、ＭＰＵ１１とアクセス制御部２０とが設けられている。
【００２９】
なお、図４の場合とは異なるが、たとえば、デバイス１について、アプリケーションソフトウェア１および２のいずれの動作時でもアクセス可能であるように設定することもできる。
【００３０】
図５は、アプリケーションソフトウェア１の動作時において、ＭＰＵによる領域設定について説明するための図である。図５を参照して、アプリケーションソフトウェア１の動作時には、図１のＭＰＵ１１によって、Ｉ／Ｏエイリアスアドレス範囲１（０ｘ２００１００００〜０ｘ２００１ＦＦＦＦ）がアクセス許可領域（ＭＰＵ領域１）に設定される。その他のアドレス範囲はアクセス不許可となる。なお、図５に示す取り消し線は、図６で説明するようにアクセスされたときに無効とされることを示している。
【００３１】
図６は、アプリケーションソフトウェア１の動作時において、アクセス制御部２０の動作について説明するための図である。なお、図６に示す取り消し線は、以下に説明するようにアクセスされたときに無効となることを示している。
【００３２】
図６を参照して、アクセス制御部２０の制御に従うと、デバイス１（Ｄ１）は、Ｉ／Ｏエイリアスアドレス範囲１のアドレス０ｘ２００１００００〜０ｘ２００１０ＦＦＦによってアクセスされた場合には有効だが、Ｉ／Ｏエイリアスアドレス範囲２のアドレス０ｘ２００２００００〜０ｘ２００２０ＦＦＦによってアクセスされた場合には無効になる。デバイス２（Ｄ２）は、Ｉ／Ｏエイリアスアドレス範囲１のアドレス０ｘ２００１１０００〜０ｘ２００１１ＦＦＦによってアクセスされた場合には無効だが、Ｉ／Ｏエイリアスアドレス範囲２のアドレス０ｘ２００２１０００〜０ｘ２００２１ＦＦＦによってアクセスされた場合には有効になる。デバイス３（Ｄ３）は、Ｉ／Ｏエイリアスアドレス範囲１のアドレス０ｘ２００１２０００〜０ｘ２００１２ＦＦＦによってアクセスされた場合には無効だが、Ｉ／Ｏエイリアスアドレス範囲２のアドレス０ｘ２００２２０００〜０ｘ２００２２ＦＦＦによってアクセスされた場合には有効になる。デバイス４（Ｄ４）は、Ｉ／Ｏエイリアスアドレス範囲１のアドレス０ｘ２００１３０００〜０ｘ２００１３ＦＦＦによってアクセスされた場合には有効だが、Ｉ／Ｏエイリアスアドレス範囲２のアドレス０ｘ２００２２０００〜０ｘ２００２２ＦＦＦによってアクセスされた場合には無効になる。
【００３３】
上記のアクセス制御部２０の制御動作と、図５で説明したＭＰＵによる領域設定とが組み合わされることにより、アプリケーションソフトウェア１の動作時には、デバイス１および４はＣＰＵ１０からアクセス可能になり、デバイス２および３はＣＰＵ１０からアクセスできなくなる。すなわち、図４に示した設定でのデバイスのアクセス制御が実現できる。
【００３４】
図７は、アプリケーションソフトウェア２の動作時において、ＭＰＵによる領域設定について説明するための図である。図７を参照して、アプリケーションソフトウェア２の動作時には、図１のＭＰＵ１１によって、Ｉ／Ｏエイリアスアドレス範囲２（０ｘ２００２００００〜０ｘ２００２ＦＦＦＦ）がアクセス許可領域に設定される。その他のアドレス範囲はアクセス不許可となる。なお、図７に示す取り消し線は、アクセスされたときに無効とされることを示している。
【００３５】
図８は、アプリケーションソフトウェア２の動作時において、アクセス制御部２０の動作について説明するための図である。図８を参照して、アクセス制御部２０の制御動作自体は、図６で説明したアプリケーションソフトウェア１の動作時と同じである。このアクセス制御部２０の制御動作と図７で説明したＭＰＵによる領域設定とが組み合わされることにより、アプリケーションソフトウェア２の動作時には、デバイス２および３はＣＰＵ１０からアクセス可能になり、デバイス１および４はＣＰＵ１０からアクセスできなくなる。すなわち、図４に示した設定でのデバイスのアクセス制御が実現できる。なお、図８に示す取り消し線は、アクセスされたときに無効とされることを示している。
【００３６】
ここで、図６と図８とを比較すると、ＭＰＵによってアクセス許可領域として設定されるのは、連続した１領域（ＭＰＵ領域１とする）のみである。すなわち、図６の場合（アプリケーションソフトウェア１を実行する場合）には、Ｉ／Ｏエイリアスアドレス範囲１（０ｘ２００１００００〜０ｘ２００１ＦＦＦＦ）がＭＰＵ領域１に設定される。一方、図８の場合（アプリケーションソフトウェア２を実行する場合）には、Ｉ／Ｏエイリアスアドレス範囲２（０ｘ２００２００００〜０ｘ２００２ＦＦＦＦ）がＭＰＵ領域１に設定される。すなわち、デバイスアクセス制御のために設定されるＭＰＵ領域の数を削減して１つにすることができる。
【００３７】
［実施の形態１の効果］
以下、実施の形態１の効果について説明する。
【００３８】
まず、実施の形態１による情報処理装置１００では、周辺デバイス単位でのアクセス保護が実現できる。すなわち、ＭＰＵ領域を設定しただけでは、設定されたＭＰＵ領域内に配置された周辺デバイスが全てアクセス可能になってしまう。そこで、ＭＰＵ領域の設定と、周辺デバイス単位でアクセスの有効・無効を設定可能なアクセス制御部２０の機能とを組み合わせることにより、周辺デバイス単位でのアクセス可否の設定をアプリケーションごとに実現できる。
【００３９】
さらに、アプリケーション切替時には、ＭＰＵによって１領域の設定のみを変更すればよいので、実行オーバヘッドを低減できる。この結果、アプリケーション切替処理の高速化が実現される。さらに、ＣＰＵを変更する必要がないので、汎用ＣＰＵを使用することができる。
【００４０】
以下、比較例の情報処理装置と対比することにより、実施の形態１の効果について補足する。ここで、比較例の情報処理装置では、図１に示すアクセス制御部２０が設けられておらず、さらに図３に示すような複数のＩ／Ｏエイリアスアドレス範囲は設定されておらず、各周辺デバイスは単一のアドレス範囲にマッピングされているとする。
【００４１】
図９は、比較例の情報処理装置において、どのアプリケーションソフトウェアの実行時にどの周辺デバイスがアクセス可能になるように設定されるかを表形式で示す図である。図９に示す例では、周辺デバイス１、２および５は、アプリケーションソフトウェア１の動作時にアクセス可能であるが、他のアプリケーションソフトウェアの動作時にはアクセスできないように設定される。周辺デバイス３、４、６および８は、アプリケーションソフトウェア２の動作時にアクセス可能であるが、他のアプリケーションソフトウェアの動作時にはアクセスできないように設定される。周辺デバイス７は、アプリケーションソフトウェア３の動作時にはアクセス可能であるが、他のアプリケーションソフトウェアの動作時にはアクセスできないように設定される。
【００４２】
図１０は、比較例の情報処理装置の場合のアプリケーションソフトウェア１の動作時において、ＭＰＵによる領域設定について説明するための図である。
【００４３】
図１０を参照して、まず、周辺デバイスのアドレスマッピングについて説明すると、デバイス１は、単一のアドレス範囲０ｘ２００１００００〜０ｘ２００１１０００にマッピングされている。他のデバイス２，３，…についても同様であり、個別に設定された単一のアドレス範囲にマッピングされている。どのデバイスがどのアドレス範囲にマッピングされるかは、ハードウェア設計時に決定される。
【００４４】
図９のアクセス設定を実現するためには、アプリケーションソフトウェア１の動作時には周辺デバイス１、２および５をアクセス可能に設定する必要がある。ここで、ＭＰＵによって１領域として指定可能なのは連続したアドレス範囲に限られる。しかし、各アプリケーションが使用するデバイスはシステム毎に異なるため、使用する全てデバイスが連続したアドレスに配置されていない場合が多い。
【００４５】
具体的に周辺デバイス１および２は連続したアドレス範囲にマッピングされているが、周辺デバイス５は、周辺デバイス１，２とは離間したアドレス範囲にマッピングされている。したがって、周辺デバイス１，２がマッピングされているアドレス範囲０ｘ２００１００００〜０ｘ２００１１ＦＦＦをＭＰＵ領域１に設定し、周辺デバイス５が設定されているアドレス範囲０ｘ２００１４０００〜０ｘ２００１４ＦＦＦをＭＰＵ領域２に設定する必要がある。設定するＭＰＵ領域数は２つになる。
【００４６】
図１１は、比較例の情報処理装置の場合のアプリケーションソフトウェア２の動作時において、ＭＰＵによる領域設定について説明するための図である。
【００４７】
図１１を参照して、アプリケーションソフトウェア２の動作時には、周辺デバイス３、４、６および８をアクセス可能に設定する必要がある。ここで、周辺デバイス３および４は連続したアドレス範囲にマッピングされているが、周辺デバイス６および８のアドレス範囲は互いに離間するともに、周辺デバイス３，４のアドレス範囲とも離間している。したがって、周辺デバイス３，４がマッピングされているアドレス範囲０ｘ２００１２０００〜０ｘ２００１３ＦＦＦをＭＰＵ領域１に設定し、周辺デバイス６がマッピングされているアドレス範囲０ｘ２００１５０００〜０ｘ２００１５ＦＦＦをＭＰＵ領域２に設定する。さらに、周辺デバイス８がマッピングされているアドレス範囲０ｘ２００１７０００〜０ｘ２００１７ＦＦＦをＭＰＵ領域３に設定する必要がある。
【００４８】
ここで、一般的なＯＳとアプリケーションプログラムとを動作させると、メモリの保護のために多数のＭＰＵ領域が使用される。このため、周辺デバイスの保護に使用可能なＭＰＵ領域の枚数はわずかとなる。この結果、アプリケーションソフトウェアが使用する複数の周辺デバイスのアドレスが連続したアドレス範囲に配置されていない場合、ＭＰＵ領域の数が不足して一部デバイスが使えないという問題が生じることがある。図１１の場合で、デバイス保護のために利用可能なＭＰＵ領域が２枚に限られる場合は、周辺デバイス８がＭＰＵ領域に設定できなくなる。実施の形態１の情報処理装置１００では、設定すべきＭＰＵ領域数は１つで十分であるので上記の問題を回避することができる。
【００４９】
［変形例］
上記の実施の形態ではメモリマップトＩ／Ｏ方式の場合について説明した。これに対して、ポートマップトＩ／Ｏ方式の場合にも、周辺デバイス用のアドレス空間に複数のＩ／Ｏエイリアスアドレス範囲を設定し、各Ｉ／Ｏエイリアスアドレス範囲ごとに情報処理装置内の複数の周辺デバイスがマッピングされるようにすれば、上記と同様のデバイスアクセス保護を実現することができる。
【００５０】
＜実施の形態２＞
［情報処理装置の構成］
図１２は、実施の形態２による情報処理装置１０１の構成を示すブロック図である。図１２の情報処理装置１０１では、図１のアクセス制御部２０がアドレスデコーダ２１によって具体的に実現される。その他の情報処理装置１０１の構成は、図１の場合と同様であるので同一または相当する部分には同一の参照符号を付して説明を繰り返さない。特に、図３で示した各周辺デバイスに対するアドレスマッピングは実施の形態２においても同じである。
【００５１】
なお、図１２では、図１のフラッシュメモリ１２およびＤＲＡＭ１３の図示が省略されている。周辺デバイス１〜ｎ（Ｄ１〜Ｄｎ）は、４個の周辺デバイスＤ１〜Ｄ４のみが代表的に示されている。
【００５２】
図１２を参照して、アドレスデコーダ２１は比較器群２２を含む。比較器群２２に含まれる比較器（イコールコンパレータ）Ａ１，Ａ２，…は、周辺デバイス１，２，…（Ｄ１，Ｄ２，…）にそれぞれ対応する。各比較器は、ＣＰＵ１０から出力されるアドレスのうち上位２０ビットが、各自のレジスタに保持されている基準値と一致するか否かを判定する。なお、以下の説明では、最上位ビット（ＭＳＢ）をビット３１とし、最下位ビット（ＬＳＢ）をビット０とする。上位２０ビットはビット３１〜１２に対応する。
【００５３】
具体的に比較器Ａ１は、ＣＰＵが出力するアドレスの上位２０ビットが基準値“０ｘ２００Ｘ０”と一致するか否かを判定する（ビット１９〜１６の値Ｘについては後述する)。比較器Ａ１は、一致する場合に、自身（比較器Ａ１）に対応するデバイス１（Ｄ１）のイネーブルポートＥＮに活性化されたチップセレクト信号１５を出力する。チップセレクト信号１５が活性化されているとき、デバイス１（Ｄ１）へのアクセスが有効になる。
【００５４】
同様に、比較器Ａ２は、ＣＰＵが出力するアドレスの上位２０ビットが基準値“０ｘ２００Ｘ１”に一致するか否かを判定し、一致する場合に対応のデバイス２（Ｄ２）のイネーブルポートＥＮに出力するチップセレクト信号１５を活性化する。比較器Ａ３は、ＣＰＵが出力するアドレスの上位２０ビットが基準値“０ｘ２００Ｘ２”に一致するか否かを判定し、一致する場合に対応のデバイス３（Ｄ３）のイネーブルポートＥＮに出力するチップセレクト信号１５を活性化する。比較器Ａ４は、ＣＰＵが出力するアドレスの上位２０ビットが基準値“０ｘ２００Ｘ３”に一致するか否かを判定し、一致する場合に対応のデバイス４（Ｄ４）のイネーブルポートＥＮに出力するチップセレクト信号１５を活性化する。
【００５５】
ここで、ビット１９〜１６の値“Ｘ”はアプリケーションソフトに対応する値に設定される。アプリケーションソフトウェア１の場合はＸ＝０ｘ１であり、アプリケーションソフトウェア２場合はＸ=０ｘ２である。アプリケーションソフトウェア１および２のいずれにも対応する場合には、比較器は、アドレスのビット１９〜１６の値がＸ＝０ｘ１およびＸ＝０ｘ２のいずれかに一致するか否かを判定する。この場合、たとえば、デバイス１用に２つのイコールコンパレータとこれらのコンパレータの出力のＯＲ演算を行う論理回路とが設けられる。
【００５６】
他の方法として、アドレスの割り付けを工夫してビット単位でのアクセスの禁止・許可を設定可能にすれば、１つのデバイスに複数のアプリケーションソフトウェアを割付けることが可能になる。たとえば、図５、図１２を参照して、ビット１６の値が“１”（ビット１９〜１７の値は任意とする）の場合にデバイス１へのアクセスが可能であるとすると、アプリケーションソフトウェア１，３，５，…の各々の実行時にデバイス１へのアクセスが可能になる。一般的には各デバイスごとに、（１）許可するアドレスのビットのパターンを設定するレジスタ（アドレスパターンレジスタ）および（２）そのうちアクセス許可に用いるビットを設定するレジスタ（アドレスマスクレジスタ）を用意すれば、デバイスごとに複数のアプリケーションソフトに対してアクセスを許可することが可能になる。
【００５７】
ビット１５〜１２は、周辺デバイス１，２，…（Ｄ１，Ｄ２，…）を特定するために用いられる。ビット１５〜１２の値が０ｘ０のとき周辺デバイス１を示す。同様にビット１５〜１２の値が０ｘ１のとき周辺デバイス２を示し、ビット１５〜１２の値が０ｘ２のとき周辺デバイス３を示し、ビット１５〜１２の値が０ｘ３のとき周辺デバイス４を示す。
【００５８】
［具体的な動作例］
以下、実施の形態２による情報処理装置１０１の具体的な動作例について説明する。
【００５９】
図１３は、実施の形態２の情報処理装置において、どのアプリケーションソフトウェアの実行時にどの周辺デバイスがアクセス可能になるように設定されるかを表形式で示す図である。図１３に示す例では、周辺デバイス１および４は、アプリケーションソフトウェア１の動作時にアクセス可能であるが、その他のアプリケーションソフトウェアの動作時にはアクセスできないように設定される。周辺デバイス２および３は、アプリケーションソフトウェア２の動作時にアクセス可能であるが、その他のアプリケーションソフトウェアの動作時にはアクセスできないように設定される。
【００６０】
上記の設定例の場合には、図１２の比較器Ａ１〜Ａ４においてアドレスと比較される基準値は、それぞれ０ｘ２００１０，０ｘ２００２１，０ｘ２００２２，０ｘ２００１３となる。これらの基準値は、情報処理装置１０１の立上げ時にＯＳなどのシステムソフトウェアによって設定される。アプリケーションソフトウェアの切替時には再設定する必要はない。
【００６１】
図１４は、図１３の設定例における情報処理装置１０１の動作を説明するための図である。図１４を参照して、アドレスデコーダ２１による比較動作に基づいて、ＣＰＵ１０からアドレス０ｘ２００１００００〜０ｘ２００１０ＦＦＦによってデバイス１（Ｄ１）がアクセスされたときにそのアクセスは有効になる。同様に、ＣＰＵ１０からアドレス０ｘ２００２１０００〜０ｘ２００２１ＦＦＦによってデバイス２（Ｄ２）がアクセスされたときにそのアクセスは有効になる。ＣＰＵ１０からアドレス０ｘ２００２２０００〜０ｘ２００２２ＦＦＦによってデバイス３（Ｄ３）がアクセスされたときにそのアクセスは有効になる。ＣＰＵ１０からアドレス０ｘ２００１３０００〜０ｘ２００１３ＦＦＦによってデバイス４（Ｄ４）がアクセスされたときにそのアクセスは有効になる。上記以外のアドレスによって各デバイスがアクセスされた場合には、そのアクセスは無効になる。なお、図１４に示す取り消し線は、アクセスされたときに無効とされることを示している。
【００６２】
アプリケーションソフトウェア１の動作時には、実施の形態１の場合と同様に、ＭＰＵ１１によって図３のＩ／Ｏエイリアスアドレス範囲１（０ｘ２００１００００〜０ｘ２００１ＦＦＦＦ）がアクセス許可領域（ＭＰＵ領域１）に設定される。その他のアドレス範囲はアクセス不許可となる。したがって、アドレスデコーダ２１の機能と組み合わされることによって、アプリケーションソフトウェア１の動作時には、デバイス１および４はＣＰＵ１０からアクセス可能になり、デバイス２および３はＣＰＵ１０からアクセスできなくなる。
【００６３】
アプリケーションソフトウェア２の動作時には、ＭＰＵ１１によって図３のＩ／Ｏエイリアスアドレス範囲２（０ｘ２００２００００〜０ｘ２００２ＦＦＦＦ）がアクセス許可領域に設定される。その他のアドレス範囲はアクセス不許可となる。したがって、アドレスデコーダ２１の機能と組み合わされることによって、アプリケーションソフトウェア２の動作時には、デバイス２および３はＣＰＵ１０からアクセス可能になり、デバイス１および４はＣＰＵ１０からアクセスできなくなる。
【００６４】
［実施の形態２の効果］
以上のとおり、実施の形態２の情報処理装置１０１によれば、図１のアクセス制御部２０がアドレスデコーダ２１として具体的に実現されている。この結果、実施の形態１の場合と同様の効果を奏することができる。
【００６５】
＜実施の形態３＞
図１５は、実施の形態３による情報処理装置１０２の構成を示すブロック図である。なお、図１５では、図１のフラッシュメモリ１２およびＤＲＡＭ１３の図示が省略されている。周辺デバイス１〜ｎ（Ｄ１〜Ｄｎ）は、４個の周辺デバイスＤ１〜Ｄ４のみが代表的に示されている。
【００６６】
図１５を参照して、実施の形態３による情報処理装置１０２は、周辺デバイス１，２，３，…（Ｄ１，Ｄ２，Ｄ３，…）の内部にそれぞれ設けられた比較器Ｃ１，Ｃ２，Ｃ３，…を含む点で図１２の情報処理装置１０１と異なる。ＣＰＵから各周辺デバイスのデバイス本体（Ｂ１，Ｂ２，Ｂ３，…）へのアクセスは、アドレスデコーダ２１に設けられた対応する比較器Ａ１，Ａ２，Ａ３，…の比較結果とともに、対応する比較器Ｃ１，Ｃ２，Ｃ３，…の比較結果に基づいて、有効または無効に切り替えられる。
【００６７】
各比較器Ａ１，Ａ２，Ａ３，Ａ４は、ＣＰＵ１０によって対応する周辺デバイスがアクセスされているか否かを判定する。具体的には、比較器Ａ１，Ａ２，Ａ３，Ａ４の各々は、ＣＰＵ１０から出力されたアドレスのうちビット３１〜２０およびビット１５〜１２が各比較器ごとに定められた基準値と一致するか否かを判定する。比較器Ａ１，Ａ２，Ａ３，Ａ４においてアドレスと比較される基準値は、それぞれ０ｘ２００Ｘ０，０ｘ２００Ｘ１，０ｘ２００Ｘ２，０ｘ２００Ｘ３である（ただし、Ｘは任意の値）。
【００６８】
周辺デバイス１〜４にそれぞれ設けられた比較器Ｃ１，Ｃ２，Ｃ３，Ｃ４の各々は、対応する周辺デバイスで動作させるべきアプリケーションソフトウェアを判別するために設けられている。具体的には、比較器Ｃ１，Ｃ２，Ｃ３，Ｃ４の各々は、ＣＰＵ１０から出力されたアドレスのうちビット１９〜１６が各比較器ごとに定められた基準値と一致するか否かを判定する。図１５に示す例では、この基準値は、比較器Ｃ１，Ｃ２，Ｃ３，Ｃ４の場合にそれぞれ０ｘ１，０ｘ２，０ｘ２，０ｘ１である。
【００６９】
したがって、図１５に示す例では、周辺デバイス１および４は、アプリケーションソフトウェア１の動作時にアクセス可能になり、周辺デバイス２および３は、アプリケーションソフトウェア２の動作時にアクセス可能になる。
【００７０】
図１５のその他の点は図１２、図１４の場合と同じであるので、同一または相当する部分には同一の参照符号を付して説明を繰り返さない。なお、図１５に示す取り消し線は、アクセスされたときに無効とされることを示している。
【００７１】
上記のように実施の形態３の場合には、アドレスデコーダ２１に設けられた比較器Ａ１，Ａ２，Ａ３，…と個々のデバイスに設けられた比較器Ｃ１，Ｃ２，Ｃ３，…とによって、図１３に示すアドレスデコーダ２１と同等の機能（すなわち、図１のアクセス制御部２０の機能）が実現できる。この結果、実施の形態３の情報処理装置１０２は、実施の形態１，２の場合と同様の効果を奏する。
【００７２】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は上記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることは言うまでもない。
【符号の説明】
【００７３】
１０  ＣＰＵ、１１  メモリ保護ユニット（ＭＰＵ）、１２  フラッシュメモリ、１３  ＤＲＡＭ、１４  バス、１５  チップセレクト信号、２０  アクセス制御部、２１  アドレスデコーダ、２２  比較器群、１００，１０１，１０２  情報処理装置、Ａ１〜Ａ４，Ｃ１〜Ｃ４  比較器、Ｄ１〜Ｄ４  周辺デバイス。
【図１】
2015035155.tif 000003
【図２】
2015035155.tif 000004
【図３】
2015035155.tif 000005
【図４】
2015035155.tif 000006
【図５】
2015035155.tif 000007
【図６】
2015035155.tif 000008
【図７】
2015035155.tif 000009
【図８】
2015035155.tif 000010
【図９】
2015035155.tif 000011
【図１０】
2015035155.tif 000012
【図１１】
2015035155.tif 000013
【図１２】
2015035155.tif 000014
【図１３】
2015035155.tif 000015
【図１４】
2015035155.tif 000016
【図１５】
2015035155.tif 000017