JPH08320827A - キャッシュコヒーレンス装置 - Google Patents

キャッシュコヒーレンス装置

Info

Publication number
JPH08320827A
JPH08320827A JP7250527A JP25052795A JPH08320827A JP H08320827 A JPH08320827 A JP H08320827A JP 7250527 A JP7250527 A JP 7250527A JP 25052795 A JP25052795 A JP 25052795A JP H08320827 A JPH08320827 A JP H08320827A
Authority
JP
Japan
Prior art keywords
bus
cache
processor module
unit
command
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.)
Granted
Application number
JP7250527A
Other languages
English (en)
Other versions
JP3872118B2 (ja
Inventor
Akira Kabemoto
章 河部本
Naohiro Shibata
直宏 柴田
Toshiyuki Muta
俊之 牟田
Takayuki Shimamura
貴之 島村
Hirohide Sugawara
博英 菅原
Junji Nishioka
潤治 西岡
Takanori Sasaki
崇諭 佐々木
Satoshi Shinohara
聡 篠原
Youzou Nakayama
陽象 中山
Jun Sakurai
潤 桜井
Hiroaki Ishihata
宏明 石畑
Kenji Horie
健志 堀江
Toshiyuki Shimizu
俊幸 清水
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.)
Fujitsu Ltd
PFU Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd, PFU Ltd filed Critical Fujitsu Ltd
Priority to JP25052795A priority Critical patent/JP3872118B2/ja
Priority to US08/598,243 priority patent/US5890217A/en
Priority to GB9605790A priority patent/GB2299187B/en
Publication of JPH08320827A publication Critical patent/JPH08320827A/ja
Application granted granted Critical
Publication of JP3872118B2 publication Critical patent/JP3872118B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related 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/0817Cache consistency protocols using directory methods
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/25Using a specific main memory architecture
    • G06F2212/254Distributed memory
    • G06F2212/2542Non-uniform memory access [NUMA] architecture

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)
  • Multi Processors (AREA)

Abstract

