JP2000132531A - マルチプロセッサ - Google Patents

マルチプロセッサ

Info

Publication number
JP2000132531A
JP2000132531A JP10301948A JP30194898A JP2000132531A JP 2000132531 A JP2000132531 A JP 2000132531A JP 10301948 A JP10301948 A JP 10301948A JP 30194898 A JP30194898 A JP 30194898A JP 2000132531 A JP2000132531 A JP 2000132531A
Authority
JP
Japan
Prior art keywords
memory
bus
processor
cache
system controller
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
JP10301948A
Other languages
English (en)
Inventor
Atsushi Hikono
厚志 彦野
Kenji Takebe
建治 武部
Masami Sato
正美 佐藤
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.)
PFU Ltd
Original Assignee
PFU 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 PFU Ltd filed Critical PFU Ltd
Priority to JP10301948A priority Critical patent/JP2000132531A/ja
Publication of JP2000132531A publication Critical patent/JP2000132531A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Memory System Of A Hierarchy Structure (AREA)

Abstract

(57)【要約】 【課題】 キャッシュを持つ複数のプロセッサを有する
マルチプロセッサにおいて、キャッシュのコヒーレンシ
ーを維持するための処理を効率良く行うこと。 【解決手段】 システム・コントローラが配下のプロセ
ッサからメモリ・アクセス要求を受け取ると、当該メモ
リ・アクセス要求をシステム・バス上にブロードキャス
トすると共に、アクセス対象のメモリ空間xに対応する
タグ情報が持つキャッシュ状態をシステム・バス上に出
力する。ブロードキャストされたメモリ・アクセス要求
を受け取った他のノードのシステム・コントローラは、
メモリ空間xに対応するタグ情報が持つキャッシュ状態
をシステム・バス上に出力し、次いでシステム・バス上
のキャッシュの状態を参照して配下のプロセッサ又はメ
モリに対して必要な処理を要求し、要求した処理が終了
した後にマスタのシステム・コントローラに対して応答
を返す。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、複数のプロセッサ
のキャッシュのコヒーレンシーの制御を複数のシステム
・コントローラがシステム・バスを介して行うマルチプ
ロセッサに関するものである。
【0002】
【従来の技術】従来、複数のプロセッサを制御するシス
テム・コントローラを複数個持つマルチプロセッサにお
いては、プロセッサ又はバス・ブリッジからメモリ・ア
クセス要求を受けたシステム・コントローラ(マスタの
システム・コントローラ)が他のプロセッサを制御して
いるシステム・コントローラ(スレーブのシステム・コ
ントローラ)から各プロセッサのキャッシュの状態を読
み出し、必要に応じて他のシステム・コントローラが制
御するプロセッサが持つキャッシュに対するコピーバッ
ク要求やインバリデート要求を当該システム・コントロ
ーラに対してシステム・バスを経由して送っていた。
【0003】
【発明が解決しようとする課題】従来のシステムでは、
キャッシュのコヒーレンシー(coherency)を
保つために、或る一つのメモリ・アクセス要求に対して
複数のバス・トランザクションの遣り取りがシステム・
バス上で必要であった。例えば、或るメモリ・アクセス
に対して複数のプロセッサのキャッシュのインバリデー
ト(invalidate)作業が必要な場合は、その
数だけメモリ・アクセス要求を受けたマスタのシステム
・コントローラがシステム・バスを介してインバリデー
ト作業が必要なプロセッサを配下に持つシステム・コン
トローラに対してインバリデート要求を送らなければな
らなかった。
【0004】そのため、幾つものバス・トランザクショ
ンがシステム・バスに出てしまい、システム・バスを占
有してしまっていた。そのため、プロセッサのキャッシ
ュに対するインバリデート要求やコピーバック要求が遅
れてしまうと共に、他のアクセスと競合する確率が高く
なり、システム全体の性能の低下を招いていた。本発明
は、この点に鑑みて創作されたものであって、複数のプ
ロセッサの各々がキャッシュを有するマルチプロセッサ
において、キャッシュのコヒーレンシーを維持するため
の処理を効率よく行い得るようにすることを目的として
いる。
【0005】
【課題を解決するための手段】図1は本発明の原理説明
図である。本発明では、キャッシュの状態を複数のシス
テム・コントローラで共有する。或るメモリ・アクセス
要求が発生したら、当該メモリ・アクセス要求を受けた
マスタのシステム・コントローラは、システム・バスに
当該アクセス要求をブロードキャストする。システム・
バスに接続されている各システム・コントローラは、当
該ブロードキャストを受信すると、自分が制御するプロ
セッサのキャッシュの状態をシステム・バス上に出力す
る。各システム・コントローラは、システム・バス上の
キャッシュの状態を見ることで、配下のプロセッサに対
して、コピーバック作業やインバリデート作業が必要か
否かを独自に判断することが出来る。
【0006】システム・コントローラは、メモリ・アク
セス要求を受け取ると、マスタのシステム・コントロー
ラから要求されることなく、必要に応じてコピーバック
作業やインバリデート作業を即座に開始する。
【0007】また、プロードキャストされたメモリ・ア
クセス要求がリードの場合には、リソース・メモリを持
つシステム・コントローラは、そのメモリへのリード・
アクセスを開始し、次いで各システム・コントローラか
ら出力されたキャッシュの状態が最新データがキャッシ
ュに存在することを示しているか否かを調べ、最新デー
タがキャッシュに存在する場合には当該メモリ・アクセ
スをキャンセルする。なお、リソース・メモリとは、ブ
ロードキャストされたメモリ・アクセス要求の対象とな
るメモリ空間を持つメモリを意味している。
【0008】処理が必要と判断したシステム・コントロ
ーラは、自分が制御するプロセッサやメモリへの処理が
全て終了した段階で、マスタのシステム・コントローラ
に応答を返す。マスタのシステム・コントローラは、応
答が必要なシステム・コントローラからの応答を待つと
共に、自分が制御するプロセッサへの処理が必要な場合
はその処理を行った後、メモリ・アクセスを終結させ
る。
【0009】本発明によれば、システム・コントローラ
の各々が独自にキャッシュのコヒーレンシーを維持する
ための作業を行うために、システム・バスの使用を最低
限にすることができ、性能の低下を防げる。また、各々
のシステム・コントローラが独自に判断するために、い
ちはやくプロセッサに対するコピーバック作業やインバ
リデート作業,メモリ・アクセス,メモリ・アクセスの
キャンセルの開始が可能である。
【0010】
【発明の実施の形態】図2は本発明のマルチプロセッサ
の構成例を示す図である。同図において、100はノー
ド、111と112はプロセッサ、121と122はタ
グ部、130はシステム・コントローラ、140はクロ
スバ・スイッチ、151と152はメモリ、160はバ
ス・ブリッジ、200はノード、211と212はプロ
セッサ、221と222はタグ部、230はシステム・
コントローラ、240はクロスバ・スイッチ、251と
252はメモリ、260はバス・ブリッジ、300はノ
ード、400もノードをそれぞれ示している。
【0011】ノード100,200,300,400は
同じ構成を持っているので、主としてノード100につ
いて説明する。バス・ブリッジ160の先には入出力装
置が接続されている。プロセッサ111は内部にキャッ
シュ(図示せず)を有しており、キャッシュはデータ部
とタグ部とから構成されている。プロセッサ112も内
部にキャッシュを有している。タグ部121の内容はプ
ロセッサ111のキャッシュのタグ部の内容と実質的に
同じであり、タグ部122の内容はプロセッサ112の
キャッシュのタグ部の内容と実質的に同じである。
【0012】システム・コントローラ130は、アドレ
スを一括制御するものである。クロスバ・スイッチ14
0は、システム・コントローラ130の指示に従って、
データの流れを制御するものである。例えば、バス・ブ
リッジ160のデータ・バスをシステム・バスに含まれ
るデータ・バスに接続したり、プロセッサ111のデー
タ・バスをメモリ151のデータ・バスに接続したりす
る。メモリ151は主記憶の一部を構成するものであ
る。メモリ152も同様である。例えば、メモリ151
には主記憶アドレスのビット6〜8が000であるデー
タが格納され、メモリ152には主記憶アドレスのビッ
ト6〜8が001のデータが格納される。また、ノード
200のメモリ251には主記憶アドレスのビット6〜
8が010のデータが格納され、ノード200のメモリ
252には主記憶アドレスのビット6〜8が011のデ
ータが格納される。
【0013】タグ部121はN個(Nは2,3,…)の
タグ情報を記憶することが出来る。タグ情報は、アドレ
スとキャッシュの状態を持つ。キャッシュの状態種別と
しては、M,O,S,Iがある。MはExclusiv
e&PotentialyModifyを示し、OはS
hared−Modifyを示し、SはShare−C
leanを示し、IはInvalidateを示す。
【0014】タグ部121の中に存在する或るタグ情報
のキャッシュの状態がMであると言うことは、当該タグ
情報に対応する主記憶上のメモリ空間がプロセッサ11
1によって占有され、且つ当該タグ情報に対応するプロ
セッサ111のキャッシュのデータ・ブロックが書き換
えられている可能性があることを示す。タグ部121の
中に存在する或るタグ情報のキャッシュの状態がOであ
ると言うことは、当該タグ情報に対応する主記憶上のメ
モリ空間がプロセッサ111を含む複数のプロセッサに
よって共有され、且つ当該タグ情報に対応するプロセッ
サ111のキャッシュのデータ・ブロックが書き換えら
れている可能性があることを示す。
【0015】タグ部121の中に存在する或るタグ情報
のキャッシュの状態がSであると言うことは、当該タグ
情報に対応する主記憶上のメモリ空間がプロセッサ11
1を含む複数のプロセッサによって共有され、且つ当該
タグ情報に対応するプロセッサ111のキャッシュのデ
ータ・ブロックが書き換えたものを共有している場合も
あることを示す。タグ部121の中に存在する或るタグ
情報のキャッシュの状態がIであると言うことは、当該
タグ情報に対応するプロセッサ111のキャッシュのデ
ータ・ブロックが無効であることを示す。
【0016】ノード100,200,300,400
は、システム・バスによって接続されている。システム
・バスは、アドレス・バス,データ・バス,リプライ・
バス,スヌープ(snoop)バスから構成されてい
る。各ノードのシステム・コントローラはアドレス・バ
ス,リプライ・バス,スヌープ・バスに接続され、クロ
スバ・スイッチはデータ・バスに接続されている。
【0017】アドレス・バスには、以下に示すような複
数の情報が入る。 ○アドレス ○タイプ(アクセスの種類を示す。RDS,RDSA,
…など) ○マスタID(アクセス発生元。例えばCPUのIDな
ど) ○クラス(処理の優先順位)
【0018】スヌープ・バスはシステム・コントローラ
から4本出ている。1個のプロセッサあたり2本で、4
つのキャッシュの状態を示す。図示のように、4個のシ
ステム・コントローラが存在し、各システム・コントロ
ーラの配下に2個のプロセッサが存在する場合には、ス
ヌープ・バスは16本の信号線で構成される。
【0019】リプライ・バスは複数本の信号線で構成さ
れる。以下に構成要素を示す。 ○マスタID(どのマスタIDのアクセスに介するリプ
ライかを示す。) ○クラス(どのクラスに対するリプライかを示す。) ○タイプ(リプライの種類を示す。RBS,SWB,P
SACKなど) RBSとは、Read Block Sharedの略
であり、メモリ・リードに対するリプライである。SW
Bとは、Slave Write Blockの略であ
り、メモリ・ライトでデータをスレーブに送るリプライ
である。PSACKとは、インバリデート終了をマスタ
のシステム・コントローラに送るリプライである。
【0020】プロセッサが出すメモリ・アクセス要求に
は、以下に示すような4種類のリード要求と,2種類の
ライト要求とが存在する。 RDS Read To Share RDSA Read To Share Always RDD Read To Discard RDO Read To Own WRB Write Back WRI Write Invalidate
【0021】図3はシステム・コントローラの構成例を
示す図である。同図において、131はプロセッサ・バ
ス制御部、132はアドレス・バス制御部、133はス
ヌープ・バス制御部、134はクロスバ制御部、135
はメモリ制御部をそれぞれ示している。
【0022】プロセッサ・バスとは、プロセッサに接続
されているアドレス・バスのことである。システム・コ
ントローラ130は、プロセッサ・バス制御部131や
アドレス・バス制御部132,スヌープ・バス制御部1
33,クロスバ制御部134,メモリ制御部135を有
している。他のシステム・コントローラも同様な構成を
有している。
【0023】プロセッサ・バス制御部131は、プロセ
ッサ・バスからデータを取り込んだり、プロセッサ・バ
スにデータを出力したりする。アドレス・バス制御部1
32は、システム・バスに含まれるアドレス・バスにデ
ータを出力したり、これからデータを取り込んだりす
る。プロセッサ・バス制御部131とアドレス・バス制
御部132の間には、データを遣り取りするための信号
線が設けられている。
【0024】スヌープ・バス制御部133は、スヌープ
・バスにデータを出力したり、スヌープ・バスからデー
タを取り込んだりすると共に、タグ部121の制御を行
う。なお、図にはタグ部121しか示されていないが、
タグ部122(図2を参照)もスヌープ・バス制御部1
33によって制御される。クロスバ制御部134は、ク
ロスバ・スイッチやリプライ・バス,データ・バスの制
御を行う。プロセッサ・バス制御部131とクロスバ制
御部134の間にはデータを遣り取りするための信号線
が設けられ、アドレス・バス制御部132とクロスバ制
御部134の間にもデータを遣り取りするための信号線
が設けられている。
【0025】メモリ制御部135は、メモリの制御を行
う。クロスバ制御部134とメモリ制御部135の間の
信号線はデータの転送に使用される。また、スヌープ・
バス制御部133からメモリ制御部135には制御信号
が送られる。
【0026】図4は本発明の動作を説明する図である。
同図において、311と312はプロセッサ、321と
322はタグ部、330はシステム・コントローラ、3
40はクロスバ・スイッチ、360はバス・ブリッジを
それぞれ示す。〜は処理の順序を示す。なお、図2
と同一符号は同一物を示す。また、ノード200,30
0の中にはメモリ151,152に相当するものが存在
するが、図示されていない。
【0027】図4に示すように、プロセッサ111が或
るメモリ空間xに所有権つきのリード(キャッシュを書
き換え可能な状態にするリード)をシステム・コントロ
ーラ130に対して要求したと仮定する。なお、所有権
付きリードとは、前述のRDOのことである。システム
・コントローラ130は、当該メモリ・リード要求をア
ドレス・バスを介してブロード・キャストする。なお、
ブロード・キャストとは、計算機システムが複数のシス
テム・コントローラを持つ場合、一つのプロセッサが出
してきたメモリ・アクセス要求を他のシステム・コント
ローラの全てに見せることを意味している。
【0028】システム・コントローラ130は、メモリ
・リード要求をブロードキャストした後に、タグ部12
1,122を参照して当該メモリ・リードの対象となる
メモリ空間xに対応するキャッシュの状態を求め、求め
たキャッシュの状態をスヌープ・バス上に出力する。な
お、該当するタグ情報がタグ部に存在しない場合は、イ
ンバリッドがスヌープ・バス上に出力される。
【0029】システム・コントローラ230は、ブロー
ド・キャストされたメモリ・アクセス要求を受信する
と、タグ部221,222を参照してメモリ空間xに対
応するキャッシュの状態を求め、求めたキャッシュの状
態をスヌープ・バス上に出力する。同様に、システム・
コントローラ330は、ブロード・キャストされたメモ
リ・アクセス要求を受信すると、タグ部321,322
を参照してメモリ空間xに対応するキャッシュの状態を
求め、求めたキャッシュの状態をスヌープ・バス上に出
力する。
【0030】各システム・コントローラはスヌープ・バ
ス上に出力されたキャッシュの状態を認識し、即座に必
要な処理を開始する。例えば、スヌープ・バス上に出力
されたプロセッサ211のキャッシュの状態がShar
ed−Modify(キャッシュに最新のデータが存在
する状態)、スヌープ・バス上に出力されたプロセッサ
311のキャッシュの状態がShare−Clean
(メモリ又は他のキャッシュの写しを共有している状
態)、スヌープ・バス上に出力された他のキャッシュの
状態がInvalid(無効)であったと仮定する。
【0031】システム・コントローラ230は、システ
ム・コントローラ130によって所有権付きメモリ・リ
ードが要求され且つ当該メモリ・リードの対象となるメ
モリ空間xに対応するタグ情報のキャッシュの状態がS
hared−Modifyであるので、プロセッサ21
1に対してコピーバック・インバリデート要求を発行す
る。
【0032】このコピーバック・インバリデート要求を
受け取ると、プロセッサ211は、キャッシュのデータ
部から該当するデータ・ブロックを読み出してシステム
・コントローラ230に渡すと共に、キャッシュのタグ
部に存在するメモリ空間xに対応するタグ情報のキャッ
シュの状態をInvlidにし、処理終了の応答をシス
テム・コントローラ230に返す。プロセッサ211か
らの処理終了の応答を受け取ると、システム・コントロ
ーラ230は、タグ部221の該当するタグ情報のキャ
ッシュの状態をInvalidにし、渡されたデータ・
ブロックをシステム・バスに含まれるデータ・バスに出
力し、マスタのシステム・コントローラ130にリプラ
イ・バスを経由して応答を返す。
【0033】システム・コントローラ330は、マスタ
のシステム・コントローラが所有権付きメモリ・リード
を要求し且つプロセッサの311の該当するキャッシュ
の状態がShare−Cleanであるので、プロセッ
サ311に対してインバリッド要求を発行する。このイ
ンバリッド要求を受け取ると、プロセッサ311は、キ
ャッシュのタグ部の中に存在するメモリ空間xに対応す
るタグ情報のキャッシュの状態をInvalidにし、
処理終了の応答をシステム・コントローラ330に返
す。この応答を受け取ると、システム・コントローラ3
30は、タグ部321の中に存在する該当するタグ情報
のキャッシュの状態をInvalidにし、マスタのシ
ステム・コントローラ130にリプライ・バスを経由し
て処理終了の応答を返す。
【0034】一方、システム・コントローラ130は、
各システム・コントローラ230,330がキャッシュ
の状態をスヌープ・バス上に出力した所でスヌープ・バ
ス上のキャッシュの状態を参照し、最新データがプロセ
ッサ211のキャッシュにあると認識して、メモリ・リ
ードを止めて、システム・コントローラ230からの応
答およびシステム・コントローラ330からの応答を待
ち、その後、プロセッサ111に対してリード・データ
を渡す。このリード・データを受け取ると、プロセッサ
111は、リード・データをキャッシュのデータ部に格
納すると共に、アドレスとExclusive&Pot
entialy Modifyと言うキャッシュの状態
とを持つタグ情報をキャッシュのタグ部に書き込む。
【0035】また、上記の例に加えて、例えばプロセッ
サ212のキャッシュのタグ部の中に存在するメモリ空
間xに対応するタグ情報のキャッシュの状態がInva
lid(無効)ではなくてShare−Cleanの状
態であると仮定すると、システム・コントローラ230
はプロセッサ211に対してはコピーバック・インバリ
デートを発行し、プロセッサ212に対してはインバリ
デートを発行する。このような場合には、システム・コ
ントローラ230はプロセッサ211,212からの応
答を待ち合わせ、両方からの応答があった段階でシステ
ム・コントローラ130に処理終了を告げる応答を返
す。このようにすることにより、マスタのシステム・コ
ントローラに対する応答が一度で済む。
【0036】上述の説明はプロセッサ111から所有権
つきのリードが発行された場合の動作を説明するもので
あるが、プロセッサ111から通常のリード要求(RD
S/RDSA)が発行された場合の動作を以下に説明す
る。プロセッサ111が通常のリード要求を発行する
と、システム・コントローラ130はシステム・バス上
に当該リード要求をブロード・キャストし、システム・
コントローラ130,230,330はタグ部の内容を
確認して、スヌープ・バスにタグのステート(キャッシ
ュの状態を示す)を出力する。
【0037】スヌープ・バス上のタグのステートが全て
Iであるとすると、データはメモリから読み出される。
何れのメモリからリードするかは、リード要求のアドレ
スによって決まる。
【0038】スヌープ・バス上に出力されたプロセッサ
112のタグのステートがSであり、他のタグのステー
トがIであったとすると共に、リード要求で指定される
アドレスがメモリ251の空間であったと仮定する。こ
の場合、リード要求で指定された最新データは、メモリ
251およびプロセッサ112のキャッシュに存在す
る。他のノード200のメモリ251からノード100
にデータを転送するよりも自ノード100内で終結する
方が処理を早く終わらせることができ、システム・バス
を使用しなくても済む。従って、プロセッサ112のキ
ャッシュからデータを取ってくることを選択する。シス
テム・コントローラ130は、プロセッサ112に対し
てコピーバックを発行し、この結果得られるデータをプ
ロセッサ111にデータを転送する。リード要求で指定
されるアドレスがメモリ151の空間であったと仮定す
る。この場合は、コピーバックよりメモリ・リードの方
が速いので、システム・コントローラ130はメモリ1
51から該当するデータをリードし、リード・データを
プロセッサ111に渡す。
【0039】スヌープ・バス上のプロセッサ212のタ
グのステートがMであり、他のプロセッサのタグのステ
ートがIであったと仮定する。この場合は、最新データ
はプロセッサ212しか持っていないので、システム・
コントローラ230がプロセッサ212にコピーバック
を要求し、コピーバックの結果得られたデータをプロセ
ッサ212からプロセッサ111に転送する。
【0040】次に、プロセッサがライト・インバリデー
ト(WRI)を発行した場合の動作について説明する。
プロセッサ111からシステム・コントローラ130に
ライト・インバリデート要求が出されると、システム・
コントローラ130は当該要求をシステム・バス上にブ
ロード・キャストし、各システム・コントローラ13
0,230,330はタグ部の内容を確認し、タグのス
テートをスヌープ・バス上に出す。このとき、各システ
ム・コントローラは、スヌープ・バス上のタグのステー
トがI以外のS又はO又はMになっているプロセッサに
対してインバリデート要求を出し、インバリデートが終
了した段階でシステム・コントローラ130に応答を返
す。システム・コントローラ130は全てのインバリデ
ートが終了した段階で、メモリ・ライトを行い、処理を
終結させる。
【0041】図5はプロセッサ・バスからリード要求を
受け取ったマスタのシステム・コントローラの動作を示
す図である。同図において、PBはプロセッサ・バス、
TWはシステム・バスをそれぞれ示す。
【0042】システム・コントローラは、プロセッサ・
バスからコヒーレント・リード(RDS,RDSA,R
DDまたはRDO)を受け取ると、処理中のメモリ・ア
クセス要求のアドレスと今回のリード要求のアドレスが
一致しているか否かを調べる。両者が一致している場合
は、今回のリード要求をブロッキング・バッファに格納
する。両者が一致していない場合は、今回のリード要求
をシステム・バスに出力すると共に、今回のリード要求
で指定されたメモリ空間が自己のノードの中に存在する
か否かを調べる。自己のノードの中に存在する場合に
は、メモリからデータをリードしてリード・データをク
ロスバ・スイッチのバッファに入れるための処理を開始
する。
【0043】リード要求をシステム・バスに出力した
後、システム・コントローラはリード要求のアドレスに
よって定まるキャッシュの状態をスヌープ・バスに出力
し、次いでスヌープ・バス上のキャッシュの状態を読み
込む。そして、システム・コントローラは、読み込んだ
キャッシュの状態を参照して種々の動作を行う。
【0044】或る場合には、「PB SREQ CPB
/I INV」を発行する。即ち、プロセッサ・バスを
経由してプロセッサにコピーバックやコピーバック・イ
バリデート,インバリデート要求を送る。そして、プロ
セッサ・バスを経由してリプライやSACKか送られて
来るのを待つ。「SACK」とは、インバリデート終了
のリプライである。
【0045】或る場合には、「TW Reply SA
CK」を待つ。即ち、システム・バスを経由してリプラ
イやSACKが送られてくるのを待つ。ある場合には、
「TW Reply RBU/S」を待つ。即ち、シス
テム・バスを経由してRBS(リード・ブロック・シェ
ア)又はRBU(リード・ブロック・アンシェア)のリ
プライが送られて来るのを待つ。RBUやRBSは、メ
モリ・リードに対するリプライである。或る場合にはメ
モリ対するリード処理をキャンセルし、或る場合にはメ
モリ・リードが終了するのを待つ。
【0046】待ち合わせ処理が終了した後、システム・
コントローラは、RBU又はRBS又はOAK(オーナ
シップ・アック)のリプライをマスタに送る。この場合
のマスタとは、リード要求発行元のプロセッサである。
また、必要に応じて「CRAB」をスレーブのプロセッ
サに送る。「CRAB」とは、コヒーレンシ・リード・
アック・ブロックを意味している。
【0047】プロセッサ側にデータを送った後、システ
ム・コントローラは「TW CEND」を発行する。
「TW CEND」は、システム・バス側の処理が終了
したことを意味している。「TW CEND」が発行さ
れると、CEND待ちになっているブロッキング・バッ
ファの要求の待ち状態が解除され、次いでタグの更新が
行われる。
【0048】図6はシステム・バスからリード要求を受
け取ったスレーブのシステム・コントローラの動作を示
す図である。システム・コントローラは、システム・バ
スからコヒーレント・リード(RDS,RDSA,RD
DまたはRDO)を受信すると、受信したリード要求で
指定されたメモリ空間が自己のノードの中に存在するか
否かを調べる。自己のノードの中に存在する場合には、
メモリからデータをリードしてリード・データをクロス
バ・スイッチのバッファに入れるための処理を開始す
る。
【0049】リード要求を受信した後、システム・コン
トローラはリード要求のアドレスによって定まるキャッ
シュの状態をスヌープ・バスに出力し、次いでスヌープ
・バス上のキャッシュの状態を読み込む。そして、シス
テム・コントローラは、読み込んだキャッシュの状態を
参照して種々の動作を行う。
【0050】或る場合には、「PB CPB/CPI+
α(INV)」を発行する。即ち、或るプロセッサに対
してはコピーバック,コピーバック・インバリデート又
はインバリデートを発行し、必要に応じて他のプロセッ
サに対してもコピーバック,コピーバック・インバリデ
ート又はインバリデートを発行する。次いで、プロセッ
サ・バスを経由してリプライやSACKか送られて来る
のを待つ。次いで、必要に応じて「CRAB」をスレー
ブのプロセッサに送り、システム・バスを経由してRB
UやRBSのリプライをマスタのシステム・コントロー
ラに送る。
【0051】或る場合には、プロセッサ・バスにインバ
リデートを発行し、プロセッサ・バス経由でSACKか
送られて来るのを待ち、システム・バス経由でPSAC
Kのリプライをマスタのシステム・コントローラに送
る。
【0052】或る場合には、システム・コントローラ
は、メモリに対するリード処理をキャンセルする。メモ
リ・リードをキャンセルしない場合には、システム・コ
ントローラは、メモリ・リードが終了したこと,インバ
リデートを発行した場合はSACKのリプライがあった
ことの両方の条件が満足した時に、システム・バスを経
由してRBU/Sのリプライをマスタのシステム・コン
トローラに送る。
【0053】マスタのシステム・コントローラにリプラ
イを送った後、システム・コントローラは、CEND待
ちになっているブロッキング・バッファの要求の待ち状
態を解除し、タグの更新を行う。
【0054】図7はプロセッサ・バスからWRB要求
(ライトバック要求)を受け取ったマスタのシステム・
コントローラの動作を示す図である。システム・コント
ローラは、プロセッサ・バスからWRB要求を受け取る
と、処理中のメモリ・アクセス要求のアドレスと今回の
WRB要求のアドレスが一致しているか否かを調べる。
両者が一致している場合は、今回のWRB要求をブロッ
キング・バッファに格納する。両者が一致していない場
合は、今回のWRB要求をシステム・バスに出力する。
【0055】WRB要求をシステム・バスに出力した
後、システム・コントローラはWRB要求のアドレスに
よって定まるキャッシュの状態をスヌープ・バスに出力
し、次いでスヌープ・バス上のキャッシュの状態を読み
込む。そして、システム・コントローラは、読み込んだ
キャッシュの状態を参照して種々の動作を行う。
【0056】或る場合には、「PB Sreply W
BCAN 」を発行する。即ち、プロセッサ・バスを経
由して「ライト・バックをキャンセルせよ」と言うリプ
ライをWRB発行元のプロセッサに送る。
【0057】或る場合には、「PB Sreply W
AB 」を発行する。即ち、プロセッサ・バスを経由し
て「ライトバックせよ」と言うリプライをWRB発行元
のプロセッサに送る。次いで、WRBの対象となってい
るメモリ空間が自己のノードの中に存在するか,他のノ
ードの中に存在するかを調べる。自己のノードの中に存
在する場合は、自己のメモリにWRBに付加されている
データを書き込む。他のノードの中に存在する場合に
は、「TW Reply SWB 」を発行する。即
ち、システム・バスを経由して「ライト・ブロックをメ
モリに書き込め」と言うリプライをスレーブのシステム
・コントローラに送る。
【0058】メモリ・ライトなどの必要な処理を行った
後、システム・コントローラは「TW CEND」を発
行する。「TW CEND」が発行されると、CEND
待ちになっているブロッキング・バッファの要求の待ち
状態が解除され、次いでタグの更新が行われる。
【0059】図8はシステム・バスからWRB要求を受
け取ったスレーブのシステム・コントローラの動作を示
す図である。システム・コントローラは、システム・バ
スからWRB要求を受信すると、WRB要求のアドレス
によって定まるキャッシュの状態をスヌープ・バスに出
力し、次いでスヌープ・バス上のキャッシュの状態を読
み込む。
【0060】次いで、システム・コントローラは、受信
したWRB要求で指定されたメモリ空間が他ノードの中
に存在するか,自ノードの中に存在するかを調べる。自
ノードの中に存在する場合には、マスタのシステム・コ
ントローラから「TW Reply SWB」が送られ
て来るのを待ち、送られて来たならばメモリ・ライトを
行い、「TW CEND」を発行する。「TW CEN
D」が発行されると、CEND待ちになっているブロッ
キング・バッファの要求の待ち状態は解除され、タグの
更新が行われる。
【0061】図9はプロセッサ・バスからWRI要求
(ライト・インバリデート要求)を受け取ったマスタの
システム・コントローラの動作を示す図である。システ
ム・コントローラは、プロセッサ・バスからWRI要求
を受け取ると、処理中のメモリ・アクセス要求のアドレ
スと今回のWRI要求のアドレスが一致しているか否か
を調べる。両者が一致している場合は、今回のWRI要
求をブロッキング・バッファに格納する。両者が一致し
ていない場合は、今回のWRI要求をシステム・バスに
出力する。
【0062】WRI要求をシステム・バスに出力した
後、システム・コントローラはWRI要求のアドレスに
よって定まるキャッシュの状態をスヌープ・バスに出力
し、次いでスヌープ・バス上のキャッシュの状態を読み
込む。そして、システム・コントローラは、読み込んだ
キャッシュの状態を参照して種々の動作を行う。
【0063】或る場合には、「PB SREQ IN
V」を発行する。即ち、プロセッサ・バスを経由して
「インバリデートせよ」と言う要求をキャッシュの状態
がS,O又はMのプロセッサに送る。次いで、プロセッ
サ・バス経由でSACKが送られて来るのを待つ。或る
場合には、システム・バス経由でSACKが送られて来
るのを待つ。
【0064】或る場合には、「PB Sreply W
AB 」を発行する。次いで、WRIの対象となってい
るメモリ空間が自己のノードの中に存在するか,他のノ
ードの中に存在するかを調べる。自己のノードの中に存
在する場合は、自己のメモリにWRIに付加されている
データを書き込む。他のノードの中に存在する場合に
は、「TW Reply SWB 」を発行する。すな
わち、システム・バスを経由して「ライト・ブロックを
メモリに書き込め」と言うリプライをスレーブのシステ
ム・コントローラに送る。この処理は、待ち合わせが終
了した後で行われる。
【0065】待ち合わせやメモリ・ライトが終了した
後、システム・コントローラは「TWCEND」を発行
する。「TW CEND」が発行されると、CEND待
ちになっているブロッキング・バッファの要求の待ち状
態が解除され、タグの更新が行われる。
【0066】図10はシステム・バスからWRI要求を
受け取ったスレーブのシステム・コントローラの動作を
示す図である。システム・コントローラは、システム・
バスからWRI要求を受信すると、WRI要求のアドレ
スによって定まるキャッシュの状態をスヌープ・バスに
出力し、次いでスヌープ・バス上のキャッシュの状態を
読み込む。そして、システム・コントローラは、読み込
んだキャッシュの状態を参照して種々の動作を行う。
【0067】或る場合には、プロセッサ・バスにインバ
リデートを発行し、プロセッサ・バス経由でSACKが
送られて来るのを待ち、送られて来たならばシステム・
バス経由でSACKをマスタのシステム・コントローラ
に送る。或る場合には、WRI要求で指定されるメモリ
空間が自己のノードに存在するか否かを調べ、自己のノ
ードに存在する場合にはシステム・バス経由でSWBが
送られて来るのを待ち、送られて来たならばメモリ・ラ
イトを行い、「TW CEND」を発行する。「TW
CEND」が発行されると、CEND待ちになっている
ブロッキング・バッファの要求の待ち状態は解除され、
タグの更新が行われる。
【0068】
【発明の効果】以上の説明から明らかなように、本発明
によれば、キャッシュのコヒーレンシーを保つための,
システム・コントローラ間のバス・トランザクションを
少なく出来る。また、プロセッサのキャッシュに対する
処理の開始も早くなるため、システム全体の性能の向上
が期待できる。
【図面の簡単な説明】
【図1】本発明の原理説明図である。
【図2】本発明のマルチプロセッサの構成例を示す図で
ある。
【図3】本発明のシステム・コントローラの構成例を示
す図である。
【図4】本発明の動作を説明する図である。
【図5】プロセッサ・バスからリード要求を受け取った
マスタのシステム・コントローラの動作を示す図であ
る。
【図6】システム・バスからリード要求を受け取ったス
レーブのシステム・コントローラの動作を示す図であ
る。
【図7】プロセッサ・バスからWRB要求を受け取った
マスタのシステム・コントローラの動作を示す図であ
る。
【図8】システム・バスからWRB要求を受け取ったス
レーブのシステム・コントローラの動作を示す図であ
る。
【図9】プロセッサ・バスからWRI要求を受け取った
マスタのシステム・コントローラの動作を示す図であ
る。
【図10】システム・バスからWRI要求を受け取った
スレーブのシステム・コントローラの動作を示す図であ
る。
【符号の説明】
100 ノード 111 プロセッサ 112 プロセッサ 121 タグ部 122 タグ部 130 システム・コントローラ 140 クロスバ・スイッチ 151 メモリ 152 メモリ 160 バス・ブリッジ 200 ノード 211 プロセッサ 212 プロセッサ 221 タグ部 222 タグ部 230 システム・コントローラ 240 クロスバ・スイッチ 251 メモリ 252 メモリ 260 バス・ブリッジ 300 ノード 311 プロセッサ 312 プロセッサ 321 タグ部 322 タグ部 330 システム・コントローラ 340 クロスバ・スイッチ 360 バス・ブリッジ
───────────────────────────────────────────────────── フロントページの続き (72)発明者 佐藤 正美 石川県河北郡宇ノ気町字宇野気ヌ98番地の 2 株式会社ピーエフユー内 Fターム(参考) 5B045 BB12 DD12 DD13

