(57)【特許請求の範囲】
【請求項１】
周波数差調整データパケットをデータパケットに所定の送信間隔で挿入し、所定の第１のクロックに従って送信する送信手段と、上記送信手段を制御する第１の制御手段とを備えた第１のシリアル通信装置と、
所定の通信規格に準拠する伝送路を介して上記データパケットを受信し、所定の第２のクロックに従って処理するときに、上記第１のクロックと上記第２のクロックとの周波数差を吸収するように上記周波数差調整データパケットのデータ長を調整する受信手段と、上記受信手段を制御する第２の制御手段とを備えた第２のシリアル通信装置とを備えたシリアル通信システムにおいて、
上記第２の制御手段は、上記周波数差調整データパケットの正常受信時の受信間隔を検出して上記第１の制御手段に送信し、
上記第１の制御手段は、上記送信された周波数差調整データパケットの正常受信時の受信間隔に基づいて、上記第２のシリアル通信装置が上記データパケットを正常に受信できるように、上記送信間隔を変更することを特徴とするシリアル通信システム。
【請求項２】
上記周波数差調整データパケットは、所定の周波数差調整用キャラクタを含み、
上記受信手段は、上記周波数差調整データパケットを受信して格納し、当該周波数差調整データパケットから上記周波数差調整用キャラクタを削除し、又は上記周波数差調整データパケットに上記周波数差調整用キャラクタを挿入して出力することにより上記周波数差調整データパケットのデータ長を調整するエラスティックバッファを備え、上記エラスティックバッファがオーバーフローしているか、若しくはアンダーフローしているかの受信監視情報を出力し、
上記第２の制御手段は、上記出力された受信監視情報を受信して記憶手段に格納し、上記格納された受信監視情報を読み出して上記第１の制御手段に送信し、
上記第１の制御手段は、上記第２の制御手段から送信された受信監視情報に基づいて、上記エラスティックバッファがオーバーフローしているときは上記送信間隔を短くする一方、上記エラスティックバッファがアンダーフローしているときは上記送信間隔を長くすることを特徴とする請求項１記載のシリアル通信システム。
【請求項３】
上記第１の制御手段は、上記通信規格によって規定された送信間隔の範囲内で、上記送信間隔を変更することを特徴とする請求項１又は２記載のシリアル通信システム。
【請求項４】
上記第１の制御手段は、上記通信規格によって規定された送信間隔の範囲外で、上記送信間隔を変更することを特徴とする請求項１又は２記載のシリアル通信システム。
【請求項５】
上記受信監視情報は、上記送信手段からのデータパケットを異常受信しているときのエラー検出情報を含み、
上記第１の制御手段は、上記エラー検出情報に基づいて、上記送信間隔を短くすることを特徴とする請求項１乃至４のうちのいずれか１つに記載のシリアル通信システム。
【請求項６】
上記第２の制御手段は、初期化シーケンス時、定期的な所定のタイミング、及び上記第１及び第２のシリアル通信装置間で通信中にエラーが発生したときに、上記受信手段から出力された受信監視情報を受信して記憶手段に格納することを特徴とする請求項１乃至５のうちのいずれか１つに記載のシリアル通信システム。
【請求項７】
上記第２の制御手段は、スペクトラム拡散クロックの変調周波数に対応する周期で、又は、上記第１及び第２のシリアル通信装置間のシリアル転送速度に対応する周期で、上記受信手段から出力された受信監視情報を受信して記憶手段に格納することを特徴とする請求項１乃至６のうちのいずれか１つに記載のシリアル通信システム。
【請求項８】
上記第１のシリアル通信装置は、上記第２のシリアル通信装置から受信した２つの上記周波数差調整データパケットを含むループバックパケットを折り返して上記第２のシリアル通信装置に返信するためのループバック回路を備え、
上記第２の制御手段は、上記ループバックパケットの２つの周波数差調整データパケット間の間隔を複数通りに変更して、上記ループバックパケットを上記第１のシリアル通信装置のループバック回路に送信して、当該ループバック回路からのループバックパケットを受信し、上記受信手段から出力された受信監視情報を受信して記憶手段に格納することを特徴とする請求項１乃至７のうちのいずれか１つに記載のシリアル通信システム。
【請求項９】
上記第２の制御手段は、
上記第１及び第２のシリアル通信装置間で通信可能でありかつ第１及び第２のシリアル通信装置間でデータ転送が行われているときに、上記データ転送を行わないように制御し、
上記第１及び第２のシリアル通信装置間で通信可能であるときの初期化シーケンスの実行時、及び上記第１及び第２のシリアル通信装置間で通信可能でありかつ第１及び第２のシリアル通信装置間でデータ転送が行われていないときに、上記ループバックパケットを送信することを特徴とする請求項８記載のシリアル通信システム。
【請求項１０】
上記第１の制御手段は、上記第２のシリアル通信装置の記憶手段に格納されている受信監視情報を読み出して送信するように、上記第２のシリアル通信装置の第２の制御手段に対して要求するリードデータパケットを上記第２のシリアル通信装置の第２の制御手段に送信し、
上記第２の制御手段は、上記リードデータパケットに応答して、上記記憶手段に格納されている受信監視情報を読み出して上記第１の制御手段に送信することを特徴とする請求項２乃至９のうちのいずれか１つに記載のシリアル通信システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えばＰＣＩ（Peripheral Component Interconnection）Ｅｘｐｒｅｓｓ、ＵＳＢ３．０（Universal Serial Bus Version 3.0）、ＳＡＴＡ（Serial Advanced Technology Attachment）、Ｆｉｂｒｅ  Ｃｈａｎｎｅｌ、Ｇｉｇａｂｉｔ  Ｅｔｈｅｒｎｅｔ、ｉｎｆｉｎｉＢａｎｄ、又はＩＥＥＥ  １３９４などの規格に準拠して高速シリアル通信を行うシリアル通信システムに関する。
【背景技術】
【０００２】
ＰＣＩ  Ｅｘｐｒｅｓｓは、ＰＣＩに続く「第三世代のＰＣ用インターフェース規格」と位置づけられ、２．５Ｇｂｐｓのシリアル信号伝送、ポイント・ツー・ポイントつまりバス構造を有しない分岐しない信号接続経路、プロトコルを使用したデータ通信、及びソフトウエアのＰＣＩ互換性などの特徴を有している。そして、ＰＣＩ  Ｅｘｐｒｅｓｓは、パーソナルコンピュータのボード上のＬＳＩ間での通信、ボード間の通信、さらに、ケーブルによる短距離の通信にも使用されている（非特許文献１〜３及び特許文献１〜３参照。）。ＰＣＩ  Ｅｘｐｒｅｓｓは高速シリアルインターフェースであり、入出力インターフェースである。
【０００３】
図８は、ＰＣＩ  Ｅｘｐｒｅｓｓ規格に準拠して高速シリアル通信を行うルートコンプレックスデバイス１００とエンドポイントデバイス２００とを備えた従来技術に係るシリアル通信システムの構成を示すブロック図である。図８において、ルートコンプレックスデバイス１００とエンドポイントデバイス２００とは、それぞれ通常の動作状態（Ｌ０ステート）にあり、ＰＣＩ  Ｅｘｐｒｅｓｓ規格に準拠するリンク伝送路３００を介してデータパケットを送受信する。ここで、ルートコンプレックスデバイス１００は、リンクコントローラ１０１と、送信部１０３及び受信部１０４を備えたＰＨＹ回路１０２とを備えて構成される。リンクコントローラ１０１は、ＰＣＩ  ＥｘｐｒｅｓｓのＭＡＣ層（Media Access Layer）の信号を伝送するＬＳＩである。また、ＰＨＹ回路１０２は、ＰＣＩ  Ｅｘｐｒｅｓｓの物理層のフィジカルコーディングサブレイヤの信号を伝送するインターフェース回路のＬＳＩである。リンクコントローラ１０１とＰＨＹ回路１０２とは、ＰＩＰＥ（PHY Interface for the PCI Express Architecture）インターフェース規格（非特許文献４参照。以下、ＰＩＰＥという。）に準拠するパラレル信号伝送路であるＰＩＰＥ伝送路１０５を介して互いに接続されている。さらに、エンドポイントデバイス２００は、ルートコンプレックスデバイス１００と同様に、リンクコントローラ２０１と、送信部２０３及び受信部２０４を備えたＰＨＹ回路２０２とを備えて構成され、リンクコントローラ２０１とＰＨＹ回路２０２とは、ＰＩＰＥ伝送路２０５を介して互いに接続されている。
【０００４】
図８において、送信部１０３は、リンクコントローラ１０１からのパケットを受け取り、送信バッファに貯める。そして、送信バッファから出力されたパケットには、マルチプレクサにより、パケットの始まりと終わりを示すためのキャラクタであるフレーミング・シンボルが追加される。さらに、バイト・ストライピング機構は、フレーミング・シンボルが追加されたパケットを、利用可能なレーンにバイト単位で振り分ける。各レーンに振り分けられたパケットは、スクランブルされた後に８ｂ／１０ｂエンコーダによって１０ビットキャラクタに変換され、変換後の１０ビットキャラクタはパラレル・シリアル変換器によってシリアルのビット列に変換され、リンク伝送路３００に差動信号として出力される。送信部２０３もまた、送信部１０３と同様に動作する。
【０００５】
ここで、送信部１０３及び２０３において、バイト・ストライピング機構は、各レーンに振り分けられたパケットに対して、定期的にＳＫＩＰオーダード・セット（以下、ＳＫＰＯＳという。）８０を挿入する。図９は、図８の送信部１０３及び２０３から送信されるＳＫＩＰＯＳ８０のフォーマットを示すブロック図である。図９に示すように、ＳＫＩＰＯＳ８０は、１個のＣＯＭ（Ｃｏｍｍａ）キャラクタとそれに続く３個のＳＫＰ（Ｓｋｉｐ）キャラクタとで構成されている。ここで、ＣＯＭキャラクタは、レーンとリンクと初期化と管理に使われるキャラクタであり、ＳＫＰキャラクタは、２つのポート間のビット・レート差の調整又はクロック周波数差を吸収する目的で使われるキャラクタである。
【０００６】
送信部１０３と受信部２０４とはそれぞれ別のクロックに従って動作しているために、クロックに周波数差があると受信部２０４でデータのオーバーフロー（データ過多）又はアンダーフロー（データ不足）が発生する可能性がある。送信部２０３と受信部１０４との間でも同様の問題が生じる可能性がある。このような現象を防止するために、送信部１０３及び２０３において、予め送信するパケットにＳＫＩＰＯＳ８０を定期的に挿入しておき、送信部１０３のクロック周波数が受信部２０４のクロック周波数より高いときは受信部１０３でＳＫＰキャラクタを削除し、逆に、送信部１０３のクロック周波数が受信部２０４のクロック周波数より低いときは受信部１０３でＳＫＰキャラクタを挿入することで送受信の速度を調節する。ＳＫＩＰＯＳ８０は、送信部１０３及び２０３で使用され、送信データにＳＫＰキャラクタを予め挿入する機能を実現する。
【０００７】
また、図８において、受信部２０４では、受信された差動信号はクロック・データ・リカバリによってクロック再生され、アナログ信号からシリアルのディジタル信号に変換される。このシリアルのビット列はシリアル・パラレル変換され、エラスティックバッファを介して８ｂ／１０ｂデコーダに送られる。さらに、８ｂ／１０ｂデコーダからの出力信号に対して、デスクランブル処理及びバイト・アンストライピング処理が行われ、フレーミングのために付加されていたシンボルが除去され、バッファを介してリンクコントローラ２０１に出力される。受信部１０４もまた、受信部２０４と同様に動作する。
【０００８】
ここで、受信部１０４及び２０４内のエラスティックバッファでは、上述したＳＫＰキャラクタの挿入及び削除が行われる。図１０は、図８の受信部１０４及び２０４のエラスティックバッファから出力されるＳＫＩＰＯＳ９０ａ〜９０ｅの各フォーマットを示すブロック図である。図１０に示すように、送信部１０３と受信部２０４との間の周波数差、及び送信部２０３と受信部１０４との間の周波数差に応じて、ＳＫＰキャラクタが挿入され、又は、削除され、エラスティックバッファからＳＫＩＰＯＳ９０ａ〜９０ｅのうちのいずれか１つが出力される。以下、ＳＫＩＰＯＳ９０ａ〜９０ｅを区別しない場合は、ＳＫＩＰＯＳ９０と記載する。
【０００９】
非特許文献２において、ＳＫＩＰＯＳ８０の送受信のルールは以下の通りである。
（１）通常状態において、ＳＫＩＰＯＳ８０の送信間隔は、１１８０シンボル期間から１５３８シンボル期間までの間である。
（２）通常状態において、受信側は、ＳＫＩＰＯＳ８０の平均間隔が１１８０シンボル期間から１５３８シンボル期間までの間の場合は、これを受信して処理できなければならない。
（３）受信側は、ＳＫＩＰＯＳ８０が連続する場合にも、これを受信して処理できなければならない。
（４）受信側は、そのデバイスで規定されている最大のペイロードサイズMax_Payload_Sizeが伝送された場合にも、受信して処理できなければならない。ＳＫＩＰＯＳ８０の最大の間隔Ｎ（キャラクタ）は、Ｎ＝１５３８＋（Max_Payload_Size＋２６）である。例えば、最大のペイロードサイズMax_Payload_Sizeが４０９６の場合、Ｎ＝１５３８＋４０９６＋２６＝５６６０である。
【００１０】
なお、ＵＳＢ３．０に関しても、ＰＣＩ  Ｅｘｐｒｅｓｓと同様に、ＳＫＩＰＯＳを用いた送信側と受信側のクロック周波数差の調整が行われる。ただし、ＵＳＢ３．０とＰＣＩ  Ｅｘｐｒｅｓｓとでは、ＳＫＩＰＯＳの送信間隔の規格値は互いに異なる。
【発明の概要】
【発明が解決しようとする課題】
【００１１】
ＰＣＩ  Ｅｘｐｒｅｓｓに準拠したデバイスは、任意の対向デバイス（例えば、図８のルートコンプレックスデバイス１００に対するエンドポイントデバイス２００、又はエンドポイントデバイス２００に対するルートコンプレックスデバイス１００である。）に接続される。
【００１２】
図１１は、図８のシリアル通信システムで用いられるエンベデッドクロック方式での基準クロックＲＥＦＣＬＫの供給方法を示すリストである。図１１に示すように、ＰＣＩ  Ｅｘｐｒｅｓｓでは、エンベデッドクロック方式のシリアル通信が行われるが、送信側と受信側で共通のクロックを用いるか否か（クロック共通又はクロック分離）、及びスペクトラム拡散クロック（Spread Spectrum Clocking（以下、ＳＳＣという。））を用いるか否かによって、４種類の基準クロックＲＥＦＣＬＫの供給方法が存在する。しかしながら、両方のデバイスでこれらの４種類の基準クロックＲＥＦＣＬＫの供給方法のうちのどの供給方法が用いられるかは、予め分からない。
【００１３】
また、図１２は、ＰＣＩ  Ｅｘｐｒｅｓｓで用いられるスペクトラム拡散クロックを示すグラフである。ＰＣＩ  Ｅｘｐｒｅｓｓの基本仕様では、クロック周波数については規定されていないが、その安定性についてはユニット・インターバル（ＵＩ）の範囲として規定されている。図１２に示すように、ＰＣＩ  Ｅｘｐｒｅｓｓでは、変調周波数は３０ｋＨｚから３３ｋＨｚの範囲である。また、最大周波数偏移は１．５ＭＨｚ以下であり、中央値までのジッターの最大値は０．１２５ＵＩである。ＳＳＣを採用する場合、クロックは、図１２のＰＣＩ  Ｅｘｐｒｅｓｓの規格に準拠するように発生されるが、このとき、規格からどの程度のマージンを持って発生されるかは分からない。
【００１４】
以上説明したように、ＰＣＩ  Ｅｘｐｒｅｓｓでは、送信側と受信側とでクロック周波数は互いに異なり、このクロック周波数差を吸収するために上述したＳＫＩＰＯＳ８０が用いられる。しかしながら、帯域を最大限に利用した通信を行うとき、ＳＫＩＰＯＳ８０がオーバーヘッドになり、通信効率を上げられないことがあった。
【００１５】
本発明の目的は以上の問題点を解決し、従来技術に比較して通信効率を向上できるシリアル通信システムを提供することにある。
【課題を解決するための手段】
【００１６】
本発明に係るシリアル通信システムは、
周波数差調整データパケットをデータパケットに所定の送信間隔で挿入し、所定の第１のクロックに従って送信する送信手段と、上記送信手段を制御する第１の制御手段とを備えた第１のシリアル通信装置と、
所定の通信規格に準拠する伝送路を介して上記データパケットを受信し、所定の第２のクロックに従って処理するときに、上記第１のクロックと上記第２のクロックとの周波数差を吸収するように上記周波数差調整データパケットのデータ長を調整する受信手段と、上記受信手段を制御する第２の制御手段とを備えた第２のシリアル通信装置とを備えたシリアル通信システムにおいて、
上記第２の制御手段は、上記周波数差調整データパケットの正常受信時の受信間隔を検出して上記第１の制御手段に送信し、
上記第１の制御手段は、上記送信された周波数差調整データパケットの正常受信時の受信間隔に基づいて、上記第２のシリアル通信装置が上記データパケットを正常に受信できるように、上記送信間隔を変更することを特徴とする。
【００１７】
上記シリアル通信システムにおいて、
上記周波数差調整データパケットは、所定の周波数差調整用キャラクタを含み、
上記受信手段は、上記周波数差調整データパケットを受信して格納し、当該周波数差調整データパケットから上記周波数差調整用キャラクタを削除し、又は上記周波数差調整データパケットに上記周波数差調整用キャラクタを挿入して出力することにより上記周波数差調整データパケットのデータ長を調整するエラスティックバッファを備え、上記エラスティックバッファがオーバーフローしているか、若しくはアンダーフローしているかの受信監視情報を出力し、
上記第２の制御手段は、上記出力された受信監視情報を受信して記憶手段に格納し、上記格納された受信監視情報を読み出して上記第１の制御手段に送信し、
上記第１の制御手段は、上記第２の制御手段から送信された受信監視情報に基づいて、上記エラスティックバッファがオーバーフローしているときは上記送信間隔を短くする一方、上記エラスティックバッファがアンダーフローしているときは上記送信間隔を長くすることを特徴とする。
【００１８】
また、上記シリアル通信システムにおいて、
上記第１の制御手段は、上記通信規格によって規定された送信間隔の範囲内で、上記送信間隔を変更することを特徴とする。
【００１９】
さらに、上記シリアル通信システムにおいて、
上記第１の制御手段は、上記通信規格によって規定された送信間隔の範囲外で、上記送信間隔を変更することを特徴とする。
【００２０】
またさらに、上記シリアル通信システムにおいて、
上記受信監視情報は、上記送信手段からのデータパケットを異常受信しているときのエラー検出情報を含み、
上記第１の制御手段は、上記エラー検出情報に基づいて、上記送信間隔を短くすることを特徴とする。
【００２１】
また、上記シリアル通信システムにおいて、
上記第２の制御手段は、初期化シーケンス時、定期的な所定のタイミング、及び上記第１及び第２のシリアル通信装置間で通信中にエラーが発生したときに、上記受信手段から出力された受信監視情報を受信して記憶手段に格納することを特徴とする。
【００２２】
さらに、上記シリアル通信システムにおいて、
上記第２の制御手段は、スペクトラム拡散クロックの変調周波数に対応する周期で、又は、上記第１及び第２のシリアル通信装置間のシリアル転送速度に対応する周期で、上記受信手段から出力された受信監視情報を受信して記憶手段に格納することを特徴とする。
【００２３】
またさらに、上記シリアル通信システムにおいて、
上記第１のシリアル通信装置は、上記第２のシリアル通信装置から受信した２つの上記周波数差調整データパケットを含むループバックパケットを折り返して上記第２のシリアル通信装置に返信するためのループバック回路を備え、
上記第２の制御手段は、上記ループバックパケットの２つの周波数差調整データパケット間の間隔を複数通りに変更して、上記ループバックパケットを上記第１のシリアル通信装置のループバック回路に送信して、当該ループバック回路からのループバックパケットを受信し、上記受信手段から出力された受信監視情報を受信して記憶手段に格納することを特徴とする。
【００２４】
また、上記シリアル通信システムにおいて、
上記第２の制御手段は、
上記第１及び第２のシリアル通信装置間で通信可能でありかつ第１及び第２のシリアル通信装置間でデータ転送が行われているときに、上記データ転送を行わないように制御し、
上記第１及び第２のシリアル通信装置間で通信可能であるときの初期化シーケンスの実行時、及び上記第１及び第２のシリアル通信装置間で通信可能でありかつ第１及び第２のシリアル通信装置間でデータ転送が行われていないときに、上記ループバックパケットを送信することを特徴とする。
【００２５】
さらに、上記シリアル通信システムにおいて、
上記第１の制御手段は、上記第２のシリアル通信装置の記憶手段に格納されている受信監視情報を読み出して送信するように、上記第２のシリアル通信装置の第２の制御手段に対して要求するリードデータパケットを上記第２のシリアル通信装置の第２の制御手段に送信し、
上記第２の制御手段は、上記リードデータパケットに応答して、上記記憶手段に格納されている受信監視情報を読み出して上記第１の制御手段に送信することを特徴とする。
【発明の効果】
【００２６】
本発明に係るシリアル通信システムによれば、第１の制御手段は、第２の制御手段から送信された周波数差調整データパケットの正常受信時の受信間隔に基づいて、第２のシリアル通信装置がデータパケットを正常に受信できるように、周波数差調整データパケットの送信間隔を変更するので、従来技術に比較して通信効率を向上できる。
【図面の簡単な説明】
【００２７】
【図１】ルートコンプレックスデバイス１とエンドポイントデバイス２とを備えた本発明の実施形態に係るシリアル通信システムの構成を示すブロック図である。
【図２】図１のシリアル通信システムによって実行されるＳＫＩＰＯＳ送信間隔調整処理を示すフローチャートである。
【図３】図１のＳＫＩＰＯＳ受信制御部５３によって実行されるＳＫＩＰＯＳ送信間隔調整処理の第１の部分を示すフローチャートである。
【図４】図１のＳＫＩＰＯＳ受信制御部５３によって実行されるＳＫＩＰＯＳ送信間隔調整処理の第２の部分を示すフローチャートである。
【図５】図１のシリアル通信システムにおいて送受信されるループバックパケット８１のフォーマットを示すブロック図である。
【図６】図１のシリアル通信システムにおいて、通信中にエラスティックバッファがオーバーフロー又はアンダーフローしたときのＳＫＩＰＯＳ送信間隔調整処理を示すフローチャートである。
【図７】ＳＡＴＡにおいて用いられるＡＬＩＧＮプリミティブのフォーマットを示すブロック図である。
【図８】ＰＣＩ  Ｅｘｐｒｅｓｓ規格に準拠して高速シリアル通信を行うルートコンプレックスデバイス１００とエンドポイントデバイス２００とを備えた従来技術に係るシリアル通信システムの構成を示すブロック図である。
【図９】図８の送信部１０３及び２０３から送信されるＳＫＩＰオーダード・セット８０のフォーマットを示すブロック図である。
【図１０】図８の受信部１０４及び２０４のエラスティックバッファから出力されるＳＫＩＰオーダード・セット９０ａ〜９０ｅの各フォーマットを示すブロック図である。
【図１１】図８のシリアル通信システムで用いられるエンベデッドクロック方式での基準クロックＲＥＦＣＬＫの供給方法を示すリストである。
【図１２】ＰＣＩ  Ｅｘｐｒｅｓｓで用いられるスペクトラム拡散クロックを示すグラフである。
【発明を実施するための形態】
【００２８】
以下、本発明に係る実施形態について図面を参照して説明する。なお、以下の実施形態において、同様の構成要素については同一の符号を付している。
【００２９】
図１は、ルートコンプレックスデバイス１とエンドポイントデバイス２とを備えた本発明の実施形態に係るシリアル通信システムの構成を示すブロック図である。図１において、ルートコンプレックスデバイス１とエンドポイントデバイス２とは、ＰＣＩ  Ｅｘｐｒｅｓｓ規格に準拠するリンク伝送路３を介してデータパケットを送受信する。ここで、ルートコンプレックスデバイス１は、上流側のコンポーネントであって、リンクコントローラ１０と、ＰＨＹ回路２０と、アプリケーション層回路４０とを備えて構成される。ここで、アプリケーション層回路４０は、リンクコントローラ１０の動作を制御するためのソフトウエアのプログラムを実行する回路である。また、リンクコントローラ１０は、ＰＣＩ  ＥｘｐｒｅｓｓのＭＡＣ層（Media Access Layer）の信号を伝送するＬＳＩであって、ＳＫＩＰＯＳ送信制御部１１と、レジスタ１２と、ＳＫＩＰＯＳ受信制御部１３と、連動して切り換えられるスイッチＳＷ１及びＳＷ２とを備えて構成される。さらに、ＰＨＹ回路２０は、ＰＣＩ  Ｅｘｐｒｅｓｓの物理層のフィジカルコーディングサブレイヤの信号を伝送するインターフェース回路のＬＳＩである。リンクコントローラ１０とＰＨＹ回路２０とは、ＰＩＰＥインターフェース規格（非特許文献４参照。）に準拠するパラレル信号伝送路であるＰＩＰＥ伝送路３０を介して互いに接続されており、リンクコントローラ１０は、ＰＨＹ回路２０を制御する。
【００３０】
また、図１において、ＰＨＹ回路２０は、ＰＬＬ（Phase Locked Loop）回路２２を備えた送信部２１と、受信部２３とを備えて構成される。送信部２１は、ＰＬＬ回路２２によって発生されたクロックに従って動作する。送信部２１は、リンクコントローラ１０からのデータパケットを受け取り、送信バッファに貯める。そして、送信バッファから出力されたデータパケットには、マルチプレクサにより、データパケットの始まりと終わりを示すためのキャラクタであるフレーミング・シンボルが追加される。さらに、バイト・ストライピング機構は、フレーミング・シンボルが追加されたデータパケットを、利用可能な複数Ｎ個のレーンにバイト単位で振り分け、振り分けられた各データパケットに、レジスタ１２に格納されているＳＫＩＰＯＳ８０の送信間隔（以下、ＳＫＩＰＯＳ送信間隔という。）で、図９のＳＫＩＰＯＳ８０を挿入する。各レーンに振り分けられたデータパケットは、スクランブルされた後に、８ｂ／１０ｂエンコーダによって１０ビットキャラクタに変換され、変換後の１０ビットキャラクタはパラレル・シリアル変換器によってシリアルのビット列に変換され、リンク伝送路３に差動信号として出力される。
【００３１】
さらに、図１において、受信部２３は、ＰＬＬ回路２５と、複数Ｎ個のレーンにそれぞれ対応して設けられた受信回路２４−１〜２４−Ｎと、バイト・アンストライピング２６とを備えて構成される。ここで、受信部２３は、ＰＬＬ回路２５によって発生されたクロックに従って動作する。受信回路２４−ｎ（ｎ＝１，２，…，Ｎ）はそれぞれ、差動レシーバと、シリアル・パラレル変換器と、エラスティックバッファと、８ｂ／１０ｂデコーダと、デスクランブラとを備えて構成される。ここで、入力される差動信号は、差動レシーバによって受信され、クロック・データ・リカバリによってクロック再生され、アナログ信号からシリアルのディジタル信号に変換される。このシリアルのビット列はシリアル・パラレル変換器によってパラレル信号に変換されて、エラスティックバッファを介して８ｂ／１０ｂデコーダに出力される。ここで、エラスティックバッファは、ＰＬＬ回路６２によって発生されたクロックとＰＬＬ回路２５によって発生されたクロックとの周波数差を吸収するように、入力されるパラレル信号に含まれるＳＫＩＰＯＳ８０のデータ長を調整する。具体的には、エラスティックバッファは、ＳＫＩＰＯＳ８０を受信して格納し、ＳＫＩＰＯＳ８０からＳＫＰキャラクタを削除し、又はＳＫＩＰＯＳ８０にＳＫＰキャラクタを挿入してＳＫＩＰＯＳ９０として出力することによりＳＫＩＰＯＳ８０のデータ長を調整する。８ｂ／１０ｂデコーダは、入力されるパラレル信号を８ｂ／１０デコードしてデスクランブラに出力する。デスクランブラは、入力される８ｂ／１０デコード後のデータを、送信側と同一のアルゴリズムを用いてデスクランブルして、バイト・アンストライピング２６に出力する。最後に、バイト・アンストライピング２６は、各受信回路２４−１〜２４−ＮからのＮ個のデータを１つのデータ列に変換し、フレーミング・シンボル及びＳＫＩＰＯＳ９０などの制御キャラクタを削除した後にリンクコントローラ１０に出力する。なお、各受信回路２４−ｎの８ｂ／１０ｂデコーダは、８ｂ／１０ｂデコード時に検出したディスパリティ・エラー（伝送途中でビット値が逆のビット値に変化した場合などに起きる。）及び１０ｂキャラクタとして定義されていない無効な１０ｂキャラクタなどのエラーを、送信部２１からのデータパケットを異常受信しているときのエラー検出情報として、リンクコントローラ１０に出力する。
【００３２】
また、図１において、エンドポイントデバイス２は、下流側のコンポーネントであって、リンクコントローラ５０と、ＰＨＹ回路６０とを備えて構成される。ここで、リンクコントローラ５０は、ＰＣＩ  ＥｘｐｒｅｓｓのＭＡＣ層の信号を伝送するＬＳＩであって、ＳＫＩＰＯＳ送信制御部５１と、レジスタ５２と、ＳＫＩＰＯＳ受信制御部５３と、連動して切り換えられるスイッチＳＷ３及びＳＷ４とを備えて構成される。さらに、ＰＨＹ回路６０は、ＰＣＩ  Ｅｘｐｒｅｓｓの物理層のフィジカルコーディングサブレイヤの信号を伝送するインターフェース回路のＬＳＩである。リンクコントローラ５０とＰＨＹ回路６０とは、ＰＩＰＥインターフェース規格に準拠するパラレル信号伝送路であるＰＩＰＥ伝送路７０を介して互いに接続されている。リンクコントローラ５０は、ＰＨＹ回路６０を制御する。
【００３３】
また、図１において、ＰＨＹ回路６０は、ＰＬＬ回路６２を備えた送信部６１と、受信部６３とを備えて構成される。送信部６１は、ルートコンプレックスデバイス１の送信部２１と同様に構成され、ＰＬＬ回路６２によって発生されたクロックに従って、送信部２１と同様に動作して受信部２３にデータパケットを送信する。また、受信部６３は、ルートコンプレックスデバイス１の受信部２３と同様に、ＰＬＬ回路６５と、複数Ｎ個のレーンにそれぞれ対応して設けられた受信回路６４−１〜６４−Ｎと、バイト・アンストライピング６６とを備えて構成され、ＰＬＬ回路６５によって発生されたクロックに従って、受信部２３と同様に動作し、送信部２１からデータパケットを受信する。
【００３４】
なお、各受信回路６４−ｎは、受信監視情報をリンクコントローラ５０に出力し、リンクコントローラ５０は、各受信回路６４−ｎから出力された受信監視情報をレジスタ５２に格納する。ここで、受信監視情報は、各受信回路６４−ｎによって検出されたＳＫＩＰＯＳ８０の正常受信時の受信間隔と、各受信回路６４−ｎのエラスティックバッファがオーバーフローしているか、若しくはアンダーフローしているかの情報と、各受信回路６４−ｎの８ｂ／１０ｂデコーダが８ｂ／１０ｂデコード時に検出した送信部２１からのデータパケットを異常受信しているときのエラー検出情報（ディスパリティ・エラー及び無効な１０ｂキャラクタなどの情報）とを含む。
【００３５】
図２は、図１のシリアル通信システムによって実行されるＳＫＩＰＯＳ送信間隔調整処理を示すフローチャートである。なお、図２の処理中は、スイッチＳＷ１，ＳＷ２，ＳＷ３，ＳＷ４はそれぞれ、接点ａ側に切り換えられている。まず始めに、ステップＳ１において、アプリケーション層回路４０が、レジスタ１２にデフォルトのＳＫＩＰＯＳ送信間隔を格納する。ここで、デフォルトのＳＫＩＰＯＳ送信間隔は、ＰＣＩ  Ｅｘｐｒｅｓｓで規定されている範囲（１１８０シンボル期間から１５３８シンボル期間まで）内の値である。次に、ステップＳ２において、アプリケーション層回路４０が、ＳＫＩＰＯＳ送信制御部１１を、ＳＫＩＰＯＳ送信間隔をレジスタ１２から読み出して、読み出したＳＫＩＰＯＳ送信間隔でＳＫＩＰＯＳ８０を送信するように制御する。これにより、図９のＳＫＩＰＯＳ８０が、レジスタ１２から読み出されたＳＫＩＰＯＳ送信間隔で、エンドポイントデバイス２に送信される。送信されたＳＫＩＰＯＳ８０は、受信回路６４−１〜６４−Ｎによって受信される。そして、各受信回路６４−ｎにおいて、ＰＬＬ回路２２によって生成されたクロックとＰＬＬ回路６５によって生成されたクロックとの周波数差に起因してエラスティックバッファがオーバーフロー及びアンダーフローしないように、ＳＫＩＰＯＳ８０にＳＫＰキャラクタが挿入され、又は削除される（図１０参照。）。そして、ステップＳ３において、ＳＫＩＰＯＳ受信制御部５３が、受信部６３から受信監視情報を受信する。
【００３６】
次に、ステップＳ４において、ＳＫＩＰＯＳ受信制御部５３は、ＳＫＩＰＯＳ８０がエンドポイントデバイス２により正常に受信されたか否かを、受信した受信監視情報に基づいて判断し、ＹＥＳのときはステップＳ６に進む一方、ＮＯのときはステップＳ５に進む。ステップＳ５では、ＳＫＩＰＯＳ受信制御部５３は、受信監視情報を異常受信結果としてレジスタ５２に格納する。一方、ステップＳ６では、ＳＫＩＰＯＳ受信制御部５３は、受信監視情報を正常受信結果としてレジスタ５２に格納する。ステップＳ５又はＳ６に続いて、ステップＳ７において、アプリケーション層回路４０が、レジスタリードパケットＲｄを送信するイベントが発生したか否かを判断し、ＹＥＳのときはステップＳ８に進む一方、ＮＯのときはステップＳ７の処理を繰り返す。ここで、ステップＳ７における「イベント」は、図１のシリアル通信システムの初期化シーケンス時、定期的な所定のタイミング、及びデータ通信中にエラーが多発したときである。
【００３７】
ステップＳ８において、アプリケーション層回路４０が、レジスタ５２に格納された受信監視情報を読み出して送信することを要求するためのレジスタリードパケットＲｄをエンドポイントデバイス２に送信するように、ＳＫＩＰＯＳ送信制御部２１を制御する。これに応答して、ＳＫＩＰＯＳ送信制御部２１はレジスタリードパケットＲｄをエンドポイントデバイス２に送信する。さらに、これに応答して、ＳＫＩＰＯＳ送信制御部５１が、レジスタ５２に格納された受信監視情報を読み出して、読み出された受信監視情報をルートコンプレックスデバイス１に送信する。次に、ステップＳ９において、ＳＫＩＰＯＳ受信制御部５３は、ＳＫＩＰＯＳ送信制御部５１により送信された受信監視情報に基づいて、受信回路６４−１〜６４−Ｎの各エラスティックバッファがオーバーフロー又はアンダーフローしているか否かを判断し、ＹＥＳのときはステップＳ１０に進む一方、ＮＯのときはステップＳ１１に進む。そして、ステップＳ１０において、アプリケーション層回路４０が、ＳＫＩＰＯＳ送信間隔を変更して、変更後のＳＫＩＰＯＳ送信間隔をレジスタ１２に格納して、ステップＳ２に戻る。具体的には、受信回路６４−１〜６４−Ｎの各エラスティックバッファがオーバーフローしているときは、ＳＫＩＰＯＳ送信間隔を現在のＳＫＩＰＯＳ送信間隔より短くする一方、受信回路６４−１〜６４−Ｎの各エラスティックバッファがアンダーフローしているときは、ＳＫＩＰＯＳ送信間隔を現在のＳＫＩＰＯＳ送信間隔より長くする。一方、ステップＳ１１では、アプリケーション層回路４０が、ＳＫＩＰＯＳ送信間隔は最適値であると判断して、レジスタ１２内のＳＫＩＰＯＳ送信間隔を変更せずに、ＳＫＩＰＯＳ送信間隔調整処理を終了する。
【００３８】
本実施形態によれば、リンク伝送路３を介して互いに接続された一方のデバイス１は送信部２１と受信部２３とを備え、他方のデバイスは送信部６１と受信部６３とを備える。また、受信部２３の各受信回路２４−ｎは、ＰＬＬ回路６２によって発生されるクロックとＰＬＬ回路２５によって発生されるクロックとの間の周波数差を吸収するためのエラスティックバッファを備え、受信部６３の各受信回路６４−ｎは、ＰＬＬ回路２２によって発生されるクロックとＰＬＬ回路６５によって発生されるクロックとの間の周波数差を吸収するためのエラスティックバッファを備える。本実施形態において、送信部２１及び６１はそれぞれ、Ｎ個のレーンデータを出力するマルチレーン機能を実装しており、ＰＣＩ  Ｅｘｐｒｅｓｓで規定されているＴＳ（Training Sequence)又はＳＫＩＰＯＳ８０というパケットデータを送信することにより、ＴＳ又はＳＫＩＰＯＳ８０に含まれるＣＯＭキャラクタ（位相調整キャラクタである。）を利用して、各レーン間のスキューを調整する。通常のデータ転送において、送信部２１及び６１は、１個のＣＯＭキャラクタとそれに続く３個のＳＫＰキャラクタとを含むＳＫＩＰＯＳ８０を送信する。受信部２３及び６３のエラスティックバッファでは、上述した周波数差に応じて、ＳＫＰキャラクタの数が調整される。
【００３９】
図１のシリアル通信システムでは、ルートコンプレックスデバイス１とエンドポイントデバイス２との間でエンベデッドクロック方式の高速シリアル通信が行われる。このとき、ＰＬＬ回路２２，２５，６１又は６５によって発生されたシリアル通信に用いられる基準クロックの周波数の設定値は互いに同一だが、実際には、互いに数百ｐｐｍ程度異なる可能性がある。また、スペクトラム拡散クロック発生器の使用が可能である。これらのクロックの周波数は、ＰＣＩ  Ｅｘｐｒｅｓｓで規定された値よりマージンがある可能性が高い。また、基準クロックが対向デバイスと自デバイスで共通の場合と別の場合がある。そのため、シリアルデータの周波数差が生じ、周期的にＳＫＩＰＯＳ８０のような周波数差を調整するためのデータパケットを送信する必要がある。両方デバイスで共通のクロックを用い、かつＳＳＣを用いない場合は、上述した周波数差は比較的少ないため、ＳＫＩＰＯＳ８０を送信する頻度は減らすことによりオーバーヘッドを減らせ、転送効率の向上が可能となる。また、ＳＳＣの規格値にもマージンがあることが考えられる。
【００４０】
本実施形態では、ＰＬＬ回路２２によって発生されるデータパケットの送信処理に用いられるクロックと、ＰＬＬ回路６５によって発生されるデータパケットの受信処理に用いられるクロックとの間に周波数差があり、この周波数差を各受信回路６４−ｎ内のエラスティックバッファ（周波数差吸収バッファである。）を用いて吸収するシリアル通信システムにおいて、ＳＫＩＰＯＳ受信制御部５３は、周波数差調整データパケット又は頻度補償コードであるＳＫＩＰＯＳ８０の正常受信時の受信間隔と、各受信回路６４−ｎのエラスティックバッファがオーバーフローしているか、若しくはアンダーフローしているかの情報と、各受信回路６４−ｎの８ｂ／１０ｂデコーダが８ｂ／１０ｂデコード時に検出した送信部２１からのデータパケットを異常受信しているときのエラー検出情報とを含む受信監視情報を、ＳＫＩＰＯＳ受信制御部１３にする。ＳＫＩＰＯＳ受信制御部１３は、受信した受信監視情報に基づいて、ＳＫＩＰＯＳ送信間隔を調整する。このため、通常のデータ通信時にＳＫＩＰＯＳ送信間隔及び送信頻度を最低限の間隔まで減らせるため、従来技術に比較してオーバーヘッドが減らせ、通信データの転送効率を上げることができる。
【００４１】
次に、図３及び図４を参照して、図１のＳＫＩＰＯＳ受信制御部５３によって実行されるＳＫＩＰＯＳ送信間隔調整処理を説明する。図３及び図４は、図１のＳＫＩＰＯＳ受信制御部５３によって実行されるＳＫＩＰＯＳ送信間隔調整処理を示すフローチャートである。なお、図４のステップＳ３８〜Ｓ４０の各処理は、ルートコンプレックスデバイス１のＳＫＩＰＯＳ受信制御部１３によって実行される。また、図３の処理開始時に、スイッチＳＷ１，ＳＷ２，ＳＷ３，ＳＷ４はそれぞれ、接点ａ側に切り換えられている。まず始めに、ステップＳ２１において、リンク伝送路３の状態がＬ０ステートであるか否かが判断され、ＹＥＳのときはステップＳ２２に進む一方、ＮＯのときはＳＫＩＰＯＳ送信間隔調整処理を終了する。ここで、Ｌ０ステートは、通常のオペレーション状態で、制御パケット及びデータパケットを送受信できる状態である。
【００４２】
ステップＳ２２において、ルートコンプレックスデバイス１が、ループバック回路構成を備えているか否かが判断され、ＹＥＳのときはステップＳ２３に進む一方、ＮＯのときはステップＳ２６に進む。ここで、ループバック回路構成とは、エンドポイントデバイス２から受信したパケットを折り返してエンドポイントデバイス２に返信するための回路構成である。具体的には、ルートコンプレックスデバイス１のスイッチＳＷ１及びＳＷ２（図１参照。）をそれぞれ接点ｂ側に切り換えたとき、受信部２３によって受信されたパケットは、ＰＩＰＥ伝送路３０と、スイッチＳＷ２の接点ｂと、スイッチＳＷ１の接点ｂと、ＰＩＰＥ伝送路３０と、送信部２１とを介してエンドポイントデバイス２に返信される。また、エンドポイントデバイス２のスイッチＳＷ３及びＳＷ４（図１参照。）をそれぞれ接点ｂ側に切り換えたとき、受信部６３によって受信されたパケットは、ＰＩＰＥ伝送路７０と、スイッチＳＷ３の接点ｂと、スイッチＳＷ４の接点ｂと、ＰＩＰＥ伝送路７０と、送信部７１とを介してルートコンプレックスデバイス１に返信される。
【００４３】
次に、ステップＳ２３において、データ転送が行われている状態であるか否かが判断され、ＹＥＳのときはＳ２４に進む一方、ＮＯのときはステップＳ２５に進む。ステップＳ２４では、互いにデータ転送を行わない状態に切り換えるか、あるいは、互いにデータ転送していない状態になるまで待機して、ステップＳ２５に進む。そして、ステップＳ２５では、ループバックパケット８１内の２つのＳＫＩＰＯＳ８０の送信間隔を変更して、ループバックパケット８１を送信するように、ＳＫＩＰＯＳ送信制御部５１を制御する。図５は、図１のシリアル通信システムにおいて送受信されるループバックパケット８１のフォーマットを示すブロック図である。図５に示すように、ループバックパケット８１は、トリガーパケット８２と、ＳＫＩＰＯＳ８０と、バーストデータ８３と、ＳＫＩＰＯＳ８０と、エンドパケット８４とを、この順序で含む。バーストデータ８３のデータ長を変更することにより、レジスタ１２又は５２に格納されたＳＫＩＰＯＳ送信間隔を変更することなく、ループバックパケット８１内の２つのＳＫＩＰＯＳ８０の送信間隔を変更できる。
【００４４】
ステップＳ２５における具体的な処理内容は、例えば、以下の通りである。まず始めに、スイッチＳＷ１及びＳＷ２はそれぞれ接点ｂ側に切り換えられる。そして、ＳＫＩＰＯＳ送信制御部５１は、ループバックパケット８１内の２つのＳＫＩＰＯＳ８０の間隔を複数通りに変更して、ループバックパケット８１をルートコンプレックスデバイス１に送信し、ルートコンプレックスデバイス１からのループバックパケット８１を受信するとともに、各受信回路６４−ｎから出力された受信監視情報を受信してレジスタ５２に格納する。最後に、スイッチＳＷ１及びＳＷ２はそれぞれ接点ａ側に切り換えられる。従って、図２のステップＳ８と同様の処理を実行することにより、ＳＫＩＰＯＳ受信制御部１３は、レジスタ５２に格納された複数通りのＳＫＩＰＯＳ８０の間隔毎の受信監視情報を読み出し、読み出した複数通りのＳＫＩＰＯＳ８０の間隔毎の受信監視情報に基づいて、ＳＫＩＰＯＳ送信間隔の許容値を識別することができる。具体的には、ループバックパケット８１がエンドポイントデバイス２によって正常受信されたときのＳＫＩＰＯＳ８０の間隔を、ＳＫＩＰＯＳ送信間隔の許容値として用いることができる。
【００４５】
また、ステップＳ２５における具体的な処理内容の他の例は、以下の通りである。まず始めに、スイッチＳＷ１及びＳＷ２はそれぞれ接点ｂ側に切り換えられる。そして、ＳＫＩＰＯＳ送信制御部５１は、受信データのエラーがなくなるまで、ループバックパケット８１内の２つのＳＫＩＰＯＳ８０の間隔を変更する。エラーがなくなれば、両デバイス１及び２においてともにＳＫＩＰＯＳ送信間隔に問題がないと判断する。最後に、スイッチＳＷ１及びＳＷ２はそれぞれ接点ａ側に切り換えられる。また、エンドポイントデバイス２のＳＫＩＰＯＳ受信制御部５３でＳＫＩＰＯＳ送信間隔の許容値を検出可能であれば、検出された許容値をレジスタ５２に格納し、レジスタ５２に格納された許容値をルートコンプレックスデバイス１から読み出すことができる。ＳＫＩＰＯＳ送信間隔の確認を実施するタイミングは、図２のステップＳ７と同様に、初期化シーケンス時、定期的な所定のタイミング、及びイベント（通信エラーの多発など）が起こったタイミングである。
【００４６】
次に、ステップＳ２６において、受信回路６４−１〜６４−Ｎにより受信された全受信有効信号が安定して有効となっているか否かが判断され、ＹＥＳのときはステップＳ３０に進む一方、ＮＯのときはステップＳ２７に進む。ここで、受信回路６４−１〜６４−Ｎにより受信された全受信有効信号が安定して有効となっている状態とは、受信回路６４−１〜６４−Ｎから、データパケットを異常受信しているときのエラー検出情報が出力されない状態である。各受信有効信号が安定して有効となっていない場合、シンボルロック状態（受信側でシリアルデータをシンボル毎にパラレルデータに変換できる状態）ではない可能性があり、実質の転送レートは悪くなる。ステップＳ２７では、ＳＫＩＰＯＳ送信間隔の規格を遵守するモードか否かが判断され、ＹＥＳのときは、ステップＳ２９に進む一方、ＮＯのときはステップＳ２８に進む。なお、ステップＳ２７における判断処理のために、規格を遵守する必要があるかを示すイネーブル信号を予め発生しておき、当該イネーブル信号に基づいて判断処理を行う。ステップＳ２８において、シンボルロックが外れている可能性があるので、規格の範囲外までＳＫＩＰＯＳ送信間隔を短く設定してＳＫＩＰＯＳ８０を送信するように、ＳＫＩＰＯＳ送信制御部５１を制御してステップＳ２６に戻る。一方、ステップＳ２９において、シンボルロックが外れている可能性があるので、規格の範囲外までＳＫＩＰＯＳ送信間隔を短く設定してＳＫＩＰＯＳ８０を送信するように、ＳＫＩＰＯＳ送信制御部５１を制御してステップＳ２６に戻る。以上説明したステップＳ２６〜Ｓ２９の処理により、ＳＫＩＰＯＳ送信間隔を短くしてＳＫＩＰＯＳ８０の送信頻度を上げることにより、ＳＫＩＰＯＳ８０内のＣＯＭシンボルのシンボルロック時の有効信号が安定するときのＳＫＩＰＯＳ送信間隔を識別可能である。
【００４７】
次に、ステップＳ３０において、エラスティックバッファから出力された各ＳＫＩＰＯＳ９０に含まれるＳＫＰキャラクタの数が適切か否かが判断され、ＹＥＳのときはステップＳ３４に進む一方、ＮＯのときはステップＳ３１に進む。さらに、ステップＳ３４において、各受信回路６４−１〜６４−Ｎのエラスティックバッファがオーバーフロー又はアンダーフローしているか否かが判断され、ＹＥＳのときはステップＳ３１に進む一方、ＮＯのときはステップＳ３５に進む。
【００４８】
ステップＳ３１では、ルートコンプレックスデバイス１及びエンドポイントデバイス２がそれぞれ、ＳＫＩＰＯＳ送信間隔のエラーをデータパケットを用いて通知可能な回路構成を備えているか否かが判断され、ＹＥＳのときはステップＳ３３に進む一方、ＮＯのときはステップＳ３２に進む。ステップＳ３２において、レジスタ５２に、現在のＳＫＩＰＯＳ送信間隔ではエラーが発生することを示す受信監視情報を格納してステップＳ３８に進む。また、ステップＳ３３において、ＳＫＩＰＯＳ８０の受信状態を含むデータパケットをルートコンプレックスデバイス１に送信することにより、受信監視情報をルートコンプレックスデバイス１に送信して、ステップＳ３９に進む。
【００４９】
次に、ステップＳ３５では、ルートコンプレックスデバイス１及びエンドポイントデバイス２がそれぞれ、ＳＫＩＰＯＳ送信間隔のエラーをデータパケットを用いて通知可能な回路構成を備えているか否かが判断され、ＹＥＳのときはステップＳ４１に進む一方、ＮＯのときはステップＳ３６に進む。そして、ステップＳ４１において、ＳＫＩＰＯＳ８０の受信状態を含むデータパケットをルートコンプレックスデバイス１に送信することにより、受信監視情報をルートコンプレックスデバイス１に送信して、ステップＳ３９に進む。また、ステップＳ３６では、温度センサを用いる方法など別の方法で、ＳＫＩＰＯＳ８０の受信エラーを認識できるか否かが判断され、ＹＥＳのときはステップＳ３９に進む一方、ＮＯのときはステップＳ３７に進む。
【００５０】
ステップＳ３７において、レジスタ５２に、現在のＳＫＩＰＯＳ送信間隔ではエラーが発生しないことを示す受信監視情報を格納し、続いて、ステップＳ３８において、ルートコンプレックスデバイス１のＳＫＩＰＯＳ受信制御部１３が、レジスタ５２に格納された受信監視情報を読み出す。さらに、ステップＳ３９において、ルートコンプレックスデバイス１のＳＫＩＰＯＳ受信制御部１３が、受信監視情報に基づいて、ＳＫＩＰＯＳ送信間隔の最適値を決定する。最後に、ステップＳ４０において、ルートコンプレックスデバイス１のＳＫＩＰＯＳ受信制御部１３が、決定されたＳＫＩＰＯＳ送信間隔の最適値を、レジスタ１２に格納して、ＳＫＩＰＯＳ送信間隔調整処理を終了する。
【００５１】
図３及び図４の処理によれば、ステップＳ３０において、各ＳＫＩＰＯＳ９０に含まれるＳＫＰキャラクタの数が適切か否かを判断し、適切でない場合には、エラーが発生していることをルートコンプレックスデバイス１に通知できる。このとき、ハードウエア又はソフトウエアを用いてエラー状態を通知可能な場合（ステップＳ３１においてＹＥＳの場合）には、ステップＳ３３において即座にＳＫＩＰＯＳ８０の受信状態を含むデータパケットを送り、ルートコンプレックスデバイス１にエラー状態を通知する。一方、エラー状態を通知可能でない場合（ステップＳ３１においてＮＯの場合）には、ステップＳ３２において、エラー状態であることを示す受信監視情報をレジスタ５２に格納しておき、ルートコンプレックスデバイス１により読み取り可能であるようにする。以上の動作は、ハードウエア同様にソフトウエアでも実現することも可能である。
【００５２】
なお、図４において、ステップＳ３１においてＹＥＳの場合、ステップＳ３２に進んでもよい。また、ステップＳ３５においてＹＥＳの場合、及びステップＳ３６においてＹＥＳの場合は、ステップＳ３７に進んでもよい。
【００５３】
また、図３及び図４の処理はＳＫＩＰＯＳ受信制御部５３によって実行されたが、本発明はこれに限らず、ＳＫＩＰＯＳ受信制御部１３によって同様に実行されてもよい。
【００５４】
次に、図６を参照して、図１のシリアル通信システムにおいて、通信中にエラスティックバッファがオーバーフロー又はアンダーフローしたときのＳＫＩＰＯＳ送信間隔調整処理を説明する。まず始めに、ステップＳ５０において、アプリケーション層回路４０が、レジスタ１２にデフォルトのＳＫＩＰＯＳ送信間隔を格納する。次に、ステップＳ５１において、アプリケーション層回路４０が、ＳＫＩＰＯＳ送信制御部１１を、ＳＫＩＰＯＳ送信間隔をレジスタ１２から読み出して、読み出したＳＫＩＰＯＳ送信間隔でＳＫＩＰＯＳ８０を送信するように制御する。次に、ステップＳ５２において、ＳＫＩＰＯＳ受信制御部５３は、エンドポイントデバイス２において受信エラーが多発するか否かを判断し、ＹＥＳのときはステップＳ５３に進む一方、ＮＯのときはＳＫＩＰＯＳ送信間隔調整処理を終了する。
【００５５】
ステップＳ５３において、ルートコンプレックスデバイス１及びエンドポイントデバイス２はそれぞれ、ＳＫＩＰＯＳ送信間隔のエラーをデータパケットを用いて通知可能な回路構成を備えているか否かが判断され、ＹＥＳのときはステップＳ５７に進む一方、ＮＯのときはステップＳ５４に進む。ステップＳ５７では、アプリケーション層回路４０が、レジスタリードパケットＲｄをエンドポイントデバイス２に送信するように送信部２１を制御し、これに応答して、ＳＫＩＰＯＳ受信制御部５３が、レジスタ５２に格納された受信監視情報を読み出して、読み出された受信監視情報を含むパケットをルートコンプレックスデバイス１に送信する。引き続き、ステップＳ５８において、ＳＫＩＰＯＳ送信間隔をデフォルトのＳＫＩＰＯＳ送信間隔に戻す、又は現在のＳＫＩＰＯＳ送信間隔より短くして、レジスタ１２に格納し、ステップＳ５９において、図２のＳＫＩＰＯＳ送信間隔調整処理を実行して、通信中にエラスティックバッファがオーバーフロー又はアンダーフローしたときのＳＫＩＰＯＳ送信間隔調整処理を終了する。ただし、ステップＳ５９では、図２のＳＫＩＰＯＳ送信間隔調整処理のステップＳ２以降の処理が実行される。
【００５６】
一方、ステップＳ５４では、ルートコンプレックスデバイス１が、ＮＡＫ及びエラーメッセージの頻度を観測するための回路を備えているか否かが判断され、ＹＥＳのときはステップＳ５５に進む一方、ＮＯのときはステップＳ５６に進む。ステップＳ５５では、ＮＡＫ及びエラーメッセージの頻度が変化するか否かが判断され、ＹＥＳのときはステップＳ５８に進む一方、ＮＯのときは、ＳＫＩＰＯＳ送信間隔調整処理を終了する。また、ステップＳ５６において、エンドポイントデバイス２の受信状態を定期的に確認して受信エラーの状態を確認できたか否かが判断され、ＹＥＳのときはステップＳ５８に進む一方、ＮＯのときはＳＫＩＰＯＳ送信間隔調整処理を終了する。なお、ステップＳ５４においてＹＥＳのときはステップＳ５６に進んでもよい。
【００５７】
ＳＫＩＰＯＳ送信間隔を調べる動作は、初期化シーケンス時、定期的な所定のタイミング、又は所定のイベント毎に実施するように選択できるようにする。イベント毎に実施する場合には、特に図６のフローチャートを適用できる。図６において、データ通信中にエラーが多発した場合、エラーが多発したことを、エンドポイントデバイス２からルートコンプレックスデバイス１に、データパケットを用いて通知する。これに応答して、ルートコンプレックスデバイス１はＳＫＩＰＯＳ送信間隔を変更する（ステップＳ５８）。一方、エラーを通知するデータパケットを認識できない回路構成の場合（ステップＳ５３でＮＯの場合）、ルートコンプレックスデバイス１が、ＮＡＫ及びエラーメッセージの頻度を観測可能な回路構成を有しているときは、上記頻度が変われば、ＳＫＩＰＯＳ送信間隔を変えることができる。また、ルートコンプレックスデバイス１が、ＮＡＫ及びエラーメッセージの頻度を観測可能な回路構成を有していないときは、エンドポイントデバイス２の受信状態を定期的に確認して、エラー状態を確認する。
【００５８】
本実施形態の特徴及び効果を要約すると以下の通りである。
【００５９】
本実施形態によれば、ルートコンプレックスデバイス１の送信部２１で用いられるクロックとエンドポイントデバイス２の受信部６３で用いられるクロックとの間で周波数差があるシリアル通信システムにおいて、ＳＫＩＰＯＳ受信制御部５３は周波数差調整データパケットであるＳＫＩＰＯＳ８０の受信状態を検出して、検出した受信状態を、受信監視情報としてルートコンプレックスデバイス１に通知できる。また、ルートコンプレックスデバイス１では、通知された受信監視情報に基づいてＳＫＩＰＯＳ送信間隔を調整できる。このため、通常のデータ通信時にＳＫＩＯＰＯＳ８０の送信頻度を減らせるため、従来技術に比較してオーバーヘッドが減らせ、通信データの転送効率を上げることができる。
【００６０】
また、図３のＳＫＩＰＯＳ送信間隔調整処理において、リンク伝送路３が正常かつデータ通信可能状態（Ｌ０ステート）であり、かつ各受信有効信号が安定して有効になっている場合に、各ＳＫＩＰＯＳ９０に含まれるＳＫＰキャラクタの数を監視し、さらに、エラスティックバッファがオーバーフローまたはアンダーフローしているか否かを監視する。そして、各受信有効信号が安定して有効ではないとき、又はエラスティックバッファがオーバーフローまたはアンダーフローしている場合には、以下のように制御する。
（１）ＳＫＩＰＯＳ送信間隔のエラーをデータパケットを用いて通知可能であるときは、当該データパケットを用いて受信監視情報をルートコンプレックスデバイス１に送信する。
（２）ＳＫＩＰＯＳ送信間隔のエラーを、データパケットを用いて通知可能できないときは、受信監視情報をレジスタ５２に格納する。これにより、ルートコンプレックスデバイス１が、ソフトウエアによりレジスタ５２から受信監視情報を読み出すことができる。
【００６１】
さらに、図２に示すように、アプリケーション層回路４０がレジスタ１２にＳＫＩＰＯＳ送信間隔を書き込むことにより、ＳＫＩＰＯＳ送信間隔を変更してＳＫＩＰＯＳ８０をエンドポイントデバイス２に送信できる。また、エンドポイントデバイス２は、受信監視情報を格納するレジスタ５２を備え、アプリケーション層回路４０は、レジスタ５２に格納された受信監視情報を読み出してＳＫＩＰＯＳ送信間隔を変更できる。本実施形態によれば、図２の処理をソフトウエアで実現でき、比較的柔軟な制御が可能である。なお、図２の処理を、ＳＫＩＰＯＳ送信制御部１１のハードウエアで実現してもよい。これにより、ソフトウエアで実現する場合に比較して、高速にＳＫＩＰＯＳ送信間隔を調整でき、リアルタイム性が高くなる。
【００６２】
またさらに、図３のステップＳ２７〜Ｓ２９に示すように、規格の範囲内又は範囲外でＳＫＩＰＯＳ送信間隔を動的に変更できる。なお、規格を遵守しない場合には、規格を遵守する場合よりも転送効率を上げることができる。
【００６３】
また、図３のステップＳ２６においてＮＯの場合、ＳＫＩＰＯＳ送信間隔を短くするので、ＳＫＩＰＯＳ９０内のＣＯＭキャラクタでシンボルロックして有効信号が安定するときのＳＫＩＰＯＳ送信間隔を識別できる。これにより、受信有効信号に基づいて、安定動作するときのＳＫＩＰＯＳ送信間隔を識別でき、結果として従来技術に比較して通信効率を向上できる。
【００６４】
さらに、初期化シーケンス時、定期的な所定のタイミング、及び通常のパケット通信時にエラーが発生したときにＳＫＩＰＯＳ送信間隔を調整するので、通信負荷の影響への信頼性を高めることが可能である。
【００６５】
またさらに、図３のステップＳ２１〜ステップＳ２５に示すように、ルートコンプレックスデバイス１がループバック回路構成を備えている場合、データ通信可能な状態（Ｌ０ステート）において、ループバックパケット８１を用いる。また、ループバックパケット８１を用いる処理は、通信可能な状態での初期化シーケンス、又は通信可能な状態でかつ双方のデバイス１及び２でデータ転送が行われていない状態で行われる。さらに、データ転送が行われているときは、データ転送を行わないように制御する。これにより、バーストデータ８０と２つのＳＫＩＰＯＳ８０の送出間隔を変えたループバックパケット８１が、対向デバイスを回って戻ってきたとき、対向デバイスのレジスタに格納された受信監視情報に基づいて、ＳＫＩＰＯＳ送信間隔の許容値を識別できる。これにより、ＳＫＩＰＯＳ送信間隔を互いのデバイス１及び２で変更せずに処理が可能であるため、ループバックパケット８１を用いない場合に比較して、迅速に確認動作を実施できる。また、ＳＫＩＰＯＳ送信制御部５１から送信して、ＳＫＩＰＯＳ受信制御部５３で受信するまでの確認間隔を短くすることで、確認時間短縮が可能である。
【００６６】
変形例．
なお、通信中に対向デバイス１又は２から送られてくるＳＫＩＰＯＳ８０の平均の送信間隔が変わることにより、通知することができる回路構成を備えてもよい。また、温度センサを用いてエラー状態を検出する回路構成を備えてもよい。具体的には、温度センサを使用する場合は、データ転送時にエラーが発生しなかったときの温度の上限値を予めレジスタ１２及び５２に格納しておき、温度センサによって検出された温度がレジスタ１２又は５２に格納された値よりも高いときに、ＳＫＩＰＯＳ送信間隔を変更するように構成してもよい。
【００６７】
また、リンクコントローラ５０は、初期化シーケンス時、定期的な所定のタイミング、及びルートコンプレックスデバイス１とエンドポイントデバイス２との間で通信中にエラーが発生したときに、各受信回路６４−ｎから出力された受信監視情報を受信してレジスタ５２に格納してもよい。さらに、ＳＫＩＰＯＳ送信間隔を変更した後に対向デバイスの状況を確認する場合、リンクコントローラ５０は、ＳＳＣの変調周波数に対応する周期で、各受信回路６４−ｎから出力された受信監視情報を受信してレジスタ５２に格納してもよい。このとき、ＳＳＣの変調周波数の初期値は、規格値として、ソフトウエアで設定可能なものとしてもよい。例えば、ＳＳＣの変調周波数に応じて、ＳＫＩＰＯＳ８０間に受信検出する区間を定めることが可能な回路構成とすることにより、無駄な検出動作をしないようにできる。またさらに、リンクコントローラ５０は、シリアル転送速度に対応する周期で、各受信回路６４−ｎから出力された受信監視情報を受信してレジスタ５２に格納してもよい。
【００６８】
また、上流側のデバイスのＳＫＩＰＯＳ送信間隔がパケット通信で変更可能であれば、通信時でも変更して、上流側のデバイスのＳＫＩＰＯＳ送信間隔を変更して、最適値を認識することができる。
【００６９】
以上説明した実施形態では、ＰＣＩ  Ｅｘｐｒｅｓｓに準拠したシリアル通信システムについて説明したが、本発明はこれに限らず、ＵＳＢ３．０（非特許文献５参照。）、ＳＡＴＡ（非特許文献６参照。）、ＳＡＴＡ３．０、Ｆｉｂｒｅ  Ｃｈａｎｎｅｌ、Ｇｉｇａｂｉｔ  Ｅｔｈｅｒｎｅｔ、ｉｎｆｉｎｉＢａｎｄ、又は８ｂ／１０ｂエンコードを用いるＩＥＥＥ  １３９４などの規格に準拠して高速シリアル通信を行うシリアル通信システムに広く適用できる。特に、ＵＳＢでは、ＰＣＩ  Ｅｘｐｒｅｓｓと同様に、周波数差調整データパケットＳＫＰＯＳが用いられている。また、ＳＡＴＡでは、図７に示すように、周波数差調整データパケットとして、ＡＬＩＧＮプリミティブが用いられている。ＡＬＩＧＮプリミティブの機能はＳＫＩＰＯＳ８０の機能と実質的に同一である。ＡＬＩＧＮプリミティブは、ホストと他のデバイスと間のクロックのずれを調整するために２５６データワードごとに挿入される。受信側のクロックが遅い場合は、受信側でＡＬＩＧＮプリミティブを破棄することでクロックのずれを調整する。
【００７０】
また、ＰＣＩ  Ｅｘｐｒｅｓｓ２．０及びＳＡＴＡ３．０では、転送レートが変えられる仕様となっている（例えば、ＰＣＩ  Ｅｘｐｒｅｓｓ  ｇｅｎ２では、２．５ＧＴ／ｓから５ＧＴ／ｓ)ため、転送レートに応じて、ＳＫＩＰＯＳ送信間隔を確認可能な回路構成としてもよい。
【産業上の利用可能性】
【００７１】
以上説明したように、本発明に係るシリアル通信システムによれば、第１の制御手段は、第２の制御手段から送信された周波数差調整データパケットの正常受信時の受信間隔に基づいて、第２のシリアル通信装置がデータパケットを正常に受信できるように、周波数差調整データパケットの送信間隔を変更するので、従来技術に比較して通信効率を向上できる。
【符号の説明】
【００７２】
１…ルートコンプレックスデバイス、
２…エンドポイントデバイス、
３…リンク伝送路、
１０…リンクコントローラ、
１１…ＳＫＩＰＯＳ送信制御部、
１２…レジスタ、
１３…ＳＫＩＰＯＳ受信制御部、
２０…ＰＨＹ回路、
２１…送信部、
２２…ＰＬＬ回路、
２３…受信部、
２４−１〜２４−Ｎ…受信回路、
２５…ＰＬＬ回路、
２６…バイト・アンストライピング、
３０…ＰＩＰＥ伝送路、
４０…アプリケーション層回路、
５０…リンクコントローラ、
５１…ＳＫＩＰＯＳ送信制御部、
５２…レジスタ、
５３…ＳＫＩＰＯＳ受信制御部、
６０…ＰＨＹ回路、
６１…送信部、
６２…ＰＬＬ回路、
６３…受信部、
６４−１〜６４−Ｎ…受信回路、
６５…ＰＬＬ回路、
６６…バイト・アンストライピング、
７０…ＰＩＰＥ伝送路、
８０…ＳＫＩＰオーダード・セット。
【先行技術文献】
【特許文献】
【００７３】
【特許文献１】特表２００７−５１７３３４号公報。
【特許文献２】特開２００８−１７２６５７号公報。
【特許文献３】特開２００９−２２４９７７号公報。
【非特許文献】
【００７４】
【非特許文献１】荒井信隆ほか，「改訂新版ＰＣＩ  Ｅｘｐｒｅｓｓ入門講座」，電波新聞社，２００８年６月２０日改訂版発行。
【非特許文献２】PCI-SIG, “PCI  Express Base Specification Revision 2.0”, December 2006.
【非特許文献３】PCI-SIG, “PCI Express Card Electromechanical Specification Revision 2.0”, April 11, 2007.
【非特許文献４】Intel Corporation, “PHY Interface for the PCI Express Architecture Version 2.00”, July 21, 2007.
【非特許文献５】Hewlett-Packard Company et al., “Universal Serial Bus 3.0 Specification Revision 1.0”, November 12,2008.
【非特許文献６】Dell Computer Corporation et al., “Serial ATA II: Extensions to Serial ATA 1.0a  Revision 1.2”, August 27, 2004.
【図１】
0005545146.tif 000002
【図２】
0005545146.tif 000003
【図３】
0005545146.tif 000004
【図４】
0005545146.tif 000005
【図５】
0005545146.tif 000006
【図６】
0005545146.tif 000007
【図７】
0005545146.tif 000008
【図８】
0005545146.tif 000009
【図９】
0005545146.tif 000010
【図１０】
0005545146.tif 000011
【図１１】
0005545146.tif 000012
【図１２】
0005545146.tif 000013