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

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

Info

Publication number
JP2001282764A
JP2001282764A JP2000094780A JP2000094780A JP2001282764A JP 2001282764 A JP2001282764 A JP 2001282764A JP 2000094780 A JP2000094780 A JP 2000094780A JP 2000094780 A JP2000094780 A JP 2000094780A JP 2001282764 A JP2001282764 A JP 2001282764A
Authority
JP
Japan
Prior art keywords
memory
cache
node
copy
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
JP2000094780A
Other languages
English (en)
Inventor
Tatsuo Higuchi
達雄 樋口
Shinichi Kawamoto
真一 川本
Naoki Hamanaka
直樹 濱中
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 JP2000094780A priority Critical patent/JP2001282764A/ja
Priority to US09/820,948 priority patent/US6587922B2/en
Publication of JP2001282764A publication Critical patent/JP2001282764A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • G06F12/0835Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means for main memory peripheral accesses (e.g. I/O or DMA)
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0817Cache consistency protocols using directory methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements
    • G06F2212/621Coherency control relating to peripheral accessing, e.g. from DMA or I/O device

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

(57)【要約】 【課題】 I/O装置からのメモリアクセスに伴うキャ
ッシュメモリ一貫性制御のための放送を削減することが
できるマルチプロセッサシステムを提供する。 【解決手段】 マルチプロセッサシステムであって、排
他的なコピーを有するキャッシュメモリ識別子、または
排他的なコピーを有するキャッシュメモリがないことを
記録するオーナタグ32と、I/O装置のメモリライト
ブロック長を記録するブロック長テーブル34を設け、
I/O装置によるリード時に排他的なコピーが存在する
場合にはそれを保持するキャッシュ21とメモリ25に
リードリクエストを発行し、コピーが存在しないことが
記録されている場合にはメモリ25から直接読み出す。
またライト時にブロック長テーブル34にライトブロッ
ク長が記録されているときは、ブロック全体を一括して
キャッシュ21から無効化するリクエストを発行し、無
効化が終了した後メモリ25へ直接書き込む。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、複数のプロセッサ
を有し、1つ以上のプロセッサ毎にキャッシュメモリを
有するマルチプロセッサシステムにおいて、特にそれぞ
れのプロセッサを有する複数のノードがネットワークを
介してメモリを共有する共有メモリ型マルチプロセッサ
システムにおいて、キャッシュメモリの一貫性制御を行
うマルチプロセッサシステムの構成方法ならびにキャッ
シュ一貫性保証方法に適用して有効な技術に関する。
【0002】
【従来の技術】従来、トランザクション処理や大規模デ
ータベース処理など、共有リソースに対して複数の処理
要求を同時に多数処理するための計算機として、複数の
プロセッサがメモリ空間を共有するシンメトリカル・マ
ルチプロセッサ(以下、SMPと略する)が用いられる
ことが多い。一方、近年のプロセッサは動作周波数が高
速になったため、大容量ではあるが低速な素子であるD
RAMなどから構成される主記憶(以下、単にメモリと
呼ぶ)のアクセス時間による性能低下問題を解決するた
め、容量は少ないが高速なキャッシュメモリを有するプ
ロセッサが増えている。このようなキャッシュメモリを
有するプロセッサを複数用いて構成されるSMPでは、
キャッシュメモリ間の一貫性を保証しなければならな
い。たとえば、バス結合型SMPでは各プロセッサから
出されたメモリ参照要求を他の全プロセッサが監視し、
キャッシュメモリ間の一貫性を保証する方法が用いら
れ、これは「スヌープバス方式」と呼ばれる(参考文献
1:「Parallel Computer Arch
itecture」ISBN 1−55860−343
−3 第277頁〜第301頁参照)。
【0003】このスヌープバス方式においては、全ての
プロセッサからのメモリ参照リクエストがスヌープバス
を介してメモリへ送られるため、スヌープバスがシステ
ムのボトルネックとなる。そこで、各プロセッサからの
メモリアクセスに伴うスヌープバスへのリクエスト発行
回数を減らす方法として「ライトバック方式」が一般的
に用いられる。しかし、スヌープバス方式のSMPの性
能を向上させるためにプロセッサ数を増やそうとして
も、1つのバスに対する電気的な負荷が大きくなるため
最大プロセッサ数には限界がある。そこで、プロセッサ
数をさらに増やす方法として、バスに代わってクロスバ
スイッチなどにより各プロセッサを結合する「スイッチ
結合型のSMP」を用いることが多い。このスイッチ結
合型のSMPにおいては、「バスに出されたメモリ参照
リクエストを全てのプロセッサが監視する」というスヌ
ープバスの特長を継承するため、あるプロセッサからの
メモリ参照リクエストをクロスバスイッチにより全プロ
セッサへ放送する「スイッチ放送方式」を用いる(参考
文献2:「Parallel Computer Ar
chitecture」ISBN 1−55860−3
43−3 第555頁〜第556頁参照)。
【0004】一方、ディスク装置やネットワークインタ
ーフェイスのようなI/O装置とプロセッサはメモリを
共有することによりデータのやり取りを行う。たとえ
ば、ディスク装置からファイルを読み出す場合、プロセ
ッサは読み出したデータを格納するメモリ(バッファと
呼ぶ)のアドレスを指定してディスク装置にDMAライ
トを起動する。ディスク装置はディスクに記録されたフ
ァイルを読み出し、指定されたバッファにデータを書き
込む。このとき、もしもディスク装置からのデータ書き
込みに関してプロセッサキャッシュの一貫性保証を行わ
ない場合、ディスク装置によりメモリの内容が更新され
ているにもかかわらず、プロセッサはキャッシュメモリ
にある古いデータを参照してしまう。この問題を解決す
る方法としては例えば、上述した「スヌープバス方式」
をI/O装置からのメモリアクセスに関しても適用する
「スヌープ型コヒーレントI/O方式」や、プロセッサ
がI/O装置に対してDMA起動する前に、明示的にプ
ロセッサキャッシュの内容をフラッシュする「明示的フ
ラッシュ方式」などが用いられる(参考文献3:米国特
許第4,713,755 「Cache Memory
Consistency Control with
Explicit Software Instru
ctions」参照)。
【0005】
【発明が解決しようとする課題】しかしながら、前記の
ようなスイッチ放送方式のSMPにおいて、スヌープ型
コヒーレントI/O方式を適用する場合には次の問題が
生じることが考えられる。スイッチ放送方式においては
全てのプロセッサのキャッシュ一貫性を保証するため
に、I/O装置からのメモリ参照リクエストをスイッチ
により全プロセッサに放送しなければならない。ところ
が、このI/O装置のメモリ参照リクエストによる放送
はプロセッサのメモリ参照リクエストの邪魔をするた
め、プロセッサのメモリ参照の遅れをもたらし、全体性
能が低下する恐れがある。また、この放送により全プロ
セッサのキャッシュの一貫性保証チェックを行うことに
よりキャッシュがビジーになり、プロセッサからのキャ
ッシュアクセスを阻害し、キャッシュアクセスレイテン
シが増大する恐れがある。
【0006】また、「明示的フラッシュ方式」を適用す
る場合には次の問題が生じることが考えられる。明示的
フラッシュ方式は、「I/O装置がアクセスするバッフ
ァ領域はプロセッサからDMA起動を行う前に確定す
る」という特徴を利用し、予めバッファ領域のコピーが
全てのキャッシュにないことを保証するために、このバ
ッファ領域についてのみフラッシュ要求を全プロセッサ
へスイッチを介して放送する。フラッシュ要求を受け取
ったプロセッサでは、もしもキャッシュの状態が「更新
済」であった場合は、キャッシュの内容が最新であるた
めメモリへ最新の内容を書き戻すとともにキャッシュを
「無効」にし、「更新済」でなければ単に「無効化」す
る。これにより、I/O装置からのDMAアクセスに関
してはキャッシュの一貫性保証のために放送する必要が
なくなる。しかし、本方式では明示的フラッシュとI/
O装置によるメモリアクセスを逐次的に実行しなければ
ならない。このため、例えばファイルアクセス時間が伸
び、システム性能が低下する恐れがある。
【0007】そこで、本発明の目的は、I/O装置から
のメモリアクセスに関するキャッシュ一貫性制御のため
の放送を削減し、高速なI/O処理を実現することがで
きるマルチプロセッサシステムを提供することである。
この目的を達成するために、本発明の第1の課題は、I
/O装置からのメモリリードリクエストに関するキャッ
シュ一貫性制御のための放送を削減することである。さ
らに本発明の第2の課題は、I/O装置からのメモリラ
イトリクエストに関するキャッシュ一貫性保証のための
放送を削減することである。
【0008】本発明の前記ならびにその他の目的と新規
な特徴は、本明細書の記述および添付図面から明らかに
なるであろう。
【0009】
【課題を解決するための手段】本願において開示される
発明のうち、代表的なものの概要を簡単に説明すれば、
次のとおりである。
【0010】すなわち、第1の課題を解決するために本
発明のマルチプロセッサシステムは、キャッシュ可能な
メモリロケーションのコピーを排他的に保持するキャッ
シュメモリの識別子、または排他的なコピーを持つキャ
ッシュメモリがないことを記録する第1の手段を有し、
プロセッサもしくはI/O装置がキャッシュ可能なメモ
リロケーションAに対してリードリクエストを発行する
際に、第1の手段により、メモリロケーションAの排他
的なコピーを保持するキャッシュメモリ識別子が記録さ
れているときには、このキャッシュメモリのみに「更新
済」のコピーがあるかどうかを確認するメッセージを転
送し、このキャッシュメモリが「更新済」コピーを持っ
ている場合にはこのキャッシュメモリからデータを供給
し、「更新済」コピーを持っていない場合にはメモリか
らデータを読み出し、メモリロケーションAの排他的な
コピーを保持するキャッシュメモリはないことが記録さ
れているときには、直接メモリからデータを読み出し、
これら以外の場合には全てのキャッシュメモリに「更新
済」のコピーがあるかどうかを確認するメッセージを転
送し、「更新済」コピーを持っているキャッシュメモリ
がある場合にはこのキャッシュメモリからデータを供給
し、「更新済」コピーを持っているキャッシュメモリが
ない場合にはメモリからデータを供給することを特徴と
するものである。
【0011】また、第2の課題を解決するために本発明
のマルチプロセッサシステムは、I/O装置のメモリへ
の書き込み単位をI/O装置毎に記録する第1の手段を
有し、I/O装置が複数のキャッシュラインを含むメモ
リブロックに対してメモリ書き込みを行うときに、第1
の手段にI/O装置のメモリ書き込み単位が記録されて
いるかどうかを調べ、メモリ書き込み単位が記録されて
いた場合には、全てのキャッシュメモリに対してメモリ
ブロックの先頭アドレスから第1の手段に記録されてい
る書き込み単位で示される連続領域に関して、キャッシ
ュメモリを無効化するリクエストを放送し、キャッシュ
メモリの無効化リクエストを受信したキャッシュメモリ
は連続領域に対応するコピーを保持する場合にはこれら
を無効化し、全てのキャッシュメモリの無効化が終了し
た後に、メモリブロックに対するデータをメモリへ直接
書き込むことを特徴とするものである。
【0012】
【発明の実施の形態】以下、本発明にかかわるマルチプ
ロセッサシステムの実施の形態を図面に基づいて詳細に
説明する。なお、実施の形態を説明するための全図にお
いて、同じ参照番号は同じものもしくは類似のものを表
わすものとする。
【0013】図1に本実施の形態の一例によるマルチプ
ロセッサシステムを示す。このマルチプロセッサシステ
ムでは、複数のノード1,2,3はノード間スイッチ1
0により結合され、各ノード1,2,3は、少なくとも
1つのプロセッサ20と、そのプロセッサが最近アクセ
スしたメモリのコピーを保持するキャッシュ(=キャッ
シュメモリ)21と、全プロセッサにより共有されるメ
モリ25と、I/O装置50を含んでいる。なお、この
マルチプロセッサシステムでは、全てのノードは同じ構
成をとり、同一の処理を行うことができるが、本実施の
形態では説明を分かり易くするために図1において、ノ
ード#0を要求元ノード、ノード#mを要求先ノード、
ノード#nを応答ノードと位置付ける。そして、以下で
はノード#0にあるI/O処理装置がノード#nに割り
当てられたバッファ60をリードアクセスまたはライト
アクセスする際に、ノード#nがこのバッファ60のコ
ピー70をキャッシュ21に保持している場合について
主に説明する。
【0014】本実施の形態では、ノード#0のI/O装
置50からのバッファ60に対するDMAリード時に、
「更新済」のコピー70を持っているキャッシュ21、
ここではノード#nのプロセッサ20を特定できる場合
にはリードリクエストを全プロセッサに放送する代わり
にノード#nとノード#mのメモリ25にのみ送ること
が第1の特徴である。そして、ノード#0のI/O装置
50からバッファ60に対するDMAライト時に、全て
のプロセッサのキャッシュにあるバッファ60のコピー
70を、1回のDMAライトリクエストで一括して無効
化することが第2の特徴である。これら2つのためにノ
ード1にはI/O装置50がDMAリードアクセスする
際に、バッファ60に関して、ある時点においてどのキ
ャッシュが「更新済」のコピーを持っているかを管理す
るオーナタグ制御回路31と、オーナタグ32の状態に
応じてDMAリードリクエストを全プロセッサに放送す
るかどうかを判定する宛先制御回路30が設けられてい
る。また、ノード1には、I/O装置50がDMAライ
トアクセスする際に、このI/O装置50のDMAアク
セス単位(ブロック長)が固定されている場合に、この
ブロック長を管理するブロック長テーブル34と、ブロ
ック長テーブルにより求められたブロック長を含めたメ
ッセージ11を構成するメッセージ生成回路28が設け
られている。さらにノード1には、ブロック長を指定さ
れたメッセージ11を受信した際に、このメッセージ1
1に指定された先頭アドレスからブロック長で指定され
る連続領域に対して、キャッシュ21の無効化リクエス
トをプロセッサバス22に発行するキャッシュ無効化リ
クエスト回路80が設けられている。
【0015】以下、本実施の形態の回路とその動作の詳
細を説明する。
【0016】(ノード1)図1に示すように各ノード1
は、ユーザプログラムやオペレーティングシステムを実
行する複数のプロセッサ20と、メモリ25と、複数の
I/O装置50と、他のノードに対するアクセスリクエ
ストメッセージ11を生成するメッセージ生成回路28
と、他のノードから送られてきたメッセージ11を受信
するメッセージ受信回路29とから構成される。このマ
ルチプロセッサシステムは、いわゆる物理分散論理共有
メモリ型の並列計算機であり、メモリ25は全てのノー
ドからアクセス可能である。本実施の形態では各プロセ
ッサが実行するプログラムやオペレーティングシステム
などが格納される。さらに、要求先ノードでは、I/O
装置50とオペレーティングシステムの間でデータのや
り取りを行うバッファ60を格納する。
【0017】また、プロセッサ20にはこのプロセッサ
20が最近アクセスしたメモリのコピーを格納するキャ
ッシュ21が接続され、さらにプロセッサバス22を介
してメモリ25やI/O装置50をアクセスすることが
できる。プロセッサバス制御回路23は、プロセッサバ
ス22に発行されたプロセッサ20によるメモリ参照リ
クエストをメッセージ生成回路28を介して全ノードへ
放送する。そしてプロセッサバス制御回路23には、さ
らにメッセージ受信回路29から受信したメッセージ1
1がメモリ参照リクエストであった場合、このリクエス
トに指定されたデータのコピーをキャッシュが保持して
いるかどうかを調べるため、プロセッサバス22に対し
てスヌープリクエストを発行するキャッシュ無効化リク
エスト回路80がある。
【0018】一方、I/O装置50はI/Oバス27に
接続され、I/Oバス制御回路26を介してメモリ25
をアクセスすることができる。また、各I/O装置50
はメモリマップドI/O方法により、各プロセッサ20
からロード命令やストア命令などのメモリアクセス命令
でメモリ25と区別することなくアクセスすることがで
きる。
【0019】メッセージ生成回路28はプロセッサ20
からのメモリ参照リクエストや、I/O装置50からの
メモリ参照リクエストにより、メッセージ11を組み立
てノード間スイッチ10へ送出する。
【0020】メッセージ受信回路29はノード間スイッ
チ10からメッセージ11を受け取り、このメッセージ
11に指定されたコマンドCmdフィールドと対象アド
レスAdrフィールドに応じて、対象アドレスがメモリ
だった場合には、メモリ制御回路24にメモリ参照リク
エストを発行し、プロセッサバス制御回路23に対して
キャッシュ一貫性保証リクエストを発行する。もしも対
象アドレスがI/O装置50であった場合、I/Oバス
制御装置に対してI/O装置参照リクエストを発行す
る。ただし、このマルチプロセッサシステムではI/O
装置に割り当てられたメモリ領域に関しては、キャッシ
ュ21はコピーを持たないことを前提としている。
【0021】なお、本実施の形態ではメモリ25が各ノ
ードに分散されている例を示しているが、1つのノード
に集中的に配置されていたり、プロセッサ20やI/O
装置50を持たず、メモリのみを持つノードがあること
を妨げはしない(図3参照)。また、I/O装置50が
各ノードに分散されている例を示しているが、I/O装
置が1つのノードに集中的に配置されていたり、プロセ
ッサ20やメモリ25を含まないノードがあることを妨
げはしない(図4参照)。
【0022】(ノード間スイッチ10)ノード間スイッ
チ10は、形態は特に規定しないがメッセージ11に指
定された宛先とBCフィールドにより次の3つの機能を
有する。まず、BCが1の場合、メッセージ11を全て
のノードに転送する。この場合宛先ID0ならびに宛先
ID1は参照しない。BCが0の場合であって、宛先I
D0のみが指定された場合、メッセージ11を宛先ID
0で指定されたノードにのみ転送する。BCが0の場合
であって、宛先ID0と宛先ID1の両方が指定された
場合、メッセージ1を宛先ID0と宛先ID1で指定さ
れる2つのノードに転送する。
【0023】以下では、ノード#0にあるI/O装置5
0がノード#mに確保されたバッファ60をDMAリー
ドもしくはDMAライトする手順を説明する。
【0024】(バッファ60の初期化)オペレーティン
グシステムはシステムの起動時に各I/O装置50毎
に、このI/O装置とのデータのやり取りを行うバッフ
ァ60をメモリ25に確保する。一般的に、I/O装置
50とオペレーティングシステムの間でデータのやり取
りを行うためのバッファ60はスワップアウトの対象に
することができないため、システムの起動時に物理メモ
リ上に固定的に確保され、この場所が変更されることは
希である。
【0025】(オーナタグ制御回路31の初期化)メモ
リ25上に確保したバッファ60の先頭アドレスと大き
さをレンジレジスタ33(Rngと略する)に設定す
る。そして、オーナタグ32のエントリが有効であるこ
とを示すビットVを全て0クリアする。この段階では、
バッファ60のコピーは如何なるキャッシュ21にも存
在していない。これは、従来技術によりキャッシュ21
を無効にするなどにより簡単に実現できる。
【0026】しかし、もしもI/O装置50とオペレー
ティングシステムの間でのデータのやり取りに使用する
バッファ60を固定的に確保することができない場合
は、レンジレジスタ33に無効を示す値を指定する。こ
れにより、I/O装置50からのメモリ参照アクセスに
関してオーナタグ32が無効になり、従来と同様にノー
ド間スイッチ10を介して全てのノードにメモリ参照リ
クエストが放送される。
【0027】(ブロック長テーブル34の初期化)ブロ
ック長テーブル34には各I/O装置50毎に、そのI
/O装置50のIDをDIDに指定し、バッファ60の
先頭アドレスと大きさをRngフィールドに指定する。
次に、このI/O装置50のDMAアクセス単位をブロ
ック長Blnフィールドに設定する。一般的に、各I/
O装置50はI/O装置の特徴に応じて、例えばI/O
装置50がディスク装置である場合は、ディスクのアク
セス単位など、性能を最大限に引き出すためのメモリア
クセスの最適値が存在し、システムの起動時パラメータ
としてオペレーティングシステムが使用する。
【0028】しかし、前述したようにこのI/O装置5
0がアクセスするバッファ60を固定的にメモリ25上
に確保できない場合、またはI/O装置50のアクセス
単位がアクセス毎に異なる場合には、このI/O装置5
0に対してはブロック長テーブル34にエントリを登録
しない。これにより、このようなI/O装置50に関し
てブロック長テーブル34は無効になり、従来と同様に
このI/O装置50から発行されたメモリ参照リクエス
トはノード間スイッチ10を介して全ノードに放送され
る。
【0029】本実施の形態によるマルチプロセッサシス
テムでは、バッファ60に対するアクセスのみに特徴が
あり、この領域以外のアクセスに関しては従来と変わら
ない。そこで、まずプロセッサからのバッファ60に対
するアクセスを以下のように分類し、それぞれの動作を
詳細に説明する。なお、本実施の形態によるマルチプロ
セッサシステムにおいてはキャッシュのコヒーレンス管
理プロトコルとして「MESIプロトコル」を用いてい
る。MESIプロトコルとはある対象アドレスに対する
キャッシュの状態を次の4状態で管理する方法で一般的
に用いられる。
【0030】M状態:システム中の唯一つのキャッシュ
に「更新済」のコピーを持つ状態、 E状態:システム中の唯一つのキャッシュに「更新未」
のコピーを排他的に持つ状態、 S状態:1つ以上のキャッシュに「更新未」のコピーを
持つ状態、 I状態:キャッシュにコピーが存在しない状態。
【0031】1.バッファ60に対するプロセッサ20
のロード命令 1.1 どのキャッシュ21も対象アドレスのコピーを
保持していない場合、 1.2 あるキャッシュ21の対象アドレスのコピーが
EまたはM状態の場合、 1.3 1つ以上のキャッシュ21の対象アドレスのコ
ピーがS状態の場合。
【0032】2.バッファ60に対するプロセッサ20
のストア命令 2.1 どのキャッシュ21も対象アドレスのコピーを
保持していない場合、 2.2 あるキャッシュ21の対象アドレスのコピーが
EまたはM状態の場合、 2.3 1つ以上のキャッシュ21の対象アドレスのコ
ピーがS状態の場合。
【0033】(1.バッファ60に対するプロセッサ2
0のロード命令) 1.1 どのキャッシュ21も対象アドレスのコピーを
保持していない場合プロセッサ20はバッファ60を表
すアドレスに対してロード命令を発行する。この場合、
キャッシュ21にはこのアドレスに対するコピーは存在
しない状態(I状態)であるため、プロセッサバス22
にリードリクエストが発行される。プロセッサバス制御
回路23はリードリクエストが発行されると、メッセー
ジ生成回路28に対してリードリクエストを全ノードに
放送するように指示する。メッセージ生成回路28は、
BCビットを1にセットし、Cmdフィールドには「プ
ロセッサによるメモリリード」をセットし、宛先ID0
ならびに宛先ID1を無効化してメッセージ11を構成
し、これをノード間スイッチ10に送出する。ノード間
スイッチ10はメッセージ11のBCビットが1である
ことから、このメッセージ11を全ノードへ放送する。
各ノード1ではこのメッセージ11をメッセージ受信回
路29が受信し、Cmdフィールドが「プロセッサによ
るメモリリード」であることが分かると、次の3つの処
理を行う。
【0034】(キャッシュ状態の報告処理)各ノードの
キャッシュ21にこのアドレスのコピーが存在している
かどうかを判定するために、プロセッサバス制御回路2
3はプロセッサバス22に対してキャッシュチェックリ
クエストを発行する。キャッシュはプロセッサバス22
を監視しており、このリクエストに基づきコピーの状態
をチェックする。本ケースでは如何なるキャッシュにも
コピーが存在しないため、如何なるキャッシュもコピー
を保持していない旨、プロセッサバス制御回路23へ報
告する。プロセッサバス制御回路23はメッセージ制御
回路28を介してノード間スイッチ10へこのノード1
にはコピーが存在しないことを報告する。ノード間スイ
ッチ10はこの報告を全ノードへ放送する。本ケースで
は如何なるノードのキャッシュ21にもコピーが存在し
ないため、リクエストを発行したノード#nのキャッシ
ュ21のコピー70はE状態に遷移する。これは、ME
SI型のスヌープバスで用いられる一般的な方法で簡単
に実現されるため、詳細には説明しない。
【0035】(メモリのアクセス)メモリ制御回路24
はメッセージ11のAdrフィールドで指定されたアド
レスが自分のメモリ24を指している場合にのみ次の動
作を行う。ここでは、ノード#mのメモリ制御回路24
のみが行う。本ケースではどのノードにも「更新済」の
コピーが存在しないため、メモリ24を読み出し、その
データをメッセージ生成回路28とノード間スイッチ1
0を介してノード#nに送り返す。リクエストを発行し
たノード#nではこのデータをメッセージ受信回路29
が受け取り、プロセッサバス制御回路23がプロセッサ
バス22に出力することにより、キャッシュ21にコピ
ー70として書き込む。これにより、プロセッサ20は
リードデータを利用することができる。
【0036】(オーナタグ32の更新)オーナタグ制御
回路31はメッセージ11のAdrフィールドで指定さ
れたアドレスとレンジレジスタ33を比較し、バッファ
60に対するアクセスであることが分かるため次の処理
を行う。メッセージ11のAdrフィールドをインデッ
クスとしてオーナタグ32をチェックして、エントリが
存在していない場合にはエントリを確保し、エントリが
存在している場合にはそのエントリに対して次のように
設定する。エントリが有効であることを示すVビットに
1をセットし、Adrフィールドにはメッセージ11の
Adrフィールドをコピーし、メモリがオーナであるこ
とを示すMビットに0をセットし、どのキャッシュがオ
ーナであるかを示すIDフィールドにノード#nのノー
ド識別子を示す。本実施の形態ではノード内のキャッシ
ュ21はプロセッサバス22により一括してヒットチェ
ックを行うため、ここではノード#nのみを設定する。
もしも、ノード内のキャッシュがスイッチにより結合さ
れ、各キャッシュのヒットチェックを独立して行うこと
ができる場合は、ノード番号リクエストを発行したキャ
ッシュの識別子を付加してもよい。
【0037】1.2 あるキャッシュ21の対象アドレ
スのコピーがEまたはM状態の場合リードリクエストを
発行するプロセッサ20のキャッシュ21がEまたはM
状態のときにはキャッシュがヒットするためプロセッサ
バス22には何も出力されない。そこで、リクエストを
発行するプロセッサ20のキャッシュ21以外がEまた
はM状態の場合の動作を説明する。1.1と同様にプロ
セッサバス制御回路23ならびにノード間スイッチ10
を介して、「プロセッサによるメモリリード」リクエス
トを全ノードに放送する。そして1.1と同様に各ノー
ドでは次の3つの処理を行う。
【0038】(キャッシュ状態の報告)キャッシュ21
の状態がEまたはM状態以外のノードでは1.1で説明
したようにノード間スイッチ10を介して「ノード内に
コピーが存在しないこと」を全ノードに対して報告す
る。
【0039】キャッシュ21の状態がE状態の場合、こ
のキャッシュの状態をSに遷移し、メッセージ生成回路
28ならびにノード間スイッチ10を介して、「更新
未」のコピーを保持している旨を全ノードに報告する。
リクエストを発行したノード#nでは「更新未」のコピ
ーを保持している報告をメッセージ受信回路29が受け
付けると、プロセッサバス制御回路23を介してキャッ
シュ21に対して「更新未」のコピーが存在する旨を報
告する。これにより、キャッシュ21のコピー70はS
状態に遷移する。これは、MESI型のスヌープバスで
一般的に用いられる方法で簡単に実現されるため、ここ
では詳細に説明しない。
【0040】一方、キャッシュ21の状態がM状態の場
合、このキャッシュの状態をI状態に遷移し、メッセー
ジ生成回路28ならびにノード間スイッチ10を介し
て、「更新済」のコピーを持っている旨、全ノードに報
告する。そして「更新済」のコピーをメッセージ生成回
路28ならびにノード間スイッチ10を介して、バッフ
ァ60が確保されているメモリ25に書き戻すととも
に、リクエストを発行したノード#nに送り付ける。ノ
ード#nでは「更新済」のコピーを持っている報告を受
け取ると、キャッシュ21をE状態に遷移させ、ノード
間スイッチ10を介して送られてきた「更新済」のコピ
ーをキャッシュ21へ書き込む。これにより、プロセッ
サ20はリードデータを利用することができる。
【0041】(メモリのアクセス)1.1と同様であ
る。ただし、「更新済」のコピーを持つノードがある場
合にはメモリに対するリードアクセスを行わない。
【0042】(オーナタグ32の更新)オーナタグ制御
回路31はメッセージ11のAdrフィールドで指定さ
れたアドレスとレンジレジスタ33を比較し、バッファ
60に対するアクセスであることが分かるため次の処理
を行う。メッセージ11のAdrフィールドをインデッ
クスとしてオーナタグ32をチェックして、エントリが
存在していない場合にはエントリを確保する。エントリ
が存在している場合は次の2つの場合が有り得る。
【0043】あるキャッシュがE状態である場合には
1.1で示したようにこのエントリのVビットには1が
セットされ、Adrフィールドにはメッセージ11のA
drフィールドがセットされ、Mビットには0がセット
され、IDフィールドにはE状態のキャッシュ21が存
在するノード識別子がセットされている。そこで、エン
トリが存在している場合には存在するエントリに対して
次のように設定し、エントリが存在しない場合には新た
に確保したエントリに対して次のように設定する。エン
トリが有効であることを示すVビットに1をセットし、
Adrフィールドにはメッセージ11のAdrフィール
ドをコピーし、メモリがオーナであることを示すMビッ
トに1をセットし、どのキャッシュがオーナであるかを
示すIDフィールドを無効にする。
【0044】一方、あるキャッシュの状態がM状態であ
る場合については、2.1から2.3で説明するがE状
態と同じように設定されている。そこで、エントリが存
在している場合にはそのエントリに対して次のように設
定し、新たにエントリを作成した場合にはそのエントリ
に次のように設定する。エントリが有効であることを示
すVビットに1をセットし、Adrフィールドにはメッ
セージ11のAdrフィールドをコピーし、メモリがオ
ーナであることを示すMビットに0をセットし、どのキ
ャッシュがオーナであるかを示すIDフィールドにノー
ド#nのノード識別子を示す。本実施の形態ではノード
内のキャッシュ21はプロセッサバス22により一括し
てヒットチェックを行うため、ここではノード#nのみ
を設定する。もしも、ノード内のキャッシュがスイッチ
により結合され、各キャッシュのヒットチェックを独立
して行うことができる場合は、ノード番号リクエストを
発行したキャッシュの識別子を付加してもよい。
【0045】1.3 1つ以上のキャッシュ21の対象
アドレスのコピーがS状態の場合リードリクエストを発
行するプロセッサ20のキャッシュ21がS状態のとき
にはキャッシュがヒットするためプロセッサバス22に
は何も出力されない。そこで、リクエストを発行するプ
ロセッサ20のキャッシュ21以外がS状態の場合の動
作を説明する。1.1と同様にプロセッサバス制御回路
23ならびにノード間スイッチ10を介して、「プロセ
ッサによるメモリリード」リクエストを全ノードに放送
する。そして、1.1と同様に各ノードでは次の3つの
処理を行う。
【0046】(キャッシュ状態の報告処理)キャッシュ
21がS状態以外のノードでは1.1で説明したように
ノード間スイッチ10を介して「ノード内にコピーが存
在しないこと」を全ノードに対して報告する。
【0047】キャッシュ21がS状態の場合、メッセー
ジ生成回路28ならびにノード間スイッチ10を介し
て、「更新未」のコピーを保持している旨を全ノードに
報告する。リクエストを発行したノード#nでは「更新
未」のコピーを保持している報告をメッセージ受信回路
29が受け付けると、プロセッサバス制御回路23を介
してキャッシュ21に対して「更新未」のコピーが存在
する旨を報告する。これにより、キャッシュ21のコピ
ー70はS状態に遷移する。これは、MESI型のスヌ
ープバスで一般的に用いられる方法で簡単に実現される
ため、ここでは詳細に説明しない。
【0048】(メモリのアクセス)1.1と同様であ
る。本ケースでは「更新済」のコピーを持つキャッシュ
は存在しないため、リクエストノードは必ずメモリ25
からデータを受け取る。
【0049】(オーナタグ32の更新)オーナタグ制御
回路31はメッセージ11のAdrフィールドで指定さ
れたアドレスとレンジレジスタ33を比較し、バッファ
60に対するアクセスであることが分かるため次の処理
を行う。メッセージ11のAdrフィールドをインデッ
クスとしてオーナタグ32をチェックする。エントリが
存在する場合には、1.2のE状態におけるオーナタグ
32の更新で示した通り、Vビットに1がセットされ、
Adrフィールドにはメッセージ11のAdrフィール
ドが設定され、Mビットに1がセットされ、IDフィー
ルドは無効になっている。そこで、この状態を変更しな
い。一方、エントリが存在しない場合には、新たにエン
トリを確保して次のように設定する。すなわち、Vビッ
トに1がセットし、Adrフィールドにはメッセージ1
1のAdrフィールドをコピーし、Mビットに1をセッ
トし、IDフィールドを無効にする。
【0050】(2.バッファ60に対するプロセッサ2
0のストア命令)本実施の形態ではMESIプロトコル
を使用しているため、プロセッサのストア命令に対して
キャッシュにコピーを持ってきた上で、このコピーを更
新する「ライトバック型」を前提に説明する。
【0051】2.1 どのキャッシュ21も対象アドレ
スのコピーを保持していない場合ここでは、ノード#n
のプロセッサ20がバッファ60をストアする場合につ
いて説明する。プロセッサ20はバッファ60を表すア
ドレスに対してストア命令を発行する。この場合、キャ
ッシュ21にはこのアドレスに対するコピーは存在しな
い状態(I状態)であるため、プロセッサバス22にオ
ーナリクエストが発行される。オーナリクエストはシス
テム全体に対してこのアドレスの所有権を確保すると共
にデータをキャッシュにコピーするリクエストであり、
MESIプロトコルでは一般的に用いられる。プロセッ
サバス制御回路23はオーナリクエストが発行される
と、メッセージ生成回路28に対してオーナリクエスト
を全ノードに放送するように指示する。メッセージ生成
回路28は、BCビットを1にセットし、Cmdフィー
ルドには「プロセッサによるメモリオーナリクエスト」
をセットし、宛先ID0ならびに宛先ID1を無効にし
たメッセージ11を構成し、これをノード間スイッチ1
0に送出する。ノード間スイッチ10はメッセージ11
のBCビットが1であることから、このメッセージ11
を全ノードへ放送する。各ノード1ではこのメッセージ
11をメッセージ受信回路29が受信し、Cmdフィー
ルドが「プロセッサによるメモリオーナリクエスト」で
あることが分かると、次の3つの処理を行う。
【0052】(キャッシュ状態の報告処理)各ノードの
キャッシュ21にこのアドレスのコピーが存在している
かどうかを判定するために、プロセッサバス制御回路2
3内のキャッシュ無効化リクエスト回路80はプロセッ
サバス22に対してキャッシュ無効化リクエストを発行
する。キャッシュ21はプロセッサバス22を監視して
おり、このリクエストに基づきコピーの状態をチェック
する。本ケースでは如何なるキャッシュにもコピーが存
在しないため、如何なるキャッシュもコピーを保持して
いない旨、プロセッサバス制御回路23へ報告する。キ
ャッシュ無効化リクエスト回路80はメッセージ制御回
路28を介してノード間スイッチ10へこのノード1に
はコピーが存在しないことを報告する。ノード間スイッ
チ10はこの報告を全ノードへ放送する。本ケースでは
如何なるノードのキャッシュ21にもコピーが存在しな
いため、リクエストを発行したノード#nのキャッシュ
21のコピー70はE状態に一時的に遷移する。MES
I型のスヌープバスで用いられる一般的な方法で簡単に
実現されるため、詳細には説明しない。
【0053】(メモリのアクセス)メモリ制御回路24
はメッセージ11のAdrフィールドで指定されたアド
レスが自分のメモリ24を指している場合にのみ次の動
作を行う。ここでは、ノード#mのメモリ制御回路24
のみが行う。本ケースではどのノードにも「更新済」の
コピーが存在しないため、メモリ24を読み出し、その
データをメッセージ生成回路28とノード間スイッチ1
0を介してノード#nに送り返す。リクエストを発行し
たノード#nではこのデータをメッセージ受信回路29
が受け取り、プロセッサバス制御回路23がプロセッサ
バス22に出力することにより、キャッシュ21にコピ
ー70として書き込む。これにより、プロセッサ20は
ライトデータをコピーに上書きして、コピーの状態をM
状態に遷移する。
【0054】(オーナタグ32の更新)オーナタグ制御
回路31はメッセージ11のAdrフィールドで指定さ
れたアドレスとレンジレジスタ33を比較し、バッファ
60に対するアクセスであることが分かるため次の処理
を行う。メッセージ11のAdrフィールドをインデッ
クスとしてオーナタグ32をチェックして、エントリが
存在していない場合にはエントリを確保し、エントリが
存在している場合にはそのエントリに対して次のように
設定する。エントリが有効であることを示すVビットに
1をセットし、Adrフィールドにはメッセージ11の
Adrフィールドをコピーし、メモリがオーナであるこ
とを示すMに0をセットし、どのキャッシュがオーナで
あるかを示すIDフィールドにノード#nのノード識別
子を示す。本実施の形態ではノード内のキャッシュ21
はプロセッサバス22により一括してヒットチェックを
行うため、ここではノード#nのみを設定する。もし
も、ノード内のキャッシュがスイッチにより結合され、
各キャッシュのヒットチェックを独立して行うことがで
きる場合は、ノード番号リクエストを発行したキャッシ
ュの識別子を付加してもよい。
【0055】2.2 あるキャッシュ21の対象アドレ
スのコピーがEまたはM状態の場合ライトリクエストを
発行するプロセッサ20のキャッシュ21がEまたはM
状態のときにはキャッシュがヒットし、すでにオーナで
あるためプロセッサバス22には何も出力されない。そ
こで、リクエストを発行するプロセッサ20のキャッシ
ュ21以外がEまたはM状態の場合の動作を説明する。
2.1と同様にプロセッサバス制御回路23ならびにノ
ード間スイッチ10を介して、「プロセッサによるメモ
リオーナリクエスト」を全ノードに放送する。そして、
2.1と同様に各ノードでは次の3つの処理を行う。
【0056】(キャッシュ状態の報告)キャッシュ21
の状態がEまたはM状態以外のノードでは2.1で説明
したようにノード間スイッチ10を介して「ノード内に
コピーが存在しないこと」を全ノードに対して報告す
る。
【0057】キャッシュ21の状態がE状態の場合、こ
のキャッシュをI状態に遷移し、ノード間スイッチ10
を介して「ノード内にコピーが存在しないこと」を全ノ
ードに対して報告する。
【0058】一方、キャッシュ21の状態がM状態の場
合、このキャッシュをI状態に遷移し、メッセージ生成
回路28ならびにノード間スイッチ10を介して、「更
新済」のコピーを持っている旨、全ノードに報告する。
そして、「更新済」のコピーをメッセージ生成回路28
ならびにノード間スイッチ10を介して、バッファ60
が確保されているメモリ25に書き戻すとともに、リク
エストを発行したノード#nに送り付ける。ノード#n
では「更新済」のコピーを持っている報告を受け取る
と、キャッシュ21をE状態に遷移させ、ノード間スイ
ッチ10を介して送られてきた「更新済」のコピーをキ
ャッシュ21へ書き込む。これにより、プロセッサ20
はストアデータを上書きして、キャッシュをM状態に遷
移させる。
【0059】(メモリのアクセス)2.1と同様であ
る。ただし、「更新済」のコピーを持つノードがある場
合にはメモリに対するリードアクセスを行わない。
【0060】(オーナタグ32の更新)オーナタグ制御
回路31はメッセージ11のAdrフィールドで指定さ
れたアドレスとレンジレジスタ33を比較し、バッファ
60に対するアクセスであることが分かるため次の処理
を行う。メッセージ11のAdrフィールドをインデッ
クスとしてオーナタグ32をチェックして、エントリが
存在していない場合にはエントリを確保する。エントリ
が存在している場合は次の2つの場合が有り得る。
【0061】あるキャッシュがE状態である場合には
1.1で示したようにこのエントリのVビットには1が
セットされ、Adrフィールドにはメッセージ11のA
drフィールドがセットされ、Mビットには0がセット
され、IDフィールドにはE状態のキャッシュ20が存
在するノード識別子がセットされている。そこで、エン
トリが存在している場合には存在するエントリに対して
次のように設定し、エントリが存在しない場合には新た
に確保したエントリに対して次のように設定する。エン
トリが有効であることを示すVビットに1をセットし、
Adrフィールドにはメッセージ11のAdrフィール
ドをコピーし、メモリがオーナであることを示すMビッ
トに0をセットし、どのキャッシュがオーナであるかを
示すIDフィールドにノード#nのノード識別子を示
す。本実施の形態ではノード内のキャッシュ21はプロ
セッサバス22により一括してヒットチェックを行うた
め、ここではノード#nのみを設定する。もしも、ノー
ド内のキャッシュがスイッチにより結合され、各キャッ
シュのヒットチェックを独立して行うことができる場合
は、ノード番号リクエストを発行したキャッシュの識別
子を付加してもよい。
【0062】2.3 1つ以上のキャッシュ21の対象
アドレスのコピーがS状態の場合このケースにおいては
ストアリクエストを発行するプロセッサ20のキャッシ
ュ21がS状態の場合とI状態の場合の2種類が存在す
るが、いずれの場合においても、このアドレスに対する
オーナシップを持っていないため、オーナシップを獲得
しなければならず、同一の動作をする。それゆえここで
は、リクエストを発行するプロセッサ20のキャッシュ
21以外がS状態の場合の動作を説明する。1.1と同
様にプロセッサバス制御回路23ならびにノード間スイ
ッチ10を介して、「プロセッサによるメモリオーナリ
クエスト」を全ノードに放送する。そして、2.1と同
様に各ノードでは次の3つの処理を行う。
【0063】(キャッシュ状態の報告処理)キャッシュ
21の状態がS状態以外のノードでは2.1で説明した
ようにノード間スイッチ10を介して「ノード内にコピ
ーが存在しないこと」を全ノードに対して報告する。
【0064】キャッシュ21がS状態の場合、キャッシ
ュ21の状態をI状態に遷移させ、メッセージ生成回路
28ならびにノード間スイッチ10を介して、「ノード
内にコピーが存在しないこと」を全ノードに対して報告
する。全てのノードから「ノード内にコピーが存在しな
い」旨報告を受けると、リクエストを発行したノードの
キャッシュ21はE状態に一時的に遷移する。
【0065】(メモリのアクセス)2.1と同様であ
る。本ケースでは「更新済」のコピーを持つキャッシュ
は存在しないため、リクエストノードは必ずメモリ25
からデータを受け取る。そして、ストアデータをキャッ
シュ21に上書きして、状態をM状態に遷移する。
【0066】(オーナタグ32の更新)オーナタグ制御
回路32はメッセージ11のAdrフィールドで指定さ
れたアドレスとレンジレジスタ33を比較し、バッファ
60に対するアクセスであることが分かるため次の処理
を行う。メッセージ11のAdrフィールドをインデッ
クスとしてオーナタグ32をチェックする。エントリが
存在する場合には、1.2のM状態におけるオーナタグ
32の更新で示した通り、エントリが有効であることを
示すVビットに1をセットし、Adrフィールドにはメ
ッセージ11のAdrフィールドをコピーし、メモリが
オーナであることを示すMビットに0をセットし、どの
キャッシュがオーナであるかを示すIDフィールドにノ
ード#nのノード識別子を示す。本実施の形態ではノー
ド内のキャッシュ21はプロセッサバス22により一括
してヒットチェックを行うため、ここではノード#nの
みを設定する。もしも、ノード内のキャッシュがスイッ
チにより結合され、各キャッシュのヒットチェックを独
立して行うことができる場合は、ノード番号リクエスト
を発行したキャッシュの識別子を付加してもよい。
【0067】なお、キャッシュ21からリプレースされ
る場合には、オーナタグ32の更新は行われない。これ
は、MESIプロトコルでは一般にE状態のキャッシュ
のリプレースが行われるときにプロセッサバスに対して
リクエストが出ないためである。M状態のキャッシュの
リプレースが行われるときには「ライトバック」と呼ば
れる動作を行うが、MESIプロトコルでは一般的に
「ライトバック」リクエストを放送する必要がない。こ
れは、M状態のキャッシュはシステム内で高々1つしか
存在しないことが保証されており、他のキャッシュのチ
ェックを行う必要がないからである。したがって、各ノ
ードに対して「ライトバック」リクエストが放送され
ず、オーナタグ32の更新を行わない。
【0068】以上のように、バッファ60に対するプロ
セッサ20のアクセスに関して、キャッシュ21の状態
がEまたはM状態になる場合には、オーナタグ32にV
ビットが1にセットされ、Adrフィールドにはアクセ
スされたアドレスがセットされ、Mビットは0にセット
され、IDフィールドにはこのキャッシュを保持するノ
ード識別子が格納される。一方、S状態に遷移するとき
にはVビットが1にセットされ、Adrフィールドには
アクセスされたアドレスがセットされ、Mビットは1に
セットされ、IDフィールドが無効化される。なお、一
般的にオーナタグ32の容量はバッファ60全体を管理
するために十分であるとは限らない。この場合は、新た
なエントリを確保する際に既に存在するエントリを上書
きし、最近アクセスされたアドレスのみ管理する。どの
エントリを上書きするかは一般的なLRU(リースト・
リーセントリー・ユースド)アルゴリズムを用いて簡単
に実現できる。
【0069】次に、I/O装置50によるバッファ60
のアクセス時の動作を説明する。本実施の形態による計
算システムではI/O装置50からのリードアクセス時
の動作はオーナタグ32の状態に応じて異なる。そこ
で、次の3つケースに分けて詳細に説明する。
【0070】3.バッファ60に対するI/O装置50
のリードアクセス 3.1 オーナタグ32がミスヒットした場合、 3.2 オーナタグ32がヒットかつMビットが0の場
合、 3.3 オーナタグ32がヒットかつMが1の場合。
【0071】そして、I/O装置50からのライトアク
セス時の動作は、ブロック長テーブル34の状態に応じ
て異なる。そこで、次の2つのケースに分けて詳細に説
明する。
【0072】4.バッファ60に対するI/O装置50
のライトアクセス 4.1 ブロック長テーブル34にI/O装置50に対
して有効なエントリがある場合、 4.2 ブロック長テーブル34にI/O装置50に対
して有効なエントリがない場合。
【0073】(3.バッファ60に対するI/O装置5
0のリードアクセス)ここでは、I/O装置50からの
リードアクセス時の動作を説明する。以下ではバッファ
60はノード#mに確保され、このバッファ60のコピ
ーを保持しているキャッシュ21はノード#nにあるこ
とを前提に説明するがこの位置関係により動作が異なる
ことはない。I/O装置50からのリードアクセス時に
重要なことは、システム内でバッファ60を最後に更新
したデータを正しく読み出すことである。本実施の形態
によるマルチプロセッサシステムはMESIプロトコル
を用いてキャッシュ一貫性制御を行っているため、「更
新済」のキャッシュはシステム内でただ一つであること
が保証されている。したがって、最新のデータはM状態
のキャッシュにあるか、M状態のキャッシュがない場合
にはメモリにあることが保証されている。
【0074】3.1 オーナタグ32がミスヒットした
場合 オーナタグ32の初期化で説明したように、I/O装置
50とオペレーティングシステムの間でデータ交換する
ためのバッファ60が固定的に確保されていない場合、
レンジレジスタ33は無効化され、I/O装置50から
のリードアクセス時には必ずオーナタグ32がミスした
として扱う。また、バッファ60は固定的に確保される
が、オーナタグ32のリプレースなどによりI/O装置
50がバッファ60をリードアクセスする際に、そのア
クセスアドレスに対応するエントリがオーナタグ32に
存在しない場合がある。このいずれも以下で説明する動
作を行うため、後者の場合について特に説明を行う。
【0075】例えば、オペレーティングシステムにより
ディスク装置などのI/O装置50にデータを渡すとき
には、まずオペレーティングシステムがバッファ60を
確保し、このバッファ60に対してストア命令によりデ
ータを格納する。それから、I/O装置50に対してバ
ッファ60の先頭アドレスを指定してメモリマップドI
/Oなど、従来から用いられる方法によりDMAリード
を起動する。I/O装置50は指定されたバッファ60
の先頭アドレスから(式1)で示されるアドレスに対し
てリードリクエストを連続的にI/Oバス27に発行す
る。
【0076】 アドレス=(バッファ60の先頭アドレス) +(キャッシュラインサイズ)×n…(式1) 但し、n=1から(バッファ60の大きさ)/(キャッ
シュラインサイズ)までの整数である。
【0077】I/Oバス制御装置26はI/O装置50
が発行したリードリクエストを受け付けると、オーナタ
グ制御装置31にリクエストアドレスを伝達する。オー
ナタグ制御装置31はリクエストアドレスとレンジレジ
スタ33を比較して、レンジレジスタ33の初期化で説
明したレンジレジスタ33で指定される領域に含まれる
場合、すなわち(式2)が真の場合に次の動作を行う。
偽の場合はI/Oバス制御装置26にミスヒットである
ことを伝える。
【0078】 (リクエストアドレス)>=(先頭アドレス)かつ(リクエストアドレス) <=(先頭アドレス)+(領域の大きさ)…(式2) (式2)が真の場合にはオーナタグ制御装置31はリク
エストアドレスをインデクストとしてオーナタグ32の
エントリを調べる。本ケースの場合はオーナタグ32に
リクエストアドレスに対応するエントリが存在しないた
め、オーナタグ制御装置31はI/Oバス制御装置26
に対してミスヒットであることを伝える。
【0079】オーナタグ制御装置31からミスヒットで
あることを伝えられたI/Oバス制御装置26はメッセ
ージ生成回路28にリードリクエストの発行を指示す
る。そして、図2に示すように宛先制御回路30におい
ては、オーナタグ制御回路31からの入力HIT信号が
0であるため、AND回路101の出力信号「メモリノ
ードのみ」ならびにAND回路102の出力「オーナI
D有効」が0になる。
【0080】メッセージ生成回路28はI/Oバス制御
装置26からのリードリクエスト発行要求に基づき、次
のようにメッセージ11を構成する。まず、宛先制御回
路30の出力「メモリノードのみ」ならびに「オーナI
D有効」がいずれも0であるため、BCビットに1をセ
ットし、宛先ID0ならびに宛先ID1を無効にする。
そして、Cmdフィールドに「I/O装置50からのリ
ードリクエスト」をセットし、Adrフィールドにはリ
クエストアドレスをセットする。ブロック長Blnフィ
ールドとデータはCmdフィールドが「I/O装置から
のライトリクエスト」でのみ有効であるため、ここでは
いずれもセットされない。そして、生成したメッセージ
11をノード間スイッチ10に送出する。以下の動作は
オーナタグ32がない従来技術とまったく同じ動作であ
るため、3.2ならびに3.3の動作との違いが分かる
程度に簡単に説明する。
【0081】ノード間スイッチ10はメッセージ11の
BCビットが1であるため、このメッセージ11を全ノ
ードに放送する。このメッセージを受信した各ノードで
は、このリクエストアドレスに対するキャッシュの状態
をチェックするためにプロセッサバス制御回路23がキ
ャッシュチェックリクエストをプロセッサバス22に発
行し、もしも「更新済」のコピーをキャッシュ21が持
っている場合のみ、このキャッシュ21から「更新済」
のデータをノード間スイッチ10を介してノード#0に
返送するとともに、ノード#mのメモリ25にあるバッ
ファ60を更新する。もしも、「更新済」のコピーをキ
ャッシュ21が存在しない場合には、ノード#mのメモ
リ25からバッファ60を読み出し、ノード#0に返送
する。これにより、I/O装置50は最新のデータを読
み出すことができる。
【0082】3.2 オーナタグ32がヒットかつMビ
ットが0の場合 3.1と同様に、I/O装置50は指定されたバッファ
60の先頭アドレスから(式1)で示されるアドレスに
対してリードリクエストを連続的にI/Oバス27に発
行する。
【0083】I/Oバス制御装置26はI/O装置50
が発行したリードリクエストを受け付けると、オーナタ
グ制御装置31にリクエストアドレスを伝達する。3.
1と同様にオーナタグ制御装置31はレンジレジスタ3
3とリクエストアドレスの比較を行うが、本ケースでは
必ずリクエストアドレスは(式2)を満たす。さらに、
本ケースではオーナタグ制御装置31がリクエストアド
レスをインデクストとしてオーナタグ32のエントリを
調べると、オーナタグ32にリクエストアドレスに対応
するエントリが存在する。本ケースにおいては、Vビッ
トは1、Mビットは0である。Mビットが0のときには
プロセッサからのアクセスで説明したようにオーナID
フィールドにはキャッシュのコピーがE状態またはM状
態で存在している可能性のあるノード識別子が格納され
ている。このとき、ノード識別子で指定されていないノ
ードにあるキャッシュがE状態もしくはM状態になって
いることは有り得ない。そこで、この識別子で指定され
たノードとバッファ60を確保したメモリ25が存在す
るノードの2つに対してリードリクエストを発行すれば
十分であり、全ノードに放送する必要はない。
【0084】オーナタグ制御装置31からヒットである
ことを伝えられたI/Oバス制御装置26はメッセージ
生成回路28にリードリクエストの発行を指示する。そ
して、図2に示すように宛先制御回路30においてはA
ND回路101の出力「メモリノードのみ」は偽にな
り、AND回路102の出力「オーナID有効」は真に
なる。「オーナID有効」信号が真であることから、宛
先制御回路30の出力「オーナID」にはオーナタグ3
2のエントリのIDフィールドに格納されたノード識別
子、ここではノード#nが出力される。また、リクエス
トアドレスからこのバッファ60の存在するメモリ25
を保持するノード#mがアドレス・ノードID変換回路
100により求められ、宛先制御回路30の出力「メモ
リノードID」に出力される。
【0085】メッセージ生成回路28はI/Oバス制御
装置26からのリードリクエスト発行要求に基づき、次
のようにメッセージ11を構成する。まず、宛先制御回
路30の出力「オーナID有効」が真であるため、BC
ビットに0をセットし、宛先ID0には宛先制御回路3
0の出力「メモリノードID」に出力されたノード#m
を、宛先ID1には宛先制御回路30の出力「オーナノ
ードID」に出力されたノード#nをセットする。そし
て、コマンドCmdフィールドに「I/O装置50から
のリードリクエスト」をセットし、Adrフィールドに
はリクエストアドレスをセットする。ブロック長Bln
フィールドとデータフィールドはCmdフィールドが
「I/O装置からのライトリクエスト」でのみ有効であ
るため、ここではいずれもセットされない。そして、生
成したメッセージ11をノード間スイッチ10に送出す
る。
【0086】ノード間スイッチ10はメッセージ11の
BCビットが0であるため、このメッセージ11を宛先
ID0に指定されたノード#mと宛先ID1に指定され
たノード#nにのみ配送する。このメッセージを受信し
たノード#nでは、宛先ID1に自分のノード識別子が
設定されているため、このリクエストアドレスに対する
キャッシュの状態をチェックするためにプロセッサバス
制御回路23がキャッシュチェックリクエストをプロセ
ッサバス22に発行する。もしも、「更新済」のコピー
をキャッシュ21が持っている場合には、「更新済」の
コピーを持っていることを宛先ID0に指定されたノー
ド#mに伝え、このキャッシュ21から「更新済」のデ
ータをノード間スイッチを介してノード#0に返送する
とともに、ノード#mのメモリ25にあるバッファ60
を更新する。このとき、MESIプロトコルではキャッ
シュの状態はM状態からI状態に遷移する。もしも、
「更新済」のコピーをキャッシュ21が存在しない場合
には、「更新済」のコピーがないことを宛先ノードID
0で指定されたノード#mに伝える。この報告に基づ
き、ノード#mではメモリ25からバッファ60を読み
出し、ノード#0に返送する。これにより、I/O装置
50は最新のデータを読み出すことができる。そして、
ノード#0ではデータを受信したことを契機に、オーナ
タグ32のリクエストアドレスに対応するエントリのV
ビットに0をセットしこのエントリを無効化する。これ
は、ノード#nのキャッシュ21がM状態からI状態に
遷移する可能性が高いからである。もしも、キャッシュ
21の状態がE状態の場合であっても、3.1で説明し
たように、従来動作と同じ動作をすることでI/O装置
50は常に最新のデータを読み出すことができる。この
ように、オーナタグ32のエントリが有効でMビットが
0の場合にはリードリクエストを全ノードに放送するこ
となく、最新のデータを読み出すことができる。
【0087】3.3 オーナタグ32がヒットかつMビ
ットが1の場合 3.1と同様に、I/O装置50は指定されたバッファ
60の先頭アドレスから(式1)で示されるアドレスに
対してリードリクエストを連続的にI/Oバス27に発
行する。
【0088】I/Oバス制御装置26はI/O装置50
が発行したリードリクエストを受け付けると、オーナタ
グ制御装置31にリクエストアドレスを伝達する。3.
1と同様にオーナタグ制御装置31はレンジレジスタ3
3と比較を行うが、本ケースでは必ずリクエストアドレ
スは(式2)を満たす。さらに、本ケースではオーナタ
グ制御装置31がリクエストアドレスをインデクストと
してオーナタグ32のエントリを調べると、オーナタグ
32にリクエストアドレスに対応するエントリが存在す
る。本ケースにおいては、Vビットは1、Mビットは1
である。Mビットが1のときにはプロセッサからのアク
セスで説明したように、システム内においてE状態また
はM状態のキャッシュが存在している可能性はない。し
たがって、最新のデータはメモリ上にあり、メモリから
読み出せばよい。
【0089】オーナタグ制御装置31からヒットである
ことを伝えられたI/Oバス制御装置26はメッセージ
生成回路28にリードリクエストの発行を指示する。そ
して、図2に示すように宛先制御回路30においてはA
ND回路101の出力「メモリノードのみ」は真にな
り、AND回路102の出力「オーナID有効」は偽に
なる。「オーナID有効」信号が偽であることから、宛
先制御回路30の出力「オーナID」は無効になる。一
方、リクエストアドレスからこのバッファ60の存在す
るメモリ25を保持するノード#mがアドレス・ノード
ID変換回路100により求められ、宛先制御回路30
の出力「メモリノードID」に出力される。
【0090】メッセージ生成回路28はI/Oバス制御
装置26からのリードリクエスト発行要求に基づき、次
のようにメッセージ11を構成する。まず、宛先制御回
路30の出力「メモリノードのみ」が1であるため、B
Cビットに0をセットし、宛先ID0には宛先制御回路
30の出力「メモリノードID」に出力されたノード#
mを設定し、宛先ID1は無効にする。そして、コマン
ドCmdフィールドに「I/O装置50からのリードリ
クエスト」をセットし、Adrフィールドにはリクエス
トアドレスをセットする。ブロック長Blnフィールド
とデータは「I/O装置からのライトリクエスト」での
み有効であるため、ここではいずれもセットされない。
そして、生成したメッセージ11をノード間スイッチ1
0に送出する。
【0091】ノード間スイッチ10はメッセージ11の
BCビットが0であり、宛先ID1が無効であることか
ら、このメッセージ11を宛先ID0に指定されたノー
ド#mのみに配送する。ノード#mではメモリ25から
バッファ60を読み出し、ノード#0に返送する。これ
により、I/O装置50は最新のデータを読み出すこと
ができる。ノード#0ではオーナタグ32のリクエスト
アドレスに対応するエントリを変更する必要はない。こ
のように、オーナタグ32のエントリのMビットが1の
場合にはリードリクエストをメモリが実際に確保されて
いるノード#mのみへ送付すればよく、全ノードへの放
送を行う必要がない。
【0092】4.バッファ60に対するI/O装置50
のライトアクセス 次に、I/O装置50からバッファ60のライトアクセ
ス時の動作を説明する。I/O装置50からバッファ6
0への書き込みで重要なことは、I/O装置50が更新
したバッファ60の内容をプロセッサ20が正しく読み
出すことができることである。これは、I/O装置50
がバッファ60を書き換える場合に、このアドレスに対
応したコピーをシステム内の全てのキャッシュが保持し
ていないことを保証できればよい。
【0093】4.1 ブロック長テーブルにI/O装置
50に対して有効なエントリがある場合 本ケースでは、オペレーティングシステムによりディス
ク装置などのI/O装置50からデータを受け取る単位
であるブロック長が一定である。この場合には、オペレ
ーティングシステムがブロック長に相当するバッファ6
0を確保し、I/O装置50に対してバッファ60の先
頭アドレスを指定してメモリマップドI/Oなど、従来
から用いられる方法によりDMAライトを起動する。オ
ペレーティングシステムはI/O装置50からDMAラ
イトが終了した報告、例えば割り込みなどを受け付ける
までバッファ60を読み出さない。これは、オペレーテ
ィングシステムがI/O装置50により更新される前の
データを誤って使うことを避けるためであり、プロデュ
ーサ・コンシューマモデルとして一般的に使われる方法
である。
【0094】I/O装置50は、まず指定されたバッフ
ァ60の先頭アドレスに対してライトリクエストを連続
的にI/Oバス27に発行する。
【0095】I/Oバス制御装置26はI/O装置50
が発行したライトリクエストを受け付けると、ブロック
長テーブル34をチェックし、I/O装置50の識別子
とDIDフィールドを比較し、一致するエントリを求め
る。そして、I/O装置50からのバッファ60に対す
る最初のライトリクエストアドレスと、このエントリの
Rngフィールドに指定された先頭アドレスを比較し、
一致しているため次の処理を行う。
【0096】I/Oバス制御装置26はメッセージ生成
回路28に対して、「I/O装置からのブロック長付き
ライトリクエスト」発行を指示する。メッセージ生成回
路28は本リクエストを受け付けると、BCビットに1
をセットし、宛先ID0ならびに宛先ID1を無効に
し、Cmdフィールドには「I/O装置からのブロック
長付きライトリクエスト」をセットし、Adrフィール
ドにはライトリクエストアドレス、ここではバッファ6
0の先頭アドレスをセットし、Blnフィールドにはブ
ロック長テーブル34のBlnフィールドに指定された
ブロック長を設定する。そして、データフィールドにこ
のラインに対する書き込みデータを格納したメッセージ
11をノード間スイッチ10へ送出する。
【0097】ノード間スイッチ10はメッセージ生成回
路28から受け取ったメッセージ11のBCビットが1
であることから、このメッセージ11を全ノードへ放送
する。
【0098】各ノードではメッセージ受信回路29がメ
ッセージ11を受信し、Cmdフィールドが「I/O装
置からのブロック長付きライトリクエスト」であるた
め、プロセッサバス制御回路23に対してメッセージ1
1のAdrフィールドで指定されたアドレスからBln
フィールド長のブロックに関して、キャッシュの無効化
指示を行う。プロセッサバス制御回路23ではこの指示
に従い、キャッシュ無効化リクエスト回路80がキャッ
シュ無効化リクエストを(式3)で示されるアドレスに
対して連続的にプロセッサバス22へ発行する。
【0099】 (アドレス)=(先頭アドレス) +(キャッシュラインサイズ)×n…(式3) 但し、nは1から(ブロック長)/(キャッシュライン
サイズ)までの整数である。
【0100】各キャッシュ21はキャッシュ無効化リク
エストを受け付けると、このアドレスに対応するコピー
を無効化する。これにより、プロセッサ20がバッファ
60を読み出す際には必ずキャッシュ21はミスヒット
し、メモリから読み出しを行うことができる。
【0101】プロセッサバス制御回路23は上述したキ
ャッシュ無効化リクエストを全て発行し終えたことをメ
ッセージ生成回路28とノード間スイッチ10を介し
て、ノード#0に通知する。
【0102】また、バッファ60が確保されているノー
ド#mではさらにメッセージ11のデータフィールドに
格納された書き込みデータをメモリ制御回路24がメモ
リ25に書き込む。これにより、バッファ60が更新さ
れる。
【0103】ノード#0では全てのノードから「キャッ
シュの無効化の終了」通知を受け取ると、このライトア
ドレスに対するライトリクエストが完了したと判断し、
(式4)で示されるアドレスに対してライトリクエスト
を連続的にI/Oバス27に発行する。
【0104】 アドレス=(バッファ60の先頭アドレス) +(キャッシュラインサイズ)×n…(式4) 但し、n=1から(ブロック長)/(キャッシュライン
サイズ)−1までの整数である。
【0105】上述したように、この時点でバッファ60
のコピーを保持しているキャッシュ20はシステム内に
存在していないことが保証されているため、I/Oバス
制御回路26はメッセージ生成回路28に対して「キャ
ッシュチェックを行わないI/O装置によるライトリク
エスト」の発行を指示する。メッセージ生成回路28は
BCビットを0にセットし、宛先ID0にはリクエスト
アドレスから一意に確定するノード識別子、本ケースで
はノード#mを指定し、宛先ID1を無効にする。そし
て、Cmdフィールドには「キャッシュチェックを行わ
ないI/O装置によるライトリクエスト」をセットし、
Adrフィールドにはライトリクエストアドレスをセッ
トし、データフィールドに書き込みデータをセットし
て、メッセージ11をノード間スイッチ10へ送出す
る。ノード間スイッチ10はBCビットが0であり宛先
ID1が無効であるため、メッセージ11を宛先ID0
で指定されたノード#mのみへ送出する。
【0106】ノード#mはメッセージ11をメッセージ
受信回路29が受信し、Cmdフィールドが「キャッシ
ュチェックを行わないI/O装置によるライトリクエス
ト」であることから、Adrフィールドで指定されるメ
モリ25へデータフィールドに格納されたデータを書き
込むことにより、バッファ60を更新する。この際、キ
ャッシュ21の無効化は行わない。これは、既に無効化
が行われているためである。
【0107】このように、バッファ60への書き込みに
関して全てのノードへ放送すべきメッセージ11はバッ
ファ60の先頭アドレスに対するライトリクエストのみ
であり、それ以外はバッファ60が確保されているノー
ド#mへのみ転送すればよい。
【0108】バッファ60に対するDMAライトを全て
終了すると、I/O装置50は割り込みなど、従来から
用いられる方法によりオペレーティングシステムに対し
てDMAライトの終了報告を行う。これ以降、オペレー
ティングシステムはI/O装置50により更新されたバ
ッファ60を使うことができるが、キャッシュ21には
コピーが存在しないためメモリ25から読み出すことに
なる。
【0109】4.2 ブロック長テーブル34にI/O
装置50に対して有効なエントリがない場合 ブロック長テーブル34の初期化で述べたように、本ケ
ースの場合はI/O装置50のDMAアクセス単位が変
化する場合である。I/O装置50は(式5)で指定さ
れるアドレスへライトリクエストを発行する。
【0110】 アドレス=(バッファ60の先頭アドレス) +(キャッシュラインサイズ)×n…(式5) 但し、nは0から(バッファ60の大きさ)/(キャッ
シュラインサイズ)である。
【0111】本ケースの動作はブロック長テーブル34
を持たない従来技術、すなわち「スヌープ型コヒーレン
トI/O方式」と同じである。以下、簡単に説明する。
【0112】本ケースではブロック長テーブル34には
I/O装置50に対応するエントリがないため、I/O
バス制御回路26は(式5)で与えられるアドレス毎に
メッセージ生成回路28に対して「I/O装置によるラ
イトリクエスト」の発行を指示する。メッセージ生成回
路28は「I/O装置によるライトリクエスト」発行指
示に基づいて、BCビットを1にセットし、宛先ID0
ならびに宛先ID1を無効にして、Cmdフィールドに
は「I/O装置によるライトリクエスト」をセットし、
Adrにはライトリクエストアドレスをセットし、Bl
nフィールドを無効にし、データフィールドには書き込
みデータをセットしたメッセージ11をノード間スイッ
チ10へ送出する。
【0113】ノード間スイッチ10はBCビットが1で
あることから、このメッセージ11を全ノードへ放送す
る。
【0114】各ノードではメッセージ11をメッセージ
受信回路29が受信し、Cmdフィールドが「I/O装
置によるライトリクエスト」であることから、プロセッ
サバス制御回路23に対してAdrフィールドに指定さ
れたアドレスに関してキャッシュの無効化を指示する。
プロセッサバス制御回路23ではキャッシュ無効化リク
エスト回路80がこのAdrフィールドに指定されたア
ドレスに対してのみキャッシュ無効化リクエストをプロ
セッサバス22へ発行する。各キャッシュ21はこのア
ドレスに対するコピーを保持している場合には無効化す
る。
【0115】さらに、Adrフィールドで指定されたバ
ッファ60が確保されているノード、本ケースではノー
ド#mではデータフィールドに格納されたデータをメモ
リ25へ書き込む。
【0116】そして、DMAライトが全て終了すると、
4.1で述べたようにI/O装置50はオペレーティン
グシステムにDMAライトの終了報告を行う。
【0117】前記実施の形態では各ノードにプロセッサ
20、メモリ25、I/O装置50がある場合について
説明したが、第1の変形例として、各ノードにメモリ2
5がなく、たとえば図3に示すようにノード専用ノード
1002がある場合について説明する。図3では各ノー
ドにメモリ25がなく、メモリ専用ノード1002にの
みメモリ25が存在する。
【0118】以下、前記実施の形態との相違点のみを説
明する。前記実施の形態の1から4の処理に関して、ノ
ード#0 1001ならびにノード#n 1003にお
いては、(メモリのアクセス)を行わない。また、ノー
ド#m 1002においては(メモリアクセス)のみを
行い、(キャッシュ状態の報告処理)ならびに(オーナ
タグ32の更新)を行わない。
【0119】さらに、前記実施の形態では各ノードにプ
ロセッサ20、メモリ25、I/O装置50がある場合
について説明し、また前記第1の変形例では各ノードに
メモリ25がなく、図3に示すようにメモリ専用ノード
1002がある場合について説明したが、第2の変形例
として、I/O装置50はI/O専用ノード2001の
みに存在する場合について説明する。たとえば、図4で
は各ノードにI/O装置50がなく、I/O専用ノード
1002にのみI/O装置50が存在する。
【0120】以下、前記実施の形態ならびに第1の変形
例との相違点のみを説明する。前記実施の形態の1から
4の処理に関して、ノード#0 2001においては、
(メモリのアクセス)ならびに(キャッシュ状態の報告
処理)を行わない。また、ノード#m 2002ならび
にノード#n 2003においては(メモリのアクセ
ス)、(キャッシュ状態の報告処理)を行うが、(オー
ナタグ32の更新)を行わない。
【0121】以上、本発明者によってなされた発明をそ
の実施の形態に基づき具体的に説明したが、本発明は前
記実施の形態に限定されるものではなく、その要旨を逸
脱しない範囲で種々変更可能であることはいうまでもな
い。
【0122】
【発明の効果】本願において開示される発明のうち、代
表的なものによって得られる効果を簡単に説明すれば、
以下のとおりである。
【0123】本発明のマルチプロセッサシステムによれ
ば、I/O装置からのメモリリードリクエストに関する
キャッシュ一貫性制御のための放送を削減し、さらにI
/O装置からのメモリライトリクエストに関するキャッ
シュ一貫性保証のための放送を削減することができる。
この結果、I/O装置からのメモリアクセスに関するキ
ャッシュ一貫性制御のための放送を削減し、高速なI/
O処理を実現することができる。また、全ノードへの放
送を削減することにより、プロセッサによるメモリ参照
レイテンシを小さくでき、システム全体の性能を向上さ
せることができる。
【図面の簡単な説明】
【図1】本発明の一実施の形態によるマルチプロセッサ
システムを示すブロック図である。
【図2】本発明の一実施の形態によるマルチプロセッサ
システムにおいて、宛先制御回路を示すブロック図であ
る。
【図3】本発明の一実施の形態において、マルチプロセ
ッサシステムの第1の変形例を示すブロック図である。
【図4】本発明の一実施の形態において、マルチプロセ
ッサシステムの第2の変形例を示すブロック図である。
【符号の説明】
1〜3 ノード 10 ノード間スイッチ 11 メッセージ 20 プロセッサ 21 キャッシュ 22 プロセッサバス 23 プロセッサバス制御回路 24 メモリ制御回路 25 メモリ 26 I/Oバス制御回路 27 I/Oバス 28 メッセージ生成回路 29 メッセージ受信回路 30 宛先制御回路 31 オーナタグ制御回路 32 オーナタグ 33 レンジレジスタ 34 ブロック長テーブル 50,51 I/O装置 60 バッファ 70 コピー 80 キャッシュ無効化リクエスト回路 100 アドレス・ノードID変換回路 101,102 AND回路 103 ゲート回路 1001〜1003 ノード 2001〜2003 ノード
───────────────────────────────────────────────────── フロントページの続き (72)発明者 濱中 直樹 東京都国分寺市東恋ヶ窪一丁目280番地 株式会社日立製作所中央研究所内 Fターム(参考) 5B005 JJ12 KK13 MM12 NN72 PP26 QQ02 5B045 BB04 DD13

