JP2014517387A - 大型データキャッシュのための効率的なタグストレージ - Google Patents
大型データキャッシュのための効率的なタグストレージ Download PDFInfo
- Publication number
- JP2014517387A JP2014517387A JP2014510452A JP2014510452A JP2014517387A JP 2014517387 A JP2014517387 A JP 2014517387A JP 2014510452 A JP2014510452 A JP 2014510452A JP 2014510452 A JP2014510452 A JP 2014510452A JP 2014517387 A JP2014517387 A JP 2014517387A
- Authority
- JP
- Japan
- Prior art keywords
- cache
- data
- memory
- data cache
- tag
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 230000015654 memory Effects 0.000 claims abstract description 106
- 238000000034 method Methods 0.000 claims abstract description 31
- 230000004044 response Effects 0.000 claims description 5
- 230000001419 dependent effect Effects 0.000 claims description 3
- 230000008569 process Effects 0.000 claims description 2
- 230000008014 freezing Effects 0.000 claims 1
- 238000007710 freezing Methods 0.000 claims 1
- 238000012545 processing Methods 0.000 description 20
- 238000010586 diagram Methods 0.000 description 16
- 238000005516 engineering process Methods 0.000 description 7
- 238000004519 manufacturing process Methods 0.000 description 6
- 230000000873 masking effect Effects 0.000 description 6
- 239000004065 semiconductor Substances 0.000 description 4
- 230000003068 static effect Effects 0.000 description 4
- 101100270992 Caenorhabditis elegans asna-1 gene Proteins 0.000 description 3
- 238000003491 array Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 230000015572 biosynthetic process Effects 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 238000003786 synthesis reaction Methods 0.000 description 3
- 101100327917 Caenorhabditis elegans chup-1 gene Proteins 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 101100481016 Caenorhabditis elegans tag-325 gene Proteins 0.000 description 1
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 229910044991 metal oxide Inorganic materials 0.000 description 1
- 150000004706 metal oxides Chemical class 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
- G06F12/0895—Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
- G06F12/0897—Caches characterised by their organisation or structure with two or more cache hierarchy levels
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
コンピュータシステムにおいてデータキャッシングを実装するための装置、方法および媒体が開示される。装置は、第1のデータキャッシュと、第2のデータキャッシュと、キャッシュロジックとを備える。キャッシュロジックは、メモリデータを第1のデータキャッシュにキャッシュするように構成されている。メモリデータを第1のデータキャッシュにキャッシュすることは、メモリデータを第1のデータキャッシュに格納することと、メモリデータに対応するタグデータを、第1のデータキャッシュではなく第2のデータキャッシュに格納することとを含む。
【選択図】図1
【選択図】図1
Description
より高性能のコンピュータプロセッサを構築する上で主に困難となるのは、処理コアが計算を実施することのできる速度と、これらの計算を実行するために処理コアが当該処理コア上のメモリからデータを読み出すことのできる速度との間に大きな格差があることである。「メモリギャップ」の対処に相当な努力が向けられてきたが、近年、処理能力は、メモリ速度を上回り続けている。さらに、現在のコンピュータプロセッサは、マルチコア(つまり、多数の演算器を含み、その各々が、ソフトウェア命令のそれぞれのストリームを実行するように構成されている)が多くなり、メモリ帯域幅の需要は増大し続けている。
メモリ(例えば、オフチップダイナミックランダムアクセスメモリ)へのアクセスが、マルチコアプロセッサの増大するスループット需要を満たすのに不十分であることの1つの理由として、I/Oピンの制限された拡張性が挙げられる。プロセッサの上にメモリを直接積層することによってこの制限に対処するために最近提案されているのが積層メモリまたは3次元スタッキングであり、これによって、プロセッサとメモリとの間の配線遅延が大幅に減少する。例えば、積層メモリ回路は、高密度で、低待ち時間で、高帯域幅の垂直相互接続と結合された多層の活性シリコンを使用して構築され得る。従来のオフチップDRAMと比べると、積層メモリは、データ帯域幅の増加、待ち時間の減少および必要エネルギー量の低下を提供する。また、メモリ積層によって、コンピュータ設計者は、高速CMOS(相補型金属酸化膜半導体)、高密度DRAM、eDRAMおよび/または他の技術等の異種メモリ技術を統合することが可能になる。
積層メモリ技術は、L4キャッシュ等の大型のラストレベルデータキャッシュ(つまり、キャッシュ階層の最低レベル)を実装するために使用されている。大型のラストレベルキャッシュは、現代のアプリケーションの大規模なメモリフットプリントおよび/またはマルチコアプロセッサの高いメモリ需要に対処するのに望ましいであろう。
積層メモリ(つまり、積層メモリキャッシュ)を使用して大型のラストレベルキャッシュ実装することによって、いくつかの利点が与えられる。例えば、このようなキャッシュは、ソフトウェアではなくハードウェアによって管理されることができ、これによって、キャッシュは、アプリケーション位相変化に容易に適合することと、オンチップおよびオフチップのデータ移動に関連する変換索引バッファ(TLB)フラッシュを容易に回避することとが可能になり得る。さらに、従来のキャッシュは、ダイスペースを非効率的に消費する、高速であるが高価なスタティックメモリ(例えば、SRAM)を使用して実装されていたため、生産するのに費用が掛かり、小容量かつ固定構成(例えば、連想度、ブロックサイズ等)で構成されていた。対照的に、積層メモリキャッシュは、従来のキャッシュの構築に使用されるスタティックメモリよりも安価かつ高密度のダイナミックメモリ(例えば、DRAM)を使用して実装され得る。したがって、積層メモリキャッシュは、従来のSRAMベースの技術が可能とするよりも低いコストで大型のラストレベルキャッシュを提供することができる。
コンピュータシステムにおいてデータキャッシングを実装するための装置、方法および媒体が開示される。装置は、第1のデータキャッシュ、第2のデータキャッシュおよびキャッシュロジックを備える。キャッシュロジックは、メモリデータを第1のデータキャッシュにキャッシュするように構成されている。メモリデータを第1のデータキャッシュにキャッシュすることは、メモリデータを第1のデータキャッシュに格納することと、メモリデータに対応するタグデータを、第1のデータキャッシュではなく第2のデータキャッシュに格納することとを含む。
いくつかの実施形態では、第1のデータキャッシュは、実行時に、動的に再構成可能であり得る。例えば、ソフトウェア(例えば、オペレーティングシステム)は、第1のデータキャッシュおよび/または第2のデータキャッシュの1つ以上の構成レジスタを修正することによって、第1のデータキャッシュのサイズ、ブロックサイズ、ブロックの数、連想度レベルおよび/または他のパラメータを修正し得る。いくつかの実施形態では、ソフトウェアは、1つ以上のプロセッサ上で実行するワークロードの特定の特性を検出することに応じて、第1のデータキャッシュを再構成し得る。
種々の実施形態では、第1および第2のデータキャッシュは、データキャッシュ階層のそれぞれのレベルを実装し得る。例えば、第1のデータキャッシュは、第2のデータキャッシュにより実装されるレベルの直下であるキャッシュ階層のレベルを実装し得る(例えば、第1のデータキャッシュはL4を実装し、第2のデータキャッシュはL3キャッシュを実装する)。いくつかの実施形態では、第1のデータキャッシュは、積層メモリを使用して実装され得る大型のラストレベルキャッシュであり得る。
本明細書は、「一実施形態」または「ある実施形態」への言及を含む。語句「一実施形態では」または「ある実施形態では」が出現することは、必ずしも同じ実施形態について言及するとは限らない。特定の特徴、構造または特性を、本開示と一致する任意の適切な方式で組み合わせてもよい。
専門用語。以下の段落では、本開示(添付の請求項を含む)にて見られる用語の定義および/または文脈を提供する。
「備える」。本用語は、非限定的である。添付の請求項で使用する際、本用語は、追加の構造またはステップを除外しない。「1つ以上のプロセッサユニット・・・を備える装置」と列挙する請求項について考察する。このような請求項は、装置を、追加の構成要素(例えば、ネットワークインターフェースユニット、グラフィックス回路等)を含むことから除外しない。
「〜するように構成されている」。種々のユニット、回路または他の構成要素は、1つまたは複数のタスクを実施する「ように構成されている」ように説明または請求され得る。このような文脈において、「〜するように構成されている」とは、ユニット/回路/構成要素が、動作中にこれらの1つまたは複数のタスクを実施する構造(例えば、回路網)を含むことを示すことによって、構造を含意するように使用される。したがって、ユニット/回路/構成要素は、特定のユニット/回路/構成要素が動作中でない(例えば、作動中でない)ときであっても、タスクを実施するように構成されていると言える。「〜するように構成されている」の言い回しとともに使用されるユニット/回路/構成要素は、ハードウェア(例えば、回路や、動作を実装するために実行可能なプログラム命令を格納するメモリ等)を含む。ユニット/回路/構成要素が1つ以上のタスクを実施する「ように構成されている」と列挙することは、そのユニット/回路/構成要素について、35U.S.C.§112の第6段落を行使「しない」ように明示的に意図される。加えて、「〜するように構成されている」とは、該当するタスク(1つまたは複数)を実施することができるように動作するために、ソフトウェアおよび/またはファームウェア(例えば、ソフトウェアを実行するFPGAまたは汎用プロセッサ)によって操作される一般的構造(例えば、一般的回路網)を含むことができる。また、「〜するように構成されている」とは、1つ以上のタスクを実装または実施するように適合されるデバイス(例えば、集積回路)を製作するための製造工程(例えば、半導体製作施設)を適合させることも含み得る。
「第1の」および「第2の」等。本明細書で使用する際、これらの用語は、その用語が前に置かれる名詞のための標記として使用され、いかなる種類の順序(例えば、空間的、時間的、論理的等)も暗示しない。例えば、8つの処理要素または処理コアを有するプロセッサにおいて、用語の「第1の」および「第2の」処理要素は、8つの処理要素のうち任意の2つについて言及するように使用されることができる。言い換えると、「第1の」および「第2の」処理要素は、論理的処理要素0および1に限定されない。
「〜に基づく」。本明細書で使用する際、本用語は、決定に影響を及ぼす1つ以上の要因を説明するために使用される。本用語は、決定に影響を及ぼし得る追加の要因を除外しない。つまり、決定は、これらの要因だけに基づくものであってもよく、またはこれらの要因に少なくとも部分的に基づくものであってもよい。「AをBに基づいて決定する」という語句について考察する。Bは、Aの決定に影響を及ぼす要因であり得るが、このような語句は、Cにも基づいて決定されることからAの決定を除外しない。他の事例では、Aは、Bだけに基づいて決定されてもよい。
プロセッサが、アプリケーションの従来よりも大きいメモリフットプリントおよび多重プログラミングレベルの増加に対応する必要があるため、キャッシュサイズは、驚異的な割合で増加している。積層メモリは、著しく大きいダイ面積を提供することを約束し、その大きいダイ面積を使用して、数百メガバイトから今後さらに大きいサイズの範囲となることが可能な大型のラストレベルDRAMキャッシュを実装することができる。
大型の積層DRAMキャッシュを構築する上での1つの困難は、このようなキャッシュに対応することを必要とするタグアレイのサイズが、かなりのダイ面積を消費する可能性があることである。キャッシュは、典型的には、2つの独立したアレイ、すなわちデータアレイおよびタグアレイに分かれている。データアレイエントリは、それぞれのメモリブロックからのメモリデータを保持し、タグアレイは、これらのメモリブロックを識別する識別子(つまり、タグ)を保持する。例えば、セットアソシアティブキャッシュでは、タグは、特定のセットにマッピングするメモリブロックの中から所定のメモリブロックを一意的に識別することができる。このようなタグアレイを実装することによって、かなりのダイスペースを消費する可能性がある。例えば、64Bのキャッシュラインを有する典型的な256MBのキャッシュは、11MBのタグアレイを必要とすることもあり得る。
問題をさらに悪化させることとして、タグアレイは、その容量に不均等なダイ面積の共有をしばしば必要とする。タグアレイへのアクセスは高速でなければならないため、より遅く、安価で、かつ高密度のダイナミックRAM(DRAM)を使用してデータアレイが実装されたとしても、タグアレイは、高速で高価なスタティックRAM(SRAM)または組み込み型ダイナミックRAM(eDRAM)を使用してしばしば構築される。残念ながら、SRAM等の技術は、DRAM(大抵12〜15倍大きい)よりも大幅に密度が低く、これは、タグアレイが、DRAMで実装されたデータアレイが必要とするよりも多くの容量単位当たりのダイスペースを必要とすることを意味する。結果として、タグアレイに必要なダイスペースは、大型の積層DRAMキャッシュの実装に大きな障害となっている。
種々の実施形態によると、大型の積層メモリキャッシュは、タグ情報を格納するために、より低レベルのキャッシュにおいてキャッシュブロックを使用するように構成され得る。例えば、いくつかの実施形態では、大型L4キャッシュのデータアレイは、積層DRAMを使用して実装されてもよく、一方、L4キャッシュのタグアレイは、システムのL3キャッシュにおける種々のブロックを使用して実装されてもよい。
いくつかの実施形態では、積層メモリキャッシュは、再構成可能なキャッシュとして実装されてもよい。従来のキャッシュ設計は、スタティック構成(例えば、全体のサイズ、連想度、ブロックサイズ等)に制限されるが、再構成可能なキャッシュは、本明細書で説明するように、特定のキャッシュ構成がワークロードに合わせられるように、システムワークロードに対して適応および/または応答することができる。
図1は、いくつかの実施形態による、L3で実装されたタグアレイを有する再構成可能なL4データキャッシュを含むプロセッサの種々の構成要素を示すブロック図である。本明細書で説明する実施形態の多くは、キャッシュ階層におけるL4の直下であるL3にタグアレイが格納されたL4キャッシュに関して示される。しかしながら、これらの例は、実施形態をL4およびL3キャッシュの連携自体に限定するように意図されない。むしろ、異なる実施形態では、本明細書で説明する技術およびシステムは、キャッシュ階層の種々のレベルにおけるキャッシュに適用されてもよい。本明細書で使用する際、プロセッサが、第2のキャッシュの検索を試みる前に第1のキャッシュにおけるメモリデータの発見を試みる場合(例えば、第1のキャッシュ上でキャッシュミスがある場合)、第1のキャッシュは、キャッシュ階層において、第2のキャッシュよりより高いレベル(または第2のキャッシュより上)にあるように言える。
図示する実施形態によると、プロセッサ100は、L3キャッシュ110と、L4キャッシュ135と、1つ以上の処理コア105とを含む。処理コア105の各々は、それぞれの命令ストリームを実行するように構成されてもよく、種々のプロセッサ105は、L3 110および/またはL4 135へのアクセスを共有し得る。また、処理コア105は、それぞれの占有キャッシュ(例えば、L1)および/または他の共有データキャッシュ(例えば、L2)を含んでもよい。
L3キャッシュ110およびL4キャッシュ135は、プロセッサ100上でデータキャッシュ階層のそれぞれのレベルを実装し得る(例えば、L3キャッシュ110は、第3レベルキャッシュを実装してもよく、一方、L4キャッシュ135は、それより低い第4レベルキャッシュを実装してもよい)。このような階層に従って、処理コア105は、L3キャッシュ110においてデータが発見されない場合には、L4キャッシュ135においてデータを検索するように構成され得る。異なる実施形態では、L3キャッシュ110およびL4キャッシュ135は、異なるポリシーおよび/またはプロトコルに従って、システムメモリからデータをキャッシュするために連携し得る。
いくつかの実施形態では、L4キャッシュ135は、データを格納するためにDRAMを使用する積層メモリキャッシュとして実装され得る。例えば、L4 135は、DRAMを使用して実装され得るL4データアレイ145を含む。継続的な例として、L4は、2KBのDRAMページ(例えば、3KBのDRAMページ160)に格納された256Bのキャッシュブロックを有する、256MBで32ウェイのDRAMキャッシュとして構成されており、DRAMページの各々は、キャッシュにおいて連続的であり得るCB1からCBN等の多数のキャッシュブロックを格納するように構成されていると想定する。
L4キャッシュ135は、キャッシュを管理するためにキャッシュロジック140を含む。キャッシュロジック140(および/またはキャッシュロジック115)は、ハードウェア回路網を使用して、ハードウェアに実装され得る。いくつかの実施形態では、キャッシュロジック140は、必要なデータがキャッシュに存在するか否かを決定するように、失効データをキャッシュから除去するように、および/または新しいデータをキャッシュに挿入するように構成されてもよい。特定のメモリアドレスからのデータがキャッシュに格納されるか否かを決定する場合、L4キャッシュロジック140は、メモリアドレスを、タグを含む多数のフィールドに分解してもよく、これらの構成要素を使用して、メモリアドレスに対応するデータがキャッシュに存在するか否か、および/またはそのデータがどこにあるのかを決定してもよい。
図2は、いくつかの実施形態による、所定のキャッシュが所定のメモリアドレスを分解し得るフィールドを示すブロック図である。特定のフィールドおよびその長さは、メモリアドレス(例えば、ビットの数、エンディアン性等)に応じて、および/またはキャッシュ自体の構成(例えば、連想度、ブロックの数、ブロックのサイズ等)に応じて変動し得る。例えば、図2は、本明細書の例のL4キャッシュ(つまり、256Bのキャッシュブロックを有する、256MBで32ウェイのキャッシュ)によって決定されるように、48ビットのメモリアドレスのフィールドを示すブロック図である。図示する実施形態によると、アドレスの最上位25ビットは、タグ205に対応し、次に低位の15ビットは、インデックス210に対応し、最下位8ビットは、オフセット215に対応する。このような実施形態では、インデックス210は、メモリアドレスがマッピングするキャッシュブロックのセットを位置付けるために使用可能であり得る(つまり、メモリアドレスに対応するデータがキャッシュ内に格納される場合には、データは、セット内のブロックのうち1つのブロックに格納される)。キャッシュロジック(例えば、140)は、セット内のキャッシュブロックに関連付けられたそれぞれのタグを決定し、これらのタグをタグ205と比較し得る。1つのタグがタグ205に一致する場合、そのタグに対応するキャッシュラインは、そのメモリアドレスのデータを格納する。次に、キャッシュロジックは、オフセット215を使用して、一致するキャッシュブロックのどこにデータが格納されるのかを決定し得る。
次に、図1に戻ると、L4キャッシュラインのデータは、L4データ145に格納され得る。上述したように、L4キャッシュ135は、データ145を格納するためにDRAMまたは別の高密度のメモリ技術を使用する積層メモリキャッシュとして実装され得る。したがって、L4データ145は、比較的低いコストで高メモリ容量を有するように構成され得る。しかしながら、L4データ145が大容量のため、特に、性能の懸案事項として、このようなタグアレイがSRAM、比較的スパースなメモリ技術で実装されるべきであることを指示された場合には、対応するタグアレイを実装することによって、かなりのダイスペースが必要となり得る。
図示する実施形態によると、L4 135は、L4タグアレイをL4自体に実装するのではなく、L3 110等のより低レベルのキャッシュに格納するように構成され得る。例えば、図示する実施形態では、L3キャッシュ110は、L3キャッシュを管理するためのL3キャッシュロジック115(つまり、L4キャッシュロジック140と類似している)と、L3タグアレイ120と、L3データアレイ125とを含む。L3データを格納することに加え、L3 110は、L4 135の代わりにタグを格納するために、L3データ125のいくつかの数のキャッシュブロックを確保するように構成され得る。例えば、図示する実施形態では、L4タグ130は、L3データ125内に格納されており、L4 135によって使用可能である。図1に示すように、L3データ125における各キャッシュブロックは、多数のL4タグを保持し得る。
図3aは、種々の実施形態による、L4タグを格納するために、いくつかのL3キャッシュブロックがいかに確保され得るかを示すブロック図である。キャッシュセット300は、多数のブロックを含み、そのうちのいくつか(例えば、315a〜315x)は、L3キャッシュのL3データを格納するために使用される。しかしながら、確保されたブロック310等の他のブロックは、L4タグを格納するために確保される。
L3キャッシュは、各L4タグを、図3bのタグ構造320等のタグ構造として格納し得る。図3bのタグ構造は、タグ自体(つまり、タグ325)と、タグメタデータとを含む。図示する例では、タグは25ビットであり、タグメタデータは、有効ビット330および不良ビット335を含む。他の実施形態では、タグ構造は、他のタグメタデータを含んでもよい。
本明細書の継続的な例(256MB、32ウェイ、256Bブロック、2KBのDRAMページL4;28ビットタグ構造)のために、L3キャッシュ110は、64Bのキャッシュラインを有する、16MBで32ウェイのキャッシュであって、L3キャッシュセット300は、L3 110のキャッシュセット(つまり、データ125における)に対応していることを想定する。この例示的構成を前提とすると、L4タグのために必要な全てのスペースは、4MBである。したがって、各L3キャッシュセット(例えば、300)は、L4タグデータを格納するために、その32ブロックのうち8つのブロックを確保し得る。例えば、キャッシュセット300は、32個のブロック305を含み、L4タグを格納するためにこれらのブロックのうち8つのブロック(310)を確保し、一方、残りのブロック(つまり、315a〜315x)は、通常通り、L3データを格納する。確保された8つのブロック(310)は、512Bの全容量を有し、これは、128個の28ビットタグ構造を格納するのに十分である。ゆえに、確保されたブロック310は、4つの32ウェイL4セットのタグデータを格納するのに十分である。図示する実施形態では、キャッシュセット300の第1のブロックは、L4のセット0の16個のタグを格納し、次のブロックは、セット1の16個のタグを格納し、セット3まで同じように続く。第5のブロックは、セット0に属する残りのタグを格納し、第6のブロックは、セット1に属する残りのタグを格納し、8つの格納されたブロック310がL4セット0〜3の全てのタグデータを格納するように、同じように続く。N個の連続的なL3ブロックの各々を異なるL4セットに割り当て、次に、次のN個の連続的なL3ブロックについて割り当てパターンを繰り返す技術は、本明細書においてストライピングと呼ばれ得る。図3のストライピング構成が、単に例示的であるように意図されることを留意されたく、異なる実施形態では、確保されたブロックが異なる順序でL4タグを格納してもよいことを理解されたい。
図1に戻ると、いくつかの実施形態では、L3キャッシュロジック110およびL4キャッシュロジック140は、分散タグスキームを実装するために連携するように構成され得る。例えば、L4タグデータにアクセス(例えば、読み出しまたは書き込み)するために、L4キャッシュロジック140は、L3キャッシュロジック115と通信してもよく、次に、必要なデータ(例えば、L4タグ130)をL3データ125からフェッチしてもよい。
L4タグを、L3等のより低レベルのキャッシュのデータアレイに置くことによって、多くの利点が有効になり得る。例えば、本明細書で説明するタグストレージスキームによって、システムは、(1)ダイスペースをより効果的に使用すること、および/または(2)ワークロードの変化に応じてL4キャッシュを再構成することが可能になる。
ダイスペースに関して、L3キャッシュは、大抵、高度に連想的であり、これは、いくつかのキャッシュブロックを要求することが、L3の全体の性能にほとんど影響を及ぼし得ないことを意味する。さらに、スキームが可能にする大型L4キャッシュは、効果的に小型のL3によって引き起こされ得る性能損失を相殺または排除し得る。さらに、専用L4タグアレイを実装しないことによって省かれた追加のダイスペースは、L3の性能損失がまとめて緩和または排除されるように、L3キャッシュを拡大するように使用され得る。
再構成可能性に関して、いくつかの実施形態では、L3ロジック115およびL4ロジック140は、L4キャッシュ構成を制御するレジスタとともに構成され得る。実行中(または実行前)、これらのレジスタの値は、キャッシュ構成の変化をもたらすために修正され得る。例えば、所定のワークロードが極めて高い空間局所性特性を示すことが期待される場合には、L4キャッシュは、より少数ではあるが大型のキャッシュブロックを使用するように再構成され得る。別の例では、所定のワークロードが極めて低い空間局所性を示すことが期待される場合には、L4は、より多数ではあるが、より小型のキャッシュブロックを使用するように再構成され得る。プロセッサのワークロードは、プロセッサ上の1つ以上の実行スレッドのメモリアクセスパターンを含み得る。
図4aおよび図4bは、再構成可能なL4キャッシュを実装するために、L3およびL4ロジックが含み得る種々のレジスタを示す図である。レジスタは、保持するように意図されるデータと、L4および/またはL3構成とに応じて、種々のサイズを有し得る。さらに、種々の実施形態では、異なるレジスタは、組み合わされてもよく、多数の他のレジスタに分解されてもよく、および/またはそうでなければ、レジスタに格納される情報は、分散されてもよい。図4aのL3キャッシュロジック115および図4bのL4キャッシュロジック140の各々は、図1のキャッシュロジック115および140の各々に対応し得る。
図4aによると、L3キャッシュロジックは、TCWR400等のタグキャッシュウェイ確保ベクトルを含み得る。TCWRレジスタ400は、L3キャッシュのどのブロックが、L4タグを格納するために確保されるかを示し得る。例えば、TCWR400は、各キャッシュセット内のどのウェイがL4タグのために確保されるかを示すマスクベクトルを格納し得る。各セットの最初の8つのウェイが確保されること(例えば、図3aのように)を示すために、ベクトルは、0xFFであり得る。したがって、L3キャッシュは、L3データを格納するためにどのキャッシュラインを使用し得るか、およびL4タグを格納するためにどのキャッシュラインが確保されるかを決定するために、TCWRレジスタに格納される値を使用し得る。
図4bでは、L4キャッシュロジック140は、タグアクセスを支援するための多数のレジスタ(例えば、TCIM405、TCW410、TGM415、TGS420)と、L4データアクセスを支援するための多数のレジスタ(例えば、CBS430、PSM435、PSO440、およびPABO445)と、他の目的に有用な1つ以上の種々雑多なレジスタ(例えば、STN425)とを含む。これらのレジスタおよびその使用について以下に説明する。
タグサイズレジスタ(TGS)420は、タグ毎のビット数を示すように使用され得る。例えば、図2の実施形態を用いると、TGSレジスタ420は、タグサイズが25ビットであることを示し得る。いくつかの実施形態では、TGSレジスタ420は、所定のアドレスのタグを計算するためのタグマスクを生成するように使用され得る。
図示する実施形態では、L4キャッシュロジック140は、タグマスクレジスタと、TGM415とを含み、これは、対応する物理アドレスからL4タグを入手するために使用可能であり得る。例えば、TGMは、タグマスクおよび所定の物理アドレスを使用してビットAND演算を実施することによって、そのアドレスのタグがもたらされるように選択され得る。例えば、図2のアドレス200から最上位25ビットを抽出するために、TGMレジスタは、16進数0xFFFFFF800000を保持し得る。
また、L4ロジック140は、タグキャッシュウェイレジスタ(TCW)410を含む。TCWレジスタ410は、どのL3ブロックが所定のL4タグを保持するように構成されるかを識別するために使用され得る。例えば、タグが、(上述した)ストライピング型割り当てパターンに従ってL3ブロックに格納される場合には、TCWレジスタは、3つのフィールド、すなわちウェイマスク(所定のL4セットのためのタグを格納するL3セット内の第1のブロックを示す)と、数フィールド(L4セットのためのタグを格納するL3ブロックの数を示す)と、ストライドフィールド(L3セットがタグデータを格納するL4セットの数を示す)とを含み得る。これらのフィールドおよびその使用について、以下により詳細に説明する。
ウェイマスクフィールドは、所定のL4セットのためにタグデータを保持する第1のブロック(所定のL3セット内)を識別するために使用可能であり得る。例示するために、各L3セット(例えば、セット300)が、ストライピング型割り当てパターンにおいて4つのL4セットのためのタグデータを格納する図3aの例について考察する。2つのビットは、最初の4つのブロックのうちどのブロックが所定のセットのためのタグを格納するかを決定するために使用され得る。このような例では、ウェイマスクフィールドは、ウェイマスクを使用して物理アドレスをマスクすること(つまり、その2つについて論理AND演算を実施すること)によって、物理アドレスがマッピングするL4セットに対応するL4タグを格納するL3ブロックの識別子がもたらされるように、構成され得る。例えば、TCW410は、16進値0x300を保持してもよく、これは、200等の物理アドレスをマスクするために使用されるときに、物理アドレスの8番目および9番目のビットをもたらす。これらの2つのビットは、最初の4つの確保されたブロック(つまり、L3キャッシュセット300のうちの310)のどれが、物理アドレスがマッピングするL4セットのためのタグを保持するのかを識別するために使用可能な0〜3の数を決定するために使用され得る。例えば、2つのビットが00である場合には、310における第1のブロックを識別してもよく、01の値は、第2のブロックを識別してもよいなどである。
TCWレジスタの数フィールドは、L4セットに対応する全てのタグを入手するために読み出されるブロックの数を示し得る。例えば、L3キャッシュセット300は、任意の所定のL4セットに対応するタグを格納するために2つのL3ブロックを使用するため、数フィールドは2であってよい。
TCWレジスタのストライドフィールドは、L3セットがタグデータを格納するL4セットの数を示し得る。例えば、L3キャッシュセット300は、4つのL4セットのためのタグデータを格納するため(つまり、図3aにおけるセット0〜3)、ストライドフィールドは4であってよい。
ストライピング型割り当てパターンに従ってL4タグが所定のL3キャッシュセットに格納される場合には、ウェイマスクフィールド、数フィールドおよびストライドフィールドの組み合わせは、所定のL4セットに対応するL3セットに全てのタグを位置付けるために使用可能である。例えば、所定のL4セットに関連付けられるL4タグデータを入手するために、キャッシュロジック110および/または135のうち1つ以上は、ウェイマスクを使用して、L3セットにおける第1の該当ブロックを識別し得る。次に、ロジックは、ストライドフィールドおよび数フィールドを使用して、使用されるストライピングパターンを決定し、ひいては、L4セットのためのタグデータを格納するL3セット内の全ての他のブロックを位置付けおよび読み出ししてもよい。例えば、ストライド値が4および数フィールド値が2は、第1のブロックの後に読み出す1つの追加のブロックが存在することと、その追加のブロックが第1のブロックから4番目のブロック(つまり、図3aにおける第5のブロック)であることとを示す。ゆえに、このようなある実施形態では、読み出すための第Nのブロックは、(the physical address & wayMaskField+strideField*(N−1))として計算され得る。全ての該当ブロックを読み出すために、ロジックは、ゼロから数フィールドの値までの各Nについて、この計算を繰り返し得る。
図示する実施形態によると、キャッシュロジック140は、タグキャッシュインデックスマスク(TCIM)405も含む。TCIM405は、所定のL4セットのためのタグを格納する特定のL3セットを示すために使用され得る。例えば、TCIM値は、L3インデックスを(PhysicalAddress &> TCIM)として計算するために使用されてもよい。ここで、式中、「&>」は、論理AND演算、その後の末尾のゼロを落とすための右シフトを示す。例えば、継続中の例として、L3が8192セット(16MB/(64Bブロック*32ブロックセット))を有する場合、L3セットインデックスは、物理アドレスのビット22〜10として計算され得る。ゆえに、TCIM405は、値0x7FFC00を保持し得る。
図5は、いくつかの実施形態による、L4キャッシュが所定のメモリアドレスに対応するデータを格納するか否かを決定するために、L3キャッシュに格納されるL4タグを調べるための方法を示すフロー図である。方法500は、L4キャッシュロジック135によって、および/またはL3キャッシュロジック115によって実施され得る。それぞれのキャッシュロジックは、図4aおよび図4bに示すように構成されてもよく、上述したようなそれぞれのレジスタを含む。
図示する実施形態によると、本方法は、505のように、ロジックが物理アドレス(PA)を決定するときに開始する。例えば、ロジックは、プログラム命令が所定の物理アドレスへのアクセスを試みていることを決定してもよく、それに応じて、ロジックは、そのアドレスに対応するデータがL4キャッシュに格納されているか否かを決定する必要があり得る。
510において、ロジックは、物理アドレスのタグを決定する。例えば、いくつかの実施形態では、ロジックは、TGM415に格納されるマスク(例えば、PA&TGM)等のタグマスクを使用して物理アドレスをマスクすることによって、タグを決定し得る。
515において、ロジックは、物理アドレスに対応するデータが格納され得るL3セットを決定し得る。例えば、ロジックは、上述したように、TCIMを使用して物理アドレスに対して「&>」演算を実施することによって、特定のL3セットを識別し得る。
ロジックが、検索するタグ(510のように)と、そのタグのために検索するL3セット(515のように)とを識別すると、ロジックは、決定されたL3セット内で検索するために第1のブロックを決定する(520のように)。例えば、いくつかの実施形態では、ロジックは、520に示すように、セット内のどのブロックを、TCWレジスタのウェイマスクフィールドで物理アドレスをマスクすることによって検索するのかを決定し得る(つまり、PA&TCWウェイマスク)。
図示する実施形態によると、ロジックが、調査するための第1のL3キャッシュブロックを決定すると、ロジックは、L3ブロックを読み出し(525のように)、510で決定されたPAタグをL3ブロックが含むか否かを決定する(530のように)。530からの肯定的出口が示すようにブロックがPAタグを含む場合には、キャッシュロジックは、535のように、キャッシュヒットを決定し得る。含まない場合には、530からの肯定的出口が示すように、ロジックは、キャッシュヒットを決定することができない。代わりに、ロジックは、これらのブロックのうち何れかがタグを格納するかを決定するために、PAタグを格納し得るゼロまたはそれ以上の他のL3ブロックを調査し得る。
540において、キャッシュロジックは、さらなるタグが存在するか否かを決定する。例えば、TCWレジスタの数フィールドが、既に検索されたブロックの数を上回る値を保持する場合には、検索するブロックがさらに存在する。上回らない場合には、ロジックは、タグを潜在的に保持することのできる全てのL3ブロックを検索している。
540からの肯定的出口が示すように、ロジックが、タグを保持することのできる全てのL3ブロックを既に検索している場合には、ロジックは、545のように、キャッシュミスが存在するという結論を下し得る。そうでない場合には、検索するL3ブロックがさらに存在する場合(例えば、数フィールドが、既に検索されたブロックよりも上回る)、ロジックは、550のように、検索する次のブロックを決定し得る。例えば、いくつかの実施形態では、ロジックは、過去に読み出されたレジスタの同一性およびTCWレジスタのストライドフィールドに基づいて、このような決定を下してもよい。ロジックは、検索する次のL3キャッシュブロックを決定すると(550のように)、550から525への肯定的フィードバックループが示すように、そのL3キャッシュブロックを検索し得る。
キャッシュロジックがL3キャッシュにタグを位置付ける場合には、ロジックは、タグが発見されたブロックに留意し得る。例えば、ロジックは、セット内のブロックの位置を示すタグオフセットを記録することによって、ブロックに留意し得る。
上述したように、いくつかの実施形態では、L4は、多数のDRAMページとして配置され得る積層DRAMを使用して実装され得る。単一のDRAMページは、多数のL4キャッシュブロックのためのデータを保持し得る。
いくつかの実施形態では、各DRAMページは、物理メモリの隣接セットに対応するキャッシュブロックのグループを格納し得る。各ページにメモリの隣接セットを格納することによって、L4キャッシュは、アプリケーションアクセスパターンにおいて、空間局所性をより良好に活用することができる。
図6は、各ページが物理的に隣接するメモリを格納するDRAMページ上のキャッシュブロックの例示的配置を示す。図示する実施形態によると、L4データ145は、ページ0〜21等の多数のページを含む。各ページは、2KBの容量を有しており、そのため、16個の256バイトキャッシュブロックを格納することができる。
図6において、近接キャッシュブロックは、同じページに一緒に格納される。例えば、最初の8つのセットの各々からの第1のキャッシュブロック(セット0〜7のCB0)はページ0上に格納され、最初の8つのセットの各々からの第2のキャッシュブロック(セット0〜7のCB1)はページ1上に格納されるなどである。したがって、本例では、L4データ145の最初の32ページは、L4キャッシュ135の最初の8つの32ウェイセットのための全てのキャッシュブロックを累積的に格納する。所定のセットのキャッシュブロックを格納するページの隣接セットは、図6のページセット600等のページセットと呼ばれ得る。
上述のタグ関連レジスタに加え、L4キャッシュロジックは、L4データ(例えば、L4データ145)へのアクセスを促進するために使用可能な多数のレジスタを含んでもよい。例えば、図4aに戻ると、このようなレジスタは、キャッシュブロックサイズレジスタ(例えば、CBS430)と、ページセットマスク(例えば、PSM435)と、ページセットオフセット(例えば、PSO440)と、ページアクセスベースオフセット(例えば、PABO445)とを含んでもよい。
いくつかの実施形態では、CBSレジスタ430は、各キャッシュブロックのサイズを示す値を格納し得る。例えば、CBSレジスタ430は、各L4キャッシュブロック(つまり、キャッシュライン)が256バイトを含むことを示す値256を格納し得る。
PSMレジスタ435は、所定の物理アドレスがマッピングするページセットを決定するために使用可能なマスクを格納し得る。例えば、各DRAMページが8つのキャッシュブロックを保持する場合(図6のように)、物理アドレスのビット11〜22は、DRAMページセットを識別するために使用され得る。これらのビットを物理アドレス(例えば、物理アドレス200)から抽出するために、キャッシュロジックは、16進値0x7FF800をPSMレジスタに格納し、その値を使用して物理アドレスをマスクし得る。
キャッシュロジックが、物理アドレスがマッピングするページセットを決定すると(例えば、PSMレジスタ435を使用してアドレスをマスクすることによって)、キャッシュロジックは、PSOレジスタ440を使用して、物理アドレスがマッピングする決定されたページセットにおける特定のDRAMページを決定し得る。最大オフセットがL4連想度(例えば、32)であるため、キャッシュロジックは、log2(L4連想度)によってページセット値をシフトし、次に、タグオフセット(上述のタグアクセス段階中に計算されてもよい)を加え得る。例えば、32ウェイL4キャッシュでは、PSO値は、5であり得る(つまり、log2(32))。
キャッシュロジックが、物理アドレスがマッピングするDRAMページを決定すると(例えば、上述したように)、キャッシュロジックは、PABOレジスタ445を使用して、物理アドレスがマッピングする決定されたページ内の特定のキャッシュブロックを識別し得る。ロジックは、PABOレジスタ内の値を使用して物理アドレスをマスクすることによって、DRAMページへのオフセットを導き得る。例えば、各DRAMページが8つのキャッシュブロックを保持する場合(図6のように)、0x700のPABO値を使用して、物理アドレスのビット8〜10以外の全てのビットをマスクすることによって、ページへのインデックスを決定し得る。
図7は、いくつかの実施形態による、所定の物理アドレスに対応するL4キャッシュブロックを位置付けるための方法を示すフロー図である。図7の方法は、図1の145等のL4キャッシュロジックによって実行され得る。
方法700は、705において、キャッシュロジックが物理アドレスを決定するときに開始する。キャッシュロジックは、所定の物理アドレスへのアクセス(例えば、読み出し/書き込み)を必要とするプログラム命令に応じて、物理アドレスを決定し得る。
710において、L4キャッシュロジックは、物理アドレスにマッピングするDRAMページセットを決定する。DRAMページを決定することは、PSMレジスタ435等のページセットマスクを使用して物理アドレスをマスクすることを含む。715において、キャッシュロジックは、決定されたセット内の、物理アドレスがマッピングする特定のページを決定する。セット内の特定のページを決定することは、PSOレジスタ440内の値により710において計算されたページセットを左シフトすることと、タグアクセス段階中に計算されたタグオフセットを加えることとを含み得る。720において、キャッシュロジックは、所望のブロックが決定されたページ内に格納されるオフセットを決定する。オフセットを決定することは、PABOレジスタ445内の値を使用して「&>」(論理AND、その後の末尾のゼロを落とすための右シフト)を実行することを含み得る。一般化するために、いくつかの実施形態では、物理アドレスPAがマッピングするDRAMページは、[(PA&PSM)<<PSO]+tagOffsetによって得られ、ページへのキャッシュブロックオフセットは、PA&>PABOによって得られる。キャッシュロジックがページおよびオフセットを決定すると(710〜720のように)、キャッシュロジックは、決定されたDRAMページの決定されたオフセットで、キャッシュブロックにアクセスし得る(725のように)。
上述したように、従来のキャッシュは、静的に構成される(例えば、ブロックサイズ、ブロックの数、連想度等)。しかしながら、あらゆるワークロードに最適な構成は1つもない。
種々の実施形態では、現在のワークロードまたは期待されるワークロードに最適な性能を提供するように、L4キャッシュは、動的に再構成可能であり得る。実行時に動的に再構成可能であるキャッシュは、システムの再起動および/または手動の介入を必要とせずに、ソフトウェア(例えば、OS)によって再構成され得る。例えば、システムBIOSは、構成レジスタ400〜445内のデフォルト値を設定することによって、デフォルト構成でキャッシュを開始するように構成され得る。実行中、オペレーティングシステムは、現在のキャッシュ構成の有効性を決定するためにワークロード特性を監視し得る。異なるキャッシュ構成が有益であるとオペレーティングシステムが決定する場合、OSは、以下に説明するように、L4(および/またはL3)キャッシュを再構成し得る。
図8は、いくつかの実施形態による、実行中にL4キャッシュを再構成するための方法のフロー図である。方法800は、プロセッサ上で1つ以上の実行スレッドを実行するオペレーティングシステムによって実施され得る。
方法800は、全てのシステムスレッドの実行をOSがフリーズさせるステップ805で開始する。次に、810において、OSは、メモリバス上でロックを得て、その結果、どのプログラム命令または他の処理コアもバスにアクセスすることができないようにする。815において、OSは、全ての不良キャッシュブロックをメモリに戻して書き込む。キャッシュブロックは、プロセッサがその値を修正したが、その値がメモリに戻ってまだ書き込まれていない場合には、不良とみなされる。820において、OSは、全てのデータをキャッシュから排除する。825において、OSは、新しいキャッシュ構成を反映するために、構成レジスタ内の1つ以上の値を調整する。次に、OSは、バスロックを解除し(830において)、実行を開始する(835において)。
方法800を使用して、オペレーティングシステムは、現在のワークロードまたは期待されるワークロードを反映するために、L4キャッシュの種々の構成パラメータを修正することができる。このようなパラメータは、ブロックサイズ、ブロックの数、連想度、セグメント化または他のパラメータを含み得る。例えば、OSは、アプリケーションが高空間局所性を有するアクセスパターンを示していることを決定する場合に、構成レジスタ400〜445のいくつかの数を修正することによって、L4キャッシュブロックサイズを増加させてもよく、これによって、より多くのデータをL4内にプリフェッチすることによって、高空間アプリケーションの性能を高めることができる。また、L4ブロックサイズを増加させることによって、L4が必要とするタグストレージスペースが少量になることから、L3のサイズも増加させることができる。L3は、高空間局所性を有するアクセスパターンのための改善性能のサイズを増加させることによって、L3データを格納するために回復および使用することができる。別の例では、OSは、L4キャッシュの連想度のレベルを修正してもよい。これによって、コンフリクトミスにおける大幅な増加が生じない場合、L4キャッシュの連想度のレベルを低下させることによって、アクセス待ち時間が低くなり、また、キャッシュ省電力がもたらされ得る。反対に、連想度が高くなると、コンフリクトミスが減少し、結果的に、いくつかのワークロードにおいて性能が上昇し得る。
再構成可能性の別の例では、OSは、セクタ分割キャッシュとしてL4を再構成してもよい。図4bに示すように、L4キャッシュロジック140は、所定のキャッシュブロック内の異なるセクタの有効性を識別するのに必要なビットの数を示すセクタ数を格納するセクタ数レジスタ(例えば、STN425)を含み得る。L4キャッシュがセクタ分割されない場合、セクタ数は、0に設定され得る。しかしながら、OSは、STNレジスタを異なる値で修正することによって多数のセクタを含むように、L4キャッシュを再構成することができる。
いくつかの実施形態では、OSは、種々のプリセット構成に従って、L4キャッシュを再構成するように構成され得る。例えば、図9の表900は、構成レジスタの4つの例示的構成を提供する。各構成は、それぞれのワークロード特性を対象とする。例えば、表900は、デフォルト構成(例えば、BIOSがキャッシュを開始する構成)と、大型キャッシュライン構成(つまり、512Bキャッシュブロック)と、高連想度構成(つまり、64ウェイセットアソシアティブ)と、セクタ分割キャッシュ設計(つまり、2つのセクタ)とを含む。種々の実施形態では、プロセッサは、観測されたワークロードに応じて、これらのデフォルト構成、他のデフォルト構成および/またはカスタム構成を使用し得る。
図10は、いくつかの実施形態による、本明細書で説明する積層DRAMキャッシュを利用するように構成されたコンピュータシステムを示すブロック図である。コンピュータシステム1000は、種々の種類のデバイスの何れかに対応してもよく、これらのデバイスには、パーソナルコンピュータシステム、デスクトップ型コンピュータ、ラップトップ型またはノート型コンピュータ、メインフレームコンピュータシステム、ハンドヘルドコンピュータ、ワークステーション、ネットワークコンピュータ、コンシューマデバイス、アプリケーションサーバ、ストレージデバイス、スイッチ、モデム、ルータ等の周辺機器、または概して任意の種類のコンピューティングデバイスが含まれるが、これらに限定されない。
コンピュータシステム1000は、1つ以上のプロセッサ1060を含んでもよく、これらのプロセッサのうち何れかは、多数の物理コアおよび/論理コアを含み得る。プロセッサ1060のうち何れかは、図1のプロセッサ100に対応してもよく、本明細書で説明するように、SRAM L3キャッシュ1062および積層DRAM L4キャッシュ1064等のデータキャッシュを含み得る。キャッシュ1062および1064の各々は、図1のL3キャッシュ110およびL4キャッシュ135の各々に対応し得る。したがって、L4キャッシュ1064は、本明細書で説明するように、OS1024によって再構成可能であり得る。コンピュータシステム1000は、永続的にデータを格納し得る1つ以上の永続的ストレージデバイス1050(例えば、光学ストレージ、磁気ストレージ、ハードドライブ、テープドライブ、ソリッドステートメモリ等)も含み得る。
図示する実施形態によると、コンピュータシステム1000は、プロセッサ1060のうち1つ以上のプロセッサ上等の多数の処理コア間で共有され得る1つ以上の共有メモリ1010(例えば、キャッシュ、SRAM、DRAM、RDRAM、EDO RAM、DDR 10 RAM、SDRAM、Rambus RAM、EEPROM等のうち1つ以上)を含む。1つ以上のプロセッサ1060、ストレージデバイス1050および共有メモリ1010は、相互接続1040を介して連結され得る。種々の実施形態では、システムは、より少ない構成要素または図10に図示しない追加の構成要素(例えば、ビデオカード、オーディオカード、追加のネットワークインターフェース、周辺機器、ATMインターフェース、Ethernet(登録商標)インターフェース、Frame Relayインターフェース等のネットワークインターフェース、モニター、キーボード、スピーカー等)を含んでもよい。加えて、図10に示す異なる構成要素を組み合わせてもよく、または追加の構成要素にさらに分離してもよい。
いくつかの実施形態では、共有メモリ1010は、プログラム命令1020を格納してもよく、プログラム命令1020は、Java(登録商標)バイトコード等のプラットフォームネイティブバイナリの任意のインタープリタ型言語で、C/C++、Java(登録商標)等の任意の他の言語で、またはそれらの任意の組み合わせでコード化され得る。プログラム命令1020は、1つ以上のアプリケーション1022を実装するためにプログラム命令を含んでよく、アプリケーション1022のうち何れかは、マルチスレッドであり得る。いくつかの実施形態では、プログラム命令1020は、オペレーティングシステム1024を実装するために実行可能な命令を含んでもよく、オペレーティングシステム1024は、本明細書で説明するように、プロセッサ1060上のワークロードを監視するように、ならびにキャッシュ1064および1062を再構成するように構成され得る。また、OS1024は、スケジューリング、ソフトウェア信号処理等の他のソフトウェアサポートも提供してもよい。
図示する実施形態によると、共有メモリ1010は、共有データ1030を含み、共有データ1030は、プロセッサ1060のうち何れかおよび/またはその種々の処理コアによってアクセスされ得る。プロセッサ1060のうち何れかは、共有データ1030の種々の構成要素をローカルキャッシュ(例えば、1062および/または1064)にキャッシュし、キャッシュコヒーレンスプロトコルに従ってメッセージを交換することによって、これらのキャッシュにおいてデータを調整し得る。いくつかの実施形態では、多数のプロセッサ1060および/またはプロセッサ1060の多数の処理コアは、キャッシュ1062、1064および共有メモリ1010に存在し得るオフチップキャッシュへのアクセスを共有し得る。
アプリケーション1022および/またはオペレーティングシステム1024を実装するために使用されるプログラム命令等のプログラム命令1020は、コンピュータ可読記憶媒体上に格納され得る。コンピュータ可読記憶媒体は、機械(例えば、コンピュータ)により可読である形式(例えば、ソフトウェア、処理アプリケーション)で情報を格納するための任意の機構を含み得る。コンピュータ可読記憶媒体には、磁気記憶媒体(例えば、フロッピー(登録商標)ディスク)、光学記憶媒体(例えば、CD−ROM)、磁気光学記憶媒体、読み取り専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、消去可能プログラマブルメモリ(例えば、EPROMおよびEEPROM)、フラッシュメモリ、プログラム命令を格納するために適切な電気的または他の種類の媒体が含まれるが、これらに限定されない。
上述したようなコンピュータ可読記憶媒体は、プログラムによって読み出される命令を格納するためにいくつかの実施形態において使用されてもよく、プロセッサ1060のうち1つ以上のプロセッサを備えるハードウェアを製作するために、直接的または間接的に使用され得る。例えば、命令は、VerilogまたはVHDL等の高レベル設計言語(HDL)においてハードウェア機能性の行動レベルまたはレジスタ転送レベル(RTL)を記述する1つ以上のデータ構造を記述し得る。記述は、ネットリストを生成するために記述を合成し得る合成ツールによって読み出され得る。ネットリストは、プロセッサ500の機能性を表すゲートのセット(例えば、合成ライブラリにおいて規定される)を含み得る。次に、ネットリストは、マスクに適用される幾何学的形状を記述するデータセットを生成するために位置付けられ、かつ経路付けられ得る。次に、マスクは、種々の半導体製作工程において、プロセッサ100および/または1060に対応する1つまたは複数の半導体回路を製造するために使用され得る。代替として、データベースは、要望通りに、ネットリスト(合成ライブラリを含むまたは含まない)またはデータセットであってもよい。
特定の実施形態について上記に説明したが、これらの実施形態は、1つだけの実施形態が特定の特徴について説明される場合であっても、本開示の範囲を限定するように意図されない。本開示に提供される特徴の例は、別途指定のない限り、制限的ではなく例示的であるように意図される。上記説明は、本開示の便益を有する当業者であれば明白であるように、このような代替、修正および均等物を対象とするように意図される。
本開示の範囲は、本明細書において対処する問題の何れかまたは全てが緩和されるか否かに関わらず、本明細書に開示する任意の特徴および特徴の組み合わせ(明示的または暗示的を問わず)、またはそれらの任意の一般化を含む。したがって、新しい請求項が、任意のこのような特徴の組み合わせに対して、本出願(またはそれに対する優先権を主張する出願)の審査中に策定されてもよい。具体的には、添付の請求項を参照すると、従属請求からの特徴は、独立請求の特徴と組み合わせてもよく、それぞれの独立請求からの特徴は、単に添付の請求項に列挙される特定の組み合わせだけでなく、任意の適切な方式で組み合わせてもよい。
Claims (23)
- 第1のデータキャッシュと、
第2のデータキャッシュと、
メモリデータを前記第1のデータキャッシュに格納し、且つ、前記メモリデータに対応するタグデータを、前記第1のデータキャッシュではなく前記第2のデータキャッシュに格納することによって、前記メモリデータを前記第1のデータキャッシュにキャッシュするように構成されたキャッシュロジックと、
を備える、装置。 - 前記第1および第2のデータキャッシュは、プロセッサのデータキャッシュ階層のそれぞれのレベルを実装する、請求項1に記載の装置。
- 前記第1のデータキャッシュにより実装される前記レベルは、前記キャッシュ階層において、前記第2のデータキャッシュにより実装される前記レベルの直下である、請求項2に記載の装置。
- 前記第1のデータキャッシュは、積層メモリを使用して、前記プロセッサ上に実装されている、請求項1に記載の装置。
- 前記積層メモリは、複数のメモリページとして編成されており、
前記キャッシュロジックは、物理システムメモリの隣接する領域に対応するメモリデータを、各メモリページに格納するように構成されている、請求項4に記載の装置。 - 前記第1のデータキャッシュは、実行時に、動的に再構成可能である、請求項1に記載の装置。
- 前記第1のデータキャッシュは、前記第1のデータキャッシュのサイズ、ブロックサイズ、ブロックの数または連想度レベルを修正するために、実行時に、動的に再構成可能である、請求項6に記載の装置。
- 前記第1のデータキャッシュは、オペレーティングシステムが下す決定に応じて、前記オペレーティングシステムによって、実行時に動的に再構成可能であり、前記決定は、前記プロセッサのワークロードの1つ以上の特性に依存する、請求項6に記載の装置。
- 前記第1のデータキャッシュを再構成することは、前記第1のデータキャッシュの1つ以上の構成レジスタを修正することを含み、前記構成レジスタは、前記第1のデータキャッシュの所定のブロックに対応するタグ情報を格納する前記第2のデータキャッシュのブロックを決定するために使用可能である、請求項6に記載の装置。
- 前記再構成することは、オペレーティングシステムが、
前記プロセッサ上で実行する1つ以上のスレッドの実行をフリーズさせることと、
前記プロセッサをシステムメモリに接続するメモリバス上でロックを得ることと、
不良ブロックをメモリに書き戻すことと、
前記第1のデータキャッシュ内のデータを無効にすることと、
前記メモリバス上の前記ロックを解除することと、
前記1つ以上のスレッドの実行を再開することと、
を実行することを含む、請求項6に記載の装置。 - プロセッサが、前記プロセッサによりアクセスされたメモリデータを第1のデータキャッシュにキャッシュすることと、
前記プロセッサが、前記アクセスされたメモリデータのタグ情報を、前記第1のデータキャッシュではなく、第2のデータキャッシュに格納することと、
を含む、方法。 - 前記第1および第2のデータキャッシュは、前記プロセッサのデータキャッシュ階層のそれぞれのレベルを実装し、前記第1のデータキャッシュにより実装される前記レベルは、前記第2のデータキャッシュにより実装される前記レベルの直下である、請求項11に記載の方法。
- 前記第1のデータキャッシュは、積層メモリを使用して、前記プロセッサ上に実装されている、請求項11に記載の方法。
- 前記積層メモリは、複数のメモリページとして編成されており、
前記キャッシュロジックは、物理システムメモリの隣接する領域に対応するメモリデータを、各メモリページに格納するように構成されている、請求項13に記載の方法。 - 前記第1のデータキャッシュは、実行時に、動的に再構成可能である、請求項11に記載の方法。
- 前記第1のデータキャッシュは、前記第1のデータキャッシュのサイズ、ブロックサイズ、ブロックの数または連想度レベルを修正するために、実行時に、動的に再構成可能である、請求項15に記載の方法。
- 前記第1のデータキャッシュは、オペレーティングシステムが下す決定に応じて、前記オペレーティングシステムによって、実行時に、動的に再構成可能であり、前記決定は、前記プロセッサのワークロードの1つ以上の特徴に依存する、請求項15に記載の方法。
- 前記第1のデータキャッシュを再構成することは、前記第1のデータキャッシュの1つ以上の構成レジスタを修正することを含み、前記構成レジスタは、前記第1のデータキャッシュの所定のブロックに対応するタグ情報を格納する前記第2のデータキャッシュのブロックを決定するために使用可能である、請求項15に記載の方法。
- 物理メモリアドレスのタグ値を決定するために、前記データの前記物理メモリアドレスを使用することと、
前記タグ値が前記第2のデータキャッシュによって格納されることを決定することとによって、
前記メモリデータが前記第1のデータキャッシュに格納されることを決定することをさらに含む、請求項11に記載の方法。 - 前記タグ値が前記第2のデータキャッシュによって格納されることを決定することは、
前記第2のデータキャッシュのキャッシュブロックを決定することであって、前記キャッシュブロックは前記物理メモリアドレスに対応し、前記決定することは、前記第2のデータキャッシュの1つ以上の構成レジスタに格納された1つ以上のキャッシュ構成値に依存することと、
前記キャッシュブロックが前記タグ値を格納することを決定することと、を含む、請求項19に記載の方法。 - コンピュータシステム上で実行可能なプログラムによって動作されるデータ構造を備えるコンピュータ可読記憶媒体であって、前記データ構造上で動作する前記プログラムは、前記データ構造により記述された回路を含む集積回路を製作する工程の一部を実施し、前記データ構造に記述された前記回路は、
第1のデータキャッシュと、
第2のデータキャッシュと、を含み、
キャッシュメモリデータを前記第1のデータキャッシュに格納するように構成されており、前記第1のデータキャッシュに格納された前記キャッシュメモリデータにアクセスするために使用可能なタグ情報は、前記第1のデータキャッシュではなく、前記第2のデータキャッシュに格納される、
コンピュータ可読記憶媒体。 - HDL、VerilogまたはGDSIIデータを格納する、請求項21に記載のコンピュータ可読記憶媒体。
- メモリデータを第1のキャッシュのデータアレイに格納し、且つ、前記第1のキャッシュの対応するタグデータを、第1のデータキャッシュのタグアレイではなく、第2のデータキャッシュのデータアレイに格納することによって、前記メモリデータを前記第1のキャッシュにキャッシュすること、
を含む、方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/104,865 US20120290793A1 (en) | 2011-05-10 | 2011-05-10 | Efficient tag storage for large data caches |
US13/104,865 | 2011-05-10 | ||
PCT/US2012/037178 WO2012154895A1 (en) | 2011-05-10 | 2012-05-09 | Efficient tag storage for large data caches |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2014517387A true JP2014517387A (ja) | 2014-07-17 |
Family
ID=46124765
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2014510452A Pending JP2014517387A (ja) | 2011-05-10 | 2012-05-09 | 大型データキャッシュのための効率的なタグストレージ |
Country Status (6)
Country | Link |
---|---|
US (1) | US20120290793A1 (ja) |
EP (1) | EP2707801A1 (ja) |
JP (1) | JP2014517387A (ja) |
KR (1) | KR20140045364A (ja) |
CN (1) | CN103597455A (ja) |
WO (1) | WO2012154895A1 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2017503299A (ja) * | 2014-12-14 | 2017-01-26 | ヴィア アライアンス セミコンダクター カンパニー リミテッド | モードに応じてセットの1つ又は複数を選択的に選択するように動的に構成可能であるマルチモード・セット・アソシエイティブ・キャッシュ・メモリ |
Families Citing this family (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8922243B2 (en) | 2012-12-23 | 2014-12-30 | Advanced Micro Devices, Inc. | Die-stacked memory device with reconfigurable logic |
US9697147B2 (en) | 2012-08-06 | 2017-07-04 | Advanced Micro Devices, Inc. | Stacked memory device with metadata management |
US9201777B2 (en) | 2012-12-23 | 2015-12-01 | Advanced Micro Devices, Inc. | Quality of service support using stacked memory device with logic die |
US9135185B2 (en) * | 2012-12-23 | 2015-09-15 | Advanced Micro Devices, Inc. | Die-stacked memory device providing data translation |
US9170948B2 (en) | 2012-12-23 | 2015-10-27 | Advanced Micro Devices, Inc. | Cache coherency using die-stacked memory device with logic die |
US9065722B2 (en) | 2012-12-23 | 2015-06-23 | Advanced Micro Devices, Inc. | Die-stacked device with partitioned multi-hop network |
US9286948B2 (en) | 2013-07-15 | 2016-03-15 | Advanced Micro Devices, Inc. | Query operations for stacked-die memory device |
CN104809493B (zh) * | 2014-01-28 | 2018-12-04 | 上海复旦微电子集团股份有限公司 | 射频标签、对射频标签进行访问的方法及电子系统 |
CN104809487B (zh) * | 2014-01-28 | 2018-08-24 | 上海复旦微电子集团股份有限公司 | 电子器件及对电子器件进行访问的方法 |
CN104811330A (zh) * | 2014-01-28 | 2015-07-29 | 上海复旦微电子集团股份有限公司 | 网络设备及其配置方法、电子设备、路由器及移动终端 |
CN104809420B (zh) * | 2014-01-28 | 2018-06-12 | 上海复旦微电子集团股份有限公司 | 具有存储功能的器件 |
KR102317248B1 (ko) * | 2014-03-17 | 2021-10-26 | 한국전자통신연구원 | 캐시의 부분연관 재구성을 이용한 캐시 제어 장치 및 캐시 관리 방법 |
US9558120B2 (en) * | 2014-03-27 | 2017-01-31 | Intel Corporation | Method, apparatus and system to cache sets of tags of an off-die cache memory |
US9892053B2 (en) * | 2015-03-24 | 2018-02-13 | Intel Corporation | Compaction for memory hierarchies |
AU2016204068B2 (en) * | 2015-06-17 | 2017-02-16 | Accenture Global Services Limited | Data acceleration |
US20170091099A1 (en) * | 2015-09-25 | 2017-03-30 | Zvika Greenfield | Memory controller for multi-level system memory having sectored cache |
US9996471B2 (en) * | 2016-06-28 | 2018-06-12 | Arm Limited | Cache with compressed data and tag |
US11601523B2 (en) * | 2016-12-16 | 2023-03-07 | Intel Corporation | Prefetcher in multi-tiered memory systems |
US10534545B2 (en) | 2017-12-20 | 2020-01-14 | International Business Machines Corporation | Three-dimensional stacked memory optimizations for latency and power |
US10063632B1 (en) | 2017-12-22 | 2018-08-28 | Engine Media, Llc | Low-latency high-throughput scalable data caching |
US11086526B2 (en) * | 2018-06-07 | 2021-08-10 | Micron Technology, Inc. | Adaptive line width cache systems and methods |
US10970220B2 (en) | 2018-06-26 | 2021-04-06 | Rambus Inc. | Tags and data for caches |
US11138135B2 (en) * | 2018-09-20 | 2021-10-05 | Samsung Electronics Co., Ltd. | Scale-out high bandwidth memory system |
KR102199575B1 (ko) * | 2018-12-26 | 2021-01-07 | 울산과학기술원 | 데이터 일관성을 위한 버퍼 캐시 및 방법 |
CN112039936B (zh) * | 2019-06-03 | 2023-07-14 | 杭州海康威视系统技术有限公司 | 数据传输方法、第一数据处理设备及监控系统 |
WO2022107920A1 (ko) * | 2020-11-20 | 2022-05-27 | 울산과학기술원 | 데이터 일관성을 위한 버퍼 캐시 및 방법 |
US20230236985A1 (en) * | 2022-01-21 | 2023-07-27 | Centaur Technology, Inc. | Memory controller zero cache |
KR102560087B1 (ko) | 2023-02-17 | 2023-07-26 | 메티스엑스 주식회사 | 매니코어 시스템의 메모리 주소 변환 방법 및 장치 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5822755A (en) * | 1996-01-25 | 1998-10-13 | International Business Machines Corporation | Dual usage memory selectively behaving as a victim cache for L1 cache or as a tag array for L2 cache |
US6763432B1 (en) * | 2000-06-09 | 2004-07-13 | International Business Machines Corporation | Cache memory system for selectively storing directory information for a higher level cache in portions of a lower level cache |
US20030046492A1 (en) * | 2001-08-28 | 2003-03-06 | International Business Machines Corporation, Armonk, New York | Configurable memory array |
US6834327B2 (en) * | 2002-02-08 | 2004-12-21 | Hewlett-Packard Development Company, L.P. | Multilevel cache system having unified cache tag memory |
US6988172B2 (en) * | 2002-04-29 | 2006-01-17 | Ip-First, Llc | Microprocessor, apparatus and method for selectively associating store buffer cache line status with response buffer cache line status |
US7934054B1 (en) * | 2005-11-15 | 2011-04-26 | Oracle America, Inc. | Re-fetching cache memory enabling alternative operational modes |
US20080229026A1 (en) * | 2007-03-15 | 2008-09-18 | Taiwan Semiconductor Manufacturing Co., Ltd. | System and method for concurrently checking availability of data in extending memories |
US8417891B2 (en) * | 2008-12-15 | 2013-04-09 | Intel Corporation | Shared cache memories for multi-core processors |
WO2012061048A1 (en) * | 2010-11-04 | 2012-05-10 | Rambus Inc. | Techniques for storing data and tags in different memory arrays |
-
2011
- 2011-05-10 US US13/104,865 patent/US20120290793A1/en not_active Abandoned
-
2012
- 2012-05-09 EP EP12722038.2A patent/EP2707801A1/en not_active Withdrawn
- 2012-05-09 KR KR1020137031457A patent/KR20140045364A/ko not_active Application Discontinuation
- 2012-05-09 JP JP2014510452A patent/JP2014517387A/ja active Pending
- 2012-05-09 WO PCT/US2012/037178 patent/WO2012154895A1/en active Application Filing
- 2012-05-09 CN CN201280027342.1A patent/CN103597455A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2017503299A (ja) * | 2014-12-14 | 2017-01-26 | ヴィア アライアンス セミコンダクター カンパニー リミテッド | モードに応じてセットの1つ又は複数を選択的に選択するように動的に構成可能であるマルチモード・セット・アソシエイティブ・キャッシュ・メモリ |
Also Published As
Publication number | Publication date |
---|---|
US20120290793A1 (en) | 2012-11-15 |
WO2012154895A1 (en) | 2012-11-15 |
EP2707801A1 (en) | 2014-03-19 |
KR20140045364A (ko) | 2014-04-16 |
CN103597455A (zh) | 2014-02-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2014517387A (ja) | 大型データキャッシュのための効率的なタグストレージ | |
US9384134B2 (en) | Persistent memory for processor main memory | |
US20120221785A1 (en) | Polymorphic Stacked DRAM Memory Architecture | |
US20210406170A1 (en) | Flash-Based Coprocessor | |
EP2642398B1 (en) | Coordinated prefetching in hierarchically cached processors | |
US9075730B2 (en) | Mechanisms to bound the presence of cache blocks with specific properties in caches | |
US9292447B2 (en) | Data cache prefetch controller | |
US7516275B2 (en) | Pseudo-LRU virtual counter for a locking cache | |
US20120311269A1 (en) | Non-uniform memory-aware cache management | |
US8185692B2 (en) | Unified cache structure that facilitates accessing translation table entries | |
KR20060049710A (ko) | 칩 멀티-프로세서의 공유 캐시를 분할하기 위한 장치 및방법 | |
US20100325374A1 (en) | Dynamically configuring memory interleaving for locality and performance isolation | |
WO2009005694A1 (en) | Cache memory having configurable associativity | |
US20170083444A1 (en) | Configuring fast memory as cache for slow memory | |
Gaur et al. | Base-victim compression: An opportunistic cache compression architecture | |
WO2022012307A1 (zh) | 数据访问的方法和处理器系统 | |
KR101967857B1 (ko) | 다중 캐시 메모리를 구비한 지능형 반도체 장치 및 지능형 반도체 장치에서의 메모리 접근 방법 | |
KR20190032585A (ko) | 멀티 스레드 모드에서 전력 감소를 위한 방법 및 장치 | |
US20220012178A1 (en) | Last-level collective hardware prefetching | |
WO2015002632A1 (en) | Lookup of a data structure containing a mapping between a virtual address space and a physical address space | |
EP4443305A1 (en) | Method for storing and accessing a data operand in a memory unit | |
US20240220409A1 (en) | Unified flexible cache | |
US20240070073A1 (en) | Page cache and prefetch engine for external memory | |
Sun et al. | Large Page Address Mapping in Massive Parallel Processor Systems | |
CN114764307A (zh) | 计算机系统及其数据管理方法 |