(57)【要約】  本発明は、ＰＣＩｅリンク故障を処理する方法、装置及びシステムを開示する。ＰＣＩｅ装置と下流のＰＣＩｅ装置との間のリンクのレーンにおいて故障が発生したと検出すると、ＰＣＩｅ装置は、ＭＳＩメッセージをＣＰＵに送信し、下流のＰＣＩｅ装置と現在レーン幅値をネゴシエートし、ＣＰＵは、ＭＳＩメッセージに従ってＰＣＩｅ装置からＰＣＩｅ装置のレーンネゴシエーション能力値Ｍ及び現在レーン幅値Ｍを取得し、Ｎ及びＭ／２を比較し、Ｎ＜Ｍ／２であるとき、ＰＣＩｅ装置は、ＰＣＩｅ装置と下流のＰＣＩｅ装置との間のリンクに対してレーン反転処理を実行し、それから下流のＰＣＩｅ装置と新たな現在レーン幅値をネゴシエートする。このようにして、ＰＣＩｅ装置との間のリンクのレーンにおいて故障が発生すると、本発明の技術的方策を利用することは、故障レーンの番号に関わらず、元のリンクの１／２のレーンが２つのＰＣＩｅ装置がデータ伝送を実行し続けるため提供可能であることを保証でき、これは、従来技術におけるリンク幅に課された故障レーンのレーン番号の制限を緩和し、最適なリンク幅が再ネゴシエーション後に実現可能である。
2016526311.tif 000002
【特許請求の範囲】
【請求項１】
ＰＣＩｅリンク故障を処理する方法であって、
ＰＣＩｅ装置が、前記ＰＣＩｅ装置と下流のＰＣＩｅ装置との間のリンクのレーンにおいて故障が発生したと検出し、メッセージ・シグナルド・インタラプトＭＳＩメッセージを中央処理ユニットＣＰＵに送信するステップであって、前記ＭＳＩメッセージは前記ＰＣＩｅ装置のデバイスＩＤを有する、送信するステップと、
前記ＰＣＩｅ装置が、現在レーン幅値Ｎを取得するため、前記下流のＰＣＩｅ装置とネゴシエートするステップと、
前記ＣＰＵが、前記受信したＭＳＩメッセージにおけるデバイスＩＤに従って、前記ＰＣＩｅ装置から前記ＰＣＩｅ装置のレーンネゴシエーション能力値Ｍ及び前記現在レーン幅値Ｎを取得するステップと、
前記ＣＰＵが、ＮとＭ／２とを比較するステップと、
Ｎ＜Ｍ／２である場合、前記ＣＰＵが、レーン反転処理を実行するよう前記ＰＣＩｅ装置に指示するステップと、
前記ＰＣＩｅ装置が、前記ＰＣＩｅ装置と前記下流のＰＣＩｅ装置との間のリンクに対して前記レーン反転処理を実行するステップと、
前記ＰＣＩｅ装置が、新たな現在レーン幅値Ｎ’を取得するため、前記下流のＰＣＩｅ装置とネゴシエートし、Ｎ’個のレーンを利用することによって前記下流のＰＣＩｅ装置とのデータ伝送を実行し続けるステップと、
を有する方法。
【請求項２】
当該方法は更に、Ｎ≧Ｍ／２である場合、前記ＰＣＩｅ装置が、ネゴシエーションにより取得されたＮ個のレーンを利用することによって、前記下流のＰＣＩｅ装置とのデータ伝送を実行し続けるステップを有する、請求項１記載の方法。
【請求項３】
Ｎ＜Ｍ／２である場合、当該方法は更に、前記ＣＰＵが、前記ＰＣＩｅ装置と前記下流のＰＣＩｅ装置との間のリンクのレーン番号０からレーン番号（Ｍ／２−１）までを無効にするステップを有する、請求項１又は２記載の方法。
【請求項４】
ＰＣＩｅリンク故障を処理する方法であって、
ＰＣＩｅ装置により報告されたメッセージ・シグナルド・インタラプトＭＳＩメッセージを受信するステップであって、前記ＭＳＩメッセージは前記ＰＣＩｅ装置のデバイスＩＤを有する、受信するステップと、
前記デバイスＩＤに従って前記ＰＣＩｅ装置から前記ＰＣＩｅ装置のレーンネゴシエーション能力値Ｍ及び現在レーン幅値Ｎを取得するステップであって、前記現在レーン幅値Ｎは、前記ＰＣＩｅ装置が下流のＰＣＩｅ装置とネゴシエートすることによって取得される、取得するステップと、
ＮとＭ／２とを比較するステップと、
Ｎ＜Ｍ／２である場合、レーン反転処理を実行するよう前記ＰＣＩｅ装置に指示するステップと、
を有する方法。
【請求項５】
Ｎ＜Ｍ／２である場合、当該方法は更に、前記ＰＣＩｅ装置と前記下流のＰＣＩｅ装置との間のリンクのレーン番号０からレーン番号（Ｍ／２−１）までを無効にするステップを有する、請求項４記載の方法。
【請求項６】
前記ＰＣＩｅ装置のレーンネゴシエーション能力値Ｍは、前記ＰＣＩｅ装置と前記下流のＰＣＩｅ装置との間のリンクのレーンの合計数に等しい、請求項４又は５記載の方法。
【請求項７】
ＰＣＩｅリンク故障を処理する方法であって、
ＰＣＩｅ装置が、前記ＰＣＩｅ装置と下流のＰＣＩｅ装置との間のリンクのレーンにおいて故障が発生したと検出し、メッセージ・シグナルド・インタラプトＭＳＩメッセージを中央処理ユニットＣＰＵに送信するステップであって、前記ＭＳＩメッセージは前記ＰＣＩｅ装置のデバイスＩＤを有する、送信するステップと、
現在レーン幅値Ｎを取得するため、前記下流のＰＣＩｅ装置とネゴシエートするステップと、
前記ＣＰＵにより送信されたレーン反転処理を実行する指示を受信し、前記ＰＣＩｅ装置と前記下流のＰＣＩｅ装置との間のリンクに対して前記レーン反転処理を実行するステップと、
新たな現在レーン幅値Ｎ’を取得するため、前記下流のＰＣＩｅ装置とネゴシエートし、Ｎ’個のレーンを利用することによって前記下流のＰＣＩｅ装置とのデータ伝送を実行し続けるステップと、
を有する方法。
【請求項８】
当該方法は更に、前記ＰＣＩｅ装置が前記ＣＰＵにより送信されたレーン反転処理を実行する指示を所定の時間内に受信しなかった場合、前記ＰＣＩｅ装置が、Ｎ個のレーンを利用することによって、前記下流のＰＣＩｅ装置とのデータ伝送を実行し続けるステップを有する、請求項７記載の方法。
【請求項９】
ＰＣＩｅリンク故障を処理するシステムであって、
当該システムは、中央処理ユニットＣＰＵ、ＰＣＩｅ装置及び下流のＰＣＩｅ装置を有し、前記ＣＰＵは前記ＰＣＩｅ装置に接続され、前記ＰＣＩｅ装置はリンクを利用することによって前記下流のＰＣＩｅ装置に接続され、
前記ＰＣＩｅ装置は、前記ＰＣＩｅ装置と前記下流のＰＣＩｅ装置との間のリンクのレーンにおいて故障が発生したか検出し、故障が発生すると、メッセージ・シグナルド・インタラプトＭＳＩメッセージを前記ＣＰＵに報告するよう構成され、前記ＭＳＩメッセージは前記ＰＣＩｅ装置のデバイスＩＤを有し、前記ＰＣＩｅ装置は更に、現在レーン幅値Ｎを取得するため、前記下流のＰＣＩｅ装置とネゴシエートするよう構成され、
前記ＣＰＵは、前記ＭＳＩメッセージにおけるデバイスＩＤに従って、前記ＰＣＩｅ装置から前記ＰＣＩｅ装置のレーンネゴシエーション能力値Ｍ及び前記現在レーン幅値Ｎを取得し、ＮとＭ／２とを比較し、Ｎ＜Ｍ／２であるとき、レーン反転処理を実行するよう前記ＰＣＩｅ装置に指示するよう構成され、
前記ＰＣＩｅ装置は更に、前記ＣＰＵにより送信されたレーン反転処理を実行する指示を受信した後に、前記ＰＣＩｅ装置と前記下流のＰＣＩｅ装置との間のリンクに対して前記レーン反転処理を実行し、新たな現在レーン幅値Ｎ’を取得するため、前記下流のＰＣＩｅ装置とネゴシエートするよう構成されるシステム。
【請求項１０】
Ｎ＜Ｍ／２であるとき、前記ＣＰＵは更に、前記ＰＣＩｅ装置と前記下流のＰＣＩｅ装置との間のリンクのレーン番号０からレーン番号（Ｍ／２−１）までを無効にするよう構成される、請求項９記載の処理システム。
【請求項１１】
ＰＣＩｅリンク故障を処理するＰＣＩｅ装置５０３であって、前記ＰＣＩｅ装置５０３は、検出モジュール５０３１、ＭＳＩモジュール５０３３、ネゴシエートモジュール５０３５、レジスタ５０３７及びレーン反転モジュール５０３９を有し、
前記レジスタ５０３７は、前記ＰＣＩｅ装置の現在レーン幅値Ｎ及びレーンネゴシエーション能力値Ｍを格納し、
前記検出モジュール５０３１は、前記ＰＣＩｅ装置５０３と下流のＰＣＩｅ装置との間のリンク５０４の通信状態をモニタリングし、前記リンク５０４のレーンにおいて故障が発生したと検出すると、レーン故障指示メッセージを前記ＭＳＩモジュール５０３３に送信するよう構成され、
前記ＭＳＩモジュール５０３３は、前記検出モジュール５０３１により送信された前記レーン故障指示メッセージを受信した後に、ＭＳＩメッセージを中央処理ユニットＣＰＵ５０１に送信するよう構成され、前記ＭＳＩメッセージは前記ＰＣＩｅ装置５０３のデバイスＩＤを含み、
前記ネゴシエートモジュール５０３５は、前記ＰＣＩｅ装置と前記下流のＰＣＩｅ装置との間のリンクのレーン幅をネゴシエートするよう構成され、
前記レーン反転モジュール５０３９は、前記ＣＰＵにより送信されたレーン反転処理を実行する指示を受信した後に、前記ＰＣＩｅ装置と前記下流のＰＣＩｅ装置の間のリンクのレーンに対して前記レーン反転処理を実行するよう構成されるＰＣＩｅ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ伝送技術の分野に関し、特にＰＣＩｅリンク故障を処理する方法、装置及びシステムに関する。
【背景技術】
【０００２】
現在、データ伝送技術の分野では、ＰＣＩｅ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｐｒｅｓｓ、ペリフェラル・コンポーネント・インターコネクト・エクスプレス）プロトコルが広く適用されてきた。ＰＣＩｅプロトコルが装置に適用されるとき、データ伝送はポイント・ツー・ポイント形式により装置間で実行される。ＰＣＩｅプロトコルを利用することによってデータ伝送を実行する装置は、ＰＣＩｅ装置として総称される。システムでは、リンク接続は、シリアライザ／デ・シリアライザ（ｓｅｒｄｅｓ，Ｓｅｒｉａｌｉｚｅｒ／Ｄｅ−Ｓｅｒｉａｌｉｚｅｒ）回路を利用することによって、２つのＰＣＩｅ装置の間の通信のため実現可能である。２つのＰＣＩｅ装置がデータ伝送を実行するとき、データ伝送は、ネゴシエートされたレートによりｓｅｒｄｅｓを利用することによって実行される。２つのＰＣＩｅ装置の間のリンクは、１，２，４，８，１６又は３２個のｓｅｒｄｅｓを含むものであってもよい。複数のｓｅｒｄｅｓがあるとき、これらのｓｅｒｄｅｓは連続する数字を昇順に利用することによって、逐次的に番号付けされる。１つのｓｅｒｄｅｓはリンクの１つのレーン（ｌａｎｅ）であり、ｓｅｒｄｅｓ番号はレーン番号として参照される。
【０００３】
２つのＰＣＩｅ装置の間のデータ伝送の帯域幅（Ｗ）は、レーン数（Ｎ）とネゴシエートされたレート（Ｓ）との積に等しく、すなわち、帯域幅の式はＷ＝Ｎ×Ｓである。２つのＰＣＩｅ装置の間のリンクのネゴシエートされたレート（Ｓ）は、使用されるＰＣＩｅプロトコルのバージョンにより変わり、現在、１秒間に１つの回路により伝送可能なデータの容量を示す、ＧＥＮ１（２．５  ＧＴ／ｓ）、ＧＥＮ２（５．０  ＧＴ／ｓ）、ＧＥＮ３（８．０  ＧＴ／ｓ）及びＧＥＮ４（１６．０  ＧＴ／ｓ）である４つのタイプのネゴシエートされたレートがある。一般に、１つのＰＣＩｅ装置のリンクによりサポートされるネゴシエートされたレート（Ｓ）は固定され、この場合、通信帯域幅（Ｗ）のますます高くなるユーザ要求を充たすため、帯域幅は、リンクのレーン数（Ｎ）を増やすことによってしか改善できない。
【０００４】
２つのＰＣＩｅ装置がデータを送信するとき、２つのＰＣＩｅ装置の間のリンクの全てのレーンが同時に利用される必要がある。レーンの１つにおいて故障が発生した場合、データ伝送が中断される。従来技術では、ＰＣＩｅ装置に接続されるレーンにおいて故障が発生すると、ＰＣＩｅ装置は、ＰＣＩｅプロトコルの再ネゴシエーション機構に従ってリンクネゴシエーションを実行する。リンクネゴシエーション中、ネゴシエーションは、最小のレーン番号のレーンから始まって実行され、リンクネゴシエーションは、レーン番号の昇順に逐次的に実行される。レーン番号の昇順にリンク再ネゴシエーションを連続的に実行する方式は、上方ネゴシエーションとして参照される。例えば、ＧＥＮ２のレート及び１６のリンク幅（ＰＣＩｅ２．０×１６）について当初にネゴシエートする必要があるＰＣＩｅ装置のレーン番号２において故障が発生すると、ＰＣＩｅ装置は、ＰＣＩｅプロトコルの再ネゴシエーション機構に従って、レーン番号０から始まって上方にリンクネゴシエーションを実行する。ネゴシエーションは、レーン番号２における故障のためレーン番号２に対して逐次的に実行することができず、レーン番号０からレーン番号１までネゴシエーションが実行された後、リンクネゴシエーションは継続できない。この場合、ネゴシエーションは２つのレーン、レーン番号０及びレーン番号１のみに対して実行が成功し、すなわち、データ伝送はレーン番号０及びレーン番号１においてしか継続できない。ＰＣＩｅプロトコルに規定される２つのＰＣＩｅ装置の間のリンクのレーン幅によると、２つのＰＣＩｅ装置の間のリンクのレーン幅は、再ネゴシエーションにより取得される２であり、すなわち、２つのレーンしかデータを送信するためＰＣＩｅ装置に提供することはできない。この場合、帯域幅の式におけるＮは元の１６から２に変更され、ＰＣＩｅ装置の間のデータ伝送の性能は、元の性能の１／８にすぎない。しかしながら、レーン番号１において故障が発生した場合、上記の再ネゴシエーション方法によると、１つのレーンしかネゴシエートできず、この場合、データ伝送性能は、元の性能の１／１６にすぎない。
【０００５】
従来技術では、ＰＣＩｅ装置の間のリンクのレーンにおいて故障が発生すると、リンクのレーン幅の再ネゴシエーションは、故障したレーンのレーン番号によって大きく制限され、再ネゴシエーションにより取得されるレーン幅に関する不確実性とレーン幅が大きく減少するケースとを導き、レーンのデータ伝送性能に重大な影響を与える。
【発明の概要】
【０００６】
これを鑑み、本発明は、故障が発生するレーンのレーン番号の制限のため、再ネゴシエーションにより取得されたレーン幅において不確実性が存在し、レーン幅が大きく減少するケースが発生するかもしれず、レーンの伝送性能に重大な影響を与える従来技術における問題を解決するため、ＰＣＩｅリンク故障を処理する方法、装置及びシステムを提供する。
【０００７】
本発明の第１の態様は、ＰＣＩｅリンク故障を処理する方法であって、
ＰＣＩｅ装置が、前記ＰＣＩｅ装置と下流のＰＣＩｅ装置との間のリンクのレーンにおいて故障が発生したと検出し、メッセージ・シグナルド・インタラプトＭＳＩメッセージを中央処理ユニットＣＰＵに送信するステップであって、前記ＭＳＩメッセージは前記ＰＣＩｅ装置のデバイスＩＤを有する、送信するステップと、
前記ＰＣＩｅ装置が、現在レーン幅値Ｎを取得するため、前記下流のＰＣＩｅ装置とネゴシエートするステップと、
前記ＣＰＵが、前記受信したＭＳＩメッセージにおけるデバイスＩＤに従って、前記ＰＣＩｅ装置から前記ＰＣＩｅ装置のレーンネゴシエーション能力値Ｍ及び前記現在レーン幅値Ｎを取得するステップと、
前記ＣＰＵが、ＮとＭ／２とを比較するステップと、
Ｎ＜Ｍ／２である場合、前記ＣＰＵが、レーン反転処理を実行するよう前記ＰＣＩｅ装置に指示するステップと、
前記ＰＣＩｅ装置が、前記ＰＣＩｅ装置と前記下流のＰＣＩｅ装置との間のリンクに対して前記レーン反転処理を実行するステップと、
前記ＰＣＩｅ装置が、新たな現在レーン幅値Ｎ’を取得するため、前記下流のＰＣＩｅ装置とネゴシエートし、Ｎ’個のレーンを利用することによって前記下流のＰＣＩｅ装置とのデータ伝送を実行し続けるステップと、
を有する方法を提供する。
【０００８】
第１の態様の第１の可能な実現方式では、当該方法は更に、Ｎ≧Ｍ／２である場合、前記ＰＣＩｅ装置が、ネゴシエーションにより取得されたＮ個のレーンを利用することによって、前記下流のＰＣＩｅ装置とのデータ伝送を実行し続けるステップを有する。
【０００９】
第１の態様又は第１の態様の第１の可能な実現方式を参照して、第２の可能な実現方式では、Ｎ＜Ｍ／２である場合、当該方法は更に、前記ＣＰＵが、前記ＰＣＩｅ装置と前記下流のＰＣＩｅ装置との間のリンクのレーン番号０からレーン番号（Ｍ／２−１）までを無効にするステップを有する。
【００１０】
本発明の第２の態様は、ＰＣＩｅリンク故障を処理する方法であって、
ＰＣＩｅ装置により報告されたメッセージ・シグナルド・インタラプトＭＳＩメッセージを受信するステップであって、前記ＭＳＩメッセージは前記ＰＣＩｅ装置のデバイスＩＤを有する、受信するステップと、
前記デバイスＩＤに従って前記ＰＣＩｅ装置から前記ＰＣＩｅ装置のレーンネゴシエーション能力値Ｍ及び現在レーン幅値Ｎを取得するステップであって、前記現在レーン幅値Ｎは、前記ＰＣＩｅ装置が下流のＰＣＩｅ装置とネゴシエートすることによって取得される、取得するステップと、
ＮとＭ／２とを比較するステップと、
Ｎ＜Ｍ／２である場合、レーン反転処理を実行するよう前記ＰＣＩｅ装置に指示するステップと、
を有する方法を提供する。
【００１１】
第２の態様の第１の可能な実現方式では、Ｎ＜Ｍ／２である場合、当該方法は更に、前記ＰＣＩｅ装置と前記下流のＰＣＩｅ装置との間のリンクのレーン番号０からレーン番号（Ｍ／２−１）までを無効にするステップを有する。
【００１２】
第２の態様又は第２の態様の第１の可能な実現方式を参照して、第２の可能な実現方式では、前記ＰＣＩｅ装置のレーンネゴシエーション能力値Ｍは、前記ＰＣＩｅ装置と前記下流のＰＣＩｅ装置との間のリンクのレーンの合計数に等しい。
【００１３】
本発明の第３の態様は、ＰＣＩｅリンク故障を処理する方法であって、
ＰＣＩｅ装置が、前記ＰＣＩｅ装置と下流のＰＣＩｅ装置との間のリンクのレーンにおいて故障が発生したと検出し、メッセージ・シグナルド・インタラプトＭＳＩメッセージを中央処理ユニットＣＰＵに送信するステップであって、前記ＭＳＩメッセージは前記ＰＣＩｅ装置のデバイスＩＤを有する、送信するステップと、
現在レーン幅値Ｎを取得するため、前記下流のＰＣＩｅ装置とネゴシエートするステップと、
前記ＣＰＵにより送信されたレーン反転処理を実行する指示を受信し、前記ＰＣＩｅ装置と前記下流のＰＣＩｅ装置との間のリンクに対して前記レーン反転処理を実行するステップと、
新たな現在レーン幅値Ｎ’を取得するため、前記下流のＰＣＩｅ装置とネゴシエートし、Ｎ’個のレーンを利用することによって前記下流のＰＣＩｅ装置とのデータ伝送を実行し続けるステップと、
を有する方法を提供する。
【００１４】
第３の態様の第１の可能な実現方式では、前記ＰＣＩｅ装置が前記ＣＰＵにより送信されたレーン反転処理を実行する指示を所定の時間内に受信しなかった場合、前記ＰＣＩｅ装置が、Ｎ個のレーンを利用することによって、前記下流のＰＣＩｅ装置とのデータ伝送を実行し続ける。
【００１５】
本発明の第４の態様は、ＰＣＩｅリンク故障を処理するシステムであって、当該システムは、中央処理ユニットＣＰＵ、ＰＣＩｅ装置及び下流のＰＣＩｅ装置を有し、前記ＣＰＵは前記ＰＣＩｅ装置に接続され、前記ＰＣＩｅ装置はリンクを利用することによって前記下流のＰＣＩｅ装置に接続され、
前記ＰＣＩｅ装置は、前記ＰＣＩｅ装置と前記下流のＰＣＩｅ装置との間のリンクのレーンにおいて故障が発生したか検出し、故障が発生すると、メッセージ・シグナルド・インタラプトＭＳＩメッセージを前記ＣＰＵに報告するよう構成され、前記ＭＳＩメッセージは前記ＰＣＩｅ装置のデバイスＩＤを有し、前記ＰＣＩｅ装置は更に、現在レーン幅値Ｎを取得するため、前記下流のＰＣＩｅ装置とネゴシエートするよう構成され、
前記ＣＰＵは、前記ＭＳＩメッセージにおけるデバイスＩＤに従って、前記ＰＣＩｅ装置から前記ＰＣＩｅ装置のレーンネゴシエーション能力値Ｍ及び前記現在レーン幅値Ｎを取得し、ＮとＭ／２とを比較し、Ｎ＜Ｍ／２であるとき、レーン反転処理を実行するよう前記ＰＣＩｅ装置に指示するよう構成され、
前記ＰＣＩｅ装置は更に、前記ＣＰＵにより送信されたレーン反転処理を実行する指示を受信した後に、前記ＰＣＩｅ装置と前記下流のＰＣＩｅ装置との間のリンクに対して前記レーン反転処理を実行し、新たな現在レーン幅値Ｎ’を取得するため、前記下流のＰＣＩｅ装置とネゴシエートするよう構成されるシステムを提供する。
【００１６】
第４の態様の第１の可能な実現方式では、Ｎ＜Ｍ／２であるとき、前記ＣＰＵは更に、前記ＰＣＩｅ装置と前記下流のＰＣＩｅ装置との間のリンクのレーン番号０からレーン番号（Ｍ／２−１）までを無効にするよう構成される。
【００１７】
本発明の第５の態様は、ＰＣＩｅリンク故障を処理するＰＣＩｅ装置であって、検出モジュール５０３１、ＭＳＩモジュール５０３３、ネゴシエートモジュール５０３５、レジスタ５０３７及びレーン反転モジュール５０３９を有し、
前記レジスタ５０３７は、前記ＰＣＩｅ装置の現在レーン幅値Ｎ及びレーンネゴシエーション能力値Ｍを格納し、
前記検出モジュール５０３１は、前記ＰＣＩｅ装置５０３と下流のＰＣＩｅ装置との間のリンク５０４の通信状態をモニタリングし、前記リンク５０４のレーンにおいて故障が発生したと検出すると、レーン故障指示メッセージを前記ＭＳＩモジュール５０３３に送信するよう構成され、
前記ＭＳＩモジュール５０３３は、前記検出モジュール５０３１により送信された前記レーン故障指示メッセージを受信した後に、ＭＳＩメッセージを中央処理ユニットＣＰＵ５０１に送信するよう構成され、前記ＭＳＩメッセージは前記ＰＣＩｅ装置５０３のデバイスＩＤを含み、
前記ネゴシエートモジュール５０３５は、前記ＰＣＩｅ装置と前記下流のＰＣＩｅ装置との間のリンクのレーン幅をネゴシエートするよう構成され、
前記レーン反転モジュール５０３９は、前記ＣＰＵにより送信されたレーン反転処理を実行する指示を受信した後に、前記ＰＣＩｅ装置と前記下流のＰＣＩｅ装置の間のリンクのレーンに対して前記レーン反転処理を実行するよう構成されるＰＣＩｅ装置を提供する。
【００１８】
従来技術と比較して、本発明は、ＰＣＩｅリンク故障を処理する方法、装置及びシステムを開示し、ＰＣＩｅ装置の現在レーン幅値とレーンネゴシエーション能力値Ｍとを比較することによって、当該方法は、ＰＣＩｅ装置のレーン幅が、故障が発生したレーンのレーン番号に関わらず、レーンネゴシエーション能力値の半分を維持することを保証することができることが、上記の技術的方策からわかる。本発明において開示されるＰＣＩｅリンク故障を処理する方法、装置及びシステムは、リンク再ネゴシエーションに課せられる故障したレーンのレーン番号の制限を大きく緩和し、これにより、最適なリンク幅が再ネゴシエーションの後に達成できる。
【図面の簡単な説明】
【００１９】
本発明の実施例又は従来技術における技術的方策をより明確に説明するため、以下において、実施例又は従来技術を説明するのに必要な添付図面が簡単に紹介される。明らかに、以下の説明における添付図面は本発明の単なる実施例を示し、当業者は、提供された添付図面から他の図面を依然として導出してもよい。
【図１】図１は、本発明の実施例において開示されるＰＣＩｅ装置の間の接続の概略図である。
【図２】図２は、本発明の実施例において開示されるＰＣＩｅ装置の間の接続の簡略化された概略図である。
【図３】図３は、本発明の実施例において開示されるＰＣＩｅ装置の間の他の接続の簡略化された概略図である。
【図４】図４は、本発明の実施例において開示されるＰＣＩｅ装置のリンク故障を処理する方法のフローチャートである。
【図５】図５は、本発明の実施例において開示されるＰＣＩｅ装置の概略的な構成図である。
【発明を実施するための形態】
【００２０】
以下は、本発明の実施例における添付図面を参照して本発明の実施例における技術的方策を明確且つ完全に説明する。明らかに、説明される実施例は、本発明の実施例の全てでなく単に一部である。
【００２１】
本発明は、ＰＣＩｅ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｐｒｅｓｓ、ペリフェラル・コンポーネント・インターコネクト・エクスプレス）装置のリンク故障を処理する新規な方法を提供する。ＰＣＩｅプロトコルを利用することによってデータ伝送を実行する装置は、ＰＣＩｅ装置として総称される。ＰＣＩｅ装置は、独立した装置に統合されるチップであってもよいし、又は物理的に独立した装置であってもよいし、ここでは限定されない。ＰＣＩｅ装置の間の接続関係について、図１が参照されてもよい。図１に示されるように、２つのＰＣＩｅ装置はデータ伝送を実行するため直接接続されてもよく、例えば、ルートコンプレクス（ｒｏｏｔ  ｃｏｍｐｌｅｘ）装置の下流のポートは、ルートコンプレクスとＰＣＩｅ装置１との間のデータ伝送を実現するため、ＰＣＩｅ装置１の上流のポートに直接接続される。データ伝送はまた、例えば、スイッチを利用することによってデータ伝送を実現するなど、２つのＰＣＩｅ装置の間で間接的に実行されてもよい。例えば、ルートコンプレクスの下流のポートはスイッチの上流のポートに接続され、スイッチの下流のポートは、ルートコンプレクスとＰＣＩｅ装置２との間のデータ伝送を実現するため、ＰＣＩｅ装置２の上流のポートに接続される。１つのＰＣＩｅ装置は複数のＰＣＩｅ装置に同時に接続されてもよく、図１に示されるように、ルートコンプレクスは、ＰＣＩｅ装置１及びスイッチに同時に接続される。これらのＰＣＩｅ装置は、中央化された方式により中央処理ユニットＣＰＵによって管理されてもよい。
【００２２】
データ伝送はリンク接続によって２つのＰＣＩｅ装置の間で実現され、リンクはシリアライザ／デ・シリアライザ（ｓｅｒｄｅｓ，Ｓｅｒｉａｌｉｚｅｒ／Ｄｅ−Ｓｅｒｉａｌｉｚｅｒ）回路であってもよい。例えば、ルートコンプレクスの下流のポートは、複数のｓｅｒｄｅｓを利用することによってＰＣＩｅ装置１の上流のポートに接続され、これらのｓｅｒｄｅｓは、ルートコンプレクスとＰＣＩｅ装置１との間のリンクを形成する。２つのＰＣＩｅ装置の間には１，２，４，８，１６又は３２個のｓｅｒｄｅｓがあってもよく、２つのＰＣＩｅ装置の間のｓｅｒｄｅｓは２つのＰＣＩｅ装置の間のリンクを形成する。２つのＰＣＩｅ装置の間のデータ伝送の帯域幅（Ｗ）は、レーン数（Ｎ）とネゴシエートされたレート（Ｓ）との積に等しく、すなわち、帯域幅の式はＷ＝Ｎ×Ｓである。２つのＰＣＩｅ装置の間のリンクのネゴシエートされたレート（Ｓ）は、利用されるＰＣＩｅプロトコルのバージョンによって変わり、現在、１秒間に１つの回路により伝送可能なデータの容量を示すＧＥＮ１（２．５  ＧＴ／ｓ）、ＧＥＮ２（５．０  ＧＴ／ｓ）、ＧＥＮ３（８．０  ＧＴ／ｓ）及びＧＥＮ４（１６．０  ＧＴ／ｓ）である４つのタイプのネゴシエートされたレートがある。一般に、１つのＰＣＩｅ装置のリンクによりサポートされるネゴシエートされたレート（Ｓ）は固定され、この場合、通信帯域幅（Ｗ）のますます高くなるユーザ要求を充たすため、帯域幅は、リンクのレーン数（Ｎ）を増やすことによってしか改善できない。
【００２３】
複数のｓｅｒｄｅｓがあるとき、これらのｓｅｒｄｅｓは、昇順に連続する数字を利用することによって逐次的に番号付けされ、この場合、１つｓｅｒｄｅｓは２つのＰＣＩｅ装置の間のリンクのレーン（ｌａｎｅ）であり、ｓｅｒｄｅｓ番号はレーン番号として参照される。例えば、図１に示されるルートコンプレクスとＰＣＩｅ装置１との間のレーンは、０から１５までの数字を利用することによって、左から右に逐次的に番号付けされる。ここに説明されるｓｅｒｄｅｓは、既存のｓｅｒｄｅｓ構造を利用し、既存の機能をサポートし、ここでは別には再説明されない。
【００２４】
２つのＰＣＩｅ装置が接続されるとき、リンクネゴシエーションを開始した一方のＰＣＩｅ装置が上流のＰＣＩｅ装置として参照され、当該一方のＰＣＩｅ装置に接続された他方が下流のＰＣＩｅ装置として参照される。図１に示されるように、ルートコンプレクス及びＰＣＩｅ装置１が接続されるとき、ルートコンプレクスが上流のＰＣＩｅ装置であり、ＰＣＩｅ装置１が下流のＰＣＩｅ装置である。ルートコンプレクス及びスイッチが接続されるとき、ルートコンプレクスが上流のＰＣＩｅ装置であり、スイッチが下流のＰＣＩｅ装置である。スイッチは更にＰＣＩｅ装置２に接続され、この場合、スイッチが上流のＰＣＩｅ装置であり、ＰＣＩｅ装置２が下流のＰＣＩｅ装置である。１つのＰＣＩｅ装置が複数のＰＣＩｅ装置に同時に接続されるとき、データ伝送は、独立したリンクを利用することによって、当該１つのＰＣＩｅ装置と他の全てのＰＣＩｅ装置との間で実行される。例えば、ＰＣＩｅスイッチがＰＣＩｅ装置２及びＰＣＩｅ装置３に同時に接続され、リンク１を利用することによって、ＰＣＩｅスイッチとＰＣＩｅ装置２との間のデータ伝送が実現され、リンク２を利用することによって、スイッチとＰＣＩｅ装置３との間のデータ伝送が実現される。リンク１及びリンク２は互いに独立して存在し、互いに影響を与えない。リンク１及びリンク２のレーン数は、同じであってもよいし、又は異なるものであってもよい。しかしながら、データ伝送は、同じ方式によりリンクを利用することによってＰＣＩｅ装置の間で実行される。以下において、２つのＰＣＩｅ装置の間のリンクにおいて実行される故障を処理する方法の具体例を利用することによって説明が与えられる。
【００２５】
全体的な処理をより明確且つより明示的にするため、図２に示されるように、２つのＰＣＩｅ装置の間の接続関係が簡単化され、ここで、第１ＰＣＩｅ装置は、上流のＰＣＩｅ装置であり、第２ＰＣＩｅ装置とのレーンネゴシエーションを実行する。第２ＰＣＩｅ装置は、下流のＰＣＩｅ装置である。中央処理ユニットＣＰＵは、２つのＰＣＩｅ装置を管理する。第１ＰＣＩｅ装置と第２ＰＣＩｅ装置との間のリンクは１６個のｓｅｒｄｅｓを含み、各ｓｅｒｄｅｓは、第１ＰＣＩｅ装置と第２ＰＣＩｅ装置との間のリンクのレーンであり、１６個のレーンは、左から右に０から始まって１５まで連続的に番号付けされる。図２に示されるように、番号０のレーンはレーン番号０として参照され、番号１のレーンはレーン番号１として参照され、同様に、番号１５のレーンはレーン番号１５である。ここでのレーン数は、説明のためだけに利用される。実際の利用では、１，２，４，８又は３２個のレーンが要求に従って設定されてもよく、それの実現原理は、１６個のレーンの実現原理と同じである。
【００２６】
メッセージ・シグナルド・インタラプト（ＭＳＩ，ｍｅｓｓａｇｅ  ｓｉｇｎａｌ  ｉｎｔｅｒｒｕｐｔ）機能が、第１ＰＣＩｅ装置に設定される。第１ＰＣＩｅ装置と第２ＰＣＩｅ装置との間に接続されるリンクの１以上のレーンにおいて故障が発生したと検出すると、第１ＰＣＩｅ装置は、ＭＳＩメッセージをＣＰＵに報告し、ここで、ＭＳＩメッセージは第１ＰＣＩｅ装置のデバイスＩＤを含む。第１ＰＣＩｅ装置は、故障したレーンのレーン番号をレジスタに記憶する。第１ＰＣＩｅ装置は、第１ＰＣＩｅ装置と第２ＰＣＩｅ装置との間のリンクの現在レーン幅値Ｎを取得するため、ＰＣＩｅプロトコルの再ネゴシエーション機構に従って第２ＰＣＩｅ装置とのレーン再ネゴシエーションを実行する。レーン再ネゴシエーション中、ＰＣＩｅに規定されるレーンネゴシエーション機構に従って、第１ＰＣＩｅ装置は、ネゴシエーションが故障したレーンに対して実行されるまで、最小のレーン番号のレーンから開始してレーン番号の昇順に上方に第２ＰＣＩｅ装置とのリンクネゴシエーションを連続的に実行する。故障したレーンに対するネゴシエーションの実行は成功できないため、再ネゴシエーション処理は終了する。第１ＰＣＩｅ装置は更に、ＰＣＩｅプロトコルに指定される２つのＰＣＩｅ装置の間のリンクのレーン数に従って、リンクの現在レーン幅値Ｎを決定する。レーン番号は連続的である必要があり、リンクネゴシエーションは最小の番号のレーンから開始されるため、再ネゴシエーションにより取得されたレーン数は故障したレーンのレーン番号によって変わり、不確実性が存在する。故障したレーンのレーン番号が相対的に小さいとき、再ネゴシエーションにより取得されたレーン数もまた大きく減少し、すなわち、取得された現在レーン幅値Ｎは大きく減少し、これにより、２つのＰＣＩｅ装置の間のデータ伝送の性能に重大な影響を与える。例えば、第１ＰＣＩｅ装置と第２ＰＣＩｅ装置との間のレーン番号３において故障が発生すると、第１ＰＣＩｅ装置は、ＰＣＩｅプロトコルのネゴシエーション機構に従って、レーン番号０から開始して、第２ＰＣＩｅ装置とのリンクネゴシエーションを実行する。レーン番号０には故障は発生しておらず、従って、ネゴシエーションは成功し、ネゴシエーションはレーン番号１に進み、レーン番号１におけるネゴシエーションは成功し、ネゴシエーションはレーン番号２に進み、レーン番号２におけるネゴシエーションは成功し、ネゴシエーションはレーン番号３に進む。レーン番号において故障が発生するため、ネゴシエーションの実行は成功できない。さらに、レーン番号は連続的である必要があり、ネゴシエーションはレーン番号３において中断した後に継続できなくなる。この場合、３つのレーンのみ、すなわち、レーン番号０、レーン番号１及びレーン番号２が利用可能である。さらに、２つのＰＣＩｅ装置の間のリンクはＰＣＩｅプロトコルに従って１，２，４，８，１６又は３２個のレーンを含みうるため、第１ＰＣＩｅ装置と第２ＰＣＩｅ装置との間のネゴシエーションにより取得される現在レーン幅値Ｎは２である。当初は、データ伝送を実行するのに利用可能な第１ＰＣＩｅ装置と第２ＰＣＩｅ装置との間のレーンは１６個あるが、レ��ン番号３において故障が発生した後、再ネゴシエーションにより取得され、データ伝送を実行するのに利用可能であるレーンは２つしかなく、これは当初の１／８である。この場合、第１ＰＣＩｅ装置と第２ＰＣＩｅ装置との間のリンクのレーン幅は大きく減少し、データ伝送性能は明らかに低下する。第１ＰＣＩｅ装置と第２ＰＣＩｅ装置との間のレーン番号１において故障が発生した場合、同様に、レーン番号０しか利用可能でない。この場合、第１ＰＣＩｅ装置と第２ＰＣＩｅ装置との間の再ネゴシエーションにより取得される現在レーン幅値Ｎは１であり、当初の１／１６であり、データ伝送性能は大きく低下する。
【００２７】
本発明の本実施例では、第１ＰＣＩｅ装置により報告されたＭＳＩメッセージを受信した後に、ＣＰＵはインタラプト処理プロセスに入る。ＣＰＵは、ＭＳＩメッセージにおける第１ＰＣＩｅ装置のデバイスＩＤに従って、第１ＰＣＩｅ装置から第１ＰＣＩｅ装置の現在レーン幅値Ｎ及び第１ＰＣＩｅ装置のレーンネゴシエーション能力値Ｍを取得する。第１ＰＣＩｅ装置のレーンネゴシエーション能力値Ｍは、第１ＰＣＩｅ装置が第２ＰＣＩｅ装置とネゴシエートすることによって取得可能な最大レーン幅値を表す。第１ＰＣＩｅ装置によるネゴシエートにより取得可能な最大レーン幅値は、第１ＰＣＩｅ装置と第２ＰＣＩｅ装置との間のリンクのレーンの合計数である。本実施例では、第１ＰＣＩｅ装置と第２ＰＣＩｅ装置との間のリンクのレーンは１６個あり、従って、第１ＰＣＩｅ装置が第２ＰＣＩｅ装置とネゴシエートすることにより取得可能な最大レーン幅値は１６であり、第１ＰＣＩｅ装置のレーンネゴシエーション能力値Ｍは１６である。第１ＰＣＩｅ装置の現在レーン幅値Ｎは、第１ＰＣＩｅ装置が第２ＰＣＩｅ装置と再ネゴシエートすることにより取得される現在レーン幅値Ｎである。例えば、上述されるように、第１ＰＣＩｅ装置及び第２ＰＣＩｅ装置を接続する１６個のレーンがあり、第１ＰＣＩｅ装置と第２ＰＣＩｅ装置との間のレーン番号３において故障が発生すると、第１ＰＣＩｅ装置は、２である現在レーン幅値Ｎを取得するため、ＰＣＩｅプロトコルの再ネゴシエーション機構に従って第２ＰＣＩｅ装置と再ネゴシエートする。
【００２８】
ＣＰＵは、第１ＰＣＩｅ装置の取得した現在レーン幅値Ｎとレーンネゴシエーション能力値Ｍとを比較する。本発明では、ＣＰＵは、２つのＰＣＩｅ装置の間のリンクのレーン数の規則に従って、ＮとＭ／２とを比較する。
【００２９】
Ｎ≧Ｍ／２である場合、ＣＰＵは処理を実行しない。第１ＰＣＩｅ装置がＣＰＵにより送信された指示を所定の時間内に受信しない場合、第１ＰＣＩｅ装置は、再ネゴシエーションにより取得されたＮ個のレーンを利用することによって、第２ＰＣＩｅ装置とのデータ伝送を実行し続ける。この場合、Ｎ≧Ｍ／２は、故障したレーンのレーン番号が（Ｍ／２−１）より大きいことを示しており、２つのＰＣＩｅ装置の間のリンクは１，２，４，８，１６又は３２個のレーンを含みうるため、第１ＰＣＩｅ装置が第２ＰＣＩｅ装置と再ネゴシエートすることによって取得される現在レーン幅値ＮはＭ／２であり、第１ＰＣＩｅ装置は、再ネゴシエーションにより取得されるリンクレーンを利用することによって、第２ＰＣＩｅ装置とのデータ伝送を実行し続ける。
【００３０】
Ｎ＜Ｍ／２である場合、ＣＰＵは、第１ＰＣＩｅ装置と第２ＰＣＩｅ装置との間のリンクに対してレーン反転処理を実行するよう第１ＰＣＩｅ装置に指示する。Ｎ＜Ｍ／２であるとき、第１ＰＣＩｅ装置が第２ＰＣＩｅ装置と再ネゴシエートすることにより取得される現在レーン幅は、トータルのリンク幅の半分未満であり、これは、故障したレーンのレーン番号がＭ／２未満であることを示す。レーン反転処理は、第１ＰＣＩｅ装置が第１ＰＣＩｅ装置と第２ＰＣＩｅ装置との間のリンクのレーンを反対方向に再番号付けすることを示す。第１ＰＣＩｅ装置と第２ＰＣＩｅ装置との間のリンクのレーンが当初は左から右に０から始まって１５まで番号付けされている場合、ＰＣＩｅ装置がレーン反転処理を実行した後、第１ＰＣＩｅ装置と第２ＰＣＩｅ装置との間のリンクのレーンは右から左に０から１５まで番号付けされ、逆の場合も同様である。例えば、本実施例では、第１ＰＣＩｅ装置がレーン反転処理を実行した後、元のレーン番号１５のレーン番号は１５から０に変更され、すなわち、元のレーン番号１５はレーン番号０に変更され、元のレーン番号１４のレーン番号は１４から１に変更され、すなわち、元のレーン番号１４はレーン番号１に変更され、残りは同様に導くことができる。レーン反転処理を実行するよう第１ＰＣＩｅ装置に指示する前に、ＣＰＵは更に、第１ＰＣＩｅ装置と第２ＰＣＩｅ装置との間のレーン番号０からレーン番号（Ｍ／２−１）を無効にしてもよい。レーン番号０からレーン番号（Ｍ／２−１）が無効にされた後、第１ＰＣＩｅ装置は、無効にされたレーンをもはや番号付けする必要はない。この場合、第１ＰＣＩｅ装置は、元のレーン番号Ｍ／２のレーン番号が（Ｍ／２−１）に変更されるまで、レーン反転処理を実行し、元のレーン番号Ｍのレーン番号を０に変更し、元のレーン番号（Ｍ−１）のレーン番号を１に変更するなど行う。
【００３１】
レーン反転処理を実行した後、第１ＰＣＩｅ装置は、新たな現在レーン幅値Ｎ’を取得するため、第２ＰＣＩｅ装置との新たな現在レーン幅値に対して再ネゴシエーションを実行する。第１ＰＣＩｅ装置が第２ＰＣＩｅ装置と現在レーン幅を再ネゴシエートするための方法は、上記の再ネゴシエーション方法と同じである。ＰＣＩｅプロトコルの要求に従って、第１ＰＣＩｅ装置は、反転後の最小の番号のレーンから開始してネゴシエーションを実行し、レーン番号の昇順により上方に連続的に第２ＰＣＩｅ装置とのリンクネゴシエーションを再実行する。すなわち、第１ＰＣＩｅ装置は反転されたレーン番号０から始まるネゴシエーションを実行し、その後、ネゴシエーションがレーン番号（Ｍ／２−１）に対して実行されるまで、レーン番号１及びレーン番号２に対して逐次的にネゴシエーションを実行する。第１ＰＣＩｅ装置は、Ｎ＜Ｍ／２の場合にはレーン反転処理を実行し、この場合、故障したレーンのレーン番号はＭ／２未満であり、すなわち、故障したレーンは、レーン番号０からレーン番号（Ｍ／２−１）までの１つであり、レーン番号０からレーン番号（Ｍ／２−１）までは無効とされるが、レーン番号Ｍ／２からレーン番号Ｍにおいて故障は発生せず、データ伝送が実行可能である。従って、第１ＰＣＩｅ装置がレーン反転を実行した後、新たなレーン番号０からレーン番号（Ｍ／２−１）において故障は発生せず、第１ＰＣＩｅ装置が第２ＰＣＩｅ装置と再ネゴシエートすることにより取得される新たな現在レーン幅値Ｎ’はＭ／２である。
【００３２】
ＰＣＩｅ装置のレーンにおいて故障が発生すると、本発明の方策を利用することは、再ネゴシエーションにより取得されるレーン幅が、故障したレーンのレーン番号に関わらず、元のレーン幅の１／２であることを保証することが可能であり、故障したレーンのレーン番号が相対的に小さいとき、ＰＣＩｅ装置のレーン値が大きく減少し、これにより、ＰＣＩｅ装置の間のデータ伝送速度が影響を受けることを回避する。
【００３３】
本発明の技術的方策が、特定の具体例を利用することによって以下において詳細に記載及び説明される。ＰＣＩｅ装置の間の接続関係が図３に示され、方法の処理については、図４を参照されたい。
【００３４】
以下に説明されるＰＣＩｅ装置は、ＰＣＩｅプロトコルを利用することによって他の装置と通信する装置を参照する。図３に示されるように、ルートコンプレクス（ｒｏｏｔ  ｃｏｍｐｌｅｘ）装置は、ＰＣＩｅプロトコルを利用することによって下流のＰＣＩｅ装置と通信するＰＣＩｅ装置、すなわち、図２に示される第１ＰＣＩｅ装置などの上流のＰＣＩｅ装置を表す。ＰＣＩｅ装置１（ＰＣＩｅ  ａｐｐａｒａｔｕｓ  １）は、ＰＣＩｅプロトコルを利用することによって上流のＰＣＩｅ装置と通信するＰＣＩｅ装置、すなわち、図２に示される第２ＰＣＩｅ装置などの下流のＰＣＩｅ装置を表す。さらに、ＰＣＩｅ装置は、物理的に独立した装置であってもよいし、又は、デバイスに統合されたチップであってもよく、図１に示されるＰＣＩｅ装置に限定されるものでない。
【００３５】
ｒｏｏｔ  ｃｏｍｐｌｅｘは、下流のポートを利用してデータ伝送を実現することによって、ＰＣＩｅ装置１の上流のポートに接続される。本実施例は、ｒｏｏｔ  ｃｏｍｐｌｅｘとＰＣＩｅ装置１との間に１６個のｓｅｒｄｅｓがある具体例を利用することによって説明される。これら１６個のｓｅｒｄｅｓは、ｒｏｏｔ  ｃｏｍｐｌｅｘとＰＣＩｅ装置１との間のリンクを形成し、１つのｓｅｒｄｅｓは１つのレーンとして参照される。すなわち、ｒｏｏｔ  ｃｏｍｐｌｅｘとＰＣＩｅ装置１との間のレーン数は１６であり、すなわち、Ｘ１６である。さらに、１６個のレーンは、左から右に０から１５まで連続的に番号付けされる。この場合、ｒｏｏｔ  ｃｏｍｐｌｅｘとＰＣＩｅ装置１との間の最大レーン幅値は１６である。ｒｏｏｔ  ｃｏｍｐｌｅｘのレーンネゴシエーション能力値Ｍは、ｒｏｏｔ  ｃｏｍｐｌｅｘの最大レーン幅値に等しく、ｒｏｏｔ  ｃｏｍｐｌｅｘの最大レーン幅値は、ｒｏｏｔ  ｃｏｍｐｌｅｘによるネゴシエートにより取得可能なｒｏｏｔ  ｃｏｍｐｌｅｘとＰＣＩｅ装置１との間の最大レーン数を表す。本実施例では、ｒｏｏｔ  ｃｏｍｐｌｅｘのレーンネゴシエーション能力値Ｍは１６に等しい。ｒｏｏｔ  ｃｏｍｐｌｅｘは、ｒｏｏｔ  ｃｏｍｐｌｅｘのレーンネゴシエーション能力値Ｍをレジスタに記憶する。ＰＣＩｅプロトコルの規定に従って、２つのＰＣＩｅ装置の間のリンクは１，２，４，８，１６又は３２個のレーンを含むものであってもよい。本実施例は、具体例として１６個のレーンを利用することによって説明される。リンクが１，２，４，８又は３２個のレーンを有するとき、その実現方式は１６個のレーンの実現方式と同じである。
【００３６】
ｒｏｏｔ  ｃｏｍｐｌｅｘは更に、他のＰＣＩｅ装置に接続されてもよい。ｒｏｏｔ  ｃｏｍｐｌｅｘが複数のＰＣＩｅ装置に接続されるとき、図１に示されるように、ｒｏｏｔ  ｃｏｍｐｌｅｘは更にスイッチに接続されてもよく、ｒｏｏｔ  ｃｏｍｐｌｅｘとＰＣＩｅ装置との間のレーンネゴシエーション能力値は、互いを区別するため、Ｍ１，Ｍ２及びＭ３として別々に記録されてもよい。以下の方法では、ｒｏｏｔ  ｃｏｍｐｌｅｘが１つのＰＣＩｅ装置に接続される具体例を利用することによって説明が与えられる。ｒｏｏｔ  ｃｏｍｐｌｅｘが複数のＰＣＩｅ装置に接続されるとき、ｒｏｏｔ  ｃｏｍｐｌｅｘとＰＣＩｅ装置の何れかとの間のレーンにおける故障を処理する方法は、本実施例におけるものと同様である。
【００３７】
メッセージ・シグナルド・インタラプト（ＭＳＩ，ｍｅｓｓａｇｅ  ｓｉｇｎａｌ  ｉｎｔｅｒｒｕｐｔ）機能が、ｒｏｏｔ  ｃｏｍｐｌｅｘに設定される。ｒｏｏｔ  ｃｏｍｐｌｅｘは、ＰＣＩｅ装置１に接続されるレーンをモニタリングし、ｒｏｏｔ  ｃｏｍｐｌｅｘとＰＣＩｅ装置１との間のレーン幅が変更されたことを検出すると、ｒｏｏｔ  ｃｏｍｐｌｅｘは、ＭＳＩメッセージをＣＰＵに報告する。ｒｏｏｔ  ｃｏｍｐｌｅｘがＰＣＩｅ装置１とのデータ伝送を実行すると、２つの装置の間に接続される全てのレーン（すなわち、全てのｓｅｒｄｅｓ）が利用される。その何れか１以上のレーンにおいて故障が発生すると、ｒｏｏｔ  ｃｏｍｐｌｅｘは、ｒｏｏｔ  ｃｏｍｐｌｅｘとＰＣＩｅ装置１との間のレーン幅が変更されたことを検出し、ｒｏｏｔ  ｃｏｍｐｌｅｘは、ＭＳＩメッセージを生成し、ＭＳＩメッセージをＣＰＵに報告する。ＭＳＩメッセージは、ｒｏｏｔ  ｃｏｍｐｌｅｘのポートのＢ：Ｄ：Ｆ（バス番号：デバイス番号：ファンクション番号）などのｒｏｏｔ  ｃｏｍｐｌｅｘのデバイスＩＤを含む。ｒｏｏｔ  ｃｏｍｐｌｅｘは、故障したレーンのレーン番号をレジスタに記憶する。本実施例では、ｒｏｏｔ  ｃｏｍｐｌｅｘとＰＣＩｅ装置１との間のレーン番号５において故障が発生し、ｒｏｏｔ  ｃｏｍｐｌｅｘは、レーン番号５において故障が発生したと検出し、故障したレーンのレーン番号情報をレジスタに記憶する。
【００３８】
ＭＳＩメッセージをＣＰＵに報告した後、ｒｏｏｔ  ｃｏｍｐｌｅｘは、現在レーン幅値Ｎを取得するため、ＰＣＩｅ装置１と再ネゴシエートする。ＰＣＩｅプロトコルの規定によると、ＰＣＩｅ装置の間のリンクのレーンネゴシエーションは、故障が発生したレーンに対してネゴシエーションが実行されるまで、最小の番号のレーンから開始される。このようにして、ネゴシエーションの実行が成功したレーンのレーン番号は依然として連続的であり、データを送信するのに利用可能なレーン数が取得されてもよい。本実施例では、ｒｏｏｔ  ｃｏｍｐｌｅｘは、レーン番号０から始まってＰＣＩｅ装置１とネゴシエートし、レーン番号０に対して実行されたネゴシエーションが成功した後（すなわち、レーン番号０が正常であり、データを送信するのに利用可能である）、それから、レーン番号０に対してネゴシエーションが実行される。残りは同様に導くことができる。ネゴシエーションがレーン番号５に対して実行されると、レーン番号５において故障が発生しているため、レーン番号５に対して実行されるネゴシエーションは不成功であり、ｒｏｏｔ  ｃｏｍｐｌｅｘはＰＣＩｅ装置１とのネゴシエートを止める。ルートコンプレクスとＰＣＩｅ装置１との間のレーン番号０からレーン番号４までに対するネゴシエーションの実行は成功し、すなわち、ｒｏｏｔ  ｃｏｍｐｌｅｘとＰＣＩｅ装置１との間の５つのレーンに対するネゴシエーションの実行は成功する。このとき、２つのＰＣＩｅ装置の間のレーンが１，２，４，８，１６又は３２個のレーンを含みうるＰＣＩｅプロトコルの規定によると、ｒｏｏｔ  ｃｏｍｐｌｅｘとＰＣＩｅ装置１との間の現在レーン幅値Ｎが４であると判断される。ｒｏｏｔ  ｃｏｍｐｌｅｘは、再ネゴシエーションにより取得された現在レーン幅値Ｎをレジスタに記憶する。
【００３９】
ｒｏｏｔ  ｃｏｍｐｌｅｘにより報告されたＭＳＩメッセージを受信した後に、ＣＰＵは、インタラプト処理プロセスに入る。ＣＰＵは、ＭＳＩメッセージからｒｏｏｔ  ｃｏｍｐｌｅｘのＩＤを抽出し、それから、取得したＩＤに従ってｒｏｏｔ  ｃｏｍｐｌｅｘのレジスタからｒｏｏｔ  ｃｏｍｐｌｅｘの現在レーン幅値Ｎ及びレーンネゴシエーション能力値Ｍを読む。ｒｏｏｔ  ｃｏｍｐｌｅｘの現在レーン幅値Ｎは、ｒｏｏｔ  ｃｏｍｐｌｅｘがｒｏｏｔ  ｃｏｍｐｌｅｘとＰＣＩｅ装置１との間のレーンにおいて故障が発生したことを検出した後に、ＰＣＩｅ装置１との再ネゴシエートにより取得される。本実施例では、ｒｏｏｔ  ｃｏｍｐｌｅｘとＰＣＩｅ装置１との間のｓｅｒｄｅｓレーン番号５において故障が発生した後、再ネゴシエーションにより取得された現在レーン幅値Ｎは４である。具体的なネゴシエーション方法は前のパラグラフで説明され、ここでは個別に再説明されない。さらに、上述されるように、本実施例では、ｒｏｏｔ  ｃｏｍｐｌｅｘとＰＣＩｅ装置１との間には１６個のレーンがあり、従って、ｒｏｏｔ  ｃｏｍｐｌｅｘのレーンネゴシエーション能力値Ｍは１６である。
【００４０】
ＣＰＵは、ｒｏｏｔ  ｃｏｍｐｌｅｘの現在レーン幅値Ｎとｒｏｏｔ  ｃｏｍｐｌｅｘのレーンネゴシエーション能力値Ｍとを比較する。本発明では、ＣＰＵは、２つのＰＣＩｅ装置の間のリンクのレーン数の規則に従ってＮとＭ／２とを比較する。
【００４１】
Ｎ≧Ｍ／２であるとき、ｒｏｏｔ  ｃｏｍｐｌｅｘがＰＣＩｅ装置１とネゴシエートすることによって取得される現在レーン幅値は最大レーン幅値の半分であり、この場合、ＣＰＵは処理を実行しない。ｒｏｏｔ  ｃｏｍｐｌｅｘがＣＰＵにより送信された指示を所定の時間内に受信しなかった場合、ｒｏｏｔ  ｃｏｍｐｌｅｘは、再ネゴシエーションにより取得されるＮ個のリンクレーンを利用することによって、ＰＣＩｅ装置１つのデータ伝送を実行し続ける。
【００４２】
Ｎ＜Ｍ／２であるとき、ｒｏｏｔ  ｃｏｍｐｌｅｘがＰＣＩｅ装置１とネゴシエートすることによって取得される現在レーン幅値は、最大レーン幅値の半分未満であり、この場合、ｒｏｏｔ  ｃｏｍｐｌｅｘとＰＣＩｅ装置１との間のリンクの幅は大きく減少する。この場合、ＣＰＵは、ｒｏｏｔ  ｃｏｍｐｌｅｘとＰＣＩｅ装置１との間のレーン番号０からレーン番号（Ｍ／２−１）までを無効にし、ｒｏｏｔ  ｃｏｍｐｌｅｘにレーン反転処理を開始するよう指示する。レーン反転処理は、ＰＣＩｅ装置がＰＣＩｅ装置と下流のＰＣＩｅ装置との間のリンクのレーンを反対方向に再び番号付けする。レーン反転処理を開始した後、ｒｏｏｔ  ｃｏｍｐｌｅｘは、ｒｏｏｔ  ｃｏｍｐｌｅｘとＰＣＩｅ装置１との間のレーンを反対方向に再び番号付けする。ｒｏｏｔ  ｃｏｍｐｌｅｘとＰＣＩｅ装置１との間のレーンは、左から右に昇順に連続的に番号付けされる。レーン反転処理を開始した後、ｒｏｏｔ  ｃｏｍｐｌｅｘは、右から左に昇順にｒｏｏｔ  ｃｏｍｐｌｅｘとＰＣＩｅ装置１との間のレーンを連続的に番号付けする。具体的な番号付け処理の関連する説明は、上記に提供され、ここでは個別に再説明されない。元のレーン番号０からレーン番号（Ｍ／２−１）までは無効にされるため、ｒｏｏｔ  ｃｏｍｐｌｅｘは、レーン反転処理を開始した後に無効にされたレーンを番号付けしない。このように、ｒｏｏｔ  ｃｏｍｐｌｅｘは、右から左に昇順に０から始めて（Ｍ／２−１）までｒｏｏｔ  ｃｏｍｐｌｅｘとＰＣＩｅ装置１との間のレーンを連続的に番号付けする。
【００４３】
レーン反転処理を終了した後、ｒｏｏｔ  ｃｏｍｐｌｅｘは、それからｒｏｏｔ  ｃｏｍｐｌｅｘとＰＣＩｅ装置との間のリンクの新たな現在レーン幅値Ｎ’を取得するため、ＰＣＩｅ装置１とのレーン幅ネゴシエーションを実行する。ＰＣＩｅプロトコルの規則によると、ネゴシエーションが故障が発生したレーンに対して実行されるまで、ＰＣＩｅ装置の間のネゴシエーションが最小番号のレーンから開始される。レーン反転処理を終了した後、ｒｏｏｔ  ｃｏｍｐｌｅｘは、故障が発生したレーンに対してネゴシエーションが実行されるまで、新たなレーン番号０から始まるネゴシエーションを実行し、通信に利用可能なレーン数を決定する。ｒｏｏｔ  ｃｏｍｐｌｅｘは、その後、ＰＣＩｅプロトコルに規定される、２つのＰＣＩｅ装置の間のリンクのレーン数の要件に従って新たな現在レーン幅値Ｎ’を決定する。ｒｏｏｔ  ｃｏｍｐｌｅｘは、ネゴシエーションにより取得される新たなＮ’の個数のレーンを利用することによって、ＰＣＩｅ装置１とのデータ伝送を実行し続ける。
【００４４】
本実施例では、レーン番号５において故障が発生し、Ｎは４であり、Ｍは１６であり、４＜８（Ｎ＜Ｍ／２）である。ＣＰＵは、ｒｏｏｔ  ｃｏｍｐｌｅｘとＰＣＩｅ装置１との間のレーン番号０からレーン番号（Ｍ／２−１）（すなわち、７番）までを無効にし、レーン反転処理を実行するようｒｏｏｔ  ｃｏｍｐｌｅｘに指示する。当該指示を受信した後、ｒｏｏｔ  ｃｏｍｐｌｅｘは、ｒｏｏｔ  ｃｏｍｐｌｅｘとＰＣＩｅ装置１との間のレーンを反対方向に再び番号付けする。レーン番号１５のレーン番号は１５から０に変更され、すなわち、元のレーン番号１５はレーン番号０に変更され、レーン番号１４のレーン番号は１４から１に変更され、すなわち、元のレーン番号１４はレーン番号１に変更され、残りは同様に導くことができる。レーン番号０からレーン番号（Ｍ／２−１）（すなわち、７番）までが無効にされるため、レーン反転処理は、元のレーン番号Ｍ／２（すなわち、８番）がレーン番号（Ｍ／２−１）（すなわち、７番）に変更された後に終了される。レーン反転を終了した後、ｒｏｏｔ  ｃｏｍｐｌｅｘはＰＣＩｅ装置１とのレーン再ネゴシエーションを実行し、新たな反転されたレーン番号０から始まるネゴシエーションが実行され、レーン番号に従って上方にネゴシエーションが連続的に実行される。データ伝送は、故障が発生しない元のレーン番号８から元のレーン番号１５までに対して実行可能であるため、ｒｏｏｔ  ｃｏｍｐｌｅｘがＰＣＩｅ装置１とのレーン再ネゴシエーションを再び実行するとき、８つのレーンに対してネゴシエーションの実行が成功する。さらに、ＰＣＩｅプロトコルは、レーン幅が１，２，４，８，１６及び３２の１つであると規定しているため、ＰＣＩｅ装置１とのルートコンプレクスによる再ネゴシエートにより取得される新たな現在レーン幅値Ｎ’は８である。
【００４５】
ｒｏｏｔ  ｃｏｍｐｌｅｘは、ｒｏｏｔ  ｃｏｍｐｌｅｘとＰＣＩｅ装置１との間の新たな反転されたレーン番号０から新たな反転されたレーン番号７（すなわち、８番）までを利用することによって、データ伝送を実行し続ける。具体的なデータ伝送処理は、既存の実現方式と同様であり、ここでは個別に再説明されない。
【００４６】
このようにして、２つのＰＣＩｅ装置の間のリンクのレーンにおいて故障が発生した場合、本発明において提供される方策を利用することは、ＰＣＩｅ装置のレーンネゴシエーション能力値の１／２である個数のレーンが、故障したレーンのレーン番号に関係なく利用可能であることを保証でき、ＰＣＩｅ装置の間のリンクの伝送速度及び性能を最大程度まで保証する。
【００４７】
本発明は更に、ＰＣＩｅ装置のリンク故障を処理するシステムを提供し、システムの構成は図２に示される。システムは、中央処理ユニットＣＰＵ２０１、第１ＰＣＩｅ装置２０３及び第２ＰＣＩｅ装置２０５を有する。第１ＰＣＩｅ装置及び第２ＰＣＩｅ装置は、複数のシリアライザ／デ・シリアライザ（ｓｅｒｄｅｓ，Ｓｅｒｉａｌｉｚｅｒ／Ｄｅ−Ｓｅｒｉａｌｉｚｅｒ）回路を利用することによって接続される。複数のｓｅｒｄｅｓは、第１ＰＣＩｅ装置と第２ＰＣＩｅ装置との間でデータを伝送するのに利用されるリンク２０４を構成し、各ｓｅｒｄｅｓはレーンであり、レーンはある順序に連続的に番号付けされる。２つのＰＣＩｅ装置の間には１，２，４，８，１６又は３２個のｓｅｒｄｅｓがあってもよく、本実施例は具体例として１６個のｓｅｒｄｅｓを利用することによって説明される。すなわち、第１ＰＣＩｅ装置２０３と第２ＰＣＩｅ装置２０５との間には１６個のｓｅｒｄｅｓ、すなわち、１６個のレーンがあり、これら１６個のレーンは左から右に０から始まって１５まで連続的且つ順次的に番号付けされる。番号０のレーンはレーン番号０であり、同様に、番号１５のレーンはレーン番号１５である。ｓｅｒｄｅｓは、既存のｓｅｒｄｅｓ構造を利用し、既存の機能をサポートし、ここでは個別に再説明されない。本発明の本実施例では、いくつのｓｅｒｄｅｓがリンクにあっても、その実現原理は同様である。
【００４８】
メッセージ・シグナルド・インタラプト（ＭＳＩ、ｍｅｓｓａｇｅ  ｓｉｇｎａｌ  ｉｎｔｅｒｒｕｐｔ）機能が、第１ＰＣＩｅ装置２０３に設定される。第２ＰＣＩｅ装置２０５に接続されるリンク２０４の１以上のレーンにおいて故障が発生したと検出すると、第１ＰＣＩｅ装置２０３は、ＭＳＩメッセージをＣＰＵ２０１に報告し、ここで、ＭＳＩメッセージは第１ＰＣＩｅ装置２０３のデバイスＩＤを含む。
【００４９】
第１ＰＣＩｅ装置２０３は、第１ＰＣＩｅ装置２０３と第２ＰＣＩｅ装置２０５との間のリンク２０４の現在レーン幅値Ｎを取得するため、ＰＣＩｅプロトコルの再ネゴシエーション機構に従って第２ＰＣＩｅ装置２０５とレーン再ネゴシエーションを実行する。レーン再ネゴシエーション中、ＰＣＩｅプロトコルに規定されるレーンネゴシエーション機構によると、第１ＰＣＩｅ装置２０３は、故障したレーンに対してネゴシエーションが実行されるまで、最小のレーン番号のレーンから始めてレーン番号の昇順により上方に第２ＰＣＩｅ装置２０５とのリンクネゴシエーションを再び連続的に実行する。故障したレーンに対してネゴシエーションの実行が成功できないため、再ネゴシエーション処理は終了される。第１ＰＣＩｅ装置２０３は更に、ＰＣＩｅプロトコルに規定される２つのＰＣＩｅ装置の間のリンクのレーン数に従って、リンクの現在レーン幅値Ｎを決定する。
【００５０】
レーン番号は連続している必要があり、リンクネゴシエーションは最小番号のレーンから開始されるため、再ネゴシエーションにより取得されるレーン数は故障したレーンのレーン番号によって変わり、不確実性が存在する。故障したレーンのレーン番号が相対的に小さいとき、再ネゴシエーションにより取得されるレーン数はまた大きく減少し、すなわち、取得された現在レーン幅値Ｎは大きく減少し、従って、２つのＰＣＩｅ装置の間のデータ伝送の性能に重大な影響を与える。
【００５１】
本発明の本実施例では、第１ＰＣＩｅ装置２０３により報告されたＭＳＩメッセージを受信した後に、ＣＰＵ２０１はインタラプト処理プロセスに入る。ＣＰＵ２０１は、ＭＳＩメッセージにおける第１ＰＣＩｅ装置２０３のデバイスＩＤに従って、第１ＰＣＩｅ装置２０３から第１ＰＣＩｅ装置２０３の現在レーン幅値Ｎ及び第１ＰＣＩｅ装置２０３のレーンネゴシエーション能力値Ｍを取得する。第１ＰＣＩｅ装置２０３のレーンネゴシエーション能力値Ｍは、第１ＰＣＩｅ装置２０３が第２ＰＣＩｅ装置２０５とネゴシエートすることにより取得可能な最大レーン幅値、すなわち、第１ＰＣＩｅ装置２０３と第２ＰＣＩｅ装置２０５との間のレーンの合計数を表す。本実施例では、第１ＰＣＩｅ装置２０３と第２ＰＣＩｅ装置２０５との間に１６個のレーンがあり、従って、第１ＰＣＩｅ装置２０３が第２ＰＣＩｅ装置２０５とネゴシエートすることにより取得可能な最大レーン幅値は１６であり、第１ＰＣＩｅ装置２０３のレーンネゴシエーション能力値Ｍは１６である。第１ＰＣＩｅ装置２０３の現在レーン幅値Ｎは、第１ＰＣＩｅ装置２０３が第２ＰＣＩｅ装置２０５と再ネゴシエートすることにより取得される現在レーン幅値Ｎである。
【００５２】
ＣＰＵ２０１は、第１ＰＣＩｅ装置２０３の取得された現在レーン幅値Ｎとレーンネゴシエーション能力値Ｍとを比較する。本発明では、ＣＰＵ２０１は、２つのＰＣＩｅ装置の間のリンクのレーン数の規則に従って、ＮとＭ／２とを比較する。
【００５３】
Ｎ≧Ｍ／２である場合、第１ＰＣＩｅ装置２０３は、再ネゴシエーションにより取得されるリンクレーンを利用することによって、第２ＰＣＩｅ装置２０５とのデータ伝送を実行し続ける。この場合、Ｎ≧Ｍ／２は、故障したレーンのレーン番号は（Ｍ／２−１）より大きいことを示し、２つのＰＣＩｅ装置の間のリンクが１，２，４，８，１６又は３２個のレーンを含みうるため、第１ＰＣＩｅ装置２０３が第２ＰＣＩｅ装置２０５と再ネゴシエートすることによって取得される現在レーン幅値ＮはＭ／２であり、第１ＰＣＩｅ装置２０３は、再ネゴシエーションにより取得されるリンクレーンを利用することによって、第２ＰＣＩｅ装置２０５とのデータ伝送を実行し続ける。ＣＰＵ２０１は、このような状態においては処理を実行しない。第１ＰＣＩｅ装置２０３は期間を設定してもよく、第１ＰＣＩｅ装置２０３が設定された期間内にＣＰＵ２０１の指示を受信しなかった場合、第１ＰＣＩｅ装置２０３は、再ネゴシエーションにより取得されるリンクレーンを利用することによって、第２ＰＣＩｅ装置２０５とのデータ伝送を実行し続ける。
【００５４】
Ｎ＜Ｍ／２である場合、ＣＰＵ２０１は、第１ＰＣＩｅ装置２０３にレーン反転処理を実行するよう指示する。Ｎ＜Ｍ／２であるとき、第１ＰＣＩｅ装置２０３が第２ＰＣＩｅ装置２０５と再ネゴシエートすることによって取得される現在レーン幅は、合計のリンク幅の半分未満であり、故障したレーンのレーン番号がＭ／２未満であることを示す。レーン反転処理は、第１ＰＣＩｅ装置２０３が第１ＰＣＩｅ装置２０３と第２ＰＣＩｅ装置２０５との間のレーンを反対方向に再番号付けする。例えば、本実施例では、第１ＰＣＩｅ装置２０３と第２ＰＣＩｅ装置２０５との間のレーンは、当初は左から右に０から始まって１５まで番号付けされる。第１ＰＣＩｅ装置２０３がレーン反転処理を実行した後、元のレーン番号１５のレーン番号は１５から０に変更され、すなわち、元のレーン番号１５はレーン番号０に変更され、元のレーン番号１４のレーン番号は１４から１に変更され、すなわち、元のレーン番号１４はレーン番号１に変更され、残りは同様に導くことができる。レーン反転処理を実行するよう第１ＰＣＩｅ装置に指示する前に、ＣＰＵ２０１は更に、第１ＰＣＩｅ装置と第２ＰＣＩｅ装置との間のレーン番号０からレーン番号（Ｍ／２−１）までを無効にしてもよい。レーン番号０からレーン番号（Ｍ／２−１）までが無効にされた後、第１ＰＣＩｅ装置２０３は、元のレーン番号Ｍのレーン番号を０に変更し、元のレーン番号（Ｍ−１）のレーン番号を１に変更するなど、元のレーン番号Ｍ／２のレーン番号が（Ｍ／２−１）に変更されるまで、レーン反転処理を実行する。レーン反転処理を実行した後、第１ＰＣＩｅ装置２０３は、新たな現在レーン幅値Ｎ’を取得するため第２ＰＣＩｅ装置２０５による新たな現在レーン幅に関する再ネゴシエーションを実行する。第１ＰＣＩｅ装置２０３が第２ＰＣＩｅ装置２０５と現在レーン幅を再ネゴシエートする方法は、上記の再ネゴシエーション方法と同じである。ＰＣＩｅプロトコルの要求に従って、第１ＰＣＩｅ装置２０３は、反転後に最小番号のレーンから始めてネゴシエーションを実行し、レーン番号の昇順に上方に連続的に第２ＰＣＩｅ装置２０５とのリンクネゴシエーションを再実行する。すなわち、第１ＰＣＩｅ装置２０３は、反転されたレーン番号０から始まるネゴシエーションを実行し、その後、ネゴシエーションがレーン番号（Ｍ／２−１）に対して実行されるまで、レーン番号１及びレーン番号２に対して逐次的にネゴシエーションを実行する。第１ＰＣＩｅ装置２０３は、Ｎ＜Ｍ／２の場合にレーン反転処理を実行し、この場合、故障したレーンのレーン番号はＭ／２未満であり、すなわち、故障したレーンはレーン番号０からレーン番号（Ｍ／２−１）までの１つであり、レーン番号０からレーン番号（Ｍ／２−１）までが無効とされるが、レーン番号Ｍ／２からレーン番号Ｍまでは故障が発生しておらず、データ伝送が実行可能である。その後、第１ＰＣＩｅ装置２０３がレーン反転を実行した後、新たなレーン番号０からレーン番号（Ｍ／２−１）までにおいて故障は発生せず、第１ＰＣＩｅ装置２０３が第２ＰＣＩｅ装置２０５と再ネゴシエートすることによって取得された新たな現在レーン幅値Ｎ’はＭ／２である。第１ＰＣＩｅ装置２０３は、再ネゴシエーションにより取得される新たなレーンリンクを利用することによって、第２ＰＣＩｅ装置２０５とのデータ伝送を実行し続ける。
【００５５】
ＰＣＩｅ装置のレーンに故障が発生すると、本発明の方策を利用することは、再ネゴシエーションにより取得されたレーン幅が、故障したレーンのレーン番号に関係なく元のレーン幅の１／２であることを保証することが可能であり、故障したレーンのレーン番号が比較的小さく、このため、ＰＣＩｅ装置の間のデータ伝送の速度が影響を受けるとき、ＰＣＩｅ装置のレーン値が大きく減少する。
【００５６】
本発明の実施例における第１ＰＣＩｅ装置５０３の内部構成図について、図５を参照されたい。図５に示されるように、第１ＰＣＩｅ装置５０３は、検出モジュール５０３１、ＭＳＩモジュール５０３３、ネゴシエートモジュール５０３５、レジスタ５０３７及びレーン反転モジュール５０３９を有する。
【００５７】
検出モジュール５０３１は、第１ＰＣＩｅ装置５０３と第２ＰＣＩｅ装置５０５との間のリンク５０４の通信状態をモニタリングするよう構成される。第１ＰＣＩｅ装置５０３と第２ＰＣＩｅ装置５０４との間のリンク５０４は複数のシリアライザ／デ・シリアライザ（ｓｅｒｄｅｓ，Ｓｅｒｉａｌｉｚｅｒ／Ｄｅ−Ｓｅｒｉａｌｉｚｅｒ）回路を有し、各ｓｅｒｄｅｓはレーン（ｌａｎｅ）である。リンク５０４の１以上のレーンにおいて故障が発生したと検出すると、検出モジュール５０３１は、レーン故障指示メッセージをＭＳＩモジュール５０３３に送信し、故障したレーンに関する情報を記憶のためレジスタ５０３７に送信する。
【００５８】
ＭＳＩモジュール５０３３は、検出モジュール５０３１のレーン故障指示メッセージを受信した後に、ＭＳＩメッセージを中央処理ユニットＣＰＵ５０１に送信するよう構成される。送信されるＭＳＩメッセージは第１ＰＣＩｅ装置５０３のデバイスＩＤを含む。
【００５９】
ネゴシエートモジュール５０３５は、第１ＰＣＩｅ装置５０３と第２ＰＣＩｅ装置５０５との間のレーン幅をネゴシエートするよう構成される。２つのＰＣＩｅ装置の間のリンクのレーンは、ある順序により連続的に番号付けされる。２つのＰＣＩｅ装置の間のリンクは、１，２，４，８，１６又は３２個のレーンを有してもよく、本実施例は、具体例として１６個のレーンを利用することによって説明される。例えば、図５に示されるように、第１ＰＣＩｅ装置５０３と第２ＰＣＩｅ装置５０５との間のリンク５０４のレーンは、０から始まって左から右に連続的に番号付けされる。左から右に逐次的にレーン番号０、レーン番号１、レーン番号２、．．．．及びレーン番号１５がある。ＰＣＩｅプロトコルのネゴシエーション機構によると、リンクネゴシエーションが実行されると、最小の番号のレーンから始まってネゴシエーションが実行され、ネゴシエーションが故障したレーンに対して実行されるまで、レーン番号の昇順に上方に連続的に第２ＰＣＩｅ装置５０５とのリンクネゴシエーションが再実行される。故障したレーンに対するネゴシエーションの実行は成功できないため、再ネゴシエーション処理は終了する。第１ＰＣＩｅ装置５０３は更に、ＰＣＩｅプロトコルに規定される２つのＰＣＩｅ装置の間のリンクのレーン数に従って、第１ＰＣＩｅ装置５０３と第２ＰＣＩｅ装置５０５との間のリンクの現在レーン幅値Ｎを決定する。
【００６０】
レジスタ５０３７は、第１ＰＣＩｅ装置５０３の現在レーン幅値Ｎ及びレーンネゴシエーション能力値Ｍなどの情報を含む情報を記憶するよう構成される。
【００６１】
レーン反転モジュール５０３９は、レーン反転処理を実行する指示を受信した後に、リンク５０４のレーンに対してレーン反転処理を実行するよう構成される。
【００６２】
リンク５０４の１以上のレーンにおいて故障が発生したと検出すると、検出モジュール５０３１は、レーン故障指示メッセージをＭＳＩモジュール５０３３に送信し、故障したレーンに関する情報を記憶のためレジスタ５０３７に送信する。
【００６３】
ネゴシエートモジュール５０３５は、再ネゴシエーションを開始し、第１ＰＣＩｅ装置５０３と第２ＰＣＩｅ装置５０５との間の現在レーン幅値Ｎを決定する。ネゴシエートモジュール５０３５は、リンク５０４における最小の番号のレーンから始めてネゴシエーションを実行し、すなわち、レーン番号０から始めてネゴシエーションを実行し、レーン番号０に対してネゴシエーションの実行が成功した後、レーン番号０に対してネゴシエーションが実行され、故障したレーンに対してネゴシエーションが実行されるまで、残りが同様に導くことができる。本実施例では、リンク５０４のレーン番号５において故障が発生したと仮定する。ネゴシエートモジュール５０３５が再ネゴシエーションを開始すると、レーン番号０からレーン番号４までに対してネゴシエーションの実行が成功する。この場合、５つのレーンが通信に利用可能であるが、２つのＰＣＩｅ装置の間のリンクは１，２，４，８，１６又は３２個のレーンを有してもよく、従って、第１ＰＣＩｅ装置５０３と第２ＰＣＩｅ装置５０５との間の現在レーン幅値Ｎは４である。
【００６４】
ＭＳＩモジュール５０３３により送信されたＭＳＩメッセージを受信した後に、ＣＰＵ５０１は、ＭＳＩメッセージに含まれるデバイスＩＤに従って、第１ＰＣＩｅ装置５０３のレジスタ５０３７から第１ＰＣＩｅ装置の現在レーン幅値Ｎ及びレーンネゴシエーション能力値Ｍを取得する。本実施例では、第１ＰＣＩｅ装置と第２ＰＣＩｅ装置との間のリンクのレーン数は１６であり、このため、ＣＰＵ５０１により取得される第１ＰＣＩｅ装置のレーンネゴシエーション能力値Ｍは１６である。現在レーン幅値Ｎは４である。
【００６５】
ＣＰＵ５０１は、取得したレーンネゴシエーション能力値Ｍ及び現在レーン幅値Ｎを比較する。本発明では、ＣＰＵ５０１は、２つのＰＣＩｅ装置の間のリンクのレーン数の規則に従ってＮ及びＭ／２を比較する。
【００６６】
Ｎ＜Ｍ／２であるとき、ＣＰＵ５０１は、レーン反転処理を実行するよう、すなわち、第１ＰＣＩｅ装置５０３と第２ＰＣＩｅ装置５０５との間のリンク５０４のレーンを反対方向に再番号付けするよう第１ＰＣＩｅ装置５０３のレーン反転モジュール５０３９に指示する。例えば、図５に示されるように、現在、リンク５０４のレーンは、左から右に０から始めて１５まで連続的に番号付けされる。レーン反転処理を実行するとは、リンク５０４のレーン番号１５のレーン番号が１５から０に変更され、すなわち、レーン番号１５がレーン番号０に変更され、レーン番号１４のレーン番号が１に変更され、すなわち、レーン番号１４がレーン番号１に変更され、残りが同様に導くことができることを意味する。レーン反転処理が実行された後、リンク５０４のレーンは、右から左に０から始めて１５まで連続的に番号付けされる。第１ＰＣＩｅ装置５０３のレーン反転モジュール５０３９がレーン反転処理を終了した後、ネゴシエートモジュール５０３５は、それから第１ＰＣＩｅ装置５０３と第２ＰＣＩｅ装置５０５との間のリンク５０４に対してレーンネゴシエーションを再開し、新たな現在レーン幅値Ｎ’を決定し、ネゴシエーション方法は上記の方法と同じであり、ここでは個別に再説明されない。第１ＰＣＩｅ装置５０３は、ネゴシエーションにより取得された新たな現在レーン幅を利用することによって、第２ＰＣＩｅ装置５０５とのデータ伝送を実行する。Ｎ＜Ｍ／２が故障したレーンのレーン番号が（Ｍ／２−１）未満であることを示すため、再ネゴシエーションにより取得される新たな現在レーン幅値はＭ／２以上である。この場合、リンク５０４のレーンにおいて故障が発生した後に再ネゴシエーションにより取得されるレーン幅値がＭ／２以上であることが保証可能であり、リンク５０４の伝送性能を保証する。
【００６７】
Ｎ＜Ｍ／２であるとき、ＣＰＵ５０１は更に、第１ＰＣＩｅ装置５０３と第２ＰＣＩｅ装置５０５との間のリンク５０４のレーン番号０からレーン番号（Ｍ／２−１）までをまず無効にし、それからレーン反転処理を実行するよう第１ＰＣＩｅ装置５０３のレーン反転モジュール５０３９に指示する。Ｎ＜Ｍ／２であって、ネゴシエーションにより取得された現在レーン幅がＭ／２未満であるため、それは、故障したレーンのレーン番号が（Ｍ／２−１）未満であることを示す。レーン番号Ｍ／２からレーン番号Ｍまでには故障は発生せず、データ伝送が実行可能である。このように、ＣＰＵ５０１は、リンク５０４のレーン番号０からレーン番号（Ｍ／２−１）までを無効にし、レーン反転処理を実行すると、第１ＰＣＩｅ装置５０３のレーン反転モジュール５０３９は、レーン番号Ｍ／２のレーン番号がＭ／２から（Ｍ／２−１）に変更されるまで、レーン番号Ｍのレーン番号をＭから０に変更し、レーン番号（Ｍ−１）のレーン番号を（Ｍ−１）から０に変更するなどである。リンクの元のレーン番号０から元のレーン番号（Ｍ／２−１）までが無効にされるため、第１ＰＣＩｅ装置５０３のレーン反転モジュール５０３９は、これらの無効にされたレーンに対してレーン反転をもはや実行しない。レーン反転が終了した後、ネゴシエートモジュール５０３５は、第１ＰＣＩｅ装置５０３と第２ＰＣＩｅ装置５０５との間のリンク５０４に対するレーンネゴシエーションを再開し、新たな現在レーン幅値Ｎ’を決定する。この場合、リンク５０４の新たなレーン番号０から新たなレーン番号（Ｍ／２−１）までが通信に利用可能である。すなわち、リンク５０４のレーンにおいて故障が発生した後、再ネゴシエーションにより取得されるレーン幅値はＭ／２に等しく、リンク５０４の伝送性能を保証する。
【００６８】
Ｎ≧Ｍ／２であるとき、それは、第１ＰＣＩｅ装置５０３と第２ＰＣＩｅ装置５０５との間のリンクの現在レーン幅がＭ／２以上であることを示し、この場合、リンク５０４の性能は最大程度まで保持される。ＣＰＵ５０１は処理を実行しない。第１ＰＣＩｅ装置５０３が所定の制限時間内にＣＰＵ５０１の指示を受信しなかった場合、第１ＰＣＩｅ装置５０３は、ネゴシエーションにより取得された現在レーン幅Ｎを利用することによって、第２ＰＣＩｅ装置５０４とのデータ伝送を実行する。リンク５０４の伝送性能がまた保証される。
【００６９】
本発明の本実施例では、第１ＰＣＩｅ装置５０３のレーンネゴシエーション能力値Ｍは１６であり、リンク５０４のレーン番号５において故障が発生し、第１ＰＣＩｅ装置のネゴシエーションモジュール５０３５が第２ＰＣＩｅ装置５０５と再ネゴシエートすることにより取得された現在レーン幅値Ｎは４である。この場合、４＜１６／２であり、すなわち、Ｎ＜Ｍ／２であり、ＣＰＵ５０１は、リンク５０４のレーン番号０からレーン番号７までを無効にし、レーン反転を実行するよう第１ＰＣＩｅ装置５０３のレーン反転モジュール５０３９に指示する。第１ＰＣＩｅ装置５０３のレーン反転モジュール５０３９は、レーン番号８のレーン番号が７に変更されるまで、リンク５０４のレーン番号１５のレーン番号を０に変更し、レーン番号１４のレーン番号を１に変更する。リンク５０４の元のレーン番号０から元のレーン番号７までが無効とされたため、レーン反転モジュール５０３９はもはやそれらを番号付けしない。このようにして、第１ＰＣＩｅ装置５０３と第２ＰＣＩｅ装置５０５との間のリンク５０４は現在は８つのレーンを含む。第１ＰＣＩｅ装置５０３のネゴシエートモジュール５０３５は、８である新たな現在レーン幅値Ｎ’を取得するため、第２ＰＣＩｅ装置５０５とのレーン再ネゴシエーションを実行する。第１ＰＣＩｅ装置５０３は、リンク５０４の８つのレーンを利用することによって、第２ＰＣＩｅ装置５０５とのデータ伝送を実行し続ける。
【００７０】
このようにして、本発明において提供される技術的方策を利用することによって、２つのＰＣＩｅ装置の間のリンクのレーンにおいて故障が発生すると、２つのＰＣＩｅ装置が元のリンクの１／２のレーンが故障したレーンの番号に関わらずデータ伝送を実行し続けるため提供することができ、これは、従来技術におけるリンク幅に課された故障レーンのレーン番号の制限を緩和し、これにより、最適なリンク幅が再ネゴシエーション後に実現できる。
【００７１】
本明細書では、第１及び第２などの関係語があるエンティティ又は処理を他のものと区別するためだけに利用され、これらのエンティティ又は処理の間に何れか実際の関係又はシーケンスが存在することを必ずしも必要又は意味するものでないことが更に留意されるべきである。さらに、“含む”、“含む”という用語又はそれらの他の何れかの変形は非排他的な包含をカバーすることを意図し、これにより、要素のリストを含む処理、方法、物又は装置はこれらの要素を含むだけでなく、明示的に列記されていない他の要素もまた含むか、又は当該処理、方法、物又は装置に固有の要素を更に含む。“〜を含む”に先行する要素は、更なる制約なく、要素を含む処理、方法、物又は装置における更なる同一の要素の存在を排除しない。
当業者は、開示された実施例の上記の説明に従って本発明を実現又は利用してもよい。本明細書に定義される通常の原理は、本発明の精神又は範囲から逸脱することなく他の実施例において実現されてもよい。従って、本発明は、本明細書に説明された実施例に限定されず、本明細書に開示される原理及び新規性に従う最も広い範囲に拡張される。
【図１】
2016526311.tif 000003
【図２】
2016526311.tif 000004
【図３】
2016526311.tif 000005
【図４】
2016526311.tif 000006
【図５】
2016526311.tif 000007
【手続補正書】
【提出日】平成27年9月18日(2015.9.18)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｐｒｅｓｓ（ＰＣＩｅ）リンク故障を処理する方法であって、
ＰＣＩｅ装置が、前記ＰＣＩｅ装置と下流のＰＣＩｅ装置との間のリンクのレーンにおいて故障が発生したと検出し、メッセージ・シグナルド・インタラプト（ＭＳＩ）メッセージを中央処理ユニット（ＣＰＵ）に送信するステップであって、前記ＭＳＩメッセージは前記ＰＣＩｅ装置のデバイスＩＤを有する、送信するステップと、
前記ＰＣＩｅ装置が、現在レーン幅値Ｎを取得するため、前記下流のＰＣＩｅ装置とネゴシエートするステップと、
前記ＣＰＵが、前記受信したＭＳＩメッセージにおけるデバイスＩＤに従って、前記ＰＣＩｅ装置から前記ＰＣＩｅ装置のレーンネゴシエーション能力値Ｍ及び前記現在レーン幅値Ｎを取得するステップと、
前記ＣＰＵが、ＮとＭ／２とを比較するステップと、
Ｎ＜Ｍ／２である場合、前記ＣＰＵが、レーン反転処理を実行するよう前記ＰＣＩｅ装置に指示するステップと、
前記ＰＣＩｅ装置が、前記ＰＣＩｅ装置と前記下流のＰＣＩｅ装置との間のリンクに対して前記レーン反転処理を実行するステップと、
前記ＰＣＩｅ装置が、新たな現在レーン幅値Ｎ’を取得するため、前記下流のＰＣＩｅ装置とネゴシエートし、Ｎ’個（Ｎ’≧１）のレーンを利用することによって前記下流のＰＣＩｅ装置とのデータ伝送を実行し続けるステップと、
を有する方法。
【請求項２】
Ｎ＜Ｍ／２である場合、当該方法は更に、前記ＣＰＵが、前記ＰＣＩｅ装置と前記下流のＰＣＩｅ装置との間のリンクのレーン番号０からレーン番号（Ｍ／２−１）までを無効にするステップを有する、請求項１記載の方法。
【請求項３】
当該方法は更に、
Ｎ＞Ｍ／２である場合、前記ＰＣＩｅ装置が、ネゴシエーションにより取得されたＮ個のレーンを利用することによって、前記下流のＰＣＩｅ装置とのデータ伝送を実行し続けるステップを有する、請求項１又は２記載の方法。
【請求項４】
Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｐｒｅｓｓ（ＰＣＩｅ）リンク故障を処理する方法であって、
ＰＣＩｅ装置により報告されたメッセージ・シグナルド・インタラプト（ＭＳＩ）メッセージを受信するステップであって、前記ＭＳＩメッセージは前記ＰＣＩｅ装置のデバイスＩＤを有する、受信するステップと、
前記デバイスＩＤに従って前記ＰＣＩｅ装置から前記ＰＣＩｅ装置のレーンネゴシエーション能力値Ｍ及び現在レーン幅値Ｎを取得するステップであって、前記現在レーン幅値Ｎは、前記ＰＣＩｅ装置が下流のＰＣＩｅ装置とネゴシエートすることによって取得される、取得するステップと、
ＮとＭ／２とを比較するステップと、
Ｎ＜Ｍ／２である場合、レーン反転処理を実行するよう前記ＰＣＩｅ装置に指示するステップと、
を有する方法。
【請求項５】
Ｎ＜Ｍ／２である場合、当該方法は更に、前記ＰＣＩｅ装置と前記下流のＰＣＩｅ装置との間のリンクのレーン番号０からレーン番号（Ｍ／２−１）までを無効にするステップを有する、請求項４記載の方法。
【請求項６】
前記ＰＣＩｅ装置のレーンネゴシエーション能力値Ｍは、前記ＰＣＩｅ装置と前記下流のＰＣＩｅ装置との間のリンクのレーンの合計数に等しい、請求項４又は５記載の方法。
【請求項７】
Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｐｒｅｓｓ（ＰＣＩｅ）リンク故障を処理する方法であって、
ＰＣＩｅ装置が、前記ＰＣＩｅ装置と下流のＰＣＩｅ装置との間のリンクのレーンにおいて故障が発生したと検出し、メッセージ・シグナルド・インタラプトＭＳＩメッセージを中央処理ユニット（ＣＰＵ）に送信するステップであって、前記ＭＳＩメッセージは前記ＰＣＩｅ装置のデバイスＩＤを有する、送信するステップと、
現在レーン幅値Ｎを取得するため、前記下流のＰＣＩｅ装置とネゴシエートするステップと、
前記ＣＰＵにより送信されたレーン反転処理を実行する指示を受信し、前記ＰＣＩｅ装置と前記下流のＰＣＩｅ装置との間のリンクに対して前記レーン反転処理を実行するステップと、
新たな現在レーン幅値Ｎ’を取得するため、前記下流のＰＣＩｅ装置とネゴシエートし、Ｎ’個のレーンを利用することによって前記下流のＰＣＩｅ装置とのデータ伝送を実行し続けるステップと、
を有する方法。
【請求項８】
当該方法は更に、前記ＰＣＩｅ装置が前記ＣＰＵにより送信されたレーン反転処理を実行する指示を所定の時間内に受信しなかった場合、前記ＰＣＩｅ装置が、Ｎ個のレーンを利用することによって、前記下流のＰＣＩｅ装置とのデータ伝送を実行し続けるステップを有する、請求項７記載の方法。
【請求項９】
Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｐｒｅｓｓ（ＰＣＩｅ）リンク故障を処理するシステムであって、
当該システムは、中央処理ユニット（ＣＰＵ）、ＰＣＩｅ装置及び下流のＰＣＩｅ装置を有し、前記ＣＰＵは前記ＰＣＩｅ装置に接続され、前記ＰＣＩｅ装置はリンクを利用することによって前記下流のＰＣＩｅ装置に接続され、
前記ＰＣＩｅ装置は、前記ＰＣＩｅ装置と前記下流のＰＣＩｅ装置との間のリンクのレーンにおいて故障が発生したか検出し、故障が発生すると、メッセージ・シグナルド・インタラプト（ＭＳＩ）メッセージを前記ＣＰＵに報告するよう構成され、前記ＭＳＩメッセージは前記ＰＣＩｅ装置のデバイスＩＤを有し、前記ＰＣＩｅ装置は更に、現在レーン幅値Ｎを取得するため、前記下流のＰＣＩｅ装置とネゴシエートするよう構成され、
前記ＣＰＵは、前記ＭＳＩメッセージにおけるデバイスＩＤに従って、前記ＰＣＩｅ装置から前記ＰＣＩｅ装置のレーンネゴシエーション能力値Ｍ及び前記現在レーン幅値Ｎを取得し、ＮとＭ／２とを比較し、Ｎ＜Ｍ／２であるとき、レーン反転処理を実行するよう前記ＰＣＩｅ装置に指示するよう構成され、
前記ＰＣＩｅ装置は更に、前記ＣＰＵにより送信されたレーン反転処理を実行する指示を受信した後に、前記ＰＣＩｅ装置と前記下流のＰＣＩｅ装置との間のリンクに対して前記レーン反転処理を実行し、新たな現在レーン幅値Ｎ’を取得するため、前記下流のＰＣＩｅ装置とネゴシエートするよう構成されるシステム。
【請求項１０】
Ｎ＜Ｍ／２であるとき、前記ＣＰＵは更に、前記ＰＣＩｅ装置と前記下流のＰＣＩｅ装置との間のリンクのレーン番号０からレーン番号（Ｍ／２−１）までを無効にするよう構成される、請求項９記載の処理システム。
【請求項１１】
Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｐｒｅｓｓ（ＰＣＩｅ）リンク故障を処理するＰＣＩｅ装置であって、前記ＰＣＩｅ装置は、検出モジュール、ＭＳＩモジュール、ネゴシエートモジュール、レジスタ及びレーン反転モジュールを有し、
前記レジスタは、前記ＰＣＩｅ装置の現在レーン幅値Ｎ及びレーンネゴシエーション能力値Ｍを格納し、
前記検出モジュールは、前記ＰＣＩｅ装置と下流のＰＣＩｅ装置との間のリンクの通信状態をモニタリングし、前記リンクのレーンにおいて故障が発生したと検出すると、レーン故障指示メッセージを前記ＭＳＩモジュールに送信するよう構成され、
前記ＭＳＩモジュールは、前記検出モジュールにより送信された前記レーン故障指示メッセージを受信した後に、ＭＳＩメッセージを中央処理ユニット（ＣＰＵ）に送信するよう構成され、前記ＭＳＩメッセージは前記ＰＣＩｅ装置のデバイスＩＤを含み、
前記ネゴシエートモジュールは、前記ＰＣＩｅ装置と前記下流のＰＣＩｅ装置との間のリンクのレーン幅をネゴシエートするよう構成され、
前記レーン反転モジュールは、前記ＣＰＵにより送信されたレーン反転処理を実行する指示を受信した後に、前記ＰＣＩｅ装置と前記下流のＰＣＩｅ装置の間のリンクのレーンに対して前記レーン反転処理を実行するよう構成されるＰＣＩｅ装置。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００３０
【補正方法】変更
【補正の内容】
【００３０】
Ｎ＜Ｍ／２である場合、ＣＰＵは、第１ＰＣＩｅ装置と第２ＰＣＩｅ装置との間のリンクに対してレーン反転処理を実行するよう第１ＰＣＩｅ装置に指示する。Ｎ＜Ｍ／２であるとき、第１ＰＣＩｅ装置が第２ＰＣＩｅ装置と再ネゴシエートすることにより取得される現在レーン幅は、トータルのリンク幅の半分未満であり、これは、故障したレーンのレーン番号がＭ／２未満であることを示す。レーン反転処理は、第１ＰＣＩｅ装置が第１ＰＣＩｅ装置と第２ＰＣＩｅ装置との間のリンクのレーンを反対方向に再番号付けすることを示す。第１ＰＣＩｅ装置と第２ＰＣＩｅ装置との間のリンクのレーンが当初は左から右に０から始まって１５まで番号付けされている場合、第１ＰＣＩｅ装置がレーン反転処理を実行した後、第１ＰＣＩｅ装置と第２ＰＣＩｅ装置との間のリンクのレーンは右から左に０から１５まで番号付けされ、逆の場合も同様である。例えば、本実施例では、第１ＰＣＩｅ装置がレーン反転処理を実行した後、元のレーン番号１５のレーン番号は１５から０に変更され、すなわち、元のレーン番号１５はレーン番号０に変更され、元のレーン番号１４のレーン番号は１４から１に変更され、すなわち、元のレーン番号１４はレーン番号１に変更され、残りは同様に導くことができる。レーン反転処理を実行するよう第１ＰＣＩｅ装置に指示する前に、ＣＰＵは更に、第１ＰＣＩｅ装置と第２ＰＣＩｅ装置との間のレーン番号０からレーン番号（Ｍ／２−１）を無効にしてもよい。レーン番号０からレーン番号（Ｍ／２−１）が無効にされた後、第１ＰＣＩｅ装置は、無効にされたレーンをもはや番号付けする必要はない。この場合、第１ＰＣＩｅ装置は、元のレーン番号Ｍ／２のレーン番号が（Ｍ／２−１）に変更されるまで、レーン反転処理を実行し、元のレーン番号Ｍのレーン番号を０に変更し、元のレーン番号（Ｍ−１）のレーン番号を１に変更するなど行う。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００６８
【補正方法】変更
【補正の内容】
【００６８】
Ｎ≧Ｍ／２であるとき、それは、第１ＰＣＩｅ装置５０３と第２ＰＣＩｅ装置５０５との間のリンクの現在レーン幅がＭ／２以上であることを示し、この場合、リンク５０４の性能は最大程度まで保持される。ＣＰＵ５０１は処理を実行しない。第１ＰＣＩｅ装置５０３が所定の制限時間内にＣＰＵ５０１の指示を受信しなかった場合、第１ＰＣＩｅ装置５０３は、ネゴシエーションにより取得された現在レーン幅Ｎを利用することによって、第２ＰＣＩｅ装置５０４５とのデータ伝送を実行する。リンク５０４の伝送性能がまた保証される。
【国際調査報告】
2016526311.tif 000008
2016526311.tif 000009
2016526311.tif 000010
2016526311.tif 000011