(57)【特許請求の範囲】
【請求項１】
ポリゴン頂点データを保存するメモリおよび少なくとも一部は前記ポリゴン頂点データに応答して画像を発生して表示する３次元グラフィックスエンジンを含む３次元グラフィックスシステムにおいて、前記メモリおよび前記３次元グラフィックスエンジンに動作可能に結合された頂点キャッシュであって、
前記ポリゴン頂点データが索引付き頂点データ表現を含み、前記索引付き頂点データ表現は複数の成分データアレイを参照する索引アレイを含み、前記頂点キャッシュは前記索引付き頂点データ表現に応答して動作し、必要な頂点データが既にキャッシュメモリに存在するか否か、または取り込みが必要か否かを決定し、前記メモリから索引付き頂点データをキャッシュし、画像表示のための再ソーティングなしで、前記グラフィックスエンジンに使用させるようにしたことを特徴とする、頂点キャッシュ。
【請求項２】
前記３次元グラフィックスエンジンは集積回路に配置されており、
前記集積回路に配置されて前記３次元グラフィックスエンジンと動作可能に結合されたメモリ装置をさらに備える、請求項１記載の頂点キャッシュ。
【請求項３】
前記メモリ装置は前記頂点データをキャッシュするための組連想キャッシュメモリを備える、請求項２記載の頂点キャッシュ。
【請求項４】
前記組連想キャッシュメモリは８個のキャッシュラインを提供する、請求項３記載の頂点キャッシュ。
【請求項５】
前記メモリ装置は８キロバイトのＲＡＭを含む、請求項２記載の頂点キャッシュ。
【請求項６】
複数のキャッシュタグラインを備える、請求項１記載の頂点キャッシュ。
【請求項７】
複数のキャッシュタグ状態レジスタを含む、請求項１記載の頂点キャッシュ。
【請求項８】
待ち行列およびミス待ち行列を含む、請求項１記載の頂点キャッシュ。
【請求項９】
前記頂点キャッシュは、使用時に前記メモリに結合され、前記グラフィックスエンジンが前記頂点データを必要とするときに、前記メモリから頂点データを取り込む、請求項１記載の頂点キャッシュ。
【請求項１０】
前記頂点キャッシュと前記３次元グラフィックスエンジンとの間に動作可能に連結されたハードウエアベースの逆量子化装置をさらに備え、
前記逆量子化装置は、前記３次元グラフィックスエンジンによる使用のために、複数の頂点データフォーマットを一様な浮動小数点フォーマットに変換する、請求項１記載の頂点キャッシュ。
【請求項１１】
ポリゴン頂点データを保存するメモリおよび少なくとも一部は前記ポリゴン頂点データに応答して画像を発生および表示する３次元グラフィックスエンジンを含む３次元ビデオグラフィックスシステムにおいて、前記３次元グラフィックスエンジンが使用するために前記メモリから前記頂点データにアクセスするための方法であって、
(a) 前記ポリゴン頂点データを、複数の成分データアレイを参照する索引アレイを含む索引付き頂点データ表現で表現するステップ、および
(b) 必要な頂点データが既にキャッシュメモリに存在するか否か、または取り込みが必要か否かを決定し、前記索引付き頂点データを、前記３次元グラフィックスエンジンに対してローカルなキャッシュメモリ装置の中に取り込んで、前記索引付き頂点データを前記３次元グラフィックスエンジンによるアクセスのために利用可能にするステップを含む、方法。
【請求項１２】
前記ステップ(b) は、前記３次元グラフィックスエンジンが前記頂点データを必要とするときに、頂点データを前記メモリから前記キャッシュメモリ装置へ取り込むステップをさらに含む、請求項１１記載の方法。
【請求項１３】
前記ステップ(b) は、前記キャッシュメモリ装置に保存された複数の頂点データフォーマットを、前記３次元グラフィックスエンジンによる使用のための一様な浮動小数点フォーマットに変換するステップをさらに含む、請求項１１記載の方法。
【発明の詳細な説明】
【０００１】
【発明の分野】
この発明は３次元対話型コンピュータグラフィックスのための頂点キャッシュに関し、より詳細には、アニメーションおよび表示処理のための頂点情報を効率的に表現および保存するための構成および技術に関する。さらにまた、この発明は特に、３次元ポリゴンデータのより効率的な映像化のための頂点キャッシュを含む３次元グラフィックス集積回路に関する。
【０００２】
【発明の背景】
現代の３次元グラフィックスシステムは、表示要素（すなわち、ポリゴン）からアニメーション化された表示を作り上げる。各表示オブジェクト（たとえば木，自動車もしくは人物または他のキャラクタ）は、典型的には、多数のポリゴンから構築される。夫々のポリゴンは、他の特徴（たとえば色，濃淡付けのための表面法線，テクスチャなど）とともにその頂点によって表され、この頂点が３次元空間におけるポリゴンの位置，向きおよび大きさを特定する。コンピュータ技術は、これらの技術を使用してアニメーション化された３次元グラフィックスシーンを効率的に構築することができる。
【０００３】
ビデオゲームシステムのような低コストの高速対話型(interactive) ３次元グラフィックスシステムは、メモリおよび処理資源によって構築される。したがって、このようなシステムでは、表示オブジェクトを表す種々のポリゴンを効率的に表現および処理できることが重要である。たとえば、表示オブジェクトをコンパクトに表現するデータを作成して、特定のタスクのために必要な全てのデータが便利に利用可能であるような方法で、そのデータを３次元グラフィックスシステムに提示することが望ましい。
【０００４】
或るものは、時間的局所性および空間的局所性に関してデータを特徴付けすることができる。時間的局所性とは、同じデータが短い時間の間に頻繁に参照されることを意味する。一般に、３次元対話型グラフィックスアプリケーションのためのポリゴン表現データは、大きな時間的局所性を有する。空間的局所性とは、参照される次のデータ項目が、最後に参照された項目に近接したメモリに保存されることを意味する。効率の改善は、データの空間的局所性を増やすことによって実現することができる。無制限量のデータに対し、無制限に低いレイテンシのランダムアクセスを許容しない実際のメモリシステムにおいては、所定のタスクを実行するために必要とされる全てのデータが、低いレイテンシのメモリに近接して一緒に保存されれば性能はよくなる。
【０００５】
データの空間的局所性を増やすために、確実に特定のタスクを実行するために必要な全てのデータがほとんど同時に提供されるように一緒に保存しておいて、処理の順序に基づいてポリゴンデータをソーティングすることができる。たとえば、アニメーションを形成するポリゴンデータは、実行されているアニメーションの種類に対して優先的であるような方法で保存することができる。一つの例として、表面変形(surface deformation) のような典型的な複雑な対話型リアルタイムアニメーションは、表面における全ての頂点の操作を必要とする。このようなアニメーションを効率的に実行するためには、一定の方法で頂点データをソーティングするのが望ましい。
【０００６】
典型的な３次元グラフィックスシステムは、アニメーション処理および表示処理を別々に実行し、これらの別々の工程はデータを異なる方法で処理する。残念なことに、アニメーション処理のための頂点データをソーティングする最適順序は、一般に、表示処理のための最適なソーティング順序とは異なる。アニメーションのためのソーティングは、表示順序に対してランダム性を加えるようにしてもよい。アニメーション処理を単純化するためにデータストリームをソーティングすることによって、データを効率的に表示することを一層困難にしてしまう。
【０００７】
したがって、種々の理由で、表示のためのデータにアクセスするときに空間的局所性が存在することを仮定することは困難かも知れない。困難性は、任意の大きな表示オブジェクトに効率的にアクセスする必要性から生じる。加えて、上記で説明した理由で、少なくとも表示目的については、表示エンジンに提供される頂点データの順序には、典型的には幾らかのランダム性が存在するであろう。さらに、実施に有用であり得る頂点レベルを超えるような他のデータ局所性が存在するであろう（たとえば、一定のテクスチャを共有する全てのポリゴンを一緒にグループ化すること）。
【０００８】
より高い効率を達成するための１つのアプローチは、低いレイテンシの追加メモリ（たとえば手頃な中で、最も低いレイテンシのメモリシステム）を準備することである。また、高速ローカルメモリ中に表示オブジェクトを適合させて、ランダムアクセスを達成することも可能であろう。しかし、オブジェクトが非常に大きい可能性がないとはいえず、また二重にバッファする必要があるかもしれない。したがって、このようなアプローチのために必要とされるバッファは非常に大きくなる可能性がある。
【０００９】
また、メインＣＰＵのデータキャッシュを使用して、表示エンジンのための最適順序で、ポリゴンデータをアセンブルしソーティングすることが可能であるかもしれない。しかし、これを効率的に行うには、ポリゴンデータがデータキャッシュの残部をスラッシング(thrashing) するのを防止する方法が必要であろう。加えて、データを先取り(prefetch) してメモリのレイテンシを隠す必要があるであろう。なぜなら、表示順序のためにソーティングされた偶数データがアクセスされる方法において、幾らかのランダム性が存在する可能性があるからである。さらに、このアプローチは、ＣＰＵに対して追加の負荷を与えるであろう。特に、或る具体化においては、表示エンジンが解釈できる２値フォーマットにデータをアセンブルすることが必要であるからである。このアプローチを使用することにより、メインＣＰＵおよび表示エンジンは直列になり、ＣＰＵはデータをグラフィックスエンジンに直接供給する。処理を並列化すること（たとえば、表示エンジンを、ＤＲＡＭ  ＦＩＦＯバッファを介して供給すること）は、直接モードの供給に比較して、実質的に追加のメモリアクセスバンド幅を必要とするであろう。
【００１０】
したがって、３次元グラフィックス表示プロセスのためのポリゴンデータを表現し、保存し供給するために使用できるさらに効率的な技術の必要性が存在している。
【００１１】
【発明の概要】
この発明は、索引付きプリミティブ頂点データストリームを編成する頂点キャッシュを提供することにより、この問題を解決するものである。
【００１２】
この発明により提供される１つの局面に従えば、ポリゴン頂点データは、頂点キャッシュを介して表示（グラフィックス）エンジンに供給される。頂点キャッシュは、表示エンジンハードウエア（たとえばその一部）に対してローカルな、低いレイテンシの小規模のメモリでよい。実際のキャッシュの中身よりもはるかに大きい仮想メモリビューを与えるキャッシュから融通性および効率性が生じる。
【００１３】
頂点キャッシュは、必要なときに、オンザフライの表示処理のために必要な頂点データを形成するために使用してもよい。したがって、表示目的のために頂点データを予めソーティングするのではなく、頂点キャッシュは、関連ブロックのデータを必要なときに単純に取得して、これを表示プロセサが利用できるようにする。対話型ビデオゲーム表示のための頂点データによって示される高度の時間的局所性、および特定の最適な索引付きアレイデータ構造（下記参照）に基づいて、何れかの時点で必要とされる殆どの頂点データが、頂点データストリームの数に比例した数のキャッシュラインを有する比較的小規模のセットアソシアティブ頂点キャッシュ(small set-associative vertex cache) においてでも入手可能であることを見出した。最適構成の一例は、８セットアソシアティブ頂点キャッシュを形成する５１２×１２８ビットのデュアルポートＲＡＭを提供する。
【００１４】
グラフィックスエンジンに頂点を供給する目的で、頂点キャッシュおよび関連タグをカスタマイズしかつ最適化することによって効率を増大させることができ、汎用のキャッシュおよびタグ構造を使用した場合よりも、さらに効率的な頂点の先取り(prefetching) およびアセンブル(assembling) を可能にする。頂点キャッシュはデータを表示エンジンに直接供給することを可能にするので、追加のメモリアクセスバンド幅のコストが回避される。ダイレクトメモリアクセスを使用して、頂点キャッシュへ頂点データを効率的に転送してもよい。
【００１５】
頂点キャッシュにより与えられる効率をさらに増大させるためには、特定のポリゴンまたはポリゴンの組を、それ（ら）が使用される度毎に完全に再特定(re-specify)する必要性を低減することが望ましい。この発明により提供される別の局面に従えば、ポリゴンはアレイ、たとえば頂点の幾つかの特徴を表すデータ成分の線形リスト（たとえば位置，色，表面法線(surface normal)，またはテクスチャ座標）として表現することができる。夫々の表示オブジェクトは、種々の組の索引とともに、このようなアレイの集合として表現することができる。これらの索引は、特定のアニメーションまたは表示目的のためのアレイを参照する。ポリゴンデータを索引付き成分のリストとして表すことによって、マッピング間で不連続性が許容される。さらに、個々の成分（コンポーネント）を分離することは、データをよりコンパクトに保存する（たとえば、より完全に圧縮されたフォーマットで）ことを可能にする。この発明によって与えられる頂点キャッシュは、索引サイズ以下のこのような索引付きデータのストリームを収容することができる。
【００１６】
頂点キャッシュに関連して索引付き頂点表現を使用することにより、表示目的のためにいかなる再ソーティングの必要性も存在しない。たとえば、アニメーションのために予めソーティングされた表示とは逆の順序で、頂点データを表示エンジンに提供し、アニメーションをより効率的なプロセスにしてもよい。頂点キャッシュは、索引付き頂点データ構造表現を使用して、明確な再ソーティングを何等必要とせずに、効率的に、頂点データを表示エンジンが利用可能にする。
【００１７】
いかなる頂点成分も、コマンドストリームにおいて索引参照されることができ、または直接インライン化されることができる。このことは、グラフィックス表示データ構造に沿ったメインプロセサの出力を必要とせずに、メインプロセサによる効率的なデータ処理を可能にする。たとえば、メインプロセサにより実行されるライティング操作は、色アレイを発生させるライティングパラメータのリストをループ処理することによって、法線および位置のリストから色アレイのみを発生させてもよい。アニメーションプロセスが３角形リスト表示データ構造に従う必要もなく、またアニメーションプロセスが表示のためのデータを再フォーマット化する必要もない。表示プロセスは当然ながら、アニメーションプロセスに対して実質的なデータ再フォーマット化のオーバヘッドを加えることなく、アニメーションプロセスにより提供されるデータを使用することができる。
【００１８】
他方、表示順序で頂点データをソーティングすることについてペナルティはなく、いずれの場合にも、表示のために予めソーティングされたデータを提示するために最適化された頂点提示構造と比較して、性能を顕著に劣化させる頂点キャッシュを伴わずに、頂点データは表示のために効率的に表示エンジンに提示される。
【００１９】
この発明により提供されるさらなる局面に従えば、頂点データは、幾つかの異なったフォーマット（たとえば８ビット固定小数点，１６ビット固定小数点または浮動小数点）の何れかで量子化された圧縮データストリームを含む。このデータは、索引付け（すなわち、頂点データストリームにより参照される）されてもよく、または直接的（すなわち、該ストリーム自身の中に含まれる）であってもよい。これらの種々のデータフォーマットを全て共通の頂点キャッシュに保存し、続いて復元し、グラフィックス表示パイプラインのための共通のフォーマットに変換することができる。このような弾力的なタイプのハードウエアサポート，フォーマット，および直接的または索引付き入力データとしての多くの属性は、複雑かつ時間を要するソフトウエアデータ変換を回避する。
【００２０】
この発明の上述の目的，その他の目的，特徴，および利点は、図面を参照して行う以下の実施例の詳細な説明から一層明らかとなろう。
【００２１】
【実施例】
図１はこの発明が実施され得る対話型３次元コンピュータグラフィックスシステム１００の一例を示す全体の概略図である。システム１００は、ステレオサウンドを伴って対話型３次元ビデオゲームをプレイするために使用することができる。光ディスクのような適切な記憶媒体を光ディスク装置１３４に挿入することによって、異なるゲームをすることができる。ゲームプレイヤは、手持ちコントローラ１３２（これはジョイスティック，ボタン，スイッチ，キーボードまたはキーパッド等の種々のコントロールを含むことができる）のような入力装置を操作することによって、システム１００とリアルタイムで対話することができる。
【００２２】
システム１００は、メインプロセサ（ＣＰＵ）１０２，メインメモリ１０４，ならびにグラフィックス／オーディオコプロセサ１０６を含んでいる。この例では、メインプロセサ１０２は、コプロセサ１０６を介して手持ちコントローラ１３２（および／または他の入力装置）からの入力を受け取る。メインプロセサ１０２は、このようなユーザ入力に対して対話的に応答し、たとえば外部記憶装置１３４によって供給されるビデオゲームまたは他のグラフィックスプログラムを実行する。たとえば、メインプロセサ１０２は、種々のリアルタイムの対話型制御機能に加えて、衝突検出およびアニメーション処理を行うことができる。
【００２３】
メインプロセサ１０２は、３次元グラフィックスおよびオーディオコマンドを発生し、これらをグラフィックス／オーディオコプロセサ１０６に送る。グラフィックス／オーディオコプロセサ１０６は、これらのコマンドを処理して画像を表示装置１３６上に発生し、またステレオスピーカ１３７Ｒ、１３７Ｌまたは他の適切な音声発生装置上でステレオサウンドを発生する。
【００２４】
システム１００は、コプロセサ１００からの画像信号を受け取って、該画像信号を標準のディスプレイ装置１３６（たとえばコンピュータモニタまたは家庭用カラーテレビ）に表示するのに適した複合ビデオ信号に変換するためのＴＶエンコーダ１４０を含む。システム１００はまた、ディジタル化されたオーディオ信号を圧縮および復元する（またディジタルオーディオ信号フォーマットとアナログオーディオ信号フォーマットの間での変換を行うことができる）オーディオコーデック（圧縮器／復元器）１３８を含む。オーディオコーデック１３８は、バッファ１４０を介してオーディオ入力を受け取り、またこれを処理（たとえば、該コプロセサが発生する他のオーディオ信号および／または光ディスク装置１３４のストリーミングオーディオ出力を介して受信する他のオーディオ出力とのミキシング）のためにコプロセサ１０６に与えることができる。コプロセサ１０６は、オーディオ関連情報をオーディオタスク専用のメモリ１４４に保存する。コプロセサ１０６は、得られたオーディオ出力信号を（たとえばバッファアンプ１４２Ｌ、１４２Ｒを介して）スピーカ１３７Ｌ，１３７Ｒによって再生できるように、復元およびアナログ信号への変換のためにオーディオコーデック１３８に与える。
【００２５】
コプロセサ１０６は、システム１００内に存在し得る種々の周辺機器と通信する能力を有する。たとえば、パラレルディジタルバス１４６は、光ディスク装置１３４と通信するために使用できる。シリアルバス１４８は、たとえばＲＯＭおよび／またはリアルタイムクロック１５０，モデム１５２およびフラッシュメモリ１５４を含む種々の周辺機器と通信することができる。別の外部シリアルバス１５６は、追加の拡張メモリ１５８（たとえばメモリカード）と通信するために使用することができる。
【００２６】
グラフィックス／オーディオコプロセサ
図２はコプロセサ１０６内のコンポーネントのブロック図である。コプロセサ１０６は、単一の集積回路であってもよい。この例において、コプロセサ１０６は、３次元グラフィックスプロセサ１０７，プロセサインタフェース１０８，メモリインタフェース１１０，オーディオディジタル信号プロセサ（ＤＳＰ）１６２，オーディオメモリインタフェース（Ｉ／Ｆ）１６４，オーディオインタフェース／ミキサ１６６，周辺コントローラ１６８および表示コントローラ１２８を含む。
【００２７】
３次元グラフィックスプロセサ１０７はグラフィックス処理タスクを行い、またオーディオＤＳＰ１６２はオーディオ処理タスクを行う。表示コントローラ１２８は、メモリ１０４からの画像情報にアクセスし、それを表示装置１３６に表示するためにＴＶエンコーダ１４０に与える。オーディオインタフェース／ミキサ１６６は、オーディオコーデック１３８とのインタフェースをとり、また異なった音源（たとえばディスク１３４からのストリーミングオーディオ入力，オーディオＤＳＰ１６２の出力，およびオーディオコーデック１３８を介して受信された外部オーディオ入力）からのオーディオをミックスすることができる。プロセサインタフェース１０８は、メインプロセサ１０２とコプロセサ１０６との間のデータおよび制御インタフェースを与える。メモリインタフェース１１０は、コプロセサ１０６とメモリ１０４との間のデータおよび制御インタフェースを与える。この例において、メインプロセサ１０２は、コプロセサ１０６の一部であるプロセサインタフェース１０８およびメモリコントローラ１１０を介して、メインメモリ１０４にアクセスする。周辺コントローラ１６８は、コプロセサ１０６と上記で述べた種々の周辺機器（たとえば、光ディスク装置１３４，コントローラ１３２，ＲＯＭおよび／またはリアルタイムクロック１５０，モデム１５２，フラッシュメモリ１５４およびメモリカード１５８）との間のデータインタフェースおよび制御インタフェースを提供する。オーディオメモリインタフェース１６４は、オーディオメモリ１４４とのインタフェースを提供する。
【００２８】
図３はコプロセサ１０６内の３次元グラフィックスプロセサ１０７および関連するコンポーネントのより詳細な図を示している。３次元グラフィックスプロセサ１０７は、コマンドプロセサ１１４および３次元グラフィックスパイプライン１１６を含んでいる。メインプロセサ１０２は、グラフィックスデータ（すなわち、表示リスト）のストリームをコマンドプロセサ１１４に通信する。コマンドプロセサ１１４はこれらの表示コマンドを受取り、これらを解析し（それらを処理するのに必要な何等かの追加のデータをメモリ１０４から得る）、３次元処理およびレンダリングのために、頂点コマンドのストリームをグラフィックスパイプライン１１６に与える。グラフィックスパイプライン１１６は、これらのコマンドに基づいて３次元画像を発生する。得られた画像情報は、表示コントローラ１２８（これはパイプライン１１６のフレームバッファ出力を表示装置１３６上に表示する）によるアクセスのために、メインメモリ１０４に転送される。
【００２９】
より詳細には、メインプロセサ１０２は表示リストをメインメモリ１０４に保存し、バスインタフェース１０８を介してポインタをコマンドプロセサ１１４に渡す。コマンドプロセサ１１４（これは以下で詳細に述べる頂点キャッシュ２１２を含む）は、ＣＰＵ１０２からコマンドストリームを取り込み、コマンドストリームおよび／またはメモリの中の頂点アレイから頂点属性を取り込み、属性タイプを浮動小数点フォーマットに変換し、得られた完全な頂点ポリゴンデータのレンダリング／ラスタライズのためにグラフィックスパイプライン１１６に渡す。以下でさらに詳細に説明するように、頂点データはコマンドストリームから、および／または各属性がそれ自身の線形アレイで保存されているメモリ中の頂点アレイから直接に来ることができる。メモリ調停回路１３０は、グラフィックスパイプライン１１６，コマンドプロセサ１１４および表示コントローラ１２８の間でのメモリアクセスを調停する。以下で説明するように、頂点属性アクセス待ち時間を低減するために、オンチップの８方向のセットアソシアティブ頂点キャッシュ(8-way set-associative vertex cache) ２１２が用いられる。
【００３０】
図３に示すように、グラフィックスパイプライン１１６は、変換ユニット１１８，セットアップ／ラスタライザ１２０，テクスチャユニット１２２，テクスチャ環境ユニット１２４およびピクセルエンジン１２６を含むことができる。グラフィックスパイプライン１１６において、変換ユニット１１８は種々の３次元変換操作を行い、またライティングおよびテクスチャ効果を実行してもよい。たとえば、変換ユニット１１８は、入ってくる頂点毎のジオメトリをオブジェクト空間からスクリーン空間に変換し、入ってくるテクスチャ座標を変換しそして投影テクスチャ座標を計算し、ポリゴンクリッピングを行い、頂点ライティング毎の計算を行い、テクスチャ座標発生のバンプマッピングを実行する。セットアップ／ラスタライザ１２０は、変換ユニット１１８から頂点データを受け取って、エッジのラスタライズ，テクスチャ座標のラスタライズおよび色のラスタライズを実行するラスタライザへ３角形セットアップ情報を送信するセットアップユニットを含んでいる。テクスチャユニット１２２は、投影テクスチャならびにアルファ透明度および深さをもったＢＬＩＴを使用することにより、多重テクスチャ処理，ポストキャッシュテクスチャ復元，テクスチャフィルタリング，エンボスされたバンプマッピング，投影およびライティングを含むテクスチャリングに関連した種々のタスクを実行する。テクスチャユニット１２２は、フィルタリングされたテクスチャ値をテクスチャ環境ユニット１２４へ出力する。テクスチャ環境ユニット１２４は、ポリゴンの色およびテクスチャの色を一緒にブレンドし、テクスチャかぶりおよび他の環境関連機能を実行する。ピクセルエンジン１２６は、Ｚバッファリングおよびブレンドを行い、データをオンチップのフレームバッファメモリの中に保存する。
【００３１】
したがって、グラフィックスパイプライン１１６は、フレームバッファおよび／またはテクスチャ情報をローカルに保存する１以上の埋め込み型ＤＲＡＭ（図示せず）を含んでいてもよい。オンチップのフレームバッファは、表示コントローラ１２８によるアクセスのために、メインメモリ１０４に周期的に書き込まれる。グラフィックスパイプライン１１６のフレームバッファ出力（これは、結局はメインメモリ１０４に保存される）は、表示コントローラ１２８によってフレーム毎に読取られる。表示コントローラ１２８は、ディスプレイ１３６上に表示するためのディジタルＲＧＢピクセル値を提供する。
【００３２】
頂点キャッシュおよび頂点索引アレイ
図４は頂点キャッシュ２１２および表示リストプロセサ２１３を含むコマンドプロセサ１１４の概略図である。コマンドプロセサ１１４は、位置，法線，テクスチャ座標および色の信号ストリームから完全な索引付きアレイまでの、広範囲の頂点データおよびプリミティブデータ構造を取り扱う。何れかの頂点成分は索引参照されることができ、またはコマンドストリームの中に直接インライン化することができる。したがって、コマンドプロセサ１１４は、融通可能なタイプ，フォーマットおよび多くの属性を直接または索引付きデータとしてサポートする。
【００３３】
コマンドプロセサ１１４内の表示リストプロセサ２１３は、（典型的にはメインメモリ１０４内に割当てられたバッファを介して）ＣＰＵ１０２により与えられる表示リストコマンドを処理する。頂点キャッシュ２１２は、図４に示す例示データ構造３００のような、索引付きポリゴン頂点データ構造をキャッシュメモリに入れる。例示した索引付きポリゴン頂点データ構造３００は、多くの頂点成分データアレイ（たとえば、色データアレイ３０６ａ，テクスチャ頂点データアレイ３０６ｂ，表面法線データアレイ３０６ｃ，位置頂点データアレイ３０６ｄ等）を参照する頂点索引アレイ３０４を含んでいてもよい。頂点キャッシュ２１２は、メインメモリ１０４内のこれらアレイ３０６から頂点データにアクセスし、表示リストプロセサ２１３による迅速アクセスおよび使用のために、それらをキャッシュメモリに入れる。
【００３４】
表示リストプロセサ
図５は、コマンドプロセサ１１４によって実行される表示リストプロセサ２１３の例を示している。この図５において、表示リストプロセサ２１３は、幾つかの構文解析（パーシング：parsing）の段階を提供する。メインプロセサ１０２から受け取られた表示リストコマンドは、表示リストストリームパーサ２００によって解釈される。表示リストストリームパーサ２００は、アドレススタック２０２を使用して、指令のネスティングを与えることができる。あるいは、ＦＩＦＯからの頂点コマンドのストリームをメインメモリ１０６に保存して、予め取り込まれた頂点コマンドデータを再ロードする必要なく、インスタンスにおけるサブルーチン分岐を可能にするために、デュアルＦＩＦＯを使用してもよい（図６参照）。図６のアプローチを使用することにより、表示リストコマンドは１レベル深さの表示リストを提供し、ここでトップレベルのコマンドストリームは表示リスト１レベル深さをコールすことができる。この「コール」能力は、ジオメトリにおける予め計算されたコマンドおよびインスタンスのために有用である。
【００３５】
表示ストリームパーサ２００は、グラフィックスパイプライン１１６の状態に影響するコマンドを、該グラフィックスパイプラインに向けて送り出す。残りのプリミティブコマンドストリームは、メインメモリ１０４から得たプリミティブ記述子に基づいて、プリミティブストリームパーサ２０４により解析される（以下参照）。
【００３６】
頂点に対する索引が参照され、ハードウエア中のテーブルに設けられ得る頂点記述子に基づいて、頂点ストリームパーサ２０８によって解析される。頂点ストリームパーサ２０８に与えられる頂点ストリームは、メインメモリ１０４内に保存された頂点データに対するこのような索引を含んでいてもよい。頂点ストリームパーサ２０８は、頂点キャッシュ２１２を介して、メインメモリ１０４からこの頂点データにアクセスすることができ、直接のデータに対して反対に索引付けされた場合の異なった経路を介して、頂点コマンドおよび関連の索引付き頂点属性を別々に与える。１つの例において、頂点ストリームパーサ２０８は、それがメインメモリ１０４の全体であるかのように、頂点キャッシュ２１２をアドレス指定する。次いで、頂点キャッシュ２１２はメインメモリ１０４から頂点データを検索し（また多くは先取りし）、これを頂点ストリームパーサ２０８による使用のために一時的にキャッシュメモリに入れる。頂点キャッシュ２１２における頂点データのキャッシングは、メインメモリ１０４に対するアクセス回数を減少させ、したがってコマンドプロセサ１１４が必要とするメインメモリバンド幅を減少させる。
【００３７】
頂点ストリームパーサ２０８は、各３角形（ポリゴン）内に表現されるべき夫々の頂点についてのデータを与える。この頂点毎データ（per-vertex data）は、プリミティブストリームパーサ２０４によって出力されるプリミティブ毎(per-primitive) データとともに、復元／逆量子化器ブロック２１４に与えられる。逆量子化器２１４は、異なった頂点表現（たとえば８ビットおよび１６ビットの固定小数点フォーマットデータ）を、グラフィックスパイプライン１１６によって使用される一様な浮動小数点表現へと変換する。逆量子化器２１４は、弾力的な種々の異なるタイプのフォーマットおよび多くの属性のためのハードウエアサポートを提供し、このようなデータは直接のデータまたは索引付データとして、表示リストプロセサ２１３に提示されることができる。逆量子化器２１４の一様な浮動小数点表現出力は、ラスタ化およびさらなる処理のためにグラフィックスパイプライン１１６に与えられる。最適化として所望のときは、頂点ストリップデータを再変換する必要性を回避するために、逆量子化器２１４の出力位置にさらなる小さいキャッシュまたはバッファを設けてもよい。
【００３８】
頂点索引アレイ
図７は、頂点キャッシュ２１２を介して間接的（すなわち、索引付の）頂点属性データを与えるために使用される、好ましい実施例における索引付き頂点リスト３００のさらに詳細な例を示している。この一般化された索引付き頂点リスト３００は、図１に示したシステムにおけるプリミティブを定義するために使用してもよい。夫々のプリミティブは索引のリストによって記述され、その夫々は頂点アレイの中に索引をつける。頂点およびプリミティブは夫々、フォーマット記述子を使用して、それらの項目のタイプを定義する。これらの記述子は、属性をタイプに結びつける。属性は、表現するハードウエアに対して特定の意味を有するデータ項目である。これは、頂点／プリミティブストリームがロードされたときにそれを解析および変換するように、記述子でハードウエアをプログラミングする可能性を与える。最小サイズのタイプと最小数の属性を使用することで、ジオメトリの圧縮につながる。図７の構成はまた、所望により、属性を頂点、索引またはプリミティブに関連させる。
【００３９】
このように、図７の索引付き頂点アレイ３００の例では、プリミティブリスト３０２は、データストリーム（たとえばｐｒｉｍ０，ｐｒｉｍ１，ｐｒｉｍ２，ｐｒｉｍ３…）における種々の各プリミティブ（たとえば３角形）を定義する。プリミティブ記述子ブロック３０８は、プリミティブに共通の属性を与えることができる（たとえば直接または索引付けされ得るテクスチャデータおよび結合データ）を与えることができる。プリミティブリスト３０２内の各プリミティブは、頂点リスト３０４内の対応する頂点に索引を付ける。頂点リスト３０４内の１つの頂点は、プリミティブリスト３０２内の複数のプリミティブによって使用され得る。所望であれば、プリミティブリスト３０２は明確ではなく暗示的であってもよい。すなわち、頂点リスト３０４は、暗示的に（たとえば３角形ストリップを使用して）対応するプリミティブを定義するように配列することができる。
【００４０】
頂点記述子ブロック３０６は、頂点リスト３０４の夫々の頂点について与えることができる。頂点記述子ブロック３０６は、特定の頂点に対応する属性データを含んでいる（たとえば、ｒｇｂまたは他の色データ，アルファデータ，ｘｙｚ表面法線データ）。図４に示すように、頂点記述子ブロック３０６は、多くの異なった索引付き成分ブロックを含むことができる。この頂点属性記述子ブロック３０６は、いずれの頂点属性が存在するか、成分の数およびサイズならびに成分が参照される方法（たとえば直接的…すなわち、量子化された頂点データストリーム内に含まれる…または索引付けされる）を決定する。一例において、特定のプリミティブについての描画（ＤＲＡＷ）コマンドにおける頂点は、全て同じ頂点属性データ構造フォーマットを有する。
【００４１】
図８は、頂点属性ブロック３０６によって与えられる属性リストの例を示している。次表１に示す属性が提供されてもよい。
【００４２】
【表１】
0004644353.tif 000002
【００４３】
この例の頂点属性記述子ブロック３０６において、位置属性は常に存在し、索引付けされたものまたは直接的なものでもよく、多くの異なった量子化され圧縮されたフォーマット（たとえば、浮動小数点，８ビット，整数，または１６ビット）をとることができる。全ての残りの属性は、いずれかの頂点について存在しても存在しなくてもよく、所望により索引付きでも直接的であってもよい。位置値と同様に、テクスチャ座標値は種々の異なったフォーマット（たとえば、８ビット整数、１６ビット整数または浮動小数点）で表現することができ、表面法線属性についてもそうである。拡散色および鏡色の属性は、１６ビット３補数，２４ビット３補数，３２ビット３補数，または１６，２４もしくは３２ビット４補数を含む種々のフォーマットで、３（ｒｇｂ）または４（ｒｇｂａ）の値を与えることができる。所定のプリミティブについての全ての頂点は、好ましくは同じフォーマットを有する。
【００４４】
この例において、頂点記述子３０６は、１６ビットポインタを使用する索引付きデータを属性アレイの中に照合する。アレイ内の特定の属性にアクセスするために使用される特定のオフセットは、たとえば属性における成分の数，成分の大きさ，アライメント目的の属性間のパディング，および複数の属性が同じアレイの中にインタリーブされるかどうかを含む多くの因子に依存する。１つの頂点は、混合された直接的または間接的な属性を有することができ、また幾つかの属性はハードウエアによって発生することができる（たとえば、位置からテクスチャ座標を発生させる）。何れの属性も直接に、または索引としてアレイの中に送ることができる。頂点キャッシュう２１２は、過剰なキャッシュミスを伴うことなく、典型的な数の夫々のデータ成分ストリーム（たとえば位置，法線，色およびテクスチャ）を扱うために充分なキャッシュラインを含んでいる。
【００４５】
頂点キャッシュの具体化
図９は、頂点キャッシュ２１２および関連ロジックの一例を示す概略図である。この例の頂点キャッシュ２１２は、５１２×１１２ビットのデュアルポートＲＡＭとして構成された８キロバイトのキャッシュメモリ４００を含んでいる。多くの属性ストリームがキャッシュ２１２の中で探索されるので、８本のタグラインを含む８組のセットアソシアティブキャッシュを使用して、スラッシングを低減する。各タグラインは３２×１６ビットのデュアルポートのＲＡＭ４０４および関連タグ状態レジスタ４０６を含んでいる。タグＲＡＭ ４０４は、頂点ＲＡＭ４０４内に保存された対応するデータブロックのメインメモリアドレスを保存する。アドレス計算ブロック４０８は、必要な頂点属性データが既に頂点ＲＡＭ４００内に存在するか否か、あるいはメインメモリへの追加の取り込みが必要か否かを決定する。メモリ待ち時間を隠すために、キャッシュラインはメインメモリ１０４から先取りされる。
【００４６】
図１０は、頂点ストリームパーサ２０８によって頂点キャッシュ２１２に与えられるメモリアドレスフォーマットの一例を示している。このメモリアドレス４５０は、キャッシュラインの中にバイトオフセットを与えるフィールド４５２，タグＲＡＭアドレス４５４，およびタグＲＡＭ４０４の内容と比較するためのメインメモリアドレス４５６を含んでいる。アドレス計算ブロック４０８はメインメモリアドレス４５６をタグＲＡＭ４０４の内容と比較して、必要なデータが既に頂点ＲＡＭ４００内にキャッシュされたか否か、またはそれをメインメモリ１０４から取り込むことが必要か否かを決定する。
【００４７】
タグ状態レジスタ４０６は、図１１に示したフォーマットでデータを保存する。データ有効フィールド４６２は、特定のキャッシュライン内のデータが有効であるかどうかを指示する。カウンタフィールド４６４は、キャッシュラインに依存する待ち行列４１０中のエントリ数のトラックを維持する。カウンタフィールド４６４は、ミスが発生したときに全てのタグ状態レジスタ４０６がデータ有効を示す場合に使用される。アドレス計算ブロック４０８は、新たなエントリのための余裕を形成するために、キャッシュラインの１つを捨てる必要がある。カウンタフィールド４６４がゼロでなければ、キャッシュラインは未だ使用中であり、捨て去ることはできない。改良された部分的ＬＲＵアルゴリズムに基づき、アドレス計算ブロック４０８は置き換えのためにキャッシュラインの１つを選択する。データ有効フィールド４６２は「無効」にセットされ、キャッシュラインはメインメモリ１０４からの新たな内容で置き換えられる。もう１つの属性索引が同じキャッシュラインにマップすると、カウンタフィールド４６４はインクリメントされる。データがメインメモリ１０４から到達すると、データ有効ビットがセットされ、エントリは待ち行列４１０から処理可能となる。あるいは、データがキャッシュＲＡＭ４００の中に入れられるまで、待ち行列４１０の処理が停止されるであろう。待ち行列エントリのためにキャッシュＲＡＭ４００がアクセスされると、カウンタ４６４はディクリメントされる。
【００４８】
現時点で最も実際的且つ好ましいと思われる実施例に関連してこの発明を説明してきたが、この発明はこの開示された実施例に限定されるものではなく、逆に、特許請求の範囲内に含まれる種々の変形例および均等な構成をもカバーするものであることが理解されるべきである。
【図面の簡単な説明】
【図１】図１は対話型３次元グラフィックスシステムの一例を示すブロック図である。
【図２】図２は図１に示したグラフィックス／オーディオコプロセサの例を示すブロック図である。
【図３】図３は図２のグラフィックス／オーディオコプロセサ部分のより詳細なブロック図で３次元パイプライングラフィックス処理構成の一例を示す。
【図４】図４は頂点索引アレイデータを設けた頂点キャッシュを含むコマンドプロセサの一例を示す。
【図５】図５はこの発明に従って設けられた頂点キャッシュを含む表示リストプロセサの一例を示す。
【図６】図６はデュアルＦＩＦＯ構成の一例を示している。
【図７】図７は索引付き頂点データ構造の一例を示す概略図である。
【図８】図８は頂点記述子ブロックの一例を示している。
【図９】図９は頂点キャッシュの具体化の一例を示すブロック図である。
【図１０】図１０は頂点キャッシュメモリアドレスフォーマットの一例を示している。
【図１１】図１１は頂点キャッシュタグ状態レジスタフォーマットの一例を示している。
【符号の説明】
１００  …対話型３次元コンピュータグラフィックスシステム
１０２  …メインプロセサ（ＣＰＵ）
１０４  …メインメモリ
１０６  …グラフィックス／オーディオコプロセサ
１０７  …３次元グラフィックスプロセサ
１１４  …コマンドプロセサ
１１６  …グラフィクスパイプライン
２１２  …頂点キャッシュ
２１３  …表示リストプロセサ
【図１】
0004644353.tif 000003
【図２】
0004644353.tif 000004
【図３】
0004644353.tif 000005
【図４】
0004644353.tif 000006
【図５】
0004644353.tif 000007
【図６】
0004644353.tif 000008
【図７】
0004644353.tif 000009
【図８】
0004644353.tif 000010
【図９】
0004644353.tif 000011
【図１０】
0004644353.tif 000012
【図１１】
0004644353.tif 000013