(57)【要約】【課題】ＣＰＵからのアクセスに対して、Ｈ／Ｗの制限なしに周辺装置を保護することが可能な情報処理装置及びそのアクセス制御方法を提供する。【解決手段】ＣＰＵ２１０と、ＣＰＵ２１０とバス２４０を介して接続される複数の周辺装置２２０、２３０とを備えた情報処理装置であって、ＣＰＵ２１０が実行するタスクの種類に対応して周辺装置２２０、２３０毎のアクセス許可又は禁止を指定するアクセス保護情報を格納する周辺アクセス保護設定手段２１５を備え、前記アクセス保護情報と周辺装置２２０、２３０のアドレス情報とに基づいてＣＰＵ２１０から周辺装置２２０、２３０へのアクセスが制御されることを特徴とする情報処理装置である。【選択図】図２
2007334432.tif 000002
【特許請求の範囲】
【請求項１】
ＣＰＵと、前記ＣＰＵとバスを介して接続される複数の周辺装置とを備えた情報処理装置であって、
前記ＣＰＵが実行するタスクの種類に対応して前記周辺装置毎のアクセス許可又は禁止を指定するアクセス保護情報を格納する周辺アクセス保護設定手段を備え、
前記アクセス保護情報と前記周辺装置のアドレス情報とに基づいて前記ＣＰＵから前記周辺装置へのアクセスが制御されることを特徴とする情報処理装置。
【請求項２】
前記周辺装置は、
前記アクセス保護情報と前記周辺装置のアドレス情報とに基づいて前記周辺装置へのアクセスが制御されるアクセス制御手段を有することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記アクセス制御手段は、前記アクセス保護情報に基づいて前記ＣＰＵからのアクセスが許可されているか否かを判別する保護情報判別手段と、
前記ＣＰＵが出力するアドレス情報に基づいてアクセス要求の有無を検出するアクセス検出手段と、
前記保護情報判別手段と前記アクセス検出手段からの情報に基づき前記ＣＰＵからのアクセスを許可するか否かを判定する判定手段を有することを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記アクセス制御手段によって、前記周辺装置内のリソースが前記ＣＰＵからアクセスされることを特徴とする請求項２に記載の情報処理装置。
【請求項５】
前記アクセス保護情報は、前記ＣＰＵが実行するタスクの種類と、該タスクが実行される場合に前記周辺装置に対するアクセス許可又は禁止を指定するアクセス保護内容とを、互いに関連付けたコード情報であることを特徴とする請求項１に記載の情報処理装置。
【請求項６】
前記ＣＰＵは、前記アクセス保護情報に基づいて保護されている周辺装置にアクセスしたことを検出した場合、アクセス違反が生じたことを示す情報を格納するアクセス違反設定手段を有することを特徴とする請求項１に記載の情報処理装置。
【請求項７】
前記ＣＰＵは、アクセスを制御する周辺装置のアドレス範囲を設定した保護アドレス設定手段を有し、
前記保護アドレス設定手段によって設定されたアドレス範囲に基づいて、前記ＣＰＵからアクセス要求するか否かが設定されることを特徴とする請求項１に記載の情報処理装置。
【請求項８】
前記ＣＰＵから前記周辺装置へのアクセスを要求する信号と、前記アクセス制御手段への前記アクセス保護情報の信号出力とが、同時に行われることを特徴とする請求項２に記載の情報処理装置。
【請求項９】
前記保護情報判別手段は、前記周辺装置に配設されていることを特徴とする請求項３に記載の情報処理装置。
【請求項１０】
前記保護情報判別手段は、複数の前記周辺装置に対する判別手段として１つに集約して構成され、前記ＣＰＵと前記周辺装置との間に設けられていることを特徴とする請求項３に記載の情報処理装置。
【請求項１１】
前記保護情報判別手段は、前記アクセス保護情報と関連付けられたアクセス保護内容を示す対応テーブルを格納した記憶素子を有することを特徴とする請求項３に記載の情報処理装置。
【請求項１２】
前記ＣＰＵは、該ＣＰＵから保護する周辺装置をタスク個別に設定するタスク識別手段を有することを特徴とする請求項１に記載の情報処理装置。
【請求項１３】
前記アクセス保護情報は、前記タスクの種類と、前記アクセス保護内容とを互いに関連付けたバイナリコードによって示されるコード情報であることを特徴とする請求項５に記載の情報処理装置。
【請求項１４】
前記アクセス保護情報は、前記タスクの種類に応じたアクセス要求に対し、前記周辺装置毎に許可するか否かの情報を有すバイナリコードによって示されるコード情報であることを特徴とする請求項５に記載の情報処理装置。
【請求項１５】
前記アクセス保護情報は、前記タスクの種類に応じたアクセス要求に対し、前記周辺装置毎に読み出すか又は書き込むかの情報を有すバイナリコードによって示されるコード情報であることを特徴とする請求項５に記載の情報処理装置。
【請求項１６】
ＣＰＵと、前記ＣＰＵとバスを介して接続される複数の周辺装置とのアクセス制御方法であって、
前記ＣＰＵが実行するタスクの種類に対応して前記周辺装置毎のアクセス許可又は禁止を指定するアクセス保護情報を格納し、
前記アクセス保護情報と前記周辺装置のアドレス情報とに基づいて前記ＣＰＵから前記周辺装置へのアクセスが制御されることを特徴とするアクセス制御方法。
【請求項１７】
前記周辺装置は、
前記アクセス保護情報に基づいてアクセスが許可されているか否かを判別し、
前記ＣＰＵが出力するアドレス情報に基づいてアクセス要求の有無を検出し、
前記アクセス保護情報と前記アドレス情報に基づき前記ＣＰＵからのアクセスを許可するか否かを判定し、
前記ＣＰＵから前記周辺装置へのアクセスが制御されることを特徴とする請求項１６に記載のアクセス制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＣＰＵ（Central Processing Unit）からのアクセスに対する周辺装置への保護機能を備えた情報処理装置及びそのアクセス制御方法に関する。
【背景技術】
【０００２】
ＣＰＵが周辺装置とアクセスする場合、ＣＰＵからコントロール信号が出力され、特定の処理が実行される。例えば、周辺装置がハードディスク装置である場合、ＣＰＵとハードディスク装置との間で、データの読み書きに関するタスクが実行される。データの読み出し時は、ＣＰＵからリード信号が出力されると共に、ハードディスク装置の指定アドレスからデータが出力される。データの書き込み時は、ＣＰＵからライト信号が出力されると共に、ハードディスク装置の指定アドレスにデータが保存される。ＣＰＵから出力されるコントロール信号は、リード／ライト信号の他に、ハードディスクの指定アドレス情報を有している。
【０００３】
例えば、ハードディスク装置に重要なデータが格納されており、書き換えられないようにしたい場合、ＣＰＵからのアクセスに対し保護する技術が必要となる。これは、ＣＰＵとアクセスする周辺装置がハードディスク装置の場合に限らない。例えば、ＣＰＵから割り込みコントローラやタイマ等Ｉ／Ｏデバイスへのアクセスに対しても同様である。
【０００４】
ＣＰＵからのアクセス要求に対し周辺装置を保護する技術が、特許文献１に開示されている。特許文献１では、周辺装置のアドレス毎にＣＰＵからのアクセスを制御するレジスタが備えられ、周辺装置のアドレス毎にアクセスするか否かが設定されている。このように、特許文献１ではアクセスを保護する周辺装置をアドレス単位で設定している。
【特許文献１】特開２００３−２８０９８８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、発明者は従来技術には以下の課題があることを見出した。従来技術では、周辺装置のアドレス毎に、アクセスするか否かを制御するレジスタ及び比較器等のＨ／Ｗ（Hardware）を保持する必要がある。例えば、メモリマップドＩ／ＯにマッピングされているＩ／Ｏデバイスへのアクセス要求に対して保護を行う場合、多くのアドレス範囲を保護する必要がある。１つのＩ／Ｏデバイスは広範囲に複数のアドレスを持っているためである。このように、多くのアドレス範囲に対する保護を行う場合、Ｈ／Ｗの制限によって保護する周辺装置の数が制限されるという問題が生じる。
【課題を解決するための手段】
【０００６】
本発明の第１の態様は、ＣＰＵと、前記ＣＰＵとバスを介して接続される複数の周辺装置とを備えた情報処理装置であって、前記ＣＰＵが実行するタスクの種類に対応して前記周辺装置毎のアクセス許可又は禁止を指定するアクセス保護情報を格納する周辺アクセス保護設定手段を備え、前記アクセス保護情報と前記周辺装置のアドレス情報とに基づいて前記ＣＰＵから前記周辺装置へのアクセスが制御されることを特徴とする情報処理装置である。
【０００７】
また、本発明の第２の態様は、ＣＰＵと、前記ＣＰＵとバスを介して接続される複数の周辺装置とのアクセス制御方法であって、前記ＣＰＵが実行するタスクの種類に対応して前記周辺装置毎のアクセス許可又は禁止を指定するアクセス保護情報を格納し、前記アクセス保護情報と前記周辺装置のアドレス情報とに基づいて前記ＣＰＵから前記周辺装置へのアクセスが制御されることを特徴とするアクセス制御方法である。
【０００８】
このように、アクセス保護情報によってＣＰＵのアクセスから保護する周辺装置を設定することにより、従来のようにアドレス単位でＨ／Ｗに設定する必要がなくなる。従って、アドレス毎にレジスタ等のＨ／Ｗを保持する必要がなくなる。
【発明の効果】
【０００９】
以上のような構成により、ＣＰＵからのアクセスに対して、Ｈ／Ｗの制限なしに周辺装置を保護することが可能な情報処理装置及びそのアクセス制御方法を提供することができる。
【発明を実施するための最良の形態】
【００１０】
以下に、本発明の好ましい実施の形態を説明する。説明の明確化のため、以下の記載及び図面は、適宜、省略、及び簡略化がなされている。また、説明の明確化のため、必要に応じて重複説明は省略されている。
【００１１】
発明の実施の形態１．
始めに、ＣＰＵから周辺装置へのアクセス保護機能の目的について以下に説明する。なお、ＣＰＵから周辺装置へのアクセス要求に対してデータのリードやライト等のアクセスをさせないように保護することを、アクセス保護と称す。本発明では、以下の目的に沿ったアクセス保護機能の例を説明する。第１に、アクセス保護領域として設定された周辺装置は、使用者の設定したアクセス保護情報によって保護される。即ち、不正なアクセスによって周辺装置の状態が更新されないことを保証する。第２に、不正なアクセスが最初に発生した場合、その情報を使用者に通知する。第３に、不正なアクセスが発生した場合、アクセスの中止を要求する信号が出力される。この信号の解除処理が実行されるまで、アクセス保護領域として設定された周辺装置へのアクセスが禁止される。
【００１２】
図面を参照し、第１の実施形態に係るアクセス保護機能を備えた装置について説明する。第１の実施形態では、ＬＳＩ等の半導体素子に１チップ形成した情報処理装置を例示的に説明するが、１チップ形成した情報処理装置に限るものではない。また、第１の実施形態では、ＣＰＵからメモリマップドＩ／Ｏへのアクセスを保護する例として説明する。メモリマップドＩ／Ｏについて、以下に説明する
【００１３】
図１は、メモリマップドＩ／Ｏの例を示している。メモリマップドＩ／Ｏは、Ｉ／Ｏデバイスと呼ばれる周辺装置をメモリ空間にマッピングしたものである。図１では、タイマ制御レジスタ領域１０１、バス２設定・制御レジスタ領域１０２、バス１設定・制御レジスタ領域１０３、及び２つのＩＮＴＣ制御レジスタ領域１０４、１０５等のＩ／Ｏデバイスがマッピングされている。ＩＮＴＣ制御レジスタ領域１０４、１０５に示されるように、関連するレジスタが必ずしも同じ領域に配置されているわけではない。なお、図１のメモリマップドＩ／Ｏ１００には、２つの空き領域１０６、１０７も示されている。
【００１４】
これら各々のＩ／Ｏデバイスは、ＣＰＵがデータのライトやリード等のアクセスをする周辺装置を示している。以後、周辺装置をＩ／Ｏデバイスと称す。マッピングされるＩ／Ｏデバイスは、上述したものに限らず他のＩ／Ｏデバイスを設定することも可能である。マッピングの位置については、上述した位置に限らず変更が可能である。
【００１５】
次に、図２を用いて第１の実施形態に係る情報処理装置について説明する。図２は、第１の実施形態に係る情報処理装置のブロック図を示す。情報処理装置２００は、ＣＰＵ２１０、２つのＩ／Ｏデバイス２２０、２３０、及び周辺アクセスバス２４０を有している。ＣＰＵ２１０は、メモリ保護ユニット２１１を有している。メモリ保護ユニット２１１は、ＰＰＡ（Peripheral Protection Address：周辺保護アドレス）レジスタ２１２、モードレジスタ２１３、判定器２１４、ＰＰＣ（Peripheral Protection Control：周辺保護コントロール）レジスタ２１５、及び周辺保護違反レジスタ２１６を有している。
【００１６】
Ｉ／Ｏデバイス２２０、２３０には、各々保護情報判別部２２１、２３１、アクセス検出部２２２、２３２、デコーダ２２３、２３３、インターフェース部（以下、Ｉ／Ｆと記す）２２６、２３６、及びリソース２２４、２３４を有している。また、それぞれの保護情報判別部２２１、２３１、アクセス検出部２２２、２３２、及びデコーダ２２３、２３３によって、アクセス制御回路２２５、２３５が構成されている。
【００１７】
リソース２２４、２３４は、ＣＰＵ２１０からのアクセスによりデータのリードやライトが行われるレジスタ等であって、例えば図１に示したメモリマップドＩ／Ｏの各々のレジスタを意味する。従って、情報処理装置２００は、その機能に応じて様々な目的を持つリソースを有するＩ／Ｏデバイスを備えることが可能である。第１の実施形態に係る情報処理装置２００では、２つのＩ／Ｏデバイス２２０、２３０が備えられているが、Ｉ／Ｏデバイスは２つに限らず、単一又は２つ以上の複数個に形成することも可能である。ＣＰＵ２１０とＩ／Ｏデバイス２２０、２３０とは、周辺アクセスバス２４０を介して信号の入出力が行われる。なお、リソース２２４、２３４以外のＩ／Ｏデバイス２２０、２３０各部の要素については、後述する。
【００１８】
メモリ保護ユニット２１１は、Ｉ／Ｏデバイス２２０、２３０へのアクセス保護機能を備えたユニットである。メモリ保護ユニット２１１の各要素について、以下に説明する。ＰＰＡレジスタ２１２は、ＣＰＵ２１０からのアクセス保護対象となるＩ／Ｏデバイスのアドレス範囲を示すアドレス情報が格納されている。即ち、ＰＰＡレジスタ２１２は、ＣＰＵ２１０からのアクセスを制御する周辺装置のアドレス範囲を設定した保護アドレス設定手段である。ＣＰＵ２１０がＰＰＡレジスタ２１２に設定されたアドレスにアクセス要求した場合、アクセス保護対象であることを示す信号をアクティブにする。ＰＰＡレジスタ２１２に設定されているアドレス範囲以外へのアクセス要求が発生した場合、アクセス保護は実行しない。即ち、ＰＰＡレジスタ２１２によって設定されたアドレス範囲に基づいて、ＣＰＵ２１０からアクセスするか否かが制御される。このようにＰＰＡレジスタ２１２を設定することにより、アクセス保護機能と関与しない領域を設けることが可能となる。
【００１９】
モードレジスタ２１３は、ＣＰＵ２１０のモードが特権モードであるかユーザモードであるかを示す情報が格納されている。ＣＰＵ２１０は、Ｉ／Ｏデバイスへのアクセス保護時において、特権モードとユーザモードとに切り替えて使用することが可能である。特権モードは、ＯＳ（Operating System）が機能する時に使用するモードであり、アクセス保護情報の有無に係らず、あらゆるＩ／Ｏデバイスへのアクセスが可能である。ユーザモードは、ＯＳ以外のアプリケーションプログラムが使用するモードであり、一部のＩ／Ｏデバイスへのアクセスが不可能となるモードである。モードレジスタ２１３では、ＣＰＵ２１０がリセットされた時、特権モードに初期化されるが、その後の設定はＯＳによって切り替えられる。特権モードからユーザモードへ移行することにより、ＣＰＵ２１０でタスクが実行される。ユーザモードでのタスク実行時に違反が発生した場合は、自動的に特権モードに切り替わる。第１の実施形態に係るアクセス制御は、ユーザモードの時に行われる。なお、タスクとは、ＯＳから見た処理の実行単位であり、タスクの切り替え等の管理はＯＳが行っている。
【００２０】
判定器２１４は、ＰＰＡレジスタ２１２の情報とモードレジスタ２１３の情報を元に、ＣＰＵ２１０からのアクセス要求信号を出力するか否かを判定する。即ち、ＰＰＡレジスタ２１２からの信号がアクティブであるか否か、及びモードレジスタ２１３の信号が特権モードを示しているかユーザモードであるかを判定する。ＰＰＡレジスタ２１２からの信号がアクティブであり、モードレジスタ２１３がユーザモードを示す信号である場合、ＣＰＵ２１０からの信号をＰＰＣレジスタ２１５に出力する。ＰＰＡレジスタ２１２からの信号がアクティブでない場合、又はモードレジスタ２１３が特権モードを示す信号である場合のいずれか又は両方の場合、ＣＰＵ２１０からのアクセス要求信号はＰＰＣレジスタ２１５に出力されない。
【００２１】
ＰＰＣレジスタ２１５は、ＣＰＵ２１０のアクセス要求から保護するＩ／Ｏデバイスを設定するレジスタである。ＰＰＣレジスタ２１５は、保護したいＩ／Ｏデバイスのアドレスではなく、保護したいＩ／Ｏデバイスそのものを指定する。即ち、ＰＰＣレジスタ２１５には、アドレスの代わりにＩ／Ｏデバイスを指定するコード情報が設定されている。このコード情報は、ＣＰＵ２１０がタスクを実行する時、ＣＰＵ２１０のアクセス要求から保護するか否かをＩ／Ｏデバイス毎に関連付けたものである。即ち、コード情報は、ＣＰＵ２１０が実行するタスクの種類と、ＣＰＵ２１０が実行するタスクに対応して周辺装置毎のアクセス許可又は禁止を指定するアクセス保護内容を関連付けたアクセス保護情報である。表１を用いて、ＰＰＣレジスタ２１５に設定されるコード情報の例について説明する。
【００２２】
【表１】
2007334432.tif 000003
【００２３】
表１では、ＣＰＵ２１０からのアクセス要求から保護するＩ／ＯデバイスＡ、Ｂ、Ｃ、及びＤが示されている。例えば、Ｉ／ＯデバイスＡは、図１におけるＩＮＴＣ制御レジスタ領域（割り込みレジスタ領域）１０４、１０５と、例示的に対応付けることが可能である。同様に、Ｉ／ＯデバイスＢが、バス１設定・制御レジスタ領域１０３、Ｉ／ＯデバイスＣが、バス２設定・制御レジスタ領域１０２、及びＩ／ＯデバイスＤが、タイマ制御レジスタ領域１０１と示すことが可能である。
【００２４】
ＣＰＵ２１０からＯＳで管理されるタスク１の処理が発生した場合、表１に示すようにＰＰＣレジスタ２１５には１２３というコード情報（１０進数）が設定される。ＰＰＣレジスタ２１５へのコード情報の設定は、特権モード時にＯＳによって実行される。ここでは、コード情報は１０進数で説明するが、実際にＰＰＣレジスタ２１５には１０進数に対応したバイナリコードが設定されている。ＰＰＣレジスタ２１５に１２３というコード情報が設定された場合、Ｉ／ＯデバイスＡ及びＩ／ＯデバイスＢへのアクセスは許可され、Ｉ／ＯデバイスＣ及びＩ／ＯデバイスＤへのアクセス要求は不許可となる。即ち、コード情報によって、タスクと保護したいＩ／Ｏデバイスが関連付けられている。ＰＰＣレジスタ２１５は、ＣＰＵ２１０が実行するタスク種類毎に応じて、Ｉ／Ｏデバイス毎のアクセス許可又は禁止を指定するアクセス保護情報を格納する周辺アクセス保護設定手段である。
【００２５】
タスク２の処理が発生した場合も、コード情報は、タスク１と同様に１２３が設定される。従って、タスク２の処理でも、タスク１と同様に、Ｉ／ＯデバイスＡ及びＩ／ＯデバイスＢへのアクセス要求は許可されるが、Ｉ／ＯデバイスＣ及びＩ／ＯデバイスＤへのアクセス要求は不許可となり保護される。
【００２６】
一方、ＣＰＵ２１０からＯＳで管理されるタスク３の処理が発生した場合、ＰＰＣレジスタ２１５には４５６というコード情報が設定される。従って、Ｉ／ＯデバイスＢ及びＩ／ＯデバイスＣへのアクセスは許可され、Ｉ／ＯデバイスＡ及びＩ／ＯデバイスＤへのアクセス要求は不許可となる。同様に、タスク４の処理が発生した場合も、コード情報は、タスク３と同様に４５６が設定される。従って、タスク４の処理でも、タスク２と同様に、Ｉ／ＯデバイスＢ及びＩ／ＯデバイスＣへのアクセス要求は許可されるが、Ｉ／ＯデバイスＡ及びＩ／ＯデバイスＤへのアクセス要求は不許可となり、保護される。
【００２７】
更に、ＣＰＵ２１０からＯＳで管理されるタスク５の処理が発生した場合、ＰＰＣレジスタ２１５には７８９というコード情報が設定される。従って、Ｉ／ＯデバイスＡ及びＩ／ＯデバイスＤへのアクセスは許可され、Ｉ／ＯデバイスＢ及びＩ／ＯデバイスＣへのアクセス要求は不許可となる。このように、１２３等のコード情報は、ＣＰＵ２１０が実行するタスクの種類と、そのタスクからのアクセスが保護されるＩ／Ｏデバイスの保護内容とが互いに関連付けられたアクセス保護情報である。
【００２８】
表１で示されるコード情報は、ビットの配列によって示される。コード情報は、保護したいＩ／Ｏデバイスの組み合わせに応じて、別の配列を設定することも可能である。表１では、２つのＩ／Ｏデバイスの組み合わせに対して保護していたが、保護するＩ／Ｏデバイスの数は２つに限らず、他の組み合わせを設定できることはもちろんである。
【００２９】
図３は、コード情報のバリエーションを示したものである。設定例Ａでは、Ｉ／Ｏデバイス毎にリード許可する許可ビット（Ｒ許可）及びライト許可する許可ビット（Ｗ許可）が設定される。許可する場合は"１"が設定され、不許可の場合は"０"が設定される。例えば、Ｉ／ＯデバイスＡのリードのみ許可され、その他のＩ／Ｏデバイスが不許可である場合、コード情報には"１０００００００"を示す許可ビットが設定される。更に、設定例Ａの別の形態として、リード／ライト双方を許可するＲ／Ｗ許可ビットを追加することも可能である。
【００３０】
設定例Ｂでは、Ｉ／Ｏデバイス毎にＣＰＵからのアクセス許可する許可ビット（アクセス許可）が設定される。設定例Ａと同様に、許可する場合は"１"が設定され、不許可の場合は"０"が設定される。例えば、Ｉ／ＯデバイスＡへのアクセスのみ許可され、その他のＩ／Ｏデバイスが不許可である場合、コード情報には、"１０００" 示す許可ビットが設定される。
【００３１】
設定例Ｃでは、表１に示すように、ビットの配列によるコード情報が設定されている。このコード情報は、ＣＰＵ２１０が実行するタスクの種類と、そのタスクから保護したいＩ／Ｏデバイスのアクセス保護情報とを互いに関連付けたものである。保護したいＩ／Ｏデバイスや、その組み合わせに応じて、各々コード情報を設定する。なお、表１では、コード情報は"１２３"等の１０進数で表現するが、ＰＰＣレジスタ２１５には１０進数に対応したバイナリコードが設定されている。また、コード情報には、タスク番号そのものをバイナリコードとして用いることも可能である。また、設定例Ｄとして、一部に設定例Ｃで示したコード情報を持ち、残りを設定例Ａ、Ｂで示したＩ／Ｏデバイス毎の許可ビットを設定することも可能である。
【００３２】
第１の実施形態では、ＣＰＵ２１０からのアクセス要求に対しＩ／Ｏデバイスを保護する場合、Ｉ／ＯデバイスのアドレスではなくＩ／Ｏデバイスを指定するコード情報によって保護領域を設定することに特徴を有している。アクセス保護領域を示すコード情報を設定するレジスタがＰＰＣレジスタ２１５である。従って、従来技術にようにアドレス毎に保護されているか否かを判断する必要がなくなり、アドレス毎に設けられたＨ／Ｗを削減することができる。
【００３３】
なお、メモリ保護ユニット２１１には、周辺保護違反レジスタ２１６が備えられている。周辺保護違反レジスタ２１６は、アクセス保護情報に基づいてＣＰＵ２１０のアクセスから保護されているＩ／Ｏデバイスへのアクセス要求が発生した場合（以降、アクセス違反と称す）、アクセス違反があったことを示すビットを格納するレジスタである。つまり、周辺保護違反レジスタ２１６は、アクセス違反設定手段を有している。
【００３４】
また、周辺アクセスバス２４０は、ＰＰＣレジスタ２１５からの許可情報を出力するバス２４１と、ＣＰＵ２１０からアクセス要求するＩ／Ｏデバイスのアドレス情報を出力するバス２４２を有している。即ち、周辺アクセスバス２４０は、バス２４１とバス２４２の両方を合わせて示すものである。バスラインは、各Ｉ／Ｏデバイス個別に複数接続したり、スター状に接続することも可能である。更に、周辺アクセスバス２４０とＣＰＵ２１０との間には、バスブリッジを介する構成とすることも可能であるが、図が煩雑となるため図示しない。
【００３５】
次に、Ｉ／Ｏデバイス２２０、２３０の各要素について説明する。代表してＩ／Ｏデバイス２２０について説明するが、Ｉ／Ｏデバイス２３０についても同様の機能を有している。なお、リソース２２４、２３４の説明は、前述しているので省略する。Ｉ／Ｏデバイス２２０は、保護情報判別部２２１、アクセス検出部２２２、デコーダ２２３、Ｉ／Ｆ２２６、及びリソース２２４を有している。また、保護情報判別部２２１、アクセス検出部２２２、及びデコーダ２２３によって、アクセス制御回路２２５が構成されている。なお、説明簡略化のため図示しないが、リソース２２４はＩ／Ｏデバイス２２０に複数備えられていることも可能である。この複数のリソース２２４とＩ／Ｆ２２６とは、Ｉ／Ｏデバイス内部バス（不図示）を介して信号の入出力が行われる。
【００３６】
保護情報判別部２２１は、ＰＰＣレジスタ２１５に設定されたコード情報に基づき、ＣＰＵ２１０からのアクセス要求が許可されているか否かを判定する。アクセス要求が許可されている場合は、デコーダ２２３に許可情報を出力する。また、アクセス要求が不許可の場合は、デコーダ２２３には、不許可情報が出力される。
【００３７】
アクセス検出部２２２へは、ＣＰＵ２１０がアクセスしようとしているＩ／Ｏデバイスのアドレス情報を有する信号が入力される。アドレス情報を検出することにより、Ｉ／Ｏデバイス２２０は、自分に対するアクセス要求か否かを検出する。
【００３８】
デコーダ２２３へは、保護情報判別部２２１及びアクセス検出部２２２で検出された情報が入力される。即ち、デコーダ２２３には、保護情報判別部２２１の情報によりＣＰＵ２１０からのアクセスが許可されている信号かどうか、及びアクセス検出部２２２の情報により自分へのアクセスであるかどうかの情報が入力される。デコーダ２２３は、入力された情報に基づいて、リソース２２４に対するデータのリードやライトの制御信号を出力するか否かを判定する判定手段である。
【００３９】
デコーダ２２３では、ＣＰＵ２１０からのアクセス要求が自分へのアクセスであり、アクセス許可されていると判別した場合、リソース２２４へのアクセスが許可される。ＣＰＵ２１０からのアクセス要求が自分へのアクセスでない場合、又はアクセス許可されていない信号であると判別した場合のいずれか又は両方の場合、リソース２２４へのアクセス要求は許可されない。
【００４０】
なお、リソース２２４への信号は、Ｉ／Ｆ２２６を介して出力される。Ｉ／Ｆ２２６へは、デコーダ２２３でリソース２２４へのアクセスが許可された時のみ、リード／ライト信号等の必要な信号が入力される。Ｉ／Ｏデバイス２３０についても、Ｉ／Ｏデバイス２２０と同様の処理が行われる。ＣＰＵ２１０がＩ／Ｏデバイス２２０、２３０にアクセスする場合の具体的動作については後述する。
【００４１】
上述したように、アクセス制御回路２２５は、保護情報判別部２２１、アクセス検出部２２２、及びデコーダ２２３によって構成されている。従って、アクセス制御回路２２５は、コード情報と関連付けられたアクセス保護情報と、アクセス要求されているＩ／Ｏデバイスのアドレス情報に基づき、ＣＰＵ２１０によるＩ／Ｏデバイスへのアクセスを制御するアクセス制御手段である。また、アクセス制御回路２２５によって、Ｉ／Ｏデバイス２２０のリソース２２４に対するＣＰＵ２１０からのアクセスが制御される。
【００４２】
ここで、アクセスすべきでないＩ／Ｏデバイスにアクセス要求が発生した場合、アクセス制御回路２２５は、アクセス保護違反があったことを検出し、周辺保護違反レジスタ２１６に通知する。具体的には、保護情報判別部２２１が、ＰＰＣレジスタ２１５のコード情報によってＣＰＵ２１０からのアクセス要求が不許可であると判定した場合、デコーダ２２３に不許可情報が出力される。デコーダ２２３は、アクセス保護違反があったことを示す信号を周辺保護違反レジスタ２１６へ出力する。その結果、周辺保護違反レジスタ２１６には、Ｉ／Ｏデバイス２２０へアクセス保護違反があったことを示す情報（例えば"１"を示すビット）が格納される。Ｉ／Ｏデバイスが複数ある場合は、周辺保護違反レジスタ２１６は、Ｉ／Ｏデバイスに対応した複数のビットから構成され、アクセス保護違反があったＩ／Ｏデバイス毎にアクセス違反情報が格納される。
【００４３】
次に、情報処理装置２００において、ＣＰＵ２１０がＩ／Ｏデバイス２２０、２３０にアクセスする場合の動作について説明する。説明には、図４及び図５を用いるが、必要に応じて図２及び図６を併用する。図４及び図５は、ＣＰＵ２１０がＩ／Ｏデバイス２２０にアクセス要求する時のタイミングチャートを示している。図４を用いて、ＣＰＵ２１０からのアクセス要求が許可される場合の動作について説明する。図５を用いてＣＰＵ２１０からのアクセス要求が不許可される場合の動作について説明する。また、図６を用いてＣＰＵ２１０がＩ／Ｏデバイス２２０にアクセスする場合について例示的に説明する。図６は、図２に示したＩ／Ｏデバイス２２０とその信号入出力経路を更に詳しく示したブロック図である。図２では説明簡略化のため図示しなかったが、リソース２２４は図６に示すようにＩ／Ｏデバイス２２０に複数備えられていることが可能である。この複数のリソース２２４とＩ／Ｆ２２６とは、Ｉ／Ｏデバイス内部バス２２７を介して信号の入出力が行われる。なお、以下において、アクセス要求が許可された場合とは、アクセス要求から保護されていない状況と同義である。また、アクセス要求が不許可の場合とは、アクセス要求から保護されている状況と同義である。
【００４４】
図４にて、ＣＰＵ２１０からＩ／Ｏデバイス２２０へのアクセス要求信号（ａ）が発生すると、リード／ライト信号（ｂ）と、アクセスしようとするＩ／Ｏデバイスのアドレス信号（ｃ）が、周辺アクセスバス２４０を介してＩ／Ｏデバイスに出力される。具体的には、図６に示すように、アクセス要求信号（ａ）及びアドレス信号（ｃ）は、ＣＰＵ２１０からバス２４２を介してアクセス検出部２２２に出力される。リード／ライト信号（ｂ）は、ＣＰＵ２１０からバス２４２を介してＩ／Ｆ２２６に入力される。一方、メモリ保護ユニット２１１（図２参照）では、アクセス要求されたＩ／Ｏデバイスのアドレス情報がＰＰＡレジスタ２１２に登録されているか、又はＣＰＵ２１０のモードがユーザモードであるか判定器２１４によって判定される。判定結果に応じて、ＰＰＣレジスタ２１５にてタスク毎に関連付けられたコード情報を示す信号（ｄ）が、図６に示すバス２４１を介して保護情報判別部２２１へ出力される。従って、アクセス要求信号（ａ）の出力と同時に、ＰＰＣレジスタ２１５の信号（ｄ）や、リード／ライト信号（ｂ）、アドレス信号（ｃ）が、周辺アクセスバス２４０を介して全てのＩ／Ｏデバイス２２０、２３０に出力される。
【００４５】
各Ｉ／Ｏデバイス２２０、２３０の保護情報判別部２２１、２３１では、ＰＰＣレジスタ２１５から出力された信号（ｄ）によって、アクセス要求が許可されているか否かを検出する。同時に、Ｉ／Ｏデバイス２２０、２３０のアクセス検出部２２２、２３２は、アドレス信号（ｃ）によって、自分へのアクセスであるか検出する。そして、各々のデコーダ２２３、２３３によって、ＣＰＵ２１０からのアクセス要求をリソース２２４、２３４へ出力するか判断する。
【００４６】
図４及び図６では、ＣＰＵ２１０からＩ／Ｏデバイス２２０へのリードアクセス要求に対し、アクセス許可される場合について例示的に説明する。従って、アクセス許可されているＩ／Ｏデバイス２２０には、アクセス要求信号（ａ）と同時に、ＣＰＵ２１０から出力されたアドレス信号（ｃ）が、アクセス検出部２２２に入力される。ＣＰＵ２１０から出力されたリード信号（ｂ）は、Ｉ／Ｆ２２６に入力される。アクセス検出部２２２では、自分へのアクセスであることを検出した信号をデコーダ２２３に出力する。また、ＰＰＣレジスタ２１５から出力された信号（ｄ）が、保護情報判別部２２１に入力される。保護情報判別部２２１では、アクセスが許可されていることを検出した信号をデコーダ２２３に出力する。その結果、デコーダ２２３から、リードイネーブル信号（ｈ）が出力される。一方、Ｉ／Ｆ２２６からは、ＣＰＵ２１０がアクセス要求するＩ／Ｏリソース２２４のアドレス信号（ｆ）、及びリード信号（ｇ）がＩ／Ｏデバイス内部バス２２７を介してＩ／Ｏリソース２２４へ出力されている。従って、リードイネーブル信号（ｈ）に応じて、アクセスされたＩ／Ｏリソースからリードデータ（ｉ）がＣＰＵ２１０に出力される。
【００４７】
次に、図５を用いて、ＣＰＵ２１０からＩ／Ｏデバイス２２０へのリードアクセス要求に対し、アクセスが不許可となる場合について例示的に説明する。ＣＰＵ２１０からＩ／Ｏデバイスへのアクセス要求信号（ａ）が発生すると、リード信号（ｂ）と共に、アクセスしようとするＩ／Ｏデバイスのアドレス信号（ｃ）が周辺アクセスバス２４０を介してＩ／Ｏデバイスに出力される。具体的には、図６に示すように、アクセス要求信号（ａ）及びアドレス信号（ｃ）は、ＣＰＵ２１０からバス２４２を介してアクセス検出部２２２に出力される。リード信号（ｂ）は、ＣＰＵ２１０からバス２４２を介してＩ／Ｆ２２６に入力される。一方、図２に示すメモリ保護ユニット２１１では、アクセス要求されたＩ／Ｏデバイスのアドレス情報がＰＰＡレジスタ２１２に登録されているか、又はＣＰＵ２１０のモードがユーザモードであるか判定器２１４によって判定される。判定結果に応じて、ＰＰＣレジスタ２１５にて、タスク毎に関連付けられたコード情報を示す信号（ｄ）が図６に示すバス２４１を介して保護情報判別部２２１へ出力される。従って、アクセス要求信号（ａ）の出力と同時に、ＰＰＣレジスタ２１５の信号（ｄ）やアドレス信号（ｃ）が、周辺アクセスバス２４０を介して全てのＩ／Ｏデバイス２２０、２３０に出力される。ここまでは、図４のアクセス要求が許可される場合と同様である。
【００４８】
各Ｉ／Ｏデバイス２２０、２３０の保護情報判別部２２１、２３１では、ＰＰＣレジスタ２１５から出力された信号（ｄ）を取得する。アクセス要求が許可されているか否かを検出する。同時に、Ｉ／Ｏデバイス２２０、２３０のアクセス検出部２２２、２３２は、アドレス信号（ｃ）によって、自分へのアクセスであるか検出する。そして、各々のデコーダ２２３、２３３によって、ＣＰＵ２１０からのアクセス要求をリソース２２４、２３４へ出力するか判断する。
【００４９】
図５では、アクセスが不許可の場合について説明する。従って、アクセス許可されていないＩ／Ｏデバイスのアクセス検出部に、ＣＰＵ２１０から出力されたアドレス信号（ｃ）が入力される。アクセス検出部では、自分へのアクセスであることを検出した信号をデコーダに出力する。また、ＰＰＣレジスタ２１５から出力された信号（ｄ）が、保護情報判別部２２１に入力される。保護情報判別部２２１では、アクセスが不許可であることを検出した信号をデコーダに出力する。従って、デコーダからリードイネーブル信号は出力されず、ＣＰＵ２１０からリソースへはアクセスされない。
【００５０】
なお、図５のように、ＣＰＵ２１０からのアクセス要求に対して保護されているＩ／Ｏデバイスへのアクセス要求が発生した場合、アクセス保護違反信号（ｊ）が検出される。これは、保護すべき対象にアクセス要求が発生した場合、アクセス保護違反が生じたことを示す。アクセス保護違反信号（ｊ）は、デコーダ２２３、２３３から出力され、周辺保護違反レジスタ２１６のＩ／Ｏデバイス２２０に対応したビットに、アクセス保護違反があったことを示すビット情報（例えば"１"）が設定される。即ち、周辺保護違反レジスタ２１６は、アクセス保護違反が生じたことを示す情報を設定するアクセス違反設定手段である。周辺保護違反レジスタ２１６内にアクセス保護違反情報が設定されるとＣＰＵ２１０に対して割り込み通知がなされ、特権モードへ移行してＯＳにより例外処理が実行される。ＯＳは例外処理の中で、アクセス保護違反が発生したＩ／Ｏデバイスの確認のために周辺保護違反レジスタ２１６を参照したり、アクセス保護違反が発生したアドレス情報の退避等、必要な処理を行った後に該当ビットを初期化（クリア）する。
【００５１】
周辺保護違反レジスタ２１６内にアクセス保護違反情報が設定された場合、Ｉ／ＯデバイスはＣＰＵ２１０からの情報（ＰＰＣレジスタ２１５に設定されている情報等）を受け取って、Ｉ／Ｏデバイス自身がアクセスを中止する。なお、周辺保護違反レジスタ２１６に、アクセス保護違反があったことを示すビットがセットされている間、該当するＩ／Ｏデバイスへアクセスする処理が中止される。そして、ＯＳが周辺保護違反レジスタ２１６を参照し、アクセス要求を中止しているＩ／Ｏデバイスへのタスクに係るコード情報をＰＰＣレジスタ２１５において再設定する。
【００５２】
ＰＰＣレジスタ２１５の再設定は、処理するタスク毎に更新するようにＯＳで制御することが可能である。また、アクセス保護違反が発生したことで、モードレジスタ２１３はユーザモードから特権モードに移行する。
【００５３】
第１の実施形態における効果を以下に述べる。以上のように、ＣＰＵ２１０からのアクセスを保護するＩ／Ｏデバイスに関連付けたコード情報を設定するＰＰＣレジスタ２１５を設けることにより、従来のようにアドレス毎に保護されているか否かの設定をアドレス毎に設定する必要がなくなる。従って、アドレス毎に設けられたＨ／Ｗを削減することができる。
【００５４】
例えば、図１のメモリマップドＩ／Ｏ１００に配置されるＩＮＴＣ制御レジスタ領域１０４、１０５は複数アドレスに点在して配置され、各々が数多くのアドレスを有している。第１の実施形態では、ＩＮＴＣ制御レジスタ領域１０４、１０５に関連付けたコード情報をＰＰＣレジスタ２１５に設定するだけで、対象範囲を一括して保護することが可能である。その結果、多くのアドレスを有すＩ／ＯデバイスをＨ／Ｗの制限なしに設定することが可能となる。これにより、情報処理装置の回路構成を簡単にする他、アドレス設定に係るコストや、処理時間を削減することが可能となる。
【００５５】
また、ＩＮＴＣ制御レジスタ領域１０４、１０５のように論理的にまとまりのあるＩ／Ｏデバイスが複数アドレスに点在した場合、対象範囲を一括して保護することができるため、アドレスを誤設定することがなくなる。
【００５６】
また、Ｉ／Ｏデバイスが多量のアドレスに点在するような複雑な配置においてアクセス保護違反が発生した場合、例外処理ハンドラ中で多量のアドレスに点在したＩ／Ｏデバイスについて例外処理を行わなければならなかったので、例外処理に時間がかかるという欠点が生じていた。第１の実施形態では、周辺保護違反レジスタ２１６を所望の値に設定するということで、例外処理ハンドラ中で多量のアドレスに点在したＩ／Ｏデバイスについて例外処理を行う必要はなく、例外処理時間を短縮できるという利点がある。
【００５７】
また、第１の実施形態では、周辺保護違反レジスタ２１６におけるアクセス保護違反があったことを示すビットがリセットされるまで、該当するＩ／Ｏデバイスへのアクセスが中止される。従って、リセットが実行されるまでの間に、別の原因によるアクセス保護違反が発生しない。その結果、例外処理が発生したときのメモリマップドレジスタの値を保持することが可能である。
【００５８】
発明の実施の形態２．
次に、本発明の第２の実施形態について説明する。第２の実施形態においても、ＬＳＩ等の半導体素子に１チップ形成した情報処理装置として例示的に説明するが、１チップ形成した情報処理装置に限るものでないことは第１の実施形態と同様である。また、第２の実施形態でも、ＣＰＵからメモリマップドＩ／Ｏへのアクセスを保護する例として説明することは第１の実施形態と同様である。情報処理装置の構成要素や動作等、第１の実施形態と同様のものは省略する。
【００５９】
図７を用いて、第２の実施形態に係るアクセス保護機能について説明する。図７は、第２の実施形態に係る情報処理装置のブロック図である。情報処理装置３００は、ＣＰＵ２１０、２つのＩ／Ｏデバイス３２０、３３０、周辺アクセスバス３４０、及び周辺保護ユニット３５０を有している。ＣＰＵ２１０は、メモリ保護ユニット２１１を有し、メモリ保護ユニット２１１の構成及び機能は、第１の実施形態と同様である。
【００６０】
Ｉ／Ｏデバイス３２０、３３０は、各々アクセス検出部３２２、３３２、デコーダ３２３、３３３、Ｉ／Ｆ３２６、３３６、及びリソース３２４、３３４を有している。Ｉ／Ｏデバイスが２つに限らず形成できることは、第１の実施形態と同様である。また、ＣＰＵ２１０とＩ／Ｏデバイス３２０、３３０との信号の入出力は、周辺アクセスバス３４０を介して行われる。周辺アクセスバス３４０は、ＰＰＣレジスタ２１５からの許可情報を周辺保護ユニット３５０を介してＩ／Ｏデバイスに出力するバス３４１と、ＣＰＵ２１０からアクセス要求の発生するＩ／Ｏデバイスのアドレス情報を出力するバス３４２を有している。
【００６１】
第２の実施形態では、ＰＰＣレジスタ２１５とバス３４１との間に、周辺保護ユニット３５０を設けることに特徴を有している。周辺保護ユニット３５０は、保護情報判別部３５１を有している。この保護情報判別部３５１は、図２に示す各々のＩ／Ｏデバイスに配設されていた保護情報判別部２２１、２３１を集約したものであり、機能及び動作については第１の実施形態と同様である。即ち、図７に示す保護情報判別部３５１は、図２に示す保護情報判別部２２１、２３１の回路構成と同じものが複数配設されている。従って、周辺保護ユニット３５０は、複数の保護情報判別部が備えられた集約ユニットである。一方、図７に示すＩ／Ｏデバイス３２０、３３０は、図２に示すＩ／Ｏデバイス２２０、２３０と比べて、保護情報判別部２２１、２３１が除かれた構成となっている。なお、ＰＰＣレジスタ２１５からの信号は、周辺保護ユニット３５０からバス３４１を介してＩ／Ｏデバイス３２０、３３０に出力される。バスラインが、各Ｉ／Ｏデバイス個別に複数接続したり、スター状に接続することも可能であることは第１の実施形態と同様である。周辺アクセスバス３４０とＣＰＵ２１０との間には、バスブリッジを介する構成とすることも可能である。
【００６２】
ＣＰＵ２１０からアクセス要求が発生すると、ＰＰＣレジスタ２１５は、アクセス要求されるＩ／Ｏデバイスに応じたコード情報を設定し、周辺保護ユニット３５０の保護情報判別部３５１に出力する。保護情報判別部３５１は、ＣＰＵ２１０からのアクセス要求が許可されているか否かを判定し、Ｉ／Ｏデバイスに出力する。従って、周辺保護ユニット３５０では、ＰＰＣレジスタ２１５からの情報に基づき、ＣＰＵ２１０からのアクセスが許可されているか否かの判断を集中管理している。そして、ＣＰＵ２１０からのアクセスが許可されているＩ／ＯデバイスにＩ／Ｏデバイス選択信号が出力される。以降の動作は第１の実施形態と同様である。
【００６３】
以上のような構成により、図２のように各々のＩ／Ｏデバイスに保護情報判別部を設ける必要がなくなる。従って、ＣＰＵ２１０からのアクセス要求が発生する度に、各Ｉ／Ｏデバイスにてアクセス保護するか否か判定する処理がなくなる。その結果、バス３４１や、Ｉ／Ｏデバイス３２０、３３０に負担をかけないため、情報処理装置の処理効率が向上するという効果が得られる。
【００６４】
発明の実施の形態３．
次に、本発明の第３の実施形態について説明する。第３の実施形態においても、ＬＳＩ等の半導体素子に１チップ形成した情報処理装置として例示的に説明するが、１チップ形成した情報処理装置に限るものでないことは第１の実施形態と同様である。また、第３の実施形態では、ＣＰＵからメモリマップドＩ／Ｏへのアクセスを保護する例として説明することは第１の実施形態と同様である。情報処理装置の構成要素や動作等、前述した実施形態と同様のものは省略する。
【００６５】
図８を用いて、第３の実施形態に係るアクセス保護機能について説明する。図８は、第３の実施形態に係る情報処理装置のブロック図である。情報処理装置４００は、ＣＰＵ２１０、２つのＩ／Ｏデバイス４２０、４３０、周辺アクセスバス４４０、及び周辺保護ユニット４５０を有している。ＣＰＵ２１０はメモリ保護ユニット２１１を有し、その構成及び機能は第１の実施形態と同様である。
【００６６】
Ｉ／Ｏデバイス４２０、４３０は、各々アクセス検出部４２２、４３２、デコーダ４２３、４３３、Ｉ／Ｆ４２６、４３６、及びリソース４２４、４３４を有している。Ｉ／Ｏデバイスが２つに限らず形成できることは、第１の実施形態と同様である。ＣＰＵ２１０とＩ／Ｏデバイス４２０、４３０との信号の入出力は、周辺アクセスバス４４０を介して行われる。周辺アクセスバス４４０は、ＰＰＣレジスタ２１５からの許可情報を周辺保護ユニット４５０を介してＩ／Ｏデバイスに出力するバス４４１と、ＣＰＵ２１０からアクセス要求の発生するＩ／Ｏデバイスのアドレス情報を出力するバス４４２を有している。
【００６７】
第３の実施形態では、周辺保護ユニット４５０にメモリ４５３を設けることに特徴を有している。メモリ４５３は、書き換え可能な記憶素子であり、ＲＡＭ（Random Access Memory）や不揮発性メモリ等を用いることが可能である。メモリ４５３には、ＰＰＣレジスタ２１５に設定されるコード情報と関連付けられたアクセス保護情報を示す対応テーブルが格納されている。例えば、タスクが発生しコード情報に１２３が設定された場合、Ｉ／ＯデバイスＡ及びＢのアクセスが許可されるという情報（表１参照）がメモリ４５３の対応テーブルに格納される。
【００６８】
ＣＰＵ２１０からのアクセス要求が発生すると、ＰＰＣレジスタ２１５はメモリ４５３にアクセスする。周辺保護ユニット４５０は、メモリ４５３に格納されている対応テーブルに従ってアクセス許可／不許可情報を各Ｉ／Ｏデバイスに出力する。例えば、ＰＰＣレジスタ２１５に１２３の値が設定された場合、Ｉ／ＯデバイスＡ及びＢ（図８においては、Ｉ／Ｏデバイス４２０及び４３０）のアクセスを許可する信号が各Ｉ／Ｏデバイスに出力される（表１参照）。即ち、メモリ４５３は、第１、及び第２の実施形態における保護情報判別部と同様の機能を有している。以降の動作については、第１の実施形態と同様である。各Ｉ／Ｏデバイス４２０、４３０では、周辺保護ユニット４５０からの情報と、アクセス検出部４２２、４３３の情報によって、リソース４２４、４３４に出力するか否かをデコーダ４２３、４３３で判定する。
【００６９】
なお、周辺保護ユニット４５０において、メモリ４５３に格納されている対応テーブルを用いて、どのＩ／Ｏデバイスが保護されているかデコードすることも可能である。その場合、デコード済みの情報がアクセス許可されたＩ／ＯデバイスにＩ／Ｏデバイス選択信号として出力される。
【００７０】
以上のような構成により、第３の実施形態においては、Ｈ／Ｗによる保護情報判別部を設ける必要がなくなる。即ち、回路構成を簡単にすることが可能となる。従って、Ｈ／Ｗの制限によって、アクセス保護を行うＩ／Ｏデバイスの数が制限されるという問題に対し、更に効果が得られる。
【００７１】
発明の実施の形態４．
次に、本発明の第４の実施形態について説明する。第４の実施形態においても、ＬＳＩ等の半導体素子に１チップ形成した情報処理装置として例示的に説明するが、１チップ形成した情報処理装置に限るものでないことは第１の実施形態と同様である。また、第４の実施形態では、ＣＰＵからメモリマップドＩ／Ｏへのアクセスを保護する例として説明することは第１の実施形態と同様である。情報処理装置の構成要素や動作等、前述した実施形態と同様のものは省略する。
【００７２】
図９を用いて、第４の実施形態に係るアクセス保護機能について説明する。図９は、第４の実施形態に係る情報処理装置のブロック図である。情報処理装置５００は、ＣＰＵ２１０、２つのＩ／Ｏデバイス５２０、５３０、周辺アクセスバス５４０、及び周辺保護ユニット５５０を有している。ＣＰＵ２１０はメモリ保護ユニット２１１を有し、その構成及び機能は第１の実施形態と同様である。
【００７３】
Ｉ／Ｏデバイス５２０、５３０は、各々アクセス検出部５２２、５３２、デコーダ５２３、５３３、Ｉ／Ｆ５２６、５３６、及びリソース５２４、５３４を有している。Ｉ／Ｏデバイスが２つに限らず形成できることは、第１の実施形態と同様である。ＣＰＵ２１０とＩ／Ｏデバイス５２０、５３０との信号の入出力は、周辺アクセスバス５４０を介して行われる。周辺アクセスバス５４０は、ＰＰＣレジスタ２１５からの許可情報を周辺保護ユニット５５０を介してＩ／Ｏデバイスに出力するバス５４１と、ＣＰＵ２１０からアクセス要求の発生するＩ／Ｏデバイスのアドレス情報を出力するバス５４２を有している。
【００７４】
周辺保護ユニット５５０は、保護情報判別部５５１及び周辺保護レジスタ５５４を有している。第４の実施形態では、周辺保護ユニット５５０に周辺保護レジスタ５５４を設けることに特徴を有している。周辺保護レジスタ５５４は、ＣＰＵ２１０のアクセスから保護するＩ／Ｏデバイスを設定するレジスタである。即ち、ＰＰＣレジスタ２１５に設定される情報と同じ情報を有している。第４の実施形態では、周辺保護レジスタ５５４によって、ＣＰＵ２１０内のＰＰＣレジスタ２１５で指定した保護内容を更に拡張することを可能にするためのものであるが、詳細は後述する。
【００７５】
周辺保護レジスタ５５４の各ビットで表される保護情報は、Ｉ／Ｏデバイスの変更に応じて、ＣＰＵ２１０のＨ／Ｗ修正とＩ／ＯデバイスのＨ／Ｗ修正を必要とすることなく、保護情報の設定を変更することが可能である。ＣＰＵ２１０とＩ／Ｏデバイスは個別に設計されることが多く、途中から或いは設計完了した後に該当部分に対して設計変更を行うことが困難な場合が多い。このような場合、周辺保護レジスタ５５４を用いることにより、簡易に保護情報の設定を変更することができる。第４の実施形態では、周辺保護レジスタ５５４及びＰＰＣレジスタ２１５の有す情報を論理和で判定し、ＣＰＵ２１０からのアクセスに対し、ＣＰＵ２１０のアクセスから保護されるＩ／Ｏデバイスが決定する。
【００７６】
ＣＰＵ２１０からのアクセス要求が発生すると、ＰＰＣレジスタ２１５と周辺保護レジスタ５５４の論理和情報に基づき、保護するＩ／Ｏデバイス情報を有す信号を保護情報判別部５５１が出力する。保護情報判別部５５１は、ＣＰＵ２１０からのアクセスが許可されているか否かを示す情報をＩ／Ｏデバイス５２０或いは５３０のデコーダ５２３、５３３に出力する。以降の動作については、第１の実施形態と同様である。
【００７７】
このように、ＣＰＵ２１０側で設定する保護情報（ＰＰＣレジスタ２１５）と周辺保護ユニット５５０側でＩ／Ｏデバイスにより設定される保護情報（周辺保護レジスタ５５４）とを分離することで、Ｉ／Ｏデバイスの変更に応じて保護情報を設定できる。即ち、どのレジスタを保護するかの設定は、ＣＰＵの設計時に決定されている必要はなく、Ｉ／Ｏデバイスの設計時やＩ／Ｏデバイスの変更時等において変更することが可能となる。特に、ＣＰＵが汎用ＣＰＵであり、どのようなＩ／Ｏデバイスを使用するか具体的に決まっていない場合等に有効である。
【００７８】
発明の実施の形態５．
次に、本発明の第５の実施形態について説明する。第５の実施形態においても、ＬＳＩ等の半導体素子に１チップ形成した情報処理装置として例示的に説明するが、１チップ形成した情報処理装置に限るものでないことは第１の実施形態と同様である。また、第５の実施形態では、ＣＰＵからメモリマップドＩ／Ｏへのアクセスを保護する例として説明することは第１の実施形態と同様である。情報処理装置の構成要素や動作等、前述した実施形態と同様のものは省略する。
【００７９】
図１０を用いて、第５の実施形態に係るアクセス保護機能について説明する。図１０は、第５の実施形態に係る情報処理装置のブロック図である。情報処理装置６００は、ＣＰＵ２１０、２つのＩ／Ｏデバイス２２０、２３０、及び周辺アクセスバス２４０を有している。ＣＰＵ２１０には、メモリ保護ユニット２１１が備えられる。これらの構成及び機能は第１の実施形態と同様である。
【００８０】
第５の実施形態では、メモリ保護ユニット２１１にＴＩＤレジスタ（Task ID：タスク識別）６１７を設けることに特徴を有している。ＴＩＤレジスタは、保護すべきアドレスにアクセスする時のタスク識別番号が設定されている。従って、タスク個別に、保護するＩ／Ｏデバイスを設定することが可能となる。
【００８１】
ＣＰＵ２１０からのアクセス要求が発生すると、Ｉ／Ｏデバイス２２０、２３０の保護情報判別部２２１、２３１には、ＰＰＣレジスタ２１５とＴＩＤレジスタ６１７からの情報が入力される。従って、タスク毎に保護すべきＩ／Ｏデバイスが検出され、デコーダ２２３、２３３に出力される。以降の動作については、第１の実施形態と同様である。
【００８２】
以上のような構成により、タスクが複数有る場合においても、タスク個別に保護するＩ／Ｏデバイスを設定することが可能となる。従って、大規模なＯＳや複数のＣＰＵによって複数のタスクが処理される場合等に更に細かい制御が可能となる。
【００８３】
なお、本発明は上記に示す実施形態に限定されるものではない。本発明の範囲において、上記実施形態の各要素を、当業者であれば容易に考えうる内容に変更、追加、変換することが可能である。例えば、本発明は、ＬＳＩ等の半導体素子に１チップ形成した情報処理装置を例として説明したが、１チップ形成した情報処理装置に限らず、ＣＰＵやＩ／Ｏデバイスが別の素子に形成されていることも可能である。
【図面の簡単な説明】
【００８４】
【図１】第１の実施形態に係るメモリドマップＩ／Ｏの構成例を示す図である。
【図２】第１の実施形態に係る情報処理装置を示すブロック図である。
【図３】第１の実施形態に係るＰＰＣレジスタの設定例を示す図である。
【図４】第１の実施形態に係るアクセス許可時のタイミングチャートを示す図である。
【図５】第１の実施形態に係るアクセス不許可時のタイミングチャートを示す図である。
【図６】第１の実施形態に係るＩ／Ｏデバイスの詳細を示すブロック図である。
【図７】第２の実施形態に係る情報処理装置を示すブロック図である。
【図８】第３の実施形態に係る情報処理装置を示すブロック図である。
【図９】第４の実施形態に係る情報処理装置を示すブロック図である。
【図１０】第５の実施形態に係る情報処理装置を示すブロック図である。
【符号の説明】
【００８５】
１００  メモリマップドＩ／Ｏ
１０１  タイマ制御レジスタ領域、  １０２  バス２設定・制御レジスタ領域、
１０３  バス１設定・制御レジスタ領域、
１０４、１０５  ＩＮＴＣ制御レジスタ領域、
１０６、１０７  空き領域、
２００  情報処理装置、
２１０  ＣＰＵ、  ２１１  メモリ保護ユニット、
２１２  ＰＰＡレジスタ、  ２１３  モードレジスタ、
２１４  判定器、  ２１５  ＰＰＣレジスタ、
２１６  周辺保護違反レジスタ、
２２０  Ｉ／ＯデバイスＡ、
２２１  保護情報判別部、  ２２２  アクセス検出部、
２２３  デコーダ、  ２２４  リソース、
２２５  アクセス制御回路、  ２２６  Ｉ／Ｆ、
２２７  Ｉ／Ｏデバイス内部バス
２３０  Ｉ／ＯデバイスＢ、
２３１  保護情報判別部、  ２３２  アクセス検出部、
２３３  デコーダ、  ２３４  リソース、
２３５  アクセス制御回路、  ２３６  Ｉ／Ｆ
２４０  周辺アクセスバス、
２４１、２４２  バス、
３００  情報処理装置、
３２０  Ｉ／ＯデバイスＡ、
３２２  アクセス検出部、  ３２３  デコーダ、
３２４  リソース、  ３２６  Ｉ／Ｆ
３３０  Ｉ／ＯデバイスＢ、
３３２  アクセス検出部、  ３３３  デコーダ、
３３４  リソース、  ３３６  Ｉ／Ｆ、
３４０  周辺アクセスバス、
３４１、３４２  バス、
３５０  周辺保護ユニット、
３５１  保護情報判別部、
４００  情報処理装置、
４２０  Ｉ／ＯデバイスＡ、
４２２  アクセス検出部、  ４２３  デコーダ、
４２４  リソース、  ４２６  Ｉ／Ｆ、
４３０  Ｉ／ＯデバイスＢ、
４３２  アクセス検出部、  ４３３  デコーダ、
４３４  リソース、  ４３６  Ｉ／Ｆ、
４４０  周辺アクセスバス、
４４１、４４２  バス、
４５０  周辺保護ユニット、
４５３  メモリ、
５００  情報処理装置、
５２０  Ｉ／ＯデバイスＡ、
５２２  アクセス検出部、  ５２３  デコーダ、
５２４  リソース、  ５２６  Ｉ／Ｆ、
５３０  Ｉ／ＯデバイスＢ、
５３２  アクセス検出部、  ５３３  デコーダ、
５３４  リソース、  ５３６  Ｉ／Ｆ、
５４０  周辺アクセスバス、
５４１、５４２  バス、
５５０  周辺保護ユニット、
５５１  保護情報判別部、  ５５４  周辺保護レジスタ、
６００  情報処理装置、  ６１７  ＴＩＤレジスタ
【図１】
2007334432.tif 000004
【図２】
2007334432.tif 000005
【図３】
2007334432.tif 000006
【図４】
2007334432.tif 000007
【図５】
2007334432.tif 000008
【図６】
2007334432.tif 000009
【図７】
2007334432.tif 000010
【図８】
2007334432.tif 000011
【図９】
2007334432.tif 000012
【図１０】
2007334432.tif 000013