JPH11161619A - マルチプロセッサ・コンピュータ・システム用スヌープ・フィルタ - Google Patents

マルチプロセッサ・コンピュータ・システム用スヌープ・フィルタ

Info

Publication number
JPH11161619A
JPH11161619A JP10183806A JP18380698A JPH11161619A JP H11161619 A JPH11161619 A JP H11161619A JP 10183806 A JP10183806 A JP 10183806A JP 18380698 A JP18380698 A JP 18380698A JP H11161619 A JPH11161619 A JP H11161619A
Authority
JP
Japan
Prior art keywords
group
address
processors
processor
snoop
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
JP10183806A
Other languages
English (en)
Inventor
Andrew E Phelps
アンドリュー・イー・フェルプス
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.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems 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 Sun Microsystems Inc filed Critical Sun Microsystems Inc
Publication of JPH11161619A publication Critical patent/JPH11161619A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • 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)

Abstract

(57)【要約】 【課題】 マルチプロセッサ・コンピュータ・システム
における複数のプロセッサのグループに処理を分配する
ための改良方法および装置を提供する。 【構成】 まず、アドレス・リクエストを第一のプロセ
ッサのグループで受信する。アドレス・リクエストは、
リクエストされたメモリ・ページに対応するメモリアド
レスと関連付けられる。次に、アドレス・リクエストに
関係するプロセッサのグループとアドレス・リクエスト
に関係しないプロセッサのグループを識別する。そし
て、関係するプロセッサのグループに対してほぼ同時に
アドレス・リクエストを同報通信し、関係しないプロセ
ッサのグループに対して同報通信をしない。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、マルチプロセッサ
・コンピュータ・システムに関し、より詳しくはマルチ
プロセッサ・コンピュータ・システムにおけるメモリ・
アクセス・リクエスト処理に関する。
【0002】
【従来の技術】従来のプロセッサの計算処理速度は急激
に増加しているが、さらに高速の計算処理能力が必要と
されている。計算処理上の大きな課題には、天気予報、
核融合モデリングおよび航空機のシミュレーション等が
あり、ここでは現在供給可能なものをはるかに超える実
質的な計算処理能力が必要とされている。装置が高速化
されるにしたがってプロセッサも高速化されてきている
が、求められる性能レベルはコンピュータ上の複雑な問
題を処理するためにいまなお不十分である。
【0003】高性能の計算処理を達成するために、複数
の別々のプロセッサが相互接続され、パラレル処理を可
能にするマルチプロセッサ・コンピュータ・システムを
構成している。
【0004】マルチプロセッサ計算処理システムにおい
て、プロセッサ・メモリ・リクエストを満足させる二種
類の遅延源が存在する。第一の遅延源は、メイン・メモ
リへのアクセス・タイムであり、第二の遅延源は、各種
プロセッサを接続する相互接続ネットワークによって課
せられるコミュニケーション遅延である。相互接続ネッ
トワークの帯域幅が不適正である場合、コミュニケーシ
ョン遅延は帯域幅の競合によってかなり増加する。
【0005】相互接続ネットワークの帯域幅およびアク
セス・タイムの制限に対して提案される1つの解決策
は、個々のプロセッサにおいて専用のキャッシュメモリ
を使用することである。キャッシュ・パラメータを適正
に選択することによって、伝達比(キャッシュからメイ
ン・メモリに通過するメモリ・リクエストとキャッシュ
で形成される初期リクエストとの比率)と有効アクセス
・タイムを減少させることができる。残念ながら、メイ
ン・メモリ位置の複数コピーが可能であることによっ
て、専用のキャッシュには、スティル・データ(stale
data)の問題(またはマルチキャッシュ・コヒーレンシ
ーの問題)が生じる。
【0006】提案されるもう1つの解決策は、コヒーレ
ンシー・ディレクトリ(coherencydirectories )の使
用を含む。コヒーレンシー・ディレクトリは、トラック
を保持する概して大きな分割メモリ・ブロックであり、
このブロックは、トラックを保持して、マルチプロセッ
サ・コンピュータ・システムにおけるそのプロセッサ
が、メモリのいずれかのラインを所有する。残念なが
ら、コヒーレンシー・ディレクトリは追加メモリを必要
とするため高価である。また、コヒーレンシー・ディレ
クトリは通常、テーブル索引フォーマットに構成される
ためメモリが低速である。さらに、メモリの呼出しをア
ドレス・リクエストごとに行う必要があるため、コヒー
レンシー・ディレクトリは、システム全体の性能をかな
り低下させる可能性がある。
【0007】さらに最近、共有メモリマルチ処理システ
ムは、シングル・バス(例えばアドレス・バス)によっ
てプロセッサ(またはプロセッサ・グループ)を相互接
続した。残念ながら、プロセッサの速度が高速化する
と、シングル・バスを介して接続できるプロセッサの個
数が減少する。バスの使用に伴う課題の1つは、さらに
多くの装置をバスに追加すると性能が低下することであ
る。これは、さらに多くのプロセッサをバスに追加する
と、プロセッサが使用できるバスの帯域幅が実際狭まる
ことを意味する。
【0008】図1Aは、従来のマルチプロセッサ・コン
ピュータ・システム100の一部を示したブロック図で
あり、各種プロセッサ・グループ間の代表的なスヌープ
結果パスを図示している。コンピュータ・システム10
0は、第一のプロセッサ・グループ110と第二のプロ
セッサ・グループ120と第三のプロセッサ・グループ
130とアドレス相互接続150とデータ相互接続16
0とを含む。なお、図1Aではプロセッサ・グループを
3つのみ図示しているが、マルチプロセッサ・コンピュ
ータ・システム100は、一般に適当数のプロセッサ・
グループを含むことに留意されたい。プロセッサ11
0、120および130の通信は、二方向バス140お
よび142によって行われる。各プロセッサ・グループ
110、120および130は、スヌープ結果ディスト
リビュータとアドレス・リピータを含む。アドレス・リ
ピータは、二方向バス140および142によってアド
レス相互接続150と通信するために使用される。概し
て、アドレス相互接続150は、アドレス・リクエスト
をコンピュータ・システム100内にある各アドレス・
リピータに同報通信するが、データ相互接続160はポ
イントとポイントとのルータとして作動する。
【0009】動作時に、プロセッサ・グループ110、
120および130は、その各メモリアドレス・リクエ
ストを直接アドレス相互接続150に転送する。アドレ
ス相互接続150は、相反するアドレス・リクエストを
いずれも仲介し、同時にシステム100内にある(オリ
ジナル・リクエスタ・グループを含む)あらゆるプロセ
ッサ・グループに対して選択されたリクエストされたア
ドレス・リクエストを同報通信し返す。受信すると、各
プロセッサ・グループは、グループ・スヌープ結果を作
成し、その独自のスヌープ結果ディストリビュータに記
憶する。次に、各グループのスヌープ結果ディストリビ
ュータは、システム100内にある各プロセッサ・グル
ープ内のその他スヌープ結果ディストリビュータすべて
に対してその各グループ・スヌープ結果を同報通信す
る。このようにして、コンピュータ・システム100内
にある各プロセッサ・グループは、その他すべてのプロ
セッサ・グループのグループ・スヌープ結果を入手す
る。その後、プロセッサ・グループは、アドレス・リク
エストを開始し、コンピュータ・システム100内にあ
る適正なメモリ位置に対して方向づけされる。このよう
なスヌープ結果ディストリビュータを有するスヌープシ
ステムを利用した従来のマルチプロセッサシステムは、
CA,Mountain Viewにあるサンマイクロ
システムズ社製造のSTARFIREシステムによって
実現されている。
【0010】図1Bは、図1Aに図示された従来のマル
チプロセッサ・コンピュータ・システム100における
典型的なメモリアドレス・リクエスト・トランザクショ
ンを示すフローチャートである。
【0011】従来のマルチプロセッサ・コンピュータ・
システムのメモリアドレス・リクエスト・トランザクシ
ョン・プロセス150では、まず、個々のプロセッサが
アドレス・リクエストを関係するアドレス・リピータに
送出する(10)。当業者に周知のように、プロセッサ
・グループにおける少なくとも1つのプロセッサが、通
常アドレス・リクエストを生成し、メモリの特定のブロ
ックを検索する。アドレス・リクエストは、典型的に
は、メモリのブロックがプロセッサによってリクエスト
されているという目的を示す特定のメモリコマンドと関
連付けられている。アドレス・リクエスタ12は、受信
したアドレス・リクエストを従来のマルチプロセッサ・
コンピュータ・システム100と関連するアドレス相互
接続に転送する(12)。アドレス相互接続は、適切な
相反仲介の後、選択されたアドレス・リクエスト14を
従来のマルチプロセッサ・コンピュータ・システム10
0内に含まれるすべてのアドレス・リピータに対して同
報通信する(14)。ここには、プロセッサのオリジナ
ル・リクエスタ・グループと関連するアドレス・リピー
タを含む。各関連するアドレス・リピータ16は、受信
されたアドレス・リクエストをその関連する個々のプロ
セッサのそれぞれに対して同報通信する(16)。個々
のプロセッサは、それぞれ、順番にその各メモリキャッ
シュに照会してリクエストされたメモリアドレスのコピ
ーを所有したかもしくは共有したかのいずれかを決定す
る(18)。この決定18に基づいて、各プロセッサ
は、個々のスヌープ結果を生成し、この結果は、次に、
プロセッサのグループと関連付けられるスヌープ結果デ
ィストリビュータに転送される(20)。スヌープ結果
ディストリビュータは、次に、個々のプロセッサから受
信されたすべての個々のスヌープ結果を組み合わせて
(22)グループ・スヌープ結果を形成する。次に、ス
ヌープ結果ディストリビュータは、グループ・スヌープ
結果をコンピュータ・システム100内にあるすべての
他のスヌープ結果ディストリビュータに対して同報通信
する(24)。各スヌープ結果ディストリビュータは、
グループ・スヌープ結果をシステム100内にあるプロ
セッサの他のグループすべてから同報通信し、かつ受信
することができるためである。
【0012】各スヌープ結果ディストリビュータは、コ
ンピュータ・システム100内にあるあらゆる他のスヌ
ープ結果ディストリビュータから受信されたグループ・
スヌープ結果を組み合わせて(26)グローバル・スヌ
ープ結果を形成する。グローバル・スヌープ結果には、
システム100内にあるすべてのプロセッサ・グループ
にリクエストされたメモリアドレスと関連するメモリの
ページの所有に関する情報が含まれる。各スヌープ結果
ディストリビュータはグローバル・スヌープ結果をその
関連するプロセッサのグループ内にある個々のプロセッ
サすべてに転送する(28)。グローバルスヌープ結果
を受信すると、オリジナル・リクエスタ・プロセッサは
メモリのリクエストしたページを入手する(30)。
【0013】コンピュータ・システムに追加されたプロ
セッサの数が増加すると、アドレス・バスの関連性のな
いデータの量によってシステムの性能全体が低下する。
例えば、さらに多くのプロセッサがコンピュータ・シス
テムに追加されると、ある点で最大アドレス帯域幅がシ
ステム性能全体の改良を阻止してしまう。その場合、よ
り多くのプロセッサを追加しても追加の性能は得られな
い。
【0014】
【発明が解決しようとする課題】したがって、マルチプ
ロセッサ・コンピュータ・システムにおける各種プロセ
ッサ間のアドレス・リクエストの送信を減少させるテク
ニックが必要である。
【0015】
【課題を解決するための手段】広義に記載すると、本発
明は、マルチプロセッサ・コンピュータ・システム中の
プロセッサの複数のグループ中にアドレス・リクエスト
を分配する改善された方法および装置に関する。本発明
によると、アドレス・リクエストは、メモリのリクエス
トされたページに関係するプロセッサのグループにのみ
同報通信される。このようにして、アドレス・リクエス
トの分配に必要となるアドレスの帯域幅は、それに応じ
て減少する。
【0016】本発明は、例えば方法、コンピュータ・シ
ステムおよび装置として実施することを含めて、様々な
態様で実施できる。本発明のいくつかの実施態様を後述
する。
【0017】アドレス・リクエストをマルチプロセッサ
・コンピュータ・システムにおける複数のプロセッサの
グループに分配するための方法である本発明の実施態様
は、第一のプロセッサのグループにおいて、リクエスト
されたメモリ・ページに対応するメモリアドレスと関連
付けるアドレス・リクエストを受信する操作と、プロセ
ッサのグループのアドレス・リクエストに関係するプロ
セッサのグループを識別する操作と、アドレス・リクエ
ストを関係するプロセッサのグループに対してほぼ同時
に同報通信し、関係しないプロセッサのグループに対し
て同報通信しない操作とを含む。
【0018】マルチプロセッサ・コンピュータ・システ
ムである本発明の一実施態様は、複数のプロセッサのグ
ループを含む。複数のプロセッサのグループは第一のプ
ロセッサのグループを含み、これは、リクエストされた
メモリ・ページに対応するメモリアドレスと関連付けら
れるアドレス・リクエストを受信する。また、関係する
プロセッサのグループは、アドレス・リクエストに関係
するプロセッサのグループであり、関係しないプロセッ
サのグループは、アドレス・リクエストに関係しないプ
ロセッサのグループである。マルチプロセッサ・コンピ
ュータ・システムは、複数のアドレス・リピータをさら
に含み、各アドレス・リピータは、プロセッサのグルー
プの1つと関連付けられ、アドレス・リクエストを受信
し、かつ同報通信できる。コンピュータ・システムは、
複数のスヌープ・フィルタをさらに含み、それぞれがプ
ロセッサのグループの1つと関連付けられ、それぞれが
関係するプロセッサのグループと、関係しないプロセッ
サのグループとを識別できる。さらに、コンピュータ・
システムは、アドレス相互接続を含み、プロセッサのグ
ループのそれぞれに関連するスヌープ・フィルタのそれ
ぞれに電気的に接続されている。アドレス相互接続は、
アドレス・リクエストを関係するプロセッサのグループ
に対してほぼ同時に同報通信することができ、かつ関係
しないプロセッサのグループに対して同報通信をしな
い。
【0019】さらに別の実施形態において、マルチプロ
セッサ・コンピュータ・システムは、複数の処理要素
と、前記処理要素によって共有される共有リソースと、
前記処理要素および前記共有リソースを相互接続するバ
スと、トラヒック・フィルタとを含む。トラヒック・フ
ィルタは、トラヒック・オペレーションを減少させ、マ
ルチプロセッサ・コンピュータ・システムにおけるバス
でのトラヒックを減少させる。
【0020】本発明には多数の利点がある。本発明にお
ける1つの利点は、アドレス相互接続の帯域幅によって
システム全体の性能低下をなくすことである。本発明の
もう1つの利点は、アドレス相互接続によって多数のプ
ロセッサまたはプロセッサのグループについてアドレス
・リクエストを処理できることである。本発明のまた別
の利点は、同時に多数のアドレス・リクエストを分配で
きることである。
【0021】
【発明の実施の形態】本発明の他の態様および利点は、
本発明の原理を例として説明する、添付の図面とともに
行った以下の詳細な説明から明らかになろう。
【0022】本発明は、添付の図面とともに以下の詳細
な説明を読めば容易に理解できよう。図面中、同じ参照
番号は同じ要素を示す。
【0023】本発明はマルチプロセッサ・コンピュータ
・システムにおいて複数グループのプロセッサにアドレ
ス・リクエストを分配するための改良方法および装置に
関する。本発明において、アドレス・リクエストはメモ
リのリクエストされたページに関係するプロセッサのグ
ループのみに同報通信される。このようにすればアドレ
ス・リクエストの分配に必要なアドレス帯域幅はこれに
応じて縮小する。ここで、「プロセッサ・グループ」と
は1つのボード(例えば、プリント配線基板)を共有す
るあらゆる数のプロセッサでもよいし、またはコンピュ
ータ・システムに含まれる全プロセッサのサブセットで
もよい。例として2、3あげれば、12のプロセッサシ
ステムの場合、1グループが3台のプロセッサとして、
4グループとしてもよいし、1グループを1台とした1
2グループでもよい。もちろん、プロセッサの各グルー
プが同数のプロセッサを含む必要はない。
【0024】本発明の一実施形態において、スヌープ・
フィルタは、中央に集められたブロード・キャスターが
関係するプロセッサ・グループおよび処理に関係のない
プロセッサ・グループを認識することを可能にする。ス
ヌープ・フィルタは別々の集積回路チップ、もう1つと
一体化している集積回路チップ、またはコンピュータ・
システムのチップである。
【0025】関係するプロセッサ・グループとは、メモ
リの要求された、すなわちリクエストされたブロック
(例えば、ページまたはライン)上でオペレーションを
実行したことのあるプロセッサ・グループである。別の
実施形態では、そのグループのいずれかのプロセッサ
が、メモリのリクエストされたブロックのいずれかのラ
インのキャッシュコピーを得るリクエストを行った場合
には、そのプロセッサ・グループはメモリのリクエスト
ブロックに関係しているといえる。もう1つの実施形態
では、そのグループのいずれかのプロセッサがメモリの
リクエストブロックに関係する場合は、そのプロセッサ
・グループがメモリのリクエストブロックに関係すると
いえる。例として、Read to Own(所有の読
み取り)オペレーションは、リクエストしたプロセッサ
がリクエストされたメモリ・アドレスに関係するメモリ
・ブロックへの書き込み、もしくは修正を望むオペレー
ションである。リクエストされたメモリ・ブロックの内
容は変更されるので、リクエストされたメモリ・ブロッ
クのキャッシュコピーを有するすべてのプロセッサは、
メモリ・ブロックのコピーが唯一有効の場合に、メモリ
・ブロックのコピーのリクエストしているプロセッサへ
の最初の配送の後、リクエストされたメモリ・ブロック
のコピーを無効にする。メモリ制御装置は、グローバル
スヌープ結果がメモリのコピーが有効だと示した場合
に、メモリにそのコピーを配送するよう指示する。もう
1つの関係するメモリオペレーション例はRead t
o Share(共有の読み取り)である。このRea
d to Shareは、リクエストしたプロセッサが
メモリ・リクエストページを読み出すことのみ望み、他
プロセッサのキャッシュまたはメモリ内のリクエストさ
れたブロックの他の有効コピーを排除しないオペレーシ
ョンである。
【0026】本発明の実施形態は図2〜図7Cを参照し
ながら以下に説明される。しかしながら、その分野の当
業者はここに与えられている図に関する説明は解説のた
めであり、本発明はこれらの実施形態に限られるもので
はないことを容易に理解するであろう。
【0027】図2は本発明の一実施形態におけるマルチ
プロセッサ・コンピュータ・システム200のブロック
図である。マルチプロセッサ・コンピュータ・システム
200は複数のプロセッサ・グループ、細かくいえば、
少なくともプロセッサ・グループ210およびプロセッ
サ・グループ220を含む。ここで示される実施形態で
は、プロセッサ・グループ210は関係するスヌープ・
フィルタ230を有し、プロセッサ・グループ220は
関係するスヌープ・フィルタ232を有する。通常、プ
ロセッサ・グループ210は複数のプロセッサを含む。
しかしながら、一般的に、プロセッサ・グループは1つ
または複数の処理要素を含む。この実施形態では、プロ
セッサ・グループ210はアドレス・リピータ213お
よびスヌープ結果ディストリビュータ212を含む。ア
ドレス・リピータ213はプロセッサ・グループ210
で受信されたアドレス・リクエストをアドレス・リピー
タバスインタフェース240を介してスヌープ・フィル
タ230へ転送する。同様に、プロセッサ・グループ2
20はアドレス・リピータ263、スヌープ結果ディス
トリビュータ262を含み、同様に操作される。
【0028】コンピュータ・システム200により実行
されるスヌーピング操作は、プロセッサ・グループ21
0を参照しながら説明されるが、通常すべてのプロセッ
サ・グループは同様に操作される。スヌープ・フィルタ
230は、アドレス・リクエストを受信すること、およ
び適切な出力コマンドを作成することが可能である。ス
ヌープ・フィルタ230は次に、出力コマンドをバスイ
ンタフェース242経由でアドレス相互接続250へ転
送する。一般的に、アドレス相互接続250は、ポイン
トとポイントとのルータ、またはバスとしてデータ相互
接続270が作動するコンピュータ・システム200内
に含まれるそれぞれのアドレス・リピータへトランザク
ション(例えば、トランザクション・リクエスト)を同
報通信する。
【0029】コンピュータ・システム200内のすべて
のプロセッサ・グループは、個々のアドレス・リクエス
トをアドレス相互接続250に転送する。中央アドレス
アービタ(図に示されていない)は、アドレス相互接続
250に含まれてから、適切な仲介アルゴリズムに基づ
いてアドレス相互接続250で受信されたアドレス・リ
クエストから1つのアドレス・リクエストを選択する。
選択されたアドレス・リクエスト(関係するコマンドお
よびメモリ・ページ・アドレスと共に)は、それから、
関係をもたないプロセッサ・グループのスヌープ・フィ
ルタへ、別の相反しないアドレス・リクエストを同報通
信すると同時に、すべての関係するプロセッサ・グルー
プのためにアドレス相互接続250によりスヌープ・フ
ィルタへほぼ同時に同報通信する。
【0030】各プロセッサ・グループに関連付けられる
スヌープ・フィルタは、各関係するプロセッサ・グルー
プ用に、選択されたアドレス・リクエストおよびコマン
ドを関係するアドレス・リピータへ転送する。各アドレ
ス・リピータは次に、順に、選択されたアドレス・リク
エストおよびコマンドを関係するグループ・プロセッサ
内のすべての個別プロセッサへ転送する。例として、ス
ヌープ・フィルタ230は選択されたアドレス・リクエ
ストおよびコマンドを受信し、そしてその後関連するア
ドレス・リピータ213を介して同じものをプロセッサ
・グループ210へ転送する。
【0031】説明されている実施形態において、プロセ
ッサ・グループ210に含まれる個々のプロセッサは次
に、それら自身のメモリキャッシュに照会して、リクエ
ストされたメモリ・ページのコピーを持つかどうかを決
定し、個々のスヌープ結果を作成する。別の実施形態に
おいて、プロセッサ・グループ210に含まれる個々の
プロセッサは、それら自身のメモリキャッシュに照会し
て、リクエストされるメモリ・ページに関係するメモリ
ラインのコピーを持つかどうかを決定し、個々のスヌー
プ結果を作成する。そのため、プロセッサ・グループ2
10内の各プロセッサは、そのような個々のスヌープ結
果すべてがグループ・スヌープ結果へ集積されるプロセ
ッサ・グループのために、スヌープ結果をスヌープ結果
ディストリビュータ212へ転送する。スヌープ結果デ
ィストリビュータ212は次に、グループ・スヌープ結
果をプロセッサ・グループ210からシステム200内
の全スヌープ結果ディストリビュータへ同報通信する。
スヌープ結果ディストリビュータ212はまた、コンピ
ュータ・システム200の他のスヌープ結果ディストリ
ビュータからグループ・スヌープ結果を受信することが
可能であり、またそれらをグローバルスヌープ結果に集
積することも可能である。グローバルスヌープ結果はシ
ステム200内の全プロセッサのスヌープ情報を含む。
【0032】図3は図2に示されているマルチプロセッ
サ・コンピュータ・システム200のプロセッサ・グル
ープ210の詳細ブロック図である。この実施形態にお
いて、プロセッサ・グループ210は個々のプロセッサ
211a、211b、211c、および211dを含
む。しかしながら、プロセッサ・グループ210はあら
ゆる適当数のプロセッサを含んでもよいことは理解され
るべきである。システム稼動中に、プロセッサ211
a、211b、211c、または211dのそれぞれ
は、対応する二方向アドレス・バス219a、219
b、219c、および219dを介してアドレス・リク
エストをアドレス・リピータ213に供給できる。例え
ば、プロセッサ211bは、二方向アドレス・バス21
9bを介してアドレス・リピータ213へアドレス・リ
クエストを運べる。この実施形態では、プロセッサ・グ
ループ210の各プロセッサがアドレス・リクエストを
生成するが、アドレス・リピータ213はただ1つのア
ドレス・リクエストをそれぞれのサイクルに転送する。
この、アドレス・リピータ213による転送するアドレ
ス・リクエストの選択は、当分野で知られている仲介ア
ルゴリズムを使用することにより達成される。説明され
ている実施形態において、リクエストされた際に、プロ
セッサ211a、211b、211c、および211d
の各々もまた各自のスヌープ結果をコネクタ218a、
218b、218c、および218dのそれぞれを介し
てスヌープ結果ディストリビュータ212へ転送する。
【0033】本実施形態において、スヌープ結果ディス
トリビュータ212もまたメモリ215からのメモリ・
リクエストページの取り出しを助けるためにメモリ制御
装置214へ入力を生産する。例として、システム稼働
中にスヌープ結果ディストリビュータ212はメモリ制
御装置214へグローバルスヌープ結果を供給するが、
メモリ制御装置214はそれから、適切であれば、メモ
リ215にアドレス・リクエストに関係するメモリコマ
ンドに従って行動するよう指示する。一実施形態におい
て、メモリ215は、リクエスタープロセッサ・グルー
プのページ・アドレス・リクエストに基づいて、コネク
タ217を介してローカル・プロセッサ(すなわち、プ
ロセッサ211a、211b、211c、および211
dのうちの1つ)へ、データ相互接続270およびデー
タ・インタフェース216を介して非ローカル・プロセ
ッサへ、メモリ・リクエストページを送る。
【0034】図4は本発明の一実施形態におけるスヌー
プ・フィルタ300のブロック図である。図4に示され
るスヌープ・フィルタ300は、各プロセッサ・グルー
プが各自に関連するスヌープ・フィルタを有するコンピ
ュータ・システム200に含まれる複数のプロセッサ・
グループの1つに関連付けられている例示的なスヌープ
・フィルタである。スヌープ・フィルタ300がシステ
ム200内の他プロセッサ・グループのそれぞれに複製
されていることを理解されたい。
【0035】スヌープ・フィルタ300はアドレス・バ
スインタフェース240を介してアドレス・リピータ2
13から受信したアドレス・リクエストを並べる入力待
ち行列322を含む。この実施形態では、入力待ち行列
322からのアドレスビットが関係マップ320および
関係キャッシュ324へのインデックスを決める。マル
チプレクサ323は関係マップ320、関係キャッシュ
324、およびアドレス相互接続250に電気的に接続
されているバスインタフェース242へ待機アドレス・
リクエスト、関係中止インディケータ、または新規の関
係インディケータを転送する。決定論理ブロック328
は処理され、入力待ち行列322から待機アドレス・リ
クエストを受信するのと同様に、関係マップ320およ
び関係キャッシュ324の両方から出力データを受信す
る。
【0036】この実施形態では、リモート書き込みマッ
プ326もまたデータを関係マップ320および関係キ
ャッシュ324へ書き込むために含まれている。リモー
ト書き込みマップ326は、関係するプロセッサ・グル
ープへローカルなメイン・メモリのページ毎に少なくと
も1ビットを含む。メモリ・ページに関係するビットが
設定される場合は、非ローカル・プロセッサ・グループ
にはメモリ・ページの少なくとも1キャッシュ・ライン
の所有が認められている。一実施形態においては、リモ
ート書き込みマップ326は1M×1SRAMとして論
理的に構成される64K×18記憶装置の形をとっても
よい。
【0037】スヌープ・フィルタ300もまたページ・
スクラブ装置350およびマルチプレクサ352を含
む。ページ・スクラブ装置350は処理され、負のスヌ
ープ結果をもつあらゆるメモリ・ページでスクラブ操作
が実行される。スクラブ操作は、必要のない入力される
アドレス・トラヒックを排除するのに使用される。ペー
ジ・スクラブ装置350は、着信トラヒックを観測し、
スヌープ結果のないローカル・プロセッサ・グループの
アドレスを選択する。ページ・スクラブ装置350は次
に、使用されていないサイクル中に一連の局所読み出し
を始め、それから選択ページを監視し、このメモリ・ペ
ージへの発信トランザクションがある場合、または正の
スヌープ結果の着信トランザクションがある場合には、
このページのスクラブは中止され、新規のページが選択
される。ページ・スクラブ装置350はこのページのラ
イン毎に、ローカルグループでローカルトランザクショ
ンを生成するか、もしくは空サイクルに挿入される。メ
モリの各行に、初めにRead to Shareが生
成され、ローカル所有のコピーが存在しない場合には、
関係するプロセッサ・グループのあらゆる共有コピーを
無効にするReadto Ownが続けられる。マルチ
プレクサ352はページ・スクラブ装置350から入力
待ち行列322へRead to OwnおよびRea
d to Shareコマンドを供給する。しかしなが
ら、所有コピーが存在する場合には、ページ・スクラブ
は中止され新規のページが選択される。ページ・スクラ
ブがページの最後に到達した場合には、関係中止処理が
生成され、それによって関係する関係マップおよび関係
キャッシュを更新する。
【0038】もう1つの実施形態では、ソフトウェア・
スクラブがスクラブ装置に関係中止処理の2番目のタイ
プを生成させる、スヌープ・フィルタの制御レジスタに
書き込むことにより実行される。これは、オペレーティ
ング・システムがディスクからページを読み込んだ後、
またはページをゼロにした後、またはすべてのキャッシ
ュを無効にする処理でその上に上書きコピーした後に行
われる。
【0039】この実施形態では、二種類ある関係中止処
理がページ・スクラブ装置350により作成される。一
番目の種類ではページ・スクラブ装置350はローカル
・プロセッサ・グループに非ローカルメモリ・ページで
の関係を失わせるトランザクションを生成する。二番目
の種類では、関係中止処理が行われ、これはすべての非
ローカルグループでメモリのローカルページ内の関係を
失わせる。
【0040】この実施形態では、決定論理ブロック32
8が、しばしばバスインタフェース242を介してアド
レス相互接続250に伝達される関係マスク400を生
成する。ある状況では、決定論理ブロック328はパイ
プライン保持回路(図に示されていない)へ返送される
パイプ保持信号700を作成することもある。パイプ保
持信号は関係マスクがメモリ・リクエストページ用に作
成されるまで、入力待ち行列322、関係マップ320
のパイプライン・ステージおよび自身のスヌープ・フィ
ルタの決定ブロック328への入力を差し控えることに
より、一時的にパイプライン・オペレーションを停止す
る効果を持つ。
【0041】関係マップ320はSRAM装置または動
的データ保存および取り出しが可能な他の適切な記憶装
置の形をとってもよい。一実施形態では、関係マップ3
20は8M×1SRAMとして論理的に構成される64
K×18装置の形をとってもよい。好ましくは、関係マ
ップ320はメイン・メモリのページ毎に少なくとも1
関係ビットを含み、またローカルおよび非ローカルメモ
リ・ページを理解するように構成される。説明されてい
る実施形態において、各関係ビットは8Kのページメモ
リに対応する。
【0042】動作では、メイン・メモリの各ローカルペ
ージに関連する関係マップ320中の少なくとも1つの
関係ビットが、非ローカル・プロセッサ・グループに常
駐するプロセッサがメモリのリクエストされたローカル
ページでのオペレーションを以前に行っていた場合、設
定される。あるいはまた、ローカル・プロセッサ・グル
ープに常駐するプロセッサがかつてメモリのリクエスト
された非ローカルページでオペレーションを行ったこと
がある場合は、少なくとも1関係ビットがメイン・メモ
リの各非ローカルページに設定される。
【0043】例として、図5は例示的な関係マップ32
0を示している。関係マップ320は、プロセッサ・グ
ループ210と関係するものと仮定される。関係マップ
320は関係ビット321および関係322を含む相当
数の関係ビットを含む。関係ビット321は非ローカル
ページ・アドレス610(すなわち、グループ210外
のメモリに常駐する)に関連し、関係ビット322はロ
ーカルページ・アドレス620(すなわち、プロセッサ
・グループ210に常駐する)に関係する。この例で、
関係ビット321が図に示されるように論理1(論理0
に設定するとしてもよい)に設定されてる場合は、プロ
セッサ・グループ210内の少なくとも1つのプロセッ
サが非ローカルページ・アドレス610に多少関係する
ということである。あるいはまた、関係マップ320内
の関係ビット322が論理1に設定されている場合は、
グループ210外の少なくとも1つのプロセッサがロー
カルページ・アドレス620に多少関係するということ
である。
【0044】図6は本発明の一実施形態における関係マ
ップ320およびプロセッサ・グループ210に関係す
る関係キャッシュ340を例示的に表現したものであ
る。好ましくは、各関係キャッシュはプロセッサ・グル
ープと同様に関係マップに関連付けられている。関係キ
ャッシュは一般的に、関係マップでの関係するプロセッ
サ・グループが非ローカル・プロセッサ・グループと共
有しているページ・アドレスのダイレクト・マップまた
はセット・アソシエート・キャッシュとして組織され
る。
【0045】関係キャッシュ340に含まれる各ページ
・アドレスは関係マスクに関係する。関係マスクはマル
チプロセッサシステム200内の各プロセッサ・グルー
プ用にシングル・グループ関係ビット402を含む。各
グループ関係ビットはリクエストされたページ・アドレ
スの関係するプロセッサ・グループの関係を示す。
【0046】システム内のスヌープ・フィルタ操作を容
易にするために必要な追加ビットは、関係キャッシュ3
40で供給されてもよい。例えば、更新ビット404が
関係するメモリ・ページでの新規の関係を示すのに加え
られてもよいし、また別の実施形態では「リモート書き
込みOK」ビット406が、関連するページ・アドレス
が非ローカル・プロセッサ・グループにより所有されて
いるキャッシュ・ラインの少なくとも1つを有すること
を示すために、加えられてもよい。
【0047】図6に示された例として、関係キャッシュ
340は非ローカルページ・アドレスタグ610に関係
する関係マスク400を含む。この実施形態では、関係
マスク400はシステム200内のすべてのプロセッサ
・グループのグループ関係ビットを含む。上記のよう
に、ページ・アドレスタグ610はプロセッサ・グルー
プ210に関して非ローカルであり、また関係ビット3
21が設定されるため、プロセッサ・グループ210は
ページ・アドレスタグ610に関係を持つ。この場合、
関係マスク400のプロセッサ・グループ210に関係
するグループ関係ビット408が非ローカルページ・ア
ドレス610のプロセッサ・グループ210により関係
を示すために設定される。
【0048】図4〜図6を参照しながら、スヌープ・フ
ィルタ300の働きが説明される。一実施形態におい
て、プロセッサ・グループ210はローカルページ・ア
ドレス610に関係するアドレス・リクエストをアドレ
ス・リピータ213に転送する。アドレス・リピータ2
13は、次に、アドレス・リピータバスインタフェース
240を介してスヌープ・フィルタ230の入力待ち行
列322へアドレス・リクエストを転送する。
【0049】入力待ち行列322からアドレス・リクエ
ストが開放された後、スヌープ・フィルタ300がロー
カルページ・アドレス610に関係する関係マップ32
0の関係ビット321が設定されているかいないかを決
定する。この例では、ローカルページ・アドレス610
の関係ビット321は設定されているので、関係する関
係マスク(新規のアドレス・リクエストをまだ含んでい
ない前のオペレーションに基づいて)が関係キャッシュ
340から取り出され、関係マップ320から取り出さ
れたデータに加えて、決定ブロック328へ転送され
る。決定論理328はアドレス・リクエストの関係マス
ク400を生成する。決定論理328は、バスインタフ
ェース242を介して関係マスク400を、アドレス・
リクエストおよび関係するメモリコマンドと組み合わさ
れるアドレス相互接続250へ転送する。
【0050】図7A〜図7Cは本発明の一実施形態にお
けるマルチプロセッサ・コンピュータ・システム200
でのシングル・メモリ・アドレス・リクエスト処理のフ
ィルタされた処理700の詳細を表す流れ図である。以
下の説明においては、一般的にマルチプロセッサ・コン
ピュータ・システム200の複数のプロセッサ・グルー
プが本質的には同時に複数のアドレス・リクエストを生
成することに注意すべきである。ここでは、説明を明確
にするために、プロセッサ・グループ210から1つの
アドレス・リクエストのためにフィルタされたスヌープ
処理700が実行されるものとして説明される。
【0051】メモリアドレス・リクエストのライフサイ
クルは、関係するメモリアドレスを持つメモリ・ページ
のリクエストを作成するプロセッサ・グループ内の個々
のプロセッサから開始される。図7Aを参照して、最初
にリクエストするプロセッサを含むプロセッサのグルー
プに関係するアドレス・リピータはメモリ・ページ・ア
ドレス・リクエストを受信する(51)。プロセッサの
リクエスター・グループに関係するスヌープ・フィルタ
はメモリ・ページ・アドレス・リクエストを受信する
(52)。リクエストされたメモリ・ページ・アドレス
が一旦スヌープ・フィルタにより受信されたら、スヌー
プ・フィルタに関係する関係マップが取り出される(5
4)。次に、決定論理ブロックがメモリ・ページ・アド
レスがローカルまたは非ローカルアドレスであるかを決
定する(55)。アドレスがローカルであると決定され
た場合、関係マップはメモリ・リクエスト・ページに関
係する関係マップ内のエントリーが0または1かを決定
するためにもう一度照会する(69)。メモリ・リクエ
スト・ページに関係するエントリーが0であった場合、
スヌープ・フィルタに関係する論理ブロックがメモリ・
リクエスト・ページの関係マスクを、1に設定されるリ
クエスター・プロセッサ・グループを除いたすべてのグ
ループのすべての関係するビットを0に設定することに
より、「自己状態」(self state)に設定す
る(70)。このようにして、アドレス・リクエストは
優先順の一貫性を維持するためだけに発信プロセッサ・
グループに返される。
【0052】一方、メモリ・リクエストページに関連す
る関係するマップ中のエントリーが1であった場合、ス
ヌープ・フィルタに関係する関係キャッシュは照会して
(71)、リクエストされたページが関係キャッシュに
含まれるかどうかを決定する。メモリのリクエストされ
たページ・アドレスが関係キャッシュに含まれていない
と決定された場合には、関係マスクの全関係ビットが1
に設定されるのと同時に、更新ビットが設定される(7
2)。このようにして、更新ビットが設定されているた
めに、すべてのプロセッサ・グループは特別処理として
ページ・アドレス・リクエストを受信する。しかしなが
ら、ページ・アドレス・リクエストが関係キャッシュに
含まれていると決定された場合には、論理ブロックが関
係マスクを関係キャッシュから取り出されるパターンに
設定する(73)。
【0053】リクエストされたページ・アドレスがリク
エスタープロセッサ・グループに対して非ローカルであ
ると決定された場合には(55)、決定論理ブロックが
メモリ・リクエストページに関係するエントリーが0ま
たは1であるかを決定する(56)。しかしながら、1
であると決定された場合には、処理過程はローカルアド
レスであった場合と同様である。図7Cを参照して、リ
クエストされたページ・アドレスでの関係マップ内のエ
ントリーが0である場合は、論理ブロックがパイプ保持
信号を生成する(52)。パイプ保持信号はリクエスタ
ー・プロセッサ・グループのすべての処理を一時停止す
る効果を持つ。このようにして、新規の関係処理が行わ
れ、それによりリクエスター・プロセッサ・グループ
が、今までは関係しなかったメモリ・リクエストページ
が関係するものになったことを、他の全プロセッサ・グ
ループに伝達する。新規の関係処理は、論理ブロックが
メモリ・リクエスト・ページに関係する関係マスクのす
べての関係ビットを1に設定する(59)ことにより開
始される。関係マスクは中央アドレス・アービタに含ま
れる中央アドレス相互接続に転送される(60)。中央
アドレス・アービタは、次に、受信したすべてのアドレ
ス・リクエストを優先させ、またシステム仲介アルゴリ
ズムに基づいて1つのリクエストを選択する。中央アド
レス・アービタがリクエストを認めた際、新規の関係処
理をすべての非ローカル・スヌープ・フィルタに転送す
る(61)。各非ローカル・スヌープ・フィルタはそれ
ぞれの関係キャッシュに照会して(62)、メモリのリ
クエストされたページがその中に含まれているかどうか
を決定する。メモリ・リクエストページのアドレスが関
係する関係キャッシュに含まれている場合には、リクエ
スト・ボードに関係するビットを1に設定することによ
り、各非ローカルスヌープ・フィルタがそれぞれの関係
マスクを更新する(63)。次に、各非ローカルスヌー
プ・フィルタは関係マップを読み出し(64)、その結
果を中央アドレスアービタへ転送する。中央アドレスア
ービタはその結果を全非ローカル・スヌープ・フィルタ
から、新規の関係マスクを関係キャッシュに蓄積、イン
ストールし(66)、関係する関係マップに1をインス
トールする(67)リクエスター・プロセッサ・グルー
プに関係するスヌープ・フィルタへ転送する(65)。
最後に、論理ブロックはリクエスタープロセッサ・グル
ープのパイプをアンロックする効果をもつアンロック・
パイプ信号を転送する(68)。パイプが一旦アンロッ
クされたら、リクエスター・プロセッサ・グループは同
様の過程をたどることが可能である。
【0054】次に、図7Bを参照する。スヌープ・フィ
ルタはメモリ・ページ・アドレス・リクエストおよびオ
リジナル・コマンドに加えて、更新された関係マスクを
アドレス相互接続に含まれる中央アドレスアービタに転
送する(74)。中央アドレスアービタは次に、アドレ
ス・リクエストおよび関連するコマンドを関係するプロ
セッサ・グループのスヌープ・フィルタに対して同報通
信する(76)と同時に、非関係処理を他のプロセッサ
・グループのスヌープ・フィルタに対して同報通信する
(77)。関係する各プロセッサ・グループのスヌープ
・フィルタは更新ビットが設定されているかどうか決定
する(79)。更新ビットが設定されていると決定され
た場合、スヌープ・フィルタは関係する関係マップを読
み出し(80)、メモリ・リクエスト・ページに関係す
る関係マップからオリジナル・リクエスター・プロセッ
サ・グループに関連するスヌープ・フィルタへビットを
転送する(81)。
【0055】関係するそれぞれのプロセッサ・グループ
の各スヌープ・フィルタは関係するプロセッサ・グルー
プに関係するすべてのスヌープ・フィルタにアドレス・
リクエストを同時に転送する(82)。各アドレス・リ
ピータは、それから、関係するプロセッサ・グループに
含まれるすべてのプロセッサに同時に同報通信する(8
3)。関係するプロセッサ・グループの個々の各プロセ
ッサはリクエストされたページの共有または所有される
コピーがあるかどうか決定する(84)。関係するプロ
セッサ・グループの全個別プロセッサはそれぞれのスヌ
ープ結果を関係するスヌープ結果ディストリビュータに
転送する(85)。関係するスヌープ結果ディストリビ
ュータは次に、受信した個々のスヌープ結果をまとめ、
グループ・スヌープ結果にする(86)。各スヌープ結
果ディストリビュータはシステム200に含まれる関係
するプロセッサ・グループに関係するすべての関係ある
スヌープ結果ディストリビュータにグループ・スヌープ
結果を分配する(87)。その後、プロセッサがメモリ
・リクエストページにアクセスする(88)。
【0056】説明されている実施形態において、アドレ
ス相互接続250は相反するアドレス・リクエスト間で
必要な相反仲介を行ってもよいし、また同報通信するの
に適切なアドレス・リクエストを選択してもよい。この
実施形態において、仲介アルゴリズムは概して最優先の
プロセッサ・グループを有する。与えられたいかなるサ
イクルにおいても、アルゴリズムは未解決のリクエスト
をもつプロセッサ・グループがいくつあるかを見て、ど
のプロセッサが最優先かを決定する。仲介アルゴリズム
は一番目の満たされていない最優先のプロセッサ・グル
ープか、または円順で一番目のプロセッサ・グループの
すぐ後のプロセッサ・グループを選択する。リクエスト
が一旦認められると、そのプロセッサ・グループには最
も低い優先権が割り当てられ、ライン上で次だったプロ
セッサ・グループに最も高い優先権が割り当てられる。
別の実施形態では、他の仲介アルゴリズムが適用されて
もよい。
【0057】相反アービタがアドレス・リクエストを選
んだ後、アドレス相互接続250は選択されたアドレス
・リクエスト(例えば、アドレス・リクエスト290)
を型通りに関係するプロセッサ・グループに関係するす
べてのアドレス・リピータに対して同報通信するのと同
時に、あらゆる非相反処理を関係しないプロセッサ・グ
ループに関係するアドレス・リピータに対して同報通信
する。
【0058】選択されたアドレス・リクエスト290が
一旦各関係するプロセッサ・グループ内の個別プロセッ
サのそれぞれに受信されると、各個別プロセッサはそれ
ぞれのメモリキャッシュに照会することによりそれぞれ
の個別スヌープ結果を作成する。このようにしてリクエ
ストされたメモリ・ブロックの共有または所有されたコ
ピーがあるかどうかを決定する。そのような決定の上
で、各プロセッサはそのグループに関連のあるスヌープ
結果ディストリビュータへ各自のスヌープ結果を転送す
る。スヌープ結果ディストリビュータはそこで、受信し
た個別スヌープ結果をグループ・スヌープ結果に蓄積
し、システム200内の関係するグループにあるすべて
のスヌープ結果ディストリビュータへグループ・スヌー
プ結果を伝達する。伝達と同時に、各スヌープ結果ディ
ストリビュータはシステム200内の他のすべての関係
するプロセッサ・グループからすべてのグループ・スヌ
ープ結果を受信し、蓄積し、グローバルスヌープ結果を
構成する。グローバルスヌープ結果はシステム200内
のすべての関係するプロセッサおよびメモリ制御装置に
転送される。
【0059】例として、プロセッサ211a〜211d
はそれぞれのメモリキャッシュ(図に示されていない)
に照会する、およびその結果をコネクタ218a〜21
8dのそれぞれを経由してスヌープ結果ディストリビュ
ータ212に転送することにより個々のスヌープ結果を
生成する。スヌープ結果ディストリビュータ212は、
個別プロセッサスヌープ結果をグループ・スヌープ結果
に組み入れ、そこで他のすべての関係プロセッサ・グル
ープにグループ・スヌープ結果を伝達する。本質的には
同時に、スヌープ結果ディストリビュータ212はシス
テム200内の他のすべてのスヌープ結果ディストリビ
ュータからグループ・スヌープ結果を受信する。グロー
バル・スヌープ結果へすべてのグループ・スヌープ結果
が最終的に蓄積された上で、スヌープ結果ディストリビ
ュータ212はプロセッサ211a〜211dのそれぞ
れに、またメモリ制御装置214へグローバル・スヌー
プ結果を転送する。メモリ制御装置214は次に、メモ
リ215に関連するメモリコマンドに従って行動するよ
う指示する。
【0060】本発明の多数の特徴および利点は以上の説
明から明らかであり、したがって、前記の請求の範囲は
本発明のこのようなすべての特徴および利点を包含する
ものである。さらに、多数の修正および変更が当業者に
は容易に思い付くので、本発明を図示し、説明した正確
な構成および動作に限定することを望まない。したがっ
て、適切なすべての修正形および等価物は本発明の範囲
内に入るものとする。
【図面の簡単な説明】
【図1A】従来のマルチプロセッサ・コンピュータ・シ
ステムの一部分のブロック図である。
【図1B】従来のマルチプロセッサ・コンピュータ・シ
ステムにおける典型的なメモリ・リクエスト処理を示す
フローチャートである。
【図2】本発明の一実施形態における、関係するスヌー
プ・フィルタをもつプロセッサ・グループを有するマル
チプロセッサ・コンピュータ・システムのブロック図で
ある。
【図3】図2に示されるマルチプロセッサ・コンピュー
タ・システムのプロセッサ・グループの詳細ブロック図
である。
【図4】本発明の一実施形態におけるスヌープ・フィル
タのブロック図である。
【図5】本発明の一実施形態における関係マップを示す
図である。
【図6】本発明の一実施形態における関係キャッシュを
示す図である。
【図7A〜図7C】本発明の一実施形態でのマルチプロ
セッサ・コンピュータ・システムにおける、シングルメ
モリアドレス・リクエスト処理の、フィルタされたスヌ
ープ処理の詳細を示すフローチャートである。
【符号の説明】
200 マルチプロセッサ・コンピュータ 210 プロセッサ・グループ 211a プロセッサ 211b プロセッサ 211c プロセッサ 211d プロセッサ 218a コネクタ 218b コネクタ 218c コネクタ 218d コネクタ 219a 二方向アドレス・バス 219b 二方向アドレス・バス 219c 二方向アドレス・バス 219d 二方向アドレス・バス 212 スヌープ結果ディストリビュータ 213 アドレス・リピータ 214 メモリ制御装置 215 メモリ 216 データ・インタフェース 220 プロセッサ・グループ 230 スヌープ・フィルタ 232 スヌープ・フィルタ 240 アドレス・リピータバスインタフェース 242 バスインタフェース 250 アドレス相互接続 262 スヌープ結果ディストリビュータ 263 アドレス・リピータ 270 データコネクタ 300 スヌープ・フィルタ 320 関係マップ 322 入力待ち行列 323 マルチプレクサ 324 関係キャッシュ 326 リモート書き込みマップ 328 決定論理ブロック 350 ページ・スクラブ装置 352 マルチプレクサ 400 関係マスク 402 シングルグループ関係マップ 404 更新ビット 406 「リモート書き込みOK」ビット 610 非ローカルページ・アドレス 620 ローカルページ・アドレス 622 ローカルページ・アドレス 700 パイプ保持信号
【手続補正書】
【提出日】平成10年10月23日
【手続補正1】
【補正対象書類名】図面
【補正対象項目名】全図
【補正方法】変更
【補正内容】
【図1A】
【図1B】
【図5】
【図2】
【図6】
【図3】
【図4】
【図7A】
【図7B】
【図7C】
フロントページの続き (71)出願人 591064003 901 SAN ANTONIO ROAD PALO ALTO,CA 94303,U. S.A.

