(57)【要約】【課題】PCI-Expressスイッチを用いたPCI-Express通信システムにおいて、あるノードから他のノードにリクエストが発行された後、他のノードからリクエスト元のノードにレスポンスが返されるまでにPCI-Expressスイッチ内でバスＩＤ／デバイスＩＤの付替えが発生しても、レスポンスパケットを当初のリクエスト元のノードであるターゲットに送付できるようにする。【解決手段】各ノードにそれらを識別する固有のノードＩＤを設定するとともに、データ転送に使用する各チャネルにチャネルＩＤを設定し、データ転送についてのパケットのアドレス部内に、転送先モジュールの前記ノードＩＤと該データ転送に使用するチャネルの前記チャネルＩＤ、及び前記パケットがリクエストであるかレスポンスであるのかを識別するパケットタイプを設定する。そしてデータ転送には、アドレスルーティングでルーティングされるメモリライトリクエストパケットのみを使用する。【選択図】図１
2006302250.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)はリードデータをレスポンスパケットとして転送するが、このときの転送制御はＩＤ ルーティングにて行われる。
【００１２】
図１７は、上記のシーケンスで用いられるパケットのトランザクション層のヘッダの一部を示すものである。PCI-Expressスイッチ(6)は、レスポンスパケットのＩＤルーティングのときには図１７のリクエスタＩＤ（Requester ID）を用いてルーティングを行い、アドレスルーティングのときは図１７のアドレス（Address）を用いてルーティングを行う。図１７のリクエスタＩＤはリクエスト側のモジュールを識別する情報であり、図１７のアドレスは転送先へのルーティング情報を含んでいる。
【００１３】
このようなシステムで、図１８に示すように、ルートコンプレックスであるモジュールＡ(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[46])を設定する。ノードＩＤはパケットの転送先のものである。チャネルＩＤで指定されるチャネルは、後に詳細に説明するように、ＰＵＴ転送、ＧＥＴ転送毎に送信用チャネル、受信用チャネルが割り当てられている。したがって、メモリリード要求であればＧＥＴ転送の受信用チャネルのチャネルＩＤが設定され、メモリライト要求であればＰＵＴ転送の受信用チャネルのチャネルＩＤが設定される。パケットタイプＰＴはパケットがリクエストパケットであるかレスポンスパケットであるかの種別(0,1)を指定する。
【００２６】
タグ（Tag）部にはパケット転送元のチャネルＩＤがセットされ、転送先がレスポンスパケットを応答する際、応答先のチャネルＩＤとしてレスポンスパケットのアドレス部に使用される。
【００２７】
以下、図３を参照して、メモリリード要求を実行する本発明のＧＥＴ転送のシーケンスを説明する。
送信側がディスクリプタを解析してＧＥＴ転送要求を行うところまでは図１５に記載された従来例と同様であるが、送信されるパケットがメモリライトリクエストパケットであって、メモリリードリクエストパケットではない点、パケットのアドレス部には先に説明したように、ノードＩＤとチャネルＩＤとパケットタイプＰＴが設定されている点、またタグ部にはパケット転送元のチャネルＩＤがセットされている点が異なる。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を用いることは必須ではない。
【００４２】
図７に示すのは、図６に示すチャネルのチャネルＩＤの例である。ＰＵＴ受信用チャネル(341)とＧＥＴ受信用チャネル(351)は先に説明したように、物理的にはそれぞれ１個であるが、送信元がパケットを連続して順次送信する場合に、そのパケットの順番を識別するために図示のチャネルＩＤが順次用いられる。
【００４３】
以下、本実施例におけるデータ転送例を説明する。なお、図３および図４で説明したものと同様な部分は、繰り返しとなることから、省略しているところもある。
図８は、ノードＩＤが０の集中管理モジュールＣＭ#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スイッチの挙動やコマンドの種別を問わずレスポンスのパケットを応答することができるので、データ転送が正常に終了したかどうかをコマンド発行元のモジュールが確実に把握することができる。
【００５３】
（付記１）
複数のモジュール間を接続してパケット転送を行う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通信システム
【図１】
2006302250.tif 000003
【図３】
2006302250.tif 000004
【図４】
2006302250.tif 000005
【図６】
2006302250.tif 000006
【図７】
2006302250.tif 000007
【図９】
2006302250.tif 000008
【図１０】
2006302250.tif 000009
【図１２】
2006302250.tif 000010
【図１３】
2006302250.tif 000011
【図１５】
2006302250.tif 000012
【図１６】
2006302250.tif 000013
【図１７】
2006302250.tif 000014
【図２】
2006302250.tif 000015
【図５】
2006302250.tif 000016
【図８】
2006302250.tif 000017
【図１１】
2006302250.tif 000018
【図１４】
2006302250.tif 000019
【図１８】
2006302250.tif 000020