JP7069936B2 - 送受信システム、データ受信装置、およびデータ受信方法 - Google Patents

送受信システム、データ受信装置、およびデータ受信方法 Download PDF

Info

Publication number
JP7069936B2
JP7069936B2 JP2018060628A JP2018060628A JP7069936B2 JP 7069936 B2 JP7069936 B2 JP 7069936B2 JP 2018060628 A JP2018060628 A JP 2018060628A JP 2018060628 A JP2018060628 A JP 2018060628A JP 7069936 B2 JP7069936 B2 JP 7069936B2
Authority
JP
Japan
Prior art keywords
data
unit
lane
transmission
read
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
JP2018060628A
Other languages
English (en)
Other versions
JP2019176263A (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 JP2018060628A priority Critical patent/JP7069936B2/ja
Priority to US16/268,025 priority patent/US10936393B2/en
Publication of JP2019176263A publication Critical patent/JP2019176263A/ja
Application granted granted Critical
Publication of JP7069936B2 publication Critical patent/JP7069936B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • G06F11/076Error or fault detection not based on redundancy by exceeding limits by exceeding a count or rate limit, e.g. word- or bit count limit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0745Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in an input/output transactions management context
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/18Automatic repetition systems, e.g. Van Duuren systems
    • H04L1/1822Automatic repetition systems, e.g. Van Duuren systems involving configuration of automatic repeat request [ARQ] with parallel processes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0008High speed serial bus, e.g. Fiber channel
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0045Arrangements at the receiver end
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0056Systems characterized by the type of code used
    • H04L1/0061Error detection codes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L2001/0092Error control systems characterised by the topology of the transmission link
    • H04L2001/0096Channel splitting in point-to-point links

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Communication Control (AREA)
  • Synchronisation In Digital Transmission Systems (AREA)

Description

本発明は、送受信システム、データ受信装置、およびデータ受信方法に関する。
送信回路と受信回路との間において複数レーンでシリアル通信を行う場合、送信回路は送信データをレーン数の数だけ分割し、分割したデータをそれぞれのレーンに送信する。受信回路は、それぞれのレーンから受信したデータを復元する。
1つの回路で複数のフローのフレームの遅延差を測定する技術が知られている(例えば、特許文献1参照)。また、データパケット交換機の出力側から、パケット交換機内のデータを回送する方法が知られている(例えば、特許文献2参照)。また、配線領域が少なく、異なる冗長構成が可能なネットワーク転送装置が知られている(例えば、特許文献3参照)。
特開2015-228541号公報 特表平8-510870号公報 特開2004-260368号公報
受信回路は、それぞれのレーンから受信したデータを複数のバッファそれぞれに記憶し、レーン間のスキューを揃えて複数のバッファからデータを読み出す。
データの転送方式として、ストアアンドフォワード方式とカットスルー方式がある。ストアアンドフォワード方式は、パケットの先頭が到着してからパケット終端の到着の確認後に後段のブロックへパケットを揃えて送出する方式である。カットスルー方式は、複数のパケットの先頭を認識した時点で、後段のブロックにパケットを揃えて出力を開始する方式である。そのため、ストアアンドフォワード方式に比べてレイテンシが小さくなる。
レーン間のスキューが固定であれば、予測される特定のタイミングで投機的に処理することで通信レイテンシを短縮することができ、カットスルー方式の転送(カットスルー転送)が可能である。
しかしながら、例えば、到着したパケット毎にスキューが異なる場合がある。このようなスキューが変化する場合、すなわちskew-variable(スキューバリアブル)が有る場合、カットスルー転送を行うことが困難である。
1つの側面において、本発明は、スキューバリアブルが有る場合にカットスルー転送を行うことを目的とする。
実施の形態の送受信システムは、データ送信装置と、複数の伝送路を介して前記データ送信装置と接続するデータ受信装置と、を備える。
前記データ受信装置は、複数のエラー検出部と、複数の記憶部と、選択部と、通知部と、を有する。
前記複数のエラー検出部は、前記複数の伝送路ごとに設けられ、前記データ送信装置から受信した受信データのエラーをそれぞれ検出する。
前記複数の記憶部は、前記複数の伝送路ごとに設けられ、前記受信データをそれぞれ記憶するとともに、通知された読み出しタイミングで読み出し位置から受信データを読み出す。
前記選択部は、前記複数のエラー検出部によるエラー検出結果に基づいて、前記複数の伝送路のいずれかを選択する。
前記通知部は、前記選択部が選択した伝送路に対応する記憶部の受信データと、前記伝送路に対応する記憶部以外の記憶部それぞれの受信データとを照合する。前記通知部は、照合した結果に基づいて、前記複数の記憶部それぞれに対して、前記読み出しタイミングと前記読み出し位置とを通知する。
実施の形態によれば、スキューバリアブルが有る場合にカットスルー転送を行うことができる。
カットスルー方式およびストアアンドフォワード方式のデータ送信タイミングを示す図である。 スキューバリアブル無しと有りの場合のカットスルー方式のデータ送信タイミングを示す図である。 実施の形態のシステムの構成図である。 実施の形態の送受信部の詳細な構成図である。 実施の形態のバッファ部の詳細な構成図である。 実施の形態のマッチ部の詳細な構成図である。 受信データにエラーが無い場合の受信側のチップのタイミングチャートであ 受信データにエラーが有る場合の受信側のチップのタイミングチャートである。 受信データにエラーが有る場合の受信側のチップのタイミングチャートである。 比較例の2つのレーンのバッファ部を示す図である。 実施の形態の2つのレーンのバッファ部を示す図である。 比較例の受信側のチップの構成を示す図である。 実施の形態の受信側のチップの構成を示す図である。 比較例のシステムの構成図である。
以下、図面を参照しながら実施の形態について説明する。
スキューバリアブルが大きい場合、従来技術ではカットスルー転送が困難である。なぜならタイミング予測が失敗するため、転送されたパケットはデータ壊れてしまい、転送性能はむしろ低下するためである。従来方式の状態多重化によってタイミング予測失敗を防ぐ場合、その際のレーン間同期・マッチング回路の実装に必要な面積が極めて大きくなり、そのために逆に性能が悪化する問題がある。
また、到着タイミング遅延と伝送エラーの区別が不可能であり、結果、エラー波及を限定化できず、性能低下の限定化や継続動作保障が出来ない(QoS(Quality of Service)保障不可)。ゆえにこの条件の下で実用的なカットスルー転送が困難である。
レーンの並列数が小さくかつ相対的に回路規模が小さかったため、従来の回路構造(主にPCS(Physical Coding Sublayer)、アラインメント部、symbol-lock部)はスキューバリアブルを無視できた。つまり独立した異なるレーンのデータをマージすることはほぼ無く、またスキューはダイナミックでは無くスタティックであること前提としていた。パケットがそろうタイミングがほぼ固定、つまりスキューバリアブルが無視可能ならばパケットの切れ目(アラインメントマーカー)の位置とタイミングがほぼ固定である。ゆえに、予測される特定のタイミングで投機的に処理することで通信レイテンシを短縮することができる。つまりカットスルー転送される。
しかし、サイクルのずれのようなスキューバリアブルが発生すると、タイミングがそろっていることも保障されておらず、アラインメントマーカーの位置やタイミングの予測も困難である。そのような状態で従来のようなカットスルー機能を有効にして投機的に後段に流すと、そのたまに変化するスキューによりフォーマットの崩れたパケットが後段に流されるため、エラーになる。つまり、転送されたデータは破棄される。破棄されると再送などの訂正が必要であり、転送レイテンシ・帯域において大きなペナルティがかかる。つまりスキューバリアブルが顕在化してくると、従来のようなタイミング予測に基づくカットスルー制御は困難である。
この問題を従来技術で容易に解決できない理由はタイミングの見切りとパケットのエラーに対して対処が難しい点、特にどのようなエラーが来てもある一定のQoSを維持しながらパケット処理タイミングを見切る必要がある点である。例えば、ある周期的な一時故障によりシステムダウンをしてはならず、継続動作することを保障しなければならない点を考慮する必要があることに注意しなければならない。
スキューバリアブルが大きい状況ではアラインメントマーカーがそろうタイミングは確定しない、つまりタイミングを固定的に見切る起因は無い。ゆえにカットスルーで送り出すタイミングは固定的には得られない。根本的には全レーンに期待データがそろった瞬間に開始可能なため、基本的には全レーンで期待値マッチングをすることになり、それはタイミングが固定的ではなく動的になることを意味する。また揃うまでのタイミングが各レーンで異なり、つまりカットスルー制御するならばその分のバッファを用意することになる。
また、受信側に到着したデータはそもそも壊れている可能性があり、適切に破棄しなければ、壊れパケットのデータが制御を狂わせてしまう。最も簡易な制御は各レーンに到着したデータをデータの中身を確認せずに到着順に読み出すことである。しかし、ある一つのデータが壊れて抜けてしまうと、受信側各レーンの本来あるべきパケットの組み合わせがずれてしまい、そしてずれたままになる。そのため、制御情報の再調整が無ければ以後永久にエラーし続け、通信路がハングしてしまう。つまり、到着パケットの中身を相互に確認しあう、つまり何らかのマッチングを取る必要がある。
従来技術の受信タイミングの先頭をそろえるためのバッファと、各レーンの中身を確認しあうマッチング回路のサイズは非常に大きい。特にマッチング回路はレーン数の全体全マッチングであり、それをタイミングバッファ分用意するためである。この回路を縮小しようとしても、どのレーンが物理故障により縮退するかわからないため、単純な回路除去は耐故障性の喪失に至ってしまう。
図1は、カットスルー方式およびストアアンドフォワード方式のデータ送信タイミングを示す図である。
図1の上段の上側はレーン0のバッファの受信データと受信タイミングを示し、下側はレーン1のバッファの受信データと受信タイミングを示す。図1では、バッファは右側から順にデータを受信しており、右側にあるデータほど先に受信されていることを示す。
レーン0のバッファは、受信データとして、4つのパケット(第1のパケット~第4のパケット)を順に受信し、格納する。第1のパケットは、ヘッダH0Aと2つのデータDと最終データEを含む。第2のパケットは、ヘッダH0Bと2つのデータDと最終データEを含む。第3のパケットは、ヘッダH0Cと3つのデータDと最終データEを含む。第4のパケットは、ヘッダH0Dと1つのデータDと最終データEを含む。
レーン1のバッファは、受信データとして4つのパケット(第5のパケット~第8のパケット)を順に受信し、格納する。第5のパケットは、ヘッダH1Aと2つのデータDと最終データEを含む。第6のパケットは、ヘッダH1Bと2つのデータDと最終データEを含む。第7のパケットは、ヘッダH1Cと3つのデータDと最終データEを含む。第8のパケットは、ヘッダH1Dと1つのデータDと最終データEを含む。
第1のパケットと第5のパケット、第2のパケットと第6のパケット、第3のパケットと第7のパケット、第4のパケットと第8のパケットは、それぞれタイミングを揃えて出力されるべきデータである。
また、レーン1の受信データの受信タイミングはレーン0の受信データの受信タイミングに比べて2サイクル遅延している。
図1の中段は、カットスルー方式の送信タイミングを示す。
図1の中段において、カットスルー方式を用いて、レーン0とレーン1の受信データのスキューを揃えて出力するとする。
時刻tにおいて、第1のパケットのヘッダH0Aの受信が判定され、時刻tにおいて、第5のパケットのヘッダH1Aの受信が判定される。カットスルー方式では、両方のパケットの先頭(ヘッダ)が受信された時点で、後段にパケットを揃えて出力を開始する。よって、時刻tにおいて、レーン0のバッファからヘッダH0Aから順に受信データの出力が開始され、レーン1のバッファからヘッダH1Aから順に受信データの出力が開始される。
図1の下段は、ストアアンドフォワード方式の送信タイミングを示す。
図1の下段において、ストアアンドフォワード方式を用いて、レーン0とレーン1の受信データのスキューを揃えて出力するとする。
時刻tにおいて、第1のパケットの最終データEの受信が判定され、時刻tにおいて、第5のパケットの最終データEの受信が判定される。ストアアンドフォワード方式では、両方のパケットの最終データが受信された時点で、後段にパケットを揃えて出力を開始する。よって、時刻tにおいて、レーン0のバッファからヘッダH0Aから順に受信データの出力が開始され、レーン1のバッファからヘッダH1Aから順に受信データの出力が開始される。
図1において、カットスルー方式はストアアンドフォワード方式に比べて3サイクル早く後段にパケットを出力しており、転送レイテンシが優れている。ただしカットスルー方式はパケットが壊れているかどうか確認せずに後段に出力するため、最終的にエラーとなるケースもあり、エラー破棄(無効化)指示をする場合がある。回路規模が巨大かつ処理が複雑になるにつれ、エラー破棄指示の通知が遅れてエラーの波及を止めることが難しくなる。処理の単純化と回路規模の縮小はカットスルー方式の実装をより容易にする。
図2は、スキューバリアブル無しと有りの場合のカットスルー方式のデータ送信タイミングを示す図である。
図2の上段は、レーン0のバッファの受信データと受信タイミングを示す。
図2の中段は、スキューバリアブル無しの場合のレーン1のバッファの受信データと受信タイミングを示す。図2の中段は、スキューバリアブルが無い場合、すなわちスキューが固定されている場合を示す。図2の中段において、レーン1の受信データの受信タイミングはレーン0の受信データの受信タイミングに比べて2サイクル遅延している。
尚、図2のレーン0およびレーン1の受信データは、図1のレーン0およびレーン1の受信データと同様である。
レーン1のバッファの受信データと受信タイミングが図2の中段に示されるような場合、カットスルー方式を用いて、レーン0とレーン1の受信データのスキューを揃えて出力するとする。
時刻tにおいて、第5のパケットのヘッダH1Aの受信が判定され、時刻tより以前に第1のパケットのヘッダH0Aが受信されている。
この場合、両方のパケットの先頭(ヘッダ)を受信した時点で、後段にパケットを揃えて出力を開始する。よって、時刻tにおいて、レーン0のバッファからヘッダH0Aから順に受信データの出力が開始され、レーン1のバッファからヘッダH1Aから順に受信データの出力が開始される。
図2の下段は、スキューバリアブル有りの場合のレーン1のバッファの受信データと受信タイミングを示す。図2の下段は、スキューバリアブルが有る場合、すなわちスキューが変化する場合を示す。図2の下段の3つのレーン1の受信データは、上から順に、レーン1の受信データの受信タイミングがレーン0の受信データの受信タイミングに比べてそれぞれ1~3サイクル遅延している場合を示す。
レーン1の受信データの受信タイミングがレーン0の受信データの受信タイミングに比べて1サイクル遅延している場合、時刻t’において、第5のパケットのヘッダH1Aの受信が判定される。そして、時刻t’において、レーン0のバッファからヘッダH0Aから順に受信データの出力が開始され、レーン1のバッファからヘッダH1Aから順に受信データの出力が開始される。
レーン1の受信データの受信タイミングがレーン0の受信データの受信タイミングに比べて2サイクル遅延している場合、時刻t’において、第5のパケットのヘッダH1Aの受信が判定される。そして、時刻t’において、レーン0のバッファからヘッダH0Aから順に受信データの出力が開始され、レーン1のバッファからヘッダH1Aから順に受信データの出力が開始される。
レーン1の受信データの受信タイミングがレーン0の受信データの受信タイミングに比べて3サイクル遅延している場合、時刻t’において、第5のパケットのヘッダH1Aの受信が判定される。そして、時刻t’において、レーン0のバッファからヘッダH0Aから順に受信データの出力が開始され、レーン1のバッファからヘッダH1Aから順に受信データの出力が開始される。
スキューバリアブルが無い環境では、レーン間でスキューが発生することはあっても、固定的なスキューであり、一度確定するとほぼその状態のままである。スキューが固定である場合、カットスルータイミングは、先に受信した受信データの受信タイミングより一定期間後であり、それ以外はエラー(壊れパケットの到着)と判定して処理してよい。
スキューバリアブルが有る場合、パケットの到着毎にスキューが異なる可能性がある。
スキューバリアブルが有る場合、後続の他のレーンのデータの受信タイミングは前に到着したレーンのデータの受信タイミングより何サイクル後に来るのかが不明である。そもそも、データが来たからと処理を開始してよいとは限らず、また正しいデータは実はそのすぐ後で来る可能性もある。ゆえに現在到着したデータを用いて、出力を開始してよいと確定することは困難である。ゆえに、スキューバリアブルが有る場合、受信側では、ある程度の量のデータを格納しておき、その中から最適なものを選んでいる。スキューバリアブルが有る場合、自身も相手もスキューがぶれている点に注意する必要がある。相互にタイミングがずれている中でそのタイミングの直後が真の読出しタイミングの可能性がある点、つまり読出しタイミングが確定しづらいという問題がある。
図3は、実施の形態のシステムの構成図である。
システム101は、チップ201,301を有する。チップ201、301は、例えば、LSI(Large-Scale Integration)等の回路である。チップ201、301は、データ送信装置またはデータ受信装置の一例である。
チップ201とチップ301は、複数のレーン401-i(i=0~3)を介して接続されている。レーンは、伝送路の一例である。チップ201とチップ301は、複数のレーン401-iを用いたシリアル通信によりデータの送受信を行う。チップ201からチップ301へデータを送信する場合、チップ201は送信データをレーン数に分割して複数のパケットを生成し、生成した複数のパケットそれぞれを対応するレーン401-iでチップ301に送信する。例えば、あるデータが分割されて4つのパケットPが生成されると、パケットPはレーン401-iを介してチップ301に送信される。すなわち、パケットごとに異なるレーンでチップ301に送信される。チップ301は、受信した複数のパケットから送信データを復元する。また、チップ301からチップ201へ送信データを送信する場合も同様に、チップ301はデータをレーン数に分割して複数のパケットを生成し、生成した複数のパケットそれぞれを対応するレーン401-iでチップ201に送信する。チップ201は、受信した複数のパケットから送信データを復元する。
チップ201は、レーン固有部211-i、レーン選択部281、およびマッチ部291を有する。
レーン固有部211-iは、送受信部221-iおよびバッファ部231-iを有する。
送受信部221-iは、レーン401-iを介してチップ301からパケットを受信する。送受信部221-iは、受信したパケットをバッファ部231-iに転送し、受信したパケットのエラーを検出し、エラー情報をレーン選択部281に出力する。送受信部221-iには、エラー情報に用いられる上位ファームウェアからの情報(アラーム)が入力される。送受信部221-iは、レーン401-iを介してチップ301にパケットを送信する。
バッファ部231-iは、受信したデータを記憶する。バッファ部231-iは、マッチ部291から受信した制御信号に基づいて、自身に格納されているデータを読み出し、チップ201内の後段の処理部(不図示)に出力する。これにより、レーン固有部211-iからスキューが揃ったデータが出力される。バッファ部231-iは、例えば、FIFO(First-In First-Out)やRAM(Random Access Memory)等である。バッファ部231-iは、記憶部の一例である。
レーン選択部281は、送受信部221-iから受信したエラー情報に基づいて、レーン401-iのいずれかを選択し、選択したレーンを示す選択信号をマッチ部に出力する。レーン選択部281は、選択部の一例である。
マッチ部291は、バッファ部231-iから受信したエントリとレーン選択部281から受信した選択信号とに基づいて、バッファ部231-iそれぞれのデータの読み出し位置を示すリードポインタ値を算出する。マッチ部291は、データの読み出し位置を示すリードポインタ値と読み出しタイミングとを含み、データの読み出しを指示する制御情報をバッファ部231-iに送信する。マッチ部291は、通知部の一例である。
チップ301は、レーン固有部311-i、レーン選択部381、およびマッチ部391を有する。レーン固有部311-iは、送受信部321-iおよびバッファ部331-iを有する。送受信部321-i、バッファ部331-i、レーン選択部381、およびマッチ部391の機能は、送受信部221-i、バッファ部231-i、レーン選択部281、およびマッチ部291の機能とそれぞれ同様であるため、説明は省略する。
図4は、実施の形態の送受信部の詳細な構成図である。
送受信部221-iは、エラー検出部222-i、エラー分析部223-i、送信部224-i、およびレーン選択情報出力部225-iを有する。
送受信部221-iが受信したパケットは、エラー検出部222-iおよびバッファ部231-iに転送される。
エラー検出部222-iは、受信したパケットのエラーを検出し、検出結果をバッファ部231-iおよび分析部223-iに出力する。
エラー分析部223-iは、エラー検出部222-iからの検出結果の統計処理を行う。エラー分析部223-iは、例えば、一定期間ごとのエラーの検出回数をカウントし、保存する。エラー分析部223-iは、例えば、エラーの検出回数を内部レジスタでインクリメントしておき、外部からのリセット信号の受信によりリセットする。エラー分析部223-iは、例えば、一定期間ごとのエラーの検出回数を分析結果として送信部224-iおよびレーン選択情報出力部225-iに出力する。
送信部224-iは、送信データ、アラーム(Send)、またはエラー分析部223-iの分析結果を含むパケットを生成し、チップ301の送受信部321-iに送信する。送信データはチップ301に送信されるデータである。アラーム(Send)は、チップ301がパケットの送信に用いるレーン401-iの選択に用いられる情報である。アラーム(Send)は、例えば、レーン401-iを使用しないように指示する情報である。送信側のチップ301は、例えば、あるレーン401-iの送信部224-iから受信したエラーの検出回数が閾値以上である場合、当該レーン401-iを使用しないようにする。それにより、受信データのエラーの発生を抑制することができる。
レーン選択情報出力部225-iは、エラー分析部223-iの分析結果を受信する。また、レーン選択情報出力部225-iは、さらにアラーム(Self)を受信してもよい。
アラーム(Self)は、例えば、上位ファームウェアで検知されるチップ201やレーン401-iの異常やレーン401-iの使用不可を示す情報である。アラーム(Self)は、例えば、レーン401-iを使用しないように指示する情報であり、所定値(非常に大きな値)のエラーの検出回数を示す。
レーン選択情報出力部225-iは、分析結果およびアラーム(Self)に基づいて、エラー情報をレーン選択部281に出力する。エラー情報は、例えば、エラー分析部223-iの分析結果が示す一定期間ごとのエラーの検出回数である。また、エラー情報は、例えば、アラーム(Self)が示す所定値のエラーの検出回数である。また、エラー情報は、例えば、エラー分析部223-iの分析結果が示す一定期間ごとのエラーの検出回数とアラーム(Self)が示すエラーの検出回数との合計である。
図5は、実施の形態のバッファ部の詳細な構成図である。
バッファ部231-iは、ブロック部232-iおよびリードポインタ233-iを有する。
ブロック部232-iは、送受信部221-iから受信したパケットを到着順に記憶する。ブロック部232-iは、エラー検出部222-iから検出結果としてパケットエラーの検出の通知を受信すると、当該パケットにエラーマークを付けて破棄する。ブロック部232-iは、記憶したパケットのヘッダを検出し、ヘッダをエントリとしてマッチ部291に出力する。また、エントリには、ヘッダのブロック部232-iにおける位置(ポインタ値)が付加される。尚、ブロック部232-iは、複数のパケットを記憶している場合、各パケットのヘッダを検出し、複数のヘッダをエントリとしてマッチ部291に出力する。
ブロック部232-iは、マッチ部291からの読み出し指示に従って、パケットを読み出して、後段の処理部(不図示)に出力する。読み出し指示には、ブロック部232-iの読み出し位置を示すリードポインタ値と、読み出しタイミングと、が含まれる。
リードポインタ233-iは、マッチ部291から受信した読み出し指示をブロック部232-iに出力する。
図6は、実施の形態のマッチ部の詳細な構成図である。
マッチ部291は、セレクタ292、照合部293、および制御部294を有する。
レーン選択部281は、送受信部221-iそれぞれからエラー情報を受信し、エラー情報に基づいて、レーン401-iのいずれかを選択する。詳細には、レーン選択部281は、エラー検出回数が一番少ないエラー情報を送信した送受信部221-iのレーン401-iを選択する。また、レーン選択部281は、エラー検出回数が閾値以下のエラー情報を送信した送受信部221-iのレーン401-iから、LRU(Least Recently Used)やラウンドロビンを用いてレーン401-iを選択してもよい。レーン選択部281は、選択したレーン401-iを示す選択情報をセレクタ292に出力する。
セレクタ292は、レーン選択部281から選択情報、およびバッファ部231-iそれぞれからエントリを受信する。セレクタ292は、受診したエントリのうち、選択情報が示すレーン401-iのバッファ231-iから受信したエントリを選択し、選択したエントリを照合部293に出力する。すなわち、受信パケットのエラーが一番少ないレーンのエントリが照合部293におけるマッチングの主軸となる。
照合部293は、セレクタ292により選択されたエントリ、およびバッファ部231-iそれぞれからエントリを受信する。照合部293は、セレクタ292により選択されたエントリとバッファ部231-iそれぞれのエントリとのマッチング(照合)を行う。照合部293は、選択されたエントリとマッチするエントリをバッファ部231-iそれぞれのエントリから見つける。選択されたエントリとマッチするエントリとは、選択されたエントリと同じタイミングで読み出されるべきエントリである。例えば、同じタイミングで読み出されるべき複数のパケットのヘッダそれぞれには、共通の識別子が含まれている。よって、マッチング対象のエントリに選択されたエントリに含まれる識別子と同じ識別子を含むか判定することにより、同じタイミングで読み出されるべきエントリを見つけることができる。
選択されたレーンを除く全てのレーンのバッファ部231-iのエントリから選択されたエントリとマッチするエントリが見つかった場合、制御部294は、選択されたエントリとマッチするエントリのブロック部232-iにおける位置(読み出し位置)を示すリードポインタ値と読み出しタイミングとを含む読み出し指示をバッファ部231-iに出力する。制御部294は、例えば、読み出しタイミングを現在から所定のサイクル後に決定する。
図7は、受信データにエラーが無い場合の受信側のチップのタイミングチャートである。図7において、受信側のチップは、チップ201とする。
図7において、IN(Li)はレーン401-iからのレーン固有部211-iへの入力データを示し、Hはヘッダ(先頭)、Dはデータ(先頭でも最終でもない)、Eは最終データ、バー(-)はデータ無しを示す。尚、ヘッダH、1つ以上のデータD、および最終データEにより1つのパケットが構成される。
SR(Li)はレーン401-iの受信データのエラーに関する情報を示す。EDはエラー検出部222-i、EAはエラー分析部223-i、LSIはレーン選択情報出力部225-iそれぞれの出力を示す。図7では、受信データにエラーが無いため、ED、EA、およびLSIは、アクティブにはならず、空白である。
BF(Li)はレーン401-iのバッファ部231-iを示し、Eはブロック部232-iへの書き込み、RDマッチ部291からの指示による読出しを示す。
MCはマッチ部291を示す。LSはレーン選択部281からの選択情報を示し、CTは制御部294の読み出し指示(コントロール)を示す。図7において、LSはレーン401-0を示す「0」となっている。
OUT(all)はバッファ部231-i全ての出力を示し、図7ではある時刻において4つのデータが同期して読み出される。
図7では、レーン固有部211-0へ入力される1番目のパケット(H,D,D、E)、レーン固有部211-1へ入力される1番目のパケット(H,D,D、E)、およびレーン固有部211-2へ入力される1番目のパケット(H,D,D、E)、は同じタイミングでレーン固有部211-0~211-2へそれぞれ到着している。レーン固有部211-3へ入力される1番目のパケット(H,D,D、E)は、レーン固有部211-0~211-2の1番目のパケットに比べて1サイクル遅れてレーン固有部211-3へ到着している。
レーン固有部211-0へ入力される2番目のパケット(H,D、E)、レーン固有部211-1へ入力される2番目のパケット(H,D10,E)、およびレーン固有部211-2へ入力される2番目のパケット(H,D11,E)、は同じタイミングでレーン固有部211-0~211-2へそれぞれ到着している。レーン固有部211-3へ入力される2番目のパケット(H,D12,E)は、レーン固有部211-0~211-2の2番目のパケットに比べて1サイクル遅れてレーン固有部211-3へ到着している。
レーン固有部211-0へ入力される3番目のパケット(H,D13,D17、E)、およびレーン固有部211-1へ入力される3番目のパケット(H10,D14,D18、E10)、は同じタイミングでレーン固有部211-0~211-1へそれぞれ到着している。
レーン固有部211-2へ入力される3番目のパケット(H11,D15,D19、E11)、およびレーン固有部211-3へ入力される3番目のパケット(H12,D16,D20、E12)は、レーン固有部211-0~211-1の3番目のパケットに比べて1サイクル遅れてそれぞれレーン固有部211-2~211-3へ到着している。
レーン固有部211-iそれぞれに入力された1番目のパケットは、バッファ部231-iから同期して読み出されるべきデータである。レーン固有部211-iそれぞれに入力された2番目のパケットは、バッファ部231-iから同期して読み出されるべきデータである。レーン固有部211-iそれぞれに入力された3番目のパケットは、バッファ部231-iから同期して読み出されるべきデータである。
レーン固有部211-iそれぞれにパケットが入力されると、パケットはバッファ部231-iに転送され、ブロック部232-iへ書き込まれる。時刻tにおいて、ブロック部232-0~232-2にヘッダH~Hがそれぞれ書き込まれる。時刻tにおいて、ブロック部232-3にヘッダHが書き込まれる。ヘッダH~Hは、エントリとしてマッチ部291に入力される。
時刻tにおいて、選択情報LSはレーン401-0を示す「0」であるため、マッチ部291において、ヘッダHが主軸として選択される。
マッチ部291において、ヘッダHとマッチするエントリとしてヘッダH~Hが見つかる。ヘッダH~Hより1サイクル後でヘッダHがマッチ部291に入力されると、ヘッダHとマッチするエントリとしてヘッダHが見つかる。よって、選択されたレーン401-0を除く全てのレーンのバッファ部231-iのエントリから、選択されたエントリ(ヘッダH)とマッチするエントリ(H~H)が見つかる。
マッチ部291は、時刻t5において、読み出し指示CTをバッファ部231-iそれぞれに送信する。バッファ部231-0への読み出し指示CTは、ヘッダHのブロック部232-0における位置と読み出しタイミング(時刻t)を含む。バッファ部231-1への読み出し指示CTは、ヘッダHのブロック部232-1における位置と読み出しタイミング(時刻t)を含む。バッファ部231-2への読み出し指示CTは、ヘッダHのブロック部232-2における位置と読み出しタイミング(時刻t)を含む。バッファ部231-3への読み出し指示CTは、ヘッダHのブロック部232-3における位置と読み出しタイミング(時刻t)を含む。
バッファ部231-iは、読み出し指示CTに基づいて、時刻tでヘッダH~H(=H1-4)をそれぞれ読み出して出力する。以下、バッファ部231-iは、各パケットのヘッダH~H以降のデータ(D~D(=D1-4),D~D(=D5-8),E~E(=E1-4))をそれぞれ同期して読み出して出力する。
また、レーン固有部211-iへ入力される2番目のパケットについても同様にブロック部232-iへ書き込みやマッチ部291によるエントリのマッチングが行われる。そして、時刻t10でヘッダH~H(=H5-8)がバッファ部231-iそれぞれから読み出されて出力される。
レーン固有部211-iへ入力される3番目のパケットについても同様にブロック部232-iへ書き込みやマッチ部291によるエントリのマッチングが行われる。
マッチ部291において、ヘッダHとマッチするエントリとしてヘッダH10が見つかる。レーン固有部211-2、211-3へ入力される3番目のパケットは、レーン固有部211-0、211-1の3番目のパケットに比べて1サイクル遅れて到着している。
ヘッダH、H10より1サイクル後でヘッダH11,H12がマッチ部291に入力されると、ヘッダHとマッチするエントリとしてヘッダH11,H12が見つかる。よって、選択されたレーン401-0を除く全てのレーンのバッファ部231-iのエントリから、選択されたエントリ(ヘッダH)とマッチするエントリ(H10~H12)が見つかる。
マッチ部291は、時刻t13において、読み出し指示CTをバッファ部231-iそれぞれに送信する。バッファ部231-0への読み出し指示CTは、ヘッダHのブロック部232-0における位置と読み出しタイミング(時刻t14)を含む。バッファ部231-1への読み出し指示CTは、ヘッダH10のブロック部232-1における位置と読み出しタイミング(時刻t14)を含む。バッファ部231-2への読み出し指示CTは、ヘッダH11のブロック部232-2における位置と読み出しタイミング(時刻t14)を含む。バッファ部231-3への読み出し指示CTは、ヘッダH12のブロック部232-3における位置と読み出しタイミング(時刻t14)を含む。
バッファ部231-iは、読み出し指示に基づいて、時刻t14でヘッダH~H12(=H9-12)をそれぞれ読み出して出力する。
図8は、受信データにエラーが有る場合の受信側のチップのタイミングチャートである。図8において、受信側のチップは、チップ201とする。
図8において、IN(Li)はレーン401-iからのレーン固有部211-iへの入力データを示し、Hはヘッダ(先頭)、Dはデータ(先頭でも最終でもない)、Eは最終データ、バー(-)はデータ無しを示す。尚、ヘッダH、1つ以上のデータD、および最終データEにより1つのパケットが構成される。レーン固有部211-iへ入力されるデータとタイミングは図7と同様である。
SR(Li)はレーン401-iの受信データのエラーに関する情報を示す。EDはエラー検出部222-i、EAはエラー分析部223-i、LSIはレーン選択情報出力部225-iそれぞれの出力を示す。ED=Erは、エラーを検出したことを示す。EA=x,LSI=x(xは0以上の正数)は、エラー分析部223-iがカウントしているエラーの検出回数を示す。また、エラーの検出は、パケットの最終データEに付随するCRC(Cyclic Redundancy Check)を用いて行われる。
UPDTは、エラー分析部223-iへのリセット信号である。エラー分析部223-iは、リセット信号を受信すると、カウントしているエラーの検出回数を0にリセットする。UPDT=1は、リセット信号がオンであることを示す。リセットをしない場合には極めて古い(例えば過去数か月間のデータ)を用いてレーンが選択されるため、不適切である。
MCはマッチ部291を示す。LSはレーン選択部281からの選択情報を示す。図8において、LSの初期値はレーン401-0を示す「0」となっている。
時刻tにおいて、エラー検出部222-0でレーン固有部211-0へ入力された1番目のパケットのエラーが検出される(ED=Er)。時刻tにおいて、エラー分析部223-0によるエラーの検出回数が1加算され、エラー分析部223-0による出力はEA=1となり、レーン選択情報出力部225-0の出力はLSI=1となる。
また、時刻tにおいて、エラー検出部222-2でレーン固有部211-2へ入力された1番目のパケットのエラーが検出される(ED=Er)。時刻tにおいて、エラー分析部223-2によるエラーの検出回数が1加算され、エラー分析部223-2による出力はEA=1となり、レーン選択情報出力部225-2の出力はLSI=1となる。
時刻tにおいて、エラー検出部222-1でレーン固有部211-1へ入力された2番目のパケットのエラーが検出される(ED=Er)。時刻tにおいて、エラー分析部223-1によるエラーの検出回数が1加算され、エラー分析部223-1による出力はEA=1となり、レーン選択情報出力部225-1の出力はLSI=1となる。
また、時刻tにおいて、エラー検出部222-2でレーン固有部211-2へ入力された2番目のパケットのエラーが検出される(ED=Er)。時刻tにおいて、エラー分析部223-2によるエラーの検出回数が1加算され、エラー分析部223-2による出力はEA=2となり、レーン選択情報出力部225-2の出力はLSI=2となる。
時刻tにおいて、リセット信号がオン(UPDT=1)となる。エラー分析部223-iは、リセット信号を受信すると、カウントしているエラーの検出回数を0にリセットする。これにより、時刻t10において、エラー分析部223-iの出力EA、およびレーン選択情報出力部225-iの出力LSIは、0にリセットされる。
また、時刻tにおいて、レーン選択部281は、リセット信号のオンに応じて、レーン選択情報出力部225-0~225-3の出力LSIのうち最小の値を検出し、受信データのエラーの検出回数が最小のレーンを選択する。レーン選択情報出力部225-0~225-3の出力LSIのうち、最小の値はレーン選択情報出力部225-3の出力(=0)である。
よって、時刻t10において、レーン選択部281は、レーン401-3を選択し、LSはレーン401-3を示す「3」となる。
時刻t13において、エラー検出部222-0でレーン固有部211-0へ入力された3番目のパケットのエラーが検出される(ED=Er)。時刻t14において、エラー分析部223-0によるエラーの検出回数が1加算され、エラー分析部223-0による出力はEA=1となり、レーン選択情報出力部225-0の出力はLSI=1となる。
図9は、受信データにエラーが有る場合の受信側のチップのタイミングチャートである。図9において、受信側のチップは、チップ201とする。図9では、図8と同様のエラー検出の状況におけるマッチ部291によるマッチングを説明する。
図9において、IN(Li)はレーン401-iからのレーン固有部211-iへの入力データを示し、Hはヘッダ(先頭)、Dはデータ(先頭でも最終でもない)、Eは最終データ、バー(-)はデータ無しを示す。尚、ヘッダH、1つ以上のデータD、および最終データEにより1つのパケットが構成される。レーン固有部211-iへ入力されるデータとタイミングは図7と同様である。
SR(Li)はレーン401-iの受信データのエラーに関する情報を示す。EDはエラー検出部222-i、EAはエラー分析部223-i、LSIはレーン選択情報出力部225-iそれぞれの出力を示す。ED=Erは、エラーを検出したことを示す。EA=x,LSI=x(xは0以上の正数)は、エラー分析部223-iがカウントしているエラーの検出回数を示す。また、エラーの検出は、パケットの最終データEに付随するCRC(Cyclic Redundancy Check)を用いて行われる。図9のSR(Li)は図8のSR(Li)と同様である。図9では、SR(L0)のみ記載し、SR(L1)~SR(L3)の記載は省略している。
BF(Li)はレーン401-iのバッファ部231-iを示し、Eはブロック部232-iへの書き込み、RDマッチ部291からの指示による読出しを示す。MCはマッチ部291を示す。LSはレーン選択部281からの選択情報を示す。
MCはマッチ部291を示す。LSはレーン選択部281からの選択情報を示し、CTは制御部294の読み出し指示(コントロール)を示す。図9において、LSの初期値はレーン401-0を示す「0」となっている。
OUT(all)はバッファ部231-i全ての出力を示し、図9ではある時刻において4つのデータが同期して読み出される。
レーン固有部211-iそれぞれにパケットが入力されると、パケットはバッファ部231-iに転送され、ブロック部232-iへ書き込まれる。時刻tにおいて、ブロック部232-0~232-2にヘッダH~Hがそれぞれ書き込まれる。時刻tにおいて、ブロック部232-3にヘッダHが書き込まれる。ヘッダH~Hは、エントリとしてマッチ部291に入力される。
時刻tにおいて、選択情報LSはレーン401-0を示す「0」であるため、マッチ部291において、ヘッダHが主軸として選択される。
マッチ部291において、ヘッダHとマッチするエントリとしてヘッダH~Hが見つかる。ヘッダH~Hより1サイクル後でヘッダHがマッチ部291に入力されると、ヘッダHとマッチするエントリとしてヘッダHが見つかる。よって、選択されたレーン401-0を除く全てのレーンのバッファ部231-iのエントリから選択されたエントリ(ヘッダH)とマッチするエントリ(H~H)が見つかる。
マッチ部291は、時刻tにおいて、読み出し指示CTをバッファ部231-iそれぞれに送信する。バッファ部231-0への読み出し指示CTは、ヘッダHのブロック部232-0における位置と読み出しタイミング(時刻t)を含む。バッファ部231-1への読み出し指示CTは、ヘッダHのブロック部232-1における位置と読み出しタイミング(時刻t)を含む。バッファ部231-2への読み出し指示CTは、ヘッダHのブロック部232-2における位置と読み出しタイミング(時刻t)を含む。バッファ部231-3への読み出し指示CTは、ヘッダHのブロック部232-3における位置と読み出しタイミング(時刻t)を含む。
バッファ部231-iは、読み出し指示CTに基づいて、時刻tでヘッダH~H(=H1-4)をそれぞれ読み出して出力する。以下、バッファ部231-iは、各パケットのヘッダH~H以降のデータ(D~D(=D1-4),D~D(=D5-8),E~E(=E1-4))をそれぞれ同期して読み出して出力する。
また、レーン固有部211-iへ入力される2番目のパケットについても同様にブロック部232-iへ書き込みやマッチ部291によるエントリのマッチングが行われる。そして、時刻t10でヘッダH~H(=H5-8)がバッファ部231-iからそれぞれ読み出されて出力される。
図8と同様に、時刻t10において、レーン選択部281は、レーン401-3を選択し、LSはレーン401-3を示す「3」となる。
レーン固有部211-iへ入力される3番目のパケットについてもブロック部232-iへ書き込みやマッチ部291によるエントリのマッチングが行われる。
時刻tにおいて、選択情報LSはレーン401-3を示す「3」であるため、マッチ部291において、ヘッダH12が主軸として選択される。図7では、LS=0であるためヘッダHが主軸として選択されるが、図9では、LS=3であるためヘッダH12が主軸として選択される。
レーン固有部211-2、211-3へ入力される3番目のパケットは、レーン固有部211-0、211-1の3番目のパケットに比べて1サイクル遅れて到着している。
ヘッダH、H10より1サイクル後でヘッダH11,H12がマッチ部291に入力されると、ヘッダH12とマッチするエントリとしてヘッダH~H11が見つかる。よって、選択されたレーン401-3を除く全てのレーンのバッファ部231-iのエントリから、選択されたエントリ(ヘッダH12)とマッチするエントリ(H~H11)が見つかる。
マッチ部291は、時刻t13において、読み出し指示CTをバッファ部231-iそれぞれに送信する。バッファ部231-0への読み出し指示CTは、ヘッダHのブロック部232-0における位置と読み出しタイミング(時刻t14)を含む。バッファ部231-1への読み出し指示CTは、ヘッダH10のブロック部232-1における位置と読み出しタイミング(時刻t14)を含む。バッファ部231-2への読み出し指示CTは、ヘッダH11のブロック部232-2における位置と読み出しタイミング(時刻t14)を含む。バッファ部231-3への読み出し指示CTは、ヘッダH12のブロック部232-3における位置と読み出しタイミング(時刻t14)を含む。
バッファ部231-iは、読み出し指示に基づいて、時刻t14でヘッダH~H12(=H9-12)をそれぞれ読み出して出力する。
ここで、スキューバリアブルが有る場合にカットスルー方式による転送を可能とする他の形態を比較例として示す。
最初に実施の形態のレーン単体による面積の削減を示す。
図10は、比較例の2つのレーンのバッファ部を示す図である。
バッファ部831-0には、レーン0を介して受信したパケットが到着順に記憶されている。バッファ部831-1には、レーン1を介して受信したパケットが到着順に記憶されている。
バッファ部831-0からパケットのヘッダH0A~H0Dが検出される。バッファ部831-0からパケットのヘッダH1A~H1Dが検出される。比較例では、ヘッダH0AとのヘッダH1A~H1Dそれぞれとのマッチングを行う。また、ヘッダH0BとのヘッダH1A~H1Dそれぞれとのマッチングを行う。また、ヘッダH0CとのヘッダH1A~H1Dそれぞれとのマッチングを行う。また、ヘッダH0DとのヘッダH1A~H1Dそれぞれとのマッチングを行う。例えば、ヘッダH0AとヘッダH1Aのマッチングが成功した場合に、バッファ部831-0、831-1は、ヘッダH0AとヘッダH1Aとをタイミングを合わせてそれぞれ出力する。
図11は、実施の形態の2つのレーンのバッファ部を示す図である。
バッファ部231-0には、レーン0を介して受信したパケットが到着順に記憶されている。バッファ部231-1には、レーン1を介して受信したパケットが到着順に記憶されている。
バッファ部231-0からパケットのヘッダH0A~H0Bが検出される。バッファ部231-0からパケットのヘッダH1A~H1Bが検出される。実施の形態では、ヘッダH0AとのヘッダH1A~H1Bそれぞれとのマッチングを行う。また、ヘッダH0BとのヘッダH1A~H1Dそれぞれとのマッチングを行う。例えば、ヘッダH0AとヘッダH1Aのマッチングが成功した場合に、バッファ部231-0、231-1は、ヘッダH0AとヘッダH1Aとをタイミングを合わせてそれぞれ出力する。
スキューバリアブル有り且つ受信パケットにエラーが有る状況では、比較に比べて実施の形態はバッファ部に記憶可能なデータ量(バッファサイズ)が少なくて済む。これはバッファサイズがパケット長とスキュー保障値によって決定されるためである。マッチングされる2つのレーンのバッファ部のパケットが共に壊れている可能性がある場合、比較例では、自レーンのパケット自体が壊れていることを隠ぺいするためにスキュー保障段数のみではなく、さらに自レーンの故障を補正するためのバッファを余分に持つ。これは、規定スキュー保障値を外部保障することができないためである。一方で実施の形態ではマッチングの際に主軸として用いられるレーンのパケット部のデータにはエラーが無い事が保障されているため、比較例のような余剰バッファを持たなくてよい。
実施の形態によれば、バッファサイズを小さくすることができるため、回路規模を小さくすることが出来る。
図12は、比較例の受信側のチップの構成を示す図である。
比較例の受信側のチップは、レーン固有部811-iを有する。レーン固有部811-iは、レーンiから受信したデータを処理する。
レーン固有部811-iは、バッファ部831-iおよびマッチ部841-iを有する。
バッファ部831-iは、レーンiを介して受信したパケットを到着順に記憶する。
マッチ部841-iは、バッファ部831-iから受信したデータのマッチングを行い、読み出し位置と読み出しタイミングをバッファ部831-iに通知する。バッファ部831-iは、通知された読み出し位置と読み出しタイミングに従って、データを出力する。
図13は、実施の形態の受信側のチップの構成を示す図である。
受信側のチップは、レーン固有部211-i、レーン選択部281、およびマッチ部291を有する。
レーン固有部211-iは、送受信部(図13では不図示)およびバッファ部231-iを有する。
レーン固有部211-i、レーン選択部281、およびマッチ部291の処理については、上述のように図3~9を用いて説明済みであるため省略する。
図13は、レーンを複数束ねた観点より、実施の形態の特徴について説明する図である。図12の比較例のような独立した構造であると、全てのレーン間でマッチングをとり、その後に調停を行って出力を決定する。実施の形態は、マッチ部291を各レーン固有部211-iに配置させるのではなく、マッチ部291の数を1つにすることでマッチング数を減らし、回路・配線量を減少させる。さらにマッチ部291は、マッチングの主体となるレーンを決定し、マッチングの主体のバスにその選択されたレーンバスを結合する。マッチングの主体となるバスを選択することで並列にマッチするパターン数を減少させ、さらにその後の調停回路を削除する。独立構造の場合には各レーンのバッファ部からX個のエントリが有り、レーン数がNの場合、マッチング回数は、比較例では(=N(N-1)/2)となり、実施の形態ではN-1となり、大幅に削減されている。
図10~13に示すように、実施の形態はレーン単体・レーン全体としての改善を行う。実施の形態では、レーン単体では例えば2割から5割のバッファ量を削減してそれをレーン数倍しただけの削減がある。さらに比較例では、レーン全体としてはX*(N(N-1)/2)*N回のマッチングが必要である。対して、実施の形態ではマッチング回数はX*(N-1)でよい。なお、このマッチングをバス幅B(bit)で行うことになる。
実施の形態によれば、マッチ部の数が1つであるため、回路規模を小さくすることが出来る。
図14は、比較例のシステムの構成図である。
システム601は、送信装置701および受信装置801を有する。送信装置701および受信装置801は、例えば、LSI(Large-Scale Integration)等の回路である。
送信装置701と受信装置801は、複数のレーン901-iを介して接続されている。
送信装置701は、送信部711-iを有する。
送信装置701は、複数のレーン901-iを用いたシリアル通信によりデータの送信を行う。送信装置701から受信装置801へデータを送信する場合、送信装置701は送信データをレーン数に分割して複数のパケットを生成し、送信部711-iは、生成した複数のパケットそれぞれを対応するレーン901-iで受信装置801に送信する。
受信回路801は、それぞれのレーン901-iで受信したパケットを組み合わせて元の送信データを復元する。受信装置801は、レーン固有部811-iを有する。レーン固有部811-iは、受信部821-i、バッファ部831-i、およびマッチ部841を有する。受信部821-i、バッファ部831-i、およびマッチ部841の機能は、図12で説明したため省略する。
送信装置701と受信装置801間の通信は、高速シリアル転送が使用されており、各レーンのパケットは独立して転送される。ゆえに送信部711-iが全レーンにパケットを同時に出しても、受信タイミングがずれていることは多々ある。また、そのレーン間のタイミングのズレは時間と共に変動する。特にスキューバリアブルが有る環境では、そのスキュー差は大きい。比較例のシステム601にように各レーンが独立した構造である場合、マッチ部841-iを互いに繋ぐレーン間をまたぐバスを用いて、マッチングを取ることになる。そのバスのマッチング結果と調停により、バッファ部811-iからパケットが読み出され、最終的なデータが得られる。
比較例によれば、スキューバリアブルが有る場合にカットスルー方式による転送が可能となる。しかしながら、比較例では、マッチ部がレーンの数と同じだけ数だけ設置されている。そのため、回路実装を考慮すると、回路面積が大きくなり、実際に実現(実装)するのは困難である。
実施の形態のシステムは、回路規模の削減のために、全レーンに固定的に複数のエラーに対処できる回路を実装するのではなく、動的に割り当て可能な一つのエラー対策回路を有する。動的な割り当ては、従来の固定的なN個必要であったものを1個準備すればよいため、回路量は削減される。また、従来は多重故障の回路を組み込む必要があったが、実施の形態は一つのレーン故障を補正する回路を搭載する(相互レーン故障を補正しない)ことでも単体としての回路量を削減する。このように個数削減と単体での回路削減により、回路量を削減する。適切な動的割り当てがなされる(動的割り当てが故障レーンあたらない事、故障レーン同士のマッチングが発生しない)条件の下で、実施の形態は十分な耐故障性を持たせることができる。
実施の形態はエラー部位を回避するような適切な動的割り当てを行うために、対岸フローを用いる。エラーレーンを認識してそれを対岸へと通知し、そのレーンがマッチングの主軸にならないように割り当てさせる。これにより、回路が削減されても十分な耐故障性を持たせるための前提条件が満たされる。なお、この対岸フローとは対岸でのエラー検出と自岸でのエラー検出の両者ともを有意情報として取り扱い、レーン選択の判断に用いる。尚、結果的に一方のみ使われることもある。
なお、エラーが複数存在しても、少なくとも一つの良好なレーンが存在するならばそれを主軸として選択することにより、前提条件が守られる。すべてのレーンが不良である場合には、理論上は従来方式で救済できるように見えるが、全レーンでエラーが多発する状況であり、事実上ほぼ通信できない状態になっているため、結果的に救済できない状態に陥ることになる。通常ではそのようなケースは既に部品交換がなされている。
実施の形態は、効果的な省電力動作をすることが可能である。実施の形態により、各レーンは独立して動作でき、しかもクロック位相がずれていても動作可能である。各レーンのクロックをレーンを動作させたり停止させたりをオンライン(システム動作の停止無し)で実行可能になる。特に動作の停止に関して、従来はレーン間スキューを巨大化させる、クロックの位相をずれるような事態は許されず、ゆえにレーンの停止はデータ入出力部のみであり、クロックまでは停止していなかった。実施の形態はレーンのクロックから止めることが出来、ゆえに電力を削減することができる。スーパーコンピュータや大規模データシステムではそのネットワーク帯域を全部使っている状況は極めて稀であり、ゆえに実施の形態のようにオンラインでダイナミックに各レーンの停止再開が可能な機能は有効である。
実施の形態に係るシステムによれば、スキューが変化する場合、すなわちスキューバリアブル有りの場合に、カットスルー転送を行うことができる。
実施の形態に係るシステムによれば、バッファサイズを小さくすることができるため、回路規模を小さくすることが出来る。
実施の形態に係るシステムによれば、マッチ部の数が1つであるため、回路規模を小さくすることが出来る。
実施の形態によれば、例えば、チップ間の転送(1HOP)の時間が従来は200-350ns程度だったのが80-90ns程度へ改善しながら、故障発生・縮退する際にもハングせず漸次性能縮退のような安定な継続稼働を実現できる。
以上の実施の形態に関し、さらに以下の付記を開示する。
(付記1)
データ送信装置と、複数の伝送路を介して前記データ送信装置と接続するデータ受信装置と、を備える送受信システムにおいて、
前記データ受信装置は、
前記複数の伝送路ごとに設けられ、前記データ送信装置から受信した受信データのエラーをそれぞれ検出する複数のエラー検出部と、
前記複数の伝送路ごとに設けられ、前記受信データをそれぞれ記憶するとともに、通知された読み出しタイミングで読み出し位置から受信データを読み出す複数の記憶部と、
前記複数のエラー検出部によるエラー検出結果に基づいて、前記複数の伝送路のいずれかを選択する選択部と、
前記選択部が選択した伝送路に対応する記憶部の受信データと、前記伝送路に対応する記憶部以外の記憶部それぞれの受信データとを照合し、照合した結果に基づいて、前記複数の記憶部それぞれに対して、前記読み出しタイミングと前記読み出し位置とを通知する通知部と、
を有する送受信システム。
(付記2)
前記選択部は、前記複数の伝送路のうち、エラーの検出回数が一番少ない伝送路を選択する付記1記載の送受信システム。
(付記3)
前記受信装置は、前記複数の伝送路ごとのエラー検出結果を前記データ送信装置に送信する付記1または2記載の送受信システム。
(付記4)
前記通知部は、前記複数の記憶部それぞれに記憶された前記受信データのうち、パケットのヘッダを用いて照合を行う付記1乃至3のいずれか1項に記載の送受信システム。
(付記5)
複数の伝送路を介して前記データ送信装置と接続するデータ受信装置において、
前記データ受信装置は、
前記複数の伝送路ごとに設けられ、前記データ送信装置から受信した受信データのエラーをそれぞれ検出する複数のエラー検出部と、
前記複数の伝送路ごとに設けられ、前記受信データをそれぞれ記憶するとともに、通知された読み出しタイミングで読み出し位置から受信データを読み出す複数の記憶部と、
前記複数のエラー検出部によるエラー検出結果に基づいて、前記複数の伝送路のいずれかを選択する選択部と、
前記選択部が選択した伝送路に対応する記憶部の受信データと、前記伝送路に対応する記憶部以外の記憶部それぞれの受信データとを照合し、照合した結果に基づいて、前記複数の記憶部それぞれに対して、前記読み出しタイミングと前記読み出し位置とを通知する通知部と、
を有するデータ受信装置。
(付記6)
前記選択部は、前記複数の伝送路のうち、エラーの検出回数が一番少ない伝送路を選択する付記5記載のデータ受信装置。
(付記7)
前記データ受信装置は、前記複数の伝送路ごとのエラー検出結果を前記データ送信装置に送信する付記5または6記載のデータ受信装置。
(付記8)
前記通知部は、前記複数の記憶部それぞれに記憶された前記受信データのうち、パケットのヘッダを用いて照合を行う付記5乃至7のいずれか1項に記載のデータ受信装置。
(付記9)
複数の伝送路を介して前記データ送信装置と接続するデータ受信装置のデータ受信方法において、
前記データ受信装置が有する、前記複数の伝送路ごとに設けられた複数のエラー検出部が、前記データ送信装置から受信した受信データのエラーをそれぞれ検出し、
前記データ受信装置が有する選択部が、前記複数のエラー検出部によるエラー検出結果に基づいて、前記複数の伝送路のいずれかを選択し、
前記データ受信装置が有する通知部が、前記選択部が選択した伝送路に対応する記憶部の受信データと、前記伝送路に対応する記憶部以外の記憶部それぞれの受信データとを照合し、
前記通知部が、照合した結果に基づいて、前記複数の記憶部それぞれに対して、読み出しタイミングと読み出し位置とを通知し、
前記データ受信装置が有する、前記複数の伝送路ごとに設けられ、前記受信データをそれぞれ記憶する複数の記憶部が、通知された前記読み出しタイミングで前期読み出し位置から受信データを読み出す、
データ受信方法。
(付記10)
前記選択する処理は、前記複数の伝送路のうち、エラーの検出回数が一番少ない伝送路を選択する付記9記載のデータ受信方法。
(付記11)
前記複数の伝送路ごとのエラー検出結果を前記データ送信装置に送信する処理をさらに備える付記9または10記載のデータ受信方法。
(付記12)
前記照合する処理は、前記複数の記憶部それぞれに記憶された前記受信データのうち、パケットのヘッダを用いて照合を行う付記9乃至11のいずれか1項に記載のデータ受信方法。
101 システム
201 チップ
211 レーン固有部
221 送受信部
231 バッファ部
232 ブロック部
233 リードポインタ
281 レーン選択部
291 マッチ部
292 セレクタ
293 照合部
294 制御部
301 チップ
311 レーン固有部
321 送受信部
331 バッファ部
381 レーン選択部
391 マッチ部

Claims (5)

  1. データ送信装置と、複数の伝送路を介して前記データ送信装置と接続するデータ受信装置と、を備える送受信システムにおいて、
    前記データ受信装置は、
    前記複数の伝送路ごとに設けられ、前記データ送信装置から受信した受信データのエラーをそれぞれ検出する複数のエラー検出部と、
    前記複数の伝送路ごとに設けられ、前記受信データをそれぞれ記憶するとともに、通知された読み出しタイミングで読み出し位置から受信データを読み出す複数の記憶部と、
    前記複数のエラー検出部によるエラー検出結果に基づいて、前記複数の伝送路のいずれかを選択する選択部と、
    前記選択部が選択した伝送路に対応する記憶部の受信データと、前記伝送路に対応する記憶部以外の記憶部それぞれの受信データとを照合し、照合した結果に基づいて、前記複数の記憶部それぞれに対して、前記読み出しタイミングと前記読み出し位置とを通知する通知部と、
    を有する送受信システム。
  2. 前記選択部は、前記複数の伝送路のうち、エラーの検出回数が一番少ない伝送路を選択する請求項1記載の送受信システム。
  3. 前記データ受信装置は、前記複数の伝送路ごとのエラー検出結果を前記データ送信装置に送信する請求項1または2記載の送受信システム。
  4. 複数の伝送路を介してデータ送信装置と接続するデータ受信装置において、
    前記データ受信装置は、
    前記複数の伝送路ごとに設けられ、前記データ送信装置から受信した受信データのエラーをそれぞれ検出する複数のエラー検出部と、
    前記複数の伝送路ごとに設けられ、前記受信データをそれぞれ記憶するとともに、通知された読み出しタイミングで読み出し位置から受信データを読み出す複数の記憶部と、
    前記複数のエラー検出部によるエラー検出結果に基づいて、前記複数の伝送路のいずれかを選択する選択部と、
    前記選択部が選択した伝送路に対応する記憶部の受信データと、前記伝送路に対応する記憶部以外の記憶部それぞれの受信データとを照合し、照合した結果に基づいて、前記複数の記憶部それぞれに対して、前記読み出しタイミングと前記読み出し位置とを通知する通知部と、
    を有するデータ受信装置。
  5. 複数の伝送路を介してデータ送信装置と接続するデータ受信装置のデータ受信方法において、
    前記データ受信装置が有する、前記複数の伝送路ごとに設けられた複数のエラー検出部が、前記データ送信装置から受信した受信データのエラーをそれぞれ検出し、
    前記データ受信装置が有する選択部が、前記複数のエラー検出部によるエラー検出結果に基づいて、前記複数の伝送路のいずれかを選択し、
    前記データ受信装置が有する通知部が、前記選択部が選択した伝送路に対応する記憶部の受信データと、前記伝送路に対応する記憶部以外の記憶部それぞれの受信データとを照合し、
    前記通知部が、照合した結果に基づいて、前記複数の記憶部それぞれに対して、読み出しタイミングと読み出し位置とを通知し、
    前記データ受信装置が有する、前記複数の伝送路ごとに設けられ、前記受信データをそれぞれ記憶する複数の記憶部が、通知された前記読み出しタイミングで前期読み出し位置から受信データを読み出す、
    データ受信方法。
JP2018060628A 2018-03-27 2018-03-27 送受信システム、データ受信装置、およびデータ受信方法 Active JP7069936B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2018060628A JP7069936B2 (ja) 2018-03-27 2018-03-27 送受信システム、データ受信装置、およびデータ受信方法
US16/268,025 US10936393B2 (en) 2018-03-27 2019-02-05 Transmission and reception system, data reception apparatus, and data reception method using plural transmision paths

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018060628A JP7069936B2 (ja) 2018-03-27 2018-03-27 送受信システム、データ受信装置、およびデータ受信方法

Publications (2)

Publication Number Publication Date
JP2019176263A JP2019176263A (ja) 2019-10-10
JP7069936B2 true JP7069936B2 (ja) 2022-05-18

Family

ID=68056254

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018060628A Active JP7069936B2 (ja) 2018-03-27 2018-03-27 送受信システム、データ受信装置、およびデータ受信方法

Country Status (2)

Country Link
US (1) US10936393B2 (ja)
JP (1) JP7069936B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7416211B2 (ja) 2020-03-27 2024-01-17 日本電気株式会社 通信システム
JP7381519B2 (ja) * 2021-06-09 2023-11-15 アンリツ株式会社 誤り率測定装置および誤り率測定方法
US11880265B2 (en) * 2021-12-21 2024-01-23 Nvidia Corporation Error rate interrupts in hardware for high-speed signaling interconnect

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015091094A (ja) 2013-11-07 2015-05-11 富士通セミコンダクター株式会社 パラレルデータ受信回路
JP2015092729A (ja) 2012-02-22 2015-05-14 日本電信電話株式会社 マルチレーン伝送システムにおける個別レーン監視方法
WO2017098950A1 (ja) 2015-12-10 2017-06-15 ソニー株式会社 受信装置、及び、データ処理方法

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
SE516073C2 (sv) 1993-02-15 2001-11-12 Ericsson Telefon Ab L M Sätt för hantering av redundanta väljarplan i paketväljare och paketväljare för utförande av sättet
JP4050162B2 (ja) 2003-02-25 2008-02-20 株式会社日立製作所 異なる冗長構成が可能なネットワーク転送装置
US7409594B2 (en) * 2004-07-06 2008-08-05 Intel Corporation System and method to detect errors and predict potential failures
US7836352B2 (en) * 2006-06-30 2010-11-16 Intel Corporation Method and apparatus for improving high availability in a PCI express link through predictive failure analysis
JP5544896B2 (ja) * 2010-01-22 2014-07-09 富士通株式会社 受信回路、情報処理装置、およびバッファ制御方法
JP2012199724A (ja) * 2011-03-19 2012-10-18 Fujitsu Ltd データ送信装置、データ受信装置、データ送受信装置及びデータ送受信装置の制御方法
JP6221328B2 (ja) * 2013-04-30 2017-11-01 富士通株式会社 受信装置、情報処理装置及びデータ受信方法
JP2014241057A (ja) * 2013-06-12 2014-12-25 ソニー株式会社 インターフェース制御回路、メモリシステム、および、インターフェース制御回路の制御方法
JP2015228541A (ja) 2014-05-30 2015-12-17 株式会社日立製作所 ネットワーク装置及び時刻差測定方法
KR20180040959A (ko) * 2016-10-13 2018-04-23 에스케이하이닉스 주식회사 복수개의 전송레인들을 갖는 데이터 전송 시스템 및 데이터 전송 시스템의 전송 데이터 테스트 방법

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015092729A (ja) 2012-02-22 2015-05-14 日本電信電話株式会社 マルチレーン伝送システムにおける個別レーン監視方法
JP2015091094A (ja) 2013-11-07 2015-05-11 富士通セミコンダクター株式会社 パラレルデータ受信回路
WO2017098950A1 (ja) 2015-12-10 2017-06-15 ソニー株式会社 受信装置、及び、データ処理方法

Also Published As

Publication number Publication date
JP2019176263A (ja) 2019-10-10
US20190303227A1 (en) 2019-10-03
US10936393B2 (en) 2021-03-02

Similar Documents

Publication Publication Date Title
US8767747B2 (en) Method for transferring data packets in a communication network and switching device
JP7069936B2 (ja) 送受信システム、データ受信装置、およびデータ受信方法
US6952419B1 (en) High performance transmission link and interconnect
JP5148707B2 (ja) 待ち行列形成方法
EP2224644B1 (en) A protection method, system and device in the packet transport network
JP3709795B2 (ja) コンピュータシステムと、コンピュータシステム内のモジュール間の通信方法
JP4748316B2 (ja) パケット伝送方法及びパケット伝送システム
US6912196B1 (en) Communication network and protocol which can efficiently maintain transmission across a disrupted network
KR101471733B1 (ko) 통신 인터페이스 및 프로토콜
US7660239B2 (en) Network data re-routing
US6721335B1 (en) Segment-controlled process in a link switch connected between nodes in a multiple node network for maintaining burst characteristics of segments of messages
US20010030964A1 (en) Method and apparatus for maintaining packet ordering with error recovery among multiple outstanding packets between two devices
JP2018042108A (ja) パケット転送装置及びパケット転送方法
US6834319B1 (en) Tunnel device for an input/output node of a computer system
JP5729902B2 (ja) 並行シリアル通信方法
US9641446B2 (en) Control method, information processing system, and information processing apparatus
CN116170118A (zh) 用于具有prp和数据包缓存的冗余传输系统的方法
US7324564B2 (en) Transmitting odd-sized packets over a double data rate link
JP2007215142A (ja) フレームバッファ監視方法及び装置
KR102024521B1 (ko) 전송 장치 및 프레임 전송 방법
CN111835632A (zh) 用于操作具有tsn能力的网络耦合元件的方法
US20030043833A1 (en) DMA controller system
JP4655733B2 (ja) リング型二重化ネットワークにおける受信方法及び装置
WO2010058693A1 (ja) パケット転送装置、プロセッサ間通信システム、並列プロセッサシステムおよびパケット転送方法
US8554943B1 (en) Method and system for reducing packet latency in networks with both low latency and high bandwidths requirements

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210113

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220222

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220308

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20220308

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20220308

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: 20220405

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220418

R150 Certificate of patent or registration of utility model

Ref document number: 7069936

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150