JPH0916785A - テクスチャマッピング・コンピュータ・グラフィックス・システム - Google Patents

テクスチャマッピング・コンピュータ・グラフィックス・システム

Info

Publication number
JPH0916785A
JPH0916785A JP8142702A JP14270296A JPH0916785A JP H0916785 A JPH0916785 A JP H0916785A JP 8142702 A JP8142702 A JP 8142702A JP 14270296 A JP14270296 A JP 14270296A JP H0916785 A JPH0916785 A JP H0916785A
Authority
JP
Japan
Prior art keywords
texture
data
cache
map
block
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP8142702A
Other languages
English (en)
Other versions
JP3888477B2 (ja
Inventor
Ethan W Gannet
イーサン・ダブリュー・ガネット
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
HP Inc
Original Assignee
Hewlett Packard Co
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hewlett Packard Co filed Critical Hewlett Packard Co
Publication of JPH0916785A publication Critical patent/JPH0916785A/ja
Application granted granted Critical
Publication of JP3888477B2 publication Critical patent/JP3888477B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0846Cache with multiple tag or data arrays being simultaneously accessible
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/123Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/00Three-dimensional [3D] image rendering
    • G06T15/04Texture mapping
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0864Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Graphics (AREA)
  • Image Generation (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

(57)【要約】 (修正有) 【課題】テクスチャマッピング・グラフィックス・シス
テムのメモリの利用効率を高める。 【解決手段】ホストコンピュータに結合したグラフィッ
クス・ハードウェア装置は、テクスチャ・マップされた
画像を描画し、また任意の時点でシステム・メモリに格
納されたテクスチャ・データの少なくとも一部を格納す
る局部メモリ155を備えている。ソフトウェア・デー
モン160が、ホストコンピュータのプロセッサ上で走
り、画像を描画するとき、システム・メモリから局部メ
モリへのテクスチャ・データの転送を管理し、ハードウ
ェア装置による局部メモリに格納したテクスチャ・デー
タブロックの使用をモニタする。メイン・メモリの中で
格納されたテクスチャの優先度を追跡し、局部メモリの
中の最下位優先度および最低使用最近度のテクスチャ・
データブロックが、画像を描画するため必要とされるテ
クスチャ・データブロックで置き換えられる。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】この発明は、一般にテクスチ
ャマッピング・コンピュータ・グラフィックス・システ
ムのテクスチャ・マップのソフトウェア・メモリ管理に
関し、特に、テクスチャマッピング・データを格納する
ハードウェア装置ローカル・キャッシュ・メモリ・シス
テムのデーモン(daemon)ベースの仮想メモリ管理に関す
る。
【0002】
【従来の技術】コンピュータ・グラフィックス・システ
ムは、対象のグラフィック表現を2次元表示画面の上で
表示するために一般に使用される。現在のコンピュータ
・グラフィックス・システムは、非常に詳細な表現を提
供することができて、いろいろな適用において使用され
る。
【0003】典型的なコンピュータ・グラフィックス・
システムにおいて、表示画面(ディスプレイ・スクリー
ン)に表示するために選ばれる対象は、複数のグラフィ
ックス・プリミティブに分解される。プリミティブは、
グラフィックス・ピクチャの基本成分であって、点、
線、ベクトルおよび三角形のような多角形を含むことが
ある。典型的に、ハードウェア/ソフトウェア方式が、
スクリーンに表現されてつつある1つまたは複数の対象
の投影図を表現するグラフィックス・プリミティブを2
次元表示画面に描画するために実行される。
【0004】典型的に、描画されるべき3次元の対象を
規定するプリミティブは、各プリミティブをプリミティ
ブ・データで規定するホストコンピュータから提供され
る。たとえば、プリミティブが三角形であるとき、ホス
トコンピュータがその頂点のx,y,z座標、および各頂点
のR,G,B色値でプリミティブを規定することがある。レ
ンダリング・ハードウェアが、各プリミティブおよび各
ピクセルのR,G,B値を表現するためにオンにされる表示
画面ピクセルを計算するためにプリミティブ・データを
補間する。
【0005】初期のグラフィックス・システムは、複雑
な3次元の対象を表現またはモデル化するに十分に現実
的な態様で、画像を表示することに失敗した。そのよう
なシステムによって表示される画像は、テクスチャがな
く、こぶ、ひっかき傷、影およびモデル化される対象に
存在する他の表面詳細のない非常にスムーズな表面を表
示した。
【0006】この結果、画像を改善された微細な表面で
表示する方法が発達した。テクスチャマッピングが、そ
のような方法であり、テクスチャと呼ばれるソースイメ
ージを3次元の対象の表面にマップし、その後、テクス
チャされた3次元の対象を2次元グラフィックスの表示
画面にマップして、結果の画像を表示することを含む。
一般にテクスチャマップされた表面の詳細属性は、色、
鏡面反射、ベクトル動揺、反射、透明度、影、表面の不
規則性および粒度を含む。
【0007】テクスチャマッピングは、テクスチャの1
つまたは複数の点要素(テクセル)を、テクスチャがマ
ップされつつある対象の表示された部分の各点要素(ピ
クセル:画素)に適用することを含む。テクスチャマッ
ピング・ハードウェアは、従来より、テクスチャ・マッ
プにおけるテクセルが対象を表現する表示画面上のピク
セルに対応する態様を示す情報を備えている。テクスチ
ャ・マップにおける各テクセルは、2次元テクスチャ・
マップにおけるその位置を識別するSおよびT座標で規定
される。各ピクセルについて、それにマップする対応す
る1つまたは複数のテクセルが、テクスチャ・マップか
らアクセスされ、ピクセルのために生成される最終的な
R,G,B値に取り入れられて、表示画面上でテクスチャの
ある対象が表現される。
【0008】対象プリミティブにおける各ピクセルが、
対象のあらゆる景観のためのテクスチャ・マップにおけ
る一つのテクセルと1対1の対応でマップしないかもし
れないことが理解されなければならない。例えば、対象
が表示画面に表現されるビュー・ポートに近いほど、対
象は大きく表現される。対象の表示画面上での表現が大
きくなるにつれて、テクスチャの表示はより詳細にな
る。このように、対象が表示画面のかなり大きな部分を
消費するとき、大きな数のピクセルが、対象を表示画面
に表現するために使用され、そして、対象を表現する各
ピクセルがテクスチャ・マップにおける一つのテクセル
と1対1の対応でマップすることがあり、または一つの
テクセルが、複数のピクセルにマップすることがある。
しかし、対象が表示画面の比較的小さい部分をとると
き、より小さい数のピクセルが、対象を表現するために
使用され、テクスチャが少し低い詳細度で表現されるこ
とになるので、各ピクセルが、複数のテクセルにマップ
することになる。各ピクセルは、テクスチャが対象の小
さい部分にマップされるとき複数のテクセルにマップす
ることになる。結果として生じるテクセル・データは、
2以上のテクセルにマップする各ピクセルのために計算
される。ピクセルが複数のテクセルにマップすることは
一般的なので、1つのピクセルのための結果として生じ
るテクセル・データは、典型的にそのピクセルにマップ
するテクセルの平均を表現する。
【0009】テクスチャマッピング・ハードウェア・シ
ステムは、典型的には、描画されつつある対象に関連す
るテクスチャを表現するデータを格納する局部メモリを
含む。上で述べたように、1つのピクセルが複数のテク
セルにマップすることがある。テクスチャマッピング・
ハードウェアが1つのピクセルにマップする多数のテク
セルの平均値を生成するため局部メモリから読みとる必
要があるならば、多数のメモリ読取り、および多くのテ
クセル値の平均算出が必要となり、これには時間がかか
り、システム性能の低下させる。
【0010】この問題を克服するために、各テクスチャ
のために一連のMIPマップを作り出すこと、およびテク
スチャマッピング・ハードウェアの局部メモリにおいて
描画されつつある対象と関連したテクスチャのMIPマッ
プを格納することを含む方式が発達した。テクスチャの
ためのMIPマップは、一連のフィルタされたマップおよ
びテクスチャマップに直接対応するベース・マップを含
み、2つのテクスチャ・マップ寸法のそれぞれにおい
て、各連続したマップの大きさが2の係数だけ減少す
る。一組のMIPマップの例が図1に示される。MIP(multu
m in parvo:小さい場所にたくさんのもの)マップは、
8掛ける8テクセルの大きさのベース・マップ100、お
よびそれぞれ、4掛ける4テクセル、2掛ける2テクセ
ルおよび1テクセルの大きさの一連のマップ102、104、
108を含む。
【0011】4掛ける4のマップ102は、マップ102の各
テクセルがベース・マップ100における平均4つのテク
セルに対応するように、ベース・マップ100をボックス
・フィルタ(10分の1にする)して生成される。例え
ば、マップ102のテクセル110がマップ100のテクセル112
-115の平均に等しく、そして、マップ102のテクセル118
および120が、マップ100のテクセル121-124および125-1
28の平均にそれぞれ等しい。同様に、2掛ける2のマッ
プ104は、マップ102をマップ104のテクセル130がマップ
102のテクセル 110および118-120の平均に等しくなるよ
うに、ボックス・フィルタすることによって生成される
マップ108の一つのテクセルは、マップ104の4つのテク
セルを平均することによって生成される。
【0012】従来のグラフィックス・システムは、概し
て、ホストコンピュータの主記憶装置からテクスチャマ
ッピング・ハードウェアの局部メモリへ、表示画面に描
画されるべきプリミティブとともに使用される任意のテ
クスチャのための完全なシリーズのMIPマップをダウン
ロードする。このようにテクスチャマッピング・ハード
ウェアは、MIPマップのシリーズのいずれからも、テク
スチャデータをアクセスすることができる。任意の特定
のピクセルのためのテクセル・データを提供するために
どのマップをアクセスするかの決定は、ピクセルがマッ
プするテクセルの数に基づく。たとえば、ピクセル・マ
ップがテクスチャの一つのテクセルと1対1の対応であ
るならば、ベース・マップ100がアクセスされる。しか
し、ピクセルが4つ、16、または24のテクセルにマ
ップするならば、マップ102、104および108が、それぞ
れアクセスされる。それらのマップがテクスチャ・マッ
プにおける4つ、16、24のテクセルの平均を表すテクセ
ルデータをそれぞれ格納しているからである。
【0013】さらに、あるテクスチャマッピング・シス
テムは、いろいろな操作が同時に異なる対象プリミティ
ブで実行されるようパイプラインされる。しかし、テク
スチャのための一連のMIPが大きいことがある。ほとん
どのシステムが、一度にそのような大きいシリーズのMI
Pマップを一つだけ格納することができる局部メモリを
使う。このように、使用されるテクスチャの切換えがプ
リミティブの描画中にあるとき、システムはMIPマップ
の新しいシリーズをダウンロードしなければならない。
典型的に、新しいテクスチャ・データをテクスチャマッ
ピング・ハードウェアの局部メモリにロードするために
使用されるデータ経路は、システムのプリミティブ描画
パイプラインを通過することを含む。したがって、新し
いテクスチャがマップされるべきとき、MIPマップの新
しいシリーズがダウンロードされる前に、プリミティブ
描画パイプラインが、からにされなければならない。MI
Pマップのシリーズがダウンロードされると、パイプラ
インは再び満たされなければならない。新しいテクスチ
ャが必要な都度プリミティブ描画パイプラインをフラッ
シュする必要性は、システムのバンド幅(帯域幅)を減
らす。
【0014】図2は、ホストコンピュータがテクスチャ
・マップされた画像を描画するために通信する、システ
ム・ホストコンピュータのプロセッサーの上およびハー
ドウェア装置上で走る、従来のコンピュータ・グラフィ
ックス・システムのソフトウェアの層を示す部分的にハ
ードウェアで部分的に階層的なソフトウェアのブロック
図である。ホストコンピュータのシステム・メモリは、
図2に示されるように、システム・プロセッサの上で走
ることができる複数ユーザ対話型プロセスPR1、PR
2....PRNを格納することができる。各プロセスは、
データベース、CAD/CAMアプリケーション、建築上の設
計アプリケーション、土木工学アプリケーション、ワー
ドプロセッシング・パッケージなどのような高水準コン
ピュータ図形処理のソフトウェア・プログラムまたはア
プリケーションである。
【0015】特定のプロセス内で、ユーザは複数のコン
テクスト(context)をつくることができる。プロセス内
のつくられた各コンテクストは、同じ画像の異なる景観
を含むことができる。たとえば、建築上の工学設計応用
プロセスの、ユーザは、ビルディングのような同じ構造
の異なる景観をつくることがありえる。各コンテクスト
は、テクスチャマッピングに画像を描画することを要求
することがありえる。この例では、テクスチャ・マップ
は、床、壁、天井および建物のその他の表面属性を描画
することを要求されることがある。このように、ユーザ
がそのコンテクストの画像を描画する1つまたは複数の
テクスチャ・マップを提供する。同じプロセス内でつく
られたコンテクストが典型的には同じ画像の異なる景観
を含むので、プロセス内のコンテクストは、一般に1つ
または複数の同じテクスチャを必要とする。
【0016】コンテクストがユーザによってつくられる
とき、ユーザがその画像を描くために高水準プロセス・
プログラミング言語によって認識可能なコマンドを出
す。画像がテクスチャ・マップを必要とするならば、そ
のことを示すコマンドが入れられ、テクスチャ・マップ
が、外部入力装置、フロッピーディスクなどからユーザ
によって提供される。次いで、プロセス、または高水準
プログラミング言語がこのコマンドをより低いレベルの
ソフトウェアへ・コマンドに翻訳し、そして、ユーザに
よって入れられるテクスチャをコピーする。図2に示す
ような先行技術システムにおいては、一つのプロセス内
でつくられた各コンテクストが、そのテクスチャのそれ
自身のコピーを必要とする。各コンテクストは、テクス
チャのそのコピーをホストコンピュータ上のシステム・
メモリの専用領域内に格納する。このように、プロセス
内の複数のコンテキストが同じテクスチャの使用を要求
するとき、1つが各コンテクストに対応する、そのテク
スチャの複数のコピーがシステム・メモリ内に格納され
る。
【0017】特定のテクスチャを使用して画像を描くた
めにユーザ入力され、プロセスによって一度翻訳された
コマンドは、プロセスから基礎をなすグラフィックス・
アプリケーション・プログラマ・インターフェイス(AP
I)に伝えられる。図2に示されるように、ユニークなグ
ラフィックスAPIは、システムの各プロセスと通信す
る。各グラフィックスAPIは、ホストコンピュータのプ
ロセッサ上で、対応するプロセスから受け取った各高水
準グラフィックス・コマンドを、低レベルのソフトウェ
ア・コードのコマンドに翻訳する働きをする下位レベル
のソフトウェア言語である。グラフィックスAPIは、ま
た画像を描画するのに必要な各テクスチャのコピーをシ
ステム・メモリのそれ自身の専用の位置に格納する。グ
ラフィックスAPIが、描画すべき画像を四辺形または多
角形のようなグラフィックス成分に分ける。そのような
情報は、次いで対応するハードウェア・ドライバに提供
される。
【0018】ユニークなハードウェア・ドライバが各グ
ラフィックスAPIと通信する。各ハードウェア・ドライ
バは、別の基礎をなす低レベルのグラフィックス・ソフ
トウェア言語であるAPIから受け取った各低レベルのグ
ラフィックス・コマンドを、ホストコンピュータが接続
されるグラフィックス・ハードウェア装置によって認識
できるハードウェア・コマンドに翻訳する。次いで、こ
れらのコマンドが、ハードウェア・ドライバからハード
ウェア装置に伝えられ、これに応答して、ハードウェア
装置がテクスチャマップされた画像をハードウェア装置
に接続した表示画面に描画する。図2に示されるよう
に、ハードウェア・ドライバHWD1, HWD2...HWDNのユニ
ークな例が、各グラフィックスAPIである API1, AP1
2...APINと通信する。
【0019】図2に示した例では、ハードウェア・ドラ
イバのすべては、一つのグラフィックス・ハードウェア
装置150に接続されている。しかし、当業者によって理
解されるように、ホストコンピュータは、異なるハード
ウェア・ドライバが各ハードウェア装置と通信する複数
の異なるグラフィックス・ハードウェア装置に接続され
てもよい。
【0020】グラフィックスAPIが、提供された特定の
テクスチャを使用してテクスチャマップした多角形を描
画する低レベルのソフトウェア・コマンドを出す時、グ
ラフィックス・ハードウェア・ドライバは、その低レベ
ルのコマンドをハードウェア装置150が認識できるハー
ドウェア・コマンドに翻訳する。次いで、グラフィック
ス・ハードウェア・ドライバが、ハードウェア装置内の
適当なレジスタおよび入力バッファに書き込むことによ
って、ハードウェア装置150に多角形を描画しろという
コマンドを出す。さらに、グラフィックス・ハードウェ
ア・ドライバが、その特定の多角形のためのテクスチャ
・データをハードウェア装置150の局部メモリ155に提供
し、そこでテクスチャ・データは、その多角形のレンダ
リングの間、一時格納される。ここで記述したように、
先行技術のコンピュータ・グラフィックス・システム
は、テクスチャが、画像または画像の成分を描画するこ
とを要求される都度、一つのテクスチャのためのMIPマ
ップの全シリーズを、グラフィックス・ハードウェア・
ドライバからハードウェア装置の局部(ローカル)メモ
リにダウンロードする。
【0021】図2に示されたもののような、従来のシス
テムでは、一つのテクスチャの複数のコピーが、ホスト
コンピュータのシステム・ソフトウェア・メモリの異な
る位置に格納される。たとえば、プロセスPRlのコンテ
クスト1Aとコンテクスト1Bが同じテクスチャに特定の画
像の異なる景観を描画することを要求するならば、それ
が最初に確定されプロセスに導入される時、ユーザがそ
のテクスチャの第1のコピーを提供する。そのプロセス
PR1内の各コンテクスト1Aおよび1Bもテクスチャのコピ
ーを格納し、プロセスPR1によって格納される同じテク
スチャのソフトウェア・コピーの小計を3にする。グラ
フィックスAPI1が、そのテクスチャの4番目のコピーを
作り、そして、それをシステム・ソフトウェア・メモリ
のその割り当てられた位置に格納する。グラフィックス
・ハードウェア・ドライバHWD1が、そのテクスチャの5
番目のコピーを作り、そして、それをシステム・ソフト
ウェア・メモリのその割り当てられた位置に格納する。
このように、その同じテクスチャを使用して同じ画像の
2つの景観を描画するのに、同じテクスチャの5つのユニ
ークなコピーが、システム・ソフトウェア・メモリの異
なる位置の格納される。さらに先に述べたように、テク
スチャの6番目のコピーが、ハードウェア装置に提供さ
れ、それの局部メモリに格納される。
【0022】一連のテクスチャMIPマップが、格納のた
めに多量のシステム・ソフトウェア・メモリを必要とす
ることになる。たとえば、1024 x 1024テクセルのテク
スチャ・ベース・マップを持つテクスチャのための一連
のMIPマップは、MIPマップされたテクスチャの一つのコ
ピーを格納するために、5メガバイト以上のシステム・
ソフトウェア・メモリ必要とする。このように、MIPマ
ップされたテクスチャの多重に格納されたコピーは、シ
ステム・ソフトウェア・メモリのかなりの量を使用す
る。
【0023】システム・ソフトウェア・メモリは、数ギ
ガバイトのソフトウェア・データを格納することができ
るが、テクスチャ・ハードウェア装置の典型的な専用の
局部ハードウェア・テクスチャ・メモリは、ずっと少な
い量のデータしか格納することができない。そのような
局部テクスチャ・ハードウェア・メモリは、4メガバイ
トから16メガバイトまでわたることができる。したがっ
て多くのテクスチャマッピング適用において、テクスチ
ャによって消費されるシステム・メモリの量は、局部ハ
ードウェアのテクスチャ・メモリの量をはるかに越え
る。システム・メモリは、典型的には、プロセスの複数
のコンテクストで使用するための複数のMIPマップされ
たテクスチャを格納するが、局部ハードウェア装置メモ
リは、限られたサイズの一つのテクスチャだけを任意の
一つの時に格納することできるだけである。したがっ
て、ハードウェア装置の局部テクスチャ・メモリを適切
に管理することが、システムの最大性能を達成するため
に重大である。
【0024】
【発明が解決しようとする課題】テクスチャの多重のコ
ピーの格納によるシステム・ソフトウェア・メモリの大
きな消費に加えて、従来の局部ハードウェア・テクスチ
ャ・メモリ管理方式は、システムの帯域幅でも一般に苦
しむ。従来の局部ハードウェア・メモリ管理方式は、局
部ハードウェア・メモリ内で繰り返してテクスチャMIP
マップの全シリーズを置き換える。多角形を描画するた
めにテクスチャが必要とされる都度、テクスチャのため
の一連のMIPマップが、局部メモリで置き換えられる。
ような方式は、そのテクスチャの使用のヒストリー(履
歴)を考慮することにも、そしてそのテクスチャの将来
の使用を予測することにも失敗する。繰り返してシステ
ム・メモリから局部ハードウェア・テクスチャ・メモリ
に、同じテクスチャの全シリーズをダウンロードするこ
とによって、システムの帯域幅は、消極的な影響を受け
る。
【0025】従来のテクスチャ・ハードウェア・メモリ
置き換えアルゴリズムが全テクスチャMIPマップ・シリ
ーズをダウンロードするので、各テクスチャMIPマップ
・シリーズは、局部ハードウェア・テクスチャ・メモリ
の物理的な記憶容量限度を越えることができない。した
がって、特定のハードウェア装置に接続するグラフィッ
クス・プロセスのユーザは、その容量より大きいテクス
チャ容量を使わないように局部テクスチャ・メモリの容
量を知っている必要がある。多くの適用(プロセス)が
それぞれユニークな局部テクスチャ・メモリの制約を持
ついくつかの異なる基礎をなすハードウェア装置で動作
することができるが、そのような制約に関する知識を持
ち、装置に依存する態様で画像をつくる負担は、ユーザ
のものとなる。
【0026】
【課題を解決するための手段】この発明の一つの形態に
おいて、テクスチャマッピング・コンピュータ・グラフ
ィックス・システムが提供される。システムは、テクス
チャ・データを格納するシステム・メモリを持つホスト
コンピュータを含む。ホストコンピュータに結合するグ
ラフィックス・ハードウェア装置が、テクスチャ・マッ
プされた画像を描画する。ハードウェア装置は、システ
ム・メモリに格納されたテクスチャ・データの少なくと
も一部分を任意の一時点で格納する局部メモリを含む。
ソフトウェア・デーモン(daemon)は、ホストコンピュー
タのプロセッサ上で走る。ソフトウェア・デーモンが、
画像を描画するためにハードウェア装置によって必要と
されるときテクスチャ・データをシステム・メモリから
局部メモリに転送するのを管理する。
【0027】発明の別の形態において、テクスチャマッ
ピング・コンピュータ・グラフィックス・システムにお
いてテクスチャ・データを管理する方法が提供される。
システムが、テクスチャ・データを格納するメイン・メ
モリを有するホストコンピュータを含む。ハードウェア
装置は、メイン・メモリに格納したテクスチャ・データ
の少なくとも一部を任意の時点でブロックで格納する、
ホストコンピュータに結合した局部メモリを持つ。ハー
ドウェア装置は、局部メモリに格納されたテクスチャ・
データを使用してテクスチャ・マップされた画像を描画
する。この方法は、次のステップを含む:局部メモリの
格納したテクスチャ・データブロックのハードウェア装
置による使用を監視するステップ;メイン・メモリに格
納したテクスチャの優先度を追跡するステップ;そし
て、局部メモリにおける最下位優先度および使用最近度
の最も低いテクスチャ・データブロックを画像を描画す
るためにハードウェア装置によって必要とされるテクス
チャ・データブロックで置き換えるステップ。
【0028】この発明の別の形態は、コンピュータ・グ
ラフィックス・システムのプロセッサ上で実行されるソ
フトウェアシステムに関連する。プロセッサは、少なく
とも一つのコンピュータ・グラフィックス・プロセス、
各プロセスのための基礎をなすグラフィックスAPI、そ
して、各プロセスのための基礎ハードウェア・ドライバ
を走らせる。コンピュータ・グラフィックス・システム
は、テクスチャマップした画像を描画する、プロセッサ
に接続されたハードウェア装置を含む。ソフトウェアシ
ステムが、プロセッサからハードウェア装置へのテクス
チャ・データのダウンロードを管理するデーモンを含
む。ソフトウェアシステムは、デーモン、グラフィック
スAPIおよびハードウェア・ドライバによってアクセス
可能なテクスチャ・データを格納する共用メモリ領域を
も含む。
【0029】発明の別の形態において、テクスチャマッ
ピング・コンピュータ・グラフィックス・システムのテ
クスチャ・データを管理するソフトウェア・デーモンが
提供される。システムは、その上でソフトウェア・デー
モンおよび少なくとも一つのグラフィックス・プロセス
が走るプロセッサを含む。ユーザは、各プロセス内に複
数のコンテキストをつくることができる。システムは、
この少なくとも一つのグラフィックス・プロセスでつく
られたテクスチャマップされた画像を描画する、プロセ
ッサに結合した少なくとも一つのグラフィックス・ハー
ドウェア装置を含む。デーモンは、テクスチャの一つの
格納されたコピーが同じプロセス内の複数のコンテキス
トの間で共有されるように、各プロセスのためのテクス
チャ・データを別に管理する装置独立の部分を含む。デ
ーモンは、グラフィックス・ハードウェア装置にテクス
チャ・データを書くために装置に依存する部分を含む。
【0030】
【発明の実施の形態】
I. システム概要 この発明は、コンピュータ・グラフィックス・システム
・ホスト・コンピュータのプロセッサ上で走り、そして
ホストコンピュータに接続したテクスチャマッピング・
グラフィックスハードウェア装置の局部メモリ内で、テ
クスチャ・データの記憶を管理するソフトウェア・デー
モンに関する。デーモンは、メモリが仮想に見えるよう
な方法で局部メモリを管理する。ハードウェア装置の局
部メモリにテクスチャMIPマップの全シリーズをダウン
ロードする先行技術システムと対照的に、この発明のソ
フトウェア・マネージャは、画像または画像の一部分を
描画するために任意のある時に必要なテクスチャ MIPマ
ップの部分だけをダウンロードする。マネージャは、画
像またはその一部を描画するために新しいテクスチャ・
データがハードウェア装置によって要求されるとき、局
部的なハードウェア・メモリのどの部分を置き換えるか
決定するのに、特定のテクスチャ・マップ部分の最近の
過去の使用頻度、およびそのようなマップ部分の将来の
使用予測(テクスチャの相対的優先度に基づく)を考慮
する。
【0031】発明の一つの実施例において、マネージャ
は、マネージャ、ハードウェア・ドライバ、および対応
するグラフィックスAPIの間でテクスチャがシステム・
メモリ内に共有記憶されるようにする。マネージャは、
一つのプロセスの複数のコンテキストの間でテクスチャ
が共有記憶されるようにする。この発明の管理方式は、
バンド幅の大きな節約、および先行技術に対比してシス
テム・ソフトウェア・メモリ空間の節約を提供する。シ
ステムは、さらに、基礎をなすハードウェア装置の局部
メモリの記憶容量限度の知識なしで、高水準グラフィッ
クス・プロセスのユーザが装置から独立の態様で画像を
つくることを可能にする。
【0032】発明の第1の実施例が、図3のブロック図
に示される。そこでは同じ参照文字が図2のものと同じ
要素を示すために使用されている。図2の先行技術の例
のように、システムはシステム・プロセッサ上で走る複
数のユーザ対話型プロセスPR1、PR2...PRNを含む。
それぞれのプロセス内で、ユーザは、同じテクスチャ・
マップを必要とする複数のコンテキストを作ることがで
きる。システムは、それぞれのプロセスのために、基礎
をなすグラフィックスAPIおよびグラフィックス・ハー
ドウェア・ドライバを含む。
【0033】この発明は、ユーザの知らないホストコン
ピュータのプロセッサ上で走る、独立の、スタンドアロ
ーンのソフトウェア・プロセスであるテクスチャ割込み
管理デーモン(TIM)160に関連する。この発明のTIM 16
0は、別個のソケットを通してグラフィックス・ハード
ウェア・ドライバのそれぞれと通信する。当業者に理解
されるように、ソケットは、それを通して2つのソフト
ウェア・プログラムが通信することができるソフトウェ
ア通信パスである。TIMは、バス162を通してハードウェ
ア装置150とも通信する。
【0034】この発明のTIMは、コンピュータ・グラフ
ィックス・ワークステーションとして知られる、コンピ
ュータ・グラフィックス・システム・ホストコンピュー
タの従来のプロセッサ上で走ることができる。そのよう
なワークステーションは、例えばヒューレット・パッカ
ードTM 9000のシリーズJ200を含む。
【0035】TIM 160が、ハードウェア装置150の局部メ
モリ155内でのテクスチャ・データの格納を管理する。
より詳細を後述するように、TIMは、ソフトウェア・テ
クスチャ・メモリ管理およびグラフィックス・ハードウ
ェア・ドライバとのソケットを通しての通信を扱う、装
置独立の部分と、バス162を通してハードウェア装置へ
の書き込みおよびこれからの読み取りを行う装置に依存
する部分と、を含む。
【0036】この発明の一つの実施例において、ハード
ウェア装置の局部メモリが、キャッシュ・メモリとして
準備され、テクスチャの一部分が、任意のある時にハー
ドウェア装置の局部メモリに格納される。TIMの装置独
立の部分が、キャッシュに格納されたテクスチャ・デー
タの一部分の使用を追跡し、そして、テクスチャの優先
度を監視してそれらの部分の将来の使用を予測する。キ
ャッシュに現在格納されていないテクスチャ・データ
が、画像を描画するためにハードウェア装置によって必
要とされるとき、ハードウェアのキャッシュ・ミスが、
起こる。キャッシュ・ミスが生じるとき、TIMは、キャ
ッシュ内のテクスチャ・データのどのブロックまたは複
数のブロックの使用最近度が最も低いか、およびどのテ
クスチャが、最下位優先度を持つかを考慮することによ
って、キャッシュ内のテクスチャ・データのどのブロッ
クを置き換えるか決定する。
【0037】TIMは、ホストコンピュータに画像を描画
するために接続した特定のハードウェア装置の局部メモ
リによって認識できるフォーマットにテクスチャ・デー
タを割り当てる。発明の一つの実施例において、1つの
テクスチャの一連のMIPマップのそれぞれのマップが、
4つに分割され、そしてTIMによってハードウェア装置
の局部的キャッシュ・メモリにダウンロードされるデー
タのブロック(複数)の間で割り当てられる。キャッシ
ュ割込みが生じる時、TIMの装置依存部分が、実際にデ
ータのダウンロードを実行する。
【0038】発明の一つの実施例において、TIMは、シ
ステム・メモリ内に共有記憶ロケーションを持ち、そこ
では、大きいテクスチャまたはテクスチャ部分が格納さ
れ、そして特定のプロセスのために、グラフィックスAP
I、グラフィックス・ハードウェア・ドライバ、およびT
IMの間で共有される。より詳細に下で説明されるよう
に、グラフィックスAPI、グラフィックス・ハードウェ
ア・ドライバ(特定のプロセスのために)およびTIM 16
0のそれぞれが、格納されたテクスチャ・コピーをアク
セスするためシステム共用メモリー領域内のロケーショ
ンに対するポインタを含む。さらに、TIMは、一つのプ
ロセス内で作られたコンテキストのすべてがそれらのコ
ンテキストのために必要とされるテクスチャの同じコピ
ーを共有するようにするメモリ管理方式を提供する。あ
る適用について、この発明のTIMは、システム・ソフト
ウェア・メモリ空間の相当な節減を提供することができ
る。
【0039】プロセスPR1のコンテキスト1Aおよびコン
テキスト1Bが特定の画像の異なる景観を描画するために
同じテクスチャを必要とする、図2を参照して上に記述
した例に関して、テクスチャが大きいならば、この発明
のTIMは、相当なシステム・メモリ空間の節減を提供す
る。説明した先行技術システムと対照的に、コンテキス
ト1Aおよびコンテキスト1Bの間で共有されるテクスチャ
の一つのコピーを格納することができる。さらに、テク
スチャが共用メモリ・ロケーションに格納するのを正当
化するに十分大きいならば、テクスチャの一つの他のコ
ピーだけが、システム共用メモリ・ロケーションに格納
され、そして、TIM、グラフィックスAPI1、およびグラ
フィックス・ハードウェア・ドライバHWD1の間で共有さ
れる。このようにこの例では、同じテクスチャを使用す
る同じ画像の2つの景観を描画するために同じテクスチ
ャの3つのユニークなコピーだけが、システム・ソフト
ウェア・メモリの異なるロケーションに格納される。一
つのコピーが、ユーザ・コピーであり、一つのコピー
が、プロセスPR1の2つのコンテキストの間で共有され、
そして、一つのコピーがグラフィックスAPI、グラフィ
ックス・ハードウェア・ドライバ、およびTIMの間で共
有される。図2の先行技術システムにおいては、上述し
たように、その同じテクスチャの5つのコピーがシステ
ム・ソフトウェア・メモリに格納されなければならなか
った。したがって、この発明のTIMでは、テクスチャの2
つ少ないコピーが、システム・ソフトウェア・メモリに
格納されることを要求され、大きいテクスチャについて
は、大きなメモリ空間の節減になる。
【0040】ユーザが画像をつくろうとするとき、ユー
ザは、その画像を描くために高水準プロセス・プログラ
ミング言語によって認識できるコマンドを出し、その画
像をテクスチャ・マップするに必要なテクスチャを入力
する。プロセスが、次いでそのコマンドをより低レベル
のソフトウェア・コマンドに翻訳し、そしてそのテクス
チャをコピーする。翻訳されたコマンドが、そのプロセ
スからそのプロセスに関連する基礎をなすグラフィック
スAPIに伝えられる。グラフィックスAPIが、次いでプロ
セスから受け取られたグラフィックス・コマンドをより
低レベルのソフトウェア・コード・コマンドに翻訳し、
そして画像を四辺形または多角形のようなグラフィック
ス成分に分ける。その情報が次いでハードウェア・ドラ
イバに提供される。
【0041】その情報がハードウェア・ドライバに知ら
せられるとき、それとTIMの間の対応するソケットが開
かれる。より詳細に下で説明されるように、ハードウェ
ア・ドライバは、ユーザが画像を特定のテクスチャで描
画したいことを次いでTIMに知らせる。ハードウェア・
ドライバが、TIMがすでにテクスチャの格納されたコピ
ーを持っているかどうかを判断するためにTIMにソケッ
トを通して通信する。持っていれば、そのテクスチャを
使用してその多角形を描画するために、ハードウェア・
ドライバがコマンドをそれが接続されているコンピュー
タ・グラフィックス・ハードウェア装置に発する。持っ
ていなければ、TIMは、下に詳述するように、そのテク
スチャをそれ自分の割り当てられたシステム・ソフトウ
ェア記憶ロケーションか、またはその共有メモリ・ロケ
ーションまたはそれらそれぞれの一部分にコピーする。
【0042】ハードウェア・ドライバが新しいテクスチ
ャがユーザによって要求されたことをTIMに知らせると
き、テクスチャの優先度およびテクスチャのサイズも、
ソケットを通してTIMに知らされる。利用可能であるな
らば、TIMはテクスチャに対するテクスチャ識別子を提
供する。その時点で、テクスチャのサイズおよびそのテ
クスチャのMIPマップ・レベルの番号に依存して、その
テクスチャが、共用メモリ・ロケーションに格納される
かどうか、またはそのテクスチャがTIM自身の割当シス
テム・ソフトウェア記憶ロケーションに格納されるかど
うかの決定がなされる。この方式は、より詳細に下で説
明される。
【0043】新しいテクスチャのコピーを格納している
TIMの一部としてTIMの装置独立の部分が、テクスチャ・
データを、それが接続されたハードウェア装置によって
認識可能なフォーマットに割り当てる。発明の一つの実
施例において、テクスチャ・データは、ハードウェア装
置によって要求されるように、ブロックに割り当てられ
て、ハードウェア装置の局部的キャッシュ・メモリに一
度に一つのブロックずつダウンロードされる。
【0044】ハードウェア・コマンドは、テクスチャ・
マップを使用している画像を描画するために、グラフィ
ックス・ハードウェア・ドライバによってハードウェア
装置に出される。例えば、ハードウェア・コマンドは、
図6の中のバス16に沿って伝えられる。対応するテクス
チャ・マップが、対応するハードウェア装置の局部メモ
リにまだ格納されないならば、割込みが生じ、そしてTI
Mがその割込みを処理する。TIMが、画像を描画するため
に必要なテクスチャの部分を決定するためにハードウェ
ア装置と通信し、必要とされたテクスチャ部分で上書き
するためキャッシュ・メモリ内の適当なブロックを選
び、それから必要とされたブロックを局部的キャッシュ
・メモリの選ばれたロケーションに書く。割込みが生じ
るとき、ハードウェア装置の局部メモリのどのブロック
のテクスチャ・データを置き換えるかの決定は、ハード
ウェア装置内でのそのブロックの使用の履歴およびブロ
ックに格納されたテクスチャの優先度の両方に基づく。
テクスチャの優先順位は、外部ユーザによって規定され
た優先度および内部デフォルト優先度に基づく。内部的
には、新しくつくられた画像を描画するために必要とさ
れる1つまたは複数のテクスチャに最も高い優先度が与
えられ、詳細には下に記述されるように、最も最近使用
されたテクスチャに次に高い優先度が与えられる。この
ように、ユーザがテクスチャを必要としている新しい画
像をつくる時、そのテクスチャにその時、最も高い優先
度が与えられる。
【0045】図4は、システムがA、BおよびCとも分類さ
れる3つの別々のグラフィックス・ハードウェア装置16
4、166および168と通信する一つのホストコンピュータ
を含む、この発明の代替実施例のブロック図である。こ
れらのハードウェア装置のそれぞれは、異なる物理的パ
ラメーターと要求事項を含むことがありえる。3つの別
々のTIM 170、172と174(また、A,BとCとラベルを付け
られる)は、グラフィックス・ハードウェア装置164、16
6と168と通信する。各TIMは、それが接続されたグラフ
ィックス・ハードウェア装置の局部メモリ内でテクスチ
ャ・データの記憶を管理することに対して責任がある。
したがって、各TIMが対応するハードウェア装置の、局
部メモリの記憶容量、テクスチャ・フォーマット要求事
項、バス幅、バッファ・サイズ、レジスタ・サイズ、そ
の他のような物理的なパラメーターおよび要求事項の知
識を持つ。
【0046】各TIMが、各プロセスでつくられたテクス
チャが格納され、そしてTIM、グラフィックスAPI、およ
びそのプロセスのハードウェア・ドライバの間で共有さ
れる共用メモリ・ソフトウェア・ロケーションを含む。
より詳細に下で説明するように、TIM、グラフィックスA
PIおよびハードウェア・ドライバのそれぞれは、テクス
チャをアクセスするため共用メモリ・ロケーションに対
するポインタを格納する。共用メモリ方式は、相当なシ
ステム・メモリ空間を節約することができる。各TIM
は、テクスチャまたはテクスチャの一部分のコピーを格
納するそれ自身の専用システム記憶域を含む。これらの
記憶域は、図4に示される。
【0047】図4のシステムにおいて、TIM A 170が、画
像がハードウェア装置A 164で描画されるプロセスPR1と
PR2が必要とするテクスチャを管理する。同様に、TIM B
172が、画像がハードウェア装置B 166によって描画さ
れるプロセスPR3とPR4が必要とするテクスチャを管理す
る。最後に、TIM C 174が、画像がハードウェア装置168
によって描画されるプロセスPR5のためにテクスチャを
管理する。
【0048】一つのTIM 176が、複数の基礎をなすハー
ドウェア装置164、166と168の局部メモリにおけるテク
スチャ・データ記憶を管理する、この発明のシステムの
別の代替実施例が、図5に示される。TIM 176は、装置独
立の部分178と装置に依存する部分180を含む。装置独立
のTIM 176の部分178は、テクスチャ・メモリを管理し、
各ハードウェア・ドライバとのソケットによる通信を制
御し、そしてハードウェア装置の割り込みが生じる時、
テクスチャ・データのどのブロックがハードウェア装置
によって必要とされるか、およびハードウェア装置の局
部メモリ内のテクスチャ・データのどのブロックが上書
きされなければならないかを決定するルーチンを実行す
る(これが転じて、装置に依存するルーチンを呼ぶ)。
TIM 176の装置に依存する部分182、184および188は、基
礎をなすハードウェア装置164、166および168のそれぞ
れから読み出しこれに書き込む。特定のハードウェア装
置内に割込みが生じるとき、TIMの対応する装置依存の
部分が、ハードウェア装置からデータを読みとり、TIM
の装置独立の部分と通信する。次いでルーチンが、ハー
ドウェア装置によって必要とされるテクスチャ・データ
を決定するために実行される。次いで、ハードウェア装
置の局部メモリ内のテクスチャ・データのどのブロック
が上書きされねばならないか決定するために別のルーチ
ンが実行される。次いで、TIMの対応する装置に依存す
る部分内のルーチンが、新しいテクスチャ・データをそ
れが接続されたハードウェア装置の局部メモリ内の適当
なロケーションに書き込む。
【0049】この発明のデーモン(TIM)が動作するこ
とができる特定のテクスチャマッピング・コンピュータ
・グラフィックス・システム・ハードウェア装置の例
を、図6ないし27を参照して詳細に説明する。ハードウ
ェア装置の説明に続いて、この発明のソフトウェア・デ
ーモンの動作の詳細な説明を行う。下に説明する例のハ
ードウェア装置に関する装置固有のパラメーターを含む
発明のソフトウェアの動作の例が、提供される。そのよ
うな装置固有の説明は、例としてものにすぎず、この発
明のソフトウェアは、画像を描画するために必要なテク
スチャ・マップの部分を一時的に格納する局部的なハー
ドウェア・メモリを有する多数の異なるハードウェア装
置で動作することができる。。ハードウェア装置がその
時局部的なハードウェア装置メモリに格納されていない
テクスチャまたはその一部分を必要とするとき、割込み
が生じ、必要とされるテクスチャまたはテクスチャのい
ち部分をダウンロードするために、発明のソフトウェア
・デーモンによって扱われる。発明のソフトウェアは、
ホストコンピュータのシステム・プロセッサ上で走り、
ホストコンピュータのシステム・メモリに格納される。
そのホストコンピュータは、グラフィックス・ハードウ
ェア装置に接続されている。
【0050】II. ハードウェア装置の例 A.ハードウェア装置システム概要 図6は、発明のソフトウェアを使用することができるグ
ラフィックス・システム・ハードウェア装置の一つの実
施例のブロック図である。装置は、テクスチャ・データ
をローカルに格納するためのキャッシュ・メモリを持つ
テクスチャマッピング・ハードウェアを含む。ボードお
よびチップの数、それらが分割される態様、バス幅、お
よびデータ転送速度に関して示された実施例は単に例と
してのものであることが、理解されなければならない。
多数の他の実施例を使うことができる。図に示すよう
に、システムは、フロントエンド(前縁)ボード10、テ
クスチャマッピング・ボード12およびフレーム・バッフ
ァ・ボード14を有する。フロントエンド・ボードは、52
ビットバス16を通してホストコンピュータ15と通信す
る。フロントエンド・ボードは、描画すべきプリミティ
ブをホストコンピュータからバス16を通して受け取る。
プリミティブは、プリミティブが三角形である時の頂点
についてのような、プリミティブの部分についてのx,y,
zベクトル座標データ、R,G,B色データおよびテクスチャ
S,T座標によって指定される。3次元でプリミティブを
表現するデータが、次いでフロントエンド・ボード10に
よって、85ビットのバス18を通してテクスチャ・マッピ
ング・ボード12およびフレーム・バッファ・ボード14に
提供される。テクスチャマッピング・ボードが、プリミ
ティブを表現するスクリーン・ディスプレイ・ピクセル
を計算するために受け取られたプリミティブ・データを
補間し、そして、各プリミティブ・ピクセルについて対
応する結果のテクスチャ・データを判断する。結果のテ
クスチャ・データが、フレーム・バッファ・ボードに図
6に一つの母線として示される5つの55ビット・バス28を
通して提供される。
【0051】フレーム・バッファ・ボード14は、ディス
プレイ・スクリーンの上で各プリミティブ(基本要素、p
rimitive)を表現するピクセルを計算するためそして各
ピクセルのための対象物の色の値を決定するために、フ
ロントエンド・ボード10から受け取られたプリミティブ
・データを補間する。フレーム・バッファ・ボードが、
各ピクセルのために結果として生ずる画像のR,G,B値を
生成するために、次いで対象物の色の値をテクスチャマ
ッピング・ボードから提供された結果のテクスチャ・デ
ータと、ピクセルごとに結合する。テクスチャ・マップ
されたプリミティブを表す結果として生ずる画像を画面
上で表示するよう、ディスプレイ・スクリーン(図示し
ない)のピクセルを制御するため、各ピクセルのための
R,G,B色調節信号が、R,G,B線29にそれぞれ提供される。
【0052】フロントエンド・ボード10、テクスチャマ
ッピング・ボード12とフレーム・バッファ・ボード14が
それぞれパイプラインされ、複数のプリミティブについ
て同時に動作する。テクスチャマッピングおよびフレー
ム・バッファ・ボードがフロントエンド・ボードによっ
て提供されるプリミティブについて動作する間、ントエ
ンド・ボードが、ボード12と14のパイプラインが満杯に
なるまで、新しいプリミティブについて動作し提供し続
ける。
【0053】フロントエンド・ボード10は、分配器チッ
プ0、3次元(3-D)幾何アクセラレータ(加速器)チッ
プ32A、32Bおよび32C、2次元(2-D)幾何アクセラレータ
・チップ34、および集信装置(コンセントレータ)チッ
プ36を含む。分配器チップ30は、X,Y,Z座標およびカラ
ーのプリミティブ・データをバス16を通してホストコン
ピュータから受け取り、3ーDのプリミティブ・データを3
ーD幾何アクセラレータ・チップ32A、32B、および32Cに
均等に分配する。このように、3つのグループのプリミ
ティブが同時に処理されるので、システムの帯域幅が増
大する。データが、40ビットのバス38Aを通して三次元
の幾何加速器チップ32Aおよび32Bに提供され、40ビット
のバス38Bを通してチップ32Cに提供される。バス38Aお
よび38Bの両方が、60MHZの速度でデータを転送し、そし
て、2つの三次元の幾何アクセラレータ・チップを支援
する十分なバンド幅を提供する。2ーDのプリミティブ・
データは、44ビットのバス40を通して、2ーD幾何アクセ
ラレータ・チップ34に、40MHZの速度で提供される。
【0054】各3-D幾何アクセラレータ・チップが、対
応するスクリーン空間座標に受け取られるプリミティブ
を規定するx,y,z座標を変形させ、スクリーン空間座標
のための対象物のR,G.B値およびテクスチャのS、T値を
判断し、プリミティブ四辺形を三角形に分解し、そし
て、各三角形を規定する三角形面方程式を計算する。ス
クリーン内に複数のウィンドウが表示されるか、また
は、プリミティブの一部がディスプレイ・スクリーン上
で表現される景観ボリュームを越えて広がるときに、結
果として生ずる画像の正確なスクリーン表示を確保する
ために、各三次元の幾何アクセラレータ・チップも、景
観クリッピング動作を実行する。3-D幾何アクセラレー
タ・チップ32A、32Bおよび32Cからの出力は、それぞれ4
4ビットのバス42A,42Bおよび42Cを通して60MHZの速度で
集信チップ36に提供される。2次元の幾何アクセラレー
タ・チップ34は、46ビットのバス44を通して45MHZの速
度で集信チップ36に出力データを提供する。集信チップ
36は、3-D幾何アクセラレータ・チップ32AーCから受け
取られた三次元のプリミティブ出力データを結合し、そ
れらが分配器チップ30による分配に先立ち持っていたも
との順序にプリミティブを再順序付けし、そして、バス
18を通して、結合されたプリミティブ出力データをテク
スチャマッピングおよびフレーム・バッファ・ボードに
提供する。
【0055】テクスチャマッピング・ボード12は、テク
スチャマッピング・チップ46、およびキャッシュ・メモ
リとして準備をされるのが好ましい局部メモリ48を含
む。好ましい実施例において、キャッシュ・メモリは、
後述の理由で、複数のSDRAM(同期ダイナミックRA
M)チップから形成される。より詳細に下で説明するよ
うに、キャッシュ・メモリ48は、フレーム・バッファ・
ボードで描画されていたプリミティブと関連するテクス
チャMIPマップ・データを格納する。テクスチャMIPマッ
プ・データは、ホストコンピュータ15の中のメイン・メ
モリ17からバス40を通り、2-D幾何アクセラレータ・チ
ップ34を通り、24ビットのバス24をダウンロードされ
る。
【0056】テクスチャマッピング・チップ46は、ディ
スプレイ・スクリーン上で描画されるべきプリミティブ
を表わすプリミティブ・データをバス18を通して続いて
受け取る。上で示したように、三次元の幾何アクセラレ
ータ・チップ32A-Cから提供された22のプリミティブ
は、点、線および三角形を含む。テクスチャマッピング
・ボードは、点または線のテクスチャマッピングを実行
しないで、三角形プリミティブだけに作用する。三角形
プリミティブを表現するデータは、少くとも一つの頂
点、少くとも一つの頂点の対象物のカラーR、G、Bの値
のためのx、y、zの対象物ピクセル座標、および三角形
の少くとも一つの頂点および面方程式に対応するテクス
チャ・マップの部分のS、Tの座標を含む。テクスチャマ
ッピング・チップ46が、対象物ピクセルのz座標および
対象物のカラーR、G、Bの値を無視する。チップ46が、
x,yピクセル座標を補間し、プリミティブを表現する各
x,yスクリーン・ディスプレイ・ピクセルに対応するSお
よびT座標を補間する。各ピクセルのために、テクスチ
ャマッピング・チップは、テクスチャMIPマップのそれ
に対応する部分をキャッシュ・メモリからアクセスし、
そしてピクセルのため複数のテクセルの加重平均を含む
ことがありえる結果のテクスチャ・データを計算する。
【0057】一つの典型的な実施例において、キャッシ
ュは256x256テクセルの64のブロックを格納する。先の
技術システムのテクスチャマッピング・ハードウェアに
使用された局部メモリと違って、この発明のキャッシュ
・メモリは、大きいテクスチャについてのように描画中
のプリミティブにマップするテクスチャのMIPマップの
全シリーズを格納することはない。さらに、先行技術と
違ってシステム、キャッシュ・メモリが、描画中のプリ
ミティブにマップする複数のテクスチャのためのMIPマ
ップのシリーズを格納することはない。むしろ、キャッ
シュ・メモリは、任意の一つの時には、実際に、現在描
画中のプリミティブを描画することの使用されるMIPマ
ップのシリーズの特定の部分だけを格納する。したがっ
て、ほとんどの適用のために、描画中の画像のための完
全なテクスチャ・データの一部だけが、任意の一時点で
キャッシュ・メモリに格納される。
【0058】各テクスチャのためのMIPマップの完全な
シリーズが準備され、ホストコンピュータ15の中のメイ
ン・メモリ17に格納される。この発明のTIMは、ホスト
コンピュータのプロセッサ上で走る。描画中のプリミテ
ィブの各ピクセルについて、テクスチャマッピング・チ
ップ46が、テクスチャMIPマップの対応する1つまたは
複数のテクセルが現にキャッシュに存在するかどうか判
断するために、キャッシュ・メモリ48のディレクトリを
アクセスする。アクセスの時点で対応するテクセルがキ
ャッシュ・メモリに格納されるならば、キャッシュ・ヒ
ットが生じ、テクセルがキャッシュから読みとられ、フ
レーム・バッファ・ボードに渡される結果のテクスチャ
・データを計算するためにテクスチャマッピングにチッ
プ46によって処理される。
【0059】しかし、テクスチャマッピング・チップ46
によってアクセスされるとき、プリミティブ・ピクセル
について対応するテクセルがキャッシュ・メモリに格納
されていないならば、キャッシュ・ミスが生じる。キャ
ッシュ・ミスが生じるとき、プリミティブを描画するた
めに必要とされたテクスチャMIPマップ・データの部分
が、ホストコンピュータ15の中のメイン・メモリ17から
TIMを使用してキャッシュ・メモリ48に、おそらくは前
に格納されたいくつかのデータを置き換えてダウンロー
ドされる。しかし、描画中のプリミティブのMIPマップ
の全シリーズをダウンロードする従来のテクスチャマッ
ピング・システムと異なり、この発明のTIMは、プリミ
ティブを現在描画するのに必要なMIPマップのシリーズ
の部分だけかまたはその現在描画された部分だけをダウ
ンロードする。より詳細に下で説明されるように、キャ
ッシュ・ミスが生じるとき、ホストコンピュータ15のテ
クスチャ割込みマネージャを開始するためにテクスチャ
マッピング・チップ46によって割込み制御信号が生成さ
れる。割込み制御信号が、線94を通して分配器チップ30
に提供され、そこから線95を通してホストコンピュータ
に割込み信号が提供される。
【0060】要求されたテクスチャ・データが、TIMに
よってそのメイン・メモリから読み出され、フロントエ
ンド・ボードとテクスチャマッピング・チップを通って
三次元プリミティブ描画パイプラインをバイパスして、
バス24を通してテクスチャマッピング・ボード48にダウ
ンロードされる。このように、キャッシュ・ミス割込み
が生じるとき、フロントエンド・ボードが、三次元のプ
リミティブに動作し続けることができ、キャッシュ・ミ
スを引き起こしたプリミティブに関連するテクスチャ・
データがメイン・メモリ17からダウンロードされている
間に、バス18を通してテクスチャマッピング・チップお
よびフレーム・バッファ・ボードに、出力プリミティブ
・データを提供する。従来のテクスチャマッピング・シ
ステムと対照的に、テクスチャ・データのテクスチャマ
ッピング・ハードウェアへのダウンロードは、三次元の
プリミティブ・パイプラインのフラッシングを必要とせ
ず、システムのバンド幅および性能を向上させる。
【0061】各ピクセルのための結果のテクスチャ・デ
ータは、テクスチャマッピング・チップ46によってフレ
ーム・バッファ・ボードに5つのバス28を通して提供さ
れる。5つのバス28は、フレーム・バッファ・ボードに
設けられた5つのフレーム・バッファ・コントローラ・
チップ50A、50B、50C、50Dおよび50Eにそれぞれ結合さ
れ、フレーム・バッファ・コントローラ・チップに、並
列に結果のテクスチャ・データを提供する。フレーム・
バッファ・コントローラ・チップ5OA-Eは、関連するVRA
M(ビデオRAM)チップ51A-Eのグループにそれぞれ結
合される。フレーム・バッファ・ボードは、さらに4つ
のビデオ・フォーマット・チップ、52A、52B、52Cおよ
び52DならびにRAMDAC(ランダム・アクセス・メモリ・
ディジタル/アナログ変換器)54を含む。フレーム・バ
ッファ・コントローラ・チップは、ディスプレイ・スク
リーンの異なる、重ならないセグメントを制御する。各
フレーム・バッファ・コントローラ・チップが、フロン
トエンド・ボードからのプリミティブ・データをバス18
を通して受け取り、バス28を通してテクスチャマッピン
グ・ボードからの結果のテクスチャマッピング・データ
を受け取る。フレーム・バッファ・コントローラ・チッ
プが、そのそれぞれのセグメントにおけるプリミティブ
を表現するスクリーン・ディスプレイのピクセル座標、
および各ピクセル座標のための対応する対象物R、G、B
のカラー値を計算するために、プリミティブ・データを
補間する、結果のテクスチャデータが、テクスチャマッ
ピング・ボードから提供されるプリミティブ(すなわ
ち、三角形)について、ピクセルごとに、フレーム・バ
ッファ・コントローラ・チップが、対象物のカラー値お
よび結果のテクスチャ・データを結合し、ディスプレイ
・スクリーン上で表示される各ピクセルのための最終的
なR、G、B値を生成する。
【0062】対象物とテクスチャのカラー値が結合され
る態様は、いくらかの異なる方法で制御することができ
る。例えば、置換モードにおいて、対象物のカラー値
が、単にテクスチャのカラー値で置き換えられることが
でき、テクスチャのカラー値が、ピクセルを描画するの
に使用される。代わりに、変調モードにおいて、対象物
とテクスチャのカラー値を一緒に掛けて、ピクセルのた
めの最終的なR、G、B値を生成することができる。さら
に、対応するテクスチャ・カラー値が対象物のカラー値
と組み合わせられる方法を規定する比率を指定する色調
節ワードを各テクセルについて格納することができる。
結果の色調節ワードを、各ピクセルに対応する結果のテ
クセル・データのために決定し、コントローラ・チップ
が、各ピクセルの最終的なR、G、B値を決定するため
に、対応する結果の調整ワードによって指定された比率
を使用することができるよう、バス28を通してフレーム
・バッファ・コントローラ・チップに提供することがで
きる。フレーム・バッファ・コントローラ・チップ5OA-
Eによって生成された、各ピクセルのためのR、G、B値を
含む結果の画像ビデオ・データは、対応するVRAMチップ
51AーEに格納される。VRAMチップ51AーEの各グループが、
8つのVRAMチップを含み、40のVRAIMチップが1つのフレ
ーム・バッファ・ボード上に位置する。が接続されるビ
デオ・フォーマット・チップ52A-Dのそれぞれが異なる
組の10のVRAMチップに接続され、データを受け取る。ビ
デオ・データは、VRAMチップから直列にシフト出力さ
れ、64ビットのバス58A、58B、58Cおよび58Dを通して4
つのビデオ・フォーマット・チップ52A、52B、52Cおよ
び52Dに33MHZの速度でそれぞれ提供される。ビデオ・フ
ォーマット・チップが、RAMDACによって扱われることが
できるようにビデオ・データをフォーマットし、フォー
マットされたデータを32ビット・バス60A、60B、60C
および60Dを通してRAMDAC 54に33MHZの速度で提供す
る。RAMDAC 54が、転じてディジタル色データをアナロ
グR、G、B色調節信号に変換し、各ピクセルのためのR、
G、B制御信号をR、G、B制御線29にそってスクリーン・
ディスプレイに提供する。
【0063】一つの実施例において、テクスチャマッピ
ング・ボード12およびフレーム・バッファ・ボード14上
のハードウェアが、繰り返されるので、ある種のプリミ
ティブ描画作業を複数のプリミティブ上で平行して実行
することができ、システムのバンド幅を増やすことがで
きる。そのような代替実施例のハードウェア装置の例
が、この発明のTIMを使用することができるコンピュー
タ・グラフィックス・ハードウェア装置のブロック図で
ある図7に示される。特定のハードウェア装置のある種
のハードウェアが繰り返されている。図7のシステム
は、4つの三次元の幾何アクセラレータ・チップ32A、32
B、32Cおよび32D、それぞれキャッシュ・メモリ48Aおよ
び48Bと関連する2つのテクスチャマッピング・チップ46
Aおよび46B、およびそれぞれ関連するグループのVRAMチ
ップを有する10のフレーム・バッファ・チップ5OA-50J
を含む。図7のシステムの動作は図6のシステムのもの
とにている。図7の実施例のハードウェアの多重化が、
システムのバンド幅を増大させるある種のプリミティブ
描画動作を複数のプリミティブについて平行して実行す
ることができる。
【0064】B.テクスチャマッピング・チップの概要 テクスチャマッピング・チップ46のブロック図が図8に
示される。チップ46が、対象物およびテクスチャ・プリ
ミティブ・データをフロントエンド・ボードから64ビッ
トのバス18を通して受け取るフロントエンド・パイプラ
イン・インターフェース60を含む。テクスチャマッピン
グ・チップで操作された三角形プリミティブが52個の3
2ビット・ディジタル・ワードによって規定されるが、
異なる長さのワードによって規定されてもよい。パイプ
ライン・インターフェースは、一組のマスター・レジス
タおよび一組の対応するスレーブ・レジスタを含む。レ
ンダリングの間、マスター・レジスタは、順にプリミテ
ィブを規定するデータの52のディジタル・ワードで満た
される。次いで、適当なレンダリング・コマンドを受領
すると、データがパイプライン・インターフェースのス
レーブ・レジスタにてシフトされ、パイプライン形態
で、マスター・レジスタが別のプリミティブを表すデー
タで満たされる。バス18を通して提供されたプリミティ
ブ・データは、少なくとも一つの三角形頂点のための
x、y、zベクトル座標データ、S、Tテクスチャ座標およ
びR、G、B対象物色データ、ならびに三角形の面方程式
を表現するデータを含む。上で示したように、テクスチ
ャマッピング・チップは、対象物ピクセルz座標および
対象物のカラーR、G、B値を無視し、そして、フロント
エンド・パイプライン・インターフェース60における他
のデータだけを格納する。
【0065】パイプライン・インターフェース60のスレ
ーブ・レジスタは、バス62を通してパラメーター補間回
路回路64にプリミティブ・データを転送する。パラメー
ター補間回路回路64が、三角形を表現する各ディスプレ
イ・スクリーン・ピクセル座標について、ピクセルにマ
ップするテクスチャ・マップのためのS、Tテクスチャ・
マップ座標、そしてSおよびTの勾配値(ΔS、ΔT)を決
定するために各プリミティブ三角形を補間する。Sおよ
びTの勾配は、隣接ピクセルの間のSおよびTの座標変化
にそれぞれ等しく、以下に説明する方法で計算される。
【0066】図9に示すパラメーター補間回路回路64
は、すべて直列に接続したエッジ・ステッパー66、FIFO
(「先入れ先出し」)バッファ68、スパン・ステッパー
70、および勾配および遠近法修正回路72を含む。エッジ
・ステッパーが、三角形頂点の一つのx、yピクセル座標
で始まり、三角形面(plane)方程式を利用して、三角形
の輪郭をステップさせ三角形の輪郭を規定するピクセル
座標を決定する。各ピクセル座標について、テクスチャ
・マップのどのテクセルが各ディスプレイ・スクリーン
・ピクセルの座標に対応するかを識別するために、テク
スチャ・マップのSおよびT座標が、三角形頂点のS、T値
に基づいて決定される。一時的に、ピクセルおよびテク
セル座標がFIFOバッファに格納され、それからスパン・
ステッパーに提供される。三角形の輪郭に沿った各x、y
ピクセル位置でスパン・ステッパーが、三角形の対応す
るスパンにわたって、スパンに沿っての各ピクセル位置
のS、Tテクセル座標を決定する。
【0067】テクスチャのためのMIPマップのシリーズ
の一つにおける一つのテクセルにピクセルが、直接(1
対1対応で)マップしなければ、ディスプレイ・スクリ
ーン・ピクセルのそれぞれのSおよびT座標は、整数部分
と端数部分を持つことがある。上で説明したように、テ
クスチャ・マップにマップされるとき、各ディスプレイ
・スクリーン・ピクセルは、テクスチャのためのMIPマ
ップのシリーズの一つにおける複数のテクセルの間にあ
ることがありえ、さらに、そして、シリーズの隣接する
(大きさにおいて)MIPマップの間にあることがありえ
る。
【0068】勾配および遠近法の修正回路72が、各ディ
スプレイ・スクリーン・ピクセルのための勾配値Sおよ
び(ΔS、ΔT)を決定する。一つの実施例において、勾
配ΔSが、勾配ΔSx、および勾配ΔSyの大きいものに選
ばれる。勾配ΔSxは、座標xがディスプレイ・スクリー
ン上の隣接ピクセルの間で変わるときのテクスチャマッ
プにおけるS座標における変化であり、勾配ΔSyは、座
標yが隣接のピクセルの間で変わるときの変化である。
勾配ΔTも同様に計算される。ディスプレイ・スクリー
ン・ピクセルについての勾配ΔS、ΔTは、対応するS、T
次元におけるディスプレイ・スクリーン上の一つのピク
セルの変化について、テクスチャ・マップ内の座標位置
における変化の割合を示し、どのMIPマップ(1つまた
は複数)が、そのピクセルに対する結果のテクスチャ・
データを提供するためにアクセスされなければならない
かを決定するのに使用される。たとえば(ディスプレイ
・スクリーンのピクセルについて2に等しい勾配は、ピ
クセルが4つの(すなわち、下に説明するように22)テ
クセルにマップされることを示すので、大きさにおいて
2だけベース・マップ(例えば、図1のマップ102)から
縮小されたMIPマップが、そのピクセルのための結果の
テクスチャ・データを提供するために、アクセスされな
ければならない。このように、勾配が増加するにつれ
て、ピクセルのための結果のテクスチャ・データを提供
するためにアクセスされるMIPマップのサイズは、減ら
される。
【0069】一つの実施例において、勾配が、そのピク
セルのΔSx、ΔSy、ΔTxおよびΔTyのうち最も大きいも
のに等しくなるように、ΔSおよびΔTの大きいものと等
しい一つの勾配が、各ピクセルのために適当なMIPマッ
プを選ぶために使用される。しかし、勾配は、それらの
値の最も小さいもの、それらの値の平均その他の組み合
わせを選ぶなど異なる形態でも選ぶことができることが
理解されなければならない。S、T座標の一つだけにおけ
る変化の割合を示す一つの勾配が選ばれるから、勾配の
二乗が、対応するピクセルにマップするテクセルの数を
表現する。
【0070】勾配から、パラメーター補間回路が、ピク
セルがマップする最も近いマップおよびそのマップから
の距離を判断する。その情報が、最も近いマップの全マ
ップ数として、そしてマップ小数値において最も近いマ
ップからのピクセルの距離を示す小数値として提供され
る。
【0071】再び図8のテクスチャマッピング・チップ
のブロック図を参照すると、パラメーター補間回路回路
64から出力されたテクセル・データが、線70を通してタ
イラー(画面分割器)兼境界チェッカー72に提供され、
そこで、テクセル・データによって指定されたテクスチ
ャ・マップのそれぞれの位置に最も近い4つのテクセル
のアドレスが判断され、そして、それぞれがテクスチャ
の境界内にあるかどうか決定するためにチェックされ
る。テクセル・データは、補間されたS、T座標(整数と
小数値)、およびマップ番号およびマップ断片を含む。
タイラーは、パラメーター補間回路64で計算したSおよ
びT座標の整数部分を使用し、それぞれの整数部分に1
を加えて四つの最も近いテクセルのアドレスを生成す
る。境界チェッカーが、次いでこれらの4つのテクセル
のいずれかのためのS、T座標がテクスチャ・マップの境
界の外側に落ちるかどうか判断する。ディスプレイ・ス
クリーン・ピクセルがテクスチャ・マップの境界の外側
に落ちるS、T座標位置にマップするならば、いくつかの
テクスチャマッピング方式の一つが、結果のテクスチャ
・データがそのピクセルのために生成されることになっ
ているかどうか、およびどのようにそのデータが生成さ
れるべきかを決定するために実行される。そのような方
式の例は、ラッピング(テクスチャの繰り返し)、ミラ
ーリング(テクスチャのミラー画像の繰り返し)、テク
スチャマッピングを境界の外側にそらすこと、および同
一調の色を境界の外側に表示することを含む。
【0072】その境界を越えたテクスチャ・マップのロ
ケーションにピクセルをマップするのを可能にする能力
は、テクスチャが、対象物プリミティブにマップされる
態様に融通性を提供する。例えば、テクスチャが対象物
の複数の部分にマップされるような繰り返し形態で対象
物にテクスチャをマップするのが望ましいことがあ
る。。たとえば、テクスチャが、[0、0]含むから(10,
10)含まずにわたるS、T座標を持つと規定されるなら
ば、ユーザが、S、T座標、[10, 10]含むないし(20, 20)
含まずにマップするために対象物のある部分を指定して
もよい。角括弧でくくられた内包座標の表記法は、それ
らの座標が対象物にマップされるテクスチャの部分に含
まれることを示し、丸括弧の非内包座標の表記法は、対
象物がそのS、T座標の前までだけにマップし、丸括弧の
非内包座標は含まないことを示す。折り返し(wrappin
g:ラッピング)機能が、テクスチャの境界の外側に落
ちるS、T座標のために選ばれるならば、S、T座標[10、1
0]ないし(20、20)は、S、T座標[0、0]ないし(10、1
0)のテクセルにそれぞれマップする。
【0073】上で説明したように、一つのピクセルのた
めの2次元テクスチャ・マップからの結果のテクスチャ
・データは、8つのテクセルの組合せの結果すなわち最
も近い2つのMIPマップにおける最も近い4つのテクセル
であることがある。結果のテクセル・データを生成する
ために8つのテクセルが、結合されるいくらかの方法が
ある。例えば、平均算出が必要でなくなるよう最も近い
マップにおける最も近くの一つのテクセルを選ぶことが
できる。代わりに、最も近い二つのマップのそれぞれに
おける最も近くの一つのテクセルを勾配の値に基づいて
一緒に平均することができる。そのような方式は、最も
近い八つのテクセルが平均されるときのように正確にテ
クスチャをマップしない。
【0074】ハードウェア装置の一つの実施例におい
て、3線形の(trilinear,3点直線)補間が支援され、一
つのピクセルのための結果のテクスチャ・データが、8
つのテクセルの加重平均として計算されることがある。
そこからテクスチャ・データをアクセスする最も近い二
つのMIPマップを識別するために、S、Tの変化の割合を
表わす勾配が使用され、そして各マップ内の最も近い4
つのテクセルがアクセスされる。各マップ内の4つのテ
クセルの平均は、ディスプレイ・スクリーン・ピクセル
がマップするMIPマップの位置のS、T座標にどのテクセ
ルが最も近いかに基づいて重み付けられる。ピクセルの
SおよびT座標の端数部分が、この重み付けを実行するた
めに使用される。次いで最も近い二つのMIPマップのそ
れぞれから平均値が、勾配の値に基づいて重み付けられ
る。小数値は、この重み付け処理に使用する勾配から計
算される。例えば、3の勾配は、それぞれ2と4の勾配に
対応するMIPマップの間の中間である。
【0075】テクセル補間プロセスは、テクセル補間回
路76によって実行される。各ディスプレイ・スクリーン
・ピクセルのためのSおよびT座標の端数の部分が、パラ
メーター補間回路からタイラー/境界チェッカーを通
り、線74によってテクセル補間回路76に提供される。端
数の部分が、結果のテクセル・データを計算するとき、
複数のテクセルの補間の間に各テクセルに与えられる重
みを決定するためにテクセル補間回路によって使用され
る。
【0076】上で説明したように、描画中のプリミティ
ブと関連するテクスチャMIPマップは、ローカルにキャ
ッシュ・メモリ48(図11)に格納される。一つの実施例
において、キャッシュは充分に連想記憶である。キャッ
シュは、4つのインタリーブに分割された8つのSDRAMチ
ップを含み、各インタリーブに2つのSDRAMチップがあ
る。各インタリーブ内のSDRAMチップを同時にアクセス
することができるように、各インタリーブに一つが対応
する4つの別々のコントローラが備えられる。各SDRAMチ
ップが、メモリの2つの別個のバンクを含み、ここで
は、従来のDRAMにおいてデータを2つの異なるページか
ら(すなわち2つの異なる行アドレスから)アクセスす
るときに一般的な再ページ割付のペナルティーを負うこ
となく、メモリの異なるページが連続的な読み出しサイ
クルでアクセスされることができる。
【0077】テクスチャ・データ(すなわち、MIPマッ
プ)は、256x256のテクセル・ブロックのデータに分割
される。キャッシュ・メモリは、64のブロックのデータ
を一度に格納することができる。各ブロックが、ブロッ
クをユニークに識別する関連したブロック・タグを持
つ。キャッシュは、現在キャッシュに格納されているデ
ータのブロックに対応するブロック・タグを格納するキ
ャッシュ・ディレクトリ78を含む。より詳細に下で説明
するように、各ブロック・タグは、データのブロックが
表現する特定のテクスチャを識別するテクスチャ識別子
(テクスチャID)、データのブロックが表現するマップ
のテクスチャ・シリーズ内で特定のMIPマップを識別す
るマップ番号、および特定のマップ内でデータのブロッ
クのロケーションを識別する高次のSおよびT座標を含
む。キャッシュ・ディレクトリ内のブロック・タグの物
理的なロケーションは、キャッシュ・メモリ内の対応す
るデータのブロックのロケーションを表現する。
【0078】2以上のテクスチャからのMIPマップが、
異なるテクスチャを見分けるテクスチャ識別子とともに
キャッシュ・メモリに同時に格納されることがある。あ
るMIPマップは、256x256より少ないテクセルしか含ま
ず、したがってデータの全ブロックを消費しない。例え
ば、一連のMIPマップにおけるより小さいマップまたは
小さいテクスチャのための大きいマップでさえ、256x25
6テクセルを越えることはない。メモリ空間を効率的に
利用するために複数のマップの部分が、各マップ部分を
ブロック内のサブブロックに割り当てて、テクスチャ・
データの一つのブロックの格納されることがある。一つ
のブロック内に格納された複数のマップのそれぞれが、
マップのブロック内のロケーションを識別する関連する
サブテクスチャ識別子(ID)を持つ。
【0079】レンダリングの間、タイラー/境界チェッ
カー72が、テクスチャ・データのブロックのために描画
すべきピクセルにマップするキャッシュ読みとりタグを
生成する。キャッシュ・ブロック・タグとキャッシュ読
みとりタグが生成される態様をより詳細に下で説明す
る。タグは、テクスチャのテクスチャIDを表わす8ビッ
トを含む23ビットのフィールドであり、1ビットがテク
スチャ・データのマップ番号を決定するのに使用され、
7ビットがテクスチャ・データの高次のSおよびT座標を
決定するのに使用される。キャッシュ・ディレクトリ78
が、タイラー/境界から提供されるキャッシュ読み取り
タグをディレクトリに格納されたブロック・タグと比較
して、レンダリングに使用されるテクスチャ・データの
ブロックがキャッシュ・メモリにあるかどうか判断す
る。描画すべきプリミティブにマップするテクスチャ・
データのブロック・タグがキャッシュ・ディレクトリに
格納されている(すなわち、ヒット)ならば、キャッシ
ュ・ディレクトリが、ヒット・タグに対応するキャッシ
ュのテクスチャ・データのブロックの物理的なロケーシ
ョンを示すブロック索引を生成する。ブロック索引の計
算のより詳細を下で説明する。また、テクセル・アドレ
スが、タイラー/境界チェッカー72によってキャッシュ
から読みとられる各テクセルについて生成され、ブロッ
ク内のテクセルのロケーションを示す。テクセル・アド
レスは、より大きいサイズのマップの補間されたS、T座
標の下位アドレス・ビットを含み、より小さいサイズの
マップのために後述するアルゴリズムに基づいて計算さ
れる。ブロック索引およびテクセル・アドレスは、キャ
ッシュ内のテクセルのロケーションを示すキャッシュ・
アドレスを含む。
【0080】より詳細に下で説明されるように、テクセ
ルが4つのキャッシュ・インタリーブのどれに格納され
るかを決定するために、SおよびT座標のLSBがデコ―ド
され、キャッシュのアドレスされたロケーションに格納
されたテクセル・データを読みとるために、キャッシュ
・アドレスの残っているビットが、線84を通してコマン
ドと一緒にテクセル・キャッシュ・アクセス回路82に提
供される。
【0081】キャッシュ読みとりタグが、キャッシュ・
ディレクトリ78に格納されたブロック・タグのいずれに
も一致しないならば、ミスが生じ、そして、キャッシュ
・ディレクトリ78が、線94(図4)を通してフロントエ
ンド・ボードの上の分配器チップ30に割込み制御信号を
生成する。分配器チップ30が、線95を通してホストコン
ピュータ15に割込みを生成する。割込みに応答してTIM
は、キャッシュ・ディレクトリからミスしたブロック・
タグを読みとり、フロントエンド・ボード10およびテク
スチャマッピング・チップ46における三次元のプリミテ
ィブ・パイプラインをバイパスする態様で、キャッシュ
・メモリにテクスチャ・データの対応するブロックをダ
ウンロードする。TIMからダウンロードされたテクスチ
ャ・データが、バス24により、テクセル・ポート92(図
8)を通ってテクセル・キャッシュ・アクセス回路82に
提供される。
【0082】回路82は、キャッシュ・メモリを形づくる
SDRAMに、データを書き込む。キャッシュ・ミスが生じ
るとき、テクスチャマッピング・チップは、ミスが生じ
たプリミティブの処理を続ける前に、新しいテクスチャ
・データがダウンロードされるのを待つ。しかし、キャ
ッシュ読取りに続くパイプラインのステージは、ミス・
プリミティブに先立ち受け取られたプリミティブの処理
を続ける。同様に、キャッシュ読取りに先行するパイプ
ラインのステージも、パイプラインがキャッシュ読取り
動作の後にいっぱいにならなければ、そしていっぱいに
なるまで、新しいテクスチャ・データのダウンロードを
待ちながら、プリミティブの処理を続ける。
【0083】レンダリングの間、フレーム・バッファ・
ボード14のパイプラインの後のステージは、プリミティ
ブに対応するテクスチャ・データがテクスチャマッピン
グ・ボードから受け取られるまで、プリミティブの処理
を続けない。したがって、キャッシュ・ミスが生じ、そ
して、テクスチャマッピング・チップが新しいテクスチ
ャ・データがダウンロードされるのを待つとき、同様
に、フレーム・バッファ・ボード14は、結果のテクスチ
ャ・データがテクスチャマッピング・チップから提供さ
れるのを待つ。テクスチャマッピング・チップと同様
に、テクスチャマッピング・データを受け取るステージ
に続くパイプラインのステージは、ミス・プリミティブ
に先立ち受け取ったプリミティブの処理を続け、そし
て、テクスチャマッピング・データを受け取るステージ
に先行するパイプラインのステージも、パイプラインが
いっぱいでないなら、そしていっぱいになるまで、プリ
ミティブの処理を続ける。
【0084】キャッシュ・ミスに応答して新しいテクス
チャ・データを待っているときに、テクスチャマッピン
グ・ボードまたはフレーム・バッファ・ボードのいずれ
かのパイプラインがバックアップするとき、同様に、フ
ロントエンド・ボード10のパイプラインがバックアップ
する。キャッシュ・ミスが生じ、その結果、そしてホス
トコンピュータ・メイン・メモリへのアクセスおよび完
了するのにいくつかのサイクルをとるテクスチャ・デー
タのダウンロードになるので、フレーム・バッファ・ボ
ードのパイプラインがバックアップされることにより、
テクスチャマッピング・チップのパイプラインが決して
待たなくてもよいようにすることが望ましい。したがっ
て、一つの実施例において、 フレーム・バッファ・ボ
ードが、テクスチャマッピング・ボードより深いプリミ
ティブ・パイプラインを備えているので、テクスチャマ
ッピング・パイプラインは、フレーム・バッファ・パイ
プラインが利用可能になるのを待つことによって遅延し
てはならない。
【0085】一つの実施例において、テクスチャマッピ
ングをオフにする能力が備えられている。これは、ホス
トコンピュータのプロセッサ19上で操作しているTIM
が、テクスチャマッピング・ボード12およびフレーム・
バッファ・ボード14の両方におけるレジスタをセットす
ることによって達成される。テクスチャマッピングをオ
フにするようセットされたとき、これらのレジスタは、
それぞれテクスチャマッピング・チップ46がフレーム・
バッファ・ボード14にテクスチャ・データを提供させな
いようにし、そしてフレーム・バッファ・ボードにテク
スチャマッピング・ボードからのテクスチャ・データを
待つことなくプリミティブの描画を続けるよう命令す
る。
【0086】先に述べたように、2次元テクスチャ・マ
ップからのテクスチャ・データで描画される各ディスプ
レイ・スクリーン・ピクセルについて、一つのMIPマッ
プからの4つのテクセル(2線形補間)または2つの隣接
するMIPマップからの8つのテクセル(3線形補間)を、
そのピクセルのための結果のテクスチャ・データを決定
するためにキャッシュ・メモリからアクセスすることが
できる。キャッシュから読みとられたテクセルが、バス
86(図8)を通してテクセル補間回路76に提供され、回
路76は、各ピクセルのための結果のテクセル・データを
計算するために複数のテクセルを補間する。補間は、シ
ステムのために確立されたモードに基づいて変化するこ
とができる。点サンプリング補間モードが確立されると
き、結果のテクセル・データは、テクスチャ・マップに
おけるピクセルのS、T座標によって規定されるロケーシ
ョンに最も近い一つのテクセルに等しい。代わりに2線
形または3線形補間が使われるとき、結果のテクセル・
データは、それぞれ一つまたは二つの最も近いマップに
おける四つまたは八つの最も近いテクセルの重み付けさ
れた平均である。複数のテクセルのそれぞれに与えられ
た重量が、勾配の値、およびタイラー/境界チェッカー
からテクセル補間回路76に提供されるSおよびT座標の端
数の成分に基づいて決定される。
【0087】ディスプレイ・スクリーン・ピクセルのた
めの結果のテクセル・データは、バス88を通してフレー
ム・バッファ・インターフェースFIFOバッファ90に順に
提供される。フレーム・バッファ・インターフェースFI
FOバッファ90は、最高64の結果のテクセルを格納するこ
とができる。
【0088】各結果のテクセルは、R,G,Bおよびαのそ
れぞれを表わす8つのビットを含む32ビット・ワード
である。αバイトは、フレーム・バッファ・ボード14
(図6)に、テクセルにマップする任意のピクセルのた
めの最終的なディスプレイ・スクリーンR,G,B値の計算
において、結果のテクスチャ・データのR,G,B値が、フ
レーム・バッファ・ボードによって生成された対象物デ
ータのR,G,B値と組み合わせられなければならない態様
を示す。フレーム・バッファ・インターフェースFIFOバ
ッファの出力TO-T4がフレーム・バッファ・ボード14
(図6)にバス28を通して提供される。フレーム・バッ
ファ・ボードが、各ディスプレイ・スクリーン・ピクセ
ルのための最終的なR,G,B値を生成するため?a?によって
指定された態様で、結果のテクセル・データのR,G,B値
を対象物R,G,B値と組み合わせる。
【0089】C. キャッシュ・メモリ組織 図10は、テクセル・ポート92、テクスチャ補間回路76、
キャッシュ・ディレクトリ78およびテクセル・キャッシ
ュ・アクセス回路82を含むテクスチャマッピング・チッ
プの部分に結合した一つ実施例のキャッシュ・メモリの
ブロック図である。この実施例において、キャッシュ・
メモリ48は、4つのインタリーブ204A、204B、204Cおよ
び204Dを含む。各インタリーブが、同時にアクセスされ
ることができ、読取りサイクルの間、それぞれがデータ
の8ビットを提供する2つのSDRAMチップ(図示しない)
を含む。したがって、一つの読取りサイクルの間、各イ
ンタリーブがテクセル・データの16ビットを提供する。
テクセル・データの各32ビット・ワードが、8ビット
を、インタリーブの各SDRAMにおける2つの連続ロケーシ
ョンのそれぞれに格納して、一つのインタリーブのキャ
ッシュに格納される。このようにキャッシュからテクセ
ルを読み出すために、2つの読取りサイクルは、テクセ
ル・データの32のビットを提供するために適当なインタ
リーブの連続的なロケーションで実行される。下で説明
するように、各インタリーブ内で2つの連続サイクルで
データのバーストを生むために、一つのアドレス・ワー
ドだけ(行および列のデータを含む)が、SDRAMに提供
される必要がある。バーストは、所与のアドレスから第
1のサイクルで提供された16のビット、および1だけ増
加された同じ行および列を持つアドレスから第2のサイ
クルで提供された16のビットを含む。
【0090】テクセル・キャッシュ・アクセス回路82
は、コントローラA (200A)、コントローラB (200B)、コ
ントローラC (200C)とコントローラD (200D)と分類され
た4つの別々のコントローラを含む。4つのコントローラ
A、B、C、およびDは、並行バス202A、202B、202Cと202D
を介して4つのインタリーブ204A、204B、204Cおよび204
Dから同時にデータをアクセスすることができる。コン
トローラは、コマンドに応答し、それぞれ、バス84A、8
4B、84Cおよび84Dを通して受け取られたアドレスでメモ
リ48からテクセル・データを読む。
【0091】先に述べたように、各ピクセルは、一つの
MIPマップから4つのテクセルにまたは複数のMIPマップ
から8つのテクセルに潜在的にマップすることができ
る。より詳細に下で説明するように、キャッシュにダウ
ンロードされたテクセル・データが、ホストコンピュー
タのメイン・メモリにTIMによって組織されるので、各M
IPマップの任意の4つの隣接テクセルが別々のインタリ
ーブで見つけられ、平行してアクセスされることができ
る。このように2線の補間により結果のテクセル・デー
タを生成するために必要とされることがあるMIPマップ
における任意の4つの隣接テクセルは、一つの読取り動
作で読取ることができる。3線の補間が使われるとき、
隣接のMIPマップからの4つのテクセルの2つの組を、2つ
の読取り動作で読みとることができる。
【0092】図11が、キャッシュ・メモリの4つのイン
タリーブを利用してMIPマップの任意の4つの隣接テクセ
ルが同時に読みとられるように、テクスチャ・データ
(あるテクセルだけは示される)のブロックが組織され
る態様の例を図示する。それぞれのテクセルが、テクセ
ルが格納されているキャッシュ・メモリのインタリーブ
を識別するためにA, B, CまたはDのラベルをつけられ
る。マップのロケーションがA、B、CおよびDと分類され
た4つのテクセルの間にくるようにA-Dラベルのパターン
が、繰り返す。このように、マップ内のロケーションに
マップするピクセルについて、4つの最も近いテクセル
が別々のインタリーブA-Dにあるので、それらは、同時
に4つの独立のコントローラ20OA-Dによってアクセスさ
れることができる。例えば、ピクセルP0が、A、B、CとD
と分類された4つのテクセルの間のロケーションにマッ
プし、そして、ピクセルP1は、B、A、DおよびCと分類さ
れた4つのテクセルの間のロケーションにマップする。
【0093】上記の説明されたキャッシュ実施例は、単
なる例として示されており、別の例を使うことができる
ことを理解しなければならない。例えば、キャッシュ
は、8つの別々のインタリーブで8つの別々のコントロー
ラとともに実行されることができるので、3線形の補間
が使われるとき、8つのテクセルは、一つの読取り動作
で同時にキャッシュからアクセスすることができる。
【0094】キャッシュ・メモリのそれぞれのSDRAMチ
ップが、同時に別々の能動ページ(すなわち共通の行ア
ドレスを持つ記憶場所のグループ)を維持することがで
きる2つの同じ大きさのバンクに内部的に分割される。
このように、データは、従来のDRAMの異なるページから
のデータの連続的読み取りに一般に関連する再ページ割
付のペナルティーを負うことなく、連続的な読取りサイ
クルでSDRAMチップの2つのバンク内の異なるページから
アクセスされることができる。
【0095】より詳細に下で説明されるように、3線形
の補間が実行されるときページをクロスさせるペナルテ
ィーを最小にするため、テクスチャ・データが、キャッ
シュ・メモリにおいてこのSDRAMの特徴を利用するよう
構成されている。3線形の補間のために必要な8つのテク
セルは、2つのMIPマップからの4つのテクセルの組を含
む。一つのマップの4つの隣接のテクセルの各組は、一
つがインタリーブA、B、C、およびDのそれぞれに、4つ
のテクセルが同時にアクセスされうるように上で説明さ
れた態様で格納されるように準備をされる。
【0096】さらに、任意のテクスチャのためのマップ
のシリーズの隣接のMIPマップからの共通のデータは、
キャッシュの異なるSDRAMバンクに格納される。3線形の
補間が実行されるとき、一つのMIPマップからの4つのテ
クセルが、第1のバーストの2つの読取りサイクルの間
にインタリーブA-DのSDRAMバンクの一つから同時に読取
られ、そして、隣接のMIPマップからの4つのテクセル
は、続いて起こるバーストの2つの読取りサイクルの間
に他のSDRAMバンクから読取られる。SDRAMの両方のバン
クが同時に行-能動でありうるから、4つのテクセルの2
つの組は、再ページ割付のペナルティーを負うことなく
背中合わせのバーストでアクセスされることができる。
対象物のピクセルが描画されているとき、隣接のピクセ
ルが、そのテクスチャの同じ2つのMIPマップに頻繁にマ
ップし、キャッシュへの読取りが、2つのマップに共通
のデータを格納するキャッシュ・ブロックの間で連続的
に切り替わることを要求することを理解しなければなら
ない。ディスプレイ・スクリーン・ピクセルの描画中に
2つの隣接のMIPマップの間で切り換えるとき、サイクル
毎に再ページ割付ペナルティーを負うことなく、3線形
の補間が実行されることを許すので、2ページが各SDRAM
内で能動のままであるのを許すこのキャッシュ構成が有
利である。
【0097】図12は、キャッシュ・メモリの上記の説明
された実施例のより詳細なブロック図である。キャッシ
ュは、4つのインタリーブ204A-204Dの間で均一に分けら
れたSD1-SD8と分類された8つのSDRAMチップを含み、そ
れぞれのインタリーブが2つのSDRAMチップを含む。それ
ぞれのインタリーブの2つのSDRAMは、次の共通の線を共
有する:アドレス線(ADD)、行および列アドレススト
ローブ(RASとCAS)、書き込みイネーブル(WE)、クロ
ック・イネーブル(CKE)、およびデータ入出力マスク
(DQM)。各インタリーブ内のSDRAMが、8つの別々のデ
ータ線に結合され、これを通して8ビットのデータが、
それぞれの読取りまたは書込みサイクルの間にそれぞれ
読取られまたは書き込まれる。それぞれのSDRAMチップ
が、メモリの2つのバンクを含み、それぞれのバンクが
テクスチャ・データの1,048,576もの8ビット・ワード
を格納する。
【0098】各インタリーブの2つのSDRAMが、同時にア
クセスされ、SDRAMの一方がデータビット[15:08]を提供
し、他方がデータビット[07:00]を提供してデータの16
ビットを一緒に提供することができる。上で示したよう
に、一つのバーストの2つの連続的な読取りサイクル
が、それぞれのインタリーブからデータの完全な32ビ
ットのテクセルを与え、別々の8ビット・ワードがテク
セルのR、G、Bおよびα値のそれぞれを表わす。
【0099】SDRAMチップは、それぞれのバンク内の1,0
48,576の8ビット・ワードをデコ―ドするために線ADD
上で多重化された20のアドレス・ビットを受け取る。詳
細に下で説明するように、6ビットのブロックインデッ
クスおよび6ビットのテクセル・アドレスは、キャッシ
ュからアクセスされるそれぞれのテクセルのためにため
に計算される。ブロックインデックスは、テクセルが、
データの64のブロックのどれに位置するかを示し、そし
て、テクセル・アドレスは、ブロック内のテクセルの正
確なS、T座標アドレスを示す。8つのSビットと8つのTビ
ットは、256x256テクセルの正方形のブロックを仮定す
るテクセル・アドレスを含む。キャッシュ・アドレス
は、ブロックインデックス(6つのMSB)とテクセル・ア
ドレス(16のLSBS)の組合せを含む22のビット・ワード
である。キャッシュ・アドレスは、キャッシュ内のテク
セルの正確なロケーションを示す。
【0100】レンダリングの間、タイラー/境界チェッ
カーが、テクセル・アドレスのLSB SビットとLSB Tビッ
ト(すなわち、LSB S座標とLSB T座標)をデコ―ドし、
テクセルがキャッシュの4つのインタリーブのどれに格
納されているか判断する。キャッシュ・アドレスの残り
の20のより大きいアドレス・ビットは、アドレス線ADD
に沿って適当なインタリーブ内の2つのSDRAMチップに提
供される。2つのSDRAMSに提供された20のアドレス・ビ
ットのうち9つのビットが、テクセル・データをアクセ
スするため、SDRAM内の列を選ぶために使用されて、11
ビットが行を選ぶために使用される。当業者によって理
解してなければならない列および行のアドレス・ビット
が、SDRAMに異なるサイクルでラッチされ、そして、RAS
とCASストローブは、従来通りにデータをアクセスする
ために使用される。
【0101】2サイクルのバースト中、第1のサイクル
の間に、同じインタリーブ内の2つのSDRAMのアドレスさ
れたロケーションからの16のビットが提供され、次いで
別のアドレスを提供することなく、第2のサイクルの間
に2つのSDRAMの別のロケーションからの16ビットが提供
される。他方のアドレスが、1だけ増加された同じ行ア
ドレスおよび列アドレスを含む。また、ひとたび1ペー
ジ(特定の行アドレス)が起動されると、異なる行アド
レスが提供されるまで、残りが起動されたままになるこ
とを理解しなければならない。したがって、同じインタ
リーブからアクセスされる連続的なテクセルが同じペー
ジ(同じ行アドレスを含む)にあるならば、次いで、行
アドレスは、連続バーストの最初のものの間に一度だけ
提供される必要がある。
【0102】さらに、RAS、CASおよびWE線は、従来の態
様でSDRAMチップをアドレスしデータを書くために使用
される。クロック・イネーブル信号CKE信号が非アクテ
ィブにされるとき、内部クロックは、中断される。SDRA
Mは、この信号に応答してデータをそのまま保持し 両方
のバンクをアイドル状態にする。データ入出力マスクDQ
M信号が、読取りサイクルの間、出力イネーブルとし
て、そして書込みサイクルの間、入力データ・マスクと
しての役目をする。
【0103】従来のSDRAM使用は、現在のデータ読取り
サイクルが完了する前に現在のページから現在のデータ
をアクセスし、その将来のページを起動させながら、次
のデータがどの将来のページからアクセスされるか決定
することを含む。SDRAMが2つの異なるページを同時にア
クティブにイネーブルするので、従来のSDRAM使用は、
一般に、従来のDRAMの異なるページからデータをアクセ
スすることに関連する再ページ割り付けのペナルティー
を避ける。従来のSDRAM使用は、しかし多くの連続的な
読取りサイクルで読取られるべきデータが異なるページ
に位置するとき、先を見て将来のページを起動させるた
めに2以上のサイクルが必要なので、そのような利点を
提供しない。ここで説明されたテクスチャ・データ記憶
方法は、ペナルティーを負うことなく異なるページから
複数の連続的なSDRAM読取りサイクルが生じるのを可能
にすることによって従来のSDRAMに対して利点を提供す
る。特に、テクスチャの隣接MIPマップから共通データ
をSDRAMの別々のバンクに格納する(それは3線形の補間
の実行中連続的な読取りサイクルの間、アクセスするこ
とを必要とする)ことによって、別々のバンクからのデ
ータは、連続的な読取りサイクルでペナルティーなしで
アクセスすることができる。SDRAM性能を改善するため
のデータ記憶割当て方法を示し、テクスチャマッピング
・データの記憶に関して説明したが、この方法がそう制
限されないことを理解しなければならない。特に、この
方法は、複数の連続的な読取りサイクルがデータを異な
る記憶場所からアクセスしなければならない場合、任意
のタイプのデータを割り当てるために適用できる。
【0104】D. キャッシュ制御FIFO 図13は、境界チェッカー72、キャッシュ・ディレクトリ
78、キャッシュ・アクセス回路82、キャッシュ・メモリ
48およびテクセル補間回路76を含む部分的なテクスチャ
マッピング・チップのより詳細なブロック図である。テ
クセル・キャッシュ・アクセス・ユニット82は、4つの
キャッシュ・アクセス・コマンドFIFO 206A、206B、206
Cおよび206Dを含む。キャッシュ・アクセス・コマンドF
IFO 206A-Dは、16ビットのバス84A、84B、84Cと84Dを通
して境界チェッカーからそれぞれ受け取ったキャッシュ
・アクセス・コマンドを格納する。キャッシュ・アクセ
ス・コマンドFIFO 206A-Dは、それぞれ図10に示された
コントローラ200A-Dに対応する。たとえば、FIFO 206A
のコマンドは、インタリーブ204A内のSDRAMのキャッシ
ュ・アクセスを起動する。この実施例において、それぞ
れのキャッシュ・アクセス・コマンドFIFOは、8つの16
ビットのコマンドを一時的に格納することができる。こ
のように、システムのパイプライン能力を高めるため
に、キャッシュ・アクセス・ユニットが行動する前に、
8つのコマンドがキャッシュ・アクセス・コマンドFIFO
のそれぞれに格納されることができる。
【0105】上で示したように、レンダリングの間、境
界チェッカー72が、作用中のピクセルにマップするテク
スチャ・データの各ブロックについて読取りキャッシュ
・タグをキャッシュ・ディレクトリ78に格納されたブロ
ック・タグの各々と比較し、テクセルがキャッシュにあ
るかどうか判断する。ヒットが生じるならば、キャッシ
ュ内のテクスチャ・データの対応するブロックのロケー
ションを表すブロックインデックスが生成される。タイ
ラー/境界チェッカーが、特定のテクセルの補間された
S、T座標、テクスチャIDおよびサブ・テクスチャID、な
らびにそこからテクセルがアクセスされるマップのマッ
プ番号および詳細を後述するテクスチャのベース・マッ
プのサイズから、テクセル・アドレスを決定するルーチ
ンを同時に実行する。ブロックインデックスとテクセル
・アドレス(一緒にキャッシュ・アドレスを構成する)
から、オプティマイザー(最適化器)が、後述するよう
にテクセルが格納されるキャッシュの特定のインタリー
ブ、およびそのインタリーブのSDRAMチップの列および
行アドレス・ビットを次いで判断する。アドレス情報
は、対応するキャッシュ・アクセス・コマンドFIFOに
(キャッシュを読むコマンドと一緒に)提供される。
【0106】テクセル補間回路76は、214A0、214Al、21
4B0、214B 1、214C0、214C1、214D0および214D1と分類
された8つのテクセル・データFIFOを含む。テクセル・
データFIFO 214A0および214A1が、キャッシュ・メモリ
のインタリーブ204Aに対応し、FIFO 214B0および214Bl
がインタリーブ204Bに対応し、FIFO 214C0および214C1
がインタリーブ204Cに対応し、FIFO 214D0および214D1
がインタリーブ204Dに対応する。
【0107】先に述べたように、キャッシュ・メモリの
4つのインタリーブのそれぞれは、別々のキャッシュ・
アクセス経路を通して同時にアクセスすることができ
る。レンダリング中にテクセル・キャッシュ・アクセス
・ユニット82がテクセル・データをキャッシュ・メモリ
48からアクセスするとき、テクセル・アクセス・コント
ロール・ワードが、バス208A、208B、208Cおよび208Dを
通してキャッシュ・メモリ48に提供される。4つのテク
セルは、2つの背中合わせの16ビットの読取りサイクル
中に同時に4つのインタリーブからアクセスされる。4つ
のテクセルが、バス210A、210B、210Cおよび210Dを通し
てテクセル・データA FIFOの一つ(214A0または214A
1)、テクセル・データB FIFOの一つ(214B0または214B
1)、テクセル・データC FIFOの一つ(214C0または214C
1)、およびテクセル・データD FIFOの一つ(214D0また
は214D1)にそれぞれ提供される。それぞれのインタリ
ーブA-Dに対応するテクセル・データFIFOの対(すなわ
ち、ゼロおよび1)が交互の形態でロードされる。例え
ば、インタリーブAから読みとられた第1のテクセル
が、テクセル・データFIFO 214A0に格納され、インタリ
ーブAから読みとられた第2のテクセルが、FIFO 214Al
に格納され、インタリーブAからの第3のテクセルがFIF
O 214A0に格納される、等々。この交互方式は、下で説
明される理由のために用いられる。
【0108】テクセル・データFIFOのそれぞれは、幅32
ビットと8段の深さである。組合せにおいて、8つのFIFO
214が8つのパイプラインされた段を格納し、8つのテク
セルを含む各段が3つの線の補間の間に結果のテクセル
・データを決定するために使用された。バス210A。210
B、210C、および210Dは16ビット幅である。各インタリ
ーブの各SDRAM対は、各読取りサイクルの間、16ビット
のデータを提供する。各バーストの間、第1の16のビッ
トが、各SDRAM対から第1の16ビットのレジスタ(示さ
ない)に提供され、そして次の16ビットが、各SDRAM対
から第2の16ビット・レジスタ(示さない)に提供され
る。バーストの第2のサイクルの終わりに両方のレジス
タからのデータが、対応する32ビットのバス212A、21
2B、212Cまたは212Dに提供される。結果のテクセル・デ
ータをピクセルのために決定するためにテクセル補間回
路76が、8つのテクセルの次のステージを読取るためにF
IFOをアクセスし、それらのテクセルを上で説明したた
態様で補間する。結果のテクセル・データが、次いでバ
ス28を通してフレーム・バッファ・ボード14(図6)に
提供され、上で説明した態様でディスプレイ・スクリー
ン・ピクセルを描画するのに使用される。
【0109】3線形の補間が実行されるとき、一つのMIP
マップの4つのテクセルと隣接のMIPマップの4つのテク
セルから任意のピクセルのための結果のテクセル・デー
タが、補間される。隣接のディスプレイ・スクリーン・
ピクセルは、概して連続して描画される。しばしば、隣
接のディスプレイ・スクリーン・ピクセルが、テクスチ
ャMIPマップの隣接するロケーションにマップする。こ
の結果連続的に描画されたプリミティブのために結果の
テクセル・データを補間するときに、ある共通のテクセ
ル・データが、使用されることがよくある。一つの実施
例において、いくらかの密に間隔をあけられた読取りサ
イクル内で共通のテクセル・データが複数回アクセスさ
れる時、キャッシュは、第1の読取りのためにアクセス
されるだけであり、 各連続した読取りのためにキャッ
シュ読取りサイクルを節約する。最も最近読取られたテ
クセルは、テクセル・データFIFO内に格納される。この
ように、それらのテクセルへの後続のアクセスは、キャ
ッシュからではなくFIFOからされる。それによって、こ
れは必要なキャッシュ・アクセスの数を減らし、システ
ムのバンド幅を増やす。
【0110】テクセル・データ経路A、B、C、およびDの
それぞれについて、前のピクセルのためにテクセル・デ
ータFIFO 0または1の一つに最も最近書かれたテクセル
・データが、キャッシュをアクセスするためパイプライ
ン位置に現在あるピクセルのためのテクセル・データに
一致するならば、キャッシュ・アクセス・コマンドは、
対応するキャッシュ・アクセスFIFO206A、B、CまたはD
に提供されない。その代わりに、コマンドがテクセル補
間回路に送られ、テクセル・データが、対応するテクセ
ル・データFIFO 214A、B、CまたはDの最も最近書かれた
ロケーションに格納されることを示す。キャッシュをア
クセスするためのパイプライン位置に現在あるピクセル
に対応するテクセル・データが対応するテクセル・デー
タFIFOの最も最近書かれたロケーションにおけるデータ
に一致しない経路A、B、CおよびDのいずれについても、
テクセル・キャッシュ・アクセス・コマンドが、キャッ
シュ・メモリ48からそのテクセル・データを読むため
に、対応するテクセル・キャッシュ・アクセス・コマン
ドFIFOに提供される。
【0111】キャッシュ・アクセスが考慮されなければ
ならないパイプライン位置に現在あるピクセルについ
て、インタリーブA-Dのいくつかに異なる結果が生じる
ことがありえることが理解されなければならない。例え
ば、連続的なピクセルのための共通のテクセル・データ
が、インタリーブAのために存在するが、インタリーブB
-Dのためには存在しないことがありえる。そのような状
況において、テクセル・データをキャッシュからアクセ
スするためパイプライン位置にあるとき、テクセル・デ
ータが、連続ピクセルの第2のもののためにインタリー
ブB-Dからの読みとられるが、その第2のピクセルのた
めのインタリーブAからのテクセル・データは、テクセ
ル・データFIFO 214A0または214Alの一つである同じロ
ケーションから読まれる。キャッシュをアクセスするこ
となく複数のピクセルのためにテクセルがテクセル・デ
ータFIFOからの再読取りされるとき、この方式がバンド
幅節減を提供する。
【0112】テクセル補間回路76は、53ビット・コマン
ドを境界チェッカー72から53ビットのバス218を通して
受け取るテクセル補間回路コマンドFIFO 216を含む。テ
クセル補間回路コマンドFIFOは、どのテクセル・データ
FIFOロケーションが、各サイクル中に結果のテクセル・
データを補間するのに使用すべきテクセル・データを含
むかを補間回路に示す最高16のコマンドを格納すること
ができる。補間回路コマンドは、補間のモードをも示し
(すなわち、点サンプリング、2線形(bilinear)か、3線
形(trilinear)か)、各テクセルが補間において重み付
けされるべき態様を指定するSおよびT座標の勾配および
小数値を含む。コマンドは、テクセル・データFIFO 214
A0、A1、B0、B1、C0、C1、D0、またはD1のどれから4つ
(2線形)または8つ(3線形)のテクセルのそれぞれが
読まれるか、およびテクセル・データが新しいか古いか
を示すデータを含む。テクセル・データは、その経路の
いずれかのテクセル・データFIFOの最も最近書かれたロ
ケーションに格納されたテクセル・データと異なると
き、新しい。新しいとき、キャッシュ読取りが必要であ
る。テクセル・データは、いずれのテクセル・データFI
FOのも最も最近書かれたロケーションに格納されたもの
と同じであるとき、古い。古いとき、キャッシュ読取り
は、必要でない。テクセル・データが新しいとき、FIFO
読取りポインタは、FIFO内の次のロケーションの方へ動
かされなければならないが、テクセル・データが古いと
きは、同じデータが同じFIFOロケーションから読まれ、
読取りポインタは、動かされる必要がない。
【0113】図14および15を参照して説明する次の例
が、さらに図13のテクセル・アクセス回路の動作を図示
する。図14は、上部のMIPマップの複数のテクセルおよ
び下部の(サイズがより小さい)MIPマップの複数のテ
クセルを示す。テクセルは、図11に関して説明したラベ
ル方式に従ってAn、Bn、CnとDnに(nは整数を表す)分
類される。描画される7つのピクセルは、P0、P
1、...P6と名称をつけられる。示されるように、描
画されるピクセルは、直接MIPマップのテクセルにマッ
プにしない。この例では、上部のマップからの4つのテ
クセルと下部のマップからの4つのテクセルがアクセス
され、各ピクセルについて補間されるように、3線形の
補間が、実行される。ストライド(stride:一またぎ)
の方向は、レンダリングの方向であって、ピクセルの数
字で表した番号付けに対応する。
【0114】図15が、キャッシュ・アクセス・コマンド
FIFO 206A、テクセル・データFIFOA0(214A0)、テクセ
ル・データFIFO A1(214Al)およびテクセル補間回路コ
マンドFIFO 216を図示する。他のテクセル・データ経路
B、CおよびDの各々のためのFIFOが同じ態様で作用する
のでテクセル・データA経路と関連するFIFOだけが、便
宜上示される。各FIFOバッファが、データを書き込み、
および読取るFIFO内の一つのロケーションをそれぞれ指
す書込みポインタおよび読取りポインタを含む。ポイン
タは、この実施例において一度に一つのロケーションを
動くことができる。
【0115】ピクセルP0が、上部のマップにおけるテク
セルA0、B0、C0、およびD0、ならびに下部のマップのテ
クセルA0、B0、C0およびD0にマップし、これらの8つの
テクセルが、ピクセルP0のための結果のテクセル・デー
タを生成するために補間される。ピクセルP0について、
上部のマップのテクセルA0のアドレス(すなわち、uA
0)が、そのアドレスでキャッシュから読まれるテクセ
ル・データをテクセル・データFIFO 214A0に書込まなけ
ればならないことを示すアドレスとともに、キャッシュ
・アクセス・コマンドFIFO 206Aの第1のロケーション
に書き込まれる。次に、キャッシュ・アクセス・コマン
ドFIFO 206Aの書込みポインタが、一つのロケーション
だけ動かされ、そして、下部のマップテクセルA0のアド
レス(すなわち、lA0)が、、そのアドレスにおけるキ
ャッシュから読み出されるテクセル・データをテクセル
・データFIFO 214A1に書込まなければならないことを示
すアドレスとともにそのFIFOの次のロケーションに書か
れる。このように、テクセル・データFIFO 0および1
は、上で説明された理由のために交替される。キャッシ
ュ・アクセス・コマンドFIFO 206B-Dが上部および下部
マップにおけるテクセルB0、C0、およびD0に関して同様
の態様で更新される。
【0116】ピクセルP1について、アドレスuAlおよびl
A1にそれぞれ格納された、上部および下部のマップにお
けるテクセルA1は、補間される必要がない。上部および
下部のマップのテクセルA1は新しいテクセルであり、前
のピクセルP0からのテクセルに対応しないから、それら
は、キャッシュからアクセスされる。このようにこれら
のテクセルのためのテクセル・アドレスは、それらのア
ドレスから読まれたテクセル・データがテクセル・デー
タFIFO 214A0および214A1に格納されることになること
をそれぞれ示す対応するアドレスとともにキャッシュ・
アクセス・コマンドFIFO206Aの次の2つのロケーション
に加えられる。図15はこの情報でアップデートしたあと
のキャッシュ・アクセス・コマンドFIFO 206Aを表す。
【0117】最初の2つのピクセルP0およびP1について
共通のアドレスされたテクセルがないので、キャッシュ
・メモリは、両方のためのテクセル・データを読み出す
ためにアクセスされる。第1のコマンドが、キャッシュ
・アクセス・コマンドFIFO 206Aから読まれ、アドレスu
A0でのテクセル・データがキャッシュ・メモリから読ま
れ、テクセル・データFIFO 214A0の第1のロケーション
に書かれる。次いで、次のコマンドが、キャッシュ・ア
クセス・コマンドFIFOからの読取られ、そして、アドレ
スlA0でのテクセル・データがキャッシュからアクセス
されて、テクセル・データFIFO 214A1の第1のロケーシ
ョンに書かれる。次のコマンドが、次いでキャッシュ・
アクセス・コマンドFIFOからの読取られ、そして、アド
レスuA1でのテクセル・データがキャッシュからアクセ
スされて、テクセル・データFIFO214A0の次のロケーシ
ョンに書かれる。最後に、4番目のコマンドが、キャッ
シュ・アクセス・コマンドFIFOから読まれ、アドレスlA
1でのテクセル・データがキャッシュからアクセスされ
て、テクセル・データFIFO 214A1の次のロケーションに
書かれる。
【0118】描画すべき次のピクセルP2のために、アド
レスuA1およびlA1でのテクセルが補間される必要があ
る。これらのテクセルは以前に描画されたピクセルP1の
ためにアクセスされたので、それらは、テクセル・デー
タFIFO 214A0および214A1の最も最近書かれたエントリ
にそれぞれ格納されている。このように、それらのテク
セルのための新しいキャッシュ・アクセス・コマンド
は、キャッシュ・アクセス・コマンドFIFO 206Aに提供
されない。むしろピクセルP1のための結果のテクセル・
データが補間されたあと、アドレスuAlおよびlA1に格納
されたテクセル・データは、キャッシュをアクセスする
ことなく、テクセル補間回路によってテクセル・データ
FIFO 214A0および214A1の最も最近読まれたロケーショ
ンから、それぞれアクセスされることができる。直接FI
FOバッファからデータを読むことは、データをキャッシ
ュ・メモリからアクセスするよりも時間がかからない。
したがって、キャッシュ・アクセスを減らすFIFOバッフ
ァがシステムのバンド幅を増やす。
【0119】上で示したように、インタリーブA-Dの各
々に対応するテクセル・データFIFO214は、別に制御さ
れたFIFOゼロおよび1を含む。FIFOは、このように3線形
の補間を実行するために効率的に分割される。上記の実
施例からわかるように、連続的な読取りのために同じエ
ントリを指すように、その読み取りポインタを維持する
ことによって、テクセル・データFIFO 214の各々がその
最も最近読まれたエントリへのアクセスを提供する。こ
のように、連続的な読み取りサイクルの間、各インタリ
ーブが2つのマップの読み取りの間で交互になるが、別
々のFIFOが、一つのマップ内の連続的な読み取りを実行
することができ、読取りポインタがFIFOへの連続的アク
セスにおいて同じテクセル・データを指すことを可能に
する。
【0120】各ピクセルが、タイラー/境界チェッカー7
2によって作用されており、コマンドがキャッシュ・ア
クセス・コマンドFIFOに提供されているので、コマンド
は、テクセル補間回路コマンドFIFO 216にも書かれる。
例えば、アドレスuA0でのテクセルをアクセスするコマ
ンドが、ピクセルP0のためにキャッシュ・アクセス・コ
マンドFIFOに提供されるとき、コマンドNew0がテクセル
補間回路コマンドFIFO216の第1のロケーションに提供
される。コマンドNew0は、インタリーブAからの次のテ
クセル・データがキャッシュからアクセスされ、テクセ
ル・データFIFO214AOに提供され、ることをテクセル補
間回路に示し、FIFOからテクセル・データを読むため
に、テクセル補間回路が、最も最近読み出したロケーシ
ョンからFIFO読み取りポインタを一つのロケーションだ
け動かさなければならないことを示す。
【0121】テクセル・アドレスlA0を対応するキャッ
シュ・アクセス・コマンドFIFOに提供された次のコマン
ドのために、コマンドNewlがテクセル補間回路コマンド
FIFOの次のロケーションに提供される。コマンドNewl
は、インタリーブAからの次のテクセル・データも新し
く、テクセル・データ補間回路214A1から読取られねば
ならないことをテクセル補間回路に示す。同様に、ピク
セルP1に対応するテクセル・アドレスuA1およびlA1に関
連するコマンドのために、コマンドNew0およびNewlは、
テクセル補間回路コマンドFIFO 216の次の2つのロケー
ションに、それぞれ書かれる。
【0122】ピクセルP2のために、アドレスuA1およびl
A1でのテクセル・データが前のピクセルP1のためにFIFO
に書かれたデータと同じであるから、テクセル補間回路
コマンドFIFO 216の次の2つのロケーションに書かれた
コマンドは、Old0およびOld1であり、それぞれ、次のテ
クセル・データが、テクセル・データFIFO 214A0と214A
1の最も最近読み出されたロケーションから再読取りさ
れねばならないことをテクセル補間回路に示す。Old0お
よびOld1コマンドは、FIFOから次のテクセル・データを
読み出すために、テクセル補間回路が、最も最近読み出
されたロケーションからFIFO読み取りポインタを動かし
てはならないことを示す。
【0123】図14は、次の3つのテーブルをリストす
る。すなわち、ピクセルの各々のために補間される必要
があるテクセルを示す第1のテーブル、テクセル・デー
タFIFOA0、B0、C0およびD0に格納される必要がある別々
のテクセル・データ値をリストしている第2のテーブ
ル、そして、テクセル・データFIFO A1、B1、C1、およ
びD1に格納される必要がある別々のテクセル・データ値
をリストしている第3のテーブルである。ブランクスペ
ースが、以前にキャッシュから読み出されキャッシュか
ら再び読み出される必要のなく、FIFOからその代わりに
アクセスされることができる共有されたテクセル・デー
タを示す。このチャートが示すように、複数のピクセル
のための結果のテクセル・データが補間されるとき、多
数のキャッシュ・アクセスが、FIFO方式によって節約さ
れることができ、結果としてシステムのバンド幅を増や
すことができる。
【0124】図16は、各インタリーブにおいて、ピクセ
ルのために読み出されるテクセル・データが、最も最近
描画されたピクセルについて読み出されたかどうか決定
するために、テクスチャマッピング・チップによって使
用される回路のブロック図である。この回路は、新しい
データがキャッシュから読み出されるようにするため、
またはテクセル・データが、古くて、テクセル・データ
FIFOの中で一つから読み出されなければならないことを
示すコマンドをテクセル補間回路コマンドFIFOに書き込
むために、キャッシュ・アクセス・コマンドFIFOの一つ
に新しいコマンドを書くかどうかを決定するために使用
される。図l6は、インタリーブAに対応する一つの回路
だけを示す。しかし、インタリーブB、CおよびDのため
にも同様の回路が用意されている。回路は、タイラー/
境界チェッカーのオプティマイザー要素内に位置する。
補間される各テクセルについてタイラー/境界チェッカ
ーによって受け取られた補間されたS、T値から、オプテ
ィマイザーは、バス220A上にテクセル・アドレス(ブロ
ック・タグおよびテクセル・アドレスを含む)を提供す
る。テクセル・データFIFO 214A0および214A1に割り当
てられた最も最近処理されたテクセルのアドレスは、そ
れぞれアドレスレジスター222A0および222A1に格納され
る。現在のテクセル・アドレスが、コンパレーター224A
1と224A1によって、レジスタ222A0および222A1に格納さ
れたテクセル・アドレスとそれぞれ比較される。
【0125】このテクセル・アドレスがレジスタ222A0
と222A1に格納したアドレスのいずれとも一致しないと
き、テクセル・アドレスに対応するテクセル・データが
キャッシュ・メモリからアクセスされた必要があり、そ
して、適当なコマンドがキャッシュ・アクセス・コマン
ドFIFOに書かれる。しかし、テクセル・アドレスがアド
レスレジスター222A0または222A1に格納されたアドレス
にマッチする時、テクセル・データは、そのアドレスに
対応するテクセル・データをアクセスする直前にテクセ
ル補間回路によって読み出されるロケーションにおいて
テクセル・データFIFO 212A0または212A1にそれぞれ格
納される。したがって、キャッシュ・アクセス・コマン
ドは、キャッシュ・アクセス・コマンドFIFOに書かれ
ず、テクセル・データが古く、読み取りポインタを動か
すことなく最も最近読み出されたFIFOロケーションから
アクセスすべきことを示すコマンドが対応するテクセル
補間回路コマンドFIFOに書かれる。
【0126】E.テクスチャ・データのブロックの組織 図1は、8x8テクセルの中のベース・マップ100を含む一
連の正方形のテクスチャMIPマップを示す。ベース・マ
ップから、各連続したマップが、大きさにおいて最も小
さいサイズ・マップ108にろ過される(すなわち一つの
テクセルだけを含む)。最も小さいマップ108にゼロの
マップ番号が割り当てられ、連続的に大きいマップのマ
ップ番号がが、一つだけ増加させられるので、ベース・
マップ100は、この例では3のマップ番号を持つ。マップ
番号は、下で説明される態様で、テクスチャ・データの
各ブロックのためにブロック・タグを決定するのに使用
される。このマップ命番方式によると、正方形のテクス
チャ・ベース・マップを仮定すると、10のマップ番号が
1024x 1024のテクセルのマップに対応し、9のマップ番
号が、512x5l2テクセルのマップを表し、8のマップ番号
が、256x256テクセルのマップを表すという具合にな
る。テクスチャ・ベース・マップが正方形でないなら
ば、マップ番号10が、1024テクセルより大きい寸法を持
つマップに対応する。この議論は正方形のテクスチャ・
ベース・マップを仮定しているが、長方形のマップも可
能である。長方形であるならば、マップ番号は、マップ
の長い方の寸法のテクセルの数によって決定される。例
えば、10のマップ番号を持っている長方形のマップは、
1024のテクセルでより長い寸法を持つ。また、他のマッ
プ命番方式を代わりに使用することができることを理解
しなければならない。
【0127】10のマップ番号を持つ1024x 1024のテクセ
ル・マップは、各テクセルのロケーションをマップ内で
ユニークに識別するために10ビットのS座標S[9:0]およ
び10ビットのT座標T[9:0]を必要とする。同様に、9のマ
ップ番号を持っているマップは、各テクセルのロケーシ
ョンを識別するために9ビットのSおよびT座標を必要と
し、8のマップ番号を持っているマップは、各テクセル
のロケーションを識別するために8ビットのSおよびT座
標を要求するといった具合である。任意のピクセルに対
応するMIPマップにおけるテクセルのロケーションをユ
ニークに識別するSおよびT座標は、上で説明された態様
で補間される。
【0128】より詳細に下で説明するように、テクスチ
ャ・データは、ホストコンピュータ15(図6)の中のメ
イン・メモリ17に、256x256テクセルのブロックで格納
される。キャッシュ・ミスが生じるとき、キャッシュに
おいて失敗したテクスチャ・データのブロックを識別す
る読み取りキャッシュ・タグが、TIMで読まれ、テクス
チャ・データのそのブロックが、テクスチャマッピング
・ボードのキャッシュ・メモリ48に次いでダウンロード
される。テクスチャ・データの64のブロックがキャッシ
ュ・メモリに任意の一時点に格納されることができる。
テクスチャ・データのこれらの64のブロックは、1つま
たは複数のテクスチャの複数のMIPマップからのデータ
を含むことができる。各ブロックは、それをユニークに
識別する関連するブロック・タグを持つ。 9以上のマッ
プ番号を持っているMIPマップは、256x256を超えるテク
セルを含み、したがって、複数のブロックに格納され
る。複数のブロックに格納される任意のマップの高次の
S、T座標は、マップを格納するデータのブロックのブロ
ック・タグに含まれる。
【0129】例えば、9のマップ番号をもつMIPマップ
は、512のテクセルに等しい寸法を持ち、正方形であれ
ば、512x5l2テクセルである。マップは、256x256テクセ
ル(正方形のテクスチャ・マップを仮定する)の4つの
ブロックに分割される。したがって、それらのブロック
の各々のためのブロック・タグは、マップ内のブロック
のロケーションを識別する一つの高次のS座標ビットお
よび一つの高次のT座標ビット(すなわち、S[8]およびT
[8])を含む。同様に、10のマップ番号を持とMIPマップ
は、1024x 1024テクセルの大きさで、16のブロックデー
タに分割される。したがって、それらのブロックの各々
のためのブロック・タグは、マップ内のブロックのロケ
ーションを識別する2つの高次S座標ビットおよび2つの
高次T座標ビット(すなわち、S[9:8]およびT[9:8])を
含む。
【0130】下に説明するように、3線形の補間の間、
システムの帯域幅を減らすために、テクスチャMIPマッ
プが小分けされ、隣接のMIPマップの同じ部分が、反対
のSDRAMバンクに格納されるようにメモリに格納され
る。さらに、キャッシュ・メモリ内のメモリ空間の効率
的利用のために、256x256テクセルより小さい複数のマ
ップは、キャッシュ・メモリの一つのブロックに格納さ
れることができる。
【0131】図17は、表面の画像を含む特定のテクスチ
ャのための一組のテクスチャMIPマップを示す。図17に
見られるように、一つのテクスチャのためのMIPマップ
のシリーズの各MIPマップが、正方形のテクスチャ・マ
ップについては等しいサイズの4つの四分区間に分割さ
れる。図17に示した例において、ベース・マップは、9
のマップ番号を持ち、四分区間9Q1(画像Lを含む)、9Q
2(画像Aを含む)、9Q3(画像9を含む)、および9Q4
(画像5を含む)に分割される。同様に、マップ番号8
が、それぞれ画像L、A、9および5を含む四分区間SQI、8
Q2、8Q3、8Q4、に分割される。同様に、マップ番号7
が、それぞれ画像L、A、9および5を含む四分区間7Q1、7
Q2、7Qに分割される。同様に、より小さいマップが四分
区間に小分けされる。
【0132】各MIPマップの2つの四分区間が、キャッシ
ュを形づくるSDRAMの一方のバンクに格納され、他方の2
つの四分区間が反対のバンクに格納される。テクスチャ
・データ配分計画によると、8以上の番号(大きさにお
いて256x256テクセル以上)のベース・マップを持つテ
クスチャのために、そのテクスチャのすべてのMIPマッ
プのすべての四分区間のためのメモリ空間のブロック内
の記憶場所が、事前に決められている。例えば、マップ
番号9の四分区間9Qlおよび9Q4が、キャッシュ・バンク1
内の別々のブロックに格納され、そして、図18に示され
るように、四分区間9Q2および9Q3は、キャッシュ・バン
ク0の別々のブロック内に格納される。隣接のMIPマップ
の対応する四分区間は、反対側のバンク内のブロックに
格納される。このように、この例では、それぞれ四分区
間9Qlと9Q4のボックスフィルタされたテクスチャ・デー
タを含む四分区間8Qlと8Q4が、キャッシュ・バンク0内
の同じブロックに格納される。同様にそれぞれ9Q2と9Q3
の四分区間のボックスフィルタされたテクスチャ・デー
タを含む四分区間8Q2および8Q3が、キャッシュ・バンク
1内の同じブロックに格納される。図18は、図17に関し
てスケールを合わせていない。図17のマップ四分区間
が、図18のものと同じサイズであることを理解しなけれ
ばならない。
【0133】マップのそれぞれのサイズのため、マップ
番号9の各四分区間が256x256テクセルの完全なブロック
を占めるが、マップ番号8の四分区間は、それぞれブロ
ックの1/4だけを占める。したがって、四分区間8Q2と8Q
3は、一緒に同じブロックの1/2を占め、そして、四分区
間8Q1と8Q4は、反対側のバンク内の別のブロックの1/2
を占める。キャッシュ・メモリ空間を効率的に割り当て
るために、それらのブロックの各々内の空いているロケ
ーションは、マップ番号7以下のマップの適当な四分区
間によって占められる。したがって、ゼロから8までの
番号を持つマップのすべてが、2つのブロックを占め、2
つのブロックのそれぞれが別のバンクにある。
【0134】8以下のマップ番号を持っているマップの
ための四分区間のケーション(8以上のマップ番号を持
つベース・マップが与えられたとして)は、図18に示さ
れた態様であらかじめ規定されている。図に示されるよ
うに、右上四分区間8Q2と左下四分区間8Q3が、同じ物理
的関係を維持し、それぞれ、第1のブロックの右上と左
下の四分区間を占め、そして左上四分区間8Q1および右
下四分区間8Q4も、同じ物理的関係を維持し、それぞれ
第1のブロックと異なるバンクにある第2のブロックの
左上および右下の四分区間を占める。また、四分区間7Q
1と7Q4が、同じ物理的関係を維持して、それぞれ第1の
ブロックの左上の四分区間を占め、そして、四分区間7Q
2と7Q3が、同じ物理的関係を維持し、それぞれ第2のブ
ロックの右上四分区間を占める。
【0135】3線形補間の間に、ピクセルが一つのMIPマ
ップの4つのテクセルと隣接のMIPマップの4つのテクセ
ルの間にあるテクスチャ・マップの位置にマップするな
らば、すべての8つのテクセルがキャッシュからアクセ
スされる。両方のMIPマップからアクセスされたテクセ
ルは、共通のテクスチャ・データを含み、小さいマップ
からのデータは大きいマップからのデータをフィルタし
たバージョンでる。上で説明したように、対象物のピク
セルが描画されているとき、隣接のピクセルがそのテク
スチャのための同じ2つのMIPマップに頻繁にマップし、
キャッシュへの読み取りは、2つのマップを格納するキ
ャッシュ・ブロックの間で連続的に切り換えられること
を要求する。共通データを隣接のMIPマップからキャッ
シュSDRAMチップの異なるバンクに格納することによっ
て、キャッシュ読み取りが、連続的な読み取りサイクル
の間2つのMIPマップの間で切り換わるとき、再ページ割
り付けのペナルティーが生じない。これは、3線形の補
間の効率的な実施の役にたつ。
【0136】以上のことからわかるように、テクスチャ
が、8以上のマップ番号を持つベース・マップを含むと
き、そのテクスチャのためのブロックの間でのMIPマッ
プの割当ては、説明された実施例に従って事前に決めら
れている。上で説明し、図18に示すようにマップ番号8
を持っているマップの2つの四分区間が一方のバンクの
第1のブロックの事前に決められたロケーションを占
め、そして、他の2つの四分区間が、反対側のバンクの
別のブロック内の事前に決められたロケーションを占め
るので、このようになる。しかし、7以下のマップ番号
でベース・マップを持っているテクスチャについては、
メモリの2つのブロック内の複数のロケーション(各バ
ンクに一つのブロック)がマップを格納するために利用
可能であり、TIMによって選ばれる。複数のマップの部
分がデータの一つのブロックを共有するとき、サブテク
スチャ識別子(ID)が、下で説明された態様の共有され
たブロック内の各マップのロケーションを識別するため
に割り当てられる。
【0137】図17のMIPマップのシリーズの組織に加え
て、図18も、異なるテクスチャ(すなわち、チェス盤パ
ターン)からのMIPマップの第2のシリーズが、メモリ・
ブロックの間で割り当てられる態様を示す。この第2の
テクスチャのMIPマップは、小分けされて、データの別
々のブロックに第1のテクスチャと同じ態様で格納され
る。図18の組織が別々のブロックに組織されつつあるも
のとして異なるテクスチャのMIPマップを示すけれど
も、2つの異なるテクスチャからのテクスチャ・データ
が、同じブロック内に格納されることができることが理
解されなければならない。上で示したように、一つの実
施例において、キャッシュ・メモリが、テクスチャマッ
ピング・データの64のブロックまで格納することがで
き、各ブロックが256x256テクセルを含む。キャッシュ
・メモリが、2つのバンクに分割され、ブロック0-31が
バンクゼロにあり、ブロック32-63がバンク1にある。キ
ャッシュ・ディレクトリは、キャッシュのブロックに対
応する最高64のブロック・タグ・エントリを含む。キャ
ッシュ・ディレクトリ内の各ブロック・タグの物理的な
ロケーションは、キャッシュ・メモリ内のテクスチャ・
データの対応するブロックの物理的なロケーションを識
別する。ブロックインデックスは、ブロックのロケーシ
ョンを示すブロック・タグから生成される。キャッシュ
の任意のテクセルのためのキャッシュ・アドレスは、そ
のブロックのブロックインデックスおよびブロック内の
テクセル・アドレスから形成される。テクセル・アドレ
スは、テクセルのために下位の補間されたS、T座標を含
み、そして、また下に説明するサブテクスチャ IDから
のビットを含みうる。
【0138】図19は、四分区間に小分けされる9のマッ
プ番号を持っているテクスチャMIPマップの例を示す。M
IPマップは、512x512テクセルの大きさであり、したが
って各四分区間は256x256テクセルの大きさであり、メ
モリの一つのブロックに対応する。この発明の一つの実
施例に従って、TIMによって単純な方式が、MIPマップの
各四分区間が、割り当てられるべきキャッシュのバンク
を決定するために実行される。下で説明するように、各
MIPマップ四分区間について、四分区間のためのSおよび
T座標の最上位ビットの値に対する論理的排他的OR演算
の結果が、その四分区間が割り当てられるキャッシュの
SDRAMバンクを決める。
【0139】512x5l2テクセルのマップについて、9つの
S座標ビットS[8:0]および9つのT座標ビットT[8:0]が、
マップ内の各テクセルのロケーションを指定する。四分
区間境界は、SおよびT次元の両方においてマップの中途
の点で確立され、最上位のSおよびT座標ビットS[8]およ
びT[8]で表わされる。したがって、9のマップ番号を持
っているMIPマップの4つの四分区間の各々についてキャ
ッシュ・バンクを決定するために、排他的OR演算が、
各四分区間についてその対応する最上位のSおよびT座標
ビットS[8]のおよびT[8]の値に対して実行される。同様
に、10のマップ番号を持っているMIPマップのために、
各四分区間のためのキャッシュ・バンクが、その最上位
のSおよびT座標ビットS[9]およびT[9]の対応する値に対
する排他的OR演算によって決定される。奇数のマップ
番号を持っているMIPマップのために、隣接のマップか
らの共通のデータが異なるバンクに格納されるよう、排
他的OR演算の結果が反転される。
【0140】図19の例において、ブロック1ないしブロ
ック4がそれぞれ512x5l2テクセル・マップの左上四分区
間、右上四分区間、左下四分区間および右下四分区間に
対応する。ブロックlないしブロック4についてビットS
[8]、T[8]がそれぞれ[0,0]、[1,0]、 [0,1]、および[1,
1]に等しい。したがって、ブロックlについてXOR演算S
[8] XOR T[8]の結果は、ゼロに等しい。マップが奇数の
マップ番号(すなわち、9)を持つので、この結果の反
転(1に等しい)が、ブロック1が、キャッシュのバンク
1に格納されることを示すのに使用される。ブロック2に
ついては、XOR演算動作S[8]XOR T[8]の結果の反転がゼ
ロに等しく、ブロック2がキャッシュのバンク0に格納さ
れることを示す。ブロック3およびブロック4のそれぞれ
については、XOR演算S[8] XOR T[8]の結果の反転がそれ
ぞれ1およびゼロに等しく、ブロック3が、バンク1に格
納され、ブロック4がバンク0の格納されることを示す。
【0141】図19の例に示すように、同じテクスチャに
ついて10のマップ番号を持っているマップについては、
マップが1024xl024テクセルの大きさであるから、マッ
プはそれぞれ256×256のテクセルの16のブロックに分割
される。各ブロックのために、S [9] XOR T[9]の結果
が、その特定のブロックのバンク番号を示す。10のマッ
プ番号を持つマップの各ブロックに対するXOR演算の結
果は、それらが、マップ番号9を持っているマップに隣
接するものに対するものであるから、反転されず、2つ
のマップの中の対応する四分区間が異なるキャッシュ・
バンクに格納される。
【0142】マップのサイズに依存して、マップを表す
テクスチャ・データのブロックのためのブロック・タグ
は、特定のMIPマップ内のブロックのロケーションを示
す少なくとも一つの高次S座標ビットおよび一つの高次T
座標ビットを含むことができる。9のマップ番号を持っ
ている512x5l2テクセルMIPマップについては、MIPマッ
プ内の各ブロックのロケーションを示すために、一つの
S座標ビットと一つのT座標ビットだけがブロック・タグ
の中で必要である。10のマップ番号を持ちデータの16の
ブロックを含む1024x 1024のテクセルMIPマップについ
ては、MIPマップ内の各ブロックのロケーションを示す
ために、2つのS座標ビットと2つのT座標ビットがブロッ
ク・タグの中で必要である。8以下のマップ番号を持っ
ているマップについては、ブロック・タグの中でSおよ
びTビットは、必要ない。ホストコンピュータのメイン
・メモリからキャッシュ・メモリにテクスチャMIPマッ
プ・データをダウンロードしているとき、TIMが、デー
タの各ブロックを書かなければならない特定のバンクを
決定するために上に説明された排他的OR方式を使用し
て、ブロック・タグの上位レベルのSおよびT座標ビット
をデコ―ドする。
【0143】不使用のメモリ空間が最小になるようにテ
クスチャ・データを割り当てるために、データの各ブロ
ックを、64x64テクセルの16のサブ・ブロックに、さら
に小分けすることができる。テクスチャ・データの各サ
ブブロックは、ブロック内の特定のサブブロックのロケ
ーションを識別するサブ・テクスチャIDを含む。サブ・
テクスチャIDは、2つのSビット、S[1:0] および2つのT
ビット、T[1: 0]を含む。1つまたは複数のテクスチャ
の1つまたは複数のMIPマップからの複数のサブ・テク
スチャは、一つのブロックに格納されることができる。
【0144】図20は、それぞれバンク0およびキャッシ
ュの一つに割り当てられ、それぞれ64x64テクセルの大
きさの16のサブ・テクスチャに小分けされたブロックl
とブロック2を図示する。各ブロックのサブ・テクスチ
ャが、ST0-ST15の名称をつけられ、2つのS座標ビットと
2つのT座標ビットを含むサブ・テクスチャIDによって識
別される。サブ・テクスチャは、上述のメモリ配分計画
と一致するよう、2つのキャッシュ・バンク内のミラー
・ロケーション以外に一貫した名称を持つ。64x64テク
セルのサブ・テクスチャのサイズが、典型的に選ばれ
て、変えられることができる。例えば、より小さいサブ
・テクスチャは、より多くのテクスチャを同じブロック
内にパックするのを可能にする。サブ・テクスチャのサ
イズが小さくなるにつれて、サブ・テクスチャIDがより
多くのビットを含む必要があることが理解されなければ
ならない。
【0145】レンダリングの間、補間すべきテクセルの
各ストリームについて、テクスチャID、サブ・テクスチ
ャIDおよびそれらのテクセルと関連するテクスチャのベ
ース・マップのサイズを表す8ビットのワードが、三次
元のパイプラインを通して、一時的にそのデータを20ビ
ットのレジスタ(図示しない)に格納するタイラー/境
界チェッカーに提供される。補間されるテクセルが異な
るサブ・テクスチャIDまたはテクスチャIDを持つとき、
新しいデータが、タイラー/境界チェッカーに提供さ
れ、レジスタに格納される。サブ・テクスチャIDは、下
に説明するように、テクセル・アドレスの一部として使
用されることがある。
【0146】テクセル・アドレスがサブ・テクスチャID
のS、T座標ビットを含むかどうかは、アドレスされつつ
あるマップのサイズおよびそのテクスチャのベース・マ
ップのサイズに依存する。アドレスされつつあるマップ
が7以下のマップ・サイズを持ち、また、その対応する
ベース・マップのサイズが7以下であるならば、テクセ
ル・アドレスのある上位のアドレス・ビットが、下で説
明されるように、ブロック内のサブ・テクスチャのロケ
ーションをアドレスするためにサブ・テクスチャIDから
のビットを含む。上で説明したように、ベース・マップ
が8以上のマップ番号を持つとき、データのそれらのそ
れぞれのブロック内のテクスチャのMIPマップ四分区間
のすべてロケーションが、事前に決められる。したがっ
て、8以上のマップ番号を持つテクスチャのマップの一
つからテクセルがアクセスされるとき、それらの事前に
決められたロケーションが、知られていて、サブ・テク
スチャIDを使用することなく各四分区間のテクセル・ア
ドレスの上位ビットを生成するために使用される。しか
し、テクスチャのベース・マップが7以下のマップ番号
を持つとき、MIPマップ四分区間のロケーションが、事
前に決められておらず、サブ・テクスチャIDビットが、
サブ・テクスチャのロケーションを決定するためにテク
セル・アドレスの上位ビットとして使用される。
【0147】上で述べたように、そのテクスチャからの
ベース・マップが十分に小さい限り、異なるテクスチャ
からの複数のマップが、データの一つのブロックの異な
るサブ・テクスチャ内に格納されることができる。これ
が生じるとき、各マップのためのテクスチャ・アドレス
がサブ・テクスチャIDビットを含む。例えば4つの異な
るテクスチャからの7のマップ番号を持つ4つの異なるマ
ップが、ブロック内の異なるサブ・テクスチャの間で割
り当てられ、そして各テクスチャのベース・マップのマ
ップ番号が7であるならば、サブ・テクスチャIDからの
一つのS座標ビットと一つのT座標ビットが、テクスチャ
を見分けるためのテクセル・アドレスの一部となる。タ
イラー/境界チェッカーがテクセル・アドレスを計算す
るルーチンを図22を参照して説明する。
【0148】図の実施例で、テクスチャMIPマップ・デ
ータは、一度に一つのブロックずつダウンロードされ
る。しかし、代わりに、サブ・テクスチャがメイン・メ
モリからダウンロードされるようにサブ・テクスチャID
をブロック・タグに含めることができる。また、この実
施例の中で説明されたブロックとサブ・テクスチャのサ
イズは、単に例としてのものであり、任意のアプリケー
ションに合せて変えることができる。発明の一つの実施
例の中で、TIMは、図35を参照して下に説明するよう
に、テクスチャ・データを割り当てることができる。
【0149】F.キャッシュ・ブロック・タグとブロック
インデックスキャッシュ・ディレクトリが、その64のエ
ントリの各々のためのブロック・タグを含み、各エント
リのための対応するブロックインデックスを識別する。
ブロックインデックスが、テクスチャ・データの対応す
るブロックの始めが格納されているキャッシュにおける
物理的なロケーションを識別する。ブロック・タグは、
テクスチャ・データの各ブロックを図21に示された態様
でユニークに識別する23ビットの識別子である。
【0150】テクスチャ・データの任意のテクセルをユ
ニークに識別するために、それが対応するテクスチャが
識別されなければならない。一つの実施例において、テ
クスチャマッピング・ハードウェアが、テクスチャをユ
ニークに識別する8ビット・テクスチャIDを支援する。
さらに、同じブロック内に格納された異なるテクスチャ
からのテクスチャ・データのために、付加的な4ビット
のサブ・テクスチャIDが、テクスチャを識別するために
ハードウェアによって支援される。このように、テクス
チャマッピング・ハードウェアが、任意の一つの時にア
クティブであることができる212すなわち4,096のユニ
ークなテクスチャを支援する。
【0151】上で示したように、各テクスチャは、一連
のMIPマップによって表される。上で示したように、MIP
マップの各々は、MIPマップのシリーズにおけるその位
置を示すマップ番号を備えている。このように、データ
の任意のテクセルは、テクスチャID、サブ・テクスチャ
IDおよびそのテクスチャのベース・マップのサイズだけ
によって識別されるのではなく、それが対応するMIPマ
ップのマップ番号によっても識別される。最後に、テク
セルはMIPマップ内でそのSおよびT座標(すなわち、そ
の補間されたS,T値)によってユニークに識別される。
【0152】サブ・テクスチャIDおよびテクスチャ・マ
ップ・ベース・サイズ以外に、テクセルをユニークに識
別する上に説明したパラメーターが、23ビットのブロッ
ク・タグを生成するために使用される。マップ番号なら
びにSおよびT座標に関し、SおよびT座標を生成するため
に使用されたハードウェアは、15ビットに限られてい
る。したがって、この実施例について、ハードウェアに
よって支援された最も大きいテクスチャ・マップが、15
ビットの Sフィールド[14:0]および15ビットの Tフィ
ールド[14:0]を持ち、大きさにおいて32Kx 32Kテクセ
ルである最大テクスチャ・マップになる。上で示したよ
うに、テクセル・データの各ブロックは、256 x 256の
テクセルを含む。このように、下位のSおよびTビット
(すなわち、T[7:0]とS[7:0])が、テクセル・データの
ブロック内の特定のテクセルを識別するために使用され
る。高次のSおよびTビットだけ(T[14:8]およびS[14:
8])が、テクセル・データの特定のブロックを識別する
ためにブロック・タグにおいて使用される。
【0153】上で述べたように、各MIPマップが、その
対応するテクスチャのためのマップのシリーズ内でそれ
をユニークに識別するマップ番号を割り当てられる。一
つのテクスチャのためのマップのシリーズにおけるMIP
マップの数と関係なく、シリーズの中で最も小さいMIP
マップ(すなわち、一テクセルの大きさ)にマップ番号
0が割り当てられる。32KX32KテクスチャのためのMIPマ
ップの最も大きいシリーズが16のMIPマップを含むか
ら、支援される最も大きいマップ番号は、15である。
【0154】ブロック・タグが扇形に広がる態様が図21
の表に示される。ブロック・タグ[22:15]の高次の8つ
のビットは、テクスチャ・データのブロックによって表
されたテクスチャのテクスチャIDに対応する。ブロック
・タグ[13:00]の下位ビットは、高次のTおよびS座標、
T[14:08]およびS[14:08]に対応する。ブロック・タグ
[14]は、高次T座標フィールドの中の値と関連し、マッ
プ番号の識別を可能にするマップ・ビットに対応する。
最大32Kx32Kより小さいマップは、全面的なSおよびTア
ドレス・フィールドを使わないので、マップが小さいほ
ど、不使用の高次のSおよびTアドレス・ビットが多くな
ることを理解しなければならない。図21に示すように、
8より大きいマップ番号を持っているマップについて、
最下位の不使用のT座標ビットに対応するブロック・タ
グ・ビットが論理的「0」にセットされ、そして、残り
の高次T座標ビットに対応するブロック・タグ・ビット
およびマップ・ビットが、論理的「1」にセットされ
る。T座標ビットのすべてを使用するマップ番号15につ
いて、マップ・ビットが、論理的「0」にセットされ
る。マップ・ビットおよび高次T座標ビット[14:8]に対
応するブロック・タグ・ビット[14:07]を読みとること
によって、左から右に読みとって遭遇した第1の論理的
な「0」の位置が、ブロック・タグによって表されるマ
ップ番号を示す。論理的1が、ブロック・タグ・ビット
[14:08]のすべてに含まれるならば、マップ番号8以下
が表される。
【0155】先に述べたように8以下のマップ番号を持
っている特定のテクスチャのすべてのマップが、データ
の2つのブロック内に格納され、各ブロックがキャッシ
ュの異なるバンク内に位置する。8以下のマップ番号を
持つマップの各々の2つの四分区間、または半分が2つの
ブロックの各々内に格納される。ブロック・タグ・ビッ
ト[07]は、2つのブロックのどちらに8以下のマップ番号
を持っているマップの各半分部分が格納されるかを表
す。このように8のマップ番号を持っているマップの各
々のためにブロック・タグ・ビット[07]は、そのマップ
(バンク0のブロックに格納されている)の半分(2つの
四分区間)のために「0」の値を持ち、そのマップ(バ
ンク1のブロックに格納されている)の他の半分(2つの
四分区間)のために「1」の値を持つ。8以下のマップ番
号を持つ特定のテクスチャからのマップのすべてが2つ
のブロック内に格納されるので、それらの2つのブロッ
クを識別するために一つのブロック・タグ・ビットだけ
が使用されることが理解されねばならない。番号8以下
を持っているマップの各々のための特定のマップ番号
は、したがって、ブロック・タグフィールドの一部とし
て格納されない。
【0156】8以下のマップ番号を持つマップのそれぞ
れの各四分区間についてのブロック・タグ・ビット[07]
の値が、四分区間が格納されるべきバンクを決定するた
めの方式に基づいて計算される。この方式は、偶数番号
のマップの各四分区間のMSBの値の論理的排他的OR演
算および奇数番号の各四分区間についての演算の反転を
含む。
【0157】図21に示すように、高次Sアドレス・ビッ
トに対応するブロック・タグ・ビット[6:0]が、Sアド
レス・ビットが不使用のとき小さいマップのための論理
的「0」にセットされるので、これらのビットのいずれ
かが、マップ番号に関連して論理的「1」として検出さ
れ、それらが論理的「0」に等しいべきであることが示
されるならば、キャッシュ・ディレクトリ・エントリに
有効なデータがないことを示すのに使用することができ
る。
【0158】上で示したように、各MIPマップ四分区間
について、四分区間の最上位のSおよびT座標の値の論理
的な排他的論理和(XOR)演算の結果が四分区間が割り
当てられるキャッシュのSDRAMバンクを示す。偶数マッ
プ番号を持っているマップについて、バンク番号が、こ
のXOR演算と等しく、奇数のマップ番号を持っているマ
ップについてバンク番号は、、XOR演算の論理的反転に
等しい。これが、図21の表の右の列に示され、記号
「Λ」がXOR演算を、記号「!」が論理的反転を示す。9
以上のマップ番号を持っているマップについて、各四分
区間がデータの少なくとも一つの全ブロックを消費し、
各ブロックが、図21の表の最後の列に示されるXOR演算
によって示されるバンクに格納される。
【0159】8以下のマップ番号を持っているマップに
ついては、それらのマップのすべてが、各バンクに一つ
のブロックで、データの2つのブロックを占める。図21
の表の最後の2つの行が、8以下のマップ番号を持つ任意
のマップの異なる半分(2つの四分区間)に対応する。
ブロック・タグ・ビット[07]は、バンク・ゼロ・ブロッ
クまたはバンク1ブロックのどちらに2分の1マップが
格納されるかを表す。そのビット[07]の値が、説明した
XOR演算に基づいて計算される。たとえば、マップ番号8
のマップでは、マップの各四分区間について、ブロック
・タグ・ビット[07]は、S[7] XOR T[7]に等しい。マッ
プ番号7を持っているマップの各四分区間では、ブロッ
ク・タグ・ビット[07]は、S[6] XOR T[6]の反転に等し
い。同様に、ブロック・タグ・ビット[07]が、より小さ
いマップの各四分区間について計算され、奇数の番号を
つけられたマップについてだけXOR演算の結果を反転す
る。以上のことからわかる各マップ(8以下のマップ番
号持つ)の2つの四分区間が同じブロックに格納される
ので、各マップのそれらの2つの四分区間は、同じブロ
ック・タグ・ビット[07]を持つ。ヒットが、補間された
S、T座標(アクセスすべきテクセルをアドレスする)お
よびキャッシュ・ディレクトリにおける23ビットのブロ
ック・タグの一つの間に生じるとき、キャッシュ・ディ
レクトリが、そのテクセルが格納されるキャッシュ・ブ
ロックを含むキャッシュ・メモリ内の物理的なロケーシ
ョンを識別するブロックインデックスを生成する。キャ
ッシュは、任意の一時点でテクセル・データの64のブロ
ックを格納する。したがって、キャッシュ・メモリのブ
ロック・アドレスを識別するためには、26=64なので、
6ビットのブロックインデックスが用意され、先に述べ
たようにキャッシュへの高次アドレス・ビットの役目を
果たす。
【0160】テクセル・アドレスは、256x256テクセル
のブロック内でアクセスされるべきテクセルのロケーシ
ョンを示す、ビットS[7:0]およびT[7:0]を含む16ビット
のワードである。テクセル・アドレスは、補間された
S、T座標、アクセスされるべきマップのマップ番号、テ
クスチャおよびサブ・テクスチャのID、およびテクスチ
ャのベース・マップ・サイズ、から図22を参照して下で
説明するルーチンに従って計算される。上で示したよう
に、テクセル・アドレスのLSB SビットおよびLSBTビッ
トが、テクセルが格納される適当なインタリーブを決定
するためにデコ―ドされる。テクセル・アドレスの残り
の14ビットが、ブロックインデックスの6ビットと関連
して、キャッシュのデコードされたインタリーブ内のSD
RAM対に提供されるキャッシュ・アドレスとして作用
する(ブロックインデックスの6ビットがキャッシュ・
アドレスの6つのMSBである)。
【0161】G.テクセル・アドレス計算 レンダリングの間、タイラー/境界チェッカー要素72
が、パラメーター補間回路64から、アクセスされるべき
テクセルの補間されたS、T値およびテクセルがアクセス
されるべきマップのマップ番号を表す4ビットのワード
を受け取る。パラメーター補間回路から受け取られた補
間されたSおよびT座標の値の各々は、16の整数ビットお
よび8つの小数ビットを含む。マップ番号を表わす4ビッ
トのワードは、マップ番号0(一テクセルの大きさ)か
らマップ番号15(32kx32kテクセルの大きさ)にわたる
マップを含み、先に述べたように、勾配から計算され
る。補間されたS、T値とキャッシュ・ディレクトリのブ
ロック・タグ・エントリとの比較が、次いで実行され
る。ブロック・タグの一つでヒットが生じるならば、ブ
ロックインデックスが生成される。キャッシュ・ディレ
クトリ・サーチが実行されているのと同じ時に、テクセ
ル・アドレスが、図22のフローチャートを参照して下で
説明されるルーチンに従って計算される。
【0162】テクセル・アドレスは、テクスチャID、サ
ブ・テクスチャID、マップ番号、ベース・マップ番号お
よびテクセルの補間されたS、T座標に基づいてタイラー
/境界チェッカーによって計算される。タイラー境界チ
ェッカーは、この情報のすべてを持つ。アクセスされる
各ユニークなテクセルについて、タイラー/境界チェッ
カーが、補間されたS、T座標(SおよびTのそれぞれにつ
いて16の整数ビットおよび8つの小数ビットを含む)、お
よびテクセルがアクセスされることになっているマップ
番号を表わす4ビット・ワードを、パラメーター補間回
路から受け取る。さらに、三次元のパイプライン(パラ
メータ補間器を通ってくる)を通して、8ビットのテク
スチャID、4ビットのサブ・テクスチャID、およびその
テクスチャに対するベース・マップのサイズを表す8ビ
ットのワードを含むコマンドが受け取られる。ベース・
マップのサイズを表す8ビットのワードは、マップ命番
方式に対応し、それぞれベース・マップのS方向とT方向
のサイズを規定する4つのSビットおよび4つのTビットを
含む。例えば、4ビットのSおよびTワードのそれぞれ
は、ゼロ(一つのテクセルの大きさに対応する)から15
(32 kのテクセルの大きさに対応する)までの値の範囲
を持つことができる。テクスチャIDを含むデータの20ビ
ット、サブ・テクスチャIDおよびベース・マップ番号
が、キャッシュからアクセスされる後続のテクセルのた
めの新しい異なるデータで置き換えられるまで、タイラ
ー/境界チェッカー内の20ビットのレジスタ(図示しな
い)に一時的に格納される。この情報で、タイラー/境
界チェッカーは、各テクセルのためのテクセル・アドレ
スを計算する。
【0163】上で説明したように、8以上のマップ番号
のベース・マップ(256x256テクセル以上のベース・マ
ップに対応する)を持つテクスチャについては、そのテ
クスチャ内の各マップの四分区間が、テクスチャ・デー
タおよびキャッシュ・メモリ・バンクのブロック内で事
前に決められたロケーションを持つ。このように、その
ようなテクスチャの任意のテクセルのためのテクセル・
アドレスの各ビットが、既知の事前に決められた配分計
画に従って計算される。7以下のマップ番号のベース・
マップ(128x 128テクセル以下のベース・マップに対応
する)を持っているテクスチャについては、しかし、そ
のテクスチャのマップの各四分区間のためにいくつかの
別個の記憶場所が利用可能であり、したがって、テクセ
ル・アドレスのある上位レベルのビットが、サブ・テク
スチャIDのいくつかまたはすべてのビット(またはそれ
らのビットの反転)を含む。
【0164】タイラー/境界チェッカーによってテクセ
ル・アドレスを計算するために実行されたルーチンは、
図22のフローチャートによって示される。ルーチンは、
完了するのに一つのサイクルを必要とする。ルーチン
は、テクスチャマッピング・チップの境界チェッカー部
分を形づくる一組の論理ゲート(図示しない)によって
実行される。図22のフローチャートによって示されるル
ーチンを実行するためにどのように論理ゲートを実行す
るかは、当業者に自明である。たとえば、ルーチンが、
ベリログ(Verilog)のようなソフトウェア・シミュレ
ーション言語で書くことができ、それからシノプシス
(Synopsys、商標)のような合成ツールによってロジッ
ク・ゲート回路に変換される。そのような合成ツール
は、汎用プロセッサ上で作用する。ルーチンは、代わり
にソフトウェアで書かれ、コンピュータ・プロセッサに
よって実行されることができる。
【0165】ルーチンが、ステップ250で始まり、テク
セル・アドレス・ビットS[7:0] T[7:0]が、補間された
S、T座標ビットS[7:0]、T[7:0]に等しく予めセットされ
る。テクセル・アドレスのビットの各々は、後にルーチ
ンでリセットされなければ、このステップで予めセット
される(対応するSまたはT座標に等しく)値のまま残
る。次いで、ルーチンがステップ252へさらに進み、補
間中のテクセルが格納される特定のマップが8以上のマ
ップ番号を持つかどうか判断する。そうならば、ルーチ
ンはそのようなテクセルについて終わり、テクセル・ア
ドレスのビット値が補間されたS、T座標に等しくプリセ
ットされたまま残る。
【0166】マップ番号が8以上でないならば、ルーチ
ンがステップ254へ進み、テクセルがバンク番号1バン
ク番号0に格納されているかどうかが決定される。先に
述べたように、テクセルがバンク番号1またはバンク番
号ゼロに格納されているかどうかが、ブロック・タグ・
ビット[07]の値を調べることによって知られる。テクセ
ルがバンク番号1に格納されているならば、ルーチンが
ステップ256に進み、そこではあるテクセル・アドレス
・ビットがそれらのプリセット値からリセットされる。
マップ番号1ないし4のマップについて、テクセル・アド
レス・ビットS[4]=1で、マップ番号1および2のマップに
ついては、テクセル・アドレス・ビットS[2]=1である。
テクセルが、バンク0に格納されるならば、ルーチンが
ステップ258に進み、そこではマップ番号0ないし5のマ
ップについて、テクセル・アドレス・ビットS[5]=1で、
マップ番号0ないし3のマップについて、テクセル・アド
レス・ビットS[3]=1、マップ番号0および1のマップにつ
いては、テクセル・アドレス・ビットS[1]=1である。
【0167】ステップ256および258のいずれからも、ル
ーチンがステップ260に進み、そこでベース・マップが8
以上のマップ番号を持つかどうかが判断される。そうで
あるならば、ルーチンがステップ262に進み、そこで、
テクセルがバンク0またはバンク1内に格納されているか
どうかが判断される。テクセルがバンク1に格納されて
いるならば、ルーチンがステップ264に進み、そこで
は、マップ番号7を持っているマップについて、テクセ
ル・アドレス・ビットS[7]=0であり、0ないし6のマップ
番号を持っているマップについて、テクセル・アドレス
・ビットS[7:6]=0:1である。ルーチンは、そのようなテ
クセルについて終えられる。
【0168】バンク0に格納されたテクセルについて、
ルーチンがステップ266に進み、そこでは、7のマップ番
号を持っているマップについて、テクセル・アドレス・
ビットS[7]=1で、0ないし6のマップ番号を持っているマ
ップについて、テクセル・アドレス・ビットS[7:6]=1:0
である。ルーチンは、そのようなテクセルについて次い
で終了する。
【0169】ベース・マップが8以上のマップ番号を持
たないならば、ルーチンがステップ268に進み、そこ
で、ベース・マップが7に等しいマップ番号を持つかど
うかが判断される。そうであるならば、ルーチンがステ
ップ270へ進み、そこで、テクセルがバンク0または1に
格納されているどうかが判断される。テクセルがバンク
1に格納されていれば、ルーチンは、次いでステップ272
に進み、そこでは、マップ番号7について、テクセル・
アドレス・ビットS[7]がサブテクスチャIDビットS[l]の
反転に等しく、テクセル・アドレス・ビットT[7]がサブ
テクスチャIDビットT[l]に等しく、そしてマップ番号0
ないし6を持っているマップについて、テクセル・アド
レス・ビットS[7:6]がサブテクスチャIDビットS[1]およ
び1の反転に等しく、テクセル・アドレス・ビットT[7]
が、サブテクスチャIDビットT[l]に等しい。ルーチン
は、そのようなテクセルについて終了する。テクセルが
バンク0に格納されているならば、ルーチンがステップ2
74に進み、そこでは、マップ番号7を持っているマップ
について、テクセル・アドレス・ビットS[7]が、サブテ
クスチャIDビットS [1]に等しく、テクセル・アドレス
・ビットT[7]がサブテクスチャIDビットT[1]に等しく、
マップ番号0ないし6を持っているマップについて、テク
セル・アドレス・ビットS [7:6]がサブテクスチャIDビ
ット[1]および0にそれぞれ等しく、そして、テクセル・
アドレス・ビットT[7]がサブテクスチャIDビットT[l]に
等しい。ルーチンは、そのようなテクセルについて終了
する。
【0170】テクスチャのベース・マップが8以上のマ
ップ番号を持たず(ステップ260で決定する)、7に等し
くもない(ステップ268で決定する)ならば、もちろん
テクスチャのベース・マップが、6以下マップ番号を持
つことが知られ、ルーチンがステップ276に進み、そこ
で、テクセルがバンク0またはバンク1に格納されている
かどうかが判断される。テクセルがバンク1に格納され
ているならば、ルーチンがステップ278に進み、そこで
は、テクセル・アドレス・ビットS[7:6] がサブテクス
チャIDビットS[1:0]の反転に等しく、そして、テクセル
・アドレス・ビットT[7:6]がサブテクスチャIDビットT
[1:0]に等しい。ルーチンは、そのようなテクセルにつ
いて完了する。テクセルがバンク0に格納されているな
らば、ルーチンがステップ280に進み、そこでは、テク
セル・アドレス・ビットS[7:6]がサブテクスチャIDビッ
トS[1:0]に等しく、テクセル・アドレス・ビットT[7:6]
が、サブテクスチャIDビットT[1:0]に等しい。ルーチン
は、そのようなテクセルについて完了する。
【0171】H. テクスチャ・データ組織の例 次の例が、TIMが発明の上に説明した実施例に従って、
テクスチャ・データを組織する手順を説明する。特定の
アプリケーションについて、描画されるべきプリミティ
ブAがテクスチャAにマップし、プリミティブBがテクス
チャBにマップすることがある。一つの可能性は、TIMが
テクスチャAをテクスチャ・データの複数のブロックに
組織し、それから、テクスチャAと同じブロック内で、
テクスチャBを異なるサブ・テクスチャに組織すること
である。TIMが、プリミティブAおよびBを描画する前
に、テクスチャAおよびBを含むテクスチャ・データのブ
ロックをキャッシュ・メモリにダウンロードする。
【0172】代わりに、TIMは、テクスチャAをテクスチ
ャ・データの複数のブロックに組織し、それからキャッ
シュ・メモリにテクスチャAを含むブロックをダウンロ
ードすることができる。TIMは、次いでテクスチャBを、
メイン・メモリにおいてテクスチャAと同じブロック内
で異なるサブ・テクスチャに組織することができる。こ
の状況において、TIMは、テクスチャマッピング・チッ
プ46(図6)の演算を停止させるコマンドを出し、テク
スチャ・データ(同じブロックのテクスチャAおよびBを
含む)の新しく組織されたブロックをテクスチャマッピ
ング・システムのキャッシュ・メモリにダウンロードす
る。停止状態が実行されず、メイン・メモリからの新し
く組織されたデータがテクスチャマッピング・システム
のキャッシュ・メモリにダウンロードされなかったなら
ば、間違ったテクスチャマッピング・データが、プリミ
ティブBのレンダリング中にアクセスされることがあり
うることを理解しなければならない。テクスチャBを含
むデータのブロックのための読み取りキャッシュ・タグ
が、テクスチャAを格納するキャッシュにおけるデータ
のブロックに対応するブロック・タグとマッチするの
で、プリミティブBを描画しているとき、ヒットがキャ
ッシュ・ディレクトリの中で生じることがあるから、こ
のようになる。しかし、キャッシュの中のデータのブロ
ックは、テクスチャAに関連するテクスチャ・データだ
けを格納しテクスチャBのものを格納しない。
【0173】I. 3次元のプリミティブ・パイプライン
のバイパスとテクスチャ・マップをダウンロードするた
めの割込み方式 上で示したように、ハードウェア装置の一つの機能が、
新しいテクスチャのためのMIPマップが、三次元のプリ
ミティブ・データを扱うためのパイプラインとは別のデ
ータ経路を通してテクスチャマッピング・ハードウェア
の局部メモリにダウンロードされるのを可能にする。図
に表された実施例を参照すると、テクスチャマッピング
・ボード12(図6)およびテクスチャマッピング・チッ
プ46(図8)の各々は、三次元のプリミティブ・データ
およびテクスチャ・データをそれぞれ受け取るために別
々のポートを持つ。三次元のプリミティブ・データが、
集信装置チップ36からバス18を通して受け取られ、一
方、テクスチャ・データは、2次元の幾何アクセラレー
タ・チップ34からバス24を通して受け取られる。したが
って、新しいテクスチャ・データがホストコンピュータ
15からTIMによってテクスチャマッピング・チップ46に
ダウンロードされるとき、フロントエンド・ボード10お
よびテクスチャマッピング・チップ46を通る三次元プリ
ミティブ・パイプラインは、フラッシュされる必要がな
く、それによって、従来のテクスチャマッピング・シス
テムと比較されるとき、増大したバンド幅を提供する。
【0174】従来のテクスチャマッピング・システム
は、新しいテクスチャ・データがテクスチャマッピング
・ハードウェアの局部メモリにダウンロードされるとき
はいつでも、三次元のプリミティブ・パイプラインのフ
ラッシングを必要とした。テクスチャ・データをダウン
ロードするための、三次元のプリミティブ・パイプライ
ンをバイパスする別のデータ経路は、特に上で説明し
た、テクスチャマッピング・ボード12の局部メモリがキ
ャッシュとして実施される実施例と関連して有益であ
る。上で示したように新しいテクスチャ・データがキャ
ッシュにダウンロードされるとき、テクスチャのMIPマ
ップの全シリーズではなく、必要なMIPマップの部分だ
けがダウンロードされる。このように、三次元のパイプ
ラインのバイパスは、パイプラインをフラッシュするこ
となくキャッシュ・ミスを扱うことを可能にする。
【0175】上で示したように、図7に示した一つの実
施例において、グラフィックス・システムのいくつかの
部分は、システムのバンド幅を増やすために2重にされ
ている。テクスチャマッピング・ボード12には2つのテ
クスチャマッピング・チップ46Aおよび46B、ならびに2
つのキャッシュ・メモリ48Aおよび48Bが備えられてい
る。この実施例において、両方のキャッシュ・メモリ48
は、両方の2つのテクスチャマッピング・チップが同時
に同じテクスチャ・データを使用してプリミティブに典
型的に作用するので、いつでも同じテクスチャ・データ
を維持する。したがって、一つによってミスが受け取ら
れるときにいつでも両方のキャッシュを更新することに
より、この実施例は、同じテクスチャ・データが、別々
の演算の中で2つのキャッシュにダウンロードされなく
てもよいようにすることによって、システムのバンド幅
を保全する。
【0176】図7の二部分からなるテクスチャマッピン
グ・チップ実施例において、各キャッシュ・メモリが、
ホストコンピュータからダウンロードされたテクスチャ
・データだけで更新され、テクスチャマッピング・ハー
ドウェアからローカルに書かれない。したがって、キャ
ッシュの一つからのミスに答えてテクスチャ・データが
ホスト・コンピュータからダウンロードされるときはい
つでも、確実に両方のキャッシュが新しいテクスチャ・
データで更新されるようにすることによって、2つのキ
ャッシュ・メモリの間の整合性が、維持される。このよ
うに、テクスチャマッピング・チップ46の一つからキャ
ッシュ・ミスが生じ、割込みが生成されるとき、両方の
キャッシュ・メモリがダウンロードされたテクスチャ・
データで更新されることができるように両方のテクスチ
ャマッピング・チップ46が停止させられる。さらに、ハ
ードウェアが2つのテクスチャマッピング・チップ46か
ら異なるキャッシュ・ブロックへの同時キャッシュ・ミ
スを支援し、ミスに応答して両方のキャッシュにテクス
チャ・データの両方の新しいブロックをダウンロードす
る。
【0177】図6の実施例において、テクスチャ・デー
タをダウンロードするために2ーD(二次元)幾何アクセ
ラレータ・チップ34を通る2ーDプリミティブ・パイプラ
インを使うことによって、3ーD(三次元)プリミティブ
・パイプラインのバイパスが、達成される。理解しなけ
ればならないテクスチャマッピング・チップ46にテクス
チャ・データをダウンロードするためのデータ経路は、
3-Dプリミティブ・パイプラインをバイパスしながら、
いくつかの別な方法で実施することができる。例えば、
専用のデータ経路がホストコンピュータからテクスチャ
マッピング・ボードに提供されることができる。
【0178】ホストコンピュータは、同時に複数のプロ
セスを作用させることができ、あるシステム資源をロッ
クするためにプロセスを割り当てるためのなんらかの手
法を提供するLJNIXのようなオペレーティング・システ
ムを使うことができる。この場合、プロセスは、ロック
されたとき割り込まれない。このロッキング方式を使用
することによって、あるハードウェア資源を使用するプ
ロセスは、それらの資源のロックを解除するまでプロセ
スが交換(スワップ・アウト)されてしまわないように
することができる。
【0179】一つの実施例において、プロセスによる使
用、すなわち、速いロックおよび遅いロックのために、
2種類のロックが提供される。速いロックが使われると
き、交換(スワップ・イン)されつつあるプロセスが、
適当なハードウェア資源をチェックしてそれらの資源を
使用する最後のプロセスであったかどうか判断する。そ
うであった場合、プロセスは単にハードウェア資源の状
態を復元することなく続く。プロセスが資源を使用する
最後のものでないならば、遅いロックが要求され、プロ
セスが最後に交換(スワップ・アウト)されたときにそ
れらがあった状態に、ハードウェア資源を回復させる。
いくつかの代替技法が、同じ結果を達成するために使わ
れうることを理解しなければならない。
【0180】3-Dプリミティブを描画しながらテクスチ
ャ・データをダウンロードするために2ーDプリミティブ
・パイプラインが使用される実施例において、2-Dおよ
び3-Dのプロセスは、同時には動作されない。この制限
は、ホストコンピュータのオペレーティング・システム
によって提供されるロッキング方式を使用して、3-Dパ
イプラインが空でなければ、2ーDプロセスが開始しない
ようにし、2-Dパイプラインが空でなければ、3-Dプロセ
スが開始しないようにすることによって、満足すること
ができる。。3-Dプロセスが開始するとき、ロックを主
張し、以前のプロセスが2ーDプロセスであったとき、2-D
パイプラインが空になるまで開始を待つ。同様に2ーDプ
ロセスが開始するとき、ロックを主張し、以前のプロセ
スが3-Dプロセスであったとき、3-Dパイプラインが空に
なるまで開始を待つ。
【0181】あるプロセスは、3-Dおよび2-D演算の両方
を実行し、そして、遅いロックをあきらめることなく3-
Dプリミティブと2-Dプリミティブとの間で切り換えるこ
とができる。そのようなプロセスは、ハードウェアに2-
Dプリミティブ・データをダウンロードする前に3-Dパイ
プラインが空であることを確実にし、同様に、3-Dプリ
ミティブ・データをダウンロードする前に2ーDパイプラ
インが空であることを確実にする方式を実行する。この
結果を達成するために、2-Dおよび3-Dプリミティブ・パ
イプラインのそれぞれが空であるかどうかを示すレジス
タ・ステータス・ビットが、提供されてもよい。2-Dお
よび3-Dプリミティブ・データを使う任意のプロセス
は、2ーDおよび3-Dプリミティブ・データの間の切り換え
前にパイプラインが空であることを確実にするために、
このステータスレジスタを読み出す。
【0182】図の中で表された実施例がキャッシュとし
て実行されるテクスチャマッピング・ボード上に局部メ
モリを含むけれども、実施例は、それほど制限されない
ことが理解されなければならない。テクスチャマッピン
グ・システムは、テクスチャマッピング・ボード上の局
部メモリがキャッシュでないようにし、他の技法を使っ
て、プリミティブを描画するために必要とされるテクス
チャマッピング・データの各ブロックを、プリミティブ
が描画される前に、3-Dプリミティブ・パイプラインと
別の経路を通ってダウンロードし、プリミティブが描画
される時テクスチャマッピング・データが局部メモリか
ら得られるようにして、実施することができる。
【0183】さらに、局部メモリのデータのブロックを
更新するためにホストコンピュータに割込みを生成する
ための方式は、多くの他のアプリケーションで使用する
ことができ、テクスチャマッピング・ハードウェアシス
テムにおける使用に制限されないことが理解されなけれ
ばならない。この方式は、処理すべきデータのブロック
を格納するメイン・メモリを持つホストコンピュータ、
および処理中のデータのブロックを格納する局部メモリ
を持つデータ処理ハードウェアを含む任意のデータ処理
システムで有用である。
【0184】J. キャッシュ・ブロック置き換え方式 上で示したようにキャッシュにないテクセル・データの
ブロックについてミスが生じるとき、TIMは、キャッシ
ュ48(図6)にテクスチャ・データの要求されたブロッ
クをダウンロードする。ミスが生じたときキャッシュが
満杯であるならば、キャッシュ・ブロックの一つが、テ
クスチャ・データの新しくダウンロードされたブロック
によって置き換えられる。発明の一つの実施例におい
て、ソフトウェア・デーモンが、どのブロックの使用の
最近度が低いか、およびどのブロックが、低優先度のテ
クスチャ・データを持つかを考慮することによって、ど
のブロックを置き換えるかを判断する。決定を作るため
のルーチンは、下で説明される。テクスチャマッピング
・チップ46が、どのキャッシュ・ブロックを置き換える
かを判断する際にソフトウェアを支援する2組のレジス
タを含む。キャッシュ・ミスが生じるとき、これらのレ
ジスタが3-Dバイパス・データ経路を通してTIMによって
読まれ、どのキャッシュ・ブロックを置き換えるかを判
断するのに使用される。
【0185】レジスタの第1の組は、それぞれキャッシ
ュ48のバンク0および1に対応する2つの32ビットの最
も最近使用されたレジスタMRUOとMRUl(集合的にMRU)
を含む。これらのレジスタの中の各ビットが、その対応
するキャッシュ・バンクに含まれた32のキャッシュ・ブ
ロックの一つに対応する。ヒットがキャッシュのブロッ
クに生じる都度、MRUOおよびMRULの対応するビットがセ
ットされるので、最も最近使用されたレジスタがそのキ
ャッシュについてのヒットを累算する。
【0186】レジスタの第2の組は、それぞれキャッシ
ュのバンク0および1に対応する2つの32ビットの現在
使用中のレジスタCUOおよびCUI(集合的にCU)を含む。
ビットがCUOまたはCUIのいずれかにセットされるとき、
それは、対応するキャッシュ・ブロックが、現在キャッ
シュのミニのディレクトリにあって、置き換えられては
ならないことを示す。キャッシュ・ミニのディレクトリ
は、詳細に下で説明される。
【0187】K. キャッシュ演算の停止 一つの実施例において、プリミティブのレンダリング中
に必要とされる前に3-Dプリミティブのためのテクスチ
ャ・データがメモリ48にダウンロードされるように、禁
止キャッシュ・ミスによってテクスチャマッピング・ボ
ード上の局部メモリ48のキャッシュ演算を停止にする能
力が備えられる。各テクスチャマッピング・チップ46
が、キャッシュとしてのその局部メモリの動作が使用可
能であることを示すステータスビットを含む。このステ
ータスビットがアサートされる(アクティブにされる)
とき、キャッシュ・ミスは、ホストコンピュータの割込
みとテクスチャマッピング・チップの中断になる。ステ
ータスビットがアサートされないとき、テクスチャマッ
ピング・ボード上の局部メモリ48は、キャッシュとして
作用せず、プリミティブによって必要とされる前に任意
のプリミティブのためのテクスチャ・データがメモリ48
にダウンロードされるので、メモリへのミスが生じな
い。発明の一つの実施例において、キャッシュとしての
局部メモリの動作が使用不可能にされるとき、テクスチ
ャ・データと対応する3-Dプリミティブ・データとの同
期を容易にするために、テクスチャ・データが、TIMに
よってテクスチャマッピング・ボード上の局部メモリに
3-Dプリミティブ・パイプラインを通してダウンロード
される。
【0188】L. キャッシュ・ミスに応答してテクスチ
ャ・データをダウンロードするための方式を支援するテ
クセル・ポート・レジスタ上で示したように、テクスチ
ャマッピング・チップ46(図6)は、TIMによってダウン
ロードされたテクスチャ・データを受け取るために使用
されるテクセル・ポート92(図8)を含む。テクセル・
ポートは、テクスチャ・データのダウンロードを支援す
るいくつかのレジスタを含む。これらのレジスタのいく
つかは、レジスタMRUおよびCUを含めて上で説明した。
他のテクセル・ポート・レジスタは、コマンド・レジス
タ、ステータスレジスタ、テクセル・データレジスタ、
ディレクトリ・タグ・レジスタ、キャッシュ・アドレス
レジスタおよびパイプ・タグ・レジスタを含み、それぞ
れの作用を下に説明する。
【0189】アクセスが、それらが3-Dプリミティブ・
パイプラインを通して書かれるのを可能にするようテク
セル・ポート・レジスタに提供される。テクセル・ポー
ト・レジスタは、3-Dパイプラインが忙しいときでも、
書かれることができ、レジスタを書くためのデータは、
単にパイプラインに置かれる。さらに、テクセル・ポー
ト・レジスタは、24ビットのバス24(図6)を通して提
供された3-Dパイプライン・バイパスを通してアクセス
することができる。テクセル・ポート・レジスタをアク
セスするとき、バス24の8つのビットが、どのテクセル
・ポート・レジスタが読み出されまたは書き込まれるべ
きかを指定するレジスタ・アドレスとして使用され、デ
ータがテクセル・ポート・レジスタに書かれていると
き、バスの他の16のビットがデータを提供する。テクセ
ル・ポート・レジスタの組織は、図23に示される。一つ
の実施例において、たとえいくつかのレジスタのいくつ
かのビットが不使用であるとしてもテクセル・ポート・
レジスタの各々が、32ビットを含む。
【0190】1. テクセル・コマンド・レジスタ テクセル・コマンド・レジスタは、下で説明されるよう
にキャッシュ・ミスを処理するTIMによって使用される
いくつかのビットを含む。停止ビット350は、TIMによっ
てセットされて、テクスチャマッピング・チップにその
動作を停止するように命令する。上で述べたように、2
つのテクスチャマッピング・チップが備えられる実施例
において、両方のテクスチャマッピング・チップが、い
ずれかからのキャッシュ・ミスに応答して同じテクスチ
ャ・データで更新されるので、キャッシュが一貫したま
まに保たれる。このように、ミスがいずれかのテクスチ
ャマッピング・チップから受け取られるとき、両方は、
それらのそれぞれのテクセル・コマンド・レジスタに停
止ビット350をセットすることによって停止させられ
る。停止ビットは、キャッシュ・ミスに応答してTIMに
よって新しいテクスチャ・データがホストコンピュータ
からダウンロードされたあと、ビットをクリアするため
にコマンド・レジスタに書込むことによって、キャッシ
ュ・ミスを扱うソフトウェア・ルーチンにより消去され
る。
【0191】割込みイネーブル・ビット352は、アサー
トされると、キャッシュ・ミスが生じるとき、テクセル
・ポートからの割込みをイネーブルする。このビット
は、テクスチャマッピング・ボード12(図6)上の局部
メモリ48をキャッシュとして作用しなくする上で説明し
た能力を提供するためにアサート解除される。
【0192】書込みLoki0および書込みLoki1ビット354
および356は、テクセル・ポート・レジスタのための書
込みイネーブルである。Lokiは、テクスチャマッピング
・チップ46を識別するために使用される短縮名である。
2つのそのようなチップが使用される実施例において、
チップは、それぞれLoki0およびLoki1と呼ばれる。一つ
のテクスチャマッピング・チップだけが使われていると
き、それはLoki0として識別される。テクセル・ポート
・レジスタのいずれかに書き込むためにコマンドがテク
セル・ポート・バス24を通して受け取られるとき、その
書込みビットがイネーブルされているかどうか判断する
ために、各テクスチャマッピング・チップ(すなわち、
Loki0およびLoki1)がそのコマンド・レジスタをチェッ
クし、もしイネーブルされているならば、受け取られた
書込みコマンドに従ってそのテクセル・ポート・レジス
タをアップデートする。このように、書込みLoki0およ
び書込みLoki1ビット354および356の値を制御すること
によって、TIMが、2つのテクスチャマッピング・チップ
のテクセル・ポート・レジスタに別々にまたは組合せて
書き込むことができる。
【0193】Loki読み取りビット358が、テクスチャマ
ッピング・チップの一つのテクセル・ポート・レジスタ
の読み取りをイネーブルする。テクセル・ポート・レジ
スタを読み出すためにコマンドがテクセル・バス24を通
して受け取られるとき、そのテクセル・ポート・レジス
タの中身をバスに提供するために、テクスチャマッピン
グ・チップの一つだけが一度に応答する。2つのテクス
チャマッピング・チップが備えられる実施例において、
各々が、チップがLoki0であるかまたはLoki1であるかを
示すよう配線されたピンを備えていてもよい。Loki読み
取りビットは、ソフトウェアによってセットされると
き、読み取りがLoki1からイネーブルされていることを
示し、読み取りビットがアサート解除されているとき、
それは、読み取りがLoki0のためにイネーブルされてい
ることを示す。以上のことからわかるように、テクセル
・コマンド・レジスタのフォーマットは、それを同時に
同じデータで両方のテクスチャマッピング・チップ(Lo
ki0とLoki1)に書き込むのを可能にし、それによって、
両方のコマンド・レジスタを書き込むのに一つの書込み
サイクルだけが要求される。
【0194】2. テクセル・ステータス・レジスタ テクセル・ポート・ステータスレジスタは、アサートさ
れるとき、システムが、2つのテクスチャマッピング・
チップを含むことを示すデュアルLokiビット360を含
む。ビット352がコマンド・レジスタにおいてアサート
されるときはいつでも、割込みイネーブル・ビット362
がアサートされ、テクスチャマッピング・チップの局部
メモリがキャッシュとして作用していることを示す。こ
のキャッシュは、キャッシュにないテクスチャ・データ
が必要とされるとき、ホストコンピュータに割り込むキ
ャッシュ・ミスを生成する。このビットが、コマンド・
レジスタおよびステータスレジスタに含められるので、
テクセル・ポートのステータスは、単にステータスレジ
スタを読み出すことによって読み出すことができる。
【0195】割込みがテクスチャマッピング・チップか
ら生じ、そのチップが新しいテクスチャ・データがダウ
ンロードされるのを待っているとき、割込み有効ビット
364がアサートされる。このビットは、キャッシュ・デ
ィレクトリ・タグ・レジスタ(下で説明する)に、キャ
ッシュにおいてミスしたタグであるパイプ・タグ・レジ
スタ(下で説明する)に格納されたキャッシュ読み取り
タグにマッチするキャッシュ・タグが書かれるとき、ク
リアされる。ステータスレジスタは、キャッシュ・ミス
が生じる時テクスチャマッピング・チップの停止を支援
する2ビットを含む。停止イネーブル・ビット368は、停
止ビット350がコマンド・レジスタにおいてセットされ
クリアされるときはいつでもTIMによってセットされク
リアされ、そのビットがアサートされる時テクスチャマ
ッピング・チップにそれ自身を停止するよう命令する。
このビットは、ステータスレジスタおよびコマンド・レ
ジスタに提供されるので、テクスチャマッピング・チッ
プのステータスが一つのレジスタに格納される。キャッ
シュ・ミスが生じたキャッシュ・ディレクトリがデータ
がダウンロードされるのを待っているとき、割込み有効
368がハードウェアによってテクスチャマッピング・チ
ップにセットされる。このビットは、キャッシュ・ディ
レクトリ・タグ・レジスタ(下で説明する)にキャッシ
ュでミスしたブロックアドレスにマッチするキャッシュ
・タグが書かれる時クリアされる。
【0196】3. パイプ・タグ・レジスタ パイプ・タグ・レジスタは、テクスチャマッピング・チ
ップにおけるパイプラインによってインデックスを付け
られた最後のブロック・タグを格納する。キャッシュ・
ミスが生じるとき、パイプ・タグ・レジスタが、キャッ
シュでミスしたブロック・タグ370を格納する。このよ
うに、テクセル・ポート・バス24を通してパイプ・タグ
・レジスタを読むことによって、キャッシュ・ミス割込
みに応答するソフトウェアが、ミス応答してキャッシュ
にダウンロードされなければならないキャッシュ・ブロ
ックのためのタグを決定することができる。
【0197】4. テクセル・データレジスタ キャッシュ・ミスが生じるとき、テクセル・データレジ
スタは、キャッシュ48にテクスチャ・データをダウンロ
ードするために使用される。上で述べたように、各テク
セルが、32ビットのデータによって表され、一つのバイ
ト372がアルファを表し、一つのバイト374が赤の値を表
し、一つのバイト376が緑の値を表し、一つのバイト378
が青の値を表す。
【0198】5. テクセル・キャッシュ・アドレス・レ
ジスタ テクセル・キャッシュ・アドレス・レジスタは、キャッ
シュにデータを書き込みキャッシュ・ディレクトリにブ
ロック・タグを書き込むのに使用される。上で示したよ
うにキャッシュが、各ブロックが256x256テクセルのア
レイを含むテクスチャ・データの64のブロックを格納す
る。テクセル・キャッシュ・アドレス・レジスタが、キ
ャッシュの64のブロックの中で読み出されまたは書き込
まれる特定のものを識別する6ビットのブロック・イン
デックス・フィールド380を含む。さらに、レジスタ
は、ブロック・インデックス・フィールドにおいて識別
されたブロック内で読み出しまたは書き込み中の特定の
テクセル・アドレスを識別する16ビットのブロックアド
レス・フィールド382を含む。データが、キャッシュ・
ミス応答してテクスチャ・メモリにダウンロードされる
とき、ブロック・インデックスが、下で説明される置き
換え方式を使用するソフトウェア・ルーチンによってセ
ットされ、ブロックアドレス・フィールド382が、ブロ
ックの最初のテクセルを書き込むためにゼロに初期設定
される。キャッシュ・アドレス・レジスタは、テクセル
・データレジスタがアクセスされるときはいつでも、ブ
ロックアドレス・フィールド382をインクリメントさせ
る。このように、ブロックアドレス・フィールドが、テ
クセル・データの新しいブロックをキャッシュに書き込
むためにキャッシュ・ブロック内のブロックアドレスの
すべてにわたって増加されることができる。
【0199】6. テクセル・ディレクトリ・タグ・レジ
スタ テクセル・ディレクトリ・タグ・レジスタは、キャッシ
ュ・ブロック・タグを表す23ビットのブロック・タグフ
ィールド384を含み、キャッシュ・アドレス・レジスタ
のブロックインデックスフィールド380で規定されるキ
ャッシュ・ディレクトリ・エントリを書き込むために使
用される。上で示したようにキャッシュ・ブロック・タ
グの23のビットは、テクスチャIDの8ビット、S座標の7
ビット、T座標の7ビット、およびブロック・タグに対応
するテクスチャ・データのブロックによって表されるマ
ップのMIPマップ・シリーズにおけるマップ番号を識別
する付加的な1ビットを表す。テクスチャ・データの新
しいブロックが、キャッシュ・ミスに応答してTIMによ
ってダウンロードされるとき、そのブロック・タグがデ
ィレクトリ・タグ・レジスタにテクセル・バス24を通し
てロードされる。ディレクトリ・タグ・レジスタからブ
ロック・タグが、キャッシュ・アドレス・レジスタのブ
ロックインデックスフィールド380によって識別される
エントリにおいてキャッシュ・ディレクトリに書かれ
る。上で述べたように、パイプ・タグ・レジスタのタグ
にマッチする(その読み取りがキャッシュ・ミスを生じ
たもの)ブロック・タグがディレクトリ・タグ・レジス
タに書かれるとき、キャッシュ・ミス割込みがクリアさ
れる。
【0200】M. キャッシュ・ミス割り込みを処理する
ためのソフトウェア・ルーチン 以上のことからわかるように、テクセル・ポート・レジ
スタが、ホストコンピュータ15の上で作用し、キャッシ
ュ・ミス割込みを処理して必要なテクスチャ・データを
ダウンロードするTIMによって使用される。このTIM動作
のフローチャートは、図24に示される。ステップ400に
おいて、Loki0とLoki1のためのテクセル・コマンド・レ
ジスタは、停止ビット350を両方にセットするために書
かれる。この方法は、テクセル・ステータスレジスタの
停止させられたビット368を読み出すために次いでステ
ップ402に進み、両方のLokiが停止させられたかどうか
判断する。この方法は、両方が停止されたことが判断さ
れるまで連続的にLoki0およびLoki1のステータスレジス
タを読み出し、それからステップ404に進む。システム
が、一つのテクスチャマッピング・チップ46だけ(すな
わち、Loki0)を含むとき、Loki0は、そのレジスタの中
身をテクセル・バス24に提供するによってLoki1のテク
セル・ポート・レジスタを読み出す要求にも応答する。
このように、TIMがステップ402において、両方のLokiが
停止したかどうか判断するためにチェックするとき、Lo
ki0がLoki1の読み取りに応答して、Loki0が停止してい
るとき、方法はステップ404さらに進む。
【0201】ステップ404において、Loki0のテクセル・
ステータスレジスタの割り込み有効ビット364を読み、L
oki0がキャッシュ・ミスを引き起こすように割り込んだ
かどうか判断し、割り込んでいれば、この方法は、ステ
ップ406に進み、キャッシュにおいてミスしたテクスチ
ャ・データのブロックのブロック・タグを識別するため
にLoki0のパイプ・タグ・レジスタが、読み出される。T
IMが、このブロック・タグを使用してメモリ17(図6)
におけるテクスチャ・データに対応するブロックをアク
セスし、ステップ408に進んで、キャッシュの中のどの
ブロックが、ダウンロードされる新しいキャッシュ・ブ
ロックで置き換えられなければならないかを判断する。
この判断は、発明の最下位優先度および最低使用最近度
(least recently used)方式を使用して、下で説明する
態様で行われる。
【0202】上で述べたように、システムが2つのテク
スチャマッピング・チップを含むとき、各々におけるキ
ャッシュは、全く同じエントリを持つように維持され
る。したがって、テクスチャマッピング・チップの一つ
からのキャッシュ・ミスに応答してホストコンピュータ
からダウンロードされたテクスチャ・データが、両方の
チップのキャッシュに書かれる。このように、置き換え
られるべきキャッシュ・ブロックが識別されたならば、
この方法は、ステップ410に進み、Loki0とLoki1(Loki1
が存在するならば)のキャッシュ・アドレスレジスタに
ステップ408の間に決定されたブロック・インデックス
が書きこまれる。ステップ412において、ディレクトリ
・タグ・レジスタに、キャッシュ・ミスに応答してテク
スチャ・キャッシュにダウンロードされるテクスチャ・
データのブロックのブロック・タグが書かれ、ステップ
414において、テクスチャ・データがテクセル・データ
レジスタに書かれる。このようにして、この方法は、キ
ャッシュ・ミスに応答して、キャッシュにおいてミスさ
れたテクスチャ・データのブロックをダウンロードし、
キャッシュにこのブロックのデータを書く。
【0203】テクスチャ・データのブロックがLoki0とL
oki1にステップ406-414でダウンロードされたあと、ま
たはLoki0が割込みしなかったことがステップ404で判断
されるならば、この方法は、ステップ416に進み、Loki1
ステータスレジスタにおける割込み有効ビット364がセ
ットされているどうかに関して判断がなされる。セット
されていれば、キャッシュ・ミスが、Loki1の中で生じ
たことを意味する。上で示したように、システムが一つ
のテクスチャマッピング・チップだけを含むならば、Lo
ki0が、Loki1テクセル・ポート・レジスタの読み取りに
応答する。Loki0は、Loki1のステータスレジスタの読み
取りに応答するとき、その割込み有効なビット364をマ
スクするのでTIMがステップ416で、Loki1が割込みしな
かったことを判断する。このマスキングは、TIMがLoki0
からの割り込みを再度処理してステップ406-414でダウ
ンロードされたテクスチャ・データのブロックを再びダ
ウンロードすることがないようになされる。したがっ
て、一つのテクスチャマッピング・チップだけがあるシ
ステムにおいて、この方法は、Loki1が割込みしなかっ
たことをステップ416で判断し、ステップ418に進み、Lo
ki0のコマンド・レジスタが停止ビット350をアサート解
除するよう書き込まれ、テクスチャマッピング・チップ
がプリミティブをそのパイプラインで処理することを可
能にする。
【0204】システムが2つのテクスチャマッピング・
チップを含むとき、この方法は、Lokilが割り込んだか
どうかをステップ416で判断し、割り込んでいなけれ
ば、直接ステップ418に進み、停止ビットが両方のテク
スチャマッピング・チップでアサート解除され、それら
がプリミティブの処理に進むことを可能にする。しか
し、キャッシュ・ミス応答してLoki1が割り込んだこと
がステップ416で判断されるとき、この方法は、ステッ
プ406-414に関連してLoki0からの割込みの扱いを説明し
たのと同じ態様で割込みを処理するため、ステップ420-
424ないしプロセスに進む。この方法は、次いでステッ
プ418に進み、両方のテクスチャマッピング・チップの
停止ビットがアサート解除される。
【0205】2つのテクスチャマッピング・チップがあ
るシステムにおいては、両方のチップが、同時に同じブ
ロック・タグまたは異なるブロック・タグのためにキャ
ッシュ・ミス割込みを生成することができることが理解
されねばならない。両方のテクスチャマッピング・チッ
プが同じブロック・タグのためにキャッシュ・ミス割り
込みを生成する時、割込みは、ステップ400-414で処理
される。したがって、ステップ416において、この方法
はLoki1からの割込みを発見しない。ミスされたブロッ
ク・タグをステップ412で両方のLokiのディレクトリ・
タグ・レジスタに書込むことによってLoki1からの割込
みがクリアされるからである。このように、図24に示さ
れた方法が、テクスチャマッピング・チップの一つまた
は両方から同時の割込みに応答することができる。
【0206】N. キャッシュ・ミニのディレクトリおよ
びメイン・ディレクトリ 上で述べたように、一つの実施例において、キャッシュ
は、データの256×256のテクセルの64のブロック、およ
び23ビットのブロック・タグの64のエントリを含む完全
に連想的なキャッシュ・ディレクトリを含む。装置が3
線形の補間モードで作用しているとき、8つのテクセル
読み取りが、ピクセルについての結果のテクセル・デー
タを決定するために実行される。その際、一つのマップ
の4つのテクセルが一つの読み取り動作で同時に読み出
され、そして、他のマップの4つのテクセルが第2の読
み取り動作で同時に読み出される。処理中のピクセル
が、キャッシュ・ブロック境界の付近にあるマップのロ
ケーションにマップするならば、一つのマップ内で結果
のテクセル・データを生成するためにキャッシュから読
み出された4つのテクセルは、それぞれ異なるキャッシ
ュ・ブロックにあることができる。このように各ピクセ
ルについてキャッシュから同時に4つのテクセルを読み
取るには、キャッシュ・ディレクトリにおいて64のブロ
ック・タグ・エントリと4つの別々の比較をすることを
必要とする。
【0207】従来の完全に連想式 のキャッシュが2つの
方法のうちの一つで動作する。第1に、読み出されたタ
グが一つのサイクルであらゆるキャッシュ・タグ・エン
トリと比較されることができるよう、各キャッシュ・タ
グ・エントリについて別のハードウェア・コンパレータ
を用意する。そのような技法は、ハードウェア・コスト
が大きく、そこでは、4つの読み取りが、同時に行わ
れ、そして、256(すなわち、4×64)の23ビットのコン
パレーターを必要とする。従来の完全に連想式 のキャ
ッシュによって使われる第2の技法は、一つのキャッシ
ュ・タグ・コンパレーターを使用し、そして、各キャッ
シュ・エントリは、読み出されたタグと直列に比較され
る。そのような技法は、システムのバンド幅に消極的な
影響を与え、そこでは、一つの読み出された動作中に読
み出された4つのテクセルの各々がキャッシュにあった
どうか判断するために、潜在的に256の読み出しサイク
ルがキャッシュ・ディレクトリに必要である。
【0208】これらの問題を克服するために、キャッシ
ュ・システムは、ミニ・ディレクトリ(図25)およびメ
イン・ディレクトリ(図26)を含む。ミニのディレクト
リは、完全に連想式 で、5つの最も最近読み出されたキ
ャッシュ・ブロック・タグおよびそれぞれについての対
応するブロックインデックスを含む。図25に示すよう
に、ミニ・ディレクトリ 500は、ミニのディレクトリか
ら出力501-505通してそれぞれ出力される5つのエントリ
を含み、それぞれが4つのグループのタグ・コンパレー
タ507-510に結合する。各グループの中のタグ・コンパ
レータ507-510が、5つの23ビットのコンパレータ(示さ
ない)を含み、そして、2線または3線形の補間を実行
するとき、一つの読み取り動作で実行された4つのキャ
ッシュ読み取りタグの一つに対応する。このように、ミ
ニ・ディレクトリの完全に連想式 の性質が、同時に読
み出されるタグの数にミニ・ディレクトリのエントリの
数を掛けた数に等しい20の23ビット・コンパレータで実
行される。
【0209】一つのピクセルについて同時に読み出され
る4つのキャッシュ読み取りタグが、ピクセルがマップ
するマップにおけるロケーションに最も近い4つのテク
セルを含むキャッシュ・ブロックを識別し、これらのタ
グは、左上(UL)タグ、右上(UR)タグ、左下(LL)タ
グおよび右下(LR)タグと呼ばれる。左上、右上、左下
および右下テクセルのためのキャッシュ読みとりタグ
は、それぞれ左上、右上、左下と右下タグ・コンパレー
タ507-510のグループに接続されている。各グループの
タグ・コンパレータ507-510が、その対応するキャッシ
ュ読み取りタグをミニ・ディレクトリに格納した5つの
ブロック・タグに対して比較し、タグがミニ・ディレク
トリ・エントリの一つと一致するかどうかを示すヒット
出力を生成し、そしてその場合、テクセル・データの対
応するブロックが格納されているキャッシュのロケーシ
ョンを示すブロックインデックスを出力する。
【0210】以上のことからわかるように、4つのキャ
ッシュ読み取りタグ(UL, UR, LL, LR)のそれぞれが、ミ
ニ・ディレクトリにあるならば、テクセル・データの対
応する4つのブロックが格納されているキャッシュのロ
ケーションを識別するブロックインデックスを判断する
ために、一つのディレクトリ・アクセスだけが必要であ
る。1つまたは複数の読み取りタグがミニ・ディレクト
リにない場合だけ、アクセスはメイン・キャッシュ・デ
ィレクトリにされる。キャッシュ読み取りタグがミニ・
ディレクトでミスする都度、ミニ・ディレクトリ500が
更新されるので、ミニ・ディレクトリ500は、テクスチ
ャ・データの5つの最も最近アクセスされたブロックの
ブロック・タグを常に含む。
【0211】4つのキャッシュ読み取りタグの1つまた
は複数がミニ・ディレクトリでヒットしないならば、ア
クセスは、メイン・キャッシュ・ディレクトリ520(図2
6)になされる。上で述べるメイン・ディレクトリが、
それぞれがブロック・タグを含む64のエントリを含む。
メイン・ディレクトリが、64の23ビット・コンパレータ
522を備えているので、キャッシュ読み取りタグは、一
つのサイクルで全メイン・ディレクトリと比較されるこ
とができる。コンパレーター522が、キャッシュ読み取
りタグは、メイン・ディレクトリのエントリの一つをヒ
ットしたかどうかを示す信号を提供し、ヒットしていれ
ば、読み取りタグに一致したコンパレーターのロケーシ
ョンも、テクセル・データの対応するブロックがキャッ
シュのどこにあるかを識別するブロックインデックスを
生成するために使用される。読み取りタグがメイン・キ
ャッシュ・ディレクトリのエントリのいずれとも一致し
ないならば、キャッシュ・ミスが生成され、上で説明さ
れた態様で、ホストコンピュータが割り込まれテクスチ
ャ・データの要求されたブロックをダウンロードする。
【0212】上で述べたように、4つのキャッシュ読み
取りタグ(UL, UR, LL, LR)の1つまたは複数がミニ・デ
ィレクトリをヒットしないとき、メイン・キャッシュ・
ディレクトリ520が、アクセスされるだけである。2以上
のキャッシュ読み取りタグがミニ・ディレクトリをミス
するならば、メイン・ディレクトリが各キャッシュ読み
取りタグについて別々のサイクルでアクセスされる必要
があったならば被られる性能ペナルティを減らすことが
望ましい。この結果を達成するために、図27に示す実施
例では、一群の6つの付加コンパレータ526-530が備えら
れる。6つのコンパレータは、同時にアクセスされる4つ
のキャッシュ読みとりタグを同一のものがあるかどうか
判断するために他のものと比較する。コンパレータは、
URタグに対してULタグを比較するコンパレータ526、UL
とLLタグを比較するコンパレータ527U、ULとLRタグを比
較するコンパレータ528、URとLLタグを比較するコンパ
レータ529、URとLRタグを比較するコンパレータ530、お
よびLLとLRタグを比較するコンパレータ532を含む。
【0213】コンパレータ526-532によって実行される
比較は、性能ペナルティを被らないよう他の比較と平行
して実行することができる。例えば、これらの比較は、
キャッシュ読み取りタグがミニ・ディレクトリと比較さ
れるサイクル中、またはミニ・ディレクトリでミスした
第1キャッシュ読み取りタグがメイン・メモリと比較さ
れるサイクル中に実行することができる。少くとも2つ
のキャッシュ読み取りタグが、メイン・ディレクトリを
ヒットせず、等しいことが判断されるとき、コンパレー
タ526-532の出力は、メイン・ディレクトリが、これら
の少くとも2つのキャッシュ読み取りタグについては一
度だけアクセスされればよいことを示すのに使われる。
このように同一のタグのために、メイン・ディレクトリ
をアクセスする際に複数のサイクルを用いる必要はな
く、それによって2以上のキャッシュ読み取りタグがミ
ニ・ディレクトリをミスするときのシステムのバンド幅
への影響を最小にする。
【0214】以上のことからわかるように、キャッシュ
・ミニ・ディレクトリを利用する実施例は、高いシステ
ムのバンド幅を達成しながらキャッシュ・ディレクトリ
を実行するために比較的小さい量のハードウェアを使う
という競合するゴールを効果的にバランスさせる。2以
上のキャッシュ読み取りタグがミニ・ディレクトリをミ
スするときに被る性能ペナルティは、アプリケーション
に依存する。4つのキャッシュ読み取りタグの2つのユニ
ークな組が、2サイクル毎にミニ・ディレクトリを通し
て処理されることが可能であるけれども、4つのキャッ
シュ読み取りタグの各セットにおいて典型的には一つま
たは2つだけのユニークなブロック・タグが現れると考
えられる。上で示したように、対象物のピクセルが、描
画されつつあり、3線形の補間が使われているとき、隣
接のピクセルが頻繁にMIPマップの同じ2つのマップにマ
ップし、キャッシュへの読み取りが、2つのマップを格
納するキャッシュ・ブロックの間で連続的に切り換えら
れることを要求する。図25の中で示された実施例におい
て、たとえ現在処理される組の読み取りタグのための4
つのユニークなキャッシュ・タグがミニ・キャッシュに
常駐していても、前の組の読み取りタグにおいてアクセ
スされた少なくとも一つのタグが、ミニ・ディレクトリ
の中に残るようにするために、ミニ・ディレクトリが、
5つのブロック・タグを格納する。このように、3線形の
補間中に、4つのユニークなキャッシュ・タグの2つの組
の間で切り換えているときでも、各セットについて読み
取りキャッシュ・タグの少なくとも一つがミニ・ディレ
クトリに残るので、4つのキャッシュ・タグは、メイン
・ディレクトリに対して直列の形態で比較される必要が
ない。
【0215】テクセルのレンダリングの間、3線形の補
間が使われているとき、キャッシュへの連続的な読み取
りが、一つのマップにおいて第1の組の4つのテクセル
を読み出し、そして、他のものにおいて第2の組の4つ
のテクセルを読み出す。プリミティブが、描画されるに
つれて、2つのマップのそれぞれ内の隣接のテクセルが
それぞれ1サイクルおきにアクセスされ、2以上のテク
セルが、一つのキャッシュ・ブロック内に一般的に配置
される。したがって、一つまたは2つのユニークなタグ
が、各組の4つのキャッシュ読み取りタグに現れ、各キ
ャッシュ読み取りタグがミニ・ディレクトリ500をヒッ
トしながら多数のピクセルを描画することができる。4
つの各組において一つのキャッシュ読み取りタグだけが
ミニ・ディレクトリをミスするならば、次の組の4つの
読み取りタグがミニ・ディレクトリと比較される一方
で、そのタグは、メイン・ディレクトリに対して比較さ
れることができるのので、性能ペナルティは被らない。
【0216】メイン・ディレクトリおよびより小さいミ
ニ・ディレクトリを含むキャッシュ・ディレクトリは、
多くの他のアプリケーションで使用することができ、テ
クスチャマッピング・ハードウェアシステムでの使用に
制限されないことを理解する必要がある。ミニ・キャッ
シュ・ディレクトリ方式は、複数のキャッシュ・タグ読
み取りが同時に処理されるとき、および連続的にアクセ
スされた以前に使用されたタグにキャッシュ読み取りタ
グが相関しているときに、完全に連想式 のキャッシュ
を実行し、またディレクトリ・タグ比較のコストを減ら
すのに際に特に有用である。たとえば、Xタグを任意の
一時点で格納するキャッシュ・メモリについて、Nキャ
ッシュ読み取りタグがディレクトリ・ブロック・タグに
対して同時に比較される場合に、MがN以上の値として、
M 個のタグを含むミニ・ディレクトリを維持すれば十分
である。Mミニ・ディレクトリ・タグの各々が、一つの
読み取り動作でNキャッシュ読み取りタグに対して比較
される。メイン・ディレクトリが、ミニ・ディレクトリ
でヒットしないいかなるキャッシュ読み取りタグについ
ても順にアクセスされる。そのような読み取りタグは、
メイン・ディレクトリ・タグに対して一つのサイクルで
比較される。メイン・ディレクトリの中のXタグの各々
が、一つの読み取り動作でN読み取りタグに対して比較
されるシステムからのコンパレータの観点からのハード
ウェア節減は、(X + M*N)/(X*N)の比率に依存する。
【0217】このハードウェア節減を達成する性能ペナ
ルティは、連続的な読み取り動作でアクセスされるタグ
のシーケンスのふるまいに基づき、アプリケーション依
存である。各読み取りの組において一つのタグしかミニ
・ディレクトリをミスしないならば、次の組の読み取り
タグがミニ・ディレクトリに対して比較されるのと平行
して、ミスされたタグがメイン・ディレクトリに対して
比較されることができるので、ペナルティは被られな
い。性能ペナルティを減らすために使用される上で説明
したコンパレータ526-530に関して、2以上のキャッシュ
読み取りタグが、ミニ・ディレクトリでミスするとき、
4つの読み取りタグが同時にアクセスされるので、6つが
使用される。他方に対して各キャッシュ読み取りタグを
比較するのに使われているコンパレータの数は、同時に
アクセスされる読み取りタグの数Nに依存し、(N-1)階
乗に等しい。
【0218】図25ないし26のミニ・ディレクトリおよび
メイン・ディレクトリを含むキャッシュ・ディレクトリ
の一つのここで説明する実施例が、図28に示される。図
25で示された実施例は、単に例としてのもので、他の実
施例を使うことができることを理解しなければならな
い。
【0219】ミニ・ディレクトリ・エントリ501-505
(図25)は、タグ・レジスタ501T-505Tに格納されるタ
グ成分、およびインデックスレジスタ501I-505Iに格納
されるインデックス成分にスプリットされる。上で説明
したように、キャッシュ・ディレクトリは、処理中のピ
クセルがマップするMIPマップ中のロケーションに最も
近い4つのテクセル(すなわち、UL、UR、LLとLR)に対
応する一組の4つの読み取りキャッシュ・タグを受け取
る。4つの読み取りタグの各々は、六つタグ・コンパレ
ータ541-546に提供される。コンパレータの5つ(すなわ
ち、542-546)は、それぞれ5つのミニ・ディレクトリ・
タグ・レジスタ50IT-505Tの一つに結合している。例え
ば、コンパレータ542が、ミニ・ディレクトリ・エント
リ1のためのタグ・レジスタ501Tに結合し、そのミニ・
ディレクトリのそのエントリのタグが、読み取りキャッ
シュ・タグUL、UR、LLまたはLRのいずれかのタグにマッ
チするかどうかを示す出力を生成する。コンパレータ54
3-546が、同様の態様の中で作用し、それぞれ、ミニ・
ディレクトリ・エントリ2-エントリ5のためのタグをそ
れぞれ格納するタグ・レジスタ502T-505Tに対して読み
取りキャッシュ・タグUL、UR、LLおよびLRを比較する。
4つの読み取りキャッシュ・タグの各新しい組は、ミニ
・ディレクトリに対して一つのサイクルの中で比較され
る。そのサイクルの終わりに、4つのタグUL、UR、LLお
よびLRが、レジスタ550-553にそれぞれ格納される。図2
8に示すように、レジスタ550-553のそれぞれもミニ・デ
ィレクトリ・タグ・コンパレータ542-546の出力を受け
取る制御回路559に結合される。4つの読み取りタグの新
しい組がミニ・ディレクトリ・タグと比較されるサイク
ルの終わりに、また、レジスタ550-553の各々にその対
応するタグ(すなわち、UL、UR、LL、LR)がミニ・ディ
レクトリ・エントリの一つと一致したかどうかおよび一
致した場合、どのエントリが一致したかを識別するデー
タがロードされる。
【0220】上で示したように、ミニ・ディレクトリに
おいて一つのキャッシュ読み取りタグだけがミスするな
らば、次の組の4つのテクセル読み取りタグがミニ・デ
ィレクトリに対して比較される間に、そのタグがメイン
・ディレクトリに対して比較される。ミスがミニ・ディ
レクトリで生じるとき、ミニ・ディレクトリが、ミスし
たタグを含むよう更新されるので、ミニ・ディレクトリ
は、五つの最も最近アクセスされたキャッシュ・タグを
常に反映する。ミニ・ディレクトリでミスした読み取り
キャッシュ・タグがメイン・ディレクトリに対して比較
されるサイクル中、次の組の4つの読み取りタグがミニ
・ディレクトリに対して比較される間に、ミニ・ディレ
クトリ・タグ・レジスタ50IT-505Tが、ミニ・ディレク
トリを前のサイクルでミスしたキャッシュ・タグを含む
ようにまだ更新されていない。したがって、読み取りキ
ャッシュ・タグの次の組がミニ・ディレクトリに対して
比較されるとき、6番目のコンパレータ541が、4つの読
み取りタグ(UL、UR、LLとLR)を、前のサイクルでミニ
・ディレクトリでミスし、そしてメイン・ディレクトリ
に対して比較されているタグと比較するために使用され
る。
【0221】4つのキャッシュ読み取りタグ(UL、UR、L
LとLR)の組の中の2以上のユニークなタグがミニ・ディ
レクトリをミスするならば、複数の比較がメイン・ディ
レクトリで生じるのでキャッシュ・ディレクトリを通る
パイプラインが停止させられる。しかし、一つのユニー
クなタグだけががミニ・ディレクトリをミスすrなら
ば、パイプラインは、キャッシュ・ディレクトリが、サ
イクルごとに4つのキャッシュ読み取りタグの新しい組
を受け取るような態様で継続する。
【0222】上で述べたように、ミニ・ディレクトリに
対して前のサイクルで比較された読み取りタグが、レジ
スタ550-553に格納される。これらのレジスタの出力
が、メイン・ディレクトリに対して比較されるべきそれ
らのレジスタを一度に一つ選ぶ4対1マルチプレクサ555
に結合され、サイクルの終わりにミニ・ディレクトリに
ロードされるので、ミニ・ディレクトリは、最も最近受
け取られた読み取りキャッシュ・タグで更新される。ま
た、マルチプレクサ555の出力が、6番目のコンパレータ
結合されるので、ミニ・ディレクトリを前のサイクルで
ミスしたキャッシュ読み取りタグが読み取りタグUL、U
R、LLとLRの新しい組の各々に対して比較される。コン
パレータ542-546と協力してコンパレータ541は、ミニ・
ディレクトリが、キャッシュ・ディレクトリによって受
け取られた4つのキャッシュ読み取りタグの各組を5つの
最も最近受け取られた読み取りタグに対して比較するよ
うにする。
【0223】上で述べたように、マルチプレクサ555か
らのキャッシュ読み取りタグ出力が、それがメイン・デ
ィレクトリに対して比較されるサイクルの終わりに、ミ
ニ・ディレクトリ・タグ・レジスタ50IT-505Tの一つに
ロードされる。このように、ミニ・ディレクトリは最も
最近なアクセスされたキャッシュ・タグを含むよう更新
される。どのエントリにマルチプレクサ555からの新し
いキャッシュ・タグが書かれるかの決定は、下で説明さ
れる置き換え方式によってなされる。
【0224】図27に関連して上で説明した六つのコンパ
レータ526-532の組が、図28に便宜上一つのコンパレー
タ・ブロックとして示される。これらのコンパレータの
出力およびコンパレータ541-546の出力が、いくつかの
機能を果たす制御回路559にそれぞれ提供される。ミニ
・ディレクトリへのミスが生じるとき、ミニ・ディレク
トリのどのエントリが新しい読み取りキャッシュ・タグ
で置き換えられるかを制御回路559が決定する。制御回
路559は、ミニ・ディレクトリに対して比較されてつつ
ある4つの新しく受け取られた読み取りキャッシュ・タ
グの一つ、またはメイン・ディレクトリに対して比較さ
れた最後の読み取りキャッシュ・タグによってヒットさ
れたどのエントリも置き換えないで、これらのエントリ
にミニ・ディレクトリで維持されるための最も高い優先
度を割り当てる。さらに、制御回路559は、どのミニ・
ディレクトリ・エントリが前の組の4つの読み取りタグ
によってヒットされたかに関する状態情報を格納し、そ
して、それらにミニ・ディレクトリの中で維持されるた
めに次に最高の優先度を割り当てる。残りのエントリ
は、低い優先度を割り当てられる。
【0225】制御回路559が、少くとも一つのエントリ
を含む最下位優先度グループにあるエントリを置き換え
のために選ぶ。このように、ミニ・ディレクトリに対し
て比較されつつある、4つの新しく受け取られた読み取
りキャッシュ・タグの一つによってヒットされず、メイ
ン・ディレクトリに対して比較される最後の読み取りキ
ャッシュ・タグでなく、前の組の4つの読み取りタグに
ない少くとも一つのエントリが低い優先度グループにあ
るならば、低い優先度グループの中のエントリの一つが
置き換え用に選ばれる。しかし、低い優先度グループに
エントリがないならば、最も高い優先度のエントリ(す
なわち、4つの新しく受け取られた読み取りキャッシュ
・タグの一つによっってヒットされたもの、およびメイ
ン・ディレクトリに対して比較された最後の読み取りキ
ャッシュ・タグ)だけを除外する、より大きいグループ
のエントリが選ばれ、そしてそのグループからのエント
リが置き換えのために選ばれる。
【0226】最下位優先度の利用可能なミニ・ディレク
トリ・エントリのグループが識別されると、一つが置き
換えられるごとに5つのミニ・ディレクトリ・エントリ
のそれぞれを通って循環する置き換え方式に従って、グ
ループの中のどのエントリが置き換えられなければなら
ないかが決定される。これは、いくらかの方法でされる
ことができる。一つの実施例では、5つのミニ・ディレ
クトリ・エントリは、1ないし5と名称をつけられる。置
き換えられるエントリが、最下位優先度グループから、
まずグループにない最も高い番号のエントリを第1に識
別し、次いで置き換えのためにグループにある次に高い
番号のエントリを選ぶことによって、選ばれる。エント
リ5がグループにないとき、この方式がくるまるので、
エントリ1が次の最高の番号のエントリとみなされる。
この置き換え方式を通して、制御回路559は、一つが置
き換えらねばならない時ごとにミニ・ディレクトリのエ
ントリを循環し、選ばれたミニ・ディレクトリ・タグ・
レジスタ501T-505Tのローディングを制御する。制御回
路559は、4つの読み取りタグ(UL、UR、LLとLR)の各々
のためのデータを生成するためにコンパレータ541-546
の出力をデコ―ドし、読み取りタグがエントリをミニ・
ディレクトリの中で一致したかどうかおよび一致した場
合、どのエントリが一致したかを示す。このデータは、
読み取りタグ(UL、UR、LLおよびLR)の各々について対
応するレジスタ550-553の中で格納される。
【0227】例えば、読み取りタグULがミニ・ディレク
トリ・エントリ3に一致するならば、制御回路559でデコ
―ドされたデータが、ULレジスタ550に格納され、読み
取りタグが、ミニ・ディレクトリ・エントリ3と一致し
たことを示す。下で説明されるように、そのデータが、
キャッシュ・ディレクトリ・パイプラインを通され、UL
テクセルのためのブロックインデックスが、ミニ・ディ
レクトリ・エントリ3のためのブロックインデックスを
保持するレジスタ5031に格納されていることを示す。読
み取りタグUL、UR、LLとLRの組のための一つのユニーク
なタグだけがミニ・ディレクトリをミスするとき、その
読み取りタグを格納するレジスタ550-553の各々にデー
タがロードされ、対応するテクスチャ・データのための
ブロックインデックスが、ミニ・ディレクトリにないこ
とを示す。次のサイクルの間、ミスされたタグを格納す
るレジスタ550-553の一つからの出力がメイン・ディレ
クトリ520に対して比較され、読み取りタグのためのブ
ロックインデックスがメイン・ディレクトリから、メイ
ン・ディレクトリのブロックインデックスを格納するレ
ジスタ561にロードされる。ブロックインデックスが、
ミニ・ディレクトリのいずれのエントリにも対応しない
ことを示すデータが、マルチプレクサ555の出力から提
供される入力562からレジスタ561にも格納される。
【0228】先に述べたように、キャッシュ・メモリが
4つのインタリーブAーDを含むので、4つのテクセルを同
時にアクセスすることができる。4つのテクセル読み取
りタグUL、UR、LLとLRの組は、インタリーブADに任意の
態様において対応することができる。どのミニ・ディレ
クトリ・エントリがテクセルUL、UR、LLとLRの各々に対
応するブロックインデックスを格納するかを識別するレ
ジスタ550-553に格納されたデータが、テクセルUL、U
R、LLとLRの各々をその対応するインタリーブA-Dに関連
させるよう制御されるバレル・シフト装置563を通され
る。バレル・シフト装置の出力が、それぞれインタリー
ブAーDに対応し、各々がミニ・ディレクトリ・エントリ
を識別し、もしあるならばインタリーブのためのブロッ
クインデックスを格納するインタリーブ・インデックス
・コントロール・レジスタ565-568にロードされる。一
つのユニークな読み取りキャッシュ・タグだけがミニ・
ディレクトリをミスするとき、レジスタ550-553からの
出力のシフティング、およびメイン・ディレクトリ520
へのアクセスと平行してレジスタ565-568のローディン
グが生じる。
【0229】上で述べたように、レジスタ565-568にロ
ードされたデータが、あるとしたらどのミニ・ディレク
トリ・エントリが対応するインタリーブのためのブロッ
クインデックスを格納するかを識別する。このデータ
が、複数のインタリーブ・インデックス・マルチプレク
サを制御するために使用される。このマルチプレクサ
は、571で識別され、各インタリーブのための対応する
ブロックインデックスを、ミニ・ディレクトリ・インデ
ックスレジスター5011-5051の一つおよびメイン・ディ
レクトリ・ブロックインデックスレジスタ561から選
ぶ。複数のインタリーブ・インデックス・マルチプレク
サ571は、4つの独立の6対1マルチプレクサを表す。一つ
のマルチプレクサが各インタリーブに対応し、5つのミ
ニ・ディレクトリ・インデックスレジスタ501I-505Iお
よびメイン・ディレクトリ・ブロックインデックスレジ
スタ561を選ぶ。各インタリーブ・インデックス・マル
チプレクサが、同じインタリーブに対応し、どのミニ・
ディレクトリ・エントリがそのインタリーブのためのブ
ロックインデックスを格納するかを識別するレジスタ56
5-568の一つによって制御される。
【0230】インタリーブのためのブロック・インデッ
クスが、いずれのミニ・ディレクトリ・エントリにも見
つけられないことを、このデータが示すとき、対応する
マルチプレクサが、メイン・ディレクトリ・ブロック・
インデックスレジスタ561から提供されるインデックス
を選ぶ。このレジスタ561は、ミニ・ディレクトリへの
ミスに続いてメイン・ディレクトリからのブロック・イ
ンデックス読み取りを格納する。インタリーブAーDの各
々のためのブロック・インデックスが、線580-583を通
して提供され、上で説明された態様の中でキャッシュSD
RAMをアドレスするために使用される。上で説明された
ように、読み取りキャッシュ・タグUL、UR、LLおよびLR
の組の2つ以上がミニ・ディレクトリをミスするが、ユ
ニークなキャッシュ・タグを一つだけ含むとき、その読
み取りタグのためのブロック・インデックスを提供する
ために、メイン・ディレクトリ520が一度アクセスされ
るだけである。このプロセスは、4つの読み取りタグの
中の任意の2つが一致するかどうか識別するためにコン
パレータ526-532の出力を使用する制御回路559でも制御
される。4つの読み取りタグの2以上の組が、ミニ・ディ
レクトリをミスするが、同じキャッシュ・タグを含むな
らば、対応するレジスタ550-553の各々が、ブロック・
インデックスが、どのミニ・ディレクトリ・エントリに
も含まれないことを示すために制御回路559によりセッ
トされる。このように、それらの読み取りタグに対応す
るデータがインタリーブ・インデックスレジスタ565-56
8を通るとき、各々が、その対応するインタリーブ・イ
ンデックス・マルチプレクサ571へ通じるメイン・ディ
レクトリ・ブロック・インデックス制御レジスタ561を
選ぶ。
【0231】制御回路559は、どの読み取りタグ・レジ
スタ550-553がメイン・ディレクトリに対して比較され
るかを制御するディレクトリ制御レジスタ573をもセッ
トする。レジスタ573は、メイン・ディレクトリに対し
て比較されるレジスタ550-553のうちの一つを一時に選
択するためにマルチプレクサ555を制御する。読み取り
タグUL、UR、LL、LRの2以上がミニ・ディレクトリをミ
スするが、共通のタグを共有するならば、制御レジスタ
573が、レジスタの一つであるだけがメイン・ディレク
トリに対して比較されなければならないことを示すため
にセットされる。このように、4つの読み取りキャッシ
ュ・タグの組がミニ・ディレクトリをミスする一つのユ
ニークなタグだけを含むとき、メイン・ディレクトリが
一度だけアクセスされる。
【0232】4つの読み取りキャッシュ・タグ(UL, UR,
LL, LR)の組がミニ・ディレクトリをミスする2以上のユ
ニークなタグを含むならば、キャッシュ・ディレクトリ
・パイプラインを通上に説明された流れが変えられ、キ
ャッシュ・ディレクトリがビジーになり、読み取りタグ
の新しい組を次のサイクルで受け取らない。ディレクト
リがビジー状態を示すので、ミニ・ディレクトリをミス
した読み取りタグを含むレジスタ550-553の各々がメイ
ン・ディレクトリに対して比較されることができ、新し
い読み取りタグで上書きされることはない。さらに、デ
ィレクトリ・パイプラインを通る流れが変えられるの
で、メイン・ディレクトリが、ミニ・ディレクトリをミ
スした各読み取りタグのためにアクセスされることがで
き、それらに対応するブロック・インデックスがメイン
・ディレクトリからレジスタ501I-505Iまたは561の一つ
にロードされることができる。パイプラインは、読み取
りタグ(UL, UR, LL, LR)の組のためのブロック・インデ
ックスのすべてが、メイン・ディレクトリからの読み取
られているか、またはミニ・ディレクトリにすでに存在
するようになるまで、レジスタ550-553のいずれかにお
けるデータがバレルシフト装置563を通るのを禁止する
ようにされている。このように、テクセルUL、UR、LLお
よびLRの組は、グループとしてそれらの対応するインタ
リーブと相関している。
【0233】一組の読み取りタグの2以上のユニークな
タグがミニ・ディレクトリをミスするとき、ミスされた
タグは、直列に処理される。第1サイクル中(すなわ
ち、タグの組がミニ・ディレクトリに対して比較される
とき)、制御回路559が、ミニ・ディレクトリの中のど
のエントリを、第1のミスした読み取りタグで置き換え
るべきかを判断し、対応するレジスタ550-553にデータ
がロードされ、そのブロック・インデックスが、そのミ
ニ・ディレクトリ・エントリに格納されることが示され
る。第1の処理したミス・タグを格納するレジスタ550-
553の出力が第2のサイクル中にメイン・ディレクトリ5
20に対して比較され、メイン・ディレクトリ・ブロック
・インデックスレジスタ561が、どのミニ・ディレクト
リ・インデックスレジスタ501I-505Iが置き換えられる
かを示すデータで更新される。第3のサイクル中に、対
応するブロック・インデックスが、レジスタ561から置
き換えのために選ばれたミニ・ディレクトリ・エントリ
に対応するレジスタ501I-505Iにロードされる。
【0234】その後処理されるミニ・ディレクトリをミ
スしたユニークなタグの各々が、最後のミス・タグまで
同じ態様で扱われる。最後のミス・タグは、2つのユニ
ークなタグだけがミニ・ディレクトリをミスしたときは
第2のミス・タグであり、第3または第4のミス・タグ
でありうる。キャッシュ・ディレクトリを通して処理さ
れた最後のミス・タグは、まるでミニ・ディレクトリを
ミスする読み取りタグの組における唯一のユニークなタ
グであるかのように扱われる。最後のミス・タグの処理
が開始するとき、ディレクトリは、ビジー状態を示す信
号をアサート解除するので、読み取りタグの新しい組を
受け取ることができる。
【0235】最後に処理されたミス・タグについて、制
御回路559が、その対応するレジスタ550-553に、そのタ
グのためのブロック・インデックスがいずれのミニ・デ
ィレクトリ・エントリにも格納されていないことを示す
データをロードする。これは、すべての読み取りタグが
ミニ・ディレクトリに対して比較される第1のサイクル
の間に行うことができ、または他のミス・タグの処理と
平行して行うことができる。最後のミス・タグがメイン
・ディレクトリに対して比較されるサイクル中に、レジ
スタ550-553の中のデータが、バレルシフト装置563をと
おり、インタリーブ制御レジスタ565-568にロードさ
れ、そして、ミス・タグのブロック・インデックスがメ
イン・ディレクトリからメイン・ディレクトリ・ブロッ
ク・インデックスレジスタ561にロードされる。最後に
ディレクトリの最後のパイプライン段で、インタリーブ
・インデックス制御レジスタ565-568の出力が、それら
の対応するインタリーブ・インデックス・マルチプレク
サ571を制御するために使用されるので、最後に処理さ
れたミス・タグのためのインデックスが、メイン・ディ
レクトリ・ブロック・インデックスレジスタ561から提
供され、組の他の読み取りタグの各々のためのブロック
・インデックスがその対応するミニ・ディレクトリ・イ
ンデックスレジスタ5011-5051から提供される、。最後
に処理されたミス・タグのためのブロック・インデック
スをメイン・ディレクトリ・ブロック・インデックスレ
ジスタ561からアクセスすることによって、このタグの
ためのブロック・インデックスがそのミニ・ディレクト
リ・インデックスレジスタにロードされるのを待たない
ことにより、1サイクルが節約されることを理解する必
要がある。
【0236】III. この発明のTIMソフトウェア・デーモ
ン A. 総体的な動作 図29は、この発明のTIMソフトウェア・デーモンの動作
を示すフローチャートである。流れ図の上部の部分に示
されるのは、TIMの装置独立の動作のステップあり、流
れ図の下部の部分の中で示されるのは、TIMの装置依存
の動作のステップである。また、TIMの装置依存のルー
チンに接続するのは、高水準プロセス(上で説明した)
のユーザによって要求されたテクスチャ・マップされた
画像を描画するグラフィックス・ハードウェア装置660
である。グラフィックス・ハードウェア装置660は、任
意の数のグラフィックス・ハードウェア装置のであって
よい。イラストの簡単のために、グラフィックス・ハー
ドウェア装置が、テクスチャ・データのブロックを格納
し、割込みが処理される局部的なキャッシュ・メモリを
含むと仮定する。ハードウェア装置は、上で説明したも
のと同一または同様であってよい。
【0237】動作は、ステップ600でTIMの装置独立の部
分から始まる。動作は、関連したプロセス内のユーザ・
コマンドに応答してハードウェア・ドライバの一つで最
初にコンテキストをつくる第1のコマンドが生成される
そのときに開始する。その時点で、ルーチンがステップ
602に進みTIM内のすべてのルーチンおよびデータ構造が
初期状態にされる。初期化テップ602は、ステップ604を
含み、ステップ604において、TIMがそれを呼び出した特
定のプロセスから分離するので、デーモンとしてそのプ
ロセスから独立に走ることができる。言い換えると、ユ
ーザが描画すべき画像をつくったプロセスが対応するグ
ラフィックスAPIおよびグラフィックス・ハードウェア
・ドライバを通してTIMを呼び出し、次いで、初期化中
にTIMがその発呼プロセスから分離する。
【0238】次いで、ステップ604においてTIMはそのプ
ロセスとは独立に動作を開始する。動作が、ステップ60
6に進み、TIMがそのデータ構造および装置依存のルーチ
ンを両方とも初期化するので、それらは、作用するため
に装置独立のルーチンから後に呼ばれることができる。
TIMは、動作中にTIMがアクセスするデータを格納するい
くつかのデータ構造を含む。これらのデータ構造は、ス
テップ606の間に初期化にされる。言い換えると、その
ようなデータ構造のために割り当てられたシステム・ソ
フトウェア・メモリの中の記憶ロケーションが、二進ゼ
ロのようなある初期値を備えている。
【0239】データ構造は、TIMの装置独立のデータ構
造であるテクスチャ・メモリ・データ構造を含む。この
データ構造は、特定のプロセス内で各コンテキストのた
めに利用可能なテクスチャのすべてのコピー(共用メモ
リ・データ構造の中で格納されたそれらを除いて)を維
持し、それらのテクスチャの対応する優先度およびソフ
トウェア・テクスチャID(下で説明する)を格納する。
より大きい詳細には下で説明するように、このテクスチ
ャ・メモリ・データ構造は、テクスチャのTIM自身のソ
フトウェア・コピー、またはグラフィックスAPIおよび
グラフィックス・ハードウェア・ドライバで共有される
テクスチャのコピーのための共用メモリ・ロケーション
へのポインタを含む。
【0240】この初期化は、TIMに接続された最初のプ
ロセス内の最初のコンテキストが開かれるときに生じ
る。その時、接続されたハードウェア・ドライバは、TI
MをCRTIDおよびデバイスファイルを呼出しのパラメータ
として起動する。CRT IDは、そのプロセスに接続され、
そのコンテキストの画像を描画する特定のハードウェア
装置を表す32ビット・ワード(二進数)である。CRT
IDを使用してTIMが、装置依存のルーチン(その特定の
ハードウェア装置に関連する)を必要とする装置独立の
ルーチンを初期化するので、装置独立のルーチンは、装
置依存のルーチンを呼ぶよう準備される。特に、TIM変
数が、適当な装置依存のルーチン(特定のハードウェア
装置に関連する)にポイントするため装置独立のルーチ
ン内の機能ポインタを呼んだので、装置独立のルーチン
は、正しい装置依存のルーチンを呼ぶ。この装置独立の
ルーチン初期化も、ステップ606の中で生じる。
【0241】最初のプロセス内の最初のコンテキストが
開かれるとき、ハードウェア・ドライバがTIMに送るデ
バイスファイルは、そのハードウェア・ドライバに対応
する特定のハードウェア装置を表す文字列である。特定
のハードウェア装置は、デバイスファイルを通してシス
テム・ソフトウェア・メモリ内のメモリの連続ブロック
にマップされる。ファイルは、グラフィックス装置をマ
ップするために開かれることができる。デバイスファイ
ルが開かれるとき、システムはハードウェア装置を説明
するよう求められる。これに応答して、システムはハー
ドウェア装置IDを提供する。ハードウェア装置IDが、TI
Mにハードウェア・ドライバによって提供されたCRT ID
と比較される。装置IDがCRT IDと同一であるならば、ハ
ードウェア装置は、正しくマップされる。同一であるな
らば、そのハードウェア装置をマップするのに使われた
デバイスファイルがCRT IDによって識別した期待された
グラフィックス・ハードウェア装置に対応する。マップ
されるとき、ハードウェア装置内のレジスタは、ホスト
コンピュータ・システムのあるアドレス記憶ロケーショ
ンに対応する。このように、データが装置依存のルーチ
ンを通してシステム・メモリのアドレス・ロケーション
に書かれるとき、ハードウェア装置内の対応するレジス
タが書き込まれる。マッピングは、ステップ608で生じ
る。
【0242】初期化動作ステップ602が、次いでステッ
プ610に進み、示された特定のハードウェア装置(CRT I
Dによって表す)に関連する適当な装置依存のルーチン
が、初期化される。また、ステップ610で、装置依存の
ルーチンに関連しているデータ構造も初期化される。一
つの装置依存のデータ構造が、キャッシュ・ミラー・デ
ータ構造を含む。
【0243】このデータ構造に、その割り当てられたシ
ステム・ソフトウェア・メモリロケーションにおいて、
基礎をなすハードウェア装置の局部メモリ(キャッシュ
・メモリのような)に現在格納されているテクスチャ・
データのブロックのすべての記録およびそれらのテクス
チャの対応する優先度が、格納される。初期化ルーチン
は、次いでステップ612へ進み、テクスチャ転送バッフ
ァが作られる。より詳細に下で説明するように、テクス
チャ転送バッファは、テクスチャをハードウェア・ドラ
イバからTIMに提供する一つの手段であり、TIMは、それ
自身の割り当てられたテクスチャ・メモリ・データ構造
にそのテクスチャのコピーを格納することができる。テ
クスチャ転送バッファの作成は、この分野の技術に熟練
した人にとってあきらかなように従来どおりになされ
る。
【0244】初期化ルーチンは、次いで通信ソケットが
つくられるステップ614に進む。上で説明したように、
各ハードウェア・ドライバとTIMの間にこのソケットの
ための仮想回線接続が存在する。当業者に明らかなよう
に、通信ソケットは、2つのソフトウェア・ルーチンが
通信することができる経路である。ソケットの作成は、
通信経路から読み取り通信経路へ書込むバッファをつく
ることを含む。ソケット通して通信を確立する際に、一
つのルーチンが、仮想回線関連を通してソケットに通信
することを要求する。最初にソケットがつくられ、名前
に連結し、次いで、ソケットのクリエイターが、仮想回
線接続を求めて聞き始める。その後は、通信している装
置が、仮想回線を通してソケットへの接続を要求するこ
とができ、その新しい接続を介して通信を始めることが
できる。
【0245】ソケットがステップ614でつくられたあ
と、ステップ602の初期化ルーチンが完了し、TIMがステ
ップ616でプロセッサ上を走る独立のデーモンとしてア
イドルになる。TIMは、ステップ616の中でアイドルにあ
る間、そのアイドル状態から目ざめる前に3つの事象の
一つが生じるのを待つ。それらの事象は、ハードウェア
割込み、仮想回線接続、またはソケット通信を含む。ル
ーチンは、アイドル状態616からステップ618、620およ
び622に進み、それからステップ616でアイドル状態へル
ープしてもどる。
【0246】ステップ618で、TIMは、ハードウェア割込
みが生じたかどうかを判断する。上で特定のハードウェ
ア装置の例と関連して説明したように、ハードウェア装
置内でテクスチャされマップされた多角形のレンダリン
グ中に、キャッシュ・ミスが生じたとき、割込みが生じ
る。キャッシュ・ミスが生じるとき、割込み信号が、ハ
ードウェア装置からホストコンピュータに提供される。
割込みが生じるならば、ルーチンがステップ624まで進
み、割込みが装置独立のルーチンで処理される。割込み
を処理するためのTIMの装置独立のルーチンは、図28の
フローチャートを参照して下に詳細に説明される。
【0247】割込みを処理するための装置独立のルーチ
ンに加えて、2つの装置依存のルーチンが、割込みを処
理するために実行される。それらの装置依存のルーチン
は、ハードウェア装置によって必要とされるテクスチャ
・ブロックを判断するため、およびキャッシュ・メモリ
で置き換えるべきブロックを選ぶための装置依存のルー
チン642と、ハードウェア装置660の局部的なキャッシュ
・メモリ内で選ばれたロケーションにテクスチャ・デー
タの必要とされたブロックを書くための装置依存のルー
チン648とを含む。
【0248】ハードウェア割込みが生じないならば、ス
テップ618で判断されるように、または割込みが、ステ
ップ624の装置独立ルーチンによって処理されたあと
に、装置独立ルーチンが、ステップ620に進み、TIMが新
しいソケット接続要求が受け取られたかどうか判断す
る。ハードウェア・ドライバがTIMに情報を通信するた
めに新しいソケットを開けたいとき生じる、新しいソケ
ット接続のための要求が受け取られているならば、ルー
チンは、新しいソケットが接続されるステップ626に進
む。
【0249】ステップ620中に決定が生じたあと新しい
ソケット接続のための要求が受け取られていないか、ま
たは新しいソケットがステップ626で接続されているな
らば、ルーチンがステップ622に進み、TIMがソケット通
信が生じているかどうか判断する。そうでなければ、つ
いでルーチンは、TIMがアイドルになるステップ616に戻
る。ソケット通信が生じているならば、ルーチンは、ス
テップ628に進み、TIMがソケット通信を処理する。言い
換えると、TIMはソケットに耳を傾け、ソケットをとお
って伝えられる情報を受け取る。情報は、データのパケ
ットまたはデータストリームを含んでよい。
【0250】ステップ628から、ルーチンがステップ630
に進み、そこで、TIMは、通信が起こったプロセスがま
だ存在するかどうか判断する。そのプロセス内であるコ
ンテキストをつくったのち、プロセスがユーザによって
終了されているこかもしれない。プロセスがユーザによ
って終了されているならば、ルーチンがステップ632に
進み、終了されたプロセスに関連するテクスチャ(孤児
になるテクスチャとして知られる)が処理される。この
ステップで、装置独立ルーチンが、TIMのテクスチャ・
コピー・データ構造から孤児になるテクスチャのTIMの
コピーを消去する。さらに、ステップ632で、TIMは、通
信が送られたソケットを聞くのをやめる。ステップ632
の装置独立ルーチンは、プロセスが終了されたとき、装
置依存のルーチン654も呼ぶ。より詳細を下で説明する
ように、装置依存のルーチン654が、現在、ハードウェ
ア装置のキャッシュ・メモリに格納されている、終了さ
れたテクスチャからのテクスチャ・データを含むブロッ
クを無効にする。装置独立ルーチンは、次いでステップ
634(上で説明した)にもどる。
【0251】図29の流れ図からよくわかるように、装置
に依存するルーチンが初期化され、あるステップまたは
TIMの総体的な装置独立の部分のルーチンによって作用
のために呼ばれる。たとえば、装置に依存するルーチン
が初期化される、装置独立ルーチンのステップ608の
間、初期化の装置依存ルーチンのステップ636が呼ばれ
る。この装置依存ルーチンは、テクセル・キャッシュ・
データ構造が初期化されるステップ638の装置依存ルー
チンを含む。上で説明したように、この構造が、テクス
チャ・データのどのブロックが、ハードウェア装置660
のキャッシュ・メモリに現在格納されているかを記録す
る。装置に依存するルーチン636は、完了するまでハー
ドウェア装置の既存の割込みが処理される装置依存ルー
チンのステップ640を含む。
【0252】TIMの装置依存ルーチンは、複数のハード
ウェア装置からのデータを格納する共有ライブラリを持
つ。このように、基礎をなすグラフィックス・ハードウ
ェア装置がシステムに加えられるならば、そのハードウ
ェア装置のための装置依存データが、共有ライブラリに
格納される。割込みを処理するためのステップ624の装
置独立ルーチンが、割込みを処理するためにステップ64
2の装置に依存するルーチンを呼ぶ。ステップ642の割込
みを処理するためのこの装置に依存するルーチンは、現
在のプリミティブを描画するのにハードウェア装置660
で必要とされるテクスチャ・ブロックを判断するために
ステップ644のルーチンを含む。このルーチンは、ハー
ドウェア装置に関して上で詳細に説明した。上で説明さ
れるように、このルーチンはミスされたブロックのパイ
プ・タグの読み出し、必要なテクスチャ・データの特定
のブロックを判断するためにそれをデコードすることを
含んでいる。割込みを処理するためのステップ642の装
置依存ルーチンは、ハードウェア装置660の局部的なキ
ャッシュ・メモリ内に置き換えるテクスチャ・ブロック
を選ぶためにステップ646の装置に依存するルーチンも
含む。ステップ646のルーチンは、図32を参照して説明
される。
【0253】割込みを処理するためのステップ624の装
置独立ルーチンは、ハードウェア装置660のキャッシュ
・メモリの選ばれたブロック・ロケーションににテクス
チャ・ブロックを書くためにステップ648の装置に依存
するルーチンも呼ぶ。詳細で上で説明したように、テク
スチャ・データのブロックが、ハードウェア・メモリの
3-Dレンダリング・パイプラインを避けるバスを通して
キャッシュ・メモリに書かれる。
【0254】TIMの装置独立の部分が、ソケット通信を
ステップ628で処理しているとき、その装置独立ルーチ
ンが、装置依存ルーチン650、652および654の任意の一
つを呼ぶ。停止状態が生じたとき、装置依存ルーチン65
0が呼ばれる。上で詳細に説明したように、第1のテク
スチャを含むブロックがキャッシュにダウンロードさ
れ、次いで、TIMが第2のテクスチャを同じブロックに
詰めるときに、停止状態が生じる。その時点で、装置依
存ルーチン650が始められ、ハードウェア装置の動作が
停止させられ、修正されたテクスチャ・ブロックがキャ
ッシュ・メモリ内の前のブロックの既存のロケーション
に書かれる。
【0255】テクスチャ・データのブロックがハードウ
ェア装置660のキャッシュ・メモリにダウンロードされ
たとき、ステップ652の装置依存ルーチンが、呼ばれ
る。ステップ652の装置依存ルーチンが、ダウンロード
されたキャッシュ・データ構造の中でテクスチャ・ブロ
ックの優先度を更新する。テクスチャ優先度は、下で詳
細に説明される。
【0256】図30は、二つの間の通信の間のハードウェ
ア・ドライバとTIMの動作を図示する部分的にフローチ
ャートになった機能的ブロック図である。TIMと複数の
ハードウェア・ドライバの間の操作関係は、図3のブロ
ック図に示される。ハードウェア・ドライバの各々が、
図30のルーチンに従ってTIMと通信する。図30のルーチ
ンが、三つの次の機能を行うためにハードウェア・ドラ
イバとTIMによって実行される:(1)ハードウェア・ドラ
イバからTIMへテクスチャの優先度を通信する;(2)TIM
にハードウェア・テクスチャIDを各新しいテクスチャに
割り当てさせるか、またはそのテクスチャのすでにある
ハードウェア・テクスチャIDが正しいことを検証する;
(3)TIMにまだ持っていないそれ自身のシステム記憶域に
テクスチャをコピーさせるグラフィックス・ハードウェ
ア・ドライバの動作を示すフローチャートが、図30の左
側に示され、ハードウェア・ドライバの動作のあるもの
に応答するTIMの機能が図30の右側に示される。
【0257】上で示したように、ユーザが高水準プロセ
ス内でテクスチャマッピングを必要とする、コンテキス
トをつくるとき、コマンド、およびその特定のプロセス
のためにグラフィックスAPI/ハードウェア・ドライバの
システム・ソフトウェア・メモリに格納されているテク
スチャのコピーが、プロセスからグラフィックスAPI
に、次いでハードウェア・ドライバに渡される。さらに
そのコンテキストの画像が、グラフィックス・ハードウ
ェア・ドライバに提供される多角形のような画像成分に
分けられる。情報が、グラフィックス・ハードウェア・
ドライバに提供されるとき、図30のルーチンが、ステッ
プ700から始まり、グラフィックス・ハードウェア・ド
ライバは、プロセスが接続される基礎をなすグラフィッ
クス・ハードウェア装置が、選ばれたテクスチャを扱う
ことができるかどうかを、判断する。グラフィックス・
ハードウェア・ドライバが、テクスチャのサイズのよう
な属性を調べ、そのような属性が基礎をなすグラフィッ
クス・ハードウェア装置によって支援されうるかどうか
判断することによってこの判断をする。基礎をなすグラ
フィックス・ハードウェア装置が、レジスタ・サイズ、
限られた局部的なテクスチャ記憶容量、バッファ・サイ
ズ、その他のような物理的な制限を持つことがあり、こ
の物理的な制限は、テクスチャの属性またはそれを多角
形に適用する手段によって越えられることがありえる。
先に述べたように、グラフィックス・ハードウェア・ド
ライバが、基礎をなすグラフィックス・ハードウェア装
置の物理的な制限についての知識を持ち、その知識でス
テップ700の判断を行う。さらに当業者が理解するよう
に、基礎をなすグラフィックス・ハードウェア装置が、
ユーザの要求する機能を実行できないことがある。ステ
ップ700で、ハードウェア・ドライバが、基礎をなすハ
ードウェア装置が、要求されたテクスチャマッピング機
能を物理的に扱うことができないと判断するならば、ル
ーチンがステップ705に進み、要求されたテクスチャマ
ッピング機能が、ハードウェア装置を除外してソフトウ
ェアによって実行される。ソフトウェア・テクスチャマ
ッピング(ハードウェア装置の使用のないテクスチャマ
ッピング)は、当業者によってよく理解されているもの
であるから、ここで説明しない。
【0258】ステップ700中に、グラフィックス・ハー
ドウェア・ドライバが、基礎をなすハードウェア装置
が、要求されたテクスチャマッピング機能を扱うことが
できると判断するならば、ルーチンはステップ720に進
み、グラフィックス・ハードウェア・ドライバがそれぞ
れの新しいテクスチャ優先度をTIMに知らせる。テクス
チャ優先度リストが、優先度の順に対応して処理するた
めに現在利用可能なテクスチャのソフトウェア・テクス
チャIDを含む。そのリストは、新しくつくられたテクス
チャについて一つのテクスチャのように小さいことがあ
りえる。この優先度リストは、ソフトウェアシステム・
メモリの割当領域に格納される。優先度は、ユーザ規定
された優先度および内部優先度を含むことができる。内
部優先度より優位をとるユーザ規定の優先度は、図34を
参照して下に説明するように、テクスチャの使用予測に
ついてのユーザ提供の知識に基づく優先順位である。内
部的に、システムは最も最近使用されたテクスチャに、
最も高い優先度を与える。新しくつくられたまたは現在
アクティブなテクスチャが、下で説明されるようにユー
ザ規定の優先度、および最も最近使用された内部優先度
の両方に対して最も高い優先度を与えられる。
【0259】ステップ720において、それぞれの新しい
テクスチャ優先度がグラフィックス・ハードウェア・ド
ライバからTIMに知らされる。新しいテクスチャが内部
優先度リストに加えられる都度、そのリスト内のテクス
チャの優先度のすべてが変わる。こうして新しい優先度
がハードウェア・ドライバからTIMに伝えられる。優先
度は、ソケット728を通して情報のパケットの形で伝え
られ、各パケットが、そのグラフィックス・ハードウェ
ア・ドライバに対応するプロセスのプロセスID、優先度
リストの各テクスチャのソフトウェア・テクスチャID、
およびこれらのテクスチャの対応する優先度を含む。上
で説明したように、プロセスIDおよびソフトウェア・テ
クスチャIDは、32ビットのディジタル・ワードであ
る。優先度は、整数として伝えられる。TIMは、この特
定のプロセスのために以前に送り込まれたテクスチャを
記録している。したがって、TIMはこの優先度リストに
テクスチャのいくつかをすでに格納していることがあ
る。TIMは、次いでそのプロセスのために既に持ってい
るテクスチャの優先度を修正する。
【0260】TIMがシステム・メモリのそれ自身の割当
領域にパケットで送られたIDによって表されるテクスチ
ャの一つを格納していないならば、TIMは、そのテクス
チャを無視する。そのテクスチャIDによって表されるテ
クスチャは、後にハードウェア・ドライバから提供され
るか、または必要とされない。ユーザが特定のテクスチ
ャの使用を終わる特別な場合では、そのテクスチャの優
先度が、優先度0としてTIMに知らされ、TIMは、そのテ
クスチャを自身の割り当てられたシステム・ソフトウェ
ア・メモリロケーション、または共用メモリ・ロケーシ
ョン(下で説明する)から取り除き、ハードウェア装置
の局部的なテクスチャ・メモリからそのテクスチャを取
り除くために装置依存ルーチンを起動する。その装置依
存ルーチンは、図29のルーチン654である。上で説明さ
れた特定のハードウェア装置について、例えば、終了さ
れたテクスチャを含む局部的なキャッシュ・メモリに格
納されたデータのブロックは、その装置依存ルーチンに
よって取り除かれる。TIMの動作は、ステップ725で示さ
れる。
【0261】ルーチンが、次いでステップ730に進み、
グラフィックス・ハードウェア・ドライバが、新しく要
求されたテクスチャのためのハードウェア・テクスチャ
IDが存在するかどうか判断する。システム・ソフトウェ
ア・メモリの割当記憶域に格納したデータ構造が、ソフ
トウェア・テクスチャIDおよび対応するハードウェア・
テクスチャID(割り当てられるとき)を格納する。ハー
ドウェア・テクスチャIDおよびサブテクスチャ IDは、
(ここで説明する)基礎をなすハードウェア装置によっ
て認識できるIDである。上で説明された例の中で、ハー
ドウェア・テクスチャIDは、テクスチャをお互いから見
分ける8ビット・ワードである。ハードウェア・ドライ
バは、データ構造内でソフトウェア・テクスチャIDのア
ドレスされたロケーションを見、そして、対応するハー
ドウェア・テクスチャIDがリストされるかどうか見るる
ことによって、ハードウェア・テクスチャIDが割り当て
られているかどうか判断する。
【0262】ハードウェア・テクスチャIDが割り当てら
れないならば、ルーチンがステップ740に進み、ハード
ウェア・ドライバがTIMからハードウェア・テクスチャI
Dの割り当てを要求する。この要求は、TIMにソケット72
8を通して情報のパケットで送られる。パケットは、対
応するプロセスのためのプロセスID、ソフトウェア・
テクスチャID、およびハードウェア・テクスチャIDが割
り当てられないことをTIMに示すハードウェア・テクス
チャIDのための値、ならびにベース・マップのS、T座標
値によるテクスチャのサイズを含む。ステップ745にお
いて、TIMがハードウェア・テクスチャIDをそのテクス
チャに割り当て、そのハードウェア・テクスチャIDをソ
ケット728を通してグラフィックス・ハードウェア・ド
ライバに戻す。
【0263】ハードウェア・テクスチャIDを割り当てる
際に、TIMは、グラフィックス・ハードウェア・ドライ
バによって提供されるS、T座標値を見ることによって、
ベース・テクスチャ・マップのサイズをチェックする。
テクスチャ・ベース・マップがl28xl28テクセルより小
さいならば、TIMが、新しいテクスチャで占められうるT
IM自身の割当られたシステム記憶域に格納された対応す
るプロセスのために、テクスチャ・データのブロックの
いずれかに空の空間があるかどうか、判断する。空の空
間が存在するならば、その新しいテクスチャに割り当て
られたハードウェア・テクスチャIDが、空の空間を持つ
ブロックに格納されたテクスチャのものと同じであり、
新しいテクスチャに別個のサブ・テクスチャIDが割り当
てられる。これが、ハードウェア装置についての上の説
明で説明され、また図35を参照して下で説明される。TI
Mの専用のテクスチャ・メモリ・データ構造内の前から
あるテクスチャとともに新しいテクスチャが同じブロッ
クに詰められる時点で、停止が生じ、そして、現在キャ
ッシュに格納されているブロックに上書きするよう一つ
または複数のブロックをダウンロードする対応する装置
依存ルーチンが生じる。停止(HALT)状況の発生が、ハ
ードウェア装置とともに上で説明された。HALTを処理す
るための装置依存ルーチンが図29のステップ650で示さ
れる。
【0264】テクスチャIDとサブ・テクスチャIDを割り
当てるこの方式は、上で典型的なハードウェア装置に関
して説明した特定のテクスチャ配分計画に基づく。しか
し、この特定の方式は、典型的な例としてだけのもの
で、制限的なものではない。上で説明したように、この
発明のTIMは、上で説明された実施例とは異なるテクス
チャ記憶割当て要求を持つ異なるハードウェア装置で作
用することができるからである。
【0265】新しいテクスチャが128xl28テクセルを越
える大きさであるならば、TIMは新しいハードウェア・
テクスチャIDをテクスチャに割り当てる。この時、ステ
ップ745において、TIMは、新しいテクスチャのコピーを
格納するために自身のシステム記憶域内に空間を空け
る。新しく割り当てられたハードウェア・テクスチャID
が、ソケット728通して復路のパケットによりグラフィ
ックス・ハードウェア・ドライバに戻される。次いでハ
ードウェア・ドライバが、新しく割り当てられたハード
ウェア・テクスチャIDをテクスチャIDデータ構造リスト
の中の適当なロケーションに格納する。
【0266】ルーチンは、ステップ740からステップ750
に進み、グラフィックス・ハードウェア・ドライバがハ
ードウェア・テクスチャIDが割り当てられているかどう
か判断する。ハードウェア・テクスチャIDは8ビット・
ワードであるので、256の別個のハードウェア・テクス
チャIDだけが利用可能である。したがって、すべての25
6の別個のハードウェア・テクスチャIDが割り当てられ
てしまう可能性がある。その場合、TIMは、256のテクス
チャのいずれかが他のものより低い優先度を持つかどう
か判断する。もしあれば、TIMが、以前に割り当てられ
た低い優先度のテクスチャのためのハードウェア・テク
スチャIDの一つを新しいテクスチャに再割り当てするこ
とができる。すべての256のテクスチャが最も高い優先
度テクスチャである場合、新しいハードウェア・テクス
チャIDは割り当てられないで、ルーチンがステップ755
に進み、テクスチャマッピングがソフトウェアでなされ
る。
【0267】ハードウェア・テクスチャIDが割り当てら
れたならば、ルーチンがステップ750からステップ760に
進み、グラフィックス・ハードウェア・ドライバがテク
スチャがTIMにコピーされる必要があるかどうか判断す
る。言い換えるとグラフィックス・ハードウェア・ドラ
イバは、TIMが、割当られたシステム・ソフトウェア・
テクスチャ・データ構造にすでにテクスチャのコピーを
持つか、またはそのテクスチャまたはその一部分が、共
用メモリ・ロケーションに格納されているかどうか判断
する。TIMがまだそのテクスチャのコピーを格納してい
ないならば、そのテクスチャが、ステップ770でグラフ
ィックス・ハードウェア・ドライバによってTIMにコピ
ーされる。TIMにテクスチャをコピーするための3つの別
個の方法がある。これを図33を参照して詳細に説明す
る。テクスチャのサイズおよび他のパラメータの詳細が
TIMにソケット728を通してパケットで送られる。ステッ
プ775で、TIMが次いでテクスチャをコピーし、TIM自身
のデータ構造に格納されるべきテクスチャおよびその部
分のために、テクスチャは、ハードウェア装置によって
認識できるブロックにパックされる。ブロックは、TIM
の割当られたデータ構造に次いで格納される。より詳細
に下で説明するように、大きいテクスチャおよび大きい
テクスチャの部分が、最初にハードウェアによって認識
できるブロックにパックされることなく共用メモリ領域
に格納され、TIMがテクスチャへのポインタをTIM自身の
メモリ・データ構造で共用メモリ領域に格納する。ステ
ップ770の後、ルーチンは終わる。
【0268】ステップ730で、ハードウェア・テクスチ
ャIDが、要求されたテクスチャにすでに割り当てられて
いると判断されるならば、ルーチンがステップ790に進
み、グラフィックス・ハードウェア・ドライバが、前に
割り当てられたハードウェア・テクスチャIDが変わって
いないことを検証する。グラフィックス・ハードウェア
・ドライバは、ソフトウェア・テクスチャIDおよび前に
割り当てられたハードウェア・テクスチャIDを、ソケッ
トを通してTIMに知らせることによって、この検証を実
行する。TIMは、これに応答して、ステップ795で、ソフ
トウェア・テクスチャIDおよびハードウェア・ドライバ
によって送られる対応するハードウェア・テクスチャID
の両方を見て、それをTIMの格納されたIDリストと比較
する。ハードウェア・テクスチャIDが変えられている
(TIMが、前に割り当てられたハードウェア・テクスチ
ャIDを別のテクスチャに割り当てた場合にありうる)な
らば、TIMは、使えるならば、新しいハードウェア・テ
クスチャIDを割り当てる。したがって、TIMは、ハード
ウェアIDが変わっていないことを検証するか、または、
新しいIDが割り当てられるならば、ソケット728を通し
て新しいIDをハードウェア・ドライバに知らせる。
【0269】ステップ790から、ルーチンがステップ750
に進み、IDが割り当てられたかどうかが判断される。ル
ーチンは、上で概説されるように進む。
【0270】ステップ760で、TIMがすでにそのテクスチ
ャの格納されたコピーを持つのでテクスチャがコピーさ
れる必要がないならば、ルーチンは完了する。
【0271】図31は、割込みを処理するための装置独立
ルーチンのステップを示すフローチャートである。この
ルーチンは、図29のステップ624で生じる。キャッシュ
・ミスが生じた後、ハードウェア装置で割り込みが生じ
るとき、割込み信号が、ハードウェアからホストコンピ
ュータのプロセッサに提供され、割込みフラグをセット
する。そのフラグがプロセッサによって読み取られ、TI
Mが図29のステップ618で起こされる。
【0272】割込みを処理するための装置独立ルーチン
がステップ800で開始し、ステップ802に進み、NOT-HALT
EDと呼ばれるソフトウェア変数が偽(false)にセットさ
れる。ルーチンは、次いでステップ804に進み、TIMが変
数NOT-HALTEDが真かどうか判断する。ルーチンがちょう
ど開始し、変数NOT-HALTEDがステップ802で偽に等しく
セットされているので、ステップ804の決定への回答
は、否定(no)であり、ルーチンはステップ806に進む。
変数NOT-HALTEDが偽であるとき、割込みは、まだ処理さ
れていない。
【0273】ステップ806で、MAP-NUMBERと称する変数
が-1に等しくセットされる。変数MAP-NUMBERは、実際の
マップ番号を表す。このように、変数MAP-NUMBERが-1に
等しくないとき、有効テクスチャがその割り込みに関連
する。
【0274】ルーチンは、次いでステップ808に進み、
割込みを処理するための装置依存ルーチンが呼び出され
る。この装置に依存するルーチンは、図29のルーチン64
4である。このルーチンは、ハードウェア装置を停止さ
せること、および特定の多角形を描画するためにハード
ウェア装置によって必要とされるテクスチャ・ブロック
を決定すること、を含む。必要とされるブロックを判断
する際に、パイプ・タグが、読み出され、パイプ・タグ
から、テクスチャID、MAP-NUMBERおよびS,T MSB座標が
決定される。この方式は、ハードウェア装置の説明の中
で詳細に上で説明されている。装置依存ルーチンは、次
いで変数MAP-NUMBERを必要とされたブロックの適当なMI
Pマップ番号にリセットする。
【0275】ルーチンが、次いでステップ810に進み、
変数MAP-NUMBERが-1に等しくないかどうか判断される。
ステップ808の装置依存割込みルーチンが変数MAP-INUMB
ERをハードウェア装置によって必要なブロックのマップ
番号にセットするので、ステップ810の決定への回答
は、肯定(yes)である。
【0276】ルーチンは、次いでステップ812に進み、
ここでTIMは、ステップ808の装置依存ルーチンによって
規定されるハードウェア・テクスチャIDによって表わさ
れるテクスチャが、このプロセスのために存在するかど
うか判断する。TIMは、そのテクスチャIDに関連するテ
クスチャのデータ構造を探索することによって、そのテ
クスチャが存在するかどうか判断する。テクスチャが存
在しないならば、ルーチンはステップ814に進む。ステ
ップ814において、装置独立ルーチンが図29のステップ6
48で示される装置依存ダウンロード・ルーチンを呼ぶ。
装置依存ルーチンは、割込みをクリアするよう指示さ
れ、変数NOT-HALTEDを真にセットする。ルーチンが、ス
テップ804に進み、TIMが変数NOT-HALTEDが真かどうか判
断する。変数NOT-HALTEDがちょうど真と等しくセットさ
れたので、その判断への回答はイエスであり、ルーチン
が完結する。この状況において、テクスチャが終了され
ていることがありえ、またはテクスチャがつくられたプ
ロセスがユーザによって終了されていることがありえ
る。
【0277】代わりに、ステップ808の装置依存の割込
みルーチンによって見つけられたテクスチャIDによって
表されるテクスチャが存在するならば、ルーチンはステ
ップ816に進む。ステップ816で、必要とされたテクスチ
ャが共用メモリ・ロケーションに格納されるかどうか、
TIMが判断する。テクスチャが共用メモリ・ロケーショ
ンに格納されないならば、ルーチンはステップ818に進
む。ステップ818で、TIM自身の割当られたシステム・メ
モリにおけるデータ構造のブロック・ポインタが、MAP-
NUMBER変数によって表わされるテクスチャの特定のMIP
マップのはじめのアドレスに進められる。データ構造の
ブロック・ポインタは、TIM自身のシステム・メモリ・
データ構造内に格納された任意のブロックを指すことが
できる。上でハードウェア装置に関して説明したよう
に、8より大きいマップ番号を持っているマップについ
ては、256x256テクセルより大きいマップのそれぞれが
データの少なくとも一つのブロックをとる。例えば、マ
ップ番号9を持っているマップについては、サイズが512
x5l2テクセルであり、そのマップのデータを格納するの
にデータの4つのブロック(各ブロックが256x 256テク
セル)が必要である。同様に、マップ番号10を持つ1024
x 1024テクセルの大きさの一つのマップのデータのすべ
てを格納するために、16のブロックが、必要である。し
かし、マップ番号8以下のマップについては、マップの
すべてが、データの2つのブロックにパックされ、この2
つのブロックの一つがキャッシュ・メモリの一つのバン
クに格納される。そして、この2つのブロックの他方が
キャッシュ・メモリの他方のバンクに格納される。この
メモリ配分計画は、図17-19に関連して上で説明した。
【0278】ルーチンがステップ820に進み、TIMがマッ
プ番号が8を超えるかどうか判断する。TIMは、変数MAP-
NUMBER(マップ番号と等しい)を見ることによってマッ
プ番号が8を超えるかどうか判断する。マップ番号が8を
超えるならば、ルーチンはステップ822に進み、メモリ
・データ構造のブロック・ポインタが、S,T MSB座標を
使用してハードウェア装置によって必要とされる特定の
MIPマップのデータ部分を格納する特定のブロックのは
じめに進められる。図17-19に関して上で説明したよう
に、必要な特定のMIPマップがマップ番号9であるなら
ば、4つの異なるブロックが、そのマップからのデータ
を格納する。このように、一つのS MSB座標と一つのT M
SB座標が、4つのブロックのどれが、ハードウェア装置
によって要求されるマップ9のテクスチャ・データ部分
を格納するか判断するのに必要である。それゆえに、一
つのS MSB座標と一つのT MSB座標を使用して、ブロック
・ポインタが、マップの4つのブロックの適当なものに
進められる。
【0279】必要とされたMIPマップがマップ番号10を
持つならば、16の異なるブロックが、そのマップのデー
タを格納するために存在する。このように、16のブロッ
クのどれがハードウェア装置が必要とするマップのテク
スチャ・データ部分を含むかをデコードするのために、
2つのMSB S座標と2つのMSB T座標が必要である。Sおよ
びT MSB座標ビット使用して、適当なブロックが決定さ
れ、ブロック・ポインタがそのブロックに進ませられ
る。
【0280】ステップ820で、マップ番号が8以下である
ことが判断されると、ルーチンはステップ824に進む。
ステップ824で、ブロック・ポインタは、もしもT MSBビ
ットがセットされているならば8以下のマップ番号を持
つマップのテクスチャ・データを格納する2つのブロッ
クの一つから他方のブロックに動かされる。上で説明し
たように、8以下のマップ番号を持つマップのテクスチ
ャ・データのすべてが2つのブロック内に格納される。
このように、2つのブロックのどちらが、ダウンロード
するに適当なブロックであるかをデコ―ドするために一
つのビットだけが必要である。このように、8以下のマ
ップ番号を持つマップの任意のものについて2つのブロ
ックのどちらが、適当なブロックであるかデコ―ドする
ために、T MSBビットが使用される。
【0281】ステップ816で、必要なテクスチャが、シ
ステムの共用メモリ・ロケーションに格納されているこ
とがはんだんされるならば、ルーチンはステップ826に
進み、マップ番号が8以下かどうかが判断される。マッ
プ番号が8以下であるならば、ルーチンがステップ828に
進み、共用メモリ・データ構造のブロック・ポインタが
必要なマップを格納する2つのブロックのスタートに進
められる。次いで、ルーチンがステップ824に進み、上
で説明したように、T MSBビットがセットされているな
らば、ブロック・ポインタが、ブロックの一方から他方
に進められる。
【0282】代わりにステップ826で、マップ番号が8を
超えることが判断されるならば、ルーチンがステップ83
0に進み、ブロック・ポインタが必要な特定のMIPマップ
のテクスチャ部分を格納する複数のブロックの最初のブ
ロックに進められる。先に説明したように、必要なマッ
プが9のマップ番号を持つならば、4つの異なるブロック
の一つが必要なブロックである。必要なマップがマップ
番号10を持つならば、16の異なるブロックの一つが必要
な特定のブロックである。
【0283】ルーチンが次いでステップ832に進み、ブ
ロック・ポインタが、ステップ822で行われたのと同様
にS、T MSB座標ビットを使用して共用メモリ・データ構
造内の必要な特定のブロックに進められる。ダウンロー
ドされることを要求される特定のブロックを指すために
適当なブロック・ポインタが進められるステップ822、8
24および832の各々から、ルーチンは、ステップ834に進
む。ステップ834で、装置独立ルーチンが、必要なブロ
ックをダウンロードし、これ以上割込みがないならば割
込みをクリアするために装置依存ダウンロード・ルーチ
ンを呼ぶ。ブロックをダウンロードするための装置依存
ルーチンは、図29のステップ648で示されるダウンロー
ド・ルーチンである。
【0284】ブロックをダウンロードするためのこの装
置依存ルーチンが、ステップ822、824、または832で実
行されるように、ポインタによって指されたブロックを
ダウンロードする。上で詳細に説明したように、この例
のハードウェア装置のために、ハードウェア装置の3-D
パイプライン・レンダリング経路を避け、2-D経路をと
おしてブロックが、ダウンロードされる。その特定のブ
ロックは、キャッシュ・メモリの選ばれたロケーション
にダウンロードされる。この選ばれたロケーションは、
そのときキャッシュ・メモリに格納されていた64のブロ
ックの上書きする一つを含む。バンド幅節減のために将
来の割込みを避けるため上書きする最適のブロックは、
図29のステップ646で示され図32のフローチャートを参
照して説明した装置依存ルーチンで判断される。
【0285】図31のルーチンは、ステップ834からステ
ップ804に進み、変数NOT-HALTEDが真かどうか判断され
る。そうであるならば、ルーチンは完了する。ブロック
がダウンロードされこれ以上割込みが存在しないことが
判断されたあと、ステップ834の装置依存ダウンロード
・ルーチンが、変数NOT-HALTEDを真にセットする。これ
が、割込みをクリアして、ルーチンを終わる。
【0286】ステップ810で、マップ番号がー1に等し
くないと判断されるならば、上で説明したようにルーチ
ンがステップ814に進む。
【0287】図32は、割込みが生じるときハードウェア
装置の局部キャッシュ・メモリのどのブロックを置き換
えるか判断するためにTIMによって実行される装置依存
ルーチンのブロック図である。この装置依存ルーチン
は、図29のステップ646として示される。上で図26を参
照して説明したように、割込みが処理されるとき装置依
存ルーチンが、ステップ624の装置独立ルーチンによっ
て呼ばれる。キャッシュ・メモリの中で置き換えるブロ
ックを選ぶ方式は、そのときキャッシュ・メモリにある
すべてのブロックの過去の使用頻度、およびブロックに
格納されたテクスチャの相対的優先度に基づくそのよう
なブロックの将来の使用予測の両方を考慮する。この方
式は、システムのバンド幅を減らすため将来の割込みの
番号を減らすことを狙う。
【0288】図32を参照して説明されたルーチンは、上
で説明された特定のハードウェア装置の使用を仮定す
る。このように、下で詳細に説明されるように、ルーチ
ンは、ハードウェア装置の最も最近使用された(MRLT)
および現在使用される(CU)レジスタを更新する。しか
し、図32のルーチンは、この発明のシステムが使用され
る任意の基礎をなすハードウェア装置に適合するよう変
えられてもよいことを理解する必要がある。例えば、装
置は、説明した例のものと全く同じ物理的構造を持つ必
要はないが、システム・メモリに格納されたテクスチャ
・データの一部を格納することができる必要があり、画
像を描画するためにそのとき必要とされるテクスチャ・
データが局部メモリにないとき、割込みを出す必要があ
る。
【0289】図32のルーチンは、割込みがハードウェア
装置に生じ、信号がハードウェア装置からプロセッサに
送られ、この信号が読み出されてTIMが起こされ、TIMが
図29のステップ624の装置独立ルーチンからこのルーチ
ンを呼ぶとき、ステップ900で始まる。図32のルーチン
は、ステップ902に進み、そこでTIMがハードウェア装置
からの各SDRAMバンクに対応するMRUおよびCUレジスタを
読みとる。これらのレジスタが、キャッシュにおけるテ
クスチャ・データのどのブロックが最も最近使用された
(MRU: most recently used)か、または現在用いられ
ている(CU: currently in use)かに関する情報を得続け
る。上で説明されたように、レジスタの各々が、32ビ
ット・レジスタであり、対応するバンクにおいて一つの
ビットが32のブロックの各々に対応する。対応するブロ
ックが使用された(すなわち、テクセルがキャッシュの
そのブロックからアクセスされた)とき、MRUレジスタ
の中の1ビットが、アサートされ、対応するブロックが
ミニ・ディレクトリにあるとき(上で説明した)、CUレ
ジスタの中の1ビットがアサートされる。
【0290】以上のハードウェアの説明で述べたよう
に、連続ピクセルがしばしば同じ一つまたは複数のブロ
ックに格納されたテクセルにマップし、プリミティブ
(すなわち、三角形のような多角形の部分)のピクセル
を描画するときに、ブロックの同じ組に繰り返して使用
することが要求され。このように繰り返される割込みを
避けるために、最近使用されたブロックは、続くピクセ
ルを描画するときにそのブロックをアクセスする必要が
あるかもしれないので、置き換えないことが望ましい。
次のピクセルを描画する際にハードウェア装置によって
必要とされる見込みが小さいまたは最小のブロックを置
き換え用に選ぶことによって、システムのバンド幅が最
小にされる。
【0291】MRUおよびCUレジスタを読み出したあと、
ルーチンがステップ904に進み、書き込むべきキャッシ
ュ・メモリのSDRAMのバンク0またはバンク1の一つが選
ばれる。どのバンクに書き込むかの決定は、ハードウェ
ア装置と関連して上で説明した方法に従ってなされる。
ルーチンが、次いでステップ906に進み、変数BLOCK NUM
BERがマイナス1に等しくセットされ、下で説明される
ように繰返しが完結し、ブロックが置き換えのために選
ばれたとき、指示を出すために使用される。変数BLOCK
NUMBERは、置き換えのために選ばれた実際のブロック番
号を表す。
【0292】ルーチンが、次いでステップ908に進み、
変数BLOCK NUMBERがマイナス1に等しいかどうか判断さ
れる。第1の繰返しでは、ちょうどセットされたばかり
なので回答は、イエスで、ルーチンがステップ910に進
み、どのバンクがステップ904での書き込みに選ばれた
かが判断される。書き込まれるバンクがバンク0である
ならば、ルーチンはステップ912および914に進む。代わ
りに、書かれるバンクが、バンク1であるならば、ルー
チンはステップ916および918に進む。各バンクのための
2対のステップが同様の操作を実行する。操作は、最も
最近使用されたかまたは現在使用されているブロックを
利用不能にするよう設計されている。これらのブロック
は、そのときMRUおよびCUレジスタでアサートされてい
るビットに対応する。
【0293】テクスチャ・ハードウェア・メモリの説明
の中で述べたように、キャッシュは、最高64のブロック
のテクスチャ・データを保持することができる。各ブロ
ックは、ブロック・タグによって識別される。すべての
64のブロックは、置き換えのための可用性についてチェ
ックされる。先に述べたようにキャッシュ・メモリのバ
ンク0が、ブロック0ないし31を保持し、バンク1がブロ
ック32ないし64を保持する。ステップ912で、ブロック0
が、置き換え可用性について調べる際の開始ブロックに
指名され、ブロック31が、バンク0のブロックの置き換
えのための可用性について調べる際の終わりのブロック
に指名される。これが、変数START BLOCKをゼロにセッ
トし、変数END BLOCKを31にセットすることによって達
成される。同様に、ステップ916で、バンク1につい
て、変数START BLOCKが、32に等しくセットされ、変数E
ND BLOCKが63に等しくセットされ、バンク1のブロック
の置き換えのための可用性チェックにおいて、開始ブロ
ックが、ブロック32で、終了ブロックがブロック63であ
ることが示される。
【0294】バンク0およびバンク1の各々について、
変数BLOCKS TO USE(使用するブロック)は、32ビッ
ト・ワードであり、1ビットがそのバンクの各ブロック
に対応し、ブロックのいずれかが置き換えのため使用可
能であるかどうかを表す。BLOCKS TO USE変数のビット
の一つがアサートされるならば、そのバンク内の対応す
るブロックが置き換えに使用可能である。
【0295】バンク0が選ばれるならば、ルーチンがス
テップ912からステップ914に進み、変数BLOCKS TO USE
が変数BLOCKS TO USE BANKS ZERO(バンク0を使うブロ
ック)に等しくセットされ、次いで、バンク0のMRUまた
はCUレジスタのいずれかでアサートされたビットに対応
するBLOCKS TO USE変数内のビットがアサート解除され
る。ここで、またはは、論理和演算である。同様に、一
つのバンクが置き換えのために選ばれるならば、ルーチ
ンがステップ916からステップ918に進み、変数BLOCKS T
O USEが変数BLOCKS TO USE BANK ONE(バンク1を使う
ブロック)に等しくセットされ、バンク1のMRUまたはC
UレジスタでアサートされたBLOCKS TO USE変数内のビッ
トがアサート解除される。
【0296】ステップ914または918のいずれかから、ル
ーチンがステップ920に進む。ステップ920で、変数AVAI
LABLE BLOCKSと変数BLOCK PRIORITYが両方ともゼロにセ
ットされる。このステップ920は、そのバンクに使える
ブロックが存在するかどうか判断する際、各ブロックの
繰り返しごとに一度訪問される。変数AVAILABLE BLOCKS
(使用可能ブロック)は、置き換えに使えるバンク内の
ブロック数えるために使用される。そのバンク内の使え
るブロックの数が、下で説明されるように、ルーチンが
どのように流れるかに影響する。置き換えに使えるブロ
ックの最下位優先度を選ぶために変数BLOCK PRIORITY
(ブロック優先度)が、そのバンク内の使えるブロック
の優先度をモニタするのに使用される。
【0297】ステップ922-936は、一連のステップであ
る使えるブロックの数および使えるブロックの最下位優
先度を判断するために各バンク内の各ブロックのために
繰り返される。ステップ920から、ルーチンがステップ9
23に進み、変数START BLOCK(ブロック開始)が変数END
BLOCK(ブロック終了)以下かどうかは判断される。変
数START BLOCKが変数END BLOCK以下であるならば、その
バンク内のブロックのすべてが、置き換え可用性のため
にチェックされてはいない。ステップ922-936のシリー
ズの各繰返しの間、変数START BLOCKが、ステップ934で
1ずつ増加させられ、現在チェックされているブロック
を表す。START BLOCKの方がEND BLOCKより大きいとき、
ルーチンが下で説明するステップ938に進む。
【0298】変数START BLOCKが変数END BLOCK以下であ
るならば、そのバンクのブロックは、置き換え可用性の
ためにチェックする必要がなく、ルーチンはステップ92
4に進む。ステップ924で、BLOCKS TO USE(使用するブ
ロック)変数においてチェックされているそのブロック
に対応するビットが1にひとしいかどうか判断される。
現在チェックされているブロックに対応するBLOCKS TO
USE変数の中のビットが1に等しいならば、そのブロッ
クが置き換えのために使え、ルーチンは、ステップ926
に進み、変数AVAILABLE BLOCKS(使用可能ブロック)
が、1だけ増加される。
【0299】ステップ926から、ルーチンはステップ928
に進み、変数START BLOCKに対応するブロックの優先度
である、現在使えるブロックの優先度が、これまでステ
ップ922-936の繰返しによって使用可能として見つけら
れたブロックの最下位優先度より大きいか小さいか判断
される。使えるブロックの最下位優先度は、変数BLOCK
PRIORITYに保持される。これまで使用可能なブロックの
最下位優先度より現ブロックの優先度が小さいならば、
ルーチンはステップ928からステップ93Oに進み、変数BL
OCK NUMBER(ブロック番号)が変数START BLOCKに等し
くセットされるので、変数BLOCK NUMBERは、これまでの
使えるブロックの最下位優先度のブロック番号を格納す
る。
【0300】ルーチンは、次いでステップ932に進み、
変数BLOCK PRIORITYが変数START BLOCKによって表され
る現ブロックの優先度にセットされる。ステップ928
で、現在使えるブロックの優先度(変数START BLOCKに
よって表わされる)が、これまでの使えるブロックの最
も低い優先度(変数BLOCK PRIORITYによって表わされ
る)より低いことが判断されるならば、ステップ930お
よび932がバイパスされ、ルーチンはステップ934に進
む。そのような場合、変数BLOCK NUMBERも変数BLOCK PR
IORITYも更新されない。
【0301】ステップ924で、可用性のためにチェック
されている現ブロックに対応する変数BLOCKS TOUSEのビ
ットが、1に等しくないならば、そのブロックは、置き
換えのために使えない。そして、ルーチンはステップ93
4に進む。ステップ934で、変数START BLOCKが、1だけ
増加されるので、そのバンク内の次のブロックが可用性
について調べられる。ルーチンは、次いでステップ936
に進む。ステップ936において、変数BLOCKS TO USEが、
可用性について調べるべき次のブロックに対応する次の
ビットに進められる。次いで、ルーチンは別の繰返しの
ためにステップ922に進む。
【0302】そのバンク内のすべてのブロックが、可用
性のためにチェックされたとき、変数START BLOCKが変
数END BLOCKより大きく、ルーチンがステップ922から
「1」に進む。これが図32に示される。「1」から、ルー
チンはステップ938に進み、変数AVAILABLE BLOCKSがゼ
ロに等しいかどうか判断される。変数AVAILABLE BLOCKS
がゼロに等しくないならば、ルーチンがステップ940に
進み、変数AVAILABLE BLOCKSが10以下かどうか判断され
る。変数AVAILABLEBLOCKSが10を超えるならば、ルーチ
ンは「2」に進み、次いでステップ908に進む。ステップ
908で、変数BLOCK NUMBERが−1に等しいかどうか判断さ
れる。10以上のブロックが使えるとわかったので、その
うちの一つが最下位優先度を持ち、変数BLOCK NUMBER
が、使えるブロックの最下位優先度のブロック番号と等
しく、その判断への回答は、ノーである。
【0303】したがって、ルーチンはステップ942に進
み、置き換えられるブロックがバンク0またはバンク1
にあるかどうか判断される。ブロックがバンク0にある
ならば、ルーチンがステップ944に進み、置き換えのた
めに選ばれたブロック(変数BLOCK NUMBERによって表わ
されたブロック)に対応するそのバンクの変数BLOCKS T
OUSE内のビットがアサート解除される。置き換えられる
ブロックがバンク0にあるならば、ルーチンがステップ9
46に進み、ステップ944で行われたのと同様の機能が行
われる。次いで、使えるすべてのブロックの中で最下位
の優先度を持つ変数BLOCK NUMBERによって表されるブロ
ックが置き換えのために選ばれるので、ルーチンはステ
ップ980で完了する。以上のことから、変数AVAILABLE B
LOCKSによって表わされる使えるブロックのすべては、
最近使用されなかったまたは現在使用されていないも
の、および置き換えのために選ばれたブロックが、最小
優先度のテクスチャを格納するブロックであるものであ
ることを理解する必要がある。
【0304】ステップ940で、使えるブロックの数が10
以下であるならば、ルーチンがステップ948に進み、使
えるブロックがバンク0またはバンク1にあるかどうか
判断される。バンク0にあるならば、ルーチンがステッ
プ950に進む。バンク1にあるならば、ルーチンはステ
ップ952に進む。ステップ950および952で、ハードウェ
ア・レジスタMRU(バンク0および1についてそれぞれ一
つ)がゼロにリセットされる。950および952のステップ
によって、そのバンクについて使えるブロックの数がほ
んの少しの状況においてそのバンクのMRUレジスタがリ
セットされる。このようにされるので、MRUレジスタの
ビットはそのすべてが、アサートされるわけではなく、
将来の割込みのために、ランダムに置き換えるブロック
を選ばなければならない。ステップ950または952のいず
れかから、ルーチンが上で説明した再びステップ908か
ら始まる「2」に進む。
【0305】ステップ938で、そのバンクについて使え
るブロックの数がゼロに等しいことが判断されるなら
ば、ルーチンがステップ954に進み、そのバンクにとっ
てルーチンがこのステップに来る最初であるかどうか判
断される。そうであれば、ルーチンがステップ956に進
み、バンク0またはバンク1のブロックをチェックしてい
るか判断される。バンク0であれば、ルーチンはステッ
プ958に進む。バンク1であれば、ルーチンはステップ96
0に進む。ステップ958または960のいずれかにおいて、M
RUレジスタまたはCUレジスタ(そのバンクの)のいずれ
においてもアサートされていないビットに対応する変数
BLOCKS TO USE(対応するバンクのための)の中のビッ
トがアサートされる。言い換えると、ステップ958およ
び960で、そのバンクのためのMRUまたはCUレジスタにお
いてアサートされたビットによってそのとき表されてい
ないブロックに対応する変数BLOCKS TO USEのビットが1
に等しくセットされる。この操作は、対応するバンクの
MRUまたはCUレジスタにおいてそのときアサートされて
いるビットによって表されるすべてのブロックについて
BLOCKS TO USE変数の中のビットをアサート解除する、
ステップ914と918の中で行ったものと異なる。ステップ
958と960の操作は、そのバンクでより多くのブロックを
使えるようにするための試みである。ステップ958また
は960のいずれかから、ルーチンが「2」に進み、ルーチ
ンが再びステップ908から始まり、使えるブロックが存
在するかどうかチェックするための別の繰返しが行われ
る。
【0306】繰返しが再び生じ、そのバンクについて使
用可能なブロックがないことが判断されるならば、ステ
ップ954において、そのバンクについてルーチンがそこ
に来たことがあるかどうかの判断に対する回答は、イエ
スであり、ルーチンはステップ962に進む。ステップ962
において、ブロックがバンク0のまたはバンク1でチェッ
クされているかどうか判断される。バンク0であれば、
ルーチンがステップ964および966に進む。バンク1であ
れば、ルーチンはステップ968および970に進む。ステッ
プ964および968において、対応するバンクのためのMRU
レジスタのビットがゼロにリセットされる。次いで、ス
テップ966および970において、対応しているバンクのた
めにそのバンクのCUレジスタのアサート解除されたビッ
トに対応する変数BLOCKS TO USEのビットがアサートさ
れる。次いで、ルーチンが「2」に進み、再びステップ9
08から始まる。CUレジスタでアサート解除されるビット
をBLOCKS TO USEレジスタにアサートすることによっ
て、ステップ966および970において、ルーチンは、次の
繰返しのため十分な数の使用可能なブロックを提供しよ
うとする。ステップ966または970のいずれかから、ルー
チンが「2」に進み次の繰返しが始まる。
【0307】図34は、ソフトウェア・テクスチャ・デー
タを、特定のプロセスのグラフィックスAPI/グラフィッ
クス・ハードウェア・ドライバからTIMに移すことがで
きる異なる方法を示すグラフィック・イラストである。
図の左上部分に示されるのが、特定のプロセスのグラフ
ィックスAPI/ハードウェア・ドライバ850である。グラ
フィックスAPl/ハードウェア・ドライバ850は、そのプ
ロセス内でつくられたテクスチャのコピーを格納するの
ためにそれ自身の割当られたシステム・ソフトウェア記
憶域851を持つ。領域851内に、図34の例は、格納されつ
つあるテクスチャT1およびT2、ならびに共用メモリ・テ
クスチャT3へのポインタ860を示す。この例では、テク
スチャT1の大きさが256x256テクセル、テクスチャT2の
大きさが16xl6テクセル、そして、テクスチャT3の大き
さが1024xl024テクセルである。
【0308】図表の右上部分に示すのが、この発明のTI
M 160である。TIM 160は、それ自身のデータ記憶領域85
4を含み、ここに、あるテクスチャのコピー、またはそ
の一部分が格納される。図に示すように、データ記憶領
域854内に格納されるのは、ブロック870、871、872、87
3、およびポインタ860である。ブロック870および871内
にあるのは、テクスチャT1およびT2の部分である。テク
スチャTIの大きさが256x256テクセルであり、テクスチ
ャT2の大きさが128xl28テクセル未満であるので、テク
スチャT1が、2つのブロック870および871の中に割り当
てられ、そして、それらのブロックの中にテクスチャT2
を格納する空の空間が存在する。こうして、TIMがテク
スチャT2をテクスチャT1と同じブロックにパックし、ハ
ードウェア装置に関連して上で説明し図36に関して下で
説明するように、テクスチャT2にサブ・テクスチャ識別
子を割り当てる。
【0309】ブロック872と873は、テクスチャT3の部分
を含む。それらの部分が、テクスチャT3のMIPマップ・
レベル8およびそれ以下を含む。先に述べたように、特
定のテクスチャの8以下のマップ番号を持っているマッ
プが、2つのブロックの間で割り当てられる。図表の左
下の部分に示されるのが、共用メモリ領域852であり、
図34の例では、テクスチャT3を格納する。グラフィック
スAPI/ハードウェア・ドライバのデータ記憶領域851
が、共用メモリ領域852内のそのテクスチャへのポイン
タ860を含み、TIMのデータ記憶領域854は、テクスチャT
3格納されている共用メモリ852内のそのロケーションへ
の別のポインタ860も格納する。
【0310】この発明のソフトウェア方式は、テクスチ
ャ・データをグラフィックスAPI/ハードウェア・ドライ
バからTIMに転送することができる3つの異なる方法を提
供する。第1の方法は、共用メモリ転送バッファ856を
通してデータのブロックを転送するものである。この方
法において、ハードウェア・ドライバがマップをハード
ウェア装置によって認識できるブロックに分ける。この
特定の例では、それらのブロックは、それぞれ256x256
テクセルの大きさである。ひとたび分けられると、ハー
ドウェア・ドライバは、パケットをソケット858を通し
てTIMに送る。パケットは、テクスチャ・データの一つ
または複数のブロックが共用メモリ転送バッファ856を
通してやってくることのインジケータを含む。パケット
は、ソフトウェア・テクスチャID、テクスチャが関連さ
せられるプロセスID、S、Tテクスチャ・ベース・マッ
プ・サイズ、そのテクスチャのMIPマップ・レベルの
数、および通信されるブロックの数をも含む。発明の一
つの実施例において、ソフトウェア・テクスチャIDが3
2ビット・ワードであり、そしてプロセスIDも32ビ
ット・ワードである。ソフトウェア・テクスチャIDが、
特定のプロセス内のテクスチャをお互いから識別し、そ
して、プロセスIDがTIMによって管理されるプロセス
をお互いから識別する。TIMが、この情報を次いで受け
取り、共用メモリ転送バッファからのテクスチャ・ブロ
ックの読み出しに備える。
【0311】8より大きいマップ番号を持つマップにつ
いて、各ブロックが、特定のマップからだけのデータを
含め共用メモリ転送バッファを通して移される。これら
のブロックのそれぞれについて、TIMが、次いでブロッ
クをコピーし、そのブロックをそれ自身のデータ記憶領
域854に格納する。8のマップ番号を持っているマップに
ついては、マップ全体が一つの256x256テクセル・ブロ
ック内で送られる。TIMが、次いでそのブロックをコピ
ーし、マップの部分を2つのブロックの間でハードウェ
ア装置のために最適のフォーマットに割り当て、そし
て、それらのブロックをそのデータ記憶記憶域854に格
納する。マップ番号7以下のマップについては、マップ
のすべてが、ハードウェア・ドライバによって一つのブ
ロックにパックされ、そして共用メモリ転送バッファ85
6を渡って送り出される。TIMが、ブロックを転送バッフ
ァから受け取り、先に述べたようにキャッシュ・メモリ
のSDRAMの2つの別のバンクに続いて記憶させるために、
テクスチャ・データを2つのブロックの間で割り当て
る。上の例で示した以外の別のハードウェア装置を使用
するならば、TIMがマップ番号8以下のマップをハードウ
ェア装置の特定の局部メモリによって認識できるパター
ンにパックする。
【0312】図34の例で示すように、256x256テクセル
の大きさのテクスチャTlが、共用メモリ転送バッファを
通して一つのブロックとして伝えられる。次いでTIM
が、そのブロックをコピーし、テクスチャT1をハードウ
ェア装置によって認識できる2つのブロック870および87
1の間で割り当てるので、それらのブロックは、キャッ
シュ・メモリのSDRAMの別のバンクにダウンロードされ
ることができる。次いで、それらのブロック870と871
は、TIM 160のデータ記憶メモリロケーション854内に格
納される。
【0313】グラフィックスAPI/ハードウェア・ドライ
バからTIMにテクスチャ・データを転送することができ
る第2の方法は、テクスチャをソケット858を通して送
るものである。この発明の一つの実施例において、テク
スチャは、それらが64x64テクセル以下の大きさのとき
ソケットを通して送られる。テクスチャ・データがソケ
ットを通して送られる前に、ハードウェア・ドライバ
が、パケットをソケット858を通してTIMに送り、TIM
に、テクスチャ・データがソケットを通して転送される
ことを示す。パケットは、そのテクスチャのベース・サ
イズを表すS、T座標、テクスチャのソフトウェア・テク
スチャID、そのテクスチャに対応するプロセスID、そ
のテクスチャ内にいくらのマップ・レベルがあるかの指
示、およびバイトの数の観点からのテクスチャ・データ
の物理的なサイズ、を含む。TIMは、この情報をソケッ
トからパケットを読み出すことによって受け取り、テク
スチャ・データの読み出しに備える。次いで、テクスチ
ャ・データが、データストリームの形でハードウェア・
ドライバからソケットを通して伝えられる。TIMは、次
いでソケットからテクスチャ・データを読み取り、テク
スチャ・データをハードウェア装置によって認識できる
ブロックにパックする。
【0314】図34で示した例において、16x 16テクセル
の大きさのテクスチャT2がソケットを通して送られ、TI
MがテクスチャT2を読み取り、そのテクスチャT2を2つの
ブロック870および871の間でパックする。これらのブロ
ックは、テクスチャT1の一部分をも格納する。ハードウ
ェア装置例と関連して先に述べたように、テクスチャT2
は、次いでテクスチャT1と同じテクスチャIDを割り当て
られるが、テクスチャT1と区別するために異なるサブ・
テクスチャIDが用いられる。サブ・テクスチャIDは、ブ
ロック内のサブ・テクスチャのロケーションを識別する
2つのS座標ビットと2 T座標ビットを含む4ビットのワー
ドである。テクスチャ・データをグラフィックスAPI/ハ
ードウェア・ドライバからTIMに伝えることができる第
3の方法は、テクスチャ・データを、グラフィックスAP
I/ハードウェア・ドライバおよびTIMによってアクセス
されることができる共用メモリ・ロケーションに格納す
るものである。ハードウェア・ドライバおよびTIMは、
共用メモリ領域852に格納されたテクスチャのアドレス
されたロケーションへのポインタをそれぞれ格納する。
テクスチャが共用メモリ領域852に格納されることにな
っているとき、ハードウェア・ドライバが、テクスチャ
が、共用メモリ領域852に格納されることをTIMに示すパ
ケットをソケット858を通してTIMに送る。また、パケッ
トが共用メモリIDと等しいソフトウェア・テクスチャI
D、プロセスID、そのテクスチャのS、Tベース・マッ
プ・サイズ、およびそのテクスチャのMIPマップ・レベ
ル、を含む。TIMが、次いでパケットを読み出し、共用
メモリIDをポインタに変換し、そのポインタをそれ自身
のデータ記憶領域854に格納する。ポインタは、共用メ
モリ領域に格納された特定のテクスチャの開始アドレス
である共用メモリ領域内のアドレス・ロケーションを指
す。
【0315】TIMは、また、その特定のテクスチャのた
めのMIPマップ・レベルが、マップ8以下を含むかどうか
判断する。テクスチャが、MIPマップ・レベル8以下を含
むならば、次いで、TIMがその特定のテクスチャのMIPマ
ップ・レベル8以下だけをコピーし、上で概説された配
分計画に従って2つのブロックにそれらをパックする。
次いで、そのテクスチャのためのMIPマップ・レベル8以
下を含むテクスチャ・データのパックされたブロック
が、TIM自身の記憶域854に格納され、一方、マップ・レ
ベル9以上は、共用メモリ領域852に格納される。TIM
は、それ自身の領域854内においてポインタを、そのテ
クスチャのマップ・レベル9以上の開始アドレスに格納
する。
【0316】図34で示された例が、この方式をよく表し
ている。テクスチャT3が1024xI024テクセルのベース・
テクスチャ・マップ・サイズを持つと仮定する。そのサ
イズのため、領域851と854に格納されつつあるテクスチ
ャの2つの別のコピーを持つのではなく、テクスチャ
が、共用メモリ領域852に格納されなければならないと
決定される。テクスチャT3がMIPマップ・レベル8ないし
ゼロを含むならば、TIMがテクスチャT3のマップ8ないし
ゼロをコピーし、それらを2つの別のブロック872および
873にパックする。ブロック872および873は、TIMの割当
られたシステム記憶域854に、次いで格納される。先に
述べたように、TIMは、テクスチャT3が格納されている
共用メモリ852内の最初のアドレスを指すポインタ860を
も格納する。このように、マップ番号9および10を持つ
マップがテクスチャT3のために必要であるとき、TIM
は、共用メモリ・ロケーション852へのポインタ860を使
用してそのデータをアクセスすることができる。
【0317】TIMがそれ自身の記憶域854に格納されたテ
クスチャT3のマップ9および10のコピーを持たないの
で、テクスチャT3のマップ9および10は、割込みが生じ
るまでハードウェア装置によって認識できるブロックに
分割されない。このように、テクスチャまたはその一部
分が共用メモリ領域852に格納されるとき、システムの
バンド幅の観点からのわずかな犠牲が、生じる。しか
し、相当なシステム・メモリ空間節減が、テクスチャま
たはその一部を共用メモリ領域に格納することによって
生じる。このように、テクスチャまたはその一部を共用
メモリ領域に格納するかどうか決定する際、バランスが
メモリ節減とシステム性能との間にとられる。この発明
の一つの実施例において、1024x 1024テクセル以上の大
きさのベース・マップを持っているテクスチャがシステ
ムの共用メモリ領域852に格納される。システムのユー
ザが、しかしテクスチャを共用メモリ領域に格納するた
めのカットオフ・サイズとして、任意のサイズのテクス
チャを選ぶことができる。
【0318】図35は、テクスチャ優先度が特定のプロセ
スのためにどのように規定されるかを示す機能ブロック
図である。図表の先頭の行に示されるのが、ユーザ・ア
プリケーションまたはプロセス1030である。その下にグ
ラフィックスAPI 1032およびグラフィックス・ハードウ
ェア・ドライバ1034が示されるハードウェア・ドライバ
の下にTIM 1036が示される。プロセス1030において、ユ
ーザは、規定されたテクスチャのためにテクスチャ優先
度リスト1040を供給することができる。この例ではユー
ザが、5つの以前につくられたテクスチャに、テクスチ
ャ優先度リスト1040に示される優先度を割り当ててい
る。各テクスチャは、異なるテクスチャIDを割り当てら
れている。この特定の例においてユーザによって供給さ
れる優先度リスト1040は、優先度順にID 3、ID 1、ID
5、ID 2、およびID 6のIDを持つテクスチャを含む。さ
らに、ID 8を持つテクスチャがユーザによって新しく規
定され、グラフィックスAPIまたはハードウェア・ドラ
イバによって処理されようとしている。そのようなテク
スチャ(ID 8)が、例えば、APIまたはハードウェア・
ドライバによって作用されようとしている新しくつくら
れたコンテキストと関連させられることができる。
【0319】グラフィックスAPI 1032が、プロセス1030
を含む各プロセスのテクスチャの最近の使用を追跡す
る。図31に示された例において、ID 7を持つテクスチ
ャ、ID 4を持つテクスチャおよびID 1を持つテクスチャ
が、グラフィックスAPIによってプロセス1030のために
最近処理されており、ID 7を持つテクスチャが最も最近
処理されている。最近処理されたテクスチャ優先度リス
ト1044が、APIによってプロセス1030のために維持さ
れ、システム・メモリに格納される。最近処理されたテ
クスチャ(リスト1044に維持されたもの)の中で、最も
最近処理したテクスチャ(この例ではID 7を持つ)に最
も高い優先度が与えられ、新しいテクスチャが処理され
たとき、各テクスチャが優先度において1シフトダウン
する。このように、ID 7を持つテクスチャに最も高い優
先度が与えられ、ID 1を持つテクスチャに、グラフィッ
クスAPI 1032で維持される、最も最近処理されたテクス
チャ優先度リスト1044にリストされた、最も最近処理さ
れたテクスチャのなかで、最下位の優先度が与えられ
る。
【0320】次いで、グラフィックスAPI 1032は、ユー
ザ-供給されたテクスチャ優先度リスト1040を、最も最
近処理されたテクスチャ優先度リスト1044と合体して、
システムの総体的なテクスチャ優先度リスト1042を計算
する。グラフィックスAPIは、最も最近処理された優先
度に対してユーザ-供給された優先度に優位を与える。
このようにID 3、ID 1、ID 5、ID 2およびID 6のIDを持
つテクスチャは、ID7およびID 4のIDを持つテクスチャ
に対して優位を与えられる。ID 8を持つテクスチャは、
それがグラフィックスAPIによって処理されようとして
いる新たに規定されたテクスチャであるので、最も高い
優先度を与えられる。優先度リスト1042は、この方式に
従って絶えず更新され、システム・ソフトウェア・メモ
リに格納される。ハードウェア・ドライバは、グラフィ
ックスAPIによって生成したテクスチャ優先度リスト104
2を使用してテクスチャ優先度をTIMに知らせる。
【0321】上で図30を参照して説明したように、テク
スチャ優先度リスト1042がTIMに知らせられ、TIMは、テ
クスチャの優先度をリスト1048にも格納する。TIMのテ
クスチャ優先度リスト1048も、図35に示され、グラフィ
ックスAPIおよびグラフィックス・ハードウェア・ドラ
イバのテクスチャ優先度リストと一致する。ユーザは、
ユーザ供給の優先度リスト1040をいつでも更新すること
ができ、その場合にはグラフィックスAPIが、それ自身
の優先度リスト1042を更新し、上で説明したように、最
も最近処理されたテクスチャ優先度に対しユーザ-供給
されたテクスチャ優先度に優位が与えられる。ユーザ-
供給された優先度リストが備えられないならば、グラフ
ィックスAPI総体的優先度リスト1042は、最も高い優先
度を与えられる新しくつくられた(まだ処理しない)テ
クスチャを除いて、最も最近処理されたテクスチャ優先
度リスト1044のそれである。
【0322】図36は、上で説明された例の特定のハード
ウェア装置のメモリ配分計画に従って、同じブロック内
に複数のテクスチャが割り当てられることができ異なる
サブ・テクスチャIDが割り当てられる3つの異なる方法
を示すグラフィック・イラストである。各ブロックの大
きさは256x256テクセルである。256x256テクセルの大き
さのマップ番号8のベース・マップを持つ第1のテクス
チャT1については、そのマップは、2つのブロックの中
で割り当てられ、一つのブロックがキャッシュ・メモリ
内のSDRAMのバンク0に格納され、一つブロックがバンク
1に格納される。このように、各ブロック内の空の空間
が、テクスチャT1と同じプロセス内でつくられる、128x
l28テクセルの大きさの別のテクスチャT2の記憶を可能
にする。これらのブロックの一つ1000が図36に示され
る。テクスチャT1とT2が、同じテクスチャIDを含むが、
上でハードウェア装置の説明の中で説明されたように異
なるサブ・テクスチャIDを持っている。
【0323】別の例として、それぞれ128x 128テクセル
の大きさで同じプロセス内でつくられた(おそらくその
プロセス内の複数のコンテキストで共有される)4つの
テクスチャT3、T4、T5およびT6を、別のブロック1010の
4つの四分区間にパックすることができる。テクスチャT
3、T4、T5およびT6の各々が、異なるサブ・テクスチャI
Dを割り当てられるが、上で説明したように同じテクス
チャIDを含む。
【0324】第3の例は、各テクスチャの大きさが64x6
4テクセル以下で同じプロセス内でつくられた、16のユ
ニークなテクスチャT7-T22を含む。すべての16のテクス
チャT7-T22を、同じブロック1020内にパックすることが
でき、各テクスチャに同じテクスチャIDおよび異なるサ
ブ・テクスチャIDが割り当てられる。上で示したよう
に、サブ・テクスチャIDは、ブロック内の16の異なるサ
ブテクスチャを見分けるために2つのS座標ビットと2 つ
のT座標ビットを含む。このように発明の少なくとも一
つ実施例を説明したが、いろいろな変更、修正および改
善が、技術に熟練した者には容易に生じるだろう。その
ような変更、修正と改善は、この発明の精神と範囲内の
ある。それゆえに、以上の説明は例としてだけのもの
で、限定的なものではない。この発明は、特許請求の範
囲の規定およびその均等の範囲によってのみ制限され
る。
【0325】この発明は、例として次の実施態様を含
む。
【0326】1.テクスチャ・データを格納するシステム
・メモリを有するホストコンピュータと、任意の時点で
システム・メモリに格納されるテクスチャ・データの少
なくとも一部を格納する局部メモリを含み、ホストコン
ピュータに結合し、テクスチャ・マップされた画像を描
画する、グラフィックス・ハードウェア装置と、ホスト
コンピュータのプロセッサ上で走り、ハードウェア装置
が画像の描画を必要とするとき、システム・メモリから
局部メモリへのテクスチャ・データの転送を管理するソ
フトウェア・デーモンと、を備えるテクスチャマッピン
グ・コンピュータ・グラフィックス・システム。
【0327】2.システムは、テクスチャ・データを格納
するメイン・メモリをもつホストコンピュータと、ホス
トコンピュータに結合し、任意の時点でメイン・メモリ
に格納されたテクスチャ・データの少なくとも一部をブ
ロックを格納する局部メモリを持つハードウェア装置
と、を備え、ハードウェア装置が、局部メモリに格納し
たテクスチャ・データを使用して、テクスチャマップさ
れた画像を描画するテクスチャマッピング・コンピュー
タ・グラフィックス・システムでテクスチャ・データを
管理する方法であって、局部メモリに格納したテクスチ
ャ・データブロックのハードウェア装置による使用をモ
ニタするステップと、メイン・メモリに格納されたテク
スチャの優先度を追跡するステップと、局部メモリの中
で最下位優先度および使用最近度が最低のテクスチャ・
データブロックを、画像を描画するためにハードウェア
装置によって必要とされるテクスチャ・データブロック
で置き換えるステップと、を含むテクスチャ・データの
管理方法。
【0328】3. コンピュータ・グラフィックス・シス
テムのプロセッサの上で走るソフトウェアシステムであ
って、プロセッサは、少なくとも一つのコンピュータ・
グラフィックス・プロセス、各プロセスのために基礎を
なすグラフィックスAPI、および各プロセスのための基
礎をなすハードウェア・ドライバを走らせ、コンピュー
タ・グラフィックス・システムが、プロセッサに結合し
た、テクスチャ・マップされた画像を描画するハードウ
ェア装置を含み、ソフトウェアシステムは、プロセッサ
からハードウェア装置へのテクスチャ・データのダウン
ロードを管理するデーモンと、デーモン、グラフィック
スAPIおよびハードウェア・ドライバによってアクセス
可能なテクスチャ・データを格納する共用メモリ領域
と、を備える。 4. コンピュータ・グラフィックス・システムは、その
上でソフトウェア・デーモンおよび少なくとも一つのグ
ラフィックス・プロセスが走るプロセッサを含み、ユー
ザが各プロセス内で複数のコンテキストをつくることが
でき、プロセッサに結合され、少なくとも一つのグラフ
ィックス・プロセスの中でつくられたテクスチャ・マッ
プされた画像を描画する少なくとも一つのグラフィック
ス・ハードウェア装置、テクスチャマッピング・コンピ
ュータ・グラフィックス・システムでテクスチャ・デー
タを管理するソフトウェア・デーモンであって、テクス
チャの一つの格納されたコピーが同じプロセス内の複数
のコンテキストの間で共有されるように、各プロセスの
ために別々にテクスチャ・データを管理する、装置独立
の部分と、テクスチャ・データをグラフィックス・ハー
ドウェア装置に書き込むための装置依存部分と、を備え
る上記ソフトウェア・デーモン。
【0329】5. 装置に依存する部分が共有ライブラリ
ー・ロケーションを含む上記4に記載のソフトウェア・
デーモン。
【0330】6. テクスチャマッピング・コンピュータ
・グラフィックス・システムでソフトウェア・テクスチ
ャ・データを割り当てる方法であって、システムは、ホ
ストコンピュータおよびホストコンピュータにとって結
合され、テクスチャ・マップされた画像を描画するグラ
フィックス・ハードウェア装置を含み、データが少なく
とも一つのシリーズのテクスチャMIPマップを含み、ソ
フトウェア方法は、ホストコンピュータのプロセッサ上
で作用し、少なくとも一つのシリーズのマップの各マッ
プを少くとも2つのマップ部分に分割するステップと、
マップ部分を複数のブロックのデータに割り当てるステ
ップと、あるブロックに格納されたテクスチャ・データ
がハードウェア装置によって必要とされるとき、ホスト
コンピュータからハードウェア装置にあるブロックをダ
ウンロードするステップと、を含む。
【0331】
【発明の効果】この発明によると、ハードウェア装置が
画像の描画を必要とするとき、システム・メモリから局
部メモリへのテクスチャ・データの転送をソフトウェア
・デーモンで管理するので、メモリの有効利用が図られ
る。
【図面の簡単な説明】
【図1】一組のテクスチャMIPマップを図形化した図。
【図2】先行技術コンピュータ・グラフィックス・シス
テムの一部ハードウェア、一部階層的なソフトウェアの
ブロック図。
【図3】この発明に従うコンピュータ・グラフィックス
・システムの一部ハードウェア、一部ソフトウェアのブ
ロック図。
【図4】この発明に従うもう一つの実施例のコンピュー
タ・グラフィックス・システムの一部ハードウェア、一
部ソフトウェアのブロック図。
【図5】この発明に従うさらにもう一つの実施例のコン
ピュータ・グラフィックス・システムの一部ハードウェ
ア、一部ソフトウェアのブロック図。
【図6】この発明のソフトウェア・デーモンを使用する
ことができるコンピュータ・グラフィックス・ハードウ
ェア装置の一つの実施例のブロック図。
【図7】この発明のソフトウェア・デーモンを使用する
ことができるコンピュータ・グラフィックス・ハードウ
ェア装置の別の実施例のブロック図。
【図8】図6のハードウェア装置のテクスチャマッピン
グ・ハードウェア・チップのブロック図。
【図9】テクスチャマッピング・ハードウェアのパラメ
ーター補間回路要素のより詳細なブロック図。
【図10】キャッシュ・メモリとテクスチャマッピング
・ハードウェアの一部のブロック図。
【図11】局部的ハードウェア装置メモリを利用する配
置のテクセルをもつテクスチャMIPマップの図表。
【図12】キャッシュ・メモリを形づくるメモリーチッ
プの組織の詳細なブロック図。
【図13】テクスチャマッピング・ハードウェアの一部
分の詳細なブロック図。
【図14】テクスチャマッピング方式に従うピクセルの
ストリームのそれぞれのについて、隣接のMIPマップか
らアクセスしたテクセルの例を示す図表。
【図15】図14の例に従うテクスチャマッピング・ハー
ドウェア・バッファおよび関連するデータエントリーの
図表。
【図16】テクスチャマッピング・ハードウェアで採用
される回路のブロック図。
【図17】一組のテクスチャMIPマップの例の図表。
【図18】図15の例のMIPマップがメモリ格納方式に従
ってメモリに格納される方法を図示している図表。
【図19】MIPマップがメモリ格納方式に従って分割さ
れる方法を図示しているMIPマップの図表。
【図20】マップがメモリ格納方式に従ってさらに分割
される方法を図示している図19に示したマップの部分の
より詳細な図表。
【図21】キャッシュ・ブロック・タグが生成される方
法を図示する図表。
【図22】提供された補間されたテクセル・データから
対応するテクスチャ・データブロック内で、テクセル・
アドレスを判断するための方法を図示するフローチャー
ト。
【図23】テクスチャマッピング・チップに設けられた
テクセル・ポート・レジスタを図示する図表。
【図24】割込み処理して、データの中でどのブロック
をダウンロードするか決定するために、ホストコンピュ
ータのプロセッサによって実行されるソフトウェア・ル
ーチンを図示するフローチャート。
【図25】キャッシュのミニ・ディレクトリのブロック
図。
【図26】キャッシュの主ディレクトリのブロック図。
【図27】キャッシュ読み取りタグがミニ・ディレクト
リをミスするとき、性能ペナルティを減らすために設け
られた一連のコンパレータのブロック図。
【図28】キャッシュ・ディレクトリの実施例のブロッ
ク図。
【図29】この発明のテクスチャ割込みマネージャー
(TIM)ソフトウェア・デーモンの全体的な操作の流れ
図。
【図30】2つの関係するテクスチャの間の通信の間の
ハードウェア・ドライバおよびTIMの操作の一部流れ
図、一部機能的ブロック図。
【図31】割込みを処理するためのTIMの装置独立のル
ーチンの流れ図。
【図32】割込み中にハードウェア装置の局部メモリ内
でどのブロックを置き換えるかを決定するためのTIMの
装置に依存するルーチンの流れ図。
【図33】割込み中にハードウェア装置の局部メモリ内
でどのブロックを置き換えるかを決定するためのTIMの
装置に依存するルーチンの流れ図。
【図34】テクスチャ・データをハードウェア・ドライ
バからTIMに伝える方法、およびテクスチャのコピーを
格納するためのTIMの手段を示す機能的なブロック図。
【図35】システム内のソフトウェア層によって維持さ
れるテクスチャ優先度リストを示し、最終的なシステム
・テクスチャ優先度リストを決定するための方式を示す
機能ブロック図。
【図36】比較的小さいテクスチャのテクスチャ・デー
タをブロックにパックするための異なる方式を示す機能
的なブロック図。
【符号の説明】 10 フロントエンド・ボード 12 テクスチャ・マッピング・ボード 14 フレーム・バッファ・ボード 17 メイン・メモリ 46 テクスチャ・マッピング・チップ 48 局部(キャッシュ)メモリ

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】 テクスチャ・データを格納するシステム
    ・メモリを有するホストコンピュータと、任意の時点で
    システム・メモリに格納されるテクスチャ・データの少
    なくとも一部を格納する局部メモリを含み、ホストコン
    ピュータに結合し、テクスチャ・マップされた画像を描
    画する、グラフィックス・ハードウェア装置と、 ホストコンピュータのプロセッサ上で走り、ハードウェ
    ア装置が画像の描画を必要とするとき、システム・メモ
    リから局部メモリへのテクスチャ・データの転送を管理
    するソフトウェア・デーモンと、を備えるテクスチャマ
    ッピング・コンピュータ・グラフィックス・システム。
JP14270296A 1995-06-08 1996-06-05 テクスチャマッピング・コンピュータ・グラフィックス・システム Expired - Fee Related JP3888477B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US486,447 1995-06-08
US08/486,447 US5790130A (en) 1995-06-08 1995-06-08 Texel cache interrupt daemon for virtual memory management of texture maps

Publications (2)

Publication Number Publication Date
JPH0916785A true JPH0916785A (ja) 1997-01-17
JP3888477B2 JP3888477B2 (ja) 2007-03-07

Family

ID=23931928

Family Applications (1)

Application Number Title Priority Date Filing Date
JP14270296A Expired - Fee Related JP3888477B2 (ja) 1995-06-08 1996-06-05 テクスチャマッピング・コンピュータ・グラフィックス・システム

Country Status (4)

Country Link
US (1) US5790130A (ja)
EP (1) EP0749100B1 (ja)
JP (1) JP3888477B2 (ja)
DE (1) DE69635009T2 (ja)

Families Citing this family (74)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5760783A (en) * 1995-11-06 1998-06-02 Silicon Graphics, Inc. Method and system for providing texture using a selected portion of a texture map
US6121974A (en) * 1996-06-27 2000-09-19 Cirrus Logic, Inc. Priority storage system for fast memory devices
US5781197A (en) * 1996-07-26 1998-07-14 Hewlett-Packard Company Method for maintaining contiguous texture memory for cache coherency
US5936632A (en) * 1996-07-26 1999-08-10 Hewlett-Packard Co. Method for fast downloading of textures to accelerated graphics hardware and the elimination of extra software copies of texels
US5828382A (en) * 1996-08-02 1998-10-27 Cirrus Logic, Inc. Apparatus for dynamic XY tiled texture caching
US5844576A (en) * 1996-12-30 1998-12-01 Cirrus Logic, Inc. Tiled linear host texture storage
US5852451A (en) * 1997-01-09 1998-12-22 S3 Incorporation Pixel reordering for improved texture mapping
JP3104643B2 (ja) * 1997-05-07 2000-10-30 株式会社セガ・エンタープライゼス 画像処理装置及び画像処理方法
US6085292A (en) * 1997-06-05 2000-07-04 Digital Equipment Corporation Apparatus and method for providing non-blocking pipelined cache
US6266753B1 (en) * 1997-07-10 2001-07-24 Cirrus Logic, Inc. Memory manager for multi-media apparatus and method therefor
KR100231707B1 (ko) * 1997-08-04 2000-01-15 정선종 통신 장비의 디엠에이 처리 방법 및 그 장치
US6046747A (en) * 1997-08-04 2000-04-04 Hewlett-Packard Company Graphics application programming interface avoiding repetitive transfer of texture mapping data
US7136068B1 (en) * 1998-04-07 2006-11-14 Nvidia Corporation Texture cache for a computer graphics accelerator
US7518616B1 (en) * 1998-07-17 2009-04-14 3Dlabs, Inc. Ltd. Graphics processor with texture memory allocation system
US6732187B1 (en) * 1999-09-24 2004-05-04 Cisco Technology, Inc. Opaque packet handles
US7050063B1 (en) * 1999-02-11 2006-05-23 Intel Corporation 3-D rendering texture caching scheme
US6919895B1 (en) 1999-03-22 2005-07-19 Nvidia Corporation Texture caching arrangement for a computer graphics accelerator
US7061500B1 (en) * 1999-06-09 2006-06-13 3Dlabs Inc., Ltd. Direct-mapped texture caching with concise tags
US6750872B1 (en) * 1999-09-17 2004-06-15 S3 Graphics, Co., Ltd. Dynamic allocation of texture cache memory
JP3619143B2 (ja) * 1999-11-18 2005-02-09 キヤノン株式会社 画像処理装置およびその方法
US7710425B1 (en) 2000-06-09 2010-05-04 3Dlabs Inc. Ltd. Graphic memory management with invisible hardware-managed page faulting
US6917364B2 (en) * 2001-01-31 2005-07-12 International Business Machines Corporation Method and apparatus for managing texture memory in a data processing system
US7043726B2 (en) * 2001-03-20 2006-05-09 Hewlett-Packard Development Company, L.P. Binding of processes in network systems
US7443401B2 (en) * 2001-10-18 2008-10-28 Microsoft Corporation Multiple-level graphics processing with animation interval generation
US7064766B2 (en) * 2001-10-18 2006-06-20 Microsoft Corporation Intelligent caching data structure for immediate mode graphics
US7619633B2 (en) 2002-06-27 2009-11-17 Microsoft Corporation Intelligent caching data structure for immediate mode graphics
US7161599B2 (en) 2001-10-18 2007-01-09 Microsoft Corporation Multiple-level graphics processing system and method
JP2003132347A (ja) * 2001-10-26 2003-05-09 Sony Corp 画像処理装置
JP3761085B2 (ja) * 2001-11-27 2006-03-29 株式会社ソニー・コンピュータエンタテインメント 画像処理装置及びその構成部品、レンダリング処理方法
EP2302930B1 (en) * 2001-11-27 2015-07-15 Samsung Electronics Co., Ltd. Coding and decoding of a bitstream with a coordinate interpolator
US7809204B2 (en) 2002-10-18 2010-10-05 Samsung Electronics Co., Ltd. Method and apparatus for encoding and decoding key value data of coordinate interpolator
US7088374B2 (en) * 2003-03-27 2006-08-08 Microsoft Corporation System and method for managing visual structure, timing, and animation in a graphics processing system
US7417645B2 (en) 2003-03-27 2008-08-26 Microsoft Corporation Markup language and object model for vector graphics
US7466315B2 (en) 2003-03-27 2008-12-16 Microsoft Corporation Visual and scene graph interfaces
US7486294B2 (en) 2003-03-27 2009-02-03 Microsoft Corporation Vector graphics element-based model, application programming interface, and markup language
US7088371B2 (en) * 2003-06-27 2006-08-08 Intel Corporation Memory command handler for use in an image signal processor having a data driven architecture
US7525547B1 (en) 2003-08-12 2009-04-28 Nvidia Corporation Programming multiple chips from a command buffer to process multiple images
US7015915B1 (en) * 2003-08-12 2006-03-21 Nvidia Corporation Programming multiple chips from a command buffer
US7075541B2 (en) * 2003-08-18 2006-07-11 Nvidia Corporation Adaptive load balancing in a multi-processor graphics processing system
US7511718B2 (en) 2003-10-23 2009-03-31 Microsoft Corporation Media integration layer
US7340547B1 (en) 2003-12-02 2008-03-04 Nvidia Corporation Servicing of multiple interrupts using a deferred procedure call in a multiprocessor system
US7583269B2 (en) * 2004-02-17 2009-09-01 Sun Microsystems, Inc. Window system 2D graphics redirection using direct texture rendering
US7289125B2 (en) * 2004-02-27 2007-10-30 Nvidia Corporation Graphics device clustering with PCI-express
US7525551B1 (en) * 2004-11-01 2009-04-28 Nvidia Corporation Anisotropic texture prefiltering
US7525549B1 (en) 2004-12-16 2009-04-28 Nvidia Corporation Display balance/metering
US7522167B1 (en) 2004-12-16 2009-04-21 Nvidia Corporation Coherence of displayed images for split-frame rendering in multi-processor graphics system
US7545380B1 (en) 2004-12-16 2009-06-09 Nvidia Corporation Sequencing of displayed images for alternate frame rendering in a multi-processor graphics system
US7383412B1 (en) 2005-02-28 2008-06-03 Nvidia Corporation On-demand memory synchronization for peripheral systems with multiple parallel processors
US7363456B2 (en) * 2005-04-15 2008-04-22 International Business Machines Corporation System and method of allocating contiguous memory in a data processing system
US7602395B1 (en) 2005-04-22 2009-10-13 Nvidia Corporation Programming multiple chips from a command buffer for stereo image generation
US7616207B1 (en) 2005-04-25 2009-11-10 Nvidia Corporation Graphics processing system including at least three bus devices
US7456833B1 (en) 2005-06-15 2008-11-25 Nvidia Corporation Graphical representation of load balancing and overlap
US7817849B2 (en) * 2005-08-18 2010-10-19 Hewlett-Packard Development Company, L.P. Method and apparatus for graphical data compression
US7629978B1 (en) 2005-10-31 2009-12-08 Nvidia Corporation Multichip rendering with state control
US7475197B1 (en) * 2005-10-25 2009-01-06 Nvidia Corporation Cross process memory management
US8212832B2 (en) * 2005-12-08 2012-07-03 Ati Technologies Ulc Method and apparatus with dynamic graphics surface memory allocation
JP4594892B2 (ja) * 2006-03-29 2010-12-08 株式会社東芝 テクスチャマッピング装置、方法およびプログラム
US7884829B1 (en) 2006-10-04 2011-02-08 Nvidia Corporation Partitioned graphics memory supporting non-power of two number of memory elements
US7932912B1 (en) 2006-10-04 2011-04-26 Nvidia Corporation Frame buffer tag addressing for partitioned graphics memory supporting non-power of two number of memory elements
US8072463B1 (en) * 2006-10-04 2011-12-06 Nvidia Corporation Graphics system with virtual memory pages and non-power of two number of memory elements
US7999817B1 (en) 2006-11-02 2011-08-16 Nvidia Corporation Buffering unit to support graphics processing operations
US8139071B1 (en) * 2006-11-02 2012-03-20 Nvidia Corporation Buffering unit to support graphics processing operations
US8289326B2 (en) * 2007-08-16 2012-10-16 Southwest Research Institute Image analogy filters for terrain modeling
US7814276B2 (en) * 2007-11-20 2010-10-12 Solid State System Co., Ltd. Data cache architecture and cache algorithm used therein
US20100061030A1 (en) * 2008-09-09 2010-03-11 Norman Werbner Anti-shock device
WO2010121945A2 (en) * 2009-04-21 2010-10-28 International Business Machines Corporation Method and system for interaction with unmodified 3d graphics applications
US10169072B2 (en) * 2009-09-23 2019-01-01 Nvidia Corporation Hardware for parallel command list generation
US9563971B2 (en) 2011-09-09 2017-02-07 Microsoft Technology Licensing, Llc Composition system thread
WO2013142861A1 (en) 2012-03-23 2013-09-26 Polycore Software, Inc. Apparatus and method for providing a multicore programming platform
JP2014013506A (ja) * 2012-07-04 2014-01-23 Canon Inc 情報処理装置、制御方法、及びプログラム
US9946666B2 (en) * 2013-08-06 2018-04-17 Nvidia Corporation Coalescing texture access and load/store operations
US11200060B1 (en) * 2020-12-23 2021-12-14 Advanced Micro Devices, Inc. Broadcast synchronization for dynamically adaptable arrays
US12141614B2 (en) * 2021-10-12 2024-11-12 Square Enix Ltd. Scene entity processing using flattened list of sub-items in computer game
CN118535271B (zh) * 2024-07-03 2024-11-08 北京麟卓信息科技有限公司 一种基于虚拟纹理图集的渲染优化方法

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4692880A (en) * 1985-11-15 1987-09-08 General Electric Company Memory efficient cell texturing for advanced video object generator
JP2612260B2 (ja) * 1986-09-24 1997-05-21 ダイキン工業株式会社 テクスチヤマツピング装置
US4935879A (en) * 1987-08-05 1990-06-19 Daikin Industries, Ltd. Texture mapping apparatus and method
US4945495A (en) * 1987-10-21 1990-07-31 Daikin Industries, Ltd. Image memory write control apparatus and texture mapping apparatus
US5097427A (en) * 1988-07-06 1992-03-17 Hewlett-Packard Company Texture mapping for computer graphics display controller system
GB2240015A (en) * 1990-01-15 1991-07-17 Philips Electronic Associated Texture memory addressing
US5224208A (en) * 1990-03-16 1993-06-29 Hewlett-Packard Company Gradient calculation for texture mapping
US5222205A (en) * 1990-03-16 1993-06-22 Hewlett-Packard Company Method for generating addresses to textured graphics primitives stored in rip maps
US5179638A (en) * 1990-04-26 1993-01-12 Honeywell Inc. Method and apparatus for generating a texture mapped perspective view
JPH0628485A (ja) * 1992-07-09 1994-02-04 Toshiba Corp テクスチャーアドレス生成器、テクスチャーパターン生成器、テクスチャー描画装置及びテクスチャーアドレス生成方法
GB2270243B (en) * 1992-08-26 1996-02-28 Namco Ltd Image synthesizing system
CA2103395C (en) * 1992-11-24 2004-08-17 Masakazu Suzuoki Apparatus and method for providing texture of a moving image to a surface of an object to be displayed

Also Published As

Publication number Publication date
EP0749100A3 (en) 1999-05-26
EP0749100A2 (en) 1996-12-18
EP0749100B1 (en) 2005-08-03
DE69635009T2 (de) 2006-05-24
JP3888477B2 (ja) 2007-03-07
DE69635009D1 (de) 2005-09-08
US5790130A (en) 1998-08-04

Similar Documents

Publication Publication Date Title
JP3888477B2 (ja) テクスチャマッピング・コンピュータ・グラフィックス・システム
JP3645654B2 (ja) データ割り当て方法およびデータ記憶システム
JP3857355B2 (ja) テクスチャ・マッピング・データ管理方法
JP4059535B2 (ja) テクスチャ・データのアクセス方法
US6636225B2 (en) Managing texture mapping data in a computer graphics system
EP0747859B1 (en) Interrupt scheme for updating a local memory
US5886706A (en) System for managing texture mapping data in a computer graphics system
EP0747860A2 (en) Texture mapping data storage allocation method and system
US11043010B2 (en) Real time on-chip texture decompression using shader processors
US7050063B1 (en) 3-D rendering texture caching scheme
US6288730B1 (en) Method and apparatus for generating texture
EP1016068B1 (en) Reordering of memory references for pixels in a page-mode memory architecture
US5801711A (en) Polyline and triangle strip data management techniques for enhancing performance of computer graphics system
US5936632A (en) Method for fast downloading of textures to accelerated graphics hardware and the elimination of extra software copies of texels
JP4410940B2 (ja) 3次元イメージングシステムで用いるためのテクスチャリングシステム
US5949421A (en) Method and system for efficient register sorting for three dimensional graphics
US20080150951A1 (en) 3-d rendering engine with embedded memory
JPH10116352A (ja) ジオメトリ圧縮解除能力を有する3次元グラフィック・アクセラレータ用のコマンド・プロセッサ
US6456291B1 (en) Method and apparatus for multi-pass texture mapping
US6646646B2 (en) Memory system having programmable multiple and continuous memory regions and method of use thereof
US5860078A (en) Multiple input two-level cache directory with mini-directory for initial comparisons and main directory for mini-directory misses
US6933945B2 (en) Design for a non-blocking cache for texture mapping
US6314490B1 (en) Method and apparatus for memory addressing
US20040239680A1 (en) Method for improving cache-miss performance
US6590579B1 (en) System for low miss rate replacement of texture cache lines

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060523

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060816

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20061024

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20061122

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees