JP2018519614A - 追い出しを促すための先読みタグ - Google Patents

追い出しを促すための先読みタグ Download PDF

Info

Publication number
JP2018519614A
JP2018519614A JP2018511588A JP2018511588A JP2018519614A JP 2018519614 A JP2018519614 A JP 2018519614A JP 2018511588 A JP2018511588 A JP 2018511588A JP 2018511588 A JP2018511588 A JP 2018511588A JP 2018519614 A JP2018519614 A JP 2018519614A
Authority
JP
Japan
Prior art keywords
data
cache
processor
prefetching
interconnect
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
JP2018511588A
Other languages
English (en)
Other versions
JP2018519614A5 (ja
JP6497831B2 (ja
Inventor
キエル・スヴェンドセン
Original Assignee
アプライド・マイクロ・サーキット・コーポレーション
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 アプライド・マイクロ・サーキット・コーポレーション filed Critical アプライド・マイクロ・サーキット・コーポレーション
Publication of JP2018519614A publication Critical patent/JP2018519614A/ja
Publication of JP2018519614A5 publication Critical patent/JP2018519614A5/ja
Application granted granted Critical
Publication of JP6497831B2 publication Critical patent/JP6497831B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning

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

データをメインメモリからキャッシュに先読みし、次いで未使用データをより低いレベルのキャッシュに追い出すシステムが、述べられる。先読みシステムは、データをメインメモリからキャッシュに先読みし、すぐに使用可能でない、またはキャッシュに入れるには大きすぎるデータセットの一部であるデータは、より低いレベルのキャッシュに追い出すためのタグを付けられてもよく、それは、データがメインメモリから再度ロードされなければならない場合よりも短いレイテンシでデータを利用可能な状態に保つ。これは、あまりに先んじて使用可能なデータを先読みするコストを低くし、キャッシュトラッシングを防止する。

Description

この開示は、データをキャッシュにメインメモリから先読みすること(prefetching)、およびキャッシュトラッシングを防止するためにデータを追い出すこと(evicting)に関する。
現代のマイクロプロセッサは、プログラムが記憶されるメモリよりもはるかに高速であり、それは、プログラム命令がメインメモリから読み出される場合、マイクロプロセッサをビジー状態に保つことができるほど高速にはその命令を読み出すことができないことを意味する。少量の非常に速いメモリであるキャッシュを各プロセッサに追加することは、必要とされる命令へのより速いアクセスを提供することによって処理時間を短縮することができる。
先読みは、予想される命令が、プロセッサによって要求される前にキャッシュにロードされるプロセスである。現代のシステムは、各プロセッサ、またはプロセッサの各コアが、各コア/プロセッサに専用の1または2レベルのキャッシュ、およびコア/プロセッサの間で共有される1つまたは複数の追加のキャッシュレベルを有することもある、マルチキャッシュシステムに発展してきた。コア/プロセッサから離れた各連続レベルのキャッシュは、前のキャッシュレベルよりも大きいが、しかし遅いこともある。メインメモリからレベル1またはレベル2キャッシュなどのプロセッサキャッシュに先読みすることは、データへの低レイテンシアクセスを提供することができるが、しかしプロセッサキャッシュのサイズが小さいので、すぐに使用されないデータ、またはキャッシュのサイズよりも大きいデータセットは、リソースの競合および混乱(キャッシュトラッシング)を引き起こす可能性がある。
一実施形態では、キャッシュ先読みシステムは、プロセッサ、共有キャッシュ、およびメインメモリを通信可能に結合するために構成される相互接続を備える。キャッシュ先読みシステムは、データのセットをメインメモリから相互接続を介してプロセッサキャッシュに先読みするために構成されるプロセッサキャッシュプリフェッチャを含むことができ、プロセッサキャッシュは、プロセッサに関連付けられており、プロセッサキャッシュは、そのデータのセットからのデータの第1の部分に未使用とタグを付け、そのデータのセットからのデータの第2の部分に使用済みとタグを付ける。キャッシュ先読みシステムは、データの第1の部分を共有キャッシュに相互接続を介して追い出し、データの第2の部分をメインメモリに相互接続を介して追い出すために構成されるプロセッサキャッシュエビクタを含むことができる。
別の実施形態では、キャッシュ先読みシステムは、プロセッサと、プロセッサによって実行されるときに動作の実施を容易にする実行可能命令を記憶するメモリとを含むことができる。動作は、システムメモリから、プロセッサに関連付けられたプロセッサキャッシュに、データのセットを先読みするステップと、そのデータのセットのデータの第1の部分に、データの第1の部分が実行されるデータであるとの表示でタグ付けするステップとを含むことができる。動作は、そのデータのセットのデータの第2の部分に、データの第2の部分が実行されるデータである可能性があるとの表示でタグ付けするステップと、データの第2の部分を共有キャッシュに追い出すステップとを含むことができる。
別の実施形態では、方法は、システムメモリから、プロセッサに関連付けられたプロセッサキャッシュに、データのセットを先読みするステップを含む。本方法は、そのデータのセットのデータの第1の部分に、データの第1の部分が使用されるデータであるとの表示でタグ付けするステップを含むことができる。本方法は、そのデータのセットのデータの第2の部分に、データの第2の部分が未使用データであるとの表示でタグ付けするステップを含むことができる。本方法は、データの第2の部分を共有キャッシュに追い出すステップを含むことができる。
リングアーキテクチャ相互接続を用いて先読みするためのシステムの一実施形態を例示するブロック図である。 先読みシステムの一実施形態を例示するブロック図である。 先読みシステムの一実施形態を例示するブロック図である。 先読みシステムの一実施形態を例示するブロック図である。 先読みシステムの一実施形態を例示するブロック図である。 キャッシュトラッシングを防止するためにデータを追い出す先読みキャッシュシステムを有するプロセッサの一実施形態を例示するブロック図である。 キャッシュトラッシングを防止するためにデータを追い出す先読みキャッシュシステムを有するプロセッサの一実施形態を例示するブロック図である。 キャッシュトラッシングを防止するために未使用データを先読みし、追い出すための方法の一実施形態の流れ図を例示する図である。 例示的な電子コンピューティング環境のブロック図を例示する図である。 例示的なデータ通信ネットワークのブロック図を例示する図である。
様々な実施形態は、データをメインメモリからキャッシュに先読みし、次いで未使用データをより低いレベルのキャッシュに追い出すシステムを提供する。先読みシステムは、データをメインメモリからキャッシュに先読みし、すぐに使用できないまたはキャッシュに入れるには大きすぎるデータセットの一部であるデータは、より低いレベルのキャッシュに追い出すためのタグを付けられてもよく、それは、データがメインメモリから再びロードされなければならない場合よりも短いレイテンシでデータを利用可能な状態に保つ。これは、あまりに先んじて使用可能なデータを先読みするコストを低くし、キャッシュトラッシングを防止する。
より遅いメモリ(DDR、ディスク)からのロードは、性質が空間的かつ時間的である傾向があるので、データは、それが使用され得るよりも十分に前に先読みされてもよい。関連データは、プロセッサによって要求されているデータの物理的または論理的に近くに位置することもあるので、先読みは、ロードの空間的性質を利用する。したがって、アドレスの流れについて、メモリアドレスAへのロードのすぐ後に、メモリアドレスA+Nへのロードが続くことになる可能性が高く、ただしNは、どんな任意の整数であってもよく、したがってロードは、アドレスA+N*mへとストライドで(in strides)行われ、ただしmは、別の任意の符号付き整数である。
関連データならびに現在要求されるデータを先読みすることによって、メインメモリまたは記憶装置からのデータのさらなるローディングは、回避することができる。レベル2キャッシュなどのプロセッサレベルキャッシュは、あまり大きくないので、データは、実行の次の順番でない限り、またはもうすぐ処理されることにならない限り、そこに記憶されるべきでない。したがって、すぐ次の順番でないデータは、未使用データとタグを付けられてもよく、レベル3キャッシュなどのより低いレベルのキャッシュに追い出されてもよい。レベル3キャッシュは、レベル2キャッシュよりも遅いこともあるが、しかしそれは、はるかにより大きくすることができ、後になって使用されることもあるデータをより実行可能に保有することができる。レベル3キャッシュに追い出されたデータが、次いでプロセッサによって必要とされるとき、レベル2キャッシュは、メインメモリからデータを先読みするよりもはるかに速くそのデータをレベル3キャッシュから先読みすることができる。
図1は、リングアーキテクチャ相互接続を用いて先読みするためのシステム100の実施形態を例示するブロック図である。プロセッサ102は、1つまたは複数のコアを含むことができる(図1では4コアを有して示される)。プロセッサ102はまた、プロセッサレベルキャッシュ、またはプロセッサ102の各コアに関連付けられたキャッシュを含むこともできる。このキャッシュは、いくつかの実施形態ではレベル2キャッシュとすることができる。プロセッサ102はまた、リング相互接続104を介して1つまたは複数の共有キャッシュ108および110、ならびにメインメモリ106に通信可能に結合されてもよい。リング相互接続104などのリング相互接続を有するシステムでは、共有キャッシュ108および110は、各プロセッサに直接結び付けられることなく、1つまたは複数のプロセッサ(例えば、プロセッサ102、その他)の間で共有されてもよい。共有キャッシュ、いくつかの実施形態ではレベル3キャッシュは、したがって多重コアおよび/またはプロセッサの間で分散されてもよい。
一実施形態では、プロセッサ102は、プロセッサ102内の各コア、またはコアの対について、プロセッサレベルキャッシュ、またはレベル2キャッシュを含むことができる。プロセッサ102によって実行されるデータは、レベル2キャッシュからレベル1キャッシュに、さらにはプロセッサ102に関連付けられたレジスタに直接に読み出されてよい。プロセッサ102上のプロセッサレベルキャッシュが、プロセッサ102が実行のために必要とすることになるデータを有することを確実にし、プロセッサがキャッシュ内のメモリ位置を見いだせないキャッシュミスを回避するために、プロセッサキャッシュは、データをメインメモリ106からリング相互接続104を介して先読みすることができる。予測ヒューリスティックスを使用すると、プロセッサキャッシュ内のプリフェッチャは、上で述べられたA+N*mアルゴリズムを使用してどのデータが次に使用される可能性があるかを予測し、プロセッサ102が、データを必要とするときに、データが、利用可能であるように、データをプロセッサキャッシュにプリロードすることができる。
関連データは、要求されるデータに物理的もしくは論理的に近いか、またはアドレス空間において関連している可能性があることもあるので、関連データは、後になってプロセッサによって要求されることもあるため、要求されるデータに加えて先読みされてもよい。もしデータセットが、プロセッサ上のレベル2キャッシュにとって大きすぎる、または所定の期間内に使用されないこともあるならば、レベル2キャッシュは、そのデータに「先読みだけ」または「未使用」とマークを付けることができ、それは、データを共有キャッシュ108または110に追い出すことを促すことになる。完全に関係のないこともあるデータは、追い出されてメインメモリ106に戻されてもよいが、しかしもしデータがおそらくは、近い将来に、または所定の期間内に使用されることもあるならば、データは、共有キャッシュ108または110への追い出しのためのタグを付けられてもよい。データは、共有キャッシュ108または110に追い出されるべきかどうかに基づいて、インジケータビットをオンまたはオフに設定することによってタグを付けられてもよい。一実施形態では、データは、プロセッサによる将来使用の確率の表示に基づいてタグを付けられてもよい。将来使用の確率に基づいて、レベル3キャッシュ、または共有キャッシュ108もしくは110は、メインメモリ106に追い出す前に所定の長さの時間にわたってデータを保持することができる。同様に、もし所定の期間内での将来使用の確率が、非常に高いならば、プロセッサキャッシュは、データに追い出しのためのタグを付けなくてもよい。
そのデータが、後になってプロセッサによって要求されるとき、データを共有キャッシュ108または110から取り戻すためのレイテンシは、データをメインメモリ106から取り戻すレイテンシよりもはるかに短いことになる。
レベル2およびレベル3のキャッシュに言及されたけれども、先読みされたデータに階層的により低いキャッシュシステムへの追い出しのためのタグを付ける先読みシステムを述べる本明細書での概念は、他の実施形態において適用されてもよいことを認識すべきである。例えば、データは、レベル1キャッシュに先読みされ、次いでレベル2キャッシュに追い出されてもよく、他の実施形態では、レベル3および4のキャッシュ、またはそれらの様々な組み合わせが、使用されてもよい。
図2は、先読みシステム200の実施形態例を示すブロック図を例示する。プロセッサ202は、1つまたは複数のコアを含むことができる(図2では4つのコアを有して示される)。プロセッサ202はまた、プロセッサレベルキャッシュ204も含むことができ、いくつかの実施形態では、各コアは、キャッシュ204に似たキャッシュを含むことができる。キャッシュ204は、いくつかの実施形態ではレベル2キャッシュとすることができる。プロセッサ202はまた、相互接続210に通信可能に結合され、相互接続210を介して共有キャッシュ208およびメインメモリ206に通信可能に結合されてもよい。一実施形態では、共有キャッシュ208は、各プロセッサに直接結び付けられることなく、1つもしくは複数のプロセッサ(例えば、プロセッサ202、その他)および/またはコアの間で共有されてもよい。共有キャッシュ208、いくつかの実施形態ではレベル3キャッシュは、したがって多重コアおよび/またはプロセッサの間で分散されてもよい。
プロセッサ202によって実行されるデータは、レベル2キャッシュからレベル1キャッシュに、さらにはプロセッサ202に関連付けられたレジスタに直接に読み出されてもよい。プロセッサ202上のプロセッサレベルキャッシュ204が、プロセッサ202が実行のために必要とすることになるデータを有することを確実にし、プロセッサがキャッシュ内にメモリ位置を見いだせないキャッシュミスを回避するために、プロセッサキャッシュは、データをメインメモリ206から相互接続210を介して先読みすることができる。予測ヒューリスティックスを使用すると、プロセッサキャッシュ内のプリフェッチャは、上で述べられたA+N*mアルゴリズムを使用してどのデータが次に使用される可能性があるかを予測し、プロセッサ202が、データを必要とするときに、データが、利用可能であるように、データをプロセッサキャッシュ204にプリロードするための要求をメインメモリ206に相互接続210を介して送ることができる。
図3は、先読みシステム300の一実施形態のブロック図を例示する。プロセッサ302およびキャッシュ304内のプリフェッチャが、メインメモリ306からプリロードされるべきデータを要求した後、データは、メインメモリ306からプロセッサ302およびキャッシュ304に相互接続310を介して送られてもよい。いくつかの実施形態では、データは、共有キャッシュ308(レベル3キャッシュ)を飛ばして、レベル2キャッシュ304に直接先読みされてもよく、他の実施形態では、データは、最初に共有キャッシュ308に先読みされ、次いで共有キャッシュ308からキャッシュ304に先読みされてもよい。キャッシュ304によって先読みされるデータは、プロセッサ302によって要求されているデータならびに要求されているデータに関連することもある他のデータとすることができる。関連データは、アドレス空間において関連する、または要求されるデータの物理的または論理的に近くに位置するデータとすることができ、すべてのおそらく関連するデータを先読みすることは、多重動作において、要求されるデータを先読みすることよりもより効率的とすることができる。
図4は、先読みシステム400の一実施形態の別のブロック図を例示する。プロセッサ402およびキャッシュ404が、一組の関連データをメインメモリ406から先読みした後、キャッシュ404は、データの一部分を共有キャッシュ408に相互接続410を介して追い出すことができる。関連データは、要求されるデータに物理的もしくは論理的に近いか、またはアドレス空間において関連する可能性があることもあるので、関連データは、後になってプロセッサによって要求されることもあってから、要求されるデータに加えて先読みされてもよい。もしデータセットが、プロセッサ402上のキャッシュ404にとって大きすぎる、または所定の期間内に使用されないこともあるならば、キャッシュ404は、そのデータに「先読みだけ」または「未使用」とマークを付けることができ、それは、データを共有キャッシュ408に追い出すことを促すことになる。完全に関係のないこともあるデータは、追い出されてメインメモリ406に戻されてもよいが、しかしもしデータがおそらくは、近い将来に、または所定の期間内に使用されることもあるならば、データは、共有キャッシュ408への追い出しのためのタグを付けられてもよい。データは、共有キャッシュ408に追い出されるべきかどうかに基づいて、インジケータビットをオンまたはオフに設定することによってタグを付けられてもよい。一実施形態では、データは、プロセッサ402による将来使用の確率の表示に基づいてタグを付けられてもよい。将来使用の確率に基づいて、レベル3キャッシュ、または共有キャッシュ408は、メインメモリ406に追い出す前に所定の長さの時間にわたってデータを保持することができる。同様に、もし所定の期間内での将来使用の確率が、非常に高いまたは所定の確率を上回るならば、プロセッサキャッシュ404は、データに追い出しのためのタグを付けなくてもよい。
図5は、先読みシステム500の一実施形態のブロック図を例示する。タグを付けられたデータが、共有キャッシュ508に追い出された後、もしプロセッサ502が、追い出されたデータを要求する、またはキャッシュ504上のプリフェッチャが、プロセッサ502がすぐに関連データを処理する/実行することになると決定するならば、データは、共有キャッシュ508から相互接続510を介して取り戻されてもよい。一実施形態では、もしデータが、すでに追い出されてメインメモリ506に戻っているならば、キャッシュ504は、データをメインメモリ506から相互接続510を介してロードすることができる。
図6は、キャッシュトラッシングを防止するためにデータを追い出す先読みキャッシュシステム600を有するプロセッサの一実施形態を例示するブロック図を例示する。プロセッサ602は、1つまたは複数のコアおよびキャッシュ604を含むことができる。いくつかの実施形態では、各コア、またはコアの対は、対応するキャッシュを有してもよい。いくつかの実施形態では、キャッシュ604は、レベル2キャッシュとすることができる。プロセッサ602はまた、共有キャッシュ612、およびメインメモリ614(DDR、ディスク、その他)に相互接続610を介して通信可能に結合されてもよい。相互接続610などのリング相互接続を有するシステムでは、共有キャッシュ612は、各プロセッサに直接結び付けられることなく、1つまたは複数のプロセッサ(例えば、プロセッサ602、その他)の間で共有されてもよい。共有キャッシュ612、いくつかの実施形態ではレベル3キャッシュは、したがって多重コアおよび/またはプロセッサの間で分散されてもよい。
一実施形態では、キャッシュ604は、先読みコンポーネント606(プリフェッチャ)および追い出しコンポーネント608(エビクタ)を含むことができる。先読みコンポーネントは、データのセットをメインメモリ614から相互接続610を介してキャッシュ604に先読みするように構成されてもよく、プロセッサキャッシュ604は、プロセッサ602に関連付けられている。先読みコンポーネント606は、そのデータのセットからのデータの第1の部分に未使用とタグを付け、そのデータのセットからのデータの第2の部分に使用済みとタグを付けることができる。
追い出しコンポーネント608は、データの第1の部分を共有キャッシュ612に相互接続610を介して追い出し、データの第2の部分をメインメモリ614に相互接続610を介して追い出すように構成されてもよい。
図7は、キャッシュトラッシングを防止するためにデータを追い出す先読みキャッシュシステム700を有するプロセッサの一実施形態のブロック図を例示する。プロセッサ702は、タグ付けコンポーネント706および予測コンポーネント708を有するキャッシュ704を含むことができる。タグ付けコンポーネント706は、データが、未使用である、または将来に使用される可能性があることを示すためにキャッシュ704によって先読みされるデータにタグを付けることができる。
プロセッサ要求データに関連するデータは、要求されるデータに物理的もしくは論理的に近いか、またはアドレス空間において関連している可能性があることもあるので、関連データは、後になってプロセッサ702によって要求されることもあってから、要求されるデータに加えて先読みされてもよい。もしデータセットが、プロセッサ上のキャッシュ704にとって大きすぎる、または所定の期間内に使用されないこともあるならば、キャッシュ704は、そのデータに「先読みだけ」または「未使用」とタグを付けることができ、それは、データをレベル3キャッシュまたはより低いレベルのキャッシュに追い出すことを促すことになる。完全に関係のないこともあるデータは、追い出されてメインメモリに戻されてもよいが、しかしもしデータがおそらくは、近い将来に、または所定の期間内に使用されることもあるならば、データは、共有キャッシュへの追い出しのためのタグを付けられてもよい。データは、共有キャッシュに追い出されるべきかどうかに基づいて、インジケータビットをオンまたはオフに設定することによってタグ付けコンポーネント706によってタグを付けられてもよい。一実施形態では、データは、プロセッサによる将来使用の確率の表示に基づいてタグを付けられてもよい。予測コンポーネント708は、データが所定期間内にプロセッサ702によって使用されることになる可能性を決定することができ、将来使用の確率に基づいて、レベル3キャッシュ、または共有キャッシュは、メインメモリに追い出す前に所定の長さの時間にわたってデータを保持することができる。タグ付けコンポーネント706はまた、将来使用の相対的または絶対的確率を示すデータにインジケータを設定することもできる。
上で述べられた例示的なシステムを考慮すると、述べられる主題に従って実施されてもよい方法は、図8の流れ図を参照してより良く認識されてもよい。本方法は、一連のブロックとして示され、述べられるが、いくつかのブロックは、本明細書で描かれるものと異なる順番でかつ/または他のブロックと同時に生じてもよいので、特許請求される主題は、ブロックの順番によって限定されない。すべての例示されるブロックが、以下で述べられる方法を実施するために必要とされることもあるとは限らない。
図8は、キャッシュトラッシングを防止するために未使用データを先読みし、追い出すための方法の一実施形態の流れ図である。手順800は、802から始めることができ、そこでは本方法は、システムメモリから、プロセッサに関連付けられたプロセッサキャッシュに、データのセットを先読みするステップを含む。先読みするステップは、いくつかの実施形態ではレベル2キャッシュとすることができるプロセッサキャッシュ内のプリフェッチャによって行われてもよい。先読みするステップは、プロセッサによって指示されるメモリアドレスにおけるデータだけでなく、要求されるデータに関連するメモリアドレスにおけるデータもまたロードする。予測ヒューリスティックスを使用すると、プリフェッチャは、どのデータが将来に使用される可能性があるかを予測することができ、それは、同様のアドレス空間内のデータ、または要求されるデータに物理的もしくは論理的に近いデータを含むことができる。この関連データは、プロセッサによるデータへのより速いアクセスを可能にするためにキャッシュにプリロードされてもよい。
804において、本方法は、そのデータのセットのデータの第1の部分にデータの第1の部分が使用されるデータであるとの表示でタグ付けするステップを含むことができる。もしデータが、プロセッサによって使用され、かつそれが、近い将来に再び使用される可能性がないならば、データは、メインメモリまたはディスクに追い出して戻すためのタグを付けられてもよい。同様に、806において、本方法は、そのデータのセットのデータの第2の部分にデータの第2の部分が実行されるデータである可能性があるとの表示でタグ付けするステップを含むことができ、808において、本方法は、データの第2の部分を共有キャッシュに追い出すステップを含む。すぐに使用されないが、しかし近い将来に使用されることもあるデータは、共有キャッシュ(例えば、レベル3キャッシュ)に送られてもよい。この共有キャッシュは、メインメモリからよりも迅速なデータへのアクセスを提供し、それを追い出すことで、プロセッサにおけるキャッシュ(レベル2キャッシュ)が追い出されたデータよりも早急にまたはすぐに使用されることもあるデータを保有することを可能にする。
本明細書で述べられる技法は、キャッシュトラッシングを回避するために先読みするステップおよび追い出すステップの実行を容易にすることが望ましい、任意のデバイスに適用されてもよい。ハンドヘルド、携帯および他のコンピューティングデバイスならびにすべての種類のコンピューティングオブジェクトは、様々な実施形態に関連して、すなわち、デバイスが、コンピューティングリソースを複数のゲストデバイスまたは仮想マシンと共有することを望むこともあるどこかで使用するために熟考される。それに応じて、図9において以下で述べられる以下の汎用リモートコンピュータは、一例であり、開示される主題は、ネットワーク/バス相互運用および相互作用を有する任意のクライアントを用いて実施されてもよい。したがって、開示される主題は、ほんの少しのまたは最小限のクライアントリソースしか関与していないネットワーク化ホスト型サービスの環境、例えば、クライアントデバイスが単に、電化製品内に置かれたオブジェクトなどの、ネットワーク/バスへのインターフェースとしての役割を果たすだけのネットワーク化環境において実施されてもよい。
図9は、開示される主題のいくつかの態様が、実施されてもよい、コンピューティングシステム環境900の例を示すが、コンピューティングシステム環境900は、デバイスのためのコンピューティング環境の一例である。
図9は、開示される主題を実施するための例示的なデバイスであり、コンピュータ910の形の汎用コンピューティングデバイスを含む。コンピュータ910のコンポーネントは、処理ユニット920、システムメモリ930、およびシステムメモリを含む様々なシステムコンポーネントを処理ユニット920に結合するシステムバス921を含んでもよい。
コンピュータ910は、いろいろなコンピュータ可読媒体を含む。コンピュータ可読媒体は、コンピュータ910によってアクセス可能な任意の利用可能な媒体とすることができる。システムメモリ930は、読み出し専用メモリ(ROM)および/またはランダムアクセスメモリ(RAM)などの揮発性および/または不揮発性メモリの形のコンピュータ記憶媒体を含んでもよい。
コンピュータ910は、リモートコンピュータ970などの1つまたは複数の他のリモートコンピュータへの論理接続を使用してネットワーク化または分散型環境において動作することができ、それらは次に、デバイス910と異なる媒体能力を有することができる。図9に描かれる論理接続は、ローカルエリアネットワーク(LAN)または広域ネットワーク(WAN)などのネットワーク971を含むが、しかしまた有線かまたは無線の他のネットワーク/バスも含むことができる。LANネットワーキング環境において使用されるとき、コンピュータ910は、ネットワークインターフェースまたはアダプタを通じてLAN971に接続されてもよい。WANネットワーキング環境において使用されるとき、コンピュータ910は典型的には、モデムなどの通信コンポーネント、またはインターネットなどの、WANを通じて通信を確立するための他の手段を含むことができる。
図10は、例示的なネットワーク化または分散型コンピューティング環境の概略図である。分散型コンピューティング環境は、コンピューティングオブジェクト1010、1012、その他、およびコンピューティングオブジェクトまたはデバイス1020、1022、1024、1026、1028、その他を備え、それらは、アプリケーション1030、1032、1034、1036、1038およびデータストア1040によって表されるなどの、プログラム、方法、データストア、プログラマブル論理、その他を含んでもよい。
各コンピューティングオブジェクト1010、1012、その他、およびコンピューティングオブジェクトまたはデバイス1020、1022、1024、1026、1028、その他は、1つまたは複数の他のコンピューティングオブジェクト1010、1012、その他、およびコンピューティングオブジェクトまたはデバイス1020、1022、1024、1026、1028、その他と通信ネットワーク1042を通じて通信することができる。通信ネットワーク1042は、サービスを図10のシステムに提供する他のコンピューティングオブジェクトおよびコンピューティングデバイスを備えてもよく、かつ/または多重相互接続ネットワークを表してもよい。クライアント/サーバ、ピアツーピア、またはハイブリッドアーキテクチャなどの、ネットワークトポロジーおよびネットワーク基盤のホストが、利用されてもよい。クライアント/サーバアーキテクチャ、特にネットワーク化システムでは、クライアントは通常、別のコンピュータ、例えばサーバによって提供される共有ネットワークリソースにアクセスするコンピュータである。
メモリから実行されるプロセスおよびプロセッサの両方は、コンポーネントとすることができる。別の例として、アーキテクチャは、電子ハードウェアの配置(例えば、並列または直列トランジスタ)、処理命令およびプロセッサを含むことができ、それらは、電子ハードウェアの配置に適した仕方で処理命令を実施する。
開示される主題は、開示される主題を実施するように電子デバイスを制御するためにハードウェア、ファームウェア、ソフトウェア、またはそれらの任意の適切な組み合わせを作成するための典型的な製造、プログラミングまたはエンジニアリング技法を使用する製造の方法、装置、または物品として実施されてもよい。コンピュータ可読媒体は、ハードウェア媒体、ソフトウェア媒体、非一時的媒体、または搬送媒体を含むことができる。
100 先読みするためのシステム
102 プロセッサ
104 リング相互接続
106 メインメモリ
108 共有キャッシュ
110 共有キャッシュ
200 先読みシステム
202 プロセッサ
204 プロセッサレベルキャッシュ、プロセッサキャッシュ
206 メインメモリ
208 共有キャッシュ
210 相互接続
300 先読みシステム
302 プロセッサ
304 キャッシュ
306 メインメモリ
308 共有キャッシュ
310 相互接続
400 先読みシステム
402 プロセッサ
404 キャッシュ
406 メインメモリ
408 共有キャッシュ
410 相互接続
500 先読みシステム
502 プロセッサ
504 キャッシュ
506 メインメモリ
508 共有キャッシュ
510 相互接続
600 先読みキャッシュシステム
602 プロセッサ
604 キャッシュ
606 先読みコンポーネント
608 追い出しコンポーネント
610 相互接続
612 共有キャッシュ
614 メインメモリ
700 先読みキャッシュシステム
702 プロセッサ
704 キャッシュ
706 タグ付けコンポーネント
708 予測コンポーネント
800 手順
900 コンピューティングシステム環境
910 コンピュータ、デバイス
920 処理ユニット
921 システムバス
930 システムメモリ
970 リモートコンピュータ
971 ネットワーク、LAN
1010 コンピューティングオブジェクト
1012 コンピューティングオブジェクト
1020 コンピューティングオブジェクトまたはデバイス
1022 コンピューティングオブジェクトまたはデバイス
1024 コンピューティングオブジェクトまたはデバイス
1026 コンピューティングオブジェクトまたはデバイス
1028 コンピューティングオブジェクトまたはデバイス
1030 アプリケーション
1032 アプリケーション
1034 アプリケーション
1036 アプリケーション
1038 アプリケーション
1040 データストア
1042 通信ネットワーク

Claims (10)

  1. プロセッサ、共有キャッシュ、およびメインメモリを通信可能に結合するために構成される相互接続と、
    データのセットを前記メインメモリから前記相互接続を介してプロセッサキャッシュに先読みするために構成されるプロセッサキャッシュプリフェッチャであって、前記プロセッサに関連付けられており、前記データのセットからのデータの第1の部分に未使用とタグを付け、前記データのセットからのデータの第2の部分に使用済みとタグを付ける、プロセッサキャッシュプリフェッチャと、
    前記データの第1の部分を前記共有キャッシュに前記相互接続を介して追い出し、前記データの第2の部分を前記メインメモリに前記相互接続を介して追い出すために構成されるプロセッサキャッシュエビクタと
    を備える、キャッシュ先読みシステム。
  2. 前記相互接続は、リング相互接続を備え、
    前記プロセッサキャッシュは、レベル2キャッシュを備え、前記共有キャッシュは、レベル3キャッシュを備え、
    前記データのセットは、前記プロセッサによって実行される第1のデータ、および前記第1のデータに関連付けられた第2のデータを含む、請求項1に記載のキャッシュ先読みシステム。
  3. 前記プロセッサキャッシュプリフェッチャはさらに、前記データの第1の部分および前記データの第2の部分に、前記プロセッサによる将来使用の確率の表示でタグ付けするために構成される、請求項1に記載のキャッシュ先読みシステム。
  4. 前記プロセッサキャッシュプリフェッチャはさらに、前記プロセッサが前記データの第1の部分を要求することに応答して、前記データの第1の部分を前記共有キャッシュから先読みするために構成される、請求項1に記載のキャッシュ先読みシステム。
  5. プロセッサと、
    前記プロセッサによって実行されるときに動作の実施を容易にする実行可能命令を記憶するメモリと
    を備え、前記動作が、
    システムメモリから、前記プロセッサに関連付けられたプロセッサキャッシュに、データのセットを先読みするステップと、
    前記データのセットのデータの第1の部分に、前記データの第1の部分が実行されるデータであるとの表示でタグ付けするステップと、
    前記データのセットのデータの第2の部分に、前記データの第2の部分が実行されるデータである可能性があるとの表示でタグ付けするステップと、
    前記データの第2の部分を共有キャッシュに追い出すステップと
    を含む、キャッシュ先読みシステム。
  6. 前記動作はさらに、
    前記データの第1の部分を前記システムメモリに追い出すステップと、
    前記データの第2の部分を実行するための要求を前記プロセッサから受け取ることに応答して、前記追い出されたデータの第2の部分を前記共有キャッシュから前記プロセッサキャッシュに先読みするステップと
    を含む、請求項5に記載のキャッシュ先読みシステム。
  7. 前記プロセッサ、前記システムメモリ、および前記共有キャッシュは、リング相互接続を介して通信可能に結合され、
    前記データの第2の部分は、所定の期間内に実行されるデータである可能性があり、
    前記データの第1の部分および前記データの第2の部分は、論理的および物理的に互いに近いことに基づいて互いに関連している、請求項5に記載のキャッシュ先読みシステム。
  8. システムメモリからプロセッサキャッシュにデータのセットを先読みするステップであって、前記プロセッサキャッシュは、プロセッサに関連付けられている、ステップと、
    前記データのセットのデータの第1の部分に、前記データの第1の部分が使用されるデータであるとの表示でタグ付けするステップと、
    前記データのセットのデータの第2の部分に、前記データの第2の部分が未使用データであるとの表示でタグ付けするステップと、
    前記データの第2の部分を共有キャッシュに追い出すステップと
    を含む、キャッシング方法。
  9. 前記データの第1の部分を前記システムメモリに追い出すステップと、
    前記データの第2の部分を実行するための要求を前記プロセッサから受け取ることに応答して、前記追い出されたデータの第2の部分を前記共有キャッシュから前記プロセッサキャッシュに先読みするステップと
    をさらに含む、請求項8に記載のキャッシング方法。
  10. 前記先読みするステップおよび前記追い出すステップは、前記プロセッサ、前記システムメモリ、および前記共有キャッシュを結合するリング相互接続を介しており、
    前記データの第2の部分は、所定の期間内に使用される可能性があるデータである、請求項8に記載のキャッシング方法。
JP2018511588A 2015-05-13 2015-07-30 追い出しを促すための先読みタグ Active JP6497831B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/710,837 2015-05-13
US14/710,837 US9971693B2 (en) 2015-05-13 2015-05-13 Prefetch tag for eviction promotion
PCT/US2015/042792 WO2016182588A1 (en) 2015-05-13 2015-07-30 Prefetch tag for eviction promotion

Publications (3)

Publication Number Publication Date
JP2018519614A true JP2018519614A (ja) 2018-07-19
JP2018519614A5 JP2018519614A5 (ja) 2018-12-06
JP6497831B2 JP6497831B2 (ja) 2019-04-10

Family

ID=57248397

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018511588A Active JP6497831B2 (ja) 2015-05-13 2015-07-30 追い出しを促すための先読みタグ

Country Status (5)

Country Link
US (2) US9971693B2 (ja)
EP (1) EP3295314A4 (ja)
JP (1) JP6497831B2 (ja)
CN (1) CN108139976B (ja)
WO (1) WO2016182588A1 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10176120B2 (en) 2017-02-22 2019-01-08 International Business Machines Corporation Cache prefetching in offloaded data transfer (ODX)
KR102353859B1 (ko) * 2017-11-01 2022-01-19 삼성전자주식회사 컴퓨팅 장치 및 비휘발성 듀얼 인라인 메모리 모듈
CN110442382B (zh) * 2019-07-31 2021-06-15 西安芯海微电子科技有限公司 预取缓存控制方法、装置、芯片以及计算机可读存储介质
US12223169B2 (en) * 2022-03-17 2025-02-11 Lenovo Global Technology (United States) Inc. Far memory direct caching
KR20240096090A (ko) 2022-12-19 2024-06-26 에스케이하이닉스 주식회사 메모리 간의 접속 지연의 차이를 개선한 스위칭 컨트롤러, 스토리지 장치 및 컴퓨팅 시스템
US12386508B2 (en) 2023-05-09 2025-08-12 Samsung Electronics Co., Ltd. Systems and methods for cache management of a storage device

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10320285A (ja) * 1997-05-20 1998-12-04 Toshiba Corp キャッシュメモリ及び情報処理システム
WO2005091146A1 (ja) * 2004-03-24 2005-09-29 Matsushita Electric Industrial Co., Ltd. キャッシュメモリ及びその制御方法
US20110113199A1 (en) * 2009-11-09 2011-05-12 Tang Puqi P Prefetch optimization in shared resource multi-core systems
JP2013542511A (ja) * 2010-09-27 2013-11-21 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド 積極的プリフェッチングによるプロセッサキャッシュ汚染を低減するための方法及び装置
US20140181402A1 (en) * 2012-12-21 2014-06-26 Advanced Micro Devices, Inc. Selective cache memory write-back and replacement policies
JP2014115851A (ja) * 2012-12-10 2014-06-26 Canon Inc データ処理装置及びその制御方法

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4731739A (en) 1983-08-29 1988-03-15 Amdahl Corporation Eviction control apparatus
GB2348024B (en) 1999-03-16 2003-06-25 Ibm Cache memory systems
US6925534B2 (en) 2001-12-31 2005-08-02 Intel Corporation Distributed memory module cache prefetch
US6990557B2 (en) 2002-06-04 2006-01-24 Sandbridge Technologies, Inc. Method and apparatus for multithreaded cache with cache eviction based on thread identifier
US7555633B1 (en) 2003-11-03 2009-06-30 Advanced Micro Devices, Inc. Instruction cache prefetch based on trace cache eviction
US7130965B2 (en) 2003-12-23 2006-10-31 Intel Corporation Apparatus and method for store address for store address prefetch and line locking
US7558920B2 (en) 2004-06-30 2009-07-07 Intel Corporation Apparatus and method for partitioning a shared cache of a chip multi-processor
US7840761B2 (en) 2005-04-01 2010-11-23 Stmicroelectronics, Inc. Apparatus and method for supporting execution of prefetch threads
GB0603552D0 (en) * 2006-02-22 2006-04-05 Advanced Risc Mach Ltd Cache management within a data processing apparatus
US7493452B2 (en) 2006-08-18 2009-02-17 International Business Machines Corporation Method to efficiently prefetch and batch compiler-assisted software cache accesses
GB0722707D0 (en) * 2007-11-19 2007-12-27 St Microelectronics Res & Dev Cache memory
US8615633B2 (en) * 2009-04-23 2013-12-24 Empire Technology Development Llc Multi-core processor cache coherence for reduced off-chip traffic
US20110072218A1 (en) 2009-09-24 2011-03-24 Srilatha Manne Prefetch promotion mechanism to reduce cache pollution
US20140173203A1 (en) 2012-12-18 2014-06-19 Andrew T. Forsyth Block Memory Engine
US9792212B2 (en) * 2014-09-12 2017-10-17 Intel Corporation Virtual shared cache mechanism in a processing device
US9684603B2 (en) * 2015-01-22 2017-06-20 Empire Technology Development Llc Memory initialization using cache state

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10320285A (ja) * 1997-05-20 1998-12-04 Toshiba Corp キャッシュメモリ及び情報処理システム
WO2005091146A1 (ja) * 2004-03-24 2005-09-29 Matsushita Electric Industrial Co., Ltd. キャッシュメモリ及びその制御方法
US20110113199A1 (en) * 2009-11-09 2011-05-12 Tang Puqi P Prefetch optimization in shared resource multi-core systems
JP2013542511A (ja) * 2010-09-27 2013-11-21 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド 積極的プリフェッチングによるプロセッサキャッシュ汚染を低減するための方法及び装置
JP2014115851A (ja) * 2012-12-10 2014-06-26 Canon Inc データ処理装置及びその制御方法
US20140181402A1 (en) * 2012-12-21 2014-06-26 Advanced Micro Devices, Inc. Selective cache memory write-back and replacement policies

Also Published As

Publication number Publication date
US9971693B2 (en) 2018-05-15
EP3295314A4 (en) 2019-01-09
US10613984B2 (en) 2020-04-07
EP3295314A1 (en) 2018-03-21
WO2016182588A1 (en) 2016-11-17
US20180239706A1 (en) 2018-08-23
CN108139976B (zh) 2020-10-27
US20160335186A1 (en) 2016-11-17
CN108139976A (zh) 2018-06-08
JP6497831B2 (ja) 2019-04-10

Similar Documents

Publication Publication Date Title
JP6497831B2 (ja) 追い出しを促すための先読みタグ
US9122613B2 (en) Prefetching of data and instructions in a data processing apparatus
US9274959B2 (en) Handling virtual memory address synonyms in a multi-level cache hierarchy structure
US8943272B2 (en) Variable cache line size management
US9626294B2 (en) Performance-driven cache line memory access
TWI332149B (en) Information processing apparatus and information processing method
JP7232175B2 (ja) キャッシュメモリのデータ置換方法及びプロセッサ
EP1983439B1 (en) Prefetching based on streaming hints
CN104981787B (zh) 具有母核和侦察核的芯片的数据预取
US20110314228A1 (en) Maintaining Cache Coherence In A Multi-Node, Symmetric Multiprocessing Computer
US8352646B2 (en) Direct access to cache memory
US20110314227A1 (en) Horizontal Cache Persistence In A Multi-Compute Node, Symmetric Multiprocessing Computer
US10552334B2 (en) Systems and methods for acquiring data for loads at different access times from hierarchical sources using a load queue as a temporary storage buffer and completing the load early
JP2005302034A (ja) メモリを管理するためのシステムおよび方法
US9367466B2 (en) Conditional prefetching
TW201621671A (zh) 在多記憶體存取代理器動態更新硬體預取特性為互斥或共享的裝置與方法
US8904100B2 (en) Process identifier-based cache data transfer
CN114341821A (zh) 生产者至消费者的主动直接高速缓存传送
JP2018519614A5 (ja)
CN114281715B (zh) 缓存合成预取方法、装置、处理器以及电子设备
WO2016153545A1 (en) Main memory prefetch operation and multiple prefetch operations
US9330005B2 (en) Interface and method for inter-thread communication
US9542318B2 (en) Temporary cache memory eviction
US20160321180A1 (en) Add-On Memory Coherence Directory
US9075732B2 (en) Data caching method

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180313

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20180712

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20180724

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20180712

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20180724

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180823

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20181017

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20181026

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20181026

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20181029

AA91 Notification that invitation to amend document was cancelled

Free format text: JAPANESE INTERMEDIATE CODE: A971091

Effective date: 20190205

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20190206

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: 20190208

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190311

R150 Certificate of patent or registration of utility model

Ref document number: 6497831

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250