Claims (2)

    【特許請求の範囲】
  1. 【請求項1】 複数のプロセッサを有し、1つ以上のプ
    ロセッサ毎にキャッシュメモリを有するマルチプロセッ
    サであって、 1つ以上の前記プロセッサと前記キャッシュメモリを有
    する複数のノードおよびI/O装置がネットワークを介
    してメモリを共有する共有メモリ型マルチプロセッサに
    おいて、 キャッシュ可能なメモリロケーションのコピーを排他的
    に保持するキャッシュメモリの識別子、または排他的な
    コピーを持つキャッシュメモリがないことを記録する第
    1の手段を有し、 前記プロセッサもしくは前記I/O装置がキャッシュ可
    能なメモリロケーションAに対してリードリクエストを
    発行する際に、 前記第1の手段により、 前記メモリロケーションAの排他的なコピーを保持する
    キャッシュメモリ識別子が記録されているときには、こ
    のキャッシュメモリのみに「更新済」のコピーがあるか
    どうかを確認するメッセージを転送し、このキャッシュ
    メモリが「更新済」コピーを持っている場合にはこのキ
    ャッシュメモリからデータを供給し、「更新済」コピー
    を持っていない場合には前記メモリからデータを読み出
    し、 前記メモリロケーションAの排他的なコピーを保持する
    キャッシュメモリはないことが記録されているときに
    は、直接前記メモリからデータを読み出し、 これら以外の場合には全てのキャッシュメモリに「更新
    済」のコピーがあるかどうかを確認するメッセージを転
    送し、「更新済」コピーを持っているキャッシュメモリ
    がある場合にはこのキャッシュメモリからデータを供給
    し、「更新済」コピーを持っているキャッシュメモリが
    ない場合には前記メモリからデータを供給することを特
    徴とするマルチプロセッサシステム。
  2. 【請求項2】 複数のプロセッサを有し、1つ以上のプ
    ロセッサ毎にキャッシュメモリを有するマルチプロセッ
    サであって、 1つ以上の前記プロセッサと前記キャッシュメモリを有
    する複数のノードおよびI/O装置がネットワークを介
    してメモリを共有する共有メモリ型マルチプロセッサに
    おいて、 前記I/O装置の前記メモリへの書き込み単位をI/O
    装置毎に記録する第1の手段を有し、 前記I/O装置が複数のキャッシュラインを含むメモリ
    ブロックに対してメモリ書き込みを行うときに、 前記第1の手段に前記I/O装置のメモリ書き込み単位
    が記録されているかどうかを調べ、メモリ書き込み単位
    が記録されていた場合には、 全てのキャッシュメモリに対してメモリブロックの先頭
    アドレスから前記第1の手段に記録されている書き込み
    単位で示される連続領域に関して、このキャッシュメモ
    リを無効化するリクエストを放送し、 前記キャッシュメモリの無効化リクエストを受信したキ
    ャッシュメモリは前記連続領域に対応するコピーを保持
    する場合にはこれらを無効化し、 前記全てのキャッシュメモリの無効化が終了した後に、
    前記メモリブロックに対するデータを前記メモリへ直接
    書き込むことを特徴とするマルチプロセッサシステム。
