(57)【特許請求の範囲】
【請求項１】
コンピュータシステムに存在しないプロセッサに対する無効化要求を処理する方法であって、
無効化要求を受信する段階と、
前記無効化要求によって影響を受けるプロセッサの識別情報を受信する段階と、
識別された前記プロセッサの何れが前記コンピュータシステム内に存在しているかを決定する段階と、
前記コンピュータシステム内に存在することが決定された各々のプロセッサに対する無効化メッセージを生成する段階と、
前記無効化メッセージを前記存在するプロセッサへ転送する段階と、
を含むことを特徴とする方法。
【請求項２】
識別された前記プロセッサの何れが前記コンピュータシステム内に存在していないかを決定する段階と、
前記コンピュータシステムに存在していないことが決定された各々の識別されたプロセッサに対する受信確認メッセージを生成する段階と、
を更に含んでいることを特徴とする請求項１に記載の方法。
【請求項３】
前記無効化要求の発信者へ受信確認メッセージを転送する段階を更に含むことを特徴とする請求項２に記載の方法。
【請求項４】
それぞれの無効化メッセージ処理に応答して存在するプロセッサから返送された受信確認メッセージを受信する段階と、
前記コンピュータシステムに存在しない識別されたプロセッサに関連する受信確認メッセージを受信する段階と、
を更に含むことを特徴とする請求項３に記載の方法。
【請求項５】
識別されたプロセッサの存在を決定する前記段階は、レジスタにセットされたプロセッサステータスビットを調べる段階を含むことを特徴とする請求項１に記載の方法。
【請求項６】
コンピュータシステムに存在しないプロセッサに対する無効化要求を処理する装置であって、
メモリへのアクセス、及びメモリに対するデータ操作を制御するようオペレーション可能なメモリディレクトリ・インタフェースユニットと、
前記メモリのデータ操作に応答して無効化要求を生成するようオペレーション可能であり、前記コンピュータシステムの何れのプロセッサが無効化要求の影響を受けるかを示す識別信号を生成するようオペレーション可能な前記メモリディレクトリ・インタフェースユニットへ無効化要求を供給するようオペレーション可能なプロセッサ・インタフェースユニットと、
前記メモリディレクトリ・インタフェースユニットによって識別された何れのプロセッサが前記コンピュータシステム内に存在するかを決定するようオペレーション可能であり、存在する各々の識別されたプロセッサに対する無効化メッセージを生成するようオペレーション可能であり、前記メモリディレクトリ・インタフェースユニットによって識別された何れのプロセッサが前記コンピュータシステムに存在しないかを決定するようオペレーション可能であり、存在しない各々の識別されたプロセッサに対して受信確認メッセージを生成するようオペレーション可能であるローカル・ブロックユニットと、
を備えることを特徴とする装置。
【請求項７】
前記ローカル・ブロックユニットは、前記無効化メッセージを存在するプロセッサのそれぞれに転送し、前記ローカル・ブロックユニットは、前記存在するプロセッサからの関連の前記無効化メッセージ処理に応答する受信確認メッセージを受信するようオペレーション可能であることを特徴とする請求項６に記載の装置。
【請求項８】
前記ローカル・ブロックユニットは、前記受信確認メッセージを前記プロセッサ・インタフェースユニットへ転送することを特徴とする請求項６に記載の装置。
【請求項９】
前記ローカル・ブロックユニットは、領域存在レジスタ及びノード不存在レジスタを含み、前記領域存在レジスタは、何れのプロセッサグループが前記コンピュータシステム内に存在するかの指示を与え、前記ノード不存在レジスタは、何れのプロセッサが前記プロセッサグループに存在しないかの指示を与えることを特徴とする請求項６に記載の装置。
【請求項１０】
前記ローカル・ブロックユニットは、前記領域存在レジスタに示されている特定のプロセッサに関連するプロセッサグループが存在するか否かを決定することを特徴とする請求項９に記載の装置。
【請求項１１】
前記ローカル・ブロックユニットは、前記ノード不存在レジスタに示されている前記特定のプロセッサが存在しないか否かを決定することを特徴とする請求項１０に記載の装置。
【請求項１２】
前記ローカル・ブロックユニットは、前記特定のプロセッサに関連する前記プロセッサグループが存在し、かつ前記特定のプロセッサが存在しないという前記決定に応答して、前記特定のプロセッサに関連する無効化メッセージを生成することを特徴とする請求項１１に記載の装置。
【請求項１３】
前記ローカル・ブロックユニットは、前記特定のプロセッサのプロセッサグループが存在することが検出されないか、又は前記特定のプロセッサが存在しないことが識別されるかに応答して、前記特定のプロセッサに関連する無効化メッセージを生成することを特徴とする請求項１１に記載の装置。
【請求項１４】
前記ローカル・ブロックユニットは、前記メモリディレクトリ・インタフェースユニットからベクトルアドレスを受信し、前記ローカル・ブロックユニットは、前記ベクトルアドレスに応答してベクトルテーブルにアクセスするようオペレーション可能であり、前記ベクトルテーブルは、前記メモリディレクトリ・インタフェースユニットによって前記無効化要求の影響を受けているこが決定されているプロセッサを識別することを特徴とする請求項６に記載の装置。
【請求項１５】
前記ベクトルアドレスは、前記ベクトルテーブル内の５１２個の識別情報にアクセスするようオペレーション可能な９ビットフィールドであることを特徴とする請求項１４に記載の装置。
【発明の詳細な説明】
【０００１】
（発明の技術分野）
本発明は、マルチプロセッサ・コンピュータシステムのオペレーション一般に関するものであり、より詳細には、コンピュータシステム内に存在しないプロセッサに対する無効化要求を処理する方法及び装置に関する。
【０００２】
（背景技術）
従来から、大型コンピュータシステムは、ノード位置に設けられたノードコントローラを介してアクセスされる多数のプロセッサを実装している。ノードコントローラは、粗ディレクトリプロトコルを用いたメモリディクトリを含んでいる。粗ディレクトリプロトコルは、メモリディクトリにおけるスペースを節約することによって、コンピュータシステム内の各々のプロセッサを表す方法を提供する。スペースの節約は、ノードコントローラとメモリ内の情報を共有する対応するプロセッサとをグループ化することによってなされる。キャッシュ線の共有コピーを有する全てのノードを無効にすることが必要になると、メモリの共有コピーを有するノードを含むグループ内の全てのノードに無効化コマンドが送られる。一般に、各々のノードは、無効化コマンドを処理して、無効化コマンドを発信したノードに受信確認メッセージを返送する。コンピュータシステムの完全オペレーションは、全ての期待される受信確認メッセージが受信されてはじめて継続されるので、コンピュータシステムが有効にオペレーションするためには、グループ内の各々のノードが存在し、かつオペレーション可能である必要がある。しかし、グループの特定のノードが存在しない場合又は故障している場合がある。通常のコンピュータシステムは、単に、存在しないノードに無効化コマンドを送信する問題を発生させたり、又は問題に対処するためにディレクトリスペースを無駄にしていた。従って、コンピュータシステム内に存在しない又はオペレーション可能でないノードに対する無効化コマンドを処理する方法を提供することが望まれている。
【０００３】
（発明の概要）
前述の説明から、コンピュータシステムから取り外されるか、又は利用できないプロセッサに対する無効化要求を処理する方法の必要性が分かる。本発明によれば、コンピュータシステムに存在しないプロセッサに対する無効化要求を処理する方法及び装置が提供され、従来のコンピュータシステムのオペレーションに関連する欠点及び問題点を実質的に取り除くか又は低減する。
【０００４】
本発明の実施形態によれば、無効化要求及び無効化要求によって影響を受けるプロセッサの識別情報を受信する段階を含む、コンピュータシステムに存在しないプロセッサに対する無効化要求を処理する方法が提供され、どのプロセッサがその時点でコンピュータシステム内に存在し、どのプロセッサがその時点でコンピュータシステム内に存在しないかに関する決定を行う。無効化メッセージが生成され、コンピュータシステム内に存在すると決定されたプロセッサに転送される。受信確認メッセージは、それぞれの無効化メッセージを受信して処理したプロセッサから返送される。コンピュータシステム内に存在しないと決定されたプロセッサに代わって受信確認メッセージが生成され返送される。
【０００５】
本発明は、従来のコンピュータシステムのオペレーションよりも優れた種々の技術的利点を提供する。例えば、１つの技術的利点は、コンピュータシステム内に存在しないプロセッサへ無効化メッセージを送らない点にある。別の技術的利点は、存在しないプロセッサを対象とする無効化要求があっても、コンピュータシステムの有効なオペレーションを維持する点にある。更に別の技術的利点は、存在しないプロセッサに対する無効化要求を選別してそれに対する受信確認メッセージを生成する点にある。さらに別の技術的利点は、コンピュータシステムにおける種々の粗ディレクトリプロトコルを使用できるようにする点にある。他の技術的利点は、当業者であれば、以下の図面、詳細な説明、及び請求の範囲から容易に理解できるはずである。
【０００６】
本発明及びその利点を更に完全に理解するために、同じ参照番号は同一の部分を示している添付の図面と併せて以下の説明を参照されたい。
【０００７】
（発明の詳細な説明）
図１は、コンピュータシステム１０のブロック図である。コンピュータシステム１０は、ネットワーク１４によって接続されている複数のノードコントローラ１２を含んでいる。各々のノードコントローラ１２は、ネットワーク１４上のコンピュータシステム１０内の他のノードコントローラ１２と共に、データ及びトラヒックの両方を内部処理する。各々のノードコントローラは、ローカルプロセッサ１６、ローカルメモリ装置１７、及びローカル入出力装置１８と通信できる。
【０００８】
図２は、ノードコントローラ１２のブロック図である。ノードコントローラ１２は、ネットワーク・インタフェースユニット２０、メモリディレクトリ・インタフェースユニット２２、プロセッサ・インタフェースユニット２４、入出力インタフェースユニット２６、ローカル・ブロックユニット２８、及びクロスバーユニット３０を含んでいる。ネットワーク・インタフェースユニット２０は、データメッセージ、及び他のトラヒックをコンピュータシステム１０の他のノードコントローラ１２へ転送するために、ネットワーク１４への通信リンクを備えることができる。プロセッサ・インタフェースユニット２４は、１つ又はそれ以上のローカルプロセッサ１６との通信リンクを備えることができる。メモリディレクトリ・インタフェースユニット２２は、ローカルメモリ装置１７との通信リンクを備えることができる。入出力インタフェースユニット２６は、ローカル入出力装置１８との通信リンクを備えることができる。ローカル・ブロックユニット２８は、無効化要求を処理して、プログラムされた入出力操作を処理する専用ユニットである。クロスバーユニット３０は、ノードコントローラ１２のデータ、メッセージ、及び他のトラヒックを調停するようになっている。
【０００９】
図３は、クロスバーユニット３０のブロック図である。クロスバーユニット３０は、ネットワークインタフェース・出力キュー４０、メモリ・出力キュー４２、入出力・入力キュー４４、入出力・出力キュー４６、ローカルブロック・入力キュー４８、ローカルブロック・出力キュー５０、プロセッサインタフェース・出力キュー５２、プロセッサインタフェース・入力キュー５４、調停回路５６、及びデータパス・クロスバー５８を含んでいる。データパス・クロスバー５８は、データ、メッセージ、及び他のトラヒックをメモリディレクトリ・インタフェースユニット２２、及びネットワーク・インタフェースユニット２０へ供給する。データパス・クロスバー５８は、データメッセージ、及び他のトラヒックをプロセッサインタフェース・入力キュー５４、及び入出力・入力キュー４４へ供給する。データパス・クロスバー５８は、ローカル・ブロックユニット２８で処理するために、無効化要求をローカルブロック・入力キュー４８へ供給する。データパス・クロスバー５８は、ローカル・ブロックユニット２８で生成される無効化要求を、ローカルブロック・出力キュー５０から受信する。また、データパス・クロスバー５８は、メモリ出力キュー４２からのデータ、及び入出力・出力キュー４６からのデータ、メッセージ、及び他のトラヒックを受信する。また、データパス・クロスバー５８は、プロセッサインタフェース・出力キュー５２及びネットワークインタフェース・出力キュー４０からのデータメッセージ、他のトラヒック、及び無効化要求を受信する。調停回路５６は、全てのクロスバーユニット３０のキュー及びノードコントローラ１２のユニットの間で、データメッセージ、他のトラヒック、及び無効化要求を転送するためのデータパス・クロスバー５８の構成を決定する。
【００１０】
図４は、ノードコントローラ１２によって無効化要求を処理する方法を示す。ローカルプロセッサ１６は、ローカル入出力装置１８内のメモリ位置に、メモリディレクトリ・インタフェースユニット２２及びプロセッサ・インタフェースユニット２４を介してアクセスする。ローカルプロセッサ１６がローカルメモリ１７のアクセスしたメモリ位置で特定のデータを変更する場合、ローカルプロセッサ１６は、メモリディレクトリ・インタフェースユニット２２へ転送するために、入出力インタフェースユニット２４に供給される無効化要求を生成する。メモリディレクトリ・インタフェースユニットは、コンピュータシステム１０内のノードコントローラ１２に対する、変更される特定のデータを共有する全てのローカルプロセッサ１６の識別情報リストを含む、コンパクトな形式の無効化要求を生成する。無効化要求は、プロセッサインタフェース・出力キュー５２を介して、クロスバーユニット３０のデータパス・クロスバー５８に転送されるとローカルブロック・入力キュー４８へ供給される。ローカル・ブロックユニット２８は、無効化要求内に示されている各々のローカルプロセッサ１６に対する無効化メッセージを生成することによって、無効化要求を処理する。無効化メッセージは、ローカルプロセッサ１６にそのバージョンの特定のデータはもはや正しくないことを知らせる。ローカル・ブロックユニット２８は、調停回路５６によって決定されるように、データパス・クロスバー５８を介してメモリディレクトリ・インタフェースユニット２０へ転送するために、無効化要求をローカルブロック・出力キュー５０へ供給する。調停回路５６は、任意の所望の公平性プログラムを使用して、無効化メッセージを他のトラヒックにインターリーブして、ノードコントローラ１２が確実に強力な操作性を提供し続けるようにする。受信確認メッセージは、遠隔プロセッサ１６が関連の無効化メッセージを受信して処理すると生成される。受信確認メッセージは、無効化メッセージを生成したローカルプロセッサ１６に転送され、遠隔プロセッサが、特定データの現バージョンがもはや正しくないことを認識していることを知らせる。
【００１１】
特定の状況において、種々のローカルプロセッサ１６は、コンピュータシステム１０内に存在しないか、又は非オペレーション状態にある場合がある。この状況に適合するように、ローカル・ブロックユニット２８は、メモリディレクトリ・インタフェースユニット２２から提供される識別情報リストが、その時点でコンピュータシステム１０内に存在しないであろうプロセッサを含むか否かを確認する。ローカル・ブロックユニット２８は、コンピュータシステム１０内にローカルプロセッサ１６が存在することを決定するための２つのレジスタ、即ち、領域存在レジスタ６０及びノード不存在レジスタ６２を含んでいる。領域存在レジスタ６０は、どのローカルプロセッサ１６がコンピュータシステム１０内に存在するかを識別する。領域存在レジスタ６０内の各ビットは、コンピュータシステム１０内の単一プロセッサ１６を表す場合もある。しかし、領域存在レジスタ６０内の各ビットは、他の用途のためにレジスタ空間を節約する目的で圧縮技術によって、コンピュータシステム１０内のプロセッサ１６のグループを表すことが好ましい。ノード不存在レジスタ６２は、コンピュータシステム１０内に存在しないプロセッサ１６のリストを含む。ノード不存在レジスタ６２を使用すると、個々のプロセッサ１６を保守の目的でコンピュータシステム１０から取り外すことができるが、グループ内の他のプロセッサ１６は、オペレーションを継続することができ、グループ内の個々のプロセッサを取り外すことにより非オペレーション状態になることはない。
【００１２】
ローカル・ブロックユニット２８は、システム内に存在しない各々のプロセッサ１６に対する無効化メッセージを送出しない。ローカル・ブロックユニット２８は、コンピュータシステム１０内に存在しないことがメモリディレクトリ・インタフェースユニット２２によって識別されているプロセッサ１６に関するプロセッサ・インタフェースユニット２４へ受信確認メッセージを送出する。オペレーション時に、ローカル・ブロックユニット２８は、無効化要求、及び変更されたデータを共有するプロセッサの識別情報を受信する。メモリディレクトリ・インタフェースユニット２２によって識別された各々のプロセッサ１６に対して、ローカル・ブロックユニット２８は、コンピュータシステム１０内のプロセッサグループの存在を示す領域存在レジスタ６０に、対応するビットがセットされているか否かを確認する。対応するビットがセットされていない場合、特定のプロセッサ１６がコンピュータシステム１０内にその時点で存在していないことが分かる。ローカル・ブロックユニット２８は、ノードコントローラ１２が有効にオペレーションを継続し、そこに存在しないプロセッサからの受信確認メッセージの受信を待つことがないよう、プロセッサ・インタフェースユニット２４に転送するための受信確認メッセージを生成する。
【００１３】
対応するビットがセットされている場合、ローカル・ブロックユニット２８は、特定のプロセッサ１６を含むプロセッサ１６のグループが存在していることを認識する。次に、ローカル・ブロックユニット２８は、ノード不存在レジスタ６２を調べて、特定のプロセッサ１６がプロセッサグループ内に存在するか否かを確認する。ノード不存在レジスタ６２内の対応するビットがセットされていない場合、ローカル・ブロックユニット２８は、特定のプロセッサ１６が存在しないことを認識し、プロセッサ・インタフェースユニット２４に転送するための前述の受信確認メッセージを生成する。ノード不存在レジスタ６２内の対応するビットがセットされている場合、ローカル・ブロックユニット２８は、特定のプロセッサ１６が存在することを認識する。次に、ローカル・ブロックユニット２８は、前述の処理を目的としてプロセッサ１６に無効化メッセージを送出する。無効化メッセージを処理すると同時に、特定のプロセッサ１６は、無効化要求を発信したコンピュータシステム１０内のプロセッサ・インタフェースユニット２４に受信確認メッセージを返送する。
【００１４】
図５は、無効化要求の影響を受けたプロセッサ１６の識別情報が、どのようにしてメモリディレクトリ・インタフェースユニット２２から提供され、プロセッサ・インタフェースユニット２４によって決定されるかを示す。メモリディレクトリ・インタフェースユニット２２は、９ビットベクトルのアドレスをローカル・ブロックユニット２８に提供する。ベクトルアドレスは、無効化要求の影響を受けるプロセッサの識別情報を決定するのに使用される。ベクトルアドレスは、第１の部分６６及び第２の部分６８を有している。第１の部分６６は、ベクトルアドレス０、１、２、３、及び４による、１６ビットベクトルを提供する。第２の部分６６は、ベクトルアドレス４、５、６、７、及び８による、３２ビットベクトルを提供する。第１の部分６６及び第２の部分６８は、ベクトルテーブル７０の行及び列を表している。第１の部分６６及び第２の部分６８の各々のビットセットに対し、ベクトルテーブル７０内のそれらの交点に基づいてプロセッサ識別情報が決定される。このベクトル法によって、コンピュータシステム１０に存在しないプロセッサ１６の識別情報を取得できる。つまり、前述の方法は、この方式で識別されるが存在していないプロセッサ１６を処理する。ローカル・ブロックユニット２８は、ベクトルアドレスの第１の部分６６及び第２の部分６８のビットセットによって決定される、ベクトルテーブル７０の交点によって識別される、各々のプロセッサ１６の存在に対する検査を行う。ベクトルアドレスは、５１２個のプロセッサを識別する９ビットフィールドとして示されているが、任意のビット数であってもよく、例えば、ベクトルテーブル７０がコンピュータシステム１０内の任意の数のプロセッサ１６に適合するよう任意のサイズであってもよい。
【００１５】
このような方法で、コンピュータシステム１０内のノード及びプロセッサを識別する無効化要求は、コンピュータシステム１０の有効なオペレーションを維持しながら、選別されて適切に処理できる。グループの単一ノード又はプロセッサは、疑似受信確認メッセージをコンピュータシステム１０のオペレーションに本質的に与えることによって、グループ内の他のノード及びプロセッサの取り外し又は非オペレーション化を強いることなく、取り外すこと又は非オペレーション状態にすることができる。領域存在レジスタ６０又はノード不存在レジスタ６２を使用すると、異なる形式のグループ化のシナリオを用いる種々の粗ディレクトリプロトコルは、レジスタ空間の効率的使用を達成できる。
【００１６】
従って、本発明によって、前述の利点を満足するコンピュータシステム内に存在しないプロセッサに対する無効化要求を処理する方法及び装置が提供できることは明らかである。本発明は詳細に説明されているが、当業者であれば、請求の範囲によって定義される本発明の精神及び範囲を逸脱することなく、種々の変更、置換、及び変形を容易に行い得ることを理解されたい。
【図面の簡単な説明】
【図１】  コンピュータシステムのブロック図を示す。
【図２】  コンピュータシステムのノードコントローラの単純化されたブロック図を示す。
【図３】  コンピュータシステムのクロスバーユニットの単純化されたブロック図を示す。
【図４】  ノードコントローラにおける無効化メッセージの処理及び配信を示す。
【図５】  無効化要求の影響を受けたプロセッサの識別情報の処理を示す。
【図１】
0003825692.tif 000002
【図２】
0003825692.tif 000003
【図３】
0003825692.tif 000004
【図４】
0003825692.tif 000005
【図５】
0003825692.tif 000006