JP2019528532A - データキャッシュ領域プリフェッチャ - Google Patents

データキャッシュ領域プリフェッチャ Download PDF

Info

Publication number
JP2019528532A
JP2019528532A JP2019510348A JP2019510348A JP2019528532A JP 2019528532 A JP2019528532 A JP 2019528532A JP 2019510348 A JP2019510348 A JP 2019510348A JP 2019510348 A JP2019510348 A JP 2019510348A JP 2019528532 A JP2019528532 A JP 2019528532A
Authority
JP
Japan
Prior art keywords
access
prefetcher
line
area
bit
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.)
Granted
Application number
JP2019510348A
Other languages
English (en)
Other versions
JP7308745B2 (ja
Inventor
ダブリュ. マッコーリー ドナルド
ダブリュ. マッコーリー ドナルド
イー. ジョーンズ ウィリアム
イー. ジョーンズ ウィリアム
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of JP2019528532A publication Critical patent/JP2019528532A/ja
Application granted granted Critical
Publication of JP7308745B2 publication Critical patent/JP7308745B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0877Cache access modes
    • G06F12/0886Variable-length word access
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0891Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0846Cache with multiple tag or data arrays being simultaneously accessible
    • G06F12/0848Partitioned cache, e.g. separate instruction and operand caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1021Hit rate improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6024History based prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6026Prefetching based on access pattern detection, e.g. stride based prefetch

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

データキャッシュ領域プリフェッチャは、データキャッシュミスが発生した場合に領域を生成する。各領域は、各データキャッシュミスに近接する所定範囲のデータラインを含み、関連する命令ポインタレジスタ(RIP)でタグ付けされている。データキャッシュ領域プリフェッチャは、後続のメモリ要求を、既存の領域毎の所定範囲のデータラインと比較する。一致する毎に、データキャッシュ領域プリフェッチャは、アクセスビットを設定し、設定したアクセスビットに基づいて擬似ランダムアクセスパターンを識別しようと試みる。データキャッシュ領域プリフェッチャは、擬似ランダムアクセスパターンが発生する頻度を追跡するために、適切なカウンタをインクリメント又はデクリメントする。擬似ランダムアクセスパターンが頻繁に発生する場合、データキャッシュ領域プリフェッチャは、同じRIP及びパターンを有するメモリ要求が処理される場合に、当該RIPの擬似ランダムアクセスパターンに従ってデータラインをプリフェッチする。【選択図】図2

Description

(関連出願の相互参照)
本願は、2016年8月19日に出願された米国仮特許出願第62/377,314号、2016年10月13日に出願された米国特許出願第15/292,777号及び2016年11月25日に出願された欧州特許出願第EP16200806.4号の利益を主張し、これらの内容は、完全に記載されているかのように、参照により本明細書に組み込まれる。
数多くの処理デバイスは、メモリに記憶されている情報にアクセスするのに必要な平均時間を短縮するために、キャッシュを利用する。キャッシュは、比較的頻繁に使用されることが予想される命令又はデータのコピーを記憶する小型で高速なメモリである。例えば、キャッシュを使用するプロセッサの一種である中央処理装置(CPU)は、一般に、キャッシュ又はキャッシュメモリ要素の階層に関連付けられている。グラフィック処理装置等の他のプロセッサもキャッシュシステムを実装している。CPUによって使用されると予想される命令又はデータは、(比較的大きくて遅い)メインメモリからキャッシュに移動される。CPUがメインメモリ内の位置を読み書きする必要がある場合、CPUは、先ず、所望のメモリ位置のコピーがキャッシュメモリに含まれているか否かを確かめるためにチェックする。この位置がキャッシュに含まれている場合(キャッシュヒット)、CPUは、キャッシュメモリ位置におけるコピーに対して読み出し又は書き込み動作を実行することができる。この位置がキャッシュに含まれていない場合(キャッシュミス)、CPUは、メインメモリに記憶されている情報にアクセスする必要があり、場合によっては、当該情報をメインメモリからコピーして、キャッシュに追加することができる。キャッシュを適切に設定及び操作すると、メモリアクセスの平均レイテンシを、メインメモリのレイテンシよりも下回り、キャッシュアクセスのレイテンシに近い値まで短くすることができる。
キャッシュのラインの情報が要求される前に、プリフェッチャを使用して、当該ラインに情報が入力される。プリフェッチャは、プロセッサで実行されているアプリケーションに関連するメモリ要求を監視し、監視した要求を使用して、メモリ領域内の特定のメモリアドレスのシーケンス(一般にストリームと呼ばれる)にプロセッサがアクセスする可能性があると判別又は予測する。プリフェッチャは、複数のストリームを追跡し続け、異なるストリームのデータを個別にプリフェッチする。
添付の図面と共に例として与えられる以下の説明から、より詳細な理解が得られるであろう。
特定の実施形態による、データキャッシュ領域プリフェッチャを使用するシステムのハイレベルブロック図である。 特定の実施形態による、データキャッシュ領域プリフェッチャのハイレベルブロック図である。 特定の実施形態による、データキャッシュ領域プリフェッチャ用のラインエントリテーブル構造内のラインエントリのブロック図及びフロー図である。 特定の実施形態による、データキャッシュ領域プリフェッチャ内の領域履歴テーブル構造のフロー図である。 特定の実施形態による、データキャッシュ領域プリフェッチャと共に使用する方法の例示的なフロー図である。 特定の実施形態による、データキャッシュ領域プリフェッチャと共に使用する方法の例示的なフロー図である。 特定の実施形態による、データキャッシュ領域プリフェッチャと共に使用する方法の例示的なフロー図である。 1つ以上の開示された実施形態を実装することができる例示的なデバイスのブロック図である。
本明細書では、データキャッシュ領域プリフェッチャについて説明する。データキャッシュ領域プリフェッチャは、(例えば、ロード命令又はストア命令に応じて)プログラムによって生成されたキャッシュアクセスパターンを認識し、データに対する将来の要求の可能性を予想して当該データをメインメモリからデータキャッシュにコピーするプリフェッチ要求を発行する。特に、データキャッシュ領域プリフェッチャは、所定の命令がデータラインにアクセスした後に、最初にアクセスされたデータラインの所定の範囲内に存在する他のデータラインがその後にアクセスされるパターンを検出しようと試みる。最初にアクセスされたデータラインを含むデータラインの所定の範囲が領域と呼ばれ、各領域は、命令ポインタレジスタ(RIP)でタグ付けされる。各領域に関連するパターンは、同じRIPによる後続のアクセスのデータラインをプリフェッチするために使用される。
図1は、特定の実施形態による、データキャッシュ領域プリフェッチャ160を使用する処理システム100のハイレベルブロック図である。処理システム100は、メインメモリ110に記憶されている命令又はデータにアクセスするように構成されたプロセッサ105を含む。プロセッサ105は、命令を実行し又はデータを操作するために使用される少なくとも1つのコア115と、階層(又は、マルチレベル)型のキャッシュシステム117と、を含み、キャッシュシステム117は、選択された命令又はデータをキャッシュシステム117に記憶することによって、命令又はデータへのアクセスを高速化する。説明する処理システム100は例示であり、本開示の範囲から逸脱することなく他のアーキテクチャ及び構成を実装することができる。
キャッシュシステム117は、メインメモリ110に記憶されている命令又はデータのコピーを記憶するレベル2(L2)キャッシュ120を含む。一実施形態では、L2キャッシュ120は、メインメモリ110に対して16ウェイアソシアティブであるため、メインメモリ110内の各ラインは、L2キャッシュ120内の16の特定のライン(通常、「ウェイ」と呼ばれる)との間でコピーすることができる。L2キャッシュ120は、メインメモリ110と比較して小型で高速なメモリ要素を使用して実装される。L2キャッシュ120は、(メインメモリ110と比較して)論理的又は物理的にコア115の近くに配置されるため、コア115とL2キャッシュ120との間では、より迅速又はより短いレイテンシで情報を交換することができる。
また、キャッシュシステム117は、メインメモリ110又はL2キャッシュ120に記憶されている命令又はデータのコピーを記憶するL1キャッシュ125を含む。L1キャッシュ125は、L2キャッシュ120と比較して小型で高速なメモリ要素を使用して実装されているので、L1キャッシュ125のラインに記憶されている情報を、プロセッサ105によって迅速に取得することができる。また、L1キャッシュ125は、(メインメモリ110及びL2キャッシュ120と比較して)論理的又は物理的にコア115の近くに配置されるため、コア115とL1キャッシュ125との間では、(メインメモリ110とL2キャッシュ120との間の通信と比較して)より迅速又はより短いレイテンシで情報を交換することができる。一実施形態では、L0キャッシュ、L1キャッシュ、L2キャッシュ及びL3キャッシュ等の要素を含む異なるマルチレベルのキャッシュが使用される。いくつかの実施形態では、上位レベルのキャッシュは、1つ以上の下位レベルのキャッシュを含み、これにより、下位レベルのキャッシュ内のラインは、包含的な上位レベルのキャッシュにも記憶されている。
L1キャッシュ125は、L1−Iキャッシュ130及びL1−Dキャッシュ135と呼ばれる、命令及びデータを記憶するレベル1(L1)キャッシュに分けられている。L1キャッシュ125を、命令のみを記憶するL1−Iキャッシュ130と、データのみを記憶するL1−Dキャッシュ135と、に分離又は分割することによって、これらのキャッシュの各々を、命令又はデータを要求する可能性があるエンティティの近くに配置することができる。結果として、この構成は、競合、ワイヤ遅延を低減し、命令及びデータに関連する全体的なレイテンシを短縮する。一実施態様では、置換ポリシーは、L1−Iキャッシュ130内のラインをL2キャッシュ120からの命令に置き換え、L1−Dキャッシュ135内のラインをL2キャッシュ120からのデータに置き換えることを指示する。
また、プロセッサ105は、データを、キャッシュ125,130,135のうち1つ以上のキャッシュのデータラインに配置するために使用される、ストリームプリフェッチャ150とデータキャッシュ領域プリフェッチャ160とを含む。ストリームプリフェッチャ150及びデータキャッシュ領域プリフェッチャ160は、プロセッサ105内の別々の要素として示されているが、ストリームプリフェッチャ150及びデータキャッシュ領域プリフェッチャ160は、他の要素の一部として実装することができる。一実施形態では、ストリームプリフェッチャ150及びデータキャッシュ領域プリフェッチャ160は、ハードウェアプリフェッチャである。一実施形態では、ストリームプリフェッチャ150及びデータキャッシュ領域プリフェッチャ160は、コア115で実行されているアプリケーションに関連するメモリ要求を監視する。例えば、ストリームプリフェッチャ150及びデータキャッシュ領域プリフェッチャ160は、キャッシュヒット又はキャッシュミスを生じさせるメモリ要求(例えば、データラインアクセス)を監視し、キャッシュヒット又はキャッシュミスは、ミスアドレスバッファ(MAB)145に記録される。ストリームプリフェッチャ150及びデータキャッシュ領域プリフェッチャ160の両方は、コア115が、メインメモリ110内の特定のメモリアドレスのシーケンス(名目上、ストリームと呼ばれる)にアクセスする可能性があると判別又は予測するが、各プリフェッチャは、各アクセスを異なる方法で処理する。
ストリームプリフェッチャ150は、コア115による2回以上の連続的且つシーケンシャルなメモリアクセスを検出する。シーケンスの方向は、シーケンシャルなメモリアクセスの時系列に基づいて決定され、コア115は、この方向を使用して、現在又は以前のシーケンシャルなメモリアクセスに基づいて推定すること(extrapolating)によって、将来のメモリアクセスを予測する。次に、ストリームプリフェッチャ150は、予測された位置の情報をメインメモリ110からフェッチし、この情報を適切なキャッシュに記憶して、コア115によって要求される前に当該情報を利用可能な状態にする。
概して、データキャッシュ領域プリフェッチャ160は、データキャッシュミスが発生した場合に領域を生成する。各領域は、各データキャッシュミスに近接する所定範囲のデータラインを含み、関連するRIPでタグ付けされている。次に、データキャッシュ領域プリフェッチャ160は、後続のメモリ要求を、既存の領域毎に所定範囲のデータラインと比較する。一致する毎に、データキャッシュ領域プリフェッチャ160は、アクセスビットを設定し、設定したアクセスビットに基づいて、擬似ランダムアクセスパターンを識別しようと試みる。次いで、データキャッシュ領域プリフェッチャ160は、擬似ランダムアクセスパターンが発生する頻度を追跡するために、適切なカウンタをインクリメント又はデクリメントする。(例えば、予め設定された閾値に基づいて)擬似ランダムアクセスパターンが頻繁に発生する場合、データキャッシュ領域プリフェッチャ160は、同じRIPを有するメモリ要求が処理される場合に、当該RIPの擬似ランダムアクセスパターンに従ってデータラインをプリフェッチする。
一実施形態では、ストリームプリフェッチャ150とデータキャッシュ領域プリフェッチャ160との間には、フィードバックが存在する。このフィードバックは、ストリームプリフェッチャ150を抑制するために使用される。例えば、フラグを有効にすることによって、データキャッシュ領域プリフェッチャ160は、本明細書で後述するように、ストリームプリフェッチャ150が、保留中のデータキャッシュ領域プリフェッチ要求を有する新たに生成されたストリームに対して作用するのをブロックすることができる。
図2は、特定の実施形態による、データキャッシュ領域プリフェッチャ200のハイレベルブロック図である。データキャッシュ領域プリフェッチャ200は、領域履歴テーブル210(トレーニング構造によって占められるバッキング構造である)に接続されたラインエントリテーブル205(トレーニング構造である)を含む。本明細書で説明するテーブルエントリの数及びフィールドのサイズは、例示的なものに過ぎず、本開示の範囲から逸脱することなく他の値を使用することができる。
ラインエントリテーブル205は、所定数のラインエントリ215を含む。一実施形態では、ラインエントリテーブル205は、32個のエントリを含む。各ラインエントリ215は、RIPフィールド220と、データラインのアドレスフィールド222と、アクセスビットフィールド224と、第2ラインアクセスビットフィールド226と、を含む。一実施形態では、RIPフィールド220は、20ビットのフィールドであり、アドレスフィールド222は、44ビットのフィールドであり、アクセスビットフィールド224は、11ビットのフィールドであり、第2ラインアクセスビットフィールド226は、3ビットのフィールドである。一実施形態では、ラインエントリテーブル205は、連想メモリ(CAM)を使用して実装される。
領域履歴テーブル210は、RIP[19:0]及びAddr[5:4](後者は、オフセットとも呼ばれる)の9ビットのハッシュを使用して一実施形態においてインデックスされた所定数の領域履歴エントリ230を含む。一実施形態では、領域履歴テーブル210は、512個のエントリを含む。各領域履歴テーブルエントリ230は、アクセスビット/カウンタフィールド238を有し、アクセスビット/カウンタフィールド238内の各ビット(ビット0を除く)は、2ビットのカウンタを有する。一実施形態では、アクセスビット/カウンタフィールド238は、それぞれ2ビットのカウンタを有する11個のエントリで構成された22ビットの2次元配列又はデータ構造である。一実施形態では、2ビットのカウンタは、アップ/ダウンカウンタである。
プロセッサからのメモリ要求又はデータラインアクセスは、データキャッシュミス時にラインエントリテーブル205に挿入され、領域が生成される。各領域のRIPフィールド220及びアドレスフィールド222には、ミスが発生したメモリ要求の各々に関連するRIP及びアドレスが配置される。各領域は、データキャッシュミスが発生したメモリ要求に近接する所定範囲のデータラインによって定義される。アクセスビットフィールド224は、所定範囲のデータライン内のデータライン毎のビットを含む。アクセスビットフィールド224内の所定の位置又はビットは、ホームポジション又はホームビットとして指定される。ホームビットは、データキャッシュミスが発生し、特定の領域を生成したメモリ要求に対応する。例示的な実施形態では、所定範囲は10データラインであり、当該範囲は、ホームビットから+6データライン及び−4データラインに及び、ホームビットは、ビット0又はポジション0である。後続のメモリ要求が所定範囲のデータラインに存在するかどうかを判別するために、後続のメモリ要求が(例えば、CAMを使用して)比較される。対応するビットは、所定範囲内の後続のメモリ要求毎に、領域内のアクセスビットフィールド224に設定される。
アクセスビットをアクセスビットフィールド224に設定することによって、データラインを潜在的にプリフェッチするために領域履歴テーブル210によって使用される疑似ランダムパターンを確立する。特に、ラインエントリテーブル205内のメモリ要求が、期限切れになり、アクセスビットフィールド224内のいくつかのビットの設定によって確立された有効なパターンを有する場合、当該メモリ要求は、領域履歴テーブル210にエビクトされ、上述したフィールドが占められる。第2ラインアクセスビットフィールド226は、擬似ランダムパターンが2つ以上の連続的且つシーケンシャルなメモリアクセス(すなわち、無効なパターン)を示すかどうかを判別するために使用され、この場合、領域は、領域履歴テーブル210に移動されず、図1に示すストリームプリフェッチャ150によって処理される。
領域履歴テーブル210は、所定のRIP及びオフセットを有するメモリ要求の後に、確立されたパターンに従って周囲のデータラインへの要求が続いた回数を追跡する。追跡情報は、アクセスビット/カウンタフィールド238内の2ビットのカウンタを使用して保持される。一実施形態では、領域履歴テーブルエントリ230を更新する場合、アクセスビット/カウンタフィールド238内の個々の2ビットのアップ/ダウンカウンタがインクリメント(ラインエントリ内の対応するアクセスビットが1の場合)又はデクリメント(ラインエントリ内の対応するアクセスビットが0の場合)される。デクリメントする場合、これらの2ビットのアップ/ダウンカウンタは、0が最小である。インクリメントする場合、これらの2ビットのアップ/ダウンカウンタは、3が最大である。後続のデータキャッシュミスが新たなラインエントリを生成する場合、関連するRIP及びオフセットを使用して領域履歴テーブル210内の1つのエントリが選択され、次に、アクセスビット/カウンタフィールド238内の2ビットのカウンタが、閾値(例えば、2)と比較することによってプリフェッチが適切であるかどうかを判別するために使用される。プリフェッチが保証された場合、適切な情報又は関連する情報が領域プリフェッチ生成ユニット250に送信されて、プリフェッチ要求が生成され、次に、プリフェッチ要求が、プリフェッチ要求先入れ先出し(FIFO)バッファ(図示省略)に送信される。
図3は、特定の実施形態による、データキャッシュ領域プリフェッチャ用のラインエントリテーブル構造内のラインエントリ300のブロック図及びフロー図である。各ラインエントリ300は、RIPフィールド305と、データキャッシュミスのアドレスフィールド310と、アクセスビットフィールド315と、第2(2nd)ラインアクセスビットフィールド320と、を含む。一実施形態では、RIPフィールド305は、20ビットのフィールドであり、アドレスフィールド310は、44ビットのフィールドであり、アクセスビットフィールド315は、11ビットのフィールドであり、第2ラインアクセスビットフィールド320は、3ビットのフィールドである。一実施形態では、アクセスビットフィールド315は、+6データラインから−4データラインまでのデータキャッシュ領域プリフェッチャの範囲を表しており、ビット0は、データキャッシュミス(上述したように「ホーム」と指定される)に関連するデータライン又はアドレスである。
第2ラインアクセスビットフィールド320は、ホームに対する2つ以上の連続的且つシーケンシャルなメモリアクセスが存在するかどうかを判別するために使用される。すなわち、第2ラインアクセスビットフィールド320は、シーケンシャル(ストライド=+1又は−1のキャッシュライン)ストリームと、他の非シーケンシャルアクセスパターンと、を区別するために使用される。シーケンシャルストリームは、そのアクセスが次のシーケンシャル(+/−1)キャッシュラインに対するものである場合、ストリーム/領域に対する2番目のアクセスでトレーニングを行う。ストリームプリフェッチャは、領域履歴テーブルから除外されたシーケンシャルストリームを処理する。特に、第2ラインアクセスビット+1及び−1が設定されている場合、対応するストリーム又は関連領域は、領域履歴テーブルに移動されない。領域への2番目のアクセスが次のシーケンシャル(+/−1)キャッシュラインに対するものではない場合、第2ラインアクセスビット0が設定される。第2ラインアクセスビット0は、領域に対する2番目のアクセスが次のシーケンシャル(+/−1)キャッシュラインに対するものではなかったことを示している。非シーケンシャルなアクセスパターンを有するラインエントリは、領域履歴テーブルに含まれる候補である。
動作上、データキャッシュ(Dc)ミスステータスが、ラインエントリテーブルへの入力として使用される(ステップ350)。本明細書で説明するように、既存の領域を更新しないデータキャッシュミスの各々は、新たなラインエントリ300に入力される新たな領域を生成し、適切なフィールドが、本明細書で説明するように入力される(ステップ352)。古いラインエントリ300は、最長未使用時間(least-recently-used)置換アルゴリズムに従ってエビクトされる。古いラインエントリ300内のアクセスビットフィールド315及び第2ラインアクセスビットフィールド320に有効なパターンが存在する場合、古いラインエントリ300を使用して領域履歴テーブルが更新される(ステップ354)。
図4は、特定の実施形態による、データキャッシュ領域プリフェッチャ内の領域履歴テーブル405のフロー図400である。領域履歴テーブル405は、RIPであって、オフセットインデックスされた複数の領域履歴テーブルエントリ410を含む。各領域履歴テーブルエントリ410は、内部のビット毎に2ビットのカウンタを含むアクセスビット/カウンタフィールド416を有している。一実施形態では、アクセスビット/カウンタフィールド416は、それぞれ2ビットのカウンタを有する11個のエントリで構成された22ビットの2次元配列又はデータ構造である。アドレスオフセット414(アドレスビット5及び4を有するオクトワードのオフセットとして示されている)を使用して、複数の異なるラインアクセスパターンを領域履歴テーブル405に記憶することができ、これにより、64バイトのキャッシュライン内の何れの位置に最初のデータラインアクセス(すなわち、ホームビット)が存在するかに基づいて、所定のRIPに対して複数の異なるデータラインアクセスパターンをプリフェッチすることができる。領域内の最初のデータアクセスがデータラインの始め又は終わりに近い場合、追加のデータライン又は異なるパターンのデータラインのプリフェッチを必要とする場合がある。より具体的には、領域プリフェッチャは、システムメモリの領域に対してプログラムによって行われたロード/ストアメモリアクセスの擬似ランダムシーケンスを追跡する。これらのロード/ストアメモリアクセスは、通常、4、8又は16バイトであり、通常64バイトであるキャッシュラインよりもはるかに小さい。領域プリフェッチャは、これらのロード/ストアメモリアクセスを、領域を生成した最初のメモリアクセスキャッシュミスを囲む64Bのキャッシュラインの第2のより粗い擬似ランダムパターンにマッピングする。この第2のより粗い擬似ランダムパターンは、ラインアクセスビットである。
ロード/ストアメモリアクセスの擬似ランダムシーケンスが一貫していると仮定しても、同じアドレスオフセットがメモリ領域からメモリ領域へと使用され、これらの4、8又は16バイトのメモリアクセスの64Bキャッシュラインへのマッピング(ラインアクセスビット)は、領域を生成した最初のメモリアクセスキャッシュミスがキャッシュラインの始め、中間又は終わりの何れに対するものであったかに応じて、異なる。
最初のメモリアクセスのアドレスオフセット414(Addr[5:4])を、領域履歴テーブルにアクセスするのに使用されるインデックスに含めることによって、64Bのキャッシュライン境界に対するシステムメモリ内の領域のアライメントに基づいて、複数の異なるラインアクセスパターンを、同じRIPについて領域履歴テーブルに記憶することが可能になる。
動作上、古いラインエントリ300がラインエントリテーブルからエビクトされ、古いラインエントリ300内のアクセスビットフィールド315及び第2ラインアクセスビットフィールド320に有効なパターンが存在する場合、古いラインエントリ300を使用して、領域履歴テーブルが更新される(ステップ420)。特に、古いラインエントリ300の所定のRIP及びアドレスオフセットは、領域履歴テーブル405から領域履歴テーブルエントリ410を読み出すためのインデックスとして使用される。アクセスビット/カウンタフィールド416内の2ビットのカウンタは、所定のRIP及びアドレスオフセットが確立されたパターンに従う回数を追跡するために使用される。古いラインエントリ300のアクセスビットフィールド315内の各ビットが調べられる。ラインアクセスビットフィールド315が1である場合、データキャッシュ領域プリフェッチャは、領域履歴ラインテーブル410のアクセスビット/カウンタフィールド416内の対応する2ビットのカウンタをインクリメントする。ラインアクセスビットフィールド315が0である場合、データキャッシュ領域プリフェッチャは、領域履歴ラインテーブル410のアクセスビット/カウンタフィールド416内の対応する2ビットのカウンタをデクリメントする。
後続のデータキャッシュミスが新たなラインエントリ300を生成する場合、新たなラインエントリ300に関連するRIP及びアドレスオフセットは、領域履歴テーブル405から領域履歴テーブルエントリ410を読み出すためのインデックスとして使用される。次に、データキャッシュ領域プリフェッチャは、アクセスビット/カウンタフィールド416内の2ビットのカウンタの各々を調べる。カウンタが閾値(例えば、2)を超える場合、データキャッシュ領域プリフェッチャは、対応するキャッシュラインオフセットに対する領域プリフェッチ要求を生成する(ステップ424)。これらのキャッシュラインオフセットは、新たなラインエントリ300のホームアドレスに対するものである。生成された領域プリフェッチ要求は、データキャッシュプリフェッチ要求キューに配置される(ステップ426)。
図5A1及び図5A2は、特定の実施形態による、データキャッシュ領域プリフェッチャと共に使用する方法の例示的なフロー図500である。データキャッシュ領域プリフェッチャは、データキャッシュミス発生時にメモリ要求を受信する(ステップ505)。メモリ要求は、ラインエントリテーブル内の全てのラインエントリと比較される(ステップ510)。一致がある場合、ラインエントリテーブル内に適切なビットが設定される(ステップ512)。一致がない場合、新たな領域が生成され、ラインエントリテーブル内のラインエントリに入力される(ステップ515)。この時点で、1)図5A1及び図5A2で説明するように領域履歴テーブルを更新すること、及び、2)図5Bで説明するように領域プリフェッチ要求を生成すること(図5A1において「B」で示される)、という2つの異なるプロセス分岐が発生する。さらに、図5A1及び図5A2を参照すると、ホームビットがメモリ要求のアドレスに設定され、RIPがラインエントリに記憶される(ステップ517)。後続のメモリ要求を調べて、これらがメモリ要求の所定範囲内に存在するかどうかが判別される(ステップ519)。後続のメモリ要求が所定範囲内に存在する場合、特定のラインアクセスビットが特定の領域のラインエントリに設定される(ステップ521)。後続のメモリ要求が所定範囲内に存在しない場合、新たな領域が生成される(ステップ522)。
新たなラインエントリが生成されている場合、所定の時点で各ラインエントリが期限切れになる(ステップ523)。この時点で、ラインアクセスビットが調べられ、何れのパターンが存在するかが判別される(ステップ525)。検出されたパターンが連続的且つシーケンシャルである場合(例えば、ホームビットに対して昇順または降順のパターンが存在する場合)、ラインエントリが破棄される(ステップ527)。一実施形態では、データキャッシュ領域プリフェッチャは、((第2ラインアクセスビット[+1]及びラインアクセスビット[+6:+1](全て1に設定される))が1である)、又は、((第2ラインアクセスビット[−1]且つラインアクセスビット[−1:−4](全て1に設定される))が1である)場合に、これらのラインエントリを破棄する。検出されたパターンが擬似ランダムである場合(ステップ529)(例えばビット6、2及び3が設定されている場合)、ラインエントリを、メモリ要求のRIP及びアドレスオフセットをインデックスとして用いて領域履歴テーブルに移動するために準備する(ステップ531)。すなわち、ラインエントリのRIP及びアドレスオフセットは、領域履歴テーブルからエントリを読み出すためのインデックスとして使用される。ラインエントリ内の対応するアクセスビットが1に設定されている場合、データキャッシュ領域プリフェッチャは、特定のカウンタをインクリメントする(ステップ537)。ラインエントリ内の対応するアクセスビットが0に設定されている場合、データキャッシュ領域プリフェッチャは、特定のカウンタをデクリメントする。検出されたパターンが擬似ランダムではない場合、ラインエントリは、他の処理を行う他のプリフェッチャ又はモジュールによって処理される(ステップ532)。
ここで、図5Bを参照すると、新たなエントリのRIP及びオフセット(図4において、アドレスビット5及び4を有するオクトワードオフセットとして示されている)を使用して、領域履歴テーブルを読み込む(ステップ550)。次に、データキャッシュ領域プリフェッチャは、領域履歴テーブルエントリのアクセスフィールド内の2ビットカウンタの各々を調べる(ステップ555)。カウンタが閾値を超える場合、データキャッシュ領域プリフェッチャは、領域プリフェッチ要求を生成する(ステップ570)。生成された領域プリフェッチ要求は、データキャッシュプリフェッチ要求キューに配置される(ステップ575)。カウンタが閾値を上回っていない場合、処理が続けられる(ステップ560)。つまり、この時点では、領域プリフェッチ要求が生成されない。
図6は、1つ以上の開示された実施形態のうち1つ以上の部分を実装することができる例示的なデバイス600のブロック図である。デバイス600は、例えば、ヘッドマウントデバイス、サーバ、コンピュータ、ゲームデバイス、ハンドヘルドデバイス、セットトップボックス、テレビ、携帯電話又はタブレットコンピュータを含む。デバイス600は、プロセッサ602と、メモリ604と、ストレージ606と、1つ以上の入力デバイス608と、1つ以上の出力デバイス610と、を含む。また、デバイス600は、入力ドライバ612及び出力ドライバ614をオプションで含むことができる。デバイス600は、図6に示されていない追加のコンポーネントを含んでもよいことを理解されたい。
プロセッサ602は、中央処理装置(CPU)、グラフィックス処理装置(GPU)、同じダイ上に配置されたCPU及びGPU、又は、1つ以上のプロセッサコアを含み、各プロセッサコアはCPU又はGPUであってもよい。メモリ604は、プロセッサ602と同じダイ上に配置されてもよいし、プロセッサ602とは別に配置されてもよい。メモリ604は、例えば、ランダムアクセスメモリ(RAM)、ダイナミックRAM若しくはキャッシュ等の揮発性又は不揮発性メモリを含むことができる。
ストレージ606は、例えば、ハードディスクドライブ、ソリッドステートドライブ、光ディスク若しくはフラッシュドライブ等の固定又は取り外し可能なストレージデバイスを含むことができる。入力デバイス608は、キーボード、キーパッド、タッチスクリーン、タッチパッド、検出器、マイクロフォン、加速度計、ジャイロスコープ、バイオメトリックスキャナ又はネットワーク接続(例えば、無線IEEE802信号を送信及び/若しくは受信するための無線ローカルエリアネットワークカード)を含むことができる。出力デバイス610は、ディスプレイ、スピーカ、プリンタ、触覚フィードバックデバイス、1つ以上のライト、アンテナ又はネットワーク接続(例えば、無線IEEE802信号を送信及び/若しくは受信するための無線ローカルエリアネットワークカード)を含むことができる。
入力ドライバ612は、プロセッサ602及び入力デバイス608と通信し、プロセッサ602が入力デバイス608から入力を受信することを可能にする。出力ドライバ614は、プロセッサ602及び出力デバイス610と通信し、プロセッサ602が出力デバイス610に出力を送信することを可能にする。入力ドライバ612及び出力ドライバ614は、オプションのコンポーネントであり、デバイス600は、入力ドライバ612及び出力ドライバ614が存在しない場合であっても同様に動作することに留意されたい。
概して、一実施形態では、データキャッシュ領域プリフェッチャは、複数のラインエントリを有するラインエントリデータテーブルを含み、各ラインエントリは、所定数のアクセスビットにより定義された領域を含み、所定のラインエントリのアクセスビットは、領域内でキャッシュラインが要求された場合に設定される。また、データキャッシュ領域プリフェッチャは、ラインエントリデータテーブルからのエビクトを受信するように構成された領域履歴テーブルを含む。データキャッシュ領域プリフェッチャは、エビクト可能なラインエントリ内の特定のアクセスビットからアクセスパターンを判別し、所定のアクセスパターンを有するラインエントリを、領域履歴テーブルへのエビクトから除外する。一実施形態では、データキャッシュ領域プリフェッチャは、擬似ランダムアクセスパターンを有するラインエントリを領域履歴テーブルにエビクトする。一実施形態では、領域履歴テーブルは、少なくとも命令ポインタレジスタ(RIP)を使用してインデックスされる。一実施形態では、領域履歴テーブルは、領域への最初のアクセスがキャッシュラインの始め、終わり又は中間の何れに対するものであるかに応じて、同じRIPに対して複数の擬似ランダムアクセスパターンをサポートするために、オフセットを使用してインデックスされる。一実施形態では、各領域履歴エントリは、所定数のアクセスビットを含み、各領域履歴エントリは、所定数のアクセスビット内の特定のアクセスビットのカウンタを含み、カウンタは、エビクト可能なラインエントリに対しアクセスビットが設定されているかどうかに応じて、インクリメント又はデクリメントされる。一実施形態では、データキャッシュ領域プリフェッチャは、領域履歴テーブル内の特定の領域履歴エントリの特定のアクセスビットに関連するカウンタが閾値に達したという条件で、領域履歴テーブルからプリフェッチ要求を受信するように構成された領域プリフェッチジェネレータをさらに含む。一実施形態では、データキャッシュ領域プリフェッチャは、他のプリフェッチャが、データキャッシュ領域プリフェッチャで保留中のストリームを処理するのをブロックする。一実施形態では、各ラインエントリは、後続のキャッシュライン要求が所定数のアクセスビット内のホームビットから1アクセスビット内に存在する場合に設定される第2アクセスビットであって、領域履歴テーブルへのエビクトから除外される所定のアクセスパターンを判別するために使用される第2アクセスビットをさらに含む。
一実施形態では、処理システムは、ストリームプリフェッチャと、データキャッシュ領域プリフェッチャと、を含む。データキャッシュ領域プリフェッチャは、複数のラインエントリを有するラインエントリデータテーブルと、ラインエントリデータテーブルからのエビクトを受信する領域履歴テーブルと、を含む。各ラインエントリは、所定数のアクセスビットによって定義された領域を含み、所定のラインエントリのアクセスビットは、領域内でキャッシュラインが要求された場合に設定される。データキャッシュ領域プリフェッチャは、エビクト可能なラインエントリ内の特定のアクセスビットからアクセスパターンを判別し、所定のアクセスパターンを有するラインエントリを、領域履歴テーブルへのエビクトから除外し、ストリームプリフェッチャが、データキャッシュ領域プリフェッチャで保留中のストリームを処理するのをブロックする。一実施形態では、データキャッシュ領域プリフェッチャは、擬似ランダムアクセスパターンを有するラインエントリを領域履歴テーブルにエビクトする。一実施形態では、領域履歴テーブルは、少なくとも命令ポインタレジスタ(RIP)を使用してインデックスされる。一実施形態では、領域履歴テーブルは、領域への最初のアクセスがキャッシュラインの始め、終わり又は中間の何れに対するものであるかに応じて、同じRIPに対して複数の擬似ランダムアクセスパターンをサポートするために、オフセットを使用してインデックスされる。一実施形態では、各領域履歴エントリは、所定数のアクセスビットを含み、各領域履歴エントリは、所定数のアクセスビット内の特定のアクセスビットのカウンタを含み、カウンタは、各アクセスビット内にビットが設定されているかどうかに応じて、インクリメント又はデクリメントされる。一実施形態では、システムは、領域履歴テーブル内の特定の領域履歴エントリの特定のアクセスビットに関連するカウンタが閾値に達したという条件で、領域履歴テーブルからプリフェッチ要求を受信するように構成された領域プリフェッチジェネレータを含む。一実施形態では、各ラインエントリは、後続のキャッシュライン要求が所定数のアクセスビット内のホームビットから1アクセスビット内に存在する場合に設定される第2アクセスビットであって、領域履歴テーブルへのエビクトから除外される所定のアクセスパターンを判別するために使用される第2アクセスビットをさらに含む。
一実施形態では、データキャッシュ領域プリフェッチを行う方法は、複数のラインエントリを有するラインエントリテーブルにおいてキャッシュライン要求を受信することを含み、各ラインエントリは、所定数のアクセスビットによって定義された領域を含む。キャッシュライン要求が領域内に存在する場合、所定のラインエントリに対してアクセスビットが設定される。アクセスパターンは、エビクト可能なラインエントリ内の特定のアクセスビットから判別される。所定のアクセスパターンを有するラインエントリは、領域履歴テーブルへのエビクトから除外され、擬似ランダムアクセスパターンを有するラインエントリは、領域履歴テーブルにエビクトされる。一実施形態では、領域履歴テーブルは、少なくとも命令ポインタレジスタ(RIP)を使用してインデックスされる。一実施形態では、領域履歴テーブルは、領域への最初のアクセスがキャッシュラインの始め、終わり又は中間の何れに対するものであるかに応じて、同じRIPに対して複数の擬似ランダムアクセスパターンをサポートするために、RIPとオフセットとを使用してインデックスされる。一実施形態では、各領域履歴エントリは、所定数のアクセスビット内の特定のアクセスビットのカウンタを含み、カウンタは、各アクセスビットが設定されているかどうかに応じて、インクリメント又はデクリメントされる。一実施形態では、特定の領域履歴エントリの特定のアクセスビットに関連するカウンタが閾値以上になったという条件で、プリフェッチ要求が領域プリフェッチジェネレータに送信される。一実施形態では、他のプリフェッチャが、データキャッシュ領域プリフェッチャで保留中のストリームを処理することがブロックされる。一実施形態では、各ラインエントリは、第2アクセスビットを含み、後続のキャッシュライン要求が所定数のアクセスビット内のホームビットから1アクセスビット内に存在する場合に第2アクセスビットが設定され、第2アクセスビットは、領域履歴テーブルへのエビクトから除外される所定のアクセスパターンを判別するために使用される。
本明細書で説明する実施形態を概して及び限定することなく、非一時的なコンピュータ可読記憶媒体は、処理システム内で実行されると、データキャッシュ領域プリフェッチを行う方法を処理システムに実行させる命令を含む。
本明細書における開示に基づいて多くの変形が可能であることを理解されたい。上記では、特徴及び要素が特定の組み合わせで説明されているが、各特徴又は要素は、他の特徴及び要素無しに単独で使用されてもよいし、他の特徴及び要素を伴って又は伴わずに様々な組み合わせで使用されてもよい。
提供された方法は、汎用コンピュータ、プロセッサ又はプロセッサコアで実施されてもよい。適切なプロセッサには、例として、汎用プロセッサ、専用プロセッサ、従来のプロセッサ、デジタル信号プロセッサ(DSP)、複数のマイクロプロセッサ、DSPコアに関連する1つ以上のマイクロプロセッサ、コントローラ、マイクロコントローラ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)回路、他のタイプの集積回路(IC)、及び/又は、ステートマシンが含まれる。このようなプロセッサは、処理されたハードウェア記述言語(HDL)命令(このような命令は、コンピュータ可読媒体に記憶することが可能である)の結果及びネットリストを含む他の中間データを用いて製造プロセスを構成することによって製造され得る。このようなプロセスの結果は、実施形態の態様を実施するプロセッサを製造するために半導体製造プロセスにおいて使用されるマスクワークであってもよい。
本明細書で提供された方法又はフローチャートは、汎用コンピュータ又はプロセッサによる実行のために非一時的なコンピュータ可読記憶媒体に組み込まれたコンピュータプログラム、ソフトウェア又はファームウェアで実施されてもよい。非一時的なコンピュータ可読記憶媒体の例には、例えば読み出し専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、レジスタ、キャッシュメモリ、半導体メモリデバイス、内蔵ハードディスク、リムーバブルディスク等の磁気媒体、光磁気記憶媒体、例えばCD−ROMディスク及びデジタル多用途ディスク(DVD)等の光学媒体が含まれる。

Claims (22)

  1. 複数のラインエントリを含むラインエントリデータテーブルであって、各ラインエントリは、所定数のアクセスビットによって定義された領域を含み、所定のラインエントリのアクセスビットは、前記領域内でキャッシュラインが要求された場合に設定される、ラインエントリデータテーブルと、
    前記ラインエントリデータテーブルからのエビクトを受信するように構成された領域履歴テーブルと、を備えるデータキャッシュ領域プリフェッチャであって、
    前記データキャッシュ領域プリフェッチャは、エビクト可能なラインエントリ内の特定のアクセスビットからアクセスパターンを判別し、所定のアクセスパターンを有するラインエントリを、前記領域履歴テーブルへのエビクトから除外するように構成されている、
    データキャッシュ領域プリフェッチャ。
  2. 前記データキャッシュ領域プリフェッチャは、擬似ランダムアクセスパターンを有する前記ラインエントリを前記領域履歴テーブルにエビクトするように構成されている、
    請求項1のデータキャッシュ領域プリフェッチャ。
  3. 前記領域履歴テーブルは、少なくとも命令ポインタレジスタ(RIP)を使用してインデックスされる、
    請求項1のデータキャッシュ領域プリフェッチャ。
  4. 前記領域履歴テーブルは、領域への最初のアクセスがキャッシュラインの始め、終わり又は中間の何れに対するものであるかに応じて、同じRIPに対して複数の擬似ランダムアクセスパターンをサポートするために、オフセットを使用してインデックスされる、
    請求項3のデータキャッシュ領域プリフェッチャ。
  5. 前記領域履歴テーブルは、複数の領域履歴エントリを含み、
    各領域履歴エントリは、前記所定数のアクセスビットを含み、
    各領域履歴エントリは、前記所定数のアクセスビット内の特定のアクセスビットのカウンタを含み、
    前記カウンタは、エビクト可能なラインエントリに対してアクセスビットが設定されているかどうかに応じて、インクリメント又はデクリメントされる、
    請求項1のデータキャッシュ領域プリフェッチャ。
  6. 前記領域履歴テーブル内の特定の領域履歴エントリの特定のアクセスビットに関連するカウンタが閾値に達したという条件で、前記領域履歴テーブルからプリフェッチ要求を受信するように構成された領域プリフェッチジェネレータをさらに備える、
    請求項1のデータキャッシュ領域プリフェッチャ。
  7. 前記データキャッシュ領域プリフェッチャは、他のプリフェッチャが、前記データキャッシュ領域プリフェッチャで保留中のストリームを処理するのをブロックするように構成されている、
    請求項1のデータキャッシュ領域プリフェッチャ。
  8. 各ラインエントリは、後続のキャッシュライン要求が前記所定数のアクセスビット内のホームビットから1アクセスビット内に存在する場合に設定される第2アクセスビットであって、前記領域履歴テーブルへのエビクトから除外された前記所定のアクセスパターンを判別するために使用される第2アクセスビットをさらに含む、
    請求項1のデータキャッシュ領域プリフェッチャ。
  9. ストリームプリフェッチャと、
    データキャッシュ領域プリフェッチャと、を備える処理システムであって、
    前記データキャッシュ領域プリフェッチャは、
    複数のラインエントリを有するラインエントリデータテーブルと、
    前記ラインエントリデータテーブルからのエビクトを受信する領域履歴テーブルと、を備え、
    各ラインエントリは、所定数のアクセスビットによって定義された領域を含み、所定のラインエントリのアクセスビットは、前記領域内でキャッシュラインが要求された場合に設定され、
    前記データキャッシュ領域プリフェッチャは、
    エビクト可能なラインエントリ内の特定のアクセスビットからアクセスパターンを判別し、所定のアクセスパターンを有するラインエントリを、前記領域履歴テーブルへのエビクトから除外し、
    前記ストリームプリフェッチャが、前記データキャッシュ領域プリフェッチャで保留中のストリームを処理するのをブロックする、ように構成されている、
    処理システム。
  10. 前記データキャッシュ領域プリフェッチャは、擬似ランダムアクセスパターンを有するラインエントリを前記領域履歴テーブルにエビクトするように構成されている、
    請求項9の処理システム。
  11. 前記領域履歴テーブルは、少なくとも命令ポインタレジスタ(RIP)を使用してインデックスされる、
    請求項9の処理システム。
  12. 前記領域履歴テーブルは、領域への最初のアクセスがキャッシュラインの始め、終わり又は中間の何れに対するものであるかに応じて、同じRIPに対して複数の擬似ランダムアクセスパターンをサポートするために、オフセットを使用してインデックスされる、
    請求項11の処理システム。
  13. 前記領域履歴テーブルは、複数の領域履歴エントリを含み、
    各領域履歴エントリは、前記所定数のアクセスビットを含み、
    各領域履歴エントリは、前記所定数のアクセスビット内の特定のアクセスビットのカウンタを含み、
    前記カウンタは、各々のアクセスビットにビットが設定されているかどうかに応じて、インクリメント又はデクリメントされる、
    請求項9の処理システム。
  14. 前記領域履歴テーブル内の特定の領域履歴エントリの特定のアクセスビットに関連するカウンタが閾値に達したという条件で、前記領域履歴テーブルからプリフェッチ要求を受信するように構成された領域プリフェッチジェネレータをさらに備える、
    請求項9の処理システム。
  15. 各ラインエントリは、後続のキャッシュライン要求が前記所定数のアクセスビット内のホームビットから1アクセスビット内に存在する場合に設定される第2アクセスビットであって、前記領域履歴テーブルへのエビクトから除外される前記所定のアクセスパターンを判別するために使用される第2アクセスビットをさらに含む、
    請求項9の処理システム。
  16. データキャッシュ領域プリフェッチを行う方法であって、
    複数のラインエントリを含むラインエントリテーブルにおいてキャッシュライン要求を受信することであって、各ラインエントリは、所定数のアクセスビットによって定義された領域を含む、ことと、
    前記キャッシュライン要求が前記領域内に存在する場合、所定のラインエントリに対してアクセスビットを設定することと、
    エビクト可能なラインエントリ内の特定のアクセスビットからアクセスパターンを判別することと、
    所定のアクセスパターンを有するラインエントリを、領域履歴テーブルへのエビクトから除外することと、
    擬似ランダムアクセスパターンを有するラインエントリを領域履歴テーブルにエビクトすることと、を含む、
    方法。
  17. 少なくとも命令ポインタレジスタ(RIP)を使用して前記領域履歴テーブルをインデックスすることをさらに含む、
    請求項16の方法。
  18. 領域への最初のアクセスがキャッシュラインの始め、終わり又は中間の何れに対するものであるかに応じて、同じRIPに対して複数の擬似ランダムアクセスパターンをサポートするために、RIPとオフセットとを使用して前記領域履歴テーブルをインデックスすることをさらに含む、
    請求項17の方法。
  19. 前記領域履歴テーブルは、複数の領域履歴エントリを含み、各領域履歴エントリは、前記所定数のアクセスビット内の特定のアクセスビットのカウンタを含み、
    前記方法は、
    各々のアクセスビットが設定されているかどうかに応じて、前記カウンタをインクリメント又はデクリメントすることをさらに含む、
    請求項16の方法。
  20. 前記領域履歴テーブル内の特定の領域履歴エントリの特定のアクセスビットに関連するカウンタが閾値以上になったという条件で、プリフェッチ要求を領域プリフェッチジェネレータに送信することをさらに含む、
    請求項16の方法。
  21. 他のプリフェッチャが、前記データキャッシュ領域プリフェッチャで保留中のストリームを処理するのをブロックすることをさらに含む、
    請求項16の方法。
  22. 各ラインエントリは、第2アクセスビットを含み、
    前記方法は、
    後続のキャッシュライン要求が前記所定数のアクセスビット内のホームビットから1アクセスビット内に存在する場合に、前記第2アクセスビットを設定することと、
    前記領域履歴テーブルへのエビクトから除外される前記所定のアクセスパターンを判別するために、設定された前記第2アクセスビットを使用することと、をさらに含む、
    請求項16の方法。
