(57)【要約】  データキャッシュのためのデータプリフェッチングは、プリフェッチヒットのトラッキングに基づいてディセーブルにされ、データキャッシュのためのデータプリフェッチングは、全ヒットのトラッキングに基づいてイネーブルにされる。例えば、1つまたは複数の実施形態では、キャッシュコントローラは、プリフェッチされたデータ行に関係するデータキャッシュ上のヒットの割合を反映するプリフェッチヒット率をトラッキングし、プリフェッチヒット率が定義された閾値より低下した場合は、データプリフェッチングをディセーブルにするように構成される。キャッシュコントローラはまた、データキャッシュヒット(対ミス)の全割合を反映する全ヒット率をトラッキングし、全ヒット率が定義された閾値より低下した場合は、データプリフェッチングをイネーブルにする。
2010532904.tif 000002
【特許請求の範囲】
【請求項１】
データキャッシュのためのデータプリフェッチングを制御する方法であって、
前記データキャッシュのためのプリフェッチヒットをトラッキングし、プリフェッチヒットの前記トラッキングに基づいて前記データキャッシュのためのデータプリフェッチングをディセーブルにするステップと、
前記データキャッシュのための全ヒットをトラッキングし、全ヒットの前記トラッキングに基づいて前記データキャッシュのためのデータプリフェッチングをイネーブルにするステップと
を備える方法。
【請求項２】
前記データキャッシュのためのデータプリフェッチングをイネーブルにするステップおよびディセーブルにするステップに関連して前記プリフェッチヒットおよび前記全ヒットの一方または両方をトラッキングするために使用されるトラッキング機構をリセットすることによってイネーブル/ディセーブル制御ヒステリシスを実施するステップをさらに備える請求項1に記載の方法。
【請求項３】
前記データキャッシュのためのプリフェッチヒットをトラッキングするステップは、プリフェッチされたデータ行に関係するデータキャッシュ上のヒットの割合を反映するプリフェッチヒット率をトラッキングするステップを備え、前記データキャッシュのための全ヒットをトラッキングするステップは、前記データキャッシュのための全ヒット率をトラッキングするステップを備える請求項1に記載の方法。
【請求項４】
前記プリフェッチヒット率をトラッキングするステップは、前記データキャッシュ内のデータ行の全数に関して前記データキャッシュ内のプリフェッチされたデータ行の数をトラッキングするステップを備える請求項3に記載の方法。
【請求項５】
前記データキャッシュ内のどのデータ行がプリフェッチされたデータ行であるかを示すインジケータを格納するステップと、前記格納されているインジケータを使用して前記プリフェッチヒット率をトラッキングするために前記データキャッシュ上のプリフェッチヒットを検出するステップとをさらに備える請求項3に記載の方法。
【請求項６】
前記プリフェッチヒット率をトラッキングするステップは、プリフェッチされたデータ行上のデータキャッシュヒットを検出することに応答して第1のカウントをインクリメントするステップと、プリフェッチされたデータ行上にないデータキャッシュヒットを検出することに応答して前記第1のカウントをデクリメントするステップとを備え、前記全ヒット率をトラッキングするステップは、データキャッシュヒットに応答して第2のカウントをインクリメントするステップと、データキャッシュミスに応答して前記第2のカウントをデクリメントするステップとを備える請求項3に記載の方法。
【請求項７】
プリフェッチヒットの前記トラッキングに基づいて前記データキャッシュのためのデータプリフェッチングをディセーブルにするステップは、前記プリフェッチヒット率が前記第1のカウントの値によって示されるように定義されたディセーブル閾値まで低下した場合は、前記データキャッシュのためのデータプリフェッチングをディセーブルにするステップを備える請求項6に記載の方法。
【請求項８】
全ヒットの前記トラッキングに基づいて前記データキャッシュのためのデータプリフェッチングをイネーブルにするステップは、前記全ヒット率が前記第2のカウントの値によって示されるように定義されたイネーブル閾値まで低下した場合は、前記データキャッシュのためのデータプリフェッチングをイネーブルにするステップを備える請求項6に記載の方法。
【請求項９】
データキャッシュプリフェッチングをイネーブルにするステップおよびディセーブルにするステップに関連して前記第1のカウントおよび第2のカウントの一方または両方をリセットすることによってデータキャッシュプリフェッチングの制御のためのイネーブル/ディセーブルヒステリシスを実施するステップをさらに備える請求項6に記載の方法。
【請求項１０】
前記第1のカウントおよび第2のカウントを、それぞれ第1の最大カウント値および第2の最大カウント値で飽和するように構成された第1の飽和カウンタおよび第2の飽和カウンタ内に維持するステップをさらに備える請求項6に記載の方法。
【請求項１１】
前記プリフェッチヒットをトラッキングするステップは、前記データキャッシュ内のプリフェッチされたデータ行上のデータキャッシュヒットの割合を反映する第1のカウンタ内のプリフェッチヒット率をトラッキングするステップを備え、前記全ヒットをトラッキングするステップは、データキャッシュヒット対データキャッシュミスの前記全割合を反映する第2のカウンタ内の全ヒット率をトラッキングするステップを備える請求項1に記載の方法。
【請求項１２】
データキャッシュプリフェッチがイネーブルにされることから動作を開始するために前記データキャッシュを初期設定するステップをさらに備える請求項1に記載の方法。
【請求項１３】
データプリフェッチングがイネーブルにされた場合のみ、1つまたは複数の定義されたプリフェッチングポリシーに従ってデータ行を前記データキャッシュの中にプリフェッチするステップと、データプリフェッチングがイネーブルにされたかどうかに関係なくデータキャッシュミスに応答してデータ行を前記データキャッシュの中にフェッチするステップとをさらに備える請求項1に記載の方法。
【請求項１４】
命令実行パイプラインと、
前記命令実行パイプラインに動作可能に関連付けられ、キャッシュメモリおよびキャッシュコントローラを備えるデータキャッシュとを備え、
前記キャッシュコントローラは、前記データキャッシュのためのプリフェッチヒットをトラッキングし、プリフェッチヒットの前記トラッキングに基づいて前記データキャッシュのためのデータプリフェッチングをディセーブルにし、データキャッシュのための全ヒットをトラッキングし、全ヒットの前記トラッキングに基づいて前記データキャッシュのためのデータプリフェッチングをイネーブルにするように構成される
プロセッサ。
【請求項１５】
前記キャッシュコントローラは、前記データキャッシュのためのデータプリフェッチングをイネーブルにすることおよびディセーブルにすることに関連して前記プリフェッチヒットおよび前記全ヒットの一方または両方をトラッキングするために使用されるトラッキング機構をリセットすることによってイネーブル/ディセーブル制御ヒステリシスを実施する請求項14に記載のプロセッサ。
【請求項１６】
前記キャッシュコントローラは、プリフェッチされたデータ行に関係する前記データキャッシュ上のヒットの前記割合を反映するプリフェッチヒット率をトラッキングすることによって前記プリフェッチヒットをトラッキングし、前記データキャッシュのための全ヒット率をトラッキングすることによって前記全ヒットをトラッキングする請求項14に記載のプロセッサ。
【請求項１７】
前記キャッシュコントローラは、前記キャッシュメモリ内のデータ行の前記全数に関して前記キャッシュメモリ内のプリフェッチされたデータ行の前記数をトラッキングすることによって前記プリフェッチヒット率をトラッキングする請求項16に記載のプロセッサ。
【請求項１８】
前記キャッシュコントローラは、前記キャッシュメモリ内のどのデータ行がプリフェッチされたデータ行であるかを示すインジケータを維持し、前記インジケータを使用して前記プリフェッチヒット率をトラッキングするために前記データキャッシュ上のプリフェッチヒットを検出する請求項16に記載のプロセッサ。
【請求項１９】
前記キャッシュコントローラは、プリフェッチされたデータ行上のデータキャッシュヒットを検出することに応答して第1のカウンタをインクリメントすることによって、および、プリフェッチされたデータ行上にないデータキャッシュヒットを検出することに応答して前記第1のカウンタをデクリメントすることによって、前記プリフェッチヒット率をトラッキングし、データキャッシュヒットに応答して第2のカウンタをインクリメントすることによって、および、データキャッシュミスに応答して前記第2のカウンタをデクリメントすることによって、前記全ヒット率をトラッキングする請求項16に記載のプロセッサ。
【請求項２０】
前記キャッシュコントローラは、前記プリフェッチヒット率が前記第1のカウンタの値によって示されるように定義されたディセーブル閾値まで低下した場合は、前記データキャッシュのためのデータプリフェッチングをディセーブルにする請求項19に記載のプロセッサ。
【請求項２１】
前記キャッシュコントローラは、前記全ヒット率が前記第2のカウンタの値によって示されるように定義されたイネーブル閾値まで低下した場合は、前記データキャッシュのためのデータプリフェッチングをイネーブルにする請求項19に記載のプロセッサ。
【請求項２２】
前記キャッシュコントローラは、データキャッシュプリフェッチングをイネーブルにすることおよびディセーブルにすることに関連して前記第1のカウンタおよび第2のカウンタの一方または両方をリセットすることによってデータキャッシュプリフェッチングを制御するためのイネーブル/ディセーブルヒステリシスを実施する請求項19に記載のプロセッサ。
【請求項２３】
前記第1のカウンタおよび第2のカウンタは、それぞれ第1の最大カウント値および第2の最大カウント値で飽和する第1の飽和カウンタおよび第2の飽和カウンタを備える請求項19に記載のプロセッサ。
【請求項２４】
前記キャッシュコントローラは、前記キャッシュメモリ内のプリフェッチされたデータ行上のデータキャッシュヒットの割合を反映する第1のカウンタ内のプリフェッチヒット率をトラッキングすることによって前記プリフェッチヒットをトラッキングし、データキャッシュヒット対データキャッシュミスの前記全割合を反映する第2のカウンタ内の全ヒット率をトラッキングすることによって前記全ヒットをトラッキングする請求項14に記載のプロセッサ。
【請求項２５】
前記キャッシュコントローラは、データキャッシュプリフェッチングがイネーブルにされることから動作を開始するために前記データキャッシュを初期設定する請求項14に記載のプロセッサ。
【請求項２６】
前記キャッシュコントローラは、データプリフェッチングがイネーブルにされた場合のみ、1つまたは複数の定義されたプリフェッチングポリシーに従ってデータ行を前記データキャッシュの中にプリフェッチし、データプリフェッチングがイネーブルにされたかどうかに関係なく、データキャッシュミスに応答してデータ行を前記データキャッシュの中にフェッチする請求項14に記載のプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般にプロセッサの分野に関し、具体的にはプロセッサにおけるデータプリフェッチングを制御するためのシステムおよび方法に関する。
【背景技術】
【０００２】
プロセッサは、メモリ関連の処理隘路を緩和するためにキャッシングを使用する。命令キャッシングは、例えば、より高速のアクセスメモリを使用して、メインメモリまたはより高いレベルのキャッシュメモリなどのより低速のメモリに格納されているプログラム命令のより大きなセットの選択された部分を保持することによって機能する。
【０００３】
したがって、キャッシュに存在する命令は、より低速のメモリへのアクセスのために必要とされるであろうよりも低い遅延でアクセスされ、プロセッサは、普通、何らかの形のハードウェアベースの命令プリフェッチングを利用して、命令キャッシュをより低速のメモリからの必要とされる命令の行で満たしておく。プリフェッチングは、より低速のメモリからの命令の行をそれらの行の中の命令が必要とされる前に命令キャッシュの中に入れておく。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ハードウェアベースのプリフェッチングは、データにも適用されうる。しかし、データを首尾よくプリフェッチすることは、命令を首尾よくプリフェッチすることより難しい可能性がある。例えば、データ値は、プログラム命令よりメモリ内でよりいっそう散在または分散している可能性があり、予測ベースのプリフェッチングをより困難にする。したがって、データプリフェッチングは、パフォーマンスを改善することもあり、またはしないこともあり、データプリフェッチングのパフォーマンスは、プロセッサの動作中に劇的に変化することもある。
【０００５】
したがって、例えば、プリフェッチ動作を「フィルタリングする」ことが知られている。プリフェッチフィルタリングは「汚染」回避機構を表し、データキャッシュは、決して使用されないプリフェッチされたデータ行、すなわち、プリフェッチされたがアクセス(ヒット)される前に最終的には置換されるデータ行を包含する場合、汚染されているとみなされる。したがって、プリフェッチフィルタリングは、データプリフェッチングを継続的に実行するが、そのようなフィルタリングがなければ別途実行されるであろういくつかのデータプリフェッチを選択的にスキップすることを暗に意味する。
【０００６】
より詳細には、個々のデータプリフェッチは、適用されるフィルタリング基準によっては、行われることもあり、または行われないこともある。フィルタリング基準は、例えば、プログラム実行の何らかの範囲全体にわたって展開されたプリフェッチング動作履歴を反映してもよい。しかし、適切なフィルタリングの判定は、とりわけ、フィルタリングなしのデータプリフェッチングに意味のあるパフォーマンス改善をもたらすために、望ましくないハードウェアの複雑性または資源の消費を必要とする可能性がある。
【課題を解決するための手段】
【０００７】
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  接続
【図１】
2010532904.tif 000003
【図２】
2010532904.tif 000004
【図３】
2010532904.tif 000005
【図４】
2010532904.tif 000006
【図５】
2010532904.tif 000007
【図６】
2010532904.tif 000008
【図７】
2010532904.tif 000009
【国際調査報告】
2010532904.tif 000010
2010532904.tif 000011