JP2010532904A - データプリフェッチスロットル - Google Patents

データプリフェッチスロットル Download PDF

Info

Publication number
JP2010532904A
JP2010532904A JP2010516253A JP2010516253A JP2010532904A JP 2010532904 A JP2010532904 A JP 2010532904A JP 2010516253 A JP2010516253 A JP 2010516253A JP 2010516253 A JP2010516253 A JP 2010516253A JP 2010532904 A JP2010532904 A JP 2010532904A
Authority
JP
Japan
Prior art keywords
data
cache
data cache
prefetching
prefetch
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
JP2010516253A
Other languages
English (en)
Other versions
JP5095820B2 (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 JP2010532904A publication Critical patent/JP2010532904A/ja
Application granted granted Critical
Publication of JP5095820B2 publication Critical patent/JP5095820B2/ja
Expired - Fee Related 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

データキャッシュのためのデータプリフェッチングは、プリフェッチヒットのトラッキングに基づいてディセーブルにされ、データキャッシュのためのデータプリフェッチングは、全ヒットのトラッキングに基づいてイネーブルにされる。例えば、1つまたは複数の実施形態では、キャッシュコントローラは、プリフェッチされたデータ行に関係するデータキャッシュ上のヒットの割合を反映するプリフェッチヒット率をトラッキングし、プリフェッチヒット率が定義された閾値より低下した場合は、データプリフェッチングをディセーブルにするように構成される。キャッシュコントローラはまた、データキャッシュヒット(対ミス)の全割合を反映する全ヒット率をトラッキングし、全ヒット率が定義された閾値より低下した場合は、データプリフェッチングをイネーブルにする。

Description

本発明は、一般にプロセッサの分野に関し、具体的にはプロセッサにおけるデータプリフェッチングを制御するためのシステムおよび方法に関する。
プロセッサは、メモリ関連の処理隘路を緩和するためにキャッシングを使用する。命令キャッシングは、例えば、より高速のアクセスメモリを使用して、メインメモリまたはより高いレベルのキャッシュメモリなどのより低速のメモリに格納されているプログラム命令のより大きなセットの選択された部分を保持することによって機能する。
したがって、キャッシュに存在する命令は、より低速のメモリへのアクセスのために必要とされるであろうよりも低い遅延でアクセスされ、プロセッサは、普通、何らかの形のハードウェアベースの命令プリフェッチングを利用して、命令キャッシュをより低速のメモリからの必要とされる命令の行で満たしておく。プリフェッチングは、より低速のメモリからの命令の行をそれらの行の中の命令が必要とされる前に命令キャッシュの中に入れておく。
ハードウェアベースのプリフェッチングは、データにも適用されうる。しかし、データを首尾よくプリフェッチすることは、命令を首尾よくプリフェッチすることより難しい可能性がある。例えば、データ値は、プログラム命令よりメモリ内でよりいっそう散在または分散している可能性があり、予測ベースのプリフェッチングをより困難にする。したがって、データプリフェッチングは、パフォーマンスを改善することもあり、またはしないこともあり、データプリフェッチングのパフォーマンスは、プロセッサの動作中に劇的に変化することもある。
したがって、例えば、プリフェッチ動作を「フィルタリングする」ことが知られている。プリフェッチフィルタリングは「汚染」回避機構を表し、データキャッシュは、決して使用されないプリフェッチされたデータ行、すなわち、プリフェッチされたがアクセス(ヒット)される前に最終的には置換されるデータ行を包含する場合、汚染されているとみなされる。したがって、プリフェッチフィルタリングは、データプリフェッチングを継続的に実行するが、そのようなフィルタリングがなければ別途実行されるであろういくつかのデータプリフェッチを選択的にスキップすることを暗に意味する。
より詳細には、個々のデータプリフェッチは、適用されるフィルタリング基準によっては、行われることもあり、または行われないこともある。フィルタリング基準は、例えば、プログラム実行の何らかの範囲全体にわたって展開されたプリフェッチング動作履歴を反映してもよい。しかし、適切なフィルタリングの判定は、とりわけ、フィルタリングなしのデータプリフェッチングに意味のあるパフォーマンス改善をもたらすために、望ましくないハードウェアの複雑性または資源の消費を必要とする可能性がある。
1つまたは複数の実施形態によれば、データキャッシュのためのデータプリフェッチングを制御する方法が、データキャッシュのためのプリフェッチヒットをトラッキングし、プリフェッチヒットのトラッキングに基づいてデータキャッシュのためのデータプリフェッチングをディセーブルにするステップを備える。本方法は、データキャッシュのための全ヒットをトラッキングし、全ヒットのトラッキングに基づいてデータキャッシュのためのデータプリフェッチングをイネーブルにするステップをさらに含む。このコンテキストでは、データプリフェッチングをディセーブルにするステップは、データキャッシュのための全てのデータプリフェッチングをディセーブルにするステップを備えるが、データ行は、データプリフェッチングがイネーブルにされるかどうかに関係なく、必要に応じて、例えば、データキャッシュミスに際して、依然としてデータキャッシュの中にフェッチされる。
本明細書で教示される少なくとも1つの実施形態では、プロセッサが、キャッシュメモリおよびキャッシュコントローラを備えたデータキャッシュを含む。キャッシュコントローラは、データキャッシュのためのプリフェッチヒットをトラッキングすることに基づいてデータキャッシュのためのデータプリフェッチングをディセーブルにし、データキャッシュのための全ヒットをトラッキングすることに基づいてデータキャッシュのためのデータプリフェッチングをイネーブルにする。少なくとも1つのそのような実施形態では、キャッシュコントローラは、プリフェッチヒット率をトラッキングすることによってプリフェッチヒットをトラッキングし、全ヒット率(または、同等に、全ミス率)をトラッキングすることによって全ヒットをトラッキングする。
上記実施例を考慮すると、本明細書で教示されたデータプリフェッチング制御は、とりわけ、条件付きベースでデータプリフェッチングのパフォーマンスおよび電力の利点を提供し、同時に、簡単で効率のよいハードウェア実装形態を提供する。
プロセッサの一実施形態の機能ブロック図である。 データプリフェッチ制御の一実施形態のための状態図である。 データプリフェッチを制御する際に有用なカウンティングおよび制御回路の一実施形態の機能ブロック図である。 プリフェッチされたデータ行を示すためのインジケータを含む、データキャッシュメモリの一実施形態の機能ブロック図である。 データキャッシュ内のプリフェッチされたデータ行を示すためのインジケータの別の実施形態の機能ブロック図である。 データプリフェッチを制御するための処理論理の一実施形態の論理流れ図である。 データプリフェッチを制御するための処理論理の一実施形態の論理流れ図である。
非限定的実施例として、図1は、命令実行パイプライン102と、状態/制御レジスタ104と、キャッシュコントローラ108および関連するキャッシュメモリ110を含むデータキャッシュ106とを含むプロセッサ100の一実施形態を例示する。動作中、データキャッシュ106は、より高いレベルのキャッシュメモリおよび/またはメイン(システム)メモリを含んでもよいメモリ112の1つまたは複数のより高いレベルからデータの行をキャッシュする。少なくとも1つの実施形態では、データキャッシュ106は、レベル1(「L1」)データキャッシュを備える。
有利には、(データ)キャッシュコントローラ108は、低いハードウェア複雑性でデータキャッシュ106に実装された論理制御機構に従って、データキャッシュプリフェッチングを動的にイネーブルおよびディセーブルにするように構成される。図2は、この有利なプリフェッチング制御の一実施形態を例示する状態図である。
図2に示されているように、状態200は、データプリフェッチングがイネーブルにされているデータキャッシュ106の動作状態を表し、一方、状態202は、プリフェッチングがディセーブルにされているデータキャッシュ106の動作状態を表す。キャッシュコントローラ108は、状態202で動作する場合、個々のプリフェッチをスクリーニングするかまたはそうでなければフィルタリングするのではなく、有利には、全てのプリフェッチングを停止する。したがって、図2で実施されるプリフェッチング制御は、データプリフェッチングのためのオン/オフスイッチのように動作する。
1つまたは複数の実施形態では、キャッシュコントローラ108は、「プリフェッチヒット」をトラッキングしたことに応じて、状態200(プリフェッチングがイネーブルにされている)から状態202(プリフェッチングがディセーブルにされている)に遷移する。さらに、キャッシュコントローラ108は、「全ヒット」をトラッキングしたことに応じて、逆に状態202から状態200に遷移する。このコンテキストでは、「プリフェッチヒット」は、データキャッシュ106のキャッシュメモリ110に保持されているプリフェッチされたデータ行上のヒットであり、一方、「全ヒット」は、データキャッシュ106のキャッシュメモリ110に保持されている(プリフェッチされている、またはされていない)任意のデータ行上のヒットである。この意味で、プリフェッチヒットは、プリフェッチされたデータ行に関係するデータキャッシュヒットの割合を反映し、全ヒットは、キャッシュヒットの全割合を反映する。同等に、キャッシュコントローラ108は、キャッシュミスをトラッキングする。例えば、データキャッシュ106の全ヒット率が90パーセントの場合は、全ミス率は10パーセントである。
より詳細には、プログラム実行中に、プロセッサ100は、最初に、データキャッシュ106内に必要とされるデータがないか探す。データキャッシュヒットは、必要とされるデータがデータキャッシュ106に存在する場合を表す。逆に、データキャッシュミスは、必要とされるデータがデータキャッシュ106に存在しない場合を表す。キャッシュコントローラ108は、しばしば「強制的フェッチ」と呼ばれる、データキャッシュミスに応答してデータフェッチを行う。他方、プリフェッチングがイネーブルにされたとすると、キャッシュコントローラ108は、1つまたは複数のプリフェッチングストラテジ(「ポリシー」)に従って、データの行をより高いレベルのメモリ112からデータキャッシュ106のキャッシュメモリ110の中にプリフェッチする。非限定的実施例として、キャッシュコントローラ108は、シーケンスベースのプリフェッチングポリシーおよび/またはポインタベースのプリフェッチングポリシーを使用してもよい。
いずれにしても、データキャッシュ106が、プリフェッチングがイネーブルにされて動作している(状態200)とすると、キャッシュメモリ110は、プリフェッチされたデータ行およびフェッチされた(プリフェッチされていない)データ行を混合して包含することを当業者は理解するであろう。したがって、データキャッシュ106上の個々のヒットは、プリフェッチされたデータ行またはプリフェッチされていないデータ行のどちらかに関係し、プリフェッチヒットをトラッキングすることは、キャッシュコントローラ108にプリフェッチング動作に関する洞察を提供する。簡単に言えば、プリフェッチされたデータ行に関係する少数のデータキャッシュヒットは、データプリフェッチングが現在のプログラム実行条件の助けとならないことを示唆する。
これらの条件下でプリフェッチングをディセーブルにすることは、プリフェッチングオーバヘッド(メモリバスアクセスおよび制御)をなくすので有利である。したがって、プリフェッチングを停止すること――状態200から状態202に遷移すること――は、プロセッサ動作電力を低減し、資源負荷を低減する。そのような条件のためにプリフェッチングを停止することは、多分使用されないであろうデータ行によるデータキャッシュ106の汚染を防止するというさらなる利点を提供する。
他方、プログラム実行条件は、再度プリフェッチすることが望ましくなるように変更を必要とする。そのために、キャッシュコントローラ108は、状態202で動作している間、データキャッシュ106のための全ヒットをトラッキングし、例えば、データキャッシュ106のための全ヒットが低くなりすぎた場合は、プリフェッチングをイネーブルにする。(同等に、全ミスは高くなりすぎる。)言い換えれば、データキャッシュ106のための全ヒット率がデータプリフェッチングの停止によって低下し始めた場合は、キャッシュコントローラ108は、状態200に逆に遷移することによってプリフェッチングを再開する。
例えば、キャッシュコントローラ108は、プリフェッチヒット率としてプリフェッチヒットをトラッキングし、全ヒット率として全ヒットをトラッキングする。このようにして、定義されたディセーブル閾値は、デフォルトまたは動的に計算された値でプリフェッチディセーブル決定のために確定されうる。同様に、定義されたイネーブル閾値は、デフォルトまたは動的に計算された値でプリフェッチイネーブル決定のために確定されうる。非限定的実施例として、キャッシュコントローラ108は、プリフェッチヒット率が2パーセントより低くなった場合は、プリフェッチングを停止するように構成されてもよく、全ヒット率が99パーセントより低くなった場合は、プリフェッチングを開始するように構成されてもよい。もちろん、これらは、単に例示的な値であり、閾値は、特定のプロセッサ特性およびデータキャッシュサイズに応じて、ならびに、プリフェッチオーバヘッド、ミスペナルティなどの他の考慮事項に応じて、調整されるかまたはその他の形で調節されうる。
使用される特定の決定閾値に関係なく、図3は、プリフェッチヒットおよび全ヒットをトラッキングするためにキャッシュコントローラ108によって使用されうるトラッキング機構の一実施形態を例示する。より具体的には、図3は、カウンタ制御回路300、第1のカウンタ302、および第2のカウンタ304を例示する。これらの回路は、キャッシュコントローラ108に含まれてもよく関連付けられてもよい。
1つまたは複数の実施形態では、カウンタ制御回路300は、キャッシュコントローラ108がキャッシュメモリ110内のプリフェッチされたデータ行上のヒットを検出することに応答して、第1のカウンタ302をインクリメントし、キャッシュコントローラ108がキャッシュメモリ110内のプリフェッチされたデータ行上にないヒットを検出することに応答して、第1のカウンタ302をデクリメントする。このようにして、第1のカウンタ302の値は、プリフェッチされたデータ行上にあるデータキャッシュ106上のヒットの割合を反映する。したがって、キャッシュコントローラ108の中のカウンタ制御回路300または別の回路要素は、状態202に遷移するべきかどうかを判定するための根拠として、第1のカウンタ302の値を定義されたディセーブル閾値と比較できる。
さらに、カウンタ制御回路300は、データキャッシュ106上のヒットに(如何なるヒットにも)応答して第2のカウンタ304をインクリメントし、データキャッシュミスに応答して第2のカウンタ304をデクリメントする。このようにして、第2のカウンタ304の値は、データキャッシュ上のヒットの全割合を反映する。より具体的には、データキャッシュヒットをカウントアップし続け、データキャッシュミスをカウントダウンし続けることによって、第2のカウンタ304の値は、データキャッシュ106のためのヒット/ミス割合を反映する。したがって、キャッシュコントローラ108の中のカウンタ制御回路300または別の回路要素は、状態200に遷移するべきかどうかを判定するための根拠として、第2のカウンタ304の値を定義されたイネーブル閾値と比較できる。
上記の処理は、個々のデータキャッシュヒットがキャッシュメモリ110内のプリフェッチされたデータ行上にあるかどうかを検出することに関係する。図4および図5は、その検出を提供する様々な実施形態を例示する。両図では、キャッシュコントローラ108は、キャッシュメモリ110内のどのデータ行がプリフェッチされたかを示すインジケータを格納しているかまたはそうでなければ維持していることが分かる。
具体的には、図4は、キャッシュメモリ110が、キャッシュメモリ110に保持されているデータ行ごとに、メモリアドレス情報を保持するためのタグメモリ400と、キャッシュされたデータの行を保持するためのデータメモリ402と、プリフェッチされた(例えば、「1」)またはプリフェッチされていない(例えば、「0」)データ行の状態を示すためのプリフェッチフラグ404とを備える一実施形態を例示する。
逆に、図5は、格納されている(プリフェッチ)インジケータが、キャッシュメモリ110内のプリフェッチされたデータ行ごとに行識別子(ID)エントリ502を含むレジスタセット500として実装される代替実施形態を例示する。例えば、エントリは、プリフェッチされたデータ行だけがレジスタセット500で表されるように、キャッシュメモリ110の中にプリフェッチされたデータ行ごとにレジスタセット500に追加されてもよい。代替として、レジスタセット500は、キャッシュメモリ110内の全てのデータ行のためにエントリを含んでもよく、各エントリは、キャッシュメモリ110内の対応するデータ行がプリフェッチされているか否かを示す。
図6および図7は共に、プリフェッチヒットを検出するために、格納されているインジケータ(404または502)の使用を利用する論理を処理する一実施形態を例示する。非限定的実施例として、例示された処理は、例えば、ステートマシンにおいて、デジタル処理論理を介してキャッシュコントローラ108によって実施されうる。さらに、例示された処理ステップのうちの1つまたは複数のステップは、例示された順序以外の順序で行われてもよく、他のステップと同時に行われてもよく、および/または、他の処理タスクの一環として行われてもよいことに留意されたい。
広く例示された処理によれば、キャッシュコントローラ108は、データキャッシュ106上のプリフェッチヒットをトラッキングするために第1のカウント(例えば、第1のカウンタ302の値)を使用し、データキャッシュ106上の全ヒットをトラッキングするために第2のカウント(例えば、第2のカウンタ304の値)を使用する。第1のカウンタ302および第2のカウンタ304は、対応する第1のカウント値および第2のカウント値がそれぞれ最大値で飽和するように、飽和カウンタを備えてもよい。その詳細に関係なく、キャッシュコントローラ108の1つまたは複数の実施形態は、第1のカウント値および第2のカウント値の関数として、プリフェッチイネーブルにされた状態とプリフェッチディセーブルにされた状態との間でデータキャッシュ106を遷移する。これらのカウントは、動作を開始することの一環として初期設定されてもよい。
より詳細には、例示された処理は、データキャッシュ106のためのデータプリフェッチングをイネーブルにすることから開始する(ブロック600)。少なくとも1つの実施形態では、キャッシュコントローラ108は、プロセッサ100の始動または再始動がデータプリフェッチングを開始するように、データプリフェッチングがデフォルトによってイネーブルにされることから動作を開始するように構成される。
プリフェッチングがイネーブルにされると、データキャッシュコントローラ108は、必要に応じてデータ行をデータキャッシュ106の中にフェッチし、アクティブプリフェッチングポリシーに従ってデータ行をキャッシュの中にプリフェッチする(ブロック602)。処理は、ループ式にまたはそうでなければ中断することなく継続し、キャッシュコントローラ108は、データキャッシュヒットが生じたかどうかを判定する(ブロック604)。データキャッシュヒットが生じた(ブロック604から、はいの)場合は、キャッシュコントローラ108は、ヒットがプリフェッチヒットであったかどうかを検出し(ブロック606)、例えば、格納されている(プリフェッチ)インジケータ(404または502)を使用してキャッシュヒットに関係する特定のデータ行がプリフェッチされたデータ行であったか否かを判定する。
ヒットがプリフェッチヒットであった(ブロック606から、はいの)場合は、データキャッシュコントローラ108は、第1のカウントをインクリメントする(ブロック608)。ヒットがプリフェッチヒットでなかった(ブロック606から、いいえの)場合は、データキャッシュコントローラ108は、第1のカウントをデクリメントする(ブロック610)。第1のカウントは、カウンタ制御回路300を介して第1のカウンタ302上で動作することによってこのようにして維持されうる。
動作は継続し、第1のカウントの値がプリフェッチングするための定義されたディセーブル閾値より高いかどうかを判定するために、第1のカウントを評価する(ブロック612)。その構成では、ディセーブル閾値は、プリフェッチングが望ましくないとみなされる点に対応する割合値でセットされうる。いずれにしても、バイナリカウント値では、その判定は、カウント値を所望の閾値に対応するバイナリパターンと比較することによって行われうる。少なくとも1つの実施形態では、第1のカウンタ302のサイズは、プリフェッチヒットをトラッキングするための所望のカウントレゾリューションに従って調整される。第1のカウントの評価は、各キャッシュヒットに対して行われてもよく、あるいは、別のスケジュールまたはトリガリング条件に従って行われてもよいことにも留意されたい。
いずれにしても、第1のカウントの値が、プリフェッチヒット率が低すぎることを示す(ブロック614から、はいの)場合は、キャッシュコントローラ108は、プリフェッチングをディセーブルにする(ブロック616)。そこから、処理は任意選択で継続し、第1のカウントをリセットし、および/または第2のカウントをリセットする(ブロック618)。すなわち、一方または両方のカウントは、プリフェッチされイネーブルにされることからプリフェッチされディセーブルにされることへの遷移を行うことに関連して、その状態変化を補強するやり方でセットされうる。
少なくとも1つの実施形態では、第2のカウントは、プリフェッチがディセーブルにされた状態に変化することの一環として最大値にリセットされ、第1のカウントは、プリフェッチがイネーブルにされた状態に変化することの一環として最大値にリセットされる。そうすることは、急速な状態反転(「ピンポン現象」と呼ばれることもある)を防止する。より具体的には、例示的カウンタリセットは、本明細書で企図されている制御ヒステリシスの一形態を表す。プリフェッチヒットおよび全ヒットをトラッキングするために使用されるトラッキング機構(カウンタまたは別のやり方)をリセットすること、制御閾値を調整すること、状態変化をした後で、状態変化処理を一時的に中断することなどにより、イネーブル/ディセーブル制御ヒステリシスを実施することは、広く言えば、本明細書の1つまたは複数の実施形態において企図されている。
図7への接続Bに従って例示された処理に戻ると、処理は継続し、プリフェッチングは停止されることが分かる。プリフェッチングがディセーブルにされている間、キャッシュコントローラ108は、データキャッシュアクセスがないかモニタし続ける(ブロック700)。データキャッシュアクセスがあった(ブロック700から、はいの)場合は、キャッシュコントローラ108は、アクセスによってキャッシュヒットが生じたかどうかを検出する(ブロック702)。アクセスによってヒットが生じた(ブロック702から、はいの)場合は、処理は継続し、キャッシュコントローラ108は、第2のカウントをインクリメントする(ブロック704)。逆に、キャッシュアクセスによってキャッシュミスが生じた(ブロック702から、いいえの)場合は、処理は継続し、キャッシュコントローラ108は、第2のカウントをデクリメントし(ブロック706)、必要に応じてデータ行をキャッシュメモリ110の中にフェッチする(ブロック708)。
次いで、処理は継続し、第2のカウントを評価する(ブロック710)。カウント評価のためのトリガとしてキャッシュアクセスおよび/またはカウンタ更新が使用されてもよく、あるいは、別のスケジュールまたはトリガが使用されてもよい。いずれにしても、評価は、第2のカウントの値を定義されたイネーブル閾値と比較することを備えてもよい。少なくとも1つのそのような実施形態では、定義されたイネーブル閾値は、データキャッシュヒットのためのより低い割合値を表す。その構成では、全ヒット率は、第2のカウントによってトラッキングされたキャッシュヒットの割合がより低い割合か、またはより低い割合より低い場合は、低いとみなされる。
全ヒット率が低くない(ブロック712から、いいえの)場合は、処理はループ式にブロック700に戻る。他方、全ヒット率が低い(ブロック712から、はいの)場合は、処理は継続し、接続Aを通って図6のブロック600に戻り、プリフェッチをイネーブルにする。(第1のカウントおよび/または第2のカウントは、プリフェッチがイネーブルにされた状態に逆に遷移することの一環としてリセットされてもよいこと(ブロック714)に留意されたい。)
一代替実施形態では、キャッシュコントローラ108は、(キャッシュメモリ110内のデータ行の全数と比較された)キャッシュメモリ110内のプリフェッチされたデータ行の数をカウントすること、またはそうでなければ判定することに基づいて、プリフェッチヒットをトラッキングするように構成される。キャッシュコントローラ108は、プリフェッチされたデータ行をカウントするために第1のカウンタ302を使用してもよく、あるいはその情報をトラッキングするために他のカウンタおよび/またはレジスタを備えて構成されてもよい。いずれにしても、キャッシュメモリ110内のプリフェッチされたデータ行の数は、プリフェッチヒットが比較的まれである場合は、データキャッシュ置換ポリシーのために、時間の経過につれて低減するという意味で、データ行の全カウントと比較してのプリフェッチされたデータ行のカウントは、プリフェッチヒット率を依然として反映する。
上記の実施形態および他の変形形態を考慮すると、本明細書で教示されたデータキャッシュプリフェッチング制御は、広く言えば、プリフェッチがイネーブルにされた状態からの遷移がプリフェッチヒットに基づき、プリフェッチがディセーブルにされた状態からの遷移が全ヒットに基づくように、プリフェッチヒットをトラッキングすること、および全ヒットをトラッキングすることを備える。少なくとも1つの実施形態では、プリフェッチヒット率が定義されたディセーブル閾値より低くなった場合は、プリフェッチングはディセーブルにされ、全ヒット率が定義されたイネーブル閾値より低くなった場合は、プリフェッチングはイネーブルにされる。格納されているインジケータが、どのデータ行がプリフェッチされたかを示すために使用されてもよく、様々なカウンタまたは他のレジスタが、プリフェッチヒットおよび全ヒットのトラッキングのために使用されてもよい。
したがって、本発明は、本明細書において特定の特徴、態様、およびそれらの実施形態に関して説明されてきたが、多数の変形形態、変更形態、および他の実施形態が本発明の広い範囲内で可能であり、したがって、全ての変形形態、変更形態、および実施形態は本発明の範囲内にあるとみなされるべきであることは明らかであろう。したがって、これらの実施形態は、あらゆる面で例示的であり制限的ではないと解釈されるべきであり、添付の特許請求の範囲の意味および同等範囲に含まれる全ての変更は、それらに包含されるものとする。
100 プロセッサ
102 命令実行パイプライン
104 状態/制御レジスタ
106 データキャッシュ
108 キャッシュコントローラ
110 キャッシュメモリ
112 より高いレベルのメモリ
200 状態
202 状態
300 カウンタ制御回路
302 第1のカウンタ
304 第2のカウンタ
400 タグメモリ
402 データメモリ
404 プリフェッチフラグ、(プリフェッチ)インジケータ
500 レジスタセット
502 行識別子(ID)エントリ、(プリフェッチ)インジケータ
A 接続
B 接続

Claims (26)

  1. データキャッシュのためのデータプリフェッチングを制御する方法であって、
    前記データキャッシュのためのプリフェッチヒットをトラッキングし、プリフェッチヒットの前記トラッキングに基づいて前記データキャッシュのためのデータプリフェッチングをディセーブルにするステップと、
    前記データキャッシュのための全ヒットをトラッキングし、全ヒットの前記トラッキングに基づいて前記データキャッシュのためのデータプリフェッチングをイネーブルにするステップと
    を備える方法。
  2. 前記データキャッシュのためのデータプリフェッチングをイネーブルにするステップおよびディセーブルにするステップに関連して前記プリフェッチヒットおよび前記全ヒットの一方または両方をトラッキングするために使用されるトラッキング機構をリセットすることによってイネーブル/ディセーブル制御ヒステリシスを実施するステップをさらに備える請求項1に記載の方法。
  3. 前記データキャッシュのためのプリフェッチヒットをトラッキングするステップは、プリフェッチされたデータ行に関係するデータキャッシュ上のヒットの割合を反映するプリフェッチヒット率をトラッキングするステップを備え、前記データキャッシュのための全ヒットをトラッキングするステップは、前記データキャッシュのための全ヒット率をトラッキングするステップを備える請求項1に記載の方法。
  4. 前記プリフェッチヒット率をトラッキングするステップは、前記データキャッシュ内のデータ行の全数に関して前記データキャッシュ内のプリフェッチされたデータ行の数をトラッキングするステップを備える請求項3に記載の方法。
  5. 前記データキャッシュ内のどのデータ行がプリフェッチされたデータ行であるかを示すインジケータを格納するステップと、前記格納されているインジケータを使用して前記プリフェッチヒット率をトラッキングするために前記データキャッシュ上のプリフェッチヒットを検出するステップとをさらに備える請求項3に記載の方法。
  6. 前記プリフェッチヒット率をトラッキングするステップは、プリフェッチされたデータ行上のデータキャッシュヒットを検出することに応答して第1のカウントをインクリメントするステップと、プリフェッチされたデータ行上にないデータキャッシュヒットを検出することに応答して前記第1のカウントをデクリメントするステップとを備え、前記全ヒット率をトラッキングするステップは、データキャッシュヒットに応答して第2のカウントをインクリメントするステップと、データキャッシュミスに応答して前記第2のカウントをデクリメントするステップとを備える請求項3に記載の方法。
  7. プリフェッチヒットの前記トラッキングに基づいて前記データキャッシュのためのデータプリフェッチングをディセーブルにするステップは、前記プリフェッチヒット率が前記第1のカウントの値によって示されるように定義されたディセーブル閾値まで低下した場合は、前記データキャッシュのためのデータプリフェッチングをディセーブルにするステップを備える請求項6に記載の方法。
  8. 全ヒットの前記トラッキングに基づいて前記データキャッシュのためのデータプリフェッチングをイネーブルにするステップは、前記全ヒット率が前記第2のカウントの値によって示されるように定義されたイネーブル閾値まで低下した場合は、前記データキャッシュのためのデータプリフェッチングをイネーブルにするステップを備える請求項6に記載の方法。
  9. データキャッシュプリフェッチングをイネーブルにするステップおよびディセーブルにするステップに関連して前記第1のカウントおよび第2のカウントの一方または両方をリセットすることによってデータキャッシュプリフェッチングの制御のためのイネーブル/ディセーブルヒステリシスを実施するステップをさらに備える請求項6に記載の方法。
  10. 前記第1のカウントおよび第2のカウントを、それぞれ第1の最大カウント値および第2の最大カウント値で飽和するように構成された第1の飽和カウンタおよび第2の飽和カウンタ内に維持するステップをさらに備える請求項6に記載の方法。
  11. 前記プリフェッチヒットをトラッキングするステップは、前記データキャッシュ内のプリフェッチされたデータ行上のデータキャッシュヒットの割合を反映する第1のカウンタ内のプリフェッチヒット率をトラッキングするステップを備え、前記全ヒットをトラッキングするステップは、データキャッシュヒット対データキャッシュミスの前記全割合を反映する第2のカウンタ内の全ヒット率をトラッキングするステップを備える請求項1に記載の方法。
  12. データキャッシュプリフェッチがイネーブルにされることから動作を開始するために前記データキャッシュを初期設定するステップをさらに備える請求項1に記載の方法。
  13. データプリフェッチングがイネーブルにされた場合のみ、1つまたは複数の定義されたプリフェッチングポリシーに従ってデータ行を前記データキャッシュの中にプリフェッチするステップと、データプリフェッチングがイネーブルにされたかどうかに関係なくデータキャッシュミスに応答してデータ行を前記データキャッシュの中にフェッチするステップとをさらに備える請求項1に記載の方法。
  14. 命令実行パイプラインと、
    前記命令実行パイプラインに動作可能に関連付けられ、キャッシュメモリおよびキャッシュコントローラを備えるデータキャッシュとを備え、
    前記キャッシュコントローラは、前記データキャッシュのためのプリフェッチヒットをトラッキングし、プリフェッチヒットの前記トラッキングに基づいて前記データキャッシュのためのデータプリフェッチングをディセーブルにし、データキャッシュのための全ヒットをトラッキングし、全ヒットの前記トラッキングに基づいて前記データキャッシュのためのデータプリフェッチングをイネーブルにするように構成される
    プロセッサ。
  15. 前記キャッシュコントローラは、前記データキャッシュのためのデータプリフェッチングをイネーブルにすることおよびディセーブルにすることに関連して前記プリフェッチヒットおよび前記全ヒットの一方または両方をトラッキングするために使用されるトラッキング機構をリセットすることによってイネーブル/ディセーブル制御ヒステリシスを実施する請求項14に記載のプロセッサ。
  16. 前記キャッシュコントローラは、プリフェッチされたデータ行に関係する前記データキャッシュ上のヒットの前記割合を反映するプリフェッチヒット率をトラッキングすることによって前記プリフェッチヒットをトラッキングし、前記データキャッシュのための全ヒット率をトラッキングすることによって前記全ヒットをトラッキングする請求項14に記載のプロセッサ。
  17. 前記キャッシュコントローラは、前記キャッシュメモリ内のデータ行の前記全数に関して前記キャッシュメモリ内のプリフェッチされたデータ行の前記数をトラッキングすることによって前記プリフェッチヒット率をトラッキングする請求項16に記載のプロセッサ。
  18. 前記キャッシュコントローラは、前記キャッシュメモリ内のどのデータ行がプリフェッチされたデータ行であるかを示すインジケータを維持し、前記インジケータを使用して前記プリフェッチヒット率をトラッキングするために前記データキャッシュ上のプリフェッチヒットを検出する請求項16に記載のプロセッサ。
  19. 前記キャッシュコントローラは、プリフェッチされたデータ行上のデータキャッシュヒットを検出することに応答して第1のカウンタをインクリメントすることによって、および、プリフェッチされたデータ行上にないデータキャッシュヒットを検出することに応答して前記第1のカウンタをデクリメントすることによって、前記プリフェッチヒット率をトラッキングし、データキャッシュヒットに応答して第2のカウンタをインクリメントすることによって、および、データキャッシュミスに応答して前記第2のカウンタをデクリメントすることによって、前記全ヒット率をトラッキングする請求項16に記載のプロセッサ。
  20. 前記キャッシュコントローラは、前記プリフェッチヒット率が前記第1のカウンタの値によって示されるように定義されたディセーブル閾値まで低下した場合は、前記データキャッシュのためのデータプリフェッチングをディセーブルにする請求項19に記載のプロセッサ。
  21. 前記キャッシュコントローラは、前記全ヒット率が前記第2のカウンタの値によって示されるように定義されたイネーブル閾値まで低下した場合は、前記データキャッシュのためのデータプリフェッチングをイネーブルにする請求項19に記載のプロセッサ。
  22. 前記キャッシュコントローラは、データキャッシュプリフェッチングをイネーブルにすることおよびディセーブルにすることに関連して前記第1のカウンタおよび第2のカウンタの一方または両方をリセットすることによってデータキャッシュプリフェッチングを制御するためのイネーブル/ディセーブルヒステリシスを実施する請求項19に記載のプロセッサ。
  23. 前記第1のカウンタおよび第2のカウンタは、それぞれ第1の最大カウント値および第2の最大カウント値で飽和する第1の飽和カウンタおよび第2の飽和カウンタを備える請求項19に記載のプロセッサ。
  24. 前記キャッシュコントローラは、前記キャッシュメモリ内のプリフェッチされたデータ行上のデータキャッシュヒットの割合を反映する第1のカウンタ内のプリフェッチヒット率をトラッキングすることによって前記プリフェッチヒットをトラッキングし、データキャッシュヒット対データキャッシュミスの前記全割合を反映する第2のカウンタ内の全ヒット率をトラッキングすることによって前記全ヒットをトラッキングする請求項14に記載のプロセッサ。
  25. 前記キャッシュコントローラは、データキャッシュプリフェッチングがイネーブルにされることから動作を開始するために前記データキャッシュを初期設定する請求項14に記載のプロセッサ。
  26. 前記キャッシュコントローラは、データプリフェッチングがイネーブルにされた場合のみ、1つまたは複数の定義されたプリフェッチングポリシーに従ってデータ行を前記データキャッシュの中にプリフェッチし、データプリフェッチングがイネーブルにされたかどうかに関係なく、データキャッシュミスに応答してデータ行を前記データキャッシュの中にフェッチする請求項14に記載のプロセッサ。
JP2010516253A 2007-07-10 2008-07-10 データプリフェッチスロットル Expired - Fee Related JP5095820B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/775,320 US7917702B2 (en) 2007-07-10 2007-07-10 Data prefetch throttle
US11/775,320 2007-07-10
PCT/US2008/069710 WO2009009704A1 (en) 2007-07-10 2008-07-10 Data prefetch throttle

Publications (2)

Publication Number Publication Date
JP2010532904A true JP2010532904A (ja) 2010-10-14
JP5095820B2 JP5095820B2 (ja) 2012-12-12

Family

ID=39494443

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010516253A Expired - Fee Related JP5095820B2 (ja) 2007-07-10 2008-07-10 データプリフェッチスロットル

Country Status (6)

Country Link
US (1) US7917702B2 (ja)
EP (1) EP2015189B1 (ja)
JP (1) JP5095820B2 (ja)
KR (1) KR101095217B1 (ja)
CN (1) CN101689147B (ja)
WO (1) WO2009009704A1 (ja)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014232369A (ja) * 2013-05-28 2014-12-11 富士通株式会社 変数更新装置、変数更新システム、変数更新方法、変数更新プログラム、変換プログラム、及びプログラム変更検証システム
JP2015079524A (ja) * 2009-02-13 2015-04-23 マイクロン テクノロジー, インク. メモリシステムおよび方法
JP2017509998A (ja) * 2014-04-04 2017-04-06 クアルコム,インコーポレイテッド キャッシュ汚染を低減するために専用キャッシュセットにおける専用プリフェッチポリシーを競合させることに基づいた適応キャッシュプリフェッチング
JP2017191503A (ja) * 2016-04-14 2017-10-19 富士通株式会社 演算処理装置、および演算処理装置の制御方法
JP2019525330A (ja) * 2016-07-20 2019-09-05 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドAdvanced Micro Devices Incorporated キャッシュテスト領域に基づくプリフェッチデータに対するキャッシュ転送ポリシーの選択
JP2021506026A (ja) * 2017-12-12 2021-02-18 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドAdvanced Micro Devices Incorporated メモリ帯域幅利用を抑制するメモリ要求スロットル
US12026097B2 (en) 2022-07-21 2024-07-02 Fujitsu Limited Arithmetic processing apparatus and arithmetic processing method

Families Citing this family (81)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6307487B1 (en) 1998-09-23 2001-10-23 Digital Fountain, Inc. Information additive code generator and decoder for communication systems
US7068729B2 (en) 2001-12-21 2006-06-27 Digital Fountain, Inc. Multi-stage code generator and decoder for communication systems
KR100421538B1 (ko) * 2001-01-29 2004-03-18 대한민국 생약재의 휘발성 추출물을 유효성분으로 하는 문화재 보존용 살생물제 조성물 및 그를 이용한 문화재 보존방법
US9240810B2 (en) 2002-06-11 2016-01-19 Digital Fountain, Inc. Systems and processes for decoding chain reaction codes through inactivation
JP4546246B2 (ja) 2002-10-05 2010-09-15 デジタル ファウンテン, インコーポレイテッド 連鎖的暗号化反応の系統的記号化および復号化
CN1954501B (zh) * 2003-10-06 2010-06-16 数字方敦股份有限公司 通过通信信道接收从源发射的数据的方法
CN103124182B (zh) 2004-05-07 2017-05-10 数字方敦股份有限公司 文件下载和流系统
US7721184B2 (en) * 2004-08-11 2010-05-18 Digital Fountain, Inc. Method and apparatus for fast encoding of data symbols according to half-weight codes
CN101686107B (zh) 2006-02-13 2014-08-13 数字方敦股份有限公司 使用可变fec开销和保护周期的流送和缓冲
US9270414B2 (en) 2006-02-21 2016-02-23 Digital Fountain, Inc. Multiple-field based code generator and decoder for communications systems
WO2007134196A2 (en) 2006-05-10 2007-11-22 Digital Fountain, Inc. Code generator and decoder using hybrid codes
US9419749B2 (en) 2009-08-19 2016-08-16 Qualcomm Incorporated Methods and apparatus employing FEC codes with permanent inactivation of symbols for encoding and decoding processes
US9386064B2 (en) * 2006-06-09 2016-07-05 Qualcomm Incorporated Enhanced block-request streaming using URL templates and construction rules
US20100211690A1 (en) * 2009-02-13 2010-08-19 Digital Fountain, Inc. Block partitioning for a data stream
US9178535B2 (en) 2006-06-09 2015-11-03 Digital Fountain, Inc. Dynamic stream interleaving and sub-stream based delivery
US9432433B2 (en) 2006-06-09 2016-08-30 Qualcomm Incorporated Enhanced block-request streaming system using signaling or block creation
US9380096B2 (en) 2006-06-09 2016-06-28 Qualcomm Incorporated Enhanced block-request streaming system for handling low-latency streaming
US9209934B2 (en) 2006-06-09 2015-12-08 Qualcomm Incorporated Enhanced block-request streaming using cooperative parallel HTTP and forward error correction
EP2203836A4 (en) 2007-09-12 2014-11-05 Digital Fountain Inc GENERATING AND COMMUNICATING SOURCE IDENTIFICATION INFORMATION TO ENABLE RELIABLE COMMUNICATIONS
JP5587884B2 (ja) 2008-08-06 2014-09-10 モービック・ネットワークス 無線アクセスネットワーク(ran)におけるコンテンツのキャッシング
CN102282550A (zh) * 2009-01-30 2011-12-14 莫维克网络公司 应用和使用以及无线链路感知传输网络调度程序
US9281847B2 (en) 2009-02-27 2016-03-08 Qualcomm Incorporated Mobile reception of digital video broadcasting—terrestrial services
US9288010B2 (en) 2009-08-19 2016-03-15 Qualcomm Incorporated Universal file delivery methods for providing unequal error protection and bundled file delivery services
US9917874B2 (en) * 2009-09-22 2018-03-13 Qualcomm Incorporated Enhanced block-request streaming using block partitioning or request controls for improved client-side handling
US8443151B2 (en) * 2009-11-09 2013-05-14 Intel Corporation Prefetch optimization in shared resource multi-core systems
US8291171B2 (en) 2009-11-30 2012-10-16 Hewlett-Packard Development Company, L.P. Altering prefetch depth based on ready data
CN102550006A (zh) * 2010-02-12 2012-07-04 莫维克网络公司 移动网络中的无线接入网络缓存
US8882378B2 (en) 2010-02-15 2014-11-11 Access Business Group International Llc Heating and dispenser system
CN102598628A (zh) * 2010-03-15 2012-07-18 莫维克网络公司 用于多媒体传送的自适应分块和内容感知同步设备及方法
US9485546B2 (en) 2010-06-29 2016-11-01 Qualcomm Incorporated Signaling video samples for trick mode video representations
US8918533B2 (en) 2010-07-13 2014-12-23 Qualcomm Incorporated Video switching for streaming video data
US9185439B2 (en) 2010-07-15 2015-11-10 Qualcomm Incorporated Signaling data for multiplexing video components
US8799480B2 (en) * 2010-07-19 2014-08-05 Movik Networks Content pre-fetching and CDN assist methods in a wireless mobile network
US9596447B2 (en) 2010-07-21 2017-03-14 Qualcomm Incorporated Providing frame packing type information for video coding
US8806050B2 (en) 2010-08-10 2014-08-12 Qualcomm Incorporated Manifest file updates for network streaming of coded multimedia data
US8565076B2 (en) 2010-09-24 2013-10-22 Movik Networks Destination learning and mobility detection in transit network device in LTE and UMTS radio access networks
US8683129B2 (en) * 2010-10-21 2014-03-25 Oracle International Corporation Using speculative cache requests to reduce cache miss delays
US8958375B2 (en) 2011-02-11 2015-02-17 Qualcomm Incorporated Framing for an improved radio link protocol including FEC
US9270299B2 (en) 2011-02-11 2016-02-23 Qualcomm Incorporated Encoding and decoding using elastic codes with flexible source block mapping
EP2691854A1 (en) * 2011-03-30 2014-02-05 Freescale Semiconductor, Inc. A method and apparatus for controlling fetch-ahead in a vles processor architecture
US20130013867A1 (en) * 2011-07-06 2013-01-10 Advanced Micro Devices, Inc. Data prefetcher mechanism with intelligent disabling and enabling of a prefetching function
US9253233B2 (en) 2011-08-31 2016-02-02 Qualcomm Incorporated Switch signaling methods providing improved switching between representations for adaptive HTTP streaming
US9843844B2 (en) 2011-10-05 2017-12-12 Qualcomm Incorporated Network streaming of media data
US20130262826A1 (en) * 2011-10-06 2013-10-03 Alexander Gendler Apparatus and method for dynamically managing memory access bandwidth in multi-core processor
CN102521158B (zh) * 2011-12-13 2014-09-24 北京北大众志微系统科技有限责任公司 一种实现数据预取的方法及装置
US9043579B2 (en) 2012-01-10 2015-05-26 International Business Machines Corporation Prefetch optimizer measuring execution time of instruction sequence cycling through each selectable hardware prefetch depth and cycling through disabling each software prefetch instruction of an instruction sequence of interest
US8635406B2 (en) * 2012-03-08 2014-01-21 Arm Limited Data processing apparatus and method for providing target address information for branch instructions
US9294226B2 (en) 2012-03-26 2016-03-22 Qualcomm Incorporated Universal object delivery and template-based file delivery
CN102662713B (zh) 2012-04-12 2014-04-16 腾讯科技(深圳)有限公司 提高应用程序运行速度的方法、装置及终端
US9390018B2 (en) 2012-08-17 2016-07-12 Advanced Micro Devices, Inc. Data cache prefetch hints
US9201796B2 (en) * 2012-09-27 2015-12-01 Apple Inc. System cache with speculative read engine
US9348753B2 (en) * 2012-10-10 2016-05-24 Advanced Micro Devices, Inc. Controlling prefetch aggressiveness based on thrash events
US20140108740A1 (en) * 2012-10-17 2014-04-17 Advanced Micro Devices, Inc. Prefetch throttling
US9367468B2 (en) 2013-01-15 2016-06-14 Qualcomm Incorporated Data cache way prediction
US9298634B2 (en) 2013-03-06 2016-03-29 Gregory RECUPERO Client spatial locality through the use of virtual request trackers
US9223710B2 (en) * 2013-03-16 2015-12-29 Intel Corporation Read-write partitioning of cache memory
US9471510B2 (en) * 2013-12-20 2016-10-18 Netapp, Inc. System and method for cache monitoring in storage systems
US9292447B2 (en) * 2014-02-20 2016-03-22 Freescale Semiconductor, Inc. Data cache prefetch controller
US9280476B2 (en) 2014-06-04 2016-03-08 Oracle International Corporation Hardware stream prefetcher with dynamically adjustable stride
US9256541B2 (en) * 2014-06-04 2016-02-09 Oracle International Corporation Dynamically adjusting the hardware stream prefetcher prefetch ahead distance
US20160011790A1 (en) * 2014-07-14 2016-01-14 Sandisk Technologies Inc. Systems and methods to enable access to a host memory associated with a unified memory architecture (uma)
US10824335B2 (en) 2014-07-14 2020-11-03 Western Digital Technologies, Inc. Device and method to store predicted data at a host memory
US9507596B2 (en) * 2014-08-28 2016-11-29 Intel Corporation Instruction and logic for prefetcher throttling based on counts of memory accesses to data sources
TWI512609B (zh) * 2014-09-05 2015-12-11 Silicon Motion Inc 讀取命令排程方法以及使用該方法的裝置
DE102015115582A1 (de) * 2014-10-22 2016-04-28 Imagination Technologies Limited Vorrichtung und Verfahren zum Drosseln des Hardwarevorauslesens
US9798900B2 (en) * 2015-03-26 2017-10-24 Intel Corporation Flexible counter system for memory protection
US9864661B2 (en) * 2016-02-12 2018-01-09 Hewlett Packard Enterprise Development Lp Cache-accelerated replication of snapshots between storage devices
WO2017196138A2 (en) 2016-05-12 2017-11-16 Lg Electronics Inc. System and method for early data pipeline lookup in large cache design
US10379862B2 (en) 2016-06-28 2019-08-13 International Business Machines Corporation Effectiveness and prioritization of prefeteches
CN107783911B (zh) * 2016-08-31 2021-06-08 华为技术有限公司 一种数据过滤方法及终端设备
US10474578B2 (en) * 2017-08-30 2019-11-12 Oracle International Corporation Utilization-based throttling of hardware prefetchers
US10303379B2 (en) 2017-09-25 2019-05-28 International Business Machines Corporation Efficient adaptive read-ahead in log structured storage
US10613983B2 (en) * 2018-03-20 2020-04-07 Advanced Micro Devices, Inc. Prefetcher based speculative dynamic random-access memory read request technique
US11675591B2 (en) * 2018-10-31 2023-06-13 Advanced Micro Devices, Inc. Selectively enabled result lookaside buffer based on a hit rate
US11294595B2 (en) * 2018-12-18 2022-04-05 Western Digital Technologies, Inc. Adaptive-feedback-based read-look-ahead management system and method
US11327891B2 (en) * 2019-09-20 2022-05-10 Samsung Electronics Co., Ltd. Prefetching operations in storage devices
US11720364B2 (en) 2020-03-27 2023-08-08 Intel Corporation Methods and apparatus to dynamically enable and/or disable prefetchers
US11442864B2 (en) 2020-06-29 2022-09-13 Marvell Asia Pte, Ltd. Managing prefetch requests based on stream information for previously recognized streams
KR20220117747A (ko) 2021-02-17 2022-08-24 삼성전자주식회사 데이터 프리페치 제어 기능을 갖는 스토리지 컨트롤러, 스토리지 컨트롤러의 동작 방법, 및 스토리지 장치의 동작 방법
KR20220120016A (ko) * 2021-02-22 2022-08-30 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
US11853220B2 (en) * 2021-10-14 2023-12-26 Arm Limited Prefetcher training

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07105092A (ja) * 1993-09-30 1995-04-21 Sharp Corp 記憶装置
US20040221111A1 (en) * 2003-04-30 2004-11-04 Sun Microsystems, Inc. Computer system including a memory controller configured to perform pre-fetch operations
US20050076181A1 (en) * 2003-10-07 2005-04-07 Wenchi Hsu Pre-fetch controller and method thereof
WO2005114427A2 (en) * 2004-05-14 2005-12-01 Micron Technology, Inc. Memory hub and method for memory sequencing

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5367656A (en) * 1992-03-13 1994-11-22 Bull Hn Information Systems Inc. Controlling cache predictive prefetching based on cache hit ratio trend
US5983324A (en) * 1996-03-28 1999-11-09 Hitachi, Ltd. Data prefetch control method for main storage cache for protecting prefetched data from replacement before utilization thereof
US6247107B1 (en) * 1998-04-06 2001-06-12 Advanced Micro Devices, Inc. Chipset configured to perform data-directed prefetching
US20020073406A1 (en) * 2000-12-12 2002-06-13 Darryl Gove Using performance counter profiling to drive compiler optimization
US6983356B2 (en) * 2002-12-19 2006-01-03 Intel Corporation High performance memory device-state aware chipset prefetcher
US6978349B1 (en) * 2003-01-09 2005-12-20 Hewlett-Packard Development Company, L.P. Adaptive cache memory management
US7237068B2 (en) * 2003-01-28 2007-06-26 Sun Microsystems, Inc. Computer system employing bundled prefetching and null-data packet transmission
WO2005076181A1 (en) 2004-02-05 2005-08-18 Dal-Hyun Cho Information buying and selling system
US7313654B2 (en) * 2004-10-27 2007-12-25 Xiv Ltd Method for differential discarding of cached data in distributed storage systems
US20060174228A1 (en) * 2005-01-28 2006-08-03 Dell Products L.P. Adaptive pre-fetch policy
US20070239940A1 (en) * 2006-03-31 2007-10-11 Doshi Kshitij A Adaptive prefetching

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07105092A (ja) * 1993-09-30 1995-04-21 Sharp Corp 記憶装置
US20040221111A1 (en) * 2003-04-30 2004-11-04 Sun Microsystems, Inc. Computer system including a memory controller configured to perform pre-fetch operations
US20050076181A1 (en) * 2003-10-07 2005-04-07 Wenchi Hsu Pre-fetch controller and method thereof
WO2005114427A2 (en) * 2004-05-14 2005-12-01 Micron Technology, Inc. Memory hub and method for memory sequencing

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015079524A (ja) * 2009-02-13 2015-04-23 マイクロン テクノロジー, インク. メモリシステムおよび方法
JP2014232369A (ja) * 2013-05-28 2014-12-11 富士通株式会社 変数更新装置、変数更新システム、変数更新方法、変数更新プログラム、変換プログラム、及びプログラム変更検証システム
JP2017509998A (ja) * 2014-04-04 2017-04-06 クアルコム,インコーポレイテッド キャッシュ汚染を低減するために専用キャッシュセットにおける専用プリフェッチポリシーを競合させることに基づいた適応キャッシュプリフェッチング
JP2017191503A (ja) * 2016-04-14 2017-10-19 富士通株式会社 演算処理装置、および演算処理装置の制御方法
JP2019525330A (ja) * 2016-07-20 2019-09-05 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドAdvanced Micro Devices Incorporated キャッシュテスト領域に基づくプリフェッチデータに対するキャッシュ転送ポリシーの選択
JP2021506026A (ja) * 2017-12-12 2021-02-18 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドAdvanced Micro Devices Incorporated メモリ帯域幅利用を抑制するメモリ要求スロットル
US12026097B2 (en) 2022-07-21 2024-07-02 Fujitsu Limited Arithmetic processing apparatus and arithmetic processing method

Also Published As

Publication number Publication date
KR101095217B1 (ko) 2011-12-20
JP5095820B2 (ja) 2012-12-12
WO2009009704A1 (en) 2009-01-15
US20090019229A1 (en) 2009-01-15
EP2015189A1 (en) 2009-01-14
US7917702B2 (en) 2011-03-29
CN101689147A (zh) 2010-03-31
KR20100022518A (ko) 2010-03-02
EP2015189B1 (en) 2015-07-29
CN101689147B (zh) 2013-05-15

Similar Documents

Publication Publication Date Title
JP5095820B2 (ja) データプリフェッチスロットル
EP3769226B1 (en) Prefetcher based speculative dynamic random-access memory read request technique
US11675703B2 (en) Memory request throttling to constrain memory bandwidth utilization
US10552160B2 (en) Handling stalling event for multiple thread pipeline, and triggering action based on information access delay
US8839429B2 (en) Methods, devices, and systems for detecting return-oriented programming exploits
KR101902651B1 (ko) 이용 트렌드에 기초한 다중 세트 그룹들 내의 통로에 의한 캐시 메모리의 동적 전력 공급
US11586944B2 (en) Allocation filter for prediction storage structure
CN109446112B (zh) 用于预取流量的改进控制的方法和系统
US8103832B2 (en) Method and apparatus of prefetching streams of varying prefetch depth
JP2005316842A (ja) キャッシュメモリおよびキャッシュ制御方法
KR20210035311A (ko) 프로세서의 필터링된 분기 예측 구조
US9965023B2 (en) Apparatus and method for flushing dirty cache lines based on cache activity levels
US11204878B1 (en) Writebacks of prefetched data
US20120072632A1 (en) Deterministic and non-Deterministic Execution in One Processor
US10901742B2 (en) Apparatus and method for making predictions for instruction flow changing instructions
JP2007207039A (ja) メモリシステムおよびメモリアクセス制御方法
JPH0353357A (ja) キャッシュメモリ制御用集積回路
OnurMutlu et al. DRAM-Aware Last-Level Cache Replacement
JP2004127031A (ja) メモリ切り替え回路

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120424

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120719

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

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120919

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150928

Year of fee payment: 3

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

LAPS Cancellation because of no payment of annual fees