(57)【特許請求の範囲】
【請求項１】
少なくとも１つの入出力デバイスが接続された入出力バスと、
デバイスドライバと、該デバイスドライバと前記入出力デバイスとの間のデータのやりとりを仲介するブリッジドライバとを実現するプロセッサと、
前記プロセッサと前記入出力バスとの間に介在しかつ前記入出力バスの動作を制御するバス制御装置と、を備え、
前記バス制御装置は、
前記入出力バスの障害の発生を契機として、前記入出力バスにおける当該障害の発生部位に接続された入出力デバイスのログ情報を収集するログ収集手段と、
前記入出力バスの障害の発生を契機として前記入出力バスのリセットを抑止し、前記ログ収集手段による前記ログ情報の収集が完了した後に前記リセットの抑止を解除するリセット抑止手段と、
前記ログ収集手段により収集されたログ情報を保持するログバッファと、
前記入出力バスの障害の発生を契機として前記入出力バスを縮退状態に遷移させ、前記入出力バスのリセットを要求するトランザクションに基づいて前記入出力バスの縮退状態を解除するバス障害インジケータと、
前記入出力バスのリセット指示を示すトランザクションに応じて前記入出力バスをリセットし、前記入出力バスのリセット完了後、該リセット完了を示すリプライトランザクションを前記プロセッサ方向に送出し、前記入出力バスの縮退状態を解除するためのトランザクションに応じて前記バス障害インジケータを前記入出力バスの縮退状態が解除される状態にするコンフィグレーション部と、
を含み、
前記ブリッジドライバは、前記デバイスドライバからの要求に応じて前記入出力バスのリセット指示を示すトランザクションを前記バス制御装置に送信し、前記入出力バスのリセット完了を示すリプライトランザクションを受信した後、前記ログバッファに保持されるログ情報を読み出し、該ログ情報の読み出し後、前記入出力バスの縮退状態を解除するためのトランザクションを前記バス制御装置に送信する、
コンピュータシステム。
【請求項２】
請求項１に記載のコンピュータシステムであって、
前記バス制御装置は、前記リセット抑止手段によって前記リセットの抑止が解除されるまで前記リセット指示を保持するリセット指示保持手段を更に含み、
前記リセット指示保持手段は、前記リセットの抑止が解除された後に、当該保持していたリセット指示を前記リセット制御手段に送信する、
コンピュータシステム。
【請求項３】
請求項１又は２に記載のコンピュータシステムであって、
前記ブリッジドライバは、前記バス障害インジケータが示す状態を確認し、前記バス障害インジケータが前記入出力バスの縮退状態を示す場合に、前記デバイスドライバに対して障害発生を通知する、コンピュータシステム。
【請求項４】
請求項１から３のいずれか１項に記載のコンピュータシステムであって、
前記バス制御装置は、前記入出力バスの動作に対する制御状態を表すデータを保持するレジスタを含み、
前記ログ収集手段は、前記レジスタから前記制御状態を表すデータを前記ログ情報として収集する、
コンピュータシステム。
【請求項５】
請求項１から４のいずれか１項に記載のコンピュータシステムであって、前記入出力バスがＰＣＩ（Peripheral Component Interconnect）バスである、コンピュータシステム。
【請求項６】
デバイスドライバと少なくとも１つの入出力デバイスとの間のデータのやりとりを仲介するブリッジドライバ及び該デバイスドライバを実現するプロセッサと、該少なくとも１つの入出力デバイスが接続された入出力バスと、の間に介在しかつ前記入出力バスの動作を制御するバス制御装置であって、
前記入出力バスの障害の発生を契機として、前記入出力バスにおける当該障害の発生部位に接続された入出力デバイスのログ情報を収集するログ収集手段と、
前記入出力バスの障害の発生を契機として前記入出力バスのリセットを抑止し、前記ログ収集手段による前記ログ情報の収集が完了した後に前記リセットの抑止を解除するリセット抑止手段と、
前記ログ収集手段により収集されたログ情報を保持するログバッファと、
前記入出力バスの障害の発生を契機として前記入出力バスを縮退状態に遷移させ、前記入出力バスのリセットを要求するトランザクションに基づいて前記入出力バスの縮退状態を解除するバス障害インジケータと、
前記入出力バスのリセット指示を示すトランザクションに応じて前記入出力バスをリセットし、前記入出力バスのリセット完了後、該リセット完了を示すリプライトランザクションを前記プロセッサ方向に送出し、前記入出力バスのリセット完了後前記ブリッジドライバにより前記ログバッファに保持されるログ情報が読み出された後に前記ブリッジドライバから送信される前記入出力バスの縮退状態を解除するためのトランザクションに応じて前記バス障害インジケータを前記入出力バスの縮退状態が解除される状態にするコンフィグレーション部と、
を含む、
バス制御装置。
【請求項７】
請求項６記載のバス制御装置であって、
前記リセット抑止手段によって前記リセットの抑止が解除されるまで前記リセット指示を保持するリセット指示保持手段を更に含み、
前記リセット指示保持手段は、前記リセットの抑止が解除された後に、当該保持していたリセット指示を前記リセット制御手段に送信する、
バス制御装置。
【請求項８】
請求項６又は７に記載のバス制御装置であって、
前記入出力バスの動作に対する制御状態を表すデータを保持するレジスタを含み、
前記ログ収集手段は、前記レジスタから前記制御状態を表すデータを前記ログ情報として収集する、
バス制御装置。
【請求項９】
請求項６から８のいずれか１項に記載のバス制御装置であって、前記入出力バスがＰＣＩ（Peripheral Component Interconnect）バスである、バス制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、入出力バスの障害からの復旧処理を行うバス制御技術に関する。
【背景技術】
【０００２】
コンピュータシステム内の信号伝送路であるバスの規格としてＰＣＩ（Peripheral Component Interconnect）規格は広く使用されている。従来のコンピュータシステムでは、コンピュータシステム内のＣＰＵからＰＣＩデバイス（ＰＣＩバスに電気的に接続された入出力デバイス）へのアクセス中、もしくは、ＰＣＩデバイスからコンピュータシステム内のメモリへのアクセス中に、ＰＣＩバスで障害が発生したトランザクションの特定不能なエラー（たとえば、アドレスパリティエラー）を検出した場合には、システムエラー信号線がアクティブな状態になる。このようにシステムエラー信号線がアサートされると、ＣＰＵ（または、ＯＳ：オペレーティングシステム）に対してＮＭＩ（Non Mask Interrupt：マスク不能な割り込み）用信号線を通じてエラーの発生が通知される。これにより、ＣＰＵは、当該エラーの発生を知ることができる。しかしながら、ＣＰＵは、当該エラーの発生源を特定することができないため、適切なエラー処理を実行できない。それ故、ＮＭＩ発生時には、エラーの伝搬を抑えるためにＣＰＵはシステムを異常停止（システムダウン）させる。
【０００３】
一方、ＰＣＩバスで障害が発生したトランザクションの特定を可能にするデータパリティエラーなどの障害は、エラーリプライとしてＣＰＵに報告される。この障害報告に対して、ＯＳの例外ハンドラは特殊なエラー処理を行う。
【０００４】
しかしながら、接続されるＰＣＩデバイスの仕様や制御方法はＰＣＩデバイスによって大きく異なるため、ＯＳの例外ハンドラが単独で全てのＰＣＩデバイスのエラー処理を完全に行うことは実質的にできない。このため、適切なエラー処理を行うことができない場合、例外ハンドラは、当該エラーの伝搬を抑えるためにシステムを異常停止（システムダウン）させる。
【０００５】
上記の如きシステムの異常停止を回避し得る関連技術が、たとえば、特許文献１（特開２００５−２１５８０９号公報）に開示されている。この特許文献１に開示されているコンピュータシステムは、ＰＣＩバスコントローラ、ブリッジドライバ（ＰＣＩバス障害制御用のプログラム）およびデバイスドライバを有している。ＰＣＩバスコントローラは、ＰＣＩバスでエラーが検出されたときに点灯するバス障害インジケータ（ＥＲＩ）を含む。このバス障害インジケータの点灯時に、ＰＣＩバスコントローラは、ＰＣＩバスを縮退状態に遷移させる（すなわち、ＰＣＩバスの一部の使用を停止させる）。ブリッジドライバは、ＰＣＩバスコントローラ（ＰＢＣ）の縮退状態を監視することでＰＣＩバスの障害を検出して、ＰＣＩバスのエラー発生時には、対応するデバイスドライバに障害発生を通知する機能を有する。また、ブリッジドライバは、ＰＣＩバスを復旧させるための指示をＰＣＩバスコントローラに発行し、その後、復旧完了の旨をデバイスドライバに通知する機能をも有する。デバイスドライバは、復旧完了通知を受け取ると、ＰＣＩデバイスに対して初期設定処理を実行してＰＣＩデバイスをコンピュータシステムに再び組み込む。
【０００６】
このように特許文献１に開示される技術では、ＰＣＩバスの障害がＣＰＵやＯＳの例外ハンドラに通知されることなく、ブリッジドライバとデバイスドライバとが協働してシステムダウンを発生させずにＰＣＩバスの障害を検出し、その復旧を行う。
【特許文献１】特開２００５−２１５８０９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
上記特許文献１に開示されている技術は、ＰＣＩバスの障害を検出すると、障害部位となるＰＣＩバスをシステムから遮断するために、バス障害インジケータを用いてＰＣＩバスを縮退状態に遷移させる。しかしながら、ＰＣＩバスが当該検出に応じてシステムから遮断されてしまうため、障害発生部位に関する各種詳細ログ情報（たとえば、内部チップセットの一部から得られる、障害が発生したバスの制御に関する情報や、障害が発生したバスの配下に実装されたＰＣＩカードが保持する情報）を収集することができない。それ故、ＰＣＩバスを含むインタフェースの障害要因解析（障害の原因究明）に支障が生ずる。特に、障害要因解析に必要な、ＰＣＩカードのレジスタ情報を収集することができない。
【０００８】
また、ＰＣＩバスの障害からの復旧にあたっては、ブリッジドライバによりＰＣＩバスのリセットが実行され、更には、チップセット内部およびＰＣＩバス配下のＰＣＩカードのリセットが実行される。よって、バス障害インジケータがリセットされる。このため、ＰＣＩバスのリセット期間中に、コンピュータシステムで動作する各種プロセスがリセット対象のＰＣＩバスに対してトランザクションを発行すると、このトランザクションがロストしてシステムのストールあるいはシステムダウンという重度の障害を引き起こす可能性がある。
【０００９】
本発明は、上記に鑑みてなされたものであり、ＰＣＩバスなどの入出力バスの障害からの復旧時に、その障害に関するログ情報を確実に収集することができるコンピュータシステムおよびバス制御方法を提供するものである。また本発明は、ＰＣＩバスなどの入出力バスの障害からの復旧時に、入出力バスを安全にリセットすることができるコンピュータシステムおよびバス制御方法を提供するものである。
【課題を解決するための手段】
【００１０】
本発明によれば、データ処理を行うプロセッサと、少なくとも１つの入出力デバイスが接続された入出力バスと、前記プロセッサと前記入出力バスとの間に介在しかつ前記入出力バスの動作を制御するバス制御装置と、を備えたコンピュータシステムが提供される。前記バス制御装置は、リセット指示を受信するとこれに応じて前記入出力バスをリセットするリセット制御手段と、前記入出力バスの障害の発生を契機として、前記入出力バスのリセットを抑止するリセット抑止手段と、前記入出力バスの障害の発生を契機として、前記入出力バスにおける当該障害の発生部位に接続された入出力デバイスのログ情報を収集するログ収集手段と、前記ログ収集手段により収集されたログ情報を前記プロセッサに転送する入出力インタフェースと、を含み、前記リセット抑止手段は、前記ログ収集手段による前記ログ情報の収集が完了した後に前記リセットの抑止を解除する。
【００１１】
また、本発明によれば、データ処理を行うプロセッサと、少なくとも１つの入出力デバイスが接続された入出力バスとの間に介在しかつ前記入出力バスの動作を制御するバス制御装置が提供される。このバス制御装置は、リセット指示を受信するとこれに応じて前記入出力バスをリセットするリセット制御手段と、前記入出力バスの障害の発生を契機として、前記入出力バスのリセットを抑止するリセット抑止手段と、前記入出力バスの障害の発生を契機として、前記入出力バスにおける当該障害の発生部位に接続された入出力デバイスのログ情報を収集するログ収集手段と、前記ログ収集手段により収集されたログ情報を前記プロセッサに転送する入出力インタフェースと、を含み、前記リセット抑止手段は、前記ログ収集手段による前記ログ情報の収集が完了した後に前記リセットの抑止を解除する。
【００１２】
前記バス制御装置は、前記入出力バスの障害の発生を契機として前記入出力バスを縮退状態に遷移させるバス障害インジケータを更に含み、このバス障害インジケータが、前記リセット制御手段による前記入出力バスのリセットが完了した後に、前記入出力バスの縮退状態を解除することが好ましい。この場合、前記プロセッサは、前記入出力バスの障害の発生を契機として前記バス障害インジケータに対して前記入出力バスの縮退状態への遷移を指示するブリッジドライバを有し、このブリッジドライバが、前記リセット制御手段による前記入出力バスのリセットが完了した後に、前記バス障害インジケータに対して前記入出力バスの縮退状態の解除を指示することが好ましい。
【発明の効果】
【００１３】
上記の通り、本発明によるコンピュータシステムおよびバス制御装置は、入出力バスの障害の発生を契機として、入出力バスのリセットを抑止した状態で、入出力バスにおける障害の発生部位に接続された入出力デバイスのログ情報を収集し、その後、そのログ情報の収集が完了した後に入出力バスのリセットの抑止を解除する。これにより、入出力バスのリセットが開始される前に、入出力バスの障害に関係する入出力バスのログ情報を収集することができるので、コンピュータシステム上のプロセッサは、障害要因解析に必要なログ情報を確実に取得することができる。
【００１４】
また、前記バス制御装置が前記バス障害インジケータを有し、前記プロセッサが前記ブリッジドライバを有する場合、プロセッサは、入出力バスのリセット期間中に不慮に入出力バスへのトランザクションを発行することを防止できるので、入出力バスのリセットとトランザクションとの競合に起因するトランザクションのロスト発生といった重度の障害を回避することができる。これにより、入出力バスをその障害から安全に復旧することが可能となる。
【発明を実施するための最良の形態】
【００１５】
以下、本発明に係る種々の実施形態を図面を参照しつつ説明する。
【００１６】
（第１の実施形態）
図１は、本発明に係る第１の実施形態のコンピュータシステムの概略構成を示すブロック図である。このコンピュータシステムは、プロセッサ（ＣＰＵ）１、プロセッサバス（ＦＳＢ：Front Side Bus）２、メモリコントローラ（ＭＭＣ：Main Memory Control）３、主記憶部４およびＩ／Ｏコントローラ（ＩＯＣ）５を有している。プロセッサ１は、プロセッサバス２を介してメモリコントローラ３に接続されている。Ｉ／Ｏコントローラ５は、ＰＣＩバス（入出力バス）７と接続されたＰＣＩバスコントローラ（ＰＢＣ）６すなわちバス制御装置を内蔵している。プロセッサ１は、データ処理を実行する機能を有する。ＰＣＩバス７には、少なくとも１つのＰＣＩデバイス（PCI Device）が電気的に接続されている。ＰＣＩバスコントローラ６は、プロセッサ１とＰＣＩバス７との間に介在してＰＣＩバス７の動作を制御する機能を有する。
【００１７】
メモリコントローラ３は、プロセッサ１、主記憶部４およびＩ／Ｏコントローラ（ＩＯＣ）５とのインタフェース機能を有する。このメモリコントローラ３は、プロセッサ１およびＩ／Ｏコントローラ５から受けたトランザクションのルーティングを行い、システム規模や構成により１個ないし複数のＬＳＩにより構成されるユニットである。Ｉ／Ｏコントローラ５は、ＭＭＣ３とのインタフェース機能を有する。このＩ／Ｏコントローラ５の配下に接続されるＰＣＩバス７を制御するＰＣＩバスコントローラ６を内蔵し、システム規模や構成により１個ないし複数のＬＳＩにより構成されるユニットである。ＰＣＩバス７には、単数または複数のＰＣＩデバイス（周辺装置）を接続することが可能である。
【００１８】
図２は、第１の実施形態のＰＣＩバスコントローラ（ＰＢＣ）６の概略構成を示すブロック図である。このＰＣＩバスコントローラ６は、入力インタフェース制御部（ＩＮＣ）６１、出力インタフェース制御部（ＯＴＣ）６２、アウトバウンド・バッファ制御部（ＯＢＱ）６３、インバウンドバッファ制御部（ＩＢＱ）６４、インバウンド・リードデータ制御部（ＤＲＱ）６５、ＰＣＩバス制御部（ＰＸＣ）６６およびログ収集部（ＰＬＣ）６７を含む。
【００１９】
ＰＣＩバス制御部６６は、バス信号制御部（ＢＳ）６６１、アウトバウンド制御部（ＯＢＣ）６６２、インバウンド制御部（ＩＢＣ）６６３、コンフィグレーション部（ＣＦＧ）６６４およびアービトレーション部（ＡＲＢ）６６５を含む。
【００２０】
入力インタフェース制御部６１は、メモリコントローラ３からのトランザクションを受信し、このトランザクションの種別に応じてＰＣＩバスコントローラ６内の格納先にルーティングする制御機能を有する。出力インタフェース制御部６２は、後述するインバウンドバッファ制御部６４とのインタフェース機能を有し、インバウンドバッファ制御部６４からのトランザクションをメモリコントローラ３へ送出する制御機能を有する。
【００２１】
アウトバウンドバッファ制御部（ＯＢＱ）６３は、入力インタフェース制御部６１とのインターフェース機能を有し、入力インタフェース制御部６１からのアウトバウンド・リクエストトランザクションを受信し、受信したトランザクションを格納するバッファ（Buffer）６３ａと、後述するアービタ部（ＡＲＢ）６６５とのインターフェース機能と、後述するＰＣＩバス制御部（ＰＸＣ）６６とのインターフェース機能を有する。アウトバウンドバッファ制御部６３は、トランザクションを格納するとアービトレーション部６６５に対してＰＣＩバス使用要求を発行し、アービトレーション部６６５によってＰＣＩバス使用許可が下りると、バッファ６３ａに格納しているトランザクションをＰＣＩバス制御部６６に送信する制御機能を有する。
【００２２】
インバウンドバッファ制御部（ＩＢＱ）６４は、後述するＰＣＩバス制御部（ＰＸＣ）６６とのインターフェース機能を有し、ＰＣＩバス制御部６６からのアウトバウンド・リプライ・トランザクションと、インバウンド・ライト・リクエストトランザクションとを受信する。また、インバウンドバッファ制御部６４は、後述するインバウンドリードデータ制御部（ＤＲＱ）６５とのインターフェース機能を有し、インバウンドリードデータ制御部６５からのインバウンド・リード・リクエストトランザクションを受信する。インバウンドバッファ制御部６４は、受信した各トランザクションを格納するバッファ６４ａを有する。また、インバウンドバッファ制御部６４は、出力インタフェース制御部６２とのインタフェース機能を有し、受信したトランザクションを出力インタフェース制御部６２に送信する制御機能を有する。
【００２３】
インバウンドリードデータ制御部（ＤＲＱ）６５は、入力インタフェース制御部６１とのインタフェース機能を有し、入力インタフェース制御部６１からインバウンド・リード・リプライトランザクション（主記憶部４からのリードデータ）を受信し、受信したトランザクションを格納するバッファ６５ａを有する。また後述するＰＣＩバス制御部（ＰＸＣ）６６のインタフェース機能を有し、ＰＣＩバス制御部６６からのインバウンド・リード・リクエストトランザクションを受信し、トランザクションで要求されたデータがバッファ６５ａに存在するかチェックする機能を有し、データが存在しなければインバウンドバッファ制御部６４にインバウンド・リード・リクエストトランザクションを送信すると同時に、ＰＣＩバス制御部６６にリトライ指示を発行する制御機能と、データが存在していたならば当該データをバッファ６５ａから読み出しＰＣＩバス制御部６６に送信する制御機能を有する。
【００２４】
ＰＣＩバス制御部（ＰＸＣ）６６は、後述するバス信号制御部（ＢＳ）６６１、アウトバウンド制御部（ＯＢＣ）６６２、インバウンドコントローラ部（ＩＢＣ）６６３、コンフィグレーション部（ＣＦＧ）６６４、アービトレーション部６６５で構成され、ＰＣＩデバイスのトランザクション制御機能を有する。
【００２５】
バス信号制御部６６１は、後述するアウトバウンド制御部６６２とインバウンドコントローラ部（ＩＢＣ）６６３、ＰＣＩバス７とのインタフェース機能を有し、ＰＣＩバスプロトコルにしたがってＰＣＩバス７上に接続されたＰＣＩデバイスとのトランザクション制御機能を有し、バス障害検出時に後述するバス障害インジケータ（ＥＲＩ）６６４ａおよびバスリセット抑止インジケータ（ＲＩＩ）６６４ｂをセットする機能を有する。またインバウンドリードデータ制御部６５とのインタフェース機能を備え、ＰＣＩデバイスへのリトライ指示要求を受け付ける機能を有する。
【００２６】
アウトバウンド制御部（ＯＢＣ）６６２は、アウトバウンドバッファ制御部６３とインバウンドリードデータ制御部６５とバス信号制御部６６１、更に、後述するインバウンドコントローラ部（ＩＢＣ）６６３とコンフィグレーション部６６４とのインタフェース機能を有し、アウトバウンドバッファ制御部６３もしくはインバウンドリードデータ制御部６５から受信するトランザクションを、バス信号制御部６６１、インバウンド制御部６６３、コンフィグレーション部６６４にルーティングする機能を有する。ルーティング先はトランザクション種別およびバス障害インジケータ６６４ａの点灯状態により決定する。アウトバウンドバッファ制御部６３から受信するＰＣＩバスコントローラ６宛のコンフィグレーション・リクエストトランザクションはコンフィグレーション部６６４に送信し、インバウンドリードデータ制御部６５から受信するインバウンド・リード・リプライトランザクションはバス信号制御部６６１に送信する。
【００２７】
アウトバウンドバッファ制御部６３から受信するアウトバウンド・リクエストトランザクションは、バス障害インジケータ６６４ａが未点灯（正常状態）の場合はバス信号制御部６６１に送信する。バス障害インジケータ６６４ａが点灯（縮退状態）している場合は、アウトバウンド・リード・リクエストトランザクションに関してはリードデータをＡＬＬ"１"とした（全ビットの値を"１"とした）正常リードリプライトランザクションを、アウトバウンド・ディファード・ライト・リクエストトランザクションに関しては正常ライトリプライトランザクションを、それぞれインバウンド制御部６６３に送信し、アウトバウンド・ポステッド・ライト・リクエストトランザクションに関してはアウトバウンド制御部６６２内で破棄する。なお、この明細書で「点灯」とは、レジスタであるインジケータが当該点灯状態に対応する設定値を保持することをいう。
【００２８】
アウトバウンド制御部６６２は、バスリセット指示保持部（ＲＰＢ）６６２ａを有し、アウトバウンドバッファ制御部６３から受信するＰＣＩバスコントローラ６宛のコンフィグレーション・リクエストトランザクションがＰＣＩバス７のリセット指示であるかを判定し、ＰＣＩバス７のリセット指示であり、かつ、バスリセット抑止インジケータ６６４ｂが点灯状態である場合は、該リセット指示をバスリセット指示保持部６６２ａに保持（保留）する。バスリセット指示保持部６６２ａは、バスリセット抑止インジケータ６６４ｂのリセットを契機に、保持（保留）しているバスリセット指示を再開するよう制御する機能を有する。
【００２９】
インバウンドコントローラ部（ＩＢＣ）６６３は、インバウンドバッファ制御部６４、インバウンドリードデータ制御部６５、バス信号制御部６６１、アウトバウンド制御部６６２、後述するコンフィグレーション部６６４とのインタフェース機能を有し、バス信号制御部６６１、アウトバウンド制御部６６２、コンフィグレーション部６６４から受信するトランザクションを、インバウンドバッファ制御部６４もしくはインバウンドリードデータ制御部６５にルーティングする機能を有する。ルーティング先はトランザクション種別により決定する。コンフィグレーション部６６４から受信するコンフィグレーション・リプライトランザクション、およびバス信号制御部６６１とアウトバウンド制御部６６２から受信するアウトバウンド・リプライトランザクション、およびバス信号制御部６６１から受信するインバウンド・ライト・リクエストトランザクションはインバウンドバッファ制御部６４に送信する。バス信号制御部６６１から受信するインバウンド・リードリクエストトランザクションはインバウンドリードデータ制御部６５に送信する。
【００３０】
コンフィグレーション部６６４は、各種コンフィグレーションレジスタを有し、その一部としてＰＣＩバス障害が発生したことを保持するバス障害インジケータ６６４ａと、後述のログ収集部６７がログ情報を収集しているために現在バスリセットを実行することができないことを示すバスリセット抑止インジケータ６６４ｂとを有する。また、コンフィグレーション部６６４は、アウトバウンド制御部６６２とインバウンド制御部６６３とのインタフェース機能を有し、アウトバウンド制御部６６２から受信するリクエストトランザクションの指示に従いコンフィグレーションレジスタを更新し、必要に応じてリプライトランザクションをインバウンド制御部６６３に送信する。バス障害インジケータ６６４ａは、バス信号制御部６６１、アウトバウンド制御部６６２、アービトレーション部６６５とのインタフェース機能を有し、バス信号制御部６６１がバス障害を検出した時に、セットされる。またバス障害インジケータ６６４ａをリセットすることにより、障害状態からの復旧（縮退状態の解除）が行われる。
【００３１】
アービトレーション部６６５は、ＰＣＩバス７上に接続されたＰＣＩデバイスと、アウトバウンドバッファ制御部６３からのバス使用要求に対してバス使用権の調停を行う制御機能を有する。またバス障害インジケータ６６４ａとのインタフェース機能を有し、バス障害インジケータ６６４ａの点灯時はＰＣＩデバイスからのバス使用要求をマスクし、インバウンド系トランザクションを受け付けない制御機能を有する。
【００３２】
ログ収集部６７は、ＰＣＩバス制御部（ＰＸＣ）６６とのインタフェース機能を有し、バス障害検出時に障害発生部位に関する各種詳細ログ情報を収集する機構を有する。また、ログ収集部６７は、収集したログ情報を格納するためのログバッファ６７ａを備える。ログ収集部６７は、ログ情報の収集完了時に、前述のバスリセット抑止インジケータ６６４ｂをリセットする機能を有する。
【００３３】
次に、ブリッジドライバの機能について説明する。
【００３４】
ブリッジドライバは、各ＰＣＩデバイスドライバへ提供するＰＣＩバスアクセス用の各種関数群を有する。下記表１に関数群を例示する。
【００３５】
【表１】
0005151580.tif 000002
【００３６】
ブリッジドライバは、各ＰＣＩデバイスドライバからのＰＣＩバスアクセス要求時（提供関数コール時）に、アクセス要求に応じたトランザクションを送信する機能を有する。またアウトバウンド・リード・トランザクション処理でＡＬＬ"１"の読み出しデータ（全てのビットが"１"の値を持つデータ）を検知した場合にＰＣＩバスコントローラ６のバス障害インジケータ６６４ａを確認する機能と、デバイスドライバからの要求によりＰＣＩバスコントローラ６のバス障害インジケータ６６４ａを確認する機能と、定期的にＰＣＩバスコントローラ６のバス障害インジケータ６６４ａを確認する機能を有し、ＰＣＩバスコントローラ６のバス障害インジケータ６６４ａの点灯を検出した場合に、エラー状態を各ＰＣＩデバイスドライバに通知する機能を有する。また各ＰＣＩデバイスドライバからのＰＣＩバス障害復旧要求により、ＰＣＩバスコントローラ６に対して障害復旧動作を要求するトランザクションを送る機能と、障害復旧が完了したら各ＰＣＩデバイスドライバに通知する機能を有する。
【００３７】
障害復旧手段を利用するためには、ＰＣＩデバイスドライバは、ＰＣＩデバイスへのアクセス時にはブリッジドライバ提供関数群を用い、ブリッジドライバからエラー状態を通知された場合は適切な障害復旧処理を実行する必要がある。
【００３８】
次に、図３〜図６を参照しつつ上記構成を有するシステムの動作を説明する。プロセッサ１からのＩ／Ｏリード（アウトバウンド・リード）の手順は以下の通りである。図３は、Ｉ／Ｏリードの処理フローを示している。
【００３９】
ＰＣＩデバイスドライバが、ＰＣＩデバイスからデータを読み出すとき、ブリッジドライバが提供するリード関数（pci_io_read()、pci_mem_read()）をコールする。これによりブリッジドライバは目的のＰＣＩデバイスに対してアウトバウンド・リード・リクエストトランザクションを送信する。このアウトバウンド・リード・リクエストトランザクションは、ＦＳＢ２を経由してメモリコントローラ３からＩＯＣへ送出される。ＩＯＣへ送出されたアウトバウンド・リード・リクエストトランザクションは、ＰＣＩバスコントローラ６内の入力インタフェース制御部６１で受信される。トランザクションを受信した入力インタフェース制御部６１は、トランザクション種別によりトランザクションの格納先を決定する。
【００４０】
ここでは、アウトバウンド系のトランザクションのため、格納先はアウトバウンドバッファ制御部６３のバッファ６３ａとなる。トランザクションを格納したアウトバウンドバッファ制御部６３は、アービトレーション部６６５に対してＰＣＩバス７の使用権を要求する。これを受け取ったアービトレーション部６６５は、ＰＣＩバス７の調停を行い、ＰＣＩバス７の使用許可をアウトバウンドバッファ制御部６３に通知する。通知を受けたアウトバウンドバッファ制御部６３は、バッファ６３ａに格納されているトランザクションをアウトバウンド制御部６６２に送信する。
【００４１】
アウトバウンド制御部６６２は、アウトバウンド・リード・リクエストトランザクションを受け取ったので、バス信号制御部６６１へ受信したトランザクションを送出する。バス信号制御部６６１は受け取ったトランザクションをＰＣＩバストランザクションに変換してＰＣＩバス７へ送出し、目的のＰＣＩデバイスへ到達させる。リード・リクエストトランザクション（この場合アドレス）を受けとったＰＣＩデバイスは対応するリードデータをＰＣＩバス７上に送出する。リードデータはバス信号制御部６６１により受信される。このＰＣＩバス７上でのデータの伝達動作は、一般的なＰＣＩサイクルのため当業者によく知られており、その詳細な説明を省略する。
【００４２】
リードデータを受信したバス信号制御部６６１は、リードデータをインバウンド制御部６６３に送信する。インバウンド制御部６６３は、受け取ったリードデータをインバウンドバッファ制御部６４のバッファ６４ａに格納する。ＰＣＩデバイスから要求したデータの受信完了を確認したバス信号制御部６６１は、正常リプライをインバウンド制御部６６３経由でインバウンドバッファ制御部６４に送信する。
【００４３】
リプライを受け取ったインバウンドバッファ制御部６４は、バッファ６４ａに格納されたリードデータとリプライをリードリプライトランザクションとして出力インタフェース制御部６２に送出する。出力インタフェース制御部６２は受信したリードリプライトランザクションをメモリコントローラ３に送出する。
【００４４】
以降は逆の経路を辿ってメモリコントローラ３、ＦＳＢ２を経てトランザクションの送出元であるＣＰＵに返却され、ブリッジドライバに返却され、関数をコールしたデバイスドライバにリードデータを返却する。
【００４５】
ＰＣＩバス７上でのアウトバウンド・リード・トランザクション実行中にＰＣＩバスエラー（アドレス・パリティエラー、データ・パリティエラー、ＳＥＲＲ＃検出）が発生した場合は、ＰＣＩバス制御部６６内のバス信号制御部６６１がエラーを検出してバス障害インジケータ６６４ａおよびバスリセット抑止インジケータ６６４ｂを点灯させる。同時にバス信号制御部６６１は、アウトバウンド制御部６６２から受信したリードリクエストトランザクションに対して、リードデータをＡＬＬ"１"とした正常リードリプライトランザクションをインバウンド制御部６６３に送出する。
【００４６】
インバウンド制御部６６３は、受け取ったリードリプライトランザクションをインバウンドバッファ制御部６４のバッファ６４ａに格納する。インバウンドバッファ制御部６４は、バッファ６４ａに格納されたリードリプライトランザクションを出力インタフェース制御部６２に送出する。出力インタフェース制御部６２は受信したリードリプライトランザクションをメモリコントローラ３に送出する。以降は逆の経路を辿ってメモリコントローラ３、ＦＳＢ２を経てトランザクションの送出元であるＣＰＵに返却され、リードトランザクション発行元のブリッジドライバに返却される。バス障害インジケータ６６４ａの点灯後はＰＣＩバス７は縮退状態となる。
【００４７】
次に、ＣＰＵからのＩ／Ｏライト（アウトバウンド・ライト）について説明する。図４は、このＩ／Ｏライトの処理フローを示す図である。
【００４８】
ＰＣＩデバイスドライバが、ＰＣＩデバイスにデータを転送する場合、ブリッジドライバが提供するライト関数（pci_io_write()、pci_mem_write()）をコールする。これによりブリッジドライバは目的のＰＣＩデバイスに対してアウトバウンド・ライト・リクエストトランザクションを送信する。
【００４９】
まず、ポステッド（Posted）・ライト・トランザクション（pci_mem_write()）に関して説明する。ポステッド・アウトバウンド・ライト・リクエストトランザクションは、ＦＳＢ２を経由してメモリコントローラ３からＩＯＣへ送出される。ＩＯＣへ送出されたアウトバウンド・ライト・リクエストトランザクションは、ＰＣＩバスコントローラ６内の入力インタフェース制御部６１で受信される。トランザクションを受信した入力インタフェース制御部６１は、トランザクション種別によりトランザクション格納先を決定する。ここではアウトバウンド系のトランザクションのため、格納先はアウトバウンドバッファ制御部６３のバッファ６３ａとなる。トランザクションを格納したアウトバウンドバッファ制御部６３は、アービトレーション部６６５に対してＰＣＩバス７の使用権を要求する。これを受け取ったアービトレーション部６６５は、ＰＣＩバス７の調停を行い、ＰＣＩバス７の使用許可をアウトバウンドバッファ制御部６３通知する。通知を受けたアウトバウンドバッファ制御部６３は、バッファ６３ａに格納されているトランザクションをアウトバウンド制御部６６２に送信する。アウトバウンド制御部６６２は、アウトバウンド・ライト・リクエストトランザクションを受け取ったので、バス信号制御部６６１に受信したトランザクションを送出する。バス信号制御部６６１は受け取ったトランザクションをＰＣＩバストランザクションに変換してＰＣＩバス７へ送出し、目的のＰＣＩデバイスへ到達させる。このＰＣＩバス７上でのトランザクションの伝達動作は、一般的なＰＣＩサイクルのため当業者によく知られており、その詳細な説明を省略する。
【００５０】
次に、ディファード（Deferred）・ライト・トランザクション（pci_io_write()）に関して説明する。ディファード・アウトバウンド・ライト・リクエストトランザクションのＰＣＩデバイスへの伝達動作は、上述したポステッド・ライト・トランザクションと同様に行われる。ディファード・ライト・トランザクションの場合はリプライが必要であるため、バス信号制御部６６１は目的のＰＣＩデバイスへ全てのデータ送出完了を確認した後、インバウンド制御部６６３に対して正常ライトリプライトランザクションを発行する。インバウンド制御部６６３は、ライトリプライトランザクションをインバウンドバッファ制御部６４に送信する。インバウンドバッファ制御部６４は、ライトリプライトランザクションを出力インタフェース制御部６２に送出する。出力インタフェース制御部６２は受信したライトリプライトランザクションをメモリコントローラ３に送出する。以降は逆の経路を辿ってメモリコントローラ３、ＦＳＢ２を経てトランザクションの送出元であるＣＰＵにライトリプライトランザクションが返却さる。
【００５１】
ＰＣＩバス７上でのアウトバウンド・ライト・トランザクション実行中にＰＣＩバスエラー（アドレス・パリティエラー、データ・パリティエラー、ＳＥＲＲ＃検出）が発生した場合は、ＰＣＩバス制御部６６内のバス信号制御部６６１がエラーを検出してバス障害インジケータ６６４ａおよびバスリセット抑止インジケータ６６４ｂを点灯させる。同時にバス信号制御部６６１は、アウトバウンド制御部６６２から受信したポステッド・ライト・リクエストトランザクションは破棄する。また、アウトバウンド制御部６６２から受信したディファード・ライト・リクエストトランザクションは破棄し、正常ライトリプライトランザクションをインバウンド制御部６６３に送出する。インバウンド制御部６６３は、受け取ったライトリプライトランザクションをインバウンドバッファ制御部６４のバッファ６４ａに格納する。インバウンドバッファ制御部６４は、バッファ６４ａに格納されたライトリプライトランザクションを出力インタフェース制御部６２に送出する。出力インタフェース制御部６２は受信したライトリプライトランザクションをメモリコントローラ３に送出する。以降は逆の経路を辿ってメモリコントローラ３、ＦＳＢ２を経てトランザクションの送出元であるＣＰＵにライトリプライトランザクションを返却する。バス障害インジケータ６６４ａの点灯後はＰＣＩバス７は縮退状態となる。
【００５２】
次に、ＰＣＩデバイスからのメモリリード（インバウンド・リード）について説明する。図５は、このメモリリードの処理フローを示す図である。
【００５３】
メモリリードを行うＰＣＩバス７の配下のＰＣＩデバイスは、リクエスト信号線ＲＥＱ＃をドライブし、アービトレーション部６６５に対してＰＣＩバス７の使用権を要求する。これに対してアービトレーション部６６５は調停を行い、要求元のＰＣＩデバイスに対してＰＣＩバス７の使用を許可する。ＰＣＩバス７の使用権を獲得したＰＣＩデバイスは、インバウンド・リード・リクエストトランザクションをＩＯＣのＰＣＩバスコントローラ６に送信する。リード・リクエストトランザクションを受信したバス信号制御部６６１は、受信したＰＣＩトランザクションをプラットフォームの内部形式へ変換し、インバウンド制御部（ＩＢＣ）６６３に送信する。
【００５４】
インバウンド制御部６６３は、受信したトランザクションがインバウンド・リード・リクエストトランザクションであるため、インバウンドリードデータ制御部６５に送信する。リード・リクエストトランザクションを受け取ったインバウンドリードデータ制御部６５は、バッファ６５ａにリード・リクエストトランザクションに対応するリードデータがあるかチェックする。ここでは最初のリード・リクエストトランザクションであるため当該リードデータはバッファ６５ａには存在しない。このためインバウンドリードデータ制御部６５は、主記憶部４からリクエストトランザクションに対応するデータを読み出すためにリード・リクエストトランザクションをインバウンドバッファ制御部６４に送る。これと並行して当該データが存在していない旨をバス信号制御部６６１に対して通知する。通知を受けたバス信号制御部６６１は要求元のＰＣＩデバイスに対してリトライの指示を出す。
【００５５】
リード・リクエストトランザクションを受け取ったインバウンドバッファ制御部６４は出力インタフェース制御部６２に送り、出力インタフェース制御部６２はメモリコントローラ３へリード・リクエストトランザクションを送信する。
【００５６】
メモリコントローラ３はＩＯＣ５から受け取ったトランザクションに従い主記憶部４をアクセスする。主記憶部４からのリプライデータはインバウンド・リード・リプライトランザクションとして、逆の経路を辿ってメモリコントローラ３からＩＯＣへ送出され、ＰＣＩバスコントローラ６内の入力インタフェース制御部６１で受信される。
【００５７】
インバウンド・リード・リプライトランザクションを受信した入力インタフェース制御部６１は、インバウンド・トランザクションのため、インバウンドリードデータ制御部６５にルーティングし、インバウンドリードデータ制御部６５はバッファ６５ａに格納する。
【００５８】
その後、ＰＣＩデバイスから、前回と同じリード・リクエストトランザクションをバス信号制御部６６１が受信すると、上述した動作と同様にリード・リクエストトランザクションはインバウンドリードデータ制御部６５に送信される。
【００５９】
トランザクションを受信したインバウンドリードデータ制御部６５はバッファ６５ａに対応するリードデータがあるかをチェックする。今回はデータが存在するため、リード・リクエストトランザクションに対応するリードデータをアウトバウンド制御部６６２に送信する。
【００６０】
アウトバウンド制御部６６２は、受信したリードデータをバス信号制御部６６１に送信する。バス信号制御部６６１は、受信したリードデータをＰＣＩバストランザクションに変換してＰＣＩバス７へ送出し、リード要求元のＰＣＩデバイスへ到達させる。このＰＣＩバス７上でのリトライやリードデータの伝達動作は、一般的なＰＣＩサイクルのため当業者によく知られており、その詳細な説明を省略する。
【００６１】
ＰＣＩバス７上でのインバウンド・リード・トランザクション実行中にＰＣＩバスエラー（アドレス・パリティエラー、データ・パリティエラー、ＳＥＲＲ＃検出）が発生した場合は、ＰＣＩバス制御部６６内のバス信号制御部６６１がエラーを検出してバス障害インジケータ６６４ａおよびバスリセット抑止インジケータ６６４ｂを点灯させる。同時にバス信号制御部６６１は、ＰＣＩバス７から受信したインバウンド・リード・トランザクションを破棄する。バス障害インジケータ６６４ａの点灯後はＰＣＩバス７は縮退状態となる。
【００６２】
次に、ＰＣＩデバイスからのメモリライト（インバウンド・ライト）について説明する。図６は、このメモリライトの処理フローを示す図である。
【００６３】
メモリライトを行うＰＣＩバス７の配下のＰＣＩデバイスは、リクエスト信号線ＲＥＱ＃をドライブし、アービトレーション部６６５に対してＰＣＩバス７の使用権を要求する。これに対してアービトレーション部６６５は調停を行い、要求元のＰＣＩデバイスに対してＰＣＩバス７の使用を許可する。ＰＣＩバス７の使用権を獲得したＰＣＩデバイスは、インバウンド・ライト・リクエストトランザクションをＩＯＣ５のＰＣＩバスコントローラ６に送信する。
【００６４】
ライト・リクエストトランザクションを受信したバス信号制御部６６１は、受信したＰＣＩトランザクションをプラットフォームの内部形式へ変換し、インバウンド制御部６６３に送信する。インバウンド制御部６６３は受信したライト・リクエストトランザクションをインバウンドバッファ制御部６４に送信する。
【００６５】
インバウンドバッファ制御部６４は受け取ったライト・リクエストトランザクションをバッファ６４ａに格納する。ＰＣＩデバイスから全てのライト・リクエストトランザクション受信完了後、インバウンドバッファ制御部６４は、バッファ６４ａに格納していたトランザクションを出力インタフェース制御部６２に送信する。
【００６６】
出力インタフェース制御部６２は受信したライト・リクエストトランザクションをメモリコントローラ３へ送出する。メモリコントローラ３はＩＯＣから受け取ったトランザクションに従い主記憶部４に対して書き込みを行う。このＰＣＩバス７上でのライトデータの伝達動作は、一般的なＰＣＩサイクルのため当業者によく知られており、その詳細な説明を省略する。
【００６７】
ＰＣＩバス７上でのインバウンド・ライト・トランザクション実行中にＰＣＩバスエラー（アドレス・パリティエラー、データ・パリティエラー、ＳＥＲＲ＃検出）が発生した場合は、ＰＣＩバス制御部６６内のバス信号制御部６６１がエラーを検出してバス障害インジケータ６６４ａおよびバスリセット抑止インジケータ６６４ｂを点灯させる。バス障害インジケータ６６４ａを点灯させたバス信号制御部６６１は、ＰＣＩバス７から受信するインバウンド・ライト・リクエストトランザクションを破棄する。バス障害インジケータ６６４ａの点灯後はＰＣＩバス７は縮退状態となる。
【００６８】
次に、縮退状態でのトランザクション処理について説明する。
【００６９】
ＰＣＩバスコントローラ６は、ＰＣＩバスエラーが発生してバス障害インジケータ６６４ａを点灯した後、配下のＰＣＩバス７を縮退状態として扱い、後続のトランザクションを以下のように処理する。
【００７０】
ＰＣＩデバイスへのアウトバウンド・リードトランザクションに関しては、上述した同様の動作でＰＢＣ６に送信される。送信されたトランザクションは入力インタフェース制御部６１からアウトバウンドバッファ制御部６３を経由してアウトバウンド制御部６６２に到達する。
【００７１】
アウトバウンド制御部６６２は、受け取ったトランザクションをバス信号制御部６６１経由でＰＣＩバス７に出力せずに、アウトバウンド制御部６６２内でリードデータをＡＬＬ"１"とした正常リードリプライトランザクションに変換し、インバウンド制御部６６３経由でインバウンドバッファ制御部６４のバッファ６４ａに格納する。
【００７２】
インバウンドバッファ制御部６４は、バッファ６４ａに格納されたリードリプライトランザクションを出力インタフェース制御部６２に送出する。出力インタフェース制御部６２は、受信したリードリプライトランザクションをメモリコントローラ３に送出する。以降は逆の経路を辿ってメモリコントローラ３、ＦＳＢ２を経てトランザクションの送出元であるＣＰＵに返却され、リードトランザクション発行元のブリッジドライバに返却される。
【００７３】
また、ＰＣＩデバイスへのアウトバウンド・ライト・トランザクションに関しては、上述した同様の動作でＰＢＣ６に送信される。送信されたトランザクションは入力インタフェース制御部６１からアウトバウンドバッファ制御部６３を経由してアウトバウンド制御部６６２に到達する。受け取ったトランザクションがポステッド・ライトの場合、アウトバウンド制御部６６２は、受信したトランザクションをバス信号制御部６６１経由でＰＣＩバス７に出力せず破棄する。また、受け取ったトランザクションがディファード・ライトの場合、アウトバウンド制御部６６２は、受信したトランザクションをバス信号制御部６６１経由でＰＣＩバス７に出力せず破棄し、正常ライトリプライトランザクションをインバウンド制御部６６３経由でインバウンドバッファ制御部６４のバッファ６４ａに格納する。インバウンドバッファ制御部６４は、バッファ６４ａに格納されたライトリプライトランザクションを出力インタフェース制御部６２に送出する。出力インタフェース制御部６２は受信したライトリプライトランザクションをメモリコントローラ３に送出する。以降は逆の経路を辿ってメモリコントローラ３、ＦＳＢ２を経てトランザクションの送出元であるＣＰＵに返却される。
【００７４】
また、ＰＣＩデバイスからのインバウンド・トランザクションに関しては、アービトレーション部６６５が配下のＰＣＩバス７に接続されているＰＣＩデバイスからのリクエスト信号線ＲＥＱ＃をマスクする。これによりインバウンド・トランザクションを受け付けないようにし、ＰＣＩバス障害伝搬による更なるエラー発生を抑止する。
【００７５】
次に、ログ収集部６７によるログ収集処理について説明する。
【００７６】
ＰＣＩバスコントローラ６のログ収集部６７は、ＰＣＩバスエラーが発生してバス障害インジケータ６６４ａを点灯した後、ＰＣＩの各種詳細ログ情報の収集に関して以下のように処理する。ログ収集部６７は、ＰＣＩバス障害の発生を契機に障害発生部位に関する各種詳細ログ情報を収集する。収集する情報は、ＰＣＩバスコントローラ６の内部レジスタ情報と障害ＰＣＩバスの配下に実装されたＰＣＩカードのレジスタの保持値を対象とする。ＰＣＩバスコントローラ６の内部レジスタ情報の収集に関しては、ログ収集部６７は情報収集用の専用インタフェース（Ｉ／Ｆ）を各部位に対して有しており、これを用いて収集を行う。ＰＣＩカードのレジスタに関しては、ログ収集部６７がＰＣＩバス制御部６６内のバス信号制御部６６１を直接駆動して、ＰＣＩカードの全コンフィグレーション空間およびコンフィグレーション空間内に存在するＢＡＲ（ベースアドレスレジスタ）によって指し示されるメモリ空間（収集するメモリ空間の大きさは実装により任意）を収集する。収集したログ情報は、ログ収集部６７内のログバッファ６７ａに格納する。ログ収集部６７は、一連のログ収集処理の完了を契機に、バスリセット抑止インジケータ６６４ｂのリセットを行う。言い換えれば、バスリセット抑止インジケータ６６４ｂは、リセットの抑止を解除する。
【００７７】
次に、ブリッジドライバによる障害検出処理について説明する。
【００７８】
アウトバウンド・リード・トランザクションに関しての障害検出処理は次のように行われる。ブリッジドライバは返却されたリードデータをチェックする。ここで受け取ったリードデータがＡＬＬ"１"である場合、ブリッジドライバはＰＣＩバスエラーが発生した可能性があることを検知する。ＰＣＩバスエラー発生の可能性を検知したブリッジドライバは、ＰＣＩバスコントローラ６宛にコンフィグレーション・リード・トランザクションを送信し、バス障害インジケータ６６４ａの点灯状況の確認を行う。ここで、バス障害インジケータ６６４ａが点灯していた場合、ブリッジドライバはデバイスドライバに対して障害発生を通知する。通知を受けたデバイスドライバは、自身の障害復旧プログラムを起動する。
【００７９】
アウトバウンド・ライト・トランザクションに関しての障害検出処理は次のように行われる。デバイスドライバはトランザクションが正常終了したかは不明のため、適切なタイミングでブリッジドライバが提供する縮退チェック関数（pci_bus_check()）をコールし、ＰＣＩバス７の状態確認を行う。これによりブリッジドライバは、ＰＣＩバスコントローラ６宛にコンフィグレーション・リード・トランザクションを送信し、バス障害インジケータ６６４ａの点灯状況の確認を行う。ここでバス障害インジケータ６６４ａが点灯していた場合、ブリッジドライバはデバイスドライバに対して障害発生を通知する。通知を受けたデバイスドライバは、自身の障害復旧プログラムを起動する。
【００８０】
インバウンド・トランザクションに関しての障害検出処理は次のように行われる。ＰＣＩバス７の縮退時はインバウンド・トランザクションはＰＣＩデバイスから送信されないために、デバイスドライバが障害を検出するタイミングが無い。障害を検出するためにブリッジドライバは、定期的にＰＣＩバスコントローラ６宛にコンフィグレーション・リード・トランザクションを送信し、バス障害インジケータ６６４ａの確認を行う。ここでバス障害インジケータ６６４ａが点灯していた場合、ブリッジドライバはデバイスドライバに対して障害発生を通知する。通知を受けたデバイスドライバは、自身の障害復旧プログラムを起動する。
【００８１】
次に縮退状態からの復旧処理について説明する。
【００８２】
バス縮退状態からの復旧は次のように行われる。上述したように、障害発生を通知されたデバイスドライバは、自身の障害復旧プログラムの中でＰＣＩバス縮退状態復旧要求関数（pci_bus_recovery()）をコールする。復旧要求を受け取ったブリッジドライバは、障害が発生したＰＣＩバス７をリセットするために、ＰＣＩバスコントローラ６に対してバスリセットを要求するコンフィグレーション・ライト・リクエストトランザクションを送信し、デバイスドライバに対しては復旧処理中を通知する。
【００８３】
また、当該ＰＣＩバス７が既に復旧処理中ならば、デバイスドライバに対して復旧処理中のみを通知する。コンフィグレーション・ライト・リクエストトランザクションは、アウトバウンド・トランザクションと同様の動作でＰＣＩバスコントローラ６に到達する。ＰＣＩバスコントローラ６に到達したトランザクションは、ＰＣＩバスコントローラ６内の入力インタフェース制御部６１で受信される。
【００８４】
トランザクションを受信した入力インタフェース制御部６１は、当該トランザクションがコンフィグレーション・ライト・リクエストトランザクションであるため、アウトバウンドバッファ制御部６３にルーティングし、バッファ６３ａに当該トランザクションを格納する。トランザクションを格納したアウトバウンドバッファ制御部６３は、アービトレーション部６６５に対してＰＣＩバス７の使用権を要求する。これを受け取ったアービトレーション部６６５は、ＰＣＩバス７の調停を行い、ＰＣＩバス７の使用許可をアウトバウンドバッファ制御部６３に通知する。
【００８５】
通知を受けたアウトバウンドバッファ制御部６３は、バッファ６３ａに格納されているトランザクションをアウトバウンド制御部６６２に送信する。アウトバウンド制御部６６２は、アウトバウンドバッファ制御部６３から受信したＰＣＩバスコントローラ６宛のコンフィグレーション・リクエストトランザクションがＰＣＩバス７のリセット指示であるかを判定する。アウトバウンド制御部６６２は、該ＰＣＩバスコントローラ６宛のコンフィグレーション・リクエストトランザクションがＰＣＩバス７のリセット指示であり、バスリセット抑止インジケータ６６４ｂが非点灯状態の場合は該リセット指示をコンフィグレーション部６６４に送出し、バスリセット抑止インジケータ６６４ｂが点灯状態の場合には該リセット指示をバスリセット指示保持部６６２ａに保持（保留）する。
【００８６】
バスリセット指示保持部６６２ａは、バスリセット抑止インジケータ６６４ｂの状態を監視し、リセットへの遷移した時に保持（保留）しているバスリセット指示を再開するよう動作し、該リセット指示をコンフィグレーション部６６４に送出する。
【００８７】
コンフィグレーション部６６４は受信したリセット指示であるコンフィグレーション・ライト・トランザクションに従い、ＰＣＩバス７のリセット信号をドライブすることでＰＣＩバス７の関連部位の初期化を行う。
【００８８】
ＰＣＩバス７のリセット完了後、コンフィグレーション部６６４は、コンフィグレーション・ライト・リプライトランザクションをインバウンド制御部６６３に送信する。インバウンド制御部６６３は、受け取ったコンフィグレーション・ライト・リプライトランザクションをインバウンドバッファ制御部６４のバッファ６４ａに格納する。
【００８９】
インバウンドバッファ制御部６４は、バッファ６４ａに格納されたコンフィグレーション・ライト・リプライトランザクションを出力インタフェース制御部６２に送出する。出力インタフェース制御部６２は受信したコンフィグレーション・ライト・リプライトランザクションをメモリコントローラ３に送出する。
【００９０】
以降は逆の経路を辿ってメモリコントローラ３とＦＳＢ２とを経てトランザクションの送出元であるＣＰＵに返却される。コンフィグレーション・ライトの完了を確認したブリッジドライバは、ＰＣＩバス７のリセット完了を認識し、ログ収集部６７のログバッファ６７ａを読み出し、収集されているＰＣＩの各種詳細ログ情報をシステムのログとして記録する。ブリッジドライバは、その後、当該ＰＣＩバス７の縮退状態を解除するために、ＰＣＩバスコントローラ６に対してバス障害インジケータ６６４ａをリセットするコンフィグレーション・ライト・リクエストトランザクションを送信する。当該コンフィグレーション・ライト・リクエストトランザクションは、アウトバウンド・トランザクションと同様の動作でＰＣＩバスコントローラ６に到達する。
【００９１】
ＰＣＩバスコントローラ６に到達したトランザクションは、ＰＣＩバスコントローラ６内の入力インタフェース制御部６１で受信される。トランザクションを受信した入力インタフェース制御部６１は、当該トランザクションがコンフィグレーション・ライト・リクエストトランザクションであるため、アウトバウンドバッファ制御部６３にルーティングし、バッファ６３ａに当該トランザクションを格納する。
【００９２】
トランザクションを格納したアウトバウンドバッファ制御部６３は、アービトレーション部６６５に対してＰＣＩバス７の使用権を要求する。これを受け取ったアービトレーション部６６５は、ＰＣＩバス７の調停を行い、ＰＣＩバス７の使用許可をアウトバウンドバッファ制御部６３に通知する。通知を受けたアウトバウンドバッファ制御部６３は、バッファ６３ａに格納されているトランザクションをアウトバウンド制御部６６２に送信する。
【００９３】
アウトバウンド制御部６６２は、アウトバウンドバッファ制御部６３から受信したＰＣＩバスコントローラ６宛のコンフィグレーション・リクエストトランザクションをコンフィグレーション部６６４に送出する。
【００９４】
コンフィグレーション部６６４は受信したコンフィグレーション・ライト・トランザクションに従い、バス障害インジケータ６６４ａのリセットを行い縮退状態からの復旧を行う。
【００９５】
コンフィグレーション部６６４は、バス障害インジケータ６６４ａのリセット後、コンフィグレーション・ライト・リプライトランザクションをインバウンド制御部６６３に送信する。インバウンド制御部６６３は、受け取ったコンフィグレーション・ライト・リプライトランザクションをインバウンドバッファ制御部６４のバッファ６４ａに格納する。インバウンドバッファ制御部６４は、バッファ６４ａに格納されたコンフィグレーション・ライト・リプライトランザクションを出力インタフェース制御部６２に送出する。出力インタフェース制御部６２は受信したコンフィグレーション・ライト・リプライトランザクションをメモリコントローラ３に送出する。
【００９６】
以降は逆の経路を辿ってメモリコントローラ３とＦＳＢ２とを経てトランザクションの送出元であるＣＰＵに返却される。コンフィグレーション・ライトの完了を確認したブリッジドライバは、復旧要求を指示したデバイスドライバへ復旧完了を通知する。復旧完了を通知されたデバイスドライバは、ＰＣＩデバイスをシステムに再組み込みするための処理を行う。
【００９７】
上記第１の実施形態のコンピュータシステムが奏する作用効果は以下の通りである。上述の通り、ログ収集部６７は、ＰＣＩバス７の障害発生に伴う縮退状態への遷移中であっても、ＰＣＩバス制御部（ＰＸＣ）６６のバス信号制御部６６１を直接制御し、障害が発生したＰＣＩバス７の配下に実装されたＰＣＩデバイスの情報を取得する。バスリセット抑止インジケータ６６４ｂは、配下のＰＣＩバス７のリセットを一時的に抑止（禁止）するための制御を行うもので、ＰＣＩバス７の障害の発生を契機にセットされ、ログ収集部６７によるログ情報収集の完了でリセットされる。バスリセット指示保持部６６２ａは、ＰＣＩバス７のリセット指示を一時的に保持するもので、バスリセット抑止インジケータ６６４ｂがセットされている期間中（ログ収集部６７がログ情報を収集している期間中）に当該ＰＣＩバス７へ発行されたＰＣＩバスリセット指示を保持（保留）し、バスリセット抑止インジケータ６６４ｂのリセットを契機に保持した処理を再開するよう制御する。
【００９８】
また、ブリッジドライバは、ＰＣＩバス７の障害検出に伴う復旧処理にて障害となったＰＣＩバス７のリセット処理を実行するが、前記バスリセット抑止インジケータ６６４ｂ、バスリセット指示保持部６６２ａおよびログ収集部６７の動作により、ブリッジドライバによるＰＣＩバス７のリセット処理とログ収集部６７によるログ収集処理の競合を適切に回避し、ログ収集の確実な処理完了を保証することができる。
【００９９】
また、バス障害インジケータ６６４ａは、ＰＣＩバス７の障害の発生を契機にセットされ、ブリッジドライバの指示によりリセットされる。ブリッジドライバは、ＰＣＩバス７の障害検出に伴う復旧処理にて障害となったＰＣＩバス７のリセットが完了すると、ログ収集部６７のログバッファ（Log Buffer）６７ａを読み出し、システムのログ情報として記録する。その後、当該ＰＣＩバス７の縮退状態を解除するために、バス障害インジケータ６６４ａをリセットする。ブリッジドライバは、ＰＣＩバス７の障害が発生したタイミングからＰＣＩバス７のリセット完了のタイミングまでの間、バス障害インジケータ６６４ａのセット状態を保証することで、ＰＣＩバス７のリセット処理期間中に不慮に発行され得る障害ＰＣＩバスへのトランザクションに対して、特殊処理（書込み系処理は全て正常リプライ返却、読出し系処理は全て正常リプライでＡＬＬ"１"としたデータの返却）を保証し、ＰＣＩバス７のリセットとトランザクション競合によるトランザクションのロスト発生（重度の障害）を回避する。
【０１００】
これらの動作により、ＰＣＩバス７の障害時のログ情報（内部チップセットおよびＰＣＩカードのレジスタ情報）を確実に収集し、かつ、ＰＣＩバスリセットを安全に実行することができる。また、ＰＣＩバス７のリセット処理期間中に不慮に発行され得る障害ＰＣＩバスへのトランザクションに対して特殊処理（書込み系処理は全て正常リプライ返却、読出し系処理は全て正常リプライでＡＬＬ"１"としたデータの返却）が保証されるので、ＰＣＩバス７のリセットと不慮に発行され得るトランザクションとの競合によるトランザクションのロスト等の重度の障害の発生を回避することができ、安全にＰＣＩバス７の障害からの復旧処理を実行することができる。
【０１０１】
（第２の実施形態）
次に、本発明に係る第２の実施形態について説明する。図７は、第２の実施形態のＰＣＩバスコントローラ（ＰＢＣ）６の概略構成を示すブロック図である。図７のＰＣＩバスコントローラ６は、サービスプロセッサ用ログ収集部６８を有する点を除いて、図２に示したＰＣＩバスコントローラ６と同一構成を有する。
【０１０２】
サービスプロセッサ（ＳＶＰ）は、コンピュータシステムの運用関連の処理全般を行うもので、比較的大規模なコンピュータシステムでは広く採用されている。サービスプロセッサ（ＳＶＰ）は、一般的に、障害発生時のログ情報の収集・記録処理も実行しており、上記実施形態に示したログ収集部６７に関する機能をサービスプロセッサ（ＳＶＰ）の制御により実現することも可能である。
【０１０３】
図７は、サービスプロセッサ（ＳＶＰ）が導入されたコンピュータシステムにおけるＰＣＩバスコントローラの一例を示している。図７におけるサービスプロセッサ用ログ収集部（ＳＶＰＣ）６８は、サービスプロセッサとのインタフェース機能を有し、サービスプロセッサ（ＳＶＰ）からの指示により、ＰＣＩバスコントローラ６内部の各種制御（内部レジスタの読み出しや書き込み）を行うことができる。
【０１０４】
ＳＶＰＣ６８は、バス信号制御部６６１からＰＣＩバスの障害の報告を受け、サービスプロセッサ（ＳＶＰ）に障害の発生を通知する。ＰＣＩバスの障害発生を通知されたサービスプロセッサ（ＳＶＰ）は、ＳＶＰＣ６８を経由して、ＰＣＩの各種詳細ログ情報を収集してシステムのログ情報として記録する。サービスプロセッサ（ＳＶＰ）は、一連のログ収集処理の完了に伴い、ＰＣＩバスのリセットを一時的に抑止（禁止）するための制御を行うためにセットされているバスリセット抑止インジケータ６６４ｂのリセットをＳＶＰＣ６８を経由して行う。図１におけるログ収集部６７の機能が、サービスプロセッサ（ＳＶＰ）とＳＶＰＣ６８の機能により実現されるもので、他の動作は、上記第１の実施形態の動作と基本的に同じである。なお、図１の構成では、ブリッジドライバがログ収集部６７のログバッファ６７ａを読み出す処理が存在したが、この処理は、本実施形態では、サービスプロセッサ（ＳＶＰ）により実行されるため、ブリッジドライバとしては処理不要である。
【０１０５】
（第３の実施形態）
次に、本発明に係る第３の実施形態について説明する。図８は、第３の実施形態に係る大規模システムの構成を示す図である。この大規模システムは、複数のセル２０，…と、複数のＩ／Ｏコントローラ（ＩＯＣ）５と、これらセル２０，…およびＩ／Ｏコントローラ５を接続するクロスバー・スイッチ２１とを有する。図９は、セル２０の構成を示す図であり、図１０は、Ｉ／Ｏコントローラ５の構成を示す図である。図１０の構成は、図１に示したＩ／Ｏコントローラ５の構成と実質的に同じである。
【０１０６】
図９に示されるように、各セル２０は、プロセッサ（ＣＰＵ）１１〜１４、プロセッサバス２、メモリコントローラ３および主記憶部４を構成単位として有する。図１のプロセッサ１の数を増やし、図２のメモリコントローラ３とＩ／Ｏコントローラ５のインタフェース（Ｉ／Ｆ）機能をクロスバー・スイッチ（ＸＢＣ）２１に集約し、Ｉ／Ｏコントローラ５とＰＣＩバス数を増やして構築したものが、図８の大規模システム（マルチプロセッサシステム）である。このようなクロスバー・スイッチ２１を用いたシステムに関しては当該事業者により広く知られた技術であるため、ここでは詳細な説明を省略する。
【０１０７】
この大規模システムは、８つのセルで構成された３２ウェイプロセッサ機である。このような大規模マルチプロセッサシステムにおいても、ＣＰＵからのＩ／Ｏリード、ＣＰＵからのＩ／Ｏライト、ＰＣＩデバイスからのメモリリード、ＰＣＩデバイスからのメモリライトという動作は、上記に説明してきたようなアウトバウンド・リード、アウトバウンド・ライト、インバウンド・リードおよびインバウンド・ライトといったトランザクションの送受信により行われる。大規模システムでは構成要素としてクロスバー・スイッチ（ＸＢＣ）２１が追加されているが、各種トランザクションはクロスバー・スイッチ２１を経由するだけである。
【０１０８】
したがって、第３の実施形態では、マルチプロセッサシステムの構成規模に左右されずに、上述の第１の実施形態と同様の効果を発揮することが可能である。
【０１０９】
以上、図面を参照して本発明の実施形態について述べたが、これらは本発明の例示であり、上記以外の様々な構成を採用することもできる。たとえば、上記実施形態では、入出力バスと入出力デバイスとして、それぞれ、ＰＣＩ規格に準拠したバスとデバイスを例示したが、これに限定されるものではない。信号伝送路に障害が発生し得る規格であれば、本発明を適用することができる。
（付記１）
データ処理を行うプロセッサと、
少なくとも１つの入出力デバイスが接続された入出力バスと、
前記プロセッサと前記入出力バスとの間に介在しかつ前記入出力バスの動作を制御するバス制御装置と、を備え、
前記バス制御装置は、
リセット指示を受信するとこれに応じて前記入出力バスをリセットするリセット制御手段と、
前記入出力バスの障害の発生を契機として、前記入出力バスのリセットを抑止するリセット抑止手段と、
前記入出力バスの障害の発生を契機として、前記入出力バスにおける当該障害の発生部位に接続された入出力デバイスのログ情報を収集するログ収集手段と、
前記ログ収集手段により収集されたログ情報を前記プロセッサに転送する入出力インタフェースと、
を含み、
前記リセット抑止手段は、前記ログ収集手段による前記ログ情報の収集が完了した後に前記リセットの抑止を解除する、コンピュータシステム。
（付記２）
付記１記載のコンピュータシステムであって、前記バス制御装置は、前記入出力バスの障害の発生を契機として前記入出力バスを縮退状態に遷移させるバス障害インジケータを更に含み、
前記バス障害インジケータは、前記リセット制御手段による前記入出力バスのリセットが完了した後に前記入出力バスの縮退状態を解除する、コンピュータシステム。
（付記３）
付記２記載のコンピュータシステムであって、前記プロセッサは、前記入出力バスの障害の発生を契機として前記バス障害インジケータに対して前記入出力バスの縮退状態への遷移を指示するブリッジドライバを有し、
前記ブリッジドライバは、前記リセット制御手段による前記入出力バスのリセットが完了した後に、前記バス障害インジケータに対して前記入出力バスの縮退状態の解除を指示する、コンピュータシステム。
（付記４）
付記１から３のうちのいずれか１つに記載のコンピュータシステムであって、前記バス制御装置は、前記リセット抑止手段によって前記リセットの抑止が解除されるまで前記リセット指示を保持するリセット指示保持手段を更に含み、
前記リセット指示保持手段は、前記リセットの抑止が解除された後に、当該保持していたリセット指示を前記リセット制御手段に送信する、コンピュータシステム。
（付記５）
付記４記載のコンピュータシステムであって、前記プロセッサは、前記入出力バスの障害の発生を契機として、前記リセット指示を表すトランザクションを発行する、コンピュータシステム。
（付記６）
付記１から５のうちのいずれか１つに記載のコンピュータシステムであって、前記ログ収集手段は、当該収集されたログ情報を一時的に記憶するログバッファを有し、
前記入出力インタフェースは、前記リセット制御手段による前記入出力バスのリセットが完了した後に、前記ログバッファから前記ログ情報を読み出し前記プロセッサに転送する、コンピュータシステム。
（付記７）
付記１から６のうちのいずれか１つに記載のコンピュータシステムであって、前記バス制御装置は、前記入出力バスの動作に対する制御状態を表すデータを保持するレジスタを含み、
前記ログ収集手段は、前記レジスタから前記制御状態を表すデータをログ情報として収集し、前記入出力インタフェースは、前記ログ情報を前記プロセッサに転送する、コンピュータシステム。
（付記８）
付記１から７のうちのいずれか１つに記載のコンピュータシステムであって、前記入出力バスがＰＣＩ（Peripheral Component Interconnect）バスである、コンピュータシステム。
（付記９）
データ処理を行うプロセッサと、少なくとも１つの入出力デバイスが接続された入出力バスとの間に介在しかつ前記入出力バスの動作を制御するバス制御装置であって、
リセット指示を受信するとこれに応じて前記入出力バスをリセットするリセット制御手段と、
前記入出力バスの障害の発生を契機として、前記入出力バスのリセットを抑止するリセット抑止手段と、
前記入出力バスの障害の発生を契機として、前記入出力バスにおける当該障害の発生部位に接続された入出力デバイスのログ情報を収集するログ収集手段と、
前記ログ収集手段により収集されたログ情報を前記プロセッサに転送する入出力インタフェースと、
を含み、
前記リセット抑止手段は、前記ログ収集手段による前記ログ情報の収集が完了した後に前記リセットの抑止を解除する、バス制御装置。
（付記１０）
付記９記載のバス制御装置であって、前記入出力バスの障害の発生を契機として前記入出力バスを縮退状態に遷移させるバス障害インジケータを更に含み、
前記バス障害インジケータは、前記リセット制御手段による前記入出力バスのリセットが完了した後に、前記入出力バスの縮退状態を解除する、バス制御装置。
（付記１１）
付記９または１０記載のバス制御装置であって、前記リセット抑止手段によって前記リセットの抑止が解除されるまで前記リセット指示を保持するリセット指示保持手段を更に含み、
前記リセット指示保持手段は、前記リセットの抑止が解除された後に、当該保持していたリセット指示を前記リセット制御手段に送信する、バス制御装置。
（付記１２）
付記９から１１のうちのいずれか１つに記載のバス制御装置であって、前記ログ収集手段は、当該収集されたログ情報を一時的に記憶するログバッファを有し、
前記入出力インタフェースは、前記リセット制御手段による前記入出力バスのリセットが完了した後に、前記ログバッファから前記ログ情報を読み出し前記プロセッサに転送する、バス制御装置。
（付記１３）
付記９から１２のうちのいずれか１つに記載のバス制御装置であって、前記入出力バスの動作に対する制御状態を表すデータを保持するレジスタを含み、
前記ログ収集手段は、前記レジスタから前記制御状態を表すデータをログ情報として収集し、前記入出力インタフェースは、前記ログ情報を前記プロセッサに転送する、バス制御装置。
（付記１４）
付記９から１３のうちのいずれか１つに記載のバス制御装置であって、前記入出力バスがＰＣＩ（Peripheral Component Interconnect）バスである、バス制御装置。
【図面の簡単な説明】
【０１１０】
【図１】本発明に係る第１の実施形態のコンピュータシステムの概略構成を示すブロック図である。
【図２】第１の実施形態のＰＣＩバスコントローラ（ＰＢＣ）の概略構成を示すブロック図である。
【図３】Ｉ／Ｏリードの処理フローを示す図である。
【図４】Ｉ／Ｏライトの処理フローを示す図である。
【図５】メモリリードの処理フローを示す図である。
【図６】メモリライトの処理フローを示す図である。
【図７】本発明に係る第２の実施形態のＰＣＩバスコントローラ（ＰＢＣ）の概略構成を示すブロック図である。
【図８】本発明に係る第３の実施形態の大規模システムの構成を示す図である。
【図９】第３の実施形態の大規模システムを構成するセルの構成を示す図である。
【図１０】第３の実施形態の大規模なシステムを構成するＩ／Ｏコントローラの構成を示す図である。
【符号の説明】
【０１１１】
１  プロセッサ（ＣＰＵ）
２  プロセッサバス（ＦＳＢ：Front Side Bus）
３  メモリコントローラ（ＭＭＣ：Main Memory Control）
４  主記憶部
５  Ｉ／Ｏコントローラ（ＩＯＣ）
６  ＰＣＩバスコントローラ（ＰＢＣ）
６１  入力インタフェース制御部（ＩＮＣ）
６２  出力インタフェース制御部（ＯＴＣ）
６３  アウトバウンドバッファ制御部（ＯＢＱ）
６４  インバウンドバッファ制御部（ＩＢＱ）
６５  インバウンドリードデータ制御部（ＤＲＱ）
６６  ＰＣＩバス制御部（ＰＸＣ）
６６１  バス信号制御部（ＢＳ）
６６２  アウトバウンド制御部（ＯＢＣ）
６６２ａ  バスリセット指示保持部（ＲＰＢ）
６６３  インバウンド制御部（ＩＢＣ）
６６４  コンフィグレーション部（ＣＦＧ）
６６４ａ  バス障害インジケータ（ＥＲＩ）
６６４ｂ  バスリセット抑止インジケータ（ＲＩＩ）
６６５  アービトレーション部（ＡＲＢ）
６７  ログ収集部（ＰＬＣ）
６７ａ  ログバッファ
６８  サービスプロセッサ用ログ収集部（ＳＶＰＣ）
７  ＰＣＩバス
１１，１２，１３，１４  プロセッサ
２０  セル
２１  クロスバー・スイッチ（ＸＢＣ）
２２  サービスプロセッサ（ＳＶＰ）
【図１】
0005151580.tif 000003
【図２】
0005151580.tif 000004
【図３】
0005151580.tif 000005
【図４】
0005151580.tif 000006
【図５】
0005151580.tif 000007
【図６】
0005151580.tif 000008
【図７】
0005151580.tif 000009
【図８】
0005151580.tif 000010
【図９】
0005151580.tif 000011
【図１０】
0005151580.tif 000012