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

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

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

特表2024-535300スペアディレクトリエントリに特定のデータパターンのインジケーションを記憶する方法
<>
  • 特表-スペアディレクトリエントリに特定のデータパターンのインジケーションを記憶する方法 図1
  • 特表-スペアディレクトリエントリに特定のデータパターンのインジケーションを記憶する方法 図2
  • 特表-スペアディレクトリエントリに特定のデータパターンのインジケーションを記憶する方法 図3
  • 特表-スペアディレクトリエントリに特定のデータパターンのインジケーションを記憶する方法 図4
  • 特表-スペアディレクトリエントリに特定のデータパターンのインジケーションを記憶する方法 図5
  • 特表-スペアディレクトリエントリに特定のデータパターンのインジケーションを記憶する方法 図6
  • 特表-スペアディレクトリエントリに特定のデータパターンのインジケーションを記憶する方法 図7
  • 特表-スペアディレクトリエントリに特定のデータパターンのインジケーションを記憶する方法 図8
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-09-30
(54)【発明の名称】スペアディレクトリエントリに特定のデータパターンのインジケーションを記憶する方法
(51)【国際特許分類】
   G06F 12/0817 20160101AFI20240920BHJP
   G06F 12/0895 20160101ALI20240920BHJP
【FI】
G06F12/0817
G06F12/0895 114
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2024517406
(86)(22)【出願日】2022-08-25
(85)【翻訳文提出日】2024-04-18
(86)【国際出願番号】 US2022041586
(87)【国際公開番号】W WO2023055508
(87)【国際公開日】2023-04-06
(31)【優先権主張番号】17/489,712
(32)【優先日】2021-09-29
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】591016172
【氏名又は名称】アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド
【氏名又は名称原語表記】ADVANCED MICRO DEVICES INCORPORATED
(74)【代理人】
【識別番号】100108833
【弁理士】
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100111615
【弁理士】
【氏名又は名称】佐野 良太
(74)【代理人】
【識別番号】100162156
【弁理士】
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】ポール ジェイ. モイヤー
【テーマコード(参考)】
5B205
【Fターム(参考)】
5B205NN42
5B205PP11
(57)【要約】
メモリに記憶されたデータを要求する場合にプローブを省略するためのシステム及び方法が開示される。プローブの省略は、キャッシュラインに関連する情報を追跡するために、コヒーレンスディレクトリエントリを生成することと、コヒーレンスディレクトリエントリのキャッシュラインデータが追跡可能パターンであるかどうかを判定することと、キャッシュラインデータに対する1つ以上の読み出しがプローブを送信することなくサービスされ得ることを示すインジケーションを設定することと、を含む。また、キャッシュに関連するコヒーレンスディレクトリに追加のデータ記憶容量を提供するためのシステム及び方法も開示される。追加のデータ記憶容量は、キャッシュラインを能動的に追跡することと、キャッシュラインを無効化し、コヒーレンスディレクトリに通知することと、データが追跡可能パターンであるかどうかを判定することと、キャッシュラインがもはやキャッシュ内にないようにコヒーレンスディレクトリを更新することと、キャッシュラインデータがゼロであることを示すようにコヒーレンスディレクトリを更新することと、コヒーレンスディレクトリからキャッシュラインへの読み出しをサービスし、指定されたデータを供給することと、を含む。
【選択図】図4
【特許請求の範囲】
【請求項1】
メモリに記憶されたデータを要求する場合にプローブを省略するための方法であって、
少なくとも1つのキャッシュラインに関連する情報を追跡するために、キャッシュに関連するコヒーレンシディレクトリ内にコヒーレンスディレクトリエントリを生成することと、
前記コヒーレンスディレクトリエントリについてのキャッシュラインデータが追跡可能パターンであるかどうかを判定することと、
プローブを送信することなく前記キャッシュラインデータに対する1つ以上の読み出しがサービスされ得ることを示すインジケーションを、前記キャッシュラインデータに関連するコヒーレンスディレクトリエントリに設定することと、を含む、
方法。
【請求項2】
前記追跡可能パターンは、ゼロを含む、
請求項1の方法。
【請求項3】
前記キャッシュラインは、MESI状態にある、
請求項1の方法。
【請求項4】
前記MESI状態は、排他的(E)状態又は変更(M)状態ではない、
請求項3の方法。
【請求項5】
前記コヒーレンスディレクトリは、レベル3キャッシュディレクトリに配置されている、
請求項1の方法。
【請求項6】
前記コヒーレンスディレクトリは、レベル2キャッシュのキャッシュラインを追跡する、
請求項1の方法。
【請求項7】
省略されたプローブは、前記レベル2キャッシュに向けられる、
請求項1の方法。
【請求項8】
前記コヒーレンシディレクトリ内の各コヒーレンスディレクトリエントリは、キャッシュラインがキャッシュ階層内の別のキャッシュ内に存在するかどうかを示す情報を含む、
請求項1の方法。
【請求項9】
システムであって、
プロセッサと、
メモリと、を備え、
前記メモリは、
キャッシュ階層と、
前記キャッシュ階層に関連するコヒーレンシディレクトリと、を含み、
前記コヒーレンシディレクトリは、キャッシュラインに関連する情報を追跡するための複数のコヒーレンシディレクトリエントリを含み、各エントリはキャッシュラインに関連付けられており、各エントリは、前記複数のコヒーレンスディレクトリエントリのうち何れかに関連するキャッシュラインデータに対する1つ以上の読み出しが、前記エントリに対するキャッシュラインデータが追跡可能パターンであることに応じて、プローブを送信することなくサービスされ得ることを示すインジケーションを含む、
システム。
【請求項10】
前記コヒーレンスディレクトリは、レベル3キャッシュディレクトリに配置されている、
請求項9のシステム。
【請求項11】
前記コヒーレンスディレクトリは、レベル2キャッシュのキャッシュラインを追跡する、
請求項9のシステム。
【請求項12】
前記コヒーレンスディレクトリエントリは、ラインが別のキャッシュ内に存在することを示す、
請求項9のシステム。
【請求項13】
キャッシュに関連するコヒーレンスディレクトリに追加のデータ記憶容量を提供するための方法であって、
前記キャッシュの前記コヒーレンスディレクトリ内のキャッシュラインを能動的に追跡することと、
前記キャッシュラインを無効化し、前記コヒーレンスディレクトリに通知することと、
データが追跡可能パターンであるかどうかを判定することと、
前記コヒーレンスディレクトリが利用され、前記判定することが、前記データが追跡可能パターンであることを示す場合に、
前記キャッシュラインがもはやキャッシュ内にないように前記コヒーレンスディレクトリを更新することと、
キャッシュラインデータがゼロであることを示すように前記コヒーレンスディレクトリを更新することと、
前記コヒーレンスディレクトリから前記キャッシュラインへの読み出しをサービスし、指定されたデータを供給することと、を含む、
方法。
【請求項14】
前記追跡可能パターンは、全てゼロである、
請求項13の方法。
【請求項15】
前記コヒーレンスディレクトリは、レベル3キャッシュディレクトリに配置されている、
請求項13の方法。
【請求項16】
前記コヒーレンスディレクトリは、レベル2キャッシュのキャッシュラインを追跡する、
請求項13の方法。
【請求項17】
システムであって、
プロセッサと、
メモリと、を備え、
前記メモリは、
キャッシュ階層と、
前記キャッシュ階層に関連するコヒーレンシディレクトリであって、前記コヒーレンシディレクトリは、キャッシュラインに関連する情報を追跡するための複数のコヒーレンシディレクトリエントリを含み、各エントリは、キャッシュラインに関連付けられている、コヒーレンシディレクトリと、を備え、
前記プロセッサは、前記キャッシュラインを無効化し、前記無効化を前記コヒーレンスディレクトリに通知し、前記キャッシュライン内のデータが追跡可能パターンであるかどうかを判定し、
前記プロセッサは、前記データが追跡可能パターンであることを前記判定することが示す場合に、前記キャッシュラインがもはや前記キャッシュ階層内にないように前記コヒーレンスディレクトリを更新し、前記キャッシュラインデータがゼロであることを示すように前記コヒーレンスディレクトリを更新し、前記コヒーレンスディレクトリから前記キャッシュラインへの読み出しをサービスして、指定されたデータを供給する、
システム。
【請求項18】
前記追跡可能パターンは、全てゼロである、
請求項17のシステム。
【請求項19】
前記コヒーレンスディレクトリは、レベル3キャッシュディレクトリに配置されている、
請求項17のシステム。
【請求項20】
前記コヒーレンスディレクトリは、レベル2キャッシュのキャッシュラインを追跡する、
請求項17のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
(関連出願の相互参照)
本願は、2021年9月29日に出願された米国特許出願第17/489,712号の利益を主張し、その内容は、参照により、本明細書に十分に記載されているように組み込まれる。
【背景技術】
【0002】
現代のマイクロプロセッサは、高スループットのための多様な特徴を実装する。いくつかのそのような特徴は、高度並列アーキテクチャを有することと、スペアディレクトリエントリ内に特定のデータパターンのインジケーションを記憶することと、を含む。このような特徴に対する改良が絶えず行われている。
【0003】
添付の図面と共に例として与えられる以下の説明から、より詳細な理解を得ることができる。
【図面の簡単な説明】
【0004】
図1】1つ以上の開示された実施形態を実装することができる例示的なデバイスのブロック図である。
図2図1のプロセッサ内に配置された命令実行パイプラインのブロック図である。
図3】一例による、コンピュータシステムのブロック図である。
図4】別の例による、特定のデータパターンのインジケーションを使用して記憶及び読み出しを実行することが可能なコンピュータシステムのブロック図である。
図5】一例による、特定のデータパターンのインジケーションをスペアディレクトリに記憶するための方法500のフロー図である。
図6】一例による、特定のデータパターンのインジケーションをスペアディレクトリに記憶するための方法600のフロー図である。
図7】一例による、プローブの省略のための方法を示す図である。
図8】一例による、追加のデータ記憶容量のための方法を示す図である。
【発明を実施するための形態】
【0005】
コンピューティングにおいて、キャッシュは、データを記憶するハードウェア又はソフトウェア構成要素であり、そのデータに対する将来の要求が、プロセッサから遠くに通信可能に配置された他のメモリ位置と比較してより高速にサービスされることを可能にする。一例として、キャッシュに記憶されたデータは、以前の計算の結果、又は、他の場所に記憶されたデータのコピーであり得る。キャッシュヒットは、プローブ又は要求に応じて、要求されたデータをキャッシュ内で見つけることができる場合に発生し、キャッシュミスは、要求されたデータをキャッシュ内で見つけることができない場合に発生する。キャッシュヒットは、キャッシュからデータを読み出すことによってサービス(served)され、これは、結果の再計算又はより遅いデータストアからの読み出しよりも高速である。理解されるように、キャッシュからサービスされ得る要求が多いほど、システムは、より高速に実行される。
【0006】
キャッシュ及びそこに記憶されたデータの使用の利益を得るために、キャッシュ内のデータの正確さの理解を維持することが重要である。キャッシュ内のデータを維持するために多数のプロトコルが利用されているが、そのようなプロトコルの1つは、一般的な無効化ベースのキャッシュコヒーレンスプロトコルであるMESIプロトコルである。MESIプロトコルは、キャッシュ内のデータの可能な状態に基づいて命名される。MESIプロトコルでは、変更(M)、排他(E)、共有(S)及び無効(I)の4つの状態(コヒーレンス追跡状態)がある。
【0007】
変更(M)は、キャッシュラインが現在のキャッシュ内にのみ存在し、メインメモリ内の値から変更されている(M状態)ことを表す。キャッシュは、(もはや有効でない)メインメモリ状態の任意の他の読み出しを許可する前に、データをメインメモリに書き戻すように要求される。ライトバックは、ラインを共有状態(S)に変更する。
【0008】
排他(E)は、キャッシュラインが現在のキャッシュ内にのみ存在し、メインメモリバージョンに一致することを表す。キャッシュラインは、読み出し要求に応じて、いつでも共有状態に変更することができる。代替的に、キャッシュラインは、キャッシュラインに書き込む場合に変更状態に変更され得る。
【0009】
共有(S)は、キャッシュラインがマシンの他のキャッシュに記憶されてもよく、メインメモリバージョンに一致することを表す。ラインは、いつでも廃棄する(無効状態に変更する)ことができる。
【0010】
無効(I)は、キャッシュラインが無効(未使用)であることを示す。
【0011】
理解されるように、キャッシュ状態の追跡は、メモリ及びクロックサイクルを必要とする。コンピュータリソースは、状態を変更し、キャッシュラインから他のメモリ位置へ又は他のメモリ位置からデータを書き込む場合に使用される。キャッシュ及びキャッシュ状態の使用は、コンピュータ時間及び処理を節約するが、不要な場合のキャッシュラインの状態の変更、及び、キャッシュからメモリへの書込み又はメモリからキャッシュへの書込みを更に最小限に抑えることが有益であり得る。したがって、キャッシュのプロービングを最小限に抑え、状態の変化を最小限に抑えることは、特定の条件が存在する場合に利益をもたらすことができる。
【0012】
実際にデータを記憶しなくても、「コヒーレンス」追跡情報と共に、何れのデータが存在するかに関する情報を記憶構造に記憶する技術が提供される。これらの技術は、いくつかの他のコヒーレンス条件が満たされた場合、プローブを省略することを含む。コヒーレンス追跡情報の一例は、非限定的な例として、キャッシュラインが書込み可能な状態(例えば、レベル2キャッシュライン)にないかどうかに関する情報を含む。
【0013】
本開示では、メモリに記憶されたデータを要求する場合にプローブを省略するための方法が提供される。プローブの省略方法は、キャッシュラインのうち少なくとも1つに関連付けられた情報を追跡するために、キャッシュに関連付けられたコヒーレンシディレクトリ内にコヒーレンスディレクトリエントリを生成することと、コヒーレンスディレクトリエントリのためのキャッシュラインデータが追跡可能パターンであるかどうかを判定することと、キャッシュラインデータのための1つ以上の読み出しがプローブを送信することなくサービスされ得ることを示すインジケーションを、キャッシュラインデータに関連付けられたコヒーレンスディレクトリエントリ内に設定することと、を含む。本方法は、追跡可能パターンがゼロを含み、キャッシュラインがMESI状態にある構成を含むことができる。コヒーレンシディレクトリ内の各コヒーレンスディレクトリエントリは、キャッシュラインがキャッシュ階層内の別のキャッシュ内に存在するかどうかを示す情報を含むことができる。
【0014】
また、本開示では、メモリに記憶されたデータを要求する場合にプローブを省略するためのシステムが提供される。システムは、プロセッサと、メモリと、を含む。メモリは、キャッシュ階層と、キャッシュ階層に関連付けられたコヒーレンシディレクトリであって、コヒーレンシディレクトリは、キャッシュラインに関連付けられた情報を追跡するための複数のコヒーレンシディレクトリエントリを含み、各エントリはキャッシュラインに関連付けられ、各エントリは、複数のコヒーレンスディレクトリエントリのうち何れかに関連付けられたキャッシュラインデータに対する1つ以上の読み出しが、エントリに対するキャッシュラインデータが追跡可能パターンであることに応じてプローブを送信することなくサービスされ得ることを示すインジケーションを含む、コヒーレンシディレクトリと、を含む。システムは、追跡可能パターンがゼロを含み、キャッシュラインがMESI状態にある構成を含むことができる。コヒーレンスディレクトリエントリは、ラインが別のキャッシュ内に存在することを示すことができる。
【0015】
本開示では、メモリ内に追加のデータ記憶容量を提供するための方法が提供される。追加のデータ記憶容量の方法は、キャッシュのコヒーレンスディレクトリ内のキャッシュラインを能動的に追跡することと、キャッシュラインを無効化し、コヒーレンスディレクトリに通知することと、データが追跡可能パターンであるかどうかを判定することと、コヒーレンスディレクトリが利用され、判定が、データが追跡可能パターンであることを示す場合、キャッシュラインがもはやキャッシュ内にないことをコヒーレンスディレクトリに更新することと、キャッシュラインデータがゼロであることを示すようにコヒーレンスディレクトリを更新することと、コヒーレンスディレクトリからキャッシュラインへ読み出しをサービスし、指定されたデータを供給することと、を含む。本方法は、ゼロを含む追跡可能パターンを含むことができる。
【0016】
本開示では、メモリ内に追加のデータ記憶容量を提供するシステムも提供される。システムは、プロセッサと、メモリと、を含む。メモリは、キャッシュ階層に関連付けられたコヒーレンシディレクトリであって、コヒーレンシディレクトリは、キャッシュラインに関連付けられた情報を追跡するための複数のコヒーレンシディレクトリエントリを含み、各エントリはキャッシュラインに関連付けられている、コヒーレンシディレクトリと、を含み、プロセッサは、キャッシュラインを無効化し、コヒーレンスディレクトリに無効化を通知し、キャッシュライン内のデータが追跡可能パターンであるかどうかを判定し、データが追跡可能パターンであることを判定が示す場合、プロセッサは、キャッシュラインがもはやキャッシュ階層内にないことをコヒーレンスディレクトリに更新し、キャッシュラインデータがゼロであることを示すようにコヒーレンスディレクトリを更新し、コヒーレンスディレクトリからキャッシュラインへ読み出しをサービスして指定されたデータを供給する。コヒーレンスディレクトリエントリは、ラインが別のキャッシュ内に存在することを示すことができる。
【0017】
図1は、本開示の態様が実装されている例示的なデバイス100のブロック図である。デバイス100は、例えば、コンピュータ、ゲームデバイス、ハンドヘルドデバイス、セットトップボックス、テレビ、携帯電話、又は、タブレットコンピュータを含む。デバイス100は、1つ以上のプロセッサ102、メモリ階層104、記憶デバイス106、1つ以上の入力デバイス108、及び、1つ以上の出力デバイス110を含む。また、デバイス100は、オプションで、入力ドライバ112及び出力ドライバ114を含み得る。デバイス100は、図1に示されていない追加の構成要素を含むことができることを理解されたい。
【0018】
1つ以上のプロセッサ102は、中央処理ユニット(central processing unit、CPU)、グラフィック処理ユニット(graphics processing unit、GPU)、同じダイ上に位置するCPU及びGPU、又は、1つ以上のプロセッサコアを含み、各プロセッサコアは、CPU又はGPUである。いくつかの例では、1つ以上のプロセッサ102は、任意の数のプロセッサを含む。いくつかの例では、1つ以上のプロセッサ102は、1つ以上のプロセッサチップを含む。いくつかの例では、各プロセッサチップは、1つ以上のプロセッサコアを含む。
【0019】
メモリ階層104の一部又は全ては、1つ以上のプロセッサ102のうち1つ以上と同じダイ上に位置してもよいし、又は、1つ以上のプロセッサ102とは部分的又は完全に別に位置してもよい。メモリ階層104は、例えば、1つ以上のキャッシュ、1つ以上の揮発性メモリ、1つ以上の不揮発性メモリ及び/又は他のメモリを含み、1つ以上のタイプの1つ以上のランダムアクセスメモリ(RAM)を含むことができる。
【0020】
いくつかの例では、メモリ階層104の要素は、1つ以上のプロセッサ102の要素を含む階層に配置される。このような配置の例が図3及び図4に示されている。
【0021】
記憶デバイス106は、固定又はリムーバブル記憶装置(例えば、ハードディスクドライブ、ソリッドステートドライブ、光ディスク、フラッシュドライブ)を含む。入力デバイス108は、キーボード、キーパッド、タッチスクリーン、タッチパッド、検出器、マイクロフォン、加速度計、ジャイロスコープ、生体認証スキャナ、又は、ネットワーク接続(例えば、無線IEEE802信号の送信及び/又は受信のための無線ローカルエリアネットワークカード)を含む。出力デバイス110は、ディスプレイ、スピーカ、プリンタ、触覚フィードバックデバイス、1つ以上の光、アンテナ、又は、ネットワーク接続(例えば、無線IEEE802信号の送信及び/又は受信のための無線ローカルエリアネットワークカード)を含む。
【0022】
入力ドライバ112は、プロセッサ102及び入力デバイス108と通信し、プロセッサ102が入力デバイス108から入力を受信することを可能にする。出力ドライバ114は、プロセッサ102及び出力デバイス110と通信し、プロセッサ102が出力デバイス110に出力を送信することを可能にする。入力ドライバ112及び出力ドライバ114は、オプションの構成要素であること、並びに、デバイス100は、入力ドライバ112及び出力ドライバ114が存在しない場合に、同じ方式で動作する。
【0023】
図2は、図1の1つ以上のプロセッサ102内に配置された命令実行パイプライン200のブロック図である。様々な例において、図1の1つ以上のプロセッサ102のプロセッサコアの何れかは、図2に示されるように実装される。
【0024】
命令実行パイプライン200は、メモリから命令を取り出して命令を実行し、データをメモリに出力し、レジスタファイル218内のレジスタ等の命令実行パイプライン200内の要素の状態を変更する。
【0025】
命令実行パイプライン200は、命令キャッシュ202を介してシステムメモリ(メモリ104等)から命令をフェッチするように構成された命令フェッチユニット204と、フェッチされた命令をデコードするように構成されたデコーダ208と、命令を処理するための計算を実行するように構成された機能ユニット216と、データキャッシュ220を介してシステムメモリからデータをロードするか又はシステムメモリにデータを記憶するように構成されたロード記憶ユニット214と、命令のための作業データを記憶するレジスタを含むレジスタファイル218と、を含む。リオーダバッファ210は、現在インフライトである命令を追跡し、インフライト中のアウトオブオーダ実行を可能にするにもかかわらず、命令のインオーダリタイアを保証する。「インフライト」命令は、リオーダバッファ210によって受信されたが、プロセッサのアーキテクチャ状態にコミットされた結果(例えば、レジスタファイルに書き込まれた結果等)を未だ有していない命令を指す。リザベーションステーション212は、インフライト命令を維持し、命令オペランドを追跡する。全てのオペランドが特定の命令の実行の準備ができると、リザベーションステーション212は、実行のために機能ユニット216又はロード/記憶ユニット214に命令を送信する。完了した命令は、リオーダバッファ210内でリタイアのためにマークされ、リオーダバッファキュー210の先頭にある場合にリタイアされる。リタイアとは、命令の結果をプロセッサのアーキテクチャ状態にコミットさせる動作を指す。例えば、加算結果を加算命令によってレジスタに書き込むこと、ロードされた値をロード命令によってレジスタに書き込むこと、又は、命令フローを分岐命令によって新しい位置にジャンプさせることは、全て命令のリタイアの例である。
【0026】
命令実行パイプライン200の様々な要素は、共通データバス222を介して通信を行う。例えば、機能ユニット216及びロード/記憶ユニット214は、共通データバス222に結果を書き込み、この結果は、依存命令の実行のためにリザベーションステーション212によって、及び、実行を終了したインフライト命令の最終処理結果としてリオーダバッファ210によって読み出されることができる。また、ロード/記憶ユニット214は、共通データバス222からデータを読み出す。例えば、ロード/記憶ユニット214は、完了した命令からの結果を共通データバス222から読み出し、この結果を、記憶命令用のデータキャッシュ220を介してメモリに書き込む。
【0027】
命令実行パイプライン200は、いくつかの命令を投機的に実行する。投機的実行とは、命令実行パイプライン200が命令の実行のために少なくともいくつかの動作を実行するが、命令が誤って実行された場合にそのような実行の効果を逆転させる能力を維持することを意味する。
【0028】
一例において、命令実行パイプライン200は、分岐予測を実行することができる。分岐予測は、命令フェッチユニット204が、実行が流れる制御フロー経路を予測し、その経路から命令をフェッチする動作である。予測を行う多くの方法があり、いくつかは、グローバル又はアドレス固有の分岐経路履歴(例えば、分岐が行われるか否か、及び/又は、そのような分岐のターゲットの履歴)を維持することと、そのような履歴を用いて様々な動作を実行することと、を含む。実行パイプライン(例えば、機能ユニット216)は、実際に分岐を実行して、そのような分岐の正しい結果を決定する。予測された実行経路からの命令が実行されているが、機能ユニット216が正しい実行経路を実際に決定する前に、そのような命令は、そのような命令が実際に実行されるべきでない可能性があるので、投機的に実行されていると見なされる。命令が投機的に実行される理由は他にも多くある。この例では投機的実行を扱っているが、特定のデータパターンのインジケーションをスペアディレクトリエントリに記憶する本発明は、任意の実行マイクロプロセッサと共に利用することができる。すなわち、投機的マイクロプロセッサは、例示に過ぎない。
【0029】
ストア命令を投機的に実行することが可能である。投機的実行は、命令に対して様々な動作を実行するが、命令が非投機的になるまでそのような動作をコミットしないことによって行われる。一例では、ストア命令を投機的に実行することは、命令をロード/記憶ユニット214に配置することと、記憶するデータを決定することと、データを記憶するアドレスを決定することと、を含む(これは、アドレス計算及び変換を伴い得る)。この時間中、リオーダバッファ210は、ストア命令を保持し、ストア命令が非投機的に実行されるようになるまで、命令がリタイアすることを許可しない(結果をコミット)。
【0030】
命令は、予測された分岐制御フロー経路で実行する等の理由又は様々な他の理由のために投機的に実行することができる。ストア命令の実行の一部は、記憶されるデータをキャッシュに書き込むことを含む。これを行うために、キャッシュコントローラは、適切なキャッシュラインへの排他的アクセスを獲得し、次いで、指定されたデータをそのキャッシュラインに書き込む。適切なキャッシュラインへの排他的アクセスを得ることは、他のキャッシュ(例えば、全ての他のキャッシュ)に、それらのキャッシュラインのコピーを無効化させることを伴う。これを行うことにより、そのキャッシュラインのデータの競合するバージョンが異なるキャッシュメモリに存在することが防止される。MESI(変更、排他、共有、無効)プロトコルでは、ストアを実行する命令実行パイプライン200がキャッシュラインへの排他的アクセスを獲得し、他のユニットがキャッシュラインのコピーを無効に設定する。
【0031】
命令実行パイプライン200は、命令の様々な動作を早期に実行しようとするアウトオブオーダ実行パイプラインである。このような動作の一例は、上述した無効化である。具体的には、ストア命令を実行するために、命令実行パイプライン200は、ストア命令の実行の早い段階でキャッシュラインの他のメモリのコピーの無効化を要求することが許可され、しばしば要求し、その結果、ストア命令が関連するデータを書き込む準備ができている場合に、命令実行パイプライン200は、無効化が後で行われる場合に限り待つ必要がない。しかしながら、ストア命令の投機的実行が行われる場合に問題が生じる。具体的には、上述したように、命令実行パイプライン200が、投機的に実行されるストア命令についてキャッシュラインの無効化を要求し、ストア命令がデータを書き込む準備ができる前にそのような要求を実質的に行うことが可能である。しかし、ストア命令の投機的実行が実際には正しくない可能性がある。例えば、ストア命令が、誤って予測された制御フロー経路上で実行されていた可能性がある(分岐が実際に行われる分岐不成立ポイントを過ぎた場合等)。この場合、関与するキャッシュラインの様々なコピーを様々なメモリから無効化させる行為が無駄になり、それらの様々なメモリは、共有又は排他状態にあるそれらのキャッシュラインを再獲得する必要があり得る。
【0032】
プローブを排除又は最小化すること等によって時間を節約するために、特定のデータパターンのインジケーションをスペアディレクトリエントリに記憶することができる。特定のデータパターンのインジケーションは、「コヒーレンスディレクトリ」に記憶することができる。コヒーレンスディレクトリは、キャッシュコヒーレンス機構の一種であるディレクトリベースのキャッシュコヒーレンスのために使用され、コヒーレンスディレクトリは、snoopy法等の他の技術の代わりにキャッシュを管理するために使用される。コヒーレンスディレクトリは、例えば、キャッシュ階層内の記憶位置とすることができる。
【0033】
一実施形態では、コヒーレンスディレクトリは、レベル3キャッシュに接続するプライベートレベル2キャッシュを有する複数のCPUコアのうち1つ以上を含む。レベル3キャッシュは、多くのレベル2キャッシュのうち何れがキャッシュラインを有するかに関する正確な情報を含む、レベル2キャッシュアドレスの正確なコピーを有する。所定のコアからのレベル2キャッシュミスをサービスする場合に、レベル3は、レベル3キャッシュタグ及びレベル2キャッシュアドレスのコピーの両方を調べて、キャッシュラインが何処に存在するかを判定する。
【0034】
いくつかの他の実施形態では、アドレスの正確なコピーが追跡される代わりに、コヒーレンスディレクトリとしてセットアソシエイティブ構造がある。これは、「追加のレベル3キャッシュタグ」として、又は、それ自体の専用構造によって実装することができる。例えば、レベル3キャッシュが12ウェイセットアソシエイティブキャッシュ(12個のタグを有し、インデックスごとに12個のデータラインを記憶する)である場合、「コヒーレンス」エントリを表す追加の4つのタグを有することができる。これらは、レベル3に記憶されたデータに対応しないが、代わりに、キャッシュラインを収容する1つ以上のレベル2キャッシュへのポインタを有する。この構造のサイズは、性能分析に基づいてプロビジョニングされ、そのセットアソシエイティブの性質により、レベル2キャッシュ内のキャッシュラインアドレスがレベル3ディレクトリ内に「ホットスポット」を形成する、いくつかの最悪の場合のシナリオを説明するためにオーバープロビジョニングされることが多い。
【0035】
レベル3キャッシュを超えて、「システムコヒーレンスマネージャ」を使用して、何れのレベル3キャッシュがキャッシュラインを収容するかを追跡することができる。システムコヒーレンスマネージャは、キャッシュラインアドレスポインタと、より大きな粒度のポインタ(例えば、4キロバイトページ)と、の両方の混合である。
【0036】
実装方式にかかわらず、コヒーレンスディレクトリは、キャッシュコントローラが最新のデータを得るために1つ以上のキャッシュにプローブを送信しなければならない可能性があることを示す情報を、キャッシュコントローラに提供する。これらのプローブは、性能を制限する可能性があり、元のキャッシュアクセスにレイテンシを追加し、多くのプローブがアクティブである場合に帯域幅問題を引き起こし、キャッシュコントローラがプローブを処理する間にレベル2キャッシュにバンク競合又は他の混乱を引き起こす等である。
【0037】
図3は、一例による、コンピュータシステム300のブロック図である。いくつかの例では、コンピュータシステム300は、図1のコンピュータシステム100である。コンピュータシステム300は、プロセッサセット302、1つ以上のシステムレベルメモリ304、システムメモリコントローラ306、及び、他のシステム要素308を含む。
【0038】
プロセッサセット302は、1つ以上のプロセッサチップ310を含む。各プロセッサチップ310は、プロセッサチップレベルキャッシュ312及び1つ以上のプロセッサコア314を含む。各プロセッサコア314は、関連するコアレベルキャッシュ316を有する。プロセッサコア314の各々は、図2の命令実行パイプライン200等の1つ以上の実行パイプラインを含む。
【0039】
図3に示されるキャッシュ及びメモリは、並列に動作し、したがって、データコヒーレンスを保証するためにコヒーレンスプロトコルを使用する。このようなプロトコルの一例は、modified-exclusive-shared-invalid(MESI)プロトコルである。各キャッシュラインは、これら4つの状態のうち何れか1つの状態のインジケーションを含む。変更(modified、M)状態は、特定のキャッシュに記憶されたキャッシュラインのコピーが、バッキングメモリに記憶されたコピーに対して変更されていること、したがって、キャッシュラインが追い出される場合にキャッシュラインが補助メモリに書き込まれなければならないことを示す。排他(exclusive、E)状態は、キャッシュラインが特定のキャッシュに記憶され、階層の同じレベルにある他のキャッシュには記憶されていないことを示す。排他的としてマークされたキャッシュラインは、階層のより高いレベルに記憶することができる。例えば、排他状態でレベル0キャッシュに記憶されたキャッシュラインは、レベル0キャッシュのすぐ上のレベル1キャッシュに記憶することもできる。共有(shared、S)状態は、キャッシュラインが階層の同じレベルにある複数のキャッシュに記憶されていることを示す。無効(invalid、I)状態は、キャッシュラインが無効とマークされている特定のキャッシュ内でキャッシュラインが有効でないことを示す(ただし、別のキャッシュがそのキャッシュラインの有効なコピーを記憶することができる)。
【0040】
各プロセッサコア314は、関連するコアレベルキャッシュ316を有する。プロセッサコア314がロード動作又はストア動作等のメモリ動作を実行する場合に、プロセッサコア314は、メモリ動作のためのデータを記憶するキャッシュラインがプロセッサコア314に関連付けられたコアレベルキャッシュ316内に位置するかどうかを判定する。そのようなキャッシュラインがコアレベルキャッシュ316内に位置しない場合、コアレベルキャッシュ316は、プロセッサチップレベルキャッシュ312等のより高いレベルのキャッシュからそのキャッシュラインをそのコアレベルキャッシュ316にフェッチしようと試みる。プロセッサチップレベルキャッシュ312は、より高いレベルのキャッシュメモリと、プロセッサチップレベルキャッシュ312及び同じプロセッサチップ310内の全てのコアレベルキャッシュ316のためのコヒーレンスプロトコルを管理するコントローラと、の両方として働く。したがって、プロセッサチップレベルキャッシュ312は、それ自体をチェックし、そのキャッシュラインを要求元プロセッサコア314に提供する目的で、要求されたキャッシュラインがその中に記憶されているかどうかを判定する。プロセッサチップレベルキャッシュ312は、それ自体のコンテンツから、又は、階層においてより上位のメモリからフェッチされたかの何れかから、キャッシュラインを要求コア314に提供する。
【0041】
プロセッサチップレベルキャッシュ312は、コアレベルキャッシュ316のためのコヒーレンスプロトコルを管理する。概して、プロセッサチップレベルキャッシュ312は、コアレベルキャッシュ316内のキャッシュラインのプロトコル状態を管理するので、特定のコアレベルキャッシュ316において何れかのキャッシュラインが排他状態にある場合に、他のコアレベルキャッシュ316は、無効以外の何れかの状態にあるそのキャッシュラインを有しない。複数のコアレベルキャッシュ316は、共有状態のキャッシュラインを有することが許される。
【0042】
プロトコルは、レベルごとに動作する。より具体的には、メモリ階層の各レベルにおいて、そのレベル内の各要素は、プロトコルの状態の何れかにおいてキャッシュラインを有することが許される。一例では、プロセッサセット302のレベルで、各チップ310(したがって、各プロセッサチップレベルキャッシュ312)は、共有状態又は排他状態等の状態のうち何れかの状態でキャッシュラインを有することが許される。階層の特定のレベルに対するコントローラは、そのレベルにおけるプロトコルを管理する。したがって、プロセッサセットメモリ320は、プロセッサチップレベルキャッシュ312の状態を管理する。任意の特定のプロセッサチップ310のためのプロセッサチップレベルキャッシュ312は、コアレベルキャッシュ316の状態を管理し、システムメモリコントローラ306は、特定のキャッシュラインを記憶するプロセッサセット302及び他のシステム要素308の状態を管理する。
【0043】
プロセッサコア314がストア命令を実行する場合に、プロセッサコア314は、書き込まれるデータを含むキャッシュラインが排他状態で関連付けられたコアレベルキャッシュ316に配置されることを要求する。この要求を満たすことの一部は、全ての他のキャッシュ(コアレベルキャッシュ316の「すぐ上」のキャッシュ以外)がそのキャッシュラインのコピーを無効化することを要求することを含む。他の箇所で述べたように、プロセッサコア314は、排他的読み出しを発行し、他のキャッシュは、その排他的読み出しに応じてコピーを無効化する。
【0044】
いくつかの実施形態では、データに関する情報は、実際にデータを記憶しなくても、これらの構造内の「コヒーレンス」追跡情報と共に記憶される。データに関する情報を記憶することによって、他のコヒーレンス条件が満たされる場合、プローブを省略することができる。非限定的な例として、コヒーレンス条件は、レベル2キャッシュラインが書込み可能状態にない場合を含む。一実施形態では、コヒーレンスエントリごとに1ビットが記憶される。例えば、データは、キャッシュラインが全てゼロであることを示す、例えばレベル3キャッシュ等の異なるキャッシュに記憶され得る。ゼロであることが知られているキャッシュをプローブする代わりに、キャッシュコントローラは、データ記憶装置をルックアップすることなく、全てのゼロを返すことによって要求を満たす。より一般的には、「ゼロ」を表す1ビットの代わりに、共通データパターンに対して記憶された複数の符号化が存在し得る。これらの複数の符号化は、データパターンの固定セット、又は、実行時に共通であると判定された「パターンの辞書(dictionary of patterns)」へのインデックスであり得る。パターンの辞書は、当技術分野及びキャッシュ圧縮の分野で理解されているので、辞書に関する更なる詳細が提示されない。
【0045】
プローブを排除することに加えて、実施形態は、追加のキャッシュ容量の錯覚(illusion)を生成することもできる。少なくとも1つの実施形態では、レベル3キャッシュには、アドレスを追跡するためにそこにあるだけであるために、データを有しない追加の「タグ」がある。レベル3キャッシュへのラインの挿入時にデータ値がゼロである場合、未使用の「コヒーレンスディレクトリ」タグのうち何れかが、対応するデータ記憶装置を有するタグのうち何れかの代わりに使用可能である。
【0046】
いくつかの実施形態では、特定のデータパターンのインジケーションは、コヒーレンス追跡情報と同じディレクトリに記憶される。理解されるように、そのような記憶位置は、コヒーレンス追跡情報と同じディレクトリへのアクセス及び記憶を容易にするために決定されてもよく、これは1つの実施形態に過ぎない。他の記憶位置は、当業者によって理解されるであろう。
【0047】
図4は、スペアディレクトリ内の特定のデータパターンの記憶されたインジケーションで動作する単一レベルキャッシュシステムを利用するコンピュータシステム400を示している。図示したように、コンピュータシステム400は、プロセッサ102と、キャッシュ410と、キャッシュ410に結合されたキャッシュコントローラ420(例えば、プロセッサチップレベルキャッシュ312、プロセッサセットメモリ320又はシステムメモリコントローラ306)と、を含む。システム400は、特定のデータパターン430のインジケーションを含む。インジケーション430は、キャッシュ410及びコントローラ420の一方又は両方に結合され、キャッシュ410内に記憶することができる。上述したように、一実施形態では、コヒーレンス追跡情報440は、インジケーション430と共に記憶される。
【0048】
具体的に示されていないが、システム400は、1つ以上のレベルのキャッシュ階層を含むことができる。例えば、階層の1つ以上の最下位レベル(一次プロセッサ-メモリ階層レベル)、階層内に配置された1つ以上の次の上位レベル二次プロセッサ-メモリ階層レベル、1つ以上の三次プロセッサ-メモリ階層レベル、及び、オプションで、図示されていない追加の階層レベルである。システム400は、キャッシュ階層の単一レベルのみを示しているが、追加のレベルが利用されてもよい。理解されるように、マルチレベル階層を使用することは、キャッシュ410に関連付けられたインジケーション430及びコヒーレンス追跡情報440を、階層内の別のレベルに存在し得る第2のキャッシュ(図示せず)に記憶する機会を生成する。
【0049】
図4は、特定のデータパターンのインジケーションを使用して記憶及び読み出しを実行することが可能なコンピュータシステム400のブロック図である。図4は、説明される能力を理解するために必要な図3の要素を示す。理解されるように、図3のシステム300は、図4のシステム400の一例である。したがって、図3は、コア、チップ等の特定のタイプの階層レベル要素を示すが、図4のシステムは、同様の要素又は要素のグルーピングを必ずしも含まず、代わりに、説明される能力の理解を助けるために簡略化された図を提供する。例えば、コアレベルキャッシュ316はキャッシュ410の例であり、プロセッサ102はプロセッサコア314とすることができる。理解されるように、キャッシュ410及びプロセッサ102は、例えば、システムレベルメモリ304及びシステムメモリコントローラ306並びにプロセッサセットメモリ320を含む、図3の階層の他のレベルにおけるプロセッサ及びキャッシュを表し得る。
【0050】
いくつかの実施形態では、特定のデータパターン430のインジケーションは、データを実際に記憶しなくても、コヒーレンス追跡情報440と共に、例えばキャッシュ410等のキャッシュ階層に記憶される。インジケーション430を記憶し、インジケーション430を利用することによって、他のコヒーレンス条件が存在する場合、プローブを省略することができる。1つのコヒーレンス条件は、非限定的な例として、レベル2キャッシュラインが書込み可能状態にない実施形態を含む。
【0051】
一実施形態では、コヒーレンスエントリごとに1ビットが、キャッシュラインが全てゼロであることを表すインジケーション430として記憶される。インジケーション430によって識別されるように、ゼロであることが知られているキャッシュをプローブする代わりに、キャッシュコントローラ420は、データ記憶装置をルックアップすることなく、全てのゼロを返すことによって要求を満たす。ルックアップ又はプローブを保存することによって、システムリソースが節約される。
【0052】
より一般的には、「ゼロ」を表す例示的な1ビットの代わりに、共通データパターンに対して記憶された複数の符号化が存在し得る。複数のインジケーション430は、これらの共通データパターンを表すために使用される。これらの複数の符号化は、データパターンの固定セット、又は、実行時に共通であると判定された「パターンの辞書」へのインデックスであり得る。複数のビットを使用して、説明した全てゼロ条件以外の他の共通データパターンを表すことができる。パターンの辞書は当技術分野及びキャッシュ圧縮の分野で理解されているので、辞書に関する更なる詳細が提示されない。
【0053】
図5は、一例による、特定のデータパターンのインジケーションをスペアディレクトリに記憶するための方法500のフロー図である。図1図4のシステムに関して説明されているが、当業者は、任意の技術的に実現可能な順序で方法500のステップを実施するように構成された任意のシステムが本開示の範囲に含まれることを理解するであろう。
【0054】
ステップ510において、方法500は、処理要素がキャッシュ階層内にデータを記憶するための記憶要求を発行することを含む。ステップ520において、特定のデータパターンのインジケーションが記憶される。特定のデータパターンのインジケーションは、処理要素が記憶するための記憶要求を発行したデータに関連付けられる。一実施形態では、インジケーションは、キャッシュ階層内に記憶され、他の実施形態では、インジケーションは、データが記憶される位置とは異なる階層レベルに記憶される。インジケーションを記憶することによって、他の何らかのコヒーレンス条件が存在する場合、プローブを省略することができる。1つのコヒーレンス条件は、非限定的な例として、レベル2キャッシュラインが書込み可能状態にない実施形態を含む。一実施形態では、キャッシュラインが全てゼロであることを示すコヒーレンスエントリごとに1ビットが記憶される。ゼロであることが知られているキャッシュをプローブする代わりに、キャッシュコントローラは、データ記憶装置をルックアップすることなく、全てのゼロを返すことによって要求を満たす。より一般的には、「ゼロ」を表す1ビットの代わりに、共通データパターンに対して記憶された複数の符号化が存在し得る。これらの複数の符号化は、データパターンの固定セット、又は、実行時に共通であると判定された「パターンの辞書」へのインデックスであり得る。パターンの辞書は当技術分野及びキャッシュ圧縮の分野で理解されているので、辞書に関する更なる詳細が提示されない。
【0055】
図6は、一例による、特定のデータパターンのインジケーションをスペアディレクトリに記憶するための方法600のフロー図である。図1図4のシステムに関して説明されているが、当業者は、任意の技術的に実現可能な順序で方法600のステップを実施するように構成された任意のシステムが本開示の範囲に含まれることを理解するであろう。
【0056】
ステップ610において、方法600は、処理要素が、データ階層からデータを読み出す読み出し動作を実行するための読み出し要求を発行することを含む。読み出すように要求されたデータは特定のデータパターンとして識別されるので、ステップ620において、特定のデータパターンの関連するインジケーションがデータ階層から読み出される。インジケーションは、ステップ630で復号される。ステップ640において、読み出し動作は、復号されたインジケーションに基づいて満たされる。インジケーションを読み出すことによって、他の何らかのコヒーレンス条件が存在する場合、プローブを省略することができる。1つのコヒーレンス条件は、非限定的な例として、レベル2キャッシュラインが書込み可能状態にない実施形態を含む。一実施形態では、キャッシュラインが全てゼロであることを示すコヒーレンスエントリごとに1ビットが記憶される。ゼロであることが知られているキャッシュをプローブする代わりに、キャッシュコントローラは、データ記憶装置をルックアップすることなく、全てのゼロを返すことによって要求を満たす。より一般的には、「ゼロ」を表す1ビットの代わりに、共通データパターンに対して記憶された複数の符号化が存在し得る。これらの複数の符号化は、データパターンの固定セット、又は、実行時に共通であると判定された「パターンの辞書」へのインデックスであり得る。パターンの辞書は当技術分野及びキャッシュ圧縮の分野で理解されているので、辞書に関する更なる詳細が提示されない。
【0057】
図7は、図1~4のシステムにおけるプローブの省略のための方法700を示す。言い換えれば、データが階層内の何処に位置するか、及び、階層内のデータの状態を決定するための、階層内に記憶されたデータのためのプローブが不要であり、したがって回避又は省略され得る。方法700は、キャッシュラインが1つ以上の他のキャッシュに存在することを示すインジケーションをコヒーレンスディレクトリエントリに記憶する。一実施形態では、インジケーションは、キャッシュ階層と共に記憶され、他の実施形態では、インジケーションは、それに関連付けられたデータが記憶されるキャッシュ階層とは異なるレベルのキャッシュ階層に記憶される。例として、キャッシュラインは、有効な非排他的MESI状態にある。キャッシュライン内のデータは、例えばゼロ等の追跡可能パターンである。キャッシュラインからデータを読み出す要求に応じて、追跡可能パターンを認識することができ、プローブは他のキャッシュに送信されない。システムは、インジケーションに基づいて戻される指定されたデータ(例ではゼロ)を戻す。この方法700は、プローブの省略を表す。
【0058】
方法700は、ステップ710において、キャッシュラインを追跡するためにコヒーレンスディレクトリエントリを生成することを含む。特定の例として、コヒーレンスディレクトリエントリは、レベル2キャッシュのキャッシュラインを追跡するためにレベル3キャッシュディレクトリ内に生成される。
【0059】
ステップ720において、方法700は、MESI状態が排他(E)又は変更(M)でない場合に、エントリのキャッシュラインデータがゼロ(又は他の何らかの追跡可能パターン)であると判定することを含む。上記の特定の例を続けると、エントリのキャッシュラインデータがレベル2キャッシュにおいてゼロ(又は他の設定値)であると判定され、MESI状態がE又はMでない場合、記憶された状態で読み出す(いくつかの読み出しは無効化を必要とするため)ディレクトリエントリがレベル2キャッシュにプローブを送信することなくサービスされ得るというインジケーションが設定される。理解されるように、エントリに対するキャッシュラインデータがMESI E又はM状態にある場合に、キャッシュラインデータを保持するCPUは、コヒーレンスディレクトリに通知することなくキャッシュラインのデータを変更することができ、したがって、キャッシュラインの値に関するコヒーレンスディレクトリの知識を不正確にする。
【0060】
ステップ730において、方法700は、そのディレクトリエントリに、プローブを送信することなく読み出しをサービスすることができるというインジケーションを設定することを含む。再び特定の例を参照すると、レベル2キャッシュのキャッシュラインを追跡するレベル3キャッシュ内のコヒーレンスディレクトリエントリにインジケーションが設定される。インジケーションは、レベル2キャッシュのためのキャッシュラインへの読み出しが、キャッシュラインのためのプローブを送信することによってサービスされ得ることを示すように構成される。
【0061】
図8は、図1図4のシステムにおける追加のデータ記憶容量のための方法800を示している。方法800は、ディレクトリによってカバーされる別のキャッシュにラインが存在しないことを示すインジケーションをコヒーレンスディレクトリエントリに記憶する。このインジケーションは、追加的又は代替的に、エントリが、指定されたデータを有する読み出しをサービスするために利用可能であることを示すことができる。この方法800は、追加のデータ容量を表す。
【0062】
方法800は、ステップ810において、コヒーレンスディレクトリ内のラインを能動的に追跡することを含む。具体的な例として、レベル3キャッシュディレクトリ内のコヒーレンスディレクトリは、レベルキャッシュ内のラインを能動的に追跡する。
【0063】
ステップ820において、方法800は、キャッシュラインを無効化し、コヒーレンスディレクトリに通知することを含む。特定の例では、レベル2キャッシュラインは、例えば、容量追い出しにより無効になり、レベル3キャッシュ内のコヒーレンスディレクトリに通知する。他の状況では、レベル2キャッシュからのキャッシュラインの追い出しは、キャッシュラインをレベル3キャッシュに配置してコヒーレンスディレクトリエントリを無効化するか及び/又はメモリに追い出してコヒーレンスディレクトリエントリを無効化する。
【0064】
ステップ830において、方法800は、データが、例えば全てゼロ等の追跡可能パターンであるかどうかを判定することを含む。パターン及び追跡パターンは、当技術分野及びキャッシュ圧縮の分野で理解されているので、パターン及びパターン追跡に関する更なる詳細が提示されない。
【0065】
コヒーレンスディレクトリが利用される場合、及び、ステップ830における判定が、データが追跡可能パターンであることを示す場合、方法800は、ステップ840において、キャッシュラインがもはやキャッシュ内にないことをコヒーレンスディレクトリに更新することと、ステップ850において、キャッシュラインデータがゼロであることを示すようにコヒーレンスディレクトリを更新することと、ステップ860において、コヒーレンスディレクトリからキャッシュラインへの読み出しをサービスし、指定されたデータを供給することと、を含む。再び特定の例を参照すると、コヒーレンスディレクトリは、キャッシュラインがもはやレベル2キャッシュ内にないことを示すように更新される。コヒーレンスディレクトリは、キャッシュラインデータがゼロであることを示すように更新される。キャッシュラインへの後続の読み出しは、コヒーレンスディレクトリからサービスされ、レベル3キャッシュ内の記憶装置を使用せずに指定されたデータを供給する。
【0066】
本明細書の開示に基づいて、多くの変形が可能であることを理解されたい。特徴及び要素が特定の組合せで上述されているが、各特徴又は要素は、他の特徴及び要素を用いずに単独で、又は、他の特徴及び要素を用いて若しくは用いずに様々な組合せで使用することができる。
【0067】
図に示された様々な要素は、ハードウェア(例えば、回路)、プロセッサ上で実行されるソフトウェア、又は、ハードウェアとソフトウェアの組合せとして実装可能である。様々な例では、各ブロック、プロセッサチップ310、システム要素308、システムレベルメモリ304、システムメモリコントローラ306、並びに、命令実行パイプライン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)命令及びネットリストを含む他の中間データ(コンピュータ可読媒体に記憶させることが可能な命令)の結果を使用して製造プロセスを構成することによって製造することができる。そのような処理の結果はマスクワークとすることができ、このマスクワークをその後の半導体製造プロセスにおいて使用して、実施形態の態様を実施するプロセッサを製造する。
【0068】
本明細書に提供される方法又はフローチャートは、汎用コンピュータ又はプロセッサによる実行のために非一時的なコンピュータ可読記憶媒体に組み込まれるコンピュータプログラム、ソフトウェア又はファームウェアにおいて実行することができる。非一時的なコンピュータ可読記憶媒体の例としては、読み取り専用メモリ(read only memory、ROM)、ランダムアクセスメモリ(RAM)、レジスタ、キャッシュメモリ、半導体メモリデバイス、内蔵ハードディスク及びリムーバブルディスク等の磁気媒体、磁気光学媒体、並びに、CD-ROMディスク及びデジタル多用途ディスク(digital versatile disk、DVD)等の光学媒体が挙げられる。
図1
図2
図3
図4
図5
図6
図7
図8
【国際調査報告】