(57)【要約】【課題】スキューバリアブルが有る場合にカットスルー転送を行うこと。【解決手段】複数の伝送路を介してデータ送信装置と接続するデータ受信装置は、前記複数の伝送路ごとに設けられ、前記データ送信装置から受信した受信データのエラーをそれぞれ検出する複数のエラー検出部と、前記複数の伝送路ごとに設けられ、前記受信データをそれぞれ記憶するとともに、通知された読み出しタイミングで読み出し位置から受信データを読み出す複数の記憶部と、前記複数のエラー検出部によるエラー検出結果に基づいて、前記複数の伝送路のいずれかを選択する選択部と、前記選択部が選択した伝送路に対応する記憶部の受信データと、前記伝送路に対応する記憶部以外の記憶部それぞれの受信データとを照合し、照合した結果に基づいて、前記複数の記憶部それぞれに対して、前記読み出しタイミングと前記読み出し位置とする通知部と、を有する。【選択図】図３
2019176263.tif 000002
【特許請求の範囲】
【請求項１】
データ送信装置と、複数の伝送路を介して前記データ送信装置と接続するデータ受信装置と、を備える送受信システムにおいて、
前記データ受信装置は、
前記複数の伝送路ごとに設けられ、前記データ送信装置から受信した受信データのエラーをそれぞれ検出する複数のエラー検出部と、
前記複数の伝送路ごとに設けられ、前記受信データをそれぞれ記憶するとともに、通知された読み出しタイミングで読み出し位置から受信データを読み出す複数の記憶部と、
前記複数のエラー検出部によるエラー検出結果に基づいて、前記複数の伝送路のいずれかを選択する選択部と、
前記選択部が選択した伝送路に対応する記憶部の受信データと、前記伝送路に対応する記憶部以外の記憶部それぞれの受信データとを照合し、照合した結果に基づいて、前記複数の記憶部それぞれに対して、前記読み出しタイミングと前記読み出し位置とを通知する通知部と、
を有する送受信システム。
【請求項２】
前記選択部は、前記複数の伝送路のうち、エラーの検出回数が一番少ない伝送路を選択する請求項１記載の送受信システム。
【請求項３】
前記データ受信装置は、前記複数の伝送路ごとのエラー検出結果を前記データ送信装置に送信する請求項１または２記載の送受信システム。
【請求項４】
複数の伝送路を介して前記データ送信装置と接続するデータ受信装置において、
前記データ受信装置は、
前記複数の伝送路ごとに設けられ、前記データ送信装置から受信した受信データのエラーをそれぞれ検出する複数のエラー検出部と、
前記複数の伝送路ごとに設けられ、前記受信データをそれぞれ記憶するとともに、通知された読み出しタイミングで読み出し位置から受信データを読み出す複数の記憶部と、
前記複数のエラー検出部によるエラー検出結果に基づいて、前記複数の伝送路のいずれかを選択する選択部と、
前記選択部が選択した伝送路に対応する記憶部の受信データと、前記伝送路に対応する記憶部以外の記憶部それぞれの受信データとを照合し、照合した結果に基づいて、前記複数の記憶部それぞれに対して、前記読み出しタイミングと前記読み出し位置とを通知する通知部と、
を有するデータ受信装置。
【請求項５】
複数の伝送路を介して前記データ送信装置と接続するデータ受信装置のデータ受信方法において、
前記データ受信装置が有する、前記複数の伝送路ごとに設けられた複数のエラー検出部が、前記データ送信装置から受信した受信データのエラーをそれぞれ検出し、
前記データ受信装置が有する選択部が、前記複数のエラー検出部によるエラー検出結果に基づいて、前記複数の伝送路のいずれかを選択し、
前記データ受信装置が有する通知部が、前記選択部が選択した伝送路に対応する記憶部の受信データと、前記伝送路に対応する記憶部以外の記憶部それぞれの受信データとを照合し、
前記通知部が、照合した結果に基づいて、前記複数の記憶部それぞれに対して、読み出しタイミングと読み出し位置とを通知し、
前記データ受信装置が有する、前記複数の伝送路ごとに設けられ、前記受信データをそれぞれ記憶する複数の記憶部が、通知された前記読み出しタイミングで前期読み出し位置から受信データを読み出す、
データ受信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、送受信システム、データ受信装置、およびデータ受信方法に関する。
【背景技術】
【０００２】
送信回路と受信回路との間において複数レーンでシリアル通信を行う場合、送信回路は送信データをレーン数の数だけ分割し、分割したデータをそれぞれのレーンに送信する。受信回路は、それぞれのレーンから受信したデータを復元する。
【０００３】
１つの回路で複数のフローのフレームの遅延差を測定する技術が知られている（例えば、特許文献１参照）。また、データパケット交換機の出力側から、パケット交換機内のデータを回送する方法が知られている（例えば、特許文献２参照）。また、配線領域が少なく、異なる冗長構成が可能なネットワーク転送装置が知られている（例えば、特許文献３参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１５−２２８５４１号公報
【特許文献２】特表平８−５１０８７０号公報
【特許文献３】特開２００４−２６０３６８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
受信回路は、それぞれのレーンから受信したデータを複数のバッファそれぞれに記憶し、レーン間のスキューを揃えて複数のバッファからデータを読み出す。
【０００６】
データの転送方式として、ストアアンドフォワード方式とカットスルー方式がある。ストアアンドフォワード方式は、パケットの先頭が到着してからパケット終端の到着の確認後に後段のブロックへパケットを揃えて送出する方式である。カットスルー方式は、複数のパケットの先頭を認識した時点で、後段のブロックにパケットを揃えて出力を開始する方式である。そのため、ストアアンドフォワード方式に比べてレイテンシが小さくなる。
【０００７】
レーン間のスキューが固定であれば、予測される特定のタイミングで投機的に処理することで通信レイテンシを短縮することができ、カットスルー方式の転送（カットスルー転送）が可能である。
【０００８】
しかしながら、例えば、到着したパケット毎にスキューが異なる場合がある。このようなスキューが変化する場合、すなわちskew-variable（スキューバリアブル）が有る場合、カットスルー転送を行うことが困難である。
【０００９】
１つの側面において、本発明は、スキューバリアブルが有る場合にカットスルー転送を行うことを目的とする。
【課題を解決するための手段】
【００１０】
実施の形態の送受信システムは、データ送信装置と、複数の伝送路を介して前記データ送信装置と接続するデータ受信装置と、を備える。
【００１１】
前記データ受信装置は、複数のエラー検出部と、複数の記憶部と、選択部と、通知部と、を有する。
【００１２】
前記複数のエラー検出部は、前記複数の伝送路ごとに設けられ、前記データ送信装置から受信した受信データのエラーをそれぞれ検出する。
【００１３】
前記複数の記憶部は、前記複数の伝送路ごとに設けられ、前記受信データをそれぞれ記憶するとともに、通知された読み出しタイミングで読み出し位置から受信データを読み出す。
【００１４】
前記選択部は、前記複数のエラー検出部によるエラー検出結果に基づいて、前記複数の伝送路のいずれかを選択する。
【００１５】
前記通知部は、前記選択部が選択した伝送路に対応する記憶部の受信データと、前記伝送路に対応する記憶部以外の記憶部それぞれの受信データとを照合する。前記通知部は、照合した結果に基づいて、前記複数の記憶部それぞれに対して、前記読み出しタイミングと前記読み出し位置とを通知する。
【発明の効果】
【００１６】
実施の形態によれば、スキューバリアブルが有る場合にカットスルー転送を行うことができる。
【図面の簡単な説明】
【００１７】
【図１】カットスルー方式およびストアアンドフォワード方式のデータ送信タイミングを示す図である。
【図２】スキューバリアブル無しと有りの場合のカットスルー方式のデータ送信タイミングを示す図である。
【図３】実施の形態のシステムの構成図である。
【図４】実施の形態の送受信部の詳細な構成図である。
【図５】実施の形態のバッファ部の詳細な構成図である。
【図６】実施の形態のマッチ部の詳細な構成図である。
【図７】受信データにエラーが無い場合の受信側のチップのタイミングチャートであ
【図８】受信データにエラーが有る場合の受信側のチップのタイミングチャートである。
【図９】受信データにエラーが有る場合の受信側のチップのタイミングチャートである。
【図１０】比較例の２つのレーンのバッファ部を示す図である。
【図１１】実施の形態の２つのレーンのバッファ部を示す図である。
【図１２】比較例の受信側のチップの構成を示す図である。
【図１３】実施の形態の受信側のチップの構成を示す図である。
【図１４】比較例のシステムの構成図である。
【発明を実施するための形態】
【００１８】
以下、図面を参照しながら実施の形態について説明する。
スキューバリアブルが大きい場合、従来技術ではカットスルー転送が困難である。なぜならタイミング予測が失敗するため、転送されたパケットはデータ壊れてしまい、転送性能はむしろ低下するためである。従来方式の状態多重化によってタイミング予測失敗を防ぐ場合、その際のレーン間同期・マッチング回路の実装に必要な面積が極めて大きくなり、そのために逆に性能が悪化する問題がある。
【００１９】
また、到着タイミング遅延と伝送エラーの区別が不可能であり、結果、エラー波及を限定化できず、性能低下の限定化や継続動作保障が出来ない（ＱｏＳ（Quality of Service）保障不可）。ゆえにこの条件の下で実用的なカットスルー転送が困難である。
【００２０】
レーンの並列数が小さくかつ相対的に回路規模が小さかったため、従来の回路構造（主にPCS（Physical Coding Sublayer）、アラインメント部、symbol-lock部）はスキューバリアブルを無視できた。つまり独立した異なるレーンのデータをマージすることはほぼ無く、またスキューはダイナミックでは無くスタティックであること前提としていた。パケットがそろうタイミングがほぼ固定、つまりスキューバリアブルが無視可能ならばパケットの切れ目（アラインメントマーカー）の位置とタイミングがほぼ固定である。ゆえに、予測される特定のタイミングで投機的に処理することで通信レイテンシを短縮することができる。つまりカットスルー転送される。
【００２１】
しかし、サイクルのずれのようなスキューバリアブルが発生すると、タイミングがそろっていることも保障されておらず、アラインメントマーカーの位置やタイミングの予測も困難である。そのような状態で従来のようなカットスルー機能を有効にして投機的に後段に流すと、そのたまに変化するスキューによりフォーマットの崩れたパケットが後段に流されるため、エラーになる。つまり、転送されたデータは破棄される。破棄されると再送などの訂正が必要であり、転送レイテンシ・帯域において大きなペナルティがかかる。つまりスキューバリアブルが顕在化してくると、従来のようなタイミング予測に基づくカットスルー制御は困難である。
【００２２】
この問題を従来技術で容易に解決できない理由はタイミングの見切りとパケットのエラーに対して対処が難しい点、特にどのようなエラーが来てもある一定のＱｏＳを維持しながらパケット処理タイミングを見切る必要がある点である。例えば、ある周期的な一時故障によりシステムダウンをしてはならず、継続動作することを保障しなければならない点を考慮する必要があることに注意しなければならない。
【００２３】
スキューバリアブルが大きい状況ではアラインメントマーカーがそろうタイミングは確定しない、つまりタイミングを固定的に見切る起因は無い。ゆえにカットスルーで送り出すタイミングは固定的には得られない。根本的には全レーンに期待データがそろった瞬間に開始可能なため、基本的には全レーンで期待値マッチングをすることになり、それはタイミングが固定的ではなく動的になることを意味する。また揃うまでのタイミングが各レーンで異なり、つまりカットスルー制御するならばその分のバッファを用意することになる。
【００２４】
また、受信側に到着したデータはそもそも壊れている可能性があり、適切に破棄しなければ、壊れパケットのデータが制御を狂わせてしまう。最も簡易な制御は各レーンに到着したデータをデータの中身を確認せずに到着順に読み出すことである。しかし、ある一つのデータが壊れて抜けてしまうと、受信側各レーンの本来あるべきパケットの組み合わせがずれてしまい、そしてずれたままになる。そのため、制御情報の再調整が無ければ以後永久にエラーし続け、通信路がハングしてしまう。つまり、到着パケットの中身を相互に確認しあう、つまり何らかのマッチングを取る必要がある。
【００２５】
従来技術の受信タイミングの先頭をそろえるためのバッファと、各レーンの中身を確認しあうマッチング回路のサイズは非常に大きい。特にマッチング回路はレーン数の全体全マッチングであり、それをタイミングバッファ分用意するためである。この回路を縮小しようとしても、どのレーンが物理故障により縮退するかわからないため、単純な回路除去は耐故障性の喪失に至ってしまう。
【００２６】
図１は、カットスルー方式およびストアアンドフォワード方式のデータ送信タイミングを示す図である。
【００２７】
図１の上段の上側はレーン０のバッファの受信データと受信タイミングを示し、下側はレーン１のバッファの受信データと受信タイミングを示す。図１では、バッファは右側から順にデータを受信しており、右側にあるデータほど先に受信されていることを示す。
【００２８】
レーン０のバッファは、受信データとして、４つのパケット（第１のパケット〜第４のパケット）を順に受信し、格納する。第１のパケットは、ヘッダＨ０Ａと２つのデータＤと最終データＥを含む。第２のパケットは、ヘッダＨ０Ｂと２つのデータＤと最終データＥを含む。第３のパケットは、ヘッダＨ０Ｃと３つのデータＤと最終データＥを含む。第４のパケットは、ヘッダＨ０Ｄと１つのデータＤと最終データＥを含む。
【００２９】
レーン１のバッファは、受信データとして４つのパケット（第５のパケット〜第８のパケット）を順に受信し、格納する。第５のパケットは、ヘッダＨ１Ａと２つのデータＤと最終データＥを含む。第６のパケットは、ヘッダＨ１Ｂと２つのデータＤと最終データＥを含む。第７のパケットは、ヘッダＨ１Ｃと３つのデータＤと最終データＥを含む。第８のパケットは、ヘッダＨ１Ｄと１つのデータＤと最終データＥを含む。
【００３０】
第１のパケットと第５のパケット、第２のパケットと第６のパケット、第３のパケットと第７のパケット、第４のパケットと第８のパケットは、それぞれタイミングを揃えて出力されるべきデータである。
【００３１】
また、レーン１の受信データの受信タイミングはレーン０の受信データの受信タイミングに比べて２サイクル遅延している。
【００３２】
図１の中段は、カットスルー方式の送信タイミングを示す。
図１の中段において、カットスルー方式を用いて、レーン０とレーン１の受信データのスキューを揃えて出力するとする。
【００３３】
時刻ｔ１において、第１のパケットのヘッダＨ０Ａの受信が判定され、時刻ｔ２において、第５のパケットのヘッダＨ１Ａの受信が判定される。カットスルー方式では、両方のパケットの先頭（ヘッダ）が受信された時点で、後段にパケットを揃えて出力を開始する。よって、時刻ｔ２において、レーン０のバッファからヘッダＨ０Ａから順に受信データの出力が開始され、レーン１のバッファからヘッダＨ１Ａから順に受信データの出力が開始される。
【００３４】
図１の下段は、ストアアンドフォワード方式の送信タイミングを示す。
図１の下段において、ストアアンドフォワード方式を用いて、レーン０とレーン１の受信データのスキューを揃えて出力するとする。
【００３５】
時刻ｔ３において、第１のパケットの最終データＥの受信が判定され、時刻ｔ４において、第５のパケットの最終データＥの受信が判定される。ストアアンドフォワード方式では、両方のパケットの最終データが受信された時点で、後段にパケットを揃えて出力を開始する。よって、時刻ｔ４において、レーン０のバッファからヘッダＨ０Ａから順に受信データの出力が開始され、レーン１のバッファからヘッダＨ１Ａから順に受信データの出力が開始される。
【００３６】
図１において、カットスルー方式はストアアンドフォワード方式に比べて３サイクル早く後段にパケットを出力しており、転送レイテンシが優れている。ただしカットスルー方式はパケットが壊れているかどうか確認せずに後段に出力するため、最終的にエラーとなるケースもあり、エラー破棄（無効化）指示をする場合がある。回路規模が巨大かつ処理が複雑になるにつれ、エラー破棄指示の通知が遅れてエラーの波及を止めることが難しくなる。処理の単純化と回路規模の縮小はカットスルー方式の実装をより容易にする。
【００３７】
図２は、スキューバリアブル無しと有りの場合のカットスルー方式のデータ送信タイミングを示す図である。
【００３８】
図２の上段は、レーン０のバッファの受信データと受信タイミングを示す。
図２の中段は、スキューバリアブル無しの場合のレーン１のバッファの受信データと受信タイミングを示す。図２の中段は、スキューバリアブルが無い場合、すなわちスキューが固定されている場合を示す。図２の中段において、レーン１の受信データの受信タイミングはレーン０の受信データの受信タイミングに比べて２サイクル遅延している。
【００３９】
尚、図２のレーン０およびレーン１の受信データは、図１のレーン０およびレーン１の受信データと同様である。
【００４０】
レーン１のバッファの受信データと受信タイミングが図２の中段に示されるような場合、カットスルー方式を用いて、レーン０とレーン１の受信データのスキューを揃えて出力するとする。
【００４１】
時刻ｔ１において、第５のパケットのヘッダＨ１Ａの受信が判定され、時刻ｔ１より以前に第１のパケットのヘッダＨ０Ａが受信されている。
【００４２】
この場合、両方のパケットの先頭（ヘッダ）を受信した時点で、後段にパケットを揃えて出力を開始する。よって、時刻ｔ２において、レーン０のバッファからヘッダＨ０Ａから順に受信データの出力が開始され、レーン１のバッファからヘッダＨ１Ａから順に受信データの出力が開始される。
【００４３】
図２の下段は、スキューバリアブル有りの場合のレーン１のバッファの受信データと受信タイミングを示す。図２の下段は、スキューバリアブルが有る場合、すなわちスキューが変化する場合を示す。図２の下段の３つのレーン１の受信データは、上から順に、レーン１の受信データの受信タイミングがレーン０の受信データの受信タイミングに比べてそれぞれ１〜３サイクル遅延している場合を示す。
【００４４】
レーン１の受信データの受信タイミングがレーン０の受信データの受信タイミングに比べて１サイクル遅延している場合、時刻ｔ’１において、第５のパケットのヘッダＨ１Ａの受信が判定される。そして、時刻ｔ’１において、レーン０のバッファからヘッダＨ０Ａから順に受信データの出力が開始され、レーン１のバッファからヘッダＨ１Ａから順に受信データの出力が開始される。
【００４５】
レーン１の受信データの受信タイミングがレーン０の受信データの受信タイミングに比べて２サイクル遅延している場合、時刻ｔ’２において、第５のパケットのヘッダＨ１Ａの受信が判定される。そして、時刻ｔ’２において、レーン０のバッファからヘッダＨ０Ａから順に受信データの出力が開始され、レーン１のバッファからヘッダＨ１Ａから順に受信データの出力が開始される。
【００４６】
レーン１の受信データの受信タイミングがレーン０の受信データの受信タイミングに比べて３サイクル遅延している場合、時刻ｔ’３において、第５のパケットのヘッダＨ１Ａの受信が判定される。そして、時刻ｔ’３において、レーン０のバッファからヘッダＨ０Ａから順に受信データの出力が開始され、レーン１のバッファからヘッダＨ１Ａから順に受信データの出力が開始される。
【００４７】
スキューバリアブルが無い環境では、レーン間でスキューが発生することはあっても、固定的なスキューであり、一度確定するとほぼその状態のままである。スキューが固定である場合、カットスルータイミングは、先に受信した受信データの受信タイミングより一定期間後であり、それ以外はエラー（壊れパケットの到着）と判定して処理してよい。
【００４８】
スキューバリアブルが有る場合、パケットの到着毎にスキューが異なる可能性がある。
スキューバリアブルが有る場合、後続の他のレーンのデータの受信タイミングは前に到着したレーンのデータの受信タイミングより何サイクル後に来るのかが不明である。そもそも、データが来たからと処理を開始してよいとは限らず、また正しいデータは実はそのすぐ後で来る可能性もある。ゆえに現在到着したデータを用いて、出力を開始してよいと確定することは困難である。ゆえに、スキューバリアブルが有る場合、受信側では、ある程度の量のデータを格納しておき、その中から最適なものを選んでいる。スキューバリアブルが有る場合、自身も相手もスキューがぶれている点に注意する必要がある。相互にタイミングがずれている中でそのタイミングの直後が真の読出しタイミングの可能性がある点、つまり読出しタイミングが確定しづらいという問題がある。
【００４９】
図３は、実施の形態のシステムの構成図である。
システム１０１は、チップ２０１，３０１を有する。チップ２０１、３０１は、例えば、ＬＳＩ（Large-Scale Integration）等の回路である。チップ２０１、３０１は、データ送信装置またはデータ受信装置の一例である。
【００５０】
チップ２０１とチップ３０１は、複数のレーン４０１−ｉ（ｉ＝０〜３）を介して接続されている。レーンは、伝送路の一例である。チップ２０１とチップ３０１は、複数のレーン４０１−ｉを用いたシリアル通信によりデータの送受信を行う。チップ２０１からチップ３０１へデータを送信する場合、チップ２０１は送信データをレーン数に分割して複数のパケットを生成し、生成した複数のパケットそれぞれを対応するレーン４０１−ｉでチップ３０１に送信する。例えば、あるデータが分割されて４つのパケットＰｉが生成されると、パケットＰｉはレーン４０１−ｉを介してチップ３０１に送信される。すなわち、パケットごとに異なるレーンでチップ３０１に送信される。チップ３０１は、受信した複数のパケットから送信データを復元する。また、チップ３０１からチップ２０１へ送信データを送信する場合も同様に、チップ３０１はデータをレーン数に分割して複数のパケットを生成し、生成した複数のパケットそれぞれを対応するレーン４０１−ｉでチップ２０１に送信する。チップ２０１は、受信した複数のパケットから送信データを復元する。
【００５１】
チップ２０１は、レーン固有部２１１−ｉ、レーン選択部２８１、およびマッチ部２９１を有する。
【００５２】
レーン固有部２１１−ｉは、送受信部２２１−ｉおよびバッファ部２３１−ｉを有する。
【００５３】
送受信部２２１−ｉは、レーン４０１−ｉを介してチップ３０１からパケットを受信する。送受信部２２１−ｉは、受信したパケットをバッファ部２３１−ｉに転送し、受信したパケットのエラーを検出し、エラー情報をレーン選択部２８１に出力する。送受信部２２１−ｉには、エラー情報に用いられる上位ファームウェアからの情報（アラーム）が入力される。送受信部２２１−ｉは、レーン４０１−ｉを介してチップ３０１にパケットを送信する。
【００５４】
バッファ部２３１−ｉは、受信したデータを記憶する。バッファ部２３１−ｉは、マッチ部２９１から受信した制御信号に基づいて、自身に格納されているデータを読み出し、チップ２０１内の後段の処理部（不図示）に出力する。これにより、レーン固有部２１１−ｉからスキューが揃ったデータが出力される。バッファ部２３１−ｉは、例えば、ＦＩＦＯ（First-In First-Out）やＲＡＭ（Random Access Memory）等である。バッファ部２３１−ｉは、記憶部の一例である。
【００５５】
レーン選択部２８１は、送受信部２２１−ｉから受信したエラー情報に基づいて、レーン４０１−ｉのいずれかを選択し、選択したレーンを示す選択信号をマッチ部に出力する。レーン選択部２８１は、選択部の一例である。
【００５６】
マッチ部２９１は、バッファ部２３１−ｉから受信したエントリとレーン選択部２８１から受信した選択信号とに基づいて、バッファ部２３１−ｉそれぞれのデータの読み出し位置を示すリードポインタ値を算出する。マッチ部２９１は、データの読み出し位置を示すリードポインタ値と読み出しタイミングとを含み、データの読み出しを指示する制御情報をバッファ部２３１−ｉに送信する。マッチ部２９１は、通知部の一例である。
【００５７】
チップ３０１は、レーン固有部３１１−ｉ、レーン選択部３８１、およびマッチ部３９１を有する。レーン固有部３１１−ｉは、送受信部３２１−ｉおよびバッファ部３３１−ｉを有する。送受信部３２１−ｉ、バッファ部３３１−ｉ、レーン選択部３８１、およびマッチ部３９１の機能は、送受信部２２１−ｉ、バッファ部２３１−ｉ、レーン選択部２８１、およびマッチ部２９１の機能とそれぞれ同様であるため、説明は省略する。
【００５８】
図４は、実施の形態の送受信部の詳細な構成図である。
送受信部２２１−ｉは、エラー検出部２２２−ｉ、エラー分析部２２３−ｉ、送信部２２４−ｉ、およびレーン選択情報出力部２２５−ｉを有する。
【００５９】
送受信部２２１−ｉが受信したパケットは、エラー検出部２２２−ｉおよびバッファ部２３１−ｉに転送される。
【００６０】
エラー検出部２２２−ｉは、受信したパケットのエラーを検出し、検出結果をバッファ部２３１−ｉおよび分析部２２３−ｉに出力する。
【００６１】
エラー分析部２２３−ｉは、エラー検出部２２２−ｉからの検出結果の統計処理を行う。エラー分析部２２３−ｉは、例えば、一定期間ごとのエラーの検出回数をカウントし、保存する。エラー分析部２２３−ｉは、例えば、エラーの検出回数を内部レジスタでインクリメントしておき、外部からのリセット信号の受信によりリセットする。エラー分析部２２３−ｉは、例えば、一定期間ごとのエラーの検出回数を分析結果として送信部２２４−ｉおよびレーン選択情報出力部２２５−ｉに出力する。
【００６２】
送信部２２４−ｉは、送信データ、アラーム（Send）、またはエラー分析部２２３−ｉの分析結果を含むパケットを生成し、チップ３０１の送受信部３２１−ｉに送信する。送信データはチップ３０１に送信されるデータである。アラーム（Send）は、チップ３０１がパケットの送信に用いるレーン４０１−ｉの選択に用いられる情報である。アラーム（Send）は、例えば、レーン４０１−ｉを使用しないように指示する情報である。送信側のチップ３０１は、例えば、あるレーン４０１−ｉの送信部２２４−ｉから受信したエラーの検出回数が閾値以上である場合、当該レーン４０１−ｉを使用しないようにする。それにより、受信データのエラーの発生を抑制することができる。
【００６３】
レーン選択情報出力部２２５−ｉは、エラー分析部２２３−ｉの分析結果を受信する。また、レーン選択情報出力部２２５−ｉは、さらにアラーム（Self）を受信してもよい。
アラーム（Self）は、例えば、上位ファームウェアで検知されるチップ２０１やレーン４０１−ｉの異常やレーン４０１−ｉの使用不可を示す情報である。アラーム（Self）は、例えば、レーン４０１−ｉを使用しないように指示する情報であり、所定値（非常に大きな値）のエラーの検出回数を示す。
【００６４】
レーン選択情報出力部２２５−ｉは、分析結果およびアラーム（Self）に基づいて、エラー情報をレーン選択部２８１に出力する。エラー情報は、例えば、エラー分析部２２３−ｉの分析結果が示す一定期間ごとのエラーの検出回数である。また、エラー情報は、例えば、アラーム（Self）が示す所定値のエラーの検出回数である。また、エラー情報は、例えば、エラー分析部２２３−ｉの分析結果が示す一定期間ごとのエラーの検出回数とアラーム（Self）が示すエラーの検出回数との合計である。
【００６５】
図５は、実施の形態のバッファ部の詳細な構成図である。
バッファ部２３１−ｉは、ブロック部２３２−ｉおよびリードポインタ２３３−ｉを有する。
【００６６】
ブロック部２３２−ｉは、送受信部２２１−ｉから受信したパケットを到着順に記憶する。ブロック部２３２−ｉは、エラー検出部２２２−ｉから検出結果としてパケットエラーの検出の通知を受信すると、当該パケットにエラーマークを付けて破棄する。ブロック部２３２−ｉは、記憶したパケットのヘッダを検出し、ヘッダをエントリとしてマッチ部２９１に出力する。また、エントリには、ヘッダのブロック部２３２−ｉにおける位置（ポインタ値）が付加される。尚、ブロック部２３２−ｉは、複数のパケットを記憶している場合、各パケットのヘッダを検出し、複数のヘッダをエントリとしてマッチ部２９１に出力する。
【００６７】
ブロック部２３２−ｉは、マッチ部２９１からの読み出し指示に従って、パケットを読み出して、後段の処理部（不図示）に出力する。読み出し指示には、ブロック部２３２−ｉの読み出し位置を示すリードポインタ値と、読み出しタイミングと、が含まれる。
【００６８】
リードポインタ２３３−ｉは、マッチ部２９１から受信した読み出し指示をブロック部２３２−ｉに出力する。
【００６９】
図６は、実施の形態のマッチ部の詳細な構成図である。
マッチ部２９１は、セレクタ２９２、照合部２９３、および制御部２９４を有する。
【００７０】
レーン選択部２８１は、送受信部２２１−ｉそれぞれからエラー情報を受信し、エラー情報に基づいて、レーン４０１−ｉのいずれかを選択する。詳細には、レーン選択部２８１は、エラー検出回数が一番少ないエラー情報を送信した送受信部２２１−ｉのレーン４０１−ｉを選択する。また、レーン選択部２８１は、エラー検出回数が閾値以下のエラー情報を送信した送受信部２２１−ｉのレーン４０１−ｉから、ＬＲＵ（Least Recently Used）やラウンドロビンを用いてレーン４０１−ｉを選択してもよい。レーン選択部２８１は、選択したレーン４０１−ｉを示す選択情報をセレクタ２９２に出力する。
【００７１】
セレクタ２９２は、レーン選択部２８１から選択情報、およびバッファ部２３１−ｉそれぞれからエントリを受信する。セレクタ２９２は、受診したエントリのうち、選択情報が示すレーン４０１−ｉのバッファ２３１−ｉから受信したエントリを選択し、選択したエントリを照合部２９３に出力する。すなわち、受信パケットのエラーが一番少ないレーンのエントリが照合部２９３におけるマッチングの主軸となる。
【００７２】
照合部２９３は、セレクタ２９２により選択されたエントリ、およびバッファ部２３１−ｉそれぞれからエントリを受信する。照合部２９３は、セレクタ２９２により選択されたエントリとバッファ部２３１−ｉそれぞれのエントリとのマッチング（照合）を行う。照合部２９３は、選択されたエントリとマッチするエントリをバッファ部２３１−ｉそれぞれのエントリから見つける。選択されたエントリとマッチするエントリとは、選択されたエントリと同じタイミングで読み出されるべきエントリである。例えば、同じタイミングで読み出されるべき複数のパケットのヘッダそれぞれには、共通の識別子が含まれている。よって、マッチング対象のエントリに選択されたエントリに含まれる識別子と同じ識別子を含むか判定することにより、同じタイミングで読み出されるべきエントリを見つけることができる。
【００７３】
選択されたレーンを除く全てのレーンのバッファ部２３１−ｉのエントリから選択されたエントリとマッチするエントリが見つかった場合、制御部２９４は、選択されたエントリとマッチするエントリのブロック部２３２−ｉにおける位置（読み出し位置）を示すリードポインタ値と読み出しタイミングとを含む読み出し指示をバッファ部２３１−ｉに出力する。制御部２９４は、例えば、読み出しタイミングを現在から所定のサイクル後に決定する。
【００７４】
図７は、受信データにエラーが無い場合の受信側のチップのタイミングチャートである。図７において、受信側のチップは、チップ２０１とする。
【００７５】
図７において、ＩＮ（Ｌｉ）はレーン４０１−ｉからのレーン固有部２１１−ｉへの入力データを示し、Ｈはヘッダ（先頭）、Ｄはデータ（先頭でも最終でもない）、Ｅは最終データ、バー（−）はデータ無しを示す。尚、ヘッダＨ、１つ以上のデータＤ、および最終データＥにより１つのパケットが構成される。
【００７６】
ＳＲ（Ｌｉ）はレーン４０１−ｉの受信データのエラーに関する情報を示す。ＥＤはエラー検出部２２２−ｉ、ＥＡはエラー分析部２２３−ｉ、ＬＳＩはレーン選択情報出力部２２５−ｉそれぞれの出力を示す。図７では、受信データにエラーが無いため、ＥＤ、ＥＡ、およびＬＳＩは、アクティブにはならず、空白である。
【００７７】
ＢＦ（Ｌｉ）はレーン４０１−ｉのバッファ部２３１−ｉを示し、Ｅはブロック部２３２−ｉへの書き込み、ＲＤマッチ部２９１からの指示による読出しを示す。
【００７８】
ＭＣはマッチ部２９１を示す。ＬＳはレーン選択部２８１からの選択情報を示し、ＣＴは制御部２９４の読み出し指示（コントロール）を示す。図７において、ＬＳはレーン４０１−０を示す「０」となっている。
【００７９】
ＯＵＴ（ａｌｌ）はバッファ部２３１−ｉ全ての出力を示し、図７ではある時刻において４つのデータが同期して読み出される。
【００８０】
図７では、レーン固有部２１１−０へ入力される１番目のパケット（Ｈ１，Ｄ１，Ｄ５、Ｅ１）、レーン固有部２１１−１へ入力される１番目のパケット（Ｈ２，Ｄ２，Ｄ６、Ｅ２）、およびレーン固有部２１１−２へ入力される１番目のパケット（Ｈ３，Ｄ３，Ｄ７、Ｅ３）、は同じタイミングでレーン固有部２１１−０〜２１１−２へそれぞれ到着している。レーン固有部２１１−３へ入力される１番目のパケット（Ｈ４，Ｄ４，Ｄ８、Ｅ４）は、レーン固有部２１１−０〜２１１−２の１番目のパケットに比べて１サイクル遅れてレーン固有部２１１−３へ到着している。
【００８１】
レーン固有部２１１−０へ入力される２番目のパケット（Ｈ５，Ｄ９、Ｅ５）、レーン固有部２１１−１へ入力される２番目のパケット（Ｈ６，Ｄ１０，Ｅ６）、およびレーン固有部２１１−２へ入力される２番目のパケット（Ｈ７，Ｄ１１，Ｅ７）、は同じタイミングでレーン固有部２１１−０〜２１１−２へそれぞれ到着している。レーン固有部２１１−３へ入力される２番目のパケット（Ｈ８，Ｄ１２，Ｅ８）は、レーン固有部２１１−０〜２１１−２の２番目のパケットに比べて１サイクル遅れてレーン固有部２１１−３へ到着している。
【００８２】
レーン固有部２１１−０へ入力される３番目のパケット（Ｈ９，Ｄ１３，Ｄ１７、Ｅ９）、およびレーン固有部２１１−１へ入力される３番目のパケット（Ｈ１０，Ｄ１４，Ｄ１８、Ｅ１０）、は同じタイミングでレーン固有部２１１−０〜２１１−１へそれぞれ到着している。
【００８３】
レーン固有部２１１−２へ入力される３番目のパケット（Ｈ１１，Ｄ１５，Ｄ１９、Ｅ１１）、およびレーン固有部２１１−３へ入力される３番目のパケット（Ｈ１２，Ｄ１６，Ｄ２０、Ｅ１２）は、レーン固有部２１１−０〜２１１−１の３番目のパケットに比べて１サイクル遅れてそれぞれレーン固有部２１１−２〜２１１−３へ到着している。
【００８４】
レーン固有部２１１−ｉそれぞれに入力された１番目のパケットは、バッファ部２３１−ｉから同期して読み出されるべきデータである。レーン固有部２１１−ｉそれぞれに入力された２番目のパケットは、バッファ部２３１−ｉから同期して読み出されるべきデータである。レーン固有部２１１−ｉそれぞれに入力された３番目のパケットは、バッファ部２３１−ｉから同期して読み出されるべきデータである。
【００８５】
レーン固有部２１１−ｉそれぞれにパケットが入力されると、パケットはバッファ部２３１−ｉに転送され、ブロック部２３２−ｉへ書き込まれる。時刻ｔ３において、ブロック部２３２−０〜２３２−２にヘッダＨ１〜Ｈ３がそれぞれ書き込まれる。時刻ｔ４において、ブロック部２３２−３にヘッダＨ３が書き込まれる。ヘッダＨ１〜Ｈ４は、エントリとしてマッチ部２９１に入力される。
【００８６】
時刻ｔ３において、選択情報ＬＳはレーン４０１−０を示す「０」であるため、マッチ部２９１において、ヘッダＨ１が主軸として選択される。
【００８７】
マッチ部２９１において、ヘッダＨ１とマッチするエントリとしてヘッダＨ２〜Ｈ３が見つかる。ヘッダＨ１〜Ｈ３より１サイクル後でヘッダＨ４がマッチ部２９１に入力されると、ヘッダＨ１とマッチするエントリとしてヘッダＨ４が見つかる。よって、選択されたレーン４０１−０を除く全てのレーンのバッファ部２３１−ｉのエントリから、選択されたエントリ（ヘッダＨ１）とマッチするエントリ（Ｈ２〜Ｈ４）が見つかる。
【００８８】
マッチ部２９１は、時刻ｔ５において、読み出し指示ＣＴをバッファ部２３１−ｉそれぞれに送信する。バッファ部２３１−０への読み出し指示ＣＴは、ヘッダＨ１のブロック部２３２−０における位置と読み出しタイミング（時刻ｔ６）を含む。バッファ部２３１−１への読み出し指示ＣＴは、ヘッダＨ２のブロック部２３２−１における位置と読み出しタイミング（時刻ｔ６）を含む。バッファ部２３１−２への読み出し指示ＣＴは、ヘッダＨ３のブロック部２３２−２における位置と読み出しタイミング（時刻ｔ６）を含む。バッファ部２３１−３への読み出し指示ＣＴは、ヘッダＨ４のブロック部２３２−３における位置と読み出しタイミング（時刻ｔ６）を含む。
【００８９】
バッファ部２３１−ｉは、読み出し指示ＣＴに基づいて、時刻ｔ６でヘッダＨ１〜Ｈ４（＝Ｈ１−４）をそれぞれ読み出して出力する。以下、バッファ部２３１−ｉは、各パケットのヘッダＨ１〜Ｈ４以降のデータ（Ｄ１〜Ｄ４（＝Ｄ１−４），Ｄ５〜Ｄ８（＝Ｄ５−８），Ｅ１〜Ｅ４（＝Ｅ１−４））をそれぞれ同期して読み出して出力する。
【００９０】
また、レーン固有部２１１−ｉへ入力される２番目のパケットについても同様にブロック部２３２−ｉへ書き込みやマッチ部２９１によるエントリのマッチングが行われる。そして、時刻ｔ１０でヘッダＨ５〜Ｈ８（＝Ｈ５−８）がバッファ部２３１−ｉそれぞれから読み出されて出力される。
【００９１】
レーン固有部２１１−ｉへ入力される３番目のパケットについても同様にブロック部２３２−ｉへ書き込みやマッチ部２９１によるエントリのマッチングが行われる。
【００９２】
マッチ部２９１において、ヘッダＨ９とマッチするエントリとしてヘッダＨ１０が見つかる。レーン固有部２１１−２、２１１−３へ入力される３番目のパケットは、レーン固有部２１１−０、２１１−１の３番目のパケットに比べて１サイクル遅れて到着している。
【００９３】
ヘッダＨ９、Ｈ１０より１サイクル後でヘッダＨ１１，Ｈ１２がマッチ部２９１に入力されると、ヘッダＨ９とマッチするエントリとしてヘッダＨ１１，Ｈ１２が見つかる。よって、選択されたレーン４０１−０を除く全てのレーンのバッファ部２３１−ｉのエントリから、選択されたエントリ（ヘッダＨ９）とマッチするエントリ（Ｈ１０〜Ｈ１２）が見つかる。
【００９４】
マッチ部２９１は、時刻ｔ１３において、読み出し指示ＣＴをバッファ部２３１−ｉそれぞれに送信する。バッファ部２３１−０への読み出し指示ＣＴは、ヘッダＨ９のブロック部２３２−０における位置と読み出しタイミング（時刻ｔ１４）を含む。バッファ部２３１−１への読み出し指示ＣＴは、ヘッダＨ１０のブロック部２３２−１における位置と読み出しタイミング（時刻ｔ１４）を含む。バッファ部２３１−２への読み出し指示ＣＴは、ヘッダＨ１１のブロック部２３２−２における位置と読み出しタイミング（時刻ｔ１４）を含む。バッファ部２３１−３への読み出し指示ＣＴは、ヘッダＨ１２のブロック部２３２−３における位置と読み出しタイミング（時刻ｔ１４）を含む。
【００９５】
バッファ部２３１−ｉは、読み出し指示に基づいて、時刻ｔ１４でヘッダＨ９〜Ｈ１２（＝Ｈ９−１２）をそれぞれ読み出して出力する。
【００９６】
図８は、受信データにエラーが有る場合の受信側のチップのタイミングチャートである。図８において、受信側のチップは、チップ２０１とする。
【００９７】
図８において、ＩＮ（Ｌｉ）はレーン４０１−ｉからのレーン固有部２１１−ｉへの入力データを示し、Ｈはヘッダ（先頭）、Ｄはデータ（先頭でも最終でもない）、Ｅは最終データ、バー（−）はデータ無しを示す。尚、ヘッダＨ、１つ以上のデータＤ、および最終データＥにより１つのパケットが構成される。レーン固有部２１１−ｉへ入力されるデータとタイミングは図７と同様である。
【００９８】
ＳＲ（Ｌｉ）はレーン４０１−ｉの受信データのエラーに関する情報を示す。ＥＤはエラー検出部２２２−ｉ、ＥＡはエラー分析部２２３−ｉ、ＬＳＩはレーン選択情報出力部２２５−ｉそれぞれの出力を示す。ＥＤ＝Ｅｒは、エラーを検出したことを示す。ＥＡ＝ｘ，ＬＳＩ＝ｘ（ｘは０以上の正数）は、エラー分析部２２３−ｉがカウントしているエラーの検出回数を示す。また、エラーの検出は、パケットの最終データＥに付随するＣＲＣ（Cyclic Redundancy Check）を用いて行われる。
【００９９】
ＵＰＤＴは、エラー分析部２２３−ｉへのリセット信号である。エラー分析部２２３−ｉは、リセット信号を受信すると、カウントしているエラーの検出回数を０にリセットする。ＵＰＤＴ＝１は、リセット信号がオンであることを示す。リセットをしない場合には極めて古い（例えば過去数か月間のデータ）を用いてレーンが選択されるため、不適切である。
【０１００】
ＭＣはマッチ部２９１を示す。ＬＳはレーン選択部２８１からの選択情報を示す。図８において、ＬＳの初期値はレーン４０１−０を示す「０」となっている。
【０１０１】
時刻ｔ５において、エラー検出部２２２−０でレーン固有部２１１−０へ入力された１番目のパケットのエラーが検出される（ＥＤ＝Ｅｒ）。時刻ｔ６において、エラー分析部２２３−０によるエラーの検出回数が１加算され、エラー分析部２２３−０による出力はＥＡ＝１となり、レーン選択情報出力部２２５−０の出力はＬＳＩ＝１となる。
【０１０２】
また、時刻ｔ５において、エラー検出部２２２−２でレーン固有部２１１−２へ入力された１番目のパケットのエラーが検出される（ＥＤ＝Ｅｒ）。時刻ｔ６において、エラー分析部２２３−２によるエラーの検出回数が１加算され、エラー分析部２２３−２による出力はＥＡ＝１となり、レーン選択情報出力部２２５−２の出力はＬＳＩ＝１となる。
【０１０３】
時刻ｔ８において、エラー検出部２２２−１でレーン固有部２１１−１へ入力された２番目のパケットのエラーが検出される（ＥＤ＝Ｅｒ）。時刻ｔ９において、エラー分析部２２３−１によるエラーの検出回数が１加算され、エラー分析部２２３−１による出力はＥＡ＝１となり、レーン選択情報出力部２２５−１の出力はＬＳＩ＝１となる。
【０１０４】
また、時刻ｔ８において、エラー検出部２２２−２でレーン固有部２１１−２へ入力された２番目のパケットのエラーが検出される（ＥＤ＝Ｅｒ）。時刻ｔ９において、エラー分析部２２３−２によるエラーの検出回数が１加算され、エラー分析部２２３−２による出力はＥＡ＝２となり、レーン選択情報出力部２２５−２の出力はＬＳＩ＝２となる。
【０１０５】
時刻ｔ９において、リセット信号がオン（ＵＰＤＴ＝１）となる。エラー分析部２２３−ｉは、リセット信号を受信すると、カウントしているエラーの検出回数を０にリセットする。これにより、時刻ｔ１０において、エラー分析部２２３−ｉの出力ＥＡ、およびレーン選択情報出力部２２５−ｉの出力ＬＳＩは、０にリセットされる。
【０１０６】
また、時刻ｔ９において、レーン選択部２８１は、リセット信号のオンに応じて、レーン選択情報出力部２２５−０〜２２５−３の出力ＬＳＩのうち最小の値を検出し、受信データのエラーの検出回数が最小のレーンを選択する。レーン選択情報出力部２２５−０〜２２５−３の出力ＬＳＩのうち、最小の値はレーン選択情報出力部２２５−３の出力（＝０）である。
【０１０７】
よって、時刻ｔ１０において、レーン選択部２８１は、レーン４０１−３を選択し、ＬＳはレーン４０１−３を示す「３」となる。
【０１０８】
時刻ｔ１３において、エラー検出部２２２−０でレーン固有部２１１−０へ入力された３番目のパケットのエラーが検出される（ＥＤ＝Ｅｒ）。時刻ｔ１４において、エラー分析部２２３−０によるエラーの検出回数が１加算され、エラー分析部２２３−０による出力はＥＡ＝１となり、レーン選択情報出力部２２５−０の出力はＬＳＩ＝１となる。
【０１０９】
図９は、受信データにエラーが有る場合の受信側のチップのタイミングチャートである。図９において、受信側のチップは、チップ２０１とする。図９では、図８と同様のエラー検出の状況におけるマッチ部２９１によるマッチングを説明する。
【０１１０】
図９において、ＩＮ（Ｌｉ）はレーン４０１−ｉからのレーン固有部２１１−ｉへの入力データを示し、Ｈはヘッダ（先頭）、Ｄはデータ（先頭でも最終でもない）、Ｅは最終データ、バー（−）はデータ無しを示す。尚、ヘッダＨ、１つ以上のデータＤ、および最終データＥにより１つのパケットが構成される。レーン固有部２１１−ｉへ入力されるデータとタイミングは図７と同様である。
【０１１１】
ＳＲ（Ｌｉ）はレーン４０１−ｉの受信データのエラーに関する情報を示す。ＥＤはエラー検出部２２２−ｉ、ＥＡはエラー分析部２２３−ｉ、ＬＳＩはレーン選択情報出力部２２５−ｉそれぞれの出力を示す。ＥＤ＝Ｅｒは、エラーを検出したことを示す。ＥＡ＝ｘ，ＬＳＩ＝ｘ（ｘは０以上の正数）は、エラー分析部２２３−ｉがカウントしているエラーの検出回数を示す。また、エラーの検出は、パケットの最終データＥに付随するＣＲＣ（Cyclic Redundancy Check）を用いて行われる。図９のＳＲ（Ｌｉ）は図８のＳＲ（Ｌｉ）と同様である。図９では、ＳＲ（Ｌ０）のみ記載し、ＳＲ（Ｌ１）〜ＳＲ（Ｌ３）の記載は省略している。
【０１１２】
ＢＦ（Ｌｉ）はレーン４０１−ｉのバッファ部２３１−ｉを示し、Ｅはブロック部２３２−ｉへの書き込み、ＲＤマッチ部２９１からの指示による読出しを示す。ＭＣはマッチ部２９１を示す。ＬＳはレーン選択部２８１からの選択情報を示す。
【０１１３】
ＭＣはマッチ部２９１を示す。ＬＳはレーン選択部２８１からの選択情報を示し、ＣＴは制御部２９４の読み出し指示（コントロール）を示す。図９において、ＬＳの初期値はレーン４０１−０を示す「０」となっている。
【０１１４】
ＯＵＴ（ａｌｌ）はバッファ部２３１−ｉ全ての出力を示し、図９ではある時刻において４つのデータが同期して読み出される。
【０１１５】
レーン固有部２１１−ｉそれぞれにパケットが入力されると、パケットはバッファ部２３１−ｉに転送され、ブロック部２３２−ｉへ書き込まれる。時刻ｔ３において、ブロック部２３２−０〜２３２−２にヘッダＨ１〜Ｈ３がそれぞれ書き込まれる。時刻ｔ４において、ブロック部２３２−３にヘッダＨ３が書き込まれる。ヘッダＨ１〜Ｈ４は、エントリとしてマッチ部２９１に入力される。
【０１１６】
時刻ｔ３において、選択情報ＬＳはレーン４０１−０を示す「０」であるため、マッチ部２９１において、ヘッダＨ１が主軸として選択される。
【０１１７】
マッチ部２９１において、ヘッダＨ１とマッチするエントリとしてヘッダＨ２〜Ｈ３が見つかる。ヘッダＨ１〜Ｈ３より１サイクル後でヘッダＨ４がマッチ部２９１に入力されると、ヘッダＨ１とマッチするエントリとしてヘッダＨ４が見つかる。よって、選択されたレーン４０１−０を除く全てのレーンのバッファ部２３１−ｉのエントリから選択されたエントリ（ヘッダＨ１）とマッチするエントリ（Ｈ２〜Ｈ４）が見つかる。
【０１１８】
マッチ部２９１は、時刻ｔ５において、読み出し指示ＣＴをバッファ部２３１−ｉそれぞれに送信する。バッファ部２３１−０への読み出し指示ＣＴは、ヘッダＨ１のブロック部２３２−０における位置と読み出しタイミング（時刻ｔ６）を含む。バッファ部２３１−１への読み出し指示ＣＴは、ヘッダＨ２のブロック部２３２−１における位置と読み出しタイミング（時刻ｔ６）を含む。バッファ部２３１−２への読み出し指示ＣＴは、ヘッダＨ３のブロック部２３２−２における位置と読み出しタイミング（時刻ｔ６）を含む。バッファ部２３１−３への読み出し指示ＣＴは、ヘッダＨ４のブロック部２３２−３における位置と読み出しタイミング（時刻ｔ６）を含む。
【０１１９】
バッファ部２３１−ｉは、読み出し指示ＣＴに基づいて、時刻ｔ６でヘッダＨ１〜Ｈ４（＝Ｈ１−４）をそれぞれ読み出して出力する。以下、バッファ部２３１−ｉは、各パケットのヘッダＨ１〜Ｈ４以降のデータ（Ｄ１〜Ｄ４（＝Ｄ１−４），Ｄ５〜Ｄ８（＝Ｄ５−８），Ｅ１〜Ｅ４（＝Ｅ１−４））をそれぞれ同期して読み出して出力する。
【０１２０】
また、レーン固有部２１１−ｉへ入力される２番目のパケットについても同様にブロック部２３２−ｉへ書き込みやマッチ部２９１によるエントリのマッチングが行われる。そして、時刻ｔ１０でヘッダＨ５〜Ｈ８（＝Ｈ５−８）がバッファ部２３１−ｉからそれぞれ読み出されて出力される。
【０１２１】
図８と同様に、時刻ｔ１０において、レーン選択部２８１は、レーン４０１−３を選択し、ＬＳはレーン４０１−３を示す「３」となる。
【０１２２】
レーン固有部２１１−ｉへ入力される３番目のパケットについてもブロック部２３２−ｉへ書き込みやマッチ部２９１によるエントリのマッチングが行われる。
【０１２３】
時刻ｔ３において、選択情報ＬＳはレーン４０１−３を示す「３」であるため、マッチ部２９１において、ヘッダＨ１２が主軸として選択される。図７では、ＬＳ＝０であるためヘッダＨ９が主軸として選択されるが、図９では、ＬＳ＝３であるためヘッダＨ１２が主軸として選択される。
【０１２４】
レーン固有部２１１−２、２１１−３へ入力される３番目のパケットは、レーン固有部２１１−０、２１１−１の３番目のパケットに比べて１サイクル遅れて到着している。
【０１２５】
ヘッダＨ９、Ｈ１０より１サイクル後でヘッダＨ１１，Ｈ１２がマッチ部２９１に入力されると、ヘッダＨ１２とマッチするエントリとしてヘッダＨ９〜Ｈ１１が見つかる。よって、選択されたレーン４０１−３を除く全てのレーンのバッファ部２３１−ｉのエントリから、選択されたエントリ（ヘッダＨ１２）とマッチするエントリ（Ｈ９〜Ｈ１１）が見つかる。
【０１２６】
マッチ部２９１は、時刻ｔ１３において、読み出し指示ＣＴをバッファ部２３１−ｉそれぞれに送信する。バッファ部２３１−０への読み出し指示ＣＴは、ヘッダＨ９のブロック部２３２−０における位置と読み出しタイミング（時刻ｔ１４）を含む。バッファ部２３１−１への読み出し指示ＣＴは、ヘッダＨ１０のブロック部２３２−１における位置と読み出しタイミング（時刻ｔ１４）を含む。バッファ部２３１−２への読み出し指示ＣＴは、ヘッダＨ１１のブロック部２３２−２における位置と読み出しタイミング（時刻ｔ１４）を含む。バッファ部２３１−３への読み出し指示ＣＴは、ヘッダＨ１２のブロック部２３２−３における位置と読み出しタイミング（時刻ｔ１４）を含む。
【０１２７】
バッファ部２３１−ｉは、読み出し指示に基づいて、時刻ｔ１４でヘッダＨ９〜Ｈ１２（＝Ｈ９−１２）をそれぞれ読み出して出力する。
【０１２８】
ここで、スキューバリアブルが有る場合にカットスルー方式による転送を可能とする他の形態を比較例として示す。
【０１２９】
最初に実施の形態のレーン単体による面積の削減を示す。
図１０は、比較例の２つのレーンのバッファ部を示す図である。
【０１３０】
バッファ部８３１−０には、レーン０を介して受信したパケットが到着順に記憶されている。バッファ部８３１−１には、レーン１を介して受信したパケットが到着順に記憶されている。
【０１３１】
バッファ部８３１−０からパケットのヘッダＨ０Ａ〜Ｈ０Ｄが検出される。バッファ部８３１−０からパケットのヘッダＨ１Ａ〜Ｈ１Ｄが検出される。比較例では、ヘッダＨ０ＡとのヘッダＨ１Ａ〜Ｈ１Ｄそれぞれとのマッチングを行う。また、ヘッダＨ０ＢとのヘッダＨ１Ａ〜Ｈ１Ｄそれぞれとのマッチングを行う。また、ヘッダＨ０ＣとのヘッダＨ１Ａ〜Ｈ１Ｄそれぞれとのマッチングを行う。また、ヘッダＨ０ＤとのヘッダＨ１Ａ〜Ｈ１Ｄそれぞれとのマッチングを行う。例えば、ヘッダＨ０ＡとヘッダＨ１Ａのマッチングが成功した場合に、バッファ部８３１−０、８３１−１は、ヘッダＨ０ＡとヘッダＨ１Ａとをタイミングを合わせてそれぞれ出力する。
【０１３２】
図１１は、実施の形態の２つのレーンのバッファ部を示す図である。
バッファ部２３１−０には、レーン０を介して受信したパケットが到着順に記憶されている。バッファ部２３１−１には、レーン１を介して受信したパケットが到着順に記憶されている。
【０１３３】
バッファ部２３１−０からパケットのヘッダＨ０Ａ〜Ｈ０Ｂが検出される。バッファ部２３１−０からパケットのヘッダＨ１Ａ〜Ｈ１Ｂが検出される。実施の形態では、ヘッダＨ０ＡとのヘッダＨ１Ａ〜Ｈ１Ｂそれぞれとのマッチングを行う。また、ヘッダＨ０ＢとのヘッダＨ１Ａ〜Ｈ１Ｄそれぞれとのマッチングを行う。例えば、ヘッダＨ０ＡとヘッダＨ１Ａのマッチングが成功した場合に、バッファ部２３１−０、２３１−１は、ヘッダＨ０ＡとヘッダＨ１Ａとをタイミングを合わせてそれぞれ出力する。
【０１３４】
スキューバリアブル有り且つ受信パケットにエラーが有る状況では、比較に比べて実施の形態はバッファ部に記憶可能なデータ量（バッファサイズ）が少なくて済む。これはバッファサイズがパケット長とスキュー保障値によって決定されるためである。マッチングされる２つのレーンのバッファ部のパケットが共に壊れている可能性がある場合、比較例では、自レーンのパケット自体が壊れていることを隠ぺいするためにスキュー保障段数のみではなく、さらに自レーンの故障を補正するためのバッファを余分に持つ。これは、規定スキュー保障値を外部保障することができないためである。一方で実施の形態ではマッチングの際に主軸として用いられるレーンのパケット部のデータにはエラーが無い事が保障されているため、比較例のような余剰バッファを持たなくてよい。
【０１３５】
実施の形態によれば、バッファサイズを小さくすることができるため、回路規模を小さくすることが出来る。
【０１３６】
図１２は、比較例の受信側のチップの構成を示す図である。
比較例の受信側のチップは、レーン固有部８１１−ｉを有する。レーン固有部８１１−ｉは、レーンｉから受信したデータを処理する。
【０１３７】
レーン固有部８１１−ｉは、バッファ部８３１−ｉおよびマッチ部８４１−ｉを有する。
【０１３８】
バッファ部８３１−ｉは、レーンｉを介して受信したパケットを到着順に記憶する。
マッチ部８４１−ｉは、バッファ部８３１−ｉから受信したデータのマッチングを行い、読み出し位置と読み出しタイミングをバッファ部８３１−ｉに通知する。バッファ部８３１−ｉは、通知された読み出し位置と読み出しタイミングに従って、データを出力する。
【０１３９】
図１３は、実施の形態の受信側のチップの構成を示す図である。
受信側のチップは、レーン固有部２１１−ｉ、レーン選択部２８１、およびマッチ部２９１を有する。
【０１４０】
レーン固有部２１１−ｉは、送受信部（図１３では不図示）およびバッファ部２３１−ｉを有する。
【０１４１】
レーン固有部２１１−ｉ、レーン選択部２８１、およびマッチ部２９１の処理については、上述のように図３〜９を用いて説明済みであるため省略する。
【０１４２】
図１３は、レーンを複数束ねた観点より、実施の形態の特徴について説明する図である。図１２の比較例のような独立した構造であると、全てのレーン間でマッチングをとり、その後に調停を行って出力を決定する。実施の形態は、マッチ部２９１を各レーン固有部２１１−ｉに配置させるのではなく、マッチ部２９１の数を１つにすることでマッチング数を減らし、回路・配線量を減少させる。さらにマッチ部２９１は、マッチングの主体となるレーンを決定し、マッチングの主体のバスにその選択されたレーンバスを結合する。マッチングの主体となるバスを選択することで並列にマッチするパターン数を減少させ、さらにその後の調停回路を削除する。独立構造の場合には各レーンのバッファ部からＸ個のエントリが有り、レーン数がＮの場合、マッチング回数は、比較例ではｎＣ２（＝Ｎ（Ｎ−１）／２）となり、実施の形態ではＮ−１となり、大幅に削減されている。
【０１４３】
図１０〜１３に示すように、実施の形態はレーン単体・レーン全体としての改善を行う。実施の形態では、レーン単体では例えば２割から５割のバッファ量を削減してそれをレーン数倍しただけの削減がある。さらに比較例では、レーン全体としてはＸ２＊（Ｎ（Ｎ−１）／２）＊Ｎ回のマッチングが必要である。対して、実施の形態ではマッチング回数はＸ２＊（Ｎ−１）でよい。なお、このマッチングをバス幅Ｂ（ｂｉｔ）で行うことになる。
【０１４４】
実施の形態によれば、マッチ部の数が１つであるため、回路規模を小さくすることが出来る。
【０１４５】
図１４は、比較例のシステムの構成図である。
システム６０１は、送信装置７０１および受信装置８０１を有する。送信装置７０１および受信装置８０１は、例えば、ＬＳＩ（Large-Scale Integration）等の回路である。
【０１４６】
送信装置７０１と受信装置８０１は、複数のレーン９０１−ｉを介して接続されている。
【０１４７】
送信装置７０１は、送信部７１１−ｉを有する。
送信装置７０１は、複数のレーン９０１−ｉを用いたシリアル通信によりデータの送信を行う。送信装置７０１から受信装置８０１へデータを送信する場合、送信装置７０１は送信データをレーン数に分割して複数のパケットを生成し、送信部７１１−ｉは、生成した複数のパケットそれぞれを対応するレーン９０１−ｉで受信装置８０１に送信する。
【０１４８】
受信回路８０１は、それぞれのレーン９０１−ｉで受信したパケットを組み合わせて元の送信データを復元する。受信装置８０１は、レーン固有部８１１−ｉを有する。レーン固有部８１１−ｉは、受信部８２１−ｉ、バッファ部８３１−ｉ、およびマッチ部８４１を有する。受信部８２１−ｉ、バッファ部８３１−ｉ、およびマッチ部８４１の機能は、図１２で説明したため省略する。
【０１４９】
送信装置７０１と受信装置８０１間の通信は、高速シリアル転送が使用されており、各レーンのパケットは独立して転送される。ゆえに送信部７１１−ｉが全レーンにパケットを同時に出しても、受信タイミングがずれていることは多々ある。また、そのレーン間のタイミングのズレは時間と共に変動する。特にスキューバリアブルが有る環境では、そのスキュー差は大きい。比較例のシステム６０１にように各レーンが独立した構造である場合、マッチ部８４１−ｉを互いに繋ぐレーン間をまたぐバスを用いて、マッチングを取ることになる。そのバスのマッチング結果と調停により、バッファ部８１１−ｉからパケットが読み出され、最終的なデータが得られる。
【０１５０】
比較例によれば、スキューバリアブルが有る場合にカットスルー方式による転送が可能となる。しかしながら、比較例では、マッチ部がレーンの数と同じだけ数だけ設置されている。そのため、回路実装を考慮すると、回路面積が大きくなり、実際に実現（実装）するのは困難である。
【０１５１】
実施の形態のシステムは、回路規模の削減のために、全レーンに固定的に複数のエラーに対処できる回路を実装するのではなく、動的に割り当て可能な一つのエラー対策回路を有する。動的な割り当ては、従来の固定的なＮ個必要であったものを１個準備すればよいため、回路量は削減される。また、従来は多重故障の回路を組み込む必要があったが、実施の形態は一つのレーン故障を補正する回路を搭載する（相互レーン故障を補正しない）ことでも単体としての回路量を削減する。このように個数削減と単体での回路削減により、回路量を削減する。適切な動的割り当てがなされる（動的割り当てが故障レーンあたらない事、故障レーン同士のマッチングが発生しない）条件の下で、実施の形態は十分な耐故障性を持たせることができる。
【０１５２】
実施の形態はエラー部位を回避するような適切な動的割り当てを行うために、対岸フローを用いる。エラーレーンを認識してそれを対岸へと通知し、そのレーンがマッチングの主軸にならないように割り当てさせる。これにより、回路が削減されても十分な耐故障性を持たせるための前提条件が満たされる。なお、この対岸フローとは対岸でのエラー検出と自岸でのエラー検出の両者ともを有意情報として取り扱い、レーン選択の判断に用いる。尚、結果的に一方のみ使われることもある。
【０１５３】
なお、エラーが複数存在しても、少なくとも一つの良好なレーンが存在するならばそれを主軸として選択することにより、前提条件が守られる。すべてのレーンが不良である場合には、理論上は従来方式で救済できるように見えるが、全レーンでエラーが多発する状況であり、事実上ほぼ通信できない状態になっているため、結果的に救済できない状態に陥ることになる。通常ではそのようなケースは既に部品交換がなされている。
【０１５４】
実施の形態は、効果的な省電力動作をすることが可能である。実施の形態により、各レーンは独立して動作でき、しかもクロック位相がずれていても動作可能である。各レーンのクロックをレーンを動作させたり停止させたりをオンライン（システム動作の停止無し）で実行可能になる。特に動作の停止に関して、従来はレーン間スキューを巨大化させる、クロックの位相をずれるような事態は許されず、ゆえにレーンの停止はデータ入出力部のみであり、クロックまでは停止していなかった。実施の形態はレーンのクロックから止めることが出来、ゆえに電力を削減することができる。スーパーコンピュータや大規模データシステムではそのネットワーク帯域を全部使っている状況は極めて稀であり、ゆえに実施の形態のようにオンラインでダイナミックに各レーンの停止再開が可能な機能は有効である。
【０１５５】
実施の形態に係るシステムによれば、スキューが変化する場合、すなわちスキューバリアブル有りの場合に、カットスルー転送を行うことができる。
【０１５６】
実施の形態に係るシステムによれば、バッファサイズを小さくすることができるため、回路規模を小さくすることが出来る。
【０１５７】
実施の形態に係るシステムによれば、マッチ部の数が１つであるため、回路規模を小さくすることが出来る。
【０１５８】
実施の形態によれば、例えば、チップ間の転送（１ＨＯＰ）の時間が従来は２００−３５０ｎｓ程度だったのが８０−９０ｎｓ程度へ改善しながら、故障発生・縮退する際にもハングせず漸次性能縮退のような安定な継続稼働を実現できる。
【０１５９】
以上の実施の形態に関し、さらに以下の付記を開示する。
（付記１）
データ送信装置と、複数の伝送路を介して前記データ送信装置と接続するデータ受信装置と、を備える送受信システムにおいて、
前記データ受信装置は、
前記複数の伝送路ごとに設けられ、前記データ送信装置から受信した受信データのエラーをそれぞれ検出する複数のエラー検出部と、
前記複数の伝送路ごとに設けられ、前記受信データをそれぞれ記憶するとともに、通知された読み出しタイミングで読み出し位置から受信データを読み出す複数の記憶部と、
前記複数のエラー検出部によるエラー検出結果に基づいて、前記複数の伝送路のいずれかを選択する選択部と、
前記選択部が選択した伝送路に対応する記憶部の受信データと、前記伝送路に対応する記憶部以外の記憶部それぞれの受信データとを照合し、照合した結果に基づいて、前記複数の記憶部それぞれに対して、前記読み出しタイミングと前記読み出し位置とを通知する通知部と、
を有する送受信システム。
（付記２）
前記選択部は、前記複数の伝送路のうち、エラーの検出回数が一番少ない伝送路を選択する付記１記載の送受信システム。
（付記３）
前記受信装置は、前記複数の伝送路ごとのエラー検出結果を前記データ送信装置に送信する付記１または２記載の送受信システム。
（付記４）
前記通知部は、前記複数の記憶部それぞれに記憶された前記受信データのうち、パケットのヘッダを用いて照合を行う付記１乃至３のいずれか１項に記載の送受信システム。
（付記５）
複数の伝送路を介して前記データ送信装置と接続するデータ受信装置において、
前記データ受信装置は、
前記複数の伝送路ごとに設けられ、前記データ送信装置から受信した受信データのエラーをそれぞれ検出する複数のエラー検出部と、
前記複数の伝送路ごとに設けられ、前記受信データをそれぞれ記憶するとともに、通知された読み出しタイミングで読み出し位置から受信データを読み出す複数の記憶部と、
前記複数のエラー検出部によるエラー検出結果に基づいて、前記複数の伝送路のいずれかを選択する選択部と、
前記選択部が選択した伝送路に対応する記憶部の受信データと、前記伝送路に対応する記憶部以外の記憶部それぞれの受信データとを照合し、照合した結果に基づいて、前記複数の記憶部それぞれに対して、前記読み出しタイミングと前記読み出し位置とを通知する通知部と、
を有するデータ受信装置。
（付記６）
前記選択部は、前記複数の伝送路のうち、エラーの検出回数が一番少ない伝送路を選択する付記５記載のデータ受信装置。
（付記７）
前記データ受信装置は、前記複数の伝送路ごとのエラー検出結果を前記データ送信装置に送信する付記５または６記載のデータ受信装置。
（付記８）
前記通知部は、前記複数の記憶部それぞれに記憶された前記受信データのうち、パケットのヘッダを用いて照合を行う付記５乃至７のいずれか１項に記載のデータ受信装置。
（付記９）
複数の伝送路を介して前記データ送信装置と接続するデータ受信装置のデータ受信方法において、
前記データ受信装置が有する、前記複数の伝送路ごとに設けられた複数のエラー検出部が、前記データ送信装置から受信した受信データのエラーをそれぞれ検出し、
前記データ受信装置が有する選択部が、前記複数のエラー検出部によるエラー検出結果に基づいて、前記複数の伝送路のいずれかを選択し、
前記データ受信装置が有する通知部が、前記選択部が選択した伝送路に対応する記憶部の受信データと、前記伝送路に対応する記憶部以外の記憶部それぞれの受信データとを照合し、
前記通知部が、照合した結果に基づいて、前記複数の記憶部それぞれに対して、読み出しタイミングと読み出し位置とを通知し、
前記データ受信装置が有する、前記複数の伝送路ごとに設けられ、前記受信データをそれぞれ記憶する複数の記憶部が、通知された前記読み出しタイミングで前期読み出し位置から受信データを読み出す、
データ受信方法。
（付記１０）
前記選択する処理は、前記複数の伝送路のうち、エラーの検出回数が一番少ない伝送路を選択する付記９記載のデータ受信方法。
（付記１１）
前記複数の伝送路ごとのエラー検出結果を前記データ送信装置に送信する処理をさらに備える付記９または１０記載のデータ受信方法。
（付記１２）
前記照合する処理は、前記複数の記憶部それぞれに記憶された前記受信データのうち、パケットのヘッダを用いて照合を行う付記９乃至１１のいずれか１項に記載のデータ受信方法。
【符号の説明】
【０１６０】
１０１    システム
２０１    チップ
２１１    レーン固有部
２２１    送受信部
２３１    バッファ部
２３２    ブロック部
２３３    リードポインタ
２８１    レーン選択部
２９１    マッチ部
２９２    セレクタ
２９３    照合部
２９４    制御部
３０１    チップ
３１１    レーン固有部
３２１    送受信部
３３１    バッファ部
３８１    レーン選択部
３９１    マッチ部
【図１】
2019176263.tif 000003
【図２】
2019176263.tif 000004
【図３】
2019176263.tif 000005
【図４】
2019176263.tif 000006
【図５】
2019176263.tif 000007
【図６】
2019176263.tif 000008
【図７】
2019176263.tif 000009
【図８】
2019176263.tif 000010
【図９】
2019176263.tif 000011
【図１０】
2019176263.tif 000012
【図１１】
2019176263.tif 000013
【図１２】
2019176263.tif 000014
【図１３】
2019176263.tif 000015
【図１４】
2019176263.tif 000016