JP4918284B2 - PCI−Express通信システム - Google Patents

PCI−Express通信システム Download PDF

Info

Publication number
JP4918284B2
JP4918284B2 JP2006143125A JP2006143125A JP4918284B2 JP 4918284 B2 JP4918284 B2 JP 4918284B2 JP 2006143125 A JP2006143125 A JP 2006143125A JP 2006143125 A JP2006143125 A JP 2006143125A JP 4918284 B2 JP4918284 B2 JP 4918284B2
Authority
JP
Japan
Prior art keywords
packet
module
transfer
pci
express
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2006143125A
Other languages
English (en)
Other versions
JP2007316755A (ja
Inventor
裕一 小川
浩 石澤
光正 羽根田
和則 増山
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2006143125A priority Critical patent/JP4918284B2/ja
Priority to US11/604,361 priority patent/US7765357B2/en
Publication of JP2007316755A publication Critical patent/JP2007316755A/ja
Application granted granted Critical
Publication of JP4918284B2 publication Critical patent/JP4918284B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Information Transfer Systems (AREA)

Description

本発明は、PCI-Expressをインターフェースに使用した、複数のノードがPCI-Expressスイッチを介して接続される通信システム、及びその通信方法に関する。
パソコン内部の各パーツ間を結ぶバスの規格であり、現在ほとんどのパソコンで採用されているPCIに対して、より高速な転送インターフェース規格であるPCI-Expressの仕様が新たに策定されている。
例えば、下記特許文献1に記載されているように、PCI-Expressでは、パラレルバスで生ずる信号線と信号線との間でのずれ(スキュー)を防止するため、シリアルリンクが採用され、このシリアルリンクを介してパケットが非同期で転送される。また、PCI-Expressでは、層単位のアップグレードを可能とするため、機能が階層化されている。ソフトウェア層で作成された送信データにトランザクション層でヘッダが付加されてトランザクションパケットが作成され、データリンク層でトランザクションパケットの前後にシーケンス番号とCRCが付加されてデータリンク層パケットとされる。そして、物理層で物理的な信号とされ伝送媒体で送信される。
ところで、PCI-Expressでは、スイッチ(PCI-Expressスイッチ)によりノード間の接続を行うことができる。
図17は、PCI-Expressスイッチにより各モジュールが接続され、PCI-Expressに基づいてモジュール間の通信を行う従来のPCI-Express通信システムを説明する図である。
以下、PCI-Expressについて、本発明と関連する部分をさらに説明する。
PCI-Expressの仕様によれば、図17のモジュールA(1)のように、ルートコンプレックスと呼ばれる上位階層のトップに位置するモジュールが必要である。また、図17に示すように、各モジュールには、PCI-Expressスイッチ(6)のポート毎にバス番号(BusNum.)、デバイス番号(DeviceNum.)が割り当てられている。図17には、モジュールA(1)にはバス番号が0、デバイス番号は1が割り当てられ、モジュールB(2)にはバス番号が1、デバイス番号は2が割り当てられ、モジュールC(3)にはバス番号が1、デバイス番号は3が割り当てられ、モジュールD(4)にはバス番号が1、デバイス番号は4が割り当てられた例が示されている。
次に、PCI-Expressスイッチ(6)を介したモジュール間のパケット通信について説明する。PCI-Expressスイッチ(6)上でのパケットルーティングには、パケットヘッダに含まれるアドレスによりルーティングを行うアドレスルーティングと、同じくパケットヘッダに含まれるバス、デバイス及びファンクション番号から構成されるリクエスタIDによるIDルーティングの2種類がある。
これらのルーティングは、PCI-Expressの仕様では、リクエストパケットにはアドレスルーティングが、レスポンスパケットにはIDルーティングが使用されるように使い分けられている。したがって、メモリライトリクエストコマンド及びメモリリードリクエストコマンドに対するリクエストパケットにはアドレスルーティングが用いられる。なお、メモリライトリクエストコマンドに対しては、レスポンスパケットの応答はない仕様になっている。
例えば図17に示すように、(1)モジュールD(4)からモジュールC(3)へメモリリードリクエストコマンドを発行すると、(2)PCI-Expressスイッチ(6)はアドレスルーティングによりモジュールC(3)へメモリリードリクエストパケットを転送し、(3)モジュールC(3)は、リードデータをレスポンスパケットとして応答する。(4)PCI-Expressスイッチ(6)はIDルーティングでモジュールD(4)へレスポンスパケットを転送する。
図18は、相手側からデータを読み出すGET転送のシーケンスを説明する図である。送信側のファームウェアは、読み出すデータを指定するためのディスクリプタをメモリ上に作成して送信側のハードウェアを起動する。図18に示されるように、送信元はメモリリードリクエストパケットを発行し、PCI-Expressスイッチ(6)においてアドレスルーティングにより受信側に送信する。受信側では、受信側のハードウェアが受信側ファームウェアによる受信起動によりアイドル状態から立ち上がり、送信側から送られてきたメモリリードリクエストパケットによりGET要求を受信する。そして、メモリからデータを読み出してGET要求に対する応答をレスポンスパケットで返送する。レスポンスパケットはPCI-Expressスイッチ(6)においてIDルーティングにより送信側に返送される。送信側のハードウェアはレスポンスパケットからリードデータを受信し、メモリ上にそのデータを書き込んで送信側ファームウェアに割込を行い、送信側ファームウェアは終了処理を行う。
図19は、相手側にデータを書き込むPUT転送のシーケンスを説明する図である。送信側の発行するメモリライトリクエストパケットのルーティングは、GET転送の場合と同様にアドレスルーティングで行われる。そして、受信側は、PCI-Expressの仕様上(Non-PostedのMemory WriteにはResponseが発生しない)、レスポンスを応答しない。このため、要求側は正常に実行されたか判断不能であった。
例えば、図17で示すようにPCI-express スイッチ(6)のポート毎にバス番号、デバイス番号が設定されており、モジュールD(4)からモジュールC(3)へメモリリードリクエストパケットを送信したとする。このとき、パケットの転送制御はアドレスルーティングで行われる。モジュールC(3)はリードデータをレスポンスパケットとして転送するが、このときの転送制御はID ルーティングにて行われる。
図20は、上記のシーケンスで用いられるパケットのトランザクション層のヘッダの一部を示すものである。図20のリクエスタIDはこのパケットを送信するモジュールを識別する情報であり、図20のアドレス(Address)は転送先へのルーティング情報を含んでいる。レスポンスパケットのアドレスには、このレスポンスパケットに対応するリクエストパケットのリクエスタIDが設定されており、PCI-Expressスイッチ(6)は、レスポンスパケットのIDルーティングのときにはその設定されたリクエスタID(Requester ID)のうちのバス番号を用いてルーティングを行う。アドレスルーティングのときは図20のアドレスが各ポートごとに設定されたアドレス範囲のどの部分に含まれるかによりルーティングを行う。
このようなシステムで、図21に示すように、ルートコンプレックスであるモジュールA(1)が異常等により切り離された場合、ルートコンプレックスが不在となってしまうため、モジュールB〜Nのうちいずれかが新しいルートコンプレックスとなりPCI-Expressスイッチ(6)の持つ各ポートの構成情報(バス番号/デバイス番号)を変更する必要がある。図21に示す例ではモジュールB(2)を新しいルートコンプレックスとしている。
図21において、(1)モジュールD(4)からモジュールC(3)に対してメモリリードリクエストを発行し、(2)PCI-Expressスイッチ(6)はアドレスルーティングによりモジュールC(3)へメモリリードリクエストパケットを転送し、(3)その時ルートコンプレッ
クスであるモジュールA(1)が異常により切り離されたとする。(4)すると、PCI-Expressスイッチ(6)では各ポートのコンフィギャ情報が変更され、バス番号、デバイス番号の
付け替え(以下、「IDの付け替え」ともいう。)が発生し、モジュールB(2) が新しい
ルートコンプレックスとなる。(5)モジュールC(3)はモジュールD(4)からのメモリリードリクエストコマンドによりリードデータをレスポンスパケットとして応答するが、その時のリクエスタIDは、モジュールDのバス番号とデバイス番号の付け替え前の番号で構成されている。(6)PCI-Expressスイッチ(6)はモジュールC(3)から送られてきたパ
ケットはレスポンスパケットであるため、IDルーティングによりルーティングを行う。(7)しかし、バス番号、デバイス番号は付け替えにより他のモジュールに割り振られているため、前記レスポンスパケットは誤って他のモジュールに送られるか、または紛失してしまう可能性がある。
また、パケットが紛失してもそれを知ることができない。
そこで、本発明の解決しようとする課題は、PCI-Expressスイッチを用いてノード間の
通信を行うPCI-Express通信システムにおいて、あるノードから他のノードにリクエスト
が発行された後、他のノードからリクエスト元のノードにレスポンスが返されるまでにPCI-Expressスイッチ内でバス番号/デバイス番号の付替えが発生しても、レスポンスパケットを当初のリクエスト元のノードであるターゲットに送付できるようにすることである。
また、一連のパケット転送においてパケットが順序正しく転送されたか確認可能とすることである。
PCI-Expressによって接続される各モジュールに固有のノードIDを設定する。また、
相手モジュールにデータを書き込む(PUT転送)、相手モジュールからデータを読み出す(GET転送)のそれぞれに専用のチャネルを設け、各チャネルにチャネルIDを設定する。そして、PCI-Expressに従って転送されるトランザクションレイヤパケットのヘッ
ダのアドレス部内に、前記ノードIDとチャネルIDを設定するとともに、リクエストであるかレスポンスであるのかを識別するパケットタイプ及び一連のパケット転送におけるパケットのシーケンス番号を示すシーケンスコードを設定する。
そしてデータ転送には、アドレスルーティングでルーティングされるメモリライトリクエストパケットのみを使用する。
また、リクエストの場合には必ずレスポンスパケット(レスポンスタイプのメモリライトリクエストパケット)により応答する。
転送手段にIDルーティングを使用しないため、PCI-Expressスイッチにてバス番号、
デバイス番号の付替えが発生してもリクエストを発行したモジュールに確実にレスポンスを応答することができる。
また、シーケンスコードをチェックすることにより、パケットを順序正しく受信することができたか、パケットの紛失が発生しなかったかを確認することができる。
受信側モジュールは、送信されてきたパケットヘッダを解析し、チャネルIDによりPUT転送なのかGET転送なのか、パケットタイプによりリクエストなのかレスポンスなのかを判断して相応の動作を行うことができる。
また、メモリライトリクエストコマンドに対しても、レスポンスタイプのメモリライトリクエストパケットに情報を付加することにより、コマンドが正常に実行されたか否かの判断が可能となる。
以下、図1〜図4を参照して本発明の原理を説明する。
図1に記載された本発明のPCI-Express通信システム(100)における例示は、図21に記載された従来のPCI-Express通信システムにおける例示と同様な状況におけるものである。すなわち、図21に記載された場合と同様に、モジュールD(13)からモジュールC(12)に対して意味的にはメモリリード要求を発行し、それに対してモジュールC(12)からモジュールD(13)にリードデータを返そうとしているタイミングでモジュールA(10)の異常によりIDの付替えが発生し、図21に例示する場合と同様にモジュールD(13)のバス番号とデバイス番号が1、4から1、3に変化した場合である。
本発明においては、データ転送には、アドレスルーティングでルーティングされるメモリライトリクエストパケットのみを使用する。したがって、意味的にはメモリリード要求であっても、メモリライトリクエストパケットを用いる。
また、本発明においては、PCI-Expressによって接続される各モジュールに固有のノードIDを設定する。図1に例示されたものでは、モジュールA(10)にはノードID=0が、モジュールB(11)、モジュールC(12)、モジュールD(13)にはそれぞれ1,2,3のノードIDが固定的に割り当てられている。
さらに、相手モジュールにデータを書き込むPUT転送、相手モジュールからデータを読み出すGET転送のそれぞれに専用のチャネルを設け、各チャネルにチャネルIDを設定する。
図2に、本発明で使用するトランザクションレイヤパケットのヘッダ部の構成を示す。なお、網掛け部は本発明に関係しない部分なので、説明を省略する。
アドレス(Address)部(bit[63:2])には、図示するように、前記ノードID(bit[62:58])とチャネルID(bit[57:51])とさらにパケットタイプPT(bit[45])等を設定する。ノードIDはパケットの転送先のものである。チャネルIDで指定されるチャネルは、後に詳細に説明するように、PUT転送、GET転送及びノード間のメッセージ通信のためのメッセージ(MSG)転送毎に送信用チャネル、受信用チャネルが割り当てられている。したがって、メモリリード要求であればGET転送の受信用チャネルのチャネルIDが設定され、メモリライト要求であればPUT転送の受信用チャネルのチャネルIDが設定される。また、MSG転送のパケットにはMSG転送用の送信用あるいは受信用のチャネルIDが設定される。受信側モジュールは、このチャネルIDにより、MSG/PUT/GET転送を判別する。なお、MSG転送においても、PUT/GET転送と同様に、アドレスルーティングでルーティングされるメモリライトリクエストパケットを使用する。そして、レスポンスを要求することもできる。
パケットタイプPTはパケットがリクエストパケットであるかレスポンスパケットであるかの種別(0,1)を指定する。 タグ(Tag)部にはパケット転送元のチャネルIDがセットされ、転送先がレスポンスパケットを応答する際、応答先のチャネルIDとしてレスポンスパケットのアドレス部に使用される。
上述のアドレス部についてさらに本発明による設定を説明すると、そのbit[50:46]には一連のパケットのシーケンス番号を示すシーケンスコード(SeqCode)が設定される。
リクエストパケットの場合、送信側モジュールはリクエストパケット送信時に一連の各パケットに昇順の番号を設定する。受信側のモジュールでは、リクエストパケットの受信時に上記各パケットが順番どおりに受信されたかを確認する。確認の結果順番どおりでなければ、後述のステータスコードに値を設定してレスポンスパケットを送信する。
受信側モジュールがレスポンスパケットを送出する場合は、受信したリクエストパケット内のシーケンスコードと同じ番号を使用する。リクエストパケットの送信側モジュールは、上述のレスポンスパケット受信時に、各レスポンスパケットがリクエストパケットを送出した順番どおりに受信されたかを確認する。確認の結果順番どおりでなければ、エラー処理を行う。
上記以外のアドレス部は、モード(mode)部(bit[44:40])とデテール(detail)部(bit[39:02])に割り当てられる。
モード部は、そのパケットのモードを示すものである。モード部の第1ビット(bit[44])は、一連のパケットの始めのパケットであること(First Transfer)を示し、第2ビット(bit[43])は、一連のパケットの最後のパケットであること(Last Transfer)を示す。
第3ビット(bit[42])は、一連のパケット一つ一つにレスポンスパケットが必要であること(Request Response)を示す。送信側モジュールは、一連のパケット一つ一つにレスポンスパケットが必要である場合にこのビットをセットする。受信側モジュールは、このビットがセットされていた場合には、レスポンスパケットを送信する。
第4ビット(bit[41])は、内部情報をクリアしなければならないこと(Clean)を示す。ここで内部情報とは、各モジュールにおいて一連のパケットを転送(受信)するために必要な情報群であり、一例を挙げれば、「一連のパケットを転送中」を意味するフラグ情報などである。また、一連のパケットのうち、以前受信したパケットが処理中になっている場合には、その処理中のパケットもクリアする内部情報に該当する。
送信側モジュールは、エラーが発生した場合もしくはパワーオン後の初めての転送の場合、受信側モジュールに対して内部情報の初期化を指示するためこのビットを設定する。受信側モジュールは、このビットが設定されていた場合には、内部情報をクリアする。
次に、デテール(detail)部(bit[39:02])について説明する。
パケットタイプPT=0かつチャネルIDがMSGの場合、bit[39:32]はシーケンスコードbit[50:46]の拡張シーケンスコードが割り当てられ、一連のパケットの数が多くてシーケンスコードのビット数で足りないときに使用される。bit[31:02]はゼロである。
パケットタイプPT=0かつチャネルIDがGET/PUTの場合、bit[39:02]は従来のPCI-Expressの定義と同様である。
パケットタイプPT=1(レスポンスパケット)の場合、レスポンスタイプbit[39:32],ステイタスコードbit[31:16]及び拡張シーケンスコード bit[11:03]などが割り付けられる。レスポンスタイプは、そのビット値により、PUT/MSGのレスポンスであるかGETのレスポンスであるかを示す。
ステイタスコードは受信側モジュールが受信したパケットに対する処理においてエラーが発生した場合のエラー内容を示す。オールゼロであれば正常終了を示し、ゼロ以外であれば詳細なエラー番号を示している。
拡張シーケンスコードは、GET転送におけるレスポンスパケットのシーケンスコードに対するものである。
以下、図3を参照して、メモリリード要求を実行する本発明のGET転送のシーケンスを説明する。
送信側がディスクリプタを解析してGET転送要求を行うところまでは図18に記載された従来例と同様であるが、送信されるパケットがメモリライトリクエストパケットであって、メモリリードリクエストパケットではない点、パケットのアドレス部には先に説明したように、ノードIDとチャネルIDとパケットタイプPTが設定されている点、またタグ部にはパケット転送元のチャネルIDがセットされている点が異なる。PCI-Expressスイッチは従来例と同様にアドレスルーティングによりパケットのルーティングを行い受信側に送信する。
受信側では、パケットタイプによりリクエストパケットであることを識別し、さらにチャネルIDによりGET転送の受信用チャネルが用いられていることを判定し、GET要求であることを識別する。その後、メモリ上からデータをリードし、リードデータを送信するところまでは図15に記載された従来例と同様であるが、送信されるパケットが、メモリライトリクエストパケットであって、レスポンスパケットではない点が異なる。ただし、この場合のメモリライトリクエストパケットのヘッダには、パケットタイプがレスポンスと設定される。また、先に受信したメモリライトリクエストパケットのリクエスタIDからリクエスト送信側のモジュールを識別し、それに対応したノードIDを宛先として設定する。またチャネルIDはタグ部に設定されたチャネルIDを用いる。意味的にはレスポンスではあるが、PCI-Expressスイッチは、リクエストパケットとして認識することから、アドレスルーティングによりパケットのルーティングを行って送信側に送信する。
送信側では、パケットタイプがレスポンスであること、アドレス部にGET転送用の送信チャネルIDがふくまれていることによりGET要求のレスポンスであることを識別し、リードデータをメモリに書き込んで処理を終了する。
次に、図4を参照して、メモリライト要求を実行する本発明のPUT転送のシーケンスを説明する。
送信側がディスクリプタを解析してPUT転送要求を行い、メモリライトリクエストパケットを送信するところまでは、アドレス部とタグ部の設定を除いて、図19に記載された従来例と同様である。PCI-Expressスイッチは従来例と同様にアドレスルーティングによりパケットのルーティングを行い受信側に送信する。
受信側では、パケットタイプによりリクエストパケットであることを識別し、さらにチャネルIDによりPUT転送の受信用チャネルが用いられていることを判定し、PUT要求であることを識別する。そして送られてきたデータをメモリに書き込む。
ここまでは、従来のPUT転送と同様であるが、本発明においては、例えばハードウェアに、メモリライトリクエストパケットを用いてレスポンスを応答する機能を組み込む。パケットタイプにレスポンスを設定したメモリライトリクエストパケットを送信側に返信するので、PCI-Expressスイッチは、リクエストパケットとして認識して、アドレスルーティングによりルーティングを行って送信側に転送するが、送信側は、受信したパケットのアドレス部にPUT転送の送信用チャネルIDが含まれているので、自ノードのメモリライト要求に対するレスポンスであることを認識することができる。
次に、本発明の実施例を図5〜図13を参照して説明する。
本実施例は、それぞれのサブシステム内のすべての動作を管理する最大8個の集中管理モジュールCMがPCI-Expressスイッチを介して相互通信を行うPCI-Express通信システム(200)において、集中管理モジュールCM内のDMAチップが本発明の通信手法を実現するものである。
図5に示された本実施例のシステム構成は、それぞれのサブシステム内のすべての動作を管理する8個の集中管理モジュールCM#0(20)〜CM#7(27)と2個のフロントエンドルータFRT#0(71)、FRT#1(72)からなる通信システムのものであり、集中管理モジュールノード間をフロントエンドルータ内のPCI-Expressスイッチ(61,62)を介して接続している。
集中管理モジュールノードには、CM#0から順にノードID=0から7が割り振られている。集中管理モジュールは、図示のとおり、2重化されたCPU#0(51)、CPU#1(52)と集中管理モジュールノード間の通信手段を提供するDMAチップ(30)、さらにそれらCPU#0(51)、CPU#1(52)及び図示されていないメモリとDMAチップ(30)とのデータ転送を切り分けるメモリコントロールハブMCH(40)を含んでいる。
また、フロントエンドルータFRT#0(71)、FRT#1(72)も2重化されたフロントエンドルータを構成している。各フロントエンドルータFRT#0(71)、FRT#1(72)と各集中管理モジュールCM#0〜CM#7の間は、図示のとおりPCI-Express2.5GHzのライン4本で接続されている。
図6に示すのは、DMAチップ(30)の内部構成である。
図6に示すように、DMAチップ(30)は、PCI-Expressスイッチ側のサウスポートにPCI-Expressインタフェース制御部(311)を、CPU側のノースポートにはPCI-Expressインタフェース制御部(312)備える。また各PCI-Expressインタフェース制御部(311)と PCI-Expressインタフェース制御部(312)にそれぞれ対応してパケット制御部(321)とパケット制御部(322)を備える。さらに、メッセージ受信用チャネル(331)、PUT受信用チャネル(341)、GET受信用チャネル(351)、転送バッファ(361,370,362)、メッセージ送信用チャネル(332)、PUT送信用チャネル(342)、GET送信用チャネル(352)を備える。
メッセージ受信用チャネル(331)は2チャネル、メッセージ送信用チャネル(332)は8チャネル、PUT送信用チャネル(342)は5チャネル、GET送信用チャネル(352)は4チャネル備えられ、PUT受信用チャネル(341)とGET受信用チャネル(351)はそれぞれ1チャネル備えられている。
転送バッファ(361)はサウスポート側からノースポート側へのデータ転送に用いられ、転送バッファ(362)はノースポート側からサウスポート側へのデータ転送に用いられる。転送バッファ(370)はノースポート側からのループバック用として用いられる。
実線はリクエストを通知する制御線(REQ)を、点線はリクエスト完了を通知する制御線(CMP)を表し、太線はデータ線を表す。白抜きの線はPCIヘッダ線を表し、PCI-Expressインタフェース制御部(311,312)に接続されたラインTXとRXはそれぞれPCI-Expressの送信ラインと受信ラインを表している。
なお、図6に示した例では、ノースポート側もPCI-Expressを用いているが、本発明が適用されるのはサウスポート側であり、ノースポート側がPCI-Expressを用いることは必須ではない。
図7に示すのは、図6に示すチャネルのチャネルIDの例である。
以下、本実施例におけるデータ転送例を説明する。なお、図3および図4で説明したものと同様な部分は、繰り返しとなることから、省略しているところもある。
図8は、ノードIDが0の集中管理モジュールCM#0からノードIDが7の集中管理モジュールCM#7へのPUT転送例を説明する図である。ただし、レスポンス側は、図4で説明した動作と同様であるので、省略されている。
(1)集中管理モジュールCM#0のCPUはDMAチップ内のPUT送信用チャネルに対してPUT転送開始を指示する。(2)集中管理モジュールCM#0のDMAチップは、送信パケットヘッダのアドレス部のbit[62:58](ノードID部)を集中管理モジュールCM#7のノードIDである7に変換してサウスポート側にデータを転送し、メモリライトリクエストパケットとして送出する。(3)PCI-Expressスイッチは送信先アドレスを解析し、対応するアドレスにパケットを転送する。(4)集中管理モジュールCM#7のDMAチップは、サウスポート側からパケットを受信しそのパケット内のノードIDと自ノードIDが一致していることを確認してPUT受信用チャネルに通知する。
次に図9により、上記PUT転送例における送信側チャネルの動作を説明する。図上の太線の矢印はDMAチップがマスタとなる動作を、実線の矢印はCPUがマスタとなる動作を示す。点線の矢印は、割り込みを示すものである。
(1)CPUはPUT転送用のディスクリプタを作成し、メモリ内のディスクリプタ領域に書き込む。図示の例では、32バイトの領域が15個設けられている。(2)CPUはDMAチップに対してPUT転送開始を指示する。(3)DMAチップはメモリ上のディスクリプタ領域から、ディスクリプタデータを読み出す。(4)DMAチップはディスクリプタを解析して、メモリ上の送信元としてアドレス指定されたデータ領域からデータを読み取る。(5)DMAチップは読み取ったデータをサウスポート側に転送し、転送相手のDMAチップからの完了通知を待ち、相手側からのレスポンスを受信する。(6)DMAチップはディスクリプタの完了ポインタを更新し、ポインタ値(ディスクリプタ終了ポインタ)をメモリ上のディスクリプタ終了ポインタ領域に書き込む。(7)DMAチップは転送終了を通知するため、CPUに割り込みを上げる。(8)CPUは終了ポインタの確定動作として、割り込みの解除と終了コードのクリアを行う。
次に、上記PUT転送例における受信側チャネルの動作について、図10により説明する。
(1)CPUからPUT受信用チャネルの起動をかけ、DMAチップに転送開始の指示を行う。(最初の一回のみ実施。)(2)DMAチップはサウスポート側からデータを受信する。(3)DMAチップは受信したデータをノースポート側に転送してメモリ内に書き込む。(4)DMAチップはサウスポート側にレスポンスを応答する。
図11は、ノードIDが0の集中管理モジュールCM#0からノードIDが7の集中管理モジュールCM#7へのGET転送例を説明する図である。
(1)集中管理モジュールCM#0のCPUはDMAチップ内のGET送信用チャネルに対してGET転送開始を指示する。(2)集中管理モジュールCM#0のDMAチップは、送信パケットヘッダのアドレス部のbit[62:58](ノードID部)を集中管理モジュールCM#7のノードIDである7に変換してサウスポート側にデータを転送し、メモリライトリクエストパケットとして送出する。(3)PCI-Expressスイッチは送信先アドレスを解析し、対応するアドレスにパケットを転送する。(4)集中管理モジュールCM#7のDMAチップは、サウスポート側からパケットを受信しそのパケット内のノードIDと自ノードIDが一致していることを確認してGET受信用チャネルに通知する。(5)集中管理モジュールCM#7のDMAチップは自集中管理モジュール内のメモリからデータを読み出し、そのデータをサウスポート側に転送し、メモリライトリクエストパケットとして送出する。(6)PCI-Expressスイッチは送信先アドレスを解析し、対応するアドレスにパケットを転送する。(7)集中管理モジュールCM#0のDMAチップ内GET送信用チャネルは、サウスポート側からGETデータを受け取りノースポート側に転送する。
次に図12により、上記GET転送例における送信側チャネルの動作を説明する。
(1)CPUはGET転送用のディスクリプタを作成し、メモリ内のディスクリプタ領域に書き込む。(2)CPUはDMAチップに対してGET転送開始を指示する。(3)DMAチップはメモリ上のディスクリプタ領域から、ディスクリプタデータを読み出す。(4)DMAチップはディスクリプタを解析して、相手側DMAチップにGETデータ要求を出す。(5)DMAチップはサウスポートよりGETデータを受け取り、ノースポートに転送する。(6)DMAチップはディスクリプタの完了ポインタを更新し、ポインタ値(ディスクリプタ終了ポインタ)をメモリ上のディスクリプタ終了ポインタ領域に書き込む。(7)DMAチップは転送終了を通知するため、CPUに割り込みを上げる。(8)CPUは終了ポインタの確定動作として、割り込みの解除と終了コードのクリアを行う。
次に、上記PUT転送例における受信側チャネルの動作について、図13により説明する。
(1)CPUからGET受信用チャネルの起動をかけ、DMAチップに転送開始の指示を行う。(最初の一回のみ実施。)(2)DMAチップはサウスポート側からGET要求を受信する。(3)DMAチップはノースポート側より、自集中管理モジュールCM上のメモリからデータを読み込む。(4)DMAチップはサウスポート側にGETデータを転送する。
以上説明したように、本発明のPCI-Express通信システムにおいては、データ転送にアドレスルーティングによりルーティングされるメモリライトリクエストパケットしか用いないので、ルートコンプレックス障害によりIDの付け替えが発生したとしても、レスポンスを正常に返すことができる。
また、PCI-Expressスイッチの挙動やコマンドの種別を問わずレスポンスのパケットを応答することができるので、データ転送が正常に終了したかどうかをコマンド発行元のモジュールが確実に把握することができる。
次に、図14を参照して、送信側DMAチップの各送信チャネルが送信するパケットのモード遷移を説明する。
図14の状態S10に示す装置のパワーオンもしくはリセット状態においてCPUによりチャネルが起動され、状態S11に遷移して図2において示したモード部のbit[41](Clean)に1を設定したパケット(クリーンパケット)を送信し受信側DMAチップに内部情報の初期化を指示する。
クリーンパケットに対するレスポンスパケットを受信するとデータ転送開始状態(S11)に遷移してbit[44]に1を設定し、First Transferのパケットとして送信する。1パケットのみの送信であれば同時に最後のデータ転送でもあるから、上記First Transferのパケットは状態S14の最後のデータ転送によるbit[43]への1の設定も行われ、Last Transferのパケットとしても送信される。
複数のパケットを送信する場合は状態S13に遷移してデータ転送中となり、例えばbit[42]に1を設定してRequest Responseのパケットを送信する。最後のパケットを送信するときには、状態S14の最後のデータ転送においてbit[43]に1が設定され、Last Transferのパケットとして送信される。
最後のデータ転送(S14)の後、レスポンスパケットを受信すると、状態S15の転送終了状態に遷移し、CPUからの起動を待ち合わせる。再度CPUからの起動があると、状態S12に遷移して上述の処理による状態遷移を繰り返す。
状態S12、状態S13及び状態S14においてエラーが発生すると、状態S16「エラー発生」に遷移し、bit[41](Clean)に1を設定したパケット(クリーンパケット)を送信する。上記クリーンパケットに対するレスポンスパケットを受信すると状態S17の転送終了状態に遷移し、CPUからの起動を待ち合わせる。
状態S17でのCPUからの起動に対しては、状態S11に遷移して再度クリーンパケットを送信してからデータ転送を開始する。
図15に示すのは、受信側DMAチップの各受信チャネルにおけるリクエストパケット受信処理フローである。
受信側DMAチップの各受信チャネルは、リクエストパケットを受信すると、まずステップS30においてモード部のbit[41](Clean)が1か確認し、1であればステップS31に進んで内部情報をクリアし、レスポンスパケットの送信処理に移行する
ステップS30での判定がクリーンパケットでなかった場合は、ステップS32でモード部のbit[44]をチェックしてFirst Transferか確認する。First TransferであればステップS33に進み、現在の状態が一連のパケットを転送中であるか判定する。転送中でなければステップS36に移行し、転送中であればFirst Transferと整合がとれないことからステップS40に移行してレスポンスパケットのアドレス部bit[31:16]にステイタスコードを設定し、エラーレスポンスパケットの送信処理に移行する。
ステップS32での判定がFirst Transferでなければ、ステップS34に進み、現在の状態が一連のパケットを転送中であるか判定する。転送中でなければ、ステップS32のFirst Transferでないという判定と整合しないので、ステップS40に移行してレスポンスパケットのアドレス部bit[31:16]にステイタスコードを設定し、エラーレスポンスパケットの送信処理に移行する。
一連のパケットを転送中であればステップS35に進み、アドレス部bit[50:46]のシーケンスコードを確認して順番どおりにパケットが受信されているかチェックし、異常があればステップS40に移行してレスポンスパケットのアドレス部bit[31:16]にステイタスコードを設定し、エラーレスポンスパケットの送信処理に移行する。正常であればステップS36に進むが、MSG転送の場合にはステップS35Mを経由し、アドレス部bit[39:32]の拡張シーケンスコードを調べて順番どおりにパケットが受信されているか確認する。確認の結果、異常があればステップS40に移行してレスポンスパケットのアドレス部bit[31:16]にステイタスコードを設定し、エラーレスポンスパケットの送信処理に移行する。正常であればステップS36に進む。
ステップS36では、モード部のbit[43]をチェックしてLast Transferか確認する。Last TransferであればステップS37で一連のパケットの最後と確認し、そうでなければそのままステップS38に進む。
ステップS38では受信したリクエストパケットを正しいパケットであると認識してその処理を行う。
次にステップS39に進み、モード部のbit[42]をチェックして一連のパケット一つ一つにレスポンスパケットが必要であるRequest Responseであるか確認をする。Request Responseであればレスポンスパケットの送信処理に移行し、そうでなければ処理を終了する。
次に、図16を参照して送信側DMAチップの各送信チャネルにおけるレスポンスパケット受信処理フローを説明する。
送信側DMAチップの各送信チャネルは、レスポンスパケットを受信すると、まずステップS20においてモード部のbit[41](Clean)が1か確認し、1であればステップS21に進んで現在の状態がクリーンパケット送信状態であるか確認を行う。クリーンパケット送信状態でなければエラー処理に移行し、クリーンパケット送信状態であればステップS22に進んでアドレス部bit[50:46]のシーケンスコードを確認し、異常があればエラー処理に移行し、正常であれば正常終了する。
ステップS20の判定がクリーンパケットでなかった場合は、ステップS23でモード部のbit[44]をチェックしてFirst Transferか確認する。First TransferであればステップS24に進み、現在の状態が一連のパケットを転送中であるか判定する。転送中でなければステップS26に移行し、転送中であればFirst Transferと整合がとれないことから、エラー処理に移行する。
ステップS23での判定がFirst Transferでなければ、ステップS25に進み、現在の状態が一連のパケットを転送中であるか判定する。転送中でなければ、ステップS23のFirst Transferでないという判定と整合しないので、エラー処理に移行する。
一連のパケットを転送中であればステップS26に進み、アドレス部bit[50:46]のシーケンスコードを確認し、異常があればエラー処理に移行する。正常であればステップS27に進むが、GET転送の場合にはステップS26Gを経由し、アドレス部bit[11:03]の拡張シーケンスコードを確認する。確認の結果、異常があればエラー処理に移行する。正常であればステップS27に進む。
ステップS27では、モード部のbit[43]をチェックしてLast Transferか確認する。Last TransferであればステップS28に進み、現在の状態がLast Transferパケット送信状態であるか確認をし、Last Transferパケット送信状態でなければエラー処理に移行する。
ステップS27での判定がLast Transferでないか、あるいはステップS28での判定がLast Transferパケット送信状態であればステップS29に進みアドレス部bit[31:16]のステイタスコードを確認する。ステイタスコードがオールゼロであれば正常終了し、ゼロ以外のビットがあればエラー処理に移行する。
上記エラー処理では、図14に示したようにクリーンパケットが送信されて内部情報がクリアされ、転送処理を終了する。
(付記1)
複数のモジュール間を接続してパケット転送を行うPCI-Expressスイッチを用いたPCI-Express通信システムにおいて、
前記複数のモジュールの各々にそれらを識別する固有のノードIDを設定するとともに、データ転送に使用する各チャネルにチャネルIDを設定し、
データ転送についてのパケットのアドレス部内に、転送先モジュールの前記ノードIDと該データ転送に使用するチャネルの前記チャネルID、前記パケットがリクエストであるかレスポンスであるのかを識別するパケットタイプ及び一連のパケット転送におけるパケットのシーケンス番号を示すシーケンスコードを設定し、
データ転送には、アドレスルーティングでルーティングされるメモリライトリクエストパケットを使用し、
前記転送先モジュールは前記シーケンスコードに基づいて前記パケットが順番どおり受信されたかをチェックする、
ことを特徴とするPCI-Express通信システム。
(付記2)
前記転送先モジュールが受信したパケットに対してレスポンスパケットを返信する場合、該レスポンスパケットに前記受信したパケットのシーケンスコードと同一のシーケンスコードを設定し、
前記レスポンスパケットの返信先のモジュールは、該シーケンスコードに基づいて前記レスポンスパケットが順番どおり返信されたかをチェックする、
ことを特徴とする付記1に記載のPCI-Express通信システム。
(付記3)
前記データ転送についてのパケットのアドレス部内に、該パケットが一連のパケット転送における最初のパケットであるか最後のパケットであるかを示す識別ビットをさらに設定し、前記転送先モジュール及び前記返信先モジュールは、前記識別ビットと前記シーケンスコードの論理の整合性をチェックすることを特徴とする付記2に記載のPCI-Express通信システム。
(付記4)
前記データ転送についてのパケットのアドレス部内に、一連のパケット転送を終了し各モジュールにおいて一連のパケットを転送あるいは受信するのに必要な情報群である内部情報をクリアすることを指示するクリーンビットフラグをさらに設定し、
前記論理の整合性のチェックの結果エラーを検出したモジュールは、相手側モジュールに前記クリーンビットフラグにより一連のパケット転送を終了し前記内部情報をクリアすることを指示することを特徴とする付記3に記載のPCI-Express通信システム。
(付記
前記データ転送に使用するチャネルとして、相手モジュールにデータを書き込むPUT転送専用のチャネルと相手モジュールからデータを読み出すGET転送専用のチャネルを設けることを特徴とする付記1に記載のPCI-Express通信システム。
(付記)
一方のモジュールから他方のモジュールにメモリリードリクエストを発行する場合は、前記一方のモジュールは、前記メモリライトリクエストパケットのアドレス部内に、前記他方のモジュールのノードIDと前記他方のモジュールが使用するGET転送専用チャネルのチャネルID、及びリクエストであることを識別する前記パケットタイプを設定することを特徴とする付記に記載のPCI-Express通信システム。
(付記
前記一方のモジュールは、該一方のモジュールが使用するGET転送専用チャネルのチャネルIDを前記メモリライトリクエストパケットのヘッダ内に設定し、前記他方のモジュールは、該チャネルIDと前記一方のモジュールのノードID、及びレスポンスであることを識別する前記パケットタイプをメモリライトリクエストパケットのヘッダのアドレス部内に設定して該メモリライトリクエストパケットを前記一方のモジュールに返信することを特徴とする付記に記載のPCI-Express通信システム。
(付記
一方のモジュールから他方のモジュールにメモリライトリクエストを発行する場合は、前記一方のモジュールは、前記メモリライトリクエストパケットのアドレス部内に、前記他方のモジュールのノードIDと前記他方のモジュールが使用するPUT転送専用チャネルのチャネルID、及びリクエストであることを識別する前記パケットタイプを設定することを特徴とする付記に記載のPCI-Express通信システム。
(付記
前記一方のモジュールは、該一方のモジュールが使用するPUT転送専用チャネルのチャネルIDを前記メモリライトリクエストパケットのヘッダ内に設定し、前記他方のモジュールは、該チャネルIDと前記一方のモジュールのノードID、及びレスポンスであることを識別する前記パケットタイプをメモリライトリクエストパケットのヘッダのアドレス部内に設定して該メモリライトリクエストパケットを前記一方のモジュールに返信することを特徴とする付記に記載のPCI-Express通信システム。
(付記10)
前記PUT専用のチャネルと前記GET専用のチャネルのそれぞれを受信用チャネルと送信用チャネルから構成することを特徴とする付記に記載のPCI-Express通信システム。
(付記11)
一方のモジュールから他方のモジュールにメモリリードリクエストを発行する場合は、前記一方のモジュールは、前記メモリライトリクエストパケットのアドレス部内に、前記他方のモジュールのノードIDと前記他方のモジュールのGET転送専用の受信用チャネルのチャネルID、及びリクエストであることを識別する前記パケットタイプを設定し、かつ該一方のモジュールが使用するGET転送専用の送信用チャネルのチャネルIDを前記メモリライトリクエストパケットのヘッダ内に設定し、前記他方のモジュールは、該送信用チャネルのチャネルIDと前記一方のモジュールのノードID、及びレスポンスであることを識別する前記パケットタイプをメモリライトリクエストパケットのヘッダのアドレス部内に設定して該メモリライトリクエストパケットを前記一方のモジュールに返信することを特徴とする付記10に記載のPCI-Express通信システム。
(付記12)
一方のモジュールから他方のモジュールにメモリライトリクエストを発行する場合は、前記一方のモジュールは、前記メモリライトリクエストパケットのアドレス部内に、前記他方のモジュールのノードIDと前記他方のモジュールのPUT転送専用の受信用チャネルのチャネルID、及びリクエストであることを識別する前記パケットタイプを設定し、かつ該一方のモジュールが使用するPUT転送専用の送信用チャネルのチャネルIDを前記メモリライトリクエストパケットのヘッダ内に設定し、前記他方のモジュールは、該送信用チャネルのチャネルIDと前記一方のモジュールのノードID、及びレスポンスであることを識別する前記パケットタイプをメモリライトリクエストパケットのヘッダのアドレス部内に設定して該メモリライトリクエストパケットを前記一方のモジュールに返信することを特徴とする付記10に記載のPCI-Express通信システム。
(付記13
複数のモジュール間を接続してパケット転送を行うPCI-Expressスイッチを用いたPCI-Express通信方法において、
前記複数のモジュールの各々にそれらを識別する固有のノードIDを設定するとともに、データ転送に使用する各チャネルにチャネルIDを設定し、
データ転送についてのパケットのアドレス部内に、転送先モジュールの前記ノードIDと該データ転送に使用するチャネルの前記チャネルID、前記パケットがリクエストであるかレスポンスであるのかを識別するパケットタイプ及び一連のパケット転送におけるパケットのシーケンス番号を示すシーケンスコードを設定し、
前記転送先モジュールは前記シーケンスコードに基づいて前記パケットが順番どおり受信されたかをチェックし、
リクエストの場合には必ずレスポンスパケットを応答し、
データ転送には、アドレスルーティングでルーティングされるメモリライトリクエストパケットを常に使用することを特徴とするPCI-Express通信方法。
(付記14)
前記転送先モジュールが受信したパケットに対してレスポンスパケットを返信する場合、該レスポンスパケットに前記受信したパケットのシーケンスコードと同一のシーケンスコードを設定し、
前記レスポンスパケットの返信先のモジュールは、該シーケンスコードに基づいて前記レスポンスパケットが順番どおり返信されたかをチェックする、
ことを特徴とする付記13に記載のPCI-Express通信方法。
(付記15)
前記データ転送についてのパケットのアドレス部内に、該パケットが一連のパケット転送における最初のパケットであるか最後のパケットであるかを示す識別ビットをさらに設定し、
前記転送先モジュール及び前記返信先モジュールは、前記識別ビットと前記シーケンスコードの論理の整合性をチェックする、
ことを特徴とする付記14に記載のPCI-Express通信方法。
(付記16)
前記データ転送についてのパケットのアドレス部内に、一連のパケット転送を終了し各モジュールにおいて一連のパケットを転送あるいは受信するのに必要な情報群である内部情報をクリアすることを指示するクリーンビットフラグをさらに設定し、
前記論理の整合性のチェックの結果エラーを検出したモジュールは、相手側モジュールに前記クリーンビットフラグにより一連のパケット転送を終了し前記内部情報をクリアすることを指示する、
ことを特徴とする付記15に記載のPCI-Express通信方法。
(付記17
前記データ転送に使用するチャネルとして、相手モジュールにデータを書き込むPUT転送専用のチャネルと相手モジュールからデータを読み出すGET転送専用のチャネルを設けることを特徴とする付記13に記載のPCI-Express通信方法。
(付記18
一方のモジュールから他方のモジュールにメモリリードリクエストを発行する場合は、前記一方のモジュールは、前記メモリライトリクエストパケットのアドレス部内に、前記他方のモジュールのノードIDと前記他方のモジュールが使用するGET転送専用チャネルのチャネルID、及びリクエストであることを識別する前記パケットタイプを設定することを特徴とする付記17に記載のPCI-Express通信方法。
(付記19)
前記一方のモジュールは、該一方のモジュールが使用するGET転送専用チャネルのチャネルIDを前記メモリライトリクエストパケットのヘッダ内に設定し、前記他方のモジュールは、該チャネルIDと前記一方のモジュールのノードID、及びレスポンスであることを識別する前記パケットタイプをメモリライトリクエストパケットのヘッダのアドレス部内に設定して該メモリライトリクエストパケットを前記一方のモジュールに返信することを特徴とする付記18に記載のPCI-Express通信方法。
(付記20
一方のモジュールから他方のモジュールにメモリライトリクエストを発行する場合は、前記一方のモジュールは、前記メモリライトリクエストパケットのアドレス部内に、前記他方のモジュールのノードIDと前記他方のモジュールが使用するPUT転送専用チャネルのチャネルID、及びリクエストであることを識別する前記パケットタイプを設定することを特徴とする付記17に記載のPCI-Express通信方法。
(付記21
前記一方のモジュールは、該一方のモジュールが使用するPUT転送専用チャネルのチャネルIDを前記メモリライトリクエストパケットのヘッダ内に設定し、前記他方のモジュールは、該チャネルIDと前記一方のモジュールのノードID、及びレスポンスであることを識別する前記パケットタイプをメモリライトリクエストパケットのヘッダのアドレス部内に設定して該メモリライトリクエストパケットを前記一方のモジュールに返信することを特徴とする付記20に記載のPCI-Express通信方法。
(付記22
PCI-Expressスイッチを用いてパケット転送を行うPCI-Express通信システムのモジュールにおいて、
該モジュールを識別する固有のノードIDを設定するとともに、データ転送に使用する各チャネルにチャネルIDを設定し、
データ転送についてのパケットのアドレス部内に、転送先モジュールの前記ノードIDと該データ転送に使用するチャネルの前記チャネルID、前記パケットがリクエストであるかレスポンスであるのかを識別するパケットタイプ及び一連のパケット転送におけるパケットのシーケンス番号を示すシーケンスコードを設定し、
データ転送には、アドレスルーティングでルーティングされるメモリライトリクエストパケットを使用し、
前記転送先モジュールである場合には、前記シーケンスコードに基づいて前記パケットが順番どおり受信されたかをチェックする、
ことを特徴とするPCI-Express通信システムのモジュール。
(付記23)
前記転送先モジュールが受信したパケットに対してレスポンスパケットを返信する場合、該レスポンスパケットに前記受信したパケットのシーケンスコードと同一のシーケンスコードを設定し、
前記レスポンスパケットの返信先のモジュールは、該シーケンスコードに基づいて前記レスポンスパケットが順番どおり返信されたかをチェックする、
ことを特徴とする付記22に記載のPCI-Express通信システムのモジュール。
(付記24)
前記データ転送についてのパケットのアドレス部内に、該パケットが一連のパケット転送における最初のパケットであるか最後のパケットであるかを示す識別ビットをさらに設定し、
前記転送先モジュール及び前記返信先モジュールは、前記識別ビットと前記シーケンスコードの論理の整合性をチェックする、
ことを特徴とする付記23に記載のPCI-Express通信システムのモジュール。
(付記25)
前記データ転送についてのパケットのアドレス部内に、一連のパケット転送を終了し各モジュールにおいて一連のパケットを転送あるいは受信するのに必要な情報群である内部情報をクリアすることを指示するクリーンビットフラグをさらに設定し、
前記論理の整合性のチェックの結果エラーを検出したモジュールは、相手側モジュールに前記クリーンビットフラグにより一連のパケット転送を終了し前記内部情報をクリアすることを指示する、
ことを特徴とする付記24に記載のPCI-Express通信システムのモジュール。
(付記26
前記データ転送に使用するチャネルとして、相手モジュールにデータを書き込むPUT転送専用のチャネルと相手モジュールからデータを読み出すGET転送専用のチャネルを設けることを特徴とする付記22に記載のPCI-Express通信システムのモジュール。
(付記27
相手方のモジュールにメモリリードリクエストを発行する場合は、前記メモリライトリクエストパケットのアドレス部内に、前記相手方のモジュールのノードIDと前記相手方のモジュールが使用するGET転送専用チャネルのチャネルID、及びリクエストであることを識別する前記パケットタイプを設定することを特徴とする付記26に記載のPCI-Express通信システムのモジュール。
(付記28)
相手方のモジュールにメモリライトリクエストを発行する場合は、前記メモリライトリクエストパケットのアドレス部内に、前記相手方のモジュールのノードIDと前記相手方のモジュールが使用するPUT転送専用チャネルのチャネルID、及びリクエストであることを識別する前記パケットタイプを設定することを特徴とする付記26に記載のPCI-Express通信システムのモジュール。
(付記29
相手方のモジュールからメモリライトリクエストを受信した場合は、メモリライトリクエストパケットのアドレス部内に、前記相手方のモジュールのノードIDとレスポンスであることを識別する前記パケットタイプを設定し、該メモリライトリクエストパケットを相手方のモジュールに返信することを特徴とする付記22に記載のPCI-Express通信システムのモジュール。
本発明のPCI-Express通信システムにおいてGET転送中に障害が発生した場合を説明する図である。 本発明のPCI-Express通信システムにおけるトランザクションパケットのヘッダの一部を説明するものである。 本発明のPCI-Express通信システムにおけるGET転送のシーケンスを説明する図である。 本発明のPCI-Express通信システムにおけるPUT転送のシーケンスを説明する図である。 本発明の実施例のシステム構成図である。 本発明の実施例におけるDMAチップの内部構成図である。 本発明の実施例におけるチャネルIDの一例を示す図である。 本発明の実施例におけるPUT転送例を説明する図である。 本発明の実施例におけるPUT転送時の送信側チャネルの動作を説明する図である。 本発明の実施例におけるPUT転送時の受信側チャネルの動作を説明する図である。 本発明の実施例におけるGET転送例を説明する図である。 本発明の実施例におけるGET転送時の送信側チャネルの動作を説明する図である。 本発明の実施例におけるGET転送時の受信側チャネルの動作を説明する図である。 送信側DMAチップの各送信チャネルが送信するパケットのモード遷移を説明する図である。 受信側DMAチップの各受信チャネルにおけるリクエストパケット受信処理フローを説明する図である。 送信側DMAチップの各送信チャネルにおけるレスポンスパケット受信処理フローを説明する図である。 従来のPCI-Express通信システムを説明する図である。 従来のPCI-Express通信システムにおけるGET転送のシーケンスを説明する図である。 従来のPCI-Express通信システムにおけるPUT転送のシーケンスを説明する図である。 従来のPCI-Express通信システムにおけるトランザクションパケットのヘッダの構成を説明するものである。 従来のPCI-Express通信システムにおいてGET転送中に障害が発生した場合を説明する図である。
符号の説明
1、10 モジュールA
2、12 モジュールB
3、13 モジュールC
4、14 モジュールD
20〜27 集中管理モジュール
30 DMAチップ
311、312 PCI-Expressインタフェース制御部
321、322 パケット制御部
331 メッセージ受信用チャネル
332 メッセージ送信用チャネル
341 PUT受信用チャネル
342 PUT送信用チャネル
351 GET受信用チャネル
352 GET送信用チャネル
361 転送バッファ(NP→SP)
362 転送バッファ(SP→NP)
370 転送バッファ(ループバック)
40 メモリコントロールハブ
51、52 CPU
6、60〜62 PCI-Expressスイッチ
71、72 フロントエンドルータ
100 本発明のPCI-Express通信システム
200 本発明の実施例におけるPCI-Express通信システム

Claims (10)

  1. 複数のモジュール間を接続してパケット転送を行うPCI-Expressスイッチを用いたPCI-Express通信システムにおいて、
    前記複数のモジュールのうち第1のモジュールから、データを読み出すGET転送のリクエストを示すパケットを受信した第2のモジュールは、該第1のモジュールへのアドレスルーティングのためのルーティング情報と、前記複数のモジュールの各々を識別する固有のIDであって各モジュールのデバイス番号が変化しても変化しないIDである、該第1のモジュールのノードIDと、データ転送に使用するGET転送専用チャネルのチャネルIDと、レスポンスであることを識別するパケットタイプと、一連のパケット転送におけるパケットのシーケンス番号を示すシーケンスコードとを含むアドレス部を有するメモリライトリクエストパケットを、該第1のモジュールへ返信し、
    前記アドレス部を使用して前記メモリライトリクエストパケットのデータ転送を行い、
    前記第1のモジュールは、前記シーケンスコードに基づいて前記メモリライトリクエストパケットが順番どおり受信されたかをチェックする、
    ことを特徴とするPCI-Express通信システム。
  2. 前記第2のモジュールは、前記GET転送のリクエストを示すパケットのシーケンスコードと同一のシーケンスコードを前記アドレス部に設定し、
    前記第1のモジュールは、該シーケンスコードに基づいて前記メモリライトリクエストパケットが順番どおり返信されたかをチェックする、
    ことを特徴とする請求項1に記載のPCI-Express通信システム。
  3. 記アドレス部内に、該パケットが一連のパケット転送における最初のパケットであるか最後のパケットであるかを示す識別ビットをさらに設定し、前記第2のモジュール及び前記第1のモジュールは、前記識別ビットと前記シーケンスコードの論理の整合性をチェックすることを特徴とする請求項2に記載のPCI-Express通信システム。
  4. 記アドレス部内に、一連のパケット転送を終了し各モジュールにおいて一連のパケットを転送あるいは受信するのに必要な情報群である内部情報をクリアすることを指示するクリーンビットフラグをさらに設定し、
    前記論理の整合性のチェックの結果エラーを検出したモジュールは、相手側モジュールに前記クリーンビットフラグにより一連のパケット転送を終了し前記内部情報をクリアすることを指示することを特徴とする請求項3に記載のPCI-Express通信システム。
  5. 複数のモジュール間を接続してパケット転送を行うPCI-Expressスイッチを用いたPCI-Express通信方法において、
    前記複数のモジュールのうち第1のモジュールから、データを読み出すGET転送のリクエストを示すパケットを受信した第2のモジュールは、該第1のモジュールへのアドレスルーティングのためのルーティング情報と、前記複数のモジュールの各々を識別する固有のIDであって各モジュールのデバイス番号が変化しても変化しないIDである、該第1のモジュールのノードIDと、データ転送に使用するGET転送専用チャネルのチャネルIDと、レスポンスであることを識別するパケットタイプと、一連のパケット転送におけるパケットのシーケンス番号を示すシーケンスコードとを含むアドレス部を有するメモリライトリクエストパケットを、該第1のモジュールへ返信し、
    前記アドレス部を使用して前記メモリライトリクエストパケットのデータ転送を行い、
    前記第1のモジュールは、前記シーケンスコードに基づいて前記メモリライトリクエストパケットが順番どおり受信されたかをチェックする、
    ことを特徴とするPCI-Express通信方法。
  6. 前記第2のモジュールは、前記GET転送のリクエストを示すパケットのシーケンスコードと同一のシーケンスコードを前記アドレス部に設定し、
    前記第1のモジュールは、該シーケンスコードに基づいて前記メモリライトリクエストパケットが順番どおり返信されたかをチェックする、
    ことを特徴とする請求項5に記載のPCI-Express通信方法。
  7. PCI-Expressスイッチを用いてパケット転送を行うPCI-Express通信システムの複数のモジュールのうちの1つのモジュールにおいて、
    前記複数のモジュールのうち要求元モジュールから、データを読み出すGET転送のリクエストを示すパケットを受信し、
    受信したパケットのアドレス部に含まれる、一連のパケット転送におけるパケットのシーケンス番号を示すシーケンスコードに基づいて、該パケットが順番どおり受信されたかをチェックし、
    前記要求元モジュールへのアドレスルーティングのためのルーティング情報と、前記複数のモジュールの各々を識別する固有のIDであって各モジュールのデバイス番号が変化しても変化しないIDである、該要求元モジュールのノードIDと、データ転送に使用するGET転送専用チャネルのチャネルIDと、レスポンスであることを識別するパケットタイプと、シーケンスコードとを含むアドレス部を有するメモリライトリクエストパケットを、該要求元モジュールへ返信する、
    ことを特徴とするPCI-Express通信システムのモジュール。
  8. 前記GET転送のリクエストを示すパケットのシーケンスコードと同一のシーケンスコードを前記メモリライトリクエストパケットのアドレス部に設定し、
    前記要求元モジュールは、該シーケンスコードに基づいて前記メモリライトリクエストパケットが順番どおり返信されたかをチェックする、
    ことを特徴とする請求項7に記載のPCI-Express通信システムのモジュール。
  9. 記アドレス部内に、該パケットが一連のパケット転送における最初のパケットであるか最後のパケットであるかを示す識別ビットをさらに設定し、
    前記1つのモジュール及び前記要求元モジュールは、前記識別ビットと前記シーケンスコードの論理の整合性をチェックする、
    ことを特徴とする請求項8に記載のPCI-Express通信システムのモジュール。
  10. 記アドレス部内に、一連のパケット転送を終了し各モジュールにおいて一連のパケットを転送あるいは受信するのに必要な情報群である内部情報をクリアすることを指示するクリーンビットフラグをさらに設定し、
    前記論理の整合性のチェックの結果エラーを検出したモジュールは、相手側モジュールに前記クリーンビットフラグにより一連のパケット転送を終了し前記内部情報をクリアすることを指示する、
    ことを特徴とする請求項9に記載のPCI-Express通信システムのモジュール。
JP2006143125A 2005-03-24 2006-05-23 PCI−Express通信システム Active JP4918284B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2006143125A JP4918284B2 (ja) 2006-05-23 2006-05-23 PCI−Express通信システム
US11/604,361 US7765357B2 (en) 2005-03-24 2006-11-27 PCI-express communications system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006143125A JP4918284B2 (ja) 2006-05-23 2006-05-23 PCI−Express通信システム

Publications (2)

Publication Number Publication Date
JP2007316755A JP2007316755A (ja) 2007-12-06
JP4918284B2 true JP4918284B2 (ja) 2012-04-18

Family

ID=38850580

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006143125A Active JP4918284B2 (ja) 2005-03-24 2006-05-23 PCI−Express通信システム

Country Status (1)

Country Link
JP (1) JP4918284B2 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5112246B2 (ja) * 2008-10-09 2013-01-09 株式会社日立製作所 ストレージシステム及び通信方法
US8402189B2 (en) 2010-05-13 2013-03-19 Hitachi, Ltd. Information processing apparatus and data transfer method
US9400722B2 (en) * 2011-11-15 2016-07-26 Ge Aviation Systems Llc Method of providing high integrity processing
JP6273972B2 (ja) 2014-03-31 2018-02-07 富士通株式会社 情報処理装置、送受信装置、及び情報処理装置の制御方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4003421B2 (ja) * 2001-08-21 2007-11-07 日本ビクター株式会社 ホットプラグ対応の通信装置、通信方法、通信装置用プログラム、及び通信装置用記録媒体
JP2005223545A (ja) * 2004-02-04 2005-08-18 Matsushita Electric Ind Co Ltd データ伝送機器管理装置

Also Published As

Publication number Publication date
JP2007316755A (ja) 2007-12-06

Similar Documents

Publication Publication Date Title
JP4410190B2 (ja) PCI−Express通信システム
JP4664159B2 (ja) 独立したエラー回復機能を有するスレーブ装置
US8305879B2 (en) Peripheral component switch having automatic link failover
EP2237162B1 (en) PCI.Express communication system and communication method thereof
US9052829B2 (en) Methods and structure for improved I/O shipping in a clustered storage system
AU2007278728B2 (en) Method and apparatus for distributing usb hub functions across a network
JP4536981B2 (ja) 情報信号処理装置及び情報信号処理方法
US6603744B2 (en) Connection establishment method, communication method, state change transmission method, state changing method, wireless apparatus, wireless device, and computer
JP5310175B2 (ja) スイッチシステム、及びスイッチシステムの制御方法
CN109033004B (zh) 一种基于Aurora总线的双机内存数据共享系统
JPH1093635A (ja) ネットワークのトポロジを識別するためのシステムおよび方法
US20130179722A1 (en) Ring topology for compute devices
JPWO2006114822A1 (ja) Dmaコントローラ、ノード、データ転送制御方法、及びプログラム
KR20130045357A (ko) Pci 익스프레스 호환 디바이스의 자원들에 액세스하는 방법 및 시스템
JP4918284B2 (ja) PCI−Express通信システム
US7765357B2 (en) PCI-express communications system
KR20170086484A (ko) 기록 요청 처리 방법, 프로세서, 그리고 컴퓨터
US11940942B2 (en) Peripheral component interconnect express interface device and operating method thereof
KR102033112B1 (ko) Pci 익스프레스 스위치 장치 및 그의 접속 제어 방법
US20080263248A1 (en) Multi-drop extension for a communication protocol
JP6922879B2 (ja) 通信装置、情報処理システム、および通信方法
JP2011113163A (ja) Ioアクセス通信システムにおけるエンドポイント間通信制御装置および方法
JP2004513418A (ja) 標準デバイス・インタフェース
US20240012770A1 (en) Interface device having plurality of ports and method of operating the same
KR20050107724A (ko) 링크-기반 컴퓨팅 시스템 내에서의 i/o 구성 메시징

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090108

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110426

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110624

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120124

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120130

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150203

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4918284

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150