(57)【要約】キャッシュラインサイズが異なる、第一レベルキャッシュ（１０１）と第二レベルキャッシュ（１３０）を備えたマイクロプロセッサ（１００）である。マイクロプロセッサ（１００）は命令を実行するように構成されている実行ユニット（１２４）と、実行ユニットに結合されているキャッシュサブシステムを備えている。キャッシュサブシステムは、各々が第一のバイト数のデータを有す、第一の複数のキャッシュラインを格納するように構成されている。キャッシュサブシステムはまた、第一キャッシュメモリ（１０１）に結合され、かつ、各々が第二のバイト数のデータを有す、第二の複数のキャッシュラインを格納するように構成されている、第二キャッシュメモリ（１３０）を備えている。各第二の複数のキャッシュラインは、各々が第一のバイト数のデータを有する、対応する複数のサブラインを備えている。
2006517040.tif 000002
【特許請求の範囲】
【請求項１】
マイクロプロセッサであって、
命令を実行するように構成されている実行ユニットと、
前記実行ユニットに結合されているキャッシュサブシステムを備えており、前記キャッシュサブシステムは、
各々が第一のバイト数のデータを持つ、第一の複数のキャッシュラインを格納するように構成されている第一のキャッシュメモリと、
前記第一のキャッシュメモリに結合され、かつ、各々が第二のバイト数のデータを持つ、第二の複数のキャッシュラインを格納するように構成されている第二のキャッシュメモリを備え、前記第二の複数のキャッシュラインの各々が、前記第一のバイト数のデータをそれぞれ持つ、対応する複数のサブラインを備えている、マイクロプロセッサ。
【請求項２】
前記第一キャッシュメモリのキャッシュミス、及び前記第二キャッシュメモリのキャッシュヒットに応じて、それぞれのデータのサブラインが、所定のクロックサイクルで、前記第二キャッシュメモリから前記第一キャッシュメモリへ転送される、請求項１記載のマイクロプロセッサ。
【請求項３】
前記第一キャッシュメモリのキャッシュミス、及び、前記第二キャッシュメモリのキャッシュミスに応じて、それぞれのデータの第二のキャッシュラインが、所定のクロックサイクルで、システムメモリから前記第二キャッシュメモリへ転送される、請求項１記載のマイクロプロセッサ。
【請求項４】
前記第一のバイト数のデータが、前記第二キャッシュメモリから、前記第一キャッシュメモリへ転送されることに応じて、所定の前記第一の複数のキャッシュラインの１つが、所定のクロックサイクルで、前記第一のキャッシュメモリから前記第二キャッシュメモリへ転送される、請求項１記載のマイクロプロセッサ。
【請求項５】
前記第一キャッシュメモリが、複数のタグを備えており、各々が、前記第一の複数のキャッシュラインのそれぞれの１つに対応する、請求項１記載のマイクロプロセッサ。
【請求項６】
前記第一キャッシュメモリが、複数のタグ備えており、各タグが前記第一の複数のキャッシュラインのグループのそれぞれに対応する、請求項１記載のマイクロプロセッサ。
【請求項７】
前記複数のタグの各々が、複数の有効ビットを含み、各有効ビットが前記第一の複数のキャッシュラインの、前記それぞれのグループの前記キャッシュラインの１つに対応する、請求項６記載のマイクロプロセッサ。
【請求項８】
コンピュータシステムであって、
命令及びデータを格納するように構成されているシステムメモリと、
前記メモリシステムに結合されているマイクロプロセッサを備えており、前記マイクロプロセッサは、
前記命令を実行するように構成されている実行ユニットと、
前記命令ユニットに結合されているキャッシュサブシステムを備えており、前記キャッシュサブシステムは、
各々が第一のバイト数のデータを持つ、第一の複数のキャッシュラインを格納するように構成されている第一キャッシュラインと、
前記第一キャッシュメモリに結合されるとともに、各々が第二のバイト数のデータを持つ第二の複数のキャッシュラインを格納するように構成されている第二のキャッシュメモリを備えており、前記第二の複数のキャッシュラインの各々が、前記第一のバイト数のデータを持つ、それぞれの複数のサブラインを備えている、コンピュータシステム。
【請求項９】
マイクロプロセッサにデータをキャッシュする方法であって、前記方法は、
各々が第一のバイト数のデータを第一のキャッシュメモリに有している、第一の複数のキャッシュラインを格納するステップと、
各々が第二のバイト数のデータを第二のキャッシュメモリに有している、第二の複数のキャッシュラインを格納するステップとを有し、各前記第二の複数のキャッシュラインが、各々が前記第一のバイト数のデータを持つ、それぞれの複数のサブラインを備えている、方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はマイクロプロセッサ分野に関し、更に具体的には、マイクロプロセッサ内のキャッシュメモリサブシステムに関する。
【背景技術】
【０００２】
典型的なコンピュータシステムは、１つ以上のシステムメモリへ接続されている１つ以上のマイクロプロセッサを備えうる。プロセッサはコードを実行し、システムメモリ内に格納されているデータでオペレーションを行う。本明細書に用いられているように、“プロセッサ”という用語は、マイクロプロセッサという用語と同義語である。命令やデータのフェッチや格納を容易にするために、一般に、プロセッサはある種のメモリシステムを採用している。更に、システムメモリへのアクセスを促進するために、１つ以上のキャッシュメモリがメモリシステムに含まれうる。例えば、マイクロプロセッサの中には、１以上のレベルのキャッシュメモリで実装されているものもある。典型的なマイクロプロセッサでは、レベル１（Ｌ１）キャッシュ、及びレベル２（Ｌ２）キャッシュが使用され、一方で、新たなプロセッサでは、レベル３（Ｌ３）キャッシュが用いられうるものもある。多くのレガシープロセッサ（legacy processors）では、Ｌ１キャッシュがオンチップを備えうるとともに、Ｌ２キャッシュがオフチップを備えうる。しかしながら、メモリアクセス時間を更に向上させるために、新たなプロセッサはオンチップＬ２キャッシュを用いているものが多い。
【０００３】
概して、Ｌ２キャッシュはＬ１キャッシュよりも大きく、かつ、遅い。更に、多くの場合、Ｌ２キャッシュは統合キャッシュとして実装されており、一方で、Ｌ１キャッシュは別々の命令キャッシュ及びデータキャッシュとして実装されうる。Ｌ１データキャッシュは、マイクロプロセッサに実行中のソフトウエアが、直前に読出しあるいは書込みをしたデータを保持するために用いられる。Ｌ１命令キャッシュは、Ｌ１データキャッシュが直前に実行した命令を保持する、という点を除いて、Ｌ１データキャッシュに類似している。便宜上、Ｌ１命令キャッシュ及びＬ１データキャッシュが適宜、単にＬ１キャッシュと称されうる。Ｌ２キャッシュはＬ１キャッシュに適応しない命令やデータを保持するために用いられうる。Ｌ２キャッシュは排他的（例：Ｌ１キャッシュにない情報を格納する）、あるいは包括的でありうる（例：Ｌ１キャッシュにある情報のコピーを格納する）。
【０００４】
キャッシュ可能メモリへ読出しあるいは書込みをする間、まずＬ１キャッシュがチェックされ、リクエストされている情報（例：命令あるいはデータ）が得られるかどうかが判断される。情報が得られる場合はヒットし、得られない場合はミスする。ミスすると、Ｌ２キャッシュがチェックされる。従って、Ｌ１キャッシュでミスし、Ｌ２キャッシュでヒットする場合、情報がＬ２キャッシュからＬ１キャッシュへ転送されうる。以下に説明しているように、一般に、Ｌ２キャッシュとＬ１キャッシュとの間に転送される情報量がキャッシュラインである。更に、利用可能なＬ１キャッシュのスペースに応じて、新たなキャッシュライン用のスペースを作るために、キャッシュラインがＬ１キャッシュから追い出され、その後、Ｌ２キャッシュに格納されうる。従来のプロセッサの中には、このキャッシュラインの“スワップ”中に、Ｌ１キャッシュまたはＬ２キャッシュのいずれにも、他のアクセスができないものもある。
【０００５】
一般にメモリシステムは、正確なデータが確実にリクエスタに提供されるように、ある種のキャッシュコヒーレンスメカニズム(cache coherence mechanism)を用いている。一般にキャッシュコヒーレンスメカニズムは、シングルリクエストに転送されるデータサイズを、コヒーレンスユニット(unit of coherence)として用いる。コヒーレンスユニットは一般にキャッシュラインと称される。プロセッサの中には、例えば所定のキャッシュラインが６４バイトのものもあり、一方で、別のプロセッサは３２バイトのキャッシュラインを採用しているものもある。また別のプロセッサでは、別のバイト数がシングルキャッシュラインに含まれうる。リクエストがＬ１キャッシュやＬ２キャッシュにおいてミスすると、１ワードたけのリクエストであっても、キャッシュライン全体の多くのワードが、メインメモリからＬ２やＬ１キャッシュへ転送される。同様に、１ワードに対するリクエストが、Ｌ１キャッシュでミスし、Ｌ２キャッシュでヒットすると、リクエストされたワードを含むＬ２キャッシュライン全体が、Ｌ２キャッシュからＬ１キャッシュへ転送される。従って、それぞれのキャッシュラインに満たないデータユニットに対するリクエストによって、Ｌ２キャッシュとＬ１キャッシュとの間でキャッシュライン全体の転送を生じさせうる。一般にそのような転送は、完了するまでに複数のサイクルが要求される。
【発明の開示】
【０００６】
キャッシュラインサイズが異なる、第一レベルキャッシュ及び第二レベルキャッシュを備えたマイクロプロセッサの、様々な実施形態が開示されている。一実施形態では、マイクロプロセッサは、命令を実行するように構成されている実行ユニット、及び実行ユニットに結合されているキャッシュサブシステムを備えている。キャッシュサブシステムは、各々が第一のバイト数のデータを持つ、第一の複数のキャッシュラインを格納するように構成されている、第一キャッシュメモリを備えている。キャッシュサブシステムはまた、第一キャッシュメモリに結合され、各々が第二のバイト数のデータを持つ、第二の複数のキャッシュラインを格納するように構成されている、第二キャッシュメモリを備えている。各第二の複数のキャッシュラインは、各々が第一のバイト数のデータを持つ、対応する複数のサブラインを備えている。
【０００７】
具体的な一実施形態では、第一キャッシュメモリのキャッシュミス、及び第二キャッシュメモリのキャッシュヒットに対応して、それぞれのデータのサブラインが、所定のクロックサイクルで、第二キャッシュメモリから第一キャッシュメモリへ転送される。
【０００８】
別の具体的な実施形態では、第一キャッシュメモリは、複数のタグを備えている。該タグは、各々が第一の複数のキャッシュラインのそれぞれの１つに対応するものである。
【０００９】
更に別の具体的な実施形態では、第一キャッシュメモリは複数のタグを備えており、また、各タグは、第一の複数のキャッシュラインの、それぞれのグループに対応する。更に、複数のタグの各々は、複数の有効ビットを有している。各有効ビットは、第一の複数のキャッシュラインのそれぞれのグループのキャッシュラインの１つと対応する。
【００１０】
また更に別の具体的な実施形態では、第一キャッシュメモリはＬ１キャッシュメモリであり、また、第二キャッシュメモリはＬ２キャッシュメモリである。
【００１１】
本発明は、様々な改良を行い、また、他の形態で実施することができるが、ここに説明されている特定の実施例は、例示として示したものであり、以下にその詳細を記載する。しかし当然のことながら、ここに示した特定の実施例は、本発明を開示されている特定の形態に限定するものではなく、むしろ本発明は添付の請求項によって規定されている発明の範疇に属する全ての改良、等価物、及び変形例をカバーするものである。
【発明を実施するための最良の形態】
【００１２】
図１を参照すると、典型的なマイクロプロセッサ１００の一実施形態のブロック図が示されている。マイクロプロセッサ１００は、システムメモリ（図示せず）に格納されている命令を実行するように構成されている。これらの命令の多くは、同様にシステムメモリに格納されているデータを処理する。システムメモリはコンピュータシステム全体に、物理的に配置されており、また、マイクロプロセッサ１００などの、１つ以上のマイクロプロセッサによってアクセスされうる。一実施形態では、マイクロプロセッサ１００は、例えばＡｔｈｌｏｎ（商標）プロセッサなどの、ｘ８６アーキテクチャを実装するマイクロプロセッサの例である。しかしながら、別の種類のマイクロプロセッサを含む他の実施形態が検討されうる。
【００１３】
例示の実施形態では、マイクロプロセッサ１００は、第一レベル１（Ｌ１）キャッシュ及び第二Ｌ１キャッシュ、すなわち、命令キャッシュ１０１Ａ及びデータキャッシュ１０１Ｂ、を備えている。実施形態に応じて、Ｌ１キャッシュは統合キャッシュあるいは分岐キャッシュ（bifurcated cache）でありうる。いずれの場合にも、簡素化のために、命令キャッシュ１０１Ａ及びデータキャッシュ１０１Ｂは、必要に応じて、集合的にＬ１キャッシュと称されうる。マイクロプロセッサ１００はまた、命令キャッシュ１０１Ａに近接して結合されうる、プレデコードユニット１０２、及び分岐予測ロジック１０３を備えている。マイクロプロセッサ１００はまた、命令デコーダ１０４へ結合されているフェッチ及びデコード制御ユニット１０５を備えており、双方とも命令キャッシュ１０１Ａへ結合されている。命令制御ユニット１０６は、命令デコーダ１０４から命令を受信し、スケジューラ１１８へオペレーションをディスパッチするように結合されている。スケジューラ１１８は、命令制御ユニット１０６からディスパッチされるオペレーションを受信し、かつ、実行ユニット１２４へオペレーションを発行するように結合されている。実行ユニット１２４は、データキャッシュ１０１Ｂへアクセスするように構成されうる、ロード／ストアユニット１２６を備えている。実行ユニット１２４がもたらす結果は、続いて発行される命令に対するオペランド値として使用され、及び／あるいはレジスタファイル（図示せず）に格納される。更に、マイクロプロセッサ１００は、命令キャッシュ１０１Ａ、データキャッシュ１０１Ｂとシステムメモリ間に結合されている、オンチップＬ２キャッシュ１３０を備えている。
【００１４】
命令キャッシュ１０１Ａは、実行前に命令を格納しうる。命令キャッシュ１０１Ａに関連する機能は、命令フェッチ（読出し）、命令プレフェッチ、命令プレデコード、及び分岐予測でありうる。バッファインターフェースユニット１４０を通してシステムメモリからコードをプレフェッチすることにより、あるいは以下に更に説明しているように、Ｌ２キャッシュ１３０からコードをプレフェッチすることにより、命令コードが命令キャッシュ１０１Ａに与えられうる。命令キャッシュ１０１Ａは、様々な構造で実装されうる（例：セットアソシエイティブ、フルアソシエイティブ、あるいはダイレクトマップ）。
一実施形態では、命令キャッシュ１０１Ａは複数のキャッシュラインを格納するように構成され、命令キャッシュ１０１Ａの所定のキャッシュラインにおけるバイト数は、実装状況によって異なる。更に、一実施形態では、命令キャッシュ１０１Ａは、スタティックランダムアクセスメモリ（ＳＲＡＭ：static random access memory）で実装されうるが、別の種類のメモリを含む他の実装品が検討される。一実施形態では、命令キャッシュ１０１Ａは、例えば、キャッシュラインのフィル、置換やコヒーレンシを制御するために、制御回路（図示せず）を備えうる。
【００１５】
命令デコーダ１０４は、命令をオペレーションにデコードするように構成されており、一般にマイクロコードＲＯＭあるいはＭＲＯＭ（図示せず）と称される、オンチップリードオンリーメモリ（ＲＯＭ）内に格納されているオペレーションを用いて、間接的に、あるいは直接的にデコードされうる。命令デコーダ１０４は、特定の命令を、実行ユニット１２４内で実行可能なオペレーションにデコードする。単純な命令は単一のオペレーションに対応しうる。実施形態の中には、更に複雑な命令が、多くのオペレーションに対応しうるものもある。
【００１６】
命令制御ユニット１０６は、実行ユニット１２４へのオペレーションのディスパッチを制御する。一実施形態では、命令制御ユニット１０６は、命令デコーダ１０４から受信したオペレーションを保持するために、リオーダバッファを備えうる。更に、命令制御ユニット１０６は、動作のリタイアメント（retirement）を制御するように構成されうる。
【００１７】
命令制御ユニット１０６の出力で与えられるオペレーションや即値データ(immediate data)はスケジューラ１１８へ送られる。スケジューラ１１８は１つ以上のスケジューラユニット（例：整数スケジューラユニットや浮遊小数点スケジューラユニット）を備えうる。本明細書に用いられているように、スケジューラは、オペレーションの実行が可能である時を検出し、また、１つ以上の実行ユニットに準備完了オペレーション（ready operation）を発行する。例えば、リザベーションステーションはスケジューラでありうる。各スケジューラ１１８は、実行ユニット１２４への発行を待つ、いくつかの実行中のオペレーションに対して、オペレーション情報（例：ビットエンコード実行ビット（bit encoded execution bits）やオペランド値、オペランドタグ、及び／あるいは即値データ）を保持しうる。実施形態によっては、各スケジューラ１１８がオペランド値を格納しないものもある。代わりに、各スケジューラは、レジスタファイルで得られる結果や発行されたオペレーションを監視し、実行ユニット１２４によってオペランド値が読込み可能とされる時を決定することができる。実施形態の中には、各スケジューラ１１８が専用の実行ユニット１２４の１つと関連しうるものもある。別の実施形態では、１つのスケジューラ１１８が、１つ以上の実行ユニット１２４に対して、オペレーションを発行しうる。
【００１８】
一実施形態では、実行ユニット１２４は、整数実行ユニットなどの実行ユニットを備えている。しかしながら、別の実施形態では、マイクロプロセッサ１００は、スーパースカラプロセッサであることができ、その場合、実行ユニット１２４は加算や引き算の整数算術演算と同様に、シフト、回転、論理演算、分岐演算を実行するように構成されている、複数の実行ユニット（例：複数の整数実行ユニット（図示せず））を備えている。更に、１つ以上の浮遊小数点ユニット(図示せず)が、浮遊小数点演算を行うために備えられうる。１つ以上の実行ユニットが、ロード／ストアユニット１２６により実施される、ロード及びストアメモリ演算のために、アドレス生成を実施するように構成されうる。
【００１９】
ロード／ストアユニット１２６は、実行ユニット１２４とデータキャッシュ１０１Ｂとの間にインターフェースを設けるように構成されうる。一実施形態では、ロード／ストアユニット１２６は、実行中のロードあるいはストアに対するデータやアドレス情報のためのいくつかの格納先を持つ、ロード／ストアバッファ（図示せず）を備えて構成されうる。ロード／ストアユニット１２６はまた、新たなストア命令に対する、古いロード命令の依存度チェックを行い、データのコヒーレンシを確実に維持する。
【００２０】
データキャッシュ１０１Ｂは、ロード／ストアユニット１２６とシステムメモリとの間に転送されるデータを格納するために設けられている、キャッシュメモリである。上述の命令キャッシュ１０１Ａと同様に、データキャッシュ１０１Ｂはセットアソシエイティブ構造を含む、様々な特定のメモリ構造において実装されうる。一実施形態では、データキャッシュ１０１Ｂ及び命令キャッシュ１０１Ａは、別々のキャッシュユニットとして実装される。上述の通りであるが、データキャッシュ１０１Ｂと命令キャッシュ１０１Ａが統合キャッシュとして実装されうる、別の実施形態が検討されうる。一実施形態では、データキャッシュ１０１Ｂは複数のキャッシュラインを格納し、データキャッシュ１０１Ｂの所定のキャッシュライン内のバイト数は、実装状況によって異なる。命令キャッシュ１０１Ａと同様に、一実施形態では、データキャッシュ１０１Ｂが、スタティックランダムアクセスメモリ（ＳＲＡＭ）において実装されうるが、他の種類のメモリを含む、別の実施形態が検討される。一実施形態では、データキャッシュ１０１Ｂは、例えば、キャッシュラインのフィル、置換、及びコヒーレンシを制御するために、制御回路（図示せず）を備えうる。
【００２１】
Ｌ２キャッシュ１３０はまた、キャッシュメモリであり、命令及び／あるいはデータを格納するように構成されうる。例示の実施形態では、Ｌ２キャッシュ１３０はオンチップキャッシュであり、フルアソシエイティブ、あるいはセットアソシエイティブのどちらか一方、あるいは両方の組合せでありうる。一実施形態では、Ｌ２キャッシュ１３０は、複数のキャッシュラインを格納し、Ｌ２キャッシュ１３０の所定のキャッシュライン内のバイト数は、実装状況によって異なる。しかしながら、Ｌ２キャッシュのキャッシュラインサイズは、以下に更に説明しているように、Ｌ１キャッシュのキャッシュラインサイズとは異なる。Ｌ２キャッシュ１３０が例えば、キャッシュラインのフィル、置換、及びコヒーレンシを制御するために、制御回路（図示せず）を備えうる。
【００２２】
バスインターフェースユニット１４０は、システムメモリとＬ２キャッシュ１３０間、及びシステムメモリとＬ１命令キャッシュ１０１ＡとＬ１データキャッシュ１０１Ｂ間の命令やデータを転送するように構成されうる。一実施形態では、バスインターフェースユニット１４０は、ライトサイクルストリームライン(write cycle streamlining)中に、ライトトランザクションをバッファするために、バッファ（図示せず）を備えうる。
【００２３】
図２と併せて、以下で更に詳しく説明しているように、一実施形態では、命令キャッシュ１０１Ａとデータキャッシュ１０１Ｂはどちらも、Ｌ２キャッシュ１３０のキャッシュラインサイズとは異なるキャッシュラインサイズを有している。更に、図３と併せて以下に説明している別の態様では、命令キャッシュ１０１Ａとデータキャッシュ１０１Ｂはどちらも、Ｌ２キャッシュサブラインに対応する個々のＬ１キャッシュラインへのアクセスを制御するために、複数の有効ビットを持つタグを備えている。Ｌ１キャッシュラインサイズは、Ｌ２キャッシュラインサイズよりも小さい（例えば、Ｌ２キャッシュラインサイズのサブユニット）。Ｌ１キャッシュラインのサイズが小さいために、Ｌ２とＬ１キャッシュ間に、より少ないサイクルでデータ転送がされうる。従って、Ｌ１キャッシュが更に効率的に使用されうる。
【００２４】
図２を参照すると、キャッシュサブシステム２００の一実施形態のブロック図が示されている。図１に示されているコンポーネントに対応するコンポーネントは、簡素化及び明瞭化のために、同一の番号をつけている。一実施形態では、キャッシュサブシステム２００は、図１のマイクロプロセッサ１００の一部である。キャッシュサブシステム２００は、複数のキャッシュトランスファーバス２５５を介して、Ｌ２キャッシュメモリ１３０へ結合されている、Ｌ１キャッシュメモリ１０１を備えている。更に、キャッシュサブシステム２００は、キャッシュリクエストバス２１５Ａと２１５Ｂを介してそれぞれ、Ｌ１キャッシュメモリ１０１とＬ２キャッシュメモリ１３０へ結合されている、キャッシュ制御２１０を備えている。図２では、Ｌ１キャッシュメモリ１０１は統合キャッシュとして例示されているが、例えば図１の命令キャッシュ１０１Ａ及びＬ１データキャッシュ１０１Ｂなどの、別々の命令及びデータキャッシュユニットを備えた別の実施形態が検討される。
【００２５】
上述のように、通常、コヒーレンシーのユニットとして、またその結果、システムメモリとやり取りされたデータのユニットとして、データのキャッシュラインを用いて、メモリの読出し及び書込み演算が行われる。通常、キャッシュはキャッシュラインと呼ばれる、固定サイズのブロックへ分割される。キャッシュはメモリ内の同サイズの領域に対応するラインをキャッシュラインとして割り当て、キャッシュラインはキャッシュラインサイズに等しいアドレス境界で整列する。例えば、３２バイトラインのキャッシュでは、キャッシュラインは３２バイト境界に整列されうる。一般の実装品は、３２バイトあるいは６４バイトキャッシュラインのどちらか一方を用いているものが多いが、キャッシュラインサイズは実装状況により異なる。
【００２６】
例示の実施形態では、Ｌ１キャッシュメモリ１０１は、タグ部２３０及びデータ部２３５を備えている。上述のように、キャッシュラインは通常、複数のバイトのデータや、ステート情報やプレデコード情報などの別の情報（図示せず）を有している。タグ部２３０内の各タグは独立タグであり、データ部２３５内のデータのキャッシュラインに対応するアドレス情報を有しうる。タグのアドレス情報は、所定のデータがメモリリクエストの間に存在するかどうかを判断するために使用される。例えば、メモリリクエストはリクエストされたデータのアドレスを含む。タグ部２５０内の比較ロジック（図示せず）は、リクエストされたアドレスと、タグ部２５０内に格納された各タグ内のアドレス情報とを比較する。リクエストされたアドレスと所定のタグに関連するアドレスとの間に一致するものがあると、上述のようにヒットが示される。一致するタグがない場合、ミスが示される。例示の実施形態では、タグＡ１がデータＡ１に対応し、タグＡ２がデータＡ２に対応する、などであり、各データユニット、Ａ１、Ａ２．．．Ａｍ＋３はＬ１キャッシュメモリ１０１内のキャッシュラインである。
【００２７】
例示の実施形態では、Ｌ２キャッシュメモリ１３０はまた、タグ部２４５やデータ部２５０を備えている。タグ部２４５内の各タグは、データ部２５０内のデータのキャッシュラインに対応するアドレス情報を有している。例示の実施形態では、各キャッシュラインは４つのデータサブライン(four sub-lines of data)を含む。例えば、タグＢ１は、Ｂ１（０−３）と指定されている４つのデータサブラインを含む、キャッシュラインＢ１に対応する。タグＢ２は、Ｂ２（０−３）と指定されている４つのデータサブラインを含む、キャッシュラインＢ２に対応する、などである。
【００２８】
従って、例示の実施形態では、Ｌ１キャッシュメモリ１０１のある１つのキャッシュラインは、Ｌ２キャッシュメモリ１３０の１つのサブラインと等価である。例えば、Ｌ２キャッシュメモリ１３０のキャッシュラインサイズ（例：４つのデータサブライン）は、Ｌ１キャッシュメモリ１０１のキャッシュライン（１つのデータサブライン）サイズの倍数である。例示の実施形態では、Ｌ２キャッシュラインサイズは、Ｌ１キャッシュラインサイズの４倍である。他の実施形態では、様々なキャッシュラインサイズ率がＬ２とＬ１キャッシュ間で存在することができ、Ｌ２キャッシュラインサイズはＬ１キャッシュラインサイズよりも大きい。従って、以下に更に説明しているように、シングルメモリリクエストに対応する、Ｌ２キャッシュメモリ１３０とシステムメモリ（あるいはＬ３キャッシュ）との間に転送されるデータ量は、シングルメモリリクエストに対応する、Ｌ１キャッシュメモリ１０１とＬ２キャッシュメモリ１３０との間に転送されるデータ量よりも多い。
【００２９】
Ｌ２キャッシュ１３０はまた、データのユニットが関連しうるＬ１キャッシュを示す情報を持ちうる。例えば、例示の実施形態では、Ｌ１キャッシュメモリ１０１は統合キャッシュでありうるが、Ｌ１キャッシュメモリが命令キャッシュ及びデータキャッシュに分けられる、別の実施形態が検討されている。更に、２つ以上のＬ１キャッシュが存在しうる、別の実施形態が検討される。更に別の実施形態では、各々がＬ１キャッシュを持つ複数のプロセッサがすべて、Ｌ２キャッシュメモリ１３０へのアクセスを持つ。従って、Ｌ２キャッシュメモリ１３０は、データが置き換えられた場合に所定のＬ１キャッシュに知らせるように、また、適宜、データをライトバックする、あるいは、対応するデータを無効にするように、構成されうる。
【００３０】
Ｌ１キャッシュメモリ１０１とＬ２キャッシュメモリ１３０との間にキャッシュを転送する間、１マイクロプロセッササイクルあるいは“ビート”（beat）につき、キャッシュトランスファーバス２５５に転送されるデータ量は、Ｌ２キャッシュサブラインに等しく、これはＬ１キャッシュラインに等しい。サイクル、あるいは“ビートは”マイクロプロセッサ内の１クロックサイクル、あるいはクロックエッジと称されうる。他の実施形態では、サイクル、あるいは“ビート”は完了までに、複数のクロックを要求しうる。例示の実施形態では、各キャッシュは別々の入力及び出力ポート、及び対応するキャッシュトランスファーバス２５５を備えており、これにより、Ｌ１とＬ２キャッシュとの間のデータ転送が、同時に、かつ、双方向にされうる。しかしながら、１つのキャッシュトランスファーバス２５５しか持たない実施形態では、１回の転送が、１サイクルにつき、１方向にしかされないと考えられている。別の実施形態では、別の数のデータサブラインが、１サイクルで転送されうると考えられている。以下に更に詳しく解説しているように、キャッシュラインのサイズが異なれば、所定のサイクルにおけるキャッシュ間で転送される、Ｌ２キャッシュラインよりも小さなデータブロックを許容することにより、より効率的にＬ１キャッシュメモリ１０１を使用することができる。一実施形態では、データサブラインは１６バイトであるが、データサブラインが別のバイト数を含む別の実施形態が検討される。
【００３１】
一実施形態では、キャッシュ制御２１０は、リクエストを待ち行列に挿入するために、複数のバッファ（図示せず）を備えている。キャッシュ制御２１０は、Ｌ１キャッシュ１０１とＬ２キャッシュ１３０との間のデータ転送を制御しうるロジック（図示せず）を有している。更に、キャッシュ制御２１０は、リクエスタとキャッシュサブシステム２００との間のデータの流れを制御しうる。例示の実施形態では、キャッシュ制御２１０が別々のブロックとして描かれているが、キャッシュ制御２１０の部位(portion)がＬ１キャッシュメモリ１０１、及び／あるいはＬ２キャッシュメモリ１３０内に存在する別の実施形態が検討される。
【００３２】
図４と併せて、以下に更に詳しく説明されているように、キャッシュ可能なメモリへのリクエストが、キャッシュ制御２１０により受信されうる。キャッシュ制御２１０は、キャッシュリクエストバス２１５Ａを介して、Ｌ１キャッシュメモリ１０１へ所定のリクエストを発行し、かつ、キャッシュミスに遭遇した場合は、キャッシュ制御２１０はキャッシュリクエストバス２１５Ｂを介して、Ｌ２キャッシュ１３０へリクエストを発行しうる。Ｌ２キャッシュヒットに対応して、Ｌ１キャッシュフィルが行われ、これにより、Ｌ２キャッシュサブラインがＬ１キャッシュメモリ１０１へ転送される。
【００３３】
図３を参照すると、キャッシュサブシステム３００の一実施形態のブロック図が示されている。図１及び図２で示されているコンポーネントに対応するコンポーネントは、簡素化及び明瞭化のために、同一の番号が付けられている。一実施形態では、キャッシュサブシステム２００は、図１のマイクロプロセッサ１００の一部である。キャッシュサブシステム３００は、複数のキャッシュトランスファーバス２５５を介してＬ２キャッシュメモリ１３０へ結合されている、Ｌ１キャッシュメモリ１０１を備えている。更に、キャッシュサブシステム３００は、キャッシュリクエストバス２１５Ａと２１５Ｂを介してそれぞれ、Ｌ１キャッシュメモリ１０１とＬ２キャッシュメモリ１３０へ結合されている、キャッシュ制御３１０を備えている。図３では、Ｌ１キャッシュメモリ１０１は統合キャッシュとして例示されているが、図１の命令キャッシュ１０１ＡやＬ１データキャッシュ１０１Ｂなどの、別々の命令及びデータキャッシュユニットを含む、別の実施形態が検討される。
【００３４】
実施形態では、図３のＬ２キャッシュメモリ１３０は、図２のＬ２キャッシュメモリ１３０と同様の特徴を持ち、かつ、同じようにオペレーションを行う。例えば、タグ部２４５内のタグの各々は、データ部２５０内のデータのキャッシュラインに対応するアドレス情報を含む。例示の実施形態では、各キャッシュラインは４つのデータサブラインを含む。例えば、タグＢ１はＢ１（０−３）と指定されている、４つのデータサブラインを含むキャッシュラインＢ１に対応する。タグＢ２はＢ２（０−３）と指定されている、４つのデータサブラインを含むキャッシュラインＢ２に対応する、などである。一実施形態では、各Ｌ２キャッシュラインは６４バイトであり、各サブラインは１６バイトであるが、Ｌ２キャッシュラインとサブラインが別のバイト数を含む、別の実施形態が検討される。
【００３５】
例示の実施形態では、Ｌ１キャッシュメモリ１０１は、タグ部３３０及びデータ部３３５を備えている。タグ部３３０内のタグの各々は独立タグであるとともに、データ部３３５内の、４つの独立したアクセス可能なＬ１キャッシュライングループに対応する、アドレス情報を有しうる。更に各タグは０−３と指定されている、複数の有効ビットを含む。各有効ビットは、グループ内の別のＬ１キャッシュラインに対応する。例えば、タグＡ１はＡ１（０−３）と指定されている４つのＬ１キャッシュラインに対応し、また、タグＡ１内の各有効ビットは、Ａ１データの個々のキャッシュライン（例：０−３）の別の１つに対応する。タグＡ２はＡ２（０−３）と指定されている４つのＬ１キャッシュラインに対応し、また、タグＡ２内の各有効ビットは、Ａ２データの個々のＬ１キャッシュライン（例：０−３）の別の１つに対応する、などである。一般のキャッシュにおける各タグが、１つのキャッシュラインに対応するが、タグ部３３０内の各タグは、Ｌ１キャッシュメモリ１０１内の４つのＬ１キャッシュライン(例：Ａ１（０）．．．Ａ１（３）)グループのベースアドレスを含む。しかしながら、有効ビットにより、グループの各Ｌ１キャッシュラインが独立してアクセスできるようになり、これにより、Ｌ１キャッシュメモリ１０１の別のキャッシュラインとして扱われる。４つのＬ１キャッシュラインと４つの有効ビットが各タグに対して示されているが、別の数のデータのキャッシュラインやそれに対応する有効ビットが、所定のタグに関連しうる、別の実施形態が検討される。一実施形態では、Ｌ１データのキャッシュラインは１６バイトでありうるが、Ｌ１キャッシュラインが別のバイト数を有する、別の実施形態が検討される。
【００３６】
タグ部３３０の各Ｌ１タグのアドレス情報は、メモリリクエストの間に、所定のデータがキャッシュに存在するかどうかを判断し、また、タグの有効ビットは、所定のグループにおける対応するＬ１キャッシュラインが有効であるかどうかを示しうる。例えば、メモリリクエストは、リクエストされたデータのアドレスを含む。タグ部３３０内の比較ロジック（図示せず）は、リクエストされたアドレスと、タグ部３３０に格納された各タグ内のアドレス情報とを比較する。リクエストされたアドレスと所定のタグに関連するアドレスとの間に一致するものがあり、かつ、命令あるいはデータを含むキャッシュラインに対応する有効ビットが有効であると確認される、つまりアサート（assert）されると、上述のようにヒットが示される。一致するタグがない場合、あるいは有効データがアサートされない場合は、Ｌ１キャッシュミスが示される。
【００３７】
従って、図３に例示する実施形態では、Ｌ１キャッシュメモリ１０１のキャッシュラインは、Ｌ２キャッシュメモリ１３０の１つのサブラインに相当する。更に、Ｌ１タグはＬ２タグと同じバイト数のデータに対応する。しかしながら、Ｌ１タグの有効ビットにより、個々のＬ１キャッシュラインが、Ｌ１とＬ２キャッシュ間に転送されるようになる。例えば、Ｌ２キャッシュメモリ１３０のキャッシュラインサイズ（例：４つのデータサブライン）は、Ｌ１キャッシュメモリ１０１のキャッシュラインサイズ（例：１つのデータサブライン）の倍数である。例示の実施形態では、Ｌ２キャッシュラインサイズはＬ１キャッシュラインサイズの４倍である。別の実施形態では、Ｌ２キャッシュラインサイズがＬ１キャッシュラインサイズよりも大きな、様々なキャッシュラインサイズ率がＬ２とＬ１キャッシュ間で存在しうる。従って、以下に更に説明しているように、シングルメモリリクエストに対応して、Ｌ２キャッシュメモリ１３０とシステムメモリ（あるいはＬ３キャッシュ）との間に転送されるデータ量は、シングルメモリリクエストに対応して、Ｌ１キャッシュメモリ１０１とＬ２キャッシュメモリ１３０との間に転送されるデータ量よりも多い。
【００３８】
Ｌ１キャッシュメモリ１０１とＬ２キャッシュメモリ１３０との間にキャッシュを転送する間、１マイクロプロセッササイクル（microprocessor cycle）あるいは“ビート”につき、キャッシュトランスファーバス２５５に転送されるデータ量は、Ｌ２キャッシュサブラインに等しく、これはＬ１キャッシュラインに等しい。サイクル、あるいは“ビートは”マイクロプロセッサ内の１クロックサイクル、あるいはクロックエッジと称されうる。他の実施形態では、サイクル、あるいは“ビート”は完了までに、複数のクロックを要求しうる。例示の実施形態では、各キャッシュは別々の入力及び出力ポートと、対応するキャッシュトランスファーバス２５５を備えており、そのために、Ｌ１とＬ２キャッシュとの間のデータ転送が、同時に、かつ、双方向にされうる。しかしながら、１つのキャッシュトランスファーバス２５５しか持たない実施形態では、１回の転送が、サイクルにつき、１方向にしかされないと考えられている。別の実施形態では、別の数のデータサブラインが、１サイクルで転送されうると考えられている。以下に更に詳しく説明しているように、Ｌ２キャッシュラインよりも小さなデータブロックを所定のサイクルにおいてキャッシュ間で転送可能にすることにより、異なるサイズのキャッシュラインは、Ｌ１キャッシュメモリ１０１のより効率的な使用を可能にしうる。
【００３９】
一実施形態では、キャッシュ制御３１０は、キャッシュリクエストを待ち行列に挿入するために、複数のバッファ（図示せず）を備えている。キャッシュ制御３１０は、Ｌ１キャッシュ１０１とＬ２キャッシュ１３０との間のデータ転送を制御しうるロジック（図示せず）を備えている。更に、キャッシュ制御３１０は、リクエスタとキャッシュサブシステム３００との間のデータの流れを制御しうる。例示の実施形態では、キャッシュ制御３１０が別々のブロックとして描かれているが、キャッシュ制御３１０の一部がＬ１キャッシュメモリ１０１、及び／あるいはＬ２キャッシュメモリ１３０に存在する別の実施形態が検討される。
【００４０】
マイクロプロセッサ１００がオペレーションを行う間、キャッシュ制御３１０により、キャッシュ可能なメモリへのリクエストが受信されうる。キャッシュ制御３１０はキャッシュリクエストバス２１５Ａを介して、所定のリクエストをＬ１キャッシュメモリ１０１へ発行する。例えば、リードリクエストを受けて、Ｌ１キャッシュメモリ１０１内の比較ロジック（図示せず）が、アドレスタグと併せて有効ビットを使用し、Ｌ１キャッシュヒットが存在するかどうかを判断する。キャッシュヒットすると、リクエストされた命令やデータに対応する、複数のデータのユニットが、Ｌ１キャッシュメモリ１０１から検索され、リクエスタに返されうる。
【００４１】
しかしながら、キャッシュミスに遭遇した場合は、キャッシュ制御３１０はキャッシュリクエストバス２１５Ｂを介して、Ｌ２キャッシュメモリ１３０へリクエストを発行しうる。リードリクエストがＬ２キャッシュメモリ１３０でヒットする場合、リクエストされた命令あるいはデータに対応するデータのユニット数が、Ｌ２キャッシュメモリ１３０から検索され、リクエスタに返されうる。更に、リクエストされた命令、あるいはキャッシュラインヒットのデータ部を有すＬ２サブラインが、キャッシュフィルとしてＬ１キャッシュメモリ１０１にロードされる。キャッシュフィルを実行するために、実装状況により異なる、追い出しアルゴリズム(eviction algorithm)(例：使用頻度が最も低いアルゴリズム)に従い、１つ以上のＬ１キャッシュラインがＬ１キャッシュメモリ１０１から追い出されうる。Ｌ１タグが、４つのＬ１キャッシュライングループに対応するので、新たにロードされたＬ１キャッシュラインに対応する有効ビットは、関連するタグにおいてアサートされるとともに、同グループにおける別のＬ１キャッシュラインに対応する有効ビットがディアサート（deassert）される。その理由は、そのタグに対するベースアドレスが、それらの他のＬ１キャッシュラインに対して、もはや有効ではないからである。従って、新たにロードされるＬ１キャッシュラインのためにスペースを作るためにＬ１キャッシュラインを追い出すだけではなく、３つの付加的なＬ１キャッシュラインの追い出す、あるいは無効にする。追い出されたキャッシュラインは、データ“スワップ”でＬ２キャッシュメモリ１３０にロードされうる、あるいは、追い出されたキャッシュラインのコヒーレンシー状態に応じて、無効にされうる。
【００４２】
別の態様では、リードリクエストがＬ１キャッシュメモリ１０１においてミスし、また、Ｌ２キャッシュメモリ１３０においてもミスする場合は、メモリリードサイクルがシステムメモリで開始されうる（あるいは、ある場合は、Ｌ３やＬ４などの、高次レベルのキャッシュへリクエストされる（図示せず））。一実施形態では、Ｌ２キャッシュメモリ１３０は包括的である。従って、リクエストされた命令あるいはデータを含むデータの、Ｌ２キャッシュライン全体が、メモリリードサイクルに対応して、システムメモリからマイクロプロセッサ１００へ戻される。従って、キャッシュライン全体が、キャッシュフィルを介して、Ｌ２キャッシュメモリ１３０にロードされうる。更に、リクエストされた命令あるいは、フィルされたＬ２キャッシュラインのデータ部を有するＬ２サブラインが、Ｌ１キャッシュメモリ１０１にロードされうるとともに、新たにロードされたＬ１キャッシュラインに関連するＬ１タグの有効ビットがアサートされる。更に、上述しているように、そのタグに関連する、別のＬ１キャッシュラインの有効ビットがディアサートされ、これにより、それらのＬ１キャッシュラインが無効にされる。別の実施形態では、Ｌ２キャッシュメモリ１３０は排他的であり、従って、リクエストされた命令あるいはデータ部を含む、Ｌ１サイズのキャッシュラインだけが、システムメモリから返されるとともに、Ｌ１キャッシュメモリ１０１へロードされる。
【００４３】
図２及び図３のどちらにも例示している、Ｌ１キャッシュメモリ１０１の実施形態が、従来のＬ１キャッシュメモリよりもＬ１キャッシュメモリの効率を高めうるが、どちらか一方を用いることで、トレードオフが存在しうる。例えば、図３におけるＬ１キャッシュメモリ１０１のタグ部３３０は、図２の実施形態において例示されているタグ部２３０の配列よりも少ないメモリスペースで配列されうる。しかしながら、上述しているように、図３のタグ配列を用いることで、キャッシュフィルコヒーレンシの演算（implication）が、Ｌ１キャッシュラインを無効にしうる。このことが、複数の無効なＬ１キャッシュラインが存在することにより、ある程度の非効率さを招く。
【００４４】
図４に、図２のキャッシュメモリサブシステム２００の実施形態のオペレーションを説明したフロー図を示す。マイクロプロセッサ１００がオペレーションを行う間に、キャッシュ可能なメモリリードリクエストが、キャッシュ制御２１０により受信される（ブロック４００）。リードリクエストがＬ１キャッシュメモリ１０１においてヒットする場合（ブロック４０５）、リクエストされた命令、あるいはデータに対応する複数のバイトのデータが、Ｌ１キャッシュメモリ１０１から検索され、リクエストしているマイクロプロセッサの関数ユニットへ返される（ブロック４１０）。しかしながら、リードミスに遭遇した場合（ブロック４０５）、キャッシュ制御２１０は、Ｌ２キャッシュメモリ１３０へリードリクエストを発行しうる（ブロック４１５）。
【００４５】
リードリクエストがＬ２キャッシュメモリ１３０においてヒットすると（ブロック４２０）、リクエストされた命令、あるいはキャッシュラインヒットのデータ部が、Ｌ２キャッシュメモリ１３０から検索されるとともに、リクエスタへ返されうる（ブロック４２５）。更に、リクエストされた命令、あるいはキャッシュラインヒットのデータ部を含む、Ｌ２サブラインはまた、キャッシュフィルとして、Ｌ１キャッシュメモリ１０１へロードされる（ブロック４３０）。キャッシュフィルを行うために、Ｌ１キャッシュラインは、実装状況によって異なる、追い出しアルゴリズムに従って、Ｌ１キャッシュメモリ１０１から追い出され、スペースが作られる（ブロック４３５）。どのＬ１キャッシュラインも追い出されない場合、リクエストが完了する（ブロック４４５）。Ｌ１キャッシュラインが追い出されると（ブロック４３５）、追い出されたＬ１キャッシュラインは、データ“スワップ”で、Ｌ２サブラインとしてＬ２キャッシュメモリ１３０にロードされうる。あるいは、追い出されたキャッシュラインのコヒーレンシー状態に応じて、無効にされ（ブロック４４０）、リクエストが完了する（ブロック４４５）。
【００４６】
別の態様では、リードリクエストがまた、Ｌ２キャッシュメモリ１３０においてミスする場合（ブロック４２０）、メモリリードサイクルがシステムメモリで開始されうる（あるいは、ある場合は、Ｌ３やＬ４などの、高次レベルのキャッシュへリクエストされる（ブロック４５０）。一実施形態では、Ｌ２キャッシュメモリ１３０は包括的である。従って、リクエストされた命令あるいはデータを含む、Ｌ２キャッシュライン全体のデータが、メモリリードサイクルに応じて、システムメモリからマイクロプロセッサ１００へ戻される（ブロック４５５）。従って、キャッシュライン全体が、キャッシュフィルを介して、Ｌ２キャッシュメモリ１３０にロードされうる（ブロック４６０）。更に、リクエストされた命令あるいは、フィルされたＬ２キャッシュラインのデータ部を有するＬ２サブラインが、上述のようにＬ１キャッシュメモリ１０１にロードされうる（ブロック４３０）。上述のようにオペレーションが継続する。別の実施形態では、Ｌ２キャッシュメモリ１３０は排他的であり、従って、リクエストされた命令あるいはデータ部を含む、Ｌ１サイズのキャッシュラインだけが、システムメモリから返されるとともに、Ｌ１キャッシュメモリ１０１へロードされる。
【００４７】
図５を参照すると、コンピュータシステムの一実施形態のブロック図が示されている。図１から図３に示されているコンポーネントに対応するコンポーネントは明瞭化及び単純化のために、同一の番号が付けられている。コンピュータシステム５００は、メモリバス５１５を介してシステムメモリ５１０へ結合されているマイクロプロセッサ１００を備えている。マイクロプロセッサ１００は更に、システムバス５２５を介して、Ｉ／Ｏノード５２０へ結合されている。Ｉ／Ｏノード５２０はグラフィックバス５３５を介してグラフィックアダプタ５３０へ結合されている。Ｉ／Ｏノード５２０はまた、周辺バスを介して周辺デバイス５４０へ結合されている。
【００４８】
例示の実施形態では、マイクロプロセッサ１００はメモリバス５１５を介して、システムメモリ５１０へ直接的に結合されている。従って、システムメモリ５１０へのアクセスを制御するために、マイクロプロセッサは、例えば、図１のバスインターフェースユニット１４０内にメモリ制御（図示せず）を備えている。しかしながら、別の実施形態では、システムメモリ５１０はＩ／Ｏノード５２０を通ってマイクロプロセッサ１００と結合されうる。そのような実施形態では、Ｉ／Ｏノード５２０はメモリ制御（図示せず）を備えうる。更に、一実施形態では、マイクロプロセッサ１００は、図２のキャッシュサブシステム２００などの、キャッシュサブシステムを備えている。別の実施形態では、マイクロプロセッサ１００は、図３のキャッシュサブシステム３００などの、キャッシュサブシステムを備えている。
【００４９】
システムメモリ５１０はいずれの適切なメモリデバイスを備えうる。例えば、一実施形態では、システムメモリは１つ以上のダイナミックランダムアクセスメモリ（ＤＲＡＭ）デバイスを備えうる。別の実施形態が、別のメモリデバイスや構造を備えうることが検討される。
【００５０】
例示の実施形態では、Ｉ／Ｏノード５２０はグラフィックバス５３５、周辺デバイス５４０、及びシステムバス５２５に結合される。従って、Ｉ／Ｏノード５２０は、様々なバス間のトランザクションの流れを管理するための制御ロジックやバッファを含む、様々なバスインターフェースロジック（図示せず）を備えうる。一実施形態では、システムバス５２５はＨｙｐｅｒＴｒａｎｓｐｏｒｔ（商標）技術と互換性がある、バケットベースの相互接続でありうる。そのような実施形態では、Ｉ／Ｏノード５２０はパケットトランザクションを処理するように構成されうる。別の実施形態では、システムバス５２５は、フロントサイドバス（ＦＳＢ：front-side bus）などの、典型的な共有バスアーキテクチャでありうる。
【００５１】
更にグラフィックバス５３５はＡＧＰ（Accelerated Graphics Port）バス技術と互換性がありうる。一実施形態では、グラフィックアダプタ５３０は、ディスプレイ用のグラフィックイメージを生成、及び表示するように構成されている、いずれの様々なグラフィックデバイスでありうる。周辺バス５４５は、ＰＣＩ（Peripheral Component Interconnect）バスのような、一般の周辺バスの一例である。周辺デバイス５４０は、モデムやサウンドカードなどの、いずれの種類の周辺デバイスでありうる。
【００５２】
上述の実施形態は、非常に詳しく解説されているが、上述の開示が十分に認識されると、当業者にとっては、様々なバリエーションや変更が明らかになるであろう。以下の請求の範囲は、そのような全てのバリエーションや変更を包含するものと解釈される。
【産業上の利用可能性】
【００５３】
概して本発明は、マイクロプロセッサの分野に応用されうる。
【図面の簡単な説明】
【００５４】
【図１】マイクロプロセッサの一実施形態のブロック図。
【図２】キャッシュサブシステムの一実施形態のブロック図。
【図３】キャッシュサブシステムの別の実施形態のブロック図。
【図４】キャッシュサブシステムの一実施形態のオペレーションを説明した流れ図。
【図５】コンピュータシステムの一実施形態のブロック図。
【図１】
2006517040.tif 000003
【図２】
2006517040.tif 000004
【図３】
2006517040.tif 000005
【図４】
2006517040.tif 000006
【図５】
2006517040.tif 000007