Claims (5)

    【特許請求の範囲】
  1. 【請求項1】 キャッシュを持つプロセッサ,システム
    ・コントローラおよび主メモリの一部を構成するメモリ
    を有する複数個のノード、並びに複数個のノードを接続
    するシステム・バスを具備するマルチプロセッサにおい
    て、 各システム・コントローラは、配下のプロセッサからメ
    モリ・アクセス要求を受けた時に、当該メモリ・アクセ
    ス要求をシステム・バスを介して他の全てのシステム・
    コントローラにブロードキャストし、 配下のプロセッサ又は他のシステム・コントローラから
    のメモリ・アクセス要求を受けた時に、自己のキャッシ
    ュのタグ部の中に当該メモリ・アクセスの対象となるメ
    モリ空間に対応するタグ情報が存在するか否かを調べ、
    存在する場合には該当するタグ情報が持つキャッシュ状
    態をシステム・バスに出力し、存在しない場合には無効
    を示すキャッシュ状態をシステム・バスに出力し、 システム・バス上のキャッシュ状態を参照し、配下のプ
    ロセッサ又はメモリを制御する必要がある場合には配下
    のプロセッサ又はメモリを制御することを特徴とするマ
    ルチプロセッサ。
  2. 【請求項2】 ブロードキャストされたメモリ・アクセ
    ス要求を受け取ったシステム・コントローラは、システ
    ム・バス上のキャッシュ状態を参照して独自に配下のプ
    ロセッサに対する処理が必要か否かを判断し、必要と判
    断した場合には配下のプロセッサに必要とされる処理を
    要求することを特徴とする請求項1のマルチプロセッ
    サ。
  3. 【請求項3】 自己の配下に存在する複数個のプロセッ
    サに対してインバリデート,コピーバック又はコピーバ
    ック・インバリデートの処理要求を発行したシステム・
    コントローラは、上記複数個の処理要求に対する処理終
    了の応答を全て受け取った段階で、メモリ・アクセス要
    求をブロードキャストしたシステム・コントローラに対
    して纏めて処理終了の応答を返すことを特徴とする請求
    項2のマルチプロセッサ。
  4. 【請求項4】 メモリ・アクセスの対象となるメモリ空
    間を持つノードのシステム・コントローラは、メモリ・
    アクセス要求を受け取った時に自己のメモリに対するア
    クセスを開始し、次いでシステム・バス上のキャッシュ
    状態を参照してメモリ・アクセスが必要か否かを調べ、
    必要ないと判断した場合には当該メモリ・アクセスをキ
    ャンセルすることを特徴とする請求項1のマルチプロセ
    ッサ。
  5. 【請求項5】 メモリ・アクセス要求をシステム・バス
    にブロードキャストしたシステム・コントローラは、シ
    ステム・バス上のキャッシュ状態を参照して、プロセッ
    サへの処理が必要なシステム・コントローラ又はリソー
    ス・メモリを制御するシステム・コントローラからのみ
    応答を待ち、関係のないシステム・コントローラからは
    応答を待たないことを特徴とする請求項1,請求項2,
    請求項3または請求項4マルチプロセッサ。
JP10301948A 1998-10-23 1998-10-23 マルチプロセッサ Pending JP2000132531A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP10301948A JP2000132531A (ja) 1998-10-23 1998-10-23 マルチプロセッサ

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP10301948A JP2000132531A (ja) 1998-10-23 1998-10-23 マルチプロセッサ

Publications (1)

Publication Number Publication Date
JP2000132531A true JP2000132531A (ja) 2000-05-12

Family

ID=17903047

Family Applications (1)

Application Number Title Priority Date Filing Date
JP10301948A Pending JP2000132531A (ja) 1998-10-23 1998-10-23 マルチプロセッサ

Country Status (1)

Country Link
JP (1) JP2000132531A (ja)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002533813A (ja) * 1998-12-21 2002-10-08 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド メモリキャンセルメッセージを用いたシステムメモリ帯域幅の節約およびキャッシュコヒーレンシ維持
JP2006048406A (ja) * 2004-08-05 2006-02-16 Fujitsu Ltd メモリシステム制御装置およびメモリシステム制御方法
JP2006072509A (ja) * 2004-08-31 2006-03-16 Fujitsu Ltd 情報処理装置及びローカルスヌープ制御方法
US7093078B2 (en) 1999-12-09 2006-08-15 Nec Corporation Data access method in the network system and the network system
JP2007183702A (ja) * 2006-01-04 2007-07-19 Hitachi Ltd キャッシュ一貫性制御方法およびチップセットおよびマルチプロセッサシステム
JP2007272922A (ja) * 2001-06-04 2007-10-18 Fujitsu Ltd 複数ノード間での通信方法、相互接続ポートおよび相互接続システム
JP2007535037A (ja) * 2004-04-27 2007-11-29 インテル・コーポレーション 効率的な2つのホップ・キャッシュ・コヒーレンシ・プロトコル
JP2010015572A (ja) * 2008-07-07 2010-01-21 Intel Corp 部分読出と非スヌープアクセスとの間のメモリ順序付け要件の充足
JP2011076159A (ja) * 2009-09-29 2011-04-14 Nec Computertechno Ltd キャッシュメモリ制御システム及びキャッシュメモリの制御方法
WO2011148482A1 (ja) * 2010-05-27 2011-12-01 富士通株式会社 情報処理システム及びシステムコントローラ

