JP2008269513A - マルチプロセッサコンピュータシステム - Google Patents

マルチプロセッサコンピュータシステム Download PDF

Info

Publication number
JP2008269513A
JP2008269513A JP2007114994A JP2007114994A JP2008269513A JP 2008269513 A JP2008269513 A JP 2008269513A JP 2007114994 A JP2007114994 A JP 2007114994A JP 2007114994 A JP2007114994 A JP 2007114994A JP 2008269513 A JP2008269513 A JP 2008269513A
Authority
JP
Japan
Prior art keywords
cache
address
snoop
line
entry
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.)
Pending
Application number
JP2007114994A
Other languages
English (en)
Inventor
Yutaro Seino
情野雄太郎
Keitaro Uehara
上原敬太郎
▲高▼瀬亮
Akira Takase
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.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2007114994A priority Critical patent/JP2008269513A/ja
Publication of JP2008269513A publication Critical patent/JP2008269513A/ja
Pending 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/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • G06F12/0833Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means in combination with broadcast means (e.g. for invalidation or updating)

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)

Abstract

【課題】
一つのノードにキャッシュメモリを備えるプロセッサを有し、複数ノードで構成されるマルチプロセッサシステムにおいて、余分なスヌープの発生を防ぎ、システム内のトラフィックの増加を防ぐ。
【解決手段】
メインメモリへのラインのリード要求と、キャッシュメモリから追い出され、メインメモリへラインがライトバックされたことをトリガとして、スヌープフィルタに当該キャッシュラインアドレスと各キャッシュメモリのキャッシュ状態を登録し、その後、リクエストをスヌープフィルタが受信した際、スヌープフィルタに登録した情報を比較して、キャッシュラインを所有していないキャッシュメモリに対してはスヌープをフィルタリングする機構を持つ。
【選択図】図1

Description

