JP2006501548A - リモートキャッシュプレゼンス情報を記録するプロセッサキャッシュを備えたコンピュータシステム - Google Patents

リモートキャッシュプレゼンス情報を記録するプロセッサキャッシュを備えたコンピュータシステム Download PDF

Info

Publication number
JP2006501548A
JP2006501548A JP2004540309A JP2004540309A JP2006501548A JP 2006501548 A JP2006501548 A JP 2006501548A JP 2004540309 A JP2004540309 A JP 2004540309A JP 2004540309 A JP2004540309 A JP 2004540309A JP 2006501548 A JP2006501548 A JP 2006501548A
Authority
JP
Japan
Prior art keywords
cache
memory
block
data
computer system
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.)
Granted
Application number
JP2004540309A
Other languages
English (en)
Other versions
JP4230998B2 (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 JP2006501548A publication Critical patent/JP2006501548A/ja
Application granted granted Critical
Publication of JP4230998B2 publication Critical patent/JP4230998B2/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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0817Cache consistency protocols using directory methods
    • G06F12/082Associative directories
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/25Using a specific main memory architecture
    • G06F2212/251Local memory within processor subsystem
    • G06F2212/2515Local memory within processor subsystem being configurable for different purposes, e.g. as cache or non-cache memory
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

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)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

リモートキャッシュプレゼンス情報を記録するプロセッサキャッシュを備えたコンピュータシステムである。一実施形態では、複数のプレゼンスベクトルが、他のノードへマップされた特定のデータのブロックが、遠隔にキャッシュされているかどうかを示す。プレゼンスベクトルは専用のストレージに記録せずに、リモートキャッシュプレゼンスベクトルは、プロセッサコア(50)と関連する、L2キャッシュなどの、キャッシュメモリサブシステム(52)の指定の位置に記録される。例えば、キャッシュメモリサブシステムのキャッシュの指定ウエイが、リモートキャッシュプレゼンスベクトルを記録するために割当てられ、一方でキャッシュの残りのウエイが、通常のプロセッサデータを記録するために使用される。新たなデータブロックはキャッシュメモリサブシステムからの取り外しに応答して遠隔にキャッシュされる、更に他の実施形態では、キャッシュメモリサブシステムの追加エントリが、プローブコマンドと応答トラフィックをフィルタリングするためにディレクトリエントリを記録するために使用される。

Description

本発明はコンピュータシステムに関し、更に具体的には、コンピュータシステム内のリモートキャッシュに関する。
典型的に、コンピュータシステムにはプロセッサがメモリへアクセスするレイテンシーを小さくするために、1つ以上のキャッシュが含まれる。概して、キャッシュは各々がコンピュータシステムのメモリシステムにおいて対応のアドレスに記録されるデータのコピーである、1つ以上のブロックを記録することができる。
1つ以上のキャッシュに所定のブロックが記録され、また更に、キャッシュコピーのうちの1つがメモリシステムのコピーに関して変更されるために、コンピュータシステムがキャッシュとメモリシステム間のコヒーレンシーを維持することが多い。ブロックへのアップデートが、所定のコヒーレンシープロトコルに従い、ブロックの他のキャッシュコピーにより反映される場合に、コヒーレンシーが維持される。様々な特定のコヒーレンシープロトコルは周知である。本明細書で用いられているように、“ブロック”とはコヒーレンシーのためにユニットとして扱われる、連続する記憶位置に記録される一連のバイトのことである。実施形態の中には、ブロックがキャッシュの割当ての単位、あるいは非割り当ての単位であることができるものがある。ブロックのバイト数は設計上の選択により変化し、また、いずれのサイズであることができる。一例を挙げると、32バイト及び64バイトブロックが頻繁に使用される。
多くのコヒーレンシープロトコルは、コンピュータシステム内の様々なキャッシュ間で通信を行うためにプローブを使用する。一般的に、“プローブ”とはキャッシュがブロックのコピーを有しているかを判断するために、また状況に応じて、キャッシュがブロックを配置する必要がある状態を示すために、コンピュータシステムのコヒーレンシーポイントからコンピュータシステムの1つ以上のキャッシュへ送信されるメッセージのことである。コヒーレンシーポイントは、ブロックをリードあるいはライトするために、コンポーネント(例:プロセッサ)からコマンドを受けてプローブを送信する。各プローブレシーバはブローブに応答し、かつ、プローブ応答が受信されると、コマンドは終了される。コヒーレンシーポイントは、メモリシステムに対するメモリコントローラなどのコヒーレンシーを維持する責任があるコンポーネントである。
一般に、コンピュータシステムはブロードキャストキャッシュのコヒーレンシープロトコル、あるいはディレクトリベースキャッシュのコヒーレンシープロトコルのどちらかを導入している。ブロードキャストプロトコルを導入しているシステムでは、プローブがすべてのプロセッサ(あるいはキャッシュサブシステム)へ同時送信される。データの共有コピーを有するサブシステムが、ブロックへの排他アクセスに対するコマンドから生じるプローブを監視する場合、典型的にそのコピーは無効にされる。同様に、データのブロックを所有中のサブシステムが、そのブロックに対応するプローブを監視する場合、所望に応じてデータをリクエスタに与えることにより、またそのコピーを無効にすることにより、ブロックを所有するサブシステムが典型的に応答する。
一方で、ディレクトリベースのプロトコルを導入しているシステムは、データのキャッシュコピーの存在を示す情報を含むディレクトリを維持する。ディレクトリ情報はプローブを無条件に同時送信せず、特定のコヒーレンシーアクションを起こすためにプローブが送信される必要がある、(データのキャッシュコピーを含む)特定のサブシステムを決定する。例えばディレクトリは、様々なサブシステムがデータのブロックの共有コピーを有すことを示す情報を含むことができる。そのブロックへの排他アクセスに対するコマンドを受けて、無効プローブが共有サブシステムに送信される。ディレクトリはまた、データの特定ブロックを所有中のサブシステムを示す情報も含むことができる。従って、コマンドへの応答は、所有中のサブシステムが要求中のサブシステムにデータを送信させるプローブを更に含む。非常に多くの、ディレクトリベースキャッシュのコヒーレンシープロトコルの変形は周知である。
ブロードキャストキャッシュのコヒーレンシープロトコルを導入しているシステムの、他のプロセッサすべてにプローブを同時送信する必要があるため、プロセッサを相互接続するネットワークに関するバンド幅が、特に多くのプロセッサを導入しているシステムに対して、あるいは多くのプローブが短期間に送信される場合に、急速に性能面での限定要因となりうる。そのような環境において、ディレクトリプロトコルを導入しているシステムが、ネットワークトラフィックの減少により、また、ネットワークバンド幅のボトルネックが回避されるために、総合的な高性能を達成する。
ディレクトリベースのシステムは、より効率的なキャッシュのコヒーレンシープロトコルを可能にする一方で、追加のハードウエアを要求することがよくある。ディレクトリ機構はASIC(特定用途向け集積回路:Application Specific Integrated Circuit)、あるいはプロセッサから離れた、他のセミカスタムチップに実装されうるディレクトリキャッシュを有することが多い。ディレクトリキャッシュがセパレートチップに実装される場合、システム全体のコストは増加し、同様に、ボード要求や電力消費、及び冷却要求も増加する。他方、プロセッサコアと同じチップにディレクトリキャッシュを組み込むことは望ましくなく、特にシングルプロセッサあるいはマルチプロセッサシステムの双方に使用することを目的とした汎用マイクロプロセッサに対しては望ましくない。シングルプロセッサシステムで使用される場合、ディレクトリキャッシュは役に立たなくなり、これにより、貴重なダイ領域を無駄にし、かつ、生産の減少のためにコストが増加することになる。
メモリのレイテンシーを小さくするための、共有メモリのコンピュータシステムで導入される他の技術は、リモートキャッシュとして言及される。リモートキャッシュを導入しているシステムでは、一つのノードに取り付けられているシステムメモリの一部が、他のノードへマップされたメモリ位置に対応するキャッシュデータに割当てられる。リモートキャッシュの利点は、リモートメモリのレイテンシーがローカルメモリのレイテンシーよりも非常に大きいシステムにおいて、最も顕著である。
リモートキャッシュを実装するシステムでは、ストレージ機構(storage mechanism)が典型的に、リモートキャッシュに含まれるラインあるいはブロックを認識するために導入される。上述のように、シングルプロセッサ環境に配置する目的の集積回路内にそのような機能を含めることが、ダイ領域を浪費し、コストを増加させることになる。
リモートキャッシュプレゼンス情報を記録するプロセッサを備えたコンピュータシステムが開示される。一実施形態では、他のノードへマップされた特定ブロックのデータが遠隔にキャッシュされているかどうかを示すために、複数のプレゼンスベクトルが記録される。プレゼンスベクトルは専用のディレクトリストレージに記録されず、リモートキャッシュプレゼンスベクトルは、L2キャッシュなどの、プロセッサコアに関連するキャッシュメモリサブシステムの指定の位置に記録される。例えば、キャッシュメモリサブシステムの指定のウエイ(way)がリモートキャッシュプレゼンスベクトルを記録するために割当てられ、一方で、キャッシュメモリサブシステムのその他のウエイが、通常のプロセッサデータを記録するために使用される。1つの特定の実施品では、クリーンで共有データブロックだけが、遠隔にキャッシュされる。新たなデータブロックは、キャッシュメモリサブシステムからの取り外しを受けて、遠隔にキャッシュされうる。更なる実施形態では、キャッシュメモリサブシステムの追加エントリが、プローブコマンドと応答トラフィックをフィルタリングするために、ディレクトリエントリを記録するために使用される。
リモートキャッシュプレゼンス情報を記録するために、キャッシュメモリサブシステムを利用することにより、別々のディレクトリに記録する必要性が回避される。その結果、全体のコストが低減し、また、必要とされるボード領域、電力消費、及び冷却要求も同様に低減される。更に、更に、リモートキャッシュプレゼンス情報を記録するために、キャッシュメモリサブシステムの利用が、サブシステムがシングルプロセッサ環境に配置されているか、あるいはマルチプロセッサ環境に配置されているか、に基づいて選択的に可能にされる実施形態が可能である。従って、シングルプロセッサ環境に配置される場合、キャッシュメモリサブシステムの記録位置が、プロセッサキャッシングオペレーションのために排他的に利用され、かつ、専用のディレクトリストレージの浪費(即ち、不利用:non-utilization)が回避される。
本発明の他の目的及び利点は、以下の詳細な説明を読むことによって、また添付の図面を参照することによって明らかにされるであろう。
本発明は、様々な改良を行い、また、他の形態で実施することができるが、ここに説明されている特定の実施例は、例示として示さたものであり、以下にその詳細を記載する。しかし当然のことながら、ここに示した特定の実施例は、本発明を開示されている特定の形態に限定するものではなく、むしろ本発明は添付の請求項によって規定されている発明の範疇に属する全ての改良、等価物、及び変形例をカバーするものである。
図1にコンピュータシステム10の一実施形態を示す。コンピュータシステム10は複数の処理ノード12A、12B、12C、及び12Dを含む。各処理ノードは、対応するメモリコントローラ16A−16Dを介して、対応するメモリ14A−14Dと結合されている。更に、各処理ノード12A−12Dは他の処理ノード12A−12Dと通信するために使用されるインターフェースロジック18A−18Dを含む。例えば、処理ノード12Aは処理ノード12B及び12Cと通信するために、インターフェースロジック18Aを含む。同様に、処理ノード12Bは処理ノード12A及び12Dと通信するために、インターフェースロジック18Bを含む、などである。図1の実施形態では、処理ノード12Dが、インターフェースロジック18Dを介して入力/出力(I/O)デバイス20Aと通信するために結合されており、かつ、I/Oデバイス20Aは更に第2のI/Oデバイス20Bと結合されている。他の処理ノードも同様に他のI/Oデバイスと通信することができる。別の形態では、処理ノードは、I/Oバスと結合されているI/Oブリッジと通信することができる。
コンピュータシステム10はノード間で通信するために、パケットベースのリンクを実装することができる。描かれている実施形態では、リンクは一連の一方向ラインとして実装される(例:ライン24Aは処理ノード12Aから処理ノード12Bへパケットを送信するために使用され、またライン24Bは処理ノード12Bから処理ノード12Aへパケットを送信するために使用される)。他の一連のライン24C−24Hは図1に示すように、他の処理ノード間にパケットを送信するために使用される。リンクは処理ノード間で通信するためにキャッシュコヒーレント式で動作され、あるいはI/Oデバイス20A−20B間(及び所望に応じて、更なるI/Oデバイス間)でデイジーチェーン構造として、非コヒーレント式で動作される。1つの処理ノードから別の処理ノードへ送信されるパケットが、1つ以上の中間のノードを通過することが知られている。例えば、処理ノード12Aにより、処理ノード12Dへ送信されるパケットは、図1に示すように、処理ノード12Bあるいは処理ノード12Cのどちらかを通過する。いずれの適切なルーティングアルゴニズムが使用されうる。コンピュータシステム10の他の実施形態では、図1に示す実施形態よりも多い、あるいは少ない処理ノードを有すことができる。更に、各処理ノードがポイントツーポイントネットワークを通って、その他のどの処理ノードと結合される、他の実施形態も可能である。
描かれているメモリコントローラとインターフェースロジックに加えて、以下に更に説明されているように、各処理ノード12A−12Dは1つ以上のプロセッサ、及び関連キャッシュを有することができる。概して、処理ノードは少なくとも1つのプロセッサを有し、所望に応じて、メモリおよび他のロジックと通信するために、メモリコントローラを任意に有することができる。
メモリ14A−14Dはいずれの適切なメモリデバイスを有することができる。例えば、メモリ14A−14Dは、1つ以上のRAMBUS DRAM(RDRAM)、シンクロナスDRAM(SDRAM)、DRAM、スタティックRAM、などを有することができる。コンピュータシステム10のアドレススペースは、メモリ14A−14D間に分けられる。各処理ノード12A−12Dは、どのアドレスがどのメモリ14A−14Dにマップされるか、従って、特定のアドレスに対するメモリリクエストがどの処理ノード12A−12Dへ送信される必要があるか、を判断するために使用されるメモリマップを有す。一実施形態では、コンピュータシステム10内のアドレスに対するコヒーレンシーポイントは、アドレスに対応するバイトを記録するメモリに結合されるメモリコントローラ16A−16Dである。メモリコントローラ16A−16Dはメモリ14A−14Dへインターフェース接続するための制御回路を有することができる。更に、メモリコントローラ16A−16Dは、メモリリクエストを待ち行列に入れるためにリクエストキューを有することができる。
概して、インターフェースロジック18A−18Dは、リンクからパケットを受信するとともに、リンクに送信されるべきパケットをバッファするために、バッファを有することができる。コンピュータシステム10はパケットを送信するために、いずれの適切なフロー制御機構を導入することができる。
I/Oデバイス20A−20Bはいずれの所望の周辺デバイスの一例である。例えば、I/Oデバイス20A−20Bはネットワークインターフェースカード、ビデオアクセレータ、オーディオカード、ハードあるいはフロッピーディスクドライブあるいはドライブコントローラ、SCSI(小型コンピュータ用周辺機器インターフェース:Small Computer Systems Interface)アダプタ、およびテレホンカード、モデム、サウンドカード、および、GPIB(汎用インターフェースバス)などの様々なデータ収集カード、あるいはフィールドバスインターフェースカード、を有することができる。
コンピュータシステム10の処理ノード12A−12D間の通信は、所望に応じて、様々な特定のバケットベースのメッセージングを用いて行われる。図2はコンピュータシステム10内のコヒーレントリンクの一実施形態に従い導入された、具体的な一連のパケットベースのメッセージを例示したテーブル38である。他の適切なパケット定義を導入した実施形態、あるいは、バスベースの通信機構を導入した実施形態を含む、他の実施形態が可能であり、検討される。
図2に示すように、リードトランザクションは、ReadSized、RdBlk、RdBlkSあるいはRdBlkModコマンドのうちの1つを使用して開始される。ReadSizedコマンドは、キャッシュ不可能な読み取り、あるいはブロックサイズ以外のデータの読み取りに対して使用される。読み取られるデータ量は、ReadSizedコマンドパケットにエンコードされる。ブロックを読み取るために、(i)書き込み可能なブロックのコピーが要求され、RdBlkModコマンドが使用されうる場合、あるいは(ii)ブロックのコピーが要求されるが、ブロックの変更を目的としないことが分かっており、RdBlkSコマンドが使用されうる場合でない限りは、RdBlkコマンドが使用される。一般的に適切なリードコマンドは、トランザクションを開始するソースから、ブロックに対応するメモリを所有するターゲットノードへ送信される。ターゲットノードはコヒーレンシーを維持するために、システムの他のノードへプローブコマンドを送信する。場合によってプローブコマンドは、特定ノードのブロックとアップデートされたブロックのコピー(存在する場合)を、ソースノードへ送信される状態へと変化させる結果をもたらす。プローブコマンドを受信する各ノードは、ソースノードへProbeResp応答パケットを送信する。プローブノードがアップデートされたリードデータのコピーを有している場合(即ち、ダーティデータ)、そのノードはRdResponse応答パケットとダーティデータを送信する。更に、ターゲットノードのメモリコントローラは、データパケットのデータを受けて、RdResponse応答パケットを使用して、要求されたリードデータを送信する。ソースノードがプローブノードからRdResponse応答パケットを受信する場合、そのリードデータが使用される。ソースノードがプローブノードからRdResponse応答パケットを受信しない場合、ターゲットノードからのデータが使用される。プローブ応答とリードデータの各々がソースノードに受信されると、ソースノードはトランザクション終了の肯定応答として、ターゲットノードにSrcDone応答パケットを送信する。ダーティデータを送信するノードも、要求されたリードデータのターゲットノードにより送信を中止するために、ターゲットノードへMemCancel応答パケットを送信する。
ライトトランザクションは対応のデータパケットを受けて、WrSized又はVicBlkコマンドを使用して開始される。WrSizedコマンドはキャッシュ不可能な書き込みあるいはブロックサイズ以外のデータの書き込みに対して使用される。WrSizedコマンドに対してコヒーレンシーを維持するために、ターゲットノードはシステムの他のノードの各々へプローブコマンドを送信する。プローブコマンドに応答して、各プローブノードはターゲットノードへProbeResp応答パケットを送信する。プローブノードがダーティデータを記録している場合、プローブノードはRdResp応答パケット及びダーティデータで応答する。このような方法で、WrSizedコマンドによりアップデートされたブロックは、WrSizedコマンドにより得られるデータと合わせるために、メモリコントローラへ戻される。プローブノードの各々からブローブ応答を受信すると、メモリコントローラはトランザクション終了の肯定応答を得るために、TgtDone応答パケットをソースノードへ送信する。ソースノードはSrcDone応答パケットで応答する。
ノードにより変更され、ノード内のキャッシュに交換されている犠牲のブロック(victim block)は、VicBlkコマンドを使用してメモリへ送信され戻される。プローブはVicBlkコマンドには必要とされない。従って、メモリへ犠牲のブロックデータを引き渡すために、ターゲットメモリコントローラが準備される場合、ターゲットメモリコントローラは犠牲のブロックのソースノードへTgtDone応答パケットを送信する。ソースノードは、データが引き渡されるべきであると示すSrcDone応答パケット、あるいは、VicBlkコマンドの送信とTgtDone応答パケット(例:介入しているプローブに応答して)の受信との間でデータが無効にされていることを示すMemCancel応答パケットのどちらかで応答する。
ChangetoDirtyコマンドパケットは書き込み不可能な状態のソースノードにより記録されるブロックに対して書き込み許可を得るために、ソースノードによって送信される。ChangetoDirtyコマンドで開始されるトランザクションは、ターゲットノードがデータを戻さない点を除いて、読み取りと同様の動作をする。ValidateBlkコマンドは、ソースノードがブロック全体をアップデートする目的である場合、ソースノードによって記録されていないブロックに対して書き込み許可を得るために使用される。そのようなトランザクションに対して、ソースノードへデータが送信されることはないが、その他の点では、リードトランザクションと同様の動作をする。
TgtStart応答は、トランザクションが開始したことを示すために、ターゲットによって使用される(例:後続のトランザクションを順序付けるために)。Nop情報パケットは、例えば、ノード間にバッファフリーの指示を送信するために使用される、ノーオペレーションパケットである。Broadcastコマンドはノード間にメッセージを同時送信するために使用される(例:ブロードキャストコマンドは割込みを分散するために使用される)。最後に、同期情報パケットは、ファブリックの同期化が要求される場合に使用される(例:エラー検出、リセット、初期化、など)。他の実施形態では所望に応じて、他の種類の命令や関連のコヒーレンシープロトコルが導入されうることが知られている。
図3に典型的な処理ノード12Aの一実施形態のブロック図を示す。図1の回路部分に対応する箇所には同じ番号が付けられている。処理ノード12Aは、メモリコントローラ16A、インターフェースロジック18A、プロセッサコア50、キャッシュメモリサブシステム52、およびパケット処理ロジック58を有す。処理ノード12Aは所望に応じて、1つ以上の追加のプロセッサコア54とキャッシュメモリサブシステム56も有してよい。一実施形態では、例示の処理ノード12Aの機能性が、単一集積回路に組み込まれる。処理ノード12B−12Dは類似の構成であってよい。
一般に、パケット処理ロジック58は、処理ノード12Aに結合されているリンクに受信されるコントロールパケットに応答するように、プロセッサコア50と54、及び/あるいはキャッシュメモリサブシステム52と56に応答してコントロールパケットを生成するように、メモリコントローラ16Aによりサービスのために選択されるトランザクションに応答して、プローブコマンドと応答パケットを生成するように、かつ、ノード12Aがインターフェースロジック18Aを介し、他のノードに対し中間ノードである パケットを送るように、構成される。パケットを受信し、かつ、パケット処理ロジック58が使用するインターナルクロックへパケットを同期化するためにインターフェースロジック18Aを含むことができる。
キャッシュサブシステム52及び56はデータのブロックを記録するように構成される高速のキャッシュメモリを有す。キャッシュメモリサブシステム52及び56はそれぞれのプロセッサコア50及び54内に統合されうる。別の形態では、キャッシュメモリサブシステム52及び56は所望に応じて、バックサイドキャッシュ構造で、あるいはインライン構造でプロセッサコア52及び56と結合される。また更に、キャッシュメモリサブシステム52及び56はキャッシュの階層として実装されうる。プロセッサコア50及び54(階層内)に近接したキャッシュは所望に応じてプロセッサコア50及び54に統合されてよい。一実施形態では、キャッシュメモリサブシステム52及び56は各々L2キャッシュ構造を表す。
プロセッサコア50及び54は所定の命令セットに従い命令を実行するために、回路を含む。例えば、x86命令セットアーキテクチャが選択されうる。他の態様では、Alpha、PowerPc、あるいはいずれの他の命令セットアーキテクチャが選択されうる。一般的に、プロセッサコア50及び54がデータと命令のために、それぞれ、キャッシュメモリサブシステム52及び56にアクセスする。キャッシュミス(cache miss)が検出された場合は、リードリクエストが生成され、不明のブロック(missing block)がマップされているノード内のメモリコントローラへ送信される。
以下に更なる詳細が解説されているように、コンピュータシステム10の一実施形態では、ディレクトリエントリは特定のトランザクションのためにプローブコマンドと応答トラフィックをフィルタリングするために維持される。ディレクトリエントリは専用のディレクトリストレージに記録されずに、キャッシュメモリサブシステム52(及び実装に応じて、キャッシュメモリサブシステム56)の指定された位置に記録される。コンピュータシステム10の更なる実施形態では、キャッシュメモリサブシステム52の追加の位置が、リモートキャッシュプレゼンス情報を記録するために使用されうる。ディレクトリエントリの記録のために、及び/あるいは、リモートキャッシュプレゼンス情報のためにキャッシュメモリサブシステム52を利用することにより、別々にディレクトリを記録する必要がなくなる。その結果、全体のコストが低減され、また、要求されるボード領域、電力消費、及び冷却要求も同様に低減される。更に、ディレクトリエントリを記録するために、及び/あるいはリモートキャッシュプレゼンス情報のために、キャッシュメモリサブシステム52を利用することが、サブシステムがシングルプロセッサ環境に配置されるか、あるいはマルチプロセッサ環境に配置されるかどうかに基づき、選択的に可能にされる実施形態が可能である。従って、シングルプロセッサ環境に配置される場合、キャッシュメモリサブシステムの記録位置は、プロセッサキャッシュオペレーションに対して排他的に利用され、また、専用ディレクトリストレージの浪費(即ち、不利用)が回避される。キャッシュメモリサブシステム52のこれらの特徴に関する特定の詳細は以下に更に解説される。
図4に、メモリコントローラ16Aの一実施形態のブロック図を示す。メモリコントローラ16B−16Dは同様の構造であってよい。図4の実施形態において、メモリコントローラ16Aはリクエストキュー60、コヒーレンシー制御回路64、及びメモリアクセス制御回路66を有す。
メモリコントローラ16Aはパケット処理ロジック58からリクエストキュー60へのコマンドパケットを受信する。コマンドパケットは、コマンドにより影響を与えられるアドレスがメモリ14Aのメモリ位置に対応する場合に、パケット処理ロジック58によりメモリコントローラ16Aに送られる。換言すれば、コマンドパケットのアドレスがメモリ14Aに記録されたブロックをアドレス指定する場合、コマンドパケットはメモリコントローラ16Aに送られる。メモリコントローラ16Aはリクエストキュー60のコマンド情報を待ち行列に入れ、その後、コマンドを処理する。コヒーレンシー制御回路64により、コマンドがコヒーレント式で確実に実施される。コマンドに対してプローブが要求される場合、コヒーレンシー制御回路64はパケット処理ロジック58へプローブ指示(probe indication)を送信する。例えば、プローブ指示は対応するコマンド、アドレス、及びコマンドの種類から、SrcNode、SrcUnit、及びSrcTagを含む。パケット処理ロジック58はプローブ指示に応答して、プローブコマンドを送信する。コヒーレンシー制御回路64はパケット処理ロジック58からSrcDoneパケットを更に受信し、かつ、WrSizedコマンドに対してプローブ応答を受信する。メモリアクセス制御回路66は、コヒーレンシー制御回路64により引き渡されるコマンドを実施するために、メモリ14Aと連結することができる(例:コヒーレンシーオペレーションが送信され、他のノードから受信されるべきいずれの応答が受信された後)。コマンドが読み取りの場合、データはRdResponseパケットのソースノードへフォーワードするために、メモリ14Aからパケット処理ロジック58へ戻されうる。
更にコヒーレンシー制御回路64は特定のデータブロックに対してディレクトリエントリを維持するように構成される。上述の通り、これらのディレクトリエントリはキャッシュメモリサブシステム52、及び/あるいはキャッシュメモリサブシステム56の指定位置内に記録される。この目的のために、コヒーレンシー制御回路64は、キャッシュメモリサブシステムへインターフェースを有することができる。コヒーレンシー制御回路は、コマンドの種類に基づくコマンドに対し、かつ、コマンドにより特定されるアドレスに対するディレクトリエントリの存在に基づくコマンドに対し、プローブが要求されるかどうかを判断する。ディレクトリエントリは実施品に応じて、様々なコヒーレンシー情報を含むことができる。例えば、ディレクトリエントリは所定ブロックのオーナー、ブロックが所定モードで変更されるかどうか、及び/あるいはブロックの共有コピーを有すノードの存在、を示すことができる。様々な典型的なディレクトリエントリのフォーマットについての更なる詳細は以下に解説される。
図5はキャッシュメモリサブシステム52の一実施形態を例示したブロック図である。キャッシュメモリサブシステム52はキャッシュコントローラ74に結合されたキャッシュメモリ72を有す。描かれている実施形態では、以下に解説されている通り、キャッシュコントローラ74は、キャッシュメモリ72内のディレクトリエントリの記録を可能にするようにプログラマブルに設定される、モード記録ユニット75を有す。
通常のキャッシュエントリ(即ち、プロセッサコア50により動作されるデータを記録するキャッシュメモリ72内のエントリ)はディレクトエントリと同様、所望に応じて様々な特別なフォーマットでキャッシュに記録される。図6に2インターリーブを備えたK−wayセットアソシエイティブキャッシュ構造として実装される、一つの可能なキャッシュ配置を示す。データエントリ、タグフィールド、及びステートフィールドを備えた、キャッシュメモリ72内のストレージ102のブロックが示されている。一実施形態では、データエントリは64バイトのデータを有す。ステートフィールドは、MOESIプロトコルにおいて、Modified、Owned、Exclusive、Shared、あるいはInvalidなどの、キャッシュブロックの状態を確認する。従来の方法では、キャッシュヒットは、キャッシュブロックとともに記録されるタグ情報を備えたキャッシュメモリにアクセスするために使用される、アドレスのタグフィールドを比較することによって判断される。キャッシュメモリの所定の一連のブロックはアドレスのインデックス部を用いてアクセスされる。LRUフィールドは、参照頻度が最も低いセットのエントリを示し、かつ、キャッシュコントローラ74により導入されるキャッシュ交換アルゴリズムに関連して使用される。図6に例示するキャッシュ配置は従来のものである。他の実施形態では、キャッシュメモリ72は他の特別なキャッシュ配置を用いて実装されうることが知られている。また、シングルプロセッサ環境に配置される場合は、キャッシュメモリ72の全記録位置が通常のキャッシュエントリに対して使用されうることも知られている。(例:シングルプロセッサ環境モードでキャッシュコントローラ74のモード記録ユニット75を設定することにより)。
既述の通り、マルチプロセッサ環境に配置される場合、キャッシュメモリ72の位置のいくつかは、ディレクトリエントリを記録するために使用される。ディレクトリエントリはコヒーレンシーオペレーションを制御するために、コヒーレンシー制御回路により維持され、アクセスされる。
ディレクトリエントリは様々な方法でキャッシュメモリ72内に記録される。例えば、図7に、キャッシュメモリ72の指定されたウエイ(way)がディレクトリエントリを記録するために使用されるキャッシュ配置を示す。一実施形態では、この構造はマルチプロセッサ環境モードにおいて、キャッシュコントローラ74のモード記録ユニット75をプログラミングすることにより、プログラマブルに設定される。
図7の実施形態は、所定のキャッシュブロックが複数のディレクトリエントリを記録する、ダイレクトマップディレクトリキャッシュ構成の一例である。例えば、一実施形態では、各ディレクトリエントリは16ビットを有し、これにより、キャッシュブロックの64バイトのデータフィールドが32ディレクトリエントリを記録することができる。所定のディレクトリエントリは、キャッシュにアクセスするために使用されるアドレスのディレクトリインデックス部によりインデックスが付けられる。一実施形態では、ディレクトリエントリは選択されるアドレスのビットに基づいて、(図3のキャッシュメモリサブシステム52や56などの)マルチキャッシュメモリサブシステムを通ってインターリーブされる。ディレクトリヒットは、キャッシュブロックとともに記録されるブロックタグ(例:TagL2)とディレクトリエントリの一部として記録されるディレクトリタグ(例:Tagdir)の両方が、キャッシュにアクセスするために使用される、対応のアドレスのタグ部に一致する場合に発生する。
コンピュータシステム10の一実施形態では、ディレクトリエントリはModified、Owned、あるいはExclusive状態のブロックを追跡するために使用される。ディレクトリエントリの存在は、ブロックがキャッシュされることを意味する。プロセッサがExclusiveからModifiedへとブロックを静かに移行するので、対応のキャッシュメモリサブシステムと、プロセッサコアの外側の状態E及びMは区別がつかないことが知られている。従って、そのような実施形態では、ディレクトリエントリは状態O(Owned)、状態ME(Modified/Exclusive)あるいは状態I(Invalid)のいずれかを含むことができる。ディレクトリエントリの不在は、ブロックが様々なキャッシュメモリサブシステムにおいて共有されている、あるいは無効にされていることを意味する。キャッシュの競合性ミスが発生する場合、影響を受けたキャッシュブロックに対する全てのディレクトリエントリが、M、OあるいはEの状態から格下げされる必要があることが知られている。ModifiedあるいはOwnedブロックはメモリへコピーされ戻されるとともに、状態Sへと移行される。
図8及び図9に、プローブコマンドおよび応答トラフィックをフィルタリング(または制御)するために、コンピュータシステム10の一実施形態において利用されうるディレクトリエントリの方法を示す。図8及び9において、一連の処理ノードP0−P3が示されており、各々は例えば図1の対応の処理ノード12を表している。処理ノードP0−P3の各々は、関連メモリ(メモリ0−3)及びL2キャッシュを例示する目的で示されている。先述の解説によれば、L2キャッシュの各々は対応の一連のディレクトリエントリとともに示されている。
図8にメモリ0にマップされるブロックへリードリクエストを発行する処理ノードP3に応答して実施される、典型的な一連のオペレーションを示す。この例では、リードリクエストにより、処理ノードP3の共有状態にインストールされるブロックがもたらされる。示されているように、メモリリクエストは処理ノードP2を通って処理ノードP0へ送られ、またディレクトリエントリがキャッシュメモリサブスステムのキャッシュブロックに対して存在するかどうかを判断するために、処理ノード0によりディレクトリルックアップが実施される(例:図4の対応のコヒーレンシー制御回路64により)。図8の例では、ディレクトリミスがディレクトリルックアップに応答して発生する。従って、ディレクトリエントリが存在しないので、ブロックがいずれの処理ノードのキャッシュにおいて、SharedあるいはInvalidであることだけが可能である。その結果、処理ノードP0はメモリ0からデータを単純に検索し、処理ノードP2を通って処理ノードP3へデータを送る。処理ノードP3がデータを受信する場合、ソース完了メッセージが処理ノードP3から、例えば処理ノードP1を通って、処理ノードP0へ送られる。これによりトランザクションが完了する。この例では、ディレクトリルックアップがディレクトリミスをもたらすので、処理ノードP0はいずれの無効プローブを他のいずれの処理ノードへ送信されることが必要としないことが分かっており、この点はしかしながらブロードキャストコヒーレンシープロトコルを導入しているシステムには必要とされることである。
図9に処理ノードP3がメモリ0にマップされたブロックにリードリクエストを発行する、類似の例を示す。しかしながらこの例では、処理ノードP0がディレクトリルックアップを実施する場合、ディレクトリヒットが対応するキャッシュメモリのエントリに発生する。ディレクトリエントリはブロックが処理ノードP1においてME状態にあることを示す。従って処理ノードP0のコヒーレンシー制御回路は、処理ノードP1が処理ノードP3へデータをフォーワードさせるために、処理ノード1へフォーワードされるプローブコマンドを発生する。一実施形態では、データが共有状態で処理ノードP3にインストールされので、処理ノードP1のキャッシュコントローラはブロックのそのキャッシュコピーを状態MからOへと格下げする。処理ノードP0のコヒーレンシー制御回路はまた、処理ノードP1のO状態にキャッシュ中であることを示すために、ブロックに対するディレクトリエントリをアップデートする。この例において、ディレクトリヒットはME状態にあるブロックに対して発生したので、処理ノードP0はいずれの処理ノードへ無効プローブを送信する(例:同時送信)必要がなかったことである。
様々な他の特定のコヒーレンシーオペレーションが、処理ノードによって開始される他のトランザクションに応答して呼び出される。これまでの例と同様に、プローブコマンドと応答トラフィックが、アクセスされるブロックに対するディレクトリエントリの存在に基づいて、及び/あるいはディレクトリエントリに示されているように、ブロックの状態に基づいてフィルタリングされる。例えば、図9に戻って、処理ノードP3が特定ブロックの排他コピーを受信するためにリードコマンドを開始する場合(例:RdBlkModコマンドを開始することによって)、処理ノードP0は変更されたブロックのコピーを含む処理ノードP1へプローブコマンドをフォーワードする。処理ノードP1は対応して処理ノードP3へデータをフォーワードする。加えて、処理ノードP1は無効にするためにそのコピーを格下げし、処理ノードP0は、ブロックが処理ノードP3においてME状態にあることを示すために、ブロックに対してディレクトリエントリをアップデートする。様々な特定のコヒーレンシーオペレーションがトランザクションの種類、ディレクトリエントリの存在、あるいはディレクトリエントリにおけるブロックの状態、に応じて、適宜、同様に行われる。
多くの他のディレクトリエントリのフォーマットが他の実施形態で可能である。ディレクトリエントリの特定のフォーマットは、数ある要因の中でも特に、維持される状態情報量、システムの規模、及びディレクトリストレージオーバーヘッド、に基づく。
図10にディレクトリエントリが4ウエイキャッシュ構成を使用して記録される他の形態の配置を示す。LRUフィールドはディレクトリの競合性ミス(即ち、新エントリが既存エントリに上書きする場合)が発生すると交換される、使用頻度が最も低いエントリを判断するために維持される。ディレクトリの競合性ミスが発生すると、コヒーレンシー制御回路は所望に応じて特定のコヒーレンシーアクティビティを呼び出すことが知られている。例えば、場合によっては、キャッシュコヒーレンシー回路がライトーバックオペレーションを実施するために、変更されたブロックのコピーを備えたノードをもたらす。
ディレクトリエントリに維持されるべき情報量もまた、実施品により様々である。図11に、64バイトのキャッシュブロックにおいて512ディレクトリエントリが与えられる実施形態を示す。1ビットのステートフィールドは、ブロックがModified、Owned、あるいはExclusive(変更、所有、あるいは排他)の状態(MOE)であるかどうかを示す。図12は64のディレクトリエントリが64バイトのキャッシュブロックにおいて与えられる実施形態を示している。例示の例では、5ビットのオーナーフィールドがMEあるいはO状態に対するオーナーをエンコードする。それは32処理コア(例:各々が4コアを有する8ノード)をサポートするのに十分である。図12のディレクトリフォーマットは、変更されたブロックが部分的にいくつかのページを示すワークロードに適している。
所定のトランザクションに応答して呼び出される特定のコヒーレンシーアクティビティ(例:プローブコマンドや応答)が、対応のディレクトリエントリに導入される特定のコヒーレンシースキームや、(もし存在するならば)対応のディレクトリエントリに含まれる情報に基づいていることが知られている。様々なディレクトリベースのプロトコルが可能である。
加えて、上述の実施形態において、キャッシュメモリ72の特定の方法が、ディレクトリエントリを記録するために使用されるが、他の実施形態も可能であることが知られている。例えば、所定の一連のキャッシュメモリ72がディレクトリエントリを記録するために使用される実施形態や、全エントリのうちのいくつかの部分(例:二分の一)がディレクトリエントリを記録するために使用される実施形態が可能である。
また更に、モード記録ユニット75を含まない実施形態も可能である。キャッシュブロックとともに維持される情報は、ディレクトリ情報を含むものとしてエントリを確認するために設定される一つ以上のビットを含む。
図13を参照して、コンピュータシステム10の別の実施形態は、所定の処理ノード12のシステムメモリ14(即ち、14A−14D)の一部が、他のノードのシステムメモリにマップされているアドレスを遠隔にキャッシュするために割当てられている、リモートキャッシュ機能を含む。これらのリモートキャッシュ域は図13に、リモートキャッシュ302A−302Dとして例示されている。図1の回路部と対応する図13の回路部には同じ番号が付けられており、また上述のとおり同じ機能性を含む。
所定のシステムメモリ14のリモートキャッシュ302内のリモートデータの記録は、図14のメモリコントローラ16Aに描かれているように、対応のリモートキャッシュコントローラ402Aにより制御される。処理ノード12B−12Dは同様のリモートキャッシュコントローラを含む。以下に更なる詳細が解説されるように、一実施形態では、リモートキャッシュコントローラ402Aはキャッシュメモリサブシステム52(及び/あるいはキャッシュメモリサブシステム56)へインターフェースを含むことができる。キャッシュメモリサブシステム52内の記録位置は、特定のアドレスが対応ノードの対応システムメモリ14内のリモートキャッシュコントローラ402Aにより、遠隔キャッシュされるかどうかを確認する情報を記録するために使用される。この機能に関する更なる詳細が以下に解説される。
一実施形態では、リモートキャッシュコントローラ402Aにより導入されるリモートキャッシュの手法は、共有のリモートデータだけを記録することである。そのような実施形態において、Modified、OwnedあるいはExclusiveデータは、リモートキャッシュ302Aに記録されない。リモートキャッシュ302Aはキャッシュメモリサブシステム52に関しては非エクスクルーシブ(non-inclusive)であり、また、キャッシュメモリサブシステム52(及び所望に応じてキャッシュメモリサブシステム56)から取り外される(evict)共有ブロックに対する犠牲のキャッシュとして機能する。そのため、リモートキャッシュ302Aは、リモートキャッシュ302Aに既に存在しない共有のリモートブロックが、キャッシュメモリサブシステム52(及び/あるいはキャッシュメモリサブシステム56)に交換される場合に、リモートキャッシュコントローラ402により書き込まれる。
図15は、対応のリモートブロックがリモートキャッシュ302内にキャッシュされるかどうかを確認する情報を含むプレゼンスベクトルを記録するために、指定のウエイ(例:実施形態のウエイ14)が使用される、キャッシュメモリサブシステム52の構成を例示している。キャッシュブロックは複数のエントリを含むプレゼンスベクトルを有し、各々は対応のブロックが、Shared(S)状態においてリモートキャッシュ302Aに存在するかしないかを示す。図14の実施形態では、各エントリは単一のプレゼンスビットよりなる。所定のプレゼンスベクトルはキャッシュメモリにアクセスするために使用されるアドレスの、選択されたインデックスビット(インデックスL2)によりアクセスされる。同様に所定のプレゼンスベクトルのプレゼンスビットは、他のビットのアドレス(例:インデックスPV)を用いて選択される。プレゼンスベクトルヒットは、キャッシュブロックとともに記録されるブロックタグ(例:TagL2)が、キャッシュにアクセスするために使用されるアドレスの対応のタグビットと一致する場合に発生する。
リモートキャッシュ302Aに対して割当てられるシステムメモリ14Aの物理アドレスは、リモートキャッシュコントローラ402Aと関連する機器構成レジスタに記録されるRCベースのアドレス値に従い特定される。メモリ14Aのリモートキャッシュ302A内に遠隔にキャッシュされたブロックは、描かれているように適宜、プレゼンスベクトルインデックス及びL2インデックスを形成しているビットと併せて、RCベースのアドレスを使用して指定される。
図14の実施形態において、ブロックをリモートキャッシュ302Aに取り付けることが、ModifiedあるいはOwnedデータの取り外し(あるいはディレクトリを備えたシステムの排他データに対する交換通知)を必要としないことが知られている。更に、ブレゼンスビットが、ブロックが有効であり、かつ共有状態にあるということを示すのに十分であるので、遠隔キャッシュブロックに対して、コヒーレンシーステート情報は要求されない。共有ブロックがキャッシュメモリサブシステム52(及び、所望に応じてキャッシュメモリサブシステム56)と交換される場合、ブロックがまだリモートキャッシュに存在しない場合は、ブロックがリモートキャッシュ302Aに取り付けられる。リモートキャッシュ302Aのデータは決してダーティではないので、リモートキャッシュ302Aのブロックが静かに交換され、かつ、リモートキャッシュの取り外しは不要である。他のノードが、Shared(S)状態にあるブロックの排他コピーを記録あるいは要求する場合、その結果生じる、処理ノード12A(ホームノードから)により受信される無効プローブコマンドは、キャッシュメモリサブシステム52で実施されるべきルックアップを引き起こし、これにより、ブロックがリモートキャッシュ302Aあるいはキャッシュメモリサブシステム52のどちらかに存在するかを判断する。ブロックがリモートキャッシュ302Aあるいはキャッシュメモリサブシステム52のどちらかに共有されていることを示すヒットが起きる場合、ブロックは無効にされる。
いくつかの実施形態においては、キャッシュメモリサブシステム52は、上述のようにディレクトリエントリを記録するとともに、リモートキャッシュプレゼンス指示を記録するために使用される。例えば、一実施形態において、キャッシュメモリサブシステム52はディレクトリエントリを記録するために(例:図7及び10に示すように)一つのウエイwayを指定し(例:ウエイ15)、一方で、プレゼンスベクトルを記録するために他のウエイを指定する。組み合わせて使用される場合、キャッシュメモリサブシステム52へのシングルアクセスが、データがキャッシュされているかどうか(例:ウエイ0−13)、及びデータがリモートキャッシュ302Aにキャッシュされているかどうか、を判断するために実施される。更に、ローカルノードへマップされたデータにアクセスされる場合、キャッシュメモリサブシステムへのアクセスが、データが他のプロセッサのキャッシュにおいて、Modified、OwnedあるいはExclusiveの状態でキャッシュされるかどうかを更に判断し、そうである場合は、そのノードはデータを有している。更にまた、記録する場合(あるいは、データブロックの排他コピーを受信するために、他のノードから要求する場合)、処理ノードにより受信される対応の無効データが、キャッシュメモリ74(例:ウエイ0−13)及びリモートキャッシュ302Aの双方のブロックを同時に無効にする結果をもたらす(即ち、キャッシュメモリサブシステムの方法14において、ブロックに対応してプレゼンスビットを変更することによって)。
他の実施形態において、キャッシュメモリサブシステム54に含まれるプレゼンス情報が、他の特定の構成を用いて記録されることは知られている。例えば、図16はキャッシュメモリサブシステムが所定のプレゼンスビットへアクセスするためにインデックスが付けられる、他の形態の方法を例示している。
更に、リモートキャッシュプレゼンス情報を記録するために、キャッシュメモリサブシステム52(及び/あるいはキャッシュメモリサブシステム56)のエントリを使用することが(例:選択された方法)、動作環境に基づいて選択的に可能にされることが知られている。例えば、モード記録ユニット75に記録される値は、リモートキャッシュプレゼンス指示機構が可能にされるかどうかをコントロールする。そのために、シングルプロセッサ環境に配置される場合、モード記録ユニット75が、通常のキャッシュオペレーションのために、キャッシュメモリサブシステムの全エントリを指定するために設定され、これにより、ストレージリソースの浪費が回避される。
上記開示が十分に認識されると、多くのバリエーション及び変形が当業者には明らかになるであろう。以下の請求項は全てのそのようなバリエーション及び変形を包含するように解釈されることを意図している。
本発明は該してコンピュータシステムに応用が可能である。
コンピュータシステムの一実施形態のブロック図である。 パケット定義の一実施形態のテーブルを例示している。 処理ノードの一実施形態のブロック図である。 メモリコントローラの一実施形態のブロック図である。 キャッシュメモリサブシステムのブロック図である。 従来のキャッシュ配置の一実施形態を例示している。 ダイレクトマップのディレクトリキャッシュ構成を例示している。 ディレクトリエントリがプローブコマンドと応答トラフィックをフィルタリングするために利用する方法を例示している。 ディレクトリエントリがプローブコマンドと応答トラフィックをフィルタリングするために利用する方法を例示している。 ディレクトリエントリが4ウエイ構造を使用して記録されるキャッシュ配置を例示している。 別の形態のディレクトリエントリのフォーマットを例示している。 別の形態のディレクトリエントリのフォーマットを例示している。 リモートキャッシュを含むコンピュータシステムの別の実施形態を例示している。 処理ノードの別の実施形態のブロック図である。 指定のウエイがプレゼンスベクトルを記録するために使用される、キャッシュメモリサブシステムの構成を例示している。 所定のプレゼンスビットにインデックスを付けるために別の形態のフォーマットを例示している。

Claims (10)

  1. コンピュータシステムであって、
    プロセッサコア(50)、キャッシュメモリサブシステム(52)、および第一システムメモリ(14A)を有す第一ノード(12A)、
    第二システムメモリ(14B)を有す第二ノード(12B)を有し、
    前記キャッシュメモリサブシステムの少なくともいくつかが、前記キャッシュメモリサブシステムの動作モードに応じて、プロセッサデータあるいはリモートキャッシュプレゼンス情報のどちらか一方を選択的に記録するよう構成される、コンピュータシステム。
  2. 前記第一システムメモリ(14A)が、前記第二システムメモリ(14B)にマップされるデータを遠隔にキャッシュするよう構成され、かつ、前記リモートキャッシュプレゼンス情報が、前記第一システムメモリにおいて前記データの存在を示す、請求項1記載のコンピュータシステム。
  3. 前記第一ノードが、前記第一システムメモリ内の前記データのリモートキャッシュを制御するために、リモートキャッシュコントローラを含む、請求項2記載のコンピュータシステム。
  4. 前記リモートキャッシュコントローラが、データが前記第一システムメモリ内に共有状態で遠隔にキャッシュされ、かつ、ModifiedあるいはOwned状態のデータが、前記第一システムメモリ内に遠隔にキャッシュされない、キャッシュの手法を導入している、請求項3記載のコンピュータシステム。
  5. 前記リモートキャッシュコントローラが、前記キャッシュメモリサブシステムからの前記ブロックの交換に応答して、前記第一システムメモリの共有状態のデータのブロックを記録するように構成される、請求項4記載のコンピュータシステム。
  6. 前記リモートキャッシュコントローラが、前記キャッシュメモリサブシステムからの交換に応答してのみ、前記第一サブシステムメモリのデータを遠隔にキャッシュするように構成される、請求項5記載のコンピュータシステム。
  7. 前記リモートキャッシュコントローラが、前記ブロックが前記第一システムメモリに未だ遠隔にキャッシュされていない場合のみ、前記第一システムメモリに前記ブロックを記録するように構成される、請求項6記載のコンピュータシステム。
  8. 前記キャッシュメモリサブシステムの追加エントリが、前記キャッシュメモリサブシステムの前記動作モードに応じて、グローバルコヒーレンスアクティビティを制御するために、プロセッサデータあるいはディレクトリ情報のどちらか一方を選択的に記録するように構成される、請求項1〜7いずれか記載のコンピュータシステム。
  9. 前記キャッシュメモリサブシステムの所定のストレージラインが、リモートキャッシュプレゼンスベクトルを含む、請求項1〜8いずれか記載のコンピュータシステム。
  10. 前記キャッシュメモリサブシステムの指定の方法が、リモートキャッシュプレゼンス情報の記録を選択的に可能にする、請求項1〜9いずれか記載のコンピュータシステム。
