(57)【要約】      （修正有）【課題】キャッシュメモリにおけるキャッシュラインの置き換えを改善し、必要とするデータが利用不可能となる可能性が生じ、データの取得に長いレイテンシが生じるのを防ぐ。【解決手段】タグフィールドをそれぞれ持つ複数のキャッシュラインを含むキャッシュメモリを備え、タグフィールドは、ラインに記憶されたデータのキャッシュコヒーレンシステートを記憶するステート部分と、前記データの相対的重要度に応じたウェイトを記憶するウェイト部分とを含み、ウェイトは、キャッシュコヒーレンシステート及びデータ使用の最新性に基づく。【選択図】図１
2011129101.tif 000002
【特許請求の範囲】
【請求項１】
データを記憶するためのデータフィールド及びタグフィールドをそれぞれ有する複数のキャッシュラインを含むキャッシュメモリを備え、
前記タグフィールドは、対応するデータのキャッシュコヒーレンシステートを記憶するステート部分と、前記対応するデータの相対的な重要度に応じたウェイトを記憶するウェイト部分とを含む装置。
【請求項２】
前記ウェイトは、前記キャッシュコヒーレンシステートに少なくとも一部基づいている請求項１に記載の装置。
【請求項３】
前記ウェイトは、前記対応するデータの使用の最新性にさらに基づいている請求項２に記載の装置。
【請求項４】
前記ウェイトは、前記対応するデータに関連付けられた属性情報にさらに基づいている請求項３に記載の装置。
【請求項５】
前記タグフィールドは、前記ウェイトを記憶するウェイトフィールド及び前記属性情報を記憶する属性フィールドをさらに含む請求項４に記載の装置。
【請求項６】
複数のキャッシュラインの対応するウェイトに基づいて置換を行うため、前記複数のキャッシュラインから１つのキャッシュラインを選択するキャッシュコントローラをさらに備える請求項１に記載の装置。
【請求項７】
前記キャッシュコントローラは、データがアクセスされた時に、対応するキャッシュラインのウェイトを更新し、
前記更新は、前記ウェイトを、前記キャッシュラインの前記キャッシュコヒーレンシステートに応じた値へとインクリメントする、及び少なくとも１つの他のキャッシュラインのウェイトをデクリメントすることによって行われる請求項６に記載の装置。
【請求項８】
前記複数のキャッシュラインのうち少なくとも１つのキャッシュラインが、最小ウェイトに対応するウェイトを持つ場合は、前記少なくとも１つの他のキャッシュラインの前記ウェイトのデクリメントを行わない請求項７に記載の装置。
【請求項９】
前記更新されたウェイトは最大ウェイト値よりも小さく、前記複数のキャッシュラインのセットのうち、より最近アクセスされていない１つのキャッシュラインを含む少なくとも１つの他のキャッシュラインが、前記更新されたウェイトよりも大きなウェイトを持つ請求項７に記載の装置。
【請求項１０】
前記キャッシュメモリは、適応型共有キャッシュメモリを含み、
前記適応型共有キャッシュメモリは、それぞれ対応するコアと関連付けられ占有キャッシュ記憶域及び共有キャッシュ記憶域を提供する複数のバンクを有する請求項１に記載の装置。
【請求項１１】
第１キャッシュラインの１つのコピーが前記適応型共有キャッシュメモリに存在し、第２キャッシュラインの複数のコピーが前記適応型共有キャッシュメモリに存在する場合には、共有ステートにある前記第１キャッシュラインに、前記共有ステートにある前記第２キャッシュラインのウェイトよりも高いウェイトが付与され、
変更ステートにある第３キャッシュラインに、前記第２キャッシュラインの前記ウェイトよりも高く、且つ前記第１キャッシュラインの前記ウェイトよりも低いウェイトが付与される請求項１０に記載の装置。
【請求項１２】
キャッシュメモリの複数のラインのセットから、最も低いウェイトを持つ１つのラインを犠牲ラインとして選択する段階と、
要求に応答してデータをフェッチし、前記データを前記選択したラインに記憶する段階と、
前記データの重要度に基づいて前記選択したラインのウェイトを決定し、前記ウェイトを前記ラインのウェイトフィールドに記憶する段階と
を備え、
前記複数のラインの各々は、それぞれのクリティカリティに対応するウェイトを有し、前記クリティカリティは、ラインに記憶されたデータの重要度及び前記ラインへのアクセスの最新性に少なくとも一部基づいている方法。
【請求項１３】
前記ラインに対するキャッシュヒットが発生した時に、前記ラインのキャッシュコヒーレンシステートに変化がない場合は、前記ウェイトを復元する段階をさらに備える請求項１２に記載の方法。
【請求項１４】
前記セットのうち、ウェイトがゼロであるラインが存在するか判断する段階をさらに備える請求項１３に記載の方法。
【請求項１５】
前記複数のラインのウェイトがいずれもゼロでない場合は、前記セットのうちアクセスされていないラインをデクリメントし、前記複数のラインのうち少なくとも１つのラインのウェイトがゼロである場合は、前記セットのうち前記アクセスされていないラインをデクリメントしない段階をさらに備える請求項１４に記載の方法。
【請求項１６】
前記要求と共に属性情報を受信する段階をさらに備え、
前記属性情報は、前記データの前記重要度を示す請求項１２に記載の方法。
【請求項１７】
前記属性情報及び前記ラインのキャッシュコヒーレンスステートに基づくウェイトテーブルを使用して前記ウェイトを決定する段階をさらに備え、
前記ウェイトテーブルは、それぞれウェイトを、属性及びキャッシュコヒーレンシステートの組み合わせと関連付ける複数のエントリを含む請求項１６に記載の方法。
【請求項１８】
前記属性情報は、前記要求に関連付けられたユーザーレベル命令から取得される請求項１６に記載の方法。
【請求項１９】
複数のプロセッサコア及び共有キャッシュメモリを含むマルチコアプロセッサを備え、
前記共有キャッシュメモリは、それぞれ前記複数のプロセッサコアのうちの１つと関連付けられた複数のバンクを有し、
前記複数のバンクは、それぞれ占有キャッシュ記憶域及び共有キャッシュ記憶域を提供し、複数のキャッシュラインを含み、
前記複数のキャッシュラインはそれぞれ、データを記憶するデータフィールド及びタグフィールドを含み、
前記タグフィールドは、対応するデータのキャッシュコヒーレンシステートを記憶するステート部分と、前記対応するデータの相対的重要度及び前記キャッシュラインへのアクセスの最新性に基づくウェイトを記憶するウェイト部分とを含むシステム。
【請求項２０】
前記タグフィールドは、前記ウェイトを記憶するウェイトフィールド及び前記データに関連付けられた属性情報を記憶する属性フィールドをさらに含み、
前記ウェイトは、前記属性情報及び前記キャッシュコヒーレンシステートにさらに基づく請求項１９に記載のシステム。
【請求項２１】
第１キャッシュラインの１つのコピーが前記共有キャッシュメモリに存在し、第２キャッシュラインの複数のコピーが前記共有キャッシュメモリに存在する場合には、共有ステートにある前記第１キャッシュラインに、前記共有ステートにある前記第２キャッシュラインのウェイトよりも高いウェイトが付与され、
変更ステートにある第３キャッシュラインに、前記第２キャッシュラインの前記ウェイトよりも高く、且つ前記第１キャッシュラインの前記ウェイトよりも低いウェイトが付与される請求項１９に記載のシステム。
【発明の詳細な説明】
【背景技術】
【０００１】
現代の典型的なコンピュータシステムは、１つ又は複数のプロセッサ又は中央演算処理装置（ＣＰＵ）をシステムの中心に備える。プロセッサは、データに対して命令を実行し、要求されたオペレーションが実行される。プロセッサは、非常に高い周波数で動作する。プロセッサが直ちにアクセス可能なようにデータを保持するため、データをキャッシュメモリに記憶することができる。キャッシュメモリの様々な実装形態が存在する。小さなキャッシュメモリをプロセッサと同じ半導体ダイ上に位置させることによって、近接高速データソースを提供する構成がしばしば採用されている。あるメモリアーキテクチャは、複数階層からなるメモリ階層構造を持ち、システムメモリ及び／又は大容量記憶装置に到達するまで、より上位の層がプロセッサからより遠くなるような構成となっている。
【０００２】
メモリ階層構造の上位層では大容量のデータが記憶される一方、上位層へのアクセス時間は、キャッシュメモリの下位層へのアクセス時間よりも非常に遅くなっている。したがって、必要とするデータが上位層に記憶されている場合は、長いレイテンシ（ｌａｔｅｎｃｙ）が生じる。このことから、最近アクセスしたデータ及び／又は頻繁にアクセスするデータは、メモリ階層構造の下位層に記憶される場合がある。
【０００３】
典型的なキャッシュメモリは、所与の置換スキームを使用して実装されている。多くの置換スキームは、最近最も使われていないキャッシュラインを犠牲キャッシュラインとして選択し、選択されたラインは、新しいデータと置き換えられキャッシュに挿入されるｌｅａｓｔ  ｒｅｃｅｎｔｌｙ  ｕｓｅｄ（ＬＲＵ）ポリシーに従っている。大きなプロセッサが１つのダイにより多くのコアを含み、共有キャッシュアーキテクチャを含む様々なキャッシュアーキテクチャが利用可能となるに従い、ＬＲＵ置換スキームでは正確にデータの真の値を反映できなくなる場合が生じ、必要とするデータが利用不可能となる可能性が生じていた、また、データの取得に長いレイテンシが生じていた。
【図面の簡単な説明】
【０００４】
【図１】本発明の一実施形態に係る、キャッシュにアクセスする方法を示したフローチャートである。
【図２】本発明の一実施形態に係るスヌープ要求を扱う方法を示したフローチャートである。
【図３】本発明の一実施形態に係る置き換え技術を示したブロック図である。
【図４】本発明の一実施形態に係るチップマルチプロセッサ（ＣＭＰ）のブロック図である。
【図５】本発明の一実施形態に係る適応型キャッシュ構造を備えるＣＭＰを示したブロック図である。
【図６】本発明の一実施形態に係るプロセッサを示すブロック図である。
【図７Ａ】本発明の一実施形態に係るキャッシュメモリを示したブロック図である。
【図７Ｂ】本発明の一実施形態に係るタグエントリを示したブロック図である。
【図７Ｃ】本発明の一実施形態に係るウェイトテーブルを示したブロック図である。
【発明を実施するための形態】
【０００５】
様々な実施形態において、クリティカリティ（致命度）及び使用の最新性に基づいてキャッシュラインに記憶されたデータのエージング（ａｇｉｎｇ）を行うのに、キャッシュ置換技術を使用する場合がある。この技術を実現するためには、各キャッシュラインのタグ部分は、ウェイト（重み付け）情報及び／又は属性情報を含んでもよい。ウェイト値は、タグ部分のウェイトフィールドに記憶され、属性値は、タグフィールド部分の属性フィールドに記憶されるようにしてもよい。この情報は、割り当ての時に記憶されるようにしてもよく、後にキャッシュ動作が発生する際に更新されるようにしてもよい。以下の説明では、"ウェイト"という言葉を、通常、ウェイト及び属性の両方を指すのに使用している。一実施形態において、割り当てられたウェイトは、データのクリティカリティに比例していてもよく、例えば、ＭＥＳＩ（ｍｏｄｉｆｉｅｄ（変更）、ｅｘｃｌｕｓｉｖｅ（排他）、ｓｈａｒｅｄ（共有）及びｉｎｖａｌｉｄ（無効））といったキャッシュラインのコヒーレンスステート（一貫性の状態）、又は、他のキャッシュコヒーレンシプロトコルによって決定される。他の実施形態では、様々なハードウェア又はソフトウェアメカニズムが、クリティカリティの決定を行う際に基本となる他の情報（多くの場合、属性情報）を提供してもよい。
【０００６】
様々な種類のキャッシュシステムにおいて、以下の実施形態を利用可能である。本発明の一実施形態が有効なキャッシュシステムの一例としては、大型チップマルチプロセッサ（ＣＭＰ）又はテラスケールシステムのようなＣＭＰの適応型キャッシュが挙げられる。また、他の実施形態を、包含（ｉｎｃｌｕｓｉｖｅ)キャッシュ階層構造におけるラストレベルキャッシュ（ＬＬＣ）等の他のキャッシュアーキテクチャに関連して適用することが可能である。上記の包含キャッシュに加えて他のキャッシュアーキテクチャも、本発明の実施形態の効果を享受可能な場合がある。
【０００７】
多くの実施形態では、あるラインのウェイトを決定する場合には付加的な属性情報を考慮するが、説明を簡易にする目的から、キャッシュラインの重み付けは、ＭＥＳＩプロトコルのステートに応じて行われるとする。また、説明のため、適応型キャッシュは、プロセッサコアにそれぞれ関連付けられ、占有キャッシュ及び共有キャッシュとして動作可能な複数のバンクを含む共有キャッシュであってもよいとする。適応型キャッシュの例は、以下に詳述する。共有される又は占有される所与のラインの特定、及びキャッシュラインを含むコアの数の判断は、共有キャッシュの一部でもあるディレクトリの状態に基づいて行うことができる。
【０００８】
このような適応型キャッシュシステムにおいて、キャッシュラインの重み付けは、各キャッシュラインについてのキャッシュコヒーレンシステートに基づいて行われてもよい。具体的には、一実施形態において、複数のコアによって1つのデータ要素が共有されている状態（すなわち、共有（Ｓ）ステート）に対して最も高いウェイトが与えられるが、これは、このようなデータが失われてしまうと、その影響が非常に大きい（例えば、複数のプロセッサがストール状態となってしまう）からである。重要度の相対的な順序として、変更（Ｍ）ライン及び排他（Ｅ）ラインが、その次に分類される。これらのラインは、1つのコアによって使用されるデータ要素であり、これらのデータを失った場合、メインメモリ回路等にアクセスする必要がある（性能低下、メモリ帯域幅要求の増加、アナログ入出力において電力消費が生じる等が起こる）。そして、この置き換えスキームでは、複数のコアが重複して保持しているラインに対して、最も低い重要度が付けられ、これらのラインが追い出し（ｅｖｉｃｔｉｏｎ）を受けるようにバイアスされている。このような重複ラインは、共有ステートにあるが、複数の占有キャッシュに存在している。したがって、占有キャッシュからあるラインを失ったコアは、メモリにアクセスする替わりに、別の占有キャッシュから当該ラインをフェッチすることができる。例えば、メモリへのアクセスが、別のレベル２（Ｌ２）キャッシュへのアクセスよりも５倍高価なプロセス（レイテンシ、電力又はその他の測定量に基づいた場合）である場合には、同じラインのコピーを５つキャッシュするよりも、１つの共有ライン、Ｍライン又はＥラインのようなより重要なラインのコピーを５つ記憶しておく方が賢明である。重複しているラインは、追い出しを受け易くなっているため、最終的には１つのコピーがダイ上に残り、それに最も高い重要度が付されることとなる。同様な重み付けスキームを、包含キャッシュ階層構造のような他のキャッシュアーキテクチャに適用してもよい。しかしながら、通常他のアーキテクチャでは、重複ラインの利用が不可能な場合があり、したがって、重複ラインが重み付けスキームの一部とならない場合もある。
【０００９】
多くの場合、ウェイトの割り当ては、ラインの取得に掛かる相対的なコストを反映した系統立った方法で行われる。例えば、最適化のための測定量が、ミスレイテンシ（ｍｉｓｓ  ｌａｔｅｎｃｙ）であるとする。また、ブロックＡをフェッチするのに５０サイクル掛かり、ブロックＢをフェッチするのに１５０サイクル掛かると仮定する。この場合、アクセスレイテンシの影響の観点で見れば、ブロックＢについて１回のミス（失敗）が起きるのを防ぐことは、ブロックＡについて１回のミスを防ぐことの３倍の価値がある。したがって、これら２つのブロックのコスト比を反映させて、ブロックＢのウェイトを、ブロックＡのウェイトの３倍に設定してもよい。
【００１０】
幾つかの実施形態では、キャッシュアクセスパターンを監視して、最適なキャッシュ割り当てとすべく適応調整を行ってもよい。単純化のため、ここに記載される例では、相対的な重要度を規定するのに、キャッシュコヒーレンシステートを使用している。本発明の実施形態に係る技術を、ソフトウェアにキャッシュサービス品質（ＱｏＳ）抽出を提供するのに利用してもよく、アプリケーション毎にキャッシュ割り当てを調整する。例えば、ソフトウェアは、関連データのクリティカリティを示すヒントを、メモリアクセス要求と共に提供することができる。一例として、キャッシュへのリクエストと共に提供されるページ属性を使用して、ページレベルにおける優先順位を設定可能である。または、命令セットアーキテクチャ（ＩＳＡ）のユーザーレベル命令、例えば、条件付きロードのようなロードが、データのクリティカリティについての情報を含んでいてもよい。例えば、高い優先順位を持つユーザー（例えば、システム使用により多く支払いをしているユーザー）のためにアプリケーションを実行する仮想マシンアーキテクチャのＱｏＳシステムでは、この優先順位又はクリティカリティに関する属性情報を提供することにより、よりウェイトの大きいアプリケーションに対するキャッシュラインの重み付けを可能としてもよい。このように、（例えば、プログラム又はコンパイラによる）クリティカリティのユーザーレベルによる制御により、属性情報を提供することもできる。
【００１１】
キャッシュラインを設ける時に、キャッシュラインの相対的重要度に応じて、ウェイトを設定してもよい。ウェイトが高いほど、長くキャッシュに留まることを意味し、キャッシュラインの重要度に基づいて割り当てが行われる。キャッシュヒットが発生すると、アクセスされたラインのウェイトが復元され、セット内の他の全てのキャッシュラインのウェイトはデクリメントされる。この段階は、（ＬＲＵのような）最新性とキャッシュラインの重要度の組み合わせを行うので、高優先度であっても古いラインは、当然フラッシュアウトされることを暗に意味する。セット内の少なくとも１つのラインのウェイトがゼロにまで下がった場合には、この状態が解消されるまで、デクリメントが一時的に中断される。すなわち、最も有用でないと考えられるライン（将来の犠牲ライン）が特定されている場合には、エージングプロセスを継続する必要はない（しかしながら、デクリメントする可能性を排除するわけではない）。無効（ｉｎｖａｌｉｄ）キャッシュライン（例えば、スヌープによって無効とされたライン）は、最も有用性の低いラインであるので、そのウェイトは０に設定される。キャッシュミスが発生すると、最も低いウェイトを持つライン（例えば、最も有用性の低いライン）が追い出しを受けるようにしてもよい。最も低いウェイト値を０とするのは単なる決まりに過ぎず、また、最も高いウェイトを、最も長くキャッシュに滞留しているラインに対応させているのも慣例的な決まりである。例えば、最も低いウェイトがより重要度が高いといった別のルールを適用することもできる。
【００１２】
図１は、本発明の一実施形態に係る、キャッシュにアクセスする方法を示したフローチャートである。図１に示すように、方法１０は、データを要求するためにキャッシュへのアクセスを行う際に実行される。一実施形態では、方法１０は、少なくとも一部キャッシュコントローラ又はキャッシュメモリの他の論理を使用して実装されもよい。以下に詳述するように、共有キャッシュ階層構造、適応型キャッシュ階層構造、包含キャッシュ階層構造等の様々なキャッシュアーキテクチャに実装してもよい。図１に示すように、方法１０は、キャッシュアクセス要求を受信することから開始する（ブロック１５）。説明のため、この要求は、プロセッサコアからの読み出し要求であると仮定する。次に、キャッシュヒットが発生しているか否かを判断する（ひし形２０）。キャッシュヒットが発生してない場合は、要求データがキャッシュメモリのキャッシュラインに記憶されていないことを意味するので、制御はブロック２５に移り、最も低いウェイトを持つウェイ（ｗａｙ）が犠牲キャッシュラインとして選択される。すなわち、１セットがＮウェイ（ｗａｙ）（例えば、Ｎキャッシュライン）で構成され、これらのキャッシュラインのうち、タグフィールドのウェイト部分に記載されているウェイトが最も低い１つのキャッシュラインを、犠牲ラインとして選択する。複数ウェイ、又は複数のキャッシュラインが最低ウェイトを持つ場合には、これらのラインのうちいずれか１つを犠牲ラインとして選択する。また、複数のキャッシュラインが、同じウェイトを持つことができる。
【００１３】
このキャッシュでアクセス要求が失敗に終わったので、要求されたラインを、メモリ階層構造の他の部分からフェッチする（ブロック３０）。他の部分としては、別のキャッシュメモリ、又は、例えばシステムメモリや大容量記憶装置などの階層構造の上位層部分が考えられる。データの検索には、様々な実装形態が可能である。一実装形態では、レイテンシを削減するため、キャッシュラインを（ローカルに）ロードしステート情報を設定する前に、ブロック４５において、要求を行ったコアに直接データを戻すことが可能である。他の実装形態では、まず、入力データを追い出しが行われたラインに挿入することができる。挿入するために、フェッチされたラインのステート／属性を設定してもよい（ブロック３５）。このステート／属性は、ＭＥＳＩコヒーレンスステート及び上述したような属性情報を含んでもよい。受信したラインのステート／属性は、入力される応答の一部として示されていてもよく、又は、所与の実施形態及びコヒーレンスプロトコルに応じて、受信するキャッシュが自動的に生成してもよい。また、特定されたステート／属性に基づいて、このキャッシュラインに対するウェイトが設定される（ブロック４０）。以下に詳述するように、ラインのウェイトは、ウェイトテーブル（重み付け表）の情報を参照して設定されてもよく、ウェイトテーブルは、可能性のあるステート／属性の組み合わせのそれぞれとウェイト値を関連付けるプログラム可能ウェイトテーブルであってもよい。上記の例では、キャッシュコヒーレンシステートは、キャッシュラインの属性を示していてもよい。ブロック４５において、データが戻される。
【００１４】
また、図１に示すように、ひし形２０でキャッシュヒットが発生した場合には、制御はブロック５０に移り、キャッシュラインのステート／属性が更新される。アクセスの結果、ラインのステート又は属性が変わっていない場合には、更新は行われない。いずれにしても、キャッシュラインのウェイトは、復元される（ブロック５５）。すなわち、このラインは、アクセスされた状態に変わったので、このラインのステート／属性に対応するウェイトにリセットされる。キャッシュに滞留する間にステート／属性の変更が生じたか否かに応じて、復元されたウェイトが、キャッシュメモリに挿入された当初の元のウェイト値と同じである場合もあれば、同じでない場合もある。
【００１５】
そして、図１に示すように、セットのラインの中に、ゼロ値が存在するか否かを判断する（ひし形６０）。存在する場合には、ブロック４５において、要求されたデータを直接戻してもよい。存在しない場合には、データを戻す前に、セットのうちアクセスされていないウェイに対するウェイトをデクリメントする（ブロック６５）。図１の実施形態で、特定の実装例が示されたが、本発明の範囲はこれに限定されない。
【００１６】
図２は、本発明の一実施形態に係るスヌープ要求を扱う方法を示したフローチャートである。図２に示すように、方法７０は、キャッシュメモリに入力されるスヌープ要求を扱うための方法であって、スヌープ要求を受信するところから開始する（ブロック７５）。方法７０は、上述したように、キャッシュコントローラ論理を使用して実装してもよい。入力されるスヌープ要求は、所与のキャッシュラインの識別子を含んでいてもよい。そして、キャッシュヒットが発生したかを判断する（ひし形７８）。発生していない場合は、制御はブロック８０に移り、キャッシュコントローラが、データが存在しないことを示すスヌープ応答を提供する。スヌープ要求の結果、キャッシュヒットが発生した場合には、制御はブロック８２に移る。ブロック８２において、キャッシュラインのステート／属性が更新される。この更新は、所与のキャッシュコヒーレンシプロトコルに基づいて行われてもよい。例えば、ＭＥＳＩプロトコルでは、スヌープ要求がラインへの排他的アクセスのために行われる場合には、キャッシュラインが無効化される。要求が単にラインを読み出すものである場合には、すでに共有ステートある場合を除いて、ステートを共有ステートへと更新してもよい。そして、制御はひし形８５に移り、新たな状態が、無効ステートであるかを判断する。無効ステートであった場合、そのラインに対するウェイト値をゼロに設定し（ブロック８８）、データと共に又はデータなしで、スヌープ応答を提供する（ブロック９０）。更新されたステートが、無効ステートでなかった場合、ステート／属性に変化が生じれば、そのキャッシュラインのウェイトを更新する（ブロック９５）。次いで、制御はブロック９０に移り、スヌープ応答を提供する。図２の実施形態において、特定の実装例が示されたが、本発明の範囲はこれらに限定されない。
【００１７】
幾つかのコアに渡って、キャッシュラインの相対的な重要度を考慮することにより、本発明の一実施形態に係る技術は、オンダイのキャッシュリソースの最適な割り当てを実現可能である。例えば、本発明の一実施形態を適用せずに、キャッシュラインの同じグループが複数のコアによってアクティブに使用された場合、これらのキャッシュラインは、全てのキャッシュにおいて複製され、有効キャッシュ容量が減ってしまう。これに対して、本発明の一実施形態に係る重み付けでは、構造的な共有を見分け、重複するキャッシュコピーが追い出されるようにバイアスされている。そして、失われた場合にメインメモリへのアクセスが必要となるような１つのコピーしか存在しないデータは、最終的により長い時間キャッシュ内に保持されることになる。メモリへのアクセスが、オンダイの別のキャッシュへアクセスするよりも（動作及び電力において）高価なプロセスである場合には、キャッシュ割り当てポリシーがそれに対応するように実装される。しかしながら、キャッシュラインの複製を排除するのみといった静的ポリシーでは、陳腐化したデータを記憶することになってしまう。このような欠点を補うため、ある実施形態では、古くなったコピーを検出し、これらに低重要度であることを示す印を付してもよい。すなわち、ある実施形態では、データのクリティカリティ及び最新性の両方の組み合わせを使用して、キャッシュリソースを最適化する。
【００１８】
図１のフローチャートを参照して説明した上述のオペレーションを、仮想スキャンチェーンを使用してビジュアル化することができる。図３は、本発明の一実施形態に係る仮想スキャンチェーンを示した図である。ＭＲＵは、ｍｏｓｔ  ｒｅｃｅｎｔｌｙ  ｕｓｅｄ（最も最近使用された）を表し、ＬＲＵは、ｌｅａｓｔ  ｒｅｃｅｎｔｌｙ  ｕｓｅｄ（最も最近使用されていない）を表している。新たにアクセスされるラインのための領域を作るために、ＬＲＵポジションにあるキャッシュラインを置き換える従来のＬＲＵ的スキームとは異なり、本発明の実施形態では、いわゆるマルチレベルＬＲＵスキームを提供する。１レベルのＬＲＵスキームでは、追い出しが行われた後、残りの全てのラインが、（論理的に）右側にシフトされ、新たにフェッチされたラインが、ＭＲＵポジションに挿入される。新たに挿入されたラインが、追い出されるまでには、ＬＲＵポジションまで全ての段階を経る。チェーンの途中のどこかで、キャッシュヒットが発生した場合には、アクセスされるラインが、ＭＲＵポジションに戻る。
【００１９】
本発明の一実施形態に係る置き換え技術では、複数の論理的ＭＲＵポジション（図３に示すような、ＭＲＵＳ、ＭＲＵＲ等）が提供されていてもよい。このスキャンチェーンにおいて、ウェイトフィールドは、ポジションについてのプロキシとして機能する。すなわち、高いウェイトのラインが、チェーンの左側の位置を占有する。最も高い優先順位のラインは、最も大きなウェイトを持ち、スキャンチェーンの頭部分（左側）（すなわち、ＭＲＵＳ）に挿入される。中程度の優先順位のラインは、それよりも小さなウェイトを持ち、チェーンの中間部分のいずれかの位置に挿入される（例えば、ＭＲＵＲ）。正確なポジションは、割り当てられたウェイトによって決定される。最も低い重要度を持つラインは、ＬＲＵポジション又はＬＲＵポジション付近に挿入される。キャッシュでの滞留は、スキャンチェーンにおける位置の関数であるから、高いウェイトを持つラインほど、キャッシュに長く留まることとなる。
【００２０】
例えば、中程度の優先順位を持つラインがＭＲＵＲの右側に移動した後にアクセスされる場合は、ＭＲＵＳポジションに挿入されるのではなく、ＭＲＵＲポジションに再度挿入される。このようにすることで、より高い優先順位を持つラインの相対的な重要度関係を保つようにできる。ＭＲＵＳに挿入された最も高い優先順位を持つラインが、古いラインとなった場合には、右側すなわちＬＲＵポジションに向かって移動させてもよい。一実施形態では、アクセスされていないラインのウェイトを、キャッシュセット内においてデクリメントさせてもよい。すなわち、ＭＲＵＳポジションにあるラインは、徐々に格下げとなり、何回か移動された後、ＭＲＵＲポジションの右側に位置することとなり、中程度の優先順位を持つラインと比較して重要度が相対的に低くなる。この最新性及びキャッシュラインの相対的な重要度を組み合わせて、適応的に古いラインの格下げを行ってもよい。
【００２１】
無効ラインのウェイトは０に設定されるが、これは、無効ラインをＬＲＵポジションに移動させることと等価である。本発明の一実施形態を使用して、オフダイメモリ帯域幅トラフィック（データ）を低減させることができる。複数のキャッシュで複製される共有データの割合が大きいアプリケーションの場合、一実施形態では、追い出しのために、複製を制御し、重複ラインをバイアスすることにより、より効率的なキャッシュ利用率を得るようにしてもよい。
【００２２】
上述したように、幾つかの実施形態を、適応型キャッシュ構造に使用してもよい。ＣＭＰは、１つのチップ上に複数のプロセッサを有し、それぞれ１つ又は複数のキャッシュを伴う。これらのキャッシュは、関連付けられたコアに対してデータを排他的に記憶する占有キャッシュであってもよいし、全てのコアに対してデータを利用可能に記憶する共有キャッシュであってもよい。図４は、本発明の一実施形態に係るＣＭＰのブロック図である。ＣＭＰ１００は、複数のプロセッサコア１０２を１つのチップ上に含んでもよい。コア１０２は、プロセッサ、コプロセッサ、固定機能コントローラ、又は別の種類のプロセッシングコアであってもよい。各コア１０２は、キャッシュメモリの最も下位層に位置するコアキャッシュ１０４に接続される。
【００２３】
コア１０２は、共有キャッシュ１０８とさらに接続される。共有キャッシュ１０８は、全てのコア１０２からアクセス可能であってもよい。いずれのコア１０２も、アドレスのサブセットについて、共有キャッシュ１０８にラインを割り当てる。共有キャッシュ１０８は、各コア１０２に対して、別に設けられた適応型キャッシュバンク１１０を有してもよい。各適応型キャッシュバンク１１０は、ディレクトリ（ＤＩＲ）１１２を持ち、コアキャッシュ１０４及び適応型キャッシュバンク１１０に記憶されたキャッシュデータのブロックを追跡する。加えて、共有キャッシュ１０８は、本発明の一実施形態に係る置換を行うためのキャッシュコントローラ論理を含む。図４には示されていないが、ある実装形態では、占有キャッシュを、各コアキャッシュ１０４と共有キャッシュ１０８との間に接続してもよい。
【００２４】
様々な実施形態において、共有キャッシュは１０８、所与の時間において、占有キャッシュ、共有キャッシュ又はこれら両方として動作する適応型キャッシュであってもよい。適応型キャッシュは、占有キャッシュ設計のレイテンシの利点及び共有キャッシュ設計の容量の利点の両方を同時に提供するように設計されていてもよい。また、アーキテクチャは、占有キャッシュバイアス又は共有キャッシュバイアスのいずれかを提供するランタイム構成を実現するものであってもよい。このように構成することにより、１つのキャッシュ設計で、占有キャッシュ、共有キャッシュ、又は占有部分と共有部分との間の動的割り当てが可能なハイブリッド型のキャッシュのいずれかを実現していてもよい。全てのコア１０２が、共有キャッシュ１０８にアクセスしてもよい。１つのローカルコア１０２が、アドレスに対応する適応型キャッシュバンク１１０のライン割り当てを行ってもよい。その他のコア１０２は、アドレスのサブセットについて、適応型キャッシュのラインの割り当てを行ってもよい。適応型キャッシュでは、ローカルコアの要求に基づいて、どの適応型キャッシュバンクにラインが複製されてもよい。一実施形態において、ローカルコア１０２は、コヒーレンシプロトコルエンジンを通過する前に、適応型キャッシュバンクにアクセスしてもよい。その他のコア１０２は、コヒーレンシプロトコルエンジンを通じて、適応型キャッシュバンクにアクセスしてもよい。
【００２５】
キャッシュ機構は、タイルアーキテクチャ、均一アーキテクチャ、不均一アーキテクチャ又はその他のＣＭＰアーキテクチャを使用してもよい。タイルアーキテクチャのタイルを、コヒーレントスイッチ、バス、又はその他の接続手段により接続してもよい。ＣＭＰタイルは、キャッシュを共有する１つ又は複数のプロセッサコアを有してもよい。プロセッサコアは、キャッシュコントローラを通じて、占有部分と共有部分とに動的に区画された適応型キャッシュバンクにアクセスしてもよい。ＣＭＰタイルは、ダイ上の全ての占有キャッシュブロックを追跡するためのディレクトリを有していてもよい。キャッシュコントローラは、入力されるコア要求を、そのタイルに対する占有データを保有するローカル適応型キャッシュバンクに送信してもよい。キャッシュプロトコルエンジンは、ローカル適応型キャッシュバンクにおけるミス（ｍｉｓｓ）を、オンダイの相互接続を通じてホームタイルに送信してしてもよい。オンダイの相互接続を通じてアクセス可能なホームタイルにおける適応型キャッシュバンクは、データミスを満足してもよい。キャッシュプロトコルエンジンは、必要であれば、ホームタイルにおけるディレクトリバンクを参照して、別の占有適応型キャッシュバンクをスヌープする。必要なスヌープを解決した後に、ホームタイルにおいてミスが発生した場合、ホームタイルがオフソケット要求を開始してもよい。純粋に占有キャッシュとして動作するように構成されている適応型キャッシュバンクの場合、適応型キャッシュバンクホームタイル参照をスキップし、ディレクトリのフローに従ってもよい。純粋に共有キャッシュとして動作するように構成されている適応型キャッシュバンクの場合、ローカル適応型キャッシュバンク参照をスキップし、直接ホームタイルへと向かってもよい。ブロックの割り当て、移動、犠牲化、複製、置き換え及び後方無効化に関するプロトコルアクションをキャッシングすることにより、適応型キャッシュバンクの動的分割を実現することができる。
【００２６】
図５は、適応型キャッシュアーキテクチャ３００を備えるＣＭＰの一実施形態を示したブロック図である。データブロックに対するホームＣＭＰタイル３０４をチェックした後に、先頭（ｉｎｉｔｉａｌ）ＣＭＰタイル３０２は、このデータブロックへのアクセスを要求してもよい。先頭ＣＭＰタイル３０２は、先頭プロセッシングコア３０６、先頭コアキャッシュ３０８、先頭適応型キャッシュバンク３１０及び先頭ディレクトリ３１２を有してもよい。ホームＣＭＰタイル３０４は、ホームプロセッシングコア３１４、ホームコアキャッシュ３１６、ホーム適応型キャッシュバンク３１８及びホームディレクトリ３２０を有してもよい。先頭ＣＭＰタイル３０２は、先頭データブロックコピー３２２を記憶する、又はブロックを先頭適応型キャッシュバンク３１０にキャッシュしてもよい。各適応型キャッシュバンクにおけるデータブロック３２２のコピーを追跡するために、ホームＣＭＰタイル３０４は、ホームデータブロック登録３２４をホームディレクトリ３２０に登録してもよい。
【００２７】
他の実施形態では、キャッシュアーキテクチャは、包含キャッシュ階層構造であってもよい。図６は、本発明の一実施形態に係るプロセッサを示すブロック図である。図６に示すように、プロセッサ２００は、複数のコア２２００‐２２０ｎ（コア２２０と総称する）を含むマルチコアプロセッサであってもよい。図６に示すように、コア論理２２２０‐２２２ｎ（コア論理２２２と総称する）に加えて、各コアが、キャッシュ階層構造の複数層を含んでいてもよい。特に、各コア２２０は、最下位層のキャッシュ２２５０‐２２５ｎ（キャッシュ２２５と総称する）を含んでもよい。一実施形態では、キャッシュ２２５は、Ｌ１キャッシュに対応していてもよく、本発明はこの点に関して限定されない。各コア２２０は、中間層のキャッシュ２２８０‐２２８ｎ（キャッシュ２２８と総称する）をさらに含んでもよい。幾つかの実施形態では、中間層のキャッシュ２２８は、Ｌ２キャッシュに対応する。
【００２８】
プロセッサ２００は、複数のバンク２４００‐２４０ｎ（バンク又は部分２４０と総称する）からなるラストレベルキャッシュ（ＬＬＣ）２５０をさらに含んでもよい。ＬＬＣ２５０は、相互接続２３５を通じてコア２２０と連結された上位層のキャッシュであってもよく、下位層のキャッシュに存在するデータのコピーを含んでもよい。図５に示すように、各コア２２０は、リンク２３００‐２３０ｎ（リンク２３０と総称する）を通じて相互接続２３５と連結されていてもよい。ＬＬＣ２５０は、プロセッサ２００内の様々なコア２２０の間で共有される共有メモリとして動作してもよい。対照的に、最下位層キャッシュ２２５及び中間層キャッシュ２２８を含むマルチレベルキャッシュ（ＭＬＣ）階層構造は、関連付けられたコア２２０のためにのみデータが記憶される複数の占有キャッシュによって形成されていてもよい。
【００２９】
オペレーションの間、所与のコア（コア論理２２２の一部であってもよい）の実行ユニットからのメモリ要求は、システム内の他のキャッシュ参照する前に、まず、キャッシュ階層構造の最下位層にアクセスしてもよい。より良い性能を得るため、頻繁にアクセスされるデータを、最も下位層に位置する利用可能なキャッシュ、すなわちキャッシュ２２５に存在させてもよい。要求されたデータがキャッシュ２２５に存在しない場合は、キャッシュ２２８にアクセスして、データがそこに存在するか判断してもよい。図６に示す実施形態では、中間層の各キャッシュ２２８は、ＬＬＣ２５０に対して要求が発行される前に、各コア２２０に対する最終参照地点となっている。ＬＬＣ２５０は、それぞれがＬＬＣ２５０の部分２４０と関連付けられたディレクトリ部分２４５０‐２４５ｎ（ディレクトリ部分２４５と総称する）をさらに含んでいてもよく、本発明の一実施形態に係る置換を扱うキャッシュコントローラ論理を含んでいてもよい。図６を参照して特定の実施形態が記載されたが、本発明の実施形態はこれに限定されず、他の実施形態においては、複数のプロセッサはそれぞれ異なる構成であってもよい。
【００３０】
使用されるキャッシュアーキテクチャに関わらず、キャッシュメモリは通常、タグアレイとデータアレイを含む。図７Ａは、本発明の一実施形態に係るキャッシュメモリを示したブロック図である。図７Ａに示すように、キャッシュメモリ１１０は、複数のエントリ又はキャッシュライン１１２ａ‐１１２ｎを含んでもよい。図に示されるように、各キャッシュライン１１２は、タグアレイのタグフィールド１１３ａとデータアレイのデータフィールド１１３ｂを含んでもよい。データアレイ１１３ｂは、キャッシュラインのデータを（エラー検出／修正のための選択可能ビットと共に）記憶し、タグフィールド１１３ａは、様々なタグ情報を記憶していてもよい。図７Ｂは、本発明の一実施形態に係るタグエントリを示したブロック図である。図７Ｂに示すように、タグエントリ１１３は、対応するデータアレイ１１３ｂにインデックスを付すのに使用してもよいタグアドレスフィールド１１４、対応するラインについてのキャッシュコヒーレンシステートを記憶するステートフィールド１１５、本発明の一実施形態に係るウェイト値を記憶するためのウェイトカウンターであってもよいウェイトフィールド１１６、及び、例えばプログラマ又はコンパイラから受信したクリティカリティ情報のようなラインに関連する選択的属性情報を記憶する属性フィールド１１７を含んでもよい。少なくとも本発明の実施形態の一つにおいて、コヒーレンシステートは、選択的属性フィールドのプロキシとして使用可能である。
【００３１】
所与のラインについて適切なウェイト値を決定するために、ラインのステート（又は属性）の挿入又は更新時に、キャッシュコントローラ又はその他の論理によってウェイトテーブルを参照してもよい。図７Ｃは、本発明の一実施形態に係るウェイトテーブルを示したブロック図である。図７Ｃに示すように、ウェイトテーブル１２０は、複数のエントリ１２２ａ‐１２２ｎを含んでもよい。各エントリは、属性／ステートフィールド１２３ａ及びウェイトフィールド１２３ｂを含んでもよい。各ウェイト／属性の組み合わせについて、対応する初期ウェイト値が提供されてもよい。これらの初期ウェイト値は、静的又は動的に、ハードコードされている又はプログラム可能であってもよい。幾つかの実施形態において、マシーンステータスレジスタ（ＭＳＲ）又はコンフィギュレーションステータスレジスタ（ＣＳＲ）のようなレジスタを使用して、ウェイトテーブル１２０を実装してもよい。このような初期ウェイト値をプログラム可能とすることにより、実施形態では、所与の種類のアプリケーションについてウェイト値をプログラム的に設定してもよい。例えば、１つの市場区分で使用されるキャッシュメモリについては、初期ウェイト値の第１セットを決定し、異なる市場区分で使用されるキャッシュメモリについては、プログラム可能なウェイト値の異なるセットを決定してもよい。一実施形態において、このように、異なる市場区分におけるデータ使用に対する異なるテストプログラムの経験的テストに基づいて、異なるウェイト値を決定してもよい。
【００３２】
実施形態は、コードとして実装されてもよく、また、システムをプログラムし、命令を実行させるのに使用可能な命令を記憶する記憶媒体に記憶されていてもよい。  記憶媒体としては、これらに限定されないが、例えば、フロッピー（登録商標）ディスク、光ディスク、半導体ドライブ（ＳＳＤ）、コンパクトディスク・リードオンリーメモリ（ＣＤ‐ＲＯＭ）、書き換え可能コンパクトディスク（ＣＤ‐ＲＷ）及び磁気光学ディスクを含むあらゆる種類のディスク、リードオンリーメモリ（ＲＯＭ）、ダイナミック・ランダムアクセスメモリ（ＤＲＡＭ）、スタティック・ランダムアクセスメモリ（ＳＲＡＭ）のようなランダムアクセスメモリ（ＲＡＭ）、消去可能プログラマブル・リードオンリーメモリ（ＥＰＲＯＭ）、フラッシュメモリ、電気的消去可能ＲＯＭ（ＥＥＰＲＯＭ）、及び磁気又は光学カードのような半導体デバイス、若しくは、電気的命令を記憶するのに適したその他の種類の媒体を含む。
【００３３】
本発明が、限られた数の実施形態について説明されたが、様々な変更及び改良が可能であることは、当業者にとって明らかである。添付の特許請求の範囲は、このような変更及び改良も本発明の範囲及び精神に含まれることを意図している。
【図１】
2011129101.tif 000003
【図２】
2011129101.tif 000004
【図３】
2011129101.tif 000005
【図４】
2011129101.tif 000006
【図５】
2011129101.tif 000007
【図６】
2011129101.tif 000008
【図７Ａ】
2011129101.tif 000009
【図７Ｂ】
2011129101.tif 000010
【図７Ｃ】
2011129101.tif 000011
【外国語明細書】
2011129101000001.pdf