(57)【要約】【課題】バーストエラー耐性を向上させる。【解決手段】シリアルインタフェースポート３０は、伝送経路における故障を検出し、故障が検出されない場合は、全ての送信レーンを選択する。また、シリアルインタフェースポート３０は、故障を検出した場合には、故障を検出していない送信レーンから所定の数の送信レーンを選択する。また、シリアルインタフェースポート３０は、選択した送信レーンのうち、いずれか１つを除く送信レーンを介して１送受信サイクル内に送信するデータから、エラーを検出するＣＲＣを生成する。そして、シリアルインタフェースポート３０は、選択した送信レーンのうち、いずれか１つを除く送信レーンを介して、送信対象となるデータを送信し、残った１つの送信レーンを介して、ＣＲＣをデータと同時期に送信する。【選択図】図１
2013254274.tif 000002
【特許請求の範囲】
【請求項１】
それぞれ異なる伝送路を介して、データを同時期に送信する複数の送信部と、
前記伝送路における故障を検出する検出部と、
前記検出部が故障を検出していない場合は、全ての前記送信部を選択し、前記検出部が故障を検出した場合には、前記検出部が故障を検出していない伝送路を介してデータを送信する送信部から所定の数の送信部を選択する選択部と、
前記選択部が選択した送信部のうち、いずれか１つの送信部を除く送信部が所定の時間内に送信するデータから、エラーを検出する冗長データを生成する生成部と、
前記選択部が選択した送信部のうち、いずれか１つの送信部を除く送信部に対して、送信対象となるデータを振り分け、該データを振り分けなかった１つの送信部に対して、前記生成部が生成した冗長データを振り分ける振り分け部と
を有することを特徴とするデータ伝送装置。
【請求項２】
前記生成部は、前記送信部が所定の時間内に送信するデータと同じビット長の冗長データを生成することを特徴とする請求項１に記載のデータ伝送装置。
【請求項３】
前記選択部は、前記検出部が故障を検出した場合には、前記検出部が故障を検出していない伝送路を介してデータを送信する送信部から、全送信部の半分の数に１を加算した数の送信部を選択することを特徴とする請求項１または２に記載のデータ伝送装置。
【請求項４】
全ての前記伝送路のうち所定の数の伝送路から前記検出部が故障を検出した場合は、データの伝送が行えない旨を利用者に通知する通知部を有することを特徴とする請求項３に記載のデータ伝送装置。
【請求項５】
前記振り分け部は、前記検出部が故障を検出した場合は、前記選択部が選択した送信部のうち１つの送信部を除く送信部に対して、前記データの前半を分割して振り分け、その後、前記選択部が選択した送信部のうち１つの送信部を除く送信部に前記データの後半を分割して振り分けることを特徴とする請求項３または４に記載のデータ伝送装置。
【請求項６】
前記複数の送信部には、連続するレーン番号が付与されており、
前記選択部は、前記検出部が故障を検出した場合には、前記検出部が故障を検出していない伝送路を介してデータを送信する送信部のうち、前記レーン番号の並びを逆順とするレーンリバーサルを適用した際に共通して使用する送信部を優先して選択することを特徴とする請求項１−５のいずれか１つに記載のデータ伝送装置。
【請求項７】
前記複数の送信部には、前記レーン番号をレーンリバーサル変換した擬似レーン番号が付与されており、
前記振り分け部は、前記レーンリバーサルを適用しない場合は、前記レーン番号に基づいてデータを振り分け、前記レーンリバーサルを適用する場合は、前記擬似レーン番号に基づいてデータを振り分けることを特徴とする請求項６に記載のデータ伝送装置。
【請求項８】
複数の伝送路を介してデータの送信を行うデータ伝送装置が実行するデータ伝送方法において、
前記伝送路における故障を検出し、
前記伝送路における故障が検出されない場合は、全ての前記伝送路を選択し、前記故障を検出した場合には、前記故障を検出していない伝送路から所定の数の伝送路を選択し、
前記選択した伝送路のうち、いずれか１つを除く伝送路を介して所定の時間内に送信するデータから、エラーを検出する冗長データを生成し、
前記選択した伝送路のうち、いずれか１つを除く伝送路を介して、送信対象となるデータを送信し、該データを送信しなかった１つの送信部を介して、前記生成した冗長データを同時期に送信する
処理を実行することを特徴とするデータ伝送方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ伝送装置、およびデータ伝送方法に関する。
【背景技術】
【０００２】
従来、伝送経路を介して１ビット幅のデータを送信するシリアル伝送技術が知られている。このようなシリアル伝送技術の一例として、Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｐｒｅｓｓ（ＰＣＩｅ）でデータの送受信を行うデータ伝送装置が知られている。
【０００３】
このようなデータ伝送装置は、データの転送性能を向上させるため、複数の伝送経路（レーン）を介してデータの送受信を行うマルチリンク方式を用いて、データの送受信を行う場合がある。以下、図面を用いて、マルチリンク方式を用いてデータの送受信を行う際に、各伝送経路が送信するデータの内容について説明する。
【０００４】
図１７は、各レーンが送信するデータの一例を説明するための図である。図１７には、データ伝送装置が８つのレーン＃０〜＃７を介して送信するデータのパケットフォーマットを記載した。例えば、データ伝送装置は、各レーン＃０〜＃７に対して、「ＳＴＰ」、「ＴＬＰ」、「Ｃｙｃｌｉｃ  Ｒｅｄｕｎｄａｎｃｙ  Ｃｈｅｃｋ（ＣＲＣ）」、「ＥＮＤ」を含む２５６ビットのデータを先頭から順に振り分ける。
【０００５】
具体的には、データ伝送装置は、各レーン＃０〜＃７に対して振り分ける「ＴＬＰ」から「ＣＲＣ」を算出する。そして、データ伝送装置は、「ＳＴＰ」、「ＴＬＰ」、「ＣＲＣ」、「ＥＮＤ」を含むデータの先頭から、１送受信サイクルごとにビットずつのデータを順に振り分ける。その後、データ伝送装置は、振り分けたデータを各レーン＃０〜＃７から送信する。
【０００６】
ここで、「ＳＴＰ」とは、送受信するデータの先頭を示すデータであり、「ＴＬＰ」とは、送受信するデータの本体であり、「ＥＮＤ」とは送受信するデータの終わりを示すデータである。また、「ＣＲＣ」とは、ＴＬＰから算出される巡回冗長検査用のデータであり、伝送時に生じたエラーを３２ビットまで検出可能なデータである。
【０００７】
図１８は、各レーンにＴＬＰを振り分ける順序を説明するための図である。例えば、データ伝送装置は、各レーン＃０〜＃７に対して、図１８中の矢印に示す順にＴＬＰを振り分ける。そして、データ伝送装置は、図１８中の矢印に示す順で各レーン＃０〜＃７に振り分けたＴＬＰに続き、ＴＬＰから生成した３２ビットのＣＲＣを８ビットずつ４つのレーンに振り分ける。
【０００８】
ここで、データ伝送装置は、マルチリンク方式でデータの送受信を行う際に、いずれかの伝送経路において故障が発生した場合には、伝送経路を縮退させ、故障が発生していない残りの伝送経路を用いてデータの送受信を行う。以下、図面を用いて、データ伝送装置が伝送経路の縮退時にデータを送信する処理について説明する。
【０００９】
図１９は、縮退時に各レーンが送信するデータの一例を説明するための図である。図１９には、レーン＃５〜＃７の何れかに故障が発生し、データの送受信を行う伝送経路をレーン＃０〜＃３に縮退させた例を示す。図１９に示す例では、データ伝送装置は、図１７に示したデータと同様のデータを各レーン＃０〜＃３に対して振り分ける。具体的には、データ伝送装置は、１送受信サイクルごとに、データの先頭から８ビットずつのデータを各レーン＃０〜＃３に対して順に振分ける。そして、データ伝送装置は、各レーン＃０〜＃３に振分けたデータを送信する。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２００５−３３２３５９号公報
【特許文献２】特開２００６−１８６５２７号公報
【特許文献３】特開２００７−２６７３９２号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
しかしながら、送受信サイクルごとに、複数のレーンに対してデータを順に振分ける技術では、送受信サイクルを跨いで伝送エラーが発生すると、ＣＲＣが検出可能なビット数をバーストエラーのビット数が超えてしまい、エラーの検出を行えない場合がある。
【００１２】
図２０は、サイクルを跨ぐエラーを検出するための図である。例えば、図２０では、レーン＃１を介して送信するデータのうち、送受信サイクル２と送受信サイクル３を跨ぐ範囲で４ビットのエラーが発生する。このような場合には、エラーが発生した最初のビットから最後のビットまでの範囲がバーストエラーの範囲となる。
【００１３】
しかし、各レーン＃０〜＃７には、１送受信サイクルごとに、データの先頭から８ビットずつのデータが順に振分けられている。このため、図２０に示す例では、図２０中の斜線で示す６０ビットのデータがバーストエラーの範囲となる。すると、データ受信側のデータ伝送装置は、ＣＲＣが検出可能なエラーのビット長をバーストエラーのビット長が超えているため、バーストエラーを検出できない。
【００１４】
また、データ伝送装置は、縮退時においても同様に、各レーン＃０〜＃３に対して、１送受信サイクルごとに、データの先頭から８ビットずつのデータを振分ける。このため、送受信サイクルを跨いだエラーが発生した場合は、ＣＲＣが検出可能なエラーのビット数をバーストエラーのビット数が超えてしまうため、データ受信側のデータ伝送装置がバーストエラーを検出できない場合がある。
【００１５】
１つの側面では、本発明は、マルチリンク方式におけるバーストエラー耐性の向上を目的とする。
【課題を解決するための手段】
【００１６】
１つの側面では、複数の伝送路を介してデータの送信を行うデータ伝送装置である。データ伝送装置は、伝送路における故障を検出する。そして、データ伝送装置は、伝送路における故障が検出されない場合は、全ての伝送路を選択し、いずれかの伝送路で故障を検出した場合には、故障を検出していない伝送路から所定の数の伝送路を選択する。また、データ伝送装置は、選択した伝送路のうち、いずれか１つを除く伝送路を介して所定の時間内に送信するデータからエラーを検出する冗長データを生成する。その後、データ伝送装置は、選択した伝送路のうち、いずれか１つを除く伝送路を介して、送信対象となるデータを送信し、該データを送信しなかった１つの送信部を介して、冗長データをデータと同時期に送信する。
【発明の効果】
【００１７】
１実施形態では、マルチリンク方式におけるバーストエラー耐性を向上させる。
【図面の簡単な説明】
【００１８】
【図１】図１は、実施例１に係る情報処理システムの一例を説明するための図である。
【図２】図２は、実施例１に係るシリアルインタフェースポートの機能構成を説明するための図である。
【図３】図３は、レーンリバーサル機能を説明するための図である。
【図４】図４は、実施例１に係るシリアルインタフェースポートが各送信レーンに振り分けるデータを説明するための図である。
【図５】図５は、通常時におけるＣＲＣの演算順序を説明するための図である。
【図６】図６は、実施例１に係るシリアルインタフェースポートが縮退時に振り分けるデータを説明するための図である。
【図７】図７は、縮退時に送信するＣＲＣの演算順序を説明するための図である。
【図８】図８は、従来のデータ伝送装置が縮退時に振り分けるデータを説明するための図である。
【図９】図９は、従来のデータ伝送装置が縮退時にＣＲＣを演算する順序を説明するための図である。
【図１０】図１０は、縮退時に正常なレーンからリンク構成を選択する論理の一例を説明するための図である。
【図１１】図１１は、縮退時に正常な送信レーンから使用する送信レーンを選択する回路の一例を説明するための図である。
【図１２】図１２は、擬似物理レーン番号とデータパターンの対応を説明するための図である。
【図１３】図１３は、データ受信側の擬似物理レーン番号とデータパターンの対応を説明するための図である。
【図１４】図１４は、バイトストライピング回路の論理を説明するための図である。
【図１５】図１５は、バイトアンストライピング回路の論理を説明するための図である。
【図１６】図１６は、リンク構成部が実行する処理の流れを説明するためのフローチャートである。
【図１７】図１７は、各レーンが送信するデータの一例を説明するための図である。
【図１８】図１８は、各レーンにＴＬＰを振り分ける順序を説明するための図である。
【図１９】図１９は、縮退時に各レーンが送信するデータの一例を説明するための図である。
【図２０】図２０は、サイクルを跨ぐエラーを検出するための図である。
【発明を実施するための形態】
【００１９】
以下に添付図面を参照して本願に係るデータ伝送装置、およびデータ伝送方法について説明する。
【実施例１】
【００２０】
以下の実施例１では、図１を用いて、シリアル伝送を実行する情報処理システムの一例を説明する。図１は、実施例１に係る情報処理システムの一例を説明するための図である。なお、情報処理システム１は、少なくとも、シリアル伝送によってデータの送受信を行う２つのＣｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ（ＣＰＵ）を有する。
【００２１】
図１に示すように、情報処理システム１は、複数のシリアル伝送路、すなわち複数のレーンでＣＰＵ１０、ＣＰＵ１１を有する。また、ＣＰＵ１０は、複数のコア１２、１３、パケットルーティング部２０、シリアルインタフェースポート３０を有する。また、ＣＰＵ１１は、ＣＰＵ１０と同様に、複数のコア６８、６９、パケットルーティング部６７、シリアルインタフェースポート５０を有する。
【００２２】
また、ＣＰＵ１０とＣＰＵ１１は、ＣＰＵ１０からＣＰＵ１１にデータを送信する際に用いられる８本のレーンと、ＣＰＵ１１からＣＰＵ１０にデータを送信する際に用いられる８本のレーンによって接続されている。ここで、各レーンは、データを１ビットずつ送信するシリアル伝送路である。
【００２３】
なお、図１に示す例では、ＣＰＵ１０が有するコア１２、１３について図示したが、ＣＰＵ１０は、さらに複数のコアを有するものとする。また、ＣＰＵ１１も同様に、コア６８、６９以外にも、さらに複数のコアを有するものとする。また、パケットルーティング部６７は、パケットルーティング部２０と同様の機能を発揮するものとして、説明を省略する。
【００２４】
また、以下の説明においては、コア１３、６８、６９は、コア１２と同様の機能を発揮するものとして、説明を省略する。また、以下の説明においては、各レーンが所定のビット数のデータを送信する時間を１送受信サイクルと記載する。なお、１送受信サイクル中に各レーンが送信するデータのビット数は任意の値を設定することができるが、以下の説明においては、各レーンは、１送受信サイクル中に２０ビットのデータを送信するものとする。
【００２５】
また、以下の説明では、ＣＰＵ１０とＣＰＵ１１とが送信側および受信側ともに８本のレーンでデータの送受信を行う例について説明するが、実施例はこれに限定されるものではなく、任意の数のレーンでデータの送受信を行うこととしてもよい。また、以下の説明においては、送信側の８本のレーンを送信レーン＃０〜＃７と記載し、受信側の８本のレーンを受信レーン＃０〜＃７と記載する。
【００２６】
コア１２は、ＣＰＵ１０が実行するプログラムに従って、演算処理を実行する演算処理装置である。また、コア１２は、ＣＰＵ１１が有するコア６８、６９にデータを送信する場合には、送信するデータとデータの送信要求をパケットルーティング部２０に出力する。また、パケットルーティング部２０は、コア１２からデータの送信要求を受信すると、送信するデータをシリアルインタフェースポート３０に出力する。
【００２７】
シリアルインタフェースポート３０は、複数のレーンを介してシリアルインタフェースポート５０と接続されており、例えば、ＰＣＩｅ等の技術を用いて、データのシリアル伝送を行う。具体的には、シリアルインタフェースポート３０は、各レーンにおける故障の発生を監視する。そして、シリアルインタフェースポート３０は、何れかのレーンにおいて故障を検知した場合は、データを送信する８本のレーンのうち、故障が発生していない５本のレーンを選択し、選択した５本のレーンを用いてデータの送信を行う。
【００２８】
すなわち、シリアルインタフェースポート３０は、全てのレーンから故障が検出されていない通常時においては、８本の送信レーン＃０〜＃７を介してデータの送信を行う。また、シリアルインタフェースポート３０は、何れかのレーンから故障が発生し、伝送路を縮退させる縮退時においては、故障が発生していない５本の送信レーンを選択し、選択した５本の送信レーンを用いてデータの送信を行う。
【００２９】
ここで、シリアルインタフェースポート３０は、通常時においては、８本の送信レーンから７本の送信レーンを選択し、１送受信サイクル内に送信するデータを７本の送信レーンに振り分ける。また、シリアルインタフェースポート３０は、７本の送信レーンに振り分けるデータからエラーを検出するＣＲＣを生成し、生成したＣＲＣの残り１本の送信レーンに振り分ける。そして、シリアルインタフェースポート３０は、７本の送信レーンに振り分けたデータと、１本の送信レーンに振り分けたデータから生成したＣＲＣとを、１送受信サイクル内に送信する。
【００３０】
また、シリアルインタフェースポート３０は、何れかの送信レーンにおいてエラーを検出した場合は、送信レーンの数を縮退させる。詳細には、シリアルインタフェースポート３０は、故障が検出された送信レーンが２本以下であるか否かを判定する。そして、シリアルインタフェースポート３０は、故障が検出された送信レーンが２本以下である場合は、故障が検出されていない送信レーンから５本のレーンを選択する。
【００３１】
そして、シリアルインタフェースポート３０は、選択した送信レーンのうち４本のレーンに対して、データの振り分けを行い、残りの１つの送信レーンに対して、４本の送信レーンに振り分けるデータから生成したＣＲＣを振り分ける。そして、シリアルインタフェースポート３０は、データとＣＲＣとを送信する。
【００３２】
なお、シリアルインタフェースポート３０は、縮退時においては、２送受信サイクルでデータを送信する。例えば、シリアルインタフェースポート３０は、１送受信サイクル目においては、４つの送信レーンに対して２０ビットずつのデータを振り分け、振り分ける８０ビットのデータからエラーを検出するＣＲＣを生成し、生成したＣＲＣを残りの１つの送信レーンに振り分ける。そして、シリアルインタフェースポート３０は、５つの送信レーンに振り分けたデータとＣＲＣとを同じ送受信サイクル内に送信する。
【００３３】
続いて、シリアルインタフェースポート３０は、２送受信サイクル目においては、３つのレーンに対して２０ビットずつのデータを振り分け、１つの送信レーンに２０ビットのリザーブ（ｒｓｖ）等のダミーデータを振り分ける。また、シリアルインタフェースポート３０は、３つの送信レーンに対して振り分けるデータと１つの送信レーンに対して振り分けるダミーデータからＣＲＣを生成し、残り１つの送信レーンに振り分ける。そして、シリアルインタフェースポート３０は、各送信レーンに振り分けたデータとダミーデータとＣＲＣとを同じ送受信サイクル内に送信する。
【００３４】
以下、図２を用いて、シリアルインタフェースポート３０が実行する処理を具体的に説明する。図２は、実施例１に係るシリアルインタフェースポートの機能構成を説明するための図である。
【００３５】
図２に示す例では、シリアルインタフェースポート３０は、送信データ生成部３３、ＣＲＣ生成部３４、バイトストライピング回路３５、コントロールビット付加部３６、複数の送信部３７〜３９、制御情報生成部４０を有する。また、シリアルインタフェースポート３０は、エラー検出部４１、リンク構成部４２、複数の受信部４３〜４５、バイトアンストライピング回路４６、ＣＲＣ検査部４７、受信データ解析部４８を有する。
【００３６】
一方、シリアルインタフェースポート５０は、複数の受信部５１〜５３、バイトアンストライピング回路５４、受信データ解析部５５、ＣＲＣ検査部５６、エラー検出部５７、リンク構成部５８を有する。また、シリアルインタフェースポート５０は、制御情報生成部５９、送信データ生成部６０、ＣＲＣ生成部６１、バイトストライピング回路６２、コントロールビット付加部６３、複数の送信部６４〜６６を有する。
【００３７】
なお、以下の説明においては、複数の受信部５１〜５３は、複数の受信部４３〜４５と同様の機能を発揮し、バイトアンストライピング回路５４は、バイトアンストライピング回路４６と同様の機能を発揮するものとして、それぞれ説明を省略する。また、受信データ解析部５５は受信データ解析部４８と同様の機能を発揮し、ＣＲＣ検査部５６はＣＲＣ検査部４７と同様の機能を発揮し、エラー検出部５７は、エラー検出部４１と同様の機能を発揮するものとして、それぞれ説明を省略する。
【００３８】
また、リンク構成部５８は、リンク構成部４２と同様の機能を発揮し、制御情報生成部５９は、制御情報生成部４０と同様の機能を発揮し、送信データ生成部６０は、送信データ生成部３３と同様の機能を発揮するものとして、それぞれ説明を省略する。また、ＣＲＣ生成部６１は、ＣＲＣ生成部３４と同様の機能を発揮し、バイトストライピング回路６２はバイトストライピング回路３５と同様の機能を発揮するものとして、それぞれ説明を省略する。
【００３９】
また、コントロールビット付加部６３は、コントロールビット付加部３６と同様の機能を発揮し、複数の送信部６４〜６６は、複数の送信部３７〜３９と同様の機能を発揮するものとして、それぞれ説明を省略する。
【００４０】
以下、シリアルインタフェースポート３０が有する各部３３〜４８について説明する。送信データ生成部３３は、ＣＰＵ１０がＣＰＵ１１に対して送信するデータを生成する。具体的には、送信データ生成部３３は、パケットルーティング部２０から送信するデータを受信すると、受信するデータを所定のビット長に分割する。
【００４１】
例えば、送信データ生成部３３は、通常時においては、受信したデータを１２８ビットのデータ長に分割し、パケットの先頭を示す２ビットのデータとパケットの末尾を示す２ビットのデータと１ビットのｒｓｖを付加した１３３ビットのデータを生成する。そして、送信データ生成部３３は、生成した１３３ビットのデータをＣＲＣ生成部３４とバイトストライピング回路３５に出力する。
【００４２】
また、送信データ生成部３３は、エラー検出部４１からエラーを検出した旨の通知を受信した場合、すなわち縮退時には、以下の処理を実行する。まず、送信データ生成部３３は、受信したデータを１２８ビットのデータ長に分割し、パケットの先頭を示す２ビットのデータとパケットの末尾を示す２ビットのデータと１ビットのｒｓｖを付加した１３３ビットのデータを生成する。そして、送信データ生成部３３は、生成した１３３ビットのデータを２送受信サイクルに分けてＣＲＣ生成部３４とバイトストライピング回路３５に出力する。
【００４３】
詳細には、送信データ生成部３３は、最初の１送受信サイクル目において、１３３ビットのデータのうち７６ビットのデータをＣＲＣ生成部３４とバイトストライピング回路３５に出力する。そして、送信データ生成部３３は、続く２送受信サイクル目において、残りの５７ビットに１９ビットのｒｓｖを付加した７６ビットのデータを生成し、生成したデータをＣＲＣ生成部３４とバイトストライピング回路３５に出力する。
【００４４】
ＣＲＣ生成部３４は、通常時においては、送信レーン＃０〜＃７のうちいずれか１つの送信レーンを除く７本の送信レーンを介して送信するデータから、エラーを検出するＣＲＣを生成する。また、ＣＲＣ生成部３４は、縮退時においては、エラーが検出されなかった５本の送信レーンのうちいずれか１つの送信レーンを除く４本の送信レーンを介して送信するデータから、エラーを検出するＣＲＣを生成する。
【００４５】
ここで、ＣＲＣ生成部３４は、通常時、および縮退時において、各送信レーンが１送受信サイクル内に送信するデータと同じ長さのＣＲＣを生成する。すなわち、ＣＲＣ生成部３４は、通常時、または縮退時において、いずれか１つの送信レーンが１送受信サイクル内に送信するデータ長と同じ長さのエラーを検出することができるＣＲＣを生成する。そして、ＣＲＣ生成部３４は、生成したＣＲＣをバイトストライピング回路３５に出力する。
【００４６】
例えば、ＣＲＣ生成部３４は、通常時において、送信データ生成部３３から１３３ビットのデータを受信する。すると、ＣＲＣ生成部３４は、受信したデータを先頭から順に用いて、１９ビットのＣＲＣを生成する。そして、ＣＲＣ生成部３４は、生成した１９ビットのＣＲＣをバイトストライピング回路３５に出力する。
【００４７】
また、ＣＲＣ生成部３４は、エラー検出部４１からエラーを検出した旨の通知を受信した場合、すなわち縮退時には、送信データ生成部３３が２送受信サイクルに分けて出力する７６ビットのデータそれぞれを用いて、１９ビットのＣＲＣを生成する。詳細には、ＣＲＣ生成部３４は、１送受信サイクル目において受信した７６ビットのデータを先頭から順に用いて、１９ビットのＣＲＣを生成し、生成したＣＲＣをバイトストライピング回路３５に出力する。
【００４８】
続いて、ＣＲＣ生成部３４は、２送受信サイクル目において受信した７６ビットのデータを先頭から順に用いて、１９ビットのＣＲＣを生成し、生成したＣＲＣをバイトストライピング回路３５に出力する。すなわち、ＣＲＣ生成部３４は、通常時、および縮退時の各送受信サイクルにおいて、各送信レーン＃０〜＃７が１送受信サイクル内に送信するデータから、いずれか１つの送信レーンが送信するデータと同じ長さのバーストエラーを検出するＣＲＣを生成する。
【００４９】
後述するように、シリアルインタフェースポート３０は、各送受信サイクルにおいて送信するデータからＣＲＣ生成部３４が生成したＣＲＣを、同一の送受信サイクル内に送信する。このため、シリアルインタフェースポート５０は、いずれか１つの送信レーンにおいて送信したデータにバーストエラーが発生し続けたとしても、同じ送受信サイクル内に送信したＣＲＣを用いてバーストエラーを検出することができる。
【００５０】
なお、ＣＲＣ生成部３４は、任意の計算式を用いて、ＣＲＣを生成してよい。例えば、ＣＲＣ生成部３４は、データを所定の変数ｘについての多項式Ｇ（ｘ）＝ｘ１９＋ｘ１８＋ｘ６＋ｘ５＋ｘ３＋１についての係数とみなして計算し、計算結果に基づいてＣＲＣを生成してもよい。
【００５１】
バイトストライピング回路３５は、送信データ生成部３３が生成したデータと、ＣＲＣ生成部３４が生成したＣＲＣとを、各送信レーン＃０〜＃７に振り分ける。具体的には、バイトストライピング回路３５は、データを送信する送信レーンの通知をリンク構成部４２から受信する。
【００５２】
すると、バイトストライピング回路３５は、通知された送信レーンに対して送信データ生成部３３が生成したデータを均等に振り分ける。また、バイトストライピング回路３５は、リンク構成部４２からＣＲＣを送信する送信レーンの通知を受信する。すると、バイトストライピング回路３５は、通知された送信レーンに対して、ＣＲＣ生成部３４が生成したＣＲＣを振り分ける。
【００５３】
なお、バイトストライピング回路３５は、データを振り分ける順番を示す論理レーン番号と、物理レーン番号との対応、または、論理レーン番号と擬似物理レーン番号との対応およびレーンリバーサルを適用する旨の通知を受ける。すると、バイトストライピング回路３５は、受信した物理レーン番号の送信レーン、または擬似物理レーン番号が示す送信レーンに対して、通知された論理レーン番号が示す順番でデータの振分けを行う。
【００５４】
例えば、バイトストライピング回路３５は、通常時においては、データを送信するレーンとして送信レーン＃０〜＃６の通知を受信し、ＣＲＣを送信するレーンとして送信レーン＃７の通知を受信する。すると、バイトストライピング回路３５は、送信レーン＃０〜＃６に対して、送信データ生成部３３から受信したデータを１９ビットずつ振り分け、ＣＲＣ生成部３４から受信した１９ビットのＣＲＣを送信レーン＃６に振り分ける。そして、バイトストライピング回路３５は、各レーン＃０〜＃７に振り分けたデータとＣＲＣとを、コントロールビット付加部３６にそれぞれ出力する。
【００５５】
また、例えば、バイトストライピング回路３５は、縮退時においては、データを送信するレーンとして送信レーン＃０〜＃３の通知を受信し、ＣＲＣを送信するレーンとして送信レーン＃４の通知を受信する。すると、バイトストライピング回路３５は、送信レーン＃０〜＃３に対して、送信データ生成部３３から受信する７６ビットのデータを１９ビットずつ振り分ける処理を、２送受信サイクルの間実行する。また、バイトストライピング回路３５は、ＣＲＣ生成部３４から受信する１９ビットのＣＲＣを、送信レーン＃４に対して振り分ける処理を、２送受信サイクルの間実行する。
【００５６】
コントロールビット付加部３６は、バイトストライピング回路３５が各送信レーン＃０〜＃７に振り分けたデータが、通常のデータパケットに含まれるデータであるか、データ転送を制御するための制御データであるかを示すコントロールビットを付加する。そして、コントロールビット付加部３６は、コントロールビットを付加したデータを各送信部３７〜３９に出力する。
【００５７】
例えば、コントロールビット付加部３６は、バイトストライピング回路３５から受信したデータを送信する場合は、送信するデータが通常のデータパケットに含まれるデータ、いわゆるＤ−Ｃｏｄｅであることを示すコントロールビットを付加する。また、コントロールビット付加部３６は、データ転送を制御するための制御データ、いわゆるＫ−Ｃｏｄｅを送信する場合は、制御情報生成部４０から制御データを受信する。そして、コントロールビット付加部３６は、制御情報生成部４０から受信した制御データがＫ−Ｃｏｄｅであることを示すコントロールビットを付加する。
【００５８】
なお、コントロールビット付加部３６が付加するコントロールビットは、ＣＲＣの保護対象ではない。また、コントロールビット付加部３６は、バイトストライピング回路３５がいずれかの送信レーンに振り分けたＣＲＣに対しても、コントロールビットを付加する。
【００５９】
複数の送信部３７〜３９は、それぞれ異なる送信レーン＃０〜＃７を介してデータをシリアル伝送する。具体的には、各送信部３７〜３９は、各送信レーン＃０〜＃７に振り分けられたデータおよびＣＲＣを、それぞれ異なる送信レーン＃０〜＃７を介して、シリアルインタフェースポート５０に送信する。
【００６０】
制御情報生成部４０は、リンク構成部４２からの要求に応じて、Ｋ−Ｃｏｄｅを生成し、生成したＫ−Ｃｏｄｅをコントロールビット付加部３６に出力する。例えば、制御情報生成部４０は、各送信部３７〜３９のデータ送受信タイミングを調整するためのリトレーニングを実行する場合には、リトレーニング用のＫ−Ｃｏｄｅを生成し、生成したＫ−Ｃｏｄｅをコントロールビット付加部３６に出力する。
【００６１】
エラー検出部４１は、各送信レーン＃０〜＃７における故障を検出する。例えば、エラー検出部４１は、リンク構成部４２を介して、各受信部４３〜４５が受信したデータを取得する。そして、エラー検出部４１は、取得したデータから、ＣＰＵ１０が実行するプログラム等によって、各送信レーン＃０〜＃７におけるエラーが検出された場合には、エラーが発生したと識別する。そして、エラー検出部４１は、エラーを検出した旨をリンク構成部４２に通知し、エラーを検出した旨を送信データ生成部３３およびＣＲＣ生成部３４に通知する。
【００６２】
リンク構成部４２は、エラー検出部４１がエラーを検出していない場合は、全ての送信レーン＃０〜＃７を選択し、選択した送信レーン＃０〜＃７をバイトストライピング回路３５に通知する。また、リンク構成部４２は、エラー検出部４１がエラーを検出した場合には、制御情報生成部４０にリトレーニングの実行を指示する。そして、リンク構成部４２は、リトレーニングの結果を用いて、エラーの原因となる故障レーンを特定する。
【００６３】
また、リンク構成部４２は、エラーを検出していない送信レーンから５本の送信レーンを選択することができるか否かを判別する。そして、リンク構成部４２は、５本の送信レーンを選択することができると判別した場合は、エラーを検出していない送信レーンから５本の送信レーンを選択し、選択した送信レーンをバイトストライピング回路３５に通知する。
【００６４】
なお、リンク構成部４２がリトレーニングを行った場合には、リトレーニング用のＫ−Ｃｏｄｅがシリアルインタフェースポート５０に送信され、シリアルインタフェースポート５０のリンク構成部５８において、エラーの原因となる故障レーンが特定される。その後、シリアルインタフェースポート５０が任意の方法で故障レーンをシリアルインタフェースポート３０に通知することで、エラー検出部４１やリンク構成部４２は、故障レーンを特定する。
【００６５】
同様に、リンク構成部４２は、受信レーン＃０〜＃７を介して受信したリトレーニング用のＫ−Ｃｏｄｅから故障レーンを特定し、特定した故障レーンをシリアルインタフェースポート５０のエラー検出部５７やリンク構成部５８に通知する。
【００６６】
ここで、リンク構成部４２は、縮退時にデータの送受信を行う送信レーンを選択する場合は、故障レーン以外の送信レーンのうち、レーンリバーサルを考慮した際に共通して使用する送信レーンが多くなるように、送信レーンを選択する。そして、リンク構成部４２は、レーンリバーサルを適用する場合には、バイトストライピング回路３５に対して、選択した送信レーンとともに、レーンリバーサルを適用する。
【００６７】
また、リンク構成部４２は、データの送受信を行う送信レーンを所定の論理に基づいて選択する。例えば、リンク構成部４２は、故障レーン以外の送信レーンから、５本の送信レーンを選択する。そして、リンク構成部４２は、故障した送信レーンが所定の数よりも多く、５本の送信レーンを選択できない場合や、故障した送信レーンの組み合わせが所定の条件を満たし、データを送信する際の信頼性が損なわれる場合等には、以下の処理を実行する。
【００６８】
すなわち、リンク構成部４２は、データの送信を停止するリンクダウンをバイトストライピング回路３５や制御情報生成部４０等に指示するとともに、ＣＰＵ１０が実行するプログラム等に対して、リンクダウンが発生した旨を通知する。なお、リンク構成部４２がリンクダウンを指示する例としては、例えば、送信レーンのうちの半分から故障が検出された場合や、３本以上の送信レーンから故障が検出され、かつ、正常な送信レーンから所定の論理に基づく選択をできない場合等である。なお、リンク構成部４２が送信レーンを選択する論理については、後述する。
【００６９】
ここで、図３を用いて、シリアルインタフェースポート３０が有するレーンリバーサル機能について説明する。図３は、レーンリバーサル機能を説明するための図である。レーンリバーサルとは、プリント版の配線を容易にするため、レーン番号の並びを逆順にする機能である。例えば、送信側の各レーンと受信側の各レーンとには、それぞれ物理レーン番号が付与されており、同じ物理レーン番号が付与されたレーン同士を接続するように、プリント版の配線が行われる。
【００７０】
ここで、図３中（Ａ）に示すように、受信側の物理レーン番号と、送信側の物理レーン番号との並びが同じ場合には、容易に配線を行う事ができる。しかし、図３中（Ｂ）に示すように、送信側の物理レーン番号と受信側の物理レーン番号との並びが逆となる場合には、送信側と受信側の配線が複雑になってしまう。そこで、図３中（Ｃ）に示すように、物理レーンとは逆順の擬似物理レーンを設定し、レーンリバーサル適用時には擬似物理レーンに従ってデータの振分けを行うことで、送信側と受信側の配線を単純化することができる。
【００７１】
また、リンク構成部４２は、縮退時にデータの送受信を行う送信レーンを選択する場合は、故障レーン以外の送信レーンのうち、レーンリバーサルを考慮した際に共通して使用する送信レーンが多くなるように、送信レーンを選択する。このため、リンク構成部４２は、レーンリバーサル機能を容易に実現できる。
【００７２】
図２に戻り、複数の受信部４３〜４５は、シリアルインタフェースポート５０が送信したデータを受信する受信部である。また、バイトアンストライピング回路４６は、バイトストライピング回路６２と逆の論理を用いて、各受信部４３〜４５が受信したデータを元のデータパケットに変換する。そして、バイトアンストライピング回路４６は、変換したデータパケットをＣＲＣ検査部４７および受信データ解析部４８に出力する。
【００７３】
ＣＲＣ検査部４７は、バイトアンストライピング回路４６が変換したデータパケットに含まれるＣＲＣを用いてエラーの検出を行う。そして、ＣＲＣ検査部４７は、エラーを検出した場合は、エラーが発生した旨をリンク構成部４２に通知する。受信データ解析部４８は、バイトアンストライピング回路４６からデータパケットを受信すると、受信データデータの解析を行い、解析結果をパケットルーティング部２０に出力する。
【００７４】
例えば、ＣＰＵ１０、ＣＰＵ１１、コア１２、コア１３、パケットルーティング部２０、シリアルインタフェースポート３０、シリアルインタフェースポート５０、パケットルーティング部６７、コア６８、コア６９とは、電子回路である。また、送信データ生成部３３、ＣＲＣ生成部３４、バイトストライピング回路３５、コントロールビット付加部３６、送信部３７〜３９、制御情報生成部４０、エラー検出部４１とは、電子回路である。
【００７５】
また、リンク構成部４２、受信部４３〜４５、バイトアンストライピング回路４６、ＣＲＣ検査部４７、受信データ解析部４８とは、電子回路である。また、シリアルインタフェースポート５０が有する各部５１〜６６についてもシリアルインタフェースポート３０が有する各部３３〜４８と同様の電子回路である。ここで、電子回路の例として、Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ（ＡＳＩＣ）やＦｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ（ＦＰＧＡ）などの集積回路、またはＣＰＵやＭｉｃｒｏ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ（ＭＰＵ）などを適用する。
【００７６】
次に、図４〜図９を用いて、シリアルインタフェースポート３０が各送信レーンに振り分けるデータについて説明する。まず、図４を用いて、通常時にシリアルインタフェースポート３０が各送信レーンに振り分けるデータについて説明する。図４は、実施例１に係るシリアルインタフェースポートが各送信レーンに振り分けるデータを説明するための図である。
【００７７】
なお、図４には、各論理レーン番号に対応する送信レーンに対して、１送受信サイクルごとに振り分ける送受信データと、各データパターンを示すパターン記号を示した。また、図４中のＤ０００〜Ｄ１２７とは、送信するデータ本体であり、Ｔ０、Ｔ１は、パケットの先頭を示すデータであり、Ｔ２、Ｔ３は、パケットの末尾を示すデータである。また、図４中のｃｔｌとは、コントロールビットであり、Ｃ００〜Ｃ１８は、１９ビットのＣＲＣである。
【００７８】
例えば、図４に示すように、シリアルインタフェースポート３０は、論理レーン番号が＃０となる送信レーンに対して、パターン記号がＡ０となるデータ、すなわちｃｔｌ、Ｄ１１３〜Ｄ１２７、Ｔ０〜Ｔ３までの２０ビットのデータを振り分ける。また、シリアルインタフェースポート３０は、論理レーン番号が＃１となる送信レーンに対して、パターン記号がＡ１となるデータ、すなわちｃｔｌ、Ｄ０９４〜Ｄ１１２までの２０ビットのデータを振り分ける。
【００７９】
また、シリアルインタフェースポート３０は、図４に示すように、論理レーン番号が＃２〜＃６となる送信レーンにパターン記号がＡ２〜Ａ６となるデータを振り分ける。また、シリアルインタフェースポート３０は、論理レーン番号が＃７となるレーンに対して、パターン記号がＣ０となるデータ、すなわち、ｃｔｌとＣ００〜Ｃ１８までの２０ビットのデータを振り分ける。
【００８０】
次に、図５を用いて、通常時においてシリアルインタフェースポート３０がＣＲＣを算出するデータの演算順序について説明する。図５は、通常時におけるＣＲＣの演算順序を説明するための図である。図５中の矢印に示すように、シリアルインタフェースポート３０は、ある送受信サイクルにおいて各論理レーン＃０〜＃６に振り分けるデータを、論理レーン番号が若い順に演算する。そして、シリアルインタフェースポート３０は、演算結果となるＣＲＣを、演算元のデータと同じ送受信サイクル内に送信するＣＲＣとして、論理レーン＃７に振り分ける。
【００８１】
この結果、シリアルインタフェースポート５０は、ある送受信サイクル内において発生したエラーを同一の送受信サイクル内で送信したＣＲＣで検出することができる。この結果、シリアルインタフェースポート５０は、１つの送信レーンにおいて１送受信サイクル内に送信したデータ全てがビット化けしたとしても、同一の送受信サイクル内に送信したＣＲＣで検出することができる。このため、シリアルインタフェースポート３０は、バーストエラー耐性を向上させることができる。
【００８２】
なお、シリアルインタフェースポート３０は、各論理レーン＃０〜＃６に付与したｒｓｖを考慮した演算を行う。このように、シリアルインタフェースポート３０は、ｒｓｖを考慮した演算を行う事で、実行する処理の論理に拡張性を保持することができる。
【００８３】
次に、図６〜図８を用いて、シリアルインタフェースポート３０が縮退時に振り分けるデータについて説明する。図６は、実施例１に係るシリアルインタフェースポートが縮退時に振り分けるデータを説明するための図である。なお、図６には、図４と同様に、シリアルインタフェースポート３０が縮退時において、５つの論理レーンに対して振り分けるデータとデータパターンのパターン記号を記載した。
【００８４】
また、図６には、縮退時において、シリアルインタフェースポート３０が２送受信サイクルに渡って送信する２００ビットのデータについて記載した。なお、以下の説明では、縮退時においてシリアルインタフェースポート３０がデータを送信する１送受信サイクル目をＥｖｅｎ  Ｃｙｃｌｅ、２送受信サイクル目をＯｄｄ  Ｃｙｃｌｅと記載する。なお、シリアルインタフェースポート３０は、現在の送受信サイクルがＥｖｅｎ  ＣｙｃｌｅであるかＯｄｄ  Ｃｙｃｌｅであるかを、リトレーニング時に、シリアルインタフェースポート５０とネゴシエーションすることで、決定する。
【００８５】
図６に示すように、Ｅｖｅｎ  Ｃｙｃｌｅにおいて、シリアルインタフェースポート３０は、論理レーン番号が＃０〜＃３となる送信レーンに対して、パターン記号がＡ０〜Ａ３となるデータを振り分ける。また、シリアルインタフェースポート３０は、論理レーン番号が＃４となる送信レーンに対して、パターン記号がＣ１となる１９ビットのＣＲＣを振り分ける。
【００８６】
また、図６に示すように、Ｏｄｄ  Ｃｙｃｌｅにおいて、シリアルインタフェースポート３０は、論理レーン番号が＃０となる送信レーンに対して、パターン記号がＲ０となるデータ、すなわちｃｔｌと１９ビットのｒｓｖを有するデータを振り分ける。また、シリアルインタフェースポート３０は、論理レーン番号が＃１〜＃３となる送信レーンに対して、パターン記号がＡ４〜Ａ６となるデータを振り分ける。また、シリアルインタフェースポート３０は、論理レーン番号が＃４となる送信レーンに対して、パターン記号がＣ２となる１９ビットのＣＲＣを振り分ける。
【００８７】
ここで、図７は、縮退時に送信するＣＲＣの演算順序を説明するための図である。シリアルインタフェースポート３０は、図７中の矢印に示すように、Ｅｖｅｎ  ＣｙｃｌｅとＯｄｄ  Ｃｙｃｌｅのそれぞれについて、論理レーン番号が＃０〜＃３となる送信レーンが送信するデータから、ＣＲＣの演算を行う。
【００８８】
そして、シリアルインタフェースポート３０は、Ｅｖｅｎ  Ｃｙｃｌｅにおいて送信するデータから算出したデータを論理レーン番号が＃４となる送信レーンから同一のＥｖｅｎ  Ｃｙｃｌｅ内に送信する。また、シリアルインタフェースポート３０は、Ｏｄｄ  Ｃｙｃｌｅにおいて送信するデータから算出したデータを論理レーン番号が＃４となる送信レーンから同一のＯｄｄ  Ｃｙｃｌｅ内に送信する。
【００８９】
このため、シリアルインタフェースポート５０は、縮退時においても、いずれか１つの送信レーンにおいて受信したデータが全てビット化けした場合にも、同じ送受信サイクル内に受信したＣＲＣを用いて、検出することができる。このため、シリアルインタフェースポート３０は、バーストエラー耐性を向上させることができる。
【００９０】
また、シリアルインタフェースポート３０は、縮退時において、通常時の半分の数の送信レーンを介してデータを送信し、さらにもう１本の送信レーンを介してＣＲＣを送信する。また、シリアルインタフェースポート３０は、通常時においては、いずれか１つの送信レーンを介してＣＲＣを送信し、残りの送信レーンを介してデータを送信する。このため、シリアルインタフェースポート３０は、データ送信の帯域を減少させることなく、バーストエラー耐性を向上させることができる。
【００９１】
ここで、図８、図９を用いて、従来のデータ伝送装置が縮退時に送信するデータについて説明する。図８は、従来のデータ伝送装置が縮退時に振り分けるデータを説明するための図である。また、図９は、従来のデータ伝送装置が縮退時にＣＲＣを演算する順序を説明するための図である。
【００９２】
例えば、図８に示すように、従来のデータ伝送装置は、縮退時においては、Ｅｖｅｎ  Ｃｙｃｌｅ  とＯｄｄ  Ｃｙｃｌｅで通常時のデータを半分ずつ、論理レーン番号が＃０〜＃３となる送信レーンに振り分けてしまう。また、図９中の矢印に示すように、従来のデータ伝送装置は、Ｅｖｅｎ  Ｃｙｃｌｅに送信するデータ、およびＯｄｄ  Ｃｙｃｌｅに送信するデータの両方からＣＲＣを演算する。このため、従来のデータ伝送装置は、何れかの送信レーンにおいて送受信サイクルを跨いだエラーが発生すると、バーストエラーを検出できない。
【００９３】
一方、シリアルインタフェースポート３０は、通常時においても縮退時においても、各送受信サイクルごとに、送信するデータからＣＲＣを生成し、生成したＣＲＣとデータとを同じ送受信サイクル内に送信する。このため、シリアルインタフェースポート３０は、バーストエラー耐性を向上させることができる。
【００９４】
次に、図１０〜図１３を用いて、リンク構成部４２が送信レーンを選択する処理の具体例について説明する。まず、図１０を用いて、縮退時にリンク構成部４２が送信レーンを選択する論理の一例について説明する。図１０は、縮退時に正常なレーンからリンク構成を選択する論理の一例を説明するための図である。
【００９５】
なお、図１０には、通常時、および縮退時にリンク構成部４２が選択する送信レーンの擬似物理レーン番号と、選択した送信レーンを図３〜図８に示す論理レーン番号のいずれとするかを記載した。すなわち、図１０に示す例では、レーンリバーサル適用時における擬似物理レーン番号と論理レーン番号との対応を記載した。
【００９６】
例えば、リンク構成部４２は、リンク幅が「ｘ８」となる場合、すなわち８本の送信レーンを用いる通常時においては、図１０中Ｎｏ．１に示す対応をバイトストライピング回路３５に対して通知する。具体的には、リンク構成部４２は、各擬似物理レーン番号＃０〜＃７を論理レーン＃０〜＃７とする対応をバイトストライピング回路３５に対して通知する。
【００９７】
また、リンク構成部４２は、リンク幅が「ｘ５」となる場合、すなわち５本の送信レーンを用いる縮退時においては、故障した送信レーンの擬似物理レーン番号に応じて、図１０中Ｎｏ．２〜Ｎｏ．１９のいずれかに示す対応を選択する。そして、リンク構成部４２は、選択した対応をバイトストライピング回路３５に対して通知する。
【００９８】
例えば、リンク構成部４２は、擬似物理レーン＃０〜＃３が全て故障しておらず、かつ、擬似物理レーン＃５〜＃７のいずれか１つが故障した場合は、図１０中Ｎｏ．２〜４の何れかの対応をバイトストライピング回路３５に対して通知する。例えば、リンク構成部４２は、Ｎｏ．２に示す対応を選択した場合は、擬似物理レーン番号＃０〜＃３の送信レーンを論理レーン＃４〜＃１とし、擬似物理レーン番号＃７の送信レーンを論理レーン＃０とする対応をバイトストライピング回路３５に通知する。
【００９９】
また、リンク構成部４２は、擬似物理レーン番号＃０〜＃３の送信レーンのうちいずれか１つが故障し、かつ、擬似物理レーン＃５〜７が全て故障していない場合は、図１０中Ｎｏ．５〜７の何れかの対応をバイトストライピング回路３５に対して通知する。また、さらに１つの送信レーンが故障した場合は、リンク構成部４２は、Ｎｏ．２〜７のうちいずれかの対応を継続できるか否かを判別する。そして、リンク構成部４２は、Ｎｏ．２〜７のうちいずれかの対応を継続できる場合は、継続できる対応をバイトストライピング回路３５に通知する。
【０１００】
また、リンク構成部４２はＮｏ．２〜７のうちいずれかの対応を継続できない場合は、以下の処理を実行する。まず、リンク構成部４２は、擬似物理レーン番号が＃０〜＃３となる送信レーンが故障しているか否かを判別する。そして、リンク構成部４２は、疑似物理レーン番号が［＃０、＃１］、［＃０、＃２］、［＃１、＃３］となる組のいずれかに含まれる全ての送信レーンが故障していない場合は、擬似物理レーン番号が＃５〜＃７となる送信レーンが故障しているか判別する。
【０１０１】
そして、リンク構成部４２は、擬似物理レーン番号が［＃５、＃６、＃７］、［＃４、＃６、＃７］、［＃４、＃５、＃７］、［＃４、＃５、＃６］となる組の何れかに含まれる全ての送信レーンが故障していない場合は、以下の処理を実行する。すなわち、リンク構成部４２は、故障していない送信レーンの擬似物理レーン番号に応じて、Ｎｏ．８〜Ｎｏ．１９に示すいずれかの対応を選択し、選択した対応をバイトストライピング回路３５に通知する。
【０１０２】
なお、図１０に示す対応は、レーンリバーサル適用時を考慮し、レーンリバーサルを適用しない際とレーンリバーサルを適用する際とで共通する対応が多くなる論理を採用した。このように、リンク構成部４２は、図１０に示す論理の対応をバイトストライピング回路３５に通知するので、２レーン以内の故障であれば、５本の送信レーンを用いてデータの送信を継続し、バイトストライピング回路３５の回路規模を削減できる。
【０１０３】
次に、図１１を用いて、リンク構成部４２が有する回路の一例について説明する。図１１は、縮退時に正常な送信レーンから使用する送信レーンを選択する回路の一例を説明するための図である。なお、図１１には、故障していない送信レーンの擬似物理レーン番号に応じて、図１０に示す送信レーンを選択する処理を実現するリンク構成部４２の回路の一例を記載した。
【０１０４】
なお、図１１中の「ｐｓｅｕｄｏ＿ｐｈｙ＿ｌａｎｅ＿Ｎ＿ｏｋ」とは擬似物理レーン番号が「Ｎ」のレーンが故障していない旨を示す信号である。また、図１１中の「ｌｉｎｋ＿Ｍ＿ｓｅｌ」とは、図１０中においてＮｏ．１〜１９で示す対応のうち、Ｎｏ．「Ｍ」の対応を選択するイネーブル信号である。例えば、図１１に示す回路は、「ｐｓｅｕｄｏ＿ｐｈｙ＿ｌａｎｅ＿０＿ｏｋ」〜「ｐｓｅｕｄｏ＿ｐｈｙ＿ｌａｎｅ＿７＿ｏｋ」が「Ｈｉ」となる場合には、「ｌｉｎｋ＿０１＿ｓｅｌ」が「Ｈｉ」となる。このため、リンク構成部４２は、図１０中のＮｏ．１に示す対応を選択する。
【０１０５】
また、例えば、図１１に示す回路は、「ｐｓｅｕｄｏ＿ｐｈｙ＿ｌａｎｅ＿７＿ｏｋ」が「Ｌｏｗ」となる場合は、「ｌｉｎｋ＿０３＿ｓｅｌ」が「Ｈｉ」となる。このため、リンク構成部４２は、図１０中のＮｏ．３に示す対応を選択する。このように、リンク構成部４２は、図１１に示すように、簡易なＡＮＤゲートの組み合わせによって、データの送信に用いる送信レーンを選択することができる。
【０１０６】
次に、図１２を用いて、擬似物理レーン番号と、送信するデータパターンとの対応を説明する。図１２は、擬似物理レーン番号とデータパターンの対応を説明するための図である。なお、図１２には、擬似物理レーン番号と論理レーン番号との対応を示すナンバー、採用する擬似物理レーンを示すビットマップ、送受信サイクル、擬似物理レーン番号とデータパターンとの対応を記載した。
【０１０７】
なお、擬似物理レーンを示すビットマップとは、採用する擬似物理レーンを「１」、採用しない擬似物理レーンを「０」とし、擬似物理レーン＃０〜＃３の組と擬似物理レーン＃４〜＃７の組とについて、採用する擬似物理レーンを示す４ビットの情報である。例えば、擬似物理レーン＃０〜＃３の組について、ビットマップが「１０１０」である場合は、擬似物理レーン＃０と擬似物理レーン＃２を使用し、擬似物理レーン＃１と擬似物理レーン＃３を使用しない旨を示す。
【０１０８】
なお、図１２に示す内容は、図４、図６、図１０、図１１をまとめたものである。例えば、擬似物理レーン＃０〜＃３の組についてのビットマップが「１１００」で擬似物理レーン＃４〜＃７の組についてのビットマップが「１０１１」である場合は、Ｎｏ「９」が選択される。このため、シリアルインタフェースポート３０は、擬似物理レーン＃０を介してパターン記号がＡ１、Ａ４となるデータを送信し、擬似物理レーン＃１を介して、パターン記号がＡ０、Ｒ０となるデータを送信する。
【０１０９】
また、シリアルインタフェースポート３０は、擬似物理レーン＃４を介してパターン記号がＡ２、Ａ５となるデータを送信し、擬似物理レーン＃６を介して、パターン記号がＡ３、Ａ６となるデータを送信する。また、シリアルインタフェースポート３０は、擬似物理レーン＃７を介して、パターン記号がＣ１、Ｃ０となるデータ、すなわちＣＲＣを送信する。
【０１１０】
次に、図１３を用いて、データ受信側、すなわちシリアルインタフェースポート５０がデータを受信する際の擬似物理レーン番号とデータパターンとの対応について説明する。図１３は、データ受信側の擬似物理レーン番号とデータパターンの対応を説明するための図である。なお、図１３には、図１２と同様に、擬似物理レーンと論理レーンとの対応を示すナンバー、採用する擬似物理レーンのビットマップ、送受信サイクル、データパターンと擬似物理レーン番号との対応について記載した。
【０１１１】
例えば、シリアルインタフェースポート５０は、擬似物理レーン＃０〜＃３の組についてのビットマップが「１１００」で擬似物理レーン＃４〜＃７の組についてのビットマップが「１０１１」である場合はＮｏ「９」に示す対応を選択する。すると、シリアルインタフェースポート５０は、擬似物理レーン＃０を介してパターン記号がＡ１、Ａ４となるデータを受信し、擬似物理レーン＃１を介して、パターン記号がＡ０、Ｒ０となるデータを受信する。
【０１１２】
また、シリアルインタフェースポート５０は、擬似物理レーン＃４を介してパターン記号がＡ２、Ａ５となるデータを受信し、擬似物理レーン＃６を介して、パターン記号がＡ３、Ａ６となるデータを受信する。また、シリアルインタフェースポート５０は、擬似物理レーン＃７を介して、パターン記号がＣ０、Ｃ１となるデータ、すなわちＣＲＣを受信する。
【０１１３】
シリアルインタフェースポート５０は、図１３に示す対応に従って、アンストライピングを行う事で、シリアルインタフェースポート３０が送信したデータを元のデータフォーマットに戻すことができる。また、シリアルインタフェースポート３０も同様に、図１３に示す対応に従って、バイトアンストライピング回路４６を制御し、シリアルインタフェースポート５０が送信したデータを元のデータフォーマットに戻すことができる。
【０１１４】
次に、図１４を用いて、バイトストライピング回路３５の動作論理の一例について説明する。図１４は、バイトストライピング回路の論理を説明するための図である。なお、図１４には、どのデータパターンをどの物理レーンに振り分けるかを示した。
【０１１５】
例えば、図１４に示すように、バイトストライピング回路３５は、各物理レーン＃０〜＃７に対して振り分けるデータを選択するセレクタを有する。そして、バイトストライピング回路３５は、各セレクタに対して、図１０に示す論理に基づいて選択された擬似物理レーンの番号、現在の送信サイクルがＥｖｅｎ  Ｃｙｃｌｅであるか、Ｏｄｄ  Ｃｙｃｌｅであるか、レーンリバーサルを適用するか否かを入力する。すると、各セレクタは、図１０に示す論理に基づいて、データパターンを物理レーン＃０〜＃７に出力する。
【０１１６】
次に、図１５を用いて、バイトアンストライピング回路４６の動作論理の一例について説明する。図１５は、バイトアンストライピング回路の論理を説明するための図である。なお、図１５には、どの物理レーンから受信したデータをどのデータパターンとみなすかを示した。
【０１１７】
例えば、図１５に示すように、バイトアンストライピング回路４６は、各物理レーン＃０〜＃７から受信したデータを選択するセレクタを有する。そして、バイトアンストライピング回路４６は、各セレクタに対して、図１０に示す論理で選択された擬似物理レーンの番号、現在の送信サイクルがＥｖｅｎ  Ｃｙｃｌｅであるか、Ｏｄｄ  Ｃｙｃｌｅであるか、レーンリバーサルを適用するか否かを入力する。
【０１１８】
すると、各セレクタは、図１０に示す論理に基づいて、選択した物理レーン＃０〜＃７から受信したデータをパターン記号がＡ０〜Ａ６、Ｃ０、Ｃ１、Ｒ０となるデータとみなす。この結果、バイトアンストライピング回路４６は、図１０に示す論理で送信されたデータを元のデータフォーマットに復元することができる。
【０１１９】
次に、図１６を用いて、リンク構成部４２が実行する処理の流れについて説明する。図１６は、リンク構成部が実行する処理の流れを説明するためのフローチャートである。例えば、リンク構成部４２は、各送信レーン＃０〜＃７に故障が発生していないと判別し、８本のリンクにデータを振り分けるようバイトストライピング回路３５に指示し（ステップＳ１０１）、データを送信させる（ステップＳ１０２）。
【０１２０】
次に、リンク構成部４２は、ＣＲＣ検査部４７またはエラー検出部４１からエラーを通知を受信したか否かを判別する（ステップＳ１０３）。そして、リンク構成部４２は、エラー通知を受信していない場合は（ステップＳ１０３否定）、再度ステップＳ１０１の処理を実行する。一方、リンク構成部４２は、エラー通知を受信した場合は（ステップＳ１０３肯定）、制御情報生成部４０にリトレーニングを指示する（ステップＳ１０４）。そして、リンク構成部４２は、リトレーニングの結果から、故障レーンを特定する（ステップＳ１０５）。
【０１２１】
次に、リンク構成部４２は、図１０に基づいて、５本の送信レーンを選択できるか否かを判別する（ステップＳ１０６）。そして、リンク構成部４２は、選択可能と判別した場合は（ステップＳ１０６肯定）、正常レーンから採用する擬似物理レーンを決定する（ステップＳ１０７）。また、リンク構成部４２は、シリアルインタフェースポート５０とのネゴシエートを制御情報生成部４０に指示し、現在の送受信サイクルがＥｖｅｎ  ＣｙｃｌｅであるかＯｄｄ  Ｃｙｃｌｅであるかを決定する（ステップＳ１０８）。
【０１２２】
そして、リンク構成部４２は、バイトストライピング回路３５、バイトアンストライピング回路４６に採用する擬似物理レーンと論理レーンとの対応や、現在の送受信サイクル等を通知する（ステップＳ１０９）。そして、リンク構成部４２は、５本の送信レーンを介してデータを送信する縮退動作を開始し（ステップＳ１１０）、データを送信させる（ステップＳ１０２）。
【０１２３】
一方、リンク構成部４２は、図１０に基づいて５本の送信レーンを選択できない場合は（ステップＳ１０６否定）、リンクダウンを指示し（ステップＳ１１１）、処理を終了する。
【０１２４】
［実施例１の効果］
上述したようにシリアルインタフェースポート３０は、複数の送信レーンを介してデータをシリアルインタフェースポート５０に送信する。ここで、シリアルインタフェースポート３０は、各送信レーンにおける故障を検出する機能を有し、故障を検出していない場合は、全ての送信レーンを選択する。一方、シリアルインタフェースポート３０は、故障を検出した場合は、故障が発生していない５本の送信レーンを選択する。
【０１２５】
そして、シリアルインタフェースポート３０は、選択した送信レーンのうち、いずれか１つの送信レーンを除く残りの送信レーンにデータを振り分ける。また、シリアルインタフェースポート３０は、振り分けるデータからエラーを検出するＣＲＣを生成し、生成したＣＲＣを残り１つの送信レーンに振り分ける。
【０１２６】
このため、シリアルインタフェースポート３０は、いずれか１つの送信レーンにおいて故障が発生し続け、送受信サイクルを跨いでエラーが発生した場合にも、各送受信サイクルにおいて送信したＣＲＣを用いて、バーストエラーを検出することができる。この結果、シリアルインタフェースポート３０は、バーストエラー耐性を向上させることができる。
【０１２７】
また、シリアルインタフェースポート３０は、各送信レーンに振り分けるデータと同じ長さのバーストエラーを検出することができるＣＲＣを生成し、生成したＣＲＣを、演算元となるデータと同じ送受信サイクル内に送信する。このためシリアルインタフェースポート３０は、いずれか１つの送信レーンにおいて全てのビットがエラーとなった場合にも、バーストエラーのビット長がＣＲＣのビット長と同じ長さとなるので、バーストエラーを検出することができる。
【０１２８】
また、シリアルインタフェースポート３０は、何れかの送信レーンにおいて故障を検出した場合には、故障を検出していない送信レーンのうち、全送信レーンの半分の数に１を加算した数の送信レーンを選択する。例えば、シリアルインタフェースポート３０は、８本の送信レーンのうち、５本の送信レーンを選択する。このため、シリアルインタフェースポート３０は、縮退時における帯域を増加させずにバーストエラー耐性を向上させることができる。
【０１２９】
また、シリアルインタフェースポート３０は、全８本の送信レーンのうち、半分の送信レーンから故障が検出された場合には、リンクダウンを指示するとともに、ＣＰＵ１０が実行するアプリケーションにリンクダウンを通知する。すなわち、シリアルインタフェースポート３０は、利用者に対して、データの送信が行えない旨を通知する。このため、シリアルインタフェースポート３０は、故障が検出された結果、信頼性を保障できなくなった際に、データの送信を停止することができる。
【０１３０】
また、シリアルインタフェースポート３０は、縮退時においては、通常時において送信するデータを２サイクルに分けて送信する。具体的には、シリアルインタフェースポート３０は、通常時に送信したデータの前半分をＥｖｅｎ  Ｃｙｃｌｅにおいて、送信し、通常時に送信したデータの後ろ半分をＯｄｄ  Ｃｙｃｌｅにおいて送信する。
【０１３１】
なお、シリアルインタフェースポート３０は、Ｅｖｅｎ  Ｃｙｃｌｅにおいても、Ｏｄｄ  Ｃｙｃｌｅにおいても、同じ送受信サイクル内において送信されるデータからエラーを検出するＣＲＣを送信する。このため、シリアルインタフェースポート３０は、縮退時における帯域を通常時の半分に留めることができる。
【０１３２】
また、シリアルインタフェースポート３０は、レーンリバーサル適用時においても共通して使用する送信レーンを優先的に用いる論理に基づいて、縮退時において使用する送信レーンを選択する。このため、シリアルインタフェースポート３０は、レーンリバーサルを適用するための複雑な実装を不要とする。
【０１３３】
また、シリアルインタフェースポート３０は、各送信レーンに対して、物理レーンアドレスと、物理レーンアドレスとは逆順の擬似物理レーンアドレスを付与し、レーンリバーサル適用時には、擬似物理レーンアドレスに従って、使用する送信レーンを選択する。このため、シリアルインタフェースポート３０は、容易にレーンリバーサル機能を実装することができる。
【実施例２】
【０１３４】
これまでシリアルインタフェースポート３０に係る実施例１について説明したが、本発明は、上述した実施例以外にも様々な異なる形態にて実施されてよいものである。そこで、以下では実施例２として本発明に含まれる他の実施例を説明する。
【０１３５】
（１）適用されるデータ送信について
上述したシリアルインタフェースポート３０は、ＣＰＵ１０とＣＰＵ１１との間で送受信するデータの送信を行った。しかし、実施例は、これに限定されるものではない。例えば、シリアルインタフェースポート３０が実現したデータ伝送方法は、ＣＰＵとＨａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ（ＨＤＤ）を初めとするＩｎｐｕｔ／Ｏｕｔｐｕｔ（Ｉ／Ｏ）装置間との間に適用することもできる。
【０１３６】
すなわち、上述したデータ伝送方法は、他の様々な任意の装置間におけるデータ通信に適用することができる。なお、上述したデータ伝送方法は、データ伝送におけるバーストエラー耐性を向上させるので、サーバのシステムバス等、信頼性の求められる環境に適用することができる。
【０１３７】
（２）送信レーンについて
上述したシリアルインタフェースポート３０は、８本の送信レーンを介して、データを送信した。しかし、実施例はこれに限定されるものではなく、任意の数の送信レーンを介してデータを送信してよい。例えば、シリアルインタフェースポート３０は、１６本の送信レーンを介して、データを送信してもよい。このような場合には、シリアルインタフェースポート３０は、縮退時において８本の送信レーンを介してデータを送信し１本の送信レーンを介してＣＲＣを送信することとしてもよい。
【０１３８】
また、縮退時において使用する送信レーンは、通常時において使用する送信レーンの半分に限定されるわけではない。すなわち、シリアルインタフェースポート３０は、通常時において１６本の送信レーンを使用し、故障が検出された送信レーンが増えるごとに、使用する送信レーンの数を１２本、８本、４本と縮退させてもよい。
【０１３９】
（３）縮退時に使用する送信レーンについて
上述したシリアルインタフェースポート３０は、縮退時において、図１０に示す論理を用いて、使用する送信レーンを選択した。しかし、実施例はこれに限定されるものではなく、他の任意の論理を用いて、使用する送信レーンを選択してもよい。また、シリアルインタフェースポート３０は、縮退時において、使用する送信レーンと使用する受信レーンとに付与された物理レーン番号を揃える必要もない。
【符号の説明】
【０１４０】
１  情報処理システム
１０  ＣＰＵ
１２、１３、６８、６９  コア
２０、６７  パケットルーティング部
３０、５０  シリアルインタフェースポート
３３、６０  送信データ生成部
３４、６１  ＣＲＣ生成部
３５、６２  バイトストライピング回路
３６、６３  コントロールビット付加部
３７〜３９、６４〜６６  送信部
４０、５９  制御情報生成部
４１、５７  エラー検出部
４２、５８  リンク構成部
４３〜４５、５１〜５３  受信部
４６、５４  バイトアンストライピング回路
４７、５６  ＣＲＣ検査部
４８、５５  受信データ解析部
【図１】
2013254274.tif 000003
【図２】
2013254274.tif 000004
【図３】
2013254274.tif 000005
【図４】
2013254274.tif 000006
【図５】
2013254274.tif 000007
【図６】
2013254274.tif 000008
【図７】
2013254274.tif 000009
【図８】
2013254274.tif 000010
【図９】
2013254274.tif 000011
【図１０】
2013254274.tif 000012
【図１１】
2013254274.tif 000013
【図１２】
2013254274.tif 000014
【図１３】
2013254274.tif 000015
【図１４】
2013254274.tif 000016
【図１５】
2013254274.tif 000017
【図１６】
2013254274.tif 000018
【図１７】
2013254274.tif 000019
【図１８】
2013254274.tif 000020
【図１９】
2013254274.tif 000021
【図２０】
2013254274.tif 000022