JP2004540309A 2002-09-27 2003-09-18 リモートキャッシュプレゼンス情報を記録するプロセッサキャッシュを備えたコンピュータシステム Expired - Fee Related JP4230998B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/256,970 US7096323B1 (en) 2002-09-27 2002-09-27 Computer system with processor cache that stores remote cache presence information
PCT/US2003/031020 WO2004029812A2 (en) 2002-09-27 2003-09-18 Computer system with processor cache that stores remote cache presence information

Publications (2)

Publication Number Publication Date
JP2006501548A true JP2006501548A (ja) 2006-01-12
JP4230998B2 JP4230998B2 (ja) 2009-02-25

Family

ID=32041784

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004540309A Expired - Fee Related JP4230998B2 (ja) 2002-09-27 2003-09-18 リモートキャッシュプレゼンス情報を記録するプロセッサキャッシュを備えたコンピュータシステム

Country Status (8)

Country Link
US (1) US7096323B1 (ja)
EP (1) EP1543427A2 (ja)
JP (1) JP4230998B2 (ja)
KR (1) KR100970229B1 (ja)
CN (1) CN100373353C (ja)
AU (1) AU2003277175A1 (ja)
TW (1) TWI304930B (ja)
WO (1) WO2004029812A2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007183915A (ja) * 2005-12-30 2007-07-19 Internatl Business Mach Corp <Ibm> マルチプロセッサ・システムのためのディレクトリ・ベースのデータ転送プロトコル(データ一貫性を維持する方法およびシステム)
JP2011511989A (ja) * 2008-04-02 2011-04-14 インテル・コーポレーション チップマルチプロセッサにおけるキャッシュの適応的編成方法