Claims (4)

    【特許請求の範囲】
  1. 【請求項1】 リクエストされたメモリ・ページに対応
    するメモリ・アドレスに関係するアドレス・リクエスト
    を第一のプロセッサのグループにおいて受信するステッ
    プと、 アドレス・リクエストに関するプロセッサのグループを
    識別し、かつアドレス・リクエストに関係しないプロセ
    ッサのグループを識別するステップと、 関係するプロセッサのグループにアドレス・リクエスト
    をほぼ同時に同報通信し、関係しないプロセッサのグル
    ープに同報通信をしないステップと、を備えたマルチプ
    ロセッサ・コンピュータ・システム内にある複数のプロ
    セッサのグループにおいてアドレス・リクエストを分配
    する方法。
  2. 【請求項2】 複数のプロセッサのグループが少なくと
    もリクエストされたメモリ・ページに対応するメモリア
    ドレスに関連するアドレス・リクエストを受信する第一
    のプロセッサのグループと、 アドレス・リクエストに関係するプロセッサのグループ
    を含む関係するプロセッサのグループと、 アドレス・リクエストに関係しないプロセッサのグルー
    プを含む関係しないプロセッサのグループと、 を含む複数のプロセッサのグループと、 各アドレス・リピータがプロセッサのグループの1つと
    関連付けられ、各アドレス・リピータがアドレス・リク
    エストを受信しかつ同報通信できる複数のアドレス・リ
    ピータと、 各スヌープ・フィルタがプロセッサのグループの1つと
    関連付けられ、各スヌープ・フィルタが関係するプロセ
    ッサのグループと関係しないプロセッサのグループとを
    識別できる複数のスヌープ・フィルタと、 各プロセッサのグループと関連する各スヌープ・フィル
    タと電気的に接続され、関係するプロセッサのグループ
    にほぼ同時にアドレス・リクエストを同報通信できかつ
    関係しないプロセッサのグループに同報通信しないアド
    レス相互接続と、を備えたマルチプロセッサ・コンピュ
    ータ・システム。
  3. 【請求項3】 アドレス・リクエストに関係するプロセ
    ッサのグループのうち少なくとも一つについて関係中止
    処理を生成するスクラブ装置をさらに備えた請求項2に
    記載のマルチプロセッサ・コンピュータ・システム。
  4. 【請求項4】 複数の処理要素と、 前記処理要素によって共有される共有リソースと、 前記処理要素および前記共有リソースを相互接続するバ
    スと、 マルチプロセッサ・コンピュータ・システムにおけるバ
    スでのトラヒックを減少させるトラヒック・フィルタ
    と、を備えたマルチプロセッサ・コンピュータ・システ
    ム。
