(57)【要約】【課題】  障害時の性能低下を抑えることができるＰＣＩカード、マザーボード、ＰＣＩバスシステム、制御方法、及びプログラムを提供する。【解決手段】  本発明のＰＣＩ（Peripheral Component Interconnect）カードは、コントローラ部と、外部回路と第１のレーンを介して接続される第１の送受信回路と、第１のレーンに障害が発生していない場合にはコントローラ部により使用されていない第２のレーンを介して、外部回路と接続される第２の送受信回路と、第１のレーンに障害が検出された場合に、使用する送受信回路を第１の送受信回路から第２の送受信回路に切り替える切替部とを含む。【選択図】      図１
2010061606.tif 000002
【特許請求の範囲】
【請求項１】
コントローラ部と、
外部回路と第１のレーンを介して接続される第１の送受信回路と、
前記第１のレーンに障害が発生していない場合には前記コントローラ部により使用されていない第２のレーンを介して、前記外部回路と接続される第２の送受信回路と、
前記第１のレーンに障害が検出された場合に、使用する送受信回路を前記第１の送受信回路から前記第２の送受信回路に切り替える切替部と
を含むＰＣＩ（Peripheral Component Interconnect）カード。
【請求項２】
前記第２の送受信回路を複数個有し、当該複数の第２の送受信回路には一連のレーン番号がそれぞれ割り当てられ、
前記切替部は、前記第１のレーンに障害が検出された場合に、前記コントローラ部からのデータの転送先を、前記第１の送受信回路から、前記複数の第２の送受信回路のうちで一番若いレーン番号が割り当てられた第２の送受信回路に切替える
請求項１に記載のＰＣＩカード。
【請求項３】
前記切替部は、レーンを使用して特定のデータを前記外部回路に送信し、前記外部回路から該特定のデータに対する応答データが返送されてこない場合に、レーン障害の発生を検出する
請求項１又は２に記載のＰＣＩカード。
【請求項４】
レーン障害を検出する障害検出部
を含む請求項１乃至３のいずれかに記載のＰＣＩカード。
【請求項５】
前記切替部は、前記外部回路からレーンを介して特定のデータを受信した場合に、当該レーンを介して前記外部回路に応答データを送信する
請求項１乃至４のいずれかに記載のＰＣＩカード。
【請求項６】
前記切替部は、レーン障害が検出された場合に、前記外部回路からレーンを介して特定のデータを受信した場合に、当該レーンを介して前記外部回路に応答データを送信する
請求項１乃至５のいずれかに記載のＰＣＩカード。
【請求項７】
前記切替部は、前記外部回路からレーンを介して特定のデータを受信した場合に、切替後のレーンを示す情報を含む応答データを当該レーンを介して前記外部回路に送信する
請求項１に記載のＰＣＩカード。
【請求項８】
ＰＣＩカードと第１のレーンを介して接続される第１の送受信回路と、
前記第１のレーンに障害が発生していない場合には使用されていない第２のレーンを介して、前記ＰＣＩカードと接続される第２の送受信回路とを含み、
前記第１のレーンに障害が検出された場合に、使用する送受信回路を前記第１の送受信回路から前記第２の送受信回路に切り替えるコントローラ部
を含むマザーボード。
【請求項９】
前記コントローラ部が使用する送受信回路を特定する送受信回路情報を格納する記憶手段を含み、
前記記憶手段は、前記第１のレーンにレーン障害が検出された場合に、前記第１の送受信回路に代えて、切り替えられた前記第２の送受信回路を加えた送受信回路情報を格納する
請求項８に記載のマザーボード。
【請求項１０】
前記第２の送受信回路を複数個有し、当該複数の第２の送受信回路には一連のレーン番号がそれぞれ割り当てられ、
前記記憶手段は、前記第１のレーンに障害が検出された場合に、前記第１の送受信回路に代えて、前記複数の第２の送受信回路のうちで一番若いレーン番号が割り当てられた第２の送受信回路を加えた送受信回路情報を格納する
請求項９に記載のマザーボード。
【請求項１１】
前記コントローラ部は、前記ＰＣＩカードからレーンを介して特定のデータを受信した場合に、当該レーンを介して前記ＰＣＩカードに応答データを送信する
請求項８乃至１０のいずれかに記載のマザーボード
【請求項１２】
前記コントローラ部は、
レーン障害が検出された場合に、ＰＣＩカードのレーン切替が完了したことを検出するための特定のデータを送信し、
全ての使用レーンを介して応答データを受信した場合に、障害により送信失敗したデータを再送信する
請求項８乃至１１のいずれかに記載のマザーボード。
【請求項１３】
前記コントローラ部は、
レーン障害が検出された場合に、ＰＣＩカードのレーン切替が完了したことを検出するための特定のデータを送信し、切替後のレーンを示す情報を含む応答データを受信し、
前記切替後のレーンを示す情報を基に、前記第１の送受信回路から前記第２の送受信回路に切り替える
請求項８に記載のマザーボード。
【請求項１４】
コントローラ部と、
マザーボードと第１のレーンを介して接続される第１のＰＣＩカード送受信回路と、
前記第１のレーンに障害が発生していない場合には前記コントローラ部により使用されていない第２のレーンを介して、前記マザーボードと接続される第２のＰＣＩカード送受信回路と、
前記第１のレーンに障害が検出された場合に、使用する送受信回路を前記第１のＰＣＩカード送受信回路から前記第２のＰＣＩカード送受信回路に切り替える切替部と
を含むＰＣＩカードと、
前記ＰＣＩカードと第１のレーンを介して接続される第１のマザーボード送受信回路と、
前記第１のレーンに障害が発生していない場合には使用されていない第２のレーンを介して、前記ＰＣＩカードと接続される第２のマザーボード送受信回路とを含み、
前記第１のレーンに障害が検出された場合に、使用する送受信回路を前記第１のマザーボード送受信回路から前記第２のマザーボード送受信回路に切り替えるコントローラ部
を含む前記マザーボードと
を含むＰＣＩバスシステム。
【請求項１５】
コントローラ部と、外部回路と第１のレーンを介して接続される第１のＰＣＩカード送受信回路と、前記第１のレーンに障害が発生していない場合には前記コントローラ部により使用されていない第２のレーンを介して、前記外部回路と接続される第２のＰＣＩカード送受信回路とを含むＰＣＩカードの制御方法において、
前記第１のレーンに障害が検出された場合に、使用する送受信回路を前記第１の送受信回路から前記第２の送受信回路に切り替える
ＰＣＩカードの制御方法。
【請求項１６】
ＰＣＩカードと第１のレーンを介して接続される第１の送受信回路と、前記第１のレーンに障害が発生していない場合には使用されていない第２のレーンを介して、前記ＰＣＩカードと接続される第２の送受信回路とを含むマザーボードの制御方法において、
前記１レーンに障害が検出された場合に、使用する送受信回路を前記第１の送受信回路から前記第２の送受信回路に切り替える
マザーボードの制御方法。
【請求項１７】
コントローラ部と、外部回路と第１のレーンを介して接続される第１のＰＣＩカード送受信回路と、前記第１のレーンに障害が発生していない場合には前記コントローラ部により使用されていない第２のレーンを介して、前記外部回路と接続される第２のＰＣＩカード送受信回路とを含むＰＣＩカードを制御するコンピュータに、
前記第１のレーンに障害が検出された場合に、使用する送受信回路を前記第１の送受信回路から前記第２の送受信回路に切り替える手段
として機能させるためのプログラム。
【請求項１８】
ＰＣＩカードと第１のレーンを介して接続される第１の送受信回路と、前記第１のレーンに障害が発生していない場合には使用されていない第２のレーンを介して、前記ＰＣＩカードと接続される第２の送受信回路とを含むマザーボードを制御するコンピュータに、
前記１レーンに障害が検出された場合に、使用する送受信回路を前記第１の送受信回路から前記第２の送受信回路に切り替える手段
として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はＰＣＩ（Peripheral Component Interconnect）カード、マザーボード、ＰＣＩバスシステム、制御方法、及びプログラムに関し、特に、障害処理を行うＰＣＩカード、マザーボード、ＰＣＩバスシステム、制御方法、及びプログラムに関する。
【背景技術】
【０００２】
ＰＣＩ  Ｅｘｐｒｅｓｓバスは、複数レーンを束ねて利用する事が可能な構成を有している。このような構成であるため、例えば、あるレーンが故障してリンクダウンとなった場合には、当該レーンを縮退し、残りの使用可能なレーンを使用することが可能となる。
【０００３】
例えば、これに関連して、複数のレーンで障害が起きたときの性能低下を抑えることができるシリアル伝送制御装置が特許文献１に開示されている。
【０００４】
【特許文献１】特開２００５−１８２４８５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、上記特許文献１記載のシリアル伝送制御装置では、障害時にレーンが縮退されるため、保守介入による復旧が行われるまでの間、十分な性能が出せないまま処理を継続しなければならないという問題点があった。
【０００６】
本発明の目的は、障害時の性能低下を抑えることができるＰＣＩカード、マザーボード、ＰＣＩバスシステム、制御方法、及びプログラムを提供することにある。
【課題を解決するための手段】
【０００７】
本発明のＰＣＩ（Peripheral Component Interconnect）カードは、コントローラ部と、外部回路と第１のレーンを介して接続される第１の送受信回路と、第１のレーンに障害が発生していない場合にはコントローラ部により使用されていない第２のレーンを介して、外部回路と接続される第２の送受信回路と、第１のレーンに障害が検出された場合に、使用する送受信回路を第１の送受信回路から第２の送受信回路に切り替える切替部とを含む。
【０００８】
本発明のマザーボードは、ＰＣＩカードと第１のレーンを介して接続される第１の送受信回路と、第１のレーンに障害が発生していない場合には使用されていない第２のレーンを介して、ＰＣＩカードと接続される第２の送受信回路とを含み、第１のレーンに障害が検出された場合に、使用する送受信回路を第１の送受信回路から第２の送受信回路に切り替えるコントローラ部を含む。
【０００９】
本発明のＰＣＩバスシステムは、コントローラ部と、マザーボードと第１のレーンを介して接続される第１のＰＣＩカード送受信回路と、第１のレーンに障害が発生していない場合にはコントローラ部により使用されていない第２のレーンを介して、マザーボードと接続される第２のＰＣＩカード送受信回路と、第１のレーンに障害が検出された場合に、使用する送受信回路を第１のＰＣＩカード送受信回路から第２のＰＣＩカード送受信回路に切り替える切替部とを含むＰＣＩカードと、ＰＣＩカードと第１のレーンを介して接続される第１のマザーボード送受信回路と、第１のレーンに障害が発生していない場合には使用されていない第２のレーンを介して、ＰＣＩカードと接続される第２のマザーボード送受信回路とを含み、第１のレーンに障害が検出された場合に、使用する送受信回路を第１のマザーボード送受信回路から第２のマザーボード送受信回路に切り替えるコントローラ部を含むマザーボードとを含む。
【００１０】
本発明のＰＣＩカードの制御方法は、コントローラ部と、外部回路と第１のレーンを介して接続される第１のＰＣＩカード送受信回路と、第１のレーンに障害が発生していない場合にはコントローラ部により使用されていない第２のレーンを介して、外部回路と接続される第２のＰＣＩカード送受信回路とを含むＰＣＩカードの制御方法において、第１のレーンに障害が検出された場合に、使用する送受信回路を第１の送受信回路から第２の送受信回路に切り替える。
【００１１】
本発明のマザーボードの制御方法は、ＰＣＩカードと第１のレーンを介して接続される第１の送受信回路と、第１のレーンに障害が発生していない場合には使用されていない第２のレーンを介して、ＰＣＩカードと接続される第２の送受信回路とを含むマザーボードの制御方法において、１レーンに障害が検出された場合に、使用する送受信回路を第１の送受信回路から第２の送受信回路に切り替える。
【００１２】
本発明のプログラムは、コントローラ部と、外部回路と第１のレーンを介して接続される第１のＰＣＩカード送受信回路と、第１のレーンに障害が発生していない場合にはコントローラ部により使用されていない第２のレーンを介して、外部回路と接続される第２のＰＣＩカード送受信回路とを含むＰＣＩカードを制御するコンピュータに、第１のレーンに障害が検出された場合に、使用する送受信回路を第１の送受信回路から第２の送受信回路に切り替える手段として機能させる。
【００１３】
本発明のプログラムは、ＰＣＩカードと第１のレーンを介して接続される第１の送受信回路と、第１のレーンに障害が発生していない場合には使用されていない第２のレーンを介して、ＰＣＩカードと接続される第２の送受信回路とを含むマザーボードを制御するコンピュータに、１レーンに障害が検出された場合に、使用する送受信回路を第１の送受信回路から第２の送受信回路に切り替える手段として機能させる。
【発明の効果】
【００１４】
本発明は、ＰＣＩバスシステムにおいて障害時の性能低下を抑えることができる、という効果を奏する。
【発明を実施するための最良の形態】
【００１５】
まず、本発明の概要を説明する。
【００１６】
図１は、ＰＣＩバスシステム１００の構成を示す図である。ＰＣＩバスシステム１００は、ＰＣＩカード２００と、第１のレーン３０３と、第２のレーン３０４と、マザーボード４００とを含む。
【００１７】
ＰＣＩカード２００は、コントローラ部００８と、切替部２０５とを含む。
【００１８】
切替部２０５は、外部回路（図１の例ではマザーボード４００）と第１のレーン３０３を介して接続される送受信回路２１１と、第１のレーン３０３に障害が発生していない場合にはコントローラ部００８により使用されていない第２のレーン３０４を介して、マザーボード４００と接続される送受信回路２１４とを含む。
【００１９】
切替部２０５は、第１のレーン３０３に障害が検出された場合に、使用する送受信回路を送受信回路２１１から送受信回路２１４に切り替える。
【００２０】
マザーボード４００は、ＰＣＩカード２００の外部回路の一例であり、コントローラ部４０２を含む。
【００２１】
コントローラ部４０２は、ＰＣＩカード２００と第１のレーン３０３を介して接続される送受信回路４３１と、第１のレーン３０３に障害が発生していない場合には使用されていない第２のレーン３０４を介して、ＰＣＩカード２００と接続される送受信回路４３４とを含む。そして、コントローラ部４０２は、第１のレーン３０３に障害が検出された場合に、使用する送受信回路を送受信回路４３１から送受信回路４３４に切り替える。
【００２２】
これにより、本発明は、ＰＣＩバスシステム１００において障害時の性能低下を抑えることができるという効果を奏する。
【００２３】
その理由は、ＰＣＩカード２００及びマザーボード４００のそれぞれが、第１のレーン３０３でレーン障害が検出された場合に、使用するレーンを第１のレーン３０３から、冗長レーンである第２のレーン３０４に切り替えるためである。即ち、本発明では、障害時にもレーンが縮退されないため、性能低下が抑えられる。
【００２４】
現在のＰＣＩ  Ｅｘｐｒｅｓｓバスを採用したシステムでは、マザーボード４００は将来の拡張性を考慮して装置が対応可能な最大のレーン数に対応している。これに対し、ＰＣＩカード２００はコントローラ２０２の処理性能に応じて必要となるレーン数のみに対応している。そのため、マザーボード４００が対応しているレーン数に対し、ＰＣＩカード２００が対応しているレーン数が少ない場合が一般的となっている。本発明は、この点に着目し、ＰＣＩカード２００のコントローラ２０２が必要とする第１のレーン３０３以外の未使用となっている冗長レーンを、障害時用の第２のレーン３０４として使用できるようにした。これにより、障害が発生した時も、障害が発生した第１のレーン３０３のデータ転送処理を第２のレーン３０４に肩代わりさせることを可能とし、性能低下を抑えつつ処理を継続できるようにしたものである。
【００２５】
次に、本発明の第１の実施の形態について図面を参照して詳細に説明する。まず、ＰＣＩ  Ｅｘｐｒｅｓｓバスについて説明する。
【００２６】
図２は、ＰＣＩ  Ｅｘｐｒｅｓｓバスの階層を示した図である。ＰＣＩ  Ｅｘｐｒｅｓｓバスは、物理レイヤ、リンクレイヤ、トランザクションレイヤ、ソフトウェアレイヤを含む。ソフトウェアからのデータを基に、トランザクションレイヤでヘッダ情報を加えたパケットが作られ、データリンクレイヤでそのパケットのシーケンス番号とデータ保障のためのＣＲＣ（Cyclic Redundancy Check）コードが付加される。そしてそのパケットは、物理レイヤで８ｂ／１０ｂ変換されてシリアルバスでデータ転送される。
【００２７】
図３は、ＰＣＩ  Ｅｘｐｒｅｓｓバスにおける各レーンへのデータ分配方法を示す図である。図３に示すように、ＰＣＩ  Ｅｘｐｒｅｓｓバスは、複数バイトのデータ転送を行う場合、送信側でデータリンクレイヤで各バイトにシーケンス番号を付加し、物理レイヤで各バイトを各レーンに順番に分配する。受信側では、物理レイヤが分配されたデータを受信すると、データリンクレイヤが各バイトに付けられたシーケンス番号に基づき、受信データを元のデータに復元する。
【００２８】
次に、本発明の第１の実施の形態の構成について図面を参照して説明する。
【００２９】
図６は、ＰＣＩバスシステム１００の構成を示す図である。
【００３０】
ＰＣＩバスシステム１００は、ＰＣＩカード２００と、マザーボード４００と、レーン０〜７とを含む。
【００３１】
ＰＣＩカード２００は、コントローラ２０２と、障害検出部２０３と、切替制御部２０４と、切替部２０５と、Ｐｏｒｔ２２０〜２２７とを含む。
【００３２】
コントローラ２０２は、ファームウェアで制御され、ＰＣＩカード２００を制御する。コントローラ２０２は、マザーボード４００のＰＣＩコントローラ４０１と使用するレーンを決定するネゴシエーション及びデータ転送を行う。
【００３３】
障害検出部２０３は、レーン毎に、ＰＣＩ Ｅｘｐｒｅｓｓの仕様（PCI Express Base Specification）に基づいた障害検出を行う。例えば、受信したパケットが決められたフォーマットになっていないこと、または、パケットのデータが異常である（Poisoned TLP Recieved 等）ことを、レーン障害として検出する。また、受信したパケットでＣＲＣエラーを検出した場合や、要求したパケットに対する応答が規定時間内に無かった場合も、レーン障害として検出する。障害検出部２０３は、ファームウェア制御により、障害を検出した場合に、切替制御部２０４にレーン切替の指示を出し、レーンの切替を実施する。
【００３４】
切替制御部２０４及び切替部２０５は、ファームウェア制御により、障害検出部２０３の指示に従い、レーンの切替を行う。切替部２０５は切替回路２０６を含む。切替制御部２０４は切替部２０５の切替回路２０６を制御し、後述のＰＣＩカードコントローラ使用レーン３０１に障害が検出された場合に、使用する送受信回路（後述する）を、マザーボード４００とＰＣＩカードコントローラ使用レーン３０１を介して接続される送受信回路から、ＰＣＩカードコントローラ使用レーン３０１に障害が発生していない場合にはコントローラ２０２により使用されていない冗長レーン３０２を介して、マザーボード４００と接続される送受信回路に切り替える。
【００３５】
このとき、切替部２０５の切替回路２０６は、ＰＣＩカードコントローラ使用レーン３０１（図１ではレーン１）に障害が検出された場合に、コントローラ２０２からのデータの転送先を、送受信回路２１１から、複数の冗長レーン３０２のうちで一番若いレーン番号（図１ではレーン４）が割り当てられた送受信回路２２４に切替える。ＰＣＩバスシステム１００の利用者又は製造者は、切替部２０５のファームウェアに、様々な条件に応じた切替パターンを登録したテーブルを格納しておく。
【００３６】
切替部２０５は、マザーボード４００のＰＣＩコントローラ４０１との間で、レーンのリンクアップ処理を行う。また、各々から一定時間毎にレーン毎に特定のデータ（例、アイドルパケット）を送信し応答データ（例、アクノリッジ）を受信するか否かにより、障害の発生を検出する。また、切替部２０５は、レーン毎に、特定のデータ（例、Aliveパケット）を受信すると、応答データ（例、アクノリッジ）をＰＣＩコントローラ４０１に送信する。
【００３７】
切替部２０５は、送受信回路２１０〜２１７を含む。
【００３８】
送受信回路２１０〜２１７及びＰｏｒｔ（０〜７）２２０〜２２７は、切替回路２０６とレーン１〜７の間に、各レーン毎に設けられる。ここでは、一連のレーン番号をそれぞれ割り当てるものとする。第１の実施の形態では、ＰＣＩカード２００は、ＰＣＩカード２００のコントローラ２０２が使用するカードコントローラ使用レーン３０１（レーン０〜３）に対応した送受信回路２１０〜２１３とＰｏｒｔ（０〜３）２２０〜２２３だけでなく、ＰＣＩカード２００が接続されるマザーボード４００がサポートし、ＰＣＩカード２００のコントローラ２０２が未使用の冗長レーン３０２（レーン４〜７）に対応した送受信回路２１４〜２１７とＰｏｒｔ（４〜７）２２４〜２２７も備える。
【００３９】
マザーボード４００は、ＰＣＩカード２００の外部回路の一例であり、ＰＣＩコントローラ４０１と、Ｐｏｒｔ（０〜７）４２０〜４２７とを含む。
【００４０】
ＰＣＩコントローラ４０１は、ファームウェアで制御される、マザーボード４００のコントローラである。ＰＣＩコントローラ４０１は、ＰＣＩカードコントローラ使用レーン３０１に障害が検出された場合に、使用する送受信回路を、ＰＣＩカード２００とＰＣＩカードコントローラ使用レーン３０１を介して接続される送受信回路から、ＰＣＩカードコントローラ使用レーン３０１に障害が発生していない場合には使用されていない冗長レーン３０２を介してＰＣＩカード２００と接続される送受信回路に切り替える。
【００４１】
ＰＣＩコントローラ４０１は、ＰＣＩカード２００からレーンを介して特定のデータ（例、アイドルパケット）を受信した場合に、当該レーンを介してＰＣＩカード２００に応答データ（例、アクノリッジ）を送信する。
【００４２】
又、ＰＣＩコントローラ４０１は、レーン障害が検出された場合に、ＰＣＩカード２００のレーン切替が完了したことを検出するための特定のデータ（例、Aliveパケット）を送信し、全ての使用レーンを介して応答データ（例、アクノリッジ）を受信した場合に、障害により送信失敗したデータを再送信する。
【００４３】
ＰＣＩコントローラ４０１は、Bus Enable４０５とNegotiated Link Register４０６とを含む。Bus Enable４０５は、障害発生後、データ送信を再開できる状態になったかどうかを示す値を格納する。“１”（Enable）はデータ送信可、“０”（disable）は、データ送信不可を示す。
【００４４】
Negotiated Link Register４０６は、記憶手段であり、データ転送に使用するレーンに対応する送受信回路（後述する）を定める値である送受信回路情報を格納する。ＰＣＩコントローラ４０１は、任意のレーンで障害が発生した場合、送受信回路情報を、障害の発生した当該レーン番号に代えて、レーン番号の一番若い冗長レーン３０２の番号を新たに加えた値に変更する。
【００４５】
例えば、０ｘＦ０（“１１１１，００００”）から０ｘＢ８（“１０１１，１０００”）に変更する。複数回障害が発生した場合は、順に使用可能な若い番号の冗長レーン３０２に対応した送受信回路を使用するように値を変更する。例えば、２回目の場合、障害の発生した当該レーン番号を除き、冗長レーン３０２の中でレーン番号が二番目に若いレーンの番号を付加した値に変更する。ＰＣＩバスシステム１００の利用者又は製造者は、ＰＣＩコントローラ４０１のファームウェアに、それぞれの条件に応じた送受信回路情報が登録されたテーブルを格納しておく。
【００４６】
送受信回路４３０〜４３７及びＰｏｒｔ（０〜７）４２０〜４２７は、各レーン毎に設けられる。ここでは、一連のレーン番号をそれぞれ割り当てるものとする。
【００４７】
レーン０〜７は、それぞれがシリアルバスであり、シリアルバスの束である。第１の実施の形態のＰＣＩバスシステム１００では、レーン０〜３はカードコントローラ２０２が初期化時に使用するカードコントローラ使用レーン３０１であり、レーン４〜７はカードコントローラ２０２が初期化時には使用しない（未使用の）冗長レーン３０２である。
【００４８】
次に、本発明の第１の実施の形態の動作について図面を参照して説明する。
【００４９】
まず、ＰＣＩバスシステム１００のデータ転送開始先立つ初期化処理について図６を参照して説明する。
【００５０】
ＰＣＩバスシステム１００は初期化時に使用するレーンのリンクアップを行う。ＰＣＩ  Ｅｘｐｒｅｓｓにおいて、ＰＣＩコントローラ４０１は、ハードウェアの初期化の中で、接続されるレーンの数、および動作周波数を自動検出する。検出の方法は仕様（PCI Express Base Specification）で決まっており、規定時間以内に各レーンのパルスが検出されるかどうかで行う。
【００５１】
通常のリンクアップでは、例えば、マザーボード４００が８レーンまでサポートしているのに対し、ＰＣＩカード２００が４レーンまでしかサポートされていない場合、マザーボード４００のＰＣＩコントローラ４０１は、初期化時に各ポートのパルスが４ポート分しか検出されないため、４レーンでリンクアップを行うことになる。
【００５２】
一方、第１の実施の形態では、切替部２０５が外部（マザーボード４００側）に８つのレーンを備えている。即ち、ＰＣＩカード２００は、冗長レーン３０２（レーン４〜７）に対応して、Ｐｏｒｔ（４）２２４〜Ｐｏｒｔ（７）２２７と送受信回路２１４〜２１７とを備えている。そのため、第１の実施の形態では、ＰＣＩコントローラ４０１は、８つ全てのレーンでリンクアップを行う。
【００５３】
次に、マザーボード４００のＰＣＩコントローラ４０１と、ＰＣＩカード２００のコントローラ２０２との間で、使用レーンについてネゴシエーションを行う。ＰＣＩコントローラ４０１が、テストパケットを全てのレーン１〜７に送信し、コントローラ２０２からアクノリッジが返ってきたレーンは、ネゴシエーションが成立し、使用レーンとなる。ＰＣＩカード２００が４レーン（レーン０〜４）をサポートしているため、切替回路２０６は４レーンをサポートしている。そのため、初期状態では、レーン４〜７に送信したテストパケットは切替回路２０６を通過せず、コントローラ２０２に到達しない。その結果、ＰＣＩコントローラ４０１とコントローラ２０２との間で、レーン０〜４のみを使用レーンとするネゴシエーションが成立する。ＰＣＩコントローラ４０１は、ネゴシエーションの結果を、Negoｔiated Link Register４０６に送受信回路情報として格納する。ここでは、０ｘＦ０（“１１１１，００００”）の値を格納する。
【００５４】
そして、使用することが決定されたレーン（カードコントローラ使用レーン３０１）を使用して、ＰＣＩバスシステム１００はデータ転送を開始する。残りのレーン（冗長レーン３０２）は、リンクアップは完了しているため、アイドル状態となる。
【００５５】
図４は、各レーンへのデータ分配方法を示す図である。前述の通り、マザーボード４００のＰＣＩコントローラ４０１は、複数バイトのデータを転送するときは、各バイトを各レーンに分配するが、分配はNegotiated Link Register４０６の送受信回路情報（第１の実施の形態の例では０ｘＦ０（“１１１１，００００”））で“１”がセットされたレーンの若番から老番の順番にデータを分割（ストライピング）する。即ち、マザーボード４００のＰＣＩコントローラ４０１は、レーン０（送受信回路４３０）からレーン３（送受信回路４３３）を使いデータ分割（ストライピング）をしてデータを転送する。
【００５６】
次に、図１の装置において、あるレーンで障害が発生したときのリカバリ動作について図７，８を参照して説明する。
【００５７】
図７は、マザーボード４００側で障害を検出したときの動作を示したシーケンス図である。
【００５８】
まず、マザーボード４００のＰＣＩコントローラ４０１と、ＰＣＩカード２００の切替部２０５との間は、各々から一定時間毎にアイドルパケットを送信しアクノリッジを受けることで、ヘルスチェックを実行している。
【００５９】
マザーボード４００のＰＣＩコントローラ４０１が障害を検出すると（タイミング１）、ＰＣＩコントローラ４０１は Negotiated Link Register４０６の値を変更する（タイミング２）。
【００６０】
図５は、各レーンへのデータ分配方法（レーン切替後）を示した図である。図４と比較して図５では、送受信回路情報が０ｘＦ０（“１１１１，００００”）から０ｘＢ８（“１０１１，１０００”）に変更されている。即ち、ＰＣＩコントローラ４０１は、障害の発生したレーン１に対応する送受信回路４３１が除かれ、マザーボード４００がサポートし、ＰＣＩカード２００のコントローラ２０２が未使用の冗長レーン３０２（レーン４）に対応する送受信回路４３４が加えられた、送受信回路情報をNegotiated Link Register４０６に格納している。より具体的には、送受信回路情報は、障害の発生したレーン１が除かれ、「レーン番号の一番若い」レーン４に対応する送受信回路４３４が付加された値である。これにより、ＰＣＩコントローラ４０１は、障害が発生したレーン１に対応する送受信回路４３１に代えて、レーン４に対応する送受信回路４３４を使用して分割したデータを送信することになる。
【００６１】
この処理と共に、ＰＣＩコントローラ４０１は、Bus Enable４０５に“０”（disable）を格納する。以上の処理により、ＰＣＩコントローラ４０１は障害が発生したレーン（レーン１）を閉塞したことになる（タイミング３）。レーンを閉塞すると、ＰＣＩコントローラ４０１は、ＰＣＩカード２００のレーン切替が完了したことを知るために、Negotiated Link Register４０６に使用送受信回路として定義されている全てのレーンに対応する送受信回路を使用してＰＣＩカード２００に対するAliveパケットの送信を開始する（タイミング５）。そして、全てのレーン経由でアクノリッジが戻るまでAliveパケットを送信し続ける。ＰＣＩコントローラ４０１は、障害の発生していないレーンを経由したアクノリッジはすぐに受信できるが、レーン切替後の新しいレーン（レーン４）を経由したアクノリッジはＰＣＩカード２００のレーン切替が完了するまで受信できない。
【００６２】
これに対しＰＣＩカード２００側では、障害検出部２０３が、マザーボード４００のＰＣＩコントローラ４０１に対して送信したアイドルパケットに対するアクノリッジが戻らないため、レーンの閉塞を検出する（タイミング４）。
【００６３】
レーンの閉塞を検出すると、障害検出部２０３は、切替制御部２０４にレーン切替の指示を出し、レーンの切替を実施する（タイミング６）。切替制御部２０４は切替部２０５を制御し、使用する送受信回路を、マザーボード４００とレーン１を介して接続される送受信回路２１１から、レーン１に障害が発生していない場合にはコントローラ２０２により使用されていないレーン４を介して、マザーボード４００と接続される送受信回路２１４に切り替える。このとき、送受信回路２２４は、複数の冗長レーン３０２のうちで一番若いレーン番号（図１ではレーン４）が割り当てられた送受信回路である。
【００６４】
ＰＣＩカード２００においてレーンの切替が完了すると、コントローラ２０２は、マザーボード４００の切替部２０５がＰＣＩカード２００に対し送信し続けていたAliveパケットを、切替後の新しいレーンを経由して受信することが可能となる。Aliveパケットを受信後、切替部２０５は、アクノリッジをマザーボード４００のＰＣＩコントローラ４０１に送信し、ＰＣＩコントローラ４０１はアクノリッジを受信する。これにより、ＰＣＩコントローラ４０１は全てのレーンを介してアクノリッジを受信したことになり、ＰＣＩコントローラ４０１はレーンの切替が完了したことを認識し、データを再び送信する準備が整ったことになる。そのため、ＰＣＩコントローラ４０１は、Bus Enable４０５を“１”（Enable）にセットし（タイミング７）、データの転送を開始する（タイミング８）。
【００６５】
ＰＣＩコントローラ４０１は、図６に示すように、Negotiated Link Register４０６に設定されている値に従い、レーン０，２，３，４に対してデータのストライピングを行う。データ転送の開始にあたって、ＰＣＩコントローラ４０１は、まず、障害により送信失敗したシーケンス番号のデータの再送信を行う。使用レーンはレーン０，２，３，４であるが、切替回路２０６において切り替えるため、ＰＣＩカード２００のコントローラ２０２からは、レーン０，１，２，３が使用されているように見える。そして、ＰＣＩカード２００のコントローラ２０２は、受信したデータをシーケンス番号に基づきリンクレイヤでデータを復元する。これにより、ＰＣＩバスシステム１００は、コントローラ２０２に対し障害を隠蔽することができ、また、ソフトウェアレイヤに対しても障害を隠蔽することができる。
【００６６】
図８は、ＰＣＩカード２００側で障害を検出した時の動作を示したシーケンス図である。
【００６７】
まず、ＰＣＩカード２００の切替部２０５と、マザーボード４００のコントローラ４０１との間は、上述したように、各々から一定時間毎にアイドルパケットを送信し、アクノリッジを受ける事を確認することで、ヘルスチェックを実施している。
【００６８】
ＰＣＩカード２００の障害検出部２０３は、障害を検出すると（タイミング１）、障害検出部２０３は切替制御部２０４に対し障害検出を通知し、切替制御部２０４がレーンの切替を実施する（タイミング２）。該当レーンは閉塞することになる（タイミング３）。一方、障害が発生したレーン（レーン１）が閉塞されたため、マザーボード４００のＰＣＩコントローラ４０１は、レーン１の閉塞を検出する（タイミング４）。
【００６９】
マザーボード４００のＰＣＩコントローラ４０１は、Bus Enable４０５を“０”（Disable）にし、Negotiated Link Register４０６を変更し（タイミング５）、Aliveパケットを全てのレーン経由でＰＣＩカード２００に対して送信する（タイミング６）。この場合、ＰＣＩカード２００はすでにレーンの切替が完了しているため、障害の発生していないレーンのみならず、レーン切替後の新しいレーンについても、Aliveパケットに対してはすぐにアクノリッジが戻ってくる。マザーボード４００のＰＣＩコントローラ４０１は、レーンの切替が完了したことを認識し、Bus Enable４０５を“１”（Enable）にセットし（タイミング７）、データの送信を開始する（タイミング８）。
【００７０】
次に、第１の実施の形態の奏する効果を説明する。
【００７１】
まず、第１の実施の形態は、ＰＣＩバスシステム１００において障害時の性能低下を抑えることができるという効果を奏する。
【００７２】
その理由は、ＰＣＩカード２００及びマザーボード４００のそれぞれが、レーン障害が検出された場合に、使用するレーンを、障害の発生したレーンから、冗長レーン３０２に切り替えるためである。即ち、障害時にもレーンが縮退されないため、性能低下が抑えられる。
【００７３】
さらに、第１の実施の形態は、上述の効果を比較的低コストに実現できるという効果を奏する。
【００７４】
その理由は、レーン障害が検出された場合に、使用するレーンを、障害の発生したレーンから、マザーボード４００がサポートし、ＰＣＩカード２００のコントローラ２０２が未使用の冗長レーン３０２に切り替えるためである。即ち、第１の実施の形態では、新レーンを既存のレーンとは別に新たに用意するのではなく、マザーボード４００がサポートし、ＰＣＩカード２００のコントローラ２０２が未使用の冗長レーン３０２を利用することにより確保しているためである。
【００７５】
また、マザーボード４００のハードウェアの変更量が少ないことも理由の一つである。即ち、第１の実施の形態によれば、ＰＣＩコントローラ４０１にレーン切替前後で、データのストライピングを行うレーンを変更するための機構としてNegotiated Link Register４０６を追加するという最小限の変更にとどめることが可能であるためである。
【００７６】
また、ＰＣＩカード２００のハードウェアの変更量が少ないことも理由の一つである。即ち、第１の実施の形態では、ＰＣＩカード２００に既存のレーンへの切替を行うための構成を追加するという最小限の変更にととめることが可能であるためである。特に、コントローラ２０２に対し障害やレーンの切替を隠蔽可能であるため、コントローラ２０２自体を改造する必要がないためである。
【００７７】
さらに、第１の実施の形態は、汎用性があるという効果を奏する。
【００７８】
その理由は、第１の実施の形態では、障害時にレーンの切替という物理レイヤ中心の変更を行い、ソフトウェアレイヤには障害を隠蔽しており、このため、ドライバソフトウェアには依存しないためである。
【００７９】
さらに、第１の実施の形態は、リンクの構成に必須となるレーン０で障害が発生しても、転送処理を再開できるという効果を奏する。
【００８０】
その理由は、ＰＣＩコントローラ４０１がデータ転送に使用するレーンを定める値である送受信回路情報を格納するNegotiated Link Register４０６を備え、この送受信回路情報を使用してデータのストライピングを行うためである。
【００８１】
通常のＰＣＩ  Ｅｘｐｒｅｓｓバスでは、レーン０がリンクの構成に必須であり、レーン０で障害が発生すると、別のレーンが健常であるにもかかわらず、データのストライピングが行えなくなり、転送処理を継続することができないという問題があった。第１の実施の形態はこの問題を解決できる。
【００８２】
次に、本発明の第２の実施の形態について図面を参照して説明する。
【００８３】
図９は、第２の実施の形態におけるマザーボード４００側で障害を検出したときの動作を示したシーケンス図であり、図１０は、ＰＣＩカード２００側で障害を検出した時の動作を示したシーケンス図である。第１の実施の形態の図７，８と比較して、マザーボード４００は、Aliveパケットを送信、アクノリッジの受信をしてから、Negotiated Link Register４０６の値の変更を行う点が異なる。
【００８４】
図９，１０において、ＰＣＩカード２００の切替部２０５は、マザーボード４００からいずれかのレーンを介してAliveパケットを受信した場合に、切替後のレーンを示す情報を含むアクノリッジを当該レーンを介してマザーボード４００に送信する。そして、マザーボード４００のＰＣＩコントローラ４０１は、当該アクノリッジを受信し、切替後のレーンを示す情報を基に、使用する送受信回路を、マザーボード４００とＰＣＩカードコントローラ使用レーン３０１を介して接続される送受信回路から、ＰＣＩカードコントローラ使用レーン３０１に障害が発生していない場合にはコントローラ２０２により使用されていない冗長レーン３０２を介して、マザーボード４００と接続される送受信回路に切り替える。
【００８５】
具体的には、ＰＣＩコントローラ４０１は、当該切替後のレーンを示す情報を基に、送受信回路情報を生成し、Negotiated Link Register４０６に格納する。以後、ＰＣＩコントローラ４０１は、Negotiated Link Register４０６に格納された送受信回路情報に沿って、データ転送を行う。
【００８６】
以上のような構成により、第２の実施の形態は、レーン切替の設定が容易になるという効果を奏する。
【００８７】
その理由は、第１の実施の形態では、マザーボード４００側及びＰＣＩカード２００側双方に切替後のレーンを示す情報を予め設定しておく必要があったが、第２の実施の形態では、ＰＣＩカード２００側のみに設定しておけばよいためである。マザーボード４００側は、ＰＣＩカード２００側に設定した切替後のレーンを示す情報をＰＣＩカード２００から受信し、その情報に沿ってレーン切替を行う。
【図面の簡単な説明】
【００８８】
【図１】ＰＣＩバスシステム１００の構成を示す図である。
【図２】ＰＣＩ  Ｅｘｐｒｅｓｓバスの階層を示した図である。
【図３】ＰＣＩ  Ｅｘｐｒｅｓｓバスにおける各レーンへのデータ分配方法を示す図である。
【図４】各レーンへのデータ分配方法を示す図である。
【図５】各レーンへのデータ分配方法（レーン切替後）を示した図である。
【図６】ＰＣＩバスシステム１００の構成を示す図である。
【図７】マザーボード４００側で障害を検出したときの動作を示したシーケンス図である。
【図８】ＰＣＩカード２００側で障害を検出した時の動作を示したシーケンス図である。
【図９】第２の実施の形態におけるマザーボード４００側で障害を検出したときの動作を示したシーケンス図である。
【図１０】第２の実施の形態におけるＰＣＩカード２００側で障害を検出した時の動作を示したシーケンス図である。
【符号の説明】
【００８９】
０，１，２，３，４，５，６，７    レーン
００８    コントローラ部
１００    ＰＣＩバスシステム
２００    ＰＣＩカード
２０２    コントローラ
２０３    障害検出部
２０４    切替制御部
２０５    切替部
２０６    切替回路
２１０，２１１，２１２，２１３，２１４，２１５，２１６，２１７    送受信回路
２２０    Ｐｏｒｔ（０）
２２１    Ｐｏｒｔ（１）
２２２    Ｐｏｒｔ（２）
２２３    Ｐｏｒｔ（３）
２２４    Ｐｏｒｔ（４）
２２５    Ｐｏｒｔ（５）
２２６    Ｐｏｒｔ（６）
２２７    Ｐｏｒｔ（７）
３０１    カードコントローラ使用レーン
３０２    冗長レーン
３０３    第１のレーン
３０４    第２のレーン
４００    マザーボード
４０１    ＰＣＩコントローラ
４０２    コントローラ部
４０５    Bus Enable
４０６    Negotiated Link Register
４２０    Ｐｏｒｔ（０）
４２１    Ｐｏｒｔ（１）
４２２    Ｐｏｒｔ（２）
４２３    Ｐｏｒｔ（３）
４２４    Ｐｏｒｔ（４）
４２５    Ｐｏｒｔ（５）
４２６    Ｐｏｒｔ（６）
４２７    Ｐｏｒｔ（７）
４３０    送受信回路
４３１    送受信回路
４３２    送受信回路
４３３    送受信回路
４３４    送受信回路
４３５    送受信回路
４３６    送受信回路
４３７    送受信回路
【図１】
2010061606.tif 000003
【図２】
2010061606.tif 000004
【図３】
2010061606.tif 000005
【図４】
2010061606.tif 000006
【図５】
2010061606.tif 000007
【図６】
2010061606.tif 000008
【図７】
2010061606.tif 000009
【図８】
2010061606.tif 000010
【図９】
2010061606.tif 000011
【図１０】
2010061606.tif 000012