(57)【要約】グラフィックスシステムがグラフィックスプロセッサおよびキャッシュメモリシステムを含んでいる。グラフィックスプロセッサは、グラフィックス画像をレンダリングするための種々のグラフィックス動作を行う処理ユニットを含んでいる。キャッシュメモリシシテムは、完全に構成可能なキャッシュ、部分的に構成可能なキャッシュ、または構成可能キャシュと専用キャッシュの組み合わせを含んでいてもよい。キャッシュメモリシシテムは、制御ユニット、クロスバー、およびアービターをさらに含んでいてもよい。制御ユニットは、処理ユニットによるメモリ利用を判定し、そしてメモリ利用に基づいて構成可能なキャッシュを処理ユニットに割り当てうる。これらのキャッシュの良好な利用を実現するためおよびメモリアクセスボトルネックを回避するために、構成可能なキャッシュが割り当てられうる。クロスバーは、処理ユニットをそれらの割り当てられたキャッシュに結合する。アービターは、キャッシュとメインメモリとの間のデータ交換を容易にする。  【選択図】図５
2009535710.tif 000002
【特許請求の範囲】
【請求項１】
下記を備える装置：
グラフィックス画像をレンダリングするためのグラフィックス動作を行うように構成された複数の処理ユニット；
前記複数の処理ユニットのうちの少なくとも１つの処理ユニットに対するデータを記憶するように構成された複数のキャッシュ；および、
前記複数のキャッシュを前記少なくとも１つの処理ユニットに結合するように構成されたクロスバー。
【請求項２】
前記複数のキャッシュのそれぞれが前記複数の処理ユニットのうちの任意の１つに割り当て可能である、請求項１の装置。
【請求項３】
前記複数のキャッシュのそれぞれが前記複数の処理ユニットの各部分集合の任意の１つに割り当て可能である、請求項１の装置。
【請求項４】
請求項１記載の装置、ここにおいて、
前記複数のキャッシュは、１つまたは複数の処理ユニットに割り当てられる１つまたは複数の専用キャッシュおよび残りの処理ユニットに割り当て可能な少なくとも１つの構成可能なキャッシュを備える。
【請求項５】
各構成可能なキャッシュは、前記残りの処理ユニットの各部分集合の任意の１つに割り当て可能である、請求項４の装置。
【請求項６】
前記残りの処理ユニットは、デプステストエンジンおよびテクスチャマッピングエンジンを含む、請求項４の装置。
【請求項７】
更に下記を備える請求項１記載の装置：
前記複数の処理ユニットによるメモリ利用を確認しかつメモリ利用に基づいて前記複数のキャッシュを前記少なくとも１つの処理ユニットに割り当てるように構成された制御ユニット。
【請求項８】
請求項７記載の装置、ここにおいて、
前記制御ユニットは、先行するグラフィックス画像に対するメモリ利用に基づいて、レンダリングされるべき各グラフィックス画像に対して前記複数のキャッシュを割り当てるように構成されている。
【請求項９】
請求項７記載の装置、ここにおいて、
前記制御ユニットは、前記処理ユニットによるデータ要求、キャッシュヒット／ミス統計、またはそれらの組み合わせに基づいてメモリ利用を確認するように構成されている。
【請求項１０】
請求項７記載の装置、ここにおいて、
前記制御ユニットは、画像のレンダリング時に前記複数の処理ユニットによるメモリ利用の変化を検知しかつメモリ利用の検知された変化に基づいて前記複数のキャッシュを再割り当てするように構成されている。
【請求項１１】
更に下記を備える請求項１記載の装置：
実行されているグラフィックスアプリケーションによるメモリ利用に基づいて前記複数のキャッシュを前記少なくとも１つの処理ユニットに割り当てるように構成された制御ユニット。
【請求項１２】
請求項１記載の装置、ここにおいて、
前記クロスバーは、複数のインタフェースユニットを備え、各インタフェースユニットは、関連付けられた処理ユニットを該処理ユニットに割り当てられたキャッシュの組に結合するように構成されている。
【請求項１３】
請求項１２記載の装置、ここにおいて、
各インタフェースユニットは、前記関連付けられた処理ユニットにより要求されたデータが該処理ユニットに割り当てられた前記キャッシュの組の任意の１つに記憶されるか否かを判定するように構成された状態機械を備える。
【請求項１４】
請求項１３記載の装置、ここにおいて、
各インタフェースユニットに対する前記状態機械は、前記複数のキャッシュからのキャッシュヒット／ミスインジケーターおよび前記関連付けられた処理ユニットに割り当てられた前記キャッシュの組を示す制御を受信する。
【請求項１５】
請求項１３記載の装置、ここにおいて、
各インタフェースユニットに対する前記状態機械は、キャッシュミスが生じた場合に、前記関連付けられた処理ユニットに割り当てられた前記キャッシュの組の１つを満たすように構成されている。
【請求項１６】
前記複数のキャッシュは、キャッシュの少なくとも２つのレベルを有する階層構造に配列されている、請求項１の装置。
【請求項１７】
前記階層構造における少なくとも１つのレベルは構成可能な数のキャッシュを有する、請求項１６の装置。
【請求項１８】
前記階層構造における少なくとも１つのレベルは、構成可能なキャッシュサイズを有する、請求項１６の装置。
【請求項１９】
前記複数のキャッシュは、階層構造において構成可能な数のレベルに配列されている、請求項１の装置。
【請求項２０】
前記複数のキャッシュは、構成可能なキャッシュサイズを有する、請求項１の装置。
【請求項２１】
前記複数のキャッシュに結合されかつ前記複数のキャッシュとメインメモリとの間のデータ交換を容易にするように構成されたアービターをさらに含む、請求項１の装置。
【請求項２２】
前記複数の処理ユニットは、デプステストエンジンおよびテクスチャマッピングエンジンを含む、請求項１の装置。
【請求項２３】
請求項２２記載の装置、ここにおいて、
前記複数の処理ユニットは、パイプラインに配列されており、かつ前記デプステストエンジンは、前記パイプラインにおいて前記テクスチャマッピングエンジンよりも早期に配置されている。
【請求項２４】
下記を備える集積回路：
グラフィックス画像をレンダリングするためのグラフィックス動作を行うように構成された複数の処理ユニット；
前記複数の処理ユニットのうちの少なくとも１つの処理ユニットに対するデータを記憶するように構成された複数のキャッシュ；および、
前記複数のキャッシュを前記少なくとも１つの処理ユニットに結合するように構成されたクロスバー。
【請求項２５】
前記複数のキャッシュのそれぞれが前記複数の処理ユニットの各部分集合の任意の１つに割り当て可能である、請求項２４の集積回路。
【請求項２６】
更に下記を備える請求項２４記載の集積回路：
前記複数の処理ユニットによるメモリ利用を確認しかつメモリ利用に基づいて前記複数のキャッシュを前記少なくとも１つの処理ユニットに割り当てるように構成された制御ユニット。
【請求項２７】
下記を備える無線装置：
グラフィックス画像をレンダリングするためのグラフィックス動作を行うように構成された複数の処理ユニットを含むグラフィックスプロセッサ；および、
キャッシュメモリシステム、ここで該キャッシュメモリシステムは下記を備える：
前記複数の処理ユニットのうちの少なくとも１つの処理ユニットに対するデータを記憶するように構成された複数のキャッシュと、
前記複数のキャッシュを前記少なくとも１つの処理ユニットに結合するように構成されたクロスバー。
【請求項２８】
請求項２７記載の無線装置、ここにおいて、
前記キャッシュメモリシステムは、さらに下記を備える：
前記複数のキャッシュに結合されかつ前記複数のキャッシュとメインメモリとの間のデータ交換を容易にするように構成されたアービター。
【請求項２９】
下記を備える方法：
グラフィックス画像をレンダリングするためのグラフィックス動作を行うように構成された複数の処理ユニットによるメモリ利用を判定すること；
前記複数の処理ユニットによるメモリ利用に基づいて前記複数の処理ユニットのうちの少なくとも１つの処理ユニットに複数のキャッシュを割り当てること；および、
前記少なくとも１つの処理ユニットのそれぞれを該処理ユニットに割り当てられた対応するそれぞれの組のキャッシュに結合することを含む方法。
【請求項３０】
１つまたは複数のキャッシュを前記複数の処理ユニットのなかの１つまたは複数の処理ユニットに直接に結合することをさらに含む、請求項２９の方法。
【請求項３１】
請求項２９記載の方法、ここにおいて、
前記複数のキャッシュを割り当てることは、下記を備える：
先行するグラフィックス画像に対するメモリ利用に基づいて、前記複数のキャッシュをレンダリングされるべき各グラフィックス画像に対する少なくとも１つの処理ユニットに割り当てること。
【請求項３２】
下記を備える装置：
グラフィックス画像をレンダリングするためのグラフィックス動作を行うように構成された複数の処理ユニットによるメモリ利用を判定する手段；
前記複数の処理ユニットによるメモリ利用に基づいて、複数のキャッシュを前記複数の処理ユニットのうちの少なくとも１つの処理ユニットに割り当てる手段；および、
前記少なくとも１つの処理ユニットのそれぞれを該前記処理ユニットに割り当てられた対応するそれぞれの組のキャッシュに結合する手段。
【請求項３３】
更に下記を備える請求項３２記載の装置：
１つまたは複数のキャッシュを前記複数の処理ユニットのうちの１つまたは複数の処理ユニットに直接に結合する手段。
【請求項３４】
請求項３２記載の装置、ここにおいて、
前記複数のキャッシュを割り当てる手段は、下記を備える：
先行するグラフィックス画像に対するメモリ利用に基づいて、前記複数のキャッシュをレンダリングされるべき各グラフィックス画像に対する前記少なくとも１つの処理ユニットに割り当てる手段。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は一般的には回路に関し、さらに具体的にはグラフィックスシステムに関する。
【背景技術】
【０００２】
グラフィックスシステムは、ビデオゲーム、グラフィックス、コンピュータ援用設計（ＣＡＤ）、シミュレーションおよび視覚化ツール、画像化、等のような種々の用途に対して２次元（２−Ｄ）および３次元（３−Ｄ）画像をレンダリングする（render）ために広く用いられている。３−Ｄ画像は、表面でモデル化されることができ、そして各表面は多角形（典型的には三角形）で近似できる。３−Ｄ画像を表示するために用いられる三角形の数は、表面の複雑性と画像の所望される解像度によって決まり、極めて大きく例えば何百万であることもありうる。各三角形は、３つの頂点によって画定され、各頂点は空間座標、カラー値、テクスチャ座標のような種々の属性に関連する。各属性は、４つまでの要素を有しうる。例えば、空間座標は、典型的には水平および垂直座標（ｘおよびｙ）とデプス（depth）（ｚ）によって与えられ、カラー値は、典型的には赤、緑、青（ｒ、ｇ、ｂ）によって与えられ、そしてテクスチャ座標は、典型的には水平および垂直座標（ｕおよびｖ）によって与えられる。
【０００３】
グラフィックスシステムにおけるグラフィックスプロセッサは、２−Ｄまたは３−Ｄ画像をレンダリングするための種々のグラフィックス動作を行いうる。画像は、多数の三角形で構成され、各三角形は画素（ピクセル）で構成される。グラフィックスプロセッサは、三角形内の各ピクセルの要素値を判定することによって各三角形をレンダリングする。グラフィックス動作は、ラスター化（rasterization）、ステンシルおよびデプステスト（stencil and depth tests）、テクスチャマッピング（texture mapping）、シェーデイング（shading）、等を含みうる。グラフィックスプロセッサは、ピクセルに関連した任意のデータでありうるピクセルデータについて種々のグラフィックス動作を行うので、ピクセルデータに迅速にアクセスできることが、性能に対して大きな影響を有する。
【発明の開示】
【発明の概要】
【０００４】
構成可能なキャッシュを有しかつ良好な性能を有するグラフィックスシステムがここに記載されている。グラフィックスシステムは、グラフィックスプロセッサおよびキャッシュメモリシステムを含んでいる。グラフィックスプロセッサは、グラフィックス画像をレンダリングするための種々のグラフィックス動作を行う処理ユニットを含んでいる。キャッシュメモリシステムは、完全に構成可能なキャッシュ（fully configurable caches）、部分的に構成可能なキャッシュ（partially configurable cashes）、または構成可能なキャッシュ（configurable cashes）と専用キャッシュ（dedicated caches）の組み合わせを含むことができる。キャッシュは、キャッシュを割り当てられうる処理ユニットのうちの任意の１つに割り当てられうるならば、完全に構成可能である。キャッシュは、それが処理ユニットの部分集合のうちの任意の１つに割り当てられうるならば、部分的に構成可能である。キャッシュは、それが特定の処理ユニットに割り当てられるならば、専用である。キャッシュは、処理ユニットに対するデータ（例えば、ピクセルデータおよび／または命令）を記憶する高速メモリである。
【０００５】
キャッシュメモリシステムは、制御ユニット、クロスバー（crossbar）、およびアービター（arbiter）をさらに含みうる。制御ユニットは、処理ユニットによるメモリ利用を判定しかつメモリ利用に基づいて処理ユニットに構成可能なキャッシュを割り当てうる。構成可能なキャッシュは、これらのキャッシュの良好な利用を達成しかつグラフィックスプロセッサ内のあらゆる位置においてメモリアクセスのボトルネック（memory access bottleneck）を回避するために割り当てられうる。クロスバーは、処理ユニットをそれらの割り当てられたキャッシュに結合する。アービターは、キャッシュとメインメモリとの間のデータ交換を容易にする。
【０００６】
本発明の種々の態様および実施の形態が、以下においてさらに詳細に記述される。
【０００７】
本発明の特徴および本質は、同様の参照符号が全体にわたり対応して識別している図面に関連してなされる下記の詳細な説明から更に明白となるであろう。
【発明を実施するための最良の形態】
【０００８】
「好例の」（"exemplary"）という語は、本明細書では、「実施例、事例、または例示として適していること」を意味するために用いられる。「好例の」としてここに記述される実施の形態またはデザインは、必ずしも、他の実施の形態またはデザインよりも好ましいあるいは有益であると解釈されるべきものではない。
【０００９】
図１は、専用キャッシュを有するグラフィックスシステム１００のブロック図を示している。グラフィックスシステム１００は、グラフィックスプロセッサ１１０およびキャッシュメモリシステム１３０を含んでいる。グラフィックスプロセッサ１１０は、パイプラインで配列されかつ２−Ｄおよび３−Ｄ画像をレンダリングするために用いられる種々の処理ユニットを含んでいる。コマンドエンジン１２０ａは、実行されるべきグラフィックス動作を特定する入来コマンドを受信しかつ復号する。三角形位置およびｚセットアップエンジン１２０ｂは、後続のラスター化処理のための必要なパラメータを演算する。例えば、エンジン１２０ｂは、各三角形の３つのエッジのための線形方程式の係数、、デプス（ｄｅｐｔｈ）（ｚ）勾配のための係数、等を演算しうる。ラスター化エンジンは１２０ｃは、各三角形またはラインをピクセルに分解し、各ピクセルに対するスクリーン座標を生成する。
【００１０】
ステンシルおよびデプステストエンジン１２０ｄは、イネーブルされていれば、ピクセルが表示されるべきかあるいは捨てられるべきかを判定するために、各ピクセルに対してステンシルテストを行う。ステンシルバッファ（図１には図示なし）は、レンダリングされている画像内の各ピクセル場所に対する現在のステンシル値を記憶する。エンジン１２０ｄは、各ピクセルに対する記憶されたステンシル値を基準値と比較し、その比較の結果に基づいてピクセルを保持するかあるいは捨てる。エンジン１２０ｄはまた、適用可能であれば、ピクセルが表示されるべきかあるいは捨てられるべきかを判定するために、各ピクセルに対してデプステスト（これはｚテストとも呼ばれる）を行う。ｚ-バッファ（図１には図示なし）は、レンダリングされている画像内の各ピクセル場所に対する現在のｚ値を記憶する。エンジン１２０ｄは、各ピクセルのｚ値（現在のｚ値）をｚ-バッファにおける対応したｚ値（記憶されたｚ値）と比較し、ピクセルを表示し、そして現在のｚ値が記憶されたｚ値よりも近接／接近している（ｃｌｏｓｅｒ／ｎｅａｒｅｒ）場合には、ｚ-バッファと場合によりステンシルバッファとを更新し、現在のｚ値が記憶されたｚ値よりも後にある場合には、そのピクセルを捨てる。
【００１１】
属性セットアップエンジン１２０ｅは、ピクセル属性の後続の補間のための必要なパラメータを演算する。例えば、エンジン１２０ｅは、属性補間のための線形方程式の係数を演算しうる。ピクセル補間エンジン１２０ｆは、ピクセルのスクリーン座標に基づいてかつエンジン１２０ｅからの情報を用いて、各三角形内の各ピクセルに対する属性要素値を演算する。テクスチャマッピングエンジン１２０ｇは、イネーブルされていれば、各三角形にテクスチャを適用するためにテクスチャマッピングを行う。テクスチャ画像は、テクスチャバッファ（図１には図示なし）に記憶されうる。各三角形の３つの頂点は、テクスチャ画像における３つの（ｕ，ｖ）座標に関連され、そしてその三角形の各ピクセルは、テクスチャ画像における特定のテクスチャ座標に関連されうる。テクスチャリング（texturing）は、ピクセルのテクスチャ座標によって示された場所におけるテクスチャ画像のカラーで各ピクセルのカラーを修正することによって達成される。
【００１２】
各ピクセルは、カラー、デプス、テクスチャ等のような情報に関連づけられる。フラグメントシェーダ１２０ｈは、命令のシーケンスで構成されうるソフトウエアプログラムを各フラグメントに適用する。フラグメントシェーダ１２０ｈはまた、テクスチャマッピングエンジン１２０ｇにテクスチャ要求を送ることもできる。フラグメントエンジン１２０ｉは、アルファテスト（alpha test）、フォグ混合（fog blending）、アルファ混合（alpha blending）、論理演算（logic operation）、およびデイザリング動作（dithering operation）のような機能を各フラグメントに対して行い、そして結果をカラーバッファに与える。
【００１３】
図１に示されているグラフィックス動作は、技術的に公知である。グラフィックスプロセッサは、オープングラフィックスライブライリ（Open Graphics Library）（オープンＧＬ））、ダイレクト３Ｄ（Direct 3D）等のようなソフトウエア・インタフェースを実装しうる。オープンＧＬは、公表されている２００４年１０月２２日付けの"オープンＧＬ（登録商標）グラフィックス・システム：仕様書"バージョン２．０、（"The OpenGL（Registered Trademark） Graphics System: A Specification," Version 2.0, dated October 22, 2004）という名称の文書に記載されている。
【００１４】
一般に、グラフィックスプロセッサは、任意の組のグラフィックス動作のための任意の数の処理ユニットを含みうる。各処理ユニットは、専用ハードウエアで実装されたエンジン、プロセッサ、または両者の組み合わせでありうる。例えば、図１に示されているエンジンは専用ハードウエアで実装されうるものであり、他方、フラグメントシェーダはプログラム可能な中央処理ユニット（ＣＰＵ）で実装されうる。処理ユニットは、所望の最適化に依存して種々の順序で配列されうる。例えば、節電のために、図１に示されているように、ステンシルおよびデプステストをパイプラインで早期に行い、目に見えないピクセルが早期に捨てられるようにすることが望ましいであろう。処理ユニットはまた、他の順序で配列されてもよく、例えば、ステンシルおよびデプステストエンジン１２０ｄがテクスチャマッピングエンジン１２０ｇの後に配置されてもよい。
【００１５】
キャッシュメモリシステム１３０は、グラフィックスプロセッサ１１０内の処理ユニット１２０のうちの幾つかのための専用キャッシュ１５０ａ〜１５０ｆを含んでいる。図１に示されたデザインでは、ステンシルキャッシュ１５０ａは、レンダリングされている画像のある領域内のピクセルに対するステンシル値を記憶し、デプスキャッシュ１５０ｂは、同じまたは異なる領域内のピクセルに対するデプス値を記憶する。ステンシルおよびデプステストエンジン１２０ｄは、キャッシュ１５０ａに記憶されたステンシル値にアクセスして、これらのステンシル値を用いてステンシルテストを行う。エンジン１２０ｄは、キャッシュ１５０ｂに記憶されたｚ値にもアクセスして、これらのｚ値を用いてデプステストを行う。テクスチャキャッシュ１５０ｃは、三角形にテクスチャをマップするためにテクスチャマッピングエンジン１２０ｇによって用いられるテクスチャマッピングテーブルを記憶する。シェーダ命令キャッシュ１５０ｄは、フラグメントシェーダ１２０ｈに対する命令を記憶し、そしてシェーダデータキャッシュ１５０ｅは、フラグメントシェーダ１２０ｈのためのデータを記憶する。カラーキャッシュ１５０ｆは、ピクセルのためのカラー（例えば、赤、緑、青）値を記憶する。
【００１６】
アービター１６０は、キャッシュ１５０ａ〜１５０ｆとメインメモリ１７０に結合しかつそれら間のデータ交換を容易にする。処理ユニット１２０がデータのために関連付けられたキャッシュにアクセスして、要求されたデータがそのキャッシュに記憶されていない場合には、キャッシュミスが宣言される。このキャッシュミスにより、必要であれば、キャッシュの現在のコンテンツがメインメモリに戻されて記憶されることになり、そしてデータの新しい領域がメインメモリ１７０からフェッチ（fetched）されて、キャッシュにロードされることになる。要求データがキャッシュから得られて、処理ユニットに与えられうる。アービター１６０は、一度に１つのキャッシュがメインメモリ１７０とデータを交換できるようにする。
【００１７】
図１におけるキャッシュメモリシステム１３０は、グラフィックスシステム１００に対するメモリアクセス性能を向上させる。キャッシュ１５０は、グラフィックスプロセッサ１１０に近接して配置された小さな高速メモリである。高速キャッシュメモリは、処理ユニット１２０がより高速でデータを回収しかつ結果を記憶することができるから、処理速度を上げる。メインメモリ１７０は、グラフィックスプロセッサ１１０からさらに離れて（例えば、オフチップで）配置された大きい低速メモリである。メインメモリ１７０は、キャッシュ１５０にロードされうるデータおよび命令を記憶する。キャッシュ１５０は、メインメモリ１７０からのフェッチ（fetches）の回数を減少させ、かつ一般にグラフィックスシステム１００の性能を向上させる。
【００１８】
図１は、専用キャッシュの使用を示す。各キャッシュ１５０は、特定の処理ユニット１２０に対するデータまたは命令を記憶する。各キャッシュ１５０の利用は、実行されているグラフィックスアプリケーションによって決まる。例えば、３−Ｄグラフィックスアプリケーションは、ｚパスを実行するだけでよく、デプスおよび／またはステンシルテストだけを行わせればよい。このアプリケーションに対しては、ステンシルキャッシュおよび／またはデプスキャッシュだけが利用されればよく、残りのキャッシュ１５０ｃ〜１５０ｆは遊んでいてもよい。他の例としては、単純なシェーダアプリケーションは、シェーダ命令キャッシュ１５０ｄあるいはシェーダデータキャッシュ１５０ｅを利用しなくてもよく、これらのキャッシュは遊んでいてもよい。さらに他の例としては、グラフィックスアプリケーションは、テクスチャマッピングを無効にしてもよく、その場合には、テクスチャキャッシュ１５０ｃは必要とされなくてもよい。これらの例によって分かるように、専用キャッシュを使用すると、ある種のグラフィックスアプリケーションによるキャッシュの利用が低下することになりうる。専用キャッシュを使用すると、異なるグラフィックスアプリケーションに対して異なる場所でメモリアクセスボトルネックが生じることにもなりうる。このボトルネックがグラフィックスシステム１００の性能を制限する。
【００１９】
図２は、完全に構成可能なキャッシュを有するグラフィックスシステム２００の１つの実施の形態を示している。グラフィックスシステム２００は、グラフィックスプロセッサ２１０およびキャッシュメモリシステム２３０を含んでいる。グラフィックスプロセッサ２１０は、図１においてそれぞれ処理ユニット１２０ａ〜１２０ｉに対して上述したように動作しうる処理ユニット２２０ａ〜２２０ｉを含んでいる。図２に示されているように、処理ユニットのうちの幾つかだけが、データおよび／または命令を記憶するためにキャッシュを利用しうる。特に、ステンシルおよびデプステストエンジン２２０ｄに対するステンシルおよび／またはデプス値、テクスチャマッピングエンジン２２０ｇに対するテクスチャデータ、フラグメントシェーダ２２０ｈに対する命令および／またはデータ、およびフラグメントエンジン２２０ｉに対するカラー値を記憶するためにキャッシュが用いられうる。
【００２０】
キャッシュメモリシステム２３０は、グラフィックスプロセッサ２１０内の処理ユニット２２０に対するデータおよび／または命令を記憶するために割り当てられうるＮ個の完全に構成可能なキャッシュ２５０ａ〜２５０ｎを含んでおり、一般に、Ｎ≧１である。それらのキャッシュは、各キャッシュが、キャッシュを割り当てられうる任意の処理ユニットに割り当てられうるという点で、完全に構成可能である。１つの実施の形態では、各キャッシュ２５０は、１つの処理ユニット２２０だけに割り当てられうるが、所定の処理ユニット２２０はゼロ、１、または複数のキャッシュ２５０を割り当てられうる。制御ユニット２３２は、ステンシルおよびデプスエンジン２２０ｄ、テクスチャマッピングエンジン２２０ｇ、フラグメントシェーダ２２０ｈ、および／またはフラグメントエンジン２２０ｉに対して、これらの処理ユニットのメモリ利用に基づいて、利用可能なキャッシュ２５０ａ〜２５０ｎを割り当てる。クロスバー２４０は、処理ユニット２２０ｄ、２２０ｇ、２２０ｈ、および２２０ｉをそれらの割り当てられたキャッシュ２５０ａ〜２５０ｎに結合する。クロスバー２４０はまた、クロススイッチまたは他の用語で呼ばれてもよい。アービター２６０は、キャッシュ２５０ａ〜２５０ｎをメインメモリ２７０に結合し、それらのキャッシュとメインメモリとの間におけるデータ交換を容易にする。アービター２６０はまた、セレクタ、メモリインタフェース、または他の用語で呼ばれてもよい。
【００２１】
一般に、キャッシュメモリシステムは、任意のサイズを有しうる任意の個数のキャッシュを含みうる。キャッシュの個数およびそれらのサイズは、メモリアクセス性能と回路面積との間の妥協に基づいて選択されうる。大きいキャッシュサイズでは、キャッシュヒットレートが高くなり、かつ要求データがそれらのキャッシュに記憶される可能性が大きくなる。しかし、大きいキャッシュサイズはまた、大きい回路面積を必要とし、それがコストを増加させることになりうる。１つの特定の実施の形態では、キャッシュメモリシステム２３０は、１２個のキャッシュ２５０を含み、各キャッシュは４キロバイトである。他の実施の形態では、キャッシュメモリシステムに対して、それより少ないあるいは追加のキャッシュならびに他のキャッシュサイズが用いられうる。
【００２２】
図３は、図２におけるクロスバー２４０の１つの実施の形態のブロック図を示す。この実施の形態では、クロスバー２４０は、Ｋ個のインタフェースユニット３１０ａ〜３１０ｋを含んでおり、一般に、Ｋは任意の整数値でありうる。インタフェースユニットはまた、マスターユニットまたは他の用語で呼ばれうる。図２に示された実施の形態では、Ｋは６に等しく、６個のインタフェースユニットは、ステンシル、デプス、テクスチャ、シェーダ命令、シェーダデータ、およびカラーに対するものである。所定の処理ユニット２２０は、処理ユニットのデータ要件に依存して、１つまたは複数のインタフェースユニット３１０と相互に作用しうる。クロスバー２４０は、Ｋ個のインタフェースユニット３１０ａ〜３１０ｋに対してそれぞれＫ個のマルチプレクサ（Ｍｕｘ）３４０ａ〜３４０ｋ、およびＮ個のキャッシュ２５０ａ〜２５０ｎに対してそれぞれＮ個のマルチプレクサ３５０ａ〜３５０ｎをさらに含んでいる。
【００２３】
各インタフェースユニット３１０は、各組のライン３０２を経由して関連付けられた処理ユニット２２０に結合する。各インタフェースユニット３１０は、状態機械３２０および入力／出力（Ｉ／Ｏ）ユニット３３０を含んでいる。各インタフェースユニット３１０では、Ｉ／Ｏユニット３３０が関連付けられた処理ユニット２２０からライン３０２を経由してアドレスおよび／または出力データを受信して、そのアドレス／データをＮ個のマルチプレクサ３５０ａ〜３５０ｎのそれぞれの１つの入力に与える。Ｉ／Ｏユニット３３０はまた、関連マルチプレクサ３４０から入力データまたは命令を受信して、関連付けられた処理ユニット２２０にライン３０２を経由してデータ／命令を与える。
【００２４】
各マルチプレクサ３５０は、Ｋ個の入力において、すべてのＫ個のＩ／Ｏユニット３３０ａ〜３３０ｋからアドレス／データを受信する。各マルチプレクサ３５０はまた、制御ユニット２３２から各自の制御Ｃｎを受信して、その制御Ｃｎによって決定される１つの入力からアドレス／データを関連付けられたキャッシュ２５０に与える。各マルチプレクサ３５０は、このようにして１つのインタフェースユニット３１０を関連付けられたキャッシュ２５０に結合する。
【００２５】
各マルチプレクサ３４０は、Ｎ個の入力において、すべてのＮ個のキャッシュ２５０ａ〜２５０ｎから入力データまたは命令を受信する。各マルチプレクサ３４０はまた、制御ユニット２３２から各自の制御Ｐｋを受信して、その制御Ｐｋによって決定される１つの入力からのデータ／命令を関連Ｉ／Ｏユニットに与える。各マルチプレクサ３４０は、このようにして１つのキャッシュ２５０を関連インタフェースユニット３１０に結合する。
【００２６】
各キャッシュ２５０は、関連マルチプレクサ３５０からアドレスを受信して、そのアドレスにおける要求データ／命令がそのキャッシュに記憶されているか否かを判定する。各キャッシュ２５０は、要求データ／命令がそのキャッシュに記憶されていればキャッシュヒット（例えば、論理ハイ）を示し、あるいは、要求データ／命令がそのキャッシュに記憶されていなければキャッシュミス（例えば、論理ロー）を示すヒット／ミス（ｈ／ｍ）のインジケーター（indicator）を与える。各キャッシュ２５０は、キャッシュヒットが存在すれば、要求データ／命令を与える。各キャッシュ２５０は、メインメモリ２７０からのフェッチ（fetch）を待ち、そしてキャッシュミスが存在する場合には、要求データ／命令を与える。
【００２７】
各インタフェースユニット３１０では、状態機械３２０が、すべてのＮ個のキャッシュ２５０ａ〜２５０ｎからのヒット／ミスのインジケーターと、どのキャッシュがそのインタフェースユニットに割り当てられているかを示す制御Ｍｋを受信する。状態機械３２０は、割り当てられたキャッシュに対するヒット／ミスのインジケーターに基づいて、要求データ／命令が割り当てられたキャッシュのどれかに記憶されているか否かを、割り当てキャッシュに対するヒット／ミスのインジケーターに基づいて、判定する。状態機械３２０は、要求データ／命令が割り当てられたキャッシュのどれにも記憶されていないならば、フェッチ命令を生成する。
【００２８】
制御ユニット２３２は、状態機械３２０ａ〜３２０ｋそれぞれに対する制御Ｍ１〜ＭＫ、マルチプレクサ３４０ａ〜３４０ｋそれぞれに対する制御Ｐ１〜ＰＫ、およびマルチプレクサ３５０ａ〜３５０ｎそれぞれに対する制御Ｃ１〜ＣＮを生成する。これらの制御は、どのキャッシュが各インタフェースユニット３１０に割り当てられるかを判定する。
【００２９】
図３は、完全に構成可能なキャッシュに対するクロスバー２４０の１つの実施の形態を示している。一般に、キャッシュの完全構成可能性は、十分な数の入力を有するマルチプレクサを使用し、可能なキャッシュ割り当てを評価するように状態機械を設計し、そして状態機械およびマルチプレクサに対する適切な制御を生成することによって、実現されうる。クロスバー２４０はまた、処理ユニットを利用可能なキャッシュにマップできる他のデザインで実装されうる。
【００３０】
図４は、図３におけるキャッシュ２５０ｎおよびインタフェースユニット３１０ｋに対す状態機械３２０の１つの実施の形態のブロック図を示している。キャッシュ２５０ｎは、キャッシュコントローラ４１０、タグＲＡＭ４２０、およびデータＲＡＭ４３０を含んでいる。キャッシュコントローラ４１０は、キャッシュ２５０ｎの各アクセスに対してアドレス照合を行い、正しいデータ／命令がアクセスされているようにする。タグＲＡＭ４２０は、どのデータ／命令がキャッシュに現在記憶されているかを追跡する。データＲＡＭ４３０は、データ／命令を記憶する。データＲＡＭ４３０の各ラインは、キャッシュ２５０ｎがデータまたは命令を記憶するように構成されているかどうかに応じて、１つまたは複数のピクセルあるいは１つまたは複数の命令に対するデータを記憶しうる。
【００３１】
キャッシュ２５０ｎは、ダイレクトマップキャッシュ構造（direct map cache structure）またはＭ−ウエイセットアソシエイトキャッシュ構造（M-way set associate cache structure）で実装されうる。ダイレクトマップキャッシュ構造では、次のレベルにおけるメモリ（例えば、メインメモリ２７０）の各ラインが、データＲＡＭ４３０の１つのラインだけにマップ（mapped）されうる。データＲＡＭ４３０の各ライン（または各キャッシュライン）は、そのキャッシュラインに記憶されているメインメモリ２７０の特定のラインを識別するタグＲＡＭ４２０におけるタグに関連される。１つの例として、メインメモリ２７０が２５６ｋラインを有しておりかつデータＲＡＭ４３０が４ｋラインを有しているならば、各キャッシュラインは特定の１２ビットアドレスに関連され、そしてメインメモリの３２ラインは各キャッシュラインにマップされる。各キャッシュラインに記憶されているメインメモリ２７０の特定のラインは、キャッシュラインに対する１２ビットアドレスおよびメインメモリ２７０の３２ラインのうちのどれがキャッシュラインに記憶されているかを示す５ビットタグによって識別されうる。Ｍ−ウエイセットアソシエイトキャッシュ構造では、メインメモリ２７０の各ラインは、データＲＡＭ４３０のＭの可能なラインの任意の１つにマップされうる。一般に、タグ構造は、メインメモリサイズ、キャッシュサイズ、キャッシュ構造、各キャッシュラインのサイズ、および／または他のファクターで決まりうる。
【００３２】
タグＲＡＭ４２０は、データＲＡＭ４３０の各ラインに対するタグを記憶し、データＲＡＭ４３０における任意のラインが置換されると更新される。各キャッシュラインに対するタグは、そのキャッシュラインに記憶されているメインメモリのラインを示す。制御ユニット４１０内では、アドレス解析器（address parser）４１２が、処理ユニット２２０によるメモリアクセスのためのアドレスをマルチプレクサ３５０ｎから受信し、ターゲットタグおよびキャッシュラインアドレスを得るためにそのアドレスを解析し（parse）、そのキャッシュラインアドレスをタグＲＡＭ４２０に与え、そしてターゲットタグを比較ロジック４１４に与える。タグＲＡＭ４２０は、解析器４１２からのキャッシュラインアドレスに対する記憶タグを与える。比較ロジック４１４は、記憶タグをターゲットタグと比較し、それらのタグが等しいならばキャッシュヒットを示し、それらのタグが異なるならばキャッシュミスを示す。タグＲＡＭ４２０は、キャッシュ２５０ｎがＭ−ウエイセットアソシエイトキャッシュ構造を実装していれば、複数回アクセスされうる。
【００３３】
メモリアクセスユニット４１６は、キャッシュヒットが存在する場合に、データＲＡＭ４３０のアクセスに対処する。メモリアクセスが読み出し（read）であれば、キャッシュラインアドレスに記憶されたデータ／命令を読み取るためにアクセスされる。メモリアクセスが書き込み（write）であれば、データＲＡＭ４３０がキャッシュライン・アドレスに書き込まれ、そのキャッシュラインが書き込まれたことを示すようにキャッシュ「ダーテイビット」（"dirty bit"）が更新されて、そのラインは置換される前にメインメモリ２７０に書き戻されることになる。
【００３４】
インタフェースユニット３１０ｋに対する状態機械３２０は、そのインタフェースユニットに割り当てられたキャッシュに要求データ／命令が記憶されているか否かを判定する。状態機械３２０内では、マッパー（mapper）４５０が制御ユニット２３２から制御ＭＫを受信し、Ｎ個のキャッシュ２５０ａ〜２５０ｎに対するＮ個のイネーブル信号を生成する。各イネーブル信号は、関連付けられたキャッシュ２５０がインタフェースユニット３１０ｋに割り当てられるならば論理ハイに設定される。Ｎ個のＡＮＤゲート４５２ａ〜４５２ｎは、Ｎ個のキャッシュ２５０ａ〜２５０ｎそれぞれからＮ個のイネーブル信号およびＮ個のヒット／ミスインジケーターを受信する。各ＡＮＤゲート４５２は、（１）それのイネーブル信号が、関連付けられたキャッシュ２５０がインタフェースユニット３１０ｋに割り当てられていないことを示す論理ローであれば論理ローを、あるいは、（２）イネーブル信号が、キャッシュがインタフェースユニット３１９ｋに割り当てられていることを示す論理ハイであれば関連付けられたキャッシュ２５０からのヒット／ミスインジケーターを与える。ＯＲゲート４５４は、ＡＮＤゲート４５２ａ〜４５２ｎの出力を受信し、インタフェースユニット３１０ｋに対するヒットインジケーターを生成する。
【００３５】
キャッシュフィルユニット（cache fill unit）４６０は、キャッシュミスが存在する場合には、インタフェースユニット３１０ｋに割り当てられたキャッシュのうちの１つのキャッシュフィルを指示する。１つの実施の形態では、最近最も使われていない（ＬＲＵ）、すなわち、最も長期間使われていない割り当てられたキャッシュがキャッシュフィルのために選択される。キャッシュフィルユニット４６０は、選択されたキャッシュのすべてまたは一部分をメインメモリ２７０からの新しいデータ／命令で満たしうる。ターゲットキャッシュラインがメインメモリ２７０から満たされかつ選択されたキャッシュのタグＲＡＭがデータＲＡＭにロードされた新しいデータ／命令を反映するために更新される間、インタフェースユニット３１０ｋは機能停止（stalled）になされうる。
【００３６】
完全に構成可能なキャッシュを有するグラフィックスシステムは、処理ユニットにキャッシュを割り当てることに関して最大の柔軟性を提供する。所定の処理ユニットは、処理ユニットのデータ要件に依存して、利用可能なキャッシュのうちのゼロ、１つ、複数、あるいはすべてを割り当てられうる。利用可能なキャッシュは、キャッシュの良好な利用を実現しかつ実行されているグラフィックスアプリケーションとは関係なしにグラフィックスプロセッサにおける任意の１つの場所におけるメモリアクセスボトルネックを回避する態様で処理ユニットに割り当てられうる。利用可能なキャッシュは、下記のように、処理ユニットに知的に割り当てられうる。
【００３７】
多くの場合において、部分的に構成可能なキャッシュで高性能が達成されうる。これらのキャッシュは、各キャッシュが処理ユニットの部分集合のうちの１つに割り当てられうる点で部分的に構成可能である。異なるグラフィックス動作に対してキャッシュを使用する利益を確認するために種々のグラフィックスアプリケーションについて研究が行われてきた。これらの研究は、多くのグラフィックスアプリケーションに対してステンシルおよびデプステストとテクスチャマッピングの性能を高めるのにキャッシュが非常に有用であり、カラーおよびシェーダに対してはある程度だけしか有益でないことを示している。
【００３８】
したがって、キャッシュメモリシステムは、ステンシルおよびデプステストとテクスチャマッピングに対しては利用可能キャッシュの多くを構成可能とし、カラーおよびシェーダに対してはキャッシュのうちのほんの僅かを構成可能として、デザインされうる。部分的に構成可能なキャッシュを用いることは、構成可能なキャッシュを割り当てる制御ユニットならびに処理ユニットをそれらの割り当てられたキャッシュに結合するクロスバーのデザインを単純化しうる。
【００３９】
図５は、構成可能なキャッシュおよび専用キャッシュを有するグラフィックスシステム５００の１つの実施の形態を示している。グラフィックスシステム５００は、グラフィックスプロセッサ５１０およびキャッシュメモリシステム５３０を含んでいる。グラフィックスプロセッサ５１０は、図１における処理ユニット１２０ａ〜１２０ｉに対して上述したように動作する処理ユニットを含んでいてもよい。具体的には、グラフィックスプロセッサ５１０は、ステンシルおよびデプステストエンジン、テクスチャマッピングエンジン、フラグメントシェーダ、およびキャッシュに記憶されたデータおよび／または命令を利用しうるフラグメントエンジンを含んでいてもよい。
【００４０】
図５に示された実施の形態では、キャッシュメモリシステム５３０は、Ｒ個の部分的に構成可能なキャッシュ５５０ａ〜５５０ｒおよび１つの専用キャッシュ５５０ｓを含んでおり、一般にＲ≧１である。表１は、キャッシュ５５０ａ〜５５０ｓのそれぞれの可能な割り当てを示しており、各"Ｘ"は有効なキャッシュ割り当てを示している。表１に示されているように、Ｐ個の部分的に構成可能なキャッシュ５５０ａ〜５５０ｐのそれぞれは、ステンシルテスト、デプステスト、またはテクスチャマッピングに対して割り当てられうる。部分的に構成可能なキャッシュ５５０ｑは、シェーダ命令、ステンシルテスト、デプステスト、またはテクスチャマッピングに対して割り当てられうる。部分的に構成可能なキャッシュ５５０ｒは、シェーダデータ、ステンシルテスト、デプステスト、またはテクスチャマッピングに対して割り当てられうる。専用キャッシュ５５０ｒは、フラグメントエンジンに対するカラー値を記憶するために用いられる。１つの実施の形態では、Ｐ＝８であり、キャッシュ５５０ｑおよび５５０ｒがシェーダ命令およびデータに対しては使用されないと仮定して、１０個までのキャッシュがステンシルテスト、デプステスト、および／またはテクスチャマッピングに対して割り当てられうる。キャッシュメモリシステム５３０に対しては、より少数のまたは追加のキャッシュが用いられてもよい。
【表１】
2009535710.tif 000003
【００４１】
制御ユニット５３２は、処理ユニットによるメモリ利用に基づいて、構成可能なキャッシュ５５０ａ〜５５０ｒをステンシルおよびデプステストエンジン、テクスチャエンジン、および／またはフラグメントシェーダに割り当てる。クロスバー５４０は、処理ユニットをそれらの割り当てられたキャッシュ５５０ａ〜５５０ｒに結合する。アービター５６０は、キャッシュ５５０ａ〜５５０ｓをメインメモリ５７０に結合する。
【００４２】
図５はまた、クロスバー５４０の実施の形態も示している。この実施の形態では、クロスバー５４０は、ステンシルテスト、デプステスト、テクスチャマッピング、シェーダ命令、およびシェーダデータのそれぞれに対するインタフェースユニット５８０ａ〜５８０ｅを含んでいる。インタフェースユニット５８０ａは、ステンシルおよびデプステストエンジンをキャッシュ５８０ａ〜５８０ｒのうちのステンシルテストに対して割り当てられたキャッシュに結合する。インタフェースユニット５８０ｂは、ステンシルおよびデプステストエンジンをキャッシュ５８０ａ〜５８０ｒのうちのデプステストに対して割り当てられたキャッシュに結合する。インタフェースユニット５８０ｃは、テクスチャマッピングエンジンをキャッシュ５８０ａ〜５８０ｒのうちの割り当てられたキャッシュに結合する。インタフェースユニット５８０ｄは、キャッシュ５５０ｑが割り当てられておれば、フラグメントシェーダをこのキャッシュ５５０ｑに結合する。インタフェースユニット５８０ｅは、キャッシュ５５０ｒが割り当てられておれば、フラグメントシェーダをこのキャッシュ５５０ｒに結合する。各インタフェースユニット５８０は、例えば図３に示されているように、状態機械およびＩ／Ｏユニットを含んでいてもよい。簡単のために、インタフェースユニットに対するマルチプレクサおよびキャッシュに対するマルチプレクサは図５には図示されていない。
【００４３】
図５は、構成可能なキャッシュおよび専用キャッシュを有するキャッシュメモリシステムの特定の実施の形態を示している。一般に、キャッシュメモリシステムは、任意の個数の構成可能なキャッシュおよび任意の個数の専用キャッシュを含みうる。構成可能なキャッシュは、任意の組のグラフィックス動作に対して使用され、専用キャッシュも任意の組のグラフィックス動作に対して使用されうる。構成可能なキャッシュおよび専用キャッシュの両方を使用すると、制御ユニットおよびクロスバーのデザインを簡単化できる。
【００４４】
図２および５に示された実施の形態では、制御ユニットは、種々の態様で構成可能なキャッシュを処理ユニットに割り当てることができる。１つの実施の形態では、制御ユニットは、先行する画像／フレームにおけるメモリ利用に基づいて、レンダリングされるべき各グラフィックス画像またはフレームに対するキャッシュを割り当てる。制御ユニットは、各処理ユニットによってなされたメモリアクセスの数、各キャッシュに対するキャッシュヒットの数、各キャッシュに対するキャッシュミスの数、等をカウントすることによって、メモリ利用を確認しうる。制御ユニットは、つぎにメモリ利用の高い処理ユニットに対してより多くのキャッシュを割り当てることができ、そしてメモリ利用の低い処理ユニットに対してはより少ないまたはゼロのキャッシュを割り当てることができる。
【００４５】
他の実施の形態では、制御ユニットは、グラフィックス画像／フレームのコヒレンシ（coherency）に基づいて、構成可能なキャッシュを処理ユニットに割り当てる。コヒレンシは、連続した２Ｄ／３Ｄフレームにおける変化の量に関連する。フレームが同様のコンテンツをレンダリングする可能性が大きい場合には、より高いコヒレンシに対してはより少ないキャッシュが割り当てられ、より低いコヒレンシに対してはより多いキャッシュが割り当てられうる。
【００４６】
さらに他の実施の形態では、制御ユニットは、実行されているグラフィックスアプリケーションの特徴に基づいて、構成可能なキャッシュを処理ユニットに割り当てる。例えば、グラフィックスシステムが２−Ｄグラフィックスアプリケーションを実行しているならば、デプステストは必要とされなくてもよく、デプステストに対してはキャッシュは割り当てられなくてもよい。対極的に、３−Ｄグラフィックスアプリケーションがｚパスだけを用いるならば、すべての構成可能なキャッシュがデプステストに割り当てられうる。他の例としては、単純なシェーダプログラムが実行されておりかつシェーダ命令のすべてがフラグメントシェーダ内に記憶されうるならば、フラグメントシェーダにはキャッシュは割り当てられなくてもよい。
【００４７】
さらに他の実施の形態では、制御ユニットは、構成可能なキャッシュを動的に割り当てる。例えば、制御ユニットは、データ要求が処理ユニットに送られる場合には、処理ユニットに１つまたは複数の処理ユニットを割り当てることができる。制御ユニットは、要求の数、キャッシュのヒット／ミスの統計、および／または即時に判定されうる他の要因に基づいて、処理ユニットに割り当てられるキャッシュの数を調節しうる。１つの処理ユニットから他の処理ユニットに切り替えられたまたは再割り当てされたキャッシュに対して、フラッシュ動作および無効化動作（flush and invalidate operations）がすぐさま行われうる。
【００４８】
さらに他の実施の形態では、制御ユニットは、静的および動的割り当ての組み合わせを用いて、キャッシュを割り当てる。例えば、制御ユニットは、例えば、処理ユニットによるメモリ利用についての現在の統計に基づいて、フレーム、画像、またはバッチのレンダリングの開始において、所定の処理ユニットに１つまたは複数のキャッシュを再割り当てすることができる。制御ユニットは、フレーム、画像、またはバッチのレンダリング時に、この処理ユニットに対するキャッシュ割り当てを、例えば周期的に調節することができる。各レンダリング周期における新しいキャッシュ割り当ては、先行するレンダリング周期の間に得られた統計に基づいて決定されうる。
【００４９】
制御ユニットは、他の基準に基づいて、構成可能なキャッシュを割り当てることもできる。制御ユニットは、グラフィックスアプリケーションが最初に実行される場合に、および／または他の時点で、メモリ利用の変化が検知されると、各画像／フレーム内でキャッシュを割り当てることができる。
【００５０】
簡単のために、図１〜５は、キャッシュのバンクを含むキャッシュメモリシステムを示している。キャッシュはメモリの１つのブロックで実装されてもよい。キャッシュまたはキャッシュメモリシステムはまた、例えば、レベル１、レベル２、レベル３、等の複数のレベルを有する階層構造で実装されうる。低いレベル（例えば、レベル１）のキャッシュは、高いレベル（例えば、レベル２）のキャッシュより高速であるが小さくなる傾向がある。各レベルにおけるキャッシュは、キャッシュミスが生じると、次に高いレベルのキャッシュで満たされうる。レベルの数、各レベルにおけるキャッシュの数、および異なるレベルに対するキャッシュサイズは、固定であるかあるいは構成可能でありうる。例えば、レベルの数、各レベルのキャッシュの数、および／またはキャッシュサイズは、良好な性能を実現するために選択されうるものであり、かつグラフィックスアプリケーションの特徴に基づいて構成可能でありうる。
【００５１】
図６は、構成可能なキャッシュを有するグラフィックスシステムを動作させるためのプロセス６００の１つの実施の形態を示す。グラフィックス画像をレンダリングするためにグラフィックス動作を行うように構成された複数の処理ユニットによるメモリ利用が判定される（ブロック６１２）。メモリ利用は、処理ユニットによってなされたメモリアクセスをモニタすることにより、実行されているグラフィックスアプリケーションの特徴を確認することにより、そして／または他の態様で判定されうる。複数のキャッシュが、メモリ利用に基づいて、複数の処理ユニットのうちの少なくとも１つの処理ユニットに割り当てられる（ブロック６１４）。各処理ユニットは、（１）その処理ユニットならびに他の処理ユニットによるメモリ利用および（２）その処理ユニットの割り当てのために利用可能なキャッシュに依存して、キャッシュのうちのゼロ、１つ、複数、またはすべてを割り当てられうる。メモリ利用は、例えば、処理ユニットによるデータ要求、キャッシュヒット／ミス統計、等のような種々の統計に基づいて確認されうる。キャッシュ割り当ては、メモリ利用の変化が検知された場合等に、周期的に（例えば、グラフィックス画像／フレームごとに）行われうる。キャッシュはまた、メモリ利用の検知された変化に基づいて、画像／フレームのレンダリング時に再割り当てされうる。少なくとも１つの処理ユニットのそれぞれは、その処理ユニットに割り当てられたキャッシュの各組に、各インタフェースユニットを経由して結合される（ブロック６１６）。
【００５２】
ここに記載されたグラフィックスシステムおよび構成可能なキャッシュは、ワイヤレスコミュニケーション、コンピューテイング、ネットワーキング、パーソナルエレクトロニクス、等のために使用されうる。ワイヤレスコミュニケーションに対する、構成可能なキャッシュを有するグラフィックスシステムの好例の用途について以下で説明する。
【００５３】
図７は、ワイヤレスコミュニケーションシステムにおけるワイヤレスデバイス７００の実施の形態のブロック図を示している。ワイヤレスデバイス７００は、携帯電話、端末装置、ハンドセット、パーソナルデイジタルアシスタント（ＰＤＡ）、あるいは他のデバイスでありうる。ワイヤレスコミュニケーションシステムは、コード分割多重アクセス（ＣＤＭＡ）システム、グローバルシステムフォアモバイルコミュニケーションズ（Global System for Mobile Communications）（ＧＳＭ）システム、あるいは他のシステムでありうる。
【００５４】
ワイヤレスデバイス７００は、受信パスと送信パスを経由して双方向コミュニケーションを提供することができる。受信パスでは、ベースステーションによって送信された信号がアンテナ７１２によって受信され、レシーバ（ＲＣＶＲ）７１４に与えられる。レシーバ７１４は、受信信号を調整しかつデジタル化し、さらなる         処理のためにサンプルをデジタルセクション７２０に与える。送信パスでは、トランスミッタ（ＴＭＴＲ）７１６は、デジタルセクション７２０から送信さるべきデータを受信し、そのデータを処理しかつ調整し、アンテナを経由してベースステーションに送信される変調信号を生成する。
【００５５】
デジタルセクション７２０は、例えば、モデムプロセッサ７２２、ビデオプロセッサ７２４、アプリケーションプロセッサ７２６、デイスプレイプロセッサ７２８、コントローラ／プロセッサ７３０、グラフィックスプロセッサ７４０、および外部バスインタフェース（ＥＢＩ）７６０のような種々の処理ユニットおよびインタフェースユニットを含んでいる。モデムプロセッサ７２２は、データ送信および受信のための処理（例えば、符号化、変調、復調、および復号化）を行う。ビデオプロセッサ７２４は、カムコーダ、ビデオプレイバック、およびビデオカンフェレンスのようなビデオアプリケーションのためのビデオコンテンツ（例えば、スチル画像、ムービングビデオ、およびムービングテキスト）に対する処理を行う。アプリケーションプロセッサ７２６は、マルチウエイコール（multi-way calls）、ウエブブラウジング（web-browsing）、メデイアプレイヤー（media player）、およびユーザインタフェース（user interface）のような種々のアプリケーションに対する処理を行う。デイスプレイプロセッサ７２８は、デイスプレイユニット７８０におけるビデオ、グラフィックスおよびテキストの表示を容易にするための処理を行う。コントローラ／プロセッサ７３０は、デジタルセクション７２０内の種々の処理ユニットおよびインタフェースユニットの動作を指示する。
【００５６】
グラフィックスプロセッサ７４０は、グラフィックスアプリケーションに対する処理を行い、かつ下記のように実装されうる。キャッシュメモリシステム７５０は、グラフィックスプロセッサ７４０に対するデータおよび／または命令を記憶し、かつ構成可能なキャッシュおよび場合により専用のキャッシュで実装されうる。キャッシュメモリシステム７５０は、グラフィックスプロセッサ７４０内の処理ユニットに構成可能なキャッシュを結合するクロスバーと、バス７３２およびＥＢＩ７６０を経由してメインメモリ７７０にキャッシュを結合するアービターをさらに含みうる。ＥＢＩ７６０は、デジタルセクション７２０（例えば、キャッシュ）とメインメモリ７７０との間のデータの転送を容易にする。
【００５７】
デジタルセクション７２０は、１つまたは複数のデジタル信号プロセッサ（ＤＳＰｓ）、マイクロプロセッサ、縮小命令セットコンピュータ（ＲＩＳＣｓ）、等で実装されうる。デジタルセクション７２０はまた、１つまたは複数の用途特定集積回路（ＡＳＩＣｓ）または他のタイプの集積回路（ＩＣｓ）上に作成されてもよい。
【００５８】
ここに記載されたグラフィックスシステムおよび構成可能なキャッシュは、種々のハードウエアユニットで実装されうる。例えば、グラフィックスシステムおよび構成可能なキャッシュは、ＡＳＩＣｓ、デジタル信号処理デバイス（ＤＳＰＤｓ）、プログラマブルロジックデバイス（ＰＬＤｓ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡｓ）、プロセッサ、コントローラ、マイクロコントローラ、マイクロプロセッサ、および他の電子ユニットで実装されうる。
【００５９】
グラフィックスシステムのある部分は、ファームウエアおよび／またはソフトウエアで実装されうる。例えば、制御ユニットは、ここで説明された機能を行うファームウエアおよび／またはソフトウエアモジュール（例えば、手順、機能、等）で実装されうる。ファームウエアおよび／またはソフトウエアコードは、メモリ（例えば、図７におけるメモリ７７０）に記憶され、プロセッサ（例えば、プロセッサ７３０）によって実行されうる。メモリは、プロセッサの内部またはプロセッサの外部で実装されうる。
【００６０】
開示された実施の形態についての前記の記述は、当業者が本発明を実施または利用できるようにするために提示された。これらの実施の形態に対する種々の修正が当業者には容易に明らかとなるであろう、そしてここに明示された一般的原理は、本発明の精神または範囲から逸脱することなしに他の実施の形態に適用されうる。したがって、本発明は、ここに示された実施の形態に限定されるべく意図されたものではなく、ここに開示された原理および新規な特徴に整合した最も広い範囲を与えられるべきである。
【図面の簡単な説明】
【００６１】
【図１】専用キャッシュを有するグラフィックスシステムを示す。
【図２】完全に構成可能なキャッシュを有するグラフィックスシステムを示す。
【図３】図２のグラフィックスシッステムにおけるクロスバーを示す。
【図４】処理ユニットのためのキャッシュおよび状態機械を示す。
【図５】構成可能なキャッシュおよび専用キャッシュを有するグラフィックスシステムを示す。
【図６】構成可能なキャッシュを有するグラフィックスシステムを動作させるためのプロセスを示す。
【図７】ワイヤレスコミュニケーションシステムにおけるワイヤレスデバイスを示す。
【符号の説明】
【００６２】
１００  グラフィックスシステム
１１０  グラフィックスプロセッサ
１３０  キャッシュメモリシステム
１７０  メインメモリ
２００  グラフィックスシステム
２１０  グラフィックスプロセッサ
２３０  キャッシュメモリシステム
２７０  メインメモリ
３２０  状態機械
２３２  制御ユニット
２４０  クロスバー
５００  グラフィックスシステム
５１０  グラフィックスプロセッサ
５３０  キャッシュメモリシステム
５７０  メインメモリ
６００  プロセス
７００  ワイヤレスアンテナ
７１２  アンテナ
７１４  レシーバ
７１６  トランスミッタ
７２０  デジタルセクション
７７０  メインメモリ
７８０  デイスプレイユニット
【図１】
2009535710.tif 000004
【図２】
2009535710.tif 000005
【図３】
2009535710.tif 000006
【図４】
2009535710.tif 000007
【図５】
2009535710.tif 000008
【図６】
2009535710.tif 000009
【図７】
2009535710.tif 000010
【国際調査報告】
2009535710.tif 000011
2009535710.tif 000012
2009535710.tif 000013