(57)【要約】  互いに接続された複数のシステムボード（ＳＢ０，ＳＢ２）を有する情報処理装置において、システムボードのそれぞれは、複数の演算処理装置（ＣＰＵ０〜ＣＰＵ２）と、データと、データに対応するディレクトリ情報とを記憶する、いずれかの演算処理装置に対応する複数のメモリ（Ｍ８）と、を備え、演算処理装置は、自装置に対応するメモリが記憶するデータの読み出し要求を他の演算処理装置から受けた場合、読み出し要求に含まれる他の演算処理装置を識別する識別情報と、ディレクトリ情報に含まれ読み出し要求の対象データを保持する演算処理装置を識別するチェックビット（ＣＢ）との排他的論理和を演算し、ディレクトリ情報に含まれ対象データを保持する演算処理装置の数を示すカウント値（ＣＮＴ）をインクリメントし、ディレクトリ情報に含まれ他の演算処理装置を含むシステムボードを示すプレゼンス情報（ＰＢ）を設定する複数の演算処理装置を有する。
2013042240.tif 000002
【特許請求の範囲】
【請求項１】
互いに接続された複数のシステムボードを有する情報処理装置において、
前記システムボードのそれぞれは、
複数の演算処理装置と、
データと、前記データに対応するディレクトリ情報とを記憶する、いずれかの演算処理装置に対応する複数のメモリと、を備え、
前記演算処理装置は、
自装置に対応するメモリが記憶するデータの読み出し要求を他の演算処理装置から受けた場合、前記読み出し要求に含まれる他の演算処理装置を識別する識別情報と、前記ディレクトリ情報に含まれ前記読み出し要求の対象データを保持する演算処理装置を識別するチェックビットとの排他的論理和を演算し、前記ディレクトリ情報に含まれ前記対象データを保持する演算処理装置の数を示すカウント値をインクリメントし、前記ディレクトリ情報に含まれ前記他の演算処理装置を含むシステムボードを示すプレゼンス情報を設定するとともに、読み出し要求を行った他の演算処理装置に前記対象データを出力する複数の演算処理装置を有する、
ことを特徴とする情報処理装置。
【請求項２】
前記演算処理装置は、
自装置に対応するメモリが記憶するデータの書き込みの排他権の獲得要求を他の演算処理装置から受けた場合、前記プレゼンスビットに対応するシステムボード内の全ての演算処理装置に対して保持するデータの無効化要求を出力し、前記無効化要求に応答して前記プレゼンスビットに対応するシステムボード内のいずれかの演算処理装置から保持するデータの無効化応答が入力した場合、前記無効化応答をした演算処理装置の識別情報と前記チェックビットとの排他的論理和を演算し、前記カウント値をデクリメントすることを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記演算処理装置は、
自装置に対応するメモリが記憶するデータの書き込みの排他権の獲得要求を他の演算処理装置から受けた場合、前記チェックビット及び前記カウント値の更新後に前記カウント値が０以外の場合、前記システムボードに含まれる演算処理装置のいずれかが故障であると判断することを特徴とする請求項２記載の情報処理装置。
【請求項４】
前記演算処理装置は、
自装置に対応するメモリ内のデータの書き込みのための排他権の獲得要求を他の演算処理装置から受け、前記チェックビット及び前記カウント値を更新した後、前記カウント値が１である場合、前記チェックビットに対応する演算処理装置又は自装置が故障であると判断することを特徴とする請求項２記載の情報処理装置。
【請求項５】
前記演算処理装置は、
自装置に対応するメモリ内のデータの書き込みのための排他権の獲得要求を他の前記演算処理装置から受け、前記チェックビット及び前記カウント値を更新した後、前記チェックビットが０以外の場合、自装置に対応するシステムボードに含まれる演算処理装置のいずれかが故障であると判断することを特徴とする請求項２記載の情報処理装置。
【請求項６】
前記カウント値は、
ディレクトリ情報に対応するデータを保持する演算処理装置の数を表した２進数の最下位ビットを除いたビットが前記メモリに記憶され、
前記２進数の最下位ビットは、前記チェックビットの全ビットの排他的論理和を演算することにより算出されることを特徴とする請求項１記載の情報処理装置。
【請求項７】
前記識別情報は、
２進数で表した場合に値が１のビットの数が奇数であることを特徴とする請求項１記載の情報処理装置。
【請求項８】
データと、前記データに対応するディレクトリ情報を記憶するメモリを有する、互いに接続された複数のシステムボードを有する情報処理装置の制御方法において、
自装置に対応するメモリが記憶するデータの読み出し要求を他の演算処理装置から受けた場合、前記読み出し要求に含まれる前記他の演算処理装置を識別する識別情報と、前記ディレクトリ情報に含まれ前記読み出し要求の対象データを保持する演算処理装置を識別するチェックビットとの排他的論理和を演算し、
前記ディレクトリ情報に含まれ前記対象データを保持する演算処理装置の数を示すカウント値をインクリメントし、
前記ディレクトリ情報に含まれ前記他の演算処理装置を含むシステムボードを示すプレゼンス情報を設定し、
前記他の演算処理装置に前記対象データを出力することを特徴とする情報処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置及び情報処理装置の制御方法に関する。
【背景技術】
【０００２】
情報処理装置としてのマルチプロセッサシステムに採用されるメモリシステムとして、ＮＵＭＡ（Non-Uniform Memory Access）型がある。この方式は、演算処理装置としての各プロセッサにメモリが分散接続されているため、一元管理されたメモリシステムと異なり、メモリアクセスの分散処理が可能である。したがって、プロセッサ数が増加しても、メモリシステムがボトルネックになり難いという利点がある。【０００３】
この様なメモリシステムにおいて各プロセッサが備えるキャッシュメモリと主記憶装置間の整合性であるキャッシュコヒーレンシを保つための制御として、ディレクトリ方式がある。これは、管理単位のデータブロック毎にディレクトリと呼ばれる領域を用意し、そのディレクトリを参照する事により、データブロックの状況、つまり、プロセッサ間で共有されているのか、排他権を持ったプロセッサがいるのか、どのプロセッサが所持しているのか等を知る事が出来る方式である。【０００４】
例えば、大規模構成におけるディレクトリの物量増加を抑えるため、管理単位をＣＰＵ（Central
Processing System）からＣＰＵグループとするコースビットスキーム（coarse bit
scheme）が提案されている（例えば、非特許文献１参照）。【０００５】
しかし、この方式では、あるＣＰＵが誤った応答を行った場合に、故障箇所の特定が出来なくなるという問題が存在する。例えば、同一グループの４個のＣＰＵが保持している時に、３個のＣＰＵのみが保持の報告をした場合、この方式では保持報告数が誤っている事は分かっても、故障の発生が疑われる被疑ＣＰＵがいずれであるかの判別が出来ない。【０００６】
ＲＡＳ（Reliability、Availability、Serviceability）が求められるコンピュータシステムでは、修復不可能な故障を検出すると、被疑箇所を切り離して再起動を行うことにより縮退し、処理の継続を試みる。そのためには、故障箇所の特定を行う必要がある。【０００７】
また、キャッシュメモリ上の値と主記憶メモリ上の値とが同じシェア状態の場合にはキャッシュメモリ上への登録状況を複数のサブラインで構成されるキャッシュライン単位でディレクトリメモリに記憶するマルチプロセッサ装置が知られている（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００７−４８３４号公報
【非特許文献】
【０００９】
【非特許文献１】Guptaet al, "Reducing memory and traffic requirements for scalable directory-basedcache coherence schemes" In Proceedings of International Conference onParallel Processing, volume I, pp. 312-321, 1990
【発明の概要】
【発明が解決しようとする課題】
【００１０】
１つの側面では、本発明は、故障が予想される演算処理装置を特定することができる情報処理装置及び情報処理装置の制御方法を提供することを目的とする。
【課題を解決するための手段】
【００１１】
情報処理装置は、互いに接続された複数のシステムボードを有する情報処理装置において、前記システムボードのそれぞれは、複数の演算処理装置と、データと、前記データに対応するディレクトリ情報とを記憶する、いずれかの演算処理装置に対応する複数のメモリと、を備え、前記演算処理装置は、自装置に対応するメモリが記憶するデータの読み出し要求を他の演算処理装置から受けた場合、前記読み出し要求に含まれる他の演算処理装置を識別する識別情報と、前記ディレクトリ情報に含まれ前記読み出し要求の対象データを保持する演算処理装置を識別するチェックビットとの排他的論理和を演算し、前記ディレクトリ情報に含まれ前記対象データを保持する演算処理装置の数を示すカウント値をインクリメントし、前記ディレクトリ情報に含まれ前記他の演算処理装置を含むシステムボードを示すプレゼンス情報を設定するとともに、読み出し要求を行った他の演算処理装置に前記対象データを出力する複数の演算処理装置を有する。
【発明の効果】
【００１２】
少ないディレクトリ情報を基に故障が予想される演算処理装置を特定し、信頼性を高めることができる。
【図面の簡単な説明】
【００１３】
【図１】図１は、実施形態によるメモリ分散型マルチプロセッサシステムの構成例を示す図である。
【図２】図２は、図１のシステムボードの構成例を示す図である。
【図３】図３は、図２の中央処理装置の構成例を示す図である。
【図４】図４は、メモリに記憶されるデータ、ディレクトリ情報及びエラー検出訂正（ＥＣＣ）情報の例を示す図である。
【図５Ａ】図５Ａは、比較例によるディレクトリ情報の構成例を示す図である。
【図５Ｂ】図５Ｂは、本実施形態によるディレクトリ情報の構成例を示す図である。
【図６】図６は、中央処理装置の番号と固有ビット列との対応関係を示す図である。
【図７】図７は、システムボード内の中央処理装置が他のシステムボード内のメモリのデータを読み出す場合の例を示す図である。
【図８】図８は、システムボード内の中央処理装置が他のシステムボード内のメモリのデータを読み出す場合の例を示す図である。
【図９】図９は、システムボード内の中央処理装置が他のシステムボード内のメモリのデータを読み出す場合の例を示す図である。
【図１０】図１０は、システムボード内の中央処理装置が他のシステムボード内のメモリのデータを読み出す場合の例を示す図である。
【図１１】図１１は、システムボード内の中央処理装置が他のシステムボード内のメモリのデータを読み出す場合の例を示す図である。
【図１２】図１２は、システムボード内の中央処理装置が他のシステムボード内のメモリのデータを読み出す場合の例を示す図である。
【図１３】図１３は、中央処理装置がデータの書き込みのための排他権の獲得要求を発行する例を示す図である。
【図１４】図１４は、中央処理装置がデータの書き込みのための排他権の獲得要求を発行する例を示す図である。
【図１５】図１５は、中央処理装置がデータの書き込みのための排他権の獲得要求を発行する例を示す図である。
【図１６】図１６は、中央処理装置がデータの書き込みのための排他権の獲得要求を発行する例を示す図である。
【図１７】図１７は、中央処理装置がデータの書き込みのための排他権の獲得要求を発行する例を示す図である。
【図１８】図１８は、中央処理装置がデータの書き込みのための排他権の獲得要求を発行する例を示す図である。
【図１９】図１９は、中央処理装置がデータの書き込みのための排他権の獲得要求を発行する他の例を示す図である。
【図２０】図２０は、中央処理装置がデータの書き込みのための排他権の獲得要求を発行する他の例を示す図である。
【図２１】図２１は、中央処理装置がデータの書き込みのための排他権の獲得要求を発行する他の例を示す図である。
【図２２】図２２は、中央処理装置がデータの書き込みのための排他権の獲得要求を発行する他の例を示す図である。
【図２３】図２３は、中央処理装置がデータの書き込みのための排他権の獲得要求を発行する他の例を示す図である。
【図２４】図２４は、中央処理装置がデータの書き込みのための排他権の獲得要求を発行する他の例を示す図である。
【図２５】図２５は、中央処理装置から読み出し要求又は書き込み要求（排他権獲得要求）が発行された場合のディレクトリ情報の更新処理例を示すフローチャートである。
【図２６】図２６は、図２５の無効化要求の処理例を示すフローチャートである。
【図２７】図２７は、ライトバック又はフラッシュバックの処理におけるディレクトリ情報の更新処理例を示すフローチャートである。
【発明を実施するための形態】
【００１４】
図１は、実施形態による情報処理装置としてのメモリ分散型マルチプロセッサシステムの構成例を示す図である。８枚のシステムボードＳＢ０〜ＳＢ７は、クロスバー１０１及び１０２によって相互に接続される。クロスバー１０１は、４枚のシステムボードＳＢ０〜ＳＢ３に接続される。クロスバー１０２は、４枚のシステムボードＳＢ４〜ＳＢ７に接続される。クロスバー１０１及び１０２は、相互に接続され、システムボードＳＢ０〜ＳＢ７間の通信を行う。
【００１５】
図２は、図１のシステムボードＳＢ０の構成例を示す図である。システムボードＳＢ０は、４個の中央処理装置ＣＰＵ０〜ＣＰＵ３と、主記憶装置を構成する４個のメモリＭ０〜Ｍ３と、システムボードＳＢ０内通信を行うためのルーター２０１とを有する。４個のメモリＭ０〜Ｍ３は、それぞれ、４個の中央処理装置ＣＰＵ０〜ＣＰＵ３に対応して接続される分散メモリ構成である。ルーター２０１は、４個の中央処理装置ＣＰＵ０〜ＣＰＵ３に接続され、システムボードＳＢ０内の中央処理装置ＣＰＵ０〜ＣＰＵ３間の通信を行う。例えば、中央処理装置ＣＰＵ０は、ルーター２０１を介して、他の中央処理装置ＣＰＵ１〜ＣＰＵ３にアクセス依頼することにより、他の中央処理装置ＣＰＵ１〜ＣＰＵ３が持つメモリＭ１〜Ｍ３にアクセスすることができる。中央処理装置ＣＰＵ０〜ＣＰＵ３は、それぞれ、一次キャッシュメモリＡ０〜Ａ３を有する。
【００１６】
システムボードＳＢ０と同様に、システムボードＳＢ１は、４個の中央処理ＣＰＵ４〜ＣＰＵ７、４個のメモリＭ４〜Ｍ７及びルーター２０１を有する。システムボードＳＢ２は、４個の中央処理ＣＰＵ８〜ＣＰＵ１１、４個のメモリＭ８〜Ｍ１１及びルーター２０１を有する。システムボードＳＢ３は、４個の中央処理ＣＰＵ１２〜ＣＰＵ１５、４個のメモリＭ１２〜Ｍ１５及びルーター２０１を有する。システムボードＳＢ４は、４個の中央処理ＣＰＵ１６〜ＣＰＵ１９、４個のメモリＭ１６〜Ｍ１９及びルーター２０１を有する。システムボードＳＢ５は、４個の中央処理ＣＰＵ２０〜ＣＰＵ２３、４個のメモリＭ２０〜Ｍ２３及びルーター２０１を有する。システムボードＳＢ６は、４個の中央処理ＣＰＵ２４〜ＣＰＵ２７、４個のメモリＭ２４〜Ｍ２７及びルーター２０１を有する。システムボードＳＢ７は、４個の中央処理ＣＰＵ２８〜ＣＰＵ３１、４個のメモリＭ２８〜Ｍ３１及びルーター２０１を有する。例えば、中央処理装置ＣＰＵ０は、ルーター２０１及びクロスバー１０１，１０２を介して、他のシステムボードＳＢ１〜ＳＢ７の中央処理装置ＣＰＵ４〜ＣＰＵ３１にアクセス依頼することにより、他の中央処理装置ＣＰＵ４〜ＣＰＵ３１が持つメモリＭ４〜Ｍ３１にアクセスすることができる。
【００１７】
図３は、図２の中央処理装置ＣＰＵ０の構成例を示す図である。演算処理装置としての中央処理装置ＣＰＵ０は、コアユニット３０１、メモリインターフェース３０２、二次キャッシュメモリ部３０３及びルーターインターフェース３０４を有する。コアユニット３０１は、一次キャッシュメモリＡ０を有し、種々の処理を行う。メモリインターフェース３０２は、外部のメモリＭ０に接続され、メモリＭ０との間で情報の入出力を行う。ルーターインターフェース３０４は、外部のルーター２０１に接続され、ルーター２０１との間で情報の入出力を行う。二次キャッシュメモリ部３０３は、リクエスト制御部３１１、ディレクトリ情報更新部３１２及びディレクトリ情報検査部３１３を有する。ディレクトリ情報検査部３１３は、チェックビット検査部３１４を有する。リクエスト制御部３１１は、コアユニット３０１又はルーター２０１からのリクエスト信号を基に制御して応答を行う。ディレクトリ情報更新部３１２は、メモリＭ０又はルーター２０１からの応答信号に応じてディレクトリ情報を管理する。ディレクトリ情報検査部３１３は、ディレクトリ情報の検査を行う。チェックビット検査部３１４は、ディレクトリ情報内のチェックビットの検査を行う。
【００１８】
二次キャッシュメモリ部３０３は、コアユニット３０１からの指示、又はルーターインターフェース３０４を介して他の中央処理装置ＣＰＵ１〜ＣＰＵ３１のコアユニット３０１からの指示をリクエスト制御部３１１で実行し、メモリインターフェース３０２を介してメモリＭ０に対してアクセスを行う。ディレクトリ情報は、それに対応するデータと共にメモリＭ０〜Ｍ３１に記憶されている。中央処理装置ＣＰＵ０は、メモリＭ０から読み出したデータに伴うディレクトリ情報をディレクトリ情報検査部３１３で検査し、必要に応じて他の中央処理装置ＣＰＵ１〜ＣＰＵ３１へ無効化要求を出力したり、データ転送を行う。また、中央処理装置ＣＰＵ０〜ＣＰＵ３１のデータの保持状況が変更される場合、ディレクトリ情報更新部３１２は、メモリＭ０上のディレクトリ情報を更新する。チェックビット検査部３１４は、ディレクトリ情報内のチェックビットの更新及び検査を行う。なお、他の中央処理装置ＣＰＵ１〜ＣＰＵ３１も、中央処理装置ＣＰＵ０と同様の構成を有する。
【００１９】
図４は、メモリＭ０〜Ｍ３１の各々に記憶されるデータ４０１、ディレクトリ情報４０２及びエラー検出訂正（ＥＣＣ）情報４０３の例を示す図である。中央処理装置ＣＰＵ０〜ＣＰＵ３１は、それぞれ、メモリＭ０〜Ｍ３１に対して、図４に示す１２８バイト単位の情報の読み出し及び書き込みを行う。１２８バイト情報は、４組の３２バイト情報を有する。各３２バイト情報は、データ４０１、ディレクトリ情報４０２及びＥＣＣ情報４０３を有する。ＥＣＣ情報４０３は、データ４０１及びディレクトリ情報４０２のエラー検出訂正のための情報である。
【００２０】
例えば、３２バイト毎に、データ４０１は２５６ビット、ディレクトリ情報４０２は８ビット、ＥＣＣ情報４０３は２４ビットである。したがって、データブロックを１２８バイト毎に管理すると、８ビット×４＝３２ビットのディレクトリ情報４０２を確保できる。本実施形態では、３２ビットのディレクトリ情報４０２のうちの２８ビットを使用する。したがって、図４に示す１２８バイトが最小管理単位となる。
【００２１】
図５Ａは、比較例によるディレクトリ情報４０２の構成例を示す図である。ディレクトリ情報４０２は、２ビットのステータスＳＴ、６ビットの中央処理装置カウント値ＣＮＴ及び１６ビットのプレゼンスビット（プレゼンス情報）ＰＢを有する。ステータスＳＴは、それに対応するデータ４０１の状態を示す。ステータスＳＴの「００」は、自己の中央処理装置を除く他の中央処理装置にデータ４０１が保持されていないことを示す。ステータスＳＴの「１０」は、データ４０１の共有状態であり、他の中央処理装置にデータ４０１が保持されていることを示す。ステータスＳＴの「１１」は、データ４０１の排他権を有する他の中央処理装置にデータ４０１が保持されていることを示す。中央処理装置カウント値ＣＮＴは、自己のディレクトリ情報４０２に対応するデータ４０１を保持している中央処理装置（但し、自己の中央処理装置を除く）の数を示す。プレゼンスビットＰＢは、自己のディレクトリ情報４０２に対応するデータ４０１を保持している中央処理装置（但し、自己の中央処理装置を除く）を含むシステムボードを特定するためのビットである。
【００２２】
図５Ｂは、本実施形態によるディレクトリ情報４０２の構成例を示す図である。ディレクトリ情報４０２は、７ビットのチェックビットＣＢ、５ビットの中央処理装置カウント値ＣＮＴ及び１６ビットのプレゼンスビットＰＢを有する。チェックビットＣＢは、自己のディレクトリ情報４０２に対応するデータ４０１を保持している中央処理装置を特定するためのビットであり、中央処理装置の合計数より少ないビット数を有する。中央処理装置カウント値ＣＮＴは、自己のディレクトリ情報４０２に対応するデータ４０１を保持している中央処理装置（自己の中央処理装置を除く）の数を示す。プレゼンスビットＰＢは、自己のディレクトリ情報４０２に対応するデータ４０１を保持している中央処理装置（自己の中央処理装置を除く）を含むシステムボードを特定するためのビットである。プレゼンスビットＰＢは、１６枚のシステムボードＳＢ０〜ＳＢ１５を特定するための１６ビットを有する。
【００２３】
なお、中央処理装置カウント値ＣＮＴは、図５Ａと同様に、自己のディレクトリ情報４０２に対応するデータ４０１を保持している中央処理装置（自己の中央処理装置を除く）の数を示す６ビットの情報であってもよいが、本実施形態では、情報量を減らすため、上記の６ビットの中央処理装置の数のうちの上位５ビットの情報（最下位ビットを除く）の例を説明する。すなわち、中央処理装置カウント値ＣＮＴは、自己のディレクトリ情報４０２に対応するデータ４０１を保持している中央処理装置の数のうちの最下位ビットを除いたビットである。
【００２４】
ディレクトリ情報４０２は、ビット数削減のため、上記のように、自己の中央処理装置を除いた情報を有するが、自己の中央処理装置を含めた情報であってもよい。
【００２５】
図５Ｂのディレクトリ情報４０２は、図５Ａのディレクトリ情報４０２に比べ４ビット増加し、合計で２８ビットとなる。図５Ｂのディレクトリ情報４０２を用いることにより、図５Ａのディレクトリ情報４０２に対して、故障が予想される中央処理装置の発見率が向上する。また、図５Ｂのディレクトリ情報４０２は、図５Ａのディレクトリ情報４０２に対して、ステータスＳＴ及び中央処理装置カウント値ＣＮＴの最下位ビットが削減されているが、後述のように他の情報から復元可能であるため問題とならない。
【００２６】
中央処理装置カウント値ＣＮＴの最大値が、中央処理装置の全数である６４ではなく、６３であるのは、自己のメモリを自己の中央処理装置が保持するケースの登録が不要だからである。自己の中央処理装置がデータ４０１を保持しているか否かはディレクトリ情報４０２に因らず、自己の２次キャッシュメモリ部３０３の状態から判別可能である。
【００２７】
図６は、中央処理装置の番号と固有ビット列ＢＢとの対応関係を示す図である。固有ビット列（識別情報）ＢＢは、各中央処理装置を識別する固有の７ビットのビット列である。例えば、中央処理装置ＣＰＵ０の固有ビット列ＢＢは２進数で「００００００１」（１０進数で「１」）であり、中央処理装置ＣＰＵ１の固有ビット列ＢＢは２進数で「０００００１０」（１０進数で２）である。中央処理装置ＣＰＵ０〜ＣＰＵ６３の各々の固有のビット列ＢＢは、値が１のビット数が奇数である。例えば、中央処理装置ＣＰＵ０〜ＣＰＵ２は値が１のビット数は１であり、中央処理装置ＣＰＵ３〜ＣＰＵ６は値が１のビット数は３である。
【００２８】
図５ＢのチェックビットＣＢの初期値は０である。中央処理装置ＣＰＵ０〜ＣＰＵ６３は、それぞれ、他の中央処理装置ＣＰＵ０〜ＣＰＵ６３から自己のメモリＭ０〜Ｍ６３にアクセスされると、チェックビットＣＢに対して、アクセスした中央処理装置ＣＰＵ０〜ＣＰＵ６３の固有ビット列ＢＢを排他的論理和演算する。以下、図５Ｂのディレクトリ情報４０２の更新例を説明する。まず、図７〜図１２を参照しながら、中央処理装置がデータの読み出し要求を発行する例を示す。
【００２９】
図７は、システムボードＳＢ０内の中央処理装置ＣＰＵ０が他のシステムボードＳＢ２内のメモリＭ８のデータを読み出す場合の例を示す図である。システムボードＳＢ０は、中央処理装置ＣＰＵ０〜ＣＰＵ２を有する。システムボードＳＢ２は、中央処理装置ＣＰＵ８及び中央処理装置ＣＰＵ８に接続されたメモリＭ８を有する。メモリＭ８には、チェックビットＣＢ、中央処理装置カウント値ＣＮＴ及びプレゼンスビットＰＢを含むディレクトリ情報４０２が記憶されている。チェックビットＣＢ、中央処理装置カウント値ＣＮＴ及びプレゼンスビットＰＢの初期値はすべて０である。まず、システムボードＳＢ０内の中央処理装置ＣＰＵ０は、メモリＭ８内のデータ４０１を読み出すため、システムボードＳＢ２内の中央処理装置ＣＰＵ８に読み出し要求を出力する。
【００３０】
次に、図８に示すように、システムボードＳＢ２内の中央処理装置ＣＰＵ８は、上記の読み出し要求に応答し、メモリＭ８内のデータ４０１及びＥＣＣ情報４０３を読み出し、システムボードＳＢ０内の中央処理装置ＣＰＵ０に出力し、メモリＭ８内のチェックビットＣＢ、中央処理装置カウント値ＣＮＴ及びプレゼンスビットＰＢを更新する。具体的には、システムボードＳＢ２内の中央処理装置ＣＰＵ８は、チェックビットＣＢの２進数「００００００００」（１０進数「０」）に対して、読み出し要求した中央処理装置ＣＰＵ０の固有ビット列ＢＢの２進数「００００００１」（１０進数「１」）を排他的論理和演算する。排他的論理和演算により、固有ビット列ＢＢが０のビットに対応するチェックビットＣＢのビットは変化せず、固有ビット列ＢＢが１のビットに対応するチェックビットＣＢのビットは論理反転する。その結果、チェックビットＣＢは、２進数「００００００１」（１０進数「１」）になる。このチェックビットＣＢを参照することにより、チェックビットＣＢと同じ固有ビット列ＢＢを持つ中央処理装置ＣＰＵ０がデータ４０１を保持していることが分かる。また、中央処理装置ＣＰＵ８は、中央処理装置カウント値ＣＮＴをインクリメントする。これにより、中央処理装置カウント値ＣＮＴは「１」になる。なお、中央処理装置カウント値ＣＮＴは、最下位ビットを有さないが、後述の方法により、その最下位ビットを復元可能であるため、以下では最下位ビットを復元後の中央処理装置カウント値ＣＮＴを示す。また、中央処理装置ＣＰＵ８は、プレゼンスビットＰＢにおいて、読み出し要求した中央処理装置ＣＰＵ０を含むシステムボードＳＢ０を特定するためのビットを有効にする。例えば、プレゼンスビットＰＢは、最下位ビットがシステムボードＳＢ０を示し、下位から２番目のビットがシステムボードＳＢ１を示す。これにより、プレゼンスビットＰＢは、「０００００００００００００００１」になる。
【００３１】
次に、図９に示すように、システムボードＳＢ０内の中央処理装置ＣＰＵ１は、メモリＭ８内のデータ４０１を読み出すため、システムボードＳＢ２内の中央処理装置ＣＰＵ８に読み出し要求を出力する。
【００３２】
次に、図１０に示すように、システムボードＳＢ２内の中央処理装置ＣＰＵ８は、上記の読み出し要求に応答し、メモリＭ８内のデータ４０１及びＥＣＣ情報４０３を読み出し、システムボードＳＢ０内の中央処理装置ＣＰＵ１に出力し、メモリＭ８内のチェックビットＣＢ、中央処理装置カウント値ＣＮＴ及びプレゼンスビットＰＢを更新する。具体的には、中央処理装置ＣＰＵ８は、チェックビットＣＢの２進数「０００００００１」（１０進数「１」）に対して、読み出し要求した中央処理装置ＣＰＵ１の固有ビット列ＢＢの２進数「０００００１０」（１０進数「２」）を排他的論理和演算する。その結果、チェックビットＣＢは、２進数「０００００１１」（１０進数「３」）になる。また、中央処理装置ＣＰＵ８は、中央処理装置カウント値ＣＮＴをインクリメントする。これにより、中央処理装置カウント値ＣＮＴは「２」になる。また、中央処理装置ＣＰＵ８は、プレゼンスビットＰＢにおいて、読み出し要求した中央処理装置ＣＰＵ１を含むシステムボードＳＢ０を特定するためのビットを有効にする。これにより、プレゼンスビットＰＢは、「０００００００００００００００１」になる。チェックビットＣＢ及び中央処理装置カウント値ＣＮＴを参照することにより、２個の中央処理装置がデータ４０１を保持していることが分かる。
【００３３】
次に、図１１に示すように、システムボードＳＢ０内の中央処理装置ＣＰＵ２は、メモリＭ８内のデータ４０１を読み出すため、システムボードＳＢ２内の中央処理装置ＣＰＵ８に読み出し要求を出力する。
【００３４】
次に、図１２に示すように、システムボードＳＢ２内の中央処理装置ＣＰＵ８は、上記の読み出し要求に応答し、メモリＭ８内のデータ４０１及びＥＣＣ情報４０３を読み出し、システムボードＳＢ０内の中央処理装置ＣＰＵ２に出力し、メモリＭ８内のチェックビットＣＢ、中央処理装置カウント値ＣＮＴ及びプレゼンスビットＰＢを更新する。具体的には、中央処理装置ＣＰＵ８は、チェックビットＣＢの２進数「００００００１１」（１０進数「３」）に対して、読み出し要求した中央処理装置ＣＰＵ２の固有ビット列ＢＢの２進数「００００１００」（１０進数「４」）を排他的論理和演算する。その結果、チェックビットＣＢは、２進数「００００１１１」（１０進数「７」）になる。また、中央処理装置ＣＰＵ８は、中央処理装置カウント値ＣＮＴをインクリメントする。これにより、中央処理装置カウント値ＣＮＴは「３」になる。また、中央処理装置ＣＰＵ８は、プレゼンスビットＰＢにおいて、読み出し要求した中央処理装置ＣＰＵ２を含むシステムボードＳＢ０を特定するためのビットを有効にする。これにより、プレゼンスビットＰＢは、「０００００００００００００００１」になる。チェックビットＣＢ及び中央処理装置カウント値ＣＮＴを参照することにより、３個の中央処理装置がデータ４０１を保持していることが分かる。
【００３５】
以上のように、中央処理装置ＣＰＵ８は、自己の中央処理装置ＣＰＵ８に対応するメモリＭ８内のデータ４０１の読み出し要求を他の中央処理装置ＣＰＵ０〜ＣＰＵ２から受けると、他の中央処理装置ＣＰＵ０〜ＣＰＵ２の固有ビット列ＢＢをチェックビットＣＢに対して排他的論理和演算し、中央処理装置カウント値ＣＮＴをインクリメントし、他の中央処理装置ＣＰＵ０〜ＣＰＵ２を含むシステムボードＳＢ０を示すプレゼンスビットＰＢを有効にし、他の中央処理装置ＣＰＵ０〜ＣＰＵ２にメモリＭ８内のデータ４０１を出力する。
【００３６】
次に、図１３〜図１８を参照しながら、中央処理装置ＣＰＵ４がデータの書き込みのための排他権の獲得要求を発行する例を説明する。ここで、１個の中央処理装置ＣＰＵ２が故障している場合を例に説明する。
【００３７】
図１２に続いて、図１３に示すように、システムボードＳＢ１内の中央処理装置ＣＰＵ４は、メモリＭ８内にデータ４０１を書き込むため、他のシステムボードＳＢ２内の中央処理装置ＣＰＵ８に排他権の獲得要求を出力する。
【００３８】
次に、図１４に示すように、システムボードＳＢ２内の中央処理装置ＣＰＵ８は、上記の排他権の獲得要求に応答し、プレゼンスビットＰＢが有効になっているシステムボードＳＢ０内のすべての中央処理装置ＣＰＵ０〜ＣＰＵ３にデータ４０１の無効化要求を出力する。
【００３９】
次に、図１５に示すように、システムボードＳＢ０内の中央処理装置ＣＰＵ０は、上記の無効化要求に応答し、中央処理装置ＣＰＵ０内の保持しているデータ４０１を消去し、無効化応答として、正常なデータ消去応答をシステムボードＳＢ２内の中央処理装置ＣＰＵ８に出力する。中央処理装置ＣＰＵ８は、無効化応答として、そのデータ消去応答を入力すると、メモリＭ８内のチェックビットＣＢ及び中央処理装置カウント値ＣＮＴを更新する。具体的には、中央処理装置ＣＰＵ８は、チェックビットＣＢの２進数「００００１１１」に対して、システムボードＳＢ０内の中央処理装置ＣＰＵ０の固有ビット列ＢＢの２進数「００００００１」を排他的論理和演算する。例えば、このシステムボードＳＢ０内の中央処理装置ＣＰＵ０の固有ビット列ＢＢの２進数「００００００１」は、当該ＣＰＵ０からの無効化応答に付随するものである。これにより、チェックビットＣＢは、２進数「００００１１０」（１０進数「６」）になる。また、中央処理装置ＣＰＵ８は、中央処理装置カウント値ＣＮＴをデクリメントする。これにより、中央処理装置カウント値ＣＮＴは「２」になる。
【００４０】
次に、図１６に示すように、システムボードＳＢ０内の中央処理装置ＣＰＵ１は、上記の無効化要求に応答し、中央処理装置ＣＰＵ１内の保持しているデータ４０１を消去し、無効化応答として、正常なデータ消去応答をシステムボードＳＢ２内の中央処理装置ＣＰＵ８に出力する。中央処理装置ＣＰＵ８は、無効化応答として、そのデータ消去応答を入力すると、メモリＭ８内のチェックビットＣＢ及び中央処理装置カウント値ＣＮＴを更新する。具体的には、中央処理装置ＣＰＵ８は、チェックビットＣＢの２進数「００００１１０」に対して、システムボードＳＢ０内の中央処理装置ＣＰＵ１の固有ビット列ＢＢの２進数「０００００１０」を排他的論理和演算する。例えば、このシステムボードＳＢ０内の中央処理装置ＣＰＵ１の固有ビット列ＢＢの２進数「０００００１０」は、当該ＣＰＵ１からの無効化応答に付随するものである。これにより、チェックビットＣＢは、２進数「００００１００」（１０進数「４」）になる。また、中央処理装置ＣＰＵ８は、中央処理装置カウント値ＣＮＴをデクリメントする。これにより、中央処理装置カウント値ＣＮＴは「１」になる。
【００４１】
次に、図１７に示すように、システムボードＳＢ０内の中央処理装置ＣＰＵ２が故障している場合を説明する。中央処理装置ＣＰＵ２は、上記の無効化要求に応答し、本来であれば、中央処理装置ＣＰＵ２内の保持しているデータ４０１を消去し、無効化応答として、データ消去応答をシステムボードＳＢ２内の中央処理装置ＣＰＵ８に出力すべきである。しかし、故障のため、中央処理装置ＣＰＵ２は、誤って無効化応答として、不正のデータ非消去応答をシステムボードＳＢ２内の中央処理装置ＣＰＵ８に出力してしまったとする。中央処理装置ＣＰＵ８は、無効化応答として、そのデータ非消去応答を入力すると、メモリＭ８内のチェックビットＣＢ及び中央処理装置カウント値ＣＮＴを更新せずに保持する。
【００４２】
次に、図１８に示すように、中央処理装置ＣＰＵ３は、上記の無効化要求に応答し、データ４０１を保持していないので、無効化応答として、正常なデータ非消去応答をシステムボードＳＢ２内の中央処理装置ＣＰＵ８に出力する。中央処理装置ＣＰＵ８は、無効化応答として、そのデータ非消去応答を入力すると、メモリＭ８内のチェックビットＣＢ及び中央処理装置カウント値ＣＮＴを更新せずに保持する。
【００４３】
システムボードＳＢ０内のすべての中央処理装置ＣＰＵ０〜ＣＰＵ３から上記の応答が入力された後、すべての中央処理装置ＣＰＵ０〜ＣＰＵ３が正常であれば、チェックビットＣＢ及び中央処理装置カウント値ＣＮＴは共に「０」になる。したがって、中央処理装置ＣＰＵ８は、チェックビットＣＢ及び中央処理装置カウント値ＣＮＴが共に「０」であれば、システムボードＳＢ０内のすべての中央処理装置ＣＰＵ０〜ＣＰＵ３が正常であり、正常な処理が行われたことを認識することができる。その後、中央処理装置ＣＰＵ４は、排他権を獲得したので、メモリＭ８にデータを書き込むことができる。その書き込みにより、中央処理装置ＣＰＵ８は、メモリＭ８内のチェックビットＣＢ及び中央処理装置カウント値ＣＮＴを更新する。チェックビットＣＢは２進数「０１１０００１」になり、中央処理装置カウント値ＣＮＴは「１」になり、プレゼンスビットＰＢは全ビットが０のままである。
【００４４】
しかし、図１８の場合、中央処理装置ＣＰＵ８は、チェックビットＣＢ及び中央処理装置カウント値ＣＮＴが「０」ではないので、中央処理装置ＣＰＵ０〜ＣＰＵ３の中のいずれかの故障を予想することができる。具体的には、チェックビットＣＢが２進数「００００１００」（１０進数「４」）であり、中央処理装置カウント値ＣＮＴが「１」であるので、１個の中央処理装置ＣＰＵ３の故障を予想することができる。したがって、中央処理装置ＣＰＵ８は、自己の中央処理装置ＣＰＵ８及び他の中央処理装置ＣＰＵ３の２箇所の故障が疑わしいと判断することができる。このように故障を検出することにより、その後の誤動作を防止することができる。故障した中央処理装置を特定できれば、例えばマルチプロセッサシステムから故障した中央処理装置を切り離すなどにより復旧が可能となるため、マルチプロセッサシステムの全体の信頼性が向上する。
【００４５】
以上のように、中央処理装置ＣＰＵ８は、自己の中央処理装置ＣＰＵ８に対応するメモリＭ８内のデータ４０１の書き込みのための排他権の獲得要求を他の中央処理装置ＣＰＵ４から受けると、プレゼンスビットＰＢが有効になっているシステムボードＳＢ０内の複数の中央処理装置ＣＰＵ０〜ＣＰＵ３に無効化要求を出力し、それに応答してシステムボードＳＢ０内の中央処理装置ＣＰＵ０及びＣＰＵ１から無効化応答として、データ消去応答を入力すると、チェックビットＣＢに対して、システムボードＳＢ０内の中央処理装置ＣＰＵ０及びＣＰＵ１の固有ビット列ＢＢを排他的論理和演算し、中央処理装置カウント値ＣＮＴをデクリメントする。例えば、このシステムボードＳＢ０内の中央処理装置ＣＰＵ０及びＣＰＵ１の固有ビット列ＢＢは、当該ＣＰＵ０及びＣＰＵ１からの無効化応答に付随するものである。
【００４６】
中央処理装置ＣＰＵ８は、自己の中央処理装置ＣＰＵ８に対応するメモリＭ８内のデータ４０１の書き込みのための排他権の獲得要求を他の中央処理装置ＣＰＵ４から受け、チェックビットＣＢ及び中央処理装置カウント値ＣＮＴを更新した後、中央処理装置カウント値ＣＮＴが１であるときにはチェックビットＣＢが示す中央処理装置ＣＰＵ２又は自己の中央処理装置ＣＰＵ８が故障である旨を判断することができる。
【００４７】
また、中央処理装置ＣＰＵ８は、自己の中央処理装置ＣＰＵ８に対応するメモリＭ８内のデータ４０１の書き込みのための排他権の獲得要求を他の中央処理装置ＣＰＵ４から受け、チェックビットＣＢ及び中央処理装置カウント値ＣＮＴを更新した後、中央処理装置カウント値ＣＮＴが２以上の場合にはシステムボードＳＢ０内の複数の中央処理装置が故障である旨を判断することができる。
【００４８】
次に、図１９〜図２４を参照しながら、中央処理装置ＣＰＵ４がデータの書き込みのための排他権の獲得要求を発行する他の例を説明する。ここでは、２個の中央処理装置ＣＰＵ２及びＣＰＵ３が故障している場合を例に説明する。
【００４９】
図１２に続いて、図１９に示すように、システムボードＳＢ１内の中央処理装置ＣＰＵ４は、メモリＭ８内にデータ４０１を書き込むため、システムボードＳＢ２内の中央処理装置ＣＰＵ８に排他権の獲得要求を出力する。
【００５０】
次に、図２０に示すように、システムボードＳＢ２内の中央処理装置ＣＰＵ８は、上記の排他権の獲得要求に応答し、プレゼンスビットＰＢが有効になっているシステムボードＳＢ０内のすべての中央処理装置ＣＰＵ０〜ＣＰＵ３にデータ４０１の無効化要求を出力する。
【００５１】
次に、図２１に示すように、システムボードＳＢ０内の中央処理装置ＣＰＵ０は、上記の無効化要求に応答し、中央処理装置ＣＰＵ０内の保持しているデータ４０１を消去し、無効化応答として、正常なデータ消去応答をシステムボードＳＢ２内の中央処理装置ＣＰＵ８に出力する。中央処理装置ＣＰＵ８は、無効化応答として、そのデータ消去応答を入力すると、メモリＭ８内のチェックビットＣＢ及び中央処理装置カウント値ＣＮＴを更新する。具体的には、中央処理装置ＣＰＵ８は、チェックビットＣＢの２進数「００００１１１」に対して、システムボードＳＢ０内の中央処理装置ＣＰＵ０の固有ビット列ＢＢの２進数「００００００１」を排他的論理和演算する。例えば、このシステムボードＳＢ０内の中央処理装置ＣＰＵ０の固有ビット列ＢＢは、当該ＣＰＵ０からの無効化応答に付随するものである。これにより、チェックビットＣＢは、２進数「００００１１０」（１０進数「６」）になる。また、中央処理装置ＣＰＵ８は、中央処理装置カウント値ＣＮＴをデクリメントする。これにより、中央処理装置カウント値ＣＮＴは「２」になる。
【００５２】
次に、図２２に示すように、システムボードＳＢ０内の中央処理装置ＣＰＵ１は、上記の無効化要求に応答し、中央処理装置ＣＰＵ１内の保持しているデータ４０１を消去し、無効化応答として、正常なデータ消去応答をシステムボードＳＢ２内の中央処理装置ＣＰＵ８に出力する。中央処理装置ＣＰＵ８は、無効化応答として、そのデータ消去応答を入力すると、メモリＭ８内のチェックビットＣＢ及び中央処理装置カウント値ＣＮＴを更新する。具体的には、中央処理装置ＣＰＵ８は、チェックビットＣＢの２進数「００００１１０」に対して、システムボードＳＢ０内の中央処理装置ＣＰＵ１の固有ビット列ＢＢの２進数「０００００１０」を排他的論理和演算する。例えば、このシステムボードＳＢ０内の中央処理装置ＣＰＵ１の固有ビット列ＢＢは、当該ＣＰＵ１からの無効化応答に付随するものである。これにより、チェックビットＣＢは、２進数「００００１００」（１０進数「４」）になる。また、中央処理装置ＣＰＵ８は、中央処理装置カウント値ＣＮＴをデクリメントする。これにより、中央処理装置カウント値ＣＮＴは「１」になる。
【００５３】
次に、図２３に示すように、システムボードＳＢ０内の中央処理装置ＣＰＵ２が故障している場合を説明する。中央処理装置ＣＰＵ２は、上記の無効化要求に応答し、本来であれば、中央処理装置ＣＰＵ２内の保持しているデータ４０１を消去し、無効化応答として、データ消去応答をシステムボードＳＢ２内の中央処理装置ＣＰＵ８に出力すべきである。しかし、中央処理装置ＣＰＵ２は、故障のため、誤って無効化応答として、不正のデータ非消去応答をシステムボードＳＢ２内の中央処理装置ＣＰＵ８に出力してしまったとする。中央処理装置ＣＰＵ８は、無効化応答として、そのデータ非消去応答を入力すると、メモリＭ８内のチェックビットＣＢ及び中央処理装置カウント値ＣＮＴを更新せずに保持する。
【００５４】
次に、図２４に示すように、システムボードＳＢ０内の中央処理装置ＣＰＵ３が故障している場合を説明する。中央処理装置ＣＰＵ３は、上記の無効化要求に応答し、本来であれば、データ４０１を保持していないので、無効化応答として、データ非消去応答をシステムボードＳＢ２内の中央処理装置ＣＰＵ８に出力すべきである。しかし、中央処理装置ＣＰＵ２は、故障のため、誤って無効化応答として、不正のデータ消去応答をシステムボードＳＢ２内の中央処理装置ＣＰＵ８に出力してしまったとする。中央処理装置ＣＰＵ８は、無効化応答として、そのデータ消去応答を入力すると、メモリＭ８内のチェックビットＣＢ及び中央処理装置カウント値ＣＮＴを更新する。具体的には、中央処理装置ＣＰＵ８は、チェックビットＣＢの２進数「００００１００」に対して、システムボードＳＢ０内の中央処理装置ＣＰＵ３の固有ビット列ＢＢの２進数「００００１１１」を排他的論理和演算する。例えば、このシシステムボードＳＢ０内の中央処理装置ＣＰＵ３の固有ビット列ＢＢの２進数「００００１１１」は、当該ＣＰＵ３からの無効化応答に付随するものである。これにより、チェックビットＣＢは、２進数「０００００１１」（１０進数「３」）になる。また、中央処理装置ＣＰＵ８は、中央処理装置カウント値ＣＮＴをデクリメントする。これにより、中央処理装置カウント値ＣＮＴは「０」になる。
【００５５】
システムボードＳＢ０内のすべての中央処理装置ＣＰＵ０〜ＣＰＵ３から上記の応答が入力された後、すべての中央処理装置ＣＰＵ０〜ＣＰＵ３が正常であれば、チェックビットＣＢ及び中央処理装置カウント値ＣＮＴは共に「０」になり、プレゼンスビットＰＢは全ビットが０にクリアされる。したがって、中央処理装置ＣＰＵ８は、チェックビットＣＢ及び中央処理装置カウント値ＣＮＴが共に「０」であれば、システムボードＳＢ０内のすべての中央処理装置ＣＰＵ０〜ＣＰＵ３が正常であり、正常な処理が行われたことを認識することができる。
【００５６】
しかし、図２４の場合、中央処理装置ＣＰＵ８は、中央処理装置カウント値ＣＮＴが「０」であるが、チェックビットＣＢが「０」ではないので、複数の中央処理装置の故障を予想することができる。このように複数の中央処理装置の故障を検出することができ、その後の誤動作を防止することができる。
【００５７】
図５Ｂのディレクトリ情報４０２は、図５ＡのステータスＳＴを省略して情報量の削減を行っているが、省略した情報が再構成可能であることを以下に示す。
【００５８】
ステータスＳＴの「００」は、他の中央処理装置（自己の中央処理装置を除く）にデータ４０１が保持されていないことを示す情報である。中央処理装置カウント値ＣＮＴ［５：１］が「０００００」であり、かつチェックビットＣＢが「０００００００」であり、かつプレゼンスビットＰＢの全ビットが０である場合に、ステータスＳＴが「００」であると判断することができる。
【００５９】
ステータスＳＴの「１０」は、データ４０１の共有状態であり、他の中央処理装置にデータ４０１が保持されていることを示す情報である。中央処理装置カウント値ＣＮＴ［５：１］が任意の値であり、かつチェックビットＣＢが任意の値であり、かつプレゼンスビットＰＢの全ビットが０でない場合に、ステータスＳＴが「１０」であると判断することができる。
【００６０】
ステータスＳＴの「１１」は、データ４０１の排他権を有する他の中央処理装置にデータ４０１が保持されていることを示す情報である。中央処理装置カウント値ＣＮＴ［５：１］が「０００００」であり、かつチェックビットＣＢが「０００００００」でなく、かつプレゼンスビットＰＢの全ビットが０である場合に、ステータスＳＴが「１１」であると判断することができる。
【００６１】
図５Ｂのディレクトリ情報４０２は、中央処理装置カウント値ＣＮＴの最下位ビットＣＮＴ［０］を省略し、情報量を削減している。中央処理装置カウント値ＣＮＴは、自己のディレクトリ情報４０２に対応するデータ４０１を保持している中央処理装置の数ＣＮＴ［５：０］のうちの最下位ビットＣＮＴ［０］を除いたビットＣＮＴ［５：１］がメモリに記憶される。
【００６２】
自己のディレクトリ情報４０２に対応するデータ４０１を保持している中央処理装置の数のうちの最下位ビットＣＮＴ［０］は、チェックビットＣＢの全ビットの排他的論理和演算により算出される。チェックビットＣＢの全ビットの排他的論理和演算の値は、自己のディレクトリ情報４０２に対応するデータ４０１を保持している中央処理装置の数ＣＮＴ［５：０］が奇数のときには１になり、自己のディレクトリ情報４０２に対応するデータ４０１を保持している中央処理装置の数ＣＮＴ［５：０］が偶数のときには０になる。すなわち、上記のデータ４０１を保持している中央処理装置の数のうちの最下位ビットＣＮＴ［０］は、チェックビットＣＢの全ビットの排他的論理和演算の値が１のときには「１」になり、チェックビットＣＢの全ビットの排他的論理和演算の値が０のときには「０」になる。図６の中央処理装置の各々の固有のビット列ＢＢは、値が１のビット数が奇数であるためであるため、最下位ビットＣＮＴ［０］はチェックビットＣＢを基に再現可能である。
【００６３】
例えば、図９の場合、チェックビットＣＢが「００００００１」であり、チェックビットＣＢの全ビットの排他的論理和演算の値は「１」になるので、最下位ビットＣＮＴ［０］は「１」になる。これにより、中央処理装置カウント値ＣＴＴ［５：０］は「１」になる。
【００６４】
また、図１０の場合、チェックビットＣＢが「０００００１１」であり、チェックビットＣＢの全ビットの排他的論理和演算の値は「０」になるので、最下位ビットＣＮＴ［０］は「０」になる。これにより、中央処理装置カウント値ＣＴＴ［５：０］は「２」になる。
【００６５】
また、図１２の場合、チェックビットＣＢが「００００１１１」であり、チェックビットＣＢの全ビットの排他的論理和演算の値は「１」になるので、最下位ビットＣＮＴ［０］は「１」になる。これにより、中央処理装置カウント値ＣＴＴ［５：０］は「３」になる。
【００６６】
次に、中央処理装置ＣＰＵ２が管理するデータ４０１のブロックがすべての中央処理装置に共有され、それを中央処理装置ＣＰＵ１が書き換えようとした時に、中央処理装置ＣＰＵ０でエラーが発生し、無効化応答として、データ非消去応答であると誤報告したケースを考える。
【００６７】
中央処理装置ＣＰＵ１は、アドレスＡに対し書き込み命令を実行する。中央処理装置ＣＰＵ１は、排他権を持たないため、メモリＭ２の管理元である中央処理装置ＣＰＵ２に排他権の獲得要求をルーター２０１経由で依頼する。中央処理装置ＣＰＵ２は、メモリＭ２にアクセスし、アドレスＡのデータブロック４０１及びディレクトリ情報４０２を取得し、ディレクトリ情報４０２を解析した結果、システムボードＳＢ０〜ＳＢ１５がデータを保持している事が分かる。中央処理装置ＣＰＵ２のデータ保持の有無は、自己のキャッシュメモリの検索により判明する。中央処理装置ＣＰＵ２は、自己のキャッシュメモリも含め、各中央処理装置に対し、無効化要求を行う。
【００６８】
各中央処理装置は、自己のキャッシュメモリを検索し、データを保持していた場合は無効化（消去）を行い、無効化応答として、データ消去応答の報告を、データを保持していなかった場合は、無効化応答として、データ非消去応答の報告を、中央処理装置ＣＰＵ２に対して行う。中央処理装置ＣＰＵ２は、無効化応答として、データ消去応答の報告を受けた場合は、その中央処理装置の固有ビット列ＢＢとチェックビットＣＢとの排他手論理和演算を行い、データ非消去応答の報告の場合は何もしない。
【００６９】
このようにして、すべての中央処理装置からの報告を基に演算すれば、チェックビットＣＢは「０」に戻るはずである。このケースでは、中央処理装置ＣＰＵ０から、本来、無効化応答としてのデータ消去応答であるはずの報告がデータ非消去応答となるため、チェックビットＣＢが「１」となり、中央処理装置ＣＰＵ０が誤った報告を行った事が分かる。
【００７０】
原理的に、各中央処理装置に対して固有のビット列ＢＢを割り当てる事が出来ればよいので、チェックビットＣＢに必要なビット数は、最低ｌｏｇ2（中央処理装置の数）ビットあればよい。本実施形態では、ｌｏｇ2（６４）＝６のところを７ビットにする事により、図１９〜図２４のように、２つの中央処理装置からの誤報告も検出可能としている。このように、チェックビットＣＢのビット数は、必要とする検査強度に応じて決定すればよく、７ビットに限定するものではない。
【００７１】
図２５は、中央処理装置から読み出し要求又は書き込み要求（排他権獲得要求）が発行された場合のディレクトリ情報４０２の更新処理例を示すフローチャートである。ステップＳ２５０１では、中央処理装置ＣＰＵ８は、他の中央処理装置から入力した要求が書き込みのための排他権獲得要求か又は読み出し要求かをチェックする。読み出し要求であればステップＳ２５０５に進み、排他権獲得要求であればステップＳ２５０２へ進む。
【００７２】
ステップＳ２５０２では、中央処理装置ＣＰＵ８は、ステータスＳＴが「００」（Invalid）であり、かつ自己の中央処理装置ＣＰＵ８がメモリＭ８のデータ４０１を保持していないときには、ステップＳ２５０４へ進み、それ以外のときにはステップＳ２５０３へ進む。ステータスＳＴは、上記のように、ディレクトリ情報４０２を基に求められる。
【００７３】
ステップＳ２５０３では、中央処理装置ＣＰＵ８は、図１４のように、プレゼンスビットＰＢが有効であるシステムボードＳＢ０内のすべての中央処理装置ＣＰＵ０〜ＣＰＵ３に無効化要求を出力する。その後、ステップＳ２５０４へ進む。
【００７４】
ステップＳ２５０４では、中央処理装置ＣＰＵ８は、チェックビットＣＢ及び中央処理装置カウント値ＣＮＴを含むディレクトリ情報４０２を更新する。これにより、ディレクトリ情報４０２では、チェックビットＣＢは要求元の中央処理装置の固有ビット列ＢＢになり、中央処理装置カウント値ＣＮＴ［５：１］は「０」になり、プレゼンスビットＰＢは「０」になり、要求元の中央処理装置の排他権の単独所持状態を示すようになる。
【００７５】
ステップＳ２５０５では、中央処理装置ＣＰＵ８は、メモリＭ８内のディレクトリ情報４０２を基に、ステータスＳＴが「１１」（Exclusive）であるか否かを判定する。ステータスＳＴの「１１」は、他の中央処理装置が排他権を保持していることを意味する。ステータスＳＴが「１１」であればステップＳ２５０７へ進み、ステータスＳＴが「１１」でなければステップＳ２５０６へ進む。
【００７６】
ステップＳ２５０７では、中央処理装置ＣＰＵ８は、その排他権を保持している中央処理装置に対して、無効化要求を出力し、データを消去させる。その後、ステップＳ２５０６に進む。
【００７７】
ステップＳ２５０６では、中央処理装置ＣＰＵ８は、メモリＭ８内のプレゼンスビットＰＢを更新する。その後、ステップＳ２５０４へ進む。
【００７８】
ステップＳ２５０４では、中央処理装置ＣＰＵ８は、図８のように、メモリＭ８内のチェックビットＣＢ及び中央処理装置カウント値ＣＮＴを含むディレクトリ情報４０２を更新し、要求元の中央処理装置のデータ所持状態が追加される。
【００７９】
図２６は、図２５の無効化要求の処理例を示すフローチャートである。ステップＳ２６０１では、中央処理装置ＣＰＵ８は、対象データ４０１のブロックを自己の中央処理装置ＣＰＵ８が保持しているか否かをチェックする。ディレクトリ情報４０２からはメモリＭ８の管理元の中央処理装置ＣＰＵ８のデータ保持の有無が分からないため、自己の中央処理装置ＣＰＵ８のキャッシュメモリを検査し、所持していた場合は無効化を行う必要がある。データ４０１のブロックを保持している場合にはステップＳ２６０６へ進み、データ４０１のブロックを保持していない場合にはステップＳ２６０２へ進む。
【００８０】
ステップＳ２６０６では、中央処理装置ＣＰＵ８は、自己の中央処理装置ＣＰＵ８内のデータの無効化処理を行う。次に、ステップＳ２６０７では、中央処理装置ＣＰＵ８は、自己の中央処理装置ＣＰＵ８内のキャッシュメモリ上のデータを削除することにより無効化する。その後、ステップＳ２６０２に進む。
【００８１】
ステップＳ２６０２では、中央処理装置ＣＰＵ８は、対象データ４０１のブロックのディレクトリ情報４０２を基にステータスＳＴが「００」（Invalid）か否かを判断する。ステータスＳＴが「００」でないときにはステップＳ２６０３へ進み、ステータスＳＴが「００」であるときにはステップＳ２６０５へ進む。
【００８２】
ステップＳ２６０３では、中央処理装置ＣＰＵ８は、図１４に示すように、プレゼンスビットＰＢを基に、データブロックを保持しているシステムボードＳＢ０内のすべての中央処理装置ＣＰＵ０〜ＣＰＵ３に無効化要求を出力する。
【００８３】
次に、ステップＳ２６０４では、中央処理装置ＣＰＵ８は、すべての中央処理装置ＣＰＵ０〜ＣＰＵ３からデータ消去応答又はデータ非消去応答を受信まで待機する。
【００８４】
次に、ステップＳ２６０５では、中央処理装置ＣＰＵ８は、２次キャッシュメモリ部３０３上のディレクトリ情報４０２を更新し、更新したディレクトリ情報４０２をメモリＭ８にライトバックする。その後、中央処理装置ＣＰＵ８は処理を終了する。マルチプロセッサシステムが正常に動作していれば、無効化処理後にそのデータ４０１のブロックを持つ中央処理装置は存在しない。
【００８５】
図２７は、ライトバック又はフラッシュバックの処理におけるディレクトリ情報４０２の更新処理例を示すフローチャートである。ライトバック及びフラッシュバックは、２次キャッシュメモリ部３０３のキャッシュリプレイスにおいて追い出されたデータ４０１のブロックの処理であり、データ保持の解除を意味する。ライトバックは、中央処理装置ＣＰＵ８内のキャッシュメモリ上のデータ４０１が変更され、ダーティフラグがある場合に、変更されたデータ４０１をメモリＭ８に書き戻す処理である。フラッシュバックは、中央処理装置ＣＰＵ８内のキャッシュメモリ上のデータ４０１に変更がなく、ダーティフラグがない場合に、データ４０１は変更せずにディレクトリ情報４０２のみを更新してメモリＭ８に書き戻す処理である。
【００８６】
ステップＳ２７０１では、中央処理装置ＣＰＵ８は、要求がフラッシュバックか又はライトバックかをチェックする。フラッシュバックである場合にはステップＳ２７０２に進み、ライトバックである場合にはステップＳ２７０５に進む。
【００８７】
ステップＳ２７０５では、ライトバックの際は、例えば、データ保持する中央処理装置ＣＰＵ８が排他権を有するので、中央処理装置ＣＰＵ８は、チェックビットを「０」にし、中央処理装置カウント値ＣＮＴを「０」にし、更新後のデータ４０１及びディレクトリ情報４０２をメモリＭ８に書き戻す。更新後のディレクトリ情報４０２では、ステータスＳＴが「００」（Invalid）となる。
【００８８】
ステップＳ２７０２では、中央処理装置ＣＰＵ８は、中央処理装置カウント値ＣＮＴが１より大きいか否かをチェックする。１より大きい場合には、他の中央処理装置がデータを保持しているのでステップＳ２７０４へ進み、１以下である場合にはステップＳ２７０３へ進む。
【００８９】
ステップＳ２７０３では、中央処理装置ＣＰＵ８は、他の中央処理装置がデータを保持していないので、プレゼンスビットＰＢを０にクリアする。その後、ステップＳ２７０４へ進む。
【００９０】
ステップＳ２７０４では、中央処理装置ＣＰＵ８は、チェックビットＣＢを更新し、中央処理装置カウント値ＣＮＴをデクリメントし、更新したディレクトリ情報４０２をメモリＭ８に書き戻す。
【００９１】
以上のように、本実施形態によれば、少ないディレクトリ情報４０２を基に故障が予想される中央処理装置を特定し、信頼性を高めることができる。
【００９２】
なお、上記実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。
【産業上の利用可能性】
【００９３】
少ないディレクトリ情報を基に故障が予想される演算処理装置を特定し、信頼性を高めることができる。
【図１】
2013042240.tif 000003
【図２】
2013042240.tif 000004
【図３】
2013042240.tif 000005
【図４】
2013042240.tif 000006
【図５Ａ】
2013042240.tif 000007
【図５Ｂ】
2013042240.tif 000008
【図６】
2013042240.tif 000009
【図７】
2013042240.tif 000010
【図８】
2013042240.tif 000011
【図９】
2013042240.tif 000012
【図１０】
2013042240.tif 000013
【図１１】
2013042240.tif 000014
【図１２】
2013042240.tif 000015
【図１３】
2013042240.tif 000016
【図１４】
2013042240.tif 000017
【図１５】
2013042240.tif 000018
【図１６】
2013042240.tif 000019
【図１７】
2013042240.tif 000020
【図１８】
2013042240.tif 000021
【図１９】
2013042240.tif 000022
【図２０】
2013042240.tif 000023
【図２１】
2013042240.tif 000024
【図２２】
2013042240.tif 000025
【図２３】
2013042240.tif 000026
【図２４】
2013042240.tif 000027
【図２５】
2013042240.tif 000028
【図２６】
2013042240.tif 000029
【図２７】
2013042240.tif 000030
【国際調査報告】
2013042240.tif 000031
2013042240.tif 000032