(57)【要約】  キャッシュメモリシステムは、キャッシュメモリ（２６９，１６Ａ，１７Ａ，１８Ａ）とブロック置換コントローラ（２６６）とを有する。前記キャッシュメモリは、それぞれが複数のブロック記憶位置を有する複数のセットを持ちうる。前記ブロック置換コントローラは、前記キャッシュメモリの各セットに対応する個別カウント値を保持しうる。前記個別カウント値は、前記所定のセット内の、置換データを記憶するための適格なブロック記憶位置をポイントしている。前記ブロック置換コントローラは、前記ブロック記憶位置の少なくとも一部のそれぞれに対して、その対応するブロック記憶位置が最近アクセスされたかどうかを示す関連する最近アクセスビットを保持しうる。また、前記ブロック置換コントローラは、特定の最近アクセスビットが、前記適格なブロック記憶位置が最近アクセスされたことを示しているかどうかに応じて、前記個別カウント値がポイントしている適格なブロック記憶位置に前記置換データを記憶しうる。
2010538390.tif 000002
【特許請求の範囲】
【請求項１】
それぞれが複数のブロック記憶位置を有する複数のセットを有するキャッシュメモリ（２６９，１６Ａ，１７Ａ，１８Ａ）と、
前記キャッシュメモリに結合され、前記キャッシュメモリの各セットに対応する個別カウント値を保持するように構成されたブロック置換コントローラ（２６６）と備え、所定のセットに対応する前記個別カウント値は、前記所定のセット内の、置換データを記憶するための適格なブロック記憶位置をポイントし、
前記ブロック置換コントローラは、前記ブロック記憶位置の少なくとも一部のそれぞれに対して、その対応するブロック記憶位置が最近アクセスされたかどうかを示す関連する最近アクセスビットを保持するように更に構成され、
前記ブロック置換コントローラは、前記個別カウント値がポイントしている適格なブロック記憶位置に対応する前記最近アクセスビットの特定の１つが、前記適格なブロック記憶位置が最近アクセスされたことを示しているかどうかに応じて、この適格なブロック記憶位置に前記置換データを記憶するように更に構成されている、キャッシュメモリシステム（２００）。
【請求項２】
前記ブロック置換コントローラは、前記個別カウント値がポイントしている前記適格なブロック記憶位置に対応する前記最近アクセスビットの前記特定の１つが、この適格なブロック記憶位置が最近アクセスされていないことを示す場合に、この適格なブロック記憶位置に前記置換データを記憶するように構成されている、請求項１に記載のキャッシュメモリシステム。
【請求項３】
前記ブロック置換コントローラは、キャッシュアクセス要求が前記適格なブロック記憶位置にアクセスすると、前記適格なブロック記憶位置に対応する前記最近アクセスビットの前記特定の１つを、前記適格なブロック記憶位置が最近アクセスされたことを示すように設定するように更に構成されている、請求項１に記載のキャッシュメモリシステム。
【請求項４】
前記ブロック置換コントローラは、前記個別カウント値がポイントしている前記適格なブロック記憶位置に対応する前記最近アクセスビットの前記特定の１つが、この適格なブロック記憶位置が最近アクセスされたことを示す場合に、この適格なブロック記憶位置に前記置換データが記憶されるのを阻止するように更に構成されている、請求項１に記載のキャッシュメモリシステム。
【請求項５】
前記ブロック置換コントローラは、対応する適格なブロック記憶位置および所定の最近アクセスビットをポイントしている対応する個別カウント値が、前記対応する適格なブロック記憶位置が最近アクセスされていることを示す場合に、この関連する適格なブロック記憶位置が最近アクセスされていないことを示すように、前記所定の最近アクセスビットを設定するように更に構成されている、請求項１に記載のキャッシュメモリシステム。
【請求項６】
それぞれが複数のブロック記憶位置を有する複数のセットを有するキャッシュメモリ（２６９，１６Ａ，１７Ａ，１８Ａ）を提供するステップと、
前記キャッシュメモリの各セットに対応する個別カウント値を保持するステップであって、所定のセットに対応する前記個別カウント値は、前記所定のセット内の、置換データを記憶するための適格なブロック記憶位置をポイントしているステップと、
前記ブロック記憶位置の少なくとも一部のそれぞれに対して、その対応するブロック記憶位置が最近アクセスされたかどうかを示す関連する最近アクセスビットを保持するステップと、
前記個別カウント値がポイントしている適格なブロック記憶位置に対応する前記最近アクセスビットの特定の１つが、前記適格なブロック記憶位置が最近アクセスされたことを示しているかどうかに応じて、この適格なブロック記憶位置に前記置換データを記憶するステップとを含む方法。
【請求項７】
前記個別カウント値がポイントしている前記適格なブロック記憶位置に対応する前記最近アクセスビットの前記特定の１つが、この適格なブロック記憶位置が最近アクセスされていないことを示す場合に、この適格なブロック記憶位置に前記置換データを記憶するステップを更に含む、請求項６に記載の方法。
【請求項８】
キャッシュアクセス要求が前記適格なブロック記憶位置にアクセスすると、前記適格なブロック記憶位置に対応する前記最近アクセスビットの前記特定の１つを、前記適格なブロック記憶位置が最近アクセスされたことを示すように設定するステップを更に含む、請求項７に記載の方法。
【請求項９】
前記個別カウント値がポイントしている前記適格なブロック記憶位置に対応する前記最近アクセスビットの前記特定の１つが、この適格なブロック記憶位置が最近アクセスされたことを示す場合に、この適格なブロック記憶位置に前記置換データが記憶されるのを阻止するステップを更に含む、請求項７に記載の方法。
【請求項１０】
対応する適格なブロック記憶位置および所定の最近アクセスビットをポイントしている対応する個別カウント値が、前記対応する適格なブロック記憶位置が最近アクセスされていることを示す場合に、この関連する適格なブロック記憶位置が最近アクセスされていないことを示すように、前記所定の最近アクセスビットを設定するステップを含む、請求項８に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はマイクロプロセッサのキャッシュに関し、より詳細には、キャッシュのデータ置換機構に関する。
【背景技術】
【０００２】
コンピュータシステムのメインメモリは、通常、速度よりも実装密度を重視して設計されているため、マイクロプロセッサの設計者は、マイクロプロセッサが直接メインメモリに頻繁にアクセスする必要がなくなるように、マイクロプロセッサの設計にキャッシュを追加してきた。キャッシュとは、メインメモリよりも高速なアクセスが可能な小容量のメモリである。キャッシュは、一般に、メインのシステムメモリに使用されるメモリ（通常は、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）またはシンクロナスダイナミックランダムアクセスメモリ（ＳＤＲＡＭ））よりも高速なアクセス時間と帯域幅を有する、スタティックランダムアクセスメモリ（ＳＲＡＭ）などの高速のメモリセルから構成されている。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
最新のマイクロプロセッサは、一般に、オンチップのキャッシュメモリを有する。多くの場合、マイクロプロセッサはオンチップの階層的なキャッシュ構造を有し、これには、１次（Ｌ１）キャッシュメモリ、２次（Ｌ２）キャッシュメモリ、場合によっては３次（Ｌ３）キャッシュメモリが含まれることもある。代表的なキャッシュ階層は、最も頻繁に使用されるキャッシュラインを記憶するために使用されうる小容量で高速なＬ１キャッシュを使用しうる。Ｌ２キャッシュは、頻繁にアクセスされるが、Ｌ１に入りきらないキャッシュラインを記憶するための、容量が大きく、おそらく低速のキャッシュなどである。Ｌ３キャッシュは、Ｌ２キャッシュよりも更に容量が大きく、頻繁にアクセスされるが、Ｌ２キャッシュに入りきらないキャッシュラインを記憶するために使用されうる。このようなキャッシュ階層を有することにより、プロセッサコアが行うメモリアクセスに関連するレーテンシを低下させることで、プロセッサのパフォーマンスを向上できる。
【０００４】
代表的なキャッシュ設計では、所定のデータブロックが、一般に「セットアソシエティブキャッシュ」と呼ばれる、少数の物理位置の１つのみに存在していることがある。セット当たりの最大ブロック数が、キャッシュのアソシエティビティである。あるセットがフルになると、新しいデータがそのセットに送られるたびに、既存のエントリを新しいデータで上書きまたは置換する必要がある。何らかのアルゴリズムを使用して、置換時に上書きする既存のエントリを決定する必要がある。置換アルゴリズムの一種に、最長未使用（ＬＲＵ）アルゴリズムがある。ＬＲＵアルゴリズムでは、各セット内の全エントリの時間順序を追跡し、この名前が示すように未使用の時間が最も長いエントリを置換する。このアルゴリズムはアソシエティビティが低い場合には適切に機能する。しかし、アソシエティビティが高くなると、ＬＲＵ位置のトラッキングが複雑となり、順序情報のために膨大な記憶域が必要となる。
【課題を解決するための手段】
【０００５】
プロセッサキャッシュメモリシステムの非常にアソシエティビティの高いキャッシュメモリのためのセカンドチャンス置換機構の各種の実施形態が開示される。一実施形態では、前記キャッシュメモリシステムは、ブロック置換コントローラに結合されたキャッシュメモリを有する。前記キャッシュメモリは、それぞれが複数のブロック記憶位置を有する複数のセットを有してもよい。前記ブロック置換コントローラは、前記キャッシュメモリの各セットに対応する個別カウント値を保持するように構成されうる。所定のセットに対応するカウント値は、前記所定のセット内の、置換データを記憶するための適格なブロック記憶位置またはブロック記憶位置群をポイントしている。前記ブロック置換コントローラは、前記ブロック記憶位置の少なくとも一部のそれぞれに対して、その対応するブロック記憶位置が最近アクセスされたかどうかを示す関連する最近アクセスビットを保持しうる。また、前記ブロック置換コントローラは、前記適格なブロック記憶位置の１つに対応する特定の最近アクセスビットが、前記適格なブロック記憶位置が最近アクセスされたことを示しているかどうかに応じて、前記個別カウント値がポイントしている適格なブロック記憶位置の１つに前記置換データを記憶しうる。
【０００６】
特定の一実施形態では、前記ブロック置換コントローラは、前記個別カウント値がポイントしている前記適格なブロック記憶位置に対応する前記特定の最近アクセスビットが、この適格なブロック記憶位置が最近アクセスされていないことを示す場合に、この適格なブロック記憶位置に前記置換データを記憶しうる。
【０００７】
別の特定の実施形態では、前記ブロック置換コントローラは、前記個別カウント値がポイントしている前記適格なブロック記憶位置に対応する前記特定の最近アクセスビットが、この適格なブロック記憶位置が最近アクセスされたことを示す場合に、この適格なブロック記憶位置に前記置換データが記憶されるのを阻止しうる。
【図面の簡単な説明】
【０００８】
【図１】マルチコア処理ノードを有するコンピュータシステムの一実施形態のブロック図。
【図２】図１のキャッシュメモリの実施形態のより詳細な態様を示すブロック図。
【図３】図２のキャッシュメモリの一実施形態の動作を示すフローチャート。
【図４】図１のキャッシュメモリの別の実施形態のより詳細な態様を示すブロック図。
【図５】図４のキャッシュメモリの一実施形態の動作を示すフローチャート。
【発明を実施するための形態】
【０００９】
本発明は、さまざまに変形されたり代替形態を取りうるが、その特定の実施形態が、例として図面に図示され、かつ本明細書に詳細に記載される。しかし、図面およびその詳細な説明は、開示の形態に本発明を限定することを意図するものではなく、逆に、本発明が、添付の特許請求の範囲によって規定される本発明の趣旨ならびに範囲に含まれるすべての変形例、均等物および代替例を含むことを意図することが理解されるべきである。本願にわたり、「しうる」、「してもよい」との文言は、許容を示す意味（すなわち、可能性がある、可能であること）で用いられており、義務的な意味（すなわち必須）ではない点に留意されたい。
【００１０】
図１を参照すると、コンピュータシステム１０の一実施形態のブロック図が示される。図に示した実施形態では、コンピュータシステム１０は、メモリ１４と、周辺機器１３Ａ〜１３Ｂとに結合された処理ノード１２を有する。ノード１２は、ノードコントローラ２０に結合されたプロセッサコア１５Ａ〜１５Ｂを有し、ノードコントローラ２０は、メモリコントローラ２２、複数のＨｙｐｅｒＴｒａｎｓｐｏｒｔ（登録商標）（ＨＴ）インタフェース回路２４Ａ〜２４Ｃ、および共有の３次（Ｌ３）キャッシュメモリ６０に接続されている。ＨＴ回路２４Ｃは周辺機器１６Ａに結合されており、周辺機器１６Ａはデイジーチェーン構成で（この実施形態では、ＨＴインタフェースを使用して）周辺機器１６Ｂに結合されている。ほかのＨＴ回路２４Ａ〜Ｂも、別のＨＴインタフェース（図示せず）を介して、ほかの同様の処理ノード（図示せず）に接続されてもよい。メモリコントローラ２２は、メモリ１４に結合されている。一実施形態では、ノード１２は、図１に示す回路を含む１つの集積回路チップでもよい。すなわち、ノード１２は、チップマルチプロセッサ（ＣＭＰ）でもよい。任意のレベルの集積化が使用されても、または別個のコンポーネントが使用されてもよい。処理ノード１２が、説明を簡略にするために省略した他の各種回路を備えてもよい点に留意されたい。
【００１１】
各種実施形態では、ノードコントローラ２０は、プロセッサコア１５Ａ，１５Ｂを、相互に、ほかのノードに、およびメモリに相互接続するための各種の相互接続回路（図示せず）も備えうる。また、ノードコントローラ２０は、ノードの最大動作周波数と最小動作周波数、ノードの最大電源電圧と最小電源電圧などの、各種のノード特性を選択および制御するための機能も有しうる。ノードコントローラ２０は、一般に、通信種別、通信文（communication）内のアドレスなどに応じて、プロセッサコア１５Ａ〜１５Ｂと、メモリコントローラ２２と、ＨＴ回路２４Ａ〜２４Ｃとの間の通信をルーティングするように構成されうる。一実施形態では、ノードコントローラ２０は、受信した通信文をノードコントローラ２０が書き込むシステム要求キュー（ＳＲＱ）（図示せず）を備えうる。ノードコントローラ２０は、プロセッサコア１５Ａ〜１５Ｂ、ＨＴ回路２４Ａ〜２４Ｃ、およびメモリコントローラ２２のうちの１つ以上の宛先にルーティングするために、ＳＲＱにある通信をスケジュールしうる。
【００１２】
一般に、プロセッサコア１５Ａ〜１５Ｂは、ノードコントローラ２０へのインタフェースを使用して、コンピュータシステム１０の他の構成要素（例えば周辺機器１３Ａ〜１３Ｂ、他のプロセッサコア（図示せず）、メモリコントローラ２２など）と通信しうる。このインタフェースは、好ましい方式であればどのような方式で設計されてもよい。一部の実施形態では、このインタフェース用にキャッシュコヒーレントな通信が規定されてもよい。一実施形態では、ノードコントローラ２０とプロセッサコア１５Ａ〜１５Ｂ間のインタフェースにおける通信は、ＨＴインタフェースで使用されるものと同様のパケット形式で行われうる。別の実施形態では、好適であれば、どのような通信を使用してもよい（例えばバスインタフェースでのトランザクション、異なる形式のパケットなど）。別の実施形態では、プロセッサコア１５Ａ〜１５Ｂは、ノードコントローラ２０とインタフェースを共有してもよい（例えば共有バスインタフェースなど）。一般に、プロセッサコア１５Ａ〜１５Ｂからの通信には、（メモリロケーションまたはプロセッサコアの外部のレジスタを読み出すための）リードオペレーション、（メモリロケーションまたは外部レジスタに書き込むための）ライトオペレーション、（キャッシュコヒーレントな実施形態のための）プローブへの応答、割り込みの肯定応答、およびシステム管理メッセージなどの要求が含まれうる。
【００１３】
上で説明したように、メモリ１４は、任意の適したメモリデバイスを有しうる。例えば、メモリ１４は、１つ以上のランダムアクセスメモリ（ＲＡＭ）を有し、これには、ダイナミックＲＡＭ（ＤＲＡＭ）に属するＲＡＭＢＵＳ  ＤＲＡＭ（ＲＤＲＡＭ）、シンクロナスＤＲＡＭ（ＳＤＲＡＭ）、ダブルデータレート（ＤＤＲ）ＳＤＲＡＭなどがある。別の実施形態では、メモリ１４が、スタティックＲＡＭなどを使用して実装されてもよい。メモリ１４は、プログラム命令を記憶可能な「計算機可読媒体」と呼ばれることがある。メモリコントローラ２２は、メモリ１４にインタフェースするための制御回路を有しうる。更に、メモリコントローラ２２は、メモリ要求をキューイングするなどのための要求キューを備えていてもよい。
【００１４】
ＨＴ回路２４Ａ〜２４Ｃは、ＨＴリンクからパケットを受信し、ＨＴリンクにパケットを送信するための各種のバッファと制御回路とを備えうる。ＨＴインタフェースは、パケットを送信するための一方向リンクを有する。各ＨＴ回路２４Ａ〜２４Ｃは、２本のこのようなリンク（送信用に１本、受信用に１本）に結合されうる。あるＨＴインタフェースは、（例えば処理ノード間では）キャッシュコヒーレントな方式で動作し、（例えば周辺機器１６Ａ〜１６Ｂとの間では）非コヒーレントな方式で動作しうる。図に示した実施形態では、ＨＴ回路２４Ａ〜２４Ｂは使用されておらず、ＨＴ回路２４Ｃが非コヒーレントなリンクを介して周辺機器１６Ａ〜１６Ｂに結合されている。
【００１５】
本実施形態は、ノード間、ならびにノードと周辺機器間の通信にＨＴインタフェースを使用するが、ほかの実施形態は、このいずれかの通信に任意の所望の１つ以上のインタフェースを使用してもよい点に留意されたい。例えば、ほかのパケットベースのインタフェースが使用されても、バスインタフェースが使用されても、各種の標準的な周辺機器インタフェース（例えば、周辺装置相互接続（ＰＣＩ）、ＰＣＩエクスプレスなど）が使用されてもよい。
【００１６】
周辺機器１３Ａ〜１３Ｂは、どのようなタイプの周辺機器でもよい。例えば、周辺機器１３Ａ〜１３Ｂは、別のコンピュータシステムと通信するためのデバイス（例えば、ネットワークインターフェイスカード、コンピュータシステムのメイン回路基板に集積された、ネットワークインターフェイスカードと同様の回路、あるいはモデム）を有し、そのデバイスがその別のコンピュータシステムに結合されうる。更に、周辺機器１３Ａ〜１３Ｂは、ビデオアクセラレータ、オーディオカード、ハードディスクドライブもしくはフロッピーディスクドライブまたはドライブコントローラ、ＳＣＳＩ（Small Computer Systems Interface）アダプタ、テレフォニーカード、サウンドカード、およびＧＰＩＢインタフェースカードまたはフィールドバスインタフェースカードなどの各種のデータ収集カードを含んでいてもよい。「周辺機器」との用語は、入出力（Ｉ／Ｏ）デバイスを含むことを意図している点に注意されたい。
【００１７】
一般に、プロセッサコア１５Ａ〜１５Ｂは、所定の命令セットアーキテクチャに規定されている命令を実行するように設計された回路を有しうる。すなわち、プロセッサコア回路は、命令セットアーキテクチャに規定されている命令のフェッチ、デコード、実行、およびその結果のストアを行うように構成されうる。例えば、一実施形態では、プロセッサコア１５Ａ〜１５Ｂは、ｘ８６アーキテクチャを実装しうる。プロセッサコア１５Ａ〜１５Ｂは、スーパーパイプライン、スーパースカラーまたはその組み合わせを含む任意の所望の構成を有しうる。ほかの構成としては、スカラー、パイプライン処理、非パイプライン処理などがある。実施形態によって、アウトオブオーダーの投機的な実行が使用されても、インオーダーの実行が使用されてもよい。プロセッサコアは、上記の構造のいずれかと組み合わせて、１つ以上の命令または他の機能のためのマイクロコードを有してもよい。各種実施形態では、キャッシュ、変換ルックアサイドバッファ（ＴＬＢ）などのほかの各種の設計機能を実装してもよい。したがって、図の実施形態では、プロセッサコア１５Ａは、２つのプロセッサコアによって共有されるＬ３キャッシュ６０のほかに、Ｌ１キャッシュシステム１６Ａ、Ｌ２キャッシュシステム１７ＡおよびＴＢＬ１８Ａを備える。同様に、プロセッサコア１５Ｂは、Ｌ１キャッシュシステム１６Ｂ、Ｌ２キャッシュシステム１７Ｂ、およびＴＬＢ  １８Ｂを備える。個々のＬ１キャッシュとＬ２キャッシュは、マイクロプロセッサで使用されるどのようなＬ１キャッシュおよびＬ２キャッシュを表わしてもよい。また、処理ノード１２は、Ｌ３キャッシュサブシステム３０の一部である共有Ｌ３キャッシュ６０も備える。図に示した実施形態では、Ｌ３キャッシュサブシステム３０は、キャッシュコントローラユニット２１（ノードコントローラ２０の一部として図示されている）と、Ｌ３キャッシュ６０とを有する。キャッシュコントローラ２１は、Ｌ３キャッシュ６０宛の要求を制御するように構成されうる。
【００１８】
後で更に詳細に説明するように、キャッシュおよび／またはＴＬＢ構造の１つ以上は、置換コントローラが、データ記憶配列内のブロック記憶位置ごとに、最近アクセス／使用ビットを保持しうる置換機構を実装してもよい。また、置換コントローラが、各ブロック記憶位置を連続的にポイントしているカウント値を保持してもよい。適格な（eligible）ブロック記憶位置のそれぞれを調べて置換データを記憶すべきかどうかを決定する際に、最近アクセス／使用（ＲＵ）ビットが、対応するブロック記憶位置が最近アクセスされたかどうかを示しうる。このため、ブロック置換コントローラは、ＲＵビットが、当該位置が最近アクセスされたことを示しているかどうかに基づいて、カウント値がポイントしているブロック記憶位置に置換データを記憶しうる。
【００１９】
また、図１に示したコンピュータシステム１０の処理ノード１２は１つであるが、別の実施形態では、実装される処理ノードの数はいくつであってもよい点に留意されたい。同様に、実施形態ごとに、ノード１２などの処理ノードに含まれるプロセッサコアの数はいくつでもよい。コンピュータシステム１０のさまざまな実施形態では、ノード１２当たりのＨＴインタフェースの数、ノードに結合されている周辺機器１６の数などが変わってもよい。
【００２０】
次に図２を参照すると、図１のキャッシュメモリシステムの実施形態のより詳細な態様を示すブロック図が示される。キャッシュメモリシステム２００は、タグ制御部２６２、ブロック置換コントローラ２６６、最長未使用（ＬＲＵ）記憶配列２６４、タグ記憶配列２６３、およびデータ記憶配列２６５（時に「キャッシュメモリ」とも呼ばれる）を有する。
【００２１】
タグ記憶配列２６３は、複数の位置のそれぞれに、データ記憶配列２６５内に記憶されているキャッシュラインデータの所定数のアドレスビット（すなわちタグ）を記憶するように構成されうる。一実施形態では、タグ制御部２６２は、タグ記憶配列２６３を検索して、要求されたキャッシュラインがデータ記憶配列２６５に存在するかどうかを判定するように構成されうる。例えば、タグ制御部２６２は、リード要求に関連する１つ以上のアドレスビットに一致するアドレスタグが、タグ記憶配列２６３内に存在するかどうかを判定しうる。タグ制御部２６２は、要求されたアドレスがみつかった場合には、キャッシュコントローラ２１にヒットの指標を返し、タグ配列２６３で一致するものがみつからなかった場合には、ミスの指標を返しうる。
【００２２】
図に示した実施形態では、データ記憶配列２６５は、複数（例えば２６９）のブロック記憶位置を有する。図に示すように、データ記憶配列２６５は、０〜ｍ−１のｍ行と、０〜ｎ−１のｎ列とを有する。この実施形態では、データ記憶配列２６５は、アソシエティビティがｎウェイのセットアソシエティブキャッシュメモリを実装している。ウェイは列によって表され、セットは行によって表される。例えば、キャッシュメモリが、１６ウェイセットアソシエティブキャッシュである場合、ｎは１６であり、各セットには、データブロックのための記憶域を提供することができる１６ブロックの記憶位置が含まれる。通常、データブロックはキャッシュラインである。セットの数は、キャッシュメモリのサイズによって決まることがある。
【００２３】
ＬＲＵ記憶配列２６４は、複数の記憶位置を有する。図に示した実施形態では、ＬＲＵ記憶配列２６４は、データ記憶配列２６５の行と列に対応する行と列を有し、セットは行によって表される。ブロック置換コントローラ２６６は、データ記憶配列２６５のブロック記憶位置ごとに、ＬＲＵ記憶配列２６４の「ｒｕ」で示す記憶位置に、最近アクセス／使用（ＲＵ）ビットを保持しうる。各ＲＵビットは、データ記憶配列内の対応する位置が最近アクセスされたかどうかを示している。ここで使用する「アクセス／使用された」とは、データ記憶配列内のブロック記憶位置が、そのブロック記憶位置にあるデータに対するキャッシュ要求の結果、読み出し、書き込み、あるいはほかの理由でアクセスされる操作を指す。
【００２４】
また、ブロック置換コントローラ２６６は、ＲＵビットのほかに、ＬＲＵ記憶配列２６４の各行にカウント値も保持しうる。例えば、図２に示すように、各行にある参照符号Ｃ０、Ｃ１、Ｃ２、Ｃ３は４ビットのカウント値を表す。カウント値は、１６ウェイセットアソシエティブキャッシュを実装しうるデータ記憶配列２６５の対応する行内の個々のブロック記憶位置へのポインタである。このため、図に示すカウント値は４ビット値である。ウェイ数が変われば、カウント値のビット数が変わりうる。図に示した実施形態では、所定のセットに対応するカウント値は、ＬＲＵ記憶配列２６４内の関連するＲＵビットへのポインタでもある。
【００２５】
また、一実施形態では、ＲＵビットは、クリアされている場合、ブロック記憶位置が最近アクセスされていないことを示しうることが理解されよう。これは、すなわち、ＲＵビットが「０」の論理値の場合である。同様に、ＲＵビットは、セットされている場合、ブロック記憶位置が最近アクセスされたことを示しうる。これは、すなわち、ＲＵビットが「１」の論理値の場合である。しかし、ＲＵビットがセットされている（すなわち「１」の論理値の場合に）ブロック記憶位置が最近アクセスされていないことを示し、クリアされている（すなわち「０」の論理値の場合に）ブロック記憶位置が最近アクセスされたことを示すように、論理値が逆になってもよいことも同様に考察される。
【００２６】
このため、図３の説明に関連して下記に詳述するように、対応するＲＵビットによって、ブロック記憶位置が最近アクセスされていないことが示されるブロック記憶位置をカウント値がポイントしている場合、ブロック置換コントローラ２６６は、そのデータ記憶配列２６５内に置換データを記憶するように構成されうる。また、この実施形態で使用される「最近アクセスされた」とは、カウント値が、このブロック記憶位置をポイントした最後の時点以降に「アクセス／使用された」ことを指す。
【００２７】
この置換機構が、置換アルゴリズムを使用するどのようなタイプのキャッシュで使用されてもよい点に留意されたい。例えば、上で説明したキャッシュメモリシステム２００は、Ｌ１キャッシュでも、Ｌ２キャッシュでも、Ｌ３キャッシュでもよい。また、プロセッサのマイクロアーキテクチャ内に他のタイプのキャッシュメモリも存在していてもよい。例えば、多くのプロセッサは、物理アドレス変換への仮想アドレスまたは線形アドレスを記憶するための、「アドレス変換バッファ（ＴＬＢ）」と呼ばれる記憶域を使用する。このようなタイプの記憶域は、代表的なキャッシュと全く同様に置換アルゴリズムを使用することができる。このように、上で説明した置換機構が、このようなタイプのキャッシュで使用されてもよいと考えられる。
【００２８】
図３は、図２のキャッシュメモリシステム２００の実施形態の動作を示すフローチャートである。図２と図３を合わせて参照すると、ブロック３００において、一実施形態では、ブロック置換コントローラ２６６により、全ＲＵビットが、最近アクセスされていないことを示すように設定される。これは、例えば、リセットから復帰することで行われうる。例えば、所定のブロック記憶位置に対するリード要求などのキャッシュアクセス要求が発生すると（ブロック３０５）、ブロック置換コントローラ２６６は、アクセスされるブロック記憶位置に対応するＲＵビットをセットする（ブロック３１０）。この動作は、ブロック記憶位置がアクセスされるたびに行われうる。
【００２９】
データ記憶配列２６５に有効なデータがフルに記憶されると、その後データを書き込むにはデータの置換が必要となる。このため、置換要求が発生すると（ブロック３１５）、ブロック置換コントローラ２６６は、この要求のアドレスが示すセット内のカウント値がポイントしているブロック記憶位置に対応するＲＵビットをチェックする（ブロック３２０）。ＲＵビットが（この例では）クリアされており、この位置が最近アクセスされていないことを示す場合（ブロック３２５）、ブロック置換コントローラ２６６は、この要求のアドレスが示すセット内のカウント値がポイントしているブロック記憶位置においてデータを置換し（ブロック３３０）、（最近アクセスされたことを示すように）対応するＲＵビットをセットする。次に、動作が、ブロック３０５において前述したように行われる。
【００３０】
ブロック３２５を再び参照すると、ＲＵビットがセットされており、この位置が最近アクセスされたことを示す場合、ブロック置換コントローラ２６６は、カウント値が現在ポイントしているＲＵビットを（最近アクセスされていないことを示すように）クリアし、セット内の次の適格なブロック記憶位置をポイントするように、カウント値をインクリメントする（ブロック３４０）。次に、ブロック置換コントローラ２６６は、次のＲＵビットがクリアされているかセットされているかをチェックしうる。上で説明したように、ＲＵビットがセットされており、次の位置が最近アクセスされたことを示す場合、ブロック置換コントローラ２６６は、カウント値が現在ポイントしているＲＵビットを（最近アクセスされていないことを示すように）クリアし、セット内の次のブロック記憶位置をポイントするように、カウント値をインクリメントする。この動作は、ブロック置換コントローラが、クリアされているＲＵビットを検出するまで続けられ、ＲＵビットがみつかった場合、ブロック３３０で前述したように動作が行われる。このため、すべてのＲＵビットが１置換サイクルでクリアされることも考えられるが、これが起こる可能性は低い。
【００３１】
上記の実施形態は、カウンタがチェックされてから次にチェックされる間に（successive passes of the counter）アクセスされるブロックに対して、置換される前にセカンドチャンスを与える。
【００３２】
次に図４を参照すると、キャッシュメモリシステム４００の別の実施形態のより詳細な態様を示すブロック図が示される。メモリシステム４００は図２のキャッシュメモリ２００と同様であるが、一部の動作が異なる。より詳細には、実装によっては、データ記憶配列２６５のブロック記憶位置ごとにＲＵビットを必ずしも保持しなくてもよい。下記で説明するように、カウンタとＲＵビットとを含む最近の使用情報の全体が、ブロック記憶位置ごとに１ビットに保持される。
【００３３】
図４に示す実施形態では、キャッシュメモリシステム４００は、タグ制御部２６２、ブロック置換コントローラ４６６、最長未使用（ＬＲＵ）記憶配列４６４、タグ記憶配列２６３、およびデータ記憶配列２６５（時に「キャッシュメモリ」とも呼ばれる）を有する。図に示すように、図４のデータ記憶配列２６５は、複数（例えば２６９）のブロック記憶位置を有し、所定のウェイ数のアソシエティビティのセットアソシエティブキャッシュメモリを実装している。このため、ＬＲＵ記憶配列４６４も、複数の記憶位置を有する。一実施形態では、ブロック置換コントローラ４６６は、データ記憶配列２６５の各セットに対してカウント値を保持しうる。このように、ＬＲＵ記憶配列４６４も、データ記憶配列２６５の行と列に対応する行と列を有し、セットは行によって表される。一実施形態では、ブロック置換コントローラ２６６は、ＬＲＵ記憶配列４６４の行に各カウント値を記憶しうる。例えば、図４に示すように、各行にある参照符号Ｃ０、Ｃ１、Ｃ２、Ｃ３は４ビットのカウント値を表す。カウント値は、データ記憶配列２６５内の個々のブロック記憶位置へのポインタである。
【００３４】
しかし、図２に示す実施形態とは対照的に、図４の置換コントローラ４６６は、データ記憶配列２６５のブロック記憶位置の一部のみに対して、最近アクセス／使用（ＲＵ）ビットを保持しうる。図に示した実施形態では、ＬＲＵ配列４６４内のＬＲＵ情報に必要な記憶域を削減するために、複数のＲＵビットに対してカウント値が記憶される。このため、ＲＵビットの数を、ｎｌｏｇ２ｎ（ｎはアソシエティビティのウェイ数）とすることができる。例えば、１６ウェイキャッシュでは、１２のＲＵビットと４ビットのカウント値が使用される。この場合、ポインタが最後に渡したＲＵビットは論理０として扱われるため、このようなビットを記憶する必要はない。また、ＲＵビットを、ウェイの絶対数に従ってではなく、カウンタに対する位置に従って記憶するほうが利便性が高いことがある。例えば、カウント値の記憶域の後の最初のＲＵビット記憶位置が、このカウント値がポイントしているどのブロック記憶位置にも対応するように、ブロック置換コントローラ４６６は、ＬＲＵ配列４６４内にカウント値を記憶しうる。すなわち、カウント値が６の場合、例えば、列４に記憶されているＲＵビットが、図２に示した実施形態のウェイ数４ではなく、ウェイ数６のブロック記憶位置に対応することがある。
【００３５】
図４の説明に関して上で説明したように、ＬＲＵ記憶配列４６４の特定の行内のＲＵビットは、カウント値がインクリメントされるたびに１ビット位置ずつ左シフトされる。ＲＵビットのいずれかまたはすべてが、置換要求時に「１」である可能性があるため、シフト装置に、行ごとのＲＵビットの数と同数のウェイ数が必要となることが考えられる。しかし、最初の所定数「ｋ」のＲＵビットがセットされるのを待ってからカウンタをインクリメントし、ｋの倍数だけインクリメントすることにより、必要なシフト装置のサイズを、ｋ分の１に減らすことができる。この場合、任意の置換に使用されるウェイが、必ずしもカウント値がポイントしているウェイであるとは限らず、対応するＲＵビットが最近アクセス／使用されていないことを示す、カウント値〜（カウント値＋ｋ−１）の範囲のウェイのいずれかでありうる。例えば、図の実施形態では、カウント値が、４の倍数（ｋ＝４）でインクリメントされうる。この場合、カウント値の最下位の２ビットは常に論理０であるため、これらを記憶する必要がない。このようにして節約される記憶空間は、別のＲＵビットを記憶するために使用することができる。このため、本例では、セット当たり、ＬＲＵの記憶域に１６ビットが使用され、このうち、カウント値に２ビットと、ＲＵビットに１４ビットが割り当てられる。
【００３６】
一実施形態では、各ＲＵビットは、データ記憶配列２６５内の対応するブロック記憶位置が最近アクセスされたかどうかを示している。ここで使用する「アクセス／使用された」とは、データ記憶配列内のブロック記憶位置が、そのブロック記憶位置にあるデータに対するキャッシュ要求の結果、読み出し、書き込み、あるいはほかの理由でアクセスされる操作を指す。
【００３７】
また、一実施形態では、ＲＵビットは、クリアされている場合、ブロック記憶位置が最近アクセスされていないことを示しうることが理解されよう。これは、すなわち、ＲＵビットが「０」の論理値の場合である。同様に、ＲＵビットは、セットされている場合、ブロック記憶位置が最近アクセスされたことを示しうる。これは、すなわち、ＲＵビットが「１」の論理値の場合である。しかし、ＲＵビットがセットされている（すなわち「１」の論理値の場合に）ブロック記憶位置が最近アクセスされていないことを示し、クリアされている（すなわち「０」の論理値の場合に）ブロック記憶位置が最近アクセスされたことを示すように、論理値が逆になってもよいことも同様に考察される。
【００３８】
図５は、前の段落で変更を加えた図４に示した実施形態の動作の詳細を説明するフローチャートである。図４と図５を合わせて参照すると、図５のブロック５００において、一実施形態では、ブロック置換コントローラ４６６により、全ＲＵビットが、最近アクセスされていないことを示すように設定される。これは、例えば、リセットから復帰することで行われうる。例えば、所定のブロック記憶位置に対するリード要求などのキャッシュアクセス要求が発生すると（ブロック５０５）、ブロック置換コントローラ４６６は、アクセスされるブロック記憶位置に対応するＲＵビットがこの要求の時点で存在する場合、このビットをセットする（ブロック５１０）。この動作は、ブロック記憶位置がアクセスされるたびに行われうる。
【００３９】
データ記憶配列２６５に有効なデータがフルに記憶されると、その後データを書き込むにはデータの置換が必要となる。このため、置換要求が発生すると（ブロック５１５）、ブロック置換コントローラ４６６は、この要求のアドレスが示すセット内のカウント値がポイントしているブロック記憶位置に対応するＲＵビットと、そのセットの次の３つのＲＵビットとをチェックする（ブロック５２０）。この４つのＲＵビットのいずれかがクリアされており、この位置が最近アクセスされていないことを示す場合（ブロック５２５）、ブロック置換コントローラ４６６は、この４つのＲＵビット群の最初のクリアされているＲＵビットに対応するブロック記憶位置においてデータを置換し（ブロック５３０）、このビットを、最近アクセスされたことを示すようにセットする。動作が、ブロック５０５において前述したように行われる。
【００４０】
ブロック５２５を再び参照すると、調べた４つのＲＵビットがすべてセットされており、対応の位置が最近アクセスされたことを示す場合、ブロック置換コントローラ４６６は、その行の全ＲＵビットを、左に４ビット位置だけシフトし、（最近アクセスされていないことを示すように）右端をゼロで埋め、セット内の次の適格な４つのブロック記憶位置の群をポイントするように、カウント値を４インクリメントする（ブロック５４０）。次に、ブロック置換コントローラ４６６は、次の４つのＲＵビット群をチェックして、いずれかがクリアされているかどうかを確認しうる。上で説明したように、４つのＲＵビットがすべてセットされており、これらの位置が最近アクセスされたことを示す場合、ブロック置換コントローラ４６６は、その行の全ＲＵビットを、左に４ビット位置だけシフトし、（最近アクセスされていないことを示すように）ゼロで埋め、セット内の次の適格な４つのブロック記憶位置の群をポイントするように、カウント値を４インクリメントする。この動作は、ブロック置換コントローラが、クリアされているＲＵビットを検出するまで続けられ、ＲＵビットがみつかった場合、ブロック５３０で前述したように動作が行われる。このため、ほとんどのＲＵビットが１置換サイクルでクリアされることも考えられるが、これが起こる可能性は低い。
【００４１】
別の実施形態では、ブロック置換コントローラ４６６は、ある行の最初の４ビットがセットされていることを検出すると常に、次の置換要求を待機せずに、この４つのＲＵビットをシフト／クリアするように構成されてもよい点に留意されたい。この場合、置換要求が到着したときに、最初の４ビット群のうちの少なくとも１つのＲＵビットが必ずクリアされていることが保証される。
【００４２】
また、図面には記載されていないが、一部の実施形態では、タグ配列２６３あるいは別の記憶配列に記憶されうる有効ビット／情報が存在してもよいことも留意されたい。このようにすることで、置換データを記憶するために、有効なデータを含む位置より先に、無効なデータを含むブロック記憶位置を常に使用することができる。このため、キャッシュ要求を受け取ると、置換データを記憶する位置を決定する際に、ＲＵ情報より先にこの有効な情報がチェックされうる。
【００４３】
１つのノードが複数のプロセッサコアを有する実施形態について上で説明したが、Ｌ３キャッシュサブシステム２００，４００に関連する機能が、シングルコアプロセッサを含むどのようなタイプのプロセッサでも使用することができることが考察される。また、ハードウェアに関して実施形態について説明したが、実施形態が、ハードウェア、ソフトウェア、あるいはハードウェアとソフトウェアの組合せで実装されてもよいと考えられる。ソフトウェアで実装される実施形態では、プログラム命令が、例えば、図１のメモリ１４に記憶され、所望のようにプロセッサコア１５Ａまたは１５Ｂによって実行されうる。しかし、プログラム命令がどのようなタイプの記憶媒体に記憶されてもよいとも考えられる。
【００４４】
上の実施形態についてかなり詳細に記載したが、上記の開示を完全に理解できれば、数多くの変形例および変更例が当業者にとって明らかであろう。下記の特許請求の範囲は、このような変形例および変更例を全て包含するものと解釈されることが意図される。
【産業上の利用可能性】
【００４５】
本発明は、一般にマイクロプロセッサに利用可能である。
【図１】
2010538390.tif 000003
【図２】
2010538390.tif 000004
【図３】
2010538390.tif 000005
【図４】
2010538390.tif 000006
【図５】
2010538390.tif 000007
【手続補正書】
【提出日】平成21年8月13日(2009.8.13)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
それぞれが複数のブロック記憶位置を有する複数のセットを有するキャッシュメモリ（２６９，１６Ａ，１７Ａ，１８Ａ）と、
前記キャッシュメモリに結合され、前記キャッシュメモリの各セットに対応する個別カウント値を保持するように構成されたブロック置換コントローラ（２６６）とを備え、所定のセットに対応する前記個別カウント値は、前記所定のセット内の、置換データを記憶するための適格なブロック記憶位置をポイントし、
前記ブロック置換コントローラは、前記ブロック記憶位置の少なくとも一部のそれぞれに対して、その対応するブロック記憶位置が最近アクセスされたかどうかを示す関連する最近アクセスビットを保持するように更に構成され、
前記ブロック置換コントローラに結合され、前記キャッシュメモリの各セットに対して前記個別カウント値を記憶し、各関連する最近アクセスビットを記憶するように構成された置換記憶域（２６４）をさらに備え、前記関連する最近アクセスビットの数は、セット数×ｎｌｏｇ２ｎ（ｎは前記キャッシュメモリのアソシエティビティのウェイ数）に直接対応しており、
前記ブロック置換コントローラは、前記個別カウント値がポイントしている適格なブロック記憶位置に対応する前記最近アクセスビットの特定の１つが、前記適格なブロック記憶位置が最近アクセスされたことを示しているかどうかに応じて、この適格なブロック記憶位置に前記置換データを記憶するように更に構成されている、キャッシュメモリシステム（２００）。
【請求項２】
前記ブロック置換コントローラは、前記個別カウント値がポイントしている前記適格なブロック記憶位置に対応する前記最近アクセスビットの前記特定の１つが、この適格なブロック記憶位置が最近アクセスされていないことを示す場合に、この適格なブロック記憶位置に前記置換データを記憶するように構成されている、請求項１に記載のキャッシュメモリシステム。
【請求項３】
前記ブロック置換コントローラは、キャッシュアクセス要求が前記適格なブロック記憶位置にアクセスすると、前記適格なブロック記憶位置に対応する前記最近アクセスビットの前記特定の１つを、前記適格なブロック記憶位置が最近アクセスされたことを示すように設定するように更に構成されている、請求項１に記載のキャッシュメモリシステム。
【請求項４】
前記ブロック置換コントローラは、前記個別カウント値がポイントしている前記適格なブロック記憶位置に対応する前記最近アクセスビットの前記特定の１つが、この適格なブロック記憶位置が最近アクセスされたことを示す場合に、この適格なブロック記憶位置に前記置換データが記憶されるのを阻止するように更に構成されている、請求項１に記載のキャッシュメモリシステム。
【請求項５】
前記ブロック置換コントローラは、対応する適格なブロック記憶位置および所定の最近アクセスビットをポイントしている対応する個別カウント値が、前記対応する適格なブロック記憶位置が最近アクセスされていることを示す場合に、この関連する適格なブロック記憶位置が最近アクセスされていないことを示すように、前記所定の最近アクセスビットを設定するように更に構成されている、請求項１に記載のキャッシュメモリシステム。
【請求項６】
それぞれが複数のブロック記憶位置を有する複数のセットを有するキャッシュメモリ（２６９，１６Ａ，１７Ａ，１８Ａ）を提供するステップと、
前記キャッシュメモリの各セットに対応する個別カウント値を保持するステップであって、所定のセットに対応する前記個別カウント値は、前記所定のセット内の、置換データを記憶するための適格なブロック記憶位置をポイントしているステップと、
前記ブロック記憶位置の少なくとも一部のそれぞれに対して、その対応するブロック記憶位置が最近アクセスされたかどうかを示す関連する最近アクセスビットを保持するステップと、
各関連する最近アクセスビットを記憶域に記憶するステップであって、前記関連する最近アクセスビットの数は、セット数×ｎｌｏｇ２ｎ（ｎは前記キャッシュメモリのアソシエティビティのウェイ数）に直接対応しているステップと、
前記個別カウント値がポイントしている適格なブロック記憶位置に対応する前記最近アクセスビットの特定の１つが、前記適格なブロック記憶位置が最近アクセスされたことを示しているかどうかに応じて、この適格なブロック記憶位置に前記置換データを記憶するステップとを含む方法。
【請求項７】
前記個別カウント値がポイントしている前記適格なブロック記憶位置に対応する前記最近アクセスビットの前記特定の１つが、この適格なブロック記憶位置が最近アクセスされていないことを示す場合に、この適格なブロック記憶位置に前記置換データを記憶するステップを更に含む、請求項６に記載の方法。
【請求項８】
キャッシュアクセス要求が前記適格なブロック記憶位置にアクセスすると、前記適格なブロック記憶位置に対応する前記最近アクセスビットの前記特定の１つを、前記適格なブロック記憶位置が最近アクセスされたことを示すように設定するステップを更に含む、請求項７に記載の方法。
【請求項９】
前記個別カウント値がポイントしている前記適格なブロック記憶位置に対応する前記最近アクセスビットの前記特定の１つが、この適格なブロック記憶位置が最近アクセスされたことを示す場合に、この適格なブロック記憶位置に前記置換データが記憶されるのを阻止するステップを更に含む、請求項７に記載の方法。
【請求項１０】
対応する適格なブロック記憶位置および所定の最近アクセスビットをポイントしている対応する個別カウント値が、前記対応する適格なブロック記憶位置が最近アクセスされていることを示す場合に、この関連する適格なブロック記憶位置が最近アクセスされていないことを示すように、前記所定の最近アクセスビットを設定するステップを含む、請求項８に記載の方法。
【国際調査報告】
2010538390.tif 000008
2010538390.tif 000009
2010538390.tif 000010