(57)【要約】      （修正有）【課題】データ処理システム用のキャッシュ置換ポリシーを提供する。【解決手段】データ処理システムは、キャッシュメモリ５８内に各キャッシュライン６６とともに記憶される保持優先度値ＰＶに基づいて、キャッシュ置換ポリシーを適用するための、キャッシュメモリ５８およびキャッシュ制御回路５６を含む。キャッシュライン６６をキャッシュメモリ５８に挿入するときに設定される初期保持優先度値は、複数のソースのうちのどれが挿入をもたらすメモリアクセス要求を発行したのか、または挿入をもたらすメモリアクセス要求の特権レベルのうちの一方または双方に依存する。命令フェッチに起因するキャッシュラインの初期保持優先度レベルは、データアクセスに起因するキャッシュラインとは異なって設定され得る。【選択図】図３
2014123357.tif 000002
【特許請求の範囲】
【請求項１】
データを処理するための装置であって、
メモリアクセス要求の複数のソースと、
前記複数のソースに連結されるキャッシュメモリと、
前記キャッシュメモリに連結され、前記キャッシュメモリへのキャッシュラインの挿入、および前記キャッシュメモリからのキャッシュラインの追い出しを制御するように構成された、キャッシュ制御回路と、を備え、
前記キャッシュ制御回路は、前記キャッシュメモリに挿入される各キャッシュラインと関連付けられるそれぞれの保持優先度値を記憶するように構成され、
前記キャッシュ制御回路は、前記保持優先度値に依存して前記キャッシュメモリから追い出すキャッシュラインを選択するように構成され、また、
前記キャッシュ制御回路は、
（ｉ）前記複数のソースのうちのどれが、前記キャッシュメモリへの前記キャッシュラインの挿入をもたらす、メモリアクセス要求を発行したのか、および
（ｉｉ）前記メモリアクセス要求の特権レベル、のうちの少なくとも１つに依存して前記キャッシュメモリに挿入されるキャッシュラインと関連付けられる、保持優先度値を設定するように構成された、
装置。
【請求項２】
前記キャッシュ制御回路は、高い保持優先度に対応する保持優先度値を有するキャッシュラインに優先して、低い保持優先度に対応する保持優先度値を有するキャッシュラインを追い出すように構成された、請求項１に記載の装置。
【請求項３】
前記複数のソースは、
実行のためのプログラム命令をフェッチするように構成された、命令フェッチ回路と、
前記プログラム命令の制御下で処理操作の対象となるデータ値にアクセスするように構成された、データアクセス回路と、を備え、
前記命令フェッチ回路によって発行されるメモリアクセス要求の結果として前記キャッシュメモリに挿入されるキャッシュラインは、命令保持優先度値と関連付けられ、また、前記データアクセス回路によって発行されるメモリアクセス要求の結果として前記キャッシュメモリに挿入されるキャッシュラインは、前記命令保持優先度値と異なるデータ保持優先度値と関連付けられる、請求項１に記載の装置。
【請求項４】
前記キャッシュ制御回路は、
（ｉ）前記命令保持優先度値が、前記データ保持優先度値よりも高い保持優先度に対応すること、および
（ｉｉ）前記命令保持優先度値が、前記データ保持優先度値よりも低い保持優先度に対応すること、のうちの１つを設定するように、フラグ値に応答する、請求項３に記載の装置。
【請求項５】
前記フラグ値は、ソフトウェアプログラマブルなフラグ値である、請求項４に記載の装置。
【請求項６】
前記命令フェッチ回路および前記データアクセス回路は、インオーダープロセッサの一部であり、前記命令保持優先度値は、前記データ保持優先度値よりも低い保持優先度に対応する、請求項３に記載の装置。
【請求項７】
前記保持優先度値は、それらの関連するキャッシュラインのＴＡＧ値とともに前記キャッシュメモリ内に記憶される、請求項１に記載の装置。
【請求項８】
前記キャッシュ制御回路は、最低保持優先度に対応する関連する保持優先度値を有するキャッシュラインの中から追い出すためのキャッシュラインを選択するように構成された、請求項２に記載の装置。
【請求項９】
前記キャッシュ制御回路は、最低保持優先度に対応する関連する保持優先度値を有するキャッシュラインの中から追い出すための前記キャッシュラインをランダムに選択するように構成された、請求項８に記載の装置。
【請求項１０】
前記最低保持優先度に対応する関連する保持優先度値を伴う、いかなるキャッシュラインもない場合、前記キャッシュコントローラは、少なくとも１つのキャッシュラインが、前記最低保持優先度に対応する保持優先度値を有するまで、前記キャッシュメモリ内の全ての前記キャッシュラインの保持優先度を降格させるように構成された、請求項８に記載の装置。
【請求項１１】
前記キャッシュ制御回路は、前記キャッシュメモリの中に既に存在するキャッシュラインへのアクセスを検出し、前記キャッシュラインの保持優先度を昇格させるために前記キャッシュラインの保持優先度値を変更するように構成された、請求項２に記載の装置。
【請求項１２】
前記保持優先度値は、
（ｉ）各アクセスに応じた、最高保持優先度へ向けての前記キャッシュラインの保持優先度の漸増的な昇格、
（ｉｉ）最高保持優先度への前記キャッシュラインの直接的な昇格、のうちの１つを行うように変更される、請求項１１に記載の装置。
【請求項１３】
前記複数のソースは、汎用プロセッサと、グラフィックス処理ユニットとを含む、請求項１に記載の装置。
【請求項１４】
前記複数のソースは、複数の汎用プロセッサを含む、請求項１に記載の装置。
【請求項１５】
前記キャッシュメモリは、少なくとも１つの１次キャッシュメモリおよび２次キャッシュメモリを含むキャッシュメモリの階層内の、前記２次キャッシュメモリである、請求項１に記載の装置。
【請求項１６】
前記キャッシュメモリは、少なくとも１つの１次キャッシュメモリ、少なくとも１つの２次キャッシュメモリ、および３次キャッシュメモリを含むキャッシュメモリの階層内の、前記３次キャッシュメモリである、請求項１に記載の装置。
【請求項１７】
前記保持優先度値は、ｎビットの保持優先度値であり、キャッシュラインの挿入に応じて前記キャッシュ制御回路によって設定することができる、異なる保持優先度値の合計が、２ｎ−１である、請求項１に記載の装置。
【請求項１８】
カーネルプログラム特権レベルを伴うメモリアクセス要求の結果として前記キャッシュメモリに挿入されるキャッシュラインは、カーネル保持優先度値と関連付けられ、前記キャッシュレベルに挿入されるキャッシュラインは、ユーザ保持優先度値と関連付けられる、請求項１に記載の装置。
【請求項１９】
前記カーネル保持優先度値が、前記ユーザ保持優先度値よりも高い保持優先度に対応する、
前記ユーザ保持優先度値が、前記カーネル保持優先度値よりも高い保持優先度に対応する、のうちの１つである、請求項１８に記載の装置。
【請求項２０】
データを処理するための装置であって、
メモリアクセス要求を生成するための複数のソース手段と、
データを記憶するためのキャッシュメモリ手段と、
前記キャッシュメモリ手段へのキャッシュラインの制御挿入、および前記キャッシュメモリ手段からのキャッシュラインの追い出しを制御するためのキャッシュ制御手段と、を備え、
前記キャッシュ制御手段は、前記キャッシュメモリ手段に挿入される各キャッシュラインと関連付けられるそれぞれの保持優先度値を記憶するように構成され、
前記キャッシュ制御手段は、前記保持優先度値に依存して前記キャッシュメモリ手段から追い出すキャッシュラインを選択するように構成され、
前記キャッシュ制御手段は、
（ｉ）前記複数のソースのうちのどれが、前記キャッシュメモリ手段への前記キャッシュラインの挿入をもたらす、メモリアクセス要求を発行したのか、および
（ｉｉ）前記メモリアクセス要求の特権レベル、のうちの少なくとも１つに依存して前記キャッシュメモリ手段に挿入されるキャッシュラインと関連付けられる、保持優先度値を設定するように構成された、
装置。
【請求項２１】
データを処理する方法であって、
複数のソースでメモリアクセス要求を生成するステップと、
キャッシュメモリ内にデータを記憶するステップと、
前記キャッシュメモリ手段へのキャッシュラインの制御挿入、および前記キャッシュメモリ手段からのキャッシュラインの追い出しを制御するステップと、を含み、前記方法はさらに、
前記キャッシュメモリに挿入される各キャッシュラインと関連付けられるそれぞれの保持優先度値を記憶するステップと、
前記保持優先度値に依存して前記キャッシュメモリ手段から追い出すキャッシュラインを選択するステップと、
保持優先度値を設定するステップであって、
（ｉ）前記複数のソースのうちのどれが、前記キャッシュメモリへの前記キャッシュラインの挿入をもたらす、メモリアクセス要求を発行したのか、および
（ｉｉ）前記メモリアクセス要求の特権レベル、のうちの少なくとも１つに依存して前記キャッシュメモリに挿入されるキャッシュラインと関連付けて、設定するステップと、
を含む、方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理システムの分野に関する。より具体的には、本発明は、データ処理システム内で使用するためのキャッシュ置換ポリシー(policies)に関する。
【背景技術】
【０００２】
データ処理システムにキャッシュメモリを提供することが知られている。キャッシュメモリは、頻繁に使用されるデータまたは命令へのより高速でより効果的なアクセスを提供する。キャッシュメモリは、一般的に、メインメモリと比較して、限られたサイズを有し、故に、キャッシュメモリ内には、任意の所与の時点で、メインメモリ内に保持される命令／データのサブセットだけしか保持することができない。キャッシュメモリには、置換ポリシーが備えられており、この置換ポリシーは、メインメモリからフェッチしてキャッシュメモリ内に記憶すべき新しいキャッシュラインのための空間を作るために、キャッシュから除去すべきキャッシュライン（データおよび／または命令を含み得る）を決定する。LRU（Least Recently Used）,ラウンドロビン(round robin),ランダム（random）等の、キャッシュ置換ポリシーの数多くの既知の例がある。
【発明の概要】
【課題を解決するための手段】
【０００３】
一態様から概観すると、本発明は、データを処理するための装置を提供し、該装置は、
メモリアクセス要求の複数のソース（source）と、
該複数のソースに結合されるキャッシュメモリと、
該キャッシュメモリに結合され、該キャッシュメモリへのキャッシュラインの挿入、および該キャッシュメモリからのキャッシュラインの追い出しを制御するように構成された、キャッシュ制御回路と、を含み、
該キャッシュ制御回路は、該キャッシュメモリに挿入される各キャッシュラインと関連付けられたそれぞれの保持優先度値を記憶するように構成され、
該キャッシュ制御回路は、該保持優先度値に依存して該キャッシュメモリから追い出すキャッシュラインを選択するように構成され、
該キャッシュ制御回路は、
（ｉ）該複数のソースのうちのどれが、該キャッシュメモリへの該キャッシュラインの挿入をもたらすメモリアクセス要求を発行したのか、および
（ｉｉ）該メモリアクセス要求の特権レベル、のうちの少なくとも１つに依存して該キャッシュメモリに挿入されるキャッシュラインと関連付けられる、保持優先度値を設定するように構成されている。
【０００４】
本手法は、各キャッシュラインを、メモリアクセス要求のソースおよび／またはメモリアクセス要求の特権レベルに依存する保持優先度値と関連付けることによって、改善された置換ポリシーが達成され得ることを認識する。次いで、これらの割り当てられた保持優先度値（キャッシュラインがキャッシュメモリ内に存在する間に修正され得る）に依存して、キャッシュメモリから追い出されるキャッシュラインが選択される。
【０００５】
キャッシュ制御回路は、高い保持優先度に対応する保持優先度値を有するキャッシュラインに優先して、低い保持優先度に対応する保持優先度値を有するキャッシュラインを追い出すように構成され得る。故に、保持優先度値は、キャッシュメモリ内に所与のキャッシュラインを保持することの予測される望ましさを表すために使用されることができる。キャッシュメモリ内に所与のキャッシュラインを保持することの望ましさは、それが頻繁にアクセスされるという事実、またはキャッシュラインがキャッシュメモリ内に存在しないことによってアクセスが遅延する場合に顕著なペナルティがあるという事実の結果であり得る。フェッチをトリガーしたオリジナルメモリアクセス要求のソース、および／またはフェッチをトリガーしたメモリアクセ要求の特権レベルに依存して設定される保持優先度値は、キャッシュメモリ内に保持されるキャッシュラインによって達成される利点を増やすことができる（または、別の観点から見れば、キャッシュメモリ内に保持されないキャッシュラインによって被るペナルティを低減させる）。
【０００６】
いくつかの例示的な実施形態において、複数のソースは、実行のためのプログラム命令をフェッチするように構成された命令フェッチ回路と、処理操作を受けるデータ値にアクセスするように構成されたデータアクセス回路とを備える。例として、命令フェッチ回路およびデータアクセス回路はどちらも、汎用プロセッサ、グラフィックス処理ユニット、またはＤＳＰの一部であり得る。命令フェッチ回路またはデータアクセス回路によるメモリアクセスの結果としてキャッシュラインがキャッシュメモリ内に挿入されたかどうかに応じて、命令保持優先度値またはデータ保持優先度値のどちらかが、そのキャッシュラインと関連付けられ得る。命令保持優先度値およびデータ保持優先度値は、その後、キャッシュラインがキャッシュメモリから追い出される異なる可能性を与えるために、異なっている。
【０００７】
状況に応じて、命令保持優先度値が、データ保持優先度値よりも高い保持優先度に対応することが望ましくなり得る。他の状況では、逆の保持優先度関係を保持すべきであることが望ましくなり得る。故に、いくつかの実施形態において、キャッシュ制御回路は、上の関係のうちの１つを設定するために、フラグに応答する。
【０００８】
このフラグは、物理的なハードウェア信号によって制御されることができる可能性があるが、いくつかの実施形態において、フラグ値は、ソフトウェアプログラマブルなフラグプログラム値であり、この値は、命令またはデータが、キャッシュメモリ内に挿入されたときに、異なる保持優先度値をそれらに割り当てさせることによって、キャッシュメモリ内に優先的に保持されるかどうかを制御する。
【０００９】
いくつかの実施形態において、命令フェッチ回路およびデータアクセス回路はインオーダープロセッサ（in-order processor）の一部であり、この状況において、命令保持優先度値は、データ保持優先度値よりも低い保持優先度を有するべきであることが望ましい。すなわち、（少なくとも、命令が保持されないようにするのではなく、命令よりもデータを保持することを優先させるようにバイアスを印加するという範囲で）メモリ内に命令よりもデータを優先的に保持することが望ましい。
【００１０】
保持優先度値は、システム内（例えば、キャッシュ制御回路内）のどこかに記憶することができるが、これは、いくつかの実施形態において、保持優先度値が、それらの関連するキャッシュラインとともに（最も高い可能性としては、キャッシュメモリが別々のＴＡＧメモリおよびデータメモリを含む場合に、ＴＡＧ値とともに）キャッシュメモリ内に記憶されるという点で好都合である。キャッシュラインは、それらに関連付けられる保持優先度値を容易に収容するために、１またはそれ以上のビット分拡張されてもよい。
【００１１】
追い出すキャッシュラインを選択するときに、キャッシュ制御回路は、キャッシュラインと関連付けられる保持優先度値に応答する。いくつかの実施形態において、キャッシュ制御回路は、表され得る最低保持優先度値に対応する関連する保持優先度値を有するキャッシュラインの中から追い出すキャッシュラインを選択するように構成され得る。最低保持優先度に対応するキャッシュラインのこのプール内で、キャッシュ制御回路は、ラウンドロビンまたはleast recently used等の別のポリシーに従って選択することができるが、最低保持優先度に対応する関連する保持優先度値を有するキャッシュラインの中からランダムな選択を行うのであれば簡単である。
【００１２】
最低保持優先度値に対応し、故に、追い出しに適格である関連する保持優先度値を伴う、いかなるキャッシュラインもない場合、いくつかの実施形態において、キャッシュコントローラは、少なくとも１つのキャッシュラインが、最低保持優先度に対応する保持優先度値を有し、故に、追い出しに適格になるまで、キャッシュメモリ内の全てのキャッシュラインの保持優先度を降格させるように構成される。そのような降格は、記憶された保持優先度値を変更することによって、または記憶された保持優先度値とそれらが表す優先度との間のマッピングを変更することによって達成され得る。
【００１３】
上で論じたように、キャッシュラインが挿入されるときにそれと関連付けられる保持優先度値は、対応するメモリアクセス要求のソースまたは特権レベルに依存して変動する。その後で、保持優先度値は、そのキャッシュラインと関連付けられるアクティビティに個々に依存して、またはキャッシュメモリのアクティビティに全体的に依存して変更され得る。いくつかの実施形態において、キャッシュ制御回路は、キャッシュメモリの中に既に存在するキャッシュラインへのアクセス（ヒット）を検出し、そのようなヒットに応じて、キャッシュラインの保持優先度を昇格させるためにその保持優先度を変更するように構成される。したがって、定期的にアクセスされるキャッシュラインは、それらがキャッシュメモリ内に優先的に保持されるように、それらの保持優先度を昇格させる。
【００１４】
キャッシュヒットに応じたキャッシュラインの保持優先度値の昇格は、種々の異なる方法で行うことができる。いくつかの実施形態において、ヒットしたキャッシュラインは、各アクセスに応じて、最高の最大保持優先度値（これに到達すると、ヒットに応じたさらなる昇格をされない）に向かってその保持優先度値を漸増的に昇格させるか、または代替として、ヒットが起こったときに、最高保持優先度に直接移行するように変更されても良い。
【００１５】
上で論じたように、異なる保持優先度値が関連する複数のソースは、命令フェッチ回路対データアクセス回路の形態を取ることができる。他の実施形態において、複数のソースは、汎用プロセッサと、グラフィックス処理ユニットとを含むことができ、これらは、キャッシュラインが、汎用プロセッサとグラフィックス処理ユニットとの間で共有されるキャッシュメモリ内に挿入されるようにトリガーするキャッシュラインと関連付けられる、異なる保持優先度値を有する。一例として、グラフィックス処理ユニットは、キャッシュメモリ内でミスするメモリアクセスに関連したより長い待ち時間を許容することができる。故に、汎用プロセッサのために、キャッシュメモリに挿入されるキャッシュラインに、より高い保持優先度に対応する保持優先度値を割り当てることによって、汎用プロセッサにキャッシュリソースを偏らせることが望ましい。
【００１６】
複数のソースの別の例は、潜在的に同一である複数の汎用プロセッサであり得る。しかしながら、これらのプロセッサのいくつかには、よりスピードが重視されるタスクが割り当てられ得、故に、その複数の汎用プロセッサによって共有されるキャッシュメモリ内のキャッシュラインの保持を、命令またはデータへの迅速なアクセスを最も必要とするプロセッサに偏らせることが適切である（例えば、プロセッサのいくつかは、パフォーマンスが重視されるリアルタイムタスクを実行する一方で、他のプロセッサは、より長い待ち時間を容易に許容することができるバックグラウンドメンテナンスタスクをする）。
【００１７】
本手法が適用されるキャッシュメモリは、メモリシステム内の位置において種々の異なる形態を取ることができる。いくつかの実施形態において、キャッシュメモリは、２次キャッシュメモリであるが、他の実施形態において、キャッシュメモリは、３次キャッシュメモリであり得る。
【００１８】
保持優先度値は、指定することが所望される細かさに依存して、種々の異なるビットサイズを有することができることが認識されるであろう。支持される細かさの程度と、保持優先度値を記憶するために必要な記憶リソースとの間にはバランスがある。いくつかの実施形態では、保持優先度値を２ビットの保持優先度値とすることによって、妥協が達成される。
【００１９】
上で述ベたように、キャッシュメモリへ挿入するとキャッシュラインに割り当てられる保持優先度は、キャッシュメモリにキャッシュラインをフェッチするメモリアクセス要求と関連付けられる特権レベルに依存して変動し得る。このように、キャッシュラインの保持は、より高い特権レベルを伴うメモリアクセス要求によってフェッチされるキャッシュラインを優先するように偏向され得る。一例として、本装置は、カーネルプログラムおよび１つ以上のユーザプログラムの双方を実行し得、カーネルプログラムの特権レベルは、１つ以上のユーザプログラムの特権レベルよりも高い。この場合、例えば、カーネルプログラムのためにキャッシュメモリに挿入されるキャッシュラインには、１つ以上のユーザプログラムのために挿入されるキャッシュラインよりも高い、保持のためのより高い保持優先度が与えられ得る。他の実施形態では、この逆も当てはまり得る。すなわち、ユーザプログラムのために挿入されるキャッシュラインには、カーネルプログラムのために挿入されるキャッシュラインよりも高い優先度が与えられても良い。
【００２０】
本発明の別の態様から概観すると、本発明は、データを処理するための装置を提供し、該装置は、
メモリアクセス要求を生成するための複数のソース手段と、
データを記憶するためのキャッシュメモリ手段と、
該キャッシュメモリ手段へのキャッシュラインの制御挿入、および該キャッシュメモリ手段からのキャッシュラインの追い出しを制御するためのキャッシュ制御手段と、を備え、
該キャッシュ制御手段は、該キャッシュメモリ手段に挿入される各キャッシュラインと関連付けられるそれぞれの保持優先度値を記憶するように構成され、
該キャッシュ制御手段は、該保持優先度値に依存して該キャッシュメモリ手段から追い出すキャッシュラインを選択するように構成され、
該キャッシュ制御手段は、
（ｉ）該複数のソースのうちのどれが、該キャッシュメモリ手段への該キャッシュラインの挿入をもたらす、メモリアクセス要求を発行したのか、および
（ｉｉ）該メモリアクセス要求の特権レベル、のうちの少なくとも１つに依存して該キャッシュメモリ手段に挿入されるキャッシュラインと関連付けられる、保持優先度値を設定するように構成される。
【００２１】
さらなる態様から概観すると、本発明は、データを処理する方法を提供し、該方法は、
複数のソースでメモリアクセス要求を生成するステップと、
キャッシュメモリ内にデータを記憶するステップと、
該キャッシュメモリ手段へのキャッシュラインの制御挿入、および該キャッシュメモリ手段からのキャッシュラインの追い出しを制御するステップと、を含み、該方法はさらに、
該キャッシュメモリに挿入される各キャッシュラインと関連付けられるそれぞれの保持優先度値を記憶するステップと、
該保持優先度値に依存して該キャッシュメモリ手段から追い出すキャッシュラインを選択するステップと、
保持優先度値を設定するステップであって、
（ｉ）該複数のソースのうちのどれが、該キャッシュメモリへの該キャッシュラインの挿入をもたらす、メモリアクセス要求を発行したのか、および
（ｉｉ）該メモリアクセス要求の特権レベル、のうちの少なくとも１つに依存して該キャッシュメモリに挿入されるキャッシュラインと関連付けられる、保持優先度値を設定するステップと、を含む。
【００２２】
本発明の上述の、および他の目的、特徴、および利点は、添付図面にとともに読まれるべき、実例となる実施形態の以下の詳細な説明から明らかになるであろう。
【００２３】
以下、添付図面を参照しながら、本発明の実施形態を単なる例として説明する。
【図面の簡単な説明】
【００２４】
【図１】複数のアクセス要求ソース、キャッシュ階層、およびメインメモリを含む、データ処理システムを概略的に図示する図である。
【図２】命令フェッチ回路およびデータアクセス回路を含む、汎用プロセッサを概略的に図示する図である。
【図３】異なる付随の保持優先度値を伴うキャッシュラインを挿入し、次いで、それらの保持優先度値に依存してキャッシュラインの追い出しを行うための、キャッシュ制御回路を概略的に図示する図である。
【図４】１つのキャッシュラインの内容を概略的に図示する図である。
【図５】受け取ったメモリアクセス要求に応じたキャッシュ制御回路の動作を概略的に図示するフロー図である。
【図６】保持優先度値がメモリアクセス要求のソースに従って設定されるときに、キャッシュミスに関連して行われる処理操作を概略的に図示するフロー図である。
【図７】ミスをもたらしたメモリアクセスが、カーネルプログラムと関連付けられるカーネル特権レベルを有するかどうかに依存して、保持優先度値が設定されることを除いて、図６のフローと類似するフロー図である。
【発明を実施するための形態】
【００２５】
図１は、メインメモリ４と、１つの３次キャッシュ６、２つの２次キャッシュ８、１０、４つの１次キャッシュ１２、１４、１６、１８を含むキャッシュ階層と、２つの汎用プロセッサ２０、２２、１つのグラフィックス処理ユニット２４、およびＤＳＰユニット２６を含むメモリアクセス要求の複数のソースとを備える、データ処理装置２を概略的に図示する。
【００２６】
種々のキャッシュメモリ６〜１８は、階層構造で配列される。アクセス要求ソース２０、２２、２４、２６の全ては、単一の３次キャッシュ６を共有する。２つの汎用プロセッサ２０、２２は、２次キャッシュ８を共有する。グラフィックス処理ユニット２４およびＤＳＰ２６は、２次キャッシュ１０を共有する。アクセス要求ソース２０、２２、２４、２６のそれぞれは、それ自体の１次キャッシュ１２、１４、１６、１８を有する。本手法は、キャッシュ６〜１８のいずれかに適用することができるが、２次キャッシュ８、１０および３次キャッシュ６で特に有用であることが見出される。
【００２７】
また、同図にはメインメモリ４も図示される。このメインメモリ４は、メモリアドレス空間をサポートし、この空間内では、主に、メモリアドレスの異なる範囲が、種々のアクセス要求ソースに２０、２２、２４、２６上で実行する異なるプログラムまたはタスクによって使用され得る。キャッシュメモリ６〜１８のいずれかにフェッチされるキャッシュラインは、メインメモリ４内の対応するアドレス（実際には、小範囲のアドレス）を有する。図１で図示されるように、異なる範囲のメモリアドレスが、複数のユーザプログラム２８、３０、３２、および３４のうちの異なるものによって使用され、異なる範囲のメモリアドレス３６が、カーネルプログラム（特定の動作モードで頻繁に実行され得るコードで構成されるオペレーティングシステムの一部）に使用される。メモリ管理ユニット（図示せず）は、メモリアクセスアクセス要求の現在の特権レベルのソースに依存して、メインメモリ４の異なる領域へのアクセスを制限するために提供され得る。特権レベルはまた、保持優先度を制御するためにも使用することができる。後で論じるように、キャッシュラインと関連付けられるメモリアドレス（複数可）は、キャッシュメモリ６〜１８のうちの１つに挿入されたときに、そのキャッシュラインに割り当てられる保持優先度値を決定するために使用され得る。メモリアドレス空間は、異なる保持優先度値を異なる範囲のメモリアドレスと関連付けることができるように、複数の範囲のメモリアドレスに分割される。
【００２８】
図２は、命令フェッチ回路４０と、データアクセス回路４２とを含む、汎用プロセッサ３８を概略的に図示する。命令フェッチ回路４０は、インオーダー命令パイプライン４４に渡される一連のプログラム命令をフェッチし、該プログラム命令は、それらが種々の処理段階を受けるにつれて、該パイプラインに沿って進行する。これらの処理段階の少なくとも１つは、命令復号器４６で命令を復号化し、レジスタバンク４８、乗算器５０、シフター５２、および加算器５４等の処理回路を制御する制御信号を生成して、復号化したプログラム命令によって指定される処理操作を行う。データアクセス回路４２は、ロードストアユニット（ＬＳＵ）の形態であり、データ値の読み出しおよび書き込みを行うために、データアクセスを行い、このデータ値は、処理回路４８、５０、５２、５４によって実行されるプログラム命令の制御下で処理操作の対象となる。汎用プロセッサ３８は、メモリアクセス要求が命令またはデータ、および関連する特権レベルに関連するかどうかを識別する信号を出力する。
【００２９】
図２は、汎用プロセッサ３８の様式化した代表例を示すこと、および実際に、汎用プロセッサ３８は、一般的に、数多くのさらなる回路要素を含むことが認識されるであろう。これらの回路要素は、明確にするために、図２から省略されている。
【００３０】
命令フェッチ回路４０およびデータアクセス回路４２を介してアクセスされるデータおよび命令は、キャッシュ階層６〜１８のレベルのいずれかに記憶され得、また、メインメモリ４にも記憶される。メモリアクセス要求は、ヒットするまでキャッシュ階層を通して渡されるか、またはいかなるヒットも起こらなければ、メインメモリ４に渡される。いかなるヒットも起こらなかったときに、これはミスとなり、アクセスしようとするデータ（または命令）を含むキャッシュラインが、メインメモリ４からキャッシュ階層６〜１８へフェッチされる。より高次のキャッシュの１つでミスが起こった場合（例えば、１次キャッシュ１２〜１８でミスが起こったが、２次キャッシュまたは３次キャッシュ６等の、より低次のキャッシュ内ではヒットが起こった場合）、キャッシュラインが、そのより低次のキャッシュから、より高次のメモリアクセス要求のソースにより近いキャッシュに取り出される。本手法は、キャッシュラインがキャッシュ階層の中のあるレベルから別のレベルにコピーされるときに、挿入時に、保持優先度値を割り当てるために使用され得る。
【００３１】
メモリアクセス要求がアクセス要求ソース２０、２２、２４、２６のうちの１つによって行われると、メモリアクセス要求のソースを識別する信号、ならびに現在設定されているプログラム実行の特権レベルを識別する信号が付随する。一例として、付随の信号は、メモリアクセス要求が、命令フェッチ回路４０から生じているのか、またはデータアクセス回路４２から生じているのかを区別することができる。メモリアクセス要求の結果がミスとなった場合、メモリアクセス要求のソースを示すこの信号は、そのキャッシュラインがミスの起こったキャッシュメモリに挿入されるときに、ミスに対応するキャッシュラインと関連付けられる保持優先度値を設定するために使用され得る。次いで、命令フェッチまたはデータアクセスの結果として挿入されるキャッシュラインと関連付けられる、これらの異なる保持優先度値は、後に、キャッシュメモリから追い出すキャッシュラインの選択を制御するために使用され得る。
【００３２】
上記は、ソースが命令フェッチ回路４０であるか、またはデータアクセス回路４２であるかに基づいた、保持優先度値の異なる設定を説明している。異なる保持優先度値はまた、例えば、ソースが汎用プロセッサ２０、２２のうちの１つであったか、またはグラフィックス処理ユニット２４であったか等の他の要因に応じて設定することもできる。他の実施形態において、２つの汎用プロセッサ２０、２２は、異なるタイプのタスクを行うことができ、また、該タスクのための共有キャッシュメモリに充填されるキャッシュラインのために使用される、関連する異なる保持優先度値を有することができる（例えば、一方のプロセッサ２０は、高いキャッシュ保持優先度が割り当てられる、リアルタイムタスクを行うことができ、もう一方のプロセッサ２２は、より低い保持優先度のバックグラウンドタスクを行うことができる）。
【００３３】
キャッシュメモリ（ソース識別子と別々に、またはソース識別子と組み合わせて使用され得る）に挿入されるキャッシュラインと関連付けられる保持優先度値を制御する別の方法は、そのキャッシュラインと関連付けられる特権レベルに基づく。カーネルプログラムは、一般的に、ユーザプログラムよりも高い特権レベルで実行され、キャッシュラインの保持は、１つ以上のユーザプログラムによってフェッチされるキャッシュラインよりも、カーネルプログラムによってフェッチされるキャッシュラインを優先するように（挿入時に保持優先度値を使用して）偏向され得る。
【００３４】
図３は、キャッシュメモリ５８に連結されるキャッシュ制御回路５６を概略的に図示する。キャッシュ制御回路５６は、メモリアドレスを指定するメモリアクセス要求、メモリアクセス要求のソースの１つからの命令フェッチであるか、データアクセスであるかを識別する信号、および特権レベル信号を受け取る。キャッシュ制御回路５６は、ソフトウェアプログラマブルなフラグ値６０に応答し、このフラグ値は、命令にデータよりも高い保持優先度が与えられたのか、またはデータに命令よりも高い保持優先度が与えられたのかを示す。図２で図示されるようなインオーダー汎用プロセッサでは、データキャッシュラインに命令キャッシュラインよりも高い保持優先度を与えることが、改善された性能をもたらすことが分かっている。ソフトウェアプログラマブルなフラグ値６０は、この優先度が、個々の状況に適合するようにソフトウェア制御下で選択されることを可能にする。
カーネル特権レベルを伴うメモリアクセス要求と関連付けられるキャッシュラインは、ユーザ特権レベルと関連付けられるキャッシュラインよりも高い保持優先度が与えられ、故に、キャッシュメモリ５８内で優先的に保持される。キャッシュ制御回路５６は、キャッシュメモリ５８内に記憶されるキャッシュライン６６によってメモリアクセス要求を提供することができる（ヒットに対応する）かどうか、またはキャッシュメモリ５８が、対応するキャッシュラインを含まず、故に、キャッシュメモリ階層内のより高い階層を参照しなければならない（ミスに対応する）かどうかを判定することを制御する。ミスが起こると、データは、その後で、メモリ階層内のより高い階層から戻され、キャッシュメモリ５８に記憶される（メモリアクセスがキャッシュ不可としてマークされている場合を除く）。
【００３５】
キャッシュメモリ５８が既に満杯である場合は、新しくフェッチされるキャッシュラインのための空間を作るために、既存のキャッシュラインをキャッシュメモリ５８から除去しなければならない。後に下で説明されるように、置換ポリシーは、各キャッシュラインが挿入されたときに、キャッシュ制御回路５６によってキャッシュメモリ５８内に記憶される保持優先度値ＰＶに依存し得る。保持優先度値ＰＶは、キャッシュラインが挿入されたときに初期値に設定されるが、キャッシュラインがキャッシュメモリ５８内に存在する間のキャッシュラインの使用に応じて、ならびに、起こり得るキャッシュメモリ５８の操作の他の態様（例えば、潜在的なビクティム（victim:犠牲者）キャッシュラインのプールを与えるための、全体的な降格）に応じて、変更することができる。
【００３６】
図４は、キャッシュライン６６を概略的に図示する。この実施例において、キャッシュラインは、メモリアドレスに対応するＴＡＧ値６８を含み、そこから、キャッシュラインを構成する命令またはデータのＮ個のワードが、メインメモリ４のメモリアドレス空間から取られている。また、２ビット保持優先度値７０も、キャッシュライン内に含まれる。この保持優先度値は、最高保持優先度に対応する「００」の保持優先度値、および最低保持優先度に対応する「１１」の保持優先度値で示されるように符合化される。下でさらに論じられる実施例において、キャッシュラインは、キャッシュコントローラ５６によってキャッシュメモリ５８に挿入されるときに、初期保持優先度値（PV）７０とともに挿入され、該保持優先度値は、最低保持優先度に対応する「１１」、または最低保持優先度よりも１つ高いレベルに対応する「１０」という保持優先度値のいずれかである。他の初期値、例えば、より高い保持優先度について「０１」を、およびより低い保持優先度について「１０」を使用することができる。キャッシュメモリ内に既に記憶されているキャッシュラインにヒットが起こると、次いで、いくつかの実施形態において、最高保持優先度に対応する制限値「００」に到達するならば、その保持優先度値が１つ減少され得る。他の実施形態において、キャッシュメモリ５８内に既に記憶されているキャッシュラインについてヒットが起こると、次いで、その保持優先度値は、最高保持優先度に対応する「００」に直ちに変更され得る。
【００３７】
図４は、ともに記憶されたＴＡＧおよびデータを伴うキャッシュラインを図示することが理解されるであろう。実際には、ＴＡＧは、データとは別に記憶され得る。この場合、保持優先度値は、有効ビットおよびダーティ（dirty）ビット等の他のビットとともに、ＴＡＧを伴って記憶されることができる。
【００３８】
保持優先度値は、より一般には、ｎビットの保持優先度値である。これは、２ｎ個の可能な保持優先度値Ｋ＝０，１，．．．２ｎ−１を与える。キャッシュライン挿入の異なるクラス（例えばデータ対命令またはカーネル対ユーザ）に割り当てられる保持優先度値は、合計が２ｎ−１となるように選択される。これは、利用できるビット空間に保持優先度値を均一に分布させる。異なる開始挿入値は、例えば、強優先データ（データ＝００、命令＝１１）、弱優先データ（データ＝０１、命令＝１０）、弱優先命令（データ＝１０、命令＝０１）、または強優先命令（データ＝１１、命令＝００）になるように選択することができる。ハードウェア構成またはソフトウェア構成の間で選択され得る異なるポリシーに対応して、これらの異なる開始値が利用されても良い。
【００３９】
図５は、メモリアクセス要求を提供する際に、キャッシュ階層６〜１８内の所与のレベルにおける、キャッシュ制御回路５６およびキャッシュメモリ５８の動作を概略的に図示するフロー図である。ステップ７２で、処理は、アクセス要求を受け取るまで待機する。ステップ７４で、アクセス要求が、キャッシュメモリ５８内のキャッシュラインの１つに既に存在するデータまたは命令に対応しているかどうかに関する判定が行われる。メモリアクセス要求が、既に存在するキャッシュラインに対応する場合、これはヒットであり、処理は、ステップ７６に進む。ステップ７６で、保持優先度値が最も小さい可能な値「００」に到達するならば、ヒットしたキャッシュラインの保持優先度値が１つ減少される（保持優先度レベルを１つ昇格させることに対応する）。ステップ７６の後に、ステップ７８は、キャッシュメモリ５８からのメモリアクセス要求を提供する役割を果たし、処理は、ステップ７２に戻る。
【００４０】
ステップ７４で、いかなるヒットも検出されない場合、処理は、ステップ８０へ進み、そこでは、下でさらに説明するように、キャッシュミス操作がトリガーされる。処理は、次いで、ステップ８２で、データまたは命令のキャッシュラインがキャッシュメモリ５８に戻されるのを、待機する。データ／命令が戻され、キャッシュメモリ５８に（またはそのような挿入と並列して）挿入されると、処理は、ステップ７８に進み、そこでは、メモリアクセス要求が提供される。
【００４１】
図６は、図５のステップ８０でトリガーされるように、ミスに応じてキャッシュ制御回路５６およびキャッシュメモリ５８によって行われる、ミス操作を概略的に図示するフロー図である。ステップ８４で、処理は、キャッシュミスが検出されるまで待機する。ステップ８６で、キャッシュメモリが現在満杯であるかどうかを判定する。キャッシュメモリが現在満杯でない場合、処理は、ステップ８８に進み、そこでは、現在空のキャッシュラインのうちの１つが「ビクティム」としてランダムに選択され、新しくフェッチされたキャッシュラインがその中に充填される。
【００４２】
ステップ８６で、キャッシュが既に満杯であると判定された場合、現在占有しているキャッシュラインの中からビクティムを選択しなければならない。ステップ９０では、最低保持優先度を有する、何らかの現在占有しているキャッシュラインがあるかどうかを判定する。上で論じた例において、これは、「１１」の保持優先度値を有するキャッシュラインに対応する。最低保持優先度を伴ういかなるそのようなキャッシュラインもない場合、処理は、ステップ９２に進み、そこでは、キャッシュメモリ５８内で現在保持されている全てのキャッシュラインの保持優先度のレベルを１つ降格させる。これは、全ての記憶された保持優先度値ＰＶを変更することによって達成することができる。しかしながら、より効率的な実施形態は、同じ結果を達成するために、記憶された保持優先度値と保持優先度レベルとの間のマッピングを変更し得る。全てのキャッシュラインの保持優先度レベルが１つ降格された後に、処理は、ステップ９０に戻り、そこでは、最低保持優先度レベルに関する任意のキャッシュラインの検査を繰り返す。ステップ９０で最低保持優先度レベルを伴う少なくとも１つのキャッシュラインが検出されるまで、処理は、ステップ９０〜９２を循環する。
【００４３】
ステップ９０に従って、最低保持優先度レベルを伴う少なくとも１つのキャッシュラインが検出されたときに、ステップ９４は、最低保持優先度を伴うキャッシュラインからビクティムをランダムに選択する役割を果たす（単一のキャッシュラインがこの最低保持優先度を有する場合、選択は、この単一のラインとなる）。最低保持優先度のキャッシュラインの中からのビクティムのランダムな選択は、実現することが比較的容易である。最低保持優先度のキャッシュラインをこのプールの中から選択する際に、最長未使用時間（least recently used）ポリシーまたはラウンドロビンポリシー等の他の選択ポリシーが採用されても良い。このような異なるポリシーは、一般的に、それらの操作と関連付けられる状態を記憶するために、追加的なリソースを必要とする。
【００４４】
ステップ９４で、ビクティムキャッシュラインが選択されると、ステップ９６では、そのキャッシュラインがダーティである（メインメモリ４で現在保持されているキャッシュラインと異なる、更新された値を含む）かどうかを判定する。キャッシュラインがダーティである場合、ステップ９８は、そのキャッシュラインが、新しく挿入されるキャッシュラインで上書きされる前に、キャッシュラインをメインメモリ４に書き戻す役割を果たす。
【００４５】
ステップ１００では、この実施例において、ミスをトリガーしたメモリアクセスが命令フェッチユニット４０から生じたかどうかを判定する。メモリアクセスがフェッチユニットから生じた場合、キャッシュラインは、少なくとも、フェッチされるべきであった命令を含み、ステップ１０２で、保持優先度値「１０」でマークされる。ステップ１００で、メモリアクセスが命令フェッチユニットからではないと判定された場合、それは、ロードストアユニット４２（データアクセス回路）からのものとなり、ステップ１０４で、保持優先度値ＰＶ「０１」が設定される。次いで、ステップ１０６で、メモリ階層内（例えば、下位レベルのキャッシュメモリまたはメインメモリのうちの１つ）の下位から新しいキャッシュラインを受け取るまで待機する。ステップ１０６で、キャッシュラインを受け取ると、次いでステップ１０８は、ステップ９４において選択されたビクティムを記憶していたキャッシュラインに、初期保持優先度値ＰＶとともに新しいキャッシュラインを書き込む役割を果たす。
【００４６】
図７は、図６のフロー図と類似するフロー図である。図７における違いは、キャッシュミスが起こったキャッシュラインと関連付けられる特権レベルが、オペレーティングシステムのカーネルプログラムに対応するカーネル特権レベルであるかどうかに基づいて、保持優先度値が決定されることである。ビクティムキャッシュラインが選択されると、次いで、ステップ１１０で、キャッシュラインミスが起こったメモリアクセスが、カーネルプログラムに対応する特権レベルを有するかどうかを判定する。ステップ１１０で、メモリアクセスがカーネルプログラムに対応するカーネル特権レベルを有すると判定された場合、ステップ１１２は、保持優先度値ＰＶを「０１」に設定する役割を果たす。逆に、メモリアクセスがユーザ特権レベルを有し、カーネルプログラムに対応しない場合、ステップ１１４は、初期保持優先度値ＰＶを「１０」に設定する役割を果たす。このように、カーネルプログラムと関連付けられるキャッシュラインには、より高い初期保持優先度および他のプログラム（例えば、ユーザプログラム）と関連付けられるキャッシュラインが与えられる。
【００４７】
本発明の実例となる実施形態を、添付図面を参照しながら本明細書に詳細に説明したが、本発明は、それらの厳密な実施形態に限定されるものではなく、また、種々の変更および修正は、添付の特許請求の範囲に記載の本発明の範囲および趣旨から逸脱することなく、当業者によってその中で行うことができることを理解されたい。
【符号の説明】
【００４８】
２  データ処理装置
４  メインメモリ
６  ３次キャッシュメモリ
８，１０  ２次キャッシュメモリ
１２，１４，１６，１８  一次キャッシュメモリ
２０，２２，２４，２６    アクセス要求ソース
３８  汎用プロセッサ
４０  命令フェッチ回路
４２  データアクセス回路
４４  インオーダー命令パイプライン
４６  命令復号器
４８  レジスタバンク
５０  乗算器
５２  シフター
５４  加算器
【図１】
2014123357.tif 000003
【図２】
2014123357.tif 000004
【図３】
2014123357.tif 000005
【図４】
2014123357.tif 000006
【図５】
2014123357.tif 000007
【図６】
2014123357.tif 000008
【図７】
2014123357.tif 000009
【外国語明細書】
2014123357000001.pdf