JP2019510348A 2016-08-19 2017-08-08 データキャッシュ領域プリフェッチャ Active JP7308745B2 (ja)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US201662377314P 2016-08-19 2016-08-19
US62/377,314 2016-08-19
US15/292,777 US20180052779A1 (en) 2016-08-19 2016-10-13 Data cache region prefetcher
US15/292,777 2016-10-13
EP16200806.4A EP3285172A1 (en) 2016-08-19 2016-11-25 Data cache region prefetcher
EP16200806.4 2016-11-25
PCT/US2017/045842 WO2018034882A1 (en) 2016-08-19 2017-08-08 Data cache region prefetcher

Publications (2)

Publication Number Publication Date
JP2019528532A true JP2019528532A (ja) 2019-10-10
JP7308745B2 JP7308745B2 (ja) 2023-07-14

Family

ID=57396378

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019510348A Active JP7308745B2 (ja) 2016-08-19 2017-08-08 データキャッシュ領域プリフェッチャ

Country Status (6)

Country Link
US (2) US20180052779A1 (ja)
EP (1) EP3285172A1 (ja)
JP (1) JP7308745B2 (ja)
KR (1) KR102467817B1 (ja)
CN (1) CN109564549B (ja)
WO (1) WO2018034882A1 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106528450B (zh) * 2016-10-27 2019-09-17 上海兆芯集成电路有限公司 数据预先提取方法及使用此方法的装置
US10445241B2 (en) * 2018-03-06 2019-10-15 Arm Limited Prefetching using offset data to access a pointer within a current data element for use in prefetching a subsequent data element
US10713053B2 (en) * 2018-04-06 2020-07-14 Intel Corporation Adaptive spatial access prefetcher apparatus and method
US11281585B2 (en) * 2018-08-30 2022-03-22 Micron Technology, Inc. Forward caching memory systems and methods
US10976964B2 (en) * 2019-06-27 2021-04-13 Western Digital Technologies, Inc. Storage system and method for hit-rate-score-based selective prediction of future random read commands
US11416263B1 (en) 2021-02-12 2022-08-16 Western Digital Technologies, Inc. Boosted boot procedure by background re-arrangement of read patterns
US20230058668A1 (en) * 2021-08-18 2023-02-23 Micron Technology, Inc. Selective cache line memory encryption

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002032264A (ja) * 2000-07-19 2002-01-31 Hitachi Ltd キャッシュメモリ装置及びそれを用いた中央演算処理装置
US20050071571A1 (en) * 2003-09-30 2005-03-31 International Business Machines Corporation Apparatus and method for pre-fetching data to cached memory using persistent historical page table data
US20160019065A1 (en) * 2014-07-17 2016-01-21 Arm Limited Prefetching instructions in a data processing apparatus

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7234040B2 (en) * 2002-01-24 2007-06-19 University Of Washington Program-directed cache prefetching for media processors
EP1586039A2 (en) * 2002-11-22 2005-10-19 Koninklijke Philips Electronics N.V. Using a cache miss pattern to address a stride prediction table
US6961820B2 (en) * 2003-02-13 2005-11-01 International Business Machines Corporation System and method for identifying and accessing streaming data in a locked portion of a cache
US7194582B1 (en) * 2003-05-30 2007-03-20 Mips Technologies, Inc. Microprocessor with improved data stream prefetching
US8356142B1 (en) * 2003-11-12 2013-01-15 Nvidia Corporation Memory controller for non-sequentially prefetching data for a processor of a computer system
US9274965B2 (en) * 2008-12-15 2016-03-01 International Business Machines Corporation Prefetching data
US8117397B2 (en) * 2008-12-16 2012-02-14 International Business Machines Corporation Victim cache line selection
KR101717644B1 (ko) * 2009-09-08 2017-03-27 샌디스크 테크놀로지스 엘엘씨 고체-상태 저장 디바이스 상에서 데이터를 캐싱하는 장치, 시스템, 및 방법
US8200902B2 (en) * 2010-06-10 2012-06-12 Arm Limited Cache device for coupling to a memory device and a method of operation of such a cache device
US9110810B2 (en) * 2011-12-06 2015-08-18 Nvidia Corporation Multi-level instruction cache prefetching
US9026739B2 (en) * 2012-03-07 2015-05-05 Advanced Micro Devices, Inc. Multimode prefetcher
US9116815B2 (en) * 2012-06-20 2015-08-25 Advanced Micro Devices, Inc. Data cache prefetch throttle
US9262327B2 (en) * 2012-06-29 2016-02-16 Intel Corporation Signature based hit-predicting cache
US9323695B2 (en) * 2012-11-12 2016-04-26 Facebook, Inc. Predictive cache replacement
US9021210B2 (en) * 2013-02-12 2015-04-28 International Business Machines Corporation Cache prefetching based on non-sequential lagging cache affinity
US9015422B2 (en) * 2013-07-16 2015-04-21 Apple Inc. Access map-pattern match based prefetch unit for a processor
US9575778B2 (en) * 2014-05-20 2017-02-21 Via Alliance Semiconductor Co., Ltd. Dynamically configurable system based on cloud-collaborative experimentation
US10496410B2 (en) * 2014-12-23 2019-12-03 Intel Corporation Instruction and logic for suppression of hardware prefetchers
US10108549B2 (en) * 2015-09-23 2018-10-23 Intel Corporation Method and apparatus for pre-fetching data in a system having a multi-level system memory

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002032264A (ja) * 2000-07-19 2002-01-31 Hitachi Ltd キャッシュメモリ装置及びそれを用いた中央演算処理装置
US20050071571A1 (en) * 2003-09-30 2005-03-31 International Business Machines Corporation Apparatus and method for pre-fetching data to cached memory using persistent historical page table data
US20160019065A1 (en) * 2014-07-17 2016-01-21 Arm Limited Prefetching instructions in a data processing apparatus