(57)【要約】 【課題】複数のプロセッサモジュールに内蔵した複数の
プロセッサのキャッシュと各モジュールに主記憶分割配
置したローカル記憶間でのキャッシュコヒーレンスを効
率良く実現して処理性能を高める。 【解決手段】複数のプロセッサモジュール10に設けた
キャッシュ18付きの複数のプロセッサ16を内部のス
ヌープバス(第1共通バス)22を介して相互に接続す
ると共に、主記憶を配置したローカル記憶部28と接続
する。各プロセッサモジュール10は主記憶側をシステ
ムバス(第2共通バス)12を介して接続する。この2
階層の共通バス構成により、プロセッサモジュール10
内でのキャッシュコヒーレンスのバス動作と、プロセッ
サモジュール10間でのキャッシュコヒーレンスのバス
動作を分離する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、複数のプロセッサ
モジュールをシステムバスを介して接続したマルチプロ
セッサシステムのキャッシュコヒーレンス装置に関し、
特に、モジュール内に主記憶と内部共有バスを介してキ
ャッシュ付きプロセッサエレメントを複数接続したマル
チプロセッサシステムのキャッシュコヒーレンス装置に
関する。
【0002】
【従来の技術】近年、コンピュータ装置の処理性能を飛
躍的に向上させることが期待できることから、複数のプ
ロセッサを共有バスを介して接続したマルチプロセッサ
システムの開発が進められている。マルチプロセッサシ
ステムにあっては、プロセッサにスパースカラ型やVL
IW(Very Long Instruction Word) 型を採用すること
で、プロセッサ単体の処理性能を向上させると同時に、
キャッシュ機構の採用が性能向上に大きく寄与する。
【0003】このようなプロセッサのキャッシュ機構と
しては、プロセッサに一次キャッシュを内蔵させると同
時に、外部の主記憶との間に2次キャッシュを設けてお
り、2次キャッシュのヒット率を高めることで、主記憶
へのアクセスを低減して性能向上を図る。更に、複数の
プロセッサに対する共有メモリとして、単独のメモリユ
ニットを設けず、所定数のプロセッサ単位にその主記憶
として機能するローカルメモリを分散配置し、このロー
カルメモリに共有メモリ領域を分散配置し、システム規
模に応じたローカルメモリユニットの数により共有メモ
リを柔軟に構築できるようにしている。
【0004】図65は従来の典型的なマルチプロセッサ
システムを示す。このシステムは、例えば2台のプロセ
ッサモジュール1000−1,1000−2を有する。
プロセッサモジュール1000−1,1000−2は同
一構成であり、例えばプロセッサモジュール1000−
1を例にとると、プロセッサエレメント1100−1,
1100−2、キャッシュユニット1200−1,12
00−2、共通バス1300−1及びローカルストレー
ジユニット1400−1で構成される。
【0005】プロセッサエレメント1100−1,11
00−2は、一次キャッシュを内蔵しており、外部に2
次キャッシュとしてのキャッシュユニット1200−
1,1200−2を設けている。ローカルストレージユ
ニット1400−1は、プロセッサエレメント1100
−1,1100−2に固有の物理空間を割り当てること
で各々の主記憶として機能し、同時に、プロセッサモジ
ュール1000−1,1000−2の全てのプロセッサ
エレメント1100−1〜1100−4に共有される共
有メモリ空間を割り当てている。
【0006】プロセッサモジュール1000−2側も同
様に、プロセッサエレメント1100−3,1100−
4、キャッシュユニット1200−3,1200−4、
共通バス1300−2及びローカルストレージユニット
1400−2で構成される。プロセッサモジュール10
00−1,1000−2の共通バス1300−1,13
00−2は、モジュール筐体のバックパネルを経由して
接続された1つのバスとして動作する。
【0007】複数のプロセッサ1100−1〜1100
−4に設けたキャッシュユニット1200−1〜120
0−4のキャッシュ制御は、あるプロセッサエレメント
で読出アクセスがあり、ミスヒットであれば、対応する
ローカルストレージのアクセスで読出アドレスのコピー
値をキャッシュに転送して応答する。またプロセッサの
書込アクセスでキャッシュがミスヒットになると、対応
するローカルストレージのコピー値をキャッシュに転送
して上書きする。このとき主記憶の値と上書きされたキ
ャッシュのコピー値は異なることから、キャッシュ上の
最新値を主記憶に転送して旧い値を更新するコピーバッ
クによりキャッシャコヒーレンスが実現される。
【0008】また、あるローカルストレージの値を複数
のキャッシュにコピーしている場合には、書込アクセス
があったキャッシュ以外の他のキュッシュ上のコピー値
を無効化した後に、アクセス元のキャッシュ上のコピー
値を更新して最新値とし、その後にローカルストレージ
にコピーバックすることで、キャッシュコヒーレンスが
実現される。
【0009】
【発明が解決しようとする課題】しかしながら、図65
のマルチプロセッサシステムにあっては、全てのプロセ
ッサエレメント、キャッシュユニット及びローカルスト
レージを1つのバスに接続する構成をとっているため、
次の問題があった。まずキャッシャコヒーレンスを実現
するために、読出又は書込アクセスを発生したプロセッ
サエレメントのキャッシュユニットとアクセスアドレス
をもつローカルストレージユニットの間で命令及びデー
タの転送を行う。このため、複数のプロセッサエレメン
トでコヒーレンスを実現するためのバス転送要求が競合
し、共通バスの負荷がプロセッサ数に応じて増加し、高
速処理ができない。
【0010】勿論、共通バスを複数設けることで、バス
負荷を下げることはできるが、プロセッサ数が10台,
20台と増加すると、対応できなくなる。またプロセッ
サモジュール1000−1,1000−2は、モジュー
ル筐体単位に構築されている。このため共通バス130
0−1,1300−2は、筐体のバックパネルを経由し
てコネクタでケーブル接続される。このためバスの線路
長が長くなり、電気的な特性によりバスのクロック周波
数を上げることができない。
【0011】例えばモジュール内のバスだけであればク
ロック周波数を60MHzとできるものが、バックパネ
ルを共有したバス接続では、40MHzに下がってしま
う。本発明は、このような従来の問題点に鑑みてなされ
たもので、プロセッサモジュールの内部と外部に共通バ
スを設けた2階層の共通バス構造により、各プロセッサ
モジュールに内蔵した複数のプロセッサのキャッシュと
各モジュールに1つ設けたローカルストレージ間でのキ
ャッシュコヒーレンスを効率良く実現して処理性能を高
めたキャッシュコヒーレンス装置を提供することを目的
とする。
【0012】またマルチプロセッサシステムにおいて、
特に性能に大きな影響を及ぼすのがシステムバスであ
る。システムバスはデータ転送速度と、バスサイクルの
中でデータ転送に使われるサイクルの割合であるバス使
用効率を高めなければならない。さもなければシステム
バスがボトルネックとなり、プロセッサ数を増やしても
性能が向上しなくなる。
【0013】データ転送速度を向上するためにはデータ
バスの幅を拡げたり、信号振幅の小さいインタフェース
の採用でバスの動作周波数を上げるのが一般的である。
またバス使用効率を高めるためには、メモリアクセスな
どの要求を出してから応答を受け取るまでの間、他のバ
スユニットに使用権を譲るスプリット型転送方式の採用
があげられる。
【0014】したがって本発明は、分散共有メモリ型の
マルチプロセッサシステムにおいて、キャッシュコヒー
レンス維持を効率よく実現し、且つシステムの拡張性を
損なうことのないキャッシュコヒーセンス装置の共通バ
スを提供することを目的とする。
【0015】
【課題を解決するための手段】図1は本発明の原理説明
図である。まず本発明は、複数のプロセッサ16を備え
たプロセッサ群を有する。このプロセッサ群は、図1
(A)のように、少なくとも1つ以上のプロセッサで構
成される例えば3つのプロセッサモジュール10−1〜
10−3に分割される。またプロセッサ群が共有する主
記憶が設けられる。主記憶は複数のローカル記憶部28
に分割され、各ローカル記憶部8はプロセッサモジュー
ル10−1〜10−3上に配置される。以下の説明で
は、主記憶にローカル記憶の符号を付す。
【0016】プロセッサ16の各々には主記憶28のア
クセスを高速化するキャッシュユニット18が設けられ
る。主記憶28のデータのキャッシュユニット18への
登録状態はキャッシュライン単位にディレクトリ記憶部
30に記憶される。主記憶28とキャッシュユニット1
8間は第1共通バス22で接続され、プロセッサモジュ
ール10−1〜10−3のの間は第2共通バス12で接
続される。主記憶28とキャッシュユニット18間のキ
ャッシュコヒーレンスは、スヌープユニット20による
内部コヒーレンス処理部で実現される。また複数のプロ
セッサモジュール10−1〜10−3の間のキャッシュ
コヒーレンスは、キャッシュ変換部80による外部コヒ
ーレンス処理部で実現される。
【0017】キャッシュユニット18は、キャッシュラ
インを複数のサブラインに分割して管理し、ディレクト
リ記憶部30は、キャッシュユニット18上のデータが
最新値で主記憶28上のデータが旧値となるダーティ状
態である場合のキャッシュ状態をサブライン単位に記憶
し、キャッシュユニット上と主記憶上のデータが同じ値
になるシェア状態をキャッシュライン単位に記憶する。
【0018】またディレクトリ記憶部30へのキャッシ
ュ状態の記憶は、プロセッサモジュール単位に行われ
る。具体的には、プロセッサモジュール10−1〜10
−3は、ディレクトリ記憶部30に複数のプロセッサモ
ジュール10−1〜10−3との対応状態を記憶するデ
ィレクトリ制御部を有し、このディレクトリ制御部によ
ってディレクトリ記憶部30への登録を複数のプロセッ
サモジュール単位に指定する。
【0019】複数のプロセッサモジュール10−1〜1
0−3の各々は、複数のプロセッサ16と、各プロセッ
サ16毎に設けられたキャッシュユニット18と、主記
憶として使用されるローカル記憶28と、主記憶28及
びディレクトリ記憶部30を管理するメモリ管理ユニッ
ト26と、複数のキャッシュユニット18とメモリ管理
ユニット26を接続する第1共通バス22と、複数のプ
ロセッサモジュール10−1〜10−3間を接続する第
2共通バス12と、第1共通バス22と第1共通バス1
2のプロトコル変換を管理するプロトコル管理ユニット
24と、プロセッサモジュール10−1〜10−3間を
第2共通バス12で結合するモジュール接続ユニット3
2と、第1共通バス22で特定マシンサイクルに同期さ
せてキャッシュユニット18をスヌープすることにより
キャッシュコヒーレンスを実現するスヌープユニット2
0と、メモリ管理ユニット26に設けられ第2共通バス
12によるディレクトリ記憶部30の参照に基づきプロ
セッサモジュール10−1〜10−3間でのコヒーレン
スを実現するキャッシュ変換部80を設けている。
【0020】キャッシュユニット18は、例えば256
バイトのキャッシュラインを64バイトのサブラインに
分割して管理する。これに対応してディレクトリメモリ
30には、キャッシュ上のデータが最新値で主記憶上の
データが旧値となるダーティ状態がサブライン単位に登
録される。またキャッシュ上と主記憶上のデータが同じ
値になるシェア状態は、キャッシュライン単位に登録さ
れる。
【0021】ディレクトリ記憶部30にキャッシュライ
ン単位に登録されたディレクトリエントリ104は、図
1(B)のように、例えばダーティ状態の有無を示す複
数のサブラインビットD3〜D0と、シェア状態を複数
のプロセッサモジュール毎に示すシェアードマップビッ
トS7〜S0を有する。更にシェアードマップビットS
7〜S0のビット位置とプロセッサモジュール10の対
応関係を登録する構成レジスタを設け、この構成レジス
タによって同一マップビットに複数の複数のプロセッサ
モジュールのシェア状態を登録可能としている。
【0022】更に、ディレクトリエントリ104のサブ
ラインビットD3〜D0をセットした場合には、このビ
ットセットに対応して最新値を持つキャッシュユニット
18が存在するプロセッサモジュール10の情報(PM
−ID)を、主記憶28の特定領域に格納する。またサ
ブラインビットD3〜D0をリセットした場合は、この
リセットビットに対応して、最新値が存在するプロセッ
サモジュール10の情報(PM−ID)を、主記憶28
の特定領域に格納する。
【0023】プロセッサ16は、キャッシュラインのサ
ブライン単位に読出アクセス又は書込アクセスを行う。
第2共通バスとしてのシステムバス12及び第1共通バ
スとしてのスヌープバス22は、指令転送と応答転送を
分離したスプリット形式により情報を転送する。プロセ
ッサの読出アクセスに対するキャッシュコヒーレンスに
は、次の読出モード1〜3がある。
【0024】[読出モード1]この読出モード1は、第
1のプロセッサモジュール10−1内の任意のプロセッ
サ16の読出アクセスに対し自己のキャッシュユニット
18及びスヌープバス22で接続した他の全てのキャッ
シュユニット18でミスヒットし、且つ読出アドレスが
第1のプロセッサモジュール10−1内の主記憶にあ
り、更に読出アドレスのデータがリモートとなる第2の
プロセッサモジュール10−2内のキャッシュユニット
18に最新値をもつダーティ状態で存在する場合であ
る。
【0025】この場合、読出アクセスを発生した第1の
プロセッサモジュール10−1は、システムバス12に
指令を発行して第2のプロセッサモジュール10−2に
アクセスし、自己のスヌープバス22を介してダーティ
状態にあるキャッシュユニット18から最新値を取得し
た後に、システムバス12で最新値を第1のプロセッサ
モジュール10−1に応答する。第1のプロセッサモジ
ュール10−1は、この応答で得られた最新値をアクセ
ス元のキャッシュユニット18に格納して読出アクセス
に応答させ、同時に主記憶28に最新値を書き込むこと
でキャッシュコヒーレントを実現する。
【0026】ここで第1のプロセッサモジュール10−
1、主記憶28に最新値を書き込んだ際に、ディレクト
リ記憶部30のディレクトリエントリ104をダーティ
状態をシェア状態に更新し、またアクセス元のキャッシ
ュユニット18はタグメモリの無効化状態をシェア状態
に更新する。 [読出モード2]この読出モード2は、第1のプロセッ
サモジュール10−1内の任意のプロセッサ16の読出
アクセスに対し自己のキャッシュユニット18及びスヌ
ープバス22で接続した他の全てのキャッシュユニット
18でミスヒットし、且つ読出アドレスが第2のプロセ
ッサモジュール10−2内の主記憶28にあり、更に読
出アドレスのデータが第3のプロセッサモジュール10
−3内のキャッシュユニット18に最新値をもつダーテ
ィ状態で存在する場合である。
【0027】この場合、第1のプロセッサモジュール1
0−1は、システムバス12に指令を発行して第2のプ
ロセッサモジュール10−2にアクセスし、第2のプロ
セッサモジュール10−2はシステムバス12から受領
した指令に基づき、システムバス12に指令を発行して
第3のプロセッサモジュール10−3にアクセスする。
第3のプロセッサモジュール10−3は自己のスヌープ
バス22によってダーティ状態にあるキャッシュユニッ
ト18から最新値を取得した後に、システムバス12で
最新値を第1及び第2のプロセッサモジュール10−
1,10−2に応答する。
【0028】第2のプロセッサモジュール10−2は、
応答の受領で得られた最新値を主記憶28に書き込み、
また第1のプロセッサモジュール10−1は、応答の受
領で得られた最新値をアクセス元のキャッシュユニット
18に格納して読出アクセスに応答させる。ここで、第
2のプロセッサモジュール10−2は、主記憶28に最
新値を書き込んだ際にディレクトリ記憶部30のディレ
クトリエントリ104をダーティ状態をシェア状態に更
新する。また第1のプロセッサモジュール10−1のア
クセス元のキャッシュユニット18は、タグメモリの無
効化状態をシェア状態に更新する。
【0029】[読出モード3]この読出モード3は、あ
るプロセッサモジュール内のキャッシュ間でキャッシュ
コヒーレンスを実現する。即ち、任意のプロセッサモジ
ュール10−1内の任意のプロセッサ14の読出アクセ
スに対し自己のキャッシュユニット14はミスヒットし
たが、スヌープバス22で接続した他のプロセッサのキ
ャッシュユニットに最新値が存在する場合である。
【0030】この場合、両キャッシュユニット間でスヌ
ープバス22を介して最新値の転送を実行してアクセス
元のキャッシュユニット14に格納し、読出アクセスに
応答させる。この場合のスヌープバス22を使用した最
新値の転送はキャッシュサブライン単位で実行される。
次にプロセッサの書込アクセスに対するキャッシュコヒ
ーレンスには、次の書込モード1〜5がある。
【0031】[書込モード1]この書込モード1は、第
1のプロセッサモジュール10−1内の任意のプロセッ
サ16の書込アクセスに対し、自己のキャッシュユニッ
ト14及びスヌープバス22で接続した他のキャッシュ
ユニット14に書込権を所有した状態でコピー値が格納
されておらずにミスヒットとなり、且つ書込アドレスが
第1のプロセッサモジュール10−1内の主記憶28に
あり、更に、主記憶28の書込アドレスのコピー値が第
1のプロセッサモジュール10−1以外の他の複数のプ
ロセッサモジュール10−2,10−3のキャッシュユ
ニット18にシェア状態で存在する場合である。
【0032】この場合、第1のプロセッサモジュール1
0−1は、シェア状態にある全てのプロセッサモジュー
ル10−2,10−3に対してシステムバス12を使用
して無効化指令を発行する。シェア状態にある全てのプ
ロセッサモジュール10−2,10−3は、無効化指令
を同時に受理して、無効化に成功した際にシステムバス
12を使用して第1のプロセッサモジュールに独立に応
答する。
【0033】第1のプロセッサモジュール10−1は、
システムバス12からの全ての応答を受理したことで無
効化の成功を認識して、主記憶28の書込アドレスのコ
ピー値をアクセス元のキャッシャユニット18に格納し
て書込アクセスにより上書きさせる。ここで、第1のプ
ロセッサモジュール10−1は、無効化の成功を認識し
てアクセス元のキャッシュユニット18にコピーバック
した際に、ディレクトリ記憶部30のディレクトリエン
トリにおけるシェア状態をダーティ状態に更新する。
【0034】[書込モード2]この書込モード2は、第
1のプロセッサモジュール10−1内の任意のプロセッ
サ16の書込アクセスに対し自己のキャッシュユニット
18及びスヌープバス22で接続した他のキャッシュユ
ニット18にコピー値が書込権を所有した状態で登録さ
れておらずにミスヒットとなり、且つ書込アドレスが第
1のプロセッサモジュール10−1内の主記憶28であ
り、更に主記憶28の書込アドレスのコピー値が第1の
プロセッサモジュール10−1を含む複数のプロセッサ
モジュール10−1〜10−3のキャッシュユニットに
シェア状態で存在する場合である。
【0035】この場合、第1のプロセッサモジュール1
0−1は、シェア状態にある全てのプロセッサモジュー
ル10−2,10−3に対してシステムバス12を使用
して無効化指令を発行するのと並行して、第1のプロセ
ッサモジュール10−1内のキャッシュユニットにスヌ
ープバス22を使用して無効化指令を発行する。シェア
状態にある全てのプロセッサモジュール10−2,10
−3は無効化指令を同時に受理して、無効化の成功をシ
ステムバス12を使用して第1のプロセッサモジュール
10−1に独立に応答するのと並行して、第1のプロセ
ッサモジュール10−1内のキャッシュユニット18
は、スヌープバス22を使用して無効化の成功を応答す
る。
【0036】第1のプロセッサモジュール10−1は、
システムバス12からの全ての応答と、自己のスヌープ
バス22からの応答を受理したことで無効化の成功を認
識して、主記憶28の書込アドレスのコピー値をキャッ
シャユニット18に格納してプロセッサ16の書込アク
セスにより上書きさせる。この場合にも書込モード1と
同様、第1のプロセッサモジュール10−1は、無効化
の成功を認識してアクセス元のキャッシュユニットにコ
ピーした際に、ディレクトリ記憶部30のディレクトエ
ントリにおけるシェア状態をダーティ状態に更新する。
【0037】[書込モード3]この書込モード3は、第
1のプロセッサモジュール10−1内のプロセッサ16
の書込アクセスに対し自己のキャッシュユニット18及
びスヌープバス22を介して接続した他のキャッシュユ
ニット18にコピー値が書込権を所有した状態で登録さ
れておらずにミスヒットとなり、書込アドレスが第2の
プロセッサモジュール10−2内の主記憶28にあり、
更に主記憶28の書込アドレスのコピー値が第2のプロ
セッサモジュール10−2以外の他の複数のプロセッサ
モジュール10−3,10−4のキャッシュユニットに
シェア状態で存在する場合である。
【0038】この場合、第1のプロセッサモジュール1
0−1は、システムバス12を使用して第2のプロセッ
サモジュール10−2に書込所有権の要求指令(ホーム
コマンド)を発行し、書込所有権の要求指令を受領した
第2のプロセッサモジュール10−2は、シェア状態に
ある他の全てのプロセッサモジュール10−3,10−
4に対してシステムバス12を使用して無効化指令(パ
ージコマンド)を発行する。
【0039】シェア状態にある全てのプロセッサモジュ
ール10−3,10−4は、無効化指令を同時に受理し
て、無効化に成功した際にシステムバス12を使用して
第2のプロセッサモジュール10−2に独立に応答す
る。第2のプロセッサモジュール10−2は全ての無効
化の応答を受理したことで無効化の成功を認識すると、
第1のプロセッサモジュール10−1に対してシステム
バス12を使用して、自己の主記憶28のアクセスアド
レスのコピー値を含む書込所有権の移動を応答する。
【0040】第1のプロセッサモジュール10−1は、
書込所有権の応答の受領により得られたコピー値をアク
セス元のキュッシュユニット18に格納して、プロセッ
サ16の書込アクセスで上書きさせる。ここで、第2の
プロセッサモジュール10−1は、無効化の成功を認識
して書込所有権を移動した際に、自己のディレクトリ記
憶部30のディレクトリエントリにおけるシェア状態を
ダーティ状態に更新する。
【0041】[書込モード4]この書込モード4は、第
1のプロセッサモジュール10−1内の任意のプロセッ
サの書込アクセスに対し自己のキャッシュユニット18
及びスヌープバス22を介して接続した他のキャッシュ
ユニット14にコピー値が書込権を所有した状態で登録
されておらずにミスヒットとなり、書込アドレスが第2
のプロセッサモジュール10−2内の主記憶28にあ
り、更に、この主記憶28の書込アドレスのコピー値が
第2のプロセッサモジュール10−2を含む複数のプロ
セッサモジュール10−3,10−4のキャッシュユニ
ット18にシェア状態で存在する場合である。
【0042】この場合、第1のプロセッサモジュール1
0−1は、第2のプロセッサモジュール10−2に書込
所有権の要求指令(ホームコマンド)を発行する。書込
所有権の要求指令を受領した第2のプロセッサモジュー
ル10−2は、シェア状態にある全てのプロセッサモジ
ュール10−3,10−4に対してシステムバス12を
使用して無効化指令(パージコマンド)を発行するのと
並行して、自己のシェア状態にあるキャッシュユニット
18に対しスヌープバス22を使用して無効化指令を発
行する。
【0043】シェア状態にある全てのプロセッサモジュ
ール10−3,10−4が無効化指令を同時に受理し
て、無効化の成功をシステムバス12を使用して第2に
プロセッサモジュール10−2に独立に応答するのと並
行して、第2のプロセッサモジュール10−2のキャッ
シュユニット18は無効化の成功をスヌープバス22を
使用して応答する。
【0044】第2のプロセッサモジュール10−2は、
システムバス12からの全ての無効化成功の応答とスヌ
ープバス22からの無効化成功の応答を受領したことで
無効化の成功を認識して、第1のプロセッサモジュール
10−1に対してシステムバス12を使用して、自己の
主記憶28の書込アドレスのコピー値を含む書込所有権
の移動を応答する。
【0045】第1のプロセッサモジュール10−1は、
書込所有権の応答の受領で得られたコピー値をアクセス
元のキュッシュユニット18に格納して、プロセッサ1
6の書込アクセスで上書きさせる。ここで、第2のプロ
セッサモジュール10−2は、無効化の成功を認識して
書込所有権の移動を応答した際に、自己のディレクトリ
記憶部30のディレクトリエントリにおけるシェア状態
をダーティ状態に更新する。
【0046】また書込モードにおける無効化指令は、キ
ャッシュサブライン単位で発行する。更に、無効化指令
の応答時には、無効化を指令したしたサブラインが含ま
れるキャッシュラインの他のサブラインの状態を返送す
る。 [書込モード5]この書込モード5は、第1のプロセッ
サモジュール10−1内の任意のプロセッサ16の書込
アクセスに対し自己のキャッシュユニット18及びスヌ
ープバス22で接続した他のキャッシュユニット18に
コピー値が書込権を所有した状態で登録されておらずに
ミスヒットとなり、且つ書込アドレスが第1のプロセッ
サモジュール10−1の主記憶28にあり、更に主記憶
28の書込アドレスの最新値が第2のプロセッサモジュ
ール10−2のキャッシュユニット18に書込権を所有
したダーティ状態で存在する場合である。
【0047】この場合、第1のプロセッサモジュール1
0−1は、ダーティ状態にある第2のプロセッサモジュ
ール10−2に対してシステムバス12を使用して書込
所有権の要求指令(リモートコマンド)を発行する。第
2のメモリモジュール10−2は、書込所有権の要求指
令を受理して、キャッシュユニット18の最新値を含む
書込所有権の移動をシステムバス12を使用して第1の
プロセッサモジュール10−1に応答する。
【0048】第1のプロセッサモジュール10−1は、
書込所有権の応答により得られた最新値を、アクセス元
のキャッシュユニット18に格納してプロセッサ16に
よる書込アクセスで上書きさせる。ここで、第2のプロ
セッサモジュール10−2のキャッシュユニット18
は、書込所有権を移動した際にタグメモリのダーティ状
態を無効化状態に更新し、また第1のプロセッサモジュ
ール10−1は書込所有権を受領した際に、自己のディ
レクトリ記憶部30のディレクトリエントリにおけるダ
ーティ状態を、キャッシュ上に最新値が存在するメモリ
モジュール10−1の情報に変更したダーティ状態に更
新する。
【0049】[書込モード6]この書込モード6は、第
1のプロセッサモジュール10−1内のプロセッサ16
の書込アクセスに対し自己のキャッシュユニット18及
びスヌープバス22を介して接続した他のキャッシュユ
ニット18にコピー値が書込権を所有した状態で登録さ
れておらずにミスヒットとなり、書込アドレスが第2の
プロセッサモジュール10−2内の主記憶28にあり、
更にこの主記憶28の書込アドレスの最新値が第3のプ
ロセッサモジュール10−3のキャッシュユニット18
に書込権を所有したダーティ状態で存在する場合であ
る。
【0050】この場合、第1のプロセッサモジュール1
0−1は、第2のプロセッサモジュール10−2にシス
テムバス12を使用して書込所有権の要求指令を発行す
る。書込所有権の要求指令を受領した第2のプロセッサ
モジュール10−2は、第3のプロセッサモジュール1
0−3に対してシステムバス12を使用して書込所有権
の要求指令を発行する。
【0051】書込所有権の要求指令を受領した第3のプ
ロセッサモジュール10−3は、キャッシュユニット1
8の最新値を含む書込所有権をシステムバス12を使用
して第1及び第2のプロセッサモジュール10−1,1
0−2に応答する。第2のプロセッサモジュール10−
2は、書込所有権の応答を受領して書込所有権の移動を
認識する。また第1のプロセッサモジュール10−1
は、書込所有権の受領で得られた最新値をアクセス元の
キュッシュユニット18に格納して、プロセッサ16の
書込アクセスで上書きさせる。
【0052】ここで、第3のプロセッサモジュール10
−3のキャッシュユニット18は、書込所有権を移動し
た際にタグメモリのダーティ状態を無効化状態に更新す
る。また第2のプロセッサモジュール10−2は、書込
所有権の移動を認識した際に、自己のディレクトリ記憶
部30のディレクトリエントリにおけるダーティ状態
を、最新値の存在するプロセッサモジュール10−1の
情報に変更したダーティ状態に更新する。
【0053】更に第1のプロセッサモジュール10−1
のアクセス元のキャッシュユニット18は、最新値を格
納した際に、タグメモリの無効化状態を書込権が存在す
るダーティ状態に更新する。 [書込モード7]この書込モード7は、プロセッサモジ
ュール内の複数のキャッシュ間でアクセスする場合であ
る。即ち、第1のプロセッサモジュール10−1内の任
意のプロセッサ16の書込アクセスに対し自己のキャッ
シュユニット18はミスヒットしたが、スヌープバス2
2を介して接続した他のキャッシュユニット14に書込
アドレスの最新値が書込権を所有したダーティ状態で存
在する場合である。
【0054】この場合、スヌープバス22を介してキャ
ッシュユニット18間でデータ転送及び書込所有権の移
動を行ってアクセス元のキャッシュユニット18に格納
した後に、プロセッサ16の書込アクセスにより上書き
させる。ここで、アクセス先のキャッシュユニット18
は書込所有権を移動した後に、タグメモリのダーティ状
態を無効化状態に更新する。またアクセス元のキャッシ
ュユニット18は、書込権を獲得した後にタグメモリを
無効化状態から書込所有権が存在するダーティ状態に更
新する。
【0055】[キャッシュユニットのアクセス競合処
理]本発明は、プロセッサモジュールのキャッシュユニ
ットに対し、モジュール内部からのアクセスとモジュー
ル外部からのアクセスが競合した場合、次の競合処理を
行う。まず先発したモジュールにキャッシュユニットを
獲得させて後発のモジュールにリトライの指示を行わせ
る。更に、先発したモジュールに競合した相手先モジュ
ールとアクセスアドレスを記憶させ、自己のアクセス終
了後に競合した相手先モジュール以外からのアクセスコ
マンドを受けた場合はリトライを指示し、競合した相手
先のリトライによるアクセスコマンドを優先的に受け付
ける。
【0056】具体的には、プロセッサモジュール10−
2のキャッシュユニット18に対し、モジュール内部の
あるプロセッサ16からのアクセスと外部のプロセッサ
モジュール10−2からのアクセスが競合し、プロセッ
サ16が先発してキャッシュユニット18を獲得した場
合である。この場合、プロセッサ16は、プロセッサモ
ジュール10−1にリトライの指示を行わせ、更に、競
合したプロセッサモジュール10−1とアクセスアドレ
スを記憶し、自己のアクセス終了後に競合したプロセッ
サモジュール10−1以外からのアクセスコマンドを受
けた場合はリトライを指示し、競合した第2プロセッサ
モジュール10−1のリトライによるアクセスコマンド
を優先的に受け付ける。
【0057】これにより外部のプロセッサモジュール1
0−1が、プロセッサモジュール10−2に内蔵してい
る複数のプロセッサ16とのアクセスの競合に負けてリ
トライを繰り返し、システムバス12のタイムエラーと
なってしまうことを未然に防止し、システムバス12を
経由したキャッシュコヒーレンスの効率化と高信頼性を
向上できる。
【0058】またキャッシュユニット18を獲得したモ
ジュールは、自己のアクセス終了後、競合相手先のモジ
ュールからのアクセスが所定時間発生しない場合は、競
合相手先とアクセスアドレスの記憶内容を初期化して、
競合相手先の優先受付けを解除する。 [主記憶に対するコピーバックの書込所有権]本発明の
プロセッサモジュールは、主記憶28に最新データがな
く複数のキャッシュユニット18に存在する場合、複数
のキャッシュユニットの1つが最新データを主記憶28
へコピーバックするための書込所有権を保有している。
この状態で、書込所有権を有するキャッシュユニットで
プロセッサ16による最新データのリプレースが発生し
た場合、書込所有権を最新データを保有しているキャッ
シュユニットに委譲し、最新データを保有するキャッシ
ュユニットが1つになるまで主記憶28への最新データ
のコピーバックを抑止して行わないようにする。
【0059】これによって、複数のキャッシュユニット
18及び主記憶28側のメモリ管理ユニット(ディレク
トリ側)26を結合しているスヌープバス22の負担を
軽減する。書込所有権の委譲は、複数のキャッシュユニ
ットは固有の識別番号#0〜#3をもつことから、最新
データをリプレースしたキャッシュユニットの識別番号
を基に、予め定めた順番に従って書込所有権を委譲す
る。
【0060】また主記憶28を管理するメモリ管理ユニ
ット26は、最新データがキャッシュユニット18に存
在し主記憶28のデータがダーティ状態にあることを示
す書込所有権を有するが、キャッシュユニット18間で
書込所有権の委譲が行われても、メモリ管理ユニット2
6の書込所有権を他のプロセッサモジュールに移動せず
にそのまま維持する。
【0061】[共有システムバス]また本発明に従え
ば、分散共有メモリ型のマルチプロセッサシステムにお
いて、キャッシュコヒーレンシ維持を効率よく実現し、
且つシステムの拡張性を損なうことのないキャッシュコ
ヒーセンス装置の共通システムバスが提供される。更
に、大規模なマルチプロセッサの利用が期待される基幹
システムへの使用を考慮した信頼性の高い共有システム
バスが提供される。更に、異なったバスとの接続を考慮
し、既存のバス資産の有効活用を可能とする共有バスが
提供される。
【0062】本発明の共有システムバスとして機能する
第2共有バス12は、複数のプロセッサモジュールのバ
ス接続ユニット32とバスアービタ(バス調停ユニッ
ト)とを結合して、複数のプロセッサモジュールの間で
スプリット型パケット転送によりバスコマンドの転送を
行い、バスコマンドに、アクセス要求元(ソースID)
を示すソースフィールド、第1のアクセス要求先(第1
宛先ID)を示す第1宛先フィールド、及び第2のアク
セス要求先(第2宛先ID)を示す第2宛先フィールド
の3つを備えたことを特徴とする。
【0063】ソースフィールド、第1宛先フィールド、
及び第2宛先フィールドの3つをもつ本発明のバスコマ
ンドは、リードバスコンドして使用される。リード要求
元となる第1プロセッサモジュール10−1は、自己の
リード要求の対象データが第2プロセッサモジュール1
0−2の主記憶28に存在する場合、ソースフィールド
に自己のユニットID#1を指定し、第1宛先フィール
ドに第2プロセッサモジュールのユニットID#2を指
定した第1バスコマンドを送出する。この場合、第2宛
先フィールドは使用しない。
【0064】第1バスコマンドを受信した第2プロセッ
サモジュール10−2は、リード要求の最新データが主
記憶28に存在せずに第3プロセッサジュール10−3
のキャッシュユニット18に存在する場合、ソースフィ
ールドに自己のユニットID#2を指定し、第1宛先フ
ィールドに最新データをもつ第3プロセッサモジュール
10−3のユニットID#3を指定し、更に第2宛先フ
ィールドにアクセス要求元の第1プロセッサモジュール
10のユニットID#1を指定した第2バスコマンドを
送出する。
【0065】第2バスコマンドを受信した第3プロセッ
サモジュール10−3は、ソースフィールドに自己のユ
ニットID#3を指定し、第1宛先フィールドに主記憶
28の第2プロセッサモジュール10−2のユニットI
D#2を指定し、更に第2宛先フィールドにリード要求
元の第1プロセッサモジュール10−1のユニットID
#1を指定したリプライコマンドを送出して、第1及び
第2プロセッサモジュール10−1,10−2に同時に
リードデータを応答する。
【0066】この場合、第1プロセッサモジュール10
−1は、第2プロセッサモジュール10−2から第3プ
ロセッサモジュール10−3に対し第2バスコマンドが
送出された際に、通常のバス転送より時間がかかること
から、バス転送のタイムアウトを監視するタイマの設定
時間を、第1時間からより長い第2時間に変更する。更
に、第2共有バス12で使用するバスコマンドは、ソー
スフィールド、第1宛先フィールドおよび第2宛先フィ
ールドの各々を、第2共有バスを示すバス識別子(バス
ID)とプロセッサモジュール等のユニットを示すユニ
ット識別子(ユニットID)の2つで表現する。これに
よって複数の第2共有バスをバス間接続ユニットを介し
て相互に接続した場合、別の第2共有バス内のユニット
を指定することができる。
【0067】また複数のプロセッサモジュールを第2共
有バス18で接続したサブシステムを、サブシステム接
続ユニットを介して複数結合した拡張システムの場合、
バスコマンドにサブシステム間での転送を示すサブシス
テム拡張識別子を設ける。このサブシステム拡張識別子
が有効なときに、バスコマンドの各サブシステム毎のコ
マンドフィールドを有し、各々ソースフィールド、第1
宛先フィールドおよび第2宛先フィールドの各々を指定
して、異なるサブシステムのユニットを指定することが
できるようにする。
【0068】更に、複数のプロセッサモジュールを接続
した第2共有バス18に対し、異種のシステムバスをも
つサブシステムが異種バス接続ユニットを介して結合さ
れた場合、バスコマンドは、異種のシステムバスをエミ
ュレートするコマンドをコマンドフィールドの一部に備
え、異種のシステムバス上のユニットを指定できるよう
にしている。
【0069】バスマスタとしての第1プロセッサモジュ
ール10−1がバススレーブとしての第2プロセッサモ
ジュール10−2へのバスコマンドの転送中に、第2プ
ロセッサモジュール10−2で異常を検出した場合、第
2プロセッサモジュール10−2は、エラーリプライバ
スコマンドを送出して第1プロセッサモジュール10−
1にエラー通知する。
【0070】またバスマスタとしての第1プロセッサモ
ジュール10−1から第2プロセッサモジュール10−
2へのバスコマンドのバス転送でバススレーブとして第
2プロセッサモジュール10−2が確定するまでは、バ
スアービタがバス異常を監視しており、バスアービタが
異常を検出すると、リプライバスコマンドを送出して第
1プロセッサモジュール10−1にエラー通知する。
【0071】このエラーリプライバスコマンドは、検出
した異常の原因を分類フィールド、アクセス経路が複数
存在する場合にどのアクセス経路で異常が発生したかを
示すフィールド、及び検出した異常の種類を示すフィー
ルドを有する。また第2共有バス12で使用するバスコ
マンドは、第1宛先フィールドおよび第2宛先フィール
ドの各々に、ソースユニットの動作識別子(アクセスI
D)を格納するアクセス識別子フィールドを設け、この
アクセス識別子フィールドの動作識別子によりバスコマ
ンドを修飾し、バスコマンドの動作モードを変更する。
【0072】例えばキャッシュコヒーレンスのために、
アクセス要求元となる第1プロセッサモジュール10−
1からのアクセス先の主記憶28をもつ第2プロセッサ
モジュール10−2に第1バスコマンドを送出し、第2
プロセッサモジュール10−2から最新データをキャッ
シュユニット18に保有する第3プロセッサモジュール
10−3に第2バスコマンドを送出し、最終的に第3プ
ロセッサモジュール10−3からリプライバスコマンド
を送出する場合、アクセス識別子を次のように指定す
る。まず第1プロセッサモジュール10−1は、第2バ
スコマンドにおける第1宛先フィールドのアクセス識別
子フィールドに自己の動作識別子を指定する。第2プロ
セッサモジュール10−2は、第2バスコマンドにおけ
る第1及び第2宛先フィールドのアクセス識別子フィー
ルドの各々に、第2バスコマンドと同じ動作識別子を指
定する。
【0073】第3プロセッサモジュール10−3は、リ
プライバスコマンドにおける第1及び第2宛先フィール
ドのアクセス識別子フィールドの各々に、第2バスコマ
ンドと同じ動作識別子を指定する。そして、第1及び第
2プロセッサモジュール10−1,10−2の各々は、
リプライバスコマンドの自己の宛先フィールドの動作識
別子とバスコマンド送出時に記憶保持した動作識別子と
の一致を判断して自己のバスコマンドに対するリプライ
であると判断する。
【0074】このためアクセス要求元の第1プロセッサ
モジュール10−1は、自己の送出した第1バスコマン
ドが第2プロセッサモジュール10−2による第2バス
コマンドの送出の契機となり、結果として第2バスコマ
ンドに対するリプライコマンドが第3プロセッサモジュ
ールから送出されるが、第1プロセッサモジュールは第
2バスコマンドを意識せず、あたかも自己の第1バスコ
マンドに対するリプライとして受領することができる。
【0075】第2共有バス12のハードウェアとして
は、データ及びパリティを並列転送するデータバス線
と、データバス線とは独立にバスシーケンスの動作を規
定するタグ情報線を有し、タグ情報線によるタグ情報の
指定により、1回のバス獲得で複数のバスサイクルを継
続する。このタグ情報線によるリトライの指定により、
バスサイクルの任意のタイミングで実行中のバスシーケ
ンスの無効化を指示することができる。
【0076】またタグ制御線で相互に接続された複数の
プロセッサモジュールのバス接続ユニット32とバスア
ービタは、複数のバス接続ユニットのいずれもバスサイ
クルを開始していない場合には、バスアービタから各バ
ス接続ユニットに対し個別に出力されるバス使用許可信
号(バスグラント信号)とバスアービタから全てのバス
接続ユニットに共通に出力されるバス使用開始指示信号
(タグバス信号)を同時に受信した特定のバス接続ユニ
ットがバスサイクルを開始する。
【0077】既に他のバス接続ユニットがバスシーケン
スを開始していた場合には、バス使用許可信号を受け取
ったバス接続ユニットが、他のバス接続ユニットが出力
するバスサイクルの終了信号を検出してバスサイクルを
開始する。またバスアービタは、特定タイミングで受理
したバス接続ユニットからのバス使用要求が全て処理さ
れるまで、後続のバス使用要求処理を保留する。
【0078】タグ情報線は、通常のバス使用要求信号に
使用する第1バス使用要求線と、異常報告等の緊急バス
使用要求信号に使用する第2バス使用要求線を有する。
バスアービタは、特定タイミングで受理したバス使用要
求信号の中で緊急要求信号を出力したバス接続ユニッに
優先してバス使用許可を与える。更に、第1及び第2バ
ス使用要求線の信号の組み合わせで、通常のバス使用要
求、緊急バス使用要求、バス使用要求無し、及びバス接
続ユニット自身の非動作状態の通知を行う。
【0079】[第2ディリレクトリ記憶部]本発明の別
の形態にあっては、メモリ管理ユニット26のディレク
トリ記憶部30に加え、バス接続ユニット32は第2デ
ィレクトリ記憶部をうもけたことを特徴とする。この第
2ディレクトリ記憶部には、他のプロセッサモジュール
に対するアクセス要求で応答待ちにある状態をキャッシ
ュライン単位に登録し、他のプロセッサモジュールから
のアクセスに対し第2ディレクトリの記憶部の参照で同
一キャッシュラインのアクセスを認識した場合、ビジー
を応答する。
【0080】具体的には、リモートとしての第1プロセ
ッサモジュール10−1からライトアクセスを受けたホ
ームとしての第2プロセッサモジュール10−2が、リ
モートの第3プロセッサモジュール10−3に対し同じ
キャッシュラインの無効化を要求した場合、リモートに
対する無効化要求の完了待ちの状態を第2ディレクトリ
記憶部に登録し、他のプロセッサモジュールからの同一
キャッシュラインのアクセス要求に対し、第2共有バス
12にビジーを応答する。
【0081】このビジー応答は、要求元のプロセッサモ
ジュール内のキャッシュユニットまで伝えてリトライを
行わせる。また無効化完了待ちの状態で、ホームの第2
プロセッサモジュール10−2に対する他のプロセッサ
モジュールのアクセス要求で、パス接続ユニット32の
バッファフルとなった場合、アクセス要求元のプロセッ
サモジュールのバス接続ユニットにビジーを応答し、キ
ャッシュユニットまでは伝えずに、第2共有バス32上
でのリトライを行わせる。
【0082】このような第2共有バス側の第2ディレク
トリ記憶部により、他のプロセッサモジュールのアクセ
要求を、メモリ管理ユニット26側まで伝える必要がな
く、ビシー応答を高速化できる。このような本発明のキ
ャッシュコヒーレント装置によれば次の作用が得られ
る。まず複数のプロセッサモジュールに設けた複数のキ
ャッシュ付きのプロセッサを内部のスヌープバス(第1
共通バス)を介して相互に接続すると共に主記憶と接続
する。更に、各プロセッサモジュールは主記憶側をシス
テムバス(第2共通バス)を介して接続する。この2階
層の共通バス構成により、プロセッサモジュール内での
キャッシュコヒーレンスのバス動作と、プロセッサモジ
ュール間でのキャッシュコヒーレンスのバス動作を分離
することができる。即ち、内部スヌープバスはモジュー
ル内のプロセッサ数に外部からアクセスする1台のプロ
セッサを加えたバス負荷で済む。また外部のシステムバ
スは、プロセッサモジュールの数分のバス負荷で済む。
このため、内部および外部の各共通バスの負荷をプロセ
ッサ数が増加しても抑えることができ、高速のキャッシ
ュコヒーレンスを実現して処理性能を向上できる。
【0083】また内部のスヌープバスは、プロセッサモ
ジュール外部への接続を必要としないため、線路長を短
くして電気的な特性を良好に保つことができ、これによ
ってバスのクロック周波数を高く、内部に設けたプロセ
ッサのキャッシュ間でのキャッシュコヒーレンスを高速
処理で実現できる。また外部のシステムバスを使用した
プロセッサモジュール間で行われるキャッシュコヒーレ
ンスにあっては、書込アクセスの際には、アクセス元の
キャッシュに対し最新値を転送するが、書込アドレスを
もつ主記憶への書込み(コピーバック)は行わずに、デ
ィレクトリ記憶部のキャッシュ状態のみをダーティ状態
(最新値がキュッシュ上に存在し、主記憶には旧い値が
存在する状態)に更新して終了する。このため、主記憶
への書込み(コピーバック)を行わない分、書込アクセ
ス時のキャッシュコヒーレンスを高速に終了できる。
【0084】この書込アクセスでダーティ状態となった
主記憶は、同じアドレスの読出アクセスの際に、最新値
をもつキャッシュのプロセッサモジュールからアクセス
元のキャッシュが存在するプロセッサモジュールへの転
送時に、同時にダーティ状態にある主記憶への転送書込
み(コピーバック)が行われ、読出アクセスとコピーバ
ックによる主記憶更新が並行して行われることで、より
高速の読出アクセスのキャッシュコヒーレンスが実現で
きる。
【0085】
【発明の実施の形態】
<目 次> 1.システム構成 2.CPUリードアクセス時のキャッシュコヒーレンス 3.CPUライトアクセス時のキャッシュコヒーレンス 4.キャッシュユニットのアクセス競合処理 5.コピーバックの書込所有権 6.システム共通バス (1)バス構成 (2)バスアビトレーション動作 (3)バス転送シーケンス (4)バス間転送 (5)バスコマンド 7.第2ディレクトリメモリ 8.その他 1.システム構成 図2は本発明のキャッシュコヒーレンス装置が適用され
るマルチプロセッサシステムのブロック図である。この
システムは、少なくとも1つのプロセッサエレメントを
もつプロセッサ群として例えば5つのプロセッサモジュ
ール10−1〜10−5を有し、プロセッサモジュール
10−1〜10−5を2本のシステムバス(第2共通バ
ス)12−1,12−2を介してお互いに接続してい
る。
【0086】プロセッサモジュール10−1〜10−5
は、図3のプロセッサモジュール10−1に代表して示
すように、例えば4つのプロセッサエレメント14−1
〜14−4を有し、スヌープバス22を介してお互いに
接続している。プロセッサエレメント14−1〜14−
4のそれぞれは、プロセッサ16−1〜16−4、キャ
ッシュユニット18−1〜18−4およびスヌープユニ
ット20−1〜20−4を備える。
【0087】メモリモジュール25は、スヌープバス2
2に接続されると同時に、他のポートよりシステムバス
12−1,12−2に接続される。メモリモジュール2
5はプロトコル管理ユニット24、メモリ管理ユニット
26およびモジュール接続ユニット32を備える。プロ
トコル管理ユニット24は、システムバス12−1,1
2−2と内部のスヌープバス22との間のプロトコル変
換を行う。バス接続ユニット32はメモリモジュール2
5とシステムバス12−1,12−2の間のバスアクセ
スを行う。
【0088】メモリ管理ユニット26には、主記憶とし
て機能するローカルストレージ28と、プロセッサモジ
ュール間でのキャッシュコヒーレンスの実現に使用され
るディレクトリメモリ30が接続される。スヌープユニ
ット22−1〜22−4は、スヌープバス22で特定の
マシンサイクルに同期させて複数のキャッシュユニット
18−1〜18−4をスヌープするスヌーププロトコル
に従って、主記憶としてのローカルストレージ28とキ
ャッシュユニット18−1〜18−4の間のキャッシュ
コヒーレンスを実現する。即ち、スヌープユニット22
−1〜22−4は、内部コヒーレンス処理部として機能
する。
【0089】他のプロセッサモジュールとの間のキャッ
シュコヒーレンスを実現する外部コヒーレンス処理部と
しての機能は、メモリ管理ユニット26に設けたキャッ
シュ変換部80により行われる。キャッシュ変換部80
は、システムバス12−1,12−2を使用した他のプ
ロセッサモジュールとの間のやり取りを通じ、ディレク
トリメモリ30の参照に基づき、プロセッサモジュール
間でのキャッシュコヒーレンスを実現する。
【0090】プロセッサエレメント14−1〜14−4
は、図4のプロセッサエレメント14−1に代表して示
すように、CPU回路16−1には1次キャッシュ36
をもつCPU34が設けられ、CPU34の外部には2
次キャッシュ38が接続される。2次キャッシュ38の
制御部として2次キャッシュ制御モジュール35が設け
られ、2次キャッシュ制御モジュール35にはタグメモ
リ40が接続される。CPU34の1次キャッシュ36
はライトスルーで制御され、2次キャッシュ38はコピ
ーバックで制御される。
【0091】2次キャッシュ制御モジュール35は、2
次キャッシュ38のデータのアドレスと、そのエントリ
のキャッシュ状態を示す情報を、タグメモリ40に登録
している。ここで2次キャッシュ38は、図5に示すよ
うに、キャッシュデータを256バイト他印のデータと
して登録している。このためキャッシュ制御モジュール
35は、256バイトのアドレス単位でキャッシュ登録
を管理する。この2次キャッシュ38上の256バイト
単位のデータをキャッシュライン100という。
【0092】したがって、タグメモリ40の中には25
6バイト単位のキャッシュライン100のアドレスが保
持されている。更に本発明にあっては、256バイトの
キャッシュライン100を64バイト単位のサブライン
102−1〜102−4に分割して、サブライン102
−1〜102−4ごとにキャッシュ状態を保持してい
る。
【0093】2次キャッシュ38は常にCPU34の1
次キャッシュ36を包含するように制御される。スヌー
プバス22で接続されている例えば図3に示す4つのプ
ロセッサエレメント14−1〜14−4における各キャ
ッシュユニット18−1〜18−4間でのデータのコヒ
ーレンスを保証するため、スヌープバス22によって2
次キャッシュ38がスヌープされる。
【0094】スヌープバス22はパケットプロトコルに
よるバスで、2次キャッシュ38のスヌープを行うため
の機構としてスヌープ送受信ユニット42、スヌープバ
ッファ44、コピーバックバッファ46およびプロセッ
サアクセスユニット48を有する。スヌープバス22に
は各種のスヌープコマンドが準備されている。スヌープ
バスはパケットプロトコルであるため、複数のアクセス
を同時に進行させることができる。
【0095】2次キャッシュ38のスヌープは、スヌー
プバス22に接続されている各プロセッサエレメント1
4−1〜14−4の2次キャッシュ制御モジュール35
で同時に行われ、その結果が同時にスヌープバス22上
のプロセッサエレメント固有のキャッシュ状態信号に反
映される。このキャッシュ状態信号は、スヌープバスに
接続している全てのプロセッサエレメント14−1〜1
4−4とメモリモジュール25で参照される。
【0096】メモリモジュール25側のスヌープバス2
2に対するユニットとしては、空間識別ユニット50、
スヌープ送受信ユニット52およびスヌープバス送信ユ
ニット60が設けられている。プロセッサエレメント1
4−1の2次キャッシュ制御モジュール35がキャッシ
ュ状態信号によってキャッシュ状態を表示すると同様
に、メモリモジュール25に設けているメモリ管理ユニ
ット26も、主記憶を分割配置したローカルストレージ
28の状態を表示するため、メモリ状態信号を持ってい
る。このメモリ状態信号も、スヌープバス22内の全て
の2次キャッシュ制御モジュール35に供給される。
【0097】このようなスヌープバス22上における2
次キャッシュ38に関するキャッシュ状態信号と、メモ
リモジュール25に接続したローカルストレージ28の
メモリ状態信号の内容から、プロセッサエレメント14
−1〜14−4に設けた2次キャッシュ制御モジュール
35のそれぞれは、CPU34のアクセスに対し応答を
行うプロセッサエレメントの判定、アクセス対象となっ
たキャッシュデータの最新値を書込権の所有状態で持っ
ている所謂オーナーの決定、各種のスヌープコマンドの
成否を判定する。
【0098】更に、タグメモリ40に保持している2次
キャッシュ38のキャッシュ状態の変更を必要に応じて
行う。更に、1次キャッシュ36の無効化や2次キャッ
シュ38からのデータの応答を伴う場合もある。このよ
うなスヌープバス22による一連の動作はパイプライン
で制御される。2次キャッシュ38のキャッシュ状態信
号による表示は、ビジー、ミス、クリーン、ダーティ、
エラーの表示がある。ビジー表示は、受信コマンドが処
理資源の枯渇で処理できない場合あるいはプロトコル上
矛盾をきたすタイミングのときに表示される。ミス、ク
リーンおよびダーティ表示は、2次キャッシュ38のタ
グメモリ40のスヌープ結果である。
【0099】即ち、ミス表示は、スヌープコマンドのア
ドレスで2次キャッシュ38をスヌープした結果、その
アドレスのデータを2次キャッシュ38で保持していな
いミスヒット検出の際に表示される。クリーン表示は、
2次キャッシュ38をスヌープした結果、ローカルスト
レージ28の内容と同じデータを2次キャッシュ38内
に保持している場合と、ローカルストレージ28の内容
に対し変更が加えられたデータを2次キャッシュ38内
に保持している場合である。
【0100】更にダーティ表示は、2次キャッシュ38
をスヌープした結果、ローカルストレージ28の内容に
対し変更が加えられた最新データを2次キャッシュ38
内に保持している場合であり、ローカルストレージ28
への書込みによる反映を行う責任を負っていることか
ら、この状態を書込権を所有しているオーナーと呼ぶ。
このようにプロセッサエレメント14−1〜14−4間
は、スヌープバス22を用いたスヌープ方式によりキャ
ッシュコヒーレンスが保たれる。
【0101】次にメモリモジュール25側を説明する。
メモリモジュール25にはメモリ管理ユニット26が設
けられ、メモリ管理ユニット26にメモリバス66を介
してローカルストレージ28を接続し、また専用線を介
してディレクトリメモリ30を接続している。ローカル
ストレージ28は4本のメモリバス66ごとに、メモリ
アクセスユニット68−1〜68−4と主記憶素子とし
てのSRAM70−1〜70−4を接続している。
【0102】メモリバス66は32ビット幅のバスであ
り、2つのバスを同時にアクセスすることで、キャッシ
ュラインにおけるサブラインの64ビット幅に一致する
1ワードのデータのアクセスを行う。ローカルストレー
ジ28は、4つのメモリバス66で4グループに分けら
れており、例えばメモリアクセスユニット68−1,6
8−2の2グループで1ワードのアクセスを行い、メモ
リアクセスユニット68−3と68−4で1ワードのア
クセスを行うインターリーブ方式でアクセス可能として
いる。
【0103】メモリモジュール25は、空間識別ユニッ
ト50により、メモリユニット26により接続したロー
カルストレージ28のメモリ空間を全てのPM10−1
〜10−5から参照可能な物理空間にマッピングするこ
とができる。図6は図4の空間識別ユニット50のマッ
ピング機能を示す。まずプロセッサエレメント14−1
に設けたCPU34のCPU物理アドレス空間86は、
例えば64GB(ギガバイト)のアドレス空間をもつ。
【0104】このうち先頭の0〜4GBの領域を、CP
Uで使用する制御レジスタ空間88に割り当てている。
また最後の60〜64GBの領域を、CPUのROM空
間92に割り当てている。残り4〜60GBの56GB
幅の領域は、PM10−1〜10−5に設けている全て
のCPU34でアクセス可能な共有空間90としてい
る。CPUで任意の36ビット物理アドレス94を指定
したCPUアクセス(読出アクセスまたは書込アクセ
ス)が発生すると、この36ビット物理アドレス94は
スヌープコマンドによってスヌープバス22を経由し
て、メモリ制御モジュール25の空間識別ユニット50
に送られる。
【0105】勿論、空間識別ユニット50にスヌープバ
ス22を介して送られるのは、スヌープバス22で接続
しているプロセッサエレメント14−1〜14−4のキ
ャッシュ上に、アクセス対象となった物理アドレス94
のキャッシュラインが存在しない場合である。空間識別
ユニット50は、制御テーブル95を保持している。制
御テーブル95には共有空間90のアドレス4GBから
60GBのエントリが設けられ、このアドレスによるエ
ントリに対応してID領域を設けている。対応ID領域
には、共有空間90のアドレスが割り当てられたプロセ
ッサモジュールを示す情報としてユニットIDが登録さ
れている。このユニットIDは、物理的には、図2のシ
ステムバス12−1,12−2にプロセッサモジュール
を接続することのできるスロット番号を示している。
【0106】この例にあっては、4GBから24GBの
アドレスに対応してユニットID#00〜#07を登録
している。対応ID領域には、ユニットIDに加えてプ
ロセッサモジュールの実装と未実装を示す情報も登録さ
れている。この例では、12〜16GBの物理アドレス
をもつユニットID=#02のプロセッサモジュールは
未実装となっていることがわかる。またユニットID=
#00〜#03の4つについては4GB幅のアドレス領
域が割り当てられているが、ユニットID=#04〜#
03の4つにプロセッサモジュールについては1GB幅
のアドレスが割り当てられている。
【0107】更に、制御テーブル95の対応ID領域に
は自ホーム情報も格納されている。自ホーム情報とは、
CPUアクセスで発行された36ビット物理アドレス9
4がプロセッサモジュール自身に内蔵したローカルスト
レージのアドレス空間に存在することを意味する。この
ような空間識別ユニット50に対するスヌープバス22
からの36ビット物理アドレス94によるアクセスで、
生成情報としてホーム情報96、ユニットID98、3
6ビット物理アドレス94が生成される。ホーム情報9
6は、アクセスされた物理アドレス94が自ホームか否
か、即ち物理アドレス94がアクセスを起こしたプロセ
ッサモジュール自身に存在するか否かを表わす。
【0108】ユニットID98は、物理アドレス94が
存在するプロセッサモジュールを示す。具体例を説明す
ると、次のようになる。CPUアクセスにより36ビッ
ト物理アドレス94として、16進表示でX´4.D0
00.0000´が発生したとする。この場合、空間識
別ユニット50の制御テーブル95のエントリで対応I
DエリアからユニットID=#03が生成され、右側の
破線の枠に示すように、ホーム情報96としてPM自身
がホームでないことを示す「not Home」、ユニ
ットID=#03、物理アドレス94であるX´4.D
000.0000´を生成する。
【0109】再び図4のメモリモジュール25を参照す
るに、メモリモジュール25はスヌープバス22を通し
てプロセッサエレメント14−1のCPU34からアク
セスされ、またシステムバス12−1(12−2を含
む)を通して、他のプロセッサモジュール10−2〜1
0−5に設けているCPU34からもアクセスされる。
プロセッサモジュール10−1内に設けたプロセッサエ
レメント14−1〜14−4のキャッシュ間におけるキ
ャッシュコヒーレンスはスヌープバス22を使用して実
現されているのに対し、プロセッサモジュール10−1
〜10−5間にあっては、システムバス12−1,12
−2を使用したディレクトリ方式でキャッシュコヒーレ
ンスを保っている。このディレクトリ方式によるキャッ
シュコヒーレンスを実現するため、ディレクトリメモリ
32には256バイトのキャッシュライン単位に1エン
トリが記憶されている。
【0110】このディレクトリエントリは、CPUアク
セスで発生した36ビット物理アドレスで選択され、キ
ャッシュラインの状態を表示している。このディレクト
リエントリにおけるキャッシュラインの状態表示には、
ダーティ、シェアおよびインバリッドの状態がある。ダ
ーティとは、ある2次キャッシュ38上のキャッシュラ
インが書き替えられて最新データとなっており、キャッ
シュラインのコピー元となるローカルストレージ28上
には旧いデータしかなく、書き替えたプロセッサエレメ
ントが最新データを所有していることを意味する。
【0111】シェアとは、キャッシュラインのデータが
プロセッサモジュールによって参照されたことを示し、
ローカルストレージ28上のデータと同一のデータが2
次キャッシュ38に同時に存在している可能性を示す。
更にインバリッドとは、キャッシュラインが、どのプロ
セッサモジュールからも参照されず、また書き替えられ
ていない状態を示す。
【0112】更に、あるキャッシュラインがダーティの
場合、書き替えられた最新データをもつプロセッサモジ
ュールの識別情報がメモリ管理ユニット26に保持され
る。またキャッシュラインがシェアの場合にも、ローカ
ルストレージ28のデータのコピーをもつプロセッサモ
ジュールの識別情報がメモリ管理ユニット26に保持さ
れる。
【0113】図7は、図4のメモリモジュール25に設
けたメモリ管理ユニット26の詳細である。図7におい
て、メモリ管理ユニット26には、バスアービタ74、
メモリバス60を介してローカルストレージ28を接続
したメモリバス制御ユニット76、専用線でディレクト
リメモリ30を接続したディレクトリ制御ユニット78
が設けられる。
【0114】またメモリ管理ユニット26には、プロセ
ッサモジュール間をディレクトリ方式を使ってキャッシ
ュコヒーレンスを保つため、キャッシュ変換部80が設
けられ、ローカルステートマシン81、ホームステート
マシン82およびリモートステートマシン83を内蔵し
ている。本発明のディレクトリ方式を使用したプロセッ
サモジュール間のキャッシュコヒーレンスの制御にあっ
ては、アクセスを起動したプロセッサモジュールをロー
カルと呼び、アクセスしたアドレスをローカルストレー
ジにもっているプロセッサモジュールをホームと呼ぶ。
また、アクセスしたローカルストレージのアドレスがダ
ーティ状態、即ちローカルストレージのアドレスに旧い
データしかなく他のプロセッサモジュールのキャッシュ
上で最新データをキャッシュ上に所有しているプロセッ
サエレメントが属しているプロセッサモジュールをリモ
ートと呼ぶ。
【0115】このようなプロセッサモジュールのローカ
ル、ホームおよびリモートの各ステートは、キャッシュ
変換部80に設けたローカルステートマシン80、ホー
ムステートマシン82およびリモートステートマシン8
4の処理動作で実現される。これら3つのステートマシ
ン81,82,83に対応し、図4のメモリモジュール
25には、バスアービタ74を経由して、それぞれのス
テートマシンの処理対象となるコマンドおよびデータを
保持するためのバッファキューが設けられている。即
ち、ローカルステートマシン80に対応してローカルア
クセスバッファキュー54が設けられる。
【0116】ローカルアクセスバッファキュー54に
は、空間識別ユニット50で生成された図6の生成情報
であるホーム情報Home、ユニットIDおよび36ビット
物理アドレスが格納される。更に、ローカルアクセスバ
ッファキュー54に対してはスヌープ送受信ユニット5
2より応答割込みINT が与えられ、またローカルアクセ
スバッファキュー54が一杯になると、フル状態を示す
情報Fullをスヌープ送受信ユニット52に返している。
【0117】ホームステートマシン82に対応しては、
メモリモジュール25にホームアクセスバッファキュー
56が設けられる。ホームアクセスバッファキュー56
には、システムバス12−1,12−2を使用して発行
されたローカルとなったプロセッサモジュールからのア
クセスコマンド、所謂ホームコマンドが格納される。リ
モートステートマシン84に対応しては、リモートアク
セスバッファキュー58が設けられる。リモートアクセ
スバッファキュー58には、ホームとなったプロセッサ
モジュールからシステムバス12−1,12−2を使用
して発行されたアクセスコマンド、所謂リモートコマン
ドが格納される。
【0118】ローカルアクセスバッファキュー54に格
納するローカルコマンドおよびホームアクセスバッファ
キュー56に格納するホームコマンドについては、メモ
リ管理ユニット26に設けているローカルステートマシ
ン80およびホームステートマシン82のそれぞれでロ
ーカルストレージ28のアクセスを伴うが、リモートア
クセスバッファキュー58のリモートコマンドはプロセ
ッサエレメント14−1の2次キャッシュ38上のキャ
ッシュラインを対象とするアクセスであるため、スヌー
プバス送信ユニット60によって直接、スヌープバス2
2に接続されている。
【0119】次に、図7のメモリ管理ユニット26に設
けたディレクトリ制御ユニット78および専用線で接続
したディレクトリメモリ30の内容を説明する。図8
は、メモリ管理ユニット26に設けたディレクトリ制御
ユニット78に設けられるディレクトリエントリレジス
タ104の内容であり、このディレクトリエントリレジ
スタ104の内容がディレクトリメモリ30に格納され
たキャッシュラインごとのディレクトリエントリの読出
結果である。したがってディレクトリエントリレジスタ
104の内容は、これ即ちディレクトリメモリ30に記
憶されたディレクトリエントリデータそのものの説明と
なる。
【0120】ディレクトリエントリレジスタ104は、
下位8ビットにシェアードマップビット領域106を割
り当てている。このシェアードマップビット領域106
は、プロセッサモジュール内の主記憶であるローカルス
トレージ28のキャッシュラインに対応するデータが参
照されて、いずれのプロセッサモジュールの2次キャッ
シュ上に存在するかを示すビットである。
【0121】このシェアードマップビット領域106に
対しては、図9に示すシェアードマップビット対応レジ
スタ112が組み合わされ、更に、シェアードマップビ
ット対応レジスタ112には図10のプロセッサモジュ
ール構成レジスタ114が組み合わされる。ディレクト
リエントリレジスタ104のシェアードマップビット領
域106はビットS0〜S7であり、このビットS0〜
S7を1にセットすることで、シェアードマップビット
対応レジスタ112で示されるプロセッサモジュール上
にキャッシュラインのデータがシェア状態で存在するこ
とを示す。
【0122】シェアードマップビット対応レジスタ11
2は例えば16台のプロセッサモジュールのユニットI
D=#00〜#15に対応するマップビット対応エリア
をもっている。これに対しシェアードマップビット領域
106は、S0〜S7の8ビットと半分しかない。この
ため、シェアードマップビット対応レジスタ112にシ
ェアードマップビット領域106のシェアードマップビ
ットを重複して格納することで、シェアードマップビッ
トを複数のプロセッサモジュールについて表現すること
ができ、ディレクトリエントリレジスタ104のビット
低減を実現している。
【0123】更に、シェアードマップビット領域106
に格納するシェアードマップビットS0〜S7は、2次
キャッシュ上では256バイトのキャッシュラインを4
分割した64バイトのキャッシュサブラインごとに保持
されている。これに対しシェアードマップビットは1ビ
ットしかないことから、4つのキャッシュサブラインの
シェア状態をORによって表わしている。
【0124】この4つのサブラインのORによるシェア
ードマップビットの表現は、2次キャッシュのキャッシ
ュコヒーレンスがスヌープ方式で実現されているため、
シェア状態のキャッシュラインが存在するプロセッサエ
レメントを意識することなくアクセスでき、複数のサブ
ラインのOR表現が可能となっている。図9のシェアー
ドマップビット対応レジスタ112に対応して設けた図
10のプロセッサモジュール構成レジスタ114には、
プロセッサモジュール実装ビット領域116とバスID
ビット領域118が設けられている。バスIDビット領
域118にはシステムバス12−1,12−2に分けた
バスIDが格納されている。各システムバス12−1,
12−2は16個のスロットをもっている。したがって
最大16台のプロセッサモジュールを実装することがで
きる。
【0125】プロセッサモジュール実装ビット領域11
6はユニットIDと同じスロット番号#00〜#15に
1対1に対応したビット領域をもっており、実装状態で
ビット1がセットされ、未実装状態でビット0にリセッ
トされている。図11は、ディレクトリエントリレジス
タ104、シェアードマップビット対応レジスタ112
およびプロセッサモジュール構成レジスタ114の具体
的な対応関係を示している。まずプロセッサモジュール
構成レジスタ114はプロセッサモジュール実装ビット
領域116のみを示しており、ビット1にセットされた
ユニットIDが実装されたプロセッサモジュールを示し
ている。
【0126】この例ではユニットID=#00,#0
2,#05,#06,#08,#10,#11,#13
にプロセッサモジュールが実装されて、それ以外は未実
装となっている。プロセッサモジュール構成レジスタ1
14の各ビットは、シェアードマップビット対応レジス
タ112に1対1に対応している。あるプロセッサモジ
ュールのCPUアクセスで、あるプロセッサモジュール
の主記億となるローカルストレージのキャッシュライン
が参照されて、そのコピーがキャッシュ上に存在するシ
ェア状態が起きると、そのキャッシュラインのディレク
トリエントリデータのシェアードマップビット領域10
6の空きビットが1にセットされ、同時にシェアードマ
ップビット対応レジスタ112のコピーデータがシェア
状態で存在するプロセッサモジュールのレジスタ領域、
シェアードマップビット領域106のビット1を示すイ
ンデックス情報が格納される。
【0127】例えば、シェアードマップビットS6につ
いては、シェアードマップビット対応レジスタ112の
ユニットID=#06と#10に対応したエリアに、そ
れぞれS6を格納している。これによって、シェアード
マップビットS6はユニットID=#06および#10
の2つのプロセッサモジュールに参照され、それぞれキ
ャッシュ上でシェア状態にあることを表わしている。
【0128】再び図8のディレクトリエントリレジスタ
104を参照するに、シェアードマップビット領域10
6に続いてはダーティサブラインビット領域108が設
けられている。ダーティサブラインビット領域108は
256バイトのキャッシュラインを分割した4つのサブ
ラインに対応してビットD0〜D3が割り当てられてい
る。
【0129】このダーティサブラインビットD0〜D3
は、ビット1にセットすることで、システム内のいずれ
かのプロセッサモジュールのキャッシュ上に、主記憶と
してのローカルストレージ28の旧いデータに対し、書
き替えられた最新データが存在することを表わしてい
る。また、ダーティサブラインビット領域108がビッ
ト0にリセットされている場合には非ダーティ状態を意
味r.。
【0130】この場合には主記憶としてのローカルスト
レージ28に最新データが存在し、シェアードマップビ
ットS0〜S7で指定されるいずれかのプロセッサモジ
ュール上に、シェア状態でそのコピーデータが存在する
ことを意味する。データサブラインビットD0〜D3に
関するプロセッサモジュールの識別情報は、主記憶とし
てのローカルストレージ28上の特定領域、例えば図6
のCPU物理アドレス空間86における制御レジスタ空
間88に格納されている。
【0131】図12は、ディレクトリエントリレジスタ
104の具体的な内容を示す。まずシェアードマップビ
ット領域は、システムバス12−1,12−2に対応し
てシェアードマップビット領域106−1と106−2
に分けられている。ここで、システムバス12−1側に
ついてのみプロセッサモジュールを実装しており、シス
テムバス12−2側についてはプロセッサモジュールを
未実装であった場合には、シェアードマップビット領域
106−1側が実装プロセッサモジュール用に使用され
る。
【0132】シェアードマップビット領域106−1で
は、シェアードマップビットS3とS4にビット1がセ
ットされている。この場合、図9に示したシェアードマ
ップビット対応レジスタ112による対応で、例えばシ
ェアードマップビットS3はユニットID=#03のプ
ロセッサモジュールのキャッシュラインのデータの全サ
ブラインのシェア情報のORを意味する。また、シェア
ードマップビットS4が同じく図9のシェアードマップ
ビット対応レジスタ112による対応関係の指定で、例
えばユニットID=#04のプロセッサモジュール上の
あるプロセッサエレメントのキャッシュ上の全サブライ
ンのシェア状態のORとなる。
【0133】一方、ダーティサブラインビット領域10
8については、例えばダーティサブラインビットD1と
D4がビット1にセットされ、D2とD3がビット0に
リセットされている。このダーティサブラインビットD
1〜D4に対応して、ローカルストレージ28にはプロ
セッサモジュール情報格納領域120,122,12
4,126が設けられている。
【0134】例えばダーティサブラインビットD1のプ
ロセッサモジュール情報領域120には、ユニットID
=#01のプロセッサモジュールに存在するキャッシュ
上にダーティ状態として最新データが存在することを示
している。同様に、ビット1にセットされたダーティサ
ブラインビットD4については、プロセッサモジュール
情報領域126にユニットID=#02のプロセッサモ
ジュールに存在するキャッシュ上にダーティ状態として
最新データが存在することを示している。
【0135】またビット0にリセットされたダーティサ
ブラインビットD2,D3のプロセッサモジュール情報
領域122,124については、このキャッシュライン
の物理アドレスが存在する主記憶としてのローカルスト
レージに最新データがあり、いずれかのプロセッサモジ
ュールのキャッシュ上に主記憶の最新データの参照によ
りコピーデータがシェア状態で存在することを示す。
【0136】シェア状態でコピーデータが存在するプロ
セッサモジュールのユニットIDについては、シェアー
ドマップビット領域106−1のビット1にセットされ
たシェアードマップビットS3,S4に対する図9のシ
ェアードマップビット対応レジスタ112の参照で得ら
れ、例えばユニットID=#03,#04のプロセッサ
モジュール上にシェア状態でコピーデータが存在する可
能性を示す情報が格納されている。
【0137】またビット0にセットされたダーティサブ
ラインビットD2,D3のプロセッサモジュール情報領
域122,124の内容は、シェアード以外に非シェア
ードが格納される場合もあり、この場合には、対応する
主記憶としてのローカルストレージにのみ最新データが
存在することを示す。次に、スヌープバス22のパケッ
トを説明する。パケットは起動コマンドと応答コマンド
に分類される。起動コマンドと応答コマンドは、基本的
に対になっている。パケットはコマンドフェーズとデー
タフェーズからなる。コマンドフェーズは1クロックで
ある。データフェーズは、コマンドとサイズによって0
から8クロックまでの長さをとることができる。
【0138】起動コマンドのコマンドフェーズは、パケ
ットの宛先を示す宛先フィールド、パケット処理につい
て補助的な指示を含むフラグフィールド、処理対象のデ
ータサイズを示すサイズフィールド、コマンドの種別を
示すタイプフィールド、コマンドの処理対象のアドレス
を示すアドレスフィールドから構成される。起動コマン
ドと応答コマンドの区別はタイプフィールドで識別す
る。
【0139】一方、応答コマンドもコマンドフェーズと
データフェーズからなる。コマンドフェーズは1クロッ
クで、データフェーズはコマンドとサイズによって0か
ら8のクロックの長さをとることができる。応答コマン
ドのコマンドフェーズは、パケットの宛先を示す宛先フ
ィールド、アクセスの成否,エラー要因およびリトライ
指示を示すリプライコードフィールド、リプライの種別
を示すリプライフィールド、コマンドの種別を示すコマ
ンドフィールド(リプライであることを示す種別情報が
格納される)、コマンドの処理対象のアドレスを示すア
ドレスフィールドから構成される。
【0140】複数のプロセッサモジュール間を接続する
システムバス12−1,12−2についても、パケット
は基本的にスヌープバス22と同じであるが、バスクロ
ックが相違する。即ち、スヌープバスはバスの線路長が
モジュール筐体内で済むことから短く、電気的特性が良
いので、例えば60MHzのクロック周波数とできる。
【0141】これに対しシステムバス12−1,12−
2はバックパネルを介して複数のプロセッサモジュール
間に接続されるために線路長が長く、電気的特性の制約
から例えば40MHzのクロック周波数に抑えられてい
る。このようなスヌープバス22とシステムバス12−
1,12−2の間のクロック周波数の相違によるタイミ
ングは、図3のメモリモジュール25に示したプロトコ
ル管理ユニット24によるプロトコル変換機能により調
整がとられている。
【0142】図13は、スヌープバス22で使用される
コマンドの種類を、プロセッサ16、スヌープユニット
20、メモリ管理ユニット26に分けて示している。次
に、図4のプロセッサエレメント14−1に設けている
キャッシュ制御モジュール35側におけるキャッシュ状
態の遷移を説明する。まず、2次キャッシュ制御モジュ
ール35のタグメモリ40にキャッシュサブライン単位
に保持されるキャッシュ状態には、図14に示す無効状
態、シェアードクリーン状態、シェアードモディファイ
状態、排他的ダーティ状態、シェアードダーティ状態の
5つがある。
【0143】無効状態INVは2次キャッシュ38上に
データが存在しない非キャッシュ状態である。シェアー
ドクリーン状態SH&Cは、ホームとなるプロセッサモ
ジュールの主記憶であるローカルストレージと同一内容
のデータを保持している状態である。シェアードモディ
ファイ状態SH&Mは、ホームとなる主記憶上にあるデ
ータは最新データではない旧いデータであり、自分自身
の2次キャッシュには、そのコピーデータが存在し、更
に自分のプロセッサモジュール内の他の2次キャッシュ
上に排他的ダーティ状態EX&Dにより、システム内で
唯一の最新データが存在している状態である。
【0144】排他的ダーティ状態EX&Dはシステム内
で唯一の最新データを保留している状態であり、この場
合、書込権を所有した所謂オーナーとなっている。更
に、シェアードダーティ状態SH&Dは、ホームとして
の主記憶上に最新データがなく、自分のプロセッサモジ
ュール内の2次キャッシュ群に最新データを保留してお
り、更に、自分のプロセッサモジュール内の2次キャッ
シュ群にホームの主記憶データのコピーをもったシェア
ードモディファイ状態SH&Mが存在し、最新データを
保留しているキャッシュ制御モジュール自身が書込権を
所有してオーナーとなっている場合である。
【0145】図15は図4の2次キャッシュ制御モジュ
ール35におけるキャッシュ状態の遷移を示す。まず初
期状態は、ブロック130の無効状態INVである。こ
の状態でプロセッサのリードアクセスによって1次キャ
ッシュ36がミスヒットになると、アクセス要求が2次
キャッシュ状態モジュール35に発行される。このとき
2次キャッシュ38の該当するキャッシュサブラインが
無効状態INVであれば、スヌープバス22へデータを
要求するコマンドを送出する。
【0146】この場合、遷移状態はブロック150のシ
ェアードモディファイ状態SH&Mに遷移するケース1
の場合と、ブロック140のシェアードクリーン状態S
H&Cに遷移するケース2の場合の2つがある。ケース
1の場合、ブロック150のシェアードモディファイ状
態(SH&M)は、他のプロセッサエレメントが排他的
ダーティ状態EX&Dあるいはシェアードダーティ状態
SH&Dで、アクセス対象となったサブラインをキャッ
シュ上に所有している場合であり、いずれかのプロセッ
サエレメントのキャッシュ状態信号によってダーティが
表示される。
【0147】そこで、ダーティが表示されたプロセッサ
エレメントのキャッシュ制御モジュール35が2次キャ
ッシュ38をアクセスし、データ応答をスヌープバス2
2に発行する。このとき応答を行ったプロセッサエレメ
ントでキャッシュ状態がブロック160の排他的ダーテ
ィ状態EX&Dであった場合には、ブロック170のシ
ェアードダーティ状態SH&Dに遷移する。応答を受け
取ったプロセッサエレメントは、キャッシュ状態をブロ
ック150のシェアードモディファイ状態SH&Mへ遷
移する。
【0148】一方、ケース2の場合は、プロセッサのリ
ードアクセスの1次キャッシュにおけるミスヒットに対
するアクセス要求に対し、他のプロセッサエレメントが
ブロック140のシェアードクリーン状態SH&Cか或
いはブロック130の無効状態INVであった場合であ
り、キャッシュ状態信号およびメモリモジュール25側
のメモリ状態信号はクリーン或いはミスが表示される。
クリーン表示を行ったキャッシュ制御モジュール35
は、キャッシュ状態信号を参照して、応答を作成すべき
か否か判断する。
【0149】同様に、メモリ状態信号を参照したメモリ
モジュール25、即ちメモリモジュール25に設けてい
るメモリ管理ユニット26も、メモリ状態信号を参照し
て、応答を作成すべきか否か判断する。応答すべきこと
を検出したモジュールが2次キャッシュ制御モジュール
35であれば、2次キャッシュメモリ38にアクセス
し、データの応答をスヌープバス22に発行する。応答
すべきことを検出したモジュールがメモリモジュール2
5のメモリ管理ユニット26であれば、主記憶としての
ローカルストレージ28へのアクセスを起動し、スヌー
プバス22に応答データを発行する。
【0150】このようにしてスヌープバス22から応答
データを受け取ったアクセス元の2次キャッシュ制御モ
ジュール35は、ブロック130の無効状態INVから
ブロック140のシェアードクリーン状態SH&Cに遷
移する。 2.CPUリードアクセス時のキャッシュコヒーレンス 次に、図2に示したプロセッサモジュール10−1〜1
0−5のいずれかのCPUでリードアクセスが発生した
場合のキャッシュコヒーレンスの処理を、読出モード1
〜3に分けて説明する。 (1)読出モード1 図16は読出モード1のキャッシュコヒーレンスのプロ
トコルを示している。
【0151】読出モード1は、プロセッサモジュール1
0−1内の任意のCPUの読出アクセスP−RDに対
し、キャッシュユニット群18の中の自己のキャッシュ
ユニットでミスヒットし、且つスヌープバス22で接続
した他の全てのキャッシュユニット18でミスヒットし
た場合である。この場合には、メモリ管理ユニット26
に対し主記憶となるローカルストレージ28をアクセス
するためのリモートコマンドとしてコマンドT−CRが
発行される。ここで、読出アドレスがプロセッサモジュ
ール10−1のローカルストレージ28にあることでプ
ロセッサモジュール10−1はホームとなり、更にロー
カルストレージ28のデータがリモートとなるプロセッ
サモジュール10−2内のキャッシュユニット群のいず
れかに最新データをもつダーティ状態で存在していたも
のとする。
【0152】このような場合、読出アクセスを発生した
プロセッサモジュール10−1のメモリ管理ユニット2
6は、システムバス12にリモートコマンド220を発
行して、プロセッサモジュール10−2にアクセスす
る。このリモートコマンド220を受領したプロセッサ
モジュール10−2のメモリ管理ユニット26は、スヌ
ープバス22を介してダーティ状態Dにあるキャッシュ
ユニットから最新データを取得した後に、システムバス
12を使用して最新データをリプライデータ230とし
て、ローカルで且つホームとなっているプロセッサモジ
ュール10−1に応答する。
【0153】プロセッサモジュール10−1は、システ
ムバス12の応答として得られたリプライデータ230
をアクセス元のキャッシュユニットにスヌープバス22
を介して格納し、CPUの読出アクセスに対するリード
データとして応答させる。同時に、主記憶としてのロー
カルストレージ28に最新データを書き込むことで、キ
ャッシュコヒーレンスを実現する。ここでリモートコマ
ンド220を受けて最新データの応答を行ったプロセッ
サモジュール10−2のキャッシュユニットにあって
は、ダーティ状態Dをクリーン状態Cに更新する。ま
た、アクセス元のプロセッサモジュール10−1のロー
カルストレージ28のキャッシュデータを管理している
ディレクトリメモリについて、アクセス対象となったキ
ャッシュラインのダーティ状態Dをシェア状態Sに更新
する。更に、アクセス元のキャッシュユニットについて
は、無効状態Iをクリーン状態Cに更新する。 (2)読出モード2 図17は読出モード2におけるキャッシュコヒーレンス
のためのプロトコルを示す。この読出モード2は、任意
のCPUの読出アクセスP−RDに対し自己のキャッシ
ュユニットでミスヒットし、且つスヌープバス22で接
続した他の全てのキャッシュユニットでミスヒットし、
且つ読出アドレスが他のプロセッサモジュール10−2
の主記憶であるローカルストレージ28にあり、このロ
ーカルストレージ28の読出アドレスのデータが別のプ
ロセッサモジュール10−3のいずれかのキャッシュユ
ニット上に最新データをもつダーティ状態Dで存在する
場合である。
【0154】この場合、読出アクセスが起きたプロセッ
サモジュール10−2のメモリ管理ユニット26はロー
カルとして動作し、システムバス12にホームコマンド
240を発行してプロセッサモジュール10−2にアク
セスする。プロセッサモジュール10−2は、システム
バス12から受領したホームコマンド240に基づき、
読出アドレスによるディレクトリメモリの参照でプロセ
ッサモジュール10−3のキャッシュ上にダーティ状態
Dで最新データが存在することを認識し、システムバス
12にリモートコマンド250を発行してプロセッサモ
ジュール10−3にアクセスする。
【0155】プロセッサモジュール10−3は、システ
ム12−2から受領したリモートコマンド250に基づ
き、メモリ管理ユニット26がリモートとして動作し、
スヌープバス22によってダーティ状態Dにあるキャッ
シュユニットにアクセスして最新データを取得した後、
システムバス12を使用して、ホームとしてのプロセッ
サモジュール10−2およびローカルとしてのプロセッ
サモジュール10−1のそれぞれにリプライデータ26
0を応答する。ホームとしてのプロセッサモジュール1
0−2は、システムバス12の応答により得られたリプ
ライデータ260により主記憶としてのローカルストレ
ージ28の対応データの書込みを行って、最新データに
更新する。
【0156】同時に、ローカルとしてのプロセッサモジ
ュール10−1にあっては、システムバス12からの応
答で受領したリプライデータ260をスヌープバス22
を介してアクセス元のキャッシュユニットに転送して2
次キャッシュ上に格納し、CPUの読出アクセスに対し
リードデータとして応答させる。ここで、リモートとな
ったプロセッサモジュール10−3で最新データの応答
を行ったキャッシュユニットは、キャッシュ状態をダー
ティ状態Dからクリーン状態Cに更新する。またホーム
となったプロセッサモジュール10−2にあっては、ア
クセス対象となったキャッシュラインの状態をダーティ
状態Dからシェア状態Sに更新する。
【0157】具体的には、図8のディレクトリエントリ
レジスタ104のダーティサブラインビット領域108
の対応するサブラインビットを1から0にリセットす
る。また、リモートとしてのプロセッサモジュール10
−3およびローカルとしてのプロセッサモジュール10
−1にシェア状態でホームにおけるローカルストレージ
28のデータと同一データが存在するシェア状態にある
ことから、シェアードマップビット領域106の対応す
るシェアードマップビットを1にセットする。
【0158】更に、ローカルとなったプロセッサモジュ
ール10−1のアクセスが発生したキャッシュユニット
にあっては、無効状態Iをクリーン状態Cに遷移させ
る。 (3)読出モード3 図18は読出モード3におけるキャッシュコヒーレンス
のプロトコルであり、このモードにあっては、アクセス
が発生したモジュールの内部のキャッシュユニット間で
のスヌープバス22を使用したキャッシュコヒーレンス
が行われる。読出モードには図18(A)と図18
(B)の2つのケースがある。
【0159】図18(A)はCPUの読出アクセスP−
RDが発生したキャッシュユニット18−4が無効状態
INVにあってミスヒットとなったが、スヌープバス2
2で接続された他のキャッシュユニット18−1に最新
データがシェアードクリーン状態SH&Cで存在してい
た場合である。この場合には、キャッシュユニット18
−4がスヌープバス22を使用してコマンドT−CRを
発行し、キャッシュユニット18−1から該当するサブ
ラインを含むリプライデータ270の応答が行われ、キ
ャッシュユニット18−4上に格納されて、読出アクセ
スにリードデータとして応答する。
【0160】このときアクセス元のキャッシュユニット
18−4にあっては、無効化状態INVからシェアード
クリーン状態SH&Cに遷移し、アクセス先のキャッシ
ュユニット18−1にあってはシェアードクリーン状態
SH&Cを維持する。図18(B)は無効化状態INV
にあるキャッシュユニット18−4に対するCPUから
の読出アクセスP−RDに対し、スヌープバス22で接
続したキャッシュユニット18−1に最新データが排他
的ダーティ状態EX−Dで存在した場合、即ち書込権を
所有した状態で存在した場合である。この場合のキャッ
シュユニット18−4からのアクセスT−CRに対し、
同様にキャッシュユニット18−1から最新データのサ
ブラインを含むリプライデータ280の応答が行われ
る。
【0161】この場合、アクセス元のキャッシュユニッ
ト18−4は無効化状態INVからシェアードモディフ
ァイ状態SH&M、即ち自分のプロセッサモジュール内
の他のキャッシュユニットにシェアードダーティ状態で
最新データが存在することを示す。またアクセス先のキ
ャッシュユニット18−1にあっては、排他的ダーティ
状態EX&Dからシェアードダーティ状態SH&Dに遷
移する。 (4)ローカルプロセッサモジュールのリード処理 図19のフローチャートは、図16,図17の読出モー
ド1,2におけるローカルとなったプロセッサモジュー
ルのリード処理である。まずステップS1で、プロセッ
サエレメントのリードアクセスを受けて、ステップS2
で、キャッシュヒットの有無が判定され、キャッシュヒ
ットであれば、ステップS14で、プロセッサエレメン
トにデータを応答して処理を終了する。
【0162】キャッシュミスヒットの場合には、ステッ
プS3で、タグメモリ40からキャッシュステータスを
取得し、ステップS4で、他のプロセッサエレメントの
キャッシュ上に最新データがあるか否かチェックする。
他のプロセッサエレメントのキャッシュ上に最新データ
があれば、ステップS15に進み、スヌープバス22に
コマンドを送出し、ステップS16でリプライデータを
受けて、ステップS13で、キャッシュに格納してプロ
セッサエレメントに応答する。このステップS15〜S
17は、図18の読出モード3の処理である。
【0163】一方、ステップS4で他のプロセッサエレ
メントのキャッシュ上にも最新データがなかった場合に
は、ステップS5で、ローカルコマンドをスヌープバス
22を介してメモリ管理ユニット26に送出する。メモ
リ管理ユニット26側にあっては、まずステップS6
で、図4に示した空間識別ユニット50によりコマンド
の物理アドレスからプロセッサモジュール空間を判別す
る。
【0164】ステップS7で、リードアドレスが自分の
プロセッサモジュールのローカルストレージ28の主記
憶空間であった場合、ステップS8で、自らをホームと
してディレクトリメモリ30のディリクトリエントリか
らキャッシュステータスを取得する。キャッシュステー
タスについて、ステップS9で、サブラインがダーティ
か否かチェックし、ダーティであれば、ステップS10
で、リモートプロセッサモジュールに対しシステムバス
を介してリモートコマンドを送出する。
【0165】このリモートコマンドに対しステップS1
1で応答があると、リプライデータをステップS12で
主記憶としてのローカルストレージ28に書き込み、ダ
ーティ状態をシェアード状態に更新する。そしてステッ
プS13で、アクセス元のキャッシュユニットに応答
し、処理を終了する。ステップS9でサブラインがダー
ティでなかった場合には、ステップS22で、主記憶と
してのローカルストレージ28からデータを読み出して
アクセス元のキャッシュユニットに応答し、ステップS
23で、主記憶としてのローカルストレージ28のサブ
ラインのシェアードビットをオンする。
【0166】またステップS7で、アクセスした物理ア
ドレスが他のプロセッサモジュール空間であった場合に
は、ステップS18で、システムバスを介してホームと
なるプロセッサモジュールに対しホームコマンドを送出
する。このホームコマンドの送出に対し、システムバス
を介して最新データのリプライがあることから、ステッ
プS19でリプライを判別すると、ステップS20で、
アクセスごとのキャッシュに応答して処理を終了する。 (5)ホームプロセッサモジュールのリード処理 図20のフローチャートは、図16,図17の読出モー
ド1,2においてホームとなったプロセッサモジュール
のリード処理を示す。まずステップS1で、ホームコマ
ンドを受領する。ホームコマンドは、システムバスを経
由して受領する場合と、自分自身がローカルで且つホー
ムとなる場合に自分自身で生成したホームコマンドを受
領する場合とがある。
【0167】ホームコマンドを受領すると、ステップS
2で、自分自身をホームとしてディレクトリメモリ30
からキャッシュラインのステータスを取得し、ステップ
S3で、サブラインがダーティか否かチェックする。サ
ブラインがダーティであった場合には、ステップS4
で、自分のプロセッサモジュール内のプロセッサエレメ
ントのキャッシュ上に最新データがあるか否かチェック
する。
【0168】最新データが自分自身のキャッシュ上にあ
れば、ステップS5でスヌープバス22にコマンドを送
出し、ステップS6でリプライを待って、ステップS7
でリプライデータを主記憶としてのローカルストレージ
28に書き込み、ディレクトリエントリのダーティ状態
をシェアード状態に更新する。続いてステップS8で、
ローカルプロセッサモジュールに対しリプライデータを
システムバスを使用して送出する。
【0169】またステップS4で、別のプロセッサモジ
ュール内のプロセッサエレメントのキャッシュ上にダー
ティ状態の最新データが存在している場合には、ステッ
プS12で、システムバスを介してリモートプロセッサ
モジュールにリモートコマンドを送出し、ステップS1
3でリプライを待って、ステップS14で、主記憶とし
てのローカルストレージ28に最新データを書き込んで
ディレクトリアントリのダーティ状態をシェアード状態
に更新する。
【0170】一方、ステップS3でサブラインがダーテ
ィでなかった場合には、主記憶としてのローカルストレ
ージ28から最新データを読み出して、システムバスを
介してローカルプロセッサモジュールにリプライデータ
を送出し、処理を終了する。 (6)リモートプロセッサモジュールのリード処理 図21のフローチャートは、図16,図17の読出モー
ド1,2におけるリモートプロセッサモジュールのリー
ド処理である。まずステップS1で、システムバスを介
してリモートコマンドを受領すると、ステップS2で、
自分自身をリモートとしてキャッシュユニットにスヌー
プバスを介してコマンドを送出する。該当するプロセッ
サエレメントのキャッシュユニットからデータのリプラ
イを受けると、ステップS4で、スヌープバス22から
リプライデータを受領し、ステップS5で、システムバ
スを介してホームプロセッサモジュールおよびローカル
プロセッサモジュールにリプライデータを送出する。 (7)プロセッサエレメントのリード処理 図22のフローチャートはプロセッサエレメント自身の
リード処理である。まずステップS1でCPUのリード
要求が発生すると、ステップS2でキャッシュヒットの
有無を判定し、キャッシュヒットであれば、ステップS
12で、キャッシュデータをリードアクセスに対し応答
する。
【0171】キャッシュミスヒットとなった場合には、
ステップS3で、キャッシュ制御モジュール35でキャ
ッシュラインのステータスをタグメモリ40から取得
し、ステップS4で、他のプロセッサエレメントのキャ
ッシュ上でヒットか否か判定する。この場合、ミスヒッ
トであればステップS13に進み、メモリモジュール2
0側に対するアクセスで他のプロセッサモジュールに対
する処理を行う。
【0172】ステップS4でキャッシュヒットとなった
場合には、ステップS5で、他のプロセッサエレメント
のキャッシュ状態はシェアードクリーン状態SH&Cか
否かチェックする。シェアードクリーン状態SH&Cで
あれば、ステップS6で、スヌープバス22にコマンド
を送出し、ステップS7で、リプライデータを受領して
キャッシュに応答し、ステップS8で、ステータスを無
効化状態INVからシェアードクリーン状態SH&Cに
更新する。
【0173】一方、他のプロセッサが排他的ダーティ状
態EX&Dであった場合には、ステップS9でスヌープ
バス22にコマンドを送出した後、ステップS10で、
リプライデータを受領してキャッシュに応答し、ステッ
プS11で、ステータスをシェアードモディファイ状態
SH&Mに更新する。 3.CPU書込アクセスに対するキャッシュコヒーレン
ス (1)書込モード1 図23は、書込モード1におけるキャッシュコヒーレン
スのプロトコルを示す。この書込モード1は、プロセッ
サモジュール10−1の任意のCPUの書込アクセスP
−WTに対し自己のキャッシュユニットでミスヒット
し、且つスヌープバス22で接続した他のキャッシュユ
ニットにおいてもミスヒットとなり、且つ書込アドレス
がプロセッサモジュール10−1の主記憶であるローカ
ルストレージ28にあり、更に、ローカルストレージ2
8の書込アドレスのコピーデータが他の複数のプロセッ
サモジュール10−2,10−3のキャッシュ上にシェ
ア状態で存在する場合である。
【0174】この場合には、スヌープバス22を介して
書込アクセスT−CRIを受けたプロセッサモジュール
10−1のメモリ管理ユニット26は、自らをローカル
およびホームとし、キャッシュディレクトリの参照で、
シェア状態にある全てのプロセッサモジュール10−
2,10−3に対し、システムバス12を使用して無効
化指令であるパージコマンド300を発行する。
【0175】このパージコマンド300に対し、プロセ
ッサモジュール10−2,10−3はリモートとして動
作し、それぞれのメモリ管理ユニット26はスヌープバ
ス22を介してシェア状態Cにあるメモリユニットに対
し無効化を要求する。シェア状態にあるキャッシュユニ
ットで無効化に成功すると、プロセッサモジュール10
−2,10−3はシステムバス12を使用して独立にパ
ージ応答310,320を行う。このパージ応答31
0,320には、プロセッサモジュール10−2,10
−3における対象となったキャッシュラインのキャッシ
ュステータスが含まれている。
【0176】ホームとしてのプロセッサモジュール10
−1は、システムバス12から全てのパージ応答31
0,320を受理したことで無効化の成功を認識し、主
記憶としてのローカルストレージ28の書込アドレスの
コピーデータをアクセス元のキャッシュユニットに格納
して、書込アクセスにより上書きさせる。このときホー
ムとしてのプロセッサモジュール10−1にあっては、
アクセス対象となったキャッシュラインのディレクトリ
エントリのシェア状態Sをダーティ状態Dに更新する。
【0177】このように書込アクセスにあっては、アク
セス元のキャッシュ上で主記憶としてのローカルストレ
ージ28と同一データが上書きにより変更されて最新デ
ータとなることで、ローカルストレージ28のデータが
旧いデータとなった状態で処理を終了し、ローカルスト
レージ28の旧いデータの最新データとのコヒーレンス
は、既に説明したリードアクセスを通じて行われること
になる。 (2)書込モード2 図24は、書込モード2によるキャッシュコヒーレンス
のプロトコルを示す。書込モード2は、CPUアクセス
が発生したプロセッサモジュール10−1のキャッシュ
ユニットに、スヌープバス22で接続した他のキャッシ
ュユニットに書込権を所有しないシェア状態Cで主記憶
としてのローカルストレージ28と同一データが存在し
ている場合であり、それ以外の状態は図23のモード1
と同じである。
【0178】この書込モード2にあっては、CPUの書
込アクセスP−WTに基づいて、ホームとして動作した
メモリ管理ユニット26よりシステムバス12を使用し
てリモートとしてのプロセッサモジュール10−2,1
0−3にパージコマンド300を発行すると同時に、こ
れに並行して、同じプロセッサモジュール10内のキャ
ッシュユニット群18に対しパージコマンド325を発
行する。
【0179】このため、ホームとして動作したプロセッ
サモジュール10−1のメモリ管理ユニット26は、シ
ステムバス12を介してリモートとしてのプロセッサモ
ジュール10−2,10−3からのパージ応答310,
320の全ての応答と、自己のスヌープバス22からの
パージ応答を受理したことで、無効化の成功を認識し、
主記憶としてのローカルストレージ28の最新データの
コピーデータをアクセス元のキャッシュユニットに格納
して、CPUの書込アクセスにより上書きする。この場
合にも、書込モード1と同様、ディレクトリエントリの
シェア状態Sはダーティ状態Dに更新される。 (3)書込モード3 図25は、書込モード3によるキャッシュコヒーレンス
のプロトコルを示す。この書込モード3は、プロセッサ
モジュール10−1のCPUの書込アクセスP−WTに
対し、自己のキャッシュユニットおよびスヌープバス2
2を介して接続したキャッシュユニットを含むキャッシ
ュ群18のいずれにもコピーデータが書込みを所有した
状態で登録されておらず、ミスヒットになり、書込アド
レスがプロセッサモジュール10−2の主記憶であるロ
ーカルストレージ28にあり、更にローカルストレージ
28の最新データのコピーデータがプロセッサモジュー
ル10−2以外の他の複数のプロセッサモジュール10
−3,10−4にシェア状態Cで存在する場合である。
【0180】この場合、ローカルとしてのプロセッサモ
ジュール10のメモリ管理ユニット26は、システムバ
ス12を使用してホームとしてのプロセッサモジュール
10−2に書込所有権の要求指令、所謂ホームコマンド
330を発行する。書込所有権の要求指令であるホーム
コマンド330を受領したプロセッサモジュール10−
2は、シェア状態にある他のプロセッサモジュール10
−3,10−4に対し、システムバス12を使用して無
効化指令としてのパージコマンド340を発行する。
【0181】プロセッサモジュール10−3,10−4
は、パージコマンド340を受理すると、スヌープバス
22を介して、シェア状態にあるキャッシュ群18の中
のキャッシュユニットに対し無効化を指令し、無効化に
成功すると、システムバス12を使用してホームとして
のプロセッサモジュール10−2に独立にパージ応答3
50,360を返す。
【0182】ホームとしてのプロセッサモジュール10
−2は、全てのパージ応答350,360を受理したこ
とで無効化の成功を認識すると、ローカルとしてのプロ
セッサモジュール10−1に対し、システムバス12を
使用して自分自身の主記憶であるローカルストレージ2
8の最新データのコピーデータを含む書込所有権の移動
を応答する。
【0183】ローカルのプロセッサモジュール10−1
は、システムバス12より書込所有権の応答であるリプ
ライデータ370の受領により得られたコピーデータを
アクセス元のキャッシュユニットに格納し、CPUの書
込アクセスにより上書きさせる。ここで、無効化の成功
を認識して書込所有権の移動を行ったホームとしてのプ
ロセッサモジュール10−2のメモリ管理ユニットは、
ディレクトリエントリのシェア状態Sをダーティ状態D
に更新する。またプロセッサモジュール10−1のアク
セス元のキャッシュユニットにあっては、書込アクセス
の終了でキャッシュ状態を書込権を所有したダーティ状
態Dに更新する。 (4)書込モード4 図26は、書込モード4によるキャッシュコヒーレンス
のプロトコルを示す。書込モード4は、ローカルおよび
ホームとして動作するプロセッサモジュール10−1に
おけるCPUの書込アクセスP−WTに対し、自己のキ
ャッシュユニットがミスヒットで、且つスヌープバス2
2を介して接続した他のキャッシュユニットにもコピー
データが書込権を所有した状態で登録されておらずにミ
スヒットとなり、書込アドレスがプロセッサモジュール
10−2の主記憶であるローカルストレージ28にあ
り、更にローカルストレージ28の最新データのコピー
データがプロセッサモジュール10−2を含む複数のプ
ロセッサモジュール10−3,10−4のキャッシュユ
ニットにシェア状態Cで存在する場合である。
【0184】この場合には、書込アクセスが発生したプ
ロセッサモジュール10−1のメモリ管理ユニット26
が、ローカルとしてプロセッサモジュール10−2に対
しシステムバス12を使用して書込所有権の要求指令で
あるホームコマンド370を発行する。この書込所有権
要求指令となるホームコマンド370を受領したプロセ
ッサモジュール10−2のメモリ管理ユニット26は、
シェア状態にある全てのプロセッサモジュール10−
3,10−4に対し、システムバス12を使用して無効
化指令としてのパージコマンド380を発行する。この
パージコマンド380の発行に並行して更に、メモリ管
理ユニット26は、自己のシェア状態にあるキャッシュ
群18の中のキャッシュユニットに対しスヌープバス2
2を使用して無効化指令としてのパージコマンド410
を発行する。
【0185】キャッシュ上でシェア状態Cにある全ての
プロセッサモジュール10−3,10−4はリモートと
して動作し、パージコマンド340を同時に受理して、
スヌープバス22を介してキャッシュ群18側に無効化
を指令し、無効化に成功すると、システムバス12を使
用して、プロセッサモジュール10−2に独立にパージ
応答350,360を返す。これに並行してプロセッサ
モジュール10−2のシェア状態Cにあるキャッシュユ
ニットからは、無効化の成功がスヌープバス22を使用
して応答される。
【0186】ホームとなるプロセッサモジュール10−
2は、システムバス12からの全ての無効化成功のパー
ジ応答350,360と、スヌープバス22からの無効
化成功の応答を受領したことで、無効化の成功を認識し
て、システムバス12を使用してローカルのプロセッサ
モジュール10−1に対し自分の主記憶であるローカル
ストレージ28の最新データのコピーデータを含む書込
所有権の移動をリプライデータ370として応答する。
【0187】プロセッサモジュール10−1は、システ
ムバス12から書込所有権の応答の受領で得られたコピ
ーデータをアクセス元のキャッシュユニットに格納し
て、CPUの書込アクセスにより上書きさせる。ここで
プロセッサモジュール10−2は、無効化の成功を認識
して書込所有権の移動を応答した際に、自己のディレク
トリエントリのシェア状態Sをダーティ状態Dに更新す
る。 (5)書込モード5 図27は、書込モード5によるキャッシュコヒーレンス
のプロトコルを示す。この書込モード5は、プロセッサ
モジュール10−1のCPUの書込アクセスP−WTに
対し自己のキャッシュユニットおよびスヌープバス22
で接続した他のキャッシュユニットのキャッシュ群18
にコピーデータが書込権を所有した状態で登録されてお
らずにミスヒットとなり、且つ書込アドレスがプロセッ
サモジュール10−1の主記憶であるローカルストレー
ジ28にあり、更にローカルストレージ28の書込アド
レスの最新データがプロセッサモジュール10−2のキ
ャッシュユニットに書込権を所有したダーティ状態Dで
存在する場合である。
【0188】この場合、ローカルおよびホームとしての
プロセッサモジュール10−1は、ダーティ状態Dにあ
るプロセッサモジュール10−2に対し、システムバス
12を使用して、書込所有権の要求指令となるリモート
コマンド440を発行する。プロセッサモジュール10
−2は、システムバス12から書込所有権の要求指令で
あるリモートコマンド440を受理して、キャッシュユ
ニット上のシェア状態Dの最新データを含む書込所有権
の移動を示すリプライデータ450をシステムバス12
を使用してプロセッサモジュール10−1に応答する。
【0189】プロセッサモジュール10−1は、リプラ
イデータ450による書込所有権の応答で得られた最新
データをアクセス元のキャッシュユニットに格納して、
CPUによる書込アクセスで上書きさせる。ここでプロ
セッサモジュール10−2の書込所有権を移動したキャ
ッシュユニットにあっては、ダーティ状態Dを無効化状
態Iに更新する。またプロセッサモジュール10−1の
メモリ管理ユニット26は、書込所有権を受領した際に
ディレクトリエントリのダーティ状態Dを自分のキャッ
シュ上に最新データが存在するダーティ状態D´に更新
する。 (6)書込モード6 図28は、書込モード6によるキャッシュコヒーレンス
のプロトコルを示す。この書込モード6は、プロセッサ
モジュール10−1のCPUによる書込アクセスP−W
Tに対し、自己のキャッシュユニットおよびスヌープバ
ス22で接続した他のキャッシュユニットを含むキャッ
シュ群18にコピーデータが書込権を所有した状態で登
録されておらずに、ミスヒットとなり、書込アドレスが
プロセッサモジュール10−2の主記憶であるローカル
ストレージ28にあり、更にローカルストレージ28の
書込アドレスの最新データがプロセッサモジュール10
−3のキャッシュユニットに書込権を所有したダーティ
状態Dで存在する場合である。
【0190】この場合に、ローカルとしてのプロセッサ
モジュール10−1のメモリ管理ユニット26は、シス
テムバス12を使用して、書込所有権の要求指令となる
ホームコマンド460を発行する。ホームコマンド46
0を受領したホームとなるプロセッサモジュール10−
2のメモリ管理ユニット26は、リモートとなるプロセ
ッサモジュール10−3に対し、システムバス12を使
用して、同じく書込所有権の要求指令であるリモートコ
マンド470を発行する。
【0191】リモートコマンド470を受領したプロセ
ッサモジュール10−3は、ダーティ状態Dにあるキャ
ッシュユニットの最新データを含む書込所有権を、シス
テムバス12を使用して、リプライデータ480として
ホームであるプロセッサモジュール10−2およびロー
カルであるプロセッサモジュール10−1に応答する。
【0192】ホームであるプロセッサモジュール10−
2は、書込所有権の応答であるリプライデータ480を
受領して、書込所有権の移動を認識する。またローカル
となるプロセッサモジュール10−1は、リプライデー
タ480による書込所有権の受領で得られた最新データ
をアクセス元のキャッシュユニットに格納して、CPU
の書込アクセスで上書きさせる。
【0193】ここで、リモートとなるプロセッサモジュ
ール10−3のキャッシュユニットにあっては、ダーテ
ィ状態Dを書込所有権を移動した際に無効化状態Iに更
新する。またホームとなるプロセッサモジュール10−
2は、書込所有権の移動を確認した際に、ディレクトリ
エントリのダーティ状態Dを最新データが存在するプロ
セッサモジュール10−1の情報に変更したダーティ状
態D´に更新する。
【0194】更に、ローカルとなるプロセッサモジュー
ル10−1のアクセス元のキャッシュユニットにあって
は、最新データを格納した後に、書込権を所有している
ダーティ状態Dに更新する。 (7)書込モード7 図29は、書込モード7によるキャッシュコヒーレンス
のプロトコルを示す。この書込モード7は、プロセッサ
モジュール10−1内の複数のキャッシュユニット間で
アクセスする場合である。即ち、プロセッサモジュール
10−1内のCPUの書込アクセスP−WTに対し、自
己のキャッシュユニット18−4はミスヒットしたが、
スヌープバス22を介して接続した他のキャッシュユニ
ット18−1に書込アドレスの最新データが書込権を所
有したダーティ状態、即ち排他的ダーティ状態EX&D
で存在する場合である。
【0195】この場合、アクセス元のキャッシュユニッ
ト18−4はスヌープバス22を介してコマンドT−C
RIを発行し、これに応答してキャッシュユニット18
−1は最新のキャッシュサブラインのデータを含むリプ
ライデータ490を応答し、キャッシュユニット18−
4に格納した後に、書込アクセスにより上書きさせる。
【0196】ここで、アクセス先のキャッシュユニット
18−1にあっては、書込所有権を移動した後に無効化
状態INVに更新される。またアクセス元のキャッシュ
ユニット18−4は、書込権を獲得した後に無効化状態
INVから書込権を所有するダーティ状態である排他的
ダーティ状態EX&Dに更新される。 (8)書込アクセスのプロセッサライト処理 図30のフローチャートは、書込アクセスに伴うキャッ
シュコヒーレンスでローカルとなったプロセッサモジュ
ールのライト処理である。ステップS1で、プロセッサ
エレメントのライトアクセスが発生すると、ステップS
2で、2次キャッシュ38のキャッシュヒットが判定さ
れ、キャッシュヒットであれば、ステップS14で、キ
ャッシュ上にデータを上書きする。
【0197】キャッシュミスヒットであればタグメモリ
40からキャッシュステータスを取得し、スヌープバス
22で取得した他のキャッシュユニットに最新データが
あるか否かステップS4でチェックする。他のキャッシ
ュ上に最新データがあれば、ステップS15で他のプロ
セッサエレメントにコマンドを送出し、ステップS16
でリプライを待ち、ステップS17で、最新のリプライ
データに上書きを行って、書込アクセスを終了する。
【0198】ステップS14で、スヌープバス22で接
続した他のプロセッサエレメントのキャッシュ上に最新
データがなかった場合には、ステップS5で、ローカル
コマンドをスヌープバス22を介してメモリ管理ユニッ
ト26に送出し、ステップS6で、空間識別ユニット5
0からプロセッサモジュール空間を判別し、ステップS
7で、自分自身のプロセッサモジュール空間か否か判断
する。
【0199】自分自身のプロセッサモジュール空間であ
れば、ステップS8で、自分自身をホームとしてディレ
クトリメモリ30からキャッシュラインのステータスを
見るためにディレクトリエントリを取得する。ステップ
S9で、ディレクトリエントリのサブラインはダーティ
か否かチェックし、ダーティであれば、ステップS10
で、リモートとなるプロセッサモジュールにシステムバ
ス12を介してパージを要求する。
【0200】このパージ要求に対しステップS11で応
答があれば、ディレクトリエントリの別のサブラインに
ダーティをセットし、キャッシュステータスを更新す
る。そしてステップS13で、プロセッサエレメントの
アクセス元のキャッシュ上でリプライデータを上書き
し、無効化状態INVを書込所有権付きのダーティ状態
EX&Dに更新する。
【0201】一方、ステップS9で、ディレクトリエン
トリのサブラインがダーティではなくシェアであった場
合には、ステップS21で、リモートプロセッサモジュ
ールにパージを要求し、ステップS22でリプライを待
って、ステップS23で、ディレクトリエントリのシェ
ア状態Sをダーティ状態Dに更新するキャッシュステー
タスの更新を行い、最終的に、ステップS24で、キャ
ッシュデータに上書きを行って無効化状態INVからシ
ェアードダーティ状態SH&Dに更新する。
【0202】このステップS8〜S13およびステップ
S21〜S24は、ローカルプロセッサモジュールが同
時にホームプロセッサモジュールとなった場合の処理で
ある。一方、ステップS7で、アクセス空間が自分自身
のプロセッサモジュール空間でなかった場合には、ステ
ップS18で、他のプロセッサモジュールに対しホーム
コマンドを送出し、ステップS19で、最新データのリ
プライを待って、ステップS20で、リプライデータを
キャッシュ上で上書きして無効化状態INVから排他的
ダーティ状態EX&Dに更新する。これはホームコマン
ドにより書込所有権の移動を伴うものである。
【0203】図31のフローチャートは、書込アクセス
によるキャッシュコヒーレンスでホームプロセッサモジ
ュールとなった場合のライト処理である。ステップS1
でホームコマンドを受領すると、ステップS2で、自分
自身をホームとしてディレクトリメモリ30からキャッ
シュステータスとしてのディレクトリエントリを取得す
る。
【0204】ステップS3で、ディレクトリエントリの
サブラインを参照してダーティか否かチェックし、ダー
ティであれば、ステップS4で、ダーティ状態の最新デ
ータの存在が自分自身のプロセッサモジュールのキャッ
シュ上か否かチェックする。自分自身のキャッシュ上で
あれば、ステップS5で、スヌープバス22を介してパ
ージを要求し、ステップS6のリプライを待って新デー
タを、ステップS7で、主記憶としてのローカルストレ
ージ28のキャッシュ状態であるディレクトリエントリ
の新たなサブラインをダーティ状態にセットし、ステッ
プS8で、ローカルプロセッサモジュールに最新データ
をリプライデータとして送出する。
【0205】ステップS4で、ダーティ状態の最新デー
タが他のプロセッサモジュールのキャッシュ上に存在す
る場合には、ステップS9で、リモートプロセッサモジ
ュールに対しパージを要求し、ステップS10でリプラ
イを待って、ステップS11に進み、ディレクトリエン
トリにおける新サブラインのダーティをセットする。一
方、ステップS3で、ディレクトリエントリのサブライ
ンがダーティでなくシェア状態であった場合には、ステ
ップS12で、自分自身のプロセッサモジュール内のキ
ャッシュ上か否かチェックする。自分自身のキャッシュ
上でなければ、ステップS13で、リモートプロセッサ
モジュールにパージを要求し、ステップS14でリプラ
イを待って、ステップS15で、主記憶としてのローカ
ルストレージから最新データとしてのリプライデータを
読み出してローカルプロセッサモジュールに送出し、キ
ャッシュディレクトリをダーティ状態Dからシェア状態
Sに更新する。
【0206】またステップS2で、自分自身のプロセッ
サモジュール内のキャッシュ上にシェア状態が存在する
ときには、ステップS16で、スヌープバス22を介し
てパージを要求し、ステップS17でリプライを待っ
て、ステップS18に進み、ディレクトリエントリのシ
ェア状態をダーティ状態に更新する。そしてステップS
19で、主記憶としてのローカルストレージ28の最新
データをローカルプロセッサモジュールにリプライデー
タとして送出する。
【0207】図32のフローチャートは、書込アクセス
においてリモートプとなるロセッサモジュールのライト
処理である。リモートプロセッサモジュールのライト処
理にあっては、まずステップS1で、システムバス12
からリモートコマンド、即ち書込所有権の要求指令を受
領すると、ステップS2で、スヌープバス22にコマン
ドを送出し、ステップS3で、スヌープバス22からの
リプライを待ち、ローカルプロセッサモジュールおよび
ホームプロセッサモジュールに対し、ステップS4で、
書込所有権の移動を応答するコマンドと最新データをリ
プライデータとして送出する。
【0208】図33は、書込アクセスが発生した際のプ
ロセッサエレメントのライト処理のフローチャートであ
る。まずステップS1でライト要求が発生すると、ステ
ップS2で、自分自身のキャッシュユニットおよびスヌ
ープバス22で接続した他のキャッシュユニットに書込
権を所有した最新データが存在するか否かチェックす
る。
【0209】他のキャッシュ上に存在すれば、ステップ
S9で、アクセス元に転送してキャッシュデータの上書
きを行い、読出時のキャッシュユニットでキャッシュヒ
ットとなるか否か、ステップS2でチェックする。キャ
ッシュヒットであれば、ステップS9に進み、キャッシ
ュデータにライト要求によるデータを上書きし、自分自
身のキャッシュ状態を同じ書込所有権付きの排他的ダー
ティ状態EX&D´に送信する。
【0210】自分自身のキャッシュユニットに書込権を
所有した状態で最新データが存在しなかった場合には、
ステップS3に進み、キャッシュ制御モジュール35で
タグメモリ40を参照して、キャッシュラインのステー
タスを取得し、他のプロセッサエレメントのキャッシュ
上に書込権を所有した状態で最新データが存在するか否
かチェックする。
【0211】存在すればヒットと判定し、ステップS5
で、スヌープバス22にコマンドを送出し、書込所有権
の要求指令を行う。ステップS6でリプライがあると、
アクセス元のキャッシュ上にリプライデータを格納して
上書きし、ステップS8で、キャッシュステータスを無
効状態INVから排他的ダーティ状態EX&Dに更新す
る。
【0212】ステップS4で、他のプロセッサエレメン
トに書込所有権が存在した状態で最新データがない場合
には、ステップS10に進み、他のプロセッサモジュー
ルに対するアクセス処理となり、これは図30のローカ
ルプロセッサモジュールのライト処理を起動することに
なる。 4.キャッシュユニットのアクセス競合処理 本発明のキャッシュコヒーレンス装置にあっては、複数
のプロセッサモジュールの各々のプロセッサエレメント
毎に設けたキャッシュユニットは、モジュール内のプロ
セッサエレメント及び外部のプロセッサモジュールのア
クセス対象となり、このため特定のキャッシュユニット
にアクセスが集中する可能性がある。
【0213】例えばリモートのプロセッサモジュール内
のプロセッサエレメントとキャッシュユニット間でデー
タ授受が行われているとき、外部のホームとして機能す
るプロセッサモジュールからのリモートコマンドがスヌ
ープバスに現れたとき、後発のリモートコマンドは、先
発したキャッシュ制御によってリトライが指示される。
これは、先発のコマンドによって、キャッシュ状態が遷
移過渡期にあるため、リモートコマンドへの対処が決定
できないからである。
【0214】このように、リモートのプロセッサモジュ
ール内でのデータの授受が際限なく続いた場合、リモー
トコマンドを送出したホームのプロセッサモジュール
は、リトライを繰り返す場合がある。このときシステム
バスに対するバス接続ユニットでは、アクセス応答の時
間監視を行っており、リトライの繰り返しがバスタイム
アウトの引金になる。
【0215】図34において,プロセッサモジュール1
0−1は,アクセス対象となるデータのアドレスを主記
憶28に持つことからホームとして機能する。この主記
憶28のアクセスアドレスのデータは最新データでない
ことから,ディレクトリを管理するメモリ管理ユニット
26はダーティ状態Dを登録している。このアクセスア
ドレスのデータの最新データは、プロセッサモジュール
10−2のキャッシュユニット群18における4番目の
プロセッサエレメントPE#3のキャッシュユニットに
排他的ダーティ状態EX&Dで保持されている。
【0216】この状態でプロセッサモジュール10−1
の第4プロセッサエレメントPE#3でライトコマンド
P−WTが発生し、またプロセッサモジュール10−2
の第1プロセッサモジュールPE#0で同じアドレスに
対するライトコマンドP−WTが発生したとする。プロ
セッサモジュール10−2にあっては、第1プロセッサ
エレメントPE#1の発生したライトアクセスに基づ
き、キャッシュユニット18−1からスヌープバス22
に、のようにコヒーレントライト&インバリデートの
CRIコマンドが発行される。この場合、第4プロセッ
サエレメントPE#3のキャッシュユニット18−4に
アクセスアドレスのデータが排他的ダーティ状態EX&
Dで記録されているため、のように第4プロセッサエ
レメントPE#3のキャッシュユニットから第1プロセ
ッサエレメントPE#0に対しデータが供給される。
【0217】このようなプロセッサモジュール10−2
内におけるアクセスに並行して、プロセッサモジュール
10−1の第4プロセッサエレメントPE#3のライト
アクセスに基づき、システムバス12にリモートコマン
ド220が送出され、のようにリモートとなるプロセ
ッサモジュール10−2のスヌープバス22にリモート
コマンドが現れる。
【0218】このとき,に示した内部のプロセッサ
エレメントPE#0,#3の間のアクセスが終了してい
れば問題ないが、アクセス中にリモートコマンドが現れ
るとバスビジーとなって、プロセッサモジュール10−
1に対しシステムバス12を介してリトライを指示する
ためのリプライコマンド230がのように送出され
る。
【0219】このため、リプライコマンド230を受け
たプロセッサモジュール10−1は、再度リモートコマ
ンド220をプロセッサモジュール10−2に送出する
リトライ動作を行うが、このときのプロセッサモジュー
ル10−2の内部のアクセスによりスヌープバス22が
ビジーであると、再度リプライコマンド230によるリ
トライとなり、リトライが際限なく続く可能性がある。
【0220】図35は、リモートコマンドに対するリト
ライ指示が繰り返されるプロセッサモジュール10−2
の処理のタイムチャートである。図35のタイムチャー
トにあっては、横軸にバスクロックサイクルの処理タイ
ミングを示し、縦軸にスヌープバス22の使用中のプロ
セッサエレメント、プロセッサエレメントPE#0〜#
3ごとのビジー期間、更に各プロセッサエレメント#0
〜#3に対応したキャッシュステータス信号CST0〜
3を示している。
【0221】まずのように、第1プロセッサエレメン
トPE#0のライトコマンドの発行に伴い、スヌープバ
ス22がプロセッサエレメントPE#0で占有され、コ
ヒーレント&インバリデートのCRTコマンドが送出さ
れる。このCRTコマンドに伴い、アクセス先のプロセ
ッサエレメントPE#0のビジー状態が設定される。ア
クセス先となるプロセッサエレメントPE#0のビジー
期間中に、のように、外部のプロセッサエレメント1
0−1からのリモートコマンド#RのCRIコマンドが
現われると、アクセス先のプロセッサエレメントPE#
0はビジー状態にあることからビジー応答となり、例え
ば4サイクル後ののタイミングでリモートコマンド#
Rに対するビジー応答のリプライコマンドがプロセッサ
モジュール10−1に送出される。
【0222】一方、のリモートコマンド#RのCRI
コマンドの後にプロセッサエレメントPE#3からデー
タトランスファのDTコマンドが現われ、CRIコマン
ドを受けたプロセッサエレメントPE#0から要求元の
プロセッサエレメントPE#3に対するデータ転送が行
われる。こののDTコマンドに基づくデータ転送の終
了後に、のように、プロセッサエレメントPE#1の
CRIコマンドがスヌープバス22に現われ、このアク
セス要求先がビジーリプライとなったリモートコマンド
#Rと同じプロセッサエレメント#0であったとする
と、再びプロセッサエレメントPE#0がビジー状態と
なる。
【0223】このため、のリモートコマンドに対する
ビジーリプライに基づいてプロセッサモジュール10−
1から、のようにリモートコマンド#Rのリトライが
スヌープバス上に現われても、アクセス要求先となるプ
ロセッサエレメント#0はビジー状態にあるため、の
ように、リモートコマンド#Rに対するビジーリプライ
となる。
【0224】そして、このようなリモートコマンド#R
に対するアクセス要求先のプロセッサエレメント#0の
ビジー状態によるリトライ指示が際限なく繰り返され、
結局はプロセッサモジュール10−1からのアクセスが
バスタイムアウトとなってエラー終了してしまう。この
ような特定のキャッシュユニットにおけるアクセスの競
合に対し本発明にあっては、プロセッサモジュールの各
プロセッサエレメントの中に、自己のアクセス処理中に
リモートコマンドを受けてリトライの指示を行ったこと
を記憶するフラグと、そのときのアクセスアドレスを保
持するアドレスレジスタを設ける。
【0225】そして、リモートコマンドに対するリトラ
スの指示を行ったことを示すフラグが有効な期間の間
は、アドレスレジスタにセットしたアクセスアドレスと
同じリモートコマンド以外のアクセス要求は全て受け付
けずにリトライを指示するように構成する。このため、
プロセッサモジュールのスヌープバス22上で内部的な
アクセス中にリモートコマンドによるアクセスが競合し
た場合、1回はリトライ指示となるが、2回目のリトラ
イによるリモートコマンドについては、他のアクセスが
一切拒否されている。このため、2回目のリモートコマ
ンドによるアクセスを優先的に受け付けた処理を行うこ
とができる。
【0226】図36は、プロセッサエレメントにリモー
トコマンドのアクセスを優先させるためのフラグ及びア
ドレスレジスタを設けた場合の本発明による処理動作の
タイムチャートである。図36において、のようにプ
ロセッサエレメントPE#0のライトアクセスによるC
RTコマンドがスヌープバス22に現われたならば、こ
のCRTコマンドを発行したプロセッサエレメントPE
#0において、のように、プロセッサエレメントPE
#3側のアクセス対象となるアドレスをレジスタに格納
する。
【0227】プロセッサエレメントPE#0のCRIコ
マンドに伴うプロセッサエレメントPE#0のビジー期
間中に、のようにリモートコマンド#RのCRIコマ
ンドが現われると、のようにリモートコマンド#Rに
対するリトライ指示を行ったことを示すフラグをセット
する。この第1回目のリモートコマンド#Rについて
は、図35と同様、でビジーリプライによるリトライ
指示となる。続いてのアクセス要求先のプロセッサエ
レメントPE#3からのデータ転送が行われ、スヌープ
バス22の使用が解除された後に、のように別のプロ
セッサエレメントPE#1から同じプロセッサエレメン
トPE#3の同一アドレスに対しCRIコマンドが発行
されたとする。
【0228】これに対し、1回目のリモートコマンド#
Rに対しリトライ指示を行ったプロセッサエレメントP
E#0は、リモートコマンドに対しリトライ指示を行っ
たことを示すフラグのセット状態と、そのときのアクセ
スアドレスを記憶保持していることから、のプロセッ
サエレメントPE#1のCRIコマンドに対しでバス
ビジーとなり、でプロセッサエレメントPE#1に対
するビジーリプライによってリトライを指示し、アクセ
ス要求を拒否する。
【0229】続いてでリトライによるリモートコマン
ド#Rが現われると、このときアクセス要求先のプロセ
ッサエレメントPE#0は空き状態にあることから、リ
モートコマンド#RのCRIコマンドによる処理が受け
入れられ、リモート側に対するデータ転送に入る。この
データ転送を開始すると、その後のタイミングで、(1
0)に示すように、プロセッサエレメント#0に記憶さ
れていたフラグ及びアクセスアドレスは順次初期化され
て解除され、リトライを行ったリモートコマンド#Rに
対する優先受付けを解除することになる。
【0230】尚、図36のタイムチャートは外部のプロ
セッサモジュールからのリモートコマンドと内部のプロ
セッサエレメントのアクセスコマンドの競合を例にとっ
ているが、内部のプロセッサエレメント同士のアクセス
コマンドの競合についても同様な処理により、後続した
アクセスコマンドは1回リトライとなるが、2回目につ
いては優先的に受け入れられ、スヌープバス22上にお
けるキャッシュコヒーレントのためのアクセス競合を適
切に調整することができる。 5.コピーバックの書込所有権 図37は、プロセッサモジュール10−1のキャッシュ
ユニットのいずれかで保有している最新データを、最新
データのリプレースが発生した際に分散型の主記憶とし
てのローカルストレージ28にコピーバックするための
書込所有権の移動に関する制御手順の説明図である。
【0231】いまプロセッサモジュール10−1におい
て、分散型主記憶としてのローカルストレージ28のデ
ーダか最新データでなく、スヌープバス22でメモリ管
理ユニット26に接続された4つのキャッシュユニット
の内のキャッシュユニット18−1,18−4に存在し
ていたとする。更に同じ最新データを共有しているキャ
ッシュユニット18−1,18−4の内、キャッシュユ
ニット18−1が、最新データをローカルストレージ2
8にコピーバックする書込所有権を保有していたとす
る。
【0232】この時のキャッシュ状態は、最新データ及
び書込所有権を保有したキャッシュユニット18−1が
シェアードダーティ状態EX&Dで表わされ、最新デー
タを保有するが書込所有権はもたないキャッシュユニッ
ト18−4がシェアードモディファイ状態SH&Mで現
わされる。更にメモリ管理ユニット26にあっては、ロ
ーカルストレージ28の対象データがダーティ状態Dに
あることを表わしている。ここでローカルストレージ2
8へのコピーバックのための書込所有権を保有している
キャッシュユニット18−1をオーナという。
【0233】このような図37のプロセッサモジュール
10−1におけるキャッシュ状態で、オーナとして書込
所有権を保有しているキャッシュユニット18−1の最
新データがプロセッサの動作によりデータ破棄等でリプ
レースされたとする。このリプレースに伴い、スヌープ
バス22にはリプレースコマンドP−RPが発生する。
また書込所有権を保有していたキャッシュユニット18
−1は無効状態INVに遷移する。
【0234】一方、最新データを保有しているが書込所
有権を保有していないキャッシュユニット18−4は、
スヌープバス22に表われたリプレースコマンドP−R
Pに基づき、書込所有権の委譲を受けてオーナとなり、
シェアードダーティ状態EX&Dに遷移する。このた
め、メモリユニット18−1で最新データのリプレース
が行われても、書込所有権は別のキャッシュユニット1
8−4に移り、最新データのローカルストレージ28に
対するコピーバックはこの時点では行われない。
【0235】書込所有権が移った後にキャッシュユニッ
ト18−4で同様なプロセッサ動作によるリプレースが
起きると、この場合には他のメモリユニットに書込所有
権を移すことができないことから、ローカルストレージ
28に対する最新データのコピーバックが行われるこ。
またキャッシュユニット18−1からキャッシュユニッ
ト18−4に書込所有権を委譲した際に、メモリ管理ユ
ニット26にあっては、書込所有権の委譲の対象となっ
たデータについてダーティ状態Dを保有しているが、書
込所有権がキャッシュユニット18−1,18−4間で
行われても、このダーティ状態はそのまま維持する。
【0236】メモリ管理ユニット26のダーティ状態
は、最新データをもつキャッシュラインが別のプロセッ
サモジュールに移って初めて移動することになる。また
ローカルストレージ28に対する最新データのコピーバ
ックが行われると、ダーティ状態Dはクリーン状態Cに
遷移する。図37は、4つのキャッシュユニット18−
1〜18−4の内の2つにローカルストレージ28の最
新データが保有されている場合を例にとっているが、3
つまたは4つのキャッシュユニットに最新データが保有
されている場合には、書込所有権を委譲するキャッシュ
ユニットが複数となるため、この場合には例えば図38
に示す予め定めた順番に従った書込所有権の委譲が行わ
れる。
【0237】図38は、キャッシュユニット18−1〜
18−4の識別番号を#0〜#3として表わし、書込所
有権を保有してリプレースしたキャッシュユニットをイ
ンデックスとして残りの3つのキャッシュユニットに対
する書込所有権を移す順番を示している。例えばキャッ
シュユニット#0が書込所有権を有し、他のキャッシュ
ユニット#1〜#3の3つが最新データを保有していた
場合には、キャッシュユニット#0のリプレースが起き
ると書込所有権を移す優先度は#1,#2,#3の順番
に優先度が決まっている。このため、最も優先度の高い
キャッシュユニット#1に書込所有権を委譲する。そし
て次はキャッシュユニット#2、そして最後はキャッシ
ュユニット#3となる。勿論、書込所有権を移すキャッ
シュユニットの順番は図38のユニット識別番号以外に
も適宜に定めることができる。 6.システム共通バス (1)バス構成 図39は、図3の本発明によるキャッシュコヒーレンス
装置を基幹としたサブシステムの構成図である。図39
において、サブシステム500−1は基本システム50
1として例えば5つのプロセッサモジュール10−1〜
10−5を、第2共有バスとしてのシステムバス12に
より接続している。システムバス12にはバス調停を行
うバスアービタ502が設けられる。
【0238】このような基本システム501に対し、例
えばプロセッサモジュール510−1〜510−3の3
台をバスアービタ503を備えたシステムバス12−1
0に接続した拡張システム506を接続している。基本
システム501に対し拡張システム506は、同じ構成
のバスアービタ及びプロセッサモジュールを使用してい
る。更に基本システム501のシステムバス12に対し
ては、異種バス拡張ユニット540を介して異種システ
ム505を接続している。異種システム505はシステ
ムバス542により適宜の処理ユニット544−1〜5
44−3を接続している。異種サブシステム505は、
本発明によるキャッシュコヒーレンス装置を実現する基
本システム501,拡張システム506とは全く異なっ
たシステムであり、例えば外部記憶装置に対するI/O
システムを構成している。
【0239】このようなサブシステム500−1に対し
ては、同じ構成をもつ別のサブシステム500−2を拡
張することができる。サブシステム500−1は、サブ
システム間接続ユニット512により拡張したサブシス
テム500−2と接続することができる。サブシステム
500−2側もサブシステム500−1側と同様、サブ
システム間接続ユニットを介して自己のシステムバスと
接続している。
【0240】ここで基本ユニット501のシステムバス
12に対しては、最大で例えば16台のモジュールもし
くはユニットを接続することができる。この実施形態で
は、システムバスに5台のプロセッサモジュール10−
1〜10−5、サブシステム間接続ユニット512、異
種バス拡張ユニット540及びバスアービタ502の8
台を接続している。
【0241】システムバス12に接続可能なモジュール
もしくはユニットに対しては、ユニットID#0〜#1
5が割り当てられる。例えばプロセッサモジュール10
−1〜10−5にはユニットID(UID)#0〜#4
が割り当てられ、サブシステム間接続ユニット512に
はユニットID#6が割り当てられ、異種バス拡張ユニ
ット510にはユニットID#8が割り当てられ、更に
バスアービタ502にはユニットID#16が割り当て
られている。
【0242】残りのユニットIDは空きとなっている。
なおバス拡張ユニット504は単なるシステムバス12
間のインタフェースであり、ユニットIDの指定は不要
である。バス拡張ユニット504を介して接続した拡張
システム506のシステムバス12−10に接続してい
るバスアービタ502及びプロセッサモジュール510
−1〜510−3についても、システムバス12−10
に固有な16個のユニットIDが適宜に割り当てられて
いる。更に異種サブシステム505については、基本シ
ステム501や拡張システム506とは全く異なった異
種システム固有のユニットID#A,#B,#Cが割り
当てられている。
【0243】図40は、図39の基本システム501に
設けているシステムバス12の信号線の構成である。図
40において、プロセッサモジュール12−1〜12−
5とバスアービタ502の間は、基本的にはバスデータ
線507とタグ制御線509で構成される。バスデータ
線507には共通データバス線514とデータパリティ
線516が含まれる。共通データバス線514は例えば
128回線で構成され、1バイトを8ビットとすると1
6バイトのビットデータを並列転送することができる。
データパリティ線516は16回線であり、1バイトの
データパリティを転送する。
【0244】タグ制御線は、バスリクエスト線520、
緊急バスリクエスト線522、バスグラント線524、
バスID線526、ユニットID線528、ホルト線5
30、マスタ権切替線532、インストール線534、
ディスコネクト通知線536及びクロック線538で構
成される。このような図40のデータバス12の構成を
更に詳細に説明すると次のようになる。まず共通データ
バス線514及びデータパリティ線516は、全てのプ
ロセッサモジュール12−1〜12−5とバスアービタ
502に共通に接続され、データ128ビット(16バ
イト),パリティ16ビット(1バイト)の並列伝送を
双方向に行ってデータを授受する。
【0245】共通タグバス線518は4回線で構成さ
れ、全てのプロセッサモジュール12−1〜12−5と
バスアービタ502に共通接続される。この共通タグバ
ス線518の信号を参照することにより、そのときのバ
スサイクルの共通データバス線514上のデータの種類
を知ることができる。共通タグバス線518で示される
共通データバス線128上のデータの種類は図41のよ
うになる。
【0246】図41において、タグバスコード(TBコ
ード)は、3ビットのコードにより共通データバス線5
14の各バスクロックサイクルにおける動作を指定して
いる。この共通タグバス線518の信号状態は、プロセ
ッサモジュール12−1〜12−5における送信元とな
るバスマスタ及び宛先となるバススレーブ、更にバスア
ービタ502によって参照され、後の説明で明らかにす
るバスクラント(使用許可)の切替え、バスサイクルの
切替え、及びデータ受信の制御を行う。
【0247】図41のタグバスコード0番は、コマンド
終結とバス使用権の継続を意味する。タグバスコード1
番はコマンド終結とバス使用権の開放を意味する。タグ
バスコード2番はコマンドの継続を意味する。タグバス
コード3番はリトライ(無効化)とバス使用権の開放を
意味する。タグバスコード4番はシングルワードコマン
ドとバス使用権の継続を意味する。タグバスコード5番
はシングルワードコマンドとバス使用権の開放を意味す
る。タグバスコード6番はマルチワードコマンドの開
始、必要ならばバス使用権の継続を意味する。タグバス
コード7番はアイドルサイクルを意味する。
【0248】ここでシングルワードコマンドとは、1バ
スクロックサイクルでパケット転送を終了するコマンド
である。これに対しマルチワードコマンドとは、複数の
バスクロックサイクルでのパケット転送を必要とするコ
マンドである。またバス使用権の開放とは、これを示す
タグバスコードのバスサイクルでバス使用権を放棄し、
他のバス使用要求者にバスを開放することを示す。
【0249】またバス使用権の継続とは、タグバスコー
ドが示すバスサイクルの次のサイクルも継続してバスを
使用することを示す。更にリトライとは、タグバスコー
ドが示すバスサイクル(バスコマンド)を強制終了して
リトライすることを示す。このときバススレーブは、リ
トライ指示されたバスコマンドを破棄する。またリトラ
イを実行するか否かはシステムのインプリメントに依存
している。更にまたアイドルサイクルとは、如何なるユ
ニットもバスを使用していないときの状態を示す。この
ときバススレーブ側は、アイドルサイクルとなるバスサ
イクルは無視することになる。
【0250】次に図40のバスリクエスト線520と緊
急バスリクエスト線522を説明する。バスリクエスト
線520及び緊急バスリクエスト線522はそれぞれ1
5の信号線で構成され、プロセッサモジュール12−1
〜12−5とバスアービタ502との間で1対1に接続
され、プロセッサモジュール12−1〜12−5側から
バスアービタ502に対しバス転送要求を行う。
【0251】通常の転送要求については、バスリクエス
ト線520のみによる転送要求が行われる。これに対し
異常検出等の緊急時にあっては、バスリクエスト線52
0と緊急バスリクエスト線522の両方を使用した転送
要求が行われる。図42は、バスリクエスト線520と
緊急バスリクエスト線522の組合せによるバスアービ
タ502に対する要求事項を示す。まずバスリクエスト
BRQと緊急バスリクエストBREが共にLレベルの場
合には、ユニットID#Nのスロットのユニットが非動
作状態にあることを示す。
【0252】次の緊急バスリクエストBREのみがHレ
ベルとなった場合はバス要求なしであり、現在バスリク
エストを行っていないユニットが緊急バスリクエストの
みをアサートした場合である。3番目のバスリクエスト
BRQのみがHレベルとなるのは通常のバス要求であ
り、緊急バスリクエスト以外の通常のバス要求である。
4番目のバスリクエストBRQ及び緊急バスリクエスト
BREの両方がHレベルとなるのは緊急バス要求であ
り、バススレーブがエラーを検出したときに、エラーリ
プライのためのバス獲得のためにこの要求を行う。
【0253】再び図40を参照するに、次のバスグラン
ト線524はバスアービタ502と各プロセッサモジュ
ール12−1〜12−5との間で1対1に接続され、バ
スアービタ502がバスグラント線524の信号をHレ
ベルとすることで、バスの使用許可を与えたことを示
す。バスID線526は、プロセッサモジュール12−
1〜12−5及びバスアービタ502が接続されている
システムバス12の番号を設定している。同じシステム
バスに接続されているユニットは全て同じ値が設定され
る。図39のシステム構成にあっては、基本システム5
01のシステムバス102にバスID#1が設定され
る。これに対し、バス拡張ユニット504を介して接続
した拡張システム506のシステムバス12−10には
バスID#2が設定される。
【0254】次に図40のユニットID線528を説明
する。ユニットID線528は、バスアービタ502及
びプロセッサモジュール12−1〜12−5のバス上で
の識別番号を設定する。図39にあっては、プロセッサ
モジュール10−1〜10−5にユニットID#1〜#
5を設定し、バスアービタ502にユニットID#16
を設定している。
【0255】このため、バスID線526とユニットI
D線528によるバスIDとユニットIDの組合せでシ
ステム全体におけるプロセッサモジュール12−1〜1
2−5及びバスアービタ502の番号が一意に決まる。
次に図40のホルト線530とマスタ権切替線532を
説明する。ホルト線530はバスアービタ502からプ
ロセッサモジュール12−1〜12−5を含む全ユニッ
トに例えば9通りに接続され、ホルト線530をHレベ
ルとすることでバスアービタ502が自分自身の故障を
検出して停止状態にあることを示す。
【0256】マスタ権切替線532はバスアービタ5−
2からプロセッサモジュール12−1〜12−5を含む
全ユニットに共通に接続され、ホルト線530と共にバ
スの調停処理に使用される。このホルト線530とマス
タ権切替線532の信号の組合せによるバス調停処理
は、図43のようになる。図43において、まずホルト
HLTがHレベルでマスタ権切替MFC(MasterForce C
hange) がLレベルの状態は、バスアービタ502の非
実装を意味する。次のホルトHLT及びマスタ権切替M
FCの両方がHレベルの場合には、バスアービタ502
のホルト即ちバスアービタ502の自己診断等でエラー
となり、バスアービタ502が停止状態にあることを通
知する。
【0257】3番目のホルトHLT及びマスタ権切替M
FCが共にLレベルの場合はバスグラントGBRの通常
切替であり、バスアービタ502がバス要求を保持して
いるときにバスサイクルの終了を検出した場合のバスグ
ラントGBRを切り替えるタイミングを意味する。最後
のホルトHLTがLレベルでバス権切替MFCがHレベ
ルの状態はバスグラントGBRの強制切替えであり、バ
スアービタ502がバス要求を保持しており、且つその
バスが未使用の場合のバスグラント切替タイミングを与
える。
【0258】再び図40を参照するに、インストール線
534はプロセッサモジュール12−1〜12−5を含
む各ユニットとバスアービタ502の間で1対1に接続
され、Lレベルにセットすることでバスアービタ502
に対しユニットが実装されていることを通知する。ディ
スコネクト通知線536は、プロセッサモジュール12
−1〜12−5を含む各ユニットとバスアービタ502
との間で1他1に接続される。ディスコネクト通知線5
36をLレベルにすることで、バスアービタ502に対
しユニットがシステムバス12から切り離された状態に
あることを通知する。 (2)バスアビトレーション動作 次に図40のバスデータ線507とタグ制御線509で
構成されるシステムバス12のバスアビトレーション動
作を説明する。本発明のシステムバスのバスアビトレー
ション動作としては、ファーストモードとセーフティモ
ードの2つのモードがある。また優先バスアビトレーシ
ョンとしてバススレーブが優先バスアビトレーションを
要求する場合と、バスアービタが優先バスアビトレーシ
ョンを要求する場合とに分けられる。
【0259】図44は、ファーストモードによるアビト
レーションのタイムチャートであり、横軸のバスクロッ
クサイクルT1,T2,T3,・・・に対し縦軸方向に
バスアービタ502の内部動作とシステムバス12上の
インタフェース信号に分けて示している。バスアービタ
502の内部動作としては、バスリクエストのホールド
動作である。システムバス12上のインタフェース信号
としては、バスリクエスト、バスグラント、タグバス及
びデータバスを示している。
【0260】まずサイクルT1で、ユニットID#0,
#1からに示すように、バスリクエスト信号の1サイ
クルのアサートが行われたとする。このときデータバス
はアイドル状態にあることから、バスアービタ502は
全てのバス要求元からのバスリクエストの立上がりを監
視している。のようにユニットID#0,#1の2つ
のバスリクエスト信号がアサートされると、次のサイク
ルT2でに示すように全てのリクエスト要求をホール
ドする。ここで複数のバスリクエストがあった場合に
は、ユニットIDの番号の若い方が優先順位が高いもの
とする。
【0261】このためバスアービタ502は、アイドル
状態からの優先順位の高いユニットID#0に対するバ
スグラント信号を、に示すように、マスタ権切替信号
と共にアサートする。続いてバスアービタ502は、次
のサイクルT3で、バスの使用権を許可したユニットI
D#0のバスリクエストのホールド要求を破棄すると同
時に、他のホールド要求があればバスグラント信号を切
り替える。
【0262】このときユニットID#1のホールド要求
があることから、バスリクエスト信号をユニットID#
1に切り替える。このようにバスアービタ502からの
バスグラント信号及びマスタ権切替信号により許可を受
けたバスマスタとしてのユニットID#0は、次のサイ
クルT3からデータ転送を開始する。このサイクルT3
からはタグバス信号が図41に示したタグバスコード0
10,100または110(CC,SC&C,MC&
S)のいずれかを示す。この場合には、複数のバスクロ
ックサイクルでデータを送ることから、タグバスコード
は110(MC&S)のマルチワードコマンドの開始と
なる。
【0263】このようなサイクルT3からのデータ転送
中にバスシーケンスが、例えばサイクルT5に示すよう
にタグバスによって終了ENDを示すと、のように、
このときのバスグラント信号に従ってバスマスタがユニ
ットID#1に切り替わり、次のサイクルT6から、バ
スマスタとなったユニットID#1からのデータ転送を
開始する。ここでデータ転送終了を示すタグバスのタグ
バスコードは、図41の001,011,101(CE
&E,リトライ,SC&E)のいずれかとなる。
【0264】一方、バスアービタ502はサイクルT2
で一旦保持したユニットID#1からのバスリクエスト
の処理中に、例えばサイクルT3,T4のように他のユ
ニットID#0,#2からのバスリクエストの立上がり
を検出すると、それぞれのバスリクエストを別途記憶す
る。そしてサイクルT5のように、ホールド要求がない
ときのタグバスによる終了通知のタイミングで、のよ
うに、ユニットID#0,#2の新たなバスリクエスト
をホールドする。
【0265】更にサイクルT4のユニットID#0から
の2回目のバスリクエストはシングルコマンドであり、
このためサイクルT8でユニットID#1のデータ転送
が終了すると、次のサイクルT9で、サイクルT3で出
された下位のユニットID#2のバスリクエストに先行
してユニットID#0のシングルコマンドのデータ転送
を行う。このシングルコマンドのデータ転送は同時に転
送終了を意味することから、ユニットID#1がサイク
ルT6で行ったバスリクエストのホールドをサイクルT
10ののように行う。
【0266】図44のファーストモードのバスアビトレ
ーションにあっては、バスアービタ502にバスリクエ
ストがホールドされている限り、データバスに空きサイ
クルを生ずることなく連続的にバス転送が行われ、空き
サイクルを発生しないことでバス転送速度を高めること
ができる。図45は本発明のバスアビトレーションにお
けるセーフティモードのタイムチャートである。このセ
ーフティモードのタイムチャートにあっても、図44の
ファーストモードと同様なユニットID#0〜#2によ
るバスリクエストが行われた場合を例にとっている。
【0267】セーフティモードにあっては、バスアービ
タ502からのバスグラント信号とマスタ権切替信号の
アサートによりバスマスタとしてのユニットIDが許可
を受けた後に、1サイクルのアイドルサイクルを置いて
データ転送を開始するようにしている。即ち、サイクル
T1におけるのバスリクエストに対し、サイクルT2
でのようにバスアービタ502のバスリクエストのホ
ールドが行われ、優先順位の高いユニットID#0に対
するバスグラント信号と更にマスタ切替信号をのよう
にアサートすると、次のサイクルT3をアイドルサイク
ルとした後、サイクルT4よりデータ転送を開始する。
【0268】このサイクルT3のアイドルサイクルはタ
グバスの過渡状態を安定化させるための期間であり、こ
のアイドルサイクルにおいて全てのユニットはタグバス
の値を無視する。サイクルT6でユニットID#0のバ
スマスタによるデータ転送が終了して、そのときのユニ
ットID#1のバスグラント信号によるデータ転送につ
いても、サイクルT7の1サイクルのアイドル期間を設
けた後に、のようにデータ転送を開始している。
【0269】このようにバスアービタ502からデータ
転送の許可を受けてデータ転送開始までの間に1サイク
ルのアイドル期間を置く以外の動作は、図44のファー
ストモードと同じである。図46は、バススレーブがデ
ータ転送中にエラーを検出した場合のエラーリプライ動
作のための優先バスアビトレーションのタイムチャート
である。いまサイクルT1に示すように、ユニットID
#0〜#2の3つのユニットからのバスリクエストがア
イドル状態で同時に行われ、次のサイクルT2でバスア
ービタ502に全てのバスリクエストがホールドされる
と、優先順位の最も高いユニットID#0に対しバスア
ービタ502よりバスグラント信号が出力される。
【0270】同時にマスタ権切替信号もアサートされる
ことで、サイクルT3よりバスマスタとなったユニット
ID#0からバススレーブとしての例えばユニットID
#3に対しデータ転送が開始される。このデータ転送中
のサイクルT4でバススレーブとなるユニットID#3
でエラーを検出したとすると、バスアービタ502に対
しユニットID#3からバスリクエスト信号及び緊急バ
スリクエスト信号の両方がのように出力される。
【0271】サイクルT6のバスリクエスト信号及び緊
急バスリクエスト信号を受けたバスアービタ502は、
バスリクエストを最優先でホールドすると同時に、の
ように、バスを早期に切り替えるためにバスグラント
を、エラー検出を行ったユニットID#3に切り替え
る。このためサイクルT8でデータ転送が終了すると、
このときバスグラント信号が有効となっているエラー検
出を行ったバススレーブとしてのユニットID#3をバ
スマスタに切り替え、サイクルT9で、のように、エ
ラーを検出したバスマスタのユニットID#3からエラ
ーリプライを行わせる。
【0272】このときバスアービタ502内の最優先の
ホールド要求は破棄され、次のサイクルT10からは通
常のアビトレーションを続行する。ここで、バススレー
ブ側で検出するエラーには物理バッファフル等のブロッ
ク検出も含まれている。このようにバス転送中にバスス
レーブ側でエラー検出が行われると、次のバス転送に切
り替える前に強制的にエラー検出を行ったバススレーブ
がバスマスタに切り替わってエラーリプライを行うこと
ができ、バス転送中のエラーを迅速に検出してリトライ
等の対応処置をとることができる。
【0273】図47は、バススレーブ側が確定する前の
バス転送中に起きたエラーをバスアービタ502で検出
した場合のエラーリプライのための優先バスアビトレー
ションのタイムチャートである。即ち本発明のバス転送
にあっては、スプリット型のパケット転送を採用してお
り、パケットの第1ワードとしてコマンドワードを転送
するため、コマンドワードの宛先フィールドの解読が終
了しないとバススレーブが確定しない。
【0274】このバススレーブが確定するまではバスア
ービタ502でバス転送のエラーを監視し、エラーを検
出するとスレーブの代わりにバスアービタ502がエラ
ーリプライを行うようになる。図47にあっては、サイ
クルT1のユニットT1のユニットID#0〜#2から
のバスリクエストがあると、サイクルT2で全てバスア
ービタ502がホールドする。そして優先順位の最も高
いユニットID#0について、バスグラント信号を有効
とすると共にマスタ権切替信号をアサートし、次のサイ
クルT3からデータ転送を開始する。
【0275】このサイクルT2において、バスアービタ
502はのように、バス使用許可を与えたバスマスタ
を示すユニットID#0のバスマスタフラグをもってお
り、このバスマスタフラグをユニットID#0のサイク
ルT3〜T8に亘るバスサイクル期間中ホールドしてお
く。バスマスタであるユニットID#0からのデータ転
送中のサイクルT5で、のようにアービタ502がエ
ラーを検出した場合、例えばパケットヘッダのパリティ
エラーを検出した場合、そのエラー内容を保持すると同
時にバスアービタ502の内部に自分自身の緊急バス要
求フラグをのようにセットする。尚、エラー検出が行
われたサイクルT5は、バスマスタとしてのユニットI
D#01が、連続した複数のバスコマンドを転送中にエ
ラーを検出した例である。
【0276】続いてバスアービタ502は、自分自身の
セットした緊急要求バスフラグにより、現在ホールド
している他のバスリクエストをマスクし、ホールド中の
バスリクエストについてバスグラントをアサートしない
ようにする。そしてサイクルT8でバスマスタをユニッ
トID#0としたデータ転送を検出すると、このバスマ
スタ切替タイミングでバスアービタ502自身がバスマ
スタとなって、のようにサイクルT9でエラーリプラ
イを転送する。
【0277】即ち、バス上には現われないバスアービタ
502の内部でのアビトレーションにより、バスアービ
タ502自身がバスマスタとなってエラーリプライを行
うことになる。このようなバスアービタ502のエラー
リプライが済むと、同時にバスアービタ502内でセッ
トした緊急バス要求フラグ及びバスマスタフラグが破棄
され、次のバスマスタとしてのユニットID#1への切
替えがバスグラントにより行われ、次のサイクルT10
から通常のアビトレーションを実行する。 (3)バス転送シーケンス 次に図40のシステムバス12上におけるバスコマンド
及びデータの転送シーケンスを説明する。図48はユニ
ット#1からユニット#2にメモリの読出要求を行うと
きの転送シーケンスである。ここで読出要求元のユニッ
ト#1をソースユニットとし、読出要求先のユニット#
2を宛先ユニット(ディストネーションユニット)とす
る。まず要求元のユニット#1は、コマンド内容、要求
元、要求先、転送バイト数及びアクセスアドレスを指定
したパケットヘッダを、バスコマンドとして送信する。
このパケットヘッダはバスコマンドの第1ワードを構成
する。具体的には、ユニット#1はパケットヘッダのコ
マンドフィールドにメモリリードを指定し、ソースフィ
ールドに要求元となる自分自身のユニットID#1を指
定し、宛先フィールドに要求先のユニットID#2を指
定する。
【0278】更に転送バイト数を示すサイドのフィール
ドに16バイトを指定し、更にアドレスフィールドにア
クセスアドレスを指定したパケットヘッダを作成して送
信する。本発明のバス転送にあっては、パケットヘッダ
として送信されるバスコマンドの第1ワードには、要求
元を示すソースフィールド、要求先を示す宛先フィール
ドに加え、第2の要求先を示す第2宛先フィールドが設
けられている。
【0279】ここで、通常使用される宛先フィールド
は、以下、第1宛先フィールドという。尚、第1宛先フ
ィールドは、第2宛先フィールドの指定がない場合には
単に宛先フィールドという場合もある。このパケットヘ
ッダとして送出されるバスコマンドの第1ワードのソー
スフィールド、第1宛先フィールド及び第2宛先フィー
ルドをもつバスコマンドの詳細は、後の説明で明らかに
される。
【0280】図48のメモリリードの転送シーケンスに
あっては、宛先は1つであることから、ユニット#1か
ら送出されるパケットヘッダは第1宛先フィールドに読
出要求先ユニットID#2を指定しているだけである。
システムバスはユニット#1からのパケットヘッダの送
信が終了すると開放され、次に割り当てられたユニット
にバス使用権が移る。
【0281】一方、読出要求先となるユニット#2にあ
っては、システムバス上の転送パケットを受信してその
宛先フィールドのIDを識別しており、自分自身が指定
されたパケットであればそれを受信し、受信パケットで
指定された処理即ちユニット#1からのパケットヘッダ
で指定されたメモリのリード処理を開始する。ユニット
#2において、要求されたリードデータが準備できたな
らば、に示すリプライバスコマンドとデータを作成し
て返送する。
【0282】このリプライバスコマンドの第1ワード
は、ソースフィールドに自分自身のユニットID#2を
指定し、宛先フィールドに要求元のユニットID#1を
指定し、コマンドフィールドはリプライコマンドである
ことを指定し、更に必要に応じたステータス情報を付加
して送出する。リプライバスコマンドのパケットヘッダ
である第1ワードの送出が済むと、続けて指定バイト数
16バイト分のデータを返送する。この実施例におい
て、データバス幅は16バイトであることから、2ワー
ドのリプライバスコマンドは2バスサイクルで転送を終
了する。
【0283】図49は、本発明のシステムバスにおける
メモリライトの転送シーケンスである。まず書込要求元
のユニット#1は、書込要求先となるユニット#2に対
しバスコマンドの第1ワードとなるパケットヘッダを作
成して転送し、パケットヘッダに続いて例えば32バイ
トデータを書き込む場合には、16バイト単位に分けて
2ワードのデータパケットを転送する。
【0284】第1ワード目のパケットヘッダには、ソー
スフィールドを自分自身のユニットID#1とし、宛先
フィールドを書込相手先のユニットID#2とし、コマ
ンドフィールドにメモリライトを指定し、更にアドレス
フィールドに32バイトアドレスを指定して、バスに送
出する。書込要求先のユニット#2にあっては、宛先フ
ィールドで自分自身のユニットID#2を指定したパケ
ットであればそのパケットを受信し、コマンドフィール
ドで指定された書込処理を開始する。書込処理が終了す
ると、のように、書込要求元のユニット#1に対する
リプライバスコマンドを作成して処理のステータスを返
送する。
【0285】即ち、リプライバスコマンドはソースフィ
ールドを自分自身のユニットID#2、宛先フィールド
を書込要求元のユニットID#1、コマンドフィールド
をリプライとし、更にステータスフィールドに例えば書
込正常を示すステータスをセットして返送するようにな
る。図50は、システムバスに接続している複数のユニ
ットを同時に指定してデータを転送するブロードキャス
トの転送シーケンスである。この例では、ユニット#1
がキャッシュコヒーレントのためのキャッシュインバリ
デートのバスコマンドを、ユニット#2,#3,#4に
ブロードキャストコマンドとして転送した場合である。
【0286】まずキャッシュインバリデートの要求元の
ユニット#1は、ブロードキャストバスコマンドのパケ
ットヘッダにつき、ソースフィールドに要求元のユット
ID#1を指定し、ブロードキャストフィールドに要求
先となるユニット#2,#3,#4の3つを指定する。
更にコマンドフィールドにキャッシュインバリデートを
指定し、更にアクセスアドレスを指定して送出する。
【0287】キャッシュインバリデートの要求先となる
ユニット#2,#3,#4のそれぞれは、要求元のユニ
ット#1からのブロードキャストバスコマンドを受信
し、ブロードキャストフィールドに自己の指定があれば
それを受信し、指定されたキャッシュインバリデートの
処理を開始する。キャッシュインバリデート処理が完了
すると、完了した順番に要求元のユニット#1に対しリ
プライバスコマンドを送出する。
【0288】この例では、ユニット#2,#4,#3の
順番にキャッシュインバリデート処理を終了してリプラ
イバスコマンドを返送している。例えば最初のユニット
#2にあっては、ソースフィールドを自分自身のユニッ
トID#2とし、宛先フィールドを要求元のユニットI
D#1とし、コマンドフィールドでリプライを指定し、
更にステータスフィールドにキャッシュインバリデート
の処理結果をセットして返送する。ユニット#4,#3
についても同様である。
【0289】要求元のユニット#1は全ての要求先のユ
ニット#2,#3,#4からのリプライバスコマンドを
受領し、そのステータス情報からキャッシュインバリデ
ートの成功を認識すると、次の処理に移行する。図51
は、図39において基本システム501のユニットから
拡張システム506のユニットとの間でバス転送を行う
場合の転送シーケンスである。図51にあっては、基本
システムにおけるシステムIばす1のユニット#1から
バス拡張ユニット504を介して拡張システムのシステ
ムバス#2のユニット#3にリード要求を行った場合の
転送シーケンスである。
【0290】まずシステムバス#1のユニット#1は、
のように、システムバス#2のユニット#3を要求先
とするバスコマンドを作成して送出する。このユニット
#1からのバスコマンドは、ソーススフィールドに要求
元のシステムバスを示すバスID#1とユニット#1を
示すユニットID#1を指定している。また宛先フィー
ルドには相手先のシステムバスを示すバスID#2と相
手先のユニットを示すユニットID#3を指定してい
る。
【0291】これ以外の点は、同じシステムバス上のバ
スコマンドと同様、コマンドフィールドにメモリリード
を指定し、更に転送バイト数を指定して送信する。バス
拡張ユニット504は、ユニット#1からのバスコマン
ドを受信し、このバスコマンドの宛先フィールドのバス
ID#2が、自分自身が接続拡張しているバスであるこ
とを認識すると、そのバスコマンドを受理し、システム
バス#2に対し同じバスコマンドをのように発行す
る。
【0292】システムバス#2のユニット#3にあって
は、宛先フィールドのユニットIDが自己のユニットI
D#3であることを認識すると、そのバスコマンドを受
信してリード処理を行い、リードデータが準備できたな
らば、のように、コマンドを第1ワード、データを第
2ワードとするリプライバスコマンドを送信する。この
リプライバスコマンドについても、ソースフィールドに
システムバスのID#2と自分自身のユニットID#3
を指定し、宛先フィールドについては別のシステムバス
のバスID#1とユニットID#1を指定し、更にコマ
ンドフィールドにリプライを指定し、更にリード結果の
ステータスを付けて送信する。リプライバスコマンドの
1ワード目の送信が済むと、次の2ワード目の16バイ
トデータのパケットを送信する。
【0293】バス拡張ユニット504はのリプライコ
マンドを受信し、その宛先フィールドのバスID#1か
ら自分自身が接続拡張しているシステムバス#1である
ことを認識すると、同じリプライコマンドをシステムバ
ス#1に転送する。システムバス#1のユニット#1
は、このリプライコマンドから自分自身の宛先ユニット
ID#1を認識するとリプライバスコマンドを受信し、
次の2ワード目の16バイトのリードデータを受信して
処理を終了する。
【0294】図52は、図39におけるサブシステム5
00−1とサブシステム500−2の間のサブシステム
間接続ユニット512を経由したバス転送のシーケンス
である。図52にあっては、サブシステム#1のユニッ
ト#1から別のサブシステム#2のユニット#3にリー
ド要求を行った場合である。まず要求元となるサブシス
テム#1のユニット#1は、のように、リード要求の
ためのバスコマンドを送出する。このバスコマンドはパ
ケットヘッダを2つ使用した2ワードのバスコマンドで
構成される。
【0295】まずバスコマンドの第1ワード目には、拡
張サブシステム#2のアクセスを指定するための識別
子、即ちサブシステム拡張識別子EXの指定を行う。続
いてソースフィールドにサブシステム#1のバスID#
1とユニットID#1をセットし、サブシステム#2に
対するサブシステム間接続ユニット512のユニットI
D#6を宛先フィールドで指定する。
【0296】更にコマンドフィールドにはメモリリード
を指定し、アドレスフィールドにはアクセスアドレスを
指定し、更に図示しないサイズフィールドに転送バイト
数を指定する。次の2ワード目はシステムバス拡張識別
子EXの指定で付加された拡張バスコマンドであり、ソ
ースフィールドに要求元のサブシステムID#1、バス
ID#1及びユニットID#1が指定される。
【0297】また宛先フィールドには、要求先のサブシ
ステムID#2、要求先のバスID#2及び要求先のユ
ニットID#3が指定される。この2ワードとなるバス
コマンドがシステムバスに送出されると、サブシステム
間接続ユニット512において、第1ワード目の宛先フ
ィールドのユニットID#6を認識し、バスコマンドの
第1ワード及び第2ワードを受信する。
【0298】そしてサブシステム#2側に設けているサ
ブシステム間接続ユニット513に対し、同じバスコマ
ンドをそのまま転送する。この転送制御はバスコマンド
の第2ワード目の各IDにより定まる。サブシステム#
1のサブシステム間接続ユニット512からのバスコマ
ンドを受信したサブシステム#2のサブシステム間接続
ユニット513は、バスコマンドの第1ワード目のソー
スフィールドにおけるユニットIDを自分自身のユニッ
トID#7の指定に変更すると共に、宛先フィールドを
第2ワードから解読したユニットID#3の指定に変更
してシステムバス#2に送出する。バスコマンドの第2
ワード目はそのまま送出する。
【0299】システムバス#2のユニット#3は、サブ
システム間接続ユニット513から送出されたバスコマ
ンドの第1ワード目の受信で宛先フィールドのユニット
IDが自分自身のユニットID#3であることを認識す
ると、このコマンドを受信し、更に第2ワード目も受信
する。そして第1ワード目のコマンドフィールドにより
指定されたメモリリードを、指定されたアクセスアドレ
スについて行う。
【0300】リードデータが準備できると、に示すよ
うにリプライバスコマンドを送出する。このリプライバ
スコマンドは、第1ワード目のソースフィールドにサブ
システム識別子EXをセットし、更にバスID#2及び
ユニットID#3をセットし、宛先フィールドはサブシ
ステム間接続ユニット513のユニットID#7を指定
する。もちろんコマンドフィールドはリプライを指定
し、図示しないステータスもセットする。
【0301】リプライバスコマンドの第2ワード目は、
ソースフィールドにサブシステムID#2、システムバ
スID#2及びユニットID#3を指定し、宛先フィー
ルドについては要求元となるサブシステムID#1、シ
ステムバスID#1及びユニットID#1を指定する。
そして第3ワード目がリードデータとなる16バイトデ
ータである。
【0302】サブシステム間接続ユニット513は、ユ
ニット#3から送出されたリプライバスコマンドの第1
ワード目の宛先フィールドから自己のユニットID#7
を認識すると、このバスコマンドを受信し、のよう
に、サブシステム間インタフェースを介してサブシステ
ム#1のサブシステム間接続ユニット512にリプライ
バスコマンドの第1ワード、第2ワード、第3ワードを
転送する。
【0303】サブシステム#1のサブシステム間接続ユ
ニット512は、リプライバスコマンドの第1ワードの
ソースフィールドのユニットIDを自分自身のユニット
ID#6の指定に変更すると共に、宛先フィールドを要
求元のユニットID#1に変更してシステムバス#1に
送出する。このソースフィールド及び宛先フィールドの
ユニットIDの変更は、受信したリプライバスコマンド
の第2ワード目を参照することで指定変更できる。リプ
ライバスコマンドの第2ワード目は、そのまま送出す
る。第2ワード目の16バイトデータについても、その
まま転送する。
【0304】サブシステム#1のユニット#1は、リプ
ライバスコマンドの第1ワードの宛先フィールドから自
己のユニットIDを認識すると、このバスコマンドの受
信を開始し、第3ワードまで受信して処理を終了する。
図53は、本発明のシステムバスのバス幅を8バイトバ
スとした場合の転送シーケンスである。図40のシステ
ムバスにあっては、共通データバス線514を128本
とすることで16バイト転送を行っているが、システム
によっては半分の8バイトバスを使用する場合もある。
このように8バイトシステムバスを使用した場合には、
今まで説明した16バイト幅の1クロックサイクルでの
バス転送は2バスクロック分の転送を行うことになる。
【0305】図53は、8バイトバスを使用した場合の
ユニット#1からユニット#2にリード要求を行った場
合の転送シーケンスである。ユニット#1は、16バイ
トのバスコマンドを8バイト単位の第1ワードと第2ワ
ードに分けてシステムバスに送出する。8バイトバスコ
マンドの第1ワードには、ソースフィールド、宛先フィ
ールド、コマンドフィールド及びサイドフィールドのそ
れぞれが設けられている。第2ワード目はアドレスフィ
ールドである。
【0306】このような8バイトの2ワードで構成され
るバスコマンドがシステムバスに送出されると、要求先
のユニット#2はバスコマンドの第1ワード目の宛先ユ
ニットID#2を認識してバスコマンドを受信し、第2
ワード目で指定されたアクセスアドレスについてメモリ
のリード動作を行う。リードデータが準備できると、
のようにリプライバスコマンドを送出する。リプライバ
スコマンドは、8バイトの第1ワードがパケットヘッダ
となり、その後ろに8バイトずつ分けた合計16バイト
の2ワードを付加して送出する。
【0307】図54は、図39のサブシステム500−
1における基本システム501と異種サブシステム50
5との間のバス転送シーケンスである。図51におい
て、基本システムのシステムバス#1は異種バス拡張ユ
ニット540を介して異種システムバス#2に接続され
る。異種バス拡張ユニット540には、システムバス#
1側のコマンドを異種システムバス#2側のコマンドに
変換するコマンド変換機能が設けられている。
【0308】いま、システムバス#1のユニット#1か
ら異種システムバス#2のユニット#Bに対しアクセス
要求を行うものとする。ユニット#1はバスコマンドと
して2ワードのパケットをパケットヘッダとして送出す
る。このバスコマンドの第1ワード目にはソースフィー
ルドでバスID#1及びユニットID#1を指定し、ま
た宛先フィールドにバスID#1と異種バス拡張ユニッ
ト540のユニットID#8を指定している。
【0309】更にコマンドフィールドには、異種システ
ムバス#2のコマンド体系に変換するためのエミュレー
ション識別子EMが指定されている。第2ワード目は異
種システムバス#2に適合したバスコマンドであり、ソ
ースフィールドに異種システムバス#2空間における異
種バス拡張ユニット540のユニットid#1が指定さ
れ、宛先フィールドには異種システムバス#2のユニッ
トIDuid#Bが指定されている。
【0310】このシステムバス#1のユニット#1から
送出された2ワードのバスコマンドは、異種バス拡張ユ
ニット54において、第1ワード目の宛先フィールドか
ら自己のユニットID#8を認識することで受信され
る。異種バス拡張ユニット540自身が接続拡張してい
る異種システムバス#2に対するエミュレーションコマ
ンドであることを認識すると、コマンド依存フィールド
となる第2ワードのみを異種システムバス#2にのよ
うに送出する。
【0311】異種システムバス#2のユニット#Bは、
その宛先フィールドのuid#Bから自己の宛先を認識
して受信し、コマンドフィールドで指定された処理を実
行し、処理が済むと、に示すリプライコマンドを送出
する。ユニット#Bからのリプライコマンドは第1ワー
ドのソースフィールドにユニットid#Bを指定し、宛
先フィールドに異種バス拡張ユニット540のユニット
id#1を指定し、更に2ワード目にステータスやその
他必要なデータを転送する。
【0312】異種バス拡張ユニット540は、ユニット
#Bからのリプライバスコマンドの第1ワード目から自
分自身が接続しているシステムバス#1に対するリプラ
イコマンドであることを認識すると、このリプライコマ
ンドを受理して、のようにシステムバス#1側に同様
なリプライバスコマンドを送出する。このリプライバス
コマンドの第1ワードはソースフィールドによりシステ
ムバスID#1と異種バス拡張ユニット540のユニッ
トID#8を指定し、宛先フィールドに要求元のシステ
ムバスID#1のユニットID#1を指定している。第
2ワード目及び第3ワード目は、異種システムバス#2
のユニット#Bから送出されたバスコマンドがそのまま
付加される。
【0313】このような異種バス拡張ユニット540に
よる簡単なバスコマンドの変換により、異なるバスシス
テムのユニット間でのデータ転送が可能となる。またエ
ミュレーションバスコマンドで使用するそれぞれのバス
上におけるユニットIDは、各々のバス上で一意であれ
ばよく、拡張された異種システムバス上のIDも異種バ
ス拡張ユニット540を含めて一意となる。 (5)バスコマンド 図55は、本発明のキャッシュコヒーレンス装置のシス
テムバス12のバス転送に使用するバスコマンドの基本
的なコマンドフォーマットである。
【0314】図55において、1バイトを8ビットとす
ると、基本バスコマンドは16バイト長で構成される。
図55にあっては、コマンドフィールドを4バイト(3
2ビット)幅に分けて示している。基本バスコマンド
は、先頭の基本バイト部分にソースフィールド552、
第1宛先フィールド560及び第2宛先フィールド56
4を設けている。ソースフィールド552にはアクセス
要求元の情報を指定する。第1宛先フィールド560に
は、ソースフィールドの要求元からアクセス要求を行う
相手先の情報が指定される。第2宛先フィールド564
には、ソースフィールド552と第1宛先フィールド5
60以外に、アクセスを行う別の相手先の情報が指定さ
れる。
【0315】具体的には、例えば図17に示した本発明
のキャッシュコヒーレンス装置における読出モード2に
おける処理動作を例にとると、次のようになる。図17
は、アクセス要求元であるローカルのプロセッサモジュ
ール10−1からアクセス対象となる主記憶を保持して
いるホームとなるプロセッサモジュール10−2に対し
リード要求を行ったが、主記憶28に最新のデータが存
在しておらず、リモートとなるプロセッサモジュール1
0−3のキャッシュユニットに最新データが存在してい
る場合の処理である。
【0316】このようなリード処理にあって、まずロー
カルのプロセッサモジュール10−1からホームのプロ
セッサモジュール10−2にリード要求を行う場合に
は、図55のソースフィールド552にローカルのユニ
ットIDを指定し、第1宛先フィールド560はホーム
のユニットIDを指定する。このとき第2宛先フィール
ド564は使用しない。
【0317】次にホームのプロセッサモジュール10−
2からリモートのプロセッサモジュール10−3にリー
ド要求を行う場合には、ソースフィールド552はホー
ムIDとし、第1宛先フィールド560はリモートID
とし、更に第2宛先フィールド564に最初のアクセス
要求元であるローカルIDを指定する。更に、リモート
のプロセッサモジュール10−3からリプライデータ2
60を送出する際には、図55のソースフィールド55
2にリモートIDを指定し、第1宛先フィールド560
は要求元であるホームIDを指定し、更に第2宛先フィ
ールド564には最初の要求元であるローカルIDを指
定する。具体的には、リモートのプロセッサモジュール
10−3で受信したバスコマンドと同じ情報をそのまま
セットしてリプライコマンドとしてのリプライデータを
260を送出すればよい。
【0318】このように本発明のキャッシュコヒーレン
ス装置でローカル、ホーム、リモートとなる3つのプロ
セッサモジュール間でのデータ転送を必要とするリード
アクセスにおいて、図55におけるソースフィールド5
52、第1宛先フィールド560及び第2宛先フィール
ド564のコマンドフォーマットが意味をもつことにな
る。
【0319】図55の基本バスコマンドにおいて、ソー
スフィールド552は実際にはソースバスIDフィール
ドとソースユニットIDフィールドに分けられている。
ソースバスIDフィールドをもつことで、異なるシステ
ムバス間でのデータ転送が可能となる。同様に、第1宛
先フィールド560及び第2宛先フィールド564につ
いても、宛先バスIDフィールドと宛先ユニットIDフ
ィールドがそれぞれ設けられている。更に、第1宛先フ
ィールド560と第2宛先フィールド564にはアクセ
スIDフィールドが設けられている。
【0320】第1宛先フィールド560のアクセスID
フィールドは、スプリット転送でのバスアクセスの多重
動作を行うための動作識別ID番号を指定するフィール
ドであり、コマンドあるいはコマンド群に対して有効で
ある。このアクセスIDフィールドによる動作識別ID
番号の用途は、複数のバスアクセスポートの同時動作や
単一のDMAポートのパイプライン動作等であり、1ユ
ニット当たり16種類までの多重動作が指定できる。
【0321】第2宛先フィールド564の指定がない通
常のバスコマンドにおいては、第1宛先フィールド56
0のIDフィールドにはソースユニットの任意の動作識
別ID番号を指定すればよい。この場合、ソースユニッ
トにおいてはアクセスユニットIDと同じ動作識別ID
番号を記憶しており、リプライコマンドを受信した際に
第1宛先フィールド560のアクセスIDフィールドと
ソースユニットに記憶している動作識別ID番号を比較
し、一致したならば、自分自身が発行したバスコマンド
に対するリプライコマンドであると判断する。
【0322】一方、図17の読出モード2におけるリー
ド処理で、ホームのプロセッサモジュール10−2から
の第2バスコマンド及びリモートのプロセッサモジュー
ル10−3からのリプライコマンドのように、第2宛先
フィールド564が指定されているときには、ソースユ
ニット自身がバスコマンド送出の際に記憶している動作
識別ID番号とリプライコマンドにおける第2宛先フィ
ールド564のアクセスIDフィールドを比較し、一致
したならば、自分自身が発行したバスコマンドに対する
リプライが第1宛先フィールド560で指定されたリプ
ライコマンドと判断する。
【0323】具体的には、図17においてローカルのプ
ロセッサモジュール10−1はホームのプロセッサモジ
ュール10−2に送出したバスコマンドに対するリプラ
イコマンドを待っているが、実際にはホームのプロセッ
サモジュール10−2からリモートのプロセッサモジュ
ール10−3に送出した第2バスコマンドに対するリプ
ライコマンドがホームのプロセッサモジュール10−2
ではなくリモートのプロセッサモジュール10−3から
返送されてくる。
【0324】このときに第2宛先フィールド564のア
クセスIDフィールドをローカルのプロセッサモジュー
ル10−1でバスコマンド送出時に記憶した動作識別I
D番号と比較して、一致すれば、これはホームのプロセ
ッサモジュール10−2に対する自分自身の送出したバ
スコマンドに対するリプライコマンドと見做してリプラ
イコマンドを受信することになる。
【0325】この結果、本来の要求元であるローカルの
プロセッサモジュール10−1は、リモートのプロセッ
サモジュール10−3を意識することなく、ホームとな
るプロセッサモジュール10−2の主記憶28には存在
せずリモートのプロセッサモジュール10−3のキャッ
シュユニットに存在する最新データを受領することがで
きる。
【0326】このときローカルのプロセッサモジュール
10−1にあっては、リプライデータの受信時間を監視
するバスタイマとしてホームのプロセッサモジュール1
0−2からのリプライを考慮した時間T1(第1時間)
を設定しているが、ホームのプロセッサモジュール10
−2からリモートのプロセッサモジュール10−3に対
する第2のバスコマンドの送出によるリプライであるこ
とから、ローカルのプロセッサモジュール10−1にお
けるバスタイムアウトの監視タイマの時間を、リモート
のプロセッサモジュール10−3を考慮した、より長い
時間T2(第2時間)に変更して、バス転送のタイムア
ウトを監視する。
【0327】このバスタイムアウトカウンタの時間変更
は、ローカルのプロセッサモジュール10−1でホーム
からリモートに送出されるリモートコマンド250の送
出を監視して行えばよい。もちろん、図40に示したタ
グ情報線509を利用した時間変更を行うことも可能で
ある。更に図17のリモートとなるプロセッサモジュー
ル10−3からのリプライデータ260であるリプライ
コマンドの返送については、リプライコマンドの契機と
なったホームとなるプロセッサモジュール10−2から
のリモートコマンド250であるバスコマンドの第1宛
先フィールド560におけるアクセスIDフィールドの
動作識別ID番号をそのまま指定することになる。
【0328】図55の基本バスコマンドは、先頭にサブ
システム拡張指定フラグ550を設けている。このサブ
システム拡張指定フラグ550は、図52のように、異
なったサブシステムのユニット間でデータ転送を行う場
合に1にセットされ、これにより図55の基本バスコマ
ンドに加えて、図62に示すサブシステム拡張用のバス
コマンドの第2ワード目が作成される。このサブシステ
ム拡張用の第2ワード目については後の説明で明らかに
する。
【0329】図55の基本バスコマンドにおいて、ソー
スフィールド552と第1宛先フィールド560の境界
部分にはブロードキャスト指定フラグ558が設けら
れ、ブロードキャストバスコマンドとして使用する際に
1にセットされる。また第2宛先フィールド564の先
頭部分には第2宛先指定フラグ562が設けられ、第2
宛先フィールド564を使用する際に1にセットされ
る。
【0330】基本バスコマンドの2行目となる5〜8バ
イト部分には、コマンドフィールド566、サイズフィ
ールド568及びフラグフィールド570が設けられ
る。コマンドフィールド566には、リードコマンド、
ライトコマンド、リプライコマンド、ブロードキャスト
コマンド等のコマンド識別コードが設定される。次のサ
イドフィールド568にはデータ転送サイズが設定され
る。
【0331】リード系のバスコマンドではリプライコマ
ンドで返送するデータサイズを指定し、ライト系のバス
コマンドではバスコマンドに後続する書込データのデー
タサイズを指定する。次のフラグフィールド570に
は、コマンドの修飾フラグや属性フラグが必要に応じて
設けられる。最後のコマンドパラメータフィールド57
2は、コマンドフィールド566のコマンド種別に依存
した例えばアクセスアドレス等が指定される。
【0332】図56は、本発明で使用するブロードキャ
ストバスコマンドのコマンドフォーマットである。ブロ
ードキャストバスコマンドは、ソースフィールド552
に続いて設けた第1宛先フィールド560について、図
55の基本バスコマンドにおける宛先ユニットIDの代
わりに16ビット幅のブロードキャスト宛先マップフィ
ールド574を設けている。
【0333】本発明のシステムバス12は最大で16ユ
ニットを接続することができるので、ブロードキャスト
宛先マップフィールド574はビット対応によりブロー
ドキャストコマンドの相手先となるユニットをビット対
応で指定することができる。プロードコースバスコマン
ドもブロードキャストバスコマンドと同じフォーマット
をもつ。
【0334】図57は、本発明のシステムバスで使用さ
れる基本リプライ用及びエラーリプライ用のバスコマン
ドのコマンドフォーマットである。この基本リプライ及
びエラーリプライ用のバスコマンドは、第2行目の部分
にリプライタイプ574、エラーレベル576、エラー
タイプ578、エラーコード580の各フィールドを設
けたことを特徴とする。それ以外の構造は図55の基本
バスコマンドと同じである。なお最後のコマンドパラメ
ータ572のフィールドは使用していない。
【0335】リプライタイプフィールド574には、リ
プライを要求したソースユニットが発行したバスコマン
ドのコマンドコードが指定される。またリプライコマン
ドの付加情報のフォーマットやデータの有無は、このリ
プライタイプフィールド574のコマンドコードによっ
て決められる。次のエラーレベルフィールド576は、
エラーリプライバスコマンドとして使用する際にエラー
レベルが格納される。また次のエラータイプフィールド
578には、エラー返信時のエラーの分類を示すエラー
タイプが通知される。更にエラーコードフィールド58
0には、エラー返信時にエラーの詳細な要因が通知され
る。
【0336】図59は図57のエラータイプフィールド
578の例であり、ソフトウェアエラー、システム構成
エラー、ハードウェアエラー、バスエラーの分類情報が
エラー検出に基づいてセットされる。図60は図57の
エラーレベルフィールド576によるエラーの詳細分類
をエラータイプと組み合わせて示している。ここで図6
0の「nnn」は、エラーの種別によって異なる。また
「xx」は、00でソース(ローカル)、01で第1宛
先(ホーム)、10で第2宛先(リモート)、11で第
1宛先(ホーム)のミラーユニットを表わす。また
「r」は、0でライト、1でリードとなる。
【0337】尚、図56に示したブロードキャストバス
コマンドは、図23の書込モード1、図24の書込モー
ド2、図25の書込モード3、図26の書込モード4等
におけるキャッシュインバリデードのためのバスコマン
ドとして使用される。図58は、本発明のシステムバス
で使用されるキャッシュステータスリプライバスコマン
ドのコマンドフォーマットである。このキャッシュステ
ータスリプライコマンドにあっては、ソースフィールド
552,第1宛先フィールド560に続いて、キャッシ
ュサブラインステータスフィールド582−1を設け、
更に2行目の最後の4ビットに同じくキャッシュサブラ
インステータスフィールド582−2を設けている。
【0338】本発明のキャッシュコヒーレンス装置にあ
っては、64バイトのキャッシュラインを16バイト単
位のキャッシュサブラインに分けている。そこで、キャ
ッシュサブラインを#0〜#3で表わし、キャッシュサ
ブラインステータス582−1,582−2の組合せで
各サブラインを3ビットずつ割り当て、キャッシュバス
コマンドに対するリプライバスコマンドにより、アクセ
ス対象となったキャッシュサブラインの現在の状態を表
示する。
【0339】即ち、キャッシュサブラインステータスフ
ィールド582−1にはサブラインID#0〜#3のビ
ット0、ビット1の2ビットがそれぞれ割り当てられ、
2行目の最後のキャッシュサブラインステータスフィー
ルド582−2にビット2の第3ビット目が割り当てら
れている。このキャッシュサブラインステータスフィー
ルド582−1,582−2によるキャッシュサブライ
ン状態は、図61に示すようになる。
【0340】図62は、図55のサブシステムバス拡張
識別フラグ550を1にセットした際にバスコマンドの
第2ワードとして作成されるサブシステム拡張バスコマ
ンドのコマンドフォーマットである。このサブシステム
拡張バスコマンドは1行目にソースシステムフィールド
586を設け、ソースユニットを設けているソースシス
テムID、ソースバスID及びソースユニットIDの各
フィールドを指定する。
【0341】2行目については、サブシステム第1宛先
フィールド558が設けられ、宛先システムID、宛先
バスID、宛先ユニットIDの各フィールドを設けてい
る。続いてサブシステム第2宛先フィールド590が設
けられ、同様に宛先システムID、宛先バスID、宛先
ユニットIDの各フィールドを設けている。また第2宛
先指定フラグ592もセットされる。このような図62
のサブシステム拡張バスコマンドを図55の基本バスコ
マンドの第1ワードに対し第2ワードとして組み合わせ
ることで、図52に示した複数のサブシステムのユニッ
ト間でのデータ転送を行うことができる。
【0342】このように本発明のキャッシュコヒーレン
ス装置で使用する第2共通バスとしてのシステムバス1
2は、ディレクトリ方式に従った分散共有メモリ型のマ
ルチプロセッサシステムにおいて、キャッシュコヒーレ
ンスを効率良く実現するための共通バスを提供すること
ができ、ディレクトリ方式の拡張性を損うことのない共
通バスが提供できる。
【0343】またシステムバス単位に構築されるサブシ
ステムを複数結合した大規模なマルチプロセッサシステ
ムへの拡張を考慮した信頼性の高い共通バスが提供でき
る。更に、異なったバスとの接続を考慮していることか
ら、既存のバス資産の有効活用を可能とする共通バスが
提供できる。 7.第2ディレクトリメモリ 図63は、本発明の他の実施形態であり、プロセッサモ
ジュールのシステムバスに対するバス接続ユニットに第
2ディレクトリメモリを設けたことを特徴とする。
【0344】図63は、プロセッモジュール10−1が
ローカルとしてホームのプロセッサモジュール10−2
の主記憶28に対しホームコマンド600を発行して書
込アクセスを行い、ホームからリモートとしてのプロセ
ッサモジュール10−3,10−4にキャッシュインバ
リデートのリモートコマンド602を発行した場合を示
している。
【0345】プロセッサモジュール10−1〜10−4
の各々は、メモモリ管理ユニット26に対し分散主記憶
としてのローカルストレージ28とディレクトリメモリ
30を設けており、これは図3の実施形態と同じであ
る。これに加え図63の実施形態では、バス接続ユニッ
ト32に第2ディレクトリメモリ31を設けている。こ
の第2ディレクトリメモリ31に対しディレクトリメモ
リ30を第1ディレクトリメモリと呼ぶ。
【0346】第2ディレクトリメモリ31は、自己のロ
ーカルストレージ28に存在するキャッシュライン単位
のデータにつき、そのデータがシスムテバス上で他のバ
スコマンドによりアクセス状態を登録している。この登
録内容としては、例えば、リモートコマンドによるキャ
ッシュインバリデート待ちがある。図63のプロセッサ
モジュール10−2は、ホームとしてプロセッサモジュ
ール10−3,10−4にキャッシュインパリデータの
リモートコマンド602を発行しており、コマンド応答
を待っている。このときプロセッサモジュール10−2
の第2ディレクトリメモリ31の該当するキャッシュラ
インについては、リモートからのキャッシュインバリデ
ートの応答待ちが登録されている。
【0347】この状態で、例えばプロセッサモジュール
10−3の2番目キャッシュユニット側から、同じキャ
ッシュラインを対象にライトアクスセのホームコマンド
608が発行されたとする。このホームコマンド602
に対しバス接続ユニット32は第2ディレクトリメモリ
31を参照してキャッシュインバリデートの完了待ちに
あることをメモリ管理ユニット26に送ることなく直ち
に認識し、ビジー応答をリプライコマンドで返す。
【0348】この場合、システムバス12上でのリトラ
イとすることは無駄になるので、アクセス元のキャッシ
ュユニットまでビジーを通知し、リトライを行わせる。
このように第2ディレクトリメモリ31の参照でリモー
トコマンドによるアクセス不能な状態が判るので、メモ
リ管理ユニット26側でアクセス不能を判断してビシー
を応答する場合に比べ、処理を高速化できる。
【0349】リモートのプロセッサモジュール10−
3,10−4でキャッシュインバリデートが完了てリプ
ライコマンドが帰されると、第2ディレクトリメモリ3
1の登録は削除され、プロセッモジュール10−3から
のリトライによるリモートコマンド602が受け入れら
れる。図64は、図63のホームのキャッシュインバリ
デートの完了待ちの状態にあるホームとしてのプロセッ
サモジュール10−2に対し、他のプロセッサモジュー
ルからホームコマンド606が複数発行され、バス接続
ユニット32のバッファがフルとなった場合である。こ
のバッファフルの状態で、プロセッサモジュール10−
3からリモートコマンド602が発行されたとすると、
第2ディレクトリメモリ31を参照することなく、直ち
にバッファフルのビジー応答を返す。
【0350】この場合、アクセス要求元のキャッシュユ
ニットまでバッファフルのビジー応答を返すと、スヌー
プバス22やキャッシュユニットがリトライ動作に忙殺
されることから、システムバス12上でのリモートコマ
ンドのリトライとする。 8.その他 図4のプロセッサエレメント14−1に設けた2次キャ
ッシュ制御モジュール35は、2次キャッシュ38のキ
ャッシュデータをLRUで管理しており、新たなキャッ
シュデータの書込みで2次キャッシュ38がオーバフロ
ーすると、キャッシュデータのLRU追出し処理が行わ
れる。このLRU追出し処理は、追出し対象となったキ
ャッシュラインが書込権を所有した排他的ダーティ状
態、即ちオーナーであった場合には、メモリモジュール
25に対しスヌープバス22を介してコピーバックコマ
ンドを発行し、ホームとなるプロセッサモジュールのロ
ーカルストレージ28に、追い出されたキャッシュデー
タを格納する。
【0351】一方、書込所有権が存在した排他的ダーテ
ィ状態EX&DのキャッシュラインのLRU追出しの際
に、他のスヌープバスを介して接続た他のキャッシュ上
にシェアードモディファイ状態でキャッシュデータが存
在する場合には、追い出されたキャッシュデータを消し
た後、他のキャッシュユニットにリプライコマンドRP
を送って、シェアードモディファイ状態SH&Mから排
他的ダーティ状態EX&Dに切り替えて書込所有権を移
す。この場合には、LRUで追い出されたキャッシュデ
ータのローカルストレージ28への書込みは不要であ
る。尚、上記の実施例は、1つのプロセッサモジュール
に4つのプロセッサエレメントを設けた場合を例にとっ
ているが、プロセッサモジュールには少なくとも1台の
プロセッサエレメントが設けられればよい。また、プロ
セッサエレメントの数は必要に応じて適宜に設けること
ができる。更に、システムバスで接続されるプロセッサ
モジュールの実施例に限定されず、2以上であれば任意
の数のプロセッサモジュールを接続できる。
【0352】
【発明の効果】以上説明してきたように本発明のキャッ
シュコヒーレンス装置によれば、複数のプロセッサモジ
ュールの各々でキャッシュユニット付きのプロセッサエ
レメントの複数を内部の共通バスで相互に接続すると共
に主記憶を備えたメモリモジュールを接続し、更にメモ
リモジュール側を外部の共通バスにより他のプロセッサ
モジュールと相互に接続する2階層の共通バス構成とし
たことで、プロセッサモジュール内でのキャッシュコヒ
ーレンスのバス動作とプロセッサモジュール間でのキャ
ッシュコヒーレンスのバス動作を分離することができ、
処理性能を大幅に向上できる。
【0353】また内部の共通バスはモジュール内のプロ
セッサ数に外部からのアクセスを受け付けるメモリモジ
ュールを加えたアクセス源に対応したバス負荷で済み、
バス負荷を軽くしてプロセッサ間での処理性能を向上で
きる。また外部のシステムバスのバス負荷は相互に接続
したプロセッサモジュールの台数で決まり、プロセッサ
モジュール内に設けているプロセッサエレメントの数に
依存しないことから、同様に、外部の共通バスのバス負
荷を低減して処理性能を向上できる。
【0354】また、内部の共通バスはプロセッサモジュ
ールの外部への接続を必要としないため、線路長を短く
して電気的な特性を良好に保つことができ、これによっ
てバスのクロック周波数を高くして、内部接続したプロ
セッサ間でのキャッシュコヒーレンスの処理性能を、よ
り高速化できる。更に、外部の共通バスを使用したプロ
セッサモジュール間で行われるキャッシュコヒーレンス
にあっては、書込アクセスの際には、アクセス元のキャ
ッシュに対しては最新データを転送するが、書込アドレ
スをもつ主記憶に対しては最新データの書込みは行わず
に、最新データがキャッシュ側に存在するダーティ状態
をセットして処理を終了することで、主記憶に対する最
新データの書込みを行わない分、書込アクセスを高速に
終了できる。
【0355】更に、書込アクセスでダーティ状態となっ
た主記憶は、同じアドレスの読出アクセスの際に外部の
共通バスからのリプライデータを受領して主記憶に書き
込むことで、アクセス元のキャッシュに対する格納と同
時に、主記憶が最新データに更新でき、主記憶書込みと
読出アクセス元への転送が同時にできることで、読出ア
クセスのキャッシュコヒーレンスを、より高速に実現で
きる。
【図面の簡単な説明】
【図1】本発明の原理説明図
【図2】本発明のマルチプロセッサモジュール構成のブ
ロック図
【図3】図2のプロセッサモジュールの内部構成のブロ
ック図
【図4】図3のプロセッサモジュールの内部構成の詳細
ブロック図
【図5】本発明のキャッシュラインの説明図
【図6】図3の空間識別ユニットの機能説明図
【図7】図4のメモリ管理ユニットのブロック図
【図8】ディレクトリエントリレジスタの説明図
【図9】シェアードマップビット対応レジスタの説明図
【図10】プロセッサモジュール構成レジスタの説明図
【図11】ディレクトリエントリレジスタ、シェアード
マップビット対応レジスタ及びプロセッサモジュール構
成レジスタの具体例の説明図
【図12】ディレクトリエントリレジスタの具体例の説
明図
【図13】図4のスヌープバスに対するコマンド説明図
【図14】図4のキャッシュユニットのキャッシュ状態
の説明図
【図15】図4のキャッシュユニットのキャッシュ遷移
状態の説明図
【図16】本発明の読出モード1における処理動作の説
明図
【図17】本発明の読出モード2における処理動作の説
明図
【図18】本発明の読出モード3における処理動作の説
明図
【図19】本発明のローカルプロセッサモジュールのリ
ード処理のフローチャート
【図20】本発明のホームプロセッサモジュールのリー
ド処理のフローチャート
【図21】本発明のリモートプロセッサモジュールのリ
ード処理のフローチャート
【図22】本発明のプロセッサエレメントのリード処理
のフローチャート
【図23】本発明の書込モード1における処理動作の説
明図
【図24】本発明の書込モード2における処理動作の説
明図
【図25】本発明の書込モード3における処理動作の説
明図
【図26】本発明の書込モード4における処理動作の説
明図
【図27】本発明の書込モード5における処理動作の説
明図
【図28】本発明の書込モード6における処理動作の説
明図
【図29】本発明の書込モード7における処理動作の説
明図
【図30】本発明のローカルプロセッサモジュールのラ
イト処理のフローチャート
【図31】本発明のホームプロセッサモジュールのライ
ト処理のフローチャート
【図32】本発明のリモートプロセッサモジュールのラ
イト処理のフローチャート
【図33】本発明のプロセッサのライト処理のフローチ
ャート
【図34】キャッシュユニットに対する内部コマンドと
外部のリモートコマンドが競合してリトライの繰り返し
となる動作の説明図
【図35】図2のリトライ繰り返しの具体例のタイムチ
ャート
【図36】リモートコマンドに対するリトライ指示を1
回として優先的に受け付ける本発明の処理のタイムチャ
ート
【図37】プロセッサモジュールのキャッシュユニット
間で行う書込所有権(オーナ)の委譲の説明図
【図38】書込所有権を委譲する順番の説明図
【図39】図3のキャッシャコヒーレンス装置を基幹に
拡張したシステム構成の説明図
【図40】図39のシステムバスの線路構成の説明図
【図41】図40のタグバス線によるタグバスコードの
説明図
【図42】図40のリクエトスト線と緊急リクエスト線
の組合わせによる制御内容の説明図
【図43】図40のホルト線とマスタ権切替線の組合せ
による制御内容の説明図
【図44】図40のシステムバスのファーストモードで
のバスアビトレーションのタイムチャート
【図45】図40のシステムバスのセイフティモードで
のバスアビトレーションのタイムチャート
【図46】図40のシステムバスのバススレーブでエラ
ーを検出した際の優先バスアビトレーションのタイムチ
ャート
【図47】図40のシステムバスのバスアービタでエラ
ーを検出した際の優先バスアビトレーションのタイムチ
ャート
【図48】図39のシステムバスのメモリリードの転送
シーケンスのタイムチャート
【図49】図39のシステムバスのメモリライトの転送
シーケンスのタイムチャート
【図50】図39のシステムバスのブロードキャスト/
ブロードコールの転送シーケンスのタイムチャート
【図51】図39のシステムバス間の転送シーケンスの
タイムチャート
【図52】図39のサブシステムバス間の転送シーケン
スのタイムチャート
【図53】図39のシステムバスを8バイトバスとした
場合の転送シーケンスのタイムチャート
【図54】図39のシステムバスと異種システムバス間
の転送シーケンスのタイムチャート
【図55】図39のシステムバスの基本的なバスコマン
ドのフォーマット説明図
【図56】図39のシステムバスのブロードキャストバ
スコマンドのフォーマット説明図
【図57】図39のシステムバスの基本的なリプライ/
エラーバスコマンドのフォーマット説明図
【図58】図39のシステムバスのキャッシュステータ
スバスコマンドのフォーマット説明図
【図59】図57のエラーバスコマンドで指定するエラ
ータイプの説明図
【図60】図57のエラーバスコマンドで指定するエラ
ーレベルをエラータイプと共に示した説明図
【図61】図58のキャッシュステータスバスコマンド
で指定するキャッシュステータスの説明図
【図62】図39のサブシステムバス間のバス転送時に
基本バスコマンドに付加して使用される拡張バスコマン
ドのフォーマット説明図
【図63】バス接続ユニットに第2ディレクトリメモリ
を設けた実施形態のライトアクセス説明図
【図64】図63のキャッシュインバリデートの完了待
ちでホームへのアクセス要求がバッファフルとなった場
合のアクセス説明図
【図65】従来のマルチプロセッサシステムのブロック
【符号の説明】
10,10−1〜10−5:プロセッサモジュール(P
M) 12,12−1,12−2:システムバス(第1共通バ
ス) 14,14−1〜14−4:プロセッサエレメント(P
E) 16,16−1〜16−4:CPU回路 18,18−1〜18−4:キャッシュユニット(キャ
ッシュ) 20,20−1〜20−4:スヌープユニット 22:スヌープバス(第1共通バス) 24:プロトコル管理ユニット 25:メモリモジュール 26:メモリ管理ユニット 28:ローカルストレージ(分割配置された主記憶) 30:ディレクトリメモリ 31:第2ディレクトリメモリ 32:モジュール接続ユニット 34:CPU 35:2次キャッシュ制御モジュール 36:1次キャッシュ 38:2次キャッシュ 40:タグメモリ 42,52:スヌープ送受信ユニット 44:スヌープバッファ 46:コピーバックバッファ 48:プロセッサアクセス制御ユニット 50:空間制御ユニット 54:ローカルアクセスバッファキュー 56:ホームアクセスバッファキュー 58:リモートアクセスバッファキュー 62:バス受信ユニット 64:バス送信ユニット 66:メモリバス 68−1〜68−4:メモリアクセスコントローラ 70−1〜70−4:SRAM 74:バスアービタ 76:メモリバス制御ユニット 78:ディレクトリ制御ユニット 80:キャッシュ変換部 81:ローカルステートマシン 82:ホームステートマシン 83:リモートステートマシン 86:CPU物理アドレス空間 88:制御レジスタ空間 90:ROM空間 94:36ビット物理アドレス 95:制御テーブル 96:ホーム情報 98:ユニットID 100:キャッシュライン 102−1〜102−4:キャッシュサブライン(サブ
ライン) 104:ディレクトリエントリレジスタ 106:シェアードマップビット対応レジスタ 108:プロセッサモジュール構成レジスタ 120,122,124,128:キャッシュステータ
ス格納エリア 500−1,500−2:サブシスタム 501:基本システム 502,503:バスアービタ 504:バス拡張ユニット 505:異種システム 506:拡張システム 507:データバス線 509:タグ制御線 510−1〜510−3:プロセッサモジュール 512:サブシステム間接続ユニット 514:共通データバス線(DB) 516:データバリティ線(DP) 518:共通タグバス線(TB) 520:バスリクエスト線(BRQ) 522:緊急バスリクエスト線(BRE) 524:バスグラント線(BGR) 526:バスID線(BID) 528:ユニットID線(UID) 530:ホルト線(HLT) 532:マスタ権切替線(MFC:Master Force Chang
e)) 534:インストール線(INST) 536:ディスコネクト線(DCON) 538:クロック線(CLK) 550:システムバス拡張指定フラグ 552:ソースフィールド 558:ブロードキャスト指定フラグ 560:第1宛先フィールド 562:第2宛先指定フラグ 564:第2宛先フィールド 566:コマンドフィールド 568:サイズフィールド 570:フラグフィールド 572:コマンドパラメータフィールド 574:ブロードキャスト宛先マップフィールド 575:リプライタイプフィールド 576:エラーレベルフィールド 578:エラータイプフィールド 580:エラーコードフィールド 582−1,582−2:キャッシュサブライステータ
スフィールド 586:ソースシステムフィールド 588:サブシステム第1宛先フィールド 590:サブシステム第2宛先フィールド 592:第2宛先指定フラグ
フロントページの続き (72)発明者 柴田 直宏 神奈川県川崎市中原区上小田中1015番地 富士通株式会社内 (72)発明者 牟田 俊之 神奈川県川崎市中原区上小田中1015番地 富士通株式会社内 (72)発明者 島村 貴之 神奈川県川崎市中原区上小田中1015番地 富士通株式会社内 (72)発明者 菅原 博英 神奈川県川崎市中原区上小田中1015番地 富士通株式会社内 (72)発明者 西岡 潤治 神奈川県川崎市中原区上小田中1015番地 富士通株式会社内 (72)発明者 佐々木 崇諭 神奈川県川崎市中原区上小田中1015番地 富士通株式会社内 (72)発明者 篠原 聡 神奈川県川崎市中原区上小田中1015番地 富士通株式会社内 (72)発明者 中山 陽象 石川県河北郡宇ノ気町字宇野気ヌ98番地の 2 株式会社ピーエフユー内 (72)発明者 桜井 潤 宮城県仙台市青葉区一番町1丁目2番25号 富士通東北ディジタル・テクノロジ株式 会社内 (72)発明者 石畑 宏明 神奈川県川崎市中原区上小田中1015番地 富士通株式会社内 (72)発明者 堀江 健志 神奈川県川崎市中原区上小田中1015番地 富士通株式会社内 (72)発明者 清水 俊幸 神奈川県川崎市中原区上小田中1015番地 富士通株式会社内