Families Citing this family (55)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI251337B (en) * 2003-12-29 2006-03-11 Powerchip Semiconductor Corp Non-volatile memory cell and manufacturing method thereof
US7373466B1 (en) 2004-04-07 2008-05-13 Advanced Micro Devices, Inc. Method and apparatus for filtering memory write snoop activity in a distributed shared memory computer
JP4214941B2 (ja) * 2004-04-09 2009-01-28 日本電気株式会社 プレゼンス情報提供システム、その方法およびサーバ
US7200718B2 (en) * 2004-04-26 2007-04-03 Broadband Royalty Corporation Cache memory for a scalable information distribution system
US20060143384A1 (en) * 2004-12-27 2006-06-29 Hughes Christopher J System and method for non-uniform cache in a multi-core processor
US7788240B2 (en) * 2004-12-29 2010-08-31 Sap Ag Hash mapping with secondary table having linear probing
US7467323B2 (en) * 2005-02-10 2008-12-16 International Business Machines Corporation Data processing system and method for efficient storage of metadata in a system memory
US7584329B2 (en) * 2005-02-10 2009-09-01 International Business Machines Corporation Data processing system and method for efficient communication utilizing an Ig coherency state
US7454578B2 (en) * 2005-02-10 2008-11-18 International Business Machines Corporation Data processing system and method for predictively selecting a scope of broadcast of an operation utilizing a location of a memory
US7454577B2 (en) * 2005-02-10 2008-11-18 International Business Machines Corporation Data processing system and method for efficient communication utilizing an Tn and Ten coherency states
US7474658B2 (en) * 2005-02-10 2009-01-06 International Business Machines Corporation Data processing system, method and interconnect fabric supporting concurrent operations of varying broadcast scope
US8230178B2 (en) * 2005-02-10 2012-07-24 International Business Machines Corporation Data processing system and method for efficient coherency communication utilizing coherency domain indicators
US7389388B2 (en) * 2005-02-10 2008-06-17 International Business Machines Corporation Data processing system and method for efficient communication utilizing an in coherency state
US7415030B2 (en) * 2005-02-10 2008-08-19 International Business Machines Corporation Data processing system, method and interconnect fabric having an address-based launch governor
US8140770B2 (en) * 2005-02-10 2012-03-20 International Business Machines Corporation Data processing system and method for predictively selecting a scope of broadcast of an operation
US7366844B2 (en) * 2005-02-10 2008-04-29 International Business Machines Corporation Data processing system and method for handling castout collisions
US8214600B2 (en) 2005-02-10 2012-07-03 International Business Machines Corporation Data processing system and method for efficient coherency communication utilizing coherency domains
US7536513B2 (en) 2005-03-31 2009-05-19 International Business Machines Corporation Data processing system, cache system and method for issuing a request on an interconnect fabric without reference to a lower level cache based upon a tagged cache state
US7237070B2 (en) * 2005-04-19 2007-06-26 International Business Machines Corporation Cache memory, processing unit, data processing system and method for assuming a selected invalid coherency state based upon a request source
US7444494B2 (en) * 2005-05-31 2008-10-28 International Business Machines Corporation Data processing system and method for predictively selecting a scope of broadcast of an operation utilizing a history-based prediction
US20070005899A1 (en) * 2005-06-30 2007-01-04 Sistla Krishnakanth V Processing multicore evictions in a CMP multiprocessor
US7380102B2 (en) * 2005-09-27 2008-05-27 International Business Machines Corporation Communication link control among inter-coupled multiple processing units in a node to respective units in another node for request broadcasting and combined response
US7818388B2 (en) * 2005-10-07 2010-10-19 International Business Machines Corporation Data processing system, method and interconnect fabric supporting multiple planes of processing nodes
US7526614B2 (en) * 2005-11-30 2009-04-28 Red Hat, Inc. Method for tuning a cache
US7386673B2 (en) * 2005-11-30 2008-06-10 Red Hat, Inc. Method for tracking of non-resident pages
US7606981B2 (en) * 2005-12-19 2009-10-20 Intel Corporation System and method for reducing store latency
US7512742B2 (en) 2006-01-17 2009-03-31 International Business Machines Corporation Data processing system, cache system and method for precisely forming an invalid coherency state indicating a broadcast scope
US7882307B1 (en) * 2006-04-14 2011-02-01 Tilera Corporation Managing cache memory in a parallel processing environment
US8495308B2 (en) * 2006-10-09 2013-07-23 International Business Machines Corporation Processor, data processing system and method supporting a shared global coherency state
JP2008118184A (ja) * 2006-10-31 2008-05-22 Fujitsu Ltd 処理装置及び処理モジュール
US8205024B2 (en) * 2006-11-16 2012-06-19 International Business Machines Corporation Protecting ownership transfer with non-uniform protection windows
US7890704B2 (en) * 2006-12-19 2011-02-15 International Business Machines Corporation Implementing an enhanced hover state with active prefetches
US7669011B2 (en) * 2006-12-21 2010-02-23 Advanced Micro Devices, Inc. Method and apparatus for detecting and tracking private pages in a shared memory multiprocessor
CN100498740C (zh) * 2007-09-11 2009-06-10 腾讯科技(深圳)有限公司 一种数据缓存处理方法、系统及数据缓存装置
JP2009223759A (ja) * 2008-03-18 2009-10-01 Fujitsu Ltd 情報処理装置,メモリ制御方法およびメモリ制御装置
US8185695B2 (en) * 2008-06-30 2012-05-22 Advanced Micro Devices, Inc. Snoop filtering mechanism
US8364898B2 (en) * 2009-01-23 2013-01-29 International Business Machines Corporation Optimizing a cache back invalidation policy
US8868847B2 (en) * 2009-03-11 2014-10-21 Apple Inc. Multi-core processor snoop filtering
US20100332762A1 (en) * 2009-06-30 2010-12-30 Moga Adrian C Directory cache allocation based on snoop response information
US8886885B2 (en) * 2009-11-13 2014-11-11 Marvell World Trade Ltd. Systems and methods for operating a plurality of flash modules in a flash memory file system
KR101077370B1 (ko) 2010-07-09 2011-10-26 삼성전기주식회사 발광피드백을 제공하는 정전용량식 터치스크린
US8392665B2 (en) 2010-09-25 2013-03-05 Intel Corporation Allocation and write policy for a glueless area-efficient directory cache for hotly contested cache lines
US20120151232A1 (en) * 2010-12-12 2012-06-14 Fish Iii Russell Hamilton CPU in Memory Cache Architecture
US9384133B2 (en) 2014-05-30 2016-07-05 International Business Machines Corporation Synchronizing updates of page table status indicators and performing bulk operations
US9785554B2 (en) 2014-05-30 2017-10-10 International Business Machines Corporation Synchronizing updates of page table status indicators in a multiprocessing environment
JP6218971B2 (ja) 2014-12-14 2017-10-25 ヴィア アライアンス セミコンダクター カンパニー リミテッド アドレス・タグ・ビットに基づく動的キャッシュ置換ウェイ選択
JP6209689B2 (ja) 2014-12-14 2017-10-04 ヴィア アライアンス セミコンダクター カンパニー リミテッド モードに応じてウェイの全部又はサブセットに選択的に割り当てるように動的に構成可能であるマルチモード・セット・アソシエイティブ・キャッシュ・メモリ
JP6207765B2 (ja) 2014-12-14 2017-10-04 ヴィア アライアンス セミコンダクター カンパニー リミテッド モードに応じてセットの1つ又は複数を選択的に選択するように動的に構成可能であるマルチモード・セット・アソシエイティブ・キャッシュ・メモリ
WO2017031637A1 (zh) * 2015-08-21 2017-03-02 华为技术有限公司 一种内存访问方法、装置和系统
CN106649149A (zh) * 2015-10-28 2017-05-10 福州瑞芯微电子股份有限公司 实现地址映射的内存管理系统及方法
US11138178B2 (en) * 2016-11-10 2021-10-05 Futurewei Technologies, Inc. Separation of computation from storage in database for better elasticity
US10073783B2 (en) 2016-11-23 2018-09-11 Advanced Micro Devices, Inc. Dual mode local data store
US10761986B2 (en) 2018-10-23 2020-09-01 Advanced Micro Devices, Inc. Redirecting data to improve page locality in a scalable data fabric
US11914517B2 (en) 2020-09-25 2024-02-27 Advanced Micro Devices, Inc. Method and apparatus for monitoring memory access traffic
US11928472B2 (en) 2020-09-26 2024-03-12 Intel Corporation Branch prefetch mechanisms for mitigating frontend branch resteers

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4905141A (en) 1988-10-25 1990-02-27 International Business Machines Corporation Partitioned cache memory with partition look-aside table (PLAT) for early partition assignment identification
US5197146A (en) * 1989-06-21 1993-03-23 Hewlett-Packard Company Method for maintaining cache coherence in a multiprocessor computer system
US5875464A (en) 1991-12-10 1999-02-23 International Business Machines Corporation Computer system with private and shared partitions in cache
US5410669A (en) 1993-04-05 1995-04-25 Motorola, Inc. Data processor having a cache memory capable of being used as a linear ram bank
IN188196B (ja) 1995-05-15 2002-08-31 Silicon Graphics Inc
US6279078B1 (en) 1996-06-28 2001-08-21 Compaq Computer Corporation Apparatus and method for synchronizing a cache mode in a dual controller, dual cache memory system operating in a plurality of cache modes
US5873117A (en) 1996-07-01 1999-02-16 Sun Microsystems, Inc. Method and apparatus for a directory-less memory access protocol in a distributed shared memory computer system
US5864671A (en) 1996-07-01 1999-01-26 Sun Microsystems, Inc. Hybrid memory access protocol for servicing memory access request by ascertaining whether the memory block is currently cached in determining which protocols to be used
US5802600A (en) * 1996-11-12 1998-09-01 International Business Machines Corporation Method and apparatus for determining a desirable directory/data block ratio in a cache memory
US6041376A (en) 1997-04-24 2000-03-21 Sequent Computer Systems, Inc. Distributed shared memory system having a first node that prevents other nodes from accessing requested data until a processor on the first node controls the requested data
FR2764097B1 (fr) * 1997-06-02 1999-07-02 Bull Sa Detection de points chauds dans une machine avec memoire a acces non uniforme
US6055610A (en) * 1997-08-25 2000-04-25 Hewlett-Packard Company Distributed memory multiprocessor computer system with directory based cache coherency with ambiguous mapping of cached data to main-memory locations
EP0908825B1 (en) 1997-10-10 2002-09-04 Bull S.A. A data-processing system with cc-NUMA (cache coherent, non-uniform memory access) architecture and remote access cache incorporated in local memory
US6073216A (en) * 1997-11-25 2000-06-06 Intel Corporation System and method for reliable system shutdown after coherency corruption
US6275904B1 (en) * 1998-03-31 2001-08-14 Intel Corporation Cache pollution avoidance instructions
US6295598B1 (en) 1998-06-30 2001-09-25 Src Computers, Inc. Split directory-based cache coherency technique for a multi-processor computer system
US6546429B1 (en) 1998-09-21 2003-04-08 International Business Machines Corporation Non-uniform memory access (NUMA) data processing system that holds and reissues requests at a target processing node in response to a retry
US6269428B1 (en) * 1999-02-26 2001-07-31 International Business Machines Corporation Method and system for avoiding livelocks due to colliding invalidating transactions within a non-uniform memory access system
US6226718B1 (en) 1999-02-26 2001-05-01 International Business Machines Corporation Method and system for avoiding livelocks due to stale exclusive/modified directory entries within a non-uniform access system
US6434668B1 (en) 1999-09-07 2002-08-13 International Business Machines Corporation Method of cache management to store information in particular regions of the cache according to information-type
US6763432B1 (en) * 2000-06-09 2004-07-13 International Business Machines Corporation Cache memory system for selectively storing directory information for a higher level cache in portions of a lower level cache
US6775742B2 (en) 2000-07-20 2004-08-10 Silicon Graphics, Inc. Memory device storing data and directory information thereon, and method for providing the directory information and the data in the memory device
US6662276B2 (en) 2000-12-29 2003-12-09 Intel Corporation Storing directory information for non uniform memory architecture systems using processor cache
US6615319B2 (en) * 2000-12-29 2003-09-02 Intel Corporation Distributed mechanism for resolving cache coherence conflicts in a multi-node computer architecture
US20020138698A1 (en) 2001-03-21 2002-09-26 International Business Machines Corporation System and method for caching directory information in a shared memory multiprocessor system
US6711652B2 (en) 2001-06-21 2004-03-23 International Business Machines Corporation Non-uniform memory access (NUMA) data processing system that provides precise notification of remote deallocation of modified data
US6760809B2 (en) 2001-06-21 2004-07-06 International Business Machines Corporation Non-uniform memory access (NUMA) data processing system having remote memory cache incorporated within system memory
US6959364B2 (en) * 2002-06-28 2005-10-25 Intel Corporation Partially inclusive snoop filter
US6792512B2 (en) * 2002-08-06 2004-09-14 International Business Machines Corporation Method and system for organizing coherence directories in shared memory systems
US6996676B2 (en) 2002-11-14 2006-02-07 International Business Machines Corporation System and method for implementing an adaptive replacement cache policy

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007183915A (ja) * 2005-12-30 2007-07-19 Internatl Business Mach Corp <Ibm> マルチプロセッサ・システムのためのディレクトリ・ベースのデータ転送プロトコル(データ一貫性を維持する方法およびシステム)
JP2011511989A (ja) * 2008-04-02 2011-04-14 インテル・コーポレーション チップマルチプロセッサにおけるキャッシュの適応的編成方法

