JP2016526311A - PCIeリンク故障を処理する方法、装置及びシステム - Google Patents

PCIeリンク故障を処理する方法、装置及びシステム Download PDF

Info

Publication number
JP2016526311A
JP2016526311A JP2016510920A JP2016510920A JP2016526311A JP 2016526311 A JP2016526311 A JP 2016526311A JP 2016510920 A JP2016510920 A JP 2016510920A JP 2016510920 A JP2016510920 A JP 2016510920A JP 2016526311 A JP2016526311 A JP 2016526311A
Authority
JP
Japan
Prior art keywords
pcie device
lane
pcie
link
downstream
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2016510920A
Other languages
English (en)
Other versions
JP6110560B2 (ja
Inventor
▲閣▼ 杜
▲閣▼ 杜
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of JP2016526311A publication Critical patent/JP2016526311A/ja
Application granted granted Critical
Publication of JP6110560B2 publication Critical patent/JP6110560B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3027Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0745Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in an input/output transactions management context
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/2205Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested
    • G06F11/221Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested to test buses, lines or interfaces, e.g. stuck-at or open line faults
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4022Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4221Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Information Transfer Systems (AREA)
  • Bus Control (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Communication Control (AREA)
  • Maintenance And Management Of Digital Transmission (AREA)
  • Hardware Redundancy (AREA)

Abstract

本発明は、PCIeリンク故障を処理する方法、装置及びシステムを開示する。PCIe装置と下流のPCIe装置との間のリンクのレーンにおいて故障が発生したと検出すると、PCIe装置は、MSIメッセージをCPUに送信し、下流のPCIe装置と現在レーン幅値をネゴシエートし、CPUは、MSIメッセージに従ってPCIe装置からPCIe装置のレーンネゴシエーション能力値M及び現在レーン幅値Mを取得し、N及びM/2を比較し、N<M/2であるとき、PCIe装置は、PCIe装置と下流のPCIe装置との間のリンクに対してレーン反転処理を実行し、それから下流のPCIe装置と新たな現在レーン幅値をネゴシエートする。このようにして、PCIe装置との間のリンクのレーンにおいて故障が発生すると、本発明の技術的方策を利用することは、故障レーンの番号に関わらず、元のリンクの1/2のレーンが2つのPCIe装置がデータ伝送を実行し続けるため提供可能であることを保証でき、これは、従来技術におけるリンク幅に課された故障レーンのレーン番号の制限を緩和し、最適なリンク幅が再ネゴシエーション後に実現可能である。

Description

本発明は、データ伝送技術の分野に関し、特にPCIeリンク故障を処理する方法、装置及びシステムに関する。
現在、データ伝送技術の分野では、PCIe(Peripheral Component Interconnect Express、ペリフェラル・コンポーネント・インターコネクト・エクスプレス)プロトコルが広く適用されてきた。PCIeプロトコルが装置に適用されるとき、データ伝送はポイント・ツー・ポイント形式により装置間で実行される。PCIeプロトコルを利用することによってデータ伝送を実行する装置は、PCIe装置として総称される。システムでは、リンク接続は、シリアライザ/デ・シリアライザ(serdes,Serializer/De−Serializer)回路を利用することによって、2つのPCIe装置の間の通信のため実現可能である。2つのPCIe装置がデータ伝送を実行するとき、データ伝送は、ネゴシエートされたレートによりserdesを利用することによって実行される。2つのPCIe装置の間のリンクは、1,2,4,8,16又は32個のserdesを含むものであってもよい。複数のserdesがあるとき、これらのserdesは連続する数字を昇順に利用することによって、逐次的に番号付けされる。1つのserdesはリンクの1つのレーン(lane)であり、serdes番号はレーン番号として参照される。
2つのPCIe装置の間のデータ伝送の帯域幅(W)は、レーン数(N)とネゴシエートされたレート(S)との積に等しく、すなわち、帯域幅の式はW=N×Sである。2つのPCIe装置の間のリンクのネゴシエートされたレート(S)は、使用されるPCIeプロトコルのバージョンにより変わり、現在、1秒間に1つの回路により伝送可能なデータの容量を示す、GEN1(2.5 GT/s)、GEN2(5.0 GT/s)、GEN3(8.0 GT/s)及びGEN4(16.0 GT/s)である4つのタイプのネゴシエートされたレートがある。一般に、1つのPCIe装置のリンクによりサポートされるネゴシエートされたレート(S)は固定され、この場合、通信帯域幅(W)のますます高くなるユーザ要求を充たすため、帯域幅は、リンクのレーン数(N)を増やすことによってしか改善できない。
2つのPCIe装置がデータを送信するとき、2つのPCIe装置の間のリンクの全てのレーンが同時に利用される必要がある。レーンの1つにおいて故障が発生した場合、データ伝送が中断される。従来技術では、PCIe装置に接続されるレーンにおいて故障が発生すると、PCIe装置は、PCIeプロトコルの再ネゴシエーション機構に従ってリンクネゴシエーションを実行する。リンクネゴシエーション中、ネゴシエーションは、最小のレーン番号のレーンから始まって実行され、リンクネゴシエーションは、レーン番号の昇順に逐次的に実行される。レーン番号の昇順にリンク再ネゴシエーションを連続的に実行する方式は、上方ネゴシエーションとして参照される。例えば、GEN2のレート及び16のリンク幅(PCIe2.0×16)について当初にネゴシエートする必要があるPCIe装置のレーン番号2において故障が発生すると、PCIe装置は、PCIeプロトコルの再ネゴシエーション機構に従って、レーン番号0から始まって上方にリンクネゴシエーションを実行する。ネゴシエーションは、レーン番号2における故障のためレーン番号2に対して逐次的に実行することができず、レーン番号0からレーン番号1までネゴシエーションが実行された後、リンクネゴシエーションは継続できない。この場合、ネゴシエーションは2つのレーン、レーン番号0及びレーン番号1のみに対して実行が成功し、すなわち、データ伝送はレーン番号0及びレーン番号1においてしか継続できない。PCIeプロトコルに規定される2つのPCIe装置の間のリンクのレーン幅によると、2つのPCIe装置の間のリンクのレーン幅は、再ネゴシエーションにより取得される2であり、すなわち、2つのレーンしかデータを送信するためPCIe装置に提供することはできない。この場合、帯域幅の式におけるNは元の16から2に変更され、PCIe装置の間のデータ伝送の性能は、元の性能の1/8にすぎない。しかしながら、レーン番号1において故障が発生した場合、上記の再ネゴシエーション方法によると、1つのレーンしかネゴシエートできず、この場合、データ伝送性能は、元の性能の1/16にすぎない。
従来技術では、PCIe装置の間のリンクのレーンにおいて故障が発生すると、リンクのレーン幅の再ネゴシエーションは、故障したレーンのレーン番号によって大きく制限され、再ネゴシエーションにより取得されるレーン幅に関する不確実性とレーン幅が大きく減少するケースとを導き、レーンのデータ伝送性能に重大な影響を与える。
これを鑑み、本発明は、故障が発生するレーンのレーン番号の制限のため、再ネゴシエーションにより取得されたレーン幅において不確実性が存在し、レーン幅が大きく減少するケースが発生するかもしれず、レーンの伝送性能に重大な影響を与える従来技術における問題を解決するため、PCIeリンク故障を処理する方法、装置及びシステムを提供する。
本発明の第1の態様は、PCIeリンク故障を処理する方法であって、
PCIe装置が、前記PCIe装置と下流のPCIe装置との間のリンクのレーンにおいて故障が発生したと検出し、メッセージ・シグナルド・インタラプトMSIメッセージを中央処理ユニットCPUに送信するステップであって、前記MSIメッセージは前記PCIe装置のデバイスIDを有する、送信するステップと、
前記PCIe装置が、現在レーン幅値Nを取得するため、前記下流のPCIe装置とネゴシエートするステップと、
前記CPUが、前記受信したMSIメッセージにおけるデバイスIDに従って、前記PCIe装置から前記PCIe装置のレーンネゴシエーション能力値M及び前記現在レーン幅値Nを取得するステップと、
前記CPUが、NとM/2とを比較するステップと、
N<M/2である場合、前記CPUが、レーン反転処理を実行するよう前記PCIe装置に指示するステップと、
前記PCIe装置が、前記PCIe装置と前記下流のPCIe装置との間のリンクに対して前記レーン反転処理を実行するステップと、
前記PCIe装置が、新たな現在レーン幅値N’を取得するため、前記下流のPCIe装置とネゴシエートし、N’個のレーンを利用することによって前記下流のPCIe装置とのデータ伝送を実行し続けるステップと、
を有する方法を提供する。
第1の態様の第1の可能な実現方式では、当該方法は更に、N≧M/2である場合、前記PCIe装置が、ネゴシエーションにより取得されたN個のレーンを利用することによって、前記下流のPCIe装置とのデータ伝送を実行し続けるステップを有する。
第1の態様又は第1の態様の第1の可能な実現方式を参照して、第2の可能な実現方式では、N<M/2である場合、当該方法は更に、前記CPUが、前記PCIe装置と前記下流のPCIe装置との間のリンクのレーン番号0からレーン番号(M/2−1)までを無効にするステップを有する。
本発明の第2の態様は、PCIeリンク故障を処理する方法であって、
PCIe装置により報告されたメッセージ・シグナルド・インタラプトMSIメッセージを受信するステップであって、前記MSIメッセージは前記PCIe装置のデバイスIDを有する、受信するステップと、
前記デバイスIDに従って前記PCIe装置から前記PCIe装置のレーンネゴシエーション能力値M及び現在レーン幅値Nを取得するステップであって、前記現在レーン幅値Nは、前記PCIe装置が下流のPCIe装置とネゴシエートすることによって取得される、取得するステップと、
NとM/2とを比較するステップと、
N<M/2である場合、レーン反転処理を実行するよう前記PCIe装置に指示するステップと、
を有する方法を提供する。
第2の態様の第1の可能な実現方式では、N<M/2である場合、当該方法は更に、前記PCIe装置と前記下流のPCIe装置との間のリンクのレーン番号0からレーン番号(M/2−1)までを無効にするステップを有する。
第2の態様又は第2の態様の第1の可能な実現方式を参照して、第2の可能な実現方式では、前記PCIe装置のレーンネゴシエーション能力値Mは、前記PCIe装置と前記下流のPCIe装置との間のリンクのレーンの合計数に等しい。
本発明の第3の態様は、PCIeリンク故障を処理する方法であって、
PCIe装置が、前記PCIe装置と下流のPCIe装置との間のリンクのレーンにおいて故障が発生したと検出し、メッセージ・シグナルド・インタラプトMSIメッセージを中央処理ユニットCPUに送信するステップであって、前記MSIメッセージは前記PCIe装置のデバイスIDを有する、送信するステップと、
現在レーン幅値Nを取得するため、前記下流のPCIe装置とネゴシエートするステップと、
前記CPUにより送信されたレーン反転処理を実行する指示を受信し、前記PCIe装置と前記下流のPCIe装置との間のリンクに対して前記レーン反転処理を実行するステップと、
新たな現在レーン幅値N’を取得するため、前記下流のPCIe装置とネゴシエートし、N’個のレーンを利用することによって前記下流のPCIe装置とのデータ伝送を実行し続けるステップと、
を有する方法を提供する。
第3の態様の第1の可能な実現方式では、前記PCIe装置が前記CPUにより送信されたレーン反転処理を実行する指示を所定の時間内に受信しなかった場合、前記PCIe装置が、N個のレーンを利用することによって、前記下流のPCIe装置とのデータ伝送を実行し続ける。
本発明の第4の態様は、PCIeリンク故障を処理するシステムであって、当該システムは、中央処理ユニットCPU、PCIe装置及び下流のPCIe装置を有し、前記CPUは前記PCIe装置に接続され、前記PCIe装置はリンクを利用することによって前記下流のPCIe装置に接続され、
前記PCIe装置は、前記PCIe装置と前記下流のPCIe装置との間のリンクのレーンにおいて故障が発生したか検出し、故障が発生すると、メッセージ・シグナルド・インタラプトMSIメッセージを前記CPUに報告するよう構成され、前記MSIメッセージは前記PCIe装置のデバイスIDを有し、前記PCIe装置は更に、現在レーン幅値Nを取得するため、前記下流のPCIe装置とネゴシエートするよう構成され、
前記CPUは、前記MSIメッセージにおけるデバイスIDに従って、前記PCIe装置から前記PCIe装置のレーンネゴシエーション能力値M及び前記現在レーン幅値Nを取得し、NとM/2とを比較し、N<M/2であるとき、レーン反転処理を実行するよう前記PCIe装置に指示するよう構成され、
前記PCIe装置は更に、前記CPUにより送信されたレーン反転処理を実行する指示を受信した後に、前記PCIe装置と前記下流のPCIe装置との間のリンクに対して前記レーン反転処理を実行し、新たな現在レーン幅値N’を取得するため、前記下流のPCIe装置とネゴシエートするよう構成されるシステムを提供する。
第4の態様の第1の可能な実現方式では、N<M/2であるとき、前記CPUは更に、前記PCIe装置と前記下流のPCIe装置との間のリンクのレーン番号0からレーン番号(M/2−1)までを無効にするよう構成される。
本発明の第5の態様は、PCIeリンク故障を処理するPCIe装置であって、検出モジュール5031、MSIモジュール5033、ネゴシエートモジュール5035、レジスタ5037及びレーン反転モジュール5039を有し、
前記レジスタ5037は、前記PCIe装置の現在レーン幅値N及びレーンネゴシエーション能力値Mを格納し、
前記検出モジュール5031は、前記PCIe装置503と下流のPCIe装置との間のリンク504の通信状態をモニタリングし、前記リンク504のレーンにおいて故障が発生したと検出すると、レーン故障指示メッセージを前記MSIモジュール5033に送信するよう構成され、
前記MSIモジュール5033は、前記検出モジュール5031により送信された前記レーン故障指示メッセージを受信した後に、MSIメッセージを中央処理ユニットCPU501に送信するよう構成され、前記MSIメッセージは前記PCIe装置503のデバイスIDを含み、
前記ネゴシエートモジュール5035は、前記PCIe装置と前記下流のPCIe装置との間のリンクのレーン幅をネゴシエートするよう構成され、
前記レーン反転モジュール5039は、前記CPUにより送信されたレーン反転処理を実行する指示を受信した後に、前記PCIe装置と前記下流のPCIe装置の間のリンクのレーンに対して前記レーン反転処理を実行するよう構成されるPCIe装置を提供する。
従来技術と比較して、本発明は、PCIeリンク故障を処理する方法、装置及びシステムを開示し、PCIe装置の現在レーン幅値とレーンネゴシエーション能力値Mとを比較することによって、当該方法は、PCIe装置のレーン幅が、故障が発生したレーンのレーン番号に関わらず、レーンネゴシエーション能力値の半分を維持することを保証することができることが、上記の技術的方策からわかる。本発明において開示されるPCIeリンク故障を処理する方法、装置及びシステムは、リンク再ネゴシエーションに課せられる故障したレーンのレーン番号の制限を大きく緩和し、これにより、最適なリンク幅が再ネゴシエーションの後に達成できる。
本発明の実施例又は従来技術における技術的方策をより明確に説明するため、以下において、実施例又は従来技術を説明するのに必要な添付図面が簡単に紹介される。明らかに、以下の説明における添付図面は本発明の単なる実施例を示し、当業者は、提供された添付図面から他の図面を依然として導出してもよい。
図1は、本発明の実施例において開示されるPCIe装置の間の接続の概略図である。 図2は、本発明の実施例において開示されるPCIe装置の間の接続の簡略化された概略図である。 図3は、本発明の実施例において開示されるPCIe装置の間の他の接続の簡略化された概略図である。 図4は、本発明の実施例において開示されるPCIe装置のリンク故障を処理する方法のフローチャートである。 図5は、本発明の実施例において開示されるPCIe装置の概略的な構成図である。
以下は、本発明の実施例における添付図面を参照して本発明の実施例における技術的方策を明確且つ完全に説明する。明らかに、説明される実施例は、本発明の実施例の全てでなく単に一部である。
本発明は、PCIe(Peripheral Component Interconnect Express、ペリフェラル・コンポーネント・インターコネクト・エクスプレス)装置のリンク故障を処理する新規な方法を提供する。PCIeプロトコルを利用することによってデータ伝送を実行する装置は、PCIe装置として総称される。PCIe装置は、独立した装置に統合されるチップであってもよいし、又は物理的に独立した装置であってもよいし、ここでは限定されない。PCIe装置の間の接続関係について、図1が参照されてもよい。図1に示されるように、2つのPCIe装置はデータ伝送を実行するため直接接続されてもよく、例えば、ルートコンプレクス(root complex)装置の下流のポートは、ルートコンプレクスとPCIe装置1との間のデータ伝送を実現するため、PCIe装置1の上流のポートに直接接続される。データ伝送はまた、例えば、スイッチを利用することによってデータ伝送を実現するなど、2つのPCIe装置の間で間接的に実行されてもよい。例えば、ルートコンプレクスの下流のポートはスイッチの上流のポートに接続され、スイッチの下流のポートは、ルートコンプレクスとPCIe装置2との間のデータ伝送を実現するため、PCIe装置2の上流のポートに接続される。1つのPCIe装置は複数のPCIe装置に同時に接続されてもよく、図1に示されるように、ルートコンプレクスは、PCIe装置1及びスイッチに同時に接続される。これらのPCIe装置は、中央化された方式により中央処理ユニットCPUによって管理されてもよい。
データ伝送はリンク接続によって2つのPCIe装置の間で実現され、リンクはシリアライザ/デ・シリアライザ(serdes,Serializer/De−Serializer)回路であってもよい。例えば、ルートコンプレクスの下流のポートは、複数のserdesを利用することによってPCIe装置1の上流のポートに接続され、これらのserdesは、ルートコンプレクスとPCIe装置1との間のリンクを形成する。2つのPCIe装置の間には1,2,4,8,16又は32個のserdesがあってもよく、2つのPCIe装置の間のserdesは2つのPCIe装置の間のリンクを形成する。2つのPCIe装置の間のデータ伝送の帯域幅(W)は、レーン数(N)とネゴシエートされたレート(S)との積に等しく、すなわち、帯域幅の式はW=N×Sである。2つのPCIe装置の間のリンクのネゴシエートされたレート(S)は、利用されるPCIeプロトコルのバージョンによって変わり、現在、1秒間に1つの回路により伝送可能なデータの容量を示すGEN1(2.5 GT/s)、GEN2(5.0 GT/s)、GEN3(8.0 GT/s)及びGEN4(16.0 GT/s)である4つのタイプのネゴシエートされたレートがある。一般に、1つのPCIe装置のリンクによりサポートされるネゴシエートされたレート(S)は固定され、この場合、通信帯域幅(W)のますます高くなるユーザ要求を充たすため、帯域幅は、リンクのレーン数(N)を増やすことによってしか改善できない。
複数のserdesがあるとき、これらのserdesは、昇順に連続する数字を利用することによって逐次的に番号付けされ、この場合、1つserdesは2つのPCIe装置の間のリンクのレーン(lane)であり、serdes番号はレーン番号として参照される。例えば、図1に示されるルートコンプレクスとPCIe装置1との間のレーンは、0から15までの数字を利用することによって、左から右に逐次的に番号付けされる。ここに説明されるserdesは、既存のserdes構造を利用し、既存の機能をサポートし、ここでは別には再説明されない。
2つのPCIe装置が接続されるとき、リンクネゴシエーションを開始した一方のPCIe装置が上流のPCIe装置として参照され、当該一方のPCIe装置に接続された他方が下流のPCIe装置として参照される。図1に示されるように、ルートコンプレクス及びPCIe装置1が接続されるとき、ルートコンプレクスが上流のPCIe装置であり、PCIe装置1が下流のPCIe装置である。ルートコンプレクス及びスイッチが接続されるとき、ルートコンプレクスが上流のPCIe装置であり、スイッチが下流のPCIe装置である。スイッチは更にPCIe装置2に接続され、この場合、スイッチが上流のPCIe装置であり、PCIe装置2が下流のPCIe装置である。1つのPCIe装置が複数のPCIe装置に同時に接続されるとき、データ伝送は、独立したリンクを利用することによって、当該1つのPCIe装置と他の全てのPCIe装置との間で実行される。例えば、PCIeスイッチがPCIe装置2及びPCIe装置3に同時に接続され、リンク1を利用することによって、PCIeスイッチとPCIe装置2との間のデータ伝送が実現され、リンク2を利用することによって、スイッチとPCIe装置3との間のデータ伝送が実現される。リンク1及びリンク2は互いに独立して存在し、互いに影響を与えない。リンク1及びリンク2のレーン数は、同じであってもよいし、又は異なるものであってもよい。しかしながら、データ伝送は、同じ方式によりリンクを利用することによってPCIe装置の間で実行される。以下において、2つのPCIe装置の間のリンクにおいて実行される故障を処理する方法の具体例を利用することによって説明が与えられる。
全体的な処理をより明確且つより明示的にするため、図2に示されるように、2つのPCIe装置の間の接続関係が簡単化され、ここで、第1PCIe装置は、上流のPCIe装置であり、第2PCIe装置とのレーンネゴシエーションを実行する。第2PCIe装置は、下流のPCIe装置である。中央処理ユニットCPUは、2つのPCIe装置を管理する。第1PCIe装置と第2PCIe装置との間のリンクは16個のserdesを含み、各serdesは、第1PCIe装置と第2PCIe装置との間のリンクのレーンであり、16個のレーンは、左から右に0から始まって15まで連続的に番号付けされる。図2に示されるように、番号0のレーンはレーン番号0として参照され、番号1のレーンはレーン番号1として参照され、同様に、番号15のレーンはレーン番号15である。ここでのレーン数は、説明のためだけに利用される。実際の利用では、1,2,4,8又は32個のレーンが要求に従って設定されてもよく、それの実現原理は、16個のレーンの実現原理と同じである。
メッセージ・シグナルド・インタラプト(MSI,message signal interrupt)機能が、第1PCIe装置に設定される。第1PCIe装置と第2PCIe装置との間に接続されるリンクの1以上のレーンにおいて故障が発生したと検出すると、第1PCIe装置は、MSIメッセージをCPUに報告し、ここで、MSIメッセージは第1PCIe装置のデバイスIDを含む。第1PCIe装置は、故障したレーンのレーン番号をレジスタに記憶する。第1PCIe装置は、第1PCIe装置と第2PCIe装置との間のリンクの現在レーン幅値Nを取得するため、PCIeプロトコルの再ネゴシエーション機構に従って第2PCIe装置とのレーン再ネゴシエーションを実行する。レーン再ネゴシエーション中、PCIeに規定されるレーンネゴシエーション機構に従って、第1PCIe装置は、ネゴシエーションが故障したレーンに対して実行されるまで、最小のレーン番号のレーンから開始してレーン番号の昇順に上方に第2PCIe装置とのリンクネゴシエーションを連続的に実行する。故障したレーンに対するネゴシエーションの実行は成功できないため、再ネゴシエーション処理は終了する。第1PCIe装置は更に、PCIeプロトコルに指定される2つのPCIe装置の間のリンクのレーン数に従って、リンクの現在レーン幅値Nを決定する。レーン番号は連続的である必要があり、リンクネゴシエーションは最小の番号のレーンから開始されるため、再ネゴシエーションにより取得されたレーン数は故障したレーンのレーン番号によって変わり、不確実性が存在する。故障したレーンのレーン番号が相対的に小さいとき、再ネゴシエーションにより取得されたレーン数もまた大きく減少し、すなわち、取得された現在レーン幅値Nは大きく減少し、これにより、2つのPCIe装置の間のデータ伝送の性能に重大な影響を与える。例えば、第1PCIe装置と第2PCIe装置との間のレーン番号3において故障が発生すると、第1PCIe装置は、PCIeプロトコルのネゴシエーション機構に従って、レーン番号0から開始して、第2PCIe装置とのリンクネゴシエーションを実行する。レーン番号0には故障は発生しておらず、従って、ネゴシエーションは成功し、ネゴシエーションはレーン番号1に進み、レーン番号1におけるネゴシエーションは成功し、ネゴシエーションはレーン番号2に進み、レーン番号2におけるネゴシエーションは成功し、ネゴシエーションはレーン番号3に進む。レーン番号において故障が発生するため、ネゴシエーションの実行は成功できない。さらに、レーン番号は連続的である必要があり、ネゴシエーションはレーン番号3において中断した後に継続できなくなる。この場合、3つのレーンのみ、すなわち、レーン番号0、レーン番号1及びレーン番号2が利用可能である。さらに、2つのPCIe装置の間のリンクはPCIeプロトコルに従って1,2,4,8,16又は32個のレーンを含みうるため、第1PCIe装置と第2PCIe装置との間のネゴシエーションにより取得される現在レーン幅値Nは2である。当初は、データ伝送を実行するのに利用可能な第1PCIe装置と第2PCIe装置との間のレーンは16個あるが、レーン番号3において故障が発生した後、再ネゴシエーションにより取得され、データ伝送を実行するのに利用可能であるレーンは2つしかなく、これは当初の1/8である。この場合、第1PCIe装置と第2PCIe装置との間のリンクのレーン幅は大きく減少し、データ伝送性能は明らかに低下する。第1PCIe装置と第2PCIe装置との間のレーン番号1において故障が発生した場合、同様に、レーン番号0しか利用可能でない。この場合、第1PCIe装置と第2PCIe装置との間の再ネゴシエーションにより取得される現在レーン幅値Nは1であり、当初の1/16であり、データ伝送性能は大きく低下する。
本発明の本実施例では、第1PCIe装置により報告されたMSIメッセージを受信した後に、CPUはインタラプト処理プロセスに入る。CPUは、MSIメッセージにおける第1PCIe装置のデバイスIDに従って、第1PCIe装置から第1PCIe装置の現在レーン幅値N及び第1PCIe装置のレーンネゴシエーション能力値Mを取得する。第1PCIe装置のレーンネゴシエーション能力値Mは、第1PCIe装置が第2PCIe装置とネゴシエートすることによって取得可能な最大レーン幅値を表す。第1PCIe装置によるネゴシエートにより取得可能な最大レーン幅値は、第1PCIe装置と第2PCIe装置との間のリンクのレーンの合計数である。本実施例では、第1PCIe装置と第2PCIe装置との間のリンクのレーンは16個あり、従って、第1PCIe装置が第2PCIe装置とネゴシエートすることにより取得可能な最大レーン幅値は16であり、第1PCIe装置のレーンネゴシエーション能力値Mは16である。第1PCIe装置の現在レーン幅値Nは、第1PCIe装置が第2PCIe装置と再ネゴシエートすることにより取得される現在レーン幅値Nである。例えば、上述されるように、第1PCIe装置及び第2PCIe装置を接続する16個のレーンがあり、第1PCIe装置と第2PCIe装置との間のレーン番号3において故障が発生すると、第1PCIe装置は、2である現在レーン幅値Nを取得するため、PCIeプロトコルの再ネゴシエーション機構に従って第2PCIe装置と再ネゴシエートする。
CPUは、第1PCIe装置の取得した現在レーン幅値Nとレーンネゴシエーション能力値Mとを比較する。本発明では、CPUは、2つのPCIe装置の間のリンクのレーン数の規則に従って、NとM/2とを比較する。
N≧M/2である場合、CPUは処理を実行しない。第1PCIe装置がCPUにより送信された指示を所定の時間内に受信しない場合、第1PCIe装置は、再ネゴシエーションにより取得されたN個のレーンを利用することによって、第2PCIe装置とのデータ伝送を実行し続ける。この場合、N≧M/2は、故障したレーンのレーン番号が(M/2−1)より大きいことを示しており、2つのPCIe装置の間のリンクは1,2,4,8,16又は32個のレーンを含みうるため、第1PCIe装置が第2PCIe装置と再ネゴシエートすることによって取得される現在レーン幅値NはM/2であり、第1PCIe装置は、再ネゴシエーションにより取得されるリンクレーンを利用することによって、第2PCIe装置とのデータ伝送を実行し続ける。
N<M/2である場合、CPUは、第1PCIe装置と第2PCIe装置との間のリンクに対してレーン反転処理を実行するよう第1PCIe装置に指示する。N<M/2であるとき、第1PCIe装置が第2PCIe装置と再ネゴシエートすることにより取得される現在レーン幅は、トータルのリンク幅の半分未満であり、これは、故障したレーンのレーン番号がM/2未満であることを示す。レーン反転処理は、第1PCIe装置が第1PCIe装置と第2PCIe装置との間のリンクのレーンを反対方向に再番号付けすることを示す。第1PCIe装置と第2PCIe装置との間のリンクのレーンが当初は左から右に0から始まって15まで番号付けされている場合、PCIe装置がレーン反転処理を実行した後、第1PCIe装置と第2PCIe装置との間のリンクのレーンは右から左に0から15まで番号付けされ、逆の場合も同様である。例えば、本実施例では、第1PCIe装置がレーン反転処理を実行した後、元のレーン番号15のレーン番号は15から0に変更され、すなわち、元のレーン番号15はレーン番号0に変更され、元のレーン番号14のレーン番号は14から1に変更され、すなわち、元のレーン番号14はレーン番号1に変更され、残りは同様に導くことができる。レーン反転処理を実行するよう第1PCIe装置に指示する前に、CPUは更に、第1PCIe装置と第2PCIe装置との間のレーン番号0からレーン番号(M/2−1)を無効にしてもよい。レーン番号0からレーン番号(M/2−1)が無効にされた後、第1PCIe装置は、無効にされたレーンをもはや番号付けする必要はない。この場合、第1PCIe装置は、元のレーン番号M/2のレーン番号が(M/2−1)に変更されるまで、レーン反転処理を実行し、元のレーン番号Mのレーン番号を0に変更し、元のレーン番号(M−1)のレーン番号を1に変更するなど行う。
レーン反転処理を実行した後、第1PCIe装置は、新たな現在レーン幅値N’を取得するため、第2PCIe装置との新たな現在レーン幅値に対して再ネゴシエーションを実行する。第1PCIe装置が第2PCIe装置と現在レーン幅を再ネゴシエートするための方法は、上記の再ネゴシエーション方法と同じである。PCIeプロトコルの要求に従って、第1PCIe装置は、反転後の最小の番号のレーンから開始してネゴシエーションを実行し、レーン番号の昇順により上方に連続的に第2PCIe装置とのリンクネゴシエーションを再実行する。すなわち、第1PCIe装置は反転されたレーン番号0から始まるネゴシエーションを実行し、その後、ネゴシエーションがレーン番号(M/2−1)に対して実行されるまで、レーン番号1及びレーン番号2に対して逐次的にネゴシエーションを実行する。第1PCIe装置は、N<M/2の場合にはレーン反転処理を実行し、この場合、故障したレーンのレーン番号はM/2未満であり、すなわち、故障したレーンは、レーン番号0からレーン番号(M/2−1)までの1つであり、レーン番号0からレーン番号(M/2−1)までは無効とされるが、レーン番号M/2からレーン番号Mにおいて故障は発生せず、データ伝送が実行可能である。従って、第1PCIe装置がレーン反転を実行した後、新たなレーン番号0からレーン番号(M/2−1)において故障は発生せず、第1PCIe装置が第2PCIe装置と再ネゴシエートすることにより取得される新たな現在レーン幅値N’はM/2である。
PCIe装置のレーンにおいて故障が発生すると、本発明の方策を利用することは、再ネゴシエーションにより取得されるレーン幅が、故障したレーンのレーン番号に関わらず、元のレーン幅の1/2であることを保証することが可能であり、故障したレーンのレーン番号が相対的に小さいとき、PCIe装置のレーン値が大きく減少し、これにより、PCIe装置の間のデータ伝送速度が影響を受けることを回避する。
本発明の技術的方策が、特定の具体例を利用することによって以下において詳細に記載及び説明される。PCIe装置の間の接続関係が図3に示され、方法の処理については、図4を参照されたい。
以下に説明されるPCIe装置は、PCIeプロトコルを利用することによって他の装置と通信する装置を参照する。図3に示されるように、ルートコンプレクス(root complex)装置は、PCIeプロトコルを利用することによって下流のPCIe装置と通信するPCIe装置、すなわち、図2に示される第1PCIe装置などの上流のPCIe装置を表す。PCIe装置1(PCIe apparatus 1)は、PCIeプロトコルを利用することによって上流のPCIe装置と通信するPCIe装置、すなわち、図2に示される第2PCIe装置などの下流のPCIe装置を表す。さらに、PCIe装置は、物理的に独立した装置であってもよいし、又は、デバイスに統合されたチップであってもよく、図1に示されるPCIe装置に限定されるものでない。
root complexは、下流のポートを利用してデータ伝送を実現することによって、PCIe装置1の上流のポートに接続される。本実施例は、root complexとPCIe装置1との間に16個のserdesがある具体例を利用することによって説明される。これら16個のserdesは、root complexとPCIe装置1との間のリンクを形成し、1つのserdesは1つのレーンとして参照される。すなわち、root complexとPCIe装置1との間のレーン数は16であり、すなわち、X16である。さらに、16個のレーンは、左から右に0から15まで連続的に番号付けされる。この場合、root complexとPCIe装置1との間の最大レーン幅値は16である。root complexのレーンネゴシエーション能力値Mは、root complexの最大レーン幅値に等しく、root complexの最大レーン幅値は、root complexによるネゴシエートにより取得可能なroot complexとPCIe装置1との間の最大レーン数を表す。本実施例では、root complexのレーンネゴシエーション能力値Mは16に等しい。root complexは、root complexのレーンネゴシエーション能力値Mをレジスタに記憶する。PCIeプロトコルの規定に従って、2つのPCIe装置の間のリンクは1,2,4,8,16又は32個のレーンを含むものであってもよい。本実施例は、具体例として16個のレーンを利用することによって説明される。リンクが1,2,4,8又は32個のレーンを有するとき、その実現方式は16個のレーンの実現方式と同じである。
root complexは更に、他のPCIe装置に接続されてもよい。root complexが複数のPCIe装置に接続されるとき、図1に示されるように、root complexは更にスイッチに接続されてもよく、root complexとPCIe装置との間のレーンネゴシエーション能力値は、互いを区別するため、M1,M2及びM3として別々に記録されてもよい。以下の方法では、root complexが1つのPCIe装置に接続される具体例を利用することによって説明が与えられる。root complexが複数のPCIe装置に接続されるとき、root complexとPCIe装置の何れかとの間のレーンにおける故障を処理する方法は、本実施例におけるものと同様である。
メッセージ・シグナルド・インタラプト(MSI,message signal interrupt)機能が、root complexに設定される。root complexは、PCIe装置1に接続されるレーンをモニタリングし、root complexとPCIe装置1との間のレーン幅が変更されたことを検出すると、root complexは、MSIメッセージをCPUに報告する。root complexがPCIe装置1とのデータ伝送を実行すると、2つの装置の間に接続される全てのレーン(すなわち、全てのserdes)が利用される。その何れか1以上のレーンにおいて故障が発生すると、root complexは、root complexとPCIe装置1との間のレーン幅が変更されたことを検出し、root complexは、MSIメッセージを生成し、MSIメッセージをCPUに報告する。MSIメッセージは、root complexのポートのB:D:F(バス番号:デバイス番号:ファンクション番号)などのroot complexのデバイスIDを含む。root complexは、故障したレーンのレーン番号をレジスタに記憶する。本実施例では、root complexとPCIe装置1との間のレーン番号5において故障が発生し、root complexは、レーン番号5において故障が発生したと検出し、故障したレーンのレーン番号情報をレジスタに記憶する。
MSIメッセージをCPUに報告した後、root complexは、現在レーン幅値Nを取得するため、PCIe装置1と再ネゴシエートする。PCIeプロトコルの規定によると、PCIe装置の間のリンクのレーンネゴシエーションは、故障が発生したレーンに対してネゴシエーションが実行されるまで、最小の番号のレーンから開始される。このようにして、ネゴシエーションの実行が成功したレーンのレーン番号は依然として連続的であり、データを送信するのに利用可能なレーン数が取得されてもよい。本実施例では、root complexは、レーン番号0から始まってPCIe装置1とネゴシエートし、レーン番号0に対して実行されたネゴシエーションが成功した後(すなわち、レーン番号0が正常であり、データを送信するのに利用可能である)、それから、レーン番号0に対してネゴシエーションが実行される。残りは同様に導くことができる。ネゴシエーションがレーン番号5に対して実行されると、レーン番号5において故障が発生しているため、レーン番号5に対して実行されるネゴシエーションは不成功であり、root complexはPCIe装置1とのネゴシエートを止める。ルートコンプレクスとPCIe装置1との間のレーン番号0からレーン番号4までに対するネゴシエーションの実行は成功し、すなわち、root complexとPCIe装置1との間の5つのレーンに対するネゴシエーションの実行は成功する。このとき、2つのPCIe装置の間のレーンが1,2,4,8,16又は32個のレーンを含みうるPCIeプロトコルの規定によると、root complexとPCIe装置1との間の現在レーン幅値Nが4であると判断される。root complexは、再ネゴシエーションにより取得された現在レーン幅値Nをレジスタに記憶する。
root complexにより報告されたMSIメッセージを受信した後に、CPUは、インタラプト処理プロセスに入る。CPUは、MSIメッセージからroot complexのIDを抽出し、それから、取得したIDに従ってroot complexのレジスタからroot complexの現在レーン幅値N及びレーンネゴシエーション能力値Mを読む。root complexの現在レーン幅値Nは、root complexがroot complexとPCIe装置1との間のレーンにおいて故障が発生したことを検出した後に、PCIe装置1との再ネゴシエートにより取得される。本実施例では、root complexとPCIe装置1との間のserdesレーン番号5において故障が発生した後、再ネゴシエーションにより取得された現在レーン幅値Nは4である。具体的なネゴシエーション方法は前のパラグラフで説明され、ここでは個別に再説明されない。さらに、上述されるように、本実施例では、root complexとPCIe装置1との間には16個のレーンがあり、従って、root complexのレーンネゴシエーション能力値Mは16である。
CPUは、root complexの現在レーン幅値Nとroot complexのレーンネゴシエーション能力値Mとを比較する。本発明では、CPUは、2つのPCIe装置の間のリンクのレーン数の規則に従ってNとM/2とを比較する。
N≧M/2であるとき、root complexがPCIe装置1とネゴシエートすることによって取得される現在レーン幅値は最大レーン幅値の半分であり、この場合、CPUは処理を実行しない。root complexがCPUにより送信された指示を所定の時間内に受信しなかった場合、root complexは、再ネゴシエーションにより取得されるN個のリンクレーンを利用することによって、PCIe装置1つのデータ伝送を実行し続ける。
N<M/2であるとき、root complexがPCIe装置1とネゴシエートすることによって取得される現在レーン幅値は、最大レーン幅値の半分未満であり、この場合、root complexとPCIe装置1との間のリンクの幅は大きく減少する。この場合、CPUは、root complexとPCIe装置1との間のレーン番号0からレーン番号(M/2−1)までを無効にし、root complexにレーン反転処理を開始するよう指示する。レーン反転処理は、PCIe装置がPCIe装置と下流のPCIe装置との間のリンクのレーンを反対方向に再び番号付けする。レーン反転処理を開始した後、root complexは、root complexとPCIe装置1との間のレーンを反対方向に再び番号付けする。root complexとPCIe装置1との間のレーンは、左から右に昇順に連続的に番号付けされる。レーン反転処理を開始した後、root complexは、右から左に昇順にroot complexとPCIe装置1との間のレーンを連続的に番号付けする。具体的な番号付け処理の関連する説明は、上記に提供され、ここでは個別に再説明されない。元のレーン番号0からレーン番号(M/2−1)までは無効にされるため、root complexは、レーン反転処理を開始した後に無効にされたレーンを番号付けしない。このように、root complexは、右から左に昇順に0から始めて(M/2−1)までroot complexとPCIe装置1との間のレーンを連続的に番号付けする。
レーン反転処理を終了した後、root complexは、それからroot complexとPCIe装置との間のリンクの新たな現在レーン幅値N’を取得するため、PCIe装置1とのレーン幅ネゴシエーションを実行する。PCIeプロトコルの規則によると、ネゴシエーションが故障が発生したレーンに対して実行されるまで、PCIe装置の間のネゴシエーションが最小番号のレーンから開始される。レーン反転処理を終了した後、root complexは、故障が発生したレーンに対してネゴシエーションが実行されるまで、新たなレーン番号0から始まるネゴシエーションを実行し、通信に利用可能なレーン数を決定する。root complexは、その後、PCIeプロトコルに規定される、2つのPCIe装置の間のリンクのレーン数の要件に従って新たな現在レーン幅値N’を決定する。root complexは、ネゴシエーションにより取得される新たなN’の個数のレーンを利用することによって、PCIe装置1とのデータ伝送を実行し続ける。
本実施例では、レーン番号5において故障が発生し、Nは4であり、Mは16であり、4<8(N<M/2)である。CPUは、root complexとPCIe装置1との間のレーン番号0からレーン番号(M/2−1)(すなわち、7番)までを無効にし、レーン反転処理を実行するようroot complexに指示する。当該指示を受信した後、root complexは、root complexとPCIe装置1との間のレーンを反対方向に再び番号付けする。レーン番号15のレーン番号は15から0に変更され、すなわち、元のレーン番号15はレーン番号0に変更され、レーン番号14のレーン番号は14から1に変更され、すなわち、元のレーン番号14はレーン番号1に変更され、残りは同様に導くことができる。レーン番号0からレーン番号(M/2−1)(すなわち、7番)までが無効にされるため、レーン反転処理は、元のレーン番号M/2(すなわち、8番)がレーン番号(M/2−1)(すなわち、7番)に変更された後に終了される。レーン反転を終了した後、root complexはPCIe装置1とのレーン再ネゴシエーションを実行し、新たな反転されたレーン番号0から始まるネゴシエーションが実行され、レーン番号に従って上方にネゴシエーションが連続的に実行される。データ伝送は、故障が発生しない元のレーン番号8から元のレーン番号15までに対して実行可能であるため、root complexがPCIe装置1とのレーン再ネゴシエーションを再び実行するとき、8つのレーンに対してネゴシエーションの実行が成功する。さらに、PCIeプロトコルは、レーン幅が1,2,4,8,16及び32の1つであると規定しているため、PCIe装置1とのルートコンプレクスによる再ネゴシエートにより取得される新たな現在レーン幅値N’は8である。
root complexは、root complexとPCIe装置1との間の新たな反転されたレーン番号0から新たな反転されたレーン番号7(すなわち、8番)までを利用することによって、データ伝送を実行し続ける。具体的なデータ伝送処理は、既存の実現方式と同様であり、ここでは個別に再説明されない。
このようにして、2つのPCIe装置の間のリンクのレーンにおいて故障が発生した場合、本発明において提供される方策を利用することは、PCIe装置のレーンネゴシエーション能力値の1/2である個数のレーンが、故障したレーンのレーン番号に関係なく利用可能であることを保証でき、PCIe装置の間のリンクの伝送速度及び性能を最大程度まで保証する。
本発明は更に、PCIe装置のリンク故障を処理するシステムを提供し、システムの構成は図2に示される。システムは、中央処理ユニットCPU201、第1PCIe装置203及び第2PCIe装置205を有する。第1PCIe装置及び第2PCIe装置は、複数のシリアライザ/デ・シリアライザ(serdes,Serializer/De−Serializer)回路を利用することによって接続される。複数のserdesは、第1PCIe装置と第2PCIe装置との間でデータを伝送するのに利用されるリンク204を構成し、各serdesはレーンであり、レーンはある順序に連続的に番号付けされる。2つのPCIe装置の間には1,2,4,8,16又は32個のserdesがあってもよく、本実施例は具体例として16個のserdesを利用することによって説明される。すなわち、第1PCIe装置203と第2PCIe装置205との間には16個のserdes、すなわち、16個のレーンがあり、これら16個のレーンは左から右に0から始まって15まで連続的且つ順次的に番号付けされる。番号0のレーンはレーン番号0であり、同様に、番号15のレーンはレーン番号15である。serdesは、既存のserdes構造を利用し、既存の機能をサポートし、ここでは個別に再説明されない。本発明の本実施例では、いくつのserdesがリンクにあっても、その実現原理は同様である。
メッセージ・シグナルド・インタラプト(MSI、message signal interrupt)機能が、第1PCIe装置203に設定される。第2PCIe装置205に接続されるリンク204の1以上のレーンにおいて故障が発生したと検出すると、第1PCIe装置203は、MSIメッセージをCPU201に報告し、ここで、MSIメッセージは第1PCIe装置203のデバイスIDを含む。
第1PCIe装置203は、第1PCIe装置203と第2PCIe装置205との間のリンク204の現在レーン幅値Nを取得するため、PCIeプロトコルの再ネゴシエーション機構に従って第2PCIe装置205とレーン再ネゴシエーションを実行する。レーン再ネゴシエーション中、PCIeプロトコルに規定されるレーンネゴシエーション機構によると、第1PCIe装置203は、故障したレーンに対してネゴシエーションが実行されるまで、最小のレーン番号のレーンから始めてレーン番号の昇順により上方に第2PCIe装置205とのリンクネゴシエーションを再び連続的に実行する。故障したレーンに対してネゴシエーションの実行が成功できないため、再ネゴシエーション処理は終了される。第1PCIe装置203は更に、PCIeプロトコルに規定される2つのPCIe装置の間のリンクのレーン数に従って、リンクの現在レーン幅値Nを決定する。
レーン番号は連続している必要があり、リンクネゴシエーションは最小番号のレーンから開始されるため、再ネゴシエーションにより取得されるレーン数は故障したレーンのレーン番号によって変わり、不確実性が存在する。故障したレーンのレーン番号が相対的に小さいとき、再ネゴシエーションにより取得されるレーン数はまた大きく減少し、すなわち、取得された現在レーン幅値Nは大きく減少し、従って、2つのPCIe装置の間のデータ伝送の性能に重大な影響を与える。
本発明の本実施例では、第1PCIe装置203により報告されたMSIメッセージを受信した後に、CPU201はインタラプト処理プロセスに入る。CPU201は、MSIメッセージにおける第1PCIe装置203のデバイスIDに従って、第1PCIe装置203から第1PCIe装置203の現在レーン幅値N及び第1PCIe装置203のレーンネゴシエーション能力値Mを取得する。第1PCIe装置203のレーンネゴシエーション能力値Mは、第1PCIe装置203が第2PCIe装置205とネゴシエートすることにより取得可能な最大レーン幅値、すなわち、第1PCIe装置203と第2PCIe装置205との間のレーンの合計数を表す。本実施例では、第1PCIe装置203と第2PCIe装置205との間に16個のレーンがあり、従って、第1PCIe装置203が第2PCIe装置205とネゴシエートすることにより取得可能な最大レーン幅値は16であり、第1PCIe装置203のレーンネゴシエーション能力値Mは16である。第1PCIe装置203の現在レーン幅値Nは、第1PCIe装置203が第2PCIe装置205と再ネゴシエートすることにより取得される現在レーン幅値Nである。
CPU201は、第1PCIe装置203の取得された現在レーン幅値Nとレーンネゴシエーション能力値Mとを比較する。本発明では、CPU201は、2つのPCIe装置の間のリンクのレーン数の規則に従って、NとM/2とを比較する。
N≧M/2である場合、第1PCIe装置203は、再ネゴシエーションにより取得されるリンクレーンを利用することによって、第2PCIe装置205とのデータ伝送を実行し続ける。この場合、N≧M/2は、故障したレーンのレーン番号は(M/2−1)より大きいことを示し、2つのPCIe装置の間のリンクが1,2,4,8,16又は32個のレーンを含みうるため、第1PCIe装置203が第2PCIe装置205と再ネゴシエートすることによって取得される現在レーン幅値NはM/2であり、第1PCIe装置203は、再ネゴシエーションにより取得されるリンクレーンを利用することによって、第2PCIe装置205とのデータ伝送を実行し続ける。CPU201は、このような状態においては処理を実行しない。第1PCIe装置203は期間を設定してもよく、第1PCIe装置203が設定された期間内にCPU201の指示を受信しなかった場合、第1PCIe装置203は、再ネゴシエーションにより取得されるリンクレーンを利用することによって、第2PCIe装置205とのデータ伝送を実行し続ける。
N<M/2である場合、CPU201は、第1PCIe装置203にレーン反転処理を実行するよう指示する。N<M/2であるとき、第1PCIe装置203が第2PCIe装置205と再ネゴシエートすることによって取得される現在レーン幅は、合計のリンク幅の半分未満であり、故障したレーンのレーン番号がM/2未満であることを示す。レーン反転処理は、第1PCIe装置203が第1PCIe装置203と第2PCIe装置205との間のレーンを反対方向に再番号付けする。例えば、本実施例では、第1PCIe装置203と第2PCIe装置205との間のレーンは、当初は左から右に0から始まって15まで番号付けされる。第1PCIe装置203がレーン反転処理を実行した後、元のレーン番号15のレーン番号は15から0に変更され、すなわち、元のレーン番号15はレーン番号0に変更され、元のレーン番号14のレーン番号は14から1に変更され、すなわち、元のレーン番号14はレーン番号1に変更され、残りは同様に導くことができる。レーン反転処理を実行するよう第1PCIe装置に指示する前に、CPU201は更に、第1PCIe装置と第2PCIe装置との間のレーン番号0からレーン番号(M/2−1)までを無効にしてもよい。レーン番号0からレーン番号(M/2−1)までが無効にされた後、第1PCIe装置203は、元のレーン番号Mのレーン番号を0に変更し、元のレーン番号(M−1)のレーン番号を1に変更するなど、元のレーン番号M/2のレーン番号が(M/2−1)に変更されるまで、レーン反転処理を実行する。レーン反転処理を実行した後、第1PCIe装置203は、新たな現在レーン幅値N’を取得するため第2PCIe装置205による新たな現在レーン幅に関する再ネゴシエーションを実行する。第1PCIe装置203が第2PCIe装置205と現在レーン幅を再ネゴシエートする方法は、上記の再ネゴシエーション方法と同じである。PCIeプロトコルの要求に従って、第1PCIe装置203は、反転後に最小番号のレーンから始めてネゴシエーションを実行し、レーン番号の昇順に上方に連続的に第2PCIe装置205とのリンクネゴシエーションを再実行する。すなわち、第1PCIe装置203は、反転されたレーン番号0から始まるネゴシエーションを実行し、その後、ネゴシエーションがレーン番号(M/2−1)に対して実行されるまで、レーン番号1及びレーン番号2に対して逐次的にネゴシエーションを実行する。第1PCIe装置203は、N<M/2の場合にレーン反転処理を実行し、この場合、故障したレーンのレーン番号はM/2未満であり、すなわち、故障したレーンはレーン番号0からレーン番号(M/2−1)までの1つであり、レーン番号0からレーン番号(M/2−1)までが無効とされるが、レーン番号M/2からレーン番号Mまでは故障が発生しておらず、データ伝送が実行可能である。その後、第1PCIe装置203がレーン反転を実行した後、新たなレーン番号0からレーン番号(M/2−1)までにおいて故障は発生せず、第1PCIe装置203が第2PCIe装置205と再ネゴシエートすることによって取得された新たな現在レーン幅値N’はM/2である。第1PCIe装置203は、再ネゴシエーションにより取得される新たなレーンリンクを利用することによって、第2PCIe装置205とのデータ伝送を実行し続ける。
PCIe装置のレーンに故障が発生すると、本発明の方策を利用することは、再ネゴシエーションにより取得されたレーン幅が、故障したレーンのレーン番号に関係なく元のレーン幅の1/2であることを保証することが可能であり、故障したレーンのレーン番号が比較的小さく、このため、PCIe装置の間のデータ伝送の速度が影響を受けるとき、PCIe装置のレーン値が大きく減少する。
本発明の実施例における第1PCIe装置503の内部構成図について、図5を参照されたい。図5に示されるように、第1PCIe装置503は、検出モジュール5031、MSIモジュール5033、ネゴシエートモジュール5035、レジスタ5037及びレーン反転モジュール5039を有する。
検出モジュール5031は、第1PCIe装置503と第2PCIe装置505との間のリンク504の通信状態をモニタリングするよう構成される。第1PCIe装置503と第2PCIe装置504との間のリンク504は複数のシリアライザ/デ・シリアライザ(serdes,Serializer/De−Serializer)回路を有し、各serdesはレーン(lane)である。リンク504の1以上のレーンにおいて故障が発生したと検出すると、検出モジュール5031は、レーン故障指示メッセージをMSIモジュール5033に送信し、故障したレーンに関する情報を記憶のためレジスタ5037に送信する。
MSIモジュール5033は、検出モジュール5031のレーン故障指示メッセージを受信した後に、MSIメッセージを中央処理ユニットCPU501に送信するよう構成される。送信されるMSIメッセージは第1PCIe装置503のデバイスIDを含む。
ネゴシエートモジュール5035は、第1PCIe装置503と第2PCIe装置505との間のレーン幅をネゴシエートするよう構成される。2つのPCIe装置の間のリンクのレーンは、ある順序により連続的に番号付けされる。2つのPCIe装置の間のリンクは、1,2,4,8,16又は32個のレーンを有してもよく、本実施例は、具体例として16個のレーンを利用することによって説明される。例えば、図5に示されるように、第1PCIe装置503と第2PCIe装置505との間のリンク504のレーンは、0から始まって左から右に連続的に番号付けされる。左から右に逐次的にレーン番号0、レーン番号1、レーン番号2、....及びレーン番号15がある。PCIeプロトコルのネゴシエーション機構によると、リンクネゴシエーションが実行されると、最小の番号のレーンから始まってネゴシエーションが実行され、ネゴシエーションが故障したレーンに対して実行されるまで、レーン番号の昇順に上方に連続的に第2PCIe装置505とのリンクネゴシエーションが再実行される。故障したレーンに対するネゴシエーションの実行は成功できないため、再ネゴシエーション処理は終了する。第1PCIe装置503は更に、PCIeプロトコルに規定される2つのPCIe装置の間のリンクのレーン数に従って、第1PCIe装置503と第2PCIe装置505との間のリンクの現在レーン幅値Nを決定する。
レジスタ5037は、第1PCIe装置503の現在レーン幅値N及びレーンネゴシエーション能力値Mなどの情報を含む情報を記憶するよう構成される。
レーン反転モジュール5039は、レーン反転処理を実行する指示を受信した後に、リンク504のレーンに対してレーン反転処理を実行するよう構成される。
リンク504の1以上のレーンにおいて故障が発生したと検出すると、検出モジュール5031は、レーン故障指示メッセージをMSIモジュール5033に送信し、故障したレーンに関する情報を記憶のためレジスタ5037に送信する。
ネゴシエートモジュール5035は、再ネゴシエーションを開始し、第1PCIe装置503と第2PCIe装置505との間の現在レーン幅値Nを決定する。ネゴシエートモジュール5035は、リンク504における最小の番号のレーンから始めてネゴシエーションを実行し、すなわち、レーン番号0から始めてネゴシエーションを実行し、レーン番号0に対してネゴシエーションの実行が成功した後、レーン番号0に対してネゴシエーションが実行され、故障したレーンに対してネゴシエーションが実行されるまで、残りが同様に導くことができる。本実施例では、リンク504のレーン番号5において故障が発生したと仮定する。ネゴシエートモジュール5035が再ネゴシエーションを開始すると、レーン番号0からレーン番号4までに対してネゴシエーションの実行が成功する。この場合、5つのレーンが通信に利用可能であるが、2つのPCIe装置の間のリンクは1,2,4,8,16又は32個のレーンを有してもよく、従って、第1PCIe装置503と第2PCIe装置505との間の現在レーン幅値Nは4である。
MSIモジュール5033により送信されたMSIメッセージを受信した後に、CPU501は、MSIメッセージに含まれるデバイスIDに従って、第1PCIe装置503のレジスタ5037から第1PCIe装置の現在レーン幅値N及びレーンネゴシエーション能力値Mを取得する。本実施例では、第1PCIe装置と第2PCIe装置との間のリンクのレーン数は16であり、このため、CPU501により取得される第1PCIe装置のレーンネゴシエーション能力値Mは16である。現在レーン幅値Nは4である。
CPU501は、取得したレーンネゴシエーション能力値M及び現在レーン幅値Nを比較する。本発明では、CPU501は、2つのPCIe装置の間のリンクのレーン数の規則に従ってN及びM/2を比較する。
N<M/2であるとき、CPU501は、レーン反転処理を実行するよう、すなわち、第1PCIe装置503と第2PCIe装置505との間のリンク504のレーンを反対方向に再番号付けするよう第1PCIe装置503のレーン反転モジュール5039に指示する。例えば、図5に示されるように、現在、リンク504のレーンは、左から右に0から始めて15まで連続的に番号付けされる。レーン反転処理を実行するとは、リンク504のレーン番号15のレーン番号が15から0に変更され、すなわち、レーン番号15がレーン番号0に変更され、レーン番号14のレーン番号が1に変更され、すなわち、レーン番号14がレーン番号1に変更され、残りが同様に導くことができることを意味する。レーン反転処理が実行された後、リンク504のレーンは、右から左に0から始めて15まで連続的に番号付けされる。第1PCIe装置503のレーン反転モジュール5039がレーン反転処理を終了した後、ネゴシエートモジュール5035は、それから第1PCIe装置503と第2PCIe装置505との間のリンク504に対してレーンネゴシエーションを再開し、新たな現在レーン幅値N’を決定し、ネゴシエーション方法は上記の方法と同じであり、ここでは個別に再説明されない。第1PCIe装置503は、ネゴシエーションにより取得された新たな現在レーン幅を利用することによって、第2PCIe装置505とのデータ伝送を実行する。N<M/2が故障したレーンのレーン番号が(M/2−1)未満であることを示すため、再ネゴシエーションにより取得される新たな現在レーン幅値はM/2以上である。この場合、リンク504のレーンにおいて故障が発生した後に再ネゴシエーションにより取得されるレーン幅値がM/2以上であることが保証可能であり、リンク504の伝送性能を保証する。
N<M/2であるとき、CPU501は更に、第1PCIe装置503と第2PCIe装置505との間のリンク504のレーン番号0からレーン番号(M/2−1)までをまず無効にし、それからレーン反転処理を実行するよう第1PCIe装置503のレーン反転モジュール5039に指示する。N<M/2であって、ネゴシエーションにより取得された現在レーン幅がM/2未満であるため、それは、故障したレーンのレーン番号が(M/2−1)未満であることを示す。レーン番号M/2からレーン番号Mまでには故障は発生せず、データ伝送が実行可能である。このように、CPU501は、リンク504のレーン番号0からレーン番号(M/2−1)までを無効にし、レーン反転処理を実行すると、第1PCIe装置503のレーン反転モジュール5039は、レーン番号M/2のレーン番号がM/2から(M/2−1)に変更されるまで、レーン番号Mのレーン番号をMから0に変更し、レーン番号(M−1)のレーン番号を(M−1)から0に変更するなどである。リンクの元のレーン番号0から元のレーン番号(M/2−1)までが無効にされるため、第1PCIe装置503のレーン反転モジュール5039は、これらの無効にされたレーンに対してレーン反転をもはや実行しない。レーン反転が終了した後、ネゴシエートモジュール5035は、第1PCIe装置503と第2PCIe装置505との間のリンク504に対するレーンネゴシエーションを再開し、新たな現在レーン幅値N’を決定する。この場合、リンク504の新たなレーン番号0から新たなレーン番号(M/2−1)までが通信に利用可能である。すなわち、リンク504のレーンにおいて故障が発生した後、再ネゴシエーションにより取得されるレーン幅値はM/2に等しく、リンク504の伝送性能を保証する。
N≧M/2であるとき、それは、第1PCIe装置503と第2PCIe装置505との間のリンクの現在レーン幅がM/2以上であることを示し、この場合、リンク504の性能は最大程度まで保持される。CPU501は処理を実行しない。第1PCIe装置503が所定の制限時間内にCPU501の指示を受信しなかった場合、第1PCIe装置503は、ネゴシエーションにより取得された現在レーン幅Nを利用することによって、第2PCIe装置504とのデータ伝送を実行する。リンク504の伝送性能がまた保証される。
本発明の本実施例では、第1PCIe装置503のレーンネゴシエーション能力値Mは16であり、リンク504のレーン番号5において故障が発生し、第1PCIe装置のネゴシエーションモジュール5035が第2PCIe装置505と再ネゴシエートすることにより取得された現在レーン幅値Nは4である。この場合、4<16/2であり、すなわち、N<M/2であり、CPU501は、リンク504のレーン番号0からレーン番号7までを無効にし、レーン反転を実行するよう第1PCIe装置503のレーン反転モジュール5039に指示する。第1PCIe装置503のレーン反転モジュール5039は、レーン番号8のレーン番号が7に変更されるまで、リンク504のレーン番号15のレーン番号を0に変更し、レーン番号14のレーン番号を1に変更する。リンク504の元のレーン番号0から元のレーン番号7までが無効とされたため、レーン反転モジュール5039はもはやそれらを番号付けしない。このようにして、第1PCIe装置503と第2PCIe装置505との間のリンク504は現在は8つのレーンを含む。第1PCIe装置503のネゴシエートモジュール5035は、8である新たな現在レーン幅値N’を取得するため、第2PCIe装置505とのレーン再ネゴシエーションを実行する。第1PCIe装置503は、リンク504の8つのレーンを利用することによって、第2PCIe装置505とのデータ伝送を実行し続ける。
このようにして、本発明において提供される技術的方策を利用することによって、2つのPCIe装置の間のリンクのレーンにおいて故障が発生すると、2つのPCIe装置が元のリンクの1/2のレーンが故障したレーンの番号に関わらずデータ伝送を実行し続けるため提供することができ、これは、従来技術におけるリンク幅に課された故障レーンのレーン番号の制限を緩和し、これにより、最適なリンク幅が再ネゴシエーション後に実現できる。
本明細書では、第1及び第2などの関係語があるエンティティ又は処理を他のものと区別するためだけに利用され、これらのエンティティ又は処理の間に何れか実際の関係又はシーケンスが存在することを必ずしも必要又は意味するものでないことが更に留意されるべきである。さらに、“含む”、“含む”という用語又はそれらの他の何れかの変形は非排他的な包含をカバーすることを意図し、これにより、要素のリストを含む処理、方法、物又は装置はこれらの要素を含むだけでなく、明示的に列記されていない他の要素もまた含むか、又は当該処理、方法、物又は装置に固有の要素を更に含む。“〜を含む”に先行する要素は、更なる制約なく、要素を含む処理、方法、物又は装置における更なる同一の要素の存在を排除しない。
当業者は、開示された実施例の上記の説明に従って本発明を実現又は利用してもよい。本明細書に定義される通常の原理は、本発明の精神又は範囲から逸脱することなく他の実施例において実現されてもよい。従って、本発明は、本明細書に説明された実施例に限定されず、本明細書に開示される原理及び新規性に従う最も広い範囲に拡張される。
N<M/2である場合、CPUは、第1PCIe装置と第2PCIe装置との間のリンクに対してレーン反転処理を実行するよう第1PCIe装置に指示する。N<M/2であるとき、第1PCIe装置が第2PCIe装置と再ネゴシエートすることにより取得される現在レーン幅は、トータルのリンク幅の半分未満であり、これは、故障したレーンのレーン番号がM/2未満であることを示す。レーン反転処理は、第1PCIe装置が第1PCIe装置と第2PCIe装置との間のリンクのレーンを反対方向に再番号付けすることを示す。第1PCIe装置と第2PCIe装置との間のリンクのレーンが当初は左から右に0から始まって15まで番号付けされている場合、第1PCIe装置がレーン反転処理を実行した後、第1PCIe装置と第2PCIe装置との間のリンクのレーンは右から左に0から15まで番号付けされ、逆の場合も同様である。例えば、本実施例では、第1PCIe装置がレーン反転処理を実行した後、元のレーン番号15のレーン番号は15から0に変更され、すなわち、元のレーン番号15はレーン番号0に変更され、元のレーン番号14のレーン番号は14から1に変更され、すなわち、元のレーン番号14はレーン番号1に変更され、残りは同様に導くことができる。レーン反転処理を実行するよう第1PCIe装置に指示する前に、CPUは更に、第1PCIe装置と第2PCIe装置との間のレーン番号0からレーン番号(M/2−1)を無効にしてもよい。レーン番号0からレーン番号(M/2−1)が無効にされた後、第1PCIe装置は、無効にされたレーンをもはや番号付けする必要はない。この場合、第1PCIe装置は、元のレーン番号M/2のレーン番号が(M/2−1)に変更されるまで、レーン反転処理を実行し、元のレーン番号Mのレーン番号を0に変更し、元のレーン番号(M−1)のレーン番号を1に変更するなど行う。
N≧M/2であるとき、それは、第1PCIe装置503と第2PCIe装置505との間のリンクの現在レーン幅がM/2以上であることを示し、この場合、リンク504の性能は最大程度まで保持される。CPU501は処理を実行しない。第1PCIe装置503が所定の制限時間内にCPU501の指示を受信しなかった場合、第1PCIe装置503は、ネゴシエーションにより取得された現在レーン幅Nを利用することによって、第2PCIe装置504とのデータ伝送を実行する。リンク504の伝送性能がまた保証される。

Claims (11)

  1. PCIeリンク故障を処理する方法であって、
    PCIe装置が、前記PCIe装置と下流のPCIe装置との間のリンクのレーンにおいて故障が発生したと検出し、メッセージ・シグナルド・インタラプトMSIメッセージを中央処理ユニットCPUに送信するステップであって、前記MSIメッセージは前記PCIe装置のデバイスIDを有する、送信するステップと、
    前記PCIe装置が、現在レーン幅値Nを取得するため、前記下流のPCIe装置とネゴシエートするステップと、
    前記CPUが、前記受信したMSIメッセージにおけるデバイスIDに従って、前記PCIe装置から前記PCIe装置のレーンネゴシエーション能力値M及び前記現在レーン幅値Nを取得するステップと、
    前記CPUが、NとM/2とを比較するステップと、
    N<M/2である場合、前記CPUが、レーン反転処理を実行するよう前記PCIe装置に指示するステップと、
    前記PCIe装置が、前記PCIe装置と前記下流のPCIe装置との間のリンクに対して前記レーン反転処理を実行するステップと、
    前記PCIe装置が、新たな現在レーン幅値N’を取得するため、前記下流のPCIe装置とネゴシエートし、N’個のレーンを利用することによって前記下流のPCIe装置とのデータ伝送を実行し続けるステップと、
    を有する方法。
  2. 当該方法は更に、N≧M/2である場合、前記PCIe装置が、ネゴシエーションにより取得されたN個のレーンを利用することによって、前記下流のPCIe装置とのデータ伝送を実行し続けるステップを有する、請求項1記載の方法。
  3. N<M/2である場合、当該方法は更に、前記CPUが、前記PCIe装置と前記下流のPCIe装置との間のリンクのレーン番号0からレーン番号(M/2−1)までを無効にするステップを有する、請求項1又は2記載の方法。
  4. PCIeリンク故障を処理する方法であって、
    PCIe装置により報告されたメッセージ・シグナルド・インタラプトMSIメッセージを受信するステップであって、前記MSIメッセージは前記PCIe装置のデバイスIDを有する、受信するステップと、
    前記デバイスIDに従って前記PCIe装置から前記PCIe装置のレーンネゴシエーション能力値M及び現在レーン幅値Nを取得するステップであって、前記現在レーン幅値Nは、前記PCIe装置が下流のPCIe装置とネゴシエートすることによって取得される、取得するステップと、
    NとM/2とを比較するステップと、
    N<M/2である場合、レーン反転処理を実行するよう前記PCIe装置に指示するステップと、
    を有する方法。
  5. N<M/2である場合、当該方法は更に、前記PCIe装置と前記下流のPCIe装置との間のリンクのレーン番号0からレーン番号(M/2−1)までを無効にするステップを有する、請求項4記載の方法。
  6. 前記PCIe装置のレーンネゴシエーション能力値Mは、前記PCIe装置と前記下流のPCIe装置との間のリンクのレーンの合計数に等しい、請求項4又は5記載の方法。
  7. PCIeリンク故障を処理する方法であって、
    PCIe装置が、前記PCIe装置と下流のPCIe装置との間のリンクのレーンにおいて故障が発生したと検出し、メッセージ・シグナルド・インタラプトMSIメッセージを中央処理ユニットCPUに送信するステップであって、前記MSIメッセージは前記PCIe装置のデバイスIDを有する、送信するステップと、
    現在レーン幅値Nを取得するため、前記下流のPCIe装置とネゴシエートするステップと、
    前記CPUにより送信されたレーン反転処理を実行する指示を受信し、前記PCIe装置と前記下流のPCIe装置との間のリンクに対して前記レーン反転処理を実行するステップと、
    新たな現在レーン幅値N’を取得するため、前記下流のPCIe装置とネゴシエートし、N’個のレーンを利用することによって前記下流のPCIe装置とのデータ伝送を実行し続けるステップと、
    を有する方法。
  8. 当該方法は更に、前記PCIe装置が前記CPUにより送信されたレーン反転処理を実行する指示を所定の時間内に受信しなかった場合、前記PCIe装置が、N個のレーンを利用することによって、前記下流のPCIe装置とのデータ伝送を実行し続けるステップを有する、請求項7記載の方法。
  9. PCIeリンク故障を処理するシステムであって、
    当該システムは、中央処理ユニットCPU、PCIe装置及び下流のPCIe装置を有し、前記CPUは前記PCIe装置に接続され、前記PCIe装置はリンクを利用することによって前記下流のPCIe装置に接続され、
    前記PCIe装置は、前記PCIe装置と前記下流のPCIe装置との間のリンクのレーンにおいて故障が発生したか検出し、故障が発生すると、メッセージ・シグナルド・インタラプトMSIメッセージを前記CPUに報告するよう構成され、前記MSIメッセージは前記PCIe装置のデバイスIDを有し、前記PCIe装置は更に、現在レーン幅値Nを取得するため、前記下流のPCIe装置とネゴシエートするよう構成され、
    前記CPUは、前記MSIメッセージにおけるデバイスIDに従って、前記PCIe装置から前記PCIe装置のレーンネゴシエーション能力値M及び前記現在レーン幅値Nを取得し、NとM/2とを比較し、N<M/2であるとき、レーン反転処理を実行するよう前記PCIe装置に指示するよう構成され、
    前記PCIe装置は更に、前記CPUにより送信されたレーン反転処理を実行する指示を受信した後に、前記PCIe装置と前記下流のPCIe装置との間のリンクに対して前記レーン反転処理を実行し、新たな現在レーン幅値N’を取得するため、前記下流のPCIe装置とネゴシエートするよう構成されるシステム。
  10. N<M/2であるとき、前記CPUは更に、前記PCIe装置と前記下流のPCIe装置との間のリンクのレーン番号0からレーン番号(M/2−1)までを無効にするよう構成される、請求項9記載の処理システム。
  11. PCIeリンク故障を処理するPCIe装置503であって、前記PCIe装置503は、検出モジュール5031、MSIモジュール5033、ネゴシエートモジュール5035、レジスタ5037及びレーン反転モジュール5039を有し、
    前記レジスタ5037は、前記PCIe装置の現在レーン幅値N及びレーンネゴシエーション能力値Mを格納し、
    前記検出モジュール5031は、前記PCIe装置503と下流のPCIe装置との間のリンク504の通信状態をモニタリングし、前記リンク504のレーンにおいて故障が発生したと検出すると、レーン故障指示メッセージを前記MSIモジュール5033に送信するよう構成され、
    前記MSIモジュール5033は、前記検出モジュール5031により送信された前記レーン故障指示メッセージを受信した後に、MSIメッセージを中央処理ユニットCPU501に送信するよう構成され、前記MSIメッセージは前記PCIe装置503のデバイスIDを含み、
    前記ネゴシエートモジュール5035は、前記PCIe装置と前記下流のPCIe装置との間のリンクのレーン幅をネゴシエートするよう構成され、
    前記レーン反転モジュール5039は、前記CPUにより送信されたレーン反転処理を実行する指示を受信した後に、前記PCIe装置と前記下流のPCIe装置の間のリンクのレーンに対して前記レーン反転処理を実行するよう構成されるPCIe装置。
JP2016510920A 2014-04-02 2014-04-02 PCIeリンク故障を処理する方法、装置及びシステム Active JP6110560B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2014/074584 WO2015149293A1 (zh) 2014-04-02 2014-04-02 一种PCIe链路故障的处理方法、设备及系统

Publications (2)

Publication Number Publication Date
JP2016526311A true JP2016526311A (ja) 2016-09-01
JP6110560B2 JP6110560B2 (ja) 2017-04-05

Family

ID=51912365

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016510920A Active JP6110560B2 (ja) 2014-04-02 2014-04-02 PCIeリンク故障を処理する方法、装置及びシステム

Country Status (5)

Country Link
US (1) US9785530B2 (ja)
EP (1) EP2961098B1 (ja)
JP (1) JP6110560B2 (ja)
CN (1) CN104170322B (ja)
WO (1) WO2015149293A1 (ja)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9859974B2 (en) * 2015-06-25 2018-01-02 International Business Machines Corporation Rerouting bus data signals from faulty signal carriers to existing healthy signal carriers
US9858161B2 (en) * 2015-10-27 2018-01-02 International Business Machines Corporation Implementing cable failover in multiple cable PCI express IO interconnections
CN105700967A (zh) * 2016-01-08 2016-06-22 华为技术有限公司 一种外设部件内部互联PCIe设备及其检测方法
CN107590089B (zh) * 2016-07-06 2020-09-18 技嘉科技股份有限公司 基本输入输出系统对pci-e通道的控制方法
CN107888442B (zh) * 2016-09-30 2021-05-14 华为技术有限公司 一种端口速率确定方法以及计算机设备
KR102569761B1 (ko) * 2016-10-05 2023-08-22 삼성전자주식회사 반도체 장치, 반도체 시스템 및 반도체 장치의 동작 방법
CN106502952B (zh) * 2016-10-24 2019-08-02 郑州云海信息技术有限公司 一种pcie设备安全掉线设计方法
US10585831B2 (en) * 2017-01-27 2020-03-10 Hewlett Packard Enterprise Development Lp PCIe connectors
CN107703362A (zh) * 2017-12-07 2018-02-16 郑州云海信息技术有限公司 一种服务器主板pcie信号线阻抗测试治具
US20190250930A1 (en) * 2018-02-12 2019-08-15 Western Digital Technologies, Inc. Method and apparatus for configuring a serial data link
US10657080B2 (en) * 2018-03-29 2020-05-19 Quanta Computer Inc. Method and system for checking errors on cables
CN109495463B (zh) * 2018-11-02 2021-06-29 郑州云海信息技术有限公司 一种链路宽度协商方法、装置及计算机可读存储介质
CN111371582B (zh) * 2018-12-26 2021-04-16 大唐移动通信设备有限公司 一种pcie链路故障的处理方法及装置
CN109815043B (zh) 2019-01-25 2022-04-05 华为云计算技术有限公司 故障处理方法、相关设备及计算机存储介质
CN109885420B (zh) * 2019-02-27 2022-06-17 苏州浪潮智能科技有限公司 一种PCIe链路故障的分析方法、BMC及存储介质
US11836101B2 (en) * 2019-11-27 2023-12-05 Intel Corporation Partial link width states for bidirectional multilane links
CN114385534A (zh) * 2020-10-19 2022-04-22 华为技术有限公司 一种数据处理的方法及装置
US11836059B1 (en) 2020-12-14 2023-12-05 Sanblaze Technology, Inc. System and method for testing non-volatile memory express storage devices
KR102635457B1 (ko) * 2021-05-24 2024-02-13 에스케이하이닉스 주식회사 PCIe 장치 및 이를 포함하는 컴퓨팅 시스템
US11960367B2 (en) 2021-05-24 2024-04-16 SK Hynix Inc. Peripheral component interconnect express device and operating method thereof
CN115150254B (zh) * 2022-06-29 2023-05-23 苏州浪潮智能科技有限公司 一种PCIe链路故障检测方法、检测装置、设备及介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005182485A (ja) * 2003-12-19 2005-07-07 Nec Computertechno Ltd シリアル伝送制御装置、コンピュータシステム、および、シリアル伝送制御方法
JP2013012879A (ja) * 2011-06-29 2013-01-17 Fujitsu Ltd 通信装置、通信回路および通信方法
JP2013254274A (ja) * 2012-06-05 2013-12-19 Fujitsu Ltd データ伝送装置、およびデータ伝送方法

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7444558B2 (en) * 2003-12-31 2008-10-28 Intel Corporation Programmable measurement mode for a serial point to point link
US7844767B2 (en) * 2004-05-21 2010-11-30 Intel Corporation Method for identifying bad lanes and exchanging width capabilities of two CSI agents connected across a link
JP4558519B2 (ja) * 2005-01-18 2010-10-06 富士通株式会社 情報処理装置およびシステムバス制御方法
US7705850B1 (en) * 2005-11-08 2010-04-27 Nvidia Corporation Computer system having increased PCIe bandwidth
US7756123B1 (en) * 2006-12-21 2010-07-13 Nvidia Corporation Apparatus, system, and method for swizzling of a PCIe link
US20090003335A1 (en) * 2007-06-29 2009-01-01 International Business Machines Corporation Device, System and Method of Fragmentation of PCI Express Packets
US8139575B2 (en) * 2007-06-29 2012-03-20 International Business Machines Corporation Device, system and method of modification of PCI express packet digest
CN101872330B (zh) * 2009-11-04 2012-07-25 杭州海康威视数字技术股份有限公司 多pcie设备系统中断处理方法
WO2012023198A1 (ja) * 2010-08-19 2012-02-23 富士通株式会社 バス制御装置及びバス制御方法
US8677176B2 (en) * 2010-12-03 2014-03-18 International Business Machines Corporation Cable redundancy and failover for multi-lane PCI express IO interconnections
EP2685760B1 (en) * 2011-07-27 2018-04-04 Huawei Technologies Co., Ltd. Device, link energy management method and link energy management system for peripheral component interconnect (pci) express
US9292465B2 (en) * 2011-12-21 2016-03-22 Intel Corporation Dynamic link width adjustment
CN104246652B (zh) * 2012-04-24 2018-07-17 英特尔公司 用于活动互连链路功率管理的自适应低功率链路状态进入策略
US20140003283A1 (en) * 2012-06-28 2014-01-02 David J. Koenen Network lane reconfiguration
US9009370B2 (en) * 2013-03-04 2015-04-14 Lsi Corporation Intelligent data buffering between interfaces
KR102033112B1 (ko) * 2013-07-15 2019-10-16 한국전자통신연구원 Pci 익스프레스 스위치 장치 및 그의 접속 제어 방법
CN103440188B (zh) * 2013-08-29 2016-09-28 福建星网锐捷网络有限公司 一种pcie硬件故障的检测方法及装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005182485A (ja) * 2003-12-19 2005-07-07 Nec Computertechno Ltd シリアル伝送制御装置、コンピュータシステム、および、シリアル伝送制御方法
JP2013012879A (ja) * 2011-06-29 2013-01-17 Fujitsu Ltd 通信装置、通信回路および通信方法
JP2013254274A (ja) * 2012-06-05 2013-12-19 Fujitsu Ltd データ伝送装置、およびデータ伝送方法

Also Published As

Publication number Publication date
JP6110560B2 (ja) 2017-04-05
US9785530B2 (en) 2017-10-10
CN104170322B (zh) 2017-06-20
EP2961098A1 (en) 2015-12-30
US20150324268A1 (en) 2015-11-12
EP2961098B1 (en) 2017-06-14
WO2015149293A1 (zh) 2015-10-08
EP2961098A4 (en) 2016-01-27
CN104170322A (zh) 2014-11-26

Similar Documents

Publication Publication Date Title
JP6110560B2 (ja) PCIeリンク故障を処理する方法、装置及びシステム
JP4768017B2 (ja) ポイントツーポイント・リンクのネゴシエーション方法および装置
US9396152B2 (en) Device, system and method for communication with heterogenous physical layers
US20080294831A1 (en) Method for link bandwidth management
JP5144799B2 (ja) 決定論的sasディスカバリ及びコンフィギュレーションの方法
US10091059B2 (en) Handling connections between network devices that support multiple port communication modes
US20120059489A1 (en) System and method for communication handshaking between processors
JP2016004510A (ja) 原因特定方法、原因特定プログラム、情報処理システム
CN115550291B (zh) 交换机的复位系统及方法、存储介质、电子设备
TWI327275B (en) Substitute sata host for communicating with a sata device and related methods
JP6264155B2 (ja) 情報処理装置、情報処理装置の制御方法及び情報処理装置の制御プログラム
US20150098317A1 (en) Linear protection switching method and apparatus for protecting network segmented into multi-domain
JP2009116732A (ja) 情報処理装置及び情報処理方法
CN115733729B (zh) 通信故障处理方法、系统及设备
JP6418021B2 (ja) 情報処理装置及び情報処理装置の制御方法
WO2013097604A1 (zh) 串行并行转换电路故障的处理方法及装置
JP6573236B2 (ja) 通信装置、および受信装置
TWI704460B (zh) 叢集式系統中維持記憶體共享方法
JP6222724B2 (ja) Usbデバイス、usbシステム、データ転送方法、及びプログラム
JP2014057269A (ja) 半導体装置
JP6799265B2 (ja) 演算処理装置、情報処理装置及び演算処理装置の制御方法
JP2015041205A (ja) 通信制御装置及び画像形成装置
JP2005228222A (ja) シリアルデータ転送方法とその装置
JP2009130614A (ja) 通信制御装置、通信制御方法および通信制御プログラム
JP5449906B2 (ja) 異常時処理用信号の診断方法および二重化コンピュータシステム

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20161101

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170131

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20170214

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170309

R150 Certificate of patent or registration of utility model

Ref document number: 6110560

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250