(57)【要約】      （修正有）【課題】PCI-Express通信システムにおいて、あるノードからリクエストが発行された後、リクエスト元にレスポンスが返されるまでにPCI-Expressスイッチ内でバスＩＤ／デバイスＩＤの付替えが発生しても、レスポンスパケットをリクエスト元に送付できるようにする。また、一連のパケット転送においてパケットが順序正しく転送されたか確認可能とする。【解決手段】各ノードに固有のノードＩＤを設定するとともに、データ転送用チャネルにチャネルＩＤを設定し、データ転送パケットのアドレス部に、転送先ノードのノードＩＤとデータ転送用チャネルのチャネルＩＤ、パケットがリクエストかレスポンスかを識別するパケットタイプ及び一連のパケット転送におけるパケットのシーケンス番号を設定する。データ転送には、アドレスルーティングを使用するメモリライトリクエストパケットのみを使用する。【選択図】図１
2007316755.tif 000002
【特許請求の範囲】
【請求項１】
複数のモジュール間を接続してパケット転送を行うPCI-Expressスイッチを用いたPCI-Express通信システムにおいて、
前記複数のモジュールの各々にそれらを識別する固有のノードＩＤを設定するとともに、データ転送に使用する各チャネルにチャネルＩＤを設定し、
データ転送についてのパケットのアドレス部内に、転送先モジュールの前記ノードＩＤと該データ転送に使用するチャネルの前記チャネルＩＤ、及び前記パケットがリクエストであるかレスポンスであるのかを識別するパケットタイプを設定し、
データ転送には、アドレスルーティングでルーティングされるメモリライトリクエストパケットを使用することを特徴とするPCI-Express通信システム。
【請求項２】
前記データ転送に使用するチャネルとして、相手モジュールにデータを書き込むＰＵＴ転送専用のチャネルと相手モジュールからデータを読み出すＧＥＴ転送専用のチャネルを設けることを特徴とする請求項１に記載のPCI-Express通信システム。
【請求項３】
一方のモジュールから他方のモジュールにメモリリードリクエストを発行する場合は、前記一方のモジュールは、前記メモリライトリクエストパケットのアドレス部内に、前記他方のモジュールのノードＩＤと前記他方のモジュールが使用するＧＥＴ転送専用チャネルのチャネルＩＤ、及びリクエストであることを識別する前記パケットタイプを設定することを特徴とする請求項２に記載のPCI-Express通信システム。
【請求項４】
前記一方のモジュールは、該一方のモジュールが使用するＧＥＴ転送専用チャネルのチャネルＩＤを前記メモリライトリクエストパケットのヘッダ内に設定し、前記他方のモジュールは、該チャネルＩＤと前記一方のモジュールのノードＩＤ、及びレスポンスであることを識別する前記パケットタイプをメモリライトリクエストパケットのヘッダのアドレス部内に設定して該メモリライトリクエストパケットを前記一方のモジュールに返信することを特徴とする請求項３に記載のPCI-Express通信システム。  
【請求項５】
一方のモジュールから他方のモジュールにメモリライトリクエストを発行する場合は、前記一方のモジュールは、前記メモリライトリクエストパケットのアドレス部内に、前記他方のモジュールのノードＩＤと前記他方のモジュールが使用するＰＵＴ転送専用チャネルのチャネルＩＤ、及びリクエストであることを識別する前記パケットタイプを設定することを特徴とする請求項２に記載のPCI-Express通信システム。
【請求項６】
前記一方のモジュールは、該一方のモジュールが使用するＰＵＴ転送専用チャネルのチャネルＩＤを前記メモリライトリクエストパケットのヘッダ内に設定し、前記他方のモジュールは、該チャネルＩＤと前記一方のモジュールのノードＩＤ、及びレスポンスであることを識別する前記パケットタイプをメモリライトリクエストパケットのヘッダのアドレス部内に設定して該メモリライトリクエストパケットを前記一方のモジュールに返信することを特徴とする請求項５に記載のPCI-Express通信システム。
【請求項７】
複数のモジュール間を接続してパケット転送を行うPCI-Expressスイッチを用いたPCI-Express通信方法において、
前記複数のモジュールの各々にそれらを識別する固有のノードＩＤを設定するとともに、データ転送に使用する各チャネルにチャネルＩＤを設定し、
データ転送についてのパケットのアドレス部内に、転送先モジュールの前記ノードＩＤと該データ転送に使用するチャネルの前記チャネルＩＤ、及び前記パケットがリクエストであるかレスポンスであるのかを識別するパケットタイプを設定し、
リクエストの場合には必ずレスポンスパケットを応答し、
データ転送には、アドレスルーティングでルーティングされるメモリライトリクエストパケットを常に使用することを特徴とするPCI-Express通信方法。
【請求項８】
PCI-Expressスイッチを用いてパケット転送を行うPCI-Express通信システムのモジュールにおいて、
該モジュールを識別する固有のノードＩＤを設定するとともに、データ転送に使用する各チャネルにチャネルＩＤを設定し、
データ転送についてのパケットのアドレス部内に、転送先モジュールの前記ノードＩＤと該データ転送に使用するチャネルの前記チャネルＩＤ、及び前記パケットがリクエストであるかレスポンスであるのかを識別するパケットタイプを設定し、
データ転送には、アドレスルーティングでルーティングされるメモリライトリクエストパケットを使用することを特徴とするPCI-Express通信システムのモジュール。
【請求項９】
前記データ転送に使用するチャネルとして、相手モジュールにデータを書き込むＰＵＴ転送専用のチャネルと相手モジュールからデータを読み出すＧＥＴ転送専用のチャネルを設けることを特徴とする請求項８に記載のPCI-Express通信システムのモジュール。
【請求項１０】
相手方のモジュールからメモリライトリクエストを受信した場合は、メモリライトリクエストパケットのアドレス部内に、前記相手方のモジュールのノードＩＤとレスポンスであることを識別する前記パケットタイプを設定し、該メモリライトリクエストパケットを相手方のモジュールに返信することを特徴とする請求項８に記載のPCI-Express通信システムのモジュール。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、PCI-Expressをインターフェースに使用した、複数のノードがPCI-Expressスイッチを介して接続される通信システム、及びその通信方法に関する。
【背景技術】
【０００２】
パソコン内部の各パーツ間を結ぶバスの規格であり、現在ほとんどのパソコンで採用されているＰＣＩに対して、より高速な転送インターフェース規格であるPCI-Expressの仕様が新たに策定されている。
【０００３】
例えば、下記特許文献１に記載されているように、PCI-Expressでは、パラレルバスで生ずる信号線と信号線との間でのずれ（スキュー）を防止するため、シリアルリンクが採用され、このシリアルリンクを介してパケットが非同期で転送される。また、PCI-Expressでは、層単位のアップグレードを可能とするため、機能が階層化されている。ソフトウェア層で作成された送信データにトランザクション層でヘッダが付加されてトランザクションパケットが作成され、データリンク層でトランザクションパケットの前後にシーケンス番号とＣＲＣが付加されてデータリンク層パケットとされる。そして、物理層で物理的な信号とされ伝送媒体で送信される。
【０００４】
ところで、PCI-Expressでは、スイッチ（PCI-Expressスイッチ）によりノード間の接続を行うことができる。
図１７は、PCI-Expressスイッチにより各モジュールが接続され、PCI-Expressに基づいてモジュール間の通信を行う従来のPCI-Express通信システムを説明する図である。
【０００５】
以下、PCI-Expressについて、本発明と関連する部分をさらに説明する。
PCI-Expressの仕様によれば、図１７のモジュールＡ(1)のように、ルートコンプレックスと呼ばれる上位階層のトップに位置するモジュールが必要である。また、図１７に示すように、各モジュールには、PCI-Expressスイッチ(6)のポート毎にバス番号(BusNum.)、デバイス番号(DeviceNum.)が割り当てられている。図１７には、モジュールＡ(1)にはバス番号が０、デバイス番号は１が割り当てられ、モジュールＢ(2)にはバス番号が１、デバイス番号は２が割り当てられ、モジュールＣ(3)にはバス番号が１、デバイス番号は３が割り当てられ、モジュールＤ(4)にはバス番号が１、デバイス番号は４が割り当てられた例が示されている。
【０００６】
次に、PCI-Expressスイッチ(6)を介したモジュール間のパケット通信について説明する。PCI-Expressスイッチ(6)上でのパケットルーティングには、パケットヘッダに含まれるアドレスによりルーティングを行うアドレスルーティングと、同じくパケットヘッダに含まれるバス、デバイス及びファンクション番号から構成されるリクエスタＩＤによるＩＤルーティングの２種類がある。
【０００７】
これらのルーティングは、PCI-Expressの仕様では、リクエストパケットにはアドレスルーティングが、レスポンスパケットにはＩＤルーティングが使用されるように使い分けられている。したがって、メモリライトリクエストコマンド及びメモリリードリクエストコマンドに対するリクエストパケットにはアドレスルーティングが用いられる。なお、メモリライトリクエストコマンドに対しては、レスポンスパケットの応答はない仕様になっている。
【０００８】
例えば図１７に示すように、（１）モジュールＤ(4)からモジュールＣ(3)へメモリリードリクエストコマンドを発行すると、（２）PCI-Expressスイッチ(6)はアドレスルーティングによりモジュールＣ(3)へメモリリードリクエストパケットを転送し、（３）モジュールＣ(3)は、リードデータをレスポンスパケットとして応答する。（４）PCI-Expressスイッチ(6)はＩＤルーティングでモジュールＤ(4)へレスポンスパケットを転送する。
【０００９】
図１８は、相手側からデータを読み出すＧＥＴ転送のシーケンスを説明する図である。送信側のファームウェアは、読み出すデータを指定するためのディスクリプタをメモリ上に作成して送信側のハードウェアを起動する。図１８に示されるように、送信元はメモリリードリクエストパケットを発行し、PCI-Expressスイッチ(6)においてアドレスルーティングにより受信側に送信する。受信側では、受信側のハードウェアが受信側ファームウェアによる受信起動によりアイドル状態から立ち上がり、送信側から送られてきたメモリリードリクエストパケットによりＧＥＴ要求を受信する。そして、メモリからデータを読み出してＧＥＴ要求に対する応答をレスポンスパケットで返送する。レスポンスパケットはPCI-Expressスイッチ(6)においてＩＤルーティングにより送信側に返送される。送信側のハードウェアはレスポンスパケットからリードデータを受信し、メモリ上にそのデータを書き込んで送信側ファームウェアに割込を行い、送信側ファームウェアは終了処理を行う。
【００１０】
図１９は、相手側にデータを書き込むＰＵＴ転送のシーケンスを説明する図である。送信側の発行するメモリライトリクエストパケットのルーティングは、ＧＥＴ転送の場合と同様にアドレスルーティングで行われる。そして、受信側は、PCI-Expressの仕様上（Non-PostedのMemory WriteにはResponseが発生しない）、レスポンスを応答しない。このため、要求側は正常に実行されたか判断不能であった。
【００１１】
例えば、図１７で示すようにPCI-express スイッチ(6)のポート毎にバス番号、デバイス番号が設定されており、モジュールＤ(4)からモジュールＣ(3)へメモリリードリクエストパケットを送信したとする。このとき、パケットの転送制御はアドレスルーティングで行われる。モジュールＣ(3)はリードデータをレスポンスパケットとして転送するが、このときの転送制御はＩＤ ルーティングにて行われる。
【００１２】
図２０は、上記のシーケンスで用いられるパケットのトランザクション層のヘッダの一部を示すものである。図２０のリクエスタＩＤはこのパケットを送信するモジュールを識別する情報であり、図２０のアドレス（Address）は転送先へのルーティング情報を含んでいる。レスポンスパケットのアドレスには、このレスポンスパケットに対応するリクエストパケットのリクエスタＩＤが設定されており、PCI-Expressスイッチ(6)は、レスポンスパケットのＩＤルーティングのときにはその設定されたリクエスタＩＤ（Requester ID）のうちのバス番号を用いてルーティングを行う。アドレスルーティングのときは図２０のアドレスが各ポートごとに設定されたアドレス範囲のどの部分に含まれるかによりルーティングを行う。
【００１３】
このようなシステムで、図２１に示すように、ルートコンプレックスであるモジュールＡ(1)が異常等により切り離された場合、ルートコンプレックスが不在となってしまうため、モジュールＢ〜Ｎのうちいずれかが新しいルートコンプレックスとなりPCI-Expressスイッチ(6)の持つ各ポートの構成情報（バス番号／デバイス番号）を変更する必要がある。図２１に示す例ではモジュールＢ(2)を新しいルートコンプレックスとしている。
【００１４】
図２１において、（１）モジュールＤ(4)からモジュールＣ(3)に対してメモリリードリクエストを発行し、（２）PCI-Expressスイッチ(6)はアドレスルーティングによりモジュールＣ(3)へメモリリードリクエストパケットを転送し、（３）その時ルートコンプレックスであるモジュールＡ(1)が異常により切り離されたとする。（４）すると、PCI-Expressスイッチ(6)では各ポートのコンフィギャ情報が変更され、バス番号、デバイス番号の付け替え(以下、「ＩＤの付け替え」ともいう。）が発生し、モジュールＢ(2) が新しいルートコンプレックスとなる。（５）モジュールＣ(3)はモジュールＤ(4)からのメモリリードリクエストコマンドによりリードデータをレスポンスパケットとして応答するが、その時のリクエスタＩＤは、モジュールＤのバス番号とデバイス番号の付け替え前の番号で構成されている。（６）PCI-Expressスイッチ(6)はモジュールＣ(3)から送られてきたパケットはレスポンスパケットであるため、ＩＤルーティングによりルーティングを行う。（７）しかし、バス番号、デバイス番号は付け替えにより他のモジュールに割り振られているため、前記レスポンスパケットは誤って他のモジュールに送られるか、または紛失してしまう可能性がある。
【特許文献１】特開２００４−３２６１５１号公報
【発明の開示】
【発明が解決しようとする課題】
【００１５】
そこで、本発明の解決しようとする課題は、PCI-Expressスイッチを用いてノード間の通信を行うPCI-Express通信システムにおいて、あるノードから他のノードにリクエストが発行された後、他のノードからリクエスト元のノードにレスポンスが返されるまでにPCI-Expressスイッチ内でバス番号／デバイス番号の付替えが発生しても、レスポンスパケットを当初のリクエスト元のノードであるターゲットに送付できるようにすることである。
【課題を解決するための手段】
【００１６】
PCI-Expressによって接続される各モジュールに固有のノードＩＤを設定する。また、相手モジュールにデータを書き込む（ＰＵＴ転送）、相手モジュールからデータを読み出す（ＧＥＴ転送）のそれぞれに専用のチャネルを設け、各チャネルにチャネルＩＤを設定する。そして、PCI-Expressに従って転送されるトランザクションレイヤパケットのヘッダのアドレス部内に、前記ノードＩＤとチャネルＩＤを設定するとともに、リクエストであるかレスポンスであるのかを識別するパケットタイプを設定する。
【００１７】
そしてデータ転送には、アドレスルーティングでルーティングされるメモリライトリクエストパケットのみを使用する。
また、リクエストの場合には必ずレスポンスパケット（レスポンスタイプのメモリライトリクエストパケット）により応答する。
【発明の効果】
【００１８】
転送手段にＩＤルーティングを使用しないため、PCI-Expressスイッチにてバス番号、デバイス番号の付替えが発生してもリクエストを発行したモジュールに確実にレスポンスを応答することができる。
【００１９】
受信側モジュールは、送信されてきたパケットヘッダを解析し、チャネルＩＤによりＰＵＴ転送なのかＧＥＴ転送なのか、パケットタイプによりリクエストなのかレスポンスなのかを判断して相応の動作を行うことができる。
【００２０】
また、メモリライトリクエストコマンドに対しても、レスポンスタイプのメモリライトリクエストパケットに情報を付加することにより、コマンドが正常に実行されたか否かの判断が可能となる。
【発明を実施するための最良の形態】
【００２１】
以下、図１〜図４を参照して本発明の原理を説明する。
図１に記載された本発明のPCI-Express通信システム(100)における例示は、図２１に記載された従来のPCI-Express通信システムにおける例示と同様な状況におけるものである。すなわち、図２１に記載された場合と同様に、モジュールＤ(13)からモジュールＣ(12)に対して意味的にはメモリリード要求を発行し、それに対してモジュールＣ(12)からモジュールＤ(13)にリードデータを返そうとしているタイミングでモジュールＡ(10)の異常によりＩＤの付替えが発生し、図２１に例示する場合と同様にモジュールＤ(13)のバス番号とデバイス番号が１、４から１、３に変化した場合である。
【００２２】
本発明においては、データ転送には、アドレスルーティングでルーティングされるメモリライトリクエストパケットのみを使用する。したがって、意味的にはメモリリード要求であっても、メモリライトリクエストパケットを用いる。
【００２３】
また、本発明においては、PCI-Expressによって接続される各モジュールに固有のノードＩＤを設定する。図1に例示されたものでは、モジュールＡ(10)にはノードＩＤ＝０が、モジュールＢ(11)、モジュールＣ(12)、モジュールＤ(13)にはそれぞれ１，２，３のノードＩＤが固定的に割り当てられている。
【００２４】
さらに、相手モジュールにデータを書き込むＰＵＴ転送、相手モジュールからデータを読み出すＧＥＴ転送のそれぞれに専用のチャネルを設け、各チャネルにチャネルＩＤを設定する。
【００２５】
図２に、本発明で使用するトランザクションレイヤパケットのヘッダ部の構成を示す。なお、網掛け部は本発明に関係しない部分なので、説明を省略する。
アドレス（Address）部(bit[63:2])には、図示するように、前記ノードＩＤ(bit[62:58])とチャネルＩＤ(bit[57:51])とさらにパケットタイプＰＴ(bit[45])等を設定する。ノードＩＤはパケットの転送先のものである。チャネルＩＤで指定されるチャネルは、後に詳細に説明するように、ＰＵＴ転送、ＧＥＴ転送及びノード間のメッセージ通信のためのメッセージ（ＭＳＧ）転送毎に送信用チャネル、受信用チャネルが割り当てられている。したがって、メモリリード要求であればＧＥＴ転送の受信用チャネルのチャネルＩＤが設定され、メモリライト要求であればＰＵＴ転送の受信用チャネルのチャネルＩＤが設定される。また、ＭＳＧ転送のパケットにはＭＳＧ転送用の送信用あるいは受信用のチャネルＩＤが設定される。受信側モジュールは、このチャネルＩＤにより、ＭＳＧ／ＰＵＴ／ＧＥＴ転送を判別する。なお、ＭＳＧ転送においても、ＰＵＴ／ＧＥＴ転送と同様に、アドレスルーティングでルーティングされるメモリライトリクエストパケットを使用する。そして、レスポンスを要求することもできる。
パケットタイプＰＴはパケットがリクエストパケットであるかレスポンスパケットであるかの種別(0,1)を指定する。  タグ（Tag）部にはパケット転送元のチャネルＩＤがセットされ、転送先がレスポンスパケットを応答する際、応答先のチャネルＩＤとしてレスポンスパケットのアドレス部に使用される。
【００２６】
上述のアドレス部についてさらに本発明による設定を説明すると、そのbit[50:46]には一連のパケットのシーケンス番号を示すシーケンスコード(SeqCode)が設定される。
リクエストパケットの場合、送信側モジュールはリクエストパケット送信時に一連の各パケットに昇順の番号を設定する。受信側のモジュールでは、リクエストパケットの受信時に上記各パケットが順番どおりに受信されたかを確認する。確認の結果順番どおりでなければ、後述のステータスコードに値を設定してレスポンスパケットを送信する。
【００２７】
受信側モジュールがレスポンスパケットを送出する場合は、受信したリクエストパケット内のシーケンスコードと同じ番号を使用する。リクエストパケットの送信側モジュールは、上述のレスポンスパケット受信時に、各レスポンスパケットがリクエストパケットを送出した順番どおりに受信されたかを確認する。確認の結果順番どおりでなければ、エラー処理を行う。
【００２８】
上記以外のアドレス部は、モード(mode)部(bit[44:40])とデテール(detail)部(bit[39:02])に割り当てられる。
モード部は、そのパケットのモードを示すものである。モード部の第１ビット(bit[44])は、一連のパケットの始めのパケットであること(First Transfer)を示し、第２ビット(bit[43])は、一連のパケットの最後のパケットであること(Last Transfer)を示す。
【００２９】
第３ビット(bit[42])は、一連のパケット一つ一つにレスポンスパケットが必要であること(Request Response)を示す。送信側モジュールは、一連のパケット一つ一つにレスポンスパケットが必要である場合にこのビットをセットする。受信側モジュールは、このビットがセットされていた場合には、レスポンスパケットを送信する。
【００３０】
第４ビット(bit[41])は、内部情報をクリアしなければならないこと(Clean)を示す。ここで内部情報とは、各モジュールにおいて一連のパケットを転送（受信）するために必要な情報群であり、一例を挙げれば、「一連のパケットを転送中」を意味するフラグ情報などである。また、一連のパケットのうち、以前受信したパケットが処理中になっている場合には、その処理中のパケットもクリアする内部情報に該当する。
【００３１】
送信側モジュールは、エラーが発生した場合もしくはパワーオン後の初めての転送の場合、受信側モジュールに対して内部情報の初期化を指示するためこのビットを設定する。受信側モジュールは、このビットが設定されていた場合には、内部情報をクリアする。
【００３２】
次に、デテール(detail)部(bit[39:02])について説明する。
パケットタイプＰＴ＝０かつチャネルＩＤがＭＳＧの場合、bit[39:32]はシーケンスコードbit[50:46]の拡張シーケンスコードが割り当てられ、一連のパケットの数が多くてシーケンスコードのビット数で足りないときに使用される。bit[31:02]はゼロである。
【００３３】
パケットタイプＰＴ＝０かつチャネルＩＤがＧＥＴ／ＰＵＴの場合、bit[39:02]は従来のPCI-Expressの定義と同様である。
パケットタイプＰＴ＝１（レスポンスパケット）の場合、レスポンスタイプbit[39:32],ステイタスコードbit[31:16]及び拡張シーケンスコード bit[11:03]などが割り付けられる。レスポンスタイプは、そのビット値により、ＰＵＴ／ＭＳＧのレスポンスであるかＧＥＴのレスポンスであるかを示す。
【００３４】
ステイタスコードは受信側モジュールが受信したパケットに対する処理においてエラーが発生した場合のエラー内容を示す。オールゼロであれば正常終了を示し、ゼロ以外であれば詳細なエラー番号を示している。
【００３５】
拡張シーケンスコードは、ＧＥＴ転送におけるレスポンスパケットのシーケンスコードに対するものである。
以下、図３を参照して、メモリリード要求を実行する本発明のＧＥＴ転送のシーケンスを説明する。
【００３６】
送信側がディスクリプタを解析してＧＥＴ転送要求を行うところまでは図１８に記載された従来例と同様であるが、送信されるパケットがメモリライトリクエストパケットであって、メモリリードリクエストパケットではない点、パケットのアドレス部には先に説明したように、ノードＩＤとチャネルＩＤとパケットタイプＰＴが設定されている点、またタグ部にはパケット転送元のチャネルＩＤがセットされている点が異なる。PCI-Expressスイッチは従来例と同様にアドレスルーティングによりパケットのルーティングを行い受信側に送信する。
【００３７】
受信側では、パケットタイプによりリクエストパケットであることを識別し、さらにチャネルＩＤによりＧＥＴ転送の受信用チャネルが用いられていることを判定し、ＧＥＴ要求であることを識別する。その後、メモリ上からデータをリードし、リードデータを送信するところまでは図１５に記載された従来例と同様であるが、送信されるパケットが、メモリライトリクエストパケットであって、レスポンスパケットではない点が異なる。ただし、この場合のメモリライトリクエストパケットのヘッダには、パケットタイプがレスポンスと設定される。また、先に受信したメモリライトリクエストパケットのリクエスタＩＤからリクエスト送信側のモジュールを識別し、それに対応したノードＩＤを宛先として設定する。またチャネルＩＤはタグ部に設定されたチャネルＩＤを用いる。意味的にはレスポンスではあるが、PCI-Expressスイッチは、リクエストパケットとして認識することから、アドレスルーティングによりパケットのルーティングを行って送信側に送信する。
【００３８】
送信側では、パケットタイプがレスポンスであること、アドレス部にＧＥＴ転送用の送信チャネルＩＤがふくまれていることによりＧＥＴ要求のレスポンスであることを識別し、リードデータをメモリに書き込んで処理を終了する。
【００３９】
次に、図４を参照して、メモリライト要求を実行する本発明のＰＵＴ転送のシーケンスを説明する。
送信側がディスクリプタを解析してＰＵＴ転送要求を行い、メモリライトリクエストパケットを送信するところまでは、アドレス部とタグ部の設定を除いて、図１９に記載された従来例と同様である。PCI-Expressスイッチは従来例と同様にアドレスルーティングによりパケットのルーティングを行い受信側に送信する。
【００４０】
受信側では、パケットタイプによりリクエストパケットであることを識別し、さらにチャネルＩＤによりＰＵＴ転送の受信用チャネルが用いられていることを判定し、ＰＵＴ要求であることを識別する。そして送られてきたデータをメモリに書き込む。
【００４１】
ここまでは、従来のＰＵＴ転送と同様であるが、本発明においては、例えばハードウェアに、メモリライトリクエストパケットを用いてレスポンスを応答する機能を組み込む。パケットタイプにレスポンスを設定したメモリライトリクエストパケットを送信側に返信するので、PCI-Expressスイッチは、リクエストパケットとして認識して、アドレスルーティングによりルーティングを行って送信側に転送するが、送信側は、受信したパケットのアドレス部にＰＵＴ転送の送信用チャネルＩＤが含まれているので、自ノードのメモリライト要求に対するレスポンスであることを認識することができる。
【００４２】
次に、本発明の実施例を図５〜図１３を参照して説明する。
本実施例は、それぞれのサブシステム内のすべての動作を管理する最大８個の集中管理モジュールＣＭがPCI-Expressスイッチを介して相互通信を行うPCI-Express通信システム(200)において、集中管理モジュールＣＭ内のＤＭＡチップが本発明の通信手法を実現するものである。
【００４３】
図５に示された本実施例のシステム構成は、それぞれのサブシステム内のすべての動作を管理する８個の集中管理モジュールＣＭ#0(20)〜ＣＭ#7(27)と２個のフロントエンドルータＦＲＴ#0(71)、ＦＲＴ#1(72)からなる通信システムのものであり、集中管理モジュールノード間をフロントエンドルータ内のPCI-Expressスイッチ(61,62)を介して接続している。
【００４４】
集中管理モジュールノードには、ＣＭ#0から順にノードＩＤ＝０から７が割り振られている。集中管理モジュールは、図示のとおり、２重化されたＣＰＵ#0(51)、ＣＰＵ#1(52)と集中管理モジュールノード間の通信手段を提供するＤＭＡチップ(30)、さらにそれらＣＰＵ#0(51)、ＣＰＵ#1(52)及び図示されていないメモリとＤＭＡチップ(30)とのデータ転送を切り分けるメモリコントロールハブＭＣＨ(40)を含んでいる。
【００４５】
また、フロントエンドルータＦＲＴ#0(71)、ＦＲＴ#1(72)も２重化されたフロントエンドルータを構成している。各フロントエンドルータＦＲＴ#0(71)、ＦＲＴ#1(72)と各集中管理モジュールＣＭ#0〜ＣＭ#7の間は、図示のとおりPCI-Express2.5GHzのライン４本で接続されている。
【００４６】
図６に示すのは、ＤＭＡチップ(30)の内部構成である。
図６に示すように、ＤＭＡチップ(30)は、PCI-Expressスイッチ側のサウスポートにPCI-Expressインタフェース制御部(311)を、ＣＰＵ側のノースポートにはPCI-Expressインタフェース制御部(312)備える。また各PCI-Expressインタフェース制御部(311)と PCI-Expressインタフェース制御部(312)にそれぞれ対応してパケット制御部(321)とパケット制御部(322)を備える。さらに、メッセージ受信用チャネル(331)、ＰＵＴ受信用チャネル(341)、ＧＥＴ受信用チャネル(351)、転送バッファ(361,370,362)、メッセージ送信用チャネル(332)、ＰＵＴ送信用チャネル(342)、ＧＥＴ送信用チャネル(352)を備える。
【００４７】
メッセージ受信用チャネル(331)は２チャネル、メッセージ送信用チャネル(332)は８チャネル、ＰＵＴ送信用チャネル(342)は５チャネル、ＧＥＴ送信用チャネル(352)は４チャネル備えられ、ＰＵＴ受信用チャネル(341)とＧＥＴ受信用チャネル(351)はそれぞれ１チャネル備えられている。
【００４８】
転送バッファ(361)はサウスポート側からノースポート側へのデータ転送に用いられ、転送バッファ(362)はノースポート側からサウスポート側へのデータ転送に用いられる。転送バッファ(370)はノースポート側からのループバック用として用いられる。
【００４９】
実線はリクエストを通知する制御線(REQ)を、点線はリクエスト完了を通知する制御線(CMP)を表し、太線はデータ線を表す。白抜きの線はＰＣＩヘッダ線を表し、PCI-Expressインタフェース制御部(311,312)に接続されたラインＴＸとＲＸはそれぞれPCI-Expressの送信ラインと受信ラインを表している。
【００５０】
なお、図６に示した例では、ノースポート側もPCI-Expressを用いているが、本発明が適用されるのはサウスポート側であり、ノースポート側がPCI-Expressを用いることは必須ではない。
【００５１】
図７に示すのは、図６に示すチャネルのチャネルＩＤの例である。
以下、本実施例におけるデータ転送例を説明する。なお、図３および図４で説明したものと同様な部分は、繰り返しとなることから、省略しているところもある。
【００５２】
図８は、ノードＩＤが０の集中管理モジュールＣＭ#0からノードＩＤが７の集中管理モジュールＣＭ#7へのＰＵＴ転送例を説明する図である。ただし、レスポンス側は、図４で説明した動作と同様であるので、省略されている。
【００５３】
（１）集中管理モジュールＣＭ#0のＣＰＵはＤＭＡチップ内のＰＵＴ送信用チャネルに対してＰＵＴ転送開始を指示する。（２）集中管理モジュールＣＭ#0のＤＭＡチップは、送信パケットヘッダのアドレス部のbit[62:58]（ノードＩＤ部）を集中管理モジュールＣＭ#7のノードＩＤである７に変換してサウスポート側にデータを転送し、メモリライトリクエストパケットとして送出する。（３）PCI-Expressスイッチは送信先アドレスを解析し、対応するアドレスにパケットを転送する。（４）集中管理モジュールＣＭ#7のＤＭＡチップは、サウスポート側からパケットを受信しそのパケット内のノードＩＤと自ノードＩＤが一致していることを確認してＰＵＴ受信用チャネルに通知する。
【００５４】
次に図９により、上記ＰＵＴ転送例における送信側チャネルの動作を説明する。図上の太線の矢印はＤＭＡチップがマスタとなる動作を、実線の矢印はＣＰＵがマスタとなる動作を示す。点線の矢印は、割り込みを示すものである。
【００５５】
（１）ＣＰＵはＰＵＴ転送用のディスクリプタを作成し、メモリ内のディスクリプタ領域に書き込む。図示の例では、３２バイトの領域が１５個設けられている。（２）ＣＰＵはＤＭＡチップに対してＰＵＴ転送開始を指示する。（３）ＤＭＡチップはメモリ上のディスクリプタ領域から、ディスクリプタデータを読み出す。（４）ＤＭＡチップはディスクリプタを解析して、メモリ上の送信元としてアドレス指定されたデータ領域からデータを読み取る。（５）ＤＭＡチップは読み取ったデータをサウスポート側に転送し、転送相手のＤＭＡチップからの完了通知を待ち、相手側からのレスポンスを受信する。（６）ＤＭＡチップはディスクリプタの完了ポインタを更新し、ポインタ値（ディスクリプタ終了ポインタ）をメモリ上のディスクリプタ終了ポインタ領域に書き込む。（７）ＤＭＡチップは転送終了を通知するため、ＣＰＵに割り込みを上げる。（８）ＣＰＵは終了ポインタの確定動作として、割り込みの解除と終了コードのクリアを行う。
【００５６】
次に、上記ＰＵＴ転送例における受信側チャネルの動作について、図１０により説明する。
（１）ＣＰＵからＰＵＴ受信用チャネルの起動をかけ、ＤＭＡチップに転送開始の指示を行う。（最初の一回のみ実施。）（２）ＤＭＡチップはサウスポート側からデータを受信する。（３）ＤＭＡチップは受信したデータをノースポート側に転送してメモリ内に書き込む。（４）ＤＭＡチップはサウスポート側にレスポンスを応答する。
【００５７】
図１１は、ノードＩＤが０の集中管理モジュールＣＭ#0からノードＩＤが７の集中管理モジュールＣＭ#7へのＧＥＴ転送例を説明する図である。
【００５８】
（１）集中管理モジュールＣＭ#0のＣＰＵはＤＭＡチップ内のＧＥＴ送信用チャネルに対してＧＥＴ転送開始を指示する。（２）集中管理モジュールＣＭ#0のＤＭＡチップは、送信パケットヘッダのアドレス部のbit[62:58]（ノードＩＤ部）を集中管理モジュールＣＭ#7のノードＩＤである７に変換してサウスポート側にデータを転送し、メモリライトリクエストパケットとして送出する。（３）PCI-Expressスイッチは送信先アドレスを解析し、対応するアドレスにパケットを転送する。（４）集中管理モジュールＣＭ#7のＤＭＡチップは、サウスポート側からパケットを受信しそのパケット内のノードＩＤと自ノードＩＤが一致していることを確認してＧＥＴ受信用チャネルに通知する。（５）集中管理モジュールＣＭ#7のＤＭＡチップは自集中管理モジュール内のメモリからデータを読み出し、そのデータをサウスポート側に転送し、メモリライトリクエストパケットとして送出する。（６）PCI-Expressスイッチは送信先アドレスを解析し、対応するアドレスにパケットを転送する。（７）集中管理モジュールＣＭ#0のＤＭＡチップ内ＧＥＴ送信用チャネルは、サウスポート側からＧＥＴデータを受け取りノースポート側に転送する。
【００５９】
次に図１２により、上記ＧＥＴ転送例における送信側チャネルの動作を説明する。
（１）ＣＰＵはＧＥＴ転送用のディスクリプタを作成し、メモリ内のディスクリプタ領域に書き込む。（２）ＣＰＵはＤＭＡチップに対してＧＥＴ転送開始を指示する。（３）ＤＭＡチップはメモリ上のディスクリプタ領域から、ディスクリプタデータを読み出す。（４）ＤＭＡチップはディスクリプタを解析して、相手側ＤＭＡチップにＧＥＴデータ要求を出す。（５）ＤＭＡチップはサウスポートよりＧＥＴデータを受け取り、ノースポートに転送する。（６）ＤＭＡチップはディスクリプタの完了ポインタを更新し、ポインタ値（ディスクリプタ終了ポインタ）をメモリ上のディスクリプタ終了ポインタ領域に書き込む。（７）ＤＭＡチップは転送終了を通知するため、ＣＰＵに割り込みを上げる。（８）ＣＰＵは終了ポインタの確定動作として、割り込みの解除と終了コードのクリアを行う。
【００６０】
次に、上記ＰＵＴ転送例における受信側チャネルの動作について、図１３により説明する。
（１）ＣＰＵからＧＥＴ受信用チャネルの起動をかけ、ＤＭＡチップに転送開始の指示を行う。（最初の一回のみ実施。）（２）ＤＭＡチップはサウスポート側からＧＥＴ要求を受信する。（３）ＤＭＡチップはノースポート側より、自集中管理モジュールＣＭ上のメモリからデータを読み込む。（４）ＤＭＡチップはサウスポート側にＧＥＴデータを転送する。
【００６１】
以上説明したように、本発明のPCI-Express通信システムにおいては、データ転送にアドレスルーティングによりルーティングされるメモリライトリクエストパケットしか用いないので、ルートコンプレックス障害によりＩＤの付け替えが発生したとしても、レスポンスを正常に返すことができる。
【００６２】
また、PCI-Expressスイッチの挙動やコマンドの種別を問わずレスポンスのパケットを応答することができるので、データ転送が正常に終了したかどうかをコマンド発行元のモジュールが確実に把握することができる。
【００６３】
次に、図１４を参照して、送信側ＤＭＡチップの各送信チャネルが送信するパケットのモード遷移を説明する。
図１４の状態Ｓ１０に示す装置のパワーオンもしくはリセット状態においてＣＰＵによりチャネルが起動され、状態Ｓ１１に遷移して図２において示したモード部のbit[41]（Clean）に１を設定したパケット（クリーンパケット）を送信し受信側ＤＭＡチップに内部情報の初期化を指示する。
【００６４】
クリーンパケットに対するレスポンスパケットを受信するとデータ転送開始状態（Ｓ１１）に遷移してbit[44]に１を設定し、First Transferのパケットとして送信する。１パケットのみの送信であれば同時に最後のデータ転送でもあるから、上記First Transferのパケットは状態Ｓ１４の最後のデータ転送によるbit[43]への１の設定も行われ、Last Transferのパケットとしても送信される。
【００６５】
複数のパケットを送信する場合は状態Ｓ１３に遷移してデータ転送中となり、例えばbit[42]に１を設定してRequest Responseのパケットを送信する。最後のパケットを送信するときには、状態Ｓ１４の最後のデータ転送においてbit[43]に１が設定され、Last Transferのパケットとして送信される。
【００６６】
最後のデータ転送（Ｓ１４）の後、レスポンスパケットを受信すると、状態Ｓ１５の転送終了状態に遷移し、ＣＰＵからの起動を待ち合わせる。再度ＣＰＵからの起動があると、状態Ｓ１２に遷移して上述の処理による状態遷移を繰り返す。
【００６７】
状態Ｓ１２、状態Ｓ１３及び状態Ｓ１４においてエラーが発生すると、状態Ｓ１６「エラー発生」に遷移し、bit[41]（Clean）に１を設定したパケット（クリーンパケット）を送信する。上記クリーンパケットに対するレスポンスパケットを受信すると状態Ｓ１７の転送終了状態に遷移し、ＣＰＵからの起動を待ち合わせる。
【００６８】
状態Ｓ１７でのＣＰＵからの起動に対しては、状態Ｓ１１に遷移して再度クリーンパケットを送信してからデータ転送を開始する。
図１５に示すのは、受信側ＤＭＡチップの各受信チャネルにおけるリクエストパケット受信処理フローである。
【００６９】
受信側ＤＭＡチップの各受信チャネルは、リクエストパケットを受信すると、まずステップＳ３０においてモード部のbit[41]（Clean）が１か確認し、１であればステップＳ３１に進んで内部情報をクリアし、レスポンスパケットの送信処理に移行する
ステップＳ３０での判定がクリーンパケットでなかった場合は、ステップＳ３２でモード部のbit[44]をチェックしてFirst Transferか確認する。First TransferであればステップＳ３３に進み、現在の状態が一連のパケットを転送中であるか判定する。転送中でなければステップＳ３６に移行し、転送中であればFirst Transferと整合がとれないことからステップＳ４０に移行してレスポンスパケットのアドレス部bit[31:16]にステイタスコードを設定し、エラーレスポンスパケットの送信処理に移行する。
【００７０】
ステップＳ３２での判定がFirst Transferでなければ、ステップＳ３４に進み、現在の状態が一連のパケットを転送中であるか判定する。転送中でなければ、ステップＳ３２のFirst Transferでないという判定と整合しないので、ステップＳ４０に移行してレスポンスパケットのアドレス部bit[31:16]にステイタスコードを設定し、エラーレスポンスパケットの送信処理に移行する。
【００７１】
一連のパケットを転送中であればステップＳ３５に進み、アドレス部bit[50:46]のシーケンスコードを確認して順番どおりにパケットが受信されているかチェックし、異常があればステップＳ４０に移行してレスポンスパケットのアドレス部bit[31:16]にステイタスコードを設定し、エラーレスポンスパケットの送信処理に移行する。正常であればステップＳ３６に進むが、ＭＳＧ転送の場合にはステップＳ３５Ｍを経由し、アドレス部bit[39:32]の拡張シーケンスコードを調べて順番どおりにパケットが受信されているか確認する。確認の結果、異常があればステップＳ４０に移行してレスポンスパケットのアドレス部bit[31:16]にステイタスコードを設定し、エラーレスポンスパケットの送信処理に移行する。正常であればステップＳ３６に進む。
【００７２】
ステップＳ３６では、モード部のbit[43]をチェックしてLast Transferか確認する。Last TransferであればステップＳ３７で一連のパケットの最後と確認し、そうでなければそのままステップＳ３８に進む。
【００７３】
ステップＳ３８では受信したリクエストパケットを正しいパケットであると認識してその処理を行う。
次にステップＳ３９に進み、モード部のbit[42]をチェックして一連のパケット一つ一つにレスポンスパケットが必要であるRequest Responseであるか確認をする。Request Responseであればレスポンスパケットの送信処理に移行し、そうでなければ処理を終了する。
【００７４】
次に、図１６を参照して送信側ＤＭＡチップの各送信チャネルにおけるレスポンスパケット受信処理フローを説明する。
送信側ＤＭＡチップの各送信チャネルは、レスポンスパケットを受信すると、まずステップＳ２０においてモード部のbit[41]（Clean）が１か確認し、１であればステップＳ２１に進んで現在の状態がクリーンパケット送信状態であるか確認を行う。クリーンパケット送信状態でなければエラー処理に移行し、クリーンパケット送信状態であればステップＳ２２に進んでアドレス部bit[50:46]のシーケンスコードを確認し、異常があればエラー処理に移行し、正常であれば正常終了する。
【００７５】
ステップＳ２０の判定がクリーンパケットでなかった場合は、ステップＳ２３でモード部のbit[44]をチェックしてFirst Transferか確認する。First TransferであればステップＳ２４に進み、現在の状態が一連のパケットを転送中であるか判定する。転送中でなければステップＳ２６に移行し、転送中であればFirst Transferと整合がとれないことから、エラー処理に移行する。
【００７６】
ステップＳ２３での判定がFirst Transferでなければ、ステップＳ２５に進み、現在の状態が一連のパケットを転送中であるか判定する。転送中でなければ、ステップＳ２３のFirst Transferでないという判定と整合しないので、エラー処理に移行する。
【００７７】
一連のパケットを転送中であればステップＳ２６に進み、アドレス部bit[50:46]のシーケンスコードを確認し、異常があればエラー処理に移行する。正常であればステップＳ２７に進むが、ＧＥＴ転送の場合にはステップＳ２６Ｇを経由し、アドレス部bit[11:03]の拡張シーケンスコードを確認する。確認の結果、異常があればエラー処理に移行する。正常であればステップＳ２７に進む。
【００７８】
ステップＳ２７では、モード部のbit[43]をチェックしてLast Transferか確認する。Last TransferであればステップＳ２８に進み、現在の状態がLast Transferパケット送信状態であるか確認をし、Last Transferパケット送信状態でなければエラー処理に移行する。
【００７９】
ステップＳ２７での判定がLast Transferでないか、あるいはステップＳ２８での判定がLast Transferパケット送信状態であればステップＳ２９に進みアドレス部bit[31:16]のステイタスコードを確認する。ステイタスコードがオールゼロであれば正常終了し、ゼロ以外のビットがあればエラー処理に移行する。
上記エラー処理では、図１４に示したようにクリーンパケットが送信されて内部情報がクリアされ、転送処理を終了する。
【００８０】
（付記１）
複数のモジュール間を接続してパケット転送を行うPCI-Expressスイッチを用いたPCI-Express通信システムにおいて、
前記複数のモジュールの各々にそれらを識別する固有のノードＩＤを設定するとともに、データ転送に使用する各チャネルにチャネルＩＤを設定し、
データ転送についてのパケットのアドレス部内に、転送先モジュールの前記ノードＩＤと該データ転送に使用するチャネルの前記チャネルＩＤ、及び前記パケットがリクエストであるかレスポンスであるのかを識別するパケットタイプを設定し、
データ転送には、アドレスルーティングでルーティングされるメモリライトリクエストパケットを使用することを特徴とするPCI-Express通信システム。
（付記２）
前記データ転送に使用するチャネルとして、相手モジュールにデータを書き込むＰＵＴ転送専用のチャネルと相手モジュールからデータを読み出すＧＥＴ転送専用のチャネルを設けることを特徴とする付記１に記載のPCI-Express通信システム。
（付記３)
一方のモジュールから他方のモジュールにメモリリードリクエストを発行する場合は、前記一方のモジュールは、前記メモリライトリクエストパケットのアドレス部内に、前記他方のモジュールのノードＩＤと前記他方のモジュールが使用するＧＥＴ転送専用チャネルのチャネルＩＤ、及びリクエストであることを識別する前記パケットタイプを設定することを特徴とする付記２に記載のPCI-Express通信システム。
（付記４）
前記一方のモジュールは、該一方のモジュールが使用するＧＥＴ転送専用チャネルのチャネルＩＤを前記メモリライトリクエストパケットのヘッダ内に設定し、前記他方のモジュールは、該チャネルＩＤと前記一方のモジュールのノードＩＤ、及びレスポンスであることを識別する前記パケットタイプをメモリライトリクエストパケットのヘッダのアドレス部内に設定して該メモリライトリクエストパケットを前記一方のモジュールに返信することを特徴とする付記３に記載のPCI-Express通信システム。
（付記５）
一方のモジュールから他方のモジュールにメモリライトリクエストを発行する場合は、前記一方のモジュールは、前記メモリライトリクエストパケットのアドレス部内に、前記他方のモジュールのノードＩＤと前記他方のモジュールが使用するＰＵＴ転送専用チャネルのチャネルＩＤ、及びリクエストであることを識別する前記パケットタイプを設定することを特徴とする付記２に記載のPCI-Express通信システム。
（付記６）
前記一方のモジュールは、該一方のモジュールが使用するＰＵＴ転送専用チャネルのチャネルＩＤを前記メモリライトリクエストパケットのヘッダ内に設定し、前記他方のモジュールは、該チャネルＩＤと前記一方のモジュールのノードＩＤ、及びレスポンスであることを識別する前記パケットタイプをメモリライトリクエストパケットのヘッダのアドレス部内に設定して該メモリライトリクエストパケットを前記一方のモジュールに返信することを特徴とする付記５に記載のPCI-Express通信システム。
(付記７)
前記ＰＵＴ専用のチャネルと前記ＧＥＴ専用のチャネルのそれぞれを受信用チャネルと送信用チャネルから構成することを特徴とする付記２に記載のPCI-Express通信システム。
(付記８)
一方のモジュールから他方のモジュールにメモリリードリクエストを発行する場合は、前記一方のモジュールは、前記メモリライトリクエストパケットのアドレス部内に、前記他方のモジュールのノードＩＤと前記他方のモジュールのＧＥＴ転送専用の受信用チャネルのチャネルＩＤ、及びリクエストであることを識別する前記パケットタイプを設定し、かつ該一方のモジュールが使用するＧＥＴ転送専用の送信用チャネルのチャネルＩＤを前記メモリライトリクエストパケットのヘッダ内に設定し、前記他方のモジュールは、該送信用チャネルのチャネルＩＤと前記一方のモジュールのノードＩＤ、及びレスポンスであることを識別する前記パケットタイプをメモリライトリクエストパケットのヘッダのアドレス部内に設定して該メモリライトリクエストパケットを前記一方のモジュールに返信することを特徴とする付記７に記載のPCI-Express通信システム。
(付記９)
一方のモジュールから他方のモジュールにメモリライトリクエストを発行する場合は、前記一方のモジュールは、前記メモリライトリクエストパケットのアドレス部内に、前記他方のモジュールのノードＩＤと前記他方のモジュールのＰＵＴ転送専用の受信用チャネルのチャネルＩＤ、及びリクエストであることを識別する前記パケットタイプを設定し、かつ該一方のモジュールが使用するＰＵＴ転送専用の送信用チャネルのチャネルＩＤを前記メモリライトリクエストパケットのヘッダ内に設定し、前記他方のモジュールは、該送信用チャネルのチャネルＩＤと前記一方のモジュールのノードＩＤ、及びレスポンスであることを識別する前記パケットタイプをメモリライトリクエストパケットのヘッダのアドレス部内に設定して該メモリライトリクエストパケットを前記一方のモジュールに返信することを特徴とする付記７に記載のPCI-Express通信システム。
（付記１０）
複数のモジュール間を接続してパケット転送を行うPCI-Expressスイッチを用いたPCI-Express通信方法において、
前記複数のモジュールの各々にそれらを識別する固有のノードＩＤを設定するとともに、データ転送に使用する各チャネルにチャネルＩＤを設定し、
データ転送についてのパケットのアドレス部内に、転送先モジュールの前記ノードＩＤと該データ転送に使用するチャネルの前記チャネルＩＤ、及び前記パケットがリクエストであるかレスポンスであるのかを識別するパケットタイプを設定し、
リクエストの場合には必ずレスポンスパケットを応答し、
データ転送には、アドレスルーティングでルーティングされるメモリライトリクエストパケットを常に使用することを特徴とするPCI-Express通信方法。
（付記１１）
前記データ転送に使用するチャネルとして、相手モジュールにデータを書き込むＰＵＴ転送専用のチャネルと相手モジュールからデータを読み出すＧＥＴ転送専用のチャネルを設けることを特徴とする付記１０に記載のPCI-Express通信方法。
（付記１２）
一方のモジュールから他方のモジュールにメモリリードリクエストを発行する場合は、前記一方のモジュールは、前記メモリライトリクエストパケットのアドレス部内に、前記他方のモジュールのノードＩＤと前記他方のモジュールが使用するＧＥＴ転送専用チャネルのチャネルＩＤ、及びリクエストであることを識別する前記パケットタイプを設定することを特徴とする付記１１に記載のPCI-Express通信方法。
(付記１３)
前記一方のモジュールは、該一方のモジュールが使用するＧＥＴ転送専用チャネルのチャネルＩＤを前記メモリライトリクエストパケットのヘッダ内に設定し、前記他方のモジュールは、該チャネルＩＤと前記一方のモジュールのノードＩＤ、及びレスポンスであることを識別する前記パケットタイプをメモリライトリクエストパケットのヘッダのアドレス部内に設定して該メモリライトリクエストパケットを前記一方のモジュールに返信することを特徴とする付記１２に記載のPCI-Express通信方法。
（付記１４）
一方のモジュールから他方のモジュールにメモリライトリクエストを発行する場合は、前記一方のモジュールは、前記メモリライトリクエストパケットのアドレス部内に、前記他方のモジュールのノードＩＤと前記他方のモジュールが使用するＰＵＴ転送専用チャネルのチャネルＩＤ、及びリクエストであることを識別する前記パケットタイプを設定することを特徴とする付記１１に記載のPCI-Express通信方法。  
（付記１５）
前記一方のモジュールは、該一方のモジュールが使用するＰＵＴ転送専用チャネルのチャネルＩＤを前記メモリライトリクエストパケットのヘッダ内に設定し、前記他方のモジュールは、該チャネルＩＤと前記一方のモジュールのノードＩＤ、及びレスポンスであることを識別する前記パケットタイプをメモリライトリクエストパケットのヘッダのアドレス部内に設定して該メモリライトリクエストパケットを前記一方のモジュールに返信することを特徴とする付記１４に記載のPCI-Express通信方法。
（付記１６）
PCI-Expressスイッチを用いてパケット転送を行うPCI-Express通信システムのモジュールにおいて、
該モジュールを識別する固有のノードＩＤを設定するとともに、データ転送に使用する各チャネルにチャネルＩＤを設定し、
データ転送についてのパケットのアドレス部内に、転送先モジュールの前記ノードＩＤと該データ転送に使用するチャネルの前記チャネルＩＤ、及び前記パケットがリクエストであるかレスポンスであるのかを識別するパケットタイプを設定し、
データ転送には、アドレスルーティングでルーティングされるメモリライトリクエストパケットを使用することを特徴とするPCI-Express通信システムのモジュール。
（付記１７）
前記データ転送に使用するチャネルとして、相手モジュールにデータを書き込むＰＵＴ転送専用のチャネルと相手モジュールからデータを読み出すＧＥＴ転送専用のチャネルを設けることを特徴とする付記１６に記載のPCI-Express通信システムのモジュール。
（付記１８）
相手方のモジュールにメモリリードリクエストを発行する場合は、前記メモリライトリクエストパケットのアドレス部内に、前記相手方のモジュールのノードＩＤと前記相手方のモジュールが使用するＧＥＴ転送専用チャネルのチャネルＩＤ、及びリクエストであることを識別する前記パケットタイプを設定することを特徴とする付記１７に記載のPCI-Express通信システムのモジュール。
(付記１９)
相手方のモジュールにメモリライトリクエストを発行する場合は、前記メモリライトリクエストパケットのアドレス部内に、前記相手方のモジュールのノードＩＤと前記相手方のモジュールが使用するＰＵＴ転送専用チャネルのチャネルＩＤ、及びリクエストであることを識別する前記パケットタイプを設定することを特徴とする付記１７に記載のPCI-Express通信システムのモジュール。
（付記２０）
相手方のモジュールからメモリライトリクエストを受信した場合は、メモリライトリクエストパケットのアドレス部内に、前記相手方のモジュールのノードＩＤとレスポンスであることを識別する前記パケットタイプを設定し、該メモリライトリクエストパケットを相手方のモジュールに返信することを特徴とする付記１６に記載のPCI-Express通信システムのモジュール。
【図面の簡単な説明】
【００８１】
【図１】本発明のPCI-Express通信システムにおいてＧＥＴ転送中に障害が発生した場合を説明する図である。
【図２】本発明のPCI-Express通信システムにおけるトランザクションパケットのヘッダの一部を説明するものである。
【図３】本発明のPCI-Express通信システムにおけるＧＥＴ転送のシーケンスを説明する図である。
【図４】本発明のPCI-Express通信システムにおけるＰＵＴ転送のシーケンスを説明する図である。
【図５】本発明の実施例のシステム構成図である。
【図６】本発明の実施例におけるＤＭＡチップの内部構成図である。
【図７】本発明の実施例におけるチャネルＩＤの一例を示す図である。
【図８】本発明の実施例におけるＰＵＴ転送例を説明する図である。
【図９】本発明の実施例におけるＰＵＴ転送時の送信側チャネルの動作を説明する図である。
【図１０】本発明の実施例におけるＰＵＴ転送時の受信側チャネルの動作を説明する図である。
【図１１】本発明の実施例におけるＧＥＴ転送例を説明する図である。
【図１２】本発明の実施例におけるＧＥＴ転送時の送信側チャネルの動作を説明する図である。
【図１３】本発明の実施例におけるＧＥＴ転送時の受信側チャネルの動作を説明する図である。
【図１４】送信側ＤＭＡチップの各送信チャネルが送信するパケットのモード遷移を説明する図である。
【図１５】受信側ＤＭＡチップの各受信チャネルにおけるリクエストパケット受信処理フローを説明する図である。
【図１６】送信側ＤＭＡチップの各送信チャネルにおけるレスポンスパケット受信処理フローを説明する図である。
【図１７】従来のPCI-Express通信システムを説明する図である。
【図１８】従来のPCI-Express通信システムにおけるＧＥＴ転送のシーケンスを説明する図である。
【図１９】従来のPCI-Express通信システムにおけるＰＵＴ転送のシーケンスを説明する図である。
【図２０】従来のPCI-Express通信システムにおけるトランザクションパケットのヘッダの構成を説明するものである。
【図２１】従来のPCI-Express通信システムにおいてＧＥＴ転送中に障害が発生した場合を説明する図である。
【符号の説明】
【００８２】
１、１０      モジュールＡ
２、１２      モジュールＢ
３、１３      モジュールＣ
４、１４      モジュールＤ
２０〜２７      集中管理モジュール
３０      ＤＭＡチップ
３１１、３１２      PCI-Expressインタフェース制御部
３２１、３２２      パケット制御部
３３１      メッセージ受信用チャネル
３３２      メッセージ送信用チャネル
３４１      ＰＵＴ受信用チャネル
３４２      ＰＵＴ送信用チャネル
３５１      ＧＥＴ受信用チャネル
３５２      ＧＥＴ送信用チャネル
３６１      転送バッファ（ＮＰ→ＳＰ）
３６２      転送バッファ（ＳＰ→ＮＰ）
３７０      転送バッファ（ループバック）
４０      メモリコントロールハブ
５１、５２      ＣＰＵ
６、６０〜６２      PCI-Expressスイッチ
７１、７２      フロントエンドルータ
１００      本発明のPCI-Express通信システム
２００      本発明の実施例におけるPCI-Express通信システム
【図１】
2007316755.tif 000003
【図３】
2007316755.tif 000004
【図４】
2007316755.tif 000005
【図６】
2007316755.tif 000006
【図７】
2007316755.tif 000007
【図８】
2007316755.tif 000008
【図９】
2007316755.tif 000009
【図１０】
2007316755.tif 000010
【図１１】
2007316755.tif 000011
【図１２】
2007316755.tif 000012
【図１３】
2007316755.tif 000013
【図１４】
2007316755.tif 000014
【図１５】
2007316755.tif 000015
【図１６】
2007316755.tif 000016
【図１８】
2007316755.tif 000017
【図１９】
2007316755.tif 000018
【図２０】
2007316755.tif 000019
【図２】
2007316755.tif 000020
【図５】
2007316755.tif 000021
【図１７】
2007316755.tif 000022
【図２１】
2007316755.tif 000023
【手続補正書】
【提出日】平成19年7月3日(2007.7.3)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数のモジュール間を接続してパケット転送を行うPCI-Expressスイッチを用いたPCI-Express通信システムにおいて、
前記複数のモジュールの各々にそれらを識別する固有のノードＩＤを設定するとともに、データ転送に使用する各チャネルにチャネルＩＤを設定し、
データ転送についてのパケットのアドレス部内に、転送先モジュールの前記ノードＩＤと該データ転送に使用するチャネルの前記チャネルＩＤ、前記パケットがリクエストであるかレスポンスであるのかを識別するパケットタイプ及び一連のパケット転送におけるパケットのシーケンス番号を示すシーケンスコードを設定し、
データ転送には、アドレスルーティングでルーティングされるメモリライトリクエストパケットを使用し、
前記転送先モジュールは前記シーケンスコードに基づいて前記パケットが順番どおり受信されたかをチェックする、
ことを特徴とするPCI-Express通信システム。
【請求項２】
前記転送先モジュールが受信したパケットに対してレスポンスパケットを返信する場合、該レスポンスパケットに前記受信したパケットのシーケンスコードと同一のシーケンスコードを設定し、
前記レスポンスパケットの返信先のモジュールは、該シーケンスコードに基づいて前記レスポンスパケットが順番どおり返信されたかをチェックする、
ことを特徴とする請求項１に記載のPCI-Express通信システム。
【請求項３】
前記データ転送についてのパケットのアドレス部内に、該パケットが一連のパケット転送における最初のパケットであるか最後のパケットであるかを示す識別ビットをさらに設定し、前記転送先モジュール及び前記返信先モジュールは、前記識別ビットと前記シーケンスコードの論理の整合性をチェックすることを特徴とする請求項２に記載のPCI-Express通信システム。
【請求項４】
前記データ転送についてのパケットのアドレス部内に、一連のパケット転送を終了し各モジュールにおいて一連のパケットを転送あるいは受信するのに必要な情報群である内部情報をクリアすることを指示するクリーンビットフラグをさらに設定し、
前記論理の整合性のチェックの結果エラーを検出したモジュールは、相手側モジュールに前記クリーンビットフラグにより一連のパケット転送を終了し前記内部情報をクリアすることを指示することを特徴とする請求項３に記載のPCI-Express通信システム。  
【請求項５】
複数のモジュール間を接続してパケット転送を行うPCI-Expressスイッチを用いたPCI-Express通信方法において、
前記複数のモジュールの各々にそれらを識別する固有のノードＩＤを設定するとともに、データ転送に使用する各チャネルにチャネルＩＤを設定し、
データ転送についてのパケットのアドレス部内に、転送先モジュールの前記ノードＩＤと該データ転送に使用するチャネルの前記チャネルＩＤ、前記パケットがリクエストであるかレスポンスであるのかを識別するパケットタイプ及び一連のパケット転送におけるパケットのシーケンス番号を示すシーケンスコードを設定し、
前記転送先モジュールは前記シーケンスコードに基づいて前記パケットが順番どおり受信されたかをチェックし、
リクエストの場合には必ずレスポンスパケットを応答し、
データ転送には、アドレスルーティングでルーティングされるメモリライトリクエストパケットを常に使用することを特徴とするPCI-Express通信方法。
【請求項６】
前記転送先モジュールが受信したパケットに対してレスポンスパケットを返信する場合、該レスポンスパケットに前記受信したパケットのシーケンスコードと同一のシーケンスコードを設定し、
前記レスポンスパケットの返信先のモジュールは、該シーケンスコードに基づいて前記レスポンスパケットが順番どおり返信されたかをチェックする、
ことを特徴とする請求項５に記載のPCI-Express通信方法。
【請求項７】
PCI-Expressスイッチを用いてパケット転送を行うPCI-Express通信システムのモジュールにおいて、
該モジュールを識別する固有のノードＩＤを設定するとともに、データ転送に使用する各チャネルにチャネルＩＤを設定し、
データ転送についてのパケットのアドレス部内に、転送先モジュールの前記ノードＩＤと該データ転送に使用するチャネルの前記チャネルＩＤ、前記パケットがリクエストであるかレスポンスであるのかを識別するパケットタイプ及び一連のパケット転送におけるパケットのシーケンス番号を示すシーケンスコードを設定し、
データ転送には、アドレスルーティングでルーティングされるメモリライトリクエストパケットを使用し、
前記転送先モジュールである場合には、前記シーケンスコードに基づいて前記パケットが順番どおり受信されたかをチェックする、
ことを特徴とするPCI-Express通信システムのモジュール。
【請求項８】
前記転送先モジュールが受信したパケットに対してレスポンスパケットを返信する場合、該レスポンスパケットに前記受信したパケットのシーケンスコードと同一のシーケンスコードを設定し、
前記レスポンスパケットの返信先のモジュールは、該シーケンスコードに基づいて前記レスポンスパケットが順番どおり返信されたかをチェックする、
ことを特徴とする請求項７に記載のPCI-Express通信システムのモジュール。
【請求項９】
前記データ転送についてのパケットのアドレス部内に、該パケットが一連のパケット転送における最初のパケットであるか最後のパケットであるかを示す識別ビットをさらに設定し、
前記転送先モジュール及び前記返信先モジュールは、前記識別ビットと前記シーケンスコードの論理の整合性をチェックする、
ことを特徴とする請求項８に記載のPCI-Express通信システムのモジュール。
【請求項１０】
前記データ転送についてのパケットのアドレス部内に、一連のパケット転送を終了し各モジュールにおいて一連のパケットを転送あるいは受信するのに必要な情報群である内部情報をクリアすることを指示するクリーンビットフラグをさらに設定し、
前記論理の整合性のチェックの結果エラーを検出したモジュールは、相手側モジュールに前記クリーンビットフラグにより一連のパケット転送を終了し前記内部情報をクリアすることを指示する、
ことを特徴とする請求項９に記載のPCI-Express通信システムのモジュール。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００１４
【補正方法】変更
【補正の内容】
【００１４】
図２１において、（１）モジュールＤ(4)からモジュールＣ(3)に対してメモリリードリクエストを発行し、（２）PCI-Expressスイッチ(6)はアドレスルーティングによりモジュールＣ(3)へメモリリードリクエストパケットを転送し、（３）その時ルートコンプレッ
クスであるモジュールＡ(1)が異常により切り離されたとする。（４）すると、PCI-Expressスイッチ(6)では各ポートのコンフィギャ情報が変更され、バス番号、デバイス番号の
付け替え(以下、「ＩＤの付け替え」ともいう。）が発生し、モジュールＢ(2) が新しい
ルートコンプレックスとなる。（５）モジュールＣ(3)はモジュールＤ(4)からのメモリリードリクエストコマンドによりリードデータをレスポンスパケットとして応答するが、その時のリクエスタＩＤは、モジュールＤのバス番号とデバイス番号の付け替え前の番号で構成されている。（６）PCI-Expressスイッチ(6)はモジュールＣ(3)から送られてきたパ
ケットはレスポンスパケットであるため、ＩＤルーティングによりルーティングを行う。（７）しかし、バス番号、デバイス番号は付け替えにより他のモジュールに割り振られているため、前記レスポンスパケットは誤って他のモジュールに送られるか、または紛失してしまう可能性がある。
また、パケットが紛失してもそれを知ることができない。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００１５
【補正方法】変更
【補正の内容】
【００１５】
そこで、本発明の解決しようとする課題は、PCI-Expressスイッチを用いてノード間の
通信を行うPCI-Express通信システムにおいて、あるノードから他のノードにリクエスト
が発行された後、他のノードからリクエスト元のノードにレスポンスが返されるまでにPCI-Expressスイッチ内でバス番号／デバイス番号の付替えが発生しても、レスポンスパケットを当初のリクエスト元のノードであるターゲットに送付できるようにすることである。
また、一連のパケット転送においてパケットが順序正しく転送されたか確認可能とすることである。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００１６
【補正方法】変更
【補正の内容】
【００１６】
PCI-Expressによって接続される各モジュールに固有のノードＩＤを設定する。また、
相手モジュールにデータを書き込む（ＰＵＴ転送）、相手モジュールからデータを読み出す（ＧＥＴ転送）のそれぞれに専用のチャネルを設け、各チャネルにチャネルＩＤを設定する。そして、PCI-Expressに従って転送されるトランザクションレイヤパケットのヘッ
ダのアドレス部内に、前記ノードＩＤとチャネルＩＤを設定するとともに、リクエストであるかレスポンスであるのかを識別するパケットタイプ及び一連のパケット転送におけるパケットのシーケンス番号を示すシーケンスコードを設定する。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】００１８
【補正方法】変更
【補正の内容】
【００１８】
転送手段にＩＤルーティングを使用しないため、PCI-Expressスイッチにてバス番号、
デバイス番号の付替えが発生してもリクエストを発行したモジュールに確実にレスポンスを応答することができる。
また、シーケンスコードをチェックすることにより、パケットを順序正しく受信することができたか、パケットの紛失が発生しなかったかを確認することができる。
【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】００８０
【補正方法】変更
【補正の内容】
【００８０】
（付記１）
複数のモジュール間を接続してパケット転送を行うPCI-Expressスイッチを用いたPCI-Express通信システムにおいて、
前記複数のモジュールの各々にそれらを識別する固有のノードＩＤを設定するとともに、データ転送に使用する各チャネルにチャネルＩＤを設定し、
データ転送についてのパケットのアドレス部内に、転送先モジュールの前記ノードＩＤと該データ転送に使用するチャネルの前記チャネルＩＤ、前記パケットがリクエストであるかレスポンスであるのかを識別するパケットタイプ及び一連のパケット転送におけるパケットのシーケンス番号を示すシーケンスコードを設定し、
データ転送には、アドレスルーティングでルーティングされるメモリライトリクエストパケットを使用し、
前記転送先モジュールは前記シーケンスコードに基づいて前記パケットが順番どおり受信されたかをチェックする、
ことを特徴とするPCI-Express通信システム。
(付記２)  
前記転送先モジュールが受信したパケットに対してレスポンスパケットを返信する場合、該レスポンスパケットに前記受信したパケットのシーケンスコードと同一のシーケンスコードを設定し、
前記レスポンスパケットの返信先のモジュールは、該シーケンスコードに基づいて前記レスポンスパケットが順番どおり返信されたかをチェックする、
ことを特徴とする付記１に記載のPCI-Express通信システム。
(付記３)
前記データ転送についてのパケットのアドレス部内に、該パケットが一連のパケット転送における最初のパケットであるか最後のパケットであるかを示す識別ビットをさらに設定し、前記転送先モジュール及び前記返信先モジュールは、前記識別ビットと前記シーケンスコードの論理の整合性をチェックすることを特徴とする付記２に記載のPCI-Express通信システム。
(付記４)
前記データ転送についてのパケットのアドレス部内に、一連のパケット転送を終了し各モジュールにおいて一連のパケットを転送あるいは受信するのに必要な情報群である内部情報をクリアすることを指示するクリーンビットフラグをさらに設定し、
前記論理の整合性のチェックの結果エラーを検出したモジュールは、相手側モジュールに前記クリーンビットフラグにより一連のパケット転送を終了し前記内部情報をクリアすることを指示することを特徴とする付記３に記載のPCI-Express通信システム。
（付記５）
前記データ転送に使用するチャネルとして、相手モジュールにデータを書き込むＰＵＴ転送専用のチャネルと相手モジュールからデータを読み出すＧＥＴ転送専用のチャネルを設けることを特徴とする付記１に記載のPCI-Express通信システム。
（付記６)
一方のモジュールから他方のモジュールにメモリリードリクエストを発行する場合は、前記一方のモジュールは、前記メモリライトリクエストパケットのアドレス部内に、前記他方のモジュールのノードＩＤと前記他方のモジュールが使用するＧＥＴ転送専用チャネルのチャネルＩＤ、及びリクエストであることを識別する前記パケットタイプを設定することを特徴とする付記５に記載のPCI-Express通信システム。
（付記７）
前記一方のモジュールは、該一方のモジュールが使用するＧＥＴ転送専用チャネルのチャネルＩＤを前記メモリライトリクエストパケットのヘッダ内に設定し、前記他方のモジュールは、該チャネルＩＤと前記一方のモジュールのノードＩＤ、及びレスポンスであることを識別する前記パケットタイプをメモリライトリクエストパケットのヘッダのアドレス部内に設定して該メモリライトリクエストパケットを前記一方のモジュールに返信することを特徴とする付記６に記載のPCI-Express通信システム。
（付記８）
一方のモジュールから他方のモジュールにメモリライトリクエストを発行する場合は、前記一方のモジュールは、前記メモリライトリクエストパケットのアドレス部内に、前記他方のモジュールのノードＩＤと前記他方のモジュールが使用するＰＵＴ転送専用チャネルのチャネルＩＤ、及びリクエストであることを識別する前記パケットタイプを設定することを特徴とする付記５に記載のPCI-Express通信システム。
（付記９）
前記一方のモジュールは、該一方のモジュールが使用するＰＵＴ転送専用チャネルのチャネルＩＤを前記メモリライトリクエストパケットのヘッダ内に設定し、前記他方のモジュールは、該チャネルＩＤと前記一方のモジュールのノードＩＤ、及びレスポンスであることを識別する前記パケットタイプをメモリライトリクエストパケットのヘッダのアドレス部内に設定して該メモリライトリクエストパケットを前記一方のモジュールに返信することを特徴とする付記８に記載のPCI-Express通信システム。
(付記１０)
前記ＰＵＴ専用のチャネルと前記ＧＥＴ専用のチャネルのそれぞれを受信用チャネルと送信用チャネルから構成することを特徴とする付記５に記載のPCI-Express通信システム。
(付記１１)
一方のモジュールから他方のモジュールにメモリリードリクエストを発行する場合は、前記一方のモジュールは、前記メモリライトリクエストパケットのアドレス部内に、前記他方のモジュールのノードＩＤと前記他方のモジュールのＧＥＴ転送専用の受信用チャネルのチャネルＩＤ、及びリクエストであることを識別する前記パケットタイプを設定し、かつ該一方のモジュールが使用するＧＥＴ転送専用の送信用チャネルのチャネルＩＤを前記メモリライトリクエストパケットのヘッダ内に設定し、前記他方のモジュールは、該送信用チャネルのチャネルＩＤと前記一方のモジュールのノードＩＤ、及びレスポンスであることを識別する前記パケットタイプをメモリライトリクエストパケットのヘッダのアドレス部内に設定して該メモリライトリクエストパケットを前記一方のモジュールに返信することを特徴とする付記１０に記載のPCI-Express通信システム。
(付記１２)
一方のモジュールから他方のモジュールにメモリライトリクエストを発行する場合は、前記一方のモジュールは、前記メモリライトリクエストパケットのアドレス部内に、前記他方のモジュールのノードＩＤと前記他方のモジュールのＰＵＴ転送専用の受信用チャネルのチャネルＩＤ、及びリクエストであることを識別する前記パケットタイプを設定し、かつ該一方のモジュールが使用するＰＵＴ転送専用の送信用チャネルのチャネルＩＤを前記メモリライトリクエストパケットのヘッダ内に設定し、前記他方のモジュールは、該送信用チャネルのチャネルＩＤと前記一方のモジュールのノードＩＤ、及びレスポンスであることを識別する前記パケットタイプをメモリライトリクエストパケットのヘッダのアドレス部内に設定して該メモリライトリクエストパケットを前記一方のモジュールに返信することを特徴とする付記１０に記載のPCI-Express通信システム。
（付記１３）
複数のモジュール間を接続してパケット転送を行うPCI-Expressスイッチを用いたPCI-Express通信方法において、
前記複数のモジュールの各々にそれらを識別する固有のノードＩＤを設定するとともに、データ転送に使用する各チャネルにチャネルＩＤを設定し、
データ転送についてのパケットのアドレス部内に、転送先モジュールの前記ノードＩＤと該データ転送に使用するチャネルの前記チャネルＩＤ、前記パケットがリクエストであるかレスポンスであるのかを識別するパケットタイプ及び一連のパケット転送におけるパケットのシーケンス番号を示すシーケンスコードを設定し、
前記転送先モジュールは前記シーケンスコードに基づいて前記パケットが順番どおり受信されたかをチェックし、
リクエストの場合には必ずレスポンスパケットを応答し、
データ転送には、アドレスルーティングでルーティングされるメモリライトリクエストパケットを常に使用することを特徴とするPCI-Express通信方法。
(付記１４)
前記転送先モジュールが受信したパケットに対してレスポンスパケットを返信する場合、該レスポンスパケットに前記受信したパケットのシーケンスコードと同一のシーケンスコードを設定し、
前記レスポンスパケットの返信先のモジュールは、該シーケンスコードに基づいて前記レスポンスパケットが順番どおり返信されたかをチェックする、
ことを特徴とする付記１３に記載のPCI-Express通信方法。
(付記１５)
前記データ転送についてのパケットのアドレス部内に、該パケットが一連のパケット転送における最初のパケットであるか最後のパケットであるかを示す識別ビットをさらに設定し、
前記転送先モジュール及び前記返信先モジュールは、前記識別ビットと前記シーケンスコードの論理の整合性をチェックする、
ことを特徴とする付記１４に記載のPCI-Express通信方法。
(付記１６)
前記データ転送についてのパケットのアドレス部内に、一連のパケット転送を終了し各モジュールにおいて一連のパケットを転送あるいは受信するのに必要な情報群である内部情報をクリアすることを指示するクリーンビットフラグをさらに設定し、
前記論理の整合性のチェックの結果エラーを検出したモジュールは、相手側モジュールに前記クリーンビットフラグにより一連のパケット転送を終了し前記内部情報をクリアすることを指示する、
ことを特徴とする付記１５に記載のPCI-Express通信方法。
（付記１７）
前記データ転送に使用するチャネルとして、相手モジュールにデータを書き込むＰＵＴ転送専用のチャネルと相手モジュールからデータを読み出すＧＥＴ転送専用のチャネルを設けることを特徴とする付記１３に記載のPCI-Express通信方法。
（付記１８）
一方のモジュールから他方のモジュールにメモリリードリクエストを発行する場合は、前記一方のモジュールは、前記メモリライトリクエストパケットのアドレス部内に、前記他方のモジュールのノードＩＤと前記他方のモジュールが使用するＧＥＴ転送専用チャネルのチャネルＩＤ、及びリクエストであることを識別する前記パケットタイプを設定することを特徴とする付記１７に記載のPCI-Express通信方法。
(付記１９)
前記一方のモジュールは、該一方のモジュールが使用するＧＥＴ転送専用チャネルのチャネルＩＤを前記メモリライトリクエストパケットのヘッダ内に設定し、前記他方のモジュールは、該チャネルＩＤと前記一方のモジュールのノードＩＤ、及びレスポンスであることを識別する前記パケットタイプをメモリライトリクエストパケットのヘッダのアドレス部内に設定して該メモリライトリクエストパケットを前記一方のモジュールに返信することを特徴とする付記１８に記載のPCI-Express通信方法。
（付記２０）
一方のモジュールから他方のモジュールにメモリライトリクエストを発行する場合は、前記一方のモジュールは、前記メモリライトリクエストパケットのアドレス部内に、前記他方のモジュールのノードＩＤと前記他方のモジュールが使用するＰＵＴ転送専用チャネルのチャネルＩＤ、及びリクエストであることを識別する前記パケットタイプを設定することを特徴とする付記１７に記載のPCI-Express通信方法。  
（付記２１）
前記一方のモジュールは、該一方のモジュールが使用するＰＵＴ転送専用チャネルのチャネルＩＤを前記メモリライトリクエストパケットのヘッダ内に設定し、前記他方のモジュールは、該チャネルＩＤと前記一方のモジュールのノードＩＤ、及びレスポンスであることを識別する前記パケットタイプをメモリライトリクエストパケットのヘッダのアドレス部内に設定して該メモリライトリクエストパケットを前記一方のモジュールに返信することを特徴とする付記２０に記載のPCI-Express通信方法。
（付記２２）
PCI-Expressスイッチを用いてパケット転送を行うPCI-Express通信システムのモジュールにおいて、
該モジュールを識別する固有のノードＩＤを設定するとともに、データ転送に使用する各チャネルにチャネルＩＤを設定し、
データ転送についてのパケットのアドレス部内に、転送先モジュールの前記ノードＩＤと該データ転送に使用するチャネルの前記チャネルＩＤ、前記パケットがリクエストであるかレスポンスであるのかを識別するパケットタイプ及び一連のパケット転送におけるパケットのシーケンス番号を示すシーケンスコードを設定し、
データ転送には、アドレスルーティングでルーティングされるメモリライトリクエストパケットを使用し、
前記転送先モジュールである場合には、前記シーケンスコードに基づいて前記パケットが順番どおり受信されたかをチェックする、
ことを特徴とするPCI-Express通信システムのモジュール。
（付記２３）
前記転送先モジュールが受信したパケットに対してレスポンスパケットを返信する場合、該レスポンスパケットに前記受信したパケットのシーケンスコードと同一のシーケンスコードを設定し、
前記レスポンスパケットの返信先のモジュールは、該シーケンスコードに基づいて前記レスポンスパケットが順番どおり返信されたかをチェックする、
ことを特徴とする付記２２に記載のPCI-Express通信システムのモジュール。
（付記２４）
前記データ転送についてのパケットのアドレス部内に、該パケットが一連のパケット転送における最初のパケットであるか最後のパケットであるかを示す識別ビットをさらに設定し、
前記転送先モジュール及び前記返信先モジュールは、前記識別ビットと前記シーケンスコードの論理の整合性をチェックする、
ことを特徴とする付記２３に記載のPCI-Express通信システムのモジュール。
(付記２５)
前記データ転送についてのパケットのアドレス部内に、一連のパケット転送を終了し各モジュールにおいて一連のパケットを転送あるいは受信するのに必要な情報群である内部情報をクリアすることを指示するクリーンビットフラグをさらに設定し、
前記論理の整合性のチェックの結果エラーを検出したモジュールは、相手側モジュールに前記クリーンビットフラグにより一連のパケット転送を終了し前記内部情報をクリアすることを指示する、
ことを特徴とする付記２４に記載のPCI-Express通信システムのモジュール。
（付記２６）
前記データ転送に使用するチャネルとして、相手モジュールにデータを書き込むＰＵＴ転送専用のチャネルと相手モジュールからデータを読み出すＧＥＴ転送専用のチャネルを設けることを特徴とする付記２２に記載のPCI-Express通信システムのモジュール。
（付記２７）
相手方のモジュールにメモリリードリクエストを発行する場合は、前記メモリライトリクエストパケットのアドレス部内に、前記相手方のモジュールのノードＩＤと前記相手方のモジュールが使用するＧＥＴ転送専用チャネルのチャネルＩＤ、及びリクエストであることを識別する前記パケットタイプを設定することを特徴とする付記２６に記載のPCI-Express通信システムのモジュール。
(付記２８)
相手方のモジュールにメモリライトリクエストを発行する場合は、前記メモリライトリクエストパケットのアドレス部内に、前記相手方のモジュールのノードＩＤと前記相手方のモジュールが使用するＰＵＴ転送専用チャネルのチャネルＩＤ、及びリクエストであることを識別する前記パケットタイプを設定することを特徴とする付記２６に記載のPCI-Express通信システムのモジュール。
（付記２９）
相手方のモジュールからメモリライトリクエストを受信した場合は、メモリライトリクエストパケットのアドレス部内に、前記相手方のモジュールのノードＩＤとレスポンスであることを識別する前記パケットタイプを設定し、該メモリライトリクエストパケットを相手方のモジュールに返信することを特徴とする付記２２に記載のPCI-Express通信システムのモジュール。