説明

グラフィックプロセッサ、情報処理装置

【課題】 情報処理を効率的に行うコマンド体系を提供する。
【解決手段】 情報処理装置1000は、装置全体を統括的に制御するメインプロセッサ200と、画像処理演算を行うグラフィックプロセッサ100と、メインメモリ50を備える。グラフィックプロセッサ100は、該グラフィックプロセッサを統括的に制御する制御ユニット20と、この制御ユニットを経由して与えられる命令にしたがったグラフィック処理を実行するグラフィック演算ユニット40とを備える。制御ユニット20は、メインプロセッサ200とデータの授受を行うインタフェイス部22と、メインプロセッサから受け取ったデータに含まれ、非グラフィック処理系命令の集合からなる命令体系を解析する命令解析部24と、解析された命令を実行する実行部26を備える。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、グラフィックプロセッサまたは情報処理装置に関し、特に画像処理を含む情報処理技術に関する。
【背景技術】
【0002】
近年のコンピュータグラフィックス技術の発達に伴い、大型計算機や、パーソナルコンピュータ、ゲーム機器などの情報処理装置から出力される画像データは、ますます複雑化、高度化している。そこで、このような情報処理装置では、通常の演算処理を行うメインプロセッサとは別に、画像処理専用のグラフィックプロセッサを搭載し、メインプロセッサを画像処理から解放して、システムのオーバーヘッドの解消を図っている。
【0003】
これらの情報処理装置において高性能な演算処理を実現するためには、メインプロセッサをマルチプロセッサで構成することが有効である。マルチプロセッサでは、複数のタスクを各プロセッサに割り当て並列処理を実行して演算速度を高める。一方、グラフィックプロセッサは、メインプロセッサが処理する複数のタスクに対応した画像処理を、メインプロセッサの高速演算に対応させて行う必要がある。
【発明の開示】
【発明が解決しようとする課題】
【0004】
一般に、グラフィックプロセッサにおける画像処理は、メインプロセッサで実行されるアプリケーションに関わりなく動作する。しかしながら、アプリケーションの実行の上で必要となる画像処理に協調させてグラフィックプロセッサの動作を制御することができれば、情報処理装置における処理効率の向上に寄与することもあり得る。
【0005】
本発明はこのような課題に鑑みてなされたものであり、その目的は画像処理演算を含む情報処理を効率的に行う技術を提供することにある。
【課題を解決するための手段】
【0006】
本発明のある態様はグラフィックプロセッサに関する。このグラフィックプロセッサは、グラフィックプロセッサを統括的に制御する制御ユニットと、この制御ユニットを経由して与えられる命令にしたがったグラフィック処理を実行するグラフィックユニットとを備える。そして、制御ユニットは、外部とデータの授受を行うインタフェイス部と、外部から受け取ったデータに含まれ、非グラフィック処理系命令の集合からなる命令体系を解析する命令解析部と、解析された命令を実行する実行部とを備えることを特徴とする。
【0007】
ここで、「非グラフィック処理系命令」とは、グラフィックユニットにおけるグラフィック処理の内容が明示された命令ではない、データの転送、グラフィック処理の開始または処理の待機、終了などが明示されている命令のことをいう。この態様によれば、ユーザが非グラフィック処理系命令を組み合わせることによって、グラフィックプロセッサの動作を制御し処理効率を向上させることができる。
【0008】
命令体系は、グラフィックユニットで実行されるグラフィック処理をカプセル化して扱う体系であってもよい。ここで、「カプセル化して扱う体系」とは、データと、このデータ対する操作を行う手続きが一緒に含まれている体系のことをいう。
命令体系は、グラフィックユニットで実行されるグラフィック処理に関与するデータを直接操作しない命令から構成されていてもよい。ここで、「グラフィック処理に関与するデータ」には、テクスチャデータ、カラーデータ、α値データ、Z値データ、頂点データなどのほか、グラフィックユニットにおけるシェーダプログラムなどのプログラムも含まれる。これによって、非グラフィック処理系命令によりグラフィック処理の結果に影響を及ぼすことが回避される。
【0009】
命令体系は、グラフィックユニットで実行されるグラフィック処理の対象を明示し、処理内容を明示しない命令から構成されていてもよい。「グラフィック処理の対象」とは、実施の形態におけるオブジェクトを指し、「処理内容」とはグラフィックユニットにおけるシェーダプログラムなどのプログラムを指す。
さらに、命令体系は、グラフィックユニットで実行されるグラフィック処理の内容に依存しない大域動作指示命令であってもよい。「大域動作指示命令」とは、グラフィックユニット上で実行されるシェーダプログラムなどのプログラムに影響されない、グラフィックユニットの動作制御に関する命令のことをいう。これによって、グラフィックユニット上で実行されるプログラムを変更しても、命令体系を修正する必要がなくなる。
【0010】
命令解析部は、メインプロセッサから受け取ったデータのうち、グラフィック処理に必要なデータをグラフィックユニットのアクセス可能な記憶領域へ転送するようにしてもよい。グラフィック処理に必要なデータにはテクスチャデータ、カラーデータ、α値データ、Z値データ、頂点データなどである。この記憶領域は、グラフィックユニットに含まれていても、グラフィックユニットの外部に存在してもよい。
【0011】
本発明の別の態様は、情報処理装置に関する。この情報処理装置は、装置全体を統括的に制御するメインプロセッサと、画像処理演算を行うグラフィックプロセッサとを備える。グラフィックプロセッサは、該グラフィックプロセッサを統括的に制御する制御ユニットと、この制御ユニットを経由して与えられる命令にしたがったグラフィック処理を実行するグラフィックユニットとを備える。そして、制御ユニットは、メインプロセッサとデータの授受を行うインタフェイス部と、メインプロセッサから受け取ったデータに含まれ、非グラフィック処理系命令の集合からなる命令体系を解析する命令解析部と、解析された命令を実行する実行部とを備えることを特徴とする。
【0012】
この態様によっても、ユーザが非グラフィック処理系命令を組み合わせることによって、グラフィックプロセッサの動作を制御し処理効率を向上させることができる。
【0013】
なお、以上の構成要素の任意の組合せや、本発明の表現を方法、装置、システム、コンピュータプログラムなどの間で変換したものもまた、本発明の態様として有効である。
【発明の効果】
【0014】
本発明によれば、画像処理を実行するグラフィックプロセッサの動作を少数のコマンドで制御することができる。
【発明を実施するための最良の形態】
【0015】
図1は、本発明の実施の形態に係る情報処理装置1000の構成を示すブロック図である。情報処理装置1000は、グラフィックプロセッサ100、メインプロセッサ200、メインメモリ50およびグラフィックメモリ10を含む。情報処理装置1000は、表示装置52と接続されている。なお、図1において、様々な処理を行う機能ブロックとして記載される各要素は、ハードウェア的には、CPU、メモリ、その他のLSIで構成することができ、ソフトウェア的には、メモリにロードされたプログラムなどによって実現される。したがって、これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、またはそれらの組合せによっていろいろな形で実現できることは当業者には理解されるところであり、いずれかに限定されるものではない。
【0016】
この情報処理装置1000では、情報処理装置1000を効率よく使用するための機能、環境を提供し、装置全体を統括的に制御するオペレーティングシステム(以下、OSと略す)が実行される。そのOS上でアプリケーションソフトウェア(以下、単にアプリケーションという)が実行される。本実施の形態においては、メインプロセッサ200とグラフィックプロセッサ100は協調的に演算処理を行う。グラフィックプロセッサ100は、メインプロセッサ200により処理されるそれぞれのタスクに関連する画像処理を行い、生成した画像、映像を表示装置52に出力し、または図示しない記憶装置に記憶する。メインプロセッサ200とグラフィックプロセッサ100との協調動作については後述する。
【0017】
メインプロセッサ200は、複数のサブプロセッサ30と管理プロセッサ32と制御側DMA(Direct Memory Access)コントローラ34とを含む。サブプロセッサ30、管理プロセッサ32および制御側DMAコントローラ34はバス36により相互通信が可能である。管理プロセッサ32は、アプリケーションに対応するタスクを時分割し、タイムスライス毎に各アプリケーションに対応するタスクをサブプロセッサ30に割り当て、演算処理を並列で行うように制御する。例えば、あるタイムスライスにおいて処理されるアプリケーションに対応するタスクが三次元コンピュータグラフィックスの画像処理に関するものである場合には、ジオメトリ処理を実行する。各サブプロセッサ30において画像処理の必要が発生した場合には、ジオメトリ処理後の頂点データやパラメータデータが各サブプロセッサ30からグラフィックメモリ10へ転送される。
【0018】
制御側DMAコントローラ34は、メインメモリ50やグラフィックプロセッサ100との間のデータ転送、データ退避などをサブプロセッサ30または管理プロセッサ32からのコマンドによって制御する。
【0019】
メインメモリ50は、主にメインプロセッサ200によって使用される記憶領域である。このメインメモリ50には、メインプロセッサ200によりコンピュータグラフィックスに関するタスクを処理して得られたデータやプログラムなどが一時的に格納される。また、このメインメモリ50には、グラフィックプロセッサ100による演算処理の結果得られたデータが退避して格納される場合もある。
【0020】
グラフィックメモリ10は、グラフィックプロセッサ100により使用、管理されるグラフィックに関するデータ専用のメモリ領域であって、画像フレームデータが格納されるフレームバッファ(図示せず)などに加えて、画像フレームデータを描画する際に参照される基本データである頂点データを格納するバッファ(図示せず)、および、テクスチャデータが一時的に格納される2つのコンテクストバッファ12を備えている。
【0021】
グラフィックプロセッサ100は、画像に関する処理、例えばレンダリング処理などを専用に実行する。グラフィックプロセッサ100は、ディスプレイコントローラ18、制御ユニット20、画像処理側DMAコントローラ28、グラフィック演算ユニット40、および内部レジスタ54を含む。これらのブロック同士はバス36で接続されており、各ブロック間でデータ信号の送受が行われる。
【0022】
グラフィック演算ユニット40は、外部から与えられる命令にしたがって、グラフィックに関する様々な演算処理を行う。その処理の一例としては、三次元モデリングデータをもとに座標変換、陰面消去、シェーディングを行って画像フレームデータを作成し、グラフィックメモリ10内のフレームバッファに書き込む一連のレンダリング処理などが挙げられる。グラフィック演算ユニット40は、特に三次元グラフィックスに関する処理を高速に行うために、ラスタライザ42、シェーダユニット44、テクスチャユニット46などの機能ブロックを含んでいる。
【0023】
ラスタライザ42は、描画するオブジェクトの頂点データを受け取り、三次元空間上のオブジェクトを投影変換により描画平面上の図形に変換するビュー変換を行う。さらに、描画平面上の図形を、描画平面の水平方向に沿ってスキャンしながら、一列ごとに量子化されたピクセルに変換するラスター処理を行う。このラスタライザ42によってオブジェクトがピクセル展開されて、各ピクセル毎にピクセル情報を算出する。このピクセル情報には、RGBカラー値、透明度を表すα値、視点からの奥行きを表すZ値が含まれる。
【0024】
ラスタライザ42は、スキャンラインに沿って所定の大きさのピクセル領域を生成し、シェーダユニット44、テクスチャユニット46へと出力する。ラスタライザ42から出力されるピクセル領域は、一度キューにスタックされ、シェーダユニット44はスタックされたピクセル領域を順に処理していく。
【0025】
シェーダユニット44は、ラスタライザ42により算出されたピクセル情報をもとにシェーディング処理を行い、テクスチャユニット46により得られたテクセル情報をもとに、テクスチャマッピング後のピクセル色を決定し、グラフィックメモリ10内のフレームバッファにシェーディング処理後の画像フレームデータを書き込む。さらにシェーダユニット44は、フレームバッファに書き込まれた画像フレームデータに対してフォギング、アルファブレンディング等の処理を行い最終的な描画色を決定してフレームバッファの画像フレームデータを更新する。
【0026】
テクスチャユニット46は、シェーダユニット44からテクスチャデータを指定するパラメータを受け取り、要求されたテクスチャデータをグラフィックメモリ10内のバッファ12から読み出し、所定の処理を行った後にシェーダユニット44に対して出力する。
【0027】
制御ユニット20は、このグラフィックプロセッサ100全体を制御するブロックであり、ディスプレイコントローラ18、グラフィック演算ユニット40を統括的に制御し、各ブロック間のデータ転送の同期管理、割り込み処理、タイマー管理等を行う。
【0028】
ディスプレイコントローラ18は、水平および垂直同期信号を生成し、表示装置52の表示タイミングにしたがって、グラフィックメモリ10内のフレームバッファから画像フレームデータのピクセルデータをライン状に順次読み込んでいく。さらにディスプレイコントローラ18は、ライン状に読み込まれたピクセルデータを、RGBのカラー値からなるデジタルデータから表示装置52に対応したフォーマットに変換して出力する。
【0029】
画像処理側DMAコントローラ28は、メインメモリ50とグラフィックメモリ10の間のデータ転送、データ退避などを制御ユニット20からのコマンドによって制御する。画像処理側DMAコントローラ28は、テクスチャデータをメインメモリ50からグラフィックメモリ10のバッファ12に転送する。
【0030】
次に、以上のように構成された情報処理装置1000の動作について、本実施の形態の特徴であるメインプロセッサ200とグラフィックプロセッサ100との協調動作を中心に説明する。
【0031】
メインプロセッサ200の管理プロセッサ32は、時分割されたタスクの実行順序を決定し、各タスクをサブプロセッサ30に適切に割り当てるとともに、グラフィックプロセッサ100との信号の送受信を行う。グラフィックプロセッサ100の制御ユニット20は、メインプロセッサ200と信号の送受信を行うほか、メインプロセッサ200から受け取るコマンドリストに基づいて、画像処理側DMAコントローラ28とグラフィック演算ユニット40を統括的に制御する。グラフィック演算ユニット40は、制御ユニット20で実行されるコマンドにしたがって、上述の各種グラフィック処理を開始する。
【0032】
制御ユニット20は、インタフェイス部22と、命令解析部24と、実行部26とを含む。インタフェイス部22は、メインプロセッサ200内のサブプロセッサ30やメインメモリ50などからデータを受け取る。なお、ここでいう「データ」には、コマンドリスト、頂点データ、テクスチャデータなどの狭義のデータの他、グラフィック演算ユニット40におけるシェーダプログラムなどが含まれる。命令解析部24は、インタフェイス部22が受け取ったデータの中からコマンドリストを取り出して、コマンドを解析する。実行部26は、コマンドを順次実行する。
【0033】
グラフィック演算ユニット40は、シェーダプログラムなどのプログラムで規定された演算方法にしたがって、実行部26で実行されるコマンドにより指示されるタイミングでオブジェクトのグラフィック処理を実行する。
【0034】
タスクの処理を実行しているあるサブプロセッサ30に画像処理の必要が発生したとすると、サブプロセッサ30は、画像処理に必要となる頂点データなどのオブジェクトデータをメインメモリ50に一時格納するとともに、これらのデータを転送するためのコンフィグデータとコマンドリストを作成する。コンフィグデータには、シェーダプログラムなどのグラフィック演算ユニット40で使用されるプログラムのアドレス、転送サイズなどのデータが含まれる。
【0035】
制御側DMAコントローラ34は、メインメモリ50からオブジェクトデータを読み出し、透視変換などの処理を施した後、読み出したオブジェクトデータをグラフィックメモリ10に転送する。また、制御側DMAコントローラ34は、コマンドリストやコンフィグデータを制御ユニット20に転送する。制御ユニット20に転送されるデータは、命令解析部24により解析され、解析されたコマンドが実行部26に渡されキューに入れられる。実行部26は、キュー内のコマンドを順次実行する。実行されたコマンドにしたがって、画像処理側DMAコントローラ28は、テクスチャデータをメインメモリ50から読み出してバッファ12に転送する。
制御側DMAコントローラ34は、管理プロセッサ32またはサブプロセッサ30の指示により実行開始する。サブプロセッサ30は、オブジェクトの転送準備ができた時に、後述するNOTIFYコマンドによりバッファの空きを確認して、制御側DMAコントローラ34を開始させる。制御側DMAコントローラ34によるサブプロセッサ30からグラフィックメモリ10へのオブジェクトデータの転送は、テクスチャデータの転送に並行して、またはグラフィック演算ユニット40のアイドリング中に実行される。
【0036】
このように、グラフィックプロセッサ100は、内部に設けられた画像処理側DMAコントローラ28を利用して、画像処理に必要な各種データを好適なタイミングでメインメモリ50から取得することができる。これによって、データ転送処理に係るグラフィックプロセッサ100およびメインプロセッサ200の負荷を軽減し、転送要求など最低限の処理を除いて、それらのプロセッサの演算処理と並行して転送処理を行うことができる。また、グラフィックプロセッサ100の構成を複雑化することなく、高速動作するメインプロセッサ200の処理に対応した画像処理を行うことができるため、動画の停止やコマ落ちなどが発生しにくくなる。
【0037】
本実施の形態において、制御ユニット20で解析、実行されるコマンドを「非グラフィック処理系命令」と呼ぶ。この非グラフィック処理系命令は、グラフィック演算ユニット40におけるグラフィック処理内容が明示されているものではなく、描画データの転送、グラフィック処理の開始や処理の待機、終了などの処理内容のみが明示されている命令体系である。グラフィック演算ユニット40における具体的なグラフィック処理は、コンフィグデータで指定されるシェーダプログラムなどのプログラムで規定されている。
【0038】
このような非グラフィック処理系命令を採用したのは、以下のようなことを目的とするためである。すなわち、本実施の形態のような情報処理装置においては、グラフィックプロセッサやそこで実行されるシェーダプログラムは、ハードウェアベンダーにより提供され、情報処理装置において実行されるアプリケーションソフトウェアや映像コンテンツは、別のソフトウェアベンダーにより提供されることが多い。このような場合、ソフトウェアベンダーがグラフィックプロセッサの制御を考慮する必要はなく、処理をすべきデータのみを準備すればよい。
【0039】
しかしながら、アプリケーション毎に要求される処理の負荷などは異なるので、情報処理装置全体の効率を考えた場合、グラフィックプロセッサにおいて実行されるグラフィック処理をソフトウェアベンダー側で制御することが好ましい場合がある。また、ソフトウェアベンダー側において、グラフィックプロセッサのハードウェア構成を理解した上で、グラフィックプロセッサにおけるグラフィック処理を一定程度制御できた方が、グラフィック処理の高速化、効率化に寄与する場合もある。
そこで、グラフィック演算ユニット40で実行されるグラフィック処理の方法を明示しない命令である「非グラフィック処理系命令」を設けることで、グラフィックプロセッサの動作を簡便に制御できるようにしたのである。
【0040】
次に、非グラフィック処理系命令を具体的なコマンドを参照して説明する。本実施の形態では、非グラフィック処理系命令として、転送命令「DMA」、処理起動命令「KICK」、処理完了通知命令「NOTIFY」、同期化命令「SYNC」、待機命令「WAIT」、終了命令「END」、次リスト命令「NEXT」および計時命令「PERF」を有している。当然であるが、他の命令をさらに有していても、またはこれらの命令のうちいくつかの命令を含んでいない場合も、本発明の範囲に含まれる。
【0041】
上述の非グラフィック処理系命令は、全て同一のフォーマットを備えている。図2は、コマンドフォーマットの一例を示す。フォーマット120は、上述のコマンドのうちいずれのコマンドであるかを数字で指定するタイプ121、コマンド毎に設定が必要となる属性122、コマンド毎に付与されるコマンドID123、および必要な設定を明示するパラメータ124〜126をそれぞれ指定するデータ領域を有する。コマンド長は、例えば16バイトである。「コマンドID」は、「1」から開始し「1」ずつ増加していき、コマンドリスト中に複数存在するDMAコマンドやKICKコマンドの識別番号として使用される。
【0042】
グラフィックプロセッサ100で処理されるのは、上述のKICK、DMA、NOTIFYなどを含む複数のコマンドのセットであり、このセットを本明細書においては「コマンドリスト」と呼ぶ。制御ユニット20の実行部26は、コマンドリスト内のコマンドをひとつずつ実行して、画像処理側DMAコントローラ28またはグラフィック演算ユニット40に対応する命令を実行させる。
【0043】
図3は、DMAコマンドのデータフォーマット130を示す。DMAコマンドは、画像処理側DMAコントローラ28に対して、メインメモリ50とグラフィックメモリ10の間の任意のデータのDMA転送を実行させる命令である。制御ユニット20の実行部26がDMAコマンドを実行すると、画像処理側DMAコントローラ28が起動し、メインメモリ50からテクスチャデータの読み込み処理を開始する。読み込まれたデータは、グラフィックメモリ10のバッファ12に格納される。
【0044】
タイプ131にはDMAコマンドであることを示す「1」を指定する。DMAチャネル132はDMA転送を利用するデバイスの間で衝突が発生しないように設定される2つのチャネルのうちいずれかを指定する。DMA ID133は、DMAコマンドのIDを指定する。このDMA IDは、DMAのプロセスが終了すると直ちにグラフィックプロセッサ100の内部レジスタ54に書き込まれる。サブプロセッサ30は、DMA IDを格納した内部レジスタ54をポーリングすることで、DMAプロセスの終了を確認することもできる。タグアドレス134にはDMAタグのアドレスが指定される。DMAタグには、DMA転送に関連する情報、すなわち、アドレス、DMAサイズ、および転送方向が含まれる。タグサイズ135は、DMAタグのデータサイズが指定される。
【0045】
図4は、KICKコマンドのデータフォーマット140を示す。KICKコマンドは、グラフィック演算ユニット40における各種グラフィック処理を開始させる命令である。制御ユニット20の実行部26がKICKコマンドを実行すると、グラフィック演算ユニット40はグラフィックメモリ10にアクセスしてテクスチャデータとオブジェクトデータを読み出し、フレームバッファに描画する。
【0046】
タイプ141にはKICKコマンドであることを示す「2」を指定する。コンフィグタグ142は、コンフィグデータを使用するか否かを指定する。KICK ID143は、KICKコマンドのIDを指定する。このKICK IDは、KICKプロセスが終了すると直ちにグラフィックプロセッサ100の内部レジスタ54に書き込まれる。サブプロセッサ30は、KICK IDを格納した内部レジスタ54をポーリングすることで、KICKプロセスの終了を確認することもできる。コンフィグデータアドレス144およびコンフィグデータサイズ145には、それぞれコンフィグデータのアドレスまたはデータサイズが指定される。制御ユニット20の実行部26は、KICKコマンドを実行すると、コンフィグデータをグラフィック演算ユニット40に転送した後に、グラフィック演算ユニット40が起動される。グラフィック演算ユニット40は、コンフィグデータの内容にしたがってプログラムをロードした後、グラフィック処理を実行する。コンフィグデータは、予め決定されているか、もしくはメインプロセッサ200において作成される。
【0047】
図5は、NOTIFYコマンドのデータフォーマット150を示す。NOTIFYコマンドは、グラフィックプロセッサ100からメインプロセッサ200に対して通知をするために使用される。制御ユニット20の実行部26がNOTIFYコマンドを実行すると、グラフィックプロセッサ100内における所定のグラフィック処理の終了が、メインプロセッサ200内のサブプロセッサ30に通知される。具体的には、NOTIFYコマンドは、画像処理側DMAコントローラ28によるDMA転送が終了したこと、または、グラフィック演算ユニット40におけるグラフィック処理が終了したことをサブプロセッサ30に通知する。グラフィックプロセッサ100においていずれの処理の終了を通知するかは、コマンドリストにおけるNOTIFYコマンドと他のコマンドとの配置で指定することができる。
【0048】
タイプ151にはNOTIFYコマンドであることを示す「3」を指定する。サブプロセッサID154は、信号を通知するサブプロセッサ30を指定する。全てのサブプロセッサ30を指定することも可能である。
【0049】
例えば、グラフィックメモリには、限られた数しかコンテクストバッファ12が設けられておらず、これをグラフィック処理に必要なデータ(例えばテクスチャデータ)の格納領域として共用しなければならない。そこで、例えば、グラフィック処理に必要なデータのDMA転送が終了したことをNOTIFYコマンドでサブプロセッサ30に伝え、これに応じてサブプロセッサ30によりジオメトリ処理の結果、例えば頂点データなどをグラフィックメモリ10に転送するようにすれば、グラフィック演算ユニット40およびサブプロセッサ30のアイドリング時間が削減され、結果的に演算時間の短縮に寄与することができる。このように、NOTIFYコマンドは、グラフィックプロセッサ100とメインプロセッサ200とを協調動作させ、情報処理装置1000全体の処理効率を向上させるために必要となる命令である。NOTIFYコマンドのより具体的な使用方法は、図11〜図17を参照する実施例において説明する。
【0050】
図6は、SYNCコマンドのデータフォーマット160を示す。SYNCコマンドは、プロセス間に依存関係がある場合に、所定のコマンドプロセスの終了と、サブプロセッサ30における処理の終了とを同期させるコマンドである。
【0051】
タイプ161にはSYNCコマンドであることを示す「4」を指定する。SYNC対象162には、DMAコマンド、KICKコマンド、サブプロセッサからのオブジェクトのDMA転送のいずれの終了を確認するかを指定する。ID164には、DMAコマンドまたはKICKコマンドのIDを指定する。レジスタ165は、フラグレジスタを指定する。サブプロセッサ30は、自身の処理が終了すると、内部レジスタ54にフラグを立てる。後述するように、SYNCコマンドによって、テクスチャデータとオブジェクトデータの両方の転送終了待ちをすることができる。
【0052】
実行部26は、内部レジスタ54を参照することで、DMAコマンド、KICKコマンドまたはサブプロセッサの終了を確認する。実行部26がSYNCコマンドを実行すると、フォーマットで指定されたプロセス依存関係に応じて、以下に述べるような複数の動作が発生する。第1に、時間的に前に実行されたDMAコマンドにしたがったデータのDMA転送が完了するまで、グラフィック演算ユニット40におけるそのデータを利用するグラフィック処理の開始を保留させる。第2に、時間的に前に実行されたKICKコマンドによってグラフィック演算ユニット40においてグラフィック処理が実行されているときに、その処理が終了するまでコマンドリスト内の後続のコマンドの実行を保留する。第3に、サブプロセッサ30におけるデータ処理が終了するまで、コマンドリスト内の後続のコマンドの実行を保留する。
【0053】
例えば、KICKコマンドを実行しようとする場合、グラフィック処理に必要なテクスチャデータなどのデータがグラフィックメモリ上に揃わなければ、グラフィック演算ユニット40を起動することはできない。そのような場合に、テクスチャデータおよびオブジェクトデータのDMA転送プロセスの終了をSYNCコマンドで確認し、それに応じてKICKコマンドを実行するようにすれば、グラフィック処理を効率的に実行することができる。また、グラフィック演算ユニット40におけるグラフィック処理の終了をSYNCコマンドで取得し、それに応じてDMAコマンドを実行するようにすれば、グラフィック演算ユニット40のアイドリング時間を削減することができる。
【0054】
このように、SYNCコマンドによって、DMAプロセスまたはKICKプロセスの終了と、サブプロセッサにおける処理の終了を同期させることが可能になる。これによって、プロセス依存関係がある多数のコマンドを含む場合でも、グラフィックプロセッサ100の動作を適切に制御し、ひいては、グラフィックプロセッサ100とメインプロセッサ200の動作を協調させることができる。SYNCコマンドのより具体的な使用方法については、図11〜図17を参照する実施例において説明する。
【0055】
なお、SYNCコマンドは、DMAコマンド、KICKコマンドおよびサブプロセッサひとつずつの終了を確認することもできるし、2個のSYNCコマンドを連続させて記述することで、多数のプロセスの終了を同期させることもできる。
【0056】
図示しないWAITコマンドは、SYNCコマンドと異なり、グラフィックプロセッサ100において実行中である全てのコマンドプロセスが終了するまで、以降のコマンドの実行を保留する。タイプには、WAITコマンドであることを示す「5」が指定される。
【0057】
図7は、NEXTコマンドのデータフォーマット170を示す。NEXTコマンドは、ひとかたまりのコマンドリストの終了を示すとともに、次に実行すべきコマンドリストのアドレスを示すコマンドである。タイプ171には、NEXTコマンドであることを示す「6」が指定される。次アドレス174には、次に実行すべきコマンドリストの先頭のアドレスが指定される。
【0058】
本実施の形態では、複数のサブプロセッサ30が並列的に描画データの演算を実行し、そのためのグラフィック処理に必要な非グラフィック処理命令を含むコマンド列を各サブプロセッサ30が独立して作成する。コマンドリストは、作成された順にメインメモリ50に格納される。したがって、制御ユニット20では、それら複数のコマンドリストの実行順序を知ることができない。そこで、NEXTコマンドにより次に実行すべきコマンドリストのアドレスを指定することによって、サブプロセッサ30における処理の前後に関係なく、またメインメモリ50内のロケーションに関係なく、コマンドリストを実行することができる。
【0059】
図示しないENDコマンドは、コマンドリストの終了をセットする命令であり、実行部26がENDコマンドを実行すると、コマンドリストの開始アドレスに移動する。タイプ番号は「7」である。
【0060】
図8は、NEXTコマンドの使用方法を説明する図である。図示するように、連続して実行実施されるべきコマンドリスト202、204、206が存在するとする。これらのコマンドリストは、その実行順序に関係なくメインメモリ50に転送される。コマンドリスト202、204の末尾にはNEXTコマンドが埋め込まれており、このNEXTコマンドには次に実行すべきコマンドリストの先頭アドレスが書き込まれている。また、コマンドリスト206の末尾にはENDコマンドが埋め込まれている。
【0061】
画像処理側DMAコントローラ28は、予め定められている開始アドレスから始まっているコマンドリスト202を第1のリストとしてメインメモリ50から取り出す。そして、コマンドリスト202のNEXTコマンドによって、画像処理側DMAコントローラ28は次に実行すべきコマンドリスト204をメインメモリ50から取り出すことができる。同様に、コマンドリスト204のNEXTコマンドによって、その次に実行すべきコマンドリスト206を取り出すことができる。
【0062】
管理プロセッサ32は、各サブプロセッサ30で作成されたコマンドリストを解析して、必要なNEXTコマンドを各コマンドリストに埋め込むように構成されている。または、サブプロセッサ30が互いにコマンドリストを交換し合うことにより、必要なNEXTコマンドを埋め込むように構成してもよい。つまり、あるサブプロセッサAがメモリ上のあるアドレスを取得するとき、他のサブプロセッサによるメインメモリ50へのアクセスをロックする。そして、サブプロセッサAがコマンドリストをメインメモリ50へ保存した後、他のプロセッサによるメインメモリへのアクセスロックを解除する。続いて、サブプロセッサBがメインメモリの次アドレスを取得し、サブプロセッサAの作成したコマンドリストにこのアドレスを含むNEXTコマンドを追加する。この処理を繰り返すことによって、必要なNEXTコマンドを各コマンドリストに埋め込むことができる。
【0063】
図示しないPERFコマンドは、コマンドプロセスの実行サイクル数を計測するための命令である。タイプ番号は「9」が指定される。制御ユニット20の実行部26がPERFコマンドを実行すると、非グラフィック処理命令にしたがったグラフィック処理を実行したときグラフィックプロセッサにおいて要した実行サイクル数が計測される。この実行サイクル数は、例えば、制御ユニット20のクロックに基づいてカウントされる。この計時命令は、グラフィック処理の効率などのデータをユーザに提供するときに主に使用される。
【0064】
以上述べたように、各非グラフィック処理系命令は、グラフィック処理やDMAコントローラの開始、終了に関係するものにすぎず、グラフィック演算ユニット40におけるグラフィック処理を直接操作している命令、すなわち処理内容を規定している命令ではないことに注意されたい。
【0065】
図9は、情報処理装置1000においてDMA転送されるデータを示す。これらのデータは、制御ユニット20により利用されるデータと、グラフィック演算ユニット40により利用されるデータとに分けることができる。
【0066】
コンフィグデータ212には、シェーダプログラムなどのアドレスが指定されている。コマンドリスト214は、上述した非グラフィック処理系命令からなる。制御側DMAコントローラ34は、コンフィグデータ212、コマンドリスト214および頂点データ222の転送を制御する。コンフィグデータ212とコマンドリスト214は、グラフィックプロセッサ100の制御ユニット20のメモリ領域に転送される。頂点データ222は、グラフィックメモリ10に転送される。制御側DMAコントローラ34によってDMA転送される場合、転送先のメモリ確保やバッファ管理は、メインプロセッサ側で処理される。
画像処理側DMAコントローラ28は、テクスチャデータ226、パラメータデータ224およびシェーダプログラム228の転送を制御する。テクスチャデータ226は、グラフィックメモリ10内のバッファ12に転送される。パラメータデータ224とシェーダプログラム228は、グラフィック演算ユニット40のメモリ領域に転送される。
【0067】
次に、非グラフィック処理系命令にしたがった情報処理装置1000の動作を説明する。
図10は、あるオブジェクトをフレームバッファに描画するときのメインプロセッサ200とグラフィックプロセッサ100における処理とデータの流れを示すフローチャートである。以下、図1を参照しつつ、各処理を説明する。
【0068】
まず、メインプロセッサ200は、オブジェクトの描画に必要なジオメトリデータなどのデータの作成、ロード、解析を実行する(S10)。続いてメインプロセッサ200は、オブジェクトのアドレス解決を実行し、転送先であるメインメモリ50におけるデータレイアウトを決定し(S12)、メインメモリ50に格納する。そして、メインプロセッサ200は、オブジェクトの描画に必要となるコマンドリストとコンフィグデータを作成し(S14)、メインメモリ50に格納する。メインプロセッサ200の制御側DMAコントローラ34は、作成されたコマンドリストとコンフィグデータとを、グラフィックプロセッサ100の制御ユニット20にDMA転送する(S16)。これが終了すると、メインプロセッサ200は、制御ユニット20に対して、コマンドリストの実行を開始するように通知する(S18)。
【0069】
グラフィックプロセッサ100の制御ユニット20がメインプロセッサ200からコマンドリスト実行開始の通知を受け取ると、制御ユニット20内の命令解析部24がコマンドリストの解析を開始する(S22)。実行部26がコマンドリスト内のDMAコマンドを実行すると、画像処理側DMAコントローラ28は、DMAコマンドのタグアドレスを参照して、オブジェクトの描画に必要となるテクスチャデータなどのデータをメインメモリ50からグラフィックメモリ10内のバッファ12に転送する(S24)。実行部26がコマンドリスト内のSYNCコマンドを実行すると、グラフィック演算ユニット40は、S24にしたがって実行中のテクスチャデータの転送が終了するまで以降のコマンドリストの実行を保留する(S26)。
【0070】
さて、この間にメインプロセッサ200では、オブジェクトのジオメトリ処理を実行して頂点データおよびパラメータデータを算出し(S20)、メインメモリ50に格納しておく。メインプロセッサ200の制御側DMAコントローラ34は、頂点データをグラフィックメモリ10に転送し(S28)、ジオメトリ処理が終了したことを示すフラグを内部レジスタ54にセットする(S30)。制御ユニット20内の実行部26は、コマンドリスト内のSYNCコマンドにしたがって、頂点データの転送が終了するまで以降のコマンドリストの実行を保留する(S32)。ここまでの処理によって、オブジェクトの描画に必要となる各種データが、グラフィックメモリ10上に揃ったことになる。
【0071】
この状態において、実行部26がKICKコマンドを実行すると、制御ユニット20はコンフィグデータをグラフィック演算ユニット40に転送し、グラフィック演算ユニット40の処理が起動され、バッファ12を読み出す(S34)。グラフィック演算ユニット40は、コンフィグデータに基づいてプログラムを読み出す。グラフィック演算ユニット40における処理が終了し、フレームバッファへのオブジェクトの描画が完了すると、グラフィック演算ユニット40は内部レジスタ54にKICKプロセスが終了したことを示すフラグをセットする。グラフィック演算ユニット40は、SYNCコマンドによりオブジェクトの描画終了を確認すると(S36)、NOTIFYコマンドにより、サブプロセッサ30に対してオブジェクトの描画が終了したことを通知する(S38)。この通知により、メインプロセッサ200は、次のオブジェクトの準備を開始することができる。
【0072】
情報処理装置1000においては、サブプロセッサ30におけるジオメトリ処理と、オブジェクトデータおよびテクスチャデータのDMA転送と、グラフィック演算ユニット40におけるグラフィック処理の全ての同期をとる必要があるので、制御側DMAコントローラ34、画像処理側DMAコントローラ28両方の処理手順、処理速度を考慮したコマンドリストを作成する必要がある。以下では、コマンドリストの例を挙げて、これにしたがったメインプロセッサ200とグラフィックプロセッサ100の協調動作を説明する。
なお、以下の説明においては、画像処理側DMAコントローラ28によるテクスチャデータのDMA転送は同時に2つ、グラフィック演算ユニット40におけるオブジェクトの描画処理はひとつのみ実行可能であるものとする。また、グラフィックメモリ10には、テクスチャデータを格納するコンテクストバッファ12として、バッファA、バッファBが備えられているとする。
【0073】
図11は、コマンドリストの一例であるコマンドリスト700を示す。なお、コマンドの解釈はリスト通りに行われるが、実際の処理は必ずしもコマンドの順序で起きるわけではなく、DMA転送されるデータ量やグラフィック処理に要する時間により前後する。
【0074】
図11において、「タイプ」はコマンド名を表し、「属性」はSYNCコマンドで同期させるべき対象を略号で示す。「D」はDMAプロセス、「F」はサブプロセッサのジオメトリ処理、「K」はKICKプロセスを表している。「ID」は、上述したDMA IDまたはKICK IDであり、このIDによって、複数あるDMAプロセスまたはKICKプロセスのうち待機すべきプロセスを特定することができる。また、図中の「Tex」はテクスチャを、「Obj」はオブジェクトを、「SPU」はサブプロセッサをそれぞれ表す。符号A、Bは2つのバッファ12を表す。例えば「Obj A」は、バッファAにDMA転送されるオブジェクトを表し、「Tex A」は、オブジェクトAのグラフィック処理に必要であり、バッファAにDMA転送されるテクスチャデータを表す。なお、実際のグラフィック処理には、テクスチャデータ以外にカラーデータやα値のデータなども必要となるが、ここではテクスチャデータを代表として示している。「SPU A」は、バッファAにDMA転送されるオブジェクトAを処理するサブプロセッサを表す。
【0075】
実行部26は、コマンドリスト700を開始アドレスから順次実行する。まず、ID「1」を付与されたDMAコマンド701と、ID「2」を付与されたDMAコマンド702を実行する。これにより、画像処理側DMAコントローラ28は、メインメモリ50からテクスチャA(Tex A)をバッファAに転送開始し、テクスチャB(Tex B)をバッファBに転送開始する。
このとき、制御側DMAコントローラ34は、バッファAへのテクスチャAのDMA転送に並行して、サブプロセッサAからグラフィックメモリ10へのオブジェクトA(Obj A)の転送を実行する。また、制御側DMAコントローラ34は、バッファBへのテクスチャBのDMA転送に並行して、サブプロセッサBからグラフィックメモリ10へのオブジェクトB(Obj B)の転送を実行する。なお、制御側DMAコントローラ34は、実行部26によるコマンドの実行とは無関係に動作する。
【0076】
グラフィック演算ユニット40は、SYNCコマンド703にしたがって、ID「1」を付与されたDMAコマンド701に対応するバッファAへのテクスチャAの転送の終了と、制御側DMAコントローラ34によるサブプロセッサA(SPU A)からグラフィックメモリ10へのオブジェクトAの転送の終了を確認する。ID「1」を付与されたKICKコマンド704にしたがって、グラフィック演算ユニット40は、バッファAにリードアクセスしてオブジェクトAに対するグラフィック処理を開始する。
【0077】
続いて、グラフィック演算ユニット40は、SYNCコマンド705にしたがって、ID「2」を付与されたDMAコマンド702に対応するバッファBへのテクスチャBの転送の終了と、制御側DMAコントローラ34によるサブプロセッサB(SPU B)からグラフィックメモリ10へのオブジェクトBの転送の終了を確認する。ID「2」を付与されたKICKコマンド706にしたがって、グラフィック演算ユニット40は、バッファBにリードアクセスしてオブジェクトBに対するグラフィック処理を開始する。
【0078】
続いてグラフィック演算ユニット40は、SYNCコマンド707により、ID「1」を付与されたKICKコマンド704に対応するオブジェクトAのグラフィック処理の終了を確認する。グラフィック処理済のオブジェクトAはグラフィックメモリ10のフレームバッファに書き出される。NOTIFYコマンド708により、グラフィック演算ユニット40はサブプロセッサA(SPU A)に対してオブジェクトAのグラフィック処理が完了したことを通知する。これによってサブプロセッサAは、バッファAが空いていることを知る。
【0079】
画像処理側DMAコントローラ28は、ID「3」を付与されたDMAコマンド709にしたがって、空きができたバッファAに対して、新たなオブジェクトAのグラフィック処理に必要となるテクスチャAの転送を開始する。
制御側DMAコントローラ34は、バッファAへのテクスチャAのDMA転送に並行して、サブプロセッサAからグラフィックメモリ10へのオブジェクトAのDMA転送を実行する。
【0080】
グラフィック演算ユニット40は、SYNCコマンド710により、ID「3」を付与されたDMAコマンド709に対応するバッファAへのテクスチャAの転送の終了と、サブプロセッサAからグラフィックメモリ10への新たなオブジェクトAの転送の終了を確認する。ID「3」を付与されたKICKコマンド711にしたがって、グラフィック演算ユニット40は、バッファAにリードアクセスしてオブジェクトAに対するグラフィック処理を実行する。
【0081】
グラフィック演算ユニット40は、SYNCコマンド712により、ID「2」を付与されたKICKコマンド706に対応するオブジェクトBのグラフィック処理の終了を確認する。グラフィック処理済のオブジェクトBはグラフィックメモリ10のフレームバッファに書き出される。NOTIFYコマンド713により、グラフィック演算ユニット40はサブプロセッサBに対してオブジェクトBのグラフィック処理が完了したことを通知する。
【0082】
画像処理側DMAコントローラ28は、ID「4」を付与されたDMAコマンド714にしたがって、空きができたバッファBに対して、新たなオブジェクトBのグラフィック処理に必要となるテクスチャBの転送を開始する。
制御側DMAコントローラ34は、バッファBへのテクスチャBのDMA転送に並行して、サブプロセッサBからグラフィックメモリ10へのオブジェクトBのDMA転送を実行する。
【0083】
グラフィック演算ユニット40は、SYNCコマンド715にしたがって、ID「4」を付与されたDMAコマンド714に対応するバッファBへのテクスチャBの転送の終了と、サブプロセッサBからバッファBへの新たなオブジェクトBの転送の終了を確認する。ID「4」を付与されたKICKコマンド716にしたがって、グラフィック演算ユニット40は、バッファBにリードアクセスしてオブジェクトBに対するグラフィック処理を開始する。
【0084】
実行部26がWAITコマンド717を実行すると、グラフィック演算ユニット40は、オブジェクトAとオブジェクトBの2回目のグラフィック処理の終了を待機し、NOTIFYコマンド718により、グラフィック処理の終了を全サブプロセッサに対して通知する。
【0085】
図12は、図11のコマンドリスト700にしたがったテクスチャデータの転送を模式的に示す。DMAコマンドにしたがって、テクスチャAがバッファAに転送されるのと並行して、サブプロセッサからはオブジェクトAがグラフィックメモリに転送される。テクスチャAとオブジェクトAの転送が両方とも終了すると、グラフィック演算ユニット40はオブジェクトAのグラフィック処理を実行する。また、DMAコマンドにしたがって、テクスチャBがバッファBに転送されるのと並行して、サブプロセッサからはオブジェクトBがグラフィックメモリに転送される。テクスチャBとオブジェクトBの転送が両方とも終了すると、グラフィック演算ユニット40はオブジェクトBのグラフィック処理を実行する。以降、上記の処理が繰り返される。
【0086】
図13は、図11のコマンドリスト700にしたがったときのバッファA、バッファBの状態を示すチャートである。図中の符号は、図11のコマンドリスト内のコマンドに与えた符号と対応する。オブジェクトAの処理に必要なテクスチャAがメインメモリ50からバッファAに転送され(701)、またオブジェクトBの処理に必要なテクスチャBがメインメモリ50からバッファBに転送される(702)。SYNCコマンドによりオブジェクトAとテクスチャAの転送の終了を確認すると、KICKコマンドによりそれらがグラフィック演算ユニット40によりバッファAから読み出され、グラフィック処理が開始される(704)。以降、DMAコマンドによるバッファA、バッファBに対するDMA転送と、KICKコマンドによるバッファA、バッファBからの読み出しが順番に繰り返される。
なお、図13においては、簡単のために全てのステージにおける処理が同時間で終了するように描かれているが、実際の処理においてはDMA転送されるデータ量やグラフィック処理に要する時間により前後する。
【0087】
このように、本実施の形態では、非グラフィック処理系命令からなるコマンドリストを組むことによって、グラフィックプロセッサにおけるグラフィック処理の順序を制御することができる。
【0088】
以上説明したように、本実施の形態によれば、非グラフィック処理系命令を通して、メインプロセッサ200とグラフィックプロセッサ100との協調動作をユーザが制御することが可能になる。
【0089】
本実施の形態における非グラフィック処理系命令は、制御ユニット20に対する簡便な少数のコマンドを組み合わせることによって、グラフィック演算ユニットの動作を制御することができる。この非グラフィック処理系命令は、グラフィック演算ユニットにおける具体的なグラフィック処理は指定しないので、シェーダプログラム等のグラフィック処理を実行するプログラムの影響を受けることがない。
【0090】
非グラフィック処理系命令の代わりに、アプリケーションソフトウェアの開発者のためにグラフィック演算ユニットの処理に対する直接的で詳細なコマンドを準備しておくこともできるが、こうすると、グラフィック演算ユニットのハードウェア構成を変更した場合にコマンドのサポートをする負担が大きくなる。本実施形態による非グラフィック処理系命令は少数のコマンドしか準備されておらず、またグラフィック演算ユニットの基本的な動作に関するものに限られているので、上述のような負担を軽減することができる。
【0091】
また、非グラフィック処理系命令により、バッファの割り当てをユーザが指定することができる。このため、メインプロセッサがバッファの割り当てを実行する必要がなくなるので、メインプロセッサの処理負荷を軽減することができる。
【0092】
情報処理装置1000において、メインプロセッサ200にはサブプロセッサ30が複数設けられているため、オブジェクトのジオメトリ処理を並列的に実行できるのに対し、グラフィックプロセッサ100におけるオブジェクトのグラフィック処理はひとつずつしかできない。そこで、本実施の形態にしたがって、KICKコマンドにより起動されるグラフィック演算ユニットにおけるグラフィック処理の演算時間と、DMAコマンドにより開始されるデータの転送時間とが同程度になるようなコマンドリストを作成し、グラフィックプロセッサ100にとって好適なタイミングで描画データ転送を実行するようにすれば、メインプロセッサとグラフィックプロセッサのロードバランスが改善されるので、情報処理装置1000の処理効率が向上する。
【0093】
言い換えると、情報処理装置1000においてはメインプロセッサ側の処理速度の方が速いので、グラフィック演算ユニットにおけるグラフィック処理の終了を待機する期間をできるだけ短縮することで、情報処理装置における処理を高速化することができる。
例えば、サイズの大きいフレームを描画する場合を考える。この場合、フレーム全体をグラフィック処理させようとすると、演算量が非常に大きいため、サブプロセッサはグラフィック演算ユニットの処理の終了を待機する期間が長くなる。そこで、フレームを4分割して、各分割フレームを描画するのに必要なデータをDMA転送させる時間と、各フレームのオブジェクトをジオメトリ処理する時間と、各分割フレームをグラフィック処理する時間のバランスをとるようにコマンドリストを作成すれば、画像処理時間を短縮させることができる。このように、コマンドリストの工夫次第で、情報処理の効率をアップさせることが可能となる。
【0094】
以上、本発明を実施の形態をもとに説明した。上記実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。以下、そのような変形例について述べる。
【0095】
実施の形態では、グラフィック演算ユニット40において単一のオブジェクトのグラフィック処理を行う場合について説明した。しかしながら、グラフィック演算ユニット40は、複数の異なるオブジェクトのグラフィック処理を並列に実行可能な構成にすることができる。
図14は、この場合の非グラフィック処理系命令を使用したコマンドリスト750の一例を示す。図14において、複数のオブジェクトの集合「Obj set A」のグラフィック処理に必要となるテクスチャの集合を「Tex set A」と表記する。オブジェクトが単数である場合と同様に、テクスチャセットをDMA転送するDMAコマンド、テクスチャセットとそれに対応するオブジェクトセットの転送終了を確認するSYNCコマンド、転送終了後にオブジェクトセットに対する描画開始を指示するKICKコマンドを配置する。これによって、処理対象のオブジェクトが複数存在する場合でも、単一のオブジェクトの場合と同じように、グラフィック演算ユニット40におけるグラフィック処理を制御することができる。
【0096】
実施の形態に係る情報処理装置1000においては、グラフィックプロセッサ100とメインプロセッサ200とが単一のLSIチップとして一体に集積化されていてもよく、または別のチップとして構成されていてもよい。実施の形態において示した各ブロックは、集積度についてまで限定するものではなく、いずれの構成要素の組合せが集積化されてもよいし、あるいは別チップとして構成されていてもよい。
【0097】
実施の形態ではメインプロセッサ200をマルチプロセッサとして記述したが、本発明はシングルプロセッサにも適用できる。また、グラフィックプロセッサ100をマルチプロセッサとして構成し、個々のプロセッサに対して本発明を適用し、メインプロセッサ200との協調動作をさせることもできる。
【0098】
実施の形態では、グラフィックメモリがコンテクストバッファを2つ有する構成について説明したが、コンテクストバッファは3つ以上設けられていてもよい。これによって、グラフィック演算ユニットのアイドリング時間をさらに短縮することができる。
【0099】
実施の形態では、グラフィックプロセッサ100の外部にグラフィックメモリ10が設けられている構成を示したが、グラフィックメモリはグラフィックプロセッサ100の内部に設けられてもよい。また、グラフィックメモリを単独で設けず、メインメモリ50の一部の領域をグラフィックメモリとして使用してもよい。
【0100】
NOTIFYコマンドを使用してオブジェクトのグラフィック処理が終了したことをサブプロセッサに通知する代わりに、内部レジスタ54に、グラフィック処理が終了したことを示すフラグを立てるようにしてもよい。そして、メインプロセッサ200は、内部レジスタ54をポーリングするように構成してもよい。こうすれば、NOTIFYコマンドを使用することなく、オブジェクトのグラフィック処理が終了したことを、メインプロセッサ200が知ることができる。NOTIFYコマンドではタイムラグが生じ得るが、メインプロセッサ200が、このタイムラグを待てないような場合、または、プロセッサに都合のよいいタイミングでグラフィック処理の終了を確認したいときは、内部レジスタを使用する。内部レジスタ54とNOTIFYコマンドを併用してもよい。この場合、サブプロセッサ30はポーリングとNOTIFYコマンドによる通知のいずれかを状況に応じて使い分けることができる。
【0101】
また、NOTIFYコマンドによりグラフィック処理の終了を通知する先は、メインプロセッサ200に限られず、グラフィック演算ユニット40の外部の任意のプロセッサであってよい。
【0102】
実施の形態では、テクスチャデータやパラメータデータなどのグラフィック処理に必要なデータのDMA転送は画像処理側DMAコントローラ28が担当し、それ以外の、コンフィグデータやコマンドリスト、頂点データ、シェーダプログラムのDMA転送は、制御側DMAコントローラ34が担当するものとして説明した。しかしながら、上記は代表的な例にすぎず、これら全てのデータのDMA転送を制御側DMAコントローラ34で担当してもよいし、または画像処理側DMAコントローラ28で担当してもよい。テクスチャデータやパラメータデータの転送を制御側DMAコントローラ34が担当する場合、実行部26は、DMAコマンドを実行したとき、制御側DMAコントローラ34にDMA転送の指令を出す。
【0103】
実施の形態では、制御ユニット20の実行部26がコマンドリストを上から順に実行していくことを述べたが、命令解析部24がコマンドリストを解析した際に、コマンドを再配置するようにしてもよい。例えば、命令解析部24は、適切なタイミングでPERFコマンドを実行して、DMAコマンドとKICKコマンドの実行サイクル数を取得する。そして、両コマンドの実行サイクル数が大きく異なる場合には、コマンドリスト内のDMAコマンドやKICKコマンドの位置を入れ替えることによって、グラフィックプロセッサ100の処理効率を改善することができる。
【0104】
また、命令解析部24は、コマンドリストの解析時にコマンドリストに配列ミスを発見したときに、そのミスを修正するように構成されていてもよい。例えば、SYNCコマンド内のIDを参照することによって、当該SYNCコマンドが同期の対象としているDMAコマンドまたはKICKコマンドより前に位置しているときは、命令解析部24がSYNCコマンドの位置をDMAコマンドまたはKICKコマンドの後に並べ替えるように構成されていてもよい。また、DMAコマンドまたはKICKコマンドがコマンドリスト内に記述されている場合に、それぞれに付与されているIDをもとにコマンドリストを検索して、その同期をとるためのSYNCコマンドが当該コマンドリスト内に存在しないときは、命令解析部24がそのSYNCコマンドをコマンドリストに追加するように構成されていてもよい。
【図面の簡単な説明】
【0105】
【図1】本発明の一実施形態に係る情報処理装置の構成を示すブロック図である。
【図2】コマンドフォーマットの一例を示す図である。
【図3】DMAコマンドのデータフォーマットを示す図である。
【図4】KICKコマンドのデータフォーマットを示す図である。
【図5】NOTIFYコマンドのデータフォーマットを示す図である。
【図6】SYNCコマンドのデータフォーマットを示す図である。
【図7】NEXTコマンドのデータフォーマットを示す図である。
【図8】NEXTコマンドを説明する図である。
【図9】情報処理装置においてDMA転送されるデータを示す図である。
【図10】オブジェクトを描画する際のメインプロセッサとグラフィックプロセッサの協調動作を示すフローチャートである。
【図11】グラフィックメモリにバッファを2つ備えるときのコマンドリストの一例を示す図である。
【図12】図11のコマンドリストにしたがったテクスチャデータの転送を模式的に示す図である。
【図13】図11のコマンドリストにしたがったときのバッファの状態を示すチャートである。
【図14】グラフィック演算ユニットにおいて複数のオブジェクトのグラフィック処理を並列に実行可能であるときのコマンドリストの一例を示す図である。
【符号の説明】
【0106】
10 グラフィックメモリ、 12 コンテクストバッファ、 18 ディスプレイコントローラ、 20 制御ユニット、 22 インタフェイス部、 24 命令解析部、 26 実行部、 28 画像処理側DMAコントローラ、 30 サブプロセッサ、 32 管理プロセッサ、 34 制御側DMAコントローラ、 40 グラフィック演算ユニット、 42 ラスタライザ、 44 シェーダユニット、 46 テクスチャユニット、 50 メインメモリ、 52 表示装置、 54 内部レジスタ、 100 グラフィックプロセッサ、 200 メインプロセッサ、 1000 情報処理装置。

【特許請求の範囲】
【請求項1】
グラフィックプロセッサを統括的に制御する制御ユニットと、この制御ユニットを経由して与えられる命令にしたがったグラフィック処理を実行するグラフィックユニットとを備え、
前記制御ユニットは、
外部とデータの授受を行うインタフェイス部と、
外部から受け取ったデータに含まれ、非グラフィック処理系命令の集合からなる命令体系を解析する命令解析部と、
解析された命令を実行する実行部と、
を備えることを特徴とするグラフィックプロセッサ。
【請求項2】
前記命令体系は、前記グラフィックユニットで実行されるグラフィック処理をカプセル化して扱う体系であることを特徴とする請求項1に記載のグラフィックプロセッサ。
【請求項3】
前記命令体系は、前記グラフィックユニットで実行されるグラフィック処理に関与するデータを直接操作しない命令からなることを特徴とする請求項1に記載のグラフィックプロセッサ。
【請求項4】
前記命令体系は、前記グラフィックユニットで実行されるグラフィック処理の対象を明示し、処理内容は明示しない命令からなることを特徴とする請求項1に記載のグラフィックプロセッサ。
【請求項5】
前記命令体系は、前記グラフィックユニットで実行されるグラフィック処理の内容に依存しない大域動作指示命令からなることを特徴とする請求項1に記載のグラフィックプロセッサ。
【請求項6】
前記命令解析部は、外部から受け取ったデータのうち、グラフィック処理に必要なデータを前記グラフィックユニットのアクセス可能な記憶領域へ転送することを特徴とする請求項1ないし5のいずれかに記載のグラフィックプロセッサ。
【請求項7】
前記命令体系にはグラフィック処理起動命令が含まれ、前記実行部はこのグラフィック処理起動命令にしたがって前記グラフィックユニットにおけるグラフィック処理を開始させることを特徴とする請求項1ないし5のいずれかに記載のグラフィックプロセッサ。
【請求項8】
前記命令体系には同期化命令が含まれ、前記実行部はこの同期化命令にしたがって、外部からのデータの転送が完了するまで、後続の命令の実行を保留することを特徴とする請求項1ないし5のいずれかに記載のグラフィックプロセッサ。
【請求項9】
前記命令体系には同期化命令が含まれ、前記実行部はこの同期化命令にしたがって、前記グラフィックユニットにおけるグラフィック処理が終了するまで、後続の命令の実行を保留することを特徴とする請求項1ないし5のいずれかに記載のグラフィックプロセッサ。
【請求項10】
前記命令体系には同期化命令が含まれ、前記実行部はこの同期化命令にしたがって、外部に存在するプロセッサにおける処理が終了するまで、後続の命令の実行を保留することを特徴とする請求項1ないし5のいずれかに記載のグラフィックプロセッサ。
【請求項11】
前記命令体系には同期化命令が含まれ、前記実行部はこの同期化命令にしたがって、グラフィックユニットにおける所定の単位のグラフィック処理を実行するのに必要なデータが揃うまで、前記グラフィック処理起動命令の実行を保留することを特徴とする請求項7に記載のグラフィックプロセッサ。
【請求項12】
前記命令体系にはデータの転送命令が含まれ、前記実行部がこの転送命令を実行することにより、外部からグラフィックユニットへのデータの読み込み処理が実行されることを特徴とする請求項1ないし5のいずれかにに記載のグラフィックプロセッサ。
【請求項13】
転送命令を実行するDMAコントローラをさらに備え、
前記実行部が前記転送命令を実行すると、前記DMAコントローラが起動して外部からグラフィックユニットにデータを読み込むことを特徴とする請求項12に記載のグラフィックプロセッサ。
【請求項14】
前記命令体系には処理完了通知命令が含まれ、前記実行部がこの処理完了通知命令を実行することにより、グラフィックプロセッサにおける所定の処理の終了が外部へ通知されることを特徴とする請求項1ないし5のいずれかに記載のグラフィックプロセッサ。
【請求項15】
複数の非グラフィック処理命令による処理がひとつのリストとして扱われ、かつ複数のリストを連続して実行すべきとき、前記命令体系には、次に実行すべきリストを指定する次リスト命令が含まれ、前記実行部がこの次リスト命令を実行することにより、次のリストが先頭から実行されることを特徴とする請求項1ないし5のいずれかに記載のグラフィックプロセッサ。
【請求項16】
前記命令体系には、非グラフィック処理命令にしたがったグラフィック処理を実行したときグラフィックプロセッサにおいて要した実行サイクル数を計測する計時命令が含まれ、前記実行部がこの計時命令を実行することにより、前記実行サイクル数が計測されることを特徴とする請求項1ないし5のいずれかに記載のグラフィックプロセッサ。
【請求項17】
グラフィックプロセッサを統括的に制御する制御ユニットと、この制御ユニットを経由して与えられる命令にしたがったグラフィック処理を実行するグラフィックユニットと、転送命令を実行するDMAコントローラとを備え、
前記制御ユニットは、
外部とデータの授受を行うインタフェイス部と、
外部から受け取ったデータに含まれ、前記グラフィックユニットと前記DMAコントローラの開始または終了に関連する命令の集合からなる命令体系を解析する命令解析部と、
解析された命令を実行する実行部と、
を備えることを特徴とするグラフィックプロセッサ。
【請求項18】
装置全体を統括的に制御するメインプロセッサと、画像処理演算を行うグラフィックプロセッサとを備える情報処理装置であって、
前記グラフィックプロセッサは、該グラフィックプロセッサを統括的に制御する制御ユニットと、この制御ユニットを経由して与えられる命令にしたがったグラフィック処理を実行するグラフィックユニットとを備え、
前記制御ユニットは、
前記メインプロセッサとデータの授受を行うインタフェイス部と、
前記メインプロセッサから受け取ったデータに含まれ、非グラフィック処理系命令の集合からなる命令体系を解析する命令解析部と、
解析された命令を実行する実行部と、
を備えることを特徴とする情報処理装置。
【請求項19】
前記命令体系には処理完了通知命令が含まれ、前記実行部がこの処理完了通知命令を実行することにより、グラフィックプロセッサにおける所定の処理の終了が前記メインプロセッサへ通知されることを特徴とする請求項18に記載の情報処理装置。
【請求項20】
前記グラフィックプロセッサが、所定の処理の終了に応じて状態が変化する内部レジスタをさらに有することを特徴とする請求項19に記載の情報処理装置。
【請求項21】
前記メインプロセッサは管理ユニットと複数の演算ユニットを内蔵し、
各演算ユニットは、複数の非グラフィック処理命令による処理をひとつのリストとして生成し、
前記管理ユニットは、各演算ユニットでそれぞれ生成されたリストの実行順序を明示する次リスト命令を該リストに付加し、
前記実行部が前記次リスト命令を実行することにより、次のリストが先頭から実行されることを特徴とする請求項18に記載の情報処理装置。
【請求項22】
装置全体を統括的に制御するメインプロセッサと、画像処理演算を行うグラフィックプロセッサとを備える情報処理装置であって、
前記グラフィックプロセッサは、メインプロセッサとグラフィックプロセッサの動作を協調させるように該グラフィックプロセッサを制御する制御ユニットと、この制御ユニットを経由して与えられる命令にしたがったグラフィック処理を実行するグラフィックユニットとを備え、
前記制御ユニットは、
前記メインプロセッサとデータの授受を行うインタフェイス部と、
前記メインプロセッサから受け取ったデータに含まれ、非グラフィック処理系命令の集合からなる命令体系を解析する命令解析部と、
解析された命令を実行する実行部と、
を備えることを特徴とする情報処理装置。
【請求項23】
グラフィックプロセッサをメインプロセッサに協調させる命令が、メインプロセッサから前記制御ユニットに与えられることを特徴とする請求項22に記載の情報処理装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate