(57)【要約】【課題】オンチップ圧縮状態ビットの比例的な増加を必要とせずに、データ処理チップに付属のメモリの圧縮ブロック内の利用可能な記憶スペースを増加する技術を提供する。【解決手段】圧縮状態ビットキャッシュは、メモリの潜在的な圧縮ブロックにアクセスするのにどれほど多くのビットが必要かを決定するのに使用される圧縮状態ビットのオンチップ利用を与える。付属メモリの予約領域に存在するバッキング記憶装置は、付属メモリに存在する任意の多数のブロックの圧縮状態を表すのに使用される圧縮状態ビットの完全セットのための記憶装置をなす。複数の物理的メモリデバイスにわたりメモリアクセスパターンを分配するのに使用される物理的アドレス再マッピングを圧縮状態ビットキャッシュにより部分的に複製し、バッキング記憶装置データの割り当て及びアクセスを他のユーザデータと効率的に一体化する。【選択図】図４
2010134929.tif 000002
【特許請求の範囲】
【請求項１】
１つ以上のクライアント及び外部メモリに結合された中間キャッシュであって、少なくとも１つのデータ表面と、前記外部メモリ内に存在する圧縮情報を記憶するデータ構造体とにアクセスするように構成された中間キャッシュにおいて、
前記外部メモリ内に記憶されたメモリのブロックに対する圧縮情報をキャッシュ記憶するように構成された圧縮状態ビットキャッシュと、
クライアントから受け取られる第１メモリアクセス要求を含むキャッシュミスに応答して、その第１メモリアクセス要求に関連し且つ圧縮状態ビットキャッシュ又はデータ構造体のいずれかに記憶された圧縮情報に基づいて前記外部メモリから圧縮データを要求するように構成されたデータキャッシュユニットと、
を備え、前記圧縮データは、要求されたデータを表すための減少セットのデータを含むものである、中間キャッシュ。
【請求項２】
前記クライアントから受け取った第１メモリアクセス要求に関連したコマンドをルーティングするように構成されたコマンドクロスバーと、前記第１メモリアクセス要求に関連したデータをルーティングするように構成されたデータクロスバーとを更に備える、請求項１に記載の中間キャッシュ。
【請求項３】
前記第１メモリアクセス要求に関連したメモリアドレスに対して第１の再マッピングオペレーションを遂行して、前記第１メモリアクセス要求に対する第１の物理的メモリアドレスを発生するように構成されたセット及びタグユニットを更に備える、請求項２に記載の中間キャッシュ。
【請求項４】
前記圧縮状態ビットキャッシュは、前記第１メモリアクセス要求に関連したタグラインをメモリマネージメントユニットから受け取って、当該タグラインからキャッシュタグを導出するように構成される、請求項３に記載の中間キャッシュ。
【請求項５】
前記タグラインは、前記メモリマネージメントユニット内に記憶され且つ前記メモリマネージメントユニットによって遂行されるバーチャルアドレス／物理的アドレス変換中に発生されるページテーブルエントリー内に存在する、請求項４に記載の中間キャッシュ。
【請求項６】
前記圧縮状態ビットキャッシュは、前記第１メモリアクセス要求に関連した圧縮情報が前記圧縮状態ビットキャッシュ内に現在記憶されているか又は前記データ構造体内に現在記憶されているかを前記キャッシュタグに基づいて決定するように構成される、請求項７に記載の中間キャッシュ。
【請求項７】
前記第１メモリアクセス要求に関連した圧縮情報は、前記データ構造体内に記憶され、前記圧縮状態ビットキャッシュは、前記データ構造体から圧縮情報を検索するために第２メモリアクセス要求を発生するよう構成される、請求項６に記載の中間キャッシュ。
【請求項８】
前記圧縮状態ビットキャッシュは、前記タグラインから導出されたインデックスにオフセットを追加することにより前記第１メモリアクセス要求に関連した圧縮情報が検索されるところの前記データ構造体内のアドレスを計算するように構成される、請求項７に記載の中間キャッシュ。
【請求項９】
前記第１メモリアクセス要求に関連した圧縮情報が検索されるところの前記データ構造体内のアドレスに対して第１の再マッピングオペレーションを遂行することによって前記第２メモリアクセス要求のための第２の物理的メモリアドレスが計算され、前記圧縮状態ビットキャッシュは、前記第１メモリアクセス要求に関連した圧縮情報を、前記第２の物理的メモリアドレスに基づき前記データ構造体から前記第２メモリアクセス要求を経て読み取って、当該圧縮情報を前記圧縮状態ビットキャッシュに存在するデータ記憶装置内に記憶する、請求項８に記載の中間キャッシュ。
【請求項１０】
前記データキャッシュユニットは、前記第１の物理的メモリアドレスに基づき前記外部メモリから前記第１メモリアクセス要求を経て圧縮データを読み取って、当該圧縮データを前記圧縮情報により前記データキャッシュユニット内に記憶し、更に、前記データキャッシュユニットは、クライアントが圧縮データを受け取るように構成された場合には圧縮データをクライアントへ送信し、クライアントが圧縮データを受け取るように構成されていない場合には、圧縮データを解凍して、当該解凍されたデータをクライアントへ送信する、請求項９に記載の中間キャッシュ。
【発明の詳細な説明】
【技術分野】
【０００１】
[0001]本発明は、メモリシステムに関し、より詳細には、圧縮状態ビットキャッシュ及びバッキング記憶装置に関する。
【背景技術】
【０００２】
[0002]従来１つ以上のプロセッサチップ及び付属のメモリデバイスを備えたデータ処理システムでは、性能要求が絶えず高まっている。プロセッサチップは、オンチップデータ処理リソースと、この処理リソースが、オフチップの付属メモリにアクセスできるように構成されたメモリインターフェイス回路とを含む。システム性能は、一般的に、オンチップデータ処理性能と、付属メモリデバイスに利用可能な帯域巾とで決定される。
【０００３】
[0003]利用可能なメモリ帯域巾を増加する１つの技術は、２つ以上のメモリパーティションにわたってメモリアクセスをインターリーブすることである。複数のオンチップクライアントが各パーティション内のメモリをアクセスするときには、全システムスループット又は特定クライアントに対する平均的待ち時間のような特定のパラメータを最適化するように関連アクセス要求をスケジュールすることができる。オンチップデータ処理リソースのようなメモリシステムのクライアントは、スイッチドネットワークを経て１つ以上のメモリパーティションへメモリアクセス要求を掲示する。メモリアクセス要求に関連した物理的アドレスは、所与のパーティションコンフィギュレーションに特有のアドレスマッピングファンクションを使用してローカルパーティションアドレスへと変換される。
【０００４】
[0004]メモリ帯域巾を更に改善するために、あるデータを圧縮フォーマットで記憶することができ、これは、オリジナルデータのブロックを表すのに必要なビットの数を減少する。圧縮フォーマットでオリジナルデータのブロックを記憶するために割り当てられるメモリの量は、非圧縮フォーマットに比して減少されないが、圧縮されたデータブロックを記憶し検索するのに必要なビットの数が減少され、それ故、メモリ帯域巾が減少される。特定アプリケーションの要求や、利用可能な圧縮アルゴリズムのもとでオリジナルデータの特定ブロックを圧縮できるかどうか、に基づいて、複数のロスレス(loss-less)及びロッシー(lossy)の両圧縮フォーマットを使用することができる。各圧縮フォーマットは、好都合にも、付属メモリに記憶されたオリジナルデータのブロックを表すのに必要なビットの数を減少する。しかしながら、特定のビット数、及びどのようにビットを解釈するかは、オリジナルデータのブロックを表すためにどの圧縮フォーマットを使用するかに基づく。各ブロックに関連して選択される圧縮フォーマットは、圧縮可能なメモリの各ブロックに対する圧縮状態ビットによって指示される。付属メモリ内の所与のデータブロックにアクセスするのに必要な帯域巾を最小にするために、プロセッサチップに存在するメモリインターフェイス回路は、付属メモリへのメモリアクセス要求を開始する前にメモリのブロックに関連した圧縮状態ビットを参照する必要がある。
【０００５】
[0005]性能を最大にするためには、メモリインターフェイス回路に圧縮状態ビットが得られることが必要である。その１つの解決策は、ここで圧縮状態ＲＡＭと称されるオンチップランダムアクセスメモリ（ＲＡＭ）に圧縮状態ビットを記憶することを含み、状態ビットは、付属メモリに存在する圧縮可能なメモリの領域内のメモリのブロックへ直接マップされる。この解決策では、圧縮状態ＲＡＭ内の所与の１組の圧縮状態ビットが、付属メモリ内の物理的メモリの直接対応ブロックに対する圧縮状態を指示する。あるパーティション内のメモリインターフェイス回路がメモリアクセス要求を受け取ると、そのメモリインターフェイス回路は、付属メモリへのメモリアクセス要求を開始する前に圧縮状態ＲＡＭに問合せをする。
【０００６】
[0006]データ処理システムの性能が高まり、全体的な能力が拡張するにつれて、全付属メモリもこれまで増加されてきた。オンチップ圧縮状態ＲＡＭは、圧縮可能な付属メモリへ直接マップされるので、付属メモリの量が増加することは、圧縮状態ＲＡＭのサイズの増加を意味する。例えば、付属メモリの量が２倍になると、潜在的に圧縮されるメモリの付加的ブロックを収容するために圧縮状態ＲＡＭのサイズも２倍にしなければならない。しかしながら、圧縮状態ビットのオンチップ記憶装置は、ダイエリアに関して比較的高価であり、又、付属メモリとは異なり、容易に２倍にすることができない。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
[0007]従って、多数の直接マップされるオンチップ圧縮状態ビットを記憶することに関連したダイエリアコストを負うことなくデータ処理システムが多量の付属記憶をサポートできるようにする技術が要望されている。
【課題を解決するための手段】
【０００８】
[0008]本発明の一実施形態は、１つ以上のクライアント及び外部メモリに結合された中間キャッシュであって、少なくとも１つのデータ表面と、外部メモリ内に存在する圧縮情報を記憶するデータ構造体とにアクセスするように構成された中間キャッシュについて述べる。この中間キャッシュは、外部メモリ内に記憶されたメモリのブロックに対する圧縮情報をキャッシュ記憶するように構成された圧縮状態ビットキャッシュと、クライアントからの第１メモリアクセス要求を含むキャッシュミスに応答して、その第１メモリアクセス要求に関連し且つ圧縮状態ビットキャッシュ又はデータ構造体のいずれかに記憶された圧縮情報に基づいて外部メモリから圧縮データを要求するように構成されたデータキャッシュユニットとを備え、圧縮データは、要求されたデータを表すための減少セットのデータを含む。又、中間キャッシュは、クライアントから受け取った第１メモリアクセス要求に関連したコマンドをルーティングするよう構成されたコマンドクロスバーと、その第１メモリアクセス要求に関連したデータをルーティングするように構成されたデータクロスバーを含むこともできる。
【発明の効果】
【０００９】
[0009]ここに開示する中間キャッシュの１つの効果は、作用する圧縮状態ビットバッキング記憶装置の多くが付属メモリにおいてオフチップであるので、多量の付属メモリを、それに対応するダイエリアコストを負うことなく、圧縮可能なメモリブロックとして割り当てできることである。
【００１０】
[0010]本発明の前述した特徴を詳細に理解できるように、概要について簡単に前述した本発明について、幾つかを添付図面に例示している実施形態に関して、以下により特定して説明する。しかしながら、添付図面は、本発明の典型的な実施形態のみを例示したもので、従って、本発明の範囲は、それに限定されるものではなく、本発明は、同等の効果を発揮できる他の実施形態も包含できることに注意されたい。
【図面の簡単な説明】
【００１１】
【図１】本発明の１つ以上の態様を具現化するように構成されたコンピュータシステムを示すブロック図である。
【図２】本発明の一実施形態による図１のコンピュータシステムのためのパラレル処理サブシステムのブロック図である。
【図３Ａ】本発明の一実施形態による図２のＰＰＵの１つの中のＧＰＣのブロック図である。
【図３Ｂ】本発明の一実施形態による図２のＰＰＵの１つの中のパーティションユニットのブロック図である。
【図４】本発明の一実施形態による図３Ｂのレベル２（Ｌ２）キャッシュの概念図である。
【図５】本発明の一実施形態によるバーチャルアドレス／生のパーティションアドレス変換パイプラインの概念図である。
【図６】本発明の一実施形態による圧縮状態ビットキャッシュのための生のパーティションアドレス発生パイプラインの概念図である。
【図７】付属のパラレルプロセッサメモリとのパーティション関連性に対する圧縮状態ビットキャッシュバッキング記憶装置の割り当てを示す。
【発明を実施するための形態】
【００１２】
[0019]以下の説明において、本発明をより完全に理解するために多数の特定の細部について述べる。しかしながら、当業者であれば、１つ以上のこれら特定の細部をもたずに、本発明を実施できることが明らかであろう。他の点について、本発明を不明瞭にしないために、良く知られた特徴は説明しない。
【００１３】
システムの概略
[0020]図１は、本発明の１つ以上の態様を具現化するように構成されたコンピュータシステム１００を示すブロック図である。このコンピュータシステム１００は、中央処理ユニット（ＣＰＵ）１０２と、メモリブリッジ１０５を含むバス経路を経て通信するシステムメモリ１０４とを備えている。例えば、ノースブリッジチップでよいメモリブリッジ１０５は、バス又は他の通信経路１０６（例えば、ハイパートランスポートリンク）を経てＩ／Ｏ（入力／出力）ブリッジ１０７へ接続される。例えば、サウスブリッジチップでよいＩ／Ｏブリッジ１０７は、１つ以上のユーザ入力装置１０８（例えば、キーボード、マウス）からユーザ入力を受け取り、そしてその入力を、経路１０６及びメモリブリッジ１０５を経てＣＰＵ１０２へ転送する。パラレル処理サブシステム１１２がバス又は他の通信経路１１３（例えば、ＰＣＩエクスプレス、アクセラレーテッドグラフィックポート、又はハイパートランスポートリンク）を経てメモリブリッジ１０５へ結合され、一実施形態では、パラレル処理サブシステム１１２は、ディスプレイ装置１１０（例えば、従来のＣＲＴ又はＬＣＤベースのモニタ）へピクセルを配送するグラフィックサブシステムである。システムディスク１１４もＩ／Ｏブリッジ１０７に接続される。スイッチ１１６は、Ｉ／Ｏブリッジ１０７と、他のコンポーネント、例えば、ネットワークアダプタ１１８及び種々のアドインカード１２０及び１２１との間の接続を与える。Ｉ／Ｏブリッジ１０７には、ＵＳＢ又は他のポートコネクタ、ＣＤドライブ、ＤＶＤドライブ、フィルム記録装置、等を含む他のコンポーネント（明確に示されていない）を接続することもできる。図１における種々のコンポーネントを相互接続する通信経路は、任意の適当なプロトコル、例えば、ＰＣＩ（周辺コンポーネント相互接続）、ＰＣＩエクスプレス（ＰＣＩ−Ｅ）、ＡＧＰ（アクセラレーテッドグラフィックポート）、ハイパートランスポート、或いは他のバス又はポイント対ポイント通信プロトコルを使用して具現化されてもよいし、異なる装置間の接続が、この技術で良く知られたように、異なるプロトコルを使用してもよい。
【００１４】
[0021]一実施形態において、パラレル処理サブシステム１１２は、例えば、ビデオ出力回路を含むグラフィック及びビデオ処理に最適な回路を合体して、グラフィック処理ユニット（ＧＰＵ）を構成する。別の実施形態では、パラレル処理サブシステム１１２は、ここで詳細に述べる基礎的な計算アーキテクチャーを維持しながら、汎用処理に対して最適化された回路を合体する。更に別の実施形態では、パラレル処理サブシステム１１２は、１つ以上の他のシステム要素、例えば、メモリブリッジ１０５、ＣＰＵ１０２及びＩ／Ｏブリッジ１０７と一体化されて、システムオンチップ（ＳｏＣ）を形成してもよい。
【００１５】
[0022]ここに示すシステムは、例示に過ぎず、変更や修正が可能であることが明らかである。ブリッジの数及び配列を含む接続トポロジーは、必要に応じて変更されてもよい。例えば、ある実施形態では、システムメモリ１０４は、ブリッジを通さずにＣＰＵ１０２に直結され、他の装置は、メモリブリッジ１０５及びＣＰＵ１０２を経てシステムメモリ１０４と通信する。他の別のトポロジーにおいて、パラレル処理サブシステム１１２は、Ｉ／Ｏブリッジ１０７へ接続されるか、又はメモリブリッジ１０５ではなくＣＰＵ１０２に直結される。更に他の実施形態では、Ｉ／Ｏブリッジ１０７及びメモリブリッジ１０５が単一チップに一体化されてもよい。ここに示す特定のコンポーネントは、任意のものであり、例えば、いかなる数のアドインカード又は周辺装置がサポートされてもよい。ある実施形態では、スイッチ１１６が取り去られ、ネットワークアダプタ１１８及びアドインカード１２０、１２１がＩ／Ｏブリッジ１０７に直結される。
【００１６】
[0023]図２は、本発明の一実施形態によるパラレル処理サブシステム１１２を示す。図示されたように、パラレル処理サブシステム１１２は、１つ以上のパラレル処理ユニット（ＰＰＵ）２０２を備え、その各々がローカルパラレル処理（ＰＰ）メモリ２０４に結合される。一般的に、パラレル処理サブシステムは、多数ＵのＰＰＵを備え、但し、Ｕ≧１である。（ここで、同じオブジェクトの複数のインスタンスは、オブジェクトを識別する参照番号と、必要に応じてインスタンスを識別するかっこ付き番号とで示される。）ＰＰＵ２０２及びパラレル処理メモリ２０４は、１つ以上の集積回路デバイス、例えば、プログラム可能なプロセッサ、特定用途向け集積回路（ＡＳＩＣ）又はメモリデバイスを使用して具現化されてもよいし、或いは他の技術的に実現可能な形態で具現化されてもよい。
【００１７】
[0024]再び図１を参照すれば、ある実施形態において、パラレル処理サブシステム１１２における幾つかの又は全てのＰＰＵ２０２は、ＣＰＵ１０２及び／又はシステムメモリ１０４によりメモリブリッジ１０５及びバス１１３を経て供給されるグラフィックデータからピクセルデータを発生し、ローカルパラレル処理メモリ２０４（例えば、従来のフレームバッファを含むグラフィックメモリとして使用できる）と相互作用して、ピクセルデータを記憶及び更新し、ピクセルデータをディスプレイ装置１１０へ配送し、等々に関連した種々のタスクを遂行するように構成できるレンダリングパイプラインを伴うグラフィックプロセッサである。ある実施形態では、パラレル処理サブシステム１１２は、グラフィックプロセッサとして動作する１つ以上のＰＰＵ２０２、及び汎用の計算に使用される１つ以上の他のＰＰＵ２０２を含んでもよい。ＰＰＵは、同じものでも異なるものでもよく、又、各ＰＰＵは、それ自身の専用のパラレル処理メモリデバイス（１つ又は複数）を有してもよいし、又は専用のパラレル処理メモリデバイス（１つ又は複数）を有していなくてもよい。１つ以上のＰＰＵ２０２がディスプレイ装置１１０へデータを出力してもよいし、又は各ＰＰＵ２０２が１つ以上のディスプレイ装置１１０へデータを出力してもよい。
【００１８】
[0025]動作中に、ＣＰＵ１０２がコンピュータシステム１００のマスタープロセッサとなり、他のシステムコンポーネントのオペレーションを制御し整合させる。特に、ＣＰＵ１０２は、ＰＰＵ２０２のオペレーションを制御するコマンドを発生する。ある実施形態では、ＣＰＵ１０２は、各ＰＰＵ２０２のためのコマンドのストリームをプッシュバッファ（図１又は図２のいずれにも明確に示されていない）へ書き込み、このバッファは、システムメモリ１０４、パラレル処理メモリ２０４、或いはＣＰＵ１０２及びＰＰＵ２０２の両方にアクセス可能な別の記憶位置に配置される。ＰＰＵ２０２は、プッシュバッファからコマンドストリームを読み取り、次いで、ＣＰＵ１０２のオペレーションに対して非同期でコマンドを実行する。
【００１９】
[0026]図２に戻ると、各ＰＰＵ２０２は、メモリブリッジ１０５へ接続される（或いは１つの別の実施形態では、ＣＰＵ１０２へ直結される）通信経路１１３を経てコンピュータシステム１００の残部と通信するＩ／Ｏ（入力／出力）ユニット２０５を備えている。コンピュータシステム１００の残部へのＰＰＵ２０２の接続を変更することもできる。ある実施形態では、パラレル処理サブシステム１１２は、コンピュータシステム１００の拡張スロットへ挿入できるアドインカードとして具現化される。他の実施形態では、ＰＰＵ２０２は、メモリブリッジ１０５又はＩ／Ｏブリッジ１０７のようなバスブリッジと共に単一チップ上に集積化することができる。更に別の実施形態では、ＰＰＵ２０２の幾つかの又は全ての要素をＣＰＵ１０２と共に単一チップ上に集積化することができる。
【００２０】
[0027]一実施形態では、通信経路１１３は、この技術で知られたように各ＰＰＵ２０２に専用レーンが割り当てられたＰＣＩ−Ｅリンクである。他の通信経路を使用することもできる。Ｉ／Ｏユニット２０５は、通信経路１１３を経て送信するためのパケット（又は他の信号）を発生すると共に、通信経路１１３から全ての到来パケット（又は他の信号）を受信して、それら到来パケットをＰＰＵ２０２の適当なコンポーネントに向ける。例えば、処理タスクに関連したコマンドは、ホストインターフェイス２０６に向けることができる一方、メモリオペレーション（例えば、パラレル処理メモリ２０４からの読み取り又はそこへの書き込み）に関連したコマンドは、メモリクロスバーユニット２１０に向けることができる。ホストインターフェイス２０６は、各プッシュバッファを読み取り、又、プッシュバッファにより指定されたワークをフロントエンド２１２へ出力する。
【００２１】
[0028]各ＰＰＵ２０２は、高度なパラレル処理アーキテクチャーを具現化するのが好都合である。詳細に示されたように、ＰＰＵ２０２（０）は、多数Ｃの一般的処理クラスター（ＧＰＣ）２０８を含む処理クラスターアレイ２３０を備え、但し、Ｃ≧１である。各ＧＰＣ２０８は、多数（例えば、数百又は数千）のスレッドを同時に実行することができ、ここで、各スレッドは、プログラムのインスタンスである。種々のアプリケーションにおいて、異なる形式のプログラムを処理するか又は異なる形式の計算を遂行するために異なるＧＰＣ２０８が割り当てられる。例えば、グラフィックアプリケーションでは、テセレーションオペレーションを遂行してパッチに対するプリミティブトポロジーを発生するためにＧＰＣ２０８の第１セットを割り当てることができ、又、テセレーションシェーディングを遂行してプリミティブトポロジーに対してパッチパラメータを評価すると共に、頂点位置及び他の頂点ごとの属性を決定するためにＧＰＣ２０８の第２セットを割り当てることができる。ＧＰＣ２０８の割り当ては、各形式のプログラム又は計算に対して生じるワークロードに基づいて変更し得る。
【００２２】
[0029]ＧＰＣ２０８は、フロントエンドユニット２１２から処理タスクを定義するコマンドを受け取るワーク分配ユニット２００を経て実行されるべき処理タスクを受け取る。処理タスクは、処理されるべきデータ、例えば、表面（パッチ）データ、プリミティブデータ、頂点データ、及び／又はピクセルデータ、並びにどのようにデータを処理すべきか（例えば、どんなプログラムを実行すべきか）を定義する状態パラメータ及びコマンドのインデックスを含む。ワーク分配ユニット２００は、タスクに対応するインデックスをフェッチするように構成されてもよいし、又はワーク分配ユニット２００は、フロントエンド２１２からインデックスを受け取ってもよい。フロントエンド２１２は、プッシュバッファによって指定された処理が開始される前にＧＰＣ２０８が有効な状態へと構成されることを保証する。
【００２３】
[0030]ＰＰＵ２０２が、例えば、グラフィック処理に使用されるときには、各パッチに対する処理ワークロードが、ほぼ等しいサイズのタスクへ分割され、テセレーション処理を複数のＧＰＣ２０８へ分配できるようにする。ワーク分配ユニット２００は、タスクを処理のために複数のＧＰＣ２０８に与えることのできる周波数においてタスクを発生するように構成することができる。対照的に、従来のシステムでは、処理は、典型的に、単一処理エンジンによって遂行され、一方、他の処理エンジンは、それらの処理タスクを開始する前に、単一処理エンジンがそのタスクを完了するのを待機してアイドル状態を保つ。本発明のある実施形態では、ＧＰＣ２０８の各部分は、異なる形式の処理を遂行するように構成される。例えば、第１部分は、頂点シェーディング及びトポロジー発生を遂行するように構成され、第２部分は、テセレーション及び幾何学的シェーディングを遂行するように構成され、更に、第３部分は、スクリーンスペースにおいてピクセルシェーディングを遂行して、レンダリングされた像を形成するように構成することができる。ＧＰＣ２０８により発生される中間データは、その中間データを更なる処理のためにＧＰＣ２０８間で送信できるように、バッファに記憶することができる。
【００２４】
[0031]メモリインターフェイス２１４は、パラレル処理メモリ２０４の一部分に各々直結された多数Ｄのパーティションユニット２１５を含み、但し、Ｄ≧１である。図示されたように、パーティションユニット２１５の数は、一般的に、ＤＲＡＭ２２０の数に等しい。他の実施形態では、パーティションユニット２１５の数は、メモリデバイスの数に等しくなくてもよい。当業者であれば、ＤＲＡＭ２２０は、他の適当な記憶装置と置き換えることができ、一般的に従来設計のものでよいことが明らかであろう。それ故、詳細な説明は省略する。フレームバッファ又はテクスチャマップのようなレンダーターゲットは、ＤＲＡＭ２２０にわたって記憶され、パーティションユニット２１５が各レンダーターゲットの部分をパラレルに書き込み、パラレル処理メモリ２０４の使用可能な帯域巾を効率的に使用できるようにする。
【００２５】
[0032]ＧＰＣ２０８のいずれの１つも、パラレル処理メモリ２０４内の任意のパーティションユニット２１５に書き込まれるべきデータを処理することができる。クロスバーユニット２１０は、各ＧＰＣ２０８の出力を任意のパーティションユニット２１４の入力へ又は別のＧＰＣ２０８へ更なる処理のためにルーティングするように構成される。ＧＰＣ２０８は、クロスバーユニット２１０を通してメモリインターフェイス２１４と通信し、種々の外部メモリ装置から読み取ったり又はそこへ書き込んだりする。一実施形態では、クロスバーユニット２１０は、Ｉ／Ｏユニット２０５と通信するためにメモリインターフェイス２１４への接続を有すると共に、ローカルパラレル処理メモリ２０４への接続を有し、これにより、異なるＧＰＣ２０８内の処理コアが、システムメモリ１０４と通信するか、又はＰＰＵ２０２に対してローカルでない他のメモリと通信できるようにする。クロスバーユニット２１０は、バーチャルチャンネルを使用して、ＧＰＣ２０８とパーティションユニット２１５との間でトラフィックストリームを分離することができる。
【００２６】
[0033]この場合も、ＧＰＣ２０８は、これに限定されないが、直線的及び非直線的データ変換、ビデオ及び／又はオーディオデータのフィルタリング、モデリングオペレーション（例えば、物理の法則を適用して対象物の位置、速度及び他の属性を決定すること）、像レンダリングオペレーション（例えば、テセレーションシェーダー、頂点シェーダー、幾何学的シェーダー及び／又はピクセルシェーダープログラム）、等を含む種々様々なアプリケーションに関する処理タスクを実行するようにプログラムすることができる。ＰＰＵ２０２は、システムメモリ１０４及び／又はローカルパラレル処理メモリ２０４からのデータを内部（オンチップ）メモリへ転送し、そのデータを処理し、そしてそれにより得られるデータをシステムメモリ１０４及び／又はローカルパラレル処理メモリ２０４へ書き戻すことができ、このようなデータは、ＣＰＵ１０２又は別のパラレル処理サブシステム１１２を含む他のシステムコンポーネントによってアクセスすることができる。
【００２７】
[0034]ＰＰＵ２０２には、ローカルメモリを含まない任意の量のローカルパラレル処理メモリ２０４を設けることができ、又、ローカルメモリ及びシステムメモリを任意の組み合わせで使用することもできる。例えば、ＰＰＵ２０２は、統合型メモリアーキテクチャー（ＵＭＡ）実施形態では、グラフィックプロセッサである。このような実施形態では、専用グラフィック（パラレル処理）メモリがほとんど又は全く設けられず、ＰＰＵ２０２は、システムメモリを排他的又はほぼ排他的に使用する。ＵＭＡ実施形態では、ＰＰＵ２０２は、ブリッジチップ又はプロセッサチップに一体化されてもよいし、或いはブリッジチップ又は他の通信手段を経てシステムメモリへＰＰＵ２０２を接続する高速リンク（例えば、ＰＣＩ−Ｅ）をもつ個別のチップとして設けられてもよい。
【００２８】
[0035]上述したように、パラレル処理サブシステム１１２には、いかなる数のＰＰＵ２０２を含ませることもできる。例えば、複数のＰＰＵ２０２を単一のアドインカード上に設けることもできるし、又は複数のアドインカードを通信経路１１３に接続することもできるし、或いは１つ以上のＰＰＵ２０２をブリッジチップに一体化することもできる。マルチＰＰＵシステムにおけるＰＰＵ２０２は、互いに同じものでも異なるものでもよい。例えば、異なるＰＰＵ２０２は、異なる数の処理コア、異なる量のローカルパラレル処理メモリ、等を有してもよい。複数のＰＰＵ２０２が存在する場合には、それらＰＰＵは、単一のＰＰＵ２０２で可能であるよりも高いスループットでデータを処理するためにパラレルに動作させることができる。１つ以上のＰＰＵ２０２を組み込んだシステムは、デスクトップ、ラップトップ、又はハンドヘルドパーソナルコンピュータ、サーバー、ワークステーション、ゲームコンソール、埋め込み型システム、等々を含む種々のコンフィギュレーション及びフォームファクタで具現化することができる。
【００２９】
処理クラスターアレイの概略
[0036]図３Ａは、本発明の一実施形態による図２の１つのＰＰＵ２０２内のＧＰＣ２０８のブロック図である。各ＧＰＣ２０８は、多数のスレッドをパラレルに実行するように構成することができ、ここで、「スレッド」という語は、入力データの特定のセットに対して実行される特定のプログラムのインスタンスを指す。ある実施形態では、複数の独立したインストラクションユニットを設けずに、多数のスレッドのパラレル実行をサポートするために、単一インストラクション多データ（ＳＩＭＤ）のインストラクション発行技術が使用される。他の実施形態では、各１つのＧＰＣ２０８内の処理エンジンのセットへインストラクションを発行するように構成された共通のインストラクションユニットを使用して、多数の一般的に同期されるスレッドのパラレル実行をサポートするために、単一インストラクション多スレッド（ＳＩＭＴ）技術が使用される。全処理エンジンが典型的に同じインストラクションを実行するＳＩＭＤ実行形態とは異なり、ＳＩＭＴ実行は、異なるスレッドが、所与のスレッドプログラムを通じて、発散する実行経路を容易にたどることができるようにする。当業者であれば、ＳＩＭＤ処理形態は、ＳＩＭＴ処理形態の機能的サブセットを表すことが理解されよう。
【００３０】
[0037]グラフィックアプリケーションでは、ＧＰＣ２０８は、これに限定されないが、プリミティブ設定、ラスタ化及びｚカリングを含むスクリーンスペースグラフィック処理ファンクションを遂行するためのプリミティブエンジン３０４を具現化するように構成されてもよい。ある実施形態では、プリミティブエンジン３０４は、Ｌ１キャッシュ３２０のアクセス効率を改善するために、ピクセルをＬ１キャッシュ３２０へ出力する前にピクセルを複数の隣接ピクセルのタイルへと集合させるように構成される。プリミティブエンジン３０４は、ワーク分配ユニット２００から処理タスクを受け取り、そして処理タスクは、それがプリミティブエンジン３０４により遂行されるオペレーションを必要としないときに、プリミティブエンジン３０４を経てパイプラインマネージャー３０５へ通される。ＧＰＣ２０８のオペレーションは、処理タスクをストリーミングマルチプロセッサ（ＳＰＭ）３１０へ分配するパイプラインマネージャー３０５を経て制御されるのが好都合である。又、パイプラインマネージャー３０５は、ＳＰＭ３１０により出力される処理データの行先を指定することにより、ワーク分配クロスバー３３０を制御するように構成することもできる。
【００３１】
[0038]一実施形態では、各ＧＰＣ２０８は、多数ＭのＳＰＭ３１０を含み、但し、Ｍ≧１であり、又、各ＳＰＭ３１０は、１つ以上のスレッドグループを処理するように構成される。又、各ＳＰＭ３１０は、この技術で知られたように、手前のインストラクションが終了する前に新たなインストラクションを発行できるように、パイプライン化できる機能的ユニット（例えば、演算論理ユニット、等々）の同一セットを含むのが好都合である。機能的ユニットの任意の組み合わせを設けることができる。一実施形態では、機能的ユニットは、整数及び浮動小数点演算（例えば、加算及び乗算）、比較演算、ブール演算（ＡＮＤ、ＯＲ、ＸＯＲ）、ビットシフト、及び種々の代数関数（例えば、平面補間、三角関数、指数関数、対数関数、等）の計算を含む様々なオペレーションをサポートし、そして同じ機能的ユニットハードウェアをレバレッジして、異なるオペレーションを遂行することができる。
【００３２】
[0039]特定のＧＰＣ２０８へ送信される一連のインストラクションは、前記で定義したスレッドを構成し、ＳＰＭ３１０内のパラレル処理エンジン（図示せず）にわたるある個数の同時実行スレッドの集合がここで「ワープ」又は「スレッドグループ」と称される。ここで使用する「スレッドグループ」は、異なる入力データに対して同じプログラムを同時に実行するスレッドのグループを指し、グループの１つのスレッドがＳＰＭ３１０内の異なる処理エンジンに指定される。スレッドグループは、ＳＰＭ３１０内の処理エンジンの個数より少ないスレッドを含んでもよく、この場合に、幾つかの処理エンジンは、そのスレッドグループが処理されるときのサイクル中にアイドル状態となる。又、スレッドグループは、ＳＰＭ３１０内の処理エンジンの個数より多いスレッドを含んでもよく、この場合に、連続するクロックサイクルにわたって処理が行われる。各ＳＰＭ３１０がＧ個までのスレッドグループを同時にサポートできるので、いかなる所与の時間にもＧＰＣ２０８ではＧｘＭ個までのスレッドグループを実行できることになる。
【００３３】
[0040]更に、ＳＰＭ３１０内で複数の関連スレッドグループが同時にアクティブなことがある（異なる実行フェーズにおいて）。スレッドグループのこの集合は、ここでは、「協働スレッドアレイ」（ＣＴＡ）と称される。特定のＣＴＡのサイズは、ｍ＊ｋに等しく、但し、ｋは、スレッドグループ内の同時実行スレッドの数で、典型的に、ＳＰＭ３１０内のパラレル処理エンジンの数の整数倍であり、又、ｍは、ＳＰＭ３１０内の同時にアクティブなスレッドグループの数である。ＣＴＡのサイズは、一般的に、プログラマーと、ＣＴＡに使用可能なメモリ又はレジスタのようなハードウェアリソースの量とで決定される。
【００３４】
[0041]各ＳＰＭ３１０は、ロード及び記憶オペレーションを遂行するのに使用される対応Ｌ１キャッシュ３２０内のスペースを使用する。又、各ＳＰＭ３１０は、全てのＧＰＣ２０８間に共有されてスレッド間のデータ転送に使用できるパーティションユニット２１５内のＬ２キャッシュにもアクセスする。最終的に、ＳＰＭ３１０は、例えば、パラレル処理メモリ２０４及び／又はシステムメモリ１０４を含むことのできるオフチップ「グローバル」メモリにもアクセスする。ＰＰＵ２０２の外部のメモリをグローバルメモリとして使用してもよいことを理解されたい。
【００３５】
[0042]グラフィックアプリケーションでは、ＧＰＣ２０８は、例えば、テクスチャサンプル位置を決定し、テクスチャデータを読み取り、テクスチャデータをフィルタリングするようなテクスチャマッピングオペレーションを遂行するために各ＳＰＭ３１０がテクスチャユニット３１５に結合されるように構成できる。テクスチャデータは、Ｌ１キャッシュ３２０から読み取られ、Ｌ２キャッシュ、パラレル処理メモリ２０４、又はシステムメモリ１０４から必要に応じてフェッチされる。各ＳＰＭ３１０は、処理されたタスクをワーク分配クロスバー３３０へ出力し、処理されたタスクを更なる処理のために別のＧＰＣ２０８に与えるか、又は処理されたタスクを、クロスバーユニット２１０を経てＬ２キャッシュ、パラレル処理メモリ２０４又はシステムメモリ１０４に記憶する。カラープレＲＯＰ（プレ・ラスタオペレーション）３２５は、カラー混合のための最適化を遂行し、ピクセルカラーデータを編成し、そしてアドレス変換を遂行するように構成される。
【００３６】
[0043]ここに述べるコアアーキテクチャーは、例示に過ぎず、変更や修正が可能であることが明らかである。いかなる数の処理エンジン、例えば、プリミティブエンジン３０４、ＳＰＭ３１０、テクスチャユニット３１５又はカラープレＲＯＰ３２５がＧＰＣ２０８内に含まれてもよい。更に、１つのＧＰＣ２０８しか示されていないが、ＰＰＵ２０２は、いかなる数のＧＰＣ２０８を含んでもよく、これらＧＰＣは、どのＧＰＣ２０８が特定の処理タスクを受け取るかに実行振舞いが依存しないように、互いに機能的に同様であるのが好都合である。更に、各ＧＰＣ２０８は、別々の個別の処理エンジン、Ｌ１キャッシュ３２０、等を使用して、他のＧＰＣ２０８とは独立して動作するのが好都合である。
【００３７】
[0044]図３Ｂは、本発明の一実施形態による図２の１つのＰＰＵ２０２内のパーティションユニット２１５のブロック図である。図示されたように、パーティションユニット２１５は、Ｌ２キャッシュ３５０、フレームバッファ（ＦＢ）３５５、及びラスタオペレーションユニット（ＲＯＰ）３６０を備えている。Ｌ２キャッシュ３５０は、クロスバーユニット２１０及びＲＯＰ３６０から受け取られるロード及び記憶オペレーションを遂行するように構成された読み取り／書き込みキャッシュである。ある実施形態では、Ｌ２キャッシュ３５０は、ＦＢ３５５の帯域巾の４倍でメモリクロスバーユニット２１０とインターフェイスするために４つ（又はそれより少数）のスライスへと分割される。読み取りミス及び緊急書き戻し要求は、Ｌ２キャッシュ３５０により処理のためにＦＢ３５５へ出力される。不正な更新も、日和見主義的な処理のためにＦＢ３５５へ送信される。ＦＢ３５５は、パラレル処理メモリ２０４と直接インターフェイスし、読み取り及び書き込み要求を出力すると共に、パラレル処理メモリ２０４から読み取られたデータを受け取る。
【００３８】
[0045]グラフィックアプリケーションでは、ＲＯＰ３６０は、ステンシル、ｚテスト、等のラスタオペレーションを遂行し、そしてピクセルデータを処理済みグラフィックデータとして出力してグラフィックメモリに記憶する処理ユニットである。処理済みグラフィックデータは、ディスプレイ装置１１０上に表示されてもよいし、或いはＣＰＵ１０２により又はパラレル処理サブシステム１１２内の処理エンティティの１つにより更に処理するためにルーティングされてもよい。各パーティションユニット２１５は、ラスタオペレーションの処理を分配するためにＲＯＰ３６０を含む。ある実施形態では、ＲＯＰ３６０は、メモリに書き込まれるｚ又はカラーデータを圧縮すると共に、メモリから読み取られたｚ又はカラーデータを解凍するように構成されてもよい。
【００３９】
[0046]当業者であれば、図１、２、３Ａ及び３Ｂについて述べたアーキテクチャーは、本発明の範囲を何ら限定するものではなく、又、ここに教示される技術は、これに限定されないが、１つ以上のＣＰＵ、１つ以上のマルチコアＣＰＵ、１つ以上のＰＰＵ２０２、１つ以上のＧＰＣ２０８、１つ以上のグラフィック又は特殊目的の処理ユニット、等を含む適切に構成された処理ユニットにおいて、本発明の範囲から逸脱せずに、具現化できることが理解されよう。
【００４０】
圧縮状態ビットキャッシュ及びバッキング記憶装置
[0047]図４は、本発明の一実施形態による図３Ｂのレベル２（Ｌ２）キャッシュ３５０の概念図である。このＬ２キャッシュ３５０は、ＲＯＰクロスバー４１０及び１つ以上のＬ２スライス４２０を含む。一実施形態では、４つのＬ２スライス４２０（０）−４２０（３）がＬ２キャッシュ３５０に含まれる。Ｌ２キャッシュ３５０は、クロスバーユニット２１０からメモリアクセス要求を受け取り、そして少なくとも１つのＲＯＰ３６０からメモリアクセス要求を受け取ることができる。メモリアクセス要求は、データ表面に関連したメモリブロックで遂行される読み取り及び書き込みオペレーションを含む。少なくとも１つのＲＯＰ３６０は、メモリアクセス要求をＲＯＰクロスバー４１０へ提示し、このクロスバーは、その要求をＬ２スライス４２０へ配布する。図２のパーティションユニット２１５のような２つ以上のパーティションユニットを伴う処理チップでは、クロスバーユニット２１０は、メモリアクセス要求を、Ｌ２キャッシュ３５０のインスタンスを各々含む２つ以上のパーティションユニットへルーティングする。
【００４１】
[0048]各Ｌ２キャッシュ３５０を伴う各Ｌ２スライス４２０は、コマンドクロスバー４２２、データクロスバー４２４、圧縮状態ビットキャッシュ４２６、及びＬ２データキャッシュ４２８を備えている。コマンドクロスバー４２２は、メモリアクセス要求のコマンド部分を圧縮状態ビットキャッシュ４２６へ向ける。データクロスバー４２４は、クロスバーユニット２１０又はＲＯＰ３６０を経て圧縮状態ビットキャッシュ４２６とメモリクライアントとの間でデータをルーティングする。
【００４２】
[0049]図２のＤＲＡＭ２２０のような外部ＤＲＡＭ内に存在するバッキング記憶装置は、これもＤＲＡＭ内に存在する全ての圧縮メモリブロックの圧縮状態を指示するのに充分な圧縮状態ビットセットを与えねばならないデータ構造を含む。各圧縮状態ビットセットは、フレームバッファ３５５に付属される外部ＤＲＡＭ内に存在するメモリの対応ブロックに対する圧縮状態を指示する。圧縮状態ビットキャッシュ４２６は、バッキング記憶装置からのキャッシュラインを記憶し、各キャッシュラインは、複数の圧縮状態ビットセットを含む。１つ以上のキャッシュラインが、圧縮状態ビットキャッシュ４２６内に配置されたキャッシュデータ記憶装置へと編成される。メモリクライアントからのメモリアクセス要求に関連した圧縮状態ビットセットがキャッシュデータ記憶装置に現在記憶されていない場合には、圧縮状態ビットキャッシュミスが発生される。圧縮状態ビットキャッシュミスに応答して、圧縮状態ビットキャッシュ４２６は、要求された圧縮状態ビットセットを含むキャッシュラインを検索するために、バッキング記憶装置へメモリアクセス要求を発生する。
【００４３】
[0050]一実施形態では、２つのビットで１つの圧縮状態ビットセットを構成し、各圧縮状態ビットセットは、２つのビットで与えられる４つのコード値の１つをとることができる。１つのコード値は、それに対応するメモリブロックが圧縮されないことを指示するのに使用され、一方、残りの３つのコード値の各々は、３つの異なる圧縮フォーマットの１つを指示することができる。
【００４４】
[0051]圧縮状態ビットキャッシュ４２６は、技術的に実現可能なタグ関連スキーム及び技術的に実現可能な立ち退きポリシーを具現化することができる。通常のオペレーションのもとでは、圧縮された表面へのメモリアクセス要求は、要求されたメモリブロックに対する圧縮状態を決定するために圧縮状態ビットキャッシュ４２６を通過する。圧縮状態に基づいて、メモリアクセス要求は、処理のためにＬ２データキャッシュ４２８へ転送される。Ｌ２データキャッシュ４２８におけるキャッシュヒットは、Ｌ２データキャッシュ４２８によりローカルで処理できるが、Ｌ２データキャッシュ４２８にキャッシュミスが生じると、メモリアクセス要求が発生されて、フレームバッファ３５５へ掲示される。技術的に実現可能な置き換えポリシー及びその関連メカニズムをＬ２データキャッシュ４２８内で使用することができる。
【００４５】
[0052]重要なことに、Ｌ２データキャッシュ４２８がミスを生じた場合には、それに対応するキャッシュラインの圧縮表現に必要とされるビット数が、Ｌ２データキャッシュ４２８により要求されるだけでよい。Ｌ２データキャッシュ４２８により開始されるメモリ要求に必要とされるビットの数は、圧縮状態ビットキャッシュ４２６内に存在する圧縮状態ビットセットにより指示される。要求されたメモリブロックの圧縮表現に必要とされるビットしか含まないようにメモリ要求のサイズを限定することにより、ＰＰメモリ２０４に対する帯域巾要求が減少される。
【００４６】
[0053]ＲＯＰ３６０のような幾つかのメモリクライアントは、圧縮を認識し、圧縮データを直接読み取り及び書き込みすることができる。他のクライアントは、圧縮を知らず、圧縮データを直接処理することができない。例えば、図２のＧＰＣ２０８は、一般的に、圧縮データを処理するために装備されていない。圧縮を認知するメモリクライアントが、圧縮メモリブロックへの読み取り又は書き込みオペレーションを要求する場合には、Ｌ２キャッシュ３５０が圧縮データで応答する。しかしながら、圧縮を知らないメモリクライアントが、圧縮メモリブロックからの読み取りを要求する場合には、Ｌ２キャッシュ３５０は、圧縮メモリブロック内のデータを解凍し、その解凍データを、圧縮を知らないメモリクライアントへ返送する。ある場合には、圧縮を知らないメモリクライアントは、所与のメモリブロックへ非圧縮データを書き戻すことしかできない。
【００４７】
[0054]図５は、本発明の一実施形態によるバーチャルアドレス／生のパーティションアドレス変換パイプライン５００の概念図である。このバーチャルアドレス／生のパーティションアドレス変換パイプライン５００は、メモリマネージメントユニット（ＭＭＵ）５２０、物理的アドレス種類のスワップスイズル(swizzle)ユニット（ＰＡＫＳスイズル）５２２、分割器５２４、パーティションアドレスユニット５３０、スライスアドレスユニット５４０、及びＬ２タグＬ２セットユニット５５０を含む。一実施形態では、図２の各ＧＰＵ２０８は、ＭＭＵユニットを含む。
【００４８】
[0055]ＭＭＵ５２０は、バーチャルアドレス５１０を物理的アドレスへマップするのに使用されるページテーブルエントリー（ＰＴＥ）のセットを含む。各ＰＴＥは、バーチャルアドレス／物理的アドレスマッピング情報、表面種類情報、及び圧縮タグライン情報を含むが、これらに限定されない。物理的アドレスは、ＰＡＫＳスイズル５２２により処理されて、スイズル処理された物理的アドレスを発生し、これは、パーティションユニット間で効率的な要求インターリーブを許すためのアクセスローカリティを配布するものである。分割器は、パーティションアドレスユニット５３０、スライスアドレスユニット５４０、及びＬ２タグＬ２セットユニット５５０により使用される商及び残余を発生し、独特のＤＲＡＭアドレスを計算する。パーティションアドレスユニット５３０は、図２の１つのパーティションユニット２１５へ対応メモリアクセス要求をルーティングするのに使用されるパーティションアドレス５３２を計算する。スライスアドレスユニット５４０は、図４の１つの選択されたＬ２スライス４２０へメモリアクセス要求をルーティングするのに使用されるスライスアドレス５４２を計算する。
【００４９】
[0056]Ｌ２タグＬ２セットユニット５５０は、分割器５２４からの商を含むスライス特有の物理的アドレスと、メモリアクセス要求のためのオフセットアドレスとを受け取る。Ｌ２タグＬ２セットユニット５５０は、特定のＤＲＡＭ２２０装置にアクセスするのに使用される生のパーティションアドレスに対応するＬ２タグ及びＬ２セット５５２を計算する。又、Ｌ２タグ及びＬ２セット５５２は、図４のＬ２データキャッシュ４２８に問合せするのにも使用される。
【００５０】
[0057]図６は、本発明の一実施形態による圧縮状態ビットキャッシュのための生のパーティションアドレス発生パイプライン６００の概念図である。圧縮状態ビットキャッシュ（ＣＳＢＣ）ベース６１０は、圧縮状態ビットを記憶するのに使用されるバッキング記憶装置のためのオフセットアドレスを含む。このＣＳＢＣベース６１０にはキャッシュライン数６１２が加算器６２０により演算的に加算されて、スライス特有の物理的アドレスを計算し、これをＬ２タグＬ２セットユニット６３０により処理して、特定のＤＲＡＭ２２０装置にアクセスするのに使用できる生のパーティションアドレスに対応するＬ２タグＬ２セットアドレス６３２を発生することができる。Ｌ２タグＬ２セットユニット６３０は、図５のＬ２タグＬ２セットユニット５５０に対してスライス特有の物理的アドレスについて実質的に同じ計算を遂行する。重要なことに、Ｌ２タグＬ２セットユニット６３０及びＬ２タグＬ２セットユニット５５０の両方は、同じ形態のスライス特有の物理的アドレスを受け取り、スライス特有の物理的アドレスについての実質的に同一のアドレスビット操作を行って、同じ形態の生のパーティションアドレスを発生する。この対称性は、両ユニットが、アドレススペースの衝突を生じることなく同じパーティション内のデータのブロックにアドレスできるようにする。一実施形態では、生のパーティションアドレス発生パイプライン６００が図４の圧縮状態ビットキャッシュ４２６内で具現化される。
【００５１】
[0058]キャッシュライン数６１２は、ＭＭＵ５２０によって発生された圧縮タグライン情報から導出される。キャッシュライン数６１２は、圧縮メモリのブロックを、関連圧縮状態ビットのセットに関連付ける。又、キャッシュライン数６１２は、図４の圧縮状態ビットキャッシュ４２６により使用されるルックアップタグとしても働く。
【００５２】
[0059]図７は、付属のパラレルプロセッサメモリ２０４とのパーティション関連性に対する圧縮状態ビットキャッシュバッキング記憶装置７２０の割り当てを示す。各パーティションユニット２１５は、それに対応するＣＳＢＣバッキング記憶装置７２０に存在する圧縮状態ビットのオンチップキャッシュ記憶形態を与えるように構成された圧縮状態ビットキャッシュ（ＣＳＢＣ）７１０を備えている。各ＣＳＢＣバッキング記憶装置７２０は、それに対応するＤＲＡＭ２２０に存在するデータのブロックへ排他的にマップされねばならない圧縮状態ビットを記憶するように構成される。例えば、ＣＳＢＣバッキング記憶装置７２０（１）は、ＤＲＡＭ２２０（１）へ排他的にマップされねばならない圧縮状態ビットを含む。更に、ＣＳＢＣ７１０（１）は、ＣＳＢＣバッキング記憶装置７２０（１）へ排他的にマップされねばならない圧縮状態ビットをキャッシュ記憶する。対照的に、圧縮された表面７３０及び７４０は、ＰＰメモリ２０４内でＤＲＡＭ２２０（０）からＤＲＡＭ２２０（Ｄ−１）を経て配布されるデータを含む。
【００５３】
[0060]当業者であれば、どのＤＲＡＭ２２０が、同じＤＲＡＭ２２０に存在するデータのブロックに対する圧縮状態ビットを記憶するか限定することにより、クロスバー２１０にわたる顕著な付加的なトラフィックを防止する一方、複数のパーティションにわたって通常のメモリアクセス要求を配布することで得られる向上されたメモリ性能を維持できることが理解されよう。
【００５４】
[0061]要するに、データ処理システムがダイエリアコストを負わずに多量の付属記憶をサポートできるようにするための技術が開示された。圧縮状態ビットキャッシュは、外部メモリに存在するバッキング記憶装置に結合される。圧縮状態ビットは、同じ物理的パーティション内に記憶されるメモリのブロックごとにバッキング記憶装置に記憶される。所与のパーティションに対するバッキング記憶データは、他のパーティションに存在してはならない。パーティションアドレスのエイリアシングを回避するために、バッキング記憶装置内のメモリのブロックが、所与のパーティション内の他の全てのパーティションアドレスに対して使用される同じ再マッピングファンクションに基づき再マップ（スイズル）される。
【００５５】
[0062]本発明の１つの効果は、ワーキング圧縮状態ビットバッキング記憶装置の多くが付属メモリにおいてオフチップであるために対応ダイエリアコストを負うことなく多量の付属メモリを圧縮可能なメモリブロックとして割り当てできることである。又、第２の効果は、この技術が高性能パーティション及びスライスベースのバーチャルメモリアーキテクチャーで動作できることである。
【００５６】
[0063]本発明の一実施形態は、コンピュータシステムに使用するためのプログラム製品として具現化することができる。このプログラム製品のプログラム（１つ又は複数）は、（ここに述べる方法を含めて）実施形態のファンクションを定義し、種々のコンピュータ読み取り可能な記憶媒体にこれを含ませることができる。ここに例示するコンピュータ読み取り可能な記憶媒体は、（ｉ）情報が永久的に記憶される書き込み不能の記憶媒体（例えば、コンピュータ内のリードオンリメモリ装置、例えば、ＣＤ−ＲＯＭドライブにより読み取り可能なＣＤ−ＲＯＭディスク、フラッシュメモリ、ＲＯＭチップ、又は任意の形式のソリッドステート不揮発性半導体メモリ）、及び（ii）変更可能な情報が記憶される書き込み可能な記憶媒体（例えば、ディスケットドライブ又はハードディスクドライブ内のフロッピーディスク、又は任意の形式のソリッドステートランダムアクセス半導体メモリ）を含むが、これらに限定されない。
【００５７】
[0064]特定の実施形態を参照して本発明を上述した。しかしながら、当業者であれば、特許請求の範囲に記載された本発明の広い精神及び範囲から逸脱せずに種々の変更や修正がなされ得ることが理解されよう。従って、前記説明及び添付図面は、単なる例示に過ぎず、それに限定されるものではない。
【符号の説明】
【００５８】
１００・・・コンピュータシステム、１０２・・・中央処理ユニット（ＣＰＵ）、１０３・・・装置ドライバ、１０４・・・システムメモリ、１０５・・・メモリブリッジ、１０６・・・通信経路、１０７・・・Ｉ／Ｏブリッジ、１０８・・・ユーザ入力装置、１１０・・・ディスプレイ装置、１１２・・・パラレル処理サブシステム、１１３・・・通信経路、１１６・・・スイッチ、１１８・・・ネットワークアダプタ、１２０、１２１・・・アドインカード、２００・・・ワーク分配ユニット、２０２・・・パラレル処理ユニット（ＰＰＵ）、２０４・・・パラレル処理（ＰＰ）メモリ、２０５・・・Ｉ／Ｏユニット、２０６・・・ホストインターフェイス、２０８・・・一般的処理クラスター（ＧＰＣ）、２１０・・・クロスバーユニット、２１２・・・フロントエンド、２１４・・・メモリインターフェイス、２３０・・・処理クラスターアレイ、３０５・・・パイプラインマネージャー、３１０・・・ＳＰＭ、３１５・・・テクスチャユニット、３２０・・・Ｌ１キャッシュ、３２５・・・カラープレＲＯＰ、３３０・・・ワーク分配クロスバー、３５０・・・Ｌ２キャッシュ、３５５・・・フレームバッファ（ＦＢ）、３６０・・・ラスタオペレーションユニット（ＲＯＰ）、４１０：ＲＯＰクロスバー、４２０・・・Ｌ２スライス、４２２・・・コマンドクロスバー、４２４・・・データクロスバー、４２６・・・圧縮状態ビットキャッシュ、４２８・・・Ｌ２データキャッシュ、５１０・・・バーチャルアドレス、５２０・・・ＭＭＵ、５２２・・・ＰＡＫＳスイズル、５２４・・・分割器、５３０・・・パーティションアドレス、５３２・・・パーティションアドレス、５４０・・・スライスアドレス、５４２・・・スライスアドレス、５５０・・・Ｌ２タグＬ２セット、５５２・・・Ｌ２タグＬ２セット、６１０・・・ＣＳＢＣベース、６１２・・・キャッシュライン数、６２０・・・加算器、６３０・・・Ｌ２タグＬ２セット、６３２・・・Ｌ２タグＬ２セット
【図１】
2010134929.tif 000003
【図２】
2010134929.tif 000004
【図３Ａ】
2010134929.tif 000005
【図３Ｂ】
2010134929.tif 000006
【図４】
2010134929.tif 000007
【図５】
2010134929.tif 000008
【図６】
2010134929.tif 000009
【図７】
2010134929.tif 000010
【外国語明細書】
2010134929000001.pdf