(57)【要約】高速リング・トポロジーであって、一実施の形態では、２種類の基本型チップ、すなわち「描画」チップのＬｏｏｐＤｒａｗ（１１０）、および「インターフェース」チップのＬｏｏｐＩｎｔｅｒｆａｃｅ（１０５）を必要とする。これらのチップはそれぞれ、同一の高速のポイントからポイントへの一方向入出力リング相互接続インターフェース、すなわち、ＬｏｏｐＬｉｎｋ（１２５）をサポートする一組のピンを有する。ＬｏｏｐＤｒａｗ（１１０）チップは広帯域幅のローカルメモリサブシステムを形成する標準メモリ（１１５）のいくつかに別のピンを用いて接続される。ＬｏｏｐＩｎｔｅｒｆａｃｅチップ（１０５）は、別のピンを用いて、高速ホストコンピュータのホストインターフェース、少なくとも一つのビデオ出力インターフェース、および場合によっては他のＬｏｏｐＩｎｔｅｒｆａｃｅチップ（１０５）への非ローカル相互接続も追加してサポートする。
2005521178.tif 000002
【特許請求の範囲】
【請求項１】
グラフィックスをレンダリングする方法であって、
グラフィックスシーンのレンダリングに必要な情報を受け取るステップと、
前記受け取ったグラフィックスコマンドに応答して、前記グラフィックスシーンの一部のレンダリングに必要な情報を、ループ内に編成される複数のグラフィックス用チップのうちの一つに送るステップとを含む方法。
【請求項２】
前記受け取るステップは、前記ループ内のインターフェース用チップにより実行される、請求項１の方法。
【請求項３】
前記送るステップは、前記ループ内のインターフェース用チップにより実行される、請求項１の方法。
【請求項４】
前記送るステップは、前記ループ内の多数の前記グラフィックス用チップのそれぞれに、グラフィックスプリミティブコマンドを分配するステップを含む、請求項１の方法。
【請求項５】
前記送るステップは、グラフィックス状態情報を送るステップを含む、請求項１の方法。
【請求項６】
前記グラフィックス用チップはそれぞれ、フレームバッファのインターリーブされた部分を含む、請求項１の方法。
【請求項７】
前記送るステップは、負荷バランス法を用いて、複数のグラフィックス用チップのどのサブセットが、前記グラフィックスシーンの一部のレンダリングに必要な前記情報を受け取るかを決定するインターフェース用チップを更に備える、請求項１の方法。
【請求項８】
複数のグラフィックス用チップの一つが、前記グラフィックスシーンのレンダリングに必要な前記情報の一部を受け取り、受け取りを行った前記グラフィックス用チップが最終宛先でない場合、前記ループ内の次のグラフィックス用チップにそれを渡す、請求項１の方法。
【請求項９】
ループ内のグラフィックス用チップにより実行される方法であって、
前記グラフィックスシーンの一部のレンダリングに必要な情報を受け取るステップと、
前記受け取った情報に対するレンダリング処理の一部を実行するステップと、
前記ループ内の複数の他のグラフィックス用チップの少なくとも一つに前記実行ステップの結果を送って、前記レンダリング処理を継続するステップとを含む方法。
【請求項１０】
前記送るステップは、前記インターフェース用チップから前記グラフィックス用チップへグラフィックスプリミティブコマンドを送るステップを含む、請求項９の方法。
【請求項１１】
前記送るステップは、前記インターフェース用チップから前記グラフィックス用チップへの状態情報を含む、請求項９の方法。
【請求項１２】
前記受け取った情報は、プリミティブオブジェクトをレンダリングする情報を含む、請求項９の方法。
【請求項１３】
前記インターフェース用チップは、前記ループ内の複数のグラフィックス用チップのサブセットを割り当てて、前記グラフィックスシーンの前記一部をレンダリングする、請求項９の方法。
【請求項１４】
前記レンダリング処理の前記一部は、クリップチェック操作を含む、請求項９の方法。
【請求項１５】
前記レンダリング処理の前記一部は、必要に応じてクリッピング操作を含む、請求項９の方法。
【請求項１６】
前記レンダリング処理の前記一部は、ベルテックスシェーディングを含む、請求項９の方法。
【請求項１７】
前記レンダリング処理の前記一部は、スキャン変換を含む、請求項９の方法。
【請求項１８】
前記レンダリング処理の前記一部は、生成した各ピクセルにプログラマブルピクセルシェーダ処理を施すステップを含む、請求項９の方法。
【請求項１９】
前記レンダリング処理の前記一部は、生成した各マイクロポリゴンベルテックスにプログラマブルシェーダ処理を施すステップを含む、請求項９の方法。
【請求項２０】
前記レンダリング処理の前記一部は、テクスチャ操作を含む、請求項９の方法。
【請求項２１】
前記レンダリング処理の前記一部は、転移マッピングを含む、請求項９の方法。
【請求項２２】
前記レンダリング処理の前記一部は、高次表面のモザイク処理を含む、請求項９の方法。
【請求項２３】
前記実行ステップの結果を送る前記ステップは、前記投射されたグラフィックスプリミティブの画面空間境界を、Ｚ面の式とともに、全ての前記グラフィックス用チップにマルチキャストするステップを含む、請求項９の方法。
【請求項２４】
前記グラフィックス用チップはそれぞれ、フレームバッファのインターリーブされた部分を含む、請求項９の方法。
【請求項２５】
前記グラフィックス用チップ一つにより実行される前記レンダリング継続処理が、前記一つのグラフィックス用チップにより保有される前記フレームバッファのインターリーブされた部分にレンダリングする、請求項２４の方法。
【請求項２６】
前記フレームバッファの前記インターリーブされた部分へのレンダリングが、サンプルフィル操作を実行するステップを含む、請求項２５の方法。
【請求項２７】
前記グラフィックス用チップの前記インターリーブされたフレームバッファから情報を増分的に収集することにより、ビデオ出力信号を生成ステップを更に含む、請求項２４の方法。
【請求項２８】
前記収集情報が、アンチエイリアス処理を施される、請求項２７の方法。
【請求項２９】
前記アンチエイリアス処理が、各グラフィックス用チップ上で増分的に実行される、請求項２７の方法。
【請求項３０】
前記ループ内のインターフェース用チップは、前記グラフィックス用チップから集まる情報の生成を開始する、請求項２７の方法。
【請求項３１】
各グラフィックス用チップは、テクスチャ情報のコピーを有する、請求項９の方法。
【請求項３２】
前記テクスチャ情報がテクスチャマップを含む、請求項３１の方法。
【請求項３３】
前記レンダリング処理の後、テクスチャとして用いるために、前記グラフィックス用チップへレンダリングされたイメージを送るステップを更に含む、請求項２７の方法。
【請求項３４】
ループ内のグラフィックス用チップにより実行されるグラフィックスの方法であって、
グラフィックスプリミティブをレンダリングするためのグラフィックスプリミティブコマンドを、前記ループ内のインターフェース用チップから、現在のグラフィックス用チップが受け取って、前記グラフィックスプリミティブコマンドが前記現在のグラフィックス用チップに宛てた意図がない場合、前記ループ内の次のグラフィックス用チップに、前記グラフィックスプリミティブコマンドを渡すステップと、
前記グラフィックスプリミティブコマンドが前記現在のグラフィックス用チップに宛てた意図をもつ場合、前記現在のグラフィックス用チップがレンダリング処理の一部を実行するステップと、
前記実行ステップの結果を、複数の他のグラフィックス用チップの少なくとも一つに送って前記レンダリング処理を継続するステップと、
前記グラフィックス用チップのインターリーブされたフレームバッファから情報を増分的に収集することにより、前記インターフェース用チップの前記開始時に、ビデオ出力信号を生成するステップとを含む方法。
【請求項３５】
前記実行ステップは、前記グラフィックス用チップに関連するメモリからテクスチャデータを得る、請求項３４の装置。
【請求項３６】
２種類のチップだけで形成されるループアーキテクチャであって：
各グラフィックス用チップが、フレームバッファのインターリーブされた部分を有する、ループ内の複数のグラフィックス用チップと、
前記ループの外部通信および前記グラフィックス用チップとの通信を扱う、前記ループ内の少なくとも一つのインターフェース用チップとを備えるアーキテクチャ。
【請求項３７】
前記複数のグラフィックス用チップはそれぞれ、テクスチャ情報を含む関連メモリを有する、請求項３６のアーキテクチャ。
【請求項３８】
前記複数のグラフィックス用チップはそれぞれ、前記フレームバッファのインターリーブされた部分を含む関連メモリを有する、請求項３６のアーキテクチャ。
【請求項３９】
前記ループは単一リングの仕組みを有する、請求項３６のアーキテクチャ。
【請求項４０】
前記ループは２重リングの仕組みを有する、請求項３６のアーキテクチャ。
【請求項４１】
少なくとも一つのショートカット接続を含む、請求項３６のアーキテクチャ。
【請求項４２】
前記レンダリング処理の前記一部は、変換操作により前記グラフィックスプリミティブを処理するステップを含む、請求項９の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータ・グラフィックスの分野に関し、詳細には、３Ｄグラフィックス・ハードウェア・アクセラレータに関する。
【背景技術】
【０００２】
従来の汎用コンピュータはそのほとんどが、人であるユーザと相互作用する視覚的フィードバックとして何らかの物理的形態をとるイメージディスプレイ装置へ、コンピュータに格納された情報または計算された情報を受け渡す何らかのハードウエア形態をとるサブシステムを有する。数十年前から、コンピュータに接続されるこれら物理的イメージディスプレイ装置および専用電子回路は、例えば、点滅灯、「テレタイプガラス（ｇｌａｓｓ  ｔｔｙｓ）」、またはオシロスコープ等、非常に原始的であったが、次第に高度化して、物理的イメージディスプレイ装置を駆動する専用ハードウエアサブシステム、すなわちグラフィックスシステムとして、著しく複雑で特殊化された計算システムにまで独自に成長した。事実、従来のグラフィックスシステムを構築するために用いる現行「グラフィックスチップ」の多くが、汎用コンピュータ自体の強力な単一チップＣＰＵよりも多くのトランジスタを含んでいる。
【０００３】
具体的には、グラフィックスシステムは、ホストコンピュータを物理的イメージディスプレイ装置へ接続するだけでなく、２Ｄレンダリングや３Ｄレンダリングを含め、複雑化する一方のレンダリング操作をホストコンピュータからオフロードする。特殊タスク専用のハードウェアアクセラレータは、汎用コンピュータ上のソフトウエアで同一タスクを完全に実行する上で、性能面および／または価格面での利点を持っているのが普通である。もちろん、ここでは、産業およびコンシューマ用ホームエンターテイメントの両セグメントを含む多くの市場区分における２Ｄおよび３Ｄコンピュータ・グラフィックスの場合の特殊タスクを実行する顧客の需要頻度が十分にあると仮定している。
【０００４】
初期のグラフィックスシステムは、２Ｄの線を描いたり、テキストだけという単純なジョブであったかもしれないが、より進歩した高性能グラフィックスシステムは、三次元オブジェクトの高度な表現の、ホストコンピュータからの取り込みを担うことができる、実際のフォトンがどのようにオブジェクト群を照らしているか、そして、かかるオブジェクトのイメージが実際のカメラ、あるいは実際の人の眼の結像面にどのように形成されるかを、近似的にシミュレーション計算するジョブの多くを実行する。言い換えると、最新のグラフィックスシステムは３Ｄレンダリングが可能である。従って、一般的な「グラフィックスシステム」という呼称に替えて、「３Ｄグラフィックスハードウェアアクセラレータ」と称する。最終的な合成「イメージ面」は、３Ｄグラフィックスハードウェアアクセラレータから、人であるユーザが眺めるさまざまな物理的イメージディスプレイ装置へ送信されるビデオ出力信号となる。これらの物理的イメージディスプレイ装置は、直視型ＣＲＴ、直視型ＬＣＤパネル、直視型プラズマパネル、直視型エレクトロルミネセンスディスプレイ、ＬＥＤ型ディスプレイ、ＣＲＴ型プロジェクタ、ＬＣＤ型プロジェクタ、ＬＣＯＳ型プロジェクタ、ＤＭＤ型プロジェクタ、レーザー型プロジェクタ、および頭部装着型ディスプレイ（ＨＭＤ）を含むが、これらに限定されるものではない。
【０００５】
ますます強力になる３Ｄグラフィックスハードウェアアクセラレータの最近の開発ペースは、従前のアーキテクチャ概念で可能であった以上に、３Ｄオブジェクトのより豊かなイメージを生成できる３Ｄグラフィックスハードウェアキテクチャを構築するための新しいアーキテクチャの概念を継続的に発展させる必要性に拍車をかけるものであった。それまでは最高性能であった３Ｄグラフィックスハードウェアアーキテクチャの構築に用いたアーキテクチャ概念は、はるかに強力な半導体チップに基づく新しい基本要素を用いる場合に、僅か数年後には、もはや適用しないのである。同時に、個々のチップの開発コストが増加することから、高度に拡張性のあるアーキテクチャ、すなわち多様な価格／性能上の特徴を持つ商業上実現可能な幅広い製品を同一の小さなチップセット構成で可能となすアーキテクチャとしての、３Ｄグラフィックスハードウェア・アクセラレータのアーキテクチャを見出すことが望まれる。
【０００６】
高性能３Ｄグラフィックス・ハードウェア・アクセラレータ製品としての価値を備え、次の数十年でサポートすることが強く望まれる特徴を具体的に２つ挙げると、完全にプログラム可能なシェーディングと、高品位アンチエイリアス化である。高品位アンチエイリアス化は、ほとんどの現行３Ｄグラフィックスハードウェアアクセラレータで発生するいわゆる「ジャギー」を低減または除去することにより、よりリアルに見えるイメージを生成する。この高品位を達成するには、３Ｄグラフィックスハードウェアアクセラレータが、レンダリング対象イメージのピクセル毎に大量のサンプルを内部に保存しなければならないもっと複雑なフレームバッファをサポートする必要がある。アーキテクチャは、ビデオ出力信号が生成される前に、或るポイントで、これらサンプルへの強力なアンチエイリアスフィルタリングもサポートしなければならない。
【０００７】
リアルタイム相互作用（インタラクション）のための従来型３Ｄグラフィックスハードウェアアクセラレータはそのほとんどが、ピクセル毎に複数サンプルを保存するためのサポートを何ら行わないか、あるいは、例えば２または４、場合によっては８等、非常に限られたサンプル密度しかサポートしない。これらのシステムは、ビデオ出力信号生成中に、これらサンプルの最小限のアンチ・エイリアス・フィルタリングだけをサポートする。例えば、アンチ・エイリアス・フィルタは一般的に、１×１ピクセルのボックスのフィルタだけに限られる。将来のシステムでは、ピクセル当たり１６サンプル、および３２、４８サンプル、先進的な場合であれば、ピクセル当たり６４サンプル以上をサポートできれば極めて有益である。これらのサンプル密度は、例えばＮＴＳＣ等の低解像度ビデオ信号フォーマットだけでなく、例えば、ＨＤＴＶおよび２メガピクセルのコンピュータビデオ信号フォーマット等、高解像度フォーマットについてもサポートしなければならない。所望の信号処理は、負のローブと、先進的な場合であれば例えば８×８ピクセル以上の大面積アンチエイリアスフィルタとを有する少なくとも４×４ピクセルキュービックフィルタのアンチエイリアスフィルタをサポートすることである。
【０００８】
プログラマブルシェーディングは、３Ｄソフトウエアレンダリングシステムにより数１０年にわたり用いられてきた手法であり、そこでは一つの最終レンダリングイメージを一度で生成するために、汎用コンピュータを何時間も何日間も走らせる。これらは最も現実的な３Ｄコンピュータ・グラフィックスイメージを生成するシステムであり、その使用は、多くの映画の特殊効果を創り出す上で、今や不可欠である。この概念としては、いわゆる「グラフィックスパイプライン」の多くが、変えることのできない固定機能を有しているが、パイプライン内の特定の「キー」点にアプリケーションが独自に用いるグラフィックスアルゴリズムのオプションがある、ということである。これは、最終レンダリングイメージのより高いリアル感をサポートする。例えば、警察官、消防士、および救急医療士の災害訓練では、訓練シナリオで緊急作業員の視認性を低下させる際に、煙や塵埃の効果を正確にモデル化することが非常に重要な場合がある。プログラマブルシェーダは、３Ｄグラフィックスハードウェアアクセラレータの映像出力カスタム化に適した手法として浮上した。
【０００９】
リアルタイムの相互作用のための従来の３Ｄグラフィックスハードウェアアクセラレータは緒についたばかりであり、非常に限定されたプログラマブルシェーディングのサポートを提供するに過ぎない。現在市販されている最も高度な３Ｄグラフィックスハードウェアアクセラレータチップは、グラフィックスパイプラインすなわちピクセルシェーダの最重要点で８命令ステップをサポートするに過ぎず、任意の条件付き命令ステップは不可能である。最終ユーザが望む柔軟性と品位を与えるには全く不十分である。将来のシステムでは、例えば、条件付きステップは無論のこと、数１００から数１０００オーダーの命令ステップで、より一般的なプログラマブルシェーダをサポートできることが強く望まれている。
【００１０】
例えば、大部分が家庭ゲームコンシューマ市場を狙った従来の最低価格帯の３Ｄグラフィックスハードウェアアクセラレータでの、システムアーキテクチャの問題は、大部分の３Ｄグラフィックスハードウェアアクセラレータを単チップに集約することで単純化されている。バスと帯域幅の問題は、チップ内では複数チップ間の場合ほど重要ではなく、使用するアルゴリズム全体の単純さが保たれる。その結果、低価格単チップの処理能力だけに限られはするが、コンシューマ市場価格でそれなりの強力なシステムを構築できるようになってきている。
【００１１】
例えば、自動車や航空機の設計、医療分野での視覚化、石油化学工業分野での視覚化、一般科学分野での視覚化、フライトシミュレーションおよび訓練、デジタルコンテンツ創造（アニメーションおよびフィルム編集）、映像放送などのプロ市場を狙った中級および高級３Ｄグラフィックスハードウェアアクセラレータでの顧客要求は、例えば、システム内に多数のチップを併せた計算パワーを用いなければならないなど、単チップを取り付けるよりもっと複雑な３Ｄグラフィックスハードウェアアクセラレータを構築することでしか満たされない。こうした市場向けの、大部分の従来システムは、その構築に多数の異なるカスタムチップを必要とし、普通は、多数の様々なカスタム相互接続またはバスを用いて、これらチップを互いに接続し、機能的なシステムを作り上げている。これら多数の相互接続またはバスは、チップパッケージのピン数の増加およびプリント基板上の配線やコネクタによるコストと、いくつかの別々のカスタム相互接続バスプロトコルを設計して試験する費用との両方で、構築にコストがかかる。通常の動作条件で、これらの相互接続またはバスがピーク速度で動作するのは僅かであり、他のバスが利用される。従って、これらの相互接続またはバスの総合帯域幅の多くは、用いたとしても希であり、潜在的に無駄な製品技術および／または製品コストである。
【００１２】
現在の３Ｄグラフィックスハードウェアアクセラレータ市場の最低価格帯は、市場の大部分が家庭コンシューマ用３Ｄビデオゲーム用途であることから、極めて価格主導型である。これらの３Ｄグラフィックスハードウェアアクセラレータは、５００ドル未満のＰＣアドインカード、または４００ドル未満のゲームコンソールの集積部品として販売されている。この価格ポイントが示す低価格部品を達成するために、この市場向け３Ｄグラフィックスハードウェアアクセラレータのアーキテクチャの大部分は、少数のＤＲＡＭチップを取り付けた単体グラフィックスアクセラレータＡＳＩＣでできている。他のチップがあるとすれば、それは汎用プロセッサまたはオーディオアクセラレーションチップであり、フレームバッファおよびテクスチャメモリを含むＤＲＡＭチップへは直接インターフェースされない。この単一グラフィックスアクセラレータＡＳＩＣベースのシステムの最良の３Ｄレンダリング性能は、この価格帯でＡＳＩＣに取り付けることができるピン数の制限を受け、３Ｄレンダリングにどれほどの帯域幅が利用可能かにより、そしてＡＳＩＣに取り付けるためにこの本数以下のピンを用いるＤＲＡＭチップの帯域幅の制限により、先に記載した制約を受ける。これらのシステムでは、取り付けられる同一ＤＲＡＭを用いて、２Ｄテクスチャ、レンダリングピクセル（つまりサンプル）、およびフェッチピクセルを取り込み、同一グラフィックスアクセラレータＡＳＩＣの別のアナログおよび／またはデジタル式ビデオ出力インターフェースピンを介してビデオ信号を生成する。
【００１３】
３Ｄグラフィックスアクセラレータ市場の現在の中級価格帯は、まだいくらか価格に敏感であるが、それ以上に特徴および性能に敏感である。プロ用ＰＣまたはワークステーション用３Ｄグラフィックスハードウェアアクセラレータのアドインカードそのものの価格は、１８００〜６０００ドルの範囲にある。より高性能を達成するには、これら３Ｄグラフィックスハードウェアアクセラレータのアーキテクチャは、適切なフレームバッファを備えるＤＲＡＭチップセットを２Ｄおよび３Ｄテクスチャの格納に用いるＤＲＡＭチップセットから区別しているのが普通である。２Ｄおよび３Ｄテクスチャの格納に用いるＤＲＡＭと、単一３ＤレンダリングＡＳＩＣとの間のグラフィックス動作に利用可能な帯域幅の制限を理由に、３ＤレンダリングＡＳＩＣおよび取り付けられたＤＲＡＭの全サブシステムを複製することが中級価格帯では普通である。このサブシステムの複製をｎ回行うと、レンダリングに必要なテクスチャへの、またはテクスチャからの、ｎ倍の帯域幅が利用可能となる。ここで、高コストを受け入れる代わりに高性能が得られるのは明らかである。フレームバッファへ、またはフレームバッファからの帯域幅はそれ自体、単一チップに取り付けられたピンがサポートできる帯域幅よりも高くする必要があるかもしれない。フレームバッファアクセスをいくつかのＡＳＩＣ間に分配する手法がいくつか開発され、それにより、どのＡＳＩＣも、フレームバッファへの、またはフレームバッファからの全帯域幅の分数比を超えてサポートする必要がなくなる。これら複数のＡＳＩＣおよびメモリサブシステムすべてが協調して３Ｄレンダリングを加速する多様で複雑な手法が開発されてきたが、ここではすべての詳細を取り上げるわけではない。重要なことは、これらのアーキテクチャがすべて、３Ｄレンダリングアルゴリズムの帯域幅利用を多数のＡＳＩＣおよびＤＲＡＭローカルメモリサブシステムに分配する必要性から推進された、ということである。得られたシステムは、別々に設計され、製造されたいくつかの高価なＡＳＩＣを必要とするのが普通である。また、これらのシステムはただ一つの製品構成しか生み出せないのが一般的である。すなわち、典型的には、同じＡＳＩＣを（変更することなく）使って、高価ではあるが高速な製品、または低速ではあるが高価ではない製品を構築することはできない。
【００１４】
３Ｄグラフィックスアクセラレータ市場の現在の高級価格帯は、価格主導というより、性能および特徴によって主導されている。価格帯は、最強の３Ｄグラフィックスハードウェアアクセラレータに対して、６０００ドル（中級品の最高価格）から数１０万ドルまで広がっている。最高級システムのアーキテクチャは、中級システムのアーキテクチャに関連している。多くのＡＳＩＣおよびＤＲＡＭを並列に適用する同じ手法が用いられるが、もっと極端な方法をとる。その類似性を考えると、既存の最高級システムをこれ以上本明細書で詳細に説明する必要はなかろう。
【００１５】
性能の測定尺度の多くは３Ｄグラフィックスではなお改良する必要があるものの、所望のレンダリングフレーム速度は７６Ｈｚで最高に達し、所望の分解能は１９２０×１２００で最高に達し、深度の複雑さは、６を過ぎてゆっくりと成長してゆき、そしてサンプル密度は１６で成長をほぼ停止している。これが意味することは、ピクセルフィル速度が毎秒１０億ピクセルを過ぎてゆっくりと成長していくということだけである（毎秒１６０億サンプルのサンプルフィル速度）。従って、拡張可能なグラフィックスアーキテクチャは、拡張対象を処理するというより、ピクセルフィル速度を一定として扱うことができる。
【００１６】
さらに、６×ビデオ出力信号ビデオフォーマットピクセル速度のピクセルフィル速度で書き込むことができず、同じ６倍の速度で読み出すことができないフレームバッファ格納は、格納としては依然用いることができないが、テクスチャの格納に用いることができる。アプリケーションは、レンダリング中に直ちに用いることができるように、あらゆる種類のテクスチャが利用可能であることを要求するが、与えられた何れのフレーム上であっても、実際にアクセスされるのは小さなサブセットのテクスチャだけである。従って、低価格のアーキテクチャに偶然起きることを最高級アーキテクチャが取り込むことができれば、例えば、同一のメモリバンクにテクスチャ格納およびフレームバッファ格納をともに持つように編成できれば、ＤＲＡＭを効率的に用いることができよう。
【発明の開示】
【００１７】
一実施の形態では、従来技術のグラフィックス・システムにおける、２個、３個、４個、またはそれ以上の異なるチップ間の専用データ相互接続を持っていたものが、単一の高速リングトポロジーに折り畳まれる。この折り畳みを達成するために、これまで従来システムがとる方法とは僅かに異なるが完全に機能する方法で、グラフィックス・タスクのいくつかを分けなければならない。
【００１８】
一実施の形態では、２種類の基本型チップが必要である。すなわち、「ドローイング」チップ（描画用チップ）であるＬｏｏｐＤｒａｗと、「インターフェース」用のチップであるＬｏｏｐＩｎｔｅｒｆａｃｅである。各チップは同一で高速のポイントツーポイント単方向入出力リング相互接続インターフェースであるＬｏｏｐＬｉｎｋをサポートする一組のピンを有する。ＬｏｏｐＤｒａｗチップは、広帯域幅のローカルメモリサブシステムを形成する標準メモリ（例えばＤＲＡＭ）のいくつかへ、追加のピンを用いて接続される。ＬｏｏｐＩｎｔｅｒｆａｃｅチップは追加のピンを用いて、高速ホストコンピュータのホストインターフェースと、少なくとも一つのビデオ出力インターフェースと、場合によっては他のＬｏｏｐＩｎｔｅｒｆａｃｅチップへの非ローカル相互接続とをサポートする。
【００１９】
フレームバッファ用の記憶・格納は各ＬｏｏｐＤｒａｗチップにわたり分配される。すなわち、各ＬｏｏｐＤｒａｗチップに取り付けられたローカルメモリサブシステムが、特定のピクセル２次元インターリーブ内の全サンプルを格納する。テクスチャマップの格納は、すべてのＬｏｏｐＤｒａｗチップのローカルメモリサブシステムに複製するのが好ましい。
【００２０】
一実施の形態では、ある機能システムを形成するために、少なくとも一個のＬｏｏｐＩｎｔｅｒｆａｃｅチップと、少なくとも４個のＬｏｏｐＤｒａｗチップとを、ＬｏｏｐＬｉｎｋインターフェースを介して互いに接続し、単純なリングを形成する。異なる種類のＬｏｏｐパケットは、このリング廻りの、チップからチップへのＬｏｏｐＬｉｎｋ上を終端条件が満たされるまで流れる。
【００２１】
ＬｏｏｐＩｎｔｅｒｆａｃｅチップ上のホストインターフェース上のホストコンピュータから到着するグラフィック・ドライバコマンドは、そのコマンド自体を利用するか、またはそのコマンドを処理し、Ｌｏｏｐパケットに変換してリングに送り出す。いくつかのコマンドは、リングに沿って大部分のＬｏｏｐＤｒａｗチップへ送られる。他のコマンドは、リング内のＬｏｏｐＤｒａｗチップの特定サブセットに送られる。このサブセットを選ぶ一つの方法は、異なるＬｏｏｐＤｒａｗチップ間の処理をスムーズにするためのＬｏｏｐＩｎｔｅｒｆａｃｅチップにより行われる負荷バランスメカニズムによる。
【００２２】
ＬｏｏｐパケットがＬｏｏｐＤｒａｗチップに入ってくると、そこがＬｏｏｐパケットの宛先であるかどうか（別の宛先であることもある）、Ｌｏｏｐパケット送信終端条件が満たされているかどうかを判定する。終端条件が満たされていなければ、Ｌｏｏｐパケットは、このＬｏｏｐＤｒａｗチップを出てその先へ送られ、そうでなければ送り出されない。ＬｏｏｐＤｒａｗチップがＬｏｏｐパケットの宛先であれば、ＬｏｏｐＤｒａｗチップはＬｏｏｐパケットデータに適切な処理を施す。この処理は、（分配された）フレームバッファへ送る必要があるピクセル値および他のデータを生成する。すると、生成された各ピクセル値に対して、ＬｏｏｐＤｒａｗチップは、ＤｒａｗＰｉｘｅｌのＬｏｏｐパケットをリングに沿って送り出す。ＬｏｏｐＤｒａｗチップが自身に宛てられたＤｒａｗＰｉｘｅｌのＬｏｏｐパケットを受信すると、ＤｒａｗＰｉｘｅｌのＬｏｏｐパケットのピクセルデータを受け取り、ローカルメモリサブシステムの適切なピクセルのどのサンプルが、ジオメトリックグラフィックスプリミティブの境界線の内側にあるかをチェックして調べ、サンプル値をグラフィックスパイプラインのセマンティックにより更新する。別の実施の形態では、これらの試験は、レンダリング中のジオメトリックグラフィックスプリミティブの境界線内包含試験、ピクセル内のサンプルに対して計算されたまたは渡されたｚ値に対してフレームバッファ内に既にあるサンプルのｚ値の試験、フレームバッファステンシル面の試験、別のピクセル混合モードの試験他、の組み合わせを含んでもよい。
【００２３】
フル画面アンチエイリアス化の特徴は、分配されたフレームバッファを含むＬｏｏｐＤｒａｗチップ群にアンチエイリアスフィルタ機能を分配することにより達成するのが好ましい。ビデオフローを開始するために、ＬｏｏｐＩｎｔｅｒｆａｃｅチップは、ＬｏｏｐＤｒａｗチップのリングにブランクのＶｉｄｅｏＰｉｘｅｌのＬｏｏｐパケットを送り出す。次いで、各ＬｏｏｐＤｒａｗチップは、それが所有するサンプルのアンチエイリアス負担分を、ＶｉｄｅｏＰｉｘｅｌのＬｏｏｐパケット内の現在の合計に加える。ＶｉｄｅｏＰｉｘｅｌのＬｏｏｐパケットが最後のＬｏｏｐＤｒａｗチップから現れて、ＬｏｏｐＩｎｔｅｒｆａｃｅチップに入ると、現在の合計は、完全にフィルタリングされたピクセル成分を含むことになり、正規化およびオプションのγ補正の後、ピクセルストリームは、物理的イメージディスプレイ装置上へ送信してそこに表示するためのビデオ信号フォーマットで、ビデオ出力信号の最終レンダリングイメージとしてＬｏｏｐＩｎｔｅｒｆａｃｅチップのビデオ出力インターフェースから出てくる。
【００２４】
新しいＬｏｏｐトポロジーはその他にいくつか利点を有する。一つは、僅か２種類のカスタムチップから高性能グラフィックスシステムが構築できることである。これはカスタムチップの設計および製造のコストおよびリスクを最小限に抑える。別の利点は、リングの相互接続に拡張性があることである。多様な価格および性能の特徴を持つ商業上実現可能な製品を、同じ２種類の基本チップの様々な個数および組み合わせにより構築できる。
【００２５】
新しいアーキテクチャは本質的に、非常に高品位のアンチエイリアス化と、概してプログラマブルなシェーダの高速サポートを提供する。プログラマブルシェーダおよびアンチエイリアス化パワーはともに、システム内のＬｏｏｐＤｒａｗチップ数により拡張可能である。従って、より多くのＬｏｏｐＤｒａｗチップを用いるグラフィックスシステム構成は、より強力な、プログラマブルシェーディングのサポートおよびアンチエイリアス化能力をともに獲得できる。計算能力が要求されるこれら２つのタスクは、多数の（同一の）チップ全体へ十分効率的に分配されるので、これら重要な機能を、同一世代のチップ技術で構築された単一のチップグラフィックスシステムアーキテクチャに比べて一桁以上も強力な専用シリコンサポートが事実上可能になる。
【００２６】
グラフィックスシステム、フレームバッファストレージ、テクスチャメモリストレージ、およびディスプレイリストストレージの異なるメモリ要件を、一つの分散メモリシステムに折り畳むと、低価格の標準メモリチップ（例えば、ＤＲＡＭ商品）の格納能力、および本来の帯域幅を有効利用できる。高速ＬｏｏｐＬｉｎｋ相互接続は、（複製されたかもしれない）ローカル作業のテクスチャコピーおよびディスプレイリストがこれらのメモリへ効率的に送信されて格納できるだけでなく、メモリ階層の次のレベルの非複製テクスチャおよびディスプレイリストが分散格納を利用でき、必要に応じて、複製された格納作業メモリに高速高効率でコピーするために容易に利用できることを意味している。
【００２７】
一実施の形態では、ＬｏｏｐＤｒａｗチップと、それに取り付けられたローカルＤＲＡＭとを単純なドーターカードとして構築できる。高性能グラフィックスシステムの広い製品幅は、いくつかの異なる単純なマザーボードの一つに、これら同一のドーターカードを多数組み込むことにより、容易に構築できる。プリント基板のこうした因数分解は、在庫や交換部品コストは無論のこと、設計コスト、生産コスト、製造試験コストを低減し、システムの修理および更新を容易にする。
【発明を実施するための最良の形態】
【００２８】
Ａ．概論
汎用コンピュータ
汎用コンピュータの一具体例を示し、これについて述べる。汎用コンピュータは、一つ以上の汎用プロセッサ素子と、付属の主メモリと、一つ以上の外部Ｉ／Ｏプロセッサとを含む完全なシステムである。そして、これら外部Ｉ／Ｏプロセッサが一つ以上の外部Ｉ／Ｏ装置に接続される。汎用コンピュータは、広範な機能を実行する広範なプログラムを実行できる。他の機能の性能を損ねてまで、狭い範囲の特定機能を実行するようには最適化されていない。
【００２９】
汎用プロセッサ素子
汎用プロセッサ素子は、汎用コンピュータの演算の中心である。汎用プロセッサ素子は大量のキャッシュメモリを含み得るが、一般的にはＩ／Ｏ装置も主メモリも含まない。汎用プロセッサ素子は、汎用コンピュータの一部である場合、広範な機能を実行する広範なプログラムを実行する能力がある。汎用プロセッサ素子は、他の多くの機能の性能を損ねてまで、狭い範囲の特定機能を実行するようには最適化されていない。本発明の目的に対する類似の意味をもつ別の共通な用語は中央演算ユニット、つまりＣＰＵである。
【００３０】
絶えざる技術の進歩により、用語をどのように解釈するかは常に変化する。何年も前には、単一チップに汎用プロセッサ素子全体を適合させることは不可能であった。その後、高性能汎用プロセッサ素子を除き、単一チップに適合できるようになった。今ではその制約すらない。現在、単一チップに複数の汎用プロセッサ素子を適合させることができるようになっている。まもなく、一個の単一汎用プロセッサ素子が同時に多数の「スレッド」を実行できるようになり、多数の汎用プロセッサ素子があるかのように見えることになろう。こうした考え方のさらに微に入る詳細は、本発明を説明する上では不必要である。
【００３１】
主メモリ
主メモリは、汎用コンピュータ上の一般的な記憶装置を指す用語である。
【００３２】
キャッシュメモリ
キャッシュメモリは、通常は、汎用コンピュータ内の特別な高速記憶装置を指す用語であるが、各汎用プロセッサ素子または汎用プロセッサ素子の小さなサブグループが、自らキャッシュメモリを持つとは限らない。
【００３３】
外部Ｉ／Ｏプロセッサ
外部Ｉ／Ｏプロセッサの一例は、外部Ｉ／Ｏ装置との間で通信するように設計されたハードウエアサブシステムである。従って、外部Ｉ／Ｏプロセッサは、汎用コンピュータの残部と外部Ｉ／Ｏ装置との間のインターフェースとして動作する。最も単純なケースでは、外部Ｉ／Ｏプロセッサは、汎用コンピュータの残部と外部Ｉ／Ｏ装置とへ何ら手を加えずにデータを渡し、および／または、それらから受け取るだけで、それ以上のことはほとんど実行しない。もっと複雑なケースでは、外部Ｉ／Ｏプロセッサが、専用ハードウェアアクセラレータの場合であり、汎用コンピュータの残部と外部Ｉ／Ｏ装置とへデータを渡し、および／または、それらから受け取るときに、データに複雑な演算を実行する能力を有する。文脈上、外部Ｉ／Ｏプロセッサは外部Ｉ／Ｏコントローラまたは外部Ｉ／Ｏ装置コントローラと呼ばれることもある。今日では、これら装置のほとんどが自ら強力な演算システムを含むので、本発明の、説明するこうした装置をより記述的な用語である外部Ｉ／Ｏプロセッサと呼ぶことにする。
【００３４】
外部Ｉ／Ｏプロセッサの例には、汎用コンピュータシステムの残部との相互作用を、いくつかの任意の標準的およびカスタム化されたコンピュータインターフェースいずれかの上で、適切にフォーマット化された通信へ変換できる装置がある。これらインターフェースは、限定はされないが、ＳＣＳＩ、ウルトラＳＣＳＩ、ＡＴＡ、ウルトラＡＴＡ、ＩＤＥ、ＲＳ２３２、ＲＳ４２２、１０ＢａｓｅＴイーサネット、１００ＢａｓｅＴイーサネット、１０００ＢａｓｅＴイーサネット、ＵＳＢ、ＵＳＢ２、ブルートゥース、ファイアワイア、ファイバチャンネル、Ｉｎｆｉｂａｎｄ、アナログおよびデジタルのオーディオフォーマット、アナログビデオ信号フォーマット、およびデジタルビデオ信号フォーマットなどがある。
【００３５】
本発明は、詳細には、アナログおよびデジタルビデオ信号フォーマットを用いて、物理的イメージディスプレイ装置クラスの外部Ｉ／Ｏ装置に接続する専用のハードウェア・アクセラレータである外部Ｉ／Ｏプロセッサに関する。
【００３６】
外部Ｉ／Ｏ装置
外部Ｉ／Ｏプロセッサを介して、汎用コンピュータに接続できる多くのクラスの外部Ｉ／Ｏ装置の具体例がある。
【００３７】
一つのクラスの外部Ｉ／Ｏ装置は記憶装置である。このクラスの装置には、限定されないが、ハードディスクドライブ、フロッピーディスクドライブ、ＣＤＲＯＭドライブ、ＣＤＲＡＭドライブ、ＤＶＤＲＯＭドライブ、ＤＶＤＲＡＭドライブ、リムーバブルテープ格納、およびリムーバブルディスクドライブ格納がある。
【００３８】
別のクラスの外部Ｉ／Ｏ装置はネットワークおよびネットワーク装置である。このクラスの装置には、限定されないが、ネットワーク自体、ネットワークルーター、ネットワークブリッジ、ネットワークファイアウォールを含むが、これらに限定はされない。
【００３９】
別のクラスの外部Ｉ／Ｏ装置はヒューマンインターフェース装置である。このクラスの装置には、限定されないが、表示灯、スイッチ、キーボード、マウス、ジョイスティック、光ペン、ボタンボックス、スライダーボックス、カメラ、マイクロホン、電話、ＰＤＡ、ビデオ会議装置、遠隔会議装置、手袋やボディースーツを含む運動追跡装置、オーディオ装置ならびにスピーカー、物理的イメージディスプレイ装置、触感および触覚（力フィードバック）出力装置、運動プラットフォーム、および嗅覚出力装置がある。
【００４０】
別のクラスの外部Ｉ／Ｏ装置は、ハードコピーディスプレイ装置である。このクラスの装置には、限定されないが、レーザープリンタ、インクジェットプリンタ、熱転写プリンタ、インパクトプリンタ、フィルムプリンタ、ラベルメーカー、数値制御工作機械、および立体リソグラフィ出力装置がある。
【００４１】
ホストコンピュータ
ホストコンピュータの一例を述べる。外部Ｉ／Ｏプロセッサの観点から、外部Ｉ／Ｏプロセッサが一部をなす汎用コンピュータの残部を、ホストコンピュータと呼ぶ。汎用コンピュータには、任意の数の他の外部Ｉ／Ｏプロセッサを設けてもよく、これらは任意の数の他の外部Ｉ／Ｏ装置に取り付けられる。
【００４２】
本発明に関連するホストコンピュータの一実施の形態は、キーボードおよびマウスの外部Ｉ／Ｏ装置と、アプリケーションソフトウエアと、外部Ｉ／Ｏ装置のクラスのサブクラスである物理的イメージディスプレイ装置のクラスのインスタンスである陰極線管（ＣＲＴ）に取り付けられるグラフィックスハードウェアクアクセラレータと接続する外部Ｉ／Ｏプロセッサとを含む。
【００４３】
アプリケーションソフトウエアは、ホストコンピュータ内の汎用プロセッサ素子で実行され、オプションで、キーボードおよび／またはマウス装置を介して、人であるユーザからの入力を取り込んでから、グラフィックスハードウェアアクセラレータに最終レンダリングイメージを計算させ、表示用ＣＲＴへビデオ出力信号としてイメージを転送する。
【００４４】
ホストインターフェース
Ｉｎｆｉｂａｎｄインターフェースは、ホストインターフェースの一例である。何らかの種類の外部Ｉ／Ｏプロセッサがホストコンピュータに付属する場合、ホストインターフェースという用語を使って、ホストコンピュータとハードウェアアクセラレータ間の形式上の、および／または物理的なインターフェースを呼び表す。このインターフェースは、極く普通には何らかの種類の内部コンピュータバスであるので、ホストインターフェースをホストバスと呼ぶこともある。しかし、ますます高速な電気および／または光インターフェースが、異なるコンピュータのサブシステムを相互に接続するために必要になるので、ホストインターフェースが、同一のホストコンピュータにプラグインされる異なるコンピュータのサブシステムにより共有される大量の配線をもつバスとなる可能性はますます小さくなる。信号をほとんど共有しないポイントツーポイントのインターフェースとなるだろう。
【００４５】
３Ｄグラフィックスハードウェアアクセラレータについて述べる文脈では、ホストインターフェースは、ホストコンピュータへ３Ｄグラフィックスハードウェアアクセラレータを接続する特定のホストインターフェースのことを暗に指す用語である。
【００４６】
アプリケーションソフトウエア
人々、企業、および組織は、一般的には汎用コンピュータを購入して有益な作業を行う。この作業はその一部が、そのために購入またはプログラミングされた特定のコンピュータプログラムにより行われる。アプリケーションソフトウエアは、このようなプログラムのことを指す用語である。
【００４７】
３Ｄグラフィックスハードウェアアクセラレータの文脈では、アプリケーションソフトウエアは、グラフィックスＡＰＩＳ（アプリケーションプログラマーインターフェース）を介して、３Ｄグラフィックスハードウェアアクセラレータと通信する。
【００４８】
メッセージ
メッセージとは、あるエンティティ、ソース、または送信側から、一つまたはそれ以上の潜在的な宛先または受信エンティティへ送られるオブジェクトである。メッセージ自体は何らかの内容、すなわちソースが宛先に送っている情報を持っているのが普通である。メッセージの別の具体例は、メッセージ内容の残部（ペイロードとも称する）からルーティングまたは宛先情報を明示的に分離できる。事実、いくつかの具体例では、メッセージ自体の「種類」は、さらに別の分離された情報断片として分離抽出される。コンピュータサイエンスにおける様々なシステムは、多様な方法で、メッセージシステムの分離断片を定義している。こうした定義の目的は、大部分のメッセージシステムが共有する、より抽象的な高次レベルのセマンティックを記述することである。本発明の多様な実施の形態を記述するためにメッセージシステムを用いる必要がある場合、メッセージシステムの特定の詳細なインスタンスが最初に定義されることになる。
【００４９】
ユニキャストおよびマルチキャスト
多数の異なるサブシステムで作り上げられた電子システムを考えて見る。少なくとも或る個別サブシステムがそこから通信システム上にある他の複数のサブシステムに受け渡すことになるメッセージを送り出すことができるように、通信システムが電子システムに組み込まれていると仮定する。メッセージはサブシステムから送られると考える。メッセージの宛先が他の唯一のサブシステムである場合、そのメッセージをユニキャストメッセージと呼ぶ。宛先が複数の他のサブシステムである場合、そのメッセージをマルチキャストメッセージと呼ぶ。マルチキャストメッセージであるためには、そのメッセージを他のすべてのサブシステムへ送る必要はなく、潜在的に他の複数のサブシステムであればよい。実際には、そのマルチキャストメッセージが、どのサブシステムを、またはいくつのサブシステムを実際にターゲットにしているのか、送信側サブシステムで潜在的宛先からは確実に知ることができないようにシステムがなっている場合、マルチキャストメッセージの宛先が、実際には、他の唯一のサブシステムであったり、あるいは他のサブシステムが全く無いという結果に終わる場合もあり得るし、メッセージが依然としてマルチキャストメッセージと認められる場合もある。
【００５０】
Ｕ
多くの電気通信、コンピュータ、ビデオ、科学製品およびその他製品で商業的に用いられている標準ラックマウント式システムがある。標準「ラック」には、略１９インチ離れた垂直レール上の一組の離間するボルト孔が設けられている。ラックレールの孔は、標準幅で高さが可変の製品を垂直方向に隙間なくこのラックにボルト締めできるよう離間している。これは装置の可変高さをベース単位の整数倍に「量子化」することにより実現している。ベース単位は、１＋（３／４）インチの高さであり、この単位をＵとする。従って、例えば、１Ｕの装置、２Ｕの装置というように、単位Ｕで装置の特定部分の高さを規定できる。ラックマウント式装置の奥行きは、何らかの数でもって拘束されてはいないが、ほとんどの装置が概ね１６または１８インチ未満に合うような奥行き幅になっている。装置の複数のラックマウント各部の冷却用６面には、冷却用空気が来て、加熱空気が離れていくようになっているのがよいが、統一規格はない。しかし、特定市場あるいは業界単位で、何らかの標準化が存在しているかもしれない。同様に、多くの市場では、電力ケーブルを含め大部分のケーブルが床裏に敷設され、および／または床上に敷設することを前提にしているが、これは普遍的ではない。バックアップ電源で保護された空調マシンルームのスペースは平方フィート単価が非常に高価なので、市場によっては、自らの「非公式」標準を忠実に守ることに非常に固執する場合がある。
【００５１】
ブレード
コンピュータ装置の文脈でのブレードという用語は、物理的容積の観点からみて、小さな箱にかなりのパワーを詰め込んだ小さなラックマウント式装置を意味するようになっている（例えば、高さが少数のＵしかない）。また、非常に複雑な装置とするのではなく、比較的単純な個々のボックスに分けるのがよい。つまり、複雑なシステムは、多数のブレードを一つ以上の標準ラックに配設して得られるようにするのがよい。
【００５２】
コンピュータスペース内のブレードの最近の例は、メモリと、背の低いディスクドライブをおそらくは数台と、一つ以上の標準ネットワーク接続装置と、おそらくは限られた数のＰＣＩスロットとを伴う一枚のマザーボード内の１個、２個、または４個以上のＰＣ互換ＣＰＵであり、わずか２Ｕの高さしかないラックマウント式シャーシ内にすべてが収まる。多数のこのようなユニットを互いに共通にラックマウントして、標準のネットワーク接続を用いて達成するより優れた、接続不要のＣＰＵを多数必要とするウエブサーバおよび他のコンピュータサブシステムを形成する。
【００５３】
ＧｒａｐｈｉｃｓＳｌａｂ
ＧｒａｐｈｉｃｓＳｌａｂは、本発明により可能となった新しいクラスの３Ｄグラフィックス・ハードウェア・アクセラレータ製品を記述する用語である。ＧｒａｐｈｉｃｓＳｌａｂは、Ｉｎｆｉｂａｎｄのような業界標準インターフェースを介してホストコンピュータに接続できる、高さの低い分割ボックス（場合によって２Ｕから４Ｕの範囲）を意味し、高品位の最終レンダリングイメージを、クロスバー交換機を経て、一つの建物または多数の建物のキャンパス内にある中規模から大規模な組織内の、個々のオフィス、会議室、研究所、および劇場に至る長距離デジタルビデオ信号チャンネル上に送り出すことができる。
【００５４】
コンピュータ・グラフィックス用語
本発明はコンピュータ・グラフィックス分野、具体的には３Ｄグラフィックス・ハードウェア・アクセラレータに関することから、かかる分野の技術用語のいくつかを簡単に検討する。
【００５５】
２Ｄコンピュータ・グラフィックスおよび３Ｄコンピュータ・グラフィックス
コンピュータ・グラフィックスは、コンピュータサイエンスの一分野を表す周知の用語であり、計算の視覚結果生成における電子回路およびコンピュータの直接使用または間接使用に概ね焦点が当てられている。その特徴は周知であるため、本明細書では正確な定義をしない。しかし、いくつかの定義は必要であり、それは３つの用語「コンピュータ・グラフィックス」、「２Ｄコンピュータ・グラフィックス」および「３Ｄコンピュータ・グラフィックス」の使い方の違いである。本発明の説明の中で、「２Ｄコンピュータ・グラフィックス」は、２Ｄ効果に焦点をあてた分野、すなわちフォント、植字、写真編集、ペイントシステム、２Ｄ（つまり、「セル」）アニメーション等指すために使用する用語である。一方、「３Ｄコンピュータ・グラフィックス」は、３Ｄ効果に焦点をあてた分野、すなわち３Ｄレンダリング、３Ｄモデリング、３Ｄアニメーション等を指し、ハードウエアサポートの文脈では、「３Ｄコンピュータ・グラフィックス」は、通常は２Ｄ手法に加えて３Ｄ手法をサポートする能力のことを指すために使用する用語である。本明細書の要旨が、２Ｄおよび３Ｄ手法を共に含んだグラフィックスのハードウエアサポートに関係するので、本明細書では、「３Ｄコンピュータ・グラフィックス」は、２Ｄおよび３Ｄ手法を共に含んだすべての種類のグラフィックス計算を指す用語である。全体的に、本明細書では、３Ｄが３Ｄおよび２Ｄ手法を指すというこの慣行を、明示されない限り継承する。特に明示した場合を除いて、本明細書で用語に次元の添字が付かない場合、または、文脈から用語が意図的に曖昧さを残していると考えられる場合（例えば、「どのような形式のコンピュータ・グラフィックスがこの手法をサポートしているのだろうか？」等）、慣行としては、その用語が、その用語の３Ｄと２Ｄの両方の意味を指すことからして、その用語の３Ｄおよび／または２Ｄの意味を択一的に指すことができるだろう。コンピュータ・グラフィックスという用語の使用は、明示的にこうした慣行に従う。３Ｄ手法だけに関与するコンピュータ・グラフィックス分野を指すには、用語「３Ｄグラフィックス」が、明示的にその範囲をコンピュータ・グラフィックス分野の３Ｄ部分のみに限定する旨、定義する。注意点は、用語によっては「３Ｄグラフィックス」の文字列を含むが、こうした用語は、はじめから２Ｄ手法を除外しているというこではない。すなわち、各用語の定義が一般ルールの選択除外を明示的に含まねばならない、ということである。
【００５６】
範囲に関する同様な疑問が、２Ｄおよび３Ｄのレンダリングの定義でも生ずる。この問題は、３Ｄによる２Ｄの包括性だけでなく、ハードウエアは普通に「レンダリングハードウエア」と呼ばれるが、サポートされているコンピュータ・グラフィックス手法の範囲が、どの次元のレンダリング手法でもなく、つまり、いわゆる「レンダリングハードウエア」は、非レンダリングコンピュータ・グラフィックスのサポートも含む、という場合にも起きる。この場合も、明示的に定義して、この潜在的な曖昧さを排除する。
【００５７】
３Ｄグラフィックス
３Ｄグラフィックスは、主として物理的世界の局面を数値計算を用いて表現してシミュレーションを行い、このシミュレーション世界の静止および動きのイメージを生成するための方法および手法に焦点を当てたコンピュータサイエンスの一分野である。これは、コンピュータ内での生物のアニメーションから、合成した山やリアルな航空機を構築するさらに良い方法に至るまで幅広い範囲の方法をカバーする。与えられた問題領域については、通常は、それに相当する大量の数値計算が必要な高品位ソリューションを伴う広範なソリューションを利用できる。
【００５８】
本明細書で定義する用語「３Ｄグラフィックス」は、通常は、２Ｄコンピュータ・グラフィックス手法を含まない用語である。本明細書の３Ｄグラフィックスおよび２Ｄコンピュータ・グラフィックスで定義する手法の組み合わせを３Ｄコンピュータ・グラフィックスと称し、さもなければ文脈によっては、単にコンピュータ・グラフィックスと称する。（用語「２Ｄグラフィックス」は本明細書では定義されていないことに注意）。
【００５９】
２Ｄレンダリングおよび３Ｄレンダリング
本明細書では、２Ｄレンダリングは、平面の描画操作、すなわち、線引き、ポリゴンフィルアルゴリズム、フォント描画（フォントおよびシンボルの、ラスター操作、１からｎビットへの拡張、アウトラインインスタンス化およびラスター化、パック表現およびラスター表現など）、２Ｄペイントシステム、キャンバス上のインクまたは塗料のレイヤー効果のシミュレーション、イメージ化手法などのためのコンピュータ・グラフィックスによる手法を指す用語である。
【００６０】
３Ｄレンダリングは、明示的な３Ｄ手法を加えた２Ｄレンダリングのすべての手法を指す用語である。これらの明示的３Ｄ手法は、カメラや人の眼にイメージを生成する処理の一部として、現実世界のフォトンが物理的オブジェクトの表面や内部とどのように相互作用するかを様々な近似の程度でシミュレーションすることに主として関連する。ほとんどの場合、シミュレーション世界の文脈での明示的な３Ｄレンダリングは、シミュレーションされたカメラを含むシミュレーション世界のオブジェクト表現を取り込むこと、そして、シミュレーションされたカメラが、そのシミュレーション世界で「見る」ものを近似したレンダリングイメージを生成する（ほとんど常にピクセルアレイとして表現される）ことに関連している。
【００６１】
本明細書では、語句「レンダー」の３つの時制、すなわち、レンダー、レンダリング、およびレンダードは、特に明示した場合を除いて次元の添字なしで使われる場合、または、文脈から用語が意図的に曖昧さを残していると考えられる場合（例えば、「どの形式のコンピュータ・グラフィックスをこの手法がサポートしているのだろうか？」等）、用語「３Ｄレンダリング」と同じ意味を持つと定義され、それにより、用語の３Ｄおよび／または２Ｄの意味を指すことができる。
【００６２】
レンダリング処理の成果はイメージであることがほとんどなので、動詞「レンダリング」に対する既定の名詞は「イメージ」である。「レンダリング」は、例えば、「そのコンピュータはイメージをレンダリングしている」など現在形の動詞である。「レンダー」は、例えば、「そのコンピュータはイメージをレンダーする」または「委員会はどのイメージをレンダーすべきか（ｔｏ  ｒｅｎｄｅｒ）をどう決定するのか？」など、未来形または不定形である。「レンダード」は、例えば「そのコンピュータはイメージをレンダーした」など、過去形の動詞である。
【００６３】
注意−もっと広範な用語の一部として用いる場合、「レンダリング」は用語特有の意味を追加することもある。本明細書での重要な例は、レンダリングアルゴリズムをサポートする、ハードウエアを含む用語を定義する「レンダリング」がハードウエアを記述する用語の一部であるとしても、明示的な言及によるハードウエアは、レンダリングの他に別のもの、すなわちコンピュータ・グラフィックスからのアルゴリズムをサポートする。
【００６４】
レンダリングイメージおよび最終レンダリングイメージ
通常、レンダリング実行の主たる成果はイメージであり、これはレンダリングイメージと呼ばれる。複雑なレンダリングは、中間レンダリングイメージを生成することもあり、反射マッピングを含むレンダリング実行を例にとると、最終イメージをレンダリングする前に、別々のレンダリングを実行して、次の段階のレンダリングで用いる反射マップとなるレンダリングイメージを生成する。シャドウマッピングを含む多くの類似例が他にもある。こうした意味の異なるスレッドを区別するために、レンダリングイメージは、特には中間レンダリングイメージを含め、任意のレンダリングのイメージ結果のことを指す用語である。最終レンダリングイメージは、人（場合によってはマシン）が利用する最終イメージに対して用る用語である。具体的には、ビデオ出力信号に変換され、ほとんどの場合、ビデオ出力インターフェースを介して物理的イメージディスプレイ装置に送られるレンダリングイメージは、最終レンダリングイメージとみなされる。
【００６５】
レンダリング処理、レンダー処理、グラフィックスレンダー処理、および３Ｄグラフィックスレンダー処理
レンダリングは一種の計算処理であるから、レンダリングの計算処理をレンダリング処理、または他の形式の動詞が必要な場合は、レンダー処理と称する。（これは常に「レンダリングの計算処理」と呼ぶよりも短い）。
【００６６】
本明細書では、レンダリング処理、レンダー処理、グラフィックスレンダー処理、および３Ｄグラフィックスレンダー処理の各用語に含まれるレンダリングは、特に明示しない限り、２Ｄおよび３Ｄ手法の両方を包含する。純粋に２Ｄ手法が存在するが、本明細書ではいずれの用語も明示的にそれらを指すとは定義しない。接頭辞「グラフィックス」または「３Ｄグラフィックス」を伴う用語は、言及されるレンダー処理が３Ｄ手法を含むことを強調するためだけに用いる。
【００６７】
レンダー処理
「レンダー処理」という用語は、レンダー（描画）処理が、ソフトウエアレンダリングまたはハードウエアレンダリング（下記に定義する）により実行されるかどうかについての前提は何ら設けない。この用語を用いて、ソフトウエア／ハードウエアの区別が必要ない場合の抽象的なレンダー処理について記述する。普通は、ハードウエアレンダリングまたはソフトウエアレンダリングのいずれを指しているかは、文脈から明らかであり、ハードウエアまたはソフトウエアのどちらの用語も付ける必要はない。本明細書は主としてハードウエアレンダリングに関係しているので、用語「ハードウエア」が省略されている場合、検討対象のレンダー処理は抽象的なものまたはハードウエアのいずれかである。文脈からは特定の意味が明らかにならない場合、より明示的な用語である抽象的レンダー処理、ソフトウエアレンダー処理、またはハードウエアレンダー処理を用いる。３Ｄグラフィックス抽象的レンダー処理、３Ｄグラフィックスソフトウエアレンダー処理、および３Ｄグラフィックスハードウェアレンダー処理の各用語は、接頭辞３Ｄのない用語と同じ意味を持つとして定義し、言及される特定形式のレンダー処理が３Ｄ手法を含むことを強調する場合にだけ用いる。
【００６８】
レンダリングシステム
コンピュータ・グラフィックスにおけるレンダリングの概念は抽象的である。実際にレンダリング（描画）を実行して、イメージを生成するためには、グラフィックス・レンダリング・システムが必要である。物理的な構成要素が必要なので、グラフィックス・ソフトウエア・レンダリング・システムは、技術的にはハードウエア／ソフトウエアシステムであり、ハードウエアすなわち汎用コンピュータ、および、汎用コンピュータ上で走らせるときにレンダリング処理を実行するソフトウエア、ソフトウエアレンダラー、プログラムから成る。グラフィックス・ハードウェア・レンダリング・システムは、ホストコンピュータと、そのソフトウエアと、グラフィックス・ハードウェア・アクセラレータ（下記に定義する外部Ｉ／Ｏプロセッサの一種）とを備えるシステムである。文脈によっては、グラフィックス・ハードウェア・レンダリング・システムという用語は、例えば、グラフィックス・ハードウェア・アクセラレータ等、特定目的のグラフィックス・サブシステムを記述する場合に用いる。
【００６９】
これらの用語は次元についての通常の慣行を適用する。いずれの用語も接頭辞２Ｄを含まなければ、すべてに参照されるシステムは、明示しない限り、２Ｄレンダリングおよび３Ｄレンダリングの両方のサポートを含む。特に、３Ｄソフトウエアレンダリングシステムという用語は、２Ｄレンダリングおよび３Ｄレンダリングの両方を含むシステムのことを指す。
【００７０】
人の眼に幻影を与えるイメージシーケンスを述べる文脈では、シーケンス中の連続する、シーケンシャルイメージを、毎秒２４から８４回のオーダーの時間レートで与える必要がある。この特定の文脈では、リアルタイムという用語は、これと同等の時間レートで新たなイメージ出力を生成できる処理を意味する。本明細書では、リアルタイムは、特に明示しない限り、常にこの時間レートのオーダーを指す用語である。
【００７１】
ソフトウエアレンダリング
実世界の複雑さを考えると、高品位の最終レンダリングイメージを生成するレンダリングが多大な計算を要求するタスクであることは明白である。レンダリングは、例えば、汎用コンピュータ内の一つ以上の汎用プロセッサ素子上で走らせることができるプログラムを、純粋にソフトウエアアルゴリズムとして実装できる。これはソフトウエアレンダリングの一例と言えよう。複雑なソフトウエアレンダリングは、例えば、リアルタイムより百万倍以上も遅く、一枚の最終レンダリングイメージを生成するのに事実上数日かかることがある。さほど複雑ではないレンダリングは数分ないし数時間で済むこともある。本明細書では、ソフトウエアレンダリングは、常にこの定義のことを指す用語である。時には、バッチレンダリングという用語を用いて、リアルタイムほど十分に高速生成を行えないレンダリングを表す。
【００７２】
ハードウエアレンダリング
３Ｄレンダリングを用いる多くの用途（産業用途およびコンシューマ用途の両方）にとって非常に重要なことは、最終レンダリングイメージがリアルタイムで、またはリアルタイムに少なくとも近い速度で生成されることである。この商業上の重要性から、ソフトウエアレンダリングを用いる場合よりも高速にレンダリング計算を実行するために特化した専用の計算用ハードウエア、すなわち外部Ｉ／Ｏプロセッサの構築を正当化できるようになってきた（同一の時間対フレームの技術を仮定している）。汎用コンピュータ内の一つ以上の汎用プロセッサ素子上を走ることができるプログラムを使わずに、レンダリング用に特別に設計されたハードウエアによりレンダリングを実行する場合、これを「ハードウエアレンダリング」と呼ぶ。
【００７３】
アクセラレータ
コンピュータサイエンスでは、アクセラレータ、またはハードウェアアクセラレータ、または専用ハードウェアアクセラレータは、汎用コンピュータ内の一つ以上の汎用プロセッサ素子上を走るプログラムで実行するよりも高速に特別な計算処理を実行するよう設計された計算用サブシステムである物理装置である（この「より高速」は、同一の時間対フレームの技術を仮定している）。この物理装置は、通常は汎用コンピュータに取り付けられるが、アクセラレータは、必ずしも外部Ｉ／Ｏプロセッサでなくてもよい。というのは、例え外部Ｉ／Ｏ装置と関わっていても、出力が、汎用コンピュータへ直接送り返すデータというだけの純粋に計算用のアクセラレータが数多くあるからである。
【００７４】
レンダリングの定義を考えると、前置の「ハードウエア」は冗長に見えるかもしれないが、歴史的に見て、この用語「ハードウエア」は、分離しているハードウエアの物理的部分を検討していることを明確にするために加えられることが多い。また、発明者らのレンダリング定義を考えると、前置の「専用目的」は冗長であるかもしれないが、歴史的に見て、この用語「専用目的」は、狭くて特殊な範囲のタスクに秀でるように設計されたハードウエアを検討していることを明確にするために加えられることが多い。
【００７５】
グラフィックス・アクセラレータ
用語「グラフィックスアクセラレータ」および「グラフィックスハードウェアアクセラレータ」は、ハードウェアアクセラレータを指し、その専用化された計算処理はコンピュータ・グラフィックスからの何らかのアルゴリズムである。本明細書で説明する大部分のかかる装置は、明示的に３Ｄおよび２Ｄのレンダリングアルゴリズムの両方を含むが、本明細書で定義する用語はその必要がなく、グラフィックスアルゴリズムの別のサブセットと関連するアクセラレータを訂正するためにこれら用語が用いられてきた広い慣行に従う。サポート対象のコンピュータ・グラフィックスアルゴリズムのより明示的な仕様に伴う用語を次に定義し、本明細書で特異性を明確にするために極く普通に用いることとする。
【００７６】
３Ｄグラフィックス・ハードウェア・アクセラレータ
本明細書では、３Ｄグラフィックスハードウェアアクセラレータは、外部Ｉ／Ｏプロセッサであって、コンピュータ・グラフィックスのいくつかのアルゴリズムを実行するように設計されたグラフィックスハードウェアアクセラレータを指す用語であり、明示的に３Ｄレンダリングを含むが、限定はされない（２Ｄレンダリング手法も含むように明示的に定義される）。
【００７７】
一般に、期待されているのは、３Ｄグラフィックスハードウェアアクセラレータを取り付けた汎用コンピュータで実行する場合、３Ｄグラフィックスハードウェアアクセラレータが、３Ｄグラフィックスソフトウエアレンダー処理が必要とするより高速に３Ｄグラフィックスレンダー処理のいくつかのサブセットを実行するよう設計されていることである。３Ｄグラフィックスレンダー処理の他の部分が、３Ｄグラフィックスソフトウエアレンダー処理と同じ速度またはそれより遅い速度で実行されれば、完全に容認できる。実際には、３Ｄグラフィックスハードウェアアクセラレータが、３Ｄグラフィックスレンダー処理のいくつかのサブセットをすべて実行できないのが普通であり、その代わりに、持っていない機能は、ホストコンピュータによりソフトウエアで純粋に実行される。
【００７８】
３Ｄグラフィックスハードウェアアクセラレータは、外部Ｉ／Ｏプロセッサであるとも定義され、また３Ｄグラフィックスハードウェアレンダー処理を実行するとも定義されるグラフィックスハードウェアアクセラレータのための唯一の用語であることから、多くの場合、この特定用語を用いて（少し長いが）、本発明が関連するグラフィックス製品クラスを記述する。
【００７９】
グラフィックスシステム
簡単にするために、文中で用語「グラフィックスシステム」を用いて、グラフィックスハードウェアアクセラレータである汎用コンピュータのサブシステムを指すこともある。本明細書では通常の慣行とは明らかに異なり、グラフィックスシステムがサポートする次元は明示的に定義されていない。非レンダリングコンピュータ・グラフィックスアルゴリズムのサポートはもちろん、２Ｄおよび３Ｄ手法のどちらかを含んでも、両方を含んでもよい。場合によっては文脈で次元を特定する。
【００８０】
簡単にするために、文脈で用語「３Ｄグラフィックスシステム」を用いて、３Ｄグラフィックスハードウェアアクセラレータである汎用コンピュータのサブシステムを指すこともある。この場合、３Ｄグラフィックスシステムは、用語「３Ｄグラフィックスハードウェアアクセラレータ」が定義するように、すべてのレンダリングおよび非レンダリングコンピュータ・グラフィックスアルゴリズムを実行できるように明示的に定義する。
【００８１】
ＡＰＩ（アプリケーションプログラマーインターフェース）
アプリケーションプログラマーインターフェース、すなわちＡＰＩは、コンピュータプログラム（アプリケーションソフトウエア）と、標準化した方法でコンピュータをアプリケーションソフトウエアに利用可能にするソフトウエアおよび潜在的なハードウエア機能のいくつかの基底にある部分との間の、プログラム言語またはシステムインターフェースを指す用語である。
【００８２】
グラフィックスＡＰＩおよびコンピュータ・グラフィックスＡＰＩ
グラフィックスＡＰＩおよびコンピュータ・グラフィックスＡＰＩはともに、同一の概念を指す用語であり、ＡＰＩは、グラフィックス機能のいくつかの形式を指す。ここで、次元の接頭辞がなくても、通常は２Ｄおよび３Ｄグラフィックス手法の両方をサポートすることを意味しない。本明細書では、用語グラフィックスＡＰＩおよびコンピュータ・グラフィックスＡＰＩはともに抽象的であり、正確な特性およびサポートの次元は、グラフィックスＡＰＩの特定インスタンスによってのみ定義される。
【００８３】
注意すべきは、どの特定３Ｄグラフィックスハードウェアアクセラレータも、２つ以上の異なるコンピュータ・グラフィックスＡＰＩをサポートしているのが一般的である、ということである。例えば、ハードウエア２Ｄおよび３Ｄ機能は、異なるＡＰＩを介して表面化する。つまり、３ＤグラフィックスハードウェアアクセラレータおよびＡＰＩは１対１の関係にはない。
【００８４】
レンダリングＡＰＩ
コンピュータ・グラフィックスレンダリングＡＰＩは、グラフィックスレンダリングシステムのいくつかの形式に対するＡＰＩを指す用語である。言葉としては、用語「コンピュータ・グラフィックスハードウェアレンダリングＡＰＩ」を用いて、グラフィックスハードウェアレンダリングシステムのいくつかの形式に対するＡＰＩを指すことがある。ほとんどのコンピュータ・グラフィックスレンダリングＡＰＩは純粋なソフトウエアを実装し、グラフィックスアクセラレータを使用するソフトウエアを有するので、この非常に限られた用語は、本明細書では用いない。覚えておかなければならないのは、強力なグラフィックスアクセラレータをコンピュータ・グラフィックスレンダリングＡＰＩの実装の一部として用いる場合でも、そのＡＰＩは、ホストコンピュータ上のソフトウエアとして実装される少なくともいくつかの構成要素を常に有することである。例えば、コンピュータ・グラフィックスレンダリングＡＰＩは、常に純粋なソフトウエアシステム、またはハードウエアとソフトウエアの混合システムである。
【００８５】
２Ｄコンピュータ・グラフィックスレンダリングＡＰＩは、２Ｄレンダリング手法だけをサポートするコンピュータ・グラフィックスＡＰＩを指す用語である。
【００８６】
３Ｄコンピュータ・グラフィックスレンダリングＡＰＩは、３Ｄレンダリング手法だけをサポートするコンピュータ・グラフィックスＡＰＩを指す用語であり、この場合、本明細書の通常の慣行とは逆に、レンダリング手法だけは、純粋に３Ｄを含むか、または２Ｄと３Ｄ手法の両方を含むかのいずれかである。この定義を用いる理由は、多くの市販コンピュータ・グラフィックスレンダリングＡＰＩが純粋に３Ｄであるのが現実だからである。注意すべきは、どの特定３Ｄグラフィックスハードウェアアクセラレータも、２つ以上の異なるコンピュータ・グラフィックスレンダリングＡＰＩをサポートするのが一般的だということである。例えば、ハードウエアの２Ｄおよび３Ｄ機能は、異なるＡＰＩを介して表面化する。
【００８７】
２Ｄコンピュータ・グラフィックスレンダリングＡＰＩの特定インスタンスは、ＰｏｓｔＳｃｒｉｐｔ、Ｊａｖａ２Ｄ、ＨＴＭＬ、およびＳＶＧを含む。
【００８８】
３Ｄコンピュータ・グラフィックスレンダリングＡＰＩの特定インスタンスは、ＯｐｅｎＧＬ、ＭｉｃｒｏｓｏｆｔのＤｉｒｅｃｔ３Ｄ、Ｊａｖａ３Ｄ、ＱｕｉｃｋＤｒａｗ３Ｄ、ＲｅｎｄｅｒＭａｎ、およびｍｅｎｔａｌ  ｒａｙを含む。
【００８９】
「レンダリング状態」は、通常は、状態フル処理である。この意味は、アプリケーションソフトウエアがコンピュータ・グラフィックスレンダリングＡＰＩを用いて（明示的に）生成するレンダリングを規定するとき、コンピュータ・グラフィックスレンダリングＡＰＩは、通常、次のコンピュータ・グラフィックスレンダリングＡＰＩコールが翻訳される文脈を定義する明示的な状態情報を有するということである。この状態文脈情報はレンダリング状態と呼ばれる。
【００９０】
考えられるレンダリング状態の例には、現在の描画色、現在の変換マトリックス、Ｚバッファの使用可能性、現在定義されている光源、現在フレーム用のアンチエイリアスフィルタ等がある。
【００９１】
ディスプレイリスト
多くのグラフィックスＡＰＩは、ディスプレイリストの概念をサポートする。ディスプレイリストは、グラフィックスＡＰＩに対する境界パラメータを伴う正式ＡＰＩコールの前回の記録集合を指す方法である。ほとんどの場合、集合の記録中になされるＡＰＩコールは、グラフィックスＡＰＩによりサポートされるＡＰＩコールの特定サブセットに限定される。多くの場合、サブセットは、ジオメトリ仕様、およびレンダリング状態ＡＰＩコールだけに限られる。ディスプレイリストが創られてから（グラフィックスＡＰＩへのコールによる）後の時点で、ＡＰＩコールは、前回創ったディスプレイリストを参照して、そのディスプレイリストを呼出してもよい。呼出しのセマンティックは様々であるが、セマンティックはリニアであることが多い。例えば、ディスプレイリストを呼出す効果は、呼出す代わりに、ディスプレイリストを定義するために用いられたすべてのＡＰＩを代わりに再度作り替えることと同一である。他のもっと複雑なディスプレイリストセマンティックが存在し、具体的には、ディスプレイリストが条件付き実行パス（例えば、分岐）を含むセマンティックおよびＡＰＩコールがすべて正式パラメータとは限らない、創った時点で結び付けられるディスプレイリストのセマンティックがあり、その代わりに、いくつかのパラメータがディスプレイリスト自体の呼出しの正式なパラメータとなる。
【００９２】
本明細書に関係するディスプレイリストの重要な特性は、一旦創られると、ほとんどのディスプレイリストが不透明になることであり、例えば、その内容は、ディスプレイリストを創ったアプリケーションソフトウエアによる直接的な検査も修正もできない。この意味は、一旦創られると、ディスプレイリストは、ホストコンピュータからホストインターフェースを介してグラフィックスアクセラレータへ一度送ることができ、そこで、グラフィックスアクセラレータ自体の何らかのローカルメモリにキャッシュできる、ということである。それ以後、アプリケーションソフトウエアが同一のディスプレイリストを呼出すときはいつでも、ディスプレイリストの内容へローカルに効率よくアクセスできる。
【００９３】
グラフィック・ドライバ
アプリケーションソフトウエアからＡＰＩに渡されるプロシージャコール、レンダリング状態、既定値、値、およびデータ構造を、グラフィックスハードウェアアクセラレータがレンダリング実行を支援処理できる形式に転換するのは、コンピュータ・グラフィックスレンダリングＡＰＩの混合ソフトウエアの半分のソフトウエアおよびハードウエア実装の役割である。ソフトウエアの残部とハードウエアとの間に介在するホストコンピュータソフトウエアは、「ドライバ」として共通に呼ばれている。対象ハードウエアがグラフィックスハードウェアアクセラレータである場合、ドライバはグラフィック・ドライバまたはグラフィックスハードウェアドライバと呼ばれる。
【００９４】
テクスチャマップ
本明細書で、テクスチャマップは、イメージを形成するピクセル値の２Ｄアレイを指す用語であり、これらのイメージはレンダリング処理中に用いられる。用語「２Ｄテクスチャ」は、テクスチャマップと同じ意味に定義される。
【００９５】
ボクセルマップ
本明細書で、ボクセルマップは、ソリッドイメージを形成するボクセル値の３Ｄアレイを指す用語であり、ソリッドイメージはレンダリング処理中に用いられる。用語「３Ｄテクスチャ」は、ボクセルマップと同じ意味に定義される。
【００９６】
テクスチャ
本明細書で、テクスチャは、テクスチャマップまたはボクセルマップを指す用語である。次元は文脈から明らかであるが、抽象レベルのこともあり、その場合、次元は無関係であるか、真に両次元を指す意味をもつ。
【００９７】
テキセル
テクスチャ要素およびテキセルは、テクスチャマップまたはボクセルマップのボクセルの、個々のピクセルを指す用語である。グラフィックスシステムの他の場所に位置する従来のピクセル、および、テクスチャ中の特化されたピクセルの両方を示すために用語「ピクセル」を用いた場合に起こりうる曖昧さを避けるために両用語を使用する。
【００９８】
テクスチャメモリ
用語「テクスチャ格納」および「テクスチャメモリ」は、テクスチャマップが実際に格納されている所与の設計の実メモリサブシステム内の場所を指す。例：「フレームバッファメモリに統合したテクスチャ格納」、または「テクスチャ格納は、専用に構築された特別なメモリサブシステムに存在する」。
【００９９】
環境マップ
環境マップは、特定のコンピュータシミュレーション世界を取り囲む背景（通常は遠景）のテクスチャマップ、またはテクスチャマップイメージのセットである。多くの場合、環境マップは遠景の空に浮かぶ雲、山のイメージである。環境マップおよび反射マップという用語は、言葉としては標準化された意味を持たず、同一のものを意味することがある。本明細書では、用語「環境マップ」は、遠景イメージを記述するためにのみ用いる。多くの場合、環境マップは、レンダリングフレーム毎に再レンダリングする必要がない。
【０１００】
反射マップ
反射マップは、特定セットのオブジェクト、または単一のオブジェクト、または特定オブジェクトの特定断片のこともあるが、それらを取り囲む特定のコンピュータシミュレーション世界のテクスチャマップまたはテクスチャマップイメージのセットである。反射マップを用いて、非常に輝く、または部分的に輝くオブジェクトが実世界でもつ特性をシミュレーションする。つまり、反射マップは、オブジェクトを取り囲む世界を「反射」（たぶん薄暗いが）する。
【０１０１】
用語「環境マップ」および「反射マップ」は、言葉としては標準化された意味を持たず、同一のものを意味することもある。本明細書では、用語「反射マップ」は、特定のオブジェクト上の点が関係している限り、完全な背景、つまり、近い背景および遠い背景の両方を含むイメージを記述するためにのみ用いる。ほとんどの場合、レンダリングフレーム毎に環境マップを再レンダリングしなくてもよい。（砂漠を歩いている２色の恐竜を想像してみるのがよい）。
【０１０２】
シャドウマップ
シャドウマップは、眼の点が最終レンダリングイメージに影を投げかけている仮想光源の中心に配置されている場合のレンダリングイメージのＺピクセル成分である。
【０１０３】
最終レンダリングイメージを開始する前に、最終レンダリングイメージに影を投げかけるよう期待される光源毎に、中間レンダリングを実行する。このレンダリング毎に、得られた中間レンダリングイメージのＺピクセル成分だけを含むイメージを、３Ｄグラフィックスハードウェアアクセラレータ内にテクスチャマップとして格納する。これらのテクスチャマップはシャドウマップと呼ばれる。
【０１０４】
注意すべきは、正確さのために、シャドウマップの一成分値つまりＺ値を通常は、例えば実装によって、１６ビット以上の整数、固定小数点、ブロック浮動小数点または浮動小数点、の精度等、高い計算精度で表現しなければならないということである。
【０１０５】
ほとんどの場合、特定光源に対するシャドウマップは、特定光源が影を投げかける任意のオブジェクトに何らかの動きがある場合、または光源自体が動いている場合、レンダーフレーム毎にレンダリングしなければならない。
【０１０６】
ピクセル
良く理解されているピクセルは、イメージのコンピュータ表現を作り上げる個々の「絵の要素」を指す用語である。グラフィックスハードウェアアクセラレータを検討する場合、覚えておかなければならないのは、例えば、ピクセルがＲＧＢ色成分以上を含むことができる等、特別な特定データおよび制御情報がピクセルとともにかつピクセルの指定部分に格納されるのが普通であるということである。
【０１０７】
ピクセルインターリーブ
ピクセルのための最高性能メモリシステムは通常、同時に複数のピクセルアクセスをサポートすることによりその性能を発揮する。この同時アクセスは通常、どのピクセルに同時にアクセスできるかという上でいくつかの制約を伴う。多くの具体例で、こうした制約は、メモリシステムをインターリーブする（平行して実行する）方法に関係していなければならないず、メモリ組織の技術的詳細は、メモリのインターリーブと呼ばれる。メモリがピクセルで構成される場合、これはピクセルインターリーブとも呼ばれる。簡単な例は、４×４ピクセルインターリーブに編成した１６並列ピクセルメモリへｆを分割したメモリであろう。この意味は、ｙの第４ラインピクセル上の、ｘのすべての第４ピクセル値が特定サブシステムに格納され、一つのピクセルだけがこのメモリから同時にアクセスできるということである。
【０１０８】
サブピクセル
用語「サブピクセル」は、整数のピクセル尺度以上に場所または領域を正確に特定するように、それに続く名詞を修飾する。「サブピクセル」は名詞ではないので、例えば、「サブピクセル」について値を計算することはできず、単に「サブピクセル領域」について計算するだけである。場所および領域に対するサブピクセルの普通の使い方は「サブピクセルの正確な位置」である。
【０１０９】
サブピクセルの別の使い方では、単一ピクセルに満たないという意味のこともある。例えば、「三角形がサブピクセル領域を有する」は、三角形が１ピクセルに満たない領域を有することを意味する。「サブピクセル三角形」は、三角形が直線寸法で横切る１ピクセルに満たない、例えば、三角形の境界ボックスが幅も高さも１ピクセルに満たない、ということである。注意するのは、対象の三角形が１ピクセルを超える広がりをもつかどうかである。
【０１１０】
ピクセル深さ
単一ピクセルを表すために用いるビット数は標準化されていない。グラフィックスハードウェアアクセラレータを検討する場合、アーキテクチャ特有の特別な専用データおよび制御情報が、ピクセルとともに、かつピクセルの指定部分に格納されるので、単一ピクセルを表すのに必要なビット数が必ずしも明らかではない。レンダリング処理の内部および外部の段階でピクセル表現（つまりビット数）が異なるべきであることは、また、非常に普通である。もちろん、多くのグラフィックスハードウェアアクセラレータは、様々なピクセル形式の範囲を動的にサポートする能力を有する。ピクセル深さは、ピクセルのビット（または、他の十分に規定された情報単位のこともある）の合計サイズを指す用語であり、常にとは限らないが、通常はフレームバッファおよびテクスチャバッファにピクセルを格納するために用いられる表現のサイズを述べる文脈で用いられる。３Ｄグラフィックスで用いられるピクセルはＺ「深さ」成分（または、逆の「深さ」成分）を含むことがあるので、Ｚ「深さ」がピクセル深さと異なる概念であることを理解しておくことが重要である。前者がピクセル成分の深さ、またはピクセルの深さ成分の値のいずれかを指し、後者がピクセル全成分の情報単位の合計サイズを指す。
【０１１１】
ピクセルフォーマット
ピクセルフォーマットは、ピクセルの特定の構造化表現を指す用語である。この構造は、通常、多数のピクセル成分の用語で定義され、各々は、いくつかの数のビット、または自らの下位構造によって規定できる。ピクセルフォーマットのいくつかは抽象的であり、規定できるのは、ピクセルが「赤、緑、および青成分を含む」ということであり、その成分のビットサイズまたは他の下位構造の詳細に関するそれ以上の詳細は規定しない。
【０１１２】
ピクセル成分
ピクセル成分は、特定ピクセルフォーマットが定義するピクセル内部構造の一部を作り上げる特定データ成分を指す用語である。
【０１１３】
異なる３Ｄグラフィックスハードウェアアクセラレータを選択して、他のアクセラレータがサポートしない異なるピクセル成分をサポートする。今日ではほとんどの場合、ピクセルは、少なくとも通常の３つの値の色成分、例えば、赤、緑、青、の数値を持つ。これらの値がそれぞれ必要とする格納ビット数またはその値の数値フォーマットは、異なるシステム間で異なることがある。
【０１１４】
通常の赤、緑、青のピクセル成分値に加えて、各ピクセルの一部として格納されるいわゆる「α」成分値が普通は存在する。このα値は、いくつかの異なる周知のレンダリング手法に対して用いられる。
【０１１５】
レンダリングアルゴリズムに基づくＺバッファをサポートする３Ｄグラフィックスハードウェアアクセラレータにとって非常に重要なピクセル成分がＺ値（または、いくつかの他の距離に基づく何らかの値）である。
【０１１６】
その他の共通ピクセル成分は、ＯｐｅｎＧＬ（商標）仕様で定義されるステンシル面を含む。さらに、他のピクセル成分は、高速クリア面、オーバーレイ面、カーソル面、ウィンドウＩＤ面、および何年間もフレームバッファに現れていたその他類似成分のこともある。
【０１１７】
まだ触れていない点があるが、それはダブルバッファを実装する方法に関する。全てのピクセルが前後のバッファを両方持っているか？  Ｚ値のようなピクセル成分は前バッファだけにあるのか？  個々のウィンドウは、スクリーン上の他のウィンドウに影響を与えないで一度にバッファを切り換えることができるか？  各ピクセルに含まれる異なる数の成分に対して、３Ｄグラフィックスハードウェアアクセラレータを構成する能力、および、どの成分をシングル対ダブルにバッファするかを構成する能力はあるか？  トリプルまたはそれ以上のバッファをサポートするか？  ステレオビデオ信号フォーマット、特にフィールドシーケンシャルステレオビデオ信号フォーマットはどうか？  その場合、ステレオをサポートするにはフレームバッファをどう設定すればよいか？  ステレオでは、いくつかのピクセル成分は４重バッファされるのか、または別の手法を用いるのか？  すべてのこれらフレームバッファアーキテクチャ、ピクセル成分アーキテクチャのトレードオフは、当該技術に精通する者にはなじみがあり、新しいＬｏｏｐアーキテクチャへのこれら要件の適用は、当該技術に精通する者は、本明細書に基づき容易に理解できよう。
【０１１８】
ピクセルデータ
ピクセルの全ピクセル成分の集合を参照しなければならない場合が時々ある。文脈では、用語「ピクセル」がこの意味をもつことがあるが、時には、用語「ピクセルデータ」を用いて、検討対象をはっきり明確にするのがよい。
【０１１９】
ボクセル
用語「ピクセル」ほど広く知られてはいないが、ボクセル（voxel）は、ピクセルの３Ｄ拡張、つまり「体積要素」を指す用語である。ボクセルは、空間の小領域に帰せられる成分の集合である（一般的には一様に充填された３Ｄのセル）。２Ｄのピクセルアレイにより、２Ｄイメージをデジタル的に表現するのが普通であるのとまさに同じように、ボクセルの３Ｄアレイにより、３Ｄ「イメージ」が普通に表現される。アナロジー的にみれば、「ボクセルマップ」はボクセルの三次元アレイである。
【０１２０】
４次元以上の表現をコンピュータ処理で用いることがあるが、その使用は、標準用語として用いられるほど一般的ではない。例えば、「ハイパーボクセル」のような用語を用いる人は現在ではほとんどいない。
【０１２１】
ボクセルフォーマット
ボクセルフォーマットは、特定の構造化されたボクセル表現を指す用語である。このような構造は通常、多数のボクセル成分により定義され、そのそれぞれは、いくつかのビット数により、またはそれ自身の下位構造により規定される。いくつかのボクセルフォーマットは抽象的であり、規定できるのは、ボクセルが「赤、緑、青成分を含む」ということであり、その成分のビットサイズまたは他の下位構造の詳細に関するそれ以上の詳細は規定しない。
【０１２２】
ボクセル成分
ボクセル成分は、特定のボクセルフォーマットにより定義されるボクセル内部構造の一部を作り上げる特定データ成分を指す用語である。典型的なボクセル成分は、赤、緑、青、の値であるか、または擬似カラーテーブルへのインデックス、または単純な色へ変換するためのカスタムシェーダのアプリケーションを必要とするもっと複雑な多次元値である。
【０１２３】
基底イメージ
従来の信号処理では、処理中の基底となる最高品位信号についてはかなり知られている。事実、ある場合には、多くの数学的に正確な信号特性が知られている。実行される操作が、低周波数チャンネル上の表現のために表現チャンネルの或る周波数で再サンプリングして、信号を低域通過フィルタ処理を行っているとき、基底信号についてのこの情報を用いて処理を簡略化し一括化できる。
【０１２４】
技術的に、レンダリングイメージのアンチエイリアス化は、２次元信号つまりイメージによるまさにそのようなジョブである。問題は、基底信号つまり基底イメージに相当するものは、その計算に多大な費用がかかるということである。技術的に、レンダリングの文脈では、基底イメージは、サンプル密度が無限大になるようなサンプルアレイにより形成されるイメージ限界の２Ｄイメージである。これは、大部分のレンダリングアルゴリズムをセットアップする方法だからであり、アルゴリズムは特定の無限小点で基底イメージの値がどうなるかを教えてくれるだけである。つまり、アルゴリズムは基底イメージの平均が、ある小さな２Ｄ領域上でどうなるかを確認のために教えてくれないし、またはどんな周波数のイメージ成分が基底イメージに潜むかもしれないということについて他に何かを伝えることもできない。これは、アンチエイリアス化（および、全画面アンチエイリアス化）がいかに困難な問題であるかという理由である。なお、多様なアンチエイリアス化アルゴリズムによるこの問題を解決する試みを正しく説明するには、確固たる信号処理の基礎の上で検討するための基底イメージ概念が必要である。
【０１２５】
サンプル
サンプルは情報理論に由来する用語であり、最初は特に、信号形式を作り上げる個別の不連続な測定値（アナログでもデジタルでもよい）を記述するために使用された。信号は無線電波のような１次元である必要はなく、イメージ検知装置上の光パターンのような２次元のこともある。３Ｄグラフィックスにおける用語「サンプル」は、通常、レンダリングされている基底イメージの点のサンプル値を表す不連続なデジタル値を指し、サンプル値は、ピクセル値に近い関係にあり、そして、しばしば類似または同一の成分値を有する。信号処理の数学上の教示によれば、デジタルイメージ（例えば、２Ｄのピクセルアレイ）をもっと正しく構築するために、そして、生成されるピクセルアレイの空間周波数を超える周波数の基底イメージの存在による干渉パターンを避けるために、最初に、多くの異なる単一ピクセル内の点で基底イメージの「サンプル」（プローブ）化をしなければならない。これは、大部分の高品位コンピュータ・グラフィックスアンチエイリアス化アルゴリズムが行うことである。サンプル値は、レンダリング処理の出力となる最終ピクセル値を生成するために、そのデータを用いる前に追加の信号処理がなお必要である。（いくつかの下記用語でこの信号処理の他の部分を説明する）。
【０１２６】
特に注意すべきは、アンチエイリアス化しない単純なグラフィックスレンダリングパイプライン（例えば、極く最近まで大部分のグラフィックスハードウェアアクセラレータを構築していた方法）では、ピクセルと呼ばれるものがサンプルであり、ピクセル当たりの密度が１のサンプルでサンプリングされる、ということである。この理由を数学的にみると、ピクセル値は、そのピクセルの２次元の近傍にある基底イメージ値のある特別な平均値を表したものでなければならないということである。すなわち、サンプル値は、２Ｄ空間の単一点で採取した基底イメージの特定の値（平均値でない）である。従って、技術的に本明細書で与えた様々な用語の定義と一貫性をもたせるには、アンチエイリアス処理を伴わない旧グラフィックスハードウェアアクセラレータは、フレームバッファにピクセル値ではなくサンプル値を計算し格納していた。定義によりピクセルストリームであるビデオ出力信号へそれらサンプル値を未修整で送る場合、それらをピクセルの既定の近似により形成した。
【０１２７】
本明細書に記載のサンプルの特定の定義は、他に明示のない限り、本明細書内で常に用いられる。
【０１２８】
サンプル位置
レンダリングされている２Ｄイメージの文脈では、すべてのサンプルは、そのイメージ上の数学的な点である。点として、サンプルはレンダリングされているイメージ上の２Ｄの位置を持つ。この位置はサンプル位置と呼ばれる。位置は通常は、何らかの明示的な量子化表現を有し、サンプルについて規定したサブピクセル精度のビット数により規定される。これらサンプル位置を割り当てる関数は別の概念であり、通常はサンプルパターンと呼ばれる。
【０１２９】
サンプルアドレス
３Ｄグラフィックスハードウェアアクセラレータのフレームバッファ（または、サンプルバッファ）の文脈では、全サンプルは明示的に、フレームバッファ内のサンプル成分を格納する場所を識別するフレームバッファアドレスを有する。このアドレスは、サンプルアドレスと呼ばれる。このアドレスは様々な異なる方法で割り当てることができるが、一つの普通の方法は、サンプルアドレスをサンプルが中に位置をとるピクセルアドレスに基づかせ、次いで、サンプルのリニアなシーケンス番号から導かれるアドレス情報も含める。このリニアシーケンス番号は、対象サンプルと同じピクセルに含まれる全サンプルのリニアな順序に由来する。
【０１３０】
サンプルフォーマット
サンプルフォーマットは、サンプルの特定構造表現を指す用語である。かかる構造は、通常は、多数のサンプル成分により定義され、その各々は、いくつかのビット数、または自らの下位構造により規定できる。サンプルフォーマットのいくつかは抽象的であり、規定できるのは、サンプルが「赤、緑、青成分を含む」ということであり、その成分のビットサイズまたは他の下位構造の詳細に関するそれ以上の詳細は規定しない。
【０１３１】
サンプル成分
サンプル成分は、特定のサンプルフォーマットにより定義されるサンプル内部構造の一部を作り上げる特定データ成分を指す用語である。本明細書で説明する高品位３Ｄグラフィックスハードウェアアクセラレータでは、サンプル値はフレームバッファ内のピクセル値を効率的に置き換える。従って、サンプル値の成分すなわちサンプル成分は、ピクセル値の成分と極めて類似していなければならない。
【０１３２】
異なる３Ｄグラフィックスハードウェアアクセラレータを選択して、他のアクセラレータがサポートしない異なるサンプル成分をサポートする。今日ではほとんどの場合、サンプルは、少なくとも通常の３つの値の色成分、例えば、赤、緑、青、の数値を持つ。これらの値がそれぞれ必要とする格納ビット数、またはその値の数値フォーマットは、異なるシステム間で異なってもよい。
【０１３３】
通常の赤、緑、青のサンプル成分値に加えて、普通にみられるのが各サンプルの一部として格納されるいわゆる「α」成分値である。このα値は、いくつかの異なる周知のレンダリング手法に対して用いられる。
【０１３４】
レンダリングアルゴリズムに基づくＺバッファをサポートする３Ｄグラフィックスハードウェアアクセラレータについて、非常に重要なサンプル成分はＺ値（または、いくつかの他の距離に基づく何らかの値）である。
【０１３５】
その他の共通のサンプル成分は、ＯｐｅｎＧＬ仕様により定義されるステンシル面を含む。さらに、他のサンプル成分は、高速クリア面、オーバーレイ面、カーソル面、ウィンドウＩＤ面、および何年間もフレームバッファに現れていたその他類似成分のこともある。
【０１３６】
まだ触れていない点があるが、それはダブルバッファを実装する方法に関する。全てのサンプルが前後のバッファの両方を持つのか？  Ｚ値のようなサンプル成分は前バッファだけに存在するのか？  個々のウィンドウは、スクリーン上の他のウィンドウに影響を与えないで一度にバッファを切り換えることができるか？  各サンプルに含まれる異なる数の成分に対して、３Ｄグラフィックスハードウェアアクセラレータを構成する能力、および、どの成分をシングル対ダブルにバッファするかを構成する能力はあるか？  トリプルまたはそれ以上のバッファをサポートするか？  ステレオビデオ信号フォーマット、特にフィールドシーケンシャルステレオビデオ信号フォーマットはどうか？  その場合、ステレオをサポートするにはフレームバッファをどう設定すればよいか？  ステレオでは、いくつかのサンプル成分は４重バッファされるのか、または別の手法を用いるのか？  すべてのこれらフレームバッファアーキテクチャと、ピクセル成分とサンプル成分アーキテクチャとのトレードオフは、当該技術に精通する者にはなじみがあり、新規のＬｏｏｐアーキテクチャへのこれら要件の適用は、当該技術に精通する者は本明細書に基づき容易に理解できよう。
【０１３７】
ＲＧＢ
ＲＧＢは、文脈によりサンプルまたはピクセルの赤、緑、青のサンプル成分を指す用語である。この定義は、サンプル成分またはピクセル成分の数字表現に制限を加えない。別の具体例では、単一ビット、整数、固定小数点数、ブロック浮動小数点数（指数部は単純なシーケンシャル整数範囲より粗い量子化である）、浮動小数点数、共有指数浮動小数点数（単一の指数値が３成分すべてに適用される）、または他のもっと複雑な数字表現であってもよい。
【０１３８】
用語「ＲＧＢ」は、色スペクトル成分の表現を指すのが一般的である。その具体的表現では、４、５、８、２５、または１２８に分離したスペクトル成分すら用いてもっと正確に、物理的な世界の光の色、および材質オブジェクトとの相互作用を表現してもよい。
【０１３９】
時には、文脈上、用語「ＲＧＢ」を用いて、ピクセルフォーマット、またはピクセルもしくはサンプルのサンプルフォーマットを指す。
【０１４０】
ＲＧＢＡ
用語「ピクセル成分」および「サンプル成分」の定義で説明したように、時には色成分に加えて、ピクセルまたはサンプルは、ギリシャ文字のαで表されることもあるアルファ成分を持つ。ＲＧＢＡは、ピクセルまたはサンプルのＲＧＢ成分、およびα成分を指す用語である。
【０１４１】
ハードウエアの慣行では、３つ以上の色成分がある場合でも、単一のα成分を持つことになるが、セマンティックは、単一α成分をすべての色成分に関連させ、すべての色成分に適用すべきだということである。しかし、ソフトウエアレンダリングの分野では、アルゴリズムがフレームバッファに格納すべきαを必要とする場合、分離したα成分が色成分毎に結びついて明確に存在することは極く普通である。具体的に言えば、３色成分赤、緑、青が用いられている場合、３つの別々のα成分、α−ｒｅｄ、α−ｇｒｅｅｎ、およびα−ｂｌｕｅも同じく存在する。少なくとも本発明の一実施の形態では、ＲＧＢＡは、この６つのαおよび色成分構造を指す用語である。文脈では、用語「ＲＧＢＡ」を用いて、ピクセルまたはサンプルのピクセルフォーマット、またはサンプルフォーマットを指すこともある。
【０１４２】
より一般的な用語「ＲＧＢＡ」を用いて、ピクセルフォーマットまたはサンプルフォーマットを記述することもあるが、この場合、少なくとも一つの実施の形態では、色成分に加えて実際にα成分を用いるが、他の実施の形態では明示的なα成分を持たないこともある。
【０１４３】
時には、α成分の存在が、色成分およびＺ成分を超える何らかの追加成分のための代替であるので、実施の形態によっては、α成分に関して述べられた従来の追加成分をはるかに超える追加成分を含めて用いることもある。
【０１４４】
ＲＧＢＺ
ＲＧＢＺは、Ｚ成分はもとより、ピクセルまたはサンプルのＲＧＢ成分を指す用語である。Ｚバッファレンダリングを実行するためにピクセルとともにＺ値を格納する考え方は、コンピュータ・グラフィックスでは周知である。しかし、別の実施の形態は、Ｚ距離に関する値を計算するための別の公式を用いることもある。別の実施の形態では、これらのＺ値を表すために整数、固定小数点、ブロック浮動小数点、および浮動小数点を含むが、それに制限されない別の数字表現を用いることもある。
【０１４５】
文脈によっては、用語ＲＧＢＺを用いて、ピクセルまたはサンプルの、ピクセルフォーマットまたはサンプルフォーマットを指すことができる。
【０１４６】
ＲＧＢＡＺ
ＲＧＢＡＺは、用語「ＲＧＢＺ」の定義で説明したように、Ｚ値はもとより、ピクセルまたはサンプルのＲＧＢＡ成分を指す用語である。
【０１４７】
文脈によっては、用語「ＲＧＢＡＺ」を用いて、ピクセルまたはサンプルの、ピクセルフォーマットまたはサンプルフォーマットを指すことができる。
【０１４８】
より一般的な用語「ＲＧＢＡＺ」を用いて、ピクセルフォーマットまたはサンプルフォーマットを記述することもあり、その場合、少なくとも一つの実施の形態では、色成分およびＺ成分に加えて実際にα成分を用いるが、他の実施の形態では、明示的なα成分を持たないこともある。
【０１４９】
時には、α成分の存在が、色成分およびＺ成分を超える何らかの追加成分の代替であることもあるので、実施の形態によっては、α成分に関して述べられた従来の追加成分をはるかに超える追加成分を含めて用いることもある。
【０１５０】
サンプルバッファ
別に定義したように、フレームバッファはピクセルを含むイメージのためのデジタルメモリ格納である。しかしながら、ここで述べているのは、明示的なピクセルが実際に格納されていなくても、サンプルを含むイメージのためのデジタルメモリからもたらされるサンプルストリームからピクセルを創り出すハードウエアについてである。技術的には、ビデオ信号の一つ以上のフレームを記述する情報を保持しているので、そのメモリ格納は依然としてフレームバッファと呼ばれる。しかし、用語「フレームバッファ」が、例えば、グラフィックスハードウェアアクセラレータ全体対ピクセルのメモリ格納だけ、という２つの異なる意味をコンピュータ・グラフィックスの文脈で持つことになるので、本明細書では、用語「サンプルバッファ」を用いて、サンプルを表すイメージのメモリ格納を記述することもある。
【０１５１】
サンプル密度
用語「サンプル密度」を用いて、例えば、フレームバッファまたはサンプルバッファを述べる場合の文脈内で、ピクセルとサンプルとの間の関係を記述する。具体的には、サンプル密度は、１ピクセル内に含まれるサンプル数を指す用語である。その数は、大量のピクセルの文脈でピクセルの平均サンプル数を述べる場合に端数となることもある。サンプル密度は空間的に一定でないことすらある。最終的には、ビデオ出力信号が生成される前のグラフィックスレンダリングパイプラインで定義したように、ピクセルサイズは、ビデオ出力信号の段階で定義されたピクセルと面積が同じである必要は必ずしもないので、グラフィックスレンダリングパイプラインの残部、およびビデオ出力信号段階は、異なる定義のピクセルを用いていることからして、異なるサンプル密度を持つこともある。明確にする必要がある場合、ピクセルのこれら２つの異なる種類は、レンダーピクセルおよびビデオピクセルと呼ばれる。複数のサンプル密度は、サンプル密度（複数形）である。
【０１５２】
条件付きサンプル更新関数
フレームバッファの最も基本的な機能は、ピクセルまたはサンプルの内容を読み書きすることである。（この定義以降、説明を簡単にするために用語「サンプル」を用いるが、すべての場合に、その定義をピクセルにも適用する）。しかし、より複雑なサンプル操作の多いレイヤーが定義されていた。一般に、これらの操作は、新しいサンプル値と、宛先のサンプルアドレスとを有する。一般に、サンプル更新関数はこれらをパラメータとして取り、宛先サンプルアドレスから対応するサンプル値を取得し、新しいサンプル値と、サンプルアドレスから取得したものとに或る関数を実行し、そしてフレームバッファへその関数を実行した結果のサンプル値を書いて戻す。
【０１５３】
サンプル更新関数の単純な例は、例えば、ＡＮＤ、ＯＲ、ＸＯＲ等の各種のブール関数を含む。しかし、３Ｄレンダリングでは、非常に重要な関数は、新しいサンプル値のＺサンプル成分と、サンプルアドレスから取得したものとの比較に基づくサンプルの条件付き更新である。ほとんどのシステムは、特定の比較関数が広い範囲をとるが（例えば、超える、未満、以上、以下、等しくない、等しい、および他のもっと複雑な関数）、基本的な考えは、他のサンプルよりも視点に「より近い」いずれかのサンプルが、サンプルアドレスに現在格納されているものでなければならないということである。新しいサンプル値が「勝つ」場合、その値が、旧値に代わってフレームバッファに書き込まれる。さもなければ、既存値がそのまま保持され、フレームバッファに書き込む操作は不要になる。このいわゆる「Ｚバッファ更新関数」は、条件付きサンプル更新関数の一例である。
【０１５４】
他の条件付きサンプル更新関数は３Ｄレンダリングに存在し、サンプルのステンシルサンプル成分に関して条件付きであるものを含む。多くのα混合関数を含む算術的サンプル更新関数もあり、その場合、新しいサンプル色のサンプル成分と、サンプルアドレスに含まれる色サンプル成分との重み付けの合計を、サンプルアドレスに書いて戻す。他の条件付きサンプル更新関数は、個々のサンプル成分および／または読み書きされるサンプル成分のビットフィールドの、かなり単純な状態可変イネーブル／ディスエーブルである。
【０１５５】
３Ｄグラフィックスハードウェアアクセラレータ用の現実のハードウエアは、一般に、本明細書で説明する以上の更新関数をすべてサポートしなければならない。これら関数のすべての可能性のある組み合わせをカバーする簡単な用語を提供するために、本明細書においては、条件付きサンプル更新関数は、フレームバッファにレンダリングされるサンプルが処理されるべき場合に用いる一般更新関数を指す用語である。本発明の特定の実施の形態では、本明細書で説明するサンプル更新関数の任意の特定の組み合わせ、および文字通りに説明されたその他、または具体例のために定義した新しく特別なサンプル更新関数、を含むよう条件付きサンプル更新関数を定義する。
【０１５６】
スーパーサンプリング
スーパーサンプリングは、ピクセル当たり２つ以上の基底イメージの値を計算することにより動作するいくつかの３Ｄグラフィックスアンチエイリアス化アルゴリズムのいずれかを指す用語である。例えば、「ピクセル」ではなく「サンプリング」を用いる何れのアンチエイリアス化アルゴリズムである。３Ｄグラフィックスの言葉では、用語「スーパーサンプリング」と互換可能な用語「確率論的なサンプリング」が用いられることがあるが、本明細書では用いない。「確率論的なサンプリング」は、基底イメージ内のどのサブピクセルの位置が計算すべきサンプルかを決定するための特定クラスの方法を指す。本来、これらの方法は、最適または最適に近いと考えられてきたが、最近数年間の実験的および理論的研究によれば、他の方法に対してほぼ常に最適下限である。例えば、「確率論的なサンプリング」を用い作成されて得られた最終的なアンチエイリアス化イメージは、サンプリングのために基底イメージのサブピクセル位置を決定する他の方法を用いて生成したものより通常は悪く見える。
【０１５７】
アンチエイリアス化
アンチエイリアス化は、例えば、「ジャギー」の除去等、イメージ中に未だ残っている基底イメージの高い空間周波数によって、グラフィックスレンダリングパイプラインにより生成されたイメージ内の望ましくない不自然さを除去するためのいくつかの限定された仮定、または限定されない方法のいずれか、を指す用語である。用語「アンチエイリアス化」は、例えば、三角形ではなく、線をレンダリングするときだけ等、限定された特別な場合にだけこれらの不自然さを減少させる方法、およびこれら不自然さの除去のためのもっと限定されない方法、の両方を指す。
【０１５８】
用語「アンチエイリアス化」は、ハイフンを伴わない一語である。ハイフンがある場合、用語「エイリアシング」、および用語「エイリアスされたレンダリング」は許容できるが、一般的にはそういうケースはない。
【０１５９】
全画面アンチエイリアス化
全画面アンチエイリアス化は、アンチエイリアス化の方法のサブセットを指す用語である。イメージ内のどこであっても、レンダリング対象である大部分の、すべての種類のグラフィックスプリミティブに手を加える。これらの方法は通常はかなり一般的であり、グラフィックスレンダリングパイプラインの作業に加えられる制限の方が、特殊化されたアンチエイリアス手法が伴う制限より少ない。全画面アンチエイリアス化と見なされるには、その方法をいつ用いるか、の制限しかなく、そのように見なされない場合はあまりない。「全画面」タグが示すのは、その方法が一般的でなければならないことを示すだけであり、その方法は、例えば、特定のウィンドウのみ、またはウィンドウの下位領域のみ等、画面の狭い範囲で可能である。
【０１６０】
たたみ込み
たたみ込みは、一般に、全画面アンチエイリアス化の方法を実施するためにサンプルの２Ｄアレイに、たたみ込みカーネル（重さの集合）を適用することを指す用語である。技術的には、たたみ込みは、アンチエイリアス化手法の「再サンプリング」および「帯域通過」フィルタをともに適用する計算ステップの一つである。本明細書では、特に明示しない限り、これがたたみ込みの定義である。
【０１６１】
たたみ込みカーネル
たたみ込みカーネルは、たたみ込み計算で用いる重みの値の集合を指す用語である。本明細書では、これらのたたみ込み計算は、特に明示しない限り常に、全画面アンチエイリアス化方法の一部である。この意味は、たたみ込みカーネルは常に、再サンプリングおよび帯域通過フィルタの組み合わせによる、ということである。カーネル値自体は、全画面アンチエイリアス化方法の詳細により規定されるように、通常、動的に計算される。
【０１６２】
アンチエイリアスフィルタ
本明細書におけるすべてのたたみ込みカーネルは、アンチエイリアス化を目的としてフィルタ処理を実行するのに用いるたたみ込みカーネルフィルタを指すので、用語「アンチエイリアスフィルタ」は、アンチエイリアス化のために用いる任意のたたみ込みフィルタを指すように定義する。
【０１６３】
ボックスフィルタ
最も簡単な全画面アンチエイリアス化のための再サンプリングおよび帯域通過フィルタの一つが、ボックスフィルタである。フィルタ係数は、正方形ボックス下では至る所で１の値を有し、その他の場所ではゼロである。ボックスフィルタの普通のサイズは１ピクセルである。この種類のアンチエイリアスフィルタは１×１ボックスフィルタと呼ばれる。すべての係数について単純な一定値を有するので、ボックスフィルタは、もっと一般的なフィルタより計算費用が少なくて済む。他のもっと一般的なフィルタにより生成される場合よりも低い品位の結果を生じるのが一般的である。
【０１６４】
テントフィルタ
テントフィルタは、４面ピラミッドまたはテントのような形の簡単なアンチエイリアスフィルタを指す用語である。
【０１６５】
半径対称フィルタ
半径対称フィルタは、ある点のフィルタ係数値がフィルタ中心からの点の距離の関数だけで決まる任意のフィルタを指す用語であり、例えば、フィルタ中心からの点の方向の関数ではない。フィルタは、フィルタの中心からの点の距離であるパラメータの単一値の関数により全体的に決定される。この半径関数はフィルタの断面と呼ばれることもある。
【０１６６】
分離可能フィルタ
分離可能フィルタは、ｘ、ｙ点での値が２つの１次元フィルタ関数の積である任意のフィルタを指す用語であり、ここで、これら１次元フィルタ関数の一方はｘ座標だけの関数であり、他方はｙ座標だけの関数である。（もちろん、多くの異なるｘおよびｙ座標表現が可能である）。これらの形式のフィルタは、最終物理的イメージディスプレイ装置が正方形（または、ほぼ正方形）ピクセルを有する場合、またはピクセルが矩形グリッドである場合、半径対称フィルタを超える理論的品位および実際的品位の両方の利点を持つ。大部分の半径対称フィルタには、分離可能フィルタバージョンもあり、この追加フィルタは、本発明のいくつかの実施の形態とともに用いられる。
【０１６７】
ガウスフィルタ
ガウスフィルタは、半径関数がガウス曲線のアンチエイリアスフィルタである半径対称フィルタを指す用語である。
【０１６８】
三次フィルタ
三次フィルタは、半径関数が三次曲線であるか、または三次曲線断片の区分連続級数のアンチエイリアスフィルタである半径対称フィルタを指す用語である。
【０１６９】
ミッチェルネトラバリフィルタ
ミッチェルネトラバリ（Ｍｉｔｃｈｅｌｌ−Ｎｅｔｒａｖａｌｉ）フィルタは、三次フィルタの半径対称フィルタであるアンチエイリアスフィルタのファミリを指す用語である。この三次フィルタのファミリは、三次曲線断片が２つのパラメータＢおよびＣによりパラメータ化される２つの区分三次曲線断片により定義される。
【０１７０】
ｓｙｎｃフィルタ
ｓｙｎｃフィルタは、半径関数がｓｙｎｃ関数のアンチエイリアスフィルタである半径対称フィルタを指す用語である。ｓｙｎｃフィルタは最大半径を持たず、無限遠まで連続している。
【０１７１】
ウィンドウ化されたｓｙｎｃフィルタ
ウィンドウ化されたｓｙｎｃフィルタは、半径関数が特定の規定半径（ウィンドウ値）までのｓｙｎｃ関数のアンチエイリアスフィルタである半径対称フィルタを指す用語であり、フィルタ係数が、このウィンドウ値より大きい半径では常にゼロである。
【０１７２】
グラフィックスパイプライン
グラフィックスパイプラインおよびグラフィックスレンダリングパイプラインはともに、グラフィックスレンダリングシステムへの入力データが通過するシーケンシャルなパイプラインステージの集合を指す用語である。特定のコンピュータ・グラフィックスレンダリングＡＰＩは、通常は、実装するパイプラインステージの集合を詳細に規定する。文字としては、両用語は、いくつかの異なる種類のグラフィックスレンダリング処理の何れかを指すが、本明細書では、具体的には３Ｄグラフィックスレンダリング処理を指すことにする。明示的な用語３Ｄグラフィックスレンダリングパイプラインを使用する場合もある。
【０１７３】
レンダーパイプライン
３Ｄグラフィックスハードウェアアクセラレータでは、用語「レンダーパイプライン」および「レンダリングパイプライン」は、３Ｄグラフィックスレンダリングパイプラインを実際に実装するハードウエアの部分を指し、明示的な先行詞である３Ｄを通常は付けない。
【０１７４】
レンダーパイプラインステージ
グラフィックスパイプラインの定義が明らかにするのは、それがシーケンシャルパイプラインステージの集合から成るということであり、レンダリングパイプラインステージは、これらの個別のステージを指す用語である。いくつかのコンピュータ・グラフィックスレンダリングＡＰＩでは、パイプラインステージが何から構成され、境界がそれらの間のどこにあるかを明示する形式モデルがある。別の場合、用語「パイプラインステージ」が、検討対象になっているいくつかの設定操作を非公式に共通して指す。また、注意すべき点は、ほとんどすべてのコンピュータ・グラフィックスレンダリングＡＰＩのレンダーパイプラインが抽象的なパイプラインであることである。例えば、レンダリングパイプラインは、完全な３Ｄグラフィックス抽象レンダリング処理のセマンティックを正確に記述するが、ハードウエア、ソフトウエアのいずれにせよ、グラフィックスレンダリングシステムの実際の実装は、最終結果が抽象的仕様との一貫性を保つ限り、実質的に異なる順序および／または方法でグラフィックスレンダリングシステムの操作を実行できる。
【０１７５】
本明細書に記載する大部分のレンダリングパイプラインステージは、ハードウエアパイプラインステージまたは下位ステージであり、説明はこの文脈で読むよう心掛けるべきである。
【０１７６】
シェーダ
シェーダは、レンダリング処理上の柔軟な制御を可能とするよう、グラフィックスパイプラインにおける特定のあらかじめ定義された効果として用いられる特殊化されたコンピュータプログラムを指す用語である。シェーダコードは、必ずしも汎用プロセッサ素子上で実行する必要がなく、内部で動作しているグラフィックスパイプラインにより加えられる特定の限界および制約の影響を受けることもある。シェーダの特定の種類は、表面シェーダ、光シェーダ、位置シェーダ、体積シェーダ、大気シェーダ、イメージシェーダ、ベルテックスシェーダ、パッチシェーダ、ジオメトリシェーダを含むが、これらに限定はされない。
【０１７７】
ピクセルシェーダ
シェーダをリアルタイムで実行するようコンパイルする時、いくつかの異なるシェーダが一つにまとまったもの。この最も頻度が高い実行例はピクセルシェーダであり、これは、シェーダレートにより決定される頻度で、表面シェーダおよび光シェーダの組み合わせセマンティックを実行するが、これは何度もピクセル毎に実行される。グラフィックスレンダリングシステムの文脈における大部分のプログラマブルシェーダコードの実行を検討する場合、ピクセルシェーダはそのコードを指す用語として用いられることが多い。
【０１７８】
プログラマブルシェーダ
シェーダは、実際には最終ユーザがプログラミングできるので、プログラマブルシェーダとも呼ばれる。プログラマブルシェーダを用いることができるグラフィックスレンダリングシステムは、プログラマブルシェーダをサポートしていると言われる。
【０１７９】
シェーダレートおよびピクセルシェーダレート
所与のシェーダ、例えば、ピクセルシェーダに対して、そのシェーダを実行する特定の３Ｄグラフィックスハードウェアアクセラレータの性能をシェーダレートと称する。どの特定の実行例も、そのシェーダに対する測定名および測定単位を含むのがよい。例えば、ピクセルシェーダに対して、ピクセルシェーダレートを、ピクセルシェーディング／秒の単位で表す。
【０１８０】
ピクセルシェーダパワー
ピクセルシェーダパワーは、所与のピクセルシェーダの相対的な複雑さを表す用語である。単純化した用語では、ピクセルシェーダパワーは、ピクセルシェーダのソースコード行数（直線パスで）、またはソースコードの（直線パスの）テクスチャ参照回数により大まかに測定できる。所与の３Ｄグラフィックスハードウェアアクセラレータでは、一般に、ピクセルシェーダの相対的ピクセルシェーダパワーが高いほど、そのピクセルシェーダのピクセルシェーダレートは遅くなる。常にとは限らないが通常は、ピクセルシェーダパワーが高い方が、最終レンダリングイメージの結果はより複雑に、またはリアルになる。
【０１８１】
手続き型テクスチャ
手続き型テクスチャは、標準テクスチャマップがある時にイメージとして格納されたものではなく、テクスチャの個々のテクセルが必要な場合に、表面シェーダ（または他のある種類のシェーダ）により動的に創り出されたテクスチャマップを指す用語である。手続き型テクスチャの利点は、イメージとして格納された標準テクスチャマップに比べて、仮想的な無限サイズおよび仮想的な無限非繰り返しディテールをもつことができる、という点にある。手続き型テクスチャの不利な点は、テクセルへアクセスする度に大量の計算を必要とし、例えば、手続き型テクスチャを用いる表面シェーダの速度をかなり遅くすることがある。手続き型テクスチャは合成テクスチャとも呼ばれる。
【０１８２】
手続き型ジオメトリ
手続き型ジオメトリは、例えば、山のフラクタル生成など、手続き型ジオメトリを創り出すプログラマブルシェーダを指す用語である。手続き型ジオメトリは、手続き型テクスチャと類似の概念である。
【０１８３】
グラフィックスプリミティブ
グラフィックスプリミティブおよびジオメトリックグラフィックスプリミティブは、サンプルまたはピクセルを直接レンダリングするオブジェクトの種類を指す用語である。ジオメトリックグラフィックスプリミティブは、例えば、光が相互作用する何らかのもの等、光を反射し、光を放射し、光をフィルタリングし、または光を曲げる、実世界の表面または体積に在ったものの各一部を通常に表すジオメトリック要素である。普通のグラフィックスプリミティブは三角形であり、他の例には、線と点、および高次表面表現、およびボクセルを含む様々な体積表現がある。グラフィックスプリミティブは他にも、例えば、文字およびテキストなど、もっと複雑なものでもよい。本明細書の目的にとっては、用語「グラフィックスプリミティブ」と「ジオメトリックグラフィックスプリミティブ」との間に意味の差はない。
【０１８４】
限定詞「プリミティブ」は、グラフィックスハードウェアアクセラレータが、ホストコンピュータの追加支援なしに、オブジェクトを直接処理できるというセマンティックな意味の混乱を招くが、その実際の意味は、グラフィックスＡＰＩを用いるアプリケーションソフトウエアは、オブジェクトを単純な、または他のプリミティブに明示的にブレークダウンする必要がないということである。オブジェクトがグラフィックスハードウェアアクセラレータに到着する前に、ホストコンピュータ上を走るライブラリで、このブレークダウンのいくらかを行ってもよい。
【０１８５】
大部分のジオメトリックグラフィックスプリミティブは、頂点の集合として、グラフィックスＡＰＩに直接または間接に書き込まれる。この頂点のデータに加えて、コントロール用頂点は、多数のジオメトリックグラフィックスプリミティブが共有するので、コントロール用頂点の一つに対する仕様ではなくて、書き込まれるジオメトリックグラフィックスプリミティブに対するデータ仕様があってもよい。
ジオメトリックグラフィックスプリミティブは、２次元でも３次元でもよい。
【０１８６】
位置
コンピュータ・グラフィックスでは、位置は空間位置を指す用語である。例えば、通常は、標準の数学的２、３、または４次元空間である特定空間の数学的な点である。
【０１８７】
頂点
コンピュータ・グラフィックスでは、頂点は少なくとも位置の特性を有する複合オブジェクトである。頂点の最も重要な特性が位置であることは確かであるが、頂点がいくつかの他の属性を持っていてもよい。頂点（ｖｅｒｔｅｘ）の複数形はｖｅｒｔｉｃｅｓである。
【０１８８】
頂点が持っている追加特性は、法線、色、テクスチャ座標、およびそれらの任意の組み合わせを含むが、それらに限定はされない。コンピュータ・グラフィックスの頂点は数学的な点の表現だけでないことを強調するために、用語「頂点データ」、「頂点情報」および「頂点特性」を用いて、頂点に含まれる特性の全体集合を指す。
【０１８９】
単純なジオメトリックグラフィックスプリミティブを定義するために規定しなければならない頂点はいずれも、規定されるジオメトリックグラフィックスプリミティブの表面上にある三角形のようなものである。しかし、例えばベジエ（Ｂ・ｓｉｅｒ）パッチおよび他の高次表面等、もっと複雑なジオメトリックグラフィックスプリミティブは、追加の数学的に規定される点が必要であり、一般に、これらの追加点は表面上にはない。コンピュータ・グラフィックスでのこのような追加の点の表現は、コントロール用頂点と呼ばれる。混乱を避けるために、本明細書では、コントロール頂点は、ジオメトリックグラフィックスプリミティブを定義するすべての頂点を指す用語である。
【０１９０】
三角形
線
点
用語「三角形」、「線」および「点」は、ジオメトリックグラフィックスプリミティブに共通の特定インスタンスである。これらのプリミティブは、直接または間接的に３、２または１個の頂点をそれぞれ規定することによりグラフィックスＡＰＩに書き込まれる。これらのグラフィックスプリミティブは、２次元プリミティブとして現れることもあり、３次元バージョンを、グラフィックスハードウェアアクセラレータにより２次元バージョンに変換してもよい。本明細書では、これらの用語は、特に明示しない限り常に、これらのオブジェクトの３次元バージョンを指す。
【０１９１】
注意すべきは、何かが３次元と２次元空間にある場合に、何らかの混乱が起きるかもしれないことである。画面空間へ変換し、フレームバッファにレンダリングした場合、これらグラフィックスプリミティブは、グラフィックスハードウェアアクセラレータに３次元グラフィックスプリミティブとして入力されているのに、今では２次元と考えられることがある。しかし、これらのグラフィックスプリミティブの画面空間バージョンをレンダリングする前に、Ｚバッファ（および、その他多くのレンダリングオプション）が可能な限り、グラフィックスプリミティブは、すべての点に対して定義されるＺ値をまだ有しているので、技術的には依然３次元である。
【０１９２】
高次表面
高次表面は、例えば、通常は、表面が曲面になっていて平面でない、三角形よりも複雑な３つの空間に組み込まれたジオメトリックグラフィックスプリミティブを表現するための幅広いメソッドを指す用語である。本明細書では、特定の高次表面表現の明示的なインスタンスは頻度が少ないので、その代わりに通常は、すべての人が共有する幅広い高次表面の表現メソッド（例えば、一般にそれらは平面でない、またはクリップが容易である等）を検討することになる。
【０１９３】
高次表面の特定インスタンスは、ベジエパッチ、２次表面、超２次表面、３次パッチ、Ｂスプライン面、多項式パッチ、非一様有理関数Ｂスプライン面（ＮＵＲＢＳ）、円錐曲面、線織曲面、回転面、陰関数面、分割面、フラクタル面、ウエーブレット面、およびこれら面すべての両側トリムと片側トリムバージョンを含む。
【０１９４】
圧縮ジオメトリ
圧縮ジオメトリは、ジオメトリックグラフィックスプリミティブのこれまでの表現よりも少ない格納スペースですむジオメトリックグラフィックスプリミティブの各種符号化を指す用語である。圧縮は可逆であっても、不可逆であってもよい。不可逆圧縮は、プリセプトリアル（ｐｒｅｃｅｐｔｏｒｉａｌ）な可逆でもよい。この意味は、圧縮は数字の点からは不可逆でよいが、例えば、一旦圧縮すると、１対１のビットで元のジオメトリックグラフィックスプリミティブを正しく再構成できない、ということである。しかし、その差は少ないので、レンダリングされたジオメトリックグラフィックスプリミティブを見る人は、何が失われたかを確信をもって言うことができない。
【０１９５】
深さの複雑さ
深さの複雑さは、ピクセル（または、サンプル）の条件付き更新関数が、フレームバッファのピクセル（または、サンプル）の特定領域に適用される１フレームのレンダリング中の時間を、特定領域のピクセル（またはサンプル）の全面積で除した数を指す用語である。仮定としては、レンダーしたグラフィックスプリミティブだけが三角形であるということであり、レンダリングイメージの深さの複雑さは、レンダリングされているイメージのピクセル（サンプル）を覆う三角形の平均数である。
【０１９６】
ラスター化パイプラインステージ
３Ｄグラフィックスハードウェアアクセラレータの主なタスクの一つは、ホストコンピュータから、または内部のディスプレイリストメモリから受け取ったグラフィックスプリミティブに応答して、これらのグラフィックスプリミティブをフレームバッファにレンダリングすることである。大部分のグラフィックスパイプラインは、フレームバッファに影響を与えないレンダリングの多くの、最初のレンダリングパイプラインステージを定義しているが、フレームバッファ内のピクセルまたはサンプルの条件付き更新関数への入力の一つとして用いられるピクセルまたはサンプル値を実際に生成するパイプラインステージは、ラスター化パイプラインステージ、または、時には単にラスター化と呼ばれる。
【０１９７】
走査線
多くのラスター化（および、他の）アルゴリズムは、ビデオ信号フォーマットが出力ピクセルのシーケンス転送順序を定義するのと同じ順序で、ピクセル値をレンダリングする。その順序は、ほとんどのＣＲＴが電子ビームを蛍光スクリーン上で走査する順序、つまり、左から右へ、そして、上から下への順序と同じである。イメージの１列からシーケンシャルにピクセル集合に走査を実行している場合、操作がビデオ出力信号処理に直接接続されていない場合でも、操作が（ピクセルの）走査線上で実行されていると言うのが普通である。
【０１９８】
フィルレート
ピクセルフィルレート
サンプルフィルレート
３Ｄグラフィックスハードウェアアクセラレータの性能は、所与のアクセラレータが特定のタスクを実行できるレートにより測定できる。ラスター化のタスクはそのような一つである。ラスター化の性能は、多くの方法で測定できるが、３Ｄグラフィックスハードウェアアクセラレータをベンチマークテストするのに普通に用いる２つの特有な方法がある。一つは、ラスター化ステージのフィルレートを測定することである。フィルレートは、ピクセルまたはサンプルが生成され、ピクセルまたはサンプルの条件付き更新関数がフレームバッファに適用されるレートを指す用語である。用語「フィルレート」の前に限定詞が付かない場合は、満たされるエンティティは、通常は、ピクセルであると仮定される。より特有な場合は、用語「ピクセルフィルレート」および「サンプルフィルレート」が、「満たされ」つつある特定のフレームバッファエンティティを指す。レートは、エンティティ／秒の単位で測定される。例えば、ピクセルフィルレートはピクセル／秒の単位で測定され、サンプルフィルレートはサンプル／秒の単位で測定される。注意すべきは、いくつのサンプル密度（例えば、平均で何サンプル／ピクセルがあるか）でピクセルフィルレートを測定したか、という記述があれば、フレームバッファでピクセルの代わりにサンプルを用いるシステムは、依然、ピクセルフィル／秒により特性付けられるラスター化性能を持つ、ということである。
【０１９９】
注意すべきは、フィルレートは、通常はピークレートであり、例えば、レートは、各々が多数のピクセルを覆うジオメトリックグラフィックスプリミティブのラスター化で測定される。そのために、フィルレートは漸近的フィルレートと呼ばれる。
【０２００】
少数のピクセルだけを覆うジオメトリックグラフィックスプリミティブについては、そのジオメトリックグラフィックスプリミティブのレンダリングにおけるグラフィックスレンダリングシステムの性能は、フィルレートに依存するだけでなく、最大ジオメトリックプリミティブレートにも依存する。例えば、プリミティブがほとんどピクセルを覆っていなくても、ジオメトリックグラフィックスプリミティブ毎に実行しなければならない各種のオーバーヘッド動作の影響を受ける。例えば、１ピクセル未満を覆うジオメトリックグラフィックスプリミティブ等の限界では、ラスター化時間はフィルレートに対して独立であり、最大ジオメトリックプリミティブレートに支配される。
【０２０１】
最大ジオメトリックプリミティブレート
最大三角形レート
設定限界三角形レート
先に説明したように、１ピクセル未満を覆うジオメトリックグラフィックスプリミティブに対して、それをラスター化するのに要した時間は、仮想的に、どのフィルレートにも依存しないが、最大ジオメトリックプリミティブレートによりほとんど完全に決定される。これは、仮定として各ジオメトリックグラフィックスプリミティブのラスター化が、フレームバッファのピクセルまたはサンプルの条件付き更新関数への入力の一つとして用いなければならないピクセル値またはサンプル値をほとんど、または全く生成しないとしても、別のプリミティブの後、一つのジオメトリックグラフィックスプリミティブがグラフィックスレンダリングシステムを通過することができる、最大レートである。
【０２０２】
このレートは、異なるジオメトリックグラフィックスプリミティブに対して全く異なることがあるので、複雑な抽象レートを用いずに、例えば、三角形、線、点の、規定ジオメトリックグラフィックスプリミティブによりレートを測定するのが普通である。規定ジオメトリックグラフィックスプリミティブの種類に対する最大レートですら、規定するのは容易ではない。グラフィックスレンダリングシステムの多くの他のレンダリング状態値により、所与のジオメトリックグラフィックスプリミティブの種類の最大レートが大きく変化する。実行できる最上の方法は、規定ジオメトリックグラフィックスプリミティブの種類に対する最大ジオメトリックプリミティブレートを表す場合、レンダリング状態値および他の因子に影響を及ぼす潜在的レートの多くを、むしろ表記すべきである。
【０２０３】
三角形は多くの場合に最も重要なジオメトリックグラフィックスプリミティブであり、最大三角形レートは、異なる３Ｄグラフィックスハードウェアアクセラレータを比較または対比する上で、特有な対象となる。
【０２０４】
フレームバッファがほとんど何も実行していない場合、例えばフィルレートが（多くの）因子でない場合に、性能を制限するジオメトリックグラフィックスプリミティブのレンダリングにおける主なオーバーヘッド計算は、通常、３Ｄグラフィックスレンダリングパイプラインの設定ステージにある。このステージは多くの場合、最大ジオメトリックプリミティブレートの大部分を決定するので、時には、その主な原因を明示的に名付ける。例えば、最大三角形レートは設定限界三角形レートとも呼ばれる。
【０２０５】
フレームバッファおよびビデオ用語
３Ｄグラフィックスハードウェアアクセラレータの２つの重要な概念は、フレームバッファの概念、およびビデオ信号フォーマットの概念である。ビデオ信号フォーマットは、第３の重要な概念である物理的イメージディスプレイ装置へ情報を転送するための正式なインターフェースを指す用語である。本セクションは、これら３つの領域に関連するいくつかの技術的用語に定義を与える。これらの用語は、本明細書の説明で用いる前に、特定の定義が必要になる。
【０２０６】
フレームバッファ
グラフィックスハードウェアアクセラレータと、他のコンピュータハードウエアの領域との定義の差は、グラフィックスハードウェアアクセラレータの方は、組織、プロシージャ、および人が見ることができるイメージへのデジタルコンピュータ情報の変換、に関わるという点にある。（この定義では、グラフィックスハードウェアアクセラレータは、イメージ処理ハードウェアアクセラレータのサブフィールドも含む）。汎用コンピュータに接続された最も初期の物理的イメージディスプレイ装置は、１９８０年代初頭以降、個々の表示灯、次いでオシロスコープであったが、イメージディスプレイを基にした大部分のコンピュータは、フレームバッファの概念に基づく外部Ｉ／Ｏプロセッサ（グラフィックスハードウェアアクセラレータ）に取り付けられた。
【０２０７】
ホストコンピュータの観点からは、フレームバッファは典型的には主メモリの領域に見える。このメモリは、ピクセルと呼ばれる固定サイズのバイナリデータの２Ｄアレイとしてさらに組織化された。ピクセルは、可能な最小バイナリデータサイズ、つまり１ビットから始まったが、時間が経つにつれ、用語「ピクセル」を用いて内部構造も有するもっと大きなオブジェクトを定義するようになった。グラフィックスアクセラレータは、以前のグラフィックスアクセラレータと異なり、フレームバッファが２Ｄアレイのあらゆる場所の明示的な（かつ、等しいサイズの）ピクセル値を格納できるフレームバッファの概念に基づくようになった。それで、フレームバッファをピクセル格納フレームバッファと称して、そのような明示的専用格納を持たない代替のグラフィックスアクセラレータとの間を更に区別することもある。最も初期のフレームバッファは、各ピクセルに１ビットだけの格納を用いたので、人が見るイメージのすべてのピクセルが、例えば、すべての「ビット」は、別の可視的なピクセルに「マップ」されたように、フレームバッファの別の専用ビットによりバックアップされていることを強調するために、フレームバッファをビットマップディスプレイとも呼んだ。
【０２０８】
物理的イメージディスプレイ装置のビデオの観点からは、フレームバッファは、ビデオ信号出力として物理的イメージディスプレイ装置にビデオ出力インターフェースを介して送り出される、何らかの合意されたビデオ信号フォーマットのビデオ信号（当初はアナログビデオ信号であったが、今ではデジタルビデオ信号が増えている）に、連続的に変換される２Ｄピクセルアレイである。これが現在起きていることである。２Ｄのピクセルアレイの巾と高さは、最近まで陰極線管（ＣＲＴ）であることが多かった物理的イメージディスプレイ装置の画面上のドットのラスターの巾と高さになる。
【０２０９】
ビデオ技術の文脈における用語「フレームバッファ」はビデオ情報の（少なくとも）１フレームを格納できる装置である。コンピュータ・グラフィックスの文脈で、用語「フレームバッファ」は、例えば、ピクセルを含むイメージのためのデジタルメモリ格納を含む外部Ｉ／Ｏプロセッサと、最初は同じことを意味していた。ここで、外部Ｉ／Ｏプロセッサは、物理的イメージディスプレイ装置への入力として、フレームバッファの内容を、ビデオ出力インターフェースを介してビデオ信号フォーマットのビデオ出力信号へ連続的に送り出すことができる。外部Ｉ／Ｏプロセッサを接続するホストコンピュータは、レンダリングアルゴリズムを含む広く多様性のあるコンピュータ・グラフィックスアルゴリズムでピクセルを読み書きできる。初期のコンピュータ・グラフィックスフレームバッファは単一バッファであった。例えば、ピクセルから成るただ一つのフレームのためのメモリ格納を有していて、同一ピクセルに、ビデオ出力サブシステムがアクセスするホストコンピュータが同時にアクセスした。
【０２１０】
しかし、これらのコンピュータ・グラフィックスフレームバッファは、ハードウエアレンダリングのためのサポートや、ビデオ用語で用いられる普通の定義からまもなく外れてしまったことを含め、かなり多くの特徴を加えて始まった。コンピュータ・グラフィックスの分野で現在用いられる用語「フレームバッファ」には２つの用法がある。一つは、その用語を用いて依然として物理装置全体を指すことである。例えば、装置が単一フレーム格納をどれくらい超えるようになったか、とは無関係に、大部分の任意のグラフィックスハードウェアアクセラレータを指す。グラフィックスハードウェアアクセラレータの物理形式が単一プリント基板の場合、用語「フレームバッファカード」もこれと同じ感覚で用いられる。コンピュータ・グラフィックスでの用語「フレームバッファ」のもう一つの現在の用法は、もっと大きなサブシステムの特別な一部である。例えば、もっと大きなグラフィックスハードウェアアクセラレータシステムのフレーム格納構成である。本明細書では、用語「サンプルバッファ」を用いて、メモリ格納が、ピクセルではなくて、またはピクセルに加えて、サンプル格納ができることを強調することがある。
【０２１１】
特定のフレームバッファは、内部のピクセルアレイのピクセル巾および高さにより特性付けることができ、これはフレームバッファの解像度とも呼ばれる。特性はまた、フレームバッファがサポートするピクセルのビットサイズも含む。こうして、「￥」により分けられた３つの数字は、フレームバッファの解像度、およびピクセルサイズ（ビット）を記述する標準用語となった。例えば、６４０￥４８０￥８は、各ピクセル毎の格納についての「６４０ピクセル巾」掛ける「４８０ピクセル高さ」掛ける「８ビット」のイメージを格納するフレームバッファである。この表現は３つの数字をもち、最初の２つの数字は巾と高さを指したので、ピクセルサイズは、ピクセル深さと呼ばれることもあり、あるいは、これがビットで表したピクセルサイズだったので、フレームバッファの「ビット深さ」とも呼ばれる。これは、後で説明するもっと一般的な３Ｄ概念と混同すべきではない。フレームバッファも、フレームバッファ能力の特徴付けに含めてもよい２次属性をいくつか有て、次に最も普通の属性は、生成している最終ビデオ信号のビデオリフレッシュレートである。３つの数字の特性は、初期のフレームバッファを説明する良好で包括的な方法であったが、フレームバッファの複雑さが増してきたので、ほとんどすべてのフレームバッファは、２ピクセル以上のアレイ分解能、ビデオリフレッシュレート、または２ビットサイズ以上のピクセルさえサポートできる。従って、今日、普通になったのは、フレームバッファを、それがサポートする最高解像度で特徴付けるか、または、それがサポートするすべての重要な解像度、ピクセルサイズ、およびビデオリフレッシュレートを明示的にリストアップすることである。
【０２１２】
フレームバッファカード
フレームバッファの概念を実装した最も初期の外部Ｉ／Ｏプロセッサ（イメージのまさにピクセルだけのための別々の専用ビット格納）は、他にほとんど何も実行しなかった。例えば、それらプロセッサは、「アクセラレート」も、３Ｄレンダリングは無論のこと２Ｄレンダリングさえも実行しなかった。ホストコンピュータがアクセスし、修正するイメージのデジタル表現を単にメモリ格納するだけであり、また、何らかの合意されたビデオ信号フォーマットのビデオ出力信号として、ビデオ出力インターフェースを介して、ＣＲＴまたは他の物理的イメージディスプレイ装置にこのイメージを連続的に送り出した。従って、これらの外部Ｉ／Ｏ装置は、ホストコンピュータを物理的イメージディスプレイ装置に結合する。例えば、コンピュータ世界のデジタルイメージを、物理的世界のリアルなフォトンイメージと結合させる。
【０２１３】
従って、汎用コンピュータ用のドーター基板であることが多いこれら物理的サブシステムは、しばしば「フレームバッファ」またはフレームバッファカードと呼ばれた。本明細書では、記述子「カード」なしの用語「フレームバッファ」は、用語「フレームバッファカード」と同じものを意味しない。その代わり、用語「フレームバッファ」は、他の意味を定義するために予約しておく。（簡単に言えば、大きなグラフィックスハードウェアアクセラレータサブシステムのイメージ格納構成要素）。
【０２１４】
年が経ち、この機能を提供する大部分の市販製品は、サブシステム内に付加計算処理を追加するようになった。今では、２Ｄレンダリングのサポートはますます追加され、今日では、これら製品の多くが、３Ｄレンダリングのサポートをかなり含んでいる。しかし、汎用コンピュータを１台以上の物理的イメージディスプレイ装置に結合させる今日の高度な製品は、依然として、簡単なフレームバッファ構成要素を通常は含んでいて、ソフトウエアによる方法で用いられる。従って、歴史的およびいくつかの機能的理由の両方により、用語「フレームバッファカード」は、汎用コンピュータを物理的イメージディスプレイ装置に結合させる何らかの装置を、たとえ、この結合を実行する装置が複雑な３Ｄグラフィックスハードウェアアクセラレータであったとしても、その装置を（漠然と）指すために用いるのが普通である。
【０２１５】
物理的イメージディスプレイ装置
広範な技術が展開され、人が知覚する光の写真を電子システムが生成し制御できる外部Ｉ／Ｏ装置が製造されるようになった。このような外部Ｉ／Ｏ装置を、物理的イメージディスプレイ装置と呼ぶことにする。常にという訳ではないが通常は、これらの物理的イメージディスプレイ装置は、リアルタイムレートで、異なる２Ｄイメージのシーケンスを動的に生成する能力を持っている。語句としては、いくつかの普通のもっと短い用語を文脈で用いてこのクラスを指す。こうした用語には、ディスプレイ装置、イメージディスプレイ、イメージディスプレイ装置、および可視的ディスプレイがある。実際には、大部分の普通の物理的イメージディスプレイ装置として、陰極線管（ＣＲＴ）が最近まで圧倒的に多く用いられたので、これらの他の用語の代わりに、物理的イメージディスプレイ装置の全クラスを総称して頭字語ＣＲＴを用いる。本明細書の記載の大部分は、物理的イメージディスプレイ装置を扱っている訳ではないので、多くの場合、システム全体の構成要素を言及する必要がある場合に、クラス名のうちの一つを用いる。
【０２１６】
電子信号をリアルタイムのイメージシーケンスへ変換するための所与の技術を２つ以上の方法で用いて、人の眼にフォトンを結合させる。異なる結合方法はそれぞれ、物理的イメージディスプレイ装置の異なるサブクラスにつながる。限定はしないが３つの例をあげると、直視型装置、投射型装置（前面または背面）、および頭部搭載型ディスプレイ（ＨＭＤ）という人の視覚システム結合方法がある。ＨＭＤ装置は実に、直視型、投射型、または人の眼の網膜上への直接イメージ形成型の内部構造を備えている。
【０２１７】
これを考えると、物理的イメージディスプレイ装置のクラスは、限定はしないが、直視型ＣＲＴ、直視型ＬＥＤパネル、直視型プラズマパネル、直視型エレクトロルミネッセンスパネル、ＬＥＤベース型ディスプレイ、ＣＲＴベース型プロジェクタ、ＬＣＤベース型プロジェクタ、ＬＣＯＳベース型プロジェクタ、ＤＭＤベース型プロジェクタ、レーザーベース型プロジェクタ、および頭部搭載型ディスプレイ（ＨＭＤ）を含む。
【０２１８】
ハードコピーディスプレイ装置
ある程度人が見えるようにフォトンを生成および／または制御する他の方法はあるが、いずれも動的に制御できないハードコピーディスプレイ装置である。従って、紙およびフィルムのプリンタは、リアルタイムディスプレイ装置と見なすことはできない。しかし、本明細書の目的からは外れる。
ビデオ信号
【０２１９】
２Ｄイメージのシーケンスを表現する情報が、何らかの媒質中を信号を介して搬送され、その情報フローの速度が、イメージシーケンスがリアルタイムレートで流れるようなものである場合、その信号はビデオ信号と呼ばれる。このような信号は電子的であることが多く、情報は電圧の振幅変化により搬送され、媒質の材質は導電性である。信号は、電磁波（無線波）であり、情報は波の特性により搬送され、媒質は自由大気、または自由空間である。信号は光でもよく、その場合は情報が光の強度変化により搬送され、媒質は光に透明な材質（自由大気および自由空間を含む）であるが、光ファイバケーブルのような「導光性」材質でもよい。（技術的には光は電磁放射の周波数が高い形に過ぎないが、実際には、異なる物理的な材料および装置を用いて光を扱わなければならないので、別の形式の信号であると考えるのが普通である）。
【０２２０】
アナログビデオ信号
デジタルビデオ信号
圧縮デジタルビデオ信号
イメージ情報のシーケンスは、ビデオ信号により様々な方法で表現できる。イメージの小領域の強度をビデオ信号の（ある尺度での）強度に直接マッピングする符号化は、アナログビデオ信号と呼ばれる。最初に（イメージ定義の小領域としての）ピクセル強度をデジタル値にマッピングし、次に、デジタル値のビットをビデオ信号の（ある尺度での）強度にマッピングする符号化をデジタルビデオ信号と呼ぶ。デジタルピクセルとしてのイメージのシーケンス表現であるデジタル情報を、デジタル値のビットをビデオ信号の（ある尺度での）強度にマッピングする前に、より小さなサイズのデジタル表現へ最初に圧縮する符号化は、圧縮デジタルビデオ信号と呼ばれる。
【０２２１】
ビデオ信号フォーマット
これら形式の何れかの形式のビデオ信号に含まれる情報を、再びイメージ（これが興味の核心である）のシーケンスとして再構成するのに、いくつかの仕様の構造および集合が必要である。ビデオ信号のこれら形式の何れかの形式に対して、イメージシーケンスの特定構造の表現へ／から、どのようにイメージを符号化し、復号化するかの仕様を、ビデオ信号フォーマットと呼ぶ。
【０２２２】
アナログビデオ信号のビデオ信号フォーマットのほとんどは、１９３０年代および１９４０年代に標準化された最初のテレビジョンビデオ信号フォーマットに直接由来しており、ＮＴＳＣ、ＰＡＬ、ＲＳ１７０、ＶＧＡ、ＳＶＧＡ等のフォーマットが含まれる。もっと最近では、デジタルビデオ信号用のいくつかの新しいビデオ信号フォーマットが用いられていて、Ｄ１およびＤＶＩフォーマットが含まれる。  通信で用いる圧縮デジタルビデオ信号用のいくつかの新しいビデオ信号フォーマットもあり、ＨＤＴＶ用のいくつかの改良版、すなわち、１０８０ｉ、７２０ｐ、１０８０ｐ、１０８０／２４ｐ、Ｄ１０等が含まれる。
【０２２３】
ビデオ出力インターフェース
ビデオ出力信号
第１の装置により２つ以上のビデオ信号を生成し、次に、各ビデオ信号にとって適切な媒質であればそれを介して、２台以上の追加装置に伝送する場合、各ビデオ信号を、そこで適切な伝送媒体（例えば、電線、同軸ケーブル、光ファイバ等）に結合する物理的な境界にもたらす第１の装置の部分を、ビデオ出力インターフェースと呼ぶ。ビデオ出力インターフェースを通って流れるビデオ信号は、ビデオ出力信号と呼ばれる。
【０２２４】
解像度
本明細書では、用語「解像度」を用いて多くの異なる種類のイメージ、すなわち、ビデオ出力信号イメージ、テクスチャマップとして用いられるイメージ、フレームバッファにレンダリングされたイメージ等の特性を指す。解像度はそれ自体、全体としてイメージの空間帯域幅特性を指す用語であるが、通常は明示的に、整数値のピクセルの単位で測定されたイメージの幅および高さを意味する。解像度は抽象的な概念であり、何らかの方法でイメージと対応するいくつかの他の特定概念を適用しなければならない。語句としては、用語「解像度」は、文脈によっては何の限定詞も付けずに用いることもある。本明細書では、適切な限定詞を常に用いる。
【０２２５】
ビデオ解像度
ビデオ信号フォーマットの一特性が解像度であり、通常は一対の整数として表される。すなわち、整数値のピクセルの単位で記述、表現されるイメージの幅と高さである。注意すべき点は、これらのピクセルは矩形でも矩形でなくてもよい、ということである。従って、語句「ビデオ解像度」を用いてこの一対の数字を指すことができる。
【０２２６】
ビデオ信号フォーマットの他の特性には、そのフレームレート、およびビデオ信号の帯域幅を低減するためのインターレース交互走査線の使用可能性が含まれる。場合によっては、語句「ビデオ解像度」は、ビデオ信号フォーマットのピクセル幅と高さを指すだけでなく、ビデオ信号フォーマットがインターレースを用いるかどうか、を示し、さらに希ではあるが、ビデオ解像度が、フレームレートの特定記述を含んでもよい。
【０２２７】
フレーム
ビデオフォーマットフレーム
レンダーフレーム
フィールド
インターレース
イメージシーケンスがリアルタイムで送られているときに、イメージシーケンスから得た単一イメージを、用語「フレーム」を用いて記述する。ビデオフレームが過ぎていくのにかかる時間周期を述べるとき、用語「ビデオフォーマットフレーム」は、レンダーフレームとして周知のレンダリングフレームレートの逆数からビデオフォーマットフレームレートの逆数を区別するために用いられる。
【０２２８】
用語「フィールド」を用いて、フレームシーケンスの所与のフレームからのイメージのいくつかの局面について、グローバルではあるが潜在的に部分的な情報を搬送するビデオ信号フォーマットのシーケンス部分を記述する。例えばインターレースを用いない、いわゆる、プログレッシブビデオ信号フォーマットでは、ビデオ信号の全フィールドはビデオ信号のフレームでもある。インターレースされるビデオ信号フォーマットのためのインターレースの定義は、すべてのフレームが２枚のシーケンシャルフィールドにブレークダウンされることであり、その第１は、伝送されるイメージ中のピクセルのすべての奇数列を含み、第２は、伝送されるイメージ中のピクセルのすべての偶数列を含む。注意すべきは、インターレースが最初にどのように生成されたかに依存するので、セマンティックが微妙になることがある、ということである。技術的にインターレースのテレビジョン標準が規定しているのは、各フィールドは、フレーム高さのピクセル数の半分だけを伴うそれ自体が完全に分離したイメージであり、従って、フィールドのピクセルの高さはフレームで規定するピクセルの２倍である。従って、高速で動くオブジェクトのテレビジョンフレームは、異なる時点の２枚のイメージが重なったように見える。別の局面では、２枚のフィールドは、実際、単一イメージを分けて伝送するだけである。さらに複雑な問題が他に起きるのは、現在送られているのとは別のビデオ信号フォーマットで最初に創られたビデオ信号を伝送する場合である。例えば、２４フレーム／秒の映画フィルムをＮＴＳＣビデオ方式で伝送しなければならない場合、いわゆる「３−２プルダウン」が必要になる。
【０２２９】
ビデオ信号フォーマット
フィールドシーケンシャルカラー
フィールドシーケンシャルステレオ
インターレースの概念は、フィールドをフレームと同じものとしないビデオ信号フォーマット表現手法だけではない。シーケンシャルカラービデオ信号フォーマットでは、３枚のシーケンシャルフィールドがフレーム毎にあり、各フィールドは１色の成分を専用に含む。例えば、第１フィールドは送られるイメージのピクセルの赤成分だけ、第２は緑だけ、第３は青である。（もちろん、カラー成分の表現順序は任意の異なる順序を用いることができる）。
【０２３０】
フィールドシーケンシャルステレオビデオ信号フォーマットでは、各フレームに２枚のシーケンシャルフィールドがある。第１のフィールドは、左眼用の完全なイメージを送り、第２フィールドは右眼用の完全なイメージを送る。これら２枚のイメージは、例えば、人が見ている物理的イメージディスプレイ装置上のビデオイメージの知覚に空間的分離効果を与えるシャッター付き眼鏡、または偏光、または見る角度により立て続けに、送ったときと同じように示される。この方法で、見ている人の左眼に（ほとんど）左のイメージだけが可視化され、見ている人の右眼に（ほとんど）右のイメージだけが可視化され、立体視の奥行きが知覚される。代替として、左右の眼のフィールドを２台の別の物理的イメージディスプレイ装置に送り、何らかのメカニズムを用いて、見ている人の適切な眼に適切な視覚イメージの配送を確実にする。大部分のＨＭＤの場合、眼はそれぞれ専用に配置されたディスプレイ装置を持つので、それぞれの眼はそれぞれのディスプレイ装置だけを見る。１台の物理的イメージディスプレイ装置に高速表示するのではなく、２台の別々のディスプレイ装置を用いる場合、技術的には、フィールドシーケンシャルステレオビデオ信号フォーマットは、１つのビデオ信号に２つの別々のイメージストリームを多重化して送るだけである。やはり注意しなければならないのは、複数のこれらのフィールド手法を組み合わせることができるということである。いくつかの市販のＨＭＤは、各フレームに６枚のフィールドを有するインターレース型フィールドシーケンシャルカラービデオ信号フォーマットを用いている。
【０２３１】
フレームレート
ビデオフォーマットフレームレート
レンダリングフレームレート
レンダーレート
レンダリングレート
ビデオ信号フォーマットの文脈では、語句「フレームレート」を用いて、特定のビデオ信号フォーマットについて、イメージシーケンスが送られている時に新しいイメージが送られるレートを表示する。送信フレーム数／秒の単位で測定する。類似しているが別の概念であるグラフィックスレンダリングシステムのフレームレートと混同するのを避けるために、本明細書では一般に語句「ビデオフォーマットフレームレート」を用いる。ビデオフォーマットフレームレートは、通常はビデオ信号フォーマットに依存する一定値である。その一定値は、ビデオ信号フォーマットの明示的特性である。
【０２３２】
グラフィックスレンダリングシステムの文脈では、２Ｄまたは３Ｄのいずれであっても、語句「フレームレート」を用いて、新しいイメージがレンダリングされているレートを表示する。フレームレートは、レンダリングされたフレーム／単位時間、通常は、レンダリングされたフレーム／秒で表されなければならない。しかしながら、レンダリングされたフレーム枚数／秒が１未満になる場合、例えば、レンダリングされる単一フレームにつき１秒を超える場合、フレームレートは、時間／レンダリングされたフレーム、の単位で表されることもある。例えば、秒数、分数、時間数、または日数／レンダリングされたフレームである。この理由は、一般に、ハードウエアレンダリングは、レンダリングされたフレーム／秒、の単位で測定されるのが普通であり、他方ソフトウエアレンダリングは、要した時間／レンダリングされたフレーム、の単位で測定されるのが普通だからである。類似しているが別の概念であるビデオ信号フォーマットの「フレームレート」と混同するのを避けるために、本明細書では一般に語句「レンダリングフレームレート」を用いる。所与のフレームをレンダリングするのに要した時間は通常は決定論的ではないので、レンダリングフレームレートは一定値ではないのが普通である。しかしながら、平均または目標として、レンダリングフレームレート評価を緩く規定できることもある。例えば、フライトシミュレーション等、性能が重要なシミュレーション用途では、一定のレンダリングフレームレートは非常に重要な目標であり、多様な方法が開発されて、ターゲットフレームレートにより割り当てられる所与のフレームに多くの時間を要しないようにしている。やはり注意が必要なのは、文脈によっては、レンダリングフレームレートを短縮した語句「レンダーレート」、または「レンダリングレート」を用いることがある、ということである。
【０２３３】
フィールドレート
ビデオフォーマットフィールドレート
ビデオ信号フォーマットの文脈では、語句「フィールドレート」および「ビデオフォーマットフィールド」を用いて、特定のビデオ信号フォーマットについて、フレームシーケンスが送られている時に新しいフィールドが送られるレートを表す。送信フレーム数／秒の単位で測定する。
【０２３４】
ビデオリフレッシュレート
繰り返しになるが、語句「フレームレート」の潜在的曖昧さにより、本明細書では、語句「ビデオリフレッシュレート」を一般に用いて、対象のレートが、ビデオ信号フォーマットの（一定値の）特性であり、グラフィックスレンダリングシステムの非決定論的特性ではないことを示す。残念ながら、語句「ビデオリフレッシュレート」には一貫した使い方がなく、大抵は、ビデオフォーマットフィールドレートを指すために用いるが、時には、ビデオフォーマットフレームレートを指すために用いる。
【０２３５】
ビデオフォーマットフレームレート
ビデオフォーマットピクセルレート
ビデオフォーマットピクセル周波数
半世紀も前のアナログビデオ信号フォーマットから欠落している重要な概念は、ピクセルの概念である。ビデオ信号フォーマットは垂直レート（フィールドレート）、およびラインレート（水平再トレース周波数）の両方を注意深く定義しているが、ピクセルレートには言及していない。白黒のＣＲＴでは、ビデオ信号は連続のアナログ信号であり、ピクセルまたはピクセル境界がない。
【０２３６】
現在、多くの状況では、ピクセルの概念は、新しいビデオ信号フォーマットはもとより、旧いフォーマットに追加しなければならない。ある場合には、様々な理由から、ピクセルを正方形（矩形）でなくするような方法で定義したが、それは多くの３Ｄレンダリングアルゴリズムでうまく機能しない。さらに近代のビデオ信号フォーマットでは、ピクセルを正方形またはほとんど正方形（例えば、ある場合には６％だけ正方形でない）と定義した。正方形かどうかには無関係に、一旦、ピクセルがビデオ信号フォーマットに関して定義さると、そのビデオ信号フォーマット内のピクセルレートについて語ることができる。例えば、Ｈｚで測定されるビデオフォーマットピクセルレート、または周知の等価周波数用語であるビデオフォーマットピクセル周波数などである。注意点は、ビデオ１フレーム内の可視ピクセル数と、ビデオフォーマットピクセル周波数で除したビデオフォーマットフレームレートとの差が存在することである。この理由は、ほとんどのビデオ信号フォーマットは、可視ピクセルが存在しない水平および垂直両方の消去時間を有するからである。ピクセル周波数のこれら２つの異なる定義のいずれを、グラフィックスハードウェアアクセラレータの異なる部分がサポートしなければならないのかは、出力ピクセルの個々の走査線がどのようにバッファされているかの詳細に関わる複雑なトレードオフであり、当該技術に精通する者には周知である。
【０２３７】
ビデオフォーマットフレームサイズ
ビデオ信号フォーマット内の単一フレームの全ピクセル数は、ビデオ解像度の巾と、ビデオ解像度の高さの積である。この数はビデオフォーマットフレームサイズと呼ばれる。文字としては、画面サイズとも呼ばれるが、この用語は本明細書では用いない。
【０２３８】
物理的イメージディスプレイ装置本来の解像度
物理的イメージディスプレイ装置に対する多くの現在のより新しい技術のイメージは、例えば、ＣＲＴの、実質的に連続している蛍光面とは違って、離散ピクセルから構成される。語句としては、構成されたピクセルのビデオ解像度を本来の解像度と呼び、明確にするために本明細書では、少し長い用語「物理的イメージディスプレイ装置本来の解像度」を用いて同じことを指す。
【０２３９】
大部分のそのような装置は、通常は何らかの電子回路を有し、物理的イメージディスプレイ装置本来の解像度と異なるビデオ解像度を有するビデオ信号フォーマットを、物理的イメージディスプレイ装置本来の解像度と同じビデオ解像度を有する別のビデオ信号フォーマットに変換する。しかしながら、この変換は表示されるイメージの品位を低下させるので、可能ならグラフィックスハードウェアアクセラレータをプログラミングして、確実にビデオ出力信号のビデオ信号フォーマットのビデオ解像度が、物理的イメージディスプレイ装置本来の解像度と同じになるようにするのがよい。
【０２４０】
３Ｄグラフィックスハードウェアアクセラレータの非常に重要な追加すべき領域が２つある。それは、ＩＣ技術とメモリチップ技術である。本明細書のここでは、本発明の説明で用いる前に定義する必要があるいくつかの重要な技術用語を作って、これらを定義することになる。
【０２４１】
ビット格納デバイス用技術
デジタルコンピュータと以前のアナログコンピュータの定義の違いは、デジタルビット情報として情報を表し、格納し、そして処理するデジタルコンピュータの能力である。初期のデジタルコンピュータはビットを格納するのに真空管を用いたが、５０年代の磁気コアメモリの発明により、大部分の汎用コンピュータの主要内部ビット格納の必要性のためにコアメモリに切り換えた（いわゆる主メモリ。たとえ他の装置を用いていても、今でも大抵の場合「コアメモリ」と呼ぶ）。磁気メディアに存在する２次メモリ、および大きさは限定されるが非常にアクセス頻度が高い格納（例えばレジスタ）は、新規開発のトランジスタで構成される。トランジスタメモリは、非常に高速であるが高価でもある。いくつかのトランジスタに加えていくつかの他のデバイス（ダイオード、抵抗器、キャパシタ）が単一ビットの格納に必要である。
【０２４２】
集積回路
６０年代初頭、電子回路を構成する新しい技術が発明された。集積回路（ＩＣ）は、半導体材料の小型の単一チップの表面上に、最初は１ダース、後にはもっと多くのトランジスタ、ダイオード、抵抗器、および他の電子デバイスを構成し、相互接線を可能とした。本明細書の目的のために、用語ＩＣは、以下で定義する用語「チップ」と同じ意味をもつと定義する。
【０２４３】
ＩＣの発明は、単一デバイス内にいくつかのビットを格納するのを可能とした。これはレジスタにとっては好適だが、主メモリに用いるには依然として余りにも高価である。
【０２４４】
チップ
今日の技術は、単一シリコンチップ上にますます複雑な集積回路を配置する能力を常に高めることにより、その発展を促される。ほとんどの大型チップは別々にパッケージへ収められるが、先端のパック技術である「マルチチップモジュール」、および、中でもウエハスケール集積は、パッケージとシリコンチップの１対１の関係を曖昧にする。また、現在の電子回路のほとんどは、シリコンチップの上面に構成される一方、今日ではシリコン以外の他の材料も用いられ、将来はもっと多く用いられることになろう。従って、本明細書の目的に対して、用語「チップ」は、本発明の範囲をシリコン製チップだけ、または必ず単一の材料片に制限するような意味を持たない。文脈では、用語「チップ」は、実際の基板材料のみ、そして基板の表面に加えられた電子回路、の両方を指すが、もっと使用されるのは、ほとんどのチップが組み込まれるパッケージを含む物理部品全体を指す場合である。
【０２４５】
ピン
デジタルおよびアナログの両情報、ならびに電力、クロック、および基準電圧は、チップのパッケージから延びる別々の導電体により、個々のチップへ／から、もたらされる。パッケージ技術では、ずっと昔に作られたチップの電気接続は、例えば、真空管の底面に見られるような個別の金属ピンであった。１９６０年代から１９９０年代までのチップに用いられたパッケージ技術の多くは、チップパッケージの縁で曲がって、形はもはや常に円筒形とは限らないのに相変わらずピンと呼ばれる金属の鋭くて狭い小片を形成する金属リードフレームであった。最近のチップのパッケージ技術には、中でも、いわゆる「ボールグリッドアレイ」があり、チップへの外部の電気接続が半球状の金属となっている。しかしながら、これら金属小片は依然としてピンと呼ばれ、特に、チップで形成する電子システムの全体アーキテクチャ設計について話す場合、およびパッケージの真の３次元形成の非常に特定の詳細が関係しない場合に、そう呼ばれる。本明細書では、ピンは、パッケージ内の電子回路をパッケージ外界に接続する個々の導体を指す用語である。
【０２４６】
チップがもつピン数は、コストと性能のトレードオフの関係にある。チップのピン数が少ないほど、一般に、シリコンチップおよびパッケージのコストは下がり、チップの電力消費も低くなる。しかし、チップのピン数が増えると、一般に、チップへ／からの、得られるデータ帯域幅は高くなる。従って、一般に、チップ間を流れるのに必要な帯域幅を低下させる設計を決定できれば、結果的にピン数の少ないチップが得られる。他方、チップのピン数が増えるほど、どんなシステムでも、チップを含んで得られる潜在的性能は高くなる。これらトレードオフの関係のバランスは、一般に、システム立案者によるシステムレベルで実行される。なぜなら、システムコストを最小にする一方、システムの性能を最大にする際に、システム製品が目標とする多様なマーケットセグメントの現在および予想される将来の両方のコストと性能の感度に、他のトレードオフの部分が関係するからである。
【０２４７】
ＡＳＩＣ
用語「ＡＳＩＣ」は、「アプリケーション特定集積回路」の頭字語である。本発明の目的に対して、ＡＳＩＣは、広く多様な使用に対して設計されたもっと一般的なチップとは反対に、例えば、コンピュータ・グラフィックスアルゴリズムを実行する等、特定の特殊目的で設計されたチップを指す用語である。用語「ＡＳＩＣ」は、例えば、シーオブゲート、ゲートアレイ、プログラマブルゲートアレイ等、「フルカスタム」に満たないＩＣ設計ツールで設計されたチップに限ることを意図してはいない。
【０２４８】
ＦＩＦＯ
ＦＩＦＯは、「先入れ先出し」の頭字語であり、電子回路ハードウエアの文脈では、ビットの固定サイズグループを無相関バーストで出し入れするフレキシブルな格納バッファを指す用語である。製造者が予め定義されていないレートでデータを生成し、消費者が別の予め定義されていないレートでデータを消費する場合、ＦＩＦＯバッファを用いて、同一種類データの、消費者から特定種類データの製造者へのインターフェースをするのが典型的である。多くの種類のＦＩＦＯバッファは、ＦＩＦＯバッファの様々な内部状況の下で、警告信号を送る能力を有し、特に、「高水位線」警告信号が示すのは、例えば、オーバーフロー寸前等、格納能力が頭打ちになる所定の限界内にある、ということである。
【０２４９】
当初は、ＦＩＦＯは個別のチップとして製造されたが、現在では、大部分のＦＩＦＯは、単一ＩＣ上への大規模回路設計の至る所で用いることができる別の小さな回路に過ぎない。
【０２５０】
ＲＡＭ
ＲＡＭは、「ランダムアクセスメモリ」の頭字語である。この用語を用いて、特定の予め定義された順序にはない内容にアクセスしても、性能低下がほとんどないか、または全くないメモリと、そのような性能低下がある他の種類のメモリとの違いを表す。ほとんどの場合、特定種類のＲＡＭデバイスは、メモリチップと呼ばれる。
【０２５１】
メモリチップ
ＩＣにより、２ビット以上の情報を含むように単一チップを構築することが可能となった。これはメモリチップと呼ばれる新たなクラスのデバイスを生み出した。この用語は、ビットで表された情報を格納、検索、および時には処理するよう設計された汎用および特殊目的のいくつかのチップを指す。本発明の多くは、メモリチップを組織化して用いる特殊な方法に関係するので、この用語は重要である。
【０２５２】
最も初期のメモリチップは、チップに内部格納ビットより多いピンを有していたので、それらのビットは、チップの外から多かれ少なかれ直接アクセスできた。しかし、チップに組み込まれるビット数は、最終的にチップへ経済的に取り付け得るピン数を超え、内部の多重化が必要になった。この多重化手法は、その時には既に磁気コアに基づくメモリシステム用に設計されていた。すなわち、メモリ内からのデータは、最初に内部アドレス（ただの文字列）を表すことにより読み書きし、次いで、そのアドレスにより関係するビットにアクセスする。ビットにアクセスするこの形式は、メモリチップがＲＡＭ型であることを意味する。
【０２５３】
最新のメモリチップは、以下に説明する多様なサブクラスをもつ。本発明の説明では、大抵の場合、特定クラスのメモリチップに言及することになる。
【０２５４】
ローカルメモリサブシステム
メモリチップの大部分の応用では、２個以上のメモリチップが用いられる。メモリを互いに集合させるのは、より複雑な単一のメモリシステムと考えられることが多い。このメモリチップの集合は、単一の制御チップにすべて接続してもよいし、または制御アレイを２個以上のチップに接続してもよい。接続する非メモリチップの数にかかわらず、その集合を本明細書では、ローカルメモリサブシステムと呼ぶ。
【０２５５】
簡単な場合、ローカルメモリサブシステムは、より長い語長および／またはより大きな格納能力を有する場合、ほとんど単一メモリチップのように振る舞う複合エンティティと見なすことができる。
【０２５６】
特に、データ入出力ピンを除くほとんどすべての制御線を共有する２個の同一メモリチップは、実際のメモリチップの２倍の語長、および２倍の格納能力を有する単一メモリチップのようにほとんど見える。
【０２５７】
データ入出力ピンを含むほとんどすべての制御線を共有する２個の同一メモリチップは、実際のメモリチップと同じ語長を有するが、２倍の格納能力を有する単一メモリチップのようにほとんど見える。
【０２５８】
上記２つのパラグラフに記載の構成手法は、ともに別の種類のローカルメモリサブシステムを創出するために応用できる。ほとんどすべての制御線を共有する４個の同一メモリチップではあるが、データ入出力ピンを共有するメモリチップは半分だけ、という場合は、実際のメモリチップの２倍の語長を有し、４倍の格納能力を有する単一メモリチップのようにほとんど見える。
【０２５９】
明らかに、これらのメモリチップ構成手法を拡張して、合計ｍ×ｎの実際のメモリチップを用いて、実際のメモリチップのｍ倍の語長、ｍ×ｎ倍の格納能力を有するローカルメモリサブシステムを形成することができる。これが、多くのローカルメモリサブシステムがこれまでに創られてきた理由である。構成手法には限界があり、メモリチップ、または別のチップの単一ピンにより駆動される制御チップ、のいずれかのチップピン数に限界がある。多数の同一または同一でないメモリチップを、ローカルメモリサブシステムにまとめるには、本明細書で説明する方法の他に、もっと複雑な方法もある。
【０２６０】
ローカルメモリサブシステムの検討は本明細書に関係する。なぜなら、３Ｄグラフィックスハードウェアアクセラレータのアーキテクチャは、一つ以上の異なるローカルメモリサブシステムの設計を含むことがあるからであり、特に本明細書で説明する本発明の場合に関係する。
【０２６１】
語長
単一メモリチップの特別な文脈で、語長は、並列にメモリチップへ／から移動できるデータビット数を指す用語であり、ほとんどの場合、これはメモリチップに取り付けられた入出力データのピン数である。いくつかのメモリチップが、ローカルメモリサブシステムにあるとして、全体で一個として考えられる場合、語句「語長」は、並列にメモリチップグループへ／から、移動できるビット数を指し、ただ一個のメモリチップ上のピン数に制限されるものではない。
【０２６２】
ＳＲＡＭ
格納ビットがすべて、一個のメモリチップ上にあったとしても、各格納ビットは依然として、格納と、各ビットへの読み書きのアクセスとができるよういくつかの内部トランジスタを必要とする。このような格納デバイスのメモリチップを構築する別の方法がいくつかあるが、外部からアクセスされるこのような多数ビットのメモリチップは、スタティックランダムアクセスメモリ、または単にＳＲＡＭと呼ばれる。これらのメモリチップは、内部に格納できる合計ビット数（例えば、「２５６−ビットＳＲＡＭ」）で特徴付けられるが、アドレスが提示されてから、メモリチップのピン上で一度にすべて利用可能なビット数（すなわち、メモリの語長）によっても特徴付けられる。従って、単一ビット幅のデバイスは、「２５６￥１ ＳＲＡＭ」と記述してもよい。この用語は、フレームバッファ解像度を特徴付けるためのものと混同されることもある。主な違いは、メモリは常に、例えば、２５６Ｋまたは６４Ｋ￥４など、１個または２個の「乗算される」数字により特徴付けられ、フレームバッファ解像度は、例えば、６４０￥４８０￥１など、３個の「乗算される」数字により特徴付けられるのが普通である。時には、ピクセルサイズが重要でない場合、および、フレームバッファまたはビデオ解像度について述べていることが文脈から明らかな場合、例えば、ＶＧＡの解像度は、６４０￥４８０である、というように２個の「乗算される」数字を用いてもよい。
【０２６３】
ＤＲＡＭ
１９７０年代初頭に、デジタルビットを格納するための新しい回路が発明され、その回路は、格納ビット当たり１個のトランジスタを必要とするにすぎなかった。トレードオフは、ビットが安定に留まっているのは１秒に満たず、その後、その値を失うということであった。これらのメモリチップは、すべてのビットを１秒間に何回か、リードおよびリライト、またはリフレッシュしなければならない。メモリチップのこの新しいクラスは、ダイナミックランダムアクセスメモリ、または単にＤＲＡＭと呼ばれた。
【０２６４】
フレームバッファの概念を市販品に及ぼしたのは、比較的安価な（格納ビット当たり）ＤＲＡＭの導入だった。フレームバッファの存在はＤＲＡＭの設計にも影響を与えた。すなわち、格納されたピクセルフレームバッファと、ＤＲＡＭアーキテクチャおよび技術との共生的発展があった。
【０２６５】
ＶＲＡＭ
１９８０年代中頃に、ＤＲＡＭメーカー（ＴＩを含む）は、製品のかなりの割合をフレームバッファ業界に販売していた。しかし、１６Ｋ￥１容量のＤＲＡＭから６４Ｋ￥１容量のＤＲＡＭへの移行中に、奇妙なことが起きた。新しいＤＲＡＭのプロトタイプ部品を獲得できるようにいつも最優先で依頼を行ってきたフレームバッファ業界が、いずれの６４Ｋ￥１のＤＲＡＭ部品も依頼してこなかったのである。そうしたことから、最高級品のフレームバッファを製造する業界へ６４Ｋ￥１のＤＲＡＭ部品が販売される様子はなかった。
【０２６６】
ＤＲＡＭの密度は、データアクセスの帯域幅よりはるかに早く成長していたのである。その主要な尺度は、ビット／秒で測定されるメモリチップの帯域幅と、ビットで測定されるメモリチップのメモリ容量との比である。
【０２６７】
第２セットのデータピンを有する特別なＤＲＡＭは、標準データピンと並行して内部メモリにアクセスできる。この考え方は、メモリデータピンのこの第２セット、つまり「メモリポート」を用いて、ＤＲＡＭの標準の読み書きアクセスにほとんど完全に並行して、ビデオ出力信号に必要なデータだけを読み出すことができるということにあった。それで、この第２メモリポートは、普通に「ビデオポート」と呼ばれる。これは、かなり大きいが、特別な帯域幅を加えることによって、ＤＲＡＭチップの帯域幅問題の核心を突いた。これらの部品はＶＲＡＭと呼ばれ、頭字語は「ビデオランダムアクセスメモリ」である。一般に、「現行」ＤＲＡＭ世代と同じ量の内部ビットを格納できるが、ＶＲＡＭチップの物理的大きさは、そのＶＲＡＭと同じビット数を格納できるＤＲＡＭの大きさの２倍であるのが普通である。この追加のチップ領域は第２メモリポート（ビデオポート）をサポートするのに必要であり、そのため、格納ビット当たりでみると同等のＤＲＡＭ部品よりＶＲＡＭの方が高価になる。しかし、部品は、グラフィックス端末、またはワークステーション組込み用のフレームバッファを製造するメーカーにとって著しく経済的であったので、大部分の最高級コンピュータおよびディスプレイメーカーが使用した。１９８０年代中頃から９０年代初期にかけて、ＰＣはまだ低いピクセル深さのＶＧＡフレームバッファを、低いビデオフォーマットピクセルレートで使用して、標準ＤＲＡＭを用いた安価な設計を行うことができた。
【０２６８】
この時点で、ディスプレイ技術は、依然高価なＣＲＴをベースにするものであった。ＣＲＴの解像度は、テレビジョン標準規格である６４０ピクセル幅×４８４ピクセル高さ、インターレース型ビデオ信号フォーマットを用いるリフレッシュレート３０回／秒、と同じ仕様で始まった。これらのビデオ信号フォーマットは、ほぼ１２００万ピクセル／秒のビデオフォーマットピクセルレートを必要とした。この時間フレームで、１９７０年代終わりから１９８０年代終わりまで、ＣＲＴ技術はまだ解像度で進歩していた。次の解像度目標は、１００万ピクセルのオーダーのイメージを表示することであった。この時点では、しっかりした高解像度標準はなかったので、多くの異なるビデオ信号フォーマットが販売されていた。その好例は、１０２４ピクセル幅×１０２４ピクセル高さで、インターレース型ビデオ信号フォーマットを用いたリフレッシュレート３０回／秒である。このビデオ信号フォーマットは、ほぼ４０００万ピクセル／秒のビデオフォーマットピクセルレートを必要とする。しかし、こうした装置を利用したほとんどの人々が、インターレース型ビデオ信号フォーマットを見るのを好まなかったので、ほとんどの新しいビデオ信号フォーマットは、ビデオフォーマットピクセルレートが、所与のビデオ解像度に対して、インターレース型ビデオ信号フォーマットを用いた場合に比べて２倍以上でなければならないことを意味したとしても、非インターレースビデオ信号フォーマット（今ではプログレッシブフォーマットと呼ぶ）を用いなければならなかった。さらに、旧電子回路は、ビデオフォーマットフレームレートが、米国の電力供給に使われている周波数６０ＨｚのＡＣと直接関連していなければならないという制限があった（欧州および世界のいくつかの地域では５０Ｈｚ）。その時すでに、フレームバッファを利用する人々は、少なくとも６６Ｈｚのビデオフォーマットフレームレートを要求しており、結局、欧州労働協約では７２Ｈｚ、７６Ｈｚ、そして、場合によっては８４Ｈｚのリフレッシュレートを要求していた。フレームバッファがサポートしなければならないビデオフォーマットピクセルレートに対し、こうしたすべては、何を意味していただろうか？その時点での一つの普通のビデオ信号フォーマットは、１１５２ピクセル幅×９００ピクセル高さ、リフレッシュレートは６６回／秒であった。このビデオ信号フォーマットが必要とするビデオフォーマットピクセルレートは、ほぼ８４００万ピクセル／秒である。その時点での別の普通のビデオ信号フォーマットは、１２８０ピクセル幅×１０２４ピクセル高さ、リフレッシュレートは７６回／秒であった。このビデオ信号フォーマットが必要とするビデオフォーマットピクセルは、ほぼ１億３５００万ピクセル／秒である。
【０２６９】
３ＤＲＡＭ
３ＤＲＡＭは、従来の非同期インターフェースから、パイプライン化、クロック化、同期化したインターフェースへ変更し、３２ビット幅に広げ、そして、ＶＲＡＭ上へＺバッファ比較を移動したＶＲＡＭに２種類のレベルのＳＲＡＭキャッシュを置く。現在のＤＲＡＭおよびＳＲＡＭは３ＤＲＡＭに酷似していて、同期化、パイプライン化、クロック化したインターフェースを用い、チップ上に小さなＳＲＡＭキャッシュを用いる。３ＤＲＡＭは、（ダイ面積の小さい）ビデオ出力ポート、およびＺバッファ用の特殊ＡＬＵ動作、およびフレームバッファＯＰを備えているという点で異なっていた。
【０２７０】
３ＤＲＡＭは、達成可能な性能面に大きな変化をもたらした。
【０２７１】
Ｂ．各実施の形態
本明細書は、低コストで極めて高性能なリアルタイム３Ｄグラフィックス製品のための新しい拡張可能なアーキテクチャの技術を説明する。高度に技術的ではあるが、情報を比較的高レベルで提示するので、例えば、ビットフィールド名およびサイズについては、個々に詳細を説明しない。
【０２７２】
新しい製品の概念、ＧｒａｐｈｉｃｓＳｌａｂを、現在および将来の汎用コンピュータ製品の、最低価格帯ではない３Ｄグラフィックスの要件に対するソリューションとして導入する。ＧｒａｐｈｉｃｓＳｌａｂは、業界標準のＩ／Ｏインターフェースを用いて、一台以上のホストコンピュータに接続する内蔵型サブシステムである。ＧｒａｐｈｉｃｓＳｌａｂの物理的パッケージは、ラックマウント式の、例えば２Ｕであるような、Ｕの少数の倍数である高さを持つシャーシ内にあるのが普通である。本明細書は、ＧｒａｐｈｉｃｓＳｌａｂ製品構築に高度に適合したＬｏｏｐアーキテクチャと呼ばれる新規の３Ｄグラフィックスハードウェアキテクチャについて説明する。Ｌｏｏｐアーキテクチャは、多数のグラフィックスＩＣを互いに接続して、最高級の３Ｄレンダリングシステムを形成する方法に対する全く新規なソリューションを与える。このＬｏｏｐアーキテクチャがとる方法は、ＩＣ設計、ＩＣパッケージ化、ＩＣ相互接続、必需品であるＤＲＡＭの技術、および最高級３Ｄグラフィックスアプリケーションおよびユーザの特殊な要求、における現在およびこの先予測される数年にわたる将来の動向により提示される技術的制約（「リアリティ」）全体にとっての洗練されたソリューションである。
【０２７３】
３Ｄグラフィックスアーキテクチャおよびメモリ技術の両方におけるいくつかの背景技術情報から始めて、高性能３Ｄグラフィックスハードウェアアクセラレータ製品を構築する主要な技術的問題に対する一連のソリューションとして、Ｌｏｏｐアーキテクチャ自体を説明する。
【０２７４】
新規アーキテクチャの開発
ＤＲＡＭを購入するとき、格納ビットを購入していることになるが、同時に帯域幅を購入している。ＤＲＡＭからビットを読み書きするのにかかる時間は、アクセスパターンによりいくらか変わるが、最高状態での上限が存在する。
【０２７５】
ＡＳＩＣを構築し、ＡＳＩＣのピンのいくつかを単一のＤＲＡＭチップのピンに取り付ける場合、そのＤＲＡＭの上限帯域幅を決めたことになる。
【０２７６】
しかし、単体のＡＳＩＣに２個のＤＲＡＭチップを取り付けるとしたらどうなるだろうか？取り付けたメモリチップからのＡＳＩＣが利用し得るメモリ帯域幅の上限は２倍になるだろうか？その答えは、場合によりけりである。というのは、２個のＤＲＡＭを１個のＡＳＩＣに取り付けるには、３つの別の有用な手法があるからである。
【０２７７】
第１の手法はＡＳＩＣに対するもので、全て新規のピンを用いて、第２のＤＲＡＭチップを取り付ける。例えば、どちらのＤＲＡＭのピンもＡＳＩＣの同じピンには取り付けない。この方法であれば、取り付けたＤＲＡＭチップに対してＡＳＩＣが得る上限帯域幅が実際に２倍になる。不利な点は、ＡＳＩＣが、ＤＲＡＭとの通信に用いるピン数を２倍にしなければならないということである。
【０２７８】
第２の手法はＡＳＩＣに対するもので、一組だけのピンを用いて、アドレスとの間で通信し、両ＤＲＡＭのピンを制御する一方、ＡＳＩＣは、既存のピンを用いて、第１ＤＲＡＭのデータピンとの間で通信し、新規ピンを追加して、第２ＤＲＡＭのデータピンとの間で通信する。この方法は、第１の手法よりＡＳＩＣのピンが少なくて済み、最大帯域幅は２倍のままである。しかし、２個のＤＲＡＭチップを備えるローカルメモリサブシステムの語長は、第１手法の場合の２倍になる。ＤＲＡＭチップからのデータを送受信する時に、ＡＳＩＣがこの広い語長のビット全てを用いなくてもよい場合、実効帯域幅が低下する。
【０２７９】
第３の手法は、ＡＳＩＣに対するもので全てのピン（ＤＲＡＭ「チップイネーブル」ピン以外）を両ＤＲＡＭと共有する。この手法は、ＡＳＩＣがＤＲＡＭチップとの通信に用いるピン数を最小化するが、取り付けられたＤＲＡＭチップに対してＡＳＩＣが得ることができる上限帯域幅は全く上がらない。つまり、単一のＤＲＡＭが取り付けられた場合と同じままである。
【０２８０】
これら３つの手法は、利用可能帯域幅の最大化と、ＡＳＩＣに加えられなければならないピン数の最小化との間のトレードオフ曲線に沿って３つの異なる点を形成する。１個のＡＳＩＣに４個のＤＲＡＭを取り付けた場合はどうだろうか？８個のＤＲＡＭの場合は？１６個のＤＲＡＭの場合は？その答えは、上記３つの手法の異なる組み合わせを、３個以上のＤＲＡＭチップを取り付ける場合より複雑な方法で同時に利用できる、である。いくつかの点から見て明らかに、どのＡＳＩＣも単一チップに経済的に追加できる新規ピンを無くそうとしている。ほとんどの用途では限界があり、その限界を超えると、ますます広くなる語長が、使用可能なビットをますます減少させ、かくして、使用可能帯域幅は語長ほど速くは増大しない。また、メモリの読み書き速度を低下させないで互いに配線できるピンの数にも限界がある。この問題を解決する正しい選択というものはない。すなわち、その選択は、ＡＳＩＣとＤＲＡＭとが一部を占める大きなシステムのシステム設計全体におけるトレードオフの大きな集合の一部にすぎない。
【０２８１】
繰り返すが、所与のどの時点でも、ＡＳＩＣが経済的に備えることができるピン数には限界がある。この限界は、その時のパッケージ化技術と、ピン接続場所に使えるＡＳＩＣチップの領域の大きさとにより課されるものである。従って、ＤＲＡＭへの取り付け以外で使用するいくつかのピンを減じた後は、所与の時点での、パッケージ化およびＤＲＡＭ技術が、単一ＡＳＩＣがＤＲＡＭとの間で通信するために利用可能な帯域幅の最大値を制限する。
【０２８２】
手際よくするための何らかの余裕は常にあるものだが、アルゴリズム（例えば３Ｄレンダリングアルゴリズム）の性能と、利用可能なメモリ格納の帯域幅との間は、ほとんど直線的な関係であるのが普通である。従って、何個かのＤＲＡＭを備えて単一ＡＳＩＣとして製品を決める場合、達成可能な最大レンダリング性能については上限が硬く抑えられてしまう。
【０２８３】
本発明の一実施の形態による新規のＬｏｏｐアーキテクチャは、同一メモリバンクにテクスチャ格納およびフレームバッファ格納、の両方を編成する。この実施の形態では、各ＬｏｏｐＤｒａｗチップは、標準的な低コストＤＲＡＭチップをいくつか有し、それらを用いてフレームバッファの一部、および現在のテクスチャの完全な（冗長だがローカルな）コピー、の両方を格納する。
【０２８４】
概要
図１は、Ｌｏｏｐアーキテクチャの一例を示す。図１に示すように、Ｌｏｏｐアーキテクチャでは、各Ｌｏｏｐチップが、隣のＬｏｏｐチップに対して、非常に高速なＬｏｏｐＬｉｎｋインターフェース１２５を介して、１方向に、ポイントツーポイントでローカルな方法により取り付けられている。
【０２８５】
基本的なＬｏｏｐアーキテクチャ相互接続
「Ｄ」で印したＬｏｏｐチップはＬｏｏｐＤｒａｗチップ（ドローイングチップ）１１０である。「Ｍ」で印した四角は、例えばメモリチップ等のメモリ１１５である。一実施の形態におけるこれらメモリはＤＲＡＭであるが、別の実施の形態では、他の形態のメモリチップであってもよい（明示的にＳＲＡＭを含む）。出入りを示す矢印で「Ｉ」と印したチップは、ＬｏｏｐＩｎｔｅｒｆａｃｅチップ（インターフェースチップ）１０５である。ＬｏｏｐＩｎｔｅｒｆａｃｅチップ１０５は、好ましくはＨｏｓｔＩｎｔｅｒｆａｃｅＩｎ／ＯｕｔおよびＬｏｏｐＩｎｔｅｒｆａｃｅＩｎ／Ｏｕｔを含む。図示のトポロジーは、３Ｄグラフィックスレンダリングアーキテクチャをイネーブル化する。Ｌｏｏｐアーキテクチャについてさらに詳細に以下説明する。
【０２８６】
図２は、１６個のＬｏｏｐＤｒａｗチップ１１０および２個のＬｏｏｐＩｎｔｅｒｆａｃｅチップ１０５の構成により詳細に示す。各ＬｏｏｐＤｒａｗチップ１１０は、ローカルに取り付けられたＤＲＡＭ１１５内のフレームバッファの１／１６を含んでいる。フレームバッファは規則正しく４×４ピクセルのグリッドにより仕切られ、ＬｏｏｐＤｒａｗチップは４×４グリッド内の割り当てられたピクセルに対する操作を実行する。図中、４×４パターンの塗り潰したピクセルは、ピクセルインターリーブがどのＬｏｏｐＤｒａｗチップに属するかを示している。同じく図２には、各ＬｏｏｐＤｒａｗチップが、そのローカルＤＲＡＭ内に、全てのシステムテクスチャの自ら専用の完全コピーを持つことを示している。図示の２個のＬｏｏｐＩｎｔｅｒｆａｃｅチップは、後で説明するシステムオプションをサポートする。
【０２８７】
図１および図２の概要を要約すると、サンプルフィルレートを最大化するために、フレームバッファは、ｎ個のＬｏｏｐＤｒａｗチップのそれぞれのローカルメモリサブシステムにある非冗長なピクセルインターリーブにパーティション化され、単一のグラフィックスチップシステムで到達できるレートのｎ倍速いオーダーのサンプルフィルレートを提供する。テクスチャ格納は、テクスチャフェッチ帯域幅を最大化するために、すなわち、単一グラフィックスチップシステムで到達できるよりもｎ倍多いオーダーで読める帯域幅にするために、ｎ個のＬｏｏｐＤｒａｗチップのそれぞれのローカルメモリサブシステムに複製される。
【０２８８】
チップへのグラフィックス操作のマッピング
ホストグラフィック・ドライバは、ＬｏｏｐＩｎｔｅｒｆａｃｅチップグラフィック・ドライバプリミティブが、ＬｏｏｐＩｎｔｅｒｆａｃｅチップ上のホストインターフェースを経て、ホストコンピュータから入るように命令する。グラフィック・ドライバ・プリミティブを処理した後、ＬｏｏｐＩｎｔｅｒｆａｃｅチップは、それら（とりわけ、ＧｒａｐｈｉｃｓＣｏｍｍａｎｄ）をＧｒａｐｈｉｃｓＰｒｉｍｉｔｉｖｅのシーケンスに変換することになる。ＬｏｏｐＩｎｔｅｒｆａｃｅチップは、このＧｒａｐｈｉｃｓＰｒｉｍｉｔｉｖｅシーケンスのサブストリングのいくつかを特定のＬｏｏｐＤｒａｗチップに割り当て、次いで、ＧｒａｐｈｉｃｓＰｒｉｍｉｔｉｖｅをリングに沿ってＬｏｏｐパケットとして送り出す。ここで、ＧｒａｐｈｉｃｓＰｒｉｍｉｔｉｖｅのＬｏｏｐパケットは、宛先のＬｏｏｐＤｒａｗチップに到着するまで、ＬｏｏｐチップからＬｏｏｐチップへ巡回する。そこでＬｏｏｐパケットは処理され、それ以上はリングに沿って送られない。状態変更がマルチキャストＬｏｏｐパケットとして、リングに沿って送られる。例えば、Ｌｏｏｐパケットは、リングのすべてのＬｏｏｐＤｒａｗチップ毎に（潜在的に）処理され、最後のＬｏｏｐＤｒａｗチップ以外のすべてによって（潜在的に）前方へ送り出される。好ましい実施の形態では、ＬｏｏｐＩｎｔｅｒｆａｃｅチップは、負荷バランス方法を用いてＧｒａｐｈｉｃｓＰｒｉｍｉｔｉｖｅコマンドを特定のＬｏｏｐＤｒａｗチップ（「グラフィックスチップ」とも呼ばれる）に割り当てる。他の実施の形態では、例えば、総当たり法等の、別の適切な方法をとる。
【０２８９】
ＬｏｏｐＩｎｔｅｒｆａｃｅチップから可能な宛先である各ＬｏｏｐＤｒａｗチップへのユニキャストＧｒａｐｈｉｃｓＣｏｍｍａｎｄのＬｏｏｐパケットのパス
図３は、ＬｏｏｐＩｎｔｅｒｆａｃｅチップから可能な宛先であるＬｏｏｐＤｒａｗチップへのユニキャストＧｒａｐｈｉｃｓＣｏｍｍａｎｄのＬｏｏｐパケットの最長と最短のパスを示す。円弧３０２は、ユニキャストＧｒａｐｈｉｃｓＣｏｍｍａｎｄのＬｏｏｐパケットがたどるＬｏｏｐＩｎｔｅｒｆａｃｅチップ１０５から、最も近いＬｏｏｐＤｒａｗチップ１１０までの仮想的な「直接パス」を表す。円弧３０４は、ユニキャストＧｒａｐｈｉｃｓＣｏｍｍａｎｄのＬｏｏｐパケットがたどるＬｏｏｐＩｎｔｅｒｆａｃｅチップ１０５から、最も遠いＬｏｏｐＤｒａｗチップ１１０′までの仮想的な「直接パス」を表す。実際のパスは、宛先のＬｏｏｐＤｒａｗチップに到着するまで、必要なだけ多くのＬｏｏｐＤｒａｗチップを通って、ＬｏｏｐＩｎｔｅｒｆａｃｅチップから始まり、反時計廻りに連続して何点も巡回するのが好ましい。ＬｏｏｐＩｎｔｅｒｆａｃｅチップ１０５と、他のＬｏｏｐＤｒａｗチップとの間のパスは、明瞭にするために省略してある。
【０２９０】
注意−一般に、Ｌｏｏｐアーキテクチャでは、リングを回る一方向のデータフローは任意に選択され、常に反時計方向に流れるように示している。この選択については特別なことは何もない。他の実施の形態では、フローの方向を時計廻りに変えてもよい。実際に、これ以降のいくつかの実施の形態では、２重リングの時計廻りと反時計廻りの両方を含む例を示す。
【０２９１】
マルチキャストのＧｒａｐｈｉｃｓＣｏｍｍａｎｄのＬｏｏｐパケットを送る場合、最長のユニキャストＬｏｏｐパケットのパスをたどる。例えば、ＬｏｏｐパケットはＬｏｏｐＩｎｔｅｒｆａｃｅチップを出て、第１ＬｏｏｐＤｒａｗチップ１１０に入って処理され、リングの最後のＬｏｏｐＤｒａｗチップ１１０′に到達するまで、次のＬｏｏｐＤｒａｗチップに渡される。（ユニキャストおよびマルチキャストＬｏｏｐパケット、ならびに制御およびルーティングは、以下、さらに詳細に取り上げる）。
【０２９２】
ＧｒａｐｈｉｃｓＣｏｍｍａｎｄパケットのＬｏｏｐＤｒａｗチップ処理
グラフィックスプリミティブ、例えば三角形がその割り当てられたＬｏｏｐＤｒａｗチップに到達したとき、ＬｏｏｐＤｒａｗチップはそれに大部分の３Ｄグラフィックスレンダリングパイプラインを適用する。例えば、三角形は、変換、クリップチェック、必要であればオプションでのクリップ、ベルテックスシェーディング、スキャン変換（ラスター化）するのが好ましく、次いで、生成した各ピクセルに、テクスチャ化およびライティングを通常含むプログラマブルピクセルシェーダを加える。
【０２９３】
投射した三角形の画面空間境界は、Ｚ面の式を添えて、ＬｏｏｐＤｒａｗチップすべてにマルチキャスト送信する。次に、ピクセルシェーダ処理により生成した個々のピクセルを、ＤｒａｗＰｉｘｅｌのＬｏｏｐパケットにして、割り当てられた宛先ＬｏｏｐＤｒａｗチップを添えて、ＬｏｏｐＬｉｎｋに送り出す。注意すべきは、宛先ＬｏｏｐＤｒａｗチップが、プリミティブをラスター化するチップになるという、特別な場合である。この場合、Ｌｏｏｐパケットはローカルに消費され、ＬｏｏｐＬｉｎｋ上にはもう出ていかない。
【０２９４】
ＬｏｏｐＤｒａｗチップから可能な宛先である各ＬｏｏｐＤｒａｗチップへの、ＤｒａｗＰｉｘｅｌのＬｏｏｐパケットのパス
図４は、第１のＬｏｏｐＤｒａｗチップから、ＤｒａｗＰｉｘｅｌのＬｏｏｐパケットがたどる残りの各ＬｏｏｐＤｒａｗチップへの最長と最短のパスを示す。円弧４０２は、ＬｏｏｐＤｒａｗチップ１１０から、ＤｒａｗＰｉｘｅｌのＬｏｏｐパケットがたどる最も近いＬｏｏｐＤｒａｗチップ１１０への仮想の「直接パス」を表す。円弧４０４は、ＬｏｏｐＤｒａｗチップ１１０から、ＤｒａｗＰｉｘｅｌのＬｏｏｐパケットがたどる最も遠いＬｏｏｐＤｒａｗチップ１１０′への仮想の「直接パス」を表す。実際のパスは、第１のＬｏｏｐＤｒａｗチップから始まり、宛先のＬｏｏｐＤｒａｗチップに到着するまで、必要なだけ多くの残りのＬｏｏｐＤｒａｗチップを通って、連続して何点も巡回するのが好ましい。ＬｏｏｐＤｒａｗチップ１１０と、他のＬｏｏｐＤｒａｗチップとの間のパスは、明瞭にするために省略してある。注意が必要なのは、ＤｒａｗＰｉｘｅｌのＬｏｏｐパケットが取らなければならないチップ巡回の平均回数は、リング全長の半分になることである。同様の数字は他の１５個のＬｏｏｐＤｒａｗチップについても引き出せる。すなわち、それらのパスは、一つの連続する各ＬｏｏｐＤｒａｗチップにより、同じ反時計廻りの回転だけが見え、全て、その道に沿う２個のＬｏｏｐＩｎｔｅｒｆａｃｅチップを通る２回の巡回を含むことになる。
【０２９５】
ＤｒａｗＰｉｘｅｌパケットのＬｏｏｐＤｒａｗチップ処理
メモリを取り付けた各ＬｏｏｐＤｒａｗチップは、フレームバッファのピクセルの１／ｎについてのサンプル全てを含み、ここでｎはシステム内のＬｏｏｐＤｒａｗチップの合計数である（典型的にはｎが１６）。これはフレームバッファ格納の従来の２Ｄインターリーブである。これは、特定のラスター化されたピクセルがＬｏｏｐＤｒａｗチップの宛先へ割り当てられる方法である。インターリーブ化は、適切であれば、マルチピクセルレベルで生じることもある。
【０２９６】
ＤｒａｗＰｉｘｅｌのＬｏｏｐパケットがその宛先のＬｏｏｐＤｒａｗチップに到着すると、現在のＧｒａｐｈｉｃｓＰｒｉｍｉｔｉｖｅ（この例では三角形で、その境界は以前にマルチキャストされている）の境界内にあるピクセル中のサンプルすべては、可能な補間計算をされて、特定のサンプル位置でのその値を決定し、次いで、条件付きサンプル更新関数を適用される。補間は、サンプル成分に基づいてサンプル成分に実行しても、あるいは実行しなくてもよい。例えば、一実施の形態では、Ｚサンプル成分値の補間値を、以前マルチキャストしたＺ面の式を適用することにより計算してもよい。一実施の形態では、カラーサンプル成分値は、全く補間されない。例えば、ピクセル内またはピクセルの一部内で一様に塗り潰される。条件付きサンプル更新関数は、例えば、Ｚバッファチェック、および他のチェックをイネーブル化またはディスエーブル化にする等、既存のオンチップ状態値と、ＤｒａｗＰｉｘｅｌコマンド内の追加されているかもしれない制御ビットとの両方により制御される。
【０２９７】
ビデオ出力信号の生成
ビデオ出力信号を生成するデータストリームは、ＬｏｏｐＩｎｔｅｒｆａｃｅチップがその起源である。ＬｏｏｐＩｎｔｅｒｆａｃｅチップは、ＶｉｄｅｏＰｉｘｅｌのＬｏｏｐパケットを、それに接続される第１ＬｏｏｐＤｒａｗチップに送り、次いで、第１ビデオ出力ピクセルに寄与するフレームバッファのインターリーブ内のサンプルにアクセスし、次のＬｏｏｐＤｒａｗチップにこの部分合計を送る。各ＬｏｏｐＤｒａｗは、その寄与分を加え、全ての寄与が加算された場合、ビデオ出力信号は（おそらく別の）ＬｏｏｐＩｎｔｅｒｆａｃｅチップのビデオ出力信号ピンから出ていく。一実施の形態では、多数のビデオ出力信号は、ＬｏｏｐＩｎｔｅｒｆａｃｅチップの追加インスタンスをリングに加えることにより、サポートされる。全画面アンチエイリアス化は、高品位アンチエイリアスフィルタを、ビデオ出力信号生成処理中のサンプルの１ピクセル領域より著しく大きな領域に適用することにより達成される。特に、ほとんどの任意の４×４アンチエイリアスフィルタ（例えば、ミッチェル−ネトラバリフィルタ群）は、完全なビデオ出力信号ビデオフォーマットピクセルレートでサポートされる。
【０２９８】
ＬｏｏｐＩｎｔｅｒｆａｃｅチップから出て、全てのＬｏｏｐＤｒａｗチップを通り、最初のＬｏｏｐＩｎｔｅｒｆａｃｅチップに戻るＶｉｄｅｏＰｉｘｅｌのＬｏｏｐパケットのパス
図５は、特定のＬｏｏｐＩｎｔｅｒｆａｃｅチップからのすべてのＶｉｄｅｏＰｉｘｅｌのＬｏｏｐパケットが、ビデオ出力インターフェースへのビデオ出力信号のアンチエイリアス化および生成のために通るパスを示す。この図では、同一のＬｏｏｐＩｎｔｅｒｆａｃｅチップが、ビデオストリームの生成を開始するとともに、終了させているが、少なくとも一つの実施の形態では、開始と終了のＬｏｏｐＩｎｔｅｒｆａｃｅチップは、同一の物理チップでなくてもよい。
多数のテクスチャメモリコピーへのレンダリングによるテクスチャ生成
【０２９９】
テクスチャの生成は、ビデオ出力信号を生成する方法と同様に扱われるが、終了した場合にリングを去るのではなく、ピクセルストリームは引き続き、２回目のリング廻りで、各（イネーブル化された）ＬｏｏｐＤｒａｗチップにローカルに貯えられる。常時は、これが続くと、リングを通って流れる新規のＧｒａｐｈｉｃｓＣｏｍｍａｎｄのＬｏｏｐパケットはないので、ＧｒａｐｈｉｃｓＣｏｍｍａｎｄのＬｏｏｐパケットおよびＤｒａｗＰｉｘｅｌのＬｏｏｐパケットに占有されていた帯域幅は自由になり、テクスチャのローディングに利用可能となる。ＶｉｄｅｏＰｉｘｅｌのＬｏｏｐパケットも流れ、これが優先する。
【０３００】
ホストコンピュータによるレンダリング結果の読み返し
レンダリング結果の読み返しは、完全にアセンブルされたピクセルストリームが宛先のＬｏｏｐＩｎｔｅｒｆａｃｅチップに到着する場合を除き、ビデオ出力信号生成のための読み返しと同様に進行し、その結果は、ビデオ出力インターフェースピン（の一つ）ではなくホストインターフェースを出ていく。（また、ビデオ出力信号が何らかの障害を伴って、物理的イメージディスプレイ装置へ送られることを確認するリアルタイムの制約のいくつかは、ホストインターフェースへ転送する時に通常はいくらか緩和される）。
【０３０１】
ホストコンピュータからＬｏｏｐＤｒａｗチップコピーへのテクスチャ転送
ホストコンピュータからのテクスチャは、ＬｏｏｐＩｎｔｅｒｆａｃｅチップを経てリングに入り、次いで、リングを廻って各ＬｏｏｐＤｒａｗチップに渡されて、ローカルＤＲＡＭ格納にコピーされる。ローカルテクスチャ生成とまさに同じように、テクスチャダウンロードが進行中の場合、通常は描画が進行しないので、テクスチャ転送に利用可能な帯域幅は、ＧｒａｐｈｉｃｓＣｏｍｍａｎｄに割り当てられる普通の帯域幅だけでなく、描画に通常は割り当てられるかなりの帯域幅となる。実際、テクスチャ転送は、ビデオ出力信号を生成しているリングトラフィックとの間でリング帯域幅を共有する。
【０３０２】
アーキテクチャの利点
このセクションは、Ｌｏｏｐアーキテクチャのいくつかの利点を説明する。
【０３０３】
２チップ型
Ｌｏｏｐアーキテクチャは、高級から最高級の３Ｄグラフィックス製品までをサポートするが、一実施の形態では、Ｌｏｏｐアーキテクチャは、製品を製造するために設計され、生産される２種類の異なるカスタムチップがありさいすればよく、複雑さの大部分が描画チップに含まれる。これは、高級から最高級の３Ｄグラフィックスマーケット製品を設計するために従来方法を用いる場合に必要な、極めて多数のカスタムチップ型とは全く対照的である。
【０３０４】
全てが１方向で、短い、ローカルな通信
他の高級アーキテクチャと異なり、Ｌｏｏｐアーキテクチャは、グローバルなバスまたは長い配線がなくても実装できる。この理由は、内部システム通信全てが、ＬｏｏｐＬｉｎｋを用いたポイントツーポイントで１方向の短い物理的距離だからである。
【０３０５】
シェーダ用に利用可能な大量並列処理
プログラマブルシェーダが、複雑、強力で、そして（望むなら）リアルであればあるほど、プログラマブルシェーダに必要な、プログラムステップおよびテクスチャフェッチが増える。単一チップベースの３Ｄグラフィックスハードウェアアクセラレータ、または所与の複雑さの程度を超える固定数のチップに基づく全く任意の３Ｄグラフィックスハードウェアアクセラレータでは、プログラマブルシェーダが強力になればなるほど、グラフィックスハードウェアレンダリングシステム全体は遅くなる。対照的に、ＬｏｏｐＤｒａｗチップが加えられる限り、Ｌｏｏｐアーキテクチャを拡張できるように設計する、という独自の方法をとっているので、プログラマブルシェーダの能力は何ら性能低下もなく、同じ比率で高めることができる。単一ＬｏｏｐＤｒａｗチップは、プログラマブルシェーダの能力では、同時代何れの単一チップベース３Ｄグラフィックスハードウェアアクセラレータの３Ｄグラフィックスレンダリング能力と、少なくとも同等であると見られるので、１６、３２、６４個以上のＬｏｏｐＤｒａｗチップを用いるＬｏｏｐアーキテクチャベースのシステムの能力は、これら同時代の単一チップベース３Ｄグラフィックスハードウェアアクセラレータより事実上１桁から２桁上まわる能力となろう。
【０３０６】
ホストコンピュータ相互接続用の多数のオプション
Ｌｏｏｐアーキテクチャは、単一ＬｏｏｐＩｎｔｅｒｆａｃｅチップが（単一）リングに配置できるところではどこでも、２個、３個、４個、またはもっと多いＬｏｏｐＩｎｔｅｒｆａｃｅチップが代わって同じ（単一）リングの同じ位置に配置できるように設計されている。各ＬｏｏｐＩｎｔｅｒｆａｃｅチップは、自身の専用ホストインターフェースを有しているので、多数のホストコンピュータに接続できる単一リングＬｏｏｐアーキテクチャベースの３Ｄグラフィックスハードウェアアクセラレータでも構築は容易である。この能力がＬｏｏｐアーキテクチャベースの３Ｄグラフィックスハードウェアアクセラレータに与える利点を、一実施例により詳細に説明する。いくつかの非常に強力なコンピュータシステムを保有し、科学計算を行う、３Ｄグラフィックスハードウェアアクセラレータの最終ユーザを想定する。彼らが持つ特定のコンピュータシステムが強力なほど、そのコンピュータに直接接続される３Ｄグラフィックスリソースを持つことがより有用となる。しかし、最も強力なコンピュータは、一回に数時間または数日間稼働することもある単一プロジェクト用の大規模バッチ業務の実行を割り当てられることが多くなる傾向がある。こうした大量のジョブすべたが相互作用３Ｄグラフィックスを必要とするとは限らない。つまり、実際にそのようなジョブの多くは、終了後に、インタラクティブ３Ｄグラフィックスを用いて大規模計算の結果を試験するのである。最高級３Ｄグラフィックスハードウェアアクセラレータが、一度に一台だけのコンピュータに物理的に取り付けられていたとしたら、３Ｄグラフィックスハードウェアアクセラレータは、何らかの大きな非３Ｄグラフィックスを用いるジョブが実行されている間は使途を問わず利用できないことになろう。しかし、一度に２台以上のコンピュータに物理的に取り付けられるＬｏｏｐアーキテクチャベースの３Ｄグラフィックス製品の能力により、一度に１台のコンピュータしか３Ｄグラフィックスハードウェアアクセラレータが使えなくても、コンピュータが他のタスクに取って代わられたとしても（あるいは、保守のために停止している等）、３Ｄグラフィックスハードウェアアクセラレータを完璧に使いこなすことができる。
【０３０７】
多数のＬｏｏｐＩｎｔｅｒｆａｃｅチップを用いる別の方法は、いくつかのリングを、単一の大きな３Ｄグラフィックスハードウェアアクセラレータに互いに接続し、一つ（以上）のホストインターフェースを共有する方法である。これにより、同時に１ダース以上の高解像度物理的イメージディスプレイ装置をサポートできるものを含め、非常に大規模な３Ｄグラフィックスサポートシステムを構築することができる。（所有する別々の高解像度物理的イメージディスプレイ装置の台数と同じ数の、別々ではあるがリング接続されているものを備えることが好適である）。このような大規模システムは、実際に、没入型で投射ベースの高級仮想現実ディスプレイシステム（Caves'  and  Virtual  Portals'）に共通する要件である。
【０３０８】
高品位スーパーサンプリングベースアルゴリズムのサポート
システムが極めて多数のサンプリング／ピクセルをサポートできる場合、高品位の特徴のいくつかが３Ｄグラフィックスハードウェアアクセラレータによりサポート可能である。最初の最も重要な点は、高品位のアンチエイリアスフィルタのサポートである。ビデオ出力信号とリングに沿ってアセンブルする方法を採っているので、僅かな追加帯域幅および内部処理に対して、広い領域のアンチエイリアスフィルタがビデオ出力信号のビデオフォーマットピクセルレートで適用できる。動的なビデオリサイズの特徴は、この種類のビデオアーキテクチャから自然になくなる。リサンプリングラスターピクセルの中心位置は単純な矩形のラスターアレイでないが、ローカルに制御されたスプライン曲線に沿う点である場合、多様なビデオイメージ補正操作は不要である。赤、緑青のピクセルを別々のスプラインを用いて再サンプリングする場合、色収差歪みは、適切な事前の通過バンド空間内で補正する。高いサンプル密度によってサポート可能な他の効果には、ブラー（モーションブラー、被写界深度）、特別ディソルブ等、多様な形がある。
【０３０９】
同一２チップで可能な、多様な差別化製品
意図すれば、基本２チップＬｏｏｐアーキテクチャ型の、ＬｏｏｐＩｎｔｅｒｆａｃｅチップおよびＬｏｏｐＤｒａｗチップの設計により、これらの異なる数のチップを用いて、完全に機能的な３Ｄグラフィックスハードウェアアクセラレータを構築できる。例えば、サイズの異なる市販製品が、２種類のチップを「そのまま」で、またはどちらか必要なチップの「再設計」をせずに集成できる。ＰＣ基板設計を変更するだけで差別化した製品を製造できる。差別化したコストおよび特徴を備えた製品を直ちに、かつ安価に市販化する能力は、今日の急速に変化するマーケットにおける重要な資産でもある。３Ｄグラフィックスハードウェアアクセラレータを設計する従来の方法は、類似品の市販化を柔軟にするために、通常は、主要チップ自体を変更（市場へ投入するために、膨大なエンジニアリング費用と時間をかけて）する必要がある。単一の１Ｕまたは２Ｕのラックマウント式パッケージ化された製品に関しても、多数のＧｒａｐｈｉｃｓＳｌａｂを外部配線で互いに結び付ける能力は、基本ハードウエア製品の変更をせずとも、多くのカスタム構成のサポートを可能にする。
【０３１０】
非常に大量テクスチャメモリのサポート
多量のＤＲＡＭをＬｏｏｐＤｒａｗチップ毎に取り付けることにより、および／または、テクスチャの異なる領域をＬｏｏｐＤｒａｗチップ毎に割り当てる（体積テクスチャにそのようにするのは妥当である）ことにより、より大きな内部システムテクスチャマップを容易にサポートできる。
【０３１１】
本発明の実施の形態の上記検討で用いた特定用語を、以下の文脈で説明する。
【０３１２】
グラフィック・ドライバコマンド
用語「グラフィック・ドライバ」の定義で説明したように、アプリケーションソフトウエアがグラフィックスハードウェアアクセラレータに直に接続されることが希にある。通常、ホストコンピュータソフトウエアの追加部分であり、一つ以上のコンピュータ・グラフィックスレンダリングＡＰＩを実装するグラフィック・ドライバは、アプリケーションソフトウエアと、グラフィックスハードウェアアクセラレータとの間に置かれる。このアプリケーションソフトウエアは、コンピュータ・グラフィックスレンダリングＡＰＩにより記述されるソフトウエアインターフェース標準（例えば、言語の結合）に忠実な、グラフィック・ドライバソフトウエアに対するソフトウエアサブルーチン呼出しを作成する。グラフィック・ドライバソフトウエアは、自らに対するこれらサブルーチン呼出しのそれぞれと直接または間接に関連する何れかのデータとともに、いくつかのレンダリングまたは他のコンピュータ・グラフィックス関連タスクを実行するコマンドとして、各サブルーチン呼出しを処理する。次にグラフィック・ドライバソフトウエアは、それが意味するタスクを、グラフィックスハードウェアアクセラレータが理解できる形式に変換してもよい。これは、グラフィック・ドライバソフトウエアが、アプリケーションソフトウエアにより送られたデータの全てのバイトを検査しなければならないということではない。いくつかのアプリケーションソフトウエア呼出しは、サイズが数ダースから数１００万バイト以上までのデータ領域に一つ以上のポインタを含んでもよい。すなわち、グラフィック・ドライバソフトウエアは、グラフィックスハードウェアアクセラレータにこれらのポインタを渡すだけでよい。これは、ホストコンピュータの主メモリ内にあるデータへのダイレクトメモリアクセス（ＤＭＡ）を行えるグラフィックスハードウェアアクセラレータにとって極めて普通である。
【０３１３】
グラフィック・ドライバコマンドは、グラフィックスハードウェアアクセラレータが理解できるメッセージにコンピュータ・グラフィックスレンダリングＡＰＩ呼出しを翻訳する時に、グラフィック・ドライバソフトウエアが生成する全メッセージの集合を指す用語である。
【０３１４】
メッセージのグラフィック・ドライバコマンドセットは、メッセージの２つの非オーバーラップサブセット、つまり、グラフィック・ドライバ状態と、グラフィック・ドライバプリミティブに分けられる。注意：３つの用語「グラフィック・ドライバコマンド」、「グラフィック・ドライバ状態」および「グラフィック・ドライバプリミティブ」は全て、メッセージまたはパケットの集合を指す。こうした複数の集合の一つから無名のメッセージを指す場合、数学的には、「グラフィック・ドライバコマンドメッセージセットからのメッセージ」という語句になるべきであるが、慣行により、より明確な「グラフィック・ドライバコマンドメッセージ」を用いてそれを指す。
【０３１５】
グラフィック・ドライバ状態
グラフィック・ドライバ状態は、グラフィック・ドライバコマンドメッセージのサブセットを指す用語であり、そのメンバーメッセージは、レンダリング状態を変更または修正するが、それ自体は、ジオメトリックグラフィックスプリミティブを規定もせず、また、その時点での何らかのレンダリングを直接追加することもない。いくつかの実施の形態でのグラフィック・ドライバ状態メッセージの実施例は、現在の色を設定するか、または現在の変換マトリックスの一つを設定するか、または現在のアンチエイリアスフィルタの局面を変更するものである。
【０３１６】
グラフィック・ドライバプリミティブ
グラフィック・ドライバプリミティブは、グラフィック・ドライバコマンドメッセージのサブセットを指す用語であり、そのメンバーメッセージは、ジオメトリックグラフィックスプリミティブを規定し、および／またはその時点で何れかの追加レンダリングを直接行わせる。いくつかの実施の形態でのグラフィック・ドライバプリミティブメッセージの実施例は、レンダリング対象の三角形を定義する３つのベルテックス全てを規定するか、またはレンダリング対象の線を定義する２つのベルテックスを規定するか、またはレンダリング対象の点を定義する１つのベルテックスを規定するものである。
【０３１７】
Ｌｏｏｐ
Ｌｏｏｐは、本発明の主題であるグラフィックスハードウェアアクセラレータキテクチャを指す用語である。多くの場合、語句「Ｌｏｏｐアーキテクチャでは」または類似する語句を用いてこの文脈を表す。（注意すべきは、ずっと複雑なトポロジーを用いる本発明は、単純なリング構成のトポロジーをはるかに超えているが、用語「Ｌｏｏｐ」はこれらのトポロジーも含むよう意図されている）。
【０３１８】
Ｌｏｏｐチップ
Ｌｏｏｐチップは、Ｌｏｏｐアーキテクチャの実装の一部として設計された任意のカスタムチップ型を指す用語である。一実施の形態では、２種類のＬｏｏｐチップ型がある。すなわち、ＬｏｏｐＩｎｔｅｒｆａｃｅチップおよびＬｏｏｐＤｒａｗチップである。他の実施の形態では、追加のおよび／または異なるカスタムチップ型を定義する。代替の一実施の形態では、２チップ型の実施の形態で定義する２種類のチップの機能の多くを単一チップに組み込む１チップ型を明示的に定義する。
【０３１９】
ＬｏｏｐＬｉｎｋ
ＬｏｏｐＬｉｎｋＩｎｐｕｔＰｏｒｔ
ＬｏｏｐＬｉｎｋＯｕｔｐｕｔＰｏｒｔ
ＬｏｏｐＬｉｎｋは、特殊な、一方向で高速の、ＬｏｏｐチップからＬｏｏｐチップへのデータ相互接続を指す用語である。一実施の形態で、ＬｏｏｐＬｉｎｋは、標準化されたＩＣパッドドライバおよびパッケージマルチピンインターフェースの２つの特別集合、すなわちＬｏｏｐＬｉｎｋＩｎｐｕｔＰｏｒｔおよびＬｏｏｐＬｉｎｋＯｕｔｐｕｔＰｏｒｔによりサポートされる。
【０３２０】
ＬｏｏｐＬｉｎｋを用いて一つのＬｏｏｐチップから別のＬｏｏｐチップへデータパケットを転送する。一実施の形態では、ＬｏｏｐＬｉｎｋ上を転送されるデータは、伝送路に組み込まれたエラー訂正コード（ＥＣＣ）で保護される。
【０３２１】
Ｌｏｏｐチップ型が、Ｌｏｏｐアーキテクチャで定義される正式なリング構成の一つに接続できる場合、そのチップ型は少なくとも２つのポート、すなわち、反時計廻りのＬｏｏｐＬｉｎｋＯｕｔｐｕｔＰｏｒｔ、および時計廻りのＬｏｏｐＬｉｎｋＩｎｐｕｔＰｏｒｔをサポートする。
【０３２２】
所与のＬｏｏｐチップは、ＬｏｏｐＬｉｎｋＩｎｐｕｔＰｏｒｔ上を送信される追加のＬｏｏｐパケットを受入れることができる状態にあるとは限らない。従って、ＬｏｏｐＬｉｎｋサブシステムの一部は、ハンドシェイク信号を含むのがよく、その場合、ＬｏｏｐＬｉｎｋＯｕｔｐｕｔＰｏｒｔ上に送り出したい第２ＬｏｏｐチップのＬｏｏｐＬｉｎｋＩｎｐｕｔＰｏｒｔ宛のＬｏｏｐパケットを有する第１Ｌｏｏｐチップは、第２Ｌｏｏｐチップが、ＬｏｏｐＬｉｎｋＩｎｐｕｔＰｏｒｔ上の新しいＬｏｏｐパケットを受信する準備が整っている状態にあるかどうかを、前もって知ることができる。
【０３２３】
一実施の形態では、ハンドシェイクプロトコルは、Ｌｏｏｐパケットの種類にかかわらずＬｏｏｐＬｉｎｋを通るＬｏｏｐパケットの伝送をゲート制御する。別の実施の形態では、Ｌｏｏｐパケット型を、いくつかの異なるＬｏｏｐパケット型サブグループに分解してもよく、ハンドシェイクプロトコルは、Ｌｏｏｐパケット型の特定サブグループのメンバーである型をもつＬｏｏｐパケットがＬｏｏｐＬｉｎｋを通ることを許可するかどうかを、各サブグループについて別々に指し示す。
【０３２４】
ＬｏｏｐＩｎｔｅｒｆａｃｅ
本発明の一実施の形態で、ＬｏｏｐＩｎｔｅｒｆａｃｅチップは、ホストコンピュータに接続するための少なくとも一つのホストインターフェース、および、少なくとも一つの反時計廻りのＬｏｏｐＬｉｎｋＯｕｔｐｕｔＰｏｒｔと一つのＬｏｏｐＬｉｎｋＩｎｐｕｔＰｏｒｔとを有する、Ｌｏｏｐチップである。実施の形態によっては、ＬｏｏｐＩｎｔｅｒｆａｃｅチップは少なくとも一つのビデオ出力インターフェースも有する。これらの慣行を用いると、単純リングでは、ほとんど全てのデータが、Ｌｏｏｐチップの円の廻りを反時計廻りに流れる。特定のフロー方向は慣行だけに従い、別の実施の形態では異なる慣行も選択できる。全ての実施の形態が、時計廻りと反時計廻りのＬｏｏｐＬｉｎｋＩｎｐｕｔＰｏｒｔをともに含むわけではない。
【０３２５】
ホストコンピュータ上では、グラフィック・ドライバはグラフィック・ドライバコマンドを生成し、グラフィックスドライブコマンドはホストインターフェースを介してＬｏｏｐＩｎｔｅｒｆａｃｅチップに送られる。到着したこれらのグラフィック・ドライバコマンドをＬｏｏｐＩｎｔｅｒｆａｃｅチップが処理し、大抵の場合、いくつかのＬｏｏｐアーキテクチャ内部メッセージを生成して、他のＬｏｏｐチップに対する他の多様なインターフェースを介して、ＬｏｏｐＩｎｔｅｒｆａｃｅチップから送り出す。
【０３２６】
一実施の形態では、ＬｏｏｐＩｎｔｅｒｆａｃｅチップは少なくとも一つのプログラマブルビデオ信号フォーマットタイミング発生器も含み、この発生器は、一連のＶｉｄｅｏＰｉｘｅｌメッセージを、このＬｏｏｐＬｉｎｋＯｕｔｐｕｔＰｏｒｔが接続されるリング廻りのＬｏｏｐＬｉｎｋＯｕｔｐｕｔＰｏｒｔを介して送り出すことができる。同実施の形態では、このタイミング発生器の第２ステージは、ＬｏｏｐＬｉｎｋＩｎｐｕｔＰｏｒｔを介して、リングを通過したＶｉｄｅｏＰｉｘｅｌメッセージストリームを受入れることができる。フィルタエネルギー合計の逆数による正規化、および多分行われるピクセルデータ（プログラマブルγ補正、追加のビデオタイミング検討など）の後処理をしてから、この第２ステージは、ＬｏｏｐＩｎｔｅｒｆａｃｅからの（多分行われる後処理を施した）ピクセルデータを、物理的イメージディスプレイ装置へ接続されるように、ビデオ出力インターフェースを介してビデオ出力信号として送り出す。少なくとも一つの実施の形態では、ＶｉｄｅｏＰｉｘｅｌメッセージのストリームが、同一のＬｏｏｐＩｎｔｅｒｆａｃｅチップで始まって、そこで終わらねばならないという制約はない。
【０３２７】
ＬｏｏｐＤｒａｗ
本発明の一実施の形態では、ＬｏｏｐＤｒａｗチップは、それに取り付けられたローカルメモリサブシステム、および少なくとも一つの反時計廻りのＬｏｏｐＬｉｎｋＯｕｔｐｕｔＰｏｒｔならびに時計廻りのＬｏｏｐＬｉｎｋＩｎｐｕｔＰｏｒｔを有する、Ｌｏｏｐチップである。一実施の形態では、このローカルメモリサブシステムは、任意の適切なメモリを用いてもよいが、ＤＲＡＭチップで構成される。
【０３２８】
このローカルメモリサブシステムは、いくつかの可能なデータ型の内の２つ以上を格納するよう構成できる。一つの可能な型は、フレームバッファ全体のサブ部分に対するフレームバッファピクセルおよび／またはフレームバッファサンプルの格納である。もう一つの可能な型は、現在アクティブな全テクスチャメモリの完全複製コピーの格納である。別の可能な型は、現在アクティブな全テクスチャメモリの、部分的で潜在的に複製されたコピーの格納である。別の可能な型は、現在非アクティブなテクスチャメモリの、完全または部分的なコピーの格納である。別の可能な型は、現在アクティブな全ディスプレイリストの、完全または部分的な多分複製されたコピーの格納である。
【０３２９】
特定の実施の形態では、ＬｏｏｐＤｒａｗチップは３種類の計算を担う。第１の計算は、この特定のＬｏｏｐＤｒａｗチップをＧｒａｐｈｉｃｓＣｏｍｍａｎｄのＬｏｏｐパケットの宛先の一つとして識別するＬｏｏｐＬｉｎｋＩｎｐｕｔＰｏｒｔに入ってくる任意のＧｒａｐｈｉｃｓＣｏｍｍａｎｄのＬｏｏｐパケットを、このＬｏｏｐＤｒａｗチップが受入れて内部処理することである。この処理は、ローカルメモリサブシステムへの両アクセスをなさせるとともに、このＬｏｏｐＤｒａｗチップが、潜在的に、追加の新しいＬｏｏｐパケットを創出して、ＬｏｏｐＬｉｎｋＯｕｔｐｕｔＰｏｒｔに送り出すようにさせることができる。これらの新しいＬｏｏｐパケットはＤｒａｗＰｉｘｅｌのＬｏｏｐパケットを含むことができる。
【０３３０】
第２の計算は、この特定のＬｏｏｐＤｒａｗチップをＤｒａｗＰｉｘｅｌのＬｏｏｐパケットの宛先の一つとして識別するＬｏｏｐＬｉｎｋＩｎｐｕｔＰｏｒｔに入ってくるＤｒａｗＰｉｘｅｌのＬｏｏｐパケットを、このＬｏｏｐＤｒａｗチップが受入れて内部処理することである。この処理は、ローカルメモリサブシステムへのアクセスをなさせる。
【０３３１】
第３の計算は、この特定のＬｏｏｐＤｒａｗチップをＶｉｄｅｏＰｉｘｅｌのＬｏｏｐパケットの宛先の一つとして識別するＬｏｏｐＬｉｎｋＩｎｐｕｔＰｏｒｔに入ってくるＶｉｄｅｏＰｉｘｅｌのＬｏｏｐパケットを、このＬｏｏｐＤｒａｗチップが受入れて内部処理することである。ＶｉｄｅｏＰｉｘｅｌのＬｏｏｐパケット内の情報、および内部のＬｏｏｐＤｒａｗチップ状態は、現在定義されているアンチエイリアスフィルタが適用されることになるフィルタ中心点を定義する。どのアンチエイリアスフィルタも、所与のフィルタ中心点に対するアクティブ領域を有する。特定のＬｏｏｐＤｒａｗチップは、フレームバッファを構築するサンプルのサブセットを、ローカルメモリサブシステムに保有し、これを含む。現在のフィルタ中心点に対するアンチエイリアスフィルタアクティブ領域内にあると同時に、寄与する集合として特定のＬｏｏｐＤｒａｗチップに保有される、サンプル集合を定義すること。ＬｏｏｐＤｒａｗチップが、ＶｉｄｅｏＰｉｘｅｌのＬｏｏｐパケットを処理しなければならない場合、これが意味するのは、アンチエイリアスフィルタは寄与する集合に適用されて、部分たたみ込み結果を生成する、ということである。具体的には、この処理により以下の計算が実行させる。すなわち、１）特定のフィルタ中心点に基づき、これをサンプルアドレスに変換し、そのアドレスでローカルメモリサブシステムのリードアクセスが実行可能になって特定のサンプル成分を得ることができる。２）現在のフィルタ中心点と、ステップ１で生成したサンプルアドレスにより識別されるサンプルの位置との両方と関連するたたみ込み係数の生成、３）ステップ２で生成した係数によりローカルメモリサブシステムから読み出したサンプル成分のたたみ込み、４）ＶｉｄｅｏＰｉｘｅｌのＬｏｏｐパケットに既に含まれる部分結果によるたたみ込みの結果の部分和、および５）ＬｏｏｐＤｒａｗチップのＬｏｏｐＬｉｎｋＯｕｔｐｕｔＰｏｒｔへ、ステップ４で計算したものと置換した部分結果値を伴うＶｉｄｅｏＰｉｘｅｌのＬｏｏｐパケットを送る。注意すべきは、この部分結果が、場合によっては（通常、現在のＬｏｏｐＤｒａｗチップが、ＶｉｄｅｏＰｉｘｅｌのＬｏｏｐパケットを処理する第１のＬｏｏｐＤｒａｗチップである場合）全てゼロになることがある。ＬｏｏｐＤｒａｗチップは、時々、いくつかの要因のいずれかに基づいて、ＬｏｏｐＬｉｎｋＯｕｔｐｕｔＰｏｒｔのＦｉｆｏＳｔａｔｕｓのＬｏｏｐパケットを同時に生成し、送り出すこともある。その要因は以下を含むが、限定はされない。すなわち、各種の内部待ち行列に残っている自由格納の量、前回のＧｒａｐｈｉｃｓＳｔａｔｅのＬｏｏｐパケットにより設定されたローカルパラメータ値、および、このＬｏｏｐＤｒａｗチップが、ＦｉｆｏＳｔａｔｕｓのＬｏｏｐパケットを最後に送り出してから以降、どれくらい時間が経過したか。特定の実施の形態では、ローカルパラメータ値は、この特定ＬｏｏｐＤｒａｗチップが一部を成すローカルリング周囲のいくつかの適切な尺度を含む。非ローカルのＬｏｏｐＬｉｎｋ接続がリングトポロジーに含まれる場合、この尺度が複雑になることがあることに注意する。
【０３３２】
パケット
ループパケット
Ｌｏｏｐアーキテクチャでは、Ｌｏｏｐパケット、つまりパケットそのものは、第１のＬｏｏｐチップにより、ＬｏｏｐＬｉｎｋ上を原子オブジェクトとして第２のＬｏｏｐチップへ送られるビットの可変長集合である（例えば、一度に全て送る。通常は、後続のパケットから何らかのデータが送られる前に、全て送る）。第１のＬｏｏｐチップは最近Ｌｏｏｐパケットを創生したか、または、どこか別のところから到着したＬｏｏｐパケットを送り出す必要があることを最近決定したか、のどちらかである。次に、第１のＬｏｏｐチップは、ＬｏｏｐＬｉｎｋＯｕｔｐｕｔＰｏｒｔ上に、第２ＬｏｏｐチップＬｏｏｐＬｉｎｋＩｎｐｕｔＰｏｒｔへのＬｏｏｐパケットを送り出す。第２のＬｏｏｐチップは、ローカルリングの反時計廻りで、第１のＬｏｏｐチップに続くＬｏｏｐチップである。本発明の一実施の形態では、ＬｏｏｐＩｎｔｅｒｆａｃｅチップは、代わりに、もう一つのＬｏｏｐＩｎｔｅｒｆａｃｅチップの非ローカル入力ＬｏｏｐＬｉｎｋのいずれか一つへ、複数の非ローカル出力ＬｏｏｐＬｉｎｋのどれかからＬｏｏｐパケットを送り出してもよい。
【０３３３】
パケットヘッダ
パケットペイロード
Ｌｏｏｐパケット内のデータは、２つのグループに分割される。第１のグループはパケットヘッダであり、これは、一実施の形態で、パケット長、宛先情報、および種類などの情報を含むことができる。第２のグループはパケットペイロードであり、これは、一実施の形態で、描画されるジオメトリックオブジェクト、またはサンプリングされるピクセル、またはアセンブリを完成するビデオ出力ピクセルなどの情報を含むことができる。
【０３３４】
ＧｒａｐｈｉｃｓＣｏｍｍａｎｄ
ＧｒａｐｈｉｃｓＣｏｍｍａｎｄは、全てのＬｏｏｐパケットの集合を指す用語であり、その種類のＬｏｏｐパケットは、ホストコンピュータからのグラフィック・ドライバコマンドメッセージを処理する直接的または間接的な結果としてＬｏｏｐＩｎｔｅｒｆａｃｅチップにより創出される。
【０３３５】
ＬｏｏｐパケットのＧｒａｐｈｉｃｓＣｏｍｍａｎｄ集合は、Ｌｏｏｐパケットの２つの非オーバーラッピングサブセット、つまりＧｒａｐｈｉｃｓＳｔａｔｅおよびＧｒａｐｈｉｃｓ  Ｐｒｉｍｉｔｉｖｅに分割される。注：３つの用語「ＧｒａｐｈｉｃｓＣｏｍｍａｎｄ」、「ＧｒａｐｈｉｃｓＳｔａｔｅ」および「Ｇｒａｐｈｉｃｓ  Ｐｒｉｍｉｔｉｖｅ」は全て、Ｌｏｏｐパケットの集合を指す。これら集合の内の一つからの無名のＬｏｏｐパケットを指す場合、数学的には、「ＧｒａｐｈｉｃｓＣｏｍｍａｎｄのＬｏｏｐパケット集合からのＬｏｏｐパケット」とするのがよいが、慣行によって、より明確な用語「ＧｒａｐｈｉｃｓＣｏｍｍａｎｄのＬｏｏｐパケット」を使用する。
【０３３６】
注：ホストコンピュータソフトウエアにより、グラフィックスハードウェアアクセラレータへ送られる可能性があるメッセージの集合、すなわち、グラフィック・ドライバコマンドと、グラフィック・ドライバ状態と、グラフィック・ドライバプリミティブのメッセージとの間には見掛けの類似点があり、そして、ＬｏｏｐＩｎｔｅｒｆａｃｅチップにより創生される可能性があるＬｏｏｐパケットの集合、すなわち、グラフィックスコマンドと、グラフィックス状態と、グラフィックスプリミティブのＬｏｏｐパケットとの間にも見掛けの類似点がある。特定の実施の形態で、セマンティックな類似性がかなりあり得るが、これが要求されることはない。実際、多くの実施の形態では、単一ホストコンピュータ・グラフィック・ドライバソフトウエアは、単一のグラフィック・ドライバプリミティブメッセージを送り、このメッセージは、ＬｏｏｐＩｎｔｅｒｆａｃｅチップが一つ以上のＧｒａｐｈｉｃｓＰｒｉｍｉｔｉｖｅのＬｏｏｐパケットを生成するようにするだけでなく、ＧｒａｐｈｉｃｓＰｒｉｍｉｔｉｖｅのＬｏｏｐパケットが生成される前後に、潜在的にいくつかのＧｒａｐｈｉｃｓＳｔａｔｅのＬｏｏｐパケットを生成させる。
【０３３７】
完全性を得るために、一実施の形態では、ＬｏｏｐＩｎｔｅｒｆａｃｅチップがＶｉｄｅｏＰｉｘｅｌのＬｏｏｐパケットも生成する。そうすれば、これらのＬｏｏｐパケットは正式に、ＬｏｏｐパケットのＧｒａｐｈｉｃｓＣｏｍｍａｎｄ集合のメンバーにもなる。
【０３３８】
ＧｒａｐｈｉｃｓＳｔａｔｅ
ＧｒａｐｈｉｃｓＳｔａｔｅは、ＧｒａｐｈｉｃｓＣｏｍｍａｎｄのＬｏｏｐパケットのサブセットを指す用語であり、そのメンバーＬｏｏｐパケットはレンダリング状態を変更または修正するが、それ自体は、ジオメトリックグラフィックスプリミティブを規定もせず、またこの時点での何らかのレンダリングを直接追加させることもない。いくつかの実施の形態でのＧｒａｐｈｉｃｓＳｔａｔｅのＬｏｏｐパケットの実施例は、現在の色を設定するか、または現在の変換マトリックスの一つを設定するか、または現在のアンチエイリアスフィルタの局面を変更する。
【０３３９】
ＧｒａｐｈｉｃｓＰｒｉｍｉｔｉｖｅ
ＧｒａｐｈｉｃｓＰｒｉｍｉｔｉｖｅは、ＧｒａｐｈｉｃｓＣｏｍｍａｎｄのＬｏｏｐパケットのサブセットを指す用語であり、そのメンバーＬｏｏｐパケットは、ジオメトリックグラフィックスプリミティブを規定し、および／またはこの時点での何らかのレンダリングを直接追加させる。いくつかの実施の形態でのＧｒａｐｈｉｃｓＰｒｉｍｉｔｉｖｅのＬｏｏｐパケットの実施例は、レンダリング対象の三角形を定義する３つのベルテックス全てを規定するか、またはレンダリングされる線を定義する２つのベルテックスを規定する。
【０３４０】
ＤｒａｗＰｉｘｅｌ
ＤｒａｗＰｉｘｅｌは、ＬｏｏｐアーキテクチャのＬｏｏｐパケットであり、ＬｏｏｐＬｉｎｋ上でいくつかの他のＬｏｏｐチップへ送ることができる。一実施の形態では、ＬｏｏｐＤｒａｗチップは、ＤｒａｗＰｉｘｅｌのＬｏｏｐパケットの内容に何らかの処理を実行するＬｏｏｐチップの１種に過ぎない。他の種類のＬｏｏｐチップは、主としてＤｒａｗＰｉｘｅｌのＬｏｏｐパケット内のルーティングおよび宛先情報を処理して、チップが有するＬｏｏｐＬｉｎｋＯｕｔｐｕｔＰｏｒｔの何れか、または全てを介して、そのパッケージを通過させるか否か、および通過させる方法を決定する。一実施の形態では、最初にＤｒａｗＰｉｘｅｌのＬｏｏｐパケットを創生できるＬｏｏｐチップだけが、ＬｏｏｐＤｒａｗチップである。一実施の形態では、ＤｒａｗＰｉｘｅｌのＬｏｏｐパケットは、同じＬｏｏｐＤｒａｗチップに受け取られたＧｒａｐｈｉｃｓＰｒｉｍｉｔｉｖｅのＬｏｏｐパケットを処理した直接の結果として、ＬｏｏｐＤｒａｗチップによってのみ創られる。
【０３４１】
ＤｒａｗＰｉｘｅｌのＬｏｏｐパケットのＬｏｏｐパケットヘッダ内の宛先情報は、どのＬｏｏｐＤｒａｗチップがこのＤｒａｗＰｉｘｅｌのＬｏｏｐパケットを処理すべきかを規定する。一実施の形態では、宛先情報は、整数ｘおよびｙの画面空間のピクセルアドレスにより規定され、宛先Ｌｏｏｐチップは、規定されたピクセル内のサンプルのいくつかまたは全てを含む一個以上のＬｏｏｐＤｒａｗチップである。別の実施の形態では、宛先情報は画面空間のマルチピクセル領域である。さらに別の実施の形態では、宛先情報は画面空間のサブピクセル領域である。さらに別の実施の形態では、宛先Ｌｏｏｐチップの集合は、ｘおよびｙのアドレスとして直接符号化されないもっと一般的なＬｏｏｐチップサブグループのラベリングメカニズムを介して規定される。
【０３４２】
ＤｒａｗＳｔａｔｅ
一実施の形態では、ＬｏｏｐＤｒａｗチップは、割り当てられたレンダリングタスクを実行するのに用いられることになる内部（オンチップ）状態データを保持する。この状態のいくつかはグローバルである。例えば、状態のただ一つのコピーは、ＬｏｏｐＤｒａｗチップが保持する。他の状態はローカルであり、ソースの可能性があるとともに、特定のＬｏｏｐＤｒａｗチップにパケットを送る、各ＬｏｏｐＤｒａｗチップに特有な異なる状態コピーを伴う。両方の状態クラスは、ＤｒａｗＳｔａｔｅのＬｏｏｐパケットの受け取りにより修正される。
【０３４３】
ＬｏｏｐＤｒａｗチップが、受け取った特定のＤｒａｗＰｉｘｅｌのＬｏｏｐパケットの宛先の一つが自らであると判定し、そのＤｒａｗＰｉｘｅｌのＬｏｏｐパケットの内容に何らかの処理を実行しなければならないことを知った場合、この特定のＬｏｏｐＤｒａｗチップが保持するグローバルおよびローカルの状態の文脈内でこの処理を行う。いくつかの実施の形態で、これらローカルデータの文脈の少なくとも一つは、今処理されるＤｒａｗＰｉｘｅｌのＬｏｏｐパケットを継続して送ったものとして、ＤｒａｗＳｔａｔｅのＬｏｏｐパケットが、同一送り手のＬｏｏｐＤｒａｗチップから受領した時に受け取った状態データを、保持するものとして、特定される。
【０３４４】
このローカル状態データの（送っているＬｏｏｐＤｒａｗチップ特定情報の）文脈は、この特定ＬｏｏｐＤｒａｗチップが保有するフレームバッファサンプルアドレス（および関連するサンプル位置およびサンプル）の候補集団を決定する必要がある何らかの情報を含んでもよく、この特定ＬｏｏｐＤｒａｗチップは、その情報について、サンプル成分の対応集団を計算するのがよい。次に、これらのサンプル成分は、その値と関連するサンプルアドレスの条件付きサンプル更新関数への入力の一つとして用いられる。どの条件付きサンプル更新関数を適用するかは、ローカルデータ文脈の一部であってもよい。
【０３４５】
一実施の形態では、この特定の宛先ＬｏｏｐＤｒａｗチップが保有するフレームバッファサンプルアドレスの候補集合を決定するために必要な、特定の宛先ＬｏｏｐＤｒａｗチップに格納された（送り側のＬｏｏｐＤｒａｗチップ特定の）ローカル状態データ文脈は、三角形領域を形成する３つの画面空間サブピクセルの正確な点の位置を含む。この領域内のサンプル位置は、候補集団のメンバーとなるように選ぶことができる。追加したローカル状態情報は、この領域の外側と内側を区別するよう提示してもよく、また、三角形の３辺のどれかと正確に重なるサンプル位置と同じ場合、および、三角形領域を形成する３つの画面空間サブピクセルの正確な点の位置の一つと正確に同じサンプル位置であるサンプル位置と同じ場合を解くよう提示してもよい。これらのサンプル集合決定の文脈データ、および規則の変形は、線の断片、アンチエイリアス化された線の断片、点、アンチエイリアス化された点、大きな点、および三角形よりも複雑なジオメトリ領域に対して提示してもよい。
【０３４６】
代替の実施の形態は、ローカル状態データ文脈の情報は少ししか含まれないが、その代わりに、すべての宛先ＬｏｏｐＤｒａｗチップのフレームバッファサンプルアドレスの候補集合が決定されることを可能にする情報を、各ＤｒａｗＰｉｘｅｌのＬｏｏｐパケットが明示的に含む。一実施の形態において、この情報は、このＤｒａｗＰｉｘｅｌのＬｏｏｐパケットと関連する指定画面空間領域内のすべてのサンプルに対するビット列である。所与のＬｏｏｐＤｒａｗチップについて、この特定ＬｏｏｐＤｒａｗチップが含むフレームバッファサンプルアドレスと関連するこの列からのビットに対して、ビット値「１」の値が示すのは、フレームバッファサンプルアドレスが候補集合のメンバーであるということであり、ビット値「０」は、その逆を示す。
【０３４７】
ここで、候補集合のメンバーであるサンプル位置についてのサンプル成分を計算するのに用いられる特定のＬｏｏｐＤｒａｗチップの同一ローカル状態データ文脈の部分に移る。サンプル成分は多くの成分を含み、各成分に対する値を計算する方法についての情報を含む。可能性がある一方法は、所与のサンプル位置のサンプル成分値を計算するために画面空間サブピクセルの正確なｘおよびｙの位置における面の式を用いることである。この方法では、オンチップのローカル状態データ文脈に格納される情報は、この面の式のための係数の値である。一実施の形態では、サンプルのＺ深さの値は、この方法でオプションとして計算する。成分の値を計算するための別の方法は、ＤｒａｗＰｉｘｅｌのＬｏｏｐパケットのパケットペイロード部分の一部からの一定値をただ挿入するだけである。一実施の形態では、サンプル成分の赤、緑、青、および場合によりα値を、この方法でオプションとして計算する。サンプル成分の値を計算する他の方法も検討されていて、計算可能である。他の以前受け取ったＤｒａｗＰｉｘｅｌのＬｏｏｐパケットからのキャッシュデータと、他の以前計算したサンプルからのキャッシュデータの補間が可能である。これらの手法のいくつでも、各サンプル成分に対して条件付きで個々に選択できるのは明らかであり、従って、どのようにも併用できる。
【０３４８】
ＶｉｄｅｏＰｉｘｅｌ
ＶｉｄｅｏＰｉｘｅｌは、ＬｏｏｐアーキテクチャのＬｏｏｐパケットであり、ＬｏｏｐＬｉｎｋ上でいくつかの他のＬｏｏｐチップに送ることができる。一実施の形態では、ＬｏｏｐＤｒａｗチップ、およびＬｏｏｐＩｎｔｅｒｆａｃｅチップは、ＶｉｄｅｏＰｉｘｅｌのＬｏｏｐパケットの内容に何れかの処理を実行するＬｏｏｐチップであり、存在する他の種類のＬｏｏｐチップはいずれも、ＶｉｄｅｏＰｉｘｅｌのＬｏｏｐパケットのルーティングおよび宛先情報を処理して、チップが有するＬｏｏｐＬｉｎｋＯｕｔｐｕｔＰｏｒｔの何れかまたは全てを介して、そのパッケージを通過させるかどうか、および通過させる方法を決定する。
【０３４９】
一実施の形態では、最初にＶｉｄｅｏＰｉｘｅｌのＬｏｏｐパケットを創生できるＬｏｏｐチップだけが、ＬｏｏｐＩｎｔｅｒｆａｃｅチップである。
【０３５０】
ＶｉｄｅｏＰｉｘｅｌのＬｏｏｐパケットは、ＬｏｏｐＤｒａｗチップに入力された場合、内部処理および修正が施されてからＬｏｏｐＤｒａｗチップから送り返される。一実施の形態では、ＶｉｄｅｏＰｉｘｅｌのＬｏｏｐパケットを消費できる（例えば、それを通過させない）Ｌｏｏｐチップが、ＬｏｏｐＩｎｔｅｒｆａｃｅチップである。ある場合には、これが必ずしもそうなるわけではなく、ＬｏｏｐＩｎｔｅｒｆａｃｅチップは、ＶｉｄｅｏＰｉｘｅｌのＬｏｏｐパケットをルーティングするだけで、それを消費しないこともある。代替として、第１のＬｏｏｐＩｎｔｅｒｆａｃｅチップのＬｏｏｐＬｉｎｋＩｎｐｕｔＰｏｒｔの内の一つを介して受け取ったＶｉｄｅｏＰｉｘｅｌのＬｏｏｐパケットの意図した最終宛先が第１のＬｏｏｐＩｎｔｅｒｆａｃｅチップである、と第１のＬｏｏｐＩｎｔｅｒｆａｃｅチップが判定した場合、Ｌｏｏｐパケットはいくつかの内部計算を施され、ＬｏｏｐＩｎｔｅｒｆａｃｅチップのビデオ出力インターフェース（の一つ）を介して、ビデオ出力信号として計算結果を最終的に送り出して完了する。
【０３５１】
ＦｉｆｏＳｔａｔｕｓ
ＦｉｆｏＳｔａｔｕｓは、先に説明したメカニズムを介してＬｏｏｐＤｒａｗチップにより生成されるＬｏｏｐパケットを指す用語である。一実施の形態では、ＦｉｆｏＳｔａｔｕｓのＬｏｏｐパケットは、常に、ＦｉｆｏＳｔａｔｕｓのＬｏｏｐパケットが遭遇する最初のいくつかのＬｏｏｐＩｎｔｅｒｆａｃｅチップによるとは限らないが、ＬｏｏｐＩｎｔｅｒｆａｃｅチップにより最終的に消費される。
【０３５２】
ＬｏｏｐＩｎｔｅｒｆａｃｅチップに到着するＦｉｆｏＳｔａｔｕｓのＬｏｏｐパケット内に含まれるＬｏｏｐパケットペイロードを潜在的に用いて、そのＬｏｏｐＩｎｔｅｒｆａｃｅチップが、可能性のある他の宛先と関連している特定ＬｏｏｐＤｒａｗチップに、将来送ることを考慮するかもしれない任意のＬｏｏｐパケットを処理するために、ＦｉｆｏＳｔａｔｕｓのＬｏｏｐパケットを生成するＬｏｏｐＤｒａｗチップを相対的に利用可能なＬｏｏｐＩｎｔｅｒｆａｃｅチップのモデルを更新する。
【０３５３】
ＬｏｏｐＤｒａｗチップ
リング
単純リング構成
３ＤグラフィックスハードウェアアクセラレータをＬｏｏｐチップから構築する場合、最も単純ケースは、Ｌｏｏｐチップ郡が一つのリングに接続される場合である。各Ｌｏｏｐチップは、リングの時計回りに次のＬｏｏｐチップのＬｏｏｐＬｉｎｋＩｎｐｕｔＰｏｒｔに接続されるＬｏｏｐＬｉｎｋＯｕｔｐｕｔＰｏｒｔを有する。このリングを構築するために用いるＬｏｏｐチップの型は、何個かの個数のＬｏｏｐＤｒａｗチップと、一個以上のＬｏｏｐＩｎｔｅｒｆａｃｅチップである。Ｌｏｏｐアーキテクチャの実装によっては、このチップの正確な個数に制限がいくつかあるが、こうした制限は、本明細書の説明には無関係であり、本発明はループチップの個数特定をするつもりはない。
【０３５４】
このようにして、これらチップ全ては円形ループになるように互いに接続される。この単純な場合、リング接続を形成しないチップだけのインターフェースは、リングの一つ以上のＬｏｏｐＩｎｔｅｒｆａｃｅチップに追加される３つのインターフェースである。すなわち、ＬｏｏｐＩｎｔｅｒｆａｃｅチップのホストインターフェース、ＬｏｏｐＩｎｔｅｒｆａｃｅチップのビデオ出力インターフェース、および任意のＬｏｏｐＩｎｔｅｒｆａｃｅチップの非ローカルＬｏｏｐＬｉｎｋポート（このポートを含むこれらの実施の形態では）である。
【０３５５】
Ｌｏｏｐアーキテクチャは、この単純な構成で、完全に機能的な３Ｄグラフィックスハードウェアアクセラレータとして実行できるように設計されている。リング構成によるこの方法で構築された３Ｄグラフィックスハードウェアアクセラレータの文脈で、リングは、チップで作られるこの一つのリングを指す用語である。この方法で正しく構築された３Ｄグラフィックスハードウェアアクセラレータを指すために用いる用語は、単純リング構成である。これらは単純リングと呼ばれることもある。
【０３５６】
ローカルリング
本発明のいくつかの実施の形態は、ＬｏｏｐＩｎｔｅｒｆａｃｅチップの内外に追加接続のオプションを含むので、単純リング構成だけのもの場合もっと複雑に接続されるＬｏｏｐチップ集合が形成でき、機能的３Ｄグラフィックスハードウェアアクセラレータとして用いることができる。しかし、このように複雑な場合でも、ローカルリングの概念が依然として存在し、レンダリング処理の大部分の操作は、単純リング構成で行う方法と酷似した方法で進行する。この文脈でローカルリングと呼ぶのは、または時にはリングとだけ呼ぶのは、ローカルリングを作り上げるＬｏｏｐアーキテクチャチップだけを指す。
【０３５７】
リングトラヒック
コンピュータサイエンスでは、リング接続された電子回路および／またはコンピュータシステムのいくつかの例があり、相互接続システムの多くの例は非常に複雑なトポロジーに基づくものである。従って、Ｌｏｏｐシステムに適用する用語は注意深く定義しなければならない。
【０３５８】
接続されたシステムを伴う、コンピュータサイエンス上の一つの一般的概念が、トラヒックである。いくつかの定義では、トラヒックは、接続された電子回路および／またはコンピュータシステムにおいて、重要な、または特定のサブシステム（この文脈ではノードと呼ばれる）で利用可能な帯域幅はいくつかという尺度の一形式である。
【０３５９】
関連する概念は、電子回路およびコンピュータシステムに適用されるような、いくつかのサブシステムが全て単一データパスを共有するバストラヒックの概念である。バストラヒックは、この共有バス上で実行される何らかの妥当な通信に過ぎない。
【０３６０】
本発明のリングシステムとして接続したシステムで、時には、リングバス、およびリングバス上のトラヒックについて語ることもある。しかし、語るべき単一の共有バスは存在せず、技術的に見ると本発明のバスだけが、全て一方向の別々のＬｏｏｐチップ間のポイントツーポイント相互接続であり、従って、リングバストラヒックの概念は不明瞭な定義である。
【０３６１】
しかし、リングトラヒックのもっと一般的な概念を定義できれば便利である。所与の単純リングまたはローカルリングで、何れかの特定のＬｏｏｐＬｉｎｋ上のトラヒックは、統計的には概ね同一であるに違いない。従って、単一ＬｏｏｐＬｉｎｋ上の平均トラヒックは、残りのリング全体に何が進行しているかをかなり近似的に表している。従って、リング帯域幅の統計的概念は、同じ統計的検討を用いて定義できる。
【０３６２】
リングトラヒックのこの概念では、所与の時点で、レンダリング計算のどの部分がリングに沿ってトラヒックを発生しているのか、という疑問がわく。このトラヒックは使用する絶対帯域幅で、あるいは（最大または平均値の）リング帯域幅合計の百分率として測定できる。使用する相対帯域幅で、または、予定通りか予想される特定レンダリング計算の使用に関連して用いられる帯域幅で、３Ｄグラフィックスハードウェアレンダリング処理内の異なるトラヒックソースを互いに比較することもできる。
【０３６３】
性能
本明細書のこの部分は、Ｌｏｏｐアーキテクチャの通信および計算におけるいくつかの局面を範囲とする性能を説明する。この説明は、Ｌｏｏｐアーキテクチャの他の計算部分の性能に関するいくつかの特定の仮定のもとに成され、かつ拡張される。これらの仮定は、特定の工学上またはマーケティング上の目標ではない。すなわち、これらの仮定は、Ｌｏｏｐアーキテクチャの、計算法、チップカウント、および帯域幅問題のトレードオフ、を理解できるようにする本発明の特定の実施形態の計算能力の実施例というだけである。
【０３６４】
仮定
ここで、特定の実施の形態で、単一のＬｏｏｐＤｒａｗチップが６４００万ピクセル／秒のピクセルシェーダレートと、１０億サンプル／秒のサンプルフィルレートとを有し、かつＶｉｄｅｏＰｉｘｅｌの２４０００万Ｌｏｏｐパケット／秒を処理して送信できる、と仮定する。従って、１６個のＬｏｏｐＤｒａｗチップを含む単一リングでは、総計ピクセルシェーダレートは１ギガピクセルシェーダ／秒、総計ピクセルフィルレートは（サンプル密度１６で）１０億ピクセル／秒、そして、ビデオ出力信号ビデオフォーマットピクセルレートは２４０メガピクセル／秒となる。これらのスループットは、テクスチャロードまたはテクスチャコピーのような頻度の低いタスクで費やされる時間を考慮していない。
【０３６５】
性能範囲
上記の仮定で、表１は、ＬｏｏｐＤｒａｗチップの使用数が１６個のときのＬｏｏｐアーキテクチャベースの３Ｄグラフィックスハードウェアアクセラレータで可能な相対的性能向上が、１から１６倍に増大することを示す。それぞれのＬｏｏｐＤｒａｗチップ数に対して、２つのサンプル密度での性能を示す。
【０３６６】
ピクセルシェーダパワーの列は、ピクセルシェーダプログラムの相対的複雑さの尺度であり、１６個のＬｏｏｐＤｒａｗチップがサポートするピクセルシェーダパワーの複雑さを１．０と任意に定義したときの相対値である。必要なピクセルシェーダパワーの実際の量は、特定アプリケーションの詳細により変わる。アプリケーションによっては、１．０未満のピクセルシェーダパワーでも依然使用できるが、１．０を超えるピクセルシェーダパワーを要求する手続き型テクスチャまたは手続き型ジオメトリのような特徴を用いる他のアプリケーションもある。
【０３６７】
３Ｄグラフィックスソフトウエアレンダリングシステムを用いた実験によれば、４未満のサンプル密度では高品位のレンダリングイメージが得られない。さらに、サンプル密度８のレンダリングイメージはサンプル密度４でレンダリングしたものより良好な品位の生成が認められるが、１６以上のサンプル密度でレンダリングしたイメージの方が、ずっと好ましい結果を生成するようである。同様の品位トレードオフは、グラフィックスハードウェアレンダリングシステムにも存在する。これは、３Ｄグラフィックスハードウェアアクセラレータでは、少なくとも１６以上のサンプル密度をサポートすることが有利であることを意味する。
【０３６８】
ピクセルシェーダレートは、フレームの深さの複雑さと、ビデオのピクセル解像度との積、およびレンダリングフレームレートの最大値に制約を与える。深さの複雑さを６にして、ピクセルシェーダレートを１Ｇ（１ギガピクセル／秒）に保持すると、レンダリングフレームレート７６Ｈｚで１９２０×１２００ピクセルの物理的イメージディスプレイ装置をサポートできる。一方、１／２Ｇ（１／２ギガピクセル／秒）のピクセルシェーダレートは、レンダリングフレームレート６０Ｈｚでビデオ解像度が１２８０×１０２４ピクセルの物理的イメージディスプレイ装置、またはレンダリングフレームレート３８Ｈｚでビデオ解像度が１１９２０×１２００ピクセルの物理的イメージディスプレイ装置をサポートする。深さの複雑さを１／２に、つまり３に低下させると、ピクセルビデオ解像度が２倍のビデオ出力フォーマット、または２倍のレンダリングフレームレートを要求するアプリケーションをサポートする（ある最大値までは）。表２は、一実施の形態のためのサポート可能な範囲の要約である。＋を伴うすべてのレンダリングフレームレートでは、物理的イメージディスプレイ装置が使用できる能力より高い能力をシステムが備えている。
【０３６９】
表２は、表１の最後の列に示すように、最大ビデオフォーマットピクセルレートにより制約を受ける。ビデオ解像度が１９２０×１２００の物理的イメージディスプレイ装置は、通常、６０〜８４Ｈｚでのみ動作するので、少なくとも２億ピクセル／秒のビデオフォーマットピクセルレートが必要である。７６Ｈｚでビデオ解像度が１２８０×１０２４の物理的イメージディスプレイ装置は、１億ピクセル／秒のビデオフォーマットピクセルレートを必要とするにすぎない。
【０３７０】
Ｌｏｏｐアーキテクチャベースの３Ｄグラフィックスハードウェアアクセラレータは、１〜２系統以上のビデオ出力インターフェースをサポートするよう構成できる。２系統以上のビデオ出力インターフェースの必要性に対するサービスは、同時に、サポートされ得るビデオ出力フォーマットに対し共有リソース制約を追加する。２つの別々のレンダリングを、同時に実行しなければならない場合、これにより達成可能なレンダリング性能に関する共有リソース制約が追加される。いくつかの実施の形態では、１〜２系統のビデオ信号を、２系統のビデオ出力インターフェースに接続すると、ほとんどのリソースがビデオ出力フォーマット間に分割されなければならない。一実施の形態では、これは、サポート可能な物理的イメージディスプレイ装置のビデオ解像度、および／または、サポートされるレンダリングフレームレートまたは場合によりピクセルシェーダパワーを、単純に半減させることになる。
【０３７１】
Ｌｏｏｐパケット
本明細書のこの部分では、本発明の一実施の形態における、ＬｏｏｐＬｉｎｋを経てリングを回るＬｏｏｐパケット、Ｌｏｏｐパケットのルーティングならびに待機、およびＬｏｏｐパケットに暗に含まれるＦＩＦＯバッファの技術的詳細および制約をいくつか説明する。
【０３７２】
Ｌｏｏｐパケットの定義
Ｌｏｏｐアーキテクチャでは、パケットはビットの可変長集合であると定義され、パケットは、原子オブジェクトとして、一個のＬｏｏｐチップの内部から、ＬｏｏｐＬｉｎｋを経て、別のＬｏｏｐチップの内部に送られる。第１ＬｏｏｐチップがＬｏｏｐパケットを創生したことを理由に、または第１Ｌｏｏｐチップが他のＬｏｏｐチップからＬｏｏｐパケットを受け取ったことを理由に、そのどちらにせよ、第１Ｌｏｏｐチップは内部にＬｏｏｐパケットを持つことになる。このＬｏｏｐパケットは、通常は第１Ｌｏｏｐチップから、第２ＬｏｏｐチップのＬｏｏｐＬｉｎｋＩｎｐｕｔＰｏｒｔに向けて、第１ＬｏｏｐチップのＬｏｏｐＬｉｎｋＯｕｔｐｕｔＰｏｒｔ上に送り出される。第２Ｌｏｏｐチップは、通常は物理的にみれば、第１Ｌｏｏｐチップの反時計廻りの直ぐ隣りのＬｏｏｐチップである。
【０３７３】
本発明の一実施の形態では、代替として、ＬｏｏｐＩｎｔｅｒｆａｃｅチップが、Ｌｏｏｐパケットを、いくつかの非ローカル出力ＬｏｏｐＬｉｎｋの何れかから、別のＬｏｏｐＩｎｔｅｒｆａｃｅチップの非ローカル入力ＬｏｏｐＩｎｔｅｒｆａｃｅの一つへ向けて送り出す。
【０３７４】
一実施の形態では、Ｌｏｏｐパケット内のデータは、２つのグループに分けられる。第１グループは、パケット長、宛先情報、および種類などの、パケットヘッダである。第２グループは、例えば、描画されるジオメトリックオブジェクト、またはサンプリングされるピクセル、またはアセンブリを完成するビデオ出力ピクセル等の、パケットペイロードである。
【０３７５】
一実施の形態で、ＬｏｏｐＬｉｎｋは固定ビット幅である。この場合、Ｌｏｏｐパケットのビットサイズは、この固定サイズの整数倍である（いくつかのビットは用いられないこともある）。
【０３７６】
一実施の形態で、各Ｌｏｏｐパケットのパケットヘッダー情報は、明示的な長さのフィールドを含む。特定Ｌｏｏｐパケットの長さはが間接的にＬｏｏｐパケットのパケットヘッダ型フィールド、または他のフィールドから決定できることもあるので、この長さ情報は冗長であることもある。しかし、ある場合には、Ｌｏｏｐパケットのパケットヘッダ型フィールドは、Ｌｏｏｐパケット全体の長さを唯一に特定するには情報が不十分なこともある。これは、同じＬｏｏｐパケット型が、可変長パケットペイロードの長さをもてる場合に起きる。パケットヘッダ型フィールドに依存しない明示的なパケットヘッダ長フィールドを持つことにより、低レベル状態のマシンがＬｏｏｐパケットの通行を適切に取り扱えるようになる。所与のチップを形成した後に、新しいＬｏｏｐパケット型を導入することもできる。ただし、新しいＬｏｏｐパケット型を伴う新しいチップも含まれるシステム内で、旧いチップが依然機能する限り旧いチップが新しいＬｏｏｐパケットと関係を持たねばならない唯一のことは、次のチップに新しいＬｏｏｐパケットを渡すことである。
【０３７７】
Ｌｏｏｐパケット型
リングを廻る全てのＬｏｏｐパケットは、マルチキャストまたはユニキャストのどちらかの印が付けられる。マルチキャストＬｏｏｐパケットは、リング上の全てのチップへ名目上アドレス指定される。その代わり、ターゲットビットは、特定の指名されたチップだけがこのＬｏｏｐパケットを処理すべきであることを指し示す。可能性としては著しく大きな別のＬｏｏｐパケット型があるが、ほとんどのＬｏｏｐパケットは、３Ｄグラフィックスレンダリングパイプラインの３つの主要なグループに関係する３つの特定Ｌｏｏｐパケット集合の一つに属する。冗漫を避けるために、ＬｏｏｐパケットｐがＬｏｏｐパケット集合ｓのメンバーである場合、ｐはｓＬｏｏｐパケットである、とだけ言うこともある。これらのＬｏｏｐパケットの３つの集合、およびＬｏｏｐパケットのもっと多くの重要な特定の関連サブセットのいくつかは：
【０３７８】
ＧｒａｐｈｉｃｓＣｏｍｍａｎｄのＬｏｏｐパケット集合である。これは、ＬｏｏｐＩｎｔｅｒｆａｃｅチップから、ＬｏｏｐＤｒａｗチップへ、ＧｒａｐｈｉｃｓＣｏｍｍａｎｄのＬｏｏｐパケットを搬送する全Ｌｏｏｐパケットのグループである。ＧｒａｐｈｉｃｓＣｏｍｍａｎｄグループのＬｏｏｐパケットは、Ｌｏｏｐパケットの２つの主要サブグループに分けられる。すなわち、ＧｒａｐｈｉｃｓＳｔａｔｅおよびＧｒａｐｈｉｃｓＰｒｉｍｉｔｉｖｅのＬｏｏｐパケットサブセットである。ＧｒａｐｈｉｃｓＳｔａｔｅのＬｏｏｐパケットは、通常はマルチキャストであり、内部のレンダリング状態を変更するが、それ自体がピクセルを生成することはない。ＧｒａｐｈｉｃｓＰｒｉｍｉｔｉｖｅのＬｏｏｐパケットは、通常はユニキャストであり、ピクセルに実際にレンダリングされる三角形、線、点、およびその他ジオメトリックプリミティブを実際に規定するベルテックスデータを一般に含む。ＬｏｏｐＤｒａｗチップがＧｒａｐｈｉｃｓＣｏｍｍａｎｄのＬｏｏｐパケットを受け取る場合、そのＬｏｏｐＤｒａｗチップの内部のＧｒａｐｈｉｃｓＣｏｍｍａｎｄの入力ＦＩＦＯバッファに場所を確保する。（プログラム可能な）時間が経つと、ＬｏｏｐＤｒａｗチップは、ＦｉｆｏＳｔａｔｕｓのＬｏｏｐパケットをリングに沿って、ＬｏｏｐＩｎｔｅｒｆａｃｅチップへ送り出し、それを保持して、その特定のＬｏｏｐＤｒａｗチップの内部に残っているバッファ格納空間の量とともに日付を付ける。
【０３７９】
ＤｒａｗＰｉｘｅｌのＬｏｏｐパケット。Ｌｏｏｐパケットのこの集合は、ＧｒａｐｈｉｃｓＰｒｉｍｉｔｉｖｅのＬｏｏｐパケットを処理するＬｏｏｐＤｒａｗチップから得られる全てのＬｏｏｐパケットを含む。ＤｒａｗＰｉｘｅｌのＬｏｏｐパケット集合の重要なサブセットは、ＤｒａｗＳｔａｔｅのＬｏｏｐパケット集合である。レンダリングの完全な詳細を説明する場合、文脈で引き出されるピクセルに適切な状態を設定するために、ＬｏｏｐＤｒａｗチップにより生成されるＤｒａｗＳｔａｔｅのＬｏｏｐパケットがあるということが見られることになる。
【０３８０】
ＶｉｄｅｏＰｉｘｅｌのＬｏｏｐパケット集合。これらは、最終的にビデオ出力信号を生成するデータをリング内から収集する方法である。一実施の形態では、これらのＬｏｏｐパケットは、ＬｏｏｐＩｎｔｅｒｆａｃｅチップにより最初はゼロのＲＧＢＡ合計と、正規化データとを伴って生成される（一実施の形態では、ビデオ信号フォーマットタイミング発生器を含む）。次いで、これらのＬｏｏｐパケットは、リングの全てのＬｏｏｐＤｒａｗチップを通り抜ける（その道に沿ってピクセルデータ成分を収集し、一実施の形態では、これをＶｉｄｅｏＰｉｘｅｌのＬｏｏｐパケットのＲＧＢＡ合計と、正規化データフィールドとに加える）。次いで、ピクセルデータの最終正規化と、オプションのγ補正グラフィックスパイプラインステージとのためにＬｏｏｐＩｎｔｅｒｆａｃｅチップに再度入り、そして、何れかのビデオ出力インターフェースピンから出力するか、またはホストコンピュータへのホストインターフェースを見送るか、または、後続のレンダリングでテクスチャマップ（または他の種類のマップ）として用いるかするために、このリングまたは一つ以上の他のリングの廻りを通過させる。
【０３８１】
Ｌｏｏｐパケット創出
ＬｏｏｐＬｉｎｋＯｕｔｐｕｔＰｏｒｔ（または実施の形態によっては、他のＬｏｏｐパケット出力ポート）を介して送り出される必要があるＬｏｏｐパケットにより、Ｌｏｏｐチップが自身を見つける３つの方法がある。すなわち、
【０３８２】
Ｌｏｏｐパケットは、ＯＦＦシステムインターフェースから入ってくる。この例は、ＬｏｏｐＩｎｔｅｒｆａｃｅチップ上のホストインターフェースを介して入ってきたデータであるが、今度は他のＬｏｏｐチップへＬｏｏｐパケットとして、送り出す必要がある。
【０３８３】
Ｌｏｏｐパケットは、情報のオンチップ処理の結果として創出される。この例は、ＬｏｏｐＤｒａｗチップ内部のラスター化処理の一部として創出されたＤｒａｗＰｉｘｅｌのＬｏｏｐパケットである。もう一つの例は、ＬｏｏｐＩｎｔｅｒｆａｃｅチップ上のホストインターフェースを介して入ってきたデータであり、そのＬｏｏｐＩｎｔｅｒｆａｃｅチップにより、今度は他のＬｏｏｐチップにＬｏｏｐパケットとして送り出されなければならない修正データに処理されている。
【０３８４】
Ｌｏｏｐパケットは、そのＬｏｏｐＬｉｎｋＩｎｐｕｔＰｏｒｔ（または実施の形態によっては、他のＬｏｏｐパケット入力ポート）を介してＬｏｏｐチップに入っている。この例は、単に通過するだけのＤｒａｗＰｉｘｅｌのＬｏｏｐパケットであろう。つまり、その宛先は現在のＬｏｏｐチップではなく、リングを更に下った他のＬｏｏｐチップである。
【０３８５】
Ｌｏｏｐパケット宛先型ユニキャスト
定義によるユニキャストループパケットは、単一のターゲット宛先を有する。例えば、ＤｒａｗＰｉｘｅｌのＬｏｏｐパケットは、対象ピクセルのｘｙアドレスを含むフレームバッファメモリインターリーブに対して責任をもつリングを下ったどこか特定のＬｏｏｐＤｒａｗチップのユニキャストターゲットを有する。ＧｒａｐｈｉｃｓＰｒｉｍｉｔｉｖｅのＬｏｏｐパケットも、ユニキャストＬｏｏｐパケットであると定義する。すなわち、その固定された宛先は、ＬｏｏｐＩｎｔｅｒｆａｃｅチップが、負荷バランスの理由から、次のＧｒａｐｈｉｃｓＰｒｉｍｉｔｉｖｅを送るよう決定したＬｏｏｐＤｒａｗチップである。
【０３８６】
一実施の形態では、ＤｒａｗＰｉｘｅｌのＬｏｏｐパケットの宛先チップは、ピクセルのｘｙ描画アドレスから間接的に推定される。しかし、別の実施の形態では、明らかなユニキャスト宛先情報が、ＤｒａｗＰｉｘｅｌのＬｏｏｐパケット全ての制御フィールド内に常に提示される場合は、低レベルのＬｏｏｐパケット制御情報は、冗長性と単純性を保つことができる。
【０３８７】
ＤｒａｗＰｉｘｅｌのＬｏｏｐパケット
同一のＬｏｏｐチップにより多くの異なるサイズのリングを構築するために、もう一個のＬｏｏｐチップを宛先とする一個のＬｏｏｐチップのための内部メカニズムを柔軟につくる。一実施の形態では、ＬｏｏｐチップがパワーＯＮされた後だけ、システムの一部であるＬｏｏｐチップの物理的組織およびカウンタは、自らがシステムの何であるかを調べる。一実施の形態では、Ｌｏｏｐチップが柔軟になるように、Ｌｏｏｐチップを初期化する場合に、オフチップソースの動的構成情報からダウンロードするように設計して達成できる。例えば、所与の型のＬｏｏｐチップ全てが、同一仕様で生産できる。初期化構成情報は、各Ｌｏｏｐチップ上の内部ＩＤフィールドを、同一システム内の全ての別のＬｏｏｐチップに関連するユニークな値に設定する。このようなユニークなＩＤを与えることにより、多くの異なる可能性があるチップルーティング、およびアドレスメカニズムの一部として用いることができる。
【０３８８】
Ｌｏｏｐパケット宛先特定代替法
以下のパラグラフは、リングに接続されるチップセット内のユニキャストおよびマルチキャスト宛先を特定できるいくつかの方法を説明する。しかし、追加リングに接続するＬｏｏｐＩｎｔｅｒｆａｃｅチップの能力は、単純リングよりずっと複雑なトポロジーがサポートされる必要があることを意味している。しかし、話を明解にするために、単純リングトポロジーに対するソリューション空間の探索を最初に説明する。
【０３８９】
単純リングには、チップの目標アドレスを識別する数多くの方法がある。これらの方法には、以下のパラグラフに含まれる３つの例があるが、限定はされない：
【０３９０】
１：各ＬｏｏｐパケットのＬｏｏｐパケットヘッダには、ホップカウントと呼ばれる小さな整数のフィールドが含まれる。ＬｏｏｐＬｉｎｋＩｎｐｕｔＰｏｒｔを介してＬｏｏｐパケットを受領した後、Ｌｏｏｐチップは、ホップカウントから１を差し引く。その結果がゼロになると、Ｌｏｏｐパケットの宛先はこのＬｏｏｐチップであり、さもなければＬｏｏｐパケットは（数が減ったホップカウントを伴って）、ＬｏｏｐチップのＬｏｏｐＬｉｎｋＯｕｔｐｕｔＰｏｒｔを介して、リングに沿って次のＬｏｏｐチップに送り出される。これは効率的なソース比較メカニズムであり、例えば、Ｌｏｏｐパケットを起点から８個のＬｏｏｐチップだけ離れているＬｏｏｐチップに送るためには、ホップカウントを８に設定すればよい。
【０３９１】
２：システム初期化時間で、各Ｌｏｏｐチップは、本システム内の他の全てのＬｏｏｐチップとは異なる唯一の整数のＩＤを割り当てられている、と仮定する。さらに、この唯一の整数ＩＤは、指名された主ＬｏｏｐＩｎｔｅｒｆａｃｅチップまで、特定のＬｏｏｐチップから数えていくつのＬｏｏｐチップだけ離れているかのカウントである、と仮定する。この唯一の整数は、リングを介して、初期化のためのＬｏｏｐパケットを送ることにより、初期化でき、この初期化Ｌｏｏｐパケットは、新しいＬｏｏｐチップに入るたびに数が増えるホップカウントを有する。他のもっと複雑なアドレス情報はその後に続く。この付加情報がどのように用いられるかを見るために、第１Ｌｏｏｐチップが第２Ｌｏｏｐチップにメッセージを送りたい、と仮定する。この追加したアドレス情報は、第１Ｌｏｏｐチップに、例えば、フレームバッファのｘとｙのピクセルアドレス等の、他のデータに基づいて第２Ｌｏｏｐチップの唯一の整数アドレスを計算させる。各Ｌｏｏｐチップがこのような唯一のＩＤをもつ場合、宛先情報はかなり単純になる。或るＬｏｏｐチップを基点として考えてみる。その基点のＬｏｏｐＬｉｎｋＩｎｐｕｔＰｏｒｔに入ってきたＬｏｏｐパケットの唯一の宛先ＩＤがその基点の唯一のＩＤと一致する場合、このＬｏｏｐパケットはその基点のためのものであり、さもなければ、基点のためのものではなく、宛先Ｌｏｏｐチップをさらに探すために基点のＬｏｏｐＬｉｎｋＯｕｔｐｕｔＰｏｒｔから送り出される。
【０３９２】
３：上記２例と同様であるが、それと違って、Ｌｏｏｐチップ番号が任意の基準で割り当てられる。これは単純リングよりずっと複雑なパスにより接続されるＬｏｏｐチップベースのシステムでは利点がある。
【０３９３】
これらの実施例は、すでに説明したユニキャストＬｏｏｐパケットだけを有する。マルチキャストのＬｏｏｐパケットは、どう扱われるのだろうか？  例えば、単純リングの場合について多くの可能性がある選択肢の内から３つを取り出してみる：
【０３９４】
１：マルチキャストＬｏｏｐパケットは、全てのＬｏｏｐチップにより処理される。
【０３９５】
２：マルチキャストＬｏｏｐパケットは、全てのＬｏｏｐチップにより処理される。ただし、明確にディスエーブル化されたマルチキャストＬｏｏｐパケットを持つ個々のＬｏｏｐチップは除く。このディスエーブル化処置は、「汝自身をマルチキャストディスエーブル化せよ」というユニキャストＬｏｏｐパケットにより、マルチキャストＬｏｏｐパケット受け取りをディスエーブル化される各Ｌｏｏｐチップへ個別に通信されている。
【０３９６】
３：マルチキャストＬｏｏｐパケットヘッダは、全ての整数チップＩＤのビット集合を表す固定長ビット列を含む。（この意味は、リングにあるチップ最大数に固定ということである）。Ｌｏｏｐチップの整数ＩＤビットをマルチキャストヘッダに設定すると、このＬｏｏｐチップはマルチキャストＬｏｏｐパケットを受入れるが、そうでない場合は拒否する。注意点は、この方法で必要なことは、マルチキャストＬｏｏｐパケット用のＬｏｏｐパケットヘッダは、ユニキャストＬｏｏｐパケット用のものと異なる（もっと長い）ようにするか、またはその無駄なコントロールビットが（頻度がずっと高い）ユニキャストＬｏｏｐパケットに常に存在するようにするか、のいずれかである。
【０３９７】
唯一の整数ＩＤ毎にサブグループを創ることにより（最大数に固定した）間接層を加える。各Ｌｏｏｐチップは、サブグループ毎に、マルチキャストグループと呼ぶ特定のサブグループ内にメンバーシップの印をつけた状態ビットを有する。全てのマルチキャストＬｏｏｐパケットは、それがブロードキャストしているサブグループに対する唯一整数ＩＤを表す整数を格納するための固定フィールドを有する。Ｌｏｏｐチップのメンバーシップビットが、Ｌｏｏｐパケットヘッダ内の特定サブグループＩＤに設定されている場合で、かつその場合だけ、所与のＬｏｏｐチップは特定のマルチキャストＬｏｏｐパケットに対する宛先となる。全てのＬｏｏｐチップが常にサブグループゼロに属するという便利さを加えて、Ｌｏｏｐパケットを全てのＬｏｏｐチップに送る方法が常にあるということを保証するオーバーヘッドが小さい保険にかかっている。同時にサポートするサブグループの総数を非常に大きくする必要はなく、８グループとしても、Ｌｏｏｐパケットヘッダ内に３ビットのサブグループ情報が必要なだけである。実際、ユニキャストＬｏｏｐパケットがすでにｎビットの宛先フィールドをヘッダ内に必要とする場合、マルチキャストビットを設定する時に、このｎビットフィールドを再使用して２ｎの異なるサブグループをサポートできる。
【０３９８】
先に説明したように、進めている説明は全て、単純リングの単純なトポロジーのＬｏｏｐパケットに向けた仮定に基づくものであった。追加したＬｏｏｐＩｎｔｅｒｆａｃｅチップ、またはＬｏｏｐＩｎｔｅｒｆａｃｅチップ間に追加した非ローカル相互接続のいずれかにより、互いに接続される多数のリングは、Ｌｏｏｐパケット宛先情報のもっと複雑なルーティング情報を必要とする。
【０３９９】
これを達成する一実施の形態は、単純な相互リング宛先層の上に簡単なルーティング層を単に追加することである。これは下記のように働く。すなわち、Ｌｏｏｐパケットが現在回っているリングではなく、別のリングの宛先が与えられている限り、ＬｏｏｐＤｒａｗチップは、単にそれを通過させる。ＬｏｏｐＩｎｔｅｒｆａｃｅチップに出会うと、ルーティング情報は、Ｌｏｏｐパケットを別のリングに（そして、可能なら最終宛先に）蹴りこみ、たぶん飛び越え、または（別のＬｏｏｐＩｎｔｅｒｆａｃｅチップを探して）現在のリング内の前方にさらに送る。通常は、ルーティング情報を示し、処理するいくつかの方法がある。第１の方法では、ＬｏｏｐＩｎｔｅｒｆａｃｅチップは、非ローカル宛先のＬｏｏｐパケットをリング内の次のＬｏｏｐチップに渡すこと以外の全てのことを行う。ＬｏｏｐＩｎｔｅｒｆａｃｅチップは、カウントを一つ以上減らし、ＬｏｏｐチップＩＤ、または他のいくつかのことを一致させて、この特定のＬｏｏｐパケットを、ＬｏｏｐＩｎｔｅｒｆａｃｅチップに属する多数のＬｏｏｐＬｉｎｋＯｕｔｐｕｔＰｏｒｔのどれから送り出すべきかを調べる。Ｌｏｏｐパケットが宛先リングに到着すると、先に説明したローカル宛先決定アルゴリズムの一つが適用できる。この意味は、マルチキャストＬｏｏｐパケットの明示的な範囲が宛先リング内になるように、そのマルチキャストＬｏｏｐパケットが送られる、ということである。多数のリングにマルチキャストするのはずっと複雑なことであるが、本明細書で説明した教示によれば、当該技術に習熟する者は容易に実行できよう。
【０４００】
Ｌｏｏｐパケットについての、メカニズムおよびヘッダーフォーマットに関する詳細は、他の制約に依存し、かつその制約から導くことができ、それは、本明細書で説明した教示により、当該技術に習熟する者は容易に実行できるように、Ｌｏｏｐアーキテクチャの特定の実装を構築する処理において現れてくる。
【０４０１】
Ｌｏｏｐパケットを前方に送るアルゴリズムに関する一つの重要な追加の制約を説明しておかねばなければならない。すなわち、終了である。ユニキャストＬｏｏｐパケットは、その特定の宛先ターゲットで常に終了する。しかし、マルチキャストＬｏｏｐパケットは、次々と継続する。いくつかのメカニズムでは、Ｌｏｏｐパケットが、ループ廻りの道全てを１周すると、自動前方送出を終了させる必要がある。（ある複雑な状況では、前方送出を終了するまでに２回以上リングを周回する必要がある）。この考えは、単純な低レベル状態マシンでもＬｏｏｐパケットの無限ループを防止できることに由来する。
【０４０２】
繰り返すと、無限ループを防ぐ方法がいくつかあるが、少なくとも、全てのＬｏｏｐパケットヘッダ情報がエラー訂正コード（ＥＣＣ）で保護されているとほとんどの実施の形態で仮定したとしても、低レベルのエラーに対するファイアウオールの制約が加わる。
【０４０３】
再度繰り返すが、Ｌｏｏｐパケットのヘッダ内に、小さな整数のホップカウントフィールドを用いることができ、これはＬｏｏｐパケットが新しいＬｏｏｐＬｉｎｋＩｎｐｕｔＰｏｒｔに入ってくるたびに数を減じていく。ホップカウントフィールドがゼロになると、他のヘッダーデータが何を言おうと、Ｌｏｏｐパケットは、もはや前に送出されない。ユニキャスト宛先アドレスフィールドに加えて、グループ情報およびルーティング情報を提供すべき場合、このフィールドは、マルチキャストＬｏｏｐパケットでのこの目的のために再使用できる。
【０４０４】
（単純リングについての）別の可能性は、チップが生成したＬｏｏｐパケットにそのチップが再度出会ったら、そのＬｏｏｐパケットを停止するという解決法である。この解決法の欠点は、ａ）Ｌｏｏｐパケットは（ほとんど常に）合致しない最後のチップを過ぎて、起点チップに戻るように流れなければならないこと、および、ｂ）（長い）シーケンスのＩＤ、および起点チップＩＤ用のビットフィールドを追加して、この方法が働くようにする必要があるということである。
【０４０５】
Ｌｏｏｐパケット優先順位
新しいＬｏｏｐパケットの正常な処理、前方送出、および生成が、任意のＬｏｏｐチップのＬｏｏｐＬｉｎｋ上でデッドロックしないようにするかなり単純な方法を持つことが望ましい。一実施の形態では、デッドロック回避は、Ｌｏｏｐパケット型の異なるグループの相対的な優先順位を管理する一組の一貫した方針により達成でき、いくつかのＬｏｏｐパケットの内のどれがそのＬｏｏｐチップに現在居るのかを決定し、ＬｏｏｐチップのＬｏｏｐＬｉｎｋＯｕｔｐｕｔＰｏｒｔから送り出されることを全てが望んでいることを示す場合に、その方針を持つべきである。このような一組の方針を次に示す：
【０４０６】
第１に、ＶｉｄｅｏＰｉｘｅｌのＬｏｏｐパケットは常に最高の優先順位である。その理由は簡単である。すなわち、大部分の物理的イメージディスプレイ装置は、ビデオ出力信号が停止すると機能しなくなるからである。最終レンダリングデータがテクスチャメモリまたはホストコンピュータに読み返される特別な場合、この優先順位は、他より下げることができる。注意点は、データがホストコンピュータに読み返されている理由が、別のホストコンピュータを通って、リアルタイムまたは偽リアルタイムで物理的イメージディスプレイ装置（別のグラフィックスハードウェアアクセラレータ、圧縮カード、およびネットワークカード等）へ、送り出すことができるようにする、ということであれば、これが優先順位を下げる十分ない理由とは言えないということである。
【０４０７】
第２に、ＤｒａｗＰｉｘｅｌのＬｏｏｐパケットは第２位の優先順位を有する。これが便利なのは、ＧｒａｐｈｉｃｓＰｒｉｍｉｔｉｖｅのＬｏｏｐパケットが大量のＤｒａｗＰｉｘｅｌ  のＬｏｏｐパケットを生成できるからである（悪くても、単一の三角形プリミティブがフレームバッファ全体を埋めるのを終えるかもしれないということであり、従って、２００万ＤｒａｗＰｉｘｅｌのＬｏｏｐパケットまで生成できる）。デッドロックは、何らかの新しいＧｒａｐｈｉｃｓＰｒｉｍｉｔｉｖｅのＬｏｏｐパケットが処理中であるのを、ＤｒａｗＰｉｘｅｌのＬｏｏｐパケットがいくつかの点で一時的に停止できない場合に起きることがある。注意すべきは、理論的に、ＧｒａｐｈｉｃｓＳｔａｔｅの（変更）Ｌｏｏｐパケットは、それ自体で追加のＬｏｏｐパケットを生成しないので、ＤｒａｗＰｉｘｅｌのＬｏｏｐパケット（およびＶｉｄｅｏＰｉｘｅｌのＬｏｏｐパケット）に常に優先権を与えなければならないということは必ずしも必要ない。しかし、一般に、ＧｒａｐｈｉｃｓＳｔａｔｅのＬｏｏｐパケットのすぐ後には、ＧｒａｐｈｉｃｓＰｒｉｍｉｔｉｖｅのＬｏｏｐパケットが続くので、とにかく、なるべく速やかに停止させなければならない。このように、ＤｒａｗＰｉｘｅｌのＬｏｏｐパケットに、常にＧｒａｐｈｉｃｓＣｏｍｍａｎｄのＬｏｏｐパケットより高い優先順位を与える方が、より単純になり、通常は最適になる。
【０４０８】
理論的には、所与のＬｏｏｐＤｒａｗチップは、ＤｒａｗＰｉｘｅｌのＬｏｏｐパケットによりオーバーロードできる。チェックがない場合、これは、ＤｒａｗＰｉｘｅｌのＬｏｏｐパケットのトラヒックジャムをくぐり抜けることができないＶｉｄｅｏＰｉｘｅｌのＬｏｏｐパケットの脱落を招くことがある。ＬｏｏｐＤｒａｗチップは、理論的に、ＧｒａｐｈｉｃｓＣｏｍｍａｎｄのＬｏｏｐパケットを送るので、リング廻りの全ての道に入力バッファ状態を送ることができ、それにより、他の全てのＬｏｏｐＤｒａｗチップは、他の全てのＬｏｏｐＤｒａｗチップの入力バッファの（保存してある若干古い）モデルを有することができる。これは、おそらくＤｒａｗＰｉｘｅｌ入力ＦＩＦＯバッファ状態の情報を、とにかく規則的に生成されているＦｉｆｏＳｔａｔｕｓ更新Ｌｏｏｐパケットに加えることにより成される最上のものであろう。しかし、明確でないのは、リング上で追加の帯域幅を消費するメカニズムが必要になるかもしれない、ということである。Ｌｏｏｐパケット型のいくつかの異なる集合の内の一つのメンバーの種類をもつＬｏｏｐパケットを受け入れる受信Ｌｏｏｐチップの準備を、ＬｏｏｐＬｉｎｋハンドシェイクプロトコルが示した場合、より少ない帯域幅の強力なメカニズムを達成可能であろう。この方法では、より高い優先順位のＬｏｏｐパケット型は、より低い優先順位のＬｏｏｐパケット型が（一時的に）ブロックされる間、通り抜けることができる。
【０４０９】
この階級的なＬｏｏｐパケットのクラスメカニズムを採用すると、デバッグ、および割り込み状態リセット（例えば、状態マシンが何らかの理由で調べている場合など）のために、サポートされる一般のＬｏｏｐパケット優先順位クラス以上の、かつそのクラス間の優先順位をもつある特別な状態コマンドＬｏｏｐパケットを有するのが有用である。
【０４１０】
ＬｏｏｐパケットＦＩＦＯ状態フィードバック
Ｌｏｏｐパケットの大部分の型は、点火型と忘却型である。Ｌｏｏｐパケットがそれを創ったＬｏｏｐチップを去ってしまうと、そのＬｏｏｐチップはそのＬｏｏｐパケットのことを忘れてもよい。ＶｉｄｅｏＰｉｘｅｌのＬｏｏｐパケットおよびＤｒａｗＰｉｘｅｌのＬｏｏｐパケットは、この分類に入る。しかし、ＧｒａｐｈｉｃｓＣｏｍｍａｎｄのＬｏｏｐパケットは、ＬｏｏｐＩｎｔｅｒｆａｃｅチップにより多数のＬｏｏｐＤｒａｗチップに亘って注意深く負荷バランスされなければならない。この意味は、各ＬｏｏｐＤｒａｗチップ内の多様なオンチップ入力ＦＩＦＯバッファがどのように満たされているかについて、ＬｏｏｐＩｎｔｅｒｆａｃｅチップが何らかの可視性を必要とする、ということである。
【０４１１】
リング内の物理的に互いに隣り合うＬｏｏｐチップ以外の配線を完全になくすために、ＦｉｆｏＳｔａｔｕｓのＬｏｏｐパケットは、ＬｏｏｐＤｒａｗチップにより、元のＬｏｏｐＩｎｔｅｒｆａｃｅチップへ何度も送り返されなければならない。
【０４１２】
ＦｉｆｏＳｔａｔｕｓのＬｏｏｐパケットは、ＧｒａｐｈｉｃｓＣｏｍｍａｎｄのＬｏｏｐパケットを受け取るＬｏｏｐＤｒａｗチップの直接応答として送られない。その代わり、それらは、ＬｏｏｐＩｎｔｅｒｆａｃｅチップに保存してあるモデル（ＬｏｏｐＤｒａｗチップの観点からみて）が、ＬｏｏｐＤｒａｗチップの入力ＦＩＦＯバッファの一つがオーバーフローしそうになったことを予測する寸前に、ＬｏｏｐＤｒａｗチップにより生成される。そのモデルは下記のように働く：
【０４１３】
第１に、ＬｏｏｐＩｎｔｅｒｆａｃｅチップが（ある時点で）確実に最後に知った自由入力ＦＩＦＯバッファ空間の量は、ＬｏｏｐＤｒａｗチップが送ってくる最後のＦｉｆｏＳｔａｔｕｓのＬｏｏｐパケットに含まれる量であった。
【０４１４】
次に、この量から、ＦｉｆｏＳｔａｔｕｓのＬｏｏｐパケットが送られて以降、受け取ったＧｒａｐｈｉｃｓＣｏｍｍａｎｄのＬｏｏｐパケットが要した空間の量を減じる。次いで、潜在的に生成されたＦｉｆｏＳｔａｔｕｓのＬｏｏｐパケットがＬｏｏｐＩｎｔｅｒｆａｃｅチップに到着する前に、既にリング廻りを通過しているか、（しかし、ＬｏｏｐＤｒａｗチップはまだ受け取っていない）または、ＬｏｏｐＩｎｔｅｒｆａｃｅチップによりリングに送り込まれるかのどちらかの悪い方のＧｒａｐｈｉｃｓＣｏｍｍａｎｄのＬｏｏｐパケットの数が要した空間の追加量を減じる。
【０４１５】
この量が非常にゼロに近いが（実際のスレッショールドはプログラマブルであるのがよい）、入力ＦＩＦＯバッファのフリー空間の実際の量が、保存した予想より、かなり大きい場合、ＬｏｏｐＤｒａｗチップは、現在のもっと正しいフリー空間の量を伴うＦｉｆｏＳｔａｔｕｓのＬｏｏｐパケットを生成するのがよい。（ヒステリシスを組み込んでおくべきであり、新しいＦｉｆｏＳｔａｔｕｓのＬｏｏｐパケットは、状況を大きく変更したくない場合、あまり高い頻度で送るべきでないことに注意されたい。）
【０４１６】
これは、ＬｏｏｐＩｎｔｅｒｆａｃｅチップが、ＧｒａｐｈｉｃｓＣｏｍｍａｎｄのＬｏｏｐパケットを送る各ＬｏｏｐＤｒａｗチップでフリーな入力ＦＩＦＯバッファ格納が如何に小さいかという、（遅れて）「悪い方の場合」のモデルをもつ状況であり、すなわち、残りのフリーな格納の量は、ＦｉｆｏＳｔａｔｕｓのＬｏｏｐパケットが個々のＬｏｏｐＤｒａｗチップ（周辺の長い道）から戻って到着する時に、更新される。ＦｉｆｏＳｔａｔｕｓのＬｏｏｐパケットは、最後のＧｒａｐｈｉｃｓＣｏｍｍａｎｄの（ＬｏｏｐＤｒａｗチップ特定の）シーケンス番号を含み、相対的なタイムスタンプとして、特定のＬｏｏｐＤｒａｗチップのＦＩＦＯバッファに記入することができる（他の方法も可能である）。モデルは保存してあり、仮定としては、ＬｏｏｐＤｒａｗチップからのこの最後の報告の直後に、ＬｏｏｐＤｒａｗの入力バッファから出されるそれ以上のＧｒａｐｈｉｃｓＣｏｍｍａｎｄのＬｏｏｐパケットはない。（これは、常にとは限らないが通常、広い領域を覆うジオメトリックプリミティブのラスター化により起きる）。従って、伝統的に、そのＬｏｏｐＤｒａｗチップの入力バッファに付加する「フリー」空間は、最後のＦｉｆｏＳｔａｔｕｓのＬｏｏｐパケットで報告されるものから、ＦｉｆｏＳｔａｔｕｓに報告して戻ったもの以降のＬｏｏｐＩｎｔｅｒｆａｃｅチップにより送られている（ＬｏｏｐＤｒａｗチップへ）全てのＧｒａｐｈｉｃｓＣｏｍｍａｎｄのＬｏｏｐパケットが要した合計空間を減じたものである。この方法で、ＬｏｏｐＤｒａｗチップの入力ＦＩＦＯバッファオーバーフロー（および、レンダリングイメージの不調に伴うもの）の発生を防ぐことができる。ＬｏｏｐＩｎｔｅｒｆａｃｅチップはこの予測された悪い方の場合を用いる  次のユニキャストＧｒａｐｈｉｃｓＣｏｍｍａｎｄをどのＬｏｏｐＤｒａｗチップに送るべきか（それは全体コマンドを受領するために残された十分小さな空間を有するものの間からだけ選択する）を決定するＬｏｏｐＤｒａｗチップのＧｒａｐｈｉｃｓＣｏｍｍａｎｄ入力ＦＩＦＯバッファ・フリー空間。マルチキャストＬｏｏｐパケットについては、全てのターゲットＬｏｏｐＤｒａｗチップは、全てのマルチキャストＧｒａｐｈｉｃｓＣｏｍｍａｎｄのＬｏｏｐパケット受入れに十分な入力ＦＩＦＯバッファ空間を有していなければならない。またはＬｏｏｐＩｎｔｅｒｆａｃｅチップは、待機するだけで、データを送らない。（もっと複雑なアルゴリズムは、専用空間を有するＬｏｏｐＤｒａｗチップのサブセットだけへコマンドを送ることができ、コマンドをまだ受け取っていないＬｏｏｐＤｒａｗチップのトラックを保持して、キャッシュし、そして、除外されたＬｏｏｐＤｒａｗチップがコマンドを受け取る空間を有する場合、コマンドを再送信する。このような複雑なアルゴリズムの利点は、多くのＧｒａｐｈｉｃｓＣｏｍｍａｎｄの頻度が高く、先行オペレーションを取消したので、全てのＬｏｏｐＤｒａｗチップにそれらを送る（そして、処理する）ことを不要にした）。最終的に、現在のＬｏｏｐＤｒａｗチップのＦｉｆｏＳｔａｔｕｓのＬｏｏｐパケットは生きていて、ＧｒａｐｈｉｃｓＣｏｍｍａｎｄのＬｏｏｐ���ケットの伝送を再び可能にする十分な空間を開放する。
【０４１７】
このＬｏｏｐパケット伝送「制御（ｈｏｌｄ−ｂａｃｋ）」アルゴリズムは、リング内チップ数の直接的仮定はない、という利点を有する。実際、ＦｉｆｏＳｔａｔｕｓのＬｏｏｐパケットが初期のチップで表されるより大きな利用可能空間を表すことができる限り、ＬｏｏｐＤｒａｗチップ内のＧｒａｐｈｉｃｓＣｏｍｍａｎｄの入力ＦＩＦＯバッファサイズさえ、将来のチップ改訂で変更できるであろう。
【０４１８】
このＬｏｏｐパケット伝送「制御」アルゴリズムはまた、リング上のどこか特定位置でＬｏｏｐＤｒａｗチップを助けることはない。なぜなら、ＦｉｆｏＳｔａｔｕｓのＬｏｏｐパケットは、リングに沿う道の残りを通って、ＬｏｏｐＩｎｔｅｒｆａｃｅチップに戻るからである。ＬｏｏｐＩｎｔｅｒｆａｃｅチップに至るＬｏｏｐＤｒａｗチップの右隣り（下流）対最も遠く離れたもの（例えば、ＬｏｏｐＩｎｔｅｒｆａｃｅチップから上流だけ接続された）を考えること。下流の近接ＬｏｏｐＤｒａｗには、通過中のＧｒａｐｈｉｃｓＣｏｍｍａｎｄのＬｏｏｐパケットは少ないが、直ぐ上流のＬｏｏｐＤｒａｗチップよりも、リング廻りの道を現在採るもっと多い（そして旧い）ＦｉｆｏＳｔａｔｕｓのＬｏｏｐパケットを有する。従って、リング位置の相対的な利点は無効になり、そして、単純な負荷バランスアルゴリズムが用いられる。ＬｏｏｐＤｒａｗチップ間で、全てが十分な空間を有して、次のユニキャストプリミティブを受け取り、単純な総当たりアルゴリズムが公正さを保つ（この種の総当たりでは、十分な（予想された）入力バッファ空間がない任意のＬｏｏｐＤｒａｗチップは、次のユニキャストプリミティブを受け取る検討から外される）。
【０４１９】
しかしながら、Ｌｏｏｐパケット伝送「制御」アルゴリズムは、リング内のチップ数に間接的にいくらか依存する。ＬｏｏｐＤｒａｗチップ上のＧｒａｐｈｉｃｓＣｏｍｍａｎｄ入力バッファ合計格納サイズが、リング（の長さ）廻りを進行する全ての輸送バッファの合計サイズに近いか、または、それ未満の場合、一般に、不自然な保持が生成される（システムは依然機能するが）。
【０４２０】
一般的問題：「配線」がどのようにシステムを制限するか？
そのアーキテクチャの一つとして、一実施の形態で、同一の２つの構成ブロックＬｏｏｐチップが、多くの異なるサイズのリングを適切に構築して機能させる、いわゆる高度に拡張可能なアーキテクチャとして、Ｌｏｏｐアーキテクチャが提示された。
【０４２１】
確かに、過去の３Ｄグラフィックスハードウェアアクセラレータの拡張を厳しく制限したアーキテクチャの制限は、その大部分が回避されたというのは事実である。電源および接地以外の線を張り巡らしたシステムは不要である（クロックですら主ＬｏｏｐＩｎｔｅｒｆａｃｅチップから前へ送ることができる）。ＬｏｏｐＬｉｎｋＯｕｔｐｕｔＰｏｒｔの出力ピンを、ＬｏｏｐＬｉｎｋＩｎｐｕｔＰｏｒｔの入力ピンに接続する全ての配線は、リング内の或るチップから次のチップへ、ポイントツーポイントとなる。
【０４２２】
しかし、単一リング内で数珠繋ぎにできるＬｏｏｐＤｒａｗチップの数に真の２次的な上限がある。宛先メカニズムの説明で見られたように、ほとんどどのスキームにも、アドレス可能性の固有な上限がある。カウントフィールドを用いる場合は、この制限に実用上の問題はあまりないが、ビットセットフィールドを選択すると問題が発生してくる。Ｌｏｏｐチップの内部ＦＩＦＯバッファを最終的に悩ませることもある長いリングで遅延時間が延びるという問題もある（緩やかな限界ではあるが、設計限界となる）。ある制限を超えてＬｏｏｐＤｒａｗチップを追加する利点は、サンプル密度および／またはプログラマブルシェーダーパワーを増大させるという点で、主として、システムで有用である。当然ではあるが、何らかの物理的製品を具体化する際、所与のシャーシに合わせる最大の大きさのリングには冷却、電力、および空間の制限がある。最終的には、それ自体の拡張性は好ましいことであるが、柔軟性が増大するチップに対する設計試験のコストは、ほとんどの場合に増加する。Ｌｏｏｐアーキテクチャの試験可能性の影響はＬｏｏｐＩｎｔｅｒｆａｃｅチップにほとんど限定されるが、それでも特徴の追加はコストの追加を招く。
【０４２３】
最大化について説明しているが、あるスレッショールド未満のいくつかのＬｏｏｐＤｒａｗチップを用いる場合、機能的システムをサポートする上で限界がある（例えば、最低限のビデオ出力信号ビデオフォーマットピクセルレート）。
【０４２４】
これら課題の全てを考慮しながら、現在と将来の柔軟性を考慮してアーキテクチャを設計するが、設計の（あとの）時点で、重ねられた制約が拡張性に、特定の固定した制限を与える結果となる。
【０４２５】
これらの制限を拙速に強制すべきでない。しかし、現時点の一実施例として、一組の拡張性の想定は、リング内の１６個のＬｏｏｐＤｒａｗチップのスイートスポットのアーキテクチャ設計をターゲットとし、単一リングで最大６４個をサポートして拡張システムのサポートに十分な余裕を持たせることであろう。
【０４２６】
ある点を超えると、レンダリングパワーの追加は、別々にホストコンピュータに接続される多数の並列のリング、または、後で説明するように、より大きなシステムに接続される多数のリング、さらに考えると、一台以上のホストコンピュータに接続されるリングのスタック、として用いることによりサポートは良好になる。
【０４２７】
ビデオ出力
Ｌｏｏｐアーキテクチャの利点の一つは、これまでに現れた市販品よりずっと複雑で豊かなビデオ出力処理を容易にサポートできることにある。ここでは、それを達成できるビデオ出力アーキテクチャを説明する。
【０４２８】
ビデオとフレームバッファメモリの関係
簡単にするために、一つのＬｏｏｐＩｎｔｅｒｆａｃｅチップ、および１６個のＬｏｏｐＤｒａｗチップを有する単一リングについて考え、サンプル密度を１６と仮定する。１６個のＬｏｏｐＤｒａｗチップがあるので、各ＬｏｏｐＤｒａｗチップは、１６番目のピクセル毎の全１６サンプルについて格納を有する。繰り返しになるが、簡単にするために、ピクセル保有は４×４マトリクスに割り当てられているものとする。
【０４２９】
図６は、ＬｏｏｐＤｒａｗチップ＃６が保有するディスプレイの全ピクセルを示す。ここで、ＬｏｏｐＤｒａｗチップは０〜１５の番号を付けてある。ＬｏｏｐＤｒａｗチップ＃６に取り付けられたＤＲＡＭメモリは、特定ピクセルに対する全サンプルを含み、この実施例では１６サンプル／ピクセルである。他のＬｏｏｐＤｒａｗチップは、４×４のグリッド内の他のピクセルを保有する。例えば、ＬｏｏｐＤｒａｗチップ＃５はＬｏｏｐＤｒａｗチップ＃５が保有するピクセルのすぐ左を保有する。
【０４３０】
これとビデオ出力信号との関係は、アンチエイリアスフィルタが１×１のボックスフィルタの場合、各ＬｏｏｐＤｒａｗチップは、４本の走査線毎に１本だけ参加し、ＬｏｏｐＤｒａｗチップが参加する４本の走査線毎の１本にある４ピクセル毎の１ピクセルだけについてピクセル値を計算するに過ぎない。アンチエイリアスフィルタの動作は、保有する各ピクセルの１６サンプル全てを採取し（各サンプルはビデオフォーマットフレーム当たり１回だけ採取される）、全サンプルを互いに加算し、次いで、その結果を４ビットだけシフトする（各カラー／α成分について）。（このシフトはボックスフィルタの全重量を正規化する安価な形式というだけである。つまり、当該技術に精通する者には周知なように、全て１の１６個の重量は１６であり、１６で除算するのは２進法表現では４ビットだけ右にシフトすることである）。
【０４３１】
アンチエイリアスフィルタが、少し難しい４×４ピクセルネイバー法の関数であると仮定する。各ＬｏｏｐＤｒａｗチップは、ここでビデオ出力信号の全走査線に参加し、走査線毎の各出力ピクセルに加算すべき何かを有する。ＬｏｏｐＤｒａｗチップは、フレームバッファからサンプルをどのように採取しなければならないのか、ということについてこれは何を語るのか？  ピクセル毎の１６サンプルは、１６個の異なるビデオ出力信号ピクセルのフィルタリングで用いるために利用可能でなければならない。１つのビデオフォーマットフレームで、フレームバッファから１６回サンプルを採取したくない場合、ＬｏｏｐＤｒａｗチップのサンプル成分キャッシュメカニズム（不図示）の何らかの形式が必要となる。４つの連続するビデオ出力信号ピクセルで用いるために、１ピクセルの全サンプルを採取し、格納する場合、所与の１６サンプルがフレームバッファから採取されるビデオフォーマットフレーム当たりの回数は、ビデオフォーマットフレーム当たり４回に減少する。言い方を変えると、ピクセルデータ（サンプル）は、ビデオ出力信号の走査線毎に１回の採取だけでよく、合計で４回となる。メモリトラヒックはレンダリング側で読まれている（書込ではなく）深さの複雑さ４と等しいので、これでも帯域幅の量はまだ過剰である。ピクセル内容（１６サンプル）オンチップバッファの走査線が加えられる場合、全アクセスは最小限にまで減少させることができる。つまり、ビデオフォーマットフレーム当たりのピクセル当たり１回となる。注意すべきは、この実施例で、このピクセルの走査線は、最高解像度のビデオ信号フォーマットが走査線当たりに含むのと同量のピクセルの４分の１しか含まない、ということである。（最大走査線幅を１９２０ピクセルと仮定している。これは４８０×１６サンプルである）。
【０４３２】
図７は、この説明に対するいくつかの文脈を与える。薄い灰色の四角形で表されるたたみ込み窓はビデオ出力フォーマットの順にフレームバッファを通って進行する。つまり、左から右に、画面の上から下、である。ＬｏｏｐＤｒａｗ＃６に属する一つの特定のピクセルからのサンプル集合は、左上隅で最初に用いる前のこともあるが、１回だけ採取される必要があり、次いで、（このビデオフォーマットフレームでは）画面右下で最後に用いるまで、再使用のためにチップ上でキャッシュされる。中心が異なる各ＶｉｄｅｏＰｉｘｅｌのＬｏｏｐパケットには、個々のサンプル成分値により生成されて乗算される異なるたたみ込みカーネル係数が必要である。他の１５個のＬｏｏｐＤｒａｗチップは全て、サンプル採取およびキャッシュ再利用の時点が互いに異なるが、類似のたたみ込み窓、およびサンプル採取とキャッシュの要件を有する。
【０４３３】
４×４のたたみ込み窓がＬｏｏｐＤｒａｗチップ＃６からの一つの特定ピクセルの処理を含む必要がある全１６個のＶｉｄｅｏＰｉｘｅｌのＬｏｏｐパケット
他の多くの代替法があるのは明らかである。なぜ４×４のグリッドなのか？８×２または２×８のグリッドについては？１６個でなく、８または３２のＬｏｏｐＤｒａｗチップがある場合は？出力フィルタが４×４ではなく、５×５のサポートを要求したら？これらの異なる仮定の各々は、ピクセルアクセスおよびピクセルキャッシュサイズに別のトレードオフを招き、当該技術に精通する者がこれを受け持つことができる。これらの変形は、本発明の精神および範囲内にあるとみなされる。
【０４３４】
ここでの検討はフレームバッファアクセスをカバーするが、アンチエイリアスフィルタについてはどうか？最初に考えるのは、所与のピクセルのサンプルのサブピクセルの位置をどうやって知るのか、ということである。
【０４３５】
ここでは、ピクセル内のサンプルの位置分布（サブピクセルサンプル位置）が、ハードウエアサンプルアドレス生成器により生成される非ローカルに繰り返すパターンであると仮定する。この関数は、現在のピクセル位置により生じたランダム数関数を含んでもよく、それにより、ピクセル位置は、部分的にランダムなサブピクセルオフセットを常に生成できることになる。オフセットを使用し得る一つの方法は、基底の規則的なグリッド（矩形、六角形など）の摂動としてであろう。
【０４３６】
これらの１６サンプルをもつピクセルの４×４アレイにアンチエイリアスフィルタを適用する方法は多いが、簡単にするために、一つの特定の方法に絞る。これはアンチエイリアスフィルタを実装するための代替の実施の形態に限らない。ＬｏｏｐＩｎｔｅｒｆａｃｅチップがＶｉｄｅｏＰｉｘｅｌのＬｏｏｐパケットリクエストをＬｏｏｐＤｒａｗチップのリングに沿って送り出す場合、リクエストは、生成される出力ピクセルの中心の正確なサブピクセルｘｙアドレス（または、ビットを保存するための最後からのデルタアドレス）を含む。アンチエイリアスフィルタが半径方向に対称なフィルタであると仮定すると、所与のサンプルについてのフィルタ係数は以下のように計算できる：
【０４３７】
最初に、所与のサンプルのｘｙアドレスから出力ピクセル中心のｘｙアドレスを減算する。これらｘｙの差の値を二乗して合計する。その結果は、ビデオ出力位置中心、円対称アンチエイリアスフィルタの中心、からの特定サンプルの距離の二乗となる。この二乗した距離をアドレスとして用いて、二乗距離をフィルタ係数にマッピングする表（例えば、オンチップＳＲＡＭにある）をルックアップする。フィルタ係数が求められたので、次にこの値に、赤、緑、青、α（および、あるならその他も）のサンプル成分を乗算し、その結果の値を、赤、緑、青などのＶｉｄｅｏＰｉｘｅｌ出力成分の計算中の合計に加算する。フィルタ係数はこのビデオ出力ピクセルに対するフィルタ係数の現在の合計に加えられる。ＬｏｏｐＤｒａｗチップは、自ら保有するピクセルの１６サンプルそれぞれについて別々のフィルタ係数を計算し、それらの全てを単一の現在の合計（成分当たり、フィルタエネルギー合計を加算）に加算し、次にこの出力を（未だ終了していないので）、リングにある次のＬｏｏｐＤｒａｗチップ上のＶｉｄｅｏＰｉｘｅｌに渡す。
【０４３８】
増分加算されたフィルタエネルギー合計を最終的に用いて、出力用最終ピクセル値を生成する最終ステップの一部として、他のフィルタリング成分合計値を正規化する。但し、注意すべきは、増分加算されたフィルタエネルギー合計は、他の増分加算されたフィルタリング成分とともに明示的に渡さなければならない、ということである。加算されたフィルタエネルギー合計は、例えば、最終成分正規化を実行する場合など、最終的に必要な場合に再計算する。しかし、これは、加算されたフィルタリング成分に寄与した全サンプルについて生成される全てのフィルタ係数の再計算を含む。これはフレームバッファサンプル成分のどのような（高価な）アクセスも要求しないが、計算は大量であり、組み合わせたいくつかの（この実施例では１６個）チップ全体に展開する全ての他のたたみ込み電子回の規範と同じオーダーの電子回路を呈する！従って、代替の実施の形態は、増分加算されたフィルタエネルギー合計を、他の加算されたフィルタリング成分全てと一緒に送る代わりに、いくつかのチップにフィルタ係数生成を複製して、コストを節約できるが、他の多くの実施の形態は、ピン対オンチップ計算の現在の経済的トレードオフを与えられた更新ＶｉｄｅｏＰｉｘｅｌのそれぞれについて、フィルタエネルギーの部分和を送る。
【０４３９】
ＬｏｏｐＩｎｔｅｒｆａｃｅチップがＶｉｄｅｏＰｉｘｅｌを受け取る場合、巡回して、全ての（適切な）ＬｏｏｐＤｒａｗチップにより加算された後、ビデオ出力信号の最終生成の前に、ピクセルは、正規化、および僅かな追加ステップだけを必要とする。これを実行するために、ＬｏｏｐＩｎｔｅｒｆａｃｅチップは、最初に合計されたフィルタエネルギーの逆数を取ってから、この値にピクセル成分（赤、緑、青など）をそれぞれ乗算し、次に最終のたたみ込まれた値を生成する。ほとんどの実施の形態では、成分がＬｏｏｐＩｎｔｅｒｆａｃｅチップのビデオ出力信号ピンから出て行く前に、追加の処理をいくつか加え、実施の形態によっては、これは少なくとも、オプションのピクセルの非線形γ空間への変換を含む。
【０４４０】
上記方法でたたみ込みを実行する上で厄介なことの一つは、全ての（たたみ込まれた）ピクセル成分の正規化されていない部分和の値が、ＬｏｏｐＬｉｎｋピンを経て、ＬｏｏｐＤｒａｗチップからＬｏｏｐＤｒａｗチップへ渡されることである。最終合計値に寄与する大量のサンプルおよび高精度のフィルタ係数のために、部分和は、個々のサンプル成分より著しく高精度のビットを必要とする。ビット数は、フィルタ内部に入るかもしれないサンプルの最大数のｌｏｇ２と、生成した係数のビット数（ダイナミックレンジ）を加算した数である。例えば、サンプル密度１６、成分当たり１０ビットの４×４のフィルタでは、最大でおよそ４×４×１６＝２５６サンプルが寄与し、これは８ビットサイズを意味するので、１６ビットのフィルタ係数を加えると、ビデオ出力ピクセル成分それぞれについて、総計２４ビットがチップからチップへ渡る。しかし、これをよく見通すと、まだ、ＤｒａｗＰｉｘｅｌのＬｏｏｐパケットが深さの複雑さ６でレンダリングするときに必要とするピン帯域幅の半分以下であるから、サポートが必要である。
【０４４１】
この背景を考えると、本発明の代替の実施の形態においていくつか追加された特徴をサポートするために何らかの修正しなければならない、と言える。上記説明で、サンプルの全成分は、それらのために計算された単一のフィルタ係数値を有していた。大抵の場合はこれで十分である。しかし、ビデオを表示している物理的イメージシステム（デジタルマイクロミラーディスプレイ、レンズ、スクリーン等）内の色収差についてサブピクセルレベルで補正しなければならない場合、ＲＧＢ成分毎に異なる（サブピクセル精度の）ビデオピクセル中心を規定できることが必要である。さらに、これは、チップからチップへ渡すべき、１つではなく３つのフィルタエネルギー合計値を要求する。（αチャンネルの歪みを補正する能力は、これらの種類の投射システム用途で通常は要求されないので、ここでは３つが強調されている。当然ながら、３色を超えるスペクトル成分を用いる他の実施の形態では、４つ以上の追加フィルタ部分和が必要である）。これは、ＶｉｄｅｏＰｉｘｅｌのＬｏｏｐパケット当たりのチップからチップへ渡されなければならないビット数の２倍に近く、フィルタ係数を計算するための内部回路計算要件の３倍である。ＲＧＢビデオ出力ピクセル成分それぞれの歪みを別々に補正する能力に影響を与えるチップダイ面積を小さくする可能性のある一つの方法は、３２または６４個／リングのＬｏｏｐＤｒａｗチップをもつ最高級システムでよくあるように、余剰のＬｏｏｐＤｒａｗを有するチップシステムの過剰な計算パワーをうまく利用することである。可能性としては、ＬｏｏｐＤｒａｗチップは、所与の出力のＶｉｄｅｏＰｉｘｅｌのＬｏｏｐパケットを計算する時間の３倍を費やすことができ、それでも高速のビデオ出力信号ビデオフォーマットピクセルをサポートできる。他の多くの類似のトレードオフが可能である。
【０４４２】
もう一つの厄介なことは、４×４を超えるアンチエイリアスフィルタをサポートすることである。例えば、ｘとｙのピクセル境界の中心にない４×４フィルタでさえ、一般に、適切に実行するためにはフィルタリングに対して５×５ピクセルが必要である。この整数でない整合はビデオリサイズおよび補正モードで容易に起きる。
【０４４３】
これまで、リング当たりの単一のビデオ出力信号の生成を説明してきた。もう一つの厄介な問題は、２系統のビデオ出力信号を一つのリングでサポートするにはどうすればよいか、ということであり、仮定としては、ビデオフォーマットピクセルレートの合計は、単一チャンネルの最大ビデオフォーマットピクセルレートを超えないか？フレームバッファはどのようにマッピングするか？ビデオ生成は半分のリング２つで、別々に、並列に起きるのか？または何らかの方法で互いに混合するのか？  いつものように、単一のオプションはなく、この作業を行うための多くの異なる方法がある。全体のシステムアーキテクチャの検討は、オプション群から決定された方法に重み付けをしなければならない。これらの検討はアーキテクチャおよびシステムの制約であるが、本明細書の教示により当該技術に精通する者には容易に理解できよう。
【０４４４】
ＬｏｏｐＬｉｎｋが要求される帯域幅
本明細書のこの部分は、異なるレンダリングタスクのためのＬｏｏｐＬｉｎｋの実施の形態で用いられるいくつかの帯域幅の実施例を導き出す。これらの帯域幅は、例示のみを目的に本明細書で提示し、本発明を制限すると考えてはならない。以下３種類のトラヒックがあり、同時に発生し得る：
【０４４５】
ＬｏｏｐＩｎｔｅｒｆａｃｅチップから一つ以上のＬｏｏｐＤｒａｗチップへのＧｒａｐｈｉｃｓＣｏｍｍａｎｄのＬｏｏｐパケット；
【０４４６】
ＬｏｏｐＤｒａｗチップから一つ以上の他のＬｏｏｐＤｒａｗチップへのＤｒａｗＰｉｘｅｌのＬｏｏｐパケット；
【０４４７】
ＬｏｏｐＩｎｔｅｒｆａｃｅチップからＬｏｏｐＤｒａｗチップへのＶｉｄｅｏＰｉｘｅｌのＬｏｏｐパケット、ＬｏｏｐＤｒａｗチップから別のＬｏｏｐＤｒａｗチップへのＶｉｄｅｏＰｉｘｅｌのＬｏｏｐパケット、およびＬｏｏｐＤｒａｗチップからＬｏｏｐＩｎｔｅｒｆａｃｅチップへのＶｉｄｅｏＰｉｘｅｌのＬｏｏｐパケット。
【０４４８】
注意する点は、同時に起きるこれらのトラヒックの３種類全ては、例外ケースではなく、予期される通常のケースであり、システム全体で設計されるべきことの一つである。
【０４４９】
ＧｒａｐｈｉｃｓＣｏｍｍａｎｄのＬｏｏｐパケットにより要求される帯域幅
ＧｒａｐｈｉｃｓＣｏｍｍａｎｄのＬｏｏｐパケットを渡すために必要な相対的帯域幅は、他のＬｏｏｐパケット型のそれと比べて大きく変化する。単一の三角形を規定するＧｒａｐｈｉｃｓＣｏｍｍａｎｄのＬｏｏｐパケットは、２００万ＤｒａｗＰｉｘｅｌのＬｏｏｐパケット以上（全画面三角形）を生成できる。しかし、単一のＤｒａｗＰｉｘｅｌのＬｏｏｐパケットだけ、または何もないのさえ生成できる。もっと典型的な負荷範囲は、１ピクセルの生成から１００ピクセルの生成へと変化する。例えば、大部分の描画操作は、１ピクセルの非テクスチャ三角形から１００ピクセル領域テクスチャ化三角形までの範囲である。従って、一部の極端な場合を除けば、ＧｒａｐｈｉｃｓＣｏｍｍａｎｄのＬｏｏｐパケットにより占有される帯域幅の相対量は、ＤｒａｗＰｉｘｅｌのＬｏｏｐパケットのそれより充分少なく、ＶｉｄｅｏＰｉｘｅｌのＬｏｏｐパケットのそれと比べても充分少ない。
【０４５０】
ＧｒａｐｈｉｃｓＣｏｍｍａｎｄのＬｏｏｐパケットは、３Ｄグラフィックスハードウェアアクセラレータへのホストインターフェース（ホストコンピュータからの接続）の帯域幅により制限されることもある。ＬｏｏｐＬｉｎｋの帯域幅は、通常、何れかのホストインターフェースの帯域幅よりはるかに高い。アプリケーションソフトウエアが、３Ｄグラフィックスハードウェアアクセラレータ内にディスプレイリストを送って、明示的にキャッシュしない限り、所与のフレーム上の、リングにより送られる大部分のＧｒａｐｈｉｃｓＣｏｍｍａｎｄのＬｏｏｐパケットは、帯域幅を制限されたホストインターフェース上を、ホストコンピュータにより３Ｄグラフィックスハードウェアアクセラレータへ明示的に送られるグラフィック・ドライバコマンドメッセージにより、創出される。この場合、ホストインターフェースのビットレートはＬｏｏｐＬｉｎｋのビットレートよりかなり低いようなので、ほとんど確実に、ＬｏｏｐＩｎｔｅｒｆａｃｅチップのホストインターフェースを介して送られるグラフィック・ドライバコマンドメッセージに応答してＬｏｏｐＩｎｔｅｒｆａｃｅチップにより生成されるＧｒａｐｈｉｃｓＣｏｍｍａｎｄのＬｏｏｐパケットのビットレートも、ＬｏｏｐＬｉｎｋのビットレートより確実にずっと低い。ホストコンピュータがディスプレイリストを送って、３Ｄグラフィックスハードウェアアクセラレータにキャッシュする場合にだけ、３Ｄグラフィックスハードウェアアクセラレータは、ＬｏｏｐＬｉｎｋ上の大きな帯域幅量を必要とするＧｒａｐｈｉｃｓＣｏｍｍａｎｄのＬｏｏｐパケットのリングトラヒックを調べることができるだろう。
【０４５１】
定量的に見ると、次世代のホストインターフェースの大部分は、１から２ギガバイト／秒の範囲、すなわち、８から１６ギガビット／秒の持続可能最大帯域幅を有する。ＧｒａｐｈｉｃｓＣｏｍｍａｎｄのＬｏｏｐパケットの総計トラヒックは、ＤｒａｗＰｉｘｅｌのＬｏｏｐパケットの総計Ｌｏｏｐパケットトラヒック、および、ＶｉｄｅｏＰｉｘｅｌのＬｏｏｐパケットの総計Ｌｏｏｐパケットトラヒックより低い帯域幅要求をＬｏｏｐＬｉｎｋ提示する。
【０４５２】
ＤｒａｗＰｉｘｅｌのＬｏｏｐパケットが要求する帯域幅
一実施の形態のシステムの実施例では、所望のピクセルフィルレートは、サンプル密度１６で、１ギガピクセル／秒である。最小４×１２ビット成分値（いくつかのアドレス情報およびパケットヘッダを加える）から成るＤｒａｗＰｉｘｅｌのＬｏｏｐパケットにおいて、これは最小５０ビットであり、多分さらに数ビット長い。（他の実施の形態では、シェーディングされた２つ以上の成分値をＬｏｏｐＤｒａｗチップへ送って、ピクセルフィルを実行しなければならない。これらの実施の形態では、フィルピクセル当たりのビット数は５０を大きく超えるまで増大する）。
【０４５３】
全てのＤｒａｗＰｉｘｅｌのＬｏｏｐパケットが、ＬｏｏｐＬｉｎｋ毎に巡回しなければならない場合、１ギガピクセル／秒は、リンク当たり５０ギガビット／秒の帯域幅を必要とする。
【０４５４】
しかし、ｎ個のＬｏｏｐＤｒａｗチップのリング内で、１／ｎのＤｒａｗＰｉｘｅｌのＬｏｏｐパケットだけは、全てのｎ個のＬｏｏｐＤｒａｗチップを、消費される前に巡回しなければならない。１／ｎのＤｒａｗＰｉｘｅｌのＬｏｏｐパケットだけは、全てのｎ−１個のＬｏｏｐＤｒａｗチップを、消費等される前に巡回しなければならならず、最終的に、１／ｎのＤｒａｗＰｉｘｅｌのＬｏｏｐパケットは、Ｌｏｏｐパケットを生成したＬｏｏｐＤｒａｗを決して去ることはない。この数列に対する漸近値は１／２であり、従って、生成対象であるｍＤｒａｗＰｉｘｅｌのＬｏｏｐパケットを必要とするレンダリングレートは、所与のどのＬｏｏｐＬｉｎｋ上でも、ｍ／２のＤｒａｗＰｉｘｅｌのＬｏｏｐパケットの平均トラヒックしかないと分かる。
【０４５５】
従って、ギガピクセルフィルレートをサポートするためのＬｏｏｐＬｉｎｋ上の予想されるトラヒックは、２５ギガビット／秒に近くなる。依然として、これらのＬｏｏｐパケットは、ＬｏｏｐＬｉｎｋ上の単一の最大帯域幅要求を提示する。
【０４５６】
ＶｉｄｅｏＰｉｘｅｌのＬｏｏｐパケットが要求する帯域幅
ビデオ出力信号ビデオフォーマットピクセルレートと同じレートでＶｉｄｅｏＰｉｘｅｌのＬｏｏｐパケットを処理する必要がある（リング内のデータを伝送するために水平再トレース時間も用いる場合は、もう少し少ない）。従って、要求されるＶｉｄｅｏＰｉｘｅｌのＬｏｏｐパケットレートは、〜１３５メガピクセル／秒から、〜２４０メガピクセル／秒である。これらは、１２８０×１０２４＠７６Ｈｚから１９２０×１２００＠７６Ｈｚの範囲のビデオ信号フォーマットをサポートするのに必要なビデオフォーマットピクセルレートである。
【０４５７】
ＶｉｄｅｏＰｉｘｅｌのＬｏｏｐパケットのサイズは、各回路が計算する部分たたみ込み関数の数値の詳細に依存するが、４×２４ビット合計が良い近似となる。これは、〜１３ギガビットから〜２３ギガビット／秒までを意味する。これらのＬｏｏｐパケットは、ＬｏｏｐＬｉｎｋ上の２番目に大きい帯域幅要求を提示する。
【０４５８】
（色収差の色補正が可能な場合、これらの数は２倍に増える）。
【０４５９】
合計ＬｏｏｐＬｉｎｋのＬｏｏｐパケット帯域幅
最大数を加えると、ＧｒａｐｈｉｃｓＣｏｍｍａｎｄのＬｏｏｐパケットに対して１６ギガビット、ＤｒａｗＰｉｘｅｌのＬｏｏｐパケットに対して２５ギガビット、ＶｉｄｅｏＰｉｘｅｌのＬｏｏｐパケットに対して２３ギガビットであるから、これらを合計して、６４ギガビット／秒が得られる。しかし、６４ギガビット／秒は、３２０ＭＨｚで走る３２ビットデータバスを有する８並列ＤＲＡＭチップで、ローカルメモリサブシステムを創る場合に達成される実際の帯域幅より小さい（８×３２×３２０Ｍ＝８２see／see）。実際、ＤＲＡＭ帯域幅の数字は、アドレスバスおよびコントロールバスがあるので、ここで説明したより高い。このＤＲＡＭのローカルメモリサブシステム用のコントロールピン全てを有する同一チップに、入力および出力ＬｏｏｐＬｉｎｋの両方があるのは言うまでもない。
【０４６０】
単一チップのインおよびアウト両方の６４ギガビット／秒をサポートするどのピンＩ／Ｏ技術も、ＬｏｏｐＬｉｎｋ物理層を実装する実行可能な候補である。このような候補の一つには、ＣＭＯＳチップ用の多様な高速インターフェースのために用いられる現行の２．５ギガビット直列リンクがある。多数の２．５ギガビット／秒のリンクをピンレベルで利用すると仮定したとき、これは２６個のこのようなリンクを、Ｌｏｏｐアーキテクチャチップのいずれもが入力および出力ＬｏｏｐＬｉｎｋの両方で必要とする。２．５ギガビットの数字は、２００１年出荷のチップからである。生産の進歩により、もっと後の年の製造を狙う製品は、クロックレートだけでなく、ピン当たり３以上の電圧レベルを用いて、より高い数字を実現すると想定できよう。
【０４６１】
物理的配線
ＬｏｏｐアーキテクチャのＬｏｏｐＬｉｎｋの規則的で専用の点と点の配線は、市販のＬｏｏｐシステムの物理的構成のためのいくつかの興味ある新しいオプションを提示する。本明細書のここでは、伝統的なＰＣ基板構築方法、およびパッケージングの理論的オプションの両方を検討する。
【０４６２】
伝統的方法
Ｌｏｏｐアーキテクチャ用のフレームバッファカードを構築する伝統的方法は、一枚の大きなＰＣ基板を構築し、図８と同様である。簡単にするために、６個のＬｏｏｐＤｒａｗチップだけを示す。しかし、８個、１６個、または３２〜６４個以上のＬｏｏｐＤｒａｗチップでさえ、その基板は同じであり、もっと大きな個数のＬｏｏｐＤｒａｗチップを有する実装は、おそらくリングの上部および底部にいくつかのＬｏｏｐＤｒａｗチップを追加することになる。
【０４６３】
この設計は、単一ＰＣ基板に形成される利点を有し、ほとんど全ての方向から来る冷却用空気流を簡単に得られる。しかしこの全体に大きく複雑なＰＣ基板は、各部の何らかの変更の大部分に適応させるための変更要求が発生しやすい。
【０４６４】
非伝統的方法
単一のＬｏｏｐＤｒａｗチップ、および単一の大きなＰＣ基板上のメモリサブシステムのほとんど同一の複製を数多く創らなければならないことは、残念であるように見える。基本のＬｏｏｐＤｒａｗチップ、および接続されたＤＲＡＭブロックだけで簡単な小型ＰＣ基板ができれば、生産、試験、在庫、デバッグ、カスタム化等はずっと簡単になるであろう。この小型ＰＣ基板は、外したり、リング状に隣りどおしを結合しなければならない少数の短距離信号だけを持つことになる。
【０４６５】
この小型ＰＣ基板の接続に必要なＬｏｏｐＬｉｎｋ相互接続ピンは、全て２．５ＧＨｚ以上で動作する。技術的に必要なものは、導波路であり電線ではない。しかし、一実施の形態では、はんだ付けされた同軸コネクタで、この機能を実行できる。
【０４６６】
図９はこの代替の物理的構成を示す。６枚の小型で単純なＬｏｏｐＤｒａｗＰＣドーター基板の全てが、数本の同軸ケーブルで互いに結合される。図では、ＬｏｏｐＬｉｎｋ接続を形成するケーブルのグループを一本の黒い線で表す。実際にはこれはほぼ２８幅のリボン状同軸ケーブルである。図９には、ＰＣドーター基板の縁をハングオフしたＬｏｏｐＤｒａｗチップを示す。これは機械的には勧められない。ここで示す要点は、高速直列リンクを用いて、各ＬｏｏｐＤｒａｗチップをリングに結合するために必要な接続数（例えば、ＬｏｏｐＤｒａｗチップ当たり２接続）は充分少ないので、旧いＰＣ基板やコネクタを生産する方法を、代替手法により改善できる可能性がある、ということである。
【０４６７】
しかし、これら別々のＰＣ基板を単一平面に配置する必要はない。図１０は、他の逆転したもの毎に、隣り合う基板が「上−上」または「下−下」のどちらかで結合されるように、これらのカードを裏返せば可能になることを示す。図１０は、１６個のＬｏｏｐＤｒａｗチップ、２個のＬｏｏｐＩｎｔｅｒｆａｃｅチップの、エッジレイアウトのプリント回路ドーター基板を示す。ここで、点から点の配線は、或るＬｏｏｐＤｒａｗチップから次のＬｏｏｐＤｒａｗチップまで直線で配線される。これは、入力および出力のＬｏｏｐＬｉｎｋインターフェースを互いに鏡像のピンアウトにすることにより行う。完全な１６個のＬｏｏｐＤｒａｗチップ、および２個のＬｏｏｐＩｎｔｅｒｆａｃｅチップを有する設計を示す（接続するドーター基板の合計数は、列を形成するミラー配線と等しい）。空気フローは図を横切る水平方向となる。例えば、左から右、または右から左のどちらかである。
【０４６８】
底部の配線は、ただ乱雑に引き回されるが、それが最長の接続となろう。これは次の図１１に示すように固定する。図は、１６個のＬｏｏｐＤｒａｗチップ、２個のＬｏｏｐＩｎｔｅｒｆａｃｅチップのＶ型エッジレイアウトのプリント回路ドーター基板を示す。
【０４６９】
図１２は、図１１と同一のカードおよびミラー配置を用いるが、今度は、カードを円形になるよう編成して、１６個のＬｏｏｐＤｒａｗチップ、２個のＬｏｏｐＩｎｔｅｒｆａｃｅチップのエッジレイアウトの放射状プリント回路ドーター基板を示す。このレイアウトは図１１と同じ空気フローの長所を有するが、底部の配線長が短くなる利点をもつので、最大配線長が限られる。これにより、接続長さと一様性の点から見て、ずっと最適な設計が可能となる。この設計の配線長はずっと短いが、冷却は、限定空間に配置されたリング、および最高の冷却が必要なＬｏｏｐチップを貫流しなければならないだろう。
【０４７０】
チップパッケージのピン配置の物理的制約は、重要な設計要素である。最適配線長は、上−上または下−下のドーター基板構成のパッケージの両側のピンにより達成される。（これにより、パッケージが容易に多数の信号ピンをサポートすることもできる）。図１３（ａ）および図１３（ｂ）は、簡略化したＩＣパッケージの両側からの入出力コネクタを示す。ＬｏｏｐＬｉｎｋＩｎｐｕｔＰｏｒｔの入力ピンは、２Ｄアレイに「ｉ００」等と印字されている。ＬｏｏｐＬｉｎｋＯｕｔｐｕｔＰｏｒｔの出力ピンは２Ｄアレイに「ｏ００」等と印字されている。説明を簡単にするために、それぞれについて３５本のピンを示す。バランス対となる各信号、および近くに必要な電源と接地用ピンについて計上するので、実際の数字はもっと大きくなる。
【０４７１】
反転した背面−背面のＬｏｏｐＬｉｎｋ接続のためのチップパッケージ両面のパッド位置
注意すべきは、全ての出力ピンが入力ピンに対してミラー対称位置に現れるということである。従って、チップ面を反転すると、チップからチップへの配線は、空間的に真直な配線の集合となる。事実、外部配線長は、シリコンチップ面の入出力ドライバパッドから、ハーメチック封止されたＩＣパッケージ上の外部の（はんだ付け可能な）ピンまでの内部配線とあまり違わない距離を維持できる。
【０４７２】
繰り返すが、これがＬｏｏｐアーキテクチャの第３の特徴であるけれども、実世界のパッケージ制約が、これが製品製造において何らかの価値ある利点となるかどうかを決める。いくつかの伝送ラインの設定は、終端抵抗器を明示的に要求する。これはオフチップで生産されるので、外付けか、またはパッケージ内に組み込む。
【０４７３】
多数リングサポート
これまでの実施例は、単一の単純リングについてであった。８〜６４個以上のＬｏｏｐＤｒａｗチップをもつリングのシステムアーキテクチャは、本発明の精神から逸脱することなく、当該技術に精通する者なら容易に設計できる。しかし、一つ以上のサブリングをサポートするリングについてはどうか？  このセクションでは多数の単純リングをホストインターフェースを用いて互いに接続できる方法を説明する。例えば、ホストインターフェースは、ホストコンピュータに接続しなくてもよく、ホストインターフェースを用いて他の単純リングに接続する。次に、追加の非ローカル高速相互接続を用いて、全く同一の機能を実行する方法を説明する。このセクションおよびその次の概念の間には多くの類似点がある。その違いは程度の問題であり、このセクションは、ＬｏｏｐＬｉｎｋより著しく帯域幅が小さいデータパスを用いる単純リング接続を説明する。その次は、ＬｏｏｐＬｉｎｋの帯域幅と同じかまたは近いデータパスを用いる単純リング接続を説明する。実際には、一実施の形態で、追加するデータパスは、追加するＬｏｏｐＬｉｎｋである。最初に、グラフィックス記号を若干抽象的に変更しておく。
【０４７４】
単一リングの概要
図１４は、一つのＬｏｏｐＩｎｔｅｒｆａｃｅチップＩ１、および７個のＬｏｏｐＤｒａｗチップＤ１〜７を有するリングを３Ｄ透視図で示す。ＬｏｏｐＤｒａｗチップに取り付けられたＤＲＡＭチップは図示しない。
【０４７５】
図１５は、第１リングの第２ＬｏｏｐＩｎｔｅｒｆａｃｅチップを介してリングに接続される第２リングを有する２重リングシステムを示す。
【０４７６】
２重リングの概要
これらのリングの６および７個のＬｏｏｐＤｒａｗチップは、図示を簡単にするのが目的というだけである。典型的には、ＬｏｏｐＤｒａｗチップの数は、存在するＬｏｏｐＩｎｔｅｒｆａｃｅチップの数とは無関係に、２の累乗である。
【０４７７】
図１５では、第２ＬｏｏｐＩｎｔｅｒｆａｃｅチップ８０５が、第２リングのＬｏｏｐＩｎｔｅｒｆａｃｅチップ８１０へ／から接続するために、第１リングに加えられている。これが可能なのは、ホストインターフェースが定義により完全に機能する２方向相互システムバスだからである。重要な点は、ホストコンピュータは第１リングへ直に接続されているにすぎないことである。
【０４７８】
第２リングは、自らビデオ出力インターフェースをもつ論理的な第２の３Ｄグラフィックスハードウェアアクセラレータでもよく、２個のＬｏｏｐＩｎｔｅｒｆａｃｅチップを介するリングからリングへのリンクだけを用いて、２つのホストコンピュータインターフェースを持つのを避ける。そのトレードオフは、両リングシステムが、単一リンク上のホストコンピュータへ／からの帯域幅を共有しなければならない、ということである。ステレオサポートの特別な場合には、１つのリングが左眼の視野を、他のリングが右眼の視野を計算し、アプリケーションソフトウエアおよびグラフィック・ドライバが確認するのは、ホストインターフェースから送られるグラフィック・ドライバコマンドメッセージの大部分が、左視野のレンダリング、および右視野のレンダリングの両方について同一である、ということである。この意味は、２つのリングの一方または他方だけについて意味をもつ同一でないグラフィック・ドライバコマンドメッセージの僅かな量、次いで、両リングにより処理される意図を伴って一つだけ送られる大量のグラフィック・ドライバコマンドメッセージがある、ということである。（これは、要するに、グラフィック・ドライバコマンドメッセージの普通のユニキャストではなく、マルチキャストである）。こうして、単一レンダリングより広いホストインターフェースの帯域幅を占有せずに、２つの並列ローカルリングにより、２つの並列のレンダリングが実行される。
【０４７９】
別の代替法では、第２リングが、第１リングのサブプロセッサとなる。レンダリング計算用の特別なビューマトリックスが、最終レンダリングされるイメージレンダリングの前方の（部分）フレームとして既知である限り、シャドウマッピング、反射マッピング等を計算できる。
【０４８０】
追加のＬｏｏｐＩｎｔｅｒｆａｃｅチップをリングに加えると、別のリング内の別のＬｏｏｐＩｎｔｅｒｆａｃｅチップへの接続が可能になる。コンピュータサイエンスの接続用語では、構築できる構成クラスは、任意の接続されたグラフ（ネットワークとも呼ぶ）であり、リング、または、方向性のある非環グラフだけではない。ＬｏｏｐＩｎｔｅｒｆａｃｅチップは、所望ならどこでもホストコンピュータにケーブル接続できるので、そこがグラフへの単一「ルート」と等価である必要はない。このように、本発明のアーキテクチャおよびパッケージングは、形成可能で接続される構成の種類にほとんど制限を加えることはない。
【０４８１】
ボックスの仕切り
単純リング、またはもっと複雑なリングの集合のボックスレベルでパッケージングを説明する。複雑なマルチリング構成は、一つのシャーシ内にパッケージされるが、任意のグラフをサポートするもっと単純な方法がある。
【０４８２】
ここで、仮定するのは、単純リングではあるが、多数のＬｏｏｐＩｎｔｅｒｆａｃｅチップを有するリングが、内部電源を有する２Ｕラックマウントボックスへ標準としてパッケージングされる。すなわち２ＵＧｒａｐｈｉｃｓＳｌａｂである。
【０４８３】
ＧｒａｐｈｉｃｓＳｌａｂ２Ｕボックス内部のＬｏｏｐＩｎｔｅｒｆａｃｅチップへ／からの外部Ｉ／Ｏのための全ての信号は、ボックス背面の標準コネクタに導く必要がある。これらの標準コネクタのいくつかは、ビデオ出力インターフェースである。その他のコネクタは標準のホストインターフェースコネクタである。ボックス背面の一つ以上のホストインターフェースコネクタは、コネクタに差し込まれる外部ケーブルを有し、ケーブルの他端は、一台以上のホストコンピュータに結合される。しかし、ボックス背面の一つ以上のホストインターフェースコネクタが、コネクタに挿入された外部ケーブルを有し、ケーブル他端は、別のホストコンピュータに接続されず、その代わりに、同一または近くのラックの別の異なるＧｒａｐｈｉｃｓＳｌａｂボックスの背面のホストインターフェースコネクタに接続されることができる。このように、例えば、１６個のＬｏｏｐＤｒａｗチップ、および３個のＬｏｏｐＩｎｔｅｒｆａｃｅチップを有する２ＵＧｒａｐｈｉｃｓＳｌａｂなどの、単一の標準製品だけを用いて、リングのグラフの非常に大きい数の異なるトポロジーが、ケーブル接続だけで構成できる。（当然ながら、いくつかの構成ソフトウエアも必要）。これらの構成は、工場でカスタム化するのではなく、ユーザがカスタム化してもよい。
【０４８４】
ショートカット
これまでの詳細な説明の大部分は、単純リングに接続されるいくつかのＬｏｏｐチップにレンダリング計算を分散する方法に焦点を当ててきた。例えば、各Ｌｏｏｐチップは、反時計廻りの順に先行する隣のＬｏｏｐチップ、そして、反時計廻りの順に後続の隣のＬｏｏｐチップに接続するだけである。このセクションは、先に説明した追加の非ローカル接続パスを実際に用いて、レンダリングプロセスのいくつかの局面の性能を改良する方法に焦点を当てる。
【０４８５】
最適Ｌｏｏｐパケットのフロー
単純リング接続は、ストリーム処理として構成できる計算処理に対して充分バランスが取られている。例えば、計算データは全ての計算ノード（チップ）を介してシーケンシャルに流れる。ＬｏｏｐアーキテクチャＶｉｄｅｏＰｉｘｅｌのＬｏｏｐパケットはこの範疇に入り、単純リング上のリングトラヒック全ての１／３以上を占める。ＬｏｏｐアーキテクチャＧｒａｐｈｉｃｓＳｔａｔｅのＬｏｏｐパケットもまた、ほとんどこの範疇に入るが、通常は、著しい量のリングトラヒックにはならない。
【０４８６】
ＬｏｏｐアーキテクチャＧｒａｐｈｉｃｓＰｒｉｍｉｔｉｖｅ、およびＤｒａｗＰｉｘｅｌのＬｏｏｐパケットは、ストリームフォーマットでは最高性能を発揮できない。つまり、ポイントツーポイント伝送がずっと最適化されている接続の仕組みでは、帯域幅はほとんど費やされない。これらの２つのＬｏｏｐパケット型は、全リングトラヒックの半分と２／３との間を占め、もっと多数のＬｏｏｐＤｒａｗチップがリングにある場合、もっと高い割合を占める。従って、非ローカル接続を追加することは、これらのＬｏｏｐパケット型で最も役立つ。
【０４８７】
ショートカット
多様な実施の形態では、異なる方法で単純リングに非ローカル接続を追加する。一実施の形態では、非ローカル接続を全ＬｏｏｐＤｒａｗチップに追加することもある。この方法は最も直接的であるが、最小限で与えられたＬｏｏｐアーキテクチャのチップ型にピンを追加し、通常必要とされる以上の追加接続を加える。
【０４８８】
最も「純粋な」実施の形態では、新しいＬｏｏｐアーキテクチャのチップ型を創生すべきであろう。通常のＬｏｏｐＬｉｎｋＩｎｐｕｔＰｏｒｔおよびＬｏｏｐＬｉｎｋＯｕｔｐｕｔＰｏｒｔのＬｏｏｐＬｉｎｋを有するが、通常の２を超える追加のＬｏｏｐＬｉｎｋインターフェースピンも有する「クロス」チップである。次いで、これらの追加のＬｏｏｐＬｉｎｋを用いて、所望の非ローカル接続を追加できる。この方法の主な制約は、システムがサポートできるリングトラヒック量をいくらか増大させる代わりに、別の新しいカスタムチップ設計を、Ｌｏｏｐアーキテクチャの市販品への実装を構成するのに必要な設計業務に加えることである。
【０４８９】
妥協的な方法は、代わりに所望の追加の非ローカル接続を標準のＬｏｏｐＩｎｔｅｒｆａｃｅチップ設計に加える一実施の形態である。ＬｏｏｐＩｎｔｅｒｆａｃｅチップもまた、すでに大量のインターフェースピンをサポートしなければならないけれども、ＬｏｏｐＤｒａｗチップ程には負荷が重くない。所与のシステム構成が含むＬｏｏｐＩｎｔｅｒｆａｃｅチップはＬｏｏｐＤｒａｗチップより少ないので、ＬｏｏｐＩｎｔｅｒｆａｃｅチップのコスト上昇による全体コストへの影響はずっと少ない。加えて、いくつかの実施の形態では、ＬｏｏｐＩｎｔｅｒｆａｃｅチップ設計にホストインターフェースをサポートする多くの既存のピンは、非ローカル接続インターフェースの実装で再利用できる。
【０４９０】
これらの非ローカルインターフェースのインターフェース詳細に関する簡単な注意。同一のＬｏｏｐパケット型は両インターフェースを通らなければならないので、これら全ての非ローカルインターフェースは、あるレベルでＬｏｏｐＬｉｎｋインターフェースと互換性がなければならない。しかし、状況により、非ローカルインターフェース間の大部分の所望の接続は、他の非ローカルインターフェースへの接続なので、いくつかの実施の形態では、非ローカルインターフェースはＬｏｏｐＬｉｎｋインターフェースと同一のデータ幅およびピンインターフェースを有する必要はない。従って、非ローカルなインターフェースがＬｏｏｐＬｉｎｋインターフェースと同一であるという不要な制約を避けるために、それがそのような実施の形態の一つであるとしても、それをＬｏｏｐＬｉｎｋインターフェースとは呼ばない。その代わりに、ショートカットと呼ぶ。Ｌｏｏｐシステムの機能に近い名前である。
【０４９１】
別のショートカット接続、および同一接続を引き出す別の方法を含むショートカット追加の実施例
図１６（ａ）〜図１６（ｋ）は、ショートカット接続のいくつか異なる方法、および同一ショートカット接続を引き出す２つの異なる方法を示すいくつかの場合を示す。図１６（ａ）〜図１６（ｋ）のすべての実施例は、斜めハッチの円１６０２、および白抜きの円１６０４で示す１、２、または４個のＬｏｏｐＩｎｔｅｒｆａｃｅチップにより表された１６個のＬｏｏｐＤｒａｗチップを含むリングを示す。ＬｏｏｐＩｎｔｅｒｆａｃｅチップは、何らのショートカットサポートもないか（例えば、標準のＬｏｏｐＬｉｎｋＩｎｐｕｔＰｏｒｔおよびＬｏｏｐＬｉｎｋＯｕｔｐｕｔＰｏｒｔのそれぞれを有するだけのもの）、または、すべてのＬｏｏｐＩｎｔｅｒｆａｃｅチップが一つの追加ショートカット入出力ポートを有する新しい実施の形態のいずれかである。いくつかの実施の形態では、ショートカットは、標準のＬｏｏｐＬｉｎｋインターフェースと異なることもあるが、一実施の形態ではＬｏｏｐＩｎｔｅｒｆａｃｅチップに取り付けられた追加ＬｏｏｐＬｉｎｋインターフェースだけである。（それはケースバイケースに基づくと指摘されるような場合である）。すべての場合に、矢印のついた黒い線はＬｏｏｐＬｉｎｋまたはショートカット上のデータフローの方向を示す。
【０４９２】
図１６（ａ）は、２つのＬｏｏｐＩｎｔｅｒｆａｃｅチップをもつが、ショートカットがないリングの実施例を示す。図１６（ｂ）は、いくつかのユニキャストＬｏｏｐパケットが８個のＬｏｏｐＤｒａｗチップをバイパスする「ショートカット」を効率的にとることが可能な一対のショートカットをもつリングを示す。図１６（ｂ）では、追加のショートカットは他のショートカットに接続されるだけなので、追加ショートカットポートのためのインターフェースは、ＬｏｏｐＬｉｎｋインターフェースと同一でなくてもよい。図１６（ｂ）では、ショートカットはチップ間のＬｏｏｐＬｉｎｋ接続よりずっと長い配線のように見えるが、例を表現する作り物に過ぎない。図１６（ｃ）は、実施例１６（ｂ）と同じ接続を示すが、接続の全長を最小にするために別の場所に配置される多様なチップをもつ。図１６（ｃ）は、接続長を短く保つ一実施の形態を示すに過ぎない。必要であれば、この短い配線長の目標を達成できる物理的なチップおよびプリント基板の他の多くの構成が可能である。この代替構成は、本明細書の教示に基づけば当該技術に精通する者には明らかであろう。
【０４９３】
図１６（ｂ）では、２個のＬｏｏｐＩｎｔｅｒｆａｃｅチップだけを用いて、一対のショートカットを追加する。ＬｏｏｐＬｉｎｋインターフェースを利用してショートカットを構築しなければならないという制約がある場合、図１６（ｂ）に類似する接続が達成できる。図１６（ｄ）は、単一ＬｏｏｐＩｎｔｅｒｆａｃｅチップをもつが、ショートカットは持たない単純リングを示す。図１６（ｅ）は、図１６（ｂ）と等価であるが、一つしかＬｏｏｐＩｎｔｅｒｆａｃｅチップを用いない接続を示す。図１６（ｆ）は、図１６（ｃ）に類似する、接続長の短かい実施の形態を示す。
【０４９４】
いくつかの追加接続の実施の形態を説明した後で、グラフィックスレンダリングシステムの機能の定量的な改良を説明する。
【０４９５】
図１６（ｇ）は、ＬｏｏｐＬｉｎｋインターフェースと同一でなくてもよいショートカットを持つ４個のＬｏｏｐＩｎｔｅｒｆａｃｅチップを備えたリングを示す。図１６（ｇ）では、「ショートカット」が、４個のＬｏｏｐＤｒａｗチップを飛び越えて前に進む。図１６（ｈ）に示すリングは、「ショートカット」が、４個のＬｏｏｐＤｒａｗチップを飛び越えて後ろに進むこと以外は、酷似している。これらの各種実施の形態の性能を後で説明する場合、後方に飛び越える方が、前方に飛び越えるよりトラヒックフローを改善することが分かる。図１６（ｉ）は、最大接続長を短くしてサポートする代替の物理的レイアウトである（図１６（ｃ）および図１６（ｇ）に類似）。
【０４９６】
図１６（ｊ）は、図１６（ｈ）〜図１６（ｉ）と同数のチップを有する別の実施の形態を示す（例えば、ショートカットを有する４個のＬｏｏｐＩｎｔｅｒｆａｃｅチップ）。このシステムのデータフローは、図１６（ｋ）に示す実施の形態より良好に視覚化している。ここで、接続は、一方向から他のすべての４個のＬｏｏｐＤｒａｗチップに飛ぶことができるＬｏｏｐＤｒａｗチップの前方および後方リングであることが見てとれる。注意すべきは、図１６の左側および右側の半分のＬｏｏｐＩｎｔｅｒｆａｃｅチップが、同じＬｏｏｐＩｎｔｅｒｆａｃｅチップであることである。
【０４９７】
両端に矢印がついた破線はこれを再度強調する。図１６は、図１７に表現してあるように、３、６、９、および１２時の位置に４個のＬｏｏｐＩｎｔｅｒｆａｃｅチップを持つ８個のＬｏｏｐＤｒａｗチップの外側の反時計回りリングとして、および８個のＬｏｏｐＤｒａｗチップの内側の時計回りリングとして描くこともできる。この実施の形態は図１６に示す他のものよりさらに、高効率の帯域幅をサポートする。このリング構成、およびそのもっと大きな構成は２重単純リングと呼ばれる。
【０４９８】
図１７は、図１６（ｉ）を２重単純リングとして再描画したものである。これらすべての実施例の構成を、１６個のＬｏｏｐＤｒａｗチップを含むシステムとして示す。これらの実施例の構成は、他のまたはもっと大きな数のＬｏｏｐＤｒａｗチップを含む実施の形態にすることができ、そのうちのいくつかの構成は、同数のＬｏｏｐＩｎｔｅｒｆａｃｅチップを保持する一方、他の構成もまた、ＬｏｏｐＤｒａｗチップが加えられるのと同じ割合で、または異なる割合のいずれかで、追加のＬｏｏｐＩｎｔｅｒｆａｃｅチップを加える。これらの実施の形態の一般的クラスの一つは、図１７の生成である。ｎ個のＬｏｏｐＤｒａｗチップを、ｎ／２個のＬｏｏｐＤｒａｗチップの外側の反時計回りリング、およびｎ／２個のＬｏｏｐＤｒａｗチップの内側の時計回りリングとして配分する。ｍ個のＬｏｏｐＤｒａｗチップ毎に、内側リングと外側リングとの間の橋渡しをするＬｏｏｐＩｎｔｅｒｆａｃｅチップを挿入する。ここで、ｍは１とｎ／２との間の正の整数であり、ｎ／２はｍの整数倍である。僅かに規則性が少ない実施の形態では、このｍに関する制約を緩和する。
【０４９９】
単一対のショートカットを伴う性能
図１６（ｂ）または図１６（ｅ）の接続を考える。ローカルリングはリング接続を２等分する２つの１方向リンクを付加されている。場合により、ユニキャストＬｏｏｐパケットは、発信元および宛先のＬｏｏｐチップ間のリングにあるすべてのＬｏｏｐチップのＬｏｏｐＬｉｎｋを巡回することを避けるという、ショートカットの利点を有する。
【０５００】
例えば、すべての発信元／宛先の対が等しく発生する等、統計的なリングトラヒックのバランス取りがされていると仮定して、以下のパラグラフでは、これら２つのショートカットをローカルリングに加えた影響を説明する。その影響は、Ｌｏｏｐパケットのいくつかが（８個以上のＬｏｏｐＤｒａｗチップを巡回しなければならないもの）、ショートカットを用いることにより、８個のＬｏｏｐＤｒａｗチップを通り抜けないでも済む、ということである。
【０５０１】
すべてのＬｏｏｐＤｒａｗチップが等しい数のＬｏｏｐパケットを、自らを含むすべての他のＬｏｏｐＤｒａｗチップへ送っている、と名目上仮定する。ｎ個のＬｏｏｐＤｒａｗチップがあり、ショートカットがない一般的な場合、ＬｏｏｐＤｒａｗチップが毎秒送る追加のＤｒａｗＰｉｘｅｌのＬｏｏｐパケット毎に、平均で、リング全てのＬｏｏｐＬｉｎｋインターフェースに１秒間に必要な増分帯域幅は、ＤｒａｗＰｉｘｅｌのＬｏｏｐパケットのビットサイズ×０．５×（ｎ−１）／ｎ〜＝０．５だけ増える。ショートカットがある場合は、増分の割合は０．３８未満である。
【０５０２】
多数のショートカット対の性能
次のパラグラフでは、図１６に示す他の構成の性能の影響を説明する。２重単純リングを考える（図１７および図１６（ｉ））。４個ｎＬｏｏｐＤｒａｗチップ全てにＬｏｏｐＩｎｔｅｒｆａｃｅチップがある、と仮定する（例えば、各方向の列に２個のＬｏｏｐＤｒａｗチップだけ）。表３は、サイズｚの単純リングの場合について、およびサイズｚの２重単純リングについて、ＤｒａｗＰｉｘｅｌのＬｏｏｐパケットの多数のビットサイズとして、リングの全てのＬｏｏｐＬｉｎｋインターフェースに必要な１秒当たりの増分帯域幅を示す。
【０５０３】
この表からのいくつかの観察
第１に、ｎが小さいとき、分数０．５×（ｎ−１）／ｎ〜＝０．５は、０．５にいくらか満たない（図示のように）。第２に、ｎが小さいとき、２重単純リングはさほど大きな値が得られない。ｎ＝８では、単純リングを超えるゲインはわずか１．０７７である。これは、小さなリングではショートカットのゲインが限られていることを表している。第３に、ゲインはｎのさらに大きな値に対して改善されるが、改善度合いは非常に大きなｎについては一定になる。この構成のショートカットは比較的ローカルなので、これは理解できる。ｎの非常に大きな値に対して増分帯域幅負荷を減らすためには、もっとグローバルなショートカットリンクを追加する（例えば、もはや２重単純リングではなく）。
【０５０４】
最後に、６４個のＬｏｏｐＤｒａｗチップをもつリングでは、単純リング構成を超える２重単純リングのゲインは、約３倍である。ＶｉｄｅｏＰｉｘｅｌおよびＧｒａｐｈｉｃｓＣｏｍｍａｎｄのＬｏｏｐパケットに対するＬｏｏｐＤｒａｗチップ当たりの帯域幅要求は、ｎに対して比較的独立しているが、より高いピクセルフィルレートに拡張するために、ユニキャストＤｒａｗＰｉｘｅｌのＬｏｏｐパケット数は、ｎの大きな値に対して、さらに大きな緩和を提供する場合、ｎに比例して大きくなる。
【０５０５】
表は、２の累乗のｎの値に対する結果を単に示す。これは傾向をより良好に示すためのものである。一般的な構成では、これら２の累乗の間の多くの数についても良好に動作し、改善ファクタ尺度も同様である。例えば、ｎ＝４８では、単純リング係数は０．４９０であり、２重単純リング係数は０．１８５である。
【０５０６】
次のパラグラフは、より高性能の構成を用いる方法を説明する。これまでの説明では、Ｌｏｏｐチップの相互接続の別の実施の形態に対する余裕のあるユニキャストパケット能力の帯域幅コストの差を説明した。特定接続の実施形態の選択は、他のシステムの制約に影響を与える。所与の接続構成を利用する一つの方法は、ＬｏｏｐＬｉｎｋインターフェースの別の実施の形態を区別する際の最大帯域幅を最小にすることである。例えば、ＬｏｏｐＬｉｎｋインターフェースを実装するために用いるピンの数を減らすこと、および／または、もっと保守的なデータクロック周波数を用いることである。
【０５０７】
平均化、シミュレーション、および動的負荷バランス
ＬｏｏｐＬｉｎｋインターフェースが制約ではない場合、別の接続構成が、他の構成より高い最大レンダリングレートを可能にする。異なる構成間の相対的な性能は、リングがオーバーロードまたはアンダーロードの状態にはほとんどなく、それにより全ての帯域幅が利用されているという充分高速な平均値に対して、Ｌｏｏｐパケットが通るパスの長さ（巡回するＬｏｏｐＤｒａｗチップノードの数）が変動するという仮定のもとで与えられている。
【０５０８】
第１の質問は、この仮定は有効か？ということである。どの重要なピクセル領域のＧｒａｐｈｉｃｓＰｒｉｍｉｔｉｖｅについても、ＤｒａｗＰｉｘｅｌのＬｏｏｐパケットの統計値は完全に一様に分布していて、（１ピクセル幅、非常に高い縦の三角形のような）異常な場合だけ名目的な仮定とは著しく相異する。非常に小さなピクセル領域を持つＧｒａｐｈｉｃｓＰｒｉｍｉｔｉｖｅについて、制限ファクタは、ＤｒａｗＰｉｘｅｌのＬｏｏｐパケットの配送ではなく、もっと可能性がありそうなのは最大ジオメトリックプリミティブレートであり、その場合には、その点が疑わしい。
【０５０９】
そうは言っても、これらの種類のシステムは、かなり単純ではあるが、正確な数値シミュレーションに左右される。従って、所与の構成の可能性のある実際の性能を、名目上の仮定に基づいてどれだけそれに近く予測できるかという質問は、実際のチップを構築する前に、かなり容易に実証できる。
【０５１０】
最終的に、「ショートカット」の利点を最大にするためには、いくつかの構成で、どのユニキャストＬｏｏｐパケットが特定のショートカットを取るかを決定するためのアルゴリズムが、単純な「最短距離」アルゴリズムでなく、静的または動的な同調パラメータを有するものである場合に、良好な性能が得られる。
【０５１１】
静的同調パラメータの一実施例は、レジスタに格納するバイパス百分率の値であり、その値は、ショートカットを取ることができる実際に選択できるＬｏｏｐパケット数を定義する。特定の接続構成の解析が示すのは、選択可能なＬｏｏｐパケットの８０％だけが実際にショートカットを用いる場合、最高の総合性能が達成されるということである。
【０５１２】
動的な同調パラメータの実施例は、上記の静的同調パラメータの実施例と同様に、バイパス百分率の値であり、ここで、バイパス百分率の値は変化し、リングトラヒックフローの動的統計値の関数である。この実施例は、動的負荷バランスの一形式でもある。
【０５１３】
内部ＬｏｏｐＤｒａｗチップ
ここでは、ＬｏｏｐＤｒａｗチップの内部アーキテクチャの詳細をいくつか説明する。
【０５１４】
アーキテクチャを述べる重要な部分では、それについて考えるのに有用な抽象的モデルを説明する。Ｌｏｏｐアーキテクチャは、ほとんど全ての従来のバス、および従来の３Ｄレンダリングアーキテクチャの相互接続を、単一リングに折り畳んでいるので、部分的に折り畳まないモデルは、新しいアーキテクチャを理解する上で有用なガイドである。
【０５１５】
図１８（ａ）は、あたかも、チップ間を走る３つの別々のデータトランスポートリングがあるかのように、ＬｏｏｐＤｒａｗチップ内部ブロックダイヤグラムを表現している。簡単にするために、それぞれは、自らの処理セクション、および取り付けられたＤＲＡＭメモリへの自らの直接ポートを有する。
【０５１６】
図１８（ｂ）は、一実施の形態の内部接続に従って描いてあり、ＬｏｏｐＤｒａｗチップを出入りするＬｏｏｐパケット全てをもたらす単一の物理的ＬｏｏｐＬｉｎｋＩｎｐｕｔＰｏｒｔ、およびＬｏｏｐＬｉｎｋＯｕｔｐｕｔＰｏｒｔ、および、３つの処理セクションが必要とするものの間を仲裁する単一ＤＲＡＭメモリコントローラを有する。
【０５１７】
ラスター化パイプライン
１９９０年代終わりまで、アプリケーションは、レンダリング処理をさらに制御するための努力をしていた。ラスター化の間にピクセル毎ベースで移動する照明操作を望み、そして、ベルテックス毎、およびピクセル毎の操作を更に固定できる制御を望んでいた（プログラマブルシェーディング）。これら所望の拡張制御のいくつかは最近の製品を際立たせるために始まり、そしてグラフィックスＡＰＩを拡張した。しかし、これまでは、ピクセル毎プログラマブルステージにおけるアプリケーションに利用可能な制御量は、著しく制限されていた。
【０５１８】
次世代では、アプリケーションは、３Ｄグラフィックスレンダリングパイプラインのプログラマブル部分で、ずっとフレキシブルかつ強力な制御が利用可能であると想定できる。
【０５１９】
Ｌｏｏｐアーキテクチャは、リアルタイム３Ｄレンダリング技術を飛び越すように設計され、何れのソースからでも直ぐに利用可能である。少なくとも一つの実施の形態では、ＬｏｏｐＤｒａｗチップ３Ｄラスター化パイプラインの想定は：
【０５２０】
高いサンプル密度のスーパーサンプリングが、レンダリング速度を落とさずに常に利用可能である。より速くレンダリングされたイメージ品位が、競合アーキテクチャよりずっと高いサンプル密度のサポートを介して配送できる。
【０５２１】
十分なテクスチャクセス帯域幅が、いく層もの複雑なテクスチャのために存在し、レンダリング速度を落とさずに、プログラマブルなピクセル毎シェーディングによりアクセスされ、かつ用いられる。競合アーキテクチャは、一層の、または大抵２層の単純なテクスチャがピクセルシェーダにアクセスされた後、ゆっくりと速度を落としながら開始するのが普通である。これらのピクセル毎シェーダは、著しくリアルな効果をサポートし、競合アーキテクチャの何倍もの長さと複雑さのシェーダを、レンダリング速度を落とさずにサポートする。
【０５２２】
これらのシェーダ内のカラーおよびジオメトリックデータは、競合アーキテクチャよりもっと正確な、かつ洗練された数値フォーマットを用いて、レンダリング速度を落とさずに処理される。
【０５２３】
ＬｏｏｐＤｒａｗチップの３つの機能ブロックはそれぞれ、このパイプラインのセクションを実装する：
【０５２４】
ラスター化ブロックは、入ってくるベルテックスデータを変換し、適用されるベルテックス毎アプリケーションプログラマブル動作を可能にする。ジオメトリックプリミティブはクリップチェックされるとともに、必要であれば、ビューポートに完全にクリップされる。ピクセルへのラスター化後、ピクセルシェーダを供給されるユーザは、テクスチャおよび光をピクセルに適用する。
【０５２５】
サンプルフィルブロックは、ジオメトリの縁に対してシェーディングされたピクセルをサンプリングし、ＲＧＢＡＺ値の条件付きサンプル更新関数をフレームバッファに実行する。
【０５２６】
たたみ込みブロックは、ビデオ出力信号ピクセル値が生成されている時にオンザフライで、円対称アンチエイリアスフィルタを供給されるアプリケーションをフレームバッファからのサンプル値に適用する。これは、非常に高品位の全画面アンチエイリアス化をサポートする。
【０５２７】
少なくとも一つの実施の形態では、これらの３つのブロックを実装するための電子回路は、ＬｏｏｐＤｒａｗチップダイ内部に全て含まれる。
【０５２８】
拡張（スケーリング）問題
ここでは、各種形式の拡張性（スケーラビリティ）をサポートする際に含まれるトレードオフを説明する。
【０５２９】
抽象的対実際的
本明細書の大部分の実施例では、説明および実施例を簡単にするために、リング内の１６個のＬｏｏｐＤｒａｗチップを仮定してきた。Ｌｏｏｐアーキテクチャの性能および拡張性についてのいくつかの仮定集合に対して、１６個のＬｏｏｐＤｒａｗチップを各ローカルリングに置くことが、コストと性能との間の合理的なトレードオフとなる。各ローカルリングの１６個のＬｏｏｐＤｒａｗチップの適合性のこのような一実施例は：妥当なビデオ解像度（１９２０×１２００）およびサンプル密度（１６サンプル／ピクセル）で、１６個のＬｏｏｐＤｒａｗチップは、全６０Ｈｚビデオフォーマットフレームレートをサポートし、そして等価技術の単一チップベース３Ｄグラフィックスハードウェアアクセラレータが可能であるようなものより、もっと著しく複雑なピクセルシェーダサポートを伴う。
【０５３０】
以下のパラグラフは、ローカルリングにもっと数多くのＬｏｏｐＤｒａｗチップを加える場合における追加の利点、および追加するインフラストラクチャのサポート要件を説明する。論点を確認するために、範囲内の極端な実施例、すなわち、ローカルリング内の６４個のＬｏｏｐＤｒａｗチップを考える。公称値としては、このシステムは、４倍のフレームバッファ格納、４倍のピクセルシェーダパワー、４倍のアンチエイリアス出力たたみ込みパワーを有するが、ピクセルフィルレートがＬｏｏｐＬｉｎｋによって制限されている場合、ピクセルフィル性能の増加はない。
【０５３１】
４個のＬｏｏｐＤｒａｗチップのタスクにピクセルフィル機能を分割して、１／４のピクセルのサンプルをそれぞれが担うようにすることにより（これまでの実施例の大部分で仮定された１個のＬｏｏｐＤｒａｗチップではない）、性能に対する他のトレードオフもなく、使用可能なサンプル密度を６４サンプル／ピクセルに増加できる。ピクセルフィルレートには変更ないが、たたみ込むサンプル数／ピクセル、および、所与のレンダリングレートでサポート可能なピクセルシェーダパワーを実行するので、サンプルフィル／ピクセルの数は４だけ上がる。
【０５３２】
代替として、サンプル密度が１６サンプル／ピクセルに維持されているが、アンチエイリアスフィルタの直径が４ピクセルから８ピクセルに増加する場合、４倍に広がった面積のたたみ込みカーネルはサポート可能であり、依然、４倍増のピクセルシェーダパワーを得ることができる。ここで、４倍増のたたみ込みパワーは、アンチエイリアスフィルタのサイズ増加に費やされ（同一サンプル密度で）、サンプル密度を４倍に増加させると、アンチエイリアスフィルタ直径は同一のままとなる（前パラグラフの実施例）。４倍増のサンプル書込み帯域幅は用いられない。直径４を超えるアンチエイリアスフィルタは、普通のアンチエイリアス目的では効果が損なわれるが、各種形式のブラーフィルタをサポートするには完全に価値がある。
【０５３３】
サンプル密度を増した６４個のＬｏｏｐＤｒａｗチップのローカルリングサポートするために、サンプルを４個の別々のＬｏｏｐＤｒａｗチップ間のピクセルに分割しなければならない。これらの状況では、ＤｒａｗＰｉｘｅｌのＬｏｏｐパケットは、単一の特定ＬｏｏｐＤｒａｗチップへのユニキャストではなく、適切な４組のＬｏｏｐＤｒａｗチップへのマルチキャストとなる。これはトレードオフなしには不可能であり、ＬｏｏｐＤｒａｗチップはいくつかの非常に小さな回路およびモードをサポートしなければならない。これはＬｏｏｐＤｒａｗチップが１６個以下のローカルリングをサポートする場合には不要であった。
【０５３４】
僅かに大きな変更は、システムに必要な追加バッファおよび作業文脈である。ここでは各ＬｏｏｐＤｒａｗチップは、１６個のＬｏｏｐＤｒａｗチップではなく６４個（ともにそれ自体を含む）の内の一つからＤｒａｗＰｉｘｅｌを受け取ることができるので、１６のグラフィックスプリミティブ描画文脈だけでなく、６４なければならない。これらの文脈は非常に大きいということはなく、一実施の形態では、三角形描画文脈は、３点の固定制御バーテックス、および浮動小数点のＺ面の式、そして、多分、現在のレンダリングセマンティック設定を格納する数ビットから成る。バッファ側で、リングシステムは、４倍長いリング通信周回に対する待ち時間内で作業準備をしなければならない。実装レベルでのこの意味は、ローカルリング周回時間に関係するサイズに掛かる各種の内部待ち行列の時間をもっと長くしなければならないということである。
【０５３５】
６４個のＬｏｏｐＤｒａｗチップよりずっと大きなサイズのリングをサポートする能力を持たせるための特定Ｌｏｏｐアーキテクチャ実装では、寸法拡大に由来する利益、および実装負担の肥大がある。完全に可能と言えるのは、大部分のシステムアプリケーションは、以前のＬｏｏｐＤｒａｗチップが１６〜６４個の範囲では、単一リングのサイズを増加させないで、追加のＬｏｏｐＤｒａｗチップを用いてより小さなサイズのローカルリングを多数接続して構築した場合、アプリケーションはより高い総合システム性能を有することができた、ということである。注意が必要なのは、この規則は、一実施の形態で、単一リング内でピクセルフィル帯域幅の拡張をサポートしないという意図的なアーキテクチャ決定の結果であるということである。
【０５３６】
上記説明は、ＬｏｏｐＤｒａｗチップリングを６４個に拡大した場合を扱っている。以下のパラグラフは、１６〜６４の間の個数を説明する。各ピクセルのサンプルを４分割しないで、２または３分割できる。これは３２および４８サンプル／ピクセルのピクセルサンプル密度をサポートする。これら中間サイズのリングシステム内の他の詳細およびトレードオフは、先に説明した６４個のＬｏｏｐＤｒａｗチップサイズのローカルリングの場合について説明したものと同様である。
【０５３７】
上記で、語句「２、３または４で」「ピクセルサンプルの分割」を用いた場合、分割方法についての固定した仮定は定義されなかった。例えば、４分割は６４サンプルを４等分の非オーバーラップ４分割ピクセルに仕切ることができる。代替として、分割はサンプルシーケンス番号に従ってもよく、システム境界内のどこであろうと、偽似ランダムに位置するサンプルを受け取る各ＬｏｏｐＤｒａｗチップを結果的に生み出す。詳細には、分割方法によるいくつかの些細な差を、ピクセル内サンプルのサブピクセルの割り当て位置を偽似ランダム化させるメカニズムと相互作用させる。
【０５３８】
これまで、システムを１６個ＬｏｏｐＤｒａｗチップから拡張させる場合を説明してきた。以下の説明では逆に、８または４個のＬｏｏｐＤｒａｗチップに縮小させる。少ない数のＬｏｏｐＤｒａｗチップをサポートする実装の詳細な関連性は、これらの少数化システムを用いる方法に依存する。システム実装の最適化で縮小化が遭遇すると想定されるのは、ＤＲＡＭのサンプルメモリのレイアウトおよびバッチ化である。知る限りでは、ピクセル内サンプルに実行する最小操作は、全サンプルについて、読んで、修正して、書くという操作であり、ＤＲＡＭメモリシステムはその操作に組み込まれる多様なページおよびキャッシュの仮定を有し、サポートされるピクセル内サンプルの「既知」の最小数に基づいている（この仮定は、同じメモリサブシステムをテクスチャフェッチにも用いる時は、さほど厳格なものではない）。最適化された「単一の長いサイクル」が１６サンプルではなく４または８である場合、リングに４または８個のＬｏｏｐＤｒａｗチップを有するシステムを容易にサポートできる。
【０５３９】
たたみ込みもまた、影響を及ぼす因子である。１６個未満のＬｏｏｐＤｒａｗチップでは、ローカルリングは、アンチエイリアスフィルタの同じ複雑さをもはやサポートしない。トレードオフは複雑となる。というのは、直径４だがサンプル密度は１６未満のフィルタ、および直径４未満だがサンプル密度は１６以上（総合ビデオフォーマットピクセルレートが低い、例えば、ＸＶＧＡ、ＮＴＳＣ等）の両方を考慮しなければならないからである。
【０５４０】
繰り返しになるが、「越えられない」制限はほとんどないが、むしろ、比較的低レベルの実装詳細により課される制約に基づく一連のトレードオフがある。ＬｏｏｐＤｒａｗチップの数に越えられない小さな制限を与えるための完全な論拠はない。しかし、所与の実施の形態で完全にサポートされるべき最小数のＬｏｏｐＤｒａｗチップのローカルリング構成の技術的決定に関わる制約およびトレードオフを集めるのは、有益である。
【０５４１】
実用面から見ると、リングに１６個の未満ＬｏｏｐＤｒａｗチップを有するシステムに対する確実な市場がある。先ず最も重要なことは、別に説明するように、ある場合には、１６個以上のＬｏｏｐＤｒａｗチップを有するリングは、それぞれが比較的低解像度の物理的イメージディスプレイ装置を駆動する多数リングの断片に（一時的に）仕切られるかもしれない。更に、価格に敏感な市場セグメントが僅かにあり、８または４個のＬｏｏｐＤｒａｗチップを有するＬｏｏｐアーキテクチャシステムにいくらかのプレミアムを払う意志がある人は決して少なくない。編集および放送用のＮＴＳＣおよびＰＡＬ方式のアプリケーションはそのような市場セグメントの一つである。
【０５４２】
３Ｄグラフィックスアーキテクチャの拡張制限
いくつかの技術的拡張は容易に変更できる。例えば、玩具メーカーが、新設計バージョンの玩具の電力であるバッテリから更に高い電圧および／または電力を必要とする場合、全てのメーカーがやらなければならないことは、４個のバッテリではなく８個の標準バッテリが入るようにバッテリ収納箱を拡張することである。玩具メーカーは、カスタム製の特別に大きなバッテリを持ち、かつそれを世界中に配布する必要はない。従って、言えることは、現在の（標準の）バッテリ設計（Ａ乾電池、ＡＡ乾電池など）は著しく拡張性があるということである。他の技術が同様に拡張できるとは限らない。例えば、自動二輪車メーカーは、単一の２５０ｃｃエンジンではなく、単一の自動二輪車に２台の２５０ｃｃエンジンを取り付けて、更に強力な自動二輪車を構築することはできない。むしろ、自動二輪車メーカーは、いくつかのサブ部品を小型エンジンと共有することはあっても、５００ｃｃエンジンをカスタム設計しなければならない。歴史的に見ると、３Ｄグラフィックスハードウェアアクセラレータは、自動二輪車的であったが、そのうちＡ乾電池的になった。ここで、汎用コンピュータ、および３Ｄグラフィックスハードウェアアクセラレータ両方を拡張する際の制約をいくつか説明する。指摘しておきたいのは、３Ｄグラフィックスハードウェアアクセラレータの拡張性の制約は、一般に考えられているほど基本的なことではない、ということである（例えば、本発明の実施の形態の教示は、３Ｄグラフィックスハードウェアアクセラレータを自動二輪車というより、バッテリのように拡張できる）。
【０５４３】
３Ｄグラフィックスは汎用コンピュータとどう違うか
汎用コンピュータ上で走るように書かれたコンピュータプログラムの大部分は、本質的に直列である。すなわち、プログラムは、汎用コンピュータ内で単一の汎用プロセッサ素子により任意の時点でシーケンス的に実行されるという仮定のもとで書かれている。この意味は、このようなプログラムは、汎用コンピュータが、一つだけでなく、多数の並列汎用プロセッサ素子を含んでいたとしても、もっと高速に走らせることができない、ということである。多数の並列汎用プロセッサ素子を含む汎用コンピュータ上で、より高速に走るようにコンピュータプログラムを解釈して、修正する行為は、並列処理と呼ばれる。この修正を人が実行する場合、その行為を「ハンド並列処理」と呼ぶ。この修正をコンピュータで行う場合、その行為を「自動並列処理」と呼ぶ。
【０５４４】
ハンドでも自動でも、並列処理の品質は、ｎ個の並列汎用プロセッサ素子を含むのと同一の汎用コンピュータ内の単一並列汎用プロセッサ素子上で走る場合に、元の未修正のコンピュータプログラムが走る速度のｎ倍と比べて、修正プログラムが、ｎ個の並列汎用プロセッサ素子を含む汎用コンピュータ上では、どれくらい高速に走るかの比により、様々なｎの値に対して計測できる。この比は速度比と呼ばれる。完全な場合には、速度比は、ｎの値のある範囲で１．０となり、その場合は並列化品質は所与の範囲内で「完全リニア」と呼ばれる。速度比が、ｎの値のある範囲で１．０に非常に近い更に現実的な場合（これでも稀であるが）、並列化品質は所与の範囲内で「近リニア」と呼ばれる。速度比が１．０未満で１．０に近くない極く典型的な場合、並列化品質は「サブリニア」と呼ばれる。（稀に速度比が１．０を超える特別な場合があり、並列化品質は「スーパーリニア」と呼ばれる）。ｎの特定の値に対して、プログラムがｎ個の汎用プロセッサを含む汎用コンピュータ上で走るのと、同一の汎用コンピュータ内の単一プロセッサ素子上で、元のコンピュータプログラムが走るのとを比べた場合、速度比×ｎは、コンピュータプログラムの可能な「速度向上」となる。
【０５４５】
これまで、コンピュータプログラムの自動並列化は、ほとんどのコンピュータプログラムに対して実際の達成は不可能であると検証されてきた。特定プログラムを多数の並列汎用プロセッサ素子を含む汎用コンピュータ上で極めて高速に走らせたい場合、元のプログラムは、修正プログラムをこの希望に沿えるようにするという明らかな目的をもって、事実上人が書き換えなければならない（一般に莫大な費用がかかる）。
【０５４６】
最新の集積回路チップ技術により、比較的高性能の汎用プロセッサ素子を比較的低コストの集積回路チップ上へ配置できるようになった。このようなチップは、比較的低コストの汎用コンピュータ内の単一汎用プロセッサ素子として用いられるのが普通である。コストをさほど目的としないもっと高価な汎用コンピュータでは、比較的低コストの汎用コンピュータ上で用いられる低コスト汎用プロセッサ素子より高速の汎用プロセッサ素子を用いることが望ましい（たとえ、もっと高価であっても）。しかしながら、一旦、集積回路チップ技術により、全体として比較的高性能の汎用プロセッサ素子が比較的低コストのチップ上に適合できるようになると、それは、さほど高価でないものよりも僅かに高速であるに過ぎない、という以上の「コストが目的ではない」単一汎用プロセッサ素子さえ構築するのが困難であることを証明した。従って、最新の高価な汎用コンピュータは、現行の低コストの汎用プロセッサ素子より少し高速の、ｎ個の汎用プロセッサ素子により構築されている。これらの高価格汎用コンピュータは、あまり高価ではないコンピュータ上で走るよりも高速に走るようにうまく並列化したコンピュータプログラムを可能にすることにより、更に高い価値を顧客に与えるが、それだけではなく、例えば、Ｉ／Ｏサブシステムの容量増大、全体の高信頼性、大量の主メモリをサポート、フレキシブル性を増した構成、および多数の非並列化コンピュータプログラムでも同時に実行する能力等、プロセッサ以外の特徴により高い価値を顧客に提供する。
【０５４７】
しかし、多くの顧客はこれらの特別な特徴を必要としていない。彼らは多くのＩ／Ｏの量、または主メモリ容量を必要とせず、一度に一つのプログラムを走らせる必要があるだけである。そして、これらのプログラムの大部分は、全てがハンド並列化という訳でもないし、またはハンド並列化のコストに見合う分けでもない。
【０５４８】
このように、自動並列化が成功しなかったのは、多くのコンピュータプログラムを走らせるための、単一の汎用プロセッサ素子だけを含む比較的低価格の汎用コンピュータが、購入するときの好適な選択であるというのが、理由の一つである。汎用プロセッサ素子を２個以上含む本質的にもっと高価な汎用コンピュータが、多くのプログラムを高速に走らせることはない。
【０５４９】
一個以上の汎用プロセッサ素子を含む汎用コンピュータ上でコンピュータプログラムを動作させるのは、３Ｄグラフィックスハードウェアアクセラレータ内の（ＯｐｅｎＧＬのような）業界標準の３Ｄグラフィックスレンダリングパイプラインを実装するのとは対照的である。同じ並列化の制限が存在するかどうかは自然な疑問である。例えば、比較的高性能の標準３Ｄグラフィックスレンダリングパイプラインが、一旦、単一の比較的低コストの集積回路チップに実装されると、低コストの単一チップソリューションよりかなり高速で標準の３Ｄグラフィックスレンダリングパイプラインを走らせる多数のチップから成る標準３Ｄグラフィックスレンダリングパイプラインを構築することが不可能になってしまうのか？
【０５５０】
実際、新しいチップのいくつかは、家庭用コンピュータ装置の３Ｄコンピュータゲームを走らせるために創られた。「家庭ゲーム」市場（家庭用ＰＣまたは専用３Ｄゲーム「コンソール」）は、３Ｄグラフィックスレンダリングパイプラインの比較的低コストで比較的高性能の単一チップ実装である。しかし、アナロジーの残りは通用するか？
【０５５１】
答えは、通用しない、である。その理由は、標準３Ｄグラフィックスレンダリングパイプラインを実装する特別な場合の自動並列化と同等のものは、コンピュータ・グラフィックスハードウェアキテクチャにより数１０年の間にうまく達成されたからである。
【０５５２】
その理由は、３Ｄグラフィックスハードウェアは、グラフィックスデータ（標準の３Ｄグラフィックスレンダリングパイプラインへの通常の入力）の単一直列ストリームを、次に利用可能な高度並列グラフィックス処理サブエレメントグループの一つに割り当てる多数の断片に自動的に細断できるからである。この並列化は自動処理で、かつ、標準３Ｄグラフィックスレンダリングパイプラインのユーザに不可視であり、並列化の品質は極めて印象的で、速度比は０．９８（完全リニア速度向上の９８％以内）である。何年にも亘って、グラフィックスハードウェア設計者は、このようなほとんどリニアな速度向上が見込まれる状況、および速度向上が見込めない状況を発見してきた。
【０５５３】
ごく最近の新規３Ｄグラフィックスチップの大部分は、家庭ゲーム市場向けに設計されているが、それにも拘わらず、その内部アーキテクチャは印象的である。これらの家庭用ゲームチップ（例えば、コスト範囲４０ドルで）は、広く多様な性能強化手法を適用して、内部高速度を達成し、外部ピンの使用を最小限にする。しかし、残念ながら、これらのアーキテクチャは、この性能を、互いにチップを統合するほとんど全ての潜在的な方法を除外することにより、品質または性能のいずれかの高いレベルに達している。多数の３Ｄグラフィックスチップを並列に用いて、ほとんどリニアな自動並列化を達成するための大部分の可能な手法は、設計の選択で既に除外されていて、単一３Ｄグラフィックスチップベースの家庭ゲーム製品に用いることを目標にしてチップを最適化する。これらの設計の選択は、チップのピン数の最小化（低コスト達成のため）、グラフィックスデータが操作される順序を制御する能力（例えば、他のチップは発言力がない）について明らかな仮定を有する内部アルゴリズムの選択、および、グラフィックスデータを表現するためにサポートされるデータフォーマットについての設計選択を含む。
【０５５４】
対照的に、３Ｄグラフィックスハードウェアアクセラレータのための中級から最高級品のプロ市場を構成する顧客は、１，０００ドル以下の価格ポイントより、性能および能力を好む。従って、基本的に異なるグラフィックスチップセットアーキテクチャを用いなければならない。これらのプロ向け市場は、家庭用ゲームチップの１００倍の格納容量および性能を持つ３Ｄグラフィックスハードウェアアクセラレータを必要としている。
【０５５５】
【表１】
2005521178.tif 000003
【０５５６】
【表２】
2005521178.tif 000004
【０５５７】
【表３】
2005521178.tif 000005
【図面の簡単な説明】
【０５５８】
【図１】基本的なループアーキテクチャ相互接続を有する一実施の形態を示す。
【図２】ＬｏｏｐＤｒａｗチップと複数のＬｏｏｐＩｎｔｅｒｆａｃｅチップとを有する構成を含むＬｏｏｐアーキテクチャの一実施の形態の詳細を示す。
【図３】ＬｏｏｐＩｎｔｅｒｆａｃｅチップから可能な宛先のＬｏｏｐＤｒａｗチップへの、ユニキャストＧｒａｐｈｉｃｓＣｏｍｍａｎｄの最長および最短のパスを示す。
【図４】ＬｏｏｐＤｒａｗチップから可能な宛先のＬｏｏｐＤｒａｗチップへの、ＤｒａｗＰｉｘｅｌのＬｏｏｐパケットの最長および最短のパスを示す。
【図５】特定のＬｏｏｐＩｎｔｅｒｆａｃｅチップからのすべてのＶｉｄｅｏＰｉｘｅｌＬｏｏｐパケットがアンチエイリアス化のためにとるパスと、ビデオ出力インターフェースへのビデオ出力信号の生成とを示す。
【図６】１６ＬｏｏｐＤｒａｗチップシステム内の、特定ＬｏｏｐＤｒａｗチップが保有する全ピクセルを示す。
【図７】４×４変換ウインドウが、図６のＬｏｏｐＤｒａｗチップによる一つの特定ピクセルの処理を含む全１６個のＶｉｄｅｏＰｉｘｅｌＬｏｏｐパケットを示す。
【図８】ＬｏｏｐＤｒａｗチップレイアウトの実施例を示す。
【図９】６ＬｏｏｐＤｒａｗチップドータープリント基板レイアウトの実施例を示す。
【図１０】エッジレイアウトのドータープリント基板の実施例を示す。
【図１１】「Ｖ」型エッジレイアウトのドータープリント基板の実施例を示す。
【図１２】放射状エッジレイアウトのドータープリント基板の実施例を示す。
【図１３】図１３（ａ）および図１３（ｂ）は、裏返しにした背面から背面へのＬｏｏｐＬｉｎｋ接続のためのチップパッケージの底面および上面それぞれのパッド位置を示す。
【図１４】単リングの実施例の概要を示す。
【図１５】２重リングの実施例の概要を示す。
【図１６】図１６（ａ）〜（ｋ）は、様々なショートカット接続、および同一接続を描く別の方法を示す。
【図１７】図１６（ｉ）を単純２重リングとして描き直したものである。
【図１８（ａ）】３リングの論理モデルを示す。
【図１８（ｂ）】１リングの物理モデルを示す。
【図１】
2005521178.tif 000006
【図２】
2005521178.tif 000007
【図３】
2005521178.tif 000008
【図４】
2005521178.tif 000009
【図５】
2005521178.tif 000010
【図６】
2005521178.tif 000011
【図７】
2005521178.tif 000012
【図８】
2005521178.tif 000013
【図９】
2005521178.tif 000014
【図１０】
2005521178.tif 000015
【図１１】
2005521178.tif 000016
【図１２】
2005521178.tif 000017
【図１３】
2005521178.tif 000018
【図１４】
2005521178.tif 000019
【図１５】
2005521178.tif 000020
【図１６】
2005521178.tif 000021
【図１７】
2005521178.tif 000022
【図１８（ａ）】
2005521178.tif 000023
【図１８（ｂ）】
2005521178.tif 000024
【国際調査報告】
2005521178.tif 000025
2005521178.tif 000026