JP10183806A 1997-06-30 1998-06-30 マルチプロセッサ・コンピュータ・システム用スヌープ・フィルタ Pending JPH11161619A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/885007 1997-06-30
US08/885,007 US5966729A (en) 1997-06-30 1997-06-30 Snoop filter for use in multiprocessor computer systems

Publications (1)

Publication Number Publication Date
JPH11161619A true JPH11161619A (ja) 1999-06-18

Family

ID=25385924

Family Applications (1)

Application Number Title Priority Date Filing Date
JP10183806A Pending JPH11161619A (ja) 1997-06-30 1998-06-30 マルチプロセッサ・コンピュータ・システム用スヌープ・フィルタ

Country Status (4)

Country Link
US (1) US5966729A (ja)
EP (1) EP0889403B1 (ja)
JP (1) JPH11161619A (ja)
DE (1) DE69841190D1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007193784A (ja) * 2006-01-17 2007-08-02 Internatl Business Mach Corp <Ibm> 同報通信範囲を示す無効な整合状態を正確に形成するためのデータ処理システム、キャッシュ・システム、および方法
KR20170004831A (ko) * 2015-07-01 2017-01-11 삼성전자주식회사 마스터-사이드 필터를 포함하는 캐시 코히런트 시스템과 이를 포함하는 데이터 처리 시스템