本発明は、1つのノードに、メインメモリのデータの写しを格納できるライトバック方式のキャッシュメモリと、前記キャッシュメモリをそれぞれ持つ1つ以上のプロセッサと、ノード間を結ぶノード制御装置を有し、2つ以上のノードで構成されるマルチプロセッサコンピュータシステムにおけるスヌープフィルタに関する。
プロセッサ自身がキャッシュメモリを内蔵するような場合のように、システム内に複数のプロセッサを有するマルチプロセッサシステムには、キャッシュメモリをプロセッサ毎に備えたものがある。システム内の全てのプロセッサとキャッシュメモリは、同一のメインメモリを共用でき、メモリ内の特定のラインは、メモリと複数のプロセッサのキャッシュメモリに同時に存在できる。したがって、キャッシュメモリにキャッシュされている特定のラインのコピーはすべて同一で最新でなければならない。この特性はデータの一貫性、またはコヒーレンシと呼ばれる。複数のキャッシュメモリ間のコヒーレンシを維持するプロトコルは、キャッシュ・コヒーレンシ・プロトコルと呼ばれる。
一般的に、キャッシュメモリのデータ格納構造にはセットアソシアティブ方式が採用されている。この場合、インデックスと呼ばれるラインアドレスのサブセットを用いてキャッシュメモリ内のライン位置を指定し、次にタグと呼ばれるラインアドレスの上位ビットからなる残りのセットをデータと共に格納する。インデックスを用いるキャッシュメモリでは、特定のアドレスを有するデータは、インデックスにより指定される1セットのキャッシュライン内にのみ配置することができる。アドレスに関するインデックスが2つ以上のラインにマップする場合に、そのキャッシュメモリはセットアソシアティブであると呼ばれ、マップできる数をウェイ数と呼ぶ。
セットアソシアティブキャッシュメモリにおいて、インデックスが等しいラインがウェイ数分格納されていて、プロセッサがキャッシュメモリに存在しない新規ラインを要求した場合、キャッシュメモリから既存ラインを追い出し、メインメモリにライトバックする必要がある。追い出すラインの選択には最も使われていないラインを選択するLRU(Least Recently Used)などが用いられている。しかし、データの局所性から、追い出されたラインが再び要求される可能性は高い。
ラインには唯一の「オーナー」が存在し得る。キャッシュメモリがラインをオーナーとして所有している場合、プロセッサのラインの変更が許可される。いかなるキャッシュ・コヒーレンシ・プロトコルも、キャッシュラインの最新のコピーをその最新のオーナー(存在する場合)から取得し、このデータのコピーをリクエスタに提供する必要がある。ラインを変更する場合は、リクエスタが所有権を取得する必要があり、共用のコピーをすべて無効にする必要がある。
ラインのオーナーが存在する場所を確認するには、一般的にスヌープ方式と呼ばれる方法がある。この方法はオーナーが不明であり、すべてのキャッシュメモリに問い合わせ(スヌープブロードキャスト)を行って要求されたラインの最新コピーの位置を決定する必要がある。システム内のあらゆる装置によるキャッシュラインへのアクセス要求は、システム内のすべてのキャッシュメモリに転送される。最終的に、ラインの最新のコピーが存在する場所が特定され、リクエスタにコピーが提供される。このプロトコルでは、要求毎に全キャッシュメモリに問い合わせを行うため、マルチプロセッサシステムではトラフィックが増加しシステム性能を悪化させてしまうこととなる。
上記の問題を解決するためにスヌープフィルタを使用する方法がある。スヌープフィルタは、システム内でアクセスされたキャッシュラインに関するアドレス情報(タグ)と各キャッシュメモリのライン保持情報のセットを記憶し、スヌープ送信の制御を行うキャッシュ・コヒーレンシ・プロトコルである。キャッシュラインの要求では、始めにスヌープフィルタが、リードを行ってラインのコピーを所有しているキャッシュメモリ以外に対するスヌープをフィルタリングする。システム内のすべてのキャッシュメモリにスヌープブロードキャストする必要がなくなるため、スヌープ方式のみのキャッシュ・コヒーレンシ制御よりシステム性能が向上する。たとえば特許文献1では、キャッシュメモリに存在する全てのデータのキャッシュ状態を示すコピータグを持ち、データが最新の値のときのみキャッシュメモリへのスヌープを行うスヌープフィルタが開示されている。
特開平10−222423号公報
上述した従来例では、スヌープフィルタのエントリがキャッシュメモリのエントリを包含した構造となっている。よって、キャッシュメモリの容量を大きくすると、スヌープフィルタの容量も大きくなってしまうことが問題となる。そこで、一部のラインに関する情報のみを記憶するエントリ構造にした場合、スヌープフィルタの容量を変えることなく、キャッシュメモリ容量を増やすことが出来る。しかし、このような構造では、リクエストされたキャッシュラインアドレスを全て記憶できないため、キャッシュメモリから追い出されたラインへの再要求があった場合に、スヌープフィルタには要求ラインの情報が存在しない可能性がある。その場合、データのオーナーが不明になるために全キャッシュメモリにスヌープブロードキャストを行う必要が発生し、システムにおけるバストラフィックは増加してしまう問題がある。そのため、少ない容量で効率的にスヌープをフィルタリングする方式が必要となる。
そこで、本発明の課題は、複数ノードを持ち、各ノードに複数のプロセッサ及びキャッシュメモリを有するマルチプロセッサコンピュータシステムにおいて、システム内でのトラフィックを減少させるための、改善されたスヌープフィルタを提供することである。
本発明は、複数のノードから成り、各ノードはメインメモリとライトバック方式のキャッシュメモリを有する1つ以上のプロセッサと各ノード間を接続するノード制御装置を備えたマルチプロセッサコンピュータシステムにおいて、前記ノード制御装置はスヌープ送信を制御するスヌープフィルタを有し、該スヌープフィルタは、キャッシュメモリのラインがメインメモリへライトバックされた際に、ライトバック信号をトリガとしてライトバックされたラインのキャッシュラインアドレスを格納するアドレス格納機構と、前記アドレス格納機構により格納されたアドレスに対して、各キャッシュメモリの状態を登録するキャッシュ状態登録機構と、前記アドレス格納機構により格納されたアドレスとリクエストアドレスがヒットした場合、キャッシュ状態がラインの無所有を示しているキャッシュメモリに対して、スヌープ送信をフィルタリングするスヌープ処理機構を備えたことを特徴とする。
本発明は、複数のノードから成り、各ノードはメインメモリとライトバック方式のキャッシュメモリを有する1つ以上のプロセッサと各ノード間を接続するノード制御装置を備えたマルチプロセッサコンピュータシステムにおいて、前記ノード制御装置はスヌープ送信を制御するスヌープフィルタを有し、該スヌープフィルタは、メインメモリに対するリード要求の際のリード信号、または、キャッシュメモリのラインがメインメモリへライトバックされた際のライトバック信号をトリガとして、リード、またはライトバックされたラインのキャッシュラインアドレスを格納するアドレス格納機構と、前記アドレス格納機構により格納されたアドレスに対して、各キャッシュメモリの状態を登録するキャッシュ状態登録機構と、前記アドレス格納機構により格納されたアドレスとリクエストアドレスがヒットした場合、キャッシュ状態がラインの無所有を示しているキャッシュメモリに対して、スヌープ送信をフィルタリングするスヌープ処理機構を備えたことを特徴とする。
一般に、キャッシュメモリにおける容量の問題により、キャッシュされるライン数には制限があり、その制限を越えてラインがキャッシュされる場合は、ラインはやむを得ず追い出され、メインメモリへとライトバックされなければならない。しかし、データの局所性から、追い出されたラインは、ライトバックを行ったプロセッサから再度利用される可能性が高い。
本発明によれば、従来のスヌープフィルタの機構に加えて、キャッシュラインがキャッシュメモリから追い出され、メインメモリへライトバックされたことをトリガとして、スヌープフィルタにキャッシュラインアドレスを登録することにより、追い出されたキャッシュラインがライトバックを行ったプロセッサから再要求された場合でも、該キャッシュラインを所有していないキャッシュメモリに対してはスヌープをフィルタリングする機構を持つ。
その結果、従来のスヌープフィルタに比べて余分なスヌープを減らし、システム内のトラフィックの増加を防ぐことができる。
以下、本発明の実施例を図面を用いて説明する。
「システム構成」
図1は、本実施例に係るスヌープフィルタを持つマルチプロセッサシステムの構成を表すブロック図である。ノード100においてメインメモリ130と、メインメモリのデータの写しを格納できるライトバック方式のキャッシュメモリ121と、キャッシュメモリを備えた3つのプロセッサ120と、スヌープ発行機能を備えるスヌープフィルタ111を内蔵したノード制御装置110を有しており、それぞれは相互に接続され、通信を行う。本実施例では、ノード100と同じ機構を持つノード200,300,400の計4つのノードが相互に接続され、通信を行うマルチプロセッサコンピュータシステムを構成するものとする。
なお、本発明のスヌープフィルタを用いる場合において、必ずしも本実施例のようなシステム構成にする必要はない。
「スヌープフィルタの構造」
図2は本実施例に係るスヌープフィルタの構造を説明するための説明図である。本実施例のスヌープフィルタでは、リード用エントリ10及びライトバック用エントリ20と、リード用エントリアドレス比較部13及びライトバック用エントリアドレス比較部23と、リード用エントリ登録/消去部14及びライトバック用エントリ登録/消去部24と、メッセージ判定部5と、スヌープ宛先選択部6と、スヌープ発行部7を備える。
リード用エントリ10及びライトバック用エントリ20は、当該キャッシュラインアドレスが登録されるアドレス部11,21と、登録アドレスに対して各キャッシュメモリが当該キャッシュラインを所有している場合に「0b1」、所有していない場合に「0b0」として登録されるキャッシュ状態部12,22を備える。本実施例でのエントリ数はシステム内の全ラインアドレス数よりも少ないため、LRU方式を用いて登録エントリを追い出す構造とし、リード信号でのみ登録されるリード用エントリ10とライトバック信号でのみ登録されるライトバック用エントリ20は独立した構造となっている。これは、ライトバック専用のエントリ領域を持つことで、ライトバック信号で登録されたキャッシュラインアドレスを、受信したリード信号で追い出されることなく長時間記憶しておくことができるためである。その結果、データの局所性によってライトバックされたプロセッサからライトバックされたラインの再リード要求が発生しても、ライトバック用エントリ20からキャッシュラインアドレスを特定できるため、スヌープフィルタが効果的に動作して、余分なスヌープの発生を防ぐことができる。
また、リード用エントリ10とライトバック用エントリ20は排他的構造となっており、リード用エントリ10とライトバック用エントリ20に同じキャッシュラインアドレスが登録されることはない。排他制御は、リード用エントリ登録/消去部14及びライトバック用エントリ登録/消去部24の書込みによって行われ、一方のエントリに当該アドレスが存在する場合は当該エントリを消去するとともに、もう一方のエントリに当該アドレス及びキャッシュ状態情報を再登録することにより、エントリ間での情報の入れ替えが行われる。
リード用エントリアドレス比較部13では、リード用エントリ10のアドレス部11内のアドレスとリクエストのアドレス信号1を入力とし、その比較結果信号をリード用エントリ登録/消去部14とスヌープ宛先選択部6に対して出力する。
ライトバック用エントリアドレス比較部23では、ライトバック用エントリ20のアドレス部21内のアドレスとリクエストのアドレス信号1を入力とし、その比較結果信号をライトバック用エントリ登録/消去部24とスヌープ宛先選択部6に対して出力する。
メッセージ種判定部5では、リクエストのメッセージ種コード信号3を入力とし、そのメッセージ種判定信号をリード用エントリ登録/消去部13とライトバック用エントリ登録/消去部23とスヌープ宛先選択部6に対して出力する。
スヌープ宛先選択部6では、リクエストの送信元ID信号2と、リード用エントリ10及びライトバック用エントリ20のキャッシュ状態部12,22内のキャッシュ状態情報と、リード用エントリアドレス比較部13及びライトバック用エントリアドレス比較部23にて出力した比較結果信号と、メッセージ種判定部5にて出力したメッセージ種判定信号を入力とする。
スヌープ宛先選択部6は、メッセージ種判定信号がリードもしくはスヌープを示している場合において、リード用エントリアドレス比較部13およびライトバック用エントリアドレス比較部23の2つの比較結果が全エントリとミスヒットしたことを示している場合は、システム内の全キャッシュメモリをスヌープ対象としたスヌープ宛先情報信号とスヌープ発行指示信号をスヌープ発行部7に出力する。また、リード用エントリアドレス比較部13の比較結果がエントリ内でヒットし、ライトバック用エントリアドレス比較部23の比較結果がエントリ内でミスヒットしたことを示している場合は、リード用エントリ10のキャッシュ状態部12のキャッシュ状態情報を選択し、リード用エントリアドレス比較部13の比較結果がエントリ内でミスヒットし、ライトバック用エントリアドレス比較部23の比較結果がエントリ内でヒットしたことを示している場合は、ライトバック用エントリ20のキャッシュ状態部22のキャッシュ状態情報を選択し、選択したキャッシュ状態情報より当該キャッシュラインアドレスのキャッシュ状態が「0b1」のキャッシュメモリをスヌープ対象としたスヌープ宛先情報信号とスヌープ発行指示信号をスヌープ発行部7に出力する。
ただし、メッセージ種がリードの場合において、リクエスタはスヌープ対象とはならないため、リクエストの送信元IDに該当するキャッシュメモリはスヌープ宛先情報から除外される。また、メッセージ判定部がリード、スヌープ以外を検出した場合、スヌープが発行されることはないため、スヌープ発行部7に対してスヌープ宛先情報信号及びスヌープ発行指示信号は出力されない。
スヌープ発行部7では、スヌープ宛先選択部6にて出力したスヌープ宛先情報信号及びスヌープ発行指示信号を入力とする。スヌープ宛先情報は、スヌープ対象となるキャッシュメモリのID情報であり、そのIDのキャッシュメモリに対してスヌープが発行され、スヌープ信号4が出力される。ただし、スヌープ発行指示信号が入力されないと、スヌープ発行は行われない。
リード用エントリ登録/消去部14では、リクエストのアドレス信号1と、リクエストの送信元ID信号2と、メッセージ種判定部5にて出力したメッセージ種判定信号と、リード用エントリアドレス比較部13にて出力した比較結果信号を入力とする。
メッセージ種判定信号がリードを示している場合において、リード用エントリアドレス比較部13の比較結果が全エントリとミスヒットしたことを示している場合は、リード用エントリ10のアドレス部11に入力されたアドレスを書込み、キャッシュ状態部12に送信元IDに該当するキャッシュメモリのキャッシュ状態を書込みエントリ登録が行われる。リード用エントリアドレス比較部13の比較結果がエントリ中でヒットしていることを示している場合は、キャッシュ状態部12に送信元IDに該当するキャッシュメモリのキャッシュ状態を書込む。
また、メッセージ種判定信号がライトバックを示している場合において、リード用エントリアドレス比較部13の比較結果がエントリ中でヒットしたことを示している場合のみ、リード用エントリ10の当該アドレスのエントリに対して初期値を書込み当該エントリの消去が行われる。
また、メッセージ種判定信号がスヌープレスポンスを示している場合において、リード用エントリアドレス比較部13の比較結果がエントリ中でヒットしたことを示している場合のみ、キャッシュ状態部12に送信元IDに該当するキャッシュメモリのキャッシュ状態を書込む。その他のメッセージ種に対しては、何も出力されない。
ライトバック用エントリ登録/消去部24では、リクエストのアドレス信号1と、リクエストの送信元ID信号2と、メッセージ種判定部5にて出力したメッセージ種判定信号と、ライトバック用エントリアドレス比較部23にて出力した比較結果信号を入力とする。
メッセージ種判定信号がリードを示している場合において、ライトバック用エントリアドレス比較部23の比較結果がエントリ中でヒットしたことを示している場合のみ、ライトバック用エントリ20の当該アドレスのエントリに対して初期値を書込み当該エントリの消去が行われる。
また、メッセージ種判定信号がライトバックを示している場合において、ライトバック用エントリアドレス比較部23の比較結果が全エントリとミスヒットしたことを示している場合のみ、ライトバック用エントリ20のアドレス部21に入力されたアドレスを書込み、キャッシュ状態部22に全キャッシュメモリのキャッシュ状態を書込みエントリ登録が行われる。その他のメッセージ種に対しては、何も出力されない。
なお、本発明のスヌープフィルタを用いる場合において、必ずしも本実施例のようなスヌープフィルタの構造及び構成にする必要はない。
「スヌープフィルタの動作」
本実施例におけるスヌープフィルタは、リード信号、またはライトバック信号と、スヌープ信号、スヌープレスポンス信号を受信した際に動作する。受信した4つの信号は、最初にリクエストアドレスがアドレス部11,21に登録されているエントリに存在しているか否かをアドレス比較部13,23により探索する。以下で、リード用エントリアドレス比較部13及びライトバック用エントリアドレス比較部23にてミスヒットした場合とヒットした場合の2つのケースにおける、リード、ライトバック、スヌープ信号受信時の動作を説明する。
[ケース1:ミスヒット]
リード信号受信の場合
リード用エントリ登録/消去部14にてリクエストアドレスをリード用エントリ10のアドレス部11に登録するとともに、スヌープ宛先選択部6にてリクエスタ以外が持つキャッシュメモリに対してスヌープブロードキャストを行うようスヌープ発行部7に指示する。そのスヌープレスポンスにより、リード用エントリ登録/消去部14にてキャッシュメモリ内のキャッシュ状態情報として、ラインを所有している場合には「0b1」、ラインを所有していない場合は「0b0」をキャッシュ状態部12に登録するとともに、リードリクエストを発行したプロセッサが持つキャッシュメモリに関するライン所有状態を「0b1」としてキャッシュ状態部12に登録する。
ライトバック信号受信の場合
ライトバック用エントリ登録/消去部24にてリクエストアドレスをライトバック用エントリ20のアドレス部21に登録するとともに、全キャッシュメモリのキャッシュ状態情報を「0b0」としてキャッシュ状態部22に登録する。これは、ライトバックはラインがメインメモリに書き戻されるため全キャッシュメモリにはラインの所有者がいなくなることを意味しているためである。
スヌープ信号受信の場合
キャッシュラインアドレス及びキャッシュ状態情報を登録することなく、スヌープ宛先選択部6にて全キャッシュメモリに対してスヌープブロードキャストを行うようスヌープ発行部7に指示する。このときのスヌープレスポンスでは、キャッシュラインアドレス及びキャッシュ状態情報を登録することはない。
[ケース2:ヒット]
リード信号受信の場合
リード用エントリアドレス比較部13においてリクエストアドレスがヒットした場合は、ヒットしたアドレスに対してキャッシュ状態部12における各キャッシュメモリのラインの所有・無所有の状態情報により、スヌープ宛先選択部6にてそのキャッシュ状態情報が「0b1」のキャッシュメモリに対してはスヌープ送信を行うようスヌープ発行部7に指示する。リード用エントリ登録/消去部14にて、スヌープレスポンスにより当該キャッシュメモリに関するキャッシュ状態部12のキャッシュ状態情報を更新する。また、リード用エントリ登録/消去部14にて、リードリクエストを発行したプロセッサが持つキャッシュメモリに関するキャッシュ状態部12のキャッシュ状態情報を「0b1」として更新する。キャッシュ状態部12にて「0b0」が登録されている当該キャッシュメモリに対してはスヌープは発行されず、フィルタリングされる。
ライトバック用エントリアドレス比較部23においてリクエストアドレスがヒットした場合は、ヒットしたアドレスに対してキャッシュ状態部22における各キャッシュメモリのラインの所有・無所有の状態情報がスヌープ宛先選択部6に出力されるが、キャッシュ状態部22において全キャッシュメモリのキャッシュ状態情報は「0b0」のためスヌープ発行は指示されず、完全にフィルタリングされる。さらに、エントリの排他的構造によりエントリの入替えを行う。入替えにおいては、既存エントリの登録情報をライトバック用エントリ登録/消去部24にて消去するとともに、リード用エントリ登録/消去部14にてリード用エントリ10のアドレス部11にリクエストアドレスを再登録し、リクエスタのキャッシュ状態情報を「0b1」、その他のキャッシュメモリのキャッシュ状態情報を「0b0」としてキャッシュ状態部12に登録する。この理由は、ライトバックされたラインは、どのキャッシュメモリからもキャッシュされていないことを意味しているためである。
ライトバック信号受信の場合
リクエストアドレスがリード用エントリアドレス比較部13においてヒットした場合は、エントリの排他的構造によりエントリの入替えを行う。入替えにおいては、リード用エントリ登録/消去部14にてそのエントリを消去するとともに、ライトバック用エントリ登録/消去部24にてライトバック用エントリ20のアドレス部21にリクエストアドレスを再登録し、全キャッシュメモリのキャッシュ状態情報を「0b0」としてキャッシュ状態部22に登録する。この理由は、ライトバックされたラインは、どのキャッシュメモリからもキャッシュされていないことを意味しているためである。
リクエストアドレスがライトバック用エントリアドレス比較部23にてヒットすることはない。なぜなら、ライトバックはリードの後にしか発生しないため、排他的構造を持つエントリにおいては、ライトバックされるキャッシュラインのアドレスは、リード用エントリ10に登録されている場合を除きエントリには存在しないためである。
スヌープ信号受信の場合
リクエストアドレスがリード用エントリアドレス比較部13にてヒットした場合は、ヒットしたアドレスに対するキャッシュ状態部12における各キャッシュメモリのラインの所有・無所有の状態情報により、スヌープ宛先選択部6にてそのキャッシュ状態情報が「0b1」のキャッシュメモリに対してはスヌープ送信を行うようスヌープ発行部7に指示する。リード用エントリ登録/消去部14にて、そのスヌープレスポンスにより当該キャッシュメモリに関するキャッシュ状態部12のキャッシュ状態情報を登録、更新する。キャッシュ状態情報が「0b0」のキャッシュメモリに対してはスヌープは発行されず、フィルタリングされる。
リクエストアドレスがライトバック用エントリアドレス比較部23にてヒットした場合は、ヒットしたアドレスに対するキャッシュ状態部22における各キャッシュメモリのラインの所有・無所有の状態情報がスヌープ宛先選択部6に出力されるが、キャッシュ状態部22において全キャッシュメモリのキャッシュ状態情報は「0b0」のためスヌープ発行は指示されず、完全にフィルタリングされる。
「動作例 ローカル」
ノード100内のローカルキャッシュメモリに対するスヌープフィルタリングの動作例を2ケース示す。
ケース1
動作1‐1 リード信号受信
図3は、システムの初期化後にプロセッサ120aがリモートノード200のメインメモリ230のラインアドレス0b0011_1011_1001に対してリード要求を行った際の、ノード100におけるスヌープフィルタ111の動作を示し、図4は図3の動作におけるスヌープフィルタ111のエントリ状態の遷移を示している。スヌープフィルタ111がリード信号50を受信した場合、スヌープフィルタ111のリード用エントリ30のアドレス部31及びライトバック用エントリ40のアドレス部41にリクエストアドレス0b0011_1011_1001が存在しないため、リード用エントリアドレス比較部13およびライトバック用エントリアドレス比較部23にてミスヒットする。その結果、スヌープ宛先選択部6にてローカルキャッシュメモリ121b,121cに対してスヌープ信号51,52がブロードキャスト発行されるようスヌープ発行部7に指示する。そのスヌープレスポンスをスヌープフィルタ111が受信すると、リード用エントリ登録・消去部14にて、リクエストアドレスがリード用エントリ30のアドレス部31に登録され、キャッシュメモリ121a,121b,121cのキャッシュ状態情報がリード用エントリ30のキャッシュ状態部32a,32b,32cにそれぞれ登録される。本動作では、リクエスタのキャッシュメモリ121aはラインを取得するため、キャッシュ状態部32aには「0b1」が登録され、その他のキャッシュメモリは初期化後の動作のためラインは所有していないことになり、キャッシュ状態部32b及び32cには「0b0」が登録される。
動作1‐2 ライトバック信号受信
図5は、動作1‐1後にキャッシュメモリ121aにキャッシュされているアドレス0b0011_1011_1001のラインがリモートノード200のメインメモリ230にライトバックされる際の、ノード100におけるスヌープフィルタ111の動作を示し、図6は図5の動作におけるスヌープフィルタ111のエントリ状態の遷移を示している。スヌープフィルタ111がライトバック信号55を受信した場合、スヌープフィルタ111のリード用エントリ30のアドレス部31にリクエストアドレス0b0011_1011_1001が存在するため、リード用エントリアドレス比較部13にてヒットする。また、登録を行うライトバックリクエストのアドレスがリード用エントリ10にてヒットしているため、ヒットしたアドレスのエントリをライトバック用エントリ40へ入れ替えなければならない。よって、リード用エントリ登録/消去部14にてヒットした既存エントリの消去を行うとともに、ライトバック用エントリ登録/消去部24にてリクエストアドレスをライトバック用エントリ40のアドレス部41に登録し、全キャッシュメモリの状態情報が「0b0」としてキャッシュ状態部42に登録される。これは、ライトバックにより、全キャッシュメモリはラインを所有していない状態になるためである。
動作1‐3‐1 リード信号受信
図7は、動作1‐2後にプロセッサ120aがリモートノード200のメインメモリ230のラインアドレス0b0011_1011_1001に対して再リード要求を行った際の、ノード100におけるスヌープフィルタ111の動作を示し、図8は図7の動作におけるスヌープフィルタ111のエントリ状態の遷移を示している。スヌープフィルタ111がリード信号60を受信した場合、スヌープフィルタ111のライトバック用エントリ40内のアドレス部41にリクエストアドレス0b0011_1011_1001が存在するため、ライトバック用エントリアドレス比較部23にてヒットする。キャッシュ状態部42において、ヒットしたアドレスに対する全キャッシュメモリのキャッシュ状態情報は「0b0」のため、スヌープ宛先発行部6はスヌープ発行をスヌープ発行部7に指示せず、ローカルキャッシュメモリに対してのスヌープが完全にフィルタリングされる。
また、登録を行うリードリクエストのアドレスがライトバック用エントリ20にてヒットしているため、ヒットしたアドレスのエントリをリード用エントリ30へ入れ替えなければならない。よって、ライトバック用エントリ登録/消去部24にてヒットした既存エントリの消去を行うとともに、リード用エントリ登録/消去部14にてリクエストアドレスをリード用エントリ30のアドレス部31に登録し、各キャッシュ状態情報がキャッシュ状態部32に登録される。本動作では、リクエスタのキャッシュメモリ121aはラインを取得するため、キャッシュ状態部32aには「0b1」が登録され、その他のキャッシュメモリはラインを保持していない状態であったため、キャッシュ状態部32b及び32cには「0b0」が登録される。
動作1‐3‐2 スヌープ信号受信
図9は、動作1‐2後にノード100がリモートノード200からのラインアドレス0b0011_1011_1001に対するスヌープ信号を受信した際の、ノード100におけるスヌープフィルタ111の動作を示し、図10は図9の動作におけるスヌープフィルタ111のエントリ状態の遷移を示している。スヌープフィルタ111がスヌープ信号65を受信した場合、スヌープフィルタ111のライトバック用エントリ40内のアドレス部41にリクエストアドレス0b0011_1011_1011が存在するため、ライトバック用エントリアドレス比較部23にてヒットする。キャッシュ状態部42において、ヒットしたアドレスに対する全キャッシュメモリのキャッシュ状態情報は「0b0」のため、スヌープ宛先発行部6はスヌープ発行をスヌープ発行部7に指示せず、ローカルキャッシュメモリに対してのスヌープが完全にフィルタリングされる。その結果、エントリ情報の登録は行われず、ノード100がスヌープ発信元のリモートノード200にスヌープレスポンスを送信する。
ケース2
動作2‐1 リード信号受信
ケース1の動作1‐1と同様の動作とする。
動作2‐2‐1 リード信号受信
図11は、動作2‐1後にプロセッサ120bがリモートノード200のメインメモリ230のラインアドレス0b0011_1011_1001に対して、ラインの所有権取得を伴うリード要求を行った際の、ノード100におけるスヌープフィルタ111の動作を示し、図12は図11の動作におけるスヌープフィルタ111のエントリ状態の遷移を示している。スヌープフィルタ111がリード信号70を受信した場合、スヌープフィルタ111のリード用エントリ30内のアドレス部31にリクエストアドレス0b0011_1011_1001が存在するため、リード用エントリアドレス比較部13にてヒットする。キャッシュ状態部32cにおいて、ヒットしたアドレスに対するキャッシュメモリ121cのキャッシュ状態情報は「0b0」のため、スヌープ宛先発行部6はスヌープ発行をスヌープ発行部7に指示せず、スヌープがフィルタリングされる。
また、キャッシュ状態部32aにおいて、キャッシュメモリ121aのキャッシュ状態情報は「0b1」のため、スヌープ宛先発行部6の指示によりスヌープ発行部7がスヌープ信号71を発行し、そのスヌープレスポンスをスヌープフィルタ111が受信する。その結果、リード用エントリ登録/消去部14にて、リード用エントリ30のキャッシュ状態部32の各キャッシュ状態情報が登録され、更新される。本動作では、リクエスタのキャッシュメモリ121bがラインを所有するためキャッシュ状態部32bは「0b1」に更新され、キャッシュメモリ121aではラインの所有権がなくなり、ラインが無所有となるためキャッシュ状態部32aは「0b0」に更新される。
動作2‐2‐2 スヌープ信号受信
図13は、動作2‐1後にノード100がリモートノード200からのラインアドレス0b0011_1011_1001に対して、ラインの所有権取得に伴うリードリクエストに起因して発生したスヌープ信号を受信した際の、ノード100におけるスヌープフィルタ111の動作を示し、図14は図13の動作におけるスヌープフィルタ111のエントリ状態の遷移を示している。スヌープフィルタ111がスヌープ信号75を受信した場合、スヌープフィルタ111のリード用エントリ30内のアドレス部31にリクエストアドレス0b0011_1011_1001が存在するため、リード用エントリアドレス比較部13にてヒットする。キャッシュ状態部32b,32cにおいて、ヒットしたアドレスに対するキャッシュメモリ121b,121cのキャッシュ状態情報は「0b0」のため、スヌープ宛先発行部6はスヌープ発行をスヌープ発行部7に指示せず、スヌープがフィルタリングされる。
また、キャッシュ状態部32aにおいて、キャッシュメモリ121aのキャッシュ状態情報は「0b1」のため、スヌープ宛先発行部6の指示によりスヌープ発行部7がスヌープ信号76を発行し、そのスヌープレスポンスをスヌープフィルタ111が受信する。その結果、リード用エントリ登録/消去部14にて、リード用エントリ30のキャッシュ状態部32の各キャッシュ状態情報が登録され、更新される。本動作では、キャッシュメモリ121aでのラインの所有権がなくなり、ラインが無所有となるためキャッシュ状態部32aは「0b0」に更新される。
[動作例 グローバル]
スヌープフィルタは各ノード間において、リモートノードへのスヌープ送信のフィルタリングにも適用することも可能である。その場合の動作例では、フィルタが動作する信号の方向がローカルの場合と逆になり、リモートノードからのリード、またはライトバック信号と、ローカルノード内からのスヌープ信号の受信によって動作することになる。また、その際、スヌープフィルタのエントリのキャッシュ状態部は、ローカルの動作例におけるローカルキャッシュメモリのキャッシュ状態情報ではなく、各リモートノード内において任意のキャッシュメモリがラインを所有している場合は「0b1」、全キャッシュメモリがラインを所有していないなら「0b0」をキャッシュ状態情報として登録する。
図15はグローバルなスヌープフィルタリングに本発明のスヌープフィルタを適用した場合におけるスヌープフィルタのエントリの説明図である。図15では、リード用エントリ80のアドレス部81に登録されたアドレス0b0011_1011_1001のラインはノード200内の任意のキャッシュメモリが所有していて、ノード300,400内のキャッシュメモリにはラインの所有者がいないということを表している。したがって、グローバルなスヌープフィルタリングの場合におけるスヌープフィルタの動作例はローカルの場合と同様となる。
上記の動作例により、多くのプロセッサからの集中的なトランザクションにより、キャッシュラインが追い出されてライトバックが多発し、ライトバックしたプロセッサのデータの局所性によってライトバックされたラインに対する再リード要求が発生した場合において、本発明の機構を用いず、従来のリード要求でキャッシュラインアドレスを登録するスヌープフィルタを搭載した場合、ライトバックされたラインがあっても、スヌープフィルタにはそのラインへの前回のリード情報がエントリから追い出されている可能性が高いためスヌープフィルタは動作せず、全キャッシュメモリに対してスヌープブロードキャストすることになり、システム内のトラフィックは増加してしまう。しかし、本発明の機構を用いた場合、スヌープフィルタは再リード要求したプロセッサが以前にライトバックしたラインを所有していたという情報を記憶していおく機構を持つために、スヌープフィルタが効果的に動作し、余分なスヌープを送信することなくラインを取得することができる。したがって、システム全体のトラフィックの増加を防ぐことができる。
本実施例に係るスヌープフィルタを持つマルチプロセッサシステムの構成を表すブロック図である。 本実施例に係るスヌープフィルタの構造を説明するための説明図である。 動作1‐1のリード信号受信時のスヌープフィルタ動作説明図である。 動作1‐1におけるスヌープフィルタのエントリ状態遷移の説明図である。 動作1‐2のライトバック信号受信時のスヌープフィルタ動作説明図である。 動作1‐2におけるスヌープフィルタのエントリ状態遷移の説明図である。 動作1‐3‐1のリード信号受信時のスヌープフィルタ動作説明図である。 動作1‐3‐1におけるスヌープフィルタのエントリ状態遷移の説明図である。 動作1‐3‐2のスヌープ信号受信時のスヌープフィルタ動作説明図である。 動作1‐3‐2におけるスヌープフィルタのエントリ状態遷移の説明図である。 動作2‐2‐1のリード信号受信時のスヌープフィルタ動作説明図である。 動作2‐2‐1におけるスヌープフィルタのエントリ状態遷移の説明図である。 動作2‐2‐2のスヌープ信号受信時のスヌープフィルタ動作説明図である。 動作2‐2‐2におけるスヌープフィルタのエントリ状態遷移の説明図である。 本実施例に係るグローバルなスヌープフィルタリングにスヌープフィルタを適用した場合のスヌープフィルタのエントリ説明図である。
符号の説明
1 アドレス信号
2 送信元ID信号
3 メッセージ種コード信号
4 スヌープ信号
5 メッセージ種判定部
6 スヌープ宛先選択部
7 スヌープ発行部
10 リード用エントリ
11 アドレス部
12 キャッシュ状態部
13 リード用エントリアドレス比較部
14 リード用エントリ登録/消去部
20 ライドバック用エントリ
21 アドレス部
22 キャッシュ状態部
23 ライトバック用エントリアドレス比較部
24 ライトバック用エントリ登録/消去部
30 リード用エントリ
31 アドレス部
32a,32b,32c キャッシュ状態部
40 ライトバック用エントリ
41 アドレス部
42a,42b,42c キャッシュ状態部
50 リード信号
51 スヌープ信号
52 スヌープ信号
53 リード信号
55 ライトバック信号
56 ライトバック信号
60 リード信号
61 リード信号
65 スヌープ信号
70 リード信号
71 スヌープ信号
72 リード信号
75 スヌープ信号
76 スヌープ信号
80 リード用エントリ
81 アドレス部
82a,82b,82c キャッシュ状態部
90 ライト用エントリ
91 アドレス部
92a,92b,92c キャッシュ状態部
100 ノード
110 ノード制御装置
111 スヌープフィルタ
120a,120b,120c プロセッサ
121a,121b,121c キャッシュメモリ
130 メインメモリ
200 ノード
210 ノード制御装置
211 スヌープフィルタ
220a,220b,220c プロセッサ
221a,221b,221c キャッシュメモリ
230 メインメモリ
300 ノード
400 ノード