JP2000094780A 2000-03-30 2000-03-30 マルチプロセッサシステム Pending JP2001282764A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2000094780A JP2001282764A (ja) 2000-03-30 2000-03-30 マルチプロセッサシステム
US09/820,948 US6587922B2 (en) 2000-03-30 2001-03-30 Multiprocessor system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2000094780A JP2001282764A (ja) 2000-03-30 2000-03-30 マルチプロセッサシステム

Publications (1)

Publication Number Publication Date
JP2001282764A true JP2001282764A (ja) 2001-10-12

Family

ID=18609773

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000094780A Pending JP2001282764A (ja) 2000-03-30 2000-03-30 マルチプロセッサシステム

Country Status (2)

Country Link
US (1) US6587922B2 (ja)
JP (1) JP2001282764A (ja)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002163149A (ja) * 2000-10-31 2002-06-07 Hewlett Packard Co <Hp> マルチプロセッサシステムのキャッシュコヒーレンスプロトコル
JP2006202215A (ja) * 2005-01-24 2006-08-03 Fujitsu Ltd メモリ制御装置及び制御方法
JP2006244388A (ja) * 2005-03-07 2006-09-14 Fujitsu Ltd アドレススヌープ方法及びマルチプロセッサシステム
JP2009026310A (ja) * 2007-07-16 2009-02-05 Hewlett-Packard Development Co Lp データ記憶方法
JP2011154735A (ja) * 2011-05-19 2011-08-11 Fujitsu Ltd アドレススヌープ方法及びマルチプロセッサシステム
JP2014048986A (ja) * 2012-08-31 2014-03-17 Fujitsu Ltd 演算処理装置、情報処理装置および演算処理装置の制御方法
JP2014048830A (ja) * 2012-08-30 2014-03-17 Fujitsu Ltd 演算処理装置、情報処理装置、及び演算処理装置の制御方法

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7139836B1 (en) 2001-08-08 2006-11-21 Stephen Clark Purcell One-way transaction tagging in a switch crossbar
JP4043225B2 (ja) * 2001-12-10 2008-02-06 株式会社ルネサステクノロジ キャッシュ装置および方法
JP4667092B2 (ja) * 2005-03-17 2011-04-06 富士通株式会社 情報処理装置、情報処理装置におけるデータ制御方法
US7996614B2 (en) * 2008-01-04 2011-08-09 International Business Machines Corporation Cache intervention on a separate data bus when on-chip bus has separate read and write data busses
US9594679B2 (en) * 2008-05-01 2017-03-14 Sandisk Il Ltd. Flash cache flushing method and system
US8190951B2 (en) * 2009-08-20 2012-05-29 Arm Limited Handling of errors in a data processing apparatus having a cache storage and a replicated address storage
US8762651B2 (en) * 2010-06-23 2014-06-24 International Business Machines Corporation Maintaining cache coherence in a multi-node, symmetric multiprocessing computer
US8935485B2 (en) 2011-08-08 2015-01-13 Arm Limited Snoop filter and non-inclusive shared cache memory
US9904626B2 (en) 2014-08-29 2018-02-27 Samsung Electronics Co., Ltd. Semiconductor device, semiconductor system and system on chip
US10972142B1 (en) * 2018-12-05 2021-04-06 Nxp Usa, Inc. Wireless networking transceiver system with shared memory
US11068400B2 (en) 2019-01-24 2021-07-20 Vmware, Inc. Failure-atomic logging for persistent memory systems with cache-coherent FPGAs
US11099991B2 (en) * 2019-01-24 2021-08-24 Vmware, Inc. Programming interfaces for accurate dirty data tracking

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4713755A (en) 1985-06-28 1987-12-15 Hewlett-Packard Company Cache memory consistency control with explicit software instructions
US6292872B1 (en) * 1998-02-17 2001-09-18 International Business Machines Corporation Cache coherency protocol having hovering (H) and recent (R) states
US6385702B1 (en) * 1999-11-09 2002-05-07 International Business Machines Corporation High performance multiprocessor system with exclusive-deallocate cache state

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002163149A (ja) * 2000-10-31 2002-06-07 Hewlett Packard Co <Hp> マルチプロセッサシステムのキャッシュコヒーレンスプロトコル
JP2006202215A (ja) * 2005-01-24 2006-08-03 Fujitsu Ltd メモリ制御装置及び制御方法
JP2006244388A (ja) * 2005-03-07 2006-09-14 Fujitsu Ltd アドレススヌープ方法及びマルチプロセッサシステム
JP2009026310A (ja) * 2007-07-16 2009-02-05 Hewlett-Packard Development Co Lp データ記憶方法
JP2011154735A (ja) * 2011-05-19 2011-08-11 Fujitsu Ltd アドレススヌープ方法及びマルチプロセッサシステム
JP2014048830A (ja) * 2012-08-30 2014-03-17 Fujitsu Ltd 演算処理装置、情報処理装置、及び演算処理装置の制御方法
JP2014048986A (ja) * 2012-08-31 2014-03-17 Fujitsu Ltd 演算処理装置、情報処理装置および演算処理装置の制御方法

