(57)【要約】【課題】フォルトトレランスの向上を図るとともに、故障回復時間を短縮することが可能なPCI Express通信システム、及びその通信方法を提供することを目的とする。【解決手段】TLPダイジェストには、トランザクション層の回路がエラーを検出し、送信データについてエラー情報を設定し、ルートコンプレックス１が送信したメモリリードリクエストを受信したエンドポイント３ａは、要求されたTLPに対応する第１のデータの送信中にエラーを検出した場合にはエラー情報をTLPダイジェストにセットしてデータ付きコンプリーションを返信するステップと、ルートコンプレックス１は、エラー情報に基づいたメモリリードリクエストをエンドポイントに送信するステップと、エンドポイントは、要求された第２のデータを返信するステップと、ルートコンプレックスは保持していた第１のデータのエラー箇所に第２のデータを上書きして、この応答を完了させるステップとから成る。【選択図】図２
2010238150.tif 000002
【特許請求の範囲】
【請求項１】
PCI Express通信システムにおけるエラー発生時の伝送プロトコルの改良であって、
トランザクション層パケット（TLP）のTLPダイジェストには、ECRCを付加せず、送信データについて、トランザクション層の回路でエラーを検出して、予め設定するフォーマットでのエラー情報を設定するステップと、
送信デバイス（リクエスタ）がメモリリードリクエストのTLPを送信するステップと、
前記TLPを受信した受信デバイス（コンプリータ）は、要求された前記TLPに対応する第１のデータの送信中にエラーを検出した場合には、返信するコンプリーションのTLPを無効化せず、前記TLPダイジェストに、前記エラー情報として、エラー有無、アドレスレベル単一エラーまたはブロックレベル単一エラー、エラー箇所の各ビットを設定して返信するステップと、
前記送信デバイスは、受信した前記エラー情報から、エラーの発生しているアドレスに対し、前記アドレスレベル単一エラーまたは前記ブロックレベル単一エラーについて、予め設定する夫々のエラー判定レベルの最小データ長を設定してメモリリードリクエストを前記受信デバイスにたいして要求するステップと、
前記受信デバイスは、前記メモリリードリクエストに対して、要求された第２のデータを返信するステップと、
前記送信デバイスは、要求した前記データを受信して、保持していた前記第１のデータのエラー箇所に第２のデータを上書きして、このトランザクションを完了させるステップと
から成り、
前記エラー情報によって、エラー発生時のフォルトトレランスの向上と故障回復時間短縮とを可能としたことを特徴とするPCI Express通信システムの通信方法。
【請求項２】
前記TLPダイジェストに設定する前記エラー情報は、
前記TLPダイジェストは、自デバイスの内部回路の故障を検出して、当該TLPのデータ完全性を設定するエラー検出用冗長コードビットと、
前記TLPのデータにエラーが含まれているか否かを設定するエラー有無ビットと、
前記受信デバイス（コンプリータ）がデータ付きコンプリーションを送信する場合は、前記送信デバイス（リクエスタ）に当該データの修復が必要であるか否かを指示し、前記送信デバイス（リクエスタ）が、メモリライトリクエストまたはメッセージを送信する場合は、前記受信デバイス（コンプリータ）にエラーデータの処理の要否を指示するエラー修復要否ビットと、
検出したエラーがが前記受信デバイス側で修復可能か否かを示すエラー修復可否ビットと、
前記TLPのデータのエラーが、データ長１ＤＷのみであるか否かを示すアドレスレベル単一エラービットと、
前記TLPのデータに、予め設定するアドレス境界で区切られた一つのブロックのみにデータエラーがあるか否かを示すブロックレベル単一エラービットと、
前記TLPのデータのエラーの発生箇所を示すエラー箇所ビットと、
前記エラー検出用冗長コードビットを除く前記TLPダイジェストの複数のビットのパリティを示すパリティビットと
から成る請求項１に記載のPCI Express通信システムの通信方法。
【請求項３】
PCI Express通信システムにおけるエラー発生時の伝送プロトコルを改良したシステムであって、
前記PCI Express通信システムを構成するTLPパケットを送受信するデバイスは、トランザクション層パケット（TLP）のTLPダイジェストには、ECRCを付加せず、トランザクション層の回路でエラーを検出して、予め設定する送信データのエラー情報を設定し、
送信デバイス（リクエスタ）がメモリリードリクエストのTLPを送信し、
前記TLPを受信した受信デバイス（コンプリータ）は、要求された前記TLPに対応する第１のデータの送信中にエラーを検出した場合には、返信するコンプリーションのTLPを無効化せず、前記TLPダイジェストに、前記エラー情報として、エラー有無、アドレスレベル単一エラーまたはブロックレベル単一エラー、エラー箇所の各ビットを設定して返信し、
前記送信デバイスは、受信した前記エラー情報から、エラーの発生しているアドレスに対し、前記アドレスレベル単一エラーまたは前記ブロックレベル単一エラーについて、予め設定する夫々のエラー判定レベルの最小のデータ長を設定してメモリリードリクエストを前記受信デバイスに対して要求し、
前記受信デバイスは、前記メモリリードリクエストに対して、要求された第２のデータを返信し、
前記送信デバイスは、要求した前記データを受信して、保持していた前記第１のデータのエラー箇所に第２のデータを上書きして、このトランザクションを完了させ、
前記エラー情報によって、エラー発生時のフォルトトレランスの向上と故障回復時間短縮とを可能としたことを特徴とするPCI Express通信システム。
【請求項４】
前記TLPダイジェストに設定する前記エラー情報は、
前記TLPダイジェストは、自デバイスの内部回路の故障を検出して、当該TLPのデータ完全性を設定するエラー検出用冗長コードビットと、
前記TLPのデータにエラーが含まれているか否かを設定するエラー有無ビットと、
前記受信デバイス（コンプリータ）がデータ付きコンプリーションを送信する場合は、前記送信デバイス（リクエスタ）に当該データの修復が必要であるか否かを指示し、前記送信デバイス（リクエスタ）が、メモリライトリクエストまたはメッセージを送信する場合は、前記受信デバイス（コンプリータ）にエラーデータの処理の要否を指示するエラー修復要否ビットと、
検出したエラーが前記受信デバイス側で修復可能か否かを示すエラー修復可否ビットと、
前記TLPのデータのエラーが、データ長１ＤＷのみであるか否かを示すアドレスレベル単一エラービットと、
前記TLPのデータに、予め設定するアドレス境界で区切られた一つのブロックのみにデータエラーがあるか否かを示すブロックレベル単一エラービットと、
前記TLPのデータのエラーの発生箇所を示すエラー箇所ビットと、
前記エラー検出用冗長コードビットを除く前記TLPダイジェストの複数のビットのパリティを示すパリティビットと
から成る請求項３に記載のPCI Express通信システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、PCI Expressの通信システム及びその通信方法に関し、特に、エラー発生時のトランザクション層パケット（TLP : Transaction Layer Packet）の伝送プロトコルの改良に関する。
【背景技術】
【０００２】
PCI Express（登録商標、以後PCIeと称す）バスは、コンピュータシステム及び他の電子デバイスのデータを転送するために近年開発された、ポイント・ツー・ポイント接続による高速シリアルインタフェースで、従来のパラレル伝送に比べバスの基板占有面積が少なく一層の小型化が可能で、多分野でその用途が検討されている。
【０００３】
この規格の詳細は、PCI規格の制定母体であるPCI-SIG(Peripheral Component Interconnect-Special Interest Group)によってPCI Express Base Specificationとして規格化され、また、この規格の解説書も出版されている（例えば、非特許文献１参照。）。
【０００４】
先ず、図６乃至図８を参照して、このPCIeシステムの概略を説明する。PCIeシステム構成は、例えば、図６に示すように、ルートコンプレックス１、スイッチ２、及びエンドポイント３（３ａ、３ｂ、３ｃ、３ｄ）のデバイスから成る。
【０００５】
また、ルートコンプレックス１、スイッチ２は夫々複数のポートを有し、これらとエンドポイント３の相互間を接続するPCIeバス７ａ〜７ｅは、図７に示すような３層のレイヤー構造を備える。
【０００６】
夫々の層は、最上位のドライバ及びアプリケーションソフトウェアからなる上位のソフトウェア層に対して従来のPCI互換サービスとエンド・ツー・エンドでデータの確実な通信を保証するトランザクション層１０１、隣接したコンプネント間での確実なデータ通信を保障するデータリンク層１０２、通信パケットを物理媒体上で送受信する物理層１０３から成り、送受信するデータをパケットの形式で伝送する。
【０００７】
さらに、ルートコンプレックス１は、PCIeシステムのツリー構造の最上位に位置し、システムバスでＣＰＵ５と、メモリバスでメモリ６とそれぞれ接続される。
【０００８】
この構成では、ルートコンプレックス１とエンドポイント３ａの通信では、スイッチ２がTLPの中継デバイスとなり、エンドポイント３ａとエンドポイント３ｄとの通信では、スイッチ２とルートコンプレックス１が中継デバイスとなる。
【０００９】
このように構成されたPCIe通信システムのデバイス間の伝送路の接続は、ポイント・ツー・ポイント接続となっており、片方向の差動増幅器を２つ使用するデュアル・シンプレックス方式で、リンク速度は２．５Ｇbpsの帯域を有し、双方向では５Ｇbpsの帯域を備える。
【００１０】
さらに、この双方向の伝送路（レーンと呼ぶ）を２組から３２組まで増やすことにより、バスの帯域幅をスケーラブルに構成することが可能で、この伝送路上でパケットを送受信することによりデータの伝送を実行する。
【００１１】
各層のパケットは、図６にようにトランザクション層及びデータリンク層で生成され、夫々トランザクション層パケット（TLP、Transaction Layer Packet）、データリンク層パケット（DLLP、Data Link Layer Packet）と呼ばれる。
【００１２】
また、物理層においてもリンク制御のために物理層パケット（PLP、Physical Layer Packet）が生成される。
【００１３】
また、各層のパケットは、リンクで接続される相手の同じ層との間でやり取りされ、図８に示すように、下位のプロトコル層で前後に情報を付加され、最終的に伝送路に送信される。受信されたパケットは、各プロトコル層で前後の情報を削除して、上位のプロトコル層に渡される。
【００１４】
詳細には、エンド・ツー・エンドの通信を行うTLPは、トランザクション層でTLPヘッダ、データ・ペイロード、及びオプションのTLPダイジェスト（ECRC、End-to-end CRCと呼ばれる）を構成し、データリンク層で送信時にシーケンス番号とLCRCが付加され、受信時に検査後削除される。
【００１５】
DLLPは、TLPの送達応答（肯定応答Ackと否定応答Nak）などリンクの双方で情報をやりとりする短いパケットである。
【００１６】
さらに、各TLPには、物理層の受信側でTLP開始と終了を検出するための制御キャラクタ、（STPとEND）、がパケットの両端に付加される。また、各DLLPには、DLLP開始と終了を検出するための制御キャラクタ（SDPとEND）がパケットの両端に付加される。
【００１７】
次に、このように構成されるPCIe通信システムのエラー発生時のトランザクション層でのエラー処理の問題点について図９及び図１０を参照して説明する。
【００１８】
図９は、ルートコンプレックス１、スイッチ２、及びエンドポイント３ａ〜３ｃから構成されるPCIe通信システムにおいて、エンドポイント３ａから送信データの送信中にエラーが発生した場合の問題点を、また、図１０は、エラー発生時のフォルトトレランス機能の問題点を説明する図である。
【００１９】
例えば、PCIeデバイスの構成は、図１０に示すエンドポイント３のように、PCIe Express通信部３ａ１と、PCIe Express通信部３ａ１から送信データの要求を受け、通信する送信データを記憶するデータバッファ（メモリ）３ａ３へ送信するデータの書き込みを制御するローカルコントローラ３ａ２と、データバッファ３ａ３とから成る。
【００２０】
PCIeデバイスから送信する送信データが健全であるためには、通常、データバッファ３ａ３から、PCIe Express通信部３ａ１に読み出しされるデータについてPCIe Express通信部３ａ１側でエラーを検出する必要がある。このエラー検出では、ローカルコントローラ３ａ２、データバッファ３ａ３、及びPCIe Express通信部３ａ１とローカルコントローラ３ａ２及びデータバッファ３ａ３との間のインタフースなどのPCIe Express通信部３ａ１の上位回路のハード的な故障、また、データバッファ３ａ３のソフトエラーなどに起因する送信データのエラーを検出する。
【００２１】
先ず、トランザクション層のデータ転送について述べる。TLPのヘッダにはEPビットが用意されている。TLPの送信データについては、例えば、上述したようなPCIe Express通信部３ａ１のトランザクション層の回路の一部として設けられるエラー検出回路でエラーを検出し、これが修復不能であった場合、トランザクション層のエラー検出回路はEPビットに1をセットしてTLPを送信すれば、受信側はEPビットを参照することで、受信データにエラーが含まれていることが分かるため、エンド・ツー・エンドのデータ完全性が保障できる。
【００２２】
しかしながら、送信側のトランザクション層のエラー検出回路がヘッダのEPビットに1をセットするには、送信データを全て一旦データバッファに蓄える必要があり、PCIe通信システムのスループットを低下させてしまう。
【００２３】
上述したPCIeの上位回路のバスの帯域がPCIeの帯域よりも高ければ、トランザクション層の回路は、上位回路から渡された送信データを一旦データバッファに蓄えずにPCIeの伝送路から逐次転送することが望ましい。この転送方式をカットスルーと呼んでいる。
【００２４】
次に、図９を参照して、このカットスルーの転送方式を採用したデバイスでのエラー処理の遅延が問題となる場合について説明する。図９（ａ）は、エンドポイント３ａからルートコンプレックス１宛てにデータ付きコンプリーション、ＴＬＰ１を送信中に、エンドポイント３ｂがルートコンプレックス１宛てに１０２４ダブルワード（以後ＤＷと記す）のＴＬＰ２の送信を開始し、エンドポイント３ａ内で、ＴＬＰ１の未送信のデータに修復が不可能なエラーを検出した場合の状態を図示したものである。
【００２５】
この場合、エンドポイント３ａは、図９（ｂ）に示すようにTLPの末尾の制御キャラクタは「END」でなく、「EDB」（EnD Bad）を付加してＴＬＰ１を無効化し、続いて、ルートコンプレックス１宛てに、このエラーが致命的であることを示すエラーメッセージのＴＬＰ３を送信しようとする。
【００２６】
エンドポイント３ｂから送信したＴＬＰ２は、ＴＬＰ１の送信が終わるまでスイッチ２内のバッファ内で待機状態となっているため、図９（ｃ）に示すように、ＴＬＰ１の送信が終わると、スイッチ２は、ＴＬＰ２をルートコンプレックス１宛てに送信する。エラーメッセージのＴＬＰ３は、ＴＬＰ２が送信中のため、スイッチ２のバッファ内で待機する。
【００２７】
そして、図９（ｄ）に示すように、ＴＬＰ２の送信が完了すると、ＴＬＰ３をルートコンプレックス１宛てに送信を開始する。
【００２８】
上記のようなケースでは、エラーメッセージのＴＬＰ３は、２．５Ｇbpsでレーン数１の場合、最大約１６μsec（1024DW×16ns/DW）の遅延が発生する問題がある。スイッチ２が多くのエンドポイントを接続したシステムの場合には、この遅延はさらに大きくなる可能性がある。
【００２９】
また、エンドポイント３ｃがエンドポイント３ａの待機系デバイスとして構成されているような場合には、このエラーメッセージのＴＬＰ３をトリガにしてデバイスの切替えを実行するようなケースでは、切替え時間の遅延がシステムの故障時間として問題となる。
【００３０】
次に、図１０を参照して、エラー発生時のシステムのフォトトレランス機能の低下が問題となる場合について説明する。
【００３１】
図１０は、ルートコンプレックス１が、ローカルコントローラ３ａ２を備えるエンドポイント３ａに対して１０２４ＤＷのメモリリードリクエストのＴＬＰ３１を送信し、エンドポイント３ａが、その要求に対するコンプリーションＴＬＰ３２を送信中に、データバッファ３ａ３内の未送信データにエラーを検出した場合のエンドポイント３ａのエラー修復動作を説明する構成図である。
【００３２】
PCIeデバイスでは、トランザクション層のデータ転送にカットスルーを用いた場合、通常、下記のような修復動作となる。
【００３３】
（１） エンドポイント３ａのPIC Express通信部３ａ１は、メモリリードリクエストのＴＬＰ３１を受信し、ローカルコントローラ３ａ２に１０２４ＤＷのデータを要求する（ｓ４１）
（２） ローカルコントローラ３ａ２は、データバッファ３ａ３にデータを渡し（ｓ４３）、PCI Express通信部３ａ１にデータ準備完了(ｓ４２)を通知する。  
（３） PCI Express通信部３ａ１は、データバッファ３ａ３からバーストリードしながら（ｓ４４）、コンプリーションのＴＬＰ３２を送信する。  
このとき、データバッファアドレスCF4ｈのデータにエラーを検出し、コンプリーションのＴＬＰ３２の末尾キャラクタ「EDB」を付加して、送信中のＴＬＰ３２を無効化する。  
（４） そして、データバッファ３ａ３のエラー修復するため、PCIe通信部３ａ１は、ローカルコントローラ３ａ２に再びデータを要求する。
【００３４】
ここで、エンドポイント３ａのデータバッファ３ａ３のエラーの修復動作について、エラー処理対応が、一過性のソフトエラーを前提としてデザインされているシステムの場合と、修復不可能な永久故障を前提としてデザインされているシステムの場合とに分けてその問題点を説明する。
【００３５】
前者の場合、通常、PCI Express通信部３ａ１は、同じように１０２４ＤＷのデータをローカルコントローラ３ａ２に要求する。この場合、バッファアドレスCF4ｈが永久故障の場合、同じデータがデータバッファ３ａ２の同じ領域に書き込まれるのでアドレスCF4hのデータのエラーが修復できない問題がある。
【００３６】
また、正常なリードデータをルートコンプレックス１に返せないことから、PCI Express通信部３ａ１は、回復不能なエラー（Fatal Error）のエラーメッセージをルートコンプレックス１宛に送信することになる。
【００３７】
そして、ルートコンプレックス１がこのエラーメッセージを受信することでシステムが停止、または、リセットされる。
【００３８】
後者の場合、PCI Express通信部３ａ１は、ローカルコントローラ３ａ２に対して、小さなデータサイズでデータの送信を要求する方法があり、コンプリーションのTLPを複数回に分けてルートコンプレックス１に送信する。これは、トランザクションの完了に長時間を要する問題がある。
【００３９】
これ以外の方法には、データバッファ３ａ３を二重化して交互に用いる方法もあるが、メモリのコストが掛かる。
【００４０】
ところで、このPCIeのTLPに関しては、データの誤り検出をデータリンク層の機能のLCRCに任せ、トランザクション層の機能のECRCを使用せずにTLPダイジェストのフィールドを独自に活用する技術が開示されている（例えば、特許文献１参照。）。
【００４１】
PCIeの規格では、エンド・ツー・エンドのデータ完全性を保証するためのオプション仕様として、TLPダイジェストにECRCを格納することになっている。
【００４２】
しかしながら、特許文献１で記述されているように、中継デバイスの信頼性が十分確保され、さらにトランザクション層にデータ誤り検出機能、例えば、送受信するデータバッファにパリティを設ければ、エンド・ツー・エンドのデータ完全性の保証はLCRCで補うことが可能であり、ECRCは不要と判断できる。
【００４３】
特許文献１のTLPダイジェストを独自に用いるための実施例としては、TLPのヘッダ部のTDビットで、TLPダイジェストの存在の有無を表示し、ヘッダのリザーブビットを活用して、TLPダイジェストが独自の情報を格納しているのか、あるいは、ECRCを格納しているのかを示すものとしている。
【００４４】
しかしながら、リザーブビットをこのような目的で活用しPCIe通信システムを構築した場合、将来、PCIeの規格が改訂され、そのリザーブビットに新たな定義が割り付けられたとき、将来のPCIe規格との互換性がとれなくなる可能性がある。
【００４５】
従って、TLPダイジェストを独自に用いる場合、ヘッダのリザーブビットを使用せずに、TLPダイジェストが独自仕様であることをシステム内のPCIeデバイスで共有できるようにする必要がある。
【先行技術文献】
【特許文献】
【００４６】
【特許文献１】米国特許出願公開第２００９／０００６９３２号明細書
【非特許文献】
【００４７】
【非特許文献１】荒井信隆、里美尚志、田中顕裕、「PCIe  入門講座」、）（株）電波新聞社、２００７年４月１日発行、第１章〜第５章
【発明の概要】
【発明が解決しようとする課題】
【００４８】
以上説明したように、従来のPCIe仕様に基づくTLPトランザクションについては、エラー発生時の故障回復時間や、耐障害性（fault tolerance）に問題がある。
【００４９】
本発明は上記問題点を解決するために成されたもので、PCIe通信システムにおけるエラー発生時のTLP伝送プロトコルの改良であって、PCIe通信システムの中継デバイスまたはエンドポイントデバイス内のデータバッファ内の特定領域の回復不能な故障や、一過性のソフトエラーに対して、PCIe通信システムのフォルトトレランスの向上を図るとともに、故障回復時間を短縮することが可能なPCI Express通信システム、及びその通信方法を提供することを目的とする。
【課題を解決するための手段】
【００５０】
上記目的を達成するために、本発明による請求項１に係るPCI Express通信システムの通信方法は、PCI Express通信システムにおけるエラー発生時の伝送プロトコルの改良であって、トランザクション層パケット（TLP）のTLPダイジェストには、ECRCを付加せず、送信データについて、トランザクション層の回路でエラーを検出して、予め設定するフォーマットでのエラー情報を設定するステップと、送信デバイス（リクエスタ）がメモリリードリクエストのTLPを送信するステップと、前記TLPを受信した受信デバイス（コンプリータ）は、要求された前記TLPに対応する第１のデータの送信中にエラーを検出した場合には、返信するコンプリーションのTLPを無効化せず、前記TLPダイジェストに、前記エラー情報として、エラー有無、アドレスレベル単一エラーまたはブロックレベル単一エラー、エラー箇所の各ビットを設定して返信するステップと、前記送信デバイスは、受信した前記エラー情報から、エラーの発生しているアドレスに対し、前記アドレスレベル単一エラーまたは前記ブロックレベル単一エラーについて、予め設定する夫々のエラー判定レベルの最小データ長を設定してメモリリードリクエストを前記受信デバイスにたいして要求するステップと、前記受信デバイスは、前記メモリリードリクエストに対して、要求された第２のデータを返信するステップと、前記送信デバイスは、要求した前記データを受信して、保持していた前記第１のデータのエラー箇所に第２のデータを上書きして、このトランザクションを完了させるステップとから成り、前記エラー情報によって、エラー発生時のフォルトトレランスの向上と故障回復時間短縮とを可能としたことを特徴とする。
【００５１】
上記目的を達成するために、本発明による請求項３に係るPCI Express通信システムは、PCI Express通信システムにおけるエラー発生時の伝送プロトコルを改良したシステムであって、前記PCI Express通信システムを構成するTLPパケットを送受信するデバイスは、トランザクション層パケット（TLP）のTLPダイジェストには、ECRCを付加せず、トランザクション層の回路でエラーを検出して、予め設定する送信データのエラー情報を設定し、送信デバイス（リクエスタ）がメモリリードリクエストのTLPを送信し、前記TLPを受信した受信デバイス（コンプリータ）は、要求された前記TLPに対応する第１のデータの送信中にエラーを検出した場合には、返信するコンプリーションのTLPを無効化せず、前記TLPダイジェストに、前記エラー情報として、エラー有無、アドレスレベル単一エラーまたはブロックレベル単一エラー、エラー箇所の各ビットを設定して返信し、前記送信デバイスは、受信した前記エラー情報から、エラーの発生しているアドレスに対し、前記アドレスレベル単一エラーまたは前記ブロックレベル単一エラーについて、予め設定する夫々のエラー判定レベルの最小のデータ長を設定してメモリリードリクエストを前記受信デバイスに対して要求し、前記受信デバイスは、前記メモリリードリクエストに対して、要求された第２のデータを返信し、前記送信デバイスは、要求した前記データを受信して、保持していた前記第１のデータのエラー箇所に第２のデータを上書きして、このトランザクションを完了させ、前記エラー情報によって、エラー発生時のフォルトトレランスの向上と故障回復時間短縮とを可能としたことを特徴とする。
【発明の効果】
【００５２】
本発明によれば、PCIe通信システムの中継デバイスまたはエンドデバイス内のデータバッファ内の特定領域の回復不能な故障や、一過性のソフトエラーに対して、PCIe通信システムのフォルトトレランスの向上を図るとともに、故障回復時間を短縮することが可能なPCIe通信システム、及びその通信方法を提供することができる。
【図面の簡単な説明】
【００５３】
【図１】本発明のPCIe通信システムのTLPのフォーマットの構成図。
【図２】本発明のPCIe通信システムを説明する図。
【図３】本発明のTLPダイジェストによる通信動作を説明するフローチャート。
【図４】本発明のTLPダイジェストによる通信動作を説明するフローチャート。
【図５】本発明のTLPダイジェストを使用したPCIe通信システムの実施例。
【図６】従来のPCIe通信システムの構成図。
【図７】従来のPCIeの構造を説明する図。
【図８】従来のTLPフォーマットの説明する図。
【図９】従来のPCIe通信システムの問題点を説明する図。
【図１０】従来のPCIe通信システムの問題点を説明する図。
【発明を実施するための形態】
【００５４】
以下、本発明の実施例について図面を参照して説明する。
【実施例１】
【００５５】
本発明によるTLPダイジェストのフォーマットの例を図１に示し、そしてこのTLPダイジェストを使用したPCIe Express通信システムの動作例を説明する構成図を図２に示す。
【００５６】
この実施例１の各部について、図６〜図１０に示す従来の実施例のPCIe通信システムと同一部分は同一符号で示し、その説明を省略する。
【００５７】
図１の本発明の実施例が、図１０で説明した従来のPCIe通信システムの実施例と異なる点は、カットスルー転送方式を採用した従来のPCIe通信システムでは、エンドポイント３ａでTLPパケットの送信中に未送信のデータにエラーを検知した場合、ECRCを反転させ、TLPの末尾の制御キャラクタを「END」でなく「EDB」にしてパケットを無効化（Nullified TLP）することが一般的な方法であったが、本発明では、TLPダイジェストに予め設定するエラー情報を格納して、PCI Express通信部３ａ１の上位回路となるローカルコントローラ３ａ２、データバッファ３ａ３、及びこれらの回路とPCI Express通信部３ａ１とのインタフェースで発生する一過性のエラーやトランザクション層のデータバッファ３ａ３で発生するソフトエラーや特定箇所の回復不能な故障に対し、PCIe通信システムのフォルトトレランスの向上を図るとともに、故障回復時間を短縮するようにしたことにある。
【００５８】
先ず、図１を参照して本願のトランザクション層パケットの構造とパケット末尾に付加する３２ビットのTLPダイジェストのフォーマットの設定例について説明する。
【００５９】
ビット１６〜３１の上位１６ビットにセットするエラー検出用冗長コードＤ１は、エンド・ツー・エンドのデータ完全性を保証するための冗長コードをセットする領域である。エンド・ツー・エンドの中継デバイスの信頼性が不明、あるいは不十分な場合はエンド・ツー・エンドのデータ完全性を保証するために、この領域を設ける。これは、PCIeにおけるECRCの役割に相当し、１６ビットCRCの他、１６ビットSUMなどを設定しても良い。
【００６０】
ビット１５に設定するパリティＤ２は、後述するビット０〜１４までのデータを保証するためのパリティビットである。TLPダイジェストのフィールドは、LCRCでデータのエラーを検出できるが、データの信頼性をさらに高めるためのものである。
【００６１】
ビット１４に設定するエラー有無Ｄ３は、送信するTLPのデータにエラーが含まれているか否か(１：エラー有り、０：エラー無し)を示すビットで有る。
【００６２】
また、ビット１３に設定するエラー修復要否Ｄ４は、データ付きコンプリーションを受信した場合においては、リクエスタ側にエラーデータの修復処理が必要であるか否かを指示する。
【００６３】
（例えば、１：リクエスタは、エラーデータを含んだアドレス、またはその周辺アドレス領域のみに対して、最小のデータ長のメモリリードリクエストを発行する、または、前回と同じアドレスとデータ長のメモリリードリクエストを発行する。  
０：リクエスタは、エラーの有無に係らず、リードしたデータを通常処理して、トランザクションを完了させる。）
【００６４】
メモリライトリクエストまたはメッセージを受信した場合においては、コンプリータ側にエラーデータの処理を指示するビットである。  
（例えば、１：コンプリータはエラーデータを破棄する。  
但し、全てのデータを破棄するか、エラーデータのみを破棄し残りのデータは保持するかはシステムで決定する。）
０：コンプリータは、そのライトデータを通常処理する。）
【００６５】
次に、ビット１２に設定するエラー修復可否Ｄ５は、送信側で発生したエラーが修復可能であるか否かを示すビットである。  
(例えば、１：送信側の機能で正しいデータが再生成でき、修復可能である。  
０：送信側の機能で正しいデータが再生できない、修復不能である。）
【００６６】
また、ビット１１に設定するアドレスレベル単一エラーＤ６は、TLPのデータに１ＤＷのみのデータエラーが含まれているか否かを示すビットである。  
(例えば、１：単一エラー、０：複数エラー)
【００６７】
同様に、ビット１０に設定するブロックレベル単一エラーＤ７は、TLPのデータに予めシステム設計時に設定されるアドレス境界で区切られた一つのブロックのみにデータエラーが含まれているか否かを示すビットである。  
（例えば、１：単一エラー、O：複数エラー）
【００６８】
さらに、ビット０〜９に設定するエラー箇所Ｄ８は、最初にエラーを検出した箇所をセットする領域で、TLPのデータ・ペイロードに関して、先頭から何ＤＷ目のエラーであるかを示すビットである。
【００６９】
ここで、図１に示したTLPダイジェストのフォーマットで説明したエラーに関する設定情報をここでは総称して、エラー情報と称することにする。
【００７０】
次に、このようなTLPダイジェストのフォーマットに基づき設定されたPICe通信システムのトランザクション動作について、図２を参照して説明する。
【００７１】
図２は、図１０より、ルートコンプレックス１が、ローカルコントローラ３ａ２を備えるエンドポイント３ａに対して１０２４ＤＷのメモリリードリクエスト(TLP)を発行し、エンドポイント３ａがデータ付きコンプリーションの送信中に、データバッファ３ａ３内の未送信データにエラーを検出した場合のエンドポイント３ａのエラー修復する場合の動作を説明する構成図である。
【００７２】
本発明では、以下のようなエラー修復動作となる。先ず、図１０と同様に、
（１） エンドポイント３ａのPIC Express通信部３ａ１は、メモリリードリクエストＴＬＰ３１を受信し、ローカルコントローラ３ａ２に１０２４ＤＷのデータを要求する。  
（２） ローカルコントローラ３ａ２は、データバッファ３ａ３にデータを渡し、PCI Express通信部３ａ１にデータ準備完了を通知する。  
（３） PCI Express通信部３ａ１は、データバッファ３ａ３からバーストリードしながら（ｓ４４）、データ付きコンプリーションＴＬＰ３２を送信する。
【００７３】
このとき、データバッファアドレスCF4ｈのデータにエラーを検出し、コンプリーションTLPの末尾に「EDB」を付加せず、送信中のTLPを無効化することはしない。
【００７４】
そして、エンドポイント３ａのデータバッファ３ａ３のエラーの修復動作は、
（４） 送信中のデータから検出したエラー情報は、図１で説明したようなTLPダイジェストのフォーマットで設定され、設定したエラー情報が、例えば、単一エラーで、そのエラー箇所のアドレスが記述されたTLP（データ付きコンプリーションＴＬＰ３２）が、エンドポイントから送信される。  
（５） 図２より、ルートコンプレックス１は、受信したデータを保持したままエラーが発生した箇所のアドレスについてのみ、メモリリードリクエストを発行する、この時のTLPのデータ長は単一エラーであることからTLPヘッダのデータ長フィールドに１を設定する（ＴＬＰ２１）。  
（６） エンドポイント３ａのPCI Express通信部３ａ１は、ローカルコントローラ３ａ２に対して、要求されたアドレスについて、１ＤＷのデータを要求する（ｓ３１）
（７） ローカルコントローラ１は、データバッファ３ａ３の先頭に１ＤＷのデータを準備して（ｓ３３）、PCI Express通信部３ａ１にデータ準備完了を知らせる（ｓ３２）。  
（８） そして、PCI Express通信部３ａ１は、データバッファ３ａ３の先頭アドレスのデータをリードし（ｓ３４）、このデータのTLP（ＴＬＰ２２）をルートコンプレックス１に送信する。  
（９） すると、ルートコンプレックス１は、このTLPを受信して、保持していたデータのエラー箇所にこのデータを上書きして、このトランザクションを完了させる。
【００７５】
このエラー処理の場合、要求された１ＤＷのデータを書き込むデータバッファ３ａ３の先頭アドレスが故障していたとすると、正しいデータが送信できないことになるが、その場合には、予め設定される別の領域に書きこむようにローカルコントローラ１に指定することで回避できる。
【００７６】
このTLPダイジェストに設定されるエラー情報に基づくエラー処理の場合には、一過性のソフトエラーだけでなく、特定領域の永久故障に対してもフォルトトレランスを実現できる。
【００７７】
さらに、エラー箇所の特定領域のみに対して、メモリリードリクエストを発行してエラー修復を行なうので、素早くトランザクションを完了することが出来る。
【００７８】
したがって、データバッファ３ａ３内で単一エラーが発生した場合や、データバッファとローカルコントローラの間で一過性のエラーが発生した場合でも、エラーの修復を素早く修復できる可能性があるので、PCIeの上位回路のエラーに対するPCIe通信システムのリアルタイム性を確保できる。
【００７９】
次に、本願のエラー情報を設定したTLPダイジェストに基づくTLPの受信処理動作の詳細について、図３及び図４を参照して説明する。
【００８０】
受信したTLPにエラーが無いかパリティＤ２及びエラー検出用冗長コードＤ１を参照して判定する（ｓ１〜ｓ３）。
【００８１】
いずれかに、エラーが有る場合には、このパケットを破棄し（ｓ４）、このTLPの種類がリクエストの場合には、予め設定するシステムの回復方法で処理する（ｓ５、ｓ６）。
【００８２】
そうでなければ、即ち、コンプリーションの場合は、前回のリクエストを再発行、または、送信側デバイスあるいはシステムをリセットする（ｓ７）。
【００８３】
受信したTLPにエラーがなく、その種類がデータ付きコンプリーション以外の場合で（ｓ１１）、種類がメモリライトリクエストかメッセージの場合には（ｓ１２）、さらに、このTLPのエラー有Ｄ３、エラー修復の要Ｄ４を参照して、予め定められるエラー修復処理を実行し（ｓ１５）、そうでない場合（エラー無しＤ３、エラー修復の否Ｄ４）には、この応答を終了する。
【００８４】
そのTLPの種類がデータ付きコンプリーション、メモリライトリクエスト、メッセージリクエストのいずれでもない場合で、このTLPがデータ無しコンプリーションの場合には、この応答を終了し（ｓ６）、そうでなければ、即ち、メモリライトリクエスト及びメッセージリクエスト以外のリクエストであれば、コンプリーションを実行する（ｓ１７）。
【００８５】
次に、このTLPがデータ付きコンプリーションの場合、これを受信したデバイスでの処理動作について、図４を参照して説明する。
【００８６】
要求されたデータにエラー無Ｄ３（ｓ２１）、エラー修復要否Ｄ４（ｓ２２）が不要の場合にはリードトランザクションを完了する（ｓ２３）。
【００８７】
データにエラー有りＤ３（ｓ２１）、エラー修復要Ｄ４（ｓ２２）の場合には、さらに、エラー修復可否Ｄ５（ｓ２４）を判定する。エラー修復可否Ｄ５が不可の場合には、アドレスレベル単一エラーＤ６を参照し、その結果、単一エラー（ｓ２５）の場合、エラー箇所Ｄ８のアドレスへデータ長１ＤＷのメモリリードリクエストを送信する（ｓ２６）。
【００８８】
このリクエストに対するコンプリーションが正常に返信されれば、このリードトランザクションを完了する（ｓ２７、ｓ２３）。
【００８９】
アドレスレベル単一エラーＤ６を参照し、その結果、ブロックレベル単一エラーの場合（ｓ２８）、そのエラー箇所Ｄ８に基づくｎＤＷ（ＤＷのｎ倍）アドレス境界の先頭アドレスに対しデータ長ｎＤＷのメモリリードリクエストを送信する（ｓ２９）。このリクエストに対するコンプリーションが正常に返信されれば、このリードトランザクションを完了する（ｓ２７、ｓ２３）。
【００９０】
エラー修復可否Ｄ５が否の場合、あるいは、アドレスレベル単一エラーでもブロックレベル単一エラーでもない場合（ｓ２８：Ｎｏ）、前回と同じリクエストを再発行するか、または、送信側PCIeデバイスあるいはシステム全体をリセットする。
【実施例２】
【００９１】
次に、実施例１で説明したようなTLPダイジェストを独自に用いたPCIeデバイス（以下、専用デバイスと称す）と従来のPCIeデバイス（以下、汎用デバイスと称す）とが混在するPCIe通信システムの通信方法について説明する。
【００９２】
PCIe通信システム内の全てのPCIeデバイスを独自に設計するならば、各デバイスはTLPダイジェストに実施例１に説明したようなエラー情報の設定・検出が出来るように設計すればよい。
【００９３】
しかしながら、信頼性が要求される産業向けPCIe通信システムであっても、採用されるPCIe通信システムの構成は、汎用デバイスと実施例１に示したような独自設計の専用デバイスの混在になるケースが考えられる。
【００９４】
例えば、図５に示すように、ルートコンプレックス１ｘは、ＣＰＵ５やメモリ６のインタフェースの高信頼化や、ＣＰＵ５の二重化制御などのための専用デバイスであり、エンドポイント３ｃｘ、３ｄｘは、例えば、リアルタイムイ−サネット（登録商標）などの専用デバイスであり、トランザクション層は独自に設計が可能である。
【００９５】
一方、エンドポイント３ａ、３ｂは、例えば、汎用イーサネット（登録商標）や、汎用ＵＳＢであり、これらはＣＯＴＳ（商用品、Commercial off-the-shelf）であることからトランザクション層の回路に手を加えることができない。
【００９６】
この専用デバイスのエンドポイント３ｃｘ、３ｄｘは、例えば、リアルタイムイーサネット（登録商標）などの制御通信を必要とする場合、トランザクション層が独自に設計されるが、汎用イーサネット（登録商標）３ｂや汎用ＵＳＢ３ａポートの場合、そのデバイスを専用デバイスとすると高価格になるため、通常、これらの汎用デバイスのPCIeの通信部には手を加えない。
【００９７】
上記のような汎用と専用のデバイスが混在した構成の場合、ルートコンプレックス１ｘは、どのPCIeデバイスが実施例１で示したような独自のTLPダイジェストをサポートしているかを容易に識別する必要がある。
【００９８】
特許文献１では、TLPのヘッダのリザーブビットを活用して、TLPダイジェストのタイプがECRCか独自かを送信するTLP毎に判別したが、本実施例２では、コンフィグレーション時に専用デバイスの判定を一括して行うようにした点が異なる。
【００９９】
以下、図５を参照して、汎用、専用デバイスが混在したシステム構成でのデバイスの識別方法について説明する。
【０１００】
図５のルートコンプレックス１ｘは、システムの初期化時にベンダー独自メッセージをブロードキャストで送信する。ベンダー独自メッセージはPCIe規格で定められており、メッセージコードは0111 1111 (Vendor_defined Type 1)である。メッセージのヘッダの４ＤＷ目はベンダー記述フィールドであり、独自にTLPダイジェストを用いることを示すコードを予め定め格納する。
【０１０１】
専用デバイスのエンドポイント３ｃｘと３ｄｘとは、このメッセージを受けると、ルートコンプレックス１ｘ宛てに上述したベンダー独自メッセージを返信する。
【０１０２】
汎用デバイスのエンドポイント３ａと３ｂは、ベンダー独自メッセージの内容が解釈できないため、そのメッセージを破棄する。
【０１０３】
ルートコンプレックス１ｘは、応答のあったエンドポイントのＩＤ(バス番号、デバイス番号、機能番号)を全て記憶し、初期化終了後、これらのＩＤに一致するリクエストおよびコンプリーションについては、TLPダイジェストを独自に処理し、当該ＩＤに一致しなければ、TLPダイジェストを使用しないか、あるいは、ECRCで処理する。
【０１０４】
ブロードキャスト型のメッセージリクエストについては、専用デバイスはTLPダイジェストをECRCで処理するか、そのメッセージのヘッダ部のＴＤビットを０にして、TLPダイジェストを無効にする。
【０１０５】
以上説明したような方法で、システムの初期化時に構成するデバイスが汎用か専用かを容易に識別をすることが可能となる。
【０１０６】
本発明は、上述したような実施例に何ら限定されるものでなく、TLPダイジェストにセットするエラー情報は、バッファメモリの構成やデータ構成などのよって、再送を要求する領域を変更しても良く、本発明の主旨を逸脱しない範囲で種々変形して実施することが出来る。
【符号の説明】
【０１０７】
１、１ｘ  ルートコンプレックス
２  スイッチ
３、３ａ、３ｂ、３ｃ、３ｄ、３ｃｘ、３ｄｘ  エンドポイント
３ａ１  PCI Express通信部
３ａ２  ローカルコントローラ
３ａ３  データバッファ
５  ＣＰＵ
６  メモリ
７ａ〜７ｅ  PCIeバス
【図１】
2010238150.tif 000003
【図２】
2010238150.tif 000004
【図３】
2010238150.tif 000005
【図４】
2010238150.tif 000006
【図５】
2010238150.tif 000007
【図６】
2010238150.tif 000008
【図７】
2010238150.tif 000009
【図８】
2010238150.tif 000010
【図９】
2010238150.tif 000011
【図１０】
2010238150.tif 000012
【手続補正書】
【提出日】平成21年4月16日(2009.4.16)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、PCI Express通信システム及びその通信方法に関し、特に、エラー発生時のトランザクション層パケット（TLP : Transaction Layer Packet）の伝送プロトコルの改良に関する。
【背景技術】
【０００２】
PCI Express（登録商標）バスは、コンピュータシステム及び他の電子デバイスのデータを転送するために近年開発された、ポイント・ツー・ポイント接続による高速シリアルインタフェースで、従来のパラレル伝送に比べバスの基板占有面積が少なく一層の小型化が可能で、多分野でその用途が検討されている。
【０００３】
この規格の詳細は、PCI規格の制定母体であるPCI-SIG(Peripheral Component Interconnect-Special Interest Group)によってPCI Express Base Specificationとして規格化され、また、この規格の解説書も出版されている（例えば、非特許文献１参照。）。
【０００４】
先ず、図６乃至図８を参照して、このPCI.Express通信システムの概略を説明する。PCI.Express通信システム構成は、例えば、図６に示すように、ルートコンプレックス１、スイッチ２、及びエンドポイント３（３ａ、３ｂ、３ｃ、３ｄ）のデバイスから成る。
【０００５】
また、ルートコンプレックス１、スイッチ２は夫々複数のポートを有し、これらとエンドポイント３の相互間を接続するPCI.Expressバス７ａ〜７ｅは、図７に示すような３層のレイヤー構造を備える。
【０００６】
夫々の層は、最上位のドライバ及びアプリケーションソフトウェアからなる上位のソフトウェア層に対して従来のPCI互換サービスとエンド・ツー・エンドでデータの確実な通信を保証するトランザクション層１０１、隣接したコンプネント間での確実なデータ通信を保障するデータリンク層１０２、通信パケットを物理媒体上で送受信する物理層１０３から成り、送受信するデータをパケットの形式で伝送する。
【０００７】
さらに、ルートコンプレックス１は、PCI.Express通信システムのツリー構造の最上位に位置し、システムバスでＣＰＵ５と、メモリバスでメモリ６とそれぞれ接続される。
【０００８】
この構成では、ルートコンプレックス１とエンドポイント３ａの通信では、スイッチ２がTLPの中継デバイスとなり、エンドポイント３ａとエンドポイント３ｄとの通信では、スイッチ２とルートコンプレックス１が中継デバイスとなる。
【０００９】
このように構成されたPCI.Express通信システムのデバイス間の伝送路の接続は、ポイント・ツー・ポイント接続となっており、片方向の差動増幅器を２つ使用するデュアル・シンプレックス方式で、リンク速度は２．５Ｇbpsの帯域を有し、双方向では５Ｇbpsの帯域を備える。
【００１０】
さらに、この双方向の伝送路（レーンと呼ぶ）を２組から３２組まで増やすことにより、バスの帯域幅をスケーラブルに構成することが可能で、この伝送路上でパケットを送受信することによりデータの伝送を実行する。
【００１１】
各層のパケットは、図６にようにトランザクション層及びデータリンク層で生成され、夫々トランザクション層パケット（TLP、Transaction Layer Packet）、データリンク層パケット（DLLP、Data Link Layer Packet）と呼ばれる。
【００１２】
また、物理層においてもリンク制御のために物理層パケット（PLP、Physical Layer Packet）が生成される。
【００１３】
また、各層のパケットは、リンクで接続される相手の同じ層との間でやり取りされ、図８に示すように、下位のプロトコル層で前後に情報を付加され、最終的に伝送路に送信される。受信されたパケットは、各プロトコル層で前後の情報を削除して、上位のプロトコル層に渡される。
【００１４】
詳細には、エンド・ツー・エンドの通信を行うTLPは、トランザクション層でTLPヘッダ、データ・ペイロード、及びオプションのTLPダイジェスト（ECRC、End-to-end CRCと呼ばれる）を構成し、データリンク層で送信時にシーケンス番号とLCRCが付加され、受信時に検査後削除される。
【００１５】
DLLPは、TLPの送達応答（肯定応答Ackと否定応答Nak）などリンクの双方で情報をやりとりする短いパケットである。
【００１６】
さらに、各TLPには、物理層の受信側でTLP開始と終了を検出するための制御キャラクタ、（STPとEND）、がパケットの両端に付加される。また、各DLLPには、DLLP開始と終了を検出するための制御キャラクタ（SDPとEND）がパケットの両端に付加される。
【００１７】
次に、このように構成されるPCI.Express通信システムのエラー発生時のトランザクション層でのエラー処理の問題点について図９及び図１０を参照して説明する。
【００１８】
図９は、ルートコンプレックス１、スイッチ２、及びエンドポイント３ａ〜３ｃから構成されるPCI.Express通信システムにおいて、エンドポイント３ａから送信データの送信中にエラーが発生した場合の問題点を、また、図１０は、エラー発生時のフォルトトレランス機能の問題点を説明する図である。
【００１９】
例えば、PCIeデバイスの構成は、図１０に示すエンドポイント３のように、PCI.Express通信部３ａ１と、PCI.Express通信部３ａ１から送信データの要求を受け、通信する送信データを記憶するデータバッファ（メモリ）３ａ３へ送信するデータの書き込みを制御するローカルコントローラ３ａ２と、データバッファ３ａ３とから成る。
【００２０】
PCI.Expressデバイスから送信する送信データが健全であるためには、通常、データバッファ３ａ３から、PCI.Express通信部３ａ１に読み出しされるデータについてPCI.Express通信部３ａ１側でエラーを検出する必要がある。このエラー検出では、ローカルコントローラ３ａ２、データバッファ３ａ３、及びPCI.Express通信部３ａ１とローカルコントローラ３ａ２及びデータバッファ３ａ３との間のインタフースなどのPCI.Express通信部３ａ１の上位回路のハード的な故障、また、データバッファ３ａ３のソフトエラーなどに起因する送信データのエラーを検出する。
【００２１】
先ず、トランザクション層のデータ転送について述べる。TLPのヘッダにはEPビットが用意されている。TLPの送信データについては、例えば、上述したようなPCI.Express通信部３ａ１のトランザクション層の回路の一部として設けられるエラー検出回路でエラーを検出し、これが修復不能であった場合、トランザクション層のエラー検出回路はEPビットに1をセットしてTLPを送信すれば、受信側はEPビットを参照することで、受信データにエラーが含まれていることが分かるため、エンド・ツー・エンドのデータ完全性が保障できる。
【００２２】
しかしながら、送信側のトランザクション層のエラー検出回路がヘッダのEPビットに1をセットするには、送信データを全て一旦データバッファに蓄える必要があり、PCI.Express通信システムのスループットを低下させてしまう。
【００２３】
上述したPCI.Expressの上位回路のバスの帯域がPCI.Expressの帯域よりも高ければ、トランザクション層の回路は、上位回路から渡された送信データを一旦データバッファに蓄えずにPCI.Expressの伝送路から逐次転送することが望ましい。この転送方式をカットスルーと呼んでいる。
【００２４】
次に、図９を参照して、このカットスルーの転送方式を採用したデバイスでのエラー処理の遅延が問題となる場合について説明する。図９（ａ）は、エンドポイント３ａからルートコンプレックス１宛てにデータ付きコンプリーション、ＴＬＰ１を送信中に、エンドポイント３ｂがルートコンプレックス１宛てに１０２４ダブルワード（以後ＤＷと記す）のＴＬＰ２の送信を開始し、エンドポイント３ａ内で、ＴＬＰ１の未送信のデータに修復が不可能なエラーを検出した場合の状態を図示したものである。
【００２５】
この場合、エンドポイント３ａは、図９（ｂ）に示すようにTLPの末尾の制御キャラクタは「END」でなく、「EDB」（EnD Bad）を付加してＴＬＰ１を無効化し、続いて、ルートコンプレックス１宛てに、このエラーが致命的であることを示すエラーメッセージのＴＬＰ３を送信しようとする。
【００２６】
エンドポイント３ｂから送信したＴＬＰ２は、ＴＬＰ１の送信が終わるまでスイッチ２内のバッファ内で待機状態となっているため、図９（ｃ）に示すように、ＴＬＰ１の送信が終わると、スイッチ２は、ＴＬＰ２をルートコンプレックス１宛てに送信する。エラーメッセージのＴＬＰ３は、ＴＬＰ２が送信中のため、スイッチ２のバッファ内で待機する。
【００２７】
そして、図９（ｄ）に示すように、ＴＬＰ２の送信が完了すると、ＴＬＰ３をルートコンプレックス１宛てに送信を開始する。
【００２８】
上記のようなケースでは、エラーメッセージのＴＬＰ３は、２．５Ｇbpsでレーン数１の場合、最大約１６μsec（1024DW×16ns/DW）の遅延が発生する問題がある。スイッチ２が多くのエンドポイントを接続したシステムの場合には、この遅延はさらに大きくなる可能性がある。
【００２９】
また、エンドポイント３ｃがエンドポイント３ａの待機系デバイスとして構成されているような場合には、このエラーメッセージのＴＬＰ３をトリガにしてデバイスの切替えを実行するようなケースでは、切替え時間の遅延がシステムの故障時間として問題となる。
【００３０】
次に、図１０を参照して、エラー発生時のシステムのフォトトレランス機能の低下が問題となる場合について説明する。
【００３１】
図１０は、ルートコンプレックス１が、ローカルコントローラ３ａ２を備えるエンドポイント３ａに対して１０２４ＤＷのメモリリードリクエストのＴＬＰ３１を送信し、エンドポイント３ａが、その要求に対するコンプリーションＴＬＰ３２を送信中に、データバッファ３ａ３内の未送信データにエラーを検出した場合のエンドポイント３ａのエラー修復動作を説明する構成図である。
【００３２】
PCI.Expressデバイスでは、トランザクション層のデータ転送にカットスルーを用いた場合、通常、下記のような修復動作となる。
【００３３】
（１） エンドポイント３ａのPIC Express通信部３ａ１は、メモリリードリクエストのＴＬＰ３１を受信し、ローカルコントローラ３ａ２に１０２４ＤＷのデータを要求する（ｓ４１）
（２） ローカルコントローラ３ａ２は、データバッファ３ａ３にデータを渡し（ｓ４３）、PCI Express通信部３ａ１にデータ準備完了(ｓ４２)を通知する。  
（３） PCI Express通信部３ａ１は、データバッファ３ａ３からバーストリードしながら（ｓ４４）、コンプリーションのＴＬＰ３２を送信する。  
このとき、データバッファアドレスCF4ｈのデータにエラーを検出し、コンプリーションのＴＬＰ３２の末尾キャラクタ「EDB」を付加して、送信中のＴＬＰ３２を無効化する。  
（４） そして、データバッファ３ａ３のエラー修復するため、PCI.Express通信部３ａ１は、ローカルコントローラ３ａ２に再びデータを要求する。
【００３４】
ここで、エンドポイント３ａのデータバッファ３ａ３のエラーの修復動作について、エラー処理対応が、一過性のソフトエラーを前提としてデザインされているシステムの場合と、修復不可能な永久故障を前提としてデザインされているシステムの場合とに分けてその問題点を説明する。
【００３５】
前者の場合、通常、PCI Express通信部３ａ１は、同じように１０２４ＤＷのデータをローカルコントローラ３ａ２に要求する。この場合、バッファアドレスCF4ｈが永久故障の場合、同じデータがデータバッファ３ａ２の同じ領域に書き込まれるのでアドレスCF4hのデータのエラーが修復できない問題がある。
【００３６】
また、正常なリードデータをルートコンプレックス１に返せないことから、PCI Express通信部３ａ１は、回復不能なエラー（Fatal Error）のエラーメッセージをルートコンプレックス１宛に送信することになる。
【００３７】
そして、ルートコンプレックス１がこのエラーメッセージを受信することでシステムが停止、または、リセットされる。
【００３８】
後者の場合、PCI Express通信部３ａ１は、ローカルコントローラ３ａ２に対して、小さなデータサイズでデータの送信を要求する方法があり、コンプリーションのTLPを複数回に分けてルートコンプレックス１に送信する。これは、トランザクションの完了に長時間を要する問題がある。
【００３９】
これ以外の方法には、データバッファ３ａ３を二重化して交互に用いる方法もあるが、メモリのコストが掛かる。
【００４０】
ところで、このPCI.ExpressのTLPに関しては、データの誤り検出をデータリンク層の機能のLCRCに任せ、トランザクション層の機能のECRCを使用せずにTLPダイジェストのフィールドを独自に活用する技術が開示されている（例えば、特許文献１参照。）。
【００４１】
PCI.Expressの規格では、エンド・ツー・エンドのデータ完全性を保証するためのオプション仕様として、TLPダイジェストにECRCを格納することになっている。
【００４２】
しかしながら、特許文献１で記述されているように、中継デバイスの信頼性が十分確保され、さらにトランザクション層にデータ誤り検出機能、例えば、送受信するデータバッファにパリティを設ければ、エンド・ツー・エンドのデータ完全性の保証はLCRCで補うことが可能であり、ECRCは不要と判断できる。
【００４３】
特許文献１のTLPダイジェストを独自に用いるための実施例としては、TLPのヘッダ部のTDビットで、TLPダイジェストの存在の有無を表示し、ヘッダのリザーブビットを活用して、TLPダイジェストが独自の情報を格納しているのか、あるいは、ECRCを格納しているのかを示すものとしている。
【００４４】
しかしながら、リザーブビットをこのような目的で活用しPCI.Express通信システムを構築した場合、将来、PCI.Expressの規格が改訂され、そのリザーブビットに新たな定義が割り付けられたとき、将来のPCI.Express規格との互換性がとれなくなる可能性がある。
【００４５】
従って、TLPダイジェストを独自に用いる場合、ヘッダのリザーブビットを使用せずに、TLPダイジェストが独自仕様であることをシステム内のPCIeデバイスで共有できるようにする必要がある。
【先行技術文献】
【特許文献】
【００４６】
【特許文献１】米国特許出願公開第２００９／０００６９３２号明細書
【非特許文献】
【００４７】
【非特許文献１】荒井信隆、里美尚志、田中顕裕、「PCIe  入門講座」、）（株）電波新聞社、２００７年４月１日発行、第１章〜第５章
【発明の概要】
【発明が解決しようとする課題】
【００４８】
以上説明したように、従来のPCI.Express仕様に基づくTLPトランザクションについては、エラー発生時の故障回復時間や、耐障害性（fault tolerance）に問題がある。
【００４９】
本発明は上記問題点を解決するために成されたもので、PCI.Express通信システムにおけるエラー発生時のTLP伝送プロトコルの改良であって、PCI.Express通信システムの中継デバイスまたはエンドポイントデバイス内のデータバッファ内の特定領域の回復不能な故障や、一過性のソフトエラーに対して、PCI.Express通信システムのフォルトトレランスの向上を図るとともに、故障回復時間を短縮することが可能なPCI Express通信システム、及びその通信方法を提供することを目的とする。
【課題を解決するための手段】
【００５０】
上記目的を達成するために、本発明による請求項１に係るPCI Express通信システムの通信方法は、PCI Express通信システムにおけるエラー発生時の伝送プロトコルの改良であって、トランザクション層パケット（TLP）のTLPダイジェストには、ECRCを付加せず、送信データについて、トランザクション層の回路でエラーを検出して、予め設定するフォーマットでのエラー情報を設定するステップと、送信デバイス（リクエスタ）がメモリリードリクエストのTLPを送信するステップと、前記TLPを受信した受信デバイス（コンプリータ）は、要求された前記TLPに対応する第１のデータの送信中にエラーを検出した場合には、返信するコンプリーションのTLPを無効化せず、前記TLPダイジェストに、前記エラー情報として、エラー有無、アドレスレベル単一エラーまたはブロックレベル単一エラー、エラー箇所の各ビットを設定して返信するステップと、前記送信デバイスは、受信した前記エラー情報から、エラーの発生しているアドレスに対し、前記アドレスレベル単一エラーまたは前記ブロックレベル単一エラーについて、予め設定する夫々のエラー判定レベルの最小データ長を設定してメモリリードリクエストを前記受信デバイスにたいして要求するステップと、前記受信デバイスは、前記メモリリードリクエストに対して、要求された第２のデータを返信するステップと、前記送信デバイスは、要求した前記データを受信して、保持していた前記第１のデータのエラー箇所に第２のデータを上書きして、このトランザクションを完了させるステップとから成り、前記エラー情報によって、エラー発生時のフォルトトレランスの向上と故障回復時間短縮とを可能としたことを特徴とする。
【００５１】
上記目的を達成するために、本発明による請求項３に係るPCI Express通信システムは、PCI Express通信システムにおけるエラー発生時の伝送プロトコルを改良したシステムであって、前記PCI Express通信システムを構成するTLPパケットを送受信するデバイスは、トランザクション層パケット（TLP）のTLPダイジェストには、ECRCを付加せず、トランザクション層の回路でエラーを検出して、予め設定する送信データのエラー情報を設定し、送信デバイス（リクエスタ）がメモリリードリクエストのTLPを送信し、前記TLPを受信した受信デバイス（コンプリータ）は、要求された前記TLPに対応する第１のデータの送信中にエラーを検出した場合には、返信するコンプリーションのTLPを無効化せず、前記TLPダイジェストに、前記エラー情報として、エラー有無、アドレスレベル単一エラーまたはブロックレベル単一エラー、エラー箇所の各ビットを設定して返信し、前記送信デバイスは、受信した前記エラー情報から、エラーの発生しているアドレスに対し、前記アドレスレベル単一エラーまたは前記ブロックレベル単一エラーについて、予め設定する夫々のエラー判定レベルの最小のデータ長を設定してメモリリードリクエストを前記受信デバイスに対して要求し、前記受信デバイスは、前記メモリリードリクエストに対して、要求された第２のデータを返信し、前記送信デバイスは、要求した前記データを受信して、保持していた前記第１のデータのエラー箇所に第２のデータを上書きして、このトランザクションを完了させ、前記エラー情報によって、エラー発生時のフォルトトレランスの向上と故障回復時間短縮とを可能としたことを特徴とする。
【発明の効果】
【００５２】
本発明によれば、PCI.Express通信システムの中継デバイスまたはエンドデバイス内のデータバッファ内の特定領域の回復不能な故障や、一過性のソフトエラーに対して、PCI.Express通信システムのフォルトトレランスの向上を図るとともに、故障回復時間を短縮することが可能なPCI.Express通信システム、及びその通信方法を提供することができる。
【図面の簡単な説明】
【００５３】
【図１】本発明のPCI.Express通信システムのTLPのフォーマットの構成図。
【図２】本発明のPCI.Express通信システムを説明する図。
【図３】本発明のTLPダイジェストによる通信動作を説明するフローチャート。
【図４】本発明のTLPダイジェストによる通信動作を説明するフローチャート。
【図５】本発明のTLPダイジェストを使用したPCI.Express通信システムの実施例。
【図６】従来のPCI.Express通信システムの構成図。
【図７】従来のPCI.Expressの構造を説明する図。
【図８】従来のTLPフォーマットの説明する図。
【図９】従来のPCI.Express通信システムの問題点を説明する図。
【図１０】従来のPCI.Express通信システムの問題点を説明する図。
【発明を実施するための形態】
【００５４】
以下、本発明の実施例について図面を参照して説明する。
【実施例１】
【００５５】
本発明によるTLPダイジェストのフォーマットの例を図１に示し、そしてこのTLPダイジェストを使用したPCI.Express通信システムの動作例を説明する構成図を図２に示す。
【００５６】
この実施例１の各部について、図６〜図１０に示す従来の実施例のPCI.Express通信システムと同一部分は同一符号で示し、その説明を省略する。
【００５７】
図１の本発明の実施例が、図１０で説明した従来のPCI.Express通信システムの実施例と異なる点は、カットスルー転送方式を採用した従来のPCI.Express通信システムでは、エンドポイント３ａでTLPパケットの送信中に未送信のデータにエラーを検知した場合、ECRCを反転させ、TLPの末尾の制御キャラクタを「END」でなく「EDB」にしてパケットを無効化（Nullified TLP）することが一般的な方法であったが、本発明では、TLPダイジェストに予め設定するエラー情報を格納して、PCI Express通信部３ａ１の上位回路となるローカルコントローラ３ａ２、データバッファ３ａ３、及びこれらの回路とPCI Express通信部３ａ１とのインタフェースで発生する一過性のエラーやトランザクション層のデータバッファ３ａ３で発生するソフトエラーや特定箇所の回復不能な故障に対し、PCI.Express通信システムのフォルトトレランスの向上を図るとともに、故障回復時間を短縮するようにしたことにある。
【００５８】
先ず、図１を参照して本願のトランザクション層パケットの構造とパケット末尾に付加する３２ビットのTLPダイジェストのフォーマットの設定例について説明する。
【００５９】
ビット１６〜３１の上位１６ビットにセットするエラー検出用冗長コードＤ１は、エンド・ツー・エンドのデータ完全性を保証するための冗長コードをセットする領域である。エンド・ツー・エンドの中継デバイスの信頼性が不明、あるいは不十分な場合はエンド・ツー・エンドのデータ完全性を保証するために、この領域を設ける。これは、PCI.ExpressにおけるECRCの役割に相当し、１６ビットCRCの他、１６ビットSUMなどを設定しても良い。
【００６０】
ビット１５に設定するパリティＤ２は、後述するビット０〜１４までのデータを保証するためのパリティビットである。TLPダイジェストのフィールドは、LCRCでデータのエラーを検出できるが、データの信頼性をさらに高めるためのものである。
【００６１】
ビット１４に設定するエラー有無Ｄ３は、送信するTLPのデータにエラーが含まれているか否か(１：エラー有り、０：エラー無し)を示すビットで有る。
【００６２】
また、ビット１３に設定するエラー修復要否Ｄ４は、データ付きコンプリーションを受信した場合においては、リクエスタ側にエラーデータの修復処理が必要であるか否かを指示する。
【００６３】
（例えば、１：リクエスタは、エラーデータを含んだアドレス、またはその周辺アドレス領域のみに対して、最小のデータ長のメモリリードリクエストを発行する、または、前回と同じアドレスとデータ長のメモリリードリクエストを発行する。  
０：リクエスタは、エラーの有無に係らず、リードしたデータを通常処理して、トランザクションを完了させる。）
【００６４】
メモリライトリクエストまたはメッセージを受信した場合においては、コンプリータ側にエラーデータの処理を指示するビットである。  
（例えば、１：コンプリータはエラーデータを破棄する。  
但し、全てのデータを破棄するか、エラーデータのみを破棄し残りのデータは保持するかはシステムで決定する。）
０：コンプリータは、そのライトデータを通常処理する。）
【００６５】
次に、ビット１２に設定するエラー修復可否Ｄ５は、送信側で発生したエラーが修復可能であるか否かを示すビットである。  
(例えば、１：送信側の機能で正しいデータが再生成でき、修復可能である。  
０：送信側の機能で正しいデータが再生できない、修復不能である。）
【００６６】
また、ビット１１に設定するアドレスレベル単一エラーＤ６は、TLPのデータに１ＤＷのみのデータエラーが含まれているか否かを示すビットである。  
(例えば、１：単一エラー、０：複数エラー)
【００６７】
同様に、ビット１０に設定するブロックレベル単一エラーＤ７は、TLPのデータに予めシステム設計時に設定されるアドレス境界で区切られた一つのブロックのみにデータエラーが含まれているか否かを示すビットである。  
（例えば、１：単一エラー、O：複数エラー）
【００６８】
さらに、ビット０〜９に設定するエラー箇所Ｄ８は、最初にエラーを検出した箇所をセットする領域で、TLPのデータ・ペイロードに関して、先頭から何ＤＷ目のエラーであるかを示すビットである。
【００６９】
ここで、図１に示したTLPダイジェストのフォーマットで説明したエラーに関する設定情報をここでは総称して、エラー情報と称することにする。
【００７０】
次に、このようなTLPダイジェストのフォーマットに基づき設定されたPICe通信システムのトランザクション動作について、図２を参照して説明する。
【００７１】
図２は、図１０より、ルートコンプレックス１が、ローカルコントローラ３ａ２を備えるエンドポイント３ａに対して１０２４ＤＷのメモリリードリクエスト(TLP)を発行し、エンドポイント３ａがデータ付きコンプリーションの送信中に、データバッファ３ａ３内の未送信データにエラーを検出した場合のエンドポイント３ａのエラー修復する場合の動作を説明する構成図である。
【００７２】
本発明では、以下のようなエラー修復動作となる。先ず、図１０と同様に、
（１） エンドポイント３ａのPIC Express通信部３ａ１は、メモリリードリクエストＴＬＰ３１を受信し、ローカルコントローラ３ａ２に１０２４ＤＷのデータを要求する。  
（２） ローカルコントローラ３ａ２は、データバッファ３ａ３にデータを渡し、PCI Express通信部３ａ１にデータ準備完了を通知する。  
（３） PCI Express通信部３ａ１は、データバッファ３ａ３からバーストリードしながら（ｓ４４）、データ付きコンプリーションＴＬＰ３２を送信する。
【００７３】
このとき、データバッファアドレスCF4ｈのデータにエラーを検出し、コンプリーションTLPの末尾に「EDB」を付加せず、送信中のTLPを無効化することはしない。
【００７４】
そして、エンドポイント３ａのデータバッファ３ａ３のエラーの修復動作は、
（４） 送信中のデータから検出したエラー情報は、図１で説明したようなTLPダイジェストのフォーマットで設定され、設定したエラー情報が、例えば、単一エラーで、そのエラー箇所のアドレスが記述されたTLP（データ付きコンプリーションＴＬＰ３２）が、エンドポイントから送信される。  
（５） 図２より、ルートコンプレックス１は、受信したデータを保持したままエラーが発生した箇所のアドレスについてのみ、メモリリードリクエストを発行する、この時のTLPのデータ長は単一エラーであることからTLPヘッダのデータ長フィールドに１を設定する（ＴＬＰ２１）。  
（６） エンドポイント３ａのPCI Express通信部３ａ１は、ローカルコントローラ３ａ２に対して、要求されたアドレスについて、１ＤＷのデータを要求する（ｓ３１）
（７） ローカルコントローラ１は、データバッファ３ａ３の先頭に１ＤＷのデータを準備して（ｓ３３）、PCI Express通信部３ａ１にデータ準備完了を知らせる（ｓ３２）。  
（８） そして、PCI Express通信部３ａ１は、データバッファ３ａ３の先頭アドレスのデータをリードし（ｓ３４）、このデータのTLP（ＴＬＰ２２）をルートコンプレックス１に送信する。  
（９） すると、ルートコンプレックス１は、このTLPを受信して、保持していたデータのエラー箇所にこのデータを上書きして、このトランザクションを完了させる。
【００７５】
このエラー処理の場合、要求された１ＤＷのデータを書き込むデータバッファ３ａ３の先頭アドレスが故障していたとすると、正しいデータが送信できないことになるが、その場合には、予め設定される別の領域に書きこむようにローカルコントローラ１に指定することで回避できる。
【００７６】
このTLPダイジェストに設定されるエラー情報に基づくエラー処理の場合には、一過性のソフトエラーだけでなく、特定領域の永久故障に対してもフォルトトレランスを実現できる。
【００７７】
さらに、エラー箇所の特定領域のみに対して、メモリリードリクエストを発行してエラー修復を行なうので、素早くトランザクションを完了することが出来る。
【００７８】
したがって、データバッファ３ａ３内で単一エラーが発生した場合や、データバッファとローカルコントローラの間で一過性のエラーが発生した場合でも、エラーの修復を素早く修復できる可能性があるので、PCI.Expressの上位回路のエラーに対するPCI.Express通信システムのリアルタイム性を確保できる。
【００７９】
次に、本願のエラー情報を設定したTLPダイジェストに基づくTLPの受信処理動作の詳細について、図３及び図４を参照して説明する。
【００８０】
受信したTLPにエラーが無いかパリティＤ２及びエラー検出用冗長コードＤ１を参照して判定する（ｓ１〜ｓ３）。
【００８１】
いずれかに、エラーが有る場合には、このパケットを破棄し（ｓ４）、このTLPの種類がリクエストの場合には、予め設定するシステムの回復方法で処理する（ｓ５、ｓ６）。
【００８２】
そうでなければ、即ち、コンプリーションの場合は、前回のリクエストを再発行、または、送信側デバイスあるいはシステムをリセットする（ｓ７）。
【００８３】
受信したTLPにエラーがなく、その種類がデータ付きコンプリーション以外の場合で（ｓ１１）、種類がメモリライトリクエストかメッセージの場合には（ｓ１２）、さらに、このTLPのエラー有Ｄ３、エラー修復の要Ｄ４を参照して、予め定められるエラー修復処理を実行し（ｓ１５）、そうでない場合（エラー無しＤ３、エラー修復の否Ｄ４）には、この応答を終了する。
【００８４】
そのTLPの種類がデータ付きコンプリーション、メモリライトリクエスト、メッセージリクエストのいずれでもない場合で、このTLPがデータ無しコンプリーションの場合には、この応答を終了し（ｓ６）、そうでなければ、即ち、メモリライトリクエスト及びメッセージリクエスト以外のリクエストであれば、コンプリーションを実行する（ｓ１７）。
【００８５】
次に、このTLPがデータ付きコンプリーションの場合、これを受信したデバイスでの処理動作について、図４を参照して説明する。
【００８６】
要求されたデータにエラー無Ｄ３（ｓ２１）、エラー修復要否Ｄ４（ｓ２２）が不要の場合にはリードトランザクションを完了する（ｓ２３）。
【００８７】
データにエラー有りＤ３（ｓ２１）、エラー修復要Ｄ４（ｓ２２）の場合には、さらに、エラー修復可否Ｄ５（ｓ２４）を判定する。エラー修復可否Ｄ５が不可の場合には、アドレスレベル単一エラーＤ６を参照し、その結果、単一エラー（ｓ２５）の場合、エラー箇所Ｄ８のアドレスへデータ長１ＤＷのメモリリードリクエストを送信する（ｓ２６）。
【００８８】
このリクエストに対するコンプリーションが正常に返信されれば、このリードトランザクションを完了する（ｓ２７、ｓ２３）。
【００８９】
アドレスレベル単一エラーＤ６を参照し、その結果、ブロックレベル単一エラーの場合（ｓ２８）、そのエラー箇所Ｄ８に基づくｎＤＷ（ＤＷのｎ倍）アドレス境界の先頭アドレスに対しデータ長ｎＤＷのメモリリードリクエストを送信する（ｓ２９）。このリクエストに対するコンプリーションが正常に返信されれば、このリードトランザクションを完了する（ｓ２７、ｓ２３）。
【００９０】
エラー修復可否Ｄ５が否の場合、あるいは、アドレスレベル単一エラーでもブロックレベル単一エラーでもない場合（ｓ２８：Ｎｏ）、前回と同じリクエストを再発行するか、または、送信側PCI.Expressデバイスあるいはシステム全体をリセットする。
【実施例２】
【００９１】
次に、実施例１で説明したようなTLPダイジェストを独自に用いたPCI.Expressデバイス（以下、専用デバイスと称す）と従来のPCI.Expressデバイス（以下、汎用デバイスと称す）とが混在するPCI.Express通信システムの通信方法について説明する。
【００９２】
PCI.Express通信システム内の全てのPCI.Expressデバイスを独自に設計するならば、各デバイスはTLPダイジェストに実施例１に説明したようなエラー情報の設定・検出が出来るように設計すればよい。
【００９３】
しかしながら、信頼性が要求される産業向けPCI.Express通信システムであっても、採用されるPCI.Express通信システムの構成は、汎用デバイスと実施例１に示したような独自設計の専用デバイスの混在になるケースが考えられる。
【００９４】
例えば、図５に示すように、ルートコンプレックス１ｘは、ＣＰＵ５やメモリ６のインタフェースの高信頼化や、ＣＰＵ５の二重化制御などのための専用デバイスであり、エンドポイント３ｃｘ、３ｄｘは、例えば、リアルタイムイ−サネット（登録商標）などの専用デバイスであり、トランザクション層は独自に設計が可能である。
【００９５】
一方、エンドポイント３ａ、３ｂは、例えば、汎用イーサネット（登録商標）や、汎用ＵＳＢであり、これらはＣＯＴＳ（商用品、Commercial off-the-shelf）であることからトランザクション層の回路に手を加えることができない。
【００９６】
この専用デバイスのエンドポイント３ｃｘ、３ｄｘは、例えば、リアルタイムイーサネット（登録商標）などの制御通信を必要とする場合、トランザクション層が独自に設計されるが、汎用イーサネット（登録商標）３ｂや汎用ＵＳＢ３ａポートの場合、そのデバイスを専用デバイスとすると高価格になるため、通常、これらの汎用デバイスのPCI.Expressの通信部には手を加えない。
【００９７】
上記のような汎用と専用のデバイスが混在した構成の場合、ルートコンプレックス１ｘは、どのPCI.Expressデバイスが実施例１で示したような独自のTLPダイジェストをサポートしているかを容易に識別する必要がある。
【００９８】
特許文献１では、TLPのヘッダのリザーブビットを活用して、TLPダイジェストのタイプがECRCか独自かを送信するTLP毎に判別したが、本実施例２では、コンフィグレーション時に専用デバイスの判定を一括して行うようにした点が異なる。
【００９９】
以下、図５を参照して、汎用、専用デバイスが混在したシステム構成でのデバイスの識別方法について説明する。
【０１００】
図５のルートコンプレックス１ｘは、システムの初期化時にベンダー独自メッセージをブロードキャストで送信する。ベンダー独自メッセージはPCI.Express規格で定められており、メッセージコードは0111 1111 (Vendor_defined Type 1)である。メッセージのヘッダの４ＤＷ目はベンダー記述フィールドであり、独自にTLPダイジェストを用いることを示すコードを予め定め格納する。
【０１０１】
専用デバイスのエンドポイント３ｃｘと３ｄｘとは、このメッセージを受けると、ルートコンプレックス１ｘ宛てに上述したベンダー独自メッセージを返信する。
【０１０２】
汎用デバイスのエンドポイント３ａと３ｂは、ベンダー独自メッセージの内容が解釈できないため、そのメッセージを破棄する。
【０１０３】
ルートコンプレックス１ｘは、応答のあったエンドポイントのＩＤ(バス番号、デバイス番号、機能番号)を全て記憶し、初期化終了後、これらのＩＤに一致するリクエストおよびコンプリーションについては、TLPダイジェストを独自に処理し、当該ＩＤに一致しなければ、TLPダイジェストを使用しないか、あるいは、ECRCで処理する。
【０１０４】
ブロードキャスト型のメッセージリクエストについては、専用デバイスはTLPダイジェストをECRCで処理するか、そのメッセージのヘッダ部のＴＤビットを０にして、TLPダイジェストを無効にする。
【０１０５】
以上説明したような方法で、システムの初期化時に構成するデバイスが汎用か専用かを容易に識別をすることが可能となる。
【０１０６】
本発明は、上述したような実施例に何ら限定されるものでなく、TLPダイジェストにセットするエラー情報は、バッファメモリの構成やデータ構成などのよって、再送を要求する領域を変更しても良く、本発明の主旨を逸脱しない範囲で種々変形して実施することが出来る。
【符号の説明】
【０１０７】
１、１ｘ  ルートコンプレックス
２  スイッチ
３、３ａ、３ｂ、３ｃ、３ｄ、３ｃｘ、３ｄｘ  エンドポイント
３ａ１  PCI Express通信部
３ａ２  ローカルコントローラ
３ａ３  データバッファ
５  ＣＰＵ
６  メモリ
７ａ〜７ｅ  PCI.Expressバス
【手続補正２】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
PCI Express通信システムにおけるエラー発生時の伝送プロトコルの改良であって、
トランザクション層パケット（TLP）のTLPダイジェストには、ECRCを付加せず、送信データについて、トランザクション層の回路でエラーを検出して、予め設定するフォーマットでのエラー情報を設定するステップと、
送信デバイス（リクエスタ）がメモリリードリクエストのTLPを送信するステップと、
前記TLPを受信した受信デバイス（コンプリータ）は、要求された前記TLPに対応する第１のデータの送信中にエラーを検出した場合には、返信するコンプリーションのTLPを無効化せず、前記TLPダイジェストに、前記エラー情報として、エラー有無、アドレスレベル単一エラーまたはブロックレベル単一エラー、エラー箇所の各ビットを設定して返信するステップと、
前記送信デバイスは、受信した前記エラー情報から、エラーの発生しているアドレスに対し、前記アドレスレベル単一エラーまたは前記ブロックレベル単一エラーについて、予め設定する夫々のエラー判定レベルの最小データ長を設定してメモリリードリクエストを前記受信デバイスにたいして要求するステップと、
前記受信デバイスは、前記メモリリードリクエストに対して、要求された第２のデータを返信するステップと、
前記送信デバイスは、要求した前記データを受信して、保持していた前記第１のデータのエラー箇所に第２のデータを上書きして、このトランザクションを完了させるステップと
から成り、
前記エラー情報によって、エラー発生時のフォルトトレランスの向上と故障回復時間短縮とを可能としたことを特徴とするPCI Express通信システムの通信方法。
【請求項２】
前記TLPダイジェストに設定する前記エラー情報は、
前記TLPダイジェストは、自デバイスの内部回路の故障を検出して、当該TLPのデータ完全性を設定するエラー検出用冗長コードビットと、
前記TLPのデータにエラーが含まれているか否かを設定するエラー有無ビットと、
前記受信デバイス（コンプリータ）がデータ付きコンプリーションを送信する場合は、前記送信デバイス（リクエスタ）に当該データの修復が必要であるか否かを指示し、前記送信デバイス（リクエスタ）が、メモリライトリクエストまたはメッセージを送信する場合は、前記受信デバイス（コンプリータ）にエラーデータの処理の要否を指示するエラー修復要否ビットと、
検出したエラーが記受信デバイス側で修復可能か否かを示すエラー修復可否ビットと、
前記TLPのデータのエラーが、データ長１ＤＷのみであるか否かを示すアドレスレベル単一エラービットと、
前記TLPのデータに、予め設定するアドレス境界で区切られた一つのブロックのみにデータエラーがあるか否かを示すブロックレベル単一エラービットと、
前記TLPのデータのエラーの発生箇所を示すエラー箇所ビットと、
前記エラー検出用冗長コードビットを除く前記TLPダイジェストの複数のビットのパリティを示すパリティビットと
から成る請求項１に記載のPCI Express通信システムの通信方法。
【請求項３】
PCI Express通信システムにおけるエラー発生時の伝送プロトコルを改良したシステムであって、
前記PCI Express通信システムを構成するTLPパケットを送受信するデバイスは、トランザクション層パケット（TLP）のTLPダイジェストには、ECRCを付加せず、トランザクション層の回路でエラーを検出して、予め設定する送信データのエラー情報を設定し、
送信デバイス（リクエスタ）がメモリリードリクエストのTLPを送信し、
前記TLPを受信した受信デバイス（コンプリータ）は、要求された前記TLPに対応する第１のデータの送信中にエラーを検出した場合には、返信するコンプリーションのTLPを無効化せず、前記TLPダイジェストに、前記エラー情報として、エラー有無、アドレスレベル単一エラーまたはブロックレベル単一エラー、エラー箇所の各ビットを設定して返信し、
前記送信デバイスは、受信した前記エラー情報から、エラーの発生しているアドレスに対し、前記アドレスレベル単一エラーまたは前記ブロックレベル単一エラーについて、予め設定する夫々のエラー判定レベルの最小のデータ長を設定してメモリリードリクエストを前記受信デバイスに対して要求し、
前記受信デバイスは、前記メモリリードリクエストに対して、要求された第２のデータを返信し、
前記送信デバイスは、要求した前記データを受信して、保持していた前記第１のデータのエラー箇所に第２のデータを上書きして、このトランザクションを完了させ、
前記エラー情報によって、エラー発生時のフォルトトレランスの向上と故障回復時間短縮とを可能としたことを特徴とするPCI Express通信システム。
【請求項４】
前記TLPダイジェストに設定する前記エラー情報は、
前記TLPダイジェストは、自デバイスの内部回路の故障を検出して、当該TLPのデータ完全性を設定するエラー検出用冗長コードビットと、
前記TLPのデータにエラーが含まれているか否かを設定するエラー有無ビットと、
前記受信デバイス（コンプリータ）がデータ付きコンプリーションを送信する場合は、前記送信デバイス（リクエスタ）に当該データの修復が必要であるか否かを指示し、前記送信デバイス（リクエスタ）が、メモリライトリクエストまたはメッセージを送信する場合は、前記受信デバイス（コンプリータ）にエラーデータの処理の要否を指示するエラー修復要否ビットと、
検出したエラーが前記受信デバイス側で修復可能か否かを示すエラー修復可否ビットと、
前記TLPのデータのエラーが、データ長１ＤＷのみであるか否かを示すアドレスレベル単一エラービットと、
前記TLPのデータに、予め設定するアドレス境界で区切られた一つのブロックのみにデータエラーがあるか否かを示すブロックレベル単一エラービットと、
前記TLPのデータのエラーの発生箇所を示すエラー箇所ビットと、
前記エラー検出用冗長コードビットを除く前記TLPダイジェストの複数のビットのパリティを示すパリティビットと
から成る請求項３に記載のPCI Express通信システム。
【手続補正書】
【提出日】平成21年5月29日(2009.5.29)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、PCI Express通信システム及びその通信方法に関し、特に、エラー発生時のトランザクション層パケット（TLP : Transaction Layer Packet）の伝送プロトコルの改良に関する。
【背景技術】
【０００２】
PCI Express（登録商標）バスは、コンピュータシステム及び他の電子デバイスのデータを転送するために近年開発された、ポイント・ツー・ポイント接続による高速シリアルインタフェースで、従来のパラレル伝送に比べバスの基板占有面積が少なく一層の小型化が可能で、多分野でその用途が検討されている。
【０００３】
この規格の詳細は、PCI規格の制定母体であるPCI-SIG(Peripheral Component Interconnect-Special Interest Group)によってPCI Express Base Specificationとして規格化され、また、この規格の解説書も出版されている（例えば、非特許文献１参照。）。
【０００４】
先ず、図６乃至図８を参照して、このPCI Express通信システムの概略を説明する。PCI Express通信システム構成は、例えば、図６に示すように、ルートコンプレックス１、スイッチ２、及びエンドポイント３（３ａ、３ｂ、３ｃ、３ｄ）のデバイスから成る。
【０００５】
また、ルートコンプレックス１、スイッチ２は夫々複数のポートを有し、これらとエンドポイント３の相互間を接続するPCI Expressバス７ａ〜７ｅは、図７に示すような３層のレイヤー構造を備える。
【０００６】
夫々の層は、最上位のドライバ及びアプリケーションソフトウェアからなる上位のソフトウェア層に対して従来のPCI互換サービスとエンド・ツー・エンドでデータの確実な通信を保証するトランザクション層１０１、隣接したコンプネント間での確実なデータ通信を保障するデータリンク層１０２、通信パケットを物理媒体上で送受信する物理層１０３から成り、送受信するデータをパケットの形式で伝送する。
【０００７】
さらに、ルートコンプレックス１は、PCI Express通信システムのツリー構造の最上位に位置し、システムバスでＣＰＵ５と、メモリバスでメモリ６とそれぞれ接続される。
【０００８】
この構成では、ルートコンプレックス１とエンドポイント３ａの通信では、スイッチ２がTLPの中継デバイスとなり、エンドポイント３ａとエンドポイント３ｄとの通信では、スイッチ２とルートコンプレックス１が中継デバイスとなる。
【０００９】
このように構成されたPCI Express通信システムのデバイス間の伝送路の接続は、ポイント・ツー・ポイント接続となっており、片方向の差動増幅器を２つ使用するデュアル・シンプレックス方式で、リンク速度は２．５Ｇbpsの帯域を有し、双方向では５Ｇbpsの帯域を備える。
【００１０】
さらに、この双方向の伝送路（レーンと呼ぶ）を２組から３２組まで増やすことにより、バスの帯域幅をスケーラブルに構成することが可能で、この伝送路上でパケットを送受信することによりデータの伝送を実行する。
【００１１】
各層のパケットは、図６にようにトランザクション層及びデータリンク層で生成され、夫々トランザクション層パケット（TLP、Transaction Layer Packet）、データリンク層パケット（DLLP、Data Link Layer Packet）と呼ばれる。
【００１２】
また、物理層においてもリンク制御のために物理層パケット（PLP、Physical Layer Packet）が生成される。
【００１３】
また、各層のパケットは、リンクで接続される相手の同じ層との間でやり取りされ、図８に示すように、下位のプロトコル層で前後に情報を付加され、最終的に伝送路に送信される。受信されたパケットは、各プロトコル層で前後の情報を削除して、上位のプロトコル層に渡される。
【００１４】
詳細には、エンド・ツー・エンドの通信を行うTLPは、トランザクション層でTLPヘッダ、データ・ペイロード、及びオプションのTLPダイジェスト（ECRC、End-to-end CRCと呼ばれる）を構成し、データリンク層で送信時にシーケンス番号とLCRCが付加され、受信時に検査後削除される。
【００１５】
DLLPは、TLPの送達応答（肯定応答Ackと否定応答Nak）などリンクの双方で情報をやりとりする短いパケットである。
【００１６】
さらに、各TLPには、物理層の受信側でTLP開始と終了を検出するための制御キャラクタ、（STPとEND）、がパケットの両端に付加される。また、各DLLPには、DLLP開始と終了を検出するための制御キャラクタ（SDPとEND）がパケットの両端に付加される。
【００１７】
次に、このように構成されるPCI Express通信システムのエラー発生時のトランザクション層でのエラー処理の問題点について図９及び図１０を参照して説明する。
【００１８】
図９は、ルートコンプレックス１、スイッチ２、及びエンドポイント３ａ〜３ｃから構成されるPCI Express通信システムにおいて、エンドポイント３ａから送信データの送信中にエラーが発生した場合の問題点を、また、図１０は、エラー発生時のフォルトトレランス機能の問題点を説明する図である。
【００１９】
例えば、PCI Expressデバイスの構成は、図１０に示すエンドポイント３のように、PCI Express通信部３ａ１と、PCI Express通信部３ａ１から送信データの要求を受け、通信する送信データを記憶するデータバッファ（メモリ）３ａ３へ送信するデータの書き込みを制御するローカルコントローラ３ａ２と、データバッファ３ａ３とから成る。
【００２０】
PCI Expressデバイスから送信する送信データが健全であるためには、通常、データバッファ３ａ３から、PCI Express通信部３ａ１に読み出しされるデータについてPCI Express通信部３ａ１側でエラーを検出する必要がある。このエラー検出では、ローカルコントローラ３ａ２、データバッファ３ａ３、及びPCI Express通信部３ａ１とローカルコントローラ３ａ２及びデータバッファ３ａ３との間のインタフースなどのPCI Express通信部３ａ１の上位回路のハード的な故障、また、データバッファ３ａ３のソフトエラーなどに起因する送信データのエラーを検出する。
【００２１】
先ず、トランザクション層のデータ転送について述べる。TLPのヘッダにはEPビットが用意されている。TLPの送信データについては、例えば、上述したようなPCI Express通信部３ａ１のトランザクション層の回路の一部として設けられるエラー検出回路でエラーを検出し、これが修復不能であった場合、トランザクション層のエラー検出回路はEPビットに1をセットしてTLPを送信すれば、受信側はEPビットを参照することで、受信データにエラーが含まれていることが分かるため、エンド・ツー・エンドのデータ完全性が保障できる。
【００２２】
しかしながら、送信側のトランザクション層のエラー検出回路がヘッダのEPビットに1をセットするには、送信データを全て一旦データバッファに蓄える必要があり、PCI Express通信システムのスループットを低下させてしまう。
【００２３】
上述したPCI Expressの上位回路のバスの帯域がPCI Expressの帯域よりも高ければ、トランザクション層の回路は、上位回路から渡された送信データを一旦データバッファに蓄えずにPCI Expressの伝送路から逐次転送することが望ましい。この転送方式をカットスルーと呼んでいる。
【００２４】
次に、図９を参照して、このカットスルーの転送方式を採用したデバイスでのエラー処理の遅延が問題となる場合について説明する。図９（ａ）は、エンドポイント３ａからルートコンプレックス１宛てにデータ付きコンプリーション、ＴＬＰ１を送信中に、エンドポイント３ｂがルートコンプレックス１宛てに１０２４ダブルワード（以後ＤＷと記す）のＴＬＰ２の送信を開始し、エンドポイント３ａ内で、ＴＬＰ１の未送信のデータに修復が不可能なエラーを検出した場合の状態を図示したものである。
【００２５】
この場合、エンドポイント３ａは、図９（ｂ）に示すようにTLPの末尾の制御キャラクタは「END」でなく、「EDB」（EnD Bad）を付加してＴＬＰ１を無効化し、続いて、ルートコンプレックス１宛てに、このエラーが致命的であることを示すエラーメッセージのＴＬＰ３を送信しようとする。
【００２６】
エンドポイント３ｂから送信したＴＬＰ２は、ＴＬＰ１の送信が終わるまでスイッチ２内のバッファ内で待機状態となっているため、図９（ｃ）に示すように、ＴＬＰ１の送信が終わると、スイッチ２は、ＴＬＰ２をルートコンプレックス１宛てに送信する。エラーメッセージのＴＬＰ３は、ＴＬＰ２が送信中のため、スイッチ２のバッファ内で待機する。
【００２７】
そして、図９（ｄ）に示すように、ＴＬＰ２の送信が完了すると、ＴＬＰ３をルートコンプレックス１宛てに送信を開始する。
【００２８】
上記のようなケースでは、エラーメッセージのＴＬＰ３は、２．５Ｇbpsでレーン数１の場合、最大約１６μsec（1024DW×16ns/DW）の遅延が発生する問題がある。スイッチ２が多くのエンドポイントを接続したシステムの場合には、この遅延はさらに大きくなる可能性がある。
【００２９】
また、エンドポイント３ｃがエンドポイント３ａの待機系デバイスとして構成されているような場合には、このエラーメッセージのＴＬＰ３をトリガにしてデバイスの切替えを実行するようなケースでは、切替え時間の遅延がシステムの故障時間として問題となる。
【００３０】
次に、図１０を参照して、エラー発生時のシステムのフォトトレランス機能の低下が問題となる場合について説明する。
【００３１】
図１０は、ルートコンプレックス１が、ローカルコントローラ３ａ２を備えるエンドポイント３ａに対して１０２４ＤＷのメモリリードリクエストのＴＬＰ３１を送信し、エンドポイント３ａが、その要求に対するコンプリーションＴＬＰ３２を送信中に、データバッファ３ａ３内の未送信データにエラーを検出した場合のエンドポイント３ａのエラー修復動作を説明する構成図である。
【００３２】
PCI Expressデバイスでは、トランザクション層のデータ転送にカットスルーを用いた場合、通常、下記のような修復動作となる。
【００３３】
（１） エンドポイント３ａのPIC Express通信部３ａ１は、メモリリードリクエストのＴＬＰ３１を受信し、ローカルコントローラ３ａ２に１０２４ＤＷのデータを要求する（ｓ４１）
（２） ローカルコントローラ３ａ２は、データバッファ３ａ３にデータを渡し（ｓ４３）、PCI Express通信部３ａ１にデータ準備完了(ｓ４２)を通知する。  
（３） PCI Express通信部３ａ１は、データバッファ３ａ３からバーストリードしながら（ｓ４４）、コンプリーションのＴＬＰ３２を送信する。  
このとき、データバッファアドレスCF4ｈのデータにエラーを検出し、コンプリーションのＴＬＰ３２の末尾キャラクタ「EDB」を付加して、送信中のＴＬＰ３２を無効化する。  
（４） そして、データバッファ３ａ３のエラー修復するため、PCI Express通信部３ａ１は、ローカルコントローラ３ａ２に再びデータを要求する。
【００３４】
ここで、エンドポイント３ａのデータバッファ３ａ３のエラーの修復動作について、エラー処理対応が、一過性のソフトエラーを前提としてデザインされているシステムの場合と、修復不可能な永久故障を前提としてデザインされているシステムの場合とに分けてその問題点を説明する。
【００３５】
前者の場合、通常、PCI Express通信部３ａ１は、同じように１０２４ＤＷのデータをローカルコントローラ３ａ２に要求する。この場合、バッファアドレスCF4ｈが永久故障の場合、同じデータがデータバッファ３ａ２の同じ領域に書き込まれるのでアドレスCF4hのデータのエラーが修復できない問題がある。
【００３６】
また、正常なリードデータをルートコンプレックス１に返せないことから、PCI Express通信部３ａ１は、回復不能なエラー（Fatal Error）のエラーメッセージをルートコンプレックス１宛に送信することになる。
【００３７】
そして、ルートコンプレックス１がこのエラーメッセージを受信することでシステムが停止、または、リセットされる。
【００３８】
後者の場合、PCI Express通信部３ａ１は、ローカルコントローラ３ａ２に対して、小さなデータサイズでデータの送信を要求する方法があり、コンプリーションのTLPを複数回に分けてルートコンプレックス１に送信する。これは、トランザクションの完了に長時間を要する問題がある。
【００３９】
これ以外の方法には、データバッファ３ａ３を二重化して交互に用いる方法もあるが、メモリのコストが掛かる。
【００４０】
ところで、このPCI ExpressのTLPに関しては、データの誤り検出をデータリンク層の機能のLCRCに任せ、トランザクション層の機能のECRCを使用せずにTLPダイジェストのフィールドを独自に活用する技術が開示されている（例えば、特許文献１参照。）。
【００４１】
PCI Expressの規格では、エンド・ツー・エンドのデータ完全性を保証するためのオプション仕様として、TLPダイジェストにECRCを格納することになっている。
【００４２】
しかしながら、特許文献１で記述されているように、中継デバイスの信頼性が十分確保され、さらにトランザクション層にデータ誤り検出機能、例えば、送受信するデータバッファにパリティを設ければ、エンド・ツー・エンドのデータ完全性の保証はLCRCで補うことが可能であり、ECRCは不要と判断できる。
【００４３】
特許文献１のTLPダイジェストを独自に用いるための実施例としては、TLPのヘッダ部のTDビットで、TLPダイジェストの存在の有無を表示し、ヘッダのリザーブビットを活用して、TLPダイジェストが独自の情報を格納しているのか、あるいは、ECRCを格納しているのかを示すものとしている。
【００４４】
しかしながら、リザーブビットをこのような目的で活用しPCI Express通信システムを構築した場合、将来、PCI Expressの規格が改訂され、そのリザーブビットに新たな定義が割り付けられたとき、将来のPCI Express規格との互換性がとれなくなる可能性がある。
【００４５】
従って、TLPダイジェストを独自に用いる場合、ヘッダのリザーブビットを使用せずに、TLPダイジェストが独自仕様であることをシステム内のPCIeデバイスで共有できるようにする必要がある。
【先行技術文献】
【特許文献】
【００４６】
【特許文献１】米国特許出願公開第２００９／０００６９３２号明細書
【非特許文献】
【００４７】
【非特許文献１】荒井信隆、里美尚志、田中顕裕、「PCIe  入門講座」、）（株）電波新聞社、２００７年４月１日発行、第１章〜第５章
【発明の概要】
【発明が解決しようとする課題】
【００４８】
以上説明したように、従来のPCI Express仕様に基づくTLPトランザクションについては、エラー発生時の故障回復時間や、耐障害性（fault tolerance）に問題がある。
【００４９】
本発明は上記問題点を解決するために成されたもので、PCI Express通信システムにおけるエラー発生時のTLP伝送プロトコルの改良であって、PCI Express通信システムの中継デバイスまたはエンドポイントデバイス内のデータバッファ内の特定領域の回復不能な故障や、一過性のソフトエラーに対して、PCI Express通信システムのフォルトトレランスの向上を図るとともに、故障回復時間を短縮することが可能なPCI Express通信システム、及びその通信方法を提供することを目的とする。
【課題を解決するための手段】
【００５０】
上記目的を達成するために、本発明による請求項１に係るPCI Express通信システムの通信方法は、PCI Express通信システムにおけるエラー発生時の伝送プロトコルの改良であって、トランザクション層パケット（TLP）のTLPダイジェストには、ECRCを付加せず、送信データについて、トランザクション層の回路でエラーを検出して、予め設定するフォーマットでのエラー情報を設定するステップと、送信デバイス（リクエスタ）がメモリリードリクエストのTLPを送信するステップと、前記TLPを受信した受信デバイス（コンプリータ）は、要求された前記TLPに対応する第１のデータの送信中にエラーを検出した場合には、返信するコンプリーションのTLPを無効化せず、前記TLPダイジェストに、前記エラー情報として、エラー有無、アドレスレベル単一エラーまたはブロックレベル単一エラー、エラー箇所の各ビットを設定して返信するステップと、前記送信デバイスは、受信した前記エラー情報から、エラーの発生しているアドレスに対し、前記アドレスレベル単一エラーまたは前記ブロックレベル単一エラーについて、予め設定する夫々のエラー判定レベルの最小データ長を設定してメモリリードリクエストを前記受信デバイスにたいして要求するステップと、前記受信デバイスは、前記メモリリードリクエストに対して、要求された第２のデータを返信するステップと、前記送信デバイスは、要求した前記データを受信して、保持していた前記第１のデータのエラー箇所に第２のデータを上書きして、このトランザクションを完了させるステップとから成り、前記エラー情報によって、エラー発生時のフォルトトレランスの向上と故障回復時間短縮とを可能としたことを特徴とする。
【００５１】
上記目的を達成するために、本発明による請求項３に係るPCI Express通信システムは、PCI Express通信システムにおけるエラー発生時の伝送プロトコルを改良したシステムであって、前記PCI Express通信システムを構成するTLPパケットを送受信するデバイスは、トランザクション層パケット（TLP）のTLPダイジェストには、ECRCを付加せず、トランザクション層の回路でエラーを検出して、予め設定する送信データのエラー情報を設定し、送信デバイス（リクエスタ）がメモリリードリクエストのTLPを送信し、前記TLPを受信した受信デバイス（コンプリータ）は、要求された前記TLPに対応する第１のデータの送信中にエラーを検出した場合には、返信するコンプリーションのTLPを無効化せず、前記TLPダイジェストに、前記エラー情報として、エラー有無、アドレスレベル単一エラーまたはブロックレベル単一エラー、エラー箇所の各ビットを設定して返信し、前記送信デバイスは、受信した前記エラー情報から、エラーの発生しているアドレスに対し、前記アドレスレベル単一エラーまたは前記ブロックレベル単一エラーについて、予め設定する夫々のエラー判定レベルの最小のデータ長を設定してメモリリードリクエストを前記受信デバイスに対して要求し、前記受信デバイスは、前記メモリリードリクエストに対して、要求された第２のデータを返信し、前記送信デバイスは、要求した前記データを受信して、保持していた前記第１のデータのエラー箇所に第２のデータを上書きして、このトランザクションを完了させ、前記エラー情報によって、エラー発生時のフォルトトレランスの向上と故障回復時間短縮とを可能としたことを特徴とする。
【発明の効果】
【００５２】
本発明によれば、PCI Express通信システムの中継デバイスまたはエンドデバイス内のデータバッファ内の特定領域の回復不能な故障や、一過性のソフトエラーに対して、PCI Express通信システムのフォルトトレランスの向上を図るとともに、故障回復時間を短縮することが可能なPCI Express通信システム、及びその通信方法を提供することができる。
【図面の簡単な説明】
【００５３】
【図１】本発明のPCI Express通信システムのTLPのフォーマットの構成図。
【図２】本発明のPCI Express通信システムを説明する図。
【図３】本発明のTLPダイジェストによる通信動作を説明するフローチャート。
【図４】本発明のTLPダイジェストによる通信動作を説明するフローチャート。
【図５】本発明のTLPダイジェストを使用したPCI Express通信システムの実施例。
【図６】従来のPCI Express通信システムの構成図。
【図７】従来のPCI Expressの構造を説明する図。
【図８】従来のTLPフォーマットの説明する図。
【図９】従来のPCI Express通信システムの問題点を説明する図。
【図１０】従来のPCI Express通信システムの問題点を説明する図。
【発明を実施するための形態】
【００５４】
以下、本発明の実施例について図面を参照して説明する。
【実施例１】
【００５５】
本発明によるTLPダイジェストのフォーマットの例を図１に示し、そしてこのTLPダイジェストを使用したPCI Express通信システムの動作例を説明する構成図を図２に示す。
【００５６】
この実施例１の各部について、図６〜図１０に示す従来の実施例のPCI Express通信システムと同一部分は同一符号で示し、その説明を省略する。
【００５７】
図１の本発明の実施例が、図１０で説明した従来のPCI Express通信システムの実施例と異なる点は、カットスルー転送方式を採用した従来のPCI Express通信システムでは、エンドポイント３ａでTLPパケットの送信中に未送信のデータにエラーを検知した場合、ECRCを反転させ、TLPの末尾の制御キャラクタを「END」でなく「EDB」にしてパケットを無効化（Nullified TLP）することが一般的な方法であったが、本発明では、TLPダイジェストに予め設定するエラー情報を格納して、PCI Express通信部３ａ１の上位回路となるローカルコントローラ３ａ２、データバッファ３ａ３、及びこれらの回路とPCI Express通信部３ａ１とのインタフェースで発生する一過性のエラーやトランザクション層のデータバッファ３ａ３で発生するソフトエラーや特定箇所の回復不能な故障に対し、PCI Express通信システムのフォルトトレランスの向上を図るとともに、故障回復時間を短縮するようにしたことにある。
【００５８】
先ず、図１を参照して本願のトランザクション層パケットの構造とパケット末尾に付加する３２ビットのTLPダイジェストのフォーマットの設定例について説明する。
【００５９】
ビット１６〜３１の上位１６ビットにセットするエラー検出用冗長コードＤ１は、エンド・ツー・エンドのデータ完全性を保証するための冗長コードをセットする領域である。エンド・ツー・エンドの中継デバイスの信頼性が不明、あるいは不十分な場合はエンド・ツー・エンドのデータ完全性を保証するために、この領域を設ける。これは、PCI ExpressにおけるECRCの役割に相当し、１６ビットCRCの他、１６ビットSUMなどを設定しても良い。
【００６０】
ビット１５に設定するパリティＤ２は、後述するビット０〜１４までのデータを保証するためのパリティビットである。TLPダイジェストのフィールドは、LCRCでデータのエラーを検出できるが、データの信頼性をさらに高めるためのものである。
【００６１】
ビット１４に設定するエラー有無Ｄ３は、送信するTLPのデータにエラーが含まれているか否か(１：エラー有り、０：エラー無し)を示すビットで有る。
【００６２】
また、ビット１３に設定するエラー修復要否Ｄ４は、データ付きコンプリーションを受信した場合においては、リクエスタ側にエラーデータの修復処理が必要であるか否かを指示する。
【００６３】
（例えば、１：リクエスタは、エラーデータを含んだアドレス、またはその周辺アドレス領域のみに対して、最小のデータ長のメモリリードリクエストを発行する、または、前回と同じアドレスとデータ長のメモリリードリクエストを発行する。  
０：リクエスタは、エラーの有無に係らず、リードしたデータを通常処理して、トランザクションを完了させる。）
【００６４】
メモリライトリクエストまたはメッセージを受信した場合においては、コンプリータ側にエラーデータの処理を指示するビットである。  
（例えば、１：コンプリータはエラーデータを破棄する。  
但し、全てのデータを破棄するか、エラーデータのみを破棄し残りのデータは保持するかはシステムで決定する。）
０：コンプリータは、そのライトデータを通常処理する。）
【００６５】
次に、ビット１２に設定するエラー修復可否Ｄ５は、送信側で発生したエラーが修復可能であるか否かを示すビットである。  
(例えば、１：送信側の機能で正しいデータが再生成でき、修復可能である。  
０：送信側の機能で正しいデータが再生できない、修復不能である。）
【００６６】
また、ビット１１に設定するアドレスレベル単一エラーＤ６は、TLPのデータに１ＤＷのみのデータエラーが含まれているか否かを示すビットである。  
(例えば、１：単一エラー、０：複数エラー)
【００６７】
同様に、ビット１０に設定するブロックレベル単一エラーＤ７は、TLPのデータに予めシステム設計時に設定されるアドレス境界で区切られた一つのブロックのみにデータエラーが含まれているか否かを示すビットである。  
（例えば、１：単一エラー、O：複数エラー）
【００６８】
さらに、ビット０〜９に設定するエラー箇所Ｄ８は、最初にエラーを検出した箇所をセットする領域で、TLPのデータ・ペイロードに関して、先頭から何ＤＷ目のエラーであるかを示すビットである。
【００６９】
ここで、図１に示したTLPダイジェストのフォーマットで説明したエラーに関する設定情報をここでは総称して、エラー情報と称することにする。
【００７０】
次に、このようなTLPダイジェストのフォーマットに基づき設定されたPICe通信システムのトランザクション動作について、図２を参照して説明する。
【００７１】
図２は、図１０より、ルートコンプレックス１が、ローカルコントローラ３ａ２を備えるエンドポイント３ａに対して１０２４ＤＷのメモリリードリクエスト(TLP)を発行し、エンドポイント３ａがデータ付きコンプリーションの送信中に、データバッファ３ａ３内の未送信データにエラーを検出した場合のエンドポイント３ａのエラー修復する場合の動作を説明する構成図である。
【００７２】
本発明では、以下のようなエラー修復動作となる。先ず、図１０と同様に、
（１） エンドポイント３ａのPIC Express通信部３ａ１は、メモリリードリクエストＴＬＰ３１を受信し、ローカルコントローラ３ａ２に１０２４ＤＷのデータを要求する。  
（２） ローカルコントローラ３ａ２は、データバッファ３ａ３にデータを渡し、PCI Express通信部３ａ１にデータ準備完了を通知する。  
（３） PCI Express通信部３ａ１は、データバッファ３ａ３からバーストリードしながら（ｓ４４）、データ付きコンプリーションＴＬＰ３２を送信する。
【００７３】
このとき、データバッファアドレスCF4ｈのデータにエラーを検出し、コンプリーションTLPの末尾に「EDB」を付加せず、送信中のTLPを無効化することはしない。
【００７４】
そして、エンドポイント３ａのデータバッファ３ａ３のエラーの修復動作は、
（４） 送信中のデータから検出したエラー情報は、図１で説明したようなTLPダイジェストのフォーマットで設定され、設定したエラー情報が、例えば、単一エラーで、そのエラー箇所のアドレスが記述されたTLP（データ付きコンプリーションＴＬＰ３２）が、エンドポイントから送信される。  
（５） 図２より、ルートコンプレックス１は、受信したデータを保持したままエラーが発生した箇所のアドレスについてのみ、メモリリードリクエストを発行する、この時のTLPのデータ長は単一エラーであることからTLPヘッダのデータ長フィールドに１を設定する（ＴＬＰ２１）。  
（６） エンドポイント３ａのPCI Express通信部３ａ１は、ローカルコントローラ３ａ２に対して、要求されたアドレスについて、１ＤＷのデータを要求する（ｓ３１）
（７） ローカルコントローラ１は、データバッファ３ａ３の先頭に１ＤＷのデータを準備して（ｓ３３）、PCI Express通信部３ａ１にデータ準備完了を知らせる（ｓ３２）。  
（８） そして、PCI Express通信部３ａ１は、データバッファ３ａ３の先頭アドレスのデータをリードし（ｓ３４）、このデータのTLP（ＴＬＰ２２）をルートコンプレックス１に送信する。  
（９） すると、ルートコンプレックス１は、このTLPを受信して、保持していたデータのエラー箇所にこのデータを上書きして、このトランザクションを完了させる。
【００７５】
このエラー処理の場合、要求された１ＤＷのデータを書き込むデータバッファ３ａ３の先頭アドレスが故障していたとすると、正しいデータが送信できないことになるが、その場合には、予め設定される別の領域に書きこむようにローカルコントローラ１に指定することで回避できる。
【００７６】
このTLPダイジェストに設定されるエラー情報に基づくエラー処理の場合には、一過性のソフトエラーだけでなく、特定領域の永久故障に対してもフォルトトレランスを実現できる。
【００７７】
さらに、エラー箇所の特定領域のみに対して、メモリリードリクエストを発行してエラー修復を行なうので、素早くトランザクションを完了することが出来る。
【００７８】
したがって、データバッファ３ａ３内で単一エラーが発生した場合や、データバッファとローカルコントローラの間で一過性のエラーが発生した場合でも、エラーの修復を素早く修復できる可能性があるので、PCI Expressの上位回路のエラーに対するPCI Express通信システムのリアルタイム性を確保できる。
【００７９】
次に、本願のエラー情報を設定したTLPダイジェストに基づくTLPの受信処理動作の詳細について、図３及び図４を参照して説明する。
【００８０】
受信したTLPにエラーが無いかパリティＤ２及びエラー検出用冗長コードＤ１を参照して判定する（ｓ１〜ｓ３）。
【００８１】
いずれかに、エラーが有る場合には、このパケットを破棄し（ｓ４）、このTLPの種類がリクエストの場合には、予め設定するシステムの回復方法で処理する（ｓ５、ｓ６）。
【００８２】
そうでなければ、即ち、コンプリーションの場合は、前回のリクエストを再発行、または、送信側デバイスあるいはシステムをリセットする（ｓ７）。
【００８３】
受信したTLPにエラーがなく、その種類がデータ付きコンプリーション以外の場合で（ｓ１１）、種類がメモリライトリクエストかメッセージの場合には（ｓ１２）、さらに、このTLPのエラー有Ｄ３、エラー修復の要Ｄ４を参照して、予め定められるエラー修復処理を実行し（ｓ１５）、そうでない場合（エラー無しＤ３、エラー修復の否Ｄ４）には、この応答を終了する。
【００８４】
そのTLPの種類がデータ付きコンプリーション、メモリライトリクエスト、メッセージリクエストのいずれでもない場合で、このTLPがデータ無しコンプリーションの場合には、この応答を終了し（ｓ６）、そうでなければ、即ち、メモリライトリクエスト及びメッセージリクエスト以外のリクエストであれば、コンプリーションを実行する（ｓ１７）。
【００８５】
次に、このTLPがデータ付きコンプリーションの場合、これを受信したデバイスでの処理動作について、図４を参照して説明する。
【００８６】
要求されたデータにエラー無Ｄ３（ｓ２１）、エラー修復要否Ｄ４（ｓ２２）が不要の場合にはリードトランザクションを完了する（ｓ２３）。
【００８７】
データにエラー有りＤ３（ｓ２１）、エラー修復要Ｄ４（ｓ２２）の場合には、さらに、エラー修復可否Ｄ５（ｓ２４）を判定する。エラー修復可否Ｄ５が不可の場合には、アドレスレベル単一エラーＤ６を参照し、その結果、単一エラー（ｓ２５）の場合、エラー箇所Ｄ８のアドレスへデータ長１ＤＷのメモリリードリクエストを送信する（ｓ２６）。
【００８８】
このリクエストに対するコンプリーションが正常に返信されれば、このリードトランザクションを完了する（ｓ２７、ｓ２３）。
【００８９】
アドレスレベル単一エラーＤ６を参照し、その結果、ブロックレベル単一エラーの場合（ｓ２８）、そのエラー箇所Ｄ８に基づくｎＤＷ（ＤＷのｎ倍）アドレス境界の先頭アドレスに対しデータ長ｎＤＷのメモリリードリクエストを送信する（ｓ２９）。このリクエストに対するコンプリーションが正常に返信されれば、このリードトランザクションを完了する（ｓ２７、ｓ２３）。
【００９０】
エラー修復可否Ｄ５が否の場合、あるいは、アドレスレベル単一エラーでもブロックレベル単一エラーでもない場合（ｓ２８：Ｎｏ）、前回と同じリクエストを再発行するか、または、送信側PCI Expressデバイスあるいはシステム全体をリセットする。
【実施例２】
【００９１】
次に、実施例１で説明したようなTLPダイジェストを独自に用いたPCI Expressデバイス（以下、専用デバイスと称す）と従来のPCI Expressデバイス（以下、汎用デバイスと称す）とが混在するPCI Express通信システムの通信方法について説明する。
【００９２】
PCI Express通信システム内の全てのPCI Expressデバイスを独自に設計するならば、各デバイスはTLPダイジェストに実施例１に説明したようなエラー情報の設定・検出が出来るように設計すればよい。
【００９３】
しかしながら、信頼性が要求される産業向けPCI Express通信システムであっても、採用されるPCI Express通信システムの構成は、汎用デバイスと実施例１に示したような独自設計の専用デバイスの混在になるケースが考えられる。
【００９４】
例えば、図５に示すように、ルートコンプレックス１ｘは、ＣＰＵ５やメモリ６のインタフェースの高信頼化や、ＣＰＵ５の二重化制御などのための専用デバイスであり、エンドポイント３ｃｘ、３ｄｘは、例えば、リアルタイムイ−サネット（登録商標）などの専用デバイスであり、トランザクション層は独自に設計が可能である。
【００９５】
一方、エンドポイント３ａ、３ｂは、例えば、汎用イーサネット（登録商標）や、汎用ＵＳＢであり、これらはＣＯＴＳ（商用品、Commercial off-the-shelf）であることからトランザクション層の回路に手を加えることができない。
【００９６】
この専用デバイスのエンドポイント３ｃｘ、３ｄｘは、例えば、リアルタイムイーサネット（登録商標）などの制御通信を必要とする場合、トランザクション層が独自に設計されるが、汎用イーサネット（登録商標）３ｂや汎用ＵＳＢ３ａポートの場合、そのデバイスを専用デバイスとすると高価格になるため、通常、これらの汎用デバイスのPCI Expressの通信部には手を加えない。
【００９７】
上記のような汎用と専用のデバイスが混在した構成の場合、ルートコンプレックス１ｘは、どのPCI Expressデバイスが実施例１で示したような独自のTLPダイジェストをサポートしているかを容易に識別する必要がある。
【００９８】
特許文献１では、TLPのヘッダのリザーブビットを活用して、TLPダイジェストのタイプがECRCか独自かを送信するTLP毎に判別したが、本実施例２では、コンフィグレーション時に専用デバイスの判定を一括して行うようにした点が異なる。
【００９９】
以下、図５を参照して、汎用、専用デバイスが混在したシステム構成でのデバイスの識別方法について説明する。
【０１００】
図５のルートコンプレックス１ｘは、システムの初期化時にベンダー独自メッセージをブロードキャストで送信する。ベンダー独自メッセージはPCI Express規格で定められており、メッセージコードは0111 1111 (Vendor_defined Type 1)である。メッセージのヘッダの４ＤＷ目はベンダー記述フィールドであり、独自にTLPダイジェストを用いることを示すコードを予め定め格納する。
【０１０１】
専用デバイスのエンドポイント３ｃｘと３ｄｘとは、このメッセージを受けると、ルートコンプレックス１ｘ宛てに上述したベンダー独自メッセージを返信する。
【０１０２】
汎用デバイスのエンドポイント３ａと３ｂは、ベンダー独自メッセージの内容が解釈できないため、そのメッセージを破棄する。
【０１０３】
ルートコンプレックス１ｘは、応答のあったエンドポイントのＩＤ(バス番号、デバイス番号、機能番号)を全て記憶し、初期化終了後、これらのＩＤに一致するリクエストおよびコンプリーションについては、TLPダイジェストを独自に処理し、当該ＩＤに一致しなければ、TLPダイジェストを使用しないか、あるいは、ECRCで処理する。
【０１０４】
ブロードキャスト型のメッセージリクエストについては、専用デバイスはTLPダイジェストをECRCで処理するか、そのメッセージのヘッダ部のＴＤビットを０にして、TLPダイジェストを無効にする。
【０１０５】
以上説明したような方法で、システムの初期化時に構成するデバイスが汎用か専用かを容易に識別をすることが可能となる。
【０１０６】
本発明は、上述したような実施例に何ら限定されるものでなく、TLPダイジェストにセットするエラー情報は、バッファメモリの構成やデータ構成などのよって、再送を要求する領域を変更しても良く、本発明の主旨を逸脱しない範囲で種々変形して実施することが出来る。
【符号の説明】
【０１０７】
１、１ｘ  ルートコンプレックス
２  スイッチ
３、３ａ、３ｂ、３ｃ、３ｄ、３ｃｘ、３ｄｘ  エンドポイント
３ａ１  PCI Express通信部
３ａ２  ローカルコントローラ
３ａ３  データバッファ
５  ＣＰＵ
６  メモリ
７ａ〜７ｅ  PCI Expressバス
【手続補正２】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
PCI Express通信システムにおけるエラー発生時の伝送プロトコルの改良であって、
トランザクション層パケット（TLP）のTLPダイジェストには、ECRCを付加せず、送信データについて、トランザクション層の回路でエラーを検出して、予め設定するフォーマットでのエラー情報を設定するステップと、
送信デバイス（リクエスタ）がメモリリードリクエストのTLPを送信するステップと、
前記TLPを受信した受信デバイス（コンプリータ）は、要求された前記TLPに対応する第１のデータの送信中にエラーを検出した場合には、返信するコンプリーションのTLPを無効化せず、前記TLPダイジェストに、前記エラー情報として、エラー有無、アドレスレベル単一エラーまたはブロックレベル単一エラー、エラー箇所の各ビットを設定して返信するステップと、
前記送信デバイスは、受信した前記エラー情報から、エラーの発生しているアドレスに対し、前記アドレスレベル単一エラーまたは前記ブロックレベル単一エラーについて、予め設定する夫々のエラー判定レベルの最小データ長を設定してメモリリードリクエストを前記受信デバイスにたいして要求するステップと、
前記受信デバイスは、前記メモリリードリクエストに対して、要求された第２のデータを返信するステップと、
前記送信デバイスは、要求した前記データを受信して、保持していた前記第１のデータのエラー箇所に第２のデータを上書きして、このトランザクションを完了させるステップと
から成り、
前記エラー情報によって、エラー発生時のフォルトトレランスの向上と故障回復時間短縮とを可能としたことを特徴とするPCI Express通信システムの通信方法。
【請求項２】
前記TLPダイジェストに設定する前記エラー情報は、
前記TLPダイジェストは、自デバイスの内部回路の故障を検出して、当該TLPのデータ完全性を設定するエラー検出用冗長コードビットと、
前記TLPのデータにエラーが含まれているか否かを設定するエラー有無ビットと、
前記受信デバイス（コンプリータ）がデータ付きコンプリーションを送信する場合は、前記送信デバイス（リクエスタ）に当該データの修復が必要であるか否かを指示し、前記送信デバイス（リクエスタ）が、メモリライトリクエストまたはメッセージを送信する場合は、前記受信デバイス（コンプリータ）にエラーデータの処理の要否を指示するエラー修復要否ビットと、
検出したエラーが記受信デバイス側で修復可能か否かを示すエラー修復可否ビットと、
前記TLPのデータのエラーが、データ長１ＤＷのみであるか否かを示すアドレスレベル単一エラービットと、
前記TLPのデータに、予め設定するアドレス境界で区切られた一つのブロックのみにデータエラーがあるか否かを示すブロックレベル単一エラービットと、
前記TLPのデータのエラーの発生箇所を示すエラー箇所ビットと、
前記エラー検出用冗長コードビットを除く前記TLPダイジェストの複数のビットのパリティを示すパリティビットと
から成る請求項１に記載のPCI Express通信システムの通信方法。
【請求項３】
PCI Express通信システムにおけるエラー発生時の伝送プロトコルを改良したシステムであって、
前記PCI Express通信システムを構成するTLPパケットを送受信するデバイスは、トランザクション層パケット（TLP）のTLPダイジェストには、ECRCを付加せず、トランザクション層の回路でエラーを検出して、予め設定する送信データのエラー情報を設定し、
送信デバイス（リクエスタ）がメモリリードリクエストのTLPを送信し、
前記TLPを受信した受信デバイス（コンプリータ）は、要求された前記TLPに対応する第１のデータの送信中にエラーを検出した場合には、返信するコンプリーションのTLPを無効化せず、前記TLPダイジェストに、前記エラー情報として、エラー有無、アドレスレベル単一エラーまたはブロックレベル単一エラー、エラー箇所の各ビットを設定して返信し、
前記送信デバイスは、受信した前記エラー情報から、エラーの発生しているアドレスに対し、前記アドレスレベル単一エラーまたは前記ブロックレベル単一エラーについて、予め設定する夫々のエラー判定レベルの最小のデータ長を設定してメモリリードリクエストを前記受信デバイスに対して要求し、
前記受信デバイスは、前記メモリリードリクエストに対して、要求された第２のデータを返信し、
前記送信デバイスは、要求した前記データを受信して、保持していた前記第１のデータのエラー箇所に第２のデータを上書きして、このトランザクションを完了させ、
前記エラー情報によって、エラー発生時のフォルトトレランスの向上と故障回復時間短縮とを可能としたことを特徴とするPCI Express通信システム。
【請求項４】
前記TLPダイジェストに設定する前記エラー情報は、
前記TLPダイジェストは、自デバイスの内部回路の故障を検出して、当該TLPのデータ完全性を設定するエラー検出用冗長コードビットと、
前記TLPのデータにエラーが含まれているか否かを設定するエラー有無ビットと、
前記受信デバイス（コンプリータ）がデータ付きコンプリーションを送信する場合は、前記送信デバイス（リクエスタ）に当該データの修復が必要であるか否かを指示し、前記送信デバイス（リクエスタ）が、メモリライトリクエストまたはメッセージを送信する場合は、前記受信デバイス（コンプリータ）にエラーデータの処理の要否を指示するエラー修復要否ビットと、
検出したエラーが前記受信デバイス側で修復可能か否かを示すエラー修復可否ビットと、
前記TLPのデータのエラーが、データ長１ＤＷのみであるか否かを示すアドレスレベル単一エラービットと、
前記TLPのデータに、予め設定するアドレス境界で区切られた一つのブロックのみにデータエラーがあるか否かを示すブロックレベル単一エラービットと、
前記TLPのデータのエラーの発生箇所を示すエラー箇所ビットと、
前記エラー検出用冗長コードビットを除く前記TLPダイジェストの複数のビットのパリティを示すパリティビットと
から成る請求項３に記載のPCI Express通信システム。