(57)【特許請求の範囲】
【請求項１】
ビット幅Ｍ（Ｍは３以上の自然数）のデータキャラクタとビット幅Ｎ（Ｎは１以上の自然数）の制御キャラクタを多重化すると共に、前記制御キャラクタが有効であるか否かを示す制御キャラクタ有効信号を付加してＭ＋１又はＮ＋３の何れか大きい方のビット幅を有するシンボルコードを生成し、
前記データキャラクタを転送する場合は前記データキャラクタの所定のビットの反転値を前記制御キャラクタ有効信号の値とし、前記制御キャラクタを転送する場合は前記制御キャラクタ有効信号と前記データキャラクタの前記所定のビットを同じ値にして前記所定のビット以外のビットで前記制御キャラクタを表現し、
前記シンボルコードをパラレルデータからシリアルデータに変換して伝送路へ出力することでデータ転送を行う、データ転送方法。
【請求項２】
Ｍ＝９、Ｎ＝４であり、
前記制御キャラクタ有効信号は１ビットであり、
前記シンボルコードのビット幅は１０ビットである、請求項１記載のデータ転送方法。
【請求項３】
前記伝送路から入力される前記シリアルデータ中に存在するビット遷移のエッジからクロックを再生し、
前記伝送路から入力される前記シリアルデータを前記クロックに基づいてパラレルデータである前記シンボルコードに変換し、
前記シンボルコードをデコードしてシンボルのタイプを検出し、データキャラクタ又は制御キャラクタと、データキャラクタ及び制御キャラクタの有効信号を生成する、請求項１又は２記載のデータ転送方法。
【請求項４】
前記データキャラクタはPCI ExpressのＤキャラクタであり、前記制御キャラクタは前記PCI ExpressのＫキャラクタである、請求項１乃至３のいずれか１項記載のデータ転送方法。
【請求項５】
ビット幅Ｍ（Ｍは３以上の自然数）のデータキャラクタとビット幅Ｎ（Ｎは１以上の自然数）の制御キャラクタを多重化する第１の回路と、
前記第１の回路の出力に前記制御キャラクタが有効であるか否かを示す制御キャラクタ有効信号を付加してＭ＋１又はＮ＋３の何れか大きい方のビット幅を有するシンボルコードを生成する第２の回路を備え、
前記第１の回路は、前記データキャラクタを転送する場合は前記データキャラクタの所定のビットの反転値を前記制御キャラクタ有効信号の値とし、前記制御キャラクタを転送する場合は前記制御キャラクタ有効信号と前記データキャラクタの前記所定のビットを同じ値にして前記所定のビット以外のビットで前記制御キャラクタを表現し、
前記シンボルコードはパラレルデータからシリアルデータに変換されて伝送路へ出力される、コード変換回路。
【請求項６】
Ｍ＝９、Ｎ＝４であり、
前記制御キャラクタ有効信号は１ビットであり、
前記シンボルコードのビット幅は１０ビットである、請求項５記載のコード変換回路。
【請求項７】
前記データキャラクタはPCI ExpressのＤキャラクタであり、前記制御キャラクタは前記PCI ExpressのＫキャラクタである、請求項５又は６記載のコード変換回路。
【請求項８】
ビット幅Ｍ（Ｍは３以上の自然数）のデータキャラクタとビット幅Ｎ（Ｎは１以上の自然数）の制御キャラクタを多重化する第１の回路と、前記第１の回路の出力に前記制御キャラクタが有効であるか否かを示す制御キャラクタ有効信号を付加してＭ＋１又はＮ＋３の何れか大きい方のビット幅を有するシンボルコードを生成する第２の回路を有するコード変換回路と、
前記シンボルコードをパラレルデータからシリアルデータに変換して伝送路へ出力する変換回路を備え、
前記第１の回路は、前記データキャラクタを転送する場合は前記データキャラクタの所定のビットの反転値を前記制御キャラクタ有効信号の値とし、前記制御キャラクタを転送する場合は前記制御キャラクタ有効信号と前記データキャラクタの前記所定のビットを同じ値にして前記所定のビット以外のビットで前記制御キャラクタを表現する、装置。
【請求項９】
Ｍ＝９、Ｎ＝４であり、
前記制御キャラクタ有効信号は１ビットであり、
前記シンボルコードのビット幅は１０ビットである、請求項８記載の装置。
【請求項１０】
前記データキャラクタはPCI ExpressのＤキャラクタであり、前記制御キャラクタは前記PCI ExpressのＫキャラクタである、請求項８又は９記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ転送方法、コード変換回路及び装置に関する。
【背景技術】
【０００２】
従来、大規模集積回路（ＬＳＩ：Large Scale Integrated circuit）間、又は、ＬＳＩを有する装置間の情報伝送には、比較的低速なパラレルデータバスが用いられていた。しかし、パラレルデータバスは、簡易にＬＳＩ間又は装置間を結合可能にするものの、信号間に発生するスキューのため情報伝送能力を向上することは難しかった。そこで、近年はＬＳＩ間又は装置間の結合に比較的高速なシリアルバスを用いるようになった。
【０００３】
高速シリアル伝送を行う典型的な例として、ＰＣＩ（Peripheral Component Interconnect）エクスプレス（以下、PCI Expressと言う）が知られている。このPCI Expressでは、高速シリアル伝送を可能にする目的で、８Ｂ１０Ｂ方式と呼ばれるコード化方式が採用されている（例えば、特許文献１）。この８Ｂ１０Ｂ方式は、PCI Expressの他に、イーサーネット（Ethernet）、ファイバチャネル（Fiber Channel）、IEEE 1394等で採用されている。
【０００４】
８Ｂ１０Ｂ方式は、大きく分けて以下の２つの特徴を有する。第１に、図１に示すＤキャラクタと呼ばれる２５６種類の８ビットのデータキャラクタと、図２に示す１２種類のＫキャラクタと呼ばれる制御キャラクタを多重化して、３ビット及び５ビットのルックアップテーブルＬＵＴを用いて１０ビットのシンボルコードに変換して伝送する。図１は、一例として８ビットのＤキャラクタ、Ｋキャラクタ、制御キャラクタ有効信号、及びディスパリティ値に基づいてルックアップテーブルＬＵＴを用いて１０ビットのシンボルコードを出力する場合を示す。図２は、Ｋキャラクタのコード、シンボル、名称及び意味を示す。第２に、１０ビットシンボル中では最大で５ビットの連続するビット値しか出現しない様に定義されているので、１０ビットシンボル中には必ず１回以上のビット値の遷移が含まれており、受信側装置でのクロック再生が容易になる。尚、ビット値の遷移とは、ビットの値が０から１、又は、１から０に遷移することを意味する。
【０００５】
しかし、従来の８Ｂ１０Ｂ方式では、シリアル転送時のオーバーヘッドが比較的大きいため、シリアルバスの帯域幅を比較的多く消費してしまう。具体的には８ビットのデータキャラクタを１０ビットに変換するので、帯域幅が２５％増加してしまう。
【０００６】
又、従来の８Ｂ１０Ｂ方式では、データの変換にルックアップテーブルＬＵＴを用いることに起因する不都合もある。つまり、変換に用いるルックアップテーブルＬＵＴの回路量が比較的大きいため、遅延時間が比較的大きくなってしまう。具体的には、８ビットから１０ビット（及びその逆）への変換には３ビット及び５ビットの変換テーブルが必要であるため遅延時間が比較的大きくなってしまう。
【０００７】
更に、従来の８Ｂ１０Ｂ方式では、８ビットデータを３ビットと５ビットに分割し、ルップアップテーブルＬＵＴを用いて１０ビットシンボルに変換しているため、エラー耐性が悪化してしまう。つまり、伝送路で１ビットのエラーが発生した場合、１０ビットシンボルを８ビットデータに戻した時に最大で４ビットエラーが発生してしまう。
【０００８】
図３は、８Ｂ１０Ｂコード変換回路を含む、シリアルバスのデータの流れを説明する図である。送信側装置１では、８ビット幅のパラレルデータを８Ｂ１０Ｂコード変換回路２により１０ビットシンボルコードに変換する。このシンボルコードは、シリアルバス５を介して送信側装置１と受信側装置３との間で伝送される。受信側装置３では、受信した１０ビットのシンボルコードを１０Ｂ８Ｂコード変換回路４により送信側装置１とは逆の手順で８ビットの受信データに変換する。
【０００９】
説明の便宜上、送信側データは１６進数で５７（図３中２進数で01010111と表記）であるものとする。この送信側データがＤキャラクタの場合、８Ｂ１０Ｂ変換回路２で変換した結果は、１６進数で０５５（図３中２進数で0001010101と表記）になる。この１０ビットシンボルコードが伝送路であるシリアルバス５を介して伝送されている際に１ビットエラーが発生して１６進数で２５５に変化（図３中ビット０が０から１に変化）したものと仮定すると、このシンボルデータが受信側の１０Ｂ８Ｂコード変換回路４で変換された結果は、１６進数で４９（図３中２進数で01001001と表記）になる。送信側データである２進数01010111と受信側データである２進数01001001を比較すると、４ビットが変化していることがわかる。即ち、シリアルバス５での１ビットのエラーが送受信データで見ると４ビットエラーになり、エラービットが増加する。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開昭５９−１００５６号公報
【特許文献２】特開２００４−８０３００号公報
【特許文献３】特表２００６−５０２６７９号公報
【特許文献４】特開２００７−３２５２６号公報
【非特許文献】
【００１１】
【非特許文献１】PCI Express Base Specification Revision 2.0, PCI-SIG, December 20, 2006
【発明の概要】
【発明が解決しようとする課題】
【００１２】
従来の８Ｂ１０Ｂ方式を用いたデータ転送方法では、シリアル伝送時のバスのオーバーヘッドを減少させ、バスの帯域幅を有効利用することは難しいという問題があった。
【００１３】
そこで、本発明は、シリアル伝送時のバスのオーバーヘッドを減少させ、バスの帯域幅を有効利用することが可能なデータ転送方法、コード変換回路及び装置を提供することを目的とする。
【課題を解決するための手段】
【００１４】
本発明の一観点によれば、ビット幅Ｍ（Ｍは３以上の自然数）のデータキャラクタとビット幅Ｎ（Ｎは１以上の自然数）の制御キャラクタを多重化すると共に、前記制御キャラクタが有効であるか否かを示す制御キャラクタ有効信号を付加してＭ＋１又はＮ＋３の何れか大きい方のビット幅を有するシンボルコードを生成し、前記データキャラクタを転送する場合は前記データキャラクタの所定のビットの反転値を前記制御キャラクタ有効信号の値とし、前記制御キャラクタを転送する場合は前記制御キャラクタ有効信号と前記データキャラクタの前記所定のビットを同じ値にして前記所定のビット以外のビットで前記制御キャラクタを表現し、前記シンボルコードをパラレルデータからシリアルデータに変換して伝送路へ出力することでデータ転送を行うデータ転送方法が提供される。
【００１５】
本発明の一観点によれば、ビット幅Ｍ（Ｍは３以上の自然数）のデータキャラクタとビット幅Ｎ（Ｎは１以上の自然数）の制御キャラクタを多重化する第１の回路と、前記第１の回路の出力に前記制御キャラクタが有効であるか否かを示す制御キャラクタ有効信号を付加してＭ＋１又はＮ＋３の何れか大きい方のビット幅を有するシンボルコードを生成する第２の回路を備え、前記第１の回路は、前記データキャラクタを転送する場合は前記データキャラクタの所定のビットの反転値を前記制御キャラクタ有効信号の値とし、前記制御キャラクタを転送する場合は前記制御キャラクタ有効信号と前記データキャラクタの前記所定のビットを同じ値にして前記所定のビット以外のビットで前記制御キャラクタを表現し、前記シンボルコードはパラレルデータからシリアルデータに変換されて伝送路へ出力されるコード変換回路が提供される。
【００１６】
本発明の一観点によれば、ビット幅Ｍ（Ｍは３以上の自然数）のデータキャラクタとビット幅Ｎ（Ｎは１以上の自然数）の制御キャラクタを多重化する第１の回路と、前記第１の回路の出力に前記制御キャラクタが有効であるか否かを示す制御キャラクタ有効信号を付加してＭ＋１又はＮ＋３の何れか大きい方のビット幅を有するシンボルコードを生成する第２の回路を有するコード変換回路と、前記シンボルコードをパラレルデータからシリアルデータに変換して伝送路へ出力する変換回路を備え、前記第１の回路は、前記データキャラクタを転送する場合は前記データキャラクタの所定のビットの反転値を前記制御キャラクタ有効信号の値とし、前記制御キャラクタを転送する場合は前記制御キャラクタ有効信号と前記データキャラクタの前記所定のビットを同じ値にして前記所定のビット以外のビットで前記制御キャラクタを表現する装置が提供される。
【発明の効果】
【００１７】
開示のデータ転送方法、コード変換回路及び装置によれば、シリアル伝送時のバスのオーバーヘッドを減少させ、バスの帯域幅を有効利用することが可能となる。
【図面の簡単な説明】
【００１８】
【図１】Ｄキャラクタを説明する図である。
【図２】Ｋキャラクタを説明する図である。
【図３】８Ｂ１０Ｂコード変換回路を含む、シリアルバスのデータの流れを説明する図である。
【図４】本発明の一実施例におけるコード変換回路を説明する図である。
【図５】シンボルコードの定義の一例を説明する図である。
【図６】制御キャラクタの定義の一例を説明する図である。
【図７】制御キャラクタの定義の他の例を説明する図である。
【図８】実施例におけるデータ転送方法、コード変換回路及び装置を適用可能な情報処理装置を示すブロック図である。
【図９】送信側装置内のコード変換回路と受信側装置内のコード変換回路を示すブロック図である。
【図１０】送信側コード変換回路の入出力を説明する図である。
【図１１】送信側コード変換回路の構成の一例を示す回路図である。
【図１２】送信側コード変換回路の動作を説明するための真理値表を示す図である。
【図１３】受信側コード変換回路の入出力を説明する図である。
【図１４】受信側コード変換回路の構成の一例を示す回路図である。
【図１５】受信側コード変換回路の動作を説明するための真理値表を示す図である。
【図１６】本発明の他の実施例における送信側装置内のコード変換回路及び受信側装置内のコード変換回路を示すブロック図である。
【図１７】レーン毎のビット割り当ての一例を説明する図である。
【図１８】７２ビットパラレルデータバスのビット割り当ての一例を説明する図である。
【発明を実施するための形態】
【００１９】
開示のデータ転送方法、コード変換回路及び装置では、シリアルパラレル変換を伴うシリアル転送において所望の転送効率（又は、伝送効率）を実現するために、転送（又は、送信）するキャラクタに対して制御キャラクタが有効であるか否かを示す制御キャラクタ有効信号を付加することでデータキャラクタと制御キャラクタを多重化して転送（又は、送信）する。
【００２０】
データキャラクタを転送する場合は、データキャラクタの所定のビットの反転値を制御キャラクタ有効信号ビットの値とし、制御キャラクタを転送する場合は、制御キャラクタ有効信号ビットとデータキャラクタの所定のビットを同一の値とし、これら以外のビットで制御キャラクタを表現する。
【００２１】
これにより、多重化されたコードを効率良くＡＣ転送することができ、シリアル転送時のバスのオーバーヘッドを減少させ、バスの帯域幅を有効利用することが可能となる。
【００２２】
尚、ＡＣ転送とは、ＡＣ特性を持った信号を使用してデータを転送することを言う。又、ＡＣ特性とは、伝送路を転送されるデータに関して、転送されるデータキャラクタに依存せず、例えば常時データキャラクタの全てのビットが０（All"0"）であっても、コード変換後のシンボルコードには必ず値「０」と値「１」が含まれており、必ず１回以上のビット値の遷移が発生することが保証されていることを言う。つまり、データがＡＣ特性を有するとは、伝送路を転送されるデータがこのような交流特性を持っていることを言う。
【００２３】
以下に、開示のデータ転送方法、コード変換回路及び装置の各実施例を図面と共に説明する。
【実施例】
【００２４】
図４は、本発明の一実施例におけるコード変換回路を説明する図である。図４に示すコード変換回路１１には、例えば転送データ（又は、送信データ）としての９ビットのデータキャラクタ（Ｄキャラクタ）Ｄ０〜Ｄ８、４ビットの制御キャラクタ（Ｋキャラクタ）Ｋ０〜Ｋ３、及び制御キャラクタ有効信号が入力される。又、コード変換回路１１からは、１０ビットのシンボルコードCntl,Ｓ０〜Ｓ８が出力される。尚、以下の説明では、便宜上ＤキャラクタのビットBit0をＤ０又はD_Bit0、ＫキャラクタのビットBit0をＫ０又はK_Bit0、シンボルコードのビットBit0をＳ０又はS_Bit0と表現する。
【００２５】
図５は、シンボルコードの定義の一例を説明する図である。コントロールビットCntlが１でシンボルコードのビットS_Bit0が０の場合、１０ビットのシンボルコードのシンボルは、Ｄキャラクタである。この場合、ＤキャラクタのビットBit0の値は０であり、ビットS_Bit1〜S_Bit8でＤキャラクタのビットD_Bit1〜D_Bit8の値を示す。コントロールビットCntlが０でシンボルコードのビットS_Bit0が１の場合、１０ビットのシンボルコードのシンボルは、Ｄキャラクタである。この場合、ＤキャラクタのビットBit0の値は１であり、ビットS_Bit1〜S_Bit8でＤキャラクタのビットD_Bit1〜D_Bit8の値を示す。コントロールビットCntlが１でシンボルコードのビットS_Bit0が１の場合、１０ビットのシンボルコードのシンボルはＫキャラクタである。この場合、ビットS_Bit2〜S_Bit8で最大１２８種類のコードを表現し、ビットS_Bit1はビットS_Bit2の反転値を示す。又、コントロールビットCntlが０でシンボルコードのビットS_Bit0が０の場合、コードが無効（Invalid）シンボルであることを示す。
【００２６】
図６は、制御キャラクタの定義の一例を説明する図であり、図７は、制御キャラクタの定義の他の例を説明する図である。図６及び図７は、各制御キャラクタの名称に対応する１０ビットのシンボルコードCntl,S_Bit0〜S_Bit8を示す。図６は制御キャラクタ１〜１２８のシンボルコードを示し、図７が制御キャラクタ１〜１６のシンボルコードを示す。図７の制御キャラクタは、図６の制御キャラクタに比べると冗長性が高められている。
【００２７】
図４〜図７では、一例として９ビット幅（又は、ビット長）のデータキャラクタと、４ビット幅（又は、ビット長）の制御キャラクタを転送するものとしているが、データキャラクタのビット幅は９ビットに限定されず、３ビット幅以上の整数値であれば良い。データキャラクタのビット幅をＭ（Ｍは、３以上の自然数）制御キャラクタのビット幅をＮ（Ｎは１以上の自然数）とした場合、シンボルコードのビット幅はＭ＋１、或いは、Ｎ＋３の何れか大きい方の数値となる。
【００２８】
図４〜図７の例では、９ビット幅のデータキャラクタに対して１ビットのコントロールビットCntlを付加するので、シリアルバスで転送される１つのシンボルコードCntl,Ｓ０〜Ｓ８は１０ビット幅となる。更に、制御キャラクタは、PCI Express仕様と同様に図７の場合であれば１２種類以上、最大で１６種類転送され、図６の場合であれば１２種類以上、最大で１２８種類転送される。
【００２９】
送信側装置においてデータキャラクタを転送する場合は、図５に定義された通り、データキャラクタの所定のビットD_Bit0の値の反転値をコントロールビットCntlの値とする。制御キャラクタを送信する場合は、コントロールビットCntlとデータキャラクタの所定のビットD_Bit0の位置を同一とし、所定のビットD_Bit0以外のビットで制御キャラクタを表現する。図５では、制御キャラクタを送信する場合はコントロールビットCntlとシンボルコードのビットS_Bit0の値を共に１に設定しているが、両方のビットの値を０にしても良いことは言うまでもない。制御キャラクタのビットK_Bit0の反転値をシンボルコードのビットS_Bit1の値とし、S_Bit 2から S_Bit 8の７ビットで１２８種類の制御キャラクタを表現する。
【００３０】
図６に示す制御キャラクタの定義の場合、最大で１２８種類の制御キャラクタを定義可能である。実際に必要とする制御キャラクタの種類が１２８種類より大幅に少ない場合、例えばPCI Expressの様に１２種類しか必要としない場合、図７に示す制御キャラクタの定義のように冗長ビットを設けることで耐故障性を向上することも可能である。
図７は、４ビットの制御キャラクタを１０ビットのシンボルコードにアサインした例を示す。図７の例では、コントロールビットCntlとシンボルコードのビットS_Bit0の値を１に設定し、制御キャラクタのK_Bit0からK_Bit3を夫々シンボルコードのビットS_Bit1，S_Bit3，S_Bit5，S_Bit7にアサインし、シンボルコードのビットS_Bit2，S_Bit4，S_Bit6，S_Bit8には夫々シンボルコードのビットS_Bit1，S_Bit3，S_Bit5，S_Bit7の値を反転した値をセットしている。
【００３１】
一方、受信側装置においては、図５に従ってコントロールビットCntlとシンボルコードのビットS_Bit0の値を比較する。比較の結果が不一致であれば、受信したシンボルコードはデータキャラクタであると認識し、シンボルコードのビットS_Bit0からS_Bit8をデータキャラクタのビットD_Bit0からD_Bit8として出力する。又、比較の結果が一致であり、更に、両方のビットCntl，S_Bit0とも値が１であると、受信したシンボルコードは制御キャラクタであると受信側装置は認識する。
【００３２】
図８は、本実施例におけるデータ転送方法、コード変換回路及び装置を適用可能な情報処理装置を示すブロック図である。図８に示す情報処理装置２０は、複数のシステムボード２１−０〜２１−ｎ（ｎは１以上の自然数）、クロスバ装置２２、複数の入出力（ＩＯ：Input and Output）装置２３−０〜２３−ｎ、クロスババス２４、及びＩＯバス２５を有する。図８の例では、各システムボード２１−０〜２１−ｎは同じ構造を有し、複数のＣＰＵ（Central Processing Unit）２１１−０〜２１１−ｍ（ｍはｎに依存しない１以上の自然数）、メモリ２１２、メモリ制御装置２１３、ＣＰＵバス２１４、及びメモリバス２１５を有する。各システムボード２１−０〜２１−ｎにおいて、各ＣＰＵ２１１−０〜２１１−ｍは、ＣＰＵバス２１４を介してメモリ制御装置２１３に接続されており、メモリ２１２はメモリバス２１５を介してメモリ制御装置２１３に接続されている。各システムボード２１−０〜２１−ｎは、クロスババス２４を介してクロスバ装置２２に接続されており、各ＩＯ装置２３−０〜２３−ｎはＩＯバス２５を介してクロスバ装置２２に接続されている。
【００３３】
各ＣＰＵ２１１−０〜２１１−ｍとメモリ制御装置２１３との間のデータ転送は、各ＣＰＵ２１１−０〜２１１−ｍ内のコード変換回路（図示せず）とメモリ制御装置２１３内のコード変換回路（図示せず）の間で、ＣＰＵバス２１４を介して行われる。各システムボード２１−０〜２１−ｎにおいて、メモリ２１２とメモリ制御装置２１３との間のデータ転送は、メモリ２１２とメモリ制御装置２１３内のコード変換回路（図示せず）の間で、ＩＯバス２１５を介して行われる。各システムボード２１−０〜２１−ｎにおいて、メモリ制御装置２１３とクロスバ装置２２との間のデータ転送は、メモリ制御装置２１３内のコード変換回路（図示せず）とクロスバ装置２２内のコード変換回路（図示せず）の間で、クロスババス２４を介して行われる。又、クロスバ装置２２と各ＩＯ装置２３−０〜２３−ｎとの間のデータ転送は、クロスバ装置２２内のコード変換回路（図示せず）と各ＩＯ装置２３−０〜２３−ｎ内のコード変換回路（図示せず）の間で、ＩＯバス２５を介して行われる。
【００３４】
図９は、送信側装置内のコード変換回路と受信側装置内のコード変換回路を示すブロック図である。送信側装置及び受信側装置は、夫々ＣＰＵ２１１−０〜２１１−ｍ、メモリ制御装置２１３、クロスバ装置２２、及びＩＯ装置２３−０〜２３−ｎ内に設けられる。ここでは説明の便宜上、送信側装置３１がシステムボード２１−０内のメモリ制御装置２１３に設けられたものであり、受信側装置３２がクロスバ装置２２に設けられたものであるものとする。従って、送信側装置３１と受信側装置３２を接続するプリント板配線等の差動型伝送路３３は、この例ではクロスババス２４により形成される。
【００３５】
図９に示すように、送信側装置３１は、クロック発振器３１１、データ送信回路３１２、ＬＦＳＲ（Linear Feedback Shift Register）を用いたスクランブラ３１３、送信側制御回路３１４、送信側コード変換回路３１５、並列直列（パラレルシリアル）変換回路３１６、及び出力ドライバ３１７を有する。クロック発振器３１１が出力するクロックは、データ送信回路３１２、送信側制御回路３１４、送信側コード変換回路３１５、及び並列直列変換回路３１に入力される。送信側コード変換回路３１５には、スクランブラ３１３からのデータキャラクタと、送信側制御回路３１４からの制御キャラクタ及び制御キャラクタ有効信号が入力される。送信側制御回路３１４の出力は、データ送信回路３１２にも入力される。送信側コード変換回路３１５が出力するパラレルデータは、並列直列変換回路３１６によりシリアルデータに変換されて出力ドライバ３１７に入力される。
【００３６】
一方、受信側装置３２は、入力レシーバ３２１、クロック再生回路３２２、直列並列（シリアルパラレル）変換回路３２３、受信側コード変換回路３２４、ＬＦＳＲを用いたデスクランブラ３２５、受信側制御回路３２４、及びデータ受信回路３２７を有する。クロック再生回路３２２により入力レシーバ３２１が出力するシリアルデータから再生されたクロックは、直列並列変換回路３２３、受信側コード変換回路３２４、受信側制御回路３２６、及びデータ受信回路３２７に入力される。入力レシーバ３２１が出力するシリアルデータは、直列並列変換回路３２３によりパラレルデータに変換されて受信コード変換回路３２４に入力される。受信側コード変換回路３２４が出力するデータキャラクタはデスクランブラ３２５に入力される。受信側コード変換回路３２４が出力する制御キャラクタ、制御キャラクタ有効信号、及びデータ有効信号は、受信側制御回路３２６に入力される。デスクランブラ３２５及び受信側制御回路の出力は、データ受信回路３２７に入力される。
【００３７】
データ送信回路３１２及びデータ受信回路３２７は、例えばPCI Expressのデータリンク層に相当する。スクランブラ３１３及びデスクランブラ３２５は、転送データを乱数化することで差動型伝送路３３で発生するＥＭＩ（Electro Magnetic Interference）を低減するために設けられているが、省略しても良い。
【００３８】
送信側制御回路３１４は、送信側コード変換回路３１５を含む送信側装置３１全体の状態を制御する。同様に、受信側制御回路３２６は、受信側コード変換回路３２４を含む、受信側装置３２全体の状態を制御する。制御回路３１４，３２６の制御動作の一例として、初期化処理がある。初期化処理では、Ｋキャラクタと呼ばれる制御キャラクタを用いた処理が行われる。初期化処理が必要な場合は、送信側装置３１から受信側装置３２に対して初期化を指示するＫキャラクタが送られ初期化シーケンスが実行される。Ｋキャラクタは、この初期化シーケンスに必要な制御キャラクタである。尚、初期化処理自体は周知であり、例えば非特許文献１に記載されているので、本明細書では初期化処理の詳細についての説明は省略する。
【００３９】
送信側装置３１の並列直列変換回路３１６は、送信側コード変換回路３１５から出力されたパラレルデータをシリアルデータに変換する。一方、受信側の直列並列変換回路３２３は、入力レシーバ３２１が受信したシリアルデータをパラレルデータに変換して受信側コード変換回路３２４に入力する。並列直列変換回路３１６及び直列並列変換回路３２３は、例えば高速シフトレジスタで形成可能である。
【００４０】
出力ドライバ３１７、入力レシーバ３２１、及びこれらを接続する差動型伝送路３３は、送信側装置３１と受信側装置３２の間（例えば、ＬＳＩ間）でシリアルデータを転送する回路である。シリアルデータを転送する回路自体は周知であるため、本明細書ではシリアルデータを転送する回路の詳細についての説明は省略する。
【００４１】
次に、送信側装置３１から受信側装置３２へのデータ転送を説明する。データ送信回路３１２からは、送信側制御回路３１４からの伝送路有効信号に応じてパラレルデータが出力される。パラレルデータは、スクランブラ３１３により乱数化されてデータキャラクタとして送信側コード変換回路３１５に供給される。送信側制御回路３１４が制御キャラクタを出力する場合は、送信側制御回路３１４が制御キャラクタ有効信号と共にコード化された制御キャラクタを送信側コード変換回路３１５に供給する。
【００４２】
スクランブラ３１３は、電磁放射ノイズの周波数成分を拡散させ、ＥＭＩ対策を取り易くすることが目的で設置される。より具体的には、転送するＤキャラクタが特定の値の連続であった場合、例えば値「０」と値「１」の連続であった場合、スクランブラを持たない送信回路の場合、伝送路上からは特定の周波数成分を持った電磁放射ノイズが発生し易くなる。この様なノイズは一般的には他の装置への悪影響を与え易い。スクランブラ３１３は、Ｄキャラクタが連続する同じ値であっても、疑似乱数化することで特定の周波数成分を持った電磁放射ノイズの発生をし辛くする効果があり、これを目的として設置される。
【００４３】
送信側コード変換回路３１５では、スクランブラ３１３からのデータキャラクタ及び送信側制御回路３１４からの制御キャラクタと制御キャラクタ有効信号とを、シンボルコードと呼ばれるパラレルデータに変換して並列直列変換回路３１６に供給する。並列直列変換回路３１６では、クロック発振器３１１が出力するクロック（送信クロック）に同期してパラレルデータをシリアルデータに変換して出力する。尚、クロック発信器３１１は、この送信クロックの他に、パラレルデータの転送を制御する低速クロックも出力して送信側装置３１内の各部に供給する。低速クロックは、送信クロックに比べて低速、即ち、周波数が低い。
【００４４】
並列直列変換回路３１６から出力されたシリアルデータは、出力ドライバ３１７及び差動型伝送路３３を介して受信側装置３２に入力される。入力レシーバ３２１は、受信したシリアルデータをクロック再生回路３２２及び直列並列変換回路３２３に出力する。尚、図９では差動型伝送路３３が用いられているが、差動型伝送路３３以外の伝送路を用いても良いことは言うまでもない。
【００４５】
クロック再生回路３２２は、ＰＬＬ（Phase Locked Loop）回路を内蔵しており、シンボルデータ中に最低１回は存在するビット遷移のエッジを検出して内蔵ＰＬＬ回路を同期化して受信クロックを再生する。このように受信クロックを再生するためには、シンボルデータ中にビット遷移が存在する必要がある。このようにして受信クロックを再生する方法は、ＣＤＲ（Clock Data Recovery）又はエンベデッドクロック（Embedded Clock）と呼ばれ、高速シリアル転送では一般的に用いられる技術である。
【００４６】
直列並列変換回路３２３では、再生された受信クロックに基づいて入力レシーバ３２１からのシリアルデータをシンボルコード（パラレルデータ）に変換して受信側コード変換回路３２４に出力する。受信側コード変換回路３２４は、シンボルコードをデコードしてシンボルのタイプ（種類）を検出し、データキャラクタ又は制御キャラクタと、各々の有効信号を生成する。つまり、受信側コード変換回路３２４は、データキャラクタとデータ有効信号、又は、制御キャラクタと制御キャラクタ有効信号を生成する。データキャラクタはデスクランブラ３２５に出力され、制御キャラクタ、制御キャラクタ有効信号、及びデータ有効信号は受信側制御回路３２６に出力される。
【００４７】
尚、シンボルコードをデコードする際に、シンボルエラーと呼ばれる特定のエラーパターンを検出してエラー検出信号を求めるようにしても良い。この場合、エラー検出信号は、データキャラクタ又は制御キャラクタの有効信号と共に受信側制御回路３２６に通知すれば良い。
【００４８】
デスクランブラ３２５は、ＬＦＳＲを用いてデータキャラクタの乱数化を解除してデータキャラクタをデータ受信回路３２７に出力する。受信側制御回路３２６は、制御キャラクタ及びエラー信号に応じて各々の処理を行うが、これらの処理自体は本実施例の要旨と直接は関係がないので、本明細書ではこれらの処理の詳細についての説明は省略する。
【００４９】
本実施例では、従来の８Ｂ１０Ｂ方式の場合と同様にＫキャラクタを定義可能であり、図７の場合であれば最大１６種類のＫキャラクタを定義可能である。このため、物理層制御、ＤＬＬＰ等のリンク層制御には、８Ｂ１０Ｂ方式の制御を利用可能である。従って、制御回路３１４，３２６は、８Ｂ１０Ｂ方式の場合に使用する制御回路に基づいて設計可能である。
【００５０】
次に、図１０、図１１及び図１２を用いて、送信側コード変換回路３１５のより詳細な動作を説明する。ここでは一例として、データキャラクタのビット幅が９ビット、制御キャラクタのビット幅が４ビット、シンボルコードのビット幅が１０ビットの場合について説明するが、データキャラクタ、制御キャラクタ及びシンボルコードがこれらのビット幅に限定されないことは前述した通りである。
【００５１】
送信側コード変換回路３１５は、データキャラクタと制御キャラクタとの一方を選択して制御キャラクタ有効信号と多重化し、データキャラクタ及び制御キャラクタが受信側装置３２内で分離が可能な様に、特定のビットパターンをシンボルコードに埋め込む。この特定のビットパターンは、クロック回復のためのビット遷移の発生を保証するものでもある。
【００５２】
図１０は、送信側コード変換回路３１５の入出力を説明する図である。送信側コード変換回路３１５の入力は、９ビットのデータキャラクタ、４ビットの制御キャラクタ、及び制御キャラクタ有効信号を含む。又、送信側コード変換回路３１５の出力は、１０ビットのパラレルデータであり、このパラレルデータがシンボルコードとして並列直列変換回路３１６に入力される。
【００５３】
図１１は、送信側コード変換回路３１５の構成の一例を示す回路図である。送信側コード変換回路３１５は、図１１に示す如く接続されたインバータ回路４１−１〜４１−５、及び２対１マルチプレクサ（２：１ＭＵＸ：Multiplexer）４２−１〜４２−１０を有する。図１１中、Kcode_ENBL_inは制御キャラクタ有効信号を示し、論理オン（例えば、ハイレベル）である場合に制御キャラクタが有効であることを示す。又、Kcode_in[0:3]は制御キャラクタ入力を示し、Dcode_in[0:8]はデータキャラクタ入力を示す。更に、Output Cntl Bit及びOutput Bit[0:8]は１０ビットのシンボルコード出力を示す。各マルチプレクサ４２−１〜４２−１０は、制御キャラクタ有効信号Kcode_ENBL_inがオン（ＯＮ）の場合に制御キャラクタ入力Kcode_in側の入力を選択して出力し、オフ（ＯＦＦ）の場合にデータキャラクタ入力Dcode_in側の入力を選択して出力する。
【００５４】
マルチプレクサ４２−１〜４２−１０において、制御キャラクタ入力Kcode_in側の入力が選択された場合、Output Cntl Bit及びOutput Bit[0]には、値「１」が出力される。この値「１」は、シンボルコード出力が制御キャラクタであることを受信側に通知する値である。又、Output Bit[1]には制御キャラクタ入力Kcode_in[0]の値、Output Bit[2]には制御キャラクタ入力Kcode_in[0]の値をインバータ回路４１−２で反転した値が出力される。以後、Output Bit[3]には制御キャラクタ入力Kcode_in[1]の値、Output Bit[4]には制御キャラクタ入力Kcode_in[1]の値をインバータ回路４１−３で反転した値、Output Bit[5]には制御キャラクタ入力Kcode_in[2]の値、Output Bit[6]には制御キャラクタ入力Kcode_in[2]の値をインバータ回路４１−４で反転した値、Output Bit[7]には制御キャラクタ入力Kcode_in[3]の値、Output Bit[8]には制御キャラクタ入力Kcode_in[3]の値をインバータ回路４１−５で反転した値が出力される。
【００５５】
又、マルチプレクサ４２−１〜４２−１０において、データキャラクタ入力Dcode_in側の入力が選択された場合、Output Cntl BitにはDcode_in[0]の値をインバータ回路４１−１で反転した値、Output Bit[0]にはDcode_in[0]の値が出力される。これらの値、即ち、Output Cntl Bitの値とOutput Bit[0]の値が不一致である状態は、シンボルコード出力がデータキャラクタであることを受信側に通知する値である。又、Output Bit[1:8]にはデータキャラクタ入力Dcode_in[1:8]の値が出力される。
【００５６】
尚、Output Cntl Bitに出力する値は、この例ではDcode_in[0]としているが、受信側コード変換回路３２４と合意が取れている場合には、他のデータビットを選択することも可能である。
【００５７】
図１２は、送信側コード変換回路３１５の動作を説明するための真理値表を示す図であり、図１１の送信側コード変換回路３１５の論理動作条件を示している。図１２中、^Kcode_in[0]はKcode_in[0]の値の反転値、^Kcode_in[1]はKcode_in[1]の値の反転値、^Kcode_in[2]はKcode_in[2]の値の反転値、^Kcode_in[3]はKcode_in[3]の値の反転値、^Dcode_in[0]はDcode_in[0]の値の反転値を夫々示す。
【００５８】
このように、送信側コード変換回路３１５は、従来のルックアップテーブルを用いる方法と比較すると、回路量を減少させることができると共に低コストで実現可能であることが判る。更に、変換に必要な回路の遅延時間は、インバータ回路と２対１のマルチプレクサ（又は、セレクタ）の遅延時間の合計値であるため、従来の方法と比較すると大幅に遅延時間を短縮することができ、この結果高速変換動作が可能であることが判る。
【００５９】
次に図１３、図１４及び図１５を用いて、受信側コード変換回路３２４のより詳細な動作を説明する。ここでは一例として、送信側コード変換回路３１５の場合と同様にデータキャラクタのビット幅が９ビット、制御キャラクタのビット幅が４ビット、シンボルコードのビット幅が１０ビットの場合について説明するが、データキャラクタ、制御キャラクタ及びシンボルコードがこれらのビット幅に限定されないことは前述した通りである。ただし、受信側コード変換回路３２４におけるデータキャラクタ、制御キャラクタ及びシンボルコードのビット幅は、送信側コード変換回路３１５におけるビット幅と同じである必要がある。
【００６０】
受信側コード変換回路３２４は、シンボルコードに埋め込まれている特定のビットパターンを検出し、特定のビットパターンに基づいて多重化されているデータキャラクタと制御キャラクタを分離する。受信側コード変換回路３２４は、シンボルエラーと呼ばれる特定のエラーパターンも検出する。
【００６１】
図１３は、受信側コード変換回路３２４の入出力を説明する図である。受信側コード変換回路３２４の入力は、直列並列変換回路３２３からのシンボルコードである。又、受信側コード変換回路３２４の出力は、９ビット幅のデータキャラクタ、４ビット幅の制御キャラクタ、データキャラクタ有効信号、制御キャラクタ有効信号、及びシンボルエラーを検出することで得られるエラー検出信号を含む。
【００６２】
図１４は、受信側コード変換回路３２４の構成の一例を示す回路図である。受信側コード変換回路３２４は、図１４に示す如く接続された否定排他的論理和（ＥＮＯＲ：Exclusive-NOR）回路５１、否定論理和（ＮＯＲ）回路５２、排他的論理和（ＥＯＲ）回路５３−１〜５３−４、論理積（ＡＮＤ）回路５４−１〜５４−５、及び論理和（ＯＲ）回路５５を有する。図１４中、Input Cntl Bit及びInput Bit[0:8]は合計で１０ビット幅のシンボルコード入力、Dcode_out[0:8]はデータキャラクタ出力、Kcode_out[0:3]は制御キャラクタ出力を示す。更に、Dcode_ENBL_outはDcode_out[0:8]が有効であることを示すデータキャラクタ有効信号、Kcode_ENBL_outはKcode_out[0:3]が有効であることを示す制御キャラクタ有効信号、Symbol_ERROR_outは受信したシンボルコードが規定以外のコードであることを示すエラー検出信号である。このエラー検出信号がオン（例えば、ハイレベル）であると、受信側コード変換回路３２４から出力される他の全ての出力信号は受信側制御回路３２６において無視される。
【００６３】
受信側コード変換回路３２４において、シンボルコード入力のビットInput Cntl Bit，Input Bit[0]は、シンボルコードの定義に従ってデコードされる。両ビットInput Cntl Bit，Input Bit[0]が不一致の場合、図１４中のＥＮＯＲ回路５１でこの不一致が検出されてデータキャラクタ有効信号Dcode_ENBL_outがオンになる。又、両ビットInput Cntl Bit，Input Bit[0]が共に値「１」の場合、図１４中のＡＮＤ回路５４−１でこの状態が検出されて制御キャラクタ有効信号Kcode_ENBL_outがオンになる。尚、両ビットInput Cntl Bit，Input Bit[0]がこれら以外の場合、即ち、両ビットInput Cntl Bit，Input Bit[0]が共に値「０」の場合、このビットパターンはシンボルコードエラーであるため、図１４中のＮＯＲ回路５２によりこのシンボルコードエラーが検出されてＯＲ回路５５が出力するエラー検出信号Symbol_ERROR_outがオンになる。更に、制御キャラクタ有効信号Kcode_ENBL_outがオン、即ち、受信したシンボルコードが制御キャラクタである場合、シンボルコードの定義に従ってInput Bit[1]とInput Bit[2]、Input Bit[3]とInput Bit[4]、Input Bit[5]とInput Bit[6]、Input Bit[7]とInput Bit[8]が夫々不一致であるか否かをＥＯＲ回路５３−１〜５３−４により検査する。この検査の結果、ＥＯＲ回路５３−１〜５３−４のいずれかにおいて不一致が検出されると、シンボルコードエラーであるため、ＡＮＤ回路５４−２〜５４−５及びＯＲ回路５５を介して出力されるエラー検出信号Symbol_ERROR_outがオンになる。
【００６４】
シンボルコード入力のビットInput Bit[0:8]の値はそのままデータキャラクタのビットDcode_out[0:8]の値になり、更に、ビットInput Bit[1,3,5,7]の値はそのまま制御キャラクタのビットKcode_out[0:3]の値になる。
【００６５】
図１５は受信側コード変換回路３２４の動作を説明するための真理値表を示す図であり、図１４の受信側コード変換回路３２４の論理動作条件を示している。
【００６６】
このように、受信側コード変換回路３２４は、従来のルックアップテーブルを用いる方法と比較すると、回路量を減少させることができると共に低コストで実現可能であることが判る。更に、変換に必要な回路の遅延時間は、最大でＥＮＯＲ回路、ＮＯＲ回路、ＥＯＲ回路、ＡＮＤ回路、及びＯＲ回路の遅延時間の合計値であるため、従来の方法と比較すると大幅に遅延時間を短縮することができ、この結果高速変換動作が可能であることが判る。
【００６７】
次に、本発明の他の実施例について図１６と共に説明する。図１６は、本発明の他の実施例における送信側装置内のコード変換回路及び受信側装置内のコード変換回路を示すブロック図である。
【００６８】
コード変換回路が高速シリアルインタフェース回路に適用されており、より高帯域のバス性能が必要である場合、複数のシリアルインタフェースを組み合わせて１つの論理インタフェースを形成する場合がある。PCI Express仕様では、単独のシリアルインタフェースをレーン（Lane）と呼ばれる単位で呼称しているが、このPCI Express仕様では１レーン構成の他に、２レーン、４レーン、８レーン、１２レーン、１６レーン、及び３２レーンの構成が定義されている。以下の説明では、このPCI Express仕様と同様に単独のシリアルインタフェースを１レーンと呼称するものとする。
【００６９】
図１６は、コード変換回路を含むシリアルインタフェース回路を８個組み合わせて１つの論理インタフェースを構成した例を示す。即ち、図１６において、伝送路１３３により接続された送信側装置１３１及び受信側装置１３２は、夫々８レーン構成である。送信側装置１３１は、バイト／ビット（Byte-to-Bit）分離回路６１、送信側コード変換回路６２−０〜６２−７、及び出力部６３−０〜６３−７を有する。送信側装置１３１内の各レーン＃０〜＃７の構成は同じであるため、レーン＃０の構成のみを示す。送信側コード変換回路６２−０〜６２−７は、夫々図９に示す送信側コード変換回路３１５と同じ構成を有する。出力部６３−０は、図９と同じ構成の並列直列変換回路３１６及び出力ドライバ３１７を有する。一方、受信側装置１３２は、入力部７１−０〜７１−７、受信側コード変換回路７２−０〜７２−７、及びビット／バイト（Bit-to-Byte）組み立て回路７３を有する。受信側装置１３２内の各レーン＃０〜＃７の構成は同じであるため、レーン＃０の構成のみを示す。入力部７１−０は、図９と同じ構成の入力レシーバ３２１及び直列並列変換回路３２３を有する。受信側コード変換回路７２−０〜７２−７は、夫々図９に示す受信側コード変換回路３２４と同じ構成を有する。尚、送信側制御回路及び受信側制御回路は、図９に示す送信側制御回路３１４及び受信側制御回路３２６と同じ構成のものとを使用可能であるため、図１６ではこれらの制御回路の図示及び説明は省略する。
【００７０】
上記実施例と共に説明したように、コード変換回路は９ビットのデータキャラクタを１０ビットのシンボルコードに変換する。このため、送信側装置１３１から見ると、１レーン当たり９ビットのパラレルデータバスを有するので、８レーン構成の場合は９ビット×８レーン＝７２ビットのパラレルデータバス、即ち、伝送路１３３を有する構成となる。
【００７１】
一方、従来び８Ｂ１０Ｂコード変換回路を有するシリアルインタフェースでは、伝送路の帯域幅が同等である場合、即ち、１レーンのシンボルコード長が本実施例と同様の１０ビットである場合、送信側装置からみて１レーン当たり８ビットのパラレルデータバスを有することになるので、８レーン構成の場合は８ビット×８レーン＝６４ビットのパラレルデータバスを有する構成となる。
【００７２】
分離回路５１及び組み立て回路７３は、複数レーンで構成されるシリアルインタフェース回路の場合に必要となる回路である。分離回路５１は、データ送信機（図示せず）からの７２ビット幅のパラレルデータバスを受け取り、９ビット毎に各レーンにパラレルデータを供給する機能を有する。又、組み立て回路７３は、分離回路と逆の操作、即ち、各レーンからの９ビットパラレルデータを７２ビット幅のパラレルデータバスに組み立てて、データ受信機（図示せず）に送信する機能を有する。
【００７３】
図１７は、レーン毎のビット割り当ての一例を説明する図である。図１７は、分離回路６１による、７２ビットパラレルデータバスの各ビットのレーン毎のビット定義を示す。図１７中、縦軸は各レーンで転送されるシンボルコード（この例では１０ビット幅）を示し、横軸は各レーン番号、即ち、シリアルバス番号を示す。又、図１７では、７２ビットパラレルデータバスのビット00をD00と表記している。一例を示すと、レーン番号＃０には、１ビットのコントロールビットCntlとデータビットD00〜D08を組み合わせて一組のシンボルコードとしている。この例では、有効データバス幅として７２ビット幅を確保することができる。尚、一組のシンボルコードに１ビットのコントロールビットCntlを定義する必要があるが、７２ビットパラレルデータのどのビットをどのレーンに割り当てるかは任意であり、図１７に示す以外のデータビットを割り当てても良いことは言うまでもない。
【００７４】
図１８は、７２ビットパラレルデータバスのビット割り当ての一例を説明する図である。図１８は、送信側装置１３１及び受信側装置１３２での７２ビットのパラレルデータバスのデータの定義を示す。例えば、７２ビットのパラレルデータバスのビットBit0〜Bit7（Bit0〜7）は、データバイト（Byte）Byte0と定義される。尚、７２ビットのパラレルデータバスのビットBit64〜Bit71（Bit64〜71）は、冗長ビット[0:7]と定義される。
【００７５】
高信頼性の情報処理装置では、８バイトのデータに対して８ビットの冗長ビットを割り当てて、耐故障性能を向上させることが一般的である。このように耐故障性能を向上する一例として、ＤＩＭＭ（Dual Inline Memory Module）が挙げられる。７２ビット幅のＤＩＭＭの利用形態では、図１８と同様に８バイトのデータ、即ち、６４ビットのデータに対してエラー訂正コード（ＥＣＣ：Error Correction Code）等によるチェックビット（ＣＢ：Check Bit）を８ビット割り当てることで、１ビット故障を修正し、更に、２ビット故障を検出することを可能として耐故障性能を向上させている。
【００７６】
上記の如く、８Ｂ１０Ｂコード変換回路を有する従来のシリアルインタフェース回路では、８レーン構成であっても６４ビット幅のパラレルデータバスしか実現できないので、ＤＩＭＭに入力する例えば７２ビットのＤＩＭＭデータを扱う場合、冗長ビットを廃棄するか、或いは、ＤＩＭＭデータを何らかの形式に変形する等の対策が必要である。
【００７７】
更に、従来の８Ｂ１０Ｂコード変換回路では、データキャラクタをルックアップテーブルを用いてシンボルコードに変換しているので、伝送路上の１ビットエラーが最大で４ビットのエラーになってしまう。一般的に、６４ビットのデータに対して８ビットのＣＢを割り当てた場合、３ビット以上の複数ビットの故障は検知できない可能性が高い。従って、７２ビットのＤＩＭＭデータを従来のシリアルインタフェース回路で転送した場合、伝送路上で１ビットエラーが発生すると、回復不能の多ビットエラーに変化してしまう可能性があった。
【００７８】
これに対して、本実施例の如きコード変換回路を有するシリアルインタフェース回路では、８レーン構成の場合、７２ビット幅のデータを扱うことが可能であるため、ＤＩＭＭデータの形式を変更せずに、そのままシリアルインタフェースバスに出力することが可能となる。又、伝送路上のシンボルコードの１ビットエラーは、Ｄキャラクタに変換した際、そのまま１ビットエラーとして認識されるので、ＥＣＣによりエラー回復が可能となり、より信頼性を向上することができる。
【００７９】
従来の８Ｂ１０Ｂ方式では、８ビットのデータキャラクタを送信するために１０ビットのシンボルに変換するので、２５％のバスのオーバーヘッドとなる。これに対し、上記各実施例では、９ビットのデータキャラクタを送信するために１ビットのコントロールビットを付加して１０ビットのシンボルに変換するので、バスのオーバーヘッドは１１％となる。伝送路の帯域幅で言うと、従来の８Ｂ１０Ｂ方式では帯域の２０％がオーバーヘッドになるのに対し、上記各実施例では１０％のオーバーヘッドとなり、従来の８Ｂ１０Ｂ方式と比較してオーバーヘッドが１０％減少し、バスの帯域幅を有効利用することができる。
【００８０】
又、上記各実施例によれば、データキャラクタと制御キャラクタを多重化して送信することが可能である。つまり、データキャラクタと１２種類以上の制御キャラクタを多重化して転送することが可能である。これにより、送信側装置及び受信側装置の各々では、従来と同様の制御回路を使用することが可能となる。
【００８１】
更に、上記各実施例によれば、クロック再生に必要なＡＣ特性を有するコード変換回路を提供することができる。つまり、１シンボル（この例では１０ビット幅）中に、必ず１回以上のビット値遷移（０から１、又は１から０に遷移すること）が含まれている。より具体的には、データキャラクタを送信する場合は、シンボルコードのビットCntl Bit，S_Bit0の値が必ず排他的な関係の値になり、更に、制御コードを送信する場合は、最低でもシンボルコードのビットS_Bit1，S_Bit2が必ず排他的な関係の値になる。これにより、１シンボル中に必ず１回以上はビット遷移が含まれることになり、従来と同様にビット値の遷移タイミングを用いて受信装置側でクロック再生が可能となる。
【００８２】
尚、従来は、最大で５ビットのランレングス（Run Length）であるのに対して、上記各実施例では最大で９ビットのランレングスとなる。このランレングスは、クロック再生機能と密接な関係があり、ランレングスが伸びた場合、クロック再生に悪影響が発生すると考えられる。
【００８３】
これに対しては、例えば特許文献４にて提案されている受信側装置の入力レシーバ内のイコライザを用いることで、ランレングスが５ビットから９ビットに伸びた場合でも安定して受信側装置内でクロックを再生できる。
【００８４】
更に、上記各実施例によれば、Ｄキャラクタの各ビットは、反転して用いられるか、或いは、そのままシンボルコードのビットとして用いることが可能であるため、従来のようなルックアップテーブルを用いる必要はない。これにより、コード変換に伴う回路量を減少させることが可能となり、コストを削減し、更には遅延時間を減少させることが可能となる。
【００８５】
又、従来は、ルックアップテーブルを用いるため、伝送路上での１ビットエラーは最大でデータキャラクタの５ビットエラーとして認識される。これに対し、上記各実施例によれば、ルックアップテーブルを用いることなく、データキャラクタは略そのままの形式でシンボルコードにアサインされる。従って、伝送路で発生した１ビットエラーは、そのまま１ビットエラーの形でデータキャラクタとして受信側装置で認識される。このように、従来は５ビットエラーであったものが１ビットエラーとなるので、エラーを補正する機会が増加してエラー耐性を向上することが可能となる。更に、上記実施例であれば、シンボルコード中には必ず１個以上の値「０」と１個以上の値「１」が含まれているので、伝送路上で全てのビットが０（All"0"）又は全てのビットが１（All"1"）となるようなバーストエラーをも検出可能となる。
【００８６】
以上説明したように、従来の８Ｂ１０Ｂ方式に対し、上記各実施例は一種の９Ｂ１０Ｂ方式とも言える方式を提供するものである。
【００８７】
以上、開示のデータ転送方法及びコード変換回路を実施例により説明したが、本発明は上記実施例に限定されるものではなく、本発明の範囲内で種々の変形及び改良が可能であることは言うまでもない。
【符号の説明】
【００８８】
２０      情報処理装置
２１−０〜２１−ｎ      システムボード
２２      クロスバ装置
２３−０〜２３−ｎ      ＩＯ装置
３１，１３１      送信側装置
３２，１３２      受信側装置
３３，１３３      伝送路
６２−０〜６２−７，３１５      送信側コード変換回路
７２−０〜７２−７，３２４      受信側コード変換回路
２１１−０〜２１１−ｍ      ＣＰＵ
２１２      メモリ
２１３      メモリ制御装置
【図１】
0005382117.tif 000002
【図２】
0005382117.tif 000003
【図３】
0005382117.tif 000004
【図４】
0005382117.tif 000005
【図５】
0005382117.tif 000006
【図６】
0005382117.tif 000007
【図７】
0005382117.tif 000008
【図８】
0005382117.tif 000009
【図９】
0005382117.tif 000010
【図１０】
0005382117.tif 000011
【図１１】
0005382117.tif 000012
【図１２】
0005382117.tif 000013
【図１３】
0005382117.tif 000014
【図１４】
0005382117.tif 000015
【図１５】
0005382117.tif 000016
【図１６】
0005382117.tif 000017
【図１７】
0005382117.tif 000018
【図１８】
0005382117.tif 000019