JP5229968B2 - 複数クラスデータキャッシュポリシー - Google Patents

複数クラスデータキャッシュポリシー Download PDF

Info

Publication number
JP5229968B2
JP5229968B2 JP2009266419A JP2009266419A JP5229968B2 JP 5229968 B2 JP5229968 B2 JP 5229968B2 JP 2009266419 A JP2009266419 A JP 2009266419A JP 2009266419 A JP2009266419 A JP 2009266419A JP 5229968 B2 JP5229968 B2 JP 5229968B2
Authority
JP
Japan
Prior art keywords
data
cache
cache line
tag
entry
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.)
Active
Application number
JP2009266419A
Other languages
English (en)
Other versions
JP2010123130A (ja
Inventor
ビー. グラスコ デイヴィッド
ビー. ホルムクヴィスト ピーター
アール. リンチ ジョージ
アール. マーチャンド パトリック
ロバーツ ジェームス
Original Assignee
エヌヴィディア コーポレイション
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 エヌヴィディア コーポレイション filed Critical エヌヴィディア コーポレイション
Publication of JP2010123130A publication Critical patent/JP2010123130A/ja
Application granted granted Critical
Publication of JP5229968B2 publication Critical patent/JP5229968B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/128Replacement control using replacement algorithms adapted to multidimensional cache systems, e.g. set-associative, multicache, multiset or multilevel
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

[0001]本発明は、全般的にはメモリ管理の分野に関し、より具体的には複数クラスデータキャッシュポリシーに関する。
[0002]ある処理ユニット内のメモリサブシステムの1つの要素は、レベル2キャッシュメモリ(本明細書では「L2キャッシュ」と称する)である。L2キャッシュは、外部メモリ(たとえば、フレームバッファメモリ)とメモリサブシステムの内部クライアント(本明細書では「クライアント」と称する)との間の中間点として働く大きいオンチップメモリである。L2キャッシュは、さまざまなクライアントによって使用されるデータを一時的に格納する。このデータを、外部メモリ(本明細書では「DRAM」と称する)から取り出すか、外部メモリに書き込むことができる。クライアントは、ある種の動作を実行している間にL2キャッシュに格納されたデータを再利用することができる。
[0003]読取り動作中に、クライアントは、現在L2キャッシュに格納されておらず、したがってDRAMから取り出されなければならないデータをL2キャッシュに要求する場合がある。データをDRAMから取り出さなければならない読取り動作は、データがL2キャッシュから直接に取り出される読取り動作より大幅に多くのクロックサイクルで処理される。したがって、全体的なシステム性能は、多数の読取り動作についてデータをDRAMから取り出さなければならない場合に、深刻な影響を受ける可能性がある。しかし、L2キャッシュに割り振られるメモリ空間は限られているので、L2キャッシュに常駐するデータは、クライアントによって送出される将来の読取り動作又は書込み動作用のメモリ空間を解放するために、日常的にエビクト(evict)される必要がある。L2キャッシュに常駐するデータが、十分に頻繁にはエビクトされない場合には、将来の読取り動作及び書込み動作を、これらの動作を処理するためのL2キャッシュ内の空間ができるまでストールさせなければならない。やはり、そのような力学は、全体的なシステム性能に大きく影響する可能性がある。
[0004]従来のエビクション(eviction)方式は、通常、最長時間未使用(least recently used)のデータがキャッシュからエビクトされるポリシーを実施する。しかし、データの使用パターンが変化する、ある種のシステムでは、そのような手法は、将来の読取り動作及び書込み動作のための場所をあけるためにデータをすばやくエビクトすることと、外部メモリへのデータ要求を回避できるようにするためにデータが再利用されるのに十分に長くキャッシュ内に留まることを可能にすることとの間の適当なバランスをとることができない。
[0005]前述に示されているように、当技術分野で必要なものは、L2キャッシュなどの中間キャッシュからどのデータをまずエビクトすべきかを判定する、より効率的な機構である。
[0006]本発明の一実施形態は、1つ又は複数のクライアント及び外部メモリに結合された中間キャッシュからデータをエビクトする方法を示す。この方法は、関連するメモリアドレスを含むコマンドをクライアントから受け取るステップと、メモリアドレスに基づいてコマンドに関連するデータを格納するために中間キャッシュ内の1つ又は複数のキャッシュラインを識別するステップと、1つ又は複数のキャッシュラインに対する相対的なキャッシュミスがあることを判定するステップと、1つ又は複数のキャッシュラインに常駐するデータに関連する1つ又は複数のエビクションクラス(eviction class)に基づいて、1つ又は複数のキャッシュラインに常駐するデータの少なくとも一部をエビクトさせるかコマンドをストールさせるステップとを含み、各エビクションクラスは、エビクションクラスに関連するデータが前記クライアント又は異なるクライアントによって再利用される異なる可能性を反映する。
[0007]開示される方法の1つの利益は、データキャッシュに格納されたデータに関連するデータクラスが、入ってくる読取りコマンド又は書込みコマンドに関連するデータのための場所をあける時に、再利用に関する最も低い可能性を有するデータをタグルックアップユニットがエビクトすることを可能にすることである。データをエビクトするこの機構は、システム内のクライアントによって再利用され得るデータの早期エビクションから生じるキャッシュミスの回数を減らす。
[0008]本発明の上で列挙された特徴を詳細に理解できる形で、上で短く要約された本発明のより特定の説明を、実施形態を参照することによって有することができ、これらの実施形態のいくつかは、添付図面に示されている。しかし、添付図面が、本発明の通常の実施形態のみを示し、したがって、本発明の範囲を限定すると考えられてはならないことに留意されたい。というのは、本発明が、他の同等に有効な実施形態を許すことができるからである。
本発明の1つ又は複数の態様を実施するように構成されたコンピュータシステムを示すブロック図である。 本発明の一実施形態による、図1のコンピュータシステムの並列処理サブシステムを示すブロック図である。 本発明の一実施形態による、図2のPPUのうちの1つの中のGPCを示すブロック図である。 本発明の一実施形態による、図2のPPUのうちの1つの中のパーティションユニットを示すブロック図である。 本発明の一実施形態による、図3Bのパーティションユニットを示す詳細なブロック図である。 本発明の一実施形態による、図4のデータキャッシュに出入りするデータのフローを管理する方法ステップを示す流れ図である。 本発明の一実施形態による、図4のデータキャッシュに出入りするデータのフローを管理する方法ステップを示す流れ図である。 本発明の一実施形態による、図4のデータキャッシュに出入りするデータのフローを管理する方法ステップを示す流れ図である。 本発明の一実施形態による、図4のデータキャッシュに出入りするデータのフローを管理する方法ステップを示す流れ図である。
[0015]次の説明では、本発明のより完全な理解を提供するために、多数の特定の詳細を示す。しかし、本発明をこれらの特定の詳細のうちの1つ又は複数を伴わずに実践できることは、当業者に明白であろう。他の場合には、本発明を不明瞭にすることを避けるために、周知の特徴は説明しない。
システムの概要
[0016]図1は、本発明の1つ又は複数の態様を実施するように構成されたコンピュータシステム100を示すブロック図である。コンピュータシステム100は、バスパスを介しメモリブリッジ105を介して通信する中央処理装置(CPU)102及びシステムメモリ104を含む。メモリブリッジ105を、図1に示されているようにCPU 102に統合することができる。代替案では、メモリブリッジ105を、バスを介してCPU 102に接続された、従来のデバイス、たとえばノースブリッジチップとすることができる。メモリブリッジ105は、通信パス106(たとえば、HyperTransportリンク)を介してI/O(入出力)ブリッジ107に接続される。I/Oブリッジ107は、たとえばサウスブリッジチップとすることができるが、1つ又は複数のユーザ入力デバイス108(たとえば、キーボード、マウス)からユーザ入力を受け取り、その入力をパス106及びメモリブリッジ105を介してCPU 102に転送する。並列処理サブシステム112が、バス又は他の通信パス113(たとえば、PCI Express、Accelerated Graphics Port、又はHyperTransportリンク)を介してメモリブリッジ105に結合され、一実施形態では、並列処理サブシステム112は、ピクセルをディスプレイデバイス110(たとえば、従来のCRT又はLCDベースのモニタ)に送達するグラフィックスサブシステムである。システムディスク114も、I/Oブリッジ107に接続される。スイッチ116は、I/Oブリッジ107と、ネットワークアダプタ118並びにさまざまなアドインカード120及び121などの他のコンポーネントとの間の接続を提供する。USB又は他のポート接続、CDドライブ、DVDドライブ、フィルムレコーディングデバイス、及び類似物を含む他のコンポーネント(明示的には図示せず)をも、I/Oブリッジ107に接続することができる。図1のさまざまなコンポーネントを相互接続する通信パスを、PCI(Peripheral Component Interconnect)、PCI Express(PCI−E)、AGP(Accelerated Graphics Port)、HyperTransport、又は任意の他のバス若しくはポイントツーポイント通信プロトコル(複数可)などの任意の適切なプロトコルを使用して実施することができ、異なるデバイスの間の接続は、当技術分野で既知のように異なるプロトコルを使用することができる。
[0017]一実施形態では、並列処理サブシステム112は、たとえば、ビデオ出力回路網を含む、グラフィックス及びビデオ処理用に最適化された回路網を組み込まれ、グラフィックス処理ユニット(GPU)を構成する。もう1つの実施形態では、並列処理サブシステム112は、本明細書で詳細に説明される、基礎になる計算アーキテクチャを保存しながら汎用処理用に最適化された回路網を組み込まれる。もう1つの実施形態では、並列処理サブシステム112を、メモリブリッジ105、CPU 102、及びI/Oブリッジ107などの1つ又は複数の他のシステム要素と統合して、システムオンチップ(SoC)を形成することができる。
[0018]本明細書で示されるシステムが、例示的であり、変形形態及び修正形態が可能であることを了解されたい。ブリッジの個数及び配置を含む接続トポロジを、望み通りに変更することができる。たとえば、いくつかの実施形態で、システムメモリ104は、ブリッジを介するのではなく直接にCPU 102に接続され、他のデバイスは、メモリブリッジ105及びCPU 102を介してシステムメモリ104と通信する。他の代替トポロジでは、並列処理サブシステム112は、メモリブリッジ105にではなくI/Oブリッジ107又は直接にCPU 102に接続される。さらに他の実施形態では、CPU 102、I/Oブリッジ107、並列処理サブシステム112、及びメモリブリッジ105のうちの1つ又は複数を、1つ又は複数のチップに集積することができる。本明細書で示される特定のコンポーネントは、オプションであり、たとえば、任意の個数のアドインカード又は周辺デバイスをサポートすることができる。いくつかの実施形態では、スイッチ116が除去され、ネットワークアダプタ118並びにアドインカード120及び121は、I/Oブリッジ107に直接に接続される。
[0019]図2に、本発明の一実施形態による、並列処理サブシステム112を示す。図示されているように、並列処理サブシステム112は、1つ又は複数の並列処理ユニット(PPU)202を含み、PPU 202のそれぞれは、ローカル並列処理(PP)メモリ204に結合される。一般に、並列処理サブシステムは、複数U個のPPUを含み、U≧1である(本明細書では、同様のオブジェクトの複数のインスタンスを、オブジェクトを識別する符号及び必要な場合にインスタンスを識別する括弧で括られた数を用いて表す)。PPU 202及び並列処理メモリ204を、プログラマブルプロセッサ、特定用途向け集積回路(ASIC)、又はメモリデバイスなどの1つ又は複数の集積回路デバイスを使用して、或いは任意の他の技術的に実現可能な形で実施することができる。
[0020]もう一度図1を参照すると、いくつかの実施形態で、並列処理サブシステム112内のPPU 202の一部又はすべてが、レンダリングパイプラインを有するグラフィックスプロセッサであり、このレンダリングパイプラインは、CPU 102及び/又はシステムメモリ104によって供給されるグラフィックスデータからのピクセルデータの生成、ピクセルデータを格納し、更新するためのローカル並列処理メモリ204(たとえば従来のフレームバッファを含むグラフィックスメモリとして使用することができる)との相互作用、ディスプレイデバイス110へのピクセルデータの送達、及び類似物に関するさまざまなタスクを実行するように構成され得る。いくつかの実施形態では、並列処理サブシステム112は、グラフィックスプロセッサとして動作する1つ又は複数のPPU 202及び汎用計算に使用される1つ又は複数の他のPPU 202を含むことができる。PPUは、同一又は異なるものとすることができ、各PPUは、それ自体の専用並列処理メモリデバイス(複数可)を有することができ、或いは、専用並列処理メモリデバイス(複数可)を有しないものとすることができる。1つ又は複数のPPU 202が、ディスプレイデバイス110にデータを出力することができ、或いは、各PPU 202が、1つ又は複数のディスプレイデバイス110にデータを出力することができる。
[0021]動作中に、CPU 102は、コンピュータシステム100のマスタプロセッサであり、他のシステムコンポーネントの動作を制御し、調整する。具体的に言うと、CPU 102は、PPU 202の動作を制御するコマンドを発行する。いくつかの実施形態では、CPU 102は、各PPU 202用のコマンドのストリームをコマンドバッファ(図1及び図2のいずれにも明示的には図示せず)に書き込み、このコマンドバッファは、システムメモリ104内、並列処理メモリ204内、又はCPU 102とPPU 202との両方からアクセス可能な別のストレージ位置に配置され得る。PPU 202は、コマンドバッファからコマンドストリームを読み取り、その後、CPU 102の動作に対して相対的に非同期にコマンドを実行する。CPU 102は、PPU 202がコマンドバッファ内のコマンドに応答して読み取ることのできるデータバッファをも作成することができる。各コマンドバッファ及びデータバッファを、PPU 202のそれぞれによって読み取ることができる。
[0022]戻って図2を参照すると、各PPU 202は、I/O(入出力)ユニット205を含み、このI/Oユニット205は、通信パス113を介してコンピュータシステム100の残りと通信し、この通信パス113は、メモリブリッジ105に(又は、1つの代替実施形態では、CPU 102に直接に)接続される。コンピュータシステム100の残りへのPPU 202の接続を、変更することもできる。いくつかの実施形態では、並列処理サブシステム112は、コンピュータシステム100の拡張スロットに挿入できるアドインカードとして実施される。他の実施形態では、PPU 202を、メモリブリッジ105又はI/Oブリッジ107などのバスブリッジと共に単一チップ上に集積することができる。さらに他の実施形態では、PPU 202の一部の又はすべての要素を、CPU 102と共に単一チップ上に集積することができる。
[0023]一実施形態では、通信パス113は、PCI−Eリンクであり、このPCI−Eリンクでは、当技術分野で既知のように、専用レーンが各PPU 202に割り振られる。他の通信パスを使用することもできる。I/Oユニット205は、通信パス113での送信用のパケット(又は他の信号)を生成し、また、通信パス113からのすべての入ってくるパケット(又は他の信号)を受け取り、入ってくるパケットをPPU 202の適当なコンポーネントに向ける。たとえば、処理タスクに関するコマンドを、ホストインターフェース206に向けることができ、メモリ動作(たとえば、並列処理メモリ204からの読取り又はこれへの書込み)に関するコマンドを、メモリクロスバーユニット210に向けることができる。ホストインターフェース206は、各コマンドバッファを読み取り、コマンドバッファによって指定される作業をフロントエンド212に出力する。
[0024]各PPU 202は、高並列処理アーキテクチャ(highly parallel processing architecture)を有利に実施する。詳細に示されているように、PPU 202(0)は、複数C個の一般処理クラスタ(GPC)208を含む処理クラスタアレイ230を含み、ここで、C≧1である。各GPC 208は、多数(たとえば、数百個又は数千個)のスレッドを同時に実行することができ、ここで、各スレッドは、プログラムのインスタンスである。さまざまな応用例では、異なるGPC 208を、異なるタイプのプログラムを処理するために又は異なるタイプの計算を実行するために割り振ることができる。たとえば、グラフィックス応用例では、GPC 208の第1セットを、テッセレーション動作を実行し、パッチのプリミティブトポロジを作るために割り振ることができ、GPC 208の第2セットを、プリミティブトポロジのパッチパラメータを評価するためにテッセレーションシェーディングを実行し、頂点位置及び他の頂点ごとの属性を判定するために割り振ることができる。GPC 208の割り振りは、プログラム又は計算のタイプごとに生じる作業負荷に依存して変更することができる。代替案では、GPC 208を、異なる処理タスクの間で切り替えるのにタイムスライス方式を使用して処理タスクを実行するために割り振ることができる。
[0025]GPC 208は、作業分配ユニット200を介して、実行すべき処理タスクを受け取り、この作業分配ユニット200は、処理タスクを定義するコマンドをフロントエンドユニット212から受け取る。処理タスクは、処理されるデータ、たとえば、表面(パッチ)データ、プリミティブデータ、頂点データ、及び/又はピクセルデータ、並びに状態パラメータ及びデータをどのように処理すべきか(たとえば、どのプログラムを実行すべきか)を定義するコマンドへのポインタを含む。作業分配ユニット200は、処理タスクに対応するポインタをフェッチするように構成されてもよく、フロントエンド212からポインタを受け取ってもよく、或いは、フロントエンド212から直接にデータを受け取ってもよい。いくつかの実施形態では、インデックスが、アレイ内のデータの位置を指定する。フロントエンド212は、コマンドバッファによって指定される処理が開始される前に、GPC 208が有効な状態に構成されることを保証する。
[0026]PPU 202が、グラフィックス処理に使用されるときに、たとえば、各パッチの処理作業負荷は、複数のGPC 208へのテッセレーション処理の分配を可能にするために、ほぼ等しいサイズのタスクに分割される。作業分配ユニット200を、処理のために複数のGPC 208にタスクを供給できる周波数でタスクを出力するように構成することができる。本発明のいくつかの実施形態では、GPC 208の諸部分は、異なるタイプの処理を実行するように構成される。たとえば、第1部分を、頂点シェーディング及びトポロジ生成を実行するように構成することができ、第2部分を、テッセレーション及び幾何シェーディングを実行するように構成することができ、第3部分を、レンダリングされたイメージを作るためにスクリーン空間内でピクセルシェーディングを実行するように構成することができる。異なるタイプの処理タスクを実行するためにGPC 208の諸部分を割り振る能力は、これらの異なるタイプの処理タスクによって作られるデータのすべての膨張及び収縮に効率的に対処する。GPC 208によって作られる中間データをバッファリングして、データが下流GPC 208によって受け入れられるレートがデータが上流GPC 208によって作られるレートに遅れる場合に、最小限のストールを伴って、中間データがGPC 208の間で伝送されることを可能にすることができる。
[0027]メモリインターフェース214を、並列処理メモリ204の部分にそれぞれが結合される複数D個のメモリパーティションユニットに区分することができ、ここで、D≧1である。並列処理メモリ204の各部分は、一般に、1つ又は複数のメモリデバイス(たとえば、DRAM 220)を含む。当業者は、DRAM 220を他の適切なストレージデバイスに置換することができ、DRAM 220を全体的に従来の設計とすることができることを了解するであろう。したがって、詳細な説明は省略する。フレームバッファ又はテクスチャマップなどのレンダターゲットを、DRAM 220にまたがって格納し、パーティションユニット215が並列処理メモリ204の使用可能帯域幅を効率的に使用するために各レンダターゲットの諸部分を並列に書き込むことを可能にすることができる。
[0028]GPC 208のいずれもが、並列処理メモリ204内のパーティションユニット215のいずれかに書き込まれるデータを処理することができる。クロスバーユニット210は、各GPC 208の出力を、さらなる処理のために任意のパーティションユニット214の入力又は別のGPC 208にルーティングするように構成される。GPC 208は、クロスバーユニット210を介してメモリインターフェース214と通信して、さまざまな外部メモリデバイスから読み取り、或いはこれらに書き込む。一実施形態では、クロスバーユニット210は、I/Oユニット205と通信するためのメモリインターフェース214への接続、並びにローカル並列処理メモリ204への接続を有し、これによって、異なるGPC 208内の処理コアがシステムメモリ104又はPPU 202にローカルではない他のメモリと通信することを可能にする。クロスバーユニット210は、仮想チャネルを使用して、GPC 208とパーティションユニット215との間のトラフィックストリームを分離することができる。
[0029]やはり、GPC 208をプログラムして、線形及び非線形のデータ変換、ビデオ及び/又はオーディオデータのフィルタリング、モデリング動作(たとえば、オブジェクトの位置、速度、及び他の属性を判定するための物理法則の適用)、イメージレンダリング動作(たとえば、テッセレーションシェーダ、頂点シェーダ、幾何シェーダ、及び/又はピクセルシェーダプログラム)などを含むがこれらに限定はされないさまざまな応用に関する処理タスクを実行することができる。PPU 202は、システムメモリ104及び/又はローカル並列処理メモリ204から内部(オンチップ)メモリにデータを転送し、そのデータを処理し、結果をシステムメモリ104及び/又はローカル並列処理メモリ204に戻って書き込むことができ、システムメモリ104及び/又はローカル並列処理メモリ204では、そのようなデータに、CPU 102又は別の並列処理サブシステム112を含む他のシステムコンポーネントによってアクセスすることができる。
[0030]PPU 202に、ローカルメモリなしを含む、任意の量のローカル並列処理メモリ204を与えることができ、PPU 202は、ローカルメモリ及びシステムメモリを任意の組合せで使用することができる。たとえば、PPU 202を、ユニファイドメモリアーキテクチャ(UMA)実施形態でグラフィックスプロセッサとすることができる。そのような実施形態では、専用のグラフィックス(並列処理)メモリがほとんど又は全く設けられず、PPU 202は、システムメモリを排他的に又はほとんど排他的に使用する。UMA実施形態では、PPU 202を、ブリッジチップ若しくはプロセッサチップに統合することができ、或いは、ブリッジチップ又は他の通信手段を介してPPU 202をシステムメモリに接続する高速リンク(たとえば、PCI−E)を有するディスクリートチップとして提供することができる。
[0031]上で注記したように、任意の個数のPPU 202を、並列処理サブシステム112に含めることができる。たとえば、複数のPPU 202を、単一のアドインカード上に設けることができ、或いは、複数のアドインカードを、通信パス113に接続することができ、或いは、1つ又は複数のPPU 202を、ブリッジチップに統合することができる。マルチPPUシステム内のPPU 202は、互いに同一又は異なるものとすることができる。たとえば、異なるPPU 202が、異なる個数の処理コア、異なる量のローカル並列処理メモリなどを有することができる。複数のPPU 202が存在する場合に、これらのPPUを、並列に動作させて、単一のPPU 202を用いて可能なものより高いスループットでデータを処理することができる。1つ又は複数のPPU 202を組み込んだシステムを、デスクトップパーソナルコンピュータ、ラップトップパーソナルコンピュータ、又はハンドヘルドパーソナルコンピュータ、サーバ、ワークステーション、ゲーム機、組み込みシステム、及び類似物を含むさまざまな構成及びフォームファクタで実施することができる。
処理クラスタアレイの概要
[0032]図3Aは、本発明の一実施形態による、図2のPPU 202のうちの1つの中のGPC 208のブロック図である。各GPC 208を、多数のスレッドを並列に実行するように構成することができ、ここで、用語「スレッド」は、入力データの特定のセットに対して実行される特定のプログラムのインスタンスを指す。いくつかの実施形態で、単一命令複数データ(SIMD)命令発行技法が、複数の独立の命令ユニットを提供せずに多数のスレッドの並列実行をサポートするのに使用される。他の実施形態では、単一命令複数スレッド(SIMT)技法が、GPC 208の各1つの中の処理エンジンのセットに命令を発行するように構成された共通命令ユニットを使用する、多数の全般的に同期化されたスレッドの並列実行をサポートするのに使用される。すべての処理エンジンが通常は同一の命令を実行するSIMD実行体制とは異なって、SIMT実行は、異なるスレッドが所与のスレッドプログラムを通る分岐する実行パスにより簡単に従うことを可能にする。当業者は、SIMD処理体制が、SIMT処理体制の機能サブセットを表すことを理解するであろう。
[0033]グラフィックス応用では、GPC 208を、プリミティブセットアップ、ラスタ化、及びz枝刈りを含むことができるがこれらに限定はされないスクリーン空間グラフィックス処理機能を実行するプリミティブエンジンを実施するように構成することができる。プリミティブエンジンは、作業分配ユニット200から処理タスクを受け取り、処理タスクがプリミティブエンジンによって実行される動作を必要としないときには、処理タスクは、プリミティブエンジンを通ってパイプラインマネージャ305に渡される。GPC 208の動作は、処理タスクをストリーミングマルチプロセッサ(SPM)310に分配するパイプラインマネージャ305を介して有利に制御される。パイプラインマネージャ305を、SPM 310によって出力される処理されたデータの宛先を指定することによって、作業分配クロスバ330を制御するように構成することもできる。
[0034]一実施形態では、各GPC 208は、複数M個のSPM 310を含み、ここで、M≧1であり、各SPM 310は、1つ又は複数のスレッドグループを処理するように構成される。また、各SPM 310は、パイプライン化することのできる機能ユニット(たとえば、算術論理ユニットなど)の同一のセットを有利に含み、当技術分野で既知のように、前の命令を終了する前に新しい命令を発行することを可能にする。機能ユニットの任意の組合せを提供することができる。一実施形態では、機能ユニットは、整数算術及び浮動小数点算術(たとえば、加算及び乗算)、比較演算、ブール演算(AND、OR、XOR)、ビットシフト、及びさまざまな代数関数(たとえば、線形補間、三角関数、指数関数、及び対数関数など)の計算を含むさまざまな演算をサポートし、同一の機能ユニットハードウェアを活用して、異なる演算を実行することができる。
[0035]特定のGPC 208に送られる一連の命令は、本明細書で前に定義したようにスレッドを構成し、あるSPM 310内の並列処理エンジン(図示せず)にまたがるある個数の同時に実行されるスレッドの集合を、本明細書では「スレッドグループ」と称する。本明細書で使用される時に、「スレッドグループ」は、異なる入力データに対して同一のプログラムを同時に実行するスレッドのグループを指し、グループの各スレッドは、あるSPM 310内の異なる処理エンジンに割り当てられる。スレッドグループは、SPM 310内の処理エンジンの個数より少数のスレッドを含むことができ、その場合に、いくつかの処理エンジンは、そのスレッドグループが処理されている時のサイクル中にアイドルになる。スレッドグループは、SPM 310内の処理エンジンの個数より多数のスレッドを含むこともでき、その場合に、処理は、複数のクロックサイクルにまたがって行われる。各SPM 310は、G個までのスレッドグループを同時にサポートすることができるので、G×M個のスレッドグループを、任意の所与の時にGPC 208内で実行していることができることになる。
[0036]排他的ローカルアドレス空間が、各スレッドから使用可能であり、共有されるCTAごとのアドレス空間が、CTA内のスレッドの間でデータを渡すのに使用される。スレッドごとのローカルアドレス空間及びCTAごとのアドレス空間に格納されたデータは、L1キャッシュ320に格納され、エビクションポリシー(eviction policy)を使用して、L1キャッシュ320内のデータを保存することを優先することができる。各SPM 310は、ロード動作及びストア動作を実行するのに使用される対応するL1キャッシュ320内の空間を使用する。各SPM 310は、すべてのGPC 208の間で共有され、スレッドの間でデータを転送するのに使用され得るパーティションユニット215内のL2キャッシュにもアクセスできる。最後に、SPM 310は、オフチップ「グローバル」メモリにもアクセスでき、このオフチップ「グローバル」メモリは、たとえば、並列処理メモリ204及び/又はシステムメモリ104を含むことができる。L2キャッシュを使用して、グローバルメモリに書き込まれ、これから読み取られるデータを格納することができる。PPU 202の外部のすべてのメモリを、グローバルメモリとして使用できることを理解されたい。
[0037]グラフィックス応用では、GPC 208を、各SPM 310がテクスチャマッピング動作、たとえばテクスチャサンプル位置の判定、テクスチャデータの読取り、及びテクスチャデータのフィルタリングを実行するためにテクスチャユニット315に結合されるように構成することができる。テクスチャデータは、必要に応じて、メモリインターフェース214を介して読み取られ、L2キャッシュ、並列処理メモリ204、又はシステムメモリ104からフェッチされる。テクスチャユニット315を、内部キャッシュにテクスチャデータを格納するように構成することができる。いくつかの実施形態では、テクスチャユニット315は、L1キャッシュ320に結合され、テクスチャデータは、L1キャッシュ320に格納される。各SPM 310は、処理されたタスクをさらなる処理のために別のGPC 208に供給するために、又はクロスバーユニット210を介して、L2キャッシュ、並列処理メモリ204、若しくはシステムメモリ104に処理されたタスクを格納するために、処理されたタスクを作業分配クロスバ330に出力する。プリROP(プリラスタ演算)325は、SPM 310からデータを受け取り、データをパーティションユニット215内のROPユニットに向け、カラーブレンディングに関する最適化を実行し、ピクセルカラーデータを編成し、アドレス変換を実行する。
[0038]本明細書で説明されるコアアーキテクチャが、例示的であり、変形形態及び修正形態が可能であることを了解されたい。任意の個数の処理エンジン、たとえばプリミティブエンジン304、SPM 310、テクスチャユニット315、又はプリROP325を、GPC 208内に含めることができる。さらに、1つのGPC 208だけが図示されているが、PPU 202は、任意の個数のGPC 208を含むことができ、このGPC 208は、有利なことに機能的に互いに類似し、その結果、実行挙動は、どのGPC 208が特定の処理タスクを受け取るかに依存しなくなる。さらに、各GPC 208は、別々の別個の処理エンジン、L1キャッシュ320などを使用して、他のGPC 208と独立に有利に動作する。
[0039]図3Bは、本発明の一実施形態による、図2のPPU 202のうちの1つの中のパーティションユニット215のブロック図である。図示されているように、パーティションユニット215は、L2キャッシュ350、フレームバッファ(FB)355、及びラスタ演算ユニット(ROP)360を含む。L2キャッシュ350は、クロスバーユニット210及びROP 360から受け取られるロード動作及びストア動作を実行するように構成された読取り/書込みキャッシュである。読取りミス及び緊急のライトバック要求が、処理のためにL2キャッシュ350によってFB 355に出力される。ダーティ更新も、日和見主義の処理のためにFB 355に送られる。FB 355は、並列処理メモリ204と直接にインターフェースし、読取り要求及び書込み要求を出力し、並列処理メモリ204から読み取られたデータを受け取る。
[0040]グラフィックス応用で、ROP 360は、ステンシル、zテスト、ブレンディング、及び類似物などのラスタ演算を実行し、グラフィックスメモリでの格納のために処理されたグラフィックスデータとしてピクセルデータを出力する、処理ユニットである。本発明のいくつかの実施形態では、ROP 360は、パーティションユニット215ではなく各GPC 208内に含まれ、ピクセルフラグメントデータではなくピクセル読取り要求及びピクセル書込み要求が、クロスバーユニット210を介して送られる。
[0041]処理されたグラフィックスデータを、ディスプレイデバイス110に表示するか、CPU 102又は並列処理サブシステム112内の処理エンティティのうちの1つによるさらなる処理のためにルーティングすることができる。各パーティションユニット215は、ラスタ演算の処理を分散するためにROP 360を含む。いくつかの実施形態では、ROP 360を、メモリに書き込まれるzデータ又はカラーデータを圧縮し、メモリから読み取られるzデータ又はカラーデータを伸長するように構成することができる。
[0042]当業者は、図1、2、3A、及び3Bに記載されたアーキテクチャが、決して本発明の範囲を限定しないことと、本明細書で教示される技法を、本発明の範囲から逸脱せずに、1つ又は複数のCPU、1つ又は複数のマルチコアCPU、1つ又は複数のPPU 202、1つ又は複数のGPC 208、1つ又は複数のグラフィックス処理ユニット又は特殊目的処理ユニット、或いは類似物を限定なしに含むすべての正しく構成された処理ユニットで実施できることとを理解するであろう。
データクラスベースのエビクションポリシー
[0043]図4は、本発明の一実施形態による、図3Bのパーティションユニット215の詳細なブロック図である。図示されているように、パーティションユニット215は、L2キャッシュ350、FB 355、及びROP 360を含む。L2キャッシュ350は、L2キャッシュスライス402を含む。図3Bに関連して説明したように、L2キャッシュ350を、読取りコマンド及び書込みコマンドのより効率的な処理のために複数のスライスに分割することができる。L2キャッシュスライス402は、L2キャッシュ350の1つのそのようなスライスである。L2キャッシュスライス402は、クロスバコマンドバッファ404、ROPコマンドバッファ406、アービタ408、タグルックアップユニット410、タグストア412、データキャッシュ414、読取りデータバッファ416、及び書込みデータバッファ418を含む。
[0044]動作中に、L2キャッシュスライス402は、GPC 208及びROP 360など、並列処理サブシステム112内のさまざまなクライアントから読取りコマンド及び書込みコマンドを受け取る。GPC 208から受け取られる読取りコマンド及び書込みコマンドは、クロスバーユニット210を介して送られる。書込みコマンドの場合には、書込みコマンドに関連するデータも、L2キャッシュスライス402に送られる。
[0045]L2キャッシュスライス402によって受け取られる各読取りコマンド又は各書込みコマンドは、データキャッシュ414内のキャッシュラインのセットに関連するメモリアドレスを含み、ここに、読取りコマンド又は書込みコマンドに関連するデータを格納することができる。一実施形態では、データキャッシュ414は、物理的にインデクシングされタグ付けされる64KBのセットアソシアティブデータキャッシュである。データキャッシュ414は、4つのセグメントに分割され、各セグメントは、32個のロウを有し、各ロウは、32Bの16個のキャッシュラインを有する。キャッシュラインは、読取りコマンド及び書込みコマンドに関連するデータが格納される、データキャッシュ414内の物理位置である。任意の所与のクロックサイクルに、データキャッシュ414内のキャッシュラインは、空である場合があり、常駐データを含む場合があり、或いは、進行中のコマンドのために予約されている場合がある。本発明の一実施形態では、コマンドに関連するデータのサイズに起因して、複数のキャッシュラインが、コマンドに関連するデータを格納するために予約される必要がある場合がある。本明細書で説明する技法は、複数のキャッシュラインに格納されなければならないデータに簡単に拡張することができる。
[0046]L2キャッシュスライス402によって受け取られる読取りコマンド又は書込みコマンドは、受け取られたコマンドに関連するデータのデータクラスをも含む。コマンドに関連するデータのデータクラスは、特定のコマンドを送るクライアントによって決定され、本明細書でより詳細に説明するように、並列処理サブシステム112内でのそのデータの再利用可能性を反映する。
[0047]クロスバコマンドバッファ404は、クロスバーユニット210に結合され、異なるGPC 208からクロスバーユニット210を介して読取りコマンド及び書込みコマンドを受け取るように構成される。ROPコマンドバッファ406は、ROP 360に結合され、ROP 360から読取りコマンド及び書込みコマンドを受け取るように構成される。クロスバコマンドバッファ404及びROPコマンドバッファ406は、FIFO(先入れ先出し)バッファである、すなわち、これらのコマンドバッファによって受け取られたコマンドは、コマンドがクロスバーユニット210又はROP 360から受け取られる順序で出力される。クロスバコマンドバッファ404及びROPコマンドバッファ406は、アービタ408にも結合される。アービタ408は、クロスバコマンドバッファ404又はROPコマンドバッファ406から所与のコマンドを選択し、選択されたコマンドを処理のためにタグルックアップユニット410に送るのに、標準的なアービトレーション技法を使用するように構成される。
[0048]タグルックアップユニット410は、アービタ408から受け取られたコマンドに関連するデータに関してデータキャッシュ414内にキャッシュライン可用性があるかどうかを判定するように構成される。タグルックアップユニット410は、可能な場合に、データキャッシュ414内に常駐するデータをエビクトさせることによって、新たに受け取られた読取りコマンド又は書込みコマンドに関連するデータのためにキャッシュラインを使用可能にするようにも構成される。データキャッシュ414内の1つ又は複数のキャッシュラインがそのようなデータのために使用可能になった後に、タグルックアップユニット410は、コマンドに関連するデータのためにデータキャッシュ414内の識別されたキャッシュラインを予約するように構成される。
[0049]データキャッシュ414内の各キャッシュラインは、タグストア412内に対応するエントリを有し、タグストア内の各エントリは、状態部分及びタグ部分を含む。タグストア内のエントリの状態部分は、そのエントリに対応するキャッシュラインの特定の状態を示す。エントリの状態部分は、有効(volid)、ダーティビット(dirty bit)、及びピンドビット(pinned bit)を含む。セットされている時に、有効ビットは、その特定のエントリに対応するキャッシュラインが有効なデータを格納することを示す。セットされている時に、ダーティビットは、その特定のエントリに対応するキャッシュラインがダーティデータを格納することを示す。セットされている時に、ピンドビットは、その特定のエントリに対応するキャッシュラインがピンドデータ(pinned data)すなわち、L2キャッシュ350によって現在使用されつつあるデータを格納することを示す。エントリのタグ部分は、その特定のエントリに関連するキャッシュライン内に格納されたデータのデータクラスを含む。本明細書で前に示したように、L2キャッシュ350のキャッシュセマンティクスは、3つのデータクラスすなわちevict_first(最初にエビクト)、evict_normal(通常のエビクト)、及びevict_last(最後にエビクト)を含むように拡張される。evict_firstデータクラスに属するデータキャッシュ414内のキャッシュライン内に格納されたデータは、通常、L2キャッシュ350を使用するクライアントのいずれかによる再利用可能性をほとんど又は全く有しない。再利用の低い可能性のゆえに、このデータを、後続キャッシュミスを引き起こす高いリスクを伴わずに、他のデータのために場所をあけるためにデータキャッシュ414からすばやくエビクトすることができる。evict_normalデータクラスに属するデータキャッシュ414内のキャッシュライン内に格納されたデータは、通常、L2キャッシュ350を使用するクライアントによる再利用可能性を多少有する。再利用可能性のゆえに、このデータを、多数の後続キャッシュミスを引き起こさずに、evict_firstデータクラスに属するデータより低い優先順位でエビクトすることができる。evict_lastデータクラスに属するデータキャッシュ414内のキャッシュライン内に格納されたデータは、通常、L2キャッシュ350を使用するクライアントによる高い再利用可能性を有する。再利用の高い可能性のゆえに、このデータを、他のデータのために場所をあけるためにデータキャッシュ414からエビクトしてはならない。というのは、これが、後続キャッシュミスの高いリスクをもたらすからである。他の実施形態では、L2キャッシュ350セマンティクスを、並列処理サブシステム112の要件に基づいて他のデータクラスを含むように拡張することができる。
[0050]キャッシュラインに格納されたデータは、「クリーン(clean)」又は「ダーティ(dirty)」、及び「ピンド(pinned)」又は「アンピンド(unpinned)」としても分類される。格納されたデータは、そのデータが並列処理メモリ204内の対応するデータとコヒーレントである場合に、クリーンであると考えられる。格納されたデータは、そのデータが並列処理メモリ204内の対応するデータとコヒーレントではない場合に、ダーティであると考えられる。周知のとおり、ダーティデータは、エビクトされる前にクリーンにされなければならない。アンピンドデータ(unpinned data)は、現在使用されつつあるのではない、データキャッシュ414のキャッシュラインに格納されたデータを構成する。ピンドデータは、L2によって現在使用されつつある、データキャッシュ414のキャッシュラインに格納されたデータを構成する。ピンドデータは使用中なので、このデータをエビクトしてはならない。常駐データを有するデータキャッシュ414内のキャッシュラインに関連するタグストア412内のエントリの有効ビットは、セットされる。常駐データを有しないデータキャッシュ414内のキャッシュラインに関連するタグストア412内のエントリの有効ビットは、クリアされる。
[0051]読取りコマンドの場合に、読取りデータバッファ416は、データキャッシュ414から受け取られた処理された読取りコマンドに関連するデータが、場合に応じてクロスバーユニット210又はROP 360を介してGPC 208に送り返されるまで、そのデータを格納するように構成される。書込みコマンドの場合に、書込みデータバッファ418は、場合に応じてクロスバーユニット210又はROP 360を介してGPC 208から受け取られた書込みコマンドに関連するデータがデータキャッシュ414内の対応する予約されたキャッシュラインに送られるまで、そのデータを格納するように構成される。
[0052]本明細書で前に示したように、アービタ408からコマンドを受け取る時に、タグルックアップユニット410は、受け取られたコマンドに関連するデータが潜在的に格納されている可能性があるデータキャッシュ414内のキャッシュラインのセットを識別するように構成される。キャッシュラインのこのセットは、本明細書では「識別されたキャッシュライン」と称するが、標準的なセットアソシアティブキャッシング技法を使用して読取りコマンド又は書込みコマンドに含まれるメモリアドレスに基づいて判定される(このメモリアドレスは、データがそこから読み取られる又はデータが最終的にそこに書き込まれる、並列処理メモリ204内の実際の位置を示す)。読取りコマンドの場合に、タグルックアップユニット410は、次に、コマンドに関連するデータが識別されたキャッシュラインのうちの1つに現在常駐しているかどうかを判定する。そうである場合には(これはキャッシュヒットがあることを意味する)、タグルックアップユニット410は、要求されたデータをデータキャッシュ414から読取りデータバッファ416に送らせ、読取りデータバッファ416では、データが要求するクライアントに返されるまで、データが格納される。書込みコマンドの場合に、タグルックアップユニット410は、まず、コマンドに関連するデータが、識別されたキャッシュラインのうちの1つに現在常駐しているデータを上書きできるかどうかを判定する。そうである場合には(やはりキャッシュヒットがあることを意味する)、タグルックアップユニット410は、書込みデータバッファ418内に格納されたコマンドに関連するデータを、データキャッシュ414の関連する位置に書き込ませる。
[0053]キャッシュミスの場合(コマンドに関連するデータが識別されたキャッシュラインのうちの1つに常駐しない(読取りコマンドの場合)又はそれに書き込めない(書込みコマンドの場合)ことを意味する)に、タグルックアップユニット410は、識別されたキャッシュラインのうちの1つが空であるかどうかを判定する。識別されたキャッシュラインのうちの1つが空である場合には、タグルックアップユニット410は、読取りコマンド又は書込みコマンドに関連するデータのために、その空のキャッシュラインを予約する。識別されたキャッシュラインのどれもが空ではない場合には、タグルックアップユニット410は、識別されたキャッシュラインに常駐するデータのデータクラスに基づいて、一連のキャッシュエビクションポリシーを実施する。
[0054]タグルックアップ410ユニットは、まず、識別されたキャッシュラインのそれぞれに関連するタグストア412内のエントリを調べて、キャッシュラインのいずれかが、クリーン、アンピンド、及びevict_firstである常駐データを有するかどうかを判定する。クリーン、アンピンド、及びevict_firstである常駐データを有するキャッシュラインに関連するタグストア412内のエントリの状態部分は、セットされた有効ビット、クリアされたダーティビット、及びクリアされたピンドビットを有しなければならない。そのようなエントリのタグ部分は、関連するキャッシュラインに格納されたデータがevict_firstデータクラスに属することを示さなければならない。そのようなキャッシュラインが存在する場合には、タグルックアップユニット410は、最長時間未使用のクリーン、アンピンド、及びevict_firstのデータをデータキャッシュ414からエビクトする。データをエビクトした後に、タグルックアップユニット410は、結果の空のキャッシュラインをコマンドに関連するデータのために予約する。
[0055]識別されたキャッシュラインに常駐するデータのどれもが、クリーン、アンピンド、及びevict_firstではない場合には、タグルックアップ410は、識別されたキャッシュラインのそれぞれに関連するタグストア412内のエントリを調べて、キャッシュラインのいずれかがクリーン、アンピンド、及びevict_normalである常駐データ(有効ビットをセットされた)を有するかどうかを判定する。クリーン、アンピンド、及びevict_normalである常駐データを有するキャッシュラインに関連するタグストア412内のエントリの状態部分は、セットされた有効ビット、クリアされたダーティビット、及びクリアされたピンドビットを有しなければならない。そのようなエントリのタグ部分は、関連するキャッシュラインに格納されたデータがevict_normalデータクラスに属することを示さなければならない。そのようなキャッシュラインが存在する場合に、タグルックアップユニット410は、最長時間未使用のクリーン、アンピンド、及びevict_normalのデータをデータキャッシュ414からエビクトする。データをエビクトした後に、タグルックアップユニット410は、結果の空のキャッシュラインをコマンドに関連するデータのために予約する。
[0056]一実施形態では、識別されたキャッシュラインに常駐するデータのどれもが、クリーン、アンピンド、及びevict_firstのデータでもクリーン、アンピンド、及びevict_normalのデータでもない場合に、そのコマンドは、識別されたキャッシュラインのうちの1つに常駐するデータをデータキャッシュ414からエビクトできるようになるまで、ストールされる。
[0057]代替実施形態では、識別されたキャッシュラインに常駐するデータのどれもが、クリーン、アンピンド、及びevict_firstのデータでもクリーン、アンピンド、及びevict_normalのデータでもない場合に、タグルックアップユニット410は、コマンドに関連するデータがevict_lastデータクラスに関連するかどうかを判定する。コマンドに関連するデータがevict_lastデータクラスに属さない場合には、そのコマンドは、識別されたキャッシュラインのうちの1つに常駐するデータをデータキャッシュ414からエビクトできるようになるまで、ストールされる。しかし、コマンドに関連するデータがevict_lastデータクラスに属する場合には、タグルックアップ410は、識別されたキャッシュラインのそれぞれに関連するタグストア412内のエントリを調べて、キャッシュラインの1つがクリーン、アンピンド、及びevict_lastである常駐データを有するかどうかを判定する。クリーン、アンピンド、及びevict_lastである常駐データを有するキャッシュラインに関連するタグストア412内のエントリの状態部分は、セットされた有効ビット、クリアされたダーティビット、及びクリアされたピンドビットを有しなければならない。そのようなエントリのタグ部分は、関連するキャッシュラインに格納されたデータがevict_lastデータクラスに属することを示さなければならない。一実施形態では、そのようなキャッシュラインが存在する場合に、タグルックアップユニット410は、最長時間未使用のクリーン、アンピンド、及びevict_lastのデータをデータキャッシュ414からエビクトする。データをエビクトした後に、タグルックアップユニット410は、結果の空のキャッシュラインをコマンドに関連するデータのために予約する。
[0058]他の実施形態では、evict_lastデータクラスに属するデータをデータキャッシュ414からエビクトできない場合に、タグルックアップユニット410は、最長時間未使用のクリーン、アンピンド、及びevict_lastのデータをクリーン、アンピンド、及びevict_normalのデータに再分類する。関連するキャッシュラインに常駐するデータのデータクラスを変更することによって、タグルックアップユニット410は、上で示したキャッシュエビクションポリシーに基づいてその常駐データをエビクトすることができる。次に、タグルックアップユニット410は、最長時間未使用のクリーン、アンピンド、evict_normalのデータをデータキャッシュ414からエビクトする。evict_normalデータをエビクトした後に、タグルックアップユニット410は、本明細書で前に説明したように、空のキャッシュラインをコマンドに関連するデータのために予約する。
[0059]コマンドに関連するデータのためにキャッシュラインを予約するために、タグルックアップユニット410は、予約されるキャッシュラインに関連するエントリ内のピンドビットをセットする。次に、タグルックアップユニット410は、コマンドに関連するデータのデータクラス及び予約されるキャッシュラインのメモリアドレスタグを反映するように、予約されるキャッシュラインに関連するエントリ内のタグ部分を更新する。適当なキャッシュラインが予約された後に、読取りコマンドに関して、タグルックアップユニット410は、読取りコマンドに関連するデータに関するデータ要求をFB 355に送る。FB 355は、読取りコマンドに関連するデータを、将来のクロックサイクルに、予約されたキャッシュラインに送る。書込みコマンドに関して、書込みコマンドに関連するデータは、書込みデータバッファ418から送られ、予約されたキャッシュラインに格納される。次に、タグルックアップユニット410は、書込みコマンドに関連するデータのデータクラスに基づいて、そのデータを並列処理メモリ204内にも格納しなければならないかどうかを判定する。データを並列処理メモリ204内に格納しなければならない場合には、タグルックアップユニット410は、ダーティデータ通知をFB 355に送る。タグルックアップユニット410は、予約されたキャッシュラインに関連するエントリ内のダーティビットをもセットする。それに応答して、FB 355は、データを予約されたキャッシュラインから並列処理メモリ204に、将来のクロックサイクルに送る。データが受け取られた後に、ピンドビットが、クリアされる。
[0060]他の実施形態では、タグストア422内のエントリの状態部分を、エントリに対応するキャッシュライン内のデータがクリーンでアンピンドである時を示すための単一ビットなどを限定なしに含む、任意の技術的に実現可能な形で実施することができる。したがって、当業者は、本明細書の説明に含まれるもののどれもが、本発明の範囲を限定することを意図されていないことを理解するであろう。
[0061]ある種の実施形態では、読取りコマンドを、並列処理サブシステム112内のクライアントによってL2キャッシュスライス402に送ることができ、ここで、これらのコマンドに関連するデータは、本明細書で前に説明したようにFB 355に結合された並列処理メモリ204から取り出されるのではなく、システムメモリ104又はコンピュータシステム100内の別のGPU(又はPPU)に関連するメモリから取り出され、一時的にデータキャッシュ414に格納される。同様に、ある種の実施形態では、書込みコマンドを、GPC 208又はROP 360によってL2キャッシュスライス402に送ることができ、ここで、これらのコマンドに関連するデータは、本明細書で前に説明したようにFB 355に結合された並列処理メモリ204に書き込まれるのではなく、システムメモリ104又はコンピュータシステム100内の別のGPU(又はPPU)に関連するメモリに書き込まれる前に、データキャッシュ414に一時的に格納される。すべてのそのような実施形態で、読取りコマンド又は書込みコマンドに関連するデータがデータキャッシュ414内にキャッシングされ、データキャッシュ414からエビクトされる形は、本明細書で説明されるように、変更されないままになる。したがって、すべてのそのような実施形態が、本発明の範囲に含まれる。
[0062]図5A〜5Dに、本発明の一実施形態による、図4のデータキャッシュ414に出入りするデータのフローを管理する方法ステップの流れ図を示す。方法ステップを、図1〜4に関連して説明するが、当業者は、この方法ステップを任意の順序で実行するように構成されたすべてのシステムが本発明の範囲に含まれることを理解するであろう。
[0063]方法500は、ステップ502で開始され、ここで、L2キャッシュスライス402が、システム100内のクライアントから読取りコマンド又は書込みコマンドを受け取る。図4に関連して説明したように、L2キャッシュスライス402によって受け取られる各コマンドは、そのコマンドに関連するデータが格納されている可能性があるデータキャッシュ414内に配置されたキャッシュラインのセットに関連するメモリアドレスを含む。L2キャッシュスライス402によって受け取られるコマンドは、そのコマンドに関連するデータのデータクラスをも含む。ステップ504では、コマンドを、場合に応じて、クロスバコマンドバッファ404又はROPコマンドバッファ406に格納する。
[0064]ステップ506で、コマンドが書込みコマンドである場合に、方法500は、ステップ508に進み、ここで、コマンドに関連するデータを、L2キャッシュスライス402によって受け取り、書込みデータバッファ418に格納する。ステップ506で、コマンドが読取りコマンドである場合には、方法500は、ステップ510に直接に進む。ステップ510では、ステップ502でL2キャッシュスライス402によって受け取られたコマンドを、標準的なアービトレーション技法を使用してアービタ408によって選択し、処理のためにタグルックアップユニット410に送る。
[0065]ステップ512では、タグルックアップ410ユニットは、選択されたコマンドに関連するデータが格納されている可能性があるデータキャッシュ414内のキャッシュラインのセットを、コマンドに含まれるメモリアドレスに基づき、セットアソシアティブキャッシング技法を使用して、識別する。やはり、キャッシュラインのこのセットを、「識別されたキャッシュライン」と称する。ステップ514では、タグルックアップユニット410は、キャッシュミスがあるかどうかを判定する。コマンドに関連するデータが、識別されたキャッシュラインのうちの1つに現在常駐していない場合に、キャッシュミスがある。キャッシュミスの場合には、方法ステップ500は、ステップ516に進む。
[0066]ステップ516では、タグルックアップユニット410は、識別されたキャッシュラインのうちの1つが空である(そのキャッシュラインが現在使用可能であることを意味する)かどうかを判定する。識別されたキャッシュラインのどれもが空ではない(そのキャッシュラインが現在はダーティ又はピンドであることを意味する)場合には、方法500は、ステップ518に進む。ステップ518では、タグルックアップユニット410は、識別されたキャッシュラインに対応するタグストア412内のタグを調べて、これらのキャッシュラインのうちでクリーン、アンピンド、及びevict_firstデータクラスである常駐データを有するものがある場合に、それがどのキャッシュラインであるかを判定する。キャッシュラインのどれもが、クリーン、アンピンド、及びevict_firstデータクラスである常駐データを有しない場合には、方法500はステップ520に進む。ステップ520では、タグルックアップユニット410は、識別されたキャッシュラインに対応するタグストア内のタグを調べて、これらのキャッシュラインのうちでクリーン、アンピンド、及びevict_normalデータクラスである常駐データを有するものがある場合に、それがどのキャッシュラインであるかを判定する。キャッシュラインのどれもが、クリーン、アンピンド、及びevict_normalである常駐データを有しない場合には、方法500はステップ522に進む。
[0067]ステップ522では、タグルックアップユニット410は、コマンドに含まれるデータクラスを調べて、コマンドに関連するデータがevict_lastデータクラスのデータであるかどうかを判定する。コマンドに関連するデータのデータクラスがevict_lastデータクラスである場合には、方法500は、ステップ524に進み、ここで、タグルックアップユニット410は、識別されたキャッシュラインに対応するタグストア412内のタグを調べて、これらのキャッシュラインのうちでクリーン、アンピンド、及びevict_lastデータクラスである常駐データを有するものがある場合に、それがどのキャッシュラインであるかを判定する。識別されたキャッシュラインのうちの1つ又は複数が、クリーン、アンピンド、及びevict_lastデータクラスである常駐データを有する場合には、クリーン、アンピンド、及びevict_lastクラスである最長時間未使用の常駐データを有するキャッシュラインが、エビクションのために選択される。
[0068]ステップ526では、タグルックアップユニット410は、選択されたキャッシュラインを、コマンドに関連するデータのために予約する。図4に関連して説明したように、キャッシュラインをコマンドに関連するデータのために予約するために、タグルックアップユニット410は、選択されたキャッシュラインに関連するエントリ内の有効ビット部分をセットする。次に、タグルックアップユニットは、コマンドに関連するデータのデータクラスを反映するように、選択されたキャッシュラインに関連するエントリ内のタグ部分を更新する。
[0069]ステップ528では、タグルックアップユニット410は、コマンドが書込みコマンドであるかどうかを判定する。コマンドが書込みコマンドである場合には、方法500はステップ530に進み、ここで、書込みコマンドに関連するデータを、書込みデータバッファ418から予約されたキャッシュラインに送る。ステップ532では、タグルックアップユニット410は、コマンドに関連するデータのデータクラスを分析して、そのデータを格納のために外部メモリに送らなければならないかどうかを判定する。一実施形態では、evict_lastデータクラスのデータは、キューイングされたデータであり、格納のために外部メモリに送られてはならないが、evict_firstデータクラス及びevict_normalデータクラスのデータは、格納のために外部メモリに送られなければならない。データを格納のために外部メモリに送らなければならない場合には、ステップ534で、タグルックアップユニット410は、ダーティデータ通知をフレームバッファ論理355に送る。フレームバッファ論理355は、このダーティデータを効率的なクロックサイクルに外部メモリに送る。ステップ532で、タグルックアップユニット410が、データを格納のために外部メモリに送ってはならないと判定する場合には、方法500は終了する。
[0070]戻ってステップ530を参照すると、コマンドが読取りコマンドである場合には、方法500は、ステップ536に進み、ここで、タグルックアップユニット410は、データ要求通知をフレームバッファ論理355に送る。フレームバッファ論理355は、要求されたデータを、効率的なクロックサイクルに、ステップ526で予約されたキャッシュラインに送る。その後、方法500は終了する。
[0071]戻ってステップ524を参照すると、キャッシュラインのどれもがクリーン、アンピンド、及びevict_lastデータクラスである常駐データを有しない場合には、ステップ525でコマンドをストールさせ、方法500は、本明細書で前に説明したステップ516に戻る。同様に、戻ってステップ522を参照すると、コマンドに関連するデータのデータクラスがevict_lastではない場合には、ステップ525でコマンドをストールさせ、方法500は、本明細書で前に説明したステップ516に戻る。
[0072]戻ってステップ520を参照すると、識別されたキャッシュラインのうちの1つ又は複数が、クリーン、アンピンド、及びevict_normalデータクラスの常駐データを有する場合には、クリーン、アンピンド、及びevict_normalデータクラスの最長時間未使用の常駐データを有するキャッシュラインが、エビクションのために選択される。その後、方法500は、本明細書で前に説明したステップ526に直接に進む。同様に、戻ってステップ518を参照すると、識別されたキャッシュラインのうちの1つ又は複数が、クリーン、アンピンド、及びevict_firstデータクラスの常駐データを有する場合には、クリーン、アンピンド、及びevict_firstデータクラスの最長時間未使用の常駐データを有するキャッシュラインが、エビクションのために選択される。その後、方法500は、本明細書で前に説明したステップ526に直接に進む。
[0073]戻ってステップ516を参照すると、データキャッシュ414内のキャッシュラインが使用可能である場合には、方法500は、本明細書で前に説明したステップ528に直接に進む。最後に、戻ってステップ514を参照すると、キャッシュヒット(キャッシュミスではなく)がある場合には、方法500は、ステップ538に直接に進む。ステップ538では、タグルックアップユニット410は、コマンドが書込みコマンドであるかどうかを判定する。コマンドが書込みコマンドである場合には、方法500はステップ540に進み、ここで、書込みコマンドに関連するデータを、書込みデータバッファ418から既に予約されているキャッシュラインに送る。ステップ538で、コマンドが読取りコマンドである場合には、ステップ542で、タグルックアップユニット410は、既に予約されたキャッシュラインに格納されたデータを読取りデータバッファ416に送らせる。ステップ544では、読取りデータバッファ416からのデータを、ステップ502で読取りコマンドを送ったクライアントに送る。
[0074]要するに、クライアントによってL2キャッシュスライスに送られる各読取りコマンド又は各書込みコマンドは、その特定のコマンドに関連するデータのメモリアドレス及びデータクラスを含む。L2キャッシュスライス内のタグルックアップユニットは、そのようなコマンドに含まれるメモリアドレスを分析して、そのコマンドに関連するデータが格納されている可能性がある潜在的なキャッシュラインのセットを判定する。タグルックアップユニットは、潜在的キャッシュラインのそれぞれに関連する、タグストアに格納されたタグをも分析して、コマンドに関連するデータのために予約されている可能性がある少なくとも1つのキャッシュラインを識別する。潜在的キャッシュラインのうちの1つが空である場合には、タグルックアップユニットは、要求されたデータ又は書き込まれるデータのためにそのキャッシュラインを予約する。特定のコマンドのためにキャッシュラインを予約する時に、タグルックアップユニットは、そのコマンドに関連するデータのデータクラスを、そのキャッシュラインに対応するタグストア内のエントリのタグ部分に格納する。
[0075]しかし、識別されたキャッシュラインのどれもが空ではない場合には、タグルックアップユニットは、識別されたキャッシュラインのいずれかが、クリーン、アンピンドであり、evict_firstデータクラスに属する常駐データを有するかどうかを判定する。識別されたラインのうちの1つ又は複数のデータが、これらの判断基準のすべてを満足する場合には、タグルックアップユニットは、最長時間未使用のクリーン、アンピンド、evict_firstのデータをエビクトし、関連するキャッシュラインを要求されたデータ又は書き込まれるデータのために予約する。識別されたキャッシュラインのデータの中に、これらの判断基準のすべてを満足するものがない場合には、タグルックアップユニットは、識別されたキャッシュラインのいずれかが、クリーン、アンピンドであり、evict_normalデータクラスに属する常駐データを有するかどうかを判定する。識別されたラインのうちの1つ又は複数のデータが、これらの判断基準のすべてを満足する場合には、タグルックアップユニットは、最長時間未使用のクリーン、アンピンド、evict_normalのデータをエビクトし、関連するキャッシュラインを要求されたデータ又は書き込まれるデータのために予約する。識別されたキャッシュラインのデータの中に、これらの判断基準のすべてを満足するものがない場合には、読取りコマンド又は書込みコマンドは、識別されたラインのうちの1つのデータをエビクトできるようになるまで、ストールされる。
[0076]有利なことに、データキャッシュに格納されたデータに関連するデータクラスは、タグルックアップユニットが、読取りコマンド又は書込みコマンドに関連するデータのために場所をあける時に、再利用の最も低い可能性を有するデータをエビクトすることを可能にする。データエビクションのこの機構は、システム内のクライアントによって再利用できるデータの早期エビクションから生じるキャッシュミスの回数を減らす。さらに、データキャッシュを使用して、頻繁に再利用されるが、外部メモリに送られる必要がないデータを、適当なデータクラスをそのデータにアタッチすることによって格納することができる。これは、そのデータを格納するための追加データストレージ構造の必要を除去する。
[0077]前述は、本発明の実施形態を対象とするが、本発明の他の実施形態及びさらなる実施形態を、本発明の基本的な範囲から逸脱せずに考案することができる。たとえば、本発明の諸態様を、ハードウェア又はソフトウェアで、或いはハードウェア及びソフトウェアの組合せで実施することができる。本発明の一実施形態を、コンピュータシステムと共に使用されるプログラム製品として実施することができる。プログラム製品のプログラム(複数可)は、実施形態の機能(本明細書で説明した方法を含む)を定義し、さまざまなコンピュータ可読記憶媒体に含めることができる。例示的なコンピュータ可読記憶媒体は、(i)その上に情報が永久的に格納される書込み不能記憶媒体(たとえば、CD−ROMドライブによって読取り可能なCD−ROMディスク、フラッシュメモリ、ROMチップ、又は任意のタイプのソリッドステート不揮発性半導体メモリなどのコンピュータ内の読取り専用メモリデバイス)及び(ii)その上に変更可能な情報が格納される書込み可能記憶媒体(たとえば、ディスケットドライブ内のフロッピディスク、ハードディスクドライブ、又は任意のタイプのソリッドステートランダムアクセス半導体メモリ)を含むが、これらに限定はされない。そのようなコンピュータ可読記憶媒体は、本発明の機能を指示するコンピュータ可読命令を担持する時に、本発明の実施形態である。したがって、本発明の範囲は、添付の特許請求の範囲によって決定される。
100 コンピュータシステム
102 中央処理装置(CPU)
104 システムメモリ
105 メモリブリッジ
106 通信パス
107 I/O(入出力)ブリッジ
108 ユーザ入力デバイス
110 ディスプレイデバイス
112 並列処理サブシステム
113 通信パス
114 システムディスク
116 スイッチ
118 ネットワークアダプタ
120 アドインカード
121 アドインカード
200 作業分配ユニット
202 並列処理ユニット(PPU)
204 ローカル並列処理(PP)メモリ
205 I/O(入出力)ユニット
206 ホストインターフェース
208 一般処理クラスタ(GPC)
210 メモリクロスバーユニット
212 フロントエンド
214 メモリインターフェース
215 パーティションユニット
220 DRAM
230 処理クラスタアレイ
304 プリミティブエンジン
305 パイプラインマネージャ
310 ストリーミングマルチプロセッサ(SPM)
315 テクスチャユニット
320 L1キャッシュ
325 プリROP(プリラスタ演算)
330 作業分配クロスバ
350 L2キャッシュ
355 フレームバッファ(FB)
360 ラスタ演算ユニット(ROP)
402 L2キャッシュスライス
404 クロスバコマンドバッファ
406 ROPコマンドバッファ
408 アービタ
410 タグルックアップユニット
412 タグストアユニット
414 データキャッシュ
416 読取りデータバッファ
418 書込みデータバッファ
500 方法

Claims (9)

  1. 1つ又は複数のクライアント及び外部メモリに結合された中間キャッシュからデータをエビクト(evict)するシステムであって、
    1つ又は複数のデータキャッシュユニットと、
    前記1つ又は複数のデータキャッシュユニットに関連する複数のキャッシュラインのそれぞれの異なるエントリを格納するように構成されたタグストアユニットと、
    前記1つ又は複数のデータキャッシュユニット及び前記タグストアユニットに結合されたタグルックアップユニットとを備え、
    前記タグストアユニットにおいて、各エントリが、前記エントリに対応する前記キャッシュラインに格納されたデータに関連するエビクションクラス(eviction class)を示すタグと、前記エントリに対応する前記キャッシュライン内の前記データがクリーン(clean)かつアンピンド(unpinned)であるどうかを示す状態部分とを含み、前記エビクションクラスは、前記エントリに対応する前記キャッシュラインに格納された前記データが前記1つ又は複数のクライアントによって再利用される可能性を示し、
    タグルックアップユニットが、
    関連するメモリアドレスを含むコマンドをクライアントから受け取り、
    前記メモリアドレスに基づいて前記コマンドに関連するデータを格納するために前記1つ又は複数のデータキャッシュユニット内の1つ又は複数のキャッシュラインを識別し、
    前記1つ又は複数のキャッシュラインに対する相対的なキャッシュミスがあることを判定し、
    前記1つ又は複数のキャッシュラインのうちの少なくとも1つに対応する前記タグストアユニット内の前記エントリに含まれる前記少なくとも1つのキャッシュラインに格納された前記データに関連する前記エビクションクラスに基づいて前記少なくとも1つのキャッシュラインに常駐するデータをエビクトし、
    前記クライアントは、前記コマンドに関連するデータが第1のエビクションクラス(evict−first)に属することを決定し、
    前記少なくとも1つのキャッシュラインに格納された前記データが、evict−lastクラスに属し、
    前記タグルックアップユニットが、evict−normalクラスに属するものとして前記データを再分類するように構成され、
    前記少なくとも1つのキャッシュラインに対応する前記タグストアユニット内の前記エントリに含まれる前記状態部分が、前記少なくとも1つのキャッシュラインに格納されたデータがクリーンかつアンピンドであることを示し、
    前記タグルックアップユニットが、前記少なくとも1つのキャッシュライン内の前記データが前記1つ又は複数のキャッシュライン内の最長時間未使用、クリーン、アンピンド、そしてevict−normalデータであることを判定し、その後、前記少なくとも1つのキャッシュライン内の前記データをエビクトするようにさらに構成されている、
    システム。
  2. 前記状態部分が、有効(valid)フラグ、ダーティ(dirty)フラグ、及びピンド(pinned)フラグを含む、請求項1に記載のシステム。
  3. 前記少なくとも1つのキャッシュラインに対応する前記タグストアユニット内の前記エントリに含まれる前記タグが、前記少なくとも1つのキャッシュラインに格納された前記データがevict−firstクラスに属することを示し、
    前記エントリに含まれる前記状態部分が、前記少なくとも1つのキャッシュラインに格納されたデータが、クリーンかつアンピンドであることを示し、
    前記タグルックアップユニットが、前記少なくとも1つのキャッシュライン内の前記データが前記1つ又は複数のキャッシュライン内の最長時間未使用(least recently used)、クリーン、アンピンド、そしてevict−fistデータであることを判定し、その後、前記少なくとも1つのキャッシュライン内の前記データをエビクトするように構成されている、請求項1に記載のシステム。
  4. 前記少なくとも1つのキャッシュラインに対応する前記タグストアユニット内の前記エントリに含まれる前記タグが、前記少なくとも1つのキャッシュラインに格納された前記データがevict−normalクラスに属することを示し、
    前記エントリに含まれる前記状態部分が、前記少なくとも1つのキャッシュラインに格納されたデータがクリーンかつアンピンドであることを示し、
    前記タグルックアップユニットが、前記少なくとも1つのキャッシュライン内の前記データが前記1つ又は複数のキャッシュライン内の最長時間未使用、クリーン、アンピンド、そしてevict−normalデータであることを判定し、その後、前記少なくとも1つのキャッシュライン内の前記データをエビクトするように構成されている、請求項1に記載のシステム。
  5. 前記タグルックアップユニットが、前記コマンドに関連する前記データがevict−lastクラスに属することを判定するように構成され、
    前記少なくとも1つのキャッシュラインに対応する前記タグストアユニット内の前記エントリに含まれる前記タグが、前記少なくとも1つのキャッシュラインに格納された前記データがevict−lastクラスに属することを示し、
    前記エントリに含まれる前記状態部分が、前記少なくとも1つのキャッシュラインに格納されたデータがクリーンかつアンピンドであることを示し、
    前記タグルックアップユニットが、前記少なくとも1つのキャッシュライン内の前記データが前記1つ又は複数のキャッシュライン内の最長時間未使用、クリーン、アンピンド、そしてevict−lastデータであることを判定し、その後、前記少なくとも1つのキャッシュライン内の前記データをエビクトするように構成されている、請求項1に記載のシステム。
  6. タグルックアップユニットが、前記少なくとも1つのキャッシュラインに常駐するデータに関するクリーン通知をフレームバッファ論理に送り、前記コマンドに関連する前記データのために前記少なくとも1つのキャッシュラインを予約するようにさらに構成されている、請求項1に記載のシステム。
  7. 1つ又は複数のクライアントと、
    中間キャッシュと、
    前記中間キャッシュに結合された外部メモリと、
    前記1つ又は複数のクライアントを前記中間キャッシュに結合するクロスバーユニットとを備え、
    前記中間キャッシュは、
    1つ又は複数のデータキャッシュユニットと、
    前記1つ又は複数のデータキャッシュユニットに関連する複数のキャッシュラインのそれぞれの異なるエントリを格納するように構成されたタグストアユニットであって、各エントリは、前記エントリに対応する前記キャッシュラインに格納されたデータに関連するエビクションクラスを示すタグと、前記エントリに対応する前記キャッシュライン内の前記データがクリーンかつアンピンドであるかどうかを示す状態部分とを含み、前記エビクションクラスは、前記エントリに対応する前記キャッシュラインに格納された前記データが前記1つ又は複数のクライアントによって再利用される可能性を示す、タグストアユニットと、
    前記1つ又は複数のデータキャッシュユニットに結合されたタグルックアップユニットと
    を含み、
    前記タグルックアップユニットは、
    関連するメモリアドレスを含むコマンドをクライアントから受け取り、
    前記メモリアドレスに基づいて前記コマンドに関連するデータを格納するために前記1つ又は複数のデータキャッシュユニット内の1つ又は複数のキャッシュラインを識別し、
    前記1つ又は複数のキャッシュラインに対して相対的なキャッシュミスがあることを判定し、
    前記1つ又は複数のキャッシュラインのうちの少なくとも1つに対応する前記タグストアユニット内の前記エントリに含まれる前記少なくとも1つのキャッシュラインに格納された前記データに関連する前記エビクションクラスに基づいて前記少なくとも1つのキャッシュラインに常駐するデータをエビクトし、
    前記クライアントは、前記コマンドに関連するデータが第1のエビクションクラス(evict−first)に属することを決定し、
    前記少なくとも1つのキャッシュラインに格納された前記データが、evict−lastクラスに属し、
    前記タグルックアップユニットが、evict−normalクラスに属するものとして前記データを再分類するように構成され、
    前記少なくとも1つのキャッシュラインに対応する前記タグストアユニット内の前記エントリに含まれる前記状態部分が、前記少なくとも1つのキャッシュラインに格納されたデータがクリーンかつアンピンドであることを示し、
    前記タグルックアップユニットが、前記少なくとも1つのキャッシュライン内の前記データが前記1つ又は複数のキャッシュライン内の最長時間未使用、クリーン、アンピンド、そしてevict−normalデータであることを判定し、その後、前記少なくとも1つのキャッシュライン内の前記データをエビクトするようにさらに構成されている、
    コンピューティングデバイス。
  8. 前記状態部分は、有効フラグ、ダーティフラグ、及びピンドフラグを含む、請求項7に記載のコンピューティングデバイス。
  9. タグルックアップユニットが、前記少なくとも1つのキャッシュラインに常駐する前記データに関するクリーン通知をフレームバッファ論理に送り、前記コマンドに関連する前記データのために前記少なくとも1つのキャッシュラインを予約するようにさらに構成されている、請求項7に記載のコンピューティングデバイス。


JP2009266419A 2008-11-21 2009-11-24 複数クラスデータキャッシュポリシー Active JP5229968B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/276,154 US8868838B1 (en) 2008-11-21 2008-11-21 Multi-class data cache policies
US12/276,154 2008-11-21

Publications (2)

Publication Number Publication Date
JP2010123130A JP2010123130A (ja) 2010-06-03
JP5229968B2 true JP5229968B2 (ja) 2013-07-03

Family

ID=41565470

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009266419A Active JP5229968B2 (ja) 2008-11-21 2009-11-24 複数クラスデータキャッシュポリシー

Country Status (6)

Country Link
US (1) US8868838B1 (ja)
JP (1) JP5229968B2 (ja)
KR (1) KR101121487B1 (ja)
CN (1) CN101739357B (ja)
DE (1) DE102009046847A1 (ja)
GB (1) GB2465474B (ja)

Families Citing this family (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2477109B1 (en) 2006-04-12 2016-07-13 Soft Machines, Inc. Apparatus and method for processing an instruction matrix specifying parallel and dependent operations
EP2523101B1 (en) 2006-11-14 2014-06-04 Soft Machines, Inc. Apparatus and method for processing complex instruction formats in a multi- threaded architecture supporting various context switch modes and virtualization schemes
KR101064178B1 (ko) * 2010-08-24 2011-09-14 한국과학기술원 버퍼 캐시 관리 시스템 및 방법
US10228949B2 (en) 2010-09-17 2019-03-12 Intel Corporation Single cycle multi-branch prediction including shadow cache for early far branch prediction
WO2012074092A1 (ja) * 2010-12-03 2012-06-07 株式会社ディジタルメディアプロフェッショナル 画像処理装置
TWI520070B (zh) 2011-03-25 2016-02-01 軟體機器公司 使用可分割引擎實體化的虛擬核心以支援程式碼區塊執行的記憶體片段
EP2689330B1 (en) 2011-03-25 2022-12-21 Intel Corporation Register file segments for supporting code block execution by using virtual cores instantiated by partitionable engines
TWI533129B (zh) 2011-03-25 2016-05-11 軟體機器公司 使用可分割引擎實體化的虛擬核心執行指令序列程式碼區塊
JP2012203881A (ja) * 2011-03-28 2012-10-22 Fujitsu Ltd ストレージ装置及びストレージ制御装置
TWI548994B (zh) 2011-05-20 2016-09-11 軟體機器公司 以複數個引擎支援指令序列的執行之互連結構
WO2012162188A2 (en) 2011-05-20 2012-11-29 Soft Machines, Inc. Decentralized allocation of resources and interconnect structures to support the execution of instruction sequences by a plurality of engines
CN108427574B (zh) 2011-11-22 2022-06-07 英特尔公司 微处理器加速的代码优化器
CN104040490B (zh) 2011-11-22 2017-12-15 英特尔公司 用于多引擎微处理器的加速的代码优化器
WO2013101120A1 (en) * 2011-12-29 2013-07-04 Intel Corporation Online learning based algorithms to increase retention and reuse of gpu-generated dynamic surfaces in outer-level caches
US8930674B2 (en) 2012-03-07 2015-01-06 Soft Machines, Inc. Systems and methods for accessing a unified translation lookaside buffer
CN103309818B (zh) * 2012-03-09 2015-07-29 腾讯科技(深圳)有限公司 存储数据的方法及装置
US9710399B2 (en) 2012-07-30 2017-07-18 Intel Corporation Systems and methods for flushing a cache with modified data
US9916253B2 (en) 2012-07-30 2018-03-13 Intel Corporation Method and apparatus for supporting a plurality of load accesses of a cache in a single cycle to maintain throughput
US9430410B2 (en) 2012-07-30 2016-08-30 Soft Machines, Inc. Systems and methods for supporting a plurality of load accesses of a cache in a single cycle
US9229873B2 (en) 2012-07-30 2016-01-05 Soft Machines, Inc. Systems and methods for supporting a plurality of load and store accesses of a cache
US9740612B2 (en) 2012-07-30 2017-08-22 Intel Corporation Systems and methods for maintaining the coherency of a store coalescing cache and a load cache
US9311251B2 (en) 2012-08-27 2016-04-12 Apple Inc. System cache with sticky allocation
US20140089600A1 (en) * 2012-09-27 2014-03-27 Apple Inc. System cache with data pending state
US9678882B2 (en) 2012-10-11 2017-06-13 Intel Corporation Systems and methods for non-blocking implementation of cache flush instructions
US9372811B2 (en) * 2012-12-13 2016-06-21 Arm Limited Retention priority based cache replacement policy
CN103092920B (zh) * 2012-12-26 2017-04-12 新浪网技术(中国)有限公司 半结构化数据的存储方法及存储系统
US10140138B2 (en) 2013-03-15 2018-11-27 Intel Corporation Methods, systems and apparatus for supporting wide and efficient front-end operation with guest-architecture emulation
US9811342B2 (en) 2013-03-15 2017-11-07 Intel Corporation Method for performing dual dispatch of blocks and half blocks
CN105247484B (zh) 2013-03-15 2021-02-23 英特尔公司 利用本地分布式标志体系架构来仿真访客集中式标志体系架构的方法
WO2014150991A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for implementing a reduced size register view data structure in a microprocessor
WO2014150806A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for populating register view data structure by using register template snapshots
WO2014150971A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for dependency broadcasting through a block organized source view data structure
US9886279B2 (en) 2013-03-15 2018-02-06 Intel Corporation Method for populating and instruction view data structure by using register template snapshots
US10275255B2 (en) 2013-03-15 2019-04-30 Intel Corporation Method for dependency broadcasting through a source organized source view data structure
US9904625B2 (en) 2013-03-15 2018-02-27 Intel Corporation Methods, systems and apparatus for predicting the way of a set associative cache
US9569216B2 (en) 2013-03-15 2017-02-14 Soft Machines, Inc. Method for populating a source view data structure by using register template snapshots
CN105210040B (zh) 2013-03-15 2019-04-02 英特尔公司 用于执行分组成块的多线程指令的方法
US9891924B2 (en) 2013-03-15 2018-02-13 Intel Corporation Method for implementing a reduced size register view data structure in a microprocessor
CN103336844B (zh) * 2013-07-22 2016-12-28 广西师范大学 大数据rd分割方法
WO2015147868A1 (en) * 2014-03-28 2015-10-01 Empire Technology Development Llc Magnetoresistive random-access memory cache write management
US9866498B2 (en) * 2014-12-23 2018-01-09 Intel Corporation Technologies for network packet cache management
US10866901B2 (en) 2018-06-02 2020-12-15 International Business Machines Corporation Invalidating CKD data tracks prior to unpinning, wherein upon destaging invalid track image from cache to a track of data on storage drive, the track of data on the storage drive is unpinned which enables destages of data from the cache to the track of data on the storage drive going forward
US10860498B2 (en) * 2018-11-21 2020-12-08 SK Hynix Inc. Data processing system
US11099989B2 (en) 2019-03-12 2021-08-24 International Business Machines Corporation Coherency maintenance via physical cache coordinate comparison
US10831661B2 (en) 2019-04-10 2020-11-10 International Business Machines Corporation Coherent cache with simultaneous data requests in same addressable index

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3236287B2 (ja) 1990-11-29 2001-12-10 キヤノン株式会社 マルチプロセッサシステム
JPH04215151A (ja) 1990-12-13 1992-08-05 Nec Commun Syst Ltd キャッシュ制御方式
JPH06348595A (ja) * 1993-06-07 1994-12-22 Hitachi Ltd キャッシュ装置
JPH0728706A (ja) 1993-07-14 1995-01-31 Sumitomo Electric Ind Ltd キャッシュメモリ装置
US5893920A (en) * 1996-09-30 1999-04-13 International Business Machines Corporation System and method for cache management in mobile user file systems
US6223256B1 (en) * 1997-07-22 2001-04-24 Hewlett-Packard Company Computer cache memory with classes and dynamic selection of replacement algorithms
KR19990026501A (ko) * 1997-09-25 1999-04-15 구자홍 분산 공유 메모리의 캐시 일관성 제어방법 및 장치
GB2345987B (en) 1999-01-19 2003-08-06 Advanced Risc Mach Ltd Memory control within data processing systems
JP2002024088A (ja) 2000-07-07 2002-01-25 Matsushita Electric Ind Co Ltd データ処理装置
JP2002140234A (ja) * 2000-11-02 2002-05-17 Hitachi Ltd キャッシュ装置
EP1425670A2 (en) 2001-09-14 2004-06-09 Sun Microsystems, Inc. Method and apparatus for decoupling tag and data accesses in a cache memory
US7027064B2 (en) * 2002-02-28 2006-04-11 Sun Microsystems, Inc. Active block write-back from SRAM cache to DRAM
US6961821B2 (en) 2002-10-16 2005-11-01 International Business Machines Corporation Reconfigurable cache controller for nonuniform memory access computer systems
JP2004145780A (ja) 2002-10-28 2004-05-20 Mitsubishi Electric Corp マルチプロセッサ・キャッシュ装置
JP2004326187A (ja) * 2003-04-21 2004-11-18 Matsushita Electric Ind Co Ltd 情報処理装置およびその制御方法
US7024521B2 (en) 2003-04-24 2006-04-04 Newisys, Inc Managing sparse directory evictions in multiprocessor systems via memory locking
US7398304B2 (en) 2003-06-23 2008-07-08 Microsoft Corporation General dependency model for invalidating cache entries
US7010649B2 (en) * 2003-10-14 2006-03-07 International Business Machines Corporation Performance of a cache by including a tag that stores an indication of a previously requested address by the processor not stored in the cache
JP2006048447A (ja) * 2004-08-05 2006-02-16 Matsushita Electric Ind Co Ltd キャッシュメモリ装置およびそれを用いる集積回路ならびにデータのキャッシュメモリ方法およびプログラム
US7380065B2 (en) 2005-03-30 2008-05-27 International Business Machines Corporation Performance of a cache by detecting cache lines that have been reused
US7536513B2 (en) * 2005-03-31 2009-05-19 International Business Machines Corporation Data processing system, cache system and method for issuing a request on an interconnect fabric without reference to a lower level cache based upon a tagged cache state
US7793049B2 (en) 2007-10-30 2010-09-07 International Business Machines Corporation Mechanism for data cache replacement based on region policies
US8464009B2 (en) 2008-06-04 2013-06-11 Oracle America, Inc. Method for memory interleave support with a ceiling mask
US20100079454A1 (en) 2008-09-29 2010-04-01 Legakis Justin S Single Pass Tessellation

Also Published As

Publication number Publication date
JP2010123130A (ja) 2010-06-03
KR101121487B1 (ko) 2012-02-28
GB0920187D0 (en) 2010-01-06
CN101739357B (zh) 2012-08-29
CN101739357A (zh) 2010-06-16
KR20100057516A (ko) 2010-05-31
GB2465474B (en) 2011-08-31
US8868838B1 (en) 2014-10-21
DE102009046847A1 (de) 2010-05-27
GB2465474A (en) 2010-05-26

Similar Documents

Publication Publication Date Title
JP5229968B2 (ja) 複数クラスデータキャッシュポリシー
US8244984B1 (en) System and method for cleaning dirty data in an intermediate cache using a data class dependent eviction policy
US10365930B2 (en) Instructions for managing a parallel cache hierarchy
US8131931B1 (en) Configurable cache occupancy policy
US9952977B2 (en) Cache operations and policies for a multi-threaded client
US9639466B2 (en) Control mechanism for fine-tuned cache to backing-store synchronization
US8949541B2 (en) Techniques for evicting dirty data from a cache using a notification sorter and count thresholds
JP5142299B2 (ja) 圧縮状態ビットキャッシュ及びバッキング記憶装置
JP5127815B2 (ja) Cpuトラフィックを特殊とマークすることによるデッドロックの回避
US8917271B2 (en) Redistribution of generated geometric primitives
US8692829B2 (en) Calculation of plane equations after determination of Z-buffer visibility
US8760460B1 (en) Hardware-managed virtual buffers using a shared memory for load distribution
US8060700B1 (en) System, method and frame buffer logic for evicting dirty data from a cache using counters and data types
US8595437B1 (en) Compression status bit cache with deterministic isochronous latency
US8135926B1 (en) Cache-based control of atomic operations in conjunction with an external ALU block
US8810592B2 (en) Vertex attribute buffer for inline immediate attributes and constants
US8504773B1 (en) Storing dynamically sized buffers within a cache
US8539130B2 (en) Virtual channels for effective packet transfer
US8341358B1 (en) System and method for cleaning dirty data in a cache via frame buffer logic
US8234478B1 (en) Using a data cache array as a DRAM load/store buffer
US9436969B2 (en) Time slice processing of tessellation and geometry shaders
US20140025891A1 (en) Relaxed coherency between different caches
US8195858B1 (en) Managing conflicts on shared L2 bus
US8788761B2 (en) System and method for explicitly managing cache coherence
US8464001B1 (en) Cache and associated method with frame buffer managed dirty data pull and high-priority clean mechanism

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120403

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20120702

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20120705

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120725

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20120821

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121219

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20130129

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: 20130219

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130315

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20160329

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 5229968

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250