Claims (5)

  1. 複数のノードから成り、各ノードはメインメモリとライトバック方式のキャッシュメモリを有する1つ以上のプロセッサと各ノード間を接続するノード制御装置を備えたマルチプロセッサコンピュータシステムにおいて、
    前記ノード制御装置はスヌープ送信を制御するスヌープフィルタを有し、該スヌープフィルタは、キャッシュメモリのラインがメインメモリへライトバックされた際に、ライトバック信号をトリガとしてライトバックされたラインのキャッシュラインアドレスを格納するアドレス格納機構と、前記アドレス格納機構により格納されたアドレスに対して、各キャッシュメモリの状態を登録するキャッシュ状態登録機構と、前記アドレス格納機構により格納されたアドレスとリクエストアドレスがヒットした場合、キャッシュ状態がラインの無所有を示しているキャッシュメモリに対して、スヌープ送信をフィルタリングするスヌープ処理機構を備えたことを特徴とするマルチプロセッサコンピュータシステム。
  2. 複数のノードから成り、各ノードはメインメモリとライトバック方式のキャッシュメモリを有する1つ以上のプロセッサと各ノード間を接続するノード制御装置を備えたマルチプロセッサコンピュータシステムにおいて、
    前記ノード制御装置はスヌープ送信を制御するスヌープフィルタを有し、該スヌープフィルタは、メインメモリに対するリード要求の際のリード信号、または、キャッシュメモリのラインがメインメモリへライトバックされた際のライトバック信号をトリガとして、リード、またはライトバックされたラインのキャッシュラインアドレスを格納するアドレス格納機構と、前記アドレス格納機構により格納されたアドレスに対して、各キャッシュメモリの状態を登録するキャッシュ状態登録機構と、前記アドレス格納機構により格納されたアドレスとリクエストアドレスがヒットした場合、キャッシュ状態がラインの無所有を示しているキャッシュメモリに対して、スヌープ送信をフィルタリングするスヌープ処理機構を備えたことを特徴とするマルチプロセッサコンピュータシステム。
  3. 複数のノードから成り、各ノードは、他ノードと共通に使用するメインメモリと、メインメモリのデータの写しを格納するライトバック方式のキャッシュメモリを有する1つ以上のプロセッサと、他ノードと相互に接続してデータ転送を行うノード制御装置を備え、該ノード制御装置は自ノードのスヌープ送信を制御するスヌープフィルタを有することを特徴とするマルチプロセッサコンピュータシステム。
  4. 前記スヌープフィルタは、自ノードのキャッシュメモリのラインがメインメモリへライトバックされた際に、ライトバック信号をトリガとしてライトバックされたラインのキャッシュラインアドレスを登録するアドレス部と前記登録されたアドレスに対して自ノードの各キャッシュの当該キャッシュラインの所有の有無を示す情報を登録するキャッシュ状態部とを有する複数のライトバック用エントリと、リクエストのアドレスと前記ライトバック用エントリのアドレス部内のアドレスとを比較するライトバック用アドレス比較部と、リクエストのメッセージ種別を判定するメッセージ種別判定部と、リクエストの送信元ID情報と前記ライトバック用エントリのキャッシュ状態部のキャッシュ状態情報と前記ライトバック用アドレス比較部の比較結果と前記メッセージ種別判定部からの種別情報を入力してスヌープの発行先を選択するスヌープ宛先選択部とを備えることを特徴とする請求項3記載のマルチプロセッサコンピュータシステム。
  5. 前記スヌープフィルタは、メインメモリに対するリード要求の際のリード信号をトリガとしてリードされたラインのキャッシュラインアドレスを登録するアドレス部と前記登録されたアドレスに対して自ノードの各キャッシュの当該キャッシュラインの所有の有無を示す情報を登録するキャッシュ状態部とを有する複数のリード用エントリと、リクエストのアドレスと前記リード用エントリのアドレス部内のアドレスとを比較するリード用アドレス比較部と、リクエストの送信元ID情報と前記リード用エントリのキャッシュ状態部のキャッシュ状態情報と前記リード用アドレス比較部の比較結果と前記メッセージ種別判定部からの種別情報を入力してスヌープの発行先を選択するスヌープ宛先選択部とを備えることを特徴とする請求項4記載のマルチプロセッサコンピュータシステム。