Cited By (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4718012B2 (ja) * 1998-12-21 2011-07-06 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド メモリキャンセルメッセージを用いたシステムメモリ帯域幅の節約およびキャッシュコヒーレンシ維持
JP2002533813A (ja) * 1998-12-21 2002-10-08 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド メモリキャンセルメッセージを用いたシステムメモリ帯域幅の節約およびキャッシュコヒーレンシ維持
US7093078B2 (en) 1999-12-09 2006-08-15 Nec Corporation Data access method in the network system and the network system
JP2013012235A (ja) * 2001-06-04 2013-01-17 Fujitsu Ltd 複数ノード間での通信方法、相互接続ポートおよび相互接続システム
JP2007272922A (ja) * 2001-06-04 2007-10-18 Fujitsu Ltd 複数ノード間での通信方法、相互接続ポートおよび相互接続システム
JP2010250863A (ja) * 2001-06-04 2010-11-04 Fujitsu Ltd 複数ノード間での通信方法、相互接続ポートおよび相互接続システム
JP4593594B2 (ja) * 2001-06-04 2010-12-08 富士通株式会社 複数ノード間での通信方法、相互接続ポートおよび相互接続システム
JP4789926B2 (ja) * 2004-04-27 2011-10-12 インテル・コーポレーション 効率的な2つのホップ・キャッシュ・コヒーレンシ・プロトコル
JP2007535037A (ja) * 2004-04-27 2007-11-29 インテル・コーポレーション 効率的な2つのホップ・キャッシュ・コヒーレンシ・プロトコル
JP4673585B2 (ja) * 2004-08-05 2011-04-20 富士通株式会社 メモリシステム制御装置およびメモリシステム制御方法
JP2006048406A (ja) * 2004-08-05 2006-02-16 Fujitsu Ltd メモリシステム制御装置およびメモリシステム制御方法
JP4695367B2 (ja) * 2004-08-31 2011-06-08 富士通株式会社 情報処理装置,制御装置及び情報処理装置の制御方法
JP2006072509A (ja) * 2004-08-31 2006-03-16 Fujitsu Ltd 情報処理装置及びローカルスヌープ制御方法
JP2007183702A (ja) * 2006-01-04 2007-07-19 Hitachi Ltd キャッシュ一貫性制御方法およびチップセットおよびマルチプロセッサシステム
JP2010015572A (ja) * 2008-07-07 2010-01-21 Intel Corp 部分読出と非スヌープアクセスとの間のメモリ順序付け要件の充足
US8250311B2 (en) 2008-07-07 2012-08-21 Intel Corporation Satisfying memory ordering requirements between partial reads and non-snoop accesses
US8694736B2 (en) 2008-07-07 2014-04-08 Intel Corporation Satisfying memory ordering requirements between partial reads and non-snoop accesses
US9058271B2 (en) 2008-07-07 2015-06-16 Intel Corporation Satisfying memory ordering requirements between partial reads and non-snoop accesses
US9703712B2 (en) 2008-07-07 2017-07-11 Intel Corporation Satisfying memory ordering requirements between partial reads and non-snoop accesses
US10019366B2 (en) 2008-07-07 2018-07-10 Intel Corporation Satisfying memory ordering requirements between partial reads and non-snoop accesses
JP2011076159A (ja) * 2009-09-29 2011-04-14 Nec Computertechno Ltd キャッシュメモリ制御システム及びキャッシュメモリの制御方法
WO2011148482A1 (ja) * 2010-05-27 2011-12-01 富士通株式会社 情報処理システム及びシステムコントローラ
JP5348320B2 (ja) * 2010-05-27 2013-11-20 富士通株式会社 情報処理システム及びシステムコントローラ
US8856457B2 (en) 2010-05-27 2014-10-07 Fujitsu Limited Information processing system and a system controller

Similar Documents

Publication Publication Date Title
JP3269967B2 (ja) キャッシュコヒーレンシ制御方法、および、これを用いたマルチプロセッサシステム
JP3317329B2 (ja) 逐次符号化スヌープ応答を使用してキャッシュの一貫性を保つ方法およびシステム
US7996625B2 (en) Method and apparatus for reducing memory latency in a cache coherent multi-node architecture
US7366847B2 (en) Distributed cache coherence at scalable requestor filter pipes that accumulate invalidation acknowledgements from other requestor filter pipes using ordering messages from central snoop tag
US5671391A (en) Coherent copyback protocol for multi-level cache memory systems
US5652859A (en) Method and apparatus for handling snoops in multiprocessor caches having internal buffer queues
US7600080B1 (en) Avoiding deadlocks in a multiprocessor system
US6260117B1 (en) Method for increasing efficiency in a multi-processor system and multi-processor system with increased efficiency
US20050188159A1 (en) Computer system supporting both dirty-shared and non dirty-shared data processing entities
US5559987A (en) Method and apparatus for updating a duplicate tag status in a snoop bus protocol based computer system
JPH07253928A (ja) 2重化キャッシュ・スヌープ機構
US5765196A (en) System and method for servicing copyback requests in a multiprocessor system with a shared memory
JP2006510119A (ja) マルチプロセッサ・システムにおけるキャッシュ・コヒーレンスにおいて用いるフォワード状態
US6785779B2 (en) Multi-level classification method for transaction address conflicts for ensuring efficient ordering in a two-level snoopy cache architecture
JPH10154100A (ja) 情報処理システム及び装置及びその制御方法
US7051163B2 (en) Directory structure permitting efficient write-backs in a shared memory computer system
US7533223B1 (en) System and method for handling memory requests in a multiprocessor shared memory system
US7024520B2 (en) System and method enabling efficient cache line reuse in a computer system
JP2000132531A (ja) マルチプロセッサ
JP3009430B2 (ja) プロセッサおよびそのキャッシュメモリ制御方法
US7000080B2 (en) Channel-based late race resolution mechanism for a computer system
US20040068619A1 (en) Linked-list early race resolution mechanism
US6055608A (en) Method and system for speculatively sourcing cache memory data within a multiprocessor data-processing system
US20040068613A1 (en) Retry-based late race resolution mechanism for a computer system
JP2003216597A (ja) マルチプロセッサシステム