(57)【要約】【課題】メモリ保護を実現でき、かつＤＭＡ転送を効率よく利用することが可能な情報処理装置を実現する。【解決手段】Ｉ／Ｏデバイス１３５が接続されたＩ／Ｏコントローラ１３０は、ＤＭＡコントローラ（ＤＭＡＣ）１３３と、アクセスコントロールユニット（ＡＣＵ）１３２とを備えている。ＤＭＡＣ１３３は、ユーザプロセスによってコントロール／ステータスレジスタ１３４に設定されるデータ転送制御情報にしたがって、ＤＭＡ転送を実行する。ＡＣＵ１３２は、特権プロセスによってコントロール／ステータスレジスタ１３１に設定されるアクセス制御情報に基づいてＤＭＡＣ１３３によるＤＭＡ転送の実行を制限し、ユーザプロセスがアクセス可能なメモリ領域以外の他のメモリ領域がＤＭＡＣ１３３によってアクセスされることを禁止する。【選択図】      図１
2006099702.tif 000002
【特許請求の範囲】
【請求項１】
複数のプロセスを並列に実行可能な情報処理において、
特権モードとユーザモードとを有するプロセッサと、
メモリと、
前記ユーザモード上で動作するユーザプロセスがアクセス可能なアドレス空間にマッピングされた第１レジスタおよび前記特権モード上で動作する特権プロセスがアクセス可能なアドレス空間にマッピングされた第２レジスタを有し、Ｉ／Ｏデバイスを制御するＩ／Ｏコントローラと、
前記Ｉ／Ｏコントローラに設けられ、前記ユーザプロセスによって前記第１のレジスタに設定されるデータ転送制御情報に基づいて、前記Ｉ／Ｏデバイスと前記メモリとの間のデータ転送を実行する直接メモリアクセスコントローラと、
前記Ｉ／Ｏコントローラに設けられ、前記特権プロセスによって前記第２のレジスタに設定されるアクセス制御情報に基づいて前記直接メモリアクセスコントローラのデータ転送動作を制限し、前記ユーザプロセスがアクセス可能な前記メモリ上の所定領域以外の他の領域が前記直接メモリアクセスコントローラによってアクセスされることを禁止するアクセス制御部とを具備することを特徴とする情報処理装置。
【請求項２】
前記アクセス制御部は、前記直接メモリアクセスコントローラのデータ転送動作を制限するために前記直接メモリアクセスコントローラから出力されるアドレスを監視する手段を含むことを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記アクセス制御情報は、前記所定領域に対応するアドレス範囲を指定するアドレス情報を含み、
前記アクセス制御部は、前記直接メモリアクセスコントローラから出力されるアドレスを監視し、前記アドレスが前記所定領域に対応するアドレス範囲内に属するか否かを判別する手段と、前記直接メモリアクセスコントローラから出力されるアドレスが前記所定領域に対応するアドレス範囲内に属さない場合、前記直接メモリアクセスコントローラによるデータ転送動作の実行を禁止する手段とを含むことを特徴とする請求項１記載の情報処理装置。
【請求項４】
前記アクセス制御情報は、前記所定領域に対応するアドレス範囲を指定するアドレス情報を含み、
前記アクセス制御部は、前記直接メモリアクセスコントローラから出力されるアドレスを監視し、前記アドレスが前記所定領域に対応するアドレス範囲内に属するか否かを判別する手段と、前記直接メモリアクセスコントローラから出力されるアドレスが前記所定領域に対応するアドレス範囲内に属さない場合、前記直接メモリアクセスコントローラによるデータ転送動作の実行を禁止する手段と、前記データ転送動作の実行が禁止された場合、前記直接メモリアクセスコントローラから出力されるアドレスを前記特権プロセスに通知するために、前記アドレスを前記第２のレジスタに保存する手段とを含むことを特徴とする情報処理装置。
【請求項５】
複数のプロセスを並列に実行可能な情報処理において、
特権モードとユーザモードとを有するプロセッサと、
メモリと、
前記ユーザモード上で動作する第１のユーザプロセスがアクセス可能なアドレス空間にマッピングされた第１レジスタおよび前記特権モード上で動作する特権プロセスがアクセス可能なアドレス空間にマッピングされた第２レジスタを有し、第１のＩ／Ｏデバイスを制御する第１のＩ／Ｏコントローラと、
前記ユーザモード上で動作する第２のユーザプロセスからアクセス可能なアドレス空間にマッピングされた第３レジスタおよび前記特権プロセスからアクセス可能なアドレス空間にマッピングされた第４レジスタを有し、第２のＩ／Ｏデバイスを制御する第２のＩ／Ｏコントローラと、
前記第１のＩ／Ｏコントローラに設けられ、前記第１のユーザプロセスによって前記第１のレジスタに設定されるデータ転送制御情報に基づいて、前記第１のＩ／Ｏデバイスと前記メモリとの間のデータ転送を実行する第１の直接メモリアクセスコントローラと、
前記第１のＩ／Ｏコントローラに設けられ、前記特権プロセスによって前記第２レジスタに設定される第１のアクセス制御情報に基づいて前記第１の直接メモリアクセスコントローラのデータ転送動作を制限し、前記第１のユーザプロセスがアクセス可能な前記メモリ上の第１領域以外の他の領域が前記第１の直接メモリアクセスコントローラによってアクセスされることを禁止する第１のアクセス制御部と、
前記第２のＩ／Ｏコントローラに設けられ、前記第２のユーザプロセスによって前記第３レジスタに設定されるデータ転送制御情報に基づいて、前記第２のＩ／Ｏデバイスと前記メモリとの間のデータ転送を実行する第２の直接メモリアクセスコントローラと、
前記第２のＩ／Ｏコントローラに設けられ、前記特権プロセスによって前記第４レジスタに設定される第２のアクセス制御情報に基づいて前記第２の直接メモリアクセスコントローラのデータ転送動作を制限し、前記第２のユーザプロセスがアクセス可能な前記メモリ上の第２領域以外の他の領域が前記第２の直接メモリアクセスコントローラによってアクセスされることを禁止する第２のアクセス制御部とを具備することを特徴とする情報処理装置。
【請求項６】
前記第１のユーザプロセスは前記第１のＩ／Ｏデバイスを制御するための処理を実行し、前記第２のユーザプロセスは前記第２のＩ／Ｏデバイスを制御するための処理を実行することを特徴とする請求項５記載の情報処理装置。
【請求項７】
前記第１のアクセス制御情報は、前記第１領域に対応するアドレス範囲を指定するアドレス情報を含み、
前記第１のアクセス制御部は、前記第１の直接メモリアクセスコントローラから出力されるアドレスを監視し、前記アドレスが前記第１領域に対応するアドレス範囲内に属するか否かを判別する手段と、前記第１の直接メモリアクセスコントローラから出力されるアドレスが前記第１領域に対応するアドレス範囲内に属さない場合、前記第１の直接メモリアクセスコントローラによるデータ転送動作の実行を禁止する手段とを含むことを特徴とする請求項５記載の情報処理装置。
【請求項８】
前記第２のアクセス制御情報は、前記第２領域に対応するアドレス範囲を指定するアドレス情報を含み、
前記第２のアクセス制御部は、前記第２の直接メモリアクセスコントローラから出力されるアドレスを監視し、前記アドレスが前記第２領域に対応するアドレス範囲内に属するか否かを判別する手段と、前記第２の直接メモリアクセスコントローラから出力されるアドレスが前記第２領域に対応するアドレス範囲内に属さない場合、前記第２の直接メモリアクセスコントローラによるデータ転送動作の実行を禁止する手段とを含むことを特徴とする請求項５記載の情報処理装置。
【請求項９】
Ｉ／Ｏコントローラによって実行されるＩ／Ｏデバイスとメモリとの間のデータ転送を制御するデータ転送制御方法であって、前記Ｉ／Ｏコントローラは、前記データ転送を実行する直接メモリアクセスコントローラと、ユーザプロセスがアクセス可能なアドレス空間にマッピングされた第１レジスタと、特権プロセスがアクセス可能なアドレス空間にマッピングされた第２レジスタとを含み、
前記第２レジスタにアクセス制御情報を設定する処理を前記特権プロセスによって実行するステップと、
前記直接メモリアクセスコントローラの動作を制御するデータ転送制御情報を前記第１レジスタに設定する処理を前記ユーザプロセスによって実行するステップと、
前記直接メモリアクセスコントローラから出力されるアドレスを監視し、前記アドレスが前記ユーザプロセスがアクセス可能な前記メモリ上の所定領域に対応するアドレス範囲内に属するか否かを前記アクセス制御情報に基づいて判別するステップと、
前記直接メモリアクセスコントローラから出力されるアドレスが前記所定領域に対応するアドレス範囲内に属さない場合、前記直接メモリアクセスコントローラによるデータ転送動作の実行を禁止するステップとを具備することを特徴とするデータ転送制御方法。
【請求項１０】
前記データ転送動作の実行が禁止された場合、前記直接メモリアクセスコントローラから出力されるアドレスを前記特権プロセスに通知するために、前記アドレスを前記第２のレジスタに保存するステップをさらに具備することを特徴とする請求項９記載のデータ転送制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、直接メモリアクセス（ＤＭＡ：Direct Memory Access）によってＩ／Ｏデバイスとメモリとの間のデータ転送を実行する情報処理装置および同装置で用いられるデータ転送制御方法に関する。
【背景技術】
【０００２】
一般に、複数のプロセスを並列に実行可能なマルチプロセス機能を有するコンピュータシステムにおいては、各プロセスを他のプロセスから保護する機構が用いられている。この機構を実現するために、通常、プロセッサは、特権モードとユーザモードの２つの実行モードを有している。オペレーティングシステムのカーネル等は特権モード上で動作し、各ユーザプロセスはユーザモード上で動作する。ユーザモードは一般モードと称されることもある。特権モードにおいては、プロセッサ内のメモリ管理ユニット（ＭＭＵ：Memory Management Unit）の制御等のための特殊命令を含む全ての命令を実行することができ、またアクセス可能なメモリ空間も制限されない。カーネルのような特権プロセスは、メモリ保護を実現するために、ＭＭＵを用いて各ユーザプロセスがアクセス可能なメモリ空間を管理する。
【０００３】
また、最近では、Ｉ／Ｏデバイス（Input／Output Device）とメモリとの間のデータ転送処理からＣＰＵを解放するために、直接メモリアクセス（ＤＭＡ）を利用したシステムアーキテクチャが利用されている（非特許文献１参照。）。この非特許文献１のシステムにおいては、ＤＭＡ機能を有するＩ／Ｏコントローラが設けられている。Ｉ／Ｏコントローラは、プロセッサが他のタスクを実行している間に、Ｉ／Ｏデバイスとメモリとの間のデータ転送をＤＭＡによって実行することができる。
【非特許文献１】David A. Patterson and John L. Hennessy，「Computer Architecture A Quantitative Approach Second Edition」，Morgan Kaufmann Publishers Inc.，１９９６年６月１日，ｐ．５０１−５０４，FIGURE 6.15
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかし、ＤＭＡ機能を有するＩ／Ｏコントローラを備えたシステムにおいては、メモリ保護を実現することが困難となる。ＭＭＵはプロセッサからメモリに対するアクセスを制限することはできるが、ＤＭＡによるメモリアクセスを制限することはできないからである。
【０００５】
このため、ＤＭＡ機能を有するＩ／Ｏコントローラを備えたシステムにおいては、ＤＭＡ転送の制御は、カーネルのような特権モード上で動作する特権プロセスによって行われることが多い。この場合、ユーザプロセスは、Ｉ／ＯコントローラのＤＭＡ機能を直接制御することができないので、常に特権プロセス経由でＤＭＡ機能を制御しなければならない。このことは、オーバヘッドの増大を招き、システム性能を低下させる大きな要因となる。
【０００６】
本発明は上述の事情を考慮してなされたものであり、メモリ保護を実現でき、かつＤＭＡ転送を効率よく実行することが可能な情報処理装置およびデータ転送制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上述の課題を解決するため、本発明は、複数のプロセスを並列に実行可能な情報処理において、特権モードとユーザモードとを有するプロセッサと、メモリと、前記ユーザモード上で動作するユーザプロセスがアクセス可能なアドレス空間にマッピングされた第１レジスタおよび前記特権モード上で動作する特権プロセスがアクセス可能なアドレス空間にマッピングされた第２レジスタを有し、Ｉ／Ｏデバイスを制御するＩ／Ｏコントローラと、前記Ｉ／Ｏコントローラに設けられ、前記ユーザプロセスによって前記第１のレジスタに設定されるデータ転送制御情報に基づいて、前記Ｉ／Ｏデバイスと前記メモリとの間のデータ転送を実行する直接メモリアクセスコントローラと、前記Ｉ／Ｏコントローラに設けられ、前記特権プロセスによって前記第２のレジスタに設定されるアクセス制御情報に基づいて前記直接メモリアクセスコントローラのデータ転送動作を制限し、前記ユーザプロセスがアクセス可能な前記メモリ上の所定領域以外の他の領域が前記直接メモリアクセスコントローラによってアクセスされることを禁止するアクセス制御部とを具備することを特徴とする。
【発明の効果】
【０００８】
本発明によれば、メモリ保護を実現でき、かつＤＭＡ転送を効率よく実行することが可能となる。
【発明を実施するための最良の形態】
【０００９】
以下、図面を参照して本発明の実施形態を説明する。
【００１０】
図１には、本発明の一実施形態の係わる情報処理装置の構成例が示されている。この情報処理装置はマイクロプロセッサを利用したコンピュータであり、例えば、パーソナルコンピュータ、サーバコンピュータ、あるいは各種電子機器のための組み込みシステム等として実現されている。
【００１１】
この情報処理装置は、複数のプロセスを並列に実行可能なマルチプロセス機能をサポートしており、ＣＰＵ１１１、メモリバス１１３、メモリ１１４、ブリッジ１１５、Ｉ／Ｏバス１１６、Ｉ／Ｏメモリ１１８、Ｉ／Ｏコントローラ１２０、１３０、１４０およびＩ／Ｏデバイス１２５、１３５、１４５から構成されている。
【００１２】
メモリバス１１３には、ＣＰＵ１１１およびメモリ１１４が接続されている。Ｉ／Ｏバス１１６には、Ｉ／Ｏメモリ１１８、およびＩ／Ｏコントローラ１２０、１３０、１４０が接続されている。メモリバス１１３とＩ／Ｏバス１１６との間にはブリッジ１１５が設けられている。ブリッジ１１５はメモリバス１１３とＩ／Ｏバス１１６とを相互接続するためのインターフェース装置である。
【００１３】
Ｉ／Ｏデバイス１２５、１３５、１４５は互いに独立して動作可能に構成されている。これらＩ／Ｏデバイス１２５、１３５、１４５それぞれに対応して、Ｉ／Ｏコントローラ１２０、１３０、１４０が存在する。各Ｉ／Ｏコントローラ１２０、１３０、１４０は、対応するＩ／Ｏデバイス１２５、１３５、１４５を制御する。各Ｉ／Ｏコントローラ１２０、１３０、１４０は、ＤＭＡ機能を有している。
【００１４】
ＣＰＵ１１１は、本情報処理装置に設けられた各コンポーネントを制御するプロセッサである。ＣＰＵ１１１は、仮想アドレスおよびメモリ保護を実現するためのメモリ管理ユニット（ＭＭＵ）１１２を備えている。このＣＰＵ１１１は、特権モードとユーザモードの二つの実行モードを持つ。特権モードにおいては、ＭＭＵ１１２の制御等のための特殊命令を含む全ての命令を実行することができ、またアクセス可能なメモリ空間も制限されない。一方、ユーザモードにおいては、実行可能な命令の種類が制限されるとともに、アクセス可能なメモリ空間もＭＭＵ１１２によって制限される。カーネルのような特権プロセスは特権モード上で動作し、また各ユーザプロセスはユーザモード上で動作する。
【００１５】
図１においては、特権プロセス、第１のユーザプロセスおよび第２のユーザプロセスの計三つのプロセスが実行される場合を想定している。特権プロセス、第１のユーザプロセスおよび第２のユーザプロセスには、メモリ１１４上の互いに異なる領域がそれぞれ割り当てられる。例えば、第１のユーザプロセスはＩ／Ｏデバイス１３５を制御するプロセスであり、また第２のユーザプロセスはＩ／Ｏデバイス１４５を制御するプロセスである。
【００１６】
メモリ１１４上に割り当てられた領域とその領域を使用するプロセスとの関係は次の通りである。
【００１７】
・Ｋｐ領域１１４Ａ：特権プロセス
・Ｕｐ（１）領域１１４Ｂ：第１のユーザプロセス
・Ｕｐ（２）領域１１４Ｃ：第２のユーザプロセス
また、特権プロセス、第１のユーザプロセスおよび第２のユーザプロセスには、Ｉ／Ｏメモリ１１８上の互いに異なる領域もそれぞれ割り当てられている。Ｉ／Ｏメモリ１１８上に割り当てられた領域とその領域を使用するプロセスとの関係は次の通りである。
【００１８】
・Ｋｐ領域１１８Ａ：特権プロセス
・Ｕｐ領域（１）１１８Ｂ：第１のユーザプロセス
・Ｕｐ領域（２）１１８Ｃ：第２のユーザプロセス
Ｋｐ領域１１４ＡおよびＫｐ領域１１８Ａは、特権プロセスのみが使用可能である。Ｕｐ領域（１）１１４Ｂおよび１１８Ｂは、第１のユーザプロセスがアクセス可能な領域である。Ｕｐ領域（２）１１４Ｃおよび１１８Ｃは、第２のユーザプロセスがアクセス可能な領域である。
【００１９】
Ｉ／Ｏコントローラ１２０は、コントロール／ステータスレジスタ（以下：Ｃ／Ｓ）１２１、アクセス制御部（ＡＣＵ：Access Control Unit）１２２、ＤＭＡコントローラ（以下、ＤＭＡＣ）１２３およびＣ／Ｓ１２４等から構成されている。
【００２０】
Ｃ／Ｓ１２１は、ＤＭＡＣ１２３によるメモリアクセスを制限するためのアクセス制御情報を記憶するレジスタである。アクセス制御情報は、ＤＭＡＣ１２３がアクセス可能なメモリ１１４およびＩ／Ｏメモリ１１８上の各領域のアドレス範囲を指定するアドレス情報である。Ｃ／Ｓ１２１は、特権プロセスがアクセス可能なアドレス空間にマッピングされている。このため、Ｃ／Ｓ１２１の操作は特権プロセスのみに許され、各ユーザプロセスはＣ／Ｓ１２１を操作することはできない。
【００２１】
ＡＣＵ１２２は、特権プロセスによってＣ／Ｓ１２１に設定されたアクセス制御情報に基づいてＤＭＡＣ１２３のデータ転送動作を制限する。つまり、ＡＣＵ１２２は、ＤＭＡＣ１２３から出力されるアドレスを監視し、そのアドレスがＣ／Ｓ１２１に記憶されているアクセス制御情報によって指定されるアドレス範囲に属するか否かを判別する処理を実行する。この判別処理の結果に従って、ＡＣＵ１２２は、ＤＭＡＣ１２３によるメモリアクセスの可否を決定する。
【００２２】
Ｃ／Ｓ１２４は、ＤＭＡＣ１２３によるＩ／Ｏデバイス１２５とメモリ１１４およびＩ／Ｏメモリ１１８の各々との間のデータ転送動作を制御するデータ転送制御情報（ＤＭＡパラメタ）を記憶するレジスタ（ＤＭＡレジスタ）である。Ｃ／Ｓ１２４の操作は、Ｉ／Ｏデバイス１２５を制御するプロセスに対して許可されている。本実施形態においては、Ｉ／Ｏデバイスとプロセスとの対応関係は以下の通りである。
【００２３】
Ｉ／Ｏデバイス１２５とメモリ１１４，１１８との間のＤＭＡ転送：特権プロセス
Ｉ／Ｏデバイス１３５とメモリ１１４，１１８との間のＤＭＡ転送：第１のユーザプロセス
Ｉ／Ｏデバイス１４５とメモリ１１４，１１８との間のＤＭＡ転送：第２のユーザプロセス
この場合、Ｃ／Ｓ１２４の操作は特権プロセスのみに許可される。つまり、Ｃ／Ｓ１２４は特権プロセスがアクセス可能なアドレス空間にマッピングされる。
【００２４】
ＤＭＡＣ１２３は、特権プロセスによってＣ／Ｓ１２４に設定されたデータ転送制御情報にしたがって、Ｉ／Ｏデバイス１２５とメモリ１１４，１１８との間のＤＭＡ転送を実行する。
【００２５】
Ｉ／Ｏコントローラ１３０は、Ｉ／Ｏコントローラ１２０と同様に、Ｃ／Ｓ１３１、ＡＣＵ１３２、ＤＭＡＣ１３３およびＣ／Ｓ１３４等から構成されている。Ｃ／Ｓ１３１は、ＤＭＡＣ１３３によるメモリアクセスを制限するためのアクセス制御情報を記憶するレジスタである。アクセス制御情報は、ＤＭＡＣ１３３がアクセス可能なメモリ１１４およびＩ／Ｏメモリ１１８上の各領域のアドレス範囲を指定するアドレス情報である。Ｃ／Ｓ１３１は、特権プロセスがアクセス可能なアドレス空間にマッピングされている。このため、Ｃ／Ｓ１３１の操作は特権プロセスのみに許され、各ユーザプロセスはＣ／Ｓ１３１を操作することはできない。
【００２６】
ＡＣＵ１３２は、特権プロセスによってＣ／Ｓ１３１に設定されたアクセス制御情報に基づいてＤＭＡＣ１３３のデータ転送動作を制限する。つまり、ＡＣＵ１３２は、ＤＭＡＣ１３３から出力されるアドレスを監視し、そのアドレスがＣ／Ｓ１３１に記憶されているアクセス制御情報によって指定されるアドレス範囲に属するか否かを判別する処理を実行する。この判別処理の結果に従って、ＡＣＵ１３２は、ＤＭＡＣ１３３によるメモリアクセスの可否を決定する。
【００２７】
Ｃ／Ｓ１３４は、ＤＭＡＣ１３３によるＩ／Ｏデバイス１３５とメモリ１１４およびＩ／Ｏメモリ１１８の各々との間のデータ転送動作を制御するデータ転送制御情報（ＤＭＡパラメタ）を記憶するレジスタ（ＤＭＡレジスタ）である。Ｃ／Ｓ１３４の操作は、Ｉ／Ｏデバイス１３５を制御するプロセスに対して許可されている。本実施形態においては、第１のユーザプロセスがＤＭＡＣ１３３を直接操作できるようにするために、Ｃ／Ｓ１３４は第１のユーザプロセスがアクセス可能なメモリ空間にマッピングされている。
【００２８】
Ｉ／Ｏコントローラ１４０も、Ｉ／Ｏコントローラ１２０と同様に、Ｃ／Ｓ１４１、ＡＣＵ１４２、ＤＭＡＣ１４３およびＣ／Ｓ１４４等から構成されている。
【００２９】
Ｃ／Ｓ１４１は、ＤＭＡＣ１４３によるメモリアクセスを制限するためのアクセス制御情報を記憶するレジスタである。アクセス制御情報は、ＤＭＡＣ１４３がアクセス可能なメモリ１１４およびＩ／Ｏメモリ１１８上の各領域のアドレス範囲を指定するアドレス情報である。Ｃ／Ｓ１４１は、特権プロセスがアクセス可能なアドレス空間にマッピングされている。このため、Ｃ／Ｓ１４１の操作は特権プロセスのみに許され、各ユーザプロセスはＣ／Ｓ１４１を操作することはできない。
【００３０】
ＡＣＵ１４２は、特権プロセスによってＣ／Ｓ１４１に設定されたアクセス制御情報に基づいてＤＭＡＣ１４３のデータ転送動作を制限する。つまり、ＡＣＵ１４２は、ＤＭＡＣ１４３から出力されるアドレスを監視し、そのアドレスがＣ／Ｓ１４１に記憶されているアクセス制御情報によって指定されるアドレス範囲に属するか否かを判別する処理を実行する。この判別処理の結果に従って、ＡＣＵ１４２は、ＤＭＡＣ１４３によるメモリアクセスの可否を決定する。
【００３１】
Ｃ／Ｓ１４４は、ＤＭＡＣ１４３によるＩ／Ｏデバイス１４５とメモリ１１４およびＩ／Ｏメモリ１１８の各々との間のデータ転送動作を制御するデータ転送制御情報（ＤＭＡパラメタ）を記憶するレジスタ（ＤＭＡレジスタ）である。Ｃ／Ｓ１４４の操作は、Ｉ／Ｏデバイス１４５を制御するプロセスに対して許可されている。本実施形態においては、第２のユーザプロセスがＤＭＡＣ１４３を直接操作できるようにするために、Ｃ／Ｓ１４４は第２のユーザプロセスがアクセス可能なメモリ空間にマッピングされている。
【００３２】
本実施形態においては、第１のユーザプロセスはＩ／Ｏバス１１６を介してＣ／Ｓ１３４にデータ転送制御情報をセットすることにより、特権プロセスの介在なしで、ＤＭＡＣ１３３を直接制御することができる。同様に、第２のユーザプロセスはＩ／Ｏバス１１６を介してＣ／Ｓ１４４にデータ転送制御情報をセットすることにより、特権プロセスの介在なしで、ＤＭＡＣ１４３を直接制御することができる。
【００３３】
また、特権プロセスは、ＭＭＵ１１２、Ｃ／Ｓ１３１，１４１を操作することにより、第１のユーザプロセスおよび第２のユーザプロセスによるメモリ１１４、Ｉ／Ｏメモリ１１８へのアクセスに対して以下のようなアクセス制御を実現することができる。
【００３４】
第１のユーザプロセスに対するアクセス制御：  ＣＰＵ１１１からのアクセスは、ＭＭＵ１１２によって、Ｕｐ（１）領域１１４Ｂ，１１８Ｂのみに制限される。ＤＭＡＣ１３３からのアクセスは、ＡＣＵ１３２によって、Ｕｐ（１）領域１１４Ｂ，１１８Ｂのみに制限される。また、ＣＰＵ１１１は、Ｃ／Ｓ１３４に対するアクセスが許可されている。
【００３５】
第２のユーザプロセスに対するアクセス制御：  ＣＰＵ１１１からのアクセスは、ＭＭＵ１１２によって、Ｕｐ（２）領域１１４Ｃ，１１８Ｃのみに制限される。ＤＭＡＣ１４３からのアクセスは、ＡＣＵ１４２によって、Ｕｐ（２）領域１１４Ｃ，１１８Ｃのみに制限される。また、ＣＰＵ１１１は、Ｃ／Ｓ１４４に対するアクセスが許可されている。
【００３６】
次に図２および図３を参照して、ＤＭＡ転送処理の一連の動作を、Ｉ／Ｏコントローラ１３０を例にとって説明する。
【００３７】
図２は、Ｉ／Ｏコントローラ１３０の内部で実行される処理の流れを示したブロック図である。
【００３８】
Ｉ／Ｏコントローラ１３０は、その内部に設けられたバスＩ／Ｆ（Bus Interface）１５０を介してＩ／Ｏバス１１６に接続されている。
【００３９】
ＡＣＵ１３２は、ＤＭＡＣ１３３とバスＩ／Ｆ１５０との間に設けられている。ＤＭＡＣ１３３はメモリサイクルを実行する。ＤＭＡＣ１３３からのアドレス、コマンド（リード／ライト）は、ＡＣＵ１３２およびバスＩ／Ｆ１５０を介してＩ／Ｏバス１１６上に出力される。メモリ１１４またはＩ／Ｏメモリ１１８からの応答は、バスＩ／Ｆ１５０、ＡＣＵ１３２を介してＤＭＡＣ１３３に送られる。
【００４０】
ＡＣＵ１３２は、ＤＭＡＣ１３３から出力されるアドレスを監視し、そのアドレスがＣ／Ｓ１３１にセットされたアクセス制御情報によって指定される、Ｕｐ（１）領域のアドレス範囲に属するか否かを判別する。この判別結果に従って、ＡＣＵ１３２は、ＤＭＡＣ１３３によるアクセスを許可または禁止する。ＤＭＡＣ１３３から出力されるアドレスがＵｐ（１）領域１１４Ｂまたは１１８Ｂのアドレス範囲に属さない場合、ＡＣＵ１３２は、ＤＭＡＣ１３３からのアドレス、コマンドをＩ／Ｆ１５０を介してＩ／Ｏバス１１６上に出力せず、メモリサイクルを強制終了するための応答をＤＭＡＣ１３３に送信すると共に、ＤＭＡＣ１３３からのアドレスをエラーアドレス情報としてＣ／Ｓ１３１に保存する。Ｃ／Ｓ１３１に保存されたエラーアドレス情報は、たとえば、Ｉ／Ｏコントローラ１３０からＣＰＵ１１１に送信される割り込み信号によって、特権プロセスに通知される。
【００４１】
図３のフローチャートは、特権プロセスおよびユーザプロセスそれぞれによって実行される処理の手順を示している。
【００４２】
特権プロセス（Ｋｐ）は、ＤＭＡＣ１３３がメモリ１１４上のＵｐ（１）領域１１４ＢおよびＩ／Ｏメモリ１１８上のＵｐ（１）領域１１８ＢをアクセスできるようにするためにＡＣＵ１３２をセットアップする（ステップＳ１０１）。このステップＳ１０１においては、特権プロセス（Ｋｐ）は、Ｕｐ（１）領域１１４Ｂ，１１８Ｂのアドレス範囲を指定するアクセス制限情報をＩ／Ｏバス１１６を介してＣ／Ｓ１３１に設定する。特権プロセス（Ｋｐ）は、第１のユーザプロセス（Ｕｐ（１））がＤＭＡＣ１３３を直接操作できるようにするためにＭＭＵ１１２を操作し、これによってＣ／Ｓ１３４をアクセスするためのアドレス空間を第１のユーザプロセス（Ｕｐ（１））に割り当てる（ステップＳ１０２）。
【００４３】
第１のユーザプロセス（Ｕｐ（１））は、データ転送制御情報をＩ／Ｏバス１１６を介してＣ／Ｓ１３４に設定することにより、ＤＭＡＣ１３３にＤＭＡ転送の実行を指示する（ステップＳ１０３）。
【００４４】
次に図４のフローチャートを参照して、Ｉ／Ｏコントローラ１３０内に設けられたＡＣＵ１３２によって実行される一連の動作を説明する。
【００４５】
まず、ＡＣＵ１３２は、ＤＭＡＣ１３３から出力されるメモリアドレスを検出する（ステップＳ２０１）。次に、ＡＣＵ１３２は、検出されたＤＭＡＣ１３３からのメモリアドレスと、Ｃ／Ｓ１３１にセットされたアクセス制御情報とを比較してメモリアドレスが、第１のユーザプロセスがアクセス可能なメモリアドレスの範囲内に属するか否かを判定する（ステップＳ２０２，Ｓ２０３）。ＤＭＡＣ１３３からのメモリアドレスが、第１のユーザプロセスがアクセス可能なメモリアドレス範囲内に属する場合（ステップＳ２０３のＹＥＳ）、ＡＣＵ１３２は、ＤＭＡ転送許可する（ステップＳ２０７）。ステップＳ２０７においては、ＡＣＵ１３２は、ＤＭＡＣ１３３からのメモリアドレスをＩ／Ｆ１５０に送信する。
【００４６】
一方、ＤＭＡＣ１３３からのメモリアドレスが、第１のユーザプロセスがアクセス可能なメモリアドレス範囲内に属さない場合（ステップＳ２０３のＮＯ）、ＡＣＵ１３２は、ＤＭＡＣ１３３によって開始されたメモリサイクルを強制終了してＤＭＡ転送の実行を禁止する（ステップＳ２０５）。この後、ＡＣＵ１３２は、ＤＭＡＣ１３３からのメモリアドレスをＣ／Ｓ１３４に記憶する（ステップＳ２０５）。そして、ＡＣＵ１３２は、記憶したＤＭＡＣ１３３からのメモリアドレスをＣＰＵ１１１に通知する（ステップＳ２０６）。
【００４７】
以上説明したように、本実施形態においては、各ユーザプロセスは対応するＤＭＡＣを直接操作することができるので、Ｉ／Ｏデバイスとメモリとの間のデータ転送を効率よく実行することができる。また、ＤＭＡＣ毎にＡＣＵが設けられているので、各ＤＭＡＣによって実行されるメモリアクセスを特権プロセスによって制限することができる。
【００４８】
なお、本発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。更に、異なる実施形態に構成要素を適宜組み合わせてもよい。
【図面の簡単な説明】
【００４９】
【図１】本発明の一実施形態に係わる情報処理装置の構成の一例を示すブロック図。
【図２】図１の情報処理装置で用いられるＩ／Ｏコントローラの構成を説明するためのブロック図。
【図３】図１の情報処理装置で実行されるユーザプロセスおよび特権プロセスそれぞれによって実行される処理の手順を示すフローチャート。
【図４】図１の情報処理装置に設けられたアクセス制御ユニットの動作を説明するためのフローチャート。
【符号の説明】
【００５０】
ＣＰＵ…１１１、ＭＭＵ…１１２、メモリバス…１１３、メモリ…１１４、Ｉ／Ｏメモリ…１１８、Ｋｐ領域…１１４Ａ，１１８Ａ、Ｕｐ（１）領域…１１４Ｂ，１１８Ｂ、Ｕｐ（１）領域…１１４Ｃ，１１８Ｃ、ブリッジ１１５、Ｉ／Ｏバス…１１６、Ｉ／Ｏコントローラ…１２０，１３０，１４０、Ｃ／Ｓ（第２のレジスタ）…１２１，１３１，１４１、ＡＣＵ…１２２，１３２，１４２，ＤＭＡＣ…１２３，１３３，１４３、Ｃ／Ｓ（第１のレジスタ）…１２４，１３４，１４４、Ｉ／Ｏデバイス…１２５，１３５，１４５。
【図１】
2006099702.tif 000003
【図２】
2006099702.tif 000004
【図３】
2006099702.tif 000005
【図４】
2006099702.tif 000006