Claims (59)

    【特許請求の範囲】
  1. 【請求項1】複数のプロセッサ群と、 前記プロセッサ群に共有される主記憶と、 前記複数のプロセッサ毎に設けられ、前記主記憶のアク
    セスを高速化するキャッシュユニットと、 前記主記憶のデータの前記キャッシュユニットへの登録
    状態をキャッシュライン単位に記憶するディレクトリ記
    憶部と、 前記主記憶とキャッシュユニット間を接続する第1共通
    バスと、 前記複数のプロセッサ群の間を接続する第2共通バス
    と、 前記主記憶とキャッシュユニット間のキャッシュコヒー
    レンスを実現する内部コヒーレンス処理部と、 前記複数のプロセッサ群の間のキャッシュコヒーレンス
    を実現する外部コヒーレンス処理部と、を設けたことを
    特徴とするキャッシュコヒーレンス装置。
  2. 【請求項2】請求項1記載のキャッシュコヒーレンス装
    置に於いて、 前記キャッシュユニットは、前記キャッシュラインを複
    数のサブラインに分割して管理し、 前記ディレクトリ記憶部は、前記キャッシュユニット上
    のデータが最新値で前記主記憶上のデータが旧値となる
    ダーティ状態である場合のキャッシュ状態を前記サブラ
    イン単位に記憶し、前記キャッシュユニット上と主記憶
    上のデータが同じ値になるシェア状態を前記キャッシュ
    ライン単位に記憶したことを特徴とするキャッシュコヒ
    ーレンス装置。
  3. 【請求項3】請求項1記載のキャッシュコヒーレンス装
    置に於いて、前記複数のプロセッサ群は、少なくとも1
    つ以上のプロセッサで構成されるプロセッサモジュール
    に分割され、前記ディレクトリ記憶部へのキャッシュ状
    態の記憶を前記プロセッサモジュール単位に行ったこと
    を特徴とするキャッシュコヒーレンス装置。
  4. 【請求項4】請求項3記載のキャッシュコヒーレンス装
    置に於いて、前記プロセッサモジュールは、前記ディレ
    クトリ記憶部に前記複数のプロセッサモジュールとの対
    応状態を記憶するディレクトリ制御部を有し、該ディレ
    クトリ制御部によって前記ディレクトリ記憶部への登録
    を前記複数のプロセッサモジュール単位に指定すること
    を特徴とするキャッシュコヒーレンス装置。
  5. 【請求項5】請求項3記載のキャッシュコヒーレンス装
    置に於いて、前記主記憶は複数のローカル記憶部に分割
    され、各ローカル記憶部は前記プロセッサモジュール上
    に配置されることを特徴とするキャッシュコヒーレンス
    装置。
  6. 【請求項6】請求項3記載のキャッシュコヒーレンス装
    置に於いて、前記複数のプロセッサモジュールの各々
    は、 複数のプロセッサと、 前記各プロセッサ毎に設けられたキャッシュユニット
    と、 前記主記憶として使用されるローカル記憶と、 前記主記憶及びディレクトリ記憶部を管理するメモリ管
    理ユニットと、 複数のキャッシュユニットとメモリ管理ユニットを接続
    する第1共通バスと、 複数のプロセッサモジュール間を接続する第2共通バス
    と、 前記第1共通バスと第1共通バスのプロトコル変換を管
    理するプロトコル管理ユニットと、 前記プロセッサモジュール間を前記第2共通バスで結合
    するバス接続ユニットと、 前記第1の共通バスで特定マシンサイクルに同期させて
    前記キャッシュユニットをスヌープすることによりキャ
    ッシュコヒーレンスを実現するスヌープユニットと、 前記メモリ管理ユニットに設けられ、前記第2共通バス
    による前記ディレクトリ記憶部の参照に基づきプロセッ
    サモジュール間でのコヒーレンスを実現するキャッシュ
    変換部と、を設けたことを特徴とするキャッシュコヒー
    レンス装置。
  7. 【請求項7】請求項3記載のキャッシュコヒーレンス装
    置に於いて、前記ディレクトリ記憶部のキャッシュライ
    ン単位に記憶されたディレクトリエントリデータは、前
    記ダーティ状態の有無を示す複数のサブラインビット
    と、前記シェア状態を複数のプロセッサモジュール毎に
    示すシェアードマップビットを有し、 更に前記シェアードマップビットのビット位置とプロセ
    ッサモジュールの対応関係を登録する構成レジスタを設
    け、該構成レジスタによって同一マップビットに複数の
    プロセッサモジュールのシェア状態の登録を可能とした
    ことを特徴とするキャッシュコヒーレンス装置。
  8. 【請求項8】請求項7記載のキャッシュコヒーレンス装
    置に於いて、前記サブラインビットのセットに対応し
    て、最新値を持つキャッシュユニットが存在するプロセ
    ッサモジュールの情報を、前記主記憶の特定領域に格納
    したことを特徴とするキャッシュコヒーレンス装置。
  9. 【請求項9】請求項7記載のキャッシュコヒーレンス装
    置に於いて、前記サブラインビットのリセットに対応し
    て、最新値を持つ主記憶が存在するプロセッサモジュー
    ルの情報を、前記主記憶の特定領域に格納したことを特
    徴とするキャッシュコヒーレンス装置。
  10. 【請求項10】請求項3記載のキャッシュコヒーレンス
    装置に於いて、前記プロセッサは、前記キャッシュライ
    ンのサブライン単位に読出アクセス又は書込アクセスを
    行うことを特徴とするキャッシュコヒーレンス装置。
  11. 【請求項11】請求項3記載のキャッシュコヒーレンス
    装置に於いて、前記第1共通バス及び第2共通バスは、
    指令転送と応答転送を分離したスプリット形式により情
    報を転送することを特徴とするキャッシュコヒーレンス
    装置。
  12. 【請求項12】請求項3記載のキャッシュコヒーレンス
    装置に於いて、 第1のプロセッサモジュール内の任意のプロセッサの読
    出アクセスに対し自己のキャッシュユニット及び前記第
    1共通バスで接続した他の全てのキャッシュユニットで
    ミスヒットし、且つ読出アドレスが前記第1のプロセッ
    サモジュール内の主記憶にあり、更に読出アドレスのデ
    ータが第2のプロセッサモジュール内のキャッシュユニ
    ットに最新値をもつダーティ状態で存在する場合、 前記第1のプロセッサモジュールは、前記第2共通バス
    に指令を発行して前記第2のプロセッサモジュールにア
    クセスし、自己の第1共通バスを介してダーティ状態に
    ある前記キャッシュユニットから最新値を取得した後
    に、前記第2共通バスで最新値を前記第1のプロセッサ
    モジュールに応答し、 前記第1のモジュールユニットは、前記応答で得られた
    最新値をアクセス元の前記キャッシュユニットに格納し
    て読出アクセスに応答させ、同時に前記主記憶に最新値
    を書き込むことを特徴とするキャッシュコヒーレンス装
    置。
  13. 【請求項13】請求項12記載のキャッシュコヒーレン
    ス装置に於いて、前記第1のプロセッサモジュールは、
    前記主記憶に最新値を書き込んだ際に前記ディレクトリ
    メモリのダーティ状態をシェア状態に更新し、前記アク
    セス元のキャッシュユニットは無効化状態をシェア状態
    に更新することを特徴とするキャッシュコヒーレンス装
    置。
  14. 【請求項14】請求項3記載のキャッシュコヒーレンス
    装置に於いて、 第1のプロセッサモジュール内の任意のプロセッサの読
    出アクセスに対し自己のキャッシュユニット及び前記第
    1共通バスで接続した他の全てのキャッシュユニットで
    ミスヒットし、且つ読出アドレスが第2のプロセッサモ
    ジュール内の主記憶にあり、更に読出アドレスの値が第
    3のプロセッサモジュール内のキャッシュユニットに最
    新値をもつダーティ状態で存在する場合、 前記第1のプロセッサモジュールは前記第2共通バスに
    指令を発行して前記第2のプロセッサモジュールにアク
    セスし、 前記第2のプロセッサモジュールは前記第2共通バスか
    ら受領した指令に基づき、第2共通バスに指令を発行し
    て第3のプロセッサモジュールにアクセスし、 前記第3のプロセッサモジュールは自己の第1共通バス
    によってダーティ状態にある前記キャッシュユニットか
    ら最新値を取得した後に、前記第2共通バスで最新値を
    前記第1及び第2のプロセッサモジュールに応答し、 前記第2のプロセッサモジュールは、前記応答の受領で
    得られた最新値を前記主記憶に書き込み、 前記第1のプロセッサモジュールは、前記応答の受領で
    得られた最新値をアクセス元の前記キャッシュユニット
    に格納して読出アクセスに応答させることを特徴とする
    キャッシュコヒーレンス装置。
  15. 【請求項15】請求項14記載のキャッシュコヒーレン
    ス装置に於いて、 前記第2のプロセッサモジュールは、前記主記憶に最新
    値を書き込んだ際に前記ディレクトリ記憶部のダーティ
    状態をシェア状態に更新し、 前記第1のプロセッサモジュールのアクセス元のキャッ
    シュユニットは無効化状態をシェア状態に更新すること
    を特徴とするキャッシュコヒーレンス装置。
  16. 【請求項16】請求項3記載のキャッシュコヒーレンス
    装置に於いて、 任意のプロセッサモジュール内の任意のプロセッサの読
    出アクセスに対し自己のキャッシュユニットはミスヒッ
    トしたが、前記第1共通バスで接続した他のプロセッサ
    のキャッシュユニットに最新値が存在する場合、前記第
    1共通バスを介して両キャッシュユニット間で最新値の
    転送を実行してアクセス元のキャッシュユニットに格納
    して前記読出アクセスに応答させることを特徴とするキ
    ャッシュコヒーレンス装置。
  17. 【請求項17】請求項16記載のキャッシュコヒーレン
    ス装置に於いて、前記第1共通バスを使用した最新値の
    転送をキャッシュサブライン単位で実行することを特徴
    とするキャッシュコヒーレンス装置。
  18. 【請求項18】請求項3記載のキャッシュコヒーレンス
    装置に於いて、 第1のプロセッサモジュール内の任意のプロセッサの書
    込アクセスに対し自己のキャッシュユニット及び第1共
    通バスで接続した他のキャッシュユニットに書込権を所
    有した状態でコピー値が格納されておらずにミスヒット
    となり、且つ前記書込アドレスが第1のプロセッサモジ
    ュール内の主記憶にあり、更に、前記主記憶の書込アド
    レスのコピー値が第1のプロセッサモジュール以外の他
    の複数のプロセッサモジュールのキャッシュユニットに
    シェア状態で存在する場合、 前記第1プロセッサモジュールは、シェア状態にある全
    てのプロセッサモジュールに対して第2共通バスを使用
    して無効化指令を発行し、 シェア状態にある全てのプロセッサモジュールは、前記
    無効化指令を同時に受理して、無効化に成功した際に前
    記第2共通バスを使用して第1のプロセッサモジュール
    に独立に応答し、 前記第1のプロセッサモジュールは、前記第2共通バス
    からの全ての応答を受理したことで無効化の成功を認識
    して、前記主記憶の書込アドレスのコピー値を前記キャ
    ッシャユニットに格納して前記書込アクセスにより上書
    きさせることを特徴とするキャッシュコヒーレンス装
    置。
  19. 【請求項19】請求項3記載のキャッシュコヒーレンス
    装置に於いて、 第1のプロセッサモジュール内の任意のプロセッサの書
    込アクセスに対し自己のキャッシュユニット及び第1共
    通バスで接続した他のキャッシュユニットにコピー値が
    書込権を所有した状態で登録されておらずにミスヒット
    となり、且つ前記書込アドレスが第1のプロセッサモジ
    ュール内の主記憶であり、更に前記主記憶の書込アドレ
    スのコピー値が第1のプロセッサモジュールを含む複数
    のプロセッサモジュールのキャッシュユニットにシェア
    状態で存在する場合、 前記第1のプロセッサモジュールは、シェア状態にある
    全てのプロセッサモジュールに対して前記第2共通バス
    を使用して無効化指令を発行するのと並行して、第1の
    プロセッサモジュール内のキャッシュユニットに第1共
    通バスを使用して無効化指令を発行し、 シェア状態にある全てのプロセッサモジュールは前記無
    効化指令を同時に受理して、無効化の成功を前記第2共
    通バスを使用して第1のプロセッサモジュールに独立に
    応答するのと並行して、前記第1のプロセッサモジュー
    ルのキャッシュユニットは第1共通バスを使用して無効
    化の成功を応答し、 第1のプロセッサモジュールは、第2共通バスからの全
    ての応答と、自己の第1共通バスからの応答を受理した
    ことで無効化の成功を認識して、前記主記憶の書込アド
    レスのコピー値を前記キャッシャユニットに格納して前
    記プロセッサの書込アクセスにより上書きさせることを
    特徴とするキャッシュコヒーレンス装置。
  20. 【請求項20】請求項18及び19記載のキャッシュコ
    ヒーレンス装置に於いて、 前記第1のプロセッサモジュールは、無効化の成功を認
    識して前記主記憶からアクセス元のキャッシュユニット
    にコピーした際に、前記ディレクトリ記憶部のシェア状
    態をダーティ状態に更新することを特徴とするキャッシ
    ュコヒーレンス装置。
  21. 【請求項21】請求項3記載のキャッシュコヒーレンス
    装置に於いて、 第1のプロセッサモジュール内のプロセッサの書込アク
    セスに対し自己のキャッシュユニット及び第1共通バス
    を介して接続した他のキャッシュユニットにコピー値が
    書込権を所有した状態で登録されておらずにミスヒット
    となり、前記書込アドレスが第2のプロセッサモジュー
    ル内の主記憶にあり、更に前記主記憶の書込アドレスの
    コピー値が第2のプロセッサモジュール以外の他の複数
    のプロセッサモジュールのキャッシュユニットにシェア
    状態で存在する場合、 前記第1のプロセッサモジュールは、第2共通バスを使
    用して前記第2のプロセッサモジュールに書込所有権の
    要求指令を発行し、 前記書込所有権の要求指令を受領した第2のプロセッサ
    モジュールは、シェア状態にある他の全てのプロセッサ
    モジュールに対して第2共通バスを使用して無効化指令
    を発行し、 シェア状態にある全てのプロセッサモジュールは、前記
    無効化指令を同時に受理して、無効化に成功した際に前
    記第2共通バスを使用して前記第2のプロセッサモジュ
    ールに独立に応答し、 前記第2のプロセッサモジュールは全ての無効化の応答
    を受理したことで無効化の成功を認識すると、前記第1
    のプロセッサモジュールに対して第2共通バスを使用し
    て、前記主記憶のアクセスアドレスのコピー値を含む書
    込所有権の移動を応答し、 前記第1のプロセッサモジュールは、前記書込所有権の
    応答の受領により得られた前記コピー値をアクセス元の
    前記キュッシュユニットに格納して、前記プロセッサの
    書込アクセスで上書きさせることを特徴とするキャッシ
    ュコヒーレンス装置。
  22. 【請求項22】請求項21記載のキャッシュコヒーレン
    ス装置に於いて、 前記第2のプロセッサモジュールは、無効化の成功を認
    識して書込所有権を移動した際に、前記ディレクトリ記
    憶部のシェア状態をダーティ状態に更新することを特徴
    とするキャッシュコヒーレンス装置。
  23. 【請求項23】請求項3記載のキャッシュコヒーレンス
    装置に於いて、 第1のプロセッサモジュール内の任意のプロセッサの書
    込アクセスに対し自己のキャッシュユニット及び前記第
    1共通バスを介して接続した他のキャッシュユニットに
    コピー値が書込権を所有した状態で登録されておらずに
    ミスヒットとなり、前記書込アドレスが第2のプロセッ
    サモジュール内の主記憶にあり、更に前記主記憶の書込
    アドレスのコピー値が第2のプロセッサモジュールを含
    む複数のプロセッサモジュールのキャッシュユニットに
    シェア状態で存在する場合、 前記第1のプロセッサモジュールは、前記第2のプロセ
    ッサモジュールに書込所有権の要求指令を発行し、 前記書込所有権の要求指令を受領した前記第2のプロセ
    ッサモジュールは、シェア状態にある全てのプロセッサ
    モジュールに対して第2共通バスを使用して無効化指令
    を発行するのと並行して、自己のシェア状態にあるキャ
    ッシュユニットに対し第1共通バスを使用して無効化指
    令を発行し、 シェア状態にある全てのプロセッサモジュールは前記無
    効化指令を同時に受理して、無効化の成功を第2共通バ
    スを使用して前記第2のプロセッサモジュールに独立に
    応答するのと並行して、前記第2のプロセッサモジュー
    ルのキャッシュユニットは無効化の成功を前記第1共通
    バスを使用して応答し、 前記第2のプロセッサモジュールは、前記第2共通バス
    からの全ての無効化成功の応答と前記第1共通バスから
    の無効化成功の応答を受領したことで無効化の成功を認
    識して、前記第1のプロセッサモジュールに対して前記
    第2共通バスを使用して、前記主記憶の書込アドレスの
    コピー値を含む書込所有権の移動を応答し、 前記第1のプロセッサモジュールは、前記書込所有権の
    応答の受領で得られた前記コピー値をアクセス元の前記
    キュッシュユニットに格納して、前記プロセッサの書込
    アクセスで上書きさせることを特徴とするキャッシュコ
    ヒーレンス装置。
  24. 【請求項24】請求項23記載のキャッシュコヒーレン
    ス装置に於いて、 前記第2のプロセッサモジュールは、無効化の成功を認
    識して書込所有権の移動を応答した際に、前記ディレク
    トリ記憶部のシェア状態をダーティ状態に更新すること
    を特徴とするキャッシュコヒーレンス装置。
  25. 【請求項25】請求項19,21及び23のキャッシュ
    コヒーレンス装置に於いて、前記無効化指令はキャッシ
    ュサブライン単位で発行することを特徴とするキャッシ
    ュコヒーレンス装置。
  26. 【請求項26】請求項19,21及び23のキャッシュ
    コヒーレンス装置に於いて、前記無効化指令の応答時
    に、無効化を指令したサブラインが含まれるキャッシュ
    ラインの他のサブラインの状態を返送することを特徴と
    するキャッシュコヒーレンス装置。
  27. 【請求項27】請求項3記載のキャッシュコヒーレンス
    装置に於いて、 第1のプロセッサモジュール内の任意のプロセッサの書
    込アクセスに対し自己のキャッシュユニット及び第1共
    通バスで接続した他のキャッシュユニットにコピー値が
    書込権を所有した状態で登録されておらずにミスヒット
    となり、且つ前記書込アドレスが第1のプロセッサモジ
    ュール内の主記憶にあり、更に前記主記憶の書込アドレ
    スの最新値が第2のプロセッサモジュールのキャッシュ
    ユニットに書込権を所有したダーティ状態で存在する場
    合、 前記第1のプロセッサモジュールは、ダーティ状態にあ
    る前記第2のプロセッサモジュールに対して第2共通バ
    スを使用して書込所有権の要求指令を発行し、 前記第2のメモリモジュールは、前記書込所有権の要求
    指令を受理して、前記キャッシュユニットの最新値を含
    む書込所有権の移動を前記第2共通バスを使用して前記
    第1のプロセッサモジュールに応答し、 前記第1のプロセッサモジュールは、前記書込所有権の
    応答により得られた最新値をアクセス元の前記キャッシ
    ュユニットに格納して前記プロセッサによる書込アクセ
    スで上書きさせることを特徴とするキャッシュコヒーレ
    ンス装置。
  28. 【請求項28】請求項27記載のキャッシュコヒーレン
    ス装置に於いて、 前記第2のプロセッサモジュールのキャッシュユニット
    は、書込所有権を移動した際にダーティ状態を無効化状
    態に更新し、前記第1のプロセッサモジュールは書込所
    有権を受領した際に、自己のディレクトリ記憶部のダー
    ティ状態を最新値が存在するメモリモジュールの情報を
    変更したダーティ状態に更新することを特徴とするキャ
    ッシュコヒーレンス装置。
  29. 【請求項29】請求項3記載のキャッシュコヒーレンス
    装置に於いて、 第1のプロセッサモジュール内のプロセッサの書込アク
    セスに対し自己のキャッシュユニット及び第1共通バス
    を介して接続した他のキャッシュユニットにコピー値が
    書込権を所有した状態で登録されておらずにミスヒット
    となり、前記書込アドレスが第2のプロセッサモジュー
    ル内の主記憶にあり、更に前記主記憶の書込アドレスの
    最新値が第3のプロセッサモジュールのキャッシュユニ
    ットに書込権を所有したダーティ状態で存在する場合、 前記第1のプロセッサモジュールは、前記第2のプロセ
    ッサモジュールに前記第2共通バスを使用して書込み所
    有権の要求指令を発行し、 前記書込所有権の要求指令を受領した第2のプロセッサ
    モジュールは、前記第3のプロセッサモジュールに対し
    て第2共通バスを使用して書込所有権の要求指令を発行
    し、 前記書込所有権の要求指令を受領した前記第3のプロセ
    ッサモジュールは、前記キャッシュユニットの最新値を
    含む書込所有権を前記第2共通バスを使用して前記第1
    及び第2のプロセッサモジュールに応答し、 前記第2のプロセッサモジュールは、前記書込所有権の
    応答を受領して書込所有権の移動を認識し、 前記第1のプロセッサモジュールは、前記書込所有権の
    受領で得られた最新値をアクセス元の前記キュッシュユ
    ニットに格納して、前記プロセッサの書込アクセスで上
    書きさせることを特徴とするキャッシュコヒーレンス装
    置。
  30. 【請求項30】請求項29記載のキャッシュコヒーレン
    ス装置に於いて、 前記第3のプロセッサモジュールのキャッシュユニット
    は、書込所有権を移動した際にダーティ状態を無効化状
    態に更新し、 前記第2のプロセッサモジュールは、書込所有権の移動
    を認識した際に、前記ディレクトリ記憶部のダーティ状
    態を最新値の存在するプロセッサモジュールの情報を変
    更したダーティ状態に更新し、 更に前記第1のプロセッサモジュールのアクセス元のキ
    ャッシュユニットは、最新値を格納した際に、無効化状
    態を書込権が存在するダーティ状態に更新することを特
    徴とするキャッシュコヒーレンス装置。
  31. 【請求項31】請求項3記載のキャッシュコヒーレンス
    装置に於いて、 第1のプロセッサモジュール内の任意のプロセッサの書
    込アクセスに対し自己のキャッシュユニットはミスヒッ
    トしたが、第2共有バスを介して接続した他のキャッシ
    ュユニットに前記書込アドレスの最新値が書込権を所有
    したダーティ状態で存在する場合、 前記第1共通バスを介して前記キャッシュユニット間で
    データ転送及び書込所有権の移動を行ってアクセス元の
    キャッシュユニットに格納した後に前記プロセッサの書
    込アクセスにより上書きさせることを特徴とするキャッ
    シュコヒーレンス装置。
  32. 【請求項32】請求項31記載のキャッシュコヒーレン
    ス装置に於いて、 前記アクセス先のキャッシュユニットは書込所有権を移
    動した後にダーティ状態を無効化状態に更新し、前記ア
    クセス元のキャッシュユニットは書込権を獲得した後に
    無効化状態から書込所有権が存在するダーティ状態に更
    新することを特徴とするキャッシュコヒーレンス装置。
  33. 【請求項33】請求項3記載のキャッシュコヒーレンス
    装置に於いて、 あるプロセッサモジュールのキャッシュユニットに対
    し、モジュール内部からのアクセスとモジュール外部か
    らのアクセスが競合した場合、先発したモジュールに前
    記キャッシュユニットを獲得させて後発のモジュールに
    リトライの指示を行わせ、更に、競合した相手先モジュ
    ールとアクセスアドレスを記憶し、自己のアクセス終了
    後に競合した相手先モジュール以外からのアクセスコマ
    ンドを受けた場合はリトライを指示し、競合した相手先
    のリトライによるアクセスコマンドを優先的に受け付け
    ることを特徴とするキャッシュコヒーレンス装置。
  34. 【請求項34】請求項33記載のキャッシュコヒーレン
    ス装置に於いて、 前記プロセッサモジュールのキャッシュユニットに対
    し、モジュール内部のプロセッサエレメントからのアク
    セスと外部の第2プロセッサモジュールからのアクセス
    が競合し、プロセッサエレメントが先発して前記キャッ
    シュユニットを獲得した場合、前記プロセッサエレメン
    トは、前記第2プロセッサモジュールにリトライの指示
    を行わせ、更に、競合した第2プロセッサモジュールと
    アクセスアドレスを記憶し、自己のアクセス終了後に競
    合した前記プロセッサモジュール以外からのアクセスコ
    マンドを受けた場合はリトライを指示し、競合した前記
    第2プロセッサモジュールのリトライによるアクセスコ
    マンドを優先的に受け付けることを特徴とするキャッシ
    ュコヒーレンス装置。
  35. 【請求項35】請求項33記載のキャッシュコヒーレン
    ス装置に於いて、前記キャッシュユニットを獲得したモ
    ジュールは、自己のアクセス終了後、前記競合相手先の
    モジュールからのアクセスが所定時間発生しない場合、
    前記競合相手先とアクセスアドレスの記憶内容を初期化
    して競合相手先の優先受付けを解除することを特徴とす
    るキャッシュコヒーレンス装置。
  36. 【請求項36】請求項3記載のキャッシュコヒーレンス
    装置に於いて、前記プロセッサモジュールは、 前記主記憶に最新データがなく複数のキャッシュユニッ
    トに存在し、該複数のキャッシュユニットの1つが該最
    新データの前記主記憶へコピーバックのための書込所有
    権を保有している場合、 前記書込所有権を有するキャッシュユニットで前記最新
    データのリプレースが発生した際に、該書込所有権を前
    記最新データを保有しているキャッシュユニットに委譲
    し、最新データを保有するキャッシュユニットが1つに
    なるまで前記主記憶への最新データのコピーバックを抑
    止することを特徴とするキャッシュコヒーレンス装置。
  37. 【請求項37】請求項36記載のキャッシュコヒーレン
    ス装置に於いて、前記複数のキャッシュユニットは固有
    の識別番号をもち、前記最新データをリプレースしたキ
    ャッシュユニットの識別番号を基に、予め定めた順番に
    従って前記書込所有権を委譲することを特徴とするキャ
    ッシュコヒーレンス装置。
  38. 【請求項38】請求項36記載のキャッシュコヒーレン
    ス装置に於いて、前記主記憶を管理するメモリ管理ユニ
    ットは、最新データが前記キャッシュユニットに存在し
    主記憶のデータがダーティ状態にあることを示す書込所
    有権を有し、前記キャッシュユニット間で書込所有権の
    委譲が行われても、前記メモリ管理ユニットの書込所有
    権を他のプロセッサモジュールに移動せずにそのまま維
    持することを特徴とするキャッシュコヒーレンス装置。
  39. 【請求項39】請求項3記載のキャッシュコヒーレンス
    装置に於いて、前記第2共有バスは、前記複数のプロセ
    ッサモジュールのバス接続ユニットとバスアービタとを
    結合して、前記複数のプロセッサモジュールの間でスプ
    リット型パケット転送によりバスコマンドの転送を行
    い、該バスコマンドに、アクセス要求元を示すソースフ
    ィールド、第1のアクセス要求先を示す第1宛先フィー
    ルド、及び第2のアクセス要求先を示す第2宛先フィー
    ルドの3つを備えたことを特徴とするキャッシュコヒー
    レンス装置。
  40. 【請求項40】請求項39記載のキャッシュコヒーレン
    ス装置に於いて、 第1プロセッサモジュールは、自己のリード要求の対象
    データが第2プロセッサモジュールの主記憶に存在する
    場合、前記ソースフィールドに自己を指定し、第1宛先
    フィールドに前記第2プロセッサモジュールを指定した
    第1バスコマンドを送出し、 前記第1バスコマンドを受信した第2プロセッサモジュ
    ールは、リード要求の最新データが主記憶に存在せずに
    第3プロセッサモジュールのキャッシュユニットに存在
    する場合、前記ソースフィールドに自己を指定し、第1
    宛先フィールドに最新データをもつ前記第3プロセッサ
    モジュールを指定し、更に第2宛先フィールドに前記ア
    クセス要求元の第1プロセッサモジュールを指定した第
    2バスコマンドを送出し、 前記第2バスコマンドを受信した第3プロセッサモジュ
    ールは、前記ソースフィールドに自己を指定し、第1宛
    先フィールドに前記主記憶の前記第2プロセッサモジュ
    ールを指定し、更に第2宛先フィールドに前記リード要
    求元の第1プロセッサモジュールを指定したリプライコ
    マンドを送出して、前記第1及び第2プロセッサモジュ
    ールに同時にリードデータ応答することを特徴とするキ
    ャッシュコヒーレンス装置。
  41. 【請求項41】請求項40記載のキャッシュコヒーレン
    ス装置に於いて、前記第1プロセッサモジュールは、前
    記第2プロセッサモジュールから第3プロセッサモジュ
    ールに対し第2バスコマンドが送出された際に、前記第
    1バスコマンドの送出で起動してバスタイムアウトを監
    視するタイマの設定時間を、第1時間からより長い第2
    時間に変更することを特徴とするキャッシュコヒーレン
    ス装置。
  42. 【請求項42】請求項39記載のキャッシュコヒーレン
    ス装置に於いて、前記ソースフィールド、第1宛先フィ
    ールドおよび第2宛先フィールドの各々を、前記第2共
    有バスを示すバス識別子とプロセッサモジュール等のユ
    ニットを示すユニット識別子の2つで表現し、複数の前
    記第2共有バスをバス間接続ユニットを介して相互に接
    続した場合、他の第2共有バス内のユニットを指定可能
    としたことを特徴とするキャッシュコヒーレンス装置。
  43. 【請求項43】請求項39記載のキャッシュコヒーレン
    ス装置に於いて、前記複数のプロセッサモジュールを前
    記第2共有バスで接続したサブシステムを、サブシステ
    ム接続ユニットを介して複数結合した場合、前記バスコ
    マンドに前記サブシステム間での転送を示すサブシステ
    ム拡張識別子を設け、該サブシステム拡張識別子が有効
    なときに各サブシステム毎のコマンドフィールドで前記
    ソースフィールド、第1宛先フィールドおよび第2宛先
    フィールドの各々を指定して、異なるサブシステムのユ
    ニットを指定可能としたことを特徴とするキャッシュコ
    ヒーレンス装置。
  44. 【請求項44】請求項39記載のキャッシュコヒーレン
    ス装置に於いて、前記複数のプロセッサモジュールを接
    続した第2共有バスに対し、異種のシステムバスをもつ
    サブシステムが異種バス接続ユニットを介して結合され
    た場合、前記バスコマンドは、異種のシステムバスをエ
    ミュレートするコマンドをコマンドフィールドの一部に
    備え、異種のシステムバス上のユニットを指定可能とし
    たことを特徴とするキャッシュコヒーレンス装置。
  45. 【請求項45】請求項39記載のキャッシュコヒーレン
    ス装置に於いて、第1プロセッサモジュールから第2プ
    ロセッサモジュールへのバスコマンドの転送中に、第2
    プロセッサモジュールで異常を検出した場合、前記第2
    プロセッサモジュールは、エラーリプライバスコマンド
    を送出して前記第1プロセッサモジュールにエラー通知
    することを特徴とするキャッシュコヒーレンス装置。
  46. 【請求項46】請求項39記載のキャッシュコヒーレン
    ス装置に於いて、第1プロセッサモジュールから第2プ
    ロセッサモジュールへのバスコマンドのバス転送中に、
    前記バスアービタで異常を検出した場合、前記バスアー
    ビタはエラーリプライバスコマンドを送出して前記第1
    プロセッサモジュールにエラー通知することを特徴とす
    るキャッシュコヒーレンス装置。
  47. 【請求項47】請求項45又は46記載のキャッシュコ
    ヒーレンス装置に於いて、前記エラーリプライバスコマ
    ンドは、検出した異常の原因を分類フィールド、アクセ
    ス経路が複数存在する場合にどのアクセス経路で異常が
    発生したかを示すフィールド、及び検出した異常の種類
    を示すフィールドを有することを特徴とするキャッシュ
    コヒーレンス装置。
  48. 【請求項48】請求項39記載のキャッシュコヒーレン
    ス装置に於いて、前記バスコマンドは、前記第1宛先フ
    ィールドおよび第2宛先フィールドの各々に、ソースユ
    ニットの動作識別子を格納するアクセス識別子フィール
    ドを設け、該アクセス識別子フィールドの動作識別子に
    よりバスコマンドを修飾し、該バスコマンドの動作モー
    ドを変更することを特徴とするキャッシュコヒーレンス
    装置。
  49. 【請求項49】請求項48記載のキャッシュコヒーレン
    ス装置に於いて、アクセス要求元となる第1プロセッサ
    モジュールからアクセス先の主記憶をもつ第2プロセッ
    サモジュールに第1バスコマンドを送出し、該第2プロ
    セッサモジュールから最新データをキャッシュユニット
    に保有する第3プロセッサモジュールに第2バスコマン
    ドを送出し、最終的に第3プロセッサモジュールからリ
    プライバスコマンドを送出する場合、 前記第1プロセッサモジュールは、前記第2バスコマン
    ドにおける第1宛先フイールドのアクセス識別子フィー
    ルドに自己の動作識別子を指定し、 前記第2プロセッサモジュールは、第2バスコマンドに
    おける第1及び第2宛先フィールドのアクセス識別子フ
    ィールドの各々に、前記第2バスコマンドと同じ動作識
    別子を指定し、 前記第3モジュールは、前記リプライバスコマンドにお
    ける第1及び第2宛先フィールドのアクセス識別子フィ
    ールドの各々に、前記第2バスコマンドと同じ動作識別
    子を指定し、 更に、前記第1及び第2プロセッサモジュールの各々
    は、前記リプライバスコマンドの自己の宛先フィールド
    の動作識別子とバスコマンド送出時に記憶保持した動作
    識別子との一致を判断して自己のバスコマンドに対する
    リプライであると判断することを特徴とするキャッシュ
    コヒーレンス装置。
  50. 【請求項50】請求項39記載のキャッシュコヒーレン
    ス装置に於いて、前記第2共有バスは、前記データ及び
    パリティを並列転送するデータバス線と、該データバス
    線とは独立にバスシーケンスの動作を規定するタグ情報
    線を有し、該タグ情報線によるタグ情報の指定により、
    1回のバス獲得で複数のバスサイクルを継続することを
    特徴とするキャッシュコヒーレンス装置。
  51. 【請求項51】請求項50記載のキャッシュコヒーレン
    ス装置に於いて、前記タグ情報線によるリトライの指定
    により、前記バスサイクルの任意のタイミングで実行中
    のバスシーケンスの無効化を指示することを特徴とする
    キャッシュコヒーレンス装置。
  52. 【請求項52】請求項50記載のキャッシュコヒーレン
    ス装置に於いて、前記タグ制御線で相互に接続された複
    数のプロセッサモジュールのバス接続ユニットとバスア
    ービタは、 前記複数のバス接続ユニットのいずれもバスサイクルを
    開始していない場合には、バスアービタから各バス接続
    ユニットに対し個別に出力されるバス使用許可信号と、
    前記バスアービタから全てのバス接続ユニットに共通に
    出力されるバス使用開始指示信号を、同時に受信した特
    定のバス接続ユニットがバスサイクルを開始し、 既に他のバス接続ユニットがバスシーケンスを開始して
    いた場合には、前記バス使用許可信号を受け取ったバス
    接続ユニットが、他のバス接続ユニットが出力するバス
    サイクルの終了信号を検出してバスサイクルを開始する
    ことを特徴とするキャッシュコヒーレンス装置。
  53. 【請求項53】請求項52記載のキャッシュコヒーレン
    ス装置に於いて、前記バスアービタは、特定タイミング
    で受理した前記バス接続ユニットからのバス使用要求が
    全て処理されるまで、後続のバス使用要求処理を保留す
    ることを特徴とするキャッシュコヒーレンス装置。
  54. 【請求項54】請求項52記載のキャッシュコヒーレン
    ス装置に於いて、前記タグ情報線は、通常のバス使用要
    求信号に使用する第1バス使用要求線と、異常報告等の
    緊急バス使用要求信号に使用する第2バス使用要求線を
    有し、前記バスアービタは、特定タイミングで受理した
    バス使用要求信号の中で緊急要求信号を出力したバス接
    続ユニッに優先してバス使用許可を与えることを特徴と
    するキャッシュコヒーレンス装置。
  55. 【請求項55】請求項54記載のキャッシュコヒーレン
    ス装置に於いて、前記第1及び第2バス使用要求線の信
    号の組み合わせで、通常のバス使用要求、緊急バス使用
    要求、バス使用要求無し、及びバス接続ユニット自身の
    非動作状態の通知を行うことを特徴とするキャッシュコ
    ヒーレンス装置。
  56. 【請求項56】請求項6記載のキャッシュコヒーレンス
    装置に於いて、前記バス接続ユニットに第2ディレクト
    リ記憶部を設け、該第2ディレクトリ記憶部に、他のプ
    ロセッサモジュールに対するアクセス要求で応答待ちに
    ある状態をキャッシュライン単位に登録し、他のプロセ
    ッサモジュールからのアクセスに対し前記第2ディレク
    トリの記憶部の参照で同一キャッシュラインのアクセス
    を認識した場合、ビジーを応答することを特徴とするキ
    ャッシュコヒーレンス装置。
  57. 【請求項57】請求項56記載のキャッシュコヒーレン
    ス装置に於いて、リモートとしての第1プロセッサモジ
    ュールからライトアクセスを受けたホームとしての第2
    プロセッサモジュールがリモートの第3プロセッサモジ
    ュールに対し同じキャッシュラインの無効化を要求した
    場合、該リモートに対する無効化要求の完了待ちの状態
    を前記第2ディレクトリ記憶部に登録し、他のプロセッ
    サモジュールからの同一キャッシュラインのアクセス要
    求に対し、ビジーを応答することを特徴とするキャッシ
    ュコヒーレンス装置。
  58. 【請求項58】請求項57記載のキャッシュコヒーレン
    ス装置に於いて、前記ビジー応答を要求元のプロセッサ
    モジュール内のキャッシュユニットまで伝えてリトライ
    を行わせることを特徴とするキャッシュコヒーレンス装
    置。
  59. 【請求項59】請求項57記載のキャッシュコヒーレン
    ス装置に於いて、前記ホームの第2プロセッサモジュー
    ルに対する他のプロセッサモジュールのアクゼス要求
    で、前記パス接続ユニットのバッファフルとなった場
    合、アクセス要求元のプロセッサモジュールのバス接続
    ユニットにビジーを応答し、前記第2共有バスに対しリ
    トライを行わせることを特徴とするキャッシュコヒーレ
    ンス装置。
