JP4691493B2 - マルチプロセッサ・グラフィックス処理システムの適応型負荷分散 - Google Patents

マルチプロセッサ・グラフィックス処理システムの適応型負荷分散 Download PDF

Info

Publication number
JP4691493B2
JP4691493B2 JP2006523975A JP2006523975A JP4691493B2 JP 4691493 B2 JP4691493 B2 JP 4691493B2 JP 2006523975 A JP2006523975 A JP 2006523975A JP 2006523975 A JP2006523975 A JP 2006523975A JP 4691493 B2 JP4691493 B2 JP 4691493B2
Authority
JP
Japan
Prior art keywords
graphics
display area
graphics processors
gpu
feedback data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2006523975A
Other languages
English (en)
Other versions
JP2007503059A (ja
Inventor
ダイアード,フランク・アール
Original Assignee
エヌヴィディア コーポレイション
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by エヌヴィディア コーポレイション filed Critical エヌヴィディア コーポレイション
Publication of JP2007503059A publication Critical patent/JP2007503059A/ja
Application granted granted Critical
Publication of JP4691493B2 publication Critical patent/JP4691493B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/36Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
    • G09G5/39Control of the bit-mapped memory
    • G09G5/393Arrangements for updating the contents of the bit-mapped memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/52Parallel processing
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2352/00Parallel handling of streams of display data

Description

関連出願
(関連出願の相互引用)
本開示は、本出願と同日に出願された「Private Addressing in a Multi−Processor Graphics Processing System」という表題の同一出願人による同時係属米国特許出願第_____号(整理番号019680−006000US)および__年__月__日に出願された「Programming Multiple Chips from a Command Buffer」という表題の同一出願人による同時係属米国特許出願第_____号(整理番号019680−005900US)に関係し、それぞれの開示は、あらゆる目的に関して参照により本明細書に組み込まれる。
本発明は、一般に、複数のプロセッサを備えるグラフィックス処理サブシステムに関するものであり、とりわけ、グラフィックス処理サブシステムの適応型負荷分散に関するものである。
グラフィックス処理サブシステムは、リアルタイムで、例えば、毎秒30フレーム以上で、リアルな動画をレンダリングするように設計されている。これらのサブシステムは、コンピュータ・システムのマザーボード上の適切に構成されたスロット内に差し込むことができる拡張カードに実装されることが最も多く、一般的には、1つまたは複数の専用グラフィックス処理ユニット(GPU)と専用グラフィックス・メモリを備える。典型的なGPUは、グラフィックス計算(例えば、行列変換、走査変換、および/またはその他のラスター化技術、テクスチャ合成など)を実行し、それらの結果をグラフィックス・メモリに書き込むように最適化された非常に複雑な集積回路デバイスである。GPUは、「マスター」プロセッサ、一般的にはシステムの中央演算処理装置(CPU)上で実行されるドライバ・プログラムから受け取ったコマンドに応答して動作する「スレーブ」プロセッサである。
現実性と速度の要求条件を満たすために、一部のGPUが含むトランジスタ数は、典型的CPUに比べて多い。さらに、グラフィックス・メモリは、システム上のトラフィックを少なくすることにより速度を改善するために極めて大きくなっており、現在では一部のグラフィックス・カードは、256MB程度のメモリを搭載する。しかし、このように進歩してきたにも関わらず、なおいっそうの現実性と高速なレンダリングに対する需要が根強い。
このような需要に応じるアプローチの1つとして、一部のメーカーでは、通常は同じカード上にある2つ以上のGPUが並列動作する「マルチ・チップ」グラフィックス処理サブシステムの開発を開始している。並列オペレーションでは、GPUの設計を著しく高度な設計にしなくても、1秒当たり実行可能なレンダリング・オペレーションの回数を実質的に増やすことができる。GPU間のリソース衝突を最小にするため、それぞれのGPUに対し、GPUがレンダリングするピクセル・データを書き込むディスプレイ・バッファを含む、それ専用のメモリ領域を用意するのが一般的である。
マルチ・チップ・システムでは、処理の負荷を、様々な方法で複数のGPU間に分割することができる。例えば、それぞれのGPUに対し、ラスター・ベースのディスプレイの多数のラインなど、表示可能な画像の異なる部分についてピクセル・データをレンダリングするよう命令することができる。画像は、適切な順序でそれぞれのGPUのディスプレイ・バッファからピクセル・データを読み出すことにより表示される。より具体的な例として、グラフィックス処理サブシステムは、2つのGPUを使用して、M行分のピクセル・データからなる表示可能画像を生成することができ、第1のGPUに対し1からPまでの行をレンダリングすることを命令することができ、その一方で、第2のGPUに対しP+1からMまでの行をレンダリングすることを命令することができる。表示される画像の内部的一貫性(「フレーム・コヒーレンス」)を保つため、他のGPUが現在のフレームを終了して、表示される画像の両方の部分が同じスキャンアウト・パスで更新されるまで、各GPUは後続のフレームをレンダリングできないようにされる。
理想的には、表示領域(または画面)は、それぞれのGPUが画像のその部分をレンダリングするのに等しい時間を要するように分割される。レンダリング時間が等しくない場合、フレームのその部分を終了するGPUが最初にアイドル状態になり、貴重な計算リソースを無駄にする。一般に、単純に表示領域を複数のGPU間に均等分割することは、画像の異なる部分のレンダリング複雑度が大きく変化する場合があるため最適な解とはいえない。例えば、ビデオ・ゲームの典型的シーンでは、前景のキャラクタおよび/またはビークル(多数のプリミティブからレンダリングされた複合オブジェクトであることが多い)は、画像の底部近くに現れる傾向があるが、画像の上部は、比較的少数のプリミティブとテクスチャ・マップからレンダリングできる比較的静的な背景により占有されることが多い。このような画像が上半分と下半分に分割された場合、上半分をレンダリングするGPUは、一般に、画像のその部分を完成し、その後、他のGPUが終了するのを待つ。このアイドル時間を避けるために、上側部分が下側部分よりも大きくなるように、表示領域を不均等に分割することが望ましい。一般に、最適な分割は、レンダリングされる特定のシーンに依存し、単一のビデオ・ゲームまたは他のグラフィックス・アプリケーション内でさえ、時間とともに変化する。
したがって、それぞれのGPUにかかる処理負荷を監視し、負荷を分散させるため複数のGPUへの表示領域の分割を動的に調整するためのメカニズムを実現することが望ましい。
本発明は、フレームの異なる部分をレンダリングする複数のグラフィックス・プロセッサ間に負荷を分散させるためのシステムおよび方法を実現する。
本発明の一態様により、並列動作するように構成されたグラフィックス・プロセッサの負荷分散を行うための方法を実現する。表示領域は、複数のグラフィックス・プロセッサのうちの第1のプロセッサによりレンダリングされる少なくとも第1の部分と複数のグラフィックス・プロセッサのうちの第2のプロセッサによりレンダリングされる第2の部分とに分割される。グラフィックス・プロセッサは、フレームをレンダリングするよう命令され、そこで、第1と第2のグラフィックス・プロセッサは、表示領域の第1と第2の部分に対するレンダリングをそれぞれ実行する。第1と第2のグラフィックス・プロセッサからフレームに対するフィードバック・データが受信され、フィードバック・データは、第1と第2のグラフィックス・プロセッサに対するそれぞれのレンダリング時間を反映する。フィードバック・データに基づき、第1と第2のグラフィックス・プロセッサのそれぞれの負荷の間に不均衡が存在するかどうかが判定される。不均衡が存在する場合、フィードバック・データに基づき、重い第1と第2のグラフィックス・プロセッサのうちのより負荷の重い一方が識別され、表示領域は、その表示領域の第1と第2の部分のうちの第1と第2のグラフィックス・プロセッサの負荷の重いプロセッサによりレンダリングされる方のサイズを増やし、表示領域の第1と第2の部分の他方のサイズを減らすように再分割される。
本発明の他の態様により、並列動作するように構成されたグラフィックス・プロセッサの負荷分散を行うための方法を実現する。表示領域は、第1のグラフィックス・プロセッサによりレンダリングされる少なくとも第1の部分と、第2のグラフィックス・プロセッサによりレンダリングされる第2の部分とに分割される。グラフィックス・プロセッサは、多数のフレームをレンダリングするよう命令され、そこで、第1と第2のグラフィックス・プロセッサは、表示領域の第1と第2の部分に対するレンダリングをそれぞれ実行する。第1と第2のグラフィックス・プロセッサからそれぞれのフレームに対するフィードバック・データが受信され、それぞれのフレームに対するフィードバック・データは、第1と第2のグラフィックス・プロセッサのうちのどちらがフレームのレンダリングを最後に終了したのかを示す。フィードバック・データに基づき、第1と第2のグラフィックス・プロセッサのそれぞれの負荷の間に不均衡が存在するかどうかが判定される。不均衡が存在する場合、フィードバック・データに基づき、第1と第2のグラフィック・プロセッサの負荷が重い方が識別され、表示領域は、その表示領域の第1と第2の部分のうち第1と第2のグラフィックス・プロセッサの負荷の重いプロセッサによりレンダリングされる方のサイズを増やし、表示領域の第1と第2の部分の他方のサイズを減らすように再分割される。
いくつかの実施態様では、格納先は複数のフレームのうちのそれぞれのフレームに関連付けられ、複数のフレームのそれぞれに対するフィードバック・データを受信することは、第1のグラフィックス・プロセッサに、そのフレームの表示領域の第1の部分をレンダリングした後複数のフレームのそれぞれに対する複数の格納先のうちの関連付けられた格納先に第1のプロセッサ識別子を格納するよう命令することと、第2のグラフィックス・プロセッサに、そのフレームの表示領域の第2の部分をレンダリングした後複数のフレームのそれぞれに対する複数の格納先の関連付けられた格納先に第1のプロセッサ識別子と異なる第2のプロセッサ識別子を格納するよう命令することを含む。第1と第2の識別子のそれぞれは、異なる数値を持つことができ、不均衡が存在するかどうかの判定は、格納先に格納されている数値から負荷係数を計算することを含む。負荷係数は、例えば、不均衡が存在しているかどうかを判定するためにプロセッサ識別子の数値の算術平均と対比できる記録された数値の平均とすることができる。
いくつかの実施態様では、再分割の活動時に、表示領域の第1の部分のサイズがどれだけ縮小されるかは、負荷係数と算術平均との差の大きさに少なくとも一部は依存する。
いくつかの実施態様では、複数のグラフィックス・プロセッサは、さらに、第3のグラフィックス・プロセッサを含む。分割の活動中に、表示領域は、表示領域の第1の部分に対応する第1のバンド、表示領域の第2の部分に対応する第2のバンド、第3のグラフィックス・プロセッサによりレンダリングされる表示領域の第3の部分に対応する第3のバンドを含む少なくとも3つのバンドに分割することができ、第1のバンドは第2のバンドに隣接し、第2のバンドは第3のバンドに隣接する。複数のフレームのそれぞれについて追加フィードバック・データを受信することができ、追加フィードバック・データは、フレームのレンダリングを最後に終了したのは第2のグラフィックス・プロセッサと第3のグラフィックス・プロセッサのうちのどちらであるかを示す。フィードバック・データに基づき、第2と第3のグラフィックス・プロセッサのそれぞれの負荷の間に不均衡が存在するかどうかを判定できる。不均衡が存在する場合、第2と第3のグラフィックス・プロセッサのうちのどちらの負荷が重いかを判定することができ、また表示領域は、その表示領域の第2と第3の部分のうちの第2と第3のグラフィックス・プロセッサの負荷の重いプロセッサによりレンダリングされる方のサイズを増やし、表示領域の第2と第3の部分の他方のサイズを減らすように再分割さできる。
本発明のさらに他の態様により、複数のグラフィックス・プロセッサを備えるグラフィックス処理サブシステム用のドライバは、コマンド・ストリーム・ジェネレータ、不均衡検出モジュール、分割モジュールを含む。コマンド・ストリーム・ジェネレータは、グラフィックス・プロセッサ用のコマンド・ストリームを生成するように構成され、コマンド・ストリームは、フレームのレンダリング・コマンドの集合とそれぞれのプロセッサがレンダリング・コマンドの集合を実行したことを示すフィードバック・データを送信する第1のグラフィックス・プロセッサと第2のグラフィックス・プロセッサのそれぞれへの命令を含む。不均衡検出モジュールは、第1と第2のグラフィックス・プロセッサにより送信されたフィードバック・データを受信し、第1と第2のグラフィックス・プロセッサのそれぞれの負荷の間に不均衡が存在するかどうかをフィードバック・データから判定するように構成されている。分割モジュールは、1つの表示領域を複数の部分に分割するように構成され、それぞれの部分は、複数のグラフィックス・プロセッサのうちの異なる1つのグラフィックス・プロセッサによりレンダリングされ、それら複数の部分は第1のグラフィックス・プロセッサによりレンダリングされる第1の部分と第2のグラフィックス・プロセッサによりレンダリングされる第2の部分を含む。分割モジュールは、さらに、不均衡が存在すると不均衡検出モジュールにより判定されたことに応じて、分割モジュールは、表示領域の第1と第2の部分のうちの、第1と第2のグラフィックス・プロセッサのうちの負荷の重いグラフィックス・プロセッサによりレンダリングされる方のサイズを増やし、表示領域の第1と第2の部分のうちの他方のサイズを減らす。
以下の詳細な説明を付属の図面と併せて読むと、本発明の性質および利点をよく理解できる。
本発明は、フレームの異なる部分をレンダリングする複数のグラフィックス・プロセッサ間に負荷を分散させるためのシステムおよび方法を実現する。いくつかの実施形態では、負荷分散は、2つのグラフィックス・プロセッサのうち一方がフレームのレンダリングを最後に終了する頻度が他方よりも多いかどうかを判定することにより実行される。最後に終了する頻度が一方のプロセッサにかたよっている場合、処理負担の一部(例えば、レンダリングするピクセルのライン数)が、そのプロセッサから他方のプロセッサにシフトされる。比較を繰り返し、望む回数だけ負荷調整をすることができる。2つ一組の負荷比較と負荷分散の技術を任意の数のグラフィックス・プロセッサを備えるシステムに拡張することができる。
図1は、本発明の一実施形態によるコンピュータ・システム100のブロック図である。コンピュータ・システム100は、バス106を介して通信する中央演算処理装置(CPU)102とシステム・メモリ104を備える。ユーザ入力は、バス106に結合されている1つまたは複数のユーザ入力デバイス108(例えば、キーボード、マウス)から受信される。視覚的出力が、システム・バス106に結合されたグラフィックス処理サブシステム112の制御の下で動作しているピクセル・ベースのディスプレイ・デバイス110(例えば、従来のCRTまたはLCDベースのモニタ)上に送られる。システム・ディスク128と、1つまたは複数の取り外し可能なストレージ・デバイス129(例えば、フロッピ・ディスク・ドライブ、コンパクト・ディスク(CD)ドライブ、および/またはDVDドライブ)などの他のコンポーネントも、システム・バス106に結合することができる。
グラフィックス処理サブシステム112は、システム100のマザーボード上の適切なバス・スロット(例えば、PCIまたはAGP)に接続されるように適合されたプリント基板カードを使用して実装されると都合がよい。この例では、グラフィックス処理サブシステム112は、2つ(またはそれ以上)のグラフィックス処理ユニット(GPU)114a、114bを備え、それぞれ、別々の集積回路デバイスとして実装されると都合がよい(例えば、プログラム可能プロセッサまたは特定用途向け集積回路(ASIC))。GPU 114a、114bは、システム・バス106を介して受信された命令(コマンド)への応答として様々なレンダリング機能を実行するように構成される。いくつかの実施形態では、レンダリング機能は、ディスプレイ・デバイス110上に表示するためシーンを記述する幾何学データをピクセル・データに変換するために使用されるグラフィックス処理パイプラインにおける様々なステップに対応する。これらの機能は、例えば、照明変換、座標変換、幾何学的プリミティブのラスター化データへの走査変換、隠面消去表示計算、陰影レンダリング、テクスチャ合成などを含むことができる。当業では、レンダリング機能の多数の実装が知られており、GPU 114a、114bで実現することができる。GPU 114a、114bは、グラフィックス処理命令がいずれかのGPUにより実行することができ、実質的に同一の結果を得られるようにまったく同じに構成されると都合がよい。
それぞれのGPU 114a、114bは、関連付けられたグラフィックス・メモリ116a、116bを備え、これらは、一般的に従来の設計の1つまたは複数の集積回路メモリ・デバイスを使用して実装することができる。グラフィックス・メモリ116a、116bは、ディスプレイ・バッファ122a、122bと、コマンド・バッファ124a、124bなどの様々な物理的または論理的細分を含むことができる。ディスプレイ・バッファ122a、122bは、スキャンアウト制御論理回路120により読み込まれ、表示するためディスプレイ・デバイス110に送信される画像(または画像の一部)に対するピクセル・データを格納する。このピクセル・データは、システム・バス106を介してGPU 114a、114bに供給されるシーン・データから生成されるか、またはCPU 102上で実行されている様々なプロセスにより生成され、システム・バス106を介してディスプレイ・バッファ122a、122bに供給されるようにできる。いくつかの実施形態では、ディスプレイ・バッファ122a、122bは、二重バッファ型とすることができ、これにより、「前」バッファから表示のため第1の画像のデータが読み込まれている間に、第2の画像のデータを現在表示されている画像に影響を及ぼすことなく「後」バッファに書き込むことができる。コマンド・バッファ124a、124bを使用することで、後述のように、それぞれのGPU 114a、114bにより実行するためシステム・バス106を介して受信されたコマンドをキューに入れる。グラフィックス・メモリ116a、116bの他の部分は、それぞれのGPU 114a、114b(テクスチャ・データ、色ルックアップ・テーブルなど)、GPU 114a、114b用の実行可能プログラム・コードなどにより必要とされるデータを格納するために使用できる。
それぞれのグラフィックス・メモリ116a、116bについて、それぞれのグラフィックス・メモリへのアクセスを制御するために、メモリ・インターフェース123a、123bがさらに備えられる。メモリ・インターフェース123a、123bを、それぞれのGPU 114a、114b、またはそれぞれのメモリ116a、116bと一体化することができるか、または別の集積回路デバイスとして実装することができる。一実施形態では、GPU 114aから発せられるすべてのメモリ・アクセス要求は、メモリ・インターフェース123aに送信される。要求のターゲット・アドレスがメモリ116a内のあるロケーションに対応している場合、メモリ・インターフェース123aは、適切なロケーションにアクセスし、対応していない場合、メモリ・インターフェース123aは、その要求をブリッジ・ユニット130に転送するが、これについては後述する。メモリ・インターフェース123aは、さらに、メモリ116a内のロケーションをターゲットとするすべてのメモリ・アクセス要求を受信する。これらの要求は、スキャンアウト制御論理回路120、CPU 102、または他のシステム・コンポーネント、さらにGPU 114aまたは114bから発信される。同様に、メモリ・インターフェース123bは、GPU 114bから発信されるか、メモリ116b内のロケーションをターゲットとする、すべてのメモリ・アクセス要求を受信する。
ブリッジ・ユニット130は、グラフィックス処理サブシステム112(メモリ・インターフェース123a、123b)のコンポーネントとシステム100の他のコンポーネントとの通信を管理するように構成される。例えば、ブリッジ・ユニット130は、システム・バス106からすべての着信データ転送要求を受信し、メモリ・インターフェース123a、123bの1つまたは複数に要求を配信(またはブロードキャスト)することができる。ブリッジ・ユニット130は、さらに、グラフィックス処理サブシステム112の外部にあるメモリ・ロケーションを参照するグラフィックス処理サブシステム112(GPU 114a、114b)のコンポーネントから発信するデータ転送要求を受信し、システム・バス106を介してそれらの要求を送信することもできる。さらに、いくつかの実施形態では、ブリッジ・ユニット130は、GPU 114a、114bのうちの他方に関連付けられているメモリ116b、116aにGPU 114a、114bのいずれかによりアクセスすることを容易にする。ブリッジ・ユニット130の例は、上記の同時係属出願第_____号(整理番号019680−006000US)で詳述されており、本明細書では、本発明を理解するうえで重要でないので、詳細な説明を省く。
動作時に、CPU 102上で実行されているグラフィックス・ドライバ・プログラム(または他のプログラム)は、GPU 114a、114bによる処理のためレンダリング・コマンドと、それに関連付けられたデータを配信する。いくつかの実施形態では、CPU 102は、CPU 102とGPU 114a、114bの両方からアクセス可能なメモリ内に実装することができるコマンド・バッファを使用してGPU 114a、114bのそれぞれと非同期に通信する。一実施形態では、コマンド・バッファは、システム・メモリ104内に格納され、直接メモリ・アクセス(DMA)転送を介してGPU 114a、114bからアクセス可能である。他の実施形態では、それぞれのGPU 114a、114bは、メモリ116a、116b内にそれぞれのコマンド・バッファ124a、124bを備える。それらのコマンド・バッファは、DMA転送を介してCPU 102からアクセス可能である。コマンド・バッファには、多数のレンダリング・コマンドとレンダリング・データの集合が格納される。一実施形態では、レンダリング・コマンドは、レンダリング・データに関連付けることができ、レンダリング・コマンドは、関連付けられているレンダリング・データに対しGPUにより実行されるレンダリング・オペレーションの集合を定義する。いくつかの実施形態では、レンダリング・データは、関連付けられているレンダリング・コマンドに隣接するコマンド・バッファ内に格納される。
CPU 102は、レンダリング・コマンドとデータの集合を含むコマンド・ストリームをそれぞれのGPU 114a、114b用のコマンド・バッファ(例えば、コマンド・バッファ124a、124b)に書き込む。いくつかの実施形態では、同じレンダリング・コマンドとデータが、それぞれのGPUのコマンド・バッファに書き込まれ(例えば、ブリッジ・チップ130のブロードキャスト・モードを使用して)、他の実施形態では、CPU 102がそれぞれのGPUのコマンド・バッファに別々に書き込む。同じコマンド・ストリームが両方のGPU 114a、114bに供給される場合、コマンド・ストリームは、それらのGPUのうちのどちらが特定のコマンド処理すべきかを指示するタグまたは他のパラメータを含む。
それぞれのコマンド・バッファ124a、124bは、CPU 102により書き込まれ、GPU 114a、114bのうちのそれぞれの一方により読み出される先入れ先出しバッファ(FIFO)として実装されると都合がよく、読み書きは非同期に実行することで可能である。一実施形態では、CPU 102は、CPU 102が書き込む毎にインクリメントする、「put」ポインタにより決定されるロケーションでそれぞれのコマンド・バッファに新しいコマンドとデータを定期的に書き込む。それぞれのGPU 114a、114bは、非同期に、そのコマンド・バッファ124a、124bにすでに格納されているコマンドとデータの集合を連続的に読み込み、処理し、それぞれのGPU 114a、114bは、そのコマンド・バッファ124a、124b内の読み込みロケーションを識別するための「get」ポインタを保持し、そのgetポインタは、読み込み毎にインクリメントされる。CPU 102がGPU 114a、114bよりも十分先んじているとすると、それらのGPUは、CPU 102を待つアイドル時間を被ることなく画像をレンダリングすることができる。いくつかの実施形態では、コマンド・バッファのサイズとシーンの複雑度に応じて、CPU 102は、GPU 114a、114bによりレンダリングされるフレームよりも数フレーム先のフレームに対するコマンドとデータの集合を書き込むことができる。
コマンド・バッファは、固定サイズ(例えば、5メガバイト)とすることができ、ラップアラウンド方式で読み書きすることができる(例えば、最後のロケーションに書き込んだ後、CPU 102は「put」ポインタを第1のロケーションにリセットすることができる)。マルチチップ・グラフィックス処理システムでコマンドとデータをコマンド・バッファに書き込むためのコマンド・バッファと手法の実施形態の詳細については、上述の同時係属出願第_____号(整理番号019680−005900US)に記載されている。
スキャンアウト制御論理回路120は、フレーム・バッファ122a、122bから画像のピクセル・データを読み込み、そのデータを表示するためディスプレイ・デバイス110に転送する。スキャンアウトは、一定の垂直走査周波数(例えば、80Hz)で実行することができ、垂直走査周波数は、ユーザ選択可能なパラメータとすることができ、画像データの新しいフレームがディスプレイ・バッファ122a、122bに書き込まれる速度に対応している必要はない。スキャンアウト制御論理回路120は、さらに、色値の調整、ディスプレイ・バッファ122a、122bのいずれかのピクセル・データをグラフィックス・メモリ116a、116bまたは他のデータ・ソース(図に示されていない)のいずれかから得られるビデオまたはカーソル・オーバーレイ画像などのデータと組み合わせることによる合成画面画像の生成、デジタル−アナログ変換などの他のオペレーションを実行することもできる。
GPU 114a、114bは、並列動作させると、画像データの新しいフレームをレンダリングできる速度を高めることができて都合がよい。「空間を並列方式」と本明細書で呼ばれる一実施形態では、それぞれのGPU 114a、114bは、それぞれのフレームの異なる部分(例えば、水平または垂直バンド)に対するピクセル・データを生成し、スキャンアウト制御論理回路120は、ディスプレイ・バッファ122aからのフレームに対するピクセル・データの第1の部分(例えば、上側部分)とディスプレイ・バッファ122bからの第2の部分(例えば、下側部分)を読み込む。空間並列方式では、レンダリング・コマンドとそれに随伴するデータは、両方のコマンド・バッファ124a、124bに並列動作で書き込むことができるが(例えば、ブリッジ・ユニット130のブロードキャスト・モードを使用して)、コマンドおよび/またはデータは、コマンド・バッファの1つまたは複数に選択的に書き込むこともできる(例えば、表示可能領域を定義するコマンドに対する異なるパラメータは、それぞれのGPUが画像の正しい部分をレンダリングするように異なるコマンド・バッファに書き込むことが可能である)。
空間並列方式の一例が図2に示されている。表示領域200は、ピクセル・データのM本のライン(水平行)からなる。ライン1からP(表示領域200の上側部分202に対応する)は、図1のGPU 114aによりレンダリングされ、ラインP+1からM(表示領域200の下側部分204に対応する)は、GPU 114bによりレンダリングされる。この実施形態では、それぞれのGPU 114a、114bは、ディスプレイ・バッファ122a、122bを、データのフレーム全体(M本のライン)を格納するのに十分な大きさのローカル・メモリ116a、116b内に割り付けるが、それがレンダリングするラインのみを埋める(GPU 114aについてはライン1からPまで、GPU 114bについてはラインP+1からMまで)。それぞれの表示フレッシュ・サイクルで、スキャンアウト制御論理回路120は、ディスプレイ・バッファ122aから最初のP本のラインを読み込み、その後、ディスプレイ・バッファ122bに切り替えて、ラインP+1からMまでを読み込む。それぞれのGPUがどのラインをレンダリングするかを決定するために、GPU毎に「クリップ矩形」が設定され、例えば、GPU 114aは、フレーム200の上側部分202に対応するクリップ矩形を持つことができるが、GPU 114bは、フレーム200の下側部分204に対応するクリップ矩形を持つ。
本発明の一実施形態により、それぞれのGPUは、フィードバック・データをグラフィックス・ドライバ・プログラム(またはCPU 102上で実行する他のプログラム)に供給する。フィードバック・データは、画像のその部分をレンダリングするために特定のGPUでかかる時間に関する情報を含む。グラフィックス・ドライバ・プログラムは、このフィードバックを使用して、ときどきクリップ矩形を修正する、例えば、2つのGPU上の相対的負荷に基づき境界ラインを異なるラインP’に変更することにより、GPU間の動的負荷分散を行う。
コマンド・バッファ124a、124bのいずれか一方(または両方に)書き込むことができるコマンド・ストリーム300の例が図3に示されている。ストリームは、画像の表示可能領域を定義する、「クリップ矩形」(CR)コマンド302で開始する。例えば、GPU 114aのクリップ矩形は、表示領域200(図2)のライン1からPまでを含むように定義することができ、GPU 114bのクリップ矩形はラインP+1〜Mを含む。本明細書で使用されているように、「クリップ矩形」という用語は、フレームまたは画像に対する像平面の見える部分、またはより具体的には、特定のGPUがレンダリングするよう命令されている像平面の部分を定義することに関連する特定のコマンドまたは用語を含むものと理解すべきである。
クリップ矩形コマンドの後に、フレームF0に対する1つまたは複数のレンダリング・コマンド304と関連するレンダリング・データが続く。これらのコマンドとデータは、例えば、シーンを構成するプリミティブおよび/またはオブジェクトの定義、座標変換、照明変換、隠面消去表示コマンド、テクスチャ・コマンド、その他の種類のレンダリング・コマンドおよび/またはデータを含むことができ、通常は、ピクセル・データをディスプレイ・バッファ122a、122bに書き込んで(および、スキャンアウト制御9論理回路120によるそのデータの読み込みで)終わりになる。
フレームF0に対する最後のレンダリング・コマンド304の後に、「ライト・ノティファイヤ」(WN:write notifier)コマンド306が続く。ライト・ノティファイヤ・コマンドは、GPUに、システム・メモリにフィードバック・データを書き込み、フレームF0を終了したことを示すよう命令する。このフィードバック・データは、グラフィックス・ドライバ・プログラムにより読み込まれ、GPU間の負荷分散に使用される。フィードバック・データの特定の実施形態について以下で説明する。
ノティファイヤ・コマンド306の後に、次のフレームF1に対するレンダリング・コマンド308と関連するレンダリング・データが続き、順に、他のライト・ノティファイヤ・コマンド310と続く。ある数(Q)のフレームの後に、ライト・ノティファイヤ・コマンド322があり、その後に新しいクリップ矩形コマンド324が続く。この時点で、それぞれのGPUに対するクリップ矩形は、様々なライト・ノティファイヤ・コマンド(例えば、コマンド306、310)に対する応答として受信されたフィードバック・データに基づきグラフィックス・ドライバ・プログラムにより修正することができる。例えば、表示領域が図2に示されているように分割される場合、Pの値は、フィードバック・データに応じて(例えば、P’に)修正することができ、上側部分202を処理するGPUがフレームを先に終了する傾向がある場合、Pの値が増やされ、下側部分204を処理するGPUが先に終了する傾向がある場合、Pの値が減らされる。フィードバック・データに応じて表示領域を再分割する特定の実施形態について、以下で説明する。
本明細書で説明されているシステムは、例示的であり、変更形態や修正形態も可能であることは理解されるであろう。例えば、それぞれのメモリを有する2つのGPUが示されているが、使用するGPUはいくつでもよく、複数のGPUがメモリを共有することが可能である。本明細書で説明されているメモリ・インターフェースは、単一の集積回路デバイス(チップ)内のGPUおよび/またはメモリと一体化するか、または別のチップとして実装することが可能である。ブリッジ・ユニットは、メモリ・インターフェースおよび/またはGPUチップと一体化することができるか、または別のチップ上に実装することができる。1つまたは複数の集積回路デバイスを使用して様々なメモリを実装できる。グラフィックス処理サブシステムは、PCI、PCIX(PCI Express)、AGP(Accelerated Graphics Port)などを含む様々な拡張カード形式を使用して実装することができる。グラフィックス処理サブシステムのコンポーネントのいくつか、またはすべてをマザーボード上に直接取り付けることができ、例えば、GPUの1つは、マザーボード取り付けグラフィックス・コプロセッサとすることができる。本発明を実施する上で好適なコンピュータ・システムは、さらに、高速DMA(直接メモリ・アクセス)チップなどの他の様々なコンポーネントを含むこともでき、また単一システムは、バスを相互接続するために用意されている適切なコンポーネントとともに複数のバス・プロトコルを実装することができる(例えば、PCIとAGPバスが両方とも存在しうる)。1つまたは複数のコマンド・バッファを、グラフィックス・サブシステム・メモリではなく、メイン・システム・メモリ内に実装することができ、コマンドは、(複数の)GPUがコマンドを受信または処理することを示す追加パラメータを含むことができる。本発明の説明では、非同期オペレーションを取りあげている場合があるが、当業者であれば、本発明は、CPUがGPUと同期して通信するシステム内に実装することもできることを理解するであろう。
次に、フィードバック・データとフィードバック・データに基づく負荷分散技術の実施形態について説明する。一実施形態では、それぞれのGPU 114a、114bは、ローカル・メモリ116a、116b内の指定ロケーションに格納する識別子を割り当てられ、この識別子は、さらに、それぞれのGPU 114a、114bのオンチップ・レジスタ内にも格納できる。例えば、GPU 114aは、識別子「0」を割り当てることができるが、GPU 114bは、識別子「1」を割り当てられる。これらの識別子は、数値を持つと都合がよく、例えば、システム起動またはアプリケーション起動時に割り当てることができる。後述のように、この識別子は、負荷分散を目的としてフィードバック・データとして使用することができる。
図4は、GPUの識別子を含むフィードバック・データを記録するためのプロセス400を例示している。ステップ402で、グラフィックス・ドライバ・プログラムは、システムのメイン・メモリ内に次元B(例えば、5、10、20、50など)のフィードバック配列(本明細書ではfeedback[0:B−1]と呼ばれる)を作成し、ステップ404で、フレーム・カウンタkは初期化される(例えば、0に)。この実施形態では、それぞれのフレームkに続くライト・ノティファイヤ・コマンドは、例えば、DMAブロック転送オペレーション(「Blit」)またはGPUがシステム・メイン・メモリにデータを書き込む他のオペレーションを使用して、ローカル・メモリからシステム・メイン・メモリ内のロケーションfeedback[k]に識別子をコピーするようGPUに対し命令する。そのため、ステップ406で、フレームkのレンダリングを終了する第1のGPUは、その識別子を配列ロケーションfeedback[k]に書き込む。ステップ408で、フレームkのレンダリングを終了する第2のGPUは、その識別子を配列ロケーションfeedback[k]に書き込み、第1のGPUの識別子を上書きする。GPU 114a、114bのいずれかが最初に終了し、先に1つのフレームを終了するGPUは、他のフレームを最後に終了する可能性のあることは理解されるであろう。
この実施形態では、それぞれのGPUは、システム・メモリ内の同じロケーションに書き込むように命令され、その結果、フレームkを終了する第2のGPUは、配列要素feedback[k]内で第1のGPUの識別子を上書きすることに留意されたい。したがって、両方のGPUが特定のフレームkを終了した後、feedback[k]に格納された値は、どのGPUがフレームkを最後に終了したかを示す。
ステップ410で、フレーム・カウンタは、次のフレームにインクリメントされる、モジュロB。これにより、フィードバック配列は、B個のフレーム毎に循環する形で上書きされ、配列の内容は、一般的に、レンダリングされた最後B個のフレームを反映する。一実施形態では、それぞれのフレームに対するフレーム・カウンタ値は、書き込み通知コマンドとともにそれぞれのGPUに送られ、他の実施形態では、それぞれのGPUは、それ専用のフレーム・カウンタを保持し、ライト・ノティファイヤ・コマンドに応答して、システム・メモリ内の適切なロケーションに識別子を書き込んだ後、フレーム・カウンタを更新する。
フィードバック配列内の情報は、図5に例示されているように、負荷分散のためグラフィックス・ドライバ・プログラム(またはCPU 102上で実行される他のプログラム)で使用することができる。プロセス500は、連続ループとして示されており、そこでは、GPU上の相対的負荷は、ときどきフィードバック配列に格納されている値の平均をとることにより推定され、負荷は、推定値に基づいて調整される。この実施形態では、空間並列方式で動作する2つのGPU(例えば、図1のGPU 114a、114b)があり、表示領域は、図2に示されているように分割される。表示領域の上側部分202に割り当てられたGPUは、識別子「0」を持ち、本明細書ではGPU−0とし呼ばれ、下側部分204に割り当てられたGPUは、識別子「1」を持ち、本明細書ではGPU−1と呼ばれる。負荷分散は、GPU毎にクリップ矩形を調整することにより、実行され、この例では図2の境界ラインPの配置により決定される。
ステップ501で、クリップ矩形コマンドは、GPU毎に発行される(例えば、コマンド・ストリーム内に置かれる)。この初期クリップ矩形コマンドは、表示領域をGPU間で均等に(例えば、P=M/2を使用して)または不均等に分割することができる。例えば、アプリケーション・プログラムの開発者は、その負荷を近似的に分散するPの値を経験に基づいて決定し、適切なコマンドを介してその値をグラフィックス・ドライバ・プログラムに供給することができる。それぞれのGPUに割り付けられた表示領域の部分の初期サイズは、負荷分散のためときどき変化するのがふつうなので、重要でない。
ステップ502で、グラフィックス・ドライバは、GPU間の負荷分散を行う時間かどうかを判定する。この判定には様々な基準を使用でき、例えば、グラフィックス・ドライバは、Qが1、2、5、10、20などである場合に、何らかの数(Q)のフレームの後に負荷分散を行うことができる。Qは、フィードバック配列内のエントリBの個数を超えないのがよいが、QはBに等しい必要はない。それとは別に、負荷分散は、定期的間隔(例えば、1秒に1回)、または他の基準に従って実行することができる。負荷分散を行う時間でない場合、プロセス500は待機し(ステップ504)、その後、ステップ502で負荷分散基準を再びチェックする。
負荷分散を行う時間の場合、グラフィックス・ドライバは、ステップ506でフィードバック配列からのQ値の平均を求め、それにより負荷係数を計算する。一実施形態では、QはB(フィードバック配列の長さ)に等しく、他の値を選択することができる。グラフィックス・ドライバとGPUは、上述のようにCPUと非同期に動作することができるため、グラフィックス・ドライバは、GPUが特定のフレームを終了したかどうかを関知しなくてよく、GPUは、グラフィックス・ドライバの現在のフレームよりも、コマンド・ストリーム内の数フレーム前にあるフレームをレンダリングしている可能性があることに留意されたい。フィードバック配列が、上述のプロセス400のように、循環方式で書き込まれる場合、QをBに等しくなるように選択することで、B個の一番最近レンダリングされたフレーム上で平均をとる。いくつかの実施形態では、重み付き平均を使用し、例えば、より大きな重みを最近レンダリングされたフレームに与えることができる。
負荷係数は、GPUのクリップ矩形に対する調整を行う必要があるかどうかを判定するために使用される。GPUに等しい負荷がかかっている場合、いずれかのGPUがフレームを最初に終了する確率は約50%であり、適当な数(例えば、20)のフレームに対する平均値は、識別子の値として0と1が使用されれば約0.5である。0.5を超える平均値は、GPU−1(画像の下側部分をレンダリングする)はGPU−0よりも負荷が重いことを示し、0.5未満の平均値は、GPU−0(画像の上側部分をレンダリングする)はGPU−1よりも負荷が重いことを示す。
したがって、ステップ510で、負荷係数が「高」しきい値を超えるかどうかが判定される。高しきい値が事前に選択され、またこれは、きっかり0.5、またはそれよりもいくぶん高い値(例えば、0.55または0.6)とすることができる。負荷係数が高しきい値を超える場合、ステップ512で、図2の境界ラインPをプリセット値(例えば、ライン1本、5本、10本分)だけ下げることにより負荷を調整する。これにより、GPU−1によりレンダリングされる表示領域の一部が縮小され、このため、GPU−1の負荷が減少し、GPU−0の負荷が増大する傾向が生じる。そうでなければ、ステップ514で、負荷係数が「低」しきい値よりも低いかどうかが判定される。低しきい値が事前に選択され、またこれは、きっかり0.5、またはそれよりもいくぶん低い値(例えば、0.45または0.4)とすることができる。負荷係数が低しきい値よりも小さい場合、ステップ516で、図2の境界ラインPをプリセット値(例えば、ライン1本、5本、10本分)だけ下げることにより負荷を調整する。ステップ518で、負荷係数が高しきい値以下、かつ低しきい値以上の場合、負荷は均衡していると考えられ、境界ラインPは変更されない。
新しい境界ラインPが決定された後、新しいクリップ矩形コマンドがGPU毎に発行され(ステップ522)、プロセスは、ステップ504に戻り、再び負荷分散のときを待つ。他の実施形態では、境界ラインが変化した場合のみ、ステップ522で、新しいクリップ矩形コマンドが発行される。新しいクリップ矩形コマンドとともに、適切なディスプレイ・バッファが選択されピクセル・データのそれぞれのラインを供給するように、メッセージがスキャンアウト制御論理回路に送信される(例えば、ディスプレイ・バッファの選択に関係する1つまたは複数のスキャンアウト・パラメータを修正することにより)。スキャンアウト制御論理回路のパラメータの変更は、新しいクリップ矩形が有効になるフレームのレンダリングと同期すると都合がよく、したがって、いくつかの実施形態では、クリップ矩形コマンドは、さらに、スキャンアウト・パラメータを更新し、次にレンダリングされたフレームを正しく表示することができる。
いくつかの実施形態では、境界ラインが負荷分散するようにシフトされるときに、一方のディスプレイ・バッファから他方のディスプレイ・バッファへデータを転送すると有益な場合がある。例えば、図2では、GPU 114a、114bが現在のフレームのレンダリングを終了した直後に、Pの値をより大きな値P’に変更し、GPU 114aが次のフレームについてレンダリングするラインの本数を増やすと仮定する。GPU 114aは、次のフレームを正しく処理するために、現在のフレームのラインP+1からP’の一部または全部に対するデータにアクセスする必要がある場合がある。一実施形態では、GPU 114aは、ラインP+1からP’に対するデータを持つディスプレイ・バッファ122bの部分からDMA転送によりデータを取得することができる。この目的のために使用されると都合がよいと思われるプロセスの例については、上記の出願第_____号(整理番号019680−006000US)で説明されているが、データを転送するための他の様々なプロセスも使用できる。ディスプレイ・バッファ間でデータを転送することは必要というわけではないが、データ転送に関連するオーバーヘッドを、一方のGPUに他方のGPUによりすでに実行済みの計算を繰り返させることのオーバーヘッドが超えている実施形態では有用な場合があることは理解されるであろう。グラフィックス・メモリ116a、116b間で表示されないデータ(例えば、テクスチャ・データ)を転送することも、場合によっては、望ましく、上述の手法を使用して実装することができる。
本明細書で説明されているプロセスは、例示的であり、変更形態や修正形態も可能であることは理解されるであろう。逐次的として説明されているステップは、並列実行することができ、ステップの順序は可変であり、ステップは、修正または組み合わせることができる。平均するフレームの数(Q)および/または負荷分散の頻度の最適な選択は、一般的に、様々なトレードオフ要因に左右される。例えば、Qの値が小さいと、レンダリングされるシーン内の変化への反応が高速化され、Qの値が大きいと、より安定した結果が得られる傾向があるとともに(変動の影響を最小にすることにより)、一方のGPUのみが終了したフレームに対するフィードバック配列内のエントリの影響を小さくする(そのようなエントリがあると、そのフレームを終了する最後のGPUを正確に反映しない)。負荷分散が頻繁であれば、GPUのアイドル時間は短縮される可能性があるが、負荷分散があまり頻繁でないと、クリップ矩形を変化させることに関連するオーバーヘッド(異なるGPUのメモリ間のデータ転送など)が低減される傾向がある。一実施形態では、Q=B=20として20フレーム毎に均衡をチェックすることは有効であるが、一般に、最適な値は、様々な実装上の詳細に依存する。均衡のチェックは極めて頻繁に行われる場合があり、例えば、1秒間に30フレームがレンダリングされ、20フレーム毎にチェックが行われると、均衡は約0.67秒毎に変化しうることに留意されたい。
異なるGPUに対する識別子はいかなる値をもとることができる。それに対応して、高しきい値と低しきい値は、任意の値をとることができ、高しきい値は低しきい値以上である限り、2つのしきい値を等しくすることができる(例えば、両方とも0.5に等しい)。両方のしきい値を2つの識別子の算術平均に近い値または等しい値に設定すると都合がよく、特定のシステムにおけるしきい値の最適な選択は、負荷再分散の頻度とそれぞれのGPUに割り当てられたクリップ矩形を変更することに関係するオーバーヘッドなどの考慮事項の影響を受ける可能性がある。しきい値比較は、負荷が均衡していると考えられる条件(例えば、平均が算術平均と正確に等しい場合)が存在するように定義されると都合がよい。
画像のレンダリングまたはフィードバック・データの書き込みに先立って、例えば、エントリ毎にGPU識別子のいずれかをランダムに選択するか、または交互エントリに異なる識別子を埋めて行くことにより、フィードバック配列を初期化することができる。このような初期化では、GPUが負荷係数を決定するために使用されているエントリすべてに値を書き込む前に負荷分散のチェックが実行される場合に見せかけの不均衡が検出される可能性が低減される。
一実施形態では、分割変更(例えば、境界ラインPがシフトされるラインの本数)は、負荷係数と算術平均との差の大きさに依存する。例えば、負荷係数が0.5よりも大きく、0.6よりも小さい場合、4本のラインの下方向へのシフトを使用することができるが、負荷係数が0.6よりも大きい場合は、ライン8本分のシフトを使用することができ、算術平均よりも小さい負荷係数については、反対方向の類似のシフトを実装できる。いくつかの実施形態では、それぞれのGPUが常に表示領域の少なくとも最小部分(例えば、10%または25%)をレンダリングするように2つのクリップ矩形のサイズの差が制限される。
平均をとる代わりに、他の方法で負荷係数を定義することもできる。例えば、記録された識別子値の総和を負荷係数として使用できる。上述の実施形態では、Q=20としているが、格納されている識別子値(0または1)は、負荷が均衡している場合には、総和すると10になり、それに応じて、高、低のしきい値を設定することができる。本明細書で説明されているオペレーションの代わりに使用できる他の算術演算も、当業者には明らかであろうし、本発明の範囲内にある。
他の代替え実施形態では、異なるフィードバック・データを上述のGPU識別子の代わりに、またはそれに加えて使用することができる。例えば、両方のGPUが与えられたフレームについてフィードバック・データを同じロケーションに書き込む、1つのフィードバック配列をシステム・メモリ内に用意する代わりに、それぞれのGPUが異なるフィードバック配列の対応するエントリに書き込むことができ、またフィードバック・データは、タイミング情報、例えば、それぞれのGPUが特定のフレームを終了したときを示すタイムスタンプを含むことができる。この実施形態では、グラフィックス・ドライバは、一方のGPUが他のGPUよりも多いフレーム当たり時間を一貫して使用し、それに応じてクリップ矩形を調整し、負荷分散するかどうかを判定するためにタイミング情報を使用するように構成される。いくつかのシステム実装では、タイムスタンプはGPUのパフォーマンスを正確には反映しえず、さらに、それぞれのGPUのタイムスタンプのシーケンスからの相対的負荷を決定することは、一般に、上述のような負荷係数の単純な計算に比べて多くの計算ステップ数を必要とすることに留意されたい。しかしながら、本発明のいくつかの実施形態は、GPU識別子の代わりに、またはそれに加えて、フィードバック・データのタイミング情報を含むことができることは理解されるであろう。
マルチプロセッサ・グラフィックス処理システムは、2つよりも多いGPUを含むことができ、プロセス400、500は、前記システムで使用するように適合できる。例えば、本発明の一実施形態は、3つのGPUを備え、それぞれのGPUは、図6に示されているように、表示領域の異なる水平バンドを割り当てられる。Mライン表示領域600は、ライン1からKまでを含む上側部分602、ラインK+1からLまでを含む中間部分604、L+1からMまでを含む下側部分606に分割される。上側602のデータは、識別子値「0」を持つGPU 614a(本明細書ではGPU−0と呼ばれる)により生成され、中間部分604のデータは、識別子値「1」を持つGPU 614b(本明細書ではGPU−1と呼ばれる)により生成され、下側部分606のデータは、識別子値「2」を持つGPU 614c(本明細書ではGPU−2と呼ばれる)により生成される。負荷分散は、値KとLを調整することにより達成される。
より具体的には、一実施形態では、それぞれのGPUに対するコマンド・ストリームは、図3のと類似しているが、図7に示されているように、次元Bの2つのフィードバック配列(本明細書ではfeedback01[0:B−1]とfeedback12[0:B−1]と呼ばれる)が用意される。ライト・ノティファイヤ・コマンド306への応答として、GPU−0は、その識別子値フィードバック配列702内のロケーションに書き込み(書き込みは、図7の矢印により示される)、GPU−1は、その識別子値をfeedback01配列702とfeedback12配列704の両方のそれぞれのロケーションに書き込み、GPU−2は、その識別子値をfeedback12配列704内のロケーションに書き込む。その結果、feedback01配列の平均値は、GPU−0とGPU−1上の相対的負荷を反映するが、feedback12配列の平均値はGPU−1とGPU−2上の相対的負荷を反映する。
負荷分散のため、グラフィックス・ドライバは、例えば、上述の図5のプロセス500に従って、feedback01配列から決定された負荷係数に基づいて値Kを調整し(負荷係数が0.5の場合に均衡が生じる)、例えば、プロセス500に従って、feedback12配列から決定された負荷係数に基づいて値Lを調整する(負荷係数が1.5の場合に均衡が生じる)。GPU−0とGPU−2の相対的負荷は直接比較されないが、時間が経過すると、3つの負荷すべてがほぼ等しくなる傾向を有する。例えば、GPU−1上の負荷がGPU−0上の負荷を超える場合、feedback01配列内のエントリの平均値は0.5を超え、その結果、値Kは増大され、それにより、GPU−1上の負荷は減少する。GPU−1上の低減された負荷がGPU−2上の負荷よりも小さくなると、この差異はfeedback02配列内のエントリの平均値に反映され、この平均値は1.5を超え、応答として、値Lは増大され、それにより、再びGPU−1上の負荷は増大する。この変化の結果、値Kの調整が行われ、というように続く。当業者であれば、時間が経過するうちに、この負荷分散プロセスは3つの負荷すべてを等しくする傾向があることを理解するであろう。何らかの不安定性が永続することがあるが、これは、新しい値Kおよび/またはLに対する応答としてクリップ矩形を修正することに関連するオーバーヘッドが十分に小さい限り許容可能である。
この負荷分散手法は、さらに、任意の数のGPUを備えるシステムに拡張することができることは理解されるであろう。例えば、表示領域は、任意の数の水平バンドに分割することができ、それぞれのバンドは異なるGPUに割り当てられる。このような実施形態では、フィードバック配列の個数は、一般に、GPUの個数よりも1つ小さい。それとは別に、垂直バンドを使用することもできる。
それぞれのフィードバック配列に書き込む2つのGPUが互いに異なる識別子を持つ限り、特定のGPUの識別子がすべてのGPUにわたって一意的である必要はないことにも留意されたい。例えば、図6に示されている実施形態では、GPU 614a、614cは、両方とも、識別子「0」を割り当てられる可能性がある。図7が示しているように、これらのGPUは、その識別子を同じフィードバック配列に書き込まないので、曖昧さが生じることにならない。
他の代替え実施形態では、表示領域の水平分割と垂直分割の組合せを使用して、表示領域のいくつかの部分をGPUに割り当てることができる。例えば、図8は、4つのセクション801〜804に分割される、それぞれN個のピクセルを含むM本のラインからなる表示領域800を示している。セクション801〜804は、それぞれ、矢印により示されているように、4つのGPU 814a〜814dによりレンダリングされる。それぞれのGPU 814a〜814dは、異なる識別子値(0、1、2、3)を割り当てられる。この実施形態では、画像の複雑度は、一般に、左側と右側とでほぼ等しく、その場合、垂直境界ラインJは固定されたままとすることができる(例えば、J=N/2)。2つのフィードバック配列が用意され、GPU−0(814a)とGPU−1(814b)は、その識別子を第1のフィードバック配列feedback01に書き込むが、GPU−2(814c)とGPU−3(814d)は、その識別子を第2のフィードバック配列feedback23に書き込む。セクション801と802を分割する境界ラインKは、feedback01配列内のエントリの平均値に基づき調整されるが、セクション803および804を分割する境界ラインLは、feedback23配列内のエントリの平均値に基づき調整される。
さらに他の代替え実施形態では、垂直境界ラインJも調整可能である。例えば、GPU−0とGPU−1は、それぞれ二次(列)識別子値「0」を割り当てることが可能であり、GPU−2とGPU−3は、それぞれ、値「1」を持つ二次識別子を割り当てられる。第3のフィードバック配列feedbackCを用意することができ、それぞれのGPUは、一次識別子をfeedback01配列とfeedback23配列のうちの適切な一方に書き込むことに加えて、二次識別子をfeedbackC配列に書き込む。その後、垂直境界ラインJは、feedbackC配列内のエントリの平均値に基づいて調整することができる。それとは別に、一次識別子(値0〜3を持つ)は、垂直分割に関連付けることができ、二次識別子(値0と1を持つ)は、水平分割に関連付けられる。
本明細書で説明されている手法は、さらに、PCIX(64ビットPCI Express)バスまたは現在開発中の3GIO(第三世代入力/出力)バスなどの高速バスによって接続された異なる拡張カード上に異なるGPUが配置されている「マルチカード」グラフィックス処理サブシステムでも使用できる。マルチカード・システム900の一例が図9に示されている。2つのグラフィックス・カード912a、912bは、高速バス908により相互接続され、任意の数のカードを組み込むことができ、また高速バス908は、一般に、コンピュータ・システムの他の要素(例えば、図1に示されているようにシステム100の様々なコンポーネント)にも接続することは理解されるであろう。それぞれのグラフィックス・カードは、それぞれのGPU 914a、914bと、ディスプレイ・バッファ922a、922bを含むそれぞれのグラフィックス・メモリ916a、916bを持つ。カード912aは、ディスプレイ・バッファ922aからディスプレイ・デバイス910にピクセル・データを供給するスキャンアウト制御論理回路920を備える。カード912bは、さらに、スキャンアウト制御論理回路を備えることもできるが、この例では、カード912bは、ディスプレイ・デバイスに接続されておらず、カード912b内に存在する任意のスキャンアウト制御論理回路を無効にすることができる。
この配列では、空間並列方式を実装することができ、それぞれのGPU 914a、914bはそれぞれのフレームの一部をディスプレイ・バッファ922a、922bにレンダリングする。フレームを表示するために、ディスプレイ・バッファ922bからのピクセル・データは、バス908を介してディスプレイ・バッファ922aに転送され(例えば、従来のブロック転送、またはBlit、オペレーションを使用して)、そこから、ピクセル・データがスキャンアウト制御論理回路920により読み出される。
上述のような負荷分散は、このシステム内に実装することができ、またデータ転送に要する時間を考慮すると都合がよい。例えば、図10は、一般に図3のコマンド・ストリーム300に類似のGPU 914a、914bに対するそれぞれのコマンド・ストリーム1000a、1000bを示している。それぞれのコマンド・ストリームは、クリップ矩形コマンド(CR)1002a、1002bから始まり、その後、フレームF0に対するレンダリング・コマンド1004a、1004bが続く。上述の単一カードの実装のように、異なるクリップ矩形境界がそれぞれのGPU 914a、914bについて用意され、それぞれ、フレームの異なる部分をレンダリングし、それぞれのGPUに対するレンダリング・コマンドは、特定の実施形態に関して適宜同一であるかまたは異なる。
この実施形態では、ディスプレイ・バッファ922bからのピクセル・データは、スキャンアウトに先立ってディスプレイ・バッファ922aに転送される。したがって、GPU 914bについて、レンダリング・コマンド1004bの後に、ローカル・ディスプレイ・バッファ922bからカード912a上のディスプレイ・バッファ922aにピクセル・データを転送し、そのデータをスキャンアウトするようにGPU 914bに命令するBlitコマンド1006が続く。GPU 914aは、ピクセル・データを直接ディスプレイ・バッファ922aに書き込むので、Blitコマンドは、コマンド・ストリーム1000a内に必要ではなく、したがってGPU 914aに対するレンダリング・コマンド1004aの後に「no−op」1005が続く。no−opは、例えば、後のコマンドの実行を単純に遅らせるコマンド(そのようなコマンドは当業で知られている)、コマンドなし、またはコマンド・ストリーム内に現れるBlitコマンドを無視するようGPU 914aに命令するコマンドとすることができる。
フレームF0に対するライト・ノティファイヤ・コマンド1008aは、コマンド・ストリーム1000a内のno−opコマンド1005の後に続き、対応するライト・ノティファイヤ・コマンド1008bは、Blitコマンド1006の後に続く。ライト・ノティファイヤ・コマンド1008a、1008bは、図4のプロセス400を参照しつつ上述のライト・ノティファイヤ・コマンドと同様に実装することができる。図5のプロセス500などの負荷分散プロセスは、負荷を均衡させるために使用することができる。
フレームF0に対するライト・ノティファイヤ・コマンド1008bは、フレームF0に対するBlitオペレーションが実行されるまでGPU 914bにより実行されないため、Blitオペレーションに要する時間が負荷分散プロセス内を占めることに留意されたい。したがって、GPU 914aに対するレンダリング時間は、GPU 914bのレンダリング時間+Blit時間と釣り合いがとられる。
前景領域(常にというわけではないがほとんどの場合、表示領域の下側の)が背景領域に比べて一貫して複雑であるシーンをレンダリングするために使用されるいくつかのマルチカード実施形態では、シーンの背景領域を処理するためGPU 914aを割り当て、前景領域を処理するためGPU 914bを割り当てることによりパフォーマンスが向上する。例えば、図2では、前景が表示領域200の下側に向かって現れると仮定する。その場合、GPU 914aは、上側領域202をレンダリングするために割り当てられ、GPU 914bは、下側領域204をレンダリングするために割り当てられる。前景(下側)領域の複雑度が高いほど、GPU 914bのレンダリング時間は延びる傾向がある。それに応答して、本明細書で説明されている負荷分散プロセスは、境界ラインPを表示領域の下側へ移動させる傾向がある。これは、下側領域204に含まれるデータのラインの数を減らし、Blitコマンド1006によりディスプレイ・バッファ922aに転送される必要のあるデータの量を減らす。その結果、データ転送ではなく計算により多くのGPU 914bの処理能力が使われ、正味効率利得が生じる。
当業者であれば、すべてのGPUからのピクセル・データがスキャンアウトに先立って単一のディスプレイ・バッファに転送される単一カードのマルチプロセッサ・システムの実施形態でも使用されうることを理解するであろう。例えば、図1のシステム112では、ディスプレイ・バッファ122bからのデータは、スキャンアウトのためディスプレイ・バッファ122aに転送することが可能であり、スキャンアウト制御論理回路120は、フレームに対するすべてのピクセル・データを取得するためディスプレイ・バッファ122aに単にアクセスすることができる。この実施形態では、GPU 114bに対して、ライト・ノティファイヤ命令の前にBlitオペレーションを実行するよう命令することができるが、GPU 114aにはno−opを与えられる。
本発明は、特定の実施形態に関して説明されたが、当業者であれば、様々な修正形態も可能であることを理解するであろう。例えば、マルチプロセッサ・グラフィックス処理システムでは、グラフィックス・カードにGPUをいくつでも搭載することができ、またカードをいくつでも備えることができ、例えば、4 GPUサブシステムは、それぞれ2つのGPUを備える2つのカードを使用して実装することが可能であるか、または3 GPUサブシステムは、1つのGPUを備える第1のカードと2つのGPUを備える第2のカードを含むことが可能である複数のGPUのうちの1つまたは複数は、マザーボード搭載のグラフィックス・コプロセッサとすることができる。
ディスプレイ・フレームのレンダリングは、水平バンドおよび/または垂直バンド内のGPUに分割することができる。当業者であれば、垂直バンドを使用すると、異なるGPUによりレンダリングされる領域のサイズの均一さが増し(画像複雑度は、通常、上から下へよりも左から右へのほうが変化が少ないため)、水平バンドを使用すると、水平行向きのディスプレイ・デバイス内でスキャンアウト・オペレーションを簡素化できる(ピクセルの特定の行を読み込むためにGPUのディスプレイ・バッファを1つだけアクセスするため)。さらに、フレームを水平と垂直の両方の境界にそってGPU間で分割することができ、上述のようにいずれか、または両方の境界にそって負荷分散を実行することができる。
本発明のいくつかの実施形態は、専用ハードウェア、汎用または専用プロセッサ上で実行するソフトウェア、またはそれらの任意の組合せを使用して実装することができる。これらの実施形態は、特定の実装内の別々の集積回路デバイスに対応する場合も対応しない場合もある機能ブロックに関して説明されている。本発明の開示では、汎用コンピューティング・システムを参照している場合があるが、本発明の開示を利用しようとする当業者であれば、本発明は、ゲーム機などの専用コンピューティング・システムまたは複数のグラフィックス・プロセッサによりグラフィックス処理機能を実現する他のコンピューティング・システムを含む、他の様々な実施形態で使用することができることを理解するであろう。
本発明の様々な特徴を具現化するコンピュータ・プログラムは、格納および/または伝送のためのコンピュータ可読媒体上で符号化することができ、好適な媒体は、磁気ディスクまたはテープ、コンパクト・ディスク(CD)またはDVD(デジタル・ビデオ・ディスク)などの光記憶媒体、フラッシュ・メモリ、インターネットを含む、様々なプロトコルに準拠する有線、光、および/または無線ネットワークを介して送信する搬送波信号を含む。プログラム・コードにより符号化されたコンピュータ可読媒体は、マルチプロセッサ・グラフィックス・カードなどの互換性のあるデバイスとともにパッケージ化されるか、または他のデバイスから別に提供されるようにできる(例えば、インターネットによるダウンロードを介して)。
そのため、本発明は、特定の実施形態に関して説明されているが、本発明は、特許請求の範囲内のすべての変更形態と均等物を対象とすることを意図されていることは理解されるであろう。
本発明の一実施形態によるコンピュータ・システムの簡略化されたブロック図である。 本発明の一実施形態による空間並列方式を示す表示領域の図である。 本発明の一実施形態によるコマンド・ストリームを示す図である。 本発明の一実施形態によるグラフィックス処理ユニットからフィードバック・データを供給するプロセスの流れ図である。 本発明の一実施形態による2つのグラフィックス処理ユニットの間で負荷分散を行うプロセスの流れ図である。 本発明の一実施形態による3方向空間並列方式を示す表示領域の図である。 本発明の一実施形態による3方向空間並列方式のフィードバック・アレイのペアを示す図である。 本発明の一実施形態による4方向空間並列方式を示す表示領域の図である。 本発明の一実施形態によるマルチカード・グラフィックス処理システムの簡略化されたブロック図である。 本発明の一実施形態によるマルチカード・グラフィックス処理システムのコマンド・ストリームの図である。

Claims (22)

  1. 並列動作するように構成された複数のグラフィックス・プロセッサに命令を与えるCPUによって該複数のグラフィックス・プロセッサの負荷分散を行うための方法であって、
    前記CPUによって、表示領域を、前記複数のグラフィックス・プロセッサのうちの第1のプロセッサによりレンダリングされる少なくとも第1の部分と前記複数のグラフィックス・プロセッサのうちの第2のプロセッサによりレンダリングされる第2の部分とに分割するステップと、
    前記CPUによって、フレームをレンダリングするよう前記複数のグラフィックス・プロセッサに命令し、前記第1と第2のグラフィックス・プロセッサは、前記表示領域の前記第1と第2の部分に対するレンダリングをそれぞれ実行するステップと、
    前記CPUによって、フィードバック・データが前記第1と第2のグラフィックス・プロセッサに対するそれぞれのレンダリング時間を反映するデータであり、前記第1と第2のグラフィックス・プロセッサから前記フレームに対する前記フィードバック・データを受信するステップと、
    前記CPUによって、前記フィードバック・データに基づき、前記第1と第2のグラフィックス・プロセッサのそれぞれの負荷の間に不均衡が存在するかどうかを判定するステップと、
    不均衡が存在する場合に、
    前記CPUによって、前記フィードバック・データに基づき、前記第1と第2のグラフィックス・プロセッサのうちのどちらにより重い負荷がかかっているかを識別するステップと、
    前記CPUによって、前記第1と第2のグラフィックス・プロセッサのうちのより重い負荷がかかっているプロセッサでレンダリングされる表示領域の前記第1と第2の部分のうちの前記一方のサイズを増やし、前記表示領域の前記第1と第2の部分の前記他方のサイズを減らすように前記表示領域を再分割するステップと
    を含んでおり、
    前記フィードバック・データは、前記第1と第2のグラフィックス・プロセッサのうちのどちらがフレームのレンダリングを最後に終了するかを示すデータを含み、
    前記受信するステップは、複数のフレームのそれぞれに対する前記フィードバック・データを受信することを含み、
    前記判定するステップは、前記複数のフレームに対する前記フィードバック・データから負荷係数を計算することを含み、前記負荷係数は前記第1と第2のグラフィックス・プロセッサのうちの一方が前記レンダリングを最後に終了する頻度を示す、方法。
  2. 前記表示領域の前記第1の部分は、ピクセルの連続的なラインの第1の数を含み、前記表示領域の前記第2の部分は、ピクセルの連続的なラインの第2の数を含む請求項1に記載の方法。
  3. 前記表示領域を再分割するステップは、ピクセルの連続的なラインの第3の数を前記表示領域の前記第1の部分から前記表示領域の前記第2の部分にシフトすることを含み、前記第3の数は前記第1の数よりも小さい請求項2に記載の方法。
  4. ピクセルの前記ラインは、水平方向に向けられている請求項2に記載の方法。
  5. ピクセルの前記ラインは、垂直方向に向けられている請求項2に記載の方法。
  6. さらに、前記CPUによって、異なる1つのプロセッサ識別子を前記第1と第2のグラフィックス・プロセッサのそれぞれに割り当てることを含み、
    前記第1と第2のグラフィックス・プロセッサのそれぞれから受信された前記フィードバック・データは、前記それぞれのプロセッサ識別子を含む請求項1に記載の方法。
  7. 前記プロセッサ識別子のそれぞれは数値を持つ請求項6に記載の方法。
  8. 前記フィードバック・データは、タイムスタンプを含む請求項1に記載の方法。
  9. 最後に終了する前記第1と第2のグラフィックス・プロセッサのうちの一方からの前記フィードバック・データが前記第1と第2のグラフィックス・プロセッサのうちの他方からのフィードバック・データを上書きする請求項1に記載の方法。
  10. さらに、
    前記CPUによって、それぞれ前記複数のフレームのうちの異なる1つのフレームに関連付けられている複数の格納先を用意することを含み、
    前記複数のフレームのそれぞれに対する前記フィードバック・データを受信する前記ステップは、
    前記フレームに対する前記表示領域の前記第1の部分をレンダリングした後、前記複数のフレームのそれぞれについて前記格納先のうちの関連付けられた1つに第1のプロセッサ識別子を格納するように前記第1のグラフィックス・プロセッサに命令することと、
    前記フレームに対する前記表示領域の前記第2の部分をレンダリングした後、前記複数のフレームのそれぞれについて前記格納先のうちの関連付けられた1つに第1のプロセッサ識別子と異なる第2のプロセッサ識別子を格納するよう前記第2のグラフィックス・プロセッサに命令することと
    を含む請求項1に記載の方法。
  11. フレームのレンダリングを最後に終了した前記第1と第2のグラフィックス・プロセッサのうちの前記一方の前記プロセッサ識別子が前記格納先の中の前記第1と第2のグラフィックス・プロセッサのうちの前記他方の前記プロセッサ識別子を上書きする請求項10に記載の方法。
  12. 前記第1と第2のグラフィックス・プロセッサのそれぞれに数値識別子が関連付けられ、前記負荷係数は、それぞれのフレームを最後に終了した前記プロセッサの前記数値識別子の前記複数のフレーム上でとった平均である請求項1に記載の方法。
  13. 判定する前記ステップは、さらに、前記負荷係数を前記数値識別子の算術平均と比較することを含む請求項12に記載の方法。
  14. 再分割の前記ステップ時に、前記表示領域の前記第1の部分の前記サイズが縮小される量は、前記負荷係数と前記算術平均との差の大きさに少なくとも一部は依存する請求項12に記載の方法。
  15. さらに、
    前記CPUによって、前記第1と第2のグラフィックス・プロセッサのそれぞれについて、前記フレームのレンダリング・コマンドの集合を含むコマンド・ストリームを生成することと、
    前記CPUによって、レンダリング・コマンドの前記集合の後に、前記第1と第2のグラフィックス・プロセッサのそれぞれについてライト・ノティファイヤ・コマンドをコマンド・ストリーム内に挿入することと
    を含み、前記第1と第2のグラフィックス・プロセッサはそれぞれ、前記フィードバック・データを格納先に送信することにより前記ライト・ノティファイヤ・コマンドに応答する請求項1に記載の方法。
  16. グラフィックス処理システムであって、
    グラフィックス・ドライバ・モジュールと、
    表示領域のそれぞれの部分をレンダリングし、フィードバック・データを前記グラフィックス・ドライバ・モジュールに供給するため並列動作するように構成された複数のグラフィックス・プロセッサとを備え、
    前記グラフィックス・ドライバ・モジュールは、さらに、前記フィードバック・データに基づき、前記複数のグラフィックス・プロセッサの2つのそれぞれの負荷の間の不均衡を検出し、不均衡を検出したことに対する応答として、前記2つのグラフィックス・プロセッサのうちの負荷が重い方によりレンダリングされる前記表示領域の第1の部分のサイズを減らし、前記2つのグラフィックス・プロセッサのうちの他方によりレンダリングされる前記表示領域の第2の部分のサイズを増やすように構成されており、
    前記フィードバック・データは、前記2つのグラフィックス・プロセッサのうちフレームのレンダリングを最後に終了したのはどちらであるのかを示す情報を含み、
    前記フィードバック・データは、最後に終了した前記2つのグラフィックス・プロセッサのうちの前記1つの数値識別子を含み、
    前記グラフィックス・ドライバ・モジュールは、さらに、複数のフレームについて前記数値識別子からの負荷係数を計算するよう構成され
    前記負荷係数は、前記2つのグラフィックス・プロセッサのうちの一方が前記レンダリングを最後に終了する頻度を示す、グラフィックス処理システム。
  17. さらに、それぞれ前記グラフィックス・プロセッサのそれぞれの1つに結合され、結合された前記グラフィックス・プロセッサによりレンダリングされる前記表示領域の前記部分に対するピクセル・データを格納する複数のグラフィックス・メモリを備える請求項16に記載のグラフィックス処理システム。
  18. さらに、前記複数のグラフィックス・メモリに結合され、前記グラフィックス・メモリから前記表示領域に対するピクセル・データを読み取るように構成されたスキャンアウト制御論理回路を備える請求項17に記載のグラフィックス処理システム。
  19. 前記グラフィックス・ドライバ・モジュールは、さらに、前記複数のグラフィックス・プロセッサに対しコマンド・ストリームを生成するように構成され、
    前記コマンド・ストリームは
    フレームのレンダリング・コマンドの集合と、
    前記フィードバック・データを送信する前記2つのグラフィックス・プロセッサのそれぞれへの命令であって、前記フィードバック・データは、該フィードバック・データを送信する前記グラフィックス・プロセッサが前記レンダリング・コマンドの集合を実行したことを示す、命令と、
    を含む請求項16に記載のグラフィックス処理システム。
  20. 前記グラフィックス・ドライバ・モジュールは、さらに、前記負荷係数が第1しきい値よりも大きいか、または、該第1しきい値よりも低い第2しきい値よりも小さい場合に不均衡を検出するように構成される請求項16に記載のグラフィックス処理システム。
  21. 前記表示領域のそれぞれの部分は、ピクセルの連続的ラインのいくつかを含み、前記2つのグラフィックス・プロセッサは、隣接する部分をレンダリングするように構成される請求項16に記載のグラフィックス処理システム。
  22. 前記グラフィックス・ドライバは、さらに、前記第1の部分から前記第2の部分にピクセルのラインのいくつかをシフトすることにより、前記第1の部分の前記サイズを減らし、前記第2の部分の前記サイズを増やすように構成される請求項21に記載のグラフィックス処理システム。
JP2006523975A 2003-08-18 2004-08-17 マルチプロセッサ・グラフィックス処理システムの適応型負荷分散 Active JP4691493B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/642,905 2003-08-18
US10/642,905 US7075541B2 (en) 2003-08-18 2003-08-18 Adaptive load balancing in a multi-processor graphics processing system
PCT/US2004/026656 WO2005020157A1 (en) 2003-08-18 2004-08-17 Adaptive load balancing in a multi-processor graphics processing system

Publications (2)

Publication Number Publication Date
JP2007503059A JP2007503059A (ja) 2007-02-15
JP4691493B2 true JP4691493B2 (ja) 2011-06-01

Family

ID=34193748

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006523975A Active JP4691493B2 (ja) 2003-08-18 2004-08-17 マルチプロセッサ・グラフィックス処理システムの適応型負荷分散

Country Status (7)

Country Link
US (4) US7075541B2 (ja)
EP (1) EP1661092B1 (ja)
JP (1) JP4691493B2 (ja)
CA (1) CA2535878A1 (ja)
DE (1) DE602004019104D1 (ja)
TW (1) TWI344108B (ja)
WO (1) WO2005020157A1 (ja)

Families Citing this family (255)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9849372B2 (en) * 2012-09-28 2017-12-26 Sony Interactive Entertainment Inc. Method and apparatus for improving efficiency without increasing latency in emulation of a legacy application title
US7119808B2 (en) * 2003-07-15 2006-10-10 Alienware Labs Corp. Multiple parallel processor computer graphics system
US20080211816A1 (en) * 2003-07-15 2008-09-04 Alienware Labs. Corp. Multiple parallel processor computer graphics system
US7075541B2 (en) * 2003-08-18 2006-07-11 Nvidia Corporation Adaptive load balancing in a multi-processor graphics processing system
US8788996B2 (en) 2003-09-15 2014-07-22 Nvidia Corporation System and method for configuring semiconductor functional circuits
US8775997B2 (en) 2003-09-15 2014-07-08 Nvidia Corporation System and method for testing and configuring semiconductor functional circuits
US8732644B1 (en) 2003-09-15 2014-05-20 Nvidia Corporation Micro electro mechanical switch system and method for testing and configuring semiconductor functional circuits
US7739479B2 (en) * 2003-10-02 2010-06-15 Nvidia Corporation Method for providing physics simulation data
US7895411B2 (en) * 2003-10-02 2011-02-22 Nvidia Corporation Physics processing unit
US20050086040A1 (en) * 2003-10-02 2005-04-21 Curtis Davis System incorporating physics processing unit
US7782325B2 (en) * 2003-10-22 2010-08-24 Alienware Labs Corporation Motherboard for supporting multiple graphics cards
US20080094403A1 (en) * 2003-11-19 2008-04-24 Reuven Bakalash Computing system capable of parallelizing the operation graphics processing units (GPUs) supported on a CPU/GPU fusion-architecture chip and one or more external graphics cards, employing a software-implemented multi-mode parallel graphics rendering subsystem
US20070291040A1 (en) * 2005-01-25 2007-12-20 Reuven Bakalash Multi-mode parallel graphics rendering system supporting dynamic profiling of graphics-based applications and automatic control of parallel modes of operation
US8085273B2 (en) 2003-11-19 2011-12-27 Lucid Information Technology, Ltd Multi-mode parallel graphics rendering system employing real-time automatic scene profiling and mode control
US20080074429A1 (en) * 2003-11-19 2008-03-27 Reuven Bakalash Multi-mode parallel graphics rendering system (MMPGRS) supporting real-time transition between multiple states of parallel rendering operation in response to the automatic detection of predetermined operating conditions
US20090027383A1 (en) * 2003-11-19 2009-01-29 Lucid Information Technology, Ltd. Computing system parallelizing the operation of multiple graphics processing pipelines (GPPLs) and supporting depth-less based image recomposition
US8497865B2 (en) * 2006-12-31 2013-07-30 Lucid Information Technology, Ltd. Parallel graphics system employing multiple graphics processing pipelines with multiple graphics processing units (GPUS) and supporting an object division mode of parallel graphics processing using programmable pixel or vertex processing resources provided with the GPUS
CN1890660A (zh) * 2003-11-19 2007-01-03 路西德信息技术有限公司 Pc总线上的多重三维图形管线的方法及系统
US7961194B2 (en) 2003-11-19 2011-06-14 Lucid Information Technology, Ltd. Method of controlling in real time the switching of modes of parallel operation of a multi-mode parallel graphics processing subsystem embodied within a host computing system
US20050134595A1 (en) * 2003-12-18 2005-06-23 Hung-Ming Lin Computer graphics display system
US8711161B1 (en) 2003-12-18 2014-04-29 Nvidia Corporation Functional component compensation reconfiguration system and method
US7421303B2 (en) * 2004-01-22 2008-09-02 Nvidia Corporation Parallel LCP solver and system incorporating same
US7526456B2 (en) 2004-01-22 2009-04-28 Nvidia Corporation Method of operation for parallel LCP solver
US8134561B2 (en) 2004-04-16 2012-03-13 Apple Inc. System for optimizing graphics operations
US8704837B2 (en) * 2004-04-16 2014-04-22 Apple Inc. High-level program interface for graphics operations
US8707317B2 (en) * 2004-04-30 2014-04-22 Microsoft Corporation Reserving a fixed amount of hardware resources of a multimedia console for system application and controlling the unreserved resources by the multimedia application
US20050251644A1 (en) * 2004-05-06 2005-11-10 Monier Maher Physics processing unit instruction set architecture
US20050270298A1 (en) * 2004-05-14 2005-12-08 Mercury Computer Systems, Inc. Daughter card approach to employing multiple graphics cards within a system
EP1601218A1 (en) * 2004-05-28 2005-11-30 Orange S.A. Method and system for improving mobile radio communications
CN101633318A (zh) * 2004-08-24 2010-01-27 夏普株式会社 显示系统
JPWO2006022228A1 (ja) * 2004-08-24 2008-05-08 シャープ株式会社 シミュレーション装置、シミュレーションプログラム、シミュレーション方法
US8723231B1 (en) 2004-09-15 2014-05-13 Nvidia Corporation Semiconductor die micro electro-mechanical switch management system and method
JP4405884B2 (ja) * 2004-09-22 2010-01-27 キヤノン株式会社 描画処理回路、及び画像出力制御装置
US8711156B1 (en) 2004-09-30 2014-04-29 Nvidia Corporation Method and system for remapping processing elements in a pipeline of a graphics processing unit
US7475001B2 (en) * 2004-11-08 2009-01-06 Nvidia Corporation Software package definition for PPU enabled system
US7620530B2 (en) * 2004-11-16 2009-11-17 Nvidia Corporation System with PPU/GPU architecture
US7598958B1 (en) * 2004-11-17 2009-10-06 Nvidia Corporation Multi-chip graphics processing unit apparatus, system, and method
US7633505B1 (en) 2004-11-17 2009-12-15 Nvidia Corporation Apparatus, system, and method for joint processing in graphics processing units
US7522167B1 (en) 2004-12-16 2009-04-21 Nvidia Corporation Coherence of displayed images for split-frame rendering in multi-processor graphics system
US20090096798A1 (en) * 2005-01-25 2009-04-16 Reuven Bakalash Graphics Processing and Display System Employing Multiple Graphics Cores on a Silicon Chip of Monolithic Construction
EP1846834A2 (en) 2005-01-25 2007-10-24 Lucid Information Technology, Ltd. Graphics processing and display system employing multiple graphics cores on a silicon chip of monolithic construction
US8436851B2 (en) * 2005-02-04 2013-05-07 Hewlett-Packard Development Company, L.P. Systems and methods for rendering three-dimensional graphics in a multi-node rendering system
US7565279B2 (en) * 2005-03-07 2009-07-21 Nvidia Corporation Callbacks in asynchronous or parallel execution of a physics simulation
US20060227145A1 (en) * 2005-04-06 2006-10-12 Raymond Chow Graphics controller having a single display interface for two or more displays
US7305649B2 (en) * 2005-04-20 2007-12-04 Motorola, Inc. Automatic generation of a streaming processor circuit
US7616207B1 (en) * 2005-04-25 2009-11-10 Nvidia Corporation Graphics processing system including at least three bus devices
US8021193B1 (en) 2005-04-25 2011-09-20 Nvidia Corporation Controlled impedance display adapter
US7450129B2 (en) * 2005-04-29 2008-11-11 Nvidia Corporation Compression of streams of rendering commands
US7650266B2 (en) * 2005-05-09 2010-01-19 Nvidia Corporation Method of simulating deformable object using geometrically motivated model
JP4070778B2 (ja) * 2005-05-13 2008-04-02 株式会社ソニー・コンピュータエンタテインメント 画像処理システム
US20060265485A1 (en) * 2005-05-17 2006-11-23 Chai Sek M Method and apparatus for controlling data transfer in a processing system
US7793029B1 (en) 2005-05-17 2010-09-07 Nvidia Corporation Translation device apparatus for configuring printed circuit board connectors
US8287451B2 (en) * 2005-05-19 2012-10-16 Industrial Technology Research Institute Flexible biomonitor with EMI shielding and module expansion
US7649537B2 (en) * 2005-05-27 2010-01-19 Ati Technologies, Inc. Dynamic load balancing in multiple video processing unit (VPU) systems
US7663635B2 (en) * 2005-05-27 2010-02-16 Ati Technologies, Inc. Multiple video processor unit (VPU) memory mapping
US8212838B2 (en) 2005-05-27 2012-07-03 Ati Technologies, Inc. Antialiasing system and method
US7613346B2 (en) 2005-05-27 2009-11-03 Ati Technologies, Inc. Compositing in multiple video processing unit (VPU) systems
US8681160B2 (en) * 2005-05-27 2014-03-25 Ati Technologies, Inc. Synchronizing multiple cards in multiple video processing unit (VPU) systems
US8054314B2 (en) * 2005-05-27 2011-11-08 Ati Technologies, Inc. Applying non-homogeneous properties to multiple video processing units (VPUs)
US20060271717A1 (en) * 2005-05-27 2006-11-30 Raja Koduri Frame synchronization in multiple video processing unit (VPU) systems
US7456833B1 (en) 2005-06-15 2008-11-25 Nvidia Corporation Graphical representation of load balancing and overlap
US20070038939A1 (en) * 2005-07-11 2007-02-15 Challen Richard F Display servers and systems and methods of graphical display
JP4327175B2 (ja) * 2005-07-12 2009-09-09 株式会社ソニー・コンピュータエンタテインメント マルチグラフィックプロセッサシステム、グラフィックプロセッサおよび描画処理方法
US20070059669A1 (en) * 2005-08-23 2007-03-15 Lockheed Martin Corporation Systems and methods for processing video images
US7603492B2 (en) * 2005-09-20 2009-10-13 Motorola, Inc. Automatic generation of streaming data interface circuit
CN1952979B (zh) * 2005-10-14 2012-06-27 威盛电子股份有限公司 多重图形处理器系统及方法
TWI348652B (en) * 2005-10-17 2011-09-11 Via Tech Inc Driver assisted asynchronous command processing
TW200721803A (en) * 2005-10-17 2007-06-01 Via Tech Inc 3-D stereoscopic image display system
TWI322354B (en) * 2005-10-18 2010-03-21 Via Tech Inc Method and system for deferred command issuing in a computer system
US7817151B2 (en) * 2005-10-18 2010-10-19 Via Technologies, Inc. Hardware corrected software vertex shader
US7629978B1 (en) * 2005-10-31 2009-12-08 Nvidia Corporation Multichip rendering with state control
US8327388B2 (en) * 2005-12-07 2012-12-04 Nvidia Corporation Cloth application programmer interface
US8412872B1 (en) * 2005-12-12 2013-04-02 Nvidia Corporation Configurable GPU and method for graphics processing using a configurable GPU
US8417838B2 (en) 2005-12-12 2013-04-09 Nvidia Corporation System and method for configurable digital communication
US7656409B2 (en) * 2005-12-23 2010-02-02 Intel Corporation Graphics processing on a processor core
TWI309395B (en) * 2006-02-24 2009-05-01 Via Tech Inc Graphics system and graphics control method
JP4779756B2 (ja) * 2006-03-29 2011-09-28 カシオ計算機株式会社 コンピュータシステムにおけるサーバ装置及びサーバ制御プログラム
US7535433B2 (en) * 2006-05-18 2009-05-19 Nvidia Corporation Dynamic multiple display configuration
US8035648B1 (en) * 2006-05-19 2011-10-11 Nvidia Corporation Runahead execution for graphics processing units
JP2008028852A (ja) * 2006-07-24 2008-02-07 Felica Networks Inc 情報処理端末、データ選択処理方法、およびプログラム
US20080030510A1 (en) * 2006-08-02 2008-02-07 Xgi Technology Inc. Multi-GPU rendering system
EP1914640B1 (en) * 2006-08-23 2011-10-05 Hewlett-Packard Development Company, L.P. Multiple screen size render-engine
US8570331B1 (en) 2006-08-24 2013-10-29 Nvidia Corporation System, method, and computer program product for policy-based routing of objects in a multi-graphics processor environment
US8089481B2 (en) * 2006-09-28 2012-01-03 International Business Machines Corporation Updating frame divisions based on ray tracing image processing system performance
US7768516B1 (en) * 2006-10-16 2010-08-03 Adobe Systems Incorporated Image splitting to use multiple execution channels of a graphics processor to perform an operation on single-channel input
US9058792B1 (en) * 2006-11-01 2015-06-16 Nvidia Corporation Coalescing to avoid read-modify-write during compressed data operations
US20080120497A1 (en) * 2006-11-20 2008-05-22 Motorola, Inc. Automated configuration of a processing system using decoupled memory access and computation
KR100803220B1 (ko) * 2006-11-20 2008-02-14 삼성전자주식회사 다중 파이프라인의 3차원 그래픽스 렌더링 방법 및 장치
JP4942179B2 (ja) * 2006-12-11 2012-05-30 キヤノン株式会社 印刷制御装置及びその制御方法及びデバイスドライバ
US7969444B1 (en) * 2006-12-12 2011-06-28 Nvidia Corporation Distributed rendering of texture data
US8207972B2 (en) * 2006-12-22 2012-06-26 Qualcomm Incorporated Quick pixel rendering processing
US7940261B2 (en) * 2007-01-10 2011-05-10 Qualcomm Incorporated Automatic load balancing of a 3D graphics pipeline
WO2008105092A1 (ja) * 2007-02-28 2008-09-04 Panasonic Corporation グラフィックス描画装置及びグラフィックス描画方法
JP5200396B2 (ja) 2007-03-16 2013-06-05 株式会社リコー 画像形成装置、画像処理装置、制御装置、及び、接続装置
US8205205B2 (en) * 2007-03-16 2012-06-19 Sap Ag Multi-objective allocation of computational jobs in client-server or hosting environments
JP4325697B2 (ja) * 2007-04-17 2009-09-02 ソニー株式会社 画像処理システム、画像処理装置、画像処理方法、およびプログラム
US7627744B2 (en) * 2007-05-10 2009-12-01 Nvidia Corporation External memory accessing DMA request scheduling in IC of parallel processing engines according to completion notification queue occupancy level
US8306367B2 (en) * 2007-06-08 2012-11-06 Apple Inc. Method and apparatus for managing image-processing operations
US7969445B2 (en) * 2007-06-20 2011-06-28 Nvidia Corporation System, method, and computer program product for broadcasting write operations
EP2168035A1 (en) * 2007-06-27 2010-03-31 International Business Machines Corporation IBM System and method for providing a composite display
US8234652B2 (en) * 2007-08-28 2012-07-31 International Business Machines Corporation Performing setup operations for receiving different amounts of data while processors are performing message passing interface tasks
US20090064166A1 (en) * 2007-08-28 2009-03-05 Arimilli Lakshminarayana B System and Method for Hardware Based Dynamic Load Balancing of Message Passing Interface Tasks
US8108876B2 (en) * 2007-08-28 2012-01-31 International Business Machines Corporation Modifying an operation of one or more processors executing message passing interface tasks
US8127300B2 (en) * 2007-08-28 2012-02-28 International Business Machines Corporation Hardware based dynamic load balancing of message passing interface tasks
US8312464B2 (en) * 2007-08-28 2012-11-13 International Business Machines Corporation Hardware based dynamic load balancing of message passing interface tasks by modifying tasks
US8724483B2 (en) 2007-10-22 2014-05-13 Nvidia Corporation Loopback configuration for bi-directional interfaces
US8149247B1 (en) * 2007-11-06 2012-04-03 Nvidia Corporation Method and system for blending rendered images from multiple applications
US8922565B2 (en) * 2007-11-30 2014-12-30 Qualcomm Incorporated System and method for using a secondary processor in a graphics system
US8537166B1 (en) * 2007-12-06 2013-09-17 Nvidia Corporation System and method for rendering and displaying high-resolution images
US7995003B1 (en) * 2007-12-06 2011-08-09 Nvidia Corporation System and method for rendering and displaying high-resolution images
KR100980449B1 (ko) * 2007-12-17 2010-09-07 한국전자통신연구원 병렬 전역조명 렌더링 방법 및 시스템
US8711153B2 (en) * 2007-12-28 2014-04-29 Intel Corporation Methods and apparatuses for configuring and operating graphics processing units
KR100969322B1 (ko) 2008-01-10 2010-07-09 엘지전자 주식회사 멀티 그래픽 컨트롤러를 구비한 데이터 처리 장치 및 이를이용한 데이터 처리 방법
US9418171B2 (en) 2008-03-04 2016-08-16 Apple Inc. Acceleration of rendering of web-based content
US8477143B2 (en) * 2008-03-04 2013-07-02 Apple Inc. Buffers for display acceleration
US8811499B2 (en) * 2008-04-10 2014-08-19 Imagine Communications Corp. Video multiviewer system permitting scrolling of multiple video windows and related methods
KR101473215B1 (ko) 2008-04-18 2014-12-17 삼성전자주식회사 파노라마 이미지 생성장치 및 그 방법
TWI363969B (en) * 2008-04-30 2012-05-11 Asustek Comp Inc A computer system with data accessing bridge circuit
US8933943B2 (en) * 2008-04-30 2015-01-13 Intel Corporation Technique for performing load balancing for parallel rendering
WO2009136529A1 (ja) * 2008-05-08 2009-11-12 日本電気株式会社 業務プロセス管理装置、業務プロセス管理方法、及び業務プロセス管理プログラム
US8056086B2 (en) * 2008-05-19 2011-11-08 International Business Machines Corporation Load balancing for image processing using multiple processors
US8711154B2 (en) * 2008-06-09 2014-04-29 Freescale Semiconductor, Inc. System and method for parallel video processing in multicore devices
US8199158B2 (en) 2008-06-11 2012-06-12 Intel Corporation Performance allocation method and apparatus
JP5067282B2 (ja) * 2008-06-27 2012-11-07 ソニー株式会社 物体検出制御装置、物体検出システム、物体検出制御方法およびプログラム
GB2461900B (en) * 2008-07-16 2012-11-07 Advanced Risc Mach Ltd Monitoring graphics processing
JP5280135B2 (ja) * 2008-09-01 2013-09-04 株式会社日立製作所 データ転送装置
US10157492B1 (en) 2008-10-02 2018-12-18 Nvidia Corporation System and method for transferring pre-computed Z-values between GPUS
US8395619B1 (en) * 2008-10-02 2013-03-12 Nvidia Corporation System and method for transferring pre-computed Z-values between GPUs
US8228337B1 (en) * 2008-10-03 2012-07-24 Nvidia Corporation System and method for temporal load balancing across GPUs
US8427474B1 (en) 2008-10-03 2013-04-23 Nvidia Corporation System and method for temporal load balancing across GPUs
TWI382348B (zh) * 2008-10-24 2013-01-11 Univ Nat Taiwan 多核心系統及其排程方法
US8456478B2 (en) * 2008-10-30 2013-06-04 Microchip Technology Incorporated Microcontroller with integrated graphical processing unit
US8397241B2 (en) * 2008-11-13 2013-03-12 Intel Corporation Language level support for shared virtual memory
US8751654B2 (en) * 2008-11-30 2014-06-10 Red Hat Israel, Ltd. Determining the graphic load of a virtual desktop
US9270783B2 (en) 2008-12-06 2016-02-23 International Business Machines Corporation System and method for photorealistic imaging workload distribution
AU2008258132B2 (en) * 2008-12-15 2011-11-10 Canon Kabushiki Kaisha Load balancing in multiple processor rendering systems
KR101511273B1 (ko) * 2008-12-29 2015-04-10 삼성전자주식회사 멀티 코어 프로세서를 이용한 3차원 그래픽 렌더링 방법 및시스템
US8737475B2 (en) * 2009-02-02 2014-05-27 Freescale Semiconductor, Inc. Video scene change detection and encoding complexity reduction in a video encoder system having multiple processing devices
US8854379B2 (en) * 2009-02-25 2014-10-07 Empire Technology Development Llc Routing across multicore networks using real world or modeled data
US8843927B2 (en) * 2009-04-23 2014-09-23 Microsoft Corporation Monitoring and updating tasks arrival and completion statistics without data locking synchronization
US9479358B2 (en) * 2009-05-13 2016-10-25 International Business Machines Corporation Managing graphics load balancing strategies
US20100289804A1 (en) * 2009-05-13 2010-11-18 International Business Machines Corporation System, mechanism, and apparatus for a customizable and extensible distributed rendering api
US8122117B2 (en) * 2009-05-28 2012-02-21 Microsoft Corporation Determining an imbalance among computer-component usage
US9378062B2 (en) * 2009-06-18 2016-06-28 Microsoft Technology Licensing, Llc Interface between a resource manager and a scheduler in a process
US8719831B2 (en) * 2009-06-18 2014-05-06 Microsoft Corporation Dynamically change allocation of resources to schedulers based on feedback and policies from the schedulers and availability of the resources
US8484647B2 (en) 2009-07-24 2013-07-09 Apple Inc. Selectively adjusting CPU wait mode based on estimation of remaining work before task completion on GPU
US8963931B2 (en) * 2009-09-10 2015-02-24 Advanced Micro Devices, Inc. Tiling compaction in multi-processor systems
US9015440B2 (en) 2009-09-11 2015-04-21 Micron Technology, Inc. Autonomous memory subsystem architecture
US8698814B1 (en) * 2009-10-13 2014-04-15 Nvidia Corporation Programmable compute engine screen mapping
US9041719B2 (en) * 2009-12-03 2015-05-26 Nvidia Corporation Method and system for transparently directing graphics processing to a graphical processing unit (GPU) of a multi-GPU system
CN102656603B (zh) * 2009-12-16 2014-09-17 英特尔公司 利用性能计数器的图形流水线调度架构
JP2011126210A (ja) * 2009-12-18 2011-06-30 Canon Inc 印刷データ処理装置、印刷データ処理方法、およびプログラム
US9524138B2 (en) * 2009-12-29 2016-12-20 Nvidia Corporation Load balancing in a system with multi-graphics processors and multi-display systems
US20110212761A1 (en) * 2010-02-26 2011-09-01 Igt Gaming machine processor
US9331869B2 (en) 2010-03-04 2016-05-03 Nvidia Corporation Input/output request packet handling techniques by a device specific kernel mode driver
KR101641541B1 (ko) * 2010-03-31 2016-07-22 삼성전자주식회사 다중 코어에서 동적으로 부하를 분배하는 장치 및 방법
US20110292057A1 (en) * 2010-05-26 2011-12-01 Advanced Micro Devices, Inc. Dynamic Bandwidth Determination and Processing Task Assignment for Video Data Processing
US9183560B2 (en) 2010-05-28 2015-11-10 Daniel H. Abelow Reality alternate
US8675002B1 (en) * 2010-06-09 2014-03-18 Ati Technologies, Ulc Efficient approach for a unified command buffer
JP5539051B2 (ja) * 2010-06-14 2014-07-02 キヤノン株式会社 レンダリングプロセッサ
JP2012003619A (ja) * 2010-06-18 2012-01-05 Sony Corp 情報処理装置、情報処理装置の制御方法、およびプログラム
US8587596B2 (en) * 2010-06-28 2013-11-19 International Business Machines Corporation Multithreaded software rendering pipeline with dynamic performance-based reallocation of raster threads
JP5823515B2 (ja) 2010-07-19 2015-11-25 エーティーアイ・テクノロジーズ・ユーエルシーAti Technologies Ulc 圧縮されたスーパータイル画像をディスプレイすること
US9069622B2 (en) * 2010-09-30 2015-06-30 Microsoft Technology Licensing, Llc Techniques for load balancing GPU enabled virtual machines
US8970603B2 (en) 2010-09-30 2015-03-03 Microsoft Technology Licensing, Llc Dynamic virtual device failure recovery
US8736695B2 (en) 2010-11-12 2014-05-27 Qualcomm Incorporated Parallel image processing using multiple processors
US9524572B2 (en) * 2010-11-23 2016-12-20 Microsoft Technology Licensing, Llc Parallel processing of pixel data
US8830245B2 (en) * 2010-12-14 2014-09-09 Amazon Technologies, Inc. Load balancing between general purpose processors and graphics processors
JP5275402B2 (ja) * 2011-04-20 2013-08-28 株式会社東芝 情報処理装置、映像再生方法及び映像再生プログラム
JP2012256223A (ja) * 2011-06-09 2012-12-27 Sony Corp 情報処理装置および情報処理方法
CN102270095A (zh) * 2011-06-30 2011-12-07 威盛电子股份有限公司 多重显示器控制方法及其系统
DE102011108754A1 (de) * 2011-07-28 2013-01-31 Khs Gmbh Inspektionseinheit
KR20130019674A (ko) * 2011-08-17 2013-02-27 삼성전자주식회사 단말 및 그 단말에서 어플리케이션 수행 방법
CN102521209B (zh) * 2011-12-12 2015-03-11 浪潮电子信息产业股份有限公司 一种并行多处理器计算机的设计方法
CN102546946B (zh) * 2012-01-05 2014-04-23 中国联合网络通信集团有限公司 移动终端处理任务的方法及装置
WO2013122572A1 (en) * 2012-02-14 2013-08-22 Empire Technology Development Llc Load balancing in cloud-based game system
KR101947726B1 (ko) * 2012-03-08 2019-02-13 삼성전자주식회사 영상 처리 장치 및 이의 영상 처리 방법
KR101834195B1 (ko) * 2012-03-15 2018-04-13 삼성전자주식회사 다중코어 시스템 및 로드 밸런싱 방법
US9875105B2 (en) 2012-05-03 2018-01-23 Nvidia Corporation Checkpointed buffer for re-entry from runahead
KR101399472B1 (ko) * 2012-08-13 2014-06-27 (주)투비소프트 다중 프로세싱을 이용한 렌더링 처리 장치 및 방법
KR101399473B1 (ko) * 2012-08-13 2014-05-28 (주)투비소프트 다중 프로세싱을 이용한 렌더링 처리 장치 및 방법
US10001996B2 (en) 2012-10-26 2018-06-19 Nvidia Corporation Selective poisoning of data during runahead
GB2522355B (en) * 2012-11-06 2019-12-25 Intel Corp Dynamically rebalancing graphics processor resources
US9269120B2 (en) * 2012-11-06 2016-02-23 Intel Corporation Dynamically rebalancing graphics processor resources
US9740553B2 (en) 2012-11-14 2017-08-22 Nvidia Corporation Managing potentially invalid results during runahead
US9632976B2 (en) 2012-12-07 2017-04-25 Nvidia Corporation Lazy runahead operation for a microprocessor
US9275601B2 (en) 2012-12-12 2016-03-01 Intel Corporation Techniques to control frame display rate
US9823931B2 (en) 2012-12-28 2017-11-21 Nvidia Corporation Queued instruction re-dispatch after runahead
KR102177554B1 (ko) * 2013-01-07 2020-11-12 마그마 기에세레이테크날로지 게엠베하 표면 사이의 열 복사를 시뮬레이션하기 위한 방법
CN103077088B (zh) * 2013-01-17 2016-01-13 浙江大学 集群渲染环境中基于pkdt树的动态反馈负载均衡方法
CN103984669A (zh) * 2013-02-07 2014-08-13 辉达公司 一种用于图像处理的系统和方法
US20140298246A1 (en) * 2013-03-29 2014-10-02 Lenovo (Singapore) Pte, Ltd. Automatic display partitioning based on user number and orientation
US9582280B2 (en) 2013-07-18 2017-02-28 Nvidia Corporation Branching to alternate code based on runahead determination
US9358467B2 (en) 2013-07-22 2016-06-07 Empire Technology Development Llc Game load management
JP6249692B2 (ja) * 2013-09-06 2017-12-20 キヤノン株式会社 画像処理装置、その制御方法及びプログラム
US8924596B1 (en) * 2013-12-06 2014-12-30 Concurrent Ventures, LLC System and method for dividing and synchronizing a processing task across multiple processing elements/processors in hardware
IN2013MU03836A (ja) * 2013-12-06 2015-07-31 Tata Consultancy Services Ltd
AU2013273716A1 (en) 2013-12-19 2015-07-09 Canon Kabushiki Kaisha Method, apparatus and system for rendering an image
KR20150095144A (ko) * 2014-02-12 2015-08-20 삼성전자주식회사 그래픽스 데이터를 렌더링하는 방법 및 장치
US9275429B2 (en) * 2014-02-17 2016-03-01 Qualcomm Incorporated Device hang detection and recovery
US9417911B2 (en) * 2014-03-12 2016-08-16 Live Planet Llc Systems and methods for scalable asynchronous computing framework
US10440241B2 (en) * 2014-04-24 2019-10-08 Sony Corporation Image processing apparatus, image processing method, and surgical system
US10346941B2 (en) * 2014-05-30 2019-07-09 Apple Inc. System and method for unified application programming interface and model
DK178380B1 (en) * 2014-07-01 2016-01-25 Magma Giessereitechnologie Gmbh Method of beam tracking for use in a simulation or calculation process
US9898804B2 (en) * 2014-07-16 2018-02-20 Samsung Electronics Co., Ltd. Display driver apparatus and method of driving display
CN106873935B (zh) * 2014-07-16 2020-01-07 三星半导体(中国)研究开发有限公司 用于生成电子终端的显示界面的显示驱动设备和方法
CN104123452B (zh) * 2014-07-18 2017-10-10 西北工业大学 基于模糊决策的gpu负载综合评判方法
KR102314110B1 (ko) * 2014-09-16 2021-10-18 삼성디스플레이 주식회사 시각화 가속부를 포함하는 터치 표시 장치
GB2533284B (en) * 2014-12-11 2017-04-12 Imagination Tech Ltd Performing object detection
JP6513984B2 (ja) * 2015-03-16 2019-05-15 株式会社スクウェア・エニックス プログラム、記録媒体、情報処理装置及び制御方法
US10445850B2 (en) * 2015-08-26 2019-10-15 Intel Corporation Technologies for offloading network packet processing to a GPU
GB2540227B (en) * 2015-12-21 2018-01-17 Imagination Tech Ltd Allocation of tiles to processing engines in a graphics processing system
US9767770B2 (en) * 2015-12-28 2017-09-19 American Megatrends Inc. Computer system and method thereof for scalable data processing
US9817431B2 (en) 2016-02-03 2017-11-14 Qualcomm Incorporated Frame based clock rate adjustment for processing unit
GB2547252B (en) * 2016-02-12 2019-12-11 Advanced Risc Mach Ltd Graphics processing systems
KR101797845B1 (ko) * 2016-02-16 2017-11-14 가천대학교 산학협력단 멀티코어 컴퓨팅 시스템에서 병렬 비디오 처리 장치 및 방법
US10261847B2 (en) 2016-04-08 2019-04-16 Bitfusion.io, Inc. System and method for coordinating use of multiple coprocessors
US10593299B2 (en) * 2016-05-27 2020-03-17 Picturall Oy Computer-implemented method for reducing video latency of a computer video processing system and computer program product thereto
US9990714B2 (en) 2016-09-07 2018-06-05 Simula Innovation As Apparatus and method for global optimization
US10084855B2 (en) 2017-01-23 2018-09-25 Akamai Technologies, Inc. Pixel-based load balancing
US10115223B2 (en) * 2017-04-01 2018-10-30 Intel Corporation Graphics apparatus including a parallelized macro-pipeline
US10147159B2 (en) * 2017-04-07 2018-12-04 Microsoft Technology Licensing, Llc Ink render using high priority queues
US10043232B1 (en) * 2017-04-09 2018-08-07 Intel Corporation Compute cluster preemption within a general-purpose graphics processing unit
JP7013677B2 (ja) * 2017-05-01 2022-02-01 ソニーグループ株式会社 医用画像処理装置、医用画像処理装置の作動方法、及び、内視鏡システム
CN107423135B (zh) * 2017-08-07 2020-05-12 上海兆芯集成电路有限公司 均衡装置以及均衡方法
GB2565770B (en) 2017-08-15 2019-09-18 Advanced Risc Mach Ltd Data processing systems
US10354356B2 (en) * 2017-11-02 2019-07-16 Dell Products L.P. Systems and methods for interconnecting and cooling multiple graphics processing unit (GPU) cards
JP2019128658A (ja) * 2018-01-22 2019-08-01 ファナック株式会社 数値制御装置および数値制御システム
TWI683253B (zh) * 2018-04-02 2020-01-21 宏碁股份有限公司 顯示系統與顯示方法
CN109395384A (zh) * 2018-09-12 2019-03-01 Oppo广东移动通信有限公司 游戏渲染方法及相关产品
WO2020105069A1 (en) * 2018-11-21 2020-05-28 Datalogic Ip Tech S.R.L. Image multiprocessing method for vision systems
TWI734072B (zh) * 2019-01-25 2021-07-21 鴻齡科技股份有限公司 Gpu加速優化方法、裝置及電腦存儲介質
US11890538B2 (en) 2019-01-30 2024-02-06 Sony Interactive Entertainment LLC Scalable game console CPU / GPU design for home console and cloud gaming
US11074666B2 (en) * 2019-01-30 2021-07-27 Sony Interactive Entertainment LLC Scalable game console CPU/GPU design for home console and cloud gaming
CN109920040B (zh) * 2019-03-01 2023-10-27 京东方科技集团股份有限公司 显示场景处理方法和装置、存储介质
JP7317630B2 (ja) * 2019-08-14 2023-07-31 キヤノン株式会社 画像処理装置、画像処理方法、及びプログラム
CN110532100B (zh) * 2019-09-02 2022-04-15 Oppo广东移动通信有限公司 调度资源的方法、装置、终端及存储介质
US11263718B2 (en) 2020-02-03 2022-03-01 Sony Interactive Entertainment Inc. System and method for efficient multi-GPU rendering of geometry by pretesting against in interleaved screen regions before rendering
US11321800B2 (en) * 2020-02-03 2022-05-03 Sony Interactive Entertainment Inc. System and method for efficient multi-GPU rendering of geometry by region testing while rendering
US11170461B2 (en) 2020-02-03 2021-11-09 Sony Interactive Entertainment Inc. System and method for efficient multi-GPU rendering of geometry by performing geometry analysis while rendering
US11080814B1 (en) 2020-02-03 2021-08-03 Sony Interactive Entertainment Inc. System and method for efficient multi-GPU rendering of geometry by pretesting against screen regions using prior frame information
US11508110B2 (en) 2020-02-03 2022-11-22 Sony Interactive Entertainment Inc. System and method for efficient multi-GPU rendering of geometry by performing geometry analysis before rendering
US11514549B2 (en) 2020-02-03 2022-11-29 Sony Interactive Entertainment Inc. System and method for efficient multi-GPU rendering of geometry by generating information in one rendering phase for use in another rendering phase
JP7335454B2 (ja) * 2020-02-03 2023-08-29 株式会社ソニー・インタラクティブエンタテインメント レンダリング中の領域テストによってジオメトリの効率的なマルチgpuレンダリングを行うためのシステム及び方法
US11120522B2 (en) * 2020-02-03 2021-09-14 Sony Interactive Entertainment Inc. System and method for efficient multi-GPU rendering of geometry by subdividing geometry
WO2021158468A1 (en) * 2020-02-03 2021-08-12 Sony Interactive Entertainment Inc. System and method for efficient multi-gpu rendering of geometry by geometry analysis while rendering
US20220035684A1 (en) * 2020-08-03 2022-02-03 Nvidia Corporation Dynamic load balancing of operations for real-time deep learning analytics
CN111988598B (zh) * 2020-09-09 2022-06-21 江苏普旭科技股份有限公司 一种基于远近景分层渲染的视景图像生成方法
US11934846B2 (en) * 2020-10-01 2024-03-19 Adobe Inc. Job modification to present a user interface based on a user interface update rate
US11604752B2 (en) 2021-01-29 2023-03-14 Arm Limited System for cross-routed communication between functional units of multiple processing units
CN114095655A (zh) * 2021-11-17 2022-02-25 海信视像科技股份有限公司 一种串流数据的显示方法及设备
WO2023107119A1 (en) * 2021-12-10 2023-06-15 Google Llc Scalable hardware architecture template for processing streaming input data
US20230289211A1 (en) 2022-03-10 2023-09-14 Nvidia Corporation Techniques for Scalable Load Balancing of Thread Groups in a Processor
US20230377242A1 (en) * 2022-05-23 2023-11-23 Rockwell Collins, Inc. A-buffer dynamic allocation
CN116954541B (zh) * 2023-09-18 2024-02-09 广东保伦电子股份有限公司 一种拼接屏视频切割方法及系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000132349A (ja) * 1998-10-21 2000-05-12 Fuji Xerox Co Ltd 描画処理装置
JP2000222590A (ja) * 1999-01-27 2000-08-11 Nec Corp 画像処理方法及び装置
US6191800B1 (en) * 1998-08-11 2001-02-20 International Business Machines Corporation Dynamic balancing of graphics workloads using a tiling strategy
JP2003115047A (ja) * 2001-03-23 2003-04-18 Keisoku Giken Co Ltd 高精細画像生成表示装置

Family Cites Families (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5717440A (en) * 1986-10-06 1998-02-10 Hitachi, Ltd. Graphic processing having apparatus for outputting FIFO vacant information
US5031089A (en) * 1988-12-30 1991-07-09 United States Of America As Represented By The Administrator, National Aeronautics And Space Administration Dynamic resource allocation scheme for distributed heterogeneous computer systems
JPH05324583A (ja) 1992-05-26 1993-12-07 Dainippon Screen Mfg Co Ltd 画像データ処理装置
JP2780575B2 (ja) * 1992-07-27 1998-07-30 松下電器産業株式会社 並列画像生成装置
US6469746B1 (en) * 1992-12-28 2002-10-22 Sanyo Electric Co., Ltd. Multi-vision screen adapter
US5719598A (en) * 1993-08-23 1998-02-17 Loral Aerospace Corporation Graphics processor for parallel processing a plurality of fields of view for multiple video displays
EP0693737A3 (en) * 1994-07-21 1997-01-08 Ibm Method and apparatus for managing tasks in a multiprocessor system
WO1996031844A1 (fr) * 1995-04-05 1996-10-10 Hitachi, Ltd. Systeme graphique
US5790130A (en) * 1995-06-08 1998-08-04 Hewlett-Packard Company Texel cache interrupt daemon for virtual memory management of texture maps
WO1997004401A2 (en) * 1995-07-21 1997-02-06 Philips Electronics N.V. Multi-media processor architecture with high performance-density
JPH09153150A (ja) * 1995-12-01 1997-06-10 Hitachi Ltd 並列処理方法
KR100269106B1 (ko) * 1996-03-21 2000-11-01 윤종용 멀티프로세서 그래픽스 시스템
US6362818B1 (en) * 1998-01-07 2002-03-26 Evans & Sutherland Computer Corporation System and method for reducing the rendering load for high depth complexity scenes on a computer graphics display
DE19804470C1 (de) * 1998-02-05 1999-08-26 Leica Microsystems Mikroskopobjektiv mit einer Korrekturfassung
US6078339A (en) * 1998-02-10 2000-06-20 Intel Corporation Mutual exclusion of drawing engine execution on a graphics device
US6300965B1 (en) * 1998-02-17 2001-10-09 Sun Microsystems, Inc. Visible-object determination for interactive visualization
US6023281A (en) 1998-03-02 2000-02-08 Ati Technologies, Inc. Method and apparatus for memory allocation
JP3224782B2 (ja) * 1998-08-03 2001-11-05 インターナショナル・ビジネス・マシーンズ・コーポレーション 処理分担動的変更方法及びコンピュータ
US6317133B1 (en) * 1998-09-18 2001-11-13 Ati Technologies, Inc. Graphics processor with variable performance characteristics
US6259461B1 (en) * 1998-10-14 2001-07-10 Hewlett Packard Company System and method for accelerating the rendering of graphics in a multi-pass rendering environment
US6853381B1 (en) * 1999-09-16 2005-02-08 Ati International Srl Method and apparatus for a write behind raster
US6473086B1 (en) * 1999-12-09 2002-10-29 Ati International Srl Method and apparatus for graphics processing using parallel graphics processors
US6724390B1 (en) * 1999-12-29 2004-04-20 Intel Corporation Allocating memory
US6747654B1 (en) * 2000-04-20 2004-06-08 Ati International Srl Multiple device frame synchronization method and apparatus
US7047309B2 (en) * 2000-08-23 2006-05-16 International Business Machines Corporation Load balancing and dynamic control of multiple data streams in a network
US6683614B2 (en) 2001-12-21 2004-01-27 Hewlett-Packard Development Company, L.P. System and method for automatically configuring graphics pipelines by tracking a region of interest in a computer graphical display system
US6919896B2 (en) * 2002-03-11 2005-07-19 Sony Computer Entertainment Inc. System and method of optimizing graphics processing
US7594233B2 (en) * 2002-06-28 2009-09-22 Hewlett-Packard Development Company, L.P. Processing thread launching using volunteer information
US20040075623A1 (en) * 2002-10-17 2004-04-22 Microsoft Corporation Method and system for displaying images on multiple monitors
US6885376B2 (en) * 2002-12-30 2005-04-26 Silicon Graphics, Inc. System, method, and computer program product for near-real time load balancing across multiple rendering pipelines
US6985150B2 (en) * 2003-03-31 2006-01-10 Sun Microsystems, Inc. Accelerator control unit configured to manage multiple hardware contexts
US7119808B2 (en) * 2003-07-15 2006-10-10 Alienware Labs Corp. Multiple parallel processor computer graphics system
US7075541B2 (en) * 2003-08-18 2006-07-11 Nvidia Corporation Adaptive load balancing in a multi-processor graphics processing system
US7782325B2 (en) * 2003-10-22 2010-08-24 Alienware Labs Corporation Motherboard for supporting multiple graphics cards

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6191800B1 (en) * 1998-08-11 2001-02-20 International Business Machines Corporation Dynamic balancing of graphics workloads using a tiling strategy
JP2000132349A (ja) * 1998-10-21 2000-05-12 Fuji Xerox Co Ltd 描画処理装置
JP2000222590A (ja) * 1999-01-27 2000-08-11 Nec Corp 画像処理方法及び装置
JP2003115047A (ja) * 2001-03-23 2003-04-18 Keisoku Giken Co Ltd 高精細画像生成表示装置

Also Published As

Publication number Publication date
DE602004019104D1 (de) 2009-03-05
CA2535878A1 (en) 2005-03-03
US20050041031A1 (en) 2005-02-24
EP1661092B1 (en) 2009-01-14
US20060221087A1 (en) 2006-10-05
US7075541B2 (en) 2006-07-11
JP2007503059A (ja) 2007-02-15
TWI344108B (en) 2011-06-21
EP1661092A1 (en) 2006-05-31
US20060221086A1 (en) 2006-10-05
TW200511113A (en) 2005-03-16
WO2005020157A1 (en) 2005-03-03
US20100271375A1 (en) 2010-10-28
US8077181B2 (en) 2011-12-13

Similar Documents

Publication Publication Date Title
JP4691493B2 (ja) マルチプロセッサ・グラフィックス処理システムの適応型負荷分散
US8941653B2 (en) Order-preserving distributed rasterizer
US7009614B2 (en) Unified memory distributed across multiple nodes in a computer graphics system
US9697641B2 (en) Alpha-to-coverage using virtual samples
US8704836B1 (en) Distributing primitives to multiple rasterizers
US8558842B1 (en) Parallel duplicate primitive vertex detection and batching
US7629978B1 (en) Multichip rendering with state control
US8810592B2 (en) Vertex attribute buffer for inline immediate attributes and constants
US20040075661A1 (en) Image processing apparatus and method of same
US8941669B1 (en) Split push buffer rendering for scalability
US6943804B2 (en) System and method for performing BLTs
US7546425B2 (en) Data processor with a built-in memory
US7176914B2 (en) System and method for directing the flow of data and instructions into at least one functional unit
US7593971B1 (en) Configurable state table for managing multiple versions of state information
US6873331B2 (en) System and method for passing messages among processing nodes in a distributed system
US8489839B1 (en) Increasing memory capacity of a frame buffer via a memory splitter chip
US11379944B2 (en) Techniques for performing accelerated point sampling in a texture processing pipeline
US9536341B1 (en) Distributing primitives to multiple rasterizers

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070807

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20070807

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20070813

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20070813

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100608

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100903

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100928

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101227

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110125

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110221

R150 Certificate of patent or registration of utility model

Ref document number: 4691493

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140225

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250