JP2023550231A - 局所性を欠くデータを対象とするメモリ要求のプリフェッチ無効化 - Google Patents

局所性を欠くデータを対象とするメモリ要求のプリフェッチ無効化 Download PDF

Info

Publication number
JP2023550231A
JP2023550231A JP2023518252A JP2023518252A JP2023550231A JP 2023550231 A JP2023550231 A JP 2023550231A JP 2023518252 A JP2023518252 A JP 2023518252A JP 2023518252 A JP2023518252 A JP 2023518252A JP 2023550231 A JP2023550231 A JP 2023550231A
Authority
JP
Japan
Prior art keywords
memory request
memory
cache
data
storage buffer
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
Application number
JP2023518252A
Other languages
English (en)
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 JP2023550231A publication Critical patent/JP2023550231A/ja
Pending legal-status Critical Current

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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • 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/0888Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
    • 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/0864Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
    • 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/50Control mechanisms for virtual memory, cache or TLB
    • G06F2212/502Control mechanisms for virtual memory, cache or TLB using adaptive policy
    • 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/6022Using a prefetch buffer or dedicated prefetch cache
    • 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/6028Prefetching based on hints or prefetch instructions

Abstract

Figure 2023550231000001
メモリ要求を効率的に処理するためのシステム及び方法が説明される。処理ユニットは、少なくとも、プロセッサコアと、キャッシュと、キャッシュに記憶されることが防止されたデータを記憶することが可能な非キャッシュ記憶バッファと、を含む。非キャッシュ記憶バッファを対象とするメモリ要求を処理している間、プロセッサコアは、メモリ要求のタグに記憶されたフラグを検査する。プロセッサコアは、フラグが、メモリ要求のこのインスタンスの処理中、メモリ要求のターゲットアドレスを使用して、非キャッシュ記憶バッファ及びキャッシュのうち1つ以上へのデータプリフェッチを防止することを指定すると決定したことに基づいて、非キャッシュ記憶バッファ及びキャッシュのうち1つ以上へのデータプリフェッチを防止する。プリフェッチヒント命令を処理している間、プロセッサコアは、プリフェッチを防止するかどうかをタグから決定する。
【選択図】図3

Description