JP25052795A 1995-03-20 1995-09-28 キャッシュコヒーレンス装置 Expired - Fee Related JP3872118B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP25052795A JP3872118B2 (ja) 1995-03-20 1995-09-28 キャッシュコヒーレンス装置
US08/598,243 US5890217A (en) 1995-03-20 1996-02-07 Coherence apparatus for cache of multiprocessor
GB9605790A GB2299187B (en) 1995-03-20 1996-03-19 Multiprocessor cache

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP7-60500 1995-03-20
JP6050095 1995-03-20
JP25052795A JP3872118B2 (ja) 1995-03-20 1995-09-28 キャッシュコヒーレンス装置

Related Child Applications (4)

Application Number Title Priority Date Filing Date
JP2006077441A Division JP4424619B2 (ja) 1995-03-20 2006-03-20 情報処理装置
JP2006077114A Division JP3914250B2 (ja) 1995-03-20 2006-03-20 キャッシュコヒーレンス装置
JP2006077475A Division JP4361910B2 (ja) 1995-03-20 2006-03-20 キャッシュコヒーレンス装置
JP2006077052A Division JP4361909B2 (ja) 1995-03-20 2006-03-20 キャッシュコヒーレンス装置

Publications (2)

Publication Number Publication Date
JPH08320827A true JPH08320827A (ja) 1996-12-03
JP3872118B2 JP3872118B2 (ja) 2007-01-24

Family

ID=26401575

Family Applications (1)

Application Number Title Priority Date Filing Date
JP25052795A Expired - Fee Related JP3872118B2 (ja) 1995-03-20 1995-09-28 キャッシュコヒーレンス装置

Country Status (3)

Country Link
US (1) US5890217A (ja)
JP (1) JP3872118B2 (ja)
GB (1) GB2299187B (ja)

Cited By (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6043637A (en) * 1997-12-01 2000-03-28 Nec Corporation Voltage generator circuit
JP2005141606A (ja) * 2003-11-10 2005-06-02 Hitachi Ltd マルチプロセッサシステム
JP2006072509A (ja) * 2004-08-31 2006-03-16 Fujitsu Ltd 情報処理装置及びローカルスヌープ制御方法
JP2006155110A (ja) * 2004-11-29 2006-06-15 Fujitsu Ltd 情報処理装置、システム制御装置、システム制御方法
JP2007199999A (ja) * 2006-01-26 2007-08-09 Nec Computertechno Ltd マルチプロセッサシステム及びその動作方法
WO2007099583A1 (ja) * 2006-02-28 2007-09-07 Fujitsu Limited システムコントローラおよびキャッシュ制御方法
JP2007241601A (ja) * 2006-03-08 2007-09-20 Fujitsu Ltd マルチプロセッサシステム
JP2007272922A (ja) * 2001-06-04 2007-10-18 Fujitsu Ltd 複数ノード間での通信方法、相互接続ポートおよび相互接続システム
JP2008046958A (ja) * 2006-08-18 2008-02-28 Fujitsu Ltd システムコントローラ,同一アドレスリクエストキューイング防止方法および情報処理装置
JP2011076159A (ja) * 2009-09-29 2011-04-14 Nec Computertechno Ltd キャッシュメモリ制御システム及びキャッシュメモリの制御方法
WO2012008008A1 (ja) * 2010-07-12 2012-01-19 富士通株式会社 情報処理システム
WO2012035605A1 (ja) * 2010-09-13 2012-03-22 富士通株式会社 情報処理装置および情報処理装置の制御方法
JP2013140445A (ja) * 2011-12-28 2013-07-18 Fujitsu Ltd 情報処理装置、制御方法および制御プログラム
JP2014197402A (ja) * 2014-05-26 2014-10-16 富士通株式会社 情報処理装置、制御方法および制御プログラム
US8892260B2 (en) 2007-03-20 2014-11-18 Irobot Corporation Mobile robot for telecommunication
US8930019B2 (en) 2010-12-30 2015-01-06 Irobot Corporation Mobile human interface robot
US9014848B2 (en) 2010-05-20 2015-04-21 Irobot Corporation Mobile robot system
JPWO2013114540A1 (ja) * 2012-01-30 2015-05-11 富士通株式会社 制御装置、解析装置、解析方法、および解析プログラム
JP2016119066A (ja) * 2014-12-23 2016-06-30 インテル コーポレイション クロスダイ・インタフェース・スヌープ又はグローバル観測メッセージの順序付け
JP2016157462A (ja) * 2011-10-26 2016-09-01 クゥアルコム・テクノロジーズ・インコーポレイテッド キャッシュコヒーレンシを有する集積回路
JP2017123051A (ja) * 2016-01-07 2017-07-13 富士通株式会社 情報処理装置、情報処理装置の制御方法及び演算処理装置
US10565121B2 (en) 2016-12-16 2020-02-18 Alibaba Group Holding Limited Method and apparatus for reducing read/write contention to a cache
US10846164B2 (en) 2017-09-15 2020-11-24 Kabushiki Kaisha Toshiba System LSI and fault detection method for system LSI

Families Citing this family (72)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3875749B2 (ja) * 1996-08-08 2007-01-31 富士通株式会社 マルチプロセッサ装置及びそのメモリアクセス方法
US6044438A (en) * 1997-07-10 2000-03-28 International Business Machiness Corporation Memory controller for controlling memory accesses across networks in distributed shared memory processing systems
US9092595B2 (en) 1997-10-08 2015-07-28 Pact Xpp Technologies Ag Multiprocessor having associated RAM units
US6101581A (en) * 1997-10-24 2000-08-08 Doren; Stephen Van Separate victim buffer read and release control
US6480927B1 (en) * 1997-12-31 2002-11-12 Unisys Corporation High-performance modular memory system with crossbar connections
US6209064B1 (en) * 1998-01-07 2001-03-27 Fujitsu Limited Cache coherence unit with integrated message passing and memory protection for a distributed, shared memory multiprocessor system
US6247098B1 (en) * 1998-02-17 2001-06-12 International Business Machines Corporation Cache coherency protocol with selectively implemented tagged state
US6112258A (en) * 1998-03-19 2000-08-29 3Com Corporation Multi-cycle I/O ASIC communication system having an arbiter circuit capable of updating address table associated with each I/O ASIC on bus
US6560681B1 (en) * 1998-05-08 2003-05-06 Fujitsu Limited Split sparse directory for a distributed shared memory multiprocessor system
US6108721A (en) * 1998-06-29 2000-08-22 Hewlett-Packard Company Method and apparatus for ensuring data consistency between an i/o channel and a processor
US6526066B1 (en) * 1998-07-16 2003-02-25 Nortel Networks Limited Apparatus for classifying a packet within a data stream in a computer network
US6519677B1 (en) * 1999-04-20 2003-02-11 International Business Machines Corporation Managing access to shared data in data processing networks
US6349350B1 (en) * 1999-05-04 2002-02-19 International Business Machines Corporation System, method, and program for handling failed connections in an input/output (I/O) system
US6339812B1 (en) * 1999-09-30 2002-01-15 Silicon Graphics, Inc. Method and apparatus for handling invalidation requests to processors not present in a computer system
US6651157B1 (en) * 1999-10-15 2003-11-18 Silicon Graphics, Inc. Multi-processor system and method of accessing data therein
JP3391315B2 (ja) * 1999-10-20 2003-03-31 日本電気株式会社 バス制御装置
US6701417B2 (en) 2001-04-11 2004-03-02 Sun Microsystems, Inc. Method and apparatus for supporting multiple cache line invalidations per cycle
US6684297B2 (en) * 2001-04-11 2004-01-27 Sun Microsystems, Inc. Reverse directory for facilitating accesses involving a lower-level cache
US20040158687A1 (en) * 2002-05-01 2004-08-12 The Board Of Governors For Higher Education, State Of Rhode Island And Providence Plantations Distributed raid and location independence caching system
WO2002088961A1 (en) * 2001-05-01 2002-11-07 The Board Of Governors For Higher Education, State Of Rhode Island And Providence Plantations Distributed raid and location independence caching system
KR100413686B1 (ko) * 2001-07-14 2003-12-31 삼성전자주식회사 모니터의 절전 장치 및 그 제어 방법
US7336700B2 (en) * 2001-09-20 2008-02-26 Lockheed Martin Corporation System bus transceiver interface
US7191271B2 (en) * 2001-09-20 2007-03-13 Lockheed Martin Corporation Two level multi-tier system bus
US6922783B2 (en) * 2002-01-16 2005-07-26 Hewlett-Packard Development Company, L.P. Method and apparatus for conserving power on a multiprocessor integrated circuit
US8185602B2 (en) 2002-11-05 2012-05-22 Newisys, Inc. Transaction processing using multiple protocol engines in systems having multiple multi-processor clusters
US7395380B2 (en) * 2003-03-20 2008-07-01 International Business Machines Corporation Selective snooping by snoop masters to locate updated data
US7089376B2 (en) * 2003-03-20 2006-08-08 International Business Machines Corporation Reducing snoop response time for snoopers without copies of requested data via snoop filtering
US7035986B2 (en) * 2003-05-12 2006-04-25 International Business Machines Corporation System and method for simultaneous access of the same line in cache storage
US7099971B1 (en) * 2003-06-26 2006-08-29 Emc Corporation Arbitration system
US7594081B2 (en) 2004-09-10 2009-09-22 Cavium Networks, Inc. Direct access to low-latency memory
US7941585B2 (en) * 2004-09-10 2011-05-10 Cavium Networks, Inc. Local scratchpad and data caching system
WO2006031551A2 (en) 2004-09-10 2006-03-23 Cavium Networks Selective replication of data structure
US20060080511A1 (en) * 2004-10-08 2006-04-13 International Business Machines Corporation Enhanced bus transactions for efficient support of a remote cache directory copy
US8332592B2 (en) * 2004-10-08 2012-12-11 International Business Machines Corporation Graphics processor with snoop filter
US7475190B2 (en) * 2004-10-08 2009-01-06 International Business Machines Corporation Direct access of cache lock set data without backing memory
US7305524B2 (en) * 2004-10-08 2007-12-04 International Business Machines Corporation Snoop filter directory mechanism in coherency shared memory system
US20060080514A1 (en) * 2004-10-08 2006-04-13 International Business Machines Corporation Managing shared memory
US7577794B2 (en) * 2004-10-08 2009-08-18 International Business Machines Corporation Low latency coherency protocol for a multi-chip multiprocessor system
US8010682B2 (en) * 2004-12-28 2011-08-30 International Business Machines Corporation Early coherency indication for return data in shared memory architecture
US7418541B2 (en) * 2005-02-10 2008-08-26 International Business Machines Corporation Method for indirect access to a support interface for memory-mapped resources to reduce system connectivity from out-of-band support processor
US7467204B2 (en) * 2005-02-10 2008-12-16 International Business Machines Corporation Method for providing low-level hardware access to in-band and out-of-band firmware
US7437617B2 (en) * 2005-02-11 2008-10-14 International Business Machines Corporation Method, apparatus, and computer program product in a processor for concurrently sharing a memory controller among a tracing process and non-tracing processes using a programmable variable number of shared memory write buffers
US7421619B2 (en) * 2005-02-11 2008-09-02 International Business Machines Corporation Method in a processor for performing in-memory tracing using existing communication paths
US7437618B2 (en) * 2005-02-11 2008-10-14 International Business Machines Corporation Method in a processor for dynamically during runtime allocating memory for in-memory hardware tracing
US7418629B2 (en) * 2005-02-11 2008-08-26 International Business Machines Corporation Synchronizing triggering of multiple hardware trace facilities using an existing system bus
US7380070B2 (en) * 2005-02-17 2008-05-27 Texas Instruments Incorporated Organization of dirty bits for a write-back cache
JP4362454B2 (ja) * 2005-04-07 2009-11-11 富士通株式会社 キャッシュコヒーレンス管理装置およびキャッシュコヒーレンス管理方法
JP2007047892A (ja) 2005-08-08 2007-02-22 Hitachi Ltd 計算機システム及び計算機システムの状態管理方法
US7529866B2 (en) * 2005-11-17 2009-05-05 P.A. Semi, Inc. Retry mechanism in cache coherent communication among agents
US20070214333A1 (en) * 2006-03-10 2007-09-13 Dell Products L.P. Modifying node descriptors to reflect memory migration in an information handling system with non-uniform memory access
JP4835249B2 (ja) * 2006-04-26 2011-12-14 株式会社日立製作所 ストレージシステム、リモートコピー、その管理方法
JP4388557B2 (ja) * 2007-01-11 2009-12-24 株式会社日立製作所 画像処理システム
JP5084372B2 (ja) * 2007-07-03 2012-11-28 キヤノン株式会社 データ処理装置およびデータ処理装置の制御方法
JP4913685B2 (ja) * 2007-07-04 2012-04-11 株式会社リコー Simd型マイクロプロセッサおよびsimd型マイクロプロセッサの制御方法
CN101546282B (zh) * 2008-03-28 2011-05-18 国际商业机器公司 用于在处理器中执行写拷贝的方法和设备
US8868847B2 (en) * 2009-03-11 2014-10-21 Apple Inc. Multi-core processor snoop filtering
JP5321203B2 (ja) * 2009-03-31 2013-10-23 富士通株式会社 システム制御装置、情報処理システムおよびアクセス処理方法
US8806134B2 (en) * 2010-04-16 2014-08-12 Pmc-Sierra Us, Inc. Mirrored cache protection
JP5906881B2 (ja) * 2012-03-27 2016-04-20 富士通株式会社 情報処理装置及び情報処理装置の制御方法
KR101944329B1 (ko) 2012-04-17 2019-04-18 삼성전자주식회사 멀티프로세서 시스템 및 그것의 캐쉬 관리 방법
US9129071B2 (en) * 2012-10-24 2015-09-08 Texas Instruments Incorporated Coherence controller slot architecture allowing zero latency write commit
JP5456208B1 (ja) * 2013-01-30 2014-03-26 三菱電機株式会社 数値制御装置
US20140333779A1 (en) * 2013-05-13 2014-11-13 Electronics And Telecommunications Research Institute Apparatus for distributing bus traffic of multiple camera inputs of automotive system on chip and automotive system on chip using the same
JP5936152B2 (ja) 2014-05-17 2016-06-15 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation メモリアクセストレース方法
US9830162B2 (en) * 2014-12-15 2017-11-28 Intel Corporation Technologies for indirect branch target security
JP6674085B2 (ja) * 2015-08-12 2020-04-01 富士通株式会社 演算処理装置及び演算処理装置の制御方法
US10540292B2 (en) 2016-06-08 2020-01-21 Google Llc TLB shootdowns for low overhead
US10846230B2 (en) * 2016-12-12 2020-11-24 Intel Corporation Methods and systems for invalidating memory ranges in fabric-based architectures
US10437729B2 (en) 2017-04-19 2019-10-08 International Business Machines Corporation Non-disruptive clearing of varying address ranges from cache
US11042483B2 (en) 2019-04-26 2021-06-22 International Business Machines Corporation Efficient eviction of whole set associated cache or selected range of addresses
US11119770B2 (en) * 2019-07-26 2021-09-14 Microsoft Technology Licensing, Llc Performing atomic store-and-invalidate operations in processor-based devices
CN116708571B (zh) * 2023-07-22 2024-05-14 武汉船舶职业技术学院 一种基于5g通信的智能终端服务方法、系统及存储介质

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4136386A (en) * 1977-10-06 1979-01-23 International Business Machines Corporation Backing store access coordination in a multi-processor system
US4399506A (en) * 1980-10-06 1983-08-16 International Business Machines Corporation Store-in-cache processor means for clearing main storage
US4410944A (en) * 1981-03-24 1983-10-18 Burroughs Corporation Apparatus and method for maintaining cache memory integrity in a shared memory environment
US4503497A (en) * 1982-05-27 1985-03-05 International Business Machines Corporation System for independent cache-to-cache transfer
US4622631B1 (en) * 1983-12-30 1996-04-09 Recognition Int Inc Data processing system having a data coherence solution
JPS60215272A (ja) * 1984-04-10 1985-10-28 Mitsubishi Electric Corp マルチプロセツサシステム
JPH07113914B2 (ja) * 1986-05-31 1995-12-06 日本電気株式会社 メモリ制御装置
US4959777A (en) * 1987-07-27 1990-09-25 Motorola Computer X Write-shared cache circuit for multiprocessor system
EP0424432B1 (en) * 1988-07-04 1997-11-19 Sun Microsystems, Inc. Multiprocessor system including a hierarchical cache memory system
US5130922A (en) * 1989-05-17 1992-07-14 International Business Machines Corporation Multiprocessor cache memory system using temporary access states and method for operating such a memory
US5291442A (en) * 1990-10-31 1994-03-01 International Business Machines Corporation Method and apparatus for dynamic cache line sectoring in multiprocessor systems
CA2051209C (en) * 1990-11-30 1996-05-07 Pradeep S. Sindhu Consistency protocols for shared memory multiprocessors
JP3187446B2 (ja) * 1991-04-02 2001-07-11 沖電気工業株式会社 キャッシュメモリ制御装置
US5522058A (en) * 1992-08-11 1996-05-28 Kabushiki Kaisha Toshiba Distributed shared-memory multiprocessor system with reduced traffic on shared bus
JPH06110844A (ja) * 1992-08-11 1994-04-22 Toshiba Corp 分散共有メモリ型マルチプロセッサシステム
US5434993A (en) * 1992-11-09 1995-07-18 Sun Microsystems, Inc. Methods and apparatus for creating a pending write-back controller for a cache controller on a packet switched memory bus employing dual directories
JP2809961B2 (ja) * 1993-03-02 1998-10-15 株式会社東芝 マルチプロセッサ
FR2707774B1 (fr) * 1993-07-15 1995-08-18 Bull Sa Procédé de gestion cohérente des échanges entre des niveaux d'une hiérarchie de mémoires à au moins trois niveaux.
JP3200757B2 (ja) * 1993-10-22 2001-08-20 株式会社日立製作所 並列計算機の記憶制御方法および並列計算機
US5530933A (en) * 1994-02-24 1996-06-25 Hewlett-Packard Company Multiprocessor system for maintaining cache coherency by checking the coherency in the order of the transactions being issued on the bus
BR9506997A (pt) * 1994-03-01 1997-11-18 Intel Corp Arquitetura de barramento altamente canalizada

Cited By (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6043637A (en) * 1997-12-01 2000-03-28 Nec Corporation Voltage generator circuit
JP2007272922A (ja) * 2001-06-04 2007-10-18 Fujitsu Ltd 複数ノード間での通信方法、相互接続ポートおよび相互接続システム
JP2005141606A (ja) * 2003-11-10 2005-06-02 Hitachi Ltd マルチプロセッサシステム
JP2006072509A (ja) * 2004-08-31 2006-03-16 Fujitsu Ltd 情報処理装置及びローカルスヌープ制御方法
JP2006155110A (ja) * 2004-11-29 2006-06-15 Fujitsu Ltd 情報処理装置、システム制御装置、システム制御方法
JP2007199999A (ja) * 2006-01-26 2007-08-09 Nec Computertechno Ltd マルチプロセッサシステム及びその動作方法
US8327081B2 (en) 2006-02-28 2012-12-04 Fujitsu Limited Information processing device and method for controlling the same
WO2007099583A1 (ja) * 2006-02-28 2007-09-07 Fujitsu Limited システムコントローラおよびキャッシュ制御方法
JP2007241601A (ja) * 2006-03-08 2007-09-20 Fujitsu Ltd マルチプロセッサシステム
JP2008046958A (ja) * 2006-08-18 2008-02-28 Fujitsu Ltd システムコントローラ,同一アドレスリクエストキューイング防止方法および情報処理装置
US8892260B2 (en) 2007-03-20 2014-11-18 Irobot Corporation Mobile robot for telecommunication
JP2011076159A (ja) * 2009-09-29 2011-04-14 Nec Computertechno Ltd キャッシュメモリ制御システム及びキャッシュメモリの制御方法
US9014848B2 (en) 2010-05-20 2015-04-21 Irobot Corporation Mobile robot system
WO2012008008A1 (ja) * 2010-07-12 2012-01-19 富士通株式会社 情報処理システム
WO2012035605A1 (ja) * 2010-09-13 2012-03-22 富士通株式会社 情報処理装置および情報処理装置の制御方法
US8930019B2 (en) 2010-12-30 2015-01-06 Irobot Corporation Mobile human interface robot
JP2016157462A (ja) * 2011-10-26 2016-09-01 クゥアルコム・テクノロジーズ・インコーポレイテッド キャッシュコヒーレンシを有する集積回路
US9065706B2 (en) 2011-12-28 2015-06-23 Fujitsu Limited Information processing apparatus, computer-readable recording medium, and control method
JP2013140445A (ja) * 2011-12-28 2013-07-18 Fujitsu Ltd 情報処理装置、制御方法および制御プログラム
JPWO2013114540A1 (ja) * 2012-01-30 2015-05-11 富士通株式会社 制御装置、解析装置、解析方法、および解析プログラム
JP2014197402A (ja) * 2014-05-26 2014-10-16 富士通株式会社 情報処理装置、制御方法および制御プログラム
JP2016119066A (ja) * 2014-12-23 2016-06-30 インテル コーポレイション クロスダイ・インタフェース・スヌープ又はグローバル観測メッセージの順序付け
JP2017123051A (ja) * 2016-01-07 2017-07-13 富士通株式会社 情報処理装置、情報処理装置の制御方法及び演算処理装置
US10565121B2 (en) 2016-12-16 2020-02-18 Alibaba Group Holding Limited Method and apparatus for reducing read/write contention to a cache
US10846164B2 (en) 2017-09-15 2020-11-24 Kabushiki Kaisha Toshiba System LSI and fault detection method for system LSI

Also Published As

Publication number Publication date
JP3872118B2 (ja) 2007-01-24
GB2299187B (en) 1998-04-29
GB2299187A (en) 1996-09-25
US5890217A (en) 1999-03-30
GB9605790D0 (en) 1996-05-22

Similar Documents

Publication Publication Date Title
JPH08320827A (ja) キャッシュコヒーレンス装置
US5440698A (en) Arbitration of packet switched busses, including busses for shared memory multiprocessors
US5265235A (en) Consistency protocols for shared memory multiprocessors
US5924119A (en) Consistent packet switched memory bus for shared memory multiprocessors
JP3737834B2 (ja) 2重化キャッシュ・スヌープ機構
US5276852A (en) Method and apparatus for controlling a processor bus used by multiple processor components during writeback cache transactions
EP0817073B1 (en) A multiprocessing system configured to perform efficient write operations
US5881303A (en) Multiprocessing system configured to perform prefetch coherency activity with separate reissue queue for each processing subnode
US5983326A (en) Multiprocessing system including an enhanced blocking mechanism for read-to-share-transactions in a NUMA mode
US5860159A (en) Multiprocessing system including an apparatus for optimizing spin--lock operations
CA2271536C (en) Non-uniform memory access (numa) data processing system that buffers potential third node transactions to decrease communication latency
JPH11506852A (ja) 多数のバスマスタと共用レベル2キャッシュとを備える多レベルキャッシュシステムでのキャッシュスヌーピングオーバーヘッドの低減
JPH09101943A (ja) パケット交換型キャッシュコヒーレントマルチプロセッサシステム
KR100387541B1 (ko) 멀티프로세서 시스템에서 캐쉬 코히어런시 유지 방법, 멀티프로세서 시스템 및 노드 제어기
KR20000022712A (ko) 노드 상호 접속망 상에서 요구를 예측 방식으로 발행하는 비균일 메모리 액세스 데이터 처리 시스템
CA2300005A1 (en) Multiprocessing system employing pending tags to maintain cache coherence
EP0489556B1 (en) Consistency protocols for shared memory multiprocessors
JPH08249231A (ja) マルチプロセッサ・システムにおける古いデータの処理システム及び方法
US7797495B1 (en) Distributed directory cache
US6226718B1 (en) Method and system for avoiding livelocks due to stale exclusive/modified directory entries within a non-uniform access system
KR100322223B1 (ko) 대기행렬및스누프테이블을갖는메모리제어기
JP4361909B2 (ja) キャッシュコヒーレンス装置
JP4424619B2 (ja) 情報処理装置
JPH10232832A (ja) 重複タグ・システム維持方法
JP4361910B2 (ja) キャッシュコヒーレンス装置

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20051206

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060117

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060320

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060404

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060602

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060620

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060818

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060821

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20060926

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20061019

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20091027

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20101027

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20101027

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111027

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111027

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121027

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121027

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131027

Year of fee payment: 7

LAPS Cancellation because of no payment of annual fees