(57)【要約】【課題】ユーザプロセスによる周辺機器の制御効率を向上させる。【解決手段】メモリアクセス制御装置３００は、ＤＭＡ転送のために使用されるメモリ領域であるＤＭＡアドレス空間を対象として、ＤＭＡリクエスタ３３６からＩＯＩＤを含むアクセス要求コマンドを受信し、アクセスの可否を判定し、許可の場合には、アクセスを実行させる。ＰＵ１１２上のＯＳは、ユーザプロセスの論理アドレス空間とＤＭＡアドレス空間との対応関係をＭＭＵ３３４設定する。ユーザプロセスから、論理アドレスの指定によりＤＭＡアドレス空間へのアクセスを指示されたときには、ＭＭＵ３３４は論理アドレスをＤＭＡアドレス空間の物理アドレスに変換する。【選択図】図１４
2010152527.tif 000002
【特許請求の範囲】
【請求項１】
ＤＭＡ（Direct Memory Access）転送のために使用されるメモリ領域であるＤＭＡアドレス空間を対象として、外部のＤＭＡ転送要求主体からアクセス対象となるアドレスと前記ＤＭＡ転送要求主体を識別するためのＩＤを含む制御コマンドを受信するコマンド受信部と、
前記ＤＭＡアドレス空間におけるアドレスと、そのアドレスにて指定される領域についてアクセスを許可されるべきＤＭＡ転送要求主体のＩＤとを対応づけたアクセス可否判定テーブルを参照して、前記ＤＭＡ転送要求主体によるアクセスの可否を判定するアクセス判定部と、
前記アクセス判定部に許可されたことを条件として、前記ＤＭＡ転送要求主体の前記ＤＭＡアドレス空間に対するアクセスを実行するアクセス処理部と、
を備えるＩ／Ｏアクセス制御装置と、
ユーザプロセスの論理アドレス空間と前記ＤＭＡアドレス空間とを対応づけるマッピングテーブルを設定するマッピング部と、
ユーザプロセスから、論理アドレスの指定により前記ＤＭＡアドレス空間へのアクセスを指示されたときには、前記ユーザプロセスを前記ＤＭＡアドレス空間に直接アクセスさせるために、前記マッピングテーブルを参照して前記論理アドレスを前記ＤＭＡアドレス空間の物理アドレスに変換するアドレス変換部と、
を備えるプロセス制御装置と、
を含むことを特徴とするメモリアクセス制御システム。
【請求項２】
前記プロセス制御装置の前記マッピング部は、ＯＳ（Operating System）によりアクセス対象となる前記ＤＭＡアドレス空間の領域とユーザプロセスによりアクセス対象となる前記ＤＭＡアドレス空間の領域が重ならないように、ユーザプロセスの論理アドレス空間と前記ＤＭＡアドレス空間を対応づけることを特徴とする請求項１に記載のメモリアクセス制御システム。
【請求項３】
前記Ｉ／Ｏアクセス制御装置の前記アクセス判定部は、ＯＳ（Operating System）用に確保されている所定のメモリ領域に対する前記ＤＭＡ転送要求主体からのアクセスを排除することを特徴とする請求項１または２に記載のメモリアクセス制御システム。
【請求項４】
前記プロセス制御装置は、メインプロセスを実行する主制御装置、および、前記メインプロセスの実行中に前記主制御装置により割り当てられたユーザプロセスをサブプロセスとして実行する副制御装置を備え、
前記プロセス制御装置の前記アドレス変換部は、前記副制御装置の一部として構成され、前記副制御装置において実行されるユーザプロセスから前記ＤＭＡアドレス空間へのアクセスが指示されたときには、前記主制御装置において実行されるメインプロセスを介さずに、前記ユーザプロセスを前記ＤＭＡアドレス空間へアクセスさせることを特徴とする請求項１から３のいずれか記載のメモリアクセス制御システム。
【請求項５】
前記主制御装置は、メインプロセスとして複数種類のＯＳを時分割にて切り換えながら実行し、
前記副制御装置は、前記副制御装置において実行されるユーザプロセスから前記ＤＭＡアドレス空間へのアクセス中に、ＯＳの切り換えが発生しても、前記アクセスを継続させることを特徴とする請求項４に記載のメモリアクセス制御システム。
【請求項６】
ＤＭＡ（Direct Memory Access）転送のために使用されるメモリ領域であるＤＭＡアドレス空間を対象として、外部のＤＭＡ転送要求主体からアクセス対象となるアドレスと前記ＤＭＡ転送要求主体を識別するためのＩＤを含む制御コマンドを受信するステップと、
前記ＤＭＡアドレス空間におけるアドレスと、そのアドレスにて指定される領域についてアクセスを許可されるべきＤＭＡ転送要求主体のＩＤとを対応づけたアクセス可否判定テーブルを参照して、前記ＤＭＡ転送要求主体によるアクセスの可否を判定するステップと、
前記アクセス判定部に許可されたことを条件として、前記ＤＭＡ転送要求主体の前記ＤＭＡアドレス空間に対するアクセスを実行するステップと、
ユーザプロセスの論理アドレス空間と前記ＤＭＡアドレス空間とを対応づけるマッピングテーブルを設定するステップと、
ユーザプロセスから、論理アドレスの指定により前記ＤＭＡアドレス空間へのアクセスを指示されたときには、前記マッピングテーブルを参照して前記論理アドレスを前記ＤＭＡアドレス空間の物理アドレスに変換し、前記ユーザプロセスを前記ＤＭＡアドレス空間に直接アクセスさせるステップと、
を備えることを特徴とするメモリアクセス制御方法。
【請求項７】
ＤＭＡ（Direct Memory Access）転送要求主体のアドレス空間をメモリの所定領域にマッピングする機能と、
前記ＤＭＡ転送要求主体の制御権を付与すべきユーザプロセスのアドレス空間を前記メモリの前記所定領域に更にマッピングする機能と、
前記ユーザプロセスから前記ＤＭＡ転送要求主体に対するアクセスが発生するときには、前記ユーザプロセスと前記ＤＭＡ転送要求主体のプロセス以外のプロセスを介することなく、前記ユーザプロセスおよび前記ＤＭＡ転送要求主体の双方からマッピングされている前記所定領域を介したデータ送受を実行させる機能と、
を備えることを特徴とするメモリアクセス制御プログラム。
【請求項８】
複数のユーザプロセスのうちのいずれかのユーザプロセスが複数のＤＭＡ転送要求主体のうちのいずれかのＤＭＡ転送要求主体の制御権を要求するとき、要求対象となる前記ＤＭＡ転送要求主体のアドレス空間にマッピングされている前記メモリの領域に対して要求元である前記ユーザプロセスのアドレス空間をマッピングすることにより、前記ユーザプロセスと前記ＤＭＡ転送要求主体のデータ送受を実行させることを特徴とする請求項７に記載のメモリアクセス制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリアクセスを制御するための技術、特に、ユーザプロセスからのメモリアクセスを制御するための技術、に関する。
【背景技術】
【０００２】
近年のコンピュータゲームやデジタル放送などの分野に利用されるコンピュータグラフィックス技術や画像処理技術の著しい進歩にともない、コンピュータ、ゲーム機器、テレビなどの情報処理装置には、より高精細の画像データをより高速に処理する能力を求められている。そのためには、演算処理自体の高速化が必要であることはもちろんであるが、複数の処理装置間でタスクを好適に分散することも同様に重要である。
【特許文献１】米国特許出願公開第２００７／０２０８８８５号明細書
【発明の開示】
【発明が解決しようとする課題】
【０００３】
各処理装置は、タスクの実行に際して適宜メモリにアクセスする。このとき、処理装置Ａの処理のために確保されたメモリの領域に対して、処理装置Ｂのアクセスを許してしまうと、情報処理装置全体としての動作安定性が損なわれる。特に、周辺機器を制御するためのＩ／Ｏデバイスの場合、デバイスドライバが直接物理アドレスを指定してメモリを制御することも多い。このようなデバイスドライバのプログラムミスは、情報処理装置の動作安定性に対して深刻な影響を及ぼす可能性がある。
【０００４】
更に、ユーザプロセスは、周辺機器を制御するときにはデバイスドライバに実行を依頼するが、このような設計の場合、デバイスドライバの処理効率が全体の処理効率に大きく影響する。
【０００５】
本発明は、このような課題に鑑みてなされたものであり、その主たる目的は、ユーザプロセスによる周辺機器の制御効率を向上させるための技術、を提供することにある。
【課題を解決するための手段】
【０００６】
本発明のある態様は、メモリアクセス制御システムに関する。
このシステムは、Ｉ／Ｏアクセス制御装置とプロセス制御装置を備える。
Ｉ／Ｏアクセス制御装置は、ＤＭＡ（Direct Memory Access）転送のために使用されるメモリ領域であるＤＭＡアドレス空間を対象として、外部のＤＭＡ転送要求主体からアクセス対象となるアドレスとＤＭＡ転送要求主体を識別するためのＩＤを含む制御コマンドを受信し、ＤＭＡ転送要求主体による該当領域へのアクセスの可否を判定し、許可の場合には、アクセスを実行させる。
プロセス制御装置は、ユーザプロセスの論理アドレス空間とＤＭＡアドレス空間とを対応づけるマッピングテーブルを設定し、ユーザプロセスから、論理アドレスの指定によりＤＭＡアドレス空間へのアクセスを指示されたときには、ユーザプロセスをＤＭＡアドレス空間に直接アクセスさせるために、マッピングテーブルを参照して論理アドレスをＤＭＡアドレス空間の物理アドレスに変換する。
【発明の効果】
【０００７】
本発明によれば、ユーザプロセスによる周辺機器の制御効率を向上させる上で効果がある。
【発明を実施するための最良の形態】
【０００８】
図１は、情報処理装置１００の機能ブロック図である。
情報処理装置１００は、統括制御部１１０、画像処理部１２０、メインメモリ１４０およびＩ／Ｏデバイス１６０を含む。また、情報処理装置１００は表示装置１５０と接続されている。表示装置１５０は、統括制御部１１０および画像処理部１２０の処理の結果得られた画像、映像を出力する。Ｉ／Ｏデバイス１６０は、サウスブリッジのように他のデータ処理装置とのＩ／Ｏインタフェースとなる装置である。Ｉ／Ｏデバイス１６０では、ＵＳＢ（Universal Serial Bus）コントローラ、ＨＤＤ（Hard Disk Drive）コントローラ、イーサネットコントローラ等が、後述するコマンド送信補助装置２００に接続される。情報処理装置１００と接続されるＩ／Ｏデバイス１６０は、複数個、また、複数種類であってよい。統括制御部１１０や画像処理部１２０はそれぞれワンチップの電子デバイスとして形成されており、お互いは物理的に分離されている。統括制御部１１０と画像処理部１２０があわせて、ワンチップの電子デバイスとして形成されてもよい。
【０００９】
図１などにおいて、さまざまな処理を行う機能ブロックとして記載される各要素は、ハードウェア的には、ＣＰＵ（Central Processing Unit）、メモリ、その他のＬＳＩ（Large Scale Integration）で構成することができ、ソフトウェア的には、メモリにロードされた予約管理機能のあるプログラムなどによって実現される。したがって、これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、またはそれらの組合せによっていろいろな形で実現できることは当業者には理解されるところであり、いずれかに限定されるものではない。
【００１０】
また、この情報処理装置１００では、情報処理装置１００を効率よく使用するための機能、環境を提供し、装置全体を統括的に制御するオペレーティングシステム（以下、単に「ＯＳ（Operating System）」とよぶ）が実行される。ＯＳ上で複数のアプリケーションソフトウェアが実行される。本実施例における情報処理装置１００のＯＳ階層は、上位から、ユーザ層、カーネル層、ハイパーバイザ（Hypervisor）層の３階層となっている。以下、ハイパーバイザ層を管理するソフトウェアのことを「特権ソフトウェア」とよぶことにする。ユーザ層、カーネル層とハイパーバイザ層のソフトウェアが一体となって、情報処理装置１００の広義としての「ＯＳ」として機能している。
【００１１】
統括制御部１１０は、主制御装置としての１つのＰＵ（Processing Unit）１１２と副制御装置としての複数のＳＰＵ（Synergistic-Processing Unit）１１６、メモリコントローラ１４２およびＩ／Ｏアクセス制御装置３００を含む。ＰＵ１１２およびＳＰＵ１１６、メモリコントローラ１４２、Ｉ／Ｏアクセス制御装置３００はバス１１８により相互通信可能である。メモリコントローラ１４２には、メインメモリ１４０が接続される。また、情報処理装置１００はバス１１８を介して別の情報処理装置１００とも接続可能である。
【００１２】
ＰＵ１１２は、各アプリケーションにおける基本処理単位としてのタスクを各ＳＰＵ１１６に割り当てる。あるいは、ＰＵ１１２自身がタスクを実行してもよい。ＰＵ１１２は、演算実行主体としてメインプロセッサ１４８を含む。各ＳＰＵ１１６が割り当てられたタスクを実行することにより、複数のタスクが並列処理される。ＳＰＵ１１６は、演算実行主体としてのサブプロセッサ１４６とローカルな記憶領域としてローカルメモリ１４４を含む。ＯＳはＰＵ１１２により実行される。
【００１３】
統括制御部１１０の中でＰＵ１１２の管理下にあるメモリ空間はメインメモリ１４０と複数のローカルメモリ１４４により形成されることになる。以下、このような「ＰＵ１１２の管理下にあるメモリ空間」のことを単に「管理空間」とよぶことにする。詳しくは後述するが、ＵＳＢコントローラや画像処理用ＤＭＡＣ（Direct Memory Access Controller）１２２、ディスプレイコントローラ１２６のように、統括制御部１１０の外部に存在するＤＭＡ転送要求主体は、Ｉ／Ｏアクセス制御装置３００を介して管理空間にアクセスできる。すなわち、ＵＳＢコントローラや画像処理用ＤＭＡＣ１２２は、コマンド送信補助装置２００とＩ／Ｏアクセス制御装置３００を介して管理空間へのデータのＲＥＡＤ／ＷＲＩＴＥを実行する。以下、情報処理装置１００の外部から管理空間に直接アクセスする装置のことをまとめて「ＤＭＡリクエスタ」とよぶことにする。
【００１４】
ＰＵ１１２により実行される処理のことを「メインプロセス」、ＳＰＵ１１６により実行される処理のことを「サブプロセス」とよぶ。本実施例におけるＰＵ１１２は、複数種類のＯＳ、各種デバイスドライバ、あるいは、ユーザプロセスを実行する。また、ＳＰＵ１１６は、ユーザプロセスを実行するが、ＯＳやデバイスドライバは実行しない。
【００１５】
ＳＰＵ１１６に含まれる図示しないＤＭＡＣは、画像処理部１２０に内蔵されるグラフィックスメモリ１２８や、メモリコントローラ１４２を介して接続されるメインメモリ１４０との間のデータ転送、データ退避などをＰＵ１１２またはＳＰＵ１１６からの命令によって制御する。
【００１６】
Ｉ／Ｏアクセス制御装置３００は、ＤＭＡリクエスタからのアクセス要求コマンドを統括的に制御する。ここでいうアクセス要求コマンドとは、先述したようにＰＵ１１２の管理空間に対するデータの書き込みや管理空間のデータの読み出しを要求するコマンドである。アクセス要求コマンドについては、次の図２に関連して詳述する。ＰＵ１１２の管理空間は、メモリコントローラ１４２に接続されるメインメモリ１４０と各ＳＰＵ１１６のローカルメモリ１４４にマッピングされる。この管理空間には、他の記憶領域、たとえば、別の情報処理装置１００の記憶領域がマッピングされてもよい。ＤＭＡリクエスタがＰＵ１１２の管理空間にアクセスするときには、Ｉ／Ｏアクセス制御装置３００に対してアクセス要求コマンドを送信する。Ｉ／Ｏアクセス制御装置３００は、アクセス要求コマンドを受け取り、管理空間に対するＲＥＡＤ／ＷＲＩＴＥを制御する。
【００１７】
メインメモリ１４０は、管理空間の一部にマッピングされる記憶領域である。メインメモリ１４０には、タスクの実行状態に関連するデータが格納される。たとえば、統括制御部１１０によりコンピュータグラフィックスに関する座標計算が実行されて得られた座標データなどが一時的に格納される。また、このメインメモリ１４０には、画像処理部１２０により生成されたデータが退避される場合もある。ローカルメモリ１４４も、管理空間の一部にマッピングされる記憶領域であり、主としてサブプロセス実行のための作業用データを格納する。
メインメモリ１４０やローカルメモリ１４４の一部は、ＤＭＡ転送のためのデータを保持するための領域となる。このような領域を「ＤＭＡアドレス空間」とよぶ。ＤＭＡアドレス空間は管理空間の一部として形成される。
【００１８】
画像処理部１２０は、画像処理を専用に実行するユニットであり、たとえば、レンダリング処理を実行する。画像処理部１２０は、統括制御部１１０からの指示により画像処理を実行する。画像処理部１２０は、統括制御部１１０により処理されるそれぞれのタスクに関連する画像処理を行い、生成した画像、映像を表示装置１５０に出力する。画像処理部１２０は、複数の画像処理を時分割して並列的に実行してもよい。
【００１９】
画像処理部１２０は、メモリコントローラ１３８、グラフィックスメモリ１２８、画像処理用ＤＭＡＣ１２２、演算ユニット１３０、ディスプレイコントローラ１２６、制御ブロック１２４およびコマンド送信補助装置２００を含む。これらのユニット同士も、バス１１８で接続されており、各ユニット間で相互通信可能である。グラフィックスメモリ１２８はメモリコントローラ１３８を介してバス１１８に接続される。演算ユニット１３０は、画像処理用ＤＭＡＣ１２２を介してバス１１８に接続される。
【００２０】
グラフィックスメモリ１２８は、画像処理部１２０により使用、管理されるグラフィックスデータを記憶するためのメモリ領域である。グラフィックスメモリ１２８には、画像フレームデータが格納されるフレームバッファやＺバッファに加えて、画像フレームデータを描画する際に参照される基本データである頂点データ、テクスチャデータ、カラールックアップテーブルなどのデータに対応する領域が用意されている。
【００２１】
制御ブロック１２４は、画像処理部１２０全体を制御するブロックである。制御ブロック１２４は、演算ユニット１３０、グラフィックスメモリ１２８、ディスプレイコントローラ１２６を統括的に制御し、各ブロック間のデータ転送の同期管理やタイマー管理等を行う。
【００２２】
画像処理用ＤＭＡＣ１２２は、管理空間とグラフィックスメモリ１２８の間のデータ転送、データ退避などを制御ブロック１２４からの命令によって制御する。
【００２３】
ディスプレイコントローラ１２６は、水平および垂直同期信号を生成し、表示装置１５０の表示タイミングにしたがって、グラフィックスメモリ１２８に格納されるフレームバッファから画像フレームデータのピクセルデータをライン状に順次読み込んでいく。さらにディスプレイコントローラ１２６は、ライン状に読み込まれたピクセルデータを、ＲＧＢ（Red-Green-Blue）のカラー値からなるデジタルデータから表示装置１５０に対応したフォーマットに変換して出力する。
【００２４】
演算ユニット１３０は、制御ブロック１２４からの命令にしたがって、グラフィックスに関するさまざまな演算処理を行う。その処理の一例としては、３次元モデリングデータをもとに座標変換、陰面消去、シェーディングを行って画像フレームデータを作成し、フレームバッファに書き込む一連のレンダリング処理などが挙げられる。
【００２５】
演算ユニット１３０は、特に３次元グラフィックスに関する処理を高速に行うために、ラスタライザ１３２、シェーダユニット１３４、テクスチャユニット１３６などの機能ブロックを含む。
【００２６】
ラスタライザ１３２は、描画する基本物体（以下、「プリミティブ」とよぶ）の頂点データを統括制御部１１０から受け取り、３次元空間上のプリミティブを投影変換により描画平面上の図形に変換するビュー変換を行う。さらに、描画平面上の図形を、描画平面の水平方向に沿ってスキャンしながら、一列ごとに量子化されたピクセルに変換するラスタ処理を行う。このラスタライザ１３２によってプリミティブがピクセル展開されて、各ピクセルごとにピクセル情報を算出する。このピクセル情報には、ＲＧＢカラー値、透明度を表すα値、視点からの奥行きを表すＺ値が含まれる。
【００２７】
ラスタライザ１３２は、スキャンラインに沿って所定の大きさのピクセル領域を生成し、シェーダユニット１３４、テクスチャユニット１３６へと出力する。ラスタライザ１３２から出力されるピクセル領域は、一度キューにスタックされ、シェーダユニット１３４はスタックされたピクセル領域を順に処理していく。
【００２８】
シェーダユニット１３４は、ラスタライザ１３２により算出されたピクセル情報をもとにシェーディング処理を行い、テクスチャユニット１３６により得られたテクセル情報をもとに、テクスチャマッピング後のピクセル色を決定し、グラフィックスメモリ１２８内のフレームバッファにシェーディング処理後の画像フレームデータを書き込む。さらにシェーダユニット１３４はフレームバッファに書き込まれた画像フレームデータに対してフォギング、アルファブレンディング等の処理を行い最終的な描画色を決定してフレームバッファの画像フレームデータを更新する。
【００２９】
テクスチャユニット１３６は、シェーダユニット１３４からテクスチャデータを指定するパラメータを受け取り、要求されたテクスチャデータをグラフィックスメモリ１２８内のテクスチャバッファを読み出し、所定の処理を行った後にシェーダユニット１３４に対して出力する。
【００３０】
画像処理部１２０はプリミティブの頂点データなど画像生成のために必要な基本情報や画像生成の開始指示を統括制御部１１０から与えられると、統括制御部１１０とは独立して画像処理を実行する。画像処理用ＤＭＡＣ１２２は、画像処理部１２０により生成されたデータをグラフィックスメモリ１２８や管理空間に転送する。
【００３１】
画像処理部１２０内のＤＭＡリクエスタがＤＭＡアドレス空間にデータを転送するとき、画像処理部１２０に含まれるコマンド送信補助装置２００は、画像処理部１２０から統括制御部１１０のＩ／Ｏアクセス制御装置３００に対して、アクセス要求コマンドを送信する。コマンド送信補助装置２００は、アクセス先となる管理空間の論理アドレス、ＤＭＡリクエスタを識別するためのＩＤ情報（以下、「ＩＯＩＤ（Input/Output device ID）」とよぶ）、コマンド（ＲＥＡＤ／ＷＲＩＴＥ）をパケット化したアクセス要求コマンドを送信する。書き込み指示の場合、アクセス要求コマンドにつづいて、書き込み対象のデータも送信される。Ｉ／Ｏアクセス制御装置３００は、受信したアクセス要求コマンドにしたがって、ＤＭＡリクエスタからのＤＭＡアドレス空間に対するアクセスを制御する。
【００３２】
コマンド送信補助装置２００は、画像処理部１２０のみならず、Ｉ／Ｏデバイス１６０にも搭載される。Ｉ／Ｏデバイス１６０に搭載されるコマンド送信補助装置２００も、Ｉ／Ｏデバイス１６０から統括制御部１１０に対して、アクセス要求コマンドを送信する。画像処理部１２０においてＤＭＡリクエスタとなるのは画像処理用ＤＭＡＣ１２２やディスプレイコントローラ１２６である。Ｉ／Ｏデバイス１６０についてＤＭＡリクエスタとなるのは、先述したＵＳＢコントローラや、ＨＤＤコントローラ、イーサネットコントローラ等である。コマンド送信補助装置２００は、各種ＤＭＡリクエスタがＤＭＡアドレス空間へのアクセスを要求するときに、所定フォーマットのアクセス要求コマンドを生成して、統括制御部１１０に送信する装置である。Ｉ／Ｏアクセス制御装置３００は、さまざまなコマンド送信補助装置２００を介してさまざまなＤＭＡリクエスタからのアクセス要求を受け取り、ＤＭＡアドレス空間へのアクセスを制御する装置である。
【００３３】
コマンド送信補助装置２００の詳細については、図２以降、特に図５に関連して詳述する。
【００３４】
図２は、アクセス要求コマンド１６２のデータ構造図である。
同図に示すアクセス要求コマンド１６２は、コマンド送信補助装置２００からＩ／Ｏアクセス制御装置３００に対して送出される。ＩＯＩＤ領域１７２は、コマンド送信補助装置２００がＤＭＡリクエスタを一意に識別するために付与するＩＯＩＤを示す。ＩＯＩＤは、情報処理装置１００において各ＤＭＡリクエスタを一意に識別するＩＤである。コマンド領域１７９は、ＲＥＡＤやＷＲＩＴＥなどのコマンド内容を示す。アドレス領域１７０は、アクセス先のアドレスを示す。このアドレスは、論理的なアドレスであって物理アドレスを直接的に指定するものではない。論理アドレス空間は、セグメントに分割されており、セグメントはページに分割される。各ページにおける具体的なアドレスはオフセットにより指定される。アドレス領域１７０は、セグメント領域１７４、ページ領域１７６、オフセット領域１７８を含む。セグメント領域１７４はセグメントを指定するセグメント値、ページ領域１７６はページを指定するページ値、オフセット領域１７８はそのページ内におけるオフセット値を示す。
【００３５】
アクセス要求コマンド１６２のうち、アドレス領域１７０については図６や図７に関連しても後述する。
【００３６】
図３は、アクセス要求コマンドにより示された論理アドレスを物理アドレスに変換する過程を説明するための模式図である。
【００３７】
このような変換処理はＩ／Ｏアクセス制御装置３００において実行される。Ｉ／Ｏアクセス制御装置３００は、アクセス要求コマンド１６２のアドレス領域１７０を抽出する。まず、セグメント値を抽出する。セグメント値に対して、予め定められたベース値が加算される。ベース値はＯＳにより割り当てられてもよいし、固定値であってもよい。このセグメント値に対するベース値の加算値が第１インデックス値となる。第１変換テーブル１８０は、第１インデックス値とページベース値を対応づけたデータテーブルである。第１変換テーブル１８０によりページベース値が特定される。
【００３８】
第１変換テーブル１８０のうち、第１インデックス欄１８４は、第１インデックス値を示す。ページベース欄１８５は、ページサイズを示す。ページベース値欄１８６は、ページベース値を示す。第１変換テーブル１８０により特定されたページベース値にページ領域１７６のページ値が加算される。この加算値が第２インデックス値となる。
【００３９】
第２変換テーブル１８２は、第２インデックス値とページ番号等を対応づけたデータテーブルである。第２変換テーブル１８２のうち、第２インデックス欄１８８は、第２インデックス値を示す。ページ番号欄１９０は、ページ番号を示す。ＩＯＩＤ欄１９２は、各ページについてアクセスを許可されるべきＤＭＡリクエスタをＩＯＩＤにより示す。また、アクセス条件欄１９４は、該当ページにおけるアクセス属性情報を示す。アクセス属性情報については、後述する。なお、第１変換テーブル１８０や第２変換テーブル１８２は、ＯＳの特権ソフトウェアによって設定される。
【００４０】
第２インデックス値により、アクセス先のページ番号が特定される。特定されたページについて、アクセス要求コマンド１６２から抽出されるＩＯＩＤと、ＩＯＩＤ欄１９２のＩＯＩＤ値が一致すれば、当該ページに対するアクセスが許可される。アクセス許可されたとき、特定されたページのアドレスにオフセット値を加算して最終的に、具体的な物理アドレスが特定される。そして、アクセス条件欄１９４に示されるアクセス属性情報にしたがってアクセスが実行される。
【００４１】
アクセス属性情報とは、管理空間に対するアクセス方法を条件付けるための情報であり、具体的には、以下のようなものがある。
１．アクセス順序の強制をするか否か
【００４２】
通常、記録媒体に対するアクセスは必ずしもアクセス要求順に実行されるのではなく、メモリコントローラが実行しやすい順序でアクセスが実行される。このような処理方法は、一般にはアウトオブオーダー実行(Out of Order Execution)、あるいは、ウィークリーオーダー実行（Weakly Order Execution）とよばれている。アクセス条件欄１９４においては、アウトオブオーダー実行ではなく、アクセス要求順にしたがってアクセスすべきか否かを指定するための情報がアクセス属性情報として含まれる。アクセス順序が強制される設定のページの場合、そのページに対するアクセスは、すべてアクセス要求がなされた順に実行されるように処置される。このようにアクセス順序を強制する処理方法は、インオーダー実行（In Order Execution）、あるいは、ストリクトリィオーダー実行（Strictly Order Execution）とよばれる。アクセス順序の制御方法は、ＩＯＩＤごとに設定可能である。たとえば、ＩＯＩＤ＝００２２のＤＭＡリクエスタが、ページＡを介してある物理アドレスにアクセスし、ＩＯＩＤ＝００２３のＤＭＡリクエスタはページＡとは異なるページＢを介して同じ物理アドレスにアクセスするとする。ここで、第２変換テーブル１８２において、ページＡからのアクセスはストリクトリィオーダー実行、ページＢからのアクセスはアウトオブオーダー実行として設定すれば、同一の物理アドレスであっても、ＤＭＡリクエスタに応じて異なるアクセス順序制御が可能である。
２．キャッシュコヒーレンシ維持が必要か否か
【００４３】
メインメモリ１４０のようないわゆる主記憶のデータは、キャッシュメモリを介してアクセスされる。キャッシュメモリは、ＰＵ１１２やＳＰＵ１１６に内蔵される。ＰＵ１１２やＳＰＵ１１６はメインメモリ１４０よりも高速アクセスが可能なキャッシュメモリを利用して処理を実行することもできる。キャッシュメモリに書き込まれたデータは、メインメモリ１４０に反映される。ただし、その反映のタイミングによっては、キャッシュメモリとメインメモリ１４０との間でデータが一致しない期間が発生する。
【００４４】
外部からのアクセス要求に際し、キャッシュメモリのデータとメインメモリ１４０やローカルメモリ１４４のデータとの一貫性、いわゆるキャッシュコヒーレンシ（Cache Coherency）の維持が必要か否かを示す情報がアクセス属性情報として含まれる。
【００４５】
キャッシュコヒーレンシ維持設定されたページの場合、たとえば、スヌープ方式（Cache Snooping）により、どのキャッシュメモリに最新のデータが存在するかを検知した上で、各キャッシュメモリが必要なときに最新データを取得できるように自身の状態を変更する。そのほかにも、ディレクトリ方式（Directory-based Protocol）や共有キャッシュ（Shared Cache）のような、既知の方法によりキャッシュコヒーレンシを維持してもよい。
３．ページに対する書込を許可するか否か
【００４６】
該当ページに対して、ＲＥＡＤだけが許可されるか、ＲＥＡＤ／ＷＲＩＴＥ共に許可されるかを示す情報がアクセス属性情報として含まれる。
【００４７】
図４は、管理空間とアクセス可否との関係を説明するための模式図である。
【００４８】
ＤＭＡリクエスタのうち、画像処理用ＤＭＡＣ１２２のＩＯＩＤが「００２１」、ディスプレイコントローラ１２６のＩＯＩＤが「００２２」であるとして説明する。管理空間のうち、アクセス不能領域１９８とアクセス不能領域１９９は、画像処理用ＤＭＡＣ１２２もディスプレイコントローラ１２６もアクセス不可として設定されている領域である。これらの領域は、ローカルメモリ１４４にマップされているかもしれないし、メインメモリ１４０にマップされているかもしれない。ＩＯＩＤ「００２１」の画像処理用ＤＭＡＣ１２２は、アクセス可能領域１９６とアクセス可能領域２０１にアクセスできる。すなわち、第２変換テーブル１８２において、アクセス可能領域１９６とアクセス可能領域２０１にマッピングされているページについては、ＩＯＩＤ欄１９２においてＩＯＩＤ「００２１」が指定されている。
【００４９】
第２変換テーブル１８２により特定されたページについてＩＯＩＤ「００２１」が指定されているか否かを参照することにより、画像処理用ＤＭＡＣ１２２のアクセスが禁じられている領域へのアクセスを防ぐことができる。このように、情報処理装置１００において各ＤＭＡリクエスタを一意に識別するＩＯＩＤをチェックする方法によって、管理空間にマップされているメインメモリ１４０やローカルメモリ１４４を不正アクセスから保護している。
【００５０】
アクセス可能領域２０１は、ＩＯＩＤ「００２１」とＩＯＩＤ「００２２」のそれぞれのＤＭＡリクエスタについて、別々のページから２重にマッピングされている。一方のページＡはＩＯＩＤ「００２１」の画像処理側ＤＭＡＣ１２２からアクセスされ、他方のページＢはＩＯＩＤ「００２２」のディスプレイコントローラ１２６からアクセスされる。第２変換テーブル１８２において、ページＡにはＩＯＩＤ「００２１」が設定され、ページＢにはＩＯＩＤ「００２２」が設定されている。したがって、ＩＯＩＤ「００２１」の画像処理側ＤＭＡＣ１２２もＩＯＩＤ「００２２」のディスプレイコントローラ１２６も、アクセス可能領域２０１へのアクセスを許可される。ただし、画像処理側ＤＭＡＣ１２２がアクセス可能領域２０１へアクセスするために介するページと、ディスプレイコントローラ１２６が同じくアクセス可能領域２０１にアクセスするためのページは別々である。このように、第２変換テーブル１８２には、管理空間についてページ単位でＩＯＩＤごとのアクセス可否が設定される。すなわち、管理空間についてページ単位でＤＭＡリクエスタに応じたアクセス条件を設定できるため、不正アクセスを防止しやすくなっている。
【００５１】
仮にＩＯＩＤ「００２１」の画像処理側ＤＭＡＣ１２２について、セグメント値＝１００、ページ値＝１０、オフセット値＝０であるとする。また、ＩＯＩＤ「００２２」のディスプレイコントローラ１２６について、セグメント値＝２００、ページ値＝１０、オフセット値＝２００であるとする。それぞれが指定するページは、共に、ページサイズが４ＫＢで、アクセス可能領域２０１内の同じ物理アドレス「２３４５００００」を指すとする。ＩＯＩＤ「００２１」の画像処理側ＤＭＡＣ１２２は物理アドレス＝２３４５００００をアクセス対象とし、ＩＯＩＤ「００２２」のディスプレイコントローラ１２６は、物理アドレス＝２３４５０２００（＝２３４５００００＋２００）をアクセス対象とする。２つの異なるＤＭＡリクエスタは、共に、アクセス可能領域２０１にアクセスを許可されることになる。
【００５２】
変形例として、一つのページに対して、２つ以上のＩＯＩＤを設定できてもよい。たとえば、アクセス可能領域２０１にマッピングされているページＡについて、ＩＯＩＤ「００２１」とＩＯＩＤ「００２２」の両方がＩＯＩＤ欄１９２に設定されているとする。このとき、ＩＯＩＤ「００２１」の画像処理側ＤＭＡＣ１２２とＩＯＩＤ「００２２」のディスプレイコントローラ１２６は、共に、ページＡを介してアクセス可能領域２０１にアクセスできる。
【００５３】
仮に、アクセス要求コマンド１６２が指定するアドレスが物理アドレスを直接指定するものであっても、ＩＯＩＤによるチェックは有効に機能する。本実施例においては、アクセス要求コマンド１６２が指定するアドレスを物理アドレスを直接指定するものではない論理アドレスとし、独立したアドレス空間を使用できるため、さらに不正アクセスに対する堅牢性が向上する。
【００５４】
なお、アクセス可能領域１９６に含まれるページであっても、アクセス属性情報として書込禁止設定されているアドレス領域に対しては、正当なＩＯＩＤをもつアクセス要求主体であっても書込処理は禁止されることはもちろんである。
【００５５】
図５は、コマンド送信補助装置２００の機能ブロック図である。
コマンド送信補助装置２００は、コマンド送信部２０２、ＩＯＩＤ／セグメントアドレス追加部２０４およびコマンド取得部２０６を含む。
【００５６】
コマンド取得部２０６は、ＤＭＡリクエスタからコマンドを取得する。ＤＭＡリクエスタは、管理空間におけるアクセス先を指し示すアドレス（以下、「原アドレス」とよぶ）とＲＥＡＤまたはＷＲＩＴＥを示すコマンド、後述するＤＭＡリクエスタＩＤ（以下、「ＤＭＡＲＩＤ」とよぶ）をコマンド取得部２０６に渡す。ＤＭＡＲＩＤとはＤＭＡリクエスタを識別するためのＩＤであるが詳しくは後述する。コマンド取得部２０６は、コマンドと原アドレス、ＤＭＡＲＩＤを取得する。
【００５７】
ＩＯＩＤ／セグメントアドレス追加部２０４は、コマンド取得部２０６から、コマンド、原アドレス、ＤＭＡＲＩＤを受け取り、アクセス要求コマンド１６２を生成する。ここで、ＩＯＩＤ／セグメントアドレス追加部２０４は、ＤＭＡリクエスタを特定するためのＩＯＩＤをアクセス要求コマンド１６２に追加する。また、後述するセグメントアドレスをも追加する。コマンド送信部２０２は、こうして、少なくともＩＯＩＤ、アクセス先の論理アドレス、コマンド、を含むアクセス要求コマンド１６２をＩ／Ｏアクセス制御装置３００に対して送信する。コマンド送信部２０２は、アクセス要求コマンド１６２をＩ／Ｏアクセス制御装置３００に送信する。
【００５８】
図６は、ＩＯＩＤ／セグメントアドレス追加部２０４の処理内容を示す模式図である。
ＩＯＩＤ／セグメントアドレス追加部２０４は、ＵＣ＿ＡＤＤＲ＿ＴＲＡＮＳ＿ＵＡＲレジスタ２５０、マスクコントローラ２５２、変換部２５４、ＵＣ＿ＡＤＤＲ＿ＴＲＡＮＳ＿ＴＡＢＬＥレジスタ２５６を含む。
【００５９】
ＤＭＡリクエスタが指定する原アドレスはコマンド取得部２０６を介してマスクコントローラ２５２に入力される。各ＤＭＡリクエスタにはＤＭＡＲＩＤとよばれるＩＯＩＤとは異なるＩＤが付与されている。ＤＭＡＲＩＤは、コマンド送信補助装置２００がＤＭＡリクエスタを一意に識別できるＩＤであればよい。ただし、各ＤＭＡリクエスタのＤＭＡＲＩＤは、製品のシステム構成や製造時期によって異なるかもしれない。たとえば、システム構成Ａにおけるディスプレイコントローラ１２６のＤＭＡＲＩＤは「１０２２５」、システム構成Ｂにおけるディスプレイコントローラ１２６のＤＭＡＩＤは「００４５２」かもしれない。また、同じシステム構成Ａのディスプレイコントローラ１２６であっても、製造時期によってＤＭＡＲＩＤは異なるかもしれない。これに対して、ＩＯＩＤはディスプレイコントローラ１２６の種類や製造時期にかかわらず、ディスプレイコントローラ１２６を他のＤＭＡリクエスタから識別するためのＩＤである。ＤＭＡＲＩＤはＩＯＩＤ変換テーブル２６０によりＩＯＩＤに変換される。システム構成Ａのディスプレイコントローラ１２６もシステム構成Ｂのディスプレイコントローラ１２６も、ＩＯＩＤ変換テーブル２６０により共にＩＯＩＤ「００２２」に変換されてもよい。すなわち、ＩＯＩＤは、情報処理装置１００において、ＤＭＡリクエスタの種類を特定するＩＤである。ＩＯＩＤ「００２２」のＤＭＡリクエスタとはディスプレイコントローラ１２６であるという対応付けは、ＯＳにより設定可能である。
【００６０】
統括制御部１１０のＩ／Ｏアクセス制御装置３００は、先述したようにＩＯＩＤによって管理空間へのアクセス可否を判定する。Ｉ／Ｏアクセス制御装置３００は、このＩＯＩＤの代わりにＤＭＡＲＩＤをベースとしてアクセス可否判定してもよい。しかし、ＤＭＡＲＩＤをベースとしてアクセス制御するためには、Ｉ／Ｏアクセス制御装置３００はＤＭＡリクエスタとしてどのようなＤＭＡリクエスタが導入されているか、どのようなＤＭＡＲＩＤが登録されているかを知る必要がある。これに対して、本実施例のＩ／Ｏアクセス制御装置３００は、あらかじめＤＭＡリクエスタの種類に対応づけられたＩＯＩＤをベースとして動作するため、そのＩＯＩＤによって特定されるＤＭＡリクエスタが具体的にどのような製品であるかについて関知する必要がない。いわば、ＩＯＩＤは情報処理装置１００においてグローバルに特定されるＩＤである。ＩＯＩＤ変換テーブル２６０は、さまざまなＤＭＡＲＩＤをＩＯＩＤに変換するためのテーブルである。ＩＯＩＤ変換テーブル２６０により、アクセス要求コマンド１６２の受信側である統括制御部１１０からみたシステム構成を抽象化できる。ＩＯＩＤ変換テーブル２６０の変換規則はＵＣ＿ＡＤＤＲ＿ＴＲＡＮＳ＿ＴＡＢＬＥレジスタ２５６を介してＯＳの特権ソフトウェアにより設定可能である。したがって、ＵＣ＿ＡＤＤＲ＿ＴＲＡＮＳ＿ＴＡＢＬＥレジスタ２５６によりＩＯＩＤ変換テーブル２６０を設定変更するだけで、システムの構成変更に対応できる。
【００６１】
同様にして、セグメント選択テーブル２６２ではＤＭＡＲＩＤに基づいて８ビットのセグメントアドレス（ＳＥＧ＿ＡＤＤＲ）が選択される。マスク変換テーブル２６４では、５ビットのＤＭＡＲＩＤに基づいて４ビットのマスクビット（ＭＡ＿ＭＡＳＫ）が選択される。特権ソフトウェアはＵＣ＿ＡＤＤＲ＿ＴＲＡＮＳ＿ＴＡＢＬＥレジスタ２５６を介してセグメント選択テーブル２６２やマスク選択テーブル２６４の値を設定できる。ＩＯＩＤ変換テーブル２６０により変換されたＩＯＩＤは、先述のようにアクセス要求コマンド１６２の一部となる。８ビットのＳＥＧ＿ＡＤＤＲ、４ビットのＭＡ＿ＭＡＳＫ、ＤＭＡリクエスタが元々指定していたアクセス先の３２ビットの原アドレス（ＡＤＤＲ）、ＵＣ＿ＡＤＤＲ＿ＴＲＡＮＳ＿ＵＡＲレジスタ２５０の２８ビットの設定値がマスクコントローラ２５２に入力される。マスクコントローラ２５２は、次の図７に示す処理方法により、６４ビットの中間アドレス（ＩＮＴ＿ＡＤＤＲ）を生成する。ＩＯＩＤ／セグメントアドレス追加部２０４は、このＩＮＴ＿ＡＤＤＲに１１ビットのＩＯＩＤとコマンドを追加してアクセス要求コマンド１６２を生成する。
【００６２】
図７は、中間アドレス（ＩＮＴ＿ＡＤＤＲ）の生成方法を示す模式図である。
中間アドレス（ＩＮＴ＿ＡＤＤＲ）は６４ビットであり、第０ビットから第２７ビットまでにはＵＣ＿ＡＤＤＲ＿ＴＲＡＮＳ＿ＵＡＲレジスタ２５０から出力された設定値となる。特権ソフトウェアはＵＣ＿ＡＤＤＲ＿ＴＲＡＮＳ＿ＵＡＲレジスタ２５０も設定可能である。第２８ビットから第３１ビットまでの４ビットは、ＳＥＧ＿ＡＤＤＲの上位４ビットである。第３６ビットから第６３ビットまでの２８ビットはＡＤＤＲの下位２８ビットである。第３２ビットから第３５ビットまでは、ＡＤＤＲの上位４ビットとＭＡ＿ＭＡＳＫの論理積である４ビット値にＳＥＧ＿ＡＤＤＲの下位４ビットを論理和したものである。こうして、計６４ビットの中間アドレスが生成される。本実施例においては、中間アドレス（ＩＮＴ＿ＡＤＤＲ）の第０ビットから第２７ビットまでは予約領域であり、第２８ビットから第６３ビットまでがアドレス領域１７０となる。
【００６３】
図８は、中間アドレス（ＩＮＴ＿ＡＤＤＲ）のうち、アドレス領域１７０におけるセグメント、ページ、オフセットの関係を示す図である。
【００６４】
ページサイズが４ＫＢのときには、ページアドレス幅は１６ビットとなり、ページ数は６５５３６となる。ページサイズが６４ＫＢのときには、ページアドレス幅は１２ビットとなり、ページ数は４０９６となる。ページサイズが１ＭＢのときには、ページアドレス幅は８ビットとなり、ページ数は２５６となる。ページサイズが１６ＭＢのときには、ページアドレス幅は４ビットとなり、ページ数は１６となる。使用されるページサイズは、第１変換テーブル１８０のページサイズ欄１８５によって決まる。このように、アクセス要求コマンド１６２においては複数のページサイズをサポートできる。
【００６５】
図９は、Ｉ／Ｏアクセス制御装置３００の機能ブロック図である。
Ｉ／Ｏアクセス制御装置３００は、コマンド受信部３０２、アクセス判定部３０４、アドレス変換部３０６、キャッシュ処理部３０８、部分情報保持部３１０およびアクセス処理部３１２を含む。
【００６６】
コマンド受信部３０２は、コマンド送信補助装置２００から送信されたアクセス要求コマンド１６２を受信する。キャッシュ処理部３０８は、アドレス情報保持部３１４から図３に示した第１変換テーブル１８０や第２変換テーブル１８２の一部のデータを部分情報保持部３１０にロードする。
【００６７】
アドレス情報保持部３１４は、メインメモリ１４０の一部として構成されてもよい。また、部分情報保持部３１０は、アドレス情報保持部３１４よりも高速にアクセスが可能な内蔵キャッシュメモリとして構成されてもよい。以下、アドレス情報保持部３１４に保持される第１変換テーブル１８０や第２変換テーブル１８２のことを、まとめて「アドレス変換テーブル」とよぶ。また、部分情報保持部３１０にロードされるアドレス変換テーブルの一部のことをアドレス変換テーブルと区別するために「部分変換テーブル」とよぶ。
【００６８】
キャッシュ処理部３０８による部分情報保持部３１０とアドレス情報保持部３１４の間のデータ転送操作のことを「リフィル（Refill）」ともよぶ。
【００６９】
アドレス変換部３０６は、部分情報保持部３１０に保持されている部分変換テーブルを参照して、論理アドレスを物理アドレスに変換する。変換方法については、図３に示した通りである。部分情報保持部３１０に保持される部分変換テーブルにおいて、論理アドレスを物理アドレスに変換するためのデータが含まれていないときには、キャッシュ処理部３０８は、該当部分を含む部分変換テーブルをアドレス情報保持部３１４から部分情報保持部３１０に新たにリフィルする。アドレス変換により特定された物理アドレスは、アクセス処理部３１２やアクセス判定部３０４に通知される。
【００７０】
アクセス判定部３０４は、アドレス変換部３０６において特定されたページについて、ＩＯＩＤが一致するか、すなわち、アクセスが可能な領域であるか否かを判定する。判定結果は、アクセス処理部３１２に通知される。アクセス処理部３１２は、アクセス判定部３０４によりアクセス許可されたことを条件として、アドレス変換部３０６から通知された物理アドレスに対して指定されたコマンドにより管理空間へのアクセスを実行する。このとき、アクセス判定部３０４は、ページについて指定されたアクセス属性情報にしたがって、アクセスを実行する。アクセス処理部３１２のアクセス先は、メインメモリ１４０やローカルメモリ１４４など、ＰＵ１１２の管理空間にマップされている記録媒体である。
【００７１】
アクセス処理部３１２は、さまざまなＤＭＡリクエスタのアクセス要求のうち、有効なものをキューに保持する。アクセス処理部３１２は、キューからアクセス要求を順次取り出して管理空間へのアクセスを実行する。アクセス処理部３１２は、ＤＭＡリクエスタＡによるメインメモリ１４０へのアクセスを実行しているときに、ＤＭＡリクエスタＢによるローカルメモリ１４４へのアクセスを実行することもできる。このようにアクセス処理部３１２は、複数のＤＭＡリクエスタによる複数種類のアクセスを並列実行することができる。
【００７２】
なお、Ｉ／Ｏアクセス制御装置３００は、アドレス情報保持部３１４に相当する部分を含んで構成されてもよい。
【００７３】
図１０は、Ｉ／Ｏアクセス制御装置３００によるアクセス制御過程を示すフローチャートである。
コマンド受信部３０２は、受信したアクセス要求コマンド１６２からＩＯＩＤを抽出する（Ｓ１０）。アドレス変換部３０６は、論理アドレスを物理アドレスに変換する（Ｓ１２）。アクセス判定部３０４は、アクセス要求コマンド１６２のＩＯＩＤが、第２変換テーブル１８２において特定されたページのＩＯＩＤと一致するか判定する（Ｓ１４）。一致すれば（Ｓ１４のＹ）、アクセス処理部３１２はアクセス属性情報にしたがって、管理空間へのアクセスを実行する（Ｓ１６）。一致しなければ（Ｓ１４のＮ）、アクセス処理部３１２は送信元のコマンド送信補助装置２００に対してエラーを通知する（Ｓ２０）。エラー通知は、ＯＳに対してエラーメッセージとしてイベント通知されてもよい。この場合には、アクセスは拒否される。
【００７４】
図１１は、ユーザプロセスとＤＭＡリクエスタ、デバイスドライバの一般的な関係を示す模式図である。
ＰＵ１１２やＳＰＵ１１６上で実行されるユーザプロセスは、その実行過程においてさまざまなＤＭＡリクエスタを制御する。ユーザプロセスはＤＭＡリクエスタに対してさまざまなデータを転送し、ＤＭＡリクエスタもユーザプロセスに対してさまざまなデータを転送する。こういったデータ転送のため、メインメモリ１４０には、転送対象となるデータを一時的に置くための領域が確保される。このような領域に対応するメモリ空間が「ＤＭＡアドレス空間」である。ＤＭＡアドレス空間は、管理空間の一部である。
【００７５】
一般的な構成におけるユーザプロセスは、ＤＭＡアドレス空間に直接アクセスできない。デバイスドライバ以上に多種多様なユーザプロセスが、ＤＭＡアドレス空間へ直接アクセスすると、１つのユーザプロセスの不正動作が情報処理装置１００全体の動作安定性に対して深刻な影響を及ぼすためである。たとえば、ユーザプロセスＡがＤＭＡリクエスタａにデータＤを送るため、ＤＭＡアドレス空間の所定領域にデータＤを書き込み、転送を指示したとする。しかし、このユーザプロセスＡが誤って、ＤＭＡリクエスタｂに対応づけられたＤＭＡアドレス空間の領域にデータＤを書き込んでしまうと、ＤＭＡリクエスタｂが不正なデータに基づいて動作してしまう。ユーザプロセスの設計がしっかりしていればこのような問題は起こらないが、膨大なユーザプロセス全ての動作を検証することは現実的ではない。
【００７６】
このため、一般的なユーザプロセスは、デバイスドライバを介して、ＤＭＡアドレス空間に間接的にアクセスする。ＯＳと一体となって動作するデバイスドライバであれば、ユーザプロセスはＯＳを経由してＤＭＡアドレス空間にアクセスすることになる。デバイスドライバまでもが不正動作をしてしまうと同じ問題が生じるが、情報処理装置１００に導入されるデバイスドライバの種類は情報処理装置１００で実行され得るユーザプロセスの種類に比べると格段に少ないので、管理しやすい。更に、上述したように、デバイスドライバのＤＭＡアドレス空間へのアクセスをＩＯＩＤによって厳密に管理すれば、ＤＭＡアドレス空間に対する不正アクセスをいっそう防止しやすくなる。
【００７７】
一般的なＤＭＡ転送の仕組みをより具体的に説明すると以下のとおりである。ユーザプロセスがデバイスドライバにＤＭＡ転送を依頼する。このとき、ユーザプロセスは、メモリ上に送信データを置き、そのアドレスをデバイスドライバに通知する。デバイスドライバは、該当アドレスから送信データを取得し、ＤＭＡリクエスタ制御用のレジスタを操作し、ＤＭＡ転送を実行する。転送結果を示す結果データは、メモリの所定領域（以下、「ＤＭＡ転送データ領域」とよぶ）に一時的に保存される。そのあと、デバイスドライバは、この結果データを、ユーザプロセスにマッピングされている所定のメモリ領域にコピーする。ＤＭＡ転送において主要な役割を果たすデバイスドライバは特権レベルで動作するため、デバイスドライバの誤動作はＯＳや他のユーザプロセスのデータにも悪影響を及ぼす可能性がある。そこで、先述したＩＯＩＤの仕組みにより、デバイスドライバからメモリへのアクセスを管理することにより、このような問題に対処している。
【００７８】
ユーザプロセスがデバイスドライバを介してＤＭＡアドレス空間に間接的にアクセスするという一般的な設計は、情報処理装置１００の動作安定性という面からは好ましいが、反面、動作効率という点では必ずしも最適とはいえない。ユーザプロセスがＤＭＡリクエスタを制御するとき、常に、デバイスドライバやＯＳに一時的に制御権が移るため、このためのオーバヘッドが発生してしまうためである。特に、デバイスドライバが結果データをＤＭＡ転送データ領域から他のメモリ領域にコピーするときのオーバーヘッドや、コンテキストスイッチ発生時のオーバーヘッドが大きい。ユーザプロセスが、デバイスドライバ等を介さずにＤＭＡリクエスタにデータ転送する方が、動作効率の面からは好ましい。
このためには、ユーザプロセスがＤＭＡアドレス空間に直接アクセスできるとしても、不正なアクセスを未然に防止する仕組みが必要である。図１２以降においては、このような仕組みについて説明する。
【００７９】
なお、本実施例における情報処理装置１００のように、１つのＰＵ１１２と複数のＳＰＵ１１６を含む、いわゆるマルチコアシステムにおいて、ＯＳやデバイスドライバといった基幹ソフトウェアを実行するのはＰＵ１１２である。このような構成においては、デバイスドライバの介在にともなうオーバヘッドの影響が特に顕在化しやすい。たとえば、ユーザプロセスＡがＳＰＵ１１６ａ、ユーザプロセスＢがＳＰＵ１１６ｂ上にて同時並行実行されているとする。ここで、ユーザプロセスＡがデータＤａをＤＭＡリクエスタａ、ユーザプロセスＢがデータＤｂをＤＭＡリクエスタｂにそれぞれＤＭＡ転送しようとしたとする。このときには、ユーザプロセスＡとユーザプロセスＢは共にＰＵ１１２のデバイスドライバ群に処理を依頼することになり、ＰＵ１１２において各依頼がシリアライズされてしまう。複数のＳＰＵ１１６が複数のユーザプロセスを同時並行実行しても、複数のユーザプロセスがデバイスドライバを必要とする頻度が高くなると、ＰＵ１１２がボトルネックとなりかねない。この結果、折角のマルチコアとしての優位性が好適に発揮されなくなる。このあたりの問題点については、図１５に関連して後に詳述する。本実施例の情報処理装置１００のようなマルチコアシステムの場合、ＳＰＵ１１６上のユーザプロセスがデバイスドライバを介さずに、いいかえれば、ＰＵ１１２に頼らずに独自にＤＭＡアドレス空間にアクセスできれば、全体としての処理性能を特に向上させやすい。
【００８０】
図１２は、ユーザプロセスとＤＭＡリクエスタ、デバイスドライバの本実施例における関係を示す模式図である。
本実施例においては、ユーザプロセスはＤＭＡリクエスタ専用の論理アドレス空間（以下、「ＤＭＡリクエスタ空間」とよぶ）に直接アクセスできる。ユーザプロセスには、互いに独立した論理アドレス空間が割り当てられる。この論理アドレス空間の一部は、ＤＭＡアドレス空間にマッピングされる。ＤＭＡアドレス空間は、通常、メインメモリ１４０上に形成される物理アドレス領域である。ＤＭＡアドレス空間は、更に、ＤＭＡリクエスタ空間にマッピングされる。いわば、ＤＭＡアドレス空間に対して、ＤＭＡリクエスタのためのＤＭＡリクエスタ空間およびユーザプロセスのための論理アドレス空間が２重にマッピングされる。ユーザプロセスは、論理アドレスを指定することにより、デバイスドライバやＯＳなどの他のソフトウェアを介することなく、直接、ＤＭＡアドレス空間を介してＤＭＡリクエスタ空間にアクセスできることになる。ＤＭＡアドレス空間を介してＤＭＡリクエスタにデータを直接転送できる。このため、ＰＵ１１２の動作状況に左右されることなく、各ＳＰＵ１１６上の各ユーザプロセスが複数のＤＭＡリクエスタに対して同時並行的にＤＭＡ転送できる。
【００８１】
より具体的には、ユーザプロセスはローカルメモリ１４４の所定領域に転送したいデータＤを書き込む。この領域はメインメモリ１４０上のＤＭＡアドレス空間にマッピングされている。ＳＰＵ１１６に内蔵されているＤＭＡＣは、データＤをこのＤＭＡアドレス空間に転送する。ＤＭＡリクエスタは、アクセス要求コマンドにより、ＤＭＡアドレス空間からデータＤを読み出す。このときにはメモリアクセス制御装置３００によるＩＯＩＤのチェックにより、該当するＤＭＡリクエスタによる読み出しのみが許可される。
【００８２】
ＤＭＡリクエスタは、受け取ったデータＤに基づいて所定の処理を実行し、アクセス要求コマンドによって処理結果を示すデータＲをメインメモリ１４０のＤＭＡアドレス空間に書き込む。ＤＭＡリクエスタによる書き込み動作はＩＯＩＤによってチェックされる。ＳＰＵ１１６のＤＭＡＣは、メインメモリ１４０のＤＭＡアドレス空間からローカルメモリ１４４にデータＲをＤＭＡ転送させる。こうして、ユーザプロセスはデータＲを取得する。
【００８３】
図１３は、ユーザプロセスの論理アドレス空間とＤＭＡアドレス空間のマッピングを示す模式図である。
ＤＭＡリクエスタ空間３２５は、あるＤＭＡリクエスタａのＤＭＡ転送用領域のアドレス（原アドレス）により形成されるアドレス空間を示す。物理アドレス３２０は、管理空間の物理アドレスを示す。管理空間は、各種レジスタやローカルメモリ１４４、メインメモリ１４０の集合として形成される物理アドレス空間であり、その一部はＤＭＡアドレス空間を形成する。論理アドレス３２２、３２４は、それぞれ、ユーザプロセスＡの論理アドレス、ユーザプロセスＢの論理アドレスを示す。
【００８４】
ＣＰＵ・ＭＭＵ設定レジスタ３２６として示される物理アドレス範囲は、論理アドレス３２２と物理アドレス３２０のマッピングや、論理アドレス３２４と物理アドレス３２０のマッピングを設定するためのレジスタに対応する。ＣＰＵ・ＭＭＵ設定レジスタ３２６は、各ＳＰＵ１１６やＰＵ１１２に内蔵される。図１４に関連して後述する。
【００８５】
ＩＯＩＤ・ＭＭＵ設定レジスタ３２８として示される物理アドレス範囲は、ＤＭＡリクエスタ空間３２５と物理アドレス３２０、いいかえれば、ＤＭＡリクエスタ空間３２５とＤＭＡアドレス空間の対応を設定するためのレジスタに対応する。具体的には、図６のＵＣ＿ＡＤＤＲ＿ＴＲＡＮＳ＿ＵＡＲレジスタ２５０やＵＣ＿ＡＤＤＲ＿ＴＲＡＮＳ＿ＴＡＢＬＥレジスタ２５６が該当する。ＩＯＩＤ・ＭＭＵ設定レジスタ３２８は、メモリアクセス制御装置３００にも内蔵される。
これらのレジスタの値は、ＯＳ、より詳しくはハイパーバイザーにより設定される。また、ＣＰＵ・ＭＭＵ設定レジスタ３２６やＩＯＩＤ・ＭＭＵ設定レジスタ３２８にアクセスできるのはＯＳなどの特権レベルソフトウェアのみである。
【００８６】
ＤＭＡリクエスタ設定レジスタ３３０は、ユーザプロセスがＤＭＡリクエスタを制御するためのパラメータを書き込むためのレジスタである。デバイスドライバは、ＤＭＡリクエスタ設定レジスタ３３０のパラメータにしたがって、各ＤＭＡリクエスタを制御する。
【００８７】
データ領域３３２は、ＤＭＡリクエスタとやりとりするためのデータを記憶するための領域である。ＤＭＡリクエスタ設定レジスタ３３０とデータ領域３３２によりＤＭＡアドレス空間が形成される。
【００８８】
同図において、データ領域３３２はｍ０〜ｍ３の４つの領域を含む。これらの領域は、ＩＯＩＤ・ＭＭＵ設定レジスタ３２８により、ＤＭＡリクエスタアドレス３２６におけるｄ０〜ｄ３の４つの領域と対応づけられる。ＤＭＡリクエスタは、原アドレスによりｄ０〜ｄ３のいずれかをアクセス先として設定したアクセス要求コマンドを発行する。このとき、ＤＭＡリクエスタは、ＤＭＡＲＩＤと原アドレスをコマンド送信補助装置２００に送る。コマンド送信補助装置２００は、ＩＯＩＤ変換テーブル２６０により、ＤＭＡＲＩＤをＩＯＩＤに変換する。また、ＩＯＩＤ・ＭＭＵ設定レジスタ３２８の設定にしたがって、原アドレスを中間アドレスに変換する。中間アドレスは、メモリアクセス制御装置３００において、アクセス先となるＤＭＡアドレス空間のアドレス、すなわち、メインメモリ１４０における物理アドレスに変換される。ｄ０〜ｄ３のアドレスをｍ０〜ｍ４のいずれかのアドレスに変換することにより、管理空間における物理アドレスが特定される。メモリアクセス制御装置３００は、ＩＯＩＤをチェックすることにより、該当するｍ０〜ｍ３へのアクセス可否を判定する。ｍ０〜ｍ３以外の領域へのアクセスは許可されない。
【００８９】
一方、ＣＰＵ・ＭＭＵ設定レジスタ３２６により、ユーザプロセスＡの論理アドレス空間における領域ｕ１０とｕ１１は、それぞれ、物理アドレス３２０におけるｍ２とｍ１にマッピングされている。同様に、ユーザプロセスＢの論理アドレス空間における領域ｕ２０とｕ２１は、それぞれ、物理アドレス３２０におけるｍ０とｍ３にマッピングされている。
【００９０】
なお、ユーザプロセスＡやユーザプロセスＢによりアクセス対象となるＤＭＡアドレス空間とＯＳによりアクセス対象となるＤＭＡアドレス空間は別領域となっている。いいかえれば、物理アドレス３２０においてユーザプロセスからのアクセス対象となり得る領域と、ＯＳからのアクセス対象となり得る領域（以下、「ＯＳ領域」とよぶ）は分離されている。このため、ユーザプロセスのＤＭＡリクエスタに対する不正動作が発生しても、ＯＳは独自にＤＭＡリクエスタを制御できる。また、ＤＭＡリクエスタは、ＯＳ領域の全部または一部へのアクセスが禁止されている。これは、たとえば、先述したＩＯＩＤの仕組みにより実現される。このような設計によれば、ＤＭＡリクエスタの不正動作により、ＯＳ領域のデータが破壊され、ＯＳの挙動がＤＭＡリクエスタにより不安定化するのを防ぐことができる。
【００９１】
本実施例における処理内容をより具体的にまとめると、以下の通りである。すなわち、特権レベルのソフトウェア、たとえば、ＯＳがＤＭＡリクエスタ設定レジスタ３３０を論理アドレス３２２、３２４等にマッピングする。これにより、ユーザプロセスは、ＭＭＵの仕組みを介して、ＤＭＡリクエスタ設定レジスタ３３０にアクセス可能となる。そして、特権レベルのソフトウェアであるＯＳは、データ領域３３２に対してＤＭＡリクエスタ空間３２５をマッピングし、更に、同データ領域３３２に対して論理アドレス３２２、３２４等をマッピングする。こうして、データ領域３３２は、ユーザプロセスの論理アドレスとＤＭＡリクエスタのＤＭＡリクエスタ空間３２５の双方からマッピングされることになる。ユーザプロセスは、ＤＭＡリクエスタ設定レジスタ３３０を操作し、ＤＭＡ転送を実行する。結果データはデータ領域３３２に置かれる。このように、いったんマッピングが完了すれば、ユーザプロセスはデバイスドライバの仲介を要することなく、ＤＭＡ転送を自ら実行できる。
【００９２】
仮に、ユーザプロセスがＤＭＡリクエスタに誤った指示を出しても、ＤＭＡリクエスタのメモリアクセスはＩＯＩＤにより厳密に管理されるため、ユーザプロセス主体のＤＭＡ転送であってもシステム全体としての堅牢性を担保できる。また、デバイスドライバを介さないＤＭＡ転送であるため、図１１に関連して説明した一般的な方法に比べてオーバーヘッドを低減できる。さまざまなサードパーティが高効率なユーザプロセスを作成しやすくなり、かつ、システム全体としての安定性を確保しやすい構成となる。
【００９３】
図１４は、情報処理装置１００におけるＤＭＡ転送を説明するための模式図である。
ＰＵ１１２やＳＰＵ１１６、そして、これらにおいて実行されるＯＳやデバイスドライバ、ユーザプロセスが、「プロセス制御装置」として機能する。また、このプロセス制御装置と、メモリアクセス制御装置３００により、「メモリアクセス制御システム」が形成されている。
【００９４】
ＤＭＡ転送は、（１）ＤＭＡリクエスタ３３６とＤＭＡアドレス空間の間でのＤＭＡ転送と、（２）ユーザプロセスとＤＭＡアドレス空間の間でのＤＭＡ転送の２種類の分けることができる。
（１）ＤＭＡリクエスタ３３６とＤＭＡアドレス空間の間でのＤＭＡ転送
【００９５】
たとえば、ＤＭＡリクエスタ３３６ａは、ＤＭＡＲＩＤと原アドレスをコマンド送信補助装置２００に送る。コマンド送信補助装置２００は、ＩＯＩＤ変換テーブル２６０により、ＤＭＡＲＩＤをＩＯＩＤに変換する。また、ＩＯＩＤ・ＭＭＵ設定レジスタ３２８の設定にしたがって、原アドレスを中間アドレスに変換する。中間アドレスは、メモリアクセス制御装置３００において、アクセス先となるＤＭＡアドレス空間のアドレス、すなわち、メインメモリ１４０における物理アドレスに変換される。ＤＭＡリクエスタ３３６ａは、グラフィックスメモリ１２８等に保持されているデータを、メインメモリ１４０の該当物理アドレスに宛ててＤＭＡ転送する。こうして、ＤＭＡリクエスタ３３６ａは、データをメインメモリ１４０のデータ領域３３２に送る。
（２）ユーザプロセスとＤＭＡアドレス空間の間でのＤＭＡ転送
【００９６】
ＳＰＵ１１６で実行されるユーザプロセスは、ＤＭＡ転送の宛先を示す論理アドレスをＳＰＵ１１６に内蔵されるＭＭＵ３３４に通知する。ＭＭＵ３３４は、ＣＰＵ・ＭＭＵ設定レジスタ３２６を内蔵する。ＣＰＵ・ＭＭＵ設定レジスタ３２６は、論理アドレスとＤＭＡアドレス空間の物理アドレスの対応関係を定めるマッピングテーブルが登録されている。ＭＭＵ３３４は、「プロセス制御装置」の「アドレス変換部」として機能する。また、このマッピングテーブルを登録するＯＳは、「プロセス制御装置」の「マッピング部」として機能する。
【００９７】
論理アドレスを通知されると、ＭＭＵ３３４は、ＯＳにより設定されたマッピングテーブルを参照し、論理アドレスをＤＭＡアドレス空間の物理アドレスに変換する。そして、ＳＰＵ１１６の図示しないＤＭＡＣは、該当物理アドレスに宛ててＤＭＡ転送を実行する。こうして、ユーザプロセスは、デバイスドライバを介さずに、メインメモリ１４０上に形成されるＤＭＡアドレス空間にＤＭＡ転送する。
【００９８】
たとえば、図１３に示したユーザプロセスＡが、領域ｕ１０の論理アドレスをＭＭＵ３３４に通知し、転送したいデータＤを送出すると、ＭＭＵ３３４のアドレス変換機能により、このデータＤは、ＤＭＡアドレス空間のｍ２に転送される。ｍ２はメインメモリ１４０上の領域である。領域ｍ２は、ＤＭＡリクエスタａのｄ３に対応づけられているため、ＤＭＡリクエスタａはｄ３を対象とするデータＤの書き込みを検出すると、アドレスｄ３を指定して、データＤを読み出すためのアクセス要求コマンドを発行する。こうして、ＤＭＡリクエスタａはデータＤを取得する。
【００９９】
また、ＤＭＡリクエスタａが処理結果を示すデータＲの送信先をｄ２に設定し、書き込み指定のアクセス要求コマンドを発行すると、コマンド送信補助装置２００は、ＩＯＩＤをチェックした上で、データＲをＤＭＡアドレス空間のｍ１に転送する。領域ｍ１は、ユーザプロセスＡの論理アドレス空間において領域ｕ１１に対応づけられているため、ＳＰＵ１１６等に内蔵されるＤＭＡＣが領域ｍ１への書き込みを検出すると、該当するユーザプロセスＡにイベント通知する。ユーザプロセスＡは、ｍ２からデータＲを取得する。
【０１００】
図１５は、マルチＯＳ環境におけるユーザプロセスとＤＭＡリクエスタ、デバイスドライバの一般的な関係を示す模式図である。
同図においては、ハイパーバイザ上において、ＯＳＡとＯＳＢという２つのＯＳが実行されている。ハイパーバイザは特権ソフトウェアであり、ＰＵ１１２にて実行される。ハイパーバイザは、時分割方式にて、ＯＳＡとＯＳＢを定期的にコンテキストスイッチさせる。ＯＳＡの実行時にはデバイスドライバＡやユーザプロセスＡが実行され、ＯＳＢの実行時にはデバイスドライバＢやユーザプロセスＢが実行される。したがって、ユーザプロセスがデバイスドライバを介してしかＤＭＡ転送をできない一般的な設計の場合、ＯＳＡからＯＳＢへのコンテキストスイッチが発生すると、ユーザプロセスＡはデバイスドライバＡを使えなくなってしまうため、ＤＭＡ転送を実行できなくなる。
【０１０１】
ユーザプロセスＡがデバイスドライバＡを使ってＤＭＡ転送を実行している最中に、ＯＳＡからＯＳＢへのコンテキストスイッチさせる場合には、ハイパーバイザはＤＭＡ転送が完了するのを待たなければならない。
【０１０２】
ＤＭＡ転送に際し、ユーザプロセスはまず、自らが依拠するＯＳ上で動作しているデバイスドライバに処理を依頼する。ユーザプロセスＡであれば、まず、デバイスドライバＡに処理を依頼する。ここで、ハイパーバイザには、「仮想デバイスドライバ」が実装されている。この仮想デバイスドライバは、一のＤＭＡリクエスタに対する複数のアクセス要求を調停する。たとえば、ＯＳＡ上のユーザプロセスＡとＯＳＢ上のユーザプロセスＢが同時にＤＭＡリクエスタａを使用しようとする状況において、各ユーザプロセスからアクセス要求をシリアライズすることにより、複数のユーザプロセスが同時に一つのＤＭＡリクエスタにアクセスするのを防ぐ。
【０１０３】
このように、マルチＯＳ環境下においてユーザプロセスがデバイスドライバを介してＤＭＡリクエスタにアクセスするための一般的なモデルにおいては、仮想デバイスドライバの構築が必要となる。ＯＳＡ上のユーザプロセスＡとＯＳＢ上のユーザプロセスＢが、別々のＤＭＡリクエスタを同時に使用したいという状況であっても、必ず仮想デバイスドライバがユーザプロセスＡやＢのアクセス要求をいったん受け取るため、仮想デバイスドライバの存在がボトルネック、ひいては、オーバーヘッドの源となる。また、ＯＳをスイッチするときにも、仮想デバイスドライバのコンテキストスイッチによるオーバーヘッドが発生する。
【０１０４】
図１６は、マルチＯＳ環境におけるユーザプロセスとＤＭＡリクエスタ、デバイスドライバの本実施例における関係を示す模式図である。
同図においても、ハイパーバイザ上において、ＯＳＡとＯＳＢという２つのＯＳが実行されている。ただし、図１２と同様、ユーザプロセスはデバイスドライバを介さずにＤＭＡアドレス空間にアクセスできる。ＯＳＡの実行時にはデバイスドライバＡやユーザプロセスＡが実行され、ＯＳＢの実行時にはデバイスドライバＢやユーザプロセスＢが実行される。ユーザプロセスＡは、デバイスドライバＡを介さずにＤＭＡ転送を実行できるため、ＯＳＡからＯＳＢへのコンテキストスイッチが発生すると、ユーザプロセスＡはデバイスドライバＡを使えなくなってしまうが、ＤＭＡ転送を継続できる。
【０１０５】
ユーザプロセスＡがデバイスドライバＡを使わずにＤＭＡ転送を実行している最中に、ＯＳＡからＯＳＢへのコンテキストスイッチさせる場合には、ハイパーバイザはＤＭＡ転送が完了するのを待たなくてもよい。このため、ＳＰＵ１１６ａ上のユーザプロセスＡによるＤＭＡリクエスタａに対してのＤＭＡ転送とＳＰＵ１１６ｂ上のユーザプロセスＢによるＤＭＡリクエスタｎに対してのＤＭＡ転送を同時並行的に実行することも可能である。
【０１０６】
より具体的には、ハイパーバイザはＩＯＩＤを管理する機能（以下、「ＩＯＩＤ管理ドライバ」とよぶ）を備える。このＩＯＩＤ管理ドライバは、先述した通りの方法にて、各ＯＳのデバイスドライバにＩＯＩＤを割り当てておく。ＤＭＡ転送に際し、ユーザプロセスはまず、自らが依拠するＯＳ上で動作しているデバイスドライバに処理を依頼する。各ＯＳのデバイスドライバは、別ＯＳの動作に関わらず、ＩＯＩＤで許可された範囲でＤＭＡリクエスタを操作できる。ハイパーバイザは、たとえばシステム起動時に、あるＤＭＡリクエスタｄ１とあるユーザプロセスｕ１を同じデータ領域３３２にマッピングしておく。この初期設定をしておけば、以後、このユーザプロセスｕ１とＤＭＡリクエスタｄ１はデバイスドライバやＯＳを介さずにＤＭＡ転送を直接実行できる。また、別のユーザプロセスｕ２がこのＤＭＡリクエスタｄ１の使用を要求したときには、ハイパーバイザはＤＭＡリクエスタｄ１がマッピングされているデータ領域３３２に対して、ユーザプロセスｕ２をマッピングすればよい。
【０１０７】
このようなモデルによれば、ＯＳＡのユーザプロセスＡとＯＳＢのユーザプロセスＢが同一のＤＭＡリクエスタを使用する場合であっても、ＩＯＩＤの仕組みにより互いの操作権限を明確に管理できるため、仮想デバイスドライバが不要となる。したがって、仮想デバイスドライバを原因とするオーバーヘッドを排除できる。また、ＯＳＡ上のユーザプロセスＡとＯＳＢ上のユーザプロセスＢが、別々のＤＭＡリクエスタを同時に使用したいという状況において、ユーザプロセスＡやＢのアクセス要求を同時並行実行できる。このため、マルチコアシステムにおいてその並列性をいっそう高めることができる。更に、ＯＳのスイッチに際してもＩＯＩＤ・ＭＭＵ設定レジスタ３２８やＩＯＩＤ変換テーブル２６０等の書き換えは不要である。
【０１０８】
以上、本実施例に示す方法によれば、Ｉ／Ｏアクセス制御装置３００にてＤＭＡリクエスタをＩＯＩＤによって一元的に管理できる。そのため、Ｉ／Ｏアクセス制御装置３００は、外部のＤＭＡリクエスタからの不正なアクセスを未然に防止することができる。情報処理装置１００に導入されているＤＭＡリクエスタが、どのような製品で、どのようなポリシにてＤＭＡＲＩＤを設定されていても、コマンド送信補助装置２００は、管理下のＤＭＡリクエスタに対して一意なＩＯＩＤを付加できる。図６に関連して説明したように特権ソフトウェアを介して、ＩＯＩＤやＳＥＧ＿ＡＤＤＲ、ＭＡ＿ＭＡＳＫを任意に設定可能である。そのため、Ｉ／Ｏアクセス制御装置３００は、外部にどのようなＤＭＡリクエスタが存在しても、アクセス要求コマンド１６２のＩＯＩＤを参照することにより、各ＤＭＡリクエスタを統合管理できる。
【０１０９】
このような処理方法によれば、特権ソフトウェアがＤＭＡリクエスタを制御するデバイスドライバをコントロール下におくことができる。従来の、カーネル層とユーザ層という２階層ＯＳモデルの場合、デバイスドライバはユーザ層よりも下位層に位置するため、物理アドレスを直接指定して記憶領域にアクセスしていた。これに対して、本実施例のような３階層モデルであれば、論理アドレスにより管理空間にアクセスすることになる。デバイスドライバが直接記憶領域にアクセスするのではなく、特権ソフトウェアとは異なるソフトウェア階層で動作するためである。特権ソフトウェアは、カーネル層で動作するＯＳの種類に応じて、アドレス領域１７０の論理アドレスを設定する。たとえば、カーネル層の上で、ＯＳ−ＡとＯＳ−Ｂが動作するとする。ＯＳ−Ａ動作時においては、特権ソフトウェアはＯＳ−Ａに対応してアドレス情報保持部３１４の第１変換テーブル１８０や第２変換テーブル１８２変換部２５４の各テーブルを設定し、ＯＳ−Ｂ動作時においては、ＯＳ−Ｂに対応して設定してもよい。このようなマルチＯＳ環境において、ＤＭＡリクエスタが指定する論理アドレスをＯＳに応じて異なる物理アドレスに変換することができる。
【０１１０】
デバイスドライバのプログラマにとっても、開発効率が向上するメリットがある。デバイスドライバなどＩ／Ｏデバイス１６０を制御するためのプログラムを作成するときには、論理アドレスを使用し、更に、ＩＯＩＤというスキームにしたがっていれば、他のソフトウェアから独立していて、かつ、抽象化された環境が提供されるため、開発負担が軽減される。
【０１１１】
また、特権ソフトウェアが、第１変換テーブル１８０、第２変換テーブル１８２を設定すると、ページ単位で、ＩＯＩＤによるアクセス可否や、アクセス属性情報によるアクセス条件を管理できるので、Ｉ／Ｏアクセス制御装置３００にてきめ細かく管理空間のアクセス方法を制御できる。
【０１１２】
近年、商業用プログラムは多くのプログラマ、あるいは、多くのサードパーティから提供されるソフトウェアモジュールの集合体となっており、メモリに対するアクセス制御についてはますます精密な設計が必要となってきている。そのため、本実施例にて示した方法は、このような要請を解決する上で有効である。
【０１１３】
また、デバイスドライバが論理アドレスを使用できるため、ユーザ層のソフトウェアが確保した物理アドレス上ではページ単位では不連続だが、論理アドレス上では連続しているデータ転送用の領域に対して、ＤＭＡリクエスタがダイレクトに連続してデータ転送を行うことができる。
【０１１４】
従来の方法においては、ＤＭＡリクエスタは物理アドレスのみを使用できるため、データ転送用の領域がページ単位としては物理アドレス上において不連続であった場合、ＤＭＡのデータ転送をこの不連続領域にあわせて区切る必要があった。あるいは、あらかじめＤＭＡリクエスタが使用するデータ転送用の領域については物理アドレスが連続となるように、ＯＳが領域管理する必要があった。
【０１１５】
さらに、アドレス変換テーブルとして示した第１変換テーブル１８０や第２変換テーブル１８２は、ＩＯＩＤによるアクセス可否判定やアクセス方法を決定づけるアドレス属性情報を含むことにより、アドレス変換や、アクセス可否判定などの各処理を効率的に実行できる。なぜならば、リフィルされた部分変換テーブルにおいてアドレス変換に必要なデータが含まれていれば、その部分変換テーブルによってアクセス可否判定やアクセス条件の特定といった処理が可能だからである。
【０１１６】
また、ユーザプロセスは、デバイスドライバ等の他のソフトウェアを介することなく、直接ＤＭＡ転送を制御できる。このため、ユーザプロセスによるＤＭＡ転送を高速化できる。どのユーザプロセスがＤＭＡアドレス空間のどの領域にアクセスしてよいかは、ＯＳによりＭＭＵ３３４等に設定される。この設定により、ユーザプロセスのＤＭＡアドレス空間へのアクセス範囲を限定し、情報処理装置１００全体としての動作安定性を担保している。まとめると、ＣＰＵの特権レベルで動作するデバイスドライバを使用することなく、ユーザプロセスがＤＭＡ転送を直接制御できながら、システム全体としての堅牢性を維持できる。特に、マルチコアシステムにおいては、ユーザプロセスが独自にＤＭＡ転送を実行することにより、複数のＤＭＡ転送の並行実行が可能となる。また、複数ＯＳの使用時においても、ＩＯＩＤに基づく仕組みにより、仮想デバイスドライバを構築することなく、安全かつ低オーバヘッドにてＤＭＡ転送を実現できる。
【０１１７】
以上、本発明を実施例をもとに説明した。この実施例はあくまで例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
【図面の簡単な説明】
【０１１８】
【図１】情報処理装置の機能ブロック図である。
【図２】アクセス要求コマンドのデータ構造図である。
【図３】アクセス要求コマンドにより示された論理アドレスを物理アドレスに変換する過程を説明するための模式図である。
【図４】管理空間とアクセス可否との関係を説明するための模式図である。
【図５】コマンド送信補助装置の機能ブロック図である。
【図６】ＩＯＩＤ／セグメントアドレス追加部の処理内容を示す模式図である。
【図７】中間アドレス（ＩＮＴ＿ＡＤＤＲ）の生成方法を示す模式図である。
【図８】中間アドレス（ＩＮＴ＿ＡＤＤＲ）のうち、アドレス領域におけるセグメント、ページ、オフセットの関係を示す図である。
【図９】Ｉ／Ｏアクセス制御装置の機能ブロック図である。
【図１０】Ｉ／Ｏアクセス制御装置によるアクセス制御過程を示すフローチャートである。
【図１１】ユーザプロセスとＤＭＡリクエスタ、デバイスドライバの一般的な関係を示す模式図である。
【図１２】ユーザプロセスとＤＭＡリクエスタ、デバイスドライバの本実施例における関係を示す模式図である。
【図１３】ユーザプロセスの論理アドレス空間とＤＭＡアドレス空間のマッピングを示す模式図である。
【図１４】情報処理装置におけるＤＭＡ転送を説明するための模式図である。
【図１５】マルチＯＳ環境におけるユーザプロセスとＤＭＡリクエスタ、デバイスドライバの一般的な関係を示す模式図である。
【図１６】マルチＯＳ環境におけるユーザプロセスとＤＭＡリクエスタ、デバイスドライバの本実施例における関係を示す模式図である。
【符号の説明】
【０１１９】
１００  情報処理装置、  １１０  統括制御部、  １１２  ＰＵ、  １１６  ＳＰＵ、  １１８  バス、  １２０  画像処理部、  １２２  画像処理側ＤＭＡＣ、  １２４  制御ブロック、  １２６  ディスプレイコントローラ、  １２８  グラフィックスメモリ、  １３０  演算ユニット、  １４０  メインメモリ、  １４２  メモリコントローラ、  １４４  ローカルメモリ、  １４８  メインプロセッサ、  １５０  表示装置、  １６０  Ｉ／Ｏデバイス、  １６２  アクセス要求コマンド、  １７０  アドレス領域、  １７２  ＩＯＩＤ領域、  １７４  セグメント領域、  １７６  ページ領域、  １７８  オフセット領域、  １７９  コマンド領域、  １８０  第１変換テーブル、  １８２  第２変換テーブル、  １８４  第１インデックス欄、  １８６  ページベース値欄、  １８８  第２インデックス欄、  １９０  ページ番号欄、  １９２  ＩＯＩＤ欄、  １９４  アクセス条件欄、  １９６  アクセス可能領域、  １９８  アクセス不能領域、  ２００  コマンド送信補助装置、  ２０２  コマンド送信部、  ２０４  ＩＯＩＤ／セグメントアドレス追加部、  ２０６  コマンド取得部、  ２５０  ＵＣ＿ＡＤＤＲ＿ＴＲＡＮＳ＿ＵＡＲレジスタ、  ２５２  マスクコントローラ、  ２５４  変換部、  ２５６  ＵＣ＿ＡＤＤＲ＿ＴＲＡＮＳ＿ＴＡＢＬＥレジスタ、  ２６０  ＩＯＩＤ変換テーブル、  ２６２  セグメント選択テーブル、  ２６４  マスク変換テーブル、  ３００  メモリアクセス制御装置、  ３０２  コマンド受信部、  ３０４  アクセス判定部、  ３０６  アドレス変換部、  ３０８  キャッシュ処理部、  ３１０  部分情報保持部、  ３１２  アクセス処理部、  ３１４  アドレス情報保持部、  ３２０  物理アドレス、  ３２２  論理アドレス、  ３２４  論理アドレス、  ３２５  ＤＭＡリクエスタアドレス、  ３２６  ＣＰＵ・ＭＭＵ設定レジスタ、  ３２８  ＩＯＩＤ・ＭＭＵ設定レジスタ、  ３３０  ＤＭＡリクエスタ設定レジスタ、  ３３２  データ領域、  ３３６  ＤＭＡリクエスタ、  ３３４  ＭＭＵ。  
【図１】
2010152527.tif 000003
【図２】
2010152527.tif 000004
【図３】
2010152527.tif 000005
【図４】
2010152527.tif 000006
【図５】
2010152527.tif 000007
【図６】
2010152527.tif 000008
【図７】
2010152527.tif 000009
【図８】
2010152527.tif 000010
【図９】
2010152527.tif 000011
【図１０】
2010152527.tif 000012
【図１１】
2010152527.tif 000013
【図１２】
2010152527.tif 000014
【図１３】
2010152527.tif 000015
【図１４】
2010152527.tif 000016
【図１５】
2010152527.tif 000017
【図１６】
2010152527.tif 000018