独立論理アドレス空間とそれぞれに対するアクセス管理を提供する方法および装置
【課題】I/Oアクセスを制御するための技術、特に外部装置からのアクセス要求を制御するための方法および装置を提供する。
【解決手段】コマンド受信部は、外部のアクセス要求主体から、アクセス対象となるアドレスとアクセス要求主体を識別するためのIOIDと共に、データにアクセスするためのコマンドを受信する。IOIDにより、アクセス判定部は、アクセス要求主体が目的のアクセス先にアクセスする権限があるかを判定する。アクセス判定部は、プロセッサの空間における論理アドレスの基本管理単位としてのページごとに、アクセス要求主体のアクセス可否を判定する。
【解決手段】コマンド受信部は、外部のアクセス要求主体から、アクセス対象となるアドレスとアクセス要求主体を識別するためのIOIDと共に、データにアクセスするためのコマンドを受信する。IOIDにより、アクセス判定部は、アクセス要求主体が目的のアクセス先にアクセスする権限があるかを判定する。アクセス判定部は、プロセッサの空間における論理アドレスの基本管理単位としてのページごとに、アクセス要求主体のアクセス可否を判定する。
【発明の詳細な説明】
【技術分野】
【0001】
本出願は、米国仮特許出願第60/775,829号(発明の名称:「Memory Access Controlling Apparatus And Command Transmit Supporting Apparatus」2006年2月22日出願)の利益を主張する。この出願は、引用によりその全てを含む。
【0002】
本発明は、I/Oアクセスを制御するための技術、特に、外部装置からのアクセス要求を制御するための技術、に関する。
【背景技術】
【0003】
近年のコンピュータゲームやデジタル放送などの分野に利用されるコンピュータグラフィックス技術や画像処理技術の著しい進歩にともない、コンピュータ、ゲーム機器、テレビなどの情報処理装置はより高精細の画像データをより高速に処理する能力を求められている。そのためには、演算処理自体の高速化が必要であることはもちろんであるが、複数の処理装置間でタスクを好適に分散することも同様に重要である。
【発明の概要】
【発明が解決しようとする課題】
【0004】
各処理装置は、タスクの実行に際して適宜メモリにアクセスする。このとき、処理装置Aの処理のために確保されたメモリの領域に対して、処理装置Bのアクセスを許してしまうと、情報処理装置全体としての動作安定性が損なわれる。特に、周辺機器を制御するためのI/Oデバイスの場合、DMAリクエスタが直接物理アドレスを指定してメモリを制御することが多かった。このようなI/Oデバイスやそれを制御するデバイスドライバの誤動作は、情報処理装置の動作安定性に対して深刻な影響を及ぼす可能性がある。
【課題を解決するための手段】
【0005】
本発明のある態様は、I/Oアクセス制御装置である。
この装置は、外部のアクセス要求主体から、プロセッサのメモリ空間におけるデータを制御するためのコマンドを、アクセス対象となるアドレスを指定するアドレス情報およびアクセス要求主体を識別するためのID情報と共に受信するコマンド受信部と、メモリ空間におけるアドレスと、そのアドレスにて指定される領域についてアクセスを許可されるべきアクセス要求主体のID情報とを対応づけたアクセス可否判定テーブルを参照して、アドレス情報にて指定されたアドレスへのアクセス要求主体によるアクセスの可否を判定するアクセス判定部と、アクセス判定部に許可されたことを条件として、アクセス要求主体のメモリ空間に対するアクセスを実行するアクセス処理部と、を備える。この装置は、プロセッサに内蔵される装置として形成されてもよく、アクセス要求主体はプロセッサ外部の装置であってもよい。
【0006】
このような態様によれば、ID情報に基づいて、アクセス要求されているアドレス領域について、正当なアクセス要求主体からのアクセスであるかを判定できる。「ID情報」は、たとえば、所定のフォーマットにて規定されるビット列として専用に生成されてもよく、アクセス要求主体を一意に特定できる情報であればよい。
【0007】
アドレス情報はメモリのアドレスを所定のフォーマットにて変換した仮想的なアドレスである論理アドレスを示す情報であってもよい。
この場合、この装置は、論理アドレスを物理アドレスに変換するためのアドレス変換テーブルを保持するアドレス変換テーブル保持部と、アドレス変換テーブルを参照し、アドレス情報において指定された論理アドレスを物理アドレスに変換するアドレス変換部と、を更に備えてもよい。
【0008】
この態様においては、ID情報に基づいて個々のアクセス要求主体に異なる論理アドレス空間を独立に割り当てることができる。アクセス要求主体から直接に物理アドレスを指定させないので、よりメモリ空間を外部アクセスから保護しやすくなる。また、論理アドレスを用いることで、外部のアクセス要求主体とプロセッサの間のデータ転送をシステムに依存しない、抽象化されたアドレスに基づいて実行できる。
【0009】
この装置は、アドレス変換テーブル保持部からアドレス変換テーブルのうち、所定の物理アドレス範囲に対応する部分である部分変換テーブルをアドレス変換が実行される前に予めキャッシュメモリにロードしてもよい。
ロードされた部分変換テーブルにアドレス情報にて指定された論理アドレスを物理アドレスに変換するために必要なデータが含まれているときには、部分変換テーブルを参照してアドレス変換し、含まれていないときには、アドレス変換テーブル保持部からキャッシュメモリに新たな部分変換テーブルをロードしてもよい。
【0010】
また、アドレス変換が実行される前に予めロードされた部分変換テーブルに必要なデータが含まれていないときには、その部分変換テーブルをキャシュメモリに保持した状態で、新たな部分変換テーブルをキャッシュメモリにロードしてもよい。
【0011】
この装置は、メモリ空間におけるアドレスと、そのアドレスが指定する領域に対するアクセス条件を規定するアクセス属性情報とを対応づけたアクセス属性テーブルを保持するアクセス属性テーブル保持部を更に備え、アクセス処理部は、アクセス要求主体についてアクセス判定部によりアクセス許可されることを条件として、アクセス属性テーブルにて指定されたアクセス条件にしたがって受信されたコマンドにより指定されたアクセスを実行するとしてもよい。
【0012】
本発明の別の態様は、コマンド送信補助装置である。
この装置は、所定のアクセス要求主体から、プロセッサのメモリ空間におけるアクセス対象領域のアドレスを指定するアドレス情報と共に送信されるメモリ空間のデータを制御するためのコマンドに対して、アクセス要求主体を識別するためのID情報を付与するID追加部と、メモリ空間におけるアドレスとそのアドレスが指定する領域に対してアクセスを許可されるべきアクセス要求主体のID情報とを対応づけたアクセス可否判定テーブルを参照して、アクセス要求主体によるアドレス情報にて指定されたアドレスへのアクセス可否を判定する外部の装置に対し、ID情報が付与されたコマンドを送信するコマンド送信部と、を備える。
【0013】
ID情報は、アクセス要求主体と外部の装置を統括的に制御するソフトウェアによって、アクセス要求主体ごとに割り振られてもよい。このようなソフトウェアはOSであってもよいし、OSに基づいて動作するアプリケーションソフトウェアであってもよい。
【0014】
なお、本発明を方法、システム、記録媒体、コンピュータプログラムにより表現したものもまた、本発明の態様として有効である。
【図面の簡単な説明】
【0015】
例示であって制約的な意味を持たない添付図面を参照しつつ以下に述べる実施例も、単なる例示にすぎず、各図面に現れる要素の数についても同様である。
【図1】情報処理装置の機能ブロック図である。
【図2】アクセス要求コマンドのデータ構造図である。
【図3】アクセス要求コマンドにより示された論理アドレスを物理アドレスに変換する過程を説明するための模式図である。
【図4】管理空間とアクセス可否との関係を説明するための模式図である。
【図5】コマンド送信補助装置の機能ブロック図である。
【図6】IOID/セグメントアドレス追加部の処理内容を示す模式図である。
【図7】中間アドレス(INT_ADDR)の生成方法を示す模式図である。
【図8】中間アドレス(INT_ADDR)のうち、アドレス領域におけるセグメント、ページ、オフセットの関係を示す図である。
【図9】I/Oアクセス制御装置の機能ブロック図である。
【図10】I/Oアクセス制御装置によるI/Oアクセス制御の過程を示すフローチャートである。
【図11】図10のS12におけるアドレス変換処理を詳細に示すフローチャートである。
【発明を実施するための形態】
【0016】
好適な実施例を参照することにより、本発明を以下に説明する。この実施例は、本発明の範囲を制限することを意図したものではなく、本発明を具体的に説明することを意図したものである。
【0017】
図1は、情報処理装置100の機能ブロック図である。
情報処理装置100は、統括制御部110、画像処理部120、メインメモリ140およびI/Oデバイス160を含む。また、情報処理装置100は表示装置150と接続されている。表示装置150は、統括制御部110および画像処理部120の処理の結果得られた画像、映像を出力する。I/Oデバイス160は、サウスブリッジのように他のデータ処理装置とのI/Oインタフェースとなる装置である。I/Oデバイス160では、USB(Universal Serial Bus)コントローラ、HDD(Hard Disk Drive)コントローラ、イーサネットコントローラ等(イーサネットは登録商標)が、後述するコマンド送信補助装置200に接続される。情報処理装置100と接続されるI/Oデバイス160は、複数個、また、複数種類であってよい。統括制御部110や画像処理部120はそれぞれワンチップの電子デバイスとして形成されており、お互いは物理的に分離されている。統括制御部110と画像処理部120があわせて、ワンチップの電子デバイスとして形成されてもよい。
【0018】
図1などにおいて、さまざまな処理を行う機能ブロックとして記載される各要素は、ハードウェア的には、CPU(Central Processing Unit)、メモリ、その他のLSI(Large Scale Integration)で構成することができ、ソフトウェア的には、メモリにロードされた予約管理機能のあるプログラムなどによって実現される。したがって、これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、またはそれらの組合せによっていろいろな形で実現できることは当業者には理解されるところであり、いずれかに限定されるものではない。
【0019】
また、この情報処理装置100では、情報処理装置100を効率よく使用するための機能、環境を提供し、装置全体を統括的に制御するオペレーティングシステム(以下、単に「OS(Operating System)」とよぶ)が実行される。OS上で複数のアプリケーションソフトウェアが実行される。本実施例における情報処理装置100のOS階層は、上位から、ユーザ層、カーネル層、ハイパーバイザ(Hypervisor)層の3階層となっている。以下、ハイパーバイザ層を管理するソフトウェアのことを「特権ソフトウェア」とよぶことにする。ユーザ層、カーネル層とハイパーバイザ層のソフトウェアが一体となって、情報処理装置100の「OS」として機能している。
【0020】
統括制御部110は、1つのPU(Processing Unit)112と複数のSPU(Synergistic-Processing Unit)116、メモリコントローラ142およびI/Oアクセス制御装置300を含む。PU112およびSPU116、メモリコントローラ142、I/Oアクセス制御装置300はバス118により相互通信可能である。メモリコントローラ142には、メインメモリ140が接続される。また、情報処理装置100はバス118を介して別の情報処理装置100とも接続可能である。
【0021】
PU112は、各アプリケーションにおける基本処理単位としてのタスクを各SPU116に割り当てる。あるいは、PU112自身がタスクを実行してもよい。PU112は、演算実行主体としてメインプロセッサ148を含む。各SPU116が割り当てられたタスクを実行することにより、複数のタスクが並列処理される。SPU116は、演算実行主体としてのサブプロセッサ146とローカルな記憶領域としてローカルメモリ144を含む。OSはPU112により実行される。
【0022】
したがって、統括制御部110の中でPU112の管理下にあるメモリ空間はメインメモリ140と複数のローカルメモリ144により形成されることになる。以下、このような「PU112の管理下にあるメモリ空間」のことを単に「管理空間」とよぶことにする。詳しくは後述するが、USBコントローラや画像処理用DMAC(Direct Memory Access Controller)122、ディスプレイコントローラ126のように、統括制御部110の外部に存在し、DMA転送を要求する装置としてのDMAリクエスタは、I/Oアクセス制御装置300を介して管理空間にアクセスできる。すなわち、USBコントローラや画像処理用DMAC122は、コマンド送信補助装置200とI/Oアクセス制御装置300を介して管理空間へのデータのREAD/WRITEを実行する。以下、情報処理装置100の外部から管理空間にアクセスする装置のことをまとめて「アクセス要求主体」とよぶことにする。
【0023】
PU112により実行される処理のことを「メインプロセス」、SPU116により実行される処理のことを「サブプロセス」とよぶ。PU112は、ユーザインタフェースに関する処理のように比較的優先度が高い情報処理装置100全体を統括する処理を実行する。これに対して、SPU116は、比較的優先度が低いバックグラウンドで実行される計算のようにメインプロセスの下請け的な処理を実行する。
【0024】
SPU116に含まれる図示しないDMACは、画像処理部120に内蔵されるグラフィックスメモリ128やメモリコントローラ142を介して接続されるメインメモリ140との間のデータ転送、データ退避などをPU112またはSPU116からの命令によって制御する。
【0025】
I/Oアクセス制御装置300は、アクセス要求主体からのアクセス要求コマンドを統括的に制御する。ここでいうアクセス要求コマンドとは、先述したようにPU112の管理空間に対するデータの書き込みや管理空間のデータの読み出しを要求するコマンドである。アクセス要求コマンドについては、次の図2に関連して詳述する。PU112の管理空間は、メモリコントローラ142に接続されるメインメモリ140と各SPU116のローカルメモリ144にマッピングされる。この管理空間には、他の記憶領域、たとえば、別の情報処理装置100の記憶領域がマッピングされてもよい。アクセス要求主体がPU112の管理空間にアクセスするときには、I/Oアクセス制御装置300に対してアクセス要求コマンドを送信する。I/Oアクセス制御装置300は、アクセス要求コマンドを受け取り、管理空間に対するREAD/WRITEを制御する。
【0026】
メインメモリ140は、管理空間の一部にマッピングされる記憶領域である。メインメモリ140には、タスクの実行状態に関連するデータが格納される。たとえば、統括制御部110によりコンピュータグラフィックスに関する座標計算が実行されて得られた座標データなどが一時的に格納される。また、このメインメモリ140には、画像処理部120により生成されたデータが退避される場合もある。ローカルメモリ144も、管理空間の一部にマッピングされる記憶領域であり、主としてサブプロセス実行のための作業用データを格納する。
【0027】
画像処理部120は、画像処理を専用に実行するユニットであり、たとえば、レンダリング処理を実行する。画像処理部120は、統括制御部110からの指示により画像処理を実行する。画像処理部120は、統括制御部110により処理されるそれぞれのタスクに関連する画像処理を行い、生成した画像、映像を表示装置150に出力する。画像処理部120は、複数の画像処理を時分割して並列的に実行してもよい。
【0028】
画像処理部120は、メモリコントローラ138、グラフィックスメモリ128、画像処理用DMAC122、演算ユニット130、ディスプレイコントローラ126、制御ブロック124およびコマンド送信補助装置200を含む。これらのユニット同士も、バス118で接続されており、各ユニット間で相互通信可能である。グラフィックスメモリ128はメモリコントローラ138を介してバス118に接続される。演算ユニット130は、画像処理用DMAC122を介してバス118に接続される。
【0029】
グラフィックスメモリ128は、画像処理部120により使用、管理されるグラフィックスデータを記憶するためのメモリ領域である。グラフィックスメモリ128には、画像フレームデータが格納されるフレームバッファやZバッファに加えて、画像フレームデータを描画する際に参照される基本データである頂点データ、テクスチャデータ、カラールックアップテーブルなどのデータに対応する領域が用意されている。
【0030】
制御ブロック124は、画像処理部120全体を制御するブロックである。制御ブロック124は、演算ユニット130、グラフィックスメモリ128、ディスプレイコントローラ126を統括的に制御し、各ブロック間のデータ転送の同期管理やタイマー管理等を行う。
【0031】
画像処理用DMAC122は、統括制御部110、メインメモリ140およびグラフィックスメモリ128の間のデータ転送、データ退避などを制御ブロック124からの命令によって制御する。
【0032】
ディスプレイコントローラ126は、水平および垂直同期信号を生成し、表示装置150の表示タイミングにしたがって、グラフィックスメモリ128に格納されるフレームバッファから画像フレームデータのピクセルデータをライン状に順次読み込んでいく。さらにディスプレイコントローラ126は、ライン状に読み込まれたピクセルデータを、RGB(Red-Green-Blue)のカラー値からなるデジタルデータから表示装置150に対応したフォーマットに変換して出力する。
【0033】
演算ユニット130は、制御ブロック124からの命令にしたがって、グラフィックスに関するさまざまな演算処理を行う。その処理の一例としては、3次元モデリングデータをもとに座標変換、陰面消去、シェーディングを行って画像フレームデータを作成し、フレームバッファに書き込む一連のレンダリング処理などが挙げられる。
【0034】
演算ユニット130は、特に3次元グラフィックスに関する処理を高速に行うために、ラスタライザ132、シェーダユニット134、テクスチャユニット136などの機能ブロックを含む。
【0035】
ラスタライザ132は、描画する基本物体(以下、「プリミティブ」とよぶ)の頂点データを統括制御部110から受け取り、3次元空間上のプリミティブを投影変換により描画平面上の図形に変換するビュー変換を行う。さらに、描画平面上の図形を、描画平面の水平方向に沿ってスキャンしながら、一列ごとに量子化されたピクセルに変換するラスタ処理を行う。このラスタライザ132によってプリミティブがピクセル展開されて、各ピクセルごとにピクセル情報を算出する。このピクセル情報には、RGBカラー値、透明度を表すα値、視点からの奥行きを表すZ値が含まれる。
【0036】
ラスタライザ132は、スキャンラインに沿って所定の大きさのピクセル領域を生成し、シェーダユニット134、テクスチャユニット136へと出力する。ラスタライザ132から出力されるピクセル領域は、一度キューにスタックされ、シェーダユニット134はスタックされたピクセル領域を順に処理していく。
【0037】
シェーダユニット134は、ラスタライザ132により算出されたピクセル情報をもとにシェーディング処理を行い、テクスチャユニット136により得られたテクセル情報をもとに、テクスチャマッピング後のピクセル色を決定し、グラフィックスメモリ128内のフレームバッファにシェーディング処理後の画像フレームデータを書き込む。さらにシェーダユニット134はフレームバッファに書き込まれた画像フレームデータに対してフォギング、アルファブレンディング等の処理を行い最終的な描画色を決定してフレームバッファの画像フレームデータを更新する。
【0038】
テクスチャユニット136は、シェーダユニット134からテクスチャデータを指定するパラメータを受け取り、要求されたテクスチャデータをグラフィックスメモリ128内のテクスチャバッファを読み出し、所定の処理を行った後にシェーダユニット134に対して出力する。
【0039】
画像処理部120はプリミティブの頂点データなど画像生成のために必要な基本情報や画像生成の開始指示を統括制御部110から与えられると、統括制御部110とは独立して画像処理を実行する。画像処理用DMAC122は、画像処理部120により生成されたデータをグラフィックスメモリ128や管理空間に転送する。
【0040】
画像処理部120内のアクセス要求主体が管理空間にデータを転送するとき、画像処理部120に含まれるコマンド送信補助装置200は、画像処理部120から統括制御部110のI/Oアクセス制御装置300に対して、アクセス要求コマンドを送信する。コマンド送信補助装置200は、アクセス先となる管理空間の論理アドレス、アクセス要求主体を識別するためのID情報(以下、「IOID(Input/Output device ID)」とよぶ)、コマンド(READ/WRITE)をパケット化したアクセス要求コマンドを送信する。書き込み指示の場合、アクセス要求コマンドにつづいて、書き込み対象のデータも送信される。I/Oアクセス制御装置300は、受信したアクセス要求コマンドにしたがって、アクセス要求主体からの管理空間に対するアクセスを制御する。
【0041】
コマンド送信補助装置200は、画像処理部120のみならず、I/Oデバイス160にも搭載される。I/Oデバイス160に搭載されるコマンド送信補助装置200も、I/Oデバイス160から統括制御部110に対して、アクセス要求コマンドを送信する。画像処理部120においてアクセス要求主体となるのは画像処理用DMAC122やディスプレイコントローラ126である。I/Oデバイス160についてアクセス要求主体となるのは、先述したUSBコントローラや、HDDコントローラ、イーサネットコントローラ等である。コマンド送信補助装置200は、各種アクセス要求主体が管理空間へのアクセスを要求するときに、所定フォーマットのアクセス要求コマンドを生成して、統括制御部110に送信する装置である。I/Oアクセス制御装置300は、さまざまなコマンド送信補助装置200を介してさまざまなアクセス要求主体からのアクセス要求を受け取り、管理空間へのアクセスを制御する装置である。
【0042】
コマンド送信補助装置200の詳細については、図2以降、特に図5に関連して詳述する。
【0043】
図2は、アクセス要求コマンド162のデータ構造図である。
同図に示すアクセス要求コマンド162は、コマンド送信補助装置200からI/Oアクセス制御装置300に対して送出される。IOID領域172は、コマンド送信補助装置200がアクセス要求主体を一意に識別するために付与するIOIDを示す。IOIDは、情報処理装置100において各アクセス要求主体を一意に識別するIDである。コマンド領域179は、READやWRITEなどのコマンド内容を示す。アドレス領域170は、管理空間におけるアクセス先のアドレスを示す。このアドレスは、論理的なアドレスであって物理アドレスを直接的に指定するものではない。論理アドレス空間は、セグメントに分割されており、セグメントはページに分割される。各ページにおける具体的なアドレスはオフセットにより指定される。アドレス領域170は、セグメント領域174、ページ領域176、オフセット領域178を含む。セグメント領域174はセグメントを指定するセグメント値、ページ領域176はページを指定するページ値、オフセット領域178はそのページ内におけるオフセット値を示す。
【0044】
アクセス要求コマンド162のうち、アドレス領域170については図6や図7に関連しても後述する。
【0045】
図3は、アクセス要求コマンドにより示された論理アドレスを物理アドレスに変換する過程を説明するための模式図である。
【0046】
このような変換処理はI/Oアクセス制御装置300において実行される。I/Oアクセス制御装置300は、アクセス要求コマンド162のアドレス領域170を抽出する。まず、セグメント値を抽出する。セグメント値に対して、予め定められたベース値が加算される。ベース値はOSにより割り当てられてもよいし、固定値であってもよい。このセグメント値に対するベース値の加算値が第1インデックス値となる。第1変換テーブル180は、第1インデックス値とページベース値を対応づけたデータテーブルである。第1変換テーブル180によりページベース値が特定される。
【0047】
第1変換テーブル180のうち、第1インデックス欄184は、第1インデックス値を示す。ページサイズ欄185は、ページサイズを示す。ページベース値欄186は、ページベース値を示す。第1変換テーブル180により特定されたページベース値にページ領域176のページ値が加算される。この加算値が第2インデックス値となる。
【0048】
第2変換テーブル182は、第2インデックス値とページ番号等を対応づけたデータテーブルである。第2変換テーブル182のうち、第2インデックス欄188は、第2インデックス値を示す。ページ番号欄190は、ページ番号を示す。IOID欄192は、各ページについてアクセスを許可されるべきアクセス要求主体をIOIDにより示す。また、アクセス条件欄194は、該当ページにおけるアクセス属性情報を示す。アクセス属性情報については、後述する。なお、第1変換テーブル180や第2変換テーブル182は、OSの特権ソフトウェアによって設定される。
【0049】
第2インデックス値により、アクセス先のページ番号が特定される。特定されたページについて、アクセス要求コマンド162から抽出されるIOIDと、IOID欄192のIOID値が一致すれば、当該ページに対するアクセスが許可される。アクセス許可されたとき、特定されたページのアドレスにオフセット値を加算して最終的に、具体的な物理アドレスが特定される。そして、アクセス条件欄194に示されるアクセス属性情報にしたがってアクセスが実行される。
【0050】
アクセス属性情報とは、管理空間に対するアクセス方法を条件付けるための情報であり、具体的には、以下のようなものがある。
1.アクセス順序の強制をするか否か
【0051】
通常、記録媒体に対するアクセスは必ずしもアクセス要求順に実行されるのではなく、メモリコントローラが実行しやすい順序でアクセスが実行される。このような処理方法は、一般にはアウトオブオーダー実行(Out of Order Execution)、あるいは、ウィークリーオーダー実行(Weakly Order Execution)とよばれている。アクセス条件欄194においては、アウトオブオーダー実行ではなく、アクセス要求順にしたがってアクセスすべきか否かを指定するための情報がアクセス属性情報として含まれる。アクセス順序が強制される設定のページの場合、そのページに対するアクセスは、すべてアクセス要求がなされた順に実行されるように処置される。このようにアクセス順序を強制する処理方法は、インオーダー実行(In Order Execution)、あるいは、ストリクトリィオーダー実行(Strictly Order Execution)とよばれる。アクセス順序の制御方法は、IOIDごとに設定可能である。たとえば、IOID=0022のアクセス要求主体が、ページAを介してある物理アドレスにアクセスし、IOID=0023のアクセス要求主体はページAとは異なるページBを介して同じ物理アドレスにアクセスするとする。ここで、第2変換テーブル182において、ページAからのアクセスはストリクトリィオーダー実行、ページBからのアクセスはアウトオブオーダー実行として設定すれば、同一の物理アドレスであっても、アクセス要求主体に応じて異なるアクセス順序制御が可能である。
2.キャッシュコヒーレンシ維持が必要か否か
【0052】
メインメモリ140のようないわゆる主記憶のデータは、キャッシュメモリを介してアクセスされる。キャッシュメモリは、PU112やSPU116に内蔵される。PU112やSPU116はメインメモリ140よりも高速アクセスが可能なキャッシュメモリを利用して処理を実行することもできる。キャッシュメモリに書き込まれたデータは、メインメモリ140に反映される。ただし、その反映のタイミングによっては、キャッシュメモリとメインメモリ140との間でデータが一致しない期間が発生する。
【0053】
外部からのアクセス要求に際し、キャッシュメモリのデータとメインメモリ140やローカルメモリ144のデータとの一貫性、いわゆるキャッシュコヒーレンシ(Cache Coherency)の維持が必要か否かを示す情報がアクセス属性情報として含まれる。
【0054】
キャッシュコヒーレンシ維持設定されたページの場合、たとえば、スヌープ方式(Cache Snooping)により、どのキャッシュメモリに最新のデータが存在するかを検知した上で、各キャッシュメモリが必要なときに最新データを取得できるように自身の状態を変更する。そのほかにも、ディレクトリ方式(Directory-based Protocol)や共有キャッシュ(Shared Cache)のような、既知の方法によりキャッシュコヒーレンシを維持してもよい。
3.ページに対する書込を許可するか否か
【0055】
該当ページに対して、READだけが許可されるか、READ/WRITE共に許可されるかを示す情報がアクセス属性情報として含まれる。
【0056】
図4は、管理空間とアクセス可否との関係を説明するための模式図である。
【0057】
アクセス要求主体のうち、画像処理用DMAC122のIOIDが「0021」、ディスプレイコントローラ126のIOIDが「0022」であるとして説明する。管理空間のうち、アクセス不能領域198とアクセス不能領域199は、画像処理用DMAC122もディスプレイコントローラ126もアクセス不可として設定されている領域である。これらの領域は、ローカルメモリ144にマップされているかもしれないし、メインメモリ140にマップされているかもしれない。IOID「0021」の画像処理用DMAC122は、アクセス可能領域196とアクセス可能領域201にアクセスできる。すなわち、第2変換テーブル182において、アクセス可能領域196とアクセス可能領域201にマッピングされているページについては、IOID欄192においてIOID「0021」が指定されている。
【0058】
第2変換テーブル182により特定されたページについてIOID「0021」が指定されているか否かを参照することにより、画像処理用DMAC122のアクセスが禁じられている領域へのアクセスを防ぐことができる。このように、情報処理装置100において各アクセス要求主体を一意に識別するIOIDをチェックする方法によって、管理空間にマップされているメインメモリ140やローカルメモリ144を不正アクセスから保護している。
【0059】
アクセス可能領域201は、IOID「0021」とIOID「0022」のそれぞれのアクセス要求主体について、別々のページから2重にマッピングされている。一方のページAはIOID「0021」の画像処理側DMAC122からアクセスされ、他方のページBはIOID「0022」のディスプレイコントローラ126からアクセスされる。第2変換テーブル182において、ページAにはIOID「0021」が設定され、ページBにはIOID「0022」が設定されている。したがって、IOID「0021」の画像処理側DMAC122もIOID「0022」のディスプレイコントローラ126も、アクセス可能領域201へのアクセスを許可される。ただし、画像処理側DMAC122がアクセス可能領域201へアクセスするために介するページと、ディスプレイコントローラ126が同じくアクセス可能領域201にアクセスするためのページは別々である。このように、第2変換テーブル182には、管理空間についてページ単位でIOIDごとのアクセス可否が設定される。すなわち、管理空間についてページ単位でアクセス要求主体に応じたアクセス条件を設定できるため、不正アクセスを防止しやすくなっている。
【0060】
仮にIOID「0021」の画像処理側DMAC122について、セグメント値=100、ページ値=10、オフセット値=0であるとする。また、IOID「0022」のディスプレイコントローラ126について、セグメント値=200、ページ値=10、オフセット値=200であるとする。それぞれが指定するページは、共に、ページサイズが4KBで、アクセス可能領域201内の同じ物理アドレス「23450000」を指すとする。IOID「0021」の画像処理側DMAC122は物理アドレス=23450000をアクセス対象とし、IOID「0022」のディスプレイコントローラ126は、物理アドレス=23450200(=23450000+200)をアクセス対象とする。2つの異なるアクセス要求主体は、共に、アクセス可能領域201にアクセスを許可されることになる。
【0061】
変形例として、一つのページに対して、2つ以上のIOIDを設定できてもよい。たとえば、アクセス可能領域201にマッピングされているページAについて、IOID「0021」とIOID「0022」の両方がIOID欄192に設定されているとする。このとき、IOID「0021」の画像処理側DMAC122とIOID「0022」のディスプレイコントローラ126は、共に、ページAを介してアクセス可能領域201にアクセスできる。
【0062】
仮に、アクセス要求コマンド162が指定するアドレスが物理アドレスを直接指定するものであっても、IOIDによるチェックは有効に機能する。本実施例においては、アクセス要求コマンド162が指定するアドレスを物理アドレスを直接指定するものではない論理アドレスとし、独立したアドレス空間を使用できるため、さらに不正アクセスに対する堅牢性が向上する。
【0063】
なお、アクセス可能領域196に含まれるページであっても、アクセス属性情報として書込禁止設定されているアドレス領域に対しては、正当なIOIDをもつアクセス要求主体であっても書込処理は禁止されることはもちろんである。
【0064】
図5は、コマンド送信補助装置200の機能ブロック図である。
コマンド送信補助装置200は、コマンド送信部202、IOID/セグメントアドレス追加部204およびコマンド取得部206を含む。
【0065】
コマンド取得部206は、アクセス要求主体からコマンドを取得する。アクセス要求主体は、管理空間におけるアクセス先を指し示すアドレス(以下、「原アドレス」とよぶ)とREADまたはWRITEを示すコマンド、後述するDMAリクエスタID(以下、「DMARID」とよぶ)をコマンド取得部206に渡す。DMARIDとはDMAリクエスタを識別するためのIDであるが詳しくは後述する。コマンド取得部206は、コマンドと原アドレス、DMARIDを取得する。
【0066】
IOID/セグメントアドレス追加部204は、コマンド取得部206から、コマンド、原アドレス、DMARIDを受け取り、アクセス要求コマンド162を生成する。ここで、IOID/セグメントアドレス追加部204は、アクセス要求主体を特定するためのIOIDをアクセス要求コマンド162に追加する。また、後述するセグメントアドレスをも追加する。コマンド送信部202は、こうして、少なくともIOID、アクセス先の論理アドレス、コマンド、を含むアクセス要求コマンド162をI/Oアクセス制御装置300に対して送信する。コマンド送信部202は、アクセス要求コマンド162をI/Oアクセス制御装置300に送信する。
【0067】
図6は、IOID/セグメントアドレス追加部204の処理内容を示す模式図である。
IOID/セグメントアドレス追加部204は、UC_ADDR_TRANS_UARレジスタ250、マスクコントローラ252、変換部254、US_ADDR_TRANS_TABLEレジスタ256を含む。
【0068】
アクセス要求主体が指定する原アドレスはコマンド取得部206を介してマスクコントローラ252に入力される。各アクセス要求主体にはDMARIDとよばれるIOIDとは異なるIDが付与されている。DMARIDは、コマンド送信補助装置200がアクセス要求主体を一意に識別できるIDであればよい。ただし、各アクセス要求主体のDMARIDは、製品のシステム構成や製造時期によって異なるかもしれない。たとえば、システム構成Aにおけるディスプレイコントローラ126のDMARIDは「10225」、システム構成Bにおけるディスプレイコントローラ126のDMAIDは「00452」かもしれない。また、同じシステム構成Aのディスプレイコントローラ126であっても、製造時期によってDMARIDは異なるかもしれない。これに対して、IOIDはディスプレイコントローラ126の種類や製造時期にかかわらず、ディスプレイコントローラ126を他のアクセス要求主体から識別するためのIDである。DMARIDはIOID変換テーブル260によりIOIDに変換される。システム構成Aのディスプレイコントローラ126もシステム構成Bのディスプレイコントローラ126も、IOID変換テーブル260により共にIOID「0022」に変換されてもよい。すなわち、IOIDは、情報処理装置100において、アクセス要求主体の種類を特定するIDである。IOID「0022」のアクセス要求主体とはディスプレイコントローラ126であるという対応付けは、OSにより設定可能である。
【0069】
統括制御部110のI/Oアクセス制御装置300は、先述したようにIOIDによって管理空間へのアクセス可否を判定する。I/Oアクセス制御装置300は、このIOIDの代わりにDMARIDをベースとしてアクセス可否判定してもよい。しかし、DMARIDをベースとしてアクセス制御するためには、I/Oアクセス制御装置300はアクセス要求主体としてどのようなDMAリクエスタが導入されているか、どのようなDMARIDが登録されているかを知る必要がある。これに対して、本実施例のI/Oアクセス制御装置300は、あらかじめアクセス要求主体の種類に対応づけられたIOIDをベースとして動作するため、そのIOIDによって特定されるアクセス要求主体が具体的にどのような製品であるかについて関知する必要がない。いわば、IOIDは情報処理装置100においてグローバルに特定されるIDである。IOID変換テーブル260は、さまざまなDMARIDをIOIDに変換するためのテーブルである。IOID変換テーブル260により、アクセス要求コマンド162の受信側である統括制御部110からみたシステム構成を抽象化できる。IOID変換テーブル260の変換規則はUC_ADDR_TRANS_TABLEレジスタ256を介してOSの特権ソフトウェアにより設定可能である。したがって、UC_ADDR_TRANS_TABLEレジスタ256によりIOID変換テーブル260を設定変更するだけで、システムの構成変更に対応できる。
【0070】
同様にして、セグメント選択テーブル262ではDMARIDに基づいて8ビットのセグメントアドレス(SEG_ADDR)が選択される。マスク変換テーブル264では、5ビットのDMARIDに基づいて4ビットのマスクビット(MA_MASK)が選択される。特権ソフトウェアはUC_ADDR_TRANS_TABLEレジスタ256を介してセグメント選択テーブル262やマスク変換テーブル264の値を設定できる。IOID変換テーブル260により変換されたIOIDは、先述のようにアクセス要求コマンド162の一部となる。8ビットのSEG_ADDR、4ビットのMA_MASK、アクセス要求主体が元々指定していたアクセス先の32ビットの原アドレス(ADDR)、UC_ADDR_TRANS_UARレジスタ250の28ビットの設定値がマスクコントローラ252に入力される。マスクコントローラ252は、次の図7に示す処理方法により、64ビットの中間アドレス(INT_ADDR)を生成する。IOID/セグメントアドレス追加部204は、このINT_ADDRに11ビットのIOIDとコマンドを追加してアクセス要求コマンド162を生成する。
【0071】
図7は、中間アドレス(INT_ADDR)の生成方法を示す模式図である。
中間アドレス(INT_ADDR)は64ビットであり、第0ビットから第27ビットまでにはUC_ADDR_TRANS_UARレジスタ250から出力された設定値となる。特権ソフトウェアはUC_ADDR_TRANS_UARレジスタ250も設定可能である。第28ビットから第31ビットまでの4ビットは、SEG_ADDRの上位4ビットである。第36ビットから第63ビットまでの28ビットはADDRの下位28ビットである。第32ビットから第35ビットまでは、ADDRの上位4ビットとMA_MASKの論理積である4ビット値にSEG_ADDRの下位4ビットを論理和したものである。こうして、計64ビットの中間アドレスが生成される。本実施例においては、中間アドレス(INT_ADDR)の第0ビットから第27ビットまでは予約領域であり、第28ビットから第63ビットまでがアドレス領域170となる。
【0072】
図8は、中間アドレス(INT_ADDR)のうち、アドレス領域170におけるセグメント、ページ、オフセットの関係を示す図である。
【0073】
ページサイズが4KBのときには、ページアドレス幅は16ビットとなり、ページ数は65536となる。ページサイズが64KBのときには、ページアドレス幅は12ビットとなり、ページ数は4096となる。ページサイズが1MBのときには、ページアドレス幅は8ビットとなり、ページ数は256となる。ページサイズが16MBのときには、ページアドレス幅は4ビットとなり、ページ数は16となる。使用されるページサイズは、第1変換テーブル180のページサイズ欄185によって決まる。このように、アクセス要求コマンド162においては複数のページサイズをサポートできる。
【0074】
図9は、I/Oアクセス制御装置300の機能ブロック図である。
I/Oアクセス制御装置300は、コマンド受信部302、アクセス判定部304、アドレス変換部306、キャッシュ処理部308、部分情報保持部310およびアクセス処理部312を含む。
【0075】
コマンド受信部302は、コマンド送信補助装置200から送信されたアクセス要求コマンド162を受信する。キャッシュ処理部308は、アドレス情報保持部314から図3に示した第1変換テーブル180や第2変換テーブル182の一部のデータを部分情報保持部310にロードする。
【0076】
アドレス情報保持部314は、メインメモリ140の一部として構成されてもよい。また、部分情報保持部310は、アドレス情報保持部314よりも高速にアクセスが可能な内蔵キャッシュメモリとして構成されてもよい。以下、アドレス情報保持部314に保持される第1変換テーブル180や第2変換テーブル182のことを、まとめて「アドレス変換テーブル」とよぶ。また、部分情報保持部310にロードされるアドレス変換テーブルの一部のことをアドレス変換テーブルと区別するために「部分変換テーブル」とよぶ。
【0077】
キャッシュ処理部308による部分情報保持部310とアドレス情報保持部314の間のデータ転送操作のことを「リフィル(Refill)」ともよぶ。
【0078】
アドレス変換部306は、部分情報保持部310に保持されている部分変換テーブルを参照して、論理アドレスを物理アドレスに変換する。変換方法については、図3に示した通りである。部分情報保持部310に保持される部分変換テーブルにおいて、論理アドレスを物理アドレスに変換するためのデータが含まれていないときには、キャッシュ処理部308は、該当部分を含む部分変換テーブルをアドレス情報保持部314から部分情報保持部310に新たにリフィルする。アドレス変換により特定された物理アドレスは、アクセス処理部312やアクセス判定部304に通知される。
【0079】
アクセス判定部304は、アドレス変換部306において特定されたページについて、IOIDが一致するか、すなわち、アクセスが可能な領域であるか否かを判定する。判定結果は、アクセス処理部312に通知される。アクセス処理部312は、アクセス判定部304によりアクセス許可されたことを条件として、アドレス変換部306から通知された物理アドレスに対して指定されたコマンドにより管理空間へのアクセスを実行する。このとき、アクセス判定部304は、ページについて指定されたアクセス属性情報にしたがって、アクセスを実行する。アクセス処理部312のアクセス先は、メインメモリ140やローカルメモリ144など、PU112の管理空間にマップされている記録媒体である。
【0080】
アクセス処理部312は、さまざまなアクセス要求主体のアクセス要求のうち、有効なものをキューに保持する。アクセス処理部312は、キューからアクセス要求を順次取り出して管理空間へのアクセスを実行する。アクセス処理部312は、DMAリクエスタAによるメインメモリ140へのアクセスを実行しているときに、DMAリクエスタBによるローカルメモリ144へのアクセスを実行することもできる。このようにアクセス処理部312は、複数のDMAリクエスタによる複数種類のアクセスを並列実行することができる。
【0081】
なお、I/Oアクセス制御装置300は、アドレス情報保持部314に相当する部分を含んで構成されてもよい。
【0082】
部分情報保持部310は、ラインともよばれる一定サイズのブロック単位でデータを管理する。また、アドレス情報保持部314も、一定サイズのブロック単位でデータを管理する。部分情報保持部310の各ブロックには、アドレス情報保持部314のいずれかのブロックのデータが格納される。部分情報保持部310のブロックサイズに比べて、アドレス情報保持部314のブロックサイズは大きい。そのため、部分情報保持部310のブロックには、アドレス情報保持部314のブロックのデータの一部が格納される。
【0083】
本実施例において、キャッシュ処理部308は、第1変換テーブル180についてはダイレクトマップ(Direct Mappied)方式、第2変換テーブル182については4ウェイセットアソシアティブ方式(4-way Set Associative)により、部分変換テーブルのデータを部分情報保持部310にロードする。なお、フルアソシアティブ(Filly Associative)方式のような既知の方法にてリフィルが実行されてもよい。
【0084】
本実施例における部分情報保持部310は、数種類の部分変換テーブルを保持可能である。言い換えれば、アドレス変換テーブルから複数種類の物理アドレス範囲が部分変換テーブルとして保持される。キャッシュ処理部308は、常時、所定の論理アドレス範囲に対応する部分変換テーブルを1種類以上、リフィルしておいてもよい。アドレス変換部306は、部分情報保持部310に保持されている部分変換テーブルにアドレス変換に必要なデータが含まれていたとき、すなわち、ヒットしたときには、その部分変換テーブルを参照して物理アドレスを特定する。このような場合、アドレス情報保持部314に比べて高速アクセスが可能な部分情報保持部310へのアクセスだけでアドレス変換処理を実行できる。このように、アドレス変換を実行する前にあらかじめ部分変換テーブルを部分情報保持部310にリフィルしておくことを「先読みリフィル」とよぶ。先読みリフィルは、OSの特権ソフトウェアによって実行されてもよい。
【0085】
一方、先読みリフィルによって部分情報保持部310に保持されていた部分変換テーブルではアドレス変換を実行できなかったとき、すなわち、ミスヒット時においては、キャッシュ処理部308は新たな部分変換テーブルを部分情報保持部310にリフィルする。そして、アドレス変換部306は、この新たにリフィルされた部分変換テーブルを参照して物理アドレスを特定する。このように、ミスヒットが発生したときに実行される部分変換テーブルのリフィルのことを「後読みリフィル」とよぶ。
【0086】
本実施例においては、先読みリフィルされた部分変換テーブルにおいてミスヒットが発生しても、その部分変換テーブルを部分情報保持部310に保持したまま、新たな部分変換テーブルが後読みリフィルされる。
【0087】
先読みリフィルされた部分変換テーブルは、部分情報保持部310においてロック状態におかれてもよい。ロックされている部分変換テーブルは部分情報保持部310から除去されない。そのため、新たにリフィルされた部分変換テーブルによって上書きされることがない。一方、ロックされていない部分変換テーブルは、新たなリフィルにともなって部分情報保持部310から除去されうる。このような方法により、先読みリフィルによる予測に基づくリフィルと、後読みリフィルによる受信したアクセス要求に基づくリフィルを効果的に併用できる。
【0088】
本実施例によれば、先読みリフィルという予測によるメリットを活かしつつ、ミスヒット時における後読みリフィルを実行するため、トータルとしてのヒット率を向上させやすくなる。
【0089】
たとえば、部分情報保持部310が4種類の部分変換テーブルを保持可能である場合、2種類は先読みリフィル、残り2種類は後読みリフィルされる部分変換テーブルであってもよい。先読みリフィルされた部分変換テーブルの保持領域を先読み領域、後読みリフィルされた部分変換テーブルの保持領域を後読み領域とよぶことにする。新たに先読みリフィルが実行される場合には、先読み領域の部分変換テーブルが入れ替えとなる。また、新たに後読みリフィルが実行される場合には、後読み領域の部分変換テーブルが入れ替えとなる。なお、リフィルに際して部分情報保持部310の部分変換テーブルを部分情報保持部310から除くためのアルゴリズムとしても、ラウンドロビン(Round Robin)、LRU(Least Recen)、ランダム(Random)など、既知のアルゴリズムであってよい。
【0090】
図10は、I/Oアクセス制御装置300によるアクセス制御過程を示すフローチャートである。
コマンド受信部302は、受信したアクセス要求コマンド162からIOIDを抽出する(S10)。アドレス変換部306は、論理アドレスを物理アドレスに変換する(S12)。S12の処理については、図11に関連して後に詳述する。アクセス判定部304は、アクセス要求コマンド162のIOIDが、第2変換テーブル182において特定されたページのIOIDと一致するか判定する(S14)。一致すれば(S14のY)、アクセス処理部312はアクセス属性情報にしたがって、管理空間へのアクセスを実行する(S16)。一致しなければ(S14のN)、アクセス処理部312は送信元のコマンド送信補助装置200に対してエラーを通知する(S20)。エラー通知は、OSに対してエラーメッセージとしてイベント通知されてもよい。この場合には、アクセスは拒否される。
【0091】
図11は、図10のS12におけるアドレス変換処理を詳細に示すフローチャートである。
まず、アドレス変換部306は、部分情報保持部310にリフィルされている部分変換テーブルによりアドレス変換可能か、すなわち、ヒットするか否かを判定する(S30)。ヒットすれば(S30のY)、アドレス変換部306はその部分変換テーブルを参照して物理アドレスを特定する(S34)。ミスヒットの場合(S30のN)、キャッシュ処理部308は該当する部分変換テーブルを後読みリフィルする(S32)。そして、後読みリフィルされた部分変換テーブルにより、物理アドレスを特定する(S34)。
【0092】
以上、本実施例に示す方法によれば、I/Oアクセス制御装置300にてアクセス要求主体をIOIDによって一元的に管理できる。そのため、I/Oアクセス制御装置300は、外部のDMAリクエスタからの不正なアクセスを未然に防止することができる。情報処理装置100に導入されているDMAリクエスタが、どのような製品で、どのようなポリシにてDMARIDを設定されていても、コマンド送信補助装置200は、管理下のDMAリクエスタに対して一意なIOIDを付加できる。図6に関連して説明したように特権ソフトウェアを介して、IOIDやSEG_ADDR、MA_MASKを任意に設定可能である。そのため、I/Oアクセス制御装置300は、外部にどのようなDMAリクエスタが存在しても、アクセス要求コマンド162のIOIDを参照することにより、各DMAリクエスタを統合管理できる。
【0093】
このような処理方法によれば、特権ソフトウェアがDMAリクエスタを制御するデバイスドライバをコントロール下におくことができる。従来の、カーネル層とユーザ層という2階層OSモデルの場合、デバイスドライバはユーザ層よりも下位層に位置するため、物理アドレスを直接指定して記憶領域にアクセスしていた。これに対して、本実施例のような3階層モデルであれば、論理アドレスにより管理空間にアクセスすることになる。デバイスドライバが直接記憶領域にアクセスするのではなく、特権ソフトウェアとは異なるソフトウェア階層で動作するためである。特権ソフトウェアは、カーネル層で動作するOSの種類に応じて、アドレス領域170の論理アドレスを設定する。たとえば、カーネル層の上で、OS−AとOS−Bが動作するとする。OS−A動作時においては、特権ソフトウェアはOS−Aに対応してアドレス情報保持部314の第1変換テーブル180や第2変換テーブル182変換部254の各テーブルを設定し、OS−B動作時においては、OS−Bに対応して設定してもよい。このようなマルチOS環境において、DMAリクエスタが指定する論理アドレスをOSに応じて異なる物理アドレスに変換することができる。
【0094】
デバイスドライバのプログラマにとっても、開発効率が向上するメリットがある。デバイスドライバなどI/Oデバイス160を制御するためのプログラムを作成するときには、論理アドレスを使用し、更に、IOIDというスキームにしたがっていれば、他のソフトウェアから独立していて、かつ、抽象化された環境が提供されるため、開発負担が軽減される。
【0095】
また、特権ソフトウェアが、第1変換テーブル180、第2変換テーブル182を設定すると、ページ単位で、IOIDによるアクセス可否や、アクセス属性情報によるアクセス条件を管理できるので、I/Oアクセス制御装置300にてきめ細かく管理空間のアクセス方法を制御できる。
【0096】
近年、商業用プログラムは多くのプログラマ、あるいは、多くのサードパーティから提供されるソフトウェアモジュールの集合体となっており、メモリに対するアクセス制御についてはますます精密な設計が必要となってきている。そのため、本実施例にて示した方法は、このような要請を解決する上で有効である。
【0097】
また、デバイスドライバが論理アドレスを使用できるため、ユーザ層のソフトウェアが確保した物理アドレス上ではページ単位では不連続だが、論理アドレス上では連続しているデータ転送用の領域に対して、DMAリクエスタがダイレクトに連続してデータ転送を行うことができる。
【0098】
従来の方法においては、DMAリクエスタは物理アドレスのみを使用できるため、データ転送用の領域がページ単位としては物理アドレス上において不連続であった場合、DMAのデータ転送をこの不連続領域にあわせて区切る必要があった。あるいは、あらかじめDMAリクエスタが使用するデータ転送用の領域については物理アドレスが連続となるように、OSが領域管理する必要があった。
【0099】
さらに、アドレス変換テーブルとして示した第1変換テーブル180や第2変換テーブル182は、IOIDによるアクセス可否判定やアクセス方法を決定づけるアドレス属性情報を含むことにより、アドレス変換や、アクセス可否判定などの各処理を効率的に実行できる。なぜならば、リフィルされた部分変換テーブルにおいてアドレス変換に必要なデータが含まれていれば、その部分変換テーブルによってアクセス可否判定やアクセス条件の特定といった処理が可能だからである。
【0100】
また、本実施例において、部分情報保持部310は、先読みリフィルした部分変換テーブルを保持した状態で、後読みリフィルを実行できるので、ヒット率を向上させる上でも効果がある。
【0101】
以上、本発明を実施例をもとに説明した。この実施例はあくまで例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
【0102】
なお、請求項に記載のアクセス要求主体は、本実施例においては画像処理用DMAC122などに対応する。また、請求項に記載のアクセス可否判定テーブルは、本実施例においては第2変換テーブル182の、主としてIOID欄192が対応する。請求項に記載のアドレス変換テーブル保持部は、本実施例においてはアドレス情報保持部314によりその機能を発揮される。請求項に記載されたキャッシュ処理部により部分変換テーブルがロードされるキャッシュメモリは、本実施例においては主として部分情報保持部310によりその機能が発揮される。請求項に記載のアクセス属性テーブルは、本実施例においては第2変換テーブル182の、主としてアクセス条件欄194が対応する。請求項に記載のアクセス属性テーブル保持部は、本実施例においては部分情報保持部310やアドレス情報保持部314によりその機能を発揮される。請求項に記載の統括的なソフトウェアとは、OS、あるいは、特権ソフトウェアに対応する。請求項に記載のアクセス要求主体に固有のIDについては、本実施例においてはDMARIDが相当する。
【0103】
なお、これら請求項に記載の各構成要件が果たすべき機能は、本実施例において示された各機能ブロックの単体もしくはそれらの連係によって実現されることも当業者には理解されるところである。
【0104】
本発明の好ましい態様を特定の用語を用いて説明したが、これらの記述はあくまでも説明を目的とするものであり、添付する特許請求の範囲の範囲や思想から外れない限り様々な変更・変化が可能であることは理解されるところであろう。
【産業上の利用可能性】
【0105】
本発明は、メモリ管理システムに対する技術として応用可能である。
【技術分野】
【0001】
本出願は、米国仮特許出願第60/775,829号(発明の名称:「Memory Access Controlling Apparatus And Command Transmit Supporting Apparatus」2006年2月22日出願)の利益を主張する。この出願は、引用によりその全てを含む。
【0002】
本発明は、I/Oアクセスを制御するための技術、特に、外部装置からのアクセス要求を制御するための技術、に関する。
【背景技術】
【0003】
近年のコンピュータゲームやデジタル放送などの分野に利用されるコンピュータグラフィックス技術や画像処理技術の著しい進歩にともない、コンピュータ、ゲーム機器、テレビなどの情報処理装置はより高精細の画像データをより高速に処理する能力を求められている。そのためには、演算処理自体の高速化が必要であることはもちろんであるが、複数の処理装置間でタスクを好適に分散することも同様に重要である。
【発明の概要】
【発明が解決しようとする課題】
【0004】
各処理装置は、タスクの実行に際して適宜メモリにアクセスする。このとき、処理装置Aの処理のために確保されたメモリの領域に対して、処理装置Bのアクセスを許してしまうと、情報処理装置全体としての動作安定性が損なわれる。特に、周辺機器を制御するためのI/Oデバイスの場合、DMAリクエスタが直接物理アドレスを指定してメモリを制御することが多かった。このようなI/Oデバイスやそれを制御するデバイスドライバの誤動作は、情報処理装置の動作安定性に対して深刻な影響を及ぼす可能性がある。
【課題を解決するための手段】
【0005】
本発明のある態様は、I/Oアクセス制御装置である。
この装置は、外部のアクセス要求主体から、プロセッサのメモリ空間におけるデータを制御するためのコマンドを、アクセス対象となるアドレスを指定するアドレス情報およびアクセス要求主体を識別するためのID情報と共に受信するコマンド受信部と、メモリ空間におけるアドレスと、そのアドレスにて指定される領域についてアクセスを許可されるべきアクセス要求主体のID情報とを対応づけたアクセス可否判定テーブルを参照して、アドレス情報にて指定されたアドレスへのアクセス要求主体によるアクセスの可否を判定するアクセス判定部と、アクセス判定部に許可されたことを条件として、アクセス要求主体のメモリ空間に対するアクセスを実行するアクセス処理部と、を備える。この装置は、プロセッサに内蔵される装置として形成されてもよく、アクセス要求主体はプロセッサ外部の装置であってもよい。
【0006】
このような態様によれば、ID情報に基づいて、アクセス要求されているアドレス領域について、正当なアクセス要求主体からのアクセスであるかを判定できる。「ID情報」は、たとえば、所定のフォーマットにて規定されるビット列として専用に生成されてもよく、アクセス要求主体を一意に特定できる情報であればよい。
【0007】
アドレス情報はメモリのアドレスを所定のフォーマットにて変換した仮想的なアドレスである論理アドレスを示す情報であってもよい。
この場合、この装置は、論理アドレスを物理アドレスに変換するためのアドレス変換テーブルを保持するアドレス変換テーブル保持部と、アドレス変換テーブルを参照し、アドレス情報において指定された論理アドレスを物理アドレスに変換するアドレス変換部と、を更に備えてもよい。
【0008】
この態様においては、ID情報に基づいて個々のアクセス要求主体に異なる論理アドレス空間を独立に割り当てることができる。アクセス要求主体から直接に物理アドレスを指定させないので、よりメモリ空間を外部アクセスから保護しやすくなる。また、論理アドレスを用いることで、外部のアクセス要求主体とプロセッサの間のデータ転送をシステムに依存しない、抽象化されたアドレスに基づいて実行できる。
【0009】
この装置は、アドレス変換テーブル保持部からアドレス変換テーブルのうち、所定の物理アドレス範囲に対応する部分である部分変換テーブルをアドレス変換が実行される前に予めキャッシュメモリにロードしてもよい。
ロードされた部分変換テーブルにアドレス情報にて指定された論理アドレスを物理アドレスに変換するために必要なデータが含まれているときには、部分変換テーブルを参照してアドレス変換し、含まれていないときには、アドレス変換テーブル保持部からキャッシュメモリに新たな部分変換テーブルをロードしてもよい。
【0010】
また、アドレス変換が実行される前に予めロードされた部分変換テーブルに必要なデータが含まれていないときには、その部分変換テーブルをキャシュメモリに保持した状態で、新たな部分変換テーブルをキャッシュメモリにロードしてもよい。
【0011】
この装置は、メモリ空間におけるアドレスと、そのアドレスが指定する領域に対するアクセス条件を規定するアクセス属性情報とを対応づけたアクセス属性テーブルを保持するアクセス属性テーブル保持部を更に備え、アクセス処理部は、アクセス要求主体についてアクセス判定部によりアクセス許可されることを条件として、アクセス属性テーブルにて指定されたアクセス条件にしたがって受信されたコマンドにより指定されたアクセスを実行するとしてもよい。
【0012】
本発明の別の態様は、コマンド送信補助装置である。
この装置は、所定のアクセス要求主体から、プロセッサのメモリ空間におけるアクセス対象領域のアドレスを指定するアドレス情報と共に送信されるメモリ空間のデータを制御するためのコマンドに対して、アクセス要求主体を識別するためのID情報を付与するID追加部と、メモリ空間におけるアドレスとそのアドレスが指定する領域に対してアクセスを許可されるべきアクセス要求主体のID情報とを対応づけたアクセス可否判定テーブルを参照して、アクセス要求主体によるアドレス情報にて指定されたアドレスへのアクセス可否を判定する外部の装置に対し、ID情報が付与されたコマンドを送信するコマンド送信部と、を備える。
【0013】
ID情報は、アクセス要求主体と外部の装置を統括的に制御するソフトウェアによって、アクセス要求主体ごとに割り振られてもよい。このようなソフトウェアはOSであってもよいし、OSに基づいて動作するアプリケーションソフトウェアであってもよい。
【0014】
なお、本発明を方法、システム、記録媒体、コンピュータプログラムにより表現したものもまた、本発明の態様として有効である。
【図面の簡単な説明】
【0015】
例示であって制約的な意味を持たない添付図面を参照しつつ以下に述べる実施例も、単なる例示にすぎず、各図面に現れる要素の数についても同様である。
【図1】情報処理装置の機能ブロック図である。
【図2】アクセス要求コマンドのデータ構造図である。
【図3】アクセス要求コマンドにより示された論理アドレスを物理アドレスに変換する過程を説明するための模式図である。
【図4】管理空間とアクセス可否との関係を説明するための模式図である。
【図5】コマンド送信補助装置の機能ブロック図である。
【図6】IOID/セグメントアドレス追加部の処理内容を示す模式図である。
【図7】中間アドレス(INT_ADDR)の生成方法を示す模式図である。
【図8】中間アドレス(INT_ADDR)のうち、アドレス領域におけるセグメント、ページ、オフセットの関係を示す図である。
【図9】I/Oアクセス制御装置の機能ブロック図である。
【図10】I/Oアクセス制御装置によるI/Oアクセス制御の過程を示すフローチャートである。
【図11】図10のS12におけるアドレス変換処理を詳細に示すフローチャートである。
【発明を実施するための形態】
【0016】
好適な実施例を参照することにより、本発明を以下に説明する。この実施例は、本発明の範囲を制限することを意図したものではなく、本発明を具体的に説明することを意図したものである。
【0017】
図1は、情報処理装置100の機能ブロック図である。
情報処理装置100は、統括制御部110、画像処理部120、メインメモリ140およびI/Oデバイス160を含む。また、情報処理装置100は表示装置150と接続されている。表示装置150は、統括制御部110および画像処理部120の処理の結果得られた画像、映像を出力する。I/Oデバイス160は、サウスブリッジのように他のデータ処理装置とのI/Oインタフェースとなる装置である。I/Oデバイス160では、USB(Universal Serial Bus)コントローラ、HDD(Hard Disk Drive)コントローラ、イーサネットコントローラ等(イーサネットは登録商標)が、後述するコマンド送信補助装置200に接続される。情報処理装置100と接続されるI/Oデバイス160は、複数個、また、複数種類であってよい。統括制御部110や画像処理部120はそれぞれワンチップの電子デバイスとして形成されており、お互いは物理的に分離されている。統括制御部110と画像処理部120があわせて、ワンチップの電子デバイスとして形成されてもよい。
【0018】
図1などにおいて、さまざまな処理を行う機能ブロックとして記載される各要素は、ハードウェア的には、CPU(Central Processing Unit)、メモリ、その他のLSI(Large Scale Integration)で構成することができ、ソフトウェア的には、メモリにロードされた予約管理機能のあるプログラムなどによって実現される。したがって、これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、またはそれらの組合せによっていろいろな形で実現できることは当業者には理解されるところであり、いずれかに限定されるものではない。
【0019】
また、この情報処理装置100では、情報処理装置100を効率よく使用するための機能、環境を提供し、装置全体を統括的に制御するオペレーティングシステム(以下、単に「OS(Operating System)」とよぶ)が実行される。OS上で複数のアプリケーションソフトウェアが実行される。本実施例における情報処理装置100のOS階層は、上位から、ユーザ層、カーネル層、ハイパーバイザ(Hypervisor)層の3階層となっている。以下、ハイパーバイザ層を管理するソフトウェアのことを「特権ソフトウェア」とよぶことにする。ユーザ層、カーネル層とハイパーバイザ層のソフトウェアが一体となって、情報処理装置100の「OS」として機能している。
【0020】
統括制御部110は、1つのPU(Processing Unit)112と複数のSPU(Synergistic-Processing Unit)116、メモリコントローラ142およびI/Oアクセス制御装置300を含む。PU112およびSPU116、メモリコントローラ142、I/Oアクセス制御装置300はバス118により相互通信可能である。メモリコントローラ142には、メインメモリ140が接続される。また、情報処理装置100はバス118を介して別の情報処理装置100とも接続可能である。
【0021】
PU112は、各アプリケーションにおける基本処理単位としてのタスクを各SPU116に割り当てる。あるいは、PU112自身がタスクを実行してもよい。PU112は、演算実行主体としてメインプロセッサ148を含む。各SPU116が割り当てられたタスクを実行することにより、複数のタスクが並列処理される。SPU116は、演算実行主体としてのサブプロセッサ146とローカルな記憶領域としてローカルメモリ144を含む。OSはPU112により実行される。
【0022】
したがって、統括制御部110の中でPU112の管理下にあるメモリ空間はメインメモリ140と複数のローカルメモリ144により形成されることになる。以下、このような「PU112の管理下にあるメモリ空間」のことを単に「管理空間」とよぶことにする。詳しくは後述するが、USBコントローラや画像処理用DMAC(Direct Memory Access Controller)122、ディスプレイコントローラ126のように、統括制御部110の外部に存在し、DMA転送を要求する装置としてのDMAリクエスタは、I/Oアクセス制御装置300を介して管理空間にアクセスできる。すなわち、USBコントローラや画像処理用DMAC122は、コマンド送信補助装置200とI/Oアクセス制御装置300を介して管理空間へのデータのREAD/WRITEを実行する。以下、情報処理装置100の外部から管理空間にアクセスする装置のことをまとめて「アクセス要求主体」とよぶことにする。
【0023】
PU112により実行される処理のことを「メインプロセス」、SPU116により実行される処理のことを「サブプロセス」とよぶ。PU112は、ユーザインタフェースに関する処理のように比較的優先度が高い情報処理装置100全体を統括する処理を実行する。これに対して、SPU116は、比較的優先度が低いバックグラウンドで実行される計算のようにメインプロセスの下請け的な処理を実行する。
【0024】
SPU116に含まれる図示しないDMACは、画像処理部120に内蔵されるグラフィックスメモリ128やメモリコントローラ142を介して接続されるメインメモリ140との間のデータ転送、データ退避などをPU112またはSPU116からの命令によって制御する。
【0025】
I/Oアクセス制御装置300は、アクセス要求主体からのアクセス要求コマンドを統括的に制御する。ここでいうアクセス要求コマンドとは、先述したようにPU112の管理空間に対するデータの書き込みや管理空間のデータの読み出しを要求するコマンドである。アクセス要求コマンドについては、次の図2に関連して詳述する。PU112の管理空間は、メモリコントローラ142に接続されるメインメモリ140と各SPU116のローカルメモリ144にマッピングされる。この管理空間には、他の記憶領域、たとえば、別の情報処理装置100の記憶領域がマッピングされてもよい。アクセス要求主体がPU112の管理空間にアクセスするときには、I/Oアクセス制御装置300に対してアクセス要求コマンドを送信する。I/Oアクセス制御装置300は、アクセス要求コマンドを受け取り、管理空間に対するREAD/WRITEを制御する。
【0026】
メインメモリ140は、管理空間の一部にマッピングされる記憶領域である。メインメモリ140には、タスクの実行状態に関連するデータが格納される。たとえば、統括制御部110によりコンピュータグラフィックスに関する座標計算が実行されて得られた座標データなどが一時的に格納される。また、このメインメモリ140には、画像処理部120により生成されたデータが退避される場合もある。ローカルメモリ144も、管理空間の一部にマッピングされる記憶領域であり、主としてサブプロセス実行のための作業用データを格納する。
【0027】
画像処理部120は、画像処理を専用に実行するユニットであり、たとえば、レンダリング処理を実行する。画像処理部120は、統括制御部110からの指示により画像処理を実行する。画像処理部120は、統括制御部110により処理されるそれぞれのタスクに関連する画像処理を行い、生成した画像、映像を表示装置150に出力する。画像処理部120は、複数の画像処理を時分割して並列的に実行してもよい。
【0028】
画像処理部120は、メモリコントローラ138、グラフィックスメモリ128、画像処理用DMAC122、演算ユニット130、ディスプレイコントローラ126、制御ブロック124およびコマンド送信補助装置200を含む。これらのユニット同士も、バス118で接続されており、各ユニット間で相互通信可能である。グラフィックスメモリ128はメモリコントローラ138を介してバス118に接続される。演算ユニット130は、画像処理用DMAC122を介してバス118に接続される。
【0029】
グラフィックスメモリ128は、画像処理部120により使用、管理されるグラフィックスデータを記憶するためのメモリ領域である。グラフィックスメモリ128には、画像フレームデータが格納されるフレームバッファやZバッファに加えて、画像フレームデータを描画する際に参照される基本データである頂点データ、テクスチャデータ、カラールックアップテーブルなどのデータに対応する領域が用意されている。
【0030】
制御ブロック124は、画像処理部120全体を制御するブロックである。制御ブロック124は、演算ユニット130、グラフィックスメモリ128、ディスプレイコントローラ126を統括的に制御し、各ブロック間のデータ転送の同期管理やタイマー管理等を行う。
【0031】
画像処理用DMAC122は、統括制御部110、メインメモリ140およびグラフィックスメモリ128の間のデータ転送、データ退避などを制御ブロック124からの命令によって制御する。
【0032】
ディスプレイコントローラ126は、水平および垂直同期信号を生成し、表示装置150の表示タイミングにしたがって、グラフィックスメモリ128に格納されるフレームバッファから画像フレームデータのピクセルデータをライン状に順次読み込んでいく。さらにディスプレイコントローラ126は、ライン状に読み込まれたピクセルデータを、RGB(Red-Green-Blue)のカラー値からなるデジタルデータから表示装置150に対応したフォーマットに変換して出力する。
【0033】
演算ユニット130は、制御ブロック124からの命令にしたがって、グラフィックスに関するさまざまな演算処理を行う。その処理の一例としては、3次元モデリングデータをもとに座標変換、陰面消去、シェーディングを行って画像フレームデータを作成し、フレームバッファに書き込む一連のレンダリング処理などが挙げられる。
【0034】
演算ユニット130は、特に3次元グラフィックスに関する処理を高速に行うために、ラスタライザ132、シェーダユニット134、テクスチャユニット136などの機能ブロックを含む。
【0035】
ラスタライザ132は、描画する基本物体(以下、「プリミティブ」とよぶ)の頂点データを統括制御部110から受け取り、3次元空間上のプリミティブを投影変換により描画平面上の図形に変換するビュー変換を行う。さらに、描画平面上の図形を、描画平面の水平方向に沿ってスキャンしながら、一列ごとに量子化されたピクセルに変換するラスタ処理を行う。このラスタライザ132によってプリミティブがピクセル展開されて、各ピクセルごとにピクセル情報を算出する。このピクセル情報には、RGBカラー値、透明度を表すα値、視点からの奥行きを表すZ値が含まれる。
【0036】
ラスタライザ132は、スキャンラインに沿って所定の大きさのピクセル領域を生成し、シェーダユニット134、テクスチャユニット136へと出力する。ラスタライザ132から出力されるピクセル領域は、一度キューにスタックされ、シェーダユニット134はスタックされたピクセル領域を順に処理していく。
【0037】
シェーダユニット134は、ラスタライザ132により算出されたピクセル情報をもとにシェーディング処理を行い、テクスチャユニット136により得られたテクセル情報をもとに、テクスチャマッピング後のピクセル色を決定し、グラフィックスメモリ128内のフレームバッファにシェーディング処理後の画像フレームデータを書き込む。さらにシェーダユニット134はフレームバッファに書き込まれた画像フレームデータに対してフォギング、アルファブレンディング等の処理を行い最終的な描画色を決定してフレームバッファの画像フレームデータを更新する。
【0038】
テクスチャユニット136は、シェーダユニット134からテクスチャデータを指定するパラメータを受け取り、要求されたテクスチャデータをグラフィックスメモリ128内のテクスチャバッファを読み出し、所定の処理を行った後にシェーダユニット134に対して出力する。
【0039】
画像処理部120はプリミティブの頂点データなど画像生成のために必要な基本情報や画像生成の開始指示を統括制御部110から与えられると、統括制御部110とは独立して画像処理を実行する。画像処理用DMAC122は、画像処理部120により生成されたデータをグラフィックスメモリ128や管理空間に転送する。
【0040】
画像処理部120内のアクセス要求主体が管理空間にデータを転送するとき、画像処理部120に含まれるコマンド送信補助装置200は、画像処理部120から統括制御部110のI/Oアクセス制御装置300に対して、アクセス要求コマンドを送信する。コマンド送信補助装置200は、アクセス先となる管理空間の論理アドレス、アクセス要求主体を識別するためのID情報(以下、「IOID(Input/Output device ID)」とよぶ)、コマンド(READ/WRITE)をパケット化したアクセス要求コマンドを送信する。書き込み指示の場合、アクセス要求コマンドにつづいて、書き込み対象のデータも送信される。I/Oアクセス制御装置300は、受信したアクセス要求コマンドにしたがって、アクセス要求主体からの管理空間に対するアクセスを制御する。
【0041】
コマンド送信補助装置200は、画像処理部120のみならず、I/Oデバイス160にも搭載される。I/Oデバイス160に搭載されるコマンド送信補助装置200も、I/Oデバイス160から統括制御部110に対して、アクセス要求コマンドを送信する。画像処理部120においてアクセス要求主体となるのは画像処理用DMAC122やディスプレイコントローラ126である。I/Oデバイス160についてアクセス要求主体となるのは、先述したUSBコントローラや、HDDコントローラ、イーサネットコントローラ等である。コマンド送信補助装置200は、各種アクセス要求主体が管理空間へのアクセスを要求するときに、所定フォーマットのアクセス要求コマンドを生成して、統括制御部110に送信する装置である。I/Oアクセス制御装置300は、さまざまなコマンド送信補助装置200を介してさまざまなアクセス要求主体からのアクセス要求を受け取り、管理空間へのアクセスを制御する装置である。
【0042】
コマンド送信補助装置200の詳細については、図2以降、特に図5に関連して詳述する。
【0043】
図2は、アクセス要求コマンド162のデータ構造図である。
同図に示すアクセス要求コマンド162は、コマンド送信補助装置200からI/Oアクセス制御装置300に対して送出される。IOID領域172は、コマンド送信補助装置200がアクセス要求主体を一意に識別するために付与するIOIDを示す。IOIDは、情報処理装置100において各アクセス要求主体を一意に識別するIDである。コマンド領域179は、READやWRITEなどのコマンド内容を示す。アドレス領域170は、管理空間におけるアクセス先のアドレスを示す。このアドレスは、論理的なアドレスであって物理アドレスを直接的に指定するものではない。論理アドレス空間は、セグメントに分割されており、セグメントはページに分割される。各ページにおける具体的なアドレスはオフセットにより指定される。アドレス領域170は、セグメント領域174、ページ領域176、オフセット領域178を含む。セグメント領域174はセグメントを指定するセグメント値、ページ領域176はページを指定するページ値、オフセット領域178はそのページ内におけるオフセット値を示す。
【0044】
アクセス要求コマンド162のうち、アドレス領域170については図6や図7に関連しても後述する。
【0045】
図3は、アクセス要求コマンドにより示された論理アドレスを物理アドレスに変換する過程を説明するための模式図である。
【0046】
このような変換処理はI/Oアクセス制御装置300において実行される。I/Oアクセス制御装置300は、アクセス要求コマンド162のアドレス領域170を抽出する。まず、セグメント値を抽出する。セグメント値に対して、予め定められたベース値が加算される。ベース値はOSにより割り当てられてもよいし、固定値であってもよい。このセグメント値に対するベース値の加算値が第1インデックス値となる。第1変換テーブル180は、第1インデックス値とページベース値を対応づけたデータテーブルである。第1変換テーブル180によりページベース値が特定される。
【0047】
第1変換テーブル180のうち、第1インデックス欄184は、第1インデックス値を示す。ページサイズ欄185は、ページサイズを示す。ページベース値欄186は、ページベース値を示す。第1変換テーブル180により特定されたページベース値にページ領域176のページ値が加算される。この加算値が第2インデックス値となる。
【0048】
第2変換テーブル182は、第2インデックス値とページ番号等を対応づけたデータテーブルである。第2変換テーブル182のうち、第2インデックス欄188は、第2インデックス値を示す。ページ番号欄190は、ページ番号を示す。IOID欄192は、各ページについてアクセスを許可されるべきアクセス要求主体をIOIDにより示す。また、アクセス条件欄194は、該当ページにおけるアクセス属性情報を示す。アクセス属性情報については、後述する。なお、第1変換テーブル180や第2変換テーブル182は、OSの特権ソフトウェアによって設定される。
【0049】
第2インデックス値により、アクセス先のページ番号が特定される。特定されたページについて、アクセス要求コマンド162から抽出されるIOIDと、IOID欄192のIOID値が一致すれば、当該ページに対するアクセスが許可される。アクセス許可されたとき、特定されたページのアドレスにオフセット値を加算して最終的に、具体的な物理アドレスが特定される。そして、アクセス条件欄194に示されるアクセス属性情報にしたがってアクセスが実行される。
【0050】
アクセス属性情報とは、管理空間に対するアクセス方法を条件付けるための情報であり、具体的には、以下のようなものがある。
1.アクセス順序の強制をするか否か
【0051】
通常、記録媒体に対するアクセスは必ずしもアクセス要求順に実行されるのではなく、メモリコントローラが実行しやすい順序でアクセスが実行される。このような処理方法は、一般にはアウトオブオーダー実行(Out of Order Execution)、あるいは、ウィークリーオーダー実行(Weakly Order Execution)とよばれている。アクセス条件欄194においては、アウトオブオーダー実行ではなく、アクセス要求順にしたがってアクセスすべきか否かを指定するための情報がアクセス属性情報として含まれる。アクセス順序が強制される設定のページの場合、そのページに対するアクセスは、すべてアクセス要求がなされた順に実行されるように処置される。このようにアクセス順序を強制する処理方法は、インオーダー実行(In Order Execution)、あるいは、ストリクトリィオーダー実行(Strictly Order Execution)とよばれる。アクセス順序の制御方法は、IOIDごとに設定可能である。たとえば、IOID=0022のアクセス要求主体が、ページAを介してある物理アドレスにアクセスし、IOID=0023のアクセス要求主体はページAとは異なるページBを介して同じ物理アドレスにアクセスするとする。ここで、第2変換テーブル182において、ページAからのアクセスはストリクトリィオーダー実行、ページBからのアクセスはアウトオブオーダー実行として設定すれば、同一の物理アドレスであっても、アクセス要求主体に応じて異なるアクセス順序制御が可能である。
2.キャッシュコヒーレンシ維持が必要か否か
【0052】
メインメモリ140のようないわゆる主記憶のデータは、キャッシュメモリを介してアクセスされる。キャッシュメモリは、PU112やSPU116に内蔵される。PU112やSPU116はメインメモリ140よりも高速アクセスが可能なキャッシュメモリを利用して処理を実行することもできる。キャッシュメモリに書き込まれたデータは、メインメモリ140に反映される。ただし、その反映のタイミングによっては、キャッシュメモリとメインメモリ140との間でデータが一致しない期間が発生する。
【0053】
外部からのアクセス要求に際し、キャッシュメモリのデータとメインメモリ140やローカルメモリ144のデータとの一貫性、いわゆるキャッシュコヒーレンシ(Cache Coherency)の維持が必要か否かを示す情報がアクセス属性情報として含まれる。
【0054】
キャッシュコヒーレンシ維持設定されたページの場合、たとえば、スヌープ方式(Cache Snooping)により、どのキャッシュメモリに最新のデータが存在するかを検知した上で、各キャッシュメモリが必要なときに最新データを取得できるように自身の状態を変更する。そのほかにも、ディレクトリ方式(Directory-based Protocol)や共有キャッシュ(Shared Cache)のような、既知の方法によりキャッシュコヒーレンシを維持してもよい。
3.ページに対する書込を許可するか否か
【0055】
該当ページに対して、READだけが許可されるか、READ/WRITE共に許可されるかを示す情報がアクセス属性情報として含まれる。
【0056】
図4は、管理空間とアクセス可否との関係を説明するための模式図である。
【0057】
アクセス要求主体のうち、画像処理用DMAC122のIOIDが「0021」、ディスプレイコントローラ126のIOIDが「0022」であるとして説明する。管理空間のうち、アクセス不能領域198とアクセス不能領域199は、画像処理用DMAC122もディスプレイコントローラ126もアクセス不可として設定されている領域である。これらの領域は、ローカルメモリ144にマップされているかもしれないし、メインメモリ140にマップされているかもしれない。IOID「0021」の画像処理用DMAC122は、アクセス可能領域196とアクセス可能領域201にアクセスできる。すなわち、第2変換テーブル182において、アクセス可能領域196とアクセス可能領域201にマッピングされているページについては、IOID欄192においてIOID「0021」が指定されている。
【0058】
第2変換テーブル182により特定されたページについてIOID「0021」が指定されているか否かを参照することにより、画像処理用DMAC122のアクセスが禁じられている領域へのアクセスを防ぐことができる。このように、情報処理装置100において各アクセス要求主体を一意に識別するIOIDをチェックする方法によって、管理空間にマップされているメインメモリ140やローカルメモリ144を不正アクセスから保護している。
【0059】
アクセス可能領域201は、IOID「0021」とIOID「0022」のそれぞれのアクセス要求主体について、別々のページから2重にマッピングされている。一方のページAはIOID「0021」の画像処理側DMAC122からアクセスされ、他方のページBはIOID「0022」のディスプレイコントローラ126からアクセスされる。第2変換テーブル182において、ページAにはIOID「0021」が設定され、ページBにはIOID「0022」が設定されている。したがって、IOID「0021」の画像処理側DMAC122もIOID「0022」のディスプレイコントローラ126も、アクセス可能領域201へのアクセスを許可される。ただし、画像処理側DMAC122がアクセス可能領域201へアクセスするために介するページと、ディスプレイコントローラ126が同じくアクセス可能領域201にアクセスするためのページは別々である。このように、第2変換テーブル182には、管理空間についてページ単位でIOIDごとのアクセス可否が設定される。すなわち、管理空間についてページ単位でアクセス要求主体に応じたアクセス条件を設定できるため、不正アクセスを防止しやすくなっている。
【0060】
仮にIOID「0021」の画像処理側DMAC122について、セグメント値=100、ページ値=10、オフセット値=0であるとする。また、IOID「0022」のディスプレイコントローラ126について、セグメント値=200、ページ値=10、オフセット値=200であるとする。それぞれが指定するページは、共に、ページサイズが4KBで、アクセス可能領域201内の同じ物理アドレス「23450000」を指すとする。IOID「0021」の画像処理側DMAC122は物理アドレス=23450000をアクセス対象とし、IOID「0022」のディスプレイコントローラ126は、物理アドレス=23450200(=23450000+200)をアクセス対象とする。2つの異なるアクセス要求主体は、共に、アクセス可能領域201にアクセスを許可されることになる。
【0061】
変形例として、一つのページに対して、2つ以上のIOIDを設定できてもよい。たとえば、アクセス可能領域201にマッピングされているページAについて、IOID「0021」とIOID「0022」の両方がIOID欄192に設定されているとする。このとき、IOID「0021」の画像処理側DMAC122とIOID「0022」のディスプレイコントローラ126は、共に、ページAを介してアクセス可能領域201にアクセスできる。
【0062】
仮に、アクセス要求コマンド162が指定するアドレスが物理アドレスを直接指定するものであっても、IOIDによるチェックは有効に機能する。本実施例においては、アクセス要求コマンド162が指定するアドレスを物理アドレスを直接指定するものではない論理アドレスとし、独立したアドレス空間を使用できるため、さらに不正アクセスに対する堅牢性が向上する。
【0063】
なお、アクセス可能領域196に含まれるページであっても、アクセス属性情報として書込禁止設定されているアドレス領域に対しては、正当なIOIDをもつアクセス要求主体であっても書込処理は禁止されることはもちろんである。
【0064】
図5は、コマンド送信補助装置200の機能ブロック図である。
コマンド送信補助装置200は、コマンド送信部202、IOID/セグメントアドレス追加部204およびコマンド取得部206を含む。
【0065】
コマンド取得部206は、アクセス要求主体からコマンドを取得する。アクセス要求主体は、管理空間におけるアクセス先を指し示すアドレス(以下、「原アドレス」とよぶ)とREADまたはWRITEを示すコマンド、後述するDMAリクエスタID(以下、「DMARID」とよぶ)をコマンド取得部206に渡す。DMARIDとはDMAリクエスタを識別するためのIDであるが詳しくは後述する。コマンド取得部206は、コマンドと原アドレス、DMARIDを取得する。
【0066】
IOID/セグメントアドレス追加部204は、コマンド取得部206から、コマンド、原アドレス、DMARIDを受け取り、アクセス要求コマンド162を生成する。ここで、IOID/セグメントアドレス追加部204は、アクセス要求主体を特定するためのIOIDをアクセス要求コマンド162に追加する。また、後述するセグメントアドレスをも追加する。コマンド送信部202は、こうして、少なくともIOID、アクセス先の論理アドレス、コマンド、を含むアクセス要求コマンド162をI/Oアクセス制御装置300に対して送信する。コマンド送信部202は、アクセス要求コマンド162をI/Oアクセス制御装置300に送信する。
【0067】
図6は、IOID/セグメントアドレス追加部204の処理内容を示す模式図である。
IOID/セグメントアドレス追加部204は、UC_ADDR_TRANS_UARレジスタ250、マスクコントローラ252、変換部254、US_ADDR_TRANS_TABLEレジスタ256を含む。
【0068】
アクセス要求主体が指定する原アドレスはコマンド取得部206を介してマスクコントローラ252に入力される。各アクセス要求主体にはDMARIDとよばれるIOIDとは異なるIDが付与されている。DMARIDは、コマンド送信補助装置200がアクセス要求主体を一意に識別できるIDであればよい。ただし、各アクセス要求主体のDMARIDは、製品のシステム構成や製造時期によって異なるかもしれない。たとえば、システム構成Aにおけるディスプレイコントローラ126のDMARIDは「10225」、システム構成Bにおけるディスプレイコントローラ126のDMAIDは「00452」かもしれない。また、同じシステム構成Aのディスプレイコントローラ126であっても、製造時期によってDMARIDは異なるかもしれない。これに対して、IOIDはディスプレイコントローラ126の種類や製造時期にかかわらず、ディスプレイコントローラ126を他のアクセス要求主体から識別するためのIDである。DMARIDはIOID変換テーブル260によりIOIDに変換される。システム構成Aのディスプレイコントローラ126もシステム構成Bのディスプレイコントローラ126も、IOID変換テーブル260により共にIOID「0022」に変換されてもよい。すなわち、IOIDは、情報処理装置100において、アクセス要求主体の種類を特定するIDである。IOID「0022」のアクセス要求主体とはディスプレイコントローラ126であるという対応付けは、OSにより設定可能である。
【0069】
統括制御部110のI/Oアクセス制御装置300は、先述したようにIOIDによって管理空間へのアクセス可否を判定する。I/Oアクセス制御装置300は、このIOIDの代わりにDMARIDをベースとしてアクセス可否判定してもよい。しかし、DMARIDをベースとしてアクセス制御するためには、I/Oアクセス制御装置300はアクセス要求主体としてどのようなDMAリクエスタが導入されているか、どのようなDMARIDが登録されているかを知る必要がある。これに対して、本実施例のI/Oアクセス制御装置300は、あらかじめアクセス要求主体の種類に対応づけられたIOIDをベースとして動作するため、そのIOIDによって特定されるアクセス要求主体が具体的にどのような製品であるかについて関知する必要がない。いわば、IOIDは情報処理装置100においてグローバルに特定されるIDである。IOID変換テーブル260は、さまざまなDMARIDをIOIDに変換するためのテーブルである。IOID変換テーブル260により、アクセス要求コマンド162の受信側である統括制御部110からみたシステム構成を抽象化できる。IOID変換テーブル260の変換規則はUC_ADDR_TRANS_TABLEレジスタ256を介してOSの特権ソフトウェアにより設定可能である。したがって、UC_ADDR_TRANS_TABLEレジスタ256によりIOID変換テーブル260を設定変更するだけで、システムの構成変更に対応できる。
【0070】
同様にして、セグメント選択テーブル262ではDMARIDに基づいて8ビットのセグメントアドレス(SEG_ADDR)が選択される。マスク変換テーブル264では、5ビットのDMARIDに基づいて4ビットのマスクビット(MA_MASK)が選択される。特権ソフトウェアはUC_ADDR_TRANS_TABLEレジスタ256を介してセグメント選択テーブル262やマスク変換テーブル264の値を設定できる。IOID変換テーブル260により変換されたIOIDは、先述のようにアクセス要求コマンド162の一部となる。8ビットのSEG_ADDR、4ビットのMA_MASK、アクセス要求主体が元々指定していたアクセス先の32ビットの原アドレス(ADDR)、UC_ADDR_TRANS_UARレジスタ250の28ビットの設定値がマスクコントローラ252に入力される。マスクコントローラ252は、次の図7に示す処理方法により、64ビットの中間アドレス(INT_ADDR)を生成する。IOID/セグメントアドレス追加部204は、このINT_ADDRに11ビットのIOIDとコマンドを追加してアクセス要求コマンド162を生成する。
【0071】
図7は、中間アドレス(INT_ADDR)の生成方法を示す模式図である。
中間アドレス(INT_ADDR)は64ビットであり、第0ビットから第27ビットまでにはUC_ADDR_TRANS_UARレジスタ250から出力された設定値となる。特権ソフトウェアはUC_ADDR_TRANS_UARレジスタ250も設定可能である。第28ビットから第31ビットまでの4ビットは、SEG_ADDRの上位4ビットである。第36ビットから第63ビットまでの28ビットはADDRの下位28ビットである。第32ビットから第35ビットまでは、ADDRの上位4ビットとMA_MASKの論理積である4ビット値にSEG_ADDRの下位4ビットを論理和したものである。こうして、計64ビットの中間アドレスが生成される。本実施例においては、中間アドレス(INT_ADDR)の第0ビットから第27ビットまでは予約領域であり、第28ビットから第63ビットまでがアドレス領域170となる。
【0072】
図8は、中間アドレス(INT_ADDR)のうち、アドレス領域170におけるセグメント、ページ、オフセットの関係を示す図である。
【0073】
ページサイズが4KBのときには、ページアドレス幅は16ビットとなり、ページ数は65536となる。ページサイズが64KBのときには、ページアドレス幅は12ビットとなり、ページ数は4096となる。ページサイズが1MBのときには、ページアドレス幅は8ビットとなり、ページ数は256となる。ページサイズが16MBのときには、ページアドレス幅は4ビットとなり、ページ数は16となる。使用されるページサイズは、第1変換テーブル180のページサイズ欄185によって決まる。このように、アクセス要求コマンド162においては複数のページサイズをサポートできる。
【0074】
図9は、I/Oアクセス制御装置300の機能ブロック図である。
I/Oアクセス制御装置300は、コマンド受信部302、アクセス判定部304、アドレス変換部306、キャッシュ処理部308、部分情報保持部310およびアクセス処理部312を含む。
【0075】
コマンド受信部302は、コマンド送信補助装置200から送信されたアクセス要求コマンド162を受信する。キャッシュ処理部308は、アドレス情報保持部314から図3に示した第1変換テーブル180や第2変換テーブル182の一部のデータを部分情報保持部310にロードする。
【0076】
アドレス情報保持部314は、メインメモリ140の一部として構成されてもよい。また、部分情報保持部310は、アドレス情報保持部314よりも高速にアクセスが可能な内蔵キャッシュメモリとして構成されてもよい。以下、アドレス情報保持部314に保持される第1変換テーブル180や第2変換テーブル182のことを、まとめて「アドレス変換テーブル」とよぶ。また、部分情報保持部310にロードされるアドレス変換テーブルの一部のことをアドレス変換テーブルと区別するために「部分変換テーブル」とよぶ。
【0077】
キャッシュ処理部308による部分情報保持部310とアドレス情報保持部314の間のデータ転送操作のことを「リフィル(Refill)」ともよぶ。
【0078】
アドレス変換部306は、部分情報保持部310に保持されている部分変換テーブルを参照して、論理アドレスを物理アドレスに変換する。変換方法については、図3に示した通りである。部分情報保持部310に保持される部分変換テーブルにおいて、論理アドレスを物理アドレスに変換するためのデータが含まれていないときには、キャッシュ処理部308は、該当部分を含む部分変換テーブルをアドレス情報保持部314から部分情報保持部310に新たにリフィルする。アドレス変換により特定された物理アドレスは、アクセス処理部312やアクセス判定部304に通知される。
【0079】
アクセス判定部304は、アドレス変換部306において特定されたページについて、IOIDが一致するか、すなわち、アクセスが可能な領域であるか否かを判定する。判定結果は、アクセス処理部312に通知される。アクセス処理部312は、アクセス判定部304によりアクセス許可されたことを条件として、アドレス変換部306から通知された物理アドレスに対して指定されたコマンドにより管理空間へのアクセスを実行する。このとき、アクセス判定部304は、ページについて指定されたアクセス属性情報にしたがって、アクセスを実行する。アクセス処理部312のアクセス先は、メインメモリ140やローカルメモリ144など、PU112の管理空間にマップされている記録媒体である。
【0080】
アクセス処理部312は、さまざまなアクセス要求主体のアクセス要求のうち、有効なものをキューに保持する。アクセス処理部312は、キューからアクセス要求を順次取り出して管理空間へのアクセスを実行する。アクセス処理部312は、DMAリクエスタAによるメインメモリ140へのアクセスを実行しているときに、DMAリクエスタBによるローカルメモリ144へのアクセスを実行することもできる。このようにアクセス処理部312は、複数のDMAリクエスタによる複数種類のアクセスを並列実行することができる。
【0081】
なお、I/Oアクセス制御装置300は、アドレス情報保持部314に相当する部分を含んで構成されてもよい。
【0082】
部分情報保持部310は、ラインともよばれる一定サイズのブロック単位でデータを管理する。また、アドレス情報保持部314も、一定サイズのブロック単位でデータを管理する。部分情報保持部310の各ブロックには、アドレス情報保持部314のいずれかのブロックのデータが格納される。部分情報保持部310のブロックサイズに比べて、アドレス情報保持部314のブロックサイズは大きい。そのため、部分情報保持部310のブロックには、アドレス情報保持部314のブロックのデータの一部が格納される。
【0083】
本実施例において、キャッシュ処理部308は、第1変換テーブル180についてはダイレクトマップ(Direct Mappied)方式、第2変換テーブル182については4ウェイセットアソシアティブ方式(4-way Set Associative)により、部分変換テーブルのデータを部分情報保持部310にロードする。なお、フルアソシアティブ(Filly Associative)方式のような既知の方法にてリフィルが実行されてもよい。
【0084】
本実施例における部分情報保持部310は、数種類の部分変換テーブルを保持可能である。言い換えれば、アドレス変換テーブルから複数種類の物理アドレス範囲が部分変換テーブルとして保持される。キャッシュ処理部308は、常時、所定の論理アドレス範囲に対応する部分変換テーブルを1種類以上、リフィルしておいてもよい。アドレス変換部306は、部分情報保持部310に保持されている部分変換テーブルにアドレス変換に必要なデータが含まれていたとき、すなわち、ヒットしたときには、その部分変換テーブルを参照して物理アドレスを特定する。このような場合、アドレス情報保持部314に比べて高速アクセスが可能な部分情報保持部310へのアクセスだけでアドレス変換処理を実行できる。このように、アドレス変換を実行する前にあらかじめ部分変換テーブルを部分情報保持部310にリフィルしておくことを「先読みリフィル」とよぶ。先読みリフィルは、OSの特権ソフトウェアによって実行されてもよい。
【0085】
一方、先読みリフィルによって部分情報保持部310に保持されていた部分変換テーブルではアドレス変換を実行できなかったとき、すなわち、ミスヒット時においては、キャッシュ処理部308は新たな部分変換テーブルを部分情報保持部310にリフィルする。そして、アドレス変換部306は、この新たにリフィルされた部分変換テーブルを参照して物理アドレスを特定する。このように、ミスヒットが発生したときに実行される部分変換テーブルのリフィルのことを「後読みリフィル」とよぶ。
【0086】
本実施例においては、先読みリフィルされた部分変換テーブルにおいてミスヒットが発生しても、その部分変換テーブルを部分情報保持部310に保持したまま、新たな部分変換テーブルが後読みリフィルされる。
【0087】
先読みリフィルされた部分変換テーブルは、部分情報保持部310においてロック状態におかれてもよい。ロックされている部分変換テーブルは部分情報保持部310から除去されない。そのため、新たにリフィルされた部分変換テーブルによって上書きされることがない。一方、ロックされていない部分変換テーブルは、新たなリフィルにともなって部分情報保持部310から除去されうる。このような方法により、先読みリフィルによる予測に基づくリフィルと、後読みリフィルによる受信したアクセス要求に基づくリフィルを効果的に併用できる。
【0088】
本実施例によれば、先読みリフィルという予測によるメリットを活かしつつ、ミスヒット時における後読みリフィルを実行するため、トータルとしてのヒット率を向上させやすくなる。
【0089】
たとえば、部分情報保持部310が4種類の部分変換テーブルを保持可能である場合、2種類は先読みリフィル、残り2種類は後読みリフィルされる部分変換テーブルであってもよい。先読みリフィルされた部分変換テーブルの保持領域を先読み領域、後読みリフィルされた部分変換テーブルの保持領域を後読み領域とよぶことにする。新たに先読みリフィルが実行される場合には、先読み領域の部分変換テーブルが入れ替えとなる。また、新たに後読みリフィルが実行される場合には、後読み領域の部分変換テーブルが入れ替えとなる。なお、リフィルに際して部分情報保持部310の部分変換テーブルを部分情報保持部310から除くためのアルゴリズムとしても、ラウンドロビン(Round Robin)、LRU(Least Recen)、ランダム(Random)など、既知のアルゴリズムであってよい。
【0090】
図10は、I/Oアクセス制御装置300によるアクセス制御過程を示すフローチャートである。
コマンド受信部302は、受信したアクセス要求コマンド162からIOIDを抽出する(S10)。アドレス変換部306は、論理アドレスを物理アドレスに変換する(S12)。S12の処理については、図11に関連して後に詳述する。アクセス判定部304は、アクセス要求コマンド162のIOIDが、第2変換テーブル182において特定されたページのIOIDと一致するか判定する(S14)。一致すれば(S14のY)、アクセス処理部312はアクセス属性情報にしたがって、管理空間へのアクセスを実行する(S16)。一致しなければ(S14のN)、アクセス処理部312は送信元のコマンド送信補助装置200に対してエラーを通知する(S20)。エラー通知は、OSに対してエラーメッセージとしてイベント通知されてもよい。この場合には、アクセスは拒否される。
【0091】
図11は、図10のS12におけるアドレス変換処理を詳細に示すフローチャートである。
まず、アドレス変換部306は、部分情報保持部310にリフィルされている部分変換テーブルによりアドレス変換可能か、すなわち、ヒットするか否かを判定する(S30)。ヒットすれば(S30のY)、アドレス変換部306はその部分変換テーブルを参照して物理アドレスを特定する(S34)。ミスヒットの場合(S30のN)、キャッシュ処理部308は該当する部分変換テーブルを後読みリフィルする(S32)。そして、後読みリフィルされた部分変換テーブルにより、物理アドレスを特定する(S34)。
【0092】
以上、本実施例に示す方法によれば、I/Oアクセス制御装置300にてアクセス要求主体をIOIDによって一元的に管理できる。そのため、I/Oアクセス制御装置300は、外部のDMAリクエスタからの不正なアクセスを未然に防止することができる。情報処理装置100に導入されているDMAリクエスタが、どのような製品で、どのようなポリシにてDMARIDを設定されていても、コマンド送信補助装置200は、管理下のDMAリクエスタに対して一意なIOIDを付加できる。図6に関連して説明したように特権ソフトウェアを介して、IOIDやSEG_ADDR、MA_MASKを任意に設定可能である。そのため、I/Oアクセス制御装置300は、外部にどのようなDMAリクエスタが存在しても、アクセス要求コマンド162のIOIDを参照することにより、各DMAリクエスタを統合管理できる。
【0093】
このような処理方法によれば、特権ソフトウェアがDMAリクエスタを制御するデバイスドライバをコントロール下におくことができる。従来の、カーネル層とユーザ層という2階層OSモデルの場合、デバイスドライバはユーザ層よりも下位層に位置するため、物理アドレスを直接指定して記憶領域にアクセスしていた。これに対して、本実施例のような3階層モデルであれば、論理アドレスにより管理空間にアクセスすることになる。デバイスドライバが直接記憶領域にアクセスするのではなく、特権ソフトウェアとは異なるソフトウェア階層で動作するためである。特権ソフトウェアは、カーネル層で動作するOSの種類に応じて、アドレス領域170の論理アドレスを設定する。たとえば、カーネル層の上で、OS−AとOS−Bが動作するとする。OS−A動作時においては、特権ソフトウェアはOS−Aに対応してアドレス情報保持部314の第1変換テーブル180や第2変換テーブル182変換部254の各テーブルを設定し、OS−B動作時においては、OS−Bに対応して設定してもよい。このようなマルチOS環境において、DMAリクエスタが指定する論理アドレスをOSに応じて異なる物理アドレスに変換することができる。
【0094】
デバイスドライバのプログラマにとっても、開発効率が向上するメリットがある。デバイスドライバなどI/Oデバイス160を制御するためのプログラムを作成するときには、論理アドレスを使用し、更に、IOIDというスキームにしたがっていれば、他のソフトウェアから独立していて、かつ、抽象化された環境が提供されるため、開発負担が軽減される。
【0095】
また、特権ソフトウェアが、第1変換テーブル180、第2変換テーブル182を設定すると、ページ単位で、IOIDによるアクセス可否や、アクセス属性情報によるアクセス条件を管理できるので、I/Oアクセス制御装置300にてきめ細かく管理空間のアクセス方法を制御できる。
【0096】
近年、商業用プログラムは多くのプログラマ、あるいは、多くのサードパーティから提供されるソフトウェアモジュールの集合体となっており、メモリに対するアクセス制御についてはますます精密な設計が必要となってきている。そのため、本実施例にて示した方法は、このような要請を解決する上で有効である。
【0097】
また、デバイスドライバが論理アドレスを使用できるため、ユーザ層のソフトウェアが確保した物理アドレス上ではページ単位では不連続だが、論理アドレス上では連続しているデータ転送用の領域に対して、DMAリクエスタがダイレクトに連続してデータ転送を行うことができる。
【0098】
従来の方法においては、DMAリクエスタは物理アドレスのみを使用できるため、データ転送用の領域がページ単位としては物理アドレス上において不連続であった場合、DMAのデータ転送をこの不連続領域にあわせて区切る必要があった。あるいは、あらかじめDMAリクエスタが使用するデータ転送用の領域については物理アドレスが連続となるように、OSが領域管理する必要があった。
【0099】
さらに、アドレス変換テーブルとして示した第1変換テーブル180や第2変換テーブル182は、IOIDによるアクセス可否判定やアクセス方法を決定づけるアドレス属性情報を含むことにより、アドレス変換や、アクセス可否判定などの各処理を効率的に実行できる。なぜならば、リフィルされた部分変換テーブルにおいてアドレス変換に必要なデータが含まれていれば、その部分変換テーブルによってアクセス可否判定やアクセス条件の特定といった処理が可能だからである。
【0100】
また、本実施例において、部分情報保持部310は、先読みリフィルした部分変換テーブルを保持した状態で、後読みリフィルを実行できるので、ヒット率を向上させる上でも効果がある。
【0101】
以上、本発明を実施例をもとに説明した。この実施例はあくまで例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
【0102】
なお、請求項に記載のアクセス要求主体は、本実施例においては画像処理用DMAC122などに対応する。また、請求項に記載のアクセス可否判定テーブルは、本実施例においては第2変換テーブル182の、主としてIOID欄192が対応する。請求項に記載のアドレス変換テーブル保持部は、本実施例においてはアドレス情報保持部314によりその機能を発揮される。請求項に記載されたキャッシュ処理部により部分変換テーブルがロードされるキャッシュメモリは、本実施例においては主として部分情報保持部310によりその機能が発揮される。請求項に記載のアクセス属性テーブルは、本実施例においては第2変換テーブル182の、主としてアクセス条件欄194が対応する。請求項に記載のアクセス属性テーブル保持部は、本実施例においては部分情報保持部310やアドレス情報保持部314によりその機能を発揮される。請求項に記載の統括的なソフトウェアとは、OS、あるいは、特権ソフトウェアに対応する。請求項に記載のアクセス要求主体に固有のIDについては、本実施例においてはDMARIDが相当する。
【0103】
なお、これら請求項に記載の各構成要件が果たすべき機能は、本実施例において示された各機能ブロックの単体もしくはそれらの連係によって実現されることも当業者には理解されるところである。
【0104】
本発明の好ましい態様を特定の用語を用いて説明したが、これらの記述はあくまでも説明を目的とするものであり、添付する特許請求の範囲の範囲や思想から外れない限り様々な変更・変化が可能であることは理解されるところであろう。
【産業上の利用可能性】
【0105】
本発明は、メモリ管理システムに対する技術として応用可能である。
【特許請求の範囲】
【請求項1】
外部のアクセス要求主体から、プロセッサのメモリ空間におけるデータを制御するためのコマンドを、アクセス対象となるアドレスを指定するアドレス情報および前記アクセス要求主体を識別するためのID情報と共に受信するコマンド受信部と、
前記メモリ空間におけるアドレスと、そのアドレスにて指定される領域についてアクセスを許可されるべきアクセス要求主体のID情報とを対応づけたアクセス可否判定テーブルを参照して、前記アドレス情報にて指定されたアドレスへの前記アクセス要求主体によるアクセスの可否を判定するアクセス判定部と、
前記アクセス判定部に許可されたことを条件として、前記アクセス要求主体の前記メモリ空間に対するアクセスを実行するアクセス処理部と、
を備え、
前記アクセス判定部は、前記メモリ空間における基本管理単位であるページごとに前記アクセス要求主体のアクセスの可否を判定し、
複数のアクセス要求主体が互いに異なるページをアクセス対象としてコマンドを送信する場合において、
前記アクセス処理部は、前記複数のアクセス要求主体による前記異なるページへのアクセスを時間的に並行して実行可能であることを特徴とするI/Oアクセス制御装置。
【請求項2】
前記アクセス可否判定テーブルは、前記アクセス要求主体と当該装置を統括的に制御するソフトウェアによって設定可能であることを特徴とする請求項1に記載のI/Oアクセス制御装置。
【請求項3】
前記アクセス要求主体は、DMA(Direct Memory Access)転送により、プロセッサのメモリ空間におけるデータを制御するDMAリクエスタであることを特徴とする請求項1または2に記載のI/Oアクセス制御装置。
【請求項4】
前記アクセス判定部は、サイズが異なる複数のページを使用可能であることを特徴とする請求項1から3のいずれかに記載のI/Oアクセス制御装置。
【請求項5】
前記アクセス可否判定テーブルには、異なるアクセス要求主体が共にアクセス可能なページを設定可能であることを特徴とする請求項1から4のいずれかに記載のI/Oアクセス制御装置。
【請求項6】
前記アドレス情報は前記メモリ空間のアドレスを所定のフォーマットにて変換した仮想的なアドレスである論理アドレスを示す情報であり、その論理アドレスを物理アドレスに変換するためのアドレス変換テーブルを保持するアドレス変換テーブル保持部と、
前記アドレス変換テーブルを参照して前記アドレス情報において指定された論理アドレスを物理アドレスに変換するアドレス変換部と、を更に備え、
前記アクセス処理部は、前記アドレス変換部により特定された物理アドレスに基づいて、前記アクセス要求主体によるアクセスを実行することを特徴とする請求項1から5のいずれかに記載のI/Oアクセス制御装置。
【請求項7】
前記アドレス変換テーブルは、前記アクセス要求主体と当該装置を統括的に制御するソフトウェアによって設定可能であることを特徴とする請求項6に記載のI/Oアクセス制御装置。
【請求項8】
前記アドレス変換テーブルは、前記アクセス可否判定テーブルに相当するテーブルデータをその一部として含み、論理アドレスと物理アドレスおよびそのアドレスにて指定される領域についてアクセスを許可されるべきアクセス要求主体のID情報とを対応づけたデータテーブルとして形成されたことを特徴とする請求項6または7に記載のI/Oアクセス制御装置。
【請求項9】
複数のアクセス要求主体がそれぞれ異なる論理アドレスのページを介して、同一の物理アドレス領域にアクセス可能となるように、前記アドレス変換テーブルを設定可能であることを特徴とする請求項8に記載のI/Oアクセス制御装置。
【請求項10】
前記メモリ空間におけるアドレスと、そのアドレスが指定する領域に対するアクセス条件を規定するアクセス属性情報とを対応づけたアクセス属性テーブルを保持するアクセス属性テーブル保持部と、を更に備え、
前記アクセス処理部は、前記アクセス要求主体について前記アクセス判定部によりアクセス許可されることを条件として、前記アクセス属性テーブルにて指定されたアクセス条件にしたがって前記受信されたコマンドにより指定されたアクセスを実行することを特徴とする請求項1から9のいずれかに記載のI/Oアクセス制御装置。
【請求項11】
前記アクセス属性テーブルは、前記アクセス要求主体と当該装置を統括的に制御するソフトウェアによって設定可能であることを特徴とする請求項10に記載のI/Oアクセス制御装置。
【請求項12】
前記アクセス属性テーブルには、アクセス条件としてアクセス順序強制の実行可否が指定されており、
前記アクセス処理部は、前記アクセス属性テーブルにて指定されたアクセス順序強制の実行可否にしたがって、前記受信されたコマンドにより指定されたアクセスを実行することを特徴とする請求項10に記載のI/Oアクセス制御装置。
【請求項13】
前記アドレス変換テーブル保持部は、前記アドレス情報において指定された論理アドレスの所定部分のデータに対して、所定のベース値を論理演算することにより生成されるインデックス値と物理アドレスを対応づけたデータテーブルとして前記アドレス変換テーブルを保持し、
前記アドレス変換部は、前記受信されたアドレス情報において指定された論理アドレスより前記インデックス値を算出し、そのインデックス値に応じて前記アドレス変換テーブルを参照することにより物理アドレスを特定することを特徴とする請求項6から9のいずれかに記載のI/Oアクセス制御装置。
【請求項14】
前記アドレス情報の所定部分のデータは、アクセス要求主体ごとに設定されるセグメントアドレスであることを特徴とする請求項13に記載のI/Oアクセス制御装置。
【請求項15】
外部のアクセス要求主体から、プロセッサのメモリ空間におけるデータを制御するためのコマンドを、アクセス対象となるアドレスを指定するアドレス情報および前記アクセス要求主体を識別するためのID情報と共に受信するステップと、
前記メモリ空間におけるアドレスと、そのアドレスにて指定される領域についてアクセスを許可されるべきアクセス要求主体のID情報とを対応づけたアクセス可否判定テーブルを参照して、前記メモリ空間における基本管理単位であるページごとに、前記アドレス情報にて指定されたアドレスへの前記アクセス要求主体によるアクセスの可否を判定するステップと、
アクセス許可されたことを条件として、前記アクセス要求主体の前記メモリ空間に対するアクセスを実行するステップと、
を備え、
複数のアクセス要求主体が互いに異なるページをアクセス対象としてコマンドを送信する場合において、前記複数のアクセス要求主体による前記異なるページへのアクセスを時間的に並行して実行可能であることを特徴とするI/Oアクセス制御方法。
【請求項16】
請求項15に記載の方法において、ページごとに異なるサイズを設定可能であることを特徴とするI/Oアクセス制御方法。
【請求項17】
請求項15または16に記載の方法において、前記アドレス情報は前記メモリ空間のアドレスを所定のフォーマットにて変換した仮想的なアドレスである論理アドレスを示す情報であり、その論理アドレスを物理アドレスに変換するためのアドレス変換テーブルを参照して前記アドレス情報において指定された論理アドレスを物理アドレスに変換するステップを更に備え、
前記アドレス変換テーブルにより特定された物理アドレスに基づいて、前記アクセス要求主体によるアクセスを実行することを特徴とするI/Oアクセス制御方法。
【請求項18】
請求項17に記載の方法において、前記アドレス変換テーブルは、前記アクセス可否判定テーブルに相当するテーブルデータをその一部として含み、論理アドレスと物理アドレスおよびそのアドレスにて指定される領域についてアクセスを許可されるべきアクセス要求主体のID情報とを対応づけたデータテーブルとして形成されたことを特徴とするI/Oアクセス制御方法。
【請求項19】
請求項18に記載の方法において、複数のアクセス要求主体がそれぞれ異なる論理アドレスのページを介して、同一の物理アドレス領域にアクセス可能となるように、前記アドレス変換テーブルを設定可能であることを特徴とするI/Oアクセス制御方法。
【請求項20】
請求項15から19のいずれかに記載の方法において、前記メモリ空間におけるアドレスと、そのアドレスが指定する領域に対するアクセス条件を規定するアクセス属性情報とを対応づけたアクセス属性テーブルを参照し、該当するアクセス条件にしたがって前記受信されたコマンドにより指定されたアクセスを実行するステップを更に備えることを特徴とするI/Oアクセス制御方法。
【請求項21】
請求項20に記載の方法において、前記アクセス属性テーブルには、アクセス条件としてアクセス順序強制の実行可否が指定されており、
前記アクセス属性テーブルにて指定されたアクセス順序強制の実行可否にしたがって、前記受信されたコマンドにより指定されたアクセスを実行することを特徴とするI/Oアクセス制御方法。
【請求項22】
請求項17から19のいずれかに記載の方法において、前記アドレス変換テーブルは、前記アドレス情報において指定された論理アドレスの所定部分のデータに対して、所定のベース値を論理演算することにより生成されるインデックス値と物理アドレスを対応づけたデータテーブルであって、
前記受信されたアドレス情報において指定された論理アドレスより前記インデックス値を算出し、そのインデックス値に応じて前記アドレス変換テーブルを参照することにより物理アドレスを特定することを特徴とするI/Oアクセス制御方法。
【請求項23】
請求項22に記載の方法において前記アドレス情報の所定部分のデータは、アクセス要求主体ごとに設定されるセグメントアドレスであることを特徴とするI/Oアクセス制御方法。
【請求項24】
外部のアクセス要求主体から、プロセッサのメモリ空間におけるデータを制御するためのコマンドを、アクセス対象となるアドレスを指定するアドレス情報および前記アクセス要求主体を識別するためのID情報と共に受信する機能と、
前記メモリ空間におけるアドレスと、そのアドレスにて指定される領域についてアクセスを許可されるべきアクセス要求主体のID情報とを対応づけたアクセス可否判定テーブルを参照して、前記メモリ空間における基本管理単位であるページごとに、前記アドレス情報にて指定されたアドレスへの前記アクセス要求主体によるアクセスの可否を判定する機能と、
をコンピュータに発揮させることを特徴とするI/Oアクセス制御プログラムであって、
複数のアクセス要求主体が互いに異なるページをアクセス対象としてコマンドを送信する場合において、
前記複数のアクセス要求主体による前記異なるページへのアクセスを時間的に並行して実行可能である機能であることを特徴とするI/Oアクセス制御プログラム。
【請求項25】
コンピュータにて読み取り可能な記録媒体であって、
外部のアクセス要求主体から、プロセッサのメモリ空間におけるデータを制御するためのコマンドを、アクセス対象となるアドレスを指定するアドレス情報および前記アクセス要求主体を識別するためのID情報と共に受信する機能と、
前記メモリ空間におけるアドレスと、そのアドレスにて指定される領域についてアクセスを許可されるべきアクセス要求主体のID情報とを対応づけたアクセス可否判定テーブルを参照して、前記メモリ空間における基本管理単位であるページごとに、前記アドレス情報にて指定されたアドレスへの前記アクセス要求主体によるアクセスの可否を判定する機能と、
をコンピュータに発揮させることを特徴とするI/Oアクセス制御プログラムであって、
複数のアクセス要求主体が互いに異なるページをアクセス対象としてコマンドを送信する場合において、
前記複数のアクセス要求主体による前記異なるページへのアクセスを時間的に並行して実行可能であることを特徴とするI/Oアクセス制御プログラムを格納する記録媒体。
【請求項1】
外部のアクセス要求主体から、プロセッサのメモリ空間におけるデータを制御するためのコマンドを、アクセス対象となるアドレスを指定するアドレス情報および前記アクセス要求主体を識別するためのID情報と共に受信するコマンド受信部と、
前記メモリ空間におけるアドレスと、そのアドレスにて指定される領域についてアクセスを許可されるべきアクセス要求主体のID情報とを対応づけたアクセス可否判定テーブルを参照して、前記アドレス情報にて指定されたアドレスへの前記アクセス要求主体によるアクセスの可否を判定するアクセス判定部と、
前記アクセス判定部に許可されたことを条件として、前記アクセス要求主体の前記メモリ空間に対するアクセスを実行するアクセス処理部と、
を備え、
前記アクセス判定部は、前記メモリ空間における基本管理単位であるページごとに前記アクセス要求主体のアクセスの可否を判定し、
複数のアクセス要求主体が互いに異なるページをアクセス対象としてコマンドを送信する場合において、
前記アクセス処理部は、前記複数のアクセス要求主体による前記異なるページへのアクセスを時間的に並行して実行可能であることを特徴とするI/Oアクセス制御装置。
【請求項2】
前記アクセス可否判定テーブルは、前記アクセス要求主体と当該装置を統括的に制御するソフトウェアによって設定可能であることを特徴とする請求項1に記載のI/Oアクセス制御装置。
【請求項3】
前記アクセス要求主体は、DMA(Direct Memory Access)転送により、プロセッサのメモリ空間におけるデータを制御するDMAリクエスタであることを特徴とする請求項1または2に記載のI/Oアクセス制御装置。
【請求項4】
前記アクセス判定部は、サイズが異なる複数のページを使用可能であることを特徴とする請求項1から3のいずれかに記載のI/Oアクセス制御装置。
【請求項5】
前記アクセス可否判定テーブルには、異なるアクセス要求主体が共にアクセス可能なページを設定可能であることを特徴とする請求項1から4のいずれかに記載のI/Oアクセス制御装置。
【請求項6】
前記アドレス情報は前記メモリ空間のアドレスを所定のフォーマットにて変換した仮想的なアドレスである論理アドレスを示す情報であり、その論理アドレスを物理アドレスに変換するためのアドレス変換テーブルを保持するアドレス変換テーブル保持部と、
前記アドレス変換テーブルを参照して前記アドレス情報において指定された論理アドレスを物理アドレスに変換するアドレス変換部と、を更に備え、
前記アクセス処理部は、前記アドレス変換部により特定された物理アドレスに基づいて、前記アクセス要求主体によるアクセスを実行することを特徴とする請求項1から5のいずれかに記載のI/Oアクセス制御装置。
【請求項7】
前記アドレス変換テーブルは、前記アクセス要求主体と当該装置を統括的に制御するソフトウェアによって設定可能であることを特徴とする請求項6に記載のI/Oアクセス制御装置。
【請求項8】
前記アドレス変換テーブルは、前記アクセス可否判定テーブルに相当するテーブルデータをその一部として含み、論理アドレスと物理アドレスおよびそのアドレスにて指定される領域についてアクセスを許可されるべきアクセス要求主体のID情報とを対応づけたデータテーブルとして形成されたことを特徴とする請求項6または7に記載のI/Oアクセス制御装置。
【請求項9】
複数のアクセス要求主体がそれぞれ異なる論理アドレスのページを介して、同一の物理アドレス領域にアクセス可能となるように、前記アドレス変換テーブルを設定可能であることを特徴とする請求項8に記載のI/Oアクセス制御装置。
【請求項10】
前記メモリ空間におけるアドレスと、そのアドレスが指定する領域に対するアクセス条件を規定するアクセス属性情報とを対応づけたアクセス属性テーブルを保持するアクセス属性テーブル保持部と、を更に備え、
前記アクセス処理部は、前記アクセス要求主体について前記アクセス判定部によりアクセス許可されることを条件として、前記アクセス属性テーブルにて指定されたアクセス条件にしたがって前記受信されたコマンドにより指定されたアクセスを実行することを特徴とする請求項1から9のいずれかに記載のI/Oアクセス制御装置。
【請求項11】
前記アクセス属性テーブルは、前記アクセス要求主体と当該装置を統括的に制御するソフトウェアによって設定可能であることを特徴とする請求項10に記載のI/Oアクセス制御装置。
【請求項12】
前記アクセス属性テーブルには、アクセス条件としてアクセス順序強制の実行可否が指定されており、
前記アクセス処理部は、前記アクセス属性テーブルにて指定されたアクセス順序強制の実行可否にしたがって、前記受信されたコマンドにより指定されたアクセスを実行することを特徴とする請求項10に記載のI/Oアクセス制御装置。
【請求項13】
前記アドレス変換テーブル保持部は、前記アドレス情報において指定された論理アドレスの所定部分のデータに対して、所定のベース値を論理演算することにより生成されるインデックス値と物理アドレスを対応づけたデータテーブルとして前記アドレス変換テーブルを保持し、
前記アドレス変換部は、前記受信されたアドレス情報において指定された論理アドレスより前記インデックス値を算出し、そのインデックス値に応じて前記アドレス変換テーブルを参照することにより物理アドレスを特定することを特徴とする請求項6から9のいずれかに記載のI/Oアクセス制御装置。
【請求項14】
前記アドレス情報の所定部分のデータは、アクセス要求主体ごとに設定されるセグメントアドレスであることを特徴とする請求項13に記載のI/Oアクセス制御装置。
【請求項15】
外部のアクセス要求主体から、プロセッサのメモリ空間におけるデータを制御するためのコマンドを、アクセス対象となるアドレスを指定するアドレス情報および前記アクセス要求主体を識別するためのID情報と共に受信するステップと、
前記メモリ空間におけるアドレスと、そのアドレスにて指定される領域についてアクセスを許可されるべきアクセス要求主体のID情報とを対応づけたアクセス可否判定テーブルを参照して、前記メモリ空間における基本管理単位であるページごとに、前記アドレス情報にて指定されたアドレスへの前記アクセス要求主体によるアクセスの可否を判定するステップと、
アクセス許可されたことを条件として、前記アクセス要求主体の前記メモリ空間に対するアクセスを実行するステップと、
を備え、
複数のアクセス要求主体が互いに異なるページをアクセス対象としてコマンドを送信する場合において、前記複数のアクセス要求主体による前記異なるページへのアクセスを時間的に並行して実行可能であることを特徴とするI/Oアクセス制御方法。
【請求項16】
請求項15に記載の方法において、ページごとに異なるサイズを設定可能であることを特徴とするI/Oアクセス制御方法。
【請求項17】
請求項15または16に記載の方法において、前記アドレス情報は前記メモリ空間のアドレスを所定のフォーマットにて変換した仮想的なアドレスである論理アドレスを示す情報であり、その論理アドレスを物理アドレスに変換するためのアドレス変換テーブルを参照して前記アドレス情報において指定された論理アドレスを物理アドレスに変換するステップを更に備え、
前記アドレス変換テーブルにより特定された物理アドレスに基づいて、前記アクセス要求主体によるアクセスを実行することを特徴とするI/Oアクセス制御方法。
【請求項18】
請求項17に記載の方法において、前記アドレス変換テーブルは、前記アクセス可否判定テーブルに相当するテーブルデータをその一部として含み、論理アドレスと物理アドレスおよびそのアドレスにて指定される領域についてアクセスを許可されるべきアクセス要求主体のID情報とを対応づけたデータテーブルとして形成されたことを特徴とするI/Oアクセス制御方法。
【請求項19】
請求項18に記載の方法において、複数のアクセス要求主体がそれぞれ異なる論理アドレスのページを介して、同一の物理アドレス領域にアクセス可能となるように、前記アドレス変換テーブルを設定可能であることを特徴とするI/Oアクセス制御方法。
【請求項20】
請求項15から19のいずれかに記載の方法において、前記メモリ空間におけるアドレスと、そのアドレスが指定する領域に対するアクセス条件を規定するアクセス属性情報とを対応づけたアクセス属性テーブルを参照し、該当するアクセス条件にしたがって前記受信されたコマンドにより指定されたアクセスを実行するステップを更に備えることを特徴とするI/Oアクセス制御方法。
【請求項21】
請求項20に記載の方法において、前記アクセス属性テーブルには、アクセス条件としてアクセス順序強制の実行可否が指定されており、
前記アクセス属性テーブルにて指定されたアクセス順序強制の実行可否にしたがって、前記受信されたコマンドにより指定されたアクセスを実行することを特徴とするI/Oアクセス制御方法。
【請求項22】
請求項17から19のいずれかに記載の方法において、前記アドレス変換テーブルは、前記アドレス情報において指定された論理アドレスの所定部分のデータに対して、所定のベース値を論理演算することにより生成されるインデックス値と物理アドレスを対応づけたデータテーブルであって、
前記受信されたアドレス情報において指定された論理アドレスより前記インデックス値を算出し、そのインデックス値に応じて前記アドレス変換テーブルを参照することにより物理アドレスを特定することを特徴とするI/Oアクセス制御方法。
【請求項23】
請求項22に記載の方法において前記アドレス情報の所定部分のデータは、アクセス要求主体ごとに設定されるセグメントアドレスであることを特徴とするI/Oアクセス制御方法。
【請求項24】
外部のアクセス要求主体から、プロセッサのメモリ空間におけるデータを制御するためのコマンドを、アクセス対象となるアドレスを指定するアドレス情報および前記アクセス要求主体を識別するためのID情報と共に受信する機能と、
前記メモリ空間におけるアドレスと、そのアドレスにて指定される領域についてアクセスを許可されるべきアクセス要求主体のID情報とを対応づけたアクセス可否判定テーブルを参照して、前記メモリ空間における基本管理単位であるページごとに、前記アドレス情報にて指定されたアドレスへの前記アクセス要求主体によるアクセスの可否を判定する機能と、
をコンピュータに発揮させることを特徴とするI/Oアクセス制御プログラムであって、
複数のアクセス要求主体が互いに異なるページをアクセス対象としてコマンドを送信する場合において、
前記複数のアクセス要求主体による前記異なるページへのアクセスを時間的に並行して実行可能である機能であることを特徴とするI/Oアクセス制御プログラム。
【請求項25】
コンピュータにて読み取り可能な記録媒体であって、
外部のアクセス要求主体から、プロセッサのメモリ空間におけるデータを制御するためのコマンドを、アクセス対象となるアドレスを指定するアドレス情報および前記アクセス要求主体を識別するためのID情報と共に受信する機能と、
前記メモリ空間におけるアドレスと、そのアドレスにて指定される領域についてアクセスを許可されるべきアクセス要求主体のID情報とを対応づけたアクセス可否判定テーブルを参照して、前記メモリ空間における基本管理単位であるページごとに、前記アドレス情報にて指定されたアドレスへの前記アクセス要求主体によるアクセスの可否を判定する機能と、
をコンピュータに発揮させることを特徴とするI/Oアクセス制御プログラムであって、
複数のアクセス要求主体が互いに異なるページをアクセス対象としてコマンドを送信する場合において、
前記複数のアクセス要求主体による前記異なるページへのアクセスを時間的に並行して実行可能であることを特徴とするI/Oアクセス制御プログラムを格納する記録媒体。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【公開番号】特開2011−204247(P2011−204247A)
【公開日】平成23年10月13日(2011.10.13)
【国際特許分類】
【出願番号】特願2011−97640(P2011−97640)
【出願日】平成23年4月25日(2011.4.25)
【分割の表示】特願2008−533710(P2008−533710)の分割
【原出願日】平成19年2月21日(2007.2.21)
【出願人】(310021766)株式会社ソニー・コンピュータエンタテインメント (417)
【Fターム(参考)】
【公開日】平成23年10月13日(2011.10.13)
【国際特許分類】
【出願日】平成23年4月25日(2011.4.25)
【分割の表示】特願2008−533710(P2008−533710)の分割
【原出願日】平成19年2月21日(2007.2.21)
【出願人】(310021766)株式会社ソニー・コンピュータエンタテインメント (417)
【Fターム(参考)】
[ Back to top ]