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