(57)【要約】【解決手段】ピクセルデータをテクスチャマッピングする方法および装置が開示される。テクスチャフェッチのブロックが、ローカルメモリを備えるコプロセッサ要素で受け取られる。各テクスチャフェッチは画像内のピクセルのピクセル座標を含む。コプロセッサ要素は、各テクスチャフェッチのピクセル座標とテクスチャを構成するブロック数ＮＢとから、メインメモリ内に格納されるテクスチャの一つ以上の対応するブロックを決定する。各テクスチャブロックは、テクスチャの全てのミップマップレベルを含む。全てのNがＮＢ未満となるように選択されたＮＢ個のブロックをローカルメモリ内にキャッシュすることができる。現時点でローカルメモリにロードされていない場合、一つ以上の対応するブロックをローカルメモリにロードする。コプロセッサ要素は、ローカルメモリ内の一つ以上のテクスチャブロックに対しテクスチャフィルタリングを実行し、テクスチャフェッチのうちの一つに対応するピクセル値を生成する。【選択図】図１
2009530716.tif 000002
【特許請求の範囲】
【請求項１】
ａ）ローカルメモリを備えるコプロセッサ要素を用いてテクスチャフェッチのブロックを受け取るステップであって、各テクスチャフェッチが画像内のピクセルのピクセル座標を含むステップと、
ｂ）各テクスチャフェッチのピクセル座標とテクスチャを構成するブロック数ＮＢとから、メインメモリ内に格納されたテクスチャの一つ以上の対応するブロックを前記コプロセッサ要素を用いて決定するステップであって、前記テクスチャはＮＢ個のブロックに分割されており、各ブロックが前記テクスチャの全てのミップマップレベルを含んでおり、前記コプロセッサ要素のローカルメモリ内にＮ個のブロックがキャッシュ可能であるようにＮＢが選択され、ＮがＮＢよりも小さい、ステップと、
ｃ）テクスチャの一つ以上のブロックが前記ローカルメモリ内に現時点でロードされていない場合、テクスチャの対応する一つ以上のブロックをローカルメモリにロードするステップと、
ｄ）前記コプロセッサ要素を用いて前記ローカルメモリ内の一つ以上のテクスチャブロックのテクスチャフィルタリングを実行し、前記テクスチャフェッチのうちの一つに対応するピクセル値を生成するステップと、
を含む、ピクセルデータのテクスチャマッピングを実行する方法。
【請求項２】
前記テクスチャが正方形テクスチャであることを特徴とする請求項１に記載の方法。
【請求項３】
前記ローカルメモリが約２５６キロバイトの最大記憶サイズを有することを特徴とする請求項１に記載の方法。
【請求項４】
テクスチャの各ブロックが約１６キロバイトであり、ＮＢが９以下であることを特徴とする請求項１に記載の方法。
【請求項５】
ステップｄ）が、二つ以上のテクスチャブロックのバイリニアフィルタリングまたはトリリニアフィルタリングを実行して前記ピクセル値を生成することを含む請求項１に記載の方法。
【請求項６】
ステップｂ）が以下の計算を実行することを含み：
MMU = int((remainder (u)))*sqrt(NB)
MMV = int((remainder (v)))*sqrt(NB)
ＭＭＵとＭＭＶは前記メインメモリ内に格納されたテクスチャ内の座標であり、ｕとｖがピクセル座標であることを特徴とする請求項１に記載の方法。
【請求項７】
テクスチャの対応するブロックのそれぞれに対して、ＳＰＥのメモリブロック位置を決定するステップをさらに含む請求項１に記載の方法。
【請求項８】
テクスチャの対応するブロックのそれぞれに対してＳＰＥのメモリブロック位置を決定するステップが、以下の計算を実行することを含み：
SPUMu = int((remainder (u)))*sqrt(N)
SPUMv = int((remainder (v)))*sqrt(N)
ＳＰＵＭｕとＳＰＵＭｖはＳＰＥのメモリブロック位置の座標であり、ｕとｖがピクセル座標であることを特徴とする請求項７に記載の方法。
【請求項９】
前記ピクセル値をグラフィカルディスプレイ装置に出力するステップをさらに含む請求項１に記載の方法。
【請求項１０】
ステップｃ）の前に、テクスチャの対応するブロックがＳＰＥメモリに現時点でロードされているかを決定するステップをさらに含む請求項１に記載の方法。
【請求項１１】
ＳＰＥのローカル記憶にキャッシュ可能なブロック数Ｎが２であることを特徴とする請求項１に記載の方法。
【請求項１２】
ステップｃ）およびｄ）が、前記ローカルメモリ内の一つの位置へとテクスチャブロックをロードする一方で、前記ローカルメモリ内の別の位置に格納された別のテクスチャブロックからのテクスチャブロックデータを処理することを含む請求項１１に記載の方法。
【請求項１３】
前記テクスチャが該テクスチャの端に沿った境界ピクセルの列および／または行を一つ以上含み、前記境界ピクセルは前記テクスチャの反対側の端を包み込むことを特徴とする請求項１に記載の方法。
【請求項１４】
メインメモリと、メインメモリに接続されたメインプロセッサ要素と、ローカルメモリを持つコプロセッサ要素とを有するプロセッサユニットを備えるグラフィックス処理装置であって、
前記ローカルメモリがピクセルデータのテクスチャマッピングを実行するためのコプロセッサ実行可能なソフトウェア命令を含んでおり、前記コプロセッサ実行可能なソフトウェア命令が、
ａ）ローカルメモリを備えるコプロセッサ要素を用いてテクスチャフェッチのブロックを受け取る命令であって、各テクスチャフェッチが画像内のピクセルのピクセル座標を含む命令と、
ｂ）各テクスチャフェッチのピクセル座標とテクスチャを構成するブロック数ＮＢとから、メインメモリ内に格納されたテクスチャの一つ以上の対応するブロックを前記コプロセッサ要素を用いて決定する命令であって、前記テクスチャはＮＢ個のブロックに分割されており、各ブロックが前記テクスチャの全てのミップマップレベルを含んでおり、前記コプロセッサ要素のローカルメモリ内にＮ個のブロックがキャッシュ可能であるようにＮＢが選択され、ＮがＮＢよりも小さい、命令と、
ｃ）テクスチャの一つ以上のブロックが前記ローカルメモリ内に現時点でロードされていない場合、テクスチャの対応する一つ以上のブロックをローカルメモリにロードする命令と、
ｄ）前記コプロセッサ要素を用いて前記ローカルメモリ内の一つ以上のテクスチャブロックのテクスチャフィルタリングを実行し、前記テクスチャフェッチのうちの一つに対応するピクセル値を生成する命令と、
を含むことを特徴とするグラフィックス処理装置。
【請求項１５】
前記処理ユニットに接続されるグラフィカル出力装置をさらに備えることを特徴とする請求項１４に記載の装置。
【請求項１６】
前記ローカルメモリが約２５６キロバイトの最大記憶サイズを有することを特徴とする請求項１４に記載の装置。
【請求項１７】
命令ｂ）が以下の計算を実行する命令を含み：
MMU = int((remainder (u)))*sqrt(NB)
MMV = int((remainder (v)))*sqrt(NB)
ＭＭＵとＭＭＶは前記メインメモリ内に格納されたテクスチャ内の座標であり、ｕとｖがピクセル座標であることを特徴とする請求項１４に記載の装置。
【請求項１８】
前記コプロセッサ実行可能なソフトウェア命令が、前記メインメモリからロードされたテクスチャの対応するブロックそれぞれに対するローカルメモリブロック位置を決定するための命令を含むことを特徴とする請求項１４に記載の装置。
【請求項１９】
前記メインメモリからロードされたテクスチャの対応するブロックそれぞれに対するローカルメモリブロック位置を決定するための命令が、以下の計算を実行することを含み：
SPUMu = int((remainder (u)))*sqrt(N)
SPUMv = int((remainder (v)))*sqrt(N)
ＳＰＵＭｕとＳＰＵＭｖはＳＰＥのメモリブロック位置の座標であり、ｕとｖがピクセル座標であることを特徴とする請求項１８に記載の装置。
【請求項２０】
前記処理ユニットがセルプロセッサであり、前記メインプロセッサ要素がパワープロセッサ要素であり、前記コプロセッサ要素が相乗プロセッサ要素であることを特徴とする請求項１４に記載の装置。
【請求項２１】
命令ｃ）およびｄ）が、前記ローカルメモリ内の一つの位置へとテクスチャブロックをロードする一方で、前記ローカルメモリ内の別の位置に格納された別のテクスチャブロックからのテクスチャブロックデータを処理する命令を含む請求項１４に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態はコンピュータ・グラフィックスに関し、より詳細には並列プロセッサ上でのテクスチャの処理に関する。
【背景技術】
【０００２】
三次元（３Ｄ）コンピュータ・グラフィックスはしばしば、ラスタライゼーションとして知られている技術を使用して、ベクトルフォーマットで記述された二次元画像をピクセルまたは点に変換して、ビデオディスプレイまたはプリンタに出力する。各々のピクセルは、場所（例えば垂直座標と水平座標の観点で）とそのピクセルを構成する異なる色の強度に対応する値とで特徴付けることができる。ベクタ・グラフィックスは、幾何学的なオブジェクト、例えば曲線とポリゴンを用いることにより、画像を表現する。単純な３Ｄレンダリングエンジンでは、オブジェクトの表面は通常三角形のメッシュに変換され、それから３Ｄ場面の中で三角形が深さの順にラスタライズされる。
【０００３】
一般に、ポリゴンをラスタライズするために走査線アルゴリズムが使用される。走査線アルゴリズムは、均一な間隔の水平線のグリッドをポリゴンの上に被せる。各線上において、ポリゴン交差の連続した組がある所で、ピクセルの水平線が出力装置に描かれる。これらのランは、出力装置上でポリゴンの全領域を集合的にピクセルで覆う。
【０００４】
特定のグラフィックス・アプリケーションでは、ビットマップのテクスチャが多角形の上へと「塗られる」。この場合、出力装置によって描かれる各ピクセル値は、テクスチャからサンプリングされた一つ以上のピクセルから決定される。本明細書で使用するとき、ビットマップとは、一般にコンピュータ・モニタ、紙または他の表示装置上の通常は長方形であるピクセルのグリッドまたは色の点を表すデータファイルまたはデータ構造のことを指す。各ピクセルの色は、個々に定められる。例えば、色付きのピクセルを３バイト、つまり赤、緑、青のそれぞれ１バイトずつで定義することができる。ビットマップは、スクリーンに表示される画像を用いて、ビットのためにビットで対応する。おそらくは、ディスプレイのビデオメモリに格納されているかのように、あるいはデバイスの独立したビットマップであるかのように、同一のフォーマットで。ビットマップは、ピクセル単位での画像の幅と高さ、およびピクセルあたりのビット数で特徴付けられる。ピクセルあたりのビット数は、ピクセルが表現できる色の数を決定する。
【０００５】
テクスチャ・ビットマップを表面へ動かす処理には、テクスチャＭＩＰマップ（ミップマップとしても知られる）の使用を必要とすることが多い。このミップマップは、レンダリング速度を向上しアーチファクトを低減することを目的としてメインテクスチャに付随する、予め計算され最適化されたビットマップ画像の集合である。ミップマップは、３Ｄコンピュータゲーム、フライトシミュレータ、および他の３Ｄ画像処理システムで広く使われている。この技術はミップマッピングとして知られている。名称の「ＭＩＰ」という文字は、ラテン語のmultum in parvoの頭字語であり、「小さな空間内の多く」を意味する。
【０００６】
ミップマップセットの各ビットマップ画像はメインテクスチャの一バージョンであるが、特定の削減された詳細度（level of detail）で表される。メインテクスチャを完全なディテールで描画するのに十分なビューであるときは、メインテクスチャがそのまま使用されるが、テクスチャを遠方から見るとき、すなわち小さいサイズで見る場合には、最終画像を描画するグラフィックス装置（レンダラと呼ばれることが多い）は最適なミップマップ画像（または、実際には二つの最も近いミップマップ画像の補間）に切り替える。処理中のテクスチャ・ピクセル（テクセル）の数を単純なテクスチャを用いるときよりも非常に少なくできるので、レンダリング速度が増大する。ミップマップ画像は既に効果的にアンチエイリアシングされているので、アーチファクトを削減することができ、その結果リアルタイム・レンダラの負荷の一部を取り去ることができる。
【０００７】
テクスチャが２５６×２５６ピクセル（テクスチャは通常正方形であり、２の累乗に等しい長さの辺を有していなければならない）の基本サイズを持つ場合、関連するミップマップセットは一連の８つの画像を含むことができる。それぞれは一つ前の画像の半分のサイズであり、すなわち１２８×１２８、６４×６４、３２×３２、１６×１６、８×８、４×４、２×２、１×１（単一のピクセル）のサイズである。例えば、あるシーンが４０ピクセル×４０ピクセルの空間内でこのテクスチャを描画しているとすると、６４×６４のミップマップと３２×３２のミップマップを補間したものが使用される。これらのテクスチャを生み出す最も簡単な方法は平均化を連続して行うことであるが、より高度なアルゴリズム（おそらくは、信号処理とフーリエ変換に基づいたアルゴリズム）を使用することもできる。あるテクスチャについてこれらのミップマップの全てを格納するために必要な記憶空間の増加は１／３である。なぜなら、面積の１／４＋１／１６＋１／２５６＋...の合計は１／３に収束するからである（圧縮を使用しないと仮定した場合）。
【０００８】
ミップマップレベル間の混合は、通常何らかの形態のテクスチャフィルタリングを含む。本明細書で使用するとき、テクスチャフィルタリングとは３Ｄオブジェクト上の点にテクセル（テクスチャのピクセル）をマッピングするために用いられる方法のことを指す。単純なテクスチャフィルタリングアルゴリズムは、オブジェクト上の一点をとり、その位置に最も近いテクセルを調べる。その結果得られる点が、一つのテクセルから自身の色を取得する。この単純な技術は、最近傍フィルタリング（nearest neighbor filtering）と呼ばれることもある。より高度な技術では、一点について二つ以上のテクセルを組み合わせる。実際上最も頻繁に使用されるアルゴリズムは、ミップマップを使用するバイリニアフィルタリングとトリリニアフィルタリングである。異方性フィルタリングおよびより高度な方法、例えばクワドラティックフィルタリングまたはキュービックフィルタリングを用いると、さらに高品質の画像が得られる。
【０００９】
テレビゲーム、コンピュータなどの電子装置のためのテクスチャフィルタリング演算は、グラフィックスプロセッサまたはグラフィックスカードと呼ばれる特注のハードウェアを用いて実行されるのが通常である。グラフィックスカードは、一般的に大きなテクスチャの取扱いを容易にするかなりのメモリ容量を持つ。残念なことに、典型的なグラフィックスプロセッサは、他のプロセッサ、例えばセルプロセッサよりもクロックレートが遅い。そのうえ、グラフィックスプロセッサは、一般的にグラフィックス処理機能をハードウェアで実装している。適切なソフトウェアを用いてプログラム可能であるより高速なプロセッサ上でグラフィックス処理機能を実行することができれば、より有利である。
【００１０】
グラフィックスの頂点処理のようなアプリケーションではセルプロセッサが使用される。その後、処理された頂点データを、ピクセル処理のためにグラフィックスカードに渡すことができる。セルプロセッサは、並列処理を利用する一種のマイクロプロセッサである。セルプロセッサの基本的な構成は、「パワープロセッサ要素」（ＰＰＥ）（処理要素またはＰＥと呼ばれることもある）と複数の「相乗処理要素」（ＳＰＥ）とを含む。ＰＰＥとＳＰＥは、「要素相互接続バス」（ＥＩＢ）と呼ばれる内部高速バスで結ばれる。セルプロセッサは、携帯の装置からメインフレームコンピュータにまでわたるアプリケーションで用いるために、スケーラブルに設計されている。
【００１１】
典型的なセルプロセッサは、一つのＰＰＥと最大で８つのＳＰＥとを持つ。各ＳＰＥは、通常、メインプロセッサとコプロセッサとを含む単一のチップあるいは単一のチップの一部である。全てのＳＰＥとＰＰＥが、例えばメモリフローコントローラ（ＭＦＣ）によってメインメモリにアクセスすることができる。ＳＰＥは、メインプロセッサで実行中のプログラムとともに演算の並列処理を実行することができる。ＳＰＥは、ソフトウェアによって管理されなければならない小さなローカルメモリ（通常は約２５６キロバイト）を持つ。コードおよびデータはローカルのＳＰＥメモリへとまたはＳＰＥメモリからマニュアルで移動させる必要がある。
【００１２】
ダイレクトメモリアクセス（ＤＭＡ）は、ＳＰＥのローカル記憶に出し入れするデータ転送をかなり高速に実行する。ＳＰＵを持つセルプロセッサチップは、約３ギガヘルツで動作することができる。対照的に、グラフィックスカードは約５００メガヘルツで動作することができるが、これは６倍も遅い。しかしながら、セルプロセッサＳＰＥでは、自身のローカル記憶においてテクスチャマップ向けに利用可能なメモリ空間は、通常は限られた量である（典型的には約２５６キロバイト）。残念なことに、テクスチャマップは非常に大きくなりうる。例えば、１９００ピクセル×１０２４ピクセルをカバーするテクスチャは、ＳＰＥのローカル記憶で利用可能な量よりもかなり多くのメモリを必要とする。さらに、ＳＰＥとの間のデータのＤＭＡ転送は高いレイテンシを持つことがある。
【発明の開示】
【発明が解決しようとする課題】
【００１３】
したがって、上述の欠点を解決するピクセルデータのテクスチャマッピングを実行する方法が当分野で必要とされている。
【課題を解決するための手段】
【００１４】
上述の欠点を解決するために、本発明の実施形態は、ピクセルデータのテクスチャマッピングを実行する方法および装置を目的とする。テクスチャフェッチのブロックが、ローカルメモリを備えるコプロセッサ要素で受け取られる。各テクスチャフェッチは、画像内のあるピクセルのピクセル座標を含む。コプロセッサ要素は、各テクスチャフェッチのピクセル座標と、そのテクスチャを構成するブロック数ＮＢとから、メインメモリに格納されているテクスチャの一つ以上の対応するブロックを決定する。各テクスチャブロックはそのテクスチャの全てのミップマップレベルを含む。ブロック数Ｎがコプロセッサ要素のローカル記憶内にキャッシュできるようにＮが選択される。但し、ＮはＮＢよりも小さい。テクスチャブロックがローカルメモリに現在ロードされていない場合は、一つ以上の対応するテクスチャブロックがローカルメモリにロードされる。コプロセッサ要素は、ローカルメモリ内の一つ以上のテクスチャブロックを用いてテクスチャフィルタリングを実行し、テクスチャフェッチのうちの一つに対応するピクセル値を生成する。
【００１５】
本発明の教示は、添付の図面とともに以下の詳細な説明を考慮することによって容易に理解することができる。
【発明を実施するための最良の形態】
【００１６】
以下の詳細な説明は、説明のために多くの特定の詳細事項を含むが、当業者であれば以下の詳細事項に対する多数の変形および変更が本発明の範囲内であることを認めるだろう。したがって、以下の本発明の例示的な実施形態は、特許請求の範囲に記載された発明の普遍性を損なうことなく、また制約を課すことなく記されている。
【００１７】
本発明の実施形態により、セルプロセッサなどの並列プロセッサは専用のグラフィックスハードウェアを用いることなくグラフィックスを生成することができる。本発明の実施形態によると、ミップマップと呼ばれる様々な詳細度のテクスチャからテクスチャユニットが画像ピクセルをフェッチしてそれを混合し、得られた値を画像内の目標ピクセルのために返す。テクスチャユニットは、ソフトウェアで完全に実装可能であるフィルタリングされたテクスチャデータを検索するアプローチである。テクスチャユニットは、このタスクのために専用のハードウェアを利用しない。その代わりに、テクスチャユニットは、標準的な並列プロセッサ（例えば、セルプロセッサ）ハードウェアと専用ソフトウェアに頼ることができる。このタスクのために専用のハードウェアを備える従来のグラフィックスカードは、通常、セルプロセッサチップよりも非常に遅いクロックレートで動作する。パワープロセッサ要素（ＰＰＥ）と複数の相乗プロセッサ要素（ＳＰＥ）とを備えるセルプロセッサチップは、約３ギガヘルツで動作することができる。対照的に、グラフィックスカードは約５００ＭＨｚで動作可能であるが、これはセルプロセッサチップよりも６倍遅い。本発明の特定の実施形態は、ＳＰＥの独立したＤＭＡマネージャを利用して、ハードウェアユニットのパフォーマンスをソフトウェアで達成することを試み、また典型的に利用可能である限られたＳＰＵのローカル記憶を用いてこれを実施する。
【００１８】
本発明の実施形態により、ローカルメモリが限られておりキャッシュを持たない単一のまたは複数のコプロセッサユニット（例えば、セルプロセッサ内のＳＰＵ）上で、テクスチャユニット演算をソフトウェアで実行することが可能になる。したがって、テクスチャデータのページングをハードウェアではなくソフトウェアで取り扱うことができる。この種の演算を達成するためには、メインメモリを出入りするテクスチャのハードウェアページングをするために非常にわずかなローカル記憶しかなくキャッシュを持たないプロセッサを使用したランダムメモリアクセスを達成する必要がある。本発明の実施形態では、メモリ管理ステップがソフトウェアによって管理されるが、そこでは専用のハードウェアがこの問題を解決するために伝統的に使用されてきた。
【００１９】
本発明の実施形態は、図１および図２を同時に参照することで理解できる。図１に示すように、テクスチャユニット１００はコプロセッサ１０２とローカルメモリ１０４とを含む。メモリは、テクスチャブロック部１０６のほかコード１０８および出力結果１１０のためのスペースを含む。一例として、限定することなく、テクスチャユニット１００はセルプロセッサなどのマルチプロセッサ環境のＳＰＵのうちの一つであってもよい。代替的に、いくつかのＳＰＵを用いてサイクルあたりのテクスチャユニット演算の生産性を向上させてもよい。テクスチャユニット１００のコアはテクスチャブロック部１０６である。テクスチャブロック部１０６はソフトウェア・テクスチャ・データ・キャッシュとして実装されてもよい。一例として、テクスチャブロックは、ローカルメモリ１０４のある数（例えば、１６）の１６ｋブロックとして構成されてもよい。各ブロックは、メインメモリ１０１に保存されるメインテクスチャから得たデータブロック１１６を表している。メインテクスチャ１１２はいかなるサイズでもよいが、テクスチャ１１２が正方形、すなわちピクセル数に関して高さと幅とが等しいことが好ましい。テクスチャ１１２は、正方形である限り任意のサイズに拡大縮小することができる。
【００２０】
テクスチャブロック１１６は、画像内の各ピクセルについてピクセル値を決定するために用いられる。加えて、全てのミップマップレベル１１８が各テクスチャブロック１１６に埋め込まれており、任意のテクスチャレベルについてのページングを一度に一つに制限することができる。各ピクセル値は、以下の表１に示すように構成することができる。
【表１】
2009530716.tif 000003
【００２１】
図２は、コード１０８によって実装可能であり、コプロセッサ１０２によって実行可能である方法２００のフロー図を示す。２０２で、例えばメインメモリ２０４から、または関連するキャッシュから、グラフィックス処理命令がプリフェッチされる。命令は、コプロセッサ１００に対し、メインテクスチャ１１２を含むピクセルデータに対して演算を実行するように指示する。プリフェッチされた命令は、演算がなされることになっているメインテクスチャ１１２のブロックについての情報を含む。命令のためのテクスチャ情報を、本明細書ではテクスチャフェッチと呼ぶ。各テクスチャフェッチは、画像上の場所に対応するｕ座標とｖ座標を含む。一般的に、ｕとｖは０と１間の浮動小数点数である。一例として、各フェッチは以下の表２に示すように構成された１６バイトであってもよい。
【表２】
2009530716.tif 000004
【００２２】
複数のフェッチ構造を一度にローカルメモリ１０４にロードしてもよい。例えば、１０２４個の１６バイト構造のフェッチを一度にロードして合計で１６ｋバイトを得てもよい。
【００２３】
２０４で、プリフェッチされた一つ以上の命令に対してチェックを実行して、演算がなされるべき一つ以上のテクスチャブロック１１６が、ローカルメモリ１０４のテクスチャブロック部１０６に既に格納されているか否かを判定する。必要なテクスチャブロックがローカル記憶１０４内に存在しない場合、それらがメインメモリ１０１から転送される。ローカルメモリ１０４は、現在ロードされているテクスチャブロックを記述するリスト１１１を含んでいてもよい。
【００２４】
２０４で実行されたチェックによって、メインテクスチャ１１２の必要なブロックがローカルメモリ１０４のテクスチャブロック部１０６にロードされていないことが明らかになると、２０８で示すように、そのブロックをメインメモリ１０１からローカルメモリ１０４にロードすることができる。転送されたテクスチャブロック１１６は、テクスチャ座標のためにロードされなければならないテクスチャブロックと一致するハッシュ値に変換された連続したテクスチャ座標であってもよい。
【００２５】
テクスチャブロック１１６の転送を容易にするために、前処理ステップにおいて、記憶位置１０６への効率的な転送を容易にするための一つ以上のテクスチャブロックのグループ１１４にメインテクスチャ１１２が分割されていてもよい。各テクスチャブロック１１６は、テクスチャ１１２のその部分についての全てのミップマップレベル１１８を含む。好ましい実施形態では、テクスチャグループ１１４は、テクスチャブロック１１６の正方形配列である。
【００２６】
フェッチ構造内のｕ座標とｖ座標、およびメインメモリに格納されているテクスチャ内のブロック数ＮＢから、ハッシュ式の第１セットにより、いずれのテクスチャブロックをメインメモリからフェッチすべきかを決定することができる。一例として、限定することなく、対応するブロックのメインメモリブロック座標（それぞれＭＭＵ、ＭＭＶと表す）を、次式のように決定することができる。
MMU = int((remainder (u)＊sqrt(NB))
MMV = int((remainder (v)＊sqrt(NB))
【００２７】
ここで、ＭＭＵとＭＭＶは、画像上のピクセル座標（ｕ、ｖ）にマッピングされるべきテクスチャを含むブロックの行座標および列座標を指す。ハッシュ方程式の第１セットは、画像内のピクセルの各座標（ｕ、ｖ）と、テクスチャ内のブロック数の平方根とを乗じて、メインメモリブロック座標に対応する整数を返す。ＭＭＵを決定するために、ピクセル位置のｕ座標がブロックの数の平方根と掛け合わせられ、その結果が最も近い整数値に丸められる。一例として、演算結果が最も近い整数に切り捨てられてもよい。
【００２８】
図３は、所与の画像ピクセル座標の組からテクスチャブロック１１６を決定する例を示す。座標ｕ＝０．４、ｖ＝０．３について、画像１２０上のピクセル位置に対応するテクスチャをテクスチャフェッチが呼び出す例を考察する。この例のために、メインメモリ１０１内のメインテクスチャ１１２は、ＮＢ＝３６ブロックに分割された正方形テクスチャであるとする。すなわち、６行（上から０、１、２、３、４、５とラベルが振られている）６列（左から０、１、２、３、４、５とラベルが振られている）に配列された各辺に６ブロックが並べられている。このピクセル位置について対応するテクスチャブロックのＭＭＵ座標は、０．４＊６＝２．４の小数点以下を切り捨てた２に決定される。したがって、対応するテクスチャブロックは列２（左から３番目の列）にある。同様に、対応するテクスチャブロックのＭＭＶ座標は、０．３＊６＝１．８の小数点以下を切り捨てた１に決定される。したがって、対応するテクスチャブロックは行１（上から２番目の行）にある。ＭＭＵ、ＭＭＶの座標（２、１）は、８とラベルがついているテクスチャブロックと一致する。
【００２９】
第２のハッシュ式を使用して、１６ｋのテクスチャブロックがＳＰＵキャッシュ内のどの位置に入るかを決定することができる。ブロック位置は、Ｎブロックの正方形配列内の一つの正方形に対応する。ハッシュ式の第２セットは、メインメモリ内のテクスチャから得られたブロックの互いに対する相対位置を保持することが好ましい。ＳＰＵメモリブロックの位置は、次式のようにして決定することができる。
SPUMU = int((remainder(u)＊sqrt(N))
SPUMV = int((remainder(v)＊sqrt(N))
ここで、Ｎはローカルメモリ１０４にキャッシュされるべきテクスチャブロックの数である。例えば、９ブロックがキャッシュされる場合、Ｎ＝  ９、ｓｑｒｔ（Ｎ）  ＝３である。ＳＰＵＭＵ＝０．４＊３＝１．２であり、小数点以下が切り捨てられて１となる。また、ＳＰＵＭＶ＝０．３＊３＝０．９であり、小数点以下が切り捨てられてゼロになる。したがって、メインメモリ内のテクスチャのブロック８は、テクスチャブロック位置１０６の対応する行０、列１の位置に格納される。そして、必要なテクスチャ座標アドレスのハッシュ値に基づき、テクスチャブロック１１６を必要に応じてページングすることができる。２０４で行われるチェックを容易にするために、リスト１１１はいずれのブロック１１６が現在ロードされているかを追跡する。
【００３０】
２１０で、コプロセッサ１０２はローカルメモリ１０４内のテクスチャブロック１１６から得たピクセルを処理する。一例として、コプロセッサ１０２は現在のミップマップレベルと次のミップマップレベルのバイリニアフィルタリングを実行し、二つの線形補間を実行して、最終的なテクスチャカラー値を得ることができる。カラー値は、出力としてデータストリームで戻される。２１０に示すように、出力ピクセルをローカルメモリ１０４の出力部１１０に格納することができる。テクスチャユニット１００は、一度に複数のピクセル値を出力することができる。例えば、それぞれが１６バイトの１０２４ピクセル値、合計で１６ｋバイトを一度に出力することができる。
【００３１】
一例として、限定することなく、図４はセル・ブロードバンド・エンジン・アーキテクチャ（ＣＢＥＡ）として知られるアーキテクチャに準拠したプロセッサとして特徴付けられる一種のセルプロセッサ４００を示す。セルプロセッサは、この例に示すように、複数グループのＰＰＥ（ＰＰＥグループ）と複数グループのＳＰＥ（ＳＰＥグループ）とを含むことができる。代替的に、セルプロセッサは、一つのＳＰＥと一つのＰＰＥとを持つ一つのＳＰＥグループと一つのＰＰＥグループのみを備えていてもよい。ハードウェアリソースはグループ内のユニット間で共有することができる。しかしながら、ＳＰＥとＰＰＥはソフトウェアに対しては独立した要素として現れなければならない。
【００３２】
図４に示す例では、セルプロセッサ４００は複数のＳＰＥグループＳＧ＿０．．．ＳＧ＿ｎと、複数のＰＰＥグループＰＧ＿０．．．ＰＧ＿ｐとを含む。各ＳＰＥグループは複数のＳＰＥ、ＳＰＥ＿０．．．ＳＰＥ＿ｇを含む。セルプロセッサ４００は、メインメモリＭＥＭと入出力機能Ｉ／Ｏとをさらに含む。メインメモリＭＥＭは、グラフィックスプログラム４０２と一つ以上のテクスチャ４１２を含むことができる。プログラムからの命令をＰＰＥとＳＰＥによって実行することができる。プログラム４０２は、例えば図２に関して上述した特徴を実装する命令を含んでもよい。上述のように、これらの命令を含むコード４０５を、実行のために一つ以上のＳＰＥにロードすることができる。
【００３３】
各ＰＰＥグループは複数のＰＰＥ、ＰＰＥ＿０．．．ＰＰＥ＿ｇを含む。この例では、ＳＰＥグループは一つのキャッシュＳＬ１を共有する。キャッシュＳＬ１は、ローカル記憶とメイン記憶の間で転送するダイレクトメモリアクセス（ＤＭＡ）用の第１レベルキャッシュである。グループの各ＰＰＥは自身の第１レベル（内部）キャッシュＬ１を持つ。加えて、グループ内のＰＰＥは一つの第２レベル（外部）キャッシュＬ２を共有する。図１ではＳＰＥとＰＰＥに対してキャッシュが示されているが、それらは一般にセルプロセッサ、特にＣＢＥＡにとっては任意である。
【００３４】
要素相互接続バスＥＩＢは上述の様々な構成要素を接続する。各ＳＰＥグループのＳＰＥおよび各ＰＰＥグループのＰＰＥは、バスインタフェースユニットＢＩＵを通してＥＩＢにアクセスすることができる。セルプロセッサ４００は、プロセッサで典型的にみられる二つのコントローラをも含む。メモリインタフェースコントローラＭＩＣは、ＥＩＢとメインメモリＭＥＭの間のデータの流れを制御する。バスインタフェースコントローラＢＩＣは、Ｉ／ＯとＥＩＢの間のデータの流れを制御する。ＭＩＣ、ＢＩＣ、ＢＩＵおよびＥＩＢの必要条件は様々な実装態様に対して大きく異なるが、当業者であればそれらを実装するための機能および回路に精通しているであろう。
【００３５】
各ＳＰＥはＳＰＵ（ＳＰＵ＿０．．．ＳＰＵ＿ｇ）を含む。ＳＰＥグループ内の各ＳＰＵは、自身のローカル記憶領域ＬＳと専用のメモリフローコントローラＭＦＣとを備える。ＭＦＣは、メモリ保護情報とアクセス権情報とを保持および処理可能である関連するメモリ管理ユニットＭＭＵを含む。
【００３６】
ＰＰＥは、関連するキャッシュを持つ６４ビットパワーＰＣプロセッサユニット（ＰＰＵ）であってもよい。ＣＢＥＡ準拠システムは、ベクトル・マルチメディア・エクステンション・ユニットをＰＰＥ内に含む。ＰＰＥは汎用の処理ユニットであり、システム管理リソース（例えば、メモリ保護テーブルなど）にアクセスすることができる。ＣＢＥＡ内に定義されるハードウェアリソースは、ＰＰＥにより見られるように明確に実アドレス空間にマッピングされる。したがって、いずれのＰＰＥも、適切な実効アドレス値を用いることで、これらの任意のリソースに直接アドレスすることができる。ＰＰＥの主要な機能は、システム内のＳＰＥのためのタスクの管理とアロケーションである。
【００３７】
ＳＰＵがシステム管理機能を実行しないという点において、ＳＰＵはＰＰＥよりも複雑さの少ない計算ユニットである。ＳＰＵは通常、一つの命令、複数のデータ（ＳＩＭＤ）能力を有し、典型的にデータを処理し、割り当てられたタスクを実行するために任意の必要なデータ転送（ＰＰＥによりセットされた特性へのアクセスを必要とする）を開始する。ＳＰＵの目的は、より高い計算単位密度を必要とし与えられた命令セットを効果的に使うことができるアプリケーションを実行可能にすることである。ＰＰＥにより管理される、システム内のかなりの数のＳＰＵによって、広範囲にわたるアプリケーションについて費用効率が高い処理が可能になる。ＳＰＵは新しい命令セットアーキテクチャを実装する。
【００３８】
ＭＦＣの構成要素は、基本的にデータ転送エンジンである。ＭＦＣは、セルプロセッサのメイン記憶とＳＰＥのローカル記憶との間のデータ転送、データ保護およびデータ同期の主要な方法を提供する。ＭＦＣの命令は、実行されるべき転送を記述する。ＭＦＣの主要な構造上の目的は、できるだけ高速にかつできるだけ公平にこれらのデータ転送演算を実行することであり、これによってセルプロセッサの全体的なスループットを最大化する。データを転送するための命令は、ＭＦＣ  ＤＭＡ命令と呼ばれる。これらの命令は、ローカル記憶領域とメイン記憶領域の間のＤＭＡ転送に変換される。
【００３９】
各ＭＦＣは、一般に同時に複数のＤＭＡ転送をサポートすることができ、また複数のＭＦＣ命令を維持かつ処理することができる。これを達成するために、ＭＦＣはＭＦＣ命令のキューを維持かつ処理する。ＭＦＣは複数の転送要求をキューイングし、それらを同時に発行することができる。各ＭＦＣは、関連するＳＰＵのための一本のキュー（ＭＦＣ  ＳＰＵコマンドキュー）と、他のプロセッサおよび装置のための一本のキュー（ＭＦＣプロキシコマンドキュー）とを提供する。論理上、一組のＭＦＣキューは常にセルプロセッサ内の各ＳＰＵと関連づけられるが、一部のアーキテクチャの実装態様では、複数のＳＰＵ間で、例えばＳＰＵグループ間で一つの物理ＭＦＣを共有することができる。そのような場合、全てのＭＦＣの機能がＳＰＵ毎に独立してソフトウェアに対して現れなければならない。各ＭＦＣ  ＤＭＡデータ転送命令要求は、ローカル記憶アドレス（ＬＳＡ）と実効アドレス（ＥＡ）の両方を必要とする。ローカル記憶アドレスは、その関連するＳＰＵのローカル記憶領域のみを直接アドレスすることができる。実効アドレスが実アドレス空間に変換される（すなわち、MFC_SR1[D]が「１」にセットされる）場合、全てのＳＰＥローカル記憶領域を含むメイン記憶を参照できるという点において、実行アドレスはより一般的な使用形態を持つ。
【００４０】
ＭＦＣは２種類のインタフェースを提示する。すなわち、一つはＳＰＵに対してであり、もう一つは処理グループ内の全ての他のプロセッサとデバイスに対してである。ＳＰＵは、ＭＦＣを制御するためにチャンネル・インタフェースを使用する。この場合、ＳＰＵ上で動作するコードは、ＳＰＵのためのＭＦＣ  ＳＰＵ命令キューにアクセスすることができるに過ぎない。他のプロセッサとデバイスは、メモリマップされたレジスタを用いてＭＦＣを制御する。システム内の任意のプロセッサとデバイスが、ＭＦＣを制御してＳＰＵに代わりＭＦＣ代理命令要求を発行することが可能である。ＭＦＣは、帯域幅予約機能とデータ同期機能もサポートする。ＳＰＵ間および／またはＳＰＵとＰＰＵの間の通信を容易にするために、ＳＰＥとＰＰＥは、イベントを合図することに結びつけられる信号通知レジスタを含んでもよい。ＰＰＥとＳＰＥは、ＰＰＥがメッセージをＳＰＥに対して発信するルータの働きをするスター型トポロジによって結合されてもよい。そのようなトポロジーは、ＳＰＥ間の直接の通信を提供しない。この場合、各ＳＰＥと各ＰＰＥは、メールボックスと呼ばれる一方向の信号通知レジスタを備えてもよい。メールボックスを用いて、ＳＰＥはＯＳ同期をホストすることができる。
【００４１】
ＩＩＣの構成要素は、ＰＰＥに提示される割り込みの優先度を管理する。ＩＩＣの主要な目的は、メインシステムの割り込みコントローラを用いることなく、プロセッサ内の他の構成要素からの割り込みを処理可能とすることである。ＩＩＣは、実際は第２レベルのコントローラである。ＩＩＣは、ＣＢＥＡ準拠プロセッサ内部への、またはＣＢＥＡ準拠プロセッサのマルチプロセッサシステム内の全ての割り込みを取り扱うことを目的とする。システム割り込みコントローラは、一般にセルプロセッサ外部への全ての割り込みを取り扱う。
【００４２】
セルプロセッサシステム内では、ソフトウェアは最初にＩＩＣをチェックして、割り込みが外部システム割り込みコントローラから供給されたか否かを決定しなければならないことが多い。ＩＩＣは、全ての入出力装置からの割り込みを処理するべくメインシステムの割り込みコントローラに置き代わることを目的とはしていない。
【００４３】
セルプロセッサ内には２種類の記憶領域がある。すなわち、ローカル記憶領域とメイン記憶領域である。ＳＰＥのローカル記憶は、ローカル記憶領域の中に存在する。他の全ての機能とメモリはメイン記憶領域にある。ローカル記憶はメモリ装置の一つ以上の別々の領域からなり、それぞれが特定のＳＰＵと関連づけられている。各ＳＰＵは、それ自身の関連するローカル記憶領域内部から命令（データロード演算とデータ記憶演算を含む）を実行することができるに過ぎない。したがって、ローカル記憶のエイリアシング（ａｌｉａｓｉｎｇ）が可能でない限り、システム内の他の場所の記憶装置との間でのいかなる必要なデータ転送も、常にＭＦＣ  ＤＭＡ命令を発行して（個々のＳＰＵの）ローカル記憶領域とメイン記憶領域の間でデータ転送をすることによって実行しなければならない。
【００４４】
ＳＰＵプログラムは、ローカルアドレスを使用するローカル記憶領域にリファレンスをつける。しかしながら、特権的ソフトウェアは、ＭＦＣ＿ＳＲ１のＤビットを「１」にセットすることによって、ＳＰＵのローカル記憶領域をメイン記憶領域にエイリアス（別名変換）させることができる。各ローカル記憶領域には、メイン記憶領域内で実アドレスを割り当てられる。（実アドレスは、システムメモリ内のバイトのアドレスまたは入出力装置上のバイトのアドレスのいずれかである。）  これにより、特権的ソフトウェアがローカル記憶領域をアプリケーションの実効アドレス空間内にマッピングすることが可能になり、一つのＳＰＵのローカル記憶と別のＳＰＵのローカル記憶との間でのＤＭＡ転送が可能になる。
【００４５】
メイン記憶領域へのアクセス権を持つ他のプロセッサまたはデバイスは、ローカル記憶領域に直接アクセスことができる。ローカル記憶領域は、変換方法を用いてメイン記憶領域により表される実アドレス空間にマッピングされた実効アドレスまたはＩ／Ｏバスアドレスを用いてメイン記憶領域にエイリアスされている。
【００４６】
メイン記憶領域内にエイリアスされるローカル記憶領域を用いるデータ転送は抑制されたキャッシュ（caching inhibited）としてするべきであるが、これは、これらのアクセスがローカル記憶領域内のＳＰＵローカル記憶アクセス（すなわち、ＳＰＵロード、記憶、命令フェッチ）と整合しないからである。メイン記憶領域の実アドレス空間へのローカル記憶領域のエイリアシングにより、メイン記憶領域へのアクセス権を有する任意の他のプロセッサまたはデバイスがローカル記憶に直接アクセスすることができる。しかしながら、エイリアスされたローカル記憶はキャッシュ不可能（non-cacheable）として扱われなければならないので、ＰＰＥロードおよび記憶命令を使用する大容量のデータの転送は貧弱な性能になることがある。ローカル記憶領域とメイン記憶領域の間のデータ転送は、ストールを避けるためにＭＦＣ  ＤＭＡ命令を使わなければならない。
【００４７】
ＣＢＥＡのメイン記憶のアドレス指定は、パワーＰＣアーキテクチャで定義されるアドレス指定と互換性を持つ。ＣＢＥＡはパワーＰＣアーキテクチャの概念に基づいて構成されており、それらをＭＦＣによるメイン記憶のアドレス指定にまで拡張する。
【００４８】
ＳＰＵ上でまたは任意の他のプロセッサまたはデバイスで実行されるアプリケーションプログラムは、実効アドレスを使用してメインメモリにアクセスする。ＰＰＥがロード、記憶、分岐、またはキャッシュ命令を実行するとき、および次の連続した命令をフェッチするとき、実効アドレスが計算される。ＳＰＵプログラムは、ＭＦＣ命令内のパラメータとして実効アドレスを提供しなければならない。実効アドレスは、パワーＰＣアーキテクチャ、ブックＩＩＩにおけるアドレス変換の概要で記述される手順によって、実アドレスに翻訳される。実アドレスは、変換された実効アドレスによって参照されるメイン記憶装置内の位置である。メイン記憶装置は、システム内の全てのＰＰＥ、ＭＦＣおよび入出力装置で共有される。記憶装置のこのレベルで保持される情報は、システム内の全てのプロセッサおよび全てのデバイスで見ることができる。この記憶領域は、構造が均一であってもよいし、または階層的なキャッシュ構造の一部であってもよい。プログラムは、実効アドレスを使用するこのレベルの記憶装置を参照する。
【００４９】
システムのメインメモリは、一般に汎用記憶装置と不揮発性記憶装置の両方を含み、さらに例えばシステム構成、データ転送、同期、メモリマップされたＩ／Ｏ、Ｉ／Ｏサブシステムなどの機能のために使用される専用のハードウェアレジスタまたはアレイを含む。メインメモリについてはいくつかの異なる可能性がある構成が存在する。一例として、限定することなく、表３はセル・ブロードバンド・エンジン・アーキテクチャ（ＣＢＥＡ）として知られる特定のセルプロセッサ実装について、メインメモリ内のアドレス空間のサイズを表している。
【表３】
2009530716.tif 000005
【００５０】
セルプロセッサ４００は、プロセッサおよびシステム内で重要なリソースを管理するための任意の機能を含んでもよい。セルプロセッサの下で管理目標とされるリソースは、変換索引バッファ（ＴＬＢ）とデータと命令キャッシュである。これらのリソースの管理は、実装に依存するテーブルによって制御される。
【００５１】
ＴＬＢとキャッシュを管理するためのテーブルは交換管理（replacement management）テーブルＲＭＴと呼ばれ、これは各ＭＭＵと関連づけれてもよい。これらのテーブルは任意であるが、システム内でボトルネックとなり得る重要なリソースのそれぞれについてテーブルを準備することが有用であることが多い。ＳＰＥグループは任意のキャッシュ階層であるＳＬ１キャッシュを含んでもよく、これはＤＭＡ転送のための第１レベルキャッシュを表す。ＳＬ１キャッシュは任意のＲＭＴを含んでもよい。
【００５２】
図２は、本発明の一実施形態によるテクスチャユニット演算を構成するシステム５００の例を示す。セルプロセッサ５００は、メインメモリ５０２、一つのＰＰＥ５０４および８つのＳＰＥ５０６を含む。しかしながら、セルプロセッサ５０１は任意の数のＳＰＥを備えて構成されてもよい。図５に関して、メモリ、ＰＰＥおよびＳＰＥは、リング型の要素相互接続バス５１０を介して相互におよび入出力装置５０８と通信することができる。メモリ５０２は、上述したように構成可能である一つ以上のテクスチャ５１１を含む。メモリ５０２は、上述のプログラム４０２と共通の特徴を持つプログラム５０９を含んでもよい。ＳＰＥ５０６のうち少なくとも一つは、図２に関して上述した方法を実行するための命令を含むコードを自身のローカル記憶に備える。ＳＰＥ５０６は、メインメモリ５０２内に、メインテクスチャ５１１からロードされたテクスチャブロック５１３を含んでもよい。ＰＰＥ５０４は、プログラム５０９の部分を実行するための命令を持つコード５０７（またはその部分）を自身のＬ１キャッシュ内に備えてもよい。上述したように、コード５０５、５０７は、ＳＰＥとＰＰＥによって必要なときにアクセスされるようにメモリ５０２に保管されてもよい。実行コード５０５の結果としてＳＰＥ５０６によって生成される出力ピクセルデータ５１２は、入出力装置５０８によって出力プロセッサ５１４（例えば、スクリーンドライバ）に転送され、画像を描画することができる。
【００５３】
好ましい実施形態では、２ブロックのみが一度にＳＰＥ  ＬＳにロードされる。図６に示すように、ＳＰＥのローカル記憶６００は二つのテクスチャバッファ６０２Ａ、６０２Ｂを含んでもよい。各テクスチャバッファは、ローカル記憶装置６００内で利用可能な全メモリ空間の約４分の１の最大サイズを有してもよい。ローカル記憶６００内で利用可能なメモリ空間の約４分の１はコード６０４のために利用可能であり、残りの４分の１は入力テクスチャフェッチ要求６０６と出力ピクセル結果６０８との間で分割することができる。一例として、限定されることなく、２５６キロバイトのＬＳについて、１２８キロバイトはテクスチャ・キャッシュ・バッファのために分け、６４キロバイトはコードのために分け、３２キロバイトは入力テクスチャ要求を格納するために分け、３２キロバイトは出力ピクセル結果を格納するために分けることができる。
【００５４】
この実施形態では、ハッシュテーブル検索は、メインメモリからロードされたテクスチャブロックにのみ適用される。しかしながら、上述したように、各テクスチャは、ＳＰＥのローカル記憶メモリ６００に出入りするページングのためにブロックに分けて処理される。各テクスチャは、上下左右について隣接ピクセルの余分の隣接列と隣接行を含んでおり、テクスチャの端部ではテクスチャの反対側を包み込む列がある。そのため、テクスチャの近接ブロックをロードする必要なく、各ピクセル検索のバイリニアフィルタリングを実行することができる。また、上述の通り、各ミップマップレベルはこの同じ方法で構成されてもよく、このブロックに含まれてもよい。これにより、フェッチされたピクセルがフェッチされたテクスチャブロックの端に位置したとしても、ピクセルのバイリニアフィルタリングが可能になる。
【００５５】
本発明の実施形態によるテクスチャユニットの動作に関して実施された研究では、テクスチャフェッチ要求に対して８０−９０％のヒット率が示された。必要とされるテクスチャブロックは既にキャッシュ内にあり、ＤＭＡによりメインメモリから転送される必要がない。ハッシュ・テクスチャ・ブロック検索演算がフェッチされるデータを実際に処理する前に多数のフェッチ（例えば、約１００フェッチ）をプリフェッチする場合、この種のシステムはフェッチの場所を利用することができる。新しいブロックがロードされる必要がある場合、第１のバッファに格納されたブロックに対して処理を進める一方、第２のバッファに新しいブロックをロードすることができる。この方法で、ＤＭＡ時間を可能な限り隠すことができる。そして、ＳＰＵは既にキャッシュ内にあるピクセルデータを処理することに自身の時間の大半を費やす。
【００５６】
上述の研究は、ＩＢＭの所有するＭＡＭＢＯと呼ばれる動作が正確なセルシミュレータを使って実行された。コードは、セルプロセッサコンパイラを使用してコンパイルされた。このように、あたかもセル上で実行されているかのように、同じコンパイルされたコードが使用された。ＭＡＭＢＯはセルの速度で動作しないシミュレーションされた環境であるが、依然としてこのアルゴリズムの挙動（例えば、ヒット率）の良いゲージである。実際のセルプロセッサ上で本明細書に記述した制約で実装される本発明の実施形態は、セルシミュレータを使って実行された研究において観察されたものと一致したヒット率を達成すると予想される。ヒット率を制限する主要な要因は、コードが動く速度ではなく、むしろテクスチャフェッチの場所（locality）とＳＰＥ上のキャッシュ配分である。フェッチのランダムさと新しいブロックのロードを回避するときのキャッシュの効率が、ヒット率を制限する主要な要因である。
【００５７】
一例として、キャッシュ内のデータの処理は、一つのミップマップレベルから得たピクセルデータのバイリニアフィルタリングでも、トリリニアフィルタリングでも、または各ミップマップレベルから得たバイリニアフィルタリングしたピクセルの混合であってもよい。ミップマップレベル間の混合は、通常、何らかの形態のテクスチャフィルタリングを伴う。そのようなテクスチャフィルタリング技術は当業者にとって周知であり、例えば３Ｄオブジェクト上にテクセル（テクスチャのピクセル）をマッピングするなど、コンピュータグラフィックスにおいて広く使用されている。
【００５８】
テクスチャユニット演算を実行しているいくつかのＳＰＵは、適度の性能を得るための専用のグラフィックスハードウェアと同等でありえた。テストにおいて、既にキャッシュ内にあるテクスチャの８０−９５％の範囲のヒット率により、メインメモリからテクスチャブロックをロードする量を最小化することが発見された。このソフトウェアテクスチャユニットの周りに構築されるソフトウェアシステム全体により、内部にセルプロセッサを持つ任意の所与のテレビ、コンピュータまたはメディアセンターがソフトウェアによる３Ｄレンダリング機能を備えることを可能にする。
【００５９】
本発明の実施形態は極めて有益なものとなり得る。なぜなら、境界データとミップマップとを含む専用に作られた６４ｋのテクスチャブロックの使用によって、ＤＭＡ帯域幅が最小化されるからである。また、これらテクスチャブロックの高速（fast early）ハッシュソートを使用して、新しいブロックをロードする必要があるときのＤＭＡレイテンシを隠すことで、ＳＰＵフェッチ時間を最小化することができる。このように、ＳＰＵは、テクスチャブロックＤＭＡを待機するのに費やす時間、またはバイリニアフィルタリングあるいはトリリニアフィルタリングをするための端のケースを憂慮するために費やす時間を非常に少なくしつつ、ピクセルを混合し得られたピクセルを出力バッファにパッキングすることに自身の時間を費やすことができる。
【００６０】
本発明の実施形態により、プロセッサは、ＳＰＵ上のソフトウェアで非常に詳細なテクスチャのグラフィックスを集中して描画することができる。本発明の実施形態により、テクスチャ演算が一般的に必要とする大量のランダムメモリアクセスのために生じるであろう問題を回避することができる。本発明の実施形態によると、一旦テクスチャがブロックへと処理されると、テクスチャユニット演算をセルプロセッサ上のＳＰＵによって非常に効率的に実行することができる。したがって、セルプロセッサを含むテレビゲーム機、テレビ、電話機でさえも、専用のグラフィックスハードウェアを用いることなく先進のテクスチャグラフィックスを生成することができる。したがって、コストを著しく節約して利益を上げることができる。
【００６１】
上記は本発明の好適な実施形態の完全な説明を含むが、様々な変形、修正、および等価物を用いることが可能である。したがって、本発明の範囲を上記の説明を参照して決定するべきではなく、代わりに、添付の特許請求の範囲とその完全な等価物とを参照して本発明の範囲を決定するべきである。本明細書に記載した特徴は、好適であるか否かに関わらず、本明細書に記載した他の任意の特徴と組み合わせることができる。特許請求の範囲では、不定冠詞「Ａ」または「Ａｎ」は、明示的に述べた場合を除いて、冠詞の後に続く一つ以上の項目の量のことを指している。所与の請求項内で「means for」のフレーズを使用して限定が明示的に述べられていない限り、添付の請求項がミーンズプラスファンクションの限定を含むものとして解釈されるべきでない。
【図面の簡単な説明】
【００６２】
【図１】本発明の一実施形態によるテクスチャユニットフェッチング装置を示す模式図である。
【図２】本発明の一実施形態によるテクスチャユニットフェッチング方法を示すフロー図である。
【図３】所与の画像ピクセル座標のセットからテクスチャブロックを決定する例を示す模式図である。
【図４】本発明の一実施形態によるテクスチャフェッチングを実装するセル・ブロードバンド・エンジン・アーキテクチャの模式図である。
【図５】本発明の一実施形態によるセルプロセッサベースのシステムの模式図である。
【図６】本発明の一実施形態によるＳＰＥのローカル記憶内へのテクスチャデータのキャッシュを例示するブロック図である。
【図１】
2009530716.tif 000006
【図２】
2009530716.tif 000007
【図３】
2009530716.tif 000008
【図４】
2009530716.tif 000009
【図５】
2009530716.tif 000010
【図６】
2009530716.tif 000011
【国際調査報告】
2009530716.tif 000012
2009530716.tif 000013
2009530716.tif 000014