JP6069897B2 - データ伝送装置、およびデータ伝送方法 - Google Patents

データ伝送装置、およびデータ伝送方法 Download PDF

Info

Publication number
JP6069897B2
JP6069897B2 JP2012128345A JP2012128345A JP6069897B2 JP 6069897 B2 JP6069897 B2 JP 6069897B2 JP 2012128345 A JP2012128345 A JP 2012128345A JP 2012128345 A JP2012128345 A JP 2012128345A JP 6069897 B2 JP6069897 B2 JP 6069897B2
Authority
JP
Japan
Prior art keywords
transmission
data
lane
unit
lanes
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.)
Expired - Fee Related
Application number
JP2012128345A
Other languages
English (en)
Other versions
JP2013254274A (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 JP2012128345A priority Critical patent/JP6069897B2/ja
Priority to US13/860,562 priority patent/US20130326286A1/en
Priority to EP13163324.0A priority patent/EP2672642A3/en
Publication of JP2013254274A publication Critical patent/JP2013254274A/ja
Application granted granted Critical
Publication of JP6069897B2 publication Critical patent/JP6069897B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Systems (AREA)
  • Communication Control (AREA)
  • Detection And Prevention Of Errors In Transmission (AREA)

Description

本発明は、データ伝送装置、およびデータ伝送方法に関する。
従来、伝送経路を介して1ビット幅のデータを送信するシリアル伝送技術が知られている。このようなシリアル伝送技術の一例として、Peripheral Component Interconnect Express(PCIe)でデータの送受信を行うデータ伝送装置が知られている。
このようなデータ伝送装置は、データの転送性能を向上させるため、複数の伝送経路(レーン)を介してデータの送受信を行うマルチリンク方式を用いて、データの送受信を行う場合がある。以下、図面を用いて、マルチリンク方式を用いてデータの送受信を行う際に、各伝送経路が送信するデータの内容について説明する。
図17は、各レーンが送信するデータの一例を説明するための図である。図17には、データ伝送装置が8つのレーン#0〜#7を介して送信するデータのパケットフォーマットを記載した。例えば、データ伝送装置は、各レーン#0〜#7に対して、「STP」、「TLP」、「Cyclic Redundancy Check(CRC)」、「END」を含む256ビットのデータを先頭から順に振り分ける。
具体的には、データ伝送装置は、各レーン#0〜#7に対して振り分ける「TLP」から「CRC」を算出する。そして、データ伝送装置は、「STP」、「TLP」、「CRC」、「END」を含むデータの先頭から、1送受信サイクルごとにビットずつのデータを順に振り分ける。その後、データ伝送装置は、振り分けたデータを各レーン#0〜#7から送信する。
ここで、「STP」とは、送受信するデータの先頭を示すデータであり、「TLP」とは、送受信するデータの本体であり、「END」とは送受信するデータの終わりを示すデータである。また、「CRC」とは、TLPから算出される巡回冗長検査用のデータであり、伝送時に生じたエラーを32ビットまで検出可能なデータである。
図18は、各レーンにTLPを振り分ける順序を説明するための図である。例えば、データ伝送装置は、各レーン#0〜#7に対して、図18中の矢印に示す順にTLPを振り分ける。そして、データ伝送装置は、図18中の矢印に示す順で各レーン#0〜#7に振り分けたTLPに続き、TLPから生成した32ビットのCRCを8ビットずつ4つのレーンに振り分ける。
ここで、データ伝送装置は、マルチリンク方式でデータの送受信を行う際に、いずれかの伝送経路において故障が発生した場合には、伝送経路を縮退させ、故障が発生していない残りの伝送経路を用いてデータの送受信を行う。以下、図面を用いて、データ伝送装置が伝送経路の縮退時にデータを送信する処理について説明する。
図19は、縮退時に各レーンが送信するデータの一例を説明するための図である。図19には、レーン#5〜#7の何れかに故障が発生し、データの送受信を行う伝送経路をレーン#0〜#3に縮退させた例を示す。図19に示す例では、データ伝送装置は、図17に示したデータと同様のデータを各レーン#0〜#3に対して振り分ける。具体的には、データ伝送装置は、1送受信サイクルごとに、データの先頭から8ビットずつのデータを各レーン#0〜#3に対して順に振分ける。そして、データ伝送装置は、各レーン#0〜#3に振分けたデータを送信する。
特開2005−332359号公報 特開2006−186527号公報 特開2007−267392号公報
しかしながら、送受信サイクルごとに、複数のレーンに対してデータを順に振分ける技術では、送受信サイクルを跨いで伝送エラーが発生すると、CRCが検出可能なビット数をバーストエラーのビット数が超えてしまい、エラーの検出を行えない場合がある。
図20は、サイクルを跨ぐエラーを検出するための図である。例えば、図20では、レーン#1を介して送信するデータのうち、送受信サイクル2と送受信サイクル3を跨ぐ範囲で4ビットのエラーが発生する。このような場合には、エラーが発生した最初のビットから最後のビットまでの範囲がバーストエラーの範囲となる。
しかし、各レーン#0〜#7には、1送受信サイクルごとに、データの先頭から8ビットずつのデータが順に振分けられている。このため、図20に示す例では、図20中の斜線で示す60ビットのデータがバーストエラーの範囲となる。すると、データ受信側のデータ伝送装置は、CRCが検出可能なエラーのビット長をバーストエラーのビット長が超えているため、バーストエラーを検出できない。
また、データ伝送装置は、縮退時においても同様に、各レーン#0〜#3に対して、1送受信サイクルごとに、データの先頭から8ビットずつのデータを振分ける。このため、送受信サイクルを跨いだエラーが発生した場合は、CRCが検出可能なエラーのビット数をバーストエラーのビット数が超えてしまうため、データ受信側のデータ伝送装置がバーストエラーを検出できない場合がある。
1つの側面では、本発明は、マルチリンク方式におけるバーストエラー耐性の向上を目的とする。
1つの側面では、複数の伝送路を介してデータの送信を行うデータ伝送装置である。データ伝送装置は、伝送路における故障を検出する。そして、データ伝送装置は、伝送路における故障が検出されない場合は、全ての伝送路を選択し、いずれかの伝送路で故障を検出した場合には、故障を検出していない伝送路から全送信部の半分の数に1を加算した数の伝送路を選択する。また、データ伝送装置は、選択した伝送路のうち、いずれか1つを除く伝送路を介して所定の時間内に送信するデータからエラーを検出する冗長データを生成する。その後、データ伝送装置は、選択した伝送路のうち、いずれか1つを除く伝送路を介して、送信対象となるデータを送信し、該データを送信しなかった1つの送信部を介して、冗長データをデータと同時期に送信する。
1実施形態では、マルチリンク方式におけるバーストエラー耐性を向上させる。
図1は、実施例1に係る情報処理システムの一例を説明するための図である。 図2は、実施例1に係るシリアルインタフェースポートの機能構成を説明するための図である。 図3は、レーンリバーサル機能を説明するための図である。 図4は、実施例1に係るシリアルインタフェースポートが各送信レーンに振り分けるデータを説明するための図である。 図5は、通常時におけるCRCの演算順序を説明するための図である。 図6は、実施例1に係るシリアルインタフェースポートが縮退時に振り分けるデータを説明するための図である。 図7は、縮退時に送信するCRCの演算順序を説明するための図である。 図8は、従来のデータ伝送装置が縮退時に振り分けるデータを説明するための図である。 図9は、従来のデータ伝送装置が縮退時にCRCを演算する順序を説明するための図である。 図10は、縮退時に正常なレーンからリンク構成を選択する論理の一例を説明するための図である。 図11は、縮退時に正常な送信レーンから使用する送信レーンを選択する回路の一例を説明するための図である。 図12は、擬似物理レーン番号とデータパターンの対応を説明するための図である。 図13は、データ受信側の擬似物理レーン番号とデータパターンの対応を説明するための図である。 図14は、バイトストライピング回路の論理を説明するための図である。 図15は、バイトアンストライピング回路の論理を説明するための図である。 図16は、リンク構成部が実行する処理の流れを説明するためのフローチャートである。 図17は、各レーンが送信するデータの一例を説明するための図である。 図18は、各レーンにTLPを振り分ける順序を説明するための図である。 図19は、縮退時に各レーンが送信するデータの一例を説明するための図である。 図20は、サイクルを跨ぐエラーを検出するための図である。
以下に添付図面を参照して本願に係るデータ伝送装置、およびデータ伝送方法について説明する。
以下の実施例1では、図1を用いて、シリアル伝送を実行する情報処理システムの一例を説明する。図1は、実施例1に係る情報処理システムの一例を説明するための図である。なお、情報処理システム1は、少なくとも、シリアル伝送によってデータの送受信を行う2つのCentral Processing Unit(CPU)を有する。
図1に示すように、情報処理システム1は、複数のシリアル伝送路、すなわち複数のレーンでCPU10、CPU11を有する。また、CPU10は、複数のコア12、13、パケットルーティング部20、シリアルインタフェースポート30を有する。また、CPU11は、CPU10と同様に、複数のコア68、69、パケットルーティング部67、シリアルインタフェースポート50を有する。
また、CPU10とCPU11は、CPU10からCPU11にデータを送信する際に用いられる8本のレーンと、CPU11からCPU10にデータを送信する際に用いられる8本のレーンによって接続されている。ここで、各レーンは、データを1ビットずつ送信するシリアル伝送路である。
なお、図1に示す例では、CPU10が有するコア12、13について図示したが、CPU10は、さらに複数のコアを有するものとする。また、CPU11も同様に、コア68、69以外にも、さらに複数のコアを有するものとする。また、パケットルーティング部67は、パケットルーティング部20と同様の機能を発揮するものとして、説明を省略する。
また、以下の説明においては、コア13、68、69は、コア12と同様の機能を発揮するものとして、説明を省略する。また、以下の説明においては、各レーンが所定のビット数のデータを送信する時間を1送受信サイクルと記載する。なお、1送受信サイクル中に各レーンが送信するデータのビット数は任意の値を設定することができるが、以下の説明においては、各レーンは、1送受信サイクル中に20ビットのデータを送信するものとする。
また、以下の説明では、CPU10とCPU11とが送信側および受信側ともに8本のレーンでデータの送受信を行う例について説明するが、実施例はこれに限定されるものではなく、任意の数のレーンでデータの送受信を行うこととしてもよい。また、以下の説明においては、送信側の8本のレーンを送信レーン#0〜#7と記載し、受信側の8本のレーンを受信レーン#0〜#7と記載する。
コア12は、CPU10が実行するプログラムに従って、演算処理を実行する演算処理装置である。また、コア12は、CPU11が有するコア68、69にデータを送信する場合には、送信するデータとデータの送信要求をパケットルーティング部20に出力する。また、パケットルーティング部20は、コア12からデータの送信要求を受信すると、送信するデータをシリアルインタフェースポート30に出力する。
シリアルインタフェースポート30は、複数のレーンを介してシリアルインタフェースポート50と接続されており、例えば、PCIe等の技術を用いて、データのシリアル伝送を行う。具体的には、シリアルインタフェースポート30は、各レーンにおける故障の発生を監視する。そして、シリアルインタフェースポート30は、何れかのレーンにおいて故障を検知した場合は、データを送信する8本のレーンのうち、故障が発生していない5本のレーンを選択し、選択した5本のレーンを用いてデータの送信を行う。
すなわち、シリアルインタフェースポート30は、全てのレーンから故障が検出されていない通常時においては、8本の送信レーン#0〜#7を介してデータの送信を行う。また、シリアルインタフェースポート30は、何れかのレーンから故障が発生し、伝送路を縮退させる縮退時においては、故障が発生していない5本の送信レーンを選択し、選択した5本の送信レーンを用いてデータの送信を行う。
ここで、シリアルインタフェースポート30は、通常時においては、8本の送信レーンから7本の送信レーンを選択し、1送受信サイクル内に送信するデータを7本の送信レーンに振り分ける。また、シリアルインタフェースポート30は、7本の送信レーンに振り分けるデータからエラーを検出するCRCを生成し、生成したCRCの残り1本の送信レーンに振り分ける。そして、シリアルインタフェースポート30は、7本の送信レーンに振り分けたデータと、1本の送信レーンに振り分けたデータから生成したCRCとを、1送受信サイクル内に送信する。
また、シリアルインタフェースポート30は、何れかの送信レーンにおいてエラーを検出した場合は、送信レーンの数を縮退させる。詳細には、シリアルインタフェースポート30は、故障が検出された送信レーンが2本以下であるか否かを判定する。そして、シリアルインタフェースポート30は、故障が検出された送信レーンが2本以下である場合は、故障が検出されていない送信レーンから5本のレーンを選択する。
そして、シリアルインタフェースポート30は、選択した送信レーンのうち4本のレーンに対して、データの振り分けを行い、残りの1つの送信レーンに対して、4本の送信レーンに振り分けるデータから生成したCRCを振り分ける。そして、シリアルインタフェースポート30は、データとCRCとを送信する。
なお、シリアルインタフェースポート30は、縮退時においては、2送受信サイクルでデータを送信する。例えば、シリアルインタフェースポート30は、1送受信サイクル目においては、4つの送信レーンに対して20ビットずつのデータを振り分け、振り分ける80ビットのデータからエラーを検出するCRCを生成し、生成したCRCを残りの1つの送信レーンに振り分ける。そして、シリアルインタフェースポート30は、5つの送信レーンに振り分けたデータとCRCとを同じ送受信サイクル内に送信する。
続いて、シリアルインタフェースポート30は、2送受信サイクル目においては、3つのレーンに対して20ビットずつのデータを振り分け、1つの送信レーンに20ビットのリザーブ(rsv)等のダミーデータを振り分ける。また、シリアルインタフェースポート30は、3つの送信レーンに対して振り分けるデータと1つの送信レーンに対して振り分けるダミーデータからCRCを生成し、残り1つの送信レーンに振り分ける。そして、シリアルインタフェースポート30は、各送信レーンに振り分けたデータとダミーデータとCRCとを同じ送受信サイクル内に送信する。
以下、図2を用いて、シリアルインタフェースポート30が実行する処理を具体的に説明する。図2は、実施例1に係るシリアルインタフェースポートの機能構成を説明するための図である。
図2に示す例では、シリアルインタフェースポート30は、送信データ生成部33、CRC生成部34、バイトストライピング回路35、コントロールビット付加部36、複数の送信部37〜39、制御情報生成部40を有する。また、シリアルインタフェースポート30は、エラー検出部41、リンク構成部42、複数の受信部43〜45、バイトアンストライピング回路46、CRC検査部47、受信データ解析部48を有する。
一方、シリアルインタフェースポート50は、複数の受信部51〜53、バイトアンストライピング回路54、受信データ解析部55、CRC検査部56、エラー検出部57、リンク構成部58を有する。また、シリアルインタフェースポート50は、制御情報生成部59、送信データ生成部60、CRC生成部61、バイトストライピング回路62、コントロールビット付加部63、複数の送信部64〜66を有する。
なお、以下の説明においては、複数の受信部51〜53は、複数の受信部43〜45と同様の機能を発揮し、バイトアンストライピング回路54は、バイトアンストライピング回路46と同様の機能を発揮するものとして、それぞれ説明を省略する。また、受信データ解析部55は受信データ解析部48と同様の機能を発揮し、CRC検査部56はCRC検査部47と同様の機能を発揮し、エラー検出部57は、エラー検出部41と同様の機能を発揮するものとして、それぞれ説明を省略する。
また、リンク構成部58は、リンク構成部42と同様の機能を発揮し、制御情報生成部59は、制御情報生成部40と同様の機能を発揮し、送信データ生成部60は、送信データ生成部33と同様の機能を発揮するものとして、それぞれ説明を省略する。また、CRC生成部61は、CRC生成部34と同様の機能を発揮し、バイトストライピング回路62はバイトストライピング回路35と同様の機能を発揮するものとして、それぞれ説明を省略する。
また、コントロールビット付加部63は、コントロールビット付加部36と同様の機能を発揮し、複数の送信部64〜66は、複数の送信部37〜39と同様の機能を発揮するものとして、それぞれ説明を省略する。
以下、シリアルインタフェースポート30が有する各部33〜48について説明する。送信データ生成部33は、CPU10がCPU11に対して送信するデータを生成する。具体的には、送信データ生成部33は、パケットルーティング部20から送信するデータを受信すると、受信するデータを所定のビット長に分割する。
例えば、送信データ生成部33は、通常時においては、受信したデータを128ビットのデータ長に分割し、パケットの先頭を示す2ビットのデータとパケットの末尾を示す2ビットのデータと1ビットのrsvを付加した133ビットのデータを生成する。そして、送信データ生成部33は、生成した133ビットのデータをCRC生成部34とバイトストライピング回路35に出力する。
また、送信データ生成部33は、エラー検出部41からエラーを検出した旨の通知を受信した場合、すなわち縮退時には、以下の処理を実行する。まず、送信データ生成部33は、受信したデータを128ビットのデータ長に分割し、パケットの先頭を示す2ビットのデータとパケットの末尾を示す2ビットのデータと1ビットのrsvを付加した133ビットのデータを生成する。そして、送信データ生成部33は、生成した133ビットのデータを2送受信サイクルに分けてCRC生成部34とバイトストライピング回路35に出力する。
詳細には、送信データ生成部33は、最初の1送受信サイクル目において、133ビットのデータのうち76ビットのデータをCRC生成部34とバイトストライピング回路35に出力する。そして、送信データ生成部33は、続く2送受信サイクル目において、残りの57ビットに19ビットのrsvを付加した76ビットのデータを生成し、生成したデータをCRC生成部34とバイトストライピング回路35に出力する。
CRC生成部34は、通常時においては、送信レーン#0〜#7のうちいずれか1つの送信レーンを除く7本の送信レーンを介して送信するデータから、エラーを検出するCRCを生成する。また、CRC生成部34は、縮退時においては、エラーが検出されなかった5本の送信レーンのうちいずれか1つの送信レーンを除く4本の送信レーンを介して送信するデータから、エラーを検出するCRCを生成する。
ここで、CRC生成部34は、通常時、および縮退時において、各送信レーンが1送受信サイクル内に送信するデータと同じ長さのCRCを生成する。すなわち、CRC生成部34は、通常時、または縮退時において、いずれか1つの送信レーンが1送受信サイクル内に送信するデータ長と同じ長さのエラーを検出することができるCRCを生成する。そして、CRC生成部34は、生成したCRCをバイトストライピング回路35に出力する。
例えば、CRC生成部34は、通常時において、送信データ生成部33から133ビットのデータを受信する。すると、CRC生成部34は、受信したデータを先頭から順に用いて、19ビットのCRCを生成する。そして、CRC生成部34は、生成した19ビットのCRCをバイトストライピング回路35に出力する。
また、CRC生成部34は、エラー検出部41からエラーを検出した旨の通知を受信した場合、すなわち縮退時には、送信データ生成部33が2送受信サイクルに分けて出力する76ビットのデータそれぞれを用いて、19ビットのCRCを生成する。詳細には、CRC生成部34は、1送受信サイクル目において受信した76ビットのデータを先頭から順に用いて、19ビットのCRCを生成し、生成したCRCをバイトストライピング回路35に出力する。
続いて、CRC生成部34は、2送受信サイクル目において受信した76ビットのデータを先頭から順に用いて、19ビットのCRCを生成し、生成したCRCをバイトストライピング回路35に出力する。すなわち、CRC生成部34は、通常時、および縮退時の各送受信サイクルにおいて、各送信レーン#0〜#7が1送受信サイクル内に送信するデータから、いずれか1つの送信レーンが送信するデータと同じ長さのバーストエラーを検出するCRCを生成する。
後述するように、シリアルインタフェースポート30は、各送受信サイクルにおいて送信するデータからCRC生成部34が生成したCRCを、同一の送受信サイクル内に送信する。このため、シリアルインタフェースポート50は、いずれか1つの送信レーンにおいて送信したデータにバーストエラーが発生し続けたとしても、同じ送受信サイクル内に送信したCRCを用いてバーストエラーを検出することができる。
なお、CRC生成部34は、任意の計算式を用いて、CRCを生成してよい。例えば、CRC生成部34は、データを所定の変数xについての多項式G(x)=x19+x18+x+x+x+1についての係数とみなして計算し、計算結果に基づいてCRCを生成してもよい。
バイトストライピング回路35は、送信データ生成部33が生成したデータと、CRC生成部34が生成したCRCとを、各送信レーン#0〜#7に振り分ける。具体的には、バイトストライピング回路35は、データを送信する送信レーンの通知をリンク構成部42から受信する。
すると、バイトストライピング回路35は、通知された送信レーンに対して送信データ生成部33が生成したデータを均等に振り分ける。また、バイトストライピング回路35は、リンク構成部42からCRCを送信する送信レーンの通知を受信する。すると、バイトストライピング回路35は、通知された送信レーンに対して、CRC生成部34が生成したCRCを振り分ける。
なお、バイトストライピング回路35は、データを振り分ける順番を示す論理レーン番号と、物理レーン番号との対応、または、論理レーン番号と擬似物理レーン番号との対応およびレーンリバーサルを適用する旨の通知を受ける。すると、バイトストライピング回路35は、受信した物理レーン番号の送信レーン、または擬似物理レーン番号が示す送信レーンに対して、通知された論理レーン番号が示す順番でデータの振分けを行う。
例えば、バイトストライピング回路35は、通常時においては、データを送信するレーンとして送信レーン#0〜#6の通知を受信し、CRCを送信するレーンとして送信レーン#7の通知を受信する。すると、バイトストライピング回路35は、送信レーン#0〜#6に対して、送信データ生成部33から受信したデータを19ビットずつ振り分け、CRC生成部34から受信した19ビットのCRCを送信レーン#6に振り分ける。そして、バイトストライピング回路35は、各レーン#0〜#7に振り分けたデータとCRCとを、コントロールビット付加部36にそれぞれ出力する。
また、例えば、バイトストライピング回路35は、縮退時においては、データを送信するレーンとして送信レーン#0〜#3の通知を受信し、CRCを送信するレーンとして送信レーン#4の通知を受信する。すると、バイトストライピング回路35は、送信レーン#0〜#3に対して、送信データ生成部33から受信する76ビットのデータを19ビットずつ振り分ける処理を、2送受信サイクルの間実行する。また、バイトストライピング回路35は、CRC生成部34から受信する19ビットのCRCを、送信レーン#4に対して振り分ける処理を、2送受信サイクルの間実行する。
コントロールビット付加部36は、バイトストライピング回路35が各送信レーン#0〜#7に振り分けたデータが、通常のデータパケットに含まれるデータであるか、データ転送を制御するための制御データであるかを示すコントロールビットを付加する。そして、コントロールビット付加部36は、コントロールビットを付加したデータを各送信部37〜39に出力する。
例えば、コントロールビット付加部36は、バイトストライピング回路35から受信したデータを送信する場合は、送信するデータが通常のデータパケットに含まれるデータ、いわゆるD−Codeであることを示すコントロールビットを付加する。また、コントロールビット付加部36は、データ転送を制御するための制御データ、いわゆるK−Codeを送信する場合は、制御情報生成部40から制御データを受信する。そして、コントロールビット付加部36は、制御情報生成部40から受信した制御データがK−Codeであることを示すコントロールビットを付加する。
なお、コントロールビット付加部36が付加するコントロールビットは、CRCの保護対象ではない。また、コントロールビット付加部36は、バイトストライピング回路35がいずれかの送信レーンに振り分けたCRCに対しても、コントロールビットを付加する。
複数の送信部37〜39は、それぞれ異なる送信レーン#0〜#7を介してデータをシリアル伝送する。具体的には、各送信部37〜39は、各送信レーン#0〜#7に振り分けられたデータおよびCRCを、それぞれ異なる送信レーン#0〜#7を介して、シリアルインタフェースポート50に送信する。
制御情報生成部40は、リンク構成部42からの要求に応じて、K−Codeを生成し、生成したK−Codeをコントロールビット付加部36に出力する。例えば、制御情報生成部40は、各送信部37〜39のデータ送受信タイミングを調整するためのリトレーニングを実行する場合には、リトレーニング用のK−Codeを生成し、生成したK−Codeをコントロールビット付加部36に出力する。
エラー検出部41は、各送信レーン#0〜#7における故障を検出する。例えば、エラー検出部41は、リンク構成部42を介して、各受信部43〜45が受信したデータを取得する。そして、エラー検出部41は、取得したデータから、CPU10が実行するプログラム等によって、各送信レーン#0〜#7におけるエラーが検出された場合には、エラーが発生したと識別する。そして、エラー検出部41は、エラーを検出した旨をリンク構成部42に通知し、エラーを検出した旨を送信データ生成部33およびCRC生成部34に通知する。
リンク構成部42は、エラー検出部41がエラーを検出していない場合は、全ての送信レーン#0〜#7を選択し、選択した送信レーン#0〜#7をバイトストライピング回路35に通知する。また、リンク構成部42は、エラー検出部41がエラーを検出した場合には、制御情報生成部40にリトレーニングの実行を指示する。そして、リンク構成部42は、リトレーニングの結果を用いて、エラーの原因となる故障レーンを特定する。
また、リンク構成部42は、エラーを検出していない送信レーンから5本の送信レーンを選択することができるか否かを判別する。そして、リンク構成部42は、5本の送信レーンを選択することができると判別した場合は、エラーを検出していない送信レーンから5本の送信レーンを選択し、選択した送信レーンをバイトストライピング回路35に通知する。
なお、リンク構成部42がリトレーニングを行った場合には、リトレーニング用のK−Codeがシリアルインタフェースポート50に送信され、シリアルインタフェースポート50のリンク構成部58において、エラーの原因となる故障レーンが特定される。その後、シリアルインタフェースポート50が任意の方法で故障レーンをシリアルインタフェースポート30に通知することで、エラー検出部41やリンク構成部42は、故障レーンを特定する。
同様に、リンク構成部42は、受信レーン#0〜#7を介して受信したリトレーニング用のK−Codeから故障レーンを特定し、特定した故障レーンをシリアルインタフェースポート50のエラー検出部57やリンク構成部58に通知する。
ここで、リンク構成部42は、縮退時にデータの送受信を行う送信レーンを選択する場合は、故障レーン以外の送信レーンのうち、レーンリバーサルを考慮した際に共通して使用する送信レーンが多くなるように、送信レーンを選択する。そして、リンク構成部42は、レーンリバーサルを適用する場合には、バイトストライピング回路35に対して、選択した送信レーンとともに、レーンリバーサルを適用する。
また、リンク構成部42は、データの送受信を行う送信レーンを所定の論理に基づいて選択する。例えば、リンク構成部42は、故障レーン以外の送信レーンから、5本の送信レーンを選択する。そして、リンク構成部42は、故障した送信レーンが所定の数よりも多く、5本の送信レーンを選択できない場合や、故障した送信レーンの組み合わせが所定の条件を満たし、データを送信する際の信頼性が損なわれる場合等には、以下の処理を実行する。
すなわち、リンク構成部42は、データの送信を停止するリンクダウンをバイトストライピング回路35や制御情報生成部40等に指示するとともに、CPU10が実行するプログラム等に対して、リンクダウンが発生した旨を通知する。なお、リンク構成部42がリンクダウンを指示する例としては、例えば、送信レーンのうちの半分から故障が検出された場合や、3本以上の送信レーンから故障が検出され、かつ、正常な送信レーンから所定の論理に基づく選択をできない場合等である。なお、リンク構成部42が送信レーンを選択する論理については、後述する。
ここで、図3を用いて、シリアルインタフェースポート30が有するレーンリバーサル機能について説明する。図3は、レーンリバーサル機能を説明するための図である。レーンリバーサルとは、プリント版の配線を容易にするため、レーン番号の並びを逆順にする機能である。例えば、送信側の各レーンと受信側の各レーンとには、それぞれ物理レーン番号が付与されており、同じ物理レーン番号が付与されたレーン同士を接続するように、プリント版の配線が行われる。
ここで、図3中(A)に示すように、受信側の物理レーン番号と、送信側の物理レーン番号との並びが同じ場合には、容易に配線を行う事ができる。しかし、図3中(B)に示すように、送信側の物理レーン番号と受信側の物理レーン番号との並びが逆となる場合には、送信側と受信側の配線が複雑になってしまう。そこで、図3中(C)に示すように、物理レーンとは逆順の擬似物理レーンを設定し、レーンリバーサル適用時には擬似物理レーンに従ってデータの振分けを行うことで、送信側と受信側の配線を単純化することができる。
また、リンク構成部42は、縮退時にデータの送受信を行う送信レーンを選択する場合は、故障レーン以外の送信レーンのうち、レーンリバーサルを考慮した際に共通して使用する送信レーンが多くなるように、送信レーンを選択する。このため、リンク構成部42は、レーンリバーサル機能を容易に実現できる。
図2に戻り、複数の受信部43〜45は、シリアルインタフェースポート50が送信したデータを受信する受信部である。また、バイトアンストライピング回路46は、バイトストライピング回路62と逆の論理を用いて、各受信部43〜45が受信したデータを元のデータパケットに変換する。そして、バイトアンストライピング回路46は、変換したデータパケットをCRC検査部47および受信データ解析部48に出力する。
CRC検査部47は、バイトアンストライピング回路46が変換したデータパケットに含まれるCRCを用いてエラーの検出を行う。そして、CRC検査部47は、エラーを検出した場合は、エラーが発生した旨をリンク構成部42に通知する。受信データ解析部48は、バイトアンストライピング回路46からデータパケットを受信すると、受信データデータの解析を行い、解析結果をパケットルーティング部20に出力する。
例えば、CPU10、CPU11、コア12、コア13、パケットルーティング部20、シリアルインタフェースポート30、シリアルインタフェースポート50、パケットルーティング部67、コア68、コア69とは、電子回路である。また、送信データ生成部33、CRC生成部34、バイトストライピング回路35、コントロールビット付加部36、送信部37〜39、制御情報生成部40、エラー検出部41とは、電子回路である。
また、リンク構成部42、受信部43〜45、バイトアンストライピング回路46、CRC検査部47、受信データ解析部48とは、電子回路である。また、シリアルインタフェースポート50が有する各部51〜66についてもシリアルインタフェースポート30が有する各部33〜48と同様の電子回路である。ここで、電子回路の例として、Application Specific Integrated Circuit(ASIC)やField Programmable Gate Array(FPGA)などの集積回路、またはCPUやMicro Processing Unit(MPU)などを適用する。
次に、図4〜図9を用いて、シリアルインタフェースポート30が各送信レーンに振り分けるデータについて説明する。まず、図4を用いて、通常時にシリアルインタフェースポート30が各送信レーンに振り分けるデータについて説明する。図4は、実施例1に係るシリアルインタフェースポートが各送信レーンに振り分けるデータを説明するための図である。
なお、図4には、各論理レーン番号に対応する送信レーンに対して、1送受信サイクルごとに振り分ける送受信データと、各データパターンを示すパターン記号を示した。また、図4中のD000〜D127とは、送信するデータ本体であり、T0、T1は、D000〜D063がパケットの先頭・途中・末尾のいずれかを示すデータであり、T2、T3は、D064〜D127がパケットの先頭・途中・末尾のいずれかを示すデータである。また、図4中のctlとは、コントロールビットであり、C00〜C18は、19ビットのCRCである。
例えば、図4に示すように、シリアルインタフェースポート30は、論理レーン番号が#0となる送信レーンに対して、パターン記号がA0となるデータ、すなわちctl、D113〜D127、T0〜T3までの20ビットのデータを振り分ける。また、シリアルインタフェースポート30は、論理レーン番号が#1となる送信レーンに対して、パターン記号がA1となるデータ、すなわちctl、D094〜D112までの20ビットのデータを振り分ける。
また、シリアルインタフェースポート30は、図4に示すように、論理レーン番号が#2〜#6となる送信レーンにパターン記号がA2〜A6となるデータを振り分ける。また、シリアルインタフェースポート30は、論理レーン番号が#7となるレーンに対して、パターン記号がC0となるデータ、すなわち、ctlとC00〜C18までの20ビットのデータを振り分ける。
次に、図5を用いて、通常時においてシリアルインタフェースポート30がCRCを算出するデータの演算順序について説明する。図5は、通常時におけるCRCの演算順序を説明するための図である。図5中の矢印に示すように、シリアルインタフェースポート30は、ある送受信サイクルにおいて各論理レーン#0〜#6に振り分けるデータを、論理レーン番号が若い順に演算する。そして、シリアルインタフェースポート30は、演算結果となるCRCを、演算元のデータと同じ送受信サイクル内に送信するCRCとして、論理レーン#7に振り分ける。
この結果、シリアルインタフェースポート50は、ある送受信サイクル内において発生したエラーを同一の送受信サイクル内で送信したCRCで検出することができる。この結果、シリアルインタフェースポート50は、1つの送信レーンにおいて1送受信サイクル内に送信したデータ全てがビット化けしたとしても、同一の送受信サイクル内に送信したCRCで検出することができる。このため、シリアルインタフェースポート30は、バーストエラー耐性を向上させることができる。
なお、シリアルインタフェースポート30は、各論理レーン#0〜#6に付与したrsvを考慮した演算を行う。このように、シリアルインタフェースポート30は、rsvを考慮した演算を行う事で、実行する処理の論理に拡張性を保持することができる。
次に、図6〜図8を用いて、シリアルインタフェースポート30が縮退時に振り分けるデータについて説明する。図6は、実施例1に係るシリアルインタフェースポートが縮退時に振り分けるデータを説明するための図である。なお、図6には、図4と同様に、シリアルインタフェースポート30が縮退時において、5つの論理レーンに対して振り分けるデータとデータパターンのパターン記号を記載した。
また、図6には、縮退時において、シリアルインタフェースポート30が2送受信サイクルに渡って送信する200ビットのデータについて記載した。なお、以下の説明では、縮退時においてシリアルインタフェースポート30がデータを送信する1送受信サイクル目をEven Cycle、2送受信サイクル目をOdd Cycleと記載する。なお、シリアルインタフェースポート30は、現在の送受信サイクルがEven CycleであるかOdd Cycleであるかを、リトレーニング時に、シリアルインタフェースポート50とネゴシエーションすることで、決定する。
図6に示すように、Even Cycleにおいて、シリアルインタフェースポート30は、論理レーン番号が#0〜#3となる送信レーンに対して、パターン記号がA0〜A3となるデータを振り分ける。また、シリアルインタフェースポート30は、論理レーン番号が#4となる送信レーンに対して、パターン記号がC1となる19ビットのCRCを振り分ける。
また、図6に示すように、Odd Cycleにおいて、シリアルインタフェースポート30は、論理レーン番号が#0となる送信レーンに対して、パターン記号がR0となるデータ、すなわちctlと19ビットのrsvを有するデータを振り分ける。また、シリアルインタフェースポート30は、論理レーン番号が#1〜#3となる送信レーンに対して、パターン記号がA4〜A6となるデータを振り分ける。また、シリアルインタフェースポート30は、論理レーン番号が#4となる送信レーンに対して、パターン記号がCなる19ビットのCRCを振り分ける。
ここで、図7は、縮退時に送信するCRCの演算順序を説明するための図である。シリアルインタフェースポート30は、図7中の矢印に示すように、Even CycleとOdd Cycleのそれぞれについて、論理レーン番号が#0〜#3となる送信レーンが送信するデータから、CRCの演算を行う。
そして、シリアルインタフェースポート30は、Even Cycleにおいて送信するデータから算出したデータを論理レーン番号が#4となる送信レーンから同一のEven Cycle内に送信する。また、シリアルインタフェースポート30は、Odd Cycleにおいて送信するデータから算出したデータを論理レーン番号が#4となる送信レーンから同一のOdd Cycle内に送信する。
このため、シリアルインタフェースポート50は、縮退時においても、いずれか1つの送信レーンにおいて受信したデータが全てビット化けした場合にも、同じ送受信サイクル内に受信したCRCを用いて、検出することができる。このため、シリアルインタフェースポート30は、バーストエラー耐性を向上させることができる。
また、シリアルインタフェースポート30は、縮退時において、通常時の半分の数の送信レーンを介してデータを送信し、さらにもう1本の送信レーンを介してCRCを送信する。また、シリアルインタフェースポート30は、通常時においては、いずれか1つの送信レーンを介してCRCを送信し、残りの送信レーンを介してデータを送信する。このため、シリアルインタフェースポート30は、データ送信の帯域を減少させることなく、バーストエラー耐性を向上させることができる。
ここで、図8、図9を用いて、従来のデータ伝送装置が縮退時に送信するデータについて説明する。図8は、従来のデータ伝送装置が縮退時に振り分けるデータを説明するための図である。また、図9は、従来のデータ伝送装置が縮退時にCRCを演算する順序を説明するための図である。
例えば、図8に示すように、従来のデータ伝送装置は、縮退時においては、Even Cycle とOdd Cycleで通常時のデータを半分ずつ、論理レーン番号が#0〜#3となる送信レーンに振り分けてしまう。また、図9中の矢印に示すように、従来のデータ伝送装置は、Even Cycleに送信するデータ、およびOdd Cycleに送信するデータの両方からCRCを演算する。このため、従来のデータ伝送装置は、何れかの送信レーンにおいて送受信サイクルを跨いだエラーが発生すると、バーストエラーを検出できない。
一方、シリアルインタフェースポート30は、通常時においても縮退時においても、各送受信サイクルごとに、送信するデータからCRCを生成し、生成したCRCとデータとを同じ送受信サイクル内に送信する。このため、シリアルインタフェースポート30は、バーストエラー耐性を向上させることができる。
次に、図10〜図13を用いて、リンク構成部42が送信レーンを選択する処理の具体例について説明する。まず、図10を用いて、縮退時にリンク構成部42が送信レーンを選択する論理の一例について説明する。図10は、縮退時に正常なレーンからリンク構成を選択する論理の一例を説明するための図である。
なお、図10には、通常時、および縮退時にリンク構成部42が選択する送信レーンの擬似物理レーン番号と、選択した送信レーンを図3〜図8に示す論理レーン番号のいずれとするかを記載した。すなわち、図10に示す例では、レーンリバーサル適用時における擬似物理レーン番号と論理レーン番号との対応を記載した。
例えば、リンク構成部42は、リンク幅が「x8」となる場合、すなわち8本の送信レーンを用いる通常時においては、図10中No.1に示す対応をバイトストライピング回路35に対して通知する。具体的には、リンク構成部42は、各擬似物理レーン番号#0〜#7を論理レーン#0〜#7とする対応をバイトストライピング回路35に対して通知する。
また、リンク構成部42は、リンク幅が「x5」となる場合、すなわち5本の送信レーンを用いる縮退時においては、故障した送信レーンの擬似物理レーン番号に応じて、図10中No.2〜No.19のいずれかに示す対応を選択する。そして、リンク構成部42は、選択した対応をバイトストライピング回路35に対して通知する。
例えば、リンク構成部42は、擬似物理レーン#0〜#3が全て故障しておらず、かつ、擬似物理レーン#5〜#7のいずれか1つが故障した場合は、図10中No.2〜4の何れかの対応をバイトストライピング回路35に対して通知する。例えば、リンク構成部42は、No.2に示す対応を選択した場合は、擬似物理レーン番号#0〜#3の送信レーンを論理レーン#4〜#1とし、擬似物理レーン番号#7の送信レーンを論理レーン#0とする対応をバイトストライピング回路35に通知する。
また、リンク構成部42は、擬似物理レーン番号#0〜#3の送信レーンのうちいずれか1つが故障し、かつ、擬似物理レーン#5〜7が全て故障していない場合は、図10中No.5〜7の何れかの対応をバイトストライピング回路35に対して通知する。また、さらに1つの送信レーンが故障した場合は、リンク構成部42は、No.2〜7のうちいずれかの対応を継続できるか否かを判別する。そして、リンク構成部42は、No.2〜7のうちいずれかの対応を継続できる場合は、継続できる対応をバイトストライピング回路35に通知する。
また、リンク構成部42はNo.2〜7のうちいずれかの対応を継続できない場合は、以下の処理を実行する。まず、リンク構成部42は、擬似物理レーン番号が#0〜#3となる送信レーンが故障しているか否かを判別する。そして、リンク構成部42は、疑似物理レーン番号が[#0、#1]、[#0、#2]、[#1、#3]となる組のいずれかに含まれる全ての送信レーンが故障していない場合は、擬似物理レーン番号が#5〜#7となる送信レーンが故障しているか判別する。
そして、リンク構成部42は、擬似物理レーン番号が[#5、#6、#7]、[#4、#6、#7]、[#4、#5、#7]、[#4、#5、#6]となる組の何れかに含まれる全ての送信レーンが故障していない場合は、以下の処理を実行する。すなわち、リンク構成部42は、故障していない送信レーンの擬似物理レーン番号に応じて、No.8〜No.19に示すいずれかの対応を選択し、選択した対応をバイトストライピング回路35に通知する。
なお、図10に示す対応は、レーンリバーサル適用時を考慮し、レーンリバーサルを適用しない際とレーンリバーサルを適用する際とで共通する対応が多くなる論理を採用した。このように、リンク構成部42は、図10に示す論理の対応をバイトストライピング回路35に通知するので、2レーン以内の故障であれば、5本の送信レーンを用いてデータの送信を継続し、バイトストライピング回路35の回路規模を削減できる。
次に、図11を用いて、リンク構成部42が有する回路の一例について説明する。図11は、縮退時に正常な送信レーンから使用する送信レーンを選択する回路の一例を説明するための図である。なお、図11には、故障していない送信レーンの擬似物理レーン番号に応じて、図10に示す送信レーンを選択する処理を実現するリンク構成部42の回路の一例を記載した。
なお、図11中の「pseudo_phy_lane_N_ok」とは擬似物理レーン番号が「N」のレーンが故障していない旨を示す信号である。また、図11中の「link_M_sel」とは、図10中においてNo.1〜19で示す対応のうち、No.「M」の対応を選択するイネーブル信号である。例えば、図11に示す回路は、「pseudo_phy_lane_0_ok」〜「pseudo_phy_lane_7_ok」が「Hi」となる場合には、「link_01_sel」が「Hi」となる。このため、リンク構成部42は、図10中のNo.1に示す対応を選択する。
また、例えば、図11に示す回路は、「pseudo_phy_lane_7_ok」が「Low」となる場合は、「link_03_sel」が「Hi」となる。このため、リンク構成部42は、図10中のNo.3に示す対応を選択する。このように、リンク構成部42は、図11に示すように、簡易なANDゲートの組み合わせによって、データの送信に用いる送信レーンを選択することができる。
次に、図12を用いて、擬似物理レーン番号と、送信するデータパターンとの対応を説明する。図12は、擬似物理レーン番号とデータパターンの対応を説明するための図である。なお、図12には、擬似物理レーン番号と論理レーン番号との対応を示すナンバー、採用する擬似物理レーンを示すビットマップ、送受信サイクル、擬似物理レーン番号とデータパターンとの対応を記載した。
なお、擬似物理レーンを示すビットマップとは、採用する擬似物理レーンを「1」、採用しない擬似物理レーンを「0」とし、擬似物理レーン#0〜#3の組と擬似物理レーン#4〜#7の組とについて、採用する擬似物理レーンを示す4ビットの情報である。例えば、擬似物理レーン#0〜#3の組について、ビットマップが「1010」である場合は、擬似物理レーン#0と擬似物理レーン#2を使用し、擬似物理レーン#1と擬似物理レーン#3を使用しない旨を示す。
なお、図12に示す内容は、図4、図6、図10、図11をまとめたものである。例えば、擬似物理レーン#0〜#3の組についてのビットマップが「1100」で擬似物理レーン#4〜#7の組についてのビットマップが「1011」である場合は、No「9」が選択される。このため、シリアルインタフェースポート30は、擬似物理レーン#0を介してパターン記号がA1、A4となるデータを送信し、擬似物理レーン#1を介して、パターン記号がA0、R0となるデータを送信する。
また、シリアルインタフェースポート30は、擬似物理レーン#4を介してパターン記号がA2、A5となるデータを送信し、擬似物理レーン#6を介して、パターン記号がA3、A6となるデータを送信する。また、シリアルインタフェースポート30は、擬似物理レーン#7を介して、パターン記号がC1、C0となるデータ、すなわちCRCを送信する。
次に、図13を用いて、データ受信側、すなわちシリアルインタフェースポート50がデータを受信する際の擬似物理レーン番号とデータパターンとの対応について説明する。図13は、データ受信側の擬似物理レーン番号とデータパターンの対応を説明するための図である。なお、図13には、図12と同様に、擬似物理レーンと論理レーンとの対応を示すナンバー、採用する擬似物理レーンのビットマップ、送受信サイクル、データパターンと擬似物理レーン番号との対応について記載した。
例えば、シリアルインタフェースポート50は、擬似物理レーン#0〜#3の組についてのビットマップが「1100」で擬似物理レーン#4〜#7の組についてのビットマップが「1011」である場合はNo「9」に示す対応を選択する。すると、シリアルインタフェースポート50は、擬似物理レーン#0を介してパターン記号がA1、A4となるデータを受信し、擬似物理レーン#1を介して、パターン記号がA0、R0となるデータを受信する。
また、シリアルインタフェースポート50は、擬似物理レーン#4を介してパターン記号がA2、A5となるデータを受信し、擬似物理レーン#6を介して、パターン記号がA3、A6となるデータを受信する。また、シリアルインタフェースポート50は、擬似物理レーン#7を介して、パターン記号がC0、C1となるデータ、すなわちCRCを受信する。
シリアルインタフェースポート50は、図13に示す対応に従って、アンストライピングを行う事で、シリアルインタフェースポート30が送信したデータを元のデータフォーマットに戻すことができる。また、シリアルインタフェースポート30も同様に、図13に示す対応に従って、バイトアンストライピング回路46を制御し、シリアルインタフェースポート50が送信したデータを元のデータフォーマットに戻すことができる。
次に、図14を用いて、バイトストライピング回路35の動作論理の一例について説明する。図14は、バイトストライピング回路の論理を説明するための図である。なお、図14には、どのデータパターンをどの物理レーンに振り分けるかを示した。
例えば、図14に示すように、バイトストライピング回路35は、各物理レーン#0〜#7に対して振り分けるデータを選択するセレクタを有する。そして、バイトストライピング回路35は、各セレクタに対して、図10に示す論理に基づいて選択された擬似物理レーンの番号、現在の送信サイクルがEven Cycleであるか、Odd Cycleであるか、レーンリバーサルを適用するか否かを入力する。すると、各セレクタは、図10に示す論理に基づいて、データパターンを物理レーン#0〜#7に出力する。
次に、図15を用いて、バイトアンストライピング回路46の動作論理の一例について説明する。図15は、バイトアンストライピング回路の論理を説明するための図である。なお、図15には、どの物理レーンから受信したデータをどのデータパターンとみなすかを示した。
例えば、図15に示すように、バイトアンストライピング回路46は、各物理レーン#0〜#7から受信したデータを選択するセレクタを有する。そして、バイトアンストライピング回路46は、各セレクタに対して、図10に示す論理で選択された擬似物理レーンの番号、現在の送信サイクルがEven Cycleであるか、Odd Cycleであるか、レーンリバーサルを適用するか否かを入力する。
すると、各セレクタは、図10に示す論理に基づいて、選択した物理レーン#0〜#7から受信したデータをパターン記号がA0〜A6、C0、C1、R0となるデータとみなす。この結果、バイトアンストライピング回路46は、図10に示す論理で送信されたデータを元のデータフォーマットに復元することができる。
次に、図16を用いて、リンク構成部42が実行する処理の流れについて説明する。図16は、リンク構成部が実行する処理の流れを説明するためのフローチャートである。例えば、リンク構成部42は、各送信レーン#0〜#7に故障が発生していないと判別し、8本のリンクにデータを振り分けるようバイトストライピング回路35に指示し(ステップS101)、データを送信させる(ステップS102)。
次に、リンク構成部42は、CRC検査部47またはエラー検出部41からエラーを通知を受信したか否かを判別する(ステップS103)。そして、リンク構成部42は、エラー通知を受信していない場合は(ステップS103否定)、再度ステップS101の処理を実行する。一方、リンク構成部42は、エラー通知を受信した場合は(ステップS103肯定)、制御情報生成部40にリトレーニングを指示する(ステップS104)。そして、リンク構成部42は、リトレーニングの結果から、故障レーンを特定する(ステップS105)。
次に、リンク構成部42は、図10に基づいて、5本の送信レーンを選択できるか否かを判別する(ステップS106)。そして、リンク構成部42は、選択可能と判別した場合は(ステップS106肯定)、正常レーンから採用する擬似物理レーンを決定する(ステップS107)。また、リンク構成部42は、シリアルインタフェースポート50とのネゴシエートを制御情報生成部40に指示し、現在の送受信サイクルがEven CycleであるかOdd Cycleであるかを決定する(ステップS108)。
そして、リンク構成部42は、バイトストライピング回路35、バイトアンストライピング回路46に採用する擬似物理レーンと論理レーンとの対応や、現在の送受信サイクル等を通知する(ステップS109)。そして、リンク構成部42は、5本の送信レーンを介してデータを送信する縮退動作を開始し(ステップS110)、データを送信させる(ステップS102)。
一方、リンク構成部42は、図10に基づいて5本の送信レーンを選択できない場合は(ステップS106否定)、リンクダウンを指示し(ステップS111)、処理を終了する。
[実施例1の効果]
上述したようにシリアルインタフェースポート30は、複数の送信レーンを介してデータをシリアルインタフェースポート50に送信する。ここで、シリアルインタフェースポート30は、各送信レーンにおける故障を検出する機能を有し、故障を検出していない場合は、全ての送信レーンを選択する。一方、シリアルインタフェースポート30は、故障を検出した場合は、故障が発生していない5本の送信レーンを選択する。
そして、シリアルインタフェースポート30は、選択した送信レーンのうち、いずれか1つの送信レーンを除く残りの送信レーンにデータを振り分ける。また、シリアルインタフェースポート30は、振り分けるデータからエラーを検出するCRCを生成し、生成したCRCを残り1つの送信レーンに振り分ける。
このため、シリアルインタフェースポート30は、いずれか1つの送信レーンにおいて故障が発生し続け、送受信サイクルを跨いでエラーが発生した場合にも、各送受信サイクルにおいて送信したCRCを用いて、バーストエラーを検出することができる。この結果、シリアルインタフェースポート30は、バーストエラー耐性を向上させることができる。
また、シリアルインタフェースポート30は、各送信レーンに振り分けるデータと同じ長さのバーストエラーを検出することができるCRCを生成し、生成したCRCを、演算元となるデータと同じ送受信サイクル内に送信する。このためシリアルインタフェースポート30は、いずれか1つの送信レーンにおいて全てのビットがエラーとなった場合にも、バーストエラーのビット長がCRCのビット長と同じ長さとなるので、バーストエラーを検出することができる。
また、シリアルインタフェースポート30は、何れかの送信レーンにおいて故障を検出した場合には、故障を検出していない送信レーンのうち、全送信レーンの半分の数に1を加算した数の送信レーンを選択する。例えば、シリアルインタフェースポート30は、8本の送信レーンのうち、5本の送信レーンを選択する。このため、シリアルインタフェースポート30は、縮退時における帯域を増加させずにバーストエラー耐性を向上させることができる。
また、シリアルインタフェースポート30は、全8本の送信レーンのうち、半分の送信レーンから故障が検出された場合には、リンクダウンを指示するとともに、CPU10が実行するアプリケーションにリンクダウンを通知する。すなわち、シリアルインタフェースポート30は、利用者に対して、データの送信が行えない旨を通知する。このため、シリアルインタフェースポート30は、故障が検出された結果、信頼性を保障できなくなった際に、データの送信を停止することができる。
また、シリアルインタフェースポート30は、縮退時においては、通常時において送信するデータを2サイクルに分けて送信する。具体的には、シリアルインタフェースポート30は、通常時に送信したデータの前半分をEven Cycleにおいて、送信し、通常時に送信したデータの後ろ半分をOdd Cycleにおいて送信する。
なお、シリアルインタフェースポート30は、Even Cycleにおいても、Odd Cycleにおいても、同じ送受信サイクル内において送信されるデータからエラーを検出するCRCを送信する。このため、シリアルインタフェースポート30は、縮退時における帯域を通常時の半分に留めることができる。
また、シリアルインタフェースポート30は、レーンリバーサル適用時においても共通して使用する送信レーンを優先的に用いる論理に基づいて、縮退時において使用する送信レーンを選択する。このため、シリアルインタフェースポート30は、レーンリバーサルを適用するための複雑な実装を不要とする。
また、シリアルインタフェースポート30は、各送信レーンに対して、物理レーンアドレスと、物理レーンアドレスとは逆順の擬似物理レーンアドレスを付与し、レーンリバーサル適用時には、擬似物理レーンアドレスに従って、使用する送信レーンを選択する。このため、シリアルインタフェースポート30は、容易にレーンリバーサル機能を実装することができる。
これまでシリアルインタフェースポート30に係る実施例1について説明したが、本発明は、上述した実施例以外にも様々な異なる形態にて実施されてよいものである。そこで、以下では実施例2として本発明に含まれる他の実施例を説明する。
(1)適用されるデータ送信について
上述したシリアルインタフェースポート30は、CPU10とCPU11との間で送受信するデータの送信を行った。しかし、実施例は、これに限定されるものではない。例えば、シリアルインタフェースポート30が実現したデータ伝送方法は、CPUとHard Disk Drive(HDD)を初めとするInput/Output(I/O)装置間との間に適用することもできる。
すなわち、上述したデータ伝送方法は、他の様々な任意の装置間におけるデータ通信に適用することができる。なお、上述したデータ伝送方法は、データ伝送におけるバーストエラー耐性を向上させるので、サーバのシステムバス等、信頼性の求められる環境に適用することができる。
(2)送信レーンについて
上述したシリアルインタフェースポート30は、8本の送信レーンを介して、データを送信した。しかし、実施例はこれに限定されるものではなく、任意の数の送信レーンを介してデータを送信してよい。例えば、シリアルインタフェースポート30は、16本の送信レーンを介して、データを送信してもよい。このような場合には、シリアルインタフェースポート30は、縮退時において8本の送信レーンを介してデータを送信し1本の送信レーンを介してCRCを送信することとしてもよい。
また、縮退時において使用する送信レーンは、通常時において使用する送信レーンの半分に限定されるわけではない。すなわち、シリアルインタフェースポート30は、通常時において16本の送信レーンを使用し、故障が検出された送信レーンが増えるごとに、使用する送信レーンの数を12本、8本、4本と縮退させてもよい。
(3)縮退時に使用する送信レーンについて
上述したシリアルインタフェースポート30は、縮退時において、図10に示す論理を用いて、使用する送信レーンを選択した。しかし、実施例はこれに限定されるものではなく、他の任意の論理を用いて、使用する送信レーンを選択してもよい。また、シリアルインタフェースポート30は、縮退時において、使用する送信レーンと使用する受信レーンとに付与された物理レーン番号を揃える必要もない。
1 情報処理システム
10 CPU
12、13、68、69 コア
20、67 パケットルーティング部
30、50 シリアルインタフェースポート
33、60 送信データ生成部
34、61 CRC生成部
35、62 バイトストライピング回路
36、63 コントロールビット付加部
37〜39、64〜66 送信部
40、59 制御情報生成部
41、57 エラー検出部
42、58 リンク構成部
43〜45、51〜53 受信部
46、54 バイトアンストライピング回路
47、56 CRC検査部
48、55 受信データ解析部

Claims (7)

  1. それぞれ異なる伝送路を介して、データを同時期に送信する複数の送信部と、
    前記伝送路における故障を検出する検出部と、
    前記検出部が故障を検出していない場合は、全ての前記送信部を選択し、前記検出部が故障を検出した場合には、前記検出部が故障を検出していない伝送路を介してデータを送信する送信部から全送信部の半分の数に1を加算した数の送信部を選択する選択部と、
    前記選択部が選択した送信部のうち、いずれか1つの送信部を除く送信部が所定の時間内に送信するデータから、エラーを検出する冗長データを生成する生成部と、
    前記選択部が選択した送信部のうち、いずれか1つの送信部を除く送信部に対して、送信対象となるデータを振り分け、該データを振り分けなかった1つの送信部に対して、前記生成部が生成した冗長データを振り分ける振り分け部と
    を有することを特徴とするデータ伝送装置。
  2. 前記生成部は、前記送信部が所定の時間内に送信するデータと同じビット長の冗長データを生成することを特徴とする請求項1に記載のデータ伝送装置。
  3. 全ての前記伝送路のうち所定の数の伝送路から前記検出部が故障を検出した場合は、データの伝送が行えない旨を利用者に通知する通知部を有することを特徴とする請求項1または2に記載のデータ伝送装置。
  4. 前記振り分け部は、前記検出部が故障を検出した場合は、前記選択部が選択した送信部のうち1つの送信部を除く送信部に対して、前記データの前半を分割して振り分け、その後、前記選択部が選択した送信部のうち1つの送信部を除く送信部に前記データの後半を分割して振り分けることを特徴とする請求項1〜3のいずれか1つに記載のデータ伝送装置。
  5. 前記複数の送信部には、連続するレーン番号が付与されており、
    前記選択部は、前記検出部が故障を検出した場合には、前記検出部が故障を検出していない伝送路を介してデータを送信する送信部のうち、前記レーン番号の並びを逆順とするレーンリバーサルを適用した際に共通して使用する送信部を優先して選択することを特徴とする請求項1〜4のいずれか1つに記載のデータ伝送装置。
  6. 前記複数の送信部には、前記レーン番号をレーンリバーサル変換した擬似レーン番号が付与されており、
    前記振り分け部は、前記レーンリバーサルを適用しない場合は、前記レーン番号に基づいてデータを振り分け、前記レーンリバーサルを適用する場合は、前記擬似レーン番号に基づいてデータを振り分けることを特徴とする請求項に記載のデータ伝送装置。
  7. 複数の伝送路を介してデータの送信を行うデータ伝送装置が実行するデータ伝送方法において、
    前記伝送路における故障を検出し、
    前記伝送路における故障が検出されない場合は、全ての前記伝送路を選択し、前記故障を検出した場合には、前記故障を検出していない伝送路から全伝送路の半分の数に1を加算した数の伝送路を選択し、
    前記選択した伝送路のうち、いずれか1つを除く伝送路を介して所定の時間内に送信するデータから、エラーを検出する冗長データを生成し、
    前記選択した伝送路のうち、いずれか1つを除く伝送路を介して、送信対象となるデータを送信し、該データを送信しなかった1つの伝送路を介して、前記生成した冗長データを同時期に送信する
    処理を実行することを特徴とするデータ伝送方法。
JP2012128345A 2012-06-05 2012-06-05 データ伝送装置、およびデータ伝送方法 Expired - Fee Related JP6069897B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2012128345A JP6069897B2 (ja) 2012-06-05 2012-06-05 データ伝送装置、およびデータ伝送方法
US13/860,562 US20130326286A1 (en) 2012-06-05 2013-04-11 Data transfer apparatus and data transfer method
EP13163324.0A EP2672642A3 (en) 2012-06-05 2013-04-11 Data transfer apparatus and data transfer method for detecting malfunctions in any of the transfer paths

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012128345A JP6069897B2 (ja) 2012-06-05 2012-06-05 データ伝送装置、およびデータ伝送方法

Publications (2)

Publication Number Publication Date
JP2013254274A JP2013254274A (ja) 2013-12-19
JP6069897B2 true JP6069897B2 (ja) 2017-02-01

Family

ID=48128115

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012128345A Expired - Fee Related JP6069897B2 (ja) 2012-06-05 2012-06-05 データ伝送装置、およびデータ伝送方法

Country Status (3)

Country Link
US (1) US20130326286A1 (ja)
EP (1) EP2672642A3 (ja)
JP (1) JP6069897B2 (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9852096B2 (en) * 2014-03-25 2017-12-26 Hewlett Packard Enterprise Development Lp High speed serial link in-band lane fail over for RAS and power management
US9252812B2 (en) * 2014-03-28 2016-02-02 Silicon Graphics International Corp. Low latency serial data encoding scheme for enhanced burst error immunity and long term reliability
JP6331574B2 (ja) 2014-03-28 2018-05-30 富士通株式会社 情報処理装置、並列計算機システムおよび並列計算機システムの制御方法
CN104170322B (zh) 2014-04-02 2017-06-20 华为技术有限公司 一种PCIe链路故障的处理方法、设备及系统
US9710341B2 (en) * 2014-12-16 2017-07-18 Dell Products L.P. Fault tolerant link width maximization in a data bus
US9921899B2 (en) * 2014-12-18 2018-03-20 Oracle International Corporation Monitoring serial link errors
US10210121B2 (en) * 2016-01-27 2019-02-19 Quanta Computer Inc. System for switching between a single node PCIe mode and a multi-node PCIe mode
EP4354307A4 (en) * 2021-07-08 2024-09-11 Huawei Technologies Co., Ltd. Link negotiation system and method, and device

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7957428B2 (en) 2004-05-21 2011-06-07 Intel Corporation Methods and apparatuses to effect a variable-width link
JP4079940B2 (ja) 2004-12-27 2008-04-23 エヌイーシーコンピュータテクノ株式会社 データ伝送方式及び方法
US7782805B1 (en) * 2005-02-08 2010-08-24 Med Belhadj High speed packet interface and method
US7412642B2 (en) * 2005-03-09 2008-08-12 Sun Microsystems, Inc. System and method for tolerating communication lane failures
US7353443B2 (en) * 2005-06-24 2008-04-01 Intel Corporation Providing high availability in a PCI-Express link in the presence of lane faults
US7694204B2 (en) 2006-03-09 2010-04-06 Silicon Image, Inc. Error detection in physical interfaces for point-to-point communications between integrated circuits
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
JP5125430B2 (ja) * 2007-11-08 2013-01-23 ソニー株式会社 情報処理装置及び情報処理方法
US8914683B2 (en) * 2008-02-21 2014-12-16 Hewlett-Packard Development Company, L.P. Repairing high-speed serial links
US8332729B2 (en) * 2008-09-29 2012-12-11 Oracle International Corporation System and method for automatic communication lane failover in a serial link
JP5585141B2 (ja) * 2010-03-18 2014-09-10 富士通株式会社 データ転送システム、データ転送システムの受信装置及びデータ転送システムの制御方法
US8898511B2 (en) * 2010-06-24 2014-11-25 International Business Machines Corporation Homogeneous recovery in a redundant memory system
US8631271B2 (en) * 2010-06-24 2014-01-14 International Business Machines Corporation Heterogeneous recovery in a redundant memory system
US8862944B2 (en) * 2010-06-24 2014-10-14 International Business Machines Corporation Isolation of faulty links in a transmission medium
JP2012022463A (ja) * 2010-07-13 2012-02-02 Ricoh Co Ltd 通信ユニット、情報機器および情報システム
WO2013145240A1 (ja) * 2012-03-29 2013-10-03 富士通株式会社 情報処理装置及び情報処理装置制御方法

Also Published As

Publication number Publication date
JP2013254274A (ja) 2013-12-19
US20130326286A1 (en) 2013-12-05
EP2672642A2 (en) 2013-12-11
EP2672642A3 (en) 2014-06-04

Similar Documents

Publication Publication Date Title
JP6069897B2 (ja) データ伝送装置、およびデータ伝送方法
US8824581B2 (en) Data transmission apparatus, data transmission system and data transmission method
WO2006096879A1 (en) System and method for tolerating communication lane failures
KR102516027B1 (ko) 헤더 처리 장치, 프로세서 및 전자장치
JP5987319B2 (ja) 送受信システム及びプログラム
US20080005644A1 (en) Systems, methods and computer program products for utilizing a spare lane for additional checkbits
US7810013B2 (en) Memory device that reflects back error detection signals
JP2013034133A (ja) 送信装置、送受信システムおよび制御方法
JP5407230B2 (ja) Pciカード、マザーボード、pciバスシステム、制御方法、及びプログラム
JP5585141B2 (ja) データ転送システム、データ転送システムの受信装置及びデータ転送システムの制御方法
JP4079940B2 (ja) データ伝送方式及び方法
US7721178B2 (en) Systems, methods, and computer program products for providing a two-bit symbol bus error correcting code
JP4925559B2 (ja) 送信ノード、受信ノードおよびネットワ−クシステム
JP2013179476A (ja) 送受信システム及びプログラム
JP6299768B2 (ja) 情報処理システム、情報処理装置、及びデータ通信方法
US9274880B1 (en) Methods and apparatus for detecting and correcting errors in high-speed serial communications systems
JP2014057269A (ja) 半導体装置
US20070283207A1 (en) Systems, methods, and computer program products for providing a two-bit symbol bus error correcting code with bus timing improvements
JP2013255054A (ja) 送受信システム及びプログラム
US20070283208A1 (en) Systems, methods, and computer program products for providing a two-bit symbol bus error correcting code with bus diagnostic features
JP6172355B2 (ja) 送受信システム及びプログラム
JP6106994B2 (ja) 情報処理装置、データ転送装置、情報処理システム、および方法
JP6525251B2 (ja) データ伝送システム、及びデータ伝送方法
US20240154910A1 (en) Selective and diverse traffic replication
JP2013250956A (ja) データ転送装置、データ転送方法、及びプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150319

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160316

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160419

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160617

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20161219

R150 Certificate of patent or registration of utility model

Ref document number: 6069897

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees