(57)【要約】ジオメトリプロセッサ（５０２，５０４，５０６）とグラフィックプロセッサ（５０８，５１０，５１２）とを含むシステム。通信チャネル（５１４）は、ジオメトリプロセッサ−グラフィックプロセッサ間の通信を可能にする。制御プロセッサ（５２４）は、通信チャネルを介してジオメトリプロセッサおよびグラフィックプロセッサと通信できる。コンピュータシステム中でグラフィックデータを処理する方法を提供し、ジオメトリプロセッサおよびグラフィックプロセッサが有効に利用されているかどうかを判定する。必要に応じて、１つ以上のジオメトリプロセッサおよびグラフィックプロセッサを選択的に割当てまたは割当て解除して、グラフィックス処理回路のグラフィックタスク処理効率を改善する。
2005520234.tif 000002
【特許請求の範囲】
【請求項１】
グラフィックス処理最適化方法であって、
ａ）第１の数のジオメトリプロセッサをグラフィックタスクに割当て、第２の数のグラフィックプロセッサをグラフィックタスクに割当てるステップと、
ｂ）前記第２の数のグラフィックプロセッサからある期間にわたってパフォーマンスデータを採取するステップと、
ｃ）前記採取したパフォーマンスデータをアルゴリズムで分析するステップと、
ｄ）前記採取したパフォーマンスデータの分析結果に応じて、前記コンピュータグラフィックタスクに割当てられた前記第１の数のジオメトリプロセッサおよび前記第２の数のグラフィックプロセッサの少なくとも一方の数を変更するステップとを含む方法。
【請求項２】
請求項１に記載の方法において、前記第１の数のジオメトリプロセッサは、オブジェクトデータを複数のポリゴンの頂点データに変換し、前記第２の数のグラフィックプロセッサは、前記ポリゴンをバッファメモリ中にレンダリングし、前記ある期間にわたってパフォーマンスデータを採取するステップはさらに、
ａ）レンダリングされたポリゴンの数をカウントするステップと、
ｂ）レンダリングされたポリゴンの平均サイズを計算するステップとを含む方法。
【請求項３】
請求項２に記載の方法において、レンダリングされたポリゴンは複数の画素を含み、前記レンダリングされたポリゴンの平均サイズを計算するステップは、レンダリングされた画素の数をカウントし、これをレンダリングされたポリゴンの数で除算するステップを含む方法。
【請求項４】
請求項３に記載の方法において、前記採取したパフォーマンスデータを分析するステップは、
ａ）ポリゴン数が、ポリゴン数下閾を下回るか否かを検出するステップと、
ｂ）ポリゴンの平均サイズが、ポリゴン平均サイズ上閾を上回るか否かを検出するステップと、
ｃ）次のいずれか、すなわち、
ｉ）グラフィックタスクに割当てられた前記第１の数のジオメトリプロセッサを減らす、
ｉｉ）グラフィックタスクに割当てられた前記第２の数のグラフィックプロセッサを増やす、または
ｉｉｉ）前記第１の数のジオメトリプロセッサを減らし、かつ前記第２の数のグラフィックプロセッサを増やす、
を決定するステップとを含む方法。
【請求項５】
請求項４に記載の方法において、前記第１の数のジオメトリプロセッサおよび前記第２の数のグラフィックプロセッサの少なくとも一方の数を変更するステップは、
ａ）前記第１の数のジオメトリプロセッサを減らすステップ、または
ｂ）前記第２の数のグラフィックプロセッサを増やすステップ、または
ｃ）前記第１の数のジオメトリプロセッサを減らし、かつ前記第２の数のグラフィックプロセッサを増やすステップを含む方法。
【請求項６】
請求項３に記載の方法において、前記採取したパフォーマンスデータを分析するステップは、
ａ）ポリゴン数が、ポリゴン数上閾を上回るか否かを検出するステップと、
ｂ）ポリゴンの平均サイズが、ポリゴン平均サイズ下閾を下回るか否かを検出するステップと、
ｃ）次のいずれか、すなわち、
ｉ）前記第１の数のジオメトリプロセッサを増やす、
ｉｉ）前記第２の数のグラフィックプロセッサを減らす、または
ｉｉｉ）前記第１の数のジオメトリプロセッサを増やし、かつ前記第２の数のグラフィックプロセッサを減らす、
を決定するステップとを含む方法。
【請求項７】
請求項６に記載の方法において、前記第１の数のジオメトリプロセッサおよび前記第２の数のグラフィックプロセッサの少なくとも一方の数を変更するステップは、
ａ）前記第１の数のジオメトリプロセッサを増やすステップ、または
ｂ）前記第２の数のグラフィックプロセッサを減らすステップ、または
ｃ）前記第１の数のジオメトリプロセッサを増やし、かつ前記第２の数のグラフィックプロセッサを減らすステップを含む方法。
【請求項８】
請求項１に記載の方法において、前記期間は約１０，０００回のクロックサイクルを含む方法。
【請求項９】
請求項１に記載の方法であって、
ａ）一組のバッファを準備するステップと、
ｂ）前記一組のバッファを前記第１の数のジオメトリプロセッサに接続する第１のクロスバーチャネルを準備するステップと、
ｃ）前記一組のバッファを前記第２の数のグラフィックプロセッサに接続する第２のクロスバーチャネルを準備するステップとをさらに含む方法。
【請求項１０】
請求項９に記載の方法において、グラフィックタスクに割当てられた前記第１の数のジオメトリプロセッサおよびグラフィックタスクに割当てられた前記第２の数のグラフィックプロセッサの少なくとも一方の数を変更するステップは、
ａ）任意の構成のうちから、前記第１のクロスバーチャネル用の新たな構成を計算するステップと、
ｂ）任意の構成のうちから、前記一組のバッファ用の新たな構成を計算するステップと、
ｃ）任意の構成のうちから、前記第２のクロスバーチャネル用の新たな構成を計算するステップと、
ｄ）前記第１のクロスバーチャネルを前記新たな構成に再構成するステップと、
ｅ）前記一組のバッファを前記新たな構成に再構成するステップと、
ｆ）前記第２のクロスバーチャネルを前記新たな構成に再構成するステップとを含む方法。
【請求項１１】
請求項９に記載の方法において、グラフィックタスクに割当てられた前記第１の数のジオメトリプロセッサおよびグラフィックタスクに割当てられた前記第２の数のグラフィックプロセッサの少なくとも一方の数を変更するステップは、
ａ）所定の構成の組のうちから、前記第１のクロスバーチャネル、前記一組のバッファ、および前記第２のクロスバーチャネル用の新たな構成を選択するステップと、
ｂ）選択した所定の構成にあわせて、前記第１のクロスバーチャネル、前記一組のバッファ、および前記第２のクロスバーチャネルを構成するステップとを含む方法。
【請求項１２】
グラフィックス処理の最適化方法であって、
ａ）第１の数のジオメトリプロセッサをグラフィックタスクに割当て、第２の数のグラフィックプロセッサをグラフィックタスクに割当て、前記第１の数のジオメトリプロセッサはオブジェクトデータをポリゴンの頂点データに変換し、前記第２の数のグラフィックプロセッサは前記ポリゴンをバッファメモリ内へレンダリングするステップと、
ｂ）前記第２の数のグラフィックプロセッサからある期間にわたってパフォーマンスデータを採取するステップと、
ｃ）前記採取したパフォーマンスデータをアルゴリズムで分析するステップと、
ｄ）前記採取したパフォーマンスデータの分析結果に応じて、レンダリングするオブジェクトのテッセレーションを増やすことにより、前記第１の数のジオメトリプロセッサによって生成されるポリゴンの数を増やし、かつポリゴンの平均サイズを小さくするステップとを含む方法。
【請求項１３】
請求項１２に記載の方法において、前記パフォーマンスデータを採取するステップは、
ａ）レンダリングされたポリゴンの数と、レンダリングされた画素の数とをカウントするステップと、
ｂ）平均ポリゴンサイズを計算するステップと、
ｃ）テクスチャミスを集計するステップと、
ｄ）ＤＲＡＭ改ページを集計するステップとを含む方法。
【請求項１４】
請求項１３に記載の方法において、前記レンダリングされたポリゴンの平均サイズを計算するステップは、レンダリングされた画素を集計し、これをレンダリングされたポリゴンの数で除算するステップを含む方法。
【請求項１５】
グラフィックス処理を最適化する方法であって、
ａ）第１の数のジオメトリプロセッサをグラフィックタスクに割当て、第２の数のグラフィックプロセッサをグラフィックタスクに割当て、前記第１の数のジオメトリプロセッサはオブジェクトデータを、複数の画素を有するポリゴンの頂点データに変換し、前記第２の数のグラフィックプロセッサは前記ポリゴンをバッファメモリ内へレンダリングするステップと、
ｂ）前記第２の数のグラフィックプロセッサからある期間にわたってパフォーマンスデータを採取するステップと、
ｃ）前記採取したパフォーマンスデータをアルゴリズムで分析するステップと、
ｄ）前記採取したパフォーマンスデータの分析結果に応じて、生成するオブジェクトのテッセレーションを少なくすることにより、前記第１の数のジオメトリプロセッサによって生成されるポリゴンの数を減らし、かつポリゴンの平均サイズを大きくするステップとを含む方法。
【請求項１６】
請求項１５に記載の方法において、前記パフォーマンスデータを採取するステップは、ポリゴンの平均サイズを採取するステップを含む方法。
【請求項１７】
請求項１５に記載の方法において、前記ポリゴン平均サイズを採取するステップは、
ａ）レンダリングされたポリゴンの数とレンダリングされた画素の数とをカウントするステップと、
ｂ）レンダリングされた画素を集計するステップと、
ｃ）レンダリングされたポリゴンの数をレンダリングされた画素の数で除算するステップとを含む方法。
【請求項１８】
請求項１６に記載の方法において、前記パフォーマンスデータを分析するステップは、ポリゴン平均サイズが特定サイズより小さいかどうか検査するステップを含む方法。
【請求項１９】
請求項１６に記載の方法において、前記パフォーマンスデータを分析するステップは、ポリゴン平均サイズが画素のサイズより小さいかどうかを検査するステップを含む方法。
【請求項２０】
グラフィックデータを処理するグラフィック処理回路を有するコンピュータシステムであって、
ａ）グラフィックタスクの少なくとも一部を少なくとも部分的に実行する少なくとも１つのジオメトリプロセッサと、
ｂ）前記グラフィックタスクの少なくとも他の一部を少なくとも部分的に実行する少なくとも１つのグラフィックプロセッサと、
ｃ）前記少なくとも１つのジオメトリプロセッサと前記少なくとも１つのグラフィックプロセッサとの間の通信を実現する通信チャネルと、
ｄ）前記通信チャネルを介して前記ジオメトリプロセッサおよび前記グラフィックプロセッサと通信する制御プロセッサであって、前記少なくとも１つのジオメトリプロセッサおよび前記少なくとも１つのグラフィックプロセッサが有効に利用されているかどうかを判定し、必要に応じて前記少なくとも１つのジオメトリプロセッサおよび前記少なくとも１つのグラフィックプロセッサのうち、１つまたは複数のものを選択的に割当てまたは割当て解除して、前記グラフィックス処理回路が前記グラフィックタスクを実行する効率を改善する制御プロセッサとを含むコンピュータシステム。
【請求項２１】
請求項２０に記載のコンピュータシステムにおいて、前記少なくとも１つのジオメトリプロセッサは複数のジオメトリプロセッサを含み、前記少なくとも１つのグラフィックプロセッサは複数のグラフィックプロセッサを含むシステム。
【請求項２２】
請求項２１に記載のコンピュータシステムにおいて、前記複数のジオメトリプロセッサはオブジェクトを３−Ｄから２−Ｄへ変換してポリゴンの頂点データにするシステム。
【請求項２３】
請求項２２に記載のコンピュータシステムにおいて、前記複数のグラフィックプロセッサは、複数の画素を含む前記ポリゴンをバッファメモリ内へレンダリングするシステム。
【請求項２４】
請求項２３に記載のコンピュータシステムにおいて、前記通信チャネルは、
ａ）クロスバー構成を有する第１のチャネルと、
ｂ）前記第１のチャネルを介して前記複数のジオメトリプロセッサからデータを受信するように接続される少なくとも１つのバッファメモリと、
ｃ）前記複数のグラフィックプロセッサと前記少なくとも１つのバッファメモリとの間の通信を実現するよう配置される１対１クロスバー構成を有する第２のチャネルとを含むシステム。
【請求項２５】
請求項２４に記載のコンピュータシステムにおいて、
前記通信チャネルは、前記複数のグラフィックプロセッサと前記制御プロセッサとの間のパフォーマンスデータの通信を行うシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般にはグラフィックス処理を最適化する方法に関し、より特定的にはマルチプロセッサシステム用のグラフィックス処理最適化方法に関する。
【背景技術】
【０００２】
現在のコンピュータシステムは、一般にグラフィックス画像の生成を行う。グラフィックス画像の生成は、専門的でかつ計算コストのかかる手続である。このため多くのコンピュータシステムでは、グラフィックス処理の様々な部分を実行するために専用のハードウェアを用いる。
【０００３】
図１は、こうした現行システムの一例である。メインプロセッサ１００は汎用プロセッサである。ジオメトリプロセッサ１０２はメインプロセッサ１００内部の専用サブプロセッサであり、遠近法等の問題を考慮しながら３次元イメージを２次元イメージに変換するのに必要な一般的変換を実行する。このようなジオメトリプロセッサは他の一般的な３次元グラフィックス計算にも使用できる。
【０００４】
ジオメトリプロセッサ１０２はまた、メインプロセッサ１００と別個に設けてもよいし、またはメインプロセッサ１００上でソフトウェアプログラムとして実行してもよい。ジオメトリプロセッサ１０２からは、グラフィック図形の作成に必要な情報を含む表示リストが最終的に得られる。
【０００５】
一般的には、表示リストはポリゴン（多角形）生成用の情報を含む。ポリゴンは三角形であることが多いが、他のポリゴンも可能である。表示リストは描かれたポリゴンの種類と、そのポリゴン生成に必要な情報とを含む。ここでは三角形が示され、かつ三角形の各頂点についての情報も表示リストに含まれる。
【０００６】
バス１０４は、ジオメトリプロセッサ１０２−グラフィックプロセッサ１０６間の通信チャネルである。グラフィックプロセッサ１０６は表示リストをレンダリングするための専用回路である。グラフィックプロセッサ１０６は複数の副回路を含む。入力バッファ１０８は表示リストをバッファする。
【０００７】
ディジタル差動分析器１１２（以後、「ＤＤＡ１１２」と称する）は、ポリゴンの頂点間の直線を計算する。ＤＤＡ１１２はＤＤＡセットアップエンジンを含む。画素（ピクセル）プロセッサ１１４は複数の機能を実行するが、主機能としてポリゴン中の各画素の最終的なＲＧＢ値を計算する。このステップはレンダリングと呼ばれる。
【０００８】
ポリゴンのレンダリング処理において、画素プロセッサ１１４はテクスチャリングステップを実行する。画素のＲＧＢ決定の一部は、ポリゴンに選択されたテクスチャによって異なる。このテクスチャマップ形式のテクスチャを、画素プロセッサ１１４によってポリゴンに適用する。
【０００９】
フレームバッファ１１６はダイナミックランダムアクセスメモリ、すなわちＤＲＡＭであり、フレームまたはフィールド（二重バッファリングの場合）全体が作成されるまでポリゴンから復元したフレームを蓄積する。その後、このフレームはバスを介してディジタル−アナログ変換器へ、かつ最終的にはモニタへ送られる。フレームバッファ１１６は画素プロセッサ１１４からデータを受信するが、画素プロセッサ１１４もフレームバッファ１１６として機能する。
【００１０】
テクスチャバッファ１１８とＤＲＡＭフレームバッファ１２０は、画素プロセッサ１１４またはフレームバッファ１１６のいずれかの内部に配置してもよいし、またはこのどちらからも独立して設けてもよい。一般に画素プロセッサは、これらバッファの読出し／書込みを行い、必要に応じてこれらバッファはフレームバッファ１１６から更新される。
【発明の開示】
【発明が解決しようとする課題】
【００１１】
上記の装置を使用した場合、フレーム全体をレンダリングしようとすると計算効率の点でいくつかの問題が生じる。例えばあるゲームの１シーンをレンダリングする場合、ゲームは、細部描写が少ない背景と、背景より細部描写が多い中間景と、細部描写がもっとも多い前景とをもつ。両端、すなわち背景と前景には、２つの異なるケースが生じる。第１のケースでは、少数の非常に大きなポリゴンを用いて背景図を生成する。第２のケースでは、多数の小さなポリゴンを用いて詳細な前景図を生成する。各ケースにはそれぞれ別の問題がある。
【００１２】
第１のケースにおいてフレームの背景を処理するには、少数の大型ポリゴンの処理が必要である。ジオメトリ変換に要する処理時間は、処理する頂点の数によって異なる。従って、ジオメトリプロセッサ１０２が背景ポリゴンを処理するのに必要な処理時間は、比較的短い。しかしグラフィックプロセッサ１０６は、大型ポリゴンの処理に複数の問題を有する。
【００１３】
第１に、ジオメトリプロセッサは、グラフィックプロセッサ１０６が大型ポリゴンをレンダリングできるよりも大幅に速く表示リストを発行する。このため、ジオメトリプロセッサは、グラフィックプロセッサ１０６が追いつくまでアイドル状態で待機しなければならない。
【００１４】
レンダリング速度が遅いことに加えて、大型ポリゴンの処理時には他のボトルネックがグラフィックプロセッサ１０６内部で発生する。大型ポリゴンはテクスチャマップの広い領域を占有する。この領域がテクスチャバッファ１１８のサイズよりかなり大きければ、「テクスチャミス」が頻繁に発生する。
【００１５】
テクスチャバッファ１１８がフレームバッファ中のテクスチャマップによって更新されてポリゴンの該当箇所に適切なテクスチャが適用される間、画素プロセッサ１１４はアイドル状態のままになる。さらに、大型ポリゴンのデータは多くのＤＲＡＭページにまたがる。ポリゴンのレンダリングがＤＲＡＭページの最後に達すると、「ＤＲＡＭ改ページ」が発生する。ＤＲＡＭページバッファ１２０はその内容をフレームバッファにもどし、新たなページをフレームバッファからＤＲＡＭページバッファへ更新しなければならない。画素プロセッサ１１４はこの処理の間、アイドル状態にとどまる。
【００１６】
大型ポリゴンでは、ポリゴンのサイズがＤＲＡＭページバッファのサイズの何倍も大きいので、こうした改ページが頻繁に発生し、各レンダリングパスごとに何度もＤＲＡＭ改ページを発生させてしまう。従って少数の大型ポリゴンでは、グラフィックプロセッサのところで処理減速の多くの理由がある。
【００１７】
図２は、少数の大型ポリゴンの処理を試みるグラフィックプロセッサとジオメトリックプロセッサのパイプラインの結果を示す。グラフィックプロセッサは、利用可能な計算力またはそれ以下の計算力で、ある時間内にポリゴンまたはその他のグラフィックオブジェクトを処理可能である。横棒部２０２は、所与のタスクについてジオメトリプロセッサのある処理速度における背景ポリゴンまたはその他のオブジェクトの処理に必要な計算時間を示す。グラフィックプロセッサ１０６は横棒部２０４によって示す。陰影をつけた横棒部２０６は、利用可能な計算時間を超過して背景ポリゴンの処理に必要な計算時間を示す。図２は、陰影をつけた横棒部２０６で示す時間内にグラフィックプロセッサ１０６がジオメトリプロセッサ１０２に追いつくまで、ジオメトリプロセッサ１０２がアイドル状態でとどまることを示す。従ってグラフィックプロセッサがボトルネックとなる。
【００１８】
第２のケースでは逆に、多数の小さなポリゴンの処理およびレンダリングが必要である。これは別のボトルネックとなる。多数の小型ポリゴンはかなり多数の頂点を与える。このため、ジオメトリ処理は上記のケースよりかなり長時間を要する。
【００１９】
この様子を図３に示す。横棒部３０２は、ジオメトリプロセッサの処理速度で前景ポリゴンまたは他のグラフィックオブジェクトを処理するのに要する計算時間を示す。陰影をつけた横棒部３０４は、グラフィックプロセッサに「追いつく」ためにジオメトリプロセッサが計算を行わなければならない追加時間を示す。
【００２０】
第１のケースに比べて、グラフィックプロセッサ１０６は前景ポリゴンを大幅に速くレンダリングできる。これは、各ポリゴンにレンダリングする画素数が少ないこと、かつ小型ポリゴンはＤＲＡＭ改ページまたはテクスチャミスの可能性を低減するためである。処理速度の加速を横棒部３０６で示し、これは多数の小型ポリゴンのレンダリングに要する計算時間の短縮量を示す。ここでもまた、陰影をつけた横棒部３０４は、ジオメトリプロセッサ１０２がその背景計算を処理している間に、グラフィックプロセッサ１０６がアイドル状態にとどまらなければならない時間を表す。このように、第２のケースではジオメトリプロセッサがボトルネックとなる。
【００２１】
上記の問題は、高画質のレンダリングされたピクチャ等の解像度のより高いグラフィックスの使用を無理に続行することで、さらに悪化する。こうしたピクチャは高い解像度で描かれているため、ポリゴン線は目にみえず、滑らかな曲線ができる。
【００２２】
図４は、計算上最適な第３のケースを示す。このケースでは、ジオメトリプロセッサ１０２が所与の時間内にその表示リストすべてを処理することを横棒部４０２で示す。グラフィックプロセッサ１０６がこれと同時間でそのポリゴンすべての処理およびレンダリングを行うことは、横棒部４０４で示す。こうして、ジオメトリプロセッサ−グラフィックプロセッサのパイプラインにはボトルネックが存在しない。これが負荷が平衡した状態である。
【課題を解決するための手段】
【００２３】
コンピュータシステムの新たな構成は、複数のジオメトリプロセッサと複数のグラフィックプロセッサとを含む。このような装置を設けることにより、上述した問題、およびこうした多プロセッサシステムから生じるその他の問題に対処する新たな方法が可能となる。
【００２４】
本発明の一つの態様は、グラフィックス処理の最適化方法である。好適な方法は、第１の数のジオメトリプロセッサをグラフィックタスクの少なくとも第１の部分の処理に割当て、第２の数のグラフィックプロセッサをグラフィックタスクの少なくとも第２の部分の処理に割当てるステップを含む。ジオメトリプロセッサの第１の数は、グラフィックプロセッサの第２の数と同じでもよいし異なってもよい。好適には、ある期間にわたって第２の数のグラフィックプロセッサからパフォーマンスデータが採取され、そのデータはアルゴリズムで処理される。好適な方法の他の工程は、採取されたパフォーマンスデータの分析結果に応じて、グラフィックタスクに割当てられた第１の数のジオメトリプロセッサおよびグラフィックタスクに割当てられた第２の数のグラフィックプロセッサの少なくとも一方の数を変更するステップである。
【００２５】
他の好適な方法はまた、第１の数のジオメトリプロセッサをグラフィックタスクに割当て、第２の数のグラフィックプロセッサをグラフィックタスクに割当てるステップを含む。好適な実施形態では、第１の数のジオメトリプロセッサによって実行されるグラフィックタスクの一部は、オブジェクトデータを複数のポリゴンの頂点データに変換し、一方、第２の数のグラフィックプロセッサによって実行されるグラフィックタスクの一部はポリゴンをバッファメモリ内へレンダリングするステップを含む。
【００２６】
レンダリングされたポリゴンは、複数の画素を含みうる。この方法もまた、ある期間にわたってパフォーマンスデータを第２の数のグラフィックプロセッサから採取し、その後、採取されたパフォーマンスデータをアルゴリズムで分析するステップを含む。好適には、この方法は、採取したパフォーマンスデータの分析結果に応じて、レンダリングするグラフィックオブジェクトのテッセレーション（ｔｅｓｓｅｌｌａｔｉｏｎ：ポリゴン分割）を増やすことにより、第１の数のジオメトリプロセッサによって生成されるポリゴンの数を増やし、かつポリゴンの平均サイズを小さくするステップを含む。
【００２７】
他の好適な方法は、第１の数のジオメトリプロセッサをグラフィックタスクに割当て、第２の数のグラフィックプロセッサをグラフィックタスクに割当てるステップを含む。好適には、ジオメトリプロセッサとグラフィックプロセッサは、ポリゴン生成を含むグラフィックタスクの異なる部分（例えばオブジェクトデータのポリゴン頂点データへの変換、およびポリゴンのバッファメモリ中へのレンダリング）を実行する。好適には、ある期間にわたって第２の数のグラフィックプロセッサからパフォーマンスデータが採取され、採取されたパフォーマンスデータはアルゴリズムで分析される。この方法はまた、採取されたパフォーマンスデータの分析結果に応じて、作成する面のテッセレーションを減らすことにより、第１の数のジオメトリプロセッサによって生成されるポリゴンの数を減じ、かつポリゴンの平均サイズを大きくするステップを含みうる。
【００２８】
さらに他の好適な方法は、第１の数のジオメトリプロセッサをグラフィックタスクに割当て、第２の数のグラフィックプロセッサをグラフィックタスクに割当てるステップを含む。好適には、第１の数のジオメトリプロセッサはグラフィックタスクの第１の部分を実行し、第２の数のグラフィックプロセッサはグラフィックタスクの第２の部分を実行する。ジオメトリプロセッサは、３次元オブジェクトデータをｘ、ｙおよびｚ座標を含むポリゴンの頂点データに変換しうる。ジオメトリプロセッサはまた、ｚ座標が存在しない、または不要な場合は、ｘおよびｙ座標だけでポリゴンの頂点データを作成する。
【００２９】
グラフィックプロセッサは、ポリゴンをバッファメモリ内へレンダリングするのに使用できる。ある期間にわたってグラフィックプロセッサの第２の数からパフォーマンスデータが採取され、アルゴリズムで分析される。
【００３０】
この方法はまた、グラフィックタスクに割当てられた第１の数のジオメトリプロセッサ、グラフィックタスクに割当てられた第２の数のグラフィックプロセッサ、および第１の数のジオメトリプロセッサによってグラフィックスオブジェクトに適用されるテッセレーションの量、すなわちポリゴン分割数のうち、少なくともいずれかを変更するステップを含みうる。
【００３１】
グラフィックス処理を最適化する他の好適な方法は、第１の数のジオメトリプロセッサをグラフィックタスクに割当て、第２の数のグラフィックプロセッサをグラフィックタスクに割当てるステップを含む。ある期間にわたってパフォーマンスデータが第２の数のグラフィックプロセッサから採取され、アルゴリズムで分析される。その後、この方法は、第１の数のジオメトリプロセッサによって処理されたポリゴンを空間的にソートしてから、ポリゴンデータをグラフィックプロセッサに送る。
【００３２】
グラフィックス処理回路を有するコンピュータシステムにおけるグラフィックスデータ処理の他の好適な方法は、少なくとも１つのジオメトリプロセッサを用いてグラフィックタスクの少なくとも一部を実行し、かつ少なくとも１つのグラフィックプロセッサを用いてグラフィックタスクの少なくとも他の一部を実行するステップを含む。好適な方法はまた、少なくとも１つのジオメトリプロセッサおよびグラフィックプロセッサが有効に使用されているかどうかを判定し、必要に応じて１つ以上のジオメトリプロセッサおよびグラフィックプロセッサを選択的に割当てて、グラフィックス処理回路のグラフィックタスク実行効率を改善するステップを含む。
【００３３】
好適には、少なくとも１つのジオメトリプロセッサを利用してグラフィックタスクの少なくとも一部を実行するステップは、オブジェクトを３Ｄから２Ｄへ変換させてポリゴンの頂点データにするステップを含む。また、少なくとも１つのグラフィックプロセッサを利用してグラフィックタスクの少なくとも別の一部を実行させるステップは、ポリゴン頂点データをバッファメモリ内へレンダリングさせるステップを含むのが好適である。
【００３４】
ポリゴンは、好適には複数の画素を含む。少なくとも１つのジオメトリプロセッサおよび少なくとも１つのグラフィックプロセッサが有効に使用されているかどうかの判定は、レンダリングされたポリゴンの数および平均サイズを計算するステップを含みうる。好適な方法に従えば、レンダリングされたポリゴンの平均サイズの計算は、レンダリングされた画素数を数えて、レンダリングされたポリゴン数で除算するステップを含む。
【００３５】
またこの方法は、一組のバッファと、複数のジオメトリプロセッサをバッファの組に接続する第１のクロスバーチャネルと、複数のグラフィックプロセッサをバッファの組に接続する第２のクロスバーチャネルとを準備するステップを含むのが好適である。バッファの組は初期構成をもち、第１および第２のクロスバーチャネルもまた初期構成をもちうる。
【００３６】
１つ以上のジオメトリプロセッサおよびグラフィックプロセッサを選択的に割当てまたは割当て解除するステップは、好適には第１のクロスバーチャネル用の新たな構成を計算するステップと、バッファの組の新たな構成を計算するステップと、第２のクロスバーチャネル用の新たな構成を計算するステップとを含む。バッファの組と第１および第２のクロスバーチャネルは、その後、再構成されて新たな構成をもつことができる。
本発明の他の態様は、グラフィックスデータを処理するグラフィックス処理回路を有するコンピュータシステムに関する。好適には、コンピュータシステムは、グラフィックタスクの少なくとも一部を少なくとも部分的に実行する少なくとも１つのジオメトリプロセッサを含む。また、グラフィックタスクの少なくとも他の一部を少なくとも部分的に実行する少なくとも１つのグラフィックプロセッサも設ける。
【００３７】
少なくとも１つのジオメトリプロセッサと少なくとも１つのグラフィックプロセッサとの間の通信を実現する通信チャネルも準備する。
【００３８】
通信チャネルを介してジオメトリプロセッサおよびグラフィックプロセッサと通信するために、制御プロセッサを配置する。制御プロセッサは、好適にはジオメトリプロセッサおよびグラフィックプロセッサの少なくとも１つが有効に使用されているかどうかを判定し、必要に応じて１つ以上のジオメトリプロセッサおよびグラフィックプロセッサを選択的に割当てまたは割当て解除して、グラフィックス処理回路のグラフィックタスクの実行効率を改善する。
【００３９】
好適な実施形態では、少なくとも１つのジオメトリプロセッサは複数のジオメトリプロセッサを含み、少なくとも１つのグラフィックプロセッサは複数のグラフィックプロセッサを含む。好適には、複数のジオメトリプロセッサは任意のオブジェクトを３Ｄから２Ｄへ変換してポリゴンの頂点データにする。また、複数のグラフィックプロセッサを用いて、ポリゴンをバッファメモリ内へレンダリングするのが好適である。ポリゴンは、複数の画素を含みうる。
【００４０】
通信チャネルは、好適には、クロスバー構成を有する第１のチャネルと、第１のチャネルを介して複数のジオメトリプロセッサからデータを受信するように接続された少なくとも１つのバッファメモリと、複数のグラフィックプロセッサと少なくとも１つのバッファメモリとの間の通信を可能にするように配置された１対１クロスバー構成を有する第２のチャネルとを含む。
【００４１】
好適な実施形態では、通信チャネルは、複数のグラフィックプロセッサから制御プロセッサへのパフォーマンスデータの通信を促進する。
上述した本発明の特徴および利点は、以下に詳述する好適な実施形態の説明と添付図面とを考慮すればよりよく理解できる。
【発明を実施するための最良の形態】
【００４２】
図５は、グラフィックス処理の最適化が可能なグラフィックス処理装置５００を示す。ジオメトリプロセッサ群５０１は、ジオメトリプロセッサ１０２と同様のジオメトリプロセッサ５０２，５０４および５０６を含みうる。グラフィックプロセッサ群５０７は、グラフィックプロセッサ１０６と同様のグラフィックプロセッサ５０８，５１０および５１２を含みうる。ジオメトリプロセッサ５０２，５０４および５０６は、設定可能な通信チャネルおよびバッファ５１４によってグラフィックプロセッサ５０８，５１０および５１２に接続される。
【００４３】
設定可能な通信チャネルおよびバッファ５１４により、グラフィックス装置５００中で各ジオメトリプロセッサは各グラフィックプロセッサにデータを送信できる。各グラフィックプロセッサ５０８，５１０および５１２は、レンダリング制御プロセッサ５２２と通信可能に接続する通信チャネル５１６，５１８および５２２を有する。通信チャネル５１６，５１８および５２０は、パフォーマンスデータをグラフィックプロセッサ５０８，５１０および５１２からレンダリング制御プロセッサ５２２へ伝送する。
【００４４】
２組のプロセッサ間は、既定のパイプラインの組では結合されていない。レンダリング制御プロセッサはフィードバックチャネル５２６によって制御プロセッサ５２４に接続される。制御プロセッサ５２４は、動作時にはプロセッサ割当てチャネル５３０によってジオメトリプロセッサ５０２，５０４および５０６に接続される。制御プロセッサ５２４はまた、制御信号チャネル５２８によって、設定可能な通信チャネルおよびバッファ５１４に接続される。
【００４５】
動作時には、定義された３−Ｄオブジェクトがジオメトリプロセッサ５０２，５０４および５０６に送られ、グラフィックスプリミティブの２−Ｄ表示リストに変換される。その後、表示リストは設定可能な通信チャネルおよびバッファ５１４を介してグラフィックプロセッサ５０８，５１０および５１２に送られる。このデータの流れを図５の太字の矢印で示す。グラフィックプロセッサ５０８，５１０および５１２は、グラフィックスプリミティブの２−Ｄ表示リストをレンダリングし、かつレンダリング中またはそれ以降のパス（図８参照）で、テクスチャおよびシェードを適用する。グラフィックタスクとは、定義された１つまたは複数の３−Ｄオブジェクトをフレームバッファ中で表示可能な画素マップに変換することと考えることができる。「変換」とは、３−Ｄオブジェクトを複数のポリゴンの頂点データからなる表示リストに変換し、それに続いて該データを画素形式にレンダリングすることを含みうる。
【００４６】
グラフィックプロセッサ５０８，５１０および５１２は、通信チャネル５１６，５１８および５２０によってパフォーマンスデータをレンダリング制御プロセッサ５２２に送る。このパフォーマンスデータはレンダリング制御プロセッサ５２２中で処理される。この結果がフィードバックチャネル５２６上に送られる。このフィードバックは、ハイレベルのパフォーマンスデータ形式、および／または制御プロセッサ５２４によって実行される特定の命令形式のいずれかの形式をとりうる。制御プロセッサ５２４は、このフィードバックデータをレンダリング制御プロセッサ５２２から受信し、これを用いてプロセッサの割当てと設定可能な通信チャネルおよびバッファ５１４の構成を行う。図５中、太字以外の矢印はデータ信号ではなく制御信号を示すことに注意されたい。
【００４７】
図８は、図５に示すグラフィックプロセッサ装置５００のより詳細な実施形態を示す。一実施形態では、レンダリング制御プロセッサ５２２と制御プロセッサ５２４とは１つの論理制御プロセッサである。
【００４８】
他の実施形態では、制御プロセッサ５２４とレンダリング制御プロセッサ５２２とは、１つの集積回路上で論理的に互いに別個のプロセッサである。他の実施形態では制御プロセッサ５２４とレンダリング制御プロセッサ５２２とは別個の集積回路上に設ける。
【００４９】
さらに他の実施形態では、レンダリング制御プロセッサ５２２は通信チャネル５１６，５１８および５２０を通過するデータの単なる「導管」として機能し、制御プロセッサ５２４がすべての分析および制御機能を行う。さらに他の実施形態では、レンダリング制御プロセッサ５２２が分析および制御の大半を決定し、その決定を、フィードバックチャネル５２６によって、命令の単なる導管として機能する制御プロセッサ５２４へ送信する。
【００５０】
一実施形態では、ジオメトリプロセッサ５０２，５０４，５０６は主プロセッサのサブプロセッサとして設けて、ジオメトリの変換等の特定タスクに対して動的に専用化してもよい。他の実施形態では、ジオメトリプロセッサ５０２，５０４，５０６は、ジオメトリ変換に動的に割当てられる別個の汎用プロセッサである。
【００５１】
他の実施形態では、ジオメトリプロセッサ５０２，５０４，５０６は、上記のようなジオメトリ変換動作用の専用プロセッサである。こうした専用プロセッサは、主プロセッサ内部に設けてもよいし、または別個に設けてもよい。ジオメトリプロセッサ５０２，５０４および５０６は同一タイプである必要はない。例えば、ジオメトリプロセッサ５０２をサブプロセッサとし、ジオメトリプロセッサ５０４をジオメトリ変換を行う別のプロセッサとしてもよい。
【００５２】
図示するグラフィックス処理装置５００は３つのジオメトリプロセッサを有する。グラフィックス処理装置５００は任意の数の複数のジオメトリプロセッサを備えることができる。好適な実施形態では８つのジオメトリプロセッサを備える。実施形態および実施構成に関係なく、ジオメトリプロセッサ５０１の数は、所与の時間にグラフィックタスクのためのジオメトリ変換等を実行する個別の論理処理ユニットの数である。
【００５３】
図示するグラフィックス処理装置５００は３つのグラフィックプロセッサ５０８，５１０および５１２を有する。グラフィックス処理装置５００は任意の数の複数のグラフィックプロセッサを備えることができる。好適な実施形態では８つのグラフィックプロセッサを使用する。好適な実施形態では、各グラフィックプロセッサ５０８，５１０および５１２は、別々の集積回路上に設ける。他の実施形態では、２つ以上のグラフィックプロセッサ５０８，５１０および５１２が１つの集積回路上に位置する。実施構成および実施形態の条件に関係なく、グラフィックプロセッサ５０７の数は、所与の時間にグラフィックタスクのためのレンダリングおよび関連した他の計算を実行する個別の論理処理要素の数である。
【００５４】
ジオメトリプロセッサ５０１とグラフィックプロセッサ５０７の数は同じである必要はない。本発明のフレキシブルな構成では、ジオメトリプロセッサの数はグラフィックプロセッサの数と異なってもよい。
【００５５】
図６Ａは、本発明の一実施形態のフローチャートである。図６Ａに示す方法は、利用可能な複数のジオメトリプロセッサおよびグラフィックプロセッサを使用して、図５に示すグラフィックス処理装置５００を最適化して負荷を平衡させる方法を示す。設定可能な通信チャネルおよびバッファ５１４を利用して、２つ以上のジオメトリプロセッサまたはグラフィックプロセッサをポリゴンまたはグラフィックタスクの描画およびレンダリングに適用することにより、先行技術のボトルネックを回避する。図６Ａの方法は、構成負荷平衡法と呼ぶことができる。
【００５６】
ステップ６０１では、レンダリング制御プロセッサ５２２がグラフィックプロセッサ群５０７からパフォーマンスデータを採取する。ステップ６０２では、レンダリング制御プロセッサがこのパフォーマンスデータを分析する。レンダリング制御プロセッサ５２２によるパフォーマンスデータの採取は、ある期間にわたって行われる。好適な実施形態では、この期間はクロックサイクル１０，０００回程度である。ただしもちろん、これ以外の期間を適用してもよい。しかし構成負荷平衡法は統計的なやり方なので、当該期間は統計的に有為なデータ組の回収に十分な時間でなければならない。
【００５７】
このパフォーマンスデータの分析６０２は、グラフィックプロセッサ群５０７もしくはジオメトリプロセッサ群５０１が過負荷になっているかどうか、またはジオメトリプロセッサ群５０１とグラフィックプロセッサ群５０７とが負荷平衡状態かどうかを判定するステップを含む。パフォーマンスデータ分析ステップ６０２により、グラフィックプロセッサ群５０７の負荷がジオメトリプロセッサ群５０１の負荷と平衡していることがわかれば、ステップ６０１がある期間にわたって再度実行される。
【００５８】
しかし、グラフィックプロセッサ群５０７の計算負荷が過負荷になっていれば、ステップ６０３で、レンダリング制御プロセッサ５２２は制御プロセッサ５２４にフィードバックを送る。ステップ６０４では、制御プロセッサ５２４は追加するグラフィックプロセッサの数を決定して、一組のグラフィックタスクを処理しているグラフィックプロセッサの数を増加させる。
【００５９】
次のステップ、ステップ６０５では、制御プロセッサ５２４は、構成を決定した後、設定可能通信チャネルおよびバッファ５１４を修正する。ジオメトリプロセッサの表示リストの結果が分解されて２つ以上のグラフィックプロセッサに送られ、これにより問題に対処するグラフィックプロセッサの数を増やす。大型ポリゴンのレンダリングをより多くのグラフィックプロセッサ間で分けることにより、グラフィックプロセッサ間で計算負荷を分担する。グラフィックプロセッサ群がレンダリングに要する総時間が短縮される。これによりジオメトリプロセッサがアイドル状態にとどまる時間が短くなる。
【００６０】
ステップ６０２でジオメトリプロセッサ群の計算負荷が過負荷と判定されれば、ステップ６０６へ進む。このケースの一例として、多数の小型ポリゴンをレンダリングする場合を説明する。これは図３に示す問題に通ずる。このような問題に対処するため、ステップ６０６で、レンダリング制御プロセッサは制御プロセッサ５２４に適切なフィードバック情報を送信する。ステップ６０７では、制御プロセッサ５２４が追加するジオメトリプロセッサの数を決定して、グラフィックタスク処理中のジオメトリプロセッサの数を増加させる。こうして多数のジオメトリプロセッサ間で計算タスクが分担される。
【００６１】
ステップ６０８では、制御プロセッサ５２４は、新たな構成を決定した後、設定可能な通信チャネルおよびバッファ５１４を修正して、複数のジオメトリプロセッサの出力が１つの表示リストバッファ中へ入るように表示リストバッファ群を作成する。この表示リストバッファはＦＩＦＯバッファ、すなわち先入れ／先出しバッファである。このため表示リストを順番に並べることができ、それを１つのグラフィックプロセッサで処理できる。
【００６２】
こうして、ステップ６０２で決定される分岐に応じて、あるオブジェクト処理中の複数のグラフィックプロセッサまたはジオメトリプロセッサの数が増やされる。これにより負荷の平衡を達成できる。ステップ６０１でレンダリング制御プロセッサ５２２によってパフォーマンスデータが継続的にモニターされるフィードバックループが確立される。このため、もしレンダリングが必要なオブジェクトが変更されれば、該オブジェクトの描画に必要な計算負荷の分配をフィードバックループが自動的に調整する。
【００６３】
図６Ｂは、ステップ６０２の一実施形態を示す。ステップ６１０は、ある期間内にレンダリングされたポリゴン数とポリゴン数下閾とを比較する。このポリゴン数下閾は、多くの様々な方法で決定できる。一実施形態では、ポリゴン数下閾はグラフィックスプログラムのプログラミング時に調整によって決定される。
【００６４】
他の実施形態では、ポリゴン数下閾は、いくとおりもの実装が可能なアルゴリズムによって決定される。もちろん、こうしたアルゴリズムもプログラミング時に調整できる。ステップ６１１はこの比較の結果を問い合わせる。ポリゴン数下閾よりもポリゴン数が多ければ、ステップ６１２が実行される。ステップ６１２は、ある期間内にレンダリングされたポリゴンの平均サイズと、ポリゴンの平均サイズ上閾とを比較する。こうした平均サイズ上閾は、やはり事前の調整か、または多数の方法のいずれかで実装されたアルゴリズムによって決定され、該アルゴリズムはやはりグラフィックスプログラムのプログラミング時に、そのプログラム自体の中で調整可能である。
【００６５】
ステップ６１３は、ステップ６１２の結果を問い合わせる。ステップ６１３で、レンダリングされたポリゴンの平均サイズが、ポリゴンの平均サイズ上閾より大きいとわかれば、ステップ６１４が実行され、グラフィックプロセッサが過負荷であることが示される。その後、明示するようにステップ６０３が実行される（図６Ａ参照）。ただしステップ６１１の結果が「いいえ」ならば、ステップ６１５が実行される。
【００６６】
ステップ６１５は、ポリゴン数上閾より多くのポリゴンがあるかどうかを判定する。回答が「はい」ならばステップ６１６が実行され、ある期間内にレンダリングされたポリゴンの平均サイズと、ポリゴンの平均サイズ下閾とが比較される。平均ポリゴンサイズ上閾の場合と同様に、ポリゴン平均サイズ下閾も、プログラムを調整するプログラマによって事前にコンピュータグラフィックスプログラムのプログラミング時に、またはアルゴリズムによりコンピュータグラフィックスプログラムの稼動中に決定される。こうしたアルゴリズムは多数の実装の中から実現され、グラフィックスプログラムの初期プログラミング中にそのプログラム自体の中で調整できる。
【００６７】
ステップ６１７はステップ６１６の結果を問い合わせる。ある期間内にレンダリングされたポリゴンの平均サイズがポリゴンの平均サイズ下閾より小さければ、ステップ６１８が実行され、ジオメトリプロセッサが過負荷であることが示される。その後、明示するようにステップ６０６が実行される（図６Ａ参照）。ステップ６１５の判定結果が、ポリゴン数上閾以上のポリゴンが存在しないというものなら、ステップ６１９が実行され、ジオメトリプロセッサとグラフィックプロセッサとの負荷が平衡していることが示される。その後、上述のようにやはりステップ６０１が実行される（図６Ａ参照）。
【００６８】
前言のとおり、以上はレンダリング制御プロセッサ５２２がパフォーマンスデータに対して行う多くの可能な分析のうちの一実施形態にすぎない。他の変数を問い合わせて、異なる閾値を適用してもよい。例えば、ステップ６０１でＤＲＡＭ改ページの数とテクスチャミスの数とを集計してもよい。
【００６９】
ステップ６０２において、グラフィックタスクに割当てられたグラフィックプロセッサ群５０７の過負荷検査の一部として、ある閾値レベルよりも大きな改ページの数を使用してもよい。同様に、ある期間のテクスチャミスを閾値レベルと比較して、グラフィックプロセッサ群５０７の計算負荷が過負荷になっているかどうかの検査方法としてもよい。いずれの場合も、閾値を上回っているかどうかを検査する。ここでもまた、閾値は調整、アルゴリズム、または調整したアルゴリズムによって決定できる。
【００７０】
グラフィックスの最適化に構成負荷平衡法を適用するのが最適ではない場合もある。上述したように、パフォーマンスデータを採取する期間は、統計的に有為なデータ量を回収できるだけ十分長くなければならない。ただし、あるオブジェクトについてレンダリング中であるポリゴンの数、またはその平均面積もしくはサイズ等のポリゴンの各種特性が刻々と変化する場合は、プロセッサ、バッファ、およびチャネルの構成を十分迅速に変更するフィードバックループを得るために期間を短縮しなければならない。しかし、ステップ６０２のパフォーマンスデータの分析、ならびにステップ６０３，６０４および６０５、またはステップ６０６，６０７および６０８で実行される判定と再構成は、かなりの時間と計算を必要とする。従って、レンダリングされるフレームのポリゴン特性が迅速に変化する場合は、計算および再構成による遅延のため、フィードバックループ作成速度に制限が課される。
【００７１】
具体例として、コンピュータゲームのカークラッシュの場合に見られるように、背景で始まり急速に前景へと飛んでくる破壊された窓の破片が、このグラフィックオブジェクトについて特性が急速に変化するポリゴンの組となりうる。このようなグラフィックオブジェクトのグラフィック処理は、構成負荷平衡法では比較的困難と考えられる。この問題に対処する一つの方法は、データが採取される期間を可変にし、かつアルゴリズムで決定する方法である。これは事前決定するやり方（プログラミング時に調整によって）と対照的である。
【００７２】
しかし、上述した統計的なデータの採取、該データの分析、新たな構成の決定、ならびにジオメトリプロセッサおよびグラフィックプロセッサの数の再構成、かつ該プロセッサ群に関連したチャネルおよびバッファの再構成を行うアプローチには、可変期間の使用を制限する遅延が含まれる。
【００７３】
他のアプローチは、分析ステップ６０２が選択可能な構成の組を予め定めておく方法である。これにより、ジオメトリプロセッサ５０１の数、グラフィックプロセッサ５０７の数、ならびに構成チャネルおよびバッファ５１４の構成決定の計算負荷を大幅に減じることができる。構成負荷平衡法に対抗するこのような構成事前決定アプローチにより、フィードバックループの遅延時間応答を短縮し、これによりポリゴン特性が急速に変化するグラフィックオブジェクトの処理能力を大幅に改善できる。
【００７４】
上記の方法以外に、ジオメトリプロセッサ群５０１およびグラフィックプロセッサ群５０７の負荷を平衡させる方法がある。ある方法はテッセレーションを含む。テッセレーションは、表示するグラフィックオブジェクトを複数のポリゴンに変換する方法である。通常、テッセレーションはジオメトリプロセッサ群５０１中で行われる。テッセレーションの程度は増減可能である。
【００７５】
テッセレーション量を増やすと、あるグラフィックオブジェクトについてレンダリングするポリゴンの数が増え、かつポリゴンの平均サイズが減じられる。テッセレーションを減らすと、あるグラフィックオブジェクトをレンダリングするためにレンダリングされるポリゴンの数が減じられるが、ポリゴンの平均サイズが大きくなる。
【００７６】
コンピュータグラフィックスを最適化する上で、テッセレーション処理が特に有用な状況がいくつかある。図７Ａは、平均ポリゴンサイズを採取するステップ７０１を示す。次のステップ７０２は、ある期間のＤＲＡＭ改ページを集計する。つぎのステップ７０３では、ある期間のテクスチャミスの数を回収する。
【００７７】
ステップ７０４は、平均ポリゴンサイズをポリゴンサイズ上閾と比較する。ステップ７０５は、ＤＲＡＭ改ページ数をＤＲＡＭ改ページ数上閾と比較する。ステップ７０６は、テクスチャミスの回数をテクスチャミス上閾数と比較する。テスト７０４，７０５および７０６のいずれかについて、ある期間の値が上閾値未満ならば、ステップ７０７，７０８および７０９のようにテッセレーション量には変化が生じない。しかし、各ケースにおいて、ある期間の値が上閾値を上回る場合は、ステップ７１０が発生してテッセレーション量の増加を決定する。
【００７８】
ステップ７１０でのテッセレーション量の増加は、種々の実装で実現可能なアルゴリズムによって異なる。しかし、ステップ７１１のテッセレーションの増加により、次の期間の間のポリゴン平均サイズが縮小され、これは次の期間の間の改ページ数の減少とテクスチャミス回数の低減につながる。
【００７９】
図７Ｂは、テッセレーションのサイズを縮小する手順を示す。この手順は様々な理由で行われることに注意されたい。オブジェクトのテッセレーションが多量すぎて、得られるポリゴンの平均サイズが画素サイズ以下になると、ポリゴン頂点内の情報が失われてしまう。すなわちテッセレーションが行われて大量の頂点情報が作成されるが、この情報がレンダリング時には使用されず、これは計算上非常に非効率的である。従って、ステップ７２２はある期間の平均ポリゴンサイズを一実施形態のグラフィックシステムの画素サイズと比較するステップを示す。
【００８０】
ステップ７２０は、ある期間の平均ポリゴンサイズを採取する。ステップ７２４はステップ７２２の結果を問い合わせる。ポリゴンサイズが画素サイズ以下ならば、ステップ７２６でテッセレーション減少量が計算される。ポリゴンサイズが画素サイズを上回れば、ステップ７２４で変更なしとなる。ステップ７２８では、あるグラフィックタスクについてジオメトリプロセッサ群５０１中のテッセレーション量が減じられる。乗算器、スケーラ、または画素値を用いて画素値をいくらか増加させて安全域を増やし、頂点情報の損失を回避できることに注意されたい。
【００８１】
構成負荷平衡方法と、グラフィック最適化テッセレーション方法とは、互いに矛盾するように見えるが、同時に適用することができる。例えば、ジオメトリプロセッサ群が１つのグラフィックプロセッサに結果を送信している場合、ジオメトリプロセッサは１００，０００個超のポリゴンを処理していると考えられる。この場合、ポリゴンが小さすぎて画素解像度未満となるかもしれない。従ってこの場合、矛盾しているようだが、図７Ｂのテッセレーション方法のように、テッセレーション量を減じてポリゴンサイズを増大させることができる。
ただしこれにより、平均ポリゴンサイズが少し増大し、ある期間中にレンダリングするポリゴン数が少し減少しうるが、これは２つのジオメトリエンジン−１つのグラフィックプロセッサを設ける現在のクロスバーチャネルおよびバッファ５１４の構成にはほとんど影響しない。
【００８２】
同様に、１つのジオメトリプロセッサがその出力を２つのグラフィックプロセッサに送信している場合、ジオメトリプロセッサは１、２個から１０個のポリゴンを処理中と考えられる。この状況では、大きなポリゴンが過度の改ページおよびテクスチャミスを生じ、計算負荷を増大させていると予測できなくない。このため図７Ａのテッセレーション方法を適用して、表示する１つ以上のグラフィックオブジェクトのテッセレーションを増大させ、ポリゴン数を増加させ、グラフィックタスク中のポリゴン平均サイズを減じることができる。
【００８３】
だが図７Ａのテッセレーション方法の適用は、単に、例えば表示するポリゴン数を１００個に増やすだけの場合もある。ある期間中のレンダリングするポリゴン数および該ポリゴンの平均サイズのこのような変更は、図６Ａおよび図６Ｂの構成方法による２つのジオメトリプロセッサ−１つのグラフィックプロセッサ構成を変更するのに必要な種類の変更と比べるとやはり些細なものである。従って、負荷平衡構成方法とグラフィックスの最適化に対するテッセレーション方法とは、互いに矛盾しない。構成方法は、可変テッセレーション方法よりもポリゴン特性の変更がより大きな変更に対処する。
【００８４】
図８は、グラフィックプロセッサ装置５００と同じ構成要素を示す。同一参照番号を付した構成要素は同じものである。設定可能な通信チャネルおよびバッファ５１４は基本構成要素部分を示す。
【００８５】
分割−結合クロスバーチャネル８０８は、ジオメトリプロセッサ５０２，５０４および５０６とＤＬＦＩＦＯバッファ８１０間を接続する。制御プロセッサ５２４は、ジオメトリプロセッサ割当て通信チャネル８１４によってジオメトリプロセッサ５０２，５０４および５０６を制御する。制御プロセッサ５２４はバッファ割当てチャネル８１６によって通信チャネル８０８を制御する。制御プロセッサ５２４は、やはりバッファ割当てチャネル８１６によって表示リストＦＩＦＯバッファ８１０も制御する。
グラフィックプロセッサ５０８，５１０および５１２は、１対１クロスバーチャネル８１２を介してＤＬＦＩＦＯバッファ８１０に接続される。ただし、図ではより詳細に示す。レンダリング制御プロセッサ５２２はグラフィックプロセッサ５０８，５１０および５１２からパフォーマンスデータを採取して、フィードバックチャネル５２６によって制御プロセッサ５２４へ送信する。
【００８６】
分割および結合クロスバーチャネル８０８は再設定可能であるので、１つのジオメトリプロセッサ、例えばジオメトリプロセッサ５０２はその出力表示リストを２つ以上のＤＬＦＩＦＯバッファ８１０へ送信させることができる。または、２つ以上のジオメトリプロセッサ、例えばジオメトリプロセッサ５０２とジオメトリプロセッサ５０４とが、その表示リストをクロスバーチャネルによって１つのＤＬＦＩＦＯバッファ８１０へ接続する。
【００８７】
これと対照的に、１対１クロスバーチャネル８１２は、出来上がったＤＬＦＩＦＯバッファ８１０中の順序付けた表示リストの分割または結合は行わず、代わりに、１つのＤＬＦＩＦＯバッファ８１０の順序付けた表示リストをグラフィックプロセッサ５０８等の１つのグラフィックプロセッサに通信できるだけである。１対１クロスバーチャネルは、入出力ＡＳＩＣ、すなわち特定用途向け集積回路である。これは通信チャネル８１８によって制御される。
【００８８】
グラフィックプロセッサ５０８，５１０および５１２から送信されるパフォーマンスデータは、グラフィックプロセッサ群の構成によって異なる。グラフィックプロセッサ５０８，５１０および５１２は、図示するようにグラフィックプロセッサ１０６と同じだが、ただしマルチパスコントローラ８２０，８２２および８２４が加えられている。例えば、グラフィックプロセッサ５０８はグラフィックプロセッサ１０６と同じである。グラフィックプロセッサ５０８は入力バッファ８２６を有する。マルチパスコントローラ８２０は入力バッファ８２６に接続される。ＤＤＡ８２８はマルチパスコントローラ８２０に接続される。画素プロセッサ８３０はＤＤＡ８２８からデータを受信する。テクスチャバッファ８３２とＤＲＡＭページバッファ８３４は、ともに画素プロセッサ８３０と通信する。フレームバッファ８３６はテクスチャバッファ８３２およびＤＲＡＭページバッファ８３４と通信する。グラフィックプロセッサ５１０および５１２も同様に構成される。
【００８９】
グラフィックプロセッサ５０８の各構成要素は、レンダリング制御プロセッサ５２２へ制御情報を通信する。入力バッファ８２６は、その内部のデータ量をレンダリング制御プロセッサ５２２へ通信する。マルチパスコントローラ８２０は、レンダリング制御プロセッサ５２２にパス数を通信する。
【００９０】
ＤＤＡ８２８は、ＤＤＡが描画しているポリゴンのサイズをレンダリング制御プロセッサ５２２へ通信する。ただし多くの実施形態では、ＤＤＡ８２８のセットアップエンジンは、レンダリングするポリゴンのサイズを通信することに注意されたい。画素プロセッサ８３０は、テクスチャ読取り時間をレンダリング制御プロセッサ５２２に通信する。
【００９１】
最後に、フレームバッファ８３６は、ＤＲＡＭ改ページ発生時にレンダリング制御プロセッサ５２２と通信する。グラフィックプロセッサ５１０および５１２中の同様の構成要素は、レンダリング制御プロセッサ５２２に同様の情報を通信する。レンダリング制御プロセッサ５２２は、グラフィックプロセッサ５０８，５１０および５１２から与えられた情報を処理して、図５のところで説明したように制御プロセッサ５２４用のフィードバックを作成する。
【００９２】
動作時には、バッファ割当て通信チャネル８１６によって、制御プロセッサ５２４は、ジオメトリプロセッサが作成する表示リスト用のバッファとして使用するメモリ領域を指定できる。これらのバッファは１つのメモリ中に置いてもよいし、異なる複数のメモリ間に分配してもよい。通信チャネル８１８によって、制御プロセッサ５２４は通信チャネル８１２のクロスバー構成を利用して、ジオメトリプロセッサ５０２，５０４および５０６からの結果をグラフィックプロセッサ５０８，５１０および５１２に送ることができる。マルチパスコントローラ８２０は、同じポリゴンを複数回レンダリングできるようにする。
【００９３】
上記のグラフィックス処理装置８００の構造、特にグラフィックプロセッサ５０８，５１０および５１２の内部構造は、レンダリング制御プロセッサ５２２が受信するパフォーマンスデータの種類を例示している。こうしたパフォーマンスデータに含まれるのは、入力バッファ内部のデータ量、マルチパスコントローラによってポリゴン上に形成されたパス数、ディジタル差動分析器すなわちＤＤＡによって描画されたポリゴンのサイズ、テクスチャバッファミスが発生したかどうか、およびＤＲＡＭページバッファミスが発生したかどうか、という情報である。この情報を用いて、グラフィックプロセッサ内部の計算負荷をより正確に決定できる。また、この情報により他の最適化方法も可能となる。
【００９４】
例えば、小さなポリゴンは、フレームバッファ中のＤＲＡＭ改ページを判定するライン上にくる確率は低いが、それでもくる場合はある。もしレンダリング制御プロセッサ５２２が、多数の改ページを示す改ページ情報と、ポリゴンサイズが小さいことを示す平均ポリゴンサイズ情報とを受信すれば、レンダリング制御プロセッサ５２２は制御プロセッサ５２４に小さなポリゴンを「クリップ」するように命令できる。すなわち、小さなポリゴンのうち一方のＤＲＡＭページ上にある狭い部分はレンダリングされず、他方のＤＲＡＭページ上にある広い部分はレンダリングされる。小型ポリゴンでは、計算効率上の利点と比べて、グラフィックス品質の劣化は小さい。
【００９５】
同じような状況下では、クリッピング以外の別のグラフィックス処理最適化技術が行われる。通常、クリッピングは多数のＤＲＡＭ改ページとテクスチャミスが示された状態でポリゴンサイズが小さい場合に行われるが、もしこの状況に特に多数の小型ポリゴンが含まれ、小型ポリゴンがフレームバッファに関してランダムまたは擬似ランダムに分配されていれば、計算負荷が非常に大きくなる。
【００９６】
これはＤＲＡＭ改ページの過度の増加によるもので、ＤＲＡＭページスワップとも呼ばれるものである。表示されている多数のポリゴンがフレームバッファ８３０中にランダムに分配されていれば、ＤＲＡＭメモリのページは継続的に入出力されるため、フレームバッファ８３０の帯域がいかに広くとも、かなりの速度低下が発生する。
【００９７】
ここでもまた、フィードバックループの概念を実行して、この問題を「タイリング（ｔｉｌｉｎｇ）」によって対処できる。これは本質的にはフレームバッファのページを空間的に順序付けすることである。レンダリングするオブジェクトを本来表示すべき３次元オブジェクトに基づく順序でレンダリングするのではなく、オブジェクトをポリゴンにした後に、１つのフレームのポリゴンが連続して、例えば左から右へ、その後、上から下へ、というように処理されるように再命令される。
【００９８】
一例として、木のようなグラフィックオブジェクトをレンダリングする場合を考える。グラフィック装置８００の通常の動作では、木のなかに発生する順序でポリゴンがレンダリングされる。空間の順序付けを行うと、木のオブジェクトのポリゴンの順序に関係なく、ページごとにフレームがレンダリングされる。このようなタイリングは、再命令の計算時間がいくぶん増えるが、テストした状況下では計算効率がかなり上昇した。
【００９９】
マルチパスコントローラ８２０は、元々、図１には表示していない特別な構成要素である。これはフレームバッファ８３６と画素プロセッサ８３０との間の広い帯域幅と、グラフィックプロセッサ５０８の比較的短いパイプライン全体を利用して、マルチパスレンダリングを可能にする。例えば、第１のレンダリングパスはポリゴンの描画と充填を行い、第２のレンダリングパスはこれにテクスチャをつけ、第３のレンダリングパスはこれに陰影をつける。１つ、２つ、または３つのパスを使用できる。
【０１００】
このマルチパスコントローラ８２０は、ある種の予測負荷平衡法を可能にする。この予測負荷平衡法は、マルチパス装置が持つべき大量の情報に依存する。この大量の情報は、充填された入力バッファ８２６の割合と、マルチパスコントローラ８２９によって作成されたパス数と、完了した現在のポリゴンのレンダリング割合と、グラフィックプロセッサ５０８に順序付けした表示リストを与えているＤＬＦＩＦＯバッファ８１０のバッファ中のポリゴン数とを少なくとも含む。
【０１０１】
この情報により、レンダリング制御プロセッサ５２２または制御プロセッサ５２４は、入力バッファにより多くのデータが必要になり、これによりジオメトリプロセッサがより多くのオブジェクトをプリミティブポリゴンの表示リストに変換開始するのはいつかを推定するか、またはより多くのジオメトリプロセッサをすでに実行中のグラフィックタスクに割当てることができる。この推定モードの平衡法の実行に使用する情報は、構成負荷平衡法で使用する情報とは性質が異なるが、やはりグラフィックス処理の最適化は可能である。
【０１０２】
以上、具体例を参照して本発明を説明したが、上記の各実施形態は本発明の原理および用途を例示したにすぎないことを理解されたい。従って、例示した各実施形態には多数の変形例が可能であり、前掲の特許請求の範囲で規定される本発明の精神および範囲から逸脱することなく他の構成を考案できることを理解されたい。
【産業上の利用可能性】
【０１０３】
本発明は、一般にはグラフィック処理の最適化方法に適用でき、特にマルチプロセッサシステム用のグラフィック処理の最適化方法に適用できる。
【図面の簡単な説明】
【０１０４】
【図１】先行技術のグラフィックス処理装置の図である。
【図２】ある状況下における先行技術のグラフィックス処理装置内部の計算負荷のグラフである。
【図３】他の状況下における先行技術のグラフィックス処理装置の計算負荷のグラフである。
【図４】負荷が平衡した状況下における先行技術のグラフィックス処理装置の計算負荷のグラフである。
【図５】本発明のグラフィックス処理装置の図である。
【図６Ａ】本発明の一実施形態のフローチャートである。
【図６Ｂ】本発明の一実施形態のフローチャートである。
【図７】本発明の他の実施形態のフローチャートである。
【図８】グラフィックス処理装置の一実施形態のより詳細な図である。
【図１】
2005520234.tif 000003
【図２】
2005520234.tif 000004
【図３】
2005520234.tif 000005
【図４】
2005520234.tif 000006
【図５】
2005520234.tif 000007
【図６Ａ】
2005520234.tif 000008
【図６Ｂ】
2005520234.tif 000009
【図７】
2005520234.tif 000010
【図８】
2005520234.tif 000011
【国際調査報告】
2005520234.tif 000012
2005520234.tif 000013
2005520234.tif 000014
2005520234.tif 000015
2005520234.tif 000016
2005520234.tif 000017