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

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

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

特表2024-538196キャッシュラインコヒーレンス状態アップグレード
<>
  • 特表-キャッシュラインコヒーレンス状態アップグレード 図1
  • 特表-キャッシュラインコヒーレンス状態アップグレード 図2
  • 特表-キャッシュラインコヒーレンス状態アップグレード 図3
  • 特表-キャッシュラインコヒーレンス状態アップグレード 図4A
  • 特表-キャッシュラインコヒーレンス状態アップグレード 図4B
  • 特表-キャッシュラインコヒーレンス状態アップグレード 図4C
  • 特表-キャッシュラインコヒーレンス状態アップグレード 図4D
  • 特表-キャッシュラインコヒーレンス状態アップグレード 図5
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-10-18
(54)【発明の名称】キャッシュラインコヒーレンス状態アップグレード
(51)【国際特許分類】
   G06F 12/0815 20160101AFI20241010BHJP
   G06F 12/0895 20160101ALI20241010BHJP
   G06F 12/121 20160101ALI20241010BHJP
【FI】
G06F12/0815
G06F12/0895 110
G06F12/121
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2024523440
(86)(22)【出願日】2022-10-17
(85)【翻訳文提出日】2024-06-05
(86)【国際出願番号】 US2022046909
(87)【国際公開番号】W WO2023076062
(87)【国際公開日】2023-05-04
(31)【優先権主張番号】17/514,792
(32)【優先日】2021-10-29
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】591016172
【氏名又は名称】アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド
【氏名又は名称原語表記】ADVANCED MICRO DEVICES INCORPORATED
(74)【代理人】
【識別番号】100108833
【弁理士】
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100111615
【弁理士】
【氏名又は名称】佐野 良太
(74)【代理人】
【識別番号】100162156
【弁理士】
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】ポール ジェイ. モイヤー
【テーマコード(参考)】
5B205
【Fターム(参考)】
5B205KK14
5B205NN42
5B205PP03
5B205PP22
5B205QQ02
5B205QQ11
(57)【要約】
キャッシュ動作を実行するための技術が提供される。この技術は、キャッシュラインが排他的にアップグレード可能であることを示すエントリを記録することと、キャッシュラインをキャッシュから除去することと、キャッシュラインをキャッシュに挿入する要求を、キャッシュラインを排他的状態でキャッシュに挿入する要求に変換することと、を含む。
【選択図】図5
【特許請求の範囲】
【請求項1】
方法であって、
キャッシュラインが排他的にアップグレード可能であることを示すエントリを記録することと、
前記キャッシュラインをキャッシュから除去することと、
前記キャッシュラインを前記キャッシュに挿入する要求を、前記キャッシュラインを排他的状態で前記キャッシュに挿入する要求に変換することと、を含む、
方法。
【請求項2】
前記エントリを記録することは、キャッシュ内のキャッシュラインを排他的状態にアップグレードしたことに応じて実行される、
請求項1の方法。
【請求項3】
前記キャッシュ内のキャッシュラインを排他的状態にアップグレードする前に、前記キャッシュラインは、非排他的状態で前記キャッシュ内にある、
請求項2の方法。
【請求項4】
前記キャッシュ内のキャッシュラインを排他的状態にアップグレードしたことに応じて前記エントリを記録することは、前記キャッシュラインについてグローバル無効化要求が送信されたと判定することを含む、
請求項2の方法。
【請求項5】
前記キャッシュラインをキャッシュから除去することは、追い出し又は無効化プローブによって行われる、
請求項1の方法。
【請求項6】
前記キャッシュラインを前記キャッシュに挿入する要求に応じて、前記要求を、前記キャッシュラインを排他的状態で前記キャッシュに挿入する要求に変換することは、前記キャッシュラインが排他的にアップグレード可能であることを示すエントリを検出することを含む、
請求項1の方法。
【請求項7】
前記キャッシュラインを前記キャッシュに挿入する要求は、コヒーレンス状態非依存要求を含む、
請求項1の方法。
【請求項8】
前記キャッシュラインを前記キャッシュに記憶する要求は、前記キャッシュラインを非排他的状態で挿入する要求を含む、
請求項1の方法。
【請求項9】
前記キャッシュ内のキャッシュラインを排他的状態にアップグレードしたことに応じて前記エントリを記録することは、前記キャッシュラインが非排他的状態にある間に前記キャッシュラインに対してストア命令が実行されると判定することを含む、
請求項2の方法。
【請求項10】
システムであって、
キャッシュと、
キャッシュコントローラと、を備え、
前記キャッシュコントローラは、
キャッシュラインが排他的にアップグレード可能であることを示すエントリを記録することと、
前記キャッシュラインを前記キャッシュから除去することと、
前記キャッシュラインを前記キャッシュに挿入する要求を、前記キャッシュラインを排他的状態で前記キャッシュに挿入する要求に変換することと、
を行うように構成されている、
システム。
【請求項11】
前記エントリを記録することは、キャッシュ内のキャッシュラインを排他的状態にアップグレードしたことに応じて実行される、
請求項10のシステム。
【請求項12】
前記キャッシュ内のキャッシュラインを排他的状態にアップグレードする前に、前記キャッシュラインは、非排他的状態で前記キャッシュ内にある、
請求項11のシステム。
【請求項13】
前記キャッシュ内のキャッシュラインを排他的状態にアップグレードしたことに応じて前記エントリを記録することは、前記キャッシュラインについてグローバル無効化要求が送信されたと判定することを含む、
請求項11のシステム。
【請求項14】
前記キャッシュラインを前記キャッシュから除去することは、無効化プローブによって行われる、
請求項10のシステム。
【請求項15】
前記キャッシュラインを前記キャッシュに挿入する要求に応じて、前記要求を、前記キャッシュラインを排他的状態で前記キャッシュに挿入する要求に変換することは、前記キャッシュラインが排他的にアップグレード可能であることを示すエントリを検出することを含む、
請求項10のシステム。
【請求項16】
前記キャッシュラインを前記キャッシュに挿入する要求は、コヒーレンス状態非依存要求を含む、
請求項10のシステム。
【請求項17】
前記キャッシュラインを前記キャッシュに記憶する要求は、前記キャッシュラインを非排他的状態で挿入する要求を含む、
請求項10のシステム。
【請求項18】
前記キャッシュ内のキャッシュラインを排他的状態にアップグレードしたことに応じて前記エントリを記録することは、前記キャッシュラインが非排他的状態にある間に前記キャッシュラインに対してストア命令が実行されると判定することを含む、
請求項11のシステム。
【請求項19】
システムであって、
プロセッサと、
キャッシュと、
キャッシュコントローラと、を備え、
前記キャッシュコントローラは、
キャッシュラインが排他的にアップグレード可能であることを示すエントリを記録することと、
前記キャッシュラインを前記キャッシュから除去することと、
前記キャッシュラインを前記キャッシュに挿入する要求を、前記キャッシュラインを排他的状態で前記キャッシュに挿入する要求に変換することと、
を行うように構成されている、
システム。
【請求項20】
前記エントリを記録することは、キャッシュ内のキャッシュラインを排他的状態にアップグレードしたことに応じて実行される、
請求項19のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
(関連出願の相互参照)
本願は、2021年10月29日に出願された米国特許出願第17/514,792号の利益を主張するものであり、その内容は、参照により本明細書に組み込まれる。
【背景技術】
【0002】
最新のマイクロプロセッサは、高スループットのための幅広い機能を実装する。いくつかのそのような特徴は、高度並列アーキテクチャを有することと、投機的に実行を行うことと、を含む。このような技術に対する改良が絶えず行われている。
【0003】
添付の図面と共に例として与えられる以下の説明から、より詳細な理解が可能になる。
【図面の簡単な説明】
【0004】
図1】開示される実施形態の1つ以上の特徴を実装することができる例示的なデバイスのブロック図である。
図2図1のプロセッサ内に配置された命令実行パイプラインのブロック図である。
図3】一例による、コンピュータシステムのブロック図である。
図4A】一例による、キャッシュラインコヒーレンス状態をアップグレードすることに関連するキャッシュ動作を示す図である。
図4B】一例による、キャッシュラインコヒーレンス状態をアップグレードすることに関連するキャッシュ動作を示す図である。
図4C】一例による、キャッシュラインコヒーレンス状態をアップグレードすることに関連するキャッシュ動作を示す図である。
図4D】一例による、キャッシュラインコヒーレンス状態をアップグレードすることに関連するキャッシュ動作を示す図である。
図5】一例による、キャッシュラインコヒーレンス状態をアップグレードするための方法のフロー図である。
【発明を実施するための形態】
【0005】
キャッシュ動作を実行するための技術が提供される。この技術は、キャッシュラインが排他的にアップグレード可能であることを示すエントリを記録することと、キャッシュからキャッシュラインを除去することと、キャッシュラインをキャッシュに挿入する要求を、キャッシュラインを排他的状態でキャッシュに挿入する要求に変換することと、を含む。
【0006】
図1は、本開示の態様が実装されている例示的なデバイス100のブロック図である。デバイス100は、例えば、コンピュータ、ゲームデバイス、ハンドヘルドデバイス、セットトップボックス、テレビ、携帯電話、又は、タブレットコンピュータを含む。デバイス100は、1つ以上のプロセッサ102、メモリ階層104、記憶装置106、1つ以上の入力デバイス108、及び、1つ以上の出力デバイス110を含む。また、デバイス100は、オプションで、入力ドライバ112及び出力ドライバ114を含んでもよい。デバイス100は、図1に示されていない追加の構成要素を含んでもよいことを理解されたい。
【0007】
1つ以上のプロセッサ102は、中央処理装置(CPU)、画像処理装置(GPU)、同じダイ上に配置されたCPU及びGPU、又は、1つ以上のプロセッサコアを含み、各プロセッサコアは、CPU又はGPUである。いくつかの例では、1つ以上のプロセッサ102は、任意の数のプロセッサを含む。いくつかの例では、1つ以上のプロセッサ102は、1つ以上のプロセッサチップを含む。いくつかの例では、各プロセッサチップは、1つ以上のプロセッサコアを含む。
【0008】
メモリ階層104の一部又は全ては、1つ以上のプロセッサ102のうち1つ以上と同じダイ上に配置されてもよいし、1つ以上のプロセッサ102とは部分的に又は完全に別に配置されてもよい。メモリ階層104は、例えば、1つ以上のキャッシュ、1つ以上の揮発性メモリ、1つ以上の不揮発性メモリ、及び/又は、他のメモリを含み、1つ以上のタイプの1つ以上のランダムアクセスメモリ(random access memory、RAM)を含み得る。
【0009】
いくつかの例では、メモリ階層104の要素は、1つ以上のプロセッサ102の要素を含む階層に配置される。そのような配置の例は、図3及び図4A~4Dに提供されている。
【0010】
記憶装置106は、固定又はリムーバブル記憶装置(例えば、ハードディスクドライブ、ソリッドステートドライブ、光ディスク、フラッシュドライブ)を含む。入力デバイス108は、キーボード、キーパッド、タッチスクリーン、タッチパッド、検出器、マイクロフォン、加速度計、ジャイロスコープ、生体認証スキャナ、又は、ネットワーク接続(例えば、無線IEEE802信号の送信及び/又は受信のための無線ローカルエリアネットワークカード)を含む。出力デバイス110は、ディスプレイ、スピーカ、プリンタ、触覚フィードバックデバイス、1つ以上の光、アンテナ、又は、ネットワーク接続(例えば、無線IEEE802信号の送信及び/又は受信のための無線ローカルエリアネットワークカード)を含む。
【0011】
入力ドライバ112は、プロセッサ102及び入力デバイス108と通信し、プロセッサ102が入力デバイス108から入力を受信することを可能にする。出力ドライバ114は、プロセッサ102及び出力デバイス110と通信し、プロセッサ102が出力デバイス110に出力を送信することを可能にする。入力ドライバ112及び出力ドライバ114は、オプションの構成要素であること、並びに、デバイス100は、入力ドライバ112及び出力ドライバ114が存在しない場合に同じ方式で動作することに留意されたい。
【0012】
図2は、図1の1つ以上のプロセッサ102内に配置された命令実行パイプライン200のブロック図である。様々な例において、図1の1つ以上のプロセッサ102の何れかは、図2に示すように実装される。
【0013】
命令実行パイプライン200は、メモリから命令を取得して命令を実行し、メモリにデータを出力し、レジスタファイル218内のレジスタ等の命令実行パイプライン200内の要素の状態を変更する。
【0014】
命令実行パイプライン200は、命令キャッシュ202を介してシステムメモリ(メモリ104等)から命令をフェッチするように構成された命令フェッチユニット204と、フェッチされた命令をデコードするように構成されたデコーダ208と、命令を処理するための計算を実行するように構成された機能ユニット216と、データキャッシュ220を介してシステムメモリからデータをロードするか又はシステムメモリにデータを記憶するように構成されたロード記憶ユニット214と、命令の動作データを記憶するレジスタを含むレジスタファイル218と、を含む。リオーダバッファ210は、現在インフライトである命令を追跡し、インフライト中のアウトオブオーダ実行を可能にするにもかかわらず、命令のインオーダリタイアを保証する。「インフライト」命令という用語は、リオーダバッファ210によって受信されたが、プロセッサのアーキテクチャ状態にコミットされた結果(例えば、レジスタファイルに書き込まれた結果等)を未だ有していない命令を指す。リザベーションステーション212は、インフライト命令を維持し、命令オペランドを追跡する。全てのオペランドが特定の命令の実行の準備ができると、リザベーションステーション212は、実行のために機能ユニット216又はロード/記憶ユニット214に命令を送信する。完了した命令は、リオーダバッファ210内でリタイアのためにマークされ、リオーダバッファキュー210の先頭にある場合にリタイアされる。リタイアとは、命令の結果をプロセッサのアーキテクチャ状態にコミットさせる動作を指す。例えば、加算結果を加算命令によってレジスタに書き込むこと、ロードされた値をロード命令によってレジスタに書き込むこと、又は、命令フローを分岐命令によって新しい位置にジャンプさせることは、全て命令のリタイアの例である。
【0015】
命令実行パイプライン200の様々な要素は、共通データバス222を介して通信を行う。例えば、機能ユニット216及びロード/記憶ユニット214は、共通データバス222に結果を書き込み、この結果は、依存命令の実行のためにリザベーションステーション212によって、及び、実行を終了したインフライト命令の最終処理結果としてリオーダバッファ210によって読み出されてもよい。また、ロード/記憶ユニット214は、共通データバス222からデータを読み出す。例えば、ロード/記憶ユニット214は、完了した命令からの結果を共通データバス222から読み出し、この結果を、ストア命令用のデータキャッシュ220を介してメモリに書き込む。
【0016】
図3は、一例による、コンピュータシステム300のブロック図である。いくつかの例では、コンピュータシステム300は、図1のコンピュータシステム100である。コンピュータシステム300は、プロセッサセット302、1つ以上のシステムレベルメモリ304、システムメモリコントローラ306、及び、他のシステム要素308を含む。
【0017】
プロセッサセット302は、1つ以上のプロセッサチップ310を含む。各プロセッサチップ310は、プロセッサチップレベルキャッシュ312、及び、1つ以上のプロセッサコア314を含む。各プロセッサコア314は、関連するコアレベルキャッシュ316を有する。プロセッサコア314のそれぞれは、図2の命令実行パイプライン200等の1つ以上の実行パイプラインを含む。
【0018】
図3に示すキャッシュ及びメモリは並列に動作し、したがって、データの一貫性を保証するためにコヒーレンスプロトコルを使用する。そのようなプロトコルの一例は、変更-排他的-共有-無効(modified-exclusive-shared-invalid、MESI)プロトコルである。各キャッシュラインは、これら4つの状態のうち何れかの指標を含む。変更状態は、特定のキャッシュに記憶されたキャッシュラインのコピーが、バッキングメモリに記憶されたコピーに対して変更され、したがって、キャッシュラインが追い出される(エビクトされる)場合にキャッシュラインをバッキングメモリに書き込まなければならないことを示す。排他的状態は、キャッシュラインが特定のキャッシュに記憶されており、階層の同じレベルの他のキャッシュに記憶されていないことを示す。排他とマークされたキャッシュラインを、階層のより高いレベルに記憶することができることに留意されたい。例えば、排他的状態のレベル0キャッシュに記憶されたキャッシュラインを、レベル0キャッシュのすぐ上のレベル1キャッシュに記憶することもできる。共有状態は、キャッシュラインが階層の同じレベルの複数のキャッシュに記憶されていることを示す。無効状態は、キャッシュラインが無効とマークされている特定のキャッシュ内でキャッシュラインが有効でないことを示す(ただし、別のキャッシュは、そのキャッシュラインの有効なコピーを記憶することができる)。
【0019】
各プロセッサコア314は、関連するコアレベルキャッシュ316を有する。プロセッサコア314がロード操作又はストア操作等のメモリ操作を実行すると、プロセッサコア314は、メモリ操作のためのデータを記憶するキャッシュラインがプロセッサコア314に関連付けられたコアレベルキャッシュ316内に配置するかどうかを判定する。そのようなキャッシュラインがコアレベルキャッシュ316内に配置されていない場合、コアレベルキャッシュ316は、プロセッサチップレベルキャッシュ312等の上位レベルのキャッシュからそのコアレベルキャッシュ316内にそのキャッシュラインをフェッチしようと試みる。プロセッサチップレベルキャッシュ312は、より高いレベルのキャッシュメモリと、プロセッサチップレベルキャッシュ312及び同じプロセッサチップ310内の全てのコアレベルキャッシュ316についてコヒーレンスプロトコルを管理するコントローラと、の両方としての役割を果たす。したがって、プロセッサチップレベルキャッシュ312は、そのキャッシュラインを要求側プロセッサコア314に提供する目的で、要求されたキャッシュラインがプロセッサチップレベルキャッシュ312に記憶されているかどうかを判定するために、それ自体をチェックする。プロセッサチップレベルキャッシュ312は、それ自体の内容から又は上位の階層のメモリから一旦フェッチされたかの何れかから、要求しているコア314にキャッシュラインを提供する。
【0020】
プロセッサチップレベルキャッシュ312は、コアレベルのキャッシュ316に対するコヒーレンスプロトコルを管理する。概して、プロセッサチップレベルキャッシュ312は、コアレベルキャッシュ316内のキャッシュラインのプロトコル状態を管理して、任意のキャッシュラインが特定のコアレベルキャッシュ316内で排他的状態にある場合、他のコアレベルキャッシュ316は、無効状態を除く任意の状態にそのキャッシュラインを有しない。複数のコアレベルのキャッシュ316は、キャッシュラインを共有状態にすることが許可される。
【0021】
プロトコルは、レベルごとに機能する。より具体的には、メモリ階層の各レベルにおいて、そのレベル内の各要素は、プロトコルの状態のいくつかのサブセットにキャッシュラインを有することが許可される。一例では、プロセッサセット302のレベルでは、各チップ310(したがって、各プロセッサチップレベルキャッシュ312)は、共有状態又は排他的状態等の状態の何れかにキャッシュラインを有することが許可される。階層の特定のレベルのコントローラは、そのレベルでプロトコルを管理する。したがって、プロセッサセットメモリ320は、プロセッサチップレベルキャッシュ312の状態を管理する。任意の特定のプロセッサチップ310のプロセッサチップレベルキャッシュ312は、コアレベルキャッシュ316の状態を管理し、システムメモリコントローラ306は、特定のキャッシュラインを記憶し得るプロセッサセット302及び他のシステム要素308の状態を管理する。
【0022】
プロセッサコア314がストア命令を実行すると、プロセッサコア314は、書き込み対象のデータを含むキャッシュラインを、関連するコアレベルキャッシュ316に排他的状態で配置することを要求する。キャッシュラインが既にキャッシュ内にあり、排他的状態にない場合、要求は、そのキャッシュラインを排他的状態に変換する要求である。キャッシュラインがキャッシュ内にない場合、要求は、キャッシュラインをキャッシュ内にロードし、そのキャッシュラインをキャッシュ内で排他的状態にする要求である。
【0023】
ストア命令が、既にキャッシュ内にあるが排他的状態にないキャッシュラインにアクセスする状況では、そのキャッシュラインを排他的状態にする動作は、待ち時間を増加させる大量の処理作業を表す。いくつかの例では、この作業は、キャッシュラインのコピーを記憶する並列キャッシュ(すなわち、コアレベルキャッシュ316の「階層的に上」にあるキャッシュ以外のキャッシュ)が、そのキャッシュラインのそれらのコピーを無効にすることを要求することを含む。第1のキャッシュは、第2のキャッシュ内のミスが第1のキャッシュから又は第1のキャッシュの階層的に上にあるキャッシュからサービスされる場合、第2のキャッシュの「階層的に上」にある。これらの並列キャッシュにそれらのコピーを無効にするように要求する行為は、本明細書では「グローバル無効化要求」又は類似の用語(例えば、「グローバル無効化コマンド」)と呼ばれることがある。
【0024】
少なくともこれらの理由のために、ストア命令のためのキャッシュラインを管理することに関連する悪影響を軽減するための技術がここで提供される。これらの技術によれば、キャッシュコントローラ(例えば、コアレベルキャッシュ316のキャッシュコントローラ)は、コアレベルキャッシュ316においてキャッシュミスが発生し、キャッシュラインが非排他的状態でコアレベルキャッシュ316に入れられ、その後キャッシュラインが排他的状態に変更された場合に、メタデータメモリ317にエントリを記録する。エントリは、キャッシュラインが「排他的にアップグレード可能」であると考えられることを示す。
【0025】
キャッシュミスは、ロード又はストア等のメモリ命令、メモリから読み取るか又はメモリに書き込む任意の命令、又は、任意のハードウェアプリフェッチ機構が、コアレベルキャッシュ316内にないキャッシュラインにアクセスしようと試みる場合に発生する。このキャッシュミスを処理するために、キャッシュコントローラは、キャッシュ階層の上位のキャッシュ又はメモリからキャッシュラインを取得し、そのキャッシュラインをコアレベルキャッシュ316に配置する。また、キャッシュコントローラは、このキャッシュラインのコヒーレンス状態を、排他又は共有等の可能な状態のうち何れかに設定する。
【0026】
上述したように、排他的状態のキャッシュラインを要求する命令が発生し、キャッシュラインが既にキャッシュ内にあるが非排他的状態にある場合、キャッシュコントローラは、キャッシュラインを排他的状態にアップグレードし、キャッシュコントローラは、そのキャッシュラインのエントリに、キャッシュラインが「排他的アップグレード可能」であると考えられることを記録する。後のある時点で、キャッシュラインは、キャッシュから追い出されるか、又は、別様に除去される(追い出しが要求されるキャッシュラインを読み取ることになる後続のキャッシュメモリアクセスに起因する等のように、任意の技術的に実現可能な理由で発生し得る)。その後、ロード、ストア、ハードウェアプリフェッチ等のメモリアクセス命令に対して、再度キャッシュラインを読み込む。この時点で、キャッシュコントローラは、キャッシュラインに関連付けられたエントリについてメタデータメモリ317をチェックする。キャッシュコントローラは、キャッシュラインのエントリが存在し、キャッシュラインが排他的にアップグレード可能であることをエントリが示すと判定する。この判定に応じて、キャッシュコントローラは、メモリアクセス命令のタイプにかかわらず、キャッシュラインを排他的状態でキャッシュに読み込む。
【0027】
別の言い方をすれば、キャッシュコントローラは、何れのキャッシュラインが「弱すぎる」コヒーレンス状態でキャッシュに読み込まれたかを記録する。この「弱すぎる」という表現は、キャッシュラインが非排他的状態で読み込まれたが、次に排他的にされたので、そのキャッシュラインがその後排他的状態で要求されると予想されることを示す。したがって、「弱すぎる」キャッシュラインが追い出し後に再びキャッシュに読み戻される場合、キャッシュコントローラは、予想されるストア命令(又は排他的状態のキャッシュラインを要求する他のタイプの命令)が、キャッシュラインのコヒーレンス状態を排他的状態に変換することに関連する作業なしに動作することができるように、排他的状態のそのキャッシュラインを読み取る。
【0028】
図3に関して上述した動作は、キャッシュラインのキャッシュへの配置を含む。いくつかの例では、このキャッシュは、図3のコアレベルキャッシュ316である。他の例では、任意の技術的に実現可能なキャッシュが、キャッシュラインを記憶するキャッシュである。様々な実施形態では、「ストア命令」は、メモリに書き込む任意の命令であり、したがってキャッシュラインへの排他的アクセスを要求する任意の命令である。
【0029】
図4A図4Dは、キャッシュラインを「アップグレード」するための例示的な動作を示す。いくつかの例では、キャッシュ406は、図3のコアレベルキャッシュ316である。いくつかの例では、メタデータメモリ404は、図3のメタデータメモリ317である。図4Aは、非排他的モードでキャッシュラインをキャッシュに記憶するための動作を示す。図4Aでは、プロセッサコア314は、メモリアクセス命令401を実行する。メモリアクセス命令又はハードウェアプリフェッチは、キャッシュラインがキャッシュ406に記憶されていないメモリアドレスに向けられる。更に、メモリアクセス命令は、キャッシュラインが非排他的状態(共有状態等)でキャッシュ406に入れられるタイプである。キャッシュラインを非排他的状態でキャッシュに入れる結果をもたらす例示的なメモリアクセス命令はロード命令であるが、任意の技術的に実行可能な命令又はハードウェアプリフェッチも、キャッシュラインを非排他的状態でキャッシュに入れることができる。したがって、キャッシュコントローラ402は、メモリアクセス命令401によって要求されたデータを含むキャッシュラインをキャッシュ406にもたらし、そのキャッシュラインのコヒーレンス状態を非排他的に設定する。いくつかの例では、キャッシュラインを非排他的状態でキャッシュ406に入れる要求は、コヒーレンス状態非依存要求であり、そのような要求に応じて、キャッシュコントローラ402は、キャッシュラインを排他的状態又は非排他的状態でキャッシュ406に記憶することを許可される。図4Aに示す例では、キャッシュラインは、非排他的状態でキャッシュ406に記憶される。
【0030】
図4Bでは、プロセッサコア314は、別のメモリアクセス命令405を実行する。このメモリアクセス命令405は、排他的モードでキャッシュラインを要求するタイプである。アクセスされるキャッシュラインは、図4Aのキャッシュ406に読み込まれるキャッシュラインと同じキャッシュラインである。キャッシュコントローラ402は、排他的状態のキャッシュラインへのアクセス要求を受信する。この要求に応じて、キャッシュコントローラ402は、キャッシュ406でキャッシュラインを排他的状態に変換する。更に、キャッシュラインが非排他的状態でキャッシュに入れられ、次に排他的状態にアップグレードされたので、キャッシュコントローラ402は、キャッシュラインが「排他的にアップグレード可能」であることを示すエントリをメタデータメモリ404に記録する。いくつかの例では、キャッシュコントローラ402は、命令がキャッシュコントローラ402にシステム全体の無効化コマンド(「グローバル無効化コマンド」又は「グローバル無効化要求」とも呼ばれる)を送信させたことを検出したことに応じて、メタデータメモリ404にエントリを記録する。システム全体の無効化コマンドは、並列キャッシュメモリに対して、1つのキャッシュが排他的状態のキャッシュラインを取得するためにキャッシュラインを無効化することを要求するコマンドである。
【0031】
図4Cでは、プロセッサコア314によって実行されるメモリアクセス命令405は、図4Aにおいてキャッシュ406に入れられたキャッシュライン以外のキャッシュラインへのアクセスを要求する。このアクセスにより、その他のキャッシュラインがキャッシュ406に入れられる。更に、キャッシュ406に対して実装されたキャッシュ置換ポリシーにより、キャッシュコントローラ402は、図4Aのキャッシュ406に入れられたキャッシュラインをキャッシュ406から追い出す。追い出しは、キャッシュラインがキャッシュ406から除去されるメカニズムとして示されているが、任意の技術的に実現可能な機構がキャッシュラインをキャッシュから除去することが可能であることに留意されたい。一例は、別の処理コア314が排他的状態のキャッシュラインへのアクセスを要求し、その結果、図4A及び図4Bに示す処理コア314がそれ自体のコピーを無効化する無効化プローブである。無効であるキャッシュラインは、キャッシュ406から除去されているキャッシュラインと事実上同じである。
【0032】
図4Dにおいて、プロセッサコア314は、図4Aのキャッシュ406に入れられたキャッシュラインのメモリにアクセスするメモリアクセス命令407を実行する。キャッシュコントローラ402は、メタデータメモリ404を検査し、キャッシュラインが「排他的にアップグレード可能」状態にあると判定する。この判定に応じて、キャッシュコントローラ402は、メモリアクセス命令407によって要求されたキャッシュラインを、メモリアクセス命令407が排他的状態でのアクセスを必要とするタイプであるか、共有状態等の異なる状態でのアクセスを必要とするタイプであるかにかかわらず、排他的状態でキャッシュ406へと入れる。例えば、メモリアクセス命令407が、非排他的状態のキャッシュラインを要求するタイプのものであるか又は状態非依存要求である場合、キャッシュコントローラ402は、この要求を排他的アクセス要求に「アップグレード」し、その結果、キャッシュラインが排他的状態でキャッシュ406に入れられる。
【0033】
図5は、一例による、キャッシュ動作を実行するための方法500のフロー図である。図1図4Dのシステムに関して説明したが、当業者であれば、任意の技術的に実現可能な順序で方法500の工程を行うように構成された任意のシステムが本開示の範囲に含まれることを理解するであろう。
【0034】
工程502で、キャッシュ406は、非排他的状態でキャッシュラインを挿入する。非排他的状態は、例えば、他の並列キャッシュがキャッシュラインのコピーを記憶するために又は他の理由で、書き込みを許可しない状態である。いくつかの例では、ロード命令等の命令が実行され、キャッシュ406においてミスを引き起こす。このミスに対処するために、キャッシュコントローラ402は、階層内の上位キャッシュ等の別のメモリからキャッシュラインを読み出し、そのキャッシュラインをキャッシュ406に記憶する。キャッシュコントローラ402は、コヒーレンス状態を共有等の非排他的状態に設定する。
【0035】
工程504で、キャッシュコントローラ402は、キャッシュラインの排他的状態へのアップグレードが発生したことを検出する。この検出に応じて、キャッシュコントローラ402は、キャッシュラインが排他的にアップグレード可能であるという指標(指示)をメタデータメモリ404に記録する。いくつかの例では、キャッシュラインの排他的状態へのアップグレードが発生したことの検出は、キャッシュコントローラ402がグローバル無効化要求を他のキャッシュメモリに送信したことの検出を含むか、又は、検出として具現化される。
【0036】
工程506で、工程502及び504のキャッシュラインが、キャッシュ406から除去される。いくつかの例では、この除去は、キャッシュラインの追い出しである。追い出しは、別のキャッシュラインがキャッシュ406に入れられる場合にキャッシュが「満杯すぎる」ことに対する応答である。より具体的には、この新しいキャッシュラインのための指定された「スロット」の全ては、有効なキャッシュラインによって占有され、したがって、キャッシュコントローラ402は、何れかのキャッシュラインを除去することになる。キャッシュコントローラ402は、例えば、追い出しポリシー(最長時間未使用(least recently used)又は任意の他の技術的に実現可能な追い出しポリシー等)に従って、これらのキャッシュラインのうち何れかを追い出す。別の例では、キャッシュラインは、異なる処理コア314によって「プローブされる」ことに起因して除去される。第2の処理コア314によって第1の処理コア314に関連付けられたキャッシュからキャッシュラインを「プローブする」ことは、第2の処理コア314が、第1の処理コア314がそのキャッシュライン(排他的等)にアクセスすることを許可しない状態でキャッシュラインを要求することを意味し、したがって、第1の処理コア314が、第1の処理コア314のためのキャッシュ内のキャッシュラインのコピーを無効化することを必要とする。工程506は、キャッシュからキャッシュラインを除去するための任意の技術的に実現可能な理由を含み、「除去する」という用語は、キャッシュラインの状態を無効に設定することを含むことを理解されたい。
【0037】
工程508では、キャッシュコントローラ402は、キャッシュラインがキャッシュ406(工程502及び504においてキャッシュラインが記憶されたキャッシュと同じキャッシュ)に挿入されるように再び要求されたことを検出する。様々な例では、キャッシュ406へのこの挿入は、工程502及び工程504の動作が行われるのと同じ処理コア314である処理コア314のメモリアクセス命令のキャッシュミスに応じて行われる。キャッシュラインは、非排他的状態でキャッシュ406に挿入される。いくつかの例では、この非排他的状態での挿入は、ロード命令又はハードウェアプリフェッチ等の命令によるものである。このキャッシュラインが排他的なアップグレード可能な状態にあるという指標に応じて、メタデータメモリ404の内容に基づいて、キャッシュコントローラ402は、非排他的状態のキャッシュラインを挿入する要求を、排他的状態のキャッシュにキャッシュラインを挿入する要求に変換する。
【0038】
いくつかの例では、キャッシュラインを非排他的状態でキャッシュに挿入する工程508の要求は、状態非依存要求である。そのような状態非依存要求は、非排他的状態又は排他的状態等の任意の状態でキャッシュラインをキャッシュ406に記憶する要求である。したがって、このような要求は、非排他的状態又は排他的状態を許可する要求である。加えて、そのような例では、この要求の変換は、排他的に要求される要求への要求の変換である。言い換えれば、これらの例では、キャッシュコントローラ402は、非排他的状態又は排他的状態の何れかを許可する状態非依存要求を、非排他的状態を許可せず、排他的状態を要求する排他要求に変換する。
【0039】
本明細書の開示に基づいて、多くの変形が可能であることを理解されたい。特徴及び要素が特定の組み合わせで上述されているが、各特徴又は要素は、他の特徴及び要素を用いずに単独で、又は、他の特徴及び要素を用いて若しくは用いずに他の特徴及び要素との様々な組み合わせで使用されてもよい。
【0040】
図に示される様々な要素は、ハードウェア(例えば、回路)、プロセッサ上で実行されるソフトウェア、又は、ハードウェアとソフトウェアの組み合わせとして実装可能である。様々な例では、プロセッサメモリ要素410、プロセッサチップ310、システム要素308、システムレベルメモリ304、システムメモリコントローラ306、プロセッサチップレベルキャッシュ312、プロセッサセットメモリ320、プロセッサコア314、コアレベルキャッシュ316、メタデータメモリ317、キャッシュコントローラ402、メタデータメモリ404、及び、キャッシュ406等の各ブロック並びに命令実行パイプライン200及びコンピュータシステム100の図示されたユニットは、ハードウェア(例えば、ハードウェアプロセッサ及び/又は回路)、ソフトウェア又はそれらの組み合わせとして実装可能である。提供される方法は、汎用コンピュータ、プロセッサ又はプロセッサコアにおいて実施され得る。好適なプロセッサとしては、例として、汎用プロセッサ、専用プロセッサ、従来型プロセッサ、デジタルシグナルプロセッサ(digital signal processor、DSP)、複数のマイクロプロセッサ、DSPコアに関連する1つ以上のマイクロプロセッサ、コントローラ、マイクロコントローラ、特定用途向け集積回路(Application Specific Integrated Circuit、ASIC)、フィールドプログラマブルゲートアレイ(Field Programmable Gate Array、FPGA)回路、任意の他のタイプの集積回路(integrated circuit、IC)、及び/又は、状態マシンが挙げられる。そのようなプロセッサは、処理されたハードウェア記述言語(hardware description language、HDL)命令及びネットリスト等の他の中間データ(そのような命令は、コンピュータ可読媒体に記憶させることが可能である)の結果を使用して製造プロセスを構成することによって製造され得る。そのような処理の結果は、マスクワークとすることができ、このマスクワークをその後の半導体製造プロセスにおいて使用して、実施形態の態様を実施するプロセッサを製造する。
【0041】
本明細書に提供される方法又はフロー図は、汎用コンピュータ又はプロセッサによる実施のために非一時的なコンピュータ可読記憶媒体に組み込まれるコンピュータプログラム、ソフトウェア又はファームウェアにおいて実施され得る。非一時的なコンピュータ可読記憶媒体の例としては、読み取り専用メモリ(read only memory、ROM)、ランダムアクセスメモリ(RAM)、レジスタ、キャッシュメモリ、半導体メモリデバイス、内蔵ハードディスク及びリムーバブルディスク等の磁気媒体、磁気光学媒体、並びに、CD-ROMディスク及びデジタル多用途ディスク(digital versatile disk、DVD)等の光学媒体が挙げられる。
図1
図2
図3
図4A
図4B
図4C
図4D
図5
【国際調査報告】