JP4237142B2 - 統合ディレクトリとプロセッサキャッシュを備えたコンピュータシステム - Google Patents

統合ディレクトリとプロセッサキャッシュを備えたコンピュータシステム Download PDF

Info

Publication number
JP4237142B2
JP4237142B2 JP2004540279A JP2004540279A JP4237142B2 JP 4237142 B2 JP4237142 B2 JP 4237142B2 JP 2004540279 A JP2004540279 A JP 2004540279A JP 2004540279 A JP2004540279 A JP 2004540279A JP 4237142 B2 JP4237142 B2 JP 4237142B2
Authority
JP
Japan
Prior art keywords
cache
directory
cache memory
computer system
memory subsystem
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
JP2004540279A
Other languages
English (en)
Other versions
JP2006501546A (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 JP2006501546A publication Critical patent/JP2006501546A/ja
Application granted granted Critical
Publication of JP4237142B2 publication Critical patent/JP4237142B2/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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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)
  • Multi Processors (AREA)

Description

本発明はコンピュータシステムに関し、更に具体的には、コンピュータシステム内のコヒーレンシー機構(coherency mechanism)に関する。
典型的に、コンピュータシステムにはプロセッサがメモリへアクセスするレイテンシーを小さくするために、1つ以上のキャッシュが含まれる。概して、キャッシュは各々がコンピュータシステムのメモリシステムにおいて対応のアドレスに記録されるデータのコピーである、1つ以上のブロックを記録することができる。
1つ以上のキャッシュに所定のブロックが記録され、また更に、キャッシュコピーのうちの1つがメモリシステムのコピーに関して変更されるために、コンピュータシステムがキャッシュとメモリシステム間のコヒーレンシーを維持することが多い。ブロックへのアップデートが、所定のコヒーレンシープロトコルに従い、ブロックのキャッシュコピーにより反映される場合に、コヒーレンシーが維持される。様々な特定のコヒーレンシープロトコルは周知である。本明細書で用いられているように、“ブロック”とはコヒーレンシーのためにユニットとして扱われる、連続する記憶位置に記録される一連のバイトのことである。実施形態の中には、ブロックがキャッシュの割当て単位のもの、あるいは非割り当ての単位であることができるものがある。ブロックのバイト数は設計上の選択により変化し、また、いずれのサイズであることができる。一例を挙げると、32バイト及び64バイトブロックが頻繁に使用される。
多くのコヒーレンシープロトコルは、コンピュータシステム内の様々なキャッシュ間で通信を行うためにプローブを使用する。一般的に、“プローブ”とはキャッシュがブロックのコピーを有しているかを判断するために、また状況に応じて、キャッシュがブロックを配置する必要がある状態を示すために、コンピュータシステムのコヒーレンシーポイントからコンピュータシステムの1つ以上のキャッシュへ送信されるメッセージのことである。コヒーレンシーポイントは、ブロックをリードあるいはライトするために、コンポーネント(例:プロセッサ)からコマンドを受けてプローブを送信する。各プローブレシーバはブローブに応答し、かつ、プローブ応答が受信されると、コマンドは終了される。コヒーレンシーポイントは、メモリシステムに対するメモリコントローラなどのコヒーレンシーを維持する責任があるコンポーネントである。
一般に、コンピュータシステムはブロードキャストキャッシュのコヒーレンシープロトコル、あるいはディレクトリベースキャッシュのコヒーレンシープロトコルのどちらかを導入している。ブロードキャストプロトコルを導入しているシステムでは、プローブがすべてのプロセッサ(あるいはキャッシュサブシステム)へ同時送信される。データの共有コピーを有するサブシステムが、ブロックへの排他アクセスに対するコマンドから生じるプローブを監視する場合、典型的にそのコピーは無効にされる。同様に、データのブロックを所有中のサブシステムが、そのブロックに対応するプローブを監視する場合、所望に応じてデータをリクエスタに与えることにより、またそのコピーを無効にすることにより、ブロックを所有するサブシステムが典型的に応答する。
一方で、ディレクトリベースのプロトコルを導入しているシステムは、データのキャッシュコピーの存在を示す情報を含むディレクトリを維持する。ディレクトリ情報はプローブを無条件に同時送信せず、特定のコヒーレンシーアクションを起こすためにプローブが送信される必要がある、(データのキャッシュコピーを含む)特定のサブシステムを決定する。例えばディレクトリは、様々なサブシステムがデータのブロックの共有コピーを有すことを示す情報を含むことができる。そのブロックへの排他アクセスに対するコマンドを受けて、無効プローブが共有サブシステムに送信される。ディレクトリはまた、データの特定ブロックを所有中のサブシステムを示す情報も含むことができる。従って、コマンドへの応答は、所有中のサブシステムが要求中のサブシステムにデータを送信させるプローブを更に含む。非常に多くの、ディレクトリベースキャッシュのコヒーレンシープロトコルの変形は周知である。
ブロードキャストキャッシュのコヒーレンシープロトコルを導入しているシステムの、他のプロセッサすべてにプローブを同時送信する必要があるため、プロセッサを相互接続するネットワークに関するバンド幅が、特に多くのプロセッサを導入しているシステムに対して、あるいは多くのプローブが短期間に送信される場合に、急速に性能面での限定要因となりうる。そのような環境において、ディレクトリプロトコルを導入しているシステムが、ネットワークトラフィックの減少により、また、ネットワークバンド幅のボトルネックが回避されるために、総合的な高性能を達成する。
ディレクトリベースのシステムは、より効率的なキャッシュのコヒーレンシープロトコルを可能にする一方で、追加のハードウエアを要求することがよくある。ディレクトリ機構はASIC(特定用途向け集積回路:Application Specific Integrated Circuit)、あるいはプロセッサから離れた、他のセミカスタムチップに実装されうるディレクトリキャッシュを有することが多い。ディレクトリキャッシュがセパレートチップに実装される場合、システム全体のコストは増加し、同様に、ボード要求や電力消費、及び冷却要求も増加する。他方、プロセッサコアと同じチップにディレクトリキャッシュを組み込むことは望ましくなく、特にシングルプロセッサあるいはマルチプロセッサシステムの双方に使用することを目的とした汎用マイクロプロセッサに対しては望ましくない。シングルプロセッサシステムで使用される場合、ディレクトリキャッシュは役に立たなくなり、これにより、貴重なダイ領域を無駄にし、かつ、生産の減少のためにコストが増加することになる。
統合ディレクトリとプロセッサキャッシュを備えたコンピュータシステムが開示される。一実施形態では、ディレクトリエントリは特定のコヒーレントトランザクションのために、プローブコマンドと応答トラフィックをフィルタリングするために維持される。ディレクトリエントリは専用のディレクトリストレージに記録されず、L2キャッシュなどの、プロセッサコアに関連するキャッシュメモリサブシステムの指定の位置に記録される。例えば、キャッシュメモリサブシステムの指定のウエイ(way)がディレクトリエントリを記録するために割当てられ、一方で、キャッシュメモリサブシステムのその他のウエイが、通常のプロセッサデータを記録するために使用される。1つの特定の実施品では、ディレクトリエントリが、Modified、Exclusive、あるいはOwnedのコヒーレンシー状態においてキャッシュされるライン(あるいはブロック)を指示するために、キャッシュメモリサブシステム内に記録される。特定ブロックに対するディレクトリエントリの不在は、ブロックが共有、あるいは無効状態のどちらかでキャッシュされることを意味する。
ディレクトリエントリを記録するためにキャッシュメモリサブシステムを利用することによって、別々にディレクトリを記録する必要性が回避される。その結果、全体のコストが低減され、また、必要とされるボード領域、電力消費、及び冷却要求も同様に低減される。更に、ディレクトリエントリを記録するために、キャッシュメモリサブシステムの利用が、サブシステムがシングルプロセッサ環境に配置されているか、あるいはマルチプロセッサ環境に配置されているか、に基づいて選択的に可能にされる実施形態が可能である。従って、シングルプロセッサ環境に配置される場合、キャッシュメモリサブシステムの記録位置が、プロセッサキャッシングオペレーションのために排他的に利用され、かつ、専用のディレクトリストレージの浪費(即ち、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)書き込み可能なブロックのコピーが要求され、RdBlkコマンドが使用されうる場合、あるいは(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)の指定された位置に記録される。ディレクトリエントリの記録のためにキャッシュメモリサブシステム52を利用することにより、別々にディレクトリを記録する必要がなくなる。その結果、全体のコストが低減され、また、要求されるボード領域、電力消費、及び冷却要求も同様に低減される。更に、ディレクトリエントリを記録するためにキャッシュメモリサブシステム52を利用することが、サブシステムがシングルプロセッサ環境に配置されるか、あるいはマルチプロセッサ環境に配置されるかどうかに基づき、選択的に可能にされる実施形態が可能である。従って、シングルプロセッサ環境に配置される場合、キャッシュメモリサブシステムの記録位置は、プロセッサキャッシュオペレーションに対して排他的に利用され、また、専用ディレクトリストレージの浪費(即ち、不利用non-utilization)が回避される。キャッシュメモリサブシステム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に2Lインターリーブを備えた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)状態においてリモートキャッシュに存在するかしないかを示す。図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. プロセッサコアと、
    前記プロセッサコアによりアクセス可能なデータを記録するキャッシュメモリサブシステムと、
    前記キャッシュメモリサブシステムを第1動作モードまたは第2動作モードのどちらに設定するかを制御するための値を記憶するモード記憶ユニットとを備え
    前記キャッシュメモリサブシステムは複数のエントリを有し、前記キャッシュメモリサブシステムの指定されたウェイのエントリが、前記キャッシュメモリサブシステムが前記第1動作モードに設定されている場合にはプロセッサデータを、前記キャッシュメモリサブシステムが前記第2動作モードに設定されている場合にはグローバルコヒーレンスアクティビティを制御するためのディレクトリ情報を、選択的に記録するように構成されている、コンピュータシステム。
  2. 前記プロセッサコアおよび前記キャッシュメモリサブシステムが第一処理ノードの一部を形成し、前記第一処理ノードが第二処理ノードと結合され、前記第一処理ノードがさらに第一システムメモリを含み、かつ前記第二処理ノードが第二システムメモリを含む、請求項1記載のコンピュータシステム。
  3. 前記ディレクトリ情報が、前記第一システムメモリ内にマップされたアドレス位置に対応するデータのキャッシュコピーがノードに存在するかどうかを示す、請求項2記載のコンピュータシステム。
  4. 前記ディレクトリ情報が、前記キャッシュコピーがModified、Exclusive、または、Owned状態にあるかどうかを示す、請求項3記載のコンピュータシステム。
  5. 前記アドレス位置に対応する、前記キャッシュメモリサブシステム内のディレクトリエントリの不在が、前記データの前記キャッシュコピーが共有あるいは無効のどちらかであることを示す、請求項3記載のコンピュータシステム。
  6. 前記キャッシュメモリサブシステムは、前記ディレクトリ情報に応じて、プローブコマンドを一つ以上の処理ノードへ選択的に送信するように構成されている、請求項1記載のコンピュータシステム。
  7. 前記キャッシュメモリサブシステムの指定されたウェイの所定のストレージラインは複数のディレクトリエントリを含む、請求項1記載のコンピュータシステム。
  8. 各ディレクトリエントリがステートフィールドを含む、請求項7記載のコンピュータシステム。
  9. 各ディレクトリエントリがオーナーフィールドをさらに含む、請求項8記載のコンピュータシステム。
  10. 各ディレクトリエントリがディレクトリタグフィールドをさらに含む、請求項9記載のコンピュータシステム。