Families Citing this family (63)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6370621B1 (en) 1998-12-21 2002-04-09 Advanced Micro Devices, Inc. Memory cancel response optionally cancelling memory controller's providing of data in response to a read operation
US6631401B1 (en) * 1998-12-21 2003-10-07 Advanced Micro Devices, Inc. Flexible probe/probe response routing for maintaining coherency
US6490661B1 (en) 1998-12-21 2002-12-03 Advanced Micro Devices, Inc. Maintaining cache coherency during a memory read operation in a multiprocessing computer system
US6349367B1 (en) 1999-08-04 2002-02-19 International Business Machines Corporation Method and system for communication in which a castout operation is cancelled in response to snoop responses
US6343347B1 (en) 1999-08-04 2002-01-29 International Business Machines Corporation Multiprocessor system bus with cache state and LRU snoop responses for read/castout (RCO) address transaction
US6338124B1 (en) 1999-08-04 2002-01-08 International Business Machines Corporation Multiprocessor system bus with system controller explicitly updating snooper LRU information
US6275909B1 (en) * 1999-08-04 2001-08-14 International Business Machines Corporation Multiprocessor system bus with system controller explicitly updating snooper cache state information
US6343344B1 (en) 1999-08-04 2002-01-29 International Business Machines Corporation System bus directory snooping mechanism for read/castout (RCO) address transaction
US6502171B1 (en) 1999-08-04 2002-12-31 International Business Machines Corporation Multiprocessor system bus with combined snoop responses explicitly informing snoopers to scarf data
US6353875B1 (en) 1999-08-04 2002-03-05 International Business Machines Corporation Upgrading of snooper cache state mechanism for system bus with read/castout (RCO) address transactions
US6321305B1 (en) 1999-08-04 2001-11-20 International Business Machines Corporation Multiprocessor system bus with combined snoop responses explicitly cancelling master allocation of read data
US6324617B1 (en) 1999-08-04 2001-11-27 International Business Machines Corporation Method and system for communicating tags of data access target and castout victim in a single data transfer
JP2001167040A (ja) 1999-12-14 2001-06-22 Hitachi Ltd 記憶サブシステム及び記憶制御装置
EP1275045A4 (en) * 2000-02-25 2005-12-21 Sun Microsystems Inc APPARATUS AND METHOD FOR MAINTAINING HIGH CAPACITY TRAFFIC FILTERING AND CACHE DATA EXPEDITION PREVENTION DURING ATOMIC OPERATION
US6389517B1 (en) * 2000-02-25 2002-05-14 Sun Microsystems, Inc. Maintaining snoop traffic throughput in presence of an atomic operation a first port for a first queue tracks cache requests and a second port for a second queue snoops that have yet to be filtered
US6598123B1 (en) * 2000-06-28 2003-07-22 Intel Corporation Snoop filter line replacement for reduction of back invalidates in multi-node architectures
US6877055B2 (en) 2001-03-19 2005-04-05 Sun Microsystems, Inc. Method and apparatus for efficiently broadcasting transactions between a first address repeater and a second address repeater
US20020133652A1 (en) * 2001-03-19 2002-09-19 Tai Quan Apparatus for avoiding starvation in hierarchical computer systems that prioritize transactions
US6889343B2 (en) 2001-03-19 2005-05-03 Sun Microsystems, Inc. Method and apparatus for verifying consistency between a first address repeater and a second address repeater
US6826643B2 (en) 2001-03-19 2004-11-30 Sun Microsystems, Inc. Method of synchronizing arbiters within a hierarchical computer system
US7222220B2 (en) * 2001-05-01 2007-05-22 Sun Microsystems, Inc. Multiprocessing system employing address switches to control mixed broadcast snooping and directory based coherency protocols transparent to active devices
EP1255201B1 (en) * 2001-05-01 2009-12-23 Sun Microsystems, Inc. Shared memory multiprocessing system employing mixed broadcast snooping and directory based coherency protocols
US6823409B2 (en) * 2001-09-28 2004-11-23 Hewlett-Packard Development Company, L.P. Coherency control module for maintaining cache coherency in a multi-processor-bus system
US6842827B2 (en) 2002-01-02 2005-01-11 Intel Corporation Cache coherency arrangement to enhance inbound bandwidth
US6857048B2 (en) * 2002-01-17 2005-02-15 Intel Corporation Pseudo least-recently-used (PLRU) replacement method for a multi-node snoop filter
US7395379B2 (en) * 2002-05-13 2008-07-01 Newisys, Inc. Methods and apparatus for responding to a request cluster
US7653790B2 (en) * 2002-05-13 2010-01-26 Glasco David B Methods and apparatus for responding to a request cluster
US8185602B2 (en) 2002-11-05 2012-05-22 Newisys, Inc. Transaction processing using multiple protocol engines in systems having multiple multi-processor clusters
US7398446B2 (en) * 2003-05-29 2008-07-08 Lucent Technologies Inc. Low power operation of an address interleaver
US7127562B2 (en) * 2003-06-11 2006-10-24 International Business Machines Corporation Ensuring orderly forward progress in granting snoop castout requests
US7325102B1 (en) * 2003-11-17 2008-01-29 Sun Microsystems, Inc. Mechanism and method for cache snoop filtering
US7117312B1 (en) * 2003-11-17 2006-10-03 Sun Microsystems, Inc. Mechanism and method employing a plurality of hash functions for cache snoop filtering
US7434008B2 (en) * 2004-04-23 2008-10-07 Hewlett-Packard Development Company, L.P. System and method for coherency filtering
US7698509B1 (en) * 2004-07-13 2010-04-13 Oracle America, Inc. Snooping-based cache-coherence filter for a point-to-point connected multiprocessing node
JP4484757B2 (ja) * 2004-12-09 2010-06-16 株式会社日立製作所 情報処理装置
JP4819369B2 (ja) * 2005-02-15 2011-11-24 株式会社日立製作所 ストレージシステム
US7392351B2 (en) * 2005-03-29 2008-06-24 International Business Machines Corporation Method and apparatus for filtering snoop requests using stream registers
US7373462B2 (en) * 2005-03-29 2008-05-13 International Business Machines Corporation Snoop filter for filtering snoop requests
US7386683B2 (en) * 2005-03-29 2008-06-10 International Business Machines Corporation Method and apparatus for filtering snoop requests in a point-to-point interconnect architecture
US7386684B2 (en) * 2005-03-29 2008-06-10 International Business Machines Corporation Method and apparatus for detecting a cache wrap condition
US7380071B2 (en) * 2005-03-29 2008-05-27 International Business Machines Corporation Snoop filtering system in a multiprocessor system
US7383397B2 (en) * 2005-03-29 2008-06-03 International Business Machines Corporation Method and apparatus for filtering snoop requests using a scoreboard
US7386685B2 (en) * 2005-03-29 2008-06-10 International Busniess Machines Corporation Method and apparatus for filtering snoop requests using multiple snoop caches
GB2427715A (en) * 2005-06-24 2007-01-03 Advanced Risc Mach Ltd Managing snoop operations in a multiprocessor system
US20070073977A1 (en) * 2005-09-29 2007-03-29 Safranek Robert J Early global observation point for a uniprocessor system
US8701023B1 (en) 2006-02-16 2014-04-15 Cypress Semiconductor Corporation Global parameter management graphical user interface (GUI) for embedded application design
US7721050B2 (en) * 2006-06-30 2010-05-18 Intel Corporation Re-snoop for conflict resolution in a cache coherency protocol
US7506108B2 (en) * 2006-06-30 2009-03-17 Intel Corporation Requester-generated forward for late conflicts in a cache coherency protocol
US7536515B2 (en) 2006-06-30 2009-05-19 Intel Corporation Repeated conflict acknowledgements in a cache coherency protocol
JP2008026944A (ja) * 2006-07-18 2008-02-07 Renesas Technology Corp バス結合型マルチプロセッサ
GB2442984B (en) * 2006-10-17 2011-04-06 Advanced Risc Mach Ltd Handling of write access requests to shared memory in a data processing apparatus
US7996626B2 (en) * 2007-12-13 2011-08-09 Dell Products L.P. Snoop filter optimization
US20110145837A1 (en) * 2009-12-14 2011-06-16 Bower Kenneth S Filtering Broadcast Recipients In A Multiprocessing Environment
US10268583B2 (en) 2012-10-22 2019-04-23 Intel Corporation High performance interconnect coherence protocol resolving conflict based on home transaction identifier different from requester transaction identifier
JP6739253B2 (ja) * 2015-07-01 2020-08-12 三星電子株式会社Samsung Electronics Co.,Ltd. マスタサイドフィルタを含むキャッシュコヒーレントシステムとそれを含むデータ処理システム
US9900260B2 (en) 2015-12-10 2018-02-20 Arm Limited Efficient support for variable width data channels in an interconnect network
US10157133B2 (en) 2015-12-10 2018-12-18 Arm Limited Snoop filter for cache coherency in a data processing system
US20170091101A1 (en) * 2015-12-11 2017-03-30 Mediatek Inc. Snoop Mechanism And Snoop Filter Structure For Multi-Port Processors
US9990292B2 (en) * 2016-06-29 2018-06-05 Arm Limited Progressive fine to coarse grain snoop filter
US10042766B1 (en) 2017-02-02 2018-08-07 Arm Limited Data processing apparatus with snoop request address alignment and snoop response time alignment
US10747298B2 (en) 2017-11-29 2020-08-18 Advanced Micro Devices, Inc. Dynamic interrupt rate control in computing system
US10503648B2 (en) 2017-12-12 2019-12-10 Advanced Micro Devices, Inc. Cache to cache data transfer acceleration techniques
US11210246B2 (en) 2018-08-24 2021-12-28 Advanced Micro Devices, Inc. Probe interrupt delivery

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5055999A (en) * 1987-12-22 1991-10-08 Kendall Square Research Corporation Multiprocessor digital data processing system

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007193784A (ja) * 2006-01-17 2007-08-02 Internatl Business Mach Corp <Ibm> 同報通信範囲を示す無効な整合状態を正確に形成するためのデータ処理システム、キャッシュ・システム、および方法
KR20170004831A (ko) * 2015-07-01 2017-01-11 삼성전자주식회사 마스터-사이드 필터를 포함하는 캐시 코히런트 시스템과 이를 포함하는 데이터 처리 시스템

