JP2003216597A - マルチプロセッサシステム - Google Patents

マルチプロセッサシステム

Info

Publication number
JP2003216597A
JP2003216597A JP2002013648A JP2002013648A JP2003216597A JP 2003216597 A JP2003216597 A JP 2003216597A JP 2002013648 A JP2002013648 A JP 2002013648A JP 2002013648 A JP2002013648 A JP 2002013648A JP 2003216597 A JP2003216597 A JP 2003216597A
Authority
JP
Japan
Prior art keywords
data
node
transaction
main memory
request
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
JP2002013648A
Other languages
English (en)
Inventor
Shinichiro Morita
真一郎 森田
Atsushi Nakajima
敦 中島
Yuji Tsushima
雄次 對馬
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 JP2002013648A priority Critical patent/JP2003216597A/ja
Publication of JP2003216597A publication Critical patent/JP2003216597A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Multi Processors (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

(57)【要約】 【課題】キャッシュ・コヒーレンシ一貫性制御の必要な
メインメモリからのデータの読み込みの処理時間を短縮
する。 【解決手段】データを要求するノードと、当該データの
ディレクトリ情報の保持するノードが異なるノードであ
った場合、データを要求するノードは当該データのディ
レクトリ情報を保持するノードからディレクトリ情報を
取得して、キャッシュ・コヒーレンシ一貫性制御結果の
処理を行い、キャッシュ・コヒーレンシ一貫性制御完了
後、ディレクトリ情報を当該データのディレクトリ情報
を保持するノードに書き戻す。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は複数のプロセッサを
有するマルチプロセッサシステムに関する。
【0002】
【従来の技術】従来から、計算機システムの処理速度を
向上させるために、キャッシュメモリの使用が有効であ
ることがよく知られている。キャッシュメモリは、プロ
セッサとメインメモリの間に位置する高速で小容量のメ
モリである。キャッシュメモリは、メインメモリのデー
タの一部を保持し、メインメモリの代わりにプロセッサ
とのデータの送受信を行い、メインメモリよりも高速な
データアクセスを実現する。
【0003】このようなキャッシュメモリを使用した計
算機システムではプロセッサがリード要求を発行したと
きにキャッシュメモリにデータが格納されていれば(ヒ
ットすれば)キャッシュメモリ内のデータが直ちにプロ
セッサに送信され、高速な動作が期待できる。プロセッ
サからのメインメモリへのリード要求に対してキャッシ
ュメモリにそのデータがなかった(ミスした)場合、キ
ャッシュメモリはプロセッサが要求したデータをメイン
メモリから読み込んで、これをプロセッサに供給する。
【0004】複数のキャッシュメモリを有する計算機シ
ステムにおいては、メインメモリからキャッシュメモリ
にデータを読み込む際にキャッシュ・コヒーレンシ一貫
性制御が要求される。キャッシュ・コヒーレンシ一貫性
制御とは、メインメモリ上の同一アドレスのデータのコ
ピーを二つ以上のキャッシュメモリが保持する場合には
必ず同一の値を持つこと(キャッシュ・コヒーレンシ一
貫性)を保証するための制御である。
【0005】従来のキャッシュ・コヒーレンシ一貫性制
御の例としてはたとえば特開平11−219343号公
報に詳細な構成、および制御方式が記されている。
【0006】図15は従来のキャッシュ・コヒーレンシ
一貫性制御を説明するためのマルチプロセッサシステム
の構成を図示したものである。
【0007】図15のシステムはノード(100)を複
数(xND0〜xNDn)有し、それらは相互結合網
(111)で互いに接続されている。
【0008】ノード(100)はプロセッサ(101)
とキャッシュメモリ(103)、メインメモリ(10
4)、ディレクトリ(105)とキャッシュ・メインメ
モリ制御装置(102)を有する。
【0009】キャッシュ・メインメモリ制御装置(10
2)は、プロセッサ(101)や相互結合網(111)
を介した他ノードからの要求に応じて、キャッシュメモ
リ(103)、メインメモリ(104)、ディレクトリ
(105)のデータの読み出し、書き込みを行う。
【0010】また、キャッシュ・メインメモリ制御装置
(102)はよく知られたMESIキャッシュ・コヒー
レンシ・プロトコルに従ったキャッシュ・コヒーレンシ
一貫性制御を行うものとする。
【0011】すなわち、キャッシュ状態として、(a)
Invalid(当該データは無効)、(b)Shar
ed−Unmodified(当該データは他のプロセ
ッサのキャッシュメモリ内にも存在し、主記憶内のデー
タと同一)、(c)Exclusive‐Modifi
ed(当該データは、当該キャッシュメモリ内にのみ存
在し、しかも主記憶内のデータとは同一ではない)、
(d)Exclusive−Unmodified(当
該データは、当該キャッシュメモリ内にのみ存在し、主
記憶内のデータとは同一)を定義する。
【0012】図16はこのようなシステムにおいて、メ
インメモリからキャッシュメモリにデータを読み込み、
プロセッサにそのデータを供給する動作を図示するタイ
ミングチャートである。ただし、データを要求したノー
ドはxND0であり、要求されるデータを保持するメイ
ンメモリを有するノード(データのホームノード)はx
ND1であり、xND2はこのxND0が要求したデー
タをキャッシュメモリにE(Exclusive−Un
modified)のステータスで保有しているものと
した。
【0013】図16においては、縦方向には動作に関係
する各ノードが配置され、横方向は各ノードの動作の時
間軸を示す。また、図16ではxND0〜xND2の3
ノードの構成としている。
【0014】まずノードxND0のプロセッサが、ある
アドレスに対してメモリリード要求を発行する。この要
求のアドレスに対応するデータが自ノードのキャッシュ
メモリにおいては、キャッシュ状態がInvalid、
すなわちキャッシュミスを起こしたとする。ここで、x
ND0のキャッシュ・メインメモリ制御装置がプロセッ
サの要求するデータのホームノードがxND1であると
判定したとする。
【0015】すると、xND0のキャッシュ・メインメ
モリ制御装置は相互結合網を介してND1にこのアドレ
スに対するデータを要求するリード・トランザクション
を発行する。xND1はこのリード・トランザクション
を受信すると、ディレクトリを検索し、リード要求のア
ドレスのデータがシステム内のキャッシュ上に格納され
ているかを調べる。その結果、xND2のノードが要求
されたアドレスのデータを保有していると判定されたと
する。
【0016】次に、xND1はxND2に相互結合網を
介してキャッシュ・コヒーレンシ一貫性制御の要求(ス
ヌープ要求)を行うスヌープ・トランザクションを発行
する。スヌープ・トランザクションを受けたxND2は
キャッシュメモリを検索し、その結果、キャッシュ内に
要求されたアドレスのデータがステータスE(Excl
usive−Unmodified)で格納されていた
とする。xND2はこのデータのステータスをSH(S
hared−Unmodified)に更新するととも
に、キャッシュ・コヒーレンシ一貫性制御の結果(スヌ
ープ結果)として、AckSHトランザクションをスヌ
ープ要求元のxND1に送信する。
【0017】スヌープ結果AckSHトランザクション
を受信したxND1は、メモリから要求されたデータを
読み出し、相互結合網を介してこのデータをデータリタ
ーン・トランザクションとしてxND0に送信する。そ
の際、このデータリターン・トランザクションには、こ
のデータがSH(Shared−Unmodifie
d)のステータスでキャッシュに登録されるべきデータ
であることを示す情報が埋め込まれる(Data(S
H))。その後、xND1はディレクトリを更新して、
xND0がこのアドレスに対するデータを保有している
という情報を書き込む。
【0018】データリターン・トランザクションを受信
したxND0はこのデータをキャッシュメモリにSH
(Shared−Unmodified)のステータス
で登録し、データをプロセッサに供給して、リードの処
理を完了する。
【0019】次に、図17でxND0がデータを要求し
たとき、xND2が要求されたデータをキャッシュメモ
リにM(Exclusive‐Modified)のス
テータスで保有していたときの動作を示す。要求される
データのホームノードはxND1であるとする。
【0020】xND0のプロセッサがあるアドレスに対
してメモリリード要求を発行する。リード要求はxND
0のキャッシュでキャッシュミスを起こし、データのホ
ームノードはxND1であると判定されたとする。する
と相互結合網を介してxND1にリード・トランザクシ
ョンが発行される。
【0021】リード・トランザクションを受信したxN
D1はディレクトリを検索した結果、xND2がこのア
ドレスのデータをキャッシュに保有していると判定した
とする。xND1はxND2に相互結合網を介してスヌ
ープ要求を行うスヌープ・トランザクションを発行す
る。スヌープ・トランザクションを受けたxND2はキ
ャッシュメモリを検索し、その結果、キャッシュ内に要
求されたアドレスのデータがステータスM(Exclu
sive‐Modified)で格納されていたとす
る。xND2はこのデータをキャッシュメモリから読み
出し、データ転送を実行するAckDataトランザク
ションとしてこのキャッシュメモリから読み出したデー
タをデータのホームノードxND1に送信する。その
後、xND2はキャッシュメモリ上のこのデータのステ
ータスをI(Invalid)に変更する。
【0022】AckDataトランザクションを受信し
たxND1は、このデータを当該アドレスの更新された
最新データとしてメインメモリに書き込む。その後、メ
インメモリよりデータを読み出して、このデータをデー
タリターン・トランザクションとして相互結合網を介し
てxND0に送信する。その際、このデータリターン・
トランザクションにはこのデータがExclusive
−Unmodifiedとしてキャッシュに登録される
べきデータであることを示す情報が埋め込まれる(Da
ta(E))。その後、xND1はディレクトリを更新
して、xND0がこのアドレスに対するデータを保有し
ているという情報を書き込む。
【0023】データリターン・トランザクションを受信
したxND0はこのデータをキャッシュメモリにE(E
xclusive−Unmodified)のステータ
スで登録し、データをプロセッサに供給して、リードの
処理を完了する。
【0024】
【発明が解決しようとする課題】このように、特開平1
1−219343号公報で示される方式では、スヌープ
結果をデータのホームノードが受け取って、その後にメ
インメモリのデータを読み出して、データの要求元のノ
ードに送信するため、プロセッサがリードの要求を発行
してからデータを受け取るまでの時間(レイテンシ)が
長くなりすぎ、システムの性能を落としているという問
題があった。
【0025】本発明の主目的は、スヌープ要求を必要と
するメインメモリアクセス処理において、メインメモリ
アクセスのレイテンシの改善されたマルチプロセッサシ
ステムを提供することである。
【0026】
【課題を解決するための手段】本発明は、第一の手段と
して、各ノードは他ノードの発行した自ノードのメイン
メモリの保持するデータに対するリード要求を受信した
際に、メインメモリから読み出された要求されたデータ
とディレクトリ記憶手段から読み出されたそのデータに
対応するディレクトリ情報を、リード要求を発行したノ
ードに送信する手段を有する。
【0027】また、第二の手段として、各ノードは他ノ
ードの発行した自ノードのメインメモリの保持するデー
タに対するリード要求を受信した際に、要求されたデー
タに対応するディレクトリ情報から、そのデータのコピ
ーを保持するキャッシュメモリを有するノードがあると
判定したときは、そのノードにキャッシュ・コヒーレン
シ一貫性制御を要求するスヌープ要求を発行し、かつこ
のキャッシュ・コヒーレンシ一貫性制御の結果であるス
ヌープ結果をリード要求を発行したノードに送信するよ
う指示する手段を有する。
【0028】また、第三の手段として、各ノードは前記
他ノードからのリード要求を受信したノードがこのリー
ド要求に応じて発行したスヌープ要求を受信したとき、
このスヌープ要求に対するスヌープ結果を前記第二の手
段で指示されるノードへ送信する手段を有する。
【0029】また、第四の手段として、各ノードは他ノ
ードの有するメインメモリの保持するデータに対するリ
ード要求を行った際に、前記第一の手段によって送信さ
れるディレクトリ情報と、前記第三の手段によって送信
されるスヌープ結果のいずれか、または双方を受信し
て、前記リード要求のデータに対するディレクトリ情報
を更新するために必要な情報を、前記リード要求のデー
タを保持するメインメモリを有するノードに送信する手
段を有する。
【0030】また、各第五の手段として、ノードは前記
第四の手段で送信されたディレクトリ情報を更新するた
めの情報を受信した際に、これに応じて自ノードのディ
レクトリ情報記憶手段のディレクトリ情報を更新する手
段を有する。
【0031】上記、第一から第五の手段によって、要求
したデータのホームノードでスヌープ結果を待ち受ける
ことなく、データを要求したノードで直接スヌープ結果
を待ち受けることが可能となり、かつデータのホームノ
ードはデータに対する要求を受けた時点で、メインメモ
リのデータ読み出しと、要求元へのデータ転送を開始す
るので、メインメモリのデータをプロセッサに供給する
ケースにおいては、非常に高速な動作が期待できる。
【0032】一方において、要求されたデータに対する
更新された最新データ(ダーティ・データ)を保持する
キャッシュメモリがあった場合は、このダーティ・デー
タが要求元ノードに供給されて、メインメモリからのデ
ータは無視されなければならない。このようなケースが
多発する状況においてメインメモリからの無駄なデータ
転送を削減するために、以下の手段を有してもよい。
【0033】すなわち前述の第二の手段に替え、第六の
手段として、各ノードは他ノードの発行した自ノードの
メインメモリの保持するデータに対するリード要求を受
信した際に、要求されたデータに対応するディレクトリ
情報を自ノードのディレクトリ情報記憶手段から読み出
して、要求されるデータのコピーを保持するキャッシュ
メモリを有するノードにスヌープ要求を発行するとき
に、スヌープ要求に対する応答であるスヌープ結果をい
ずれのノードに送信すべきかを下記のように決定して指
定する手段を有してもよい。スヌープ結果をいずれのノ
ードに送信すべきかの決定はすなわち、(a)要求される
データのコピーを保持するキャッシュメモリを有するノ
ードがシステム内でたかだか一つのノードであると判定
した場合は、要求されたデータのホームノードにスヌー
プ結果が戻るものとし、(b)要求されるデータのコピー
を保持するキャッシュメモリを有するノードがシステム
内で複数ある可能性があると判定した場合は、リード要
求を発行したノードにスヌープ結果が戻るものとする。
【0034】MESIキャッシュ・コヒーレンシ・プロ
トコルにおいては、ダーティ・データを保持するキャッ
シュメモリがあった場合、その他のキャッシュメモリは
そのデータのコピーを有することは許されていない。す
なわち、前述の第六の手段における記述の(a)のケー
スに当たる。第六の手段のように、この様な場合はスヌ
ープ結果をデータのホームノードに送信することによ
り、データのホームノードはメインメモリのデータを転
送する必要があるか否かの判定が可能となり、さらには
不要なメインメモリデータの転送を削減することが可能
となる。
【0035】
【発明の実施の形態】以下、図面を参照しながら本発明
における実施の形態の一例について詳細に説明する。
【0036】図1は、本発明の一実施の形態であるマル
チプロセッサシステムの全体構成の一例を示す概念図で
ある。図1に例示されるように、本実施の形態のマルチ
プロセッサシステムは、複数のノードND0〜ND7
(10)が、相互結合網(20)を介して結合された構
成となっている。本実施の形態ではノード数は8とす
る。
【0037】図2はノード(10)の構成を示す概念図
である。図2に例示されるように、個々のノード10
は、例えば汎用のマイクロプロセッサ等で構成されるプ
ロセッサ11と、メインメモリ17と、このプロセッサ
11とメインメモリ17またはノード10の外部との間
で授受されるデータを一時的に保持するキャッシュメモ
リ16と、キャッシュメモリ16とメインメモリ17を
制御するキャッシュ・メインメモリ制御部12と、プロ
セッサ11の要求に応じて実行されるリード処理を管理
するためのリクエスト管理テーブル18と、リクエスト
管理テーブル18を制御するためのリクエスト管理テー
ブル制御部13と、メインメモリ17のデータがシステ
ム上のいずれのノードの保持するキャッシュメモリ上に
コピーされたかを記憶する手段であるディレクトリ19
と、ディレクトリ19を制御するディレクトリ制御部1
4と、キャッシュ・メインメモリ制御部12とリクエス
ト管理テーブル13とディレクトリ制御部14がノード
10の外部との間で授受する情報の流れを制御するクロ
スバスイッチインタフェース15とメモリライト設定手
段30で構成される。
【0038】本実施の形態においては、メモリライトが
発生したとき、後述する二通りの処理方式のいずれかに
よってこれを処理することが可能となっている。処理方
式の一方はスループット優先モードであり、もう一方は
転送優先モードである。メモリライト設定手段30はプ
ロセッサ11の制御により、上記二つの処理方式のう
ち、いずれが設定されたかを保持して、この情報をディ
レクトリ制御部14に伝える。各々のモードにおける動
作の詳細は後述する。なお、本実施形態においては、キ
ャッシュ・メインメモリ制御部12は従来のMESIキ
ャッシュ・コヒーレンシ・プロトコルに従ったキャッシ
ュ・コヒーレンシ一貫性制御を行うものとする。
【0039】任意のノードにてリード要求が発生し、当
該データが自ノード内のキャッシュメモリに無い(リー
ドミス)の場合には、当該データを保持するメインメモ
リに対するリード要求が発行される。当該データを保持
するメインメモリが他ノードのメインメモリであった場
合、相互結合網(20)にリード・トランザクションが
発行され、当該データを保持するメインメモリを有する
ノード(当該データのホームノード)がそれを受信す
る。
【0040】当該データのホームノードは、要求された
データに対応するディレクトリ情報を自ノードのディレ
クトリ19から読み出す。当該データのホームノードは
このディレクトリ情報を元に、要求されたデータのコピ
ーを保持するノードを判定し、それらのノードに要求さ
れたデータに対するキャッシュ・コヒーレンシ一貫性制
御の要求(スヌープ要求)を発行する。
【0041】スヌープ要求を受信したノードは自ノード
のキャッシュメモリを検索し、このとき、要求されたデ
ータに対する更新された最新データを保持するノードが
あった場合は、このデータはデータのホームノードに送
信されたのち、データの要求元のノードに転送される。
一方、いずれのノードも更新された最新データを保持し
ていなかった場合は、メインメモリからデータリターン
を行う。
【0042】本実施の形態では、キャッシュメモリはメ
インメモリを64バイト毎のブロックとして扱い、メイ
ンメモリ64バイト毎に対応するディレクトリ情報がデ
ィレクトリ19に保持されているものとする。各ブロッ
クに対応するディレクトリ情報は8ビットで構成され、
8ビットの各ビットがシステムに接続された8ノードの
各ノードに対応している。すなわち、メインメモリ内の
あるブロックに対応しているディレクトリのあるビット
が1であった場合、そのビットに対応するノードがその
ブロックのコピーを取得したことを示す。0は、そのビ
ットに対応するノードはそのブロックのコピーを取得し
ていないことを示す。
【0043】図3は相互結合網(20)を説明するため
の概念図である。
【0044】図3に例示されるように、相互結合網20
は、各ノードが接続されるポート22a、22bの間の
接続を切り替えることにより、各ノード間で、1:1ま
たは1:多(同報送信)の接続制御を行うスイッチ結合
論理23と、各ポート22a、22bに設けられたトラ
ンザクションキュー21a、21bを備えている。
【0045】図4はリクエスト管理テーブル18を説明
する概念図である。図4に示すように、リクエスト管理
テーブル18は、複数のレジスタで構成される。これら
のレジスタは、プロセッサの要求に応じて行われたメモ
リアクセスに関する情報を保持する。本実施の形態で
は、リクエスト管理テーブル18は全16のエントリで
構成され、各エントリは以下のフィールドを備えてい
る。
【0046】(a)V:エントリが有効な情報を保持し
ていることを示すバリッドビットである。1なら有効、
0なら無効であることを示す。 (b)Adr(39−0):プロセッサの要求するデー
タのアドレスを保持するフィールドである。本実施の形
態ではアドレスは40ビットであるとする。 (c)H(2−0):要求されたデータを保持するメイ
ンメモリを有するノード番号が格納される。本実施の形
態ではノードは8ノードであり、0〜7を識別する3ビ
ットで示される。ND0であれば値0、ND7であれば
値7とする。 (d)DV:後述するDir(7−0)が有効な値を保
持していることを示すバリッドビットである。1なら有
効。0なら無効であることを示す。 (e)Dir(7−0):プロセッサの要求するデータ
のディレクトリ情報を保持するフィールドである。前述
のように本実施の形態ではディレクトリ情報は8ビット
とする。 (f)Ack(7−0):スヌープ結果の受信を監視す
るためのフィールドである。詳細な制御方法は後述す
る。 (g)D:リード処理に対して、後述するAckDat
aトランザクションを受信したかどうかを記録するビッ
トである。1なら受信した、0なら受信しなかったこと
を示す。
【0047】図5はリクエスト管理テーブル制御部13
を説明する概念図である。リード発行部13hは、パス
12c(read)を介してキャッシュ・メインメモリ
制御部12からリード要求を受ける。リード要求には要
求されるデータのアドレスと、要求を識別するためのI
D(0〜15)が含まれている。リード発行部13hは
リード要求をリクエスト管理テーブル18に登録する。
登録するエントリは指定されたID(0〜15)に等し
い番号のエントリとなる。Vに1、Adr(39−0)
にリード要求の要求するデータのアドレスを登録する。
【0048】リード発行部13hは、要求されたデータ
のアドレスからそのデータを保持するメインメモリを有
するノード(データのホームノード)を判定する。本実
施の形態では、アドレスの値から一意にノード番号を算
出できるようになっているものとする。リクエスト管理
テーブル18のH(2−0)にはホームノードの番号が
設定される。その他のフィールドは下記のように初期化
される。DVは0に設定される。Dir(7−0)は自
ノードに対応するビットのみ0に設定され、その他のビ
ットは1に設定される。例えば自ノードがND1であっ
た場合、Dir(1)のみ0に設定され、その他のビッ
トは1であるから、Dir(7−0)=1111110
1である。Ack(7−0)=00000000、D=
0とそれぞれ設定される。
【0049】この後、リード発行部13hは要求された
データのホームノードが自ノードに等しければ、パス1
3e(Lrd)を介してディレクトリ制御部14にリー
ド要求を発行する。ホームノードが自ノードと等しくな
ければ、パス13a(read)に後述するリード・ト
ランザクションが発行される。リード・トランザクショ
ンの行き先には当該リード要求の要求するデータのホー
ムノードが指定される。パス13a(read)に送信
されたリード・トランザクションはクロスバインタフェ
ース15と相互結合網20を介して、指定されたホーム
ノードに配信される。
【0050】Mバッファ13iは、クロスバスイッチイ
ンタフェース15からパス13b(Dret)を介し
て、後述するデータリターン・トランザクションを受信
する。データリターン・トランザクションは、リード・
トランザクションに対してホームノードが返送したディ
レクトリ情報とメインメモリデータを含んでいる。Mバ
ッファ13iはこのデータリターン・トランザクション
のメインメモリデータを保持し、後述するDir制御部
13mの指示で、セレクタ13nを介して、このデータ
をパス12e(data)に送信する。
【0051】Dバッファ13jはパス13c(Ack)
より、後述するAckDataトランザクションを受信
する。AckDataトランザクションはスヌープ要求
に対し、他ノードのキャッシュ・メインメモリ制御部1
2の発行する更新された最新データを含むトランザクシ
ョンであり、Dバッファ13jはこの更新された最新デ
ータを保持し、後述するDir制御部13mの指示で、
このデータをセレクタ13nを介して、パス12e(d
ata)に送信する。
【0052】Dir登録部13kはパス13b(Dre
t)またはパス13f(dir)から受信したディレク
トリ情報をリクエスト管理テーブル18に登録する。パ
ス13b(Dret)は、パス13a(read)を介
して他ノードに発行されたリード・トランザクションの
応答であるデータリターン・トランザクションを受信
し、パス13f(dir)はパス13e(Lrd)を介
して自ノードのディレクトリ制御部14に対して発行さ
れたリード要求の応答を受信し、いずれも要求したデー
タのディレクトリ情報を含んでいる。本実施の形態では
ディレクトリ情報は8ビットであり、Dir登録部13
kはリクエスト管理テーブル18のリード要求に対応す
るエントリのDir(7−0)を読み出して、受信した
ディレクトリ情報とAND演算を行った後、この結果を
同エントリのDir(7−0)フィールドに記録する。
また、同時にDir(7−0)に有効な値が格納された
ことを示す同エントリのDVビットに1を設定する。
【0053】Dir制御部13mはスヌープ要求に応じ
て発行されたスヌープ結果を受信して、キャッシュ・メ
インメモリ制御部12へのデータの応答、ディレクトリ
情報の更新、ディレクトリ情報の書き戻しのための送信
を行う。Dir制御部13mはパス13c(Ack)か
ら後述するAckIトランザクション、AckSHトラ
ンザクション、AckDataトランザクションのいず
れか、または複数を受信する。受信したトランザクショ
ンに応じて、Dir制御部13mは下記のようにリクエ
スト管理テーブル18を制御する。
【0054】(a)AckIトランザクションを受信し
た場合:AckIトランザクションはリード要求に応じ
て発行されたスヌープ要求のスヌープ結果であり、スヌ
ープ要求を受けたノードが要求されたデータをキャッシ
ュメモリに保持していないことを示す。このトランザク
ションにはIDと発行元情報が埋め込まれている。ID
にはこのスヌープ結果に対応するリード要求のリード・
トランザクションのIDが埋め込まれており、発行元情
報にはこのスヌープ結果を送信したノードのノード番号
が埋め込まれている。Dir制御部13mはこのトラン
ザクションに埋め込まれたID情報から対応するリクエ
スト管理テーブル18のエントリ番号を識別し、同エン
トリのDir(7−0)の値を下記のように書き換え
る。すなわち、AckIトランザクションに埋め込まれ
た発行元情報から、対応するDir(7−0)のビット
を0に設定する。たとえば、発行元情報が‘2’であっ
た場合、Dir(7−0)の2ビット目、すなわちDi
r(2)が0に設定される。
【0055】(b)AckSHトランザクションを受信
した場合:AckSHトランザクションはリード要求に
応じて発行されたスヌープ要求のスヌープ結果であり、
スヌープ要求を受けたノードが要求されたデータをキャ
ッシュメモリにステータスSH(Shared−Unm
odified)で保持していることを示す。このトラ
ンザクションにはIDと発行元情報が埋め込まれてい
る。IDと発行元情報の意味はAckIトランザクショ
ンと同様である。Dir制御部13mはこのトランザク
ションに埋め込まれたID情報から対応するリクエスト
管理テーブル18のエントリ番号を識別し、同エントリ
のAck(7−0)の値を下記のように書き換える。す
なわち、AckSHトランザクションに埋め込まれた発
行元情報から、対応するAck(7−0)のビットを1
に設定する。たとえば、発行元情報が‘2’であった場
合、Ack(7−0)の2ビット目、すなわちAck
(2)が1に設定される。
【0056】(c)AckDataトランザクションを
受信した場合:AckDataトランザクションはリー
ド要求に応じて発行されたスヌープ要求のスヌープ結果
であり、スヌープ要求を受けたノードが要求されたデー
タをキャッシュメモリにステータスM(Exclusi
ve‐Modified)で保持していて、このデータ
をメインメモリに書き戻して、キャッシュメモリの当該
データのステータスをI(Invalid)に変更した
ことを示す。このトランザクションにはIDと発行元情
報と発行元ノードが保持していたステータスMのデータ
が含まれている。IDと発行元情報の意味はAckIト
ランザクションと同様である。Dir制御部13mはこ
のトランザクションに埋め込まれたID情報から対応す
るリクエスト管理テーブル18のエントリ番号を識別
し、同エントリのDir(7−0)の値を下記のように
書き換える。すなわち、AckDataトランザクショ
ンに埋め込まれた発行元情報から、対応するDir(7
−0)のビットを0に設定する。たとえば、発行元情報
が‘2’であった場合、Dir(7−0)の2ビット
目、すなわちDir(2)が0に設定される。さらに、
同エントリのDビットが1に設定される。
【0057】上記に示されるリクエスト管理テーブル1
8操作の結果、リクエスト管理テーブル18の有効なエ
ントリのうち、Dir(7−0)の値とAck(7−
0)の値が等しくなったエントリが生じると、Dir制
御部13mは当該エントリに対するリード要求がキャッ
シュ・コヒーレンシ一貫性制御を終えたものと判定し、
キャッシュ・メインメモリ制御部12に対してリード要
求に対する応答を行う。リード要求に対する応答はパス
12d(stat)、パス12f(ID)、パス12e
(data)を介して行われる。パス12f(ID)に
は応答を行うリクエスト管理テーブル18のエントリ番
号が送信される。
【0058】12e(data)にはMバッファ13
i、Dバッファ13jの保持するデータのうち、応答を
行うリクエスト管理テーブル18のエントリに対応する
データで、セレクタ13nで指示される一方のデータが
送信される。Dir制御部13mはデータリターンを行
うリクエスト管理テーブル18のエントリのDビットに
応じて、Dビットが1ならDバッファ13jを、0なら
Mバッファ13iを選択するようセレクタ13nに指示
する。
【0059】12d(stat)にはリード要求に対す
るリード応答の種類が送信される。リード応答には下記
の6種類がある。
【0060】(a)GME:パス12e(data)に
有効なデータ値を送信し、かつ、このデータをE(Ex
clusive−Unmodified)でキャッシュ
メモリ16に登録すべきであることを示す。 (b)GMD:パス12e(data)に有効なデータ
値を送信し、かつ、このデータをE(Exclusiv
e−Unmodified)でキャッシュメモリ16に
登録し、さらに、このデータを自ノードのメインメモリ
17にライトする必要があることを示す。 (c)GMS:パス12e(data)に有効なデータ
値を送信し、かつ、このデータをSH(Shared−
Unmodified)でキャッシュメモリ16に登録
すべきであることを示す。 (d)LME:パス12e(data)には有効なデー
タ値を送信せず、メインメモリ17から読み出したデー
タを使用すべきであり、かつ、そのデータをE(Exc
lusive−Unmodified)でキャッシュメ
モリ16に登録すべきであることを示す。 (e)LMS:パス12e(data)には有効なデー
タ値を送信せず、メインメモリ17から読み出したデー
タを使用すべきであり、かつ、そのデータをSH(Sh
ared−Unmodified)でキャッシュメモリ
16に登録すべきであることを示す。 (f)RTY:応答するリクエスト管理テーブル18の
エントリに対応するリード処理が途中で中止されたた
め、プロセッサにこのリード処理の再実行を要求するこ
とを示す。
【0061】図6で12d(stat)に送信される信
号とその条件を示した。すなわち、リクエスト管理テー
ブル18のエントリがDir(7−0)=000000
00かつH(2−0)=他ノードなら12d(sta
t)にはGMEの信号が送信される。同様にDir(7
−0)=00000000かつH(2−0)=自ノード
かつD=1ならGME、Dir(7−0)=00000
000かつH(2−0)=自ノードかつD=0ならLM
E、Dir(7−0)≠00000000かつH(2−
0)=他ノードならGMS、Dir(7−0)≠000
00000かつH(2−0)=自ノードならLMSであ
る。例外として、パス13p(Rty)から当該エント
リに対するリトライ・トランザクション(後述)を受信
したとき、またはパス14r(Rty)から当該エント
リに対するリトライ指示の信号を受信したときは、Di
r(7−0)やAck(7−0)の値に関わらず、直ち
にパス12d(stat)にRTY信号が送信される。
【0062】Dir制御部13mはキャッシュ・メイン
メモリ制御部12に対する応答を終えると、ディレクト
リ情報の送信を行う。ただし、応答がRTYであったと
きに限りこの処理は行われない。RTY以外であった場
合、リクエスト管理テーブル18のエントリのフィール
ドH(2−0)に応じて、ディレクトリ情報の送信が行
われる。H(2−0)=他ノードなら、13d(CM
P)を介して、後述するコンプリーション・トランザク
ションが送信される。コンプリーション・トランザクシ
ョンはリード処理の完了の通知とディレクトリ情報の更
新を指示するトランザクションで、リクエスト管理テー
ブル18の同エントリのAdr(39−0)とDir
(7−0)の値が埋め込まれて送信される。ただし、こ
の際、Dir(7−0)のうち、自ノードに対応するビ
ットが1に書き換えられてから埋め込まれる。例えば、
Dir(7−0)=00100100で、自ノードがN
D0であった場合、Dir(0)=1、すなわち、Di
r(7−0)=00100101と書き換えられてか
ら、コンプリーション・トランザクションに埋め込まれ
る。H(2−0)=自ノードなら、パス13g(CM
P)を介して、自ノードのディレクトリ制御部14にA
dr(39−0)とDir(7−0)の値が送信され
て、ディレクトリの更新が指示される。ただし、このと
きもDir(7−0)のうち、自ノードに対応するビッ
トが1に書き換えられてから送信される。
【0063】ディレクトリ情報の送信が完了した、また
はRTYの応答が12d(stat)に送信されると、
Dir制御部13mはリクエスト管理テーブル18の当
該エントリのVを0に設定して、当該エントリの登録を
抹消する。
【0064】図7はディレクトリ制御部14を説明する
概念図である。Lread処理部14iはリクエスト管
理テーブル処理部13からパス13e(Lrd)を介し
てリード要求を受信する。リード要求には要求されるデ
ータのアドレスが含まれており、Lread処理部14
iは後述するディレクトリ管理部14qに要求されるデ
ータのアドレスを登録するよう指示する。
【0065】このとき、ディレクトリ管理部14qはL
read処理部14iに登録の成功、または失敗の応答
を返す。登録が成功ならば、Lread処理部14iは
ディレクトリ19から当該アドレスのデータに対応する
ディレクトリ情報を取得して、パス13f(dir)を
介して、キャッシュ・メインメモリ制御部12にディレ
クトリ情報を送信する。さらに、Lread処理部14
iはこのディレクトリ情報を後述するSNP発行部14
nに送信してスヌープ要求の処理を指示する。また、登
録失敗の応答を受けたときは、パス14r(Rty)を
介して、キャッシュ・メインメモリ制御部12にリトラ
イ指示を送信する。
【0066】Gread処理部14jはクロスバスイッ
チインタフェース15からパス14a(read)を介
して後述するリード・トランザクションを受信する。リ
ード・トランザクションには要求されるデータのアドレ
スが含まれており、Gread処理部14jは後述する
ディレクトリ管理部14qに要求されるデータのアドレ
スを登録するよう指示する。このとき、ディレクトリ管
理部14qはGread処理部14jに登録の成功、ま
たは失敗の応答を返す。
【0067】登録が成功ならば、Gread処理部14
jはディレクトリ19から当該アドレスのデータに対応
するディレクトリ情報を取得して、後述するDret発
行部14mとSNP発行部14nに送信する。これと同
時に、Gread処理部14jはパス14e(LMR)
を介して、キャッシュ・メインメモリ制御部12に当該
アドレスのデータをメインメモリから読み出すよう指示
する。登録が失敗なら、Gread処理部14jはパス
14b(Rty)を介して、後述するリトライ・トラン
ザクションをリード・トランザクション発行元のノード
へ送信する。
【0068】Dret発行部14mはパス30aで指定
される動作モードに従って、異なる動作を行う。 (a)パス30aが指定する動作モードが転送優先モー
ドであった場合:Dret発行部14mはGread処
理部14jが取得したディレクトリ情報、および14e
(LMR)を介してGread処理部14jが指示した
メインメモリ読み出しの戻り値をパス14f(LMD)
から受けると、パス14b(Dret)を介して、後述
するデータリターン・トランザクションを送信する。デ
ータリターン・トランザクションはメインメモリから読
み出したデータと、そのデータに対応するディレクトリ
情報が埋め込まれており、リード・トランザクション発
行元のノードへと送信される。
【0069】(b)パス30aがする動作モードがスル
ープット優先モードであった場合:Dret発行部14
mはGread処理部14jが取得したディレクトリ情
報を受けると、このディレクトリ情報に対応するデータ
のコピーを取得したノードの数を算出する。ただし、こ
のデータを要求したノードは数に含めない。
【0070】(b−1)データのコピーを取得したノー
ドが無かったか、または複数であった場合は、転送優先
モードと同様の動作を行う。すなわち、パス14e(L
MR)を介してGread処理部14jが指示したメイ
ンメモリ読み出しの戻り値をパス14f(LMD)から
受けて、パス14b(Dret)を介して、データリタ
ーン・トランザクションをリード・トランザクションの
発行元ノードへと送信する。
【0071】(b−2)一方、データのコピーを取得し
たノードが一つであった場合は、以下の動作を行う。D
ret発行部14mはパス14e(LMR)を介してG
read処理部14jが指示したメインメモリ読み出し
の戻り値をパス14f(LMD)から受けると、これを
Dret発行部14m内のバッファに保持する。その
後、パス13c(Ack)から後述するAckIトラン
ザクションかAckSHトランザクションを受信する
か、またはパス15c(MW)から後述するメモリライ
ト・トランザクションを受信するか、またはパス14g
(SNP)からスヌープ結果を受信するのを待つ。Dr
et発行部14mは受信した信号に応じて、下記の動作
を行う。
【0072】(b−2−1)パス13c(Ack)から
AckIトランザクションを受信した、またはパス14
g(SNP)からスヌープ結果‘I’の信号を受信した
場合:バッファに保持していたメインメモリのデータを
データリターン・トランザクションに埋め込んで、リー
ド・トランザクションの発行元ノードへと送信する。同
時に、ディレクトリ情報として‘00000000’を
埋め込む。
【0073】(b−2−2)パス13c(Ack)から
AckSHトランザクションを受信した、またはパス1
4g(SNP)からスヌープ結果‘SH’の信号を受信
した場合:バッファに保持していたメインメモリのデー
タをデータリターン・トランザクションに埋め込んで、
リード・トランザクションの発行元ノードへと送信す
る。データリターン・トランザクションに埋め込むディ
レクトリ情報はディレクトリ19から読み出した値を使
用する。
【0074】(b−2−3)パス15c(MW)からメ
モリライト・トランザクションを受信した、またはパス
14g(SNP)からスヌープ結果‘M’の信号とデー
タを受信した場合:メモリライト・トランザクションに
埋め込まれていたデータ、またはパス14g(SNP)
から受信したデータをデータ・リターン・トランザクシ
ョンに埋め込んで、リード・トランザクションの発行元
ノードへと送信する。同時に、ディレクトリ情報として
‘00000000’を埋め込む。
【0075】SNP発行部14nはLread処理部1
4i、またはGread処理部14jからディレクトリ
情報を受けて、スヌープ要求の発行を行う。ディレクト
リ情報から、リード要求で要求されたデータのコピーを
所有していると推測されるノードを判定し、パス14c
(SNP)を介して、当該ノードに後述するスヌープ・
トランザクションを発行する。ただし、リード要求元の
ノードに対してはスヌープ要求は送信されないよう制御
される。
【0076】複数のノードがコピーを所有していると判
定された場合は順次、各々のノードに向けてスヌープ・
トランザクションが発行される。ただし、自ノードのキ
ャッシュメモリにスヌープ要求を行う場合には、パス1
4g(SNP)を介して、キャッシュ・メインメモリ制
御部12にスヌープ要求を送信する。この場合も、自ノ
ードのプロセッサがリード要求元であった場合、自ノー
ドのキャッシュメモリにはスヌープ要求は送信されな
い。また、いずれのノードもリード要求で要求されたデ
ータのコピーを所有していないと判断された場合は、ス
ヌープ・トランザクションも、スヌープ要求も発行され
ない。
【0077】上記パス14c(SNP)を介して送信さ
れるスヌープ・トランザクション、またはパス14g
(SNP)を介して送信されるスヌープ要求に埋め込ま
れる一部の情報は、パス30aで指定される動作モード
に従って異なる。
【0078】(a)パス30aが指定する動作モードが
転送優先モードであった場合:スヌープ結果の戻り先情
報として、リード要求元のノードが指定される。 (b)パス30aが指定する動作モードがスループット
優先モードであった場合:スヌープ結果の戻り先情報と
して、スヌープ要求を発行したノードが指定される。
【0079】ディレクトリ更新部14pはパス13g
(CMP)を介してリクエスト管理テーブル制御部13
からディレクトリの更新を指示された場合と、パス14
d(CMP)を介して後述するコンプリーション・トラ
ンザクションを受信したとき動作する。パス13g(C
MP)から送信されるディレクトリ更新の指示も、パス
14d(CMP)から送信されるコンプリーション・ト
ランザクションも、更新するディレクトリ情報とそのア
ドレスを含んでいる。ディレクトリ更新部14pはディ
レクトリ19の対応するアドレスのディレクトリ情報を
受信したディレクトリ情報に書き換える。そして、後述
するディレクトリ管理部14qにアドレスを送って、登
録の抹消を指示する。
【0080】ディレクトリ管理部14qはアドレス値を
保持するためのレジスタとアドレス値が有効であること
を示すバリッドビットのレジスタを複数エントリと、そ
れらの制御論理を有している。本実施の形態では16エ
ントリのアドレス値を保持できるものとする。ディレク
トリ管理部14qはLread処理部14iまたはGr
ead処理部14jからアドレスの登録要求を受ける。
このとき、ディレクトリ管理部14qは有効なアドレス
値を保持するエントリを検索して、同一メモリブロック
に対するアドレスが既に登録されていないかどうかをチ
ェックする。
【0081】要求されるアドレスと同一メモリブロック
に対応するアドレスが既に登録されていたならば、ディ
レクトリ管理部14qはアドレスの登録要求に対して、
登録失敗の応答を返す。要求されるアドレスと同一メモ
リブロックに対応するアドレス登録されていなかったな
ら、ディレクトリ管理部14qは空きエントリに要求さ
れたアドレスを登録して、登録成功の応答を返す。ただ
しこの時、空きエントリがなかったなら、登録失敗の応
答を返すものとする。また、ディレクトリ管理部14q
はディレクトリ更新部14pからアドレス値登録抹消の
指示を受けると、エントリを検索し、指示されたアドレ
スに対応するエントリのバリッドビットに無効を示す値
を設定して、アドレス登録の抹消を行う。
【0082】図8はクロスバスイッチインタフェース1
5を説明する概念図である。クロスバスイッチインタフ
ェース15はパス15bを介して、後述する各種トラン
ザクションを相互結合網20から受信し、キュー15d
を介して、ノード内の各制御部にトランザクションを配
信する。また、ノード内の各制御部からトランザクショ
ンを受信して、これをキュー15eとパス15aを介し
て相互結合網20に送信する。
【0083】受信部15hはキュー15dからトランザ
クションを取り出して、スヌープ・トランザクションは
12a(SNP)へ、データリターン・トランザクショ
ンは13b(Dret)へ、リード・トランザクション
は14a(read)へ、コンプリーション・トランザ
クションは14d(CMP)へ送信する。AckI、A
ckSH、AckDataの三種のトランザクションは
13c(Ack)、後述するメモリライト・トランザク
ションは15c(MW)へ送信する。
【0084】送信部15iは、キュー15eを介して、
12b(Ack)、13a(read)、13d(CM
P)、14b(Dret)、14c(SNP)、および
AckData転送部15gから受けたトランザクショ
ンを相互結合網20に送信する。
【0085】図2におけるキャッシュ・メインメモリ制
御部12は下記のように動作する。プロセッサ11から
リード要求を受けると、キャッシュ・メインメモリ制御
部12はキャッシュメモリ16を検索する。キャッシュ
メモリ16内に要求されたデータが登録されていたら、
当該データをプロセッサに返して、リード処理を完了す
る。キャッシュメモリ16内に要求されたデータが登録
されていなかったなら、キャッシュ・メインメモリ制御
部12はパス12c(read)を介してリクエスト管
理テーブル制御部13にリード要求を発行する。
【0086】リード要求の応答は12d(stat)、
12e(data)、12f(ID)を介して返され
る。12d(stat)の応答がGMEまたはGMDま
たはGMSであった場合、キャッシュ・メインメモリ制
御部は12e(data)から受信したデータを指定さ
れたステータス(応答がGMEまたはGMDならExc
lusive−Unmodified、GMSならSh
ared−Unmodexified)でキャッシュメ
モリに登録し、このデータをプロセッサ11に供給す
る。GMDのときはさらに、このデータをメインメモリ
17にライトする。
【0087】12d(stat)の応答がLMEまたは
LMSであった場合、メインメモリ17からデータを読
み込んで、これをキャッシュメモリ16に指定されたス
テータス(応答がLMEならExclusive−Un
modified、LMSならShared−Unmo
dexified)でキャッシュメモリに登録し、この
データをプロセッサ11に供給する。12d(sta
t)の応答がRTYであった場合、プロセッサ11にリ
ード要求の再実行を要求して、リード処理を完了する。
【0088】キャッシュ・メインメモリ制御部12はパ
ス14e(LMR)からメインメモリのリード要求を受
けると、要求されたアドレスのデータをメインメモリ1
7から読み出して、パス14f(LMD)に送信する。
また、キャッシュ・メインメモリ制御部12はパス15
c(MW)から後述するデータライト・トランザクショ
ンを受信すると、トランザクションに埋め込まれたアド
レスをライトアドレスとして、トランザクションに付随
するデータをメインメモリ17にライトする。
【0089】キャッシュ・メインメモリ制御部12はパ
ス12a(SNP)から後述するスヌープ・トランザク
ションを受信するか、またはパス14g(SNP)から
スヌープ要求を受けると、スヌープ・トランザクショ
ン、またはスヌープ要求に埋め込まれたアドレスに対応
するデータのコピーがキャッシュメモリ16に登録され
ているかを検索する。
【0090】(a)有効なデータのコピーが登録されて
いなかった場合:スヌープ・トランザクション、または
スヌープ要求に埋め込まれた戻り先情報のノードへ、パ
ス12bを介してAckIトランザクションのスヌープ
結果を送信する。ただし、戻り先のノードが自ノードに
等しかった場合はAckIトランザクションの発行は行
わず、パス14g(SNP)を介してスヌープ結果
‘I’の信号をディレクトリ制御部14に送信する。
【0091】(b)ステータスE(Exclusive
−Unmodified)で登録されていた場合:ま
ず、このキャッシュメモリ上のデータのステータスをS
H(Shared−Unmodified)に更新す
る。その後、スヌープ・トランザクション、またはスヌ
ープ要求に埋め込まれた戻り先情報のノードへ、パス1
2bを介してAckSHトランザクションのスヌープ結
果を送信する。ただし、戻り先のノードが自ノードに等
しかった場合はAckSHトランザクションの発行は行
わず、パス14g(SNP)を介してスヌープ結果‘S
H’の信号をディレクトリ制御部14に送信する。
【0092】(c)ステータスSH(Shared−U
nmodified)で登録されていた場合:スヌープ
トランザクション、またはスヌープ要求に埋め込まれた
戻り先情報のノードへ、パス12bを介してAckSH
トランザクションのスヌープ結果を送信する。ただし、
戻り先のノードが自ノードに等しかった場合はAckS
Hトランザクションの発行は行わず、パス14g(SN
P)を介してスヌープ結果‘SH’の信号をディレクト
リ制御部14に送信する。
【0093】(d)ステータスM(Exclusive
−Modified)で登録されていたなら、データの
要求元ノードとデータのホームノードとスヌープ結果の
戻り先情報に応じて、下記の動作を行う。 (d−1)データの要求元ノードとデータのホームノー
ドが異なり、かつスヌープ結果の戻り先としてデータの
要求元ノードが指定されていた場合:まず、このステー
タスMで登録されているデータを埋め込んだAckDa
taトランザクションをパス12b(Ack)に発行す
る。AckDataトランザクションの行き先は戻り先
情報で指定されたノードが指定される。続いて、同デー
タを埋め込んだメモリライト・トランザクションをパス
15j(MW)に送信する。メモリライト・トランザク
ションの行き先はデータのホームノードが指定される。
ただし、ホームノードが自ノードに等しかった場合は、
このメモリライト・トランザクションは発行されず、キ
ャッシュ・メインメモリ制御部12が自ノードのメイン
メモリ17に同データのメモリライトを行う。最後に、
このキャッシュメモリ上のデータのステータスをMから
I(Invalid)に更新する。
【0094】(d−2)データの要求元ノードとデータ
のホームノードが異なり、かつスヌープ結果の戻り先と
してデータのホームノードが指定されていた場合:この
ステータスMで登録されているデータを埋め込んだメモ
リライト・トランザクションをパス15j(MW)に送
信する。メモリライト・トランザクションの行き先はデ
ータのホームノードが指定される。ただし、ホームノー
ドが自ノードに等しかった場合は、このメモリライト・
トランザクションは発行されず、キャッシュ・メインメ
モリ制御部12が自ノードのメインメモリ17に同デー
タのメモリライトを行った上、パス14g(SNP)を
介してディレクトリ制御部14へスヌープ結果‘M’
と、同データを送信する。最後に、このキャッシュメモ
リ上のデータのステータスをMからI(Invali
d)に更新する。
【0095】(d−3)データの要求元ノードとデータ
のホームノードが等しかった場合:このステータスMで
登録されているデータを埋め込んだAckDataトラ
ンザクションをパス12b(Ack)に発行する。Ac
kDataトランザクションの行き先は戻り先情報で指
定されたノードが指定される。最後に、このキャッシュ
メモリ上のデータのステータスをMからI(Inval
id)に更新する。
【0096】次に、本実施の形態で使用されるトランザ
クションのタイプを図9と図10を参照して説明する。
【0097】図9の(a)は、リード要求元のノードか
ら、要求されるデータのホームノードに送信されるリー
ド・トランザクションを示している。8ビット幅のタイ
プフィールドには、本トランザクションがリード・トラ
ンザクションであることを示すビットパターンが設定さ
れる。
【0098】次の3ビットの行き先フィールドには、こ
のトランザクションが送信されるべき行き先のノードの
ノード番号が設定される。次の3ビットの要求元フィー
ルドにはこのリード・トランザクションの発行元ノード
のノード番号が設定される。次の3ビットのホームフィ
ールドにはリード要求の要求するデータのホームノード
の番号が記されている。次の3ビットは未使用である。
次の4ビットのIDフィールドにはリード要求が登録さ
れたリクエスト管理テーブル18のエントリ番号が設定
される。次の40ビットのアドレスフィールドにはリー
ド要求のアドレスが設定される。
【0099】図9の(b)は、リード・トランザクショ
ンの要求するデータのホームノードがリード要求元のノ
ードにメインメモリのデータとディレクトリ情報を転送
するためのデータリターン・トランザクションを示して
いる。8ビット幅のタイプフィールドには、本トランザ
クションがデータリターン・トランザクションであるこ
とを示すビットパターンが設定される。
【0100】次の3ビットの行き先フィールドには、こ
のトランザクションが送信されるべき行き先のノードの
ノード番号が設定される。次の3ビットの要求元フィー
ルドとその次の3ビットのホームフィールドには、この
トランザクションに対応するリード・トランザクション
の要求元フィールドとホームフィールドに設定されてい
た値と同じものが設定される。
【0101】次の3ビットは未使用である。次の4ビッ
トのIDフィールドにはこのトランザクションに対応す
るリード・トランザクションのIDフィールドに設定さ
れていた値と同じものが設定される。次の8ビットのD
IRフィールドにはディレクトリ情報が設定される。残
りの32ビットは未使用である。サイクル2以降にメイ
ンメモリから読み出したデータが設定される。本実施の
形態では64バイトのデータを64ビットずつ、8サイ
クルにわたって転送する。
【0102】図9の(c)は、リード要求の要求するデ
ータのホームノードがディレクトリ情報に応じて、キャ
ッシュ・コヒーレンシ一貫性制御の要求(スヌープ要
求)を行うスヌープ・トランザクションを示している。
8ビット幅のタイプフィールドには、本トランザクショ
ンがスヌープ・トランザクションであることを示すビッ
トパターンが設定される。
【0103】次の3ビットの行き先フィールドには、こ
のトランザクションが送信されるべき行き先のノードの
ノード番号が設定される。次の3ビットの要求元フィー
ルドにはリード要求元ノードの番号が設定され、その次
の3ビットのホームフィールドにはリード要求の要求す
るデータのホームノードのノード番号が設定される。
【0104】次の3ビットの戻り先フィールドには、キ
ャッシュ・コヒーレンシ一貫性制御の結果であるスヌー
プ結果をいずれのノードに送信すべきかを示す戻り先情
報が設定される。次の4ビットのIDフィールドには、
リード要求の要求元ノードがこのリード要求をリクエス
ト管理テーブル18に登録したときのエントリ番号が設
定される。他ノードから受信したリード・トランザクシ
ョンを受けて発行されたスヌープ・トランザクションで
あった場合、このリード・トランザクションのIDフィ
ールドに設定されていた値と同じものが設定される。次
の40ビットのアドレスフィールドにはキャッシュ・コ
ヒーレンシ一貫性制御の対象データのアドレスが設定さ
れる。
【0105】図9の(d)は、スヌープ・トランザクシ
ョンを受けたノードが自ノードのキャッシュメモリを検
索した結果、自ノード内のキャッシュメモリに要求され
たデータが格納されていなかったときにキャッシュ・コ
ヒーレンシ一貫性制御の結果(スヌープ結果)として発
行するAckIトランザクションを示している。8ビッ
ト幅のタイプフィールドには、本トランザクションがA
ckIトランザクションであることを示すビットパター
ンが設定される。
【0106】次の3ビットの行き先フィールドには、こ
のトランザクションが送信されるべき行き先のノードの
ノード番号が設定される。次の3ビットの要求元フィー
ルドとその次の3ビットのホームフィールドには、この
トランザクションに対応するスヌープ・トランザクショ
ンの要求元フィールドとホームフィールドに設定されて
いた値と同じものが設定される。
【0107】次の3ビットの発行元フィールドにはこの
トランザクションを発行したノードのノード番号が設定
される。次の4ビットのIDフィールドと40ビットの
アドレスフィールドにはこのトランザクションに対応す
るスヌープ・トランザクションのIDフィールドとアド
レスフィールドに設定されていた値と同じものが設定さ
れる。
【0108】図9の(e)は、スヌープ・トランザクシ
ョンを受けたノードが自ノードのキャッシュメモリを検
索した結果、自ノード内のキャッシュメモリに要求され
たデータがステータスSH(Shared−Unmod
ified)で格納されていたとき、またはステータス
E(Exclusive−Unmodified)で格
納されていて、これをステータスSHに書き換えたとき
にスヌープ結果として発行するAckSHトランザクシ
ョンを示している。
【0109】8ビット幅のタイプフィールドには、本ト
ランザクションがAckSHトランザクションであるこ
とを示すビットパターンが設定される。次のに続く56
ビットのフィールドにはAckIトランザクションと同
様の値が設定される。
【0110】図10の(f)は、スヌープ・トランザク
ションを受けたノードが自ノードのキャッシュメモリを
検索した結果、自ノード内のキャッシュメモリに要求さ
れたデータがM(Exclusive−Modifie
d)で格納されていて、これをメインメモリに書き戻し
て、キャッシュ状態をI(Invalid)に書き換え
るときにスヌープ結果として発行するAckDataト
ランザクションを示している。
【0111】8ビット幅のタイプフィールドには、本ト
ランザクションがAckDataトランザクションであ
ることを示すビットパターンが設定される。次のに続く
56ビットのフィールドにはAckIトランザクション
と同様の値が設定される。サイクル2以降にはメインメ
モリに書き戻すデータが設定される。本実施の形態では
64バイトのデータを64ビットずつ、8サイクルにわ
たって転送する。
【0112】図10の(g)は、リード処理の完了時
に、リードしたデータのホームノードのディレクトリ情
報更新のために送信されるコンプリーション・トランザ
クションを示している。8ビット幅のタイプフィールド
には、本トランザクションがコンプリーション・トラン
ザクションであることを示すビットパターンが設定され
る。
【0113】次の3ビットの行き先フィールドには、こ
のトランザクションが送信されるべき行き先のノードの
ノード番号が設定される。次の3ビットの要求元フィー
ルドにはこのトランザクションを発行したノードのノー
ド番号が設定される。次の2ビットは未使用である。次
の8ビットのDIRフィールドには新しいディレクトリ
情報が設定される。残りの40ビットにはこのディレク
トリ情報に対応するデータのアドレスが設定される。
【0114】図10の(h)は、リード・トランザクシ
ョンを受けたノードがこのリード処理の中止と再実行を
要求するために発行するリトライ・トランザクションを
示している。8ビット幅のタイプフィールドには、本ト
ランザクションがリトライ・トランザクションであるこ
とを示すビットパターンが設定される。
【0115】次の3ビットの行き先フィールドには、こ
のトランザクションが送信されるべき行き先のノードの
ノード番号が設定される。次の3ビットの要求元フィー
ルドとその次の3ビットのホームフィールドには、この
トランザクションに対応するリード・トランザクション
の要求元フィールドとホームフィールドに設定されてい
た値と同じものが設定される。
【0116】次の3ビットには未使用である。次の4ビ
ットのIDフィールドと40ビットのアドレスフィール
ドにはこのトランザクションに対応するリード・トラン
ザクションのIDフィールドとアドレスフィールドに設
定されていた値と同じものが設定される。
【0117】図10の(i)は、キャッシュメモリが保
持する更新された最新データをメインメモリに書き戻す
ために発行されるメモリライト・トランザクションを示
している。8ビット幅のタイプフィールドには、本トラ
ンザクションがメモリライト・トランザクションである
ことを示すビットパターンが設定される。次の3ビット
の行き先フィールドには、このトランザクションが送信
されるべき行き先のノードのノード番号が設定される。
【0118】次の3ビットには未使用である。次の3ビ
ットのホームフィールドには書き戻されるデータのホー
ムノードの番号が記されている。次の3ビットの発行元
フィールドにはこのトランザクションを発行したノード
のノード番号が設定される。次の4ビットは未使用であ
る。次の40ビットのアドレスフィールドには書き戻さ
れるデータのアドレスが設定される。サイクル2以降に
はメインメモリに書き戻すデータが設定される。本実施
の形態では64バイトのデータを64ビットずつ、8サ
イクルにわたって転送する。
【0119】ノード間の情報の授受は、基本的には、図
9、図10に例示される64ビット幅のデータ単位(ト
ランザクション)を相互結合網(20)の動作サイクル
単位に時系列的に、相互結合網(20)に送り出し、あ
るいは、相互結合網(20)から受け取ることによって
行われる。
【0120】以下、図11と図12、図13のタイミン
グチャートを参照して、本実施の形態のマルチプロセッ
サシステムおよびトランザクション制御の作用の一例を
説明する。なお、図11と図12、図13において、縦
方向には、動作に関係する各ノードまたはノード内の構
成要素が配置され、横方向は各ノードの動作の時間軸を
示す。
【0121】図11はND0のプロセッサが自ノードの
メインメモリ上のデータを取得するときのタイミングチ
ャートである。ただし、システムのいずれのキャッシュ
メモリも、当該データのコピーを保持していないものと
する。また、メモリライト設定手段30には転送優先モ
ードが設定されているものとする。
【0122】ND0のプロセッサ11がキャッシュ・メ
インメモリ制御部12にリード要求を発行する。キャッ
シュ・メインメモリ制御部12はキャッシュメモリ16
を検索した結果、このリード要求の要求するデータがキ
ャッシュメモリ内に登録されていなかったとする(キャ
ッシュミス)。キャッシュ・メインメモリ制御部12は
リクエスト管理テーブル制御部13にリード要求を発行
する。
【0123】リード要求を受信したリクエスト管理テー
ブル制御部13のリード発行部13hは、リクエスト管
理テーブル18のエントリにリード要求を登録する。当
該エントリのフィールドは、それぞれ、V=1、Adr
(39−0)=要求されたアドレス、H(2−0)=
0、DV=0、Dir(7−0)=11111110、
Ack(7−0)=00000000、D=0と設定さ
れる。要求されたデータがND0のメインメモリ上のデ
ータであるので、リード発行部13hはディレクトリ制
御部14にリード要求を送る。
【0124】リード要求を受けたディレクトリ制御部1
4のLread処理部14iは、要求されたアドレスを
ディレクトリ管理部14qに登録し、ディレクトリ19
から当該アドレスのディレクトリ情報を取得する。この
とき、ディレクトリ情報が‘00000000’、すな
わち、いずれのノードのキャッシュもデータのコピーを
有していない状態であったとする。Lread処理部1
4iはこのディレクトリ情報をリクエスト管理テーブル
処理部13に送信する。SNP発行部14nは、スヌー
プ要求もスヌープ・トランザクションも発行しない。
【0125】ディレクトリ情報を受けたリクエスト管理
テーブル処理部13のDir登録部13kは、受信した
ディレクトリ情報とリクエスト管理テーブル18の当該
エントリのDir(7−0)のAND演算を計算し、リ
クエスト管理テーブル18に書き戻す。受信したディレ
クトリ情報は‘00000000’であったので、Di
r(7−0)=00000000となる。Dir(7−
0)=Ack(7−0)となったので、Dir制御部1
3mはキャッシュ・メインメモリ制御部12に対して、
リード要求の応答を行う。リクエスト管理テーブル18
の当該エントリがDir(7−0)=0000000
0、H(2−0)=0(自ノード)、D=0であるの
で、図6に従い、リード応答としてLMEの信号(メイ
ンメモリからデータを読み出して、キャッシュメモリに
ステータスE(Exclusive−Unmodifi
ed)で登録するよう指示する信号)がリード要求の応
答としてキャッシュ・メインメモリ制御部12に送られ
る。
【0126】LMEの応答を受信したキャッシュ・メイ
ンメモリ制御部12はメインメモリ17のデータを読み
出して、ステータスE(Exclusive−Unmo
dified)でこのデータをキャッシュメモリ16に
登録し、同データをプロセッサ11に供給する。
【0127】Dir制御部13mはリクエスト管理テー
ブル18の当該エントリのAdr(39−0)とDir
(7−0)をアドレス、ディレクトリ情報としてディレ
クトリ制御部14に送信して、ディレクトリの更新を指
示する。ただし、Dir(7−0)のうち、自ノードに
対応するビットは1に設定されてから送信されるため、
ディレクトリ情報の値として、00000001が送信
される。
【0128】ディレクトリ制御部14のディレクトリ更
新部14pは、指定されたアドレスとディレクトリ情報
でディレクトリ19を更新し、ディレクトリ管理部14
qのアドレス登録を抹消して、処理を完了する。
【0129】次に、ND0のプロセッサがND1のメイ
ンメモリ上のデータを取得するときの処理を説明する。
ただし、同データのコピーをND2のキャッシュメモリ
がステータスE(Exclusive−Unmodif
ied)で所有していたとする。また、メモリライト設
定手段30には転送優先モードが設定されていたとす
る。まず、図12のタイミングチャートで、この処理に
よってノード間でやりとりされるトランザクションの流
れを説明する。その後、各ノード内で行われる動作の詳
細を説明する。
【0130】図12には、各ノード内で実行される動作
の概略と、ノード間でやりとりされるトランザクション
のみが記されている。まず、ND0内のプロセッサがN
D1のメインメモリ上のデータを要求し、ND0内のキ
ャッシュメモリでキャッシュミスを起こしたとする。す
ると、ND0からND1へリード・トランザクションが
発行される。
【0131】ND1はリード・トランザクションを受信
すると、要求されたデータをメインメモリから読み出
し、また、データのディレクトリ情報をディレクトリか
ら読み出す。そして、データとディレクトリ情報をデー
タリターン・トランザクションとして、ND0に送信す
る。ND1はまた、ディレクトリ情報によってND2の
キャッシュメモリが要求されたデータのコピーを保持し
ていることを判定し、要求されたデータのアドレスに対
するスヌープ・トランザクションをND2に送信する。
メモリライト設定手段30には転送優先モードが設定さ
れているとしているので、スヌープ・トランザクション
の戻り先フィールドにはデータの要求元であるND0の
ノード番号、‘0’が埋め込まれている。
【0132】スヌープ・トランザクションを受信したN
D2は、自ノード内のキャッシュメモリを検索する。こ
こで、ND2はスヌープ・トランザクションで指定され
たアドレスのデータをE(Exclusive−Unm
odified)でキャッシュメモリに保持していたと
する。ND2はこのキャッシュメモリ上のデータのステ
ータスをSH(Shared−Unmodified)
に変更し、スヌープ結果としてAckSHトランザクシ
ョンを送信する。AckSHトランザクションの行き先
は対応するスヌープ・トランザクションの戻り先フィー
ルドで指定されたノードとなるため、ND0となる。
【0133】ND0は、ND1からデータリターン・ト
ランザクションを受信し、ND2からAckSHトラン
ザクションを受信する。この結果、ND0はデータリタ
ーン・トランザクションに埋め込まれていたND1のメ
インメモリのデータをステータスSH(Shared−
Unmodified)で自ノードのキャッシュメモリ
に登録し、同データをプロセッサに供給する。ND0は
また、データリターン・トランザクションに埋め込まれ
ているディレクトリ情報を更新し、この更新された新し
いディレクトリ情報をコンプリーション・トランザクシ
ョンに埋め込んで、データのホームノードのND1に送
信する。コンプリーション・トランザクションを受信し
たND1は更新された新しいディレクトリ情報でディレ
クトリを更新し、処理を終了させる。
【0134】図12で示される処理の間、図2、図4、
図5、図6、図7、図8で示されるノード内の要素が行
う動作の詳細を以下に示す。
【0135】ND0のプロセッサ11がキャッシュ・メ
インメモリ制御部12に、ND1をホームノードとする
データに対するリード要求を発行する。キャッシュ・メ
インメモリ制御部12はキャッシュミスを起こし、リク
エスト管理テーブル処理部13にリード要求を発行す
る。
【0136】リクエスト管理テーブル処理部13のリー
ド発行部13hはリクエスト管理テーブル18のエント
リにリード要求を登録する。リクエスト管理テーブル1
8の当該エントリのフィールドはそれぞれ、V=1、A
dr(39−0)=要求されたデータのアドレス、H
(2−0)=1、DV=0、Dir(7−0)=111
11110、Ack(7−0)=00000000、D
=0と設定される。リード発行部13hは要求されたデ
ータのアドレスから、当該データのホームノードがND
1、すなわち他ノードのメインメモリ上のデータである
ことを判定してクロスバスイッチインタフェース15、
相互結合網20を介して、ND1にリード・トランザク
ション(read)を送信する。
【0137】ND1に送信されたリード・トランザクシ
ョンはディレクトリ制御部14のGread処理部14
jに送られる。Gread処理部14jは当該アドレス
をディレクトリ管理部14qに登録し、ディレクトリ1
9から当該アドレスのディレクトリ情報を取得する。デ
ィレクトリ情報の値は‘00000100’、すなわ
ち、ND2がデータのコピーを取得していることを示す
内容であったとする。
【0138】また、キャッシュ・メインメモリ制御部1
2から、当該アドレスのメインメモリのデータを取得す
る。ディレクトリ情報とメインメモリのデータからデー
タリターン・トランザクション(Dret)が生成さ
れ、Dret発行部14mから発行される。行き先はリ
ード要求元のND0となる。また、SNP発行部14n
はND2にスヌープ・トランザクション(SNP)を送
信する。
【0139】ND0に送信されたデータリターン・トラ
ンザクションはリクエスト管理テーブル制御部13に送
られ、データはMバッファ13iに格納される。ディレ
クトリ情報はDir登録部13kが受けて、リクエスト
管理テーブル18の当該エントリを更新する。いま、リ
クエスト管理テーブル18の当該エントリのDir(7
−0)は‘11111110’であり、受け取ったディ
レクトリ情報は‘00000100’であるから、AN
D演算の結果、Dir(7−0)=00000100に
更新する。
【0140】一方、ND2に送られたスヌープ・トラン
ザクションはキャッシュ・メインメモリ制御部12が受
けて、キャッシュメモリ16の検索が行われる。ND2
のキャッシュメモリ16には当該アドレスのデータがス
テータスE(Exclusive−Unmodifie
d)で格納されていたとする。キャッシュ・メインメモ
リ制御部12はこのステータスをSH(Shared−
Unmodified)に変更して、AckSHトラン
ザクションをND0に送信する。
【0141】ND0に送信されたAckSHトランザク
ションはリクエスト管理テーブル制御部13のDir制
御部13mが受けて、リクエスト管理テーブル18を更
新する。ND2のAckSHトランザクションを受けた
ので、リクエスト管理テーブル18の当該エントリのA
ck(2)が1に設定される。すると、Ack(7−
0)=00000100となり、Dir(7−0)と等
しくなったのでDir制御部13mはリード要求に対す
る応答を行う。
【0142】リクエスト管理テーブル18の当該エント
リはDir(7−0)=00000100、H(2−
0)=1(他ノード)であるので、図6に従いキャッシ
ュ・メインメモリ制御部12には応答としてパス12d
(stat)にGMSの信号(パス12e(data)
を介して送るデータをキャッシュメモリ16にステータ
スSH(Shared−Unmodified)で登録
するよう指示する信号)と、パス12e(data)に
Mバッファに格納されたデータを送信する。キャッシュ
・メインメモリ制御部12はこのデータをキャッシュメ
モリ16にステータスSH(Shared−Unmod
ified)で格納し、同データをプロセッサ11に供
給する。
【0143】Dir制御部13mは、コンプリーション
・トランザクション(CMP)をND1に発行する。リ
クエスト管理テーブル18の当該エントリはDir(7
−0)=00000100であるので、自ノードのビッ
ト(ビット0)を1とした‘00000101’がディ
レクトリ情報として、このコンプリーション・トランザ
クションに埋め込まれる。
【0144】コンプリーション・トランザクションはN
D1のディレクトリ制御部14のディレクトリ更新部1
4pに送られ、ディレクトリ更新部14pは指定された
アドレスとディレクトリ情報でディレクトリ19を更新
し、ディレクトリ管理部14qのアドレス登録を抹消し
て、処理を完了する。
【0145】次に、ND0のプロセッサがND1のメイ
ンメモリ上のデータを取得しようとしたとき、同データ
のコピーをND2のキャッシュメモリがステータスM
(Exclusive−Modified)で所有して
いた場合の処理を説明する。ただし、メモリライト設定
手段30には転送優先モードが設定されているものとし
た。まず、図13のタイミングチャートで、この処理に
よってノード間でやりとりされるトランザクションの流
れを説明する。その後、各ノード内で行われる動作の詳
細を説明する。
【0146】図13においては、各ノード内で実行され
る動作の概略と、ノード間でやりとりされるトランザク
ションのみが記されている。まず、ND0内のプロセッ
サがND1のメインメモリ上のデータを要求し、ND0
内のキャッシュメモリでキャッシュミスを起こしたとす
る。すると、ND0からND1へリード・トランザクシ
ョンが発行される。
【0147】ND1はリード・トランザクションを受信
すると、要求されたデータをメインメモリから読み出
し、また、データのディレクトリ情報をディレクトリか
ら読み出す。いま、メモリライト設定手段30には転送
優先モードが設定されているので、データとディレクト
リ情報をデータリターン・トランザクションとして、N
D0に送信する。ND1はまた、ディレクトリ情報によ
ってND2のキャッシュメモリが要求されたデータのコ
ピーを保持していることを判定し、要求されたデータの
アドレスに対するスヌープ・トランザクションをND2
に送信する。このとき、メモリライト設定手段30には
転送優先モードが設定されているので、スヌープ・トラ
ンザクションの戻り先フィールドにはデータの要求元で
あるND0のノード番号、‘0’が埋め込まれている。
【0148】スヌープ・トランザクションを受信したN
D2は自ノード内のキャッシュメモリを検索する。ここ
で、ND2はスヌープ・トランザクションで指定された
アドレスのデータをM(Exclusive−Modi
fied)でキャッシュメモリに保持していたとする。
すると、ND2はこのキャッシュメモリ上のデータを埋
め込んだAckDataトランザクションとメモリライ
ト・トランザクションを発行する。このAckData
トランザクションの行き先フィールドにはリード要求元
であるND0のノード番号0が設定され、メモリライト
・トランザクションには当該データのホームノードであ
るND1のノード番号1がそれぞれ設定される。その
後、キャッシュメモリ上の当該データのステータスをI
(Invalid)に変更する。
【0149】メモリライト・トランザクションを受信し
たND1はこのトランザクションに埋め込まれたアドレ
スとデータで、メモリライトを行う。
【0150】ND0は、ND1からデータリターン・ト
ランザクションを受信し、ND2からAckDataト
ランザクションを受信する。この結果、ND0はAck
Dataトランザクションに埋め込まれていたND2の
キャッシュメモリからのデータをステータスE(Exc
lusive−Unmodified)で自ノードのキ
ャッシュメモリに登録し、同データをプロセッサに供給
する。ND0はまた、データリターン・トランザクショ
ンに埋め込まれているディレクトリ情報を更新し、この
更新された新しいディレクトリ情報をコンプリーション
・トランザクションに埋め込んで、データのホームノー
ドのND1に送信する。
【0151】コンプリーション・トランザクションを受
信したND1は更新された新しいディレクトリ情報でデ
ィレクトリを更新し、処理を終了させる。
【0152】図13で示される処理の間、図2、図4、
図5、図6、図7、図8で示されるノード内の要素が行
う動作の詳細を以下に示す。
【0153】ND0のプロセッサ11がキャッシュ・メ
インメモリ制御部12に、ND1をホームノードとする
データに対するリード要求を発行する。キャッシュ・メ
インメモリ制御部12はキャッシュミスを起こし、リク
エスト管理テーブル処理部13にリード要求を発行す
る。
【0154】リクエスト管理テーブル処理部13のリー
ド発行部13hはリクエスト管理テーブル18のエント
リにリード要求を登録する。リクエスト管理テーブル1
8の当該エントリのフィールドはそれぞれ、V=1、A
dr(39−0)=要求されたデータのアドレス、H
(2−0)=1、DV=0、Dir(7−0)=111
11110、Ack(7−0)=00000000、D
=0と設定される。リード発行部13hは要求されたデ
ータのアドレスから、当該データのホームノードがND
1、すなわち他ノードのメインメモリ上のデータである
ことを判定してクロスバスイッチインタフェース15、
相互結合網20を介して、ND1にリード・トランザク
ション(read)を送信する。
【0155】ND1に送信されたリード・トランザクシ
ョンはディレクトリ制御部14のGread処理部14
jに送られる。Gread処理部14jは当該アドレス
をディレクトリ管理部14qに登録し、ディレクトリ1
9から当該アドレスのディレクトリ情報を取得する。デ
ィレクトリ情報の値は‘00000100’、すなわ
ち、ND2がデータのコピーを取得していることを示す
内容であったとする。また、キャッシュ・メインメモリ
制御部12から、当該アドレスのメインメモリのデータ
を取得する。ディレクトリ情報とメインメモリのデータ
からデータリターン・トランザクション(Dret)が
Dret発行部14mから発行される。行き先はリード
要求元のND0となる。また、SNP発行部14nはN
D2にスヌープ・トランザクション(SNP)を送信す
る。
【0156】ND0に送信されたデータリターン・トラ
ンザクションはリクエスト管理テーブル制御部13に送
られ、データはMバッファ13iに格納される。ディレ
クトリ情報はDir登録部13kが受けて、リクエスト
管理テーブル18の当該エントリを更新する。いま、リ
クエスト管理テーブル18の当該エントリのDir(7
−0)は‘11111110’、受け取ったディレクト
リ情報は‘00000100’であるから、AND演算
の結果、Dir(7−0)=00000100に更新す
る。
【0157】一方、ND2に送られたスヌープ・トラン
ザクションはキャッシュ・メインメモリ制御部12が受
けて、キャッシュメモリ16の検索が行われる。ND2
のキャッシュメモリ16には当該アドレスのデータがス
テータスM(Exclusive−Modified)
で格納されていたとする。キャッシュ・メインメモリ制
御部12はキャッシュメモリのデータを読み出して、A
ckDataトランザクションとして、このデータをN
D0に送信する。また、同データをメモリライト・トラ
ンザクションとして、ND1に送信する。その後、キャ
ッシュメモリ16の当該データのステータスをI(In
valid)に変更する。
【0158】メモリライト・トランザクションを受信し
たND1はトランザクションに埋め込まれたアドレスと
データでメインメモリ17にメモリライトを行う。
【0159】ND0に送信されたAckDataトラン
ザクションはリクエスト管理テーブル制御部13に送ら
れ、トランザクションのデータはDバッファ13jに格
納される。また、Dir制御部13mもこのトランザク
ションを受けて、リクエスト管理テーブル18を更新す
る。ND2のAckDataトランザクションを受けた
ので、リクエスト管理テーブル18の当該エントリのD
ir(2)が0に設定される。さらにリクエスト管理テ
ーブル18の当該エントリのDを1に設定する。する
と、Dir(7−0)=00000000となり、Ac
k(7−0)と等しくなったのでDir制御部13mは
リード要求に対する応答を行う。
【0160】いま、リクエスト管理テーブル18の当該
エントリはDir(7−0)=00000000、H
(2−0)=1(他ノード)であるので、図6に従いキ
ャッシュ・メインメモリ制御部12に応答としてパス1
2d(stat)にはGMEの信号(パス12eを介し
て送るデータをキャッシュメモリ16にステータスE
(Exclusive−Unmodified)として
登録するよう指示する信号)と、パス12e(dat
a)にはDバッファ13jに格納されたデータが送られ
る。キャッシュ・メインメモリ制御部12はこのデータ
をキャッシュメモリ16にステータスE(Exclus
ive−Unmodified)で格納し、同データを
プロセッサ11に供給する。
【0161】Dir制御部13mはコンプリーション・
トランザクション(CMP)をND1に発行する。リク
エスト管理テーブル18の当該エントリはDir(7−
0)=00000000であるので、自ノードのビット
(ビット0)を1とした‘00000001’がディレ
クトリ情報として、このコンプリーション・トランザク
ションに埋め込まれる。
【0162】コンプリーション・トランザクションはN
D1のディレクトリ制御部14のディレクトリ更新部1
4pに送られ、ディレクトリ更新部14pは指定された
アドレスとディレクトリ情報でディレクトリ19を更新
し、ディレクトリ管理部14qのアドレス登録を抹消し
て、処理を完了する。
【0163】次に、メモリライト設定手段30にスルー
プット優先モードが設定されている状態で、ND0のプ
ロセッサがND1のメインメモリ上のデータを取得しよ
うとしたとき、同データのコピーをND2のキャッシュ
メモリがステータスM(Exclusive−Modi
fied)で所有していた場合の処理を説明する。ま
ず、図14のタイミングチャートで、この処理によって
ノード間でやりとりされるトランザクションの流れを説
明する。その後、各ノード内で行われる動作の詳細を説
明する。
【0164】図14においては、各ノード内で実行され
る動作の概略と、ノード間でやりとりされるトランザク
ションのみが記されている。まず、ND0内のプロセッ
サがND1のメインメモリ上のデータを要求し、ND0
内のキャッシュメモリでキャッシュミスを起こしたとす
る。すると、ND0からND1へリード・トランザクシ
ョンが発行される。
【0165】ND1はリード・トランザクションを受信
すると、要求されたデータをメインメモリから読み出
し、また、データのディレクトリ情報をディレクトリか
ら読み出す。いま、メモリライト設定手段30にはスル
ープット優先モードが設定されている。ND1はディレ
クトリ情報からND2のみが要求されたデータのコピー
を保持していると判定したとする。すると、ここでデー
タリターン・トランザクションは発生しない。ND1は
要求されたデータのアドレスに対するスヌープ・トラン
ザクションをND2に送信する。このとき、メモリライ
ト設定手段30にはスループット優先モードが設定され
ているので、スヌープ・トランザクションの戻り先フィ
ールドにはデータのホームノードであるND1のノード
番号、‘1’が埋め込まれている。
【0166】スヌープ・トランザクションを受信したN
D2は自ノード内のキャッシュメモリを検索する。ここ
で、ND2はスヌープ・トランザクションで指定された
アドレスのデータをM(Exclusive−Modi
fied)でキャッシュメモリに保持していたとする。
すると、ND2はこのキャッシュメモリ上のデータを埋
め込んだメモリライト・トランザクションを発行する。
一方、AckDataトランザクションは発行されな
い。メモリライト・トランザクションには当該データの
ホームノードであるND1のノード番号1が設定され
る。その後、キャッシュメモリ上の当該データのステー
タスをI(Invalid)に変更する。
【0167】メモリライト・トランザクションを受信し
たND1はこのトランザクションに埋め込まれたアドレ
スとデータでメモリライトを行うと同時に、同データを
埋め込んだデータリターン・トランザクションをND0
に対して送信する。
【0168】ND0は、ND1からデータリターン・ト
ランザクションを受信し、ND0はこのトランザクショ
ンに埋め込まれていたND2のキャッシュメモリからの
データをステータスE(Exclusive−Unmo
dified)で自ノードのキャッシュメモリに登録
し、同データをプロセッサに供給する。ND0はまた、
データリターン・トランザクションに埋め込まれている
ディレクトリ情報を更新し、この更新された新しいディ
レクトリ情報をコンプリーション・トランザクションに
埋め込んで、データのホームノードのND1に送信す
る。
【0169】コンプリーション・トランザクションを受
信したND1は更新された新しいディレクトリ情報でデ
ィレクトリを更新し、処理を終了させる。
【0170】図13で示される処理の間、図2、図4、
図5、図6、図7、図8で示されるノード内の要素が行
う動作の詳細を以下に示す。
【0171】ND0のプロセッサ11がキャッシュ・メ
インメモリ制御部12に、ND1をホームノードとする
データに対するリード要求を発行する。キャッシュ・メ
インメモリ制御部12はキャッシュミスを起こし、リク
エスト管理テーブル処理部13にリード要求を発行す
る。リクエスト管理テーブル処理部13のリード発行部
13hはリクエスト管理テーブル18のエントリにリー
ド要求を登録する。リクエスト管理テーブル18の当該
エントリのフィールドはそれぞれ、V=1、Adr(3
9−0)=要求されたデータのアドレス、H(2−0)
=1、DV=0、Dir(7−0)=1111111
0、Ack(7−0)=00000000、D=0と設
定される。リード発行部13hは要求されたデータのア
ドレスから、当該データのホームノードがND1、すな
わち他ノードのメインメモリ上のデータであることを判
定してクロスバスイッチインタフェース15、相互結合
網20を介して、ND1にリード・トランザクション
(read)を送信する。
【0172】ND1に送信されたリード・トランザクシ
ョンはディレクトリ制御部14のGread処理部14
jに送られる。Gread処理部14jは当該アドレス
をディレクトリ管理部14qに登録し、ディレクトリ1
9から当該アドレスのディレクトリ情報を取得する。デ
ィレクトリ情報の値は‘00000100’、すなわ
ち、ND2がデータのコピーを取得していることを示す
内容であったとする。また、キャッシュ・メインメモリ
制御部12から、当該アドレスのメインメモリのデータ
を取得する。
【0173】いま、メモリライト設定手段30にはスル
ープット優先モードが設定されている。Dret発行部
14mはディレクトリ情報‘00000100’から、
要求されたデータのコピーを保持するノードがND2の
みであることを判定する。すると、Dret発行部14
mはここで、データリターン・トランザクションを発行
せず、スヌープ結果の受信を待つ。一方、SNP発行部
14nはND2にスヌープ・トランザクション(SN
P)を送信する。スヌープ・トランザクションの戻り先
フィールドには、スヌープ・トランザクションの発行元
のND1が設定される。
【0174】ND2に送られたスヌープ・トランザクシ
ョンはキャッシュ・メインメモリ制御部12が受けて、
キャッシュメモリ16の検索が行われる。ND2のキャ
ッシュメモリ16には当該アドレスのデータがステータ
スM(Exclusive−Modified)で格納
されていたとする。いま、スヌープ・トランザクション
の要求元フィールドはND0、ホームフィールドはND
1、戻り先フィールドはND1となっている。キャッシ
ュ・メインメモリ制御部12はキャッシュメモリのデー
タを読み出して、メモリライト・トランザクションとし
て、ND1に送信する。このとき、AckDataトラ
ンザクションは発行されない。その後、キャッシュメモ
リ16の当該データのステータスをI(Invali
d)に変更する。
【0175】メモリライト・トランザクションを受信し
たND1のキャッシュ・メインメモリ制御部12はトラ
ンザクションに埋め込まれたアドレスとデータでメイン
メモリ17にメモリライトを行う。これと同時に、ND
1のディレクトリ制御部14もこのメモリライト・トラ
ンザクションを受信する。ディレクトリ制御部14のD
ret発行部14mはこのメモリライト・トランザクシ
ョンを受信して、このトランザクションに埋め込まれた
データを使って、データリターン・トランザクションを
生成する。データリターン・トランザクションのディレ
クトリ情報には、‘00000000’が埋め込まれ
る。このデータリターン・トランザクションはND0に
送信される。
【0176】ND0に送信されたメモリライト・トラン
ザクションはリクエスト管理テーブル制御部13に送ら
れ、トランザクションのデータはMバッファ13iに格
納される。ディレクトリ情報はDir登録部13kが受
けて、リクエスト管理テーブル18の当該エントリを更
新する。いま、リクエスト管理テーブル18の当該エン
トリのDir(7−0)は‘11111110’、受け
取ったディレクトリ情報は‘00000000’である
から、AND演算の結果、Dir(7−0)=0000
0000に更新する。すると、Ack(7−0)と等し
くなったのでDir制御部13mはリード要求に対する
応答を行う。いま、リクエスト管理テーブル18の当該
エントリはDir(7−0)=00000000、H
(2−0)=1(他ノード)であるので、図6に従いキ
ャッシュ・メインメモリ制御部12に応答としてパス1
2d(stat)にはGMEの信号(パス12eを介し
て送るデータをキャッシュメモリ16にステータスE
(Exclusive−Unmodified)として
登録するよう指示する信号)と、パス12e(dat
a)にはMバッファ13iに格納されたデータが送られ
る。キャッシュ・メインメモリ制御部12はこのデータ
をキャッシュメモリ16にステータスE(Exclus
ive−Unmodified)で格納し、同データを
プロセッサ11に供給する。Dir制御部13mはコン
プリーション・トランザクション(CMP)をND1に
発行する。リクエスト管理テーブル18の当該エントリ
はDir(7−0)=00000000であるので、自
ノードのビット(ビット0)を1とした‘000000
01’がディレクトリ情報として、このコンプリーショ
ン・トランザクションに埋め込まれる。
【0177】コンプリーション・トランザクションはN
D1のディレクトリ制御部14のディレクトリ更新部1
4pに送られ、ディレクトリ更新部14pは指定された
アドレスとディレクトリ情報でディレクトリ19を更新
し、ディレクトリ管理部14qのアドレス登録を抹消し
て、処理を完了する。
【0178】なお、上記実施形態では、システム内のノ
ードの数を8ノードとしたが、8ノード以外のノード数
を持つシステムでも、本発明は適用可能である。また、
ノード内のプロセッサ数を1としたが、ノード内に複数
のプロセッサを有するシステムでも、本発明は適用可能
である。また、アドレス幅を40ビットとしたが、40
ビット以外のアドレス幅を持つシステムでも、本発明は
適用可能である。また、キャッシュメモリはメインメモ
リを64バイト毎のブロックとして扱うものとしたが、
64バイト以外の大きさを単位として制御する場合で
も、本発明は適用可能である。また、ディレクトリ情報
をメインメモリとは別の記憶手段で保持するものとして
いるが、メインメモリ上にデータとディレクトリ情報を
混在させる方式においても本発明は適用可能である。
【0179】
【発明の効果】本発明によれば、スヌープ要求を必要と
するメインメモリのデータリード処理において、要求さ
れるデータをダーティ・データとして保持するノードが
無いことが明らかな場合のみ、リードで要求されるデー
タのホームノードでスヌープ結果を待ち受ける必要を無
くしているので、無駄なデータ転送を生じることなく、
プロセッサに高速に要求されたデータを供給できるマル
チプロセッサシステムを得ることができる。
【図面の簡単な説明】
【図1】本発明の一実施の形態であるマルチプロセッサ
システムの全体の構成の一例を示す概念図である。
【図2】本発明の一実施の形態であるマルチプロセッサ
システムにおけるノードの構成の一例を詳細に例示した
概念図である。
【図3】本発明の一実施の形態であるマルチプロセッサ
システムにおける相互結合網の構成の一例を詳細に例示
した概念図である。
【図4】本発明の一実施の形態であるマルチプロセッサ
システムにおけるノード内のリクエスト管理テーブルの
一例を例示した概念図である。
【図5】本発明の一実施の形態であるマルチプロセッサ
システムにおけるノード内のリクエスト管理テーブル制
御部の一例を例示した概念図である。
【図6】本発明の一実施の形態であるマルチプロセッサ
システムにおけるノード内のリクエスト管理テーブル制
御部内のDir制御部がリード要求に対する応答として
発行する信号12d(stat)の信号の種類と発行条
件の一例を例示した概念図である。
【図7】本発明の一実施の形態であるマルチプロセッサ
システムにおけるノード内のディレクトリ制御部の一例
を例示した概念図である。
【図8】本発明の一実施の形態であるマルチプロセッサ
システムにおけるノード内のクロスバスイッチインタフ
ェースの一例を例示した概念図である。
【図9】本発明の一実施の形態であるマルチプロセッサ
システムに用いられるトランザクションの構成の一例を
示す概念図である(20a〜20e)。
【図10】本発明の一実施の形態であるマルチプロセッ
サシステムに用いられるトランザクションの構成の一例
を示す概念図である(20f〜20i)。
【図11】本発明の一実施形態におけるメモリリード処
理の作用の一例を示すタイミングチャートである(自ノ
ード内メモリリード)。
【図12】本発明の一実施形態におけるメモリリード処
理の作用の一例を示すタイミングチャートである(他ノ
ードのメインメモリのデータを取得)。
【図13】本発明の一実施形態におけるメモリリード処
理の作用の一例を示すタイミングチャートである(他ノ
ードのキャッシュメモリのデータを取得、転送優先モー
ド)。
【図14】本発明の一実施形態におけるメモリリード処
理の作用の一例を示すタイミングチャートである(他ノ
ードのキャッシュメモリのデータを取得、スループット
優先モード)。
【図15】従来技術を説明するためのマルチプロセッサ
システムの全体の構成の一例を示す概念図である。
【図16】従来技術を説明するためのマルチプロセッサ
システムにおけるメモリリード処理の動作を示すタイミ
ングチャートである(他ノードのメインメモリのデータ
を取得)。
【図17】従来技術を説明するためのマルチプロセッサ
システムにおけるメモリリード処理の動作を示すタイミ
ングチャートである(他ノードのキャッシュメモリのデ
ータを取得)。
【符号の説明】
10…ノード(ND0〜NDn)、11…プロセッサ、
12…キャッシュ・メインメモリ制御装置、12a(S
NP)…クロスバスイッチインタフェースがスヌープ・
トランザクションをキャッシュ・メインメモリ制御部に
送信するパス、12b(Ack)…キャッシュ・メイン
メモリ制御部がクロスバスイッチインタフェースにスヌ
ープ結果のトランザクションを送信するパス、12c
(read)…キャッシュ・メインメモリ制御部がリク
エスト管理テーブル制御部にリード要求を送信するパ
ス、12d(stat)…リクエスト管理テーブル制御
部がキャッシュ・メインメモリ制御部にリード要求に対
する応答信号を送信するパス、12e(data)…リ
クエスト管理テーブル制御部がキャッシュ・メインメモ
リ制御部にリード要求に対する応答データを送信するパ
ス、12f(ID)…リクエスト管理テーブル制御部が
キャッシュ・メインメモリ制御部にリード要求に対する
応答のIDを送信するパス、13…リクエスト管理テー
ブル制御部、13a(read)…リクエスト管理テー
ブル制御部がクロスバスイッチインタフェースにリード
・トランザクションを送信するパス、13b(Dre
t)…クロスバスイッチインタフェースがリクエスト管
理テーブル制御部にデータリターン・トランザクション
を送信するパス、13c(Ack)…クロスバスイッチ
インタフェースがリクエスト管理テーブル制御部にスヌ
ープ結果のトランザクションを送信するパス、13d
(CMP)…リクエスト管理テーブル制御部がクロスバ
スイッチインタフェースにコンプリーション・トランザ
クションを送信するためのパス、13e(Lrd)…リ
クエスト管理テーブル制御部がディレクトリ制御部にリ
ード要求を送信するためのパス、13f(dir)…デ
ィレクトリ制御部がリクエスト管理テーブル制御部にデ
ィレクトリ情報を送信するためのパス、13g(CM
P)…リクエスト管理テーブル制御部がディレクトリ更
新の指示を送信するためのパス、13h…リード発行
部、13i…データリターン・トランザクションのデー
タを保持するバッファ、13j…AckDataトラン
ザクションのデータを保持するバッファ、13k…Di
r登録部、13m…Dir制御部、13n…セレクタ、
13p(Rty)…クロスバスイッチインタフェースが
リクエスト管理テーブル制御部にリトライ・トランザク
ションを送信するパス、14…ディレクトリ制御部、1
4a(read)…クロスバスイッチインタフェースが
ディレクトリ制御部にリード・トランザクションを送信
するパス、14b(Dret)…ディレクトリ制御部が
クロスバスイッチインタフェースにデータリターン・ト
ランザクションを送信するパス、14c(SNP)…デ
ィレクトリ制御部がクロスバスイッチインタフェースに
スヌープ・トランザクションを送信するパス、14d
(CMP)…クロスバスイッチインタフェースがディレ
クトリ制御部がコンプリーション・トランザクションを
送信するパス、14e(LMR)…ディレクトリ制御部
がキャッシュ・メインメモリ制御部にメインメモリのデ
ータを要求するためのパス、14f(LMD)…キャッ
シュ・メインメモリ制御部がディレクトリ制御部にメイ
ンメモリのデータを送信するためのパス、14g(SN
P)…ディレクトリ制御部がキャッシュ・メインメモリ
制御部にスヌープ要求を送信し、また、スヌープ結果を
受信するパス、14h(Rty)…ディレクトリ制御部
がクロスバスイッチインタフェースにリトライ・トラン
ザクションを送信するパス、14i…Lread処理
部、14j…Gread処理部、14m…Dret発行
部、14n…SNP発行部、14p…ディレクトリ更新
部、14q…ディレクトリ管理部、14r(Rty)…
ディレクトリ制御部がリクエスト管理テーブル制御部に
リトライ指示の信号を送信するためのパス、15…クロ
スバスイッチインタフェース、15a…クロスバスイッ
チインタフェースが相互結合網へトランザクションを送
信するためのパス、15b…クロスバスイッチインタフ
ェースが相互結合網からトランザクションを受信するた
めのパス、15c(MW)…クロスバスイッチインタフ
ェースが更新された最新データをメインメモリに書き込
むためのメモリライト・トランザクションをキャッシュ
・メインメモリ制御部に送信するパス、15d…受信キ
ュー、15e…送信キュー、15h…受信部、15i…
送信部、15j…キャッシュ・メインメモリ制御部が更
新された最新データをメインメモリに書き込むためのメ
モリライト・トランザクションをクロスバスイッチイン
タフェースに送信するパス16…キャッシュメモリ、1
7…メインメモリ、18…リクエスト管理テーブル、1
9…ディレクトリ、20…相互結合網(XB)、20a
…リード・トランザクション、20b…データリターン
・トランザクション、20c…スヌープ・トランザクシ
ョン、20d…AckIトランザクション、20e…A
ckSHトランザクション、20f…AckDataト
ランザクション、20g…コンプリーション・トランザ
クション、20h…リトライ・トランザクション、20
i…メモリライト・トランザクション、21a…トラン
ザクション受信キュー、21b…トランザクション送信
キュー、22a…トランザクション受信ポート、22b
…トランザクション送信ポート、23…スイッチ結合論
理、30…メモリライト設定手段、30a…メモリライ
ト設定手段に設定された設定情報をディレクトリ制御部
に通知するパス、100…ノード(xND0〜xND
n)、101…プロセッサ、102…キャッシュ・メイ
ンメモリ制御部、103…キャッシュメモリ、104…
メインメモリ、105…ディレクトリ、111…相互結
合網
───────────────────────────────────────────────────── フロントページの続き (51)Int.Cl.7 識別記号 FI テーマコート゛(参考) G06F 15/16 645 G06F 15/16 645 (72)発明者 中島 敦 神奈川県海老名市下今泉810番地 株式会 社日立製作所インターネットプラットフォ ーム事業部内 (72)発明者 對馬 雄次 東京都国分寺市東恋ヶ窪一丁目280番地 株式会社日立製作所中央研究所内 Fターム(参考) 5B005 JJ12 KK03 KK14 MM01 PP03 PP11 PP26 5B045 BB28 DD12

Claims (3)

    【特許請求の範囲】
  1. 【請求項1】プロセッサとキャッシュメモリとメインメ
    モリと前記メインメモリのデータを格納するキャッシュ
    メモリを識別するディレクトリ情報を記憶するディレク
    トリを備える複数のノードと、前記複数のノードを相互
    に接続する結合手段を有するマルチプロセッサシステム
    において、前記複数のノードの各々は、自ノードに対し
    て前記複数のノードの一つである第一のノードが要求し
    たデータに対する前記複数のノードの一つである第二の
    ノードが送信したスヌープ要求を受信する第一の受信部
    と、受信した前記スヌープ要求に関するデータのステー
    タスを制御する第一の制御部と、前記制御部によるスヌ
    ープ結果を前記第一のノードに対して送信する第一の送
    信部を有することを特徴とするマルチプロセッサシステ
    ム。
  2. 【請求項2】請求項1に記載のマルチプロセッサシステ
    ムにおいて、前記第二のノードは、前記第一のノードか
    ら自ノード内のメインメモリに対するデータ要求を受信
    する第二の受信部と、要求されたデータに関するディレ
    クトリ情報を抽出する第二の制御部と、前記抽出したデ
    ィレクトリ情報を前記第一のノードに送信する第二の送
    信部を有することを特徴とするマルチプロセッサシステ
    ム。
  3. 【請求項3】それぞれプロセッサとキャッシュメモリと
    メインメモリと前記メインメモリのデータをいずれのキ
    ャッシュメモリが読み込んだかを識別するためディレク
    トリ情報を記憶する手段であるディレクトリを有する複
    数のノードと、前記複数のノードを相互に接続する結合
    手段からなるマルチプロセッサシステムにおいて、前記
    複数のノードの各々は、自ノードのメインメモリに対す
    るデータ要求を前記複数のノードのいずれかから受信し
    たときには、前記データを要求したノードに前記自ノー
    ドのメインメモリから読み出した前記要求されたデータ
    と前記ディレクトリから読み出した前記要求されるデー
    タのディレクトリ情報を送信する第一の制御論理と、前
    記要求されたデータのディレクトリ情報から前記複数の
    ノードのうち要求されるデータのコピーを保持するキャ
    ッシュメモリを有するノードがあると判定したときは、
    前記要求されたデータのキャッシュ・コヒーレンシ一貫
    性を保持するためのスヌープ要求を前記要求されるデー
    タのコピーを保持するキャッシュメモリを有するノード
    に送信し、当該ノードに対して前記データ要求を行った
    ノードに前記スヌープ要求の応答であるスヌープ結果を
    送信するよう指示する第二の制御論理と、前記メインメ
    モリに対するデータ要求を受信したノードが発行する前
    記要求されたデータに対するスヌープ要求を受信したと
    き、スヌープ要求に対する応答であるスヌープ結果を前
    記第二の制御論理によって指示されるノードに送信する
    第三の制御論理と、前記メインメモリに対するデータ要
    求を行ったノードが前記要求されるデータを保持するメ
    インメモリを有するノードから前記第一の制御論理によ
    り送信されるディレクトリ情報を受信したときは、前記
    複数のノードの内のいずれかまたは複数のノードが前記
    第三の制御論理により送信するスヌープ結果に応じて、
    更新された新しいディレクトリ情報を生成し、前記要求
    されるデータを保持するメインメモリを有するノードへ
    前記新しいディレクトリ情報を送信する第四の制御論理
    と、前記メインメモリに対するデータ要求を行ったノー
    ドが前記第四の制御論理により送信された更新された新
    しいディレクトリ情報を受信したときは、この更新され
    た新しいディレクトリ情報をその中のディレクトリに書
    き込む第五の制御論理を有することを特徴とするマルチ
    プロセッサシステム。
JP2002013648A 2002-01-23 2002-01-23 マルチプロセッサシステム Pending JP2003216597A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2002013648A JP2003216597A (ja) 2002-01-23 2002-01-23 マルチプロセッサシステム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2002013648A JP2003216597A (ja) 2002-01-23 2002-01-23 マルチプロセッサシステム

Publications (1)

Publication Number Publication Date
JP2003216597A true JP2003216597A (ja) 2003-07-31

Family

ID=27650553

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002013648A Pending JP2003216597A (ja) 2002-01-23 2002-01-23 マルチプロセッサシステム

Country Status (1)

Country Link
JP (1) JP2003216597A (ja)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007179528A (ja) * 2005-12-28 2007-07-12 Internatl Business Mach Corp <Ibm> 方法、コンピュータ・プログラム製品、コンピュータ・プログラム、情報ハンドリング・システム(デフォルト・データ転送コヒーレント・キャッシング・エージェントのシステムおよび方法)
JP2008197716A (ja) * 2007-02-08 2008-08-28 Nec Corp データ一貫性制御システム及びデータ一貫性制御方法
JP2011002986A (ja) * 2009-06-18 2011-01-06 Nec Computertechno Ltd レイテンシ短縮システム、レイテンシ短縮方法、および、レイテンシ短縮プログラム
US7904665B2 (en) 2006-01-26 2011-03-08 Nec Computer Techno, Ltd. Multiprocessor system and its operational method
CN102129396A (zh) * 2011-03-04 2011-07-20 中国科学院软件研究所 一种实时快速的线程间数据交换方法
JP2012181860A (ja) * 2006-03-23 2012-09-20 Internatl Business Mach Corp <Ibm> アクセラレータ用低コストのキャッシュ一貫性を維持するシステム
JP2018129041A (ja) * 2017-02-08 2018-08-16 エイアールエム リミテッド スヌープリクエストに対する応答の転送
JP2019526086A (ja) * 2016-06-24 2019-09-12 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドAdvanced Micro Devices Incorporated 競合ロック要求の消去スキーム

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007179528A (ja) * 2005-12-28 2007-07-12 Internatl Business Mach Corp <Ibm> 方法、コンピュータ・プログラム製品、コンピュータ・プログラム、情報ハンドリング・システム(デフォルト・データ転送コヒーレント・キャッシング・エージェントのシステムおよび方法)
US7904665B2 (en) 2006-01-26 2011-03-08 Nec Computer Techno, Ltd. Multiprocessor system and its operational method
JP2012181860A (ja) * 2006-03-23 2012-09-20 Internatl Business Mach Corp <Ibm> アクセラレータ用低コストのキャッシュ一貫性を維持するシステム
JP2008197716A (ja) * 2007-02-08 2008-08-28 Nec Corp データ一貫性制御システム及びデータ一貫性制御方法
JP2011002986A (ja) * 2009-06-18 2011-01-06 Nec Computertechno Ltd レイテンシ短縮システム、レイテンシ短縮方法、および、レイテンシ短縮プログラム
CN102129396A (zh) * 2011-03-04 2011-07-20 中国科学院软件研究所 一种实时快速的线程间数据交换方法
JP2019526086A (ja) * 2016-06-24 2019-09-12 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドAdvanced Micro Devices Incorporated 競合ロック要求の消去スキーム
JP7166931B2 (ja) 2016-06-24 2022-11-08 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド 競合ロック要求の消去スキーム
JP2018129041A (ja) * 2017-02-08 2018-08-16 エイアールエム リミテッド スヌープリクエストに対する応答の転送
JP7277075B2 (ja) 2017-02-08 2023-05-18 アーム・リミテッド スヌープリクエストに対する応答の転送

Similar Documents

Publication Publication Date Title
JP3644587B2 (ja) 共用介入サポートを有する不均等メモリ・アクセス(numa)・データ処理システム
JP3661761B2 (ja) 共用介入サポートを有する不均等メモリ・アクセス(numa)データ処理システム
US7996625B2 (en) Method and apparatus for reducing memory latency in a cache coherent multi-node architecture
JP4594900B2 (ja) メモリ・ブロックを初期設定するためのプロセッサ、データ処理システム、および方法
US6640287B2 (en) Scalable multiprocessor system and cache coherence method incorporating invalid-to-dirty requests
TWI391821B (zh) 在互連結構上發佈請求而無參照基於標籤快取狀態的低階快取之處理單元及資料處理系統與方法
US7493446B2 (en) System and method for completing full updates to entire cache lines stores with address-only bus operations
US5706463A (en) Cache coherent computer system that minimizes invalidation and copyback operations
TWI463318B (zh) 快取一致性處理系統、快取記憶體,及其方法
KR100324975B1 (ko) 잠재적인 제3 노드 트랜잭션을 버퍼에 기록하여 통신 대기시간을 감소시키는 비균일 메모리 액세스(numa) 데이터 프로세싱 시스템
US6859864B2 (en) Mechanism for initiating an implicit write-back in response to a read or snoop of a modified cache line
US6871267B2 (en) Method for increasing efficiency in a multi-processor system and multi-processor system with increased efficiency
US20030018739A1 (en) Shared memory multiprocessing system employing mixed broadcast snooping and directory based coherency protocols
JP2982868B2 (ja) メモリ待ち時間を短縮する方法およびコンピュータ・システム
JPH10289155A (ja) Smpバスの共用状態でのキャッシュ・ラインの共用介入方法及びシステム
US5559987A (en) Method and apparatus for updating a duplicate tag status in a snoop bus protocol based computer system
JPH10289156A (ja) Smpバスの最近読取り状態でのキャッシュ・ラインの共用介入方法及びシステム
JPH1031625A (ja) マルチ・プロセッサ・システムにおける改良されたコピーバック性能のためのライトバック・バッファ
JP2000250884A (ja) 不均等メモリ・アクセス・コンピュータ・システムにおいてエヴィクション・プロトコルを提供するための方法およびシステム
JPH08249231A (ja) マルチプロセッサ・システムにおける古いデータの処理システム及び方法
JPH11328026A (ja) ホバ―リング(h)及びリ―セント(r)状態を有するキャッシュ・コヒ―レンシ・プロトコル
JP2003216597A (ja) マルチプロセッサシステム
JP2000132531A (ja) マルチプロセッサ
KR100380674B1 (ko) 멀티프로세서 시스템에서의 기록-통과 기억 동작동안 캐시코히어런스를 유지하는 방법 및 시스템
JP3836836B2 (ja) メモリ複製オペレーション時の不正確なキャッシュ・ライン保護機構