JP2007048314A - データ転送システムにおける送信装置及び受信装置,データ転送システム並びにデータ転送システムのバス制御方法 - Google Patents
データ転送システムにおける送信装置及び受信装置,データ転送システム並びにデータ転送システムのバス制御方法 Download PDFInfo
- Publication number
- JP2007048314A JP2007048314A JP2006276569A JP2006276569A JP2007048314A JP 2007048314 A JP2007048314 A JP 2007048314A JP 2006276569 A JP2006276569 A JP 2006276569A JP 2006276569 A JP2006276569 A JP 2006276569A JP 2007048314 A JP2007048314 A JP 2007048314A
- Authority
- JP
- Japan
- Prior art keywords
- data
- command
- bus
- transmission
- cache
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
- Multi Processors (AREA)
Abstract
【課題】受信バッファとしての受信キューの容量を大きくすることなくバス使用効率を向上させる。
【解決手段】該送信装置が、複数の送信側コマンドキュー17と、複数の送信側データキュー18と、送信側コマンドキュー及び送信側データキューに対してコマンド又はデータを格納制御するキュー制御部19と、送信側コマンドキュー17からのコマンド又は送信側データキュー18からのデータのうちのいずれかをバスへ選択的に出力する送信側セレクタ20と、キュー制御部19の制御により送信側コマンドキュー17及び送信側データキュー18に該コマンド及び該コマンドに対応したデータが格納されると、送信側セレクタ20において出力されるコマンドを選択するためのセレクト信号を出力する送信側セレクタ制御部21と、をそなえる。
【選択図】図4
【解決手段】該送信装置が、複数の送信側コマンドキュー17と、複数の送信側データキュー18と、送信側コマンドキュー及び送信側データキューに対してコマンド又はデータを格納制御するキュー制御部19と、送信側コマンドキュー17からのコマンド又は送信側データキュー18からのデータのうちのいずれかをバスへ選択的に出力する送信側セレクタ20と、キュー制御部19の制御により送信側コマンドキュー17及び送信側データキュー18に該コマンド及び該コマンドに対応したデータが格納されると、送信側セレクタ20において出力されるコマンドを選択するためのセレクト信号を出力する送信側セレクタ制御部21と、をそなえる。
【選択図】図4
Description
本発明は、バスを介してデータを送受するデータ転送システム及びこのデータ転送システムの送信装置及び受信装置並びにデータ転送システムのバス制御方法に関する。
図20はマルチプロセッサ装置を示すブロック図であり、この図20に示すマルチプロセッサ装置100は、複数のプロセッサモジュール101−1〜101−n(n;2以上の整数)がシステムバス102を介して互いに接続されている。
さらに、各々のプロセッサモジュール101−1〜101−nはいずれも、例えば図21に示すように、少なくとも1つのプロセッサエレメント103をそなえるとともに、メモリモジュール104及びシステムバスインタフェースモジュール105をそなえている。
さらに、各々のプロセッサモジュール101−1〜101−nはいずれも、例えば図21に示すように、少なくとも1つのプロセッサエレメント103をそなえるとともに、メモリモジュール104及びシステムバスインタフェースモジュール105をそなえている。
また、プロセッサエレメント103及びメモリモジュール104は、キャッシュスヌープバス106を介して接続され、メモリモジュール104は内部バス107を介してシステムバスインタフェースモジュール105に接続されている。
ここで、プロセッサエレメント103は、プロセッサ103a,キャッシュメモリ103b及びキャッシュ制御モジュール103cをそなえて構成されるようになっている。
ここで、プロセッサエレメント103は、プロセッサ103a,キャッシュメモリ103b及びキャッシュ制御モジュール103cをそなえて構成されるようになっている。
プロセッサ103aは、キャッシュメモリ103b又はメモリモジュール104との間でデータの読み出し/書き込みアクセスを行なうことを通じて、所望の情報処理を行なうものであり、キャッシュメモリ103bは、プロセッサ103aに対応して設けられ、プロセッサ103aとメモリモジュール104との間で高速の読み出し/書き込みアクセスを行ないうるものである。
また、このプロセッサ103aは、メモリモジュール104に対してアクセス信号を送信してから応答信号を受信するまでの経過時間(応答待ち時間)を計時するタイマ108をそなえ、このタイマ108にて計時された経過時間が予め設定された所定のタイムアウト時間を経過しても応答信号を受信しない場合には、タイムアウト信号として出力するようになっている。
ところで、このキャッシュメモリ103bは、例えば256バイトにより構成されるキャッシュライン単位にデータが格納されるようになっており、このキャッシュラインはさらに4つのサブライン(64バイト)により構成されるようになっている。
また、キャッシュ制御モジュール103cは、プロセッサ103aとキャッシュメモリ103bとの間のデータの読み出し/書き込みをコピーバック方式で制御するものである。
また、キャッシュ制御モジュール103cは、プロセッサ103aとキャッシュメモリ103bとの間のデータの読み出し/書き込みをコピーバック方式で制御するものである。
さらに、メモリモジュール104は、各プロセッサモジュール101のそれぞれにキャッシュスヌープバス106を介して共有され、各種データを記憶する主記憶素子104aをそなえるとともに、ディレクトリメモリ104b及びアクセス制御モジュール104cをそなえて構成されている。
ここで、ディレクトリメモリ104bは、マルチプロセッサ装置100をプロセッサエレメント101−1〜101−nにおける全てのキャッシュメモリ103に対する、主記憶データの登録状況を記憶するものである。
ここで、ディレクトリメモリ104bは、マルチプロセッサ装置100をプロセッサエレメント101−1〜101−nにおける全てのキャッシュメモリ103に対する、主記憶データの登録状況を記憶するものである。
また、アクセス制御モジュール104cは、キャッシュメモリ103b上の値と主記憶素子104a上の値とに基づいて、キャッシュメモリ103に対する、主記憶データの登録状況を上述のディレクトリメモリ104bに記憶制御するものである。
例えば、アクセス制御モジュール104cは、キャッシュメモリ103b上の値と主記憶素子104a上の値とが同じシェア状態の場合にはキャッシュメモリ103b上への登録状況を4つのサブラインで構成されるキャッシュライン単位でディレクトリメモリ104bに記憶する一方、プロセッサ103aによりキャッシュメモリ103b上の値が書き換えられた場合には主記憶素子104a上の値を更新せず、またキャッシュメモリ103b上の値が最新値であり主記憶素子104a上の値が旧値であるダーティ状態の場合にはキャッシュメモリ103bの状態及び最新値の保持先をサブライン単位にディレクトリメモリ104bに記憶するように制御するようになっている。
例えば、アクセス制御モジュール104cは、キャッシュメモリ103b上の値と主記憶素子104a上の値とが同じシェア状態の場合にはキャッシュメモリ103b上への登録状況を4つのサブラインで構成されるキャッシュライン単位でディレクトリメモリ104bに記憶する一方、プロセッサ103aによりキャッシュメモリ103b上の値が書き換えられた場合には主記憶素子104a上の値を更新せず、またキャッシュメモリ103b上の値が最新値であり主記憶素子104a上の値が旧値であるダーティ状態の場合にはキャッシュメモリ103bの状態及び最新値の保持先をサブライン単位にディレクトリメモリ104bに記憶するように制御するようになっている。
さらに、このアクセス制御モジュール104cは、一つの書き込みアクセス又はキャッシュオフアクセスを行なう場合、該当するキャッシュメモリ103bにおけるキャッシュラインを構成するサブライン分のキャッシュ無効化指令を発行するようになっている。
また、システムバスインタフェースモジュール105は、メモリモジュール104とシステムバス102との間をインタフェースするものである。
また、システムバスインタフェースモジュール105は、メモリモジュール104とシステムバス102との間をインタフェースするものである。
なお、図24は上述のマルチプロセッサ装置100の機能に着目したブロック図であり、この図24に示すマルチプロセッサ装置100のプロセッサモジュール101−1〜101−nは、それぞれ、プロセッサ(CPU)103a,キャッシュ部(CS)103A,ディレクトリ部(DIR)104A,主記憶メモリとしての主記憶素子(MS)104c及びシステムバス制御機構としてのシステムバスインタフェースモジュール105をそなえている(図24に示すものにおいては、複数のプロセッサエレメント103,キャッシュスヌープバス106及び内部バス107の図示を省略している)。
ここで、キャッシュ部103Aは、前述の図21におけるキャッシュメモリ103b及びキャッシュ制御モジュール103cにより構成され、ディレクトリ部104Aは、ディレクトリメモリ104b及びアクセス制御モジュール104cにより構成されるようになっている。
このような構成により、上述の図20,図21に示すマルチプロセッサ装置100のメモリモジュール104では、一つの書き込みアクセス又はキャッシュオフアクセスを行なう場合において、当該キャッシュラインがシェア状態にある場合には、以下に示すようにキャッシュ無効化処理(パージ)を行なうようになっている。
このような構成により、上述の図20,図21に示すマルチプロセッサ装置100のメモリモジュール104では、一つの書き込みアクセス又はキャッシュオフアクセスを行なう場合において、当該キャッシュラインがシェア状態にある場合には、以下に示すようにキャッシュ無効化処理(パージ)を行なうようになっている。
即ち、主記憶モジュール104に対してのキャッシュメモリ103bの無効化を必要とする処理のアクセスアドレスを含むサブラインが通し番号0のサブラインであるとすると、アクセス制御モジュール104cでは、この通し番号0のサブラインが含まれるディレクトリエントリをディレクトリメモリ104bから参照する。
ここで、アクセス制御モジュール104cでは、当該キャッシュラインがシェア状態であるならばディレクトリメモリ104bに記憶されているすべての参照先のキャッシュメモリ103bに対して前記アクセスアドレスと共に無効化指令としてのキャッシュ無効化コマンドを発行する。
ここで、アクセス制御モジュール104cでは、当該キャッシュラインがシェア状態であるならばディレクトリメモリ104bに記憶されているすべての参照先のキャッシュメモリ103bに対して前記アクセスアドレスと共に無効化指令としてのキャッシュ無効化コマンドを発行する。
即ち、図22に示すように、例えば参照先のキャッシュメモリ103bにおけるキャッシュラインを構成する4つのサブライン(通し番号0〜3)のうち、通し番号0のサブラインに対してはキャッシュ無効化コマンドCIを送信する(時点t1〜t2参照)。換言すれば、アクセス制御モジュール104cから送信されるキャッシュ無効化コマンドCIは、参照先のキャッシュスヌープバス106上において通し番号0のサブラインに対してのみ発行される。
ところで、ディレクトリメモリ104b上でのシェア状態の管理、すなわち主記憶素子104aの値の参照先の記憶はキャッシュライン単位に行なわれているため、一つのサブラインに対するキャッシュ無効化の成否のみではディレクトリ記憶上のシェア状態を削除することはできないため、キャッシュスヌープバス106上に、キャッシュラインを構成する残りのサブライン(通し番号1〜3)に対してキャッシュの状態通知コマンドASKを発行する(時点t2〜t5参照)。
なお、このキャッシュ無効化コマンドCI及びキャッシュ状態通知コマンドASKを受信したキャッシュメモリ103bは、アクセス制御モジュール104cに対して一定サイクル後に無効化の成否を応答し(時点t5〜t6参照)、その後、キャッシュ状態通知コマンドASKに対するキャッシュ状態通知CSTとしての現在のキャッシュ状態を応答する(時点t6〜時点t9参照)。
なお、アクセス制御部104cにおいては、上述のキャッシュ状態通知コマンドCSTに基づいて、ディレクトリメモリ104b上のシェア状態をすべて削除するまで、上述のキャッシュラインを構成するサブラインに対して通し番号0のサブラインから順次キャッシュ無効化コマンドを発行する。
その後、アクセスモジュール104cでは、キャッシュ無効化が成立し、キャッシュラインを構成するすべてのサブラインにおいてシェア状態が存在しない場合に、ディレクトリメモリ104b上の参照先キャッシュメモリ103bの記憶を削除する。
その後、アクセスモジュール104cでは、キャッシュ無効化が成立し、キャッシュラインを構成するすべてのサブラインにおいてシェア状態が存在しない場合に、ディレクトリメモリ104b上の参照先キャッシュメモリ103bの記憶を削除する。
また、例えばプロセッサ103aからキャッシュメモリ103bに対するリードアクセスがキャッシュミスヒットした場合には、例えば図23のフローチャートに示すようなメモリエラー処理が行なわれる。
まず、プロセッサ103aからのリードアクセスがキャッシュミスヒットした場合、キャッシュ制御モジュール103cはキャッシュスヌープバス106を介して、メモリモジュール104に主記憶読み出しアクセスを発行する(ステップA1)。
まず、プロセッサ103aからのリードアクセスがキャッシュミスヒットした場合、キャッシュ制御モジュール103cはキャッシュスヌープバス106を介して、メモリモジュール104に主記憶読み出しアクセスを発行する(ステップA1)。
メモリモジュール104のアクセス制御モジュール104cでは、そのアクセスアドレスが含まれるキャッシュラインのディレクトリをディレクトリメモリ104bから参照する(ステップA2)。
ここで、キャッシュメモリ103bの状態がダーティであるならば、キャッシュコヒーレンス処理を施した後に(ステップA3,ステップA4)、主記憶素子104aの読み出しを開始すると共にディレクトリメモリ104bの状態を更新し(ステップA5)、キャッシュスヌープバス106上への読み出しデータの転送が開始される(ステップA6)。
ここで、キャッシュメモリ103bの状態がダーティであるならば、キャッシュコヒーレンス処理を施した後に(ステップA3,ステップA4)、主記憶素子104aの読み出しを開始すると共にディレクトリメモリ104bの状態を更新し(ステップA5)、キャッシュスヌープバス106上への読み出しデータの転送が開始される(ステップA6)。
また、キャッシュメモリ103bの状態がシェア又はインバリッド(キャッシュラインがダーティでもシェアでもない状態)であるならば、主記憶素子104aの読み出しを開始すると共にディレクトリメモリ104bの状態を更新し(ステップA3,ステップA5)、キャッシュスヌープバス106上に読み出しデータを転送が開始される(ステップA6)。
上述のごとくキャッシュスヌープバス106上に読み出しデータを転送が開始されると、キャッシュ制御モジュール103cは読み出しデータのキャッシュメモリ103bへの登録を開始する(ステップA7)。
ここで、読み出しデータにマルチビットエラーが検出されない場合には、読み出し処理は正常終了するが(ステップA8のNOルートからステップA9)。
ここで、読み出しデータにマルチビットエラーが検出されない場合には、読み出し処理は正常終了するが(ステップA8のNOルートからステップA9)。
また、読み出しデータにマルチビットエラーが検出されると、メモリモジュール104のアクセス制御モジュール104cでは、キャッシュスヌープバス106上への読み出しデータ転送を中止し(ステップA8のYESルートからステップA10)、キャッシュ制御モジュール103cに対して障害発生応答を返送する(ステップA12)。
さらに、キャッシュ制御モジュール103cでは、キャッシュスヌープバス106上への読み出しデータ転送を中止を受けて、キャッシュメモリ103bへの登録を無効にする一方(ステップA11)、アクセス制御モジュール104cからの障害発生応答を受けて、プロセッサ103aに対してアクセスエラー応答を返送する(ステップA13)。
さらに、キャッシュ制御モジュール103cでは、キャッシュスヌープバス106上への読み出しデータ転送を中止を受けて、キャッシュメモリ103bへの登録を無効にする一方(ステップA11)、アクセス制御モジュール104cからの障害発生応答を受けて、プロセッサ103aに対してアクセスエラー応答を返送する(ステップA13)。
その後、アクセス制御モジュール104cでは、ディレクトリメモリ104bにおける当該ディレクトリエントリの状態を、アクセス前の初期状態に書き戻す(ステップA14)。
さらに、プロセッサ103aからメモリモジュール104に対しての主記憶素子104aへのメモリアクセスは、例えば、図25に示すようなコマンドシーケンスにより行なわれる。この図25においては、プロセッサモジュール101−1のプロセッサ103aからプロセッサモジュール101−2の主記憶素子104aに対してメモリアクセスが行なわれた場合について示しているが、他のプロセッサモジュール間又はプロセッサモジュール内においてのメモリアクセスについても同様である。
さらに、プロセッサ103aからメモリモジュール104に対しての主記憶素子104aへのメモリアクセスは、例えば、図25に示すようなコマンドシーケンスにより行なわれる。この図25においては、プロセッサモジュール101−1のプロセッサ103aからプロセッサモジュール101−2の主記憶素子104aに対してメモリアクセスが行なわれた場合について示しているが、他のプロセッサモジュール間又はプロセッサモジュール内においてのメモリアクセスについても同様である。
なお、以下の説明中においては、便宜上、主記憶素子104aへのアクセス元のプロセッサモジュール(Processor Module,PM)101−1をローカルPM、アクセスされる主記憶素子104aの所在するプロセッサモジュール101−2をホームPM、当該主記憶素子104aをキャッシングしているプロセッサモジュール101−nをリモートPMと呼ぶ。
ここで、ローカルPM101−1があるメモリ番地「A」に非キャッシュストアしようとしているが、このメモリ番地「A」の実体はホームPM101−2にある一方、リモートPM101−nのキャッシュメモリ103bにて参照状態になっている。
この場合においては、まず、ローカルPM101−1はホームPM101−2のディレクトリ部104Aに対して非キャッシュメモリストアコマンドM−STを発行するとともに(図25の丸付き数字「1」参照)、タイマ108による経過時間の計時が開始される。
この場合においては、まず、ローカルPM101−1はホームPM101−2のディレクトリ部104Aに対して非キャッシュメモリストアコマンドM−STを発行するとともに(図25の丸付き数字「1」参照)、タイマ108による経過時間の計時が開始される。
続いて、M−STコマンドを受信したホームPM101−2のディレクトリ部104Aにおいては、アクセス制御モジュール104cによりディレクトリメモリ104bを検索する。
この場合においては、メモリ番地「A」はリモート101−nでキャッシングされているので、ディレクトリ部104のアクセス制御モジュール104cでは、リモートPM101−nのキャッシュ部103Aに対してキャッシュ無効化コマンド(キャッシュパージコマンド)C−PGを発行する(図25の丸付き数字「2」参照)。
この場合においては、メモリ番地「A」はリモート101−nでキャッシングされているので、ディレクトリ部104のアクセス制御モジュール104cでは、リモートPM101−nのキャッシュ部103Aに対してキャッシュ無効化コマンド(キャッシュパージコマンド)C−PGを発行する(図25の丸付き数字「2」参照)。
その後、キャッシュパージコマンドC−PGを受けたリモートPM101−nのキャッシュ部103Aにおいてはキャッシュパージ処理を行なった後に、C−PGコマンド発行元であるホームPM101−2に対して、キャッシュパージ完了応答コマンドPG−CMPを発行する(図25の丸付き数字「3」参照)。
PG−CMPコマンドを受信したホームPM101−2は、ローカルPM101−1からのM−STコマンドで指定されたデータを、主記憶素子104aのメモリ番地「A」に書き込む。
PG−CMPコマンドを受信したホームPM101−2は、ローカルPM101−1からのM−STコマンドで指定されたデータを、主記憶素子104aのメモリ番地「A」に書き込む。
また、ホームPM101−2におけるアクセス制御モジュール104cでは、ディレクトリメモリ104bの内容を、リモートPM101−nでの参照状態から非キャッシュ状態に変更した後に、M−STコマンドの発行元であるローカルPM101−1に対して、メモリストア完了応答コマンドST−CMPを発行する(図25の丸付き数字「4」参照)。
なお、ローカルPM101−1のプロセッサ103aにおいては、タイマ108にて計時されている経過時間がタイムアウト時間が経過しても、応答信号を受信しない場合には、アクセスタイムアウトを通知する。
ところで、上述のタイマ108における所定のタイムアウト時間Tは、上述のコマンドシーケンスにかかる時間に基づいて設定されるようになっている。
ところで、上述のタイマ108における所定のタイムアウト時間Tは、上述のコマンドシーケンスにかかる時間に基づいて設定されるようになっている。
具体的には、ローカルPM101−1のプロセッサ103aがM−STコマンドを発行してからST−CMPを受信するまでに要する最大時間をT1とし、C−PGコマンドを発行してからPG−CMPコマンドを受信するまでに要する最大時間をT2とすると、以下の式(1)に示すような条件を満たす単一時間Tがタイムアウト時間として設定されるようになっているのである。
T>T1+T2 ・・・式(1)
ところで、図26は上述のマルチプロセッサ装置100におけるシステムバス102,キャッシュスヌープバス106又は内部バス107として用いることができるスプリットバスを適用したデータ転送システムを示すブロック図であり、この図26に示すデータ転送システム200においては、送信装置210がスプリットバス201を介して受信装置220に接続されている。
ところで、図26は上述のマルチプロセッサ装置100におけるシステムバス102,キャッシュスヌープバス106又は内部バス107として用いることができるスプリットバスを適用したデータ転送システムを示すブロック図であり、この図26に示すデータ転送システム200においては、送信装置210がスプリットバス201を介して受信装置220に接続されている。
ここで、スプリットバス201は、送信装置210が受信装置220に対して要求を出してから応答を受け取るまでの間、他の装置にバスの使用権を譲り、複数の処理の同時信号を可能として、バスの高使用効率化を図ったものである。
さらに、送信装置210は例えば前述のマルチプロセッサ装置100のプロセッサ103aのごときCPUや入出力装置(I/O装置)により構成され、送信キュー制御部(send queue control)211,バス制御部(bus control-1)212及び出力セレクタ(out selector)214をそなえるとともに、フリップフロップ(FF)やランダムアクセスメモリ(RAM)等により構成される4つの送信コマンド/データ・キュー(squeue1〜squeue4)213−1〜213−4により構成されている。
さらに、送信装置210は例えば前述のマルチプロセッサ装置100のプロセッサ103aのごときCPUや入出力装置(I/O装置)により構成され、送信キュー制御部(send queue control)211,バス制御部(bus control-1)212及び出力セレクタ(out selector)214をそなえるとともに、フリップフロップ(FF)やランダムアクセスメモリ(RAM)等により構成される4つの送信コマンド/データ・キュー(squeue1〜squeue4)213−1〜213−4により構成されている。
ここで、送信キュー制御部211は、送信装置210の内部から発生したデータ転送要求を受けて、送信コマンド/データ・キュー213−1〜213−4のうちの空きの送信コマンド/データ・キューに対して、該当するコマンド及びデータを格納するように制御するとともに、バス制御部212に対してバス使用を要求するものである。
さらに、バス制御部212は、送信キュー制御部211からのバス使用要求に基づいて、スプリットバス201の使用状態を制御する図示しないバス調停装置に対してバス使用権の獲得要求を出力するようになっている。
さらに、バス制御部212は、送信キュー制御部211からのバス使用要求に基づいて、スプリットバス201の使用状態を制御する図示しないバス調停装置に対してバス使用権の獲得要求を出力するようになっている。
また、このバス制御部212は、上述のバス使用権を獲得すると出力セレクタ215に対してセレクト信号を出力することにより、4つのコマンド/データ・キュー213−1〜213−4に格納されているコマンド/データパケット(データ付きバスコマンド)のうちのいずれかを選択するためのセレクト信号を出力するものである。
出力セレクタ214は、バス制御部212からのセレクト信号に基づいて、4つのコマンド/データ・キュー213−1〜213−4に格納されているコマンド/データパケットのうちのいずれかを所定のアルゴリズムで選択し、選択されたパケットを構成するコマンド及びデータを連続してスプリットバス201に送出するようになっている。
出力セレクタ214は、バス制御部212からのセレクト信号に基づいて、4つのコマンド/データ・キュー213−1〜213−4に格納されているコマンド/データパケットのうちのいずれかを所定のアルゴリズムで選択し、選択されたパケットを構成するコマンド及びデータを連続してスプリットバス201に送出するようになっている。
なお、上述のCPUとしての送信装置210からのコマンド付きデータパケットとしては、例えばメインメモリとしての受信装置220に対するメモリ書き込みコマンドを含むデータ転送要求とすることができ、このメモリ書き込みコマンド等のコマンド付きデータパケットを構成するコマンドは、例えば図27に示すようなフォーマットにより構成されるようになっている。
即ち、この図27に示すメモリ書き込みコマンド300は、コマンドフィールド(Command) 301,コマンドIDフィールド(Command-ID)302,送信装置アドレスフィールド(Source-Address)303,相手装置アドレスフィールド(Destination-Address)304,サイズフィールド(Size)305及びメモリアドレスフィールド(Mem-Address)306により構成されるようになっている。
ここで、コマンドフィールド301は、コマンドの操作コードを指定するものであり、コマンドIDフィールド302は、多重コマンドの識別を行なうための識別番号を指定するものであり、この図26に示す送信装置210においては多重度は「4」である。
さらに、送信装置アドレスフィールド303は送信装置アドレスを指定するものであり、相手装置アドレスフィールド304は、相手装置アドレスを指定するものであり、サイズフィールド305は、データ転送コマンドの際のデータサイズを指定するものであり、メモリアドレスフィールド306は、メモリアクセスのメモリ番地を指定するものである。
さらに、送信装置アドレスフィールド303は送信装置アドレスを指定するものであり、相手装置アドレスフィールド304は、相手装置アドレスを指定するものであり、サイズフィールド305は、データ転送コマンドの際のデータサイズを指定するものであり、メモリアドレスフィールド306は、メモリアクセスのメモリ番地を指定するものである。
また、受信装置220は例えば前述のマルチプロセッサ装置100におけるメモリモジュール104のごときメモリ装置により構成されるようになっており、コマンドデコーダ(dec)221,受信キュー(rqueue1〜4)222−1〜222−4,バス制御部(bus control-2)223,受信キュー制御部(rcev queue control)224,メモリセレクタ(mem-selector)225及びメモリ制御部(mem control)226をそなえている。
ここで、コマンドデコーダ221は、スプリットバス201を介して受信されたコマンドパケットについて、相手装置アドレスフィールド304における相手装置アドレスフィールドをチェックするとともに、受信キュー222−1〜222−4における空きキューをチェックするものである。
具体的には、コマンドデコーダ221は、自装置宛のコマンドであり、且つ受信キュー222−1〜222−4のいずれかが空いていると判断すると、バス制御部223にその旨を通知する一方、自装置宛でないコマンドに対しては無視し、また、受信キュー222−1〜222−4に空きがない場合は、送信装置210に対してその旨を通知するようになっている。
具体的には、コマンドデコーダ221は、自装置宛のコマンドであり、且つ受信キュー222−1〜222−4のいずれかが空いていると判断すると、バス制御部223にその旨を通知する一方、自装置宛でないコマンドに対しては無視し、また、受信キュー222−1〜222−4に空きがない場合は、送信装置210に対してその旨を通知するようになっている。
バス制御部223は、コマンドデコーダ221からの通知を受けて、受信キュー222−1〜222−4のうちの空きキューに受信されたコマンド及び後続のデータを格納するように制御する一方、空きキューへのコマンド及び後続のデータの格納動作が終了すると、受信キュー制御部224に対して、空きキューに格納されたコマンドのメモリアクセス制御を依頼するようになっている。
受信キュー制御部224は、バス制御部223からのメモリアクセス制御の依頼を受けて、受信キュー222−1〜222−4に格納されているメモリアクセスコマンドのうちのいずれかを選択するためのセレクト信号をメモリセレクタ225に対して出力するものである。
メモリセレクタ225は、受信キュー制御部224からのセレクト信号を入力されて、受信キュー222−1〜222−4に格納されているメモリアクセスコマンドのうちのいずれかを所定のアルゴリズムで選択してメモリ制御部226に出力するとともに、後続のデータは前述の図21に示す主記憶素子104aのごときメモリに出力されるようになっており、例えばFIFO(First In First Out)メモリ等により構成されるようになっている。
メモリセレクタ225は、受信キュー制御部224からのセレクト信号を入力されて、受信キュー222−1〜222−4に格納されているメモリアクセスコマンドのうちのいずれかを所定のアルゴリズムで選択してメモリ制御部226に出力するとともに、後続のデータは前述の図21に示す主記憶素子104aのごときメモリに出力されるようになっており、例えばFIFO(First In First Out)メモリ等により構成されるようになっている。
このような構成により、図26に示すデータ転送システム200では、送信装置210から受信装置220に対して、スプリットバス201を介することによりメモリ書き込みバスコマンドを含むデータ付きコマンドパケットを送信している。
このデータ付きパケットコマンドパケットを送信装置210から送信する際には、転送操作コードと転送データサイズ等を含むバスコマンド情報が定義されたパケットに続き、データパケットを一括して転送する。
このデータ付きパケットコマンドパケットを送信装置210から送信する際には、転送操作コードと転送データサイズ等を含むバスコマンド情報が定義されたパケットに続き、データパケットを一括して転送する。
具体的には、送信装置210の内部からデータ転送要求が発生すると、送信キュー制御部211で送信コマンド/データ・キュー213−1〜213−4のうちで、空きの送信コマンド/データ・キューを探し、4つのキューのうち、該当するキューにコマンド及びデータを格納する。
空きの送信コマンド/データ・キューにコマンド及びデータが格納されることによりバス使用の準備ができた時点で、送信キュー制御部211はバス制御部212に要求を渡す。バス制御部212では送信コマンド/データ・キュー213−1〜213−4に格納されている4つのバス要求から所定のアルゴリズムで要求を選択し、スプリットバス201の使用権を得るべく図示しないバス調停装置に要求reqを出す(図28における時点u1〜時点u3参照)。
空きの送信コマンド/データ・キューにコマンド及びデータが格納されることによりバス使用の準備ができた時点で、送信キュー制御部211はバス制御部212に要求を渡す。バス制御部212では送信コマンド/データ・キュー213−1〜213−4に格納されている4つのバス要求から所定のアルゴリズムで要求を選択し、スプリットバス201の使用権を得るべく図示しないバス調停装置に要求reqを出す(図28における時点u1〜時点u3参照)。
バス制御部212において、バス使用権調停装置からのバス使用許可信号grtを受けてスプリットバス201の使用権を獲得すると(図28における時点u2〜時点u3参照)、送信データ制御部212にて選択されたコマンド/データ・パケットを出力セレクタ214を介してスプリットバス201に連続して送出する(図28における時点u3〜時点u10参照)。
また、受信装置220では、スプリットバス201からコマンド/データ・パケットを構成する先頭のコマンドパケットを受信すると(図28における時点u3〜時点u4参照)、コマンドデコーダ221にて装置アドレス等をチェックする。
ここで、受信されたコマンドパケットが自装置宛のコマンドであり、且つ受信キュー222−1〜222−4のいずれかが空いているとコマンドデコーダ221において判断すると、バス制御部223にその旨通知し、当該空きの受信キューに受信コマンド及び後続のデータを格納する(図28における時点u4〜時点u11参照)。
ここで、受信されたコマンドパケットが自装置宛のコマンドであり、且つ受信キュー222−1〜222−4のいずれかが空いているとコマンドデコーダ221において判断すると、バス制御部223にその旨通知し、当該空きの受信キューに受信コマンド及び後続のデータを格納する(図28における時点u4〜時点u11参照)。
また、自装置宛でない受信コマンドについては無視し、受信キュー222−1〜222−4に空きがない場合には送信元の送信装置210に対してその旨を通知する。
バス制御部223ではバス受信動作が完了すると、受信キュー制御部224に対して、受信キュー222−1〜222−4に格納したコマンドのメモリアクセス制御を依頼する。
バス制御部223ではバス受信動作が完了すると、受信キュー制御部224に対して、受信キュー222−1〜222−4に格納したコマンドのメモリアクセス制御を依頼する。
受信キュー制御部224ではメモリセレクタ225に対してセレクト信号を出力することにより、4つの受信キュー222−1〜222−4に格納されているメモリアクセスコマンドを所定のアルゴリズムによりメモリセレクタ225を介して選択し、メモリ制御部226に実際のメモリアクセス指示する。これにより、メモリ制御部226では実際のメモリアクセスが実施される。
ところで、上述の図26に示すようなデータ転送システム200においては、データ転送速度の向上のため、バスの動作クロックサイクルを短縮したり、さらには64ビットや128ビットの広いバスバンドを採用する傾向にある。
また、このようなデータ転送システムにおけるデータ転送速度の向上のためにはスプリットバスにおけるバスの使用効率を高めることも必要となるが、このためには、バスコマンドやデータの受信バッファをできるだけ多く具備することが有効である。
また、このようなデータ転送システムにおけるデータ転送速度の向上のためにはスプリットバスにおけるバスの使用効率を高めることも必要となるが、このためには、バスコマンドやデータの受信バッファをできるだけ多く具備することが有効である。
しかしながら、前述の図20,図21に示すマルチプロセッサ装置100においては、ひとつのキャッシュラインに連続的な書き込みアクセス又はキャッシュオフアクセスを行なう場合、このキャッシュラインを構成するサブラインの複数が他のプロセッサによってシェア状態にあったとすると、このキャッシュラインに対する処理を完了するまでには、書き込み権の獲得又はキャッシュオフのために、このキャッシュライン構成するサブライン分のキャッシュ無効化指令が発行される。
即ち、アクセス制御モジュール104cにおいては、一つの書き込みアクセス又はキャッシュオフアクセスを行なう場合、図22に示すような、該当するキャッシュメモリ103bにおけるキャッシュ無効化指令を、キャッシュラインを構成するサブラインの数だけ発行する必要があるのである。
キャッシュメモリ103bの無効化指令はメモリシステムを構成する複数のバスを使用することから、バス使用権の獲得及び無効化指令の処理がアクセス毎に必要となるため、処理時間が長くなるという課題がある。
キャッシュメモリ103bの無効化指令はメモリシステムを構成する複数のバスを使用することから、バス使用権の獲得及び無効化指令の処理がアクセス毎に必要となるため、処理時間が長くなるという課題がある。
また、前述の図20,図21に示すマルチプロセッサ装置100において、主記憶素子104aのメモリ空間を複数のプロセッサ103aで共有しているため、あるプロセッサのアクセスで主記憶素子104aのハードエラーを検出していたとしても、他のプロセッサがその主記憶素子104aが持つアドレス空間にアクセスすることがあり得る。
この場合においては、このような主記憶素子104aに対するアクセスのそれぞれに対して上述の図23に示すような処理を行なう必要があり、アクセス発行元のプロセッサに対してエラー応答が返送されるまでの処理サイクルが不必要に長くなるという課題がある。
この場合においては、このような主記憶素子104aに対するアクセスのそれぞれに対して上述の図23に示すような処理を行なう必要があり、アクセス発行元のプロセッサに対してエラー応答が返送されるまでの処理サイクルが不必要に長くなるという課題がある。
特に、比較的応答サイクルの長い主記憶素子104aへのアクセスが必ず発生することは、メモリモジュール104内でのアクセス競合を発生させるため、正常な主記憶素子104aへのアクセス性能も劣化させるという課題もある。
また、エラー発生後も主記憶素子104a及びキャッシュメモリ103b間でのキャッシュコヒーレンシを保つ必要がある場合、ディレクトリメモリ104bの状態書き込み及びキャッシュメモリ103bへの読み出しデータの登録を、エラー発生時点でキャンセルし初期状態に戻す必要がある。従って、処理が複雑化するとともに、アクセス完了時点まで初期状態を保持するための記憶素子が新たに必要となる課題もある。
また、エラー発生後も主記憶素子104a及びキャッシュメモリ103b間でのキャッシュコヒーレンシを保つ必要がある場合、ディレクトリメモリ104bの状態書き込み及びキャッシュメモリ103bへの読み出しデータの登録を、エラー発生時点でキャンセルし初期状態に戻す必要がある。従って、処理が複雑化するとともに、アクセス完了時点まで初期状態を保持するための記憶素子が新たに必要となる課題もある。
さらに、前述の図20,図21に示すに示すマルチプロセッサ装置100においては、図25に示すように、ローカルPM101−1がホームPM101−2に対してメモリアクセスを行なう場合は、アクセス元のローカルPM101−1においてはタイマ108により単一時間での応答待ち時間を計時しているので、例えば図29に示すように、一つのメモリアクセスの応答待ち時間中に複数のコマンドエラーが同時に発生した場合には、障害発生箇所を正確に特定することが困難となる課題がある。
特に、フォールトトレラントシステム等の高信頼システムにおいては、障害発生時にも確実なリカバリが要求されるため、障害発生箇所の正確な特定は必要不可欠である。
即ち、この図29に示すように、ローカルPM101−1がホームPM101−2に対して、メモリ番地「A」への非キャッシュメモリストアコマンドM−STを発行すると(図29における丸付き数字「1」参照)、同時にタイマ108にてアクセスタイマ値(タイムアウト時間)をTとしてタイマ計時を開始する(図30における時点v1参照)。
即ち、この図29に示すように、ローカルPM101−1がホームPM101−2に対して、メモリ番地「A」への非キャッシュメモリストアコマンドM−STを発行すると(図29における丸付き数字「1」参照)、同時にタイマ108にてアクセスタイマ値(タイムアウト時間)をTとしてタイマ計時を開始する(図30における時点v1参照)。
ローカルPM101−1からのM−STコマンドを受信したホームPM101−2のアクセス制御モジュール104cではディレクトリメモリ104bを検索し、メモリ番地「A」がリモートPM101−nでキャッシングされていることを知り、リモートPM101−nに対してキャッシュパージコマンドC−PGを発行する(図29における丸付き数字「3」参照)。
なお、ホームPM101−2におけるプロセッサ103aのタイマ108では、キャッシュパージコマンドC−PGを送信すると同時に、アクセスタイマT2でタイマ計時を開始している(図30における時点v3参照)。さらに、同時にホームPM101−2のディレクトリメモリ104bはメモリ番地「A」を含むライン単位にビジー状態となる。
さらに、ホームPM101−2からのC−PGコマンドを受信すべきリモートPM101−nでは、上述のキャッシュパージコマンドC−PGの送信に先行して、キャッシングされているメモリ番地「A」に対して書き込みアクセスを開始しており、ホームPM101−2のディレクトリメモリ104bを更新状態にすべくアクセス制御モジュール104cに対してキャッシュ更新通知コマンドM−EXを発行している(図29における丸付き数字「2」参照)。
さらに、ホームPM101−2からのC−PGコマンドを受信すべきリモートPM101−nでは、上述のキャッシュパージコマンドC−PGの送信に先行して、キャッシングされているメモリ番地「A」に対して書き込みアクセスを開始しており、ホームPM101−2のディレクトリメモリ104bを更新状態にすべくアクセス制御モジュール104cに対してキャッシュ更新通知コマンドM−EXを発行している(図29における丸付き数字「2」参照)。
また、リモートPM101−nにおけるプロセッサ103aのタイマ108においても、上述のM−EXコマンドを送信すると同時に、アクセスタイマTでタイマ計時を開始している(図30における時点v2参照)。
リモートPM101−nでは、上述のM−EXコマンドを送信した後に、ホームPM101−2からのC−PGコマンドを受信するが、既に同一ラインのキャッシュ操作を実行しているため、パージ処理はリモートPM101−n内で保留される(Pending)。
リモートPM101−nでは、上述のM−EXコマンドを送信した後に、ホームPM101−2からのC−PGコマンドを受信するが、既に同一ラインのキャッシュ操作を実行しているため、パージ処理はリモートPM101−n内で保留される(Pending)。
M−EXコマンドを受信したホームPM101−2ではディレクトリメモリ104bを検索し、メモリ番地「A」のラインがビジー状態であるため、その旨応答を返そうとするが、何らかの要因でアクセス元であるリモートPM101−nに届かなかったとする(Disappear,図29における丸付き数字「4」参照)。
この場合においては、パージ処理はリモートPM101−n内で保留されたままとなり、従って、リモートPM101−2ではM−STコマンドに対する応答も実行できない。
この場合においては、パージ処理はリモートPM101−n内で保留されたままとなり、従って、リモートPM101−2ではM−STコマンドに対する応答も実行できない。
即ち、M−EXコマンドに対する応答が消失したため、この状態はリモートPM101−nのタイマ108にて計時されている応答待ち時間がタイムアウト(M−EXコマンドの送信からT時間経過)するまで続く。
ところで、ホームPM101−2におけるタイマ108において計時される、C−PGコマンドに対する応答待ち時間のアクセスタイマ値T2は、前述の式(1)からT>T2であるため、リモートPM101−nでのM−EXの応答待ちタイマ時間Tより先にタイムアウトする(図30における時点v4参照)。
ところで、ホームPM101−2におけるタイマ108において計時される、C−PGコマンドに対する応答待ち時間のアクセスタイマ値T2は、前述の式(1)からT>T2であるため、リモートPM101−nでのM−EXの応答待ちタイマ時間Tより先にタイムアウトする(図30における時点v4参照)。
タイムアウト検出したホームPM101−2では、C−PGコマンド発生の元となったローカルPM101−1からのM−STコマンドに対してその旨を応答し、M−STコマンドの処理を完了する(図30における時点v5参照)。
また、リモートPM101−nにおいては、M−EXコマンドのタイムアウトが検出されると(図30における時点v6参照)、リモートPM101−n内のアクセス元のプロセッサ103aに対してその旨を通知する。
また、リモートPM101−nにおいては、M−EXコマンドのタイムアウトが検出されると(図30における時点v6参照)、リモートPM101−n内のアクセス元のプロセッサ103aに対してその旨を通知する。
上述のリモートPM101−nにて検出されるM−EXコマンドのタイムアウトは、リモートPM101−nとホームPM101−2との間の何らかの要因であることを特定することができるが、ホームPM101−2にて検出されるC−PGコマンドのタイムアウトの原因は特定することができない。
即ち、このC−PGコマンドのタイムアウトは、ホームPM101−2とリモートPM101−nとの間に何ら問題が存在しないにもかかわらず、先のM−EXコマンドに対する応答がないことに起因して発生したものであるが、ホームPM101−2ではこれを原因として特定することができないのである。
即ち、このC−PGコマンドのタイムアウトは、ホームPM101−2とリモートPM101−nとの間に何ら問題が存在しないにもかかわらず、先のM−EXコマンドに対する応答がないことに起因して発生したものであるが、ホームPM101−2ではこれを原因として特定することができないのである。
また、上述したように、前述の図26に示すデータ転送システム200におけるデータ転送速度の向上のためにはスプリットバスにおけるバスの使用効率を高めることも必要となるが、このためには、バスコマンドやデータの受信バッファをできるだけ多く具備することが有効である。
しかしながら、このデータ転送システム200においては、受信バッファとしての受信キューの容量をバス使用効率の向上を図るために十分に大きくすることは困難であるため、満足すべき受信バッファ数を用意することができず、スプリットバスの利点を生かしきることができない課題がある。
しかしながら、このデータ転送システム200においては、受信バッファとしての受信キューの容量をバス使用効率の向上を図るために十分に大きくすることは困難であるため、満足すべき受信バッファ数を用意することができず、スプリットバスの利点を生かしきることができない課題がある。
本発明は、このような課題に鑑み創案されたもので、受信バッファとしての受信キューの容量を大きくすることなく、バス使用効率を向上させることができようにした、データ転送システムにおける送信装置と受信装置,データ転送システム及びそのバス制御方法を提供することを目的とする。
図1は本発明に関連する第1関連発明の原理ブロック図であり、この図1において、12はマルチプロセッサ装置であり、このマルチプロセッサ装置12は、複数のプロセッサ群1−1〜1−n(n;2以上の自然数)が、第1バス6を介して相互に接続されることにより構成されている。
なお、図1においては、以下に示すプロセッサ群1−1〜1−nの詳細な構成としてプロセッサ群1−1のみに着目して示しており、プロセッサ群1−2〜1−nの詳細な構成についてはプロセッサ群1−1と基本的に同様であり、図示を省略している。
なお、図1においては、以下に示すプロセッサ群1−1〜1−nの詳細な構成としてプロセッサ群1−1のみに着目して示しており、プロセッサ群1−2〜1−nの詳細な構成についてはプロセッサ群1−1と基本的に同様であり、図示を省略している。
ここで、プロセッサ群1−1〜1−nは、それぞれ、少なくとも一つ以上のプロセッサ2−1〜2−m(m;自然数)を有するとともに、主記憶メモリ7をそなえている。
また、主記憶メモリ7は、上記の各プロセッサ群を構成するプロセッサ2−1〜2−mのそれぞれに第2バス11を介して接続されることにより、プロセッサ2−1〜2−m(他のプロセッサ群1−2〜1−nにおけるプロセッサも含む)に共有され、各種データを記憶するものである。
また、主記憶メモリ7は、上記の各プロセッサ群を構成するプロセッサ2−1〜2−mのそれぞれに第2バス11を介して接続されることにより、プロセッサ2−1〜2−m(他のプロセッサ群1−2〜1−nにおけるプロセッサも含む)に共有され、各種データを記憶するものである。
さらに、3−1〜3−mはキャッシュメモリであり、このキャッシュメモリ3−1〜3−mは、プロセッサ2−1〜2−m毎に設けられ、主記憶メモリ7における各種データをキャッシュライン単位で記憶するものである。
また、キャッシュ制御部4−1〜4−mは、それぞれ、プロセッサ2−1〜2−mとキャッシュメモリ3−1〜3−mとの間のデータの読み出し/書き込みを制御するものである。
また、キャッシュ制御部4−1〜4−mは、それぞれ、プロセッサ2−1〜2−mとキャッシュメモリ3−1〜3−mとの間のデータの読み出し/書き込みを制御するものである。
なお、上述のプロセッサ2−1,キャッシュメモリ3−1及びキャッシュ制御部4−1により、プロセッサ部5−1が構成されるようになっており、同様に、プロセッサ部5−2〜5−mは、それぞれ、プロセッサ2−2〜2−m,キャッシュメモリ3−1〜3−m及びキャッシュ制御部4−1〜4−mにより構成されている。
また、8はディレクトリメモリであり、このディレクトリメモリ8は、主記憶メモリ7に格納されているデータのキャッシュメモリ3−1〜3−m(他のプロセッサ群1−2〜1−nにおけるキャッシュメモリも含む)毎への登録状態を記憶するものである。
また、8はディレクトリメモリであり、このディレクトリメモリ8は、主記憶メモリ7に格納されているデータのキャッシュメモリ3−1〜3−m(他のプロセッサ群1−2〜1−nにおけるキャッシュメモリも含む)毎への登録状態を記憶するものである。
さらに、9はディレクトリ制御部であり、このディレクトリ制御部9は、キャッシュメモリ3−1〜3−m上の値と主記憶メモリ7上の値とが同じシェア状態の場合にはキャッシュメモリ3−1〜3−mへの登録状況を複数のサブラインで構成されるキャッシュライン単位でディレクトリメモリ8に記憶するようになっている。
また、ディレクトリ制御部9は、プロセッサ2−1〜2−mによりキャッシュメモリ3−1〜3−m上の値が書き換えられた場合には主記憶メモリ7上の値を更新せず、またキャッシュメモリ3−1〜3−m上の値が最新値であり主記憶メモリ7上の値が旧値であるダーティ状態の場合にはキャッシュメモリ3−1〜3−mの状態及び最新値の保持先をサブライン単位にディレクトリメモリ8に記憶するように制御するものである。
また、ディレクトリ制御部9は、プロセッサ2−1〜2−mによりキャッシュメモリ3−1〜3−m上の値が書き換えられた場合には主記憶メモリ7上の値を更新せず、またキャッシュメモリ3−1〜3−m上の値が最新値であり主記憶メモリ7上の値が旧値であるダーティ状態の場合にはキャッシュメモリ3−1〜3−mの状態及び最新値の保持先をサブライン単位にディレクトリメモリ8に記憶するように制御するものである。
なお、上述の主記憶メモリ7,ディレクトリメモリ8及びディレクトリ制御部9により、メモリ部10が構成されるようになっている。
さらに、ディレクトリ制御部9は、格納されているデータが最新値でないキャッシュメモリ8に対して発行される書き込みアクセス、又はあるキャッシュメモリ3−iに対するキャッシュオフアクセスのアクセスアドレスを含むキャッシュラインが、複数のプロセッサにシェア状態で存在する場合において、ディレクトリメモリ8に記憶されたすべての参照先に対して、キャッシュラインの無効化指令を、キャッシュライン単位に発行する無効化指令発行部9aをそなえている。
さらに、ディレクトリ制御部9は、格納されているデータが最新値でないキャッシュメモリ8に対して発行される書き込みアクセス、又はあるキャッシュメモリ3−iに対するキャッシュオフアクセスのアクセスアドレスを含むキャッシュラインが、複数のプロセッサにシェア状態で存在する場合において、ディレクトリメモリ8に記憶されたすべての参照先に対して、キャッシュラインの無効化指令を、キャッシュライン単位に発行する無効化指令発行部9aをそなえている。
また、キャッシュメモリ3−1〜3−mにおいて、アクセスアドレスを含むキャッシュラインを構成するサブラインのうち、アクセス対象外のサブラインが上記ダーティ状態であった場合、無効化指令発行部9aからの無効化指令に対する応答時に無効化の不成立応答を返送する不成立応答返送部をキャッシュ制御部4−1〜4−mにそなえることもできる。
さらに、ディレクトリ制御部9を、無効化指令発行部9aから発行される無効化指令に、キャッシュライン単位の無効化からサブライン単位の無効化に切り替えるための識別情報を付するように構成することもできる。
上述の図1に示すマルチプロセッサ装置12では、キャッシュメモリ3−1〜3−m上の値と主記憶メモリ7上の値とが同じシェア状態の場合には、ディレクトリ制御部9により、キャッシュメモリ3−1〜3−m上への登録状況を複数のサブラインで構成されるキャッシュライン単位でディレクトリメモリ8に記憶する一方、プロセッサ2−1〜2−mによりキャッシュメモリ3−1〜3−m上の値が書き換えられた場合には主記憶メモリ7上の値を更新せず、またキャッシュメモリ3−1〜3−m上の値が最新値であり主記憶メモリ7上の値が旧値であるダーティ状態の場合にはキャッシュメモリ3−1〜3−mの状態及び最新値の保持先をサブライン単位にディレクトリメモリ8に記憶する。
上述の図1に示すマルチプロセッサ装置12では、キャッシュメモリ3−1〜3−m上の値と主記憶メモリ7上の値とが同じシェア状態の場合には、ディレクトリ制御部9により、キャッシュメモリ3−1〜3−m上への登録状況を複数のサブラインで構成されるキャッシュライン単位でディレクトリメモリ8に記憶する一方、プロセッサ2−1〜2−mによりキャッシュメモリ3−1〜3−m上の値が書き換えられた場合には主記憶メモリ7上の値を更新せず、またキャッシュメモリ3−1〜3−m上の値が最新値であり主記憶メモリ7上の値が旧値であるダーティ状態の場合にはキャッシュメモリ3−1〜3−mの状態及び最新値の保持先をサブライン単位にディレクトリメモリ8に記憶する。
さらに、格納されているデータが最新値でないキャッシュメモリ3−1〜3−mに対して発行される書き込みアクセス、又はあるキャッシュメモリ3−iに対するキャッシュオフアクセスのアクセスアドレスを含むキャッシュラインが、プロセッサ2−i以外の複数のプロセッサに上記シェア状態で存在する場合において、無効化指令発行部9aにより、ディレクトリメモリ8に記憶されたすべての参照先に対して、該キャッシュラインの無効化指令を、キャッシュライン単位に発行する。
図2は本発明に関連する第2関連発明の原理ブロック図であり、この図2において、12Aはマルチプロセッサ装置であり、このマルチプロセッサ装置12Aは、複数のプロセッサ群1A−1〜1A−n(n;2以上の自然数)が、第1バス6を介して相互に接続されることにより構成されている。
さて、この図2に示すマルチプロセッサ装置12Aは、前述の図1に示すものに比してプロセッサ群1A−1〜1A−nを構成するディレクトリ制御部9Aの機能が異なるが、その他の構成については基本的に同様である。なお、図2中、図1と同一の符号は、同様の部分を示している。
さて、この図2に示すマルチプロセッサ装置12Aは、前述の図1に示すものに比してプロセッサ群1A−1〜1A−nを構成するディレクトリ制御部9Aの機能が異なるが、その他の構成については基本的に同様である。なお、図2中、図1と同一の符号は、同様の部分を示している。
また、図2中においても、プロセッサ群1A−1〜1A−nの詳細な構成としてプロセッサ群1A−1のみに着目して示しており、プロセッサ群1A−2〜1A−nの詳細な構成についてはプロセッサ群1A−1と基本的に同様であり、図示を省略している。また、主記憶メモリ7,ディレクトリメモリ8及びディレクトリ制御部9Aにより、メモリ部10Aが構成されている。
また、ディレクトリ制御部9Aは、前述の図1におけるもの(符号9参照)と同様に、プロセッサ2−1〜2−mによりキャッシュメモリ3−1〜3−m上の値が書き換えられた場合には主記憶メモリ7上の値を更新せず、またキャッシュメモリ3−1〜3−m上の値が最新値であり主記憶メモリ7上の値が旧値であるダーティ状態の場合にはキャッシュメモリ3−1〜3−mの状態及び最新値の保持先をサブライン単位にディレクトリメモリ8に記憶するように制御するものであり、エラー識別情報記憶部9b及びアクセス禁止部9cをそなえている。
ここで、エラー識別情報記憶制御部9bは、主記憶メモリ7に格納されたデータについての読み出し処理の際に、主記憶メモリ7においてハードエラーが発生したことを検出すると、ディレクトリメモリ8上の対応するキャッシュラインに、当ハードエラー発生の識別情報を記憶するように制御するものである。
さらに、アクセス禁止部9cは、ディレクトリメモリ8上においてハードエラー発生の識別情報を有するキャッシュラインに対する、キャッシュメモリ3−1〜3−mへのアクセスを禁止するものである。
さらに、アクセス禁止部9cは、ディレクトリメモリ8上においてハードエラー発生の識別情報を有するキャッシュラインに対する、キャッシュメモリ3−1〜3−mへのアクセスを禁止するものである。
また、ディレクトリメモリ8に、ハードエラー発生の識別情報を記憶するための専用フィールドを設けるように構成することができるほか、ディレクトリメモリ8を、ハードエラー発生の識別情報として、正常時には発生しえない情報を記憶するように構成することもできる。
上述の図2に示すマルチプロセッサ装置12Aでは、主記憶メモリ7からの読み出し処理の際にハードエラーが生じた場合、ディレクトリメモリ8における、当当読み出しアドレスが含まれるキャッシュラインのディレクトリエントリにハードエラー発生の識別情報を保持しておき、当該識別情報を有するキャッシュラインには主記憶アクセスを生じさせないようにする。
上述の図2に示すマルチプロセッサ装置12Aでは、主記憶メモリ7からの読み出し処理の際にハードエラーが生じた場合、ディレクトリメモリ8における、当当読み出しアドレスが含まれるキャッシュラインのディレクトリエントリにハードエラー発生の識別情報を保持しておき、当該識別情報を有するキャッシュラインには主記憶アクセスを生じさせないようにする。
さらに、図3は本発明に関連する第3関連発明の原理ブロック図であり、この図3において、12Bはマルチプロセッサ装置であり、このマルチプロセッサ装置12Bは、複数のプロセッサ群1B−1〜1B−n(n;2以上の自然数)が、第1バス6を介して相互に接続されることにより構成されている。
さて、この図3に示すマルチプロセッサ装置12Bは、前述の図1に示すものに比してプロセッサ群1B−1〜1B−nを構成するプロセッサ2B−1〜2B−m及びディレクトリ制御部9Bの機能が異なるが、その他の構成については基本的に同様である。なお、図3中、図1と同一の符号は、同様の部分を示している。
さて、この図3に示すマルチプロセッサ装置12Bは、前述の図1に示すものに比してプロセッサ群1B−1〜1B−nを構成するプロセッサ2B−1〜2B−m及びディレクトリ制御部9Bの機能が異なるが、その他の構成については基本的に同様である。なお、図3中、図1と同一の符号は、同様の部分を示している。
また、図3中においても、プロセッサ群1B−1〜1B−nの詳細な構成としてプロセッサ群1B−1のみに着目して示しており、プロセッサ群1B−2〜1B−nの詳細な構成についてはプロセッサ群1B−1と基本的に同様であり、図示を省略している。
また、上述のプロセッサ2B−1,キャッシュメモリ3−1及びキャッシュ制御部4−1により、プロセッサ部5B−1が構成されるようになっており、プロセッサ部5B−2〜5B−mについても同様に、プロセッサ2B−2〜2B−m,キャッシュメモリ3−1〜3−m及びキャッシュ制御部4−1〜4−mにより構成されている。
また、上述のプロセッサ2B−1,キャッシュメモリ3−1及びキャッシュ制御部4−1により、プロセッサ部5B−1が構成されるようになっており、プロセッサ部5B−2〜5B−mについても同様に、プロセッサ2B−2〜2B−m,キャッシュメモリ3−1〜3−m及びキャッシュ制御部4−1〜4−mにより構成されている。
さらに、主記憶メモリ7,ディレクトリメモリ8及びディレクトリ制御部9Bにより、メモリ部10Bが構成されている。
ところで、プロセッサ2B−1〜2B−mは、経過時間計時部2a及びタイムアウト時間再設定部2bをそなえており、ディレクトリ制御部9Bは、キャッシュアクセス発生情報返信部9cをそなえている。
ところで、プロセッサ2B−1〜2B−mは、経過時間計時部2a及びタイムアウト時間再設定部2bをそなえており、ディレクトリ制御部9Bは、キャッシュアクセス発生情報返信部9cをそなえている。
ここで、ディレクトリ制御部9Bのキャッシュアクセス発生情報返信部9cは、プロセッサ2B−1〜2B−mからアクセスを受けた主記憶メモリ7において、キャッシュメモリ3−1〜3−mへのアクセスが発生した場合においては、その旨をアクセス元のプロセッサ2B−1〜2B−mに返信するものである。
また、プロセッサ2B−1〜2B−mの経過時間計時部2aは、主記憶メモリ7に対してアクセス信号を送信してから応答信号を受信するまでの経過時間を計時し、計時された経過時間が予め設定された所定のタイムアウト時間を経過しても応答信号を受信しない場合には、タイムアウト信号として出力するものである。
また、プロセッサ2B−1〜2B−mの経過時間計時部2aは、主記憶メモリ7に対してアクセス信号を送信してから応答信号を受信するまでの経過時間を計時し、計時された経過時間が予め設定された所定のタイムアウト時間を経過しても応答信号を受信しない場合には、タイムアウト信号として出力するものである。
さらに、タイムアウト時間再設定部2bは、キャッシュアクセス発生情報返信部9cからの通知を受けると、経過時間計時部2aにおいて予め設定された上記タイムアウト時間を再設定するものである。
これにより、経過時間計時部2aにおいては、タイムアウト時間再設定部2bにて再設定されたタイムアウト時間に基づいて、経過時間の計時を再計時するようになっている。
これにより、経過時間計時部2aにおいては、タイムアウト時間再設定部2bにて再設定されたタイムアウト時間に基づいて、経過時間の計時を再計時するようになっている。
また、キャッシュメモリ3−1〜3−mへのアクセスが発生した旨をアクセス元のプロセッサ2B−1〜2B−mに返信する手法としては、キャッシュアクセス発生情報返信部9cが、キャッシュメモリ3−1〜3−mへのアクセスが発生した旨の専用コマンドをアクセス元のプロセッサ2B−1〜2B−mに返信したり、キャッシュアクセス発生情報返信部9cが、当該キャッシュメモリ3−1〜3−mに対するアクセスコマンドにアクセス元のプロセッサ2B−1〜2B−mの識別情報を付して、アクセスコマンドを上記のキャッシュメモリ3−1〜3−mとともにアクセス元のプロセッサ2B−1〜2B−mに対して送信してもよい。
上述の図3に示すマルチプロセッサ装置12Bでは、プロセッサ2B−1〜2B−mの経過時間計時部2aが、主記憶メモリ7に対してアクセス信号を送信してから応答信号を受信するまでの経過時間を計時し、計時された経過時間が予め設定された所定時間を経過しても応答信号を受信しない場合には、タイムアウト信号として出力する。
一方、プロセッサ2B−1〜2B−mからのアクセスを受けた主記憶メモリ7において、キャッシュメモリ3−1〜3−mへのアクセスが発生した場合においては、キャッシュアクセス発生情報返信部9cにおいてその旨をアクセス元のプロセッサ2B−1〜2B−mに通知する。
一方、プロセッサ2B−1〜2B−mからのアクセスを受けた主記憶メモリ7において、キャッシュメモリ3−1〜3−mへのアクセスが発生した場合においては、キャッシュアクセス発生情報返信部9cにおいてその旨をアクセス元のプロセッサ2B−1〜2B−mに通知する。
アクセス元のプロセッサ2B−1〜2B−mにおいて、キャッシュメモリ3−1〜3−mへのアクセスが発生した旨の通知を受けると、タイムアウト時間再設定部2bにおいて、タイムアウト信号を出力するための経過時間の計時を、キャッシュメモリ3−1〜3−mのアクセスに要するに十分な時間の応答待ちタイマ値に変更することにより、経過時間計時部2aによる再計時を行なう。
ところで、図4は本発明の原理ブロック図であり、この図4において、13はデータ転送システムであり、このデータ転送システム13は、データ付きパケットを送信する送信装置14と、送信装置14とバス15を介して接続され、送信装置14から送信されたデータ付きパケットをバス15を介して受信する受信装置16とをそなえて構成されている。
ここで、送信装置14は、複数の送信側コマンドキュー17−1〜17−n,送信側データキュー18−1〜18−n,キュー制御部19,送信側セレクタ20及び送信側セレクタ制御部21をそなえて構成されている。
ここで、送信側コマンドキュー17−1〜17−nは、送信すべきデータ付きパケットを構成するコマンドを保持するものであり、送信側データキュー18−1〜18−nは、送信側コマンドキュー17−1〜17−nに対応して設けられ、データ付きパケットを構成するデータを保持するものであり、キュー制御部19は、送信側コマンドキュー17−1〜17−n及び送信側データキュー18−1〜18−nに対してコマンド又はデータを格納制御するものである。
ここで、送信側コマンドキュー17−1〜17−nは、送信すべきデータ付きパケットを構成するコマンドを保持するものであり、送信側データキュー18−1〜18−nは、送信側コマンドキュー17−1〜17−nに対応して設けられ、データ付きパケットを構成するデータを保持するものであり、キュー制御部19は、送信側コマンドキュー17−1〜17−n及び送信側データキュー18−1〜18−nに対してコマンド又はデータを格納制御するものである。
さらに、送信側セレクタ20は、送信側コマンドキュー17−1〜17−nからのコマンド又は送信側データキュー18−1〜18−nからのデータのうちのいずれかをバス15へ選択的に出力するものである。
また、送信側セレクタ制御部21は、キュー制御部19の制御により送信側コマンドキュー17−1〜17−nにコマンドが格納されるとともに、送信側データキュー18−1〜18−nにコマンドに対応したデータが格納されると、送信側セレクタ20において出力されるコマンドを選択するためのセレクト信号を、送信側セレクタ20に対して出力するものである。
また、送信側セレクタ制御部21は、キュー制御部19の制御により送信側コマンドキュー17−1〜17−nにコマンドが格納されるとともに、送信側データキュー18−1〜18−nにコマンドに対応したデータが格納されると、送信側セレクタ20において出力されるコマンドを選択するためのセレクト信号を、送信側セレクタ20に対して出力するものである。
また、受信装置16は、複数の受信側コマンドキュー22−1〜22−p,受信側データキュー23,チェック部24,受信制御部25,受信側セレクタ26,受信側セレクタ制御部27及びデータ送信要求コマンド送信部28をそなえて構成されている。
ここで、受信側コマンドキュー22−1〜22−pは、バス15を介して受信されたコマンドを保持するものであり、受信側データキュー23は、バス15を介して受信されたデータを保持するものである。
ここで、受信側コマンドキュー22−1〜22−pは、バス15を介して受信されたコマンドを保持するものであり、受信側データキュー23は、バス15を介して受信されたデータを保持するものである。
さらに、チェック部24は、バス15を介して受信されたコマンドをチェックするとともに、受信側コマンドキュー22−1〜22−pの状態をチェックするものであり、受信制御部25は、チェック部24からの受信側コマンドキュー22−1〜22−pの状態のチェック結果に基づいて、空き受信側コマンドキュー22−j(j=1〜uのうちの任意の自然数)に受信コマンドを格納するように制御するものである。
また、受信側セレクタ26は、受信側コマンドキュー22−1〜22−pからのコマンドのうちのいずれかを選択的に出力するものであり、受信側セレクタ制御部27は、受信側コマンドキュー22−1〜22−pに格納されたコマンドについての処理を行なう際に、受信側セレクタ26にて出力されるコマンドを選択するためのセレクト信号を、受信側セレクタ26に出力するものである。
さらに、データ送信要求コマンド送信部28は、受信側セレクタ26からのコマンドに対応したデータの送信を要求するものである。
これにより、送信側セレクタ制御部21は、データ送信要求コマンド送信部28から送信されたコマンドに基づいて、送信側データキュー18−1〜18−nに格納されているデータを選択して受信装置16に送信すべく送信側セレクタ20を制御するようになっている。
これにより、送信側セレクタ制御部21は、データ送信要求コマンド送信部28から送信されたコマンドに基づいて、送信側データキュー18−1〜18−nに格納されているデータを選択して受信装置16に送信すべく送信側セレクタ20を制御するようになっている。
上述の図4に示すデータ転送システム13では、送信装置14において、データ付きパケットの送信要求が生じると、バスコマンド情報が定義されたパケットのみをバス15を介して受信装置16に転送する。
また、受信装置16において、データ転送の送信要求コマンドパケットを受信すると、当該処理要求を処理待ちキューとしての受信側コマンドキュー22−1〜22−pに格納し、処理可能な状態になった時点で、送信装置14に対してデータ要求コマンドパケットとしてのデータ送信要求コマンドを送信する。
また、受信装置16において、データ転送の送信要求コマンドパケットを受信すると、当該処理要求を処理待ちキューとしての受信側コマンドキュー22−1〜22−pに格納し、処理可能な状態になった時点で、送信装置14に対してデータ要求コマンドパケットとしてのデータ送信要求コマンドを送信する。
送信装置14では、受信装置16からのデータ要求コマンドパケットの受信を契機として、一定時間後にバス獲得の動作なしに所望のデータパケットが転送される。その後、受信装置16では、バス獲得状態のまま一定時間後に転送される送信装置14からのデータパケットを受信し、データパケットの受信を完了すると、当該バス15を解放する。
以上詳述したように、第1関連発明によれば、無効化指令発行部により、格納されているデータが最新値でないキャッシュメモリに対して発行される書き込みアクセス、又はあるキャッシュメモリに対するキャッシュオフアクセスのアクセスアドレスを含むキャッシュラインが、プロセッサ以外の複数のプロセッサに上記シェア状態で存在する場合において、ディレクトリメモリに記憶されたすべての参照先に対して、キャッシュラインの無効化指令を、キャッシュライン単位に発行することができるので、シェア状態にある複数のキャッシュラインへの連続的な書き込みアクセス又はキャッシュオフアクセスの際に発生するキャッシュ無効化処理の回数を削減でき、装置の処理時間を短縮し、処理性能の向上させることができる利点があるほか、メモリシステム内の各バス及びキャッシュメモリ上でのアクセス競合回数を減少できることから、メモリシステム全体の性能向上を図ることができる利点もある。
また、第1関連発明によれば、無効化指令発行部から発行される無効化指令に、キャッシュライン単位の無効化からサブライン単位の無効化に切り替えるための識別情報を付することにより、アクセスの種類によりキャッシュの無効化方式を切り替えることができ、キャッシュメモリのヒット率の低下を防止することができる利点がある。
さらに、第2関連発明によれば、エラー識別情報記憶制御部において、主記憶メモリに格納されたデータについての読み出し処理の際に、主記憶メモリにおいてハードエラーが発生したことを検出すると、ディレクトリメモリ上の対応するキャッシュラインに、当該ハードエラー発生の識別情報を記憶するように制御するとともに、アクセス禁止部において、ハードエラー発生の識別情報を有するキャッシュラインに対するアクセスを禁止することにより、障害を持った主記憶メモリへのアクセスが再度発生しないため、正常な主記憶メモリへのアクセス性能の劣化を抑えることができる利点がある。
さらに、第2関連発明によれば、エラー識別情報記憶制御部において、主記憶メモリに格納されたデータについての読み出し処理の際に、主記憶メモリにおいてハードエラーが発生したことを検出すると、ディレクトリメモリ上の対応するキャッシュラインに、当該ハードエラー発生の識別情報を記憶するように制御するとともに、アクセス禁止部において、ハードエラー発生の識別情報を有するキャッシュラインに対するアクセスを禁止することにより、障害を持った主記憶メモリへのアクセスが再度発生しないため、正常な主記憶メモリへのアクセス性能の劣化を抑えることができる利点がある。
また、第2関連発明によれば、エラー識別情報記憶制御部により、障害検出時にディレクトリメモリ上のディレクトリエントリに障害発生情報を記録することで、主記憶メモリの読み出し時にエラーが発生したキャッシュラインに対して再度アクセスが発生した場合は、主記憶メモリの読み出し前にエラー応答を返送できることから、エラー返送までの処理時間を短縮することができるほか、ディレクトリメモリ上のディレクトリエントリの状態の更新及びキャッシュメモリへの登録キャンセル処理の必要がなくなり、装置の処理が簡便なものとなる。
さらに、第2関連発明によれば、主記憶メモリのハードエラー発生後のアクセスに対するキャッシュコヒーレンシを保つ必要がないため、ディレクトリの初期状態を保持するための記憶素子も不要となり、装置構成を簡素化することができる利点がある。
また、第3関連発明によれば、キャッシュアクセス発生情報返信部により、アクセスを受けた主記憶メモリにおいて、キャッシュメモリへのアクセスが発生した場合においては、その旨をアクセス元のプロセッサに通知し、アクセス元のプロセッサにおいて、キャッシュメモリへのアクセスが発生した旨の通知を受けると、タイムアウト時間再設定部により、経過時間計時部におけるタイムアウト信号を出力するための経過時間の計時をキャッシュメモリのアクセスに要するに十分な時間の応答待ちタイマ値に変更して、経過時間計時部において再計時を行なうことができるので、障害発生箇所の確実に特定することができ、ディレクトリ方式等を採用した分散共有メモリシステムにおける共有メモリ装置としての主記憶メモリをアクセスした際に発生し得る、種々のリモートキャッシュメモリ内でのアクセス干渉に関わりなく、故障箇所特定精度の高い時間監視が可能となり、ひいては障害発生時においても確実なリカバリを行なうことができる利点がある。
また、第3関連発明によれば、キャッシュアクセス発生情報返信部により、アクセスを受けた主記憶メモリにおいて、キャッシュメモリへのアクセスが発生した場合においては、その旨をアクセス元のプロセッサに通知し、アクセス元のプロセッサにおいて、キャッシュメモリへのアクセスが発生した旨の通知を受けると、タイムアウト時間再設定部により、経過時間計時部におけるタイムアウト信号を出力するための経過時間の計時をキャッシュメモリのアクセスに要するに十分な時間の応答待ちタイマ値に変更して、経過時間計時部において再計時を行なうことができるので、障害発生箇所の確実に特定することができ、ディレクトリ方式等を採用した分散共有メモリシステムにおける共有メモリ装置としての主記憶メモリをアクセスした際に発生し得る、種々のリモートキャッシュメモリ内でのアクセス干渉に関わりなく、故障箇所特定精度の高い時間監視が可能となり、ひいては障害発生時においても確実なリカバリを行なうことができる利点がある。
さらに、本発明によれば、セレクタ制御部が、データ送信要求コマンド送信部から送信されたコマンドに基づいて、送信側データキューに格納されているデータを選択して受信装置に送信すべく送信側セレクタを制御することにより、バスにおけるデータ転送性能を犠牲にすることなく、データ受信上のバッファ容量を大きく削減することができ、ハードウェアコストを削減することができる。特に、バスの多重度が上がる程、又はバスバンドが広くなるほど、バッファ削減による装置全体のハードウェアコスト低減に寄与することができる。
以下、図面を参照することにより、本発明の実施の形態について説明する。
なお、本発明は、以下の実施の形態に限定されるものではない。又、上述の本願発明の目的のほか、他の技術的課題,その技術的課題を解決する手段及び作用効果についても、以下の実施の形態による開示によって明らかとなる。
(A)第1実施形態(本発明に関連する第1関連発明の実施形態)の説明
図5は本発明に関連する第1関連発明の実施形態としての第1実施形態にかかるマルチプロセッサ装置を示すブロック図であり、このマルチプロセッサ装置30−1は、複数のプロセッサ群としてのプロセッサモジュール31−1〜31−n(n;2以上の整数)が第1バスとしてのシステムバス32を介して互いに接続されている。
なお、本発明は、以下の実施の形態に限定されるものではない。又、上述の本願発明の目的のほか、他の技術的課題,その技術的課題を解決する手段及び作用効果についても、以下の実施の形態による開示によって明らかとなる。
(A)第1実施形態(本発明に関連する第1関連発明の実施形態)の説明
図5は本発明に関連する第1関連発明の実施形態としての第1実施形態にかかるマルチプロセッサ装置を示すブロック図であり、このマルチプロセッサ装置30−1は、複数のプロセッサ群としてのプロセッサモジュール31−1〜31−n(n;2以上の整数)が第1バスとしてのシステムバス32を介して互いに接続されている。
さらに、各々のプロセッサモジュール31−1〜31−nはいずれも、少なくとも一つ以上のプロセッサエレメント(プロセッサ部)33をそなえるとともに、メモリモジュール(メモリ部)34及びシステムバスインタフェースモジュール35をそなえている。
なお、プロセッサモジュール31−1〜31−nにおけるプロセッサエレメント33の数は、各プロセッサモジュール31−1〜31−nにおいて一つ以上の任意の値を設定することができる。
なお、プロセッサモジュール31−1〜31−nにおけるプロセッサエレメント33の数は、各プロセッサモジュール31−1〜31−nにおいて一つ以上の任意の値を設定することができる。
また、プロセッサエレメント33及びメモリモジュール34は、第2バスとしてのキャッシュスヌープバス36を介して接続され、メモリモジュール34は内部バス37を介してシステムバスインタフェースモジュール35に接続されている。
即ち、メモリモジュール34は各種データを記憶するものであって、プロセッサモジュール31−1〜31−nを構成するプロセッサエレメント33のそれぞれにキャッシュスヌープバス36を介して接続されることにより、プロセッサエレメント33に共有されるようになっている。
即ち、メモリモジュール34は各種データを記憶するものであって、プロセッサモジュール31−1〜31−nを構成するプロセッサエレメント33のそれぞれにキャッシュスヌープバス36を介して接続されることにより、プロセッサエレメント33に共有されるようになっている。
例えば、プロセッサモジュール31−1のメモリモジュール34はキャッシュスヌープバス36を介してプロセッサモジュール31−1内のプロセッサエレメント33からアクセスされ、また、他のプロセッサモジュール(例えばプロセッサモジュール31−2)内のプロセッサエレメント33からもシステムバス32及び内部バス37を介してアクセスされるようになっている。
ここで、キャッシュスヌープバス36は、上述のプロセッサエレメント33がメモリモジュール34に対して要求を出してから応答を受け取るまでの間、他の装置に使用権を譲ることができるものであり、このキャッシュスヌープバス36を介することにより複数の処理の同時信号を可能としている。
ここで、プロセッサエレメント33は、プロセッサ33a,キャッシュメモリ33b及びキャッシュ制御モジュール33cをそなえて構成されるよういなっている。
ここで、プロセッサエレメント33は、プロセッサ33a,キャッシュメモリ33b及びキャッシュ制御モジュール33cをそなえて構成されるよういなっている。
プロセッサ33aは、キャッシュメモリ33b又はメモリモジュール34との間でデータの読み出し/書き込みアクセスを行なうことを通じて、所望の情報処理を行なうものであり、キャッシュメモリ33bは、プロセッサ33a毎に設けられ、プロセッサ33aとメモリモジュール34との間で高速の読み出し/書き込みアクセスを行ないうるものである。
ところで、このキャッシュメモリ33bは、例えば256バイトにより構成されるキャッシュライン単位にデータが格納されるようになっており、このキャッシュラインはさらに4つのサブライン(64バイト)により構成されるようになっている。
また、キャッシュ制御モジュール33cは、プロセッサ33aとキャッシュメモリ33bとの間のデータの読み出し/書き込みを例えばコピーバックモードで制御するものであり、キャッシュ制御部としての機能を有している。
また、キャッシュ制御モジュール33cは、プロセッサ33aとキャッシュメモリ33bとの間のデータの読み出し/書き込みを例えばコピーバックモードで制御するものであり、キャッシュ制御部としての機能を有している。
さらに、キャッシュ制御モジュール33cはキャッシュメモリ33b上のデータのアドレスとそのエントリのキャッシュ状態を記録するためのタグを有しており、サブライン単位にキャッシュ状態を記録するようになっている。
ところで、メモリモジュール34は、各プロセッサモジュール31のそれぞれにキャッシュスヌープバス36を介して共有され、各種データを記憶する主記憶メモリとしての主記憶素子34aをそなえるとともに、ディレクトリメモリ34b及びアクセス制御モジュール34cをそなえて構成されている。
ところで、メモリモジュール34は、各プロセッサモジュール31のそれぞれにキャッシュスヌープバス36を介して共有され、各種データを記憶する主記憶メモリとしての主記憶素子34aをそなえるとともに、ディレクトリメモリ34b及びアクセス制御モジュール34cをそなえて構成されている。
ここで、ディレクトリメモリ34bは、マルチプロセッサ装置30−1をプロセッサエレメント31−1〜31−nにおける全てのキャッシュメモリ33に対する、主記憶データの登録状況(参照情報)を記憶するものである。
具体的には、ディレクトリメモリ34bとしては、キャッシュライン単位に例えば図6に示すようなフォーマットのディレクトリエントリを有して構成されている。
具体的には、ディレクトリメモリ34bとしては、キャッシュライン単位に例えば図6に示すようなフォーマットのディレクトリエントリを有して構成されている。
即ち、ディレクトリメモリ34bにおけるディレクトリエントリとしては、図6に示すように、キャッシュライン単位に1エントリーが用意され、サブライン単位に、主記憶データのキャッシュへの登録情報を記録するようになっている。
即ち、この図6に示すディレクトリエントリのフォーマットとしては、シェア情報フィールド34b−1,ダーティ情報フィールド34b−2及び障害識別フィールド34b−3により構成されている。
即ち、この図6に示すディレクトリエントリのフォーマットとしては、シェア情報フィールド34b−1,ダーティ情報フィールド34b−2及び障害識別フィールド34b−3により構成されている。
ここで、シェア情報フィールド34b−1は、シェア状態にあるサブラインの識別情報とその登録先を記録するフィールドであり、ダーティ情報フィールド34b−2は、ダーティ状態にあるサブラインの識別情報とその登録先を記録するフィールドであり、障害識別フィールド34b−3は、当該キャッシュラインのアドレスに相当する主記憶読み出し時に、訂正不可能な2ビット以上のエラー(以降マルチビットエラーと呼ぶ)が発生したことを示すフィールドである。
ここで、上述のダーティ状態とは主記憶素子34a上の値が最新値ではなく、あるプロセッサエレメント33キャッシュメモリ33b上で書き換えられていることを示すものである。最新値を持ち得るのはメモリシステム内で一つのプロセッサエレメント33のみであり、ディレクトリメモリ34bではサブライン単位にダーティ状態の有無と最新値を有するプロセッサモジュール31−1〜31−nの識別情報を記録する。
また、シェア状態とは主記憶素子34aの値が、あるプロセッサエレメント33により参照され、主記憶素子34a上とキャッシュメモリ33b上で同一値が共有されていることを示す。ディレクトリメモリ34bではライン単位に、同一値を持つプロセッサモジュール31−1〜31−nの識別情報を記録する。
さらに、インバリッド状態とはキャッシュラインがダーティでもシェアでもない状態を示す。なお、ディレクトリメモリ34b上ではダーティ/シェアの双方の状態とも、プロセッサモジュール31−1〜31−nのみを識別し、個々のプロセッサエレメント33までは識別しない。
さらに、インバリッド状態とはキャッシュラインがダーティでもシェアでもない状態を示す。なお、ディレクトリメモリ34b上ではダーティ/シェアの双方の状態とも、プロセッサモジュール31−1〜31−nのみを識別し、個々のプロセッサエレメント33までは識別しない。
また、アクセス制御モジュール34cは、キャッシュメモリ33b上の値と主記憶素子34a上の値とに基づいて、キャッシュコヒーレンシ制御を行なうとともに、キャッシュメモリ33に対する主記憶データの登録状況を上述のディレクトリメモリ34bに記憶制御するものであり、ディレクトリ制御部としての機能を有している。
例えば、アクセス制御モジュール34cは、キャッシュメモリ33b上の値と主記憶素子34a上の値とが同じシェア状態の場合にはキャッシュメモリ33b上への登録状況を4つのサブラインで構成されるキャッシュライン単位でディレクトリメモリ34bに記憶する一方、プロセッサ33aによりキャッシュメモリ33b上の値が書き換えられた場合には主記憶素子34a上の値を更新せず、またキャッシュメモリ33b上の値が最新値であり主記憶素子34a上の値が旧値であるダーティ状態の場合にはキャッシュメモリ33bの状態及び最新値の保持先をサブライン単位にディレクトリメモリ34bに記憶するように制御するようになっている。
例えば、アクセス制御モジュール34cは、キャッシュメモリ33b上の値と主記憶素子34a上の値とが同じシェア状態の場合にはキャッシュメモリ33b上への登録状況を4つのサブラインで構成されるキャッシュライン単位でディレクトリメモリ34bに記憶する一方、プロセッサ33aによりキャッシュメモリ33b上の値が書き換えられた場合には主記憶素子34a上の値を更新せず、またキャッシュメモリ33b上の値が最新値であり主記憶素子34a上の値が旧値であるダーティ状態の場合にはキャッシュメモリ33bの状態及び最新値の保持先をサブライン単位にディレクトリメモリ34bに記憶するように制御するようになっている。
さらに、このアクセス制御モジュール34cは、一つの書き込みアクセス又はキャッシュオフアクセスを行なう場合、該当するキャッシュメモリ33bにおけるキャッシュライン単位にキャッシュ無効化指令を発行する無効化指令発行部34c−1をそなえている。
換言すれば、無効化指令発行部34c−1は、格納されているデータが最新値でないキャッシュメモリ33bに対してあるプロセッサ33aから発行される書き込みアクセス、又はあるキャッシュメモリ33bに対するキャッシュオフアクセスのアクセスアドレスを含むキャッシュラインが、前記プロセッサ33a以外の複数のプロセッサ33aにシェア状態で存在する場合において、ディレクトリメモリ34bに記憶されたすべての参照先としてのキャッシュ制御モジュール33cに対して、キャッシュラインの無効化指令を、キャッシュライン単位に発行するようになっている。
換言すれば、無効化指令発行部34c−1は、格納されているデータが最新値でないキャッシュメモリ33bに対してあるプロセッサ33aから発行される書き込みアクセス、又はあるキャッシュメモリ33bに対するキャッシュオフアクセスのアクセスアドレスを含むキャッシュラインが、前記プロセッサ33a以外の複数のプロセッサ33aにシェア状態で存在する場合において、ディレクトリメモリ34bに記憶されたすべての参照先としてのキャッシュ制御モジュール33cに対して、キャッシュラインの無効化指令を、キャッシュライン単位に発行するようになっている。
例えば図7に示すように、無効化指令発行部34c−1においては、無効化すべきキャッシュラインを構成する全てのサブライン(通し番号0〜3)に対してキャッシュ無効化コマンドを時分割に発行することにより、キャッシュ無効化コマンド43を、アクセス対象外のサブライン状態にかかわらずキャッシュライン単位に発行するようになっている(図7の時点w1〜時点w5参照)。
なお、キャッシュ無効化コマンドを受信したプロセッサエレメント33内のキャッシュ制御モジュール33cは、一定サイクル毎にキャシュスヌープバス36上へのキャッシュ無効化の成否応答を返送するようになっている。
ところで、無効化指令発行部34c−1から無効化指令が発行される態様としては、詳細には以下に示す2つがある。
ところで、無効化指令発行部34c−1から無効化指令が発行される態様としては、詳細には以下に示す2つがある。
・プロセッサエレメント33内のキャッシュメモリ33bにエントリを有していないアドレスへの書き込みアクセス、又はシェア状態の値を有しているアドレスへの書き込みアクセスで、このアドレスを含むキャシュラインが、他のプロセッサモジュール31−1〜31−nでシェアされている場合。この場合においては、シェア状態のキャッシュメモリ33bを無効化(パージ)し、上述のプロセッサエレメント33内のキャッシュメモリ33bへの書き込み権を獲得したのち、ダーティ状態となる。
・キャッシング空間へのキャッシュオフアクセスで、このアドレスを含むキャッシュラインが他のプロセッサモジュール31−1〜31−nでシェアされている場合。この場合においては、シェア状態のキャッシュメモリ33bをパージし、インバリッド状態となる。
ところで、この無効化指令発行部34c−1から発行される無効化指令としては、アクセスコマンドの種類に応じて、上述のキャッシュライン単位に発行することができるほか、前述の図22にて示したようなサブライン単位に発行するもできる。
ところで、この無効化指令発行部34c−1から発行される無効化指令としては、アクセスコマンドの種類に応じて、上述のキャッシュライン単位に発行することができるほか、前述の図22にて示したようなサブライン単位に発行するもできる。
即ち、ディレクトリメモリ34bにおいて、アクセスコマンドの種類に応じて発行すべき無効化指令の種類を登録するテーブルをそなえ、無効化指令発行部34c−1において無効化指令を発行する際には、上述のディレクトリメモリ34b上のテーブルを参照することにより、無効化コマンドに、キャッシュライン単位の無効化又はサブライン単位の無効化を行なうための識別情報を付するようになっている。
具体的には、上述の無効化指令発行部34c−1において無効化コマンドに、キャッシュ無効化方式識別情報フィールドを設け、このフィールドに識別情報を付するようになっている。
これにより、この識別情報の付された無効化コマンドを受けたキャッシュ制御モジュール33cにおいては、識別情報に基づいてキャッシュライン単位の無効化か又はサブライン単位の無効化を行なうことができる。
これにより、この識別情報の付された無効化コマンドを受けたキャッシュ制御モジュール33cにおいては、識別情報に基づいてキャッシュライン単位の無効化か又はサブライン単位の無効化を行なうことができる。
さらに、キャッシュ制御モジュール33cは、あるプロセッサ33aから発行されるアクセスアドレスを含むキャッシュラインを構成するサブラインのうち、アクセス対象外のサブラインがダーティ状態であった場合、無効化指令発行部34c−1にて発行された無効化指令に対する応答時に無効化の不成立応答を返送する不成立応答返送部33c−1をそなえている。
また、システムバスインタフェースモジュール35は、メモリモジュール34とシステムバス32との間をインタフェースするものである。
なお、上述のマルチプロセッサ装置30−1においては、システムバス32,キャッシュスヌープバス36及び内部バス37により階層バスが構成され、プロセッサモジュール31−1〜31−nの間をディレクトリ方式、プロセッサモジュール31−1〜31−n内をスヌープ方式を用いることによりキャッシュコヒーレンシを保つシステムが構築されている。また、各バス32,36,37は例えばスプッリットバスにより構成され、分散アービトレーションにより制御されるようになっている。
なお、上述のマルチプロセッサ装置30−1においては、システムバス32,キャッシュスヌープバス36及び内部バス37により階層バスが構成され、プロセッサモジュール31−1〜31−nの間をディレクトリ方式、プロセッサモジュール31−1〜31−n内をスヌープ方式を用いることによりキャッシュコヒーレンシを保つシステムが構築されている。また、各バス32,36,37は例えばスプッリットバスにより構成され、分散アービトレーションにより制御されるようになっている。
上述の構成により、本発明に関連する第1関連発明の実施形態としての第1実施形態にかかるマルチプロセッサ装置30−1におけるキャッシュメモリ33bの無効化処理について、図7及び図8を用いて以下に説明する。
なお、以下の説明中においては、便宜上、主記憶素子34aへのアクセス元のプロセッサモジュール(Processor Module,PM)31−1をローカルPM、アクセスされる主記憶素子34aの所在するプロセッサモジュール31−2をホームPM、当該主記憶素子34aをキャッシングしているプロセッサモジュール31−nをリモートPMと呼ぶ。
なお、以下の説明中においては、便宜上、主記憶素子34aへのアクセス元のプロセッサモジュール(Processor Module,PM)31−1をローカルPM、アクセスされる主記憶素子34aの所在するプロセッサモジュール31−2をホームPM、当該主記憶素子34aをキャッシングしているプロセッサモジュール31−nをリモートPMと呼ぶ。
また、この図8に示す例においては、ホームPM31−2がキャッシングされているプロセッサモジュール(リモートPM)をプロセッサモジュール31−nとした場合について説明しているが、キャッシュメモリ33bの無効化指令が発行されるプロセッサエレメント33が属するプロセッサモジュール31−1〜31−nであれば、当該複数のプロセッサモジュール31−1〜31−nがリモートPMとなる。
まず、上述の書き込みアクセス又はキャッシュオフアクセスのいずれかのアクセスコマンド40が、ローカルPM31−1からキャッシュスヌープバス36上に発行される。このアクセスコマンド40は内部バス37及びシステムバス32を経てホームPM31−2へ入力され、このアクセスコマンドは、さらに内部バス37を経てホームPM31−2のメモリモジュール34へ入力される。
メモリモジュール34のアクセス制御モジュール34cでは、ディレクトリメモリ34b上における、入力されたコマンドのアクセスアドレスが含まれるキャッシュラインのディレクトリエントリを参照する。
ここで、アクセス制御モジュール34c(無効化指令発行部34c−1)では、参照したディレクトリエントリがシェア状態であれば、システムバスインタフェースモジュール35に対して内部バス37を介して、アクセスアドレスと共にパージコマンド41をキャッシュライン単位で発行する。
ここで、アクセス制御モジュール34c(無効化指令発行部34c−1)では、参照したディレクトリエントリがシェア状態であれば、システムバスインタフェースモジュール35に対して内部バス37を介して、アクセスアドレスと共にパージコマンド41をキャッシュライン単位で発行する。
なお、上述のパージコマンド41のコマンドフィールドには、シェア状態のキャッシュメモリ33bを持ち無効化の対象となるプロセッサモジュール31−1〜31−nの識別情報(以降ブロードマップと呼ぶ)が含まれている。
また、無効化指令発行部34c−1では、上述のパージコマンド41を発行する際に、ディレクトリメモリ34bの内容に基づいて、アクセスコマンドに対応した無効化方式を示す識別情報を付して発行している(この場合においてはキャッシュライン単位の無効化を行なうための識別情報が付されている)。
また、無効化指令発行部34c−1では、上述のパージコマンド41を発行する際に、ディレクトリメモリ34bの内容に基づいて、アクセスコマンドに対応した無効化方式を示す識別情報を付して発行している(この場合においてはキャッシュライン単位の無効化を行なうための識別情報が付されている)。
これにより、ローカルPM31−nにおいては、この識別情報に基づいて上述の図7に示すキャッシュライン単位の無効化か又は前述の図22に示すサブライン単位の無効化のいずれかを行なうことができる。
システムバスインタフェースモジュール35では、上述のブロードマップに従って、リモートPM31−nに対してへシステムバス32を介してアクセスアドレスと共にパージコマンド(以降リモートパージコマンドと呼ぶ)42をキャッシュライン単位に発行する。
システムバスインタフェースモジュール35では、上述のブロードマップに従って、リモートPM31−nに対してへシステムバス32を介してアクセスアドレスと共にパージコマンド(以降リモートパージコマンドと呼ぶ)42をキャッシュライン単位に発行する。
なお、上述のパージコマンド41に付された識別情報については、リモートパージコマンド42のフィールド中にも保持され、リモートPM31−nのメモリモジュール34に伝えられる。リモートPM31−nのメモリモジュール34はこの識別情報に基づいて、キャッシュスヌープバス36上へ発行するキャッシュ無効化コマンドのコマンドシーケンス(キャッシュライン単位の無効化シーケンスか又はサブライン単位の無効化シーケンス)を切り替えることができる。
ホームPM31−2からのリモートパージコマンドはリモートPM31−nのシステムバスインタフェースモジュール35及び内部バス37を経由して、メモリモジュール34にて受信される。このリモートパージコマンドを受けたメモリモジュール34のアクセス制御モジュール34c(無効化指令発行部34c−1)では、キャッシュスヌープバス36上にキャッシュ無効化コマンド43をキャッシュライン単位に発行する。
例えば、上述のメモリモジュール34においては、図7に示すように、無効化すべきキャッシュラインを構成する全てのサブライン(通し番号0〜3)に対してキャッシュ無効化コマンドを時分割に発行することにより、キャッシュ無効化コマンド43をキャッシュライン単位に発行している(図7の時点w1〜時点w5参照)。
キャッシュ無効化コマンドを受信したプロセッサエレメント33内のキャッシュ制御モジュール33cは、このキャッシュ無効化コマンドに付加されたサブラインアドレスに対応したタグを参照し、参照されたタグがシェア状態ならばそのタグの値を無効化し、一定サイクル毎にキャシュスヌープバス36上へのキャッシュ無効化の成功応答44を返送する一方、タグがダーティ状態である場合は、不成立応答返送部33c−1により、一定サイクル後にキャッシュスヌープバス上にキャッシュ無効化の不成功応答44(ダーティ状態が存在する旨の通知)を返送して、タグの値を保持する(図7の時点w5〜時点w9参照)。
キャッシュ無効化コマンドを受信したプロセッサエレメント33内のキャッシュ制御モジュール33cは、このキャッシュ無効化コマンドに付加されたサブラインアドレスに対応したタグを参照し、参照されたタグがシェア状態ならばそのタグの値を無効化し、一定サイクル毎にキャシュスヌープバス36上へのキャッシュ無効化の成功応答44を返送する一方、タグがダーティ状態である場合は、不成立応答返送部33c−1により、一定サイクル後にキャッシュスヌープバス上にキャッシュ無効化の不成功応答44(ダーティ状態が存在する旨の通知)を返送して、タグの値を保持する(図7の時点w5〜時点w9参照)。
メモリモジュール34のアクセス制御モジュール34cでは、キャッシュ制御モジュール33cからの成功/不成功応答44を受けとると、受け取った成功/不成功応答を取りまとめて、システムバスインタフェースモジュール35,内部バス37及びシステムバス32(図5参照)を介することによりリモートパージ応答45を発行する。
ホームPM31−2のシステムバスインタフェースモジュール35では、システムバス32を介して上述のリモートパージ応答45を受け取り、このリモートパージ応答を取りまとめて、メモリモジュール34に対して内部バス37を介することによりキャッシュラインの無効化の成否応答46として返送する。
ホームPM31−2のシステムバスインタフェースモジュール35では、システムバス32を介して上述のリモートパージ応答45を受け取り、このリモートパージ応答を取りまとめて、メモリモジュール34に対して内部バス37を介することによりキャッシュラインの無効化の成否応答46として返送する。
パージの成否情報を受信したホームPM31−2のメモリモジュール34は、成否情報に従ってディレクトリメモリ34b上のディレクトリエントリの値を更新する。即ち、パージが成功した場合はディレクトリエントリはインバリッド状態となる。その後、メモリモジュール34ではアクセスコマンドに従った主記憶処理を実行して、ローカルPM31−1に対して、アクセス完了応答47を返送する。
このように、本発明に関連する第1関連発明の実施形態としての第1実施形態にかかるマルチプロセッサ装置によれば、無効化指令発行部34c−1により、格納されているデータが最新値でないキャッシュメモリ33bに対して発行される書き込みアクセス、又はあるキャッシュメモリ33bに対するキャッシュオフアクセスのアクセスアドレスを含むキャッシュラインが、プロセッサ以外の複数のプロセッサに上記シェア状態で存在する場合において、ディレクトリメモリ34bに記憶されたすべての参照先に対して、キャッシュラインの無効化指令を、キャッシュライン単位に発行することができるので、シェア状態にある複数のキャッシュラインへの連続的な書き込みアクセス又はキャッシュオフアクセスの際に発生するキャッシュ無効化処理の回数を削減でき、装置の処理時間を短縮し、処理性能の向上させることができる利点があるほか、メモリシステム内の各バス32,36,37及びキャッシュメモリ33b上でのアクセス競合回数を減少できることから、メモリシステム全体の性能向上を図ることができる利点もある。
また、無効化指令発行部34c−1から発行される無効化指令に、キャッシュライン単位の無効化からサブライン単位の無効化に切り替えるための識別情報を付することにより、アクセスの種類によりキャッシュの無効化方式を切り替えることができ、キャッシュメモリ33bのヒット率の低下を防止することができる利点がある。
(B)第2実施形態(本発明に関連する第2関連発明の実施形態)の説明
図9は本発明に関連する第2関連発明の実施形態としての第2実施形態にかかるマルチプロセッサ装置を示すブロック図であり、この図9に示すマルチプロセッサ装置30−2は、前述の第1実施形態におけるもの(符号30−1参照)に比して、メモリモジュール34にエラー識別情報記憶制御部34c−2及びアクセス禁止部34c−3をそなえている点が異なる。なお、図9中、図5と同一の符号は、同様の部分を示している。
(B)第2実施形態(本発明に関連する第2関連発明の実施形態)の説明
図9は本発明に関連する第2関連発明の実施形態としての第2実施形態にかかるマルチプロセッサ装置を示すブロック図であり、この図9に示すマルチプロセッサ装置30−2は、前述の第1実施形態におけるもの(符号30−1参照)に比して、メモリモジュール34にエラー識別情報記憶制御部34c−2及びアクセス禁止部34c−3をそなえている点が異なる。なお、図9中、図5と同一の符号は、同様の部分を示している。
ここで、メモリモジュール34のエラー識別情報記憶制御部34c−2は、主記憶素子34aに格納されたデータについての読み出し処理の際に、主記憶素子34aにおいてハードエラーが発生したことを検出すると、ディレクトリメモリ34b上の対応するキャッシュラインに、当該ハードエラー発生の識別情報を記憶するように制御するものである。
具体的には、上述のハードエラー発生の識別情報としては、例えば前述の図6に示すディレクトリエントリを構成する障害識別フィールド34b−3に記憶することができるようになっている。
具体的には、上述のハードエラー発生の識別情報としては、例えば前述の図6に示すディレクトリエントリを構成する障害識別フィールド34b−3に記憶することができるようになっている。
ここで、この障害識別フィールド34b−3は、ハードエラー発生の識別情報を記憶するための専用フィールドであって、キャッシュラインのアドレスに相当する主記憶素子34aの読み出し時に、訂正不可能な2ビット以上のエラー(マルチビットエラー)が発生したことを示すものである。
なお、ディレクトリメモリ34bに記憶すべきハードエラー発生の識別情報としては、正常時には発生しえない情報を記憶するように構成することもできる。具体的には、前述の図6におけるシェア状態フィールド34b−1及びダーティ状態フィールド34b−2の双方に、キャッシュラインの状態をダーティ状態でありシェア状態である旨のビット記憶することが考えられる。
なお、ディレクトリメモリ34bに記憶すべきハードエラー発生の識別情報としては、正常時には発生しえない情報を記憶するように構成することもできる。具体的には、前述の図6におけるシェア状態フィールド34b−1及びダーティ状態フィールド34b−2の双方に、キャッシュラインの状態をダーティ状態でありシェア状態である旨のビット記憶することが考えられる。
即ち、一つのサブラインにおいてダーティ状態とシェア状態は排他であるため、ディレクトリエントリとして、キャッシュラインを構成するすべてのサブラインがダーティ状態であり且つシェア状態である旨を示す値にはなりえない。
エラー識別情報記憶制御部34c−2において、障害発生情報としてこのような状態値をディレクトリメモリ34bに記録することで障害を識別することができるよになり、必要なディレクトリエントリのビット数を専用フィールドを設ける場合よりも削減させることができる。
エラー識別情報記憶制御部34c−2において、障害発生情報としてこのような状態値をディレクトリメモリ34bに記録することで障害を識別することができるよになり、必要なディレクトリエントリのビット数を専用フィールドを設ける場合よりも削減させることができる。
また、アクセス禁止部34c−3は、ディレクトリメモリ34b上のディレクトリエントリに、ハードエラー発生の識別情報を有する場合において、当該ディレクトリエントリに対応するキャッシュラインに対するアクセスを禁止するものである。
上述の構成により、本発明に関連する第2関連発明の実施形態としての第2実施形態にかかるマルチプロセッサ装置30−2の動作を、図10に示すフローチャートを用いて以下に説明する。
上述の構成により、本発明に関連する第2関連発明の実施形態としての第2実施形態にかかるマルチプロセッサ装置30−2の動作を、図10に示すフローチャートを用いて以下に説明する。
即ち、例えばプロセッサモジュール31−1のプロセッサ33aからのリードアクセスがキャッシュミスヒットした場合、キャッシュ制御モジュール33cではキャッシュスヌープバス36を介してメモリモジュール34に主記憶素子34aに記憶されているデータの読み出しアクセスを発行する(ステップB1)。
メモリモジュール34のアクセス制御モジュール34cでは、ディレクトリメモリ34b上の、アクセスアドレスが含まれるキャッシュラインのディレクトリエントリを参照する(ステップB2)。
メモリモジュール34のアクセス制御モジュール34cでは、ディレクトリメモリ34b上の、アクセスアドレスが含まれるキャッシュラインのディレクトリエントリを参照する(ステップB2)。
ここで、ディレクトリエントリを構成する障害識別フィールド34b−3に障害発生情報がセットされておらず、且つキャッシュメモリ33bの状態がシェア状態又はインバリッド状態である場合には、アクセス制御モジュール34cでは、主記憶素子34aのデータ読み出しを開始するとともにディレクトリメモリ34bの状態を更新し、キャッシュスヌープバス36上に読み出しデータを転送する(ステップB3のNOルートからステップB4,ステップB6,ステップB7)。
また、ディレクトリエントリを構成する障害識別フィールド34b−3に障害発生情報がセットされておらず、且つキャッシュメモリ33bの状態がダーティ状態である場合には、キャッシュコヒーレンス処理を施した後に(ステップB4,ステップB5)、主記憶素子34aの読み出しを開始すると共にディレクトリメモリ34bの状態を更新し(ステップB6)、キャッシュスヌープバス36上への読み出しデータの転送が開始される(ステップB7)。
上述のごとく読み出しデータの転送が開始されると、キャッシュ制御モジュール33cでは読み出しデータのキャッシュメモリ33bへの登録を開始する(ステップB8)。
ここで、メモリモジュール34において、読み出しデータにマルチビットエラーを検出すると、メモリモジュール34ではキャッシュスヌープバス36上への読み出しデータ転送を中止し(ステップB9のYESルートからステップB11)、キャッシュ制御モジュール33cに対して障害発生応答を返送する(ステップB13)。
ここで、メモリモジュール34において、読み出しデータにマルチビットエラーを検出すると、メモリモジュール34ではキャッシュスヌープバス36上への読み出しデータ転送を中止し(ステップB9のYESルートからステップB11)、キャッシュ制御モジュール33cに対して障害発生応答を返送する(ステップB13)。
キャッシュ制御モジュール33cでは、キャッシュメモリ33bへの登録を無効にするとともに(ステップB12)、アクセス元のプロセッサ33aに対してアクセスエラー応答を返送する(ステップB14)。
その後、アクセス制御モジュール34cのエラー識別情報記憶制御部34c−2では、障害の発生したアクセスアドレスに該当するディレクトリエントリの障害識別フィールド34b−3に、障害発生情報をセットする(ステップB15)。
その後、アクセス制御モジュール34cのエラー識別情報記憶制御部34c−2では、障害の発生したアクセスアドレスに該当するディレクトリエントリの障害識別フィールド34b−3に、障害発生情報をセットする(ステップB15)。
これにより、障害の発生したアドレスに対してアクセスが発生した場合においても、ディレクトリエントリの障害識別フィールド34b−3に障害発生情報がセットされているので、アクセス禁止部34c−3により、当該アクセスに対しては障害発生応答をアクセス元に即座に返送することにより、障害が発生しているアドレスへのアクセスを禁止している。
即ち、上述のステップB2におけるディレクトリエントリを参照した際に、当該アクセスアドレスにおけるディレクトリエントリの障害識別フィールド34b−3に障害発生情報がセットされている場合、即ち、現在発生している主記憶素子34aへの読み出しアクセスにおけるアドレスが、以前の主記憶素子34aへのアクセスでマルチビットエラーが検出されているキャッシュラインである場合は、アクセス禁止部34c−3により、主記憶素子34aの読み出しは行なわずに、直ちに障害発生応答を返送する(ステップB3のYESルートからステップB13)。
その後、障害発生応答を受信したキャッシュ制御モジュール33bでは、アクセス元のプロセッサ33aに対してアクセスエラー応答を返送する(ステップB14)。
このように、本発明に関連する第2関連発明の実施形態としての第2実施形態にかかるマルチプロセッサ装置30−2によれば、エラー識別情報記憶制御部34c−2において、主記憶素子34aに格納されたデータについての読み出し処理の際に、主記憶素子34aにおいてハードエラーが発生したことを検出すると、ディレクトリメモリ34b上の対応するキャッシュラインに、当該ハードエラー発生の識別情報を記憶するように制御するとともに、アクセス禁止部34c−3において、ハードエラー発生の識別情報を有するキャッシュラインに対するアクセスを禁止することにより、障害を持った主記憶素子34aへのアクセスが再度発生しないため、正常な主記憶素子34aへのアクセス性能の劣化を抑えることができる利点がある。
このように、本発明に関連する第2関連発明の実施形態としての第2実施形態にかかるマルチプロセッサ装置30−2によれば、エラー識別情報記憶制御部34c−2において、主記憶素子34aに格納されたデータについての読み出し処理の際に、主記憶素子34aにおいてハードエラーが発生したことを検出すると、ディレクトリメモリ34b上の対応するキャッシュラインに、当該ハードエラー発生の識別情報を記憶するように制御するとともに、アクセス禁止部34c−3において、ハードエラー発生の識別情報を有するキャッシュラインに対するアクセスを禁止することにより、障害を持った主記憶素子34aへのアクセスが再度発生しないため、正常な主記憶素子34aへのアクセス性能の劣化を抑えることができる利点がある。
また、エラー識別情報記憶制御部34c−2により、障害検出時にディレクトリメモリ34b上のディレクトリエントリに障害発生情報を記録することで、主記憶素子34aの読み出し時にエラーが発生したキャッシュラインに対して再度アクセスが発生した場合は、主記憶素子34aの読み出し前にエラー応答を返送できることから、エラー返送までの処理時間を短縮することができるほか、ディレクトリメモリ34b上のディレクトリエントリの状態の更新及びキャッシュメモリ33bへの登録キャンセル処理の必要がなくなり、装置の処理が簡便なものとなる。
さらに、主記憶素子34aのハードエラー発生後のアクセスに対するキャッシュコヒーレンシを保つ必要がないため、ディレクトリの初期状態を保持するための記憶素子も不要となり、装置構成を簡素化することができる利点がある。
(C)第3実施形態(本発明に関連する第3関連発明の実施形態)の説明
図11は本発明に関連する第3関連発明の実施形態としての第3実施形態にかかるマルチプロセッサ装置を示すブロック図であり、この図11に示すマルチプロセッサ装置30−3は、前述の第1実施形態におけるもの(符号30−1参照)に比して、メモリモジュール34にキャッシュアクセス発生情報返信部34c−4をそなえるとももに、プロセッサ33aにタイマ回路33a−1をそなえている点が異なる。なお、図11中、図5と同一の符号は、同様の部分を示している。
(C)第3実施形態(本発明に関連する第3関連発明の実施形態)の説明
図11は本発明に関連する第3関連発明の実施形態としての第3実施形態にかかるマルチプロセッサ装置を示すブロック図であり、この図11に示すマルチプロセッサ装置30−3は、前述の第1実施形態におけるもの(符号30−1参照)に比して、メモリモジュール34にキャッシュアクセス発生情報返信部34c−4をそなえるとももに、プロセッサ33aにタイマ回路33a−1をそなえている点が異なる。なお、図11中、図5と同一の符号は、同様の部分を示している。
ここで、タイマ回路33a−1は、メモリモジュール34に対してアクセス信号を送信してから応答信号を受信するまでの経過時間(応答待ち時間)を計時し、計時された経過時間が予め設定された所定のタイムアウト時間を経過しても応答信号を受信しない場合には、タイムアウト信号として出力するものであり、例えば図12に示すような構成を有している。
即ち、この図12に示すタイマ回路33a−1は、デコーダ(DEC)51,タイマシーケンサ(T−SEQ)52,カウンタ(CNT)53及びパルス選択回路(MPX)54をそなえて構成されている。
ここで、デコーダ51は、アクセス先からキャッシュスヌープバス36又はシステムバス32を介して入力されるバスコマンド情報としての応答信号についてデコードするものである。
ここで、デコーダ51は、アクセス先からキャッシュスヌープバス36又はシステムバス32を介して入力されるバスコマンド情報としての応答信号についてデコードするものである。
具体的には、デコーダ51は、キャッシュスヌープバス36を介して、メモリストア完了応答コマンドST−CMPを受信したり、後述のタイムアウト時間を変更するための情報を専用のTIMEコマンド又はリモートキャッシュコマンドC−PGにおける専用のタイマ値変更フィールドで受信し、これらの受信信号についてのデコード情報を、それぞれ、st-cmp,time又はpg-with-timeとして出力するようになっている。
また、タイマシーケンサ52は、デコーダ51からの応答信号に基づいて、カウンタ54にて計時されるタイムアウト値を可変設定制御するとともに、カウンタ53の状態を制御するものである。
ここで、カウンタ53は、メモリモジュール34に対してアクセス信号を送信してから応答信号を受信するまでの経過時間(応答待ち時間)を計時するものであり、応答待ち時間がタイマシーケンサ52にて設定制御された所定のタイムアウト時間を経過した場合には、タイムアウト信号(timeout)をタイマシーケンサ51に出力するようになっている。
ここで、カウンタ53は、メモリモジュール34に対してアクセス信号を送信してから応答信号を受信するまでの経過時間(応答待ち時間)を計時するものであり、応答待ち時間がタイマシーケンサ52にて設定制御された所定のタイムアウト時間を経過した場合には、タイムアウト信号(timeout)をタイマシーケンサ51に出力するようになっている。
さらに、パルス選択回路54は、タイマシーケンサ52から入力される制御信号に基づいて、カウンタ53にて計時されるタイムアウト値を、Ta又はTbに可変設定するものであり、詳細には、NOT回路54a,AND回路54b,54c及びOR回路54dをそなえて構成されている。
ところで、上述のカウンタ53にて計時されるタイムアウト値Taとしては、M−STコマンドを発行してからST−CMPを受信するまでに要する最大時間よりも大きくなるように設定され、タイムアウト値Tbは、C−PGコマンドを発行してからPG−CMPコマンドを受信するまでに要する最大時間よりも大きくなり、且つ、Ta<Tbとなるように設定されるようになっている。
ところで、上述のカウンタ53にて計時されるタイムアウト値Taとしては、M−STコマンドを発行してからST−CMPを受信するまでに要する最大時間よりも大きくなるように設定され、タイムアウト値Tbは、C−PGコマンドを発行してからPG−CMPコマンドを受信するまでに要する最大時間よりも大きくなり、且つ、Ta<Tbとなるように設定されるようになっている。
AND回路54bにおいてはタイムアウト値Taを設定するためのパルス信号“a”とともにタイマシーケンサ52からの制御信号の反転信号を入力される一方、AND回路54cにおいてタイムアウト値Tbを設定するためのパルス信号“b”とともにタイマシーケンサ52からの制御信号を入力されるようになっている。
これにより、パルス選択回路54からの出力信号(pulse)となるOR回路54dからは、上述の制御信号が“L”レベル信号の場合にはパルス信号“a”が出力され、制御信号が“H”レベル信号の場合にはパルス信号“b”が出力されるようになっている。
これにより、パルス選択回路54からの出力信号(pulse)となるOR回路54dからは、上述の制御信号が“L”レベル信号の場合にはパルス信号“a”が出力され、制御信号が“H”レベル信号の場合にはパルス信号“b”が出力されるようになっている。
換言すれば、タイマシーケンサ52からの制御信号が“L”レベル信号の場合には、カウンタ53においてはタイムアウト値をTaと設定される一方、制御信号が“H”レベル信号の場合には、カウンタ53においてはタイムアウト値をTbに設定されるようになっている。
上述のタイマシーケンサ52の状態遷移としては、例えば図13に示すようになる。即ち、初期状態においてはタイマ非動作の状態(カウンタ53が動作しない状態)であって、カウンタ53に対してクリア信号をアサートするようになっている(図13のidle状態)。
上述のタイマシーケンサ52の状態遷移としては、例えば図13に示すようになる。即ち、初期状態においてはタイマ非動作の状態(カウンタ53が動作しない状態)であって、カウンタ53に対してクリア信号をアサートするようになっている(図13のidle状態)。
このidle状態において、例えばアクセス先のメモリモジュール34に対してM−STコマンドを送信すると、タイマシーケンサ52においてはカウンタ53に対してイネーブル信号をアサートする。この時、タイマシーケンサ52ではパルス選択回路54に対してリモート信号はアサートしておらず、パルス信号“a”が選択される。これにより、タイムアウト値をTaとしてタイマカウントが開始されるようになっている(図13のhome状態)。
また、上述のhome状態において、デコーダ52からデコード信号st-cmp信号がアサートされると、元のidle状態に遷移する一方、time信号,あるいはpg-with-time信号がアサートされると、カウンタ53に対して、CLEAR 信号をアサートすることにより、カウンタ53をクリアする。
その後、カウンタ53に対してenable信号をアサートする。この時、タイマシーケンサ52ではパルス選択回路54に対してリモート信号をアサートしており、パルス信号“b”が選択される。これにより、タイムアウト値Tbでカウンタ53による経過時間の計時が再開されるようになっている(図13のremote状態)。
その後、カウンタ53に対してenable信号をアサートする。この時、タイマシーケンサ52ではパルス選択回路54に対してリモート信号をアサートしており、パルス信号“b”が選択される。これにより、タイムアウト値Tbでカウンタ53による経過時間の計時が再開されるようになっている(図13のremote状態)。
換言すれば、タイマ回路33a−1では、タイムアウト値がTaからTbに再設定されることにより、キャッシュ装置アクセスに要するに十分な時間のタイムアウト値で応答待ち時間を計時することができる。
なお、上述のremote状態において、デコーダ52からst-cmp信号がアサートされると、もとのidle状態に遷移するようになっている。
なお、上述のremote状態において、デコーダ52からst-cmp信号がアサートされると、もとのidle状態に遷移するようになっている。
さらに、図11に示すアクセス制御モジュール34cにおけるキャッシュアクセス発生情報返信部34c−4は、プロセッサ33aからのアクセスを受けたメモリモジュール34において、キャッシュコヒーレンシを維持するためのキャッシュメモリ33bへのアクセスが発生した場合においては、その旨をアクセス元のプロセッサ33aに返信するものである。
上述のキャッシュメモリ33bへのアクセスが発生した旨をアクセス制御モジュール34cからアクセス元のプロセッサ33aに返信する際には、その旨を示す専用コマンドtimeを返信するほか、そのキャッシュメモリ33bに対するリモートキャッシュコマンドC−PGに専用のタイマ値変更フィールドpg-with-timeを付することにより返信することができる。
なお、このタイマ値変更フィールドpg-with-timeには、アクセス元のプロセッサの識別情報が付され、上述のC−PGコマンドをキャッシュメモリ33bとともにアクセス元のプロセッサ33aに対して送信するようになっており、これにより、キャッシュメモリ33bへのアクセスが発生した旨をアクセス元のプロセッサ33aに返信することができる。
また、キャッシュアクセス発生情報返信部34c−4においては、システムに応じたコマンドフォーマットの生成機構又はバスコマンドシーケンサを用意することにより、上述のタイマ値変更コマンドTIMEや、タイマ値変更指定フィールドpg-with-timeを具備したC−PGコマンド等を生成することができる。
なお、図14,図16は上述のマルチプロセッサ装置30−3におけるコマンドシーケンスを説明するためのブロック図であり、この図14,図16に示すマルチプロセッサ装置30−3のプロセッサモジュール31−1〜31−nは、それぞれ、プロセッサ(CPU)33a,キャッシュ部(CS)33A,ディレクトリ部(DIR)34A,主記憶メモリとしての主記憶素子(MS)34a及びシステムバス制御機構としてのシステムバスインタフェースモジュール35をそなえている(図14,図16に示すものにおいては、複数のプロセッサエレメント33,キャッシュスヌープバス36及び内部バス37の図示を省略している)。
なお、図14,図16は上述のマルチプロセッサ装置30−3におけるコマンドシーケンスを説明するためのブロック図であり、この図14,図16に示すマルチプロセッサ装置30−3のプロセッサモジュール31−1〜31−nは、それぞれ、プロセッサ(CPU)33a,キャッシュ部(CS)33A,ディレクトリ部(DIR)34A,主記憶メモリとしての主記憶素子(MS)34a及びシステムバス制御機構としてのシステムバスインタフェースモジュール35をそなえている(図14,図16に示すものにおいては、複数のプロセッサエレメント33,キャッシュスヌープバス36及び内部バス37の図示を省略している)。
ここで、キャッシュ部33Aは、前述の図11におけるキャッシュメモリ33b及びキャッシュ制御モジュール33cにより構成され、ディレクトリ部34Aは、ディレクトリメモリ34b及びアクセス制御モジュール34cにより構成されるようになっている。
上述の構成により、本発明に関連する第3関連発明の実施形態としての第3実施形態にかかるマルチプロセッサ装置30−3の動作を図14〜図17を用いて以下に説明する。
上述の構成により、本発明に関連する第3関連発明の実施形態としての第3実施形態にかかるマルチプロセッサ装置30−3の動作を図14〜図17を用いて以下に説明する。
なお、以下の説明中においては、便宜上、主記憶素子34aへのアクセス元のプロセッサモジュール31−1をローカルPM、アクセスされる主記憶素子34aの所在するプロセッサモジュール31−2をホームPM、当該主記憶素子34aをキャッシングしているプロセッサモジュール31−nをリモートPMと呼ぶ。
まず、ホームPM31−2のキャッシュアクセス発生情報返信部34c−4において、キャッシュメモリ33bへのアクセスが発生した旨を通知する際に、専用コマンドtimeを用いる場合には、図14,図15に示すように動作する。
まず、ホームPM31−2のキャッシュアクセス発生情報返信部34c−4において、キャッシュメモリ33bへのアクセスが発生した旨を通知する際に、専用コマンドtimeを用いる場合には、図14,図15に示すように動作する。
即ち、図14に示すように、ローカルPM31−1のプロセッサ33aでは、ホームPM31−2に対して例えばメモリ番地「A」への非キャッシュメモリストアコマンドM−STを発行する一方(図14の丸付き数字「1」参照)、上述のコマンド発行と同時にタイマ回路33a−1においてアクセスタイマ値Taでタイマ計時を開始する(図15の時点y1参照)。
上述のM−STコマンドを受信したホームPM31−2のアクセス制御モジュール34cでは、ディレクトリメモリ34bを参照することにより、メモリ番地「A」がリモートPM31−nでキャッシングされていることを知ると、このリモートPM31−nに対してキャッシュパージコマンドC−PGを発行する(図14の丸付き数字「2」参照)。
また、上述のコマンド発行と同時に、ホームPM31−2においては、アクセスタイマ値T2(;C−PGコマンドを発行してからPG−CMPコマンドを受信するまでに要する最大時間)でタイマ計時を開始する。このとき、ホームPM31−2のディレクトリメモリ34bはメモリ番地「A」を含むライン単位にビジー状態となっている(図15の時点y3参照)。
また、上述のコマンド発行と同時に、ホームPM31−2においては、アクセスタイマ値T2(;C−PGコマンドを発行してからPG−CMPコマンドを受信するまでに要する最大時間)でタイマ計時を開始する。このとき、ホームPM31−2のディレクトリメモリ34bはメモリ番地「A」を含むライン単位にビジー状態となっている(図15の時点y3参照)。
さらに、アクセス制御モジュール34cのキャッシュアクセス発生情報返信部34c−4では、C−PGコマンドの発行に相前後して、ローカルPM31−1のタイマ回路33a−1におけるタイムアウト値Taを変更する旨のタイマ値変更コマンドTIMEをローカルPM31−1に転送する(図14の丸付き数字「2′」参照)。
ローカルPM31−1において、上述のタイマ値変更コマンドTIMEを受信すると、タイマ回路33a−1におけるM−STコマンドのアクセスタイマ値を、TaからTbに変更し、タイマ計時を再開する(図15の時点y4参照)。
ローカルPM31−1において、上述のタイマ値変更コマンドTIMEを受信すると、タイマ回路33a−1におけるM−STコマンドのアクセスタイマ値を、TaからTbに変更し、タイマ計時を再開する(図15の時点y4参照)。
C−PGコマンドを受信すべきリモートPM31−nでは、上述のキャッシュパージコマンドC−PGの送信に先行して、キャッシングされているメモリ番地「A」に対して書き込みアクセスを開始しており、ホームPM31−2のディレクトリメモリ34bを更新状態にすべくキャッシュ更新通知コマンドM−EXを発行する(図15のy2参照)。同時にアクセスタイマ値Taでタイマ計時を開始する。
また、リモートPM31−nにおけるプロセッサ33aのタイマ回路33a−1においても、上述のM−EXコマンドを送信すると同時に、アクセスタイマTaでタイマ計時を開始している(図15における時点y2参照)。
リモートPM31−nでは、上述のM−EXコマンドを送信した後に、ホームPM31−2からのC−PGコマンドを受信するが、既に同一ラインのキャッシュ操作を実行しているため、パージ処理はリモートPM31−n内で保留される(Pending)。
リモートPM31−nでは、上述のM−EXコマンドを送信した後に、ホームPM31−2からのC−PGコマンドを受信するが、既に同一ラインのキャッシュ操作を実行しているため、パージ処理はリモートPM31−n内で保留される(Pending)。
M−EXコマンドを受信したホームPM31−2のアクセス制御モジュール34cでは、ディレクトリメモリ34bを検索することにより、メモリ番地「A」のラインがビジー状態であるため、その旨応答を返そうとするが、何らかの要因でアクセス元であるリモートPM31−nに届かなかったとする(Disappear)。
この場合においては、パージ処理はリモートPM31−n内で保留されたままとなり、従って、リモートPM31−2ではM−STコマンドに対する応答も実行できない。また、Ta<T2<Tbの関係が成立するので、リモートPM31−nにおける、M−EXコマンドに対するアクセスタイマが最も先にタイムアウトする(図15の時点y5参照)。
この場合においては、パージ処理はリモートPM31−n内で保留されたままとなり、従って、リモートPM31−2ではM−STコマンドに対する応答も実行できない。また、Ta<T2<Tbの関係が成立するので、リモートPM31−nにおける、M−EXコマンドに対するアクセスタイマが最も先にタイムアウトする(図15の時点y5参照)。
Ta時間経過の後のタイムアウト検出により、M−EXコマンドに対する処理が異常終結する。これにより、リモートPM31−n内で同一ラインのキャッシュ操作の実行のため保留されていたパージ処理が行なわれる。その後、パージ処理が完了すると、C−PCコマンド発行元であるホームPM31−2に対してキャッシュパージ完了応答コマンドPG−CMPを発行する(図14の丸付き数字「3」,図15の時点y6参照)。
PG−CMPコマンドを受信したホームPM31−2では、M−STコマンドで指定されたデータを、主記憶素子34bのメモリ番地「A」に書き込む。また、ディレクトリメモリ34bの内容を、リモートPM31−nでの参照状態から非キャッシュ状態に変更する。
その後、M−STコマンドの発行元であるローカルPM31−1に対して、メモリストア完了応答コマンドST−CMPを発行する(図14の丸付き数字「4」,図15の時点y7参照)。
その後、M−STコマンドの発行元であるローカルPM31−1に対して、メモリストア完了応答コマンドST−CMPを発行する(図14の丸付き数字「4」,図15の時点y7参照)。
これにより、M−EXコマンドのタイムアウトに関わらず、M−STメモリアクセスのためのコマンドシーケンスを正常に終了させることができる。
また、上述と同様の場合に、ホームPM31−2のキャッシュアクセス発生情報返信部34c−4においてキャッシュメモリ33bへのアクセスが発生した旨を通知する際に、このキャッシュアクセスコマンドの専用フィールドを用いる場合には、図16に示すように、当該キャッシュアクセスコマンドとしてのC−PGコマンドにおける専用フィールドにおいてアクセス元のプロセッサ33aを指定する。
また、上述と同様の場合に、ホームPM31−2のキャッシュアクセス発生情報返信部34c−4においてキャッシュメモリ33bへのアクセスが発生した旨を通知する際に、このキャッシュアクセスコマンドの専用フィールドを用いる場合には、図16に示すように、当該キャッシュアクセスコマンドとしてのC−PGコマンドにおける専用フィールドにおいてアクセス元のプロセッサ33aを指定する。
このC−PGコマンドはキャッシング先のキャッシュメモリ33bとともにアクセス元のプロセッサ33aに転送される(図16の丸付き数字「2」,図17の時点y13参照)。専用フィールドに自身が指定されたC−PGコマンドを受信したアクセス元のプロセッサ33aでは、キャッシュメモリのアクセスに要するに充分な時間の応答待ちタイマ値(タイムアウト値)Tbに変更して、タイマ計時を再度開始する(図17の時点y14参照)。
その後、上述の図14,図15の場合と同様の信号シーケンスにより、M−EXコマンドのタイムアウトに関わらず、M−STメモリアクセスのためのコマンドシーケンスを正常に終了させることができる(図16の丸付き数字「1」〜「4」,図17の時点y11〜時点y17参照)。
なお、上述の図14又は図16のいずれのシーケンスでホームPM31−2のキャッシュアクセス発生情報返信部34c−4においてキャッシュメモリ33bへのアクセスが発生した旨を通知する場合においても、リモートPM101−nにて検出されるM−EXコマンドに対する処理は異常終結するが、この原因としては、リモートPM101−nとホームPM101−2との間の何らかの要因であることを特定することができる。
なお、上述の図14又は図16のいずれのシーケンスでホームPM31−2のキャッシュアクセス発生情報返信部34c−4においてキャッシュメモリ33bへのアクセスが発生した旨を通知する場合においても、リモートPM101−nにて検出されるM−EXコマンドに対する処理は異常終結するが、この原因としては、リモートPM101−nとホームPM101−2との間の何らかの要因であることを特定することができる。
このように、本発明に関連する第3関連発明の実施形態としての第3実施形態にかかるマルチプロセッサ装置によれば、キャッシュアクセス発生情報返信部34c−4により、アクセスを受けた主記憶素子34aにおいて、キャッシュメモリ34bへのアクセスが発生した場合においては、その旨をアクセス元のプロセッサ33aに通知し、アクセス元のプロセッサ33aにおいて、キャッシュメモリ33bへのアクセスが発生した旨の通知を受けると、タイマ回路33a−1におけるタイムアウト信号を出力するための経過時間の計時を、キャッシュメモリ33bのアクセスに要するに十分な時間の応答待ちタイマ値に変更して、再計時を行なうことができるので、障害発生箇所の確実に特定することができ、ディレクトリ方式等を採用した分散共有メモリシステムにおける共有メモリ装置としての主記憶素子34aをアクセスした際に発生し得る、種々のリモートキャッシュメモリ33b内でのアクセス干渉に関わりなく、故障箇所特定精度の高い時間監視が可能となり、ひいては障害発生時においても確実なリカバリを行なうことができる利点がある。
なお、上述の本実施形態においては、タイマ回路33a−1としてはプロセッサ内に設けられているが、プロセッサモジュール内のその他の箇所に設けても差し支えない。
(D)第4実施形態(本発明の一実施形態)の説明
図18は本発明の一実施形態としての第4実施形態にかかるデータ転送システムを示すブロック図であり、この図18に示すデータ転送システム60は、上述のマルチプロセッサ装置30−1〜30−3におけるスプリットバスとしてのシステムバス32,キャッシュスヌープバス36又は内部バス37に用いることができるものであり、送信装置61,スプリットバス62及び受信装置63をそなえて構成されている。
(D)第4実施形態(本発明の一実施形態)の説明
図18は本発明の一実施形態としての第4実施形態にかかるデータ転送システムを示すブロック図であり、この図18に示すデータ転送システム60は、上述のマルチプロセッサ装置30−1〜30−3におけるスプリットバスとしてのシステムバス32,キャッシュスヌープバス36又は内部バス37に用いることができるものであり、送信装置61,スプリットバス62及び受信装置63をそなえて構成されている。
ここで、スプリットバス62は、上述の送信装置61と受信装置62との間に介装され、送信装置61と受信装置62との間で例えばデータ付きパケット通信を行なうためのものであって、このデータ付きパケットの通信を行なう際に、送信装置61が受信装置62に対して要求を出してから応答を受け取るまでの間、他の装置にバスの使用権を譲り、複数の処理の同時進行(多重処理)を可能とするものであり、これにより、バスの高使用効率化を図ることができる。
また、送信装置61は、データ付きパケットをスプリットバス62に送信するものであり、例えば前述のマルチプロセッサ装置30−1〜30−3のプロセッサ33aのごときCPUや入出力装置(I/O装置)により構成されるようになっている。この場合においては、上述のデータ付きパケットを、例えばメモリ書き込みバスコマンド等により構成することができる。
さらに、受信装置63は、送信装置61から送信されたデータ付きパケットをスプリットバス62を介して受信するものであり、例えば前述のマルチプロセッサ装置30−1〜30−3のメモリモジュール34のごときメモリ装置により構成されるようになっている。
なお、上述のCPUとしての送信装置61からのコマンド付きデータパケットとしては、前述の図26におけるものと同様に、例えばメインメモリとしての受信装置63に対するメモリ書き込みコマンドを含むデータ転送要求とすることができ、このメモリ書き込みコマンド等のコマンド付きデータパケットを構成するコマンドについても、前述の図27に示すようなフォーマットにより構成されるようになっている。
なお、上述のCPUとしての送信装置61からのコマンド付きデータパケットとしては、前述の図26におけるものと同様に、例えばメインメモリとしての受信装置63に対するメモリ書き込みコマンドを含むデータ転送要求とすることができ、このメモリ書き込みコマンド等のコマンド付きデータパケットを構成するコマンドについても、前述の図27に示すようなフォーマットにより構成されるようになっている。
ここで、送信装置61は、詳細には複数(例えば4つ)の送信側コマンドキュー(com1〜com4)64−1〜64−4,送信側データキュー(squeue1〜squeue4)65−1〜65−4,送信キュー制御部(send queue control)66,バス制御部(bus control-1)67,出力セレクタ(out selector)68及びデコーダ69をそなえて構成されている。
ここで、送信側コマンドキュー64−1〜64−4は、送信すべきデータ付きパケットを構成するコマンドを保持するものであり、送信側データキュー65−1〜65−4は、送信側コマンドキュー64−1〜64−4に対応して設けられ、データ付きパケットを構成するデータを保持するものであり、例えばフリップフロップ又はランダムアクセスメモリにより構成される。
ここで、送信側コマンドキュー64−1〜64−4は、送信すべきデータ付きパケットを構成するコマンドを保持するものであり、送信側データキュー65−1〜65−4は、送信側コマンドキュー64−1〜64−4に対応して設けられ、データ付きパケットを構成するデータを保持するものであり、例えばフリップフロップ又はランダムアクセスメモリにより構成される。
さらに、キュー制御部66は、送信側コマンドキュー64−1〜64−4及び送信側データキュー65−1〜65−4に対してコマンド又はデータを格納制御するものであり、出力セレクタ68は、送信側コマンドキュー64−1〜64−4からのコマンド又は送信側データキュー65−1〜65−4からのデータのうちのいずれかをスプリットバス62へ選択的に出力するものである。
換言すれば、キュー制御部66は、送信装置61の内部回路からデータ転送要求が発生すると、送信側コマンドキュー64−1〜64−4及び送信側データキュー65−1〜65−4のうちで空きを探し、空きの送信側コマンドキュー64−1〜64−4にコマンドを格納する一方、空きの送信側データキュー65−1〜65−4にデータを格納制御するようになっている。
また、バス制御部67は、キュー制御部66の制御により送信側コマンドキュー64−1〜64−4及び送信側データキュー65−1〜65−4にコマンド及びコマンドに対応したデータが格納されると、出力セレクタ68において出力されるコマンドを選択するためのセレクト信号を出力するものであり、送信側セレクタ制御部としての機能を有している。
即ち、バス制御部67では、キュー制御部66の制御によりコマンド及びデータが空きキューに格納されてバス使用の準備ができると、送信側コマンドキュー64−1〜64−4に格納されている4つのバス要求から、適当なアルゴリズムで要求を選択するとともに、図示しないバス調停装置にバス使用権の獲得要求を出力した後に、バス使用権を得ると、出力セレクタ68に対してセレクト信号を出力することにより、選択されたコマンドキューをデータキューに先行してスプリットバス62に送出するようになっている。
換言すれば、送信装置61においては、内部にてデータ付きパケットの送信要求が生じると、バス制御部67により、バス使用権を獲得して、転送操作コードと転送データサイズ等を含むバスコマンド情報が定義されたパケットのみを先行して受信装置63に転送するようになっている。
なお、上述の図示しないバス調停装置によるバス使用権の獲得/放棄の制御を行なう際には、例えばスプリットバス62を介して接続された装置間にバス使用/使用否を通知する専用信号線を設けることができる。
なお、上述の図示しないバス調停装置によるバス使用権の獲得/放棄の制御を行なう際には、例えばスプリットバス62を介して接続された装置間にバス使用/使用否を通知する専用信号線を設けることができる。
さらに、デコーダ69は、スプリットバス62を介して受信装置63から送信された信号についてデコードしてバス制御部67に出力するものである。
ところで、受信装置63は、詳細には複数(例えば4つ)の受信側コマンドキュー(cqueue1〜cqueue4)70−1〜70−4,コマンドデコーダ(dec)71,バス制御部(bus control-2)72,受信キュー制御部(receive queue control) 73,メモリセレクタ(mem-selector)74,エンコーダ(enc,encoder)75,メモリ制御部(memory control)77,データバッファ(dbuf1,dbuf2) 78−1,78−2,データセレクタ79及びメモリ80をそなえて構成されている。
ところで、受信装置63は、詳細には複数(例えば4つ)の受信側コマンドキュー(cqueue1〜cqueue4)70−1〜70−4,コマンドデコーダ(dec)71,バス制御部(bus control-2)72,受信キュー制御部(receive queue control) 73,メモリセレクタ(mem-selector)74,エンコーダ(enc,encoder)75,メモリ制御部(memory control)77,データバッファ(dbuf1,dbuf2) 78−1,78−2,データセレクタ79及びメモリ80をそなえて構成されている。
ここで、受信側コマンドキュー70−1〜70−4は、スプリットバス62を介して受信されたコマンドを保持するものであり、データバッファ78−1,78−2は、スプリットバス62を介して受信されたデータを保持するものであり、受信側データキューとしての機能を有している。
さらに、デコーダ71は、スプリットバス62を介して受信されたコマンドをチェックするとともに、受信側コマンドキュー70−1〜70−4の状態をチェックするものであり、チェック部としての機能を有している。
さらに、デコーダ71は、スプリットバス62を介して受信されたコマンドをチェックするとともに、受信側コマンドキュー70−1〜70−4の状態をチェックするものであり、チェック部としての機能を有している。
また、バス制御部72は、デコーダ71からの受信側コマンドキュー70−1〜70−4の状態のチェック結果に基づいて、当該空き受信側コマンドキュー70−1〜70−4に受信コマンドを格納するように制御するものであり、受信制御部としての機能を有している。
さらに、メモリセレクタ74は、受信側コマンドキュー70−1〜70−4からのコマンドのうちのいずれかを選択的にエンコーダ75及びメモリ制御部77対して出力するものであり、受信側セレクタとしての機能を有している。
さらに、メモリセレクタ74は、受信側コマンドキュー70−1〜70−4からのコマンドのうちのいずれかを選択的にエンコーダ75及びメモリ制御部77対して出力するものであり、受信側セレクタとしての機能を有している。
また、受信キュー制御部73は、受信側コマンドキュー70−1〜70−4に格納されたコマンドについての処理を行なう際に、メモリセレクタ74にて出力されるコマンドを選択するためのセレクト信号を出力するものであり、受信側セレクタ制御部としての機能を有している。
さらに、エンコーダ75は、メモリセレクタ74からのコマンドに対応したデータの送信を要求するデータ送信要求コマンドをスプリットバス62を介して送信装置61に送信するものであり、データ送信要求コマンド送信部としての機能を有している。
さらに、エンコーダ75は、メモリセレクタ74からのコマンドに対応したデータの送信を要求するデータ送信要求コマンドをスプリットバス62を介して送信装置61に送信するものであり、データ送信要求コマンド送信部としての機能を有している。
なお、上述のエンコーダ75から送信装置61に送信されたデータ送信要求コマンドについては、送信装置62側のデコーダ69にてデコードされてバス制御部67に出力されるようになっている。
これにより、バス制御部67は、エンコーダ75から送信されたコマンドに基づいて、送信側データキュー65−1〜65−4に格納されているデータを選択して受信装置63に送信すべく出力セレクタ68を制御するようになっている。
これにより、バス制御部67は、エンコーダ75から送信されたコマンドに基づいて、送信側データキュー65−1〜65−4に格納されているデータを選択して受信装置63に送信すべく出力セレクタ68を制御するようになっている。
換言すれば、バス制御部67においては、受信装置63からのデータ転送要求コマンドの受信したことを契機として、受信装置63からのコマンド転送の際のバス使用権を獲得した状態のまま、所定時間後にこのデータ転送要求コマンドに対応するデータを受信装置63に転送するようになっているのである。
さらに、メモリ制御部77は、メモリセレクタ74を介してコマンド情報を入力され、エンコーダ75から送信されるデータ送信要求コマンドに対応するデーのメモリ80への記憶制御を行なうものである。
さらに、メモリ制御部77は、メモリセレクタ74を介してコマンド情報を入力され、エンコーダ75から送信されるデータ送信要求コマンドに対応するデーのメモリ80への記憶制御を行なうものである。
また、データバッファ78−1,78−2は、エンコーダ75からデータ転送要求コマンドを送信した後の予め定められた(約束された)一定時間後に、送信装置63からバス転送されたデータパケットを一旦格納しておくものである。即ち、この2つのデータバッファ78−1,78−2により、2種類のコマンドに対応したデータパケットを格納しておくことができる。
なお、データバッファ78−1,78−2にて一旦格納されたデータパケットは、受信キュー制御部73の制御に基づいて、データセレクタ79を介してメモリ80に書き込まれるようになっている。なお、スプリットバス62の使用権の獲得状態は、上述のデータパケットのデータバッファ78−1,78−2においての受信が完了することにより解放されるようになっている。
また、上述の受信側コマンド・キュー70−1〜70−4は、スプリットバス62における多重度数分を設けられるようになっている一方、データバッファ78−1,78−2については、スプリットバス62における多重度数分よりも少なく(2つのデータバッファ78−1,78−2)している。
上述の構成により、本発明の一実施形態としての第4実施形態にかかるデータ転送システム60では、送信装置61において、データ付きパケットの送信要求が生じると、バスコマンド情報が定義されたパケットのみをスプリットバス62を介して受信装置63に転送して、受信装置63においては、送信装置61からのバスコマンド情報が定義されたパケットを受信すると、当該パケットを処理待ちキューとしての受信側コマンドキュー70−1〜70−4に格納し、処理可能な状態になった時点で、送信装置61に対してデータ要求コマンドパケットを送信し、その後、送信装置61においては、受信装置61からのデータ要求コマンドパケットの受信を契機として、一定時間後にバス獲得の動作なしに所望のデータパケットを転送した後に、受信装置63において、バス獲得状態のまま一定時間後に転送される送信装置61からのデータパケットを受信し、データパケットの受信を完了すると、スプリットバス62を解放する。
上述の構成により、本発明の一実施形態としての第4実施形態にかかるデータ転送システム60では、送信装置61において、データ付きパケットの送信要求が生じると、バスコマンド情報が定義されたパケットのみをスプリットバス62を介して受信装置63に転送して、受信装置63においては、送信装置61からのバスコマンド情報が定義されたパケットを受信すると、当該パケットを処理待ちキューとしての受信側コマンドキュー70−1〜70−4に格納し、処理可能な状態になった時点で、送信装置61に対してデータ要求コマンドパケットを送信し、その後、送信装置61においては、受信装置61からのデータ要求コマンドパケットの受信を契機として、一定時間後にバス獲得の動作なしに所望のデータパケットを転送した後に、受信装置63において、バス獲得状態のまま一定時間後に転送される送信装置61からのデータパケットを受信し、データパケットの受信を完了すると、スプリットバス62を解放する。
具体的には、まず、送信装置61の内部回路からデータ転送要求が発生すると、送信キュー制御部66では、送信側コマンドキュー64−1〜64−4及び送信側データキュー65−1〜65−4のうちで空きを探し、空きの送信側コマンドキュー64−1〜64−4にコマンドを格納する一方、空きの送信側データキュー65−1〜65−4にデータを格納制御する。
送信側コマンドキュー64−1〜64−4及び送信側データキュー65−1〜65−4にコマンド及びデータが格納されてバス使用の準備ができると、送信キュー制御部66では、バス制御部67にその旨を通知する。
バス制御部67では、送信側コマンドキュー64−1〜64−4に格納されている4つのバス要求から、適当なアルゴリズムで要求を選択するとともに、図示しないバス調停装置に対してバス使用権獲得要求reqを出力する(図19の時点z1〜時点z3参照)。
バス制御部67では、送信側コマンドキュー64−1〜64−4に格納されている4つのバス要求から、適当なアルゴリズムで要求を選択するとともに、図示しないバス調停装置に対してバス使用権獲得要求reqを出力する(図19の時点z1〜時点z3参照)。
バス制御部67では、バス使用権獲得要求を出力してから、図示しないバス調停装置からのバス使用権を獲得した旨の通知grtを受けると(図19の時点z2〜時点z3参照)、出力セレクタ68に対してセレクト信号を出力することにより、この出力セレクタ68を介して選択されたコマンドをスプリットバス62に送出する。なお、上述のコマンド送出が完了した時点でバス使用権を放棄する(図19の時点z4〜時点z6)。
また、受信装置63ではスプリットバス62からのコマンドパケットを受信すると、コマンドデコーダ71において、このコマンドパケットを構成する装置アドレス等をチェックする。
ここで、コマンドデコーダ71では、受信されたコマンドパケットの装置アドレスが自身の受信装置63宛のコマンドであり、かつ受信側コマンドキュー70−1〜70−4のいずれかが空いていると判断すると、バス制御部72に対してその旨を通知する。バス制御部72では、当該空きコマンドキュー70−1〜70−4に受信コマンドを格納するように制御する(図19の時点z4〜時点z16)。
ここで、コマンドデコーダ71では、受信されたコマンドパケットの装置アドレスが自身の受信装置63宛のコマンドであり、かつ受信側コマンドキュー70−1〜70−4のいずれかが空いていると判断すると、バス制御部72に対してその旨を通知する。バス制御部72では、当該空きコマンドキュー70−1〜70−4に受信コマンドを格納するように制御する(図19の時点z4〜時点z16)。
なお、コマンドデコーダ71において、受信されたコマンドが自装置宛でないものであると判定された場合には当該コマンドについては無視する。また、自装置宛のコマンドであっても受信側コマンドキュー70−1〜70−4に空きがない場合は、送信元の送信装置61に対してその旨を通知する。
また、バス制御部72では、送信装置61からのコマンドパケットの受信動作が終了すると、受信キュー制御部73に対して、受信側コマンドキュー70−1〜70−4に格納したコマンドのメモリアクセス制御を依頼する。
また、バス制御部72では、送信装置61からのコマンドパケットの受信動作が終了すると、受信キュー制御部73に対して、受信側コマンドキュー70−1〜70−4に格納したコマンドのメモリアクセス制御を依頼する。
受信キュー制御部73では、4つある受信側コマンドキュー70−1〜70−4からメモリセレクタ74を介して適当なアルゴリズムでメモリアクセス要求を選択し、メモリ制御部77に対して実際のメモリアクセス指示を出力する。
さらに、メモリ制御部77では、選択されたコマンドに対応したメモリアクセスの準備が可能であると判断されると、受信キュー制御部73に対してその旨を通知し、受信キュー制御部73では、メモリセレクタ74に対してセレクト信号を出力することにより、当該コマンド情報をエンコーダ75に出力するように制御する。
さらに、メモリ制御部77では、選択されたコマンドに対応したメモリアクセスの準備が可能であると判断されると、受信キュー制御部73に対してその旨を通知し、受信キュー制御部73では、メモリセレクタ74に対してセレクト信号を出力することにより、当該コマンド情報をエンコーダ75に出力するように制御する。
即ち、メモリ制御部77では、スプリットバス62からのコマンド入力により、新たなメモリアクセス要求が発生すると、先行するメモリアクセスが無いか、あるいは2つのデータバッファ78−1,78−2が解放された場合に、メモリアクセスの準備が可能であると判断し、その旨を受信キュー制御部73に対してその旨を通知する。
受信キュー制御部73では、受信側コマンドキュー70−1〜70−4内に格納されている要求と、空きデータバッファ78−1,78−2とを対応付けて管理される。例えば、受信側コマンドキュー70−1の内容が空きのデータバッファ78−1と組み合わせられたとする。
受信キュー制御部73では、受信側コマンドキュー70−1〜70−4内に格納されている要求と、空きデータバッファ78−1,78−2とを対応付けて管理される。例えば、受信側コマンドキュー70−1の内容が空きのデータバッファ78−1と組み合わせられたとする。
受信側コマンドキュー70−1〜70−4内に格納されている要求と、空きデータバッファ78−1,78−2とが対応付けられて、メモリアクセスの準備が可能となると、受信キュー制御部73では、メモリセレクタ74にセレクト信号を出力することにより、受信側コマンドキュー70−1の内容から送信元の送信装置61のアドレス,コマンドID等を取り出し、エンコーダ75に出力する。
このとき、受信キュー制御部73からバス制御部72に対して、コマンド送出の要求を出力し、このコマンド送出要求を受けたバス制御部72では、上述のバス制御部67の場合と同様にしてバス使用権を獲得する(バス使用権獲得要求req及びバス使用権獲得通知grt,図19の時点z5〜時点z7参照)。
エンコーダ75では、上述のメモリセレクタ74からの送信元の送信装置61のアドレス,コマンドIDに基づいて、当該バスコマンドに対応するデータの転送を要求する旨のデータ要求コマンドパケットを生成する。このデータ要求コマンドパケットdreqについては、上述のごとく獲得されたバス使用権を用いることにより、スプリットバス62を介して送信装置61に対して転送する(図19の時点z7〜時点z8参照)。
エンコーダ75では、上述のメモリセレクタ74からの送信元の送信装置61のアドレス,コマンドIDに基づいて、当該バスコマンドに対応するデータの転送を要求する旨のデータ要求コマンドパケットを生成する。このデータ要求コマンドパケットdreqについては、上述のごとく獲得されたバス使用権を用いることにより、スプリットバス62を介して送信装置61に対して転送する(図19の時点z7〜時点z8参照)。
送信装置61では、上述のデータ要求コマンドパケットdreqを受信したことを契機として、予め設定された(約束された)一定時間後に、上述のデータ要求コマンドの転送の際に獲得したバス使用権に基づき、バス獲得の動作なしに連続するデータd1〜d6を順次転送する(図19の時点z9〜時点z15参照)。
即ち、受信装置63からのデータ要求コマンドを受信した送信装置61では、デコーダ69にて上述のデータ要求コマンドを構成する装置アドレス,コマンドID等をチェックする。
即ち、受信装置63からのデータ要求コマンドを受信した送信装置61では、デコーダ69にて上述のデータ要求コマンドを構成する装置アドレス,コマンドID等をチェックする。
ここで、受信されたデータ要求コマンドが、自身の送信装置61宛のデータ要求コマンドである場合には、バス制御部67において、このデータ要求コマンドにて要求されているデータd1〜d6を、送信側データキュー65−1〜65−4のうちのいずれかから出力セレクタ68を介して選択し、バス使用権獲得動作を行なわずに受信装置63に対して送信する。
なお、上述の送信装置61からのデータ送出開始タイミングは、インプリメントにより適当なバスサイクルの時間として、送信装置61/受信装置63間で定めておく(約束しておく)。
また、受信装置63では、要求したデータの転送が始まると、バス制御部72により現在処理中であるデータバッファ(この場合はデータバッファ78−1)に順次データを格納する(図19における時点z10〜時点z16)。さらに、要求したワード数分のデータを受信し終わると、バス制御部72によりバス使用権を解放する。
また、受信装置63では、要求したデータの転送が始まると、バス制御部72により現在処理中であるデータバッファ(この場合はデータバッファ78−1)に順次データを格納する(図19における時点z10〜時点z16)。さらに、要求したワード数分のデータを受信し終わると、バス制御部72によりバス使用権を解放する。
なお、図19中においては、受信装置63側の受信側コマンドキュー70−1及び受信側データキュー78−1の状態を示している。即ち、この図19に示すように、コマンドパケットを受信側コマンドキュー70−1に格納した後データ待ちとなり(図19における時点z4〜z10参照)、データパケット受信開始から転送パケットを順次格納する(図19における時点z10〜z16参照)。その後、全パケットを受信した時点で要求されたメモリアクセスの処理が開始される。
その後、バス制御部72では一連のデータ転送の完了が終了すると受信キュー制御部73に対してその旨を通知し、これを受けた受信キュー制御部73では、例えば受信側コマンドキュー70−1内のコマンドに対応するデータがデータバッファ78−1に用意できたと判断する。
この場合においては、先行するメモリアクセスが無ければ、メモリ制御部77を制御することにより、実際のメモリアクセスを開始する一方、先行するメモリアクセスがあれば、そのメモリアクセスが完了してから実際のメモリアクセスを開始する。
この場合においては、先行するメモリアクセスが無ければ、メモリ制御部77を制御することにより、実際のメモリアクセスを開始する一方、先行するメモリアクセスがあれば、そのメモリアクセスが完了してから実際のメモリアクセスを開始する。
このように、本発明の一実施形態としての第4実施形態にかかるデータ転送システムによれば、バス制御部67が、エンコーダ75から送信されたコマンドに基づいて、送信側データキュー65−1〜65−4に格納されているデータを選択して受信装置63に送信すべく出力セレクタ68を制御することにより、スプリットバス62におけるデータ転送性能を犠牲にすることなく、データ受信上のバッファ容量を大きく削減することができ、装置のハードウェアコストを低減させることができる。特に、スプリットバス62の多重度が上がる程、又はバスバンドが広くなるほど、バッファ削減による装置全体のハードウェアコストの低減に寄与することができる。
なお、上述の本実施形態においては、スプリットバス62を4多重とした場合について詳述しているが、これに限定されず、その他の多重度のシステムとしてもよい。
1−1〜1−n,1A−1〜1A−n,1B−1〜1B−n プロセッサ群
2−1〜2−n,2B−1〜2B−n プロセッサ
2a 経過時間計時部
2b タイムアウト時間再設定部
3−1〜3−m キャッシュメモリ
4−1〜4−m キャッシュ制御部
5−1〜5−m,5B−1〜5B−n プロセッサモジュール
6 第1バス
7 主記憶メモリ
8 ディレクトリメモリ
9,9A,9B ディレクトリ制御部
9a 無効化指令発行部
9b エラー識別情報記憶制御部
9c アクセス禁止部
10,10A,10B メモリ部
11 第2バス
12,12A,12B マルチプロセッサ装置
13 データ転送システム
14 送信装置
15 バス
16 受信装置
17−1〜17−n 送信側コマンドキュー
18−1〜18−n 送信側データキュー
19 キュー制御部
20 送信側セレクタ
21 送信側セレクタ制御部
22−1〜22−p 受信側コマンドキュー
23 受信側データキュー
24 チェック部
25 受信制御部
26 受信側セレクタ
27 受信側セレクタ制御部
28 データ送信要求コマンド送信部
30−1〜30−3 マルチプロセッサ装置
31−1〜31−n プロセッサモジュール(プロセッサ群)
32 システムバス(第1バス)
33 プロセッサエレメント
33a プロセッサ
33a−1 タイマ回路
33b キャッシュメモリ
33c キャッシュ制御モジュール(キャッシュ制御部)
33c−1 不成立応答返送部
33A キャッシュ部
34 メモリモジュール
34a 主記憶素子(主記憶メモリ)
34b ディレクトリメモリ
34b−1 シェア情報フィールド
34b−2 ダーティ情報フィールド
34b−3 障害識別フィールド
34c アクセス制御モジュール(ディレクトリ制御部)
34c−1 無効化指令発行部
34c−2 エラー識別情報記憶制御部
34c−3 アクセス禁止部
34c−4 キャッシュアクセス発生情報返信部
34A ディレクトリ部
35 システムインタフェースモジュール
36 キャッシュスヌープバス(第2バス)
37 内部バス
51 デコーダ
52 タイマシーケンサ
53 カウンタ
54 パルス選択回路
54a NOT回路
54b,54c AND回路
54d OR回路
60 データ転送システム
61 送信装置
62 スプリットバス
63 受信装置
64−1〜64−4 送信側コマンドキュー
65−1〜65−4 送信側データキュー
66 送信キュー制御部(キュー制御部)
67 バス制御部(セレクタ制御部)
68 出力セレクタ(送信側セレクタ)
69 デコーダ
70−1〜70−4 受信側コマンドキュー
71 デコーダ(チェック部)
72 バス制御部(受信制御部)
73 受信キュー制御部(受信側セレクタ制御部)
74 メモリセレクタ(受信側セレクタ)
75 エンコーダ(データ送信要求コマンド送信部)
77 メモリ制御部
78−1〜78−2 データバッファ(受信側データキュー)
79 データセレクタ
80 メモリ
100 マルチプロセッサ装置
101−1〜101−n プロセッサモジュール
102 システムバス
103 プロセッサエレメント
103a プロセッサ(CPU)
103b キャッシュメモリ
103c キャッシュ制御モジュール
103A キャッシュ部
104 メモリモジュール
104a 主記憶素子
104b ディレクトリメモリ
104c アクセス制御モジュール
104A ディレクトリ部
105 システムバスインタフェースモジュール
106 キャッシュスヌープバス
107 内部バス
108 タイマ
200 データ転送システム
201 スプリットバス
210 送信装置
211 送信キュー制御部
212 バス制御部
213−1〜213−4 送信コマンド/データ・キュー
214 出力セレクタ
221 デコーダ
222−1〜222−4 受信キュー
223 バス制御部
224 受信キュー制御部
225 メモリセレクタ
226 メモリ制御部
300 メモリ書き込みコマンド
301 コマンドフィールド
302 コマンドIDフィールド
303 送信装置アドレスフィールド
304 相手装置アドレスフィールド
305 サイズフィールド
306 メモリアドレスフィールド
2−1〜2−n,2B−1〜2B−n プロセッサ
2a 経過時間計時部
2b タイムアウト時間再設定部
3−1〜3−m キャッシュメモリ
4−1〜4−m キャッシュ制御部
5−1〜5−m,5B−1〜5B−n プロセッサモジュール
6 第1バス
7 主記憶メモリ
8 ディレクトリメモリ
9,9A,9B ディレクトリ制御部
9a 無効化指令発行部
9b エラー識別情報記憶制御部
9c アクセス禁止部
10,10A,10B メモリ部
11 第2バス
12,12A,12B マルチプロセッサ装置
13 データ転送システム
14 送信装置
15 バス
16 受信装置
17−1〜17−n 送信側コマンドキュー
18−1〜18−n 送信側データキュー
19 キュー制御部
20 送信側セレクタ
21 送信側セレクタ制御部
22−1〜22−p 受信側コマンドキュー
23 受信側データキュー
24 チェック部
25 受信制御部
26 受信側セレクタ
27 受信側セレクタ制御部
28 データ送信要求コマンド送信部
30−1〜30−3 マルチプロセッサ装置
31−1〜31−n プロセッサモジュール(プロセッサ群)
32 システムバス(第1バス)
33 プロセッサエレメント
33a プロセッサ
33a−1 タイマ回路
33b キャッシュメモリ
33c キャッシュ制御モジュール(キャッシュ制御部)
33c−1 不成立応答返送部
33A キャッシュ部
34 メモリモジュール
34a 主記憶素子(主記憶メモリ)
34b ディレクトリメモリ
34b−1 シェア情報フィールド
34b−2 ダーティ情報フィールド
34b−3 障害識別フィールド
34c アクセス制御モジュール(ディレクトリ制御部)
34c−1 無効化指令発行部
34c−2 エラー識別情報記憶制御部
34c−3 アクセス禁止部
34c−4 キャッシュアクセス発生情報返信部
34A ディレクトリ部
35 システムインタフェースモジュール
36 キャッシュスヌープバス(第2バス)
37 内部バス
51 デコーダ
52 タイマシーケンサ
53 カウンタ
54 パルス選択回路
54a NOT回路
54b,54c AND回路
54d OR回路
60 データ転送システム
61 送信装置
62 スプリットバス
63 受信装置
64−1〜64−4 送信側コマンドキュー
65−1〜65−4 送信側データキュー
66 送信キュー制御部(キュー制御部)
67 バス制御部(セレクタ制御部)
68 出力セレクタ(送信側セレクタ)
69 デコーダ
70−1〜70−4 受信側コマンドキュー
71 デコーダ(チェック部)
72 バス制御部(受信制御部)
73 受信キュー制御部(受信側セレクタ制御部)
74 メモリセレクタ(受信側セレクタ)
75 エンコーダ(データ送信要求コマンド送信部)
77 メモリ制御部
78−1〜78−2 データバッファ(受信側データキュー)
79 データセレクタ
80 メモリ
100 マルチプロセッサ装置
101−1〜101−n プロセッサモジュール
102 システムバス
103 プロセッサエレメント
103a プロセッサ(CPU)
103b キャッシュメモリ
103c キャッシュ制御モジュール
103A キャッシュ部
104 メモリモジュール
104a 主記憶素子
104b ディレクトリメモリ
104c アクセス制御モジュール
104A ディレクトリ部
105 システムバスインタフェースモジュール
106 キャッシュスヌープバス
107 内部バス
108 タイマ
200 データ転送システム
201 スプリットバス
210 送信装置
211 送信キュー制御部
212 バス制御部
213−1〜213−4 送信コマンド/データ・キュー
214 出力セレクタ
221 デコーダ
222−1〜222−4 受信キュー
223 バス制御部
224 受信キュー制御部
225 メモリセレクタ
226 メモリ制御部
300 メモリ書き込みコマンド
301 コマンドフィールド
302 コマンドIDフィールド
303 送信装置アドレスフィールド
304 相手装置アドレスフィールド
305 サイズフィールド
306 メモリアドレスフィールド
Claims (6)
- データ付きパケットを送信する送信装置と、該送信装置とバスを介して接続され、該送信装置から送信されたデータ付きパケットをバスを介して受信する受信装置とをそなえてなるデータ転送システムにおいて、
該送信装置が、
送信すべきデータ付きパケットを構成するコマンドを保持する複数の送信側コマンドキューと、
該送信側コマンドキューに対応して設けられ、該データ付きパケットを構成するデータを保持する複数の送信側データキューと、
上記の送信側コマンドキュー及び送信側データキューに対してコマンド又はデータを格納制御するキュー制御部と、
上記の送信側コマンドキューからのコマンド又は送信側データキューからのデータのうちのいずれかをバスへ選択的に出力する送信側セレクタと、
該キュー制御部の制御により上記の送信側コマンドキュー及び送信側データキューに該コマンド及び該コマンドに対応したデータが格納されると、該送信側セレクタにおいて出力されるコマンドを選択するためのセレクト信号を出力する送信側セレクタ制御部とをそなえて構成されたことを特徴とする、データ転送システムにおける送信装置。 - データ付きパケットを送信する送信装置と、該送信装置とバスを介して接続され、該送信装置から送信されたデータ付きパケットをバスを介して受信する受信装置とをそなえてなるデータ転送システムにおいて、
該受信装置が、
該バスを介して受信されたコマンドを保持する複数の受信側コマンドキューと、
該バスを介して受信されたデータを保持する受信側データキューと、
該バスを介して受信されたコマンドをチェックするとともに、該受信側コマンドキューの状態をチェックするチェック部と、
該チェック部からの該受信側コマンドキューの状態のチェック結果に基づいて、空き受信側コマンドキューに上記受信コマンドを格納するように制御する受信制御部と、
上記の受信側コマンドキューからのコマンド又は受信側データキューからのデータのうちのいずれかを選択的に出力する受信側セレクタと、
該受信側コマンドキューに格納されたコマンドについての処理を行なう際に、上記受信側セレクタにて出力されるコマンドを選択するためのセレクト信号を出力する受信側セレクタ制御部と、
該受信側セレクタからのコマンドに対応したデータの送信を要求するデータ送信要求コマンドを送信するデータ送信要求コマンド送信部とをそなえたことを特徴とする、データ転送システムにおける受信装置。 - データ付きパケットを送信する送信装置と、該送信装置とバスを介して接続され、該送信装置から送信されたデータ付きパケットをバスを介して受信する受信装置とをそなえてなるデータ転送システムにおいて、
該送信装置が、
送信すべきデータ付きパケットを構成するコマンドを保持する複数の送信側コマンドキューと、該送信側コマンドキューに対応して設けられ、該データ付きパケットを構成するデータを保持する複数の送信側データキューと、上記の送信側コマンドキュー及び送信側データキューに対してコマンド又はデータを格納制御するキュー制御部と、上記の送信側コマンドキューからのコマンド又は送信側データキューからのデータのうちのいずれかをバスへ選択的に出力する送信側セレクタと、該キュー制御部の制御により上記の送信側コマンドキュー及び送信側データキューに該コマンド及び該コマンドに対応したデータが格納されると、該送信側セレクタにおいて出力されるコマンドを選択するためのセレクト信号を出力する送信側セレクタ制御部とをそなえる一方、
該受信装置が、
該バスを介して受信されたコマンドを保持する複数の受信側コマンドキューと、該バスを介して受信されたデータを保持する受信側データキューと、該バスを介して受信されたコマンドをチェックするとともに、該受信側コマンドキューの状態をチェックするチェック部と、該チェック部からの該受信側コマンドキューの状態のチェック結果に基づいて、当該空き受信側コマンドキューに受信コマンドを格納するように制御する受信制御部と、上記の受信側コマンドキューからのコマンドのうちのいずれかを選択的に出力する受信側セレクタと、該受信側コマンドキューに格納されたコマンドについての処理を行なう際に、上記受信側セレクタにて出力されるコマンドを選択するためのセレクト信号を出力する受信側セレクタ制御部と、該受信側セレクタからのコマンドに対応したデータの送信を要求するデータ送信要求コマンドを送信するデータ送信要求コマンド送信部とをそなえ、
該送信側セレクタ制御部が、該データ送信要求コマンド送信部から送信されたコマンドに基づいて、上記の送信側データキューに格納されているデータを選択して該受信装置に送信すべく該送信側セレクタを制御するように構成されたことを特徴とする、データ転送システム。 - データ付きパケットを送信する送信装置と、該送信装置とバスを介して接続され、該送信装置から送信されたデータ付きパケットをバスを介して受信する受信装置とをそなえてなるデータ転送システムのバス制御方法において、
該送信装置において、データ付きパケットの送信要求が生じると、バスコマンド情報が定義されたパケットのみを該バスを介して該受信装置に転送し、該受信装置からのデータ要求コマンドパケットの受信を契機として、一定時間後にバス獲得の動作なしに所望のデータパケットを転送することを特徴とする、データ転送システムのバス制御方法。 - データ付きパケットを送信する送信装置と、該送信装置とバスを介して接続され、該送信装置から送信されたデータ付きパケットをバスを介して受信する受信装置とをそなえてなるデータ転送システムのバス制御方法において、
該受信装置において、データ転送の送信要求コマンドパケットを受信すると、当該処理要求を処理待ちキューに格納し、処理可能な状態になった時点で、該送信装置に対してデータ要求コマンドパケットを送信し、バス獲得状態のまま一定時間後に転送される該送信装置からのデータパケットを受信し、データパケットの受信を完了すると、当該バスを解放することを特徴とする、データ転送システムのバス制御方法。 - データ付きパケットを送信する送信装置と、該送信装置とバスを介して接続され、該送信装置から送信されたデータ付きパケットをバスを介して受信する受信装置とをそなえてなるデータ転送システムのバス制御方法において、
該送信装置において、データ付きパケットの送信要求が生じると、バスコマンド情報が定義されたパケットのみを該バスを介して該受信装置に転送して、
該受信装置においては、該送信装置からの該バスコマンド情報が定義されたパケットを受信すると、当該パケットを処理待ちキューに格納し、処理可能な状態になった時点で、該送信装置に対してデータ要求コマンドパケットを送信し、
その後、該送信装置においては、該受信装置からのデータ要求コマンドパケットの受信を契機として、一定時間後にバス獲得の動作なしに所望のデータパケットを転送した後に、
該受信装置において、バス獲得状態のまま一定時間後に転送される該送信装置からのデータパケットを受信し、データパケットの受信を完了すると、当該バスを解放することを特徴とする、データ転送システムのバス制御方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006276569A JP2007048314A (ja) | 2006-10-10 | 2006-10-10 | データ転送システムにおける送信装置及び受信装置,データ転送システム並びにデータ転送システムのバス制御方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006276569A JP2007048314A (ja) | 2006-10-10 | 2006-10-10 | データ転送システムにおける送信装置及び受信装置,データ転送システム並びにデータ転送システムのバス制御方法 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP21031896A Division JP3875749B2 (ja) | 1996-08-08 | 1996-08-08 | マルチプロセッサ装置及びそのメモリアクセス方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2007048314A true JP2007048314A (ja) | 2007-02-22 |
Family
ID=37851033
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006276569A Pending JP2007048314A (ja) | 2006-10-10 | 2006-10-10 | データ転送システムにおける送信装置及び受信装置,データ転送システム並びにデータ転送システムのバス制御方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2007048314A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2013512520A (ja) * | 2009-12-01 | 2013-04-11 | ブル・エス・アー・エス | システムのいくつかの構成要素のメモリ間の直接データ転送を許可するそのシステム |
US9009412B2 (en) | 2012-03-27 | 2015-04-14 | Fujitsu Limited | Information processing apparatus and control method of information processing apparatus |
-
2006
- 2006-10-10 JP JP2006276569A patent/JP2007048314A/ja active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2013512520A (ja) * | 2009-12-01 | 2013-04-11 | ブル・エス・アー・エス | システムのいくつかの構成要素のメモリ間の直接データ転送を許可するそのシステム |
US9009412B2 (en) | 2012-03-27 | 2015-04-14 | Fujitsu Limited | Information processing apparatus and control method of information processing apparatus |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3875749B2 (ja) | マルチプロセッサ装置及びそのメモリアクセス方法 | |
US9274856B2 (en) | Improving processor performance for instruction sequences that include barrier instructions | |
US9411644B2 (en) | Method and system for work scheduling in a multi-chip system | |
US9529532B2 (en) | Method and apparatus for memory allocation in a multi-node system | |
JP3210590B2 (ja) | マルチプロセッサシステムおよびキャッシュコヒーレンシ制御方法 | |
TWI431475B (zh) | 用於在本地代理者之記憶體鏡像及遷移之裝置、系統及方法 | |
JP3996454B2 (ja) | 分割サーバにおけるドメイン間低オーバヘッドメッセージ受渡しのためのシステム及び方法 | |
US8423720B2 (en) | Computer system, method, cache controller and computer program for caching I/O requests | |
US20150254182A1 (en) | Multi-core network processor interconnect with multi-node connection | |
US9372800B2 (en) | Inter-chip interconnect protocol for a multi-chip system | |
US10592459B2 (en) | Method and system for ordering I/O access in a multi-node environment | |
US8051325B2 (en) | Multiprocessor system and failure recovering system | |
JP5941168B2 (ja) | 第1および第2のプロトコルドメインを有するデータ処理装置およびデータ処理装置に関する方法 | |
EP3644190B1 (en) | I/o coherent request node for data processing network with improved handling of write operations | |
US7797495B1 (en) | Distributed directory cache | |
JP4644647B2 (ja) | 情報処理装置及び情報処理装置の制御方法 | |
JP4452707B2 (ja) | マルチプロセッサ装置及びそのメモリアクセス方法 | |
JP2007048314A (ja) | データ転送システムにおける送信装置及び受信装置,データ転送システム並びにデータ転送システムのバス制御方法 | |
US10775870B2 (en) | System and method for maintaining cache coherency | |
JP4718012B2 (ja) | メモリキャンセルメッセージを用いたシステムメモリ帯域幅の節約およびキャッシュコヒーレンシ維持 | |
CN114153756B (zh) | 面向多核处理器目录协议的可配置微操作机制 | |
KR20190116326A (ko) | 일관적 인터커넥트 시스템에서의 판독 트랜잭션 추적기 수명 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20080131 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20080205 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080404 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20090714 |