(57)【要約】本発明の１つの実施形態は、複数のプロセッサを含むマルチプロセッサシステムを提供する。複数のプロセッサは、下位レベルキャッシュを介してメモリアクセスを実行する上位レベルキャッシュを有する。このマルチプロセッサシステムはまた、下位レベルキャッシュと接続されたリバースディレクトリも含み、下位レベルキャッシュは、上位レベルキャッシュのラインに対応するエントリを含む。ここで、各エントリは、下位レベルキャッシュにおける関連するエントリを識別する。本発明の１つの実施形態では、上位レベルキャッシュは、セットアソシアティブキャッシュであり、リバースディレクトリ内に情報を格納するステップは、ラインが格納されるべき上位レベルキャッシュにおけるウェイ位置を特定する。
2005509204.tif 000002
【特許請求の範囲】
【請求項１】
マルチプロセッサシステムであって、
複数のプロセッサと、
下位レベルキャッシュと、
該複数のプロセッサに接続された複数の上位レベルキャッシュであって、
該各複数の上位レベルキャッシュは、該下位レベルキャッシュを介してメモリアクセスを実行するように構成される、複数の上位レベルキャッシュと、
該下位レベルキャッシュと接続されるリバースディレクトリであって、
該リバースディレクトリは、該複数の上位レベルキャッシュにおけるラインに対するエントリを含み、各エントリは、該下位レベルキャッシュにおける関連するエントリを識別する、リバースディレクトリと
を含む、マルチプロセッサシステム。
【請求項２】
前記下位レベルキャッシュは、
該下位レベルキャッシュからラインを取り出すために、上位レベルキャッシュからの要求を受信し、
該ラインが該下位レベルキャッシュ内に存在する場合は、該下位レベルキャッシュは、
該ラインが該上位レベルキャッシュ内に格納され得るように、該上位レベルキャッシュへ該ラインを送信し、
該ラインが該上位レベルキャッシュ内に格納されることを指示するために、前記リバースディレクトリ内に情報を格納する
ように構成される、
ように構成される、請求項１に記載のマルチプロセッサシステム。
【請求項３】
前記上位レベルキャッシュは、Ｎウェイセットアソシアティブキャッシュであり、
前記リバースディレクトリ内に情報を格納するステップは、前記ラインが格納されるべき上位レベルキャッシュにおけるウェイ位置を識別するウェイ情報を格納するステップを含む、請求項２に記載のマルチプロセッサシステム。
【請求項４】
前記マルチプロセッサシステムは、前記上位レベルキャッシュにおける前記ラインの前記ウェイ位置を決定するために、該上位レベルキャッシュ内のルックアップを実行する必要なく、該上位レベルキャッシュにおける該ラインを無効化する、続く無効化オペレーションの間に、前記ウェイ情報を利用するようにさらに構成される、請求項３に記載のマルチプロセッサシステム。
【請求項５】
前記下位レベルキャッシュは、前記ラインが該下位レベルキャッシュ内に存在しない場合に、該下位レベルキャッシュへ該ラインを引き出すために、ミスを生成するようにさらに構成される、請求項２に記載のマルチプロセッサシステム。
【請求項６】
前記下位レベルキャッシュは、
アップデートされるべき該下位レベルキャッシュ内に目標エントリを発生させるアップデート要求を受信し、
該目標エントリが１つ以上の上位レベルキャッシュ内に含まれるかどうかを決定するために、前記リバースディレクトリ内でルックアップを実行し、
該目標エントリを含む各上位レベルキャッシュに対して、
該目標エントリを無効化するために、該上位レベルキャッシュに無効要求を送信し、
該目標エントリが該上位レベルキャッシュ内で無効化されたことを指示するために、該リバースディレクトリ内の対応するエントリをアップデートする
ようにさらに構成される、請求項１に記載のマルチプロセッサシステム。
【請求項７】
前記アップデート要求は、
ロードミス、
格納ミス、
前記目標エントリ上の格納ヒット
のいずれか１つを含む、請求項６に記載のシステム。
【請求項８】
前記アップデート要求が格納ヒットである場合に、前記リバースディレクトリ内の前記ルックアップは、前記格納ヒットを発生させた上位レベルキャッシュ以外の、前記複数の上位レベルキャッシュ内の前記目標エントリをルックアップするステップを含む、請求項７に記載のマルチプロセッサシステム。
【請求項９】
前記リバースディレクトリは、各前記複数の上位レベルキャッシュにおける各エントリに対応する固定されたエントリを含む、請求項１に記載のマルチプロセッサシステム。
【請求項１０】
前記リバースディレクトリ内の各エントリは、前記下位レベルキャッシュ内の対応するエントリの位置を特定する情報を含む、請求項９に記載のマルチプロセッサシステム。
【請求項１１】
前記下位レベルキャッシュは、Ｍウェイセットアソシアティブキャッシュとして組織化され、
前記リバースディレクトリ内の各エントリは、
該下位レベルキャッシュ内の対応するエントリのウェイ位置を識別するウェイ識別子と、
該下位レベルキャッシュ内の該対応するエントリのセット位置を識別するセット識別子であって、該セット識別子は、該リバースディレクトリ内の該エントリの位置から推察され得るセット情報を含まない、セット識別子と、
該リバースディレクトリ内の該エントリが有効であるかどうかを指示する有効フラグと
を含む、請求項９に記載のマルチプロセッサシステム。
【請求項１２】
前記マルチプロセッサシステムは、単一の半導体チップ上に配置される、請求項１に記載のマルチプロセッサシステム。
【請求項１３】
前記下位レベルキャッシュは、Ｌ２キャッシュであり、
各前記複数の上位レベルキャッシュは、Ｌ１キャッシュである、請求項１に記載のマルチプロセッサシステム。
【請求項１４】
前記複数の上位レベルキャッシュは、ライトスルーキャッシュとして組織化され、その結果、該複数の上位レベルキャッシュのアップデートは、前記下位レベルキャッシュに直ちにライトスルーされる、請求項１に記載のマルチプロセッサシステム。
【請求項１５】
前記下位レベルキャッシュは、並行にアクセスされ得る多重バンクを含む、請求項１に記載のマルチプロセッサシステム。
【請求項１６】
単一チップマルチプロセッサシステムであって、
半導体チップと、
該半導体チップ内の複数のプロセッサと、
該半導体チップ内のＬ２キャッシュと、
該半導体チップ内にあり、該複数のプロセッサに接続された複数のＬ１キャッシュであって、
各該複数のＬ１キャッシュは、該Ｌ２キャッシュを介してメモリアクセスを実行するように構成され、
該複数のＬ１キャッシュは、ライトスルーキャッシュとして組織化され、その結果、該複数のＬ１キャッシュに対するアップデートは、直ちに該Ｌ２キャッシュにライトスルーされる、複数のＬ１キャッシュと、
該Ｌ２キャッシュに接続されるリバースディレクトリであって、
該リバースディレクトリは、各該複数のＬ１キャッシュにおける各エントリと対応する固定されたエントリを含み、各固定されたエントリは、該Ｌ２キャッシュ内の関連するエントリを識別する、リバースディレクトリと
を含む、単一チップマルチプロセッサシステム。
【請求項１７】
コンピュータシステム内で動作する方法であって、該コンピュータシステムは、下位レベルキャッシュを介してデータにアクセスする複数の上位レベルキャッシュを含み、該方法は、
該下位レベルキャッシュからラインを取り出すために、上位レベルキャッシュからの要求を受信するステップと、
該ラインが、該下位レベルキャッシュ内に存在する場合は、
該ラインが該上位レベルキャッシュ内に格納され得るように、該上位レベルキャッシュへ該ラインを送信するステップと、
該該ラインが該上位レベルキャッシュ内に格納されることを指示するために、該下位レベルキャッシュに配置されるリバースディレクトリ内に、情報を格納するステップと
を含み、
該リバースディレクトリは、該複数の上位レベルキャッシュ内のラインに対するエントリを含み、各エントリは、該下位レベルキャッシュ内の関連するエントリを識別する、方法。
【請求項１８】
前記上位レベルキャッシュは、Ｎウェイセットアソシアティブキャッシュであり、
前記リバースディレクトリ内の前記情報を格納するステップは、前記ラインが格納されるべき前記上位レベルキャッシュ内に、ウェイ位置を識別するウェイ情報を格納するステップを含む、請求項１７に記載の方法。
【請求項１９】
前記方法は、前記上位レベルキャッシュにおける前記ラインの前記ウェイ位置を決定するために、該上位レベルキャッシュ内のルックアップを実行する必要なく、該上位レベルキャッシュにおける該ラインを無効化する、続く無効化オペレーションの間に、該ウェイ情報を利用するステップをさらに含む、請求項１８に記載の方法。
【請求項２０】
前記方法は、
アップデートされるべき該下位レベルキャッシュ内に目標エントリを発生させるアップデート要求を受信するステップと、
該目標エントリが１つ以上の上位レベルキャッシュ内に含まれるかどうかを決定するために、前記リバースディレクトリ内でルックアップを実行するステップと、
該目標エントリを含む各上位レベルキャッシュに対して、
該目標エントリを無効化するために、該上位レベルキャッシュに無効要求を送信するステップと、
該目標エントリが該上位レベルキャッシュ内で無効化されたことを指示するために、該リバースディレクトリ内の対応するエントリをアップデートするステップと
をさらに含む、請求項１７に記載の方法。
【請求項２１】
前記アップデート要求は、
ロードミス、
格納ミス、
前記目標エントリ上の格納ヒット
のいずれか１つを含む、請求項２０に記載の方法。
【請求項２２】
前記アップデート要求が格納ヒットである場合に、前記リバースディレクトリ内の前記ルックアップは、前記格納ヒットを発生させた上位レベルキャッシュ以外の、前記複数の上位レベルキャッシュ内の前記目標エントリをルックアップするステップを含む、請求項２１に記載の方法。
【請求項２３】
前記リバースディレクトリは、各前記複数の上位レベルキャッシュにおける各エントリに対応する固定されたエントリを含む、請求項１７に記載の方法。
【請求項２４】
前記リバースディレクトリ内の各固定されたエントリは、前記下位レベルキャッシュ内の対応するエントリの位置を特定する情報を含む、請求項２３に記載の方法。
【請求項２５】
前記下位レベルキャッシュは、Ｍウェイセットアソシアティブキャッシュとして組織化され、
前記リバースディレクトリ内の各エントリは、
該下位レベルキャッシュ内の対応するエントリのウェイ位置を識別するウェイ識別子と、
該下位レベルキャッシュ内の該対応するエントリのセット位置を識別するセット識別子であって、該セット識別子は、該リバースディレクトリ内の該エントリの位置から推察され得るセット情報を含まない、セット識別子と、
該リバースディレクトリ内の該エントリが有効であるかどうかを指示する有効フラグと
を含む、請求項２３に記載の方法。
【請求項２６】
前記方法は、前記ラインが前記下位レベルキャッシュ内に存在しない場合に、該下位レベルキャッシュへ該ラインを引き出すために、該下位レベルキャッシュ内でミスを生成するステップをさらに含む、請求項１７に記載の方法。
【請求項２７】
前記複数の上位レベルキャッシュおよび前記下位レベルのキャッシュは、単一の半導体チップ上に配置され、
各該複数の上位レベルキャッシュは、該単一の半導体チップ上に配置される関連するプロセッサと接続される、請求項１７に記載の方法。
【請求項２８】
前記下位レベルキャッシュは、Ｌ２キャッシュであり、
各前記複数の上位レベルキャッシュは、Ｌ１キャッシュである、請求項１７に記載の方法。
【請求項２９】
前記複数の上位レベルキャッシュは、ライトスルーキャッシュとして組織化され、その結果、該複数の上位レベルキャッシュに対するアップデートは、直ちに該下位レベルキャッシュにライトスルーされる、請求項１７に記載の方法。
【請求項３０】
前記下位レベルキャッシュは、並行にアクセスされ得る多重バンクを含む、請求項１７に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
（背景技術）
（発明の分野）
本発明は、マルチプロセッサシステムの設計に関する。より詳細には、本発明は、下位レベルのキャッシュを介してアクセスを実行する上位レベルのキャッシュを含むオペレーションを促進するために、下位レベルキャッシュに位置するリバースディレクトリを利用する方法と装置に関する。
【背景技術】
【０００２】
（関連技術）
計算性能の高速化を達成するために、コンピュータシステム設計者は、単一の計算タスクの実行のために並行に動作するマルチプロセッサを利用し始めている。１つの共通のマルチプロセッサ設計は、単一のレベル２（Ｌ２）キャッシュ１８０およびメモリ１８３を共用するレベル１（Ｌ１）キャッシュ１６１〜１６４に接続された複数のプロセッサ１５１〜１５４を含む（図１を参照されたい）。動作中、プロセッサ１５１が、ローカルＬ１キャッシュ１６１に存在しないデータアイテムにアクセスする場合、システムは、Ｌ２キャッシュ１８０からデータアイテムを取り出すことを試みる。データアイテムが、Ｌ２キャッシュ１８０に存在しない場合、システムは、最初にメモリ１８０からＬ２キャッシュ１８０へデータアイテムを取り出し、続いてＬ２キャッシュ１８０からＬ１キャッシュ１６１へ取り出す。
【０００３】
留意すべきは、１つより多いＬ１キャッシュにおいて、同一のデータアイテムが存在する場合、干渉性の問題が生じ得ることである。この場合、Ｌ１キャッシュ１６１におけるデータアイテムの第１のバージョンに対する修正によって、この第１のバージョンが、Ｌ１キャッシュ１６２におけるデータアイテムの第２のバージョンと異なるようにし得る。
【０００４】
干渉性の問題を防ぐために、コンピュータシステムは、しばしば、バス１７０を介して動作する干渉性プロトコルを提供する。典型的には、干渉性プロトコルが確実にさせるのは、データアイテムの１つのコピーがＬ１キャッシュ１６１で修正される場合、Ｌ１キャッシュ１６２〜１６４、Ｌ２キャッシュ１８０、および、メモリ１８３における同一データアイテムの他のコピーは、その修正を反映するようにアップデートされるか、無効化されることである。
【０００５】
干渉性プロトコルは、典型的には、バス１７０を介して無効メッセージをブロードキャストすることによって、無効化を実行する。そのような無効化が頻繁に発生する場合、これらの無効メッセージは、潜在的にバス１７０を拘束させ得、それにより全体的なシステム性能を低下させ得る。
【０００６】
この問題を改善するために、いくらかの設計者は、Ｌ２キャッシュ１８０内にディレクトリ情報を維持する可能性を検討し始めた。このディレクトリ情報は、どのＬ１キャッシュが特定のデータアイテムのコピーを含むかを特定する。このことにより、システムは、全てのＬ１キャッシュにブロードキャストメッセージを送信するのではなく、そのデータアイテムを含むＬ１キャッシュに対してのみ無効情報を送信することになる。（このタイプのシステムは、図１に示される例とは異なり、各Ｌ１キャッシュ１６１〜１６４への無効メッセージのための別個の伝達経路が存在することを仮定している。図１は、Ｌ１キャッシュ１６１〜１６４と通信する単一の共用バス１７０を利用している。）
しかし、留意すべきは、Ｌ２キャッシュ１８０が、典型的にはＬ１キャッシュ１６１〜１６４よりも多いエントリを有するために、各エントリに対するディレクトリ情報をＬ２キャッシュ１８０に格納することは、浪費である。このことは、Ｌ２キャッシュ１８０におけるディレクトリ情報に対するほとんどのエントリが空になることを意味する。
【０００７】
さらに、留意すべきは、Ｌ１キャッシュ１６１〜１６４は、典型的にはセットアソシアティブ（ｓｅｔ−ａｓｓｏｃｉａｔｉｖｅ）である。従って、無効メッセージがＬ１キャッシュ１６１によって受信されると、ルックアップおよび比較がＬ１キャッシュ１６１内で必ず実行されて、データアイテムのウェイ位置を決定する。例えば、４ウェイセットアソシアティブＬ１キャッシュにおいて、特定のセット（アドレスの一部分によって特定される）に所属するデータアイテムは、４つの可能な「ウェイ」の１つで、格納され得る。結果として、各４つの可能なウェイからのタグは、必ず取り出され比較されて、データアイテムのウェイ位置を決定する。このルックアップは、時間を消費し、システム性能を低下させる。
【発明の開示】
【発明が解決しようとする課題】
【０００８】
必要とされるのは、メモリを浪費することなしに、Ｌ１キャッシュに対するディレクトリ情報を維持するための方法および装置である。
【０００９】
さらに、必要とされるのは、エントリのウェイ位置を決定するためにルックアップを実行することなく、Ｌ１キャッシュにおけるエントリを無効化するための方法および装置である。
【課題を解決するための手段】
【００１０】
（要旨）
本発明の１つの実施形態は、下位レベルのキャッシュを介してメモリアクセスを実行する上位レベルのキャッシュを有する、複数のプロセッサを含むマルチプロセッサシステムを提供する。このマルチプロセッサシステムはまた、下位レベルのキャッシュに接続されるリバースディレクトリを含み、下位レベルのキャッシュは、上位レベルのキャッシュにおけるラインに対応するエントリを含む。ここで、各エントリは、下位レベルにおける関連するエントリを識別する。
【００１１】
本発明の１つの実施形態では、下位レベルのキャッシュは、上位レベルのキャッシュからの要求を受信するように構成されて、下位レベルからのラインを取り出す。ラインが下位レベルのキャッシュ内に存在する場合、システムは、上位レベルのキャッシュへラインを送信し、その結果、ラインは、上位レベルのキャッシュ内に格納され得る。このシステムはまた、ラインが上位レベルのキャッシュ内に格納されることを指示するために、リバースディレクトリ内の情報を格納する。
【００１２】
この実施形態のバリエーションでは、上位レベルのキャッシュは、Ｎウェイセットアソシアティブキャッシュ（Ｎ−ｗａｙ  ｓｅｔ−ａｓｓｏｃｉａｔｉｖｅ  ｃａｃｈｅ）であり、リバースディレクトリにおける情報を格納するステップは、上位レベルのキャッシュにおけるウェイ位置を識別するウェイ情報を格納するステップを含む。上位レベルのキャッシュでは、ラインが格納され得る。さらに、マイクロプロセッサシステムは、上位レベルにおけるラインのウェイ位置を決定するために上位レベルのキャッシュ内でルックアップを実行することなく、上位レベルキャッシュにおけるラインを無効化する、続く無効化オペレーションの間、このウェイ情報を利用するように構成される。
【００１３】
本発明の１つの実施形態では、さらに、ラインが下位レベルのキャッシュ内に存在しない場合、下位レベルのキャッシュは、ラインを下位レベルのキャッシュへ引き出すために、ミスを生成するように構成される。
【００１４】
本発明の１つの実施形態では、下位レベルのキャッシュ内の目標エントリをアップデートさせるアップデート要求を受信すると、システムは、目標エントリが１つ以上の上位レベルのキャッシュ内に含まれるかどうかを決定するために、リバースディレクトリにおけるルックアップを実行する。目標エントリを含む各上位レベルキャッシュに対して、システムは、目標エントリを無効化するために、上位レベルキャッシュに無効化要求を送信し、目標エントリが上位レベルキャッシュ内で無効化されたことを指示するために、リバースディレクトリにおける対応エントリをアップデートする。
【００１５】
留意すべきは、このアップデート要求は、目標エントリにおけるロードミス、格納ミス、および格納ヒットを含み得る。アップデート要求が格納ヒットである場合、リバースディレクトリにおけるルックアップは、格納ヒットを発生させた上位レベルキャッシュ以外の全ての上位レベルキャッシュにおける目標エントリのルックアップの工程を含む。
【００１６】
本発明の１つの実施形態では、リバースディレクトリは、各上位レベルキャッシュにおける各エントリに対応する固定されたエントリを含む。
【００１７】
本発明の１つの実施形態では、リバースディレクトリにおける各エントリは、下位レベルキャッシュにおける対応するエントリの位置を指定する情報を含む。
【００１８】
本発明の１つの実施形態では、下位レベルキャッシュは、Ｍウェイセットアソシアティブキャッシュとして、組織化される。この実施形態では、リバースディレクトリにおける各エントリは、下位レベルキャッシュ内の対応するエントリのウェイ位置を識別するウェイ識別子と、下位レベルキャッシュ内の対応するエントリのセット位置を識別するセット識別子であって、セット識別子は、リバースディレクトリ内のエントリの位置から推測され得るセット情報を含まない、セット識別子と、リバースディレクトリ内のエントリが有効であるかどうかを指示する有効フラグとを含む。
【００１９】
本発明の１つの実施形態では、マルチプロセッサシステムは、単一の半導体チップ上に位置する。
【００２０】
本発明の１つの実施形態では、下位レベルキャッシュは、Ｌ２キャッシュであり、各上位レベルキャッシュは、Ｌ１キャッシュである。
【００２１】
本発明の１つの実施形態では、上位レベルキャッシュは、ライトスルーキャッシュとして組織化され、その結果、上位レベルキャッシュに対するアップデートは、直ちに下位レベルキャッシュまでライトスルーされる。
【００２２】
本発明の１つの実施形態では、下位レベルキャッシュは、並行にアクセスされ得る多重バンクを含む。
【発明を実施するための最良の形態】
【００２３】
（詳細な説明）
以下の説明は、任意の当業者が本発明を製造し利用することができるように表現されており、特的の用途およびその要件に関連して提供される。開示される実施形態に対する様々な改変が、当業者には容易に理解され、本明細書中で定義される一般原理は、本発明の意図および範囲から逸脱することなく、他の実施形態および用途に適用され得る。従って、本発明は、示される実施形態に限定されることを意図しないが、本明細書中で開示された原理および特徴と一貫する最大範囲が許容され得る。
（マルチプロセッサシステム）
図１Ｂは、本発明の実施形態に従った、リバースディレクトリを有するマルチプロセッサシステム１００を示す。マルチプロセッサシステム１００の多くは、単一の半導体チップ１０１内に配置されていることを留意されたい。より詳細には、半導体チップ１０１は、複数のプロセッサ１１０、１２０、１３０および１４０を含み、それらのプロセッサは、レベル１（Ｌ１）キャッシュ１１２、１２２、１３２、１４２をそれぞれ含む。留意すべきは、Ｌ１キャッシュ１１２、１２２、１３２および１４２は、別個の命令およびデータキャッシュであってもよく、もしくは、代替として、統一された命令／データキャッシュであってもよいことである。Ｌ１キャッシュ１１２、１２２、１３２および１４２は、レベル２（Ｌ２）キャッシュ１０６に接続され、Ｌ２キャッシュ１０６は、リバースディレクトリ３０２を含む。リバースディレクトリ３０２は、以下の図３〜６を参照して、より詳細が述べられる。Ｌ２キャッシュ１０６は、メモリコントローラ１０４を介して、オフチップメモリ１０２に接続される。
【００２４】
本発明の１つの実施形態では、Ｌ１キャッシュ１１２、１２２、１３２および１４２は、ライトスルーキャッシュ（ｗｒｉｔｅ−ｔｈｒｏｕｇｈ  ｃａｃｈｅ）であり、つまり、Ｌ１キャッシュ１１２、１２２、１３２および１４２に対する全てのアップデートは、自動的に、Ｌ２キャッシュ１０６に伝播されることを意味する。このことは、プロセッサ１１０が、Ｌ１キャッシュ１１２に存在するデータアイテムを必要とする場合、プロセッサ１１０は、そのデータを調達するためにＬ１キャッシュ１１２を待つ必要もなく、Ｌ２キャッシュ１０６からそのデータを受信することができるので、干渉性プロトコルを単純化する。さらに、Ｌ１キャッシュ１１２にそのデータを調達できるようにするために、ネットワークをフォワードする必要もない。留意すべきは、本発明の１つの実施形態では、Ｌ２キャッシュ１０６は「包含的キャッシュ」であり、つまり、Ｌ１キャッシュ１１２、１２２、１３２および１４２内の全てのアイテムは、Ｌ２キャッシュ１０６に含まれることを意味することである。
（多重バンクを有するＬ２キャッシュ）
図２は、本発明の実施形態に従った、多重バンクを有するＬ２キャッシュを示す。この実施形態では、Ｌ２キャッシュ１０６は、４つのバンク２０２〜２０５で実装され、４つのバンク２０２〜２０５は、スイッチ２２０を介して、プロセッサ１１０、１２０、１３０、１４０によって並列にアクセスされ得る。留意すべきは、メモリ要求がどの４つのバンク２０２〜２０５指示しているのかを決定するために、２ビットのアドレスだけが必要とされることである。さらに、スイッチ１２０は、Ｉ／Ｏデバイスと通信するためのＩ／Ｏポート１５０を含む。また留意すべきは、各これらのバンク２０２〜２０５は、リバースディレクトリを含むことである。さらに、各バンク２０２〜２０５は、それ自体のメモリコントローラ２１２〜２１５を有し、メモリコントローラ２１２〜２１５は、オフチップメモリ２３２〜２３５の関連するバンクに接続される。
【００２５】
留意すべきは、このアーキテクチャに関して、同時に各Ｌ１キャッシュを、Ｌ２キャッシュのそれ自体のバンクと接続させることが可能であり、そのことが、Ｌ２キャッシュ１０６に対して処理能力を増加させることである。
（リバースディレクトリ）
図３は、本発明の実施形態に従った、関連するリバースディレクトリ３０２と一緒のＬ２バンク２０２を示す。Ｌ２バンク２０２は、命令およびデータを格納するための８ウェイのセットアソシアティブキャッシュ３０４を含む。アドレスの一部分は、キャッシュ３０４内のセットを決定するために利用される。キャッシュ３０４のセットは、キャッシュ３０４の行によって表現される。所与のセット内では、８つの異なるエントリが、各８つの異なる「ウェイ位置」に格納され得る。ウェイ位置は、キャッシュ３０４内の８つの列によって表現される。
【００２６】
リバースディレクトリ３０２は、各Ｌ１キャッシュに対して別個のブロックを含む。より具体的には、ブロック３１２はＬ１キャッシュ１１２と関連し、ブロック３２２はＬ１キャッシュ１２２と関連し、ブロック３３２はＬ１キャッシュ１３２と関連し、かつ、ブロック３４２はＬ１キャッシュ１４２と関連する。
【００２７】
留意すべきは、各これらのブロック３１２、３２２、３３２および３４２は、関連するＬ１キャッシュ１１２、１２２、１３２および１４２内の各ラインに対するエントリを含むことである。さらに、Ｌ１キャッシュ１１２が、４ウェイセットアソシアティブキャッシュとして組織化されるので、リバースディレクトリ３０２内の関連するブロック３１２はまた、同一の形式で組織化される。しかし、留意すべきは、Ｌ１キャッシュ１１２内のエントリは、データおよび命令を含むことである。ここで、関連するブロック３１２内のエントリは、キャッシュ３０４内のラインの位置を特定するインデックス情報を含む。
（リバースディレクトリエントリ）
図４は、本発明の実施形態に従って、リバースディレクトリエントリ４３０がどのように生成されるかを示す。
【００２８】
図４の上側は、メモリ１０２内のデータアイテム（もしくは命令）のアドレス４００を示す。Ｌ１キャッシュ１１２は、このアドレスを、Ｌ１タグ４１２、Ｌ１セットナンバー４１４、および、Ｌ１ラインオフセット４１８へ分割する。Ｌ１セットナンバー４１４は、４ウェイセットアソシアティブＬ１キャッシュ１１２の特定のセットを調べるために、利用される。Ｌ１タグ４１２は、Ｌ１キャッシュ１１２内に格納され、各セットに対する４ウェイセットアソシアティブメモリを実装するために、比較を実行するように利用される。Ｌ１ラインオフセット４１８は、Ｌ１キャッシュ１１２のライン内の特定のデータアイテムの位置を決定する。
【００２９】
Ｌ２キャッシュ１０６は、アドレス４００を、Ｌ２タグ４０２、Ｌ２セットナンバー４０４、Ｌ２バンクナンバー４０６およびＬ２ラインオフセット４０８に分割する。Ｌ２バンクナンバー４０６は、Ｌ２キャッシュ１０６の４つのバンク２０２〜２０５から、特定のバンクを決定する。Ｌ２セットナンバー４０４は、Ｌ２キャッシュ１０６の８ウェイセットアソシアティブバンクの特定のセットをルックアップするために利用される。Ｌ２タグ４０２は、Ｌ２キャッシュ１０６の特定のバンクに格納され、各セットに対する８ウェイセットアソシアティブメモリを実装するために、比較を実行するように利用される。Ｌ２ラインオフセット４０８は、Ｌ２キャッシュ１０６のライン内の特定のデータアイテムの位置を決定する。
【００３０】
リバースディレクトリ３０２内のアドレス４００に対して関連するエントリ４３０は、打ち切られたＬ２セットナンバー４２４、Ｌ２ウェイナンバー４２９および有効ビット４２７を含む。打ち切られたＬ２セットナンバー４２４は、Ｌ１キャッシュ１１２内のエントリの位置から決定することができないＬ２セットナンバー４０４の一部を含む。言い換えると、打ち切られたＬ２セットナンバー４２４は、Ｌ２セットナンバー４０４の一部分を含み、Ｌ２セットナンバー４０４の一部分は、Ｌ１セットナンバー４１４と重複しない。Ｌ２ウェイナンバー４２９は、キャッシュ３０４内で、８つの可能なラインのウェイ位置から、ラインの列位置を特定する３ビットインデックスを含む。最後には、有効ビット４２７は、エントリ４３０が有効であるかどうかを指示する。
【００３１】
留意すべきは、Ｌ２キャッシュ１０６内の各ラインに対するＬ１キャッシュ位置を格納する代わりに、示される実施形態は、Ｌ１キャッシュ位置に対するエントリを格納し、各これらのエントリは、Ｌ１位置と関連するＬ２キャッシュ位置を特定することである。
【００３２】
従って、各Ｌ２エントリからＬ１エントリへのポインタをキープする代わりに、各Ｌ１エントリから対応するＬ２エントリディレクトリ３０２への逆方向におけるポインタをキープするので、ディレクトリ３０２は、「リバースディレクトリ」として考え得る。このことは、典型的には、Ｌ２エントリよりもＬ１エントリの方がずっと少ないので、メモリを節約する。
（リバースディレクトリエントリ生成のプロセス）
図５は、本発明の実施形態に従った、リバースディレクトリエントリを生成し、または、アップデートするプロセスを示すフローチャートである。このプロセスは、ラインを取り出す要求が、Ｌ１キャッシュ１１２からＬ２キャッシュ１０６で受信されたとき（ステップ５０２）に開始する。この要求は、アドレス４００、Ｌ１キャッシュ１１２を識別するＬ１キャッシュナンバー、および、ラインが取り出された後に格納されるＬ１キャッシュ１１２内のウェイ位置を含む。
【００３３】
次に、リクエストが、Ｌ２キャッシュ１０６内でミスを生成した場合、システムは、ラインをメモリ１０２からＬ２キャッシュ１０６へ取り出す（ステップ５０４）。この取り出しが発生し、Ｌ２キャッシュ１０６内の存在するエントリが無効にされるべきであれば、次いで、リバースディレクトリ３０２内の対応するエントリは、無効にされなくてはならない。
【００３４】
続いて、システムは、ラインをＬ２キャッシュ１０６から取り出し、そのラインをＬ１キャッシュ１１２へ送信する（ステップ５０６）。
【００３５】
システムはまた、リバースディレクトリ３０２に対するエントリ４３０を構築する（ステップ５０８）。このエントリは、図４を参照して上述されたように、打ち切られたＬ２セットナンバー４２４、Ｌ２ウェイナンバー４２９、および、有効ビット４２７を含む。
【００３６】
続いて、システムは、リバースディレクトリ３０２内のある位置へ、エントリを格納する（ステップ５１０）。この位置は、アイテムのナンバーによって決定される。Ｌ２バンクナンバー４０６から、システムは、Ｌ２バンク２０２を探索することを知る。Ｌ１キャッシュナンバーから、システムは、Ｌ１キャッシュ１１２と関連するブロック３１２を見ることを知る。アドレス４００から、システムは、特定のＬ１セットと関連する行を決定する。要求を受け取ったＬ１ウェイ位置から、システムは、行内の列を決定する。
（リバースディレクトリエントリを利用するプロセス）
図６は、本発明の実施形態に従って、無効化を実行するために、リバースディレクトリエントリを利用するプロセスを示す。システムは、Ｌ２キャッシュ１０６のアップデートを発生させる要求を受信する（ステップ６０２）ことによって、開始する。この要求は、別のプロセッサによる目標エントリにおける格納ヒット、ロードミス、または、格納ミスを含む。
【００３７】
続いて、システムは、リバースディレクトリ３０２内に要求に対するエントリを再構築する。これは、目標エントリが位置するＬ２ウェイナンバー４２９を決定するために、Ｌ２キャッシュ１０６内のルックアップを実行する（ステップ６０４）ことと、図４に示されるようにアドレス４００からＬ２セットナンバー４０４を取り出す（ステップ６０６）ことによって、達成される。これらの値は、リバースディレクトリエントリ１３０を構築するために結合される。
【００３８】
次に、システムは、このエントリを利用して、どのＬ１キャッシュがエントリを含むかを決定するために、リバースディレクトリエントリ３０２を検索する（ステップ６０８）。留意すべきは、システムは、Ｌ２バンクナンバー４０６によって特定されるＬ２キャッシュ２０６のバンクと関連するリバースディレクトリを、検索しなければならないだけであることである。さらに、リバースディレクトリ内のセットナンバーは、アドレスから決定することができ、つまり、検索は、各セットに対する４つの可能な「ウェイ」におけるエントリを考慮しなくてはならないだけである。また留意すべきは、要求が、別のプロセッサによる格納ヒットである場合、システムは、格納ヒットを引き起こしたプロセッサに対するバンクを検索しなくてもよいことである。
【００３９】
エントリを含む各Ｌ１キャッシュに対して、システムは、Ｌ１キャッシュへ無効メッセージを送信する。この無効メッセージは、Ｌ１ウェイナンバーを含み、その結果、Ｌ１キャッシュにおけるアソシアティブルックアップは、回避され得る。システムはまた、対応するリバースディレクトリエントリをアップデートして、そのリバースディレクトリエントリが無効化されたことを指示する（ステップ６１０）。
【００４０】
本発明の実施形態の上述の説明は、図および記載のためにのみ示された。これらは、包括的であり、開示された形式に対して本発明を制限することを、意図されない。従って、多くの改変および変更が、当業者にとって理解される。つまり、上述の開示は、本発明を制限することが意図されない。本発明の範囲は、付属の特許請求の範囲によって定義される。
【図面の簡単な説明】
【００４１】
【図１Ａ】図１Ａは、マルチプロセッサシステムを示す。
【図１Ｂ】図１Ｂは、本発明の実施形態に従った、リバースディレクトリを有するマルチプロセッサシステムを示す。
【図２】図２は、本発明の実施形態に従った、マルチプロセッサシステム内の多重バンクを有するＬ２キャッシュを示す。
【図３】図３は、本発明の実施形態に従った、リバースディレクトリを示す。
【図４】図４は、本発明の実施形態に従った、リバースディレクトリエントリを示す。
【図５】図５は、本発明の実施形態に従った、リバースディレクトリエントリを生成し、アップデートするプロセスを示すフローチャートである。
【図６】図６は、本発明の実施形態に従った、無効化を実行するために、リベースディレクトリエントリを利用するプロセスを示すフローチャートである。
【図１Ａ】
2005509204.tif 000003
【図１Ｂ】
2005509204.tif 000004
【図２】
2005509204.tif 000005
【図３】
2005509204.tif 000006
【図４】
2005509204.tif 000007
【図５】
2005509204.tif 000008
【図６】
2005509204.tif 000009