(57)【特許請求の範囲】
【請求項１】
１ビットずつデータを伝送する複数の伝送経路と、
所定のビット長の送信対象データと１ビットの制御ビット、または前記伝送経路の調整を行うための前記所定のビット長の制御データと１ビットの制御ビットを有する第１のシンボル、または、前記所定のビット長に１を加算したビット長の前記送信対象データを含む第２のシンボルを生成する複数の送信データ生成部と、
各送信データ生成部が生成した前記第１のシンボル、または前記第２のシンボルを、前記送信データ生成部ごとに異なる伝送経路で対向装置へ伝送する伝送部と、
を有し、
前記複数の送信データ生成部は、前記第１のシンボルと前記第２のシンボルとを所定の周期で切り替えながら生成するとともに、前記複数の送信データ生成部が前記第１のシンボル、または前記第２のシンボルを生成する各タイミングにおいて、少なくとも１つの送信データ生成部が前記第１のシンボルを生成し、他の送信データ生成部が前記第２のシンボルを生成することを特徴とするデータ伝送装置。
【請求項２】
前記複数の送信データ生成部のいずれかは、前記送信対象データに代えて、他の送信データ生成部が生成する前記第１のシンボルおよび前記第２のシンボルからエラーを検出するための冗長ビットを含む第２のシンボルを生成し、
前記伝送部は、前記複数の送信データ生成部が生成した第１のシンボルおよび第２のシンボルを一斉に前記対向装置へ伝送することを特徴とする請求項１に記載のデータ伝送装置。
【請求項３】
前記送信データ生成部は、前記送信対象データにおける先頭のビット値を反転させた値の制御ビットを当該伝送対象となるデータの先頭に付加した前記第１のシンボル、または、前記制御データにおける先頭のビット値と同じ値の制御ビットを当該制御データの先頭に付加した前記第１のシンボルを生成することを特徴とする請求項１または２に記載のデータ伝送装置。
【請求項４】
前記複数の送信データ生成部は、複数の組に組み分けられており、各組ごとに前記第１のシンボルおよび前記第２のシンボルを前記所定の周期で切り替えながら生成することを特徴とする請求項１−３のいずれか１つに記載のデータ伝送装置。
【請求項５】
送信側装置と受信側装置とが１ビットずつデータを伝送する複数の伝送経路を介してデータの送受信を行うデータ伝送システムにおいて、
前記送信側装置は、
所定のビット長の送信対象データと１ビットの制御ビット、または前記伝送経路の調整を行うための前記所定のビット長の制御データと１ビットの制御ビットを有する第１のシンボル、または、前記所定のビット長に１を加算したビット長の前記送信対象データを含む第２のシンボルを生成する複数の送信データ生成部と、
各送信データ生成部が生成した前記第１のシンボル、または前記第２のシンボルを、前記送信データ生成部ごとに異なる伝送経路で対向装置へ伝送する伝送部と、
を有し、
前記受信側装置は、
それぞれ異なる伝送経路を介して、前記第１のシンボル、または前記第２のシンボルを受信する複数の受信部と、
前記受信部が受信した前記第１のシンボルに含まれるビット遷移のエッジから前記第１のシンボル、または前記第２のシンボルを受信するクロックを再生する再生部と
を有し、
前記複数の送信データ生成部は、前記第１のシンボルと前記第２のシンボルとを所定の周期で切り替えながら生成するとともに、前記複数の送信データ生成部が前記第１のシンボル、または前記第２のシンボルを生成する各タイミングにおいて、少なくとも１つの送信データ生成部が前記第１のシンボルを生成し、他の送信データ生成部が前記第２のシンボルを生成することを特徴とするデータ伝送システム。
【請求項６】
１ビットずつデータを伝送する複数の伝送経路を介してデータを対向装置に伝送するデータ伝送装置が
少なくとも１つの前記伝送経路を介して、所定のビット長の送信対象データと１ビットの制御ビット、または前記伝送経路の調整を行うための前記所定のビット長の制御データと１ビットの制御ビットを有する第１のシンボルを伝送するとともに、他の伝送経路を介して、前記所定のビット長に１を加算したビット長の前記送信対象データを含む第２のシンボルを伝送し、
所定の周期で、前記第１のシンボルを伝送する伝送経路と、前記第２のシンボルを伝送する伝送経路とを切り替える
処理を実行することを特徴とするデータ伝送方法。
【請求項７】
送信データに含まれる第１のデータ長のデータに１ビットの制御ビットを付加したデータを生成する第１のデータ生成処理と、送信データに含まれる該第１のデータ長より１ビット分データ長が長い第２のデータ長のデータを生成する第２のデータ生成処理とを行う第１のデータ生成部と、
前記第１のデータ生成部の前記第１のデータ生成処理によって生成されたデータと、前記第２のデータ生成処理によって生成されたデータとを所定の順で送信する第１の送信部と、
前記第１のデータ生成処理と、前記第２のデータ生成処理とを実行する第２のデータ生成部と、
前記第２のデータ生成部の前記第１のデータ生成処理によって生成されたデータと、前記第２のデータ生成処理によって生成されたデータとを所定の順で前記第１の送信部とは異なる送信経路を介して送信する第２の送信部と、
を備え、
前記第１の送信部が前記第１のデータ生成処理によって生成したデータの送信期間と前記第２の送信部が前記第１のデータ生成処理によって生成したデータの送信期間とが時間的に重複しないようにずらした、
ことを特徴とするデータ伝送装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ伝送装置、データ伝送システムおよびデータ伝送方法に関する。
【背景技術】
【０００２】
従来、伝送経路を介して１ビット幅のデータを送信するシリアル伝送技術が知られている。このようなシリアル伝送技術の一例として、８Ｂ（Ｂｉｔ）１０Ｂ方式と呼ばれるコード化方式が採用されている。具体的には、８Ｂ１０Ｂ方式では、あらかじめ定義されたルックアップテーブルを用いて、Ｄキャラクタと呼ばれる８ビットのデータ、またはＫキャラクタと呼ばれる制御キャラクタを１０ビットのデータにテーブル変換して送信する。
【０００３】
ここで、８Ｂ１０Ｂ方式では、送信する１０ビットのデータ中に連続するビットが５ビット以下となるように、ルックアップテーブルが定義されている。このため、８Ｂ１０Ｂ方式で変換された１０ビットのデータ中には、１回以上のビット値の遷移が含まれるので、データ受信側におけるクロック再生が容易となる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】米国特許第４４８６７３９号明細書
【特許文献２】国際公開第２０１０／１４６７１５号
【非特許文献】
【０００５】
【非特許文献１】PCI  Express  Base  Specification  Revision  3.0.    PCI-SIG.    November  10,  2010.
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、上述した８Ｂ１０Ｂ方式では、８ビットのデータを１０ビットのデータに変換してから送信するので、シリアル伝送のオーバーヘッドが増加する結果、伝送効率が悪化するという問題がある。例えば、８Ｂ１０Ｂ方式でデータを送信するＬＳＩは、８ビットのデータを送信するために１０ビットのデータを送信するので、データの伝送に使用する帯域幅を、例えば２５パーセント増加させてしまう。
【０００７】
本発明は、１つの側面では、シリアル伝送の効率を向上させることを目的とする。
【課題を解決するための手段】
【０００８】
１つの側面では、１ビットずつデータを伝送する複数の伝送経路を有するデータ伝送装置である。また、データ伝送装置は、所定のビット長の送信対象データと１ビットの制御ビット、または前記伝送経路の調整を行うための前記所定のビット長の制御データと１ビットの制御ビットを有する第１のシンボル、または、前記所定のビット長に１を加算したビット長の前記送信対象データを含む第２のシンボルとを生成する複数の送信データ生成部を有する。ここで、データ伝送装置は、複数の送信データ生成部に、第１のシンボルと、第２のシンボルとを所定の周期で切り替えるよう生成させるとともに、第１のシンボル、または第２のシンボルを生成する各タイミングにおいて、少なくとも１つの送信データ生成部に第１のシンボルを生成させ、他の送信データ生成部に第２のシンボルを生成させる。そして、データ伝送装置は、各送信データ生成部が生成した第１のシンボルおよび第２のシンボルを、送信データ生成部ごとに異なる伝送経路で対向装置へ伝送する。
【発明の効果】
【０００９】
シリアル伝送の効率を向上させることができる。
【図面の簡単な説明】
【００１０】
【図１】図１は、実施例１に係る情報処理システムの一例を説明するための図である。
【図２】図２は、実施例１に係るＣＰＵの機能構成を説明するための図である。
【図３】図３は、実施例１に係るシリアルインタフェースポートの機能構成を説明するための図である。
【図４】図４は、データリンク層におけるパケットを説明するための図である。
【図５】図５は、データリンク層でのパケットフォーマットを説明するための図である。
【図６】図６は、実施例１に係る物理層機能部の機能構成を説明するための図である。
【図７】図７は、実施例１に係る１９Ｂ２０Ｂ変換を説明するための図である。
【図８】図８は、実施例１に係る１０ビットシンボルコードを説明するための図である。
【図９】図９は、実施例１に係るＫキャラクタのビットコードを説明するための図である。
【図１０】図１０は、１９Ｂ２０Ｂエンコーダの具体例を説明するための図である。
【図１１】図１１は、実施例１に係る１９Ｂ２０Ｂエンコーダの動作を説明するための図である。
【図１２】図１２は、偶数サイクル時に各レーン＃０〜＃７に出力されるデータを説明するための図である。
【図１３】図１３は、奇数サイクル時に各レーン＃０〜＃７に出力されるデータを説明するための図である。
【図１４】図１４は、実施例１に係る各レーン＃０〜＃７が第１のシンボルを出力する順序を説明するための図である。
【図１５】図１５は、実施例１に係る１９Ｂ２０Ｂデコーダの具体例を説明するための図である。
【図１６】図１６は、実施例１に係る１９Ｂ２０Ｂデコーダの動作を説明するための図である。
【図１７】図１７は、実施例１に係るＬＴＳＳＭの状態遷移を説明するための図である。
【図１８】図１８は、ＬＴＳＳＭの各状態を説明するための図である。
【図１９】図１９は、実施例１に係るオーダーセット生成部の機能構成を説明するための図である。
【図２０】図２０は、実施例１に係るオーダーセット検出部の機能構成を説明するための図である。
【図２１】図２１は、実施例１に係る送信部が出力するデータのシーケンスを説明するための図である。
【図２２】図２２は、実施例１に係るスキップオーダーセットを説明するための図である。
【図２３】図２３は、実施例１に係る送信タイミング生成回路を説明するための図である。
【図２４】図２４は、実施例１に係る送信タイミング生成回路の動作を説明するためのタイミングチャートである。
【図２５】図２５は、実施例１に係る受信タイミング生成回路を説明するための図である。
【図２６】図２６は、実施例１に係る受信タイミング生成回路の動作を説明するためのタイミングチャートである。
【図２７】図２７は、レーン＃２におけるバーストエラーを説明するための図である。
【図２８】図２８は、バーストエラーが発生した際に受信するデータを説明するための図である。
【図２９】図２９は、データ出力のバリエーションを説明するための図である。
【図３０】図３０は、各サイクル時に出力するデータの一例を説明するための図である。
【図３１】図３１は、複数レーンで構成された高速シリアルバスを説明するための図である。
【図３２】図３２は、従来のパケットの一例を説明するための図である。
【図３３】図３３は、Ｋキャラクタの一例を説明するための図である。
【図３４】図３４は、バイトストライピング回路が実行する処理の一例を説明するための図である。
【図３５】図３５は、８Ｂ１０Ｂコード変換回路の原理を説明するための図である。
【図３６】図３６は、８Ｂ１０Ｂコード変換の一例を説明するための図である。
【図３７】図３７は、バーストエラーが発生した際のビット化けを説明するための図である。
【図３８】図３８は、バーストエラーが発生した場合のエラーデータを説明するための図である。
【発明を実施するための形態】
【００１１】
以下に添付図面を参照して本願に係るデータ伝送装置、データ伝送システムおよびデータ伝送方法について説明する。
【実施例１】
【００１２】
まず、実施例１に係るデータ伝送装置が有する効果を明確にするため、従来の８Ｂ１０Ｂ方式が有する問題点について説明する。まず、従来の８Ｂ１０Ｂ方式を用いてデータを伝送するシリアル伝送技術の一例として、ＰＣＩｅ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｐｒｅｓｓ）の技術について説明する。
【００１３】
以下、図面を用いて、ＰＣＩｅの技術でデータの伝送を行うＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｅｄ  ｃｉｒｃｕｉｔ）について説明する。なお、以下の例では、データ送信側ＬＳＩとデータ受信側ＬＳＩとを複数のシリアルバスを束ねた複数レーンで接続し、複数レーンを介してデータの伝送を行う例について説明する。
【００１４】
図３１は、複数レーンで構成された高速シリアルバスを説明するための図である。図３１に示す例では、データ送信側ＬＳＩ７７とデータ受信側ＬＳＩ８４とは、複数のレーン＃０〜＃ｎで接続されており、各レーン＃０〜＃ｎを介して、シリアル伝送によるデータの送受信を行う。
【００１５】
図３１に示す例では、データ送信側ＬＳＩ７７は、データ送信バッファ７８、制御文字生成部７９、バイトストライピング回路８０、複数の送信回路８１〜８３を有する。また、送信回路８１は、スクランブラ８１ａ、８Ｂ１０Ｂエンコーダ８１ｂ、シリアライザ８１ｃ、ドライバ８１ｄを有する。なお、送信回路８２および送信回路８３は、送信回路８１と同様の機能を発揮するものとして、説明を省略する。
【００１６】
一方、データ受信側ＬＳＩ８４は、複数の受信回路８５〜８７、バイトアンストライピング回路８８、データ受信バッファ８９、制御文字受信部９０を有する。また、受信回路８５は、レシーバ８５ａ、デシリアライザ８５ｂ、８Ｂ１０Ｂデコーダ８５ｃ、デスクランブラ８５ｄを有する。なお、受信回路８６および受信回路８７は、受信回路８５と同様の機能を発揮するものとして、説明を省略する。
【００１７】
データ送信バッファ７８は、データ送信側ＬＳＩ７７が送信するデータを記憶するバッファである。また、制御文字生成部７９は、初期化、エラーデータ操作、送信側対受信側のクロックジッタの調整等の制御を実行するためのＫキャラクタを生成する。また、バイトストライピング回路８０は、データ送信バッファ７８および制御文字生成部７９から受信したデータを、各レーン＃０〜＃ｎに対して１バイトごとに振り分けるバイトストライピング処理を実行する。
【００１８】
また、スクランブラ８１ａは、バイトストライピング回路８０がレーン＃０に割り当てたデータを乱数変換する。そして、８Ｂ１０Ｂエンコーダ８１ｂは、予め定義されたルックアップテーブルに従って、スクランブラ８１ａが乱数変換した８ビットのデータを１０ビットに変換する。また、シリアライザ８１ｃは、８Ｂ１０Ｂエンコーダ８１ｂが変換した１０ビットのデータをシリアル変換する。そして、ドライバ８１ｄは、シリアル変換されたデータを、レーン＃０を介してデータ受信側ＬＳＩ８４へ送信する。
【００１９】
一方、レシーバ８５ａは、レーン＃０を介して、ドライバ８１ｄが送信したデータを受信する。また、デシリアライザ８５ｂは、レシーバ８５ａが受信したデータを１０ビットのデータにパラレル変換する。また、８Ｂ１０Ｂデコーダ８５ｃは、８Ｂ１０Ｂエンコーダ８１ｂと同様のルックアップテーブルを用いて、デシリアライザ８５ｂが変換した１０ビットのデータを元の８ビットのデータに変換する。また、デスクランブラ８５ｄは、スクランブラ８１ａによる乱数変換の逆変換を行う。
【００２０】
また、バイトアンストライピング回路８８は、バイトストライピング回路８０とは逆の処理を行うことで、各受信回路８５〜８７が各レーン＃０〜＃ｎを介して受信したデータを元の順序に戻す。そして、バイトアンストライピング回路８８は、元の順序に戻したデータをデータ受信バッファ８９、または制御文字受信部９０に出力する。
【００２１】
次に、図３２を用いて、データ送信バッファ７８が記憶する送信対象のデータについて説明する。図３２は、従来のパケットの一例を説明するための図である。なお、図３２には、データ送信バッファ７８がデータリンク層から受信するパケットの一例を記載した。
【００２２】
例えば、データ送信バッファ７８が受信するパケットは、Ｂｙｔｅ＃０〜Ｂｙｔｅ＃Ｎを含むＮ＋１バイトのパケットであり、ＴＬＰ（Ｔｒａｎｓａｃｔｉｏｎ  Ｌａｙｅｒ  Ｐａｃｋｅｔ）である。詳細には、データ送信バッファ７８が受信するパケットは、ＴＬＰパケット本体にＴＬＰシーケンス番号とＴＬＰヘッダとがデータリンク層において付加されたパケットである。また、パケットには、パケット送信時に発生するエラーの検査を行うため、３２ビットのＬｉｎｋ  ＣＲＣ（Ｃｙｃｌｉｃ  Ｒｅｄｕｎｄａｎｃｙ  Ｃｈｅｃｋ）が付加されており、３２ビット以下の連続するエラー（バーストエラー）を検出できる。
【００２３】
次に、図３３を用いて、制御文字生成部７９が生成するＫキャラクタについて説明する。図３３は、Ｋキャラクタの一例を説明するための図である。ここで、図３３に示すコードとは、各Ｋキャラクタを一意に示すコードである。例えば、制御文字生成部７９は、レーンとリンクの初期化と管理を行う「ＣＯＭ」（Ｃｏｍｍａ）シンボルや、トランザクション・レイヤ・パケットの開始を示す「ＳＴＰ」（Ｓｔａｒｔ  ＴＬＰ）シンボルを生成する。そして、制御文字生成部７９は、生成した「ＣＯＭ」シンボルや「ＳＴＰ」シンボルをバイトストライピング回路８０に出力する。
【００２４】
次に、図３４を用いて、バイトストライピング回路８０およびバイトアンストライピング回路８８が実行する処理について説明する。図３４は、バイトストライピング回路が実行する処理の一例を説明するための図である。なお、図３４には、バイトストライピング回路８０が、Ｂｙｔｅ＃００〜Ｂｙｔｅ＃３１までの３２バイトのデータを８つのレーン＃０〜＃７に振り分ける処理について記載する。
【００２５】
例えば、バイトストライピング回路８０は、図３４に示すように、データ送信バッファ７８が出力するデータを１バイトごとに、ラウンドロビン方式で各レーンに振り分ける。この結果、例えば、バイトストライピング回路８０は、レーン＃０に対してＢｙｔｅ＃００、Ｂｙｔｅ＃０８、Ｂｙｔｅ＃１６、Ｂｙｔｅ＃２４を振り分ける。
【００２６】
また、バイトアンストライピング回路８０は、各受信回路８５〜８７が各レーン＃０〜＃７を介して受信したデータを元の順序に並び替え、その後、元の順序に並び変えたデータをデータ受信バッファ８９に出力する。この結果、データ受信バッファ８９は、データ送信バッファ７８が送信したデータを受信する。
【００２７】
次に、図３５を用いて、８Ｂ１０Ｂエンコーダ８１ｂが８ビットのデータを１０ビットのデータに変換する処理について説明する、図３５は、８Ｂ１０Ｂコード変換回路の原理を説明するための図である。例えば、図３５に示すように、８Ｂ１０Ｂエンコーダ８１ｂは、３ビットのデータを４ビットに変換する３Ｂｉｔルックアップテーブルと、５ビットのデータを６ビットのデータに変換するルックアップテーブルとを有する。
【００２８】
そして、８Ｂ１０Ｂエンコーダ８１ｂは、ルックアップテーブルを用いて、８ビットのＤキャラクタ、またはＫキャラクタを１０ビットのデータに変換し、変換後のデータを１０ビットのシンボルコードとして出力する。また、８Ｂ１０Ｂエンコーダ８１ｂは、制御キャラクタ制御信号が入力されると、ルックアップテーブルを用いて、制御文字生成部７９が生成した制御キャラクタを１０ビットのシンボルコードに変換する。また、８Ｂ１０Ｂエンコーダ８１ｂは、ランニングディスパリティの値に応じて、異なるシンボルコードを出力する。
【００２９】
図３６は、８Ｂ１０Ｂコード変換の一例を説明するための図である。８Ｂ１０Ｂエンコーダ８１ｂは、図３６に例示するように、ランニングディスパリティの値に応じて、８ビットの送信データを１０ビットのデータに変換する。ここで、図３６には、データキャラクタ名として、８Ｂ１０Ｂエンコーダ８１ｂが出力する１０ビットのデータに付与されるコードを記載した。
【００３０】
また、図３６には、データキャラクタ値として、変換前の８ビットのデータを１６進数で表した値と、変換前の８ビットのデータとを記載した。なお、図３６に示す例では、８ビットのデータを送信順に右から記載した。また、図３６には、各データキャラクタが、ランニングディスパリティが正の場合と負の場合とで、どのようなデータに変換されるかを記載した。例えば、図３６に示す例では、８Ｂ１０Ｂエンコーダ８１ｂは、ランニングディスパリティが負である場合には、８ビットのデータキャラクタ値「６Ｃ」のデータを、「００＿１１０１＿１１００」に変換する。
【００３１】
上述したように、データ送信側ＬＳＩ７７は、バイトストライピング回路８０を用いて、送信するデータを各レーン＃０〜＃７に振り分ける。そして、データ送信側ＬＳＩ７７は、８ビットのデータ、またはＫキャラクタを１０ビットのシンボルコードに変換して、１０ビットのデータをデータ受信側ＬＳＩ８４に送信する。
【００３２】
しかし、データ送信側ＬＳＩ７７は、８ビットのデータを１０ビットのデータに変換して送信するので、伝送効率を悪化させてしまう。また、データ送信側ＬＳＩ７７は、ルックアップテーブルを用いてデータの変換を行うので、データの伝送時に発生する遅延時間を増加させてしまう。
【００３３】
また、データ送信側ＬＳＩ７７は、バイトストライピング処理によって各レーン＃０〜＃７に振り分けたデータを８Ｂ１０Ｂ変換してからデータ受信側ＬＳＩ８４に送信する。このため、データ受信側ＬＳＩ８４は、１つのレーンでバーストエラーが発生した場合には、エラーの検出を行うことができない場合がある。
【００３４】
以下、図面を用いて、１つのレーンでバーストエラーが発生した場合にエラーの検出を行うことができない例について説明する。図３７は、バーストエラーが発生した際のビット化けを説明するための図である。例えば、図３７中（Ａ）に示すように、データ送信側ＬＳＩ７７は、１６進数で「６Ｃ、００、００、００、００、００、００、００、５Ｆ、００、００、００、００、００、００、００」のデータを送信対象とする。
【００３５】
すると、データ送信側ＬＳＩ７７は、バイトストライピング回路８０を用いて、データのバイトストライピングを行い、８Ｂ１０Ｂエンコーダ８１ｂを用いて１０ビットのデータに変換する。この結果、ランニングディスパリティが負である場合には、図３７中（Ｂ）に示すように、ドライバ８１ｄは、キャラクタ「０ＤＣ」を送信し、キャラクタ「２Ｂ５」を出力する。
【００３６】
ここで、図３７中（Ｃ）に示すように、レーン＃０においてバーストエラーが発生し、ドライバ８１ｄが最初に送信したキャラクタの最後のビットと、次に送信したキャラクタの最初のビットとが反転したものとする。すると、図３７中（Ｄ）に示すように、レシーバ８５ａは、キャラクタ「０ＤＤ」を受信し、次にキャラクタ「０Ｂ５」を受信する。
【００３７】
そして、８Ｂ１０Ｂデコーダ８５ｃは、レシーバ８５ａが受信したキャラクタ「０ＤＤ」と「０Ｂ５」とを８ビットのデータに変換する。そして、バイトアンストライピング回路８８は、各レーン＃０〜＃７が受信したデータを元の順序に並び替えてデータ受信バッファ８９に出力する。この結果、データ受信バッファ８９は、図３７中（Ｅ）に示すように、「８Ｃ、００、００、００、００、００、００、００、５４、００、００、００、００、００、００、００、」を受信する。
【００３８】
ここで、図３８は、バーストエラーが発生した場合のエラーデータを説明するための図である。なお、図３８には、図３７に示すデータ送信バッファ７８が送信したデータと、データ受信バッファ８９が受信したデータとを記載した。図３８中の網掛けに示すように、データ受信バッファ８９は、Ｂｙｔｅ＃００とＢｙｔｅ＃０８とにエラーが生じたデータを受信する。
【００３９】
すると、データ受信側ＬＳＩ８４は、Ｂｙｔｅ＃００においてビットデータが最初に不一致となる箇所から、Ｂｙｔｅ＃０８においてビットデータが最後に不一致となる箇所までを異常なデータとみなす。このため、図３８中（Ｆ）に示すように、データ受信バッファ８９が受信したデータには、６３ビット長の異常データが含まれる。すると、データ受信側ＬＳＩ８４は、データ送信側ＬＳＩ７７が送信したパケットに含まれる３２ビットのＬＣＲＣでは、図３８中（Ｆ）に示すエラーを検出できない場合がある。
【００４０】
なお、図３７および図３８では、８本のレーンを介したシリアル伝送において、２ビットのバーストエラーが６３ビット長の異常データを発生させる例について説明した。しかし、レーンの数がさらに多い場合には、さらに離れた位置のビットが各レーンに割り当てられるので、バイトアンストライピング処理を行った後のデータのうち、異常とみなされる部分のビット長が長くなる。この結果、データ受信側ＬＳＩ８４は、エラーを検出することができなくなる。
【００４１】
本実施例に開示の技術は、１つの側面では、シリアル伝送の効率を向上させる。また、本実施例に開示の技術は、１つの側面では、伝送路上で発生したバーストエラーを検出できる。
【００４２】
次に、図を用いて、本願のデータ伝送システムを有する情報処理システムの一例について説明する。図１は、実施例１に係る情報処理システムの一例を説明するための図である。図１に示すように、情報処理システム１は、複数のＣＰＵ（Central  Processing  Unit）１０〜１０ｃ、複数のメモリ１５〜１５ｃ、複数のＩＯ（Input  Output）装置１６〜１６ｃを有する。
【００４３】
また、各ＣＰＵ１０〜１０ｃは、情報処理システム１の処理能力の向上を目的とし、ｃｃＮＵＭＡ（Cash  Coherence  Non-Uniform  Memory  Access）等の技術が適用されている。なお、図１に示す例では、情報処理システム１は、４つのＣＰＵ１０〜１０ｃを有するが、実施例はこれに限定されるものではなく、任意の数のＣＰＵを有することとしてもよい。
【００４４】
メモリ１５およびＩＯ装置１６は、ＣＰＵ１０に接続され、メモリ１５ａおよびＩＯ装置１６ａは、ＣＰＵ１０ａに接続されている。また、メモリ１５ｂおよびＩＯ装置１６ｂは、ＣＰＵ１０ｂに接続され、メモリ１５ｃおよびＩＯ装置１６ｃは、ＣＰＵ１０ｃに接続されている。
【００４５】
また、ＣＰＵ１０は、命令処理部１１、記憶制御部１２、ＩＯ制御部１３、シリアルインタフェース部１４を有する。また、ＣＰＵ１０ａは、ＣＰＵ１０と同様に、命令処理部１１ａ、記憶制御部１２ａ、ＩＯ制御部１３ａ、シリアルインタフェース部１４ａを有する。また、ＣＰＵ１０ｂは、ＣＰＵ１０と同様に、命令処理部１１ｂ、記憶制御部１２ｂ、ＩＯ制御部１３ｂ、シリアルインタフェース部１４ｃを有する。また、ＣＰＵ１０ｃは、ＣＰＵ１０と同様に、命令処理部１１ｃ、記憶制御部１２ｃ、ＩＯ制御部１３ｃ、シリアルインタフェース部１４ｃを有する。
【００４６】
ここで、各シリアルインタフェース部１４〜１４ｃは、シリアル伝送経路で相互に接続されており、各シリアル伝送経路を介して、データの送受信を行う。なお、図１に示す例では、各ＣＰＵ１０〜１０ｃ間をシリアル伝送経路で相互に接続することとしたが、実施例はこれに限定されるものではなく、例えば、クロスバ装置等によって段階的に接続することとしてもよい。なお、各ＣＰＵ１０ａ〜１０ｃは、ＣＰＵ１０と同様の機能を発揮するものとして、以下の説明を省略する。
【００４７】
命令処理部１１は、各種演算処理を実行する処理部であり、例えば、メモリ１５に格納されたデータを用いて演算処理を実行する複数のコアを有する。記憶制御部１２は、メモリ１５が記憶するデータの制御を実行する制御部であり、メモリコントローラの機能や、キャッシュコヒーレンシを保持する機能を有する。ＩＯ制御部１３は、ＩＯ装置に対するアクセスを行う。
【００４８】
次に、図２を用いて、ＣＰＵ１０の機能構成について説明する。図２は、実施例１に係るＣＰＵの機能構成を説明するための図である。図２に示す例では、ＣＰＵ１０は、複数のコア２０、２１、メモリインタフェース部２２、キャッシュコヒーレンシ制御部２３、パケットルーティング部２４、複数のシリアルインタフェースポート３０〜３２を有する。
【００４９】
ここで、各コア２０、２１は、図１に示す命令処理部１１に含まれ、メモリインタフェース部２２およびキャッシュコヒーレンシ制御部２３は、図１に示す記憶制御部１２に含まれる。また、パケットルーティング部２４および複数のシリアルインタフェースポート３０〜３２は、図１に示すシリアルインタフェース部１４に含まれる。
【００５０】
また、シリアルインタフェースポート３０は、ＣＰＵ１０ａと接続され、シリアルインタフェースポート３１は、ＣＰＵ１０ｂと接続され、シリアルインタフェースポート３２は、ＣＰＵ１０ｃと接続される。なお、図２に示す例では、コア２０、２１以外のコアについては記載を省略したが、ＣＰＵ１０は、任意の数のコアを有することができる。また、図２に示す例では、シリアルインタフェースポート３０〜３２以外のシリアルインタフェースポートについては、記載を省略したが、ＣＰＵ１０は、任意の数のシリアルインタフェースポートを有することができる。
【００５１】
コア２０、２１は、各種演算処理を実行するコアである。例えば、コア２０は、キャッシュ機能を有し、パケットルーティング部２４、キャッシュコヒーレンシ制御部２３、メモリインタフェース部２２を介してメモリ１５が記憶するデータをキャッシュし、キャッシュしたデータを用いて演算処理を実行する。
【００５２】
メモリインタフェース部２２は、メモリアクセスを行う制御部である。例えば、メモリアクセス装置である。キャッシュコヒーレンシ制御部２３は、メモリ１５が記憶するデータとコア２０、２１や、他のＣＰＵ１０ａ〜１０ｃがキャッシュしたデータとの同一性を保持する処理を実行する。例えば、キャッシュコヒーレンシ制御部２３は、イリノイプロトコルやｃｃＮＵＭＡ等の手法を用いて、キャッシュデータのコヒーレンスを保持する処理を実行する。
【００５３】
パケットルーティング部２４は、コア２０、コア２１、キャッシュコヒーレンシ制御部２３、ＩＯ制御部１３、シリアルインタフェースポート３０〜３２が相互に交換するパケットを中継する。シリアルインタフェースポート３０〜３２は、それぞれ異なるＣＰＵ１０ａ〜１０ｃと接続されており、他のＣＰＵ１０ａ〜１０ｃとの間でシリアル伝送経路を介したシリアル伝送を行うポートである。
【００５４】
以下、各シリアルインタフェースポート３０〜３２が実行する処理について説明する。なお、以下の説明においては、シリアルインタフェースポート３１、シリアルインタフェースポート３２は、シリアルインタフェースポート３０と同様の機能を発揮するものとして、説明を省略する。
【００５５】
図３は、実施例１に係るシリアルインタフェースポートの機能構成を説明するための図である。図３に示す例では、シリアルインタフェースポート３０は、トランザクション層機能部３３、データリンク層機能部３４、物理層機能部３５を有する。また、物理層機能部３５は、物理層論理サブブロック３６と物理層電気サブブロック３７を有する。
【００５６】
トランザクション層機能部３３は、トランザクション層パケットの生成機能、バーチャルチャネル（ＶＣ：Virtual  Channel）の管理機能、ＶＣクレジットによるデータフローの制御機能等を有する。例えば、トランザクション層機能部３３は、パケットルーティング部２５からＣＰＵ１０ａに送信するパケットを受信すると、受信したパケットからトランザクション層パケットを生成し、生成したパケットをデータリンク層機能部３４に出力する。
【００５７】
データリンク層機能部３４は、物理層を経由して接続されたリモート・コンポーネント間でのパケット配送制御機能、データリンクレイヤパケット（ＤＬＬＰ：Data  Link  Layer  Packet）の生成機能、ＤＬＬＰの解読機能を有する。また、データリンク層機能部３４は、リトライバッファによるデータ再送機能、ＡＣＫやＮＡＣＫによるデータフロー制御機能、冗長ビットであるＣＲＣの生成機能、ＣＲＣを用いたエラーの検出機能を有する。
【００５８】
例えば、データリンク層機能部３４は、ＣＰＵ１０ａに送信するパケットをトランザクション層機能部３３から受信すると、受信したパケットからＤＬＬＰを生成する。また、データリンク層機能部３４は、生成したＤＬＬＰからエラーを検出するためのＣＲＣを生成し、生成したＣＲＣをＤＬＬＰに付加する。そして、データリンク層機能部３４は、ＣＲＣを付加したＤＬＬＰを物理層機能部３５に出力する。
【００５９】
ここで、図４、図５を用いて、データリンク層機能部３４が生成するパケットの一例を説明する。図４は、データリンク層におけるパケットを説明するための図である。図４に示すように、データリンク層機能部３４は、ビット＃０〜＃７５までの７６ビットのパケットを生成する。ここで、データリンク層機能部３４が生成するパケットのビット＃７４〜＃７５は、タグＴ１〜Ｔ０を格納するフィールドであり、２ビットの制御コードが格納される。
【００６０】
また、データリンク層機能部３４が生成するパケットのビット＃７３〜＃１０は、ペイロードＤ６３〜Ｄ００を格納するフィールドであり、８バイトのデータを格納するペイロードである。また、データリンク層機能部３４が生成するパケットのビット＃９〜＃０は、ＣＲＣＣ９〜Ｃ０とを格納するフィールドであり、１０ビットのＣＲＣを格納するフィールドである。この１０ビットのＣＲＣは、最大で１０ビットのバーストエラーを検出する事ができる。
【００６１】
ここで、タグＴ１〜Ｔ０に格納される２ビットの制御コード信号は、８バイトのペイロードデータＤ６３〜Ｄ００の属性を表す信号である。ＣＰＵ１０〜ＣＰＵ１０ｃは、タグＴ１〜Ｔ０に格納した制御コード信号およびペイロードデータＤ６３〜Ｄ００の一部のビットを用いて、Ｋキャラクタの機能を実現する。
【００６２】
図５は、データリンク層でのパケットフォーマットを説明するための図である。なお、図５には、タグＴ１〜Ｔ０に格納するデータとペイロードＤ６３〜００に格納するデータの一例を記載した。例えば、タグＴ０〜Ｔ１が「００」である場合には、各種Ｋキャラクタの代わりとなるパケットが発行される。
【００６３】
例えば、ペイロードＤ６３〜００のすべてに「０」が格納されている場合、すなわちＡＬＬ０であるパケットは、ＰＡＤと呼ばれるパケットである。ＰＡＤは、図３３に示すＫキャラクタのＰＡＤの代わりに使用されるパケットであり、Ｌｏｇｉｃａｌ  ＩＤＬＥ時に使用するパケットであり、データリンク層として発行するべきデータが存在しないことを示す。
【００６４】
また、ペイロードＤ６３が「０」であり、Ｄ６２が「１」である場合には、Ｄ６１〜Ｄ００に６２ビットのペイロードが格納されたＤＬＬＰと呼ばれるパケットである。ＤＬＬＰは、図３３に示すＫキャラクタのＳＤＰの代わりに使用されるパケットであり、データリンク層パケットの発行を示すパケットである。なお、ＤＬＬＰのペイロードは、必ず６２ビットのサイズとなる。
【００６５】
また、ペイロードＤ６３が「１」であり、Ｄ６２が「０」である場合は、Ｄ６１〜Ｄ００に６２ビットのペイロードが格納されたＳＴＰと呼ばれるパケットである。ＳＴＰは、図３３に示すＫキャラクタのＳＴＰの代わりに使用されるパケットであり、トランザクションレイヤパケットの開始を示すパケットである。なお、ＳＴＰのペイロードには必ずヘッダ部が含まれ、パケットが連続して送信される事を示す。
【００６６】
一方、タグＴ１〜Ｔ０が「０１」である場合には、以下のデータとなる。例えば、ペイロードＤ６３が「０」であり、Ｄ６２が「０」である場合は、Ｄ６１〜Ｄ００に６２ビットのペイロードが格納されたＭＫＵＥと呼ばれるパケットである、ＭＫＵＥは、ペイロードＤ１〜００に格納されたパケットがＭａｒｋｅｄ−ＵＥデータであることを示す。なお、ＭＫＵＥのペイロードの特定位置には、Ｕｎｃｏｒｒｅｃｔａｂｌｅ  Ｅｒｒｏｒを検出したユニット番号が挿入され、また、パケットが連続して送信されることを示す。
【００６７】
一方、ペイロードＤ６３が「０」であり、Ｄ６２が「１」である場合には、Ｄ６１〜Ｄ００に６２ビットのペイロードが格納されたＭＫＵＥＥと呼ばれるパケットである。ＭＫＵＥＥは、ＭＫＵＥと同様の情報が格納されたパケットであるが、以降のパケットが存在せず、同様の情報が格納されたパケット（ＭＫＵＥ）の送信が正常終了することを示す。
【００６８】
また、ペイロードＤ６３が「１」であり、Ｄ６２が「１」であるパケットは、Ｄ６１〜Ｄ００に無効データ（ＡＬＬ０）が格納されたＥＤＢと呼ばれるパケットである。ＥＤＢは、図３３に示すＫキャラクタのＥＤＢの代わりに使用されるパケットであり、トランザクションレイヤパケット（ＴＬＰ）の異常終了を示すパケットである。
【００６９】
また、タグＴ１〜Ｔ０に「１０」が格納されたパケットは、Ｄ６３〜Ｄ００に６４ビットのペイロードを有するＤＡＴＡと呼ばれるパケットである。ＤＡＴＡは、プロトコル層パケット（ＰＬＰ：Protocol  Layer  Packet）において２番目以降に送信される８バイトのデータパケット、またはＣＭＤ（コマンド）であり、以降に同様のパケットが連続することを示す。なお、ＤＡＴＡ内に何バイトのデータが含まれているかを示す情報は、パケットヘッダに格納される。
【００７０】
また、タグＴ１〜Ｔ０に「１１」が格納されたパケットは、Ｄ６３〜Ｄ００に６４ビットのペイロードを有するＥＮＤと呼ばれるパケットである。ＥＮＤは、プロトコル層パケットにおいて２番目以降に送信される８バイトのデータパケット、またはＣＭＤ（コマンド）であり、同様の情報が格納されたパケットの送信が正常終了することを示す。
【００７１】
なお、図５に示す例では、ペイロードＤ６３が「１」であり、Ｄ６２が「１」であるパケットは、使用されず、予備のパケットとして設定されている。また、図５に示す例では、ペイロードＤ６３が「１」であり、Ｄ６２が「０」であるパケットは、使用されず、予備のパケットとして設定される。
【００７２】
図３に戻って、物理層機能部３５は、初期化ステートマシン機能、レーン構成制御機能、バイト順序生成機能、バイト順序再生機能、スクランブル化機能、デスクランブル機能、コード変換器能、Ｋキャラクタ生成機能を有する。また、物理層機能部３５は、エラスティックバッファ、クロック生成機能、クロック再生機能、並列直列変換器能、直列並列変換機能、差動伝送路の送信回路、イコライザ等を含む作動伝送路の受信回路等を有する。
【００７３】
以下、図６を用いて、物理層機能部３５が有する機能について説明する。図６は、実施例１に係る物理層機能部の機能構成を説明するための図である。図６に示す例では、物理層機能部３５の物理層論理サブブロック３６は、バイトストライピング回路３８、レーン＃０〜＃７送信部３９〜３９ｂ、レーン＃０〜＃７受信部４６〜４６ｂ、バイトアンストライピング回路５１を有する。
【００７４】
また、物理層論理サブブロック３６は、ＬＴＳＳＭ（Link  Training  and  Status  State  Machine）５２、ＤＶ／ＲＶ（Driver/Receiver）制御部５３、オーダーセット生成部５４、オーダーセット判定部５６を有する。また、物理層論理サブブロック３６は、送信タイミング生成回路５７、ストライピングタイミング生成回路５８、受信タイミング生成回路５９、アンストライピングタイミング生成回路６０を有する。
【００７５】
また、レーン＃０の送信部３９は、スクランブラ４０、セレクタ４１、１９Ｂ２０Ｂエンコーダ４２、シリアライザ４３を有する。また、レーン＃０受信部４６は、シンボルロックデシリアライザ４７、エラスティックバッファ４８、１９Ｂ２０Ｂデコーダ４９、デスクランブラ５０、オーダーセット検出部５５を有する。
【００７６】
なお、レーン＃１〜レーン＃７の送信部３９ａ〜３９ｂについては、レーン＃０の送信部３９と同様の機能を発揮するものとして、説明を省略する。また、レーン＃１〜レーン＃７の受信部４６ａ〜４６ｂについては、レーン＃０の受信部４６と同様の機能を発揮するものとして、説明を省略する。
【００７７】
また、物理層電気サブブロック３７は、複数のレーン＃０〜＃７のドライバ４４〜４４ｂ、複数のレーン＃０〜＃７のレシーバ４５〜４５ｂを有する。なお、レーン＃０〜＃７は、差動伝送路である。また、各ドライバ４４〜４４ｂが差動伝送路である各レーン＃０〜＃７にシリアル信号を出力し、各ドライバ４４〜４４ｂが差動伝送路からシリアル信号を受信することで、シリアル伝送を行う。例えば、ドライバ４４がレーン＃０の差動伝送路７０、７０ａにシリアル信号を出力し、レシーバ４５がレーン＃０の差動伝送路７１、７１ａからシリアル信号を受信することで、シリアル伝送を行う。
【００７８】
なお、レーン＃１〜＃７のドライバ４４ａ〜４４ｂは、レーン＃０のドライバ４４と同様の機能を発揮するものとして、説明を省略する。また、レーン＃１〜＃７のレシーバ４５ａ〜４５ｂは、レーン＃０のレシーバ４５と同様の機能を発揮するものとして、説明を省略する。また、以下の説明では、データ送信側の機能について説明した後に、データ受信側の機能について説明する。
【００７９】
まず、データ送信側の機能について説明する。バイトストライピング回路３８は、ストライピングタイミング生成回路５８から受信するストライピングタイミング信号に従って、データリンク層機能部３４から受信したパケットのデータを、レーン＃０〜＃７に振り分ける。例えば、バイトストライピング回路３８は、レーン＃０〜＃３に９ビットのデータを振り分け、レーン＃４〜＃７に１０ビットのデータを振り分ける。
【００８０】
スクランブラ４０は、バイトストライピング回路３８がレーン＃０に振り分けたデータの擬似乱数化を行う回路である。すなわち、スクランブラ４０は、送信するデータを擬似乱数化することによって、回路内の電磁波ノイズを低減する。セレクタ４１は、スクランブラ４０が擬似乱数化したデータ、または後述するオーダーセット生成部５４が生成したＫキャラクタを１９Ｂ２０Ｂエンコーダ４２に出力する選択回路である。
【００８１】
１９Ｂ２０Ｂエンコーダ４２は、セレクタ４１から取得したデータをコード化する。具体的には、１９Ｂ２０Ｂエンコーダ４２は、セレクタ４１からデータを受信するとともに、受信したデータがＤキャラクタであるかＫキャラクタであるかを示す信号をオーダーセット生成部５４から受信する。さらに、１９Ｂ２０Ｂエンコーダ４２は、送信タイミング生成回路５７より、第１のシンボルと、第２のシンボルのシンボルのいずれかを出力するかを識別する送信シンボルサイクル識別信号を受信する。
【００８２】
そして、１９Ｂ２０Ｂエンコーダ４２は、受信した信号に応じて、以下の処理を実行する。すなわち、１９Ｂ２０Ｂエンコーダ４２は、第１のシンボルと第２のシンボルを識別する信号が、第１のシンボルを指定していて、データがＤキャラクタである信号を受信した場合には、９ビットのデータをセレクタ４１から受け取る。そして、９ビットのデータに１ビットの制御ビットを付加した第１のシンボルを生成する。または、第１のシンボルと第２のシンボルを識別する信号が、第２のシンボルを指定している場合には、１９Ｂ２０Ｂエンコーダ４２は、１０ビットのデータをセレクタ４１から受け取る。そして、１０ビットのデータをそのまま第２のシンボルとする。そして、１９Ｂ２０Ｂエンコーダ４２は、生成した第１のシンボル、または第２のシンボルをシリアライザ４３に出力する。
【００８３】
一方、１９Ｂ２０Ｂエンコーダ４２は、第１のシンボルと第２のシンボルを識別する信号が、第１のシンボルを指定していて、データがＫキャラクタである信号を受信した場合には、Ｋキャラクタに１ビットの制御データと、さらに制御データと同じ値の先頭ビットを付加した第１のシンボルを生成する。すなわち、第１のシンボルとは、制御ビットが付加されたＤキャラクタ、または制御ビットが付加されたＫキャラクタである。そして、１０Ｂ２０Ｂエンコーダ４２は、生成した第１のシンボルをシリアライザ４３に出力する。
【００８４】
ここで、１９Ｂ２０Ｂエンコーダ４２は、Ｄキャラクタを含む第１のシンボルを生成する場合には、Ｄキャラクタの先頭ビットとは異なる値の制御ビットを付加する。このため、１９Ｂ２０Ｂエンコーダ４２は、Ｄキャラクタを含む第１のシンボルに、少なくとも１回のビット遷移を含める。
【００８５】
例えば、図７は、実施例１に係る１９Ｂ２０Ｂ変換を説明するための図である。なお、図７には、１９Ｂ２０Ｂエンコーダ４２が実行する１９Ｂ２０Ｂ変換の原理について記載した。例えば、１９Ｂ２０Ｂエンコーダ４２は、セレクタ４１からＤキャラクタ、またはＫキャラクタを受信する。また、１９Ｂ２０Ｂエンコーダ４２は、オーダーセット生成部５４から、データがＫキャラクタであるかＤキャラクタであるかを示すＫ／Ｄ識別信号を受信する。
【００８６】
そして、１９Ｂ２０Ｂエンコーダ４２は、１９ビットのデータを９ビットのデータ、すなわち、Ｄキャラクタと１０ビットのデータとに分割し、１０ビットのデータを第２のシンボルとしてそのまま出力する。また、１９Ｂ２０Ｂエンコーダ４２は、８ビットのＫキャラクタと９ビットのＤキャラクタをＫ／Ｄ判別信号に応じて選択する。
【００８７】
また、１９Ｂ２０Ｂエンコーダ４２は、Ｋ／Ｄ識別信号と、９ビットデータの先頭ビット（図７中ａ）であるＤキャラクタの先頭ビットとをデコードし、制御ビット（図７中Ｃ）とＤキャラクタの先頭ビットとを生成する。具体的には、１９Ｂ２０Ｂエンコーダ４２は、Ｋ／Ｄ識別番号がＤキャラクタを示す場合には、９ビットデータの先頭ビットａの反転ビットを制御ビットとし、先頭ビットａを制御ビットに続くビット０とする。そして、１９Ｂ２０Ｂエンコーダ４２は、９ビットデータのビットｂ〜ｉをビット１〜８とする１０ビットのデータを生成する。また、１９Ｂ２０Ｂエンコーダ４２は、１９ビットデータのうち、１０ビットのデータをそのままビット０〜９とする１０ビットのデータを生成する。
【００８８】
また、１９Ｂ２０Ｂエンコーダ４２は、Ｋ／Ｄ識別信号がＫキャラクタを示す場合には、２０ビットアウトプットの制御ビットと続くビット０とを同じビット値とする。そして、１９Ｂ２０Ｂエンコーダ４２は、ビット１〜８にＫキャラクタを格納した１０ビットのデータを生成する。
【００８９】
そして、１９Ｂ２０Ｂエンコーダ４２は、Ｄキャラクタに１ビットの制御ビットを付加した１０ビットのデータ、またはＫキャラクタに１ビットの制御ビットと１ビットの先頭ビットとを付加した１０ビットのデータを第１のシンボルとして出力する。すなわち、１９Ｂ２０Ｂエンコーダ４２は、１ビットの制御ビットを含む１０ビットのデータを第１のシンボルとして出力する。
【００９０】
ここで、図８を用いて、第１のシンボルの先頭２ビットと、続く８ビットのデータとの関係について説明する。なお、以下の説明では、第１のシンボルの先頭２ビットを１０ビットシンボルコードとして説明する。図８は、実施例１に係る１０ビットシンボルコードを説明するための図である。例えば、１９Ｂ２０Ｂエンコーダ４２は、Ｄキャラクタを第１のシンボルとして出力する場合には、Ｄキャラクタの先頭ビットの値を反転させた値のコントロールビットを付加する。
【００９１】
すなわち、１９Ｂ２０Ｂエンコーダ４２は、Ｄキャラクタの先頭ビットが０である場合は、コントロールビットとして「１」を付加する。また、１９Ｂ２０Ｂエンコーダ４２は、Ｄキャラクタの先頭ビットが１である場合は、コントロールビットとして「０」を付加する。また、１９Ｂ２０Ｂエンコーダ４２は、Ｋキャラクタを第１のシンボルとして出力する場合は、コントロールビット「１」と先頭ビット「１」を付加する。
【００９２】
なお、Ｋキャラクタには、ＤＣバランスを考慮して、１種類を除いて、「０」と「１」が５個ずつで構成される値が選択される。また、第１のシンボルの１０ビットのうち、コントロールビットと先頭ビットとを除いた８ビットがＫキャラクタを示すビットとなるので、最大で５６種類のＫキャラクタを表現する。なお、コントロールビットが「０」で先頭ビットが「０」である場合には、ＡＬＬ０等の場合を除き、インバリッド（無効）シンボルとなる。
【００９３】
ここで、図９は、実施例１に係るＫキャラクタのビットコードを説明するための図である。１９Ｂ２０Ｂエンコーダ４２は、Ｋキャラクタである「ＣＯＭ」を含む第１のシンボルとしてビットコード「１１＿００１１＿００１０」を出力する。ここで、「ＣＯＭ」とは、スキップオーダーセット（ＳＫＰＯＳ）や、ＥＩＯＳ（Electrical  Idle  Ordered  State）の開始を示すシンボルである。
【００９４】
また、１９Ｂ２０Ｂエンコーダ４２は、Ｋキャラクタである「ＬＯＮＧ１」を示す第１のシンボルとして、ビットコード「１１＿１１１１＿１１１１」を出力する。ここで、「ＬＯＮＧ１」とは、トレーニングオーダーセット（TSOS:Training  Ordered  Set）やＥＩＥＯＳ（Electrical  Idle  Exit  Ordered  Set）の開始を示すシンボルである。
【００９５】
また、１９Ｂ２０Ｂエンコーダ４２は、Ｋキャラクタである「ＬＯＮＧ０」を示す第１のシンボルとして、ビットコード「００＿００００＿００００」を出力する。ここで、「ＬＯＮＧ０」とは、トレーニングシーケンスで使用する「ＬＯＮＧ１」と組み合わせて低周波信号を生成するために用いるシンボルである。
【００９６】
また、１９Ｂ２０Ｂエンコーダ４２は、Ｋキャラクタである「ＳＫＰ」を示す第１のシンボルとして、ビットコード「１１＿０１０１＿０１００」を出力する。ここで、「ＳＫＰ」とは、「ＣＯＭ」に続くことでスキップオーダーセット（ＳＫＰ  ＯＳ）を表すスキュー調整で増減対象となるシンボルである。
【００９７】
また、１９Ｂ２０Ｂエンコーダ４２は、Ｋキャラクタである「ＩＤＬ」を示す第１のシンボルとして、ビットコード「１１＿１１００＿１０００」を出力する。ここで、「ＩＤＬ」とは、「ＣＯＭ」に続くことでＥＩ  ＯＳを表すシンボルである。なお、図９に例示した以外のコードは、無効なコードとなる。
【００９８】
このように、１９Ｂ２０Ｂエンコーダ４２は、Ｄキャラクタと制御ビット、もしくはＫキャラクタと制御ビットを含む１０ビットの第１のシンボル、および、１０ビットのＤキャラクタを含む第２のシンボルを生成する。なお、１９Ｂ２０Ｂエンコーダ４２は、第１のシンボルと第２のシンボルとを同時に出力するのではなく、第１のシンボルと第２のシンボルとを所定の周期で切り換えながら生成する。例えば、１９ｂ２０Ｂエンコーダ４２は、第１のシンボルと第２のシンボルとを交互に生成する。
【００９９】
次に、図１０を用いて、１９Ｂ２０Ｂエンコーダ４２の具体例について説明する。図１０は、１９Ｂ２０Ｂエンコーダの具体例を説明するための図である。図１０に示すように、１９Ｂ２０Ｂエンコーダ４２は、オーダーセット生成部５４から、Ｋ／Ｄ識別信号を受信し、送信タイミング生成回路５７から送信シンボルサイクル識別信号を受信する。また、１８Ｂ２０Ｂエンコーダ４２は、セレクタ４１からａ〜ｊまでの１０ビットのデータを受信する。
【０１００】
ここで、送信シンボルサイクル識別信号とは、１９Ｂ２０Ｂエンコーダ４２に出力させるシンボルが第１のシンボルであるか、第２のシンボルであるかを示す信号である。また、他の側面では、送信シンボルサイクル識別信号は、各レーン＃０〜＃７が１つのシンボルを送信する際に要するシンボル時間ごとに切り替わる信号である。例えば、送信シンボルサイクル識別信号は、各レーン＃０〜＃７がＤキャラクタを格納した第１のシンボルを送信した回数が偶数であるか奇数であるかを示す。
【０１０１】
例えば、１９Ｂ２０Ｂエンコーダ４２は、送信シンボルサイクル識別信号が、第２のシンボルを送信する旨を指示する場合には、受信したａ〜ｊまでのビットをそのまま第２のシンボルとする。また、１９Ｂ２０Ｂエンコーダ４２は、送信シンボルサイクル識別信号が第１のシンボルを送信する旨を指示し、かつ、Ｋ／Ｄ識別信号がＤキャラクタを示す場合には、以下の処理を行う。すなわち、１９Ｂ２０Ｂエンコーダ４２は、受信したビットｂの反転値を第１のシンボルの先頭ビットとし、受信したビットｂ〜ｊをそのまま第１のシンボルに格納する。
【０１０２】
一方、１９Ｂ２０Ｂエンコーダ４２は、送信シンボルサイクル識別信号が第１のシンボルを送信する旨を指示し、Ｋ／Ｄ識別信号がＫキャラクタを示す場合には、以下の処理を行う。すなわち、１９Ｂ２０Ｂエンコーダ４２は、セレクタから供給されるＫキャラクタのコードをそのまま第１のシンボルとする。
【０１０３】
なお、後述するように、オーダーセット生成部５４は、Ｋキャラクタとして先頭の２ビットが「００」または「１１」となるＫキャラクタを生成する。このため、１９Ｂ２０Ｂエンコーダ４２は、Ｄキャラクタの先頭にＤキャラクタの先頭ビットを反転させた制御ビットを付加した第１のシンボル、またはＫキャラクタの先頭にＫキャラクタの先頭ビットと同じ制御ビットを付加した第１のシンボルを生成する。
【０１０４】
図１１は、実施例１に係る１９Ｂ２０Ｂエンコーダの動作を説明するための図である。図１１に示す例では、送信シンボルサイクル識別信号は、第２のシンボルを送信する旨を指示する場合には「１」となり、第１のシンボルを送信する旨を指示する場合には「０」となる。また、図１１に示す例では、Ｋ／Ｄ識別信号は、Ｄキャラクタを示す場合には「０」となり、Ｋキャラクタを示す場合には「１」となる。
【０１０５】
この結果、図１１に示す例では、１９Ｂ２０Ｂエンコーダ４２は、送信シンボルサイクル識別信号が「１」の場合には、シンボル中にセレクタ４１から受信したビットａ〜ｊを格納する。また、１９Ｂ２０Ｂエンコーダ４２は、送信シンボルサイクル識別信号が「０」であり、Ｋ／Ｄ識別信号が「０」の場合には、シンボルの先頭ビット０にセレクタ４１から受信したビットｂの反転ビット＾ｂを格納し、他のビット１〜９にビットｂ〜ｊを格納する。また、１９Ｂ２０Ｂエンコーダ４２は、送信シンボルサイクル識別信号が「０」であり、Ｋ／Ｄ識別信号が「１」の場合には、シンボル中の先頭の０〜１ビットに「００」または「１１」を格納し、他のビット２〜９にＫキャラクタのコード値を格納する。
【０１０６】
図６に戻って、シリアライザ４３は、１９Ｂ２０Ｂエンコーダ４２から１０ビットのパラレルデータとして第１のシンボル、または第２のシンボルを受信する。そして、シリアライザ４３は、受信した第１のシンボル、または第２のシンボルをシンボル時間ごとに、シリアルデータに変換し、変換後のシリアルデータをレーン＃０ドライバ４４に出力する。
【０１０７】
ここで、シンボル時間とは、１つのシンボルを送信するために必要な時間であり、詳細には、レーン＃０ドライバ４４が差動伝送路７０、７０ａを介して１０ビットのデータをシリアル伝送する際に要する時間である。レーン＃０ドライバ４４は、シリアライザ４３からシリアルデータを受信すると、受信したデータを差動伝送路７０、７０ａ、すなわち、レーン＃０に出力し、対向するＣＰＵ１０ａに送信する。
【０１０８】
ここで、後述する送信タイミング生成回路５７は、各レーン＃０〜＃７の送信部３９〜３９ｂに供給する送信シンボルサイクル識別信号を所定の周期で切り換える。また、送信タイミング生成回路５７は、少なくとも１つの送信部に対して、第１のシンボルを送信する旨を指示する送信シンボルサイクル識別信号を出力し、他の送信部に対して、第２のシンボルを送信する旨を指示する送信シンボルサイクル識別信号を出力する。
【０１０９】
このため、例えば、あるシンボル時間において、レーン＃０〜レーン＃３の送信部は、第１のシンボルを出力し、レーン＃４〜レーン＃７の送信部は、第２のシンボルを出力する。また、次のシンボル時間において、レーン＃０〜＃３の送信部は、第２のシンボルを出力し、レーン＃４〜＃７の送信部は、第１のシンボルを出力する。
【０１１０】
以下、図１２、図１３を用いて、各レーン＃０〜＃７に出力されるシンボルについて説明する。なお、以下の説明においては、第１のシンボルがレーン＃０〜＃３に出力されるシンボル時間を偶数サイクルとし、第１のシンボルがレーン＃４〜＃７に出力されるシンボル時間を奇数サイクルとする。
【０１１１】
図１２は、偶数サイクル時に各レーン＃０〜＃７に出力されるデータを説明するための図である。また、図１３は、奇数サイクル時に各レーン＃０〜＃７に出力されるデータを説明するための図である。なお、図１２および図１３に示す例では、バイトストライピング回路３８が図４に示すパケットを１バイトごとに各レーン＃０〜＃７に振り分けした際に、各送信部３９〜３９ｂが各レーン＃０〜＃７に出力するデータを記載した。すなわち、図１２および図１３中には、図４に示すパケットのＴ１〜Ｔ０、Ｄ６３〜Ｄ００、Ｃ９〜Ｃ０が、どのように各レーンに振り分けられるかを示した。
【０１１２】
図１２に示す例では、バイトストライピング回路３８は、Ｃｔｒｌ（コントロールビット）以外のＴ１〜Ｔ０、Ｄ６３〜Ｄ００、Ｃ９〜Ｃ０の先頭から９ビットずつを各レーン＃０〜＃３に振り分け、その後、１０ビットずつを各レーン＃４〜＃７に振り分ける。このため、各レーン＃０〜＃３の送信部は、１ビットのＣｔｒｌを９ビットのデータに付加した１０ビットのデータを第１のシンボルとする。また、各レーン＃４〜＃７の送信部は、１０ビットのデータをそのまま第２のシンボルとする。
【０１１３】
このため、各レーン＃０〜＃３は、９ビットのデータと、１ビットのコントロールビットとを含む第１のシンボルを送信し、各レーン＃４〜＃７は、１０ビットのデータを含む第２のシンボルを送信する。
【０１１４】
また、図１３に示す例では、バイトストライピング回路３８は、Ｃｔｒｌ以外のＴ１〜Ｔ０、Ｄ６３〜Ｄ００、Ｃ９〜Ｃ０の先頭から９ビットずつを各レーン＃７〜＃４に振り分け、その後、１０ビットずつを各レーン＃３〜＃０に振り分ける。すなわち、バイトストライピング回路３８は、各レーン＃０〜＃７に対し、偶数サイクル時と奇数サイクル時で逆の順番で振り分ける。このため、各レーン＃０〜＃３は、１０ビットのデータを含む第２のシンボルを送信することとなり、各レーン＃４〜＃７は、９ビットのデータと、１ビットのコントロールビットとを含む第１のシンボルを送信する。
【０１１５】
なお、各レーン＃０〜＃７のドライバ４４〜４４ｂは、図１２および図１３に示すデータを、ビット０から順にＣＰＵ１０ａへ送信する。例えば、レーン＃０ドライバ４４は、偶数サイクル時には、Ｃｔｒｌ、Ｄ５７〜Ｄ６３、Ｔ０、Ｔ１の順にデータを送信する。また、レーン＃０ドライバ４４は、奇数サイクル時には、Ｃ０〜Ｃ９の順にデータを送信する。
【０１１６】
このように、各送信部３９〜３９ｂは、各レーン＃０〜＃７を介して、図１２に示すビットおよび図１３に示すビットを交互に送信する。このため、対向するＣＰＵ１０ａは、各レーン＃０〜＃７を介して受信するデータのうち、２０ビットに１回は、必ず１回のビット遷移が含まれるため、クロックの再生を容易に行える。
【０１１７】
ここで、図１４は、実施例１に係る各レーン＃０〜＃７が第１のシンボルを出力する順序を説明するための図である。図１４に示すように、レーン＃０〜＃３は、第１グループに組み分けられ、レーン＃４〜＃７は、第２グループに組み分けられている。そして、偶数サイクルの際には、レーン＃０〜＃３が第１のシンボルを送信し、奇数サイクルの際には、レーン＃４〜＃７が第１のシンボルを送信する。
【０１１８】
ここで、第１のシンボルにＤキャラクタが格納される場合には、Ｄキャラクタの先頭ビットを反転させた制御ビットが付加されるため、第１のシンボル中には、ビット値の遷移が必ず存在する。このため、各レーン＃０〜＃７がＤキャラクタを送信する場合には、２０ビットに１回は、必ずビット値の遷移が含まれる。このため、各送信部３９〜３９ｂは、８Ｂ１０Ｂ変換を行わずとも、ＣＰＵ１０ａにクロックの再生を容易に実行させることができる。
【０１１９】
また、各送信部３９〜３９ｂは、１９ビットのデータを２０ビットに変換して送信することとなる。この結果、各送信部３９〜３９ｂは、伝送経路の帯域を浪費することなく、効率的にシリアル伝送を行うことができる。また、各送信部３９〜３９ｂは、第１のシンボル中に、任意のＫキャラクタを格納するので、シリアル伝送を行う際に実行する各種制御を行なえる。
【０１２０】
また、図１２および図１３に示すように、各送信部３９〜３９ｂは、少なくとも１つのレーンにおいて、１０ビットのＣＲＣを送信することとなる。ここで、各送信部３９〜３９ｂは、図１２および図１３に示すように、データリンク層機能部３４から受信した１つのパケットを同一のシンボル時間中に送信することとなる。
【０１２１】
ここで、各送信部３９〜３９ｂがいずれか１つのレーンを介して送信するＣＲＣには、同一のシンボル時間中に送信されるデータから１０ビットのデータを検出することができるＣＲＣである。また、各送信部３９〜３９ｂは、１回のシンボル時間中に最大で１０ビットのデータを出力する。この結果、いずれかのレーンにおいてバーストエラーが発生し、全てのビット化け、すなわち、１０ビットの連続するビット化けが発生したとしても、受信側のＣＰＵ１０ａは、同一のシンボル時間中に送信されたＣＲＣを用いてエラーの検出を行うことができる。
【０１２２】
次に、データ受信側の機能について説明する。レーン＃０のレシーバ４５は、対向するＣＰＵ１０ａから差動伝送路７１、７１ａを介してシリアルデータを受信する。すると、レーン＃０のレシーバ４５は、受信したデータをビットデータ列に変換する。また、レシーバ４５は、クロック再生回路を用いて、送信データのビット遷移タイミングを基準として受信クロックを生成する。また、レーン＃０のレシーバ４５は、変換後のビットデータ列と、クロック再生回路が再生したクロックとをシンボルロックデシリアライザ４７に出力する。
【０１２３】
ここで、レーン＃０のレシーバ４５は、ＣＰＵ１０ａから送信された第１のシンボルに含まれるビット遷移を用いて、クロックの生成を行う。また、上述したように、１９Ｂ２０Ｂエンコーダ４２は、Ｄキャラクタを含む第１のシンボルに、少なくとも１回のビット遷移を含める。このため、レーン＃０のレシーバ４５は、ＣＰＵ１０ａが１９Ｂ２０Ｂエンコーダ４２と同様のシンボルを生成した場合には、第１のシンボルに含まれる制御ビットを用いて、クロックの再生を適切に行うことができる。
【０１２４】
シンボルロックデシリアライザ４７は、レーン＃０のレシーバ４５から受信したビット列を１０ビットのパラレルデータに変換する。具体的には、シンボルロックデシリアライザ４７は、レーン＃０のレシーバ４５から受信するクロックに従って、初期化時に基準ビットを検出してシンボルをロックし、再度初期化が行われるまでの間、１シンボル時間毎に、１０ビットのシリアルデータを識別する。そして、シンボルロックデシリアライザ４７は、識別したシリアルデータをパラレルデータに変換し、エラスティックバッファ４８に変換後のパラレルデータを格納する。
【０１２５】
エラスティックバッファ４８は、内部クロックへの乗り換えを行うためのバッファである。例えば、シンボルロックデシリアライザ４７は、レーン＃０のレシーバ４５のクロック再生回路が再生するクロックでエラスティックバッファ４８にパラレルデータの書込みを行う。そして１９Ｂ２０Ｂデコーダ４９は、エラスティックバッファ４８から内部クロック、すなわち、受信タイミング生成回路５９が生成するタイミング信号でパラレルデータの読み出しを行うことで、クロックジッタを吸収する。
【０１２６】
詳細には、送信側のＣＰＵ１０ａは定期的に固定長のスキップオーダーセット（Skip  Ordered  Set：以下、ＳＫＰＯＳと記載する）を発行する。そして、受信側のＣＰＵ１０は、クロックタイミングを観測し、エラスティックバッファ４８から受信するＳＫＰＯＳの削除等を行うことで、クロックの同期調整を行う。
【０１２７】
１９Ｂ２０Ｂデコーダ４９は、エラスティックバッファ４８が記憶するパラレルデータの読み出しを行う。そして、１９Ｂ２０Ｂデコーダ４９は、１９Ｂ２０Ｂエンコーダ４２とは逆の処理を実行することによって、読み出したデータから元のデータにデコードし、デコードしたデータをデスクランブラ５０に出力する。
【０１２８】
ここで、図１５は、実施例１に係る１９Ｂ２０Ｂデコーダの具体例を説明するための図である。図１５に示すように、１９Ｂ２０Ｂデコーダ４９は、受信タイミング生成回路５９から、受信シンボルサイクル識別信号を受信する。ここで、受信シンボルサイクル識別信号とは、送信シンボルサイクル識別信号と同様の信号であり、１９Ｂ２０Ｂデコーダ４９がエラスティックバッファ４８から読み出す１０ビットのデータが第１のシンボルであるか第２のシンボルであるかを示す信号である。
【０１２９】
例えば、受信タイミング生成回路５９は、送信シンボルサイクル識別信号として「０」または「１」をトレーニングシーケンスの終了を起点とし、所定の周期で切り換えながら出力する。ここで、送信シンボルサイクル識別信号「１」は、受信するデータが第２のシンボルであることを示し、送信シンボルサイクル識別信号「０」は、受信するデータが第１のシンボルであることを示す。
【０１３０】
詳細な例を挙げると、受信タイミング生成回路５９は、トレーニングシーケンスの終了後に最初に送信されるデータが第２のシンボルである場合には、送信シンボルサイクル識別信号として「１」を出力する。また、受信タイミング生成回路５９は、トレーニングシーケンスの終了後に最初に送信されるデータが第１のシンボルである場合には、送信シンボルサイクル識別信号として「０」を出力する。
【０１３１】
そして、例えば、ＣＰＵ１０ａが、トレーニングシーケンスの終了後にレーン＃０を介して第１のシンボルと第２のシンボルとを交互に送信する場合には、受信タイミング生成回路５９は、受信シンボルサイクル識別信号「０」と「１」とを交互に１９Ｂ２０Ｂデコーダ４９に入力する。また、受信タイミング生成回路５９は、送信タイミング生成回路５７と同様に、各受信回路４６〜４６ｂに対して、各レーン＃０〜＃７を介して送信されるシンボルを示す信号を出力する。
【０１３２】
例えば、受信タイミング生成回路５９は、レーン＃０〜＃３が第１のシンボルを受信し、レーン＃４〜＃７が第２のシンボルを受信するシンボル時間においては、以下の受信シンボルサイクル識別信号を出力する。すなわち、受信タイミング生成回路５９は、レーン＃０〜＃３の受信部に受信シンボルサイクル識別信号「０」を出力し、レーン＃４〜＃７の受信部に受信シンボルサイクル識別信号「１」を出力する。
【０１３３】
１９Ｂ２０Ｂデコーダ４９は、受信シンボルサイクル識別信号が「１」であるか「０」であるかを判別し、受信シンボルサイクル識別信号が「１」である場合には、以下の処理を実行する。すなわち、１９Ｂ２０Ｂデコーダ４９は、エラスティックバッファ４８から受信した１０ビットのデータａ〜ｊに対してビットマスクをかけることなく、そのまま１０ビットのデータとしてデスクランブラ５０に出力する。
【０１３４】
一方、１９Ｂ２０Ｂデコーダ４９は、受信シンボルサイクル識別信号の値が「０」である場合は、読み出したデータのビットａ〜ｊのうち、ビットａ、ｂをデコードすることで、データがＤキャラクタであるかＫキャラクタであるかを判別する。詳細には、１９Ｂ２０ｂデコーダ４９は、ビットａ、ｂが「０１」若しくは「１０」である場合には、読み出したデータがＤキャラクタであると判別する。そして、１９Ｂ２０Ｂデコーダ４９は、ビットマスクを用いて、ビットｂ〜ｊをそのままビット１〜９として出力し、ビット１の値を「０」としてデスクランブラ５０に出力する。
【０１３５】
また、１９Ｂ２０Ｂデコーダ４９は、ビットａ、ｂが「００」または「１１」である場合には、読み出したデータがＫキャラクタであると判別する。そして、１９Ｂ２０Ｂデコーダ４９は、Ｋ／Ｄ識別信号として「１」をオーダーセット検出部５５に出力し、ビットａ〜ｊをそのままＫキャラクタとしてデスクランブラ５０に出力する。また、１９Ｂ２０Ｂデコーダ４９は、読み出したデータがＫキャラクタである場合には、ビットａ〜ｊからエラーパターンのチェックを行い、ビットａ〜ｊが無効コードである場合には、エラー信号として「１」をオーダーセット検出部５５に出力する。
【０１３６】
ここで、図１６は、実施例１に係る１９Ｂ２０Ｂデコーダの動作を説明するための図である。図１６には、１９Ｂ２０Ｂデコーダ４９が受信シンボルサイクル識別信号と読み出したビットａ、ｂの値に応じて、どのようなデータを出力するかを示した。例えば、１９Ｂ２０Ｂデコーダ４９は、受信シンボルサイクル識別信号が「１」である場合には、ビットａ〜ｊを出力データ０〜９として出力する。
【０１３７】
また、１９Ｂ２０Ｂデコーダ４９は、受信シンボルサイクル識別信号が「０」であり、ビットａ、ｂが「０１」または「１０」である場合には、ビットｃ〜ｊがＤキャラクタであると判別する。このため、１９Ｂ２０Ｂデコーダ４９は、先頭のデータ０を「０」とし、ビットｂ〜ｊをデータ１〜９としたデータを出力する。
【０１３８】
また、１９Ｂ２０Ｂデコーダ４９は、受信シンボルサイクル識別信号が「０」であり、ビットａ、ｂが「００」または「１１」である場合には、ビットｃ〜ｊがＫキャラクタであると判別する。このため、１９Ｂ２０Ｂデコーダ４９は、ビットａ〜ｊが無効コードでない場合には、Ｋ／Ｄ識別信号「１」を出力し、エラー信号「０」を出力する。また、１９Ｂ２０Ｂデコーダ４９は、ビットａ〜ｊ、すなわちＫキャラクタを出力データ０〜９として出力する。一方、１９Ｂ２０Ｂデコーダ４９は、ビットａ〜ｊが無効コードである場合には、Ｋ／Ｄ識別信号「０」を出力し、エラー信号「１」を出力する。
【０１３９】
図６に戻って、デスクランブラ５０は、１９Ｂ２０Ｂデコーダ４９からデータを受信すると、スクランブラ４０と逆の処理を実行することで、擬似乱数化されたデータを元のデータに変換する。そして、デスクランブラ５０は、変換後の元のデータをバイトアンストライピング回路５１に出力する。なお、スクランブラ４０とデスクランブラ５０とはＰＣＩｅの仕様として開示された技術をそのまま利用することができる。
【０１４０】
バイトアンストライピング回路５１は、アンストライピングタイミング生成回路６０からのアンストライピングタイミング信号に従って、バイトストライピング回路３８と逆の処理を行う。すなわち、バイトアンストライピング回路５１は、各レーン＃０受信部４６〜レーン＃７受信部４６ｂが受信したデータの並び替えを行う。そして、バイトアンストライピング回路５１は、並び替えを行ったデータをデータリンク層機能部３４に出力する。
【０１４１】
例えば、バイトアンストライピング回路５１は、バイトストライピング回路３８が図１２、図１３に示した振り分けとは逆の処理を実行する。すなわち、バイトアンストライピング回路５１は、偶数サイクル時には、レーン＃０〜＃３から９ビットずつのデータを取得し、その後、レーン＃４〜＃７から１０ビットずつのデータを取得して、データの組み立てを行う。また、バイトアンストライピング回路５１は、奇数サイクル時には、レーン＃７〜＃４から９ビットずつのデータを取得し、その後、レーン＃３〜＃０から１０ビットずつのデータを取得して、データの組み立てを行う。
【０１４２】
続いて、Ｋキャラクタを生成するための機能について説明する。ＬＴＳＳＭ５２は、各レーン＃０〜＃７の初期化やリンクの構成制御を行うためのステートマシンである。例えば、ＬＴＳＳＭ５２は、データリンク装置機能部３４からの指示に応じて、リンクの初期化指示待ちのステートや、リンクの初期化、再トレーニングの実行、省電力モード等のステートに遷移する。
【０１４３】
そして、ＬＴＳＳＭ５２は、遷移したステートに応じた指示を、ストライピングタイミング生成回路５８、オーダーセット生成部５４に出力する。また、ＬＴＳＳＭ５２は、遷移したステートに応じた指示を、送信タイミング生成回路５７、オーダーセット判定部５６、受信タイミング生成回路５９、アンストライピングタイミング生成回路６０に出力する。
【０１４４】
図１７は、実施例１に係るＬＴＳＳＭの状態遷移を説明するための図である。ＬＴＳＳＭ５２は、リセット解除後にＰＯＲＴＤＩＳステートに遷移し、その後、データリンク制御機能部３４からの指示に応じて、図１７に示す各ステートに遷移する。
【０１４５】
ここで、図１８を用いて、図１７に示す各ステートの状態について説明する。図１８は、ＬＴＳＳＭの各状態を説明するための図である。ＰＯＲＴＤＩＳステートとは、リンク初期化指示待ちステートであり、ＬＴＳＳＭ５２は、電源投入直後、またはリセット信号が解除された際にＰＯＲＴＤＩＳステートに遷移する。また、ＬＴＳＳＭ５２は、ＰＯＲＴＤＩＳステートの際に、物理層機能部３５の外部からの指示によって、ＰＯＬＬステートに遷移する。
【０１４６】
ＰＯＬＬステートとは、接続先ポートとトレーニングオーダーセット（ＴＳ  ＯＳ）を送受信し、通信可能かを確認するステートである。また、ＬＴＳＳＭ５２は、ＰＯＬＬステートの際に、接続先ポートと通信可能である場合は、ＣＯＮＦＩＧステートに遷移する。
【０１４７】
ＣＯＮＦＩＧステートとは、リンクの初期化時、または再トレーニングを行う際に接続先ポートとＴＳ  ＯＳを送受信を行い、リンクの構成を行うステートである。そして、ＬＴＳＳＭ５２は、ＣＯＮＦＩＧステートの際に、リンクの構成が終了した場合には、ＬＺ（Ｌ０、Ｌ０ｓ）ステートに遷移する。
【０１４８】
Ｌ０ステートとは、上位層であるデータリンク層のパケットを送受信可能なステートであり、データリンク層から受け取ったデータを差動伝送路に出力し、または差動伝送路から受信したデータをデータリンク層に出力する通常運転状態を示す。なお、Ｌ０ｓは省電力ステートである。
【０１４９】
また、ＲＥＣＯＶＥＲＹステートとは、再トレーニングを行うステートである。また、Ｌ１ステートとは、浅い省電力上体のステートであり、再トレーニングを行うことによりＬＴＳＳＭ５２は、Ｌ０ステートに遷移する。また、ＬＯＯＰＢＡＣＫステートとは、ループバックのテストを行うステートである。また、ＰｒｅＣｏｎｆｉｇｒｅステートとは、再トレーニング中にマルチビットリンクエラーが発生した場合に、再度、再トレーニングを行うステートである。
【０１５０】
図６に戻って、ＤＶ／ＲＶ制御部５３は、ＬＴＳＳＭ５２が示す状態に応じて、各レーン＃０〜＃７のドライバ４４〜４４ｂおよびレシーバ４５〜４５ｂの動作を制御する制御回路である。
【０１５１】
オーダーセット生成部５４は、対向するＣＰＵ１０ａに対して送信するオーダーセットを生成する。具体的には、オーダーセット生成部５４は、ＬＴＳＳＭ５２からの指示に従って、オーダーセットを生成し、生成したオーダーセットをセレクタ４１に出力する。また、オーダーセット生成部５４は、ＬＴＳＳＭ５２からの指示とは別に、所定の時間間隔で、スキップオーダーセット（ＳＫＰＯＳ）をセレクタ４１に出力する。
【０１５２】
以下、図面を用いて、オーダーセット生成部５４の機能構成について説明する。図１９は、実施例１に係るオーダーセット生成部の機能構成を説明するための図である。例えば、図１９に示す例では、オーダーセット生成部５４は、送信間隔生成回路５４ａ、送信ＯＳ（Ordered  Set）選択制御部５４ｂ、セレクタ５４ｃ、シンボルカウンタ部５４ｄを有する。また、オーダーセット生成部５４は、回数判別部５４ｅ、送信ＯＳ数カウンタ部５４ｆ、規定送信数判別部５４ｇ、ＯＳ送信完了フラグ５４ｈを有する。
【０１５３】
また、オーダーセット生成部５４は、オーダーセットである「ＴＳ１ＯＳ」、「ＴＳ２ＯＳ」、「ＥＩＥＯＳ」、「ＥＩＯＳ」、「ＳＫＰＯＳ」のパターンを記憶する。送信間隔生成回路５４ａは、所定の時間間隔で、送信ＯＳ選択制御部５４ｂに、ＯＳの送信を指示する。また、送信ＯＳ選択制御部５４ｂは、ＬＴＳＳＭ５２からＯＳの送信を指示された場合は、セレクタ５４ｃを制御し、送信を指示されたＯＳを出力させる。
【０１５４】
シンボルカウンタ部５４ｄは、各ＯＳごとに送信したシンボルの数をカウントする。また、回数判別部５４ｅは、シンボルカウンタ部５４ｄがカウントした各ＯＳのシンボル数が所定の値となった場合は、１セットのＯＳの出力が完了したと判別し、送信ＯＳ数カウンタ部５４ｆがＯＳごとにカウントする値を１インクリメントする。つまり、送信ＯＳ数カウンタ部５４ｆは、各ＯＳを送信したセット数をカウントする。
【０１５５】
ここで、リンクの初期化を行う場合は、複数セットのＯＳが送信される。そこで、規定送信数判別部５４ｇは、送信したＯＳのセット数が規定数に達した場合には、ＯＳ送信完了フラグ５４ｈをセットすることで、ＬＴＳＳＭ５２にＯＳの送信が完了した旨を通知する。
【０１５６】
なお、オーダーセット生成部５４は、セレクタ５４ｃが出力したオーダーセットを、オーダーセット有効信号と共に、全てのレーン＃０〜＃７の送信部３９〜３９ｂに送信する。なお、レーン＃０の送信部３９は、オーダーセット有効信号を受信した場合には、セレクタ４１によってオーダーセット生成部５４から受信したオーダーセットを選択し、オーダーセットを１９Ｂ２０Ｂエンコーダ４２に入力する。また、他のレーン＃１〜＃７の送信部３９ａ、３９ｂも、送信部３９と同様に、オーダーセットを１９Ｂ２０Ｂエンコーダ４２に入力する。
【０１５７】
図６に戻り、オーダーセット検出部５５は、レーン＃０の受信部４６が受信したオーダーセットの検出を行う。また、オーダーセット判定部５６は、各レーン＃０〜＃７の受信部４６〜４６ｂがオーダーセットを受信したか否かを判別する。
【０１５８】
以下、図２０を用いて、オーダーセット検出部５５およびオーダーセット判定部５６の機能構成について説明する。図２０は、実施例１に係るオーダーセット検出部の機能構成を説明するための図である。図２０に示す例では、オーダーセット検出部５５は、期待値算出部５５ａ、一致チェック部５５ｂ、シンボルカウンタ５６ｃ、ＯＳ長判定部５６ｄ、受信ＯＳ数カウンタ５６ｅを有する。また、オーダーセット検出部５５は、規定受信数判定部５６ｆ、ＯＳ受信完了フラグ５５ｇ、ＳＫＰＯＳ検出回路５５ｈを有する。また、オーダーセット判定部５６は、ＡＮＤマスク５６ａと、ＯＲマスク５６ｂを有する。
【０１５９】
例えば、オーダーセット検出部５５は、１９Ｂ２０Ｂデコーダ４９から、Ｋキャラクタを受信する。また、期待値算出部５５ａは、ＬＴＳＳＭ５２のステート毎に、受信が期待されるオーダーセットの指示、すなわち、受信が期待されるオーダーセットの期待値をＬＴＳＳＭ５２から受信する。そして、一致チェック部５５ｂは、期待値算出部５５ａが受信した期待値が、受信したオーダーセットと一致するか否かを判別する。そして、一致チェック部５５ｂは、期待値とオーダーセットが一致した場合は、シンボルカウンタ５６ｃの値をインクリメントする。
【０１６０】
また、ＯＳ長判定部５５ｄは、シンボルカウンタ５５ｃの値が所定の値に達したかを判別し、所定の値に達した場合には、１セットのＯＳを受信したものとして、受信ＯＳ数カウンタ５５ｅをインクリメントする。また、規定受信数判定部５５ｆは、受信ＯＳ数カウンタ５５ｅの値が所定の値に達した場合には、所定の数のオーダーセットを受信したと判別し、ＯＳ受信完了フラグ５５ｇをセットすることで、オーダーセットを受信した旨をオーダーセット判定部５６に通知する。
【０１６１】
また、オーダーセット判定部５６は、ＡＮＤマスク５６ａを用いて、各レーン＃０〜＃７の受信部４６〜４６ｂからのＯＳ受信完了フラグの論理和を算出する。そして、オーダーセット判定部５６は、全ての受信部４６〜４６ｂのＯＳ受信完了フラグが有効となった場合は、ＬＴＳＳＭ５２にオーダーセットの受信が完了した旨を通知する。
【０１６２】
一方、送信側からは、定期的にＳＫＰＯＳが送信される。このため、ＳＫＰＯＳ検出回路５５ｈは、一致チェック部５５ｂおよびＯＳ長判定部５５ｄによる判定結果から、ＳＫＰＯＳの受信を検出した場合には、ＳＫＰＯＳ検出信号をオーダーセット判定部５６に送信する。すると、オーダーセット判定部５６は、ＯＲマスク５６ｂを用いて、多数決判定を行う。
【０１６３】
詳細には、オーダーセット判定部５６は、受信シンボルサイクル識別信号に従って、各レーン＃０〜＃７のうち、Ｋキャラクタを受信するレーン、すなわち、第１のシンボルを受信するレーンを判別し、判別したレーンの過半数からＳＫＰＯＳ検出信号を受信したかを判別する。そして、オーダーセット判定部５６は、判別したレーンの過半数からＳＫＰＯＳ検出信号を受信した場合には、ＳＫＰＯＳの検出をＬＴＳＳＭ５２に通知する。
【０１６４】
ここで、図２１は、実施例１に係る送信部が出力するデータのシーケンスを説明するための図である。例えば、物理層機能部３５の外部からリンクの初期化が指示された場合には、ＬＴＳＳＭ５２の状態が遷移し、トレーニングシーケンスが開始する。トレーニングシーケンス中は、図２１中（Ｇ）に示すように、全てのレーン＃０〜＃７で制御ビットを含むシンボル、すなわち、第１のシンボルが出力される。この際に、各送信部３９〜３９ｂは、出力したＫキャラクタによって、リンクの初期化処理に必要なオーダーセットを指定する。
【０１６５】
次に、トレーニングシーケンスが終了すると、ＬＴＳＳＭ５２は、Ｌ０ステートに遷移する。このため、図２１中（Ｈ）に示すように、各送信部３９〜３９ｂは、データリンク層から受信したデータの転送を開始する。すなわち、各送信部３９〜３９ｂは、通常運転を行う。すなわち、各送信部３９〜３９ｂは、通常運転時には、バイトストライピング処理によりデータリンク層から受信したデータを各レーン＃０〜＃７に分割する。
【０１６６】
そして、各送信部３９〜３９ｂは、１９Ｂ２０Ｂ変換を行い、変換後のデータをシリアル伝送する。ここで、各送信部３９〜３９ｂは、通常運転時には、第１のシンボルと第２のシンボルとを周期的に切り換えながら出力するとともに、少なくとも１つの送信部が第１のシンボルを送信する。また、図２１に示すように、各送信部３９〜３９ｂは、トレーニングシーケンスが終了し、次のシンボルを送信するシンボル時間を偶数サイクルとなるよう設定する。その後、各送信部３９〜３９ｂは、偶数サイクルと奇数サイクルとを１シンボル時間毎に切り換えて、処理を実行する。
【０１６７】
図２２は、実施例１に係るスキップオーダーセットを説明するための図である。例えば、図２２中（Ｉ）に示すように、各送信部３９〜３９ａは、定期的にＳＫＰＯＳとして、ＣＯＭシンボルと複数のＳＫＰシンボルとを示すＫキャラクタを送信する。
【０１６８】
ここで、図２２中（Ｊ）に示すタイミングは、本来は奇数サイクルとなるタイミングであるため、レーン＃４〜レーン＃７の受信部は、ＳＫＰＯＳのＫキャラクタ検出をオーダーセット判定部５６に通知する。このため、オーダーセット判定部５６は、レーン＃４〜＃７の過半数がＣＯＭシンボルのＫキャラクタを受信したか否かを判別し、過半数がＣＯＭシンボルのＫキャラクタを受信した場合には、オーダーセットが開始した旨をＬＴＳＳＭ５２に通知する。
【０１６９】
ここで、各受信部４６〜４６ｂは、ＳＫＰＯＳの送受信が行われる間は、通常運転時ではなく、データリンク層に送信されるデータを無効とする。そして、各受信部４６〜４６ｂは、ＳＫＰＯＳの所定のシンボル数を受信すると、状態を通常運転時に切り替えるとともに、図２２中（Ｋ）に示すように、シンボル時間を偶数サイクルから開始する。
【０１７０】
図６に戻り、送信タイミング生成回路５７は、ＬＴＳＳＭ５２およびオーダーセット生成部５４の出力に応じて、送信シンボルサイクル識別信号を生成し、各レーン＃０〜＃７の送信部３９〜３９ｂの１９Ｂ２０Ｂエンコーダに入力する。また、ストライピングタイミング生成回路５８は、ＬＴＳＳＭ５２およびオーダーセット生成部５４の出力に応じて、ストライピングタイミング信号を生成し、生成したストライピングタイミング信号をバイトストライピング回路３８に入力する。
【０１７１】
ここで、図２３を用いて、送信タイミング生成回路５７とストライピングタイミング生成回路５８の一例について説明する。図２３は、実施例１に係る送信タイミング生成回路を説明するための図である。なお、図２３は、送信タイミング生成回路５７の動作原理を示した図であるが、動作タイミングが論理的に同じになるのであれば、他の論理回路構成で実現してもよい。また、図２３は、送信タイミング生成回路５７の一例を示した図であるが、ストライピングタイミング生成回路５８についても、入力信号、出力信号は異なる回路と接続されるものの、同様の動作原理にて実現することができる。
【０１７２】
図２３に示す入力信号ＳＭＢＯＬ＿ＣＬＯＣＫとは、１シンボル時間の基準となるクロックであり、第１のシンボル、または第２のシンボルを受信、または送信する度にトグルされる信号である。ＡＣＴＩＶＥ＿Ｌ０＿ｉｎとは、ＬＴＳＳＭ５２で生成される信号であり、ＬＴＳＳＭ５２がＬ０ステート状態であることを示す信号である。また、ＡＣＴＩＶＥ＿ＳＫＰＯＳ＿ｉｎとは、オーダーセット生成部５４で生成される信号であり、ＳＫＰＯＳを送信中であることを示す信号である。
【０１７３】
図２３に示す例では、送信タイミング生成回路５７は、ＳＭＢＯＬ＿ＣＬＯＣＫ、ＡＣＴＩＶＥ＿Ｌ０＿ｉｎ、ＡＣＴＩＶＥ＿ＳＫＰＯＳ＿ｉｎの値に応じて、値「０」または値「１」の送信シンボルサイクル識別信号をレーン＃０〜＃３の送信部に出力する。また、送信タイミング生成回路５７は、レーン＃０〜＃３の送信部とは逆の値の送信シンボルサイクル識別信号を、レーン＃４〜＃７の送信部に出力する。
【０１７４】
例えば、送信タイミング生成回路５７は、トレーニングシーケンスが終了した次のシンボル時間で、レーン＃４〜＃７の送信部に送信シンボルサイクル識別信号「１」を出力し、その後、「０」および「１」を交互に出力する。また、送信タイミング生成回路５７は、トレーニングシーケンスが終了した次のシンボル時間で、レーン＃０〜＃３の送信部に送信シンボルサイクル識別信号「０」を出力し、その後、「１」および「０」を交互に出力する。
【０１７５】
ここで、図２４を用いて、図２３に示す送信タイミング生成回路５７の動作について説明する。図２４は、実施例１に係る送信タイミング生成回路の動作を説明するためのタイミングチャートである。なお、図２４中には、ＳＹＭＢＯＬ＿ＣＬＯＣＫ、ＬＴＳＳＭのステート、ＡＣＴＩＶＥ＿Ｌ０＿ｉｎ、ＡＣＴＩＶＥ＿ＳＫＰＯＳ＿ｉｎを記載した。
【０１７６】
また、図２４中には、中間信号ａ、中間信号＾ａ、中間信号ｂ、送信シンボルサイクルフラグ、各レーン＃０〜＃７に出力する送信シンボルサイクル識別信号、各レーン＃０〜＃７に出力されるデータを記載した。なお、図２４に示す各信号のうち、中間信号ａ、中間信号＾ａ、中間信号ｂとは、図２３中のａ、＾ａ、ｂに流れる信号を示す。
【０１７７】
例えば、図２４に示す例では、シンボル時間が「０」の際にＬＴＳＳＭ５２のステートが「ＰＯＲＴＤＩＳ」となる。このため、各送信部３９〜３９ｂは、トレーニングシーケンスを開始する。ここで、トレーニングシーケンスにおいては、シンボルサイクル識別信号は、全て「０」となり、レーン＃０〜＃７には、Ｄキャラクタ又はＫキャラクタのいずれかが選択されて出力される。
【０１７８】
ここで、シンボル時間ｍにおいてリンクの初期化が終了し、ＬＴＳＳＭ５２の状態がＣＯＮＦＩＧステートからＬ０ステートに遷移する。このため、ＡＣＴＩＶＥ＿Ｌ０＿ｉｎ信号が「１」に遷移し、送信シンボルサイクルフラグがトグルを開始し、送信シンボルサイクル識別信号が出力される。すなわち、各送信部３９〜３９ｂは、通常運転状態となる。
【０１７９】
ここで、シンボル時間ｎにおいて、定期的なＳＫＰＯＳが送信される。ここで、ＳＫＰＯＳは、ＬＴＳＳＭ５２のステートがＬ０ステートである最中に、定期的に出力される。このため、ＡＣＴＩＶＥ＿Ｌ０＿ｉｎ信号とＡＣＴＩＶＥ＿ＳＫＰＯＳ＿ｉｎ信号が同時に値「１」となる。この状態は、スキップ調整オーダーセットの出力状態であるため、通常運転とは異なる状態である。
【０１８０】
ここで、シンボル時間ｎにおいては、ＳＫＰＯＳの送信が指示されるため、送信シンボルサイクル識別信号は全て「０」に遷移し、各レーン＃０〜＃７には、ＳＫＰＯＳの最初のＫキャラクタである「ＣＯＭ」が出力される。その後、各レーン＃０〜＃７には、所定のサイクル数だけ「ＳＫＰ」キャラクタが出力される。
【０１８１】
その後、所定のサイクル数だけ「ＳＫＰ」キャラクタが出力されると、シンボル時間ｎ＋４において、通常運転状態に遷移し、シンボル時間ｍにおける際と同様に、偶数サイクルからシンボル時間が開始される。以降、各送信部３９〜３９ｂは、通常運転状態である限り、偶数サイクルと奇数サイクルとを切り替えながら、データのシリアル伝送を行う。
【０１８２】
図６に戻って、受信タイミング生成回路５９は、オーダーセット判定部５６およびＬＴＳＳＭ５２からの出力に応じて、各レーン＃０〜＃７の各受信部４６〜４６ｂがデータを受信するタイミングを示す受信シンボルサイクル識別信号を生成する。また、アンストライピングタイミング生成回路６０は、オーダーセット判定部５６およびＬＴＳＳＭ５２からの出力に応じて、アンストライピングタイミング信号を生成する。
【０１８３】
ここで、図２５を用いて、受信タイミング生成回路５９とアンストライピングタイミング生成回路６０の一例について説明する。図２５は、実施例１に係る受信タイミング生成回路を説明するための図である。なお、図２５は、受信タイミング生成回路５９の動作原理を示した図であるが、動作タイミングが論理的に同じになるのであれば、他の論理回路構成で実現してもよい。
【０１８４】
また、図２５は、受信タイミング生成回路５９の一例を示した図であるが、アンストライピングタイミング生成回路６０についても、入力信号、出力信号は異なる回路と接続されるものの、同様の動作原理にて実現することができる。
【０１８５】
なお、図２５に示すように、受信タイミング生成回路５９は、送信タイミング生成回路５７と同様の回路構成を有する。すなわち、受信タイミング生成回路５９は、ＡＣＴＩＶＥ＿ＳＫＰＯＳ＿ｉｎに変えてＤＥＴＥＣＴ＿ＳＫＰＯＳ＿ｉｎを受信する以外は、送信タイミング生成回路５７と同様の機能を有する。つまり、受信タイミング生成回路５９は、トレーニングシーケンスが終了した次のシンボル時間で、レーン＃４〜＃７の送信部に受信シンボルサイクル識別信号「１」を出力し、その後、「０」および「１」を交互に出力する。また、受信タイミング生成回路５９は、トレーニングシーケンスが終了した次のシンボル時間で、レーン＃０〜＃３の送信部に送信シンボルサイクル識別信号「０」を出力し、その後、「１」および「０」を交互に出力する。
【０１８６】
ここで、ＤＥＴＥＣＴ＿ＳＫＰＯＳ＿ｉｎとは、ＳＫＰＯＳを検出した際に、オーダーセット判定部５６が出力する信号である。また、アンストライピングタイミング生成回路６０も同様に、ストライピングタイミング生成回路５８と同様の回路構成を有し、同様の機能を有する。
【０１８７】
図２６は、実施例１に係る受信タイミング生成回路の動作を説明するためのタイミングチャートである。なお、図２６には、図２４に示した送信シンボルサイクルフラグ、送信シンボルサイクル識別信号に変えて、受信シンボルサイクルフラグ、受信シンボルサイクル識別信号を記載した。
【０１８８】
例えば、図２６に示す例では、シンボル時間が「０」の際にＬＴＳＳＭ５２のステートが「ＰＯＲＴＤＩＳ」となる。すると受信シンボルサイクル識別信号は、全て「０」となるため、各受信部４６〜４６ｂは、Ｄキャラクタ又はＫキャラクタのいずれかを受信する。
【０１８９】
ここで、シンボル時間ｍにおいてリンクの初期化が終了し、ＬＴＳＳＭ５２の状態がＣＯＮＦＩＧステートからＬ０ステートに遷移する。このため、ＡＣＴＩＶＥ＿Ｌ０＿ｉｎ信号が「１」に遷移し、受信シンボルサイクルフラグがトグルを開始し、受信シンボルサイクル識別信号が出力される。すなわち、各受信部４６〜４６ｂは、通常運転状態となり、各レーン＃０〜＃７から受信するデータをデータリンク層へ出力する。
【０１９０】
ここで、シンボル時間ｍにおいて、サイクル時間が偶数サイクルであるため、レーン＃０〜＃３の受信部は、９ビットのＤキャラクタ、またはＫキャラクタを受信し、レーン＃４〜＃７の受信部は、１０ビットのＤキャラクタを受信する。そして、シンボル時間ｍ＋１においては、受信シンボルサイクルフラグが反転し、奇数サイクルとなるため、レーン＃０〜＃３の受信部は、１０ビットのＤキャラクタを受信し、レーン＃４〜＃７の受信部は、９ビットのＤキャラクタ、またはＫキャラクタを受信する。
【０１９１】
ここで、シンボル時間ｎにおいて、各レーン＃０〜＃７の受信部４６〜４６ｂは、ＳＫＰＯＳの先頭キャラクタである「ＣＯＭ」シンボルを受信する。このため、ＡＣＴＩＶＥ＿Ｌ０＿ｉｎ信号とＤＥＴＥＣＴ＿ＳＫＰＯＳ＿ｉｎ信号が同時に値「１」となる。
【０１９２】
ここで、シンボル時間ｎにおいては、オーダーセット検出部５５は、ＳＫＰＯＳの受信を認識しておらず、シンボル時間ｎ＋１において、「ＣＯＭ」に続く「ＳＫＰ」シンボルを受信した際に、ＳＫＰＯの受信である旨を検知する。このため、シンボル時間ｎにおいては、奇数サイクルであるため、オーダーセット判定部５６は、レーン＃４〜＃７の受信部からの信号による多数決判定によりＣＯＭキャラクタである旨を判断する。
【０１９３】
その後、所定のサイクル数だけ「ＳＫＰ」キャラクタが出力されると、シンボル時間ｎ＋４において、通常運転状態に遷移し、シンボル時間ｍにおける際と同様に、偶数サイクルからシンボル時間が開始される。以降、各受信部４６〜４６ｂは、通常運転状態である限り、偶数サイクルと奇数サイクルとを切り替えながら、データを受信し、データリンク装置に出力する。
【０１９４】
例えば、シリアルインタフェースポート３０〜３２、トランザクション層機能部３３、データリンク層機能部３４、物理層機能部３５、物理層論理サブブロック３６、物理層電気サブブロック３７とは、電子回路である。また、バイトストライピング回路３８、送信部３９〜３９ｂ、スクランブラ４０、セレクタ４１、１９Ｂ２０Ｂエンコーダ４２、シリアライザ４３、ドライバ４４〜４４ｂとは、電子回路である。
【０１９５】
また、レシーバ４５〜４５ｂ、受信部４６〜４６ｂ、シンボルロックデシリアライザ４７、１９Ｂ２０Ｂデコーダ４９、デスクランブラ５０、バイトアンストライピング回路５１とは、電子回路である。また、ＬＴＳＳＭ５２、ＤＶ／ＲＶ制御部５３、オーダーセット生成部５４、オーダーセット検出部５５、オーダーセット判定部５６、送信タイミング生成回路５７、ストライピングタイミング生成回路５８とは、電子回路である。
【０１９６】
また、受信タイミング生成回路５９、アンストライピングタイミング生成回路６０とは、電子回路である。ここで、電子回路の例として、ＡＳＩＣ（Application  Specific  Integrated  Circuit）やＦＰＧＡ（Field  Programmable  Gate  Array）などの集積回路、またはＣＰＵ（Central  Processing  Unit）やＭＰＵ（Micro  Processing  Unit）などを適用する。また、エラスティックバッファ４８とは、ＲＡＭ（Random  Access  Memory）などの半導体メモリ素子である。
【０１９７】
［実施例１の効果］
上述したように、ＣＰＵ１０は、１ビットずつデータを伝送する複数のレーン＃０〜＃７を有する。また、ＣＰＵ１０は、９ビットのＤキャラクタ、またはＫキャラクタに１ビットの制御ビットを付加した１０ビットの第１のシンボル、または１０ビットのＤキャラクタである第２のシンボルを生成する複数の送信部３９〜３９ｂを有する。
【０１９８】
ここで、各送信部３９〜３９ｂは、第１のシンボルと第２のシンボルとを所定の周期で切り換えながら生成するとともに、各シンボル時間において、少なくとも１つの送信部が第１のシンボルを生成する。そして、ＣＰＵ１０は、各送信部３９〜３９ｂが生成した第１のシンボルおよび第２のシンボルを、それぞれ異なるレーン＃０〜＃７を介して、ＣＰＵ１０ａに送信する。
【０１９９】
このため、ＣＰＵ１０は、シリアル伝送の効率を向上させることができる。例えば、ＣＰＵ１０は、各シンボル時間において、９ビットのＤキャラクタ４つと、１０ビットのＤキャラクタ４つの計７６ビットのＤキャラクタを伝送することができる。このため、ＣＰＵ１０は、制御ビットを含め、各シンボル時間において８０ビットのデータを送信する結果、帯域を５パーセントほどしか浪費しない。
【０２００】
また、ＣＰＵ１０は、各レーン＃０〜＃７に対して、制御ビットを含む第１のシンボルを所定の周期で送信する。このため、ＣＰＵ１０は、２０ビット中に少なくとも１回のビット遷移が含まれるデータを各レーン＃０〜＃７に伝送し続ける。また、ＣＰＵ１０は、各シンボル時間において、Ｋキャラクタを含むことができる第１のシンボルを少なくとも１つ伝送する。
【０２０１】
このため、ＣＰＵ１０は、各レーン＃０〜＃７が適切にシリアル伝送を行うための機能を損なうことなく、シリアル伝送の効率を向上させることができる。すなわち、ＣＰＵ１０は、第１のシンボル中にＫキャラクタを格納することで、リンクの初期化動作や、送信側対受信側のクロックジッタの調整等を行うシリアル伝送の機能を発揮することができる。このため、ＣＰＵ１０は、シリアル伝送を行うための機能を損なうことなく、シリアル伝送の効率を向上させることができる。また、ＣＰＵ１０は、制御ビットを含む第１のシンボルを各レーン＃０〜＃７に対して所定の周期で出力するので、対向装置でのクロックの再生を容易にできる。
【０２０２】
また、ＣＰＵ１０は、第２のシンボルを送信するいずれかの送信部に、同じシンボル時間に送信するデータから、１０ビットのエラーを検出するためのＣＲＣを格納した第２のシンボルを生成させ、他のデータと同じシンボル時間内にＣＰＵ１０ａに送信する。このため、ＣＰＵ１０は、いずれか１つのレーンにおいて発生したバーストエラーの検出を保障することができる。以下、図２７、図２８を用いて、ＣＰＵ１０が、１つのレーンにおけるバーストエラーの検出を保障する点について説明する。
【０２０３】
図２７は、レーン＃２におけるバーストエラーを説明するための図である。例えば、図２７中の網掛けで示すように、レーン＃２を介して送信したビット全てにエラーが発生したものとする。この結果、ＣＰＵ１０ａは、図２７に示すデータのアンバイトストライピングを行い、データの組み立てを行うことで、図２８に示すデータをデータリンク層に出力することとなる。
【０２０４】
図２８は、バーストエラーが発生した際に受信するデータを説明するための図である。例えば、図２８中には、図２７中の網掛けで示したデータ、すなわち、エラーとなったデータを網掛けで示した。図２８に示すように、ＣＰＵ１０ａは、各シンボル時間毎に受信するデータのうち、１０ビットの連続する範囲にエラーのビットを含むパケットを受信することとなる。このため、ＣＰＵ１０ａは、おなじシンボル時間毎に受信する１０ビットのＣＲＣを用いて、エラーの検出を行うことができる。
【０２０５】
すなわち、ＣＰＵ１０は、各レーン＃１〜＃７を介して送信するシンボルと同じ長さのエラーを検出できるＣＲＣを生成し、生成したＣＲＣを他のシンボルと同じシンボル時間内に伝送した場合には、いずれか１つのレーンにおけるバーストエラーを必ず検出できる。このため、ＣＰＵ１０は、いずれか１つのレーンにおいて無限にバーストエラーが発生した場合にも、対向装置においてエラーを必ず検出することができる。
【０２０６】
なお、シリアル伝送において信号を受信する側にＤＦＥ（Decision  Feed  Back  Equalizer）技術を用いて信号品質を向上させる技術が知られている。しかし、ＤＦＥ技術においては、レシーバにおける過去の信号論理に基づいて現在の閾値を決定する原理で動作するため、一度エラーが発生した場合、長期にわたってエラーが連続する傾向がある。この結果、ＤＦＥ技術が適用されたレシーバでは、バーストエラーが発生する可能性が高い。
【０２０７】
しかし、ＣＰＵ１０は、いずれか１つのレーンにおいて無限にバーストエラーが発生するような場合にも、エラーを検出することができる。このため、対向装置にＤＦＥ技術が適用されている際にも、ＣＰＵ１０は、対向装置におけるエラーの検出を保障できる。
【０２０８】
また、各送信部３９〜３９ｂは、Ｄキャラクタを含む第１のシンボルを送信する場合には、Ｄキャラクタの先頭ビットの値を反転させた値の制御ビットをＤキャラクタに付加した第１のシンボルを生成する。このため、ＣＰＵ１０は、Ｄキャラクタを含む第１のシンボル内に、少なくとも１回のビット遷移を含める結果、対向装置のクロック再生を容易にすることができる。
【０２０９】
また、各送信部３９〜３９ｂは、Ｋキャラクタを送信する場合は、Ｋキャラクタの先頭ビットと同じ値の制御ビットを付加した第１のシンボルを生成する。このため、ＣＰＵ１０は、対向装置によるＫキャラクタの識別を容易にすることができる。また、ＣＰＵ１０は、あらかじめ設定するＫキャラクタ内に少なくとも１回のビット遷移を含めた場合には、対向装置のクロック再生をさらに容易にすることができる。
【０２１０】
また、各送信部３９〜３９ｂは、２つの組に組み分けられており、各組ごとに、第１のシンボルおよび第２のシンボルを切り替えながら生成する。このため、ＣＰＵ１０は、対向装置のクロック再生を容易にすることができる。また、ＣＰＵ１０は、第２のシンボルを生成するいずれかの送信部に、第１のシンボル、または第２のシンボルからエラーを検出するＣＲＣを第２のシンボルとして出力させるので、いずれか１つのレーンにおけるバーストエラーの検出を保障できる。
【実施例２】
【０２１１】
これまで実施例１について説明したが、本願は、上述した実施例以外にも様々な異なる形態にて実施されてよいものである。そこで、以下では実施例２として本願に含まれる他の実施例を説明する。
【０２１２】
（１）レーンの数について
上述したＣＰＵ１０は、８つのレーン＃０〜＃７を介して、データの送信を行った。しかし、実施例は、これに限定されるものではなく、ＣＰＵ１０は、複数であれば、任意の数のレーンを介してデータのシリアル伝送を行うことができる。
【０２１３】
すなわち、ＣＰＵ１０は、レーンの数に応じて、１つの第１のシンボル、または第２のシンボルの大きさと、ストライピングの際に各レーンに振り分けるデータのビット数とを適切に選択すればよい。例えば、ＣＰＵ１０は、１６本のレーンを介してデータを送信する場合には、５ビットのデータを１２本のレーンに振り分け、４ビットのデータを４本のレーンに振り分ければよい。また、ＣＰＵ１０は、５ビットのエラーを検出可能なＣＲＣを５ビットのデータを振り分けるレーンのいずれかに振り分ければよい。
【０２１４】
例えば、ＣＰＵ１０は、２つのレーンを有していてもよい。このような場合には、ＣＰＵ１０は、送信するデータのうち、所定のデータ長のデータに１ビットの制御ビットを付加した第１のシンボル、または、所定のデータ長より１ビット分長いデータである第２のシンボルを所定の順序で生成し、それぞれ異なる送経路でシンボルを送信する送信部３９、３０ａを有する。そして、ＣＰＵ１０は、送信部３９と送信部３９ａが第１のシンボルを送信するシンボル時間が重複しないようにずらす。この結果、ＣＰＵ１０は、シリアル伝送の効率を向上させることができる。
【０２１５】
（２）シンボル時間について
ＣＰＵ１０は、８本のレーンを介して、１シンボル時間ごとに、７６ビットのデータを送信した。しかし、実施例はこれに限定されるものではない。例えば、ＣＰＵ１０は、１つのシンボル時間ごとに、第２のシンボルを６本のレーンから伝送し、第１のシンボルを２本のレーンから伝送することで、７８ビットのデータを送信することとしてもよい。
【０２１６】
図２９は、データ出力のバリエーションを説明するための図である。図２９に示す例では、ＣＰＵ１０は、レーン＃０〜＃７を２本ずつ４つのグループに組み分けし、各組ごとに、第１のシンボルを交替で出力する。具体的には、ＣＰＵ１０は、シンボル時間を偶数サイクルと奇数サイクルでカウントするのではなく、Ａサイクル、Ｂサイクル、Ｃサイクル、Ｄサイクルと４つのサイクルでカウントする。
【０２１７】
そして、ＣＰＵ１０は、Ａサイクルの際は第１グループから、Ｂサイクルの際は第２グループから、Ｃサイクルの際は第３グループから、Ｄサイクルの際は第４グループから第１のシンボルを出力させる。このため、各レーン＃０〜＃７において、第１のシンボルは４サイクルおきに送信されることとなるが、ＣＰＵ１０ａが４０ビットに１回のビット遷移でクロックを再生できればよい。
【０２１８】
図３０は、各サイクル時に出力するデータの一例を説明するための図である。なお、図３０には、Ａサイクル〜Ｄサイクル時に、各レーン＃０〜＃７に送出されるデータの一例を示す。ＣＰＵ１０は、各サイクル時において、図３０に例示するように、データを各レーン＃０〜＃７にストライピングし、９ビットのＤキャラクタに１ビットの制御ビットを付した第１のシンボルと、１０ビットのＤキャラクタである第２のシンボルとを伝送する。このため、ＣＰＵ１０は、対向装置でのクロック再生を容易にしつつ、伝送路の帯域を削減したシリアル伝送を行う事ができる。
【０２１９】
（３）ＣＲＣについて
上述したＣＰＵ１０は、複数のレーン＃０〜＃７を介して、１シンボル時間に第１のシンボルと第２のシンボルを送信するとともに、第２のシンボルのうちの１つに、他のシンボルと同じ長さのエラーを検出できるＣＲＣを格納して送信した。しかし、実施例はこれに限定されるものではない。例えば、ＣＰＵ１０は、ＣＲＣではなく、他のアルゴリズムによる冗長ビットを送信することとしてもよい。すなわち、ＣＰＵ１０は、第２のシンボルのうちの１つに、他のシンボルと同じ長さのエラーを検出できる任意の冗長ビットを格納し、エラーの検出対象となる他のシンボルと同じシンボル時間内に送信すればよい。
【符号の説明】
【０２２０】
１  情報処理システム
１０〜１０ｃ  ＣＰＵ
１１〜１１ｃ  命令処理部
１２〜１２ｃ  記憶制御部
１３〜１３ｃ  ＩＯ制御部
１４〜１４ｃ  シリアルインタフェース部
１５〜１５ｃ  メモリ
１６〜１６ｃ  ＩＯ装置
２０、２１  コア
２２  メモリインタフェース部
２３  キャッシュコヒーレンシ制御部
２４  パケットルーティング部
３０〜３２  シリアルインタフェースポート
３３  トランザクション層機能部
３４  データリンク層機能部
３５  物理層機能部
３６  物理層論理サブブロック
３７  物理層電気サブブロック
３８  バイトストライピング回路
３９〜３９ｂ  送信部
４０  スクランブラ
４１  セレクタ
４２  １９Ｂ２０Ｂエンコーダ
４３  シリアライザ
４４〜４４ｂ  ドライバ
４５〜４５ｂ  レシーバ
４６〜４６ｂ  受信部
４７  シンボルロックデシリアライザ
４８  エラスティックバッファ
４９  １９Ｂ２０Ｂデコーダ
５０  デスクランブラ
５１  バイトアンストライピング回路
５２  ＬＴＳＳＭ
５３  ＤＶ／ＲＶ制御部
５４  オーダーセット生成部
５４ａ  送信間隔生成回路
５４ｂ  送信ＯＳ選択制御部
５４ｃ  セレクタ
５４ｄ  シンボルカウンタ部
５４ｅ  回数判別部
５４ｆ  送信ＯＳ数カウンタ部
５４ｇ  規定送信数判別部
５４ｈ  ＯＳ送信完了フラグ
５５  オーダーセット検出部
５５ａ  期待値算出部
５５ｂ  一致チェック部
５５ｃ  シンボルカウンタ
５５ｄ  ＯＳ長判定部
５５ｅ  受信ＯＳ数カウンタ
５５ｆ  規定受信数判定部
５５ｇ  ＯＳ受信完了フラグ
５５ｈ  ＳＫＰＯＳ検出回路
５６  オーダーセット判定部
５６ａ  ＡＮＤマスク
５６ｂ  ＯＲマスク
５７  送信タイミング生成回路
５８  ストライピングタイミング生成回路
５９  受信タイミング生成回路
６０  アンストライピングタイミング生成回路
７０、７０ａ、７１、７１ａ  差分伝送路
【図１】
0005348263.tif 000002
【図２】
0005348263.tif 000003
【図３】
0005348263.tif 000004
【図４】
0005348263.tif 000005
【図５】
0005348263.tif 000006
【図６】
0005348263.tif 000007
【図７】
0005348263.tif 000008
【図８】
0005348263.tif 000009
【図９】
0005348263.tif 000010
【図１０】
0005348263.tif 000011
【図１１】
0005348263.tif 000012
【図１２】
0005348263.tif 000013
【図１３】
0005348263.tif 000014
【図１４】
0005348263.tif 000015
【図１５】
0005348263.tif 000016
【図１６】
0005348263.tif 000017
【図１７】
0005348263.tif 000018
【図１８】
0005348263.tif 000019
【図１９】
0005348263.tif 000020
【図２０】
0005348263.tif 000021
【図２１】
0005348263.tif 000022
【図２２】
0005348263.tif 000023
【図２３】
0005348263.tif 000024
【図２４】
0005348263.tif 000025
【図２５】
0005348263.tif 000026
【図２６】
0005348263.tif 000027
【図２７】
0005348263.tif 000028
【図２８】
0005348263.tif 000029
【図２９】
0005348263.tif 000030
【図３０】
0005348263.tif 000031
【図３１】
0005348263.tif 000032
【図３２】
0005348263.tif 000033
【図３３】
0005348263.tif 000034
【図３４】
0005348263.tif 000035
【図３５】
0005348263.tif 000036
【図３６】
0005348263.tif 000037
【図３７】
0005348263.tif 000038
【図３８】
0005348263.tif 000039