JP2012522290A - キャッシュにおけるウエイ割り当て及びウエイロックのための方法 - Google Patents

キャッシュにおけるウエイ割り当て及びウエイロックのための方法 Download PDF

Info

Publication number
JP2012522290A
JP2012522290A JP2012502301A JP2012502301A JP2012522290A JP 2012522290 A JP2012522290 A JP 2012522290A JP 2012502301 A JP2012502301 A JP 2012502301A JP 2012502301 A JP2012502301 A JP 2012502301A JP 2012522290 A JP2012522290 A JP 2012522290A
Authority
JP
Japan
Prior art keywords
cache
source
shared cache
shared
memory
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.)
Pending
Application number
JP2012502301A
Other languages
English (en)
Inventor
オーウェン ジョナサン
クリシュナン グハン
ディー. ディーツ カール
リチャード ベアード ダグラス
ケイ. ルーチャク ウィリアム
ブラノーバー アレキサンダー
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices Inc
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 Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of JP2012522290A publication Critical patent/JP2012522290A/ja
Pending legal-status Critical Current

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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0888Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

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

Abstract

【解決手段】
コンピュータシステムの共有キャッシュメモリにおけるデータ割り当てのためのシステム及び方法が検討される。共有セットアソシアティブキャッシュの各キャッシュウエイは、多重ソース、例えば1つ以上のプロセッサコア、グラフィクス処理ユニット(GPU)、入力/出力(I/O)デバイス、又は多重の異なるソフトウエアスレッドにアクセス可能である。共有キャッシュ制御器は、受信したメモリ要求の対応するソースに基いてキャッシュウエイの各々へのアクセスを別々に有効にし又は無効にする。1つ以上の構成及び状態レジスタ(CSR)が、共有キャッシュウエイの各々へのアクセス可能性を変更するために用いられるエンコードされた値を記憶している。CSR内に記憶される値を変更することによる共有キャッシュウエイのアクセス可能性の制御が、共有キャッシュ内の擬似RAM構造を作り出すこと、及び共有キャッシュが動作を継続している間におけるパワーダウンシーケンスに際して共有キャッシュのサイズを徐々に減少させることのために用いられ得る。
【選択図】図3

Description