Also Published As

Publication number Publication date
US6587922B2 (en) 2003-07-01
US20020013886A1 (en) 2002-01-31

Similar Documents

Publication Publication Date Title
JP4848771B2 (ja) キャッシュ一貫性制御方法およびチップセットおよびマルチプロセッサシステム
JP5431525B2 (ja) アクセラレータ用低コストのキャッシュ一貫性を維持するシステム
US6631448B2 (en) Cache coherence unit for interconnecting multiprocessor nodes having pipelined snoopy protocol
US7363462B2 (en) Performing virtual to global address translation in processing subsystem
US5802578A (en) Multinode computer system with cache for combined tags
JP2819982B2 (ja) 範囲指定可能なキャッシュ一致保証機能を有するマルチプロセッサシステム
JP2001282764A (ja) マルチプロセッサシステム
JP4966205B2 (ja) 共有メモリコンピュータシステムにおける、所有されている複数のキャッシュブロックのライトバックの早期予測
EP0735480B1 (en) Cache coherent computer system that minimizes invalidation and copyback operations
US7765381B2 (en) Multi-node system in which home memory subsystem stores global to local address translation information for replicating nodes
US20040215901A1 (en) Method and mechanism to use a cache to translate from a virtual bus to a physical bus
US6405290B1 (en) Multiprocessor system bus protocol for O state memory-consistent data
US7577794B2 (en) Low latency coherency protocol for a multi-chip multiprocessor system
US6345341B1 (en) Method of cache management for dynamically disabling O state memory-consistent data
US6922755B1 (en) Directory tree multinode computer system
US8332592B2 (en) Graphics processor with snoop filter
JP4507563B2 (ja) マルチプロセッサシステム
US6615321B2 (en) Mechanism for collapsing store misses in an SMP computer system
US20140297966A1 (en) Operation processing apparatus, information processing apparatus and method of controlling information processing apparatus
US6918009B1 (en) Cache device and control method for controlling cache memories in a multiprocessor system
US7360056B2 (en) Multi-node system in which global address generated by processing subsystem includes global to local translation information
US6944721B2 (en) Asynchronous non-blocking snoop invalidation
US7234028B2 (en) Power/performance optimized cache using memory write prevention through write snarfing
US6356982B1 (en) Dynamic mechanism to upgrade o state memory-consistent cache lines
US6349368B1 (en) High performance mechanism to support O state horizontal cache-to-cache transfers