(57)【要約】マルチスレッド化プロセッサで使用するためのキャッシュ・メモリは、いくつかのセット連想スレッド・キャッシュを含み、それらのスレッド・キャッシュのうちの１つまたは複数は、それぞれ、キャッシュ・メモリで必要とされる置換ポリシー記憶の量を削減する、アクセス要求アドレスに基づく追い出しプロセスを実装する。例示的実施形態におけるスレッド・キャッシュのうちの少なくとも所与の１つは、複数のメモリ位置のセットを有するメモリ・アレイ、および、それぞれメモリ位置のうちの１つの特定のアドレスの少なくとも一部分に対応するタグを格納するディレクトリを含む。ディレクトリは、それぞれそのタグのうちの複数を格納する複数のエントリを有し、メモリ・アレイ中にｎセットのメモリ位置がある場合には、各ディレクトリ・エントリに関連付けられたｎ個のタグがある。ディレクトリは、アクセス要求とメモリ・アレイのメモリ位置の間のセット連想アドレス・マッピングを実施する際に利用される。メモリ位置のうちの特定の１つにあるエントリが、少なくとも一部はキャッシュ・ミス・イベントに関連付けられたアクセス要求中のアドレスの少なくとも一部分に基づき、キャッシュ・ミス・イベントに伴う所与のスレッド・キャッシュからの追い出しのために選択される。
2005528695.tif 000002
【特許請求の範囲】
【請求項１】
マルチスレッド化プロセッサで使用するための、複数のスレッド・キャッシュを含むキャッシュ・メモリであって、前記スレッド・キャッシュのうちの少なくとも所与の１つが、
複数のメモリ位置のセットを含むメモリ・アレイと、
それぞれ前記メモリ位置のうちの１つの特定のアドレスの少なくとも一部分に対応するタグを格納し、それぞれ前記タグのうちの複数を格納する複数のエントリを有するディレクトリとを含み、
前記メモリ位置のうちの特定の１つにあるエントリが、少なくとも一部は前記キャッシュ・ミス・イベントに関連するアクセス要求におけるアドレスの少なくとも一部分に基づき、キャッシュ・ミス・イベントに伴う前記所与のスレッド・キャッシュからの追い出しのために選択されるキャッシュ・メモリ。
【請求項２】
前記複数のメモリ位置のセットがｎセットのメモリ位置を含み、前記ディレクトリ・エントリがそれぞれｎ個のタグを格納する請求項１に記載のキャッシュ・メモリ。
【請求項３】
前記所与のスレッド・キャッシュに格納される置換ポリシー状態情報ビットの総数がおおよそｎ（ｎ−２）／８で与えられる請求項２に記載のキャッシュ・メモリ。
【請求項４】
前記所与のスレッド・キャッシュがセット連想キャッシュとして動作する請求項１に記載のキャッシュ・メモリ。
【請求項５】
前記アドレスの前記部分が前記アドレスのタグ部分の１つまたは複数のビットを含む請求項１に記載のキャッシュ・メモリ。
【請求項６】
前記所与のスレッド・キャッシュが１つまたは複数の置換ポリシー・ビットを格納するレジスタをさらに含み、前記所与のスレッド・キャッシュからの追い出しのために選択される前記メモリ位置エントリが、少なくとも一部は前記アクセス要求アドレスおよび前記１つまたは複数の格納された置換ポリシー・ビットに基づいて選択される請求項１に記載のキャッシュ・メモリ。
【請求項７】
前記アクセス要求アドレスの１つまたは複数のビットを用いて、前記所与のスレッド・キャッシュから追い出される前記エントリの決定のためにそこからタグが選択される前記ディレクトリの特定の一部分が決定され、前記特定の一部分がその所与のエントリ中にそれに関連付けられた複数のタグを有し、さらに前記１つまたは複数の格納された置換ポリシー・ビットが、前記アクセス要求アドレスの前記１つまたは複数のビットに基づいて決定された前記特定の一部分に関連付けられた前記複数のタグから前記選択されたタグを決定する請求項６に記載のキャッシュ・メモリ。
【請求項８】
前記所与のスレッド・キャッシュが、前記スレッド・キャッシュから追い出される前記特定のエントリの選択に際して最低使用頻度（ＬＲＵ）置換ポリシーを利用する請求項１に記載のキャッシュ・メモリ。
【請求項９】
前記アクセス要求アドレスのタグ部分の１つまたは複数の最下位ビットを利用して、追い出される前記メモリ位置エントリに対応するタグがそこから選択される前記ディレクトリの特定の一部分が決定される請求項１に記載のキャッシュ・メモリ。
【請求項１０】
前記ディレクトリが第１の部分と第２の部分とに編成され、前記ディレクトリの前記エントリのそれぞれが、前記ディレクトリの前記第１の部分に１つまたは複数の関連付けられたタグと、前記ディレクトリの前記第２の部分に１つまたは複数の関連付けられたタグとを有し、さらに前記アクセス要求アドレスのタグ部分の最下位ビットを用いて、追い出される前記エントリに対応するタグが前記ディレクトリの前記第１の部分から選択されるべきか、それとも前記ディレクトリの前記第２の部分から選択されるべきかが決定される請求項１に記載のキャッシュ・メモリ。
【請求項１１】
少なくとも前記所与のスレッド・キャッシュに関連付けられた追い出し決定回路をさらに含み、
前記アクセス要求アドレスの１つまたは複数のビットに基づき、前記ディレクトリの所与のエントリ中のタグの総数の一部を選択する第１の選択回路と、
前記所与のスレッド・キャッシュに関連付けられた１つまたは複数の置換ポリシー・ビットに基づき、前記ディレクトリからの追い出しのために前記タグの一部の前記タグのうちの特定の１つを選択する第２の選択回路とを含む請求項１に記載のキャッシュ・メモリ。
【請求項１２】
前記第１の選択回路が、それぞれ前記タグのうちの１つに対応する複数の入力と、前記アクセス要求アドレスの前記１つまたは複数のビットに対応する選択信号とを有する第１のマルチプレクサを含む請求項１１に記載のキャッシュ・メモリ。
【請求項１３】
前記第２の選択回路が、それぞれ前記第１のマルチプレクサの出力に対応する複数の入力と、前記１つまたは複数の置換ポリシー・ビットに対応する選択信号とを有する第２のマルチプレクサを含む請求項１２に記載のキャッシュ・メモリ。
【請求項１４】
マルチスレッド化プロセッサであって、
前記プロセッサによって実行される命令を格納するキャッシュ・メモリと、
前記命令に従って処理されるデータを格納するデータ・メモリと、
前記キャッシュ・メモリからフェッチされた命令を復号化する命令復号器と、
前記復号化された命令に従って前記データに関する演算を実施する１つまたは複数の演算論理装置とを含み、
前記キャッシュ・メモリが複数のスレッド・キャッシュを含み、前記スレッド・キャッシュのうちの少なくとも所与の１つが、
複数のメモリ位置のセットを含むメモリ・アレイと、
それぞれ前記メモリ位置のうちの１つの特定のアドレスの少なくとも一部分に対応するタグを格納し、それぞれ前記タグのうちの複数を格納する複数のエントリを有するディレクトリとを含み、
前記メモリ位置のうちの特定の１つにあるエントリが、少なくとも一部は前記キャッシュ・ミス・イベントに関連するアクセス要求におけるアドレスの少なくとも一部分に基づき、キャッシュ・ミス・イベントに伴う前記所与のスレッド・キャッシュからの追い出しのために選択されるマルチスレッド化プロセッサ。
【請求項１５】
マルチスレッド化プロセッサ中のキャッシュ・メモリの制御方法であって、前記キャッシュ・メモリが複数のスレッド・キャッシュを含み、前記スレッド・キャッシュの少なくとも所与の１つが、複数のメモリ位置のセットを有するメモリ・アレイと、それぞれ前記メモリ位置のうちの１つの特定のアドレスの少なくとも一部分に対応するタグを格納し、それぞれ前記タグのうちの複数を格納する複数のエントリを有するディレクトリとを含み、
前記所与のスレッド・キャッシュでのキャッシュ・ミス・イベントの発生を決定する工程と、
少なくとも一部は前記キャッシュ・ミス・イベントに関連するアクセス要求におけるアドレスの少なくとも一部分に基づき、前記キャッシュ・ミス・イベントに伴う前記所与のスレッド・キャッシュからの追い出しのために前記メモリ位置のうちの特定の１つにあるエントリを選択する工程とを含む方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、コンピュータ・アーキテクチャの分野に関し、より詳細には、マルチスレッド化プロセッサでの使用のためのキャッシュ・メモリに関する。
【背景技術】
【０００２】
本発明は、参照により本明細書に組み込まれている、本明細書と同時に出願した「Ｍｅｔｈｏｄ  ａｎｄ  Ａｐｐａｒａｔｕｓ  ｆｏｒ  Ｍｕｌｔｉｔｈｒｅａｄｅｄ  Ｃａｃｈｅ  ｗｉｔｈ  Ｃａｃｈｅ  Ｅｖｉｃｔｉｏｎ  Ｂａｓｅｄ  ｏｎ  Ｔｈｒｅａｄ  Ｉｄｅｎｔｉｆｉｅｒ」という名称の米国特許出願整理番号第１００７−２号に記載されている発明に関連するものである。
【０００３】
公知のように、プロセッサは、しばしば、様々な記憶要素の階層を含むメモリ・システムと併せて使用される。例えば、そのようなメモリ・システムには、参照により本明細書に組み込まれている、Ｍ．Ｊ．Ｆｌｙｎｎ、「Ｃｏｍｐｕｔｅｒ  Ａｒｃｈｉｔｅｃｔｕｒｅ：Ｐｉｐｅｌｉｎｅｄ  ａｎｄ  Ｐａｒａｌｌｅｌ  Ｐｒｏｃｅｓｓｏｒ  Ｄｅｓｉｇｎ」、Ｊｏｎｅｓ  ａｎｄ  Ｂａｒｔｌｅｔｔ  Ｐｕｂｌｉｓｈｅｒｓ、ボストン、マサチューセッツ州、１９９５年などに記載されるように、外部記憶装置、メイン・メモリおよびキャッシュ・メモリが含まれ得る。
【０００４】
外部記憶装置は、階層的メモリ・システム中の最上位メモリを表し、アクセス時間の点でプロセッサから最も遠いとみなされ、通常は、アクセスするのに多数のサイクルを必要とする。代表的な例が、ハード・ドライブである。外部記憶装置は、ギガバイト（ＧＢ）程度の容量、および約１０−３秒のアクセス時間を持ち得る。
【０００５】
メイン・メモリまたはレベル１メモリは、プロセッサに対してアクセス時間の点で適度な近さにある。代表的な例が、動的ランダム・アクセス・メモリ（ＤＲＡＭ）である。この典型的な容量はメガバイト（ＭＢ）程度であるが、アクセス時間は外部記憶装置よりはるかに高速であり、通常、１０−８秒程度である。
【０００６】
キャッシュ・メモリは、レベル０メモリまたは単に「キャッシュ」とも呼ばれ、最も頻繁に使用されるデータへの効率的で高速のアクセスを実現し、アクセス時間の点ではプロセッサの最も近くにある。代表的な例が、静的ランダム・アクセス・メモリ（ＳＲＡＭ）である。これは、通常は小型で、キロバイト（ｋＢ）程度の容量を持つが、アクセス時間は非常に高速で、１０−９秒程度である。
【０００７】
キャッシュ・メモリは局所性の原理に基づいて機能する。局所性には、空間的局所性、時間的局所性または連続的局所性が含まれ得る。空間的局所性とは、プロセッサによって実行されているプログラムが、その実行期間中に同じまたは隣接するメモリ位置にアクセスする可能性をいう。時間的局所性とは、プログラムがいくつかの異なる位置へのアクセスのシーケンスを含む場合に、このシーケンスに続くアクセスも、このシーケンスに関連する位置に対して行われる確率が高い特性をいう。連続的局所性とは、特定の位置ｓに対してアクセスが行われた場合に、後続のアクセスがその位置ｓ＋１に対して行われる可能性が高い特性をいう。本明細書では、プロセッサ・データ・アクセスも「参照」と呼ぶ。
【０００８】
キャッシュ制御装置により実施されるアドレス・マッピング制御機能は、データがどのようにキャッシュに格納され、レベル１以上のレベルのメモリからキャッシュに移動されるかを決定する。特定のプロセッサ・データ・アクセスがキャッシュによって満たされる場合、そのアクセスを「キャッシュ・ヒット」と呼び、そうでない場合を「キャッシュ・ミス」と呼ぶ。キャッシュは、通常、上位レベルのメモリからメモリのラインをフェッチする。ラインのサイズは、一般に、実行中のプログラムの期待される空間的局所性と一致するように設計される。
【０００９】
キャッシュは、要求時にデータをフェッチし、またはデータをプリフェッチするように編成され得る。大部分のプロセッサは、要求時フェッチ方式を用い、キャッシュ・ミスが発生すると、キャッシュ制御装置が現在のラインを追い出し、それをプロセッサにより参照されるラインで置き換える。プリフェッチ方式では、キャッシュ制御装置は、どのラインが必要とされるかを予測しようとし、次いで、それらのラインを、プロセッサが参照する前にキャッシュに移動する。
【００１０】
従来のキャッシュ・メモリで使用されるアドレス・マッピング制御の３つの基本方式は、完全連想マッピング、直接マッピングおよびセット連想マッピングである。完全連想マッピング方式と直接マッピング方式を、それぞれ、図１と図２に示す。これらの図では、例示を簡単明解にするために、キャッシュ制御装置およびそれに対応するマッピング論理回路少なくとも一部分が省略されている。
【００１１】
図１に完全連想アドレス・マッピングを利用するキャッシュ・メモリ１００を示す。キャッシュ１００はメモリ・アレイ１０２およびディレクトリ１０４を含む。図には、キャッシュがアクセス要求１０６を処理する方式が示されている。アクセス要求１０６はタグ１１０、オフセット１１２、およびバイト／ワード（Ｂ／Ｗ）選択フィールド１１４を含む。説明のために、アクセス要求１０６の部分１１０、部分１１２、部分１１４の長さを、それぞれ、１８ビット、３ビット、３ビットとする。タグ１１０はディレクトリ１０４中のエントリに対して比較される。キャッシュ・ヒットは、ディレクトリ１０４の特定のエントリ１０４−ｋ中のタグ１２０がアクセス要求１０６のタグ１１０にマッチする場合に生じる。この場合には、やはりディレクトリ１０４のエントリ１０４−ｋに格納されている対応するアドレス１２２を、アクセス要求１０６のオフセット１１２と併せて使用して、メモリ・アレイ１０２中の特定のライン１０２−ｊが識別される。次いで、要求されたラインがプロセッサに送られる。キャッシュ・ミスは、この例では、タグ１１０がディレクトリ１０４に格納されているどのタグにもマッチしない場合に生じる。図示のメモリ・アレイ１０２は、各８バイトずつの５１２ラインで構成された４ｋＢのデータを含む。図に示すように、メモリ・アレイ１０２中の５１２ラインのうちの特定の１つは、ディレクトリ１０４からの６ビットのアドレス１２２と３ビットのオフセット１１２を組み合わせたものを含む一意の９ビット・アドレスによって識別される。
【００１２】
図２に、直接マッピングを利用するキャッシュ・メモリ２００を示す。キャッシュ２００はメモリ・アレイ２０２およびディレクトリ２０４を含む。図には、キャッシュがアクセス要求２０６を処理する方式が示されている。アクセス要求２０６は、タグ２１０、指標２１１、オフセット２１２およびＢ／Ｗフィールド２１４を含む。説明のために、アクセス要求２０６の部分２１０、部分２１１、部分２１２、部分２１４の長さを、それぞれ、１０ビット、８ビット、３ビット、３ビットとする。直接マッピング方式によれば、指標２１１を用いてディレクトリ２０４中の特定のエントリ２０４−ｋが識別される。特定のエントリ２０４−ｋはタグ２２０を含む。指標２１１だけを用いてディレクトリ２０４中の特定のエントリが識別されるため、異なるアドレスを求めるアクセス要求がディレクトリ２０４中の同じ位置にマッピングされ得る。したがって、結果として生じるタグ２２０が、比較器２２２中のアクセス要求２０６のタグ２１０に比べられ、それら２つのタグがマッチする場合にはそのマッチ出力がロジック・ハイ・レベルにされ、そうでない場合にはロジック・ロー・レベルにされる。このマッチ出力は、指標２１１およびオフセット２１２に基づいて決定されたメモリ・アレイ２０２の特定のエントリ２０２−ｊがプロセッサに供給されるかどうか決定するゲート２２４のイネーブル信号として使用される。キャッシュ・ヒットは、ディレクトリ２０４のエントリ２０４−ｋに格納されているタグ２２０が、アクセス要求２０６のタグ２１０にマッチする場合に生じ、そうでない場合にはキャッシュ・ミスが生じる。図示のメモリ・アレイ２０２は、各８バイトずつの２０４８ラインで構成された、１６ｋＢのデータを含む。したがって、メモリ・アレイ２０２中の２０４８ラインのうちの特定の１つは、８ビットの指標２１１と３ビットのオフセット２１２を組み合わせたものを含む一意の１１ビット・アドレスによって識別される。
【００１３】
セット連想キャッシュは、アクセス要求アドレスに複数の選択肢が存在し得ることを除いて、前述の直接マッピング・キャッシュ２００と同様の方式で動作する。セット連想キャッシュのメモリ・アレイは異なる部分またはセットに分かれており、ディレクトリはその各エントリ中に、各タグがそれらのセットのうちの１つに対応する複数のタグを含む。各アクセス要求アドレスのタグ部分は、そのアクセス要求の指標部分で識別される、ディレクトリの特定のエントリ中のタグのそれぞれに比べられる。マッチが見つかった場合には、その比較結果も用いて、プロセッサへの送出のためにメモリ・アレイのセットのうちの１つからラインが選択される。
【００１４】
前述のキャッシュ・メモリのうちの１つでキャッシュ・ミスが発生した場合には、一般に、対応するデータがキャッシュから追い出され、正しいデータがフェッチされ、キャッシュに格納される。どのデータを追い出すべきか決定するためには多くの置換ポリシーが利用可能である。例えば、最低使用頻度（ＬＲＵ）置換ポリシーは、時間的局所性を利用して、常に、キャッシュ中の最後にアクセスされた時間が最も古い位置の関連付けられたデータを除去しようとする。ｎリソース（ｎは、例えば、セット連想キャッシュ・メモリ中のセット数など）でのＬＲＵ置換ポリシーを実施する状態情報を維持するために、１つの公知の手法は、ｎ２ビットの状態情報を必要とする。参照により本明細書に組み込まれている、Ｇ．Ａ．Ｂｌａａｕｗら、「Ｃｏｍｐｕｔｅｒ  Ａｒｃｈｉｔｅｃｔｕｒｅ：Ｃｏｎｃｅｐｔｓ  ａｎｄ  Ｅｖｏｌｕｔｉｏｎ」、Ａｄｄｉｓｏｎ−Ｗｅｓｌｅｙ、レディング、マサチューセッツ州、１９９７年に記載されているように、この要件をｎ（ｎ−１）／２ビットの状態情報にまで削減するさらなる改善方法も開発されている。キャッシュ・メモリで使用される他の置換ポリシーの例には、ランダム置換および先入れ先出し（ＦＩＦＯ）置換が含まれる。
【００１５】
図１および図２のメモリ・キャッシュの例は、メモリ位置からデータを読み取るプロセッサの状況で説明されている。類似のシナリオが、メモリ位置にデータを書き込むプロセッサにも存在する。その主要な違いは、データがプロセッサによってキャッシュのメモリ・アレイ中の適当な位置に書き込まれ、次いで、キャッシュが、このデータをいつメイン・メモリにライトバックすべきか決定する必要があることである。ライトスルー・キャッシュは、メイン・メモリとキャッシュ・メモリ・アレイの両方に即座に格納を行う。コピーバック・キャッシュは、所与のラインの任意の位置への書込みが発生した場合には、そのラインに「ダーティ」とマークし、メイン・メモリは、そのラインが追い出されることになっており、かつそれがダーティとマークされている場合に限り更新される。
【特許文献１】米国特許出願整理番号第１００７−２号
【非特許文献１】Ｍ．Ｊ．Ｆｌｙｎｎ、「Ｃｏｍｐｕｔｅｒ  Ａｒｃｈｉｔｅｃｔｕｒｅ：Ｐｉｐｅｌｉｎｅｄ  ａｎｄ  Ｐａｒａｌｌｅｌ  Ｐｒｏｃｅｓｓｏｒ  Ｄｅｓｉｇｎ」、Ｊｏｎｅｓ  ａｎｄ  Ｂａｒｔｌｅｔｔ  Ｐｕｂｌｉｓｈｅｒｓ、ボストン、マサチューセッツ州、１９９５年
【非特許文献２】Ｇ．Ａ．Ｂｌａａｕｗら、「Ｃｏｍｐｕｔｅｒ  Ａｒｃｈｉｔｅｃｔｕｒｅ：Ｃｏｎｃｅｐｔｓ  ａｎｄ  Ｅｖｏｌｕｔｉｏｎ」、Ａｄｄｉｓｏｎ−Ｗｅｓｌｅｙ、レディング、マサチューセッツ州、１９９７年
【特許文献２】米国仮出願第６０／３４１，２８９号
【発明の開示】
【発明が解決しようとする課題】
【００１６】
前述の方式の従来のキャッシュ・メモリに関連する重大な問題は、それらが、一般に、マルチスレッド化プロセッサ、すなわち、複数の別個の命令シーケンスまたは「スレッド」の同時実行をサポートするプロセッサと共に使用するために最適化されていないことである。したがって、マルチスレッド化プロセッサにおけるキャッシュ・メモリの実装のための改善された技法が求められている。
【課題を解決するための手段】
【００１７】
本発明は、改善されたマルチスレッド化キャッシュ・メモリを提供し、これは、例示的実施形態では、アクセス要求中のアドレスの少なくとも一部分を利用して、キャッシュ・ミスが発生した場合にキャッシュから追い出される１つまたは複数のラインあるいは他のエントリの決定を制御することにより、キャッシュ置換ポリシーの簡略化した実施態様を提供する。
【００１８】
本発明の一態様によれば、マルチスレッド化プロセッサで使用するためのキャッシュ・メモリは、いくつかのセット連想スレッド・キャッシュを含み、それらのスレッド・キャッシュのうちの１つまたは複数が、それぞれ、キャッシュ・メモリで必要とされる置換ポリシー記憶の量を削減するアドレスベースの追い出しプロセスを実装する。
【００１９】
例示の実施形態におけるスレッド・キャッシュの１つまたは複数は、それぞれ、複数のメモリ位置のセットを有するメモリ・アレイ、および、それぞれメモリ位置のうちの１つの特定のアドレスの少なくとも一部分に対応するタグを格納するディレクトリを含む。ディレクトリは、それぞれそのタグのうちの複数を格納する複数のエントリを有し、メモリ・アレイ中にｎセットのメモリ位置がある場合には、各ディレクトリ・エントリに関連付けられたｎ個のタグがある。ディレクトリは、アクセス要求とメモリ・アレイのメモリ位置の間のセット連想アドレス・マッピングを実施する際に利用される。それらのメモリ位置の特定の１つにおけるエントリが、少なくとも一部はキャッシュ・ミス・イベントに関連するアクセス要求におけるアドレスの少なくとも一部に基づき、キャッシュ・ミス・イベントに伴うスレッド・キャッシュからの追い出しのために選択される。
【００２０】
より具体的な例としては、ディレクトリを第１の部分と第２の部分に分けて、ディレクトリ中の所与のエントリが各部分に２つ以上のタグを持つようにし、アクセス要求アドレスのタグ部分の最下位ビットを用いて、スレッド・キャッシュからの追い出しのためにタグがそこから選択されるディレクトリの一部分が選択されることが考えられる。アクセス要求アドレスのタグ部分の最下位ビットを用いてディレクトリの特定の一部分が選択された後で、１つまたは複数の置換ポリシー・ビットを用いて選択された部分からの特定のタグが決定され得る。次いで、この特定のタグおよびそれに対応するメモリ位置エントリがキャッシュから追い出される。
【００２１】
有利には、本発明は、キャッシュ・メモリ中の置換ポリシー状態の複雑度を低減し、置換ポリシーが通常必要とされるはずのものよりも小規模な回路構成で実施され得るようにし、それによって前述した従来の方式に優る回路面積と省力化とを実現する。
【発明を実施するための最良の形態】
【００２２】
本明細書では、本発明を、マルチスレッド化プロセッサのマルチスレッド化キャッシュ・メモリに実装されたものとして示す。ただし、本発明が、例示の実施形態の特定のマルチスレッド化キャッシュおよびプロセッサ構成の利用を必要とせず、より広く、そのために置換ポリシー回路複雑度の低減が求められており、スレッド化処理を伴う任意のセット連想キャッシュ・メモリ用途での使用に適するものであることを理解すべきである。
【００２３】
以下では、本発明によるマルチスレッド化キャッシュ・メモリを実装する例示的処理システム３００を、図３Ａ、図３Ｂ、図４、図５との関連で説明する。図３Ａに処理システム３００を、メイン・メモリ３０４に結合されたマルチスレッド化プロセッサ３０２を含むものとして示す。図３Ｂに、マルチスレッド化プロセッサ３０２の１つの可能な実施態様のより詳細な図を示す。この実施形態では、マルチスレッド化プロセッサ３０２は、マルチスレッド化キャッシュ３１０、データ・メモリ３１２、キャッシュ制御装置３１４、命令復号器３１６、レジスタ・ファイル３１８、および演算論理装置（ＡＬＵ）のセット３２０を含む。本明細書では、マルチスレッド化キャッシュ３１０をキャッシュ・メモリとも呼ぶ。当分野の技術者には明らかなように、図３Ａおよび図３Ｂに示す具体的構成は、説明を明解にするために単純化されており、明示的に示されていない他のまたは代替の要素も含まれ得ることを強調しておく必要がある。
【００２４】
マルチスレッド化キャッシュ３１０は、複数のスレッド・キャッシュ３１０−１、３１０−２、．．．３１０−Ｎを含み、Ｎは、一般に、マルチスレッド化プロセッサ３０２によりサポートされるスレッドの数を表す。したがって、各スレッドは、マルチスレッド化キャッシュ３１０中にそれに関連付けられた対応するスレッド・キャッシュを持つ。同様に、データ・メモリ３１２は、図にデータ・メモリ３１２−１、３１２−２、．．．３１２−Ｎで表すＮ個の異なるデータ・メモリ・インスタンスを含む。
【００２５】
マルチスレッド化キャッシュ３１０は、キャッシュ制御装置３１４を介してメイン・メモリ３０４とインターフェースをとる。キャッシュ制御装置３１４は、メイン・メモリ３０４から適当な命令がマルチスレッド化キャッシュ３１０にロードされることを保証する。この例示的実施形態でのキャッシュ制御装置３１４は、個々のスレッド・キャッシュ３１０−１、３１０−２、．．．３１０−Ｎに関連付けられた論理回路または他の処理要素と一緒に動作し、セット連想アドレス・マッピングおよび最低使用頻度（ＬＲＵ）置換ポリシーの少なくとも一部分を実施する。以下で、セット連想アドレス・マッピングおよびＬＲＵ置換ポリシーを、図４および図５との関連でより詳細に説明する。ただし、例示の実施形態の具体的マッピング方式およびＬＲＵ置換ポリシーは、本発明を限定するものと解釈すべきではない。他のセット連想マッピング実施態様およびランダム置換やＦＩＦＯ置換など代替の置換ポリシーも、本発明と一緒に使用され得る。
【００２６】
一般に、マルチスレッド化キャッシュ３１０は、マルチスレッド化プロセッサ３０２によって実行される命令を格納するのに使用され、データ・メモリ３１２は、それらの命令により処理されるデータを格納する。命令は、レジスタ・ファイル３１８およびＡＬＵ３２０と一緒に動作して従来方式で命令実行を制御する命令復号器３１６により、マルチスレッド化キャッシュ３１０からフェッチされる。３１６、３１８、３２０などのマルチスレッド化プロセッサ要素の動作は当分野ではよく理解されており、したがって、本明細書ではこれ以上詳細には説明しない。
【００２７】
図４に、マルチスレッド化キャッシュ３１０のスレッド・キャッシュのうちの所与の１つで実装され得るセット連想アドレス・マッピングを示す。図４に示すように、このセット連想マッピングは、本発明の改善されたアドレスベースのキャッシュ追い出し技法を含まない。図５に、本発明によるアドレスベースのキャッシュ追い出しを組み込むように構成された図４のスレッド・キャッシュを示す。
【００２８】
最初に図４を参照すると、セット連想アドレス・マッピングを用いたスレッド・キャッシュ４００が示されている。スレッド・キャッシュ４００は、図３Ｂのマルチスレッド化キャッシュ３１０中のスレッド・キャッシュのうちの特定の１つに対応するものであると想定され、マルチスレッド化キャッシュ３１０中のその他のスレッド・キャッシュの全部または一部も同様に実施され得る。図示のスレッド・キャッシュ４００は、メモリ・アレイ４０２およびディレクトリ４０４を含む。メモリ・アレイ４０２はいくつかの異なるメモリ位置のセットを含む。この実施形態では、異なるメモリ位置のセットの数は４つであり、それらのセットを図にセット１、セット２、セット３、セット４で表すが、他の実施形態では、４より多い、または少ないセットも使用し得るはずである。ディレクトリ４０４は複数のエントリを含み、各エントリは４つのタグを格納する。ディレクトリ４０４の所与のエントリ中のタグのそれぞれは、メモリ・アレイ４０２中のセットのうちの対応する１つにある特定のメモリ位置のアドレスに対応する。より具体的には、ディレクトリ４０４中の所与のエントリ４０４−ｋが、図示のように４つの別個のタグを含み、それらのタグのそれぞれが、メモリ・アレイ４０２の各セット、セット１、セット２、セット３またはセット４中のうちの１つの対応するメモリ位置へのマッピングを制御する。一般に、この方式のセット連想キャッシュでは、メモリ・アレイ４０２がｎセットのメモリ位置を含む場合には、ディレクトリ４０４中の各エントリはｎ個のタグを格納する。したがって、ディレクトリ４０４は、各部分がディレクトリ４０４の各エントリ中の１つのタグだけと関連付けられている、図中の１、２、３、４で表す４つの部分に分かれているとみなすことができる。
【００２９】
図４のセット連想スレッド・キャッシュ４００では、キャッシュによって処理される例示的アクセス要求４０６は、タグ４１０、指標４１１、オフセット４１２およびＢ／Ｗフィールド２１４を含む。アクセス要求は、マルチスレッド化プロセッサ３０２での命令フェッチ動作に関連して命令復号器３１６から発せられ得る。説明のために、アクセス要求４０６の部分４１０、部分４１１、部分４１２、部分４１４の長さを、それぞれ、１２ビット、６ビット、３ビット、３ビットとする。これらのフィールド長およびその具体的アクセス要求構成は例として示すものにすぎず、決して本発明の範囲を限定するものであると解釈すべきではない。セット連想マッピング方式によれば、指標４１１を用いてディレクトリ４０４中の特定のエントリ４０４−ｋが識別される。特定のエントリ４０４−ｋは、この実施形態でのその他のディレクトリ・エントリのそれぞれと同様に、それぞれメモリ・アレイ４０２の各セット、セット１、セット２、セット３またはセット４のうちの１つに関連付けられた、図示の４つのタグを含む。これらのタグのそれぞれは、無制限に、タグ４１０と同じ長さ、すなわちこの実施形態では１２ビットであると想定される。識別されたエントリ４０４−ｋのこれらのタグは、それぞれ、４つの比較器４１６のうちの対応する１つにあるタグ４１０に比べられる。より具体的には、ディレクトリ・エントリ４０４−ｋの部分１からの第１のタグが比較器４１６−１中のタグ４１０に比べられ、部分２からの第２のタグが比較器４１６−２中のタグ４１０に比べられ、部分３からの第３のタグが比較器４１６−３中のタグ４１０に比べられ、部分４からの第４のタグが比較器４１６−４中のタグ４１０に比べられる。比較器４１６の出力は、それぞれが各セット、セット１、セット２、セット３またはセット４のうちの対応する１つを選択する選択信号のセットを形成する。
【００３０】
タグ４１０とディレクトリ・エントリ４０４−ｋからのタグのうちの１つの間にマッチがあった場合には、対応する選択信号がイネーブルにされ、例えば、ロジック・ハイ・レベルにされる。そうでない場合には、キャッシュ・ミスがあり、選択信号はイネーブルにされない。一度に選択信号のうちの１つだけがイネーブルにされる。選択信号はマルチプレクサ４１８の選択信号入力に適用され、そこで、イネーブルにされた選択信号の特定の１つに基づき、プロセッサへの送出のために、メモリ・アレイ４０２の選択されたセット中の対応するメモリ位置からのラインが選択される。より具体的には、本実施形態では、要求されたラインが、マルチスレッド化プロセッサ３０２での復号化および実行のために、命令復号器３１６に送出され得る。
【００３１】
図示のメモリ・アレイ４０２は、各８バイトずつの２０４８ラインで構成された１６ｋＢのデータを含む。セット１、セット２、セット３、セット４の各セットは、それぞれ、５１２ラインを含む。したがって、メモリ・アレイ４０２の４つの異なるセットのうちの所与の１つの中のラインうちの特定の１つは一意の９ビット・アドレスにより識別可能であり、それは、この実施形態では、６ビットの指標４１１と３ビットのオフセット４１２を組み合わせたものを含む。
【００３２】
図４の実施形態でのタグ４１０、指標４１１およびオフセット４１２は、一括して、アクセス要求４０６に関連付けられたアドレスとみなされ得る。本明細書で使用する「アドレス」という用語は、アドレス関連の情報を含むアクセス要求の任意の１つまたは複数の部分を含むものであると理解すべきである。本発明はどんな具体的なアクセス要求アドレス形式も必要としないことを理解されたい。さらに、アクセス要求４０６の具体的形式は、例示のためのものにすぎず、本発明の要件ではない。本発明による所与のアクセス要求は、他の形式では、図４に示すものより多い、または少ないアドレス情報を含み得るものであり、当分野の技術者には公知の種類の他の、または代替の情報を含み得るものである。
【００３３】
本発明の一態様によれば、メモリ・アレイ４０２の所与のセット中のメモリ位置のうちの特定の１つにあるラインまたは他のエントリが、少なくとも一部はアクセス要求アドレスに基づいて、キャッシュ・ミス・イベントに伴う追い出しのために選択される。前述のように、アドレスベースの追い出しプロセスを、図５との関連でより詳細に説明する。
【００３４】
次に図５を参照すると、スレッド・キャッシュ４００’が示されている。スレッド・キャッシュ４００’は、図３Ｂのマルチスレッド化キャッシュ３１０中のスレッド・キャッシュのうちの特定の１つに対応し、マルチスレッド化キャッシュ３１０中のその他のスレッド・キャッシュの全部または一部も、同様に構成され得る。スレッド・キャッシュ４００’は、メモリ・アレイ４０２、ディレクトリ４０４、比較器４１６およびマルチプレクサ４１８を含み、それぞれ、アクセス要求４０６などのアクセス要求を処理するに際して、実質的に図４との関連で前述したように動作する。例示的実施形態におけるアドレスベースの追い出しプロセスは、アクセス要求４０６のタグ部分４１０の下位または最下位ビット（ＬＳＢ）５０２を利用する。スレッド・キャッシュ４００’は、追い出しエントリ決定マルチプレクサ５０６、５０８、およびこの実施形態ではＬＲＵ状態レジスタ５１０の形をとる置換ポリシー記憶要素をさらに含む。この例示的実施形態でのＬＲＵ状態レジスタ５１０は、状態情報の１ビット５１２を格納する１ビット・レジスタを含む。
【００３５】
追い出しエントリ決定マルチプレクサ５０６、５０８、およびＬＲＵ状態レジスタ５１０は、図５ではスレッド・キャッシュ４００’の要素として示されているが、それぞれ、全部または一部をスレッド・キャッシュの外部に実装することも可能である。例えば、所与のスレッド・キャッシュにおけるアドレス・マッピングおよび置換ポリシー実装に関連する上記その他の要素は、その一部または全部をキャッシュ制御装置３１４に実装することも、マルチスレッド化プロセッサ３０２の別の部分にも実装することもできる。
【００３６】
追い出しエントリ決定マルチプレクサ５０６、５０８は、合わせて、ディレクトリ４０４から追い出される特定のタグを決定し、それにより、メモリ・アレイ４０２中の対応するメモリ位置から追い出されるエントリが決定される。
【００３７】
図５に示すディレクトリ４０４は、図示のように左部分と右部分に分かれている。より具体的には、ディレクトリ４０４の左部分は、左から２つの部分１および部分２を含み、ディレクトリ４０４の右部分は、右から２つの部分３および部分４を含む。したがって、左部分と右部分は合わせてディレクトリ４０４全体を包含し、左部分と右部分は、それぞれ、ディレクトリ４０４の各エントリごとに２つのタグを含む。アクセス要求４０６のタグ部分４１０のＬＳＢ５０２は、マルチプレクサ５０８の入力への伝搬のための４つの入力のうちの２つを選択するマルチプレクサ５０６への選択信号として適用される。マルチプレクサ５０６への４つの入力は、図示のようにｔ０Ｌ、ｔ１Ｌ、ｔ０Ｒ、ｔ１Ｒで表され、それぞれ、ディレクトリの左部分からのタグ０、ディレクトリの左部分からのタグ１、ディレクトリの右部分からのタグ０、ディレクトリの右部分からのタグ１に対応する。ＬＳＢ５０２を用いて、マルチプレクサ５０８の入力への伝搬のために左ディレクトリ・タグまたは右ディレクトリ・タグのどちらかが選択される。
【００３８】
したがって、マルチプレクサ５０８への入力は、左ディレクトリ・タグｔ０Ｌ、ｔ１Ｌまたは右ディレクトリ・タグｔ０Ｒ、ｔ１Ｒである。ＬＲＵビット５１２は、マルチプレクサ５０８に選択信号として供給され、それを用いて、スレッド・キャッシュ４００’からの追い出しのために適用された左または右ディレクトリ・タグのうちの１つが選択される。追い出しのための所与のタグが選択された後で、そのタグおよびそれに対応するメモリ位置エントリを、従来の方式でスレッド・キャッシュから追い出すことができ、例えば、当分野でよく理解されている方式で新しいエントリ情報を用いて上書きすることもできる。
【００３９】
図５の実施形態では、キャッシュ追い出しプロセスでアクセス要求アドレスのタグ部分４１０のＬＳＢ５０２が用いられるが、これは例としてあげただけにすぎない。他の実施形態では、例えば、タグ部分の複数の下位ビット、アクセス要求アドレスの他の部分の１つまたは複数のビットなど、アクセス要求アドレスの他の部分も使用され得る。所与の実施形態で使用される特定の部分は、一般に、アクセス要求形式、アドレス形式、キャッシュ・メモリ構成など、用途別の要因に左右されるであろう。
【００４０】
前述のアドレスベースのキャッシュ追い出し技法は、従来の技法と比べて著しい改善を提供する。例えば、この技法は、ＬＲＵ置換ポリシーを実施するために格納される必要のある状態情報の量を大幅に削減する。より具体的には、前述の、４セットを用いた（すなわちｎ＝４の）セット連想キャッシュに基づく例示的実施形態では、ＬＲＵ置換ポリシーのための状態情報を格納するのに１つの１ビット・レジスタだけしか必要としない。前述の従来の技法がｎ２またはｎ（ｎ−１）／２ビットの置換ポリシー状態情報を要するのに対し、前述の例示的実施形態でのアドレスベースの追い出し技法は、アクセス要求アドレスの１ビットだけの使用を想定すると、ｎ（ｎ−２）／８ビットの状態情報を要する。この例示的実施形態によって実現される、従来技法に優る改善を、以下の表にｎの例示的値の関数として示す。
【００４１】
【表１】
2005528695.tif 000003
【００４２】
さらに、置換ポリシーを実施するために格納される必要のある状態情報の量を削減することにより、本発明は、マルチスレッド化キャッシュ・メモリの回路面積および電力要件の削減も実現する。
【００４３】
前述したように、上記の表では、本発明のキャッシュ追い出し技法の実装に際して、アクセス要求アドレスの１ビットだけの使用が想定されている。しかしながら、アクセス要求アドレスの２つ以上のビットを使用することも可能である。例えば、ｎ＝８の実施形態では、そのディレクトリを、各部分が１ディレクトリ・エントリ当たり２つのタグを有する４つの部分に分割させ、アクセス要求アドレスのタグ部分の下位２ビットを用いて、置換ポリシー状態情報に基づいて追い出しのためにそこからタグが選択される４つの部分のうちの特定の１つを選択することができるはずである。この例では、図５の例示的実施形態と同様に、置換ポリシー状態情報の１ビットだけしか必要とされない。
【００４４】
以上、キャッシュ・メモリのメモリ・アレイ中のメモリ位置への読取りアクセスとの関連で説明したが、本発明は、そのような位置への書込みアクセスにも使用され得る。あるいは、従来の書込み技法を、本明細書での開示に基づき、書込みアクセスのために本発明の技法を実装するように簡単に変更することも可能である。
【００４５】
前述したように、本発明は、セット連想マッピングの利用のために構成され得る任意のマルチスレッド化プロセッサで実装され得る。そのようなプロセッサのより具体的な例は、参照により本明細書に組み込まれている、２００１年１２月２０日に出願された、米国仮出願第６０／３４１，２８９号に詳細に記載されている。
【００４６】
前述の本発明の実施形態は、例示のためのものにすぎず、添付の特許請求の範囲内に含まれる多数の代替実施形態が当分野の技術者には明らかであろう。例えば、所与のスレッド・キャッシュ・ディレクトリは、図５に示す左部分と右部分以上に細かく、すなわち、３つ以上の別個の部分に分割し、ディレクトリ・エントリからの追い出しのために特定のタグを選択するのに用いられるアクセス要求アドレスおよび置換ポリシー・ビットの数を適当に増加させることもできる。例示の実施形態で追い出しエントリ決定を実装するのに使用される具体的回路構成は、代替構成で置き換えることができる。セットの数ｎは、前述のように変動し得る。さらに、例示の実施形態のＬＲＵ置換ポリシーの代わりに、ランダム置換やＦＩＦＯ置換など、他の置換ポリシーを用いることもできる。ランダム置換に関するより具体的な例としては、アクセス要求アドレスの１つまたは複数のビットを用いて、所与のディレクトリ内のどこで特定のランダム置換が行われるかを決定することが考えられる。
【図面の簡単な説明】
【００４７】
【図１】完全連想マッピングを用いた従来のキャッシュ・メモリを示す図である。
【図２】直接マッピングを用いた従来のキャッシュ・メモリを示す図である。
【図３Ａ】本発明が実装される例示的処理システムを示す構成図である。
【図３Ｂ】本発明が実装されるマルチスレッド化キャッシュを示す、図３Ａの処理システムにおけるマルチスレッド化プロセッサのより詳細な構成図である。
【図４】本発明と併せて利用され得るセット連想アドレス・マッピングを用いたキャッシュ・メモリを示す図である。
【図５】本発明の例示的実施形態によるキャッシュ・メモリを示す図である。
【図１】
2005528695.tif 000004
【図２】
2005528695.tif 000005
【図３Ａ】
2005528695.tif 000006
【図３Ｂ】
2005528695.tif 000007
【図４】
2005528695.tif 000008
【図５】
2005528695.tif 000009
【国際調査報告】
2005528695.tif 000010
2005528695.tif 000011