JP2007114994A 2007-04-25 2007-04-25 マルチプロセッサコンピュータシステム Pending JP2008269513A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007114994A JP2008269513A (ja) 2007-04-25 2007-04-25 マルチプロセッサコンピュータシステム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007114994A JP2008269513A (ja) 2007-04-25 2007-04-25 マルチプロセッサコンピュータシステム

Publications (1)

Publication Number Publication Date
JP2008269513A true JP2008269513A (ja) 2008-11-06

Family

ID=40048879

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007114994A Pending JP2008269513A (ja) 2007-04-25 2007-04-25 マルチプロセッサコンピュータシステム

Country Status (1)

Country Link
JP (1) JP2008269513A (ja)

Similar Documents

Publication Publication Date Title
US6571322B2 (en) Multiprocessor computer system with sectored cache line mechanism for cache intervention
US8140770B2 (en) Data processing system and method for predictively selecting a scope of broadcast of an operation
US7389388B2 (en) Data processing system and method for efficient communication utilizing an in coherency state
US8495308B2 (en) Processor, data processing system and method supporting a shared global coherency state
US7366847B2 (en) Distributed cache coherence at scalable requestor filter pipes that accumulate invalidation acknowledgements from other requestor filter pipes using ordering messages from central snoop tag
US7310708B2 (en) Cache system with groups of lines and with coherency for both single lines and groups of lines
US6353875B1 (en) Upgrading of snooper cache state mechanism for system bus with read/castout (RCO) address transactions
US7584329B2 (en) Data processing system and method for efficient communication utilizing an Ig coherency state
US7290094B2 (en) Processor, data processing system, and method for initializing a memory block to an initialization value without a cache first obtaining a data valid copy
US6502171B1 (en) Multiprocessor system bus with combined snoop responses explicitly informing snoopers to scarf data
US8037252B2 (en) Method for reducing coherence enforcement by selective directory update on replacement of unmodified cache blocks in a directory-based coherent multiprocessor
US6343347B1 (en) Multiprocessor system bus with cache state and LRU snoop responses for read/castout (RCO) address transaction
US6275909B1 (en) Multiprocessor system bus with system controller explicitly updating snooper cache state information
US6343344B1 (en) System bus directory snooping mechanism for read/castout (RCO) address transaction
US20070180196A1 (en) Data processing system, cache system and method for handling a flush operation in a data processing system having multiple coherency domains
US20060179245A1 (en) Data processing system and method for efficient communication utilizing an Tn and Ten coherency states
US7454578B2 (en) Data processing system and method for predictively selecting a scope of broadcast of an operation utilizing a location of a memory
US6349367B1 (en) Method and system for communication in which a castout operation is cancelled in response to snoop responses
KR100326632B1 (ko) 에이치_알 상태를 포함하는 캐시 일관성 프로토콜
US6279086B1 (en) Multiprocessor system bus with combined snoop responses implicitly updating snooper LRU position
US6338124B1 (en) Multiprocessor system bus with system controller explicitly updating snooper LRU information
US8255635B2 (en) Claiming coherency ownership of a partial cache line of data
US6484241B2 (en) Multiprocessor computer system with sectored cache line system bus protocol mechanism
US7584331B2 (en) Data processing system and method for selectively updating an invalid coherency state in response to snooping a castout
US6553462B2 (en) Multiprocessor computer system with sectored cache line mechanism for load and store operations