(関連技術の説明)
半導体製造プロセスが進歩し、オンダイの幾何学的寸法が減少するにつれて、1つ以上の処理ユニットを含む半導体チップは、より多くの機能及び性能を提供する。例えば、半導体チップは、1つ以上の処理ユニットを含み得る。処理ユニットは、様々なデータ処理集積回路のうち何れかを表し得る。処理ユニットの例は、汎用中央処理ユニット(central processing unit、CPU)、オーディオ/ビデオ(audio/video、A/V)データ処理のためのマルチメディアエンジン、フィールドプログラマブルゲートアレイ(field programmable gate array、FPGA)、特定用途向け集積回路(application specific integrated circuit、ASIC)、及び、グラフィックス処理ユニット(graphics processing unit、GPU)、デジタル信号プロセッサ(digital signal processor、DSP)等の並列データ処理エンジン等である。処理ユニットは、汎用命令セットアーキテクチャ(instruction set architecture、ISA)、デジタル、アナログ、混合信号及び無線周波数(radio-frequency、RF)機能等の命令を処理する。
しかしながら、処理及び集積回路設計における現代の技術では、潜在的な利益を制限する可能性がある設計問題が依然として生じる。1つの問題は、単位長さ当たりの相互接続遅延が増加し続け、個々のチップ間の高い電気インピーダンスもレイテンシを増加させ、多くのデータにアクセスするほとんどのソフトウェアアプリケーションは、計算時間が一般にメモリ帯域幅によって決定されるという点で、典型的にはメモリバウンドであることである。1つ以上のコンピューティングシステムの性能は、記憶されたデータへの迅速なアクセスに依存する。メモリアクセス動作は、読み出し動作、書き込み動作、メモリ間コピー動作等を含む。
上記の問題の多くを解決するために、1つ以上の処理ユニットは、読み出し又は書き込み動作のためにシステムメモリ内のデータのコピーにアクセスするメモリアクセス要求のレイテンシを低減するために、メモリ階層の一部として、キャッシュ階層の1つ以上のレベルを使用する。代表的なメモリ階層は、プロセッサコアの半導体ダイ上のレジスタ、及び、ダイ上に位置するか若しくはダイに接続されるかの何れかのキャッシュ等のように、小型で比較的高速の揮発性スタティックメモリから、より大型の揮発性ダイナミックオフチップメモリ、比較的低速の不揮発性メモリへと移行する。一般に、キャッシュは、1つ以上のブロックを記憶し、ブロックの各々は、システムメモリ内の対応するアドレスに記憶されたデータのコピーである。
1つ以上のキャッシュは、処理されている命令によって生成されるデマンドメモリ要求によって、及び、プリフェッチエンジンによって生成されるプリフェッチメモリ要求によっての両方で充填される。プリフェッチエンジンは、プロセッサをストールさせる可能性のあるオフチップメモリへのメモリアクセスのパターンを検出することと、それぞれの要求命令に先立って、オフチップメモリへのメモリアクセスを開始することとによって、オフチップメモリレイテンシを隠すことを試みる。最も単純なパターンは、単調に増加又は減少する態様で、キャッシュライン(ブロック)の連続セットを参照するメモリアクセスのシーケンスである。メモリアクセスのシーケンスを検出することに応じて、プリフェッチユニットは、現在要求されているキャッシュラインの前の特定の数のキャッシュラインをプリフェッチし始める。しかしながら、キャッシュは有限のサイズを有するので、キャッシュブロックの総数は本質的に制限される。加えて、セットアソシアティブキャッシュ内の所定のセットにマッピングするブロックの数には制限がある。場合によっては、キャッシュ容量又はキャッシュアソシアティビティによって提供される制限よりも細かい、特定の命令タイプと関連付けられたキャッシュブロックの数に対する制限から利益を得る条件が存在する。
上記を考慮して、メモリ要求を効率的に処理するための効率的な方法及びメカニズムが望まれる。
コンピューティングシステムの一実施形態の一般化された図である。 プロセッサコアの一実施形態の一般化された図である。 局所性を欠くメモリ要求を処理するための方法の別の実施形態の一般化された図である。 メモリ要求を効率的に処理するための方法の別の実施形態の一般化された図である。 メモリ要求を効率的に処理するための方法の別の実施形態の一般化された図である。
本発明は、様々な変更及び代替形態を受ける余地があるが、具体的な実施形態が例として図面に示されており、本明細書で詳細に説明される。しかしながら、図面及びその詳細な説明は、開示された特定の形態に本発明を限定することを意図するものではなく、逆に、本発明は、添付の特許請求の範囲によって定義される本発明の範囲内に入る全ての変更、均等物及び代替形態を包含するものであることを理解されたい。
以下の説明では、本発明の十分な理解を提供するために、多数の具体的な詳細が記載されている。しかしながら、当業者は、これらの具体的な詳細なしに本発明が実施され得ることを認識すべきである。いくつかの例では、本発明を不明瞭にすることを避けるために、周知の回路、構造及び技術が詳細に示されていない。更に、説明を簡単且つ明確にするために、図に示される要素が必ずしも縮尺どおりに描かれていないことが理解されよう。例えば、いくつかの要素の寸法は、他の要素に対して誇張されている。
メモリ要求を効率的に処理するためのシステム及び方法が企図される。半導体チップは、1つ以上の処理ユニットを含み得る。処理ユニットは、様々なデータ処理集積回路のうち何れかを表し得る。処理ユニットの例は、汎用中央処理ユニット(CPU)、オーディオ/ビデオ(A/V)データ処理のためのマルチメディアエンジン、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、及び、グラフィックス処理ユニット(GPU)、デジタル信号プロセッサ(DSP)等の並列データ処理エンジン等である。半導体チップの処理ユニットは、少なくとも、1つのプロセッサコアと、レベル1(level-one、L1)キャッシュ等の少なくとも1つのキャッシュ(オンダイ又はオフダイ)へのアクセスとを含む。
また、プロセッサコアは、キャッシュに記憶されることが防止されたデータを記憶することができる非キャッシュ記憶バッファを使用する。様々な実施形態では、プロセッサコアは、要求されたデータが、時間局所性及び空間局所性のうち1つ以上を欠くことを指定する、メモリアクセス命令のオペコード内の指標に基づいて、特定のデータをキャッシュに記憶することを防止する。プロセッサコアは、要求されたデータがキャッシュに記憶されるのを防止して、キャッシュ汚染のペナルティを低減する。これらのペナルティの例は、性能低下、電力消費の増加、及び、メモリバス利用の増加である。時間局所性及び空間局所性のうち1つ以上を欠く要求されたデータがキャッシュに記憶される場合、キャッシュミスの数が増加する。例えば、セットアソシアティブキャッシュ構成の特定のセットが満杯である場合、局所性を有し、特定のセットに既に記憶されているデータは、データの記憶場所を生成するために追い出される。これが、キャッシュ汚染(cache pollution)の一例である。同様に、キャッシュセット内のデータの最近の配置に起因して、キャッシュセット内の他のキャッシュ可能なデータが、そのデータの前のより早期の追い出しの候補である可能性がある。これが、キャッシュ汚染の別の例である。
時間局所性及び空間局所性のうち1つ以上を欠くデータがキャッシュに記憶されることを防止することにより、キャッシュ汚染のペナルティが低減される。様々な実施形態では、ソフトウェアデザイナー、コンパイラ又は他のソフトウェアのうち1つ以上は、何れのメモリアクセス命令が、時間局所性及び空間局所性のうち1つ以上を欠くデータを対象とするかを決定する。一例では、コンパイラは、この決定を行うために、アクセスカウンタをサンプリングし、次いで、これらのメモリアクセス命令のオペコードは、メモリアクセス命令の要求されたデータが時間局所性及び空間局所性のうち1つ以上を欠くことを指定するオペコードを含むように変更される。
プロセッサコアのロード/記憶ユニット(load/store unit、LSU)は、時間局所性及び空間局所性のうち1つ以上を欠くデータを要求するメモリアクセス命令をキャッシュに発行するのではなく、これらのメモリアクセス命令を、キャッシュに記憶されることが防止されたデータを記憶する非キャッシュ記憶バッファに発行する。本明細書で使用される場合、「メモリ要求」は、「メモリアクセス要求」及び「アクセス要求」とも呼ばれる。「メモリアクセス要求」は、「読み出しアクセス要求」、「読み出し要求」、「ロード命令」、「書き込みアクセス要求」、「書き込み要求」、「記憶命令」、及び、「スヌープ要求」を含む。
本明細書で使用される場合、「データプリフェッチ」又は「プリフェッチ」は、下位レベルメモリからキャッシュ及び非キャッシュ記憶バッファのうち1つ以上にデータをプリフェッチする動作を指す。プリフェッチされたデータは、アプリケーションの命令、アプリケーションソースデータ、中間データ、及び、結果データのうち何れかを含む。様々な実施形態では、プロセッサコアの回路は、受信されたメモリ要求のこのインスタンスの処理中、データプリフェッチが防止されるか許可されるかを指定するメモリ要求のタグに記憶された指標を検査する。いくつかの実施形態では、受信されたメモリ要求のタグは、この指標を含む。様々な実施形態では、受信されたメモリ要求のこのインスタンスの処理中、データプリフェッチが防止されることをタグが示す場合、同じターゲットアドレスを有するより若いプログラム順のメモリ要求、及び、未だ処理されていないこのメモリ要求の他のインスタンス等の他のメモリ要求は、ターゲットアドレスに対して許可されたデータプリフェッチを有し得る。それらのメモリ要求のタグの各々は、メモリ要求のそれらのインスタンスの処理中、データプリフェッチを許可するか防止するかを示すフラグを含む。したがって、データプリフェッチの制御は、ターゲットアドレスの粒度ではなく、処理されているメモリ要求のインスタンスの粒度で行われる。
プリフェッチエンジンは、データをプリフェッチする動作、すなわちデータプリフェッチを実行することができる。本明細書で使用される場合、「プリフェッチエンジン」は、「プリフェッチャ」とも呼ばれる。プリフェッチの動作は、プリフェッチトレーニング及びプリフェッチ要求の生成のうち1つ以上を実行することを含む。例えば、プリフェッチエンジンは、プロセッサが、プリフェッチされたデータを対象とするデマンドメモリアクセス要求を発行する前に、データに対する1つ以上のメモリアクセス要求(プリフェッチ要求)を生成することができる。加えて、プリフェッチエンジンは、受信されたターゲットアドレスに基づいて、1つ以上のプリフェッチ要求を生成するかどうかを決定するために、プリフェッチトレーニングを実行することができる。
トレーニング時に、プリフェッチエンジンは、キャッシュラインの連続セットを参照するメモリアクセスのシーケンスと、互いの間のストライドによって分離されたキャッシュラインのセットを参照するメモリアクセスのシーケンスと、のうち1つ以上を識別する。プリフェッチエンジンは、他のタイプのメモリアクセスパターンを識別することができることが可能であり、企図される。プリフェッチエンジンが、メモリアクセスパターンを識別すると、プリフェッチエンジンは、識別されたメモリアクセスパターンに基づいて、1つ以上のプリフェッチ要求を生成する。いくつかの実施形態では、プリフェッチエンジンは、プロセッサコアによって提供されるデマンドメモリアクセスが識別されたメモリアクセスパターンに一致しない要求アドレスを含むとプリフェッチエンジンが決定した場合、プリフェッチ要求の生成を停止する。
LSUは、プリフェッチヒント命令も実行する。本明細書で使用される場合、「プリフェッチヒント命令」は、より若い(プログラム順の)デマンドメモリアクセス命令が、プリフェッチされたデータを要求する前に、特定のデータをキャッシュ及び非キャッシュデータストレージのうち1つ以上にプリフェッチするために、アプリケーションの命令に挿入されている様々なタイプのメモリアクセス命令のうち1つである。これらのプリフェッチヒント命令の例が、時間局所性を欠くデータに向けられたAMD64ビット命令PREFETCHNTA、レベル1(L1)キャッシュにデータをプリフェッチするPREFETCH1等である。しかしながら、時間局所性を欠くデータに向けられたAMD64ビット命令PREFETCHNTA等の特定のプリフェッチヒント命令内の非時間的指標に起因して、プロセッサコアは、このプリフェッチヒント命令を、他のタイプのプリフェッチヒント命令とは異なって処理する。様々な実施形態では、プロセッサコアの回路は、プリフェッチヒント命令のこのインスタンスの処理中、データプリフェッチが防止されるか許可されるかを指定する、プリフェッチヒント命令のタグに記憶された指標を検査する。プリフェッチヒント命令のタグに記憶された指標は、時間局所性及び空間局所性のうち1つ以上を欠くデータを対象とするメモリ要求について上述したのと同様の態様で処理される。
図1を参照すると、コンピューティングシステム100の一実施形態の一般化されたブロック図が示されている。コンピューティングシステム100は、処理ユニット110A~110Bと、相互接続ユニット118と、共有キャッシュメモリサブシステム120と、メモリ140と通信可能なメモリコントローラ130と、を含む。位相ロックループ(phase lock loop、PLL)、割り込みコントローラ、パワーマネージャ、入力/出力(input/output、I/O)インターフェース及びデバイス等のクロックソースは、説明を簡単にするために図1に示されていない。コンピューティングシステム100の構成要素の数、及び、処理ユニット110A、110Bの各々内等の図1に示されるもののサブ構成要素の数は、実施形態ごとに異なり得ることにも留意されたい。コンピューティングシステム100について示された数より多いか又は少ない各構成要素/サブ構成要素が存在してもよい。
一実施形態では、コンピューティングシステム100の例示の機能は、単一の集積回路に組み込まれる。例えば、コンピューティングシステム100は、単一の半導体ダイに複数のタイプの集積回路を含むシステムオンチップ(system on chip、SoC)である。複数のタイプの集積回路が個別の機能を提供する。他の実施形態では、複数の集積構成要素は、システムインパッケージ(system-in-package、SiP)、マルチチップモジュール(multi-chip module、MCM)又はチップセット等のパッケージ内の個々のダイである。更に他の実施形態では、複数の構成要素は、プリント回路基板上の個々のダイ又はチップである。
示されるように、処理ユニット110A、110Bは、1つ以上のプロセッサコア112A、112B、及び、対応するキャッシュメモリサブシステム114A、114Bを含む。プロセッサコア112A、112Bは、命令を処理するための回路を含む。処理ユニット110A、110Bは、様々なデータ処理集積回路のうち何れかを表す。処理ユニットの例は、汎用中央処理ユニット(CPU)、オーディオ/ビデオ(A/V)データ処理のためのマルチメディアエンジン、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、及び、グラフィックス処理ユニット(GPU)、デジタル信号プロセッサ(DSP)等の並列データ処理エンジン等である。処理ユニット110A、110Bの各々は、汎用命令セットアーキテクチャ(ISA)、デジタル、アナログ、混合信号及び無線周波数(RF)機能等の命令を処理する。
プロセッサコア112A、112Bは、同時マルチスレッドをサポートする。プロセッサコア112A、112Bによって実行される複数のスレッドは、少なくとも、共有キャッシュメモリサブシステム120、異なる処理タイプの他の処理ユニット(図示せず)、及び、I/Oデバイス(図示せず)を共有する。相互接続ユニット118は、ルータ、スイッチ、バス、ポイントツーポイント接続、キュー、及び、構成要素間でパケットをルーティングするためのアービトレーション回路のうち1つ以上を含む。いくつかの実施形態では、相互接続ユニット118は、通信ファブリックである。パケットは、メモリアクセス要求、応答、コマンド、メッセージ及びスヌープ要求等の様々なタイプを含む。インターフェース116A、116Bは、データを、相互接続ユニット118を介して、共有キャッシュメモリサブシステム120、メモリコントローラ130、I/Oデバイス(図示せず)、パワーマネージャ(図示せず)、及び、他の構成要素にルーティングするために使用される通信プロトコルをサポートする。
コンピューティングシステム100のアドレス空間は、複数のメモリ間で分割される。メモリマップは、何れのアドレスが何れのメモリにマッピングされるかを決定するために使用される。一実施形態では、アドレスのコヒーレンシポイントは、アドレスに対応するデータを記憶するメモリ140に接続されたメモリコントローラ130である。メモリコントローラ130は、メモリ140とインターフェースするための回路と、メモリ要求及びメモリ応答をキューイングするための要求キューと、を含む。単一のメモリコントローラ130及びメモリ140が示されているが、他の実施形態では、コンピューティングシステム100は、別の数のメモリコントローラ及びメモリを使用する。様々な実施形態では、メモリコントローラ130は、処理ユニット110A、110Bからメモリ要求を受信し、メモリ要求をスケジューリングし、スケジューリングされたメモリ要求をメモリ140に発行する。
メモリ140は、コンピューティングシステム100内のシステムメモリとして使用される。メモリ140は、ソフトウェアスレッドを処理ユニット110A、110B内のハードウェアに割り当てるためのスケジューラを含むオペレーティングシステムを記憶する。また、メモリ140は、ハイパーバイザ、基本入出力ソフトウェア(basic input output software、BIOS)制御機能、アプリケーションプログラマインターフェース(application programmer interface、API)を利用することを使用する1つ以上のアプリケーション、仮想アドレスから物理アドレスへのマッピング及びアクセス許可を記憶するページテーブル、アプリケーションのソースデータ及び結果データ等のうちの1つ以上を含む。メモリ140は、様々なタイプのメモリデバイスの何れかを使用する。
メモリ140に記憶されたデータの部分のコピーは、キャッシュ(114A、114B、120)のうち1つ以上に記憶される。メモリ階層は、プロセッサダイ上のレジスタ及びプロセッサダイ上に位置するか又はプロセッサダイに接続されるかの何れかのキャッシュ等の比較的高速の揮発性メモリから、不揮発性の比較的低速のメモリへと移行する。いくつかの実装例では、より高速の揮発性メモリは、メモリ階層の頂部又は最上位レベルにあるとみなされる一方、より低速の不揮発性メモリは、メモリ階層の底部又は最下位レベルにあるとみなされる。これらの実装例では、メモリ階層の第2のレベルよりも、階層のより高速の揮発性メモリの近くに位置するメモリ階層の第1のレベルは、第2のレベルよりも「高い」レベルにあるとみなされる。他の実装例では、より低速の不揮発性メモリは、メモリ階層の頂部又は最上位レベルにあるとみなされる。メモリ階層を説明する両方の方式が可能であり、企図されるが、以下の説明では、より高速の揮発性メモリは、メモリ階層の頂部又は最上位レベルにあるとみなされる。したがって、メモリ階層のより高いレベルは、プロセッサレジスタ及びレベル1(L1)ローカルキャッシュ等のより高速の揮発性メモリを含む一方、メモリ階層のより低いレベルは、ハードディスクドライブ(hard disk drive、HDD)又はソリッドステートドライブ(solid-state drive、SSD)等の不揮発性のより低速のメモリを含む。
キャッシュメモリサブシステム114A、114B、120は、データのブロックを記憶するために、高速キャッシュメモリを使用する。いくつかの実施形態では、キャッシュメモリサブシステム114A、114Bは、それぞれのプロセッサコア112A、112B内に統合される。代替的に、キャッシュメモリサブシステム114A、114Bは、必要に応じて、バックサイドキャッシュ構成又はインライン構成で、プロセッサコア112A、112Bに接続される。様々な実施形態では、キャッシュメモリサブシステム114A、114Bは、キャッシュの階層として実装される。キャッシュ階層の1つ以上のレベルは、仮想アドレスから物理アドレスへのマッピング及びアクセス許可を記憶するための変換索引バッファ(translation lookaside buffer、TLB)と、タグアレイと、データアレイと、キャッシュコントローラと、を含む。キャッシュ階層の1つ以上のレベルは、下位レベルのメモリからキャッシュにデータを充填するためのプリフェッチ要求を生成することができるプリフェッチエンジンも使用する。(階層内で)プロセッサコア112A、112Bにより近いキャッシュは、必要に応じてプロセッサコア112に統合される。一実施形態では、キャッシュメモリサブシステム114A、114Bの各々は、L1及びL2キャッシュ構造を表し、共有キャッシュサブシステム120は、共有L3キャッシュ構造を表す。他のキャッシュ構成も可能であり、企図される。
プロセッサコア112A、112Bの回路は、レジスタのうち1つ以上と、様々なフリップフロップ回路のうち何れかと、様々なタイプのランダムアクセスメモリ(random access memory、RAM)のうち何れかと、連想メモリ(content addressable memory、CAM)と、を使用して、非キャッシュ記憶バッファ113A、113Bを実装する。プロセッサコア112A、112Bは、キャッシュに記憶されることが防止されたデータを記憶することができる非キャッシュ記憶バッファ113A、113Bを使用する。メモリ140は、時間局所性及び空間局所性のうち1つ以上を欠くデータ等のように、不規則なメモリアクセスに対応するデータを使用する、不規則なメモリ帯域幅バウンドである高性能コンピューティング(high-performance computing、HPC)アプリケーション及びデータセンタアプリケーションのうち1つ以上を記憶する。HPCアプリケーションは、計算流体力学、高密度線形代数ライブラリ、高次法モデリング環境(high-order method modeling environment、HOMME)を使用する気候及び大気モデリング等において使用される。データセンタアプリケーションの例は、ソーシャルネットワーククローラ、クラウドストリーム分析アプリケーション、インターネットマップアプリケーション等である。
プロセッサコア112A、112Bは、プロセッサコア112A、112BのL1キャッシュ等のキャッシュに、時間局所性及び空間局所性のうち1つ以上を欠くデータを対象とするメモリ要求を発行するのではなく、これらのタイプのメモリ要求を非キャッシュ記憶バッファ113A、113Bに発行する。様々な実施形態では、非キャッシュ記憶バッファ113A、113Bは、プリフェッチャを使用する。非キャッシュ記憶バッファ113A、113Bのプリフェッチャは、下位レベルのメモリから非キャッシュ記憶バッファ113A、113Bにデータを充填するためのプリフェッチ要求を生成することができる。同様に、キャッシュメモリサブシステム114A、114BのL1キャッシュは、下位レベルのメモリからL1キャッシュにデータを充填するためのプリフェッチ要求を生成することができるプリフェッチャ115A、115Bを使用する。コンピューティングシステム100のプリフェッチャは、当業者に知られている様々なプリフェッチ方法を使用することができる。
プロセッサコア112A、112Bの回路は、時間局所性及び空間局所性のうち1つ以上を欠くデータを対象とするメモリ要求のタグに記憶されたフラグ等の指標を検査する。フラグは、メモリ要求のこれらのインスタンスの処理中、メモリ要求のターゲットアドレスに基づいて、データプリフェッチを許可するか防止するかを示す。フラグは、データプリフェッチが許可されるか防止されるかを指定する1つ以上のビットのフィールドである。フラグが、受信されたメモリ要求のこのインスタンスの処理中、データプリフェッチを防止することを指定する場合、データプリフェッチは、受信されたメモリ要求のこのインスタンスの処理中、防止される。例えば、プロセッサコア112A、112Bの回路は、受信されたメモリ要求のこのインスタンスの処理中、受信されたメモリ要求のターゲットアドレスに基づいて、プリフェッチャ113A、113B及びプリフェッチエンジン115A、115Bのうち1つ以上によるデータプリフェッチを防止する。同様に、プロセッサコア112A、112Bの回路は、プリフェッチヒント命令のタグに記憶されたフラグを検査し、このフラグに記憶された値に基づいて、同様にデータプリフェッチを実行する。
図2を参照すると、アウトオブオーダ実行を実行する汎用プロセッサコア200の一実施形態が示されている。一実施形態では、プロセッサコア200は、(図1の)処理ユニット112A、112Bのうち何れか等の処理ユニット内の2つ以上のスレッドを同時に処理する。プロセッサコア200の機能は、回路等のハードウェアによって実装される。ブロック202の命令キャッシュ(iキャッシュ)は、ソフトウェアアプリケーションの命令を記憶し、ブロック202の対応する命令変換索引バッファ(TLB)は、命令にアクセスするために必要な仮想アドレスから物理アドレスへのマッピングを記憶する。いくつかの実施形態では、命令TLB(instruction TLB、i-TLB)は、アドレスマッピングに対応するアクセス許可を記憶する。
命令フェッチユニット(instruction fetch unit、IFU)204は、ブロック202の命令キャッシュ又は命令TLB内にミスがない場合、クロックサイクルごとに、命令キャッシュ202から複数の命令をフェッチする。IFU204は、命令キャッシュ202からフェッチする次の命令のアドレスへのポインタを保持するプログラムカウンタを含み、このポインタは、命令TLB内のアドレスマッピングと比較される。また、IFU204は、実行ユニットが後のパイプラインステージにおいて実際の結果を決定する前に、条件付き命令の結果を予測する分岐予測ユニット(図示せず)を含む。
デコーダユニット206は、複数のフェッチされた命令のオペコードをデコードし、エントリを、リオーダバッファ218等のインオーダリタイアメントキュー、リザベーションステーション208及びロード/記憶ユニット(LSU)220に割り当てる。いくつかの実施形態では、デコードユニット206は、レジスタリネーミングを実行する。他の実施形態では、リオーダバッファ218がレジスタリネーミングを実行する。いくつかの実施形態では、デコーダ206は、単一のフェッチされた命令から複数のマイクロオペレーション(micro-op)を生成する。様々な実施形態では、少なくとも、時間局所性及び空間局所性のうち1つ以上を欠くデータを対象とするメモリ要求は、メモリ要求のそれらのインスタンスの処理中、メモリ要求のターゲットアドレスに基づいてデータプリフェッチを許可するか防止するかを指定するタグ内のフラグ等の指標を含む。いくつかの実施形態では、デコーダ206は、このフラグを、復号されたメモリ要求のタグに挿入する。様々な実施形態では、デコーダ206は、受信されたメモリ要求のオペコード又は他のフィールドに基づいてフラグの値を決定する。一実施形態では、フラグがアサートされると、受信されたメモリ要求のターゲットアドレスに基づくプリフェッチは、受信されたメモリ要求のこのインスタンスの処理中に後のパイプラインステージにおいて実行されるが、フラグがネゲートされると、受信されたメモリ要求のターゲットアドレスに基づくプリフェッチは、受信されたメモリ要求のこのインスタンスの処理中に後のパイプラインステージにおいて実行されることが防止される。いくつかの設計では、バイナリ論理ハイ値がアサート値として使用され、バイナリ論理ロー値がネゲート値として使用される一方、他の設計では、バイナリ論理ロー値がアサート値として使用され、バイナリ論理ハイ値がネゲート値として使用されることに留意されたい。アサートされたフラグ及びネゲートされたフラグを示す他の値も可能であり、企図される。例えば、いくつかの実施形態では、フラグは、2つ以上のビットを含み、フラグは、プリフェッチが、非キャッシュ記憶バッファ等の1つのタイプのストレージに対して許可されるが、プリフェッチが、キャッシュ等の別のタイプの記憶に対して防止されることを示すことができる。指標の他の組み合わせが可能であり、企図される。
リザベーションステーション208は、命令のオペランドが利用可能になるまで、命令が待機する命令キューとして機能する。オペランドが利用可能であり、ハードウェアリソースも利用可能である場合、リザベーションステーション208の回路は、整数及び浮動小数点機能ユニット210に又はロード/記憶ユニット220に命令をアウトオブオーダで発行する。機能ユニット210は、加算、減算、乗算、除算及び平方根等のコンピュータ計算のための算術論理ユニット(arithmetic logic unit、ALU)を含む。加えて、機能ユニット210内の回路は、分岐命令等の条件付き命令の結果を決定する。
ロード/記憶ユニット(LSU)220は、デコードユニット206及びリザベーションステーション208のうち1つ以上からロード動作及び記憶動作等のメモリ要求を受信する。ロード/記憶ユニット220は、メモリ要求を実行するためのキュー及び回路を含む。一実施形態では、ロード/記憶ユニット220は、ロード命令が、転送されたデータを正しい最も若い記憶命令から受信することを確実にする検証回路を含む。様々な実施形態では、ロード/記憶ユニット220は、(図1の)非キャッシュ記憶バッファ113A、113Bと同等の機能を有する非キャッシュ記憶バッファ222を使用する。様々な実施形態では、ロード/記憶ユニット220の回路は、レジスタ、様々なフリップフロップ回路のうち何れか、様々なタイプのランダムアクセスメモリ(RAM)のうち何れか、又は、連想メモリ(CAM)を使用して、非キャッシュ記憶バッファ222を実装する。
非キャッシュ記憶バッファ222は、ブロック230のレベル1(L1)データキャッシュ(dキャッシュ)等のキャッシュに記憶されることが防止されたデータを記憶することができる。一実施形態では、非キャッシュ記憶バッファ222は、時間局所性及び空間局所性のうち1つ以上を欠くデータを記憶する。プリフェッチャ224は、上述したように、データプリフェッチの動作を実行することができる。メモリ要求のターゲットアドレスに基づくプリフェッチがメモリ要求のこのインスタンスの処理中に防止されることを、メモリ要求のタグ内のフラグが指定すると決定したことに応じて、LSU220の回路及びプリフェッチャ224のうち1つ以上が、メモリ要求のこのインスタンスの処理中、メモリ要求のターゲットアドレスに基づくデータプリフェッチを防止する。対照的に、メモリ要求のターゲットアドレスに基づくプリフェッチがメモリ要求のこのインスタンスの処理中許可されることをフラグが指定すると決定したことに応じて、プリフェッチャ224は、メモリ要求のこのインスタンスの処理中、メモリ要求のターゲットアドレスに基づくデータプリフェッチの動作を実行する。
ロード/記憶ユニット220は、メモリ要求をブロック230のレベル1(L1)データキャッシュ(dキャッシュ)に発行する。ブロック230のL1データキャッシュは、TLB、タグアレイ、データアレイ、キャッシュコントローラ及びプリフェッチエンジン232を使用する。キャッシュコントローラは、読み出し/書き込み要求キュー、ミスキュー、読み出し/書き込み応答キュー、読み出し/書き込みスケジューラ、及び、フィルバッファ等の様々な回路及びキューを使用する。プリフェッチャ224と同様に、プリフェッチエンジン232は、上述したように、データプリフェッチの動作を実行することができる。いくつかの実施形態では、プリフェッチエンジン232は、下位レベルのメモリからブロック230のL1データキャッシュ及び非キャッシュ記憶バッファ222のうち1つ以上にデータを充填するためのプリフェッチ要求を生成することができる。一実施形態では、プリフェッチエンジン232は、アドレス範囲内のいくつかのデマンドメモリ要求を監視した後に、プリフェッチ要求を生成する。ブロック230の回路は、LSU220からデマンドメモリ要求を受信する。
非キャッシュ記憶バッファ222を対象とするメモリ要求のために、ブロック230のL1データキャッシュにデータが記憶されていないが、いくつかの実施形態では、ロード/記憶ユニット220は、メモリ要求の指標をブロック230のL1データキャッシュに依然として送信する。これらのタイプのメモリ要求のターゲットアドレスに基づくトレーニングに起因するプリフェッチエンジン232の性能低下を防止するために、フラグがメモリ要求のタグに挿入される。上述したように、フラグは、メモリ要求のそれらのインスタンスの処理中、メモリ要求のターゲットアドレスに基づいて、データプリフェッチを許可するか防止するかを指定する。
メモリ要求のターゲットアドレスに基づくプリフェッチがメモリ要求のこのインスタンスの処理中防止されることをフラグが指定すると決定したことに応じて、ブロック230の回路及びプリフェッチエンジン232のうち1つ以上が、メモリ要求のこのインスタンスのターゲットアドレスに基づいて、データプリフェッチの動作の1つ以上のステップを実行することを防止する。言い換えれば、ブロック230の回路及びプリフェッチエンジン232のうち1つ以上は、プリフェッチエンジン232が、メモリ要求のこのインスタンスのターゲットアドレスに基づいてプリフェッチ要求を生成すること、及び、プリフェッチトレーニングを実行することを防止する。プリフェッチヒント命令の場合、フラグの使用は、時間局所性及び空間局所性のうち1つ以上を欠くデータを対象とするメモリ要求のためのフラグの使用と同様である。
いくつかの実施形態では、プロセッサコア200は、L1データキャッシュ230及びL1命令キャッシュ202からのメモリ要求を処理するためのレベル2(level-two、L2)キャッシュ240を含む。ブロック240のTLBは、ブロック202の命令TLB及びブロック230のデータTLBからのアドレスマッピング要求を処理する。要求されたメモリラインがブロック230のL1データキャッシュ内に見つからない場合、又は、要求されたメモリラインがブロック202の命令キャッシュ内に見つからない場合、対応するキャッシュコントローラが、ブロック240のL2キャッシュにミス要求を送信する。要求されたメモリラインがL2キャッシュ240内に見つからない場合、L2キャッシュコントローラが、レベル3(level-three、L3)キャッシュ又はシステムメモリ等の下位レベルのメモリ内のメモリにアクセスするためにミス要求を送信する。
機能ユニット210及びロード/記憶ユニット220は、共通データバス212に結果を提示する。リオーダバッファ218は、共通データバス212から結果を受信する。一実施形態では、リオーダバッファ218は、プログラム順序に従って、命令のインオーダリタイアメントを確実にする先入れ先出し(first-in first-out、FIFO)キューである。ここで、命令の結果を受け取る命令は、リタイアメントのためにマークされる。命令がキューの先頭である場合、リオーダバッファ218の回路は、命令の結果をレジスタファイル214に送信する。レジスタファイル214は、プロセッサコア200の汎用レジスタのアーキテクチャ状態を保持する。次に、リオーダバッファ218内の命令がインオーダでリタイアし、ロジックが、そのキュー先頭ポインタを更新して、プログラム順序で後続の命令をポイントする。共通データバス212上の結果は、結果を待っている命令のオペランドに値を転送するために、リザベーションステーション208にも送信される。複数のスレッドが、コア200内の複数のリソースを共有する。例えば、これらの複数のスレッドは、図2に示されるブロック202~240の各々を共有する。
いくつかの実施形態では、プロセッサコア200は、個別のバッファを使用して、非キャッシュ記憶バッファ222を実装することに留意されたい。例えば、一実施形態では、プロセッサコア200は、空間局所性及び時間局所性のうち1つ以上を欠くデータを対象とするロード命令によって対象とされるデータを記憶することができる「ストリーミングロードバッファ」と、空間局所性及び時間局所性のうち1つ以上を欠くデータを対象とする記憶命令によって対象とされるデータを記憶することができる個別の書き込み結合バッファと、を使用する。これらのタイプのロード命令は、「ストリーミングロード命令」とも呼ばれる。同様に、これらのタイプの記憶命令は、「ストリーミング記憶命令」とも呼ばれる。
図3を参照すると、局所性を欠くメモリ要求を処理するための方法300の一実施形態が示されている。説明のために、この実施形態における(並びに、図4、図5)ステップが順番に示されている。しかしながら、他の実施形態では、いくつかのステップが図示された順序とは異なる順序で行われ、いくつかのステップが同時に実行され、いくつかのステップが他のステップと組み合わされ、いくつかのステップが存在しない。
様々な実施形態では、処理ユニットは、少なくとも、プロセッサコアと、キャッシュと、キャッシュに記憶されることが防止されたデータを記憶することができる非キャッシュ記憶バッファと、を含む。非キャッシュ記憶バッファを対象とするメモリ要求を処理する場合、プロセッサコアは、メモリ要求を非キャッシュ記憶バッファの回路に送信する。非キャッシュ記憶バッファの回路は、非キャッシュ記憶バッファを対象とする発行されたメモリ要求を受信する(ブロック302)。いくつかの実施形態では、非キャッシュ記憶バッファは、時間局所性及び空間局所性のうち1つ以上を欠くメモリ要求によって対象にされるデータに起因してキャッシュに記憶されないデータを記憶する。アクセス回路は、メモリ要求によって示される非キャッシュ記憶バッファにアクセスする(ブロック304)。例えば、メモリ要求は、メモリアクセスが読み出しアクセスであるか書き込みアクセスであるかを示す。非キャッシュ記憶バッファの回路は、受信されたメモリ要求のタグを検査して、メモリ要求のこのインスタンスの処理中、メモリ要求のターゲットアドレスを使用するデータプリフェッチを防止するか許可するかを決定する(ブロック306)。例えば、一実施形態では、タグは、受信されたメモリ要求のこのインスタンスの処理中、データプリフェッチを防止するか許可するかを指定するフラグを含む。
タグが、受信されたメモリ要求のこのインスタンスの処理中、データプリフェッチを許可することを示す場合(条件ブロック308の「許可」)、非キャッシュ記憶バッファのプリフェッチエンジンは、受信されたメモリ要求のターゲットアドレスに基づいて、データを非キャッシュ記憶バッファにプリフェッチするための1つ以上のプリフェッチ要求を生成する(ブロック310)。いくつかの実施形態では、メモリ要求のターゲットアドレスは、プリフェッチエンジンに送信され、プリフェッチエンジンは、アドレス範囲内のいくつかのデマンドメモリアクセスを監視した後、連続プリフェッチを開始する。このタイプの連続プリフェッチは、プリフェッチエンジンに転送された連続メモリアクセス動作への一致が失敗すると、プリフェッチエンジンによって停止される。他の実施形態では、プリフェッチエンジンは、ターゲットアドレスに基づいて、いくつかのキャッシュラインを自動的にプリフェッチする。
いくつかの実施形態では、ロード/記憶ユニット及び非キャッシュ記憶バッファの回路のうち1つ以上が、非キャッシュ記憶バッファのメモリアクセスの指標をキャッシュに送信する(ブロック312)。キャッシュは、受信されたメモリ要求のこのインスタンスの処理中、データプリフェッチが防止されるか許可されるかを示すフラグを受信する。キャッシュは、受信されたメモリ要求によって要求されるデータを記憶しないが、キャッシュのプリフェッチエンジンは、受信されたメモリ要求のターゲットアドレス(要求アドレス)に基づいて、データプリフェッチ又はプリフェッチトレーニングを実行することができる。様々な実施形態では、受信されたメモリ要求のこのインスタンスの処理中、プリフェッチが許可されることをフラグが示す場合、キャッシュのプリフェッチエンジンは、ターゲットアドレスを使用して、ターゲットアドレスに基づいてプリフェッチ要求を生成すること及びトレーニングすることのうち1つ以上を実行する。例えば、プリフェッチエンジンは、アドレス範囲内のいくつかのデマンドメモリアクセスの監視を実行する。
タグが、受信されたメモリ要求のこのインスタンスの処理中、データプリフェッチを防止することを示す場合(条件ブロック308の「防止」)、非キャッシュ記憶バッファ及びキャッシュへのデータプリフェッチは、受信されたメモリ要求のこのインスタンスの処理中、防止される(ブロック314)。同じターゲットアドレスを有する、より若いプログラム順のメモリ要求及び未だ処理されていないこのメモリ要求の他のインスタンス等の他のメモリ要求は、ターゲットアドレスに対して許可されたデータプリフェッチを有し得る。それらのメモリ要求のタグの各々は、メモリ要求のそれらのインスタンスの処理中、メモリ要求のターゲットアドレスに基づいて、データプリフェッチを許可するか防止するかを示すフラグを含む。しかしながら、受信されたメモリ要求のこのインスタンスの処理中、データプリフェッチは、受信されたメモリ要求のタグ内に記憶されたフラグによって指定された指標により防止される。いくつかの実施形態では、非キャッシュ記憶バッファの回路は、受信されたメモリ要求のターゲットアドレスを、非キャッシュ記憶バッファのプリフェッチエンジン及びキャッシュのプリフェッチエンジンの何れにも送信しない。一実施形態では、非キャッシュ記憶バッファの回路は、受信されたメモリ要求のいかなる情報もキャッシュに送信しない。他の実施形態では、非キャッシュ記憶バッファは、受信されたメモリ要求のこのインスタンスの処理中、プリフェッチが許可されるか防止されるかを指定するフラグを含む、受信されたメモリ要求の情報をキャッシュに送信する。そのような実施形態では、キャッシュコントローラ及びキャッシュのプリフェッチエンジンのうち1つ以上の回路は、プリフェッチ要求を生成することを許可するか防止するかを決定し、受信されたフラグに基づいて、ターゲットアドレスに基づいたプリフェッチトレーニングを実行する。
図4を参照すると、局所性を欠くメモリ要求を処理するための方法400の一実施形態が示されている。キャッシュは、非キャッシュ記憶バッファのメモリアクセスの指標を受信する(ブロック402)。様々な実施形態では、メモリアクセスは、非キャッシュ記憶バッファを対象とするメモリ要求に対応する。キャッシュは、受信したメモリアクセスの読み出し又はキャッシュ書き込み処理をバイパスする(ブロック404)。キャッシュの回路は、受信されたメモリアクセスのタグを検査して、メモリアクセスのこのインスタンスの処理中、受信されたメモリアクセスのターゲットアドレスを使用してデータプリフェッチを防止するか許可するかを決定する(ブロック406)。
タグが、受信されたメモリアクセスのこのインスタンスの処理中、データプリフェッチを許可することを示す場合(条件ブロック408の「許可」)、キャッシュのプリフェッチエンジンは、受信されたメモリアクセスのターゲットアドレスに基づいて1つ以上のプリフェッチ要求を生成すること及びプリフェッチトレーニングを実行することのうち1つ以上を実行する(ブロック410)。しかしながら、タグが、受信されたメモリアクセスのこのインスタンスの処理中、データプリフェッチを防止することを示す場合(条件ブロック408の「防止」)、キャッシュのプリフェッチエンジンは、受信されたメモリアクセスのターゲットアドレスに基づいて1つ以上のプリフェッチ要求を生成すること及びプリフェッチトレーニングを実行することのうち1つ以上を実行することを防止する(ブロック412)。同じターゲットアドレスを有する、より若いプログラム順のメモリ要求に対応するメモリアクセス及び未だ処理されていないこのメモリアクセスの他のインスタンス等の他のメモリアクセスは、ターゲットアドレスに対して許可されたデータプリフェッチを有し得る。しかしながら、受信されたメモリアクセスのこのインスタンスの処理中、データプリフェッチは、受信されたメモリアクセスのタグ内に記憶されたフラグによって指定された指標により防止される。
いくつかの実施形態では、非キャッシュ記憶バッファをサポートする回路は、キャッシュの外部にあることに留意されたい。したがって、データプリフェッチが、受信されたメモリ要求のこのインスタンスの処理中、防止されることを指定する指標を、受信されたメモリ要求が記憶する場合、一実施形態では、非キャッシュ記憶バッファは、ターゲットアドレス(要求アドレス)をキャッシュに送信することを防止する。他の実施形態では、キャッシュのプリフェッチエンジンは、フラグが、受信されたメモリアクセスのこのインスタンスの処理中、データプリフェッチを防止することを示すが、キャッシュコントローラは、プリフェッチされたデータがキャッシュ内に存在する時間の量を制限するキャッシュライン交換ポリシーにおいて使用される最長時間未使用(least recently used、LRU)値の値を提供する場合、受信されたメモリアクセスの要求アドレスに基づいて、1つ以上のプリフェッチ要求を依然として生成する。代替的に、キャッシュコントローラは、プリフェッチされたデータの配置を、マルチウェイキャッシュ構成の特定のウェイに制限する。
図5を参照すると、局所性を欠くメモリ要求を処理するための方法500の一実施形態が示されている。ロード/記憶ユニット(LSU)又はプロセッサの他のユニット等のプロセッサのユニットの回路は、局所性を欠くデータを要求するプリフェッチヒント命令を受信する(ブロック502)。プリフェッチヒント命令の一例が、時間局所性を欠くデータに向けられるAMD64ビット命令PREFETCHNTAである。他の例が可能であり、企図される。要求されたデータが局所性を欠くことを指定するプリフェッチヒント命令内の指標に起因して、プロセッサは、他のタイプのロード命令とは異なって、このプリフェッチヒント命令に関するデータを取り出す。いくつかの実施形態では、プロセッサは、システムメモリからデータを取り出し、取り出されたデータをキャッシュメモリサブシステムの特定のレベルに記憶する。例えば、レベル2(L2)キャッシュは、取り出されたデータのコピーを記憶する一方、レベル1(L1)キャッシュ及びレベル3(L3)キャッシュは、使用される場合、バイパスされる。また、プロセッサは、プリフェッチヒント命令のターゲットアドレスに基づいて、特定の量のデータをプリフェッチする。例えば、場合によっては、プロセッサは、プリフェッチヒント命令のターゲットアドレスに基づいて、1つ以上のキャッシュラインをフェッチする。プロセッサは、取り出されたデータ又はプリフェッチされたデータのコピーを、これらのタイプのデータが後に何れかのキャッシュから追い出される場合、キャッシュメモリサブシステムの何れのレベルにも記憶しない。このプリフェッチヒント命令のための他のタイプの処理データが可能であり、企図される。プリフェッチヒント命令のタグ内のフラグを用いることにより、上述したようなデータプリフェッチを防止することができる。
プロセッサは、受信されたプリフェッチヒント命令によって示される読み出しアクセスを実行する(ブロック504)。プロセッサは、プリフェッチヒント命令のターゲットアドレスによってポイントされるメモリ位置に記憶されたデータを取り出す。プロセッサは、取り出されたデータのコピーを、キャッシュ及び非キャッシュ記憶バッファのうち1つ以上に記憶する(ブロック506)。キャッシュの特定のレベルは、設計要件に基づくので、いくつかの例では、プロセッサコアの最も近くに位置するL1キャッシュが、取り出されたデータのコピーを記憶しない一方、L2キャッシュが、取り出されたデータのコピーを記憶する。他の記憶配置が可能であり、企図される。いくつかの実施形態では、プリフェッチされたデータがキャッシュに記憶されると、対応するキャッシュコントローラが、キャッシュデータアレイにおいて、プリフェッチヒント命令によって対象とされるデータの記憶時間及び/又は記憶場所に制限を設定する。例えば、キャッシュコントローラは、プリフェッチされたデータがキャッシュに存在する時間の量を制限するキャッシュライン交換ポリシーにおいて使用される最長時間未使用(LRU)値の値を提供する。また、キャッシュコントローラは、プリフェッチされたデータの配置を、マルチウェイセットアソシアティブキャッシュ構成の特定のウェイに制限することができる。
プロセッサは、プリフェッチヒント命令のタグを検査して、プリフェッチヒント命令のこのインスタンスの処理中、プリフェッチヒント命令のターゲットアドレスを使用してデータプリフェッチを防止するか許可するかを決定する(ブロック508)。タグが、プリフェッチヒント命令のこのインスタンスの処理中、データプリフェッチを許可することを示す場合(条件ブロック510の「許可」)、キャッシュ及び非キャッシュ記憶バッファのうちの1つ以上のプリフェッチエンジンは、プリフェッチヒント命令のターゲットアドレスに基づいて、1つ以上のプリフェッチ要求を生成する(ブロック512)。しかしながら、タグが、プリフェッチヒント命令のこのインスタンスの処理中、データプリフェッチを防止することを示す場合(条件ブロック510の「防止」)、プロセッサは、キャッシュ及び非キャッシュ記憶バッファのうち1つ以上のプリフェッチエンジンが、プリフェッチヒント命令のターゲットアドレスに基づいて、プリフェッチ要求を生成することを防止する(ブロック514)。いくつかの実施形態では、プロセッサは、プリフェッチヒント命令の任意の情報を、キャッシュ及び非キャッシュ記憶バッファのうち1つ以上のプリフェッチエンジンに送信することを防止することによって、プリフェッチを防止する。
上述した実施形態のうち1つ以上がソフトウェアを含むことに留意されたい。そのような実施形態では、方法及び/又はメカニズムを実施するプログラム命令は、コンピュータ可読記憶媒体に伝達又は記憶される。プログラム命令を記憶するように構成されている多数のタイプの媒体が利用可能であり、ハードディスク、フロッピー(登録商標)ディスク、CD-ROM、DVD、フラッシュメモリ、プログラマブルROM(Programmable ROM、PROM)、ランダムアクセスメモリ(RAM)、及び、様々な他の形態の揮発性又は不揮発性記憶装置が挙げられる。一般的に言えば、コンピュータアクセス可能記憶媒体は、命令及び/又はデータをコンピュータに提供するために、使用中にコンピュータによってアクセス可能な任意の記憶媒体を含む。例えば、コンピュータアクセス可能記憶媒体としては、磁気又は光学媒体(例えば、ディスク(固定又は取り外し可能)、テープ、CD-ROM、DVD-ROM、CD-R、CD-RW、DVD-R、DVD-RW、Blu-Ray(登録商標)等)の記憶媒体が挙げられる。記憶媒体としては、RAM(例えば、同期ダイナミックRAM(synchronous dynamic RAM、SDRAM)、ダブルデータレート(double data rate、DDR、DDR2、DDR3等)SDRAM、低電力DDR(low-power DDR、LPDDR2等)SDRAM、ラムバスDRAM(Rambus DRAM、RDRAM)、スタティックRAM(static RAM、SRAM)等)、ROM、フラッシュメモリ等の揮発性又は不揮発性メモリ媒体、ユニバーサルシリアルバス(Universal Serial Bus、USB)インターフェース等の周辺インターフェースを介してアクセス可能な不揮発性メモリ(例えば、フラッシュメモリ)等が更に挙げられる。記憶媒体としては、微小電気機械システム(microelectromechanical system、MEMS)、並びに、ネットワーク及び/又はワイヤレスリンク等の通信媒体を介してアクセス可能な記憶媒体が挙げられる。
加えて、様々な実施形態では、プログラム命令は、C等の高レベルプログラミング言語、又は、Verilog、VHDL等の設計言語(design language、HDL)、又は、GDSIIストリームフォーマット(GDSII)等のデータベースフォーマットでのハードウェア機能の動作レベル記述又はレジスタ転送レベル(register-transfer level、RTL)記述を含む。場合によっては、記述は、合成ライブラリからゲートのリストを含むネットリストを生成するために記述を合成する合成ツールによって読み出される。ネットリストは、システムを含むハードウェアの機能も表すゲートのセットを含む。ネットリストは、次いで、マスクに適用される幾何学的形状を記述するデータセットを生成するために、配置及びルーティングされ得る。次に、マスクは、システムに対応する半導体回路又は回路を生成するために、様々な半導体製造ステップで使用され得る。代替的に、コンピュータアクセス可能記憶媒体上の命令は、必要に応じて、ネットリスト(合成ライブラリを有する、若しくは有しない)又はデータセットである。加えて、命令は、Cadence(登録商標)、EVE(登録商標)及びMentor Graphics(登録商標)等のベンダからのハードウェアベースのタイプのエミュレータによるエミュレーションのために利用される。
上記の実施形態はかなり詳細に説明されているが、上記の開示が十分に理解されると、多数の変形及び変更が当業者には明らかになるであろう。以下の特許請求の範囲は、全てのそのような変形及び変更を包含すると解釈されることが意図されている。

Claims (20)

  1. 装置であって、
    非キャッシュ記憶バッファと、
    回路と、を備え、
    前記回路は、
    前記非キャッシュ記憶バッファを対象とする第1のメモリ要求を受信することと、
    前記第1のメモリ要求に少なくとも部分的に基づいて、前記非キャッシュ記憶バッファへのデータプリフェッチを防止することと、
    を行うように構成されている、
    装置。
  2. 前記回路は、前記第1のメモリ要求が、前記第1のメモリ要求のターゲットアドレスを用いたデータプリフェッチが防止されることを指定する第1の指標を含むことを判別するように構成されている、
    請求項1の装置。
  3. 前記第1のメモリ要求が前記第1の指標を含むという判別に少なくとも部分的に基づいて、前記回路は、前記第1のメモリ要求の前記ターゲットアドレスを用いたキャッシュへのデータプリフェッチを防止するように構成されている、
    請求項2の装置。
  4. 前記回路は、
    前記非キャッシュ記憶バッファを対象とする第2のメモリ要求を受信することと、
    前記第2のメモリ要求に少なくとも部分的に基づいて、前記非キャッシュ記憶バッファへのデータプリフェッチを許可することと、
    を行うように構成されている、
    請求項1の装置。
  5. 前記回路は、前記第2のメモリ要求が、前記第1のメモリ要求の前記ターゲットアドレスを用いたデータプリフェッチが許可されることを指定する第2の指標を含むことを判別するように構成されている、
    請求項4の装置。
  6. 前記第1のメモリ要求は、時間局所性及び空間局所性のうち1つ以上を欠くメモリ要求である、
    請求項1の装置。
  7. 前記回路は、
    第3のメモリ要求を受信することと、
    前記第3のメモリ要求の処理中に、下位レベルのメモリからキャッシュに取り出されたデータについて、前記キャッシュにおける記憶時間及び記憶場所のうち1つ以上に制限を設定することと、
    を行うように構成されている、
    請求項1の装置。
  8. 前記回路は、前記第3のメモリ要求が、前記制限を設定することを指定する第3の指標を含むプリフェッチヒント命令であると判別するように構成されている、
    請求項7の装置。
  9. 方法であって、
    回路が、非キャッシュ記憶バッファを対象とする第1のメモリ要求を受信することと、
    前記回路が、前記第1のメモリ要求に少なくとも部分的に基づいて、前記非キャッシュ記憶バッファへのデータプリフェッチを防止することと、を含む、
    方法。
  10. 前記第1のメモリ要求が、前記第1のメモリ要求のターゲットアドレスを用いたデータプリフェッチが防止されることを指定する第1の指標を含むことを判別することを含む、
    請求項9の方法。
  11. 前記方法は、前記第1のメモリ要求が前記第1の指標を含むと判別したことに応じて、前記第1のメモリ要求の前記ターゲットアドレスを用いたキャッシュへのデータプリフェッチを防止することを含む、
    請求項10の方法。
  12. 前記非キャッシュ記憶バッファを対象とする第2のメモリ要求を受信することと、
    前記第2のメモリ要求に少なくとも部分的に基づいて、前記非キャッシュ記憶バッファへのデータプリフェッチを許可することと、を含む、
    請求項9の方法。
  13. 前記第2のメモリ要求が、前記第1のメモリ要求の前記ターゲットアドレスを用いたデータプリフェッチが許可されていることを指定する第2の指標を含むことを判別することを含む、
    請求項12の方法。
  14. 第3のメモリ要求を受信することと、
    前記第3のメモリ要求の処理中に、下位レベルのメモリからキャッシュに取り出されたデータについて、前記キャッシュにおける記憶時間及び記憶場所のうち1つ以上に制限を設定することと、を含む、
    請求項9の方法。
  15. 前記第3のメモリ要求が、前記制限を設定することを指定する第3の指標を含むプリフェッチヒント命令であると判別することを含む、
    請求項14の方法。
  16. 処理ユニットであって、
    下位レベルのメモリと通信するように構成されたインターフェースと、
    キャッシュと、
    非キャッシュ記憶バッファを備えるプロセッサコアと、
    回路と、を備え、
    前記回路は、
    前記非キャッシュ記憶バッファを対象とする第1のメモリ要求を受信することと、
    前記第1のメモリ要求に少なくとも部分的に基づいて、前記非キャッシュ記憶バッファへのデータプリフェッチを防止することと、
    を行うように構成されている、
    処理ユニット。
  17. 前記回路は、前記第1のメモリ要求が、前記第1のメモリ要求のターゲットアドレスを用いたデータプリフェッチが防止されることを指定する第1の指標を含むことを判別するように構成されている、
    請求項16の処理ユニット。
  18. 前記第1のメモリ要求が前記第1の指標を含むという判別に少なくとも部分的に基づいて、前記回路は、前記第1のメモリ要求の前記ターゲットアドレスを用いた前記キャッシュへのデータプリフェッチを防止するように構成されている、
    請求項17の処理ユニット。
  19. 前記回路は、
    前記非キャッシュ記憶バッファを対象とする第2のメモリ要求を受信することと、
    前記第2のメモリ要求に少なくとも部分的に基づいて、前記非キャッシュ記憶バッファへのデータプリフェッチを許可することと、
    を行うように構成されている、
    請求項16の処理ユニット。
  20. 前記回路は、前記第2のメモリ要求が、前記第1のメモリ要求の前記ターゲットアドレスを用いたデータプリフェッチが許可されることを指定する第2の指標を含むことを判別するように構成されている、
    請求項19の処理ユニット。
JP2023518252A 2020-09-25 2021-09-23 局所性を欠くデータを対象とするメモリ要求のプリフェッチ無効化 Pending JP2023550231A (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US202063083648P 2020-09-25 2020-09-25
US63/083,648 2020-09-25
US17/132,769 2020-12-23
US17/132,769 US11645207B2 (en) 2020-09-25 2020-12-23 Prefetch disable of memory requests targeting data lacking locality
PCT/US2021/051834 WO2022066967A1 (en) 2020-09-25 2021-09-23 Prefetch disable of memory requests targeting data lacking locality

Publications (1)

Publication Number Publication Date
JP2023550231A true JP2023550231A (ja) 2023-12-01

Family

ID=80822677

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2023518252A Pending JP2023550231A (ja) 2020-09-25 2021-09-23 局所性を欠くデータを対象とするメモリ要求のプリフェッチ無効化

Country Status (6)

Country Link
US (1) US11645207B2 (ja)
EP (1) EP4217875A1 (ja)
JP (1) JP2023550231A (ja)
KR (1) KR20230069943A (ja)
CN (1) CN116194901A (ja)
WO (1) WO2022066967A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230289190A1 (en) * 2022-03-10 2023-09-14 Nvidia Corporation Programmatically controlled data multicasting across multiple compute engines

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3954992B2 (ja) * 2003-06-27 2007-08-08 富士通株式会社 メモリインタフェース回路
US9418013B2 (en) 2014-06-30 2016-08-16 Intel Corporation Selective prefetching for a sectored cache
US9535696B1 (en) 2016-01-04 2017-01-03 International Business Machines Corporation Instruction to cancel outstanding cache prefetches
US20170371564A1 (en) * 2016-06-28 2017-12-28 Advanced Micro Devices, Inc. Method and apparatus for memory efficiency improvement by providing burst memory access control
US10229060B2 (en) 2016-12-05 2019-03-12 Intel Corporation Instruction and logic for software hints to improve hardware prefetcher effectiveness
US10452551B2 (en) 2016-12-12 2019-10-22 Intel Corporation Programmable memory prefetcher for prefetching multiple cache lines based on data in a prefetch engine control register

Also Published As

Publication number Publication date
US11645207B2 (en) 2023-05-09
CN116194901A (zh) 2023-05-30
KR20230069943A (ko) 2023-05-19
US20220100664A1 (en) 2022-03-31
WO2022066967A1 (en) 2022-03-31
EP4217875A1 (en) 2023-08-02

Similar Documents

Publication Publication Date Title
KR101614867B1 (ko) 데이터 스트림에 대한 저장 인식 프리페치
US8583894B2 (en) Hybrid prefetch method and apparatus
US9098418B2 (en) Coordinated prefetching based on training in hierarchically cached processors
US10621100B1 (en) Unified prefetch circuit for multi-level caches
US9904624B1 (en) Prefetch throttling in a multi-core system
US11030108B2 (en) System, apparatus and method for selective enabling of locality-based instruction handling
US10331567B1 (en) Prefetch circuit with global quality factor to reduce aggressiveness in low power modes
US20180349280A1 (en) Snoop filtering for multi-processor-core systems
KR20210098533A (ko) 코프로세서 동작 번들링
US20220261360A1 (en) Multiple-requestor memory access pipeline and arbiter
GB2532545A (en) Processors and methods for cache sparing stores
EP2831744A1 (en) Apparatus and method for fast cache shutdown
US10963392B1 (en) Victim allocations in shared system cache
US11645207B2 (en) Prefetch disable of memory requests targeting data lacking locality
US7251710B1 (en) Cache memory subsystem including a fixed latency R/W pipeline
EP4020229A1 (en) System, apparatus and method for prefetching physical pages in a processor
KR20230076814A (ko) 제외 영역을 갖는 dsb 동작
US11921640B2 (en) Mitigating retention of previously-critical cache lines
Perotti Design of an OS compliant memory system for LEN5, a RISC-V Out of Order processor
TW202225978A (zh) 用於具有大的碼覆蓋區的工作負載的動態共享快取劃分

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20230904