(57)【要約】コンピュータシステムにおいてデータキャッシングを実装するための装置、方法および媒体が開示される。装置は、第１のデータキャッシュと、第２のデータキャッシュと、キャッシュロジックとを備える。キャッシュロジックは、メモリデータを第１のデータキャッシュにキャッシュするように構成されている。メモリデータを第１のデータキャッシュにキャッシュすることは、メモリデータを第１のデータキャッシュに格納することと、メモリデータに対応するタグデータを、第１のデータキャッシュではなく第２のデータキャッシュに格納することとを含む。【選択図】図１
2014517387.tif 000002
【特許請求の範囲】
【請求項１】
第１のデータキャッシュと、
第２のデータキャッシュと、
メモリデータを前記第１のデータキャッシュに格納し、且つ、前記メモリデータに対応するタグデータを、前記第１のデータキャッシュではなく前記第２のデータキャッシュに格納することによって、前記メモリデータを前記第１のデータキャッシュにキャッシュするように構成されたキャッシュロジックと、
を備える、装置。
【請求項２】
前記第１および第２のデータキャッシュは、プロセッサのデータキャッシュ階層のそれぞれのレベルを実装する、請求項１に記載の装置。
【請求項３】
前記第１のデータキャッシュにより実装される前記レベルは、前記キャッシュ階層において、前記第２のデータキャッシュにより実装される前記レベルの直下である、請求項２に記載の装置。
【請求項４】
前記第１のデータキャッシュは、積層メモリを使用して、前記プロセッサ上に実装されている、請求項１に記載の装置。
【請求項５】
前記積層メモリは、複数のメモリページとして編成されており、
前記キャッシュロジックは、物理システムメモリの隣接する領域に対応するメモリデータを、各メモリページに格納するように構成されている、請求項４に記載の装置。
【請求項６】
前記第１のデータキャッシュは、実行時に、動的に再構成可能である、請求項１に記載の装置。
【請求項７】
前記第１のデータキャッシュは、前記第１のデータキャッシュのサイズ、ブロックサイズ、ブロックの数または連想度レベルを修正するために、実行時に、動的に再構成可能である、請求項６に記載の装置。
【請求項８】
前記第１のデータキャッシュは、オペレーティングシステムが下す決定に応じて、前記オペレーティングシステムによって、実行時に動的に再構成可能であり、前記決定は、前記プロセッサのワークロードの１つ以上の特性に依存する、請求項６に記載の装置。
【請求項９】
前記第１のデータキャッシュを再構成することは、前記第１のデータキャッシュの１つ以上の構成レジスタを修正することを含み、前記構成レジスタは、前記第１のデータキャッシュの所定のブロックに対応するタグ情報を格納する前記第２のデータキャッシュのブロックを決定するために使用可能である、請求項６に記載の装置。
【請求項１０】
前記再構成することは、オペレーティングシステムが、
前記プロセッサ上で実行する１つ以上のスレッドの実行をフリーズさせることと、
前記プロセッサをシステムメモリに接続するメモリバス上でロックを得ることと、
不良ブロックをメモリに書き戻すことと、
前記第１のデータキャッシュ内のデータを無効にすることと、
前記メモリバス上の前記ロックを解除することと、
前記１つ以上のスレッドの実行を再開することと、
を実行することを含む、請求項６に記載の装置。
【請求項１１】
プロセッサが、前記プロセッサによりアクセスされたメモリデータを第１のデータキャッシュにキャッシュすることと、
前記プロセッサが、前記アクセスされたメモリデータのタグ情報を、前記第１のデータキャッシュではなく、第２のデータキャッシュに格納することと、
を含む、方法。
【請求項１２】
前記第１および第２のデータキャッシュは、前記プロセッサのデータキャッシュ階層のそれぞれのレベルを実装し、前記第１のデータキャッシュにより実装される前記レベルは、前記第２のデータキャッシュにより実装される前記レベルの直下である、請求項１１に記載の方法。
【請求項１３】
前記第１のデータキャッシュは、積層メモリを使用して、前記プロセッサ上に実装されている、請求項１１に記載の方法。
【請求項１４】
前記積層メモリは、複数のメモリページとして編成されており、
前記キャッシュロジックは、物理システムメモリの隣接する領域に対応するメモリデータを、各メモリページに格納するように構成されている、請求項１３に記載の方法。
【請求項１５】
前記第１のデータキャッシュは、実行時に、動的に再構成可能である、請求項１１に記載の方法。
【請求項１６】
前記第１のデータキャッシュは、前記第１のデータキャッシュのサイズ、ブロックサイズ、ブロックの数または連想度レベルを修正するために、実行時に、動的に再構成可能である、請求項１５に記載の方法。
【請求項１７】
前記第１のデータキャッシュは、オペレーティングシステムが下す決定に応じて、前記オペレーティングシステムによって、実行時に、動的に再構成可能であり、前記決定は、前記プロセッサのワークロードの１つ以上の特徴に依存する、請求項１５に記載の方法。
【請求項１８】
前記第１のデータキャッシュを再構成することは、前記第１のデータキャッシュの１つ以上の構成レジスタを修正することを含み、前記構成レジスタは、前記第１のデータキャッシュの所定のブロックに対応するタグ情報を格納する前記第２のデータキャッシュのブロックを決定するために使用可能である、請求項１５に記載の方法。
【請求項１９】
物理メモリアドレスのタグ値を決定するために、前記データの前記物理メモリアドレスを使用することと、
前記タグ値が前記第２のデータキャッシュによって格納されることを決定することとによって、
前記メモリデータが前記第１のデータキャッシュに格納されることを決定することをさらに含む、請求項１１に記載の方法。
【請求項２０】
前記タグ値が前記第２のデータキャッシュによって格納されることを決定することは、
前記第２のデータキャッシュのキャッシュブロックを決定することであって、前記キャッシュブロックは前記物理メモリアドレスに対応し、前記決定することは、前記第２のデータキャッシュの１つ以上の構成レジスタに格納された１つ以上のキャッシュ構成値に依存することと、
前記キャッシュブロックが前記タグ値を格納することを決定することと、を含む、請求項１９に記載の方法。
【請求項２１】
コンピュータシステム上で実行可能なプログラムによって動作されるデータ構造を備えるコンピュータ可読記憶媒体であって、前記データ構造上で動作する前記プログラムは、前記データ構造により記述された回路を含む集積回路を製作する工程の一部を実施し、前記データ構造に記述された前記回路は、
第１のデータキャッシュと、
第２のデータキャッシュと、を含み、
キャッシュメモリデータを前記第１のデータキャッシュに格納するように構成されており、前記第１のデータキャッシュに格納された前記キャッシュメモリデータにアクセスするために使用可能なタグ情報は、前記第１のデータキャッシュではなく、前記第２のデータキャッシュに格納される、
コンピュータ可読記憶媒体。
【請求項２２】
ＨＤＬ、ＶｅｒｉｌｏｇまたはＧＤＳＩＩデータを格納する、請求項２１に記載のコンピュータ可読記憶媒体。
【請求項２３】
メモリデータを第１のキャッシュのデータアレイに格納し、且つ、前記第１のキャッシュの対応するタグデータを、第１のデータキャッシュのタグアレイではなく、第２のデータキャッシュのデータアレイに格納することによって、前記メモリデータを前記第１のキャッシュにキャッシュすること、
を含む、方法。
【発明の詳細な説明】
【背景技術】
【０００１】
より高性能のコンピュータプロセッサを構築する上で主に困難となるのは、処理コアが計算を実施することのできる速度と、これらの計算を実行するために処理コアが当該処理コア上のメモリからデータを読み出すことのできる速度との間に大きな格差があることである。「メモリギャップ」の対処に相当な努力が向けられてきたが、近年、処理能力は、メモリ速度を上回り続けている。さらに、現在のコンピュータプロセッサは、マルチコア（つまり、多数の演算器を含み、その各々が、ソフトウェア命令のそれぞれのストリームを実行するように構成されている）が多くなり、メモリ帯域幅の需要は増大し続けている。
【０００２】
メモリ（例えば、オフチップダイナミックランダムアクセスメモリ）へのアクセスが、マルチコアプロセッサの増大するスループット需要を満たすのに不十分であることの１つの理由として、Ｉ／Ｏピンの制限された拡張性が挙げられる。プロセッサの上にメモリを直接積層することによってこの制限に対処するために最近提案されているのが積層メモリまたは３次元スタッキングであり、これによって、プロセッサとメモリとの間の配線遅延が大幅に減少する。例えば、積層メモリ回路は、高密度で、低待ち時間で、高帯域幅の垂直相互接続と結合された多層の活性シリコンを使用して構築され得る。従来のオフチップＤＲＡＭと比べると、積層メモリは、データ帯域幅の増加、待ち時間の減少および必要エネルギー量の低下を提供する。また、メモリ積層によって、コンピュータ設計者は、高速ＣＭＯＳ（相補型金属酸化膜半導体）、高密度ＤＲＡＭ、ｅＤＲＡＭおよび／または他の技術等の異種メモリ技術を統合することが可能になる。
【０００３】
積層メモリ技術は、Ｌ４キャッシュ等の大型のラストレベルデータキャッシュ（つまり、キャッシュ階層の最低レベル）を実装するために使用されている。大型のラストレベルキャッシュは、現代のアプリケーションの大規模なメモリフットプリントおよび／またはマルチコアプロセッサの高いメモリ需要に対処するのに望ましいであろう。
【０００４】
積層メモリ（つまり、積層メモリキャッシュ）を使用して大型のラストレベルキャッシュ実装することによって、いくつかの利点が与えられる。例えば、このようなキャッシュは、ソフトウェアではなくハードウェアによって管理されることができ、これによって、キャッシュは、アプリケーション位相変化に容易に適合することと、オンチップおよびオフチップのデータ移動に関連する変換索引バッファ（ＴＬＢ）フラッシュを容易に回避することとが可能になり得る。さらに、従来のキャッシュは、ダイスペースを非効率的に消費する、高速であるが高価なスタティックメモリ（例えば、ＳＲＡＭ）を使用して実装されていたため、生産するのに費用が掛かり、小容量かつ固定構成（例えば、連想度、ブロックサイズ等）で構成されていた。対照的に、積層メモリキャッシュは、従来のキャッシュの構築に使用されるスタティックメモリよりも安価かつ高密度のダイナミックメモリ（例えば、ＤＲＡＭ）を使用して実装され得る。したがって、積層メモリキャッシュは、従来のＳＲＡＭベースの技術が可能とするよりも低いコストで大型のラストレベルキャッシュを提供することができる。
【発明の概要】
【０００５】
コンピュータシステムにおいてデータキャッシングを実装するための装置、方法および媒体が開示される。装置は、第１のデータキャッシュ、第２のデータキャッシュおよびキャッシュロジックを備える。キャッシュロジックは、メモリデータを第１のデータキャッシュにキャッシュするように構成されている。メモリデータを第１のデータキャッシュにキャッシュすることは、メモリデータを第１のデータキャッシュに格納することと、メモリデータに対応するタグデータを、第１のデータキャッシュではなく第２のデータキャッシュに格納することとを含む。
【０００６】
いくつかの実施形態では、第１のデータキャッシュは、実行時に、動的に再構成可能であり得る。例えば、ソフトウェア（例えば、オペレーティングシステム）は、第１のデータキャッシュおよび／または第２のデータキャッシュの１つ以上の構成レジスタを修正することによって、第１のデータキャッシュのサイズ、ブロックサイズ、ブロックの数、連想度レベルおよび／または他のパラメータを修正し得る。いくつかの実施形態では、ソフトウェアは、１つ以上のプロセッサ上で実行するワークロードの特定の特性を検出することに応じて、第１のデータキャッシュを再構成し得る。
【０００７】
種々の実施形態では、第１および第２のデータキャッシュは、データキャッシュ階層のそれぞれのレベルを実装し得る。例えば、第１のデータキャッシュは、第２のデータキャッシュにより実装されるレベルの直下であるキャッシュ階層のレベルを実装し得る（例えば、第１のデータキャッシュはＬ４を実装し、第２のデータキャッシュはＬ３キャッシュを実装する）。いくつかの実施形態では、第１のデータキャッシュは、積層メモリを使用して実装され得る大型のラストレベルキャッシュであり得る。
【図面の簡単な説明】
【０００８】
【図１】いくつかの実施形態による、Ｌ３で実装されたタグアレイを有する再構成可能なＬ４データキャッシュを含むプロセッサの種々の構成要素を示すブロック図である。
【図２】いくつかの実施形態による、所定のキャッシュが所定のメモリアドレスを分解し得るフィールドを示すブロック図である。
【図３ａ】種々の実施形態による、Ｌ４タグを格納するためにいくつかのＬ３キャッシュブロックがいかに確保され得るかを示すブロック図である。
【図３ｂ】いくつかの実施形態による、キャッシュタグを格納するために使用可能なタグ構造を示す図である。
【図４ａ】いくつかの実施形態による、再構成可能なＬ４キャッシュを実装するために、Ｌ３キャッシュロジックが含み得る種々のレジスタを示す図である。
【図４ｂ】いくつかの実施形態による、再構成可能なＬ４キャッシュを実装するために、Ｌ４キャッシュロジックが含み得る種々のレジスタを示す図である。
【図５】いくつかの実施形態による、所定のメモリアドレスに対応するデータをＬ４キャッシュが格納するか否かを決定するために、Ｌ３キャッシュに格納されたＬ４タグを調べるための方法を示すフロー図である。
【図６】各ページが物理的に隣接するメモリを格納するＤＲＡＭページ上のキャッシュブロックの例示的配置を示す図である。
【図７】いくつかの実施形態による、所定の物理アドレスに対応するＬ４キャッシュブロックを位置付けるための方法を示すフロー図である。
【図８】いくつかの実施形態による、実行中にＬ４キャッシュを再構成するための方法のフロー図である。
【図９】いくつかの実施形態による、再構成可能なキャッシュ実装の構成レジスタの４つの例示的構成を示す表である。
【図１０】いくつかの実施形態による、本明細書で説明する積層ＤＲＡＭキャッシュを利用するように構成されたコンピュータシステムを示すブロック図である。
【発明を実施するための形態】
【０００９】
本明細書は、「一実施形態」または「ある実施形態」への言及を含む。語句「一実施形態では」または「ある実施形態では」が出現することは、必ずしも同じ実施形態について言及するとは限らない。特定の特徴、構造または特性を、本開示と一致する任意の適切な方式で組み合わせてもよい。
【００１０】
専門用語。以下の段落では、本開示（添付の請求項を含む）にて見られる用語の定義および／または文脈を提供する。
【００１１】
「備える」。本用語は、非限定的である。添付の請求項で使用する際、本用語は、追加の構造またはステップを除外しない。「１つ以上のプロセッサユニット・・・を備える装置」と列挙する請求項について考察する。このような請求項は、装置を、追加の構成要素（例えば、ネットワークインターフェースユニット、グラフィックス回路等）を含むことから除外しない。
【００１２】
「〜するように構成されている」。種々のユニット、回路または他の構成要素は、１つまたは複数のタスクを実施する「ように構成されている」ように説明または請求され得る。このような文脈において、「〜するように構成されている」とは、ユニット／回路／構成要素が、動作中にこれらの１つまたは複数のタスクを実施する構造（例えば、回路網）を含むことを示すことによって、構造を含意するように使用される。したがって、ユニット／回路／構成要素は、特定のユニット／回路／構成要素が動作中でない（例えば、作動中でない）ときであっても、タスクを実施するように構成されていると言える。「〜するように構成されている」の言い回しとともに使用されるユニット／回路／構成要素は、ハードウェア（例えば、回路や、動作を実装するために実行可能なプログラム命令を格納するメモリ等）を含む。ユニット／回路／構成要素が１つ以上のタスクを実施する「ように構成されている」と列挙することは、そのユニット／回路／構成要素について、３５Ｕ．Ｓ．Ｃ．§１１２の第６段落を行使「しない」ように明示的に意図される。加えて、「〜するように構成されている」とは、該当するタスク（１つまたは複数）を実施することができるように動作するために、ソフトウェアおよび／またはファームウェア（例えば、ソフトウェアを実行するＦＰＧＡまたは汎用プロセッサ）によって操作される一般的構造（例えば、一般的回路網）を含むことができる。また、「〜するように構成されている」とは、１つ以上のタスクを実装または実施するように適合されるデバイス（例えば、集積回路）を製作するための製造工程（例えば、半導体製作施設）を適合させることも含み得る。
【００１３】
「第１の」および「第２の」等。本明細書で使用する際、これらの用語は、その用語が前に置かれる名詞のための標記として使用され、いかなる種類の順序（例えば、空間的、時間的、論理的等）も暗示しない。例えば、８つの処理要素または処理コアを有するプロセッサにおいて、用語の「第１の」および「第２の」処理要素は、８つの処理要素のうち任意の２つについて言及するように使用されることができる。言い換えると、「第１の」および「第２の」処理要素は、論理的処理要素０および１に限定されない。
【００１４】
「〜に基づく」。本明細書で使用する際、本用語は、決定に影響を及ぼす１つ以上の要因を説明するために使用される。本用語は、決定に影響を及ぼし得る追加の要因を除外しない。つまり、決定は、これらの要因だけに基づくものであってもよく、またはこれらの要因に少なくとも部分的に基づくものであってもよい。「ＡをＢに基づいて決定する」という語句について考察する。Ｂは、Ａの決定に影響を及ぼす要因であり得るが、このような語句は、Ｃにも基づいて決定されることからＡの決定を除外しない。他の事例では、Ａは、Ｂだけに基づいて決定されてもよい。
【００１５】
プロセッサが、アプリケーションの従来よりも大きいメモリフットプリントおよび多重プログラミングレベルの増加に対応する必要があるため、キャッシュサイズは、驚異的な割合で増加している。積層メモリは、著しく大きいダイ面積を提供することを約束し、その大きいダイ面積を使用して、数百メガバイトから今後さらに大きいサイズの範囲となることが可能な大型のラストレベルＤＲＡＭキャッシュを実装することができる。
【００１６】
大型の積層ＤＲＡＭキャッシュを構築する上での１つの困難は、このようなキャッシュに対応することを必要とするタグアレイのサイズが、かなりのダイ面積を消費する可能性があることである。キャッシュは、典型的には、２つの独立したアレイ、すなわちデータアレイおよびタグアレイに分かれている。データアレイエントリは、それぞれのメモリブロックからのメモリデータを保持し、タグアレイは、これらのメモリブロックを識別する識別子（つまり、タグ）を保持する。例えば、セットアソシアティブキャッシュでは、タグは、特定のセットにマッピングするメモリブロックの中から所定のメモリブロックを一意的に識別することができる。このようなタグアレイを実装することによって、かなりのダイスペースを消費する可能性がある。例えば、６４Ｂのキャッシュラインを有する典型的な２５６ＭＢのキャッシュは、１１ＭＢのタグアレイを必要とすることもあり得る。
【００１７】
問題をさらに悪化させることとして、タグアレイは、その容量に不均等なダイ面積の共有をしばしば必要とする。タグアレイへのアクセスは高速でなければならないため、より遅く、安価で、かつ高密度のダイナミックＲＡＭ（ＤＲＡＭ）を使用してデータアレイが実装されたとしても、タグアレイは、高速で高価なスタティックＲＡＭ（ＳＲＡＭ）または組み込み型ダイナミックＲＡＭ（ｅＤＲＡＭ）を使用してしばしば構築される。残念ながら、ＳＲＡＭ等の技術は、ＤＲＡＭ（大抵１２〜１５倍大きい）よりも大幅に密度が低く、これは、タグアレイが、ＤＲＡＭで実装されたデータアレイが必要とするよりも多くの容量単位当たりのダイスペースを必要とすることを意味する。結果として、タグアレイに必要なダイスペースは、大型の積層ＤＲＡＭキャッシュの実装に大きな障害となっている。
【００１８】
種々の実施形態によると、大型の積層メモリキャッシュは、タグ情報を格納するために、より低レベルのキャッシュにおいてキャッシュブロックを使用するように構成され得る。例えば、いくつかの実施形態では、大型Ｌ４キャッシュのデータアレイは、積層ＤＲＡＭを使用して実装されてもよく、一方、Ｌ４キャッシュのタグアレイは、システムのＬ３キャッシュにおける種々のブロックを使用して実装されてもよい。
【００１９】
いくつかの実施形態では、積層メモリキャッシュは、再構成可能なキャッシュとして実装されてもよい。従来のキャッシュ設計は、スタティック構成（例えば、全体のサイズ、連想度、ブロックサイズ等）に制限されるが、再構成可能なキャッシュは、本明細書で説明するように、特定のキャッシュ構成がワークロードに合わせられるように、システムワークロードに対して適応および／または応答することができる。
【００２０】
図１は、いくつかの実施形態による、Ｌ３で実装されたタグアレイを有する再構成可能なＬ４データキャッシュを含むプロセッサの種々の構成要素を示すブロック図である。本明細書で説明する実施形態の多くは、キャッシュ階層におけるＬ４の直下であるＬ３にタグアレイが格納されたＬ４キャッシュに関して示される。しかしながら、これらの例は、実施形態をＬ４およびＬ３キャッシュの連携自体に限定するように意図されない。むしろ、異なる実施形態では、本明細書で説明する技術およびシステムは、キャッシュ階層の種々のレベルにおけるキャッシュに適用されてもよい。本明細書で使用する際、プロセッサが、第２のキャッシュの検索を試みる前に第１のキャッシュにおけるメモリデータの発見を試みる場合（例えば、第１のキャッシュ上でキャッシュミスがある場合）、第１のキャッシュは、キャッシュ階層において、第２のキャッシュよりより高いレベル（または第２のキャッシュより上）にあるように言える。
【００２１】
図示する実施形態によると、プロセッサ１００は、Ｌ３キャッシュ１１０と、Ｌ４キャッシュ１３５と、１つ以上の処理コア１０５とを含む。処理コア１０５の各々は、それぞれの命令ストリームを実行するように構成されてもよく、種々のプロセッサ１０５は、Ｌ３  １１０および／またはＬ４  １３５へのアクセスを共有し得る。また、処理コア１０５は、それぞれの占有キャッシュ（例えば、Ｌ１）および／または他の共有データキャッシュ（例えば、Ｌ２）を含んでもよい。
【００２２】
Ｌ３キャッシュ１１０およびＬ４キャッシュ１３５は、プロセッサ１００上でデータキャッシュ階層のそれぞれのレベルを実装し得る（例えば、Ｌ３キャッシュ１１０は、第３レベルキャッシュを実装してもよく、一方、Ｌ４キャッシュ１３５は、それより低い第４レベルキャッシュを実装してもよい）。このような階層に従って、処理コア１０５は、Ｌ３キャッシュ１１０においてデータが発見されない場合には、Ｌ４キャッシュ１３５においてデータを検索するように構成され得る。異なる実施形態では、Ｌ３キャッシュ１１０およびＬ４キャッシュ１３５は、異なるポリシーおよび／またはプロトコルに従って、システムメモリからデータをキャッシュするために連携し得る。
【００２３】
いくつかの実施形態では、Ｌ４キャッシュ１３５は、データを格納するためにＤＲＡＭを使用する積層メモリキャッシュとして実装され得る。例えば、Ｌ４  １３５は、ＤＲＡＭを使用して実装され得るＬ４データアレイ１４５を含む。継続的な例として、Ｌ４は、２ＫＢのＤＲＡＭページ（例えば、３ＫＢのＤＲＡＭページ１６０）に格納された２５６Ｂのキャッシュブロックを有する、２５６ＭＢで３２ウェイのＤＲＡＭキャッシュとして構成されており、ＤＲＡＭページの各々は、キャッシュにおいて連続的であり得るＣＢ１からＣＢＮ等の多数のキャッシュブロックを格納するように構成されていると想定する。
【００２４】
Ｌ４キャッシュ１３５は、キャッシュを管理するためにキャッシュロジック１４０を含む。キャッシュロジック１４０（および／またはキャッシュロジック１１５）は、ハードウェア回路網を使用して、ハードウェアに実装され得る。いくつかの実施形態では、キャッシュロジック１４０は、必要なデータがキャッシュに存在するか否かを決定するように、失効データをキャッシュから除去するように、および／または新しいデータをキャッシュに挿入するように構成されてもよい。特定のメモリアドレスからのデータがキャッシュに格納されるか否かを決定する場合、Ｌ４キャッシュロジック１４０は、メモリアドレスを、タグを含む多数のフィールドに分解してもよく、これらの構成要素を使用して、メモリアドレスに対応するデータがキャッシュに存在するか否か、および／またはそのデータがどこにあるのかを決定してもよい。
【００２５】
図２は、いくつかの実施形態による、所定のキャッシュが所定のメモリアドレスを分解し得るフィールドを示すブロック図である。特定のフィールドおよびその長さは、メモリアドレス（例えば、ビットの数、エンディアン性等）に応じて、および／またはキャッシュ自体の構成（例えば、連想度、ブロックの数、ブロックのサイズ等）に応じて変動し得る。例えば、図２は、本明細書の例のＬ４キャッシュ（つまり、２５６Ｂのキャッシュブロックを有する、２５６ＭＢで３２ウェイのキャッシュ）によって決定されるように、４８ビットのメモリアドレスのフィールドを示すブロック図である。図示する実施形態によると、アドレスの最上位２５ビットは、タグ２０５に対応し、次に低位の１５ビットは、インデックス２１０に対応し、最下位８ビットは、オフセット２１５に対応する。このような実施形態では、インデックス２１０は、メモリアドレスがマッピングするキャッシュブロックのセットを位置付けるために使用可能であり得る（つまり、メモリアドレスに対応するデータがキャッシュ内に格納される場合には、データは、セット内のブロックのうち１つのブロックに格納される）。キャッシュロジック（例えば、１４０）は、セット内のキャッシュブロックに関連付けられたそれぞれのタグを決定し、これらのタグをタグ２０５と比較し得る。１つのタグがタグ２０５に一致する場合、そのタグに対応するキャッシュラインは、そのメモリアドレスのデータを格納する。次に、キャッシュロジックは、オフセット２１５を使用して、一致するキャッシュブロックのどこにデータが格納されるのかを決定し得る。
【００２６】
次に、図１に戻ると、Ｌ４キャッシュラインのデータは、Ｌ４データ１４５に格納され得る。上述したように、Ｌ４キャッシュ１３５は、データ１４５を格納するためにＤＲＡＭまたは別の高密度のメモリ技術を使用する積層メモリキャッシュとして実装され得る。したがって、Ｌ４データ１４５は、比較的低いコストで高メモリ容量を有するように構成され得る。しかしながら、Ｌ４データ１４５が大容量のため、特に、性能の懸案事項として、このようなタグアレイがＳＲＡＭ、比較的スパースなメモリ技術で実装されるべきであることを指示された場合には、対応するタグアレイを実装することによって、かなりのダイスペースが必要となり得る。
【００２７】
図示する実施形態によると、Ｌ４  １３５は、Ｌ４タグアレイをＬ４自体に実装するのではなく、Ｌ３  １１０等のより低レベルのキャッシュに格納するように構成され得る。例えば、図示する実施形態では、Ｌ３キャッシュ１１０は、Ｌ３キャッシュを管理するためのＬ３キャッシュロジック１１５（つまり、Ｌ４キャッシュロジック１４０と類似している）と、Ｌ３タグアレイ１２０と、Ｌ３データアレイ１２５とを含む。Ｌ３データを格納することに加え、Ｌ３  １１０は、Ｌ４  １３５の代わりにタグを格納するために、Ｌ３データ１２５のいくつかの数のキャッシュブロックを確保するように構成され得る。例えば、図示する実施形態では、Ｌ４タグ１３０は、Ｌ３データ１２５内に格納されており、Ｌ４  １３５によって使用可能である。図１に示すように、Ｌ３データ１２５における各キャッシュブロックは、多数のＬ４タグを保持し得る。
【００２８】
図３ａは、種々の実施形態による、Ｌ４タグを格納するために、いくつかのＬ３キャッシュブロックがいかに確保され得るかを示すブロック図である。キャッシュセット３００は、多数のブロックを含み、そのうちのいくつか（例えば、３１５ａ〜３１５ｘ）は、Ｌ３キャッシュのＬ３データを格納するために使用される。しかしながら、確保されたブロック３１０等の他のブロックは、Ｌ４タグを格納するために確保される。
【００２９】
Ｌ３キャッシュは、各Ｌ４タグを、図３ｂのタグ構造３２０等のタグ構造として格納し得る。図３ｂのタグ構造は、タグ自体（つまり、タグ３２５）と、タグメタデータとを含む。図示する例では、タグは２５ビットであり、タグメタデータは、有効ビット３３０および不良ビット３３５を含む。他の実施形態では、タグ構造は、他のタグメタデータを含んでもよい。
【００３０】
本明細書の継続的な例（２５６ＭＢ、３２ウェイ、２５６Ｂブロック、２ＫＢのＤＲＡＭページＬ４；２８ビットタグ構造）のために、Ｌ３キャッシュ１１０は、６４Ｂのキャッシュラインを有する、１６ＭＢで３２ウェイのキャッシュであって、Ｌ３キャッシュセット３００は、Ｌ３  １１０のキャッシュセット（つまり、データ１２５における）に対応していることを想定する。この例示的構成を前提とすると、Ｌ４タグのために必要な全てのスペースは、４ＭＢである。したがって、各Ｌ３キャッシュセット（例えば、３００）は、Ｌ４タグデータを格納するために、その３２ブロックのうち８つのブロックを確保し得る。例えば、キャッシュセット３００は、３２個のブロック３０５を含み、Ｌ４タグを格納するためにこれらのブロックのうち８つのブロック（３１０）を確保し、一方、残りのブロック（つまり、３１５ａ〜３１５ｘ）は、通常通り、Ｌ３データを格納する。確保された８つのブロック（３１０）は、５１２Ｂの全容量を有し、これは、１２８個の２８ビットタグ構造を格納するのに十分である。ゆえに、確保されたブロック３１０は、４つの３２ウェイＬ４セットのタグデータを格納するのに十分である。図示する実施形態では、キャッシュセット３００の第１のブロックは、Ｌ４のセット０の１６個のタグを格納し、次のブロックは、セット１の１６個のタグを格納し、セット３まで同じように続く。第５のブロックは、セット０に属する残りのタグを格納し、第６のブロックは、セット１に属する残りのタグを格納し、８つの格納されたブロック３１０がＬ４セット０〜３の全てのタグデータを格納するように、同じように続く。Ｎ個の連続的なＬ３ブロックの各々を異なるＬ４セットに割り当て、次に、次のＮ個の連続的なＬ３ブロックについて割り当てパターンを繰り返す技術は、本明細書においてストライピングと呼ばれ得る。図３のストライピング構成が、単に例示的であるように意図されることを留意されたく、異なる実施形態では、確保されたブロックが異なる順序でＬ４タグを格納してもよいことを理解されたい。
【００３１】
図１に戻ると、いくつかの実施形態では、Ｌ３キャッシュロジック１１０およびＬ４キャッシュロジック１４０は、分散タグスキームを実装するために連携するように構成され得る。例えば、Ｌ４タグデータにアクセス（例えば、読み出しまたは書き込み）するために、Ｌ４キャッシュロジック１４０は、Ｌ３キャッシュロジック１１５と通信してもよく、次に、必要なデータ（例えば、Ｌ４タグ１３０）をＬ３データ１２５からフェッチしてもよい。
【００３２】
Ｌ４タグを、Ｌ３等のより低レベルのキャッシュのデータアレイに置くことによって、多くの利点が有効になり得る。例えば、本明細書で説明するタグストレージスキームによって、システムは、（１）ダイスペースをより効果的に使用すること、および／または（２）ワークロードの変化に応じてＬ４キャッシュを再構成することが可能になる。
【００３３】
ダイスペースに関して、Ｌ３キャッシュは、大抵、高度に連想的であり、これは、いくつかのキャッシュブロックを要求することが、Ｌ３の全体の性能にほとんど影響を及ぼし得ないことを意味する。さらに、スキームが可能にする大型Ｌ４キャッシュは、効果的に小型のＬ３によって引き起こされ得る性能損失を相殺または排除し得る。さらに、専用Ｌ４タグアレイを実装しないことによって省かれた追加のダイスペースは、Ｌ３の性能損失がまとめて緩和または排除されるように、Ｌ３キャッシュを拡大するように使用され得る。
【００３４】
再構成可能性に関して、いくつかの実施形態では、Ｌ３ロジック１１５およびＬ４ロジック１４０は、Ｌ４キャッシュ構成を制御するレジスタとともに構成され得る。実行中（または実行前）、これらのレジスタの値は、キャッシュ構成の変化をもたらすために修正され得る。例えば、所定のワークロードが極めて高い空間局所性特性を示すことが期待される場合には、Ｌ４キャッシュは、より少数ではあるが大型のキャッシュブロックを使用するように再構成され得る。別の例では、所定のワークロードが極めて低い空間局所性を示すことが期待される場合には、Ｌ４は、より多数ではあるが、より小型のキャッシュブロックを使用するように再構成され得る。プロセッサのワークロードは、プロセッサ上の１つ以上の実行スレッドのメモリアクセスパターンを含み得る。
【００３５】
図４ａおよび図４ｂは、再構成可能なＬ４キャッシュを実装するために、Ｌ３およびＬ４ロジックが含み得る種々のレジスタを示す図である。レジスタは、保持するように意図されるデータと、Ｌ４および／またはＬ３構成とに応じて、種々のサイズを有し得る。さらに、種々の実施形態では、異なるレジスタは、組み合わされてもよく、多数の他のレジスタに分解されてもよく、および／またはそうでなければ、レジスタに格納される情報は、分散されてもよい。図４ａのＬ３キャッシュロジック１１５および図４ｂのＬ４キャッシュロジック１４０の各々は、図１のキャッシュロジック１１５および１４０の各々に対応し得る。
【００３６】
図４ａによると、Ｌ３キャッシュロジックは、ＴＣＷＲ４００等のタグキャッシュウェイ確保ベクトルを含み得る。ＴＣＷＲレジスタ４００は、Ｌ３キャッシュのどのブロックが、Ｌ４タグを格納するために確保されるかを示し得る。例えば、ＴＣＷＲ４００は、各キャッシュセット内のどのウェイがＬ４タグのために確保されるかを示すマスクベクトルを格納し得る。各セットの最初の８つのウェイが確保されること（例えば、図３ａのように）を示すために、ベクトルは、０ｘＦＦであり得る。したがって、Ｌ３キャッシュは、Ｌ３データを格納するためにどのキャッシュラインを使用し得るか、およびＬ４タグを格納するためにどのキャッシュラインが確保されるかを決定するために、ＴＣＷＲレジスタに格納される値を使用し得る。
【００３７】
図４ｂでは、Ｌ４キャッシュロジック１４０は、タグアクセスを支援するための多数のレジスタ（例えば、ＴＣＩＭ４０５、ＴＣＷ４１０、ＴＧＭ４１５、ＴＧＳ４２０）と、Ｌ４データアクセスを支援するための多数のレジスタ（例えば、ＣＢＳ４３０、ＰＳＭ４３５、ＰＳＯ４４０、およびＰＡＢＯ４４５）と、他の目的に有用な１つ以上の種々雑多なレジスタ（例えば、ＳＴＮ４２５）とを含む。これらのレジスタおよびその使用について以下に説明する。
【００３８】
タグサイズレジスタ（ＴＧＳ）４２０は、タグ毎のビット数を示すように使用され得る。例えば、図２の実施形態を用いると、ＴＧＳレジスタ４２０は、タグサイズが２５ビットであることを示し得る。いくつかの実施形態では、ＴＧＳレジスタ４２０は、所定のアドレスのタグを計算するためのタグマスクを生成するように使用され得る。
【００３９】
図示する実施形態では、Ｌ４キャッシュロジック１４０は、タグマスクレジスタと、ＴＧＭ４１５とを含み、これは、対応する物理アドレスからＬ４タグを入手するために使用可能であり得る。例えば、ＴＧＭは、タグマスクおよび所定の物理アドレスを使用してビットＡＮＤ演算を実施することによって、そのアドレスのタグがもたらされるように選択され得る。例えば、図２のアドレス２００から最上位２５ビットを抽出するために、ＴＧＭレジスタは、１６進数０ｘＦＦＦＦＦＦ８０００００を保持し得る。
【００４０】
また、Ｌ４ロジック１４０は、タグキャッシュウェイレジスタ（ＴＣＷ）４１０を含む。ＴＣＷレジスタ４１０は、どのＬ３ブロックが所定のＬ４タグを保持するように構成されるかを識別するために使用され得る。例えば、タグが、（上述した）ストライピング型割り当てパターンに従ってＬ３ブロックに格納される場合には、ＴＣＷレジスタは、３つのフィールド、すなわちウェイマスク（所定のＬ４セットのためのタグを格納するＬ３セット内の第１のブロックを示す）と、数フィールド（Ｌ４セットのためのタグを格納するＬ３ブロックの数を示す）と、ストライドフィールド（Ｌ３セットがタグデータを格納するＬ４セットの数を示す）とを含み得る。これらのフィールドおよびその使用について、以下により詳細に説明する。
【００４１】
ウェイマスクフィールドは、所定のＬ４セットのためにタグデータを保持する第１のブロック（所定のＬ３セット内）を識別するために使用可能であり得る。例示するために、各Ｌ３セット（例えば、セット３００）が、ストライピング型割り当てパターンにおいて４つのＬ４セットのためのタグデータを格納する図３ａの例について考察する。２つのビットは、最初の４つのブロックのうちどのブロックが所定のセットのためのタグを格納するかを決定するために使用され得る。このような例では、ウェイマスクフィールドは、ウェイマスクを使用して物理アドレスをマスクすること（つまり、その２つについて論理ＡＮＤ演算を実施すること）によって、物理アドレスがマッピングするＬ４セットに対応するＬ４タグを格納するＬ３ブロックの識別子がもたらされるように、構成され得る。例えば、ＴＣＷ４１０は、１６進値０ｘ３００を保持してもよく、これは、２００等の物理アドレスをマスクするために使用されるときに、物理アドレスの８番目および９番目のビットをもたらす。これらの２つのビットは、最初の４つの確保されたブロック（つまり、Ｌ３キャッシュセット３００のうちの３１０）のどれが、物理アドレスがマッピングするＬ４セットのためのタグを保持するのかを識別するために使用可能な０〜３の数を決定するために使用され得る。例えば、２つのビットが００である場合には、３１０における第１のブロックを識別してもよく、０１の値は、第２のブロックを識別してもよいなどである。
【００４２】
ＴＣＷレジスタの数フィールドは、Ｌ４セットに対応する全てのタグを入手するために読み出されるブロックの数を示し得る。例えば、Ｌ３キャッシュセット３００は、任意の所定のＬ４セットに対応するタグを格納するために２つのＬ３ブロックを使用するため、数フィールドは２であってよい。
【００４３】
ＴＣＷレジスタのストライドフィールドは、Ｌ３セットがタグデータを格納するＬ４セットの数を示し得る。例えば、Ｌ３キャッシュセット３００は、４つのＬ４セットのためのタグデータを格納するため（つまり、図３ａにおけるセット０〜３）、ストライドフィールドは４であってよい。
【００４４】
ストライピング型割り当てパターンに従ってＬ４タグが所定のＬ３キャッシュセットに格納される場合には、ウェイマスクフィールド、数フィールドおよびストライドフィールドの組み合わせは、所定のＬ４セットに対応するＬ３セットに全てのタグを位置付けるために使用可能である。例えば、所定のＬ４セットに関連付けられるＬ４タグデータを入手するために、キャッシュロジック１１０および／または１３５のうち１つ以上は、ウェイマスクを使用して、Ｌ３セットにおける第１の該当ブロックを識別し得る。次に、ロジックは、ストライドフィールドおよび数フィールドを使用して、使用されるストライピングパターンを決定し、ひいては、Ｌ４セットのためのタグデータを格納するＬ３セット内の全ての他のブロックを位置付けおよび読み出ししてもよい。例えば、ストライド値が４および数フィールド値が２は、第１のブロックの後に読み出す１つの追加のブロックが存在することと、その追加のブロックが第１のブロックから４番目のブロック（つまり、図３ａにおける第５のブロック）であることとを示す。ゆえに、このようなある実施形態では、読み出すための第Ｎのブロックは、（ｔｈｅ  ｐｈｙｓｉｃａｌ  ａｄｄｒｅｓｓ  ＆  ｗａｙＭａｓｋＦｉｅｌｄ＋ｓｔｒｉｄｅＦｉｅｌｄ＊（Ｎ−１））として計算され得る。全ての該当ブロックを読み出すために、ロジックは、ゼロから数フィールドの値までの各Ｎについて、この計算を繰り返し得る。
【００４５】
図示する実施形態によると、キャッシュロジック１４０は、タグキャッシュインデックスマスク（ＴＣＩＭ）４０５も含む。ＴＣＩＭ４０５は、所定のＬ４セットのためのタグを格納する特定のＬ３セットを示すために使用され得る。例えば、ＴＣＩＭ値は、Ｌ３インデックスを（ＰｈｙｓｉｃａｌＡｄｄｒｅｓｓ  ＆＞  ＴＣＩＭ）として計算するために使用されてもよい。ここで、式中、「＆＞」は、論理ＡＮＤ演算、その後の末尾のゼロを落とすための右シフトを示す。例えば、継続中の例として、Ｌ３が８１９２セット（１６ＭＢ／（６４Ｂブロック＊３２ブロックセット））を有する場合、Ｌ３セットインデックスは、物理アドレスのビット２２〜１０として計算され得る。ゆえに、ＴＣＩＭ４０５は、値０ｘ７ＦＦＣ００を保持し得る。
【００４６】
図５は、いくつかの実施形態による、Ｌ４キャッシュが所定のメモリアドレスに対応するデータを格納するか否かを決定するために、Ｌ３キャッシュに格納されるＬ４タグを調べるための方法を示すフロー図である。方法５００は、Ｌ４キャッシュロジック１３５によって、および／またはＬ３キャッシュロジック１１５によって実施され得る。それぞれのキャッシュロジックは、図４ａおよび図４ｂに示すように構成されてもよく、上述したようなそれぞれのレジスタを含む。
【００４７】
図示する実施形態によると、本方法は、５０５のように、ロジックが物理アドレス（ＰＡ）を決定するときに開始する。例えば、ロジックは、プログラム命令が所定の物理アドレスへのアクセスを試みていることを決定してもよく、それに応じて、ロジックは、そのアドレスに対応するデータがＬ４キャッシュに格納されているか否かを決定する必要があり得る。
【００４８】
５１０において、ロジックは、物理アドレスのタグを決定する。例えば、いくつかの実施形態では、ロジックは、ＴＧＭ４１５に格納されるマスク（例えば、ＰＡ＆ＴＧＭ）等のタグマスクを使用して物理アドレスをマスクすることによって、タグを決定し得る。
【００４９】
５１５において、ロジックは、物理アドレスに対応するデータが格納され得るＬ３セットを決定し得る。例えば、ロジックは、上述したように、ＴＣＩＭを使用して物理アドレスに対して「＆＞」演算を実施することによって、特定のＬ３セットを識別し得る。
【００５０】
ロジックが、検索するタグ（５１０のように）と、そのタグのために検索するＬ３セット（５１５のように）とを識別すると、ロジックは、決定されたＬ３セット内で検索するために第１のブロックを決定する（５２０のように）。例えば、いくつかの実施形態では、ロジックは、５２０に示すように、セット内のどのブロックを、ＴＣＷレジスタのウェイマスクフィールドで物理アドレスをマスクすることによって検索するのかを決定し得る（つまり、ＰＡ＆ＴＣＷウェイマスク）。
【００５１】
図示する実施形態によると、ロジックが、調査するための第１のＬ３キャッシュブロックを決定すると、ロジックは、Ｌ３ブロックを読み出し（５２５のように）、５１０で決定されたＰＡタグをＬ３ブロックが含むか否かを決定する（５３０のように）。５３０からの肯定的出口が示すようにブロックがＰＡタグを含む場合には、キャッシュロジックは、５３５のように、キャッシュヒットを決定し得る。含まない場合には、５３０からの肯定的出口が示すように、ロジックは、キャッシュヒットを決定することができない。代わりに、ロジックは、これらのブロックのうち何れかがタグを格納するかを決定するために、ＰＡタグを格納し得るゼロまたはそれ以上の他のＬ３ブロックを調査し得る。
【００５２】
５４０において、キャッシュロジックは、さらなるタグが存在するか否かを決定する。例えば、ＴＣＷレジスタの数フィールドが、既に検索されたブロックの数を上回る値を保持する場合には、検索するブロックがさらに存在する。上回らない場合には、ロジックは、タグを潜在的に保持することのできる全てのＬ３ブロックを検索している。
【００５３】
５４０からの肯定的出口が示すように、ロジックが、タグを保持することのできる全てのＬ３ブロックを既に検索している場合には、ロジックは、５４５のように、キャッシュミスが存在するという結論を下し得る。そうでない場合には、検索するＬ３ブロックがさらに存在する場合（例えば、数フィールドが、既に検索されたブロックよりも上回る）、ロジックは、５５０のように、検索する次のブロックを決定し得る。例えば、いくつかの実施形態では、ロジックは、過去に読み出されたレジスタの同一性およびＴＣＷレジスタのストライドフィールドに基づいて、このような決定を下してもよい。ロジックは、検索する次のＬ３キャッシュブロックを決定すると（５５０のように）、５５０から５２５への肯定的フィードバックループが示すように、そのＬ３キャッシュブロックを検索し得る。
【００５４】
キャッシュロジックがＬ３キャッシュにタグを位置付ける場合には、ロジックは、タグが発見されたブロックに留意し得る。例えば、ロジックは、セット内のブロックの位置を示すタグオフセットを記録することによって、ブロックに留意し得る。
【００５５】
上述したように、いくつかの実施形態では、Ｌ４は、多数のＤＲＡＭページとして配置され得る積層ＤＲＡＭを使用して実装され得る。単一のＤＲＡＭページは、多数のＬ４キャッシュブロックのためのデータを保持し得る。
【００５６】
いくつかの実施形態では、各ＤＲＡＭページは、物理メモリの隣接セットに対応するキャッシュブロックのグループを格納し得る。各ページにメモリの隣接セットを格納することによって、Ｌ４キャッシュは、アプリケーションアクセスパターンにおいて、空間局所性をより良好に活用することができる。
【００５７】
図６は、各ページが物理的に隣接するメモリを格納するＤＲＡＭページ上のキャッシュブロックの例示的配置を示す。図示する実施形態によると、Ｌ４データ１４５は、ページ０〜２１等の多数のページを含む。各ページは、２ＫＢの容量を有しており、そのため、１６個の２５６バイトキャッシュブロックを格納することができる。
【００５８】
図６において、近接キャッシュブロックは、同じページに一緒に格納される。例えば、最初の８つのセットの各々からの第１のキャッシュブロック（セット０〜７のＣＢ０）はページ０上に格納され、最初の８つのセットの各々からの第２のキャッシュブロック（セット０〜７のＣＢ１）はページ１上に格納されるなどである。したがって、本例では、Ｌ４データ１４５の最初の３２ページは、Ｌ４キャッシュ１３５の最初の８つの３２ウェイセットのための全てのキャッシュブロックを累積的に格納する。所定のセットのキャッシュブロックを格納するページの隣接セットは、図６のページセット６００等のページセットと呼ばれ得る。
【００５９】
上述のタグ関連レジスタに加え、Ｌ４キャッシュロジックは、Ｌ４データ（例えば、Ｌ４データ１４５）へのアクセスを促進するために使用可能な多数のレジスタを含んでもよい。例えば、図４ａに戻ると、このようなレジスタは、キャッシュブロックサイズレジスタ（例えば、ＣＢＳ４３０）と、ページセットマスク（例えば、ＰＳＭ４３５）と、ページセットオフセット（例えば、ＰＳＯ４４０）と、ページアクセスベースオフセット（例えば、ＰＡＢＯ４４５）とを含んでもよい。
【００６０】
いくつかの実施形態では、ＣＢＳレジスタ４３０は、各キャッシュブロックのサイズを示す値を格納し得る。例えば、ＣＢＳレジスタ４３０は、各Ｌ４キャッシュブロック（つまり、キャッシュライン）が２５６バイトを含むことを示す値２５６を格納し得る。
【００６１】
ＰＳＭレジスタ４３５は、所定の物理アドレスがマッピングするページセットを決定するために使用可能なマスクを格納し得る。例えば、各ＤＲＡＭページが８つのキャッシュブロックを保持する場合（図６のように）、物理アドレスのビット１１〜２２は、ＤＲＡＭページセットを識別するために使用され得る。これらのビットを物理アドレス（例えば、物理アドレス２００）から抽出するために、キャッシュロジックは、１６進値０ｘ７ＦＦ８００をＰＳＭレジスタに格納し、その値を使用して物理アドレスをマスクし得る。
【００６２】
キャッシュロジックが、物理アドレスがマッピングするページセットを決定すると（例えば、ＰＳＭレジスタ４３５を使用してアドレスをマスクすることによって）、キャッシュロジックは、ＰＳＯレジスタ４４０を使用して、物理アドレスがマッピングする決定されたページセットにおける特定のＤＲＡＭページを決定し得る。最大オフセットがＬ４連想度（例えば、３２）であるため、キャッシュロジックは、ｌｏｇ２（Ｌ４連想度）によってページセット値をシフトし、次に、タグオフセット（上述のタグアクセス段階中に計算されてもよい）を加え得る。例えば、３２ウェイＬ４キャッシュでは、ＰＳＯ値は、５であり得る（つまり、ｌｏｇ２（３２））。
【００６３】
キャッシュロジックが、物理アドレスがマッピングするＤＲＡＭページを決定すると（例えば、上述したように）、キャッシュロジックは、ＰＡＢＯレジスタ４４５を使用して、物理アドレスがマッピングする決定されたページ内の特定のキャッシュブロックを識別し得る。ロジックは、ＰＡＢＯレジスタ内の値を使用して物理アドレスをマスクすることによって、ＤＲＡＭページへのオフセットを導き得る。例えば、各ＤＲＡＭページが８つのキャッシュブロックを保持する場合（図６のように）、０ｘ７００のＰＡＢＯ値を使用して、物理アドレスのビット８〜１０以外の全てのビットをマスクすることによって、ページへのインデックスを決定し得る。
【００６４】
図７は、いくつかの実施形態による、所定の物理アドレスに対応するＬ４キャッシュブロックを位置付けるための方法を示すフロー図である。図７の方法は、図１の１４５等のＬ４キャッシュロジックによって実行され得る。
【００６５】
方法７００は、７０５において、キャッシュロジックが物理アドレスを決定するときに開始する。キャッシュロジックは、所定の物理アドレスへのアクセス（例えば、読み出し／書き込み）を必要とするプログラム命令に応じて、物理アドレスを決定し得る。
【００６６】
７１０において、Ｌ４キャッシュロジックは、物理アドレスにマッピングするＤＲＡＭページセットを決定する。ＤＲＡＭページを決定することは、ＰＳＭレジスタ４３５等のページセットマスクを使用して物理アドレスをマスクすることを含む。７１５において、キャッシュロジックは、決定されたセット内の、物理アドレスがマッピングする特定のページを決定する。セット内の特定のページを決定することは、ＰＳＯレジスタ４４０内の値により７１０において計算されたページセットを左シフトすることと、タグアクセス段階中に計算されたタグオフセットを加えることとを含み得る。７２０において、キャッシュロジックは、所望のブロックが決定されたページ内に格納されるオフセットを決定する。オフセットを決定することは、ＰＡＢＯレジスタ４４５内の値を使用して「＆＞」（論理ＡＮＤ、その後の末尾のゼロを落とすための右シフト）を実行することを含み得る。一般化するために、いくつかの実施形態では、物理アドレスＰＡがマッピングするＤＲＡＭページは、［（ＰＡ＆ＰＳＭ）＜＜ＰＳＯ］＋ｔａｇＯｆｆｓｅｔによって得られ、ページへのキャッシュブロックオフセットは、ＰＡ＆＞ＰＡＢＯによって得られる。キャッシュロジックがページおよびオフセットを決定すると（７１０〜７２０のように）、キャッシュロジックは、決定されたＤＲＡＭページの決定されたオフセットで、キャッシュブロックにアクセスし得る（７２５のように）。
【００６７】
上述したように、従来のキャッシュは、静的に構成される（例えば、ブロックサイズ、ブロックの数、連想度等）。しかしながら、あらゆるワークロードに最適な構成は１つもない。
【００６８】
種々の実施形態では、現在のワークロードまたは期待されるワークロードに最適な性能を提供するように、Ｌ４キャッシュは、動的に再構成可能であり得る。実行時に動的に再構成可能であるキャッシュは、システムの再起動および／または手動の介入を必要とせずに、ソフトウェア（例えば、ＯＳ）によって再構成され得る。例えば、システムＢＩＯＳは、構成レジスタ４００〜４４５内のデフォルト値を設定することによって、デフォルト構成でキャッシュを開始するように構成され得る。実行中、オペレーティングシステムは、現在のキャッシュ構成の有効性を決定するためにワークロード特性を監視し得る。異なるキャッシュ構成が有益であるとオペレーティングシステムが決定する場合、ＯＳは、以下に説明するように、Ｌ４（および／またはＬ３）キャッシュを再構成し得る。
【００６９】
図８は、いくつかの実施形態による、実行中にＬ４キャッシュを再構成するための方法のフロー図である。方法８００は、プロセッサ上で１つ以上の実行スレッドを実行するオペレーティングシステムによって実施され得る。
【００７０】
方法８００は、全てのシステムスレッドの実行をＯＳがフリーズさせるステップ８０５で開始する。次に、８１０において、ＯＳは、メモリバス上でロックを得て、その結果、どのプログラム命令または他の処理コアもバスにアクセスすることができないようにする。８１５において、ＯＳは、全ての不良キャッシュブロックをメモリに戻して書き込む。キャッシュブロックは、プロセッサがその値を修正したが、その値がメモリに戻ってまだ書き込まれていない場合には、不良とみなされる。８２０において、ＯＳは、全てのデータをキャッシュから排除する。８２５において、ＯＳは、新しいキャッシュ構成を反映するために、構成レジスタ内の１つ以上の値を調整する。次に、ＯＳは、バスロックを解除し（８３０において）、実行を開始する（８３５において）。
【００７１】
方法８００を使用して、オペレーティングシステムは、現在のワークロードまたは期待されるワークロードを反映するために、Ｌ４キャッシュの種々の構成パラメータを修正することができる。このようなパラメータは、ブロックサイズ、ブロックの数、連想度、セグメント化または他のパラメータを含み得る。例えば、ＯＳは、アプリケーションが高空間局所性を有するアクセスパターンを示していることを決定する場合に、構成レジスタ４００〜４４５のいくつかの数を修正することによって、Ｌ４キャッシュブロックサイズを増加させてもよく、これによって、より多くのデータをＬ４内にプリフェッチすることによって、高空間アプリケーションの性能を高めることができる。また、Ｌ４ブロックサイズを増加させることによって、Ｌ４が必要とするタグストレージスペースが少量になることから、Ｌ３のサイズも増加させることができる。Ｌ３は、高空間局所性を有するアクセスパターンのための改善性能のサイズを増加させることによって、Ｌ３データを格納するために回復および使用することができる。別の例では、ＯＳは、Ｌ４キャッシュの連想度のレベルを修正してもよい。これによって、コンフリクトミスにおける大幅な増加が生じない場合、Ｌ４キャッシュの連想度のレベルを低下させることによって、アクセス待ち時間が低くなり、また、キャッシュ省電力がもたらされ得る。反対に、連想度が高くなると、コンフリクトミスが減少し、結果的に、いくつかのワークロードにおいて性能が上昇し得る。
【００７２】
再構成可能性の別の例では、ＯＳは、セクタ分割キャッシュとしてＬ４を再構成してもよい。図４ｂに示すように、Ｌ４キャッシュロジック１４０は、所定のキャッシュブロック内の異なるセクタの有効性を識別するのに必要なビットの数を示すセクタ数を格納するセクタ数レジスタ（例えば、ＳＴＮ４２５）を含み得る。Ｌ４キャッシュがセクタ分割されない場合、セクタ数は、０に設定され得る。しかしながら、ＯＳは、ＳＴＮレジスタを異なる値で修正することによって多数のセクタを含むように、Ｌ４キャッシュを再構成することができる。
【００７３】
いくつかの実施形態では、ＯＳは、種々のプリセット構成に従って、Ｌ４キャッシュを再構成するように構成され得る。例えば、図９の表９００は、構成レジスタの４つの例示的構成を提供する。各構成は、それぞれのワークロード特性を対象とする。例えば、表９００は、デフォルト構成（例えば、ＢＩＯＳがキャッシュを開始する構成）と、大型キャッシュライン構成（つまり、５１２Ｂキャッシュブロック）と、高連想度構成（つまり、６４ウェイセットアソシアティブ）と、セクタ分割キャッシュ設計（つまり、２つのセクタ）とを含む。種々の実施形態では、プロセッサは、観測されたワークロードに応じて、これらのデフォルト構成、他のデフォルト構成および／またはカスタム構成を使用し得る。
【００７４】
図１０は、いくつかの実施形態による、本明細書で説明する積層ＤＲＡＭキャッシュを利用するように構成されたコンピュータシステムを示すブロック図である。コンピュータシステム１０００は、種々の種類のデバイスの何れかに対応してもよく、これらのデバイスには、パーソナルコンピュータシステム、デスクトップ型コンピュータ、ラップトップ型またはノート型コンピュータ、メインフレームコンピュータシステム、ハンドヘルドコンピュータ、ワークステーション、ネットワークコンピュータ、コンシューマデバイス、アプリケーションサーバ、ストレージデバイス、スイッチ、モデム、ルータ等の周辺機器、または概して任意の種類のコンピューティングデバイスが含まれるが、これらに限定されない。
【００７５】
コンピュータシステム１０００は、１つ以上のプロセッサ１０６０を含んでもよく、これらのプロセッサのうち何れかは、多数の物理コアおよび／論理コアを含み得る。プロセッサ１０６０のうち何れかは、図１のプロセッサ１００に対応してもよく、本明細書で説明するように、ＳＲＡＭ  Ｌ３キャッシュ１０６２および積層ＤＲＡＭ  Ｌ４キャッシュ１０６４等のデータキャッシュを含み得る。キャッシュ１０６２および１０６４の各々は、図１のＬ３キャッシュ１１０およびＬ４キャッシュ１３５の各々に対応し得る。したがって、Ｌ４キャッシュ１０６４は、本明細書で説明するように、ＯＳ１０２４によって再構成可能であり得る。コンピュータシステム１０００は、永続的にデータを格納し得る１つ以上の永続的ストレージデバイス１０５０（例えば、光学ストレージ、磁気ストレージ、ハードドライブ、テープドライブ、ソリッドステートメモリ等）も含み得る。
【００７６】
図示する実施形態によると、コンピュータシステム１０００は、プロセッサ１０６０のうち１つ以上のプロセッサ上等の多数の処理コア間で共有され得る１つ以上の共有メモリ１０１０（例えば、キャッシュ、ＳＲＡＭ、ＤＲＡＭ、ＲＤＲＡＭ、ＥＤＯ  ＲＡＭ、ＤＤＲ  １０  ＲＡＭ、ＳＤＲＡＭ、Ｒａｍｂｕｓ  ＲＡＭ、ＥＥＰＲＯＭ等のうち１つ以上）を含む。１つ以上のプロセッサ１０６０、ストレージデバイス１０５０および共有メモリ１０１０は、相互接続１０４０を介して連結され得る。種々の実施形態では、システムは、より少ない構成要素または図１０に図示しない追加の構成要素（例えば、ビデオカード、オーディオカード、追加のネットワークインターフェース、周辺機器、ＡＴＭインターフェース、Ｅｔｈｅｒｎｅｔ（登録商標）インターフェース、Ｆｒａｍｅ  Ｒｅｌａｙインターフェース等のネットワークインターフェース、モニター、キーボード、スピーカー等）を含んでもよい。加えて、図１０に示す異なる構成要素を組み合わせてもよく、または追加の構成要素にさらに分離してもよい。
【００７７】
いくつかの実施形態では、共有メモリ１０１０は、プログラム命令１０２０を格納してもよく、プログラム命令１０２０は、Ｊａｖａ（登録商標）バイトコード等のプラットフォームネイティブバイナリの任意のインタープリタ型言語で、Ｃ／Ｃ＋＋、Ｊａｖａ（登録商標）等の任意の他の言語で、またはそれらの任意の組み合わせでコード化され得る。プログラム命令１０２０は、１つ以上のアプリケーション１０２２を実装するためにプログラム命令を含んでよく、アプリケーション１０２２のうち何れかは、マルチスレッドであり得る。いくつかの実施形態では、プログラム命令１０２０は、オペレーティングシステム１０２４を実装するために実行可能な命令を含んでもよく、オペレーティングシステム１０２４は、本明細書で説明するように、プロセッサ１０６０上のワークロードを監視するように、ならびにキャッシュ１０６４および１０６２を再構成するように構成され得る。また、ＯＳ１０２４は、スケジューリング、ソフトウェア信号処理等の他のソフトウェアサポートも提供してもよい。
【００７８】
図示する実施形態によると、共有メモリ１０１０は、共有データ１０３０を含み、共有データ１０３０は、プロセッサ１０６０のうち何れかおよび／またはその種々の処理コアによってアクセスされ得る。プロセッサ１０６０のうち何れかは、共有データ１０３０の種々の構成要素をローカルキャッシュ（例えば、１０６２および／または１０６４）にキャッシュし、キャッシュコヒーレンスプロトコルに従ってメッセージを交換することによって、これらのキャッシュにおいてデータを調整し得る。いくつかの実施形態では、多数のプロセッサ１０６０および／またはプロセッサ１０６０の多数の処理コアは、キャッシュ１０６２、１０６４および共有メモリ１０１０に存在し得るオフチップキャッシュへのアクセスを共有し得る。
【００７９】
アプリケーション１０２２および／またはオペレーティングシステム１０２４を実装するために使用されるプログラム命令等のプログラム命令１０２０は、コンピュータ可読記憶媒体上に格納され得る。コンピュータ可読記憶媒体は、機械（例えば、コンピュータ）により可読である形式（例えば、ソフトウェア、処理アプリケーション）で情報を格納するための任意の機構を含み得る。コンピュータ可読記憶媒体には、磁気記憶媒体（例えば、フロッピー（登録商標）ディスク）、光学記憶媒体（例えば、ＣＤ−ＲＯＭ）、磁気光学記憶媒体、読み取り専用メモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、消去可能プログラマブルメモリ（例えば、ＥＰＲＯＭおよびＥＥＰＲＯＭ）、フラッシュメモリ、プログラム命令を格納するために適切な電気的または他の種類の媒体が含まれるが、これらに限定されない。
【００８０】
上述したようなコンピュータ可読記憶媒体は、プログラムによって読み出される命令を格納するためにいくつかの実施形態において使用されてもよく、プロセッサ１０６０のうち１つ以上のプロセッサを備えるハードウェアを製作するために、直接的または間接的に使用され得る。例えば、命令は、ＶｅｒｉｌｏｇまたはＶＨＤＬ等の高レベル設計言語（ＨＤＬ）においてハードウェア機能性の行動レベルまたはレジスタ転送レベル（ＲＴＬ）を記述する１つ以上のデータ構造を記述し得る。記述は、ネットリストを生成するために記述を合成し得る合成ツールによって読み出され得る。ネットリストは、プロセッサ５００の機能性を表すゲートのセット（例えば、合成ライブラリにおいて規定される）を含み得る。次に、ネットリストは、マスクに適用される幾何学的形状を記述するデータセットを生成するために位置付けられ、かつ経路付けられ得る。次に、マスクは、種々の半導体製作工程において、プロセッサ１００および／または１０６０に対応する１つまたは複数の半導体回路を製造するために使用され得る。代替として、データベースは、要望通りに、ネットリスト（合成ライブラリを含むまたは含まない）またはデータセットであってもよい。
【００８１】
特定の実施形態について上記に説明したが、これらの実施形態は、１つだけの実施形態が特定の特徴について説明される場合であっても、本開示の範囲を限定するように意図されない。本開示に提供される特徴の例は、別途指定のない限り、制限的ではなく例示的であるように意図される。上記説明は、本開示の便益を有する当業者であれば明白であるように、このような代替、修正および均等物を対象とするように意図される。
【００８２】
本開示の範囲は、本明細書において対処する問題の何れかまたは全てが緩和されるか否かに関わらず、本明細書に開示する任意の特徴および特徴の組み合わせ（明示的または暗示的を問わず）、またはそれらの任意の一般化を含む。したがって、新しい請求項が、任意のこのような特徴の組み合わせに対して、本出願（またはそれに対する優先権を主張する出願）の審査中に策定されてもよい。具体的には、添付の請求項を参照すると、従属請求からの特徴は、独立請求の特徴と組み合わせてもよく、それぞれの独立請求からの特徴は、単に添付の請求項に列挙される特定の組み合わせだけでなく、任意の適切な方式で組み合わせてもよい。
【図１】
2014517387.tif 000003
【図２】
2014517387.tif 000004
【図３ａ】
2014517387.tif 000005
【図３ｂ】
2014517387.tif 000006
【図４ａ】
2014517387.tif 000007
【図４ｂ】
2014517387.tif 000008
【図５】
2014517387.tif 000009
【図６】
2014517387.tif 000010
【図７】
2014517387.tif 000011
【図８】
2014517387.tif 000012
【図９】
2014517387.tif 000013
【図１０】
2014517387.tif 000014
【手続補正書】
【提出日】平成26年1月10日(2014.1.10)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
第１のデータキャッシュと、
第２のデータキャッシュと、
メモリデータを前記第１のデータキャッシュに格納し、且つ、前記メモリデータに対応するタグデータを、前記第１のデータキャッシュではなく前記第２のデータキャッシュに格納することによって、前記メモリデータを前記第１のデータキャッシュにキャッシュするように構成されたキャッシュロジックと、
を備える、装置。
【請求項２】
前記第１および第２のデータキャッシュは、プロセッサのデータキャッシュ階層のそれぞれのレベルを実装する、請求項１に記載の装置。
【請求項３】
前記第１のデータキャッシュにより実装される前記レベルは、前記キャッシュ階層において、前記第２のデータキャッシュにより実装される前記レベルの直下である、請求項２に記載の装置。
【請求項４】
前記第１のデータキャッシュは、複数のメモリページとして編成された積層メモリを使用して、前記プロセッサ上に実装されており、
前記キャッシュロジックは、物理システムメモリの隣接する領域に対応するメモリデータを、各メモリページに格納するように構成されている、請求項１に記載の装置。
【請求項５】
前記第１のデータキャッシュは、実行時に、動的に再構成可能である、請求項１に記載の装置。
【請求項６】
前記第１のデータキャッシュは、前記第１のデータキャッシュのサイズ、ブロックサイズ、ブロックの数または連想度レベルを修正するために、実行時に、動的に再構成可能である、請求項５に記載の装置。
【請求項７】
前記第１のデータキャッシュは、オペレーティングシステムが下す決定に応じて、前記オペレーティングシステムによって、実行時に動的に再構成可能であり、前記決定は、前記プロセッサのワークロードの１つ以上の特性に依存する、請求項５に記載の装置。
【請求項８】
前記第１のデータキャッシュを再構成することは、前記第１のデータキャッシュの１つ以上の構成レジスタを修正することを含み、前記構成レジスタは、前記第１のデータキャッシュの所定のブロックに対応するタグ情報を格納する前記第２のデータキャッシュのブロックを決定するために使用可能である、請求項５に記載の装置。
【請求項９】
前記再構成することは、オペレーティングシステムが、
前記プロセッサ上で実行する１つ以上のスレッドの実行をフリーズさせることと、
前記プロセッサをシステムメモリに接続するメモリバス上でロックを得ることと、
不良ブロックをメモリに書き戻すことと、
前記第１のデータキャッシュ内のデータを無効にすることと、
前記メモリバス上の前記ロックを解除することと、
前記１つ以上のスレッドの実行を再開することと、
を実行することを含む、請求項５に記載の装置。
【請求項１０】
プロセッサが、前記プロセッサによりアクセスされたメモリデータを第１のデータキャッシュにキャッシュすることと、
前記プロセッサが、前記アクセスされたメモリデータのタグ情報を、前記第１のデータキャッシュではなく、第２のデータキャッシュに格納することと、
を含む、方法。
【請求項１１】
前記第１および第２のデータキャッシュは、前記プロセッサのデータキャッシュ階層のそれぞれのレベルを実装し、前記第１のデータキャッシュにより実装される前記レベルは、前記第２のデータキャッシュにより実装される前記レベルの直下である、請求項１０に記載の方法。
【請求項１２】
前記第１のデータキャッシュは、複数のメモリページとして編成された積層メモリを使用して、前記プロセッサ上に実装されており、
キャッシュロジックは、物理システムメモリの隣接する領域に対応するメモリデータを、各メモリページに格納するように構成されている、請求項１０に記載の方法。
【請求項１３】
前記第１のデータキャッシュは、オペレーティングシステムが下す決定に応じて、前記オペレーティングシステムによって、実行時に、動的に再構成可能であり、前記決定は、前記プロセッサのワークロードの１つ以上の特徴に依存する、請求項１０に記載の方法。
【請求項１４】
前記第１のデータキャッシュは、実行時に、動的に再構成可能であり、
前記第１のデータキャッシュを再構成することは、前記第１のデータキャッシュの１つ以上の構成レジスタを修正することを含み、前記構成レジスタは、前記第１のデータキャッシュの所定のブロックに対応するタグ情報を格納する前記第２のデータキャッシュのブロックを決定するために使用可能である、請求項１０に記載の方法。
【請求項１５】
物理メモリアドレスのタグ値を決定するために、前記データの前記物理メモリアドレスを使用することと、
前記タグ値が前記第２のデータキャッシュによって格納されることを決定することとによって、
前記メモリデータが前記第１のデータキャッシュに格納されることを決定することをさらに含む、請求項１０に記載の方法。
【国際調査報告】
2014517387.tif 000015
2014517387.tif 000016