(57)【要約】  ブロードキャストアパーチャーに関連するブリッジがプロセッサと多数のグラフィックデバイスの間でレンダリングコマンド及びデータを転送することを容易にする。ブリッジは、プロセッサによりブロードキャストアパーチャーに書き込まれるデータを受けて、多数のグラフィックデバイスに転送し、プロセッサが書き込みオペレーションを重複して遂行する必要を排除する。システムの初期化中、システムコンフィギュレーションユーティリティを使用して設定されシステムコンフィギュレーションメモリに記憶されたアパーチャーサイズ値に基づき、アドレス空間においてブリッジにブロードキャストアパーチャーを割り当てる。グラフィックドライバは、多数のグラフィックデバイスに関連するユニキャストアパーチャーパラメータを、ブリッジドライバを介してブリッジへ送信し、ブロードキャストアパーチャーを有効にする。【選択図】  図２
2007528062.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサと複数のグラフィックデバイスとの間でデータを転送するためのブロードキャストアパーチャーを設定する方法であって、
ブロードキャストアパーチャーに対する割り当てデータを、物理的アドレス空間において受信するステップと、
第１の組のコンフィギュレーションデータでブリッジを設定するステップであって、前記ブリッジが、プロセッサと複数のグラフィックデバイスとの間でのデータの転送を容易にするようになっている、該ステップと、
第２の組のコンフィギュレーションデータで前記ブリッジを設定し、これによって、前記ブロードキャストアパーチャーを有効にする、該ステップと、
を含む方法。
【請求項２】
第１の組のコンフィギュレーションデータでブリッジを設定する前記ステップは、ブロードキャストアパーチャーサイズを含む前記第１の組のコンフィギュレーションデータの少なくとも一部分を、システムコンフィギュレーションメモリから検索することを更に含む、請求項１に記載の方法。
【請求項３】
前記ブロードキャストアパーチャーサイズは、ユーザによりＢＩＯＳコンフィギュレーションユーティリティを介して設定される、請求項２に記載の方法。
【請求項４】
第２の組のコンフィギュレーションデータで前記ブリッジを構成する前記ステップは、前記第２の組のコンフィギュレーションデータの少なくとも一部分を、前記複数のグラフィックデバイスに関連付けられたグラフィックドライバから受信することを含む、請求項１に記載の方法。
【請求項５】
前記複数のグラフィックデバイスの少なくとも一つは、複数のグラフィック処理ユニットを含む、請求項１に記載の方法。
【請求項６】
前記プロセッサは、１組のレンダリングコマンド及びレンダリングデータを、前記複数のグラフィックデバイスへ前記ブロードキャストアパーチャーを介して伝送するようになっているグラフィックドライバを実行する、請求項１に記載の方法。
【請求項７】
前記１組のレンダリングコマンドは、フレームの第１の部分をレンダリングするように前記複数のグラフィックデバイスの第１の部分に命令し、フレームの第２の部分をレンダリングするように前記複数のグラフィックデバイスの第２の部分に命令する、請求項６に記載の方法。
【請求項８】
前記１組のレンダリングコマンドは、第１のフレームをレンダリングするように前記複数のグラフィックデバイスの第１の部分に命令し、第２のフレームをレンダリングするように前記複数のグラフィックデバイスの第２の部分に命令する、請求項６に記載の方法。
【請求項９】
前記１組のレンダリングコマンドは、フレームの少なくとも一部分を含むレンダリングされた画像データを、ディスプレイ装置に接続された前記複数のグラフィックデバイスの一つへ転送するように前記複数のグラフィックデバイスの第１の部分に命令する、請求項６に記載の方法。
【請求項１０】
前記複数のグラフィックデバイスの前記第１の部分は、前記レンダリングされた画像データを、デジタルビデオ接続を介して、ディスプレイ装置に接続された前記複数のグラフィックデバイスの一つへ転送するようになっている、請求項９に記載の方法。
【請求項１１】
前記複数のグラフィックデバイスの前記第１の部分は、前記レンダリングされた画像データを、グラフィックバスを介し、ブリットオペレーションを使用して、ディスプレイ装置に接続された前記複数のグラフィックデバイスの一つへ転送するようになっている、請求項９に記載の方法。
【請求項１２】
前記レンダリングされた画像データは、フレームの少なくとも一部分のアンチエイリアスバージョンを含む、請求項１１に記載の方法。
【請求項１３】
前記レンダリングされた画像データは、フレームの複雑な部分に関連する、請求項１１に記載の方法。
【請求項１４】
複数のグラフィックデバイスへデータを転送するための装置であって、
前記複数のグラフィックデバイスの各々に１組のデータを伝送するようになっているグラフィックデバイスインターフェイスと、
ブロードキャストアパーチャーを介して受信される前記１組のデータに応答するグラフィックデバイスブロードキャストユニットと、
を備え、
前記ブロードキャストアパーチャーを介して前記１組のデータを受信するのに応答して、前記グラフィックデバイスブロードキャストユニットは、前記複数のグラフィックデバイスの各々に前記１組のデータのコピーを伝送するようになっている、
装置。
【請求項１５】
前記グラフィックデバイスブロードキャストユニットは、プロセッサから前記ブロードキャストアパーチャーを介して前記１組のデータを受信するようになっている、請求項１４に記載の装置。
【請求項１６】
前記１組のデータをメモリから検索し、前記ブロードキャストアパーチャーを介して前記グラフィックデバイスブロードキャストユニットへ前記１組のデータを伝送するようになっているダイレクトメモリアクセス転送ユニットを更に備える、請求項１４に記載の装置。
【請求項１７】
前記グラフィックデバイスブロードキャストユニットは、前記ブロードキャストアパーチャーに関連するメモリアドレスを記憶するようになっているブロードキャストアパーチャーベースアドレスレジスタを備える、請求項１４に記載の装置。
【請求項１８】
更に、前記ブロードキャストアパーチャーに関連する前記メモリアドレスを、ブリッジドライバから受信するようになっている、請求項１７に記載の装置。
【請求項１９】
前記グラフィックデバイスブロードキャストユニットは、前記ブロードキャストアパーチャーに関連するサイズ値を記憶するようになっているブロードキャストアパーチャーサイズレジスタを備える、請求項１４に記載の装置。
【請求項２０】
更に、ブリッジドライバから前記ブロードキャストアパーチャーに関連するサイズ値を受信するようになっており、前記ブリッジドライバは、システムコンフィギュレーションメモリから前記ブロードキャストアパーチャーに関連する前記サイズ値を検索するようになっている、請求項１９に記載の装置。
【請求項２１】
前記グラフィックデバイスブロードキャストユニットは、前記複数のグラフィックデバイスに対応する複数のユニキャストアパーチャーベースアドレスレジスタを備え、各ユニキャストアパーチャーベースアドレスレジスタは、前記複数のグラフィックデバイスのうち一つのユニキャストアパーチャーに関連するメモリアドレスを記憶するようになっており、
前記グラフィックデバイスインターフェイスは、前記１組のデータのコピーを、前記複数のグラフィックデバイスの各々に、それに関連したユニキャストアパーチャーを介して伝送するようになっている、請求項１４に記載の装置。
【請求項２２】
更に、前記複数のグラフィックデバイスの前記ユニキャストアパーチャーに関連するメモリアドレスを、グラフィックドライバからブリッジドライバを介して受信するようになっている、請求項２１に記載の装置。
【発明の詳細な説明】
【関連出願への相互参照】
【０００１】
[0001]本出願は、次の特許出願、２００３年８月１８日に出願された「Adaptive  Load  Balancing  in  a  Multi-Processor  Graphics  Processing  System」と題する米国特許出願第１０／６４２，９０５号、２００３年８月１２日に出願された「Programming  Multiple  Chips  from  a  Command  Buffer」と題する米国特許出願第１０／６３９，８９３号、及び、２００３年８月１８日に出願された「Private  Addressing  in  a  Multi-Processor  Graphics  Processing  System」と題する米国特許出願第１０／６４３，０７２号に関連するものであり、これら出願の開示を参照することによって本明細書にあらゆる目的で援用する。
【発明の背景】
【０００２】
[0002]本発明は、コンピュータグラフィックの分野に関するものである。多くのコンピュータグラフィック画像は、所与の視点からの三次元シーンとの光の相互作用を数学的にモデリングすることによって、生成される。このプロセスは、レンダリングと称されるものであり、所与の視点からのシーンの二次元画像を生成するものであって、実世界のシーンの写真撮影に類似するものである。
【０００３】
[0003]コンピュータグラフィックスに対する要求、特に、リアルタイムコンピュータグラフィックスに対する要求が増すに連れて、レンダリングプロセスを加速するようにされたグラフィック処理サブシステムをもつコンピュータシステムが普及してきた。これらのコンピュータシステムでは、レンダリングプロセスは、コンピュータの汎用中央処理ユニット（ＣＰＵ）とグラフィック処理サブシステムとの間で分割される。通常、ＣＰＵは、所与のシーンにおける物体の位置、動き及び衝突を決定するような高レベルのオペレーションを遂行する。これらの高レベルオペレーションから、ＣＰＵは、１組のレンダリングコマンド及びデータを生成し、これらによって所望のレンダリングされる一つ又は複数の画像を定義する。例えば、レンダリングコマンド及びデータは、シーンの幾何学形状、照明、陰影、テクスチャ、動き、及び／又はシーンに対するカメラパラメータを定義することができる。グラフィック処理システムは、１組のレンダリングコマンド及びデータから一つ以上のレンダリングされた画像を生成する。
【０００４】
[0004]レンダリングの性能を最大にするために、グラフィック処理システムは、並列に動作する二つ以上のグラフィック処理ユニット（ＧＰＵ）を備えてもよい。グラフィック処理ユニットは、レンダリングワークロードを種々の方法で分割することができる。例えば、画像の異なる部分を異なるＧＰＵによって並列にレンダリングすることができる。次いで、それらの部分を合成して、完全にレンダリングされた画像を生成する。並列レンダリングスキームの別の例では、各ＧＰＵが一連の画像における一つの画像をレンダリングする。
【０００５】
[0005]レンダリングコマンド及びデータをＣＰＵから二つ以上のＧＰＵへ転送することは、並列レンダリングスキームに起因する一つの難題である。多くの並列レンダリング構成では、同じレンダリングコマンド及びデータを全てのＧＰＵに分配する必要がある。しかしながら、ＣＰＵは、通常、レンダリングコマンド及びデータを、ＣＰＵバスを介して各ＧＰＵへ、別々に伝達する。従って、多数のＧＰＵの動作に要する帯域巾は、ＧＰＵの数と共に直線的に増大する。ＣＰＵバスの帯域巾には限度があるので、並列に動作する二つ以上のＧＰＵを伴うシステムは、ＣＰＵバスを飽和させる。これらの状況では、ＣＰＵバスが、全体的なグラフィック性能において制限因子となり、ＧＰＵの追加によって性能を改善することができない。さらに、ＣＰＵが同じレンダリングコマンド及びデータを各ＧＰＵとで別々に通信するようにすると、ＣＰＵサイクルの浪費となり、例えば、ＣＰＵが同じレンダリングコマンド及びデータを数回書き込むことが必要となる。
【０００６】
[0006]それ故、ＣＰＵと、並列に動作する多数のグラフィック処理ユニットとの間でレンダリングコマンド及びデータを転送するための効率的なシステム及び方法を得ることが要望されている。さらに、多数のグラフィック処理ユニットを動作させる際の潜在的なグラフィック性能ボトルネックとしてのＣＰＵバスを排除することも要望されている。また、グラフィック処理サブシステムにおいて多数のグラフィック処理ユニットと通信する必要のある無駄なＣＰＵサイクルの数を減少することも要望されている。
【発明の簡単な概要】
【０００７】
[0007]本発明は、ブロードキャストアパーチャーに関連付けられたブリッジを含むものであり、プロセッサと多数のグラフィックデバイスとの間でレンダリングコマンド及びデータを転送することを容易にする。このブリッジは、プロセッサによってブロードキャストアパーチャーに書き込まれたデータを受け取って、それを多数のグラフィックデバイスに転送するものであり、プロセッサが多数の書き込みオペレーションを遂行し場合によってはプロセッサバスを飽和させる必然性を排除する。システムの初期化中に、ブロードキャストアパーチャーは、システムコンフィギュレーションユーティリティを使用して設定され且つシステムコンフィギュレーションメモリに記憶されたアパーチャーサイズ値に基づき、アドレス空間において、ブリッジに割り当てられる。グラフィックドライバは、多数のグラフィックデバイスに関連するユニキャストアパーチャーパラメータを、ブリッジドライバを介してブリッジへ送信することにより、ブロードキャストアパーチャーを有効にする。ブロードキャストアパーチャーを有効にすると、多数のグラフィックデバイスを並列に動作して、レンダリング性能を改善することができる。並列レンダリング技術は、分割フレーム、交互フレーム、及び結合分割・交互フレームのレンダリングを含む。
【０００８】
[0008]本発明の一実施の形態は、ブロードキャストアパーチャーに対する割り当てデータを物理的アドレス空間において受信することによって、プロセッサと複数のグラフィックデバイスとの間でデータを転送するようになっているブロードキャストアパーチャーを設定する。ブリッジは、第１の組のコンフィギュレーションデータで設定される。このブリッジは、プロセッサと複数のグラフィックデバイスとの間でデータを転送することを容易にするようになっている。さらに、ブリッジは、第２の組のコンフィギュレーションデータで設定され、これにより、ブロードキャストアパーチャーを有効にする。付加的な実施の形態では、複数のグラフィックデバイスの少なくとも一つが、複数のグラフィック処理ユニットを備えている。
【０００９】
[0009]別の実施の形態では、第１の組のコンフィギュレーションデータでブリッジを設定することは、第１組のコンフィギュレーションデータの少なくとも一部をシステムコンフィギュレーションメモリから検索することを含む。一実施例では、コンフィギュレーションデータのこの部分は、ブロードキャストアパーチャーサイズを含む。このブロードキャストアパーチャーサイズは、ユーザによってＢＩＯＳコンフィギュレーションユーティリティを介して設定されてもよい。更に別の実施の形態では、第１の組のコンフィギュレーションデータは、ブリッジに含まれている１組のレジスタに記憶される。
【００１０】
[0010]更に別の実施の形態では、第２の組のコンフィギュレーションデータでブリッジを設定することは、第２の組のコンフィギュレーションデータの少なくとも一部を、複数のグラフィックデバイスに関連したグラフィックドライバから受け取ることを含む。更に別の実施の形態では、第２の組のコンフィギュレーションデータのこの部分は、１組のユニキャストアパーチャーに対する１組の物理的ベースアドレスを含む。各物理的ベースアドレスは、複数のグラフィックデバイスの一つに関連している。第２の組のコンフィギュレーションデータは、ブリッジに含まれている１組のレジスタに記憶される。
【００１１】
[0011]更に別の実施の形態において、プロセッサは、１組のレンダリングコマンド及びレンダリングデータを、ブロードキャストアパーチャーを介して複数のグラフィックデバイスへ伝送するようになっているグラフィックドライバを実行する。一実施例では、１組のレンダリングコマンドが、フレームの第１の部分をレンダリングするように複数のグラフィックデバイスの第１の部分に命令し、フレームの第２の部分をレンダリングするように複数のグラフィックデバイスの第２の部分に命令する。別の実施の形態では、１組のレンダリングコマンドは、第１のフレームをレンダリングするように複数のグラフィックデバイスの第１の部分に命令し、第２フレームをレンダリングするように複数のグラフィックデバイスの第２の部分に命令する。ある実装形態では、１組のレンダリングコマンドは、フレームの少なくとも一部分を含むレンダリングされた画像データを、ディスプレイデバイスに接続された複数のグラフィックデバイスの一つへ転送するように、複数のグラフィックデバイスの第１の部分に命令する。複数のグラフィックデバイスの第１の部分は、ブリット（blit）オペレーションを使用し、グラフィックバスを介してディスプレイ装置に接続された複数のグラフィックデバイスの一つへ、レンダリングされた画像データを転送するようになっていてもよい。別の実装形態では、複数のグラフィックデバイスの第１の部分は、デジタルビデオ接続を介してディスプレイデバイスに接続された複数のグラフィックデバイスの一つへ、レンダリングされた画像データを転送するようになっていてもよい。レンダリングされた画像データは、フレームの少なくとも一部分のアンチエイリアスバージョンを含んでもよい。さらに、レンダリングされた画像データは、フレームの複雑な部分に関連付けされてもよい。
【００１２】
[0012]以下、添付図面を参照して本発明を説明する。
【発明の詳細な説明】
【００１３】
[0013]図１は、本発明の実施の形態を実施するのに適したパーソナルコンピュータ、ビデオゲームコンソール、パーソナルデジタルアシスタント、又は他のデジタルデバイスのようなコンピュータシステム１００のブロック図である。このコンピュータシステム１００は、ソフトウェアアプリケーション及び任意であるがオペレーティングシステムを実行するための中央処理ユニット（ＣＰＵ）１０５を備えている。一実施の形態では、ＣＰＵ１０５は、実際には、並列に動作する多数の個別の中央処理ユニットである。メモリ１１０は、ＣＰＵ１０５により使用するためのアプリケーション及びデータを記憶する。記憶装置１１５は、アプリケーション及びデータのための不揮発性記憶を提供するものであり、固定ディスクドライブ、取り外し可能なディスクドライブ、フラッシュメモリ装置、及びＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、又は他の光学的記憶装置を含み得る。ユーザ入力装置１２０は、一以上のユーザからのユーザ入力をコンピュータシステム１００へ伝送するものであり、キーボード、マウス、ジョイスティック、タッチスクリーン、及び／又はマイクロホンを含み得る。ネットワークインターフェイス１２５は、コンピュータシステム１００が電子通信ネットワークを介して他のコンピュータシステムと通信することを可能にするものであり、ローカルエリアネットワーク、及びインターネットのようなワイドエリアネットワークを介して行われる有線又は無線通信を含み得る。コンピュータシステム１００のコンポーネントは、ＣＰＵ１０５、メモリ１１０、データ記憶装置１１５、ユーザ入力装置１２０、及びネットワークインターフェイス１２５を含んでおり、一つ以上のデータバス１６０を介して接続される。データバスは、例えば、ＩＳＡ、ＰＣＩ、ＡＧＰ、ＰＣＩ、ＰＣＩ−Ｘ（３ＧＩＯとしても知られている）、及びハイパートランスポートデータバスを含む。
【００１４】
[0014]さらに、グラフィックサブシステム１３０が、データバス１６０及びコンピュータシステム１００のコンポーネントに接続されている。グラフィックサブシステム１３０は、グラフィック処理ユニット（ＧＰＵ）１３５及びグラフィックメモリを含む。グラフィックメモリは、出力画像の各ピクセル用のピクセルデータを記憶するのに使用されるディスプレイメモリ１４０（例えば、フレームバッファ）を含む。ピクセルデータは、ＣＰＵ１０５からディスプレイメモリ１４０に直接与えることができる。或いは又、ＣＰＵ１０５が、ＧＰＵ１３５に、希望の出力画像を定義するデータ及び／又はコマンドを与え、当該データ及び／又はコマンドから、ＧＰＵ１３５が一つ以上の出力画像のピクセルデータを生成する。希望の出力画像を定義するデータ及び／又はコマンドは、追加のメモリ１４５に記憶される。一実施の形態では、ＧＰＵ１３５は、シーンに対する幾何学形状、照明、陰影、テクスチャ、動き、及び／又はカメラパラメータを定義するレンダリングコマンド及びデータから、出力画像用のピクセルデータを生成する。
【００１５】
[0015]別の実施の形態では、ディスプレイメモリ１４０及び／又は追加のメモリ１４５は、メモリ１１０の一部分であり、ＣＰＵ１０５に共有される。或いは又、ディスプレイメモリ１４０及び／又は追加のメモリ１４５は、一つ以上の個別のメモリであり、グラフィックサブシステム１３０の排他的な使用のために設けられている。グラフィックサブシステム１３０は、ディスプレイメモリ２１８からディスプレイ装置１５０に表示される画像用のピクセルデータを定期的に出力する。ディスプレイ装置１５０は、コンピュータシステム１００からの信号に応答して視覚情報を表示できる任意の装置であり、ＣＲＴ、ＬＣＤ、プラズマ及びＯＬＥＤディスプレイを含む装置である。コンピュータシステム１００は、ディスプレイ装置１５０にアナログ又はデジタル信号を与えることができる。
【００１６】
[0016]更に別の実施の形態において、グラフィック処理サブシステム１３０は、ＧＰＵ１３５と同様の一つ以上の追加のＧＰＵ１５５を備えている。更に別の実施の形態では、グラフィック処理サブシステム１３０は、グラフィックコプロセッサ１６５を備えている。このグラフィック処理コプロセッサ１６５及び追加のＧＰＵ１５５は、ＧＰＵ１３５と並列に動作するようになっている。追加のＧＰＵ１５５は、ＧＰＵ１３５と同様に、レンダリングコマンドから出力画像用のピクセルデータを生成する。追加のＧＰＵ１５５は、ＧＰＵ１３５と共に動作して、出力画像の異なる部分に対してピクセルデータを同時に生成することができ、或いは異なる出力画像に対してピクセルデータを同時に生成することもできる。一実施の形態では、グラフィックコプロセッサ１６５は、ＧＰＵ１３５及び／又は追加のＧＰＵ１５５に対して幾何学形状の変換、シェーダー計算及びバックフェースカリングオペレーションのようなレンダリング関連タスクを実行する。
【００１７】
[0017]追加のＧＰＵ１５５は、ＧＰＵ１３５と同じ回路板上に設けることが可能であり、データバス１６０への接続をＧＰＵ１３５と共有することが可能であり、或いはデータバス１６０に個別に接続された付加的な回路板上に設けることも可能である。また、追加のＧＰＵ１５５は、ＧＰＵ１３５と同じモジュール又はチップパッケージに一体化することも可能である。追加のＧＰＵ１５５は、ディスプレイメモリ１４０及び追加のメモリ１４５と同様に、それら自身のディスプレイ及び追加のメモリを有することが可能であり、或いはメモリ１４０及び１４５をＧＰＵ１３５と共有することも可能である。一実施の形態では、グラフィックコプロセッサ１６５は、データバス１６０を制御するのに使用されるノースブリッジ(Northbridge)又はサウスブリッジ(Southbridge)チップのようなコンピュータシステムチップセット（図示せず）と一体化される。
【００１８】
[0018]図２は、並列に動作する二つのグラフィック処理サブシステムを含むコンピュータシステム２００のブロック図である。ＣＰＵ２０５は、バス２１０を介してグラフィックデバイス２１５及び２２０に接続される。バス２１０は、ＣＰＵ２０５とグラフィックデバイス２１５及び２２０との間のデータ経路を形成する多数のデータバスで構成することができる。バス２１０の一実施の形態は、ＣＰＵ２０５とバスコントローラ（図示せず）との間に接続されたＣＰＵバスと、バスコントローラとグラフィックデバイス２１５及び２２０との間に接続されたＰＣＩ−Ｘのようなグラフィックバスと、を備えている。
【００１９】
[0019]グラフィックデバイス２１５は、マスターＧＰＵ２２５と称されるグラフィック処理ユニットを備えている。マスターＧＰＵ２２５は、システム２００により認識される一次グラフィックデバイスとして働き、一実施の形態では、一次ディスプレイ装置（図示せず）に接続することができる。マスターＧＰＵ２２５は、ＣＰＵ２０５からレンダリングコマンド及びデータ２３０を受け取る。一実施の形態において、レンダリングコマンド及びデータ２３０は、マスターＧＰＵ２２５に関連付けられた追加のメモリ１４５（図１に定義された）に記憶される。別の実施の形態では、レンダリングコマンド及びデータ２３０は、システムメモリ（図１のメモリ１１０のような）に記憶され、必要に応じてマスターＧＰＵ２２５により検索される。レンダリングコマンド及びデータ２３０に応答して、マスターＧＰＵ２２５は、種々のレンダリングオペレーションを遂行する。これらのレンダリングオペレーションには、テクスチャマッピングオペレーションが含まれており、このために、マスターＧＰＵ２２５はテクスチャマップ２３５にアクセスする。一実施の形態では、テクスチャマップ２３５は、マスターＧＰＵ２２５に関連付けられた追加のメモリ１４５に記憶されて、迅速なメモリアクセスを容易にする。
【００２０】
[0020]グラフィックデバイス２２０は、グラフィックデバイス２１５と同様のものであり、スレーブＧＰＵ２４０、１組のレンダリングコマンド及びデータ２４５、並びにテクスチャマップ２５０を有している。一実施の形態では、スレーブＧＰＵ２４０は、システム２００によりディスプレイ装置として認識されていない。代わりに、スレーブＧＰＵ２４０は、マスターＧＰＵ２２５と並列に動作され、一次グラフィックデバイスのグラフィック性能を改善する。この並列の処理動作モードでは、スレーブＧＰＵ２４０は、ディスプレイ装置（図示せず）に直接接続されておらず、代わりに、その出力は、出力されるべきグラフィックデバイス２１５へ送信される。更に別の実施の形態では、システム２００の別の動作モードで、グラフィックデバイス２２０は補助的なディスプレイ装置として認識される。この別の動作モードでは、グラフィックデバイス２２０の出力が補助的なディスプレイへ向かう。この別の動作モードは、システム２００が二つの独立したディスプレイ装置を利用することを可能にする。
【００２１】
[0021]並列の処理動作モードでは、グラフィックデバイス２１５及び２２０は、通常、多くの同じレンダリングコマンド及びデータ並びにテクスチャマップを必要とする。例えば、グラフィックデバイス２１５及び２２０が同じ表面の異なる部分をレンダリングする場合には、両方のグラフィックデバイスが同じテクスチャマップにアクセスする必要がある。さらに、一つのグラフィックデバイスのみに特化したレンダリングコマンドを含む同じ組のレンダリングコマンド及びデータを、両方のグラフィックデバイスに送信することが可能である。１組のコマンドに含まれるセットデバイスマスク（ＳＤＭ）コマンドは、他方のグラフィックデバイスに、その装置には適用できないレンダリングコマンドをスキップするように命令する。ＳＤＭコマンドの動作及びアプリケーションは、２００３年８月１２日に出願された「Programming Multiple Chips from a Command Buffer」と題する関連米国特許出願第１０／６３９，８９３号に説明されている。
【００２２】
[0022]並列処理動作モードの従来の実装では、ＣＰＵ２０５は、レンダリングコマンド及びデータ並びにテクスチャマップのコピーを二つの別々のオペレーションで、グラフィックデバイス２１５及び２２０に転送することが要求される。この実装は、データを２回転送することを要求することで、ＣＰＵサイクルを浪費する。より重要なことに、この従来の実装は、データ転送でバス２１０の容量をしばしば飽和させる。例えば、典型的なインテル・ペンティウム４ＣＰＵバスは、帯域巾が約３．２ギガバイト（ＧＢ）／秒である。システム２００の実施の形態をグラフィックデバイス２１５及び２２０に接続するのに使用されるＰＣＩ−Ｘグラフィックバスは、１．５ＧＢ／秒の帯域巾を各グラフィックデバイスに割り当てる。従って、グラフィックデバイス２１５及び２２０の両方が最大帯域巾を使用する場合には、ＣＰＵ２０５から３ＧＢ／秒の帯域巾を要求し、ＣＰＵバスを本質的に飽和させる。さらに、追加のグラフィックデバイスを追加しても、性能は実質的に改善されない。その理由は、ＣＰＵバスが追加のグラフィックデバイスをサポートするのに充分なほど、高速にデータを転送できないからである。
【００２３】
[0023]図３は、本発明の実施形態に係り、二つのグラフィック処理サブシステムに対して並列にデータを送受するシステム３００を示す。このシステム３００は、メモリマップ型Ｉ／Ｏを使用して、ＣＰＵ３０５とグラフィックデバイス３１０及び３１５との間でレンダリングコマンド及びデータを伝送する。メモリマップ型Ｉ／Ｏでは、所定範囲のメモリアドレスに書き込まれるコマンド及びデータが、グラフィックデバイス３１０及び３１５へ伝送され、逆に、グラフィックデバイス３１０及び３１５からのデータは、ＣＰＵ３０５により所定範囲のメモリアドレスから読み取ることができる。
【００２４】
[0024]メモリマップ３２０は、システム３００において利用可能なメモリアドレスの範囲を図で表している。メモリマップ３２０は、幾つかのアパーチャー、即ちグラフィックデバイス３１０及び３１５との通信に使用されるメモリアドレスの範囲を含む。ユニキャストアパーチャー３２５及び３３０は、コマンド及びデータをグラフィックデバイス３１０及び３１５へ各々分配するようになっている。所与のユニキャストアパーチャーに書き込まれるコマンド及びデータは、そのユニキャストアパーチャーに関連付けられたグラフィックデバイスのみに分配される。同様に、ユニキャストアパーチャーから読み取られたデータは、それに関連付けられたグラフィックデバイスからデータを検索する。
【００２５】
[0025]ユニキャストアパーチャー３２５及び３３０に加えて、メモリマップ３２０は、ブロードキャストアパーチャー３３５も備えている。このブロードキャストアパーチャー３３５は、ＣＰＵ３０５がシステム３００の全てのグラフィックデバイスと同時に通信できるようにする。ブロードキャストアパーチャー３３５に書き込まれるコマンド及びデータは、グラフィックデバイス３１０及び３１５へ分配されると共に、システム３００の他のグラフィックデバイスにも分配される。一実施の形態において、ブロードキャストアパーチャー３３５から読み取られたデータは、マスター又は一次グラフィックデバイスと呼称されるグラフィックデバイスからデータを検索する。
【００２６】
[0026]本発明の実施の形態は、ブリッジを備えており、当該ブリッジは、ブロードキャストアパーチャー３３５に書き込まれたデータをシステム３００の各グラフィックデバイスへコピーするようになっている。図４は、本発明の実施の形態に係り、二つ以上のグラフィック処理サブシステムに対して並列にデータを送受するためのブリッジを示す。システム４００は、ブリッジ４０５を備えており、当該ブリッジ４０５は、ＣＰＵバス４１５を介してＣＰＵ４１０に接続され、グラフィックバス４２５を介して二つのグラフィックデバイス４２０及び４３０に接続されている。一実施の形態において、ブリッジ４０５は、ノースブリッジ又はサウスブリッジシステムコントローラのようなシステム４００のコアロジックのコンポーネントに一体化される。
【００２７】
[0027]ブリッジ４０５は、ブリッジコンフィギュレーション情報を記憶するための四つのレジスタ４４０、４４５、４５０及び４５５を備えている。ブロードキャストアパーチャーベースレジスタ４４０は、ブロードキャストアパーチャーに対する物理的メモリアドレスを記憶する。一実施の形態において、ブロードキャストアパーチャーの物理的メモリアドレスは、システムスタートアップ中にシステムＢＩＯＳにより決定される。ブロードキャストアパーチャーサイズレジスタ４４５は、ブロードキャストアパーチャーのサイズを記憶する。一実施形態では、ユーザは、コンピュータシステムＢＩＯＳコンフィギュレーションユーティリティを使用してブロードキャストアパーチャーのサイズを指定する。例えば、ＢＩＯＳコンフィギュレーションユーティリティは、１２８、２５６又は５１２メガバイトのようなブロードキャストアパーチャーサイズを指定するためのメニューオプションを含むことができる。ブロードキャストアパーチャーのサイズは、コンピュータシステムＣＭＯＳメモリに記憶され、システム初期化中に検索されてレジスタ４４５に記憶され得る。
【００２８】
[0028]更に別の実施の形態では、メニューオプションは、ユーザが、多数の独立したディスプレイを駆動するための多数のグラフィックデバイスを使用し、並列な処理動作モードを必要としないシステムにおけるブロードキャストアパーチャーを無効にすることを可能にする。ブロードキャストアパーチャーを無効にすると、メモリマップ型Ｉ／Ｏに対して消費されるアドレス空間の量が減少し、システム性能が改善する可能性がある。
【００２９】
[0029]ベースアドレスレジスタ０及び１（各々ＢＡＲ０及びＢＡＲ１）４５０及び４５５は、グラフィックデバイス４２０及び４３０に各々関連付けられたユニキャストアパーチャーに対する物理的メモリアドレスを記憶する。以下に述べる実施の形態では、ベースアドレスレジスタ４５０及び４５５は、ブリッジドライバと通信するグラフィックドライバにより設定される。更に別の実施の形態では、ブリッジ４０５は、付加的なベースアドレスレジスタを備え、これは、追加のグラフィックデバイスを含むことを可能にする。
【００３０】
[0030]ＣＰＵ４１０からメモリアクセス要求４６５を受け取ると、ブリッジ４０５は、メモリアクセス要求４６５に含まれているメモリアドレスを、レジスタ４４０及び４４５の値で定義された物理的メモリアドレスの範囲と比較する。メモリアドレスがブロードキャストアパーチャー内であり、例えば、ブロードキャストベースレジスタ４４０の値と、ブロードキャストベースレジスタ４４０及びブロードキャストサイズレジスタ４４５の値の和との間である場合には、ブリッジがメモリブロードキャストオペレーションを開始する。更に別の実施の形態では、ブロードキャストアパーチャーに関連したマスク値を使用して、メモリアクセス要求が各グラフィックデバイスに関連付けられたメモリの指定部分にオーバーライトすることを防止する。
【００３１】
[0031]別の実施の形態では、ブリッジ４０５は、ダイレクトメモリアクセス（ＤＭＡ）コントローラ（図示せず）と接続される。この実施の形態では、ＣＰＵ４１０は、ブロードキャストアパーチャーへデータを転送するようにＤＭＡコントローラに命令する。ＤＭＡコントローラは、ＣＰＵ４１０により与えられる命令に従って、ソースメモリアドレスからデータを検索し、そのデータを宛先メモリアドレスに書き込む。ブリッジ４０５は、上述したように、ＤＭＡ要求における宛先アドレスを検査して、データがブロードキャストアパーチャー内にあるかどうか求める。
【００３２】
[0032]ブロードキャストアパーチャー内に入るメモリアドレスについては、内部データバス及びブロードキャストロジックエレメント４６０がメモリアドレスの上位アドレスビットを取り除き、二つのユニキャストメモリアクセス要求を形成する。各メモリアクセス要求は、レジスタ４５０又は４５５におけるユニキャスト物理的メモリアドレス値を、その除去されたアドレスビットの代用とする。更に別の実施の形態では、ブリッジ４０５は、３２以上のアドレスビットを可能にし、例えば、４８ビット又は６４ビットのアドレッシング機構を可能にする。アドレスビットの数が多いと、ブロードキャストアパーチャーによるアドレス空間の消費の効果が小さくなる。この実施の形態の実装では、ベースアドレスレジスタ４５０及び４５５は、ユニキャスト物理的メモリアドレスに対する上位アドレスビット、例えば、ビット４７−１６しか含まない。メモリアドレスの下位１６ビットを予約することによって、ユニキャスト物理的メモリアドレスが、多くの典型的なＣＰＵで要求されるように、６４ＫＢ値に調整されることを保証する。
【００３３】
[0033]二つのユニキャストメモリ要求は、次いで、グラフィックバス４２５を介して各々のグラフィックデバイス４２０及び４３０へ伝送される。ある実施の形態では、グラフィックバス４２５は、二つの独立した通信チャンネル４２８及び４３２を備え、ユニキャストメモリアクセス要求を並列に発行することを可能にする。或いは又、グラフィックバス４２５が単一の通信チャンネルを備え、ブリッジがユニキャストメモリアクセス要求を連続して発行する。グラフィックバス４２５の実装及びグラフィックデバイスの数に関わらず、システム４００は、全てのグラフィックデバイスと通信するために単一のメモリアクセス要求を発行するようにＣＰＵ４１０に要求するだけである。これは、多数のグラフィックデバイスがＣＰＵバス４１５を飽和させるのを防止し、冗長なメモリ転送を実行するための無駄なＣＰＵサイクルを回避する。
【００３４】
[0034]ブリッジ４０５が適切に機能するためには、レジスタ４４０、４４５、４５０及び４５５が適切に設定されねばならない。図５は、本発明の実施形態に係り、二つ以上のグラフィック処理サブシステムに対して並列にデータを伝送するブリッジを構成するシステム５００を示す。システム５００の初期化中に、システムＢＩＯＳは、ブリッジ５０５並びにグラフィックデバイス５１０及び５１５を検出する。ＢＩＯＳは、物理的メモリアドレススペース５２０を設定して、ブリッジ５０５に対するブロードキャストアパーチャー５２２と、グラフィックデバイス５１０及び５１５に対するユニキャストアパーチャー５２４及び５２６とを各々割り当てる。一実施形態では、ブロードキャストベースアドレスは、ＢＩＯＳにより決定され、ブロードキャストアパーチャーサイズは、システム５００のＣＭＯＳに記憶されたコンフィギュレーション情報から決定される。
【００３５】
[0035]システムの初期化に続いて、マイクロソフトウインドウズのようなオペレーティングシステムがロードされる。オペレーティングシステムの初期化中に、物理的メモリアドレス空間５２０に定義されたアパーチャーが、オペレーティングシステムにより定義された仮想メモリアドレス空間５３０へとマップされる。この仮想メモリアドレス空間５３０では、仮想ブロードキャストアパーチャー５３２が物理的ブロードキャストアパーチャー５２２に対応し、仮想ユニキャストアパーチャー５３４及び５３６が物理的ユニキャストアパーチャー５２４及び５２６に各々対応する。
【００３６】
[0036]オペレーティングシステムの初期化に続いて、物理的アドレス空間５２０及び仮想アドレス空間５３０の両方におけるブロードキャストアパーチャーの空間が、システムにより割り当てられる。しかしながら、ブリッジ５０５のコンフィギュレーションレジスタは、適当な値を含まず、従って、ブロードキャストアパーチャーは機能しない。ブロードキャストアパーチャーを有効にするために、ブリッジドライバ５５０がオペレーティングシステムによりロードされる。ブリッジドライバ５５０は、ブロードキャストアパーチャーベースアドレス及びブロードキャストアパーチャーサイズ値をシステムから自動的に検索し、ブリッジ５０５の適切なレジスタを設定する。
【００３７】
[0037]一実施の形態において、多数のグラフィックデバイス用の並列動作モードは、デフォールトにより無効にされる。これによって、ユーザが希望する場合に、多数のグラフィックデバイスが異なるディスプレイを駆動することを可能にする。ユーザ（又はアプリケーション）が単一ディスプレイにおいてグラフィック性能の向上を希望する場合には、ユーザ又はアプリケーションは、グラフィックドライバ５４０に信号を送り、並列動作モードを有効にする。この要求に応答して、グラフィックドライバ５４０は、システムのグラフィックデバイスに対するユニキャストアパーチャーベースアドレス値を検索する。一実施の形態では、これらの値は、物理的アドレス空間５２０におけるユニキャストアパーチャー５２４及び５２６に対する物理的アドレス値である。グラフィックドライバ５４０は、ＩＯＣＴＬのようなオペレーティングシステム通信チャンネルを使用して、これらベースアドレス値５４５をブリッジドライバ５５０へ伝送する。ブリッジドライバ５５０は、ユニキャストアパーチャー５２４及び５２６に対するベースアドレス値５４５を受け取ると、これらの値をブリッジ５０５へ伝送し、これによって、ブリッジ５５０のＢＡＲ０及びＢＡＲ１レジスタの値を設定し、ブロードキャストアパーチャーを有効にする。同様に、グラフィックドライバ５４０からの要求があると、ブリッジドライバ５５０は、ブロードキャストアパーチャーを無効にすることができる。
【００３８】
[0038]一実施の形態においては、ブリッジドライバ５５０は、ブリッジ５０５を設定して、ブロードキャストアパーチャーを有効にするのに使用されるだけである。ブロードキャストアパーチャーが有効にされると、グラフィックドライバ５４０は、仮想ブロードキャストアパーチャー５３２と直接通信することができ（５６０）、仮想ブロードキャストアパーチャー５３２は、次いで、オペレーティングシステムによって物理的ブロードキャストアパーチャー５２２へとマップされる（５６５）。物理的ブロードキャストアパーチャー５２２は、次いで、通信５７０をブリッジ５０５へ向けて行い、ブリッジ５０５が、次いで、ユニキャストアパーチャー５２４及び５２６を介して、各々グラフィックデバイス５１０及び５１５へ別々の通信を発する。
【００３９】
[0039]図６Ａ及び６Ｂは、本発明の実施の形態で実装できる二つの異なる並列レンダリング技術を示す。図６Ａは、分割フレームレンダリング技術を示しており、当該分割フレームレンダリング技術では、フレーム６００の異なる部分が異なるグラフィックデバイスに割り当てられる。例えば、部分６０５は、第１グラフィックデバイスに割り当てられ、部分６１０は、第２グラフィックデバイスに割り当てられる。部分６０５及び６１０は、各々第１及び第２のグラフィックデバイスにおいて並列にレンダリングされ、最終的な出力画像へと合成される。
【００４０】
[0040]図６Ｂは、交互フレームレンダリング技術を示しており、当該交互フレームレンダリング技術では、連続するフレームが異なるグラフィックデバイスに割り当てられる。例えば、フレーム６５０は、第１グラフィックデバイスに割り当てられ、フレーム６５５は、第２グラフィックデバイスに割り当てられる。第１及び第２のグラフィックデバイスは、それらの各フレームを並列にレンダリングし、レンダリングされたフレームは続けて表示される。
【００４１】
[0041]図７Ａ及び７Ｂは、本発明の実施形態に係る並列レンダリング技術の実装例を示す。図７Ａは、ディスプレイ装置７１５に接続されたマスターグラフィックデバイス７０５とスレーブグラフィックデバイス７１０とを有する実装例７００を示す。マスター及びスレーブグラフィックデバイス７０５及び７１０は、グラフィックバス７２０を介してコンピュータシステムの残部に接続される。この実装例では、スレーブグラフィックデバイス７１０からのレンダリングされた画像が交互フレームレンダリングの場合に、又はレンダリングされた画像の一部分が分割フレームレンダリングの場合に、デジタルビデオ接続７２５を介して、マスターグラフィックデバイス７０５へ伝送される。マスターグラフィックデバイス７０５は、デジタルビデオ接続７２５を介して受け取った画像（又はその一部分）をディスプレイ装置７１５へ出力する。分割フレームレンダリングの場合には、マスターグラフィックデバイス７０５は、受け取った画像を、マスターグラフィックデバイス７０５によりレンダリングされた画像の一部分と合成する。
【００４２】
[0042]図７Ｂは、ディスプレイ装置７６０に接続されたマスターグラフィックデバイス７５５、並びに追加のスレーブグラフィックデバイス７６５、７７０及び７７５を有する実装例７５０を示す。グラフィックデバイス７５５、７６５、７７０及び７７５は、並列に動作して、出力画像の異なる部分又は異なる出力画像をレンダリングするものであり、コンピュータシステムの残部に接続され、グラフィックバス７８０を介して互いに接続される。出力画像又はその一部分のレンダリングに続いて、実装例７５０は、ブリット(blit)コマンドを使用して、出力画像又はその一部分を、スレーブグラフィックデバイス７６５、７７０及び７７５から、グラフィックバス７８０を介して、マスターグラフィックデバイス７５５に関連付けられたディスプレイメモリへコピーする。コピーされた画像は、次いで、マスターグラフィックデバイス７５５によってディスプレイ装置７６０に表示される。分割フレームレンダリングの場合には、マスターグラフィックデバイス７５５は、スレーブグラフィックデバイス７６５、７７０及び７７５からの画像の部分を、マスターグラフィックデバイス７５５によってレンダリングされた画像の一部分と合成する。
【００４３】
[0043]更に別の実施の形態では、分割フレームレンダリングは、出力画像を、レンダリングの複雑さに逆比例するサイズ（例えば、ピクセルの数）を有する部分に分割することによって、各グラフィックデバイスに割り当てられる負荷をバランスさせる。グラフィックバス７８０を介してブリットオペレーションによって送信されるデータの量を最小にするために、ある実施の形態では、サイズが最も小さい最も複雑な部分をスレーブグラフィックデバイス７６５、７７０及び７７５でレンダリングする。これらの部分は、サイズが最も小さいので、グラフィックバス７８０を介して移動する必要のあるデータの量が最小にされる。別の実施形態では、レンダリングされた画像をマスターグラフィックデバイス７５５へ転送する前に、アンチエイリアシングが各グラフィックデバイスによりその各々のレンダリングされた画像又はその一部分に局所的に適用される。この実施の形態は、グラフィックバス７８０を介して送信されるピクセルの数、ひいては、データの量を減少する。
【００４４】
[0044]図８は、本発明の一実施の形態に係り、四つのグラフィック処理ユニットが並列に動作するカスケード型実装例８００を示す。この実装例８００は、ＣＰＵバスを介してブリッジ８１０に接続されたＣＰＵ８０５を備えている。上述したように、ブリッジ８１０は、ブロードキャストアパーチャーによって多数のグラフィックデバイスへのデータ転送を可能にすることを容易にする。ここでは、グラフィックデバイス８２０及び８２５がグラフィックバス８１５を介してブリッジ８１０に接続される。グラフィックデバイス８２０は、グラフィック処理ユニット８４０及び８４５へデータを転送するようなっている内部ブリッジ８３０を備えている。グラフィックデバイス８２５は、同様のコンポーネントを備えている。グラフィックデバイス８２０及び８２５の内部ブリッジは、二重のグラフィック処理ユニットを隠し、これによって、ブリッジ８１０からは、グラフィックデバイス８２０及び８２５の各々が単一のグラフィック処理ユニットしかもたないように見えるようにする。
【００４５】
[0045]実装例８００は、分割フレームレンダリング及び交互フレームレンダリングの組み合せを使用して、レンダリング性能を改善する。第１のフレームは、グラフィックデバイス８２０によってレンダリングされ、第２のフレームは、グラフィックデバイス８２５によってレンダリングされる。グラフィックデバイス８２０内では、グラフィック処理ユニット８４０及び８４５が並列に動作して、割り当てられたフレームの異なる部分をレンダリングする。同様に、グラフィックデバイス８２５のグラフィック処理ユニットも並列に動作して、第２のフレームの異なる部分をレンダリングする。レンダリングされたフレームは、実装例７００又は７５０で述べたように、グラフィックデバイス８２０又は８２５の何れかが、ディスプレイ装置に接続されたマスターグラフィックデバイスとして働くことで、表示される。
【００４６】
[0046]本発明は、システムリソースを過度に消費せずに多数のグラフィックデバイスへデータを転送するための効率的なシステムを提供する。典型的な実施の形態においては、多数のグラフィックデバイスへレンダリングコマンド及びデータを転送するのに単一のメモリアパーチャーしか必要とされない。本発明を、特定の実施の形態及び実施例に関して説明したが、それらは、単なる例示に過ぎず、本発明を何ら限定するものではない。また、本発明を多数の並列レンダリング機構を参照して説明したが、本発明は異なるハードウェア装置を使用して画像をレンダリングするアプリケーションにも使用できる。例えば、あるコンテンツは、セキュリティのため、又はデジタル権利の管理のために、暗号化されてもよい。暗号解読可能なグラフィックデバイスを、暗号化されたコンテンツをレンダリングするようにプログラムする一方で、システム内の他のグラフィックデバイスは、非暗号化コンテンツをレンダリングするようにしてもよい。従って、本発明の範囲は、特許請求の範囲のみにより決定されるものとする。
【図面の簡単な説明】
【００４７】
【図１】本発明の実施の形態を実施するのに適したコンピュータシステムのブロック図である。
【図２】並列に動作する二つのグラフィック処理サブシステムを含むコンピュータシステムのブロック図である。
【図３】本発明の実施の形態に係り、二つ以上のグラフィック処理サブシステムに対して並列にデータを送受するシステムを示す図である。
【図４】本発明の実施の形態に係り、二つ以上のグラフィック処理サブシステムに対して並列にデータを送受するブリッジを示す図である。
【図５】本発明の実施の形態に係り、二つ以上のグラフィック処理サブシステムに対して並列にデータを送受するブリッジを構成するシステムを示す図である。
【図６Ａ】本発明の実施の形態で実施できる並列レンダリング技術を示す図である。
【図６Ｂ】本発明の実施の形態を用いて実装可能な異なる並列レンダリング技術を示す図である。
【図７Ａ】本発明の実施の形態に係る並列レンダリング技術の実装例を示す図である。
【図７Ｂ】本発明の実施の形態に係る並列レンダリング技術の実装例を示す図である。
【図８】本発明の実施の形態に係り、並列に動作する四つのグラフィック処理ユニットを有するカスケード型実装例を示す図である。
【図１】
2007528062.tif 000003
【図２】
2007528062.tif 000004
【図３】
2007528062.tif 000005
【図４】
2007528062.tif 000006
【図５】
2007528062.tif 000007
【図６Ａ】
2007528062.tif 000008
【図６Ｂ】
2007528062.tif 000009
【図７Ａ】
2007528062.tif 000010
【図７Ｂ】
2007528062.tif 000011
【図８】
2007528062.tif 000012
【国際調査報告】
2007528062.tif 000013
2007528062.tif 000014