Also Published As

Publication number Publication date
US20180052779A1 (en) 2018-02-22
KR20190038835A (ko) 2019-04-09
CN109564549A (zh) 2019-04-02
WO2018034882A1 (en) 2018-02-22
US20220283955A1 (en) 2022-09-08
KR102467817B1 (ko) 2022-11-16
JP7308745B2 (ja) 2023-07-14
EP3285172A1 (en) 2018-02-21
CN109564549B (zh) 2024-05-24

Similar Documents

Publication Publication Date Title
JP7308745B2 (ja) データキャッシュ領域プリフェッチャ
KR102357246B1 (ko) 캐시 교체 정책을 위한 스케일링된 세트 듀얼링
CN106537362B (zh) 数据处理装置和在数据处理装置中处理地址转换的方法
US9274959B2 (en) Handling virtual memory address synonyms in a multi-level cache hierarchy structure
US7584327B2 (en) Method and system for proximity caching in a multiple-core system
US9348753B2 (en) Controlling prefetch aggressiveness based on thrash events
US10725923B1 (en) Cache access detection and prediction
JP7249272B2 (ja) キャッシュ、キャッシュを有するプロセッサ、及び、キャッシュ制御方法
US20150286571A1 (en) Adaptive cache prefetching based on competing dedicated prefetch policies in dedicated cache sets to reduce cache pollution
US9183146B2 (en) Hierarchical cache structure and handling thereof
CN105446898B (zh) 用于数据处理的装置及方法
US20190065375A1 (en) Intelligent data prefetching using address delta prediction
CN111263934A (zh) 至少具有三个缓存级别的缓存层级的混合低级缓存包含策略
JP2023507078A (ja) プリフェッチレベルの降格
US20230102891A1 (en) Re-reference interval prediction (rrip) with pseudo-lru supplemental age information
TW201913385A (zh) 經由快取命中預測催查快取未命中
US20070186046A1 (en) Pseudo LRU algorithm for hint-locking during software and hardware address translation cache miss handling modes
US20170046278A1 (en) Method and apparatus for updating replacement policy information for a fully associative buffer cache
US11494300B2 (en) Page table walker with page table entry (PTE) physical address prediction
US20240111677A1 (en) Region pattern-matching hardware prefetcher
US20240176742A1 (en) Providing memory region prefetching in processor-based devices
KR20230161484A (ko) Dram 캐시 태그 프리페처를 위한 방법 및 장치
WO2023287512A1 (en) Prefetcher with multi-cache level prefetches and feedback architecture

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200807

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210831

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20211019

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20220119

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20220314

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220407

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220906

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20221205

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230131

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20230606

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20230630

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230704

R150 Certificate of patent or registration of utility model

Ref document number: 7308745

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150