Also Published As

Publication number Publication date
TWI304930B (en) 2009-01-01
WO2004029812A3 (en) 2004-10-07
EP1543427A2 (en) 2005-06-22
AU2003277175A1 (en) 2004-04-19
KR20050070013A (ko) 2005-07-05
US7096323B1 (en) 2006-08-22
KR100970229B1 (ko) 2010-07-16
TW200408952A (en) 2004-06-01
JP4230998B2 (ja) 2009-02-25
WO2004029812A2 (en) 2004-04-08
CN1685320A (zh) 2005-10-19
CN100373353C (zh) 2008-03-05

Similar Documents

Publication Publication Date Title
JP4230998B2 (ja) リモートキャッシュプレゼンス情報を記録するプロセッサキャッシュを備えたコンピュータシステム
JP4237142B2 (ja) 統合ディレクトリとプロセッサキャッシュを備えたコンピュータシステム
US7814286B2 (en) Method and apparatus for filtering memory write snoop activity in a distributed shared memory computer
KR101497002B1 (ko) 스누프 필터링 메커니즘
KR102442079B1 (ko) 메모리에서의 처리를 위한 캐시 일관성
EP1311955B1 (en) Method and apparatus for centralized snoop filtering
US9792210B2 (en) Region probe filter for distributed memory system
EP0817073B1 (en) A multiprocessing system configured to perform efficient write operations
US5897656A (en) System and method for maintaining memory coherency in a computer system having multiple system buses
US5325504A (en) Method and apparatus for incorporating cache line replacement and cache write policy information into tag directories in a cache system
JP4966205B2 (ja) 共有メモリコンピュータシステムにおける、所有されている複数のキャッシュブロックのライトバックの早期予測
US7698508B2 (en) System and method for reducing unnecessary cache operations
EP0818733B1 (en) A multiprocessing system configured to perform software initiated prefetch operations
US5809536A (en) Method for reducing the number of coherency cycles within a directory-based cache coherency memory system uitilizing a memory state cache
US20020053004A1 (en) Asynchronous cache coherence architecture in a shared memory multiprocessor with point-to-point links
US6078997A (en) Directory-based coherency system for maintaining coherency in a dual-ported memory system
US20140229678A1 (en) Method and apparatus for accelerated shared data migration
US7797495B1 (en) Distributed directory cache

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060807

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080610

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20080905

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20080912

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20081010

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20081020

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20081110

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: 20081125

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: 20081204

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20111212

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20111212

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20121212

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees