(57)【特許請求の範囲】
【請求項１】
第１のスレッドで使用されるページディレクトリのベースのアドレスと、第２のスレッドで使用されるページディレクトリのベースのアドレスとを比較し、前記第１のスレッドで使用されるページディレクトリのベースのアドレスが、前記第２のスレッドで使用されるページディレクトリのベースのアドレスと一致するかどうかを決定し、
前記第１のスレッドで使用されるページディレクトリのベースのアドレスが、前記第２のスレッドで使用されるページディレクトリのベースのアドレスと一致する場合に、前記第１のスレッド及び前記第２のスレッドの双方に同一のコンテクスト識別子を割り当て、
前記第１のスレッドで使用されるページディレクトリのベースのアドレスが、前記第２のスレッドで使用されるページディレクトリのベースのアドレスと一致しない場合に、前記第１のスレッド及び前記第２のスレッドに異なるコンテクスト識別子を割り当てることを有する方法。
【請求項２】
プロセッサにより発行された命令に応じて、アドレスを生成するアドレス生成ユニット（ＡＧＵ）と、
複数のキャッシュラインを保存し、前記複数のキャッシュラインのそれぞれは少なくともコンテクスト識別子と、タグと、データブロックとを有するキャッシュと、
前記ＡＧＵに結合され、前記キャッシュに結合され、前記ＡＧＵによって生成されたアドレス部分と、前記複数のキャッシュラインのそれぞれの各タグとを比較する少なくとも１つの比較手段と、
実行中のコンピュータの命令の第１のスレッドに関連付けられたページディレクトリのベースのアドレスを保存する第１のレジスタと、
実行中のコンピュータの命令の第２のスレッドに関連付けられたページディレクトリのベースのアドレスを保存する第２のレジスタと、
前記第１のレジスタと前記第２のレジスタとに結合され、前記第１のレジスタに保存された値と、前記第２のレジスタに保存された値とを比較する他の比較手段と、
少なくとも２つのコンテクスト識別子を生成するコンテクスト識別子生成手段と、
前記コンテクスト識別子生成手段と前記他の比較手段とに結合され、前記少なくとも２つのコンテクスト識別子のうち１つを選択するマルチプレクサと、
前記マルチプレクサに結合され、前記キャッシュに結合され、前記マルチプレクサによって選択されたコンテクスト識別子と、前記複数のキャッシュラインのそれぞれの各コンテクスト識別子とを比較する少なくとも１つの比較手段と、
を有する装置。
【発明の詳細な説明】
【発明の詳細な説明】
【０００１】
［技術分野］
本発明はコンピュータ技術に関する。特に、本発明は、コンピュータ装置のキャッシュメモリの性能を改善することに関する。
［背景技術］
コンピュータメモリの階層内で１つ以上のキャッシュメモリシステムを使用することは、コンピュータの性能を増大させる周知の技術である（例えば、１９９８年Ａｃａｄｅｍｉｃ  ＰｒｅｓによるＨａｎｄｙ，  ＪｉｍのＴｈｅ  Ｃａｃｈｅ  Ｍｅｍｏｒｙ  Ｂｏｏｋを参照）。図１は典型的なキャッシュメモリアレイ１００を示したものである。キャッシュメモリアレイ１００は、キャッシュライン１１０を含む。各キャッシュラインは、タグ１２０とデータブロック１３０とを含む。例示のキャッシュライン１４０は、タグ１５０とデータブロック１６０とを含む。参照番号１７０は、例示のタグ１５０がメインメモリのアドレス１７０の一部であることを示す。メインメモリのアドレス１７０は、データブロック１６０に対応するメインメモリのアドレスである。
【０００２】
プロセッサは、メモリ転送の間、プロセッサの実行コア部とコンピュータメモリの階層との間で、命令とオペランドを往復して転送する。メモリ転送の例は、メモリの階層からプロセッサに命令／オペランドをロードし、プロセッサからメモリの階層に命令／オペランドを保存することである。メモリ転送の間、プロセッサはメインメモリのアドレスを生成する。メインメモリのアドレスの一部が、キャッシュ検索の間にタグ１２０のエントリと比較され、キャッシュメモリ１００が、メモリ転送に対応するエントリを有するかどうか決定する。タグ１５０とメインメモリのアドレス１７０との間の関係によって示される通り、キャッシュ検索の処理は、プロセッサが各メインメモリのアドレスの一部のみとタグの各エントリとを比較することを求めることによって加速される。一般的に、キャッシュメモリはプロセッサにより生成された各リニアアドレスの一部を用いて、キャッシュアレイ１００に保存されるデータに索引を付ける。
【０００３】
スレッドは、コンピュータプログラムの他の部分と関係なく実行し得るコンピュータプログラムの一部である。複数のスレッドがプロセッサで同時に実行されると、プロセッサの性能は高められ得る。複数のスレッドの多様な命令の間の依存関係が検出され、適切に管理されると、複数のスレッドの同時の実行が可能になる。
【０００４】
図２は、多くのＩｎｔｅｌ（商標）プロセッサが、仮想メモリ環境を使用して、多くのリニアアドレス空間が小さい量の物理メモリ（例えば、ランダムアクセスメモリ）によって対応可能にする方法を示したものである。メモリ転送の間、プロセッサはリニアアドレス２１０を生成する。リニアアドレス２１０は、ディレクトリ領域２２０と、テーブル領域２２５と、オフセット領域２３０とを有する。ページディレクトリ２３５のベースは、制御レジスタＣＲ３２４０に含まれる。リニアアドレス２１０のディレクトリエントリ２２０は、制御レジスタＣＲ３２４０に含まれる値へのオフセットを与える。ページディレクトリは、ページ領域のベースポインタ２４５を含む。テーブル領域２２５は、ページテーブルのベースポインタ２４５に結びつけられたオフセットを備え、物理アドレス２５５を含むページのベースを識別する。オフセット領域２３０は、ページテーブルのエントリと結びつけられ、物理アドレス２５５を識別する。
【０００５】
図３は、一部のメインメモリのアドレスのみのキャッシュ検索を実行することに関する欠点を示したものである。プロセッサ（図示なし）は、ロード命令ＬＤ０とＬＤ１に応じて、リニアアドレス３０４と３０６とを生成する。３０５と３０７は、キャッシュ検索を実行するために用いられる各アドレスの一部を示したものである。３０５と３０７が同一に見えるが、それぞれ３０４と３０６の一部にしか過ぎない。３０４と３０６は、各アドレスがそれぞれのディレクトリ領域（３２０と３２５）とオフセット領域（３３０と３３５）に異なるエントリを有するため、２つの異なる物理アドレスに位置する。図３の通り、プロセッサが複数のスレッドの同時実行に対応する場合は、追加の複雑な状態が持ち込まれる。スレッド０とスレッド１は、それぞれのページディレクトリ（３４０と３４５）のベースに異なる値を有し得る。従って、３０４と３０６が同じであっても、それらは２つの異なる物理アドレスに位置する。
［詳細な説明］
本発明は例示の目的で示され、限定の目的で示されるのではない。添付の図面の図において、類似の参照番号は類似の要素を参照する。
【０００６】
本願でキャッシュメモリのコンテクスト識別子の使用について説明される。以下の説明において、本発明の実施例の十分な理解を提供するため、多数の特定の詳細が提供される。しかし、関連技術に熟練した人は、１つ以上の特定の詳細を用いずに、又は他の方法や、構成要素や、材料等を用いて、本発明が実行され得ることがわかるだろう。他の場合において、本発明の形態を不明確にすることを回避するために、周知の構造や、材料や、動作が、詳細に示されない、又は説明されない。
【０００７】
本明細書を通じて、“一実施例”又は“実施例”への言及は、本発明に関連して説明される特定の機能又は構造又は特徴が、本発明の少なくとも１つの実施例に含まれることを意味する。従って、本明細書を通じて多様な場所における“一実施例において”又は“実施例において”という語句が現れることは、必ずしも全てが同じ実施例を参照するのではない。さらに、特定の機能又は構造又は特徴は、１つ以上の実施例において、何らかの適当な方法と組み合わせられ得る。
【０００８】
キャッシュメモリシステムは、タグと呼ばれるリニアアドレスの一部でキャッシュラインに索引を付ける。プロセッサは、メモリ転送動作の間にリニアアドレスを生成する。キャッシュ検索の間に、前記リニアアドレスの一部がタグと比較される。多くのＩｎｔｅｌ（商標）プロセッサは、一部のアドレスとタグとの間の見かけ上の一致が真の一致であることを確保する仕組みを提供する。前記仕組みは、ヒット／ミス決定手段と呼ばれる。ヒット／ミス決定手段は、キャッシュメモリのキャッシュ検索処理と同時に動作する。前記ヒット／ミス決定手段は、発行された命令に関連付けられたリニアアドレスを、対応する物理アドレスに変換し、前記一部のリニアアドレスと一致するタグに関連付けられた完全なアドレスと、物理アドレスとを比較する。前記ヒット／ミス決定手段は、リニアアドレスを物理アドレスに変換しなければならないため、及び、完全なアドレスの比較を実行するため、前記ヒット／ミス決定手段はキャッシュメモリよりかなり遅い。キャッシュメモリが誤った一致を引き起こすことを前記ヒット／ミス決定手段が検出すると、前記ヒット／ミス決定手段はキャッシュメモリによって行われた誤りを訂正する。キャッシュメモリで誤った一致によって持ち込まれた誤りを検出し、それに対応する処理は、プロセッサの性能を低下し得る。
【０００９】
図４Ａは、コンテクスト識別子を組み込んだキャッシュメモリアレイの一実施例を示したものである。キャッシュメモリアレイ４００は、複数のキャッシュライン４１０を含む。各キャッシュライン４１０は、コンテクスト識別子４０５と、タグ４２０と、データブロック４３０とを含む。従って、キャッシュライン４４０Ａは、コンテクスト識別子４１５Ａとタグ４５０Ａとを含む。同様に、キャッシュライン４４０Ｂは、コンテクスト識別子４１５Ｂとタグ４５０Ｂとを含む。２つの異なるスレッドがコンテクスト識別子４１５Ａと４１５Ｂとを生成する。
【００１０】
リニアアドレス４０７Ａと４７０Ｂがタグ４５０Ａと４５０Ｂとに対応する。図４Ａと４Ｂにおいて、リニアアドレスはコンテクスト識別子を含み、類似のリニアアドレスの間を識別するためのコンテクスト識別子の用い方について示す。コンテクスト識別子は、リニアアドレスの一部ではないが、前記リニアアドレスと別に生成される。
【００１１】
先行技術に従って実現されたキャッシュメモリシステムは、プロセッサ（図示なし）によって生成された一部のリニアアドレスと、キャッシュアレイ４００の各タグ４２０とを比較することによってキャッシュ検索を行う。プロセッサが、１２３という一部のリニアアドレスを生成した場合は、前記アドレスは、タグ４５０Ａとタグ４５０Ｂとの双方に一致する。前述の通り、ヒット／ミス決定手段は、どちらのキャッシュラインが前記プロセッサにより生成されたメインメモリのアドレスに一致するかどうかを最終的に決定する。先行技術のシステムは、前記ヒット／ミス決定手段が一部のリニアアドレスとタグ４２０との間の誤った一致を管理して訂正する場合に、性能の不利を受ける。
【００１２】
図４Ｂは、前記プロセッサにより生成された一部のリニアアドレスとタグ４２０との間の誤った一致の頻度を減少させるコンテクスト識別子の使用を示したものである。リニアアドレス４７０Ａと４７０Ｂは、図４Ａのキャッシュライン４４０Ａと４４０Ｂに関連付けられる。発行された命令に応じて、アドレス４７５がプロセッサによって生成される。アドレス４７５は、コンテクスト識別子４８０と一部のリニアアドレス４８５とを含む。一部のリニアアドレス４８５がタグ４５０Ｂと一致するため、先行技術のキャッシュは４７５と４７０Ｂとの間の誤った一致を識別する場合がある。一実施例において、コンテクスト識別子４８０がコンテクスト識別子４１５Ｂと比較される。また、一実施例において、一部のリニアアドレス４８５がタグ４５０Ｂと比較される。従って、コンテクスト識別子４８０がコンテクスト識別子４１５Ｂと一致しないため、キャッシュアレイ４００は４７５と４７０Ｂとの間の誤った一致を見つけない。
【００１３】
図５は、ページミスハンドラー（ＰＭＨ）の一部の一実施例を示したものである。一実施例において、ＰＭＨ５００は、コンテクスト識別子の割り当てを生成し、制御する。ＰＭＨ５００は、コンテクスト識別子生成手段５１０と、比較手段５２０と、コンテクスト識別子マルチプレクサ５３０と、インバーター５４０とを含む。一実施例において、コンテクスト識別子生成手段５１０は、現在実行するスレッドに対応する１ビットのバイナリ番号を生成する。本発明の他の実施例において、コンテクスト識別子生成手段５１０は、１ビット以上のバイナリ番号を生成する。比較手段５２０は、プロセッサで実行する２つのスレッドにより用いられるページディレクトリのベースのアドレスを比較する。異なる実施例において、コンテクスト識別子は２つ以上のビットを有する。
【００１４】
一実施例によると、ＰＭＨ５００は、同じコンテクスト識別子が２つの異なるスレッドの命令に割り当てられているかどうかを決定する。図５に示される実施例では、ＰＭＨ５００は、前記プロセッサで実行する第１のスレッドに第１のコンテクスト識別子を割り当てる。例えば、スレッド０が前記プロセッサで実行する前記第１のスレッドである場合は、前記プロセッサは、スレッド０のコンテクスト識別子として０を割り当て得る。コンテクスト識別子は、スレッド番号と一致する必要はない。従って、スレッド０は１又は０のコンテクスト識別子を有し得る。本発明の他の実施例において、プロセッサは２以上のスレッドの命令を実行し、１ビット以上のコンテクスト識別子が使用される。
【００１５】
第２のスレッドがプロセッサで実行し始めると（例えば、スレッド１）、ＰＭＨ５００は、前記第２のスレッドの命令に、スレッド０の命令に割り当てられたコンテクスト識別子と異なるコンテクスト識別子を割り当てるかどうかを決定する。スレッド０とスレッド１がメインメモリの同じページを使用することが可能である。その場合は、リニアアドレスがタグと同じページに位置することが知られている場合に、タグとリニアアドレスの間の誤った一致があまり生じないため、同じコンテクスト識別子を２つのスレッドの命令に割り当てることが望ましい。比較手段５２０は、２つのスレッドにより用いられるページディレクトリのベースを比較することにより、スレッド０とスレッド１がメインメモリで同じページを使用しているかどうかを決定する。
【００１６】
スレッド０とスレッド１が、それぞれのページディレクトリのベースとして、同じアドレスを使用している場合、マルチプレクサ５３０は、スレッド０に選択されたものと同じコンテクスト識別子をスレッド１にも選択する。逆に言えば、スレッド０とスレッド１がページディレクトリのベースに同じアドレスを使用していないことを比較手段５２０が示すと、マルチプレクサ５３０は、スレッド１のコンテクスト識別子として、インバーター５４０の出力を選択する。２つのスレッドが同じコンテクスト識別子を共有するかどうかを決定することは、異なる方法で実現され得る。例えば、本発明の実施例においては、２つのスレッドが同じコンテクスト識別子を共有しているかどうかをオペレーティングシステムが決定し、プロセッサに正しいコンテクスト識別子を明示的に知らせ、スレッドに関連づける。本発明の更に他の実施例においては、スレッドのメモリアクセスの傾向を学習する予測手段が、コンテクスト識別子を予測する。一実施例によると、２つの異なるスレッドの命令に同じ値を常に選択するように、又は２つの異なるスレッドの命令に異なるコンテクスト識別子の値を常に選択するようにユーザがＰＭＨ５００に指示し得る。また、ある実施例においては、ベースディレクトリのアドレスの他に追加の基準を使用し、２つのスレッドが同じコンテクスト識別子を共有するかどうかを決定する。
【００１７】
本発明の他の実施例において、前記プロセッサに２つ以上のスレッドが存在する。前記プロセッサにｎ個のスレッドが存在する実施例においては、前記コンテクスト識別子は、ｎ個の異なるコンテクスト識別子が特定されることを可能にするエンコードの仕組みまで拡張される。ｎビットのコンテクスト識別子が使用される場合は、単一のビットがキャッシュに位置されるのと同じ方法でｎビットがキャッシュに位置されることが、その技術に通常熟練した人はわかるだろう。また、２つの単一のビットのコンテクスト識別子を比較するのとほぼ同じ方法で、ｎビットのコンテクスト識別子をお互いに比較することが行われ得ることが、その技術に通常熟練した人はわかるだろう。
【００１８】
複数のスレッドを備える本発明の実施例は、未使用のコンテクスト識別子のプールを使用する。スレッドがページテーブルのベース（ＣＲ３）を変更すると、他のアクティブなスレッドで使用されるページテーブルのベースの値、又は前記プールのコンテクスト識別子の何らかの有効なページテーブルのベースの値と新しい値が比較される。一致している場合には、前記一致を引き起こしたスレッドのコンテクスト識別子の値が取られる。他のアクティブなスレッドと一致しない場合には、前記プールから未使用のコンテクスト識別子が取られる。スレッドがページのベースの値を変更する場合、又は所定のコンテクスト識別子を備えたキャッシュの最後のラインが割り当てを外される場合に、コンテクスト識別子は未使用のプールに戻される。後者の構成は、以前のスレッドに持ち込まれたデータでスレッドがヒットすることを可能にする。スレッドのコンテクスト識別子の値を予測する多くの仕組みが使用され得ることが、その技術に通常熟練した人はわかるだろう。
【００１９】
図６は、コンテクスト識別子を有するキャッシュメモリシステムからの読み取りを示したものである。キャッシュアレイ６１０は、キャッシュライン６０５を含む。各キャッシュライン６０５は、コンテクスト識別子６１０Ａと、タグ６１０Ｂと、データブロック６１０Ｃとを含む。キャッシュアレイ６１０はキャッシュコントローラ６２０に結合される。キャッシュコントローラ６２０は、キャッシュアレイ６１０に含まれるデータへのアクセスを制御する。
【００２０】
キャッシュコントローラ６２０は、ヒット／ミス決定手段６７０及び比較手段６７５と８０に結合される。ヒット／ミス決定手段６７０及び比較手段６７５と６８０の動作は、以下に説明する。一実施例において、比較手段６７５はＡＧＵ６３０とＡＮＤゲート６８５とに結合される。ＡＧＵ６３０は、メモリ転送を必要とする発行された命令（例えば、ロードと保存の命令）のためのリニアアドレスを生成する。一実施例において、比較手段６８０は、マルチプレクサ６５０を通して、ＡＮＤゲート６８５とＰＭＨ６４０とに結合する。ＰＭＨ６４０は、どのコンテクスト識別子がどの発行された命令に割り当てられるかを決定するために用いられる制御ロジックを含む。
【００２１】
一般的に、読み取り周期は、発行されたロード命令（ＬＤ）６６０によって開始される。ＬＤ６６０は、ＰＭＨ６４０とＡＧＵ６３０とに送信される。特に、ＰＭＨ６４０はどのスレッドがＬＤ６６０の出所であるかを決定する。ＰＭＨ６４０は、一つには、どのスレッドがＬＤ６６０の出所であるかに基づいて、ＬＤ６６０にコンテクスト識別子を割り当てる。ＰＭＨ６４０は、ＬＤ６６０に関連付けられたコンテクスト識別子を、マルチプレクサ６５０を通して、比較手段６８０に発行する。同様に、ＡＧＵ６３０は、一部のリニアアドレスを比較手段６７５に発行する。
【００２２】
比較手段６７５と６８０は前記一部のリニアアドレスとＬＤ６６０のコンテクスト識別子とを用い、ＬＤ６６０が必要とする情報をどのキャッシュアレイ６１０が含むかを決定する。キャッシュアレイ６１０が必要な情報を含む場合、キャッシュヒットが結果として生じる。キャッシュアレイ６１０が必要な情報を含まない場合、キャッシュミスが結果として生じる。
【００２３】
特定のキャッシュラインが、ＬＤ６６０のコンテクスト識別子に一致するコンテクスト識別子と、ＬＤ６６０に対応する一部のリニアアドレスに一致するタグとを含むことを、キャッシュヒットは要求する。比較手段６７５と６８０は、各キャッシュラインのタグ領域及びコンテクスト識別子領域と、ＬＤ６６０のコンテクスト識別子及び一部のリニアアドレスとを比較する。一実施例によると、比較が単一の平行動作で行われ得るように、キャッシュラインと同じだけの比較手段が存在する。単一のキャッシュラインが，
ＬＤ６６０のコンテクスト識別子及び一部のリニアアドレスに一致するコンテクスト識別子及びタグを含む場合、ＡＮＤゲート６８５がキャッシュヒットの信号を出す。しかし、比較手段６７５がＬＤ６６０のアドレスの一部のみと、キャッシュアレイ６１０Ａの各タグとを比較すると、キャッシュヒットが誤った一致に基づくという可能性が存在する。
【００２４】
ヒット／ミス決定手段６７０は、キャッシュヒットが誤った一致に基づくかどうかを検出する。ヒット／ミス決定手段は、ＬＤ６６０が命令／オペランドを要求するメインメモリの位置の完全なリニアアドレスを受信する。一実施例によると、ヒット／ミス決定手段６７０は、ＡＧＵによってそれに伝達されるリニアアドレスを物理アドレスに変換する。ヒット／ミス決定手段６７０は、ＬＤ６６０の一部のリニアアドレスに一致するタグに対応する物理アドレスを決定する。ヒット／ミス決定手段６７０は、完全な物理アドレスを比較し、キャッシュヒットが誤った一致に基づくかどうか決定する。
【００２５】
図７は、コンテクスト識別子を用いたキャッシュメモリへの書き込みを示したものである。キャッシュアレイ７１０は複数のキャッシュライン７０５を含む。各キャッシュライン７０５はコンテクスト識別子７１０Ａと、タグ７１０Ｂと、データブロック７１０Ｃとを含む。キャッシュアレイ７１０は、キャッシュコントローラに結合される。キャッシュコントローラ７２０は、どのキャッシュラインにデータのブロックが書き込まれるかを決定することを含む複数の機能を実行する。キャッシュコントローラ７２０は、マルチプレクサ７５０を通してＡＧＵ７３０とＰＭＨ７４０とに結合される。
【００２６】
発行された命令７６０がプロセッサ（図示なし）からＰＭＨ７４０とＡＧＵ７３０とに送信される。一実施例において、発行された命令７６０がメモリ転送を要求する場合に、ＡＧＵ７３０はリニアアドレスを生成する。ＡＧＵ７３０は、概してプロセッサの実行コアの一部である。他の実施例において、ＡＧＵ７３０は物理アドレスを生成し得る。一実施例において、ＰＭＨ７４０は、マルチプレクサ７５０を制御する少なくとも２つのコンテクスト識別子と制御信号とを生成する。他の実施例において、ＰＭＨ７４０は何からの数のコンテクスト識別子を生成し得る。
【００２７】
一般的に、書き込み周期は、発行された保存命令（ＳＴ）（例えば、ＳＴ７６０）によって開始される。ＳＴ７６０は、ＰＭＨ７４０とＡＧＵ７３０とに送信される。ＰＭＨ７４０は、どのスレッドがＳＴ７６０の出所であるか決定する。ＰＭＨ７４０は、どのコンテクスト識別子がＳＴ７６０に割り当てられるかを更に決定する。一実施例によると、ＰＭＨ７４０は、３つの動作モード：ＯＦＦとＮＯＮ−ＳＨＡＲＥＤとＡＤＡＰＴＩＶＥを有する。ＰＭＨ７４０がＯＦＦモードで動作している場合、ＰＭＨ７４０は、各コンテクスト識別子に同じ値を書き込み得る。スレッドがキャッシュラインに保存されたコンテクスト識別子と同じコンテクスト識別子を有する場合、２つ以上のスレッドの命令によってキャッシュラインが共有される。
【００２８】
ＮＯＮ−ＳＨＡＲＥＤモードで動作する場合、ＰＭＨ７４０は発行された命令を含むスレッドに特有のコンテクスト識別子を割り当て得る。一実施例において、ＡＤＡＰＴＩＶＥモードにより、異なるスレッドから生じる同じ又は異なるコンテクスト識別子を割り当てるかどうかをＰＭＨ７４０が動的に判断することが可能になる。一実施例において、スレッドがページディレクトリのベースに同じアドレスを共有する場合は、ＰＭＨ７４０は、スレッドに含まれる命令に同じコンテクスト識別子を動的に割り当てる。ある実施例においてそうでない場合は、ＰＭＨ７４０は、スレッドに含まれる命令に異なるコンテクスト識別子を動的に割り当てる。
【００２９】
一実施例において、２つの異なるスレッドの命令に同じコンテクスト識別子を書き込むかどうか決定する場合に、ＰＭＨ７４０は、コンピュータがマルチスレッドのモードにあるかどうかと、ページングが可能かどうかとを検討する。発行された命令に割り当てられるコンテクスト識別子の値を決定するために、いくつかの基準が用いられ得る。更に、コンテクスト識別子生成手段と、関連する制御ロジックとが、電子システム内の複数の場所に配置され得る。そして、それらはＰＭＨ又は類似のユニットに含まれる必要はない。
【００３０】
ＰＭＨ７４０は、ＳＴ７６０に適切なコンテクスト識別子を、マルチプレクサ７５０を通してキャッシュコントローラ７２０に送信する。ＡＧＵ７３０はＳＴ７６０Ａがデータを保存するために探すメインメモリの場所に対応したリニアアドレスを生成する。ＡＧＵ７３０は、キャッシュコントローラ７２０とヒット／ミス決定手段７７０にＳＴ７６０に対応するリニアアドレスを提供する。キャッシュコントローラ７２０は、どのキャッシュラインがＳＴ７６０のデータを保存するために使用されるかを決定するキャッシュライン交換方法を用いる。キャッシュライン交換方法は、その技術において周知である（キャッシュライン交換方法のより詳細な説明は、１９９８年Ａｃａｄｅｍｉｃ  ＰｒｅｓｓによるＨａｎｄｙ，  ＪｉｍのＴｈｅ  Ｃａｃｈｅ  Ｍｅｍｏｒｙ  Ｂｏｏｋを参照）。
【００３１】
適切なキャッシュラインを選択した後、キャッシュコントローラ７２０は前記選択されたキャッシュライン７８０のコンテクスト識別子領域７８０Ａに、コンテクスト識別子を書き込む。キャッシュコントローラ７２０は、キャッシュライン７８０のタグ領域７８０ＢにＳＴ７６０のリニアアドレスの一部を書き込む。一実施例において、前記タグは、３２ビットリニアアドレスの２３から１２ビットを有する。前記タグに使用され得るアドレスビットの多くの組み合わせが存在する。キャッシュコントローラは、選択されたキャッシュライン７８０のデータブロック領域７８０ＣにＳＴ７６０に関連付けられたデータを書き込む。
【００３２】
キャッシュ管理は、電子的にアクセス可能な媒体からの命令によって制御され得る。それは、本願で説明した処理を実行するコンピュータ（又は他の電子装置）をプログラムするために用いられ得る。電子的にアクセス可能な媒体は、フロッピー（登録商標）ディスクや、光ディスクや、ＣＤ−ＲＯＭや、光磁気ディスクや、ＲＯＭや、ＲＡＭや、ＥＰＲＯＭや、ＥＥＰＲＰＯＭや、磁気カード又は光カードや、フラッシュメモリや、電子命令を保存するのに適した他の形式の媒体／機械が読み取り可能な媒体を含むが、それに限定されない。さらに、前記命令はまた、コンピュータプログラム製品としてダウンロードされ得る。前記プログラムは、通信リンク（例えば、モデム又はネットワーク接続）を介して搬送波又は他の伝播媒体に組み込まれたデータ信号を用いて、リモートコンピュータから要求中のコンピュータに転送され得る。
【００３３】
本発明の示された実施例の前述の説明は、網羅的にすることを意図するものではなく、また、開示された正確な形式に本発明を限定することを意図するものではない。本発明の特定の実施例及び例は、説明の目的で本願において開示されるが、関連技術に熟練した人がわかるように、本発明の範囲ないで多様な同等の改良が可能である。
【００３４】
前記改良は、前述の詳細な説明を踏まえて行われ得る。特許請求の範囲で使用される用語は、明細書及び特許請求の範囲で開示された特定の実施例に本発明を限定するために解釈されるべきではない。むしろ、本発明の範囲は、特許請求の範囲によって完全に決定されるべきであり、特許請求の範囲の解釈の確立した原理に従って解釈されるべきである。
【図面の簡単な説明】
【００３５】
【図１】先行技術のキャッシュメモリアレイの図である。
【図２】リニアアドレスを物理アドレスに位置付ける概念図である。
【図３】２つの異なる物理アドレスに位置する２つの類似のタグの概念図である。
【図４Ａ】コンテクスト識別子を用いたキャッシュメモリアレイの一実施例の図である。
【図４Ｂ】コンテクスト識別子の一実施例の概念図である。
【図５】コンテクスト識別子生成手段と関連する制御回路の一実施例の簡略化したブロック図である。
【図６】キャッシュメモリシステムの一実施例のブロック図である。
【図７】キャッシュメモリシステムの一実施例のブロック図である。
【図１】
0004459628.tif 000002
【図２】
0004459628.tif 000003
【図３】
0004459628.tif 000004
【図４Ａ】
0004459628.tif 000005
【図４Ｂ】
0004459628.tif 000006
【図５】
0004459628.tif 000007
【図６】
0004459628.tif 000008
【図７】
0004459628.tif 000009