Also Published As

Publication number Publication date
US5966729A (en) 1999-10-12
EP0889403A3 (en) 2002-05-08
DE69841190D1 (de) 2009-11-12
EP0889403A2 (en) 1999-01-07
EP0889403B1 (en) 2009-09-30

Similar Documents

Publication Publication Date Title
JPH11161619A (ja) マルチプロセッサ・コンピュータ・システム用スヌープ・フィルタ
JP3644587B2 (ja) 共用介入サポートを有する不均等メモリ・アクセス(numa)・データ処理システム
EP0818732B1 (en) Hybrid memory access protocol in a distributed shared memory computer system
KR100308323B1 (ko) 공유된 개입 지원을 가지는 비균등 메모리 액세스 데이터처리 시스템
KR100324975B1 (ko) 잠재적인 제3 노드 트랜잭션을 버퍼에 기록하여 통신 대기시간을 감소시키는 비균일 메모리 액세스(numa) 데이터 프로세싱 시스템
US7032078B2 (en) Shared memory multiprocessing system employing mixed broadcast snooping and directory based coherency protocols
US5822763A (en) Cache coherence protocol for reducing the effects of false sharing in non-bus-based shared-memory multiprocessors
EP1153349B1 (en) Non-uniform memory access (numa) data processing system that speculatively forwards a read request to a remote processing node
JP3900479B2 (ja) システム・メモリに組み込まれるリモート・メモリ・キャッシュを有する不均等メモリ・アクセス(numa)データ処理システム
US6651145B1 (en) Method and apparatus for scalable disambiguated coherence in shared storage hierarchies
US6374331B1 (en) Distributed directory cache coherence multi-processor computer architecture
US6973544B2 (en) Method and apparatus of using global snooping to provide cache coherence to distributed computer nodes in a single coherent system
US20010013089A1 (en) Cache coherence unit for interconnecting multiprocessor nodes having pipelined snoopy protocol
US7856535B2 (en) Adaptive snoop-and-forward mechanisms for multiprocessor systems
JP3686221B2 (ja) キャッシュ・コヒーレンシを維持するためのコンピュータ・システム
CN1114865C (zh) 用于避免冲突回写造成的活锁的方法和系统
JP2002163149A (ja) マルチプロセッサシステムのキャッシュコヒーレンスプロトコル
JP2002519785A (ja) マルチプロセッサコンピュータシステムのための分割ディレクトリベースのキャッシュコヒーレンシ技術
US7222220B2 (en) Multiprocessing system employing address switches to control mixed broadcast snooping and directory based coherency protocols transparent to active devices
US20030076831A1 (en) Mechanism for packet component merging and channel assignment, and packet decomposition and channel reassignment in a multiprocessor system
US7174437B2 (en) Memory access management in a shared memory multi-processor system
US6148375A (en) Hierarchical bus simple COMA architecture for shared memory multiprocessors having a bus directly interconnecting caches between nodes
US6671712B1 (en) Multi-node data processing system having a non-hierarchical interconnect architecture
US7315919B1 (en) Bandwidth reduction technique in a snooping-based cache-coherent cluster of multiprocessing nodes
JPH0962577A (ja) 情報処理システム及び情報処理方法