IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドの特許一覧

<>
  • 特表-キャッシュライン変更の抑制 図1
  • 特表-キャッシュライン変更の抑制 図2
  • 特表-キャッシュライン変更の抑制 図3
  • 特表-キャッシュライン変更の抑制 図4
  • 特表-キャッシュライン変更の抑制 図5
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-09-30
(54)【発明の名称】キャッシュライン変更の抑制
(51)【国際特許分類】
   G06F 12/0895 20160101AFI20240920BHJP
   G06F 12/0817 20160101ALI20240920BHJP
【FI】
G06F12/0895 110
G06F12/0817
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2024518139
(86)(22)【出願日】2022-08-08
(85)【翻訳文提出日】2024-04-23
(86)【国際出願番号】 US2022039758
(87)【国際公開番号】W WO2023055485
(87)【国際公開日】2023-04-06
(31)【優先権主張番号】17/489,702
(32)【優先日】2021-09-29
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】591016172
【氏名又は名称】アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド
【氏名又は名称原語表記】ADVANCED MICRO DEVICES INCORPORATED
(74)【代理人】
【識別番号】100108833
【弁理士】
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100111615
【弁理士】
【氏名又は名称】佐野 良太
(74)【代理人】
【識別番号】100162156
【弁理士】
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】ポール ジェイ. モイヤー
【テーマコード(参考)】
5B205
【Fターム(参考)】
5B205MM01
5B205NN42
5B205PP00
5B205UX01
(57)【要約】
キャッシュラインの変更を抑制するためにキャッシュ内で使用するためのシステム及び方法が開示される。このシステム及び方法は、キャッシュコントローラと協働して動作するプロセッサ及びメモリを含む。メモリは、キャッシュコントローラを介してキャッシュ内の少なくとも1つのキャッシュラインを追跡するように生成された、キャッシュ内に記憶されたコヒーレンスディレクトリを含む。プロセッサは、キャッシュコントローラに、キャッシュ内のキャッシュラインに第1のデータを記憶するように命令する。キャッシュコントローラは、第1のデータに基づいてキャッシュラインにタグ付けする。プロセッサは、キャッシュコントローラに、キャッシュ内のキャッシュラインに第2のデータを記憶するように命令し、キャッシュラインから第1のデータを追い出しさせる。プロセッサは、タグ付けに基づいて第1のデータと第2のデータとを比較し、第1のデータと第2のデータとの比較に基づいてキャッシュラインの変更を抑制する。
【選択図】図4
【特許請求の範囲】
【請求項1】
キャッシュラインの変更を抑制するためにキャッシュで使用される方法であって、
前記キャッシュ内のキャッシュラインに第1のデータを記憶することと、
前記キャッシュ内のキャッシュラインに記憶される第2のデータを識別することであって、前記キャッシュ内のキャッシュラインに前記第2のデータを記憶することは、前記キャッシュラインからの前記第1のデータの追い出しを引き起こす、ことと、
前記第1のデータと前記第2のデータとを比較することと、
前記第1のデータと前記第2のデータキャッシュラインとの比較に基づいて、前記キャッシュラインの変更を抑制することと、を含む、
方法。
【請求項2】
前記追い出しを引き起こす、前記キャッシュ内のキャッシュラインに前記第2のデータを記憶することは、容量追い出しに基づいている、
請求項1の方法。
【請求項3】
前記追い出しを引き起こす、前記キャッシュ内のキャッシュラインに前記第2のデータを記憶することは、コヒーレンスプローブに基づいている、
請求項1の方法。
【請求項4】
前記追い出しを引き起こす、前記キャッシュ内のキャッシュラインに前記第2のデータを記憶することは、明示的なフラッシュ命令に基づいている、
請求項1の方法。
【請求項5】
前記追い出しを引き起こす、前記キャッシュ内のキャッシュラインに前記第2のデータを記憶することは、マイクロアーキテクチャイベントに基づいている、
請求項1の方法。
【請求項6】
前記マイクロアーキテクチャイベントは、前記キャッシュの電力管理クリアを含む、
請求項5の方法。
【請求項7】
前記キャッシュラインを新しいキャッシュレベルに移行することを含む、
請求項1の方法。
【請求項8】
前記キャッシュは、レベル2キャッシュである、
請求項1の方法。
【請求項9】
前記第1のデータに基づいて前記キャッシュラインにタグ付けすることを含む、
請求項1の方法。
【請求項10】
前記キャッシュラインにタグ付けすることは、前記識別することを可能にする、
請求項9の方法。
【請求項11】
キャッシュラインの変更を抑制するためのシステムであって、
プロセッサと、
キャッシュコントローラと協働して動作するメモリであって、前記キャッシュコントローラを介してキャッシュ内の少なくとも1つのキャッシュラインを追跡するように生成された、前記キャッシュ内に記憶されたコヒーレンスディレクトリを含む、メモリと、を備え、
前記プロセッサは、前記キャッシュ内の前記少なくとも1つのキャッシュラインのうち何れかのキャッシュラインに第1のデータを記憶するようにキャッシュコントローラに命令し、
前記プロセッサは、前記キャッシュ内の前記少なくとも1つのキャッシュラインの前記何れかのキャッシュラインに第2のデータを記憶するように前記キャッシュコントローラに命令して、前記何れかのキャッシュラインからの前記第1のデータの追い出しを引き起こし、
前記プロセッサは、タグ付けすることに基づいて、前記第1のデータと前記第2のデータとを比較し、
前記第1のデータと前記第2のデータとの比較に基づいて、前記キャッシュ内の前記少なくとも1つのキャッシュラインの前記何れかのキャッシュラインの変更を抑制する、
システム。
【請求項12】
前記追い出しを引き起こす、前記キャッシュ内の前記何れかのキャッシュラインに前記第2のデータを記憶することは、容量追い出しに基づいている、
請求項11のシステム。
【請求項13】
前記追い出しを引き起こす、前記キャッシュ内の前記何れかのキャッシュラインに前記第2のデータを記憶することは、コヒーレンスプローブに基づいている、
請求項11のシステム。
【請求項14】
前記追い出しを引き起こす、前記キャッシュ内の前記何れかのキャッシュラインに前記第2のデータを記憶することは、明示的なフラッシュ命令に基づいている、
請求項11のシステム。
【請求項15】
前記追い出しを引き起こす、前記キャッシュ内の前記何れかのキャッシュラインに前記第2のデータを記憶することは、マイクロアーキテクチャイベントに基づいている、
請求項11のシステム。
【請求項16】
前記マイクロアーキテクチャイベントは、前記キャッシュの電力管理クリアを含む、
請求項15のシステム。
【請求項17】
前記キャッシュラインを新しいキャッシュレベルに移行することを含む、
請求項11のシステム。
【請求項18】
前記キャッシュは、レベル2キャッシュである、
請求項11のシステム。
【請求項19】
前記キャッシュコントローラは、前記第1のデータに基づいて、前記キャッシュ内の前記少なくとも1つのキャッシュラインにタグ付けする、
請求項11のシステム。
【請求項20】
前記キャッシュ内の前記少なくとも1つのキャッシュラインにタグ付けすることは、前記キャッシュコントローラが前記何れかのキャッシュラインを識別することを可能にする、
請求項19のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
(関連出願の相互参照)
本願は、2021年9月29日に出願された米国特許出願第17/489,702号の利益を主張し、その内容は、参照によって、本明細書に十分に記載されているかのように組み込まれる。
【背景技術】
【0002】
最新のマイクロプロセッサは、高スループットのための幅広い機能を実装する。いくつかのそのような特徴は、高度に並列なアーキテクチャを有すること、及び、キャッシュへの挿入データ(insertion data)が追い出しデータ(eviction data)と一致する場合にラインの変更を抑制することを含む。このような技術に対する改良が絶えず行われている。
【0003】
添付の図面と共に例として与えられる以下の説明から、より詳細な理解を得ることができる。
【図面の簡単な説明】
【0004】
図1】1つ以上の開示された実施形態を実施することができる例示的な装置のブロック図である。
図2図1のプロセッサ内に配置された命令実行パイプラインのブロック図である。
図3】一例による、コンピュータシステムのブロック図である。
図4】キャッシュへの挿入データが追い出しデータと一致する場合に、ラインの変更を抑制するように構成された単一レベルキャッシュシステムを示す図である。
図5】一例による、キャッシュへの挿入データが追い出しデータと一致する場合に、ラインの変更を抑制するための方法のフロー図である。
【発明を実施するための形態】
【0005】
コンピューティングにおいて、キャッシュは、データを記憶するハードウェア又はソフトウェアコンポーネントであり、そのデータに対する将来の要求が、プロセッサから遠くに通信可能に配置された他のメモリ位置と比較してより高速に処理されることを可能にする。例として、キャッシュに記憶されたデータは、以前の計算の結果又は他の場所に記憶されたデータのコピーであり得る。キャッシュヒットは、要求されたデータをキャッシュ内で見つけることができる場合に、プローブ又はリクエストに応じて発生し、一方、キャッシュミスは、要求されたデータがキャッシュ内で見つけられない場合に発生する。キャッシュヒットは、キャッシュからデータを読み出すことによって提供され、これは、結果を再計算すること、又は、より遅いデータストアから読み出すことよりも速い。理解されるように、キャッシュから供給され得る要求が多いほど、システムはより高速に実行する。
【0006】
キャッシュ及びそこに記憶されたデータの使用の利点を得るためには、キャッシュ内のデータの精度を常に理解しておくことが重要である。キャッシュ内のデータを維持するために利用されるプロトコルは多数あるが、そのようなプロトコルの1つは、一般的な無効化ベースのキャッシュコヒーレンスプロトコルであるMESIプロトコルである。MESIプロトコルは、キャッシュ内のデータの考えられる状態に基づいて命名される。MESIプロトコルには、変更(Modified、M)、排他的(Exclusive、E)、共有(Shared、S)、及び、無効(Invalid、I)の4つの状態(コヒーレンス追跡状態)がある。
【0007】
変更(M)は、キャッシュラインが現在のキャッシュのみに存在し、メインメモリ内の値から変更されている(M状態)であることを表す。キャッシュは、(もはや有効ではない)メインメモリ状態の他の読み出しを許可する前に、データをメインメモリに書き戻すために必要とされる。書き戻しは、ラインを共有状態(S)に変更する。
【0008】
排他的(E)は、キャッシュラインが現在のキャッシュのみに存在することを表し、メインメモリバージョンと一致する。キャッシュラインは、読み出し要求に応じていつでも共有状態に変更され得る。あるいは、キャッシュラインへの書き込み時にキャッシュラインを変更状態に変更することができる。
【0009】
共有(S)は、キャッシュラインがマシンの他のキャッシュに記憶されてもよく、メインメモリバージョンに一致することを表す。ラインはいつでも廃棄する(無効状態に変更する)ことができる。
【0010】
無効(I)は、キャッシュラインが無効(未使用)であることを表す。
【0011】
理解されるように、キャッシュ状態の追跡は、メモリ及びクロックサイクルを必要とする。コンピュータリソースは、状態を変更し、キャッシュラインから他のメモリ位置へ、又は、他のメモリ位置からデータを書き込む場合に使用される。キャッシュ及びキャッシュ状態の使用は、コンピュータの時間及び処理を節約するが、不要な場合のキャッシュラインの状態の変更及びキャッシュからメモリへの書き込み又はメモリからの書き込みを更に最小限に抑えることが有益であり得る。このように、キャッシュの変更された状態のレポートを最小限に抑え、状態の変更を最小限に抑えることは、特定の条件が存在する場合に利点をもたらすことができる。
【0012】
データが最初にキャッシュレベルに入った場合にデータの値と一致するキャッシュのキャッシュレベルを離れるデータの値に応じて、キャッシュ内のキャッシュの変更された状態のレポートを抑制するための技術が説明される。
【0013】
キャッシュラインの変更を抑制するためのキャッシュにおける使用方法が開示される。本方法は、キャッシュ内のキャッシュラインに第1のデータを記憶すること、第1のデータに基づいてキャッシュラインにタグ付けすること、及び、キャッシュ内のキャッシュラインに第2のデータを記憶することを判定することを含む。キャッシュ内のキャッシュラインに第2のデータを記憶することは、キャッシュラインからの第1のデータの追い出し(エビクト)を引き起こす。本方法は、第1のデータと第2のデータとをタグ付けすることに基づいて比較することを含む。本方法は、第1のデータと第2のデータキャッシュラインとの比較に基づいてキャッシュラインの変更を抑制することを含む。追い出しを引き起こすキャッシュ内のキャッシュラインの第2のデータの記憶は、容量追い出し、コヒーレンスプローブ、明示的なフラッシュ命令、又は、マイクロアーキテクチャイベントに基づく。マイクロアーキテクチャイベントは、キャッシュの電力管理クリアを含むことができる。本方法は、キャッシュラインを新しいキャッシュレベルに移行することを含むことができる。
【0014】
キャッシュラインの変更を抑制するためのシステムが開示される。システムは、キャッシュコントローラと協働して動作するプロセッサ及びメモリを含む。メモリは、キャッシュコントローラを介してキャッシュ内の少なくとも1つのキャッシュラインを追跡するように生成されたキャッシュ内に記憶されたコヒーレンスディレクトリを含む。プロセッサは、キャッシュ内の少なくとも1つのキャッシュラインのうち何れかのキャッシュラインに第1のデータを記憶するようにキャッシュコントローラに命令する。キャッシュコントローラは、第1のデータに基づいてキャッシュ内の少なくとも1つのキャッシュラインにタグ付けする。プロセッサは、キャッシュコントローラに、キャッシュ内の少なくとも1つのキャッシュラインのうち何れかのキャッシュラインに第2のデータを記憶し、キャッシュラインからの第1のデータの追い出しを引き起こすように命令する。プロセッサは、第1のデータと第2のデータとをタグ付けすることに基づいて比較し、第1のデータと第2のデータとの比較に基づいてキャッシュ内の少なくとも1つのキャッシュラインのうち何れかのキャッシュラインの変更を抑制する。追い出しを引き起こすキャッシュ内のキャッシュラインの第2のデータの記憶は、容量追い出し、コヒーレンスプローブ、明示的なフラッシュ命令、又は、マイクロアーキテクチャイベントに基づく。マイクロアーキテクチャイベントは、キャッシュの電力管理クリアを含むことができる。本方法は、キャッシュラインを新しいキャッシュレベルに移行することを含むことができる。
【0015】
図1は、本開示の態様が実装されている例示的なデバイス100のブロック図である。デバイス100は、例えば、コンピュータ、ゲームデバイス、ハンドヘルドデバイス、セットトップボックス、テレビ、携帯電話、又は、タブレットコンピュータを含む。デバイス100は、1つ以上のプロセッサ102、メモリ階層104、記憶装置106、1つ以上の入力デバイス108、及び、1つ以上の出力デバイス110を含む。また、デバイス100は、オプションで、入力ドライバ112及び出力ドライバ114を含み得る。デバイス100は、図1に示されていない追加の構成要素を含むことができることを理解されたい。
【0016】
1つ以上のプロセッサ102は、中央処理装置(CPU)、画像処理装置(GPU)、同じダイ上に配置されたCPU及びGPU、又は、1つ以上のプロセッサコアを含み、各プロセッサコアはCPU又はGPUである。いくつかの例では、1つ以上のプロセッサ102は、任意の数のプロセッサを含む。いくつかの例では、1つ以上のプロセッサ102は1つ以上のプロセッサチップを含む。いくつかの例では、各プロセッサチップは、1つ以上のプロセッサコアを含む。
【0017】
メモリ階層104の一部又は全ては、1つ以上のプロセッサ102のうち1つ以上と同じダイ上に配置されてもよく、あるいは、1つ以上のプロセッサ102から部分的又は完全に別に配置されてもよい。メモリ階層104は、例えば、1つ以上のキャッシュ、1つ以上の揮発性メモリ、1つ以上の不揮発性メモリ、及び/又は、他のメモリを含み、1つ又は様々なタイプの1つ以上のランダムアクセスメモリ(RAM)を含むことができる。
【0018】
いくつかの例では、メモリ階層104の要素は、1つ以上のプロセッサ102の要素を含む階層に配置される。そのような配置の例は、図3及び図4に提供されている。
【0019】
記憶装置106は、固定又はリムーバブル記憶装置(例えば、ハードディスクドライブ、ソリッドステートドライブ、光ディスク、フラッシュドライブ)を含む。入力デバイス108は、キーボード、キーパッド、タッチスクリーン、タッチパッド、検出器、マイクロフォン、加速度計、ジャイロスコープ、生体認証スキャナ、又は、ネットワーク接続(例えば、無線IEEE802信号の送信及び/又は受信のための無線ローカルエリアネットワークカード)を含む。出力デバイス110は、ディスプレイ、スピーカ、プリンタ、触覚フィードバックデバイス、1つ以上の光、アンテナ、又は、ネットワーク接続(例えば、無線IEEE802信号の送信及び/又は受信のための無線ローカルエリアネットワークカード)を含む。
【0020】
入力ドライバ112は、プロセッサ102及び入力デバイス108と通信し、プロセッサ102が入力デバイス108から入力を受信することを可能にする。出力ドライバ114は、プロセッサ102及び出力デバイス110と通信し、プロセッサ102が出力デバイス110に出力を送信することを可能にする。入力ドライバ112及び出力ドライバ114は、オプションの構成要素であり、入力ドライバ112及び出力ドライバ114が存在しない場合、デバイス100は同じように動作する。
【0021】
図2は、図1の1つ以上のプロセッサ102内に配置された命令実行パイプライン200のブロック図である。様々な例において、図1の1つ以上のプロセッサ102の何れかのプロセッサコアは、図2に示すように実装される。
【0022】
命令実行パイプライン200は、メモリから命令を取得して命令を実行し、メモリにデータを出力し、レジスタファイル218内のレジスタ等の命令実行パイプライン200内の要素の状態を変更する。
【0023】
命令実行パイプライン200は、命令キャッシュ202を介してシステムメモリ(メモリ104等)から命令をフェッチするように構成された命令フェッチユニット204と、フェッチされた命令をデコードするように構成されたデコーダ208と、命令を処理するための計算を実行するように構成された機能ユニット216と、データキャッシュ220を介してシステムメモリからデータをロードするか又はシステムメモリにデータを記憶するように構成されたロード記憶ユニット214と、命令の動作データを記憶するレジスタを含むレジスタファイル218と、を含む。リオーダバッファ210は、現在インフライトである命令を追跡し、インフライト中のアウトオブオーダ実行を可能にするにもかかわらず、命令のインオーダリタイアを保証する。「インフライト」命令という用語は、リオーダバッファ210によって受信されたが、プロセッサのアーキテクチャ状態にコミットされた結果(例えば、レジスタファイルに書き込まれた結果等)を未だ有していない命令を指す。リザベーションステーション212は、インフライト命令を維持し、命令オペランドを追跡する。全てのオペランドが特定の命令の実行の準備ができると、リザベーションステーション212は、実行のために機能ユニット216又はロード/記憶ユニット214に命令を送信する。完了した命令は、リオーダバッファ210内でリタイアのためにマークされ、リオーダバッファキュー210の先頭にある場合にリタイアされる。リタイアとは、命令の結果をプロセッサのアーキテクチャ状態にコミットさせる動作を指す。例えば、加算結果を加算命令によってレジスタに書き込むこと、ロードされた値をロード命令によってレジスタに書き込むこと、又は、命令フローを分岐命令によって新しい位置にジャンプさせることは、全て命令のリタイアの例である。
【0024】
命令実行パイプライン200の様々な要素は、共通データバス222を介して通信を行う。例えば、機能ユニット216及びロード/記憶ユニット214は、結果を共通データバス222に書き込み、共通データバスは、依存する命令の実行のためにリザベーションステーション212によって、及び、実行を終了した実行中の命令の最終処理結果としてリオーダバッファ210によって読み取ることができる。また、ロード/記憶ユニット214は、共通データバス222からデータを読み出す。例えば、ロード/記憶ユニット214は、完了した命令からの結果を共通データバス222から読み出し、この結果を、記憶命令用のデータキャッシュ220を介してメモリに書き込む。
【0025】
命令実行パイプライン200は、いくつかの命令を投機的に実行する。投機的実行とは、命令実行パイプライン200が命令の実行のために少なくともいくつかの動作を実行するが、命令が誤って実行された場合にそのような実行の影響を逆転させる能力を維持することを意味する。
【0026】
説明したように、キャッシュはキャッシュデータを記憶し、アドレスを判定するためのキャッシュタグを有し、例えばMESIキャッシュコヒーレンスプロトコルにおけるコヒーレンス状態等のその他の様々な状態を有する。キャッシュラインがキャッシュ階層から追い出されるか又はプローブされると、それが変更された場合、DRAM等のメモリが書き込まれる。キャッシュラインは、そのキャッシュラインに対してストア命令が実行されると変更された状態に遷移する。一実施形態では、キャッシュレベルを出るデータがキャッシュレベルに入ったときの値と一致する場合、変更された状態のレポートが抑制される。
【0027】
図3は、一例による、コンピュータシステム300のブロック図である。いくつかの例では、コンピュータシステム300は、図1のコンピュータシステム100である。コンピュータシステム300は、プロセッサセット302、1つ以上のシステムレベルメモリ304、システムメモリコントローラ306、及び、他のシステム要素308を含む。
【0028】
プロセッサセット302は、1つ以上のプロセッサチップ310を含む。各プロセッサチップ310は、プロセッサチップレベルキャッシュ312、及び、1つ以上のプロセッサコア314を含む。各プロセッサコア314は、関連するコアレベルキャッシュ316を有する。プロセッサコア314のそれぞれは、図2の命令実行パイプライン200等の1つ以上の実行パイプラインを含む。
【0029】
図3に示すキャッシュ及びメモリは並列に動作し、したがって、データの一貫性を保証するためにコヒーレンスプロトコルを使用する。そのようなプロトコルの一例は、変更-排他的-共有-無効(MESI)プロトコルである。各キャッシュラインは、これら4つの状態のうち何れかの状態の指標を含む。変更状態は、特定のキャッシュに記憶されたキャッシュラインのコピーが、バッキングメモリに記憶されたコピーに対して変更され、したがって、キャッシュラインが追い出される場合にキャッシュラインをバッキングメモリに書き込まなければならないことを示す。排他的状態は、キャッシュラインが特定のキャッシュに記憶されており、階層の同じレベルの他のキャッシュに記憶されていないことを示す。排他的としてマークされたキャッシュラインは、階層の上位レベルに記憶され得る。例えば、排他的状態のレベル0キャッシュに記憶されたキャッシュラインを、レベル0キャッシュのすぐ上のレベル1キャッシュに記憶することもできる。共有状態は、キャッシュラインが階層の同じレベルの複数のキャッシュに記憶されていることを示す。無効状態は、キャッシュラインが無効とマークされている特定のキャッシュ内でキャッシュラインが有効でないことを示す(ただし、別のキャッシュはそのキャッシュラインの有効なコピーを記憶することができる)。
【0030】
各プロセッサコア314は、関連するコアレベルキャッシュ316を有する。プロセッサコア314がロード操作又はストア操作等のメモリ操作を実行すると、プロセッサコア314は、メモリ操作のためのデータを記憶するキャッシュラインがプロセッサコア314に関連付けられたコアレベルキャッシュ316内に配置するかどうかを判定する。そのようなキャッシュラインがコアレベルキャッシュ316内に配置されていない場合、コアレベルキャッシュ316は、プロセッサチップレベルキャッシュ312等の上位レベルのキャッシュからそのコアレベルキャッシュ316内にそのキャッシュラインをフェッチしようと試みる。プロセッサチップレベルキャッシュ312は、上位レベルのキャッシュメモリとしての役割と、プロセッサチップレベルキャッシュ312及び同じプロセッサチップ310内の全てのコアレベルのキャッシュ316のためのコヒーレンスプロトコルを管理するコントローラとしての役割と、の両方を果たす。したがって、プロセッサチップレベルキャッシュ312は、要求しているプロセッサコア314にそのキャッシュラインを提供する目的で、要求されているキャッシュラインがそこに記憶されているかどうかを判定するためにそれ自体をチェックする。プロセッサチップレベルキャッシュ312は、それ自体の内容から又は上位の階層のメモリから一旦フェッチされたかの何れかから、要求しているコア314にキャッシュラインを提供する。
【0031】
プロセッサチップレベルキャッシュ312は、コアレベルのキャッシュ316に対するコヒーレンスプロトコルを管理する。概して、プロセッサチップレベルキャッシュ312は、コアレベルキャッシュ316内のキャッシュラインのプロトコル状態を管理して、任意のキャッシュラインが特定のコアレベルキャッシュ316内で排他的状態にある場合、他のコアレベルキャッシュ316は、無効状態を除く任意の状態にそのキャッシュラインを有しない。複数のコアレベルのキャッシュ316は、キャッシュラインを共有状態にすることが許可される。
【0032】
プロトコルはレベルごとに機能する。より具体的には、メモリ階層の各レベルにおいて、そのレベル内の各要素は、プロトコルの状態の何れかにキャッシュラインを有することが許可される。一例では、プロセッサセット302のレベルでは、各チップ310(したがって、各プロセッサチップレベルキャッシュ312)は、共有状態又は排他的状態等の状態の何れかにキャッシュラインを有することが許可される。階層の特定のレベルのコントローラは、そのレベルでプロトコルを管理する。したがって、プロセッサセットメモリ320は、プロセッサチップレベルキャッシュ312の状態を管理する。任意の特定のプロセッサチップ310のプロセッサチップレベルキャッシュ312は、コアレベルキャッシュ316の状態を管理し、システムメモリコントローラ306は、プロセッサセット302及び特定のキャッシュラインを記憶することができる他のシステム要素308の状態を管理する。
【0033】
プロセッサコア314がストア命令を実行すると、プロセッサコア314は、書き込み対象のデータを含むキャッシュラインを、関連するコアレベルキャッシュ316に排他的状態で配置することを要求する。この要求を満たすことの一部は、(コアレベルキャッシュ316の「すぐ上の」キャッシュ以外の)全ての他のキャッシュがそのキャッシュラインのコピーを無効にするように要求することを含む。
【0034】
キャッシュ316は、キャッシュデータを記憶し、アドレスを判定するためのキャッシュタグを有し、例えば、コヒーレンス状態及びMESIキャッシュコヒーレンスプロトコルを含むその他の様々な状態を有する。キャッシュラインがキャッシュ階層から追い出されるか又はプローブされると、変更された場合、メモリが書き込まれる。キャッシュラインは、上述したように、そのキャッシュラインに対してストア命令が実行されると、変更された状態に遷移する。
【0035】
一実施形態では、キャッシュレベルを出るデータがキャッシュレベルに入ったときの値と一致する場合、変更された状態のレポートが抑制される。一実施形態では、データが全てゼロの特定の値である場合に抑制が発生する。例えば、キャッシュラインがレベル2キャッシュ等のキャッシュレベルに入ると、キャッシュ内の記録は、例えば、ラインが以前に未だ変更されておらず、したがってこのキャッシュレベルで何が起こるかに関わらずメモリに書き込まれることを含む、コヒーレンスプロトコルの周りのいくつかの他の複雑さと共に、ラインが全てゼロのデータ値で入ったという新しい指標をタグ付けする。キャッシュラインは、レベル2キャッシュ内の寿命(lifetime)において何度も更新することができる。また、キャッシュラインをレベル1キャッシュに転送することもできる。利点は、ストアが既にゼロであるキャッシュラインの先頭にゼロを書き込む場合に生じる。追加のシナリオは、非ゼロデータを書き込むことを含むが、その場合、ラインへの最後の書き込みはゼロである。
【0036】
一実施形態では、キャッシュコントローラは、キャッシュ追い出し時又はプローブ時に、ラインが全てゼロとして入力されたことを状態ビットが識別した時間をチェックする。キャッシュコントローラのチェックは、現在のデータを調べて、データが全てゼロであるかどうかを確認し、それらの条件が一致する場合、ラインが変更されたというレポートが抑制される。
【0037】
上記の実装と同様に、「全てゼロ」チェックは、複数の既知のパターンであるように一般化されてもよく、又は、実行時に検出されるパターンの構造にインデックス付けされてもよい。
【0038】
図4は、キャッシュ410のキャッシュラインへの挿入データが追い出しデータと一致する場合にキャッシュラインの変更を抑制することができる単一レベルキャッシュシステム400のブロック図を示している。図示したように、キャッシュシステム400は、プロセッサ102、キャッシュ410、及び、キャッシュ410に結合されたキャッシュコントローラ420(例えば、プロセッサチップレベルキャッシュ312、プロセッサセットメモリ320又はシステムメモリコントローラ306)を含む。システム400は、追い出しデータ430と一致する挿入データの指標を含む。一実施形態では、指標(指示)430は、キャッシュ410及びコントローラ420の一方又は両方に結合される。上述したように、一実施形態では、コヒーレンス追跡情報440を指標430と共に記憶することができる。
【0039】
具体的に示されていないが、システム400は、1つ以上の階層レベルを含むことができる。例えば、階層の1つ以上の最下位レベル(1次プロセッサメモリ階層レベル)、階層に配置された1つ以上の次のレベルアップの2次プロセッサメモリ階層レベル、1つ以上の3次プロセッサメモリ階層レベル、及び、オプションで、図示されていない追加の階層レベルである。システム400は単一の階層のみを示しているが、追加のレベルが利用されてもよい。
【0040】
図4は、キャッシュ内のキャッシュラインの変更を抑制することができるコンピュータシステムのブロック図である。キャッシュラインの変更の抑制は、キャッシュ410のキャッシュラインへの挿入データが追い出しデータと一致した場合に発生する。図4は、記載された機能を理解するために必要な図3の態様を強調している。理解されるように、図3のシステム300は、図4のシステム400の一例である。したがって、図3はコア、チップ等の特定の種類の階層レベル要素を示しているが、図4のシステムは、記載された機能の理解を助けるために図4の要素の明確な詳細を提供するために、必ずしも同様の要素又は要素のグループを含まない。例えば、コアレベルキャッシュ316は、キャッシュ410の一例である。プロセッサ102は、例えば、コア314、追加のプロセッサチップ310の例である。
【0041】
いくつかの実施形態では、キャッシュ階層内のコヒーレンス追跡情報440と共に、実際にデータを記憶しなくても、追い出しデータ430と一致する挿入データの指標が記憶される。図4に示すように、追い出しデータ430と一致する挿入データの指標は、キャッシュ410内のコヒーレンス追跡情報440と共に記憶される。理解されるように、図3を参照すると、追い出しデータ430と一致する挿入データの指標は、コンピュータシステム300の階層の他の領域に記憶され得る。追い出しデータ430と一致する挿入データの指標の値は、キャッシュコントローラ420内、メモリユニット405内、又は、他の方法ではコンピュータシステム内で判定されてもよい。
【0042】
キャッシュ410を出るデータが、データがキャッシュ410に入ったときの値と一致する場合に、変更された状態のレポートが抑制される。理解されるように、MESIプロトコルは、通常、キャッシュラインが現在のキャッシュ410にのみ存在し、メインメモリ内の値から変更(M状態)されていることを表す、変更された状態にあるような状態のデータを識別する。キャッシュ410は、(もはや有効ではない)メインメモリ状態の他の読み出しを許可する前に、メインメモリ(図4には示されていない)にデータを書き戻すために必要とされる。書き戻しは、キャッシュラインを共有状態(S)に変更する。キャッシュ410から出るデータがキャッシュ410に入ったときの値と一致する場合に状態変更を抑制することによって、キャッシュ410のキャッシュライン内のデータが同じままであり、MESIプロトコルの変更された状態に対処するために必要なステップが不要である。利点は、既にゼロであるキャッシュラインの先頭に書き込みゼロを記憶する場合に達成される。追加の有益なシナリオは、非ゼロデータを書き込むことを含むが、その場合、ラインへの最後の書き込みはゼロである。
【0043】
一実施形態では、データが全てゼロの特定の値である場合、変更された状態のレポートの抑制が生じる。キャッシュラインが例えばレベル2キャッシュ等のキャッシュ410に入ると、キャッシュタグは、ラインが全てゼロのデータ値で入ったという新しい指標(指示)430を記録する。一実施形態では、記録は、例えばキャッシュ階層に含まれるコヒーレンスディレクトリ内等のコヒーレンス追跡情報440と共に行われる。キャッシュラインは、キャッシュ410内でその寿命の間に何度も更新することができる。キャッシュラインは、例えばキャッシュ410が含まれるレベル1キャッシュ等の別のキャッシュ(図4には示されていないが、図3に示されている)に転送することもできる。キャッシュコントローラ420は、キャッシュ追い出し又はプローブにおいて、ラインが全てゼロとして入ったことを示すために記録された指標430をチェックする。キャッシュコントローラ420は、現在のデータを調べて全てゼロであるかどうかを確認し、それらの条件が一致する場合、ライン変更が報告されず、したがって変更された状態のレポートが回避される。
【0044】
全てゼロの例に関する上記の説明に沿って、追加の既知のパターンを使用することもできる。更に、実行時に検出されるパターンの構造へのインデックスを利用することができる。
【0045】
図5は、一例による、キャッシュ410への挿入データが追い出しデータと一致する場合にラインの変更を抑制するための方法500のフロー図を示す。図1図4のシステムに関して説明したが、当業者は、任意の技術的に実行可能な順序で方法500のステップを実行するように構成された任意のシステムが本開示の範囲に含まれることを理解するであろう。
【0046】
ステップ510において、処理要素は、データを記憶するためのストア要求を発行し、キャッシュ420等のキャッシュに第1のデータを記憶する。一実施形態によれば、第1のデータは、キャッシュ内のキャッシュラインに記憶される。キャッシュラインが例えばレベル2キャッシュ等のキャッシュに入ると、キャッシュタグは、ラインが全てゼロのデータ値で入ったという新しい指標を記録する。一実施形態では、記録は、例えば、キャッシュ階層内のコヒーレンス追跡情報440と共に行われる。キャッシュラインは、キャッシュ410内でその寿命の間に何度も更新することができる。キャッシュラインは、例えばキャッシュ410が含まれるレベル1キャッシュ等の別のキャッシュ(図4には示されていないが、図3に示されている)に転送することもできる。
【0047】
ステップ520において、処理要素は、キャッシュ420等のキャッシュに第2のデータを記憶するためのストア要求を発行する。本実施形態によれば、第2のデータは、キャッシュ内のキャッシュラインに記憶されるように要求される。第2のデータをキャッシュに記憶するためのこの記憶要求は、第1のデータがキャッシュに入力された場合に記録されたキャッシュタグに基づいて、ライン変更を報告せず、変更された状態のレポートを回避する可能性として識別することができる。
【0048】
ステップ530において、第1のデータと第2のデータとが比較される。本実施形態によれば、第1のデータはキャッシュライン内の初期データであり、第2のデータはキャッシュライン内の最終データである。初期データと最終データとを比較する。キャッシュコントローラは、キャッシュ追い出し又はプローブにおいて、ラインが全てゼロとして入ったことを示すために記録されたキャッシュタグ(又は他の指標)をチェックする。キャッシュコントローラは、現在のデータが全てゼロであるかどうかを調べる。
【0049】
ステップ540において、比較に基づいて、ラインの変更が抑制される。本実施形態では、キャッシュラインの変更が抑制される。ステップ530での比較における条件が一致する場合、ライン変更が報告されず、したがって変更された状態のレポートが回避される。利点は、既にゼロであるキャッシュラインの先頭に書き込みゼロを記憶する場合に達成される。追加の有益なシナリオは、非ゼロデータを書き込むことを含むが、その場合、ラインへの最後の書き込みはゼロである。
【0050】
また、方法500は、ステップ550においてキャッシュラインを新しいレベルに移行することを含むことができる。また、キャッシュラインは、例えばキャッシュ410が含まれるレベル1キャッシュ等の別のキャッシュ(図4には示されていないが、図3に示されている)に転送されてもよい。
【0051】
一実施形態によれば、ステップ520のストア要求は、キャッシュラインから第1のデータを追い出すように構成される。追い出しは、例えば、容量追い出し、コヒーレンスプローブ、明示的なフラッシュ命令、及び、キャッシュの電力管理クリア等のマイクロアーキテクチャイベントに基づくことができる。
【0052】
本明細書の開示に基づいて、多くの変形が可能であることを理解されたい。特徴及び要素が特定の組み合わせで上に説明されているが、各特徴又は要素は、他の特徴及び要素を用いずに単独で、又は、他の特徴及び要素を用いて若しくは用いずに様々な組み合わせで使用することができる。
【0053】
図に示されている様々な要素は、ハードウェア(例えば、回路)、プロセッサ上で実行するソフトウェア、又は、ハードウェアとソフトウェアの組み合わせとして実装可能である。様々な例では、各ブロック、プロセッサチップ310、システム要素308、システムレベルメモリ304、システムメモリコントローラ306、並びに、命令実行パイプライン200及びコンピュータシステム100の図示されたユニットは、ハードウェア、ソフトウェア又はそれらの組み合わせとして実装可能である。提供される方法は、汎用コンピュータ、プロセッサ又はプロセッサコアにおいて実装することができる。好適なプロセッサとしては、例として、汎用プロセッサ、専用プロセッサ、従来型プロセッサ、デジタルシグナルプロセッサ(DSP)、複数のマイクロプロセッサ、DSPコアと関連する1つ以上のマイクロプロセッサ、コントローラ、マイクロコントローラ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)回路、任意の他のタイプの集積回路(IC)、及び/又は、状態マシンが含まれる。そのようなプロセッサは、処理されたハードウェア記述言語(hardware description language、HDL)命令及びネットリストを含む他の中間データ(コンピュータ可読記憶媒体に記憶させることが可能な命令)の結果を使用して製造プロセスを構成することによって製造することができる。そのような処理の結果は、実施形態を実施するプロセッサを製造するために半導体製造プロセスで使用されるマスクワークとすることができる。
【0054】
本明細書に提供される方法又はフローチャートは、汎用コンピュータ又はプロセッサによる実行のために非一時的なコンピュータ可読記憶媒体に組み込まれるコンピュータプログラム、ソフトウェア又はファームウェアにおいて実装され得る。非一時的なコンピュータ可読記憶媒体の例としては、読み取り専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、レジスタ、キャッシュメモリ、半導体メモリデバイス、内蔵ハードディスク及びリムーバブルディスク等の磁気媒体、磁気光学媒体、並びに、CD-ROMディスク及びデジタル多用途ディスク(DVD)等の光学媒体が含まれる。
図1
図2
図3
図4
図5
【国際調査報告】