(57)【特許請求の範囲】
【請求項１】
少なくとも一つ以上のプロセッサを有するプロセッサ群が複数第１バスを介して接続されるとともに、
上記の各プロセッサ群を構成するプロセッサのそれぞれに第２バスを介して共有され、各種データを記憶する主記憶メモリと、
該プロセッサ毎に設けられ、該主記憶メモリにおける各種データをキャッシュライン単位で記憶するキャッシュメモリと、
上記のプロセッサとキャッシュメモリとの間のデータの読み出し／書き込みをコピーバック方式で制御するキャッシュ制御部と、
該主記憶メモリに格納されているデータの該キャッシュメモリ上への登録状態を記憶するディレクトリメモリと、
上記のキャッシュメモリ上の値と主記憶メモリ上の値とが同じシェア状態の場合には該キャッシュメモリ上への登録状況を複数のサブラインで構成されるキャッシュライン単位で該ディレクトリメモリに記憶する一方、該プロセッサにより該キャッシュメモリ上の値が書き換えられた場合には該主記憶メモリ上の値を更新せず、また該キャッシュメモリ上の値が最新値であり該主記憶メモリ上の値が旧値であるダーティ状態の場合には該キャッシュメモリの状態及び最新値の保持先をサブライン単位に該ディレクトリメモリに記憶するように制御するディレクトリ制御部とをそなえてなるマルチプロセッサ装置であって、
該ディレクトリ制御部が、
該主記憶メモリに格納されたデータについての読み出し処理の際に、該主記憶メモリにおいてハードエラーが発生したことを検出すると、該ディレクトリメモリ上の対応するディレクトリエントリに、当該ハードエラー発生の識別情報を記憶するように制御するエラー識別情報記憶制御部と、
該ハードエラー発生の識別情報を有するディレクトリエントリに対応するキャッシュラインに対するアクセスを禁止するアクセス禁止部とをそなえて構成されたことを特徴とする、マルチプロセッサ装置。
【請求項２】
該ディレクトリメモリに、ハードエラー発生の識別情報を記憶するための専用フィールドを設けるように構成されたことを特徴とする、請求項１記載のマルチプロセッサ装置。
【請求項３】
該ディレクトリメモリに、ハードエラー発生の識別情報として、正常時には発生しえない情報を記憶するように構成されたことを特徴とする、請求項１記載のマルチプロセッサ装置。
【請求項４】
主記憶メモリをそなえるとともに、該主記憶メモリを共有する複数のプロセッサと、該複数のプロセッサ毎に該主記憶メモリにおける各種データをキャッシュライン単位で記憶するキャッシュメモリと、該主記憶メモリにて格納されているデータの該キャッシュメモリへの登録状態を記憶するディレクトリメモリとをそなえてなるマルチプロセッサ装置のメモリアクセス方法において、
該主記憶メモリからの読み出し処理の際にハードエラーが生じた場合、該ディレクトリメモリにおける、当該読み出しアドレスが含まれるキャッシュラインのディレクトリエントリにハードエラー発生の識別情報を保持しておき、当該識別情報を有するディレクトリエントリに対応するキャッシュラインには主記憶アクセスを生じさせないことを特徴とする、マルチプロセッサ装置のメモリアクセス方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のプロセッサ装置をシステムバスを介して接続したマルチプロセッサ装置に関し、特にディレクトリ方式を採用した分散共有メモリシステムを適用したマルチプロセッサ装置及びそのメモリアクセス方法に関する。
【背景技術】
【０００２】
図２０はマルチプロセッサ装置を示すブロック図であり、この図２０に示すマルチプロセッサ装置１００は、複数のプロセッサモジュール１０１−１〜１０１−ｎ（ｎ；２以上の整数）がシステムバス１０２を介して互いに接続されている。
さらに、各々のプロセッサモジュール１０１−１〜１０１−ｎはいずれも、例えば図２１に示すように、少なくとも１つのプロセッサエレメント１０３をそなえるとともに、メモリモジュール１０４及びシステムバスインタフェースモジュール１０５をそなえている。
【０００３】
また、プロセッサエレメント１０３及びメモリモジュール１０４は、キャッシュスヌープバス１０６を介して接続され、メモリモジュール１０４は内部バス１０７を介してシステムバスインタフェースモジュール１０５に接続されている。
ここで、プロセッサエレメント１０３は、プロセッサ１０３ａ，キャッシュメモリ１０３ｂ及びキャッシュ制御モジュール１０３ｃをそなえて構成されるようになっている。
【０００４】
プロセッサ１０３ａは、キャッシュメモリ１０３ｂ又はメモリモジュール１０４との間でデータの読み出し／書き込みアクセスを行なうことを通じて、所望の情報処理を行なうものであり、キャッシュメモリ１０３ｂは、プロセッサ１０３ａに対応して設けられ、プロセッサ１０３ａとメモリモジュール１０４との間で高速の読み出し／書き込みアクセスを行ないうるものである。
【０００５】
また、このプロセッサ１０３ａは、メモリモジュール１０４に対してアクセス信号を送信してから応答信号を受信するまでの経過時間（応答待ち時間）を計時するタイマ１０８をそなえ、このタイマ１０８にて計時された経過時間が予め設定された所定のタイムアウト時間を経過しても応答信号を受信しない場合には、タイムアウト信号として出力するようになっている。
【０００６】
ところで、このキャッシュメモリ１０３ｂは、例えば２５６バイトにより構成されるキャッシュライン単位にデータが格納されるようになっており、このキャッシュラインはさらに４つのサブライン（６４バイト）により構成されるようになっている。
また、キャッシュ制御モジュール１０３ｃは、プロセッサ１０３ａとキャッシュメモリ１０３ｂとの間のデータの読み出し／書き込みをコピーバック方式で制御するものである。
【０００７】
さらに、メモリモジュール１０４は、各プロセッサモジュール１０１のそれぞれにキャッシュスヌープバス１０６を介して共有され、各種データを記憶する主記憶素子１０４ａをそなえるとともに、ディレクトリメモリ１０４ｂ及びアクセス制御モジュール１０４ｃをそなえて構成されている。
ここで、ディレクトリメモリ１０４ｂは、マルチプロセッサ装置１００をプロセッサエレメント１０１−１〜１０１−ｎにおける全てのキャッシュメモリ１０３に対する、主記憶データの登録状況を記憶するものである。
【０００８】
また、アクセス制御モジュール１０４ｃは、キャッシュメモリ１０３ｂ上の値と主記憶素子１０４ａ上の値とに基づいて、キャッシュメモリ１０３に対する、主記憶データの登録状況を上述のディレクトリメモリ１０４ｂに記憶制御するものである。
例えば、アクセス制御モジュール１０４ｃは、キャッシュメモリ１０３ｂ上の値と主記憶素子１０４ａ上の値とが同じシェア状態の場合にはキャッシュメモリ１０３ｂ上への登録状況を４つのサブラインで構成されるキャッシュライン単位でディレクトリメモリ１０４ｂに記憶する一方、プロセッサ１０３ａによりキャッシュメモリ１０３ｂ上の値が書き換えられた場合には主記憶素子１０４ａ上の値を更新せず、またキャッシュメモリ１０３ｂ上の値が最新値であり主記憶素子１０４ａ上の値が旧値であるダーティ状態の場合にはキャッシュメモリ１０３ｂの状態及び最新値の保持先をサブライン単位にディレクトリメモリ１０４ｂに記憶するように制御するようになっている。
【０００９】
さらに、このアクセス制御モジュール１０４ｃは、一つの書き込みアクセス又はキャッシュオフアクセスを行なう場合、該当するキャッシュメモリ１０３ｂにおけるキャッシュラインを構成するサブライン分のキャッシュ無効化指令を発行するようになっている。
また、システムバスインタフェースモジュール１０５は、メモリモジュール１０４とシステムバス１０２との間をインタフェースするものである。
【００１０】
なお、図２４は上述のマルチプロセッサ装置１００の機能に着目したブロック図であり、この図２４に示すマルチプロセッサ装置１００のプロセッサモジュール１０１−１〜１０１−ｎは、それぞれ、プロセッサ（ＣＰＵ）１０３ａ，キャッシュ部（ＣＳ）１０３Ａ，ディレクトリ部（ＤＩＲ）１０４Ａ，主記憶メモリとしての主記憶素子（ＭＳ）１０４ｃ及びシステムバス制御機構としてのシステムバスインタフェースモジュール１０５をそなえている（図２４に示すものにおいては、複数のプロセッサエレメント１０３，キャッシュスヌープバス１０６及び内部バス１０７の図示を省略している）。
【００１１】
ここで、キャッシュ部１０３Ａは、前述の図２１におけるキャッシュメモリ１０３ｂ及びキャッシュ制御モジュール１０３ｃにより構成され、ディレクトリ部１０４Ａは、ディレクトリメモリ１０４ｂ及びアクセス制御モジュール１０４ｃにより構成されるようになっている。
このような構成により、上述の図２０，図２１に示すマルチプロセッサ装置１００のメモリモジュール１０４では、一つの書き込みアクセス又はキャッシュオフアクセスを行なう場合において、当該キャッシュラインがシェア状態にある場合には、以下に示すようにキャッシュ無効化処理（パージ）を行なうようになっている。
【００１２】
即ち、主記憶モジュール１０４に対してのキャッシュメモリ１０３ｂの無効化を必要とする処理のアクセスアドレスを含むサブラインが通し番号０のサブラインであるとすると、アクセス制御モジュール１０４ｃでは、この通し番号０のサブラインが含まれるディレクトリエントリをディレクトリメモリ１０４ｂから参照する。
ここで、アクセス制御モジュール１０４ｃでは、当該キャッシュラインがシェア状態であるならばディレクトリメモリ１０４ｂに記憶されているすべての参照先のキャッシュメモリ１０３ｂに対して前記アクセスアドレスと共に無効化指令としてのキャッシュ無効化コマンドを発行する。
【００１３】
即ち、図２２に示すように、例えば参照先のキャッシュメモリ１０３ｂにおけるキャッシュラインを構成する４つのサブライン（通し番号０〜３）のうち、通し番号０のサブラインに対してはキャッシュ無効化コマンドＣＩを送信する（時点ｔ１〜ｔ２参照）。換言すれば、アクセス制御モジュール１０４ｃから送信されるキャッシュ無効化コマンドＣＩは、参照先のキャッシュスヌープバス１０６上において通し番号０のサブラインに対してのみ発行される。
【００１４】
ところで、ディレクトリメモリ１０４ｂ上でのシェア状態の管理、すなわち主記憶素子１０４ａの値の参照先の記憶はキャッシュライン単位に行なわれているため、一つのサブラインに対するキャッシュ無効化の成否のみではディレクトリ記憶上のシェア状態を削除することはできないため、キャッシュスヌープバス１０６上に、キャッシュラインを構成する残りのサブライン（通し番号１〜３）に対してキャッシュの状態通知コマンドＡＳＫを発行する（時点ｔ２〜ｔ５参照）。
【００１５】
なお、このキャッシュ無効化コマンドＣＩ及びキャッシュ状態通知コマンドＡＳＫを受信したキャッシュメモリ１０３ｂは、アクセス制御モジュール１０４ｃに対して一定サイクル後に無効化の成否を応答し（時点ｔ５〜ｔ６参照）、その後、キャッシュ状態通知コマンドＡＳＫに対するキャッシュ状態通知ＣＳＴとしての現在のキャッシュ状態を応答する（時点ｔ６〜時点ｔ９参照）。
【００１６】
なお、アクセス制御部１０４ｃにおいては、上述のキャッシュ状態通知コマンドＣＳＴに基づいて、ディレクトリメモリ１０４ｂ上のシェア状態をすべて削除するまで、上述のキャッシュラインを構成するサブラインに対して通し番号０のサブラインから順次キャッシュ無効化コマンドを発行する。
その後、アクセスモジュール１０４ｃでは、キャッシュ無効化が成立し、キャッシュラインを構成するすべてのサブラインにおいてシェア状態が存在しない場合に、ディレクトリメモリ１０４ｂ上の参照先キャッシュメモリ１０３ｂの記憶を削除する。
【００１７】
また、例えばプロセッサ１０３ａからキャッシュメモリ１０３ｂに対するリードアクセスがキャッシュミスヒットした場合には、例えば図２３のフローチャートに示すようなメモリエラー処理が行なわれる。
まず、プロセッサ１０３ａからのリードアクセスがキャッシュミスヒットした場合、キャッシュ制御モジュール１０３ｃはキャッシュスヌープバス１０６を介して、メモリモジュール１０４に主記憶読み出しアクセスを発行する（ステップＡ１）。
【００１８】
メモリモジュール１０４のアクセス制御モジュール１０４ｃでは、そのアクセスアドレスが含まれるキャッシュラインのディレクトリをディレクトリメモリ１０４ｂから参照する（ステップＡ２）。
ここで、キャッシュメモリ１０３ｂの状態がダーティであるならば、キャッシュコヒーレンス処理を施した後に（ステップＡ３，ステップＡ４）、主記憶素子１０４ａの読み出しを開始すると共にディレクトリメモリ１０４ｂの状態を更新し（ステップＡ５）、キャッシュスヌープバス１０６上への読み出しデータの転送が開始される（ステップＡ６）。
【００１９】
また、キャッシュメモリ１０３ｂの状態がシェア又はインバリッド（キャッシュラインがダーティでもシェアでもない状態）であるならば、主記憶素子１０４ａの読み出しを開始すると共にディレクトリメモリ１０４ｂの状態を更新し（ステップＡ３，ステップＡ５）、キャッシュスヌープバス１０６上に読み出しデータを転送が開始される（ステップＡ６）。
【００２０】
上述のごとくキャッシュスヌープバス１０６上に読み出しデータを転送が開始されると、キャッシュ制御モジュール１０３ｃは読み出しデータのキャッシュメモリ１０３ｂへの登録を開始する（ステップＡ７）。
ここで、読み出しデータにマルチビットエラーが検出されない場合には、読み出し処理は正常終了するが（ステップＡ８のＮＯルートからステップＡ９）。
【００２１】
また、読み出しデータにマルチビットエラーが検出されると、メモリモジュール１０４のアクセス制御モジュール１０４ｃでは、キャッシュスヌープバス１０６上への読み出しデータ転送を中止し（ステップＡ８のＹＥＳルートからステップＡ１０）、キャッシュ制御モジュール１０３ｃに対して障害発生応答を返送する（ステップＡ１２）。
さらに、キャッシュ制御モジュール１０３ｃでは、キャッシュスヌープバス１０６上への読み出しデータ転送を中止を受けて、キャッシュメモリ１０３ｂへの登録を無効にする一方（ステップＡ１１）、アクセス制御モジュール１０４ｃからの障害発生応答を受けて、プロセッサ１０３ａに対してアクセスエラー応答を返送する（ステップＡ１３）。
【００２２】
その後、アクセス制御モジュール１０４ｃでは、ディレクトリメモリ１０４ｂにおける当該ディレクトリエントリの状態を、アクセス前の初期状態に書き戻す（ステップＡ１４）。
さらに、プロセッサ１０３ａからメモリモジュール１０４に対しての主記憶素子１０４ａへのメモリアクセスは、例えば、図２５に示すようなコマンドシーケンスにより行なわれる。この図２５においては、プロセッサモジュール１０１−１のプロセッサ１０３ａからプロセッサモジュール１０１−２の主記憶素子１０４ａに対してメモリアクセスが行なわれた場合について示しているが、他のプロセッサモジュール間又はプロセッサモジュール内においてのメモリアクセスについても同様である。
【００２３】
なお、以下の説明中においては、便宜上、主記憶素子１０４ａへのアクセス元のプロセッサモジュール（Processor Module，ＰＭ）１０１−１をローカルＰＭ、アクセスされる主記憶素子１０４ａの所在するプロセッサモジュール１０１−２をホームＰＭ、当該主記憶素子１０４ａをキャッシングしているプロセッサモジュール１０１−ｎをリモートＰＭと呼ぶ。
【００２４】
ここで、ローカルＰＭ１０１−１があるメモリ番地「Ａ」に非キャッシュストアしようとしているが、このメモリ番地「Ａ」の実体はホームＰＭ１０１−２にある一方、リモートＰＭ１０１−ｎのキャッシュメモリ１０３ｂにて参照状態になっている。
この場合においては、まず、ローカルＰＭ１０１−１はホームＰＭ１０１−２のディレクトリ部１０４Ａに対して非キャッシュメモリストアコマンドＭ−ＳＴを発行するとともに（図２５の丸付き数字「１」参照）、タイマ１０８による経過時間の計時が開始される。
【００２５】
続いて、Ｍ−ＳＴコマンドを受信したホームＰＭ１０１−２のディレクトリ部１０４Ａにおいては、アクセス制御モジュール１０４ｃによりディレクトリメモリ１０４ｂを検索する。
この場合においては、メモリ番地「Ａ」はリモート１０１−ｎでキャッシングされているので、ディレクトリ部１０４のアクセス制御モジュール１０４ｃでは、リモートＰＭ１０１−ｎのキャッシュ部１０３Ａに対してキャッシュ無効化コマンド（キャッシュパージコマンド）Ｃ−ＰＧを発行する（図２５の丸付き数字「２」参照）。
【００２６】
その後、キャッシュパージコマンドＣ−ＰＧを受けたリモートＰＭ１０１−ｎのキャッシュ部１０３Ａにおいてはキャッシュパージ処理を行なった後に、Ｃ−ＰＧコマンド発行元であるホームＰＭ１０１−２に対して、キャッシュパージ完了応答コマンドＰＧ−ＣＭＰを発行する（図２５の丸付き数字「３」参照）。
ＰＧ−ＣＭＰコマンドを受信したホームＰＭ１０１−２は、ローカルＰＭ１０１−１からのＭ−ＳＴコマンドで指定されたデータを、主記憶素子１０４ａのメモリ番地「Ａ」に書き込む。
【００２７】
また、ホームＰＭ１０１−２におけるアクセス制御モジュール１０４ｃでは、ディレクトリメモリ１０４ｂの内容を、リモートＰＭ１０１−ｎでの参照状態から非キャッシュ状態に変更した後に、Ｍ−ＳＴコマンドの発行元であるローカルＰＭ１０１−１に対して、メモリストア完了応答コマンドＳＴ−ＣＭＰを発行する（図２５の丸付き数字「４」参照）。
【００２８】
なお、ローカルＰＭ１０１−１のプロセッサ１０３ａにおいては、タイマ１０８にて計時されている経過時間がタイムアウト時間が経過しても、応答信号を受信しない場合には、アクセスタイムアウトを通知する。
ところで、上述のタイマ１０８における所定のタイムアウト時間Ｔは、上述のコマンドシーケンスにかかる時間に基づいて設定されるようになっている。
【００２９】
具体的には、ローカルＰＭ１０１−１のプロセッサ１０３ａがＭ−ＳＴコマンドを発行してからＳＴ−ＣＭＰを受信するまでに要する最大時間をＴ１とし、Ｃ−ＰＧコマンドを発行してからＰＧ−ＣＭＰコマンドを受信するまでに要する最大時間をＴ２とすると、以下の式（１）に示すような条件を満たす単一時間Ｔがタイムアウト時間として設定されるようになっているのである。
【００３０】
Ｔ＞Ｔ１＋Ｔ２                                        ・・・式（１）
ところで、図２６は上述のマルチプロセッサ装置１００におけるシステムバス１０２，キャッシュスヌープバス１０６又は内部バス１０７として用いることができるスプリットバスを適用したデータ転送システムを示すブロック図であり、この図２６に示すデータ転送システム２００においては、送信装置２１０がスプリットバス２０１を介して受信装置２２０に接続されている。
【００３１】
ここで、スプリットバス２０１は、送信装置２１０が受信装置２２０に対して要求を出してから応答を受け取るまでの間、他の装置にバスの使用権を譲り、複数の処理の同時信号を可能として、バスの高使用効率化を図ったものである。
さらに、送信装置２１０は例えば前述のマルチプロセッサ装置１００のプロセッサ１０３ａのごときＣＰＵや入出力装置（Ｉ／Ｏ装置）により構成され、送信キュー制御部(send queue control)２１１，バス制御部（bus control-1)２１２及び出力セレクタ(out selector)２１４をそなえるとともに、フリップフロップ（ＦＦ）やランダムアクセスメモリ（ＲＡＭ）等により構成される４つの送信コマンド／データ・キュー(squeue1〜squeue4)２１３−１〜２１３−４により構成されている。
【００３２】
ここで、送信キュー制御部２１１は、送信装置２１０の内部から発生したデータ転送要求を受けて、送信コマンド／データ・キュー２１３−１〜２１３−４のうちの空きの送信コマンド／データ・キューに対して、該当するコマンド及びデータを格納するように制御するとともに、バス制御部２１２に対してバス使用を要求するものである。
さらに、バス制御部２１２は、送信キュー制御部２１１からのバス使用要求に基づいて、スプリットバス２０１の使用状態を制御する図示しないバス調停装置に対してバス使用権の獲得要求を出力するようになっている。
【００３３】
また、このバス制御部２１２は、上述のバス使用権を獲得すると出力セレクタ２１５に対してセレクト信号を出力することにより、４つのコマンド／データ・キュー２１３−１〜２１３−４に格納されているコマンド／データパケット（データ付きバスコマンド）のうちのいずれかを選択するためのセレクト信号を出力するものである。
出力セレクタ２１４は、バス制御部２１２からのセレクト信号に基づいて、４つのコマンド／データ・キュー２１３−１〜２１３−４に格納されているコマンド／データパケットのうちのいずれかを所定のアルゴリズムで選択し、選択されたパケットを構成するコマンド及びデータを連続してスプリットバス２０１に送出するようになっている。
【００３４】
なお、上述のＣＰＵとしての送信装置２１０からのコマンド付きデータパケットとしては、例えばメインメモリとしての受信装置２２０に対するメモリ書き込みコマンドを含むデータ転送要求とすることができ、このメモリ書き込みコマンド等のコマンド付きデータパケットを構成するコマンドは、例えば図２７に示すようなフォーマットにより構成されるようになっている。
【００３５】
即ち、この図２７に示すメモリ書き込みコマンド３００は、コマンドフィールド(Command) ３０１，コマンドＩＤフィールド(Command-ID)３０２，送信装置アドレスフィールド(Source-Address)３０３，相手装置アドレスフィールド(Destination-Address）３０４，サイズフィールド(Size)３０５及びメモリアドレスフィールド(Mem-Address）３０６により構成されるようになっている。
【００３６】
ここで、コマンドフィールド３０１は、コマンドの操作コードを指定するものであり、コマンドＩＤフィールド３０２は、多重コマンドの識別を行なうための識別番号を指定するものであり、この図２６に示す送信装置２１０においては多重度は「４」である。
さらに、送信装置アドレスフィールド３０３は送信装置アドレスを指定するものであり、相手装置アドレスフィールド３０４は、相手装置アドレスを指定するものであり、サイズフィールド３０５は、データ転送コマンドの際のデータサイズを指定するものであり、メモリアドレスフィールド３０６は、メモリアクセスのメモリ番地を指定するものである。
【００３７】
また、受信装置２２０は例えば前述のマルチプロセッサ装置１００におけるメモリモジュール１０４のごときメモリ装置により構成されるようになっており、コマンドデコーダ(dec）２２１，受信キュー(rqueue1〜4)２２２−１〜２２２−４，バス制御部(bus control-2）２２３，受信キュー制御部(rcev queue control)２２４，メモリセレクタ(mem-selector)２２５及びメモリ制御部(mem control）２２６をそなえている。
【００３８】
ここで、コマンドデコーダ２２１は、スプリットバス２０１を介して受信されたコマンドパケットについて、相手装置アドレスフィールド３０４における相手装置アドレスフィールドをチェックするとともに、受信キュー２２２−１〜２２２−４における空きキューをチェックするものである。
具体的には、コマンドデコーダ２２１は、自装置宛のコマンドであり、且つ受信キュー２２２−１〜２２２−４のいずれかが空いていると判断すると、バス制御部２２３にその旨を通知する一方、自装置宛でないコマンドに対しては無視し、また、受信キュー２２２−１〜２２２−４に空きがない場合は、送信装置２１０に対してその旨を通知するようになっている。
【００３９】
バス制御部２２３は、コマンドデコーダ２２１からの通知を受けて、受信キュー２２２−１〜２２２−４のうちの空きキューに受信されたコマンド及び後続のデータを格納するように制御する一方、空きキューへのコマンド及び後続のデータの格納動作が終了すると、受信キュー制御部２２４に対して、空きキューに格納されたコマンドのメモリアクセス制御を依頼するようになっている。
【００４０】
受信キュー制御部２２４は、バス制御部２２３からのメモリアクセス制御の依頼を受けて、受信キュー２２２−１〜２２２−４に格納されているメモリアクセスコマンドのうちのいずれかを選択するためのセレクト信号をメモリセレクタ２２５に対して出力するものである。
メモリセレクタ２２５は、受信キュー制御部２２４からのセレクト信号を入力されて、受信キュー２２２−１〜２２２−４に格納されているメモリアクセスコマンドのうちのいずれかを所定のアルゴリズムで選択してメモリ制御部２２６に出力するとともに、後続のデータは前述の図２１に示す主記憶素子１０４ａのごときメモリに出力されるようになっており、例えばＦＩＦＯ(First In First Out)メモリ等により構成されるようになっている。
【００４１】
このような構成により、図２６に示すデータ転送システム２００では、送信装置２１０から受信装置２２０に対して、スプリットバス２０１を介することによりメモリ書き込みバスコマンドを含むデータ付きコマンドパケットを送信している。
このデータ付きパケットコマンドパケットを送信装置２１０から送信する際には、転送操作コードと転送データサイズ等を含むバスコマンド情報が定義されたパケットに続き、データパケットを一括して転送する。
【００４２】
具体的には、送信装置２１０の内部からデータ転送要求が発生すると、送信キュー制御部２１１で送信コマンド／データ・キュー２１３−１〜２１３−４のうちで、空きの送信コマンド／データ・キューを探し、４つのキューのうち、該当するキューにコマンド及びデータを格納する。
空きの送信コマンド／データ・キューにコマンド及びデータが格納されることによりバス使用の準備ができた時点で、送信キュー制御部２１１はバス制御部２１２に要求を渡す。バス制御部２１２では送信コマンド／データ・キュー２１３−１〜２１３−４に格納されている４つのバス要求から所定のアルゴリズムで要求を選択し、スプリットバス２０１の使用権を得るべく図示しないバス調停装置に要求ｒｅｑを出す（図２８における時点ｕ１〜時点ｕ３参照）。
【００４３】
バス制御部２１２において、バス使用権調停装置からのバス使用許可信号ｇｒｔを受けてスプリットバス２０１の使用権を獲得すると（図２８における時点ｕ２〜時点ｕ３参照）、送信データ制御部２１２にて選択されたコマンド／データ・パケットを出力セレクタ２１４を介してスプリットバス２０１に連続して送出する（図２８における時点ｕ３〜時点ｕ１０参照）。
【００４４】
また、受信装置２２０では、スプリットバス２０１からコマンド／データ・パケットを構成する先頭のコマンドパケットを受信すると（図２８における時点ｕ３〜時点ｕ４参照）、コマンドデコーダ２２１にて装置アドレス等をチェックする。
ここで、受信されたコマンドパケットが自装置宛のコマンドであり、且つ受信キュー２２２−１〜２２２−４のいずれかが空いているとコマンドデコーダ２２１において判断すると、バス制御部２２３にその旨通知し、当該空きの受信キューに受信コマンド及び後続のデータを格納する（図２８における時点ｕ４〜時点ｕ１１参照）。
【００４５】
また、自装置宛でない受信コマンドについては無視し、受信キュー２２２−１〜２２２−４に空きがない場合には送信元の送信装置２１０に対してその旨を通知する。
バス制御部２２３ではバス受信動作が完了すると、受信キュー制御部２２４に対して、受信キュー２２２−１〜２２２−４に格納したコマンドのメモリアクセス制御を依頼する。
【００４６】
受信キュー制御部２２４ではメモリセレクタ２２５に対してセレクト信号を出力することにより、４つの受信キュー２２２−１〜２２２−４に格納されているメモリアクセスコマンドを所定のアルゴリズムによりメモリセレクタ２２５を介して選択し、メモリ制御部２２６に実際のメモリアクセス指示する。これにより、メモリ制御部２２６では実際のメモリアクセスが実施される。
【００４７】
ところで、上述の図２６に示すようなデータ転送システム２００においては、データ転送速度の向上のため、バスの動作クロックサイクルを短縮したり、さらには６４ビットや１２８ビットの広いバスバンドを採用する傾向にある。
また、このようなデータ転送システムにおけるデータ転送速度の向上のためにはスプリットバスにおけるバスの使用効率を高めることも必要となるが、このためには、バスコマンドやデータの受信バッファをできるだけ多く具備することが有効である。
【発明の開示】
【発明が解決しようとする課題】
【００４８】
しかしながら、前述の図２０，図２１に示すマルチプロセッサ装置１００においては、ひとつのキャッシュラインに連続的な書き込みアクセス又はキャッシュオフアクセスを行なう場合、このキャッシュラインを構成するサブラインの複数が他のプロセッサによってシェア状態にあったとすると、このキャッシュラインに対する処理を完了するまでには、書き込み権の獲得又はキャッシュオフのために、このキャッシュライン構成するサブライン分のキャッシュ無効化指令が発行される。
【００４９】
即ち、アクセス制御モジュール１０４ｃにおいては、一つの書き込みアクセス又はキャッシュオフアクセスを行なう場合、図２２に示すような、該当するキャッシュメモリ１０３ｂにおけるキャッシュ無効化指令を、キャッシュラインを構成するサブラインの数だけ発行する必要があるのである。
キャッシュメモリ１０３ｂの無効化指令はメモリシステムを構成する複数のバスを使用することから、バス使用権の獲得及び無効化指令の処理がアクセス毎に必要となるため、処理時間が長くなるという課題がある。
【００５０】
また、前述の図２０，図２１に示すマルチプロセッサ装置１００において、主記憶素子１０４ａのメモリ空間を複数のプロセッサ１０３ａで共有しているため、あるプロセッサのアクセスで主記憶素子１０４ａのハードエラーを検出していたとしても、他のプロセッサがその主記憶素子１０４ａが持つアドレス空間にアクセスすることがあり得る。
この場合においては、このような主記憶素子１０４ａに対するアクセスのそれぞれに対して上述の図２３に示すような処理を行なう必要があり、アクセス発行元のプロセッサに対してエラー応答が返送されるまでの処理サイクルが不必要に長くなるという課題がある。
【００５１】
特に、比較的応答サイクルの長い主記憶素子１０４ａへのアクセスが必ず発生することは、メモリモジュール１０４内でのアクセス競合を発生させるため、正常な主記憶素子１０４ａへのアクセス性能も劣化させるという課題もある。
また、エラー発生後も主記憶素子１０４ａ及びキャッシュメモリ１０３ｂ間でのキャッシュコヒーレンシを保つ必要がある場合、ディレクトリメモリ１０４ｂの状態書き込み及びキャッシュメモリ１０３ｂへの読み出しデータの登録を、エラー発生時点でキャンセルし初期状態に戻す必要がある。従って、処理が複雑化するとともに、アクセス完了時点まで初期状態を保持するための記憶素子が新たに必要となる課題もある。
【００５２】
さらに、前述の図２０，図２１に示すに示すマルチプロセッサ装置１００においては、図２５に示すように、ローカルＰＭ１０１−１がホームＰＭ１０１−２に対してメモリアクセスを行なう場合は、アクセス元のローカルＰＭ１０１−１においてはタイマ１０８により単一時間での応答待ち時間を計時しているので、例えば図２９に示すように、一つのメモリアクセスの応答待ち時間中に複数のコマンドエラーが同時に発生した場合には、障害発生箇所を正確に特定することが困難となる課題がある。
【００５３】
特に、フォールトトレラントシステム等の高信頼システムにおいては、障害発生時にも確実なリカバリが要求されるため、障害発生箇所の正確な特定は必要不可欠である。
即ち、この図２９に示すように、ローカルＰＭ１０１−１がホームＰＭ１０１−２に対して、メモリ番地「Ａ」への非キャッシュメモリストアコマンドＭ−ＳＴを発行すると（図２９における丸付き数字「１」参照）、同時にタイマ１０８にてアクセスタイマ値（タイムアウト時間）をＴとしてタイマ計時を開始する（図３０における時点ｖ１参照）。
【００５４】
ローカルＰＭ１０１−１からのＭ−ＳＴコマンドを受信したホームＰＭ１０１−２のアクセス制御モジュール１０４ｃではディレクトリメモリ１０４ｂを検索し、メモリ番地「Ａ」がリモートＰＭ１０１−ｎでキャッシングされていることを知り、リモートＰＭ１０１−ｎに対してキャッシュパージコマンドＣ−ＰＧを発行する（図２９における丸付き数字「３」参照）。
【００５５】
なお、ホームＰＭ１０１−２におけるプロセッサ１０３ａのタイマ１０８では、キャッシュパージコマンドＣ−ＰＧを送信すると同時に、アクセスタイマＴ２でタイマ計時を開始している（図３０における時点ｖ３参照）。さらに、同時にホームＰＭ１０１−２のディレクトリメモリ１０４ｂはメモリ番地「Ａ」を含むライン単位にビジー状態となる。
さらに、ホームＰＭ１０１−２からのＣ−ＰＧコマンドを受信すべきリモートＰＭ１０１−ｎでは、上述のキャッシュパージコマンドＣ−ＰＧの送信に先行して、キャッシングされているメモリ番地「Ａ」に対して書き込みアクセスを開始しており、ホームＰＭ１０１−２のディレクトリメモリ１０４ｂを更新状態にすべくアクセス制御モジュール１０４ｃに対してキャッシュ更新通知コマンドＭ−ＥＸを発行している（図２９における丸付き数字「２」参照）。
【００５６】
また、リモートＰＭ１０１−ｎにおけるプロセッサ１０３ａのタイマ１０８においても、上述のＭ−ＥＸコマンドを送信すると同時に、アクセスタイマＴでタイマ計時を開始している（図３０における時点ｖ２参照）。
リモートＰＭ１０１−ｎでは、上述のＭ−ＥＸコマンドを送信した後に、ホームＰＭ１０１−２からのＣ−ＰＧコマンドを受信するが、既に同一ラインのキャッシュ操作を実行しているため、パージ処理はリモートＰＭ１０１−ｎ内で保留される(Pending）。
【００５７】
Ｍ−ＥＸコマンドを受信したホームＰＭ１０１−２ではディレクトリメモリ１０４ｂを検索し、メモリ番地「Ａ」のラインがビジー状態であるため、その旨応答を返そうとするが、何らかの要因でアクセス元であるリモートＰＭ１０１−ｎに届かなかったとする（Disappear,図２９における丸付き数字「４」参照）。
この場合においては、パージ処理はリモートＰＭ１０１−ｎ内で保留されたままとなり、従って、リモートＰＭ１０１−２ではＭ−ＳＴコマンドに対する応答も実行できない。
【００５８】
即ち、Ｍ−ＥＸコマンドに対する応答が消失したため、この状態はリモートＰＭ１０１−ｎのタイマ１０８にて計時されている応答待ち時間がタイムアウト（Ｍ−ＥＸコマンドの送信からＴ時間経過）するまで続く。
ところで、ホームＰＭ１０１−２におけるタイマ１０８において計時される、Ｃ−ＰＧコマンドに対する応答待ち時間のアクセスタイマ値Ｔ２は、前述の式（１）からＴ＞Ｔ２であるため、リモートＰＭ１０１−ｎでのＭ−ＥＸの応答待ちタイマ時間Ｔより先にタイムアウトする（図３０における時点ｖ４参照）。
【００５９】
タイムアウト検出したホームＰＭ１０１−２では、Ｃ−ＰＧコマンド発生の元となったローカルＰＭ１０１−１からのＭ−ＳＴコマンドに対してその旨を応答し、Ｍ−ＳＴコマンドの処理を完了する（図３０における時点ｖ５参照）。
また、リモートＰＭ１０１−ｎにおいては、Ｍ−ＥＸコマンドのタイムアウトが検出されると（図３０における時点ｖ６参照）、リモートＰＭ１０１−ｎ内のアクセス元のプロセッサ１０３ａに対してその旨を通知する。
【００６０】
上述のリモートＰＭ１０１−ｎにて検出されるＭ−ＥＸコマンドのタイムアウトは、リモートＰＭ１０１−ｎとホームＰＭ１０１−２との間の何らかの要因であることを特定することができるが、ホームＰＭ１０１−２にて検出されるＣ−ＰＧコマンドのタイムアウトの原因は特定することができない。
即ち、このＣ−ＰＧコマンドのタイムアウトは、ホームＰＭ１０１−２とリモートＰＭ１０１−ｎとの間に何ら問題が存在しないにもかかわらず、先のＭ−ＥＸコマンドに対する応答がないことに起因して発生したものであるが、ホームＰＭ１０１−２ではこれを原因として特定することができないのである。
【００６１】
また、上述したように、前述の図２６に示すデータ転送システム２００におけるデータ転送速度の向上のためにはスプリットバスにおけるバスの使用効率を高めることも必要となるが、このためには、バスコマンドやデータの受信バッファをできるだけ多く具備することが有効である。
しかしながら、このデータ転送システム２００においては、受信バッファとしての受信キューの容量をバス使用効率の向上を図るために十分に大きくすることは困難であるため、満足すべき受信バッファ数を用意することができず、スプリットバスの利点を生かしきることができない課題がある。
【００６２】
本発明は、このような課題に鑑み創案されたもので、あるプロセッサのアクセスで主記憶素子のハードエラーを検出した場合には、他のプロセッサからの、当該ハードエラーを検出した主記憶素子のアドレス空間に対するアクセスを行なわないようにすることにより、装置の処理サイクルが不必要に長くなることを防止できるようにした、マルチプロセッサ装置及びそのメモリアクセス方法を提供することを目的とする。
【課題を解決するための手段】
【００６３】
図１は本発明の第１関連発明の原理ブロック図であり、この図１において、１２はマルチプロセッサ装置であり、このマルチプロセッサ装置１２は、複数のプロセッサ群１−１〜１−ｎ（ｎ；２以上の自然数）が、第１バス６を介して相互に接続されることにより構成されている。
なお、図１においては、以下に示すプロセッサ群１−１〜１−ｎの詳細な構成としてプロセッサ群１−１のみに着目して示しており、プロセッサ群１−２〜１−ｎの詳細な構成についてはプロセッサ群１−１と基本的に同様であり、図示を省略している。
【００６４】
ここで、プロセッサ群１−１〜１−ｎは、それぞれ、少なくとも一つ以上のプロセッサ２−１〜２−ｍ（ｍ；自然数）を有するとともに、主記憶メモリ７をそなえている。
また、主記憶メモリ７は、上記の各プロセッサ群を構成するプロセッサ２−１〜２−ｍのそれぞれに第２バス１１を介して接続されることにより、プロセッサ２−１〜２−ｍ（他のプロセッサ群１−２〜１−ｎにおけるプロセッサも含む）に共有され、各種データを記憶するものである。
【００６５】
さらに、３−１〜３−ｍはキャッシュメモリであり、このキャッシュメモリ３−１〜３−ｍは、プロセッサ２−１〜２−ｍ毎に設けられ、主記憶メモリ７における各種データをキャッシュライン単位で記憶するものである。
また、キャッシュ制御部４−１〜４−ｍは、それぞれ、プロセッサ２−１〜２−ｍとキャッシュメモリ３−１〜３−ｍとの間のデータの読み出し／書き込みを制御するものである。
【００６６】
なお、上述のプロセッサ２−１，キャッシュメモリ３−１及びキャッシュ制御部４−１により、プロセッサ部５−１が構成されるようになっており、同様に、プロセッサ部５−２〜５−ｍは、それぞれ、プロセッサ２−２〜２−ｍ，キャッシュメモリ３−１〜３−ｍ及びキャッシュ制御部４−１〜４−ｍにより構成されている。
また、８はディレクトリメモリであり、このディレクトリメモリ８は、主記憶メモリ７に格納されているデータのキャッシュメモリ３−１〜３−ｍ（他のプロセッサ群１−２〜１−ｎにおけるキャッシュメモリも含む）毎への登録状態を記憶するものである。
【００６７】
さらに、９はディレクトリ制御部であり、このディレクトリ制御部９は、キャッシュメモリ３−１〜３−ｍ上の値と主記憶メモリ７上の値とが同じシェア状態の場合にはキャッシュメモリ３−１〜３−ｍへの登録状況を複数のサブラインで構成されるキャッシュライン単位でディレクトリメモリ８に記憶するようになっている。
また、ディレクトリ制御部９は、プロセッサ２−１〜２−ｍによりキャッシュメモリ３−１〜３−ｍ上の値が書き換えられた場合には主記憶メモリ７上の値を更新せず、またキャッシュメモリ３−１〜３−ｍ上の値が最新値であり主記憶メモリ７上の値が旧値であるダーティ状態の場合にはキャッシュメモリ３−１〜３−ｍの状態及び最新値の保持先をサブライン単位にディレクトリメモリ８に記憶するように制御するものである。
【００６８】
なお、上述の主記憶メモリ７，ディレクトリメモリ８及びディレクトリ制御部９により、メモリ部１０が構成されるようになっている。
さらに、ディレクトリ制御部９は、格納されているデータが最新値でないキャッシュメモリ８に対して発行される書き込みアクセス、又はあるキャッシュメモリ３−ｉに対するキャッシュオフアクセスのアクセスアドレスを含むキャッシュラインが、複数のプロセッサにシェア状態で存在する場合において、ディレクトリメモリ８に記憶されたすべての参照先に対して、キャッシュラインの無効化指令を、キャッシュライン単位に発行する無効化指令発行部９ａをそなえている。
【００６９】
また、キャッシュメモリ３−１〜３−ｍにおいて、アクセスアドレスを含むキャッシュラインを構成するサブラインのうち、アクセス対象外のサブラインが上記ダーティ状態であった場合、無効化指令発行部９ａからの無効化指令に対する応答時に無効化の不成立応答を返送する不成立応答返送部をキャッシュ制御部４−１〜４−ｍにそなえることもできる。
【００７０】
さらに、ディレクトリ制御部９を、無効化指令発行部９ａから発行される無効化指令に、キャッシュライン単位の無効化からサブライン単位の無効化に切り替えるための識別情報を付するように構成することもできる。
上述の図１に示すマルチプロセッサ装置１２では、キャッシュメモリ３−１〜３−ｍ上の値と主記憶メモリ７上の値とが同じシェア状態の場合には、ディレクトリ制御部９により、キャッシュメモリ３−１〜３−ｍ上への登録状況を複数のサブラインで構成されるキャッシュライン単位でディレクトリメモリ８に記憶する一方、プロセッサ２−１〜２−ｍによりキャッシュメモリ３−１〜３−ｍ上の値が書き換えられた場合には主記憶メモリ７上の値を更新せず、またキャッシュメモリ３−１〜３−ｍ上の値が最新値であり主記憶メモリ７上の値が旧値であるダーティ状態の場合にはキャッシュメモリ３−１〜３−ｍの状態及び最新値の保持先をサブライン単位にディレクトリメモリ８に記憶する。
【００７１】
さらに、格納されているデータが最新値でないキャッシュメモリ３−１〜３−ｍに対して発行される書き込みアクセス、又はあるキャッシュメモリ３−ｉに対するキャッシュオフアクセスのアクセスアドレスを含むキャッシュラインが、プロセッサ２−ｉ以外の複数のプロセッサに上記シェア状態で存在する場合において、無効化指令発行部９ａにより、ディレクトリメモリ８に記憶されたすべての参照先に対して、該キャッシュラインの無効化指令を、キャッシュライン単位に発行する。
【００７２】
図２は本発明の原理ブロック図であり、この図２において、１２Ａはマルチプロセッサ装置であり、このマルチプロセッサ装置１２Ａは、複数のプロセッサ群１Ａ−１〜１Ａ−ｎ（ｎ；２以上の自然数）が、第１バス６を介して相互に接続されることにより構成されている。
さて、この図２に示すマルチプロセッサ装置１２Ａは、前述の図１に示すものに比してプロセッサ群１Ａ−１〜１Ａ−ｎを構成するディレクトリ制御部９Ａの機能が異なるが、その他の構成については基本的に同様である。なお、図２中、図１と同一の符号は、同様の部分を示している。
【００７３】
また、図２中においても、プロセッサ群１Ａ−１〜１Ａ−ｎの詳細な構成としてプロセッサ群１Ａ−１のみに着目して示しており、プロセッサ群１Ａ−２〜１Ａ−ｎの詳細な構成についてはプロセッサ群１Ａ−１と基本的に同様であり、図示を省略している。また、主記憶メモリ７，ディレクトリメモリ８及びディレクトリ制御部９Ａにより、メモリ部１０Ａが構成されている。
【００７４】
また、ディレクトリ制御部９Ａは、前述の図１におけるもの（符号９参照）と同様に、プロセッサ２−１〜２−ｍによりキャッシュメモリ３−１〜３−ｍ上の値が書き換えられた場合には主記憶メモリ７上の値を更新せず、またキャッシュメモリ３−１〜３−ｍ上の値が最新値であり主記憶メモリ７上の値が旧値であるダーティ状態の場合にはキャッシュメモリ３−１〜３−ｍの状態及び最新値の保持先をサブライン単位にディレクトリメモリ８に記憶するように制御するものであり、エラー識別情報記憶部９ｂ及びアクセス禁止部９ｃをそなえている。
【００７５】
ここで、エラー識別情報記憶制御部９ｂは、主記憶メモリ７に格納されたデータについての読み出し処理の際に、主記憶メモリ７においてハードエラーが発生したことを検出すると、ディレクトリメモリ８上の対応するキャッシュラインに、当ハードエラー発生の識別情報を記憶するように制御するものである。
さらに、アクセス禁止部９ｃは、ディレクトリメモリ８上においてハードエラー発生の識別情報を有するキャッシュラインに対する、キャッシュメモリ３−１〜３−ｍへのアクセスを禁止するものである。
【００７６】
また、ディレクトリメモリ８に、ハードエラー発生の識別情報を記憶するための専用フィールドを設けるように構成することができるほか、ディレクトリメモリ８を、ハードエラー発生の識別情報として、正常時には発生しえない情報を記憶するように構成することもできる。
上述の図２に示すマルチプロセッサ装置１２Ａでは、主記憶メモリ７からの読み出し処理の際にハードエラーが生じた場合、ディレクトリメモリ８における、当当読み出しアドレスが含まれるキャッシュラインのディレクトリエントリにハードエラー発生の識別情報を保持しておき、当該識別情報を有するキャッシュラインには主記憶アクセスを生じさせないようにする。
【００７７】
さらに、図３は本発明に関連する第２関連発明の原理ブロック図であり、この図３において、１２Ｂはマルチプロセッサ装置であり、このマルチプロセッサ装置１２Ｂは、複数のプロセッサ群１Ｂ−１〜１Ｂ−ｎ（ｎ；２以上の自然数）が、第１バス６を介して相互に接続されることにより構成されている。
さて、この図３に示すマルチプロセッサ装置１２Ｂは、前述の図１に示すものに比してプロセッサ群１Ｂ−１〜１Ｂ−ｎを構成するプロセッサ２Ｂ−１〜２Ｂ−ｍ及びディレクトリ制御部９Ｂの機能が異なるが、その他の構成については基本的に同様である。なお、図３中、図１と同一の符号は、同様の部分を示している。
【００７８】
また、図３中においても、プロセッサ群１Ｂ−１〜１Ｂ−ｎの詳細な構成としてプロセッサ群１Ｂ−１のみに着目して示しており、プロセッサ群１Ｂ−２〜１Ｂ−ｎの詳細な構成についてはプロセッサ群１Ｂ−１と基本的に同様であり、図示を省略している。
また、上述のプロセッサ２Ｂ−１，キャッシュメモリ３−１及びキャッシュ制御部４−１により、プロセッサ部５Ｂ−１が構成されるようになっており、プロセッサ部５Ｂ−２〜５Ｂ−ｍについても同様に、プロセッサ２Ｂ−２〜２Ｂ−ｍ，キャッシュメモリ３−１〜３−ｍ及びキャッシュ制御部４−１〜４−ｍにより構成されている。
【００７９】
さらに、主記憶メモリ７，ディレクトリメモリ８及びディレクトリ制御部９Ｂにより、メモリ部１０Ｂが構成されている。
ところで、プロセッサ２Ｂ−１〜２Ｂ−ｍは、経過時間計時部２ａ及びタイムアウト時間再設定部２ｂをそなえており、ディレクトリ制御部９Ｂは、キャッシュアクセス発生情報返信部９ｃをそなえている。
【００８０】
ここで、ディレクトリ制御部９Ｂのキャッシュアクセス発生情報返信部９ｃは、プロセッサ２Ｂ−１〜２Ｂ−ｍからアクセスを受けた主記憶メモリ７において、キャッシュメモリ３−１〜３−ｍへのアクセスが発生した場合においては、その旨をアクセス元のプロセッサ２Ｂ−１〜２Ｂ−ｍに返信するものである。
また、プロセッサ２Ｂ−１〜２Ｂ−ｍの経過時間計時部２ａは、主記憶メモリ７に対してアクセス信号を送信してから応答信号を受信するまでの経過時間を計時し、計時された経過時間が予め設定された所定のタイムアウト時間を経過しても応答信号を受信しない場合には、タイムアウト信号として出力するものである。
【００８１】
さらに、タイムアウト時間再設定部２ｂは、キャッシュアクセス発生情報返信部９ｃからの通知を受けると、経過時間計時部２ａにおいて予め設定された上記タイムアウト時間を再設定するものである。
これにより、経過時間計時部２ａにおいては、タイムアウト時間再設定部２ｂにて再設定されたタイムアウト時間に基づいて、経過時間の計時を再計時するようになっている。
【００８２】
また、キャッシュメモリ３−１〜３−ｍへのアクセスが発生した旨をアクセス元のプロセッサ２Ｂ−１〜２Ｂ−ｍに返信する手法としては、キャッシュアクセス発生情報返信部９ｃが、キャッシュメモリ３−１〜３−ｍへのアクセスが発生した旨の専用コマンドをアクセス元のプロセッサ２Ｂ−１〜２Ｂ−ｍに返信したり、キャッシュアクセス発生情報返信部９ｃが、当該キャッシュメモリ３−１〜３−ｍに対するアクセスコマンドにアクセス元のプロセッサ２Ｂ−１〜２Ｂ−ｍの識別情報を付して、アクセスコマンドを上記のキャッシュメモリ３−１〜３−ｍとともにアクセス元のプロセッサ２Ｂ−１〜２Ｂ−ｍに対して送信してもよい。
【００８３】
上述の図３に示すマルチプロセッサ装置１２Ｂでは、プロセッサ２Ｂ−１〜２Ｂ−ｍの経過時間計時部２ａが、主記憶メモリ７に対してアクセス信号を送信してから応答信号を受信するまでの経過時間を計時し、計時された経過時間が予め設定された所定時間を経過しても応答信号を受信しない場合には、タイムアウト信号として出力する。
一方、プロセッサ２Ｂ−１〜２Ｂ−ｍからのアクセスを受けた主記憶メモリ７において、キャッシュメモリ３−１〜３−ｍへのアクセスが発生した場合においては、キャッシュアクセス発生情報返信部９ｃにおいてその旨をアクセス元のプロセッサ２Ｂ−１〜２Ｂ−ｍに通知する。
【００８４】
アクセス元のプロセッサ２Ｂ−１〜２Ｂ−ｍにおいて、キャッシュメモリ３−１〜３−ｍへのアクセスが発生した旨の通知を受けると、タイムアウト時間再設定部２ｂにおいて、タイムアウト信号を出力するための経過時間の計時を、キャッシュメモリ３−１〜３−ｍのアクセスに要するに十分な時間の応答待ちタイマ値に変更することにより、経過時間計時部２ａによる再計時を行なう。
【００８５】
ところで、図４は本発明に関連する第３関連発明の原理ブロック図であり、この図４において、１３はデータ転送システムであり、このデータ転送システム１３は、データ付きパケットを送信する送信装置１４と、送信装置１４とバス１５を介して接続され、送信装置１４から送信されたデータ付きパケットをバス１５を介して受信する受信装置１６とをそなえて構成されている。
【００８６】
ここで、送信装置１４は、複数の送信側コマンドキュー１７−１〜１７−ｎ，送信側データキュー１８−１〜１８−ｎ，キュー制御部１９，送信側セレクタ２０及び送信側セレクタ制御部２１をそなえて構成されている。
ここで、送信側コマンドキュー１７−１〜１７−ｎは、送信すべきデータ付きパケットを構成するコマンドを保持するものであり、送信側データキュー１８−１〜１８−ｎは、送信側コマンドキュー１７−１〜１７−ｎに対応して設けられ、データ付きパケットを構成するデータを保持するものであり、キュー制御部１９は、送信側コマンドキュー１７−１〜１７−ｎ及び送信側データキュー１８−１〜１８−ｎに対してコマンド又はデータを格納制御するものである。
【００８７】
さらに、送信側セレクタ２０は、送信側コマンドキュー１７−１〜１７−ｎからのコマンド又は送信側データキュー１８−１〜１８−ｎからのデータのうちのいずれかをバス１５へ選択的に出力するものである。
また、送信側セレクタ制御部２１は、キュー制御部１９の制御により送信側コマンドキュー１７−１〜１７−ｎにコマンドが格納されるとともに、送信側データキュー１８−１〜１８−ｎにコマンドに対応したデータが格納されると、送信側セレクタ２０において出力されるコマンドを選択するためのセレクト信号を、送信側セレクタ２０に対して出力するものである。
【００８８】
また、受信装置１６は、複数の受信側コマンドキュー２２−１〜２２−ｐ，受信側データキュー２３，チェック部２４，受信制御部２５，受信側セレクタ２６，受信側セレクタ制御部２７及びデータ送信要求コマンド送信部２８をそなえて構成されている。
ここで、受信側コマンドキュー２２−１〜２２−ｐは、バス１５を介して受信されたコマンドを保持するものであり、受信側データキュー２３は、バス１５を介して受信されたデータを保持するものである。
【００８９】
さらに、チェック部２４は、バス１５を介して受信されたコマンドをチェックするとともに、受信側コマンドキュー２２−１〜２２−ｐの状態をチェックするものであり、受信制御部２５は、チェック部２４からの受信側コマンドキュー２２−１〜２２−ｐの状態のチェック結果に基づいて、空き受信側コマンドキュー２２−ｊ（ｊ＝１〜ｕのうちの任意の自然数）に受信コマンドを格納するように制御するものである。
【００９０】
また、受信側セレクタ２６は、受信側コマンドキュー２２−１〜２２−ｐからのコマンドのうちのいずれかを選択的に出力するものであり、受信側セレクタ制御部２７は、受信側コマンドキュー２２−１〜２２−ｐに格納されたコマンドについての処理を行なう際に、受信側セレクタ２６にて出力されるコマンドを選択するためのセレクト信号を、受信側セレクタ２６に出力するものである。
【００９１】
さらに、データ送信要求コマンド送信部２８は、受信側セレクタ２６からのコマンドに対応したデータの送信を要求するものである。
これにより、送信側セレクタ制御部２１は、データ送信要求コマンド送信部２８から送信されたコマンドに基づいて、送信側データキュー１８−１〜１８−ｎに格納されているデータを選択して受信装置１６に送信すべく送信側セレクタ２０を制御するようになっている。
【００９２】
上述の図４に示すデータ転送システム１３では、送信装置１４において、データ付きパケットの送信要求が生じると、バスコマンド情報が定義されたパケットのみをバス１５を介して受信装置１６に転送する。
また、受信装置１６において、データ転送の送信要求コマンドパケットを受信すると、当該処理要求を処理待ちキューとしての受信側コマンドキュー２２−１〜２２−ｐに格納し、処理可能な状態になった時点で、送信装置１４に対してデータ要求コマンドパケットとしてのデータ送信要求コマンドを送信する。
【００９３】
送信装置１４では、受信装置１６からのデータ要求コマンドパケットの受信を契機として、一定時間後にバス獲得の動作なしに所望のデータパケットが転送される。その後、受信装置１６では、バス獲得状態のまま一定時間後に転送される送信装置１４からのデータパケットを受信し、データパケットの受信を完了すると、当該バス１５を解放する。
【発明の効果】
【００９４】
以上詳述したように、本発明に関連する第１関連発明によれば、無効化指令発行部により、格納されているデータが最新値でないキャッシュメモリに対して発行される書き込みアクセス、又はあるキャッシュメモリに対するキャッシュオフアクセスのアクセスアドレスを含むキャッシュラインが、プロセッサ以外の複数のプロセッサに上記シェア状態で存在する場合において、ディレクトリメモリに記憶されたすべての参照先に対して、キャッシュラインの無効化指令を、キャッシュライン単位に発行することができるので、シェア状態にある複数のキャッシュラインへの連続的な書き込みアクセス又はキャッシュオフアクセスの際に発生するキャッシュ無効化処理の回数を削減でき、装置の処理時間を短縮し、処理性能の向上させることができる利点があるほか、メモリシステム内の各バス及びキャッシュメモリ上でのアクセス競合回数を減少できることから、メモリシステム全体の性能向上を図ることができる利点もある。
【００９５】
また、第１関連発明によれば、無効化指令発行部から発行される無効化指令に、キャッシュライン単位の無効化からサブライン単位の無効化に切り替えるための識別情報を付することにより、アクセスの種類によりキャッシュの無効化方式を切り替えることができ、キャッシュメモリのヒット率の低下を防止することができる利点がある。
さらに、本発明によれば、エラー識別情報記憶制御部において、主記憶メモリに格納されたデータについての読み出し処理の際に、主記憶メモリにおいてハードエラーが発生したことを検出すると、ディレクトリメモリ上の対応するキャッシュラインに、当該ハードエラー発生の識別情報を記憶するように制御するとともに、アクセス禁止部において、ハードエラー発生の識別情報を有するキャッシュラインに対するアクセスを禁止することにより、障害を持った主記憶メモリへのアクセスが再度発生しないため、正常な主記憶メモリへのアクセス性能の劣化を抑えることができる利点がある。
【００９６】
また、本発明によれば、エラー識別情報記憶制御部により、障害検出時にディレクトリメモリ上のディレクトリエントリに障害発生情報を記録することで、主記憶メモリの読み出し時にエラーが発生したキャッシュラインに対して再度アクセスが発生した場合は、主記憶メモリの読み出し前にエラー応答を返送できることから、エラー返送までの処理時間を短縮することができるほか、ディレクトリメモリ上のディレクトリエントリの状態の更新及びキャッシュメモリへの登録キャンセル処理の必要がなくなり、装置の処理が簡便なものとなる。
【００９７】
さらに、本発明によれば、主記憶メモリのハードエラー発生後のアクセスに対するキャッシュコヒーレンシを保つ必要がないため、ディレクトリの初期状態を保持するための記憶素子も不要となり、装置構成を簡素化することができる利点がある。
また、本発明の第２関連発明によれば、キャッシュアクセス発生情報返信部により、アクセスを受けた主記憶メモリにおいて、キャッシュメモリへのアクセスが発生した場合においては、その旨をアクセス元のプロセッサに通知し、アクセス元のプロセッサにおいて、キャッシュメモリへのアクセスが発生した旨の通知を受けると、タイムアウト時間再設定部により、経過時間計時部におけるタイムアウト信号を出力するための経過時間の計時をキャッシュメモリのアクセスに要するに十分な時間の応答待ちタイマ値に変更して、経過時間計時部において再計時を行なうことができるので、障害発生箇所の確実に特定することができ、ディレクトリ方式等を採用した分散共有メモリシステムにおける共有メモリ装置としての主記憶メモリをアクセスした際に発生し得る、種々のリモートキャッシュメモリ内でのアクセス干渉に関わりなく、故障箇所特定精度の高い時間監視が可能となり、ひいては障害発生時においても確実なリカバリを行なうことができる利点がある。
【００９８】
さらに、本発明の第３関連発明によれば、セレクタ制御部が、データ送信要求コマンド送信部から送信されたコマンドに基づいて、送信側データキューに格納されているデータを選択して受信装置に送信すべく送信側セレクタを制御することにより、バスにおけるデータ転送性能を犠牲にすることなく、データ受信上のバッファ容量を大きく削減することができ、ハードウェアコストを削減することができる。特に、バスの多重度が上がる程、又はバスバンドが広くなるほど、バッファ削減による装置全体のハードウェアコスト低減に寄与することができる。
【発明を実施するための最良の形態】
【００９９】
以下、図面を参照することにより、本発明の実施の形態について説明する。
なお、本発明は、以下の実施の形態に限定されるものではない。又、上述の本願発明の目的のほか、他の技術的課題，その技術的課題を解決する手段及び作用効果についても、以下の実施の形態による開示によって明らかとなる。
（Ａ）第１実施形態（本発明に関連する第１関連発明の実施形態）の説明
図５は本発明に関連する第１関連発明の実施形態としての第１実施形態にかかるマルチプロセッサ装置を示すブロック図であり、このマルチプロセッサ装置３０−１は、複数のプロセッサ群としてのプロセッサモジュール３１−１〜３１−ｎ（ｎ；２以上の整数）が第１バスとしてのシステムバス３２を介して互いに接続されている。
【０１００】
さらに、各々のプロセッサモジュール３１−１〜３１−ｎはいずれも、少なくとも一つ以上のプロセッサエレメント（プロセッサ部）３３をそなえるとともに、メモリモジュール（メモリ部）３４及びシステムバスインタフェースモジュール３５をそなえている。
なお、プロセッサモジュール３１−１〜３１−ｎにおけるプロセッサエレメント３３の数は、各プロセッサモジュール３１−１〜３１−ｎにおいて一つ以上の任意の値を設定することができる。
【０１０１】
また、プロセッサエレメント３３及びメモリモジュール３４は、第２バスとしてのキャッシュスヌープバス３６を介して接続され、メモリモジュール３４は内部バス３７を介してシステムバスインタフェースモジュール３５に接続されている。
即ち、メモリモジュール３４は各種データを記憶するものであって、プロセッサモジュール３１−１〜３１−ｎを構成するプロセッサエレメント３３のそれぞれにキャッシュスヌープバス３６を介して接続されることにより、プロセッサエレメント３３に共有されるようになっている。
【０１０２】
例えば、プロセッサモジュール３１−１のメモリモジュール３４はキャッシュスヌープバス３６を介してプロセッサモジュール３１−１内のプロセッサエレメント３３からアクセスされ、また、他のプロセッサモジュール（例えばプロセッサモジュール３１−２）内のプロセッサエレメント３３からもシステムバス３２及び内部バス３７を介してアクセスされるようになっている。
【０１０３】
ここで、キャッシュスヌープバス３６は、上述のプロセッサエレメント３３がメモリモジュール３４に対して要求を出してから応答を受け取るまでの間、他の装置に使用権を譲ることができるものであり、このキャッシュスヌープバス３６を介することにより複数の処理の同時信号を可能としている。
ここで、プロセッサエレメント３３は、プロセッサ３３ａ，キャッシュメモリ３３ｂ及びキャッシュ制御モジュール３３ｃをそなえて構成されるよういなっている。
【０１０４】
プロセッサ３３ａは、キャッシュメモリ３３ｂ又はメモリモジュール３４との間でデータの読み出し／書き込みアクセスを行なうことを通じて、所望の情報処理を行なうものであり、キャッシュメモリ３３ｂは、プロセッサ３３ａ毎に設けられ、プロセッサ３３ａとメモリモジュール３４との間で高速の読み出し／書き込みアクセスを行ないうるものである。
【０１０５】
ところで、このキャッシュメモリ３３ｂは、例えば２５６バイトにより構成されるキャッシュライン単位にデータが格納されるようになっており、このキャッシュラインはさらに４つのサブライン（６４バイト）により構成されるようになっている。
また、キャッシュ制御モジュール３３ｃは、プロセッサ３３ａとキャッシュメモリ３３ｂとの間のデータの読み出し／書き込みを例えばコピーバックモードで制御するものであり、キャッシュ制御部としての機能を有している。
【０１０６】
さらに、キャッシュ制御モジュール３３ｃはキャッシュメモリ３３ｂ上のデータのアドレスとそのエントリのキャッシュ状態を記録するためのタグを有しており、サブライン単位にキャッシュ状態を記録するようになっている。
ところで、メモリモジュール３４は、各プロセッサモジュール３１のそれぞれにキャッシュスヌープバス３６を介して共有され、各種データを記憶する主記憶メモリとしての主記憶素子３４ａをそなえるとともに、ディレクトリメモリ３４ｂ及びアクセス制御モジュール３４ｃをそなえて構成されている。
【０１０７】
ここで、ディレクトリメモリ３４ｂは、マルチプロセッサ装置３０−１をプロセッサエレメント３１−１〜３１−ｎにおける全てのキャッシュメモリ３３に対する、主記憶データの登録状況（参照情報）を記憶するものである。
具体的には、ディレクトリメモリ３４ｂとしては、キャッシュライン単位に例えば図６に示すようなフォーマットのディレクトリエントリを有して構成されている。
【０１０８】
即ち、ディレクトリメモリ３４ｂにおけるディレクトリエントリとしては、図６に示すように、キャッシュライン単位に１エントリが用意され、サブライン単位に、主記憶データのキャッシュへの登録情報を記録するようになっている。
即ち、この図６に示すディレクトリエントリのフォーマットとしては、シェア情報フィールド３４ｂ−１，ダーティ情報フィールド３４ｂ−２及び障害識別フィールド３４ｂ−３により構成されている。
【０１０９】
ここで、シェア情報フィールド３４ｂ−１は、シェア状態にあるサブラインの識別情報とその登録先を記録するフィールドであり、ダーティ情報フィールド３４ｂ−２は、ダーティ状態にあるサブラインの識別情報とその登録先を記録するフィールドであり、障害識別フィールド３４ｂ−３は、当該キャッシュラインのアドレスに相当する主記憶読み出し時に、訂正不可能な２ビット以上のエラー（以降マルチビットエラーと呼ぶ）が発生したことを示すフィールドである。
【０１１０】
ここで、上述のダーティ状態とは主記憶素子３４ａ上の値が最新値ではなく、あるプロセッサエレメント３３キャッシュメモリ３３ｂ上で書き換えられていることを示すものである。最新値を持ち得るのはメモリシステム内で一つのプロセッサエレメント３３のみであり、ディレクトリメモリ３４ｂではサブライン単位にダーティ状態の有無と最新値を有するプロセッサモジュール３１−１〜３１−ｎの識別情報を記録する。
【０１１１】
また、シェア状態とは主記憶素子３４ａの値が、あるプロセッサエレメント３３により参照され、主記憶素子３４ａ上とキャッシュメモリ３３ｂ上で同一値が共有されていることを示す。ディレクトリメモリ３４ｂではライン単位に、同一値を持つプロセッサモジュール３１−１〜３１−ｎの識別情報を記録する。
さらに、インバリッド状態とはキャッシュラインがダーティでもシェアでもない状態を示す。なお、ディレクトリメモリ３４ｂ上ではダーティ／シェアの双方の状態とも、プロセッサモジュール３１−１〜３１−ｎのみを識別し、個々のプロセッサエレメント３３までは識別しない。
【０１１２】
また、アクセス制御モジュール３４ｃは、キャッシュメモリ３３ｂ上の値と主記憶素子３４ａ上の値とに基づいて、キャッシュコヒーレンシ制御を行なうとともに、キャッシュメモリ３３に対する主記憶データの登録状況を上述のディレクトリメモリ３４ｂに記憶制御するものであり、ディレクトリ制御部としての機能を有している。
例えば、アクセス制御モジュール３４ｃは、キャッシュメモリ３３ｂ上の値と主記憶素子３４ａ上の値とが同じシェア状態の場合にはキャッシュメモリ３３ｂ上への登録状況を４つのサブラインで構成されるキャッシュライン単位でディレクトリメモリ３４ｂに記憶する一方、プロセッサ３３ａによりキャッシュメモリ３３ｂ上の値が書き換えられた場合には主記憶素子３４ａ上の値を更新せず、またキャッシュメモリ３３ｂ上の値が最新値であり主記憶素子３４ａ上の値が旧値であるダーティ状態の場合にはキャッシュメモリ３３ｂの状態及び最新値の保持先をサブライン単位にディレクトリメモリ３４ｂに記憶するように制御するようになっている。
【０１１３】
さらに、このアクセス制御モジュール３４ｃは、一つの書き込みアクセス又はキャッシュオフアクセスを行なう場合、該当するキャッシュメモリ３３ｂにおけるキャッシュライン単位にキャッシュ無効化指令を発行する無効化指令発行部３４ｃ−１をそなえている。
換言すれば、無効化指令発行部３４ｃ−１は、格納されているデータが最新値でないキャッシュメモリ３３ｂに対してあるプロセッサ３３ａから発行される書き込みアクセス、又はあるキャッシュメモリ３３ｂに対するキャッシュオフアクセスのアクセスアドレスを含むキャッシュラインが、前記プロセッサ３３ａ以外の複数のプロセッサ３３ａにシェア状態で存在する場合において、ディレクトリメモリ３４ｂに記憶されたすべての参照先としてのキャッシュ制御モジュール３３ｃに対して、キャッシュラインの無効化指令を、キャッシュライン単位に発行するようになっている。
【０１１４】
例えば図７に示すように、無効化指令発行部３４ｃ−１においては、無効化すべきキャッシュラインを構成する全てのサブライン（通し番号０〜３）に対してキャッシュ無効化コマンドを時分割に発行することにより、キャッシュ無効化コマンド４３を、アクセス対象外のサブライン状態にかかわらずキャッシュライン単位に発行するようになっている（図７の時点ｗ１〜時点ｗ５参照）。
【０１１５】
なお、キャッシュ無効化コマンドを受信したプロセッサエレメント３３内のキャッシュ制御モジュール３３ｃは、一定サイクル毎にキャシュスヌープバス３６上へのキャッシュ無効化の成否応答を返送するようになっている。
ところで、無効化指令発行部３４ｃ−１から無効化指令が発行される態様としては、詳細には以下に示す２つがある。
【０１１６】
・プロセッサエレメント３３内のキャッシュメモリ３３ｂにエントリを有していないアドレスへの書き込みアクセス、又はシェア状態の値を有しているアドレスへの書き込みアクセスで、このアドレスを含むキャシュラインが、他のプロセッサモジュール３１−１〜３１−ｎでシェアされている場合。この場合においては、シェア状態のキャッシュメモリ３３ｂを無効化（パージ）し、上述のプロセッサエレメント３３内のキャッシュメモリ３３ｂへの書き込み権を獲得したのち、ダーティ状態となる。
【０１１７】
・キャッシング空間へのキャッシュオフアクセスで、このアドレスを含むキャッシュラインが他のプロセッサモジュール３１−１〜３１−ｎでシェアされている場合。この場合においては、シェア状態のキャッシュメモリ３３ｂをパージし、インバリッド状態となる。
ところで、この無効化指令発行部３４ｃ−１から発行される無効化指令としては、アクセスコマンドの種類に応じて、上述のキャッシュライン単位に発行することができるほか、前述の図２２にて示したようなサブライン単位に発行するもできる。
【０１１８】
即ち、ディレクトリメモリ３４ｂにおいて、アクセスコマンドの種類に応じて発行すべき無効化指令の種類を登録するテーブルをそなえ、無効化指令発行部３４ｃ−１において無効化指令を発行する際には、上述のディレクトリメモリ３４ｂ上のテーブルを参照することにより、無効化コマンドに、キャッシュライン単位の無効化又はサブライン単位の無効化を行なうための識別情報を付するようになっている。
【０１１９】
具体的には、上述の無効化指令発行部３４ｃ−１において無効化コマンドに、キャッシュ無効化方式識別情報フィールドを設け、このフィールドに識別情報を付するようになっている。
これにより、この識別情報の付された無効化コマンドを受けたキャッシュ制御モジュール３３ｃにおいては、識別情報に基づいてキャッシュライン単位の無効化か又はサブライン単位の無効化を行なうことができる。
【０１２０】
さらに、キャッシュ制御モジュール３３ｃは、あるプロセッサ３３ａから発行されるアクセスアドレスを含むキャッシュラインを構成するサブラインのうち、アクセス対象外のサブラインがダーティ状態であった場合、無効化指令発行部３４ｃ−１にて発行された無効化指令に対する応答時に無効化の不成立応答を返送する不成立応答返送部３３ｃ−１をそなえている。
【０１２１】
また、システムバスインタフェースモジュール３５は、メモリモジュール３４とシステムバス３２との間をインタフェースするものである。
なお、上述のマルチプロセッサ装置３０−１においては、システムバス３２，キャッシュスヌープバス３６及び内部バス３７により階層バスが構成され、プロセッサモジュール３１−１〜３１−ｎの間をディレクトリ方式、プロセッサモジュール３１−１〜３１−ｎ内をスヌープ方式を用いることによりキャッシュコヒーレンシを保つシステムが構築されている。また、各バス３２，３６，３７は例えばスプッリットバスにより構成され、分散アービトレーションにより制御されるようになっている。
【０１２２】
上述の構成により、本発明に関連する第１関連発明の実施形態としての第１実施形態にかかるマルチプロセッサ装置３０−１におけるキャッシュメモリ３３ｂの無効化処理について、図７及び図８を用いて以下に説明する。
なお、以下の説明中においては、便宜上、主記憶素子３４ａへのアクセス元のプロセッサモジュール（Processor Module，ＰＭ）３１−１をローカルＰＭ、アクセスされる主記憶素子３４ａの所在するプロセッサモジュール３１−２をホームＰＭ、当該主記憶素子３４ａをキャッシングしているプロセッサモジュール３１−ｎをリモートＰＭと呼ぶ。
【０１２３】
また、この図８に示す例においては、ホームＰＭ３１−２がキャッシングされているプロセッサモジュール（リモートＰＭ）をプロセッサモジュール３１−ｎとした場合について説明しているが、キャッシュメモリ３３ｂの無効化指令が発行されるプロセッサエレメント３３が属するプロセッサモジュール３１−１〜３１−ｎであれば、当該複数のプロセッサモジュール３１−１〜３１−ｎがリモートＰＭとなる。
【０１２４】
まず、上述の書き込みアクセス又はキャッシュオフアクセスのいずれかのアクセスコマンド４０が、ローカルＰＭ３１−１からキャッシュスヌープバス３６上に発行される。このアクセスコマンド４０は内部バス３７及びシステムバス３２を経てホームＰＭ３１−２へ入力され、このアクセスコマンドは、さらに内部バス３７を経てホームＰＭ３１−２のメモリモジュール３４へ入力される。
【０１２５】
メモリモジュール３４のアクセス制御モジュール３４ｃでは、ディレクトリメモリ３４ｂ上における、入力されたコマンドのアクセスアドレスが含まれるキャッシュラインのディレクトリエントリを参照する。
ここで、アクセス制御モジュール３４ｃ（無効化指令発行部３４ｃ−１）では、参照したディレクトリエントリがシェア状態であれば、システムバスインタフェースモジュール３５に対して内部バス３７を介して、アクセスアドレスと共にパージコマンド４１をキャッシュライン単位で発行する。
【０１２６】
なお、上述のパージコマンド４１のコマンドフィールドには、シェア状態のキャッシュメモリ３３ｂを持ち無効化の対象となるプロセッサモジュール３１−１〜３１−ｎの識別情報（以降ブロードマップと呼ぶ）が含まれている。
また、無効化指令発行部３４ｃ−１では、上述のパージコマンド４１を発行する際に、ディレクトリメモリ３４ｂの内容に基づいて、アクセスコマンドに対応した無効化方式を示す識別情報を付して発行している（この場合においてはキャッシュライン単位の無効化を行なうための識別情報が付されている）。
【０１２７】
これにより、ローカルＰＭ３１−ｎにおいては、この識別情報に基づいて上述の図７に示すキャッシュライン単位の無効化か又は前述の図２２に示すサブライン単位の無効化のいずれかを行なうことができる。
システムバスインタフェースモジュール３５では、上述のブロードマップに従って、リモートＰＭ３１−ｎに対してへシステムバス３２を介してアクセスアドレスと共にパージコマンド（以降リモートパージコマンドと呼ぶ）４２をキャッシュライン単位に発行する。
【０１２８】
なお、上述のパージコマンド４１に付された識別情報については、リモートパージコマンド４２のフィールド中にも保持され、リモートＰＭ３１−ｎのメモリモジュール３４に伝えられる。リモートＰＭ３１−ｎのメモリモジュール３４はこの識別情報に基づいて、キャッシュスヌープバス３６上へ発行するキャッシュ無効化コマンドのコマンドシーケンス（キャッシュライン単位の無効化シーケンスか又はサブライン単位の無効化シーケンス）を切り替えることができる。
【０１２９】
ホームＰＭ３１−２からのリモートパージコマンドはリモートＰＭ３１−ｎのシステムバスインタフェースモジュール３５及び内部バス３７を経由して、メモリモジュール３４にて受信される。このリモートパージコマンドを受けたメモリモジュール３４のアクセス制御モジュール３４ｃ（無効化指令発行部３４ｃ−１）では、キャッシュスヌープバス３６上にキャッシュ無効化コマンド４３をキャッシュライン単位に発行する。
【０１３０】
例えば、上述のメモリモジュール３４においては、図７に示すように、無効化すべきキャッシュラインを構成する全てのサブライン（通し番号０〜３）に対してキャッシュ無効化コマンドを時分割に発行することにより、キャッシュ無効化コマンド４３をキャッシュライン単位に発行している（図７の時点ｗ１〜時点ｗ５参照）。
キャッシュ無効化コマンドを受信したプロセッサエレメント３３内のキャッシュ制御モジュール３３ｃは、このキャッシュ無効化コマンドに付加されたサブラインアドレスに対応したタグを参照し、参照されたタグがシェア状態ならばそのタグの値を無効化し、一定サイクル毎にキャシュスヌープバス３６上へのキャッシュ無効化の成功応答４４を返送する一方、タグがダーティ状態である場合は、不成立応答返送部３３ｃ−１により、一定サイクル後にキャッシュスヌープバス上にキャッシュ無効化の不成功応答４４（ダーティ状態が存在する旨の通知）を返送して、タグの値を保持する（図７の時点ｗ５〜時点ｗ９参照）。
【０１３１】
メモリモジュール３４のアクセス制御モジュール３４ｃでは、キャッシュ制御モジュール３３ｃからの成功／不成功応答４４を受けとると、受け取った成功／不成功応答を取りまとめて、システムバスインタフェースモジュール３５，内部バス３７及びシステムバス３２（図５参照）を介することによりリモートパージ応答４５を発行する。
ホームＰＭ３１−２のシステムバスインタフェースモジュール３５では、システムバス３２を介して上述のリモートパージ応答４５を受け取り、このリモートパージ応答を取りまとめて、メモリモジュール３４に対して内部バス３７を介することによりキャッシュラインの無効化の成否応答４６として返送する。
【０１３２】
パージの成否情報を受信したホームＰＭ３１−２のメモリモジュール３４は、成否情報に従ってディレクトリメモリ３４ｂ上のディレクトリエントリの値を更新する。即ち、パージが成功した場合はディレクトリエントリはインバリッド状態となる。その後、メモリモジュール３４ではアクセスコマンドに従った主記憶処理を実行して、ローカルＰＭ３１−１に対して、アクセス完了応答４７を返送する。
【０１３３】
このように、本発明に関連する第１関連発明の実施形態としての第１実施形態にかかるマルチプロセッサ装置によれば、無効化指令発行部３４ｃ−１により、格納されているデータが最新値でないキャッシュメモリ３３ｂに対して発行される書き込みアクセス、又はあるキャッシュメモリ３３ｂに対するキャッシュオフアクセスのアクセスアドレスを含むキャッシュラインが、プロセッサ以外の複数のプロセッサに上記シェア状態で存在する場合において、ディレクトリメモリ３４ｂに記憶されたすべての参照先に対して、キャッシュラインの無効化指令を、キャッシュライン単位に発行することができるので、シェア状態にある複数のキャッシュラインへの連続的な書き込みアクセス又はキャッシュオフアクセスの際に発生するキャッシュ無効化処理の回数を削減でき、装置の処理時間を短縮し、処理性能の向上させることができる利点があるほか、メモリシステム内の各バス３２，３６，３７及びキャッシュメモリ３３ｂ上でのアクセス競合回数を減少できることから、メモリシステム全体の性能向上を図ることができる利点もある。
【０１３４】
また、無効化指令発行部３４ｃ−１から発行される無効化指令に、キャッシュライン単位の無効化からサブライン単位の無効化に切り替えるための識別情報を付することにより、アクセスの種類によりキャッシュの無効化方式を切り替えることができ、キャッシュメモリ３３ｂのヒット率の低下を防止することができる利点がある。
（Ｂ）第２実施形態の説明
図９は本発明の一実施形態としての第２実施形態にかかるマルチプロセッサ装置を示すブロック図であり、この図９に示すマルチプロセッサ装置３０−２は、前述の第１実施形態におけるもの（符号３０−１参照）に比して、メモリモジュール３４にエラー識別情報記憶制御部３４ｃ−２及びアクセス禁止部３４ｃ−３をそなえている点が異なる。なお、図９中、図５と同一の符号は、同様の部分を示している。
【０１３５】
ここで、メモリモジュール３４のエラー識別情報記憶制御部３４ｃ−２は、主記憶素子３４ａに格納されたデータについての読み出し処理の際に、主記憶素子３４ａにおいてハードエラーが発生したことを検出すると、ディレクトリメモリ３４ｂ上の対応するキャッシュラインに、当該ハードエラー発生の識別情報を記憶するように制御するものである。
具体的には、上述のハードエラー発生の識別情報としては、例えば前述の図６に示すディレクトリエントリを構成する障害識別フィールド３４ｂ−３に記憶することができるようになっている。
【０１３６】
ここで、この障害識別フィールド３４ｂ−３は、ハードエラー発生の識別情報を記憶するための専用フィールドであって、キャッシュラインのアドレスに相当する主記憶素子３４ａの読み出し時に、訂正不可能な２ビット以上のエラー（マルチビットエラー）が発生したことを示すものである。
なお、ディレクトリメモリ３４ｂに記憶すべきハードエラー発生の識別情報としては、正常時には発生しえない情報を記憶するように構成することもできる。具体的には、前述の図６におけるシェア状態フィールド３４ｂ−１及びダーティ状態フィールド３４ｂ−２の双方に、キャッシュラインの状態をダーティ状態でありシェア状態である旨のビット記憶することが考えられる。
【０１３７】
即ち、一つのサブラインにおいてダーティ状態とシェア状態は排他であるため、ディレクトリエントリとして、キャッシュラインを構成するすべてのサブラインがダーティ状態であり且つシェア状態である旨を示す値にはなりえない。
エラー識別情報記憶制御部３４ｃ−２において、障害発生情報としてこのような状態値をディレクトリメモリ３４ｂに記録することで障害を識別することができるよになり、必要なディレクトリエントリのビット数を専用フィールドを設ける場合よりも削減させることができる。
【０１３８】
また、アクセス禁止部３４ｃ−３は、ディレクトリメモリ３４ｂ上のディレクトリエントリに、ハードエラー発生の識別情報を有する場合において、当該ディレクトリエントリに対応するキャッシュラインに対するアクセスを禁止するものである。
上述の構成により、本発明の一実施形態としての第２実施形態にかかるマルチプロセッサ装置３０−２の動作を、図１０に示すフローチャートを用いて以下に説明する。
【０１３９】
即ち、例えばプロセッサモジュール３１−１のプロセッサ３３ａからのリードアクセスがキャッシュミスヒットした場合、キャッシュ制御モジュール３３ｃではキャッシュスヌープバス３６を介してメモリモジュール３４に主記憶素子３４ａに記憶されているデータの読み出しアクセスを発行する（ステップＢ１）。
メモリモジュール３４のアクセス制御モジュール３４ｃでは、ディレクトリメモリ３４ｂ上の、アクセスアドレスが含まれるキャッシュラインのディレクトリエントリを参照する（ステップＢ２）。
【０１４０】
ここで、ディレクトリエントリを構成する障害識別フィールド３４ｂ−３に障害発生情報がセットされておらず、且つキャッシュメモリ３３ｂの状態がシェア状態又はインバリッド状態である場合には、アクセス制御モジュール３４ｃでは、主記憶素子３４ａのデータ読み出しを開始するとともにディレクトリメモリ３４ｂの状態を更新し、キャッシュスヌープバス３６上に読み出しデータを転送する（ステップＢ３のＮＯルートからステップＢ４，ステップＢ６，ステップＢ７）。
【０１４１】
また、ディレクトリエントリを構成する障害識別フィールド３４ｂ−３に障害発生情報がセットされておらず、且つキャッシュメモリ３３ｂの状態がダーティ状態である場合には、キャッシュコヒーレンス処理を施した後に（ステップＢ４，ステップＢ５）、主記憶素子３４ａの読み出しを開始すると共にディレクトリメモリ３４ｂの状態を更新し（ステップＢ６）、キャッシュスヌープバス３６上への読み出しデータの転送が開始される（ステップＢ７）。
【０１４２】
上述のごとく読み出しデータの転送が開始されると、キャッシュ制御モジュール３３ｃでは読み出しデータのキャッシュメモリ３３ｂへの登録を開始する（ステップＢ８）。
ここで、メモリモジュール３４において、読み出しデータにマルチビットエラーを検出すると、メモリモジュール３４ではキャッシュスヌープバス３６上への読み出しデータ転送を中止し（ステップＢ９のＹＥＳルートからステップＢ１１）、キャッシュ制御モジュール３３ｃに対して障害発生応答を返送する（ステップＢ１３）。
【０１４３】
キャッシュ制御モジュール３３ｃでは、キャッシュメモリ３３ｂへの登録を無効にするとともに（ステップＢ１２）、アクセス元のプロセッサ３３ａに対してアクセスエラー応答を返送する（ステップＢ１４）。
その後、アクセス制御モジュール３４ｃのエラー識別情報記憶制御部３４ｃ−２では、障害の発生したアクセスアドレスに該当するディレクトリエントリの障害識別フィールド３４ｂ−３に、障害発生情報をセットする（ステップＢ１５）。
【０１４４】
これにより、障害の発生したアドレスに対してアクセスが発生した場合においても、ディレクトリエントリの障害識別フィールド３４ｂ−３に障害発生情報がセットされているので、アクセス禁止部３４ｃ−３により、当該アクセスに対しては障害発生応答をアクセス元に即座に返送することにより、障害が発生しているアドレスへのアクセスを禁止している。
【０１４５】
即ち、上述のステップＢ２におけるディレクトリエントリを参照した際に、当該アクセスアドレスにおけるディレクトリエントリの障害識別フィールド３４ｂ−３に障害発生情報がセットされている場合、即ち、現在発生している主記憶素子３４ａへの読み出しアクセスにおけるアドレスが、以前の主記憶素子３４ａへのアクセスでマルチビットエラーが検出されているキャッシュラインである場合は、アクセス禁止部３４ｃ−３により、主記憶素子３４ａの読み出しは行なわずに、直ちに障害発生応答を返送する（ステップＢ３のＹＥＳルートからステップＢ１３）。
【０１４６】
その後、障害発生応答を受信したキャッシュ制御モジュール３３ｂでは、アクセス元のプロセッサ３３ａに対してアクセスエラー応答を返送する（ステップＢ１４）。
このように、本発明の一実施形態としての第２実施形態にかかるマルチプロセッサ装置３０−２によれば、エラー識別情報記憶制御部３４ｃ−２において、主記憶素子３４ａに格納されたデータについての読み出し処理の際に、主記憶素子３４ａにおいてハードエラーが発生したことを検出すると、ディレクトリメモリ３４ｂ上の対応するキャッシュラインに、当該ハードエラー発生の識別情報を記憶するように制御するとともに、アクセス禁止部３４ｃ−３において、ハードエラー発生の識別情報を有するキャッシュラインに対するアクセスを禁止することにより、障害を持った主記憶素子３４ａへのアクセスが再度発生しないため、正常な主記憶素子３４ａへのアクセス性能の劣化を抑えることができる利点がある。
【０１４７】
また、エラー識別情報記憶制御部３４ｃ−２により、障害検出時にディレクトリメモリ３４ｂ上のディレクトリエントリに障害発生情報を記録することで、主記憶素子３４ａの読み出し時にエラーが発生したキャッシュラインに対して再度アクセスが発生した場合は、主記憶素子３４ａの読み出し前にエラー応答を返送できることから、エラー返送までの処理時間を短縮することができるほか、ディレクトリメモリ３４ｂ上のディレクトリエントリの状態の更新及びキャッシュメモリ３３ｂへの登録キャンセル処理の必要がなくなり、装置の処理が簡便なものとなる。
【０１４８】
さらに、主記憶素子３４ａのハードエラー発生後のアクセスに対するキャッシュコヒーレンシを保つ必要がないため、ディレクトリの初期状態を保持するための記憶素子も不要となり、装置構成を簡素化することができる利点がある。
（Ｃ）第３実施形態（本発明に関連する第２関連発明の実施形態）の説明
図１１は本発明に関連する第２関連発明の実施形態としての第３実施形態にかかるマルチプロセッサ装置を示すブロック図であり、この図１１に示すマルチプロセッサ装置３０−３は、前述の第１実施形態におけるもの（符号３０−１参照）に比して、メモリモジュール３４にキャッシュアクセス発生情報返信部３４ｃ−４をそなえるとももに、プロセッサ３３ａにタイマ回路３３ａ−１をそなえている点が異なる。なお、図１１中、図５と同一の符号は、同様の部分を示している。
【０１４９】
ここで、タイマ回路３３ａ−１は、メモリモジュール３４に対してアクセス信号を送信してから応答信号を受信するまでの経過時間（応答待ち時間）を計時し、計時された経過時間が予め設定された所定のタイムアウト時間を経過しても応答信号を受信しない場合には、タイムアウト信号として出力するものであり、例えば図１２に示すような構成を有している。
【０１５０】
即ち、この図１２に示すタイマ回路３３ａ−１は、デコーダ（ＤＥＣ）５１，タイマシーケンサ（Ｔ−ＳＥＱ）５２，カウンタ（ＣＮＴ）５３及びパルス選択回路（ＭＰＸ）５４をそなえて構成されている。
ここで、デコーダ５１は、アクセス先からキャッシュスヌープバス３６又はシステムバス３２を介して入力されるバスコマンド情報としての応答信号についてデコードするものである。
【０１５１】
具体的には、デコーダ５１は、キャッシュスヌープバス３６を介して、メモリストア完了応答コマンドＳＴ−ＣＭＰを受信したり、後述のタイムアウト時間を変更するための情報を専用のＴＩＭＥコマンド又はリモートキャッシュコマンドＣ−ＰＧにおける専用のタイマ値変更フィールドで受信し、これらの受信信号についてのデコード情報を、それぞれ、st-cmp，time又はpg-with-timeとして出力するようになっている。
【０１５２】
また、タイマシーケンサ５２は、デコーダ５１からの応答信号に基づいて、カウンタ５４にて計時されるタイムアウト値を可変設定制御するとともに、カウンタ５３の状態を制御するものである。
ここで、カウンタ５３は、メモリモジュール３４に対してアクセス信号を送信してから応答信号を受信するまでの経過時間（応答待ち時間）を計時するものであり、応答待ち時間がタイマシーケンサ５２にて設定制御された所定のタイムアウト時間を経過した場合には、タイムアウト信号(timeout）をタイマシーケンサ５１に出力するようになっている。
【０１５３】
さらに、パルス選択回路５４は、タイマシーケンサ５２から入力される制御信号に基づいて、カウンタ５３にて計時されるタイムアウト値を、Ｔａ又はＴｂに可変設定するものであり、詳細には、ＮＯＴ回路５４ａ，ＡＮＤ回路５４ｂ，５４ｃ及びＯＲ回路５４ｄをそなえて構成されている。
ところで、上述のカウンタ５３にて計時されるタイムアウト値Ｔａとしては、Ｍ−ＳＴコマンドを発行してからＳＴ−ＣＭＰを受信するまでに要する最大時間よりも大きくなるように設定され、タイムアウト値Ｔｂは、Ｃ−ＰＧコマンドを発行してからＰＧ−ＣＭＰコマンドを受信するまでに要する最大時間よりも大きくなり、且つ、Ｔａ＜Ｔｂとなるように設定されるようになっている。
【０１５４】
ＡＮＤ回路５４ｂにおいてはタイムアウト値Ｔａを設定するためのパルス信号“ａ”とともにタイマシーケンサ５２からの制御信号の反転信号を入力される一方、ＡＮＤ回路５４ｃにおいてタイムアウト値Ｔｂを設定するためのパルス信号“ｂ”とともにタイマシーケンサ５２からの制御信号を入力されるようになっている。
これにより、パルス選択回路５４からの出力信号(pulse）となるＯＲ回路５４ｄからは、上述の制御信号が“Ｌ”レベル信号の場合にはパルス信号“ａ”が出力され、制御信号が“Ｈ”レベル信号の場合にはパルス信号“ｂ”が出力されるようになっている。
【０１５５】
換言すれば、タイマシーケンサ５２からの制御信号が“Ｌ”レベル信号の場合には、カウンタ５３においてはタイムアウト値をＴａと設定される一方、制御信号が“Ｈ”レベル信号の場合には、カウンタ５３においてはタイムアウト値をＴｂに設定されるようになっている。
上述のタイマシーケンサ５２の状態遷移としては、例えば図１３に示すようになる。即ち、初期状態においてはタイマ非動作の状態（カウンタ５３が動作しない状態）であって、カウンタ５３に対してクリア信号をアサートするようになっている（図１３のｉｄｌｅ状態）。
【０１５６】
このｉｄｌｅ状態において、例えばアクセス先のメモリモジュール３４に対してＭ−ＳＴコマンドを送信すると、タイマシーケンサ５２においてはカウンタ５３に対してイネーブル信号をアサートする。この時、タイマシーケンサ５２ではパルス選択回路５４に対してリモート信号はアサートしておらず、パルス信号“ａ”が選択される。これにより、タイムアウト値をＴａとしてタイマカウントが開始されるようになっている（図１３のｈｏｍｅ状態）。
【０１５７】
また、上述のｈｏｍｅ状態において、デコーダ５２からデコード信号st-cmp信号がアサートされると、元のｉｄｌｅ状態に遷移する一方、time信号，あるいはpg-with-time信号がアサートされると、カウンタ５３に対して、CLEAR 信号をアサートすることにより、カウンタ５３をクリアする。
その後、カウンタ５３に対してenable信号をアサートする。この時、タイマシーケンサ５２ではパルス選択回路５４に対してリモート信号をアサートしており、パルス信号“ｂ”が選択される。これにより、タイムアウト値Ｔｂでカウンタ５３による経過時間の計時が再開されるようになっている（図１３のｒｅｍｏｔｅ状態）。
【０１５８】
換言すれば、タイマ回路３３ａ−１では、タイムアウト値がＴａからＴｂに再設定されることにより、キャッシュ装置アクセスに要するに十分な時間のタイムアウト値で応答待ち時間を計時することができる。
なお、上述のｒｅｍｏｔｅ状態において、デコーダ５２からst-cmp信号がアサートされると、もとのｉｄｌｅ状態に遷移するようになっている。
【０１５９】
さらに、図１１に示すアクセス制御モジュール３４ｃにおけるキャッシュアクセス発生情報返信部３４ｃ−４は、プロセッサ３３ａからのアクセスを受けたメモリモジュール３４において、キャッシュコヒーレンシを維持するためのキャッシュメモリ３３ｂへのアクセスが発生した場合においては、その旨をアクセス元のプロセッサ３３ａに返信するものである。
【０１６０】
上述のキャッシュメモリ３３ｂへのアクセスが発生した旨をアクセス制御モジュール３４ｃからアクセス元のプロセッサ３３ａに返信する際には、その旨を示す専用コマンドtimeを返信するほか、そのキャッシュメモリ３３ｂに対するリモートキャッシュコマンドＣ−ＰＧに専用のタイマ値変更フィールドpg-with-timeを付することにより返信することができる。
【０１６１】
なお、このタイマ値変更フィールドpg-with-timeには、アクセス元のプロセッサの識別情報が付され、上述のＣ−ＰＧコマンドをキャッシュメモリ３３ｂとともにアクセス元のプロセッサ３３ａに対して送信するようになっており、これにより、キャッシュメモリ３３ｂへのアクセスが発生した旨をアクセス元のプロセッサ３３ａに返信することができる。
【０１６２】
また、キャッシュアクセス発生情報返信部３４ｃ−４においては、システムに応じたコマンドフォーマットの生成機構又はバスコマンドシーケンサを用意することにより、上述のタイマ値変更コマンドTIMEや、タイマ値変更指定フィールドpg-with-timeを具備したＣ−ＰＧコマンド等を生成することができる。
なお、図１４，図１６は上述のマルチプロセッサ装置３０−３におけるコマンドシーケンスを説明するためのブロック図であり、この図１４，図１６に示すマルチプロセッサ装置３０−３のプロセッサモジュール３１−１〜３１−ｎは、それぞれ、プロセッサ（ＣＰＵ）３３ａ，キャッシュ部（ＣＳ）３３Ａ，ディレクトリ部（ＤＩＲ）３４Ａ，主記憶メモリとしての主記憶素子（ＭＳ）３４ａ及びシステムバス制御機構としてのシステムバスインタフェースモジュール３５をそなえている（図１４，図１６に示すものにおいては、複数のプロセッサエレメント３３，キャッシュスヌープバス３６及び内部バス３７の図示を省略している）。
【０１６３】
ここで、キャッシュ部３３Ａは、前述の図１１におけるキャッシュメモリ３３ｂ及びキャッシュ制御モジュール３３ｃにより構成され、ディレクトリ部３４Ａは、ディレクトリメモリ３４ｂ及びアクセス制御モジュール３４ｃにより構成されるようになっている。
上述の構成により、本発明に関連する第２関連発明の実施形態としての第３実施形態にかかるマルチプロセッサ装置３０−３の動作を図１４〜図１７を用いて以下に説明する。
【０１６４】
なお、以下の説明中においては、便宜上、主記憶素子３４ａへのアクセス元のプロセッサモジュール３１−１をローカルＰＭ、アクセスされる主記憶素子３４ａの所在するプロセッサモジュール３１−２をホームＰＭ、当該主記憶素子３４ａをキャッシングしているプロセッサモジュール３１−ｎをリモートＰＭと呼ぶ。
まず、ホームＰＭ３１−２のキャッシュアクセス発生情報返信部３４ｃ−４において、キャッシュメモリ３３ｂへのアクセスが発生した旨を通知する際に、専用コマンドtimeを用いる場合には、図１４，図１５に示すように動作する。
【０１６５】
即ち、図１４に示すように、ローカルＰＭ３１−１のプロセッサ３３ａでは、ホームＰＭ３１−２に対して例えばメモリ番地「Ａ」への非キャッシュメモリストアコマンドＭ−ＳＴを発行する一方（図１４の丸付き数字「１」参照）、上述のコマンド発行と同時にタイマ回路３３ａ−１においてアクセスタイマ値Ｔａでタイマ計時を開始する（図１５の時点ｙ１参照）。
【０１６６】
上述のＭ−ＳＴコマンドを受信したホームＰＭ３１−２のアクセス制御モジュール３４ｃでは、ディレクトリメモリ３４ｂを参照することにより、メモリ番地「Ａ」がリモートＰＭ３１−ｎでキャッシングされていることを知ると、このリモートＰＭ３１−ｎに対してキャッシュパージコマンドＣ−ＰＧを発行する（図１４の丸付き数字「２」参照）。
また、上述のコマンド発行と同時に、ホームＰＭ３１−２においては、アクセスタイマ値Ｔ２（；Ｃ−ＰＧコマンドを発行してからＰＧ−ＣＭＰコマンドを受信するまでに要する最大時間）でタイマ計時を開始する。このとき、ホームＰＭ３１−２のディレクトリメモリ３４ｂはメモリ番地「Ａ」を含むライン単位にビジー状態となっている（図１５の時点ｙ３参照）。
【０１６７】
さらに、アクセス制御モジュール３４ｃのキャッシュアクセス発生情報返信部３４ｃ−４では、Ｃ−ＰＧコマンドの発行に相前後して、ローカルＰＭ３１−１のタイマ回路３３ａ−１におけるタイムアウト値Ｔａを変更する旨のタイマ値変更コマンドTIMEをローカルＰＭ３１−１に転送する（図１４の丸付き数字「２′」参照）。
ローカルＰＭ３１−１において、上述のタイマ値変更コマンドTIMEを受信すると、タイマ回路３３ａ−１におけるＭ−ＳＴコマンドのアクセスタイマ値を、ＴａからＴｂに変更し、タイマ計時を再開する（図１５の時点ｙ４参照）。
【０１６８】
Ｃ−ＰＧコマンドを受信すべきリモートＰＭ３１−ｎでは、上述のキャッシュパージコマンドＣ−ＰＧの送信に先行して、キャッシングされているメモリ番地「Ａ」に対して書き込みアクセスを開始しており、ホームＰＭ３１−２のディレクトリメモリ３４ｂを更新状態にすべくキャッシュ更新通知コマンドＭ−ＥＸを発行する（図１５のｙ２参照）。同時にアクセスタイマ値Ｔａでタイマ計時を開始する。
【０１６９】
また、リモートＰＭ３１−ｎにおけるプロセッサ３３ａのタイマ回路３３ａ−１においても、上述のＭ−ＥＸコマンドを送信すると同時に、アクセスタイマＴａでタイマ計時を開始している（図１５における時点ｙ２参照）。
リモートＰＭ３１−ｎでは、上述のＭ−ＥＸコマンドを送信した後に、ホームＰＭ３１−２からのＣ−ＰＧコマンドを受信するが、既に同一ラインのキャッシュ操作を実行しているため、パージ処理はリモートＰＭ３１−ｎ内で保留される(Pending）。
【０１７０】
Ｍ−ＥＸコマンドを受信したホームＰＭ３１−２のアクセス制御モジュール３４ｃでは、ディレクトリメモリ３４ｂを検索することにより、メモリ番地「Ａ」のラインがビジー状態であるため、その旨応答を返そうとするが、何らかの要因でアクセス元であるリモートＰＭ３１−ｎに届かなかったとする（Disappear)。
この場合においては、パージ処理はリモートＰＭ３１−ｎ内で保留されたままとなり、従って、リモートＰＭ３１−２ではＭ−ＳＴコマンドに対する応答も実行できない。また、Ｔａ＜Ｔ２＜Ｔｂの関係が成立するので、リモートＰＭ３１−ｎにおける、Ｍ−ＥＸコマンドに対するアクセスタイマが最も先にタイムアウトする（図１５の時点ｙ５参照）。
【０１７１】
Ｔａ時間経過の後のタイムアウト検出により、Ｍ−ＥＸコマンドに対する処理が異常終結する。これにより、リモートＰＭ３１−ｎ内で同一ラインのキャッシュ操作の実行のため保留されていたパージ処理が行なわれる。その後、パージ処理が完了すると、Ｃ−ＰＣコマンド発行元であるホームＰＭ３１−２に対してキャッシュパージ完了応答コマンドＰＧ−ＣＭＰを発行する（図１４の丸付き数字「３」，図１５の時点ｙ６参照）。
【０１７２】
ＰＧ−ＣＭＰコマンドを受信したホームＰＭ３１−２では、Ｍ−ＳＴコマンドで指定されたデータを、主記憶素子３４ｂのメモリ番地「Ａ」に書き込む。また、ディレクトリメモリ３４ｂの内容を、リモートＰＭ３１−ｎでの参照状態から非キャッシュ状態に変更する。
その後、Ｍ−ＳＴコマンドの発行元であるローカルＰＭ３１−１に対して、メモリストア完了応答コマンドＳＴ−ＣＭＰを発行する（図１４の丸付き数字「４」，図１５の時点ｙ７参照）。
【０１７３】
これにより、Ｍ−ＥＸコマンドのタイムアウトに関わらず、Ｍ−ＳＴメモリアクセスのためのコマンドシーケンスを正常に終了させることができる。
また、上述と同様の場合に、ホームＰＭ３１−２のキャッシュアクセス発生情報返信部３４ｃ−４においてキャッシュメモリ３３ｂへのアクセスが発生した旨を通知する際に、このキャッシュアクセスコマンドの専用フィールドを用いる場合には、図１６に示すように、当該キャッシュアクセスコマンドとしてのＣ−ＰＧコマンドにおける専用フィールドにおいてアクセス元のプロセッサ３３ａを指定する。
【０１７４】
このＣ−ＰＧコマンドはキャッシング先のキャッシュメモリ３３ｂとともにアクセス元のプロセッサ３３ａに転送される（図１６の丸付き数字「２」，図１７の時点ｙ１３参照）。専用フィールドに自身が指定されたＣ−ＰＧコマンドを受信したアクセス元のプロセッサ３３ａでは、キャッシュメモリのアクセスに要するに充分な時間の応答待ちタイマ値（タイムアウト値）Ｔｂに変更して、タイマ計時を再度開始する（図１７の時点ｙ１４参照）。
【０１７５】
その後、上述の図１４，図１５の場合と同様の信号シーケンスにより、Ｍ−ＥＸコマンドのタイムアウトに関わらず、Ｍ−ＳＴメモリアクセスのためのコマンドシーケンスを正常に終了させることができる（図１６の丸付き数字「１」〜「４」，図１７の時点ｙ１１〜時点ｙ１７参照）。
なお、上述の図１４又は図１６のいずれのシーケンスでホームＰＭ３１−２のキャッシュアクセス発生情報返信部３４ｃ−４においてキャッシュメモリ３３ｂへのアクセスが発生した旨を通知する場合においても、リモートＰＭ１０１−ｎにて検出されるＭ−ＥＸコマンドに対する処理は異常終結するが、この原因としては、リモートＰＭ１０１−ｎとホームＰＭ１０１−２との間の何らかの要因であることを特定することができる。
【０１７６】
このように、本発明に関連する第２関連発明の実施形態としての第３実施形態にかかるマルチプロセッサ装置によれば、キャッシュアクセス発生情報返信部３４ｃ−４により、アクセスを受けた主記憶素子３４ａにおいて、キャッシュメモリ３４ｂへのアクセスが発生した場合においては、その旨をアクセス元のプロセッサ３３ａに通知し、アクセス元のプロセッサ３３ａにおいて、キャッシュメモリ３３ｂへのアクセスが発生した旨の通知を受けると、タイマ回路３３ａ−１におけるタイムアウト信号を出力するための経過時間の計時を、キャッシュメモリ３３ｂのアクセスに要するに十分な時間の応答待ちタイマ値に変更して、再計時を行なうことができるので、障害発生箇所の確実に特定することができ、ディレクトリ方式等を採用した分散共有メモリシステムにおける共有メモリ装置としての主記憶素子３４ａをアクセスした際に発生し得る、種々のリモートキャッシュメモリ３３ｂ内でのアクセス干渉に関わりなく、故障箇所特定精度の高い時間監視が可能となり、ひいては障害発生時においても確実なリカバリを行なうことができる利点がある。
【０１７７】
なお、上述の本実施形態においては、タイマ回路３３ａ−１としてはプロセッサ内に設けられているが、プロセッサモジュール内のその他の箇所に設けても差し支えない。
（Ｄ）第４実施形態（本発明に関連する第３関連発明の実施形態）の説明
図１８は本発明に関連する第３関連発明の実施形態としての第４実施形態にかかるデータ転送システムを示すブロック図であり、この図１８に示すデータ転送システム６０は、上述のマルチプロセッサ装置３０−１〜３０−３におけるスプリットバスとしてのシステムバス３２，キャッシュスヌープバス３６又は内部バス３７に用いることができるものであり、送信装置６１，スプリットバス６２及び受信装置６３をそなえて構成されている。
【０１７８】
ここで、スプリットバス６２は、上述の送信装置６１と受信装置６２との間に介装され、送信装置６１と受信装置６２との間で例えばデータ付きパケット通信を行なうためのものであって、このデータ付きパケットの通信を行なう際に、送信装置６１が受信装置６２に対して要求を出してから応答を受け取るまでの間、他の装置にバスの使用権を譲り、複数の処理の同時進行（多重処理）を可能とするものであり、これにより、バスの高使用効率化を図ることができる。
【０１７９】
また、送信装置６１は、データ付きパケットをスプリットバス６２に送信するものであり、例えば前述のマルチプロセッサ装置３０−１〜３０−３のプロセッサ３３ａのごときＣＰＵや入出力装置（Ｉ／Ｏ装置）により構成されるようになっている。この場合においては、上述のデータ付きパケットを、例えばメモリ書き込みバスコマンド等により構成することができる。
【０１８０】
さらに、受信装置６３は、送信装置６１から送信されたデータ付きパケットをスプリットバス６２を介して受信するものであり、例えば前述のマルチプロセッサ装置３０−１〜３０−３のメモリモジュール３４のごときメモリ装置により構成されるようになっている。
なお、上述のＣＰＵとしての送信装置６１からのコマンド付きデータパケットとしては、前述の図２６におけるものと同様に、例えばメインメモリとしての受信装置６３に対するメモリ書き込みコマンドを含むデータ転送要求とすることができ、このメモリ書き込みコマンド等のコマンド付きデータパケットを構成するコマンドについても、前述の図２７に示すようなフォーマットにより構成されるようになっている。
【０１８１】
ここで、送信装置６１は、詳細には複数（例えば４つ）の送信側コマンドキュー（com1〜com4）６４−１〜６４−４，送信側データキュー(squeue1〜squeue4)６５−１〜６５−４，送信キュー制御部(send queue control)６６，バス制御部（bus control-1)６７，出力セレクタ(out selector)６８及びデコーダ６９をそなえて構成されている。
ここで、送信側コマンドキュー６４−１〜６４−４は、送信すべきデータ付きパケットを構成するコマンドを保持するものであり、送信側データキュー６５−１〜６５−４は、送信側コマンドキュー６４−１〜６４−４に対応して設けられ、データ付きパケットを構成するデータを保持するものであり、例えばフリップフロップ又はランダムアクセスメモリにより構成される。
【０１８２】
さらに、キュー制御部６６は、送信側コマンドキュー６４−１〜６４−４及び送信側データキュー６５−１〜６５−４に対してコマンド又はデータを格納制御するものであり、出力セレクタ６８は、送信側コマンドキュー６４−１〜６４−４からのコマンド又は送信側データキュー６５−１〜６５−４からのデータのうちのいずれかをスプリットバス６２へ選択的に出力するものである。
【０１８３】
換言すれば、キュー制御部６６は、送信装置６１の内部回路からデータ転送要求が発生すると、送信側コマンドキュー６４−１〜６４−４及び送信側データキュー６５−１〜６５−４のうちで空きを探し、空きの送信側コマンドキュー６４−１〜６４−４にコマンドを格納する一方、空きの送信側データキュー６５−１〜６５−４にデータを格納制御するようになっている。
【０１８４】
また、バス制御部６７は、キュー制御部６６の制御により送信側コマンドキュー６４−１〜６４−４及び送信側データキュー６５−１〜６５−４にコマンド及びコマンドに対応したデータが格納されると、出力セレクタ６８において出力されるコマンドを選択するためのセレクト信号を出力するものであり、送信側セレクタ制御部としての機能を有している。
【０１８５】
即ち、バス制御部６７では、キュー制御部６６の制御によりコマンド及びデータが空きキューに格納されてバス使用の準備ができると、送信側コマンドキュー６４−１〜６４−４に格納されている４つのバス要求から、適当なアルゴリズムで要求を選択するとともに、図示しないバス調停装置にバス使用権の獲得要求を出力した後に、バス使用権を得ると、出力セレクタ６８に対してセレクト信号を出力することにより、選択されたコマンドキューをデータキューに先行してスプリットバス６２に送出するようになっている。
【０１８６】
換言すれば、送信装置６１においては、内部にてデータ付きパケットの送信要求が生じると、バス制御部６７により、バス使用権を獲得して、転送操作コードと転送データサイズ等を含むバスコマンド情報が定義されたパケットのみを先行して受信装置６３に転送するようになっている。
なお、上述の図示しないバス調停装置によるバス使用権の獲得／放棄の制御を行なう際には、例えばスプリットバス６２を介して接続された装置間にバス使用／使用否を通知する専用信号線を設けることができる。
【０１８７】
さらに、デコーダ６９は、スプリットバス６２を介して受信装置６３から送信された信号についてデコードしてバス制御部６７に出力するものである。
ところで、受信装置６３は、詳細には複数（例えば４つ）の受信側コマンドキュー(cqueue1〜cqueue4)７０−１〜７０−４，コマンドデコーダ(dec）７１，バス制御部(bus control-2）７２，受信キュー制御部(receive queue control) ７３，メモリセレクタ(mem-selector)７４，エンコーダ（enc,encoder)７５，メモリ制御部(memory control)７７，データバッファ(dbuf1,dbuf2) ７８−１，７８−２，データセレクタ７９及びメモリ８０をそなえて構成されている。
【０１８８】
ここで、受信側コマンドキュー７０−１〜７０−４は、スプリットバス６２を介して受信されたコマンドを保持するものであり、データバッファ７８−１，７８−２は、スプリットバス６２を介して受信されたデータを保持するものであり、受信側データキューとしての機能を有している。
さらに、デコーダ７１は、スプリットバス６２を介して受信されたコマンドをチェックするとともに、受信側コマンドキュー７０−１〜７０−４の状態をチェックするものであり、チェック部としての機能を有している。
【０１８９】
また、バス制御部７２は、デコーダ７１からの受信側コマンドキュー７０−１〜７０−４の状態のチェック結果に基づいて、当該空き受信側コマンドキュー７０−１〜７０−４に受信コマンドを格納するように制御するものであり、受信制御部としての機能を有している。
さらに、メモリセレクタ７４は、受信側コマンドキュー７０−１〜７０−４からのコマンドのうちのいずれかを選択的にエンコーダ７５及びメモリ制御部７７対して出力するものであり、受信側セレクタとしての機能を有している。
【０１９０】
また、受信キュー制御部７３は、受信側コマンドキュー７０−１〜７０−４に格納されたコマンドについての処理を行なう際に、メモリセレクタ７４にて出力されるコマンドを選択するためのセレクト信号を出力するものであり、受信側セレクタ制御部としての機能を有している。
さらに、エンコーダ７５は、メモリセレクタ７４からのコマンドに対応したデータの送信を要求するデータ送信要求コマンドをスプリットバス６２を介して送信装置６１に送信するものであり、データ送信要求コマンド送信部としての機能を有している。
【０１９１】
なお、上述のエンコーダ７５から送信装置６１に送信されたデータ送信要求コマンドについては、送信装置６２側のデコーダ６９にてデコードされてバス制御部６７に出力されるようになっている。
これにより、バス制御部６７は、エンコーダ７５から送信されたコマンドに基づいて、送信側データキュー６５−１〜６５−４に格納されているデータを選択して受信装置６３に送信すべく出力セレクタ６８を制御するようになっている。
【０１９２】
換言すれば、バス制御部６７においては、受信装置６３からのデータ転送要求コマンドの受信したことを契機として、受信装置６３からのコマンド転送の際のバス使用権を獲得した状態のまま、所定時間後にこのデータ転送要求コマンドに対応するデータを受信装置６３に転送するようになっているのである。
さらに、メモリ制御部７７は、メモリセレクタ７４を介してコマンド情報を入力され、エンコーダ７５から送信されるデータ送信要求コマンドに対応するデーのメモリ８０への記憶制御を行なうものである。
【０１９３】
また、データバッファ７８−１，７８−２は、エンコーダ７５からデータ転送要求コマンドを送信した後の予め定められた（約束された）一定時間後に、送信装置６３からバス転送されたデータパケットを一旦格納しておくものである。即ち、この２つのデータバッファ７８−１，７８−２により、２種類のコマンドに対応したデータパケットを格納しておくことができる。
【０１９４】
なお、データバッファ７８−１，７８−２にて一旦格納されたデータパケットは、受信キュー制御部７３の制御に基づいて、データセレクタ７９を介してメモリ８０に書き込まれるようになっている。なお、スプリットバス６２の使用権の獲得状態は、上述のデータパケットのデータバッファ７８−１，７８−２においての受信が完了することにより解放されるようになっている。
【０１９５】
また、上述の受信側コマンド・キュー７０−１〜７０−４は、スプリットバス６２における多重度数分を設けられるようになっている一方、データバッファ７８−１，７８−２については、スプリットバス６２における多重度数分よりも少なく（２つのデータバッファ７８−１，７８−２）している。
上述の構成により、本発明に関連する第３関連発明の実施形態としての第４実施形態にかかるデータ転送システム６０では、送信装置６１において、データ付きパケットの送信要求が生じると、バスコマンド情報が定義されたパケットのみをスプリットバス６２を介して受信装置６３に転送して、受信装置６３においては、送信装置６１からのバスコマンド情報が定義されたパケットを受信すると、当該パケットを処理待ちキューとしての受信側コマンドキュー７０−１〜７０−４に格納し、処理可能な状態になった時点で、送信装置６１に対してデータ要求コマンドパケットを送信し、その後、送信装置６１においては、受信装置６１からのデータ要求コマンドパケットの受信を契機として、一定時間後にバス獲得の動作なしに所望のデータパケットを転送した後に、受信装置６３において、バス獲得状態のまま一定時間後に転送される送信装置６１からのデータパケットを受信し、データパケットの受信を完了すると、スプリットバス６２を解放する。
【０１９６】
具体的には、まず、送信装置６１の内部回路からデータ転送要求が発生すると、送信キュー制御部６６では、送信側コマンドキュー６４−１〜６４−４及び送信側データキュー６５−１〜６５−４のうちで空きを探し、空きの送信側コマンドキュー６４−１〜６４−４にコマンドを格納する一方、空きの送信側データキュー６５−１〜６５−４にデータを格納制御する。
【０１９７】
送信側コマンドキュー６４−１〜６４−４及び送信側データキュー６５−１〜６５−４にコマンド及びデータが格納されてバス使用の準備ができると、送信キュー制御部６６では、バス制御部６７にその旨を通知する。
バス制御部６７では、送信側コマンドキュー６４−１〜６４−４に格納されている４つのバス要求から、適当なアルゴリズムで要求を選択するとともに、図示しないバス調停装置に対してバス使用権獲得要求ｒｅｑを出力する（図１９の時点ｚ１〜時点ｚ３参照）。
【０１９８】
バス制御部６７では、バス使用権獲得要求を出力してから、図示しないバス調停装置からのバス使用権を獲得した旨の通知ｇｒｔを受けると（図１９の時点ｚ２〜時点ｚ３参照）、出力セレクタ６８に対してセレクト信号を出力することにより、この出力セレクタ６８を介して選択されたコマンドをスプリットバス６２に送出する。なお、上述のコマンド送出が完了した時点でバス使用権を放棄する（図１９の時点ｚ４〜時点ｚ６）。
【０１９９】
また、受信装置６３ではスプリットバス６２からのコマンドパケットを受信すると、コマンドデコーダ７１において、このコマンドパケットを構成する装置アドレス等をチェックする。
ここで、コマンドデコーダ７１では、受信されたコマンドパケットの装置アドレスが自身の受信装置６３宛のコマンドであり、かつ受信側コマンドキュー７０−１〜７０−４のいずれかが空いていると判断すると、バス制御部７２に対してその旨を通知する。バス制御部７２では、当該空きコマンドキュー７０−１〜７０−４に受信コマンドを格納するように制御する（図１９の時点ｚ４〜時点ｚ１６）。
【０２００】
なお、コマンドデコーダ７１において、受信されたコマンドが自装置宛でないものであると判定された場合には当該コマンドについては無視する。また、自装置宛のコマンドであっても受信側コマンドキュー７０−１〜７０−４に空きがない場合は、送信元の送信装置６１に対してその旨を通知する。
また、バス制御部７２では、送信装置６１からのコマンドパケットの受信動作が終了すると、受信キュー制御部７３に対して、受信側コマンドキュー７０−１〜７０−４に格納したコマンドのメモリアクセス制御を依頼する。
【０２０１】
受信キュー制御部７３では、４つある受信側コマンドキュー７０−１〜７０−４からメモリセレクタ７４を介して適当なアルゴリズムでメモリアクセス要求を選択し、メモリ制御部７７に対して実際のメモリアクセス指示を出力する。
さらに、メモリ制御部７７では、選択されたコマンドに対応したメモリアクセスの準備が可能であると判断されると、受信キュー制御部７３に対してその旨を通知し、受信キュー制御部７３では、メモリセレクタ７４に対してセレクト信号を出力することにより、当該コマンド情報をエンコーダ７５に出力するように制御する。
【０２０２】
即ち、メモリ制御部７７では、スプリットバス６２からのコマンド入力により、新たなメモリアクセス要求が発生すると、先行するメモリアクセスが無いか、あるいは２つのデータバッファ７８−１，７８−２が解放された場合に、メモリアクセスの準備が可能であると判断し、その旨を受信キュー制御部７３に対してその旨を通知する。
受信キュー制御部７３では、受信側コマンドキュー７０−１〜７０−４内に格納されている要求と、空きデータバッファ７８−１，７８−２とを対応付けて管理される。例えば、受信側コマンドキュー７０−１の内容が空きのデータバッファ７８−１と組み合わせられたとする。
【０２０３】
受信側コマンドキュー７０−１〜７０−４内に格納されている要求と、空きデータバッファ７８−１，７８−２とが対応付けられて、メモリアクセスの準備が可能となると、受信キュー制御部７３では、メモリセレクタ７４にセレクト信号を出力することにより、受信側コマンドキュー７０−１の内容から送信元の送信装置６１のアドレス，コマンドＩＤ等を取り出し、エンコーダ７５に出力する。
【０２０４】
このとき、受信キュー制御部７３からバス制御部７２に対して、コマンド送出の要求を出力し、このコマンド送出要求を受けたバス制御部７２では、上述のバス制御部６７の場合と同様にしてバス使用権を獲得する（バス使用権獲得要求ｒｅｑ及びバス使用権獲得通知ｇｒｔ，図１９の時点ｚ５〜時点ｚ７参照）。
エンコーダ７５では、上述のメモリセレクタ７４からの送信元の送信装置６１のアドレス，コマンドＩＤに基づいて、当該バスコマンドに対応するデータの転送を要求する旨のデータ要求コマンドパケットを生成する。このデータ要求コマンドパケットｄｒｅｑについては、上述のごとく獲得されたバス使用権を用いることにより、スプリットバス６２を介して送信装置６１に対して転送する（図１９の時点ｚ７〜時点ｚ８参照）。
【０２０５】
送信装置６１では、上述のデータ要求コマンドパケットｄｒｅｑを受信したことを契機として、予め設定された（約束された）一定時間後に、上述のデータ要求コマンドの転送の際に獲得したバス使用権に基づき、バス獲得の動作なしに連続するデータｄ１〜ｄ６を順次転送する（図１９の時点ｚ９〜時点ｚ１５参照）。
即ち、受信装置６３からのデータ要求コマンドを受信した送信装置６１では、デコーダ６９にて上述のデータ要求コマンドを構成する装置アドレス，コマンドＩＤ等をチェックする。
【０２０６】
ここで、受信されたデータ要求コマンドが、自身の送信装置６１宛のデータ要求コマンドである場合には、バス制御部６７において、このデータ要求コマンドにて要求されているデータｄ１〜ｄ６を、送信側データキュー６５−１〜６５−４のうちのいずれかから出力セレクタ６８を介して選択し、バス使用権獲得動作を行なわずに受信装置６３に対して送信する。
【０２０７】
なお、上述の送信装置６１からのデータ送出開始タイミングは、インプリメントにより適当なバスサイクルの時間として、送信装置６１／受信装置６３間で定めておく（約束しておく）。
また、受信装置６３では、要求したデータの転送が始まると、バス制御部７２により現在処理中であるデータバッファ（この場合はデータバッファ７８−１）に順次データを格納する（図１９における時点ｚ１０〜時点ｚ１６）。さらに、要求したワード数分のデータを受信し終わると、バス制御部７２によりバス使用権を解放する。
【０２０８】
なお、図１９中においては、受信装置６３側の受信側コマンドキュー７０−１及び受信側データキュー７８−１の状態を示している。即ち、この図１９に示すように、コマンドパケットを受信側コマンドキュー７０−１に格納した後データ待ちとなり（図１９における時点ｚ４〜ｚ１０参照）、データパケット受信開始から転送パケットを順次格納する（図１９における時点ｚ１０〜ｚ１６参照）。その後、全パケットを受信した時点で要求されたメモリアクセスの処理が開始される。
【０２０９】
その後、バス制御部７２では一連のデータ転送の完了が終了すると受信キュー制御部７３に対してその旨を通知し、これを受けた受信キュー制御部７３では、例えば受信側コマンドキュー７０−１内のコマンドに対応するデータがデータバッファ７８−１に用意できたと判断する。
この場合においては、先行するメモリアクセスが無ければ、メモリ制御部７７を制御することにより、実際のメモリアクセスを開始する一方、先行するメモリアクセスがあれば、そのメモリアクセスが完了してから実際のメモリアクセスを開始する。
【０２１０】
このように、本発明に関連する第３関連発明の実施形態としての第４実施形態にかかるデータ転送システムによれば、バス制御部６７が、エンコーダ７５から送信されたコマンドに基づいて、送信側データキュー６５−１〜６５−４に格納されているデータを選択して受信装置６３に送信すべく出力セレクタ６８を制御することにより、スプリットバス６２におけるデータ転送性能を犠牲にすることなく、データ受信上のバッファ容量を大きく削減することができ、装置のハードウェアコストを低減させることができる。特に、スプリットバス６２の多重度が上がる程、又はバスバンドが広くなるほど、バッファ削減による装置全体のハードウェアコストの低減に寄与することができる。
【０２１１】
なお、上述の本実施形態においては、スプリットバス６２を４多重とした場合について詳述しているが、これに限定されず、その他の多重度のシステムとしてもよい。
【図面の簡単な説明】
【０２１２】
【図１】本発明に関連する第１関連発明の原理ブロック図である。
【図２】本発明の原理ブロック図である。
【図３】本発明に関連する第２関連発明の原理ブロック図である。
【図４】本発明に関連する第３関連発明の原理ブロック図である。
【図５】本発明に関連する第１関連発明の実施形態としての第１実施形態にかかるマルチプロセッサ装置を示すブロック図である。
【図６】本発明に関連する第１関連発明の実施形態としての第１実施形態におけるディレクトリエントリのフォーマットを示す図である。
【図７】本発明に関連する第１関連発明の実施形態としての第１実施形態にかかるマルチプロセッサ装置の動作を説明するためのタイムチャートである。
【図８】本発明に関連する第１関連発明の実施形態としての第１実施形態にかかるマルチプロセッサ装置の動作を説明するための図である。
【図９】本発明の一実施形態としての第２実施形態にかかるマルチプロセッサ装置を示すブロック図である。
【図１０】本発明の一実施形態としての第２実施形態にかかるマルチプロセッサ装置の動作を説明するためのフローチャートである。
【図１１】本発明に関連する第２関連発明の実施形態としての第３実施形態にかかるマルチプロセッサ装置を示すブロック図である。
【図１２】本発明に関連する第２関連発明の実施形態としての第３実施形態にかかるマルチプロセッサ装置の要部を示すブロック図である。
【図１３】本発明に関連する第２関連発明の実施形態としての第３実施形態にかかるマルチプロセッサ装置の状態遷移を示す図である。
【図１４】本発明に関連する第２関連発明の実施形態としての第３実施形態にかかるマルチプロセッサ装置におけるコマンドシーケンスを説明するためのブロック図である。
【図１５】本発明に関連する第２関連発明の実施形態としての第３実施形態にかかるマルチプロセッサ装置の動作を説明するためのタイムチャートである。
【図１６】本発明に関連する第２関連発明の実施形態としての第３実施形態にかかるマルチプロセッサ装置の機能に着目したブロック図である。
【図１７】本発明に関連する第２関連発明の実施形態としての第３実施形態にかかるマルチプロセッサ装置の動作を説明するためのタイムチャートである。
【図１８】本発明に関連する第３関連発明の実施形態としての第４実施形態にかかるデータ転送システムを示すブロック図である。
【図１９】本発明に関連する第３関連発明の実施形態としての第４実施形態にかかるデータ転送システムの動作を説明するためのタイムチャートである。
【図２０】マルチプロセッサ装置を示すブロック図である。
【図２１】図２０に示すマルチプロセッサ装置の要部を示すブロック図である。
【図２２】図２０，図２１に示すマルチプロセッサ装置の動作を説明するためのタイムチャートである。
【図２３】図２０，図２１に示すマルチプロセッサ装置のメモリエラー処理を説明するためのフローチャートである。
【図２４】図２０，図２１に示すマルチプロセッサ装置の機能に着目したブロック図である。
【図２５】図２０，図２１に示すマルチプロセッサ装置のコマンドシーケンスを示す図である。
【図２６】データ転送システムを示すブロック図である。
【図２７】コマンド付きデータパケットを構成するコマンドのフォーマットにを示す図である。
【図２８】図２６に示すデータ転送システムの動作を説明するためのタイムチャートである。
【図２９】図２６に示すデータ転送システムの動作を説明するためのブロック図である。
【図３０】図２６に示すデータ転送システムの動作を説明するためのタイムチャートである。
【符号の説明】
【０２１３】
１−１〜１−ｎ，１Ａ−１〜１Ａ−ｎ，１Ｂ−１〜１Ｂ−ｎ  プロセッサ群
２−１〜２−ｎ，２Ｂ−１〜２Ｂ−ｎ  プロセッサ
２ａ  経過時間計時部
２ｂ  タイムアウト時間再設定部
３−１〜３−ｍ  キャッシュメモリ
４−１〜４−ｍ  キャッシュ制御部
５−１〜５−ｍ，５Ｂ−１〜５Ｂ−ｎ  プロセッサモジュール
６  第１バス
７  主記憶メモリ
８  ディレクトリメモリ
９，９Ａ，９Ｂ  ディレクトリ制御部
９ａ  無効化指令発行部
９ｂ  エラー識別情報記憶制御部
９ｃ  アクセス禁止部
１０，１０Ａ，１０Ｂ  メモリ部
１１  第２バス
１２，１２Ａ，１２Ｂ  マルチプロセッサ装置
１３  データ転送システム
１４  送信装置
１５  バス
１６  受信装置
１７−１〜１７−ｎ  送信側コマンドキュー
１８−１〜１８−ｎ  送信側データキュー
１９  キュー制御部
２０  送信側セレクタ
２１  送信側セレクタ制御部
２２−１〜２２−ｐ  受信側コマンドキュー
２３  受信側データキュー
２４  チェック部
２５  受信制御部
２６  受信側セレクタ
２７  受信側セレクタ制御部
２８  データ送信要求コマンド送信部
３０−１〜３０−３  マルチプロセッサ装置
３１−１〜３１−ｎ  プロセッサモジュール（プロセッサ群）
３２  システムバス（第１バス）
３３  プロセッサエレメント
３３ａ  プロセッサ
３３ａ−１  タイマ回路
３３ｂ  キャッシュメモリ
３３ｃ  キャッシュ制御モジュール（キャッシュ制御部）
３３ｃ−１  不成立応答返送部
３３Ａ  キャッシュ部
３４  メモリモジュール
３４ａ  主記憶素子（主記憶メモリ）
３４ｂ  ディレクトリメモリ
３４ｂ−１  シェア情報フィールド
３４ｂ−２  ダーティ情報フィールド
３４ｂ−３  障害識別フィールド
３４ｃ  アクセス制御モジュール（ディレクトリ制御部）
３４ｃ−１  無効化指令発行部
３４ｃ−２  エラー識別情報記憶制御部
３４ｃ−３  アクセス禁止部
３４ｃ−４  キャッシュアクセス発生情報返信部
３４Ａ  ディレクトリ部
３５  システムインタフェースモジュール
３６  キャッシュスヌープバス（第２バス）
３７  内部バス
５１  デコーダ
５２  タイマシーケンサ
５３  カウンタ
５４  パルス選択回路
５４ａ  ＮＯＴ回路
５４ｂ，５４ｃ  ＡＮＤ回路
５４ｄ  ＯＲ回路
６０  データ転送システム
６１  送信装置
６２  スプリットバス
６３  受信装置
６４−１〜６４−４  送信側コマンドキュー
６５−１〜６５−４  送信側データキュー
６６  送信キュー制御部（キュー制御部）
６７  バス制御部（セレクタ制御部）
６８  出力セレクタ（送信側セレクタ）
６９  デコーダ
７０−１〜７０−４  受信側コマンドキュー
７１  デコーダ（チェック部）
７２  バス制御部（受信制御部）
７３  受信キュー制御部（受信側セレクタ制御部）
７４  メモリセレクタ（受信側セレクタ）
７５  エンコーダ（データ送信要求コマンド送信部）
７７  メモリ制御部
７８−１〜７８−２  データバッファ（受信側データキュー）
７９  データセレクタ
８０  メモリ
１００  マルチプロセッサ装置
１０１−１〜１０１−ｎ  プロセッサモジュール
１０２  システムバス
１０３  プロセッサエレメント
１０３ａ  プロセッサ（ＣＰＵ）
１０３ｂ  キャッシュメモリ
１０３ｃ  キャッシュ制御モジュール
１０３Ａ  キャッシュ部
１０４  メモリモジュール
１０４ａ  主記憶素子
１０４ｂ  ディレクトリメモリ
１０４ｃ  アクセス制御モジュール
１０４Ａ  ディレクトリ部
１０５  システムバスインタフェースモジュール
１０６  キャッシュスヌープバス
１０７  内部バス
１０８  タイマ
２００  データ転送システム
２０１  スプリットバス
２１０  送信装置
２１１  送信キュー制御部
２１２  バス制御部
２１３−１〜２１３−４  送信コマンド／データ・キュー
２１４  出力セレクタ
２２１  デコーダ
２２２−１〜２２２−４  受信キュー
２２３  バス制御部
２２４  受信キュー制御部
２２５  メモリセレクタ
２２６  メモリ制御部
３００  メモリ書き込みコマンド
３０１  コマンドフィールド
３０２  コマンドＩＤフィールド
３０３  送信装置アドレスフィールド
３０４  相手装置アドレスフィールド
３０５  サイズフィールド
３０６  メモリアドレスフィールド
【図１】
0004452707.tif 000002
【図２】
0004452707.tif 000003
【図３】
0004452707.tif 000004
【図４】
0004452707.tif 000005
【図５】
0004452707.tif 000006
【図６】
0004452707.tif 000007
【図７】
0004452707.tif 000008
【図８】
0004452707.tif 000009
【図９】
0004452707.tif 000010
【図１０】
0004452707.tif 000011
【図１１】
0004452707.tif 000012
【図１２】
0004452707.tif 000013
【図１３】
0004452707.tif 000014
【図１４】
0004452707.tif 000015
【図１５】
0004452707.tif 000016
【図１６】
0004452707.tif 000017
【図１７】
0004452707.tif 000018
【図１８】
0004452707.tif 000019
【図１９】
0004452707.tif 000020
【図２０】
0004452707.tif 000021
【図２１】
0004452707.tif 000022
【図２２】
0004452707.tif 000023
【図２３】
0004452707.tif 000024
【図２４】
0004452707.tif 000025
【図２５】
0004452707.tif 000026
【図２６】
0004452707.tif 000027
【図２７】
0004452707.tif 000028
【図２８】
0004452707.tif 000029
【図２９】
0004452707.tif 000030
【図３０】
0004452707.tif 000031