(57)【要約】【課題】タイムアウト障害のように、計算機システムが設計者の意図しない動作を行ったか、もしくは故障してしまって発生するハードウェア障害が発生した時に、計算機システムの管理者が障害部位の特定を容易にすることができる計算機システムを提供する。【解決手段】計算機システムの内部で、プロセッサ１０１及びメモリ１０７、拡張カード１０６間のデータの受け渡しを管理する回路であるチップセット１１０に、プロセッサ１０１または拡張カード１０６が発行したメモリアクセスもしくは拡張カード１０６へのアクセスの履歴を、チップセット内に記録する回路２０３を備える。計算機システムは、記録した履歴情報を、障害発生時に障害通報と共に計算機システムの管理者に送るか、もしくは計算機システムの管理者が外部から読み出す手段を備える。【選択図】図１
2008176477.tif 000002
【特許請求の範囲】
【請求項１】
第１のパスと、該第１のパスに接続されたプロセッサ及びチップセットと、前記チップセットに接続されたメモリ及び拡張カードとを有し、前記チップセットにより前記プロセッサとメモリ間及びプロセッサと拡張カード間の情報授受の制御を行うノードを有する計算機システムにおいて、
前記チップセットは、前記プロセッサもしくは拡張カードが発行した前記メモリに対するアクセスと、前記プロセッサが発行した前記拡張カードに対するアクセスの、当該チップセット内での処理状態を時間情報と共に記録する記録手段を有し、
前記ノードはさらに、他装置からの要求により、前記記録手段に記録されているチップセット内での処理状態と時間情報を第２のパスを介して読み出して、他装置に送信する手段を有することを特徴とする計算機システム。
【請求項２】
前記時間情報は、前記チップセット内で一意に定めた時刻であることを特徴とする請求項１記載の計算機システム。
【請求項３】
前記ノードを複数個有し、各ノードのプロセッサもしくは拡張カードから他ノードのメモリもしくは拡張カードへのアクセスの、各チップセット内での処理状態を前記複数のノードで一意に定めた時刻と共に各チップセットの記録手段に記録することを特徴とする請求項１記載の計算機システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、計算機システムに係り、特に計算機で障害が発生した時に、障害解析のための情報を外部から取り出す手段を備えた計算機システムに関する。
【背景技術】
【０００２】
稼動中の計算機システムでハードウェア障害を検出した時は、障害部位を特定して切り離し又は切り替えを行い、計算機システムを止めずに実行中の処理を継続する事が、計算機システムに求められる。また、計算機システムがハードウェア障害により止まってしまった場合には、障害部位を特定してから交換し、素早く計算機システムを復旧して処理を再開する事が計算機システムに求められる。そのため、高い信頼性と可用性を保証する計算機システムは、計算機システムの各構成要素に、ハードウェア障害を検出し障害部位を特定する事ができるエラー検出機構を一般的に備える。具体的には、計算機システムの構成要素の1つであるプロセッサのキャッシュメモリ、システム・バス、メインメモリ等においては、パリティビット、もしくはＥＣＣ（Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｎｇ  Ｃｏｄｅ）をデータに付加し、データを各構成要素から読み出した際に、パリティエラーもしくはＥＣＣエラーの形で不正データの検出を行う機構を備える。それにより、キャッシュメモリ等の各構成要素からデータを読み出した時に、パリティエラーもしくはＥＣＣエラーを検出した際には、エラーが発生した構成要素を障害部位として特定する事ができる。パリティビットやＥＣＣ以外の障害部位の特定を可能とするエラー検出機構としては、例えばＰＣＩバスのトランザクション処理における、マスタアボート検出機構及びＳＥＲＲ信号アサートによるエラー報告機構が挙げられる。マスタアボート検出は、ＰＣＩバスのイニシエータのリクエストに対し、ターゲットデバイスが応答を返さなかったことを検出する。したがって、マスタアボート検出機構を用いると、ターゲットデバイスが障害部位であると特定する事ができる。また、ＳＥＲＲ信号のアサートは、ブリッジ又はＰＣＩデバイスなどのＰＣＩバスのエージェントで致命的な障害が発生した事を示す。したがって、ＰＣＩバスでのＳＥＲＲ信号のアサートにより、ＰＣＩバスのエージェントが障害部位であると推定する事ができる。
【０００３】
しかし、計算機システムでハードウェア障害が発生した時に、先に説明したエラー検出機構を備えていても障害部位の特定ができない場合がある。先に説明したエラー検出機構は、設計者が計算システムを設計する際に予測し得るエラーを検出するものである。そのため、計算機システムが設計者の意図しない動作を行なって発生したか、もしくは故障により応答を返せないがために発生するハードウェア障害等では、先に説明したパリティエラーやＥＣＣエラー等のエラーが検出されず、障害部位を特定する事ができない。このようなハードウェア障害が発生した時、一般的な計算機システムでは、タイムアウト障害となる。計算機システムに任意のリクエストに対するハードウェアの応答時間を測定する機構を備え、一定時間リクエストに対し無応答であった時に、タイムアウトエラーを検出して、計算機システムの管理者にハードウェア障害発生を報告する。
【０００４】
タイムアウト障害が発生した時、計算機システムの管理者は、障害部位を推定するために、市販されているロジックアナライザ等のデジタル信号の観測装置を使用して計算機システム上のバス等でデジタル信号を観測し、障害部位を推定する必要がある。もしくは、特許文献１や特許文献２に記載されている技術のように、プロセッサバスのトレースを採取する機構を計算機システムに備えていれば、タイムアウト障害発生時に採取したプロセッサバスのトレースを見て障害部位を推定する。
【０００５】
【特許文献１】特開平５−３２４３９６公報
【特許文献２】特開平１０−２９３７０２公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかし、上記前者の手段では、まず観測装置を計算機システムに接続し、その後タイムアウト障害を再現させて障害発生時のデジタル信号を採取し、採取した結果を元に障害部位を特定する必要がある。そのため、計算機システムの管理者は、調査に多大な時間と労力を要する事になる。また、タイムアウト障害の再現率が非常に低いものであれば、調査そのものが不可能となる場合もある。一方、後者の手段では、計算機システムの管理者は、プロセッサバスなど計算機システムの１構成要素の信号履歴を追って障害部位を推定する必要がある。そのため、タイムアウト障害がトレースを採取した箇所に関連して発生したものでないと、障害部位を特定することは困難となる。
【０００７】
以上説明した通り、従来技術では、タイムアウト障害のように、計算機システムが設計者の意図しない動作を行ったか、もしくは故障してしまって発生するハードウェア障害が発生した時に、計算機システムの迅速な復旧を保証することができないため、高い信頼性と可用性を保証する計算機システムでは重大な問題となる。
【０００８】
本発明の目的は、タイムアウト障害のように、計算機システムが設計者の意図しない動作を行ったか、もしくは故障してしまって発生するハードウェア障害が発生した時に、計算機システムの管理者が障害部位の推定を容易にすることができる計算機システムを提供することである。
【課題を解決するための手段】
【０００９】
本発明が提案する計算機システムは、計算機システムの内部でプロセッサ及びメモリ、拡張カード間のデータの受け渡しを管理する回路であるチップセットにおいて、プロセッサまたは拡張カードが発行したメモリアクセスもしくは拡張カードへのアクセスの履歴をチップセット内に記録する回路を備える。以降の説明では、計算機システム内でプロセッサまたは拡張カードが発行したメモリアクセス（メモリリード・ライト）もしくは拡張カードへのアクセス（Ｉ／Ｏリード・ライト）をトランザクションと称する。
【００１０】
履歴情報を記録する回路は、トランザクションの宛先であるメモリアドレス・Ｉ／Ｏアドレス、メモリリード・ライト及びＩ／Ｏリード・ライトといったトランザクションの種別を記録し、障害発生時に計算機システムでどのようなトランザクション処理を実行していたのか、履歴情報を見る事で推測できるようにする。また、履歴情報を記録する回路は、チップセット内のトランザクション処理状態も履歴情報として記録し、障害発生時に、チップセット内でトランザクション処理がどのような状態で止まっているのか履歴情報を見ることで分かるようにする。トランザクション処理状態の一例としては、宛先であるメモリまたは拡張カードに対してトランザクションを発行したか、宛先のメモリまたは拡張カードはリードデータを返したか、チップセットはトランザクション発行元のプロセッサまたは拡張カードに対しリードデータを返したか等が挙げられる。そして履歴情報を記録する回路は、上記トランザクション処理状態を記録する際に、計算機システムで一意に定めた時刻を記録する。具体的には、履歴情報を採取する各回路に、計算機システム内で同期して同じ値をカウントするカウンタを用意し、トランザクション処理状態を記録する際に該カウンタの値を同時に記録する。それにより、計算機システムの管理者は、計算機システムで複数の履歴情報を採取した場合にも、同じ時間軸で各履歴情報を見る事ができる。
【００１１】
また、本発明が提案する計算機システムは、記録した全チップセットのトランザクション処理状態の履歴情報を、障害発生時に障害通報と共に計算機システムの管理者に送るか、もしくは計算機システムの管理者が外部から任意のタイミングで読み出す手段を備える。
【発明の効果】
【００１２】
本発明によれば、タイムアウト障害のように、計算機システムが設計者の意図しない動作を行ったか、もしくは故障してしまって発生するハードウェア障害が発生した場合にも、計算機システムの管理者が障害発生時の全チップセット内でのトランザクション処理状態を知ることができるので、計算機システムの障害部位を特定することが容易となり、計算機システムの迅速な復旧を可能とする。
【発明を実施するための最良の形態】
【００１３】
以下、図面を用いて本発明の実施形態を詳細に説明する。図1は本発明で想定する計算機システムの一例である。本計算機システムは、ノードＡ １００とノードＢ 1３０、そしてノードＡ １００とノードＢ １３０を接続するノード間リンク１４０、計算機システムの各構成要素を管理する管理モジュール１５０を備える。
【００１４】
ノード間リンク１４０は、ノードＡ １００とノードＢ １３０間でトランザクション情報の送信・受信を可能とするものであり、クロスバーや完全結合網など、構築する計算機システムに適した接続手段で実現することができる。本説明におけるトランザクション情報とは、計算機システム内でトランザクションを処理するために必要な情報を指す。具体的には、アクセス対象のメモリアドレスとＩ／Ｏアドレス、メモリリード・ライト及びＩ／Ｏリード・ライトといったトランザクションの種別、そして計算機システム内でトランザクションを一意に管理するためのトランザクション識別子、リードしたまたはライトするデータ、ライト処理を実施したことを報告するためのＡＣＫとリードまたはライト処理を実施出来なかった事を報告するためのＮＡＣＫのことである。トランザクション情報は、トランザクションパス１７１を介して、計算機システム内の各構成要素間で発行・受信される。
【００１５】
管理モジュール１５０の機能は、計算機システムの各構成要素の電源管理（投入/切断）、構成要素情報の管理、障害発生時の計算機システム内トランザクション情報・処理状態履歴の採取・障害通報、システム内環境（温度・電源）監視である。本実施例では、管理用コンソール１６０と管理モジュール１５０は、ＬＡＮ Ｉ／Ｆ１７０を介して通信が可能である。ただし、管理用コンソール１６０と管理モジュール１５０間の通信手段は特に制限するものではなく、例えばシリアルケーブルを使用して通信しても良い。計算機システムの使用者は、管理用コンソール１６０を使用して、管理モジュール１５０を介し計算機システムの管理／操作を行なうことができる。管理モジュール１５０は、計算機システム内の障害が発生したノードから障害通報を受けた時、計算機システムを構成する各ノードに対しトランザクション情報・処理状態履歴の採取要求を出す。そして、採取要求に対し各ノードからトランザクション情報・処理状態履歴の情報が返ってきたら、管理用コンソール１６０に対し障害通報と共に採取した各ノードのトランザクション情報・処理状態履歴を送信する。その結果、計算機システムの管理者は、管理用コンソール１６０に示された障害通報により障害が発生した事を知ることができ、障害通報と共に送られた各ノードのトランザクション情報・処理状態履歴を見る事で、エラー内容が障害部位を特定できるものではなくても、障害部位を特定する事が可能となる。また、管理モジュール１５０は、計算機システムの管理者が管理用コンソール１６０を介してトランザクション情報・処理状態履歴の採取要求を出した場合にも、計算機システムを構成する各ノードに対しトランザクション情報・処理状態履歴の採取要求を出す。そして、採取要求に対し各ノードからトランザクション情報・処理状態履歴の情報が返ってきたら、管理用コンソール１６０に対し各ノードのトランザクション情報・処理状態履歴を送信する。
【００１６】
ノードＡ １００は、プロセッサ１０１及び１０２、プロセッサバス（第１のパス）１０３、ノード内管理回路１０４、Ｉ／Ｏブリッジ１０５、ＰＣＩデバイス１０６、メモリ１０７、ＰＣＩバス１０８、チップセット１１０を備える。本実施例では、拡張カードとして一般的なＰＣＩデバイスを採用したが、もちろんこれに制限するものではなく、例えば最新のＰＣＩ−Ｅｘｐｒｅｓｓデバイスでも良い。また、ノードＢ １３０はノードＡ １００と全く同じ構成要素を持つものとする。また、本実施例では２ノード構成としたが、ノード数も特に規定するものではない。
【００１７】
プロセッサバス１０３は、プロセッサ１０１及び１０２と、チップセット１１０を接続し、プロセッサ１０１及び１０２とチップセット１１０間のトランザクション情報の発行・受信を行う。
【００１８】
ノード内管理回路１０４は、障害情報通知パス１７２を介したチップセット１１０の各構成要素からの障害通報の受信と、障害情報採取パス１７３を介したプロセッサバスコントローラ１１１及びＩ／Ｏコントローラ１１２からのトランザクション情報・処理状態履歴の入手、そして管理モジュール１５０への障害通報を行う。ノード内管理回路１０４はＬＡＮ Ｉ／Ｆ（第２のパス）１７０を介して管理モジュール１５０と通信可能であり、障害通報を受けた管理モジュール１５０は、計算機システムを構成する各ノードのノード内管理回路１０４を介して、各ノードのプロセッサバスコントローラ１１１及びＩ／Ｏコントローラ１１２からトランザクション情報・処理状態履歴を採取する。
【００１９】
Ｉ／Ｏブリッジ１０５は、ＰＣＩバス１０８を介してチップセット１１０とＰＣＩデバイス１０６を接続し、チップセット１１０とＰＣＩデバイス１０６間のデータの発行・受信を行う。
【００２０】
チップセット１１０は、プロセッサバスコントローラ１１１、Ｉ／Ｏコントローラ１１２、メモリコントローラ１１３、ノード間リンクコントローラ１１４を備える。
【００２１】
プロセッサバスコントローラ１１１は、プロセッサ１０１またはプロセッサ１０２が発行したトランザクション及びライトデータを、プロセッサバス１０３を介して受信し、トランザクション情報を見て、リード・ライト対象となるチップセット１１０の構成要素に対し、トランザクション及びライトデータを発行する。例えば、ノードＡ １００にあるプロセッサコントローラ１１１においては、トランザクションのアクセス対象のアドレスがノードＡのメモリ１０７宛てであればメモリコントローラ１１３に、もしくはノードＡのＰＣＩデバイス１０６宛てであればＩ／Ｏコントローラ１１２に、そしてノードＢのメモリ１０７またはＰＣＩデバイス１０６宛てであればノード間リンクコントローラ１１４にトランザクション及びライトデータを発行する。また、プロセッサバスコントローラ１１１は、チップセット１１０の各構成要素から送信されたリードデータを、プロセッサバス１０３を介してプロセッサ１０１または１０２に送信する。プロセッサバスコントローラ１１１は、本発明の特徴であるトランザクション情報・処理状態の履歴を記録する回路を備えているので、内部構成及び処理内容について後で詳細に説明する。
【００２２】
Ｉ／Ｏコントローラ１１２は、計算機システム内の各プロセッサまたは他ノードにあるＰＣＩデバイスが発行したＩ／Ｏリード・ライト及びライトデータを、Ｉ／Ｏブリッジ１０５を介してＰＣＩデバイス１０６に発行する。また、ＰＣＩデバイス１０６からリードしたデータを、トランザクション発行元であるプロセッサまたはＰＣＩデバイスに対して発行する。Ｉ／Ｏライトの場合は、Ｉ／ＯライトとライトデータをＩ／Ｏブリッジ１０５を介してＰＣＩデバイス１０６に発行した時点で、Ｉ／Ｏコントローラ１１２は、トランザクション発行元のプロセッサまたはＰＣＩデバイスに対してＡＣＫを発行する。もしＩ／Ｏブリッジ１０５及びＰＣＩバス１０８、そしてＰＣＩデバイス１０６において障害が発生し、ＰＣＩデバイス１０６に対してＩ／ＯリードもしくはＩ／Ｏライトとライトデータを発行できない場合、Ｉ／Ｏコントローラ１１２は、トランザクション発行元のプロセッサまたはＰＣＩデバイスに対してＮＡＣＫを発行する。障害の具体例としては、ＰＣＩデバイス１０６の故障が発生し、ＰＣＩデバイス１０６がトランザクションに対し無応答、もしくはＰＣＩバス１０８でＳＥＲＲ信号がアサートされている等が挙げられる。ＰＣＩデバイス１０６は、プロセッサと同様にメモリ１０７または他ノードのＰＣＩデバイス１０６に対しリード・ライトトランザクション及びライトデータを発行する。そのため、Ｉ／Ｏコントローラ１１２は、ＰＣＩデバイス１０６が発行したトランザクション及びライトデータを、Ｉ／Ｏブリッジ１０５を介して受け取り、トランザクション情報を見て、リード・ライト対象となる構成要素に対しトランザクション及びライトデータを発行する。また、プロセッサバスコントローラ１１０は、チップセット１１０の各構成要素から送信されたリードデータを、Ｉ／Ｏブリッジ１０５を介してＰＣＩデバイス１０６に送信する。Ｉ／Ｏコントローラ１１２も、プロセッサバスコントローラ１１１と同様に、本発明の特徴であるトランザクション情報・処理状態の履歴を記録する回路を備えているので、内部構成及び処理内容について後で詳細に説明する。
【００２３】
メモリコントローラ１１２は、計算機システム内の各プロセッサまたは各ＰＣＩデバイスが発行したメモリリード・ライト及びライトデータを、メモリ１０７に発行する。また、メモリ１０７からリードしたデータを、トランザクション発行元であるプロセッサまたはＰＣＩデバイスに対して発行する。メモリライトの場合は、メモリライトとライトデータをメモリ１０７に発行した時点で、メモリコントローラ１１３は、トランザクション発行元のプロセッサまたはＰＣＩデバイスに対してＡＣＫを発行する。また、Ｉ／Ｏコントローラ１１２と同様、メモリが故障したなどの障害が発生しメモリ１０７にメモリリードもしくはメモリライトとライトデータを発行できない場合、トランザクション発行元のプロセッサまたはＰＣＩデバイスに対してＮＡＣＫを発行する。
【００２４】
ノード間リンクコントローラ１１４は、自ノード内のプロセッサまたはＰＣＩデバイスが発行したトランザクション情報を、ノード間リンク１４０を介し、他ノードに対して発行、もしくは他ノードのプロセッサまたはＰＣＩデバイスが発行したトランザクション情報を受信する。そして、ノード間リンクコントローラ１１４は、リード・ライト対象となる自ノード内の構成要素に対し、受信したトランザクション情報を発行する。
【００２５】
以下、本発明の特徴であるトランザクション情報・処理状態の履歴を記録する回路を持つ、プロセッサバスコントローラ１１１の内部構成及び処理内容について、図２を用いて詳細に説明する。プロセッサバスコントローラ１１１は、プロセッサバスＩ／Ｆコントローラ２００、トランザクションコントローラ２０１、管理回路Ｉ／Ｆコントローラ２０２、アドレスキュー２０３、データインキュー２０４、データアウトキュー２０５、他ユニットＩ／Ｆコントローラ２０６、障害報告回路２０７、カウンタ２０８を備える。
【００２６】
プロセッサバスＩ／Ｆコントローラ２００は、プロセッサバス１０３からプロセッサ１０１または１０２が発行したトランザクションまたはライトデータを受信、もしくはプロセッサバス１０３にリードデータを送信する。そしてトランザクション情報を受信した場合、プロセッサバスＩ／Ｆコントローラ２００は、アドレスキュー２０３のトランザクション情報が無効なエントリに、トランザクション情報を格納する。無効なエントリが複数存在した時は、ＬＲＵ方式でトランザクション情報を格納するようにすると、トランザクション情報を時系列で見ることができるので望ましい。もし無効なエントリがアドレスキュー２０３に無い場合、プロセッサバスI／Fコントローラ２００はプロセッサがトランザクションまたはライトデータを発行できないように、プロセッサバス１０３の処理を止める。ライトデータをプロセッサバス１０３から受信した場合は、データインキュー２０４にライトデータを格納する。データアウトキュー２０５が発行したリードデータ及びＡＣＫ、ＮＡＣＫを受けた場合は、プロセッサバス１０３にリードデータ及びＡＣＫ、ＮＡＣＫを発行する。また、プロセッサバスＩ／Ｆコントローラ２００は、プロセッサバス１０３の状態を監視し、プロセッサバス１０３で発生した障害を検知した場合は、障害報告回路２０７に障害通報を行なう。プロセッサバス１０３で検出する障害の具体例としては、トランザクションの対象アドレスのパリティエラー、リード・ライトデータのＥＣＣエラー等が挙げられる。
【００２７】
アドレスキュー２０３は、トランザクション処理がチップセット１１０内で完了するまで、トランザクション情報を格納する回路である。アドレスキュー２０３は、トランザクションを格納した事をトランザクションコントローラ２０１に通知するのみで、アドレスキュー２０３からのトランザクション発行及びトランザクション処理が完了した時のトランザクション情報の無効化制御は、トランザクションコントローラ２０１が行なう。図３にアドレスキュー２０３の構成例を示す。図３のアドレスキューは、エントリ数をｎとした時の例である。ｎの数は、実現する計算機システムに適した値に設定すればよい。例えば、プロセッサがチップセットに同時に発行できるトランザクションの数か、もしくはトランザクション情報・処理状態の履歴を採取したい数等にすればよい。エントリ番号３００は、エントリ番号を格納する。バリッドビット３０１は、“１”の場合エントリに格納しているトランザクション情報が有効であることを示し、“０”の場合無効であることを示す。対象アドレス３０２は、トランザクションが対象とするメモリアドレスもしくはI／Oアドレスを格納する。種別３０３は、メモリリード・ライト、I／Oリード・ライトといったトランザクション種別を格納する。識別子３０４は、計算機システム内でトランザクションを一意に識別できる番号を格納する。
【００２８】
以下に説明するアドレスキュー２０３の構成要素は、チップセット１１０内でのトランザクション処理状態を示すものである。発行ステータス３０５は、トランザクションを宛先の構成要素に発行したことを示すフラグと、発行した時間を格納するカウンタ値を持つ。“フラグ”は、“１”の時にトランザクションを発行したことを示し、“０”の時に未発行であることを示す。また、“カウンタ値”は、トランザクションを発行した時のカウンタ２０８の値が入る。受信ステータス３０６は、プロセッサバス１０３からライトデータを受信したか、もしくはチップセット１１０の構成要素からリードデータ及びＡＣＫ、ＮＡＣＫを受信した事を示す“状態”と、受信した時間を格納するカウンタ値を持つ。“状態”は、“ｄａｔａ”の時にリード・ライトデータを受信したことを、“ａｃｋ”または“ｎａｃｋ”の時にＡＣＫまたはＮＡＣＫを受信したことを、そして“０”の時に未受信であることを示す。また、カウンタ値は、リード・ライトデータ及びＡＣＫ、ＮＡＣＫを受信した時のカウンタ２０８の値が入る。完了ステータス３０７は、リードデータ及びＡＣＫ、ＮＡＣＫをプロセッサバス１０３に対して発行し、チップセット１１０内でのトランザクション処理が完了したことを示す“フラグ”と、トランザクション処理が完了した時間を格納するカウンタ値を持つ。フラグは、“１”の時にトランザクション処理が完了したことを示し、“０”の時にトランザクション処理が完了していないことを示す。また、カウンタ値は、トランザクション処理が完了した時のカウンタ２０８の値が入る。
【００２９】
本実施例では、チップセット１１０内でのトランザクション処理状態を示す情報として３種類のステータス３０５〜３０７を示しているが、必要であれば別のステータスを追加してもよい。追加するステータスの一例としては、メモリのｃｃＮＵＭＡ構成を提供する計算機システムにおける、キャッシュ一致制御処理の完了／未完了のステータスを挙げる事ができる。また、チップセット内でのトランザクション処理状態がカウンタ値と共に記録されれば良いので、“フラグ”や“状態”等の処理状態の表現手段も特に規定するものではなく、実現する計算機システムに適した表現手段を用いれば良い。
【００３０】
データインキュー２０４は、ライトデータを格納するキューである。また、データアウトキュー２０５は、リードデータ及びＡＣＫ、ＮＡＣＫを格納するキューである。データインキュー２０４及びデータアウトキュー２０５とも、格納したデータの発行指示は、トランザクションコントローラ２０１が行なう。また、本実施例では、データインキュー２０４及びデータアウトキュー２０５ともデータ及びＡＣＫ、ＮＡＣＫを格納するエントリは、対応するトランザクション情報をアドレスキュー２０３に格納した時と同じエントリ番号であるエントリに格納するものとする。これにより、アドレスキュー２０３のバリッドビット３０１で、データインキュー２０４及びデータアウトキュー２０５に格納した情報の有効・無効判定を実現する。
【００３１】
カウンタ２０８は、各ノードで共通のカウンタ値を示すものである。例えば、計算機システムを電源投入した際に各ノードで同期してカウンタのインクリメントを開始し、カウンタを同じ周波数で動作させれば、各ノードで共通なカウンタ値を実現できる。
【００３２】
他ユニットＩ／Ｆコントローラ２０６は、トランザクションの宛先であるチップセット１１０の各構成要素に対し、アドレスキュー２０３から受信したトランザクション及びデータインキュー２０４から受信したライトデータを発行、もしくはトランザクションの宛先であるチップセット１１０の各構成要素からリードデータ及びＡＣＫ、ＮＡＣＫを受信する。そしてリードデータ及びＡＣＫ、ＮＡＣＫを受信した場合、他ユニットＩ／Ｆコントローラ２０６は、データアウトキュー２０５にリードデータ及びＡＣＫ、ＮＡＣＫを格納する。また、他ユニットＩ／Ｆコントローラ２０６は、チップセット１１０の構成要素１１２〜１１３のＩ／Ｆを監視し、リードデータ及びＡＣＫ、ＮＡＣＫ受信時に障害を検知した場合は、障害報告回路２０７に障害通報を行なう。プロセッサバス１０３で検出する障害と同様に、トランザクションの対象アドレスのパリティエラー、リード・ライトデータのＥＣＣエラー等が挙げられる。
【００３３】
トランザクションコントローラ２０１は、トランザクションとリード・ライトデータ、そしてＡＣＫとＮＡＣＫの制御を行なう。他ユニットＩ／Ｆコントローラ２０６から、宛先のチップセット１１０の構成要素がトランザクションもしくはライトデータを受信可能かどうかの情報を入手し、受信可能であればアドレスキュー２０３に対してトランザクション発行指示を、もしくはデータインキュー２０５に対してライトデータの発行指示を出す。また、プロセッサバスＩ／Ｆコントローラ２００から、プロセッサバス１０３にリードデータ及びＡＣＫ、ＮＡＣＫを発行出来るか否かの情報を入手し、発行可能であればデータアウトキュー２０５に対してリードデータ及びＡＣＫ、ＮＡＣＫの発行指示を出す。データアウトキュー２０５に対してリードデータ及びＡＣＫ、ＮＡＣＫの発行指示を出した際にトランザクションコントローラ２０１は、チップセット１１０内でのトランザクション処理が完了したと判断し、アドレスキュー２０３のバリッドビット３０１を“０”に更新し、アドレスキュー２０３及びデータインキュー２０４、データアウトキュー２０５に格納したトランザクション情報の無効化を行なう。エントリの無効化に際してバリッドビットのみ更新する理由は、トランザクション処理が完了したトランザクションの情報を見ることができるようにするためである。
【００３４】
もう1つのトランザクションコントローラ２０１の機能は、アドレスキュー２０３のトランザクション処理状態を示すステータス３０５〜３０７を更新する事である。アドレスキュー２０３に対してトランザクション発行指示を出した際は、トランザクションコントローラ２０１は、発行ステータス３０５を更新する。また、リードデータ及びＡＣＫ、ＮＡＣＫをデータアウトキュー２０５に格納した際は、格納したとの通知をデータアウトキュー２０５から受信し、受信ステータス３０６を更新する。もしくは、ライトデータをデータインキュー２０４に格納した際は、格納したとの通知をデータインキュー２０４から受信し、受信ステータス３０６を更新する。そして、データアウトキュー２０５に対してリードデータ及びＡＣＫ、ＮＡＣＫの発行指示を出した際は、完了ステータス３０７を更新する。
【００３５】
トランザクションコントローラ２０１が検出する障害は、トランザクション処理のタイムアウトである。トランザクションコントローラ２０１は、アドレスキュー２０３にトランザクション情報を格納してから無効化するまでの時間を監視し、規定時間を越えてアドレスキュー２０３にトランザクション情報が有効であり続けた場合、トランザクション処理のタイムアウトが発生したと判断し、トランザクションコントローラ２０１は、障害通報を障害報告回路２０７に送信する。本実施例ではトランザクションコントローラ２０１が検出する障害をタイムアウト障害のみとしたが、実現する計算機システムの仕様に応じて、検出する障害の種類を増やしても良い。
【００３６】
障害報告回路２０７は、プロセッサバスＩ／Ｆコントローラ２００及びトランザクションコントローラ２０１、そして他ユニットＩ／Ｆコントローラ２０６からの障害通報を、障害情報通知パス１７２を介してノード内管理回路１０４に発行する。
【００３７】
管理回路Ｉ／Ｆコントローラ２０２は、ノード内管理回路１０４から障害情報採取パス１７３を介して送られてきたトランザクション情報・処理状態履歴の採取要求を処理する回路である。トランザクション情報・処理状態履歴の採取要求を受けた管理回路Ｉ／Ｆコントローラ２０２は、アドレスキュー２０３の全エントリのトランザクション情報・処理状態を読み出し、障害情報採取パス（第２のパス）１７３を介してノード管理回路１０４に読み出したトランザクション情報・処理状態を送信する。トランザクション情報・処理状態の採取に使用するパスはトランザクション情報を送るパスとは全く別のパスで実現し、障害が発生しチップセット１１０のトランザクション処理が止まったとしても、トランザクション情報・処理状態の履歴を管理モジュール１５０が採取できる事を保証する。
【００３８】
次に、プロセッサバスコントローラ１１１と同様に、本発明の特徴であるトランザクション情報・処理状態の履歴を記録する回路を持つＩ／Ｏコントローラ１１２の内部構成及び処理内容を、図４を用いて説明する。Ｉ／Ｏコントローラ１１２は、Ｉ／Ｏ Ｉ／Ｆコントローラ４００、トランザクションコントローラ４０１、管理回路Ｉ／Ｆコントローラ４０２、アドレスキュー４０３、データインキュー４０４、データアウトキュー４０５、他ユニットＩ／Ｆコントローラ４０６、障害報告回路４０７、カウンタ４０８、他ユニット発Ｉ／Ｏ要求コントローラ４０９を備える。
【００３９】
他ユニット発Ｉ／Ｏ要求コントローラ４０９は、計算機システム内の各プロセッサまたは他ノードにあるＰＣＩデバイスが発行したＩ／Ｏリード・ライトを処理する回路である。Ｉ／Ｏ Ｉ／Ｆコントローラ４００からＩ／Ｏブリッジ１０５にＩ／Ｏリード・ライト及びライトデータを発行可能との情報を得たら、他ユニット発Ｉ／Ｏ要求コントローラ４０９は、Ｉ／Ｏ Ｉ／Ｆコントローラ４００を介して、Ｉ／Ｏブリッジ１０５にＩ／Ｏリード・ライト及びライトデータを発行する。また、他ユニット発Ｉ／Ｏ要求コントローラ４０９は、他ユニットＩ／Ｆコントローラ４０６から、宛先のチップセット１１０の構成要素がリードデータを受信可能かどうかの情報を入手し、受信可能であれば、ＰＣＩデバイス１０６からリードしたリードデータを、他ユニットＩ／Ｆコントローラ４０６を介して、トランザクション発行元であるプロセッサまたはＰＣＩデバイスに対して発行する。Ｉ／Ｏライトの場合は、Ｉ／Ｏライト及びライトデータをＩ／Ｏブリッジ１０５を介してＰＣＩデバイス１０６に発行した時点で、他ユニット発Ｉ／Ｏ要求コントローラ４０９は、トランザクション発行元のプロセッサまたはＰＣＩデバイスに対してＡＣＫを発行する。もしＩ／Ｏブリッジ１０５及びＰＣＩバス１０８、そしてＰＣＩデバイス１０６において障害が発生し、ＰＣＩデバイス１０６に対してトランザクションまたはライトデータを発行できない場合、Ｉ／Ｏコントローラ１１２は、トランザクション発行元のプロセッサまたはＰＣＩデバイスに対してＮＡＣＫを発行する。
【００４０】
Ｉ／Ｏ Ｉ／Ｆコントローラ４００は、Ｉ／Ｏブリッジ１０５からトランザクション及びライトデータ、計算機システム内の各プロセッサまたは他ノードにあるＰＣＩデバイスが発行したＩ／Ｏリードに対するＰＣＩデバイス１０６からのリードデータを受信、もしくはＩ／Ｏブリッジ１０５にリードデータ及びＡＣＫ、ＮＡＣＫ、そして計算機システム内の各プロセッサまたは他ノードにあるＰＣＩデバイスが発行したＩ／Ｏリード・ライト及びライトデータを発行する。そしてトランザクションを受信した場合、Ｉ／Ｏ Ｉ／Ｆコントローラ４００は、アドレスキュー４０３のトランザクション情報が無効なエントリに、トランザクション情報を格納する。無効なエントリが複数存在した時は、ＬＲＵ方式でトランザクション情報を格納するようにすると、トランザクション情報を時系列で見ることができるので望ましい。そして、ライトデータをＩ／Ｏブリッジ１０５から受信した場合、Ｉ／Ｏ Ｉ／Ｆコントローラ４００は、データインキュー４０４にライトデータを格納する。もし無効なエントリがアドレスキュー４０３に無い場合、Ｉ／Ｏ Ｉ／Ｆコントローラ４００はＰＣＩデバイスがトランザクションまたはライトデータを発行できないように、Ｉ／Ｏブリッジ１０５の処理を止める。リードデータ及びＡＣＫ、ＮＡＣＫをデータアウトキュー４０５から受信した場合は、Ｉ／Ｏブリッジ１０５にリードデータ及びＡＣＫ、ＮＡＣＫを発行する。計算機システム内の各プロセッサまたは他ノードにあるＰＣＩデバイスが発行したＩ／Ｏリードに対するＰＣＩデバイス１０６からのリードデータを受信した場合、Ｉ／Ｏ Ｉ／Ｆコントローラ４００は、他ユニット発Ｉ／Ｏ要求コントローラ４０９にリードデータを発行する。また、Ｉ／Ｏ Ｉ／Ｆコントローラ４００は、Ｉ／Ｏブリッジ１０５の状態を監視し、Ｉ／Ｏブリッジ１０５で発生した障害を検知した場合に、障害報告回路４０７に障害通報を行なう。Ｉ／Ｏブリッジ１０５で検出する障害の具体例としては、本実施例はＰＣＩバス１０８を使用しているので、ＳＥＲＲアサート検出、マスタアボート等が挙げられる。
【００４１】
他ユニットＩ／Ｆコントローラ４０６は、トランザクションの宛先であるチップセット１１０の各構成要素に対し、アドレスキュー４０３から受信したトランザクション及びデータインキュー４０４から受信したライトデータ、計算機システム内の各プロセッサまたは他ノードにあるＰＣＩデバイスが発行したＩ／Ｏリードに対するＰＣＩデバイス１０６からのリードデータを発行する。また、他ユニットＩ／Ｆコントローラ４０６は、トランザクションの宛先であるチップセット１１０の各構成要素からリードデータ及びＡＣＫ、ＮＡＣＫを受信した場合、他ユニットＩ／Ｆコントローラ４０６は、データアウトキュー４０５にリードデータ及びＡＣＫ、ＮＡＣＫを格納する。そして計算機システム内の各プロセッサまたは他ノードにあるＰＣＩデバイスが発行したＩ／Ｏリード・ライト及びライトデータを受信した場合、他ユニット発Ｉ／Ｏ要求コントローラ４０９にＩ／Ｏリード・ライト及びライトデータを送信する。また、他ユニットＩ／Ｆコントローラ４０６は、チップセット１１０の構成要素１１１及び１１３、１１４のＩ／Ｆを監視し、リードデータ及びＡＣＫ、ＮＡＣＫ受信時に障害を検知した場合は、障害報告回路４０７に障害通報を行なう。検知する障害の具体例としては、トランザクションの対象アドレスのパリティエラー、リード・ライトデータのＥＣＣエラー等が挙げられる。
【００４２】
Ｉ／Ｏコントローラ１１２の構成要素４０１〜４０５、４０７、４０８は、プロセッサバスコントローラ１１１の構成要素２０１〜２０５、２０７、２０８と全く機能が同じなので説明を省略する。
【００４３】
以下に、本実施例において障害を検出した時の障害通報及びトランザクション情報・処理状態履歴採取の流れを説明する。説明のために、ノードＡ １００のプロセッサバスコントローラ１１１にあるトランザクションコントローラ２０１でタイムアウト障害が発生したと仮定する。
トランザクションコントローラ２０１でタイムアウト障害を検出した時、トランザクションコントローラ２０１は、障害報告回路２０７にタイムアウト障害発生を通報する。障害通報を受信した障害報告回路２０７は、ノード内管理回路１０４を介して、管理モジュール１５０に、“ノードＡ １００のプロセッサバスコントローラ１１１にあるトランザクションコントローラ２０１でタイムアウト障害が発生した”と報告する。障害通報を受信した管理モジュール１５０は、各ノードのノード内管理回路１０４に、トランザクション情報・処理状態履歴の採取要求を発行する。トランザクション情報・処理状態履歴の採取要求を受信したノード内管理回路１０４は、管理回路Ｉ／Ｆコントローラ２０２及び４０２を介して、アドレスキュー２０３及び４０３にある全エントリのトランザクション情報・処理状態を読み出す。そして、読み出したアドレスキュー２０３及び４０３のトランザクション情報・処理状態履歴を、ノード内管理回路１０４は、管理モジュール１５０に送信する。各ノードのノード内管理回路１０４から、各ノードのアドレスキュー２０３及び４０３のトランザクション情報・処理状態履歴を受信した管理モジュール１５０は、該トランザクション情報・処理状態履歴を、“ノードＡ １００のプロセッサバスコントローラ１１１にあるトランザクションコントローラ２０１でタイムアウト障害が発生した”ことを示す障害通報と共に、管理用コンソール１６０に送信する。
【００４４】
計算機システムの管理者は、タイムアウト障害通報と共に送られたトランザクション情報・処理状態履歴を見て、例えば次のように障害部位を特定する。ノードＡ １００のアドレスキュー２０３から採取したトランザクション情報・処理状態履歴を見ると、障害発生時に、ノードＢ １３０のＰＣＩデバイス１０６宛てのＩ／Ｏリードに対してのみリードデータ及びＮＡＣＫが返っていないことが分かったとする。ＮＡＣＫが返っていないので、ノードＢ １３０のＩ／Ｏコントローラ１１２は、ＰＣＩデバイスにＩ／Ｏリクエストを発行したものと考えられる。この場合は、ノードＢ １３０のＰＣＩデバイス１０６がリードデータを返さないのがタイムアウト障害の原因であると推測できるので、故障部位としてノードＢ １３０のＰＣＩデバイス１０６を挙げる事ができる。ただし、ノードＢ １３０のＰＣＩデバイス１０６がリードデータを発行した後、例えばチップセットの論理不良が原因で、リターンデータがノードＢ １３０のチップセット１１０内で送信が止まってしまっている場合が考えられる。この場合は、先の推測は誤りとなり、障害部位はノードＢ １３０のチップセット１１０が正解となる。もし、このような障害部位推測ミスを極力防ぎたいのであれば、記録するトランザクション処理状態の粒度を細かくすればよい。本実施例では、トランザクション発行、リード・ライトデータまたはＡＣＫ及びＮＡＣＫの受信、トランザクション処理完了の３つのタイミングでしかトランザクション処理状態を記録していない。そこで、例えばメモリコントローラやＩ／Ｏコントローラでトランザクション情報を発行・受信をするタイミングでもトランザクション処理状態を記録するようにすれば、リターンデータの送信状況も詳細に分かるので、障害部位推測ミスを極力防ぐ事が可能である。
【００４５】
以上に説明した通り、上記実施例によれば、計算機システムの管理者は、障害通報と共に、計算機システムにある全チップセット内のトランザクション処理状態履歴を知ることができる。したがって、以下の効果を得ることができる。
（１）計算機システムにある全チップセット内のトランザクション処理状態履歴を知ることができるので、タイムアウト障害発生時にも障害発生時のトランザクション処理状態が分かり、障害部位の特定が可能になる。
（２）タイムアウト障害発生時の障害部位指摘に、市販されているロジックアナライザ等のデジタル信号の観測装置を使用する必要は無く、現象再現の必要がないので、調査に要する時間と労力を抑える事ができる。
（３）プロセッサバスのトレース等、計算機システムの1構成要素を見るのではなく、計算機システムの全チップセット内のトランザクション処理状態を見るので、タイムアウト障害に関係する情報を必ず得る事ができ、障害部位の解析が容易になる。
【図面の簡単な説明】
【００４６】
【図１】本発明が想定する計算機システムのブロック構成図である。
【図２】本発明の実施例におけるプロセッサバスコントローラのブロック構成図である。
【図３】本発明の実施例におけるアドレスキューの構成を示す図である。
【図４】本発明の実施例におけるＩ／Ｏコントローラのブロック構成図である。
【符号の説明】
【００４７】
１００、１３０…ノードＡ及びノードＢ、
１０１、１０２…プロセッサ、 
１０３…プロセッサバス、
１０４…ノード内管理回路、
１０５…Ｉ／Ｏブリッジ、
１０６…ＰＣＩデバイス、
１０７…メモリ、
１０８…ＰＣＩバス、
１１０…チップセット、
１１１…プロセッサバスコントローラ、
１１２…Ｉ／Ｏコントローラ、
１１３…メモリコントローラ、
１１４…ノード間リンクコントローラ、
１４０…ノード間リンク、
１５０…管理モジュール、
１６０…管理用コンソール、
１７０…ＬＡＮ Ｉ／Ｆ、
１７１…トランザクションパス、
１７２…障害情報通知パス、
１７３…障害情報採取パス、
２００…プロセッサバスＩ／Ｆコントローラ、
２０１、４０１…トランザクションコントローラ、
２０２、４０２…管理回路Ｉ／Ｆコントローラ、
２０３、４０３…アドレスキュー、
２０４、４０４…データインキュー、
２０５、４０５…データアウトキュー、
２０６、４０６…他ユニットＩ／Ｆコントローラ、
２０７、４０７…障害報告回路、
２０８、４０８…カウンタ、
３００…エントリ番号、
３０１…エントリのバリッドビット、
３０２…トランザクションの対象アドレス、
３０３…トランザクションの種別、
３０４…トランザクションの識別子、
３０５…トランザクションの発行ステータス、
３０６…トランザクションの受信ステータス、
３０７…トランザクションの完了ステータス、
４００…Ｉ／Ｏ Ｉ／Ｆコントローラ、
４０９…他ユニット発Ｉ／Ｏ要求コントローラ。
【図１】
2008176477.tif 000003
【図２】
2008176477.tif 000004
【図３】
2008176477.tif 000005
【図４】
2008176477.tif 000006