JP2004540279A 2002-09-27 2003-09-18 統合ディレクトリとプロセッサキャッシュを備えたコンピュータシステム Expired - Fee Related JP4237142B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/256,318 US6868485B1 (en) 2002-09-27 2002-09-27 Computer system with integrated directory and processor cache
PCT/US2003/030880 WO2004029776A2 (en) 2002-09-27 2003-09-18 Computer system with integrated directory and processor cache

Publications (2)

Publication Number Publication Date
JP2006501546A JP2006501546A (ja) 2006-01-12
JP4237142B2 true JP4237142B2 (ja) 2009-03-11

Family

ID=32041767

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004540279A Expired - Fee Related JP4237142B2 (ja) 2002-09-27 2003-09-18 統合ディレクトリとプロセッサキャッシュを備えたコンピュータシステム

Country Status (8)

Country Link
US (1) US6868485B1 (ja)
EP (1) EP1543425A2 (ja)
JP (1) JP4237142B2 (ja)
KR (1) KR101014394B1 (ja)
CN (1) CN100357914C (ja)
AU (1) AU2003272795A1 (ja)
TW (1) TWI311707B (ja)
WO (1) WO2004029776A2 (ja)

Families Citing this family (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8185602B2 (en) 2002-11-05 2012-05-22 Newisys, Inc. Transaction processing using multiple protocol engines in systems having multiple multi-processor clusters
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
US7797495B1 (en) 2005-08-04 2010-09-14 Advanced Micro Devices, Inc. Distributed directory cache
US7606981B2 (en) * 2005-12-19 2009-10-20 Intel Corporation System and method for reducing store latency
US7577795B2 (en) * 2006-01-25 2009-08-18 International Business Machines Corporation Disowning cache entries on aging out of the entry
US8527713B2 (en) 2006-01-31 2013-09-03 Qualcomm Incorporated Cache locking without interference from normal allocations
US7581068B2 (en) * 2006-06-29 2009-08-25 Intel Corporation Exclusive ownership snoop filter
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
US20090138220A1 (en) * 2007-11-28 2009-05-28 Bell Jr Robert H Power-aware line intervention for a multiprocessor directory-based coherency protocol
US7991963B2 (en) * 2007-12-31 2011-08-02 Intel Corporation In-memory, in-page directory cache coherency scheme
US8185695B2 (en) * 2008-06-30 2012-05-22 Advanced Micro Devices, Inc. Snoop filtering mechanism
JP5300407B2 (ja) * 2008-10-20 2013-09-25 株式会社東芝 仮想アドレスキャッシュメモリ及び仮想アドレスキャッシュ方法
WO2010052799A1 (ja) 2008-11-10 2010-05-14 富士通株式会社 情報処理装置及びメモリ制御装置
US8806101B2 (en) * 2008-12-30 2014-08-12 Intel Corporation Metaphysical address space for holding lossy metadata in hardware
US8364898B2 (en) * 2009-01-23 2013-01-29 International Business Machines Corporation Optimizing a cache back invalidation policy
EP2405361A4 (en) 2009-03-06 2012-12-19 Fujitsu Ltd COMPUTER SYSTEM, CONTROL METHOD, RECORDING MEDIUM, AND CONTROL PROGRAM
US8868847B2 (en) * 2009-03-11 2014-10-21 Apple Inc. Multi-core processor snoop filtering
US8589629B2 (en) * 2009-03-27 2013-11-19 Advanced Micro Devices, Inc. Method for way allocation and way locking in a cache
US8738863B2 (en) * 2009-09-25 2014-05-27 Intel Corporation Configurable multi-level buffering in media and pipelined processing components
US8244986B2 (en) * 2009-12-30 2012-08-14 Empire Technology Development, Llc Data storage and access in multi-core processor architectures
JP5435132B2 (ja) * 2010-07-12 2014-03-05 富士通株式会社 情報処理システム
JP5614452B2 (ja) * 2010-09-13 2014-10-29 富士通株式会社 情報処理装置および情報処理装置の制御方法
US20120159080A1 (en) * 2010-12-15 2012-06-21 Advanced Micro Devices, Inc. Neighbor cache directory
US9336146B2 (en) 2010-12-29 2016-05-10 Empire Technology Development Llc Accelerating cache state transfer on a directory-based multicore architecture
CN103544269B (zh) * 2013-10-17 2017-02-01 华为技术有限公司 目录的存储方法、查询方法及节点控制器
CN109240945B (zh) 2014-03-26 2023-06-06 阿里巴巴集团控股有限公司 一种数据处理方法及处理器
FR3022653B1 (fr) * 2014-06-20 2017-10-13 Bull Sas Reduction des evictions dans les repertoires de gestion de memoire cache
US10042773B2 (en) * 2015-07-28 2018-08-07 Futurewei Technologies, Inc. Advance cache allocator
US10255190B2 (en) 2015-12-17 2019-04-09 Advanced Micro Devices, Inc. Hybrid cache
US10019375B2 (en) * 2016-03-02 2018-07-10 Toshiba Memory Corporation Cache device and semiconductor device including a tag memory storing absence, compression and write state information
CN106776366B (zh) * 2016-11-18 2019-11-22 华为技术有限公司 地址访问方法及装置
US10073783B2 (en) 2016-11-23 2018-09-11 Advanced Micro Devices, Inc. Dual mode local data store
US11119926B2 (en) 2017-12-18 2021-09-14 Advanced Micro Devices, Inc. Region based directory scheme to adapt to large cache sizes
CN110059026B (zh) * 2018-01-19 2021-06-29 华为技术有限公司 一种目录处理方法、装置及存储系统
US10705959B2 (en) 2018-08-31 2020-07-07 Advanced Micro Devices, Inc. Region based split-directory scheme to adapt to large cache sizes
US10922237B2 (en) 2018-09-12 2021-02-16 Advanced Micro Devices, Inc. Accelerating accesses to private regions in a region-based cache directory scheme
US11914517B2 (en) * 2020-09-25 2024-02-27 Advanced Micro Devices, Inc. Method and apparatus for monitoring memory access traffic
CN114238171B (zh) * 2021-12-21 2022-09-30 海光信息技术股份有限公司 电子设备、数据处理方法和装置、计算机系统

Family Cites Families (25)

* 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
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
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
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
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
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
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
US6996676B2 (en) * 2002-11-14 2006-02-07 International Business Machines Corporation System and method for implementing an adaptive replacement cache policy

Also Published As

Publication number Publication date
JP2006501546A (ja) 2006-01-12
WO2004029776A3 (en) 2004-10-28
KR20050070012A (ko) 2005-07-05
WO2004029776A2 (en) 2004-04-08
CN1685319A (zh) 2005-10-19
KR101014394B1 (ko) 2011-02-15
AU2003272795A8 (en) 2004-04-19
EP1543425A2 (en) 2005-06-22
US6868485B1 (en) 2005-03-15
CN100357914C (zh) 2007-12-26
TW200406676A (en) 2004-05-01
AU2003272795A1 (en) 2004-04-19
TWI311707B (en) 2009-07-01

Similar Documents

Publication Publication Date Title
JP4237142B2 (ja) 統合ディレクトリとプロセッサキャッシュを備えたコンピュータシステム
JP4230998B2 (ja) リモートキャッシュプレゼンス情報を記録するプロセッサキャッシュを備えたコンピュータシステム
US7814286B2 (en) Method and apparatus for filtering memory write snoop activity in a distributed shared memory computer
KR101497002B1 (ko) 스누프 필터링 메커니즘
KR102442079B1 (ko) 메모리에서의 처리를 위한 캐시 일관성
US9792210B2 (en) Region probe filter for distributed memory system
US5897656A (en) System and method for maintaining memory coherency in a computer system having multiple system buses
US6049847A (en) System and method for maintaining memory coherency in a computer system having multiple system buses
US7698508B2 (en) System and method for reducing unnecessary cache operations
US5325504A (en) Method and apparatus for incorporating cache line replacement and cache write policy information into tag directories in a cache system
EP0817073B1 (en) A multiprocessing system configured to perform efficient write operations
EP1311955B1 (en) Method and apparatus for centralized snoop filtering
US20020053004A1 (en) Asynchronous cache coherence architecture in a shared memory multiprocessor with point-to-point links
JPH09259036A (ja) ライトバックキャッシュおよびライトバックキャッシュ内で整合性を維持する方法
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
EP1828907A1 (en) Coherent caching of local memory data

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060911

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

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20081110

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20081117

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20081128

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

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

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

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20111226

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20121226

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees