(57)【要約】【課題】  マルチプロセッサシステムにおける情報処理効率を向上させる。【解決手段】  情報処理装置１０００は、装置全体を統括的に制御するメインプロセッサ２００と、画像処理演算を行うグラフィックプロセッサ１００と、メインメモリ５０を備える。また、情報処理装置１０００は、同時にｍ個（ｍはｍ＞１の整数）データ転送を制御するＤＭＡコントローラ２８と、特定の処理のためのデータが最初に展開されるメインメモリ５０と、メインメモリ５０からデータが転送されたときこれらを記憶するｎ個（ｎはｎ＞ｍの整数）で一組のバッファ１２を備える。同時に複数のデータ転送が実行されるとき、一組のバッファ１２のうち第１のバッファが一方のデータの転送先に設定され、第２のバッファが他方のデータの転送先に設定される。【選択図】  図１
2006323760.tif 000002
【特許請求の範囲】
【請求項１】
装置全体を統括的に制御するメインプロセッサと、特定の処理を行う第２プロセッサとを備える情報処理装置であって、
当該装置は、同時にｍ個（ｍはｍ＞１の整数）データ転送を制御するＤＭＡコントローラと、前記特定の処理のためのデータが最初に展開されるメインメモリと、
前記メインメモリから前記データが転送されたときこれらを記憶するｎ個（ｎはｎ＞ｍの整数）で一組のバッファと、を備え、
同時に複数のデータ転送が実行されるとき、前記一組のバッファのうち第１のバッファが一方のデータの転送先に設定され、第２のバッファが他方のデータの転送先に設定されることを特徴とする情報処理装置。
【請求項２】
前記ＤＭＡコントローラが動作しているとき、前記第２プロセッサは、前記一組のバッファのうち第３のバッファに格納されたデータを使用した処理を実行していることを特徴とする請求項１に記載の情報処理装置。
【請求項３】
装置全体を統括的に制御するメインプロセッサと、特定の処理を行う第２プロセッサとを備える情報処理システムであって、
当該システムは、同時にｍ個（ｍはｍ＞１の整数）データ転送を制御するＤＭＡコントローラと、前記特定の処理のためのデータが最初に展開されるメインメモリと、
前記メインメモリから前記データが転送されたときこれらを記憶するｎ個（ｎはｎ＞ｍの整数）で一組のバッファと、を備え、
同時に複数のデータ転送が実行されるとき、前記一組のバッファのうち第１のバッファが一方のデータの転送先に設定され、第２のバッファが他方のデータの転送先に設定されることを特徴とする情報処理システム。
【請求項４】
装置全体を統括的に制御するメインプロセッサと、
同時にｍ個（ｍはｍ＞１の整数）データ転送を制御するＤＭＡコントローラと、
外部のメモリからデータが転送されたときこれらを記憶するｎ個（ｎはｎ＞ｍの整数）で一組のバッファを有し、特定の処理を行う第２プロセッサと、
を備える装置における方法であって、
前記一組のバッファのうち第１のバッファを一方のデータの転送先に設定し、
第２のバッファを他方のデータの転送先に設定し、
第３のバッファに格納されたデータを使用した処理を前記第２プロセッサに実行させることを特徴とする情報処理方法。
【請求項５】
装置全体を統括的に制御するメインプロセッサと、
同時にｍ個（ｍはｍ＞１の整数）データ転送を制御するＤＭＡコントローラと、
外部のメモリからデータが転送されたときこれらを記憶するｎ個（ｎはｎ＞ｍの整数）で一組のバッファを有し、特定の処理を行う第２プロセッサと、
を備える装置で実行されるプログラムであって、
前記一組のバッファのうち第１のバッファを一方のデータの転送先に設定し、
第２のバッファを他方のデータの転送先に設定し、
第３のバッファに格納されたデータを使用した処理を前記第２プロセッサに実行させることを特徴とする情報処理プログラム。
【請求項６】
特定の処理を行うプロセッサであって、
同時にｍ個（ｍはｍ＞１の整数）データ転送を制御するＤＭＡコントローラによって、前記特定の処理を実行するためのデータが外部のメモリから当該プロセッサに転送されるとき、これらを記憶するためのｎ個（ｎはｎ＞ｍの整数）で一組のバッファに対して、
同時に複数のデータ転送が実行されるとき、前記一組のバッファのうち第１のバッファが一方のデータの転送先に設定され、第２のバッファが他方のデータの転送先に設定されることを特徴とするプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は情報処理技術に関し、特に画像処理を含む情報処理技術に関する。
【背景技術】
【０００２】
近年のコンピュータグラフィックス技術の発達に伴い、大型計算機や、パーソナルコンピュータ、ゲーム機器などの情報処理装置から出力される画像データは、ますます複雑化、高度化している。そこで、このような情報処理装置では、通常の演算処理を行うメインプロセッサとは別に、画像処理専用のグラフィックプロセッサを搭載し、メインプロセッサを画像処理から解放して、システムのオーバーヘッドの解消を図っている。
【０００３】
これらの情報処理装置において高性能な演算処理を実現するためには、メインプロセッサをマルチプロセッサで構成することが有効である。マルチプロセッサでは、複数のタスクを各プロセッサに割り当て並列処理を実行して演算速度を高める。一方、グラフィックプロセッサは、メインプロセッサが処理する複数のタスクに対応した画像処理を、メインプロセッサの高速演算に対応させて行う必要がある。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
一般に、グラフィックプロセッサにおける画像処理は、メインプロセッサで実行されるアプリケーションに関わりなく動作する。しかしながら、アプリケーションの実行の上で必要となる画像処理に協調させてグラフィックプロセッサの動作を制御することができれば、情報処理装置における処理効率の向上に寄与することもあり得る。
【０００５】
本発明はこのような課題に鑑みてなされたものであり、その目的はマルチプロセッサシステムにおける情報処理効率を向上させる技術の提供にある。
【課題を解決するための手段】
【０００６】
本発明のある態様は、装置全体を統括的に制御するメインプロセッサと、特定の処理を行う第２プロセッサとを備える情報処理装置に関する。この装置は、同時にｍ個（ｍはｍ＞１の整数）データ転送を制御するＤＭＡコントローラと、特定の処理のためのデータが最初に展開されるメインメモリと、メインメモリからデータが転送されたときこれらを記憶するｎ個（ｎはｎ＞ｍの整数）で一組のバッファと、を備える。そして、同時に複数のデータ転送が実行されるとき、前記一組のバッファのうち第１のバッファが一方のデータの転送先に設定され、第２のバッファが他方のデータの転送先に設定されることを特徴とする。
【０００７】
ここで「ＤＭＡコントローラ」とは、プロセッサを介さずにメモリまたは外部の入出力装置との間でデータを転送する回路のことをいう。また、ここでいう「データ」には、テクスチャデータ、カラーデータ、α値データ、Ｚ値データ、頂点データなどのほか、グラフィックユニットにおけるシェーダプログラムなどのプログラムも含まれる。
【０００８】
この態様によれば、メインメモリから同時にＤＭＡ転送されるデータより多数のバッファが設けられているので、メインプロセッサおよび第２プロセッサのアイドリング時間が削減され、情報処理装置全体の処理効率を向上させることができる。
【発明の効果】
【０００９】
本発明によれば、複数のプロセッサを有する情報処理装置において、プロセッサのアイドリング時間を削減することができる。
【発明を実施するための最良の形態】
【００１０】
図１は、本発明の実施の形態に係る情報処理装置１０００の構成を示すブロック図である。情報処理装置１０００は、グラフィックプロセッサ１００、メインプロセッサ２００、メインメモリ５０およびグラフィックメモリ１０を含む。情報処理装置１０００は、表示装置５２と接続されている。なお、図１において、様々な処理を行う機能ブロックとして記載される各要素は、ハードウェア的には、ＣＰＵ、メモリ、その他のＬＳＩで構成することができ、ソフトウェア的には、メモリにロードされたプログラムなどによって実現される。したがって、これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、またはそれらの組合せによっていろいろな形で実現できることは当業者には理解されるところであり、いずれかに限定されるものではない。
【００１１】
この情報処理装置１０００では、情報処理装置１０００を効率よく使用するための機能、環境を提供し、装置全体を統括的に制御するオペレーティングシステム（以下、ＯＳと略す）が実行される。そのＯＳ上でアプリケーションソフトウェア（以下、単にアプリケーションという）が実行される。本実施の形態においては、メインプロセッサ２００とグラフィックプロセッサ１００は協調的に演算処理を行う。グラフィックプロセッサ１００は、メインプロセッサ２００により処理されるそれぞれのタスクに関連する画像処理を行い、生成した画像、映像を表示装置５２に出力し、または図示しない記憶装置に記憶する。メインプロセッサ２００とグラフィックプロセッサ１００との協調動作については後述する。
【００１２】
メインプロセッサ２００は、複数のサブプロセッサ３０と管理プロセッサ３２と制御側ＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）コントローラ３４とを含む。サブプロセッサ３０、管理プロセッサ３２および制御側ＤＭＡコントローラ３４はバス３６により相互通信が可能である。管理プロセッサ３２は、アプリケーションに対応するタスクを時分割し、タイムスライス毎に各アプリケーションに対応するタスクをサブプロセッサ３０に割り当て、演算処理を並列で行うように制御する。例えば、あるタイムスライスにおいて処理されるアプリケーションに対応するタスクが三次元コンピュータグラフィックスの画像処理に関するものである場合には、ジオメトリ処理を実行する。各サブプロセッサ３０において画像処理の必要が発生した場合には、ジオメトリ処理後の頂点データやパラメータデータが各サブプロセッサ３０からグラフィックメモリ１０へ転送される。
【００１３】
制御側ＤＭＡコントローラ３４は、メインメモリ５０やグラフィックプロセッサ１００との間のデータ転送、データ退避などをサブプロセッサ３０または管理プロセッサ３２からのコマンドによって制御する。
【００１４】
メインメモリ５０は、主にメインプロセッサ２００によって使用される記憶領域である。このメインメモリ５０には、メインプロセッサ２００によりコンピュータグラフィックスに関するタスクを処理して得られたデータやプログラムなどが一時的に格納される。また、このメインメモリ５０には、グラフィックプロセッサ１００による演算処理の結果得られたデータが退避して格納される場合もある。
【００１５】
グラフィックメモリ１０は、グラフィックプロセッサ１００により使用、管理されるグラフィックに関するデータ専用のメモリ領域であって、画像フレームデータが格納されるフレームバッファ（図示せず）などに加えて、画像フレームデータを描画する際に参照される基本データである頂点データを格納するバッファ（図示せず）、および、テクスチャデータが一時的に格納されるコンテクストバッファ１２を２個以上有している。
【００１６】
グラフィックプロセッサ１００は、画像に関する処理、例えばレンダリング処理などを専用に実行する。グラフィックプロセッサ１００は、ディスプレイコントローラ１８、制御ユニット２０、画像処理側ＤＭＡコントローラ２８、グラフィック演算ユニット４０、および内部レジスタ５４を含む。これらのブロック同士はバス３６で接続されており、各ブロック間でデータ信号の送受が行われる。
【００１７】
グラフィック演算ユニット４０は、外部から与えられる命令にしたがって、グラフィックに関する様々な演算処理を行う。その処理の一例としては、三次元モデリングデータをもとに座標変換、陰面消去、シェーディングを行って画像フレームデータを作成し、グラフィックメモリ１０内のフレームバッファに書き込む一連のレンダリング処理などが挙げられる。グラフィック演算ユニット４０は、特に三次元グラフィックスに関する処理を高速に行うために、ラスタライザ４２、シェーダユニット４４、テクスチャユニット４６などの機能ブロックを含んでいる。
【００１８】
ラスタライザ４２は、描画するオブジェクトの頂点データを受け取り、三次元空間上のオブジェクトを投影変換により描画平面上の図形に変換するビュー変換を行う。さらに、描画平面上の図形を、描画平面の水平方向に沿ってスキャンしながら、一列ごとに量子化されたピクセルに変換するラスター処理を行う。このラスタライザ４２によってオブジェクトがピクセル展開されて、各ピクセル毎にピクセル情報を算出する。このピクセル情報には、ＲＧＢカラー値、透明度を表すα値、視点からの奥行きを表すＺ値が含まれる。
【００１９】
ラスタライザ４２は、スキャンラインに沿って所定の大きさのピクセル領域を生成し、シェーダユニット４４、テクスチャユニット４６へと出力する。ラスタライザ４２から出力されるピクセル領域は、一度キューにスタックされ、シェーダユニット４４はスタックされたピクセル領域を順に処理していく。
【００２０】
シェーダユニット４４は、ラスタライザ４２により算出されたピクセル情報をもとにシェーディング処理を行い、テクスチャユニット４６により得られたテクセル情報をもとに、テクスチャマッピング後のピクセル色を決定し、グラフィックメモリ１０内のフレームバッファにシェーディング処理後の画像フレームデータを書き込む。さらにシェーダユニット４４は、フレームバッファに書き込まれた画像フレームデータに対してフォギング、アルファブレンディング等の処理を行い最終的な描画色を決定してフレームバッファの画像フレームデータを更新する。
【００２１】
テクスチャユニット４６は、シェーダユニット４４からテクスチャデータを指定するパラメータを受け取り、要求されたテクスチャデータをグラフィックメモリ１０内のバッファ１２から読み出し、所定の処理を行った後にシェーダユニット４４に対して出力する。
【００２２】
制御ユニット２０は、このグラフィックプロセッサ１００全体を制御するブロックであり、ディスプレイコントローラ１８、グラフィック演算ユニット４０を統括的に制御し、各ブロック間のデータ転送の同期管理、割り込み処理、タイマー管理等を行う。
【００２３】
ディスプレイコントローラ１８は、水平および垂直同期信号を生成し、表示装置５２の表示タイミングにしたがって、グラフィックメモリ１０内のフレームバッファから画像フレームデータのピクセルデータをライン状に順次読み込んでいく。さらにディスプレイコントローラ１８は、ライン状に読み込まれたピクセルデータを、ＲＧＢのカラー値からなるデジタルデータから表示装置５２に対応したフォーマットに変換して出力する。
【００２４】
画像処理側ＤＭＡコントローラ２８は、メインメモリ５０とグラフィックメモリ１０の間のデータ転送、データ退避などを制御ユニット２０からのコマンドによって制御する。画像処理側ＤＭＡコントローラ２８は、テクスチャデータをメインメモリ５０からグラフィックメモリ１０のバッファ１２に転送する。
【００２５】
次に、以上のように構成された情報処理装置１０００の動作について、本実施の形態の特徴であるメインプロセッサ２００とグラフィックプロセッサ１００との協調動作を中心に説明する。
【００２６】
メインプロセッサ２００の管理プロセッサ３２は、時分割されたタスクの実行順序を決定し、各タスクをサブプロセッサ３０に適切に割り当てるとともに、グラフィックプロセッサ１００との信号の送受信を行う。グラフィックプロセッサ１００の制御ユニット２０は、メインプロセッサ２００と信号の送受信を行うほか、メインプロセッサ２００から受け取るコマンドリストに基づいて、画像処理側ＤＭＡコントローラ２８とグラフィック演算ユニット４０を統括的に制御する。グラフィック演算ユニット４０は、制御ユニット２０で実行されるコマンドにしたがって、上述の各種グラフィック処理を開始する。
【００２７】
制御ユニット２０は、インタフェイス部２２と、命令解析部２４と、実行部２６とを含む。インタフェイス部２２は、メインプロセッサ２００内のサブプロセッサ３０やメインメモリ５０などからデータを受け取る。なお、ここでいう「データ」には、コマンドリスト、頂点データ、テクスチャデータなどの狭義のデータの他、グラフィック演算ユニット４０におけるシェーダプログラムなどが含まれる。命令解析部２４は、インタフェイス部２２が受け取ったデータの中からコマンドリストを取り出して、コマンドを解析する。実行部２６は、コマンドを順次実行する。
【００２８】
グラフィック演算ユニット４０は、シェーダプログラムなどのプログラムで規定された演算方法にしたがって、実行部２６で実行されるコマンドにより指示されるタイミングでオブジェクトのグラフィック処理を実行する。
【００２９】
タスクの処理を実行しているあるサブプロセッサ３０に画像処理の必要が発生したとすると、サブプロセッサ３０は、画像処理に必要となる頂点データなどのオブジェクトデータをメインメモリ５０に一時格納するとともに、これらのデータを転送するためのコンフィグデータとコマンドリストを作成する。コンフィグデータには、シェーダプログラムなどのグラフィック演算ユニット４０で使用されるプログラムのアドレス、転送サイズなどのデータが含まれる。
【００３０】
制御側ＤＭＡコントローラ３４は、メインメモリ５０からオブジェクトデータを読み出し、透視変換などの処理を施した後、読み出したオブジェクトデータをグラフィックメモリ１０に転送する。また、制御側ＤＭＡコントローラ３４は、コマンドリストやコンフィグデータを制御ユニット２０に転送する。制御ユニット２０に転送されるデータは、命令解析部２４により解析され、解析されたコマンドが実行部２６に渡されキューに入れられる。実行部２６は、キュー内のコマンドを順次実行する。実行されたコマンドにしたがって、画像処理側ＤＭＡコントローラ２８は、テクスチャデータをメインメモリ５０から読み出してバッファ１２に転送する。
制御側ＤＭＡコントローラ３４は、管理プロセッサ３２またはサブプロセッサ３０の指示により実行開始する。サブプロセッサ３０は、オブジェクトの転送準備ができた時に、後述するＮＯＴＩＦＹコマンドによりバッファの空きを確認して、制御側ＤＭＡコントローラ３４を開始させる。制御側ＤＭＡコントローラ３４によるサブプロセッサ３０からグラフィックメモリ１０へのオブジェクトデータの転送は、テクスチャデータの転送に並行して、またはグラフィック演算ユニット４０のアイドリング中に実行される。
【００３１】
このように、グラフィックプロセッサ１００は、内部に設けられた画像処理側ＤＭＡコントローラ２８を利用して、画像処理に必要な各種データを好適なタイミングでメインメモリ５０から取得することができる。これによって、データ転送処理に係るグラフィックプロセッサ１００およびメインプロセッサ２００の負荷を軽減し、転送要求など最低限の処理を除いて、それらのプロセッサの演算処理と並行して転送処理を行うことができる。また、グラフィックプロセッサ１００の構成を複雑化することなく、高速動作するメインプロセッサ２００の処理に対応した画像処理を行うことができるため、動画の停止やコマ落ちなどが発生しにくくなる。
【００３２】
本実施の形態において、制御ユニット２０で解析、実行されるコマンドを「非グラフィック処理系命令」と呼ぶ。この非グラフィック処理系命令は、グラフィック演算ユニット４０におけるグラフィック処理内容が明示されているものではなく、描画データの転送、グラフィック処理の開始や処理の待機、終了などの処理内容のみが明示されている命令体系である。グラフィック演算ユニット４０における具体的なグラフィック処理は、コンフィグデータで指定されるシェーダプログラムなどのプログラムで規定されている。
【００３３】
このような非グラフィック処理系命令を採用したのは、以下のようなことを目的とするためである。すなわち、本実施の形態のような情報処理装置においては、グラフィックプロセッサやそこで実行されるシェーダプログラムは、ハードウェアベンダーにより提供され、情報処理装置において実行されるアプリケーションソフトウェアや映像コンテンツは、別のソフトウェアベンダーにより提供されることが多い。このような場合、ソフトウェアベンダーがグラフィックプロセッサの制御を考慮する必要はなく、処理をすべきデータのみを準備すればよい。
【００３４】
しかしながら、アプリケーション毎に要求される処理の負荷などは異なるので、情報処理装置全体の効率を考えた場合、グラフィックプロセッサにおいて実行されるグラフィック処理をソフトウェアベンダー側で制御することが好ましい場合がある。また、ソフトウェアベンダー側において、グラフィックプロセッサのハードウェア構成を理解した上で、グラフィックプロセッサにおけるグラフィック処理を一定程度制御できた方が、グラフィック処理の高速化、効率化に寄与する場合もある。
そこで、グラフィック演算ユニット４０で実行されるグラフィック処理の方法を明示しない命令である「非グラフィック処理系命令」を設けることで、グラフィックプロセッサの動作を簡便に制御できるようにしたのである。
【００３５】
次に、非グラフィック処理系命令を具体的なコマンドを参照して説明する。本実施の形態では、非グラフィック処理系命令として、転送命令「ＤＭＡ」、処理起動命令「ＫＩＣＫ」、処理完了通知命令「ＮＯＴＩＦＹ」、同期化命令「ＳＹＮＣ」、待機命令「ＷＡＩＴ」、終了命令「ＥＮＤ」、次リスト命令「ＮＥＸＴ」および計時命令「ＰＥＲＦ」を有している。当然であるが、他の命令をさらに有していても、またはこれらの命令のうちいくつかの命令を含んでいない場合も、本発明の範囲に含まれる。
【００３６】
上述の非グラフィック処理系命令は、全て同一のフォーマットを備えている。図２は、コマンドフォーマットの一例を示す。フォーマット１２０は、上述のコマンドのうちいずれのコマンドであるかを数字で指定するタイプ１２１、コマンド毎に設定が必要となる属性１２２、コマンド毎に付与されるコマンドＩＤ１２３、および必要な設定を明示するパラメータ１２４〜１２６をそれぞれ指定するデータ領域を有する。コマンド長は、例えば１６バイトである。「コマンドＩＤ」は、「１」から開始し「１」ずつ増加していき、コマンドリスト中に複数存在するＤＭＡコマンドやＫＩＣＫコマンドの識別番号として使用される。
【００３７】
グラフィックプロセッサ１００で処理されるのは、上述のＫＩＣＫ、ＤＭＡ、ＮＯＴＩＦＹなどを含む複数のコマンドのセットであり、このセットを本明細書においては「コマンドリスト」と呼ぶ。制御ユニット２０の実行部２６は、コマンドリスト内のコマンドをひとつずつ実行して、画像処理側ＤＭＡコントローラ２８またはグラフィック演算ユニット４０に対応する命令を実行させる。
【００３８】
図３は、ＤＭＡコマンドのデータフォーマット１３０を示す。ＤＭＡコマンドは、画像処理側ＤＭＡコントローラ２８に対して、メインメモリ５０とグラフィックメモリ１０の間の任意のデータのＤＭＡ転送を実行させる命令である。制御ユニット２０の実行部２６がＤＭＡコマンドを実行すると、画像処理側ＤＭＡコントローラ２８が起動し、メインメモリ５０からテクスチャデータの読み込み処理を開始する。読み込まれたデータは、グラフィックメモリ１０のバッファ１２に格納される。
【００３９】
タイプ１３１にはＤＭＡコマンドであることを示す「１」を指定する。ＤＭＡチャネル１３２はＤＭＡ転送を利用するデバイスの間で衝突が発生しないように設定される２つのチャネルのうちいずれかを指定する。ＤＭＡ  ＩＤ１３３は、ＤＭＡコマンドのＩＤを指定する。このＤＭＡ  ＩＤは、ＤＭＡのプロセスが終了すると直ちにグラフィックプロセッサ１００の内部レジスタ５４に書き込まれる。サブプロセッサ３０は、ＤＭＡ  ＩＤを格納した内部レジスタ５４をポーリングすることで、ＤＭＡプロセスの終了を確認することもできる。タグアドレス１３４にはＤＭＡタグのアドレスが指定される。ＤＭＡタグには、ＤＭＡ転送に関連する情報、すなわち、アドレス、ＤＭＡサイズ、および転送方向が含まれる。タグサイズ１３５は、ＤＭＡタグのデータサイズが指定される。
【００４０】
図４は、ＫＩＣＫコマンドのデータフォーマット１４０を示す。ＫＩＣＫコマンドは、グラフィック演算ユニット４０における各種グラフィック処理を開始させる命令である。制御ユニット２０の実行部２６がＫＩＣＫコマンドを実行すると、グラフィック演算ユニット４０はグラフィックメモリ１０にアクセスしてテクスチャデータとオブジェクトデータを読み出し、フレームバッファに描画する。
【００４１】
タイプ１４１にはＫＩＣＫコマンドであることを示す「２」を指定する。コンフィグタグ１４２は、コンフィグデータを使用するか否かを指定する。ＫＩＣＫ  ＩＤ１４３は、ＫＩＣＫコマンドのＩＤを指定する。このＫＩＣＫ  ＩＤは、ＫＩＣＫプロセスが終了すると直ちにグラフィックプロセッサ１００の内部レジスタ５４に書き込まれる。サブプロセッサ３０は、ＫＩＣＫ  ＩＤを格納した内部レジスタ５４をポーリングすることで、ＫＩＣＫプロセスの終了を確認することもできる。コンフィグデータアドレス１４４およびコンフィグデータサイズ１４５には、それぞれコンフィグデータのアドレスまたはデータサイズが指定される。制御ユニット２０の実行部２６は、ＫＩＣＫコマンドを実行すると、コンフィグデータをグラフィック演算ユニット４０に転送した後に、グラフィック演算ユニット４０が起動される。グラフィック演算ユニット４０は、コンフィグデータの内容にしたがってプログラムをロードした後、グラフィック処理を実行する。コンフィグデータは、予め決定されているか、もしくはメインプロセッサ２００において作成される。
【００４２】
図５は、ＮＯＴＩＦＹコマンドのデータフォーマット１５０を示す。ＮＯＴＩＦＹコマンドは、グラフィックプロセッサ１００からメインプロセッサ２００に対して通知をするために使用される。制御ユニット２０の実行部２６がＮＯＴＩＦＹコマンドを実行すると、グラフィックプロセッサ１００内における所定のグラフィック処理の終了が、メインプロセッサ２００内のサブプロセッサ３０に通知される。具体的には、ＮＯＴＩＦＹコマンドは、画像処理側ＤＭＡコントローラ２８によるＤＭＡ転送が終了したこと、または、グラフィック演算ユニット４０におけるグラフィック処理が終了したことをサブプロセッサ３０に通知する。グラフィックプロセッサ１００においていずれの処理の終了を通知するかは、コマンドリストにおけるＮＯＴＩＦＹコマンドと他のコマンドとの配置で指定することができる。
【００４３】
タイプ１５１にはＮＯＴＩＦＹコマンドであることを示す「３」を指定する。サブプロセッサＩＤ１５４は、信号を通知するサブプロセッサ３０を指定する。全てのサブプロセッサ３０を指定することも可能である。
【００４４】
例えば、グラフィックメモリには、限られた数しかコンテクストバッファ１２が設けられておらず、これをグラフィック処理に必要なデータ（例えばテクスチャデータ）の格納領域として共用しなければならない。そこで、例えば、グラフィック処理に必要なデータのＤＭＡ転送が終了したことをＮＯＴＩＦＹコマンドでサブプロセッサ３０に伝え、これに応じてサブプロセッサ３０によりジオメトリ処理の結果、例えば頂点データなどをグラフィックメモリ１０に転送するようにすれば、グラフィック演算ユニット４０およびサブプロセッサ３０のアイドリング時間が削減され、結果的に演算時間の短縮に寄与することができる。このように、ＮＯＴＩＦＹコマンドは、グラフィックプロセッサ１００とメインプロセッサ２００とを協調動作させ、情報処理装置１０００全体の処理効率を向上させるために必要となる命令である。ＮＯＴＩＦＹコマンドのより具体的な使用方法は、図１１〜図１７を参照する実施例において説明する。
【００４５】
図６は、ＳＹＮＣコマンドのデータフォーマット１６０を示す。ＳＹＮＣコマンドは、プロセス間に依存関係がある場合に、所定のコマンドプロセスの終了と、サブプロセッサ３０における処理の終了とを同期させるコマンドである。
【００４６】
タイプ１６１にはＳＹＮＣコマンドであることを示す「４」を指定する。ＳＹＮＣ対象１６２には、ＤＭＡコマンド、ＫＩＣＫコマンド、サブプロセッサからのオブジェクトのＤＭＡ転送のいずれの終了を確認するかを指定する。ＩＤ１６４には、ＤＭＡコマンドまたはＫＩＣＫコマンドのＩＤを指定する。レジスタ１６５は、フラグレジスタを指定する。サブプロセッサ３０は、自身の処理が終了すると、内部レジスタ５４にフラグを立てる。後述するように、ＳＹＮＣコマンドによって、テクスチャデータとオブジェクトデータの両方の転送終了待ちをすることができる。
【００４７】
実行部２６は、内部レジスタ５４を参照することで、ＤＭＡコマンド、ＫＩＣＫコマンドまたはサブプロセッサの終了を確認する。実行部２６がＳＹＮＣコマンドを実行すると、フォーマットで指定されたプロセス依存関係に応じて、以下に述べるような複数の動作が発生する。第１に、時間的に前に実行されたＤＭＡコマンドにしたがったデータのＤＭＡ転送が完了するまで、グラフィック演算ユニット４０におけるそのデータを利用するグラフィック処理の開始を保留させる。第２に、時間的に前に実行されたＫＩＣＫコマンドによってグラフィック演算ユニット４０においてグラフィック処理が実行されているときに、その処理が終了するまでコマンドリスト内の後続のコマンドの実行を保留する。第３に、サブプロセッサ３０におけるデータ処理が終了するまで、コマンドリスト内の後続のコマンドの実行を保留する。
【００４８】
例えば、ＫＩＣＫコマンドを実行しようとする場合、グラフィック処理に必要なテクスチャデータなどのデータがグラフィックメモリ上に揃わなければ、グラフィック演算ユニット４０を起動することはできない。そのような場合に、テクスチャデータおよびオブジェクトデータのＤＭＡ転送プロセスの終了をＳＹＮＣコマンドで確認し、それに応じてＫＩＣＫコマンドを実行するようにすれば、グラフィック処理を効率的に実行することができる。また、グラフィック演算ユニット４０におけるグラフィック処理の終了をＳＹＮＣコマンドで取得し、それに応じてＤＭＡコマンドを実行するようにすれば、グラフィック演算ユニット４０のアイドリング時間を削減することができる。
【００４９】
このように、ＳＹＮＣコマンドによって、ＤＭＡプロセスまたはＫＩＣＫプロセスの終了と、サブプロセッサにおける処理の終了を同期させることが可能になる。これによって、プロセス依存関係がある多数のコマンドを含む場合でも、グラフィックプロセッサ１００の動作を適切に制御し、ひいては、グラフィックプロセッサ１００とメインプロセッサ２００の動作を協調させることができる。ＳＹＮＣコマンドのより具体的な使用方法については、図１１〜図１７を参照する実施例において説明する。
【００５０】
なお、ＳＹＮＣコマンドは、ＤＭＡコマンド、ＫＩＣＫコマンドおよびサブプロセッサひとつずつの終了を確認することもできるし、２個のＳＹＮＣコマンドを連続させて記述することで、多数のプロセスの終了を同期させることもできる。
【００５１】
図示しないＷＡＩＴコマンドは、ＳＹＮＣコマンドと異なり、グラフィックプロセッサ１００において実行中である全てのコマンドプロセスが終了するまで、以降のコマンドの実行を保留する。タイプには、ＷＡＩＴコマンドであることを示す「５」が指定される。
【００５２】
図７は、ＮＥＸＴコマンドのデータフォーマット１７０を示す。ＮＥＸＴコマンドは、ひとかたまりのコマンドリストの終了を示すとともに、次に実行すべきコマンドリストのアドレスを示すコマンドである。タイプ１７１には、ＮＥＸＴコマンドであることを示す「６」が指定される。次アドレス１７４には、次に実行すべきコマンドリストの先頭のアドレスが指定される。
【００５３】
本実施の形態では、複数のサブプロセッサ３０が並列的に描画データの演算を実行し、そのためのグラフィック処理に必要な非グラフィック処理命令を含むコマンド列を各サブプロセッサ３０が独立して作成する。コマンドリストは、作成された順にメインメモリ５０に格納される。したがって、制御ユニット２０では、それら複数のコマンドリストの実行順序を知ることができない。そこで、ＮＥＸＴコマンドにより次に実行すべきコマンドリストのアドレスを指定することによって、サブプロセッサ３０における処理の前後に関係なく、またメインメモリ５０内のロケーションに関係なく、コマンドリストを実行することができる。
【００５４】
図示しないＥＮＤコマンドは、コマンドリストの終了をセットする命令であり、実行部２６がＥＮＤコマンドを実行すると、コマンドリストの開始アドレスに移動する。タイプ番号は「７」である。
【００５５】
図８は、ＮＥＸＴコマンドの使用方法を説明する図である。図示するように、連続して実行実施されるべきコマンドリスト２０２、２０４、２０６が存在するとする。これらのコマンドリストは、その実行順序に関係なくメインメモリ５０に転送される。コマンドリスト２０２、２０４の末尾にはＮＥＸＴコマンドが埋め込まれており、このＮＥＸＴコマンドには次に実行すべきコマンドリストの先頭アドレスが書き込まれている。また、コマンドリスト２０６の末尾にはＥＮＤコマンドが埋め込まれている。
【００５６】
画像処理側ＤＭＡコントローラ２８は、予め定められている開始アドレスから始まっているコマンドリスト２０２を第１のリストとしてメインメモリ５０から取り出す。そして、コマンドリスト２０２のＮＥＸＴコマンドによって、画像処理側ＤＭＡコントローラ２８は次に実行すべきコマンドリスト２０４をメインメモリ５０から取り出すことができる。同様に、コマンドリスト２０４のＮＥＸＴコマンドによって、その次に実行すべきコマンドリスト２０６を取り出すことができる。
【００５７】
管理プロセッサ３２は、各サブプロセッサ３０で作成されたコマンドリストを解析して、必要なＮＥＸＴコマンドを各コマンドリストに埋め込むように構成されている。または、サブプロセッサ３０が互いにコマンドリストを交換し合うことにより、必要なＮＥＸＴコマンドを埋め込むように構成してもよい。つまり、あるサブプロセッサＡがメモリ上のあるアドレスを取得するとき、他のサブプロセッサによるメインメモリ５０へのアクセスをロックする。そして、サブプロセッサＡがコマンドリストをメインメモリ５０へ保存した後、他のプロセッサによるメインメモリへのアクセスロックを解除する。続いて、サブプロセッサＢがメインメモリの次アドレスを取得し、サブプロセッサＡの作成したコマンドリストにこのアドレスを含むＮＥＸＴコマンドを追加する。この処理を繰り返すことによって、必要なＮＥＸＴコマンドを各コマンドリストに埋め込むことができる。
【００５８】
図示しないＰＥＲＦコマンドは、コマンドプロセスの実行サイクル数を計測するための命令である。タイプ番号は「９」が指定される。制御ユニット２０の実行部２６がＰＥＲＦコマンドを実行すると、非グラフィック処理命令にしたがったグラフィック処理を実行したときグラフィックプロセッサにおいて要した実行サイクル数が計測される。この実行サイクル数は、例えば、制御ユニット２０のクロックに基づいてカウントされる。この計時命令は、グラフィック処理の効率などのデータをユーザに提供するときに主に使用される。
【００５９】
以上述べたように、各非グラフィック処理系命令は、グラフィック処理やＤＭＡコントローラの開始、終了に関係するものにすぎず、グラフィック演算ユニット４０におけるグラフィック処理を直接操作している命令、すなわち処理内容を規定している命令ではないことに注意されたい。
【００６０】
図９は、情報処理装置１０００においてＤＭＡ転送されるデータを示す。これらのデータは、制御ユニット２０により利用されるデータ２１０と、グラフィック演算ユニット４０により利用されるデータ２２０とに分けることができる。
【００６１】
コンフィグデータ２１２には、シェーダプログラムなどのアドレスが指定されている。コマンドリスト２１４は、上述した非グラフィック処理系命令からなる。制御側ＤＭＡコントローラ３４は、コンフィグデータ２１２、コマンドリスト２１４および頂点データ２２２の転送を制御する。コンフィグデータ２１２とコマンドリスト２１４は、グラフィックプロセッサ１００の制御ユニット２０のメモリ領域に転送される。頂点データ２２２は、グラフィックメモリ１０に転送される。制御側ＤＭＡコントローラ３４によってＤＭＡ転送される場合、転送先のメモリ確保やバッファ管理は、メインプロセッサ側で処理される。
画像処理側ＤＭＡコントローラ２８は、テクスチャデータ２２６、パラメータデータ２２４およびシェーダプログラム２２８の転送を制御する。テクスチャデータ２２６は、グラフィックメモリ１０内のバッファ１２に転送される。パラメータデータ２２４とシェーダプログラム２２８は、グラフィック演算ユニット４０のメモリ領域に転送される。
【００６２】
次に、非グラフィック処理系命令にしたがった情報処理装置１０００の動作を説明する。
図１０は、あるオブジェクトをフレームバッファに描画するときのメインプロセッサ２００とグラフィックプロセッサ１００における処理とデータの流れを示すフローチャートである。以下、図１を参照しつつ、各処理を説明する。
【００６３】
まず、メインプロセッサ２００は、オブジェクトの描画に必要なジオメトリデータなどのデータの作成、ロード、解析を実行する（Ｓ１０）。続いてメインプロセッサ２００は、オブジェクトのアドレス解決を実行し、転送先であるメインメモリ５０におけるデータレイアウトを決定し（Ｓ１２）、メインメモリ５０に格納する。そして、メインプロセッサ２００は、オブジェクトの描画に必要となるコマンドリストとコンフィグデータを作成し（Ｓ１４）、メインメモリ５０に格納する。メインプロセッサ２００の制御側ＤＭＡコントローラ３４は、作成されたコマンドリストとコンフィグデータとを、グラフィックプロセッサ１００の制御ユニット２０にＤＭＡ転送する（Ｓ１６）。これが終了すると、メインプロセッサ２００は、制御ユニット２０に対して、コマンドリストの実行を開始するように通知する（Ｓ１８）。
【００６４】
グラフィックプロセッサ１００の制御ユニット２０がメインプロセッサ２００からコマンドリスト実行開始の通知を受け取ると、制御ユニット２０内の命令解析部２４がコマンドリストの解析を開始する（Ｓ２２）。実行部２６がコマンドリスト内のＤＭＡコマンドを実行すると、画像処理側ＤＭＡコントローラ２８は、ＤＭＡコマンドのタグアドレスを参照して、オブジェクトの描画に必要となるテクスチャデータなどのデータをメインメモリ５０からグラフィックメモリ１０内のバッファ１２に転送する（Ｓ２４）。実行部２６がコマンドリスト内のＳＹＮＣコマンドを実行すると、グラフィック演算ユニット４０は、Ｓ２４にしたがって実行中のテクスチャデータの転送が終了するまで以降のコマンドリストの実行を保留する（Ｓ２６）。
【００６５】
さて、この間にメインプロセッサ２００では、オブジェクトのジオメトリ処理を実行して頂点データおよびパラメータデータを算出し（Ｓ２０）、メインメモリ５０に格納しておく。メインプロセッサ２００の制御側ＤＭＡコントローラ３４は、頂点データをグラフィックメモリ１０に転送し（Ｓ２８）、ジオメトリ処理が終了したことを示すフラグを内部レジスタ５４にセットする（Ｓ３０）。制御ユニット２０内の実行部２６は、コマンドリスト内のＳＹＮＣコマンドにしたがって、頂点データの転送が終了するまで以降のコマンドリストの実行を保留する（Ｓ３２）。ここまでの処理によって、オブジェクトの描画に必要となる各種データが、グラフィックメモリ１０上に揃ったことになる。
【００６６】
この状態において、実行部２６がＫＩＣＫコマンドを実行すると、制御ユニット２０はコンフィグデータをグラフィック演算ユニット４０に転送し、グラフィック演算ユニット４０の処理が起動され、バッファ１２を読み出す（Ｓ３４）。グラフィック演算ユニット４０は、コンフィグデータに基づいてプログラムを読み出す。グラフィック演算ユニット４０における処理が終了し、フレームバッファへのオブジェクトの描画が完了すると、グラフィック演算ユニット４０は内部レジスタ５４にＫＩＣＫプロセスが終了したことを示すフラグをセットする。グラフィック演算ユニット４０は、ＳＹＮＣコマンドによりオブジェクトの描画終了を確認すると（Ｓ３６）、ＮＯＴＩＦＹコマンドにより、サブプロセッサ３０に対してオブジェクトの描画が終了したことを通知する（Ｓ３８）。この通知により、メインプロセッサ２００は、次のオブジェクトの準備を開始することができる。
【００６７】
情報処理装置１０００においては、サブプロセッサ３０におけるジオメトリ処理と、オブジェクトデータおよびテクスチャデータのＤＭＡ転送と、グラフィック演算ユニット４０におけるグラフィック処理の全ての同期をとる必要があるので、制御側ＤＭＡコントローラ３４、画像処理側ＤＭＡコントローラ２８両方の処理手順、処理速度を考慮したコマンドリストを作成する必要がある。以下では、コマンドリストの例を挙げて、これにしたがったメインプロセッサ２００とグラフィックプロセッサ１００の協調動作を説明する。
なお、以下の説明においては、画像処理側ＤＭＡコントローラ２８によるテクスチャデータのＤＭＡ転送は同時に２つ、グラフィック演算ユニット４０におけるオブジェクトの描画処理はひとつのみ実行可能であるものとする。また、グラフィックメモリ１０には、テクスチャデータを格納するコンテクストバッファ１２として、バッファＡ、バッファＢが備えられているとする。
【００６８】
図１１は、コマンドリストの一例であるコマンドリスト７００を示す。なお、コマンドの解釈はリスト通りに行われるが、実際の処理は必ずしもコマンドの順序で起きるわけではなく、ＤＭＡ転送されるデータ量やグラフィック処理に要する時間により前後する。
【００６９】
図１１において、「タイプ」はコマンド名を表し、「属性」はＳＹＮＣコマンドで同期させるべき対象を略号で示す。「Ｄ」はＤＭＡプロセス、「Ｆ」はサブプロセッサのジオメトリ処理、「Ｋ」はＫＩＣＫプロセスを表している。「ＩＤ」は、上述したＤＭＡ  ＩＤまたはＫＩＣＫ  ＩＤであり、このＩＤによって、複数あるＤＭＡプロセスまたはＫＩＣＫプロセスのうち待機すべきプロセスを特定することができる。また、図中の「Ｔｅｘ」はテクスチャを、「Ｏｂｊ」はオブジェクトを、「ＳＰＵ」はサブプロセッサをそれぞれ表す。符号Ａ、Ｂは２つのバッファ１２を表す。例えば「Ｏｂｊ  Ａ」は、バッファＡにＤＭＡ転送されるオブジェクトを表し、「Ｔｅｘ  Ａ」は、オブジェクトＡのグラフィック処理に必要であり、バッファＡにＤＭＡ転送されるテクスチャデータを表す。なお、実際のグラフィック処理には、テクスチャデータ以外にカラーデータやα値のデータなども必要となるが、ここではテクスチャデータを代表として示している。「ＳＰＵ  Ａ」は、バッファＡにＤＭＡ転送されるオブジェクトＡを処理するサブプロセッサを表す。
【００７０】
実行部２６は、コマンドリスト７００を開始アドレスから順次実行する。まず、ＩＤ「１」を付与されたＤＭＡコマンド７０１と、ＩＤ「２」を付与されたＤＭＡコマンド７０２を実行する。これにより、画像処理側ＤＭＡコントローラ２８は、メインメモリ５０からテクスチャＡ（Ｔｅｘ  Ａ）をバッファＡに転送開始し、テクスチャＢ（Ｔｅｘ  Ｂ）をバッファＢに転送開始する。
このとき、制御側ＤＭＡコントローラ３４は、バッファＡへのテクスチャＡのＤＭＡ転送に並行して、サブプロセッサＡからグラフィックメモリ１０へのオブジェクトＡ（Ｏｂｊ  Ａ）の転送を実行する。また、制御側ＤＭＡコントローラ３４は、バッファＢへのテクスチャＢのＤＭＡ転送に並行して、サブプロセッサＢからグラフィックメモリ１０へのオブジェクトＢ（Ｏｂｊ  Ｂ）の転送を実行する。なお、制御側ＤＭＡコントローラ３４は、実行部２６によるコマンドの実行とは無関係に動作する。
【００７１】
グラフィック演算ユニット４０は、ＳＹＮＣコマンド７０３にしたがって、ＩＤ「１」を付与されたＤＭＡコマンド７０１に対応するバッファＡへのテクスチャＡの転送の終了と、制御側ＤＭＡコントローラ３４によるサブプロセッサＡ（ＳＰＵ  Ａ）からグラフィックメモリ１０へのオブジェクトＡの転送の終了を確認する。ＩＤ「１」を付与されたＫＩＣＫコマンド７０４にしたがって、グラフィック演算ユニット４０は、バッファＡにリードアクセスしてオブジェクトＡに対するグラフィック処理を開始する。
【００７２】
続いて、グラフィック演算ユニット４０は、ＳＹＮＣコマンド７０５にしたがって、ＩＤ「２」を付与されたＤＭＡコマンド７０２に対応するバッファＢへのテクスチャＢの転送の終了と、制御側ＤＭＡコントローラ３４によるサブプロセッサＢ（ＳＰＵ  Ｂ）からグラフィックメモリ１０へのオブジェクトＢの転送の終了を確認する。ＩＤ「２」を付与されたＫＩＣＫコマンド７０６にしたがって、グラフィック演算ユニット４０は、バッファＢにリードアクセスしてオブジェクトＢに対するグラフィック処理を開始する。
【００７３】
続いてグラフィック演算ユニット４０は、ＳＹＮＣコマンド７０７により、ＩＤ「１」を付与されたＫＩＣＫコマンド７０４に対応するオブジェクトＡのグラフィック処理の終了を確認する。グラフィック処理済のオブジェクトＡはグラフィックメモリ１０のフレームバッファに書き出される。ＮＯＴＩＦＹコマンド７０８により、グラフィック演算ユニット４０はサブプロセッサＡ（ＳＰＵ  Ａ）に対してオブジェクトＡのグラフィック処理が完了したことを通知する。これによってサブプロセッサＡは、バッファＡが空いていることを知る。
【００７４】
画像処理側ＤＭＡコントローラ２８は、ＩＤ「３」を付与されたＤＭＡコマンド７０９にしたがって、空きができたバッファＡに対して、新たなオブジェクトＡのグラフィック処理に必要となるテクスチャＡの転送を開始する。
制御側ＤＭＡコントローラ３４は、バッファＡへのテクスチャＡのＤＭＡ転送に並行して、サブプロセッサＡからグラフィックメモリ１０へのオブジェクトＡのＤＭＡ転送を実行する。
【００７５】
グラフィック演算ユニット４０は、ＳＹＮＣコマンド７１０により、ＩＤ「３」を付与されたＤＭＡコマンド７０９に対応するバッファＡへのテクスチャＡの転送の終了と、サブプロセッサＡからグラフィックメモリ１０への新たなオブジェクトＡの転送の終了を確認する。ＩＤ「３」を付与されたＫＩＣＫコマンド７１１にしたがって、グラフィック演算ユニット４０は、バッファＡにリードアクセスしてオブジェクトＡに対するグラフィック処理を実行する。
【００７６】
グラフィック演算ユニット４０は、ＳＹＮＣコマンド７１２により、ＩＤ「２」を付与されたＫＩＣＫコマンド７０６に対応するオブジェクトＢのグラフィック処理の終了を確認する。グラフィック処理済のオブジェクトＢはグラフィックメモリ１０のフレームバッファに書き出される。ＮＯＴＩＦＹコマンド７１３により、グラフィック演算ユニット４０はサブプロセッサＢに対してオブジェクトＢのグラフィック処理が完了したことを通知する。
【００７７】
画像処理側ＤＭＡコントローラ２８は、ＩＤ「４」を付与されたＤＭＡコマンド７１４にしたがって、空きができたバッファＢに対して、新たなオブジェクトＢのグラフィック処理に必要となるテクスチャＢの転送を開始する。
制御側ＤＭＡコントローラ３４は、バッファＢへのテクスチャＢのＤＭＡ転送に並行して、サブプロセッサＢからグラフィックメモリ１０へのオブジェクトＢのＤＭＡ転送を実行する。
【００７８】
グラフィック演算ユニット４０は、ＳＹＮＣコマンド７１５にしたがって、ＩＤ「４」を付与されたＤＭＡコマンド７１４に対応するバッファＢへのテクスチャＢの転送の終了と、サブプロセッサＢからバッファＢへの新たなオブジェクトＢの転送の終了を確認する。ＩＤ「４」を付与されたＫＩＣＫコマンド７１６にしたがって、グラフィック演算ユニット４０は、バッファＢにリードアクセスしてオブジェクトＢに対するグラフィック処理を開始する。
【００７９】
実行部２６がＷＡＩＴコマンド７１７を実行すると、グラフィック演算ユニット４０は、オブジェクトＡとオブジェクトＢの２回目のグラフィック処理の終了を待機し、ＮＯＴＩＦＹコマンド７１８により、グラフィック処理の終了を全サブプロセッサに対して通知する。
【００８０】
図１２は、図１１のコマンドリスト７００にしたがったテクスチャデータの転送を模式的に示す。ＤＭＡコマンドにしたがって、テクスチャＡがバッファＡに転送されるのと並行して、サブプロセッサからはオブジェクトＡがグラフィックメモリに転送される。テクスチャＡとオブジェクトＡの転送が両方とも終了すると、グラフィック演算ユニット４０はオブジェクトＡのグラフィック処理を実行する。また、ＤＭＡコマンドにしたがって、テクスチャＢがバッファＢに転送されるのと並行して、サブプロセッサからはオブジェクトＢがグラフィックメモリに転送される。テクスチャＢとオブジェクトＢの転送が両方とも終了すると、グラフィック演算ユニット４０はオブジェクトＢのグラフィック処理を実行する。以降、上記の処理が繰り返される。
【００８１】
図１３は、図１１のコマンドリスト７００にしたがったときのバッファＡ、バッファＢの状態を示すチャートである。図中の符号は、図１１のコマンドリスト内のコマンドに与えた符号と対応する。オブジェクトＡの処理に必要なテクスチャＡがメインメモリ５０からバッファＡに転送され（７０１）、またオブジェクトＢの処理に必要なテクスチャＢがメインメモリ５０からバッファＢに転送される（７０２）。ＳＹＮＣコマンドによりオブジェクトＡとテクスチャＡの転送の終了を確認すると、ＫＩＣＫコマンドによりそれらがグラフィック演算ユニット４０によりバッファＡから読み出され、グラフィック処理が開始される（７０４）。以降、ＤＭＡコマンドによるバッファＡ、バッファＢに対するＤＭＡ転送と、ＫＩＣＫコマンドによるバッファＡ、バッファＢからの読み出しが順番に繰り返される。
なお、図１３においては、簡単のために全てのステージにおける処理が同時間で終了するように描かれているが、実際の処理においてはＤＭＡ転送されるデータ量やグラフィック処理に要する時間により前後する。
【００８２】
情報処理装置１０００においては、画像処理側ＤＭＡコントローラはテクスチャデータのＤＭＡ転送を同時に２つ実行できるが、バッファが２つであると、実装においてはグラフィック演算ユニット４０およびメインプロセッサ２００のアイドリング時間が長くなってしまい、情報処理装置１０００の処理効率の向上を妨げるおそれがある。そこで、グラフィックメモリ１０にバッファ１２を３つ以上設け、グラフィック演算ユニット４０およびメインプロセッサ２００のアイドリング時間を短縮することで、情報処理装置全体の処理効率を高める方法について説明する。
【００８３】
図１４は、グラフィックメモリ１０がバッファＡ、バッファＢ、バッファＣの３つを備えるとした場合のコマンドリスト８００の一例を示す。図１５は、図１４のコマンドリストにしたがったときのバッファＡ、バッファＢ、バッファＣの状態を示すチャートである。図１４、図１５中の「Ｔｅｘ」「Ｏｂｊ」「ＳＰＵ」は、図１１の場合と同様にそれぞれ「テクスチャ」「オブジェクト」「サブプロセッサ」を表す。また、「ＩＤＬＥ」は、画像処理側ＤＭＡコントローラ２８による各バッファへのＤＭＡ転送が実行されていない状態を表す。
【００８４】
以下、図１５のチャートを参照しつつ、図１４のコマンドリスト８００を説明する。
実行部２６は、コマンドリスト８００を開始アドレスから順次実行する。まず、ＩＤ「１」を付与されたＤＭＡコマンド８０１と、ＩＤ「２」を付与されたＤＭＡコマンド８０２を実行する。これにより、画像処理側ＤＭＡコントローラ２８は、メインメモリ５０からテクスチャＡ（Ｔｅｘ  Ａ）をバッファＡに転送開始し、テクスチャＢ（Ｔｅｘ  Ｂ）をバッファＢに転送開始する。
このとき、制御側ＤＭＡコントローラ３４は、バッファＡへのテクスチャＡのＤＭＡ転送に並行して、サブプロセッサＡからグラフィックメモリ１０へのオブジェクトＡ（Ｏｂｊ  Ａ）の転送を実行する。また、制御側ＤＭＡコントローラ３４は、バッファＢへのテクスチャＢのＤＭＡ転送に並行して、サブプロセッサＢからグラフィックメモリ１０へのオブジェクトＢ（Ｏｂｊ  Ｂ）の転送を実行する。
【００８５】
グラフィック演算ユニット４０は、ＳＹＮＣコマンド８０３にしたがって、ＩＤ「１」を付与されたＤＭＡコマンド８０１に対応するバッファＡへのテクスチャＡの転送の終了と、制御側ＤＭＡコントローラ３４によるサブプロセッサＡ（ＳＰＵ  Ａ）からグラフィックメモリ１０へのオブジェクトＡの転送の終了を確認する。ＩＤ「１」を付与されたＫＩＣＫコマンド８０４にしたがって、グラフィック演算ユニット４０は、バッファＡにリードアクセスしてオブジェクトＡに対するグラフィック処理を開始する。
【００８６】
画像処理側ＤＭＡコントローラ２８は、ＩＤ「３」を付与されたＤＭＡコマンド８０５により、バッファＣへのテクスチャＣ（Ｔｅｘ  Ｃ）の転送を開始する。このとき、制御側ＤＭＡコントローラ３４は、サブプロセッサＣからグラフィックメモリ１０へのオブジェクトＣ（Ｏｂｊ  Ｃ）の転送を実行する。
【００８７】
グラフィック演算ユニット４０は、ＳＹＮＣコマンド８０６により、ＩＤ「２」を付与されたＤＭＡコマンド８０２に対応するバッファＢへのテクスチャＢの転送の終了と、制御側ＤＭＡコントローラ３４によるサブプロセッサＢ（ＳＰＵ  Ｂ）からグラフィックメモリ１０へのオブジェクトＢの転送の終了を確認する。ＩＤ「２」を付与されたＫＩＣＫコマンド８０７にしたがって、グラフィック演算ユニット４０は、バッファＢにリードアクセスしてオブジェクトＢに対するグラフィック処理を開始する。
【００８８】
グラフィック演算ユニット４０は、ＳＹＮＣコマンド８０８により、ＩＤ「１」を付与されたＫＩＣＫコマンド８０４に対応するオブジェクトＡのグラフィック処理の終了を確認する。グラフィック処理済のオブジェクトＡは、グラフィックメモリ１０のフレームバッファに書き出される。ＮＯＴＩＦＹコマンド８０９により、グラフィック演算ユニット４０はサブプロセッサＡ（ＳＰＵ  Ａ）に対してオブジェクトＡのグラフィック処理が完了したことを通知する。これによってサブプロセッサＡは、バッファＡが空いていることを知る。
【００８９】
画像処理側ＤＭＡコントローラ２８は、ＩＤ「４」を付与されたＤＭＡコマンド８１０にしたがって、空きができたバッファＡに対して、新たなオブジェクトＡのグラフィック処理に必要となるテクスチャＡのＤＭＡ転送を開始する。
制御側ＤＭＡコントローラ３４は、バッファＡへのテクスチャＡのＤＭＡ転送に並行して、サブプロセッサＡからグラフィックメモリ１０へのオブジェクトＡのＤＭＡ転送を実行する。
【００９０】
グラフィック演算ユニット４０は、ＳＹＮＣコマンド８１１により、ＩＤ「３」を付与されたＤＭＡコマンド８０５に対応するバッファＣへのテクスチャＣの転送の終了と、サブプロセッサＣ（ＳＰＵ  Ｃ）からグラフィックメモリ１０へのオブジェクトＣの転送の終了を確認する。ＩＤ「３」を付与されたＫＩＣＫコマンド８１２にしたがって、グラフィック演算ユニット４０は、バッファＣにリードアクセスしてオブジェクトＣに対するグラフィック処理を実行する。
【００９１】
以下、コマンド８１３〜８２４にしたがって、上述と同様の手順が繰り返される。
実行部２６がＷＡＩＴコマンド８２５を実行すると、グラフィック演算ユニット４０は、オブジェクトＡ〜Ｃの２回目のグラフィック処理の終了を待機し、ＮＯＴＩＦＹコマンド８２６により、グラフィック処理が終了したことを全サブプロセッサに対して通知する。
【００９２】
コマンドリストは先頭から順に実行されていくので、コマンドを適切に配置することによって、グラフィック演算ユニット４０のアイドリング時間を削減することができる。図１５を参照して説明すると、バッファＡへのテクスチャＡとオブジェクトＡの転送終了をＳＹＮＣコマンド８０３により確認したのち、ＫＩＣＫコマンド８０４によりグラフィック演算ユニット４０はバッファＡにアクセスしてグラフィック処理を開始する。この間に、バッファＢへのテクスチャＢとオブジェクトＢの転送と、バッファＣへのテクスチャＣとオブジェクトＣの転送が行われる。
【００９３】
その後も、バッファＢへのテクスチャＢとオブジェクトＢの転送終了を確認した後、オブジェクトＢのグラフィック処理を開始し、バッファＣへのテクスチャＣとオブジェクトＣの転送終了を確認した後、オブジェクトＣのグラフィック処理を開始する、といったように、グラフィック演算ユニット４０を、オブジェクトＡ、オブジェクトＢ、オブジェクトＣの順で演算させる。このように、ＳＹＮＣコマンドとＫＩＣＫコマンドを適切に配置したコマンドリストを作成することによって、グラフィック演算ユニット４０のアイドリング時間を短縮することができる。
【００９４】
また、サブプロセッサは、オブジェクトを転送した時点から別のオブジェクトの演算を実行し、グラフィック処理の終了通知を受けると直ちに、そのオブジェクトを転送できる。したがって、サブプロセッサ側のアイドリング時間も短縮することができる。
【００９５】
図１６は、グラフィックメモリ１０がバッファＡ、バッファＢ、バッファＣ、バッファＤの４つを備えるときのコマンドリスト９００の一例を示す。図１７は、図１６のコマンドリストにしたがったときのバッファＡ〜バッファＤの状態を示すチャートである。
【００９６】
以下、図１７のチャートを参照しつつ、図１６のコマンドリスト９００を説明する。
実行部２６は、コマンドリスト９００を開始アドレスから順次実行する。まず、ＩＤ「１」を付与されたＤＭＡコマンド９０１と、ＩＤ「２」を付与されたＤＭＡコマンド９０２を実行する。これにより、画像処理側ＤＭＡコントローラ２８は、メインメモリ５０からテクスチャＡ（Ｔｅｘ  Ａ）をバッファＡに転送開始し、テクスチャＢ（Ｔｅｘ  Ｂ）をバッファＢに転送開始する。
このとき、制御側ＤＭＡコントローラ３４は、バッファＡへのテクスチャＡのＤＭＡ転送に並行して、サブプロセッサＡからグラフィックメモリ１０へのオブジェクトＡ（Ｏｂｊ  Ａ）の転送を実行する。また、制御側ＤＭＡコントローラ３４は、バッファＢへのテクスチャＢのＤＭＡ転送に並行して、サブプロセッサＢからグラフィックメモリ１０へのオブジェクトＢ（Ｏｂｊ  Ｂ）の転送を実行する。
【００９７】
グラフィック演算ユニット４０は、ＳＹＮＣコマンド９０３にしたがって、ＩＤ「１」を付与されたＤＭＡコマンド９０１に対応するバッファＡへのテクスチャＡの転送の終了と、制御側ＤＭＡコントローラ３４によるサブプロセッサＡ（ＳＰＵ  Ａ）からグラフィックメモリ１０へのオブジェクトＡの転送の終了を確認する。ＩＤ「１」を付与されたＫＩＣＫコマンド９０４にしたがって、グラフィック演算ユニット４０は、バッファＡにリードアクセスしてオブジェクトＡに対するグラフィック処理を開始する。
【００９８】
画像処理側ＤＭＡコントローラ２８は、ＩＤ「３」を付与されたＤＭＡコマンド８０５により、バッファＣへのテクスチャＣ（Ｔｅｘ  Ｃ）の転送を開始する。このとき、制御側ＤＭＡコントローラ３４は、サブプロセッサＣからグラフィックメモリ１０へのオブジェクトＣ（Ｏｂｊ  Ｃ）の転送を実行する。
【００９９】
グラフィック演算ユニット４０は、ＳＹＮＣコマンド９０６により、ＩＤ「２」を付与されたＤＭＡコマンド９０２に対応するバッファＢへのテクスチャＢの転送の終了と、制御側ＤＭＡコントローラ３４によるサブプロセッサＢ（ＳＰＵ  Ｂ）からグラフィックメモリ１０へのオブジェクトＢの転送の終了を確認する。ＩＤ「２」を付与されたＫＩＣＫコマンド９０７にしたがって、グラフィック演算ユニット４０は、バッファＢにリードアクセスしてオブジェクトＢに対するグラフィック処理を開始する。
【０１００】
画像処理側ＤＭＡコントローラ２８は、ＩＤ「４」を付与されたＤＭＡコマンド９０８により、バッファＤへのテクスチャＤ（Ｔｅｘ  Ｄ）の転送が開始される。このとき、制御側ＤＭＡコントローラ３４は、サブプロセッサＤからグラフィックメモリ１０へのオブジェクトＤ（Ｏｂｊ  Ｄ）の転送を実行する。
【０１０１】
グラフィック演算ユニット４０は、ＳＹＮＣコマンド９０９にしたがって、ＩＤ「３」を付与されたＤＭＡコマンド９０５に対応するバッファＣへのテクスチャＣの転送の終了と、制御側ＤＭＡコントローラ３４によるサブプロセッサＣ（ＳＰＵ  Ｃ）からグラフィックメモリ１０へのオブジェクトＣの転送の終了を確認する。ＩＤ「３」を付与されたＫＩＣＫコマンド９１０にしたがって、グラフィック演算ユニット４０は、バッファＣにリードアクセスしてオブジェクトＣに対するグラフィック処理を開始する。
【０１０２】
グラフィック演算ユニット４０は、ＳＹＮＣコマンド９１１により、ＩＤ「１」を付与されたＫＩＣＫコマンド９０４に対応するオブジェクトＡのグラフィック処理の終了を確認する。グラフィック処理済のオブジェクトＡは、グラフィックメモリ１０のフレームバッファに書き出される。ＮＯＴＩＦＹコマンド９１２により、グラフィック演算ユニット４０はオブジェクトＡのグラフィック処理が完了したことをサブプロセッサＡ（ＳＰＵ  Ａ）に通知する。これによってサブプロセッサＡは、バッファＡが空いていることを知る。
【０１０３】
画像処理側ＤＭＡコントローラ２８は、ＩＤ「５」を付与されたＤＭＡコマンド９１３にしたがって、空きができたバッファＡに対して、新たなオブジェクトＡのグラフィック処理に必要となるテクスチャＡのＤＭＡ転送を開始する。このとき、制御側ＤＭＡコントローラ３４は、バッファＡへのテクスチャＡのＤＭＡ転送に並行して、サブプロセッサＡからグラフィックメモリ１０へのオブジェクトＡのＤＭＡ転送を実行する。
【０１０４】
グラフィック演算ユニット４０は、ＳＹＮＣコマンド９１４により、ＩＤ「４」を付与されたＤＭＡコマンド９０８に対応するバッファＤへのテクスチャＤの転送の終了と、サブプロセッサＤ（ＳＰＵ  Ｄ）からグラフィックメモリ１０へのオブジェクトＤの転送の終了を確認する。ＩＤ「４」を付与されたＫＩＣＫコマンド９１５にしたがって、グラフィック演算ユニット４０は、バッファＤにリードアクセスしてオブジェクトＤに対するグラフィック処理を実行する。
【０１０５】
以下、コマンド９１６〜９３２にしたがって、上述と同様の手順が繰り返される。
実行部２６がＷＡＩＴコマンド９３３を実行すると、グラフィック演算ユニット４０は、オブジェクトＡ〜Ｄの２回目のグラフィック処理の終了を待機し、ＮＯＴＩＦＹコマンド９３４により、グラフィック処理が終了したことを全サブプロセッサに対して通知する。
【０１０６】
このように、ＳＹＮＣコマンドとＫＩＣＫコマンドを適切に配置することによって、グラフィック演算ユニット４０を、オブジェクトＡ、オブジェクトＢ、オブジェクトＣ、オブジェクトＤの順で演算させている。これによって、グラフィック演算ユニット４０のアイドリング時間を短縮することができる。
【０１０７】
このように、本実施の形態では、非グラフィック処理系命令からなるコマンドリストを組むことによって、グラフィックプロセッサにおけるグラフィック処理の順序を制御することができる。
【０１０８】
グラフィックメモリにバッファを４つ備えることの有利な点を、図１５と図１７とを比較して説明する。
図１５のバッファＡを見ると、ＫＩＣＫコマンド（例えばコマンド８０４）による描画が終了してから次回のＫＩＣＫコマンド（コマンド８１７）までの間には、バッファＢ、Ｃに対応するＫＩＣＫコマンド（コマンド８０７、８１２）分しか時間がない。これに対し、図１７のバッファＡの場合は、ＫＩＣＫコマンド（例えばコマンド９０４）による描画が終了してから次回のＫＩＣＫコマンド（コマンド９２０）までの間には、バッファＢ、Ｃ、Ｄに対応するＫＩＣＫコマンド（コマンド９０７、９１０、９１５）分の時間を持つことができる。
【０１０９】
言い換えると、図１７のバッファＡにおいては、ＫＩＣＫコマンドによる描画開始（例えばコマンド９０４）から次回のＫＩＣＫコマンド（コマンド９２０）までの間に、図１５のバッファＡと比べて「ＩＤＬＥ」状態が余分に含まれている。
この時間的余裕は次データの準備期間として働き、グラフィック演算ユニット４０、サブプロセッサ３０といった演算器をストールさせることなくビジー状態に保てるという利点がある。
また、ＮＯＴＩＦＹコマンドによるＫＩＣＫの終了通知がメインプロセッサ２００に到達するまでのレイテンシを、「ＩＤＬＥ」の時間に隠すことができるという利点もある。
【０１１０】
以上説明したように、本実施の形態によれば、非グラフィック処理系命令を通して、メインプロセッサ２００とグラフィックプロセッサ１００との協調動作をユーザが制御することが可能になる。
【０１１１】
本実施の形態における非グラフィック処理系命令は、制御ユニット２０に対する簡便な少数のコマンドを組み合わせることによって、グラフィック演算ユニットの動作を制御することができる。この非グラフィック処理系命令は、グラフィック演算ユニットにおける具体的なグラフィック処理は指定しないので、シェーダプログラム等のグラフィック処理を実行するプログラムの影響を受けることがない。
【０１１２】
非グラフィック処理系命令の代わりに、アプリケーションソフトウェアの開発者のためにグラフィック演算ユニットの処理に対する直接的で詳細なコマンドを準備しておくこともできるが、こうすると、グラフィック演算ユニットのハードウェア構成を変更した場合にコマンドのサポートをする負担が大きくなる。本実施形態による非グラフィック処理系命令は少数のコマンドしか準備されておらず、またグラフィック演算ユニットの基本的な動作に関するものに限られているので、上述のような負担を軽減することができる。
【０１１３】
また、非グラフィック処理系命令により、バッファの割り当てをユーザが指定することができる。このため、メインプロセッサがバッファの割り当てを実行する必要がなくなるので、メインプロセッサの処理負荷を軽減することができる。
【０１１４】
情報処理装置１０００において、メインプロセッサ２００にはサブプロセッサ３０が複数設けられているため、オブジェクトのジオメトリ処理を並列的に実行できるのに対し、グラフィックプロセッサ１００におけるオブジェクトのグラフィック処理はひとつずつしかできない。そこで、本実施の形態にしたがって、ＫＩＣＫコマンドにより起動されるグラフィック演算ユニットにおけるグラフィック処理の演算時間と、ＤＭＡコマンドにより開始されるデータの転送時間とが同程度になるようなコマンドリストを作成し、グラフィックプロセッサ１００にとって好適なタイミングで描画データ転送を実行するようにすれば、メインプロセッサとグラフィックプロセッサのロードバランスが改善されるので、情報処理装置１０００の処理効率が向上する。
【０１１５】
言い換えると、情報処理装置１０００においてはメインプロセッサ側の処理速度の方が速いので、グラフィック演算ユニットにおけるグラフィック処理の終了を待機する期間をできるだけ短縮することで、情報処理装置における処理を高速化することができる。
例えば、サイズの大きいフレームを描画する場合を考える。この場合、フレーム全体をグラフィック処理させようとすると、演算量が非常に大きいため、サブプロセッサはグラフィック演算ユニットの処理の終了を待機する期間が長くなる。そこで、フレームを４分割して、各分割フレームを描画するのに必要なデータをＤＭＡ転送させる時間と、各フレームのオブジェクトをジオメトリ処理する時間と、各分割フレームをグラフィック処理する時間のバランスをとるようにコマンドリストを作成すれば、画像処理時間を短縮させることができる。このように、コマンドリストの工夫次第で、情報処理の効率をアップさせることが可能となる。
【０１１６】
以上、本発明を実施の形態をもとに説明した。上記実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。以下、そのような変形例について述べる。
【０１１７】
実施の形態では、グラフィック演算ユニット４０において単一のオブジェクトのグラフィック処理を行う場合について説明した。しかしながら、グラフィック演算ユニット４０は、複数の異なるオブジェクトのグラフィック処理を並列に実行可能な構成にすることができる。
図１８は、この場合の非グラフィック処理系命令を使用したコマンドリスト７５０の一例を示す。図１８において、複数のオブジェクトの集合「Ｏｂｊ  ｓｅｔ  Ａ」のグラフィック処理に必要となるテクスチャの集合を「Ｔｅｘ  ｓｅｔ  Ａ」と表記する。オブジェクトが単数である場合と同様に、テクスチャセットをＤＭＡ転送するＤＭＡコマンド、テクスチャセットとそれに対応するオブジェクトセットの転送終了を確認するＳＹＮＣコマンド、転送終了後にオブジェクトセットに対する描画開始を指示するＫＩＣＫコマンドを配置する。これによって、処理対象のオブジェクトが複数存在する場合でも、単一のオブジェクトの場合と同じように、グラフィック演算ユニット４０におけるグラフィック処理を制御することができる。
【０１１８】
実施の形態に係る情報処理装置１０００においては、グラフィックプロセッサ１００とメインプロセッサ２００とが単一のＬＳＩチップとして一体に集積化されていてもよく、または別のチップとして構成されていてもよい。実施の形態において示した各ブロックは、集積度についてまで限定するものではなく、いずれの構成要素の組合せが集積化されてもよいし、あるいは別チップとして構成されていてもよい。
【０１１９】
実施の形態ではメインプロセッサ２００をマルチプロセッサとして記述したが、本発明はシングルプロセッサにも適用できる。また、グラフィックプロセッサ１００をマルチプロセッサとして構成し、個々のプロセッサに対して本発明を適用し、メインプロセッサ２００との協調動作をさせることもできる。
【０１２０】
実施の形態では、グラフィックプロセッサ１００の外部にグラフィックメモリ１０が設けられている構成を示したが、グラフィックメモリはグラフィックプロセッサ１００の内部に設けられてもよい。また、グラフィックメモリを単独で設けず、メインメモリ５０の一部の領域をグラフィックメモリとして使用してもよい。
【０１２１】
ＮＯＴＩＦＹコマンドを使用してオブジェクトのグラフィック処理が終了したことをサブプロセッサに通知する代わりに、内部レジスタ５４に、グラフィック処理が終了したことを示すフラグを立てるようにしてもよい。そして、メインプロセッサ２００は、内部レジスタ５４をポーリングするように構成してもよい。こうすれば、ＮＯＴＩＦＹコマンドを使用することなく、オブジェクトのグラフィック処理が終了したことを、メインプロセッサ２００が知ることができる。ＮＯＴＩＦＹコマンドではタイムラグが生じ得るが、メインプロセッサ２００が、このタイムラグを待てないような場合、または、プロセッサに都合のよいいタイミングでグラフィック処理の終了を確認したいときは、内部レジスタを使用する。内部レジスタ５４とＮＯＴＩＦＹコマンドを併用してもよい。この場合、サブプロセッサ３０はポーリングとＮＯＴＩＦＹコマンドによる通知のいずれかを状況に応じて使い分けることができる。
【０１２２】
また、ＮＯＴＩＦＹコマンドによりグラフィック処理の終了を通知する先は、メインプロセッサ２００に限られず、グラフィック演算ユニット４０の外部の任意のプロセッサであってよい。
【０１２３】
実施の形態では、テクスチャデータやパラメータデータなどのグラフィック処理に必要なデータのＤＭＡ転送は画像処理側ＤＭＡコントローラ２８が担当し、それ以外の、コンフィグデータやコマンドリスト、頂点データ、シェーダプログラムのＤＭＡ転送は、制御側ＤＭＡコントローラ３４が担当するものとして説明した。しかしながら、上記は代表的な例にすぎず、これら全てのデータのＤＭＡ転送を制御側ＤＭＡコントローラ３４で担当してもよいし、または画像処理側ＤＭＡコントローラ２８で担当してもよい。テクスチャデータやパラメータデータの転送を制御側ＤＭＡコントローラ３４が担当する場合、実行部２６は、ＤＭＡコマンドを実行したとき、制御側ＤＭＡコントローラ３４にＤＭＡ転送の指令を出す。
【０１２４】
実施の形態では、制御ユニット２０の実行部２６がコマンドリストを上から順に実行していくことを述べたが、命令解析部２４がコマンドリストを解析した際に、コマンドを再配置するようにしてもよい。例えば、命令解析部２４は、適切なタイミングでＰＥＲＦコマンドを実行して、ＤＭＡコマンドとＫＩＣＫコマンドの実行サイクル数を取得する。そして、両コマンドの実行サイクル数が大きく異なる場合には、コマンドリスト内のＤＭＡコマンドやＫＩＣＫコマンドの位置を入れ替えることによって、グラフィックプロセッサ１００の処理効率を改善することができる。
【０１２５】
また、命令解析部２４は、コマンドリストの解析時にコマンドリストに配列ミスを発見したときに、そのミスを修正するように構成されていてもよい。例えば、ＳＹＮＣコマンド内のＩＤを参照することによって、当該ＳＹＮＣコマンドが同期の対象としているＤＭＡコマンドまたはＫＩＣＫコマンドより前に位置しているときは、命令解析部２４がＳＹＮＣコマンドの位置をＤＭＡコマンドまたはＫＩＣＫコマンドの後に並べ替えるように構成されていてもよい。また、ＤＭＡコマンドまたはＫＩＣＫコマンドがコマンドリスト内に記述されている場合に、それぞれに付与されているＩＤをもとにコマンドリストを検索して、その同期をとるためのＳＹＮＣコマンドが当該コマンドリスト内に存在しないときは、命令解析部２４がそのＳＹＮＣコマンドをコマンドリストに追加するように構成されていてもよい。
【図面の簡単な説明】
【０１２６】
【図１】本発明の一実施形態に係る情報処理装置の構成を示すブロック図である。
【図２】コマンドフォーマットの一例を示す図である。
【図３】ＤＭＡコマンドのデータフォーマットを示す図である。
【図４】ＫＩＣＫコマンドのデータフォーマットを示す図である。
【図５】ＮＯＴＩＦＹコマンドのデータフォーマットを示す図である。
【図６】ＳＹＮＣコマンドのデータフォーマットを示す図である。
【図７】ＮＥＸＴコマンドのデータフォーマットを示す図である。
【図８】ＮＥＸＴコマンドを説明する図である。
【図９】情報処理装置においてＤＭＡ転送されるデータを示す図である。
【図１０】オブジェクトを描画する際のメインプロセッサとグラフィックプロセッサの協調動作を示すフローチャートである。
【図１１】グラフィックメモリにバッファを２つ備えるときのコマンドリストの一例を示す図である。
【図１２】図１１のコマンドリストにしたがったテクスチャデータの転送を模式的に示す図である。
【図１３】図１１のコマンドリストにしたがったときのバッファの状態を示すチャートである。
【図１４】グラフィックメモリにバッファを３つ備えるときのコマンドリストの一例を示す図である。
【図１５】図１４のコマンドリストにしたがったときのバッファの状態を示すチャートである。
【図１６】グラフィックメモリにバッファを４つ備えるときのコマンドリストの一例を示す図である。
【図１７】図１６のコマンドリストにしたがったときのバッファの状態を示すチャートである。
【図１８】グラフィック演算ユニットにおいて複数のオブジェクトのグラフィック処理を並列に実行可能であるときのコマンドリストの一例を示す図である。
【符号の説明】
【０１２７】
１０  グラフィックメモリ、  １２  コンテクストバッファ、  １８  ディスプレイコントローラ、  ２０  制御ユニット、  ２２  インタフェイス部、  ２４  命令解析部、  ２６  実行部、  ２８  画像処理側ＤＭＡコントローラ、  ３０  サブプロセッサ、  ３２  管理プロセッサ、  ３４  制御側ＤＭＡコントローラ、  ４０  グラフィック演算ユニット、  ４２  ラスタライザ、  ４４  シェーダユニット、  ４６  テクスチャユニット、  ５０  メインメモリ、  ５２  表示装置、  ５４  内部レジスタ、  １００  グラフィックプロセッサ、  ２００  メインプロセッサ、  １０００  情報処理装置。
【図１】
2006323760.tif 000003
【図２】
2006323760.tif 000004
【図３】
2006323760.tif 000005
【図４】
2006323760.tif 000006
【図５】
2006323760.tif 000007
【図６】
2006323760.tif 000008
【図７】
2006323760.tif 000009
【図８】
2006323760.tif 000010
【図９】
2006323760.tif 000011
【図１０】
2006323760.tif 000012
【図１１】
2006323760.tif 000013
【図１２】
2006323760.tif 000014
【図１３】
2006323760.tif 000015
【図１４】
2006323760.tif 000016
【図１５】
2006323760.tif 000017
【図１６】
2006323760.tif 000018
【図１７】
2006323760.tif 000019
【図１８】
2006323760.tif 000020