(57)【要約】【課題】ＩＯ制御回路の配下にデバイスが接続され、そのデバイスの配下に複数のバスが接続された場合でも、障害が発生したバスを閉塞することができるコンピュータシステムを提供する。【解決手段】本発明のコンピュータシステムは、複数のバス４−１、４−２と、複数のバス４−１、４−２が接続されたデバイス３と、デバイス３に接続されたＩＯ制御回路２とを具備している。デバイス３は、複数のバス４−１、４−２のうちの第１バス４−１に障害が発生したときに、それを表すエラーメッセージを送信する。ＩＯ制御回路２は、エラーメッセージに応じて、第１バス４−１を閉塞する。【選択図】図１
2008021153.tif 000002
【特許請求の範囲】
【請求項１】
複数のバスと、
前記複数のバスが接続され、前記複数のバスのうちの第１バスに障害が発生したときに、それを表すエラーメッセージを送信するデバイスと、
前記デバイスに接続され、前記エラーメッセージに応じて、前記第１バスを閉塞するＩＯ制御回路と
を具備するコンピュータシステム。
【請求項２】
前記デバイスは、それぞれ前記複数のバスが接続された複数のバス制御部を具備し、
通常動作において、前記ＩＯ制御回路は、送信元からの第１動作用トランザクションを前記複数のバス制御部のうちの第１バス制御部を介して前記第１バスに出力し、
前記第１バスに障害が発生したバス障害発生動作において、前記ＩＯ制御回路は、前記エラーメッセージであるエラーメッセージトランザクションに応じて、前記第１バスを閉塞し、
前記第１バスが閉塞されているバス閉塞動作において、前記ＩＯ制御回路は、前記送信元からの前記第１動作用トランザクションを前記第１バスに出力しない
請求項１に記載のコンピュータシステム。
【請求項３】
前記バス閉塞動作において、
前記ＩＯ制御回路は、
前記第１動作用トランザクションが、リプライが不要なトランザクションである場合、前記第１動作用トランザクションを破棄し、
前記第１動作用トランザクションが、リプライが必要なトランザクションである場合、前記第１バスが閉塞されていることを表す第１閉塞用トランザクションを生成して前記送信元に出力する
請求項２に記載のコンピュータシステム。
【請求項４】
前記ＩＯ制御回路は、バス閉塞回路を具備し、
前記バス障害発生動作において、前記ＩＯ制御回路は、前記エラーメッセージトランザクションに応じて、前記第１バスに対応する閉塞情報を前記バス閉塞回路に設定し、
前記閉塞情報が前記バス閉塞回路に設定されている前記バス閉塞動作において、前記ＩＯ制御回路は、前記送信元からの前記第１動作用トランザクションを前記第１バスに出力しない
請求項２又は３に記載のコンピュータシステム。
【請求項５】
前記第１バスが復帰したときの閉塞バス復帰動作において、
前記ＩＯ制御回路は、前記送信元からの第１リセット用コンフィグライトトランザクションを前記第１バス制御部を介して前記第１バスに出力して、前記第１バスをリセットし、
前記第１バス制御部は、前記第１リセット用コンフィグライトトランザクションに対するリプライである第１リセット用リプライトランザクションを前記ＩＯ制御回路を介して前記送信元に出力し、
前記ＩＯ制御回路は、前記第１リセット用コンフィグライトトランザクションに応じて、前記バス閉塞回路に設定されている前記閉塞情報を消去し、
前記通常動作において、前記ＩＯ制御回路は、前記送信元からの前記第１動作用トランザクションを前記第１バス制御部を介して前記第１バスに出力する
請求項４に記載のコンピュータシステム。
【請求項６】
前記ＩＯ制御回路は、更に、それぞれ前記複数のバスに対応する複数のＩＯ制御用レジスタを具備し、
前記複数のバス制御部は、それぞれ前記複数のバスに対応する複数のレジスタを具備し、
初期化動作において、
前記ＩＯ制御回路は、前記送信元からの複数の初期化用コンフィグライトトランザクションを受け取り、
前記複数の初期化用コンフィグライトトランザクションは、それぞれ複数の識別子を含み、
前記ＩＯ制御回路は、前記複数の初期化用コンフィグライトトランザクションに含まれる前記複数の識別子をそれぞれ前記複数のＩＯ制御用レジスタに格納し、前記複数の初期化用コンフィグライトトランザクションをそれぞれ前記複数のバス制御部に出力し、
前記複数のバス制御部は、前記複数の初期化用コンフィグライトトランザクションに含まれる前記複数の識別子をそれぞれ前記複数のレジスタに格納する
請求項５に記載のコンピュータシステム。
【請求項７】
前記複数のバス制御部は、前記初期化動作を実行したとき、前記複数の初期化用コンフィグライトトランザクションに対するリプライである前記複数の初期化用リプライトランザクションを前記ＩＯ制御回路を介して前記送信元に出力する
請求項６に記載のコンピュータシステム。
【請求項８】
前記バス障害発生動作において、
前記エラーメッセージトランザクションは、前記複数のレジスタのうちの第１レジスタに格納された第１識別子を含み、
前記ＩＯ制御回路は、前記エラーメッセージトランザクションに含まれる前記第１識別子が、前記複数のＩＯ制御用レジスタのうちの第１ＩＯ制御用レジスタに格納された識別子と一致するとき、前記第１ＩＯ制御用レジスタに対応する前記閉塞情報を前記バス閉塞回路に設定する
請求項６又は７に記載のコンピュータシステム。
【請求項９】
前記ＩＯ制御回路は、更に、バスリセット認識回路を具備し、
前記閉塞バス復帰動作において、
前記第１リセット用コンフィグライトトランザクションは、前記第１識別子とＩＤとを含み、
前記ＩＯ制御回路は、前記第１リセット用コンフィグライトトランザクションに含まれる前記ＩＤを前記バスリセット認識回路に格納し、前記第１リセット用コンフィグライトトランザクションを前記第１バス制御部を介して前記第１バスに出力して、前記第１バスをリセットし、
前記第１リセット用リプライトランザクションは、前記第１リセット用コンフィグライトトランザクションに含まれる前記第１識別子と前記ＩＤとを含み、
前記第１リセット用コンフィグライトトランザクション又は前記第１リセット用リプライトランザクションに含まれる前記第１識別子が、前記第１ＩＯ制御用レジスタに格納された識別子と一致し、且つ、前記バスリセット認識回路に格納された前記ＩＤが、前記第１リセット用リプライトランザクションに含まれるＩＤと一致するとき、前記ＩＯ制御回路は、前記バス閉塞回路に設定されている前記閉塞情報を消去する
請求項８に記載のコンピュータシステム。
【請求項１０】
デバイスを介して複数のバスに接続されたＩＯ制御回路であって、
前記複数のバスのうちの第１バスに障害が発生したことを表すエラーメッセージを前記デバイスから受け取る制御回路と、
前記エラーメッセージに応じて、前記第１バスを閉塞するバス閉塞回路と
を具備するＩＯ制御回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｅｃｔ）バスを具備するコンピュータシステムに関する。
【背景技術】
【０００２】
従来のコンピュータシステムについて、特開２００５−２１５８０９号公報（特許文献１）を参照して説明する。特許文献１に記載されたコンピュータシステムは、プロセッサと、ＩＯ制御回路と、ＰＣＩバスと、メモリ（主記憶）とを具備している。
プロセッサは、ＩＯ制御回路に接続されている。
メモリは、プロセッサとＩＯ制御回路とに接続されている。メモリには、ドライバを含むＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）が格納されている。
ＰＣＩバスは、ＩＯ制御回路２の配下に接続されている。そのＰＣＩバスには、複数の周辺装置が接続される。
【０００３】
プロセッサは、ジョブを実行させるために、ＰＣＩバスに対する動作用トランザクションを発行する。この場合、プロセッサは、動作用トランザクションを、ＩＯ制御回路を介してＰＣＩバスに出力する。
例えば、ＰＣＩバスで障害が発生した場合、ＩＯ制御回路は、バス障害インジケータ（閉塞フラグ）を設定し、そのＰＣＩバスを閉塞する。
そこで、プロセッサは、ＰＣＩバスに対する動作用トランザクションを発行する。この場合、ＩＯ制御回路は、閉塞フラグを設定しているため、動作用トランザクションに対して、ＰＣＩバスが閉塞されていることを表す閉塞用トランザクションを生成し、プロセッサに出力する（リプライする）。閉塞用トランザクションは、例えば、全ビットが１であり（ＡＬＬ１と称する）、４バイトのデータである場合、ＦＦＦＦＦＦＦＦｈにより表される。プロセッサは、動作用トランザクションに対して、ＡＬＬ１を表す閉塞用トランザクションが返ったため、ＰＣＩバスに障害が発生したものと判断することができる。
閉塞されたＰＣＩバスが復旧した場合、ＩＯ制御回路は、閉塞フラグを解除する。この場合、プロセッサは、再度、ジョブを実行させるために、ＰＣＩバスに対する動作用トランザクションを発行する。これにより、本発明では、ＰＣＩバス４−１に障害が発生しても、コンピュータシステムを停止させず、復旧、継続動作させることにより、エラーリカバリを行うことができる。
【０００４】
【特許文献１】特開２００５−２１５８０９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかし、特許文献１に記載されたコンピュータシステムでは、ＰＣＩバスがＩＯ制御回路の配下に直接接続されている。このため、次の様な課題がある。
【０００６】
第１の課題は、ＰＣＩバスの配下に接続されるデバイスが、ブリッジやスイッチであった場合、そのデバイスの配下に１つ又は複数のＰＣＩバスが接続されることも考えられる。この場合、ブリッジやスイッチの配下のＰＣＩバスで故障が発生した場合、ＩＯ制御回路は、閉塞対象となるＰＣＩバスを認識できない。このように、ＩＯ制御回路の配下にデバイスが接続され、そのデバイスの配下に複数のＰＣＩバスが接続された場合、特許文献１に記載されたコンピュータシステムでは、障害が発生したＰＣＩバスを閉塞することができない。
【０００７】
一般にＰＣＩはバス構成を取ることも可能だが、そのバス上に複数のデバイスを実装すると、クロックキューやバス上の負荷容量増加などの電気的な問題で、動作周波数が上げられなくなる問題があり、近年のＰＣＩでは、ＰＣＩ  Ｅｘｐｒｅｓｓに見られるように１つのバスに１つのデバイスを搭載する方法で接続し、性能を向上させることが多い。それではスロット数が減ってしまうため、ＰＣＩブリッジや、ＰＣＩスイッチを接続して、バスを増やすことで、ＰＣＩスロット数を確保する必要がある。ブリッジやスイッチは安価で、開発費が不要となる汎用品を使うことが多いが、汎用品であるブリッジやスイッチには、特許文献１に記載されているような機能が実装されていないため、エラーリカバリを実現しようとすると、汎用のブリッジやスイッチを使えない問題がある。
【０００８】
したがって、本発明の課題は、ＩＯ制御回路の配下にデバイスが接続され、そのデバイスの配下に複数のバスが接続された場合でも、障害が発生したバスを閉塞することができるコンピュータシステムを提供することにある。
【課題を解決するための手段】
【０００９】
以下に、［発明を実施するための最良の形態］で使用する番号・符号を用いて、課題を解決するための手段を説明する。これらの番号・符号は、［特許請求の範囲］の記載と［発明を実施するための最良の形態］の記載との対応関係を明らかにするために付加されたものであるが、［特許請求の範囲］に記載されている発明の技術的範囲の解釈に用いてはならない。
【００１０】
本発明のコンピュータシステムは、複数のバス（４−１、４−２）（６−１、６−２）と、前記複数のバス（４−１、４−２）（６−１、６−２）が接続されたデバイス（３）（５）と、前記デバイス（３）（５）に接続されたＩＯ制御回路（２）とを具備している。
前記デバイス（３）（５）は、前記複数のバス（４−１、４−２）（６−１、６−２）のうちの第１バス（４−１）（６−１）に障害が発生したときに、それを表すエラーメッセージを送信する。
前記ＩＯ制御回路（２）は、前記エラーメッセージに応じて、前記第１バス（４−１）（６−１）を閉塞する。
【００１１】
前記デバイス（３）（５）は、それぞれ前記複数のバス（４−１、４−２）（６−１、６−２）が接続された複数のバス制御部（３１−１、３１−２）（５１−１、５１−２）を具備している。
（Ｓ２）通常動作において、前記ＩＯ制御回路（２）は、送信元（１；７１）からの第１動作用トランザクションを前記複数のバス制御部（３１−１、３１−２）（５１−１、５１−２）のうちの第１バス制御部（３１−１）（５１−１）を介して前記第１バス（４−１）（６−１）に出力する。
（Ｓ３）前記第１バス（４−１）（６−１）に障害が発生したバス障害発生動作において、前記ＩＯ制御回路（２）は、前記エラーメッセージであるエラーメッセージトランザクションに応じて、前記第１バス（４−１）（６−１）を閉塞する。
（Ｓ４）前記第１バス（４−１）（６−１）が閉塞されているバス閉塞動作において、前記ＩＯ制御回路（２）は、前記送信元（１；７１）からの前記第１動作用トランザクションを前記第１バス（４−１）（６−１）に出力しない。
【００１２】
（Ｓ４）前記バス閉塞動作において、前記第１動作用トランザクションが、リプライが不要なトランザクションである場合、前記ＩＯ制御回路（２）は、前記第１動作用トランザクションを破棄する。前記第１動作用トランザクションが、リプライが必要なトランザクションである場合、前記ＩＯ制御回路（２）は、前記第１バス（４−１）（６−１）が閉塞されていることを表す第１閉塞用トランザクションを生成して前記送信元（１；７１）に出力する。
【００１３】
前記ＩＯ制御回路（２）は、バス閉塞回路（２２）を具備している。
（Ｓ３）前記バス障害発生動作において、前記ＩＯ制御回路（２）は、前記エラーメッセージトランザクションに応じて、前記第１バス（４−１）（６−１）に対応する閉塞情報（２１−１）を前記バス閉塞回路（２２）に設定する。
（Ｓ４）前記閉塞情報（２１−１）が前記バス閉塞回路（２２）に設定されている前記バス閉塞動作において、前記ＩＯ制御回路（２）は、前記送信元（１；７１）からの前記第１動作用トランザクションを前記第１バス（４−１）（６−１）に出力しない。
【００１４】
（Ｓ５）前記第１バス（４−１）（６−１）が復帰したときの閉塞バス復帰動作において、前記ＩＯ制御回路（２）は、前記送信元（１；７１）からの第１リセット用コンフィグライトトランザクションを前記第１バス制御部（３１−１）（５１−１）を介して前記第１バス（４−１）（６−１）に出力して、前記第１バス（４−１）（６−１）をリセットする。前記第１バス制御部（３１−１）（５１−１）は、前記第１リセット用コンフィグライトトランザクションに対するリプライである第１リセット用リプライトランザクションを前記ＩＯ制御回路（２）を介して前記送信元（１；７１）に出力する。前記ＩＯ制御回路（２）は、前記第１リセット用コンフィグライトトランザクションに応じて、前記バス閉塞回路（２２）に設定されている前記閉塞情報（２１−１）を消去する。
（Ｓ２）通常動作において、ＩＯ制御回路（２）は、送信元（１；７１）からの第１動作用トランザクションを第１バス制御部（３１−１）（５１−１）を介して第１バス（４−１）（６−１）に出力する。
【００１５】
前記ＩＯ制御回路（２）は、更に、それぞれ前記複数のバス（４−１、４−２）（６−１、６−２）に対応する複数のＩＯ制御用レジスタ（２１−１、２１−２）（２１−１、２１−２、２１’−１、２１’−２）を具備している。
前記複数のバス制御部（３１−１、３１−２）（５１−１、５１−２）は、それぞれ前記複数のバス（４−１、４−２）（６−１、６−２）に対応する複数のレジスタ（３２−１、３２−２）（５２−１、５２−２、５２’−１、５２’−２）を具備している。
（Ｓ１）初期化動作において、前記ＩＯ制御回路（２）は、前記送信元（１；７１）からの複数の初期化用コンフィグライトトランザクションを受け取る。前記複数の初期化用コンフィグライトトランザクションは、それぞれ複数の識別子を含んでいる。前記ＩＯ制御回路（２）は、前記複数の初期化用コンフィグライトトランザクションに含まれる前記複数の識別子をそれぞれ前記複数のＩＯ制御用レジスタ（２１−１、２１−２）（２１−１、２１−２、２１’−１、２１’−２）に格納し、前記複数の初期化用コンフィグライトトランザクションをそれぞれ前記複数のバス制御部（３１−１、３１−２）（５１−１、５１−２）に出力する。前記複数のバス制御部（３１−１、３１−２）（５１−１、５１−２）は、前記複数の初期化用コンフィグライトトランザクションに含まれる前記複数の識別子をそれぞれ前記複数のレジスタ（３２−１、３２−２）（５２−１、５２−２、５２’−１、５２’−２）に格納する。
【００１６】
前記複数のバス制御部（３１−１、３１−２）（５１−１、５１−２）は、（Ｓ１）前記初期化動作を実行したとき、前記複数の初期化用コンフィグライトトランザクションに対するリプライである前記複数の初期化用リプライトランザクションを前記ＩＯ制御回路（２）を介して前記送信元（１；７１）に出力する。
【００１７】
（Ｓ３）前記バス障害発生動作において、前記エラーメッセージトランザクションは、前記複数のレジスタ（３２−１、３２−２）（５２−１、５２−２、５２’−１、５２’−２）のうちの第１レジスタ（３２−１）（５２−１、５２’−１）に格納された第１識別子を含んでいる。前記ＩＯ制御回路（２）は、前記エラーメッセージトランザクションに含まれる前記第１識別子が、前記複数のＩＯ制御用レジスタ（２１−１、２１−２）（２１−１、２１−２、２１’−１、２１’−２）のうちの第１ＩＯ制御用レジスタ（２１−１）（２１−１、２１’−１）に格納された識別子と一致するとき、前記第１ＩＯ制御用レジスタ（２１−１）（２１−１、２１’−１）に対応する前記閉塞情報（２１−１）を前記バス閉塞回路（２２）に設定する。
【００１８】
前記ＩＯ制御回路（２）は、更に、バスリセット認識回路（２３）を具備している。
（Ｓ５）前記閉塞バス復帰動作において、前記第１リセット用コンフィグライトトランザクションは、前記第１識別子とＩＤとを含んでいる。前記ＩＯ制御回路（２）は、前記第１リセット用コンフィグライトトランザクションに含まれる前記ＩＤを前記バスリセット認識回路（２３）に格納し、前記第１リセット用コンフィグライトトランザクションを前記第１バス制御部（３１−１）（５１−１）を介して前記第１バス（４−１）（６−１）に出力して、前記第１バス（４−１）（６−１）をリセットする。前記第１リセット用リプライトランザクションは、前記第１リセット用コンフィグライトトランザクションに含まれる前記第１識別子と前記ＩＤとを含んでいる。前記第１リセット用コンフィグライトトランザクション又は前記第１リセット用リプライトランザクションに含まれる前記第１識別子が、前記第１ＩＯ制御用レジスタ（２１−１）（２１−１、２１’−１）に格納された識別子と一致し、且つ、前記バスリセット認識回路（２３）に格納された前記ＩＤが、前記第１リセット用リプライトランザクションに含まれるＩＤと一致するとき、前記ＩＯ制御回路（２）は、前記バス閉塞回路（２２）に設定されている前記閉塞情報（２１−１）を消去する。
【００１９】
本発明のＩＯ制御回路（２）は、デバイス（３）（５）を介して複数のバス（４−１、４−２）（６−１、６−２）に接続され、制御回路（２６）と、バス閉塞回路（２２）とを具備している。
前記制御回路（２６）は、前記複数のバス（４−１、４−２）（６−１、６−２）のうちの第１バス（４−１）（６−１）に障害が発生したことを表すエラーメッセージを前記デバイス（３）（５）から受け取る。
前記バス閉塞回路（２２）は、前記エラーメッセージに応じて、前記第１バス（４−１）（６−１）を閉塞する。
【００２０】
上記の複数のバス（４−１、４−２）（６−１、６−２）として、ＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｅｃｔ）が適用される。
【００２１】
上記の複数のバス（４−１、４−２）（６−１、６−２）として、Ｓｔａｒ  Ｆａｂｒｉｃ、Ａｄｖａｎｃｅｄ  Ｓｗｉｔｃｈｉｎｇ  Ｉｎｔｅｒｃｏｎｎｅｃｔ（ＡＳＩ）が適用される。
【発明の効果】
【００２２】
以上により、本発明のコンピュータシステムでは、ＩＯ制御回路（２）の配下にデバイス（３）（５）が接続され、そのデバイス（３）（５）の配下に複数のバスが接続された場合でも、障害が発生したバス（４−１）（６−１）を閉塞することができる。
【発明を実施するための最良の形態】
【００２３】
以下に添付図面を参照して、本発明のコンピュータシステムについて詳細に説明する。
【００２４】
（第１実施形態）
図１は、本発明の第１実施形態によるコンピュータシステムの構成を示している。そのコンピュータシステムは、プロセッサ１と、ＩＯ制御回路２と、ＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｅｃｔ）デバイスと、複数のＰＣＩバス４−１、４−２と、メモリ（図示しない）とを具備している。
プロセッサ１は、例えばＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、ＭＰＵ（ＭｉｃｒｏＰｒｏｃｅｓｓｏｒ  Ｕｎｉｔ）であり、ＩＯ制御回路２に接続されている。
メモリは、プロセッサ１とＩＯ制御回路２とに接続されている。メモリには、ドライバソフト（以下、ドライバ）を含むＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）が格納されている。
ＰＣＩデバイスとしては、ＰＣＩブリッジ３が例示される。ＰＣＩブリッジ３は、ＩＯ制御回路２の配下に接続されている。
複数のＰＣＩバス４−１、４−２は、ＰＣＩブリッジ３の配下に接続されている。複数のＰＣＩバス４−１、４−２の各々には、周辺装置として、例えばＩＯカード（図示しない）が接続される。
【００２５】
ＩＯ制御回路２は、レンジ保持回路２１と、バス閉塞回路２２と、バスリセット認識回路２３と、ＯＢ（Ｏｕｔｂｏｕｎｄ）ルーティング回路２４と、ＩＢ（Ｉｎｂｏｕｎｄ）ルーティング回路２５と、スイッチ制御回路２６と、セレクタ２７、２８とを具備している。
【００２６】
レンジ保持回路２１は、複数のレンジレジスタ２１−１、２１−２を具備している。複数のレンジレジスタ２１−１、２１−２は、それぞれ複数のＰＣＩバス４−１、４−２に対応付けられている。複数のレンジレジスタ２１−１、２１−２には、識別子としてファンクション番号（後述）が格納される。
【００２７】
バス閉塞回路２２は、バスリセット認識回路２３とＩＢルーティング回路２５とに接続されている。バス閉塞回路２２には、複数の閉塞フラグ（閉塞情報）２２−１、２２−２が設定される。複数の閉塞フラグ２２−１、２２−２は、それぞれ複数のＰＣＩバス４−１、４−２に対応付けられている。例えば、閉塞フラグ２２−１がバス閉塞回路２２に設定された場合、障害が発生したＰＣＩバス４−１をＩＯ制御回路２が閉塞していることを表している。
【００２８】
バスリセット認識回路２３は、ＯＢルーティング回路２４とＩＢルーティング回路２５とスイッチ制御回路２６とに接続されている。
ＯＢルーティング回路２４は、プロセッサ１とレンジ保持回路２１とバス閉塞回路２２とに接続されている。
ＩＢルーティング回路２５は、スイッチ制御回路２６とバス閉塞回路２２とに接続されている。
スイッチ制御回路２６は、ＰＣＩブリッジ３に接続されている。ブリッジ制御回路２６は、ＰＣＩプロトコルに従ってＰＣＩブリッジ３とのＩ／Ｆ（インタフェース）を制御する。
【００２９】
セレクタ２７は、ＯＢルーティング回路２４とＩＢルーティング回路２５とスイッチ制御回路２６とに接続されている。セレクタ２７は、ＯＢルーティング回路２４からのトランザクション、又は、ＩＢルーティング回路２５からのリプライトランザクションをスイッチ制御回路２６に出力する。
セレクタ２８は、ＯＢルーティング回路２４とＩＢルーティング回路２５とプロセッサ１とに接続されている。セレクタ２８は、ＩＢルーティング回路２５からのトランザクション、又は、ＯＢルーティング回路２４からのリプライトランザクションをプロセッサ１に出力する。
【００３０】
ＰＣＩブリッジ３は、複数のバス制御部３１−１、３１−２を具備している。
複数のバス制御部３１−１、３１−２は、それぞれ複数のＰＣＩバス４−１、４−２に対応付けられている。複数のバス制御部３１−１、３１−２には、それぞれ、複数のＰＣＩバス４−１、４−２を識別する識別子であるバス番号が割り当てられている。
複数のバス制御部３１−１、３１−２は、複数のレンジレジスタ３２−１、３２−２を具備している。複数のレンジレジスタ３２−１、３２−２は、それぞれ複数のＰＣＩバス４−１、４−２に対応付けられている。複数のレンジレジスタ３２−１、３２−２には、それぞれ、複数のバス制御部３１−１、３１−２を識別する識別子であるファンクション番号（後述）が格納される。
【００３１】
複数のＰＣＩバス４−１、４−２は、それぞれ複数のリセットレジスタ（図示しない）を具備している。複数のリセットレジスタには、それぞれ自己を識別するレジスタ番号が割り当てられている。複数のリセットレジスタに１が設定されたとき、それぞれ複数のＰＣＩバス４−１、４−２がリセットされる。
【００３２】
プロセッサ１、メモリの構成は公知であるため、その説明を省略する。また、ＰＣＩブリッジ３、複数のＰＣＩバス４−１、４−２の上記の構成以外の構成は公知であるため、その説明を省略する。
【００３３】
上記のコンピュータシステムの動作について説明する。コンピュータシステムの動作としては、（Ｓ１）初期化動作、（Ｓ２）通常動作、（Ｓ３）ＰＣＩバス障害発生動作、（Ｓ４）ＰＣＩバス閉塞動作、（Ｓ５）閉塞ＰＣＩバス復帰動作、が挙げられる。
【００３４】
最初に、（Ｓ１）初期化動作について説明する。
ＰＣＩブリッジ３の初期化は、レンジレジスタ３２−１、３２−２に対する第１、第２初期化用コンフィグライトトランザクションにより行われる。第１、第２初期化用コンフィグライトトランザクションは、それぞれ、第１、第２アドレスを含んでいる。第１、第２アドレスは、ＰＣＩの仕様で決められていて、それぞれ、第１、第２バス番号と、第１、第２ファンクション番号と、第１、第２レジスタ番号とを含んでいる。これについて具体的に説明する。
【００３５】
まず、プロセッサ１は、レンジレジスタ３２−１に対する第１初期化用コンフィグライトトランザクションを発行する。第１初期化用コンフィグライトトランザクションは、ＯＢ（Ｏｕｔｂｏｕｎｄ）方向に出力される。この場合、プロセッサ１は、第１初期化用コンフィグライトトランザクションをＩＯ制御回路２に出力し、ＩＯ制御回路２のＯＢルーティング回路２４は、その第１初期化用コンフィグライトトランザクションを受け取り、セレクタ２７を介してブリッジ制御回路２６に出力する。ブリッジ制御回路２６は、その第１初期化用コンフィグライトトランザクションをＰＣＩブリッジ３に出力する。ＰＣＩブリッジ３のバス制御部３１−１は、ブリッジ制御回路２６からの第１初期化用コンフィグライトトランザクションを実行する。このとき、バス制御部３１−１は、第１初期化用コンフィグライトトランザクションの第１アドレスに含まれる第１ファンクション番号をレンジレジスタ３２−１に格納する。
ＰＣＩブリッジ３のバス制御部３１−１は、第１初期化用コンフィグライトトランザクションに対するリプライである第１初期化用リプライトランザクションを生成する。第１初期化用リプライトランザクションは、ＩＢ（Ｉｎｂｏｕｎｄ）方向に出力される。この場合、バス制御部３１−１は、第１初期化用リプライトランザクションをＩＯ制御回路２に出力し、ＩＯ制御回路２のブリッジ制御回路２６は、その第１初期化用リプライトランザクションをＩＢルーティング回路２５に出力する。ＩＢルーティング回路２５は、その第１初期化用リプライトランザクションを、セレクタ２８を介してプロセッサ１に出力する。
レンジ保持回路２１は、プロセッサ１からＯＢルーティング回路２４へのトランザクションを監視する。レンジ保持回路２１は、第１初期化用コンフィグライトトランザクションに応じて、その第１アドレスに含まれる第１ファンクション番号をレンジレジスタ２１−１に格納する。
【００３６】
次に、プロセッサ１は、レンジレジスタ３２−２に対する第２初期化用コンフィグライトトランザクションを発行する。この場合、第２初期化用コンフィグライトトランザクションは、ＯＢ方向に出力される。ＰＣＩブリッジ３のバス制御部３１−２は、その第２初期化用コンフィグライトトランザクションを実行する。このとき、バス制御部３１−２は、第２初期化用コンフィグライトトランザクションの第２アドレスに含まれる第２ファンクション番号をレンジレジスタ３２−２に格納する。
バス制御部３１−２は、第２初期化用コンフィグライトトランザクションに対するリプライである第２初期化用リプライトランザクションを生成する。この場合、第２初期化用リプライトランザクションは、ＩＢ方向に出力される。
レンジ保持回路２１は、第２初期化用コンフィグライトトランザクションに応じて、その第２アドレスに含まれる第２ファンクション番号をレンジレジスタ２１−２に格納する。
【００３７】
その結果、（Ｓ１）初期化動作が終了した時点で、レンジレジスタ２１−１、３２−１には、同じ値（第１ファンクション番号）が格納され、レンジレジスタ２１−２、３２−２には、同じ値（第２ファンクション番号）が格納されている。
【００３８】
次に、（Ｓ２）通常動作について説明する。
【００３９】
例えば、プロセッサ１は、ジョブを実行させるために、ＰＣＩバス４−１（ＩＯカード）に対する第１動作用トランザクションを発行する。第１動作用トランザクションは、ＯＢ方向に出力される。この場合、プロセッサ１は、第１動作用トランザクションをＩＯ制御回路２に出力する。その第１動作用トランザクションの第１アドレスに含まれる第１ファンクション番号は、レンジ保持回路２１のレンジレジスタ２１−１に格納されたファンクション番号と一致する。このとき、ＩＯ制御回路２のＯＢルーティング回路２４は、そのレンジレジスタ２１−１に対応する閉塞フラグがバス閉塞回路２２に設定されてないため（後述）、第１動作用トランザクションを、セレクタ２７を介してブリッジ制御回路２６に出力する。ブリッジ制御回路２６は、その第１動作用トランザクションをＰＣＩブリッジ３に出力する。ここで、第１動作用トランザクションの第１アドレスに含まれる第１バス番号は、ＰＣＩブリッジ３のバス制御部３１−１に割り当てられたバス番号と一致する。このため、バス制御部３１−１は、第１動作用トランザクションをＰＣＩバス４−１に出力する。
そこで、第１動作用トランザクションが、リプライが必要なトランザクションである場合、ＰＣＩブリッジ３のバス制御部３１−１は、第１動作用トランザクションに対するリプライである第１動作用リプライトランザクションを生成する。第１動作用リプライトランザクションは、ＩＢ方向に出力される。この場合、バス制御部３１−１は、第１動作用リプライトランザクションをＩＯ制御回路２に出力し、ＩＯ制御回路２のブリッジ制御回路２６は、その第１動作用リプライトランザクションをＩＢルーティング回路２５に出力する。ＩＢルーティング回路２５は、その第１動作用リプライトランザクションを、セレクタ２８を介してプロセッサ１に出力する。
【００４０】
次に、（Ｓ３）ＰＣＩバス障害発生動作について説明する。
ＰＣＩバス４−１、４−２で障害が発生した場合、バス制御部３１−１、３１−２はエラーメッセージを生成する。これについて具体的に説明する。
【００４１】
例えば、ＰＣＩバス４−１で障害が発生した場合、バス制御部３１−１はエラーメッセージトランザクションを生成する。このエラーメッセージトランザクションは、トランザクションＩＤを含んでいる。トランザクションＩＤには、バス制御部３１−１のレンジレジスタ３２−１に格納されている第１ファンクション番号が付加される。エラーメッセージトランザクションは、ＩＢ方向に出力される。この場合、バス制御部３１−１は、エラーメッセージトランザクションをＩＯ制御回路２に出力し、ＩＯ制御回路２のブリッジ制御回路２６は、そのエラーメッセージトランザクションをＩＢルーティング回路２５に出力する。ＩＢルーティング回路２５は、そのエラーメッセージトランザクションをバス閉塞回路２２に出力する。バス閉塞回路２２は、そのエラーメッセージトランザクションのトランザクションＩＤから第１ファンクション番号を抽出して、レンジ保持回路２１のレンジレジスタ２１−１、２１−２に格納されたファンクション番号と比較することにより、障害が発生したＰＣＩバスを特定し、それに対応する閉塞フラグを設定する。この場合、抽出された第１ファンクション番号は、レンジレジスタ２１−１に格納されたファンクション番号と一致する。このため、バス閉塞回路２２は、レンジレジスタ２１−１に対応する閉塞フラグ２２−１を設定する。
ＩＯ制御回路２は、この閉塞フラグ２２−１を設定することにより、ＰＣＩバス４−１を閉塞するＰＣＩバス閉塞動作を行なう。
【００４２】
このように、本発明では、ＩＯ制御回路２の配下にＰＣＩブリッジ３が接続され、そのＰＣＩブリッジ３の配下に複数のＰＣＩバスが接続された場合でも、ＩＯ制御回路２は、この閉塞フラグ２２−１を設定することにより、障害が発生したＰＣＩバス４−１を閉塞することができる。この場合、ＩＯ制御回路２は、後述の（Ｓ４）ＰＣＩバス閉塞動作を実行する。
【００４３】
次に、（Ｓ４）ＰＣＩバス閉塞動作について説明する。
【００４４】
例えば、プロセッサ１は、ＰＣＩバス４−１に対する第１動作用トランザクションを発行する。第１動作用トランザクションは、ＯＢ方向に出力される。この場合、プロセッサ１は、第１動作用トランザクションをＩＯ制御回路２に出力する。その第１動作用トランザクションの第１アドレスに含まれる第１ファンクション番号は、レンジ保持回路２１のレンジレジスタ２１−１に格納されたファンクション番号と一致する。このとき、ＩＯ制御回路２のＯＢルーティング回路２４は、そのレンジレジスタ２１−１に対応する閉塞フラグ２２−１がバス閉塞回路２２に設定されているため、ＰＣＩバス４−１が閉塞されていると判断（認識）する。
そこで、第１動作用トランザクションが、リプライが必要なトランザクションである場合、ＯＢルーティング回路２４は、第１動作用トランザクションに対して、ＰＣＩバス４−１が閉塞されていることを表す第１閉塞用トランザクションを生成し、セレクタ２７を介してプロセッサ１に出力する（リプライする）。第１閉塞用トランザクションは、例えば、全ビットが１であり（ＡＬＬ１と称する）、４バイトのデータである場合、ＦＦＦＦＦＦＦＦｈにより表される。プロセッサ１は、第１動作用トランザクションに対して、ＡＬＬ１を表す第１閉塞用トランザクションが返ったため、ＰＣＩバス４−１に障害が発生したものと判断することができる。
第１動作用トランザクションが、リプライが不要なトランザクションである場合、ＯＢルーティング回路２４は、第１動作用トランザクションを破棄する。
一方、プロセッサ１は、ＰＣＩバス４−２に対する第２動作用トランザクションを発行した場合、ＰＣＩバス４−２が閉塞されていないため、上記（Ｓ２）の通常動作が実行される。即ち、第２動作用トランザクションは、ＯＢ方向に出力される。
【００４５】
例えば、ＰＣＩブリッジ３のバス制御部３１−１は、ＰＣＩバス４−１からのリクエストに対してリクエスト用トランザクションを生成する。このリクエスト用トランザクションは、バス制御部３１−１のレンジレジスタ３２−１に格納されている第１ファンクション番号が付加されたトランザクションＩＤを含んでいる。この場合、バス制御部３１−１は、リクエスト用トランザクションをＩＯ制御回路２に出力し、ＩＯ制御回路２のブリッジ制御回路２６は、そのリクエスト用トランザクションをＩＢルーティング回路２５に出力する。そのリクエスト用トランザクションに含まれるトランザクションＩＤの第１ファンクション番号は、レンジ保持回路２１のレンジレジスタ２１−１に格納されたファンクション番号と一致する。このとき、ＩＢルーティング回路２５は、そのレンジレジスタ２１−１に対応する閉塞フラグ２２−１がバス閉塞回路２２に設定されているため、ＰＣＩバス４−１が閉塞されていると判断（認識）する。
そこで、リクエスト用トランザクションが、リプライが必要なトランザクションである場合、ＩＢルーティング回路２５は、リクエスト用トランザクションに対して、Ｕｎｓｕｐｐｏｒｔｅｄリクエストを表すトランザクションを生成し、セレクタ２７を介してＰＣＩブリッジ３に出力する。
リクエスト用トランザクションが、リプライが不要なトランザクションである場合、ＩＢルーティング回路２５は、リクエスト用トランザクションを破棄する。
一方、ＰＣＩブリッジ３のバス制御部３１−２は、ＰＣＩバス４−２からのリクエストに対してリクエスト用トランザクションを生成する。この場合、ＰＣＩバス４−２が閉塞されていないため、上記（Ｓ２）の通常動作が実行される。即ち、リクエスト用トランザクションは、ＯＢ方向に出力される。
【００４６】
次に、（Ｓ５）閉塞ＰＣＩバス復帰動作について説明する。
ドライバは、ＰＣＩバスをリセットすることにより、閉塞されているＰＣＩバスを復帰させる。これについて具体的に説明する。
【００４７】
ドライバは、ＰＣＩバス４−１のリセットレジスタに対する第１リセット用コンフィグライトトランザクションを発行する。第１リセット用コンフィグライトトランザクションは、第１アドレスと、トランザクションＩＤとを含み、ＯＢ（Ｏｕｔｂｏｕｎｄ）方向に出力される。この場合、ドライバは、第１リセット用コンフィグライトトランザクションをＩＯ制御回路２に出力し、ＩＯ制御回路２のＯＢルーティング回路２４は、その第１リセット用コンフィグライトトランザクションを、セレクタ２７を介してブリッジ制御回路２６に出力する。ブリッジ制御回路２６は、その第１リセット用コンフィグライトトランザクションをＰＣＩブリッジ３に出力する。ここで、第１リセット用コンフィグライトトランザクションの第１アドレスに含まれる第１バス番号は、ＰＣＩブリッジ３のバス制御部３１−１に割り当てられたバス番号と一致する。また、その第１アドレスに含まれる第１ファンクション番号は、バス制御部３１−１のレンジレジスタ３２−１に格納されたファンクション番号と一致する。また、その第１アドレスに含まれる第１レジスタ番号は、ＰＣＩ４−１のリセットレジスタに割り当てられたレジスタ番号と一致する。この場合、ＰＣＩブリッジ３のバス制御部３１−１は、ブリッジ制御回路２６からの第１リセット用コンフィグライトトランザクションを実行する。バス制御部３１−１は、閉塞されているＰＣＩバス４−１のリセットレジスタをコンフィグライトで１に設定することにより、そのＰＣＩバス４−１をリセットする。
そこで、ＰＣＩブリッジ３のバス制御部３１−１は、第１リセット用コンフィグライトトランザクションに対するリプライである第１リセット用リプライトランザクションを生成する。この第１リセット用リプライトランザクションは、第１アドレスと、トランザクションＩＤとを含み、ＩＢ方向に出力される。この場合、バス制御部３１−１は、第１リセット用リプライトランザクションをＩＯ制御回路２に出力し、ＩＯ制御回路２のブリッジ制御回路２６は、その第１リセット用リプライトランザクションをＩＢルーティング回路２５に出力する。ＩＢルーティング回路２５は、その第１リセット用リプライトランザクションをバスリセット認識回路２３に出力し、セレクタ２８を介してドライバに出力する。
【００４８】
バスリセット認識回路２３は、ＯＢルーティング回路２４からブリッジ制御回路２６へのトランザクションを監視する。バスリセット認識回路２３は、第１リセット用コンフィグライトトランザクションに応じて、そのトランザクションＩＤを保持する。第１リセット用リプライトランザクションに含まれるトランザクションＩＤは、バスリセット認識回路２３が保持するトランザクションＩＤと一致する。また、第１リセット用コンフィグライトトランザクション又は第１リセット用リプライトランザクションの第１アドレスに含まれる第１ファンクション番号は、レンジ保持回路２１のレンジレジスタ２１−１に格納されたファンクション番号と一致する。この場合、バスリセット認識回路２３は、対象のＰＣＩバス４−１がリセット完了したものと判断して、そのレンジレジスタ２１−１に対応する閉塞フラグ２２−１を解除するための第１リセット指示をバス閉塞回路２２に出力する。バス閉塞回路２２は、この第１リセット指示に応じて、閉塞フラグ２２−１を解除する。
ＩＯ制御回路２は、この閉塞フラグ２２−１を解除することにより、ＰＣＩバス４−１に対する閉塞を解除する。
バスリセット認識回路２３が第１リセット用リプライトランザクションを待って閉塞フラグ２２−１の設定を解除する理由は、リクエスト前に（閉塞されているＰＣＩバス４−１を復帰させる前に）閉塞フラグ２２−１の設定を解除した場合、閉塞されているＰＣＩバス４−１からの不正なリクエストがプロセッサ１に送出されてしまうことを防ぐためである。
【００４９】
ＰＣＩバス４−１が復旧した場合、プロセッサ１は、上記（Ｓ２）の通常動作を再度実行する。即ち、プロセッサ１は、再度、ジョブを実行させるために、ＰＣＩバス４−１（ＩＯカード）に対する第１動作用トランザクションを発行する。
これにより、本発明では、ＰＣＩバス４−１に障害が発生しても、コンピュータシステムを停止させず、復旧、継続動作させることにより、エラーリカバリを行うことができる。
【００５０】
図２は、本発明の第１実施形態によるコンピュータシステムの動作として、通常動作を示している。ここで、ＰＣＩバス４−１に接続されたＩＯカードであるＩＯカード８−１は、ＶＩＤ（ヴェンダーＩＤ）を保持しているものとする。
【００５１】
（Ｓ１１）の動作
まず、上記のドライバであるドライバ７１は、ＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）を行うために、ＩＯ制御回路２、バス制御部３１−１、ＰＣＩバス４−１を介して、ＩＯカード８−１にＤＭＡ用のアドレスを書き込む（ライトする）。この場合、ＩＯ制御回路２は、上記（Ｓ２）の通常動作を実行し、ＰＣＩバス４−１（ＩＯカード８−１）に対するライトトランザクションとして第１動作用トランザクションをバス制御部３１−１に出力する。このときの第１動作用トランザクションは、ｐｏｓｔｅｄライトと呼ばれ、リプライが必要ではない。
【００５２】
（Ｓ１２）の動作
次に、ドライバ７１は、上記（Ｓ１１）の一連の動作が正しく終わったか否かを確認するため、ＩＯ制御回路２、バス制御部３１−１、ＰＣＩバス４−１を介して、ＩＯカード８−１が保持するＶＩＤ（ヴェンダーＩＤ）を読み出す（リードする）。この場合、ＩＯ制御回路２は、上記（Ｓ２）の通常動作を実行し、ＰＣＩバス４−１（ＩＯカード８−１）に対するリードトランザクションとして第１動作用トランザクションをバス制御部３１−１に出力する。
上記（Ｓ１１）の動作が正常に終了している場合、ＩＯカード８−１は、自己が保持しているＶＩＤを読み出し、そのＶＩＤを期待値として、ＰＣＩバス４−１、バス制御部３１−１、ＩＯ制御回路２を介して、ドライバ７１に出力する。この場合、ＩＯ制御回路２は、上記（Ｓ２）の通常動作を実行し、ＶＩＤを含むトランザクションとして第１動作用トランザクションをドライバ７１に出力する。
ここで、（Ｓ１２）の作業は、本発明で行うドライバ７１の動作であり、一般的に行われるものではない。また、このＶＩＤのリードは、必要に応じて行うが、この例では、（Ｓ１２）でのみ行っている。
【００５３】
（Ｓ１３）の動作
ドライバ７１は、上記（Ｓ１２）の動作が確認された場合、ＩＯ制御回路２、バス制御部３１−１、ＰＣＩバス４−１を介して、ＩＯカード８−１に起動をかける。この場合、ＩＯ制御回路２は、上記（Ｓ２）の通常動作を実行し、ＰＣＩバス４−１（ＩＯカード８−１）に対するトランザクションとして、起動命令を表す第１動作用トランザクションをバス制御部３１−１に出力する。このときの第１動作用トランザクションは、上記と同様にｐｏｓｔｅｄライトで行われる。
【００５４】
（Ｓ１４）の動作
ＩＯカード８−１は、起動命令を表すトランザクションに応じて、起動して、ＰＣＩバス４−１、バス制御部３１−１、ＩＯ制御回路２を介して、上記のメモリであるメモリ７上のデータを読み出す。（Ｓ１４）の動作では、Ｓ１４−１〜Ｓ１４−Ｍ（Ｍは１以上の整数）の動作を含み、ＩＯカード８−１は、予め決められたＭ個のデータを１番目からＭ番目まで順番にメモリ７から読み出す。
【００５５】
（Ｓ１５）の動作
ＩＯカード８−１は、Ｍ個のデータ転送が完了したところで、割り込みを発生し、ＰＣＩバス４−１、バス制御部３１−１、ＩＯ制御回路２を介して、ドライバ７１に完了を通知する。
【００５６】
図３は、本発明の第１実施形態によるコンピュータシステムの動作として、ＰＣＩバス４−１に障害が発生したときの動作を示している。
【００５７】
（Ｓ２１）の動作
まず、ドライバ７１は、ＤＭＡを行うために、ＩＯ制御回路２、バス制御部３１−１、ＰＣＩバス４−１を介して、ＩＯカード８−１にＤＭＡ用のアドレスを書き込む。この場合、ＩＯ制御回路２は、上記（Ｓ２）の通常動作を実行し、ＰＣＩバス４−１（ＩＯカード８−１）に対するライトトランザクションとして第１動作用トランザクションをバス制御部３１−１に出力する。このときの第１動作用トランザクションは、ｐｏｓｔｅｄライトで行われる。しかし、ＰＣＩバス４−１で障害が発生しているため、ドライバ７１は、ＩＯカード８−１に対するＤＭＡ用のアドレスの書き込みを失敗した。
【００５８】
（Ｓ２２）の動作
次に、バス制御部３１−１は、上記（Ｓ３）のＰＣＩバス障害発生動作を実行する。即ち、バス制御部３１−１は、エラーメッセージトランザクションを生成し、ＩＯ制御回路２に出力する。ＩＯ制御回路２は、エラーメッセージトランザクションに応じて、ＰＣＩバス４−１を閉塞する。
【００５９】
（Ｓ２３）の動作
次に、ドライバ７１は、上記（Ｓ２１）の一連の動作が正しく終わったか否かを確認するため、ＩＯ制御回路２、バス制御部３１−１、ＰＣＩバス４−１を介して、ＩＯカード８−１が保持するＶＩＤ（ヴェンダーＩＤ）を読み出す。しかし、ＩＯ制御回路２は、ＰＣＩバス４−１を閉塞している。この場合、ＩＯ制御回路２は、上記（Ｓ４）のＰＣＩバス閉塞動作を実行し、ＡＬＬ１を表すリプライトランザクションとして第１閉塞用トランザクションを、ドライバ７１に出力する。
【００６０】
ドライバ７１は、ＶＩＤを読む出すことに対して、ＡＬＬ１が返ったため、ＩＯカード８−１に障害が発生したと判断する。この場合、ドライバ７１は、ジョブが失敗したことを認識し、再度ジョブを実行する。しかし、このときに、ＩＯカード８−１は不正な状態になっている可能性があるため、ドライバ７１は、ＩＯカード８−１を初期化する。
【００６１】
（Ｓ２４）の動作
ドライバ７１は、ＩＯカード８−１を初期化する前に、ＩＯ制御回路２、バス制御部３１−１を介して、ＰＣＩバス４−１に対してバスリセットを発行する。この場合、ＩＯ制御回路２は、上記（Ｓ５）の閉塞ＰＣＩバス復帰動作を実行し、ＰＣＩバス４−１に対するコンフィグライトトランザクションとして、バスリセットを表す第１リセット用コンフィグライトトランザクションをバス制御部３１−１に出力する。バス制御部３１−１は、この第１リセット用コンフィグライトトランザクションに応じて、ＰＣＩバス４−１のリセットレジスタに１を書き込み、リセット信号（ＲＳＴ＃）をアサートしてＰＣＩバス４−１をリセットする。バス制御部３１−１は、第１リセット用コンフィグライトトランザクションに対するリプライである第１リセット用リプライトランザクションを、ＩＯ制御回路２を介してドライバ７１に出力する。このとき、ＩＯ制御回路２は、この第１リセット用リプライトランザクションに応じて、ＰＣＩバス４−１に対する閉塞を解除する。
【００６２】
（Ｓ２５）の動作
次に、ドライバ７１は、バスリセットを解除するために、ＩＯ制御回路２、バス制御部３１−１を介して、ＰＣＩバス４−１に対してバスリセット解除を発行する。この場合、ＩＯ制御回路２は、上記（Ｓ５）の閉塞ＰＣＩバス復帰動作と同様の動作を実行し、ＰＣＩバス４−１に対するコンフィグライトトランザクションとして、バスリセット解除を表す第１リセット用コンフィグライトトランザクションをバス制御部３１−１に出力する。バス制御部３１−１は、この第１リセット用コンフィグライトトランザクションに応じて、ＰＣＩバス４−１のリセットレジスタに０を書き戻し、リセット信号（ＲＳＴ＃）をディアサートしてＰＣＩバス４−１のリセットを解除する。バス制御部３１−１は、第１リセット用コンフィグライトトランザクションに対するリプライである第１リセット用リプライトランザクションを、ＩＯ制御回路２を介してドライバ７１に出力する。
【００６３】
（Ｓ２６）の動作
ドライバ７１は、上記（Ｓ２４）、（Ｓ２５）が終わったところで、ＩＯカード８−１の初期化を開始する。この場合、ＩＯ制御回路２は、上記（Ｓ１）の初期化動作を実行する。
その後、ドライバ７１は、再度ジョブを実行するために、上記（Ｓ１１）を実行することにより、エラーリカバリを行う。
【００６４】
本発明の効果について説明する。
【００６５】
上述のように、本発明の第１実施形態によるコンピュータシステムでは、ＩＯ制御回路２の配下にデバイス（ＰＣＩブリッジ３）が接続され、そのＰＣＩブリッジ３の配下に複数のＰＣＩバス４−１、４−２が接続されている。
そこで、（Ｓ２）通常動作において、ＩＯ制御回路２は、送信元（プロセッサ１、ドライバ７１）からの第１動作用トランザクションをＰＣＩブリッジ３のバス制御部３１−１を介してＰＣＩバス４−１に出力する。
（Ｓ３）ＰＣＩバス４−１に障害が発生したＰＣＩバス障害発生動作において、バス制御部３１−１は、ＰＣＩバス４−１に障害が発生したときに、それを表すエラーメッセージであるエラーメッセージトランザクションを送信する。ＩＯ制御回路２は、エラーメッセージトランザクションに応じて、ＰＣＩバス４−１に対応する閉塞フラグ２１−１をバス閉塞回路２２に設定する。これにより、ＩＯ制御回路２は、ＰＣＩバス４−１を閉塞する。
（Ｓ４）閉塞フラグ２１−１がバス閉塞回路２２に設定されているＰＣＩバス閉塞動作において、ＩＯ制御回路２は、送信元（プロセッサ１、ドライバ７１）からの第１動作用トランザクションをＰＣＩバス４−１に出力しない。そこで、第１動作用トランザクションが、リプライが不要なトランザクションである場合、ＩＯ制御回路２は、第１動作用トランザクションを破棄する。第１動作用トランザクションが、リプライが必要なトランザクションである場合、ＩＯ制御回路２は、ＰＣＩバス４−１が閉塞されていることを表す第１閉塞用トランザクションを生成して送信元に出力する。
このように、本発明の第１実施形態によるコンピュータシステムでは、ＩＯ制御回路２の配下にＰＣＩブリッジ３が接続され、そのＰＣＩブリッジ３の配下に複数のＰＣＩバスが接続された場合でも、障害が発生したＰＣＩバス４−１を閉塞することができる。
【００６６】
（Ｓ５）ＰＣＩバス４−１が復帰したときの閉塞ＰＣＩバス復帰動作において、ＩＯ制御回路２は、送信元（プロセッサ１、ドライバ７１）からの第１リセット用コンフィグライトトランザクションをバス制御部３１−１を介してＰＣＩバス４−１に出力して、ＰＣＩバス４−１をリセットする。バス制御部３１−１は、第１リセット用コンフィグライトトランザクションに対するリプライである第１リセット用リプライトランザクションをＩＯ制御回路２を介して送信元（プロセッサ１、ドライバ７１）に出力する。ＩＯ制御回路２は、第１リセット用コンフィグライトトランザクションに応じて、バス閉塞回路２２に設定されている閉塞フラグ２１−１を解除する。
（Ｓ２）通常動作において、ＩＯ制御回路２は、送信元（プロセッサ１、ドライバ７１）からの第１動作用トランザクションをバス制御部３１−１を介してＰＣＩバス４−１に出力する。
このように、本発明の第１実施形態によるコンピュータシステムでは、ＰＣＩバス４−１に障害が発生しても、そのシステムを停止させず、復旧、継続動作させることにより、エラーリカバリを確実に行なうことができる。
【００６７】
（Ｓ１）初期化動作において、ＩＯ制御回路２は、送信元（プロセッサ１、ドライバ７１）からの複数の初期化用コンフィグライトトランザクションを受け取る。ＩＯ制御回路２は、複数の初期化用コンフィグライトトランザクションに含まれる複数の識別子（ファンクション番号）をそれぞれ複数のレジスタ２１−１、２１−２に格納し、複数の初期化用コンフィグライトトランザクションをそれぞれ複数のバス制御部３１−１、３１−２に出力する。複数のバス制御部３１−１、３１−２は、複数の初期化用コンフィグライトトランザクションに含まれる複数の識別子をそれぞれ複数のレジスタ３２−１、３２−２に格納する。そこで、複数のバス制御部３１−１、３１−２は、複数の初期化用コンフィグライトトランザクションに対するリプライである複数の初期化用リプライトランザクションをＩＯ制御回路２を介して送信元に出力する。
例えば、（Ｓ３）ＰＣＩバス障害発生動作において、ＩＯ制御回路２は、エラーメッセージトランザクションに含まれる第１識別子が、複数のレジスタ２１−１、２１−２のうちの第１レジスタ２１−１に格納された識別子と一致するとき、第１レジスタ２１−１に対応する閉塞フラグ２１−１をバス閉塞回路２２に設定する。
このように、本発明の第１実施形態によるコンピュータシステムでは、ＩＯ制御回路２とＰＣＩブリッジ３に対して識別子（ファンクション番号）を用いて初期化用コンフィグライトトランザクションにより初期設定を行ない、初期設定における識別子をＩＯ制御回路２とＰＣＩブリッジ３が自動的に保持する。これにより、ＩＯ制御回路２は、トランザクションの送出先を特定することができ、障害が発生したＰＣＩバスに対する閉塞動作｛（Ｓ３）、（Ｓ４）｝を実行することができる。このため、バス閉塞機能を持たないＰＣＩブリッジ３がＩＯ制御回路２の配下に接続された場合でもＰＣＩのエラーリカバリを実現することができる。
【００６８】
（Ｓ５）閉塞ＰＣＩバス復帰動作において、ＩＯ制御回路２は、第１リセット用コンフィグライトトランザクションに含まれるＩＤ（トランザクションＩＤ）をバスリセット認識回路２３に格納し、第１リセット用コンフィグライトトランザクションをバス制御部３１−１を介してＰＣＩバス４−１に出力して、ＰＣＩバス４−１をリセットする。第１リセット用コンフィグライトトランザクション又は第１リセット用リプライトランザクションに含まれる第１識別子が、第１レジスタ２１−１に格納された識別子と一致し、且つ、バスリセット認識回路２３に格納されたＩＤが、第１リセット用リプライトランザクションに含まれるＩＤと一致するとき、ＩＯ制御回路２は、バス閉塞回路２２に設定されている閉塞フラグ２１−１を解除する。
このように、本発明の第１実施形態によるコンピュータシステムでは、閉塞解除動作｛（Ｓ５）｝をＰＣＩブリッジ３配下のＰＣＩバス４−１におけるリプライ（第１リセット用リプライトランザクション）を用いるため、バス閉塞機能を持たないＰＣＩブリッジ３がＩＯ制御回路２の配下に接続された場合でもリセットが確実にかかったことを保証できる。このため、ハードウェアが自動的に閉塞解除可能となり、ドライバに閉塞解除用のレジスタを意識させないことができる。従って、ＰＣＩで共通に決められたレジスタだけを使ってＰＣＩエラーリカバリを実現することができる。
【００６９】
なお、上記の第１実施形態では、ＩＯ制御回路２にＰＣＩブリッジ３が１つだけ実装されているが、ＩＯ制御回路２は、複数のブリッジ制御回路２６を具備し、その複数のブリッジ制御回路２６に複数のＰＣＩブリッジ３が接続されても良い。
また、ＰＣＩブリッジ３の配下に更にＰＣＩブリッジ３が接続されるような多段構成のＰＣＩブリッジ３に対して、それに対応するレンジ保持回路２１、バス閉塞回路２２、バスリセット認識回路２３をＩＯ制御回路２が具備することにより、上記の動作を実現できる。
【００７０】
（第２実施形態）
本発明の第２実施形態によるコンピュータシステムでは、第１実施形態と異なる点のみ説明する。
図４に示されるように、ＰＣＩデバイスとしては、ＰＣＩブリッジ３に代えて、ＰＣＩ  Ｅｘｐｒｅｓｓスイッチ５（又は、ＰＣＩスイッチ５と称する）が例示される。ＰＣＩスイッチ５は、ＩＯ制御回路２の配下に接続されている。
また、第２実施形態では、複数のＰＣＩバス４−１、４−２をそれぞれ複数のＰＣＩ  Ｅｘｐｒｅｓｓバス６−１、６−２と称する（又は、ＰＣＩバス６−１、６−２と称する）。また、第２実施形態では、ブリッジ制御回路２６をスイッチ制御回路２６と称する。
【００７１】
ＩＯ制御回路２のレンジ保持回路２１は、更に、複数のバス番号レジスタ２１’−１、２１’−２を具備している。複数のバス番号レジスタ２１’−１、２１’−２は、それぞれ複数のＰＣＩバス４−１、４−２に対応付けられている。複数のバス番号レジスタ２１’−１、２１’−２には、バス番号（後述）が格納される。
【００７２】
ＰＣＩスイッチ５は、複数のＰ２Ｐブリッジ５１−１、５１−２と、Ｐ２Ｐブリッジ５３と、バーチャルＰＣＩバス５４とを具備している。
Ｐ２Ｐブリッジ５３は、スイッチ制御回路２６に接続されている。
バーチャルＰＣＩバス５４は、Ｐ２Ｐブリッジ５３と複数のＰ２Ｐブリッジ５１−１、５１−２と接続されている。
複数のＰ２Ｐブリッジ５１−１、５１−２は、前述のＰＣＩブリッジ３の複数のバス制御部３１−１、３１−２に対応し、それぞれ複数のＰＣＩバス４−１、４−２に対応付けられている。
複数のＰ２Ｐブリッジ５１−１、５１−２は、複数のレンジレジスタ５２−１、５２−２を具備している。複数のレンジレジスタ５２−１、５２−２は、前述のＰＣＩブリッジ３の複数のレンジレジスタ３２−１、３２−２に対応し、それぞれ複数のＰＣＩバス４−１、４−２に対応付けられている。複数のレンジレジスタ５２−１、５２−２には、それぞれ、複数のＰ２Ｐブリッジ５１−１、５１−２を識別するデバイス識別子であるファンクション番号が格納される。
複数のＰ２Ｐブリッジ５１−１、５１−２は、更に、複数のバス番号レジスタ５２’−１、５２’−２を具備している。複数のバス番号レジスタ５２’−１、５２’−２は、それぞれ複数のＰＣＩバス４−１、４−２に対応付けられている。複数のバス番号レジスタ５２’−１、５２’−２には、バス番号（後述）が格納される。
【００７３】
ＰＣＩ  Ｅｘｐｒｅｓｓスイッチ５の上記の構成以外の構成は公知であるため、その説明を省略する。
【００７４】
上記のコンピュータシステムの動作について説明する。コンピュータシステムの動作としては、（Ｓ１）初期化動作、（Ｓ２）通常動作、（Ｓ３）ＰＣＩバス障害発生動作、（Ｓ４）ＰＣＩバス閉塞動作、（Ｓ５）閉塞ＰＣＩバス復帰動作、が挙げられる。
【００７５】
最初に、（Ｓ１）初期化動作について説明する。
ＰＣＩスイッチ５の初期化は、レンジレジスタ５２−１、５２−２、バス番号レジスタ５２’−１、５２’−２に対する第１、第２初期化用コンフィグライトトランザクションにより行われる（バス・ウォーク；ＢＵＳ  Ｗａｌｋと呼ばれる）。
【００７６】
まず、プロセッサ１は、レンジレジスタ５２−１、バス番号レジスタ５２’−１に対する第１初期化用コンフィグライトトランザクションを発行する。第１初期化用コンフィグライトトランザクションは、ＯＢ（Ｏｕｔｂｏｕｎｄ）方向に出力される。この場合、プロセッサ１は、第１初期化用コンフィグライトトランザクションをＩＯ制御回路２に出力し、ＩＯ制御回路２のＯＢルーティング回路２４は、その第１初期化用コンフィグライトトランザクションを、セレクタ２７を介してスイッチ制御回路２６に出力する。スイッチ制御回路２６は、その第１初期化用コンフィグライトトランザクションをＰＣＩスイッチ５に出力する。ＰＣＩスイッチ５のＰ２Ｐブリッジ５１−１は、スイッチ制御回路２６からＰ２Ｐブリッジ５３、バーチャルＰＣＩバス５４を経由した第１初期化用コンフィグライトトランザクションを実行する。Ｐ２Ｐブリッジ５１−１は、第１初期化用コンフィグライトトランザクションの第１アドレスに含まれる第１ファンクション番号をレンジレジスタ５２−１に格納する。また、Ｐ２Ｐブリッジ５１−１は、その第１アドレスに含まれる第１バス番号に１を足したバス番号を、バーチャルＰＣＩバス５４を考慮したバス番号として、バス番号レジスタ５２’−１に格納する。
ＰＣＩスイッチ５のＰ２Ｐブリッジ５１−１は、第１初期化用コンフィグライトトランザクションに対するリプライである第１初期化用リプライトランザクションを、ＩＯ制御回路２を介してプロセッサ１に出力する。
ＩＯ制御回路２のレンジ保持回路２１は、第１初期化用コンフィグライトトランザクションに応じて、その第１アドレスに含まれる第１ファンクション番号をレンジレジスタ２１−１に格納する。また、レンジ保持回路２１は、その第１アドレスに含まれる第１バス番号に１を足したバス番号を、バーチャルＰＣＩバス５４を考慮したバス番号として、バス番号レジスタ２１’−１に格納する。
【００７７】
次に、プロセッサ１は、レンジレジスタ３２−２に対する第２初期化用コンフィグライトトランザクションを発行する。
その結果、（Ｓ１）初期化動作が終了した時点で、レンジレジスタ２１−１、５２−１には、同じ値（第１ファンクション番号）が格納され、レンジレジスタ２１−２、５２−２には、同じ値（第２ファンクション番号）が格納されている。また、バス番号レジスタ２１’−１、５２’−１には、同じ値（第１バス番号）が格納され、バス番号レジスタ２１’−２、５２’−２には、同じ値（第２バス番号）が格納されている。バス番号は、ＩＯカードの増減などで毎回変わり固定てきでないため、バスＷＡＬＫの時の値を保持する必要がある。
【００７８】
次に、（Ｓ２）通常動作について説明する。
ここで、（Ｓ２）の通常動作については、ＰＣＩブリッジ３をＰＣＩスイッチ５に置き換え、バス制御部３１−１、３１−２をＰ２Ｐブリッジ５１−１、５１−２に置き換え、ＰＣＩバス４−１、４−２をＰＣＩバス６−１、６−２に置き換えればよいので、その詳細な説明を省略する。
【００７９】
次に、（Ｓ３）ＰＣＩバス障害発生動作について説明する。
ＰＣＩバス６−１、６−２で障害が発生した場合、Ｐ２Ｐブリッジ５１−１、５１−２はエラーメッセージを生成する。これについて具体的に説明する。
【００８０】
例えば、ＰＣＩバス６−１で障害が発生した場合、Ｐ２Ｐブリッジ５１−１はエラーメッセージトランザクションを生成する。このエラーメッセージトランザクションは、トランザクションＩＤを含んでいる。トランザクションＩＤには、Ｐ２Ｐブリッジ５１−１のレンジレジスタ５２−１に格納されている第１ファンクション番号と、Ｐ２Ｐブリッジ５１−１のバス番号レジスタ５２’−１に格納されている第１バス番号とが付加される。エラーメッセージトランザクションは、ＩＢ方向に出力される。この場合、Ｐ２Ｐブリッジ５１−１は、エラーメッセージトランザクションをＩＯ制御回路２に出力し、ＩＯ制御回路２のスイッチ制御回路２６は、そのエラーメッセージトランザクションをＩＢルーティング回路２５に出力する。ＩＢルーティング回路２５は、そのエラーメッセージトランザクションをバス閉塞回路２２に出力する。バス閉塞回路２２は、そのエラーメッセージトランザクションのトランザクションＩＤから第１ファンクション番号、第１バス番号を抽出して、レンジ保持回路２１のレンジレジスタ２１−１、２１−２に格納されたファンクション番号、バス番号レジスタ２１’−１、２１’−２に格納されたバス番号と比較することにより、障害が発生したＰＣＩバスを特定し、それに対応する閉塞フラグを設定する。この場合、抽出された第１ファンクション番号は、レンジレジスタ２１−１に格納されたファンクション番号と一致し、抽出された第１バス番号は、バス番号レジスタ２１’−１に格納されたバス番号と一致する。このため、バス閉塞回路２２は、閉塞フラグ２２−１を設定する。
ＩＯ制御回路２は、この閉塞フラグ２２−１を設定することにより、ＰＣＩバス４−１を閉塞する。
【００８１】
次に、（Ｓ４）ＰＣＩバス閉塞動作について説明する。
ここで、（Ｓ４）のＰＣＩバス閉塞動作については、ＰＣＩブリッジ３をＰＣＩスイッチ５に置き換え、バス制御部３１−１、３１−２をＰ２Ｐブリッジ５１−１、５１−２に置き換え、ＰＣＩバス４−１、４−２をＰＣＩバス６−１、６−２に置き換えればよいので、その詳細な説明を省略する。
【００８２】
次に、（Ｓ５）閉塞ＰＣＩバス復帰動作について説明する。
ドライバは、ＰＣＩバスをリセットすることにより、閉塞されているＰＣＩバスを復帰させる。これについて具体的に説明する。
【００８３】
ドライバは、ＰＣＩバス６−１のリセットレジスタに対する第１リセット用コンフィグライトトランザクションを発行する。第１リセット用コンフィグライトトランザクションは、第１アドレスと、トランザクションＩＤとを含み、ＯＢ（Ｏｕｔｂｏｕｎｄ）方向に出力される。この場合、ドライバは、第１リセット用コンフィグライトトランザクションをＩＯ制御回路２に出力し、ＩＯ制御回路２のＯＢルーティング回路２４は、その第１リセット用コンフィグライトトランザクションを、セレクタ２７を介してスイッチ制御回路２６に出力する。スイッチ制御回路２６は、その第１リセット用コンフィグライトトランザクションをＰＣＩスイッチ５に出力する。ここで、第１リセット用コンフィグライトトランザクションの第１アドレスに含まれる第１ファンクション番号は、Ｐ２Ｐブリッジ５１−１のレンジレジスタ３２−１に格納されたファンクション番号と一致する。また、その第１アドレスに含まれる第１レジスタ番号は、ＰＣＩ４−１のリセットレジスタに割り当てられたレジスタ番号と一致する。この場合、ＰＣＩスイッチ５のＰ２Ｐブリッジ５１−１は、スイッチ制御回路２６からの第１リセット用コンフィグライトトランザクションを実行する。Ｐ２Ｐブリッジ５１−１は、閉塞されているＰＣＩバス６−１のリセットレジスタをコンフィグライトで１に設定することにより、そのＰＣＩバス６−１をリセットする。
そこで、ＰＣＩスイッチ５のＰ２Ｐブリッジ５１−１は、第１リセット用コンフィグライトトランザクションに対するリプライである第１リセット用リプライトランザクションを生成する。この第１リセット用リプライトランザクションは、第１アドレスと、トランザクションＩＤとを含み、ＩＢ方向に出力される。この場合、Ｐ２Ｐブリッジ５１−１は、第１リセット用リプライトランザクションをＩＯ制御回路２に出力し、ＩＯ制御回路２のスイッチ制御回路２６は、その第１リセット用リプライトランザクションをＩＢルーティング回路２５に出力する。ＩＢルーティング回路２５は、その第１リセット用リプライトランザクションをバスリセット認識回路２３に出力し、セレクタ２８を介してドライバに出力する。
【００８４】
バスリセット認識回路２３は、第１リセット用コンフィグライトトランザクションに応じて、そのトランザクションＩＤを保持する。第１リセット用リプライトランザクションに含まれるトランザクションＩＤは、バスリセット認識回路２３が保持するトランザクションＩＤと一致する。また、その第１リセット用リプライトランザクションの第１アドレスに含まれる第１ファンクション番号は、レンジ保持回路２１のレンジレジスタ２１−１に格納されたファンクション番号と一致する。その第１アドレスに含まれる第１バス番号に１を加えてバーチャルＰＣＩバス５４を考慮したときのバス番号は、レンジ保持回路２１のバス番号レジスタ２１’−１に格納されたバス番号と一致する。この場合、バスリセット認識回路２３は、対象のＰＣＩバス６−１がリセット完了したものと判断して、そのレンジレジスタ２１−１に対応する閉塞フラグ２２−１を解除するための第１リセット指示をバス閉塞回路２２に出力する。バス閉塞回路２２は、この第１リセット指示に応じて、閉塞フラグ２２−１を解除する。
ＩＯ制御回路２は、この閉塞フラグ２２−１を解除することにより、ＰＣＩバス６−１に対する閉塞を解除する。
バスリセット認識回路２３が第１リセット用リプライトランザクションを待って閉塞フラグ２２−１の設定を解除する理由は、リクエスト前に（閉塞されているＰＣＩバス６−１を復帰させる前に）閉塞フラグ２２−１の設定を解除した場合、閉塞されているＰＣＩバス６−１からの不正なリクエストがプロセッサ１に送出されてしまうことを防ぐためである。
【００８５】
本発明の第２実施形態によるコンピュータシステムの動作については、ＰＣＩブリッジ３をＰＣＩスイッチ５に置き換え、バス制御部３１−１、３１−２をＰ２Ｐブリッジ５１−１、５１−２に置き換え、ＰＣＩバス４−１、４−２をＰＣＩバス６−１、６−２に置き換えることにより実現できるので、その詳細な説明を省略する。
【００８６】
上述のように、本発明の第２実施形態によるコンピュータシステムでは、ＩＯ制御回路２の配下にＰＣＩスイッチ５が接続され、そのＰＣＩスイッチ５の配下に複数のＰＣＩバスが接続された場合でも、第１実施形態と同じ理由により、障害が発生したＰＣＩバス６−１を閉塞することができる。
【００８７】
また、本発明の第２実施形態によるコンピュータシステムでは、ＰＣＩバス６−１に障害が発生しても、第１実施形態と同じ理由により、そのシステムを停止させず、復旧、継続動作させることにより、エラーリカバリを確実に行なうことができる。
【００８８】
また、本発明の第２実施形態によるコンピュータシステムでは、ＩＯ制御回路２とＰＣＩスイッチ５に対して識別子（ファンクション番号、バス番号）を用いて初期化用コンフィグライトトランザクションにより初期設定を行ない、初期設定における識別子をＩＯ制御回路２とＰＣＩスイッチ５が自動的に保持する。これにより、ＩＯ制御回路２は、トランザクションの送出先を特定することができ、障害が発生したＰＣＩバスに対する閉塞動作｛（Ｓ３）、（Ｓ４）｝を実行することができる。このため、バス閉塞機能を持たないＰＣＩスイッチ５がＩＯ制御回路２の配下に接続された場合でもＰＣＩのエラーリカバリを実現することができる。
【００８９】
また、本発明の第２実施形態によるコンピュータシステムでは、閉塞解除動作｛（Ｓ５）｝をＰＣＩスイッチ５配下のＰＣＩバス４−１におけるリプライ（第１リセット用リプライトランザクション）を用いるため、バス閉塞機能を持たないＰＣＩスイッチ５がＩＯ制御回路２の配下に接続された場合でもリセットが確実にかかったことを保証できる。このため、ハードウェアが自動的に閉塞解除可能となり、ドライバに閉塞解除用のレジスタを意識させないことができる。従って、ＰＣＩで共通に決められたレジスタだけを使ってＰＣＩエラーリカバリを実現することができる。
【００９０】
なお、上記の第２実施形態では、ＩＯ制御回路２にＰＣＩスイッチ５が１つだけ実装されているが、ＩＯ制御回路２は、複数のスイッチ制御回路２６を具備し、その複数のスイッチ制御回路２６に複数のＰＣＩスイッチ５が接続されても良い。
また、ＰＣＩスイッチ５の配下に更にＰＣＩスイッチ５が接続されるような多段構成のＰＣＩスイッチ５に対して、それに対応するレンジ保持回路２１、バス閉塞回路２２、バスリセット認識回路２３をＩＯ制御回路２が具備することにより、上記の動作を実現できる。
【００９１】
また、本発明の第１、第２実施形態によるコンピュータシステムでは、ＩＯ制御回路２の配下にデバイス（ＰＣＩブリッジ３、ＰＣＩスイッチ５）が接続され、そのデバイス３、５の配下に接続される複数のバスとしてＰＣＩが適用されているが、これに限定されない。
本発明の第１、第２実施形態によるコンピュータシステムでは、ＰＣＩに代えて、Ｓｔａｒ  Ｆａｂｒｉｃでも適用することができる。この場合、図１〜図４において、ＰＣＩをＳｔａｒ  Ｆａｂｒｉｃに置き換えればよい。
または、本発明の第１、第２実施形態によるコンピュータシステムでは、ＰＣＩに代えて、Ａｄｖａｎｃｅｄ  Ｓｗｉｔｃｈｉｎｇ  Ｉｎｔｅｒｃｏｎｎｅｃｔ（ＡＳＩ）でも適用することができる。この場合、図１〜図４において、ＰＣＩをＡＳＩに置き換えればよい。
【図面の簡単な説明】
【００９２】
【図１】図１は、本発明の第１実施形態によるコンピュータシステムの構成を示している。
【図２】図２は、本発明の第１実施形態によるコンピュータシステムの動作として、通常動作を示している。
【図３】図３は、本発明の第１実施形態によるコンピュータシステムの動作として、ＰＣＩバス４−１に障害が発生したときの動作を示している。
【図４】図４は、本発明の第２実施形態によるコンピュータシステムの構成を示している。
【符号の説明】
【００９３】
１    プロセッサ
２    ＩＯ制御回路
２１    レンジ保持回路
２１−１、２１−２    レンジレジスタ
２１’−１、２１’−２    バス番号レジスタ
２２    バス閉塞回路
２２−１、２２−２    閉塞フラグ
２３    バスリセット認識回路
２４    ＯＢ（Ｏｕｔｂｏｕｎｄ）ルーティング回路
２５    ＩＢ（Ｉｎｂｏｕｎｄ）ルーティング回路
２６    スイッチ制御回路
２７、２８    セレクタ
３    ＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｅｃｔ）ブリッジ
３１−１、３１−２    バス制御部
３２−１、３２−２    レンジレジスタ
４−１、４−２    ＰＣＩバス
５    ＰＣＩ  Ｅｘｐｒｅｓｓスイッチ
５１−１、５１−２    Ｐ２Ｐブリッジ
５２−１、５２−２    レンジレジスタ
５２’−１、５２’−２    バス番号レジスタ
５３    Ｐ２Ｐブリッジ
５４    バーチャルＰＣＩバス
６−１、６−２    ＰＣＩ  Ｅｘｐｒｅｓｓバス
７    メモリ
７１    ドライバ
８−１    ＩＯカード
【図１】
2008021153.tif 000003
【図２】
2008021153.tif 000004
【図３】
2008021153.tif 000005
【図４】
2008021153.tif 000006