(57)【要約】【課題】  複数の処理装置の間で送受されるコマンドを効率的に制御する。【解決手段】  コマンド受信部２１０は、外部のコマンド送信主体からメモリアドレスを指定したコマンドを受信する。割当情報保持部２２８は、メモリのアドレス範囲を複数の領域に分割して、各領域にチャネルを割り当てた割当テーブルを記憶する。コマンド保持部２３０は、各チャネルに対応して設けられたキューを含み、これらの各キューは、受信されたコマンドを一時的に保持する。分配先特定部２２４は、割当テーブルを参照してメモリアドレスに応じた領域を特定し、実行部２２２は、その領域に対応するコマンド保持部２３０に受信されたコマンドを転送する。【選択図】  図３
2006350555.tif 000002
【特許請求の範囲】
【請求項１】
外部のコマンド送信主体からメモリアドレスを指定したコマンドを受信するコマンド受信部と、
受信されたコマンドのメモリアドレスに応じて、コマンドに転送のためのチャネルを割り当てるチャネル割当部と、
受信されたコマンドを一時的に保持するコマンド保持部と、
保持されているコマンドのうち、所定のチャネルを割り当てられたコマンドを他のチャネルに割り当てられたコマンドよりも優先的にコマンド実行主体に転送するコマンド転送部と、
を備えることを特徴とするコマンド転送制御装置。
【請求項２】
前記チャネル割当部は、受信されたコマンドにおけるメモリアドレスの所定の一部分に応じて割り当てるべきチャネルを特定することを特徴とする請求項１に記載のコマンド転送制御装置。
【請求項３】
前記コマンド転送部は、複数のチャネル間において所定の比率でコマンドが発行されるように、コマンドを発行すべきチャネルを選択することを特徴とする請求項１または２に記載のコマンド転送制御装置。
【請求項４】
前記チャネル割当部は、メモリのアドレス範囲を複数の領域に分割して各領域にチャネルを割り当てた割当テーブルを参照して、コマンドにチャネルを割り当てることを特徴とする請求項１から３のいずれかに記載のコマンド転送制御装置。
【請求項５】
コマンド実行主体を一意に特定しないコマンド送信主体から受信したコマンドを一時的に保持し、コマンドにて指定されたメモリアドレスに応じて、受信された複数のコマンドの転送順序を変更することを特徴とするコマンド転送制御装置。
【請求項６】
前記コマンド実行主体は、ワンチップの電子デバイスとして形成されることを特徴とする請求項１から５のいずれかに記載のコマンド転送制御装置。
【請求項７】
前記コマンド実行主体とともにワンチップの電子デバイスに含まれて形成されたことを特徴とする請求項１から６のいずれかに記載のコマンド転送制御装置。
【請求項８】
前記コマンド送信主体とは物理的に異なる電子デバイスとして形成されたことを特徴とする請求項１から７のいずれかに記載のコマンド転送制御装置。
【請求項９】
外部のコマンド送信主体からメモリアドレスを指定したコマンドを受信するステップと、
受信されたコマンドのメモリアドレスに応じて、コマンドに転送のためのチャネルを割り当てるステップと、
受信されたコマンドを一時的に保持するステップと、
保持されているコマンドのうち、所定のチャネルを割り当てられたコマンドを他のチャネルに割り当てられたコマンドよりも優先的にコマンド実行主体に転送するステップと、
を備えることを特徴とするコマンド転送制御方法。
【請求項１０】
コマンド実行主体を一意に特定しないコマンド送信主体から受信したコマンドを一時的に保持し、コマンドにて指定されたメモリアドレスに応じて、受信された複数のコマンドの転送順序を変更することを特徴とするコマンド転送制御方法。
【請求項１１】
外部のコマンド送信主体からメモリアドレスを指定したコマンドを受信する機能と、
受信されたコマンドのメモリアドレスに応じて、コマンドに転送のためのチャネルを割り当てる機能と、
受信されたコマンドを一時的に保持する機能と、
保持されているコマンドのうち、所定のチャネルを割り当てられたコマンドを他のチャネルに割り当てられたコマンドよりも優先的にコマンド実行主体に転送する機能と、
をコンピュータに発揮させることを特徴とするコマンド転送制御プログラム。
【請求項１２】
コマンド実行主体を一意に特定しないコマンド送信主体から受信したコマンドを一時的に保持し、コマンドにて指定されたメモリアドレスに応じて、受信された複数のコマンドの転送順序を変更する機能をコンピュータに発揮させることを特徴とするコマンド転送制御プログラム。
【請求項１３】
コンピュータにて読み取り可能な記録媒体であって、
外部のコマンド送信主体からメモリアドレスを指定したコマンドを受信する機能と、
受信されたコマンドのメモリアドレスに応じて、コマンドに転送のためのチャネルを割り当てる機能と、
受信されたコマンドを一時的に保持する機能と、
保持されているコマンドのうち、所定のチャネルを割り当てられたコマンドを他のチャネルに割り当てられたコマンドよりも優先的にコマンド実行主体に転送する機能と、
をコンピュータに発揮させることを特徴とするコマンド転送制御プログラム
を格納した記録媒体。
【請求項１４】
コンピュータにて読み取り可能な記録媒体であって、
コマンド実行主体を一意に特定しないコマンド送信主体から受信したコマンドを一時的に保持し、コマンドにて指定されたメモリアドレスに応じて、受信された複数のコマンドの転送順序を変更する機能をコンピュータに発揮させることを特徴とするコマンド転送制御プログラム
を格納した記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コマンド転送を制御するための技術、特に、外部から受信したコマンドの転送順序を制御するための技術、に関する。
【背景技術】
【０００２】
近年のコンピュータゲームやデジタル放送などの分野に利用されるコンピュータグラフィックス技術や画像処理技術の著しい進歩に伴い、コンピュータ、ゲーム機器、テレビなどの情報処理装置はより高精細の画像データをより高速に処理する能力を求められている。そのためには、演算処理自体の高速化が必要であることは勿論であるが、複数の処理装置間でタスクを好適に分散することも同様に重要である。
【０００３】
このとき、複数の処理装置間では、互いにタスクの実行を指示するための制御命令（以下、単に「コマンド」とよぶ）が送受され、これにより各処理装置は連係動作する。たとえば、ある処理装置Ａは、別の処理装置Ｂに対してさまざまなコマンドを送信する。処理装置Ｂは、受信したコマンドを自己の待ち行列にキューイングする。処理装置Ｂは、待ち行列のコマンドを実行しやすいものから順に実行する。このような、いわゆるコマンドキューイング（Command Queuing）とアウトオブオーダー実行(Out of Order Execution)は、処理装置Ａと処理装置Ｂを非同期的に動作させ、複数の処理装置による全体としての処理効率を高める上で有効な手法として広く採用されている。
【０００４】
処理装置Ｂにキューイングされたコマンドは、さらにいずれかのコマンド実行主体に転送される。ここでいうコマンド実行主体は、処理装置Ｂに内蔵される各種演算装置のようなハードウェア的なモジュールであってもよいし、処理装置Ｂにおいて実行されるプロセスのようなソフトウェア的なモジュールであってもよい。
処理装置Ａから送信されたコマンドは、処理装置Ｂ、さらには該当のコマンド実行主体に転送されることにより、全体としてタスクが各種の計算リソースに分散されていくことになる。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
処理装置Ｂは、コマンド実行主体ごとに複数の待ち行列を有してもよい。また、処理装置Ａは、処理装置Ｂにコマンドを送信するとき、コマンド実行主体を明示的に特定するためのＩＤ情報をあわせて送信してもよい。この場合、処理装置ＢはＩＤ情報に応じたコマンド実行主体の待ち行列に受信したコマンドを投入する。そして、各待ち行列から対応するコマンド実行主体に対して、コマンドが随時発行される。
【０００６】
コマンド実行主体ごとに独立して待ち行列を設けることにより、処理装置Ｂに管轄される各コマンド実行主体に対するコマンド発行機会を平準化しやすくなる。たとえば、あるコマンド実行主体αがビジー状態となり、対応する待ち行列にコマンドが多く蓄積されても、コマンド実行主体βに対する待ち行列は直接的な影響を受けずに済む。そのため、コマンド実行主体αの状態によって、コマンド実行主体βへのコマンド発行タイミングが過度に遅延するといった事態が起きにくくなる。
【０００７】
しかし、もともとこのようなＩＤ情報を送信する機能を持たない処理装置Ｃから処理装置Ｂがコマンドを受信する場合、処理装置Ｂは固定的に特定の待ち行列にコマンドを投入するのが一般的である。そのため、処理装置Ｂが処理装置Ｃからコマンドを受信する場合には、その特定の待ち行列にコマンドがためこまれやすくなる。すなわち、処理装置Ｂが複数の待ち行列を有していても、処理装置Ｃとの対応時にはそのメリットが活かされなくなる。このように、処理装置Ｂの機能を有効に発揮させるためには、コマンド送信主体からコマンド実行主体を特定するためのＩＤ情報が送信されることが前提条件となっている。
【０００８】
本発明は、このような課題に鑑みてなされたものであり、その主たる目的は、複数の処理装置の間で送受されるコマンドを効率的に制御するための技術、を提供することにある。
【課題を解決するための手段】
【０００９】
本発明のある態様は、コマンド転送制御装置である。
この装置は、外部のコマンド送信主体からメモリアドレスを指定したコマンドを受信するコマンド受信部と、受信されたコマンドのメモリアドレスに応じて、コマンドに転送のためのチャネルを割り当てるチャネル割当部と、受信されたコマンドを一時的に保持するコマンド保持部と、保持されているコマンドのうち、所定のチャネルを割り当てられたコマンドを他のチャネルに割り当てられたコマンドよりも優先的にコマンド実行主体に転送するコマンド転送部と、を備える。
【００１０】
ここでいう「チャネル」とは、物理回線上において実現される仮想回線であってもよい。各コマンドは、複数のチャネルのうちのいずれかに割り当てられて物理回線上を転送されてもよい。コマンド転送部は、複数のチャネル間において所定の比率でコマンドが発行されるように、コマンドを発行すべきチャネルを選択してもよい。また、この装置は、保持されているコマンド数に応じて、チャネルの割当比率を変更する割当変更部を更に備えてもよい。チャネル割当部は、保持されている複数のコマンドが所定の比率で複数のチャネルに分配されるようにチャネルを割り当ててもよい。割当変更部は複数のチャネルのうちのいずれかのチャネルを割り当てられているコマンド数が所定数以上であるときには、そのチャネル以外のチャネルが割り当てられやすくなるように割当比率を変更してもよい。これにより、特定のチャネルが過度に割り当てられないように処置できる。
【００１１】
本発明の別の態様もまた、コマンド転送制御装置である。
この装置は、コマンド実行主体を一意に特定しないコマンド送信主体から受信したコマンドを一時的に保持し、コマンドにて指定されたメモリアドレスに応じて、受信された複数のコマンドの転送順序を変更する。
【００１２】
なお、本発明を方法、装置、システム、記録媒体、コンピュータプログラムにより表現したものもまた、本発明の態様として有効である。
【発明の効果】
【００１３】
本発明によれば、複数の処理装置の間で送受されるコマンドを効率的に制御する上で効果がある。
【発明を実施するための最良の形態】
【００１４】
図１は、情報処理装置の機能ブロック図である。
情報処理装置１００は、統括制御部１１０、画像処理部１２０およびメインメモリ１４０を含む。情報処理装置１００は表示装置１５０と接続されている。表示装置１５０は、統括制御部１１０および画像処理部１２０の処理の結果得られた画像、映像を出力する。情報処理装置１００は、外部機器を制御するためのさまざまなＩ／Ｏデバイスともバス１１８を介して接続されている。情報処理装置１００と接続されるＩ／Ｏデバイスは、複数個、また、複数種類であってよい。統括制御部１１０や画像処理部１２０はそれぞれワンチップの電子デバイスとして形成されており、お互いは物理的に分離されている。情報処理装置１００は、これらの電子デバイスをさらに包含する電子デバイスとして形成される。
【００１５】
図１などにおいて、さまざまな処理を行う機能ブロックとして記載される各要素は、ハードウェア的には、ＣＰＵ（Central Processing Unit）、メモリ、その他のＬＳＩ（Large Scale Integration）で構成することができ、ソフトウェア的には、メモリにロードされた予約管理機能のあるプログラムなどによって実現される。したがって、これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、またはそれらの組合せによっていろいろな形で実現できることは当業者には理解されるところであり、いずれかに限定されるものではない。
【００１６】
また、この情報処理装置１００では、情報処理装置１００を効率よく使用するための機能、環境を提供し、装置全体を統括的に制御するオペレーティングシステム（以下、単に「ＯＳ（Operating System）」とよぶ）が実行される。ＯＳ上で複数のアプリケーションソフトウェアが実行される。
【００１７】
統括制御部１１０は、１つの主制御装置１１２と複数の副制御装置１１６を含む。副制御装置１１６および主制御装置１１２はバス１１８により相互通信可能である。主制御装置１１２は、各アプリケーションにおける基本処理単位としてのタスクを各副制御装置１１６に割り当てる。あるいは、主制御装置１１２自身がタスクを実行してもよい。副制御装置１１６がそれぞれ割り当てられたタスクを実行することにより、複数のタスクが並列処理される。
【００１８】
以下、タスクの割り当て処理を含む主制御装置１１２により実行される処理のことを「メインプロセス」、副制御装置１１６により実行される処理のことを「サブプロセス」とよぶ。主制御装置１１２は、ユーザインタフェースに関する処理のように比較的優先度が高い情報処理装置１００全体を統括する処理を実行する。これに対して、副制御装置１１６は、比較的優先度が低いバックグラウンドで実行される計算のようにメインプロセスの下請け的な処理を実行する。
【００１９】
主制御装置１１２や副制御装置１１６に含まれる図示しないＤＭＡＣ（Direct Memory Access Controller）は、メインメモリ１４０や画像処理部１２０に内蔵されるグラフィックスメモリ１２８との間のデータ転送、データ退避などを主制御装置１１２または副制御装置１１６からの命令によって制御する。
【００２０】
メインメモリ１４０は、主に統括制御部１１０によって使用される記憶領域である。メインメモリ１４０には、タスクの実行状態に関連するデータが格納される。たとえば、統括制御部１１０によりコンピュータグラフィックスに関する座標計算が実行されて得られた座標データなどが一時的に格納される。また、このメインメモリ１４０には、画像処理部１２０により生成されたデータが退避される場合もある。
【００２１】
画像処理部１２０は、画像処理を専用に実行するユニットであり、たとえば、レンダリング処理を実行する。画像処理部１２０は、統括制御部１１０からの指示により画像処理を実行する。画像処理部１２０は、統括制御部１１０により処理されるそれぞれのタスクに関連する画像処理を行い、生成した画像、映像を表示装置１５０に出力する。画像処理部１２０は、複数の画像処理を時分割して並列的に実行してもよい。
【００２２】
画像処理部１２０は、グラフィックスメモリ１２８、演算ユニット１３０、ディスプレイコントローラ１２６、制御ブロック１２４、画像処理側ＤＭＡＣ１２２およびコマンド転送制御装置２００を含む。これらのユニット同士も、バス１１８で接続されており、各ユニット間で相互通信可能である。
【００２３】
グラフィックスメモリ１２８は、画像処理部１２０により使用、管理されるグラフィックスデータを記憶するためのメモリ領域である。グラフィックスメモリ１２８には、画像フレームデータが格納されるフレームバッファやＺバッファに加えて、画像フレームデータを描画する際に参照される基本データである頂点データ、テクスチャデータ、カラールックアップテーブルなどのデータに対応する領域が用意されている。
【００２４】
制御ブロック１２４は、画像処理部１２０全体を制御するブロックである。制御ブロック１２４は、演算ユニット１３０、グラフィックスメモリ１２８、ディスプレイコントローラ１２６を統括的に制御し、各ユニット間のデータ転送の同期管理やタイマー管理等を行う。
【００２５】
画像処理側ＤＭＡＣ１２２は、統括制御部１１０やメインメモリ１４０とグラフィックスメモリ１２８の間のデータ転送、データ退避などを制御ブロック１２４からの命令によって制御する。
【００２６】
ディスプレイコントローラ１２６は、水平および垂直同期信号を生成し、表示装置１５０の表示タイミングにしたがって、グラフィックスメモリ１２８に格納されるフレームバッファから画像フレームデータのピクセルデータをライン状に順次読み込んでいく。さらにディスプレイコントローラ１２６は、ライン状に読み込まれたピクセルデータを、ＲＧＢ（Red-Green-Blue）のカラー値からなるデジタルデータから表示装置１５０に対応したフォーマットに変換して出力する。
【００２７】
演算ユニット１３０は、制御ブロック１２４からの命令にしたがって、グラフィックスに関するさまざまな演算処理を行う。その処理の一例としては、３次元モデリングデータをもとに座標変換、陰面消去、シェーディングを行って画像フレームデータを作成し、フレームバッファに書き込む一連のレンダリング処理などが挙げられる。
演算ユニット１３０は、特に３次元グラフィックスに関する処理を高速に行うために、ラスタライザ１３２、シェーダユニット１３４、テクスチャユニット１３６などの機能ブロックを含む。
【００２８】
ラスタライザ１３２は、描画する基本物体（以下、「プリミティブ」とよぶ）の頂点データを統括制御部１１０から受け取り、３次元空間上のプリミティブを投影変換により描画平面上の図形に変換するビュー変換を行う。さらに、描画平面上の図形を、描画平面の水平方向に沿ってスキャンしながら、一列ごとに量子化されたピクセルに変換するラスタ処理を行う。このラスタライザ１３２によってプリミティブがピクセル展開されて、各ピクセルごとにピクセル情報を算出する。このピクセル情報には、ＲＧＢカラー値、透明度を表すα値、視点からの奥行きを表すＺ値が含まれる。
【００２９】
ラスタライザ１３２は、スキャンラインに沿って所定の大きさのピクセル領域を生成し、シェーダユニット１３４、テクスチャユニット１３６へと出力する。ラスタライザ１３２から出力されるピクセル領域は、一度キューにスタックされ、シェーダユニット１３４はスタックされたピクセル領域を順に処理していく。
【００３０】
シェーダユニット１３４は、ラスタライザ１３２により算出されたピクセル情報をもとにシェーディング処理を行い、テクスチャユニット１３６により得られたテクセル情報をもとに、テクスチャマッピング後のピクセル色を決定し、グラフィックスメモリ１２８内のフレームバッファにシェーディング処理後の画像フレームデータを書き込む。さらにシェーダユニット１３４はフレームバッファに書き込まれた画像フレームデータに対してフォギング、アルファブレンディング等の処理を行い最終的な描画色を決定してフレームバッファの画像フレームデータを更新する。
【００３１】
テクスチャユニット１３６は、シェーダユニット１３４からテクスチャデータを指定するパラメータを受け取り、要求されたテクスチャデータをグラフィックスメモリ１２８内のテクスチャバッファを読み出し、所定の処理を行った後にシェーダユニット１３４に対して出力する。
【００３２】
画像処理部１２０はプリミティブの頂点データなど画像生成のために必要な基本情報や画像生成の開始指示を統括制御部１１０から与えられると、統括制御部１１０とは独立して画像処理を実行する。画像処理部１２０により生成されたデータはグラフィックスメモリ１２８やメインメモリ１４０に転送される。
【００３３】
画像処理部１２０に含まれるコマンド転送制御装置２００は、統括制御部１１０から画像処理部１２０に対して送信されたコマンドを、画像処理部１２０内の各ユニットに発行する。コマンド転送制御装置２００は、統括制御部１１０の主制御装置１１２や副制御装置１１６のみならず、Ｉ／Ｏデバイスのようなその他のデバイスから送信されるコマンドも受信する。すなわち、コマンド転送制御装置２００は外部のコマンド送信主体から画像処理部１２０に対して送信されたコマンドをまとめて受信し、コマンド実行主体である制御ブロック１２４やディスプレイコントローラ１２６などの各種ユニットに対して受信したコマンドを発行する。画像処理部１２０に含まれる各ユニットは、コマンド転送制御装置２００から発行されたコマンドによって指示された各種のタスクを実行する。これらの各ユニットは、画像処理部１２０に包含されるワンチップの電子デバイスとして形成されている。本実施例において「コマンド」とは、コマンド実行主体による制御内容を直接規定するものやデータ転送を指示するものであってもよいが、コマンド実行主体による制御のためのパラメータであってもよい。コマンドは、バス１１８上においてパケット化されて転送されることになる。
コマンド転送制御装置２００の詳細については、図３に関連して詳述する。
【００３４】
図２は、統括制御部からみたメモリアドレスのイメージを示す模式図である。
情報処理装置１００の記憶領域は、メインメモリ１４０やグラフィックスメモリ１２８のほかにも、主制御装置１１２や副制御装置１１６、画像処理部１２０の各ユニットが内蔵するキャッシュメモリ、その他のＩ／Ｏデバイスが内蔵するメモリなどの総合として構成される。統括制御部１１０上で実行されるプロセスは、これらの物理メモリに対して仮想アドレスによりアクセスできる。同図は、統括制御部１１０で実行されるプロセスからみた仮想アドレス空間を模式的に示したものである。
【００３５】
同図に示す画像処理部アドレス領域１６０は、統括制御部１１０にて実行される上記プロセスからみて画像処理部１２０を制御するために割り当てられたアドレス範囲である。統括制御部アドレス領域１６２は、統括制御部１１０を制御するために割り当てられたアドレス範囲である。メインメモリアドレス領域１６４は、メインメモリ１４０を制御するために割り当てられたアドレス範囲である。
【００３６】
統括制御部１１０にて実行される上記プロセスは、コマンド処理結果の書き込み先をアドレス指定した上で各種コマンドを画像処理部１２０に送信する。このときのアドレスは、統括制御部１１０が内蔵する図示しないＭＭＵ（Memory Management Unit）によって、物理アドレスに変換される。したがって、画像処理部１２０が統括制御部１１０から受信するコマンドには物理アドレスの指定がなされている。この指定された物理アドレスは、グラフィックスメモリ１２８やメインメモリ１４０に対応するかもしれないし、あるいは、画像処理部１２０や統括制御部１１０に内蔵されるさまざまなローカルメモリに対応するかもしれない。
【００３７】
図３は、コマンド転送制御装置の機能ブロック図である。
コマンド転送制御装置２００は、コマンド受信部２１０、分配部２２０、コマンド保持部２３０およびコマンド発行部２４０を含む。
コマンド受信部２１０は、統括制御部１１０などのコマンド送信主体から各種コマンドを受信する。分配部２２０は、受信されたコマンドをコマンド実行主体に転送するためのチャネルを特定する。バス１１８自体は単一の物理回線であるが、バス１１８は複数のストリームに分けてコマンドを転送することで、単一物理回線において複数の仮想回線を実現できる。分配部２２０は、受信されたコマンドを複数種類に分類する。いいかえれば、複数種類の転送属性が定義された仮想回線であるチャネルのいずれかに、各コマンドは割り当られ、そのチャネルの転送属性に応じた転送方法によって、コマンドは各コマンド実行主体に転送される。
【００３８】
コマンド保持部２３０は、割り当てられたチャネルごとに、コマンドを別々に保持する。コマンド発行部２４０は、コマンド保持部２３０に保持されているコマンドを、該当するチャネルを介してコマンド実行主体に対して発行する。
【００３９】
分配部２２０は、実行部２２２、分配先特定部２２４および割当情報保持部２２８を含む。
コマンドにて指定される物理アドレスの範囲は複数の領域に分割されている。割当情報保持部２２８は、これらの各領域がどのように分割されているかを示す割当情報をテーブルデータ（以下、「割当テーブル」とよぶ）として保持する。たとえば、アドレス「０ｘ０００００〜０ｘ０５０００」までは第１領域、アドレス「０ｘ０５００１〜０ｘ１８０００」までは第２領域、というように、各領域は開始アドレスと終端アドレスによって範囲を特定されてもよい。そして、各領域がそのままいずれかのチャネルに対応する。コマンド保持部２３０は、これらの各チャネルに応じて、複数のキューを備える。たとえば、第１キュー２３２ａはチャネル１で第１領域、第２キュー２３２ｂはチャネル２で第２領域、・・・、第ｎキュー２３２ｃはチャネルｎで第ｎ領域というように割り当てられている。このように、キューと領域、チャネルは対応関係にある。
【００４０】
分配先特定部２２４は、コマンド受信部２１０が受信したコマンドにおいて書き込み先指定された物理アドレスがどの領域に属するか、ひいては、どのチャネルを割り当てるべきかを割当テーブルを参照して特定する。実行部２２２は、この特定されたチャネルに対応して、コマンド保持部２３０のいずれかのキューにコマンドを転送する。こうして、コマンド保持部２３０の各キューにコマンドが分配される。
コマンド発行部２４０は、コマンド保持部２３０のいずれかのキューを選択し、そのキューのコマンドを取り出して対応するチャネルにて、コマンド実行主体に転送する。
【００４１】
ここで、さまざまな転送属性に対応するチャネルについて更に説明しておく。
たとえば、チャネルＡ、Ｂ、Ｃの３つのチャネルが定義されているとする。チャネルＡは、低レイテンシ・低ジッタが要求され、転送量の変動が小さいビデオデータ転送のためのチャネルであるとする。また、チャネルＢは、チャネルＡよりも大容量で転送量の変動が大きいバーテックスやテクスチャデータの転送に使用されるチャネルである。チャネルＣは、転送量は少ないものの転送オーダ管理が必要とされるグラフィックス処理制御命令の転送のためのチャネルである。
【００４２】
ここで、チャネルＡ、Ｂ、Ｃの順に、コマンド転送優先順位が設定されているとする。また、チャネルＡ、Ｂ、Ｃの転送比率が２：５：３に設定されているとする。一例として、コマンド発行部２４０は、まず、チャネルＡに対応するキューからコマンドを１つ取り出してコマンド実行主体に転送する。チャネルＡに２つのコマンドを転送させると、次はチャネルＢに対応するキューからコマンドが転送される。チャネルＢに５つのコマンドが転送されると、次はチャネルＣに対応するキューからコマンドが転送される。チャネルＣに３つのコマンドが転送されると、再び、チャネルＡに対応するキューからコマンドが取り出される。このように、各チャネル間における転送優先順位と転送比率に基づいて、コマンド発行部２４０は、各チャネルにコマンドを転送する。
また、チャネルＣのような転送オーダ管理がなされる、すなわち、インオーダー処理がなされるチャネルについての転送制御方法としては、以下の２つを挙げることができる。
【００４３】
１．チャネルＣにコマンドを転送するときには、チャネルＣに対応するキューにコマンドが無くなるまで、チャネルＣのコマンド転送を継続する。すなわち、チャネルＣが選択されると、チャネルＣに対応するキューにコマンドが無くなるまで、チャネルＡやチャネルＢは転送対象チャネルとして選択しない。
【００４４】
２．チャネルＡ、Ｂに対して外部のコマンド送信主体がコマンドを発行した順序と、それらのコマンドが実際にコマンド実行主体に転送される順序は必ずしも一致しない。これに対して、チャネルＣの場合には、コマンドが発行された順序と転送する順序の一致を保証するように制御する。この場合には、１．と異なりチャネルＣについてのコマンド転送によってチャネルＡ、Ｂについてのコマンド転送がブロックされることはない。
【００４５】
このように、各チャネルについてはインオーダ転送を保証するか否かといった各種の転送属性が設定されている。このような多様な転送属性による転送順序制御によって、バス１１８上において性質の異なる複数の回線が実現されているのと同様の制御を実現することができる。
【００４６】
従来、統括制御部１１０のようにコマンド送信主体が、コマンド実行主体を特定するためのＩＤ情報を送信する機能を持たない場合、コマンド保持部２３０が複数のキューを有していても、分配部２２０は固定的に特定のキュー（以下、「メインキュー」とよぶ）にコマンドを転送するという方法が一般的であった。そのため、このような場合、必然的に、メインキューにばかりコマンドが蓄積しやすくなる。いいかえれば、コマンド送信主体がコマンド実行主体を特定する機能を持たない限り、このような従来型のコマンド転送制御装置２００は本来の機能を発揮できなくなってしまうというという難点があった。
【００４７】
より具体的な例として、統括制御部１１０からグラフィックスメモリ１２８に対して、連続的に画像データ転送を指示するコマンドが送信された後に、画像処理部１２０のいずれかのユニットの設定を変更するためのコマンドが送信されたとする。このとき、メインキューに画像転送コマンドがたまっている状態で、設定変更コマンドが新にメインキューに保持される。そのため、設定変更コマンドは実行にリアルタイム性が要求されるコマンドであっても、大量の画像転送コマンドのために実行が阻害されるという弊害が生じ得る。
【００４８】
これに対して、本実施例に示したコマンド転送制御装置２００は、コマンドにて指定される物理アドレスに応じて、コマンドを複数のキューに分配する。そのため、コマンド送信主体がコマンド実行主体を明示的に特定しなくても、コマンド保持部２３０が備える複数のキューが有効に活用されることになる。
【００４９】
また、本実施例に示したコマンド転送制御装置２００によれば、単一のバス１１８をあたかも複数の仮想回線のように利用することができる。コマンドにおいて指示される書込先アドレスによって、画像データ転送コマンドであるか、設定変更コマンドであるかといったコマンドの性格をある程度特定できることが多い。そのような知見から、コマンド転送制御装置２００はコマンドにて指定される物理アドレスに応じて、コマンド転送のためのチャネルを特定している。そのため、コマンド送信主体側で特に新たな機能を設けなくとも、コマンド転送制御装置２００が複数のチャネルを使ってコマンド転送できる。
【００５０】
なお、分配先特定部２２４は、コマンドにて指定されたアドレスのすべてを参照して領域を特定する必要はなく、アドレスの一部、たとえば、上位数ビットに基づいて、領域特定してもよい。たとえば、アドレスが６４ビットサイズで指定されるときには、このうち下位４２ビットのみ実デバイスのマッピングで使用し、残り上位１２ビットだけを取り出して分配先特定部２２４で使用してもよい。割当テーブルは、このように、アドレスの上位数ビットに応じて領域を対応付けしてもよい。特に取り扱うべきアドレスのビットサイズが大きいときには、このようなやり方は分配先特定部２２４の処理負荷を軽減する上で効果的である。
【００５１】
分配先特定部２２４は、必ずしも、書込先のアドレスに応じて固定的にチャネルを割り当てなくてもよい。たとえば、コマンド保持部２３０のうちの第１キュー２３２ａに保持されるコマンド数と、第２キュー２３２ｂに保持されるコマンド数の比が所定値、たとえば、５：１以上とならないように、第１キュー２３２ａおよび第２キュー２３２ｂに割り当てられるべきアドレスの範囲を動的に変更してもよい。このようにして、過度に特定のキューにコマンドが蓄積されないように制御してもよい。
【００５２】
なお、本実施例においては、コマンド実行主体は画像処理部１２０内におけるハードウェア的に独立したユニットであるとして説明したが、たとえば、画像処理部１２０において実行されるプロセスやスレッドのようなソフトウェア的な実行単位であってもよい。
【００５３】
以上、本発明を実施例をもとに説明した。この実施例はあくまで例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
【００５４】
なお、請求項に記載のチャネル割当部の主たる機能は、本実施例においては、主として分配部２２０により発揮される。また、請求項に記載のコマンド保持部の機能は、本実施例においてはコマンド保持部２３０により発揮されるが、その主たる機能はコマンド保持部２３０に含まれる各キューによって発揮されるといえる。また、請求項に記載のコマンド転送部は、本実施例においては、コマンド発行部２４０により発揮されるといえる。これら請求項に記載の各構成要件が果たすべき機能は、本実施例において示された各機能ブロックの単体もしくはそれらの連係によって実現されることも当業者には理解されるところである。
【図面の簡単な説明】
【００５５】
【図１】情報処理装置の機能ブロック図である。
【図２】統括制御部からみたメモリアドレスのイメージを示す模式図である。
【図３】コマンド転送制御装置の機能ブロック図である。
【符号の説明】
【００５６】
１００  情報処理装置、  １１０  統括制御部、  １１２  主制御装置、  １１６  副制御装置、  １１８  バス、  １２０  画像処理部、  １２２  画像処理側ＤＭＡＣ、  １２４  制御ブロック、  １２６  ディスプレイコントローラ、  １２８  グラフィックスメモリ、  １３０  演算ユニット、  １３２  ラスタライザ、  １３４  シェーダユニット、  １３６  テクスチャユニット、  １４０  メインメモリ、  １５０  表示装置、  １６０  画像処理部アドレス領域、  １６２  統括制御部アドレス領域、  １６４  メインメモリアドレス領域、  ２００  コマンド転送制御装置、  ２１０  コマンド受信部、  ２２０  分配部、  ２２２  実行部、  ２２４  分配先特定部、  ２２８  割当情報保持部、  ２３０  コマンド保持部、  ２４０  コマンド発行部。
【図１】
2006350555.tif 000003
【図２】
2006350555.tif 000004
【図３】
2006350555.tif 000005