この発明はコンピュータシステムに関し、更に特定的にはコンピュータシステムの共有キャッシュメモリにおけるデータ割り当てに関する。
最新のマイクロプロセッサは1つ以上のプロセッサコア又はプロセッサを含むであろうし、各プロセッサはソフトウエアアプリケーションの命令を実行することができる。これらのプロセッサは典型的にはパイプライン化され、この場合、これらのプロセッサは1つ以上のデータ処理段階を含み、データ処理段階はこれら段階の間に置かれる記憶要素(例えばレジスタ及びアレイ)と共に直列に接続されている。パイプラインは命令処理の部分部分が実行される任意の数の段階に分割されていてよいが、命令処理は一般的に、命令をフェッチすること(fetching)と、命令を復号することと、命令を実行することと、実行結果を命令によって指定される宛先に記憶することとを備えている。
理想的には、クロック周期毎にパイプラインの各段階に対する命令の有用な実行が生み出される。しかし、パイプライン内のストール(stall)が当該特定のパイプライン段階の間に実行されるべき有用なワークを生じさせないことがある。ストールの1つの例は典型的には多重サイクルストールであり、データキャッシュ又は命令キャッシュのミスである。性能損失を低減する1つの方法は、多重サイクルストールの発生を低減することである。
マイクロプロセッサは、読み出し又は書き込み動作に対するメモリ内のデータのマイクロプロセッサによる要求の待ち時間を減少させるために、1つ以上のレベルのキャッシュに結合されるであろう。一般的に、キャッシュは1つ以上のブロックを記憶することができ、各ブロックはシステムメモリ内の対応するアドレスで記憶されるデータのコピーである。ここで用いられるように、「ブロック」は連続するメモリロケーション内に記憶される一連のバイトであり、ヒーレンシ(coherency)目的のための単位として取り扱われる。本出願においては、「キャッシュブロック」、「ブロック」、「キャッシュライン」、及び「ライン」の用語には互換性がある。幾つかの実施形態では、ブロックはキャッシュ内での割り当て及び割り当て解除(deallocation)の単位であってもよい。1つのブロック内のバイト数は、設計上の選択に従って変化させられるであろうし、そして任意のサイズである。例としては、32バイト及び64バイトがしばしば用いられる。
過多なブロックが同一のセットにマッピングし、従って1つ以上のブロックが当該セットにおいて廃棄される必要がある場合、コンフリクト(conflict)、又はコリジョン(collision)、ミス(misses)がセットアソシアティブ(set-associative)又は直接マッピングのキャッシュ内で生じる。特定のキャッシュは、そのキャッシュをデータ記憶のために用いる2つ以上のソースを有しているであろう。例えば、1つ以上のプロセッサコア、1つ以上のグラフィクス処理ユニット(GPU)、1つ以上の入力/出力(I/O)デバイス、その他が1つの特定のキャッシュにアクセスするであろう。これらのソースは、キャッシュの記憶資源を均等には共有しないかもしれない。ソースの増大された平均メモリ待ち時間に起因して経験されるシステム性能劣化は、各ソースに対して均等ではないであろう。
例えば、メモリ階層内でL2又はL3キャッシュであるであろうセットアソシアティブ共有キャッシュは、2つのダイ上プロセッサコア、又はコア、1つのグラフィクス処理ユニット(GPU)、及び多重入力/出力(I/O)デバイスによってデータ記憶のために利用され得る。このキャッシュ内に記憶されるべき新たなデータに対して、例えばキャッシュミスに続くフィルキャッシュライン(fill cache line)に対して空間を割り当てるために、典型的なキャッシュ実装は、置換されるべく選択されたセット内に最長時間未使用(Least Recently Used)(LRU)ウエイ(way)を可能にする。この割り当て戦略は異なるソースからの要求を区別しないので、1つのソース、例えばI/Oソースがキャッシュ内のウエイのかなりの部分を占めることを可能にしてしまい、これは望ましくないであろう。この選択されたセット内ではコアのデータブロックが直ちに退去させられることがあり、システム内のコアから見た平均メモリ待ち時間を劣化させるかもしれない。
上述に鑑み、コンピュータシステムのメモリにおけるデータ割り当てのための効率的な方法及びメカニズムが要望されている。
コンピュータシステムの共有キャッシュメモリにおけるデータ割り当てのためのシステム及び方法が検討される。1つの実施形態では、コンピュータシステムは、1つ以上のプロセッサコアと共有セットアソシアティブキャッシュを備えている。共有キャッシュの各キャッシュウエイは多重ソースにアクセス可能であり、ここでは多重ソースはメモリ要求を生成するように構成される。共有キャッシュ制御器は、受信したメモリ要求の対応するソースに基いてキャッシュウエイの各々へのキャッシュフィルライン割り当てを別々に有効にし又は無効にするように構成される。多重ソースの各々は、プロセッサコア、グラフィクス処理ユニット(GPU)、及び入力/出力(I/O)デバイスの少なくとも1つであってよい。
1つ以上の構成及び状態レジスタ(CSR)が、共有キャッシュウエイの各々への前記の割り当てを別々に有効にし又は無効にするために用いられるエンコーディング値を記憶するために、共有キャッシュ制御器に結合される。CSR内に記憶される値のプログラミングは、共有キャッシュウエイの各々を1つ以上の予め選択されたソースのみによるキャッシュミスに続く割り当てに対して利用可能にすることができる。従って、I/Oデバイスのような特定の第1のソースは、プロセッサコアのような第2のソースのデータの不所望な退去を回避するために、キャッシュミスに続く特定のキャッシュウエイへの割り当て利用可能性を有していなくてよい。1つ以上のCSR内に記憶される値を変更することによる共有キャッシュウエイの割り当て利用可能性の制御が、共有キャッシュ内の擬似RAM構造を作り出すこと、及び共有キャッシュが動作を継続している間におけるパワーダウンシーケンスに際して共有キャッシュのサイズを徐々に減少させることの両方のために用いられてもよい。
これらの及び他の実施形態は、以下の説明及び添付の図面を参照することによって明らかになるであろう。
図1はコンピュータシステムの1つの実施形態を示す一般化されたブロック図である。
図2は例示的な処理ノードの1つの実施形態を示す一般化されたブロック図である。
図3はセットアソシアティブキャッシュ記憶配置の1つの実施形態を示す一般化されたブロック図である。
図4は共有資源内でのデータの効率的な割り当てのための方法の1つの実施形態のフロー図である。
図5は効率的なキャッシュラインロックメカニズムのための方法の1つの実施形態のフロー図である。
図6は効率的なキャッシュセクターパワーダウンシーケンスのための方法の1つの実施形態のフロー図である。
図7は効率的なキャッシュセクターパワーアップシーケンスのための方法の1つの実施形態のフロー図である。
本発明が種々の修正及び代替的な形態を許容し得る一方で、具体的な実施形態が例示の目的で図面に示されており、またここに詳細に説明されている。しかし、図面及びそれに対する詳細な説明は、開示された特定の形態に本発明を限定することを意図しているのではなく、むしろ本発明は、添付の特許請求の範囲により画定されるような本発明の精神及び範囲内にある全ての修正、均等なもの及び代替案を網羅するものであることが理解されるべきである。
以下の説明においては、本発明の完全な理解をもたらすために多くの特定の詳細が示されている。しかし、当業者であれば、これらの特定の詳細なしに本発明が実施され得ることを認識すべきである。幾つかの例では、周知の回路、構造及び技術は、本発明を不明瞭にすることを避けるために、詳細には示されていない。
図1を参照すると、コンピュータシステム100の1つの実施形態が示されている。一般的に言えば、コンピュータシステム100は複数の処理ノード110a〜110dを含む。ここで用いられているように、文字が続く参照番号によって参照される要素は、当該番号単独によって集合的に参照されることがある。例えば、処理ノード110a〜110dは、処理ノード110又はノード110として集合的に参照されることがある。図1には4つのノード110が示されているが、他の実施形態は、1個の、2個の、6個の、又は任意の異なる数のノードを備えていてよく、各ノード110は1つ以上のプロセッサコアを備えている。
各ノード110は、それぞれのメモリ制御器(MC)120を介してそれぞれのメモリ130に結合されてよい。加えて、各処理ノード110は、他の処理ノード110と通信するために用いられるインタフェース(IF)論理140を含んでいてよい。例えば、処理ノード110aは、処理ノード110b及び110cと通信するためのインタフェース論理140aを含む。同様に、処理ノード110bは、処理ノード110a及び110dと通信するためのインタフェース論理140bを含み、他も同様である。図1の実施形態においては、処理ノード110dは、インタフェース論理140dを介して入力/出力(I/O)デバイス160aと通信するように結合されるものとして示されている。I/Oデバイス160aは更に第2のI/Oデバイス160bに結合される。また、処理ノード110dは、グラフィクス処理ユニット(GPU)170と通信するように結合されるものとして示されている。他の処理ノードも同じようにして他のI/Oデバイス、他のGPU、又は他の要素と通信してよい。代替的には、処理ノード110はI/Oブリッジと通信してよく、I/OブリッジはI/Oバスに結合される。
1つの実施形態では、コンピュータシステム100は、I/Oデバイス160及びGPU170に結合するものとして示されるノード110dのような唯一の処理ノード110を有していてよい。そのような実施形態の例は、モバイルラップトップシステム、デスクトップ、低位機サーバシステム、中位機ワークステーション、その他を含む。そのような実施形態に対しては、単一の処理ノード110が通信のためのシステムバス制御器を内部的に利用してよい。システムバス制御器の1つの例は、AMD−762(商標)ノースブリッジシステムバス制御器(Northbridge system bus controller)である。
別の実施形態においては、コンピュータシステム100は多重処理ノード110を含んでいてよい。そのような実施形態に対しては、コンピュータシステム100がノード間通信のためのパケットベースのリンクを実装していてよい。図示される実施形態においては、複数の単方向性の線の複数のセットとしてリンクが実装される(例えば、処理ノード110aから処理ノード110bへパケットを送信するために複数の線150aが用いられ、そして処理ノード110bから処理ノード110aへパケットを送信するために複数の線150bが用いられる)。図1に示される他の処理ノードの間でパケットを送信するために他の線150c〜150hのセットが用いられる。
リンク150は、複数の処理ノード間での通信のためのキャッシュコヒーレントなやり方で動作させられてよく、又はI/Oデバイス160a〜160b(及び所望に応じて追加的なI/Oデバイス)の間でのデイジーチェイン(daisy-chain)構成として非コヒーレントなやり方で動作させられてよい。尚、1つの処理ノード110から他へ送信されるべきパケットは、1つ以上の中間ノードを通過してよい。例えば、処理ノード110aによって処理ノード110dへ送信されるパケットは、図1に示されるような処理ノード110b又は処理ノード110cのいずれかを通過してよい。任意の適切な経路付けアルゴリズムが用いられてよい。コンピュータシステム100の他の実施形態は、図1に示される実施形態よりも多い又は少ない処理ノードを含んでいてよい。また、各処理ノードが点対点ネットワークを介して全ての他の処理ノードと結合される他の実施形態も可能である。
図示されるメモリ制御器及びインタフェース論理に加えて、各処理ノード110は、後で更に説明されるように1つ以上のプロセッサ及び関連するキャッシュを含んでいてよい。概して処理ノード110は、少なくとも1つのプロセッサを備えており、そして所望に応じて、メモリ及び他の論理と通信するためのメモリ制御器を随意的に含んでいてよい。
メモリ130は任意の適切なメモリデバイスを備えていてよい。例えばメモリ130は、1つ以上のRAMBUSダイナミックランダムアクセスメモリ(DRAM)、同期DRAM(SDRAM)、DRAM、スタティックRAM等を備えていてよい。コンピュータシステム100のアドレス空間は複数のメモリ130間で分割される。各処理ノード110は、どのアドレスがどのメモリ130にアドレスされるか、及びこれに伴い特定のアドレスに対するメモリ要求がどの処理ノード110に経路付けられるべきかを決定するために用いられるメモリマップを含んでいてよい。1つの実施形態では、コンピュータシステム100内でのアドレスに対するコヒーレンシ点は、そのアドレスに対応するバイトを記憶しているメモリに結合されるメモリ制御器120である。メモリ制御器120は、メモリ130とインタフェースするための制御回路を備えていてよい。加えて、メモリ制御器120は、メモリ要求を待ち行列に入れるための要求キュー(request queues for queuing memory requests)を含んでいてよい。
概してインタフェース論理140は、リンクからのパケットを受信するため及びリンク上に送信されるべきパケットをバッファするためのバッファを備えていてよい。コンピュータシステム100は、パケットを送信するための任意の適切なフロー制御メカニズムを採用していてよい。I/Oデバイス160は任意の所望の周辺デバイスとして図示されている。例えばI/Oデバイス160は、ネットワークインタフェースカード、ビデオアクセラレータ、オーディオカード、ハード又はフロッピー(登録商標)のディスクドライブ又はドライブ制御器、スモールコンピュータシステムズインタフェース(SCSI)アダプタ及びテレホンカード(telephony cards)、モデム、サウンドカード、並びに汎用インタフェースバス(GPIB)又はフィールドバスインタフェースカードのような種々のデータ収集カードを備えていてよい。
図2は例示的な処理ノード110の1つの実施形態のブロック図である。図1の回路部分に対応する回路部分には同一の数字が付されている。処理ノード110は、メモリ制御器120と、インタフェース論理140と、プロセッサコア112及び対応するキャッシュメモリサブシステム114を含み得る1つ以上の処理ユニット115と、システム通信論理116と、共有キャッシュメモリサブシステム118とを含んでいてよい。1つの実施形態では、処理ノード110の図示される機能は単一の集積回路上に組み込まれている。別の実施形態では、図示される機能はコンピュータマザーボード上のチップセット内に組み込まれる。
1つの実施形態では、処理ノード110は、モバイルコンピュータ、デスクトップ、その他におけるスタンドアローンシステムである。1つの実施形態では、システム通信論理116はシステムバスである。別の実施形態では、ユニット115をメモリ130、I/Oデバイス160、GPU170、その他に結合するために、処理ノード110はノースブリッジシステムバス制御器を論理116内に組み込んでいる。そのような実施形態においては、システム通信論理116は、メモリ制御器120及びインタフェース論理140の機能を置換し又は組み込んでいてよい。1つの実施形態では、論理116はノースブリッジ及びサウスブリッジ両方のシステムバス制御器を組み込んでいてよい。ノースブリッジプロトコルは、ユニット115をメモリ130及びGPU170に結合するために用いられてよい。サウスブリッジプロトコルは、ユニット115をI/Oデバイス160、リアルタイムクロック、電力管理ユニット、その他に結合するために用いられてよい。論理116のそのような実施形態の1つの例は、AMD−762(商標)ノースブリッジシステム制御器及びAMD−768(商標)サウスブリッジ周辺バス制御器を含んでいてよい。
別の実施形態においては、処理ノード110は多重ソケットシステムの1つのソケットである。そのような実施形態においては、システム通信論理116はパケット処理論理を組み込んでいてよい。概してシステム通信論理116は、プロセッサコア112及び/又はキャッシュメモリサブシステム114に応答して制御パケットを生成すること、メモリ制御器120によって選択されるサービスのためのトランザクションに応答してプローブコマンド(probe commands)及び応答パケットを生成すること、並びにインタフェース論理140を介して他のノードへの中間ノードであるノード110に対してパケットを経路付けることのために、処理ノード110が結合されているリンク上で受信される制御パケットに応答するように構成されてよい。インタフェース論理140は、パケットを受信し且つ論理116内のパケット処理論理によって用いられる内部クロックにパケットを同期させる論理を含んでいてよい。
プロセッサコア112は、所定の命令セットに従って命令を実行するための回路を含む。例えば、x86命令セットアーキテクチャ(ISA)が選択されてよい。代替的には、アルファ(Alpha)、パワーPC(PowerPC)、又は任意の他の命令セットアーキテクチャが選択されてよい。概してプロセッサコア112は、データ及び命令に対してそれぞれキャッシュメモリサブシステム114にアクセスする。ここで用いられているように、キャッシュメモリサブシステムに関して「アクセスする(access)」の用語は、対応する要求アドレスの要求されたデータがキャッシュ内に存在する場合におけるキャッシュヒット又はキャッシュ内にそれが存在しない場合におけるキャッシュミスをもたらし得る読み出し又は書き込み要求動作を実行することを参照する。
要求されたブロックがキャッシュメモリサブシステム114内又は共有キャッシュメモリサブシステム118内で発見されないようなキャッシュミスが生じると、読み出し要求が生成されてよく、読み出し要求はミスしているブロックがマッピングされているノード内のメモリ制御器へ送信されてよい。要求されたブロックを伴う対応するキャッシュフィルライン(cache fill line)は、元の読み出し又は書き込み要求を完了するために、対応するキャッシュへと運ばれてよい。また、キャッシュフィルラインは、そのキャッシュ内の対応するセット内に置かれてよい。対応するセット内に利用可能なウエイ(ways)がない場合には、典型的には最長時間未使用(Least Recently Used)(LRU)アルゴリズムが、セット内のどのウエイがそのデータを退去させると共にキャッシュフィルラインデータで置換されるべきかを決定する。ここで用いられているように、「割り当てる(allocate)」の用語は、より低レベルのキャッシュ階層からフェッチされたキャッシュフィルラインを、特定のキャッシュへのキャッシュミスに続いてその特定のキャッシュのウエイ内に記憶することを参照する。
キャッシュサブシステム114及び118は、データのブロックを記憶するように構成される高速キャッシュメモリを備えていてよい。キャッシュメモリサブシステム114は、それぞれのプロセッサコア112内に一体化されていてよい。代替的には、キャッシュメモリサブシステム114は、所望に応じてバックサイドキャッシュ構成又はインライン構成でプロセッサコア112と結合されていてよい。更には、キャッシュメモリサブシステム114は、キャッシュの階層として実装されてよい。プロセッサコア112(階層内)のより近くに位置しているキャッシュは、所望に応じてプロセッサコア112内に一体化されていてよい。1つの実施形態では、キャッシュメモリサブシステム114は各々L2キャッシュ構造を代表し、そして共有キャッシュサブシステム118はL3キャッシュ構造を代表する。別の実施形態では、キャッシュメモリサブシステム114は各々L1キャッシュ構造を代表し、そして共有キャッシュサブシステム118はL2キャッシュ構造を代表する。他の実施形態もまた可能であり、そして検討されている。
キャッシュメモリサブシステム114及び共有キャッシュメモリサブシステム118の両方が、対応するキャッシュ制御器に結合されるキャッシュメモリ又はキャッシュアレイを含んでいてよい。1つの実施形態では、セットアソシアティブ(set-associative)共有キャッシュメモリサブシステム118のためのキャッシュ制御器は、プログラム可能な構成及び状態レジスタ(configuration and status registers(CSR)並びに論理を含んでいてよい。サブシステム118を使用している種々のソースが、キャッシュミスに続くデータ、例えばキャッシュフィルラインを同一の領域内に割り当てることを防止するために、CSR及び対応する論理は、サブシステム118のキャッシュアレイを多重独立セクションにセグメント化するために利用されてよい。
キャッシュ内に現在すでに記憶されているデータは、CSR内に記憶されている値にかかわらず読み出し又は書き込みアクセスに対して任意のソースによってヒットされてよい。例えば、キャッシュは修正されたデータを有しているであろうから、より低レベルのメモリ階層は対応する古いデータ(stale data)を有しているかもしれない。要求中のソースは、要求されたキャッシュラインの更新されたコピーを受信するべきである。従って、共有キャッシュの特定のセット内の特定のウエイに対しては、任意のソースからのアクセスが許可される一方で、キャッシュミスに起因する割り当ては、CSR内に記憶されている値によって決定される。そのようなスキームは、有用なデータの退去を制限し、あるいは有用でないデータによる共有ャッシュの汚染を制限するであろう。アクセスは任意のソースによって許可されるが、アクセスに対するアドレスの範囲は、各ソースに対して予め定められていてよい。
データは共有キャッシュメモリ118のアレイ内に種々の方法で記憶され得る。例えば、図3は16ウエイセットアソシアティブキャッシュ組織(organization)を用いてデータが記憶される記憶配置(storage arrangement)300の1つの実施形態を示している。セットアソシアティブキャッシュ内の異なる数のウエイ、例えば4ウエイ、8ウエイ、その他が選択されてよい。所与のキャッシュセット332は、共有キャッシュメモリサブシステム118のようなセットアソシアティブキャッシュにアクセスするのに用いられるアドレス310のブロックインデックス318部によって他のセットから選択されてよい。ブロックタグ312及び336が同一の値を含み且つ対応するブロック状態334が有効キャッシュブロックのような予め定められたマッチ値を指定する場合に、キャッシュブロックヒットが生じてよい。
1つの実施形態では、キャッシュ330内のキャッシュライン又はキャッシュブロックのデータ部338は、64バイトを記憶するように構成される。他のサイズも可能であり、そして検討されている。キャッシュ330の16ウエイの各々はまた、状態情報334を記憶してよい。このブロック状態334は、有効ビットと、対応するキャッシュブロックを所有しているソースを表示するキャッシュブロックオーナーエンコーディングと、キャッシュ制御器によって採用されているキャッシュ交換アルゴリズムに関連して使用される最長時間未使用(LRU)退去情報と、キャッシュコヒーレンシ状態、例えば修正された状態、排他的な状態、所有された状態、共有された状態、無効にされた状態、その他の状態を指定する表示とのうちの少なくとも1つ又は2つ以上を備えていてよい。他の含まれる状態情報も可能であり、そして検討されている。ブロックタグ336は、選択されたキャッシュセット332内で16キャッシュラインのどれがアクセスされている最中であるかを決定するために用いられてよい。加えて、アドレス310のオフセット320が、キャッシュライン内の具体的なバイト又はワードを表示するために用いられてよい。
キャッシュセット332は、アドレス310のブロックインデックス318によって選択されてよい。ブロック状態334及びブロックタグ336は、各キャッシュウエイ内のデータ338と共に連続するビット内に記憶されていてよいが、1つの実施形態では、ブロック状態334及びブロックタグ336は、データ338と同じアレイ内よりはむしろ、別個のアレイ内に記憶されていてよい。
キャッシュアレイ内でのキャッシュミスに続くメモリ要求のデータ記憶の割り当てを制御することは有用であろう。特定のキャッシュの対応するセット内に利用可能なウエイがない場合には、対応するセット内に現在記憶されているキャッシュラインは退去させられる必要がある。典型的には、現在記憶されているキャッシュラインを退去のために選択するのに最長時間未使用(LRU)スキームが利用される。例えば、コア112a及びコア112bは共有キャッシュ118の特定のセクション内のみに割り当てることを許可されてよく、I/Oデバイスは別個のセクションに割り当てることに制限されてよく、そしてグラフィクス処理ユニット(GPU)は更に別の別個のセクション内のみに割り当てることに制限されてよい。
例えばキャッシュ330内の記憶配置に関しては、コア112aはウエイ15〜12内のみに割り当てることを許可されてよく、コア112bはウエイ11〜8内のみに割り当てることを許可されてよく、GPUはウエイ7及び6内のみに割り当てることを許可されてよく、そして3つの別個のI/Oデバイスは各2ウエイ内のみに、例えばそれぞれウエイ5及び4内のみと、ウエイ3及び2内のみと、ウエイ1及び0内のみとに割り当てることを許可されてよい。従って、コア112a及び112bは各々共有キャッシュの1/4を割り当てることができ、そしてGPU170及び3つのI/Oデバイス160の各々は、同じ共有キャッシュの1/8を各々が割り当てることができる。割り当てのための予め定められた許可を提供するメカニズムについては簡単に説明されるであろう。このようにして、別個のセクション内で各ソースに関連する非共有、独立のデータ記憶を維持することによって、これらのソースはサブシステム118のキャッシュアレイを効率的に共有することができる。1つの実施形態では、例において説明されるように、コア112は、データ割り当てに対してGPU170及び任意のI/Oデバイス160よりも大きな共有キャッシュ118のセクションを有していてよい。
尚、割り当てる許可を有していないソースによる特定のウエイ内への書き込み動作キャッシュヒットは、通常どおりに行われる。上述の例を用いると、I/Oデバイス160は、ウエイ15内に割り当てる許可を有していないであろう。もし、I/Oデバイス160が特定のセット内のキャッシュラインの読み出し動作を実行してキャッシュミスが生じると、要求されたキャッシュラインを含んでいるキャッシュフィルラインが、より低レベルのメモリ階層からフェッチされる。このキャッシュフィルラインは読み出し動作を完了するために用いられる。それに続いて又は同時に、キャッシュセット内の全てのキャッシュウエイの間で選択するよりはむしろ、対応するキャッシュセット内の予め定められた数のウエイ内で、置換されるべきキャッシュウエイを選択するために、最長時間未使用(LRU)アルゴリズムのようなメカニズムが展開されてよい。対応するCSR内に記憶されるエンコードされた値が、キャッシュウエイ1及び0のみがI/Oデバイス160に対する割り当てのために用いられ得ることを決定するのに使用されてよい。それに続く退去はキャッシュウエイ1及び0内でのみ生じてよく、そしてこれら2つのキャッシュウエイの最長時間未使用キャッシュウエイが選択されてよい。1つの実施形態では、I/Oデバイス160が特定のセット内への書き込み動作を実行し且つウエイ15内へのキャッシュヒットが生じている場合には、I/Oデバイス160はウエイ15内のデータを修正してよい。
別の実施形態においては、コア112a及び112bはデータを共有してよいが、このデータはGPU170又は3つの別個のI/Oデバイス160とは共有されなくてよい。両コア112a及び112bはウエイ15〜8のみを割り当てることを許可されてよく、GPU170はウエイ7及び6のみを割り当てることを許可されてよく、そして3つの別個のI/Oデバイス160は各2ウエイのみ、例えばそれぞれウエイ5及び4のみと、ウエイ3及び2のみと、ウエイ1及び0のみとを割り当てることを許可されてよい。従って、コア112a及び112bは共有キャッシュの1/2を割り当てる許可を有し、そしてGPU170及び3つのI/Oデバイス160の各々は、同じ共有キャッシュの1/8を各々が割り当てる許可を有している。
1つの実施形態では、構成及び状態レジスタ(CSR)は、システム内で指定されたキャッシュ、例えばキャッシュメモリサブシステム118を使用する各ソース、例えばコア112a、I/Oデバイス160、GPU170、その他に対する割り当て空間を制御するために、エンコードされた値を記憶するのに用いられてよい。例えば、メモリ要求のソースに基く16ウエイセットアソシアティブ指定キャッシュの分割(partitioning)は、5ビットマスクエンコーディングを利用してよい。エンコーディング値の1つの例が表1に示されている。
Figure 2012522290
上掲の表1に示されるエンコーディングは、システム内で指定されるキャッシュを共有している各ソースに対する割り当て空間を制御することができる。1つの実施形態では、コア112aに対する5ビットCSRは、コア112aがキャッシュ118の16ウエイの半分内にデータを割り当てることを可能にする表1における表項目2のような値「00011」を記憶するようにプログラムされてよい。これらの特定のウエイはウエイ7〜0に指定されてよく、ここでは、図3におけるキャッシュ330の例示的な記憶配置と同様に、ウエイは、キャッシュのセット内で左から右へ15〜0の番号を付されている。他の標識付けスキームも可能であり、そして検討されている。
同様に、GPU170に対する5ビットCSRは、GPUがキャッシュ118の16ウエイの4つ内にデータを割り当てることを可能にする表1における表項目3のような値「01001」を記憶していてよい。これらの特定のウエイはウエイ11〜8に指定されてよい。第1のI/Oデバイス160に対する第3の5ビットCSRは、第1のI/Oデバイスがキャッシュ118の2つのウエイ内にデータを割り当てることを可能にする表1における表項目2のような値「01100」を記憶していてよい。これらの特定のウエイはウエイ13〜12に指定されてよい。最後に、第2のI/Oデバイス160に対する第4の5ビットCSRは、第2のI/Oデバイスがキャッシュ118の2つのウエイ内にデータを割り当てることを可能にする表1における表項目4のような値「01110」を記憶していてよい。これらの特定のウエイはウエイ15〜14に指定されてよい。同様に、キャッシュ118は異なる数のウエイを利用してよく、また表1のエンコーディングは、異なる数のウエイ、例えば4ウエイ、8ウエイ、又は他のセットアソシアティブ選択に適合するように変更されてよい。
尚、キャッシュのある領域、例えばウエイ1及び0、即ち16ウエイセットアソシアティブキャッシュの1/8は、全てのソースによる割り当てに対して無効にされていてよく、同時に全てのソースによる割り当てのためにキャッシュの他の領域を有効にしてよい。1つの実施形態では、各ソースが対応する個々のCSRを利用することに加えて、グローバルCSRが全てのソースによって利用されてよい。グローバルCSR内に記憶されるエンコードされた値は、個々のCSR内に記憶されるエンコードされた値をオーバーライド(override)してよい。例えば1つの実施形態では、グローバルCSRは、表1の表項目6のような値「10000」を記憶するようにプログラムされてよい。表1に従うこの値は、対応するセットアソシアティブキャッシュのウエイ1及び0について任意のソースによる割り当てを無効にする。キャッシュのウエイ1及び0以外の追加的なウエイは、対応する個々のCSRに従って特定のソースによる割り当てに対して無効にされてよいが、ウエイ1及び0は、個々のCSRの記憶されているエンコードされた値にかかわらず、無効にされていることが保証される。別の実施形態では、グローバルCSRを利用するよりはむしろ、特定のソースのための各個々のCSRが、ウエイ1及び0を無効にするために修正されたその内容を有していてよい。いまや、ウエイ1及び0内に記憶されている情報は、後のフィルトランザクション(later fill transaction)によりビクティム化されること(being victimized)が防止されている。これら特定のウエイ、即ちこのケースにおけるウエイ1及び0は、割り当てのために先に使用されていてよい。そのような使用の更なる詳細は後で提供される。
1つの実施形態では、処理ノード110内のキャッシュ118のためのキャッシュ制御器は、特定のキャッシュアクセス要求のソースを認識しているので、キャッシュ制御器及び対応する論理は、どのCSRがキャッシュのウエイ有効及びウエイ無効制御のためにアクセスしているのかを知っていることになる。1つの実施形態では、特定のソースへの特定のCSRの割り当て及び特定のCSRの記憶されている値の両方ともが、システムの起動の間に基本入力出力ソフトウエア(BIOS)によってセットされる。従って、割り当て及び値は1回だけセットされ、このことはセキュリティの理由からなされていてよく、その一方でBIOSは後で変更され又は更新されてよい。別の実施形態では、デバイスドライバによって動的にロードされ且つオペレーティングシステム更新メカニズムを介して透過的に(transparently)更新されるファームウエアが、CSRの割り当て及び記憶される値の両方をそのような許可が与えられている場合に変更するために用いられてよい。更に別の実施形態では、CSRの割り当て及び記憶される値をプログラムしまた再プログラムするために、例えば特定のアプリケーションのための制御をソフトウエアプログラマに提供することのような他のソフトウエアメカニズムが利用されてよい。繰り返すが、そのような制御はセキュリティを理由として制限されてよい。
下の表2は表1に示されるエンコーディングを拡張している。表2に関して、1つの実施形態では、ベクトル[15:0]内の論理「1」は指定されたセットアソシアティブキャッシュ内で有効にされているウエイを定義していてよく、そして論理「0」は無効にされているウエイを定義していてよい。
Figure 2012522290
既に述べたように、構成及び状態レジスタ(CSR)は、共有されている資源内での各ソースに対する割り当て空間を制御するために、表1又は表2に示される値のようなエンコードされた値を記憶するのに用いられてよい。例えば、上で議論されたように、I/O要求ソースは、16ウエイセットアソシアティブキャシュの2ウエイのみ、例えばキャッシュのウエイ15及び14のみを割り当てるようにプログラムされてよい。このことは、これらのI/O要求に対応するCSRが5ビット値「01110」を記憶するようにCSRをプログラムすることによって達成され得る。表1の表項目4及び表2の表項目15は両方とも5ビット値「01110」に対応しており、ウエイ15及び14がこのエンコーディングに対して有効にされることを示している。上述の実施形態におけるそのようなエンコーディングは、共有キャッシュ内の記憶の1/8を超えてI/O要求が割り当てることを可能にはしなくてよい。
セットアソシアティブキャッシュのような共有資源の割り当てのためにメモリ要求のソースを利用することに加えて、メモリ要求の種類が用いられてもよい。共有キャッシュの特定のウエイの対応するキャッシュラインを割り当てることをメモリ要求が許可されているかどうかを決定するために、メモリ要求の種類がキャッシュ制御器内の制御論理のような論理によって利用されてよい。オプコード(opcode)にエンコードされているであろうメモリ要求の種類、及びCSR内に記憶される値は両方とも、キャッシュミスに由来するキャッシュフィルトランザクションの間にキャッシュラインを割り当てるかどうか、及び対応するセットのどのウエイにキャッシュフィルラインが割り当てられるかの両方を決定するために、制御論理によって利用されてよい。更なる詳細が簡潔に提供される。概して、キャッシュをヒットする読み出し要求に対しては、対応するキャッシュラインのデータ部は修正されない。しかし、状態情報、例えばコヒーレンシ状態、LRU情報、その他は更新されることがある。キャッシュをミスする読み出し要求に対しては、同様に、対応する要求されたキャッシュラインのデータ部は修正されないが、状態情報は更新されることがある。ミスしている対応するキャッシュラインは、より低レベルのメモリ階層からフェッチされたものであろう。この対応するキャッシュラインは、予め定められたキャッシュラインフィル要求に応じて共有キャッシュ内に記憶されても記憶されなくてもよく、又は割り当てられても割り当てられなくてもよい。
一方、概してキャッシュをヒットする書き込み要求に対しては、対応するキャッシュラインのデータ部は、キャッシュコヒーレンシ、オーナーシップ状態、及び/又はその他のような他の要求が満たされている場合に修正される。加えて、対応する状態情報について更新が生じることがある。共有キャッシュをミスする書き込み要求は、同様に他の要求が満たされている場合に、フェッチされたキャッシュフィルラインのデータ部が修正されるのを可能にしてよい。読み出し要求ミスと同様に、書き込みミスに対する対応するキャッシュラインは、より低レベルのメモリ階層からフェッチされたものであろう。この対応するキャッシュラインは、予め定められたキャッシュラインフィル要求に応じて共有キャッシュ内に記憶されても記憶されなくてもよく、又は割り当てられても割り当てられなくてもよい。
キャッシュラインフィル要求を決定する制御論理は、表1及び2に示される例のようなソースに基くエンコーディング情報に加えて、入ってくるメモリ要求の命令種類を利用してよい。共有可能なキャッシュは、多重の異なる種類の要求をサポートしてよい。共有可能なキャッシュによってサポートされるメモリ要求の幾つかの例が表3に示されている。
Figure 2012522290
ソース及びメモリ要求種類の組み合わせは、キャッシュラインの単一又は複数のデータ部及び同時に対応する状態情報が割り当てられる条件をユーザがプログラムすることに対する柔軟性を提供し得る。所与の要求ソースからの要求の予め定められた種類のみが、キャッシュ内への割り当てのために考えられてよい。1つの実施形態では、表2に示されるエンコーディングと同様のエンコーディングを伴う各ソースからの各コマンド種類に対するシステム内の1つ以上のCSRの追加によって、プログラム可能性が提供され得る。このプログラム可能性は、キャッシュ制御器によるトランザクション毎に基いて強化され得る。割り当てに対してプログラムされていない要求は、キャッシュミスの間キャッシュ内へは割り当てられない。
別の実施形態では、表2に示されるエンコーディングと同様のエンコーディングを伴うメモリ要求の各ソースに対するシステム内の1つ以上のCSRの追加によって、プログラム可能性が提供され得る。キャッシュミスに起因するキャッシュフィルイベントの場合、キャッシュフィルラインがキャッシュ内へ割り当てること及び場合によってはキャッシュの同じセット内の別のキャッシュラインの退去を生じさせることを許可されているか否かを決定するために、メモリ要求のオプコード又はコマンドの種類がキャッシュ制御器内の論理によって利用されてよい。表2における例のようなソースに基く表エンコーディング値は、そのような割り当てが生じることを可能にするが、このエンコーディング値は、セットのどのウエイが割り当てられ得るかを制限することがある一方で、コマンド種類がこの許可をオーバーライドして割り当てを阻むであろう。更に別の実施形態では、予め定められた値を記憶しているCSRが前述したように各ソースに対して存在していてよいが、1つ以上のCSR内の値は、入ってくるコマンド種類によって変更されてよい。予め定められた値の変更は、それが生じることをセキュリティ制限が許す場合にのみ可能であってよい。例えば、CSR値は、典型的なソフトウエアアプリケーションの実行に基いては変化させられることを許可されなくてよい。
この付加された特徴は、どの種類の要求がキャッシュ内へ割り当てることを許可されているのかをユーザが選択し得るので極めて有用であろう。例えばCLVICBLKメモリ要求がキャッシュ内でミスする場合、このラインを、より良いプローブフィルタリング(probe filtering)結果のためだけに追跡されることを必要とするクリーンビクティム(clean victims)としてキャッシュ内へ割り当てないことが有益であろう。また、特定のI/Oデバイス160に対しては、このデバイスに対するデータが殆ど用いられない場合、共有可能キャッシュ内でミスしているこの特定のI/Oデバイス160からの読み出し及び書き込みメモリ要求は、プロセッサコアに対して有用なデータを不注意に退去させてしまうかもしれない。このような状況においては、共有可能なキャッシュのかなりの部分が、再び用いられないであろうデータを記憶していることがある一方で、有用な情報は退去させられてしまう。このように、システム性能が劣ってしまうであろう。表1〜3によって説明されキャッシュ制御器内の論理によって強化されるプログラム可能性は、そのような状況を回避すること及びシステム性能を高めることを支援し得る。
更に、システムアーキテクチャは、1つの実施形態においては、メモリ要求と共に例えば対応するパケット内に含まれるべき予め定められたヒントビット(hint bits)の付加及び使用を支援してよい。このヒント情報は、オプコードに連続して位置させられ又はメモリ要求命令若しくはパケット内の別の場所に置かれるビットであってよい。キャッシュ制御器内の論理は、オプコード又はコマンド種類情報と同様にこれらのヒントビットを利用して、例えばキャッシュミスに由来するフィルイベントの間に、対応するメモリ要求が共有可能キャッシュ内へ割り当てることを許可されているか否かを決定してよい。
1つの実施形態では、これらのヒントビットは、オプコードによって供給されるメモリ要求に加えてよりはむしろ単独で用いられてよい。別の実施形態では、これらのヒントビットは、当該決定を行うためにオプコードと一緒に用いられてよい。例えば、ヒントビットの第1の値は、オプコードが単独で決定のために用いられるべきであることを表示してよい。ヒントビットの第2の値は、オプコード値がバイパスされ、そしてヒントビットのみが決定のために用いられることを表示してよい。第3の値は、ヒントビット及びオプコード値の両方が決定のために考慮される必要があることを表示してよい。状態図(state diagram)において用いられ得る他の組み合わせが可能であり、そして検討されている。
前述したように、1つの実施形態では、表2における例のようなソースに基く表エンコーディング値は、フィルイベントが共有キャッシュ内に割り当てることを可能にするであろうが、ヒントビット又はヒントビットとコマンド種類の組み合わせは、この許可をオーバーライドして割り当てを阻むであろう。更に別の実施形態では、予め定められた値を記憶しているCSRが前述したように各ソースに対して存在していてよいが、1つ以上のCSR内の値は、入ってくるコマンド種類のヒントビットによって変更されてよい。予め定められた値の変更は、それが生じることをセキュリティ制限が許す場合にのみ可能であってよい。繰り返すが、CSR値は、典型的なユーザによって書かれた典型的なソフトウエアアプリケーションの実行に基いては変化させられることを許可されなくてよい。
ヒントビットにより供給されるトランザクション毎ベースの表示は、特定のトランザクションに属しているデータの再使用される見込みが殆どない状況において有用であり、従って、フィルメカニズムは、このデータをミスの後に表2のような予め定められた表に従ってキャッシュ内へと割り当てることはしないが、メモリ要求命令種類はキャッシュ修正可能であってよい。1つの実施形態では、この特徴は、I/Oデバイス160のようなI/O要求ソースに対して広範囲に用いられてよい。そのようなメカニズムはキャッシュの汚染を防止することができる。
図4は共有資源におけるデータの効率的な割り当てのための方法400を示している。方法400は、代替的な実施形態を導き出すために当業者によって修正され得る。また、この実施形態におけるステップは逐次的な順序で示されている。しかし、幾つかのステップは図示されているのとは異なる順序で起こってよく、幾つかのステップは同時に実行されてよく、幾つかのステップは他のステップと組み合わされてよく、そして幾つかのステップは別の実施形態ではなくてよい。図示される実施形態においては、入ってくる動作による割り当てに対して共有資源のどのサブ部分が有効にされているか又は無効にされているかを決定するために用いられる初期割り当てが、ブロック402においてセットされる。例えば、表2のような表において定義される初期エンコーディング値が適切なGSR内に記憶されてよい。
ブロック404においては、1つ以上のコンピュータプログラム又はソフトウエアアプリケーションが実行される。これらのアプリケーションは、1つ以上のプロセッサコア112、グラフィック処理ユニット(GPU)170、I/Oデバイス160、その他によって実行されてよい。ソフトウエアアプリケーションを実行するこれら構成要素は、各々データキャッシュのような共有可能資源にアクセスしてよい。1つの実施形態では、共有可能資源は、図2における共有キャッシュメモリサブシステム118のような共有可能L2又はL3キャッシュであってよい。プロセッサコア112による共有キャッシュのアクセス又はメモリ要求は、GPU170又はI/Oデバイス160のような他のソースに由来するアクセスよりも強い衝撃(higher impact)をシステム性能に対して有するであろう。
共有キャッシュに対してメモリ要求が提示されると(条件ブロック406)、ブロック408において、共有キャッシュの対応するセット内での割り当てに対する可能なウエイの決定が行われる。メモリ要求のソースは知られており、そして対応するCSRにアクセスするために用いられてよく、CSRの記憶されている値は、対応するセット内の可能なウエイの集合(collection)を決定する。他の実施形態においては、メモリ要求種類及び/又はヒントビットが、表3に関して先に述べたように、可能なウエイの集合を決定するために用いられてもよい。
メモリ要求がキャッシュをミスし、従って正しいラインが低レベルのメモリから検索されること(to be retrieved)を必要とする場合(条件ブロック410)、フィルラインが共有キャッシュ内へ割り当てられることを許可されているか否かに関する決定が行われる(条件ブロック414)。この決定はソース、オプコードによって決定され得るコマンド種類、命令又はパケット内に含まれるヒントビット、これらの因子の組み合わせ、その他に基いていてよい。
メモリ要求が共有キャッシュ内へ割り当てることを許可されない場合(条件ブロック414)、メモリ要求の動作はブロック416へ進んでよく、例えば検索されたフィルラインの内容が読み出され又は書き込まれるが、フィルラインは共有キャッシュ内には置かれない。例えば、対応するデータを再使用しないものとして知られているI/Oデバイス160が、キャッシュミスに続き共有キャッシュ内へ値を割り当てることができないように、対応するCSR内に記憶されている値によってプログラムされてよい。従って、共有キャッシュ内のより多い空間が、1つ以上のプロセッサコア112又はGPU170のような他のソースに対して利用され得る。
メモリ要求がキャッシュミスに続いて共有キャッシュを割り当てることを許可される場合(条件ブロック414)には、メモリ要求の動作はブロック418へ進んでよく、例えば検索されたフィルラインの内容が読み出され又は書き込まれ、加えてフィルラインは共有キャッシュ内に置かれる。共有キャッシュ内へ置くことの間、CSRの内容が、どのキャッシュウエイが修正されることが可能かを決定してよい。例えば、コア112aは、ウエイ15〜8のようなキャッシュの半分を修正し又は割り当てることを許可されてよい。一方、I/Oデバイス160は、ウエイ5及び4のようなキャッシュの1/8のみを修正し又は割り当てることを許可されてよい。既に満杯のセットに対しては、LRUスキームに基くキャッシュラインの退去が割り当てプロセスの間に生じてよい。また、セットは満杯でないが、特定のソースに対するセットの全ての可能なウエイ、例えば上述の例におけるI/Oデバイス160に対するウエイ5及び4が満杯である場合には、LRU又は他のスキームに基くキャッシュラインの退去が割り当てプロセスの間に生じてよい。
上述の方法は、キャッシュの特定の指定されたラインをロードし且つロックし又は退去させられることから回避するために用いられてもよい。これらのロックされたラインは、全てのソースによる割り当てに対して無効にされてよい。これらのロックされたラインは、擬似ランダムアクセスメモリ(RAM)として用いられてよい。そのようなメカニズムは、次いで、システム起動の間に基本入力出力ソフトウエア(BIOS)がキャッシュのセクションをロードし且つロックすることを可能にするために用いられてよい。例えば、そのようなメカニズムは、システム内のダイナミックランダムアクセスメモリ(DRAM)が未だ初期化されていない場合に、BIOSが共有キャッシュ118その他のようなキャッシュを汎用記憶のために用いることを可能にするために用いられてよい。この特徴は、システム起動のために必要な時間を短縮することができる。
BIOSは、いまや、キャッシュ内の特定のセグメントを利用して、他のソースによって退去させられているそれらのロックされたラインなしでデータ構造を記憶することができる。例えば、そのようなキャッシュウエイロックスキームは、I/O空間、例えばプログラム可能リードオンリメモリ(PROM)イメージからの起動コードの読み出し動作のようなキャッシュへの他のフィル要求をシステムが実行する場合に、BIOSがデータを記憶しているラインが退去させられないことを確実にし得る。
次に図5を参照すると、効率的なキャッシュラインロックメカニズムのための方法が示されている。方法500は、代替的な実施形態を導き出すために当業者によって修正され得る。また、この実施形態におけるステップは逐次的な順序で示されている。しかし、幾つかのステップは図示されているのとは異なる順序で起こってよく、幾つかのステップは同時に実行されてよく、幾つかのステップは他のステップと組み合わされてよく、そして幾つかのステップは別の実施形態ではなくてよい。図示される実施形態においては、コンピュータシステムのためのセットアップソフトウエアがブロック502で実行される。
ブロック504においては、システム内の1つ以上のCSRが、共有キャッシュ内に特定のウエイを割り当てる許可を表示する値を記憶するようにプログラムされてよい。例えば、「00000」のエンコーディング値に対応する表2の表項目1が、16ウエイセットアソシアティブ共有キャッシュのウエイ1及び0内への割り当てを可能にするために用いられてよい。共有キャッシュの全サイズの1/8のサイズの領域がこのようにしてマッピングされてよく、そして擬似RAMとして用いられてよい。
次いでブロック506においては、BIOSのようなセットアップソフトウエアが、共有キャッシュのキャッシュラインと同一のサイズ及びアライメントを有する擬似RAM内のロケーションを初期化してよい。この初期化を実行するために、BIOSは、未だ初期化されておらず且つこのキャッシュラインロケーションの少なくとも1バイトへのロード動作又は読み出し動作を未だ発行してしてない書き戻し(write-back)DRAMへキャッシュラインをマッピングしてよい。このロードの一部として発行される、結果としてのフィルトランザクションは、DRAMを未だ初期化していない無効にされたメモリ制御器へと送られてよい。メモリ制御器は、全論理ゼロのデータ値を返送してよく、そして係属中のフィル要求を完了してよい。このデータは次いで共有キャッシュ内へ割り当てられる。BIOSは、このキャッシュラインが共有キャッシュに割り当てられた後であれば、このキャッシュに対して記憶動作又は書き込み動作を実行してよい。
共有キャッシュの終点に達していない場合(条件ブロック508)、例えば初期化されている最中の可能なウエイに対応する最後の非初期化キャッシュラインである場合、方法500の制御フローはブロック506に戻る。それ以外の場合には、共有キャッシュの別の可能なウエイが同様にして初期化されてよい(条件ブロック510)。共有キャッシュの全ての可能なウエイが既に初期化されている場合(条件ブロック510)には、次いでブロック512において、BIOSのようなセットアップソフトウエアが所望の情報をこれら初期化された領域内へ記憶してよい。ブロック514においては、これらの修正されたラインは、前もって割り当てのために用いられたのと同じウエイに対する割り当てを無効にすることによって、共有キャッシュ内へロックされてよい。例えば、対応するCSRが表2の表項目17に記憶される値「10000」を保持するようにセットすることによって、ウエイ1及び0はいまや割り当てに対して無効にされているであろう。いまやウエイ1及び2は、他のソースによって割り当てられないようにされ、又はより新しいフィルトランザクションによって退去させられないようにされている。
加えて、上述した割り当ての方法は、キャッシュが動作している最中にキャッシュのサイズを徐々に減少させことによって、キャッシュの一部分又は全部をパワーダウン状態に置くために用いられてよい。システムレベルでの電力管理のためには、キャッシュのセクションへの電力をオフにし又はゲートする一方で他のセクションが機能しているのを維持することが望ましいであろう。さもなければ、キャッシュは全ての機能を停止する一方で、特定のセクションがパワーダウンされると共にエイリアシング(aliasing)問題を回避するためにキャッシュラインの退去及びリロードが生じるので、システム性能を低下させる待ち時間(latencies)が導入されてしまうであろう。キャッシュが動作を継続しつつパワーダウンメカニズムを介してキャッシュのサイズを徐々に減少させることは、異なる性能及び電力消費特性を伴う幾つかの中間キャッシュスリープ状態を生み出す。キャッシュを監視しているシステム電力管理ハードウエアは、これらの異なる状態を用いてアプリケーション性能とバッテリ寿命の間でトレードオフすることができる。加えて、そのようなパワーダウンシーケンスは、製造不良に悩まされるキャッシュに対して用いられてよい。そのようなキャッシュは廃棄され又は半分に切断され、そしてより低い価格で販売されるであろう。
表1及び表2で指定される値のようなプログラム可能エンコーディング値を介してセットアソシアティブキャッシュ内で特定のウエイの割り当てを有効にすること及び無効にすることは、キャッシュが動作しながらキャッシュのサイズを徐々に削減し、そして最終的にはキャッシュ全体を停止させるために用いられてよい。例えば、16ウエイセットアソシアティブキャッシュ内の全てのウエイが割り当てに対して有効である上述の表2の表項目8のようなエンコーディング値「00111」から、キャッシュのサイズを連続的に減少させる他の複数のエンコーディング値へと徐々に移行させることができ、例えば、「10000」(14ウエイを有効にする表項目17)、「10001」(12ウエイを有効にする表項目18)、「01011」(8ウエイを有効にする表項目12)、「01101」(4ウエイを有効にする表項目14)、「01110」(2ウエイを有効にする表項目15)、そして最終的には「10111」(全てのウエイを無効にする表項目24)へと徐々に移行させることができる。
上述の進行は、対応するアドレスのインデックス部を単一ビットだけ減少させることによって直接的にキャッシュを半分にするよりも効率的であろう。また、アドレスのインデックス部を減少させることによりキャッシュを半分にすることは、キャッシュのパワーダウンされた半分内に通常は置かれる他のアドレスを、むしろパワーアップされ小型にされたキャッシュ内に置いてしまうかもしれない。それにより、そのようなシナリオは、キャッシュのサイズが再び増加させられる必要のあることが後で決定された場合に、これらのアドレスを退去させる付加的な作業を生み出してしまう。
次に図6を参照すると、効率的なキャッシュセクターパワーダウンシーケンスのための方法が示されている。方法400及び500と同様に、方法600のような追加的な方法は、代替的な実施形態を導き出すために当業者によって修正され得る。また、この実施形態におけるステップは逐次的な順序で示されている。しかし、幾つかのステップは図示されているのとは異なる順序で起こってよく、幾つかのステップは同時に実行されてよく、幾つかのステップは他のステップと組み合わされてよく、そして幾つかのステップは別の実施形態ではなくてよい。図示される実施形態では、入ってくる動作による割り当てに対して共有資源のどのサブ部分が有効にされ又は無効にされるのかを決定するために用いられる初期割り当てが、ブロック602においてセットされる。例えば、表2のような表において定義される初期エンコーディング値が、適切なCSR内に記憶されてよい。
ブロック604においては、1つ以上のコンピュータプログラム又はソフトウエアアプリケーションが実行される。これらのアプリケーションは、1つ以上のプロセッサコア112、グラフィック処理ユニット(GPU)170、I/Oデバイス160、その他によって実行されてよい。ソフトウエアアプリケーションを実行するこれら構成要素は、各々データキャッシュのような共有可能資源にアクセスしてよい。1つの実施形態では、共有可能資源は、図2における共有キャッシュメモリサブシステム118のような共有可能L2又はL3キャッシュであってよい。プロセッサコア112による共有キャッシュのアクセス又はメモリ要求は、GPU170又はI/Oデバイス160のような他のソースに由来するアクセスよりも強い衝撃をシステム性能に対して有するであろう。
パワーダウン条件が存在すると決定されると(条件ブロック606)、表2のような表において定義される初期エンコーディング値のような1つ以上のCSR内に記憶されている値は、ブロック608において変更されてよい。処理システムの内部又は外部のいずれかから、例えば図1における処理ノード110からキャッシュ制御器へ入ってくる信号が、特定のキャッシュセクターがパワーダウンされるべきであることを表示している場合に、パワーダウン条件が存在し得る。1つの実施形態では、キャッシュ制御器は、処理システム内の共有キャッシュに対応する。そのような表示を提供するために、種々のパワーダウンメカニズムが当業者によって用いられるであろう。
キャッシュ制御器又は他の論理へ入ってくるパワーダウン表示が、CSRによって記憶されているエンコードされた値を徐々に移行させるための方法を決定するために用いられてよい。影響を受けるCSRは、特定のソースのための個々のCSR、キャッシュ全体に対応する単一のマスターCSR、組み合わせ、その他を含んでいてよい。1つの実施形態では、キャッシュ制御器は、ウエイマスキングによりキャッシュの特定のセクターを割り当てに対して無効にするために、現在の記憶されているエンコーディング値を変化させてよい。1つの実施形態では、キャッシュ全体のための単一のマスターCSRが存在してよい。特定のソースに対しては、メモリ要求割り当てに対して用いられるべきキャッシュの可能なウエイは、マスターCSR及び特定ソース向けCSRの両方に記憶されている値を入力とする論理によって決定されてよい。パワーダウン又はパワーアップのシーケンスに対しては、各ソースのための各CSRに対して単一のマスターCSRのみが修正されてよい。従って、上述したような単一の移行(例えば「00111」から「10000」〜「10001」等)のみが利用されてよい。別の実施形態においては、システム内の各CSRに対して別個の移行が用いられてよい。
ブロック610においては、キャッシュ制御器は、例えば各可能なインデックスにアクセスしながら又は支持する回路が存在する場合には多重インデックス及び対応するセットにアクセスしながらキャッシュのセットを介して移行し、そして無効にされているキャッシュウエイの内容をフラッシュする(flushes)。このステップの間キャッシュそれ自身はまだ機能しており、またメモリ要求はまだ処理されている。
1つの実施形態では、フラッシュすることが完了すると、キャッシュ制御器は、ブロック612において、キャッシュ全体へのメモリ要求の処理をブロックする。別の実施形態では、フラッシュすることが完了すると、キャッシュ制御器は、ブロック612において、無効にされているキャッシュウエイのみへのメモリ要求の処理をブロックする。従って、メモリ要求アクセスは無効にされているウエイのみに対して選択的にブロックされてよく、あるいはメモリ要求アクセスはキャッシュ全体に対してブロックされてよい。次いでブロック614においては、キャッシュ制御器はパワーダウン連絡をキャッシュアレイへ送信する。例えば、キャッシュの目標セクタをウエイマスキングによりパワーダウンするために、キャッシュ制御器からキャッシュアレイへとコマンドが発行されてよい。パワーダウン処理は幾つかのクロックサイクルを必要とするであろうし、それらのクロックサイクルはパワーダウン要求に際して知られていても知られていなくてもよい。キャッシュアレイのパワーダウンが完了した旨の表示が提供されると(条件ブロック616)、キャッシュ制御器は、ブロック618において、メモリ要求がキャッシュにアクセスすることを再び有効にする。このステップは、キャッシュ全体がメモリ要求アクセスに対して事前に無効にされていた場合に、キャッシュ全体へのアクセスを再び有効にしてよい。そうではない場合において、無効にされているキャッシュウエイへのメモリ要求のみがアクセスしないように事前にされていたときには、このステップはスキップされてよい。方法600の制御フローは次いでブロック604へ戻り、ここでは有効にされているキャッシュウエイのみがコンピュータプログラムの実行の間にアクセスされる。
次に図7を参照すると、効率的なキャッシュセクターパワーアップシーケンスのための方法が示されている。ブロック702では、1つ以上のコンピュータプログラム又はソフトウエアアプリケーションが実行される。これらのアプリケーションは、1つ以上のプロセッサコア112、グラフィック処理ユニット(GPU)170、I/Oデバイス160、その他によって実行されてよい。ソフトウエアアプリケーションを実行するこれら構成要素は、各々データキャッシュのような共有可能資源にアクセスしてよい。この共有キャッシュは、例えば方法600と同様の方法によって事前にパワーダウンさせられた特定のセクター又は部分を有していてよい。
対応する論理による場合又はパワーアップ表示が受信される場合のようにパワーアップ条件が存在すると決定されると(条件ブロック704)、1つの実施形態では、ブロック706において、キャッシュ制御器がキャッシュ全体へのメモリ要求の処理をブロックする。別の実施形態においては、パワーアップ条件が存在すると決定されると、キャッシュ制御器は、キャッシュの無効にされた(事前にパワーダウンされた)キャッシュウエイのみへのメモリ要求の処理を単にブロックし続けてよい。従って、メモリ要求アクセスは、無効にされたウエイのみに対して選択的にブロックされ続けてよく、あるいはメモリ要求アクセスはキャッシュ全体に対してブロックされてよい。1つの実施形態では、パワーアップされるべきキャッシュセクターは、キャッシュの全ての無効にされた(事前にパワーダウンされた)キャッシュウエイであってよい。別の実施形態では、パワーアップされるべきキャッシュセクターは、特定のソースのための個々のCSR、キャッシュ全体に対応する単一のマスターCSR、組み合わせ、その他に記憶されるエンコードされた値によって決定されてよい。
次いでブロック708においては、キャッシュ制御器はパワーアップ連絡をキャッシュアレイへ送信する。例えば、キャッシュの目標セクタ又は部分をパワーアップするために、キャッシュ制御器からキャッシュアレイへとコマンドが発行されてよい。同様に、目標セクタは、1つ以上のCSR内に記憶されるエンコードされた値によって決定されてよい。パワーアップ処理は幾つかのクロックサイクルを必要とするであろうし、それらのクロックサイクルはパワーアップ要求に際して知られていても知られていなくてもよい。1つの実施形態では、キャッシュアレイは、ウエイクアップトランジスタを用いて新たなセクターのノード及びワイヤルートを駆動して論理0及び1値を埋める。一旦このステップが完了すると、アレイはトランジスタをフルパワーにオンする。次いで内部初期化が実行され、内部ブロッキングビットがセットされる。
キャッシュアレイのパワーアップが完了した旨の表示が提供されると(条件ブロック710)、キャッシュ制御器は、キャッシュ全体へのアクセスが事前に無効にされていた場合には、ブロック712において、メモリ要求がキャッシュにアクセスすることを再び有効にする。しかし、同時に、キャッシュ制御器はキャッシュウエイマスキングを利用して、直近にパワーオンされたセクターにメモリ要求がアクセスしないようにしてよい。別の実施形態では、キャッシュは状態情報を更新して、直近にパワーオンされたセクターが非アクティブであることを表示してよい。代替的な実施形態では、ウエイマスキング及び状態情報の両方が、キャッシュの直近にパワーオンされたセクターにメモリ要求がアクセスしないようにする一方で、事前にパワーオンされたセクターへのアクセスが再開する(resume)ことの両方に用いられてよい。
ブロック714においては、直近にパワーオンされたセクター又はキャッシュウエイに関して、状態情報が初期化され、またキャッシュチェックが再び有効にされる。1つの実施形態では、キャッシュ制御器は状態マシンを用いて、直接ウエイアクセスを通して直近にパワーオンされたキャッシュウエイを並べ、そして対応する有効ビットがリセットされる。また、ヒット及びパリティ(parity)チェック論理が再び有効にされる。初期キャッシュコヒーレンシプロトコル状態は無効状態にセットされてよい。同様に、このステップと並行して、メモリ要求によるキャッシュの他のセクターへのアクセスが生じる。
ブロック714におけるステップが完了すると、キャッシュアレイは対応する表示をキャッシュ制御器へ送ってよい。続いてブロック716においては、直近にパワーオンされたセクターに対してキャッシュウエイマスキングがいまや有効にされており、1つ以上のCSR内に記憶されている値、例えば表2のような表において定義される初期エンコーディング値は、ブロック716において変更されてよく又は再プログラムされてよい。尚、直近にパワーオンされたキャッシュウエイへの初期アクセスはキャッシュミスを経験するであろうし、またそれに続く割り当ては、1つ以上のCSR内に記憶されるエンコードされた値に少なくとも一部分は基いて決定されてよい。直近にパワーオンされたキャッシュウエイに対しては、初期キャッシュミスは無効データの退去を必要とはしないであろう。
上述の実施形態はかなり詳細に説明されてきたが、上述の開示が完全に理解されるならば、多くの変形及び修正が当業者にとって明らかであろう。後述の特許請求の範囲は、そのような全ての変形及び修正を包含するものとして解釈されることが意図されている。

Claims (20)

  1. メモリ要求を生成するように構成される第1のソースと、
    メモリ要求を生成するように構成される、前記第1のソースとは異なる第2のソースと、
    1つ以上のエントリの第1の部分及び前記第1の部分とは異なる1つ以上のエントリの第2の部分を備えている共有キャッシュと、
    前記共有キャッシュに結合される共有キャッシュ制御器とを備えたコンピュータシステムであって、
    前記共有キャッシュ制御器は、
    前記第1のソースによって割り当てられるが前記第2のソースによっては割り当てられないデータを前記第1の部分が有することを許可されているかを決定し、
    前記第2のソースによって割り当てられるが前記第1のソースによっては割り当てられないデータを前記第2の部分が有することを許可されているかを決定するように構成されるコンピュータシステム。
  2. 前記共有キャッシュ制御器は、対応するメモリ要求のコマンド種類、及び対応するメモリ要求に含まれるヒントビットの少なくとも一方に更に基いて前記決定することを実行するように更に構成される請求項1に記載のコンピュータシステム。
  3. 前記共有キャッシュ制御器は、前記共有キャッシュが動作を継続している間に、パワーダウン通知を受信することに応答して、
    任意のソースによって割り当てられるデータを前記第1の部分が有することを許可されていないかを続いて決定し、
    当該内容を前記第1の部分の低レベルメモリへフラッシュし、
    前記第1の部分へのメモリ要求をブロックし、
    パワーダウン通知を前記第1の部分に対する前記共有キャッシュへ送信するように更に構成される請求項2に記載のコンピュータシステム。
  4. 任意のソースによって割り当てられるデータを有することが許可されないと決定される前記共有キャッシュの部分内に基本入力出力ソフトウエア(BIOS)によって利用されるシステムセットアップ情報を記憶することを更に備えた請求項2に記載のコンピュータシステム。
  5. 前記第1のソース及び前記第2のソースの各々は、プロセッサコア、グラフィクス処理ユニット(GPU)、及び入力/出力(I/O)デバイスの少なくとも1つである請求項2に記載のコンピュータシステム。
  6. 前記共有キャッシュ制御器は、複数のソースの唯一のソースによって割り当てられるデータを前記第1の部分が有することを許可されているかを決定するように更に構成される請求項5に記載のコンピュータシステム。
  7. 前記第1の部分及び前記第2の部分の前記決定のために用いられるエンコードされた値を記憶するために前記共有キャッシュ制御器に結合される1つ以上の構成及び状態レジスタ(CSR)を更に備えた請求項6に記載のコンピュータシステム。
  8. 前記共有キャッシュはセットアソシアティブキャッシュであり、前記第1の部分及び前記第2の部分は少なくとも1つのキャッシュウエイに対応する請求項7に記載のコンピュータシステム。
  9. 第1のソースによってメモリ要求を生成することと、
    前記第1のソースとは異なる第2のソースによってメモリ要求を生成することと、
    共有キャッシュの1つ以上のエントリを備えている第1の部分が、前記第1のソースによって割り当てられるが前記第2のソースによっては割り当てられないデータを有することを許可されているかを決定することと、
    前記共有キャッシュの1つ以上のエントリを備えている第2の部分が、前記第2のソースによって割り当てられるが前記第1のソースによっては割り当てられないデータを有することを許可されているかを決定することとを備えた方法。
  10. 対応するメモリ要求のコマンド種類、及び対応するメモリ要求に含まれるヒントビットの少なくとも一方に更に基いて前記決定することを実行することを更に備えた請求項9に記載の方法。
  11. パワーダウン通知を受信することに応答して、
    任意のソースによって割り当てられるデータを前記第1の部分が有することを許可されていないかを続いて決定することと、
    当該内容を前記第1の部分の低レベルメモリへフラッシュすることと、
    前記第1の部分へのメモリ要求をブロックすることと、
    パワーダウン通知を前記第1の部分に対する前記共有キャッシュへ送信することとを更に備えた請求項10に記載の方法。
  12. 前記複数のソースの各々によるアクセスに対して無効にされている前記共有エントリの1つ以上のエントリ内に基本入力出力ソフトウエア(BIOS)によって利用されるシステムセットアップ情報を記憶している請求項10に記載の方法。
  13. 前記第1のソース及び前記第2のソースの各々は、プロセッサコア、グラフィクス処理ユニット(GPU)、及び入力/出力(I/O)デバイスの少なくとも1つである請求項10に記載の方法。
  14. 複数のソースの唯一のソースによって割り当てられるデータを前記第1の部分が有することを許可されているかを決定することを更に備えた請求項13に記載の方法。
  15. 前記第1の部分及び前記第2の部分のために前記決定することのための1つ以上の構成及び状態レジスタ(CSR)内にエンコードされた値を記憶することを更に備えた請求項14に記載の方法。
  16. 前記共有キャッシュはセットアソシアティブキャッシュであり、前記第1の部分及び前記第2の部分は少なくとも1つのキャッシュウエイに対応する請求項15に記載の方法。
  17. 1つ以上のエントリの第1の部分及び前記第1の部分とは異なる1つ以上のエントリの第2の部分を備えている共有キャッシアレイに結合される第1のインタフェースと、
    少なくとも第1のソース及び前記第1のソースとは異なる第2のソースからのメモリ要求を受信するように構成される第2のインタフェースと、
    制御ユニットとを備えた共有キャッシュ制御器であって、
    前記制御ユニットは、
    前記第1のソースによって割り当てられるが前記第2のソースによっては割り当てられないデータを前記第1の部分が有することを許可されているかを決定し、
    前記第2のソースによって割り当てられるが前記第1のソースによっては割り当てられないデータを前記第2の部分が有することを許可されているかを決定するように構成される共有キャッシュ制御器。
  18. 前記制御ユニットは、対応するメモリ要求のコマンド種類、及び対応するメモリ要求に含まれるヒントビットの少なくとも一方に更に基いて前記決定することを実行するように更に構成される請求項17に記載の共有キャッシュ制御器。
  19. 前記制御ユニットは、前記共有キャッシュが動作を継続している間に、パワーダウン通知を受信することに応答して、
    任意のソースによって割り当てられるデータを前記第1の部分が有することを許可されていないかを続いて決定し、
    当該内容を前記第1の部分の低レベルメモリへフラッシュし、
    前記第1の部分へのメモリ要求をブロックし、
    パワーダウン通知を前記第1の部分に対する前記共有キャッシュへ送信するように更に構成される請求項18に記載の共有キャッシュ制御器。
  20. 任意のソースによって割り当てられるデータを有することが許可されないと決定される前記共有キャッシュの部分内に基本入力出力ソフトウエア(BIOS)によって利用されるシステムセットアップ情報を記憶することを更に備えた請求項18に記載の共有キャッシュ制御器。
JP2012502301A 2009-03-27 2010-03-26 キャッシュにおけるウエイ割り当て及びウエイロックのための方法 Pending JP2012522290A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/413,124 2009-03-27
US12/413,124 US8589629B2 (en) 2009-03-27 2009-03-27 Method for way allocation and way locking in a cache
PCT/US2010/028892 WO2010111636A1 (en) 2009-03-27 2010-03-26 A method for way allocation and way locking in a cache

Publications (1)

Publication Number Publication Date
JP2012522290A true JP2012522290A (ja) 2012-09-20

Family

ID=42246109

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012502301A Pending JP2012522290A (ja) 2009-03-27 2010-03-26 キャッシュにおけるウエイ割り当て及びウエイロックのための方法

Country Status (6)

Country Link
US (1) US8589629B2 (ja)
EP (1) EP2411917B1 (ja)
JP (1) JP2012522290A (ja)
KR (1) KR101569160B1 (ja)
CN (1) CN102365627B (ja)
WO (1) WO2010111636A1 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013502645A (ja) * 2009-08-21 2013-01-24 エンパイア テクノロジー ディベロップメント エルエルシー キャッシュメモリ結合性を伴うプロセッサコアの割当
JP2015524979A (ja) * 2012-08-17 2015-08-27 インテル・コーポレーション ユニファイドメモリアーキテクチャを介したメモリ共有
JP2017040969A (ja) * 2015-08-17 2017-02-23 富士通株式会社 演算処理装置、演算処理装置の制御方法および演算処理装置の制御プログラム

Families Citing this family (70)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8417889B2 (en) * 2009-07-24 2013-04-09 International Business Machines Corporation Two partition accelerator and application of tiered flash to cache hierarchy in partition acceleration
US9311245B2 (en) 2009-08-13 2016-04-12 Intel Corporation Dynamic cache sharing based on power state
US8645629B2 (en) * 2009-09-16 2014-02-04 Intel Corporation Persistent cacheable high volume manufacturing (HVM) initialization code
US8412885B2 (en) * 2009-11-12 2013-04-02 Intel Corporation Searching a shared cache by using search hints and masked ways
US20160246711A9 (en) * 2010-01-28 2016-08-25 Hewlett-Packard Development Company, L. P. Interface methods and apparatus for memory devices
US8938589B2 (en) * 2010-01-28 2015-01-20 Hewlett-Packard Development Company, L. P. Interface methods and apparatus for memory devices using arbitration
US8606999B2 (en) * 2010-08-13 2013-12-10 Advanced Micro Devices, Inc. Cache partitioning
US8937622B2 (en) * 2010-09-20 2015-01-20 Qualcomm Incorporated Inter-processor communication techniques in a multiple-processor computing platform
US20120096295A1 (en) * 2010-10-18 2012-04-19 Robert Krick Method and apparatus for dynamic power control of cache memory
US20120324195A1 (en) * 2011-06-14 2012-12-20 Alexander Rabinovitch Allocation of preset cache lines
JP2013003793A (ja) * 2011-06-15 2013-01-07 Toshiba Corp マルチコアプロセッサシステムおよびマルチコアプロセッサ
US8769316B2 (en) 2011-09-06 2014-07-01 Intel Corporation Dynamically allocating a power budget over multiple domains of a processor
US8954770B2 (en) 2011-09-28 2015-02-10 Intel Corporation Controlling temperature of multiple domains of a multi-domain processor using a cross domain margin
US9074947B2 (en) 2011-09-28 2015-07-07 Intel Corporation Estimating temperature of a processor core in a low power state without thermal sensor information
US9026815B2 (en) 2011-10-27 2015-05-05 Intel Corporation Controlling operating frequency of a core domain via a non-core domain of a multi-domain processor
US8832478B2 (en) 2011-10-27 2014-09-09 Intel Corporation Enabling a non-core domain to control memory bandwidth in a processor
US8943340B2 (en) 2011-10-31 2015-01-27 Intel Corporation Controlling a turbo mode frequency of a processor
US9158693B2 (en) * 2011-10-31 2015-10-13 Intel Corporation Dynamically controlling cache size to maximize energy efficiency
US9753858B2 (en) * 2011-11-30 2017-09-05 Advanced Micro Devices, Inc. DRAM cache with tags and data jointly stored in physical rows
US9141609B2 (en) 2011-12-01 2015-09-22 Oracle International Corporation Reducing sequence cache latch contention in a database system
US9910893B2 (en) * 2011-12-01 2018-03-06 Oracle International Corporation Failover and resume when using ordered sequences in a multi-instance database environment
US9189295B2 (en) 2011-12-01 2015-11-17 Oracle International Corporation Generating an ordered sequence in a database system using multiple interleaved caches
US20130205089A1 (en) * 2012-02-08 2013-08-08 Mediatek Singapore Pte. Ltd. Cache Device and Methods Thereof
KR20130131135A (ko) * 2012-05-23 2013-12-03 삼성전자주식회사 QoS 기반 캐시 컨트롤러 및 그 동작 방법
US9529719B2 (en) * 2012-08-05 2016-12-27 Advanced Micro Devices, Inc. Dynamic multithreaded cache allocation
US20140136793A1 (en) * 2012-11-13 2014-05-15 Nvidia Corporation System and method for reduced cache mode
US9183144B2 (en) * 2012-12-14 2015-11-10 Intel Corporation Power gating a portion of a cache memory
US9710380B2 (en) * 2013-08-29 2017-07-18 Intel Corporation Managing shared cache by multi-core processor
US20150261681A1 (en) * 2014-03-14 2015-09-17 International Business Machines Corporation Host bridge with cache hints
CN104407989B (zh) * 2014-11-25 2019-02-12 上海兆芯集成电路有限公司 具有统一标签和片化数据的高速缓冲存储器
GB2537357A (en) 2015-04-09 2016-10-19 Imagination Tech Ltd Cache operation in a multi-threaded processor
US9626299B2 (en) * 2015-05-01 2017-04-18 Intel Corporation Changing a hash function based on a conflict ratio associated with cache sets
GB2540761B (en) * 2015-07-23 2017-12-06 Advanced Risc Mach Ltd Cache usage estimation
US10031834B2 (en) 2016-08-31 2018-07-24 Microsoft Technology Licensing, Llc Cache-based tracing for time travel debugging and analysis
US10031833B2 (en) 2016-08-31 2018-07-24 Microsoft Technology Licensing, Llc Cache-based tracing for time travel debugging and analysis
US10042737B2 (en) 2016-08-31 2018-08-07 Microsoft Technology Licensing, Llc Program tracing for time travel debugging and analysis
US10067709B2 (en) * 2016-09-19 2018-09-04 Advanced Micro Devices, Inc. Page migration acceleration using a two-level bloom filter on high bandwidth memory systems
US10310963B2 (en) 2016-10-20 2019-06-04 Microsoft Technology Licensing, Llc Facilitating recording a trace file of code execution using index bits in a processor cache
US10324851B2 (en) 2016-10-20 2019-06-18 Microsoft Technology Licensing, Llc Facilitating recording a trace file of code execution using way-locking in a set-associative processor cache
US10489273B2 (en) 2016-10-20 2019-11-26 Microsoft Technology Licensing, Llc Reuse of a related thread's cache while recording a trace file of code execution
US10310977B2 (en) 2016-10-20 2019-06-04 Microsoft Technology Licensing, Llc Facilitating recording a trace file of code execution using a processor cache
US10540250B2 (en) 2016-11-11 2020-01-21 Microsoft Technology Licensing, Llc Reducing storage requirements for storing memory addresses and values
US9996478B1 (en) * 2016-12-09 2018-06-12 Advanced Micro Devices, Inc. No allocate cache policy
KR102576707B1 (ko) 2016-12-26 2023-09-08 삼성전자주식회사 전자 시스템 및 그 동작 방법
US10318332B2 (en) 2017-04-01 2019-06-11 Microsoft Technology Licensing, Llc Virtual machine execution tracing
US10365824B2 (en) 2017-04-24 2019-07-30 Advanced Micro Devices, Inc. Silent active page migration faults
US10310985B2 (en) 2017-06-26 2019-06-04 Ati Technologies Ulc Systems and methods for accessing and managing a computing system memory
US10296442B2 (en) 2017-06-29 2019-05-21 Microsoft Technology Licensing, Llc Distributed time-travel trace recording and replay
US10318344B2 (en) 2017-07-13 2019-06-11 Advanced Micro Devices, Inc. Predicting page migration granularity for heterogeneous memory systems
CN109271333B (zh) * 2017-07-17 2022-03-01 深圳市中兴微电子技术有限公司 一种sram控制方法及控制器、控制系统
GB2565338B (en) 2017-08-10 2020-06-03 Mips Tech Llc Fault detecting and fault tolerant multi-threaded processors
US10572388B2 (en) * 2017-08-30 2020-02-25 Micron Technology, Inc. Managed NVM adaptive cache management
US10459824B2 (en) 2017-09-18 2019-10-29 Microsoft Technology Licensing, Llc Cache-based trace recording using cache coherence protocol data
US11526278B2 (en) 2017-12-21 2022-12-13 Advanced Micro Devices, Inc. Adaptive page close prediction
US10558572B2 (en) 2018-01-16 2020-02-11 Microsoft Technology Licensing, Llc Decoupling trace data streams using cache coherence protocol data
US10783083B2 (en) * 2018-02-12 2020-09-22 Stmicroelectronics (Beijing) Research & Development Co. Ltd Cache management device, system and method
US11907091B2 (en) 2018-02-16 2024-02-20 Microsoft Technology Licensing, Llc Trace recording by logging influxes to an upper-layer shared cache, plus cache coherence protocol transitions among lower-layer caches
US10642737B2 (en) 2018-02-23 2020-05-05 Microsoft Technology Licensing, Llc Logging cache influxes by request to a higher-level cache
US10496537B2 (en) 2018-02-23 2019-12-03 Microsoft Technology Licensing, Llc Trace recording by logging influxes to a lower-layer cache based on entries in an upper-layer cache
US10891234B2 (en) 2018-04-04 2021-01-12 Sap Se Cache partitioning to accelerate concurrent workloads
CN109445680B (zh) * 2018-08-20 2020-03-31 华为技术有限公司 一种对硬盘进行管理的方法及装置
US10860485B2 (en) * 2018-11-05 2020-12-08 Microsoft Technology Licensing, Llc Leveraging existing logic paths during bit-accurate processor tracing
US10909012B2 (en) * 2018-11-12 2021-02-02 H3 Platform, Inc. System having persistent memory
US11016913B1 (en) 2020-03-30 2021-05-25 Apple Inc. Inter cluster snoop latency reduction
CN113687955B (zh) * 2021-06-18 2023-03-17 上海天数智芯半导体有限公司 一种高效处理gpu片内和片间缓存一致性的数字电路设计方法
US20230275597A1 (en) * 2021-11-08 2023-08-31 Ambiq Micro, Inc. Low power and wide dynamic range analog-to-digital converter
US11829190B2 (en) 2021-12-21 2023-11-28 Advanced Micro Devices, Inc. Data routing for efficient decompression of compressed data stored in a cache
US11836088B2 (en) 2021-12-21 2023-12-05 Advanced Micro Devices, Inc. Guided cache replacement
US20230195640A1 (en) * 2021-12-21 2023-06-22 Advanced Micro Devices, Inc. Cache Associativity Allocation
US20230205696A1 (en) * 2021-12-28 2023-06-29 Advanced Micro Devices, Inc. Cascading execution of atomic operations

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01133162A (ja) * 1987-11-18 1989-05-25 Fujitsu Ltd キャッシュメモリ制御方式
JPH0887453A (ja) * 1994-09-20 1996-04-02 Mitsubishi Electric Corp キャッシュメモリ装置、キャッシュメモリ装置の登録制御方法及びコンピュータ
JP2001117859A (ja) * 1999-10-20 2001-04-27 Nec Corp バス制御装置
JP2002373115A (ja) * 2001-06-14 2002-12-26 Nec Corp 共有キャッシュメモリのリプレイスメント制御方法及びその装置
JP2006501546A (ja) * 2002-09-27 2006-01-12 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド 統合ディレクトリとプロセッサキャッシュを備えたコンピュータシステム
JP2006515940A (ja) * 2002-11-15 2006-06-08 インテル コーポレイション ブートコード実行用ramとしてのプロセッサキャッシュメモリ
JP2007114890A (ja) * 2005-10-18 2007-05-10 Matsushita Electric Ind Co Ltd 演算処理装置およびキャッシュ動作方法
WO2007078724A2 (en) * 2005-12-30 2007-07-12 Intel Corporation Method and system for optimizing latency of dynamic memory sizing
JP2009015509A (ja) * 2007-07-03 2009-01-22 Renesas Technology Corp キャッシュメモリ装置

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5412787A (en) 1990-11-21 1995-05-02 Hewlett-Packard Company Two-level TLB having the second level TLB implemented in cache tag RAMs
US5848433A (en) 1995-04-12 1998-12-08 Advanced Micro Devices Way prediction unit and a method for operating the same
US5764946A (en) 1995-04-12 1998-06-09 Advanced Micro Devices Superscalar microprocessor employing a way prediction unit to predict the way of an instruction fetch address and to concurrently provide a branch prediction address corresponding to the fetch address
US5845323A (en) 1995-08-31 1998-12-01 Advanced Micro Devices, Inc. Way prediction structure for predicting the way of a cache in which an access hits, thereby speeding cache access time
US5802594A (en) 1995-09-06 1998-09-01 Intel Corporation Single phase pseudo-static instruction translation look-aside buffer
US6044478A (en) 1997-05-30 2000-03-28 National Semiconductor Corporation Cache with finely granular locked-down regions
US6073230A (en) 1997-06-11 2000-06-06 Advanced Micro Devices, Inc. Instruction fetch unit configured to provide sequential way prediction for sequential instruction fetches
US6138213A (en) 1997-06-27 2000-10-24 Advanced Micro Devices, Inc. Cache including a prefetch way for storing prefetch cache lines and configured to move a prefetched cache line to a non-prefetch way upon access to the prefetched cache line
US6016533A (en) 1997-12-16 2000-01-18 Advanced Micro Devices, Inc. Way prediction logic for cache array
KR100313996B1 (ko) 1998-01-08 2001-12-28 구자홍 컴퓨터시스템의바이오스데이터저장장치및방법
US6314514B1 (en) 1999-03-18 2001-11-06 Ip-First, Llc Method and apparatus for correcting an internal call/return stack in a microprocessor that speculatively executes call and return instructions
US6493800B1 (en) 1999-03-31 2002-12-10 International Business Machines Corporation Method and system for dynamically partitioning a shared cache
US6629207B1 (en) 1999-10-01 2003-09-30 Hitachi, Ltd. Method for loading instructions or data into a locked way of a cache memory
US6662272B2 (en) 2001-09-29 2003-12-09 Hewlett-Packard Development Company, L.P. Dynamic cache partitioning
US7234052B2 (en) * 2002-03-08 2007-06-19 Samsung Electronics Co., Ltd System boot using NAND flash memory and method thereof
US20050050278A1 (en) 2003-09-03 2005-03-03 Advanced Micro Devices, Inc. Low power way-predicted cache
US7117290B2 (en) 2003-09-03 2006-10-03 Advanced Micro Devices, Inc. MicroTLB and micro tag for reducing power in a processor
US7237098B2 (en) 2003-09-08 2007-06-26 Ip-First, Llc Apparatus and method for selectively overriding return stack prediction in response to detection of non-standard return sequence
US7558920B2 (en) 2004-06-30 2009-07-07 Intel Corporation Apparatus and method for partitioning a shared cache of a chip multi-processor
US7302528B2 (en) * 2004-11-19 2007-11-27 Intel Corporation Caching bypass
US7996644B2 (en) * 2004-12-29 2011-08-09 Intel Corporation Fair sharing of a cache in a multi-core/multi-threaded processor by dynamically partitioning of the cache
WO2006101113A1 (ja) 2005-03-22 2006-09-28 Matsushita Electric Industrial Co., Ltd. キャッシュメモリ制御方法およびキャッシュメモリ制御装置
US8589706B2 (en) * 2007-12-26 2013-11-19 Intel Corporation Data inversion based approaches for reducing memory power consumption

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01133162A (ja) * 1987-11-18 1989-05-25 Fujitsu Ltd キャッシュメモリ制御方式
JPH0887453A (ja) * 1994-09-20 1996-04-02 Mitsubishi Electric Corp キャッシュメモリ装置、キャッシュメモリ装置の登録制御方法及びコンピュータ
JP2001117859A (ja) * 1999-10-20 2001-04-27 Nec Corp バス制御装置
JP2002373115A (ja) * 2001-06-14 2002-12-26 Nec Corp 共有キャッシュメモリのリプレイスメント制御方法及びその装置
JP2006501546A (ja) * 2002-09-27 2006-01-12 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド 統合ディレクトリとプロセッサキャッシュを備えたコンピュータシステム
JP2006515940A (ja) * 2002-11-15 2006-06-08 インテル コーポレイション ブートコード実行用ramとしてのプロセッサキャッシュメモリ
JP2007114890A (ja) * 2005-10-18 2007-05-10 Matsushita Electric Ind Co Ltd 演算処理装置およびキャッシュ動作方法
WO2007078724A2 (en) * 2005-12-30 2007-07-12 Intel Corporation Method and system for optimizing latency of dynamic memory sizing
JP2009015509A (ja) * 2007-07-03 2009-01-22 Renesas Technology Corp キャッシュメモリ装置

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013502645A (ja) * 2009-08-21 2013-01-24 エンパイア テクノロジー ディベロップメント エルエルシー キャッシュメモリ結合性を伴うプロセッサコアの割当
JP2015524979A (ja) * 2012-08-17 2015-08-27 インテル・コーポレーション ユニファイドメモリアーキテクチャを介したメモリ共有
US10198361B2 (en) 2012-08-17 2019-02-05 Intel Corporation Memory sharing via a unified memory architecture
US10929304B2 (en) 2012-08-17 2021-02-23 Intel Corporation Memory sharing via a unified memory architecture
US11531623B2 (en) 2012-08-17 2022-12-20 Intel Corporation Memory sharing via a unified memory architecture
JP2017040969A (ja) * 2015-08-17 2017-02-23 富士通株式会社 演算処理装置、演算処理装置の制御方法および演算処理装置の制御プログラム
US10180907B2 (en) 2015-08-17 2019-01-15 Fujitsu Limited Processor and method

Also Published As

Publication number Publication date
US20100250856A1 (en) 2010-09-30
KR101569160B1 (ko) 2015-11-13
CN102365627A (zh) 2012-02-29
KR20110134917A (ko) 2011-12-15
US8589629B2 (en) 2013-11-19
CN102365627B (zh) 2015-04-01
WO2010111636A1 (en) 2010-09-30
EP2411917B1 (en) 2020-08-12
EP2411917A1 (en) 2012-02-01

Similar Documents

Publication Publication Date Title
JP2012522290A (ja) キャッシュにおけるウエイ割り当て及びウエイロックのための方法
US8180981B2 (en) Cache coherent support for flash in a memory hierarchy
US9268708B2 (en) Level one data cache line lock and enhanced snoop protocol during cache victims and writebacks to maintain level one data cache and level two cache coherence
US10896128B2 (en) Partitioning shared caches
US7925840B2 (en) Data processing apparatus and method for managing snoop operations
US7277992B2 (en) Cache eviction technique for reducing cache eviction traffic
US20140089602A1 (en) System cache with partial write valid states
US20080086599A1 (en) Method to retain critical data in a cache in order to increase application performance
US20100318742A1 (en) Partitioned Replacement For Cache Memory
US20170177482A1 (en) Computing system having multi-level system memory capable of operating in a single level system memory mode
JP2007011580A (ja) 情報処理装置
US6535958B1 (en) Multilevel cache system coherence with memory selectively configured as cache or direct access memory and direct memory access
US20180095884A1 (en) Mass storage cache in non volatile level of multi-level system memory
EP2926257A1 (en) Memory management using dynamically allocated dirty mask space
CN113892090A (zh) 多级高速缓存安全性
KR101689094B1 (ko) 스티키 제거 엔진을 구비한 시스템 캐시
US6484237B1 (en) Unified multilevel memory system architecture which supports both cache and addressable SRAM
US7779205B2 (en) Coherent caching of local memory data
US8661169B2 (en) Copying data to a cache using direct memory access
US8266379B2 (en) Multithreaded processor with multiple caches
WO2008043670A1 (en) Managing cache data

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130326

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140228

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140312

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140611

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20140806