JP4425798B2 - 1サイクルで複数回のアクセスを支援するキャッシュメモリを含むマイクロプロセッサ - Google Patents

1サイクルで複数回のアクセスを支援するキャッシュメモリを含むマイクロプロセッサ Download PDF

Info

Publication number
JP4425798B2
JP4425798B2 JP2004555384A JP2004555384A JP4425798B2 JP 4425798 B2 JP4425798 B2 JP 4425798B2 JP 2004555384 A JP2004555384 A JP 2004555384A JP 2004555384 A JP2004555384 A JP 2004555384A JP 4425798 B2 JP4425798 B2 JP 4425798B2
Authority
JP
Japan
Prior art keywords
cache
blocks
storage
sub
tag
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2004555384A
Other languages
English (en)
Other versions
JP2006507602A (ja
JP2006507602A5 (ja
Inventor
アルサップ ミッチェル
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of JP2006507602A publication Critical patent/JP2006507602A/ja
Publication of JP2006507602A5 publication Critical patent/JP2006507602A5/ja
Application granted granted Critical
Publication of JP4425798B2 publication Critical patent/JP4425798B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0846Cache with multiple tag or data arrays being simultaneously accessible
    • G06F12/0848Partitioned cache, e.g. separate instruction and operand caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0846Cache with multiple tag or data arrays being simultaneously accessible
    • G06F12/0851Cache with interleaved addressing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1045Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

本発明はマイクロプロセッサ分野に関し、更に具体的には、マイクロプロセッサ内のキャッシュメモリ管理に関する。
典型的なコンピュータシステムは、1つ以上のシステムメモリへ接続されている1つ以上のマイクロプロセッサを備えうる。プロセッサはコードを実行し、システムメモリ内に格納されているデータでオペレーションを行う。本明細書に用いられているように、“プロセッサ”という用語は、マイクロプロセッサという用語と同義語である。命令やデータのフェッチや格納を容易にするために、一般に、プロセッサはある種のメモリシステムを採用している。更に、システムメモリへのアクセスを促進するために、1つ以上のキャッシュメモリがメモリシステムに含まれうる。例えば、マイクロプロセッサの中には、1以上のレベルのキャッシュメモリを実装されているものもある。典型的なマイクロプロセッサでは、レベル1(L1)キャッシュ、及びレベル2(L2)キャッシュが使用され、一方で、新たなプロセッサでは、レベル3(L3)キャッシュが用いられうるものもある。多くのレガシープロセッサでは、L1キャッシュはチップ上にあり(オンチップ)、L2キャッシュはチップ外にある。しかしながら、メモリアクセス時間を更に向上させるために、新たなプロセッサはオンチップL2キャッシュを用いている。
概して、L2キャッシュはL1キャッシュよりも大きく、かつ、遅い。更に、多くの場合、L2キャッシュは統合キャッシュとして実装されており、一方で、L1キャッシュは別々の命令キャッシュ及びデータキャッシュとして実装されうる。L1データキャッシュは、マイクロプロセッサに実行中のソフトウエアが、直前に読出しあるいは書込みをしたデータを保持するために用いられる。L1命令キャッシュは、L1データキャッシュが直前に実行した命令を保持する、という点を除いて、L1データキャッシュに類似している。便宜上、L1命令キャッシュ及びL1データキャッシュが適宜、単にL1キャッシュと称されうる。L2キャッシュはL1キャッシュに適応しない命令やデータを保持するために用いられうる。L2キャッシュは排他的(例:L1キャッシュにない情報を格納する)、あるいは包括的でありうる(例:L1キャッシュにある情報のコピーを格納する)。
一般にメモリシステムは、正確なデータが確実にリクエスタに提供されるように、ある種のキャッシュコヒーレンスメカニズム(cache coherence mechanism)を用いている。一般にキャッシュコヒーレンスメカニズムは、シングルリクエストに転送されるデータサイズを、コヒーレンスユニット(unit of coherence)として用いる。コヒーレンスユニットは一般にキャッシュラインと称される。プロセッサの中には、例えば所定のキャッシュラインが64バイトのものもあり、一方で、別のプロセッサは32バイトのキャッシュラインを採用しているものもある。また別のプロセッサでは、別のバイト数がシングルキャッシュラインに含まれうる。リクエストがL1キャッシュやL2キャッシュにおいてミスすると、1ワードたけのリクエストであっても、キャッシュライン全体の多くのワードが、メインメモリからL2やL1キャッシュへ転送される。同様に、1ワードに対するリクエストが、L1キャッシュでミスし、L2キャッシュでヒットすると、リクエストされたワードを含むL2キャッシュライン全体が、L2キャッシュからL1キャッシュへ転送される。従って、それぞれのキャッシュラインに満たないデータユニットに対するリクエストによって、L2キャッシュとL1キャッシュとの間でキャッシュライン全体の転送が生じうる。一般にそのような転送は、完了するまでに複数のサイクルが要求される。
キャッシュ可能メモリへ読出しあるいは書込みをする間、まずL1キャッシュがチェックされ、リクエストされている情報(例:命令あるいはデータ)が得られるかどうかが判断される。情報が得られる場合はヒットし、得られない場合はミスする。ミスすると、L2キャッシュがチェックされる。従って、L1キャッシュでミスし、L2キャッシュでヒットする場合、情報がL2キャッシュからL1キャッシュへ転送されうる。以下に説明しているように、一般に、L2キャッシュとL1キャッシュとの間に転送される情報量がキャッシュラインである。更に、利用可能なL1キャッシュのスペースに応じて、新たなキャッシュライン用のスペースを作るために、キャッシュラインがL1キャッシュから追い出され、その後、L2キャッシュに格納されうる。最新のプロセッサは、これらのデータ転送を何回か実行することにより、最適化されたキャッシュデータ転送を有しうる。従来のプロセッサの中には、このキャッシュラインの“スワップ”中に、L1キャッシュまたはL2キャッシュのいずれにも、他のアクセスができないものもある。
サイクル毎に多様なアクセスをサポートする、レベル2キャッシュメモリを備えたマイクロプロセッサの様々な実施形態が開示されている。一実施形態では、マイクロプロセッサは、複数のバスに結合されたキャッシュメモリを含む、キャッシュメモリサブシステムと結合された実行ユニットを備えている。キャッシュメモリは独立してアクセス可能な、複数のストレージブロックを備えている。バスは複数のキャッシュアクセスリクエストを、ストレージブロックの各々へ運ぶように構成されている。複数のキャッシュバスに運ばれる複数のキャッシュアクセスリクエストに応じて、ストレージブロックの別のブロックが同時にアクセス可能である。
一実装品では、キャッシュメモリは、複数のストレージブロックに結合され、各々がアドレスタグ値を含む、複数のタグを格納するように構成されている、独立してアクセス可能な複数のタグユニットを備えうる。複数のキャッシュアクセスリクエストの受信に応じて、複数のタグユニットのうちの別のユニットが同時にアクセス可能である。
別の実装品では、複数のストレージブロックの各々は、独立してアクセス可能な複数のストレージサブブロックを備えている。複数のストレージブロックの、別々のストレージブロックに関連するいずれの2つのサブブロックが、同時にアクセス可能でありうる。更に、同じストレージブロックに関連する2つのいずれのサブブロックが、連続するシーケンシャルサイクル(sequential cycle)でアクセス可能でありうる。
本発明は、様々な改良を行い、また、他の形態で実施することができるが、ここに説明されている特定の実施例は、例示として示さたものであり、以下にその詳細を記載する。しかし当然のことながら、ここに示した特定の実施例は、本発明を開示されている特定の形態に限定するものではなく、むしろ本発明は添付の請求項によって規定されている発明の範疇に属する全ての改良、等価物、及び変形例をカバーするものである。
図1を参照すると、典型的なマイクロプロセッサ100の一実施形態のブロック図が示されている。マイクロプロセッサ100はシステムメモリ(図示せず)に格納される命令を実行するように構成されている。これらの命令の多くは、システムメモリに格納されているデータでオペレーションを行う。システムメモリはコンピュータシステム全体に、物理的に配置されており、また、マイクロプロセッサ100などの、1つ以上のマイクロプロセッサによってアクセスされうる。一実施形態では、マイクロプロセッサ100は、例えばAthlon(商標)プロセッサなどの、x86アーキテクチャを実装するマイクロプロセッサの例である。しかしながら、別の種類のマイクロプロセッサを含む他の実施形態が検討される。
例示の実施形態では、マイクロプロセッサ100は、第一レベル1(L1)キャッシュ及び第二L1キャッシュ、すなわち、命令キャッシュ101A及びデータキャッシュ101B、を備えている。実装品に応じて、L1キャッシュは統合キャッシュあるいは分岐キャッシュ(bifurcated cache)でありうる。いずれの場合にも、簡素化のために、命令キャッシュ101A及びデータキャッシュ101Bは、必要に応じて、集合的にL1キャッシュと称されうる。マイクロプロセッサ100はまた、命令キャッシュ101Aに近接して結合されうる、プレデコードユニット102、及び分岐予測論理103を備えている。マイクロプロセッサ100はまた、命令デコーダ104と結合されているフェッチ及びデコード制御ユニット105を備えており、双方とも命令キャッシュ101Aと結合されている。命令制御ユニット106は、命令デコーダ104から命令を受信し、スケジューラ118へオペレーションをディスパッチするように結合されている。スケジューラ118は、命令制御ユニット106からディスパッチされるオペレーションを受信し、かつ、実行ユニット124へオペレーションを発行するように結合されている。実行ユニット124は、データキャッシュ101Bへアクセスするように構成されうる、ロード/ストアユニット126を備えている。実行ユニット124がもたらす結果は、続いて発行される命令に対するオペランド値として使用され、及び/あるいはレジスタファイル(図示せず)に格納される。更に、マイクロプロセッサ100は、命令キャッシュ101A、データキャッシュ101Bとシステムメモリ間に結合されている、オンチップL2キャッシュ130を備えている。
命令キャッシュ101Aは、実行前に命令を格納しうる。命令キャッシュ101Aに関連する機能は、命令フェッチ(読出し)、命令プレフェッチ、命令プレデコード、及び分岐予測でありうる。バッファインターフェースユニット140を通してシステムメモリからコードをプレフェッチすることにより、あるいは以下に更に説明しているように、L2キャッシュ130からコードをプレフェッチすることにより、命令コードが命令キャッシュ106に与えられうる。命令キャッシュ101Aは、様々な構造で実装されうる(例:セットアソシエイティブ、フルアソシエイティブ、あるいはダイレクトマップ)。一実施形態では、命令キャッシュ101Aは複数のキャッシュラインを格納するように構成され、命令キャッシュ101Aの所定のキャッシュラインにおけるバイト数は、実装状況によって異なる。更に、一実施形態では、命令キャッシュ101Aは、スタティックランダムアクセスメモリ(SRAM:static random access memory)で実装されうるが、別の種類のメモリを含む他の実装品が検討される。一実施形態では、命令キャッシュ101Aは、例えば、キャッシュラインのフィル、置換やコヒーレンシを制御するために、制御回路(図示せず)を備えうる。
命令デコーダ104は、命令をオペレーションにデコードするように構成されており、一般にマイクロコードROMあるいはMROM(図示せず)と称される、オンチップリードオンリーメモリ(ROM)内に格納されているオペレーションを用いて、間接的に、あるいは直接的にデコードされうる。命令デコーダ104は、特定の命令を、実行ユニット124内で実行可能なオペレーションにデコードする。単純な命令は単一のオペレーションに対応しうる。実施形態の中には、更に複雑な命令が、多くのオペレーションに対応しうるものもある。
命令制御ユニット106は、実行ユニット124へのオペレーションのディスパッチを制御する。一実施形態では、命令制御ユニット106は、命令デコーダ104から受信したオペレーションを保持するために、リオーダバッファを備えうる。更に、命令制御ユニット106は、動作のリタイアメント(retirement)を制御するように構成されうる。
命令制御ユニット106の出力において与えられるオペレーションや即値データ(immediate data)はスケジューラ118へ送られる。スケジューラ118は1つ以上のスケジューラユニット(例:整数スケジューラユニットや浮遊小数点スケジューラユニット)を備えうる。本明細書に用いられているように、スケジューラは、オペレーションの実行が可能である時を検出し、また、1つ以上の実行ユニットに準備完了オペレーション(ready operation)を発行する。例えば、リザベーションステーションはスケジューラでありうる。各スケジューラ118は、実行ユニット124への発行を待つ、いくつかのペンディング中のオペレーションに対して、オペレーション情報(例:ビットエンコード実行ビット(bit encoded execution bits)やオペランド値、オペランドタグ、及び/あるいは即値データ)を保持しうる。実施形態には、各スケジューラ118がオペランド値を格納しないものもある。代わりに、各スケジューラは、レジスタファイルで得られる結果や発行されたオペレーションを監視し、実行ユニット124によってオペランド値が読込み可能とされる時を決定することができる。実施形態の中には、各スケジューラ118が専用の実行ユニット124の1つと関連しうるものもある。別の実施形態では、1つのスケジューラ118が、1つ以上の実行ユニット124に対して、オペレーションを発行しうる。
一実施形態では、実行ユニット124は、整数実行ユニットなどの実行ユニットを備えている。しかしながら、別の実施形態では、マイクロプロセッサ100は、スーパースカラプロセッサであってもよく、その場合、実行ユニット124は加算や引き算の整数算術演算と同様に、シフト、回転、論理演算、分岐演算を実行するように構成されている、複数の実行ユニット(例:複数の整数実行ユニット(図示せず))を備えている。更に、1つ以上の浮遊小数点ユニット(図示せず)が、浮遊小数点演算を行うために備えられうる。1つ以上の実行ユニットが、ロード/ストアユニット126により実施される、ロード及びストアメモリ演算のために、アドレス生成を実施するように構成されうる。
ロード/ストアユニット126は、実行ユニット124とデータキャッシュ101Bとの間にインターフェースを設けるように構成されうる。一実施形態では、ロード/ストアユニット126は、実行中のロードあるいはストアに対するデータやアドレス情報のためのいくつかの格納先を持つ、ロード/ストアバッファ(図示せず)を備えて構成されうる。ロード/ストアユニット126はまた、新たなストア命令に対する、古いロード命令の依存度チェックを行い、データのコヒーレンシーを確実に維持する。
データキャッシュ101Bは、ロード/ストアユニット126とシステムメモリとの間に転送されるデータを格納するために設けられている、キャッシュメモリである。上述の命令キャッシュ101Aと同様に、データキャッシュ101Bはセットアソシエイティブ構造を含む、様々な特定のメモリ構造において実装されうる。一実施形態では、データキャッシュ101B及び命令キャッシュ101Aは、別々のキャッシュユニットとして実装される。上述の通りであるが、データキャッシュ101Bと命令キャッシュ101Aが統合キャッシュとして実装されうる、別の実施形態が検討されうる。一実施形態では、データキャッシュ101Bは複数のキャッシュラインを格納し、データキャッシュ101Bの所定のキャッシュライン内のバイト数は、実装状況によって異なる。命令キャッシュ101Aと同様に、一実施形態では、データキャッシュ101Bが、スタティックランダムアクセスメモリ(SRAM)において実装されうるが、他の種類のメモリを含む、別の実施形態が検討される。一実施形態では、データキャッシュ101Bは、例えば、キャッシュラインのフィル、置換、及びコヒーレンシを制御するために、制御回路(図示せず)を備えうる。
L2キャッシュ130はまた、キャッシュメモリであり、命令及び/あるいはデータを格納するように構成されうる。例示の実施形態では、L2キャッシュ130はオンチップキャッシュであり、フルアソシエイティブ、あるいはセットアソシエイティブのどちらか一方、あるいは両方の組合せでありうる。一実施形態では、L2キャッシュ130は、複数のキャッシュラインを格納する。L2キャッシュ130が例えば、キャッシュラインのフィル、置換、及びコヒーレンシを制御するために、制御回路(図示せず)を備えうる。
図4の説明と併せて以下に更に詳しく説明しているように、一実施形態では、L2キャッシュ130の一部(例:L2キャッシュ130のメインキャッシュのストレージアレイ部)は非同期的にアクセスされ、一方でL2キャッシュ130の別の部分(例:メインアレイに対応するL2キャッシュ130のタグ配列)は、同期的に、かつ、フルパイプライン方式でアクセスされうる。更に、メインストレージアレイセルが、他のストレージブロックと同時にアクセスされうるメモリのユニット、あるいは、独立してアクセス可能な複数のストレージブロックに配置されうる。
バスインターフェースユニット140は、システムメモリとL2キャッシュ130間の命令やデータ、及びシステムメモリとL1命令キャッシュ101AとL1データキャッシュ101B間の命令やデータを転送するように構成されうる。一実施形態では、バスインターフェース140は、ライトサイクルストリーミング中にライトトランザクションをバッファするために、バッファ(図示せず)を備えうる。
図2を参照すると、図1のマイクロプロセッサのキャッシュサブシステムの一実施形態のブロック図が示されている。キャッシュサブシステム200は、タグ配列210に結合されているメインストレージアレイ220を含む、キャッシュメモリを備えている。更に、キャッシュサブシステム200は、キャッシュバス240と示されている、複数のバスを介して、タグ配列210に結合されている、キャッシュ制御230を備えている。一実施形態では、メインストレージアレイ220及びタグ配列210は、例えば図1のL2キャッシュ130などの、L2キャッシュサブシステムにおいて使用されうる。しかしながら別の実施形態では、メインストレージアレイ220及びタグ配列210は、いずれのキャッシュサブシステムにおいて使用されうる。
メインストレージアレイ220は、独立してアクセス可能なストレージブロックに配置されている、複数のメモリユニットを備えている。例示の実施形態では、ストレージブロックは、220A−220Nと示されており、Nは任意の数のブロックでありうる。一実施形態では、8個のそのようなストレージブロックがありうるが、別の実施形態では、別の数のブロックが検討される。更に、ストレージブロック220A−Nの各々は、サブブロック0−3と示されている、独立してアクセス可能な、4つのストレージサブブロックを備えている。ストレージブロック220A−Nの各々は、そのようなサブブロックを4個備えているが、別の実施形態では、ストレージブロック220A−Nの各々が、別の数のサブブロックを備えうることが検討される。
タグ配列210はキャッシュラインタグ情報を格納するように構成されているストレージアレイである。タグのアドレス情報は、メモリリクエスト中に所定のデータがキャッシュに存在するかどうかを判断するために使用される。例えば、メモリリクエストは、リクエストされたデータのアドレスを有す。タグ配列210内の比較ロジック(図示せず)は、リクエストされたアドレスと、タグ配列210の所定のタグユニット210A−N内に格納される各タグ内のアドレス情報とを比較する。リクエストされたアドレスと所定のタグに関連するアドレスとの間に一致するものがある場合は、上述のようにヒットが示される。一致するタグがない場合は、ミスが示される。タグ配列210は210A−210Nと示されている、複数のタグユニットに配置され、Nはいずれの数のタグユニットである。タグユニット210A−Nの各々は、独立してアクセス可能なストレージブロックの1つに対応し、また、複数のタグエレメントを備えうる。例えば、例示の実施形態では、タグユニット210Aはストレージブロック220Aと対応する。更に、所定のタグユニット内の各タグエレメントは、所定のストレージブロックの全ストレージサブブロックに対応しうる。タグ入力(tag entry)は、ストレージアレイ220内に格納されるデータのアドレスの一部を格納する。アドレスのその他の部分は、ストレージアレイ220内に位置を特定して、アクセスされる。キャッシュラインが4つすべてのストレージサブブロックに行渡る(span)ように、キャッシュラインは所定のストレージブロック内に格納されうる。例えば、例示の実施形態では、キャッシュライン225は、1つのサブラインが各サブブロック内に格納された状態で、ストレージブロック220Aのストレージサブブロック0−3を通して格納される。
キャッシュ制御230は、入ってくるキャッシュ、つまりインカミングキャッシュの(incoming cache)リクエストを格納し、かつ、キャッシュバス240に運ぶために、それらのリクエストを選択するとともに、スケジューリングするように構成されうる、制御論理(図示せず)及び1つ以上のリクエストキューを備えうる。リクエストキュー231はソース、及び/あるいは受信するキャッシュリクエストの種類に対応しうる(以下に説明)。一実施形態では、キャッシュ制御230は、図1のL1命令キャッシュ101AあるいはL1データキャッシュ101Bからのキャッシュミスとして、そのようなソースからリクエストを受信しうる。更に、キャッシュ制御230は、バスインターフェースユニット140から、あるいは、スヌープリクエスト(snoop request)型の他のプロセッサ(図示せず)からリクエストを受信しうる。
概して、キャッシュリクエストはリードリクエスト、ライトリクエスト、あるいはアップデートリクエストの形でもたらされうる。例示の実施形態では、これらのリクエストに応じるために、キャッシュバス240はリードバス(R)、ライトバス(W)、及びアップデートバス(U)を備えている。しかしながら、いずれの数の各タイプのバスを備えた別の実施形態が検討される。例えば、付加的なバス(点線で示されている)が、別の実施形態で使用されうる。キャッシュ制御230はキャッシュバス240を介して、タグ配列210及びメインストレージアレイ220と結合されている。リードバスRとライトバスWは、メインストレージアレイ220まで結合されており、一方で、アップデートバスUは、タグ配列210だけと結合されうる。一実施形態では、Rバスはアドレス及び制御情報をタグ配列210及びメインストレージアレイ220へ運び、かつ、メインストレージアレイ220からのデータを運ぶための、信号経路を備えうる。Wバスはアドレス及び制御情報をタグ配列210及びメインストレージアレイ220へ運び、かつ、メインストレージアレイ220からのデータを運ぶための、信号経路を備えうる。Uバスはアドレス及び制御情報をタグ配列210へ運ぶための、信号経路を備えうる。
一実施形態では、キャッシュアップデートは例えばタグユニット210Aなどの、所定のタグユニットのタグエレメント内の情報を変更しうる。そのような情報は、特定のキャッシュラインの状態変化を含む。例えば、一実施形態では、メモリサブシステムは、変更された(modified)、所有された(owned)、排他的な(exclusive)、共有の(shared)、無効の(invalid)(MOESI)コヒーレンシープロトコルを採用しうる。そのような実施形態では、リクエスタは、メインストレージアレイ220に対応する位置に格納されているデータを変更せずに、キャッシュラインの新たな状態をタグ配列210に書込みうる。タグ配列210でヒットするキャッシュラインリードリクエストは、メインストレージアレイ220において、対応する位置内に格納されたデータを、リードバスRに運ばせうる。同様に、タグ配列210でヒットするキャッシュラインライトリクエストが、ライトデータをライトバスWへ運ばせるとともに、メインストレージアレイ220へ書込ませうる。
上述のように、タグユニット210A−Nの各々と、ストレージブロック220A−Nの各々は、独立してアクセス可能である。更に、キャッシュバス240のR、W、及びUバスが各タグユニット210A−Nと結合され、かつ、R及びWバスが各ストレージブロック220A−Nと結合されているので、キャッシュリクエストの種類に応じて(例:リード、ライトあるいはアップデート)、タグユニット210A−Nとストレージブロック220A−Nが、同時にアクセスされうる(例えば、同一サイクル中に)。従って、例示の実施形態では、別々のタグユニットへの、3つまでの独立したアクセスリクエストが、同時に提供されうる。例えば、タグユニット210Bに対するリードリクエストは、タグユニット210Cに対するアップデートリクエストと同時に提供されうる、タグユニットAに対するライトリクエストと同時に提供されうる。タグ配列210及びメインストレージアレイ220と結合された、より多くのバスを持つ実施形態では、より多くのリクエストが同時に提供されうる。
タグユニット210A−Nの各々には、固有のアドレス値が割当てられうる。この固有アドレス値は、アドレスの一部と対応し、かつ、アドレスのブロックビット部と称されうる。インカミングリクエストが、所定のタグユニットの、固有の割当てられた値と一致するブロックヒットを持つアドレス値を有する場合、リクエストはそのタグユニットに対するものである。一実施形態では、タグユニット210A−Nの各々は、キャッシュバス240のR、W、及びUバスを監視しうる。複数のリクエスト(例:R、W、U)が、所定のサイクルで、キャッシュバス240のR、W、及びUバスにある場合、2つ以上のリクエストは同じタグユニットに対するものであり、そのタグユニットは、そのサイクルに対するリクエストの1つを選択しうる。そのタグユニットに対するその他のリクエストは、そのサイクル間は拒否される。しかしながら、拒否された、競合するリクエスト(conflicting request)は、後続サイクルで選択されうる。一実施形態では、アップデートが最優先となり、次にリードやライトが続くように、タグユニット選択論理(図示せず)はリクエストを選択しうる。複数のリクエストが、所定のサイクルでキャッシュバス240のR、W、及びUバスにあり、また、2つ以上のリクエストが同じタグユニットに対するものである場合は、別の優先順位を用いて、リード、ライト、及びアップデートを選択する、別の実施形態が検討される。
上述のように、キャッシュ制御230は、インカミングキャッシュリクエストを格納する、1つ以上のリクエストキュー231を備えうる。一実施形態では、キャッシュ制御230は、リクエストキュー231から3つのリクエスト(例:リード、ライト、及びアップデート)を選択するとともに、選択したリクエストを、各キャッシュアクセスサイクル中に、キャッシュバス240の対応するR、W、及びUバスへ運ぶように構成されうる。キャッシュ制御230は、リクエストが同じタグユニットで競合するかどうかをチェックせずに、1つのリードリクエストや1つのライトリクエストを選択しうる。そのような実施形態では、リクエストが競合する場合、上述のようにタグユニットが、リクエストを選択し、かつ、拒否する。別の実施形態では、キャッシュ制御230は、所定のタグユニットで競合がないように、選択されたリードリクエストアドレスタグに基づいて、ライトリクエストを選択しうる。アップデートリクエストがある場合は、タグユニットの競合をチェックせずにアップデートリクエストが選択されうる。別の実施形態では、キャッシュ制御230は、競合しないリード及びライトリクエストペアが存在する場合は、そのペアが常に選択されうるように、リード及びライトリクエストを選択しうる。例えば、リード及びライトリクエストが両方、ブロックビットを有す場合、キャッシュ制御230は、別々のサイクル中に、2つの競合するリクエストを送り、これにより、競合せずにこれらのリクエストを送ることが出来る。更に、所定のストレージブロックあるいはサブブロックが、リードあるいはライトリクエストを選択する前は使用中でないことを、キャッシュ制御230が証明する実施形態が検討される。
従って、タグ配列210へのキャッシュアクセス数や種類に応じて、別のストレージブロックへの複数のアクセスが同時に提供されうる。また図3と併せて更に以下により詳しく説明しているように、別々のサブブロックを除く、メインストレージアレイ220のいずれのストレージブロックの1つへの複数のアクセスが、後続のシーケンシャルサイクルで提供されうるように、タグ配列210へのアクセスが、完全にパイプライン化されうる。メインストレージアレイ220の使用中のサブブロックへの後続アクセスが、サブブロックが使用中でなくなるまで遅延されうる。
図3を参照すると、図2のキャッシュサブシステムのストレージブロックの一実施形態へのアクセス順序を例示した図が示されている。図2に示されているコンポーネントに対応するものは簡素化及び明瞭化のために、同一の番号が付けられている。ストレージブロック220Aはタグユニット210Aと結合されている。図2のタグ配列210などのタグ配列への典型的な入力リクエスト順序が示されている。入力リクエストは、アドレス‘A’へのリードあるいはライトであり、その次にA+32、A+16、A+48が続く。この例では、4つすべての入力リクエストがタグユニット210においてヒットしていると判断される。ストレージブロック220Aに示しているように、所定のアドレスに対応するデータセグメントの各々は、別々のサブブロックに格納される。ストレージブロック220Aの列は、サブブロック0−3を示し、一方で行が示しているのは、所定のデータセグメントがアクセスされるサイクルである。
上述のように、図2のタグ配列210は完全にパイプライン化されている。例えば、別々のサブブロックへの複数のリクエストが、所定のタグユニット内でヒットする場合、後続のリクエストの各々は順次に、また先行するリクエストが完了する前に処理される。しかしながら、メインストレージアレイ220へのアクセスは、シーケンシャルアクセスが同じサブブロックに対して行われる場合は、パイプライン化される必要はない。これは、メモリセルあるいはセルグループからのデータのライトあるいはリードに関連する遅延のためである。従って、所定のセルあるいはセルグループ(例:サブブロック)へのいずれのリクエストに続いて、そのセル、あるいはセルグループが再度アクセスされうる前には遅延が生じる。
サイクル0において与えられる入力リクエストシーケンスに対して、アドレス‘A’に対応するデータが返されうる、あるいは書込みされうる。サイクル1では、アドレス‘A+32’に対応するデータが返されうる、あるいは書込みされうる。サイクル2では、アドレス‘A+16’に対応するデータが返されうる、あるいは書込みされうる。サイクル3では、アドレス‘A+48’に対応するデータが返されうる、あるいは書込みされうる。従って、リクエストされたアドレスに対応するデータが、4つ別々のサブブロックに格納されたため、アクセスが4シーケンスサイクルで、ウエイトサイクルが入ることなく、返された。この結果生じる出力シーケンスは、アドレス間にウエイトサイクルがないことを示す。
上述のように、1つのタグユニットでヒットするが、同じサブブロックに格納されているデータを持つ一連のリクエストは、アクセスしているサブブロックに関連する遅延のために、ウエイトサイクルを入れずに、後続の順次アクセスサイクルに提供されることができない。
図4を参照すると、図1のマイクロプロセッサのキャッシュサブシステムの別の実施形態の図が示されている。図1−3に示されているコンポーネントに対応するものは、簡素化及び明瞭化のために、同一の番号が付けられている。キャッシュサブシステム400は、タグ配列210と結合されているメインストレージアレイ220を備えた、キャッシュメモリを備えている。更にキャッシュサブシステム400は、非同期的リードイネーブル信号451と、非同期的ライトイネーブル信号455を介して、メインストレージアレイ220と結合されている、キャッシュ制御430を備えている。キャッシュ制御430はまた、複数のキャッシュアクセスリクエストバス240を介して、タグ配列210と結合されている。キャッシュ制御430とタグ配列210はそれぞれ、マイクロプロセッサのクロックツリーにより供給されうる、CPUクロック信号415を受信する。一実施形態では、メインストレージアレイ220とタグ配列210は、例えば図1のL2キャッシュ130などの、L2キャッシュサブシステムにおいて使用されうる。しかしながら、別の実施形態では、メインストレージアレイ220とタグ配列210がいずれのキャッシュサブシステムで用いられうる。
メインストレージアレイ220は、独立してアクセス可能なストレージブロックに配置されている複数のメモリセルを有する。例示の実施形態では、ストレージブロックは220A−Nと示されており、Nはいずれの数のブロックでありうる。一実施形態では、8個のそのようなストレージブロックがありうるが、別の実施形態では、別の数のブロックが検討される。更に、ストレージブロック220A−Nの各々は、サブブロック0−3と示されている、独立してアクセス可能な、4つのストレージサブブロックを備えている。ストレージブロック220A−Nの各々は、そのようなサブブロックを4個備えているが、別の実施形態では、ストレージブロック220A−Nの各々が、別の数のサブブロックを備えうることが検討される。CPUあるいはシステムクロックを用いて動機的にアクセスされうる、いくつかのキャッシュアレイとは違って、例示の実施形態では、メインストレージアレイ220へ送られるクロック供給ネットワークはない。メインストレージアレイ220は、タグユニット210やマイクロプロセッサ100内のその他の論理へ、非同期的にアクセスされうる。図5及び図6と併せて以下に更に詳しく説明しているように、対応する独立してアクセス可能なストレージサブブロック0−3の各々は、アサートされたリードイネーブル信号451の受信を受け、出力データを提供するように構成されうる。更に、データは、アサートされたライトイネーブル信号455の受信を受け、所定のサブブロックへ書込みされうる。メインストレージアレイ220へ送られるクロック供給ネットワークがないので、各サイクル間にキャッシュアレイにおける使用されていないメモリユニットのクロッキングに関連した、不要な電力消費がない。
タグ配列210は、キャッシュラインタグ情報を格納するように構成されているストレージアレイである。タグ配列210は、210A−210Nと示されている。複数のタグユニットに配置され、Nはいずれの数のタグユニットである。タグユニット210A−Nの各々は、ストレージブロックに対応し、また、複数のタグ、つまり“タグエレメント”を備えうる。例えば、例示の実施形態では、タグユニット210Aはストレージブロック220Aに対応する。更に、所定のタグユニット内の各タグエレメントは、所定のストレージブロックの全ストレージサブブロックに対応しうる。従って、キャッシュラインが4つすべてのストレージサブブロックに行き渡るように、キャッシュラインが所定のストレージブロック内に格納されうる。例えば、例示の実施形態では、キャッシュライン225は、ストレージブロック220Aのストレージサブブロック0−3に渡って格納される。例示の実施形態では、タグ配列210は、CPUクロック415を介して同期的にアクセスされうる。
キャッシュ制御430は、様々なソースからキャッシュアクセスリクエストを受信するように構成されている。一実施形態では、キャッシュ制御430とタグ配列210は、CPUクロック信号415により、残りのマイクロプロセッサと共に、同期的にオペレーションを行いうる。従って、キャッシュ制御430とタグ配列210は、CPUクロック信号415を受信するように構成されうる。
例示の実施形態では、キャッシュ制御430は、メインストレージアレイ220の各ストレージブロック内の各ストレージサブブロック0−3へ送られうる、リードイネーブル信号451とライトイネーブル信号455を生成するように構成されうる。
一実施形態では、キャッシュ制御430は、タグ配列210内の特定のアドレスへのキャッシュヒットあるいはキャッシュフィルリクエストに基づいて、アサートされたリードイネーブル信号451とアサートされたライトイネーブル信号455を提供するように構成されうる。例えば、所定のリードリクエストは、タグユニット210Aでヒットしうる。タグユニット210Aは、キャッシュ制御430にヒット指示(図示せず)を送りうる。キャッシュ制御430はリードイネーブル信号451を出力しうる。リードイネーブル信号451とタグユニット210Aからのアドレス情報に応じて、対応するサブブロックが所定の遅延の後に、リクエストされたデータを出力しうる。同様に、タグユニット210Aにおけるヒットに対応するライトリクエストが受信される場合、タグユニット210Aは、キャッシュ制御430へ、指示(図示せず)を送りうる。キャッシュ制御430はライトイネーブル信号455を出力しうる。ライトイネーブル信号455と、タグユニット210Aからのアドレス情報を受けて、対応するサブブロックがデータと共に書込みされうる。一実施形態では、リード及びライトイネーブル信号は、所定時間幅のパルスでありうる。
更に、キャッシュ制御430はプログラマブルである。このプログラム可能な特性により、各連続したリードイネーブル信号451間と、各連続したライトイネーブル信号455間の可変(variable)パルス繰返し時間が実現可能になる。従って、連続パルス間の時間をプログラムできるので、異なるキャッシュアレイサイズでキャッシュ制御回路を再利用すること、及び、プロセス変動が可能になる。キャッシュ制御430をプログラミングする様々な方法が検討される。例えば、一実施形態では、プログラム可能なレジスタが使用されうる。別の実施形態では、可変パルス遅延時間の選択が、ワイヤジャンパを用いて、ダイ上でハードワイヤリング可能である。製造中、ワイヤジャンパ接続がレーザーエッチングされ、必要な遅延が提供されうる。
タグ配列210内のロジックが、リードイネーブル信号451とライトイネーブル信号455を生成しうる、別の実施形態が検討される。
図5を参照すると、図2と図4のキャッシュサブシステムの一実施形態のオペレーションを例示したタイミング図が示されている。このタイミング図は、上から下へ、8個の信号を備えており、それらは、CPUクロック、リードアドレス0A、リードイネーブルパルス0A、データアウト0A、データアウトラッチ、ライトアドレス1B、1Bのデータ、及び、ライトイネーブルパルス1B、である。図1から図4を集合的に参照すると、CPUクロック信号はキャッシュサブシステムに対する基準クロックであり、また、CPUクロック415として図4に示されている。上述のように、CPUクロック信号は、タグユニット210へ供給され、また、メインアレイ220の全体には、供給ネットワークとして送られえない。
タイミング図は、同時リード及び、同時に受信される同時ライトオペレーションの一実施形態を示している。上述のように、タグ配列210は、完全にパイプライン化されうる。また、メインストレージアレイ220は、別々のサブブロックにアクセスされる場合に、パイプライン化されうる。しかしながら、同時リードあるいはライトリクエストが、同じサブブロックに対し、所定のタグユニットにより受信される場合は、キャッシュ制御430が正確な時間に、リード及びライトパルスを出力するようにプログラムされうる。更に、メインアレイ220の別々のストレージブロック220A−Nへのアクセスリクエストが同時に提供されうる。以下の例では、ストレージブロック220Aの同じサブブロック0Aにおけるアドレスへのリードが2つ、及び、ストレージブロック220Bの同じサブブロック1Bにおけるアドレスへのライトが2つ、受信される。従って、リードはライトと異なるタグユニットに受信される。図5の特定のタイミング図は考察を目的としており、そのため、別の実施形態は別のタイミングを有しうる。
タイミングマークt0において、アドレス0A1が、ストレージブロック220A、メインストレージアレイ220のサブブロック0に与えられる。同じCPUクロックパルスの立ち下がりエッジに、リードイネーブルパルスR1が、1クロックサイクル間、アサートされる。この第一リードイネーブルパルスを受けて、ストレージブロック220A内のメモリセルブロック、サブブロック0が、ある程度の時間遅延後に、データDOA1を出力しうる。この例では、遅延は、R1がアサートされてから、5CPUクロックサイクルに相当する。従って、タイミングマークt1において、データアウトラッチ信号が、ラッチデータD0A1へアサートされうる。また、タイミングマークt0において、アドレス1B1とDI1におけるデータが、ストレージブロック220B、メインストレージアレイ220のサブブロック1に与えられる。同じCPUクロックパルスの立ち下がりエッジに、ライトイネーブルパルスW1が、1クロックサイクル間、アサートされる。この第一のライトイネーブルパルスを受けて、DI1におけるデータが、ストレージブロック220B、サブブロック1内のメモリセルブロックに書込みされうる。
更に、タイミングマークt1において、第二アドレス(0A2)が、ストレージブロック220A、メインストレージアレイ220のサブブロック0へ与えられうる。t1後の、CPUクロックの次の立ち下がりエッジに、第二リードイネーブルパルスR2が、1クロックサイクル間、アサートされる。この第二リードイネーブルパルスを受けて、ストレージブロック220A,サブブロック0内のメモリセルブロックが、5CPUクロックサイクルに相当する時間遅延後に、データDOA2を出力しうる。タイミングマークt2において、第二データアウトラッチ信号が、データをラッチするためにアサートされうる。
タイミングマークt1において、第二ライトアドレス(1B2)とDI2におけるデータが、ストレージブロック220B、メインストレージアレイ220のサブブロック1に与えられる。t1後の、CPUクロックの、次の立ち下がりエッジに、第二ライトイネーブルパルスW2が、1クロックサイクル間、アサートされる。この第二ライトイネーブルパルスを受けて、ストレージブロック220B,サブブロック1内のメモリセルブロックが、DI2とともに書込みされうる。
上述の通り、同じサブブロックへのリードサイクル及びライトサイクルが、ウエイトサイクルを発生させうるが、別々のストレージブロックへのアクセスサイクルが、同時に、あるいは、後続のシーケンシャルサイクルで与えられうる。これらのウエイトサイクルに応じるために、連続リードパルス間の遅延がプログラムされうる。例えば、上述の例では、キャッシュ制御430は、リードイネーブルパルスとライトイネーブルパルスを、6CPUクロックサイクル毎以下の速度で、同じサブブロックへ出力するようにプログラムされうる。一実施形態では、アドレス及びデータ信号は、有効データが読出し及び書込みに必要な間、保持されうる。
図6を参照すると、図2及び図4のキャッシュサブシステムの、パイプライン化されたオペレーションを例示したタイミング図が示されている。このタイミング図は、上から下に10個の信号を備えており、それらは、CPUクロック、サブブロック0Aアドレス、リードイネーブルパルス0A、データアウト0A、サブブロック2Bアドレス、リードイネーブルパルス2B、データアウト2B、サブブロック3Bアドレス、リードイネーブルパルス3B、及びデータアウト3Bである。図1から図4までを集合的に参照すると、CPUクロック信号は、キャッシュサブシステムに対する基準クロックであり、また、図4にCPUクロック415として示されている。上述の通り、CPUクロック信号は、タグユニット210へ供給されており、また、メインアレイ220全体には、供給ネットワークとして送られえない。
タイミング図は、メインストレージアレイ220の3つの異なるサブブロックへの、連続する3回のリードオペレーションの一例を示す。上述の通り、タグ配列210は完全にパイプライン化されうる。例えば、複数の連続するリードあるいはライトリクエストが、1つ以上の別々のタグユニットにより受信される場合、キャッシュサブシステムは、各連続するクロックサイクルの間に、別々サブブロックへデータを書込む、あるいはデータを出力する。これにより、キャッシュサブシステムはパイプライン化されたような動作を見せる。連続サイクルで、同じサブブロック及び同じタグユニットへの、連続するリクエストが受信される場合、キャッシュサブシステムはパイプライン化されたような動作は見せない。以下の例では、各々が、ストレージブロック220Aのサブブロック0Aにおけるアドレス、ストレージブロック220Bのサブブロック2B及び3Bにおけるアドレス、へのリードが2つ、連続して受信される。図6に例示している特定のタイミングは考察を目的としており、別の実施形態は別のタイミングを含む。
タイミングマークt0において、アドレス0A1は、メインストレージアレイ220のサブブロック0Aへ与えられる。第一CPUクロックパルスの立ち下がりエッジに、リードイネーブルパルスR0A1が、1クロックサイクル間、アサートされる。タグ配列のパイプラインが、付加的なリードリクエストとともにロードされるので、タイミングマークt1において、アドレス2B1が、メインストレージアレイ220のサブブロック2Bへ提供される。t1後の、CPUクロックの次の立ち下がりエッジに、リードイネーブルパルスR2B1が、1クロックサイクル間、アサートされる。更に、タイミングマークt2において、アドレス2B1がメインストレージアレイ220のサブブロック2Bへ提供され、また、t2後の、CPUクロックの次の立ち下がりエッジに、リードイネーブルパルスR3B1が、1クロックサイクル間、アサートされる。従って、3つの別々のサブブロックへの、リードリクエストが3つ発行される。
リードイネーブルパルスR0A1を受けて、ストレージサブブロック0Aが、ある程度の時間遅延後に、データDOA1を出力しうる。この例では、時間遅延は、ROA1がアサートされてから、5CPUクロックサイクルである。リードイネーブルパルスR2B1を受けて、ストレージサブブロック2Bが、ある程度の時間遅延後に、データD2B1を出力しうる。この例では、時間遅延は、R2B1がアサートされてから5CPUクロックサイクルである。タイミングマークt4において、第二アドレスが、メインストレージアレイ220のサブブロック0Aへ提供される。同じCPUクロックパルスの立ち下がりエッジに、リードイネーブルパルスR0A2が、1クロックサイクル間、アサートされる。リードイネーブルパルスR3B1を受けて、ストレージサブブロック3Bが、ある程度の時間遅延後に、データD3B1を出力しうる。この例では、時間遅延はR3B1がアサートされてから、5CPUクロックサイクルである。タイミングマークt5において、第二アドレスがメインストレージアレイ220のサブブロック2Bへ提供される。同じCPUクロックパルスの立ち下がりエッジに、リードイネーブルパルスR2Bが、1クロックサイクル間、アサートされる。タイミングマークt6において、第二アドレスがメインストレージアレイ220のサブブロック3Bへ提供される。従って、タイミングマークt4、t5、t6において、3つの独立したサブブロック、0A、2B、及び3Bへの、対応する先の3つのリードオペレーションが、順次、利用可能である。
リードイネーブルパルスROA2を受けて、ストレージサブブロック0Aが、ある程度の時間遅延後に、データDOA2を出力しうる。この例では、時間遅延は、ROA2がアサートされてから、5CPUクロックサイクルである。リードイネーブルパルスR2B2を受けて、ストレージサブブロック2Bが、ある程度の時間遅延後に、D2B2データを出力しうる。この例では、時間遅延はR2B2がアサートされてから、5CPUクロックサイクルである。リードイネーブルパルスR3B2を受けて、ストレージサブブロック3Bは、ある程度の時間遅延後に、D3B2データを出力する。この例では、時間遅延は、R3B2がアサートされてから、5CPUクロックサイクルである。従って、タイミングマークt7、t8、及びt9において、同じ3つの独立したサブブロック0A、2B、及び3Bへの、対応する次の3つのリードオペレーションからのデータが、連続して利用可能である。各サブブロックからのデータアウトは、ラッチ信号(図示せず)によりラッチされうる。
図5及び図6と併せて説明されている、リード及びライトオペレーションは別々に説明されているが、そこに説明されているオペレーションは同時に実行されうる。例えば、一連のリード、及び一連のライトは両方、対立しないブロックへ同時にパイプライン化されうる。
図7を参照すると、図1のマイクロプロセッサを含むコンピュータシステムの一実施形態のブロック図が示されている。図1−図4のコンポーネントに対応するものは、明瞭化及び簡略化のために、同一の番号が付けられている。コンピュータシステム700は、メモリバス715を介してシステムメモリ710と結合されている、マイクロプロセッサ100を備えている。マイクロプロセッサ100は更に、システムバス725を介して、I/Oノード720と結合されている。I/Oノード720は、グラフィックバス735を介して、グラフィックアダプタ730と結合されている。I/Oノード720はまた、周辺バスを介して、周辺デバイス740と結合されている。
例示の実施形態では、マイクロプロセッサ100は、メモリバス715を介してシステムメモリ710を直接的に結合されている。従って、マイクロプロセッサは、システムメモリ710へのアクセスを制御するために、メモリインターフェース(図7には示さず)を備えうる。しかしながら、他の実施形態では、システムメモリ710は、I/Oノード720を通って、マイクロプロセッサ10と結合されうる。そのような実施形態では、I/Oノード720は、メモリインターフェース(図示せず)を備えうる。更に、一実施形態では、マイクロプロセッサ100は、図2のキャッシュサブシステム200などのキャッシュサブシステムを備えうる。
システムメモリ710は、いずれの適切なメモリデバイスを備えうる。例えば一実施形態では、システムメモリはダイナミックランダムアクセスメモリ(DRAM:Dynamic Random Access Memory)デバイスの1つ以上のバンクを備えうる。しかしながら、他の実施形態が別のメモリデバイスや構造を備えうることが検討される。
例示の実施形態では、I/Oノード720はグラフィックバス735、周辺バス740、及びシステムバス725と結合されている。従って、I/Oノード720は、様々なバス間のトランザクションの流れを管理するための制御論理やバッファを含む、様々なバスインターフェース論理(図示せず)を備えうる。一実施形態では、システムバス725はHyperTransport(商標)技術と互換性がある、バケットベースの相互接続でありうる。そのような実施形態では、I/Oノード720はパケットトランザクションを処理するように構成されうる。別の実施形態では、システムバス725は、フロントサイドバス(FSB:front-side bus)などの、典型的な共有バスアーキテクチャでありうる。
更にグラフィックバス735はAGP(Accelerated Graphics Port)バス技術と互換性がありうる。一実施形態では、グラフィックアダプタ730は、ディスプレイ用のグラフィックイメージを生成、及び表示するように構成されている、いずれの様々なグラフィックデバイスでありうる。周辺バス745は、PCI(Peripheral Component Interconnect)バスのような、一般の周辺バスの一例である。周辺デバイス740は、モデムやサウンドカードなどの、いずれの種類の周辺デバイスでありうる。
上述の実施形態は、非常に詳しく解説されているが、上述の開示が十分に認識されると、当業者にとっては、様々なバリエーションや変更が明らかになるであろう。以下の請求の範囲は、そのような全てのバリエーションや変更を包含するものと解釈される。
概して本発明は、マイクロプロセッサの分野に応用されうる。
マイクロプロセッサの一実施形態のブロック図。 図1のマイクロプロセッサのキャッシュサブシステムの一実施形態のブロック図。 図2のキャッシュサブシステムのストレージブロックの一実施形態へのアクセス順序を例示したブロック図。 図1のマイクロプロセッサのキャッシュサブシステムの別の実施形態の説明図。 図2及び図4のキャッシュサブシステムの一実施形態のオペレーションを例示したタイミング図。 図2及び図4のキャッシュサブシステムのパイプライン化したオペレーションを例示したタイミング図。 図1のマイクロプロセッサを含むコンピュータサブシステムの一実施形態のブロック図。

Claims (12)

  1. マイクロプロセッサであって、
    命令及びデータでオペレーションを行うように構成されている実行ユニットと、
    前記実行ユニットと結合されているキャッシュメモリサブシステムとを備えており、
    前記キャッシュメモリサブシステムは、
    独立してアクセス可能な複数のストレージブロックを備えたキャッシュメモリと、
    前記複数のストレージブロックと結合され、かつ、各々がアドレスタグ値を含む、複数のタグを格納するように構成されている、独立してアクセス可能な複数のタグユニットと、
    複数のキャッシュアクセスリクエストを前記複数のストレージブロックの各々へ運ぶために結合されている複数のキャッシュバスとを備えており、
    前記複数のキャッシュバスを通じて運ぶために前記複数のキャッシュアクセスリクエストを選択するよう構成されたコントローラを有し、
    前記キャッシュコントローラは、更に、前記独立してアクセス可能な複数のタグユニットのいずれにおいてもキャッシュアクセスの競合が存在しないように、前記複数のキャッシュアクセスリクエストを選択するよう構成され、
    前記複数のキャッシュバスに運ばれる、前記複数のキャッシュアクセスリクエストを受けて、前記複数のストレージブロックの別々のストレージブロックが同時にアクセス可能となる、マイクロプロセッサ。
  2. 前記複数のストレージブロックの各々が、独立してアクセス可能な複数のストレージサブブロックを備えており、前記ストレージサブブロックの各々が、アサートされた非同期リードイネーブル信号の受信を受けて、出力データを提供するように構成され、かつ、所定の前記ストレージサブブロックの1つが、アサートされた非同期ライトイネーブル信号の受信を受けて、データを格納するように構成されている、請求項1記載のマイクロプロセッサ。
  3. 前記複数のタグユニットは、それぞれ前記複数のストレージブロックの異なる一つに対応する、請求項1記載のマイクロプロセッサ。
  4. 前記複数のキャッシュアクセスリクエストの受信を受けて、前記複数のタグユニットの別々のタグユニットが同時にアクセス可能となる、請求項1記載のマイクロプロセッサ。
  5. 前記複数のストレージブロックの各々が、独立してアクセス可能な複数のストレージサブブロックを備え、前記ストレージブロックの別々のストレージブロックに関連するいずれの2つの前記サブブロックが、同時にアクセスされるとともに、同じストレージブロックに関連するいずれの2つの前記サブブロックが、連続するシーケンシャルサイクルでアクセスされる、請求項1記載のマイクロプロセッサ。
  6. キャッシュメモリサブシステムであって、
    独立してアクセス可能な複数のストレージブロック(220A、220B...220N)を備えたキャッシュメモリと、
    前記複数のストレージブロックと結合され、かつ、各々がアドレスタグ値を含む、複数のタグを格納するように構成されている、独立してアクセス可能な複数のタグユニット(210A、210B...210N)と、
    複数のキャッシュアクセスリクエストを、前記複数のストレージブロックの各々に運ぶために結合されている複数のキャッシュバス(240)とを備えており、
    前記複数のキャッシュバスを通じて運ぶために前記複数のキャッシュアクセスリクエストを選択するよう構成されたコントローラを有し、
    前記キャッシュコントローラは、更に、前記独立してアクセス可能な複数のタグユニットのいずれにおいてもキャッシュアクセスの競合が存在しないように、前記複数のキャッシュアクセスリクエストを選択するよう構成され、
    前記複数のキャッシュバスに運ばれる、前記複数のキャッシュアクセスリクエストを受けて、前記複数のストレージブロックの別々のストレージブロックが同時にアクセス可能となるキャッシュメモリサブシステム。
  7. 前記複数のストレージブロックの各々が、独立してアクセス可能な複数のストレージサブブロックを備えており、前記ストレージブロックの別々の1つに関連する、いずれの2つの前記サブブロックが同時にアクセスされるとともに、同じストレージブロックに関連する、いずれの2つの前記サブブロックが、連続するシーケンシャルサイクルでアクセスされる、請求項記載のキャッシュメモリサブシステム。
  8. コンピュータシステムであって、
    命令及びデータを格納するように構成されているシステムメモリと、
    メモリバスを介して前記システムメモリと結合されているマイクロプロセッサを備えており、
    前記マイクロプロセッサは、
    前記命令及びデータでオペレーションを行うように構成されている実行ユニット(124)と、
    前記実行ユニットと結合され、かつ、前記実行ユニットが実行するための前記命令及びデータを格納するように構成されている、キャッシュメモリサブシステムとを備えており、
    前記キャッシュメモリサブシステムは、
    独立してアクセス可能な複数のストレージブロック(220A、220B...220N)を備えたキャッシュメモリと、
    前記複数のストレージブロックと結合され、かつ、各々がアドレスタグ値を含む、複数のタグを格納するように構成されている、独立してアクセス可能な複数のタグユニット(210A、210B...210N)と、
    前記複数のストレージブロックの各々へ複数のキャッシュアクセスリクエストを運ぶために結合されている、複数のキャッシュバス(240)とを備え、
    前記複数のキャッシュバスを通じて運ぶために前記複数のキャッシュアクセスリクエストを選択するよう構成されたコントローラを有し、
    前記キャッシュコントローラは、更に、前記独立してアクセス可能な複数のタグユニットのいずれにおいてもキャッシュアクセスの競合が存在しないように、前記複数のキャッシュアクセスリクエストを選択するよう構成され、
    前記複数のキャッシュバスに運ばれる、前記複数のキャッシュアクセスリクエストを受けて、前記複数のストレージブロックの別々のストレージブロックが同時にアクセス可能となるコンピュータシステム。
  9. 前記複数のストレージブロックの各々が、独立してアクセス可能な複数のストレージサブブロックを備えており、前記ストレージサブブロックの各々が、アサートされた非同期リードイネーブル信号の受信を受けて、出力データを提供するように構成され、かつ、所定の前記ストレージサブブロックの1つが、アサートされた非同期ライトイネーブル信号の受信を受けて、データを格納するように構成されている、請求項記載のコンピュータシステム。
  10. 前記複数のタグユニットは、それぞれ前記複数のストレージブロックの異なる一つに対応する、請求項8記載のコンピュータシステム。
  11. 前記複数のキャッシュアクセスリクエストの受信を受けて、前記複数のタグユニットの別々のタグユニットが同時にアクセス可能となる、請求項記載のコンピュータシステム。
  12. 前記複数のストレージブロックの各々が、独立してアクセス可能な複数のストレージサブブロックを備えており、前記ストレージブロックの別々のストレージブロックに関連した、いずれの2つの前記サブブロックが同時にアクセスされるとともに、同じストレージブロックに関連するいずれの2つの前記サブブロックが、連続するシーケンシャルサイクルでアクセスされる、請求項記載のコンピュータシステム。
JP2004555384A 2002-11-26 2003-11-06 1サイクルで複数回のアクセスを支援するキャッシュメモリを含むマイクロプロセッサ Expired - Fee Related JP4425798B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/304,605 US7073026B2 (en) 2002-11-26 2002-11-26 Microprocessor including cache memory supporting multiple accesses per cycle
PCT/US2003/035280 WO2004049171A2 (en) 2002-11-26 2003-11-06 Microprocessor including cache memory supporting multiple accesses per cycle

Publications (3)

Publication Number Publication Date
JP2006507602A JP2006507602A (ja) 2006-03-02
JP2006507602A5 JP2006507602A5 (ja) 2009-01-15
JP4425798B2 true JP4425798B2 (ja) 2010-03-03

Family

ID=32325257

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004555384A Expired - Fee Related JP4425798B2 (ja) 2002-11-26 2003-11-06 1サイクルで複数回のアクセスを支援するキャッシュメモリを含むマイクロプロセッサ

Country Status (8)

Country Link
US (1) US7073026B2 (ja)
EP (1) EP1565827B1 (ja)
JP (1) JP4425798B2 (ja)
KR (1) KR100955722B1 (ja)
CN (1) CN1717664B (ja)
AU (1) AU2003287522A1 (ja)
TW (1) TWI307476B (ja)
WO (1) WO2004049171A2 (ja)

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2004059491A1 (en) * 2002-12-30 2004-07-15 Intel Corporation Cache victim sector tag buffer
US7254681B2 (en) * 2003-02-13 2007-08-07 Intel Corporation Cache victim sector tag buffer
US7111127B2 (en) * 2003-07-14 2006-09-19 Broadcom Corporation System for supporting unlimited consecutive data stores into a cache memory
JP4046716B2 (ja) * 2004-10-06 2008-02-13 株式会社ソニー・コンピュータエンタテインメント 情報処理装置およびデータ伝送方法
US7685372B1 (en) 2005-01-13 2010-03-23 Marvell International Ltd. Transparent level 2 cache controller
US8347034B1 (en) 2005-01-13 2013-01-01 Marvell International Ltd. Transparent level 2 cache that uses independent tag and valid random access memory arrays for cache access
KR20070105779A (ko) * 2006-04-27 2007-10-31 엠텍비젼 주식회사 프로세스 기능을 갖는 메모리 장치 및 그 프로세스 방법
KR100782594B1 (ko) * 2006-07-14 2007-12-06 엠텍비젼 주식회사 데이터 처리 기능을 구비한 메모리 장치
US8909872B1 (en) 2006-10-31 2014-12-09 Hewlett-Packard Development Company, L. P. Computer system with coherent interconnection
CN101212488B (zh) * 2006-12-26 2011-08-24 梁国恩 双通道的网络储存管理装置与方法
JP4327863B2 (ja) * 2007-03-19 2009-09-09 株式会社東芝 映像蓄積装置とその制御方法
US20090006756A1 (en) * 2007-06-29 2009-01-01 Donley Greggory D Cache memory having configurable associativity
US9442846B2 (en) * 2009-03-17 2016-09-13 Cisco Technology, Inc. High speed memory systems and methods for designing hierarchical memory systems
US8433880B2 (en) 2009-03-17 2013-04-30 Memoir Systems, Inc. System and method for storing data in a virtualized high speed memory system
JP5482145B2 (ja) * 2009-11-25 2014-04-23 富士通株式会社 演算処理装置および演算処理装置の制御方法
WO2011075167A1 (en) * 2009-12-15 2011-06-23 Memoir Systems,Inc. System and method for reduced latency caching
US8843690B2 (en) 2011-07-11 2014-09-23 Avago Technologies General Ip (Singapore) Pte. Ltd. Memory conflicts learning capability
KR20140072276A (ko) * 2012-11-29 2014-06-13 삼성전자주식회사 불휘발성 메모리 및 불휘발성 메모리의 동작 방법
JP2015104045A (ja) * 2013-11-27 2015-06-04 株式会社日立製作所 通信装置、通信方法、および、記録媒体
US9753667B2 (en) * 2015-02-19 2017-09-05 Avago Technologies General Ip (Singapore) Pte. Ltd. High bandwidth memory and glitch-less differential XOR
US10073786B2 (en) * 2015-05-28 2018-09-11 Micron Technology, Inc. Apparatuses and methods for compute enabled cache
KR101727407B1 (ko) * 2015-10-29 2017-04-14 주식회사 넥서스칩스 렌즈 왜곡 교정 장치 및 동작 방법
CN107526691B (zh) * 2016-06-21 2020-06-02 深圳市中兴微电子技术有限公司 一种缓存管理方法及装置
US10915453B2 (en) * 2016-12-29 2021-02-09 Intel Corporation Multi level system memory having different caching structures and memory controller that supports concurrent look-up into the different caching structures
TWI650640B (zh) * 2017-07-14 2019-02-11 瑞昱半導體股份有限公司 用於處理器的資料存取裝置與方法
US10642737B2 (en) * 2018-02-23 2020-05-05 Microsoft Technology Licensing, Llc Logging cache influxes by request to a higher-level cache
US11914518B1 (en) * 2022-09-21 2024-02-27 Arm Limited Apparatus and method for operating a cache storage

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1993013481A1 (en) * 1991-12-23 1993-07-08 Intel Corporation Interleaved cache for multiple accesses per clock in a microprocessor
EP0553743A1 (en) * 1992-01-31 1993-08-04 Motorola, Inc. A cache controller
US5878245A (en) * 1993-10-29 1999-03-02 Advanced Micro Devices, Inc. High performance load/store functional unit and data cache
US5752269A (en) * 1995-05-26 1998-05-12 National Semiconductor Corporation Pipelined microprocessor that pipelines memory requests to an external memory
JP2000501539A (ja) * 1996-09-25 2000-02-08 フィリップス エレクトロニクス ネムローゼ フェンノートシャップ アドレス競合検出を持つ多重ポート・キャッシュメモリ
JPH10214225A (ja) 1996-10-31 1998-08-11 Texas Instr Inc <Ti> キャッシュ読み出し時間を短縮したマイクロプロセッサ回路、システムおよび方法
US5924117A (en) 1996-12-16 1999-07-13 International Business Machines Corporation Multi-ported and interleaved cache memory supporting multiple simultaneous accesses thereto
US6237064B1 (en) 1998-02-23 2001-05-22 Intel Corporation Cache memory with reduced latency
US5999474A (en) * 1998-10-01 1999-12-07 Monolithic System Tech Inc Method and apparatus for complete hiding of the refresh of a semiconductor memory
US6427191B1 (en) 1998-12-31 2002-07-30 Intel Corporation High performance fully dual-ported, pipelined cache design
US6574708B2 (en) * 2001-05-18 2003-06-03 Broadcom Corporation Source controlled cache allocation
EP1495407A1 (en) * 2002-04-08 2005-01-12 The University Of Texas System Non-uniform cache apparatus, systems, and methods

Also Published As

Publication number Publication date
KR20050085150A (ko) 2005-08-29
US7073026B2 (en) 2006-07-04
KR100955722B1 (ko) 2010-05-03
WO2004049171A2 (en) 2004-06-10
CN1717664B (zh) 2010-10-27
CN1717664A (zh) 2006-01-04
TW200417913A (en) 2004-09-16
TWI307476B (en) 2009-03-11
US20040103250A1 (en) 2004-05-27
AU2003287522A1 (en) 2004-06-18
JP2006507602A (ja) 2006-03-02
EP1565827A2 (en) 2005-08-24
EP1565827B1 (en) 2016-06-15
WO2004049171A3 (en) 2004-11-04

Similar Documents

Publication Publication Date Title
JP4425798B2 (ja) 1サイクルで複数回のアクセスを支援するキャッシュメモリを含むマイクロプロセッサ
JP2006517040A (ja) キャッシュラインサイズが異なる第一レベルキャッシュと第二レベルキャッシュを備えたマイクロプロセッサ
US6643745B1 (en) Method and apparatus for prefetching data into cache
US8707012B2 (en) Implementing vector memory operations
US5692152A (en) Master-slave cache system with de-coupled data and tag pipelines and loop-back
US7120755B2 (en) Transfer of cache lines on-chip between processing cores in a multi-core system
US5784590A (en) Slave cache having sub-line valid bits updated by a master cache
US7130967B2 (en) Method and system for supplier-based memory speculation in a memory subsystem of a data processing system
KR100454441B1 (ko) 전폭캐쉬를가진집적프로세서/메모리장치
US7124252B1 (en) Method and apparatus for pipelining ordered input/output transactions to coherent memory in a distributed memory, cache coherent, multi-processor system
US12001351B2 (en) Multiple-requestor memory access pipeline and arbiter
KR20040045035A (ko) 힌트 버퍼를 이용한 메모리 액세스 대기시간 숨김
US6557078B1 (en) Cache chain structure to implement high bandwidth low latency cache memory subsystem
US20050206648A1 (en) Pipeline and cache for processing data progressively
US20100325631A1 (en) Method and apparatus for increasing load bandwidth
JP2009512933A (ja) アクセス性の高いストア帯域幅を備えたキャッシュ
EP1668513B1 (en) Cache bank interface unit
US20040153610A1 (en) Cache controller unit architecture and applied method
US7251710B1 (en) Cache memory subsystem including a fixed latency R/W pipeline
US7124236B1 (en) Microprocessor including bank-pipelined cache with asynchronous data blocks
US7181575B2 (en) Instruction cache using single-ported memories
JPH05120011A (ja) 命令キヤツシユを有するパイプライン構成の情報処理装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20061031

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20081119

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20091110

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20091209

R150 Certificate of patent or registration of utility model

Ref document number: 4425798

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121218

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131218

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees