シリアル通信システム
【課題】通信効率を向上できるシリアル通信システムを提供する。
【解決手段】送信部21は、データパケットに所定のSKIPOS送信間隔でSKIPオーダード・セット(SKIPOS)80を挿入して受信部60に送信する。各受信回路64−1〜64−Nのエラスティックバッファは、PLL回路22とPLL回路65の各クロックの周波数差を吸収するように、SKIPOS80にSKPキャラクタを挿入又は削除する。SKIPOS受信制御部53は、SKIPOS80の正常受信時の受信間隔を検出してルートコンプレックスデバイス1に送信し、SKIPOS送信制御部11は、上記送信されたSKIPOS80の正常受信時の受信間隔に基づいて、エンドポイントデバイス2がデータパケットを正常に受信できるように、SKIPOS送信間隔を変更する。
【解決手段】送信部21は、データパケットに所定のSKIPOS送信間隔でSKIPオーダード・セット(SKIPOS)80を挿入して受信部60に送信する。各受信回路64−1〜64−Nのエラスティックバッファは、PLL回路22とPLL回路65の各クロックの周波数差を吸収するように、SKIPOS80にSKPキャラクタを挿入又は削除する。SKIPOS受信制御部53は、SKIPOS80の正常受信時の受信間隔を検出してルートコンプレックスデバイス1に送信し、SKIPOS送信制御部11は、上記送信されたSKIPOS80の正常受信時の受信間隔に基づいて、エンドポイントデバイス2がデータパケットを正常に受信できるように、SKIPOS送信間隔を変更する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、例えばPCI(Peripheral Component Interconnection)Express、USB3.0(Universal Serial Bus Version 3.0)、SATA(Serial Advanced Technology Attachment)、Fibre Channel、Gigabit Ethernet、infiniBand、又はIEEE 1394などの規格に準拠して高速シリアル通信を行うシリアル通信システムに関する。
【背景技術】
【0002】
PCI Expressは、PCIに続く「第三世代のPC用インターフェース規格」と位置づけられ、2.5Gbpsのシリアル信号伝送、ポイント・ツー・ポイントつまりバス構造を有しない分岐しない信号接続経路、プロトコルを使用したデータ通信、及びソフトウエアのPCI互換性などの特徴を有している。そして、PCI Expressは、パーソナルコンピュータのボード上のLSI間での通信、ボード間の通信、さらに、ケーブルによる短距離の通信にも使用されている(非特許文献1〜3及び特許文献1〜3参照。)。PCI Expressは高速シリアルインターフェースであり、入出力インターフェースである。
【0003】
図8は、PCI Express規格に準拠して高速シリアル通信を行うルートコンプレックスデバイス100とエンドポイントデバイス200とを備えた従来技術に係るシリアル通信システムの構成を示すブロック図である。図8において、ルートコンプレックスデバイス100とエンドポイントデバイス200とは、それぞれ通常の動作状態(L0ステート)にあり、PCI Express規格に準拠するリンク伝送路300を介してデータパケットを送受信する。ここで、ルートコンプレックスデバイス100は、リンクコントローラ101と、送信部103及び受信部104を備えたPHY回路102とを備えて構成される。リンクコントローラ101は、PCI ExpressのMAC層(Media Access Layer)の信号を伝送するLSIである。また、PHY回路102は、PCI Expressの物理層のフィジカルコーディングサブレイヤの信号を伝送するインターフェース回路のLSIである。リンクコントローラ101とPHY回路102とは、PIPE(PHY Interface for the PCI Express Architecture)インターフェース規格(非特許文献4参照。以下、PIPEという。)に準拠するパラレル信号伝送路であるPIPE伝送路105を介して互いに接続されている。さらに、エンドポイントデバイス200は、ルートコンプレックスデバイス100と同様に、リンクコントローラ201と、送信部203及び受信部204を備えたPHY回路202とを備えて構成され、リンクコントローラ201とPHY回路202とは、PIPE伝送路205を介して互いに接続されている。
【0004】
図8において、送信部103は、リンクコントローラ101からのパケットを受け取り、送信バッファに貯める。そして、送信バッファから出力されたパケットには、マルチプレクサにより、パケットの始まりと終わりを示すためのキャラクタであるフレーミング・シンボルが追加される。さらに、バイト・ストライピング機構は、フレーミング・シンボルが追加されたパケットを、利用可能なレーンにバイト単位で振り分ける。各レーンに振り分けられたパケットは、スクランブルされた後に8b/10bエンコーダによって10ビットキャラクタに変換され、変換後の10ビットキャラクタはパラレル・シリアル変換器によってシリアルのビット列に変換され、リンク伝送路300に差動信号として出力される。送信部203もまた、送信部103と同様に動作する。
【0005】
ここで、送信部103及び203において、バイト・ストライピング機構は、各レーンに振り分けられたパケットに対して、定期的にSKIPオーダード・セット(以下、SKPOSという。)80を挿入する。図9は、図8の送信部103及び203から送信されるSKIPOS80のフォーマットを示すブロック図である。図9に示すように、SKIPOS80は、1個のCOM(Comma)キャラクタとそれに続く3個のSKP(Skip)キャラクタとで構成されている。ここで、COMキャラクタは、レーンとリンクと初期化と管理に使われるキャラクタであり、SKPキャラクタは、2つのポート間のビット・レート差の調整又はクロック周波数差を吸収する目的で使われるキャラクタである。
【0006】
送信部103と受信部204とはそれぞれ別のクロックに従って動作しているために、クロックに周波数差があると受信部204でデータのオーバーフロー(データ過多)又はアンダーフロー(データ不足)が発生する可能性がある。送信部203と受信部104との間でも同様の問題が生じる可能性がある。このような現象を防止するために、送信部103及び203において、予め送信するパケットにSKIPOS80を定期的に挿入しておき、送信部103のクロック周波数が受信部204のクロック周波数より高いときは受信部103でSKPキャラクタを削除し、逆に、送信部103のクロック周波数が受信部204のクロック周波数より低いときは受信部103でSKPキャラクタを挿入することで送受信の速度を調節する。SKIPOS80は、送信部103及び203で使用され、送信データにSKPキャラクタを予め挿入する機能を実現する。
【0007】
また、図8において、受信部204では、受信された差動信号はクロック・データ・リカバリによってクロック再生され、アナログ信号からシリアルのディジタル信号に変換される。このシリアルのビット列はシリアル・パラレル変換され、エラスティックバッファを介して8b/10bデコーダに送られる。さらに、8b/10bデコーダからの出力信号に対して、デスクランブル処理及びバイト・アンストライピング処理が行われ、フレーミングのために付加されていたシンボルが除去され、バッファを介してリンクコントローラ201に出力される。受信部104もまた、受信部204と同様に動作する。
【0008】
ここで、受信部104及び204内のエラスティックバッファでは、上述したSKPキャラクタの挿入及び削除が行われる。図10は、図8の受信部104及び204のエラスティックバッファから出力されるSKIPOS90a〜90eの各フォーマットを示すブロック図である。図10に示すように、送信部103と受信部204との間の周波数差、及び送信部203と受信部104との間の周波数差に応じて、SKPキャラクタが挿入され、又は、削除され、エラスティックバッファからSKIPOS90a〜90eのうちのいずれか1つが出力される。以下、SKIPOS90a〜90eを区別しない場合は、SKIPOS90と記載する。
【0009】
非特許文献2において、SKIPOS80の送受信のルールは以下の通りである。
(1)通常状態において、SKIPOS80の送信間隔は、1180シンボル期間から1538シンボル期間までの間である。
(2)通常状態において、受信側は、SKIPOS80の平均間隔が1180シンボル期間から1538シンボル期間までの間の場合は、これを受信して処理できなければならない。
(3)受信側は、SKIPOS80が連続する場合にも、これを受信して処理できなければならない。
(4)受信側は、そのデバイスで規定されている最大のペイロードサイズMax_Payload_Sizeが伝送された場合にも、受信して処理できなければならない。SKIPOS80の最大の間隔N(キャラクタ)は、N=1538+(Max_Payload_Size+26)である。例えば、最大のペイロードサイズMax_Payload_Sizeが4096の場合、N=1538+4096+26=5660である。
【0010】
なお、USB3.0に関しても、PCI Expressと同様に、SKIPOSを用いた送信側と受信側のクロック周波数差の調整が行われる。ただし、USB3.0とPCI Expressとでは、SKIPOSの送信間隔の規格値は互いに異なる。
【発明の概要】
【発明が解決しようとする課題】
【0011】
PCI Expressに準拠したデバイスは、任意の対向デバイス(例えば、図8のルートコンプレックスデバイス100に対するエンドポイントデバイス200、又はエンドポイントデバイス200に対するルートコンプレックスデバイス100である。)に接続される。
【0012】
図11は、図8のシリアル通信システムで用いられるエンベデッドクロック方式での基準クロックREFCLKの供給方法を示すリストである。図11に示すように、PCI Expressでは、エンベデッドクロック方式のシリアル通信が行われるが、送信側と受信側で共通のクロックを用いるか否か(クロック共通又はクロック分離)、及びスペクトラム拡散クロック(Spread Spectrum Clocking(以下、SSCという。))を用いるか否かによって、4種類の基準クロックREFCLKの供給方法が存在する。しかしながら、両方のデバイスでこれらの4種類の基準クロックREFCLKの供給方法のうちのどの供給方法が用いられるかは、予め分からない。
【0013】
また、図12は、PCI Expressで用いられるスペクトラム拡散クロックを示すグラフである。PCI Expressの基本仕様では、クロック周波数については規定されていないが、その安定性についてはユニット・インターバル(UI)の範囲として規定されている。図12に示すように、PCI Expressでは、変調周波数は30kHzから33kHzの範囲である。また、最大周波数偏移は1.5MHz以下であり、中央値までのジッターの最大値は0.125UIである。SSCを採用する場合、クロックは、図12のPCI Expressの規格に準拠するように発生されるが、このとき、規格からどの程度のマージンを持って発生されるかは分からない。
【0014】
以上説明したように、PCI Expressでは、送信側と受信側とでクロック周波数は互いに異なり、このクロック周波数差を吸収するために上述したSKIPOS80が用いられる。しかしながら、帯域を最大限に利用した通信を行うとき、SKIPOS80がオーバーヘッドになり、通信効率を上げられないことがあった。
【0015】
本発明の目的は以上の問題点を解決し、従来技術に比較して通信効率を向上できるシリアル通信システムを提供することにある。
【課題を解決するための手段】
【0016】
本発明に係るシリアル通信システムは、
周波数差調整データパケットをデータパケットに所定の送信間隔で挿入し、所定の第1のクロックに従って送信する送信手段と、上記送信手段を制御する第1の制御手段とを備えた第1のシリアル通信装置と、
所定の通信規格に準拠する伝送路を介して上記データパケットを受信し、所定の第2のクロックに従って処理するときに、上記第1のクロックと上記第2のクロックとの周波数差を吸収するように上記周波数差調整データパケットのデータ長を調整する受信手段と、上記受信手段を制御する第2の制御手段とを備えた第2のシリアル通信装置とを備えたシリアル通信システムにおいて、
上記第2の制御手段は、上記周波数差調整データパケットの正常受信時の受信間隔を検出して上記第1の制御手段に送信し、
上記第1の制御手段は、上記送信された周波数差調整データパケットの正常受信時の受信間隔に基づいて、上記第2のシリアル通信装置が上記データパケットを正常に受信できるように、上記送信間隔を変更することを特徴とする。
【0017】
上記シリアル通信システムにおいて、
上記周波数差調整データパケットは、所定の周波数差調整用キャラクタを含み、
上記受信手段は、上記周波数差調整データパケットを受信して格納し、当該周波数差調整データパケットから上記周波数差調整用キャラクタを削除し、又は上記周波数差調整データパケットに上記周波数差調整データパケットを挿入して出力することにより上記周波数差調整データパケットのデータ長を調整するエラスティックバッファを備え、上記エラスティックバッファがオーバーフローしているか、若しくはアンダーフローしているかの受信監視情報を出力し、
上記第2の制御手段は、上記出力された受信監視情報を受信して記憶手段に格納し、上記格納された受信監視情報を読み出して上記第1の制御手段に送信し、
上記第1の制御手段は、上記第2の制御手段から送信された受信監視情報に基づいて、上記エラスティックバッファがオーバーフローしているときは上記送信間隔を短くする一方、上記エラスティックバッファがアンダーフローしているときは上記送信間隔を長くすることを特徴とする。
【0018】
また、上記シリアル通信システムにおいて、
上記第1の制御手段は、上記通信規格によって規定された送信間隔の範囲内で、上記送信間隔を変更することを特徴とする。
【0019】
さらに、上記シリアル通信システムにおいて、
上記第1の制御手段は、上記通信規格によって規定された送信間隔の範囲外で、上記送信間隔を変更することを特徴とする。
【0020】
またさらに、上記シリアル通信システムにおいて、
上記受信監視情報は、上記送信手段からのデータパケットを異常受信しているときのエラー検出情報を含み、
上記第1の制御手段は、上記エラー検出情報に基づいて、上記送信間隔を短くすることを特徴とする。
【0021】
また、上記シリアル通信システムにおいて、
上記第2の制御手段は、初期化シーケンス時、定期的な所定のタイミング、及び上記第1及び第2のシリアル通信装置間で通信中にエラーが発生したときに、上記受信手段から出力された受信監視情報を受信して記憶手段に格納することを特徴とする。
【0022】
さらに、上記シリアル通信システムにおいて、
上記第2の制御手段は、スペクトラム拡散クロックの変調周波数に対応する周期で、又は、上記第1及び第2のシリアル通信装置間のシリアル転送速度に対応する周期で、上記受信手段から出力された受信監視情報を受信して記憶手段に格納することを特徴とする。
【0023】
またさらに、上記シリアル通信システムにおいて、
上記第1のシリアル通信装置は、上記第2のシリアル通信装置から受信した2つの上記周波数差調整データパケットを含むループバックパケットを折り返して上記第2のシリアル通信装置に返信するためのループバック回路を備え、
上記第2の制御手段は、上記ループバックパケットの2つの周波数差調整データパケット間の間隔を複数通りに変更して、上記ループバックパケットを上記第1のシリアル通信装置のループバック回路に送信して、当該ループバック回路からのループバックパケットを受信し、上記受信手段から出力された受信監視情報を受信して記憶手段に格納することを特徴とする。
【0024】
また、上記シリアル通信システムにおいて、
上記第2の制御手段は、
上記第1及び第2のシリアル通信装置間で通信可能でありかつ第1及び第2のシリアル通信装置間でデータ転送が行われているときに、上記データ転送を行わないように制御し、
上記第1及び第2のシリアル通信装置間で通信可能であるときの初期化シーケンスの実行時、及び上記第1及び第2のシリアル通信装置間で通信可能でありかつ第1及び第2のシリアル通信装置間でデータ転送が行われていないときに、上記ループバックパケットを送信することを特徴とする。
【0025】
さらに、上記シリアル通信システムにおいて、
上記第1の制御手段は、上記第2のシリアル通信装置の記憶手段に格納されている受信監視情報を読み出して送信するように、上記第2のシリアル通信装置の第2の制御手段に対して要求するリードデータパケットを上記第2のシリアル通信装置の第2の制御手段に送信し、
上記第2の制御手段は、上記リードデータパケットに応答して、上記記憶手段に格納されている受信監視情報を読み出して上記第1の制御手段に送信することを特徴とする。
【発明の効果】
【0026】
本発明に係るシリアル通信システムによれば、第1の制御手段は、第2の制御手段から送信された周波数差調整データパケットの正常受信時の受信間隔に基づいて、第2のシリアル通信装置がデータパケットを正常に受信できるように、周波数差調整データパケットの送信間隔を変更するので、従来技術に比較して通信効率を向上できる。
【図面の簡単な説明】
【0027】
【図1】ルートコンプレックスデバイス1とエンドポイントデバイス2とを備えた本発明の実施形態に係るシリアル通信システムの構成を示すブロック図である。
【図2】図1のシリアル通信システムによって実行されるSKIPOS送信間隔調整処理を示すフローチャートである。
【図3】図1のSKIPOS受信制御部53によって実行されるSKIPOS送信間隔調整処理の第1の部分を示すフローチャートである。
【図4】図1のSKIPOS受信制御部53によって実行されるSKIPOS送信間隔調整処理の第2の部分を示すフローチャートである。
【図5】図1のシリアル通信システムにおいて送受信されるループバックパケット81のフォーマットを示すブロック図である。
【図6】図1のシリアル通信システムにおいて、通信中にエラスティックバッファがオーバーフロー又はアンダーフローしたときのSKIPOS送信間隔調整処理を示すフローチャートである。
【図7】SATAにおいて用いられるALIGNプリミティブのフォーマットを示すブロック図である。
【図8】PCI Express規格に準拠して高速シリアル通信を行うルートコンプレックスデバイス100とエンドポイントデバイス200とを備えた従来技術に係るシリアル通信システムの構成を示すブロック図である。
【図9】図8の送信部103及び203から送信されるSKIPオーダード・セット80のフォーマットを示すブロック図である。
【図10】図8の受信部104及び204のエラスティックバッファから出力されるSKIPオーダード・セット90a〜90eの各フォーマットを示すブロック図である。
【図11】図8のシリアル通信システムで用いられるエンベデッドクロック方式での基準クロックREFCLKの供給方法を示すリストである。
【図12】PCI Expressで用いられるスペクトラム拡散クロックを示すグラフである。
【発明を実施するための形態】
【0028】
以下、本発明に係る実施形態について図面を参照して説明する。なお、以下の実施形態において、同様の構成要素については同一の符号を付している。
【0029】
図1は、ルートコンプレックスデバイス1とエンドポイントデバイス2とを備えた本発明の実施形態に係るシリアル通信システムの構成を示すブロック図である。図1において、ルートコンプレックスデバイス1とエンドポイントデバイス2とは、PCI Express規格に準拠するリンク伝送路3を介してデータパケットを送受信する。ここで、ルートコンプレックスデバイス1は、上流側のコンポーネントであって、リンクコントローラ10と、PHY回路20と、アプリケーション層回路40とを備えて構成される。ここで、アプリケーション層回路40は、リンクコントローラ10の動作を制御するためのソフトウエアのプログラムを実行する回路である。また、リンクコントローラ10は、PCI ExpressのMAC層(Media Access Layer)の信号を伝送するLSIであって、SKIPOS送信制御部11と、レジスタ12と、SKIPOS受信制御部13と、連動して切り換えられるスイッチSW1及びSW2とを備えて構成される。さらに、PHY回路20は、PCI Expressの物理層のフィジカルコーディングサブレイヤの信号を伝送するインターフェース回路のLSIである。リンクコントローラ10とPHY回路20とは、PIPEインターフェース規格(非特許文献4参照。)に準拠するパラレル信号伝送路であるPIPE伝送路30を介して互いに接続されており、リンクコントローラ10は、PHY回路20を制御する。
【0030】
また、図1において、PHY回路20は、PLL(Phase Locked Loop)回路22を備えた送信部21と、受信部23とを備えて構成される。送信部21は、PLL回路22によって発生されたクロックに従って動作する。送信部21は、リンクコントローラ10からのデータパケットを受け取り、送信バッファに貯める。そして、送信バッファから出力されたデータパケットには、マルチプレクサにより、データパケットの始まりと終わりを示すためのキャラクタであるフレーミング・シンボルが追加される。さらに、バイト・ストライピング機構は、フレーミング・シンボルが追加されたデータパケットを、利用可能な複数N個のレーンにバイト単位で振り分け、振り分けられた各データパケットに、レジスタ12に格納されているSKIPOS80の送信間隔(以下、SKIPOS送信間隔という。)で、図9のSKIPOS80を挿入する。各レーンに振り分けられたデータパケットは、スクランブルされた後に、8b/10bエンコーダによって10ビットキャラクタに変換され、変換後の10ビットキャラクタはパラレル・シリアル変換器によってシリアルのビット列に変換され、リンク伝送路3に差動信号として出力される。
【0031】
さらに、図1において、受信部23は、PLL回路25と、複数N個のレーンにそれぞれ対応して設けられた受信回路24−1〜24−Nと、バイト・アンストライピング26とを備えて構成される。ここで、受信部23は、PLL回路25によって発生されたクロックに従って動作する。受信回路24−n(n=1,2,…,N)はそれぞれ、差動レシーバと、シリアル・パラレル変換器と、エラスティックバッファと、8b/10bデコーダと、デスクランブラとを備えて構成される。ここで、入力される差動信号は、差動レシーバによって受信され、クロック・データ・リカバリによってクロック再生され、アナログ信号からシリアルのディジタル信号に変換される。このシリアルのビット列はシリアル・パラレル変換器によってパラレル信号に変換されて、エラスティックバッファを介して8b/10bデコーダに出力される。ここで、エラスティックバッファは、PLL回路62によって発生されたクロックとPLL回路25によって発生されたクロックとの周波数差を吸収するように、入力されるパラレル信号に含まれるSKIPOS80のデータ長を調整する。具体的には、エラスティックバッファは、SKIPOS80を受信して格納し、SKIPOS80からSKPキャラクタを削除し、又はSKIPOS80にSKPキャラクタを挿入してSKIPOS90として出力することによりSKIPOS80のデータ長を調整する。8b/10bデコーダは、入力されるパラレル信号を8b/10デコードしてデスクランブラに出力する。デスクランブラは、入力される8b/10デコード後のデータを、送信側と同一のアルゴリズムを用いてデスクランブルして、バイト・アンストライピング26に出力する。最後に、バイト・アンストライピング26は、各受信回路24−1〜24−NからのN個のデータを1つのデータ列に変換し、フレーミング・シンボル及びSKIPOS90などの制御キャラクタを削除した後にリンクコントローラ10に出力する。なお、各受信回路24−nの8b/10bデコーダは、8b/10bデコード時に検出したディスパリティ・エラー(伝送途中でビット値が逆のビット値に変化した場合などに起きる。)及び10bキャラクタとして定義されていない無効な10bキャラクタなどのエラーを、送信部21からのデータパケットを異常受信しているときのエラー検出情報として、リンクコントローラ10に出力する。
【0032】
また、図1において、エンドポイントデバイス2は、下流側のコンポーネントであって、リンクコントローラ50と、PHY回路60とを備えて構成される。ここで、リンクコントローラ50は、PCI ExpressのMAC層の信号を伝送するLSIであって、SKIPOS送信制御部51と、レジスタ52と、SKIPOS受信制御部53と、連動して切り換えられるスイッチSW3及びSW4とを備えて構成される。さらに、PHY回路60は、PCI Expressの物理層のフィジカルコーディングサブレイヤの信号を伝送するインターフェース回路のLSIである。リンクコントローラ50とPHY回路60とは、PIPEインターフェース規格に準拠するパラレル信号伝送路であるPIPE伝送路70を介して互いに接続されている。リンクコントローラ50は、PHY回路60を制御する。
【0033】
また、図1において、PHY回路60は、PLL回路62を備えた送信部61と、受信部63とを備えて構成される。送信部61は、ルートコンプレックスデバイス1の送信部21と同様に構成され、PLL回路62によって発生されたクロックに従って、送信部21と同様に動作して受信部23にデータパケットを送信する。また、受信部63は、ルートコンプレックスデバイス1の受信部23と同様に、PLL回路65と、複数N個のレーンにそれぞれ対応して設けられた受信回路64−1〜64−Nと、バイト・アンストライピング66とを備えて構成され、PLL回路65によって発生されたクロックに従って、受信部23と同様に動作し、送信部21からデータパケットを受信する。
【0034】
なお、各受信回路64−nは、受信監視情報をリンクコントローラ50に出力し、リンクコントローラ50は、各受信回路64−nから出力された受信監視情報をレジスタ52に格納する。ここで、受信監視情報は、各受信回路64−nによって検出されたSKIPOS80の正常受信時の受信間隔と、各受信回路64−nのエラスティックバッファがオーバーフローしているか、若しくはアンダーフローしているかの情報と、各受信回路64−nの8b/10bデコーダが8b/10bデコード時に検出した送信部21からのデータパケットを異常受信しているときのエラー検出情報(ディスパリティ・エラー及び無効な10bキャラクタなどの情報)とを含む。
【0035】
図2は、図1のシリアル通信システムによって実行されるSKIPOS送信間隔調整処理を示すフローチャートである。なお、図2の処理中は、スイッチSW1,SW2,SW3,SW4はそれぞれ、接点a側に切り換えられている。まず始めに、ステップS1において、アプリケーション層回路40が、レジスタ12にデフォルトのSKIPOS送信間隔を格納する。ここで、デフォルトのSKIPOS送信間隔は、PCI Expressで規定されている範囲(1180シンボル期間から1538シンボル期間まで)内の値である。次に、ステップS2において、アプリケーション層回路40が、SKIPOS送信制御部11を、SKIPOS送信間隔をレジスタ12から読み出して、読み出したSKIPOS送信間隔でSKIPOS80を送信するように制御する。これにより、図9のSKIPOS80が、レジスタ12から読み出されたSKIPOS送信間隔で、エンドポイントデバイス2に送信される。送信されたSKIPOS80は、受信回路64−1〜64−Nによって受信される。そして、各受信回路64−nにおいて、PLL回路22によって生成されたクロックとPLL回路65によって生成されたクロックとの周波数差に起因してエラスティックバッファがオーバーフロー及びアンダーフローしないように、SKIPOS80にSKPキャラクタが挿入され、又は削除される(図10参照。)。そして、ステップS3において、SKIPOS受信制御部53が、受信部63から受信監視情報を受信する。
【0036】
次に、ステップS4において、SKIPOS受信制御部53は、SKIPOS80がエンドポイントデバイス2により正常に受信されたか否かを、受信した受信監視情報に基づいて判断し、YESのときはステップS6に進む一方、NOのときはステップS5に進む。ステップS5では、SKIPOS受信制御部53は、受信監視情報を異常受信結果としてレジスタ52に格納する。一方、ステップS6では、SKIPOS受信制御部53は、受信監視情報を正常受信結果としてレジスタ52に格納する。ステップS5又はS6に続いて、ステップS7において、アプリケーション層回路40が、レジスタリードパケットRdを送信するイベントが発生したか否かを判断し、YESのときはステップS8に進む一方、NOのときはステップS7の処理を繰り返す。ここで、ステップS7における「イベント」は、図1のシリアル通信システムの初期化シーケンス時、定期的な所定のタイミング、及びデータ通信中にエラーが多発したときである。
【0037】
ステップS8において、アプリケーション層回路40が、レジスタ52に格納された受信監視情報を読み出して送信することを要求するためのレジスタリードパケットRdをエンドポイントデバイス2に送信するように、SKIPOS送信制御部21を制御する。これに応答して、SKIPOS送信制御部21はレジスタリードパケットRdをエンドポイントデバイス2に送信する。さらに、これに応答して、SKIPOS送信制御部51が、レジスタ52に格納された受信監視情報を読み出して、読み出された受信監視情報をルートコンプレックスデバイス1に送信する。次に、ステップS9において、SKIPOS受信制御部53は、SKIPOS送信制御部51により送信された受信監視情報に基づいて、受信回路64−1〜64−Nの各エラスティックバッファがオーバーフロー又はアンダーフローしているか否かを判断し、YESのときはステップS10に進む一方、NOのときはステップS11に進む。そして、ステップS10において、アプリケーション層回路40が、SKIPOS送信間隔を変更して、変更後のSKIPOS送信間隔をレジスタ12に格納して、ステップS2に戻る。具体的には、受信回路64−1〜64−Nの各エラスティックバッファがオーバーフローしているときは、SKIPOS送信間隔を現在のSKIPOS送信間隔より短くする一方、受信回路64−1〜64−Nの各エラスティックバッファがアンダーフローしているときは、SKIPOS送信間隔を現在のSKIPOS送信間隔より長くする。一方、ステップS11では、アプリケーション層回路40が、SKIPOS送信間隔は最適値であると判断して、レジスタ12内のSKIPOS送信間隔を変更せずに、SKIPOS送信間隔調整処理を終了する。
【0038】
本実施形態によれば、リンク伝送路3を介して互いに接続された一方のデバイス1は送信部21と受信部23とを備え、他方のデバイスは送信部61と受信部63とを備える。また、受信部23の各受信回路24−nは、PLL回路62によって発生されるクロックとPLL回路25によって発生されるクロックとの間の周波数差を吸収するためのエラスティックバッファを備え、受信部63の各受信回路64−nは、PLL回路22によって発生されるクロックとPLL回路65によって発生されるクロックとの間の周波数差を吸収するためのエラスティックバッファを備える。本実施形態において、送信部21及び61はそれぞれ、N個のレーンデータを出力するマルチレーン機能を実装しており、PCI Expressで規定されているTS(Training Sequence)又はSKIPOS80というパケットデータを送信することにより、TS又はSKIPOS80に含まれるCOMキャラクタ(位相調整キャラクタである。)を利用して、各レーン間のスキューを調整する。通常のデータ転送において、送信部21及び61は、1個のCOMキャラクタとそれに続く3個のSKPキャラクタとを含むSKIPOS80を送信する。受信部23及び63のエラスティックバッファでは、上述した周波数差に応じて、SKPキャラクタの数が調整される。
【0039】
図1のシリアル通信システムでは、ルートコンプレックスデバイス1とエンドポイントデバイス2との間でエンベデッドクロック方式の高速シリアル通信が行われる。このとき、PLL回路22,25,61又は65によって発生されたシリアル通信に用いられる基準クロックの周波数の設定値は互いに同一だが、実際には、互いに数百ppm程度異なる可能性がある。また、スペクトラム拡散クロック発生器の使用が可能である。これらのクロックの周波数は、PCI Expressで規定された値よりマージンがある可能性が高い。また、基準クロックが対向デバイスと自デバイスで共通の場合と別の場合がある。そのため、シリアルデータの周波数差が生じ、周期的にSKIPOS80のような周波数差を調整するためのデータパケットを送信する必要がある。両方デバイスで共通のクロックを用い、かつSSCを用いない場合は、上述した周波数差は比較的少ないため、SKIPOS80を送信する頻度は減らすことによりオーバーヘッドを減らせ、転送効率の向上が可能となる。また、SSCの規格値にもマージンがあることが考えられる。
【0040】
本実施形態では、PLL回路22によって発生されるデータパケットの送信処理に用いられるクロックと、PLL回路65によって発生されるデータパケットの受信処理に用いられるクロックとの間に周波数差があり、この周波数差を各受信回路64−n内のエラスティックバッファ(周波数差吸収バッファである。)を用いて吸収するシリアル通信システムにおいて、SKIPOS受信制御部53は、周波数差調整データパケット又は頻度補償コードであるSKIPOS80の正常受信時の受信間隔と、各受信回路64−nのエラスティックバッファがオーバーフローしているか、若しくはアンダーフローしているかの情報と、各受信回路64−nの8b/10bデコーダが8b/10bデコード時に検出した送信部21からのデータパケットを異常受信しているときのエラー検出情報とを含む受信監視情報を、SKIPOS受信制御部13にする。SKIPOS受信制御部13は、受信した受信監視情報に基づいて、SKIPOS送信間隔を調整する。このため、通常のデータ通信時にSKIPOS送信間隔及び送信頻度を最低限の間隔まで減らせるため、従来技術に比較してオーバーヘッドが減らせ、通信データの転送効率を上げることができる。
【0041】
次に、図3及び図4を参照して、図1のSKIPOS受信制御部53によって実行されるSKIPOS送信間隔調整処理を説明する。図3及び図4は、図1のSKIPOS受信制御部53によって実行されるSKIPOS送信間隔調整処理を示すフローチャートである。なお、図4のステップS38〜S40の各処理は、ルートコンプレックスデバイス1のSKIPOS受信制御部13によって実行される。また、図3の処理開始時に、スイッチSW1,SW2,SW3,SW4はそれぞれ、接点a側に切り換えられている。まず始めに、ステップS21において、リンク伝送路3の状態がL0ステートであるか否かが判断され、YESのときはステップS22に進む一方、NOのときはSKIPOS送信間隔調整処理を終了する。ここで、L0ステートは、通常のオペレーション状態で、制御パケット及びデータパケットを送受信できる状態である。
【0042】
ステップS22において、ルートコンプレックスデバイス1が、ループバック回路構成を備えているか否かが判断され、YESのときはステップS23に進む一方、NOのときはステップS26に進む。ここで、ループバック回路構成とは、エンドポイントデバイス2から受信したパケットを折り返してエンドポイントデバイス2に返信するための回路構成である。具体的には、ルートコンプレックスデバイス1のスイッチSW1及びSW2(図1参照。)をそれぞれ接点b側に切り換えたとき、受信部23によって受信されたパケットは、PIPE伝送路30と、スイッチSW2の接点bと、スイッチSW1の接点bと、PIPE伝送路30と、送信部21とを介してエンドポイントデバイス2に返信される。また、エンドポイントデバイス2のスイッチSW3及びSW4(図1参照。)をそれぞれ接点b側に切り換えたとき、受信部63によって受信されたパケットは、PIPE伝送路70と、スイッチSW3の接点bと、スイッチSW4の接点bと、PIPE伝送路70と、送信部71とを介してルートコンプレックスデバイス1に返信される。
【0043】
次に、ステップS23において、データ転送が行われている状態であるか否かが判断され、YESのときはS24に進む一方、NOのときはステップS25に進む。ステップS24では、互いにデータ転送を行わない状態に切り換えるか、あるいは、互いにデータ転送していない状態になるまで待機して、ステップS25に進む。そして、ステップS25では、ループバックパケット81内の2つのSKIPOS80の送信間隔を変更して、ループバックパケット81を送信するように、SKIPOS送信制御部51を制御する。図5は、図1のシリアル通信システムにおいて送受信されるループバックパケット81のフォーマットを示すブロック図である。図5に示すように、ループバックパケット81は、トリガーパケット82と、SKIPOS80と、バーストデータ83と、SKIPOS80と、エンドパケット84とを、この順序で含む。バーストデータ83のデータ長を変更することにより、レジスタ12又は52に格納されたSKIPOS送信間隔を変更することなく、ループバックパケット81内の2つのSKIPOS80の送信間隔を変更できる。
【0044】
ステップS25における具体的な処理内容は、例えば、以下の通りである。まず始めに、スイッチSW1及びSW2はそれぞれ接点b側に切り換えられる。そして、SKIPOS送信制御部51は、ループバックパケット81内の2つのSKIPOS80の間隔を複数通りに変更して、ループバックパケット81をルートコンプレックスデバイス1に送信し、ルートコンプレックスデバイス1からのループバックパケット81を受信するとともに、各受信回路64−nから出力された受信監視情報を受信してレジスタ52に格納する。最後に、スイッチSW1及びSW2はそれぞれ接点a側に切り換えられる。従って、図2のステップS8と同様の処理を実行することにより、SKIPOS受信制御部13は、レジスタ52に格納された複数通りのSKIPOS80の間隔毎の受信監視情報を読み出し、読み出した複数通りのSKIPOS80の間隔毎の受信監視情報に基づいて、SKIPOS送信間隔の許容値を識別することができる。具体的には、ループバックパケット81がエンドポイントデバイス2によって正常受信されたときのSKIPOS80の間隔を、SKIPOS送信間隔の許容値として用いることができる。
【0045】
また、ステップS25における具体的な処理内容の他の例は、以下の通りである。まず始めに、スイッチSW1及びSW2はそれぞれ接点b側に切り換えられる。そして、SKIPOS送信制御部51は、受信データのエラーがなくなるまで、ループバックパケット81内の2つのSKIPOS80の間隔を変更する。エラーがなくなれば、両デバイス1及び2においてともにSKIPOS送信間隔に問題がないと判断する。最後に、スイッチSW1及びSW2はそれぞれ接点a側に切り換えられる。また、エンドポイントデバイス2のSKIPOS受信制御部53でSKIPOS送信間隔の許容値を検出可能であれば、検出された許容値をレジスタ52に格納し、レジスタ52に格納された許容値をルートコンプレックスデバイス1から読み出すことができる。SKIPOS送信間隔の確認を実施するタイミングは、図2のステップS7と同様に、初期化シーケンス時、定期的な所定のタイミング、及びイベント(通信エラーの多発など)が起こったタイミングである。
【0046】
次に、ステップS26において、受信回路64−1〜64−Nにより受信された全受信有効信号が安定して有効となっているか否かが判断され、YESのときはステップS30に進む一方、NOのときはステップS27に進む。ここで、受信回路64−1〜64−Nにより受信された全受信有効信号が安定して有効となっている状態とは、受信回路64−1〜64−Nから、データパケットを異常受信しているときのエラー検出情報が出力されない状態である。各受信有効信号が安定して有効となっていない場合、シンボルロック状態(受信側でシリアルデータをシンボル毎にパラレルデータに変換できる状態)ではない可能性があり、実質の転送レートは悪くなる。ステップS27では、SKIPOS送信間隔の規格を遵守するモードか否かが判断され、YESのときは、ステップS29に進む一方、NOのときはステップS28に進む。なお、ステップS27における判断処理のために、規格を遵守する必要があるかを示すイネーブル信号を予め発生しておき、当該イネーブル信号に基づいて判断処理を行う。ステップS28において、シンボルロックが外れている可能性があるので、規格の範囲外までSKIPOS送信間隔を短く設定してSKIPOS80を送信するように、SKIPOS送信制御部51を制御してステップS26に戻る。一方、ステップS29において、シンボルロックが外れている可能性があるので、規格の範囲外までSKIPOS送信間隔を短く設定してSKIPOS80を送信するように、SKIPOS送信制御部51を制御してステップS26に戻る。以上説明したステップS26〜S29の処理により、SKIPOS送信間隔を短くしてSKIPOS80の送信頻度を上げることにより、SKIPOS80内のCOMシンボルのシンボルロック時の有効信号が安定するときのSKIPOS送信間隔を識別可能である。
【0047】
次に、ステップS30において、エラスティックバッファから出力された各SKIPOS90に含まれるSKPキャラクタの数が適切か否かが判断され、YESのときはステップS34に進む一方、NOのときはステップS31に進む。さらに、ステップS34において、各受信回路64−1〜64−Nのエラスティックバッファがオーバーフロー又はアンダーフローしているか否かが判断され、YESのときはステップS31に進む一方、NOのときはステップS35に進む。
【0048】
ステップS31では、ルートコンプレックスデバイス1及びエンドポイントデバイス2がそれぞれ、SKIPOS送信間隔のエラーをデータパケットを用いて通知可能な回路構成を備えているか否かが判断され、YESのときはステップS33に進む一方、NOのときはステップS32に進む。ステップS32において、レジスタ52に、現在のSKIPOS送信間隔ではエラーが発生することを示す受信監視情報を格納してステップS38に進む。また、ステップS33において、SKIPOS80の受信状態を含むデータパケットをルートコンプレックスデバイス1に送信することにより、受信監視情報をルートコンプレックスデバイス1に送信して、ステップS39に進む。
【0049】
次に、ステップS35では、ルートコンプレックスデバイス1及びエンドポイントデバイス2がそれぞれ、SKIPOS送信間隔のエラーをデータパケットを用いて通知可能な回路構成を備えているか否かが判断され、YESのときはステップS41に進む一方、NOのときはステップS36に進む。そして、ステップS41において、SKIPOS80の受信状態を含むデータパケットをルートコンプレックスデバイス1に送信することにより、受信監視情報をルートコンプレックスデバイス1に送信して、ステップS39に進む。また、ステップS36では、温度センサを用いる方法など別の方法で、SKIPOS80の受信エラーを認識できるか否かが判断され、YESのときはステップS39に進む一方、NOのときはステップS37に進む。
【0050】
ステップS37において、レジスタ52に、現在のSKIPOS送信間隔ではエラーが発生しないことを示す受信監視情報を格納し、続いて、ステップS38において、ルートコンプレックスデバイス1のSKIPOS受信制御部13が、レジスタ52に格納された受信監視情報を読み出す。さらに、ステップS39において、ルートコンプレックスデバイス1のSKIPOS受信制御部13が、受信監視情報に基づいて、SKIPOS送信間隔の最適値を決定する。最後に、ステップS40において、ルートコンプレックスデバイス1のSKIPOS受信制御部13が、決定されたSKIPOS送信間隔の最適値を、レジスタ12に格納して、SKIPOS送信間隔調整処理を終了する。
【0051】
図3及び図4の処理によれば、ステップS30において、各SKIPOS90に含まれるSKPキャラクタの数が適切か否かを判断し、適切でない場合には、エラーが発生していることをルートコンプレックスデバイス1に通知できる。このとき、ハードウエア又はソフトウエアを用いてエラー状態を通知可能な場合(ステップS31においてYESの場合)には、ステップS33において即座にSKIPOS80の受信状態を含むデータパケットを送り、ルートコンプレックスデバイス1にエラー状態を通知する。一方、エラー状態を通知可能でない場合(ステップS31においてNOの場合)には、ステップS32において、エラー状態であることを示す受信監視情報をレジスタ52に格納しておき、ルートコンプレックスデバイス1により読み取り可能であるようにする。以上の動作は、ハードウエア同様にソフトウエアでも実現することも可能である。
【0052】
なお、図4において、ステップS31においてYESの場合、ステップS32に進んでもよい。また、ステップS35においてYESの場合、及びステップS36においてYESの場合は、ステップS37に進んでもよい。
【0053】
また、図3及び図4の処理はSKIPOS受信制御部53によって実行されたが、本発明はこれに限らず、SKIPOS受信制御部13によって同様に実行されてもよい。
【0054】
次に、図6を参照して、図1のシリアル通信システムにおいて、通信中にエラスティックバッファがオーバーフロー又はアンダーフローしたときのSKIPOS送信間隔調整処理を説明する。まず始めに、ステップS50において、アプリケーション層回路40が、レジスタ12にデフォルトのSKIPOS送信間隔を格納する。次に、ステップS51において、アプリケーション層回路40が、SKIPOS送信制御部11を、SKIPOS送信間隔をレジスタ12から読み出して、読み出したSKIPOS送信間隔でSKIPOS80を送信するように制御する。次に、ステップS52において、SKIPOS受信制御部53は、エンドポイントデバイス2において受信エラーが多発するか否かを判断し、YESのときはステップS53に進む一方、NOのときはSKIPOS送信間隔調整処理を終了する。
【0055】
ステップS53において、ルートコンプレックスデバイス1及びエンドポイントデバイス2はそれぞれ、SKIPOS送信間隔のエラーをデータパケットを用いて通知可能な回路構成を備えているか否かが判断され、YESのときはステップS57に進む一方、NOのときはステップS54に進む。ステップS57では、アプリケーション層回路40が、レジスタリードパケットRdをエンドポイントデバイス2に送信するように送信部21を制御し、これに応答して、SKIPOS受信制御部53が、レジスタ52に格納された受信監視情報を読み出して、読み出された受信監視情報を含むパケットをルートコンプレックスデバイス1に送信する。引き続き、ステップS58において、SKIPOS送信間隔をデフォルトのSKIPOS送信間隔に戻す、又は現在のSKIPOS送信間隔より短くして、レジスタ12に格納し、ステップS59において、図2のSKIPOS送信間隔調整処理を実行して、通信中にエラスティックバッファがオーバーフロー又はアンダーフローしたときのSKIPOS送信間隔調整処理を終了する。ただし、ステップS59では、図2のSKIPOS送信間隔調整処理のステップS2以降の処理が実行される。
【0056】
一方、ステップS54では、ルートコンプレックスデバイス1が、NAK及びエラーメッセージの頻度を観測するための回路を備えているか否かが判断され、YESのときはステップS55に進む一方、NOのときはステップS56に進む。ステップS55では、NAK及びエラーメッセージの頻度が変化するか否かが判断され、YESのときはステップS58に進む一方、NOのときは、SKIPOS送信間隔調整処理を終了する。また、ステップS56において、エンドポイントデバイス2の受信状態を定期的に確認して受信エラーの状態を確認できたか否かが判断され、YESのときはステップS58に進む一方、NOのときはSKIPOS送信間隔調整処理を終了する。なお、ステップS54においてYESのときはステップS56に進んでもよい。
【0057】
SKIPOS送信間隔を調べる動作は、初期化シーケンス時、定期的な所定のタイミング、又は所定のイベント毎に実施するように選択できるようにする。イベント毎に実施する場合には、特に図6のフローチャートを適用できる。図6において、データ通信中にエラーが多発した場合、エラーが多発したことを、エンドポイントデバイス2からルートコンプレックスデバイス1に、データパケットを用いて通知する。これに応答して、ルートコンプレックスデバイス1はSKIPOS送信間隔を変更する(ステップS58)。一方、エラーを通知するデータパケットを認識できない回路構成の場合(ステップS53でNOの場合)、ルートコンプレックスデバイス1が、NAK及びエラーメッセージの頻度を観測可能な回路構成を有しているときは、上記頻度が変われば、SKIPOS送信間隔を変えることができる。また、ルートコンプレックスデバイス1が、NAK及びエラーメッセージの頻度を観測可能な回路構成を有していないときは、エンドポイントデバイス2の受信状態を定期的に確認して、エラー状態を確認する。
【0058】
本実施形態の特徴及び効果を要約すると以下の通りである。
【0059】
本実施形態によれば、ルートコンプレックスデバイス1の送信部21で用いられるクロックとエンドポイントデバイス2の受信部63で用いられるクロックとの間で周波数差があるシリアル通信システムにおいて、SKIPOS受信制御部53は周波数差調整データパケットであるSKIPOS80の受信状態を検出して、検出した受信状態を、受信監視情報としてルートコンプレックスデバイス1に通知できる。また、ルートコンプレックスデバイス1では、通知された受信監視情報に基づいてSKIPOS送信間隔を調整できる。このため、通常のデータ通信時にSKIOPOS80の送信頻度を減らせるため、従来技術に比較してオーバーヘッドが減らせ、通信データの転送効率を上げることができる。
【0060】
また、図3のSKIPOS送信間隔調整処理において、リンク伝送路3が正常かつデータ通信可能状態(L0ステート)であり、かつ各受信有効信号が安定して有効になっている場合に、各SKIPOS90に含まれるSKPキャラクタの数を監視し、さらに、エラスティックバッファがオーバーフローまたはアンダーフローしているか否かを監視する。そして、各受信有効信号が安定して有効ではないとき、又はエラスティックバッファがオーバーフローまたはアンダーフローしている場合には、以下のように制御する。
(1)SKIPOS送信間隔のエラーをデータパケットを用いて通知可能であるときは、当該データパケットを用いて受信監視情報をルートコンプレックスデバイス1に送信する。
(2)SKIPOS送信間隔のエラーを、データパケットを用いて通知可能できないときは、受信監視情報をレジスタ52に格納する。これにより、ルートコンプレックスデバイス1が、ソフトウエアによりレジスタ52から受信監視情報を読み出すことができる。
【0061】
さらに、図2に示すように、アプリケーション層回路40がレジスタ12にSKIPOS送信間隔を書き込むことにより、SKIPOS送信間隔を変更してSKIPOS80をエンドポイントデバイス2に送信できる。また、エンドポイントデバイス2は、受信監視情報を格納するレジスタ52を備え、アプリケーション層回路40は、レジスタ52に格納された受信監視情報を読み出してSKIPOS送信間隔を変更できる。本実施形態によれば、図2の処理をソフトウエアで実現でき、比較的柔軟な制御が可能である。なお、図2の処理を、SKIPOS送信制御部11のハードウエアで実現してもよい。これにより、ソフトウエアで実現する場合に比較して、高速にSKIPOS送信間隔を調整でき、リアルタイム性が高くなる。
【0062】
またさらに、図3のステップS27〜S29に示すように、規格の範囲内又は範囲外でSKIPOS送信間隔を動的に変更できる。なお、規格を遵守しない場合には、規格を遵守する場合よりも転送効率を上げることができる。
【0063】
また、図3のステップS26においてNOの場合、SKIPOS送信間隔を短くするので、SKIPOS90内のCOMキャラクタでシンボルロックして有効信号が安定するときのSKIPOS送信間隔を識別できる。これにより、受信有効信号に基づいて、安定動作するときのSKIPOS送信間隔を識別でき、結果として従来技術に比較して通信効率を向上できる。
【0064】
さらに、初期化シーケンス時、定期的な所定のタイミング、及び通常のパケット通信時にエラーが発生したときにSKIPOS送信間隔を調整するので、通信負荷の影響への信頼性を高めることが可能である。
【0065】
またさらに、図3のステップS21〜ステップS25に示すように、ルートコンプレックスデバイス1がループバック回路構成を備えている場合、データ通信可能な状態(L0ステート)において、ループバックパケット81を用いる。また、ループバックパケット81を用いる処理は、通信可能な状態での初期化シーケンス、又は通信可能な状態でかつ双方のデバイス1及び2でデータ転送が行われていない状態で行われる。さらに、データ転送が行われているときは、データ転送を行わないように制御する。これにより、バーストデータ80と2つのSKIPOS80の送出間隔を変えたループバックパケット81が、対向デバイスを回って戻ってきたとき、対向デバイスのレジスタに格納された受信監視情報に基づいて、SKIPOS送信間隔の許容値を識別できる。これにより、SKIPOS送信間隔を互いのデバイス1及び2で変更せずに処理が可能であるため、ループバックパケット81を用いない場合に比較して、迅速に確認動作を実施できる。また、SKIPOS送信制御部51から送信して、SKIPOS受信制御部53で受信するまでの確認間隔を短くすることで、確認時間短縮が可能である。
【0066】
変形例.
なお、通信中に対向デバイス1又は2から送られてくるSKIPOS80の平均の送信間隔が変わることにより、通知することができる回路構成を備えてもよい。また、温度センサを用いてエラー状態を検出する回路構成を備えてもよい。具体的には、温度センサを使用する場合は、データ転送時にエラーが発生しなかったときの温度の上限値を予めレジスタ12及び52に格納しておき、温度センサによって検出された温度がレジスタ12又は52に格納された値よりも高いときに、SKIPOS送信間隔を変更するように構成してもよい。
【0067】
また、リンクコントローラ50は、初期化シーケンス時、定期的な所定のタイミング、及びルートコンプレックスデバイス1とエンドポイントデバイス2との間で通信中にエラーが発生したときに、各受信回路64−nから出力された受信監視情報を受信してレジスタ52に格納してもよい。さらに、SKIPOS送信間隔を変更した後に対向デバイスの状況を確認する場合、リンクコントローラ50は、SSCの変調周波数に対応する周期で、各受信回路64−nから出力された受信監視情報を受信してレジスタ52に格納してもよい。このとき、SSCの変調周波数の初期値は、規格値として、ソフトウエアで設定可能なものとしてもよい。例えば、SSCの変調周波数に応じて、SKIPOS80間に受信検出する区間を定めることが可能な回路構成とすることにより、無駄な検出動作をしないようにできる。またさらに、リンクコントローラ50は、シリアル転送速度に対応する周期で、各受信回路64−nから出力された受信監視情報を受信してレジスタ52に格納してもよい。
【0068】
また、上流側のデバイスのSKIPOS送信間隔がパケット通信で変更可能であれば、通信時でも変更して、上流側のデバイスのSKIPOS送信間隔を変更して、最適値を認識することができる。
【0069】
以上説明した実施形態では、PCI Expressに準拠したシリアル通信システムについて説明したが、本発明はこれに限らず、USB3.0(非特許文献5参照。)、SATA(非特許文献6参照。)、SATA3.0、Fibre Channel、Gigabit Ethernet、infiniBand、又は8b/10bエンコードを用いるIEEE 1394などの規格に準拠して高速シリアル通信を行うシリアル通信システムに広く適用できる。特に、USBでは、PCI Expressと同様に、周波数差調整データパケットSKPOSが用いられている。また、SATAでは、図7に示すように、周波数差調整データパケットとして、ALIGNプリミティブが用いられている。ALIGNプリミティブの機能はSKIPOS80の機能と実質的に同一である。ALIGNプリミティブは、ホストと他のデバイスと間のクロックのずれを調整するために256データワードごとに挿入される。受信側のクロックが遅い場合は、受信側でALIGNプリミティブを破棄することでクロックのずれを調整する。
【0070】
また、PCI Express2.0及びSATA3.0では、転送レートが変えられる仕様となっている(例えば、PCI Express gen2では、2.5GT/sから5GT/s)ため、転送レートに応じて、SKIPOS送信間隔を確認可能な回路構成としてもよい。
【産業上の利用可能性】
【0071】
以上説明したように、本発明に係るシリアル通信システムによれば、第1の制御手段は、第2の制御手段から送信された周波数差調整データパケットの正常受信時の受信間隔に基づいて、第2のシリアル通信装置がデータパケットを正常に受信できるように、周波数差調整データパケットの送信間隔を変更するので、従来技術に比較して通信効率を向上できる。
【符号の説明】
【0072】
1…ルートコンプレックスデバイス、
2…エンドポイントデバイス、
3…リンク伝送路、
10…リンクコントローラ、
11…SKIPOS送信制御部、
12…レジスタ、
13…SKIPOS受信制御部、
20…PHY回路、
21…送信部、
22…PLL回路、
23…受信部、
24−1〜24−N…受信回路、
25…PLL回路、
26…バイト・アンストライピング、
30…PIPE伝送路、
40…アプリケーション層回路、
50…リンクコントローラ、
51…SKIPOS送信制御部、
52…レジスタ、
53…SKIPOS受信制御部、
60…PHY回路、
61…送信部、
62…PLL回路、
63…受信部、
64−1〜64−N…受信回路、
65…PLL回路、
66…バイト・アンストライピング、
70…PIPE伝送路、
80…SKIPオーダード・セット。
【先行技術文献】
【特許文献】
【0073】
【特許文献1】特表2007−517334号公報。
【特許文献2】特開2008−172657号公報。
【特許文献3】特開2009−224977号公報。
【非特許文献】
【0074】
【非特許文献1】荒井信隆ほか,「改訂新版PCI Express入門講座」,電波新聞社,2008年6月20日改訂版発行。
【非特許文献2】PCI-SIG, “PCI Express Base Specification Revision 2.0”, December 2006.
【非特許文献3】PCI-SIG, “PCI Express Card Electromechanical Specification Revision 2.0”, April 11, 2007.
【非特許文献4】Intel Corporation, “PHY Interface for the PCI Express Architecture Version 2.00”, July 21, 2007.
【非特許文献5】Hewlett-Packard Company et al., “Universal Serial Bus 3.0 Specification Revision 1.0”, November 12,2008.
【非特許文献6】Dell Computer Corporation et al., “Serial ATA II: Extensions to Serial ATA 1.0a Revision 1.2”, August 27, 2004.
【技術分野】
【0001】
本発明は、例えばPCI(Peripheral Component Interconnection)Express、USB3.0(Universal Serial Bus Version 3.0)、SATA(Serial Advanced Technology Attachment)、Fibre Channel、Gigabit Ethernet、infiniBand、又はIEEE 1394などの規格に準拠して高速シリアル通信を行うシリアル通信システムに関する。
【背景技術】
【0002】
PCI Expressは、PCIに続く「第三世代のPC用インターフェース規格」と位置づけられ、2.5Gbpsのシリアル信号伝送、ポイント・ツー・ポイントつまりバス構造を有しない分岐しない信号接続経路、プロトコルを使用したデータ通信、及びソフトウエアのPCI互換性などの特徴を有している。そして、PCI Expressは、パーソナルコンピュータのボード上のLSI間での通信、ボード間の通信、さらに、ケーブルによる短距離の通信にも使用されている(非特許文献1〜3及び特許文献1〜3参照。)。PCI Expressは高速シリアルインターフェースであり、入出力インターフェースである。
【0003】
図8は、PCI Express規格に準拠して高速シリアル通信を行うルートコンプレックスデバイス100とエンドポイントデバイス200とを備えた従来技術に係るシリアル通信システムの構成を示すブロック図である。図8において、ルートコンプレックスデバイス100とエンドポイントデバイス200とは、それぞれ通常の動作状態(L0ステート)にあり、PCI Express規格に準拠するリンク伝送路300を介してデータパケットを送受信する。ここで、ルートコンプレックスデバイス100は、リンクコントローラ101と、送信部103及び受信部104を備えたPHY回路102とを備えて構成される。リンクコントローラ101は、PCI ExpressのMAC層(Media Access Layer)の信号を伝送するLSIである。また、PHY回路102は、PCI Expressの物理層のフィジカルコーディングサブレイヤの信号を伝送するインターフェース回路のLSIである。リンクコントローラ101とPHY回路102とは、PIPE(PHY Interface for the PCI Express Architecture)インターフェース規格(非特許文献4参照。以下、PIPEという。)に準拠するパラレル信号伝送路であるPIPE伝送路105を介して互いに接続されている。さらに、エンドポイントデバイス200は、ルートコンプレックスデバイス100と同様に、リンクコントローラ201と、送信部203及び受信部204を備えたPHY回路202とを備えて構成され、リンクコントローラ201とPHY回路202とは、PIPE伝送路205を介して互いに接続されている。
【0004】
図8において、送信部103は、リンクコントローラ101からのパケットを受け取り、送信バッファに貯める。そして、送信バッファから出力されたパケットには、マルチプレクサにより、パケットの始まりと終わりを示すためのキャラクタであるフレーミング・シンボルが追加される。さらに、バイト・ストライピング機構は、フレーミング・シンボルが追加されたパケットを、利用可能なレーンにバイト単位で振り分ける。各レーンに振り分けられたパケットは、スクランブルされた後に8b/10bエンコーダによって10ビットキャラクタに変換され、変換後の10ビットキャラクタはパラレル・シリアル変換器によってシリアルのビット列に変換され、リンク伝送路300に差動信号として出力される。送信部203もまた、送信部103と同様に動作する。
【0005】
ここで、送信部103及び203において、バイト・ストライピング機構は、各レーンに振り分けられたパケットに対して、定期的にSKIPオーダード・セット(以下、SKPOSという。)80を挿入する。図9は、図8の送信部103及び203から送信されるSKIPOS80のフォーマットを示すブロック図である。図9に示すように、SKIPOS80は、1個のCOM(Comma)キャラクタとそれに続く3個のSKP(Skip)キャラクタとで構成されている。ここで、COMキャラクタは、レーンとリンクと初期化と管理に使われるキャラクタであり、SKPキャラクタは、2つのポート間のビット・レート差の調整又はクロック周波数差を吸収する目的で使われるキャラクタである。
【0006】
送信部103と受信部204とはそれぞれ別のクロックに従って動作しているために、クロックに周波数差があると受信部204でデータのオーバーフロー(データ過多)又はアンダーフロー(データ不足)が発生する可能性がある。送信部203と受信部104との間でも同様の問題が生じる可能性がある。このような現象を防止するために、送信部103及び203において、予め送信するパケットにSKIPOS80を定期的に挿入しておき、送信部103のクロック周波数が受信部204のクロック周波数より高いときは受信部103でSKPキャラクタを削除し、逆に、送信部103のクロック周波数が受信部204のクロック周波数より低いときは受信部103でSKPキャラクタを挿入することで送受信の速度を調節する。SKIPOS80は、送信部103及び203で使用され、送信データにSKPキャラクタを予め挿入する機能を実現する。
【0007】
また、図8において、受信部204では、受信された差動信号はクロック・データ・リカバリによってクロック再生され、アナログ信号からシリアルのディジタル信号に変換される。このシリアルのビット列はシリアル・パラレル変換され、エラスティックバッファを介して8b/10bデコーダに送られる。さらに、8b/10bデコーダからの出力信号に対して、デスクランブル処理及びバイト・アンストライピング処理が行われ、フレーミングのために付加されていたシンボルが除去され、バッファを介してリンクコントローラ201に出力される。受信部104もまた、受信部204と同様に動作する。
【0008】
ここで、受信部104及び204内のエラスティックバッファでは、上述したSKPキャラクタの挿入及び削除が行われる。図10は、図8の受信部104及び204のエラスティックバッファから出力されるSKIPOS90a〜90eの各フォーマットを示すブロック図である。図10に示すように、送信部103と受信部204との間の周波数差、及び送信部203と受信部104との間の周波数差に応じて、SKPキャラクタが挿入され、又は、削除され、エラスティックバッファからSKIPOS90a〜90eのうちのいずれか1つが出力される。以下、SKIPOS90a〜90eを区別しない場合は、SKIPOS90と記載する。
【0009】
非特許文献2において、SKIPOS80の送受信のルールは以下の通りである。
(1)通常状態において、SKIPOS80の送信間隔は、1180シンボル期間から1538シンボル期間までの間である。
(2)通常状態において、受信側は、SKIPOS80の平均間隔が1180シンボル期間から1538シンボル期間までの間の場合は、これを受信して処理できなければならない。
(3)受信側は、SKIPOS80が連続する場合にも、これを受信して処理できなければならない。
(4)受信側は、そのデバイスで規定されている最大のペイロードサイズMax_Payload_Sizeが伝送された場合にも、受信して処理できなければならない。SKIPOS80の最大の間隔N(キャラクタ)は、N=1538+(Max_Payload_Size+26)である。例えば、最大のペイロードサイズMax_Payload_Sizeが4096の場合、N=1538+4096+26=5660である。
【0010】
なお、USB3.0に関しても、PCI Expressと同様に、SKIPOSを用いた送信側と受信側のクロック周波数差の調整が行われる。ただし、USB3.0とPCI Expressとでは、SKIPOSの送信間隔の規格値は互いに異なる。
【発明の概要】
【発明が解決しようとする課題】
【0011】
PCI Expressに準拠したデバイスは、任意の対向デバイス(例えば、図8のルートコンプレックスデバイス100に対するエンドポイントデバイス200、又はエンドポイントデバイス200に対するルートコンプレックスデバイス100である。)に接続される。
【0012】
図11は、図8のシリアル通信システムで用いられるエンベデッドクロック方式での基準クロックREFCLKの供給方法を示すリストである。図11に示すように、PCI Expressでは、エンベデッドクロック方式のシリアル通信が行われるが、送信側と受信側で共通のクロックを用いるか否か(クロック共通又はクロック分離)、及びスペクトラム拡散クロック(Spread Spectrum Clocking(以下、SSCという。))を用いるか否かによって、4種類の基準クロックREFCLKの供給方法が存在する。しかしながら、両方のデバイスでこれらの4種類の基準クロックREFCLKの供給方法のうちのどの供給方法が用いられるかは、予め分からない。
【0013】
また、図12は、PCI Expressで用いられるスペクトラム拡散クロックを示すグラフである。PCI Expressの基本仕様では、クロック周波数については規定されていないが、その安定性についてはユニット・インターバル(UI)の範囲として規定されている。図12に示すように、PCI Expressでは、変調周波数は30kHzから33kHzの範囲である。また、最大周波数偏移は1.5MHz以下であり、中央値までのジッターの最大値は0.125UIである。SSCを採用する場合、クロックは、図12のPCI Expressの規格に準拠するように発生されるが、このとき、規格からどの程度のマージンを持って発生されるかは分からない。
【0014】
以上説明したように、PCI Expressでは、送信側と受信側とでクロック周波数は互いに異なり、このクロック周波数差を吸収するために上述したSKIPOS80が用いられる。しかしながら、帯域を最大限に利用した通信を行うとき、SKIPOS80がオーバーヘッドになり、通信効率を上げられないことがあった。
【0015】
本発明の目的は以上の問題点を解決し、従来技術に比較して通信効率を向上できるシリアル通信システムを提供することにある。
【課題を解決するための手段】
【0016】
本発明に係るシリアル通信システムは、
周波数差調整データパケットをデータパケットに所定の送信間隔で挿入し、所定の第1のクロックに従って送信する送信手段と、上記送信手段を制御する第1の制御手段とを備えた第1のシリアル通信装置と、
所定の通信規格に準拠する伝送路を介して上記データパケットを受信し、所定の第2のクロックに従って処理するときに、上記第1のクロックと上記第2のクロックとの周波数差を吸収するように上記周波数差調整データパケットのデータ長を調整する受信手段と、上記受信手段を制御する第2の制御手段とを備えた第2のシリアル通信装置とを備えたシリアル通信システムにおいて、
上記第2の制御手段は、上記周波数差調整データパケットの正常受信時の受信間隔を検出して上記第1の制御手段に送信し、
上記第1の制御手段は、上記送信された周波数差調整データパケットの正常受信時の受信間隔に基づいて、上記第2のシリアル通信装置が上記データパケットを正常に受信できるように、上記送信間隔を変更することを特徴とする。
【0017】
上記シリアル通信システムにおいて、
上記周波数差調整データパケットは、所定の周波数差調整用キャラクタを含み、
上記受信手段は、上記周波数差調整データパケットを受信して格納し、当該周波数差調整データパケットから上記周波数差調整用キャラクタを削除し、又は上記周波数差調整データパケットに上記周波数差調整データパケットを挿入して出力することにより上記周波数差調整データパケットのデータ長を調整するエラスティックバッファを備え、上記エラスティックバッファがオーバーフローしているか、若しくはアンダーフローしているかの受信監視情報を出力し、
上記第2の制御手段は、上記出力された受信監視情報を受信して記憶手段に格納し、上記格納された受信監視情報を読み出して上記第1の制御手段に送信し、
上記第1の制御手段は、上記第2の制御手段から送信された受信監視情報に基づいて、上記エラスティックバッファがオーバーフローしているときは上記送信間隔を短くする一方、上記エラスティックバッファがアンダーフローしているときは上記送信間隔を長くすることを特徴とする。
【0018】
また、上記シリアル通信システムにおいて、
上記第1の制御手段は、上記通信規格によって規定された送信間隔の範囲内で、上記送信間隔を変更することを特徴とする。
【0019】
さらに、上記シリアル通信システムにおいて、
上記第1の制御手段は、上記通信規格によって規定された送信間隔の範囲外で、上記送信間隔を変更することを特徴とする。
【0020】
またさらに、上記シリアル通信システムにおいて、
上記受信監視情報は、上記送信手段からのデータパケットを異常受信しているときのエラー検出情報を含み、
上記第1の制御手段は、上記エラー検出情報に基づいて、上記送信間隔を短くすることを特徴とする。
【0021】
また、上記シリアル通信システムにおいて、
上記第2の制御手段は、初期化シーケンス時、定期的な所定のタイミング、及び上記第1及び第2のシリアル通信装置間で通信中にエラーが発生したときに、上記受信手段から出力された受信監視情報を受信して記憶手段に格納することを特徴とする。
【0022】
さらに、上記シリアル通信システムにおいて、
上記第2の制御手段は、スペクトラム拡散クロックの変調周波数に対応する周期で、又は、上記第1及び第2のシリアル通信装置間のシリアル転送速度に対応する周期で、上記受信手段から出力された受信監視情報を受信して記憶手段に格納することを特徴とする。
【0023】
またさらに、上記シリアル通信システムにおいて、
上記第1のシリアル通信装置は、上記第2のシリアル通信装置から受信した2つの上記周波数差調整データパケットを含むループバックパケットを折り返して上記第2のシリアル通信装置に返信するためのループバック回路を備え、
上記第2の制御手段は、上記ループバックパケットの2つの周波数差調整データパケット間の間隔を複数通りに変更して、上記ループバックパケットを上記第1のシリアル通信装置のループバック回路に送信して、当該ループバック回路からのループバックパケットを受信し、上記受信手段から出力された受信監視情報を受信して記憶手段に格納することを特徴とする。
【0024】
また、上記シリアル通信システムにおいて、
上記第2の制御手段は、
上記第1及び第2のシリアル通信装置間で通信可能でありかつ第1及び第2のシリアル通信装置間でデータ転送が行われているときに、上記データ転送を行わないように制御し、
上記第1及び第2のシリアル通信装置間で通信可能であるときの初期化シーケンスの実行時、及び上記第1及び第2のシリアル通信装置間で通信可能でありかつ第1及び第2のシリアル通信装置間でデータ転送が行われていないときに、上記ループバックパケットを送信することを特徴とする。
【0025】
さらに、上記シリアル通信システムにおいて、
上記第1の制御手段は、上記第2のシリアル通信装置の記憶手段に格納されている受信監視情報を読み出して送信するように、上記第2のシリアル通信装置の第2の制御手段に対して要求するリードデータパケットを上記第2のシリアル通信装置の第2の制御手段に送信し、
上記第2の制御手段は、上記リードデータパケットに応答して、上記記憶手段に格納されている受信監視情報を読み出して上記第1の制御手段に送信することを特徴とする。
【発明の効果】
【0026】
本発明に係るシリアル通信システムによれば、第1の制御手段は、第2の制御手段から送信された周波数差調整データパケットの正常受信時の受信間隔に基づいて、第2のシリアル通信装置がデータパケットを正常に受信できるように、周波数差調整データパケットの送信間隔を変更するので、従来技術に比較して通信効率を向上できる。
【図面の簡単な説明】
【0027】
【図1】ルートコンプレックスデバイス1とエンドポイントデバイス2とを備えた本発明の実施形態に係るシリアル通信システムの構成を示すブロック図である。
【図2】図1のシリアル通信システムによって実行されるSKIPOS送信間隔調整処理を示すフローチャートである。
【図3】図1のSKIPOS受信制御部53によって実行されるSKIPOS送信間隔調整処理の第1の部分を示すフローチャートである。
【図4】図1のSKIPOS受信制御部53によって実行されるSKIPOS送信間隔調整処理の第2の部分を示すフローチャートである。
【図5】図1のシリアル通信システムにおいて送受信されるループバックパケット81のフォーマットを示すブロック図である。
【図6】図1のシリアル通信システムにおいて、通信中にエラスティックバッファがオーバーフロー又はアンダーフローしたときのSKIPOS送信間隔調整処理を示すフローチャートである。
【図7】SATAにおいて用いられるALIGNプリミティブのフォーマットを示すブロック図である。
【図8】PCI Express規格に準拠して高速シリアル通信を行うルートコンプレックスデバイス100とエンドポイントデバイス200とを備えた従来技術に係るシリアル通信システムの構成を示すブロック図である。
【図9】図8の送信部103及び203から送信されるSKIPオーダード・セット80のフォーマットを示すブロック図である。
【図10】図8の受信部104及び204のエラスティックバッファから出力されるSKIPオーダード・セット90a〜90eの各フォーマットを示すブロック図である。
【図11】図8のシリアル通信システムで用いられるエンベデッドクロック方式での基準クロックREFCLKの供給方法を示すリストである。
【図12】PCI Expressで用いられるスペクトラム拡散クロックを示すグラフである。
【発明を実施するための形態】
【0028】
以下、本発明に係る実施形態について図面を参照して説明する。なお、以下の実施形態において、同様の構成要素については同一の符号を付している。
【0029】
図1は、ルートコンプレックスデバイス1とエンドポイントデバイス2とを備えた本発明の実施形態に係るシリアル通信システムの構成を示すブロック図である。図1において、ルートコンプレックスデバイス1とエンドポイントデバイス2とは、PCI Express規格に準拠するリンク伝送路3を介してデータパケットを送受信する。ここで、ルートコンプレックスデバイス1は、上流側のコンポーネントであって、リンクコントローラ10と、PHY回路20と、アプリケーション層回路40とを備えて構成される。ここで、アプリケーション層回路40は、リンクコントローラ10の動作を制御するためのソフトウエアのプログラムを実行する回路である。また、リンクコントローラ10は、PCI ExpressのMAC層(Media Access Layer)の信号を伝送するLSIであって、SKIPOS送信制御部11と、レジスタ12と、SKIPOS受信制御部13と、連動して切り換えられるスイッチSW1及びSW2とを備えて構成される。さらに、PHY回路20は、PCI Expressの物理層のフィジカルコーディングサブレイヤの信号を伝送するインターフェース回路のLSIである。リンクコントローラ10とPHY回路20とは、PIPEインターフェース規格(非特許文献4参照。)に準拠するパラレル信号伝送路であるPIPE伝送路30を介して互いに接続されており、リンクコントローラ10は、PHY回路20を制御する。
【0030】
また、図1において、PHY回路20は、PLL(Phase Locked Loop)回路22を備えた送信部21と、受信部23とを備えて構成される。送信部21は、PLL回路22によって発生されたクロックに従って動作する。送信部21は、リンクコントローラ10からのデータパケットを受け取り、送信バッファに貯める。そして、送信バッファから出力されたデータパケットには、マルチプレクサにより、データパケットの始まりと終わりを示すためのキャラクタであるフレーミング・シンボルが追加される。さらに、バイト・ストライピング機構は、フレーミング・シンボルが追加されたデータパケットを、利用可能な複数N個のレーンにバイト単位で振り分け、振り分けられた各データパケットに、レジスタ12に格納されているSKIPOS80の送信間隔(以下、SKIPOS送信間隔という。)で、図9のSKIPOS80を挿入する。各レーンに振り分けられたデータパケットは、スクランブルされた後に、8b/10bエンコーダによって10ビットキャラクタに変換され、変換後の10ビットキャラクタはパラレル・シリアル変換器によってシリアルのビット列に変換され、リンク伝送路3に差動信号として出力される。
【0031】
さらに、図1において、受信部23は、PLL回路25と、複数N個のレーンにそれぞれ対応して設けられた受信回路24−1〜24−Nと、バイト・アンストライピング26とを備えて構成される。ここで、受信部23は、PLL回路25によって発生されたクロックに従って動作する。受信回路24−n(n=1,2,…,N)はそれぞれ、差動レシーバと、シリアル・パラレル変換器と、エラスティックバッファと、8b/10bデコーダと、デスクランブラとを備えて構成される。ここで、入力される差動信号は、差動レシーバによって受信され、クロック・データ・リカバリによってクロック再生され、アナログ信号からシリアルのディジタル信号に変換される。このシリアルのビット列はシリアル・パラレル変換器によってパラレル信号に変換されて、エラスティックバッファを介して8b/10bデコーダに出力される。ここで、エラスティックバッファは、PLL回路62によって発生されたクロックとPLL回路25によって発生されたクロックとの周波数差を吸収するように、入力されるパラレル信号に含まれるSKIPOS80のデータ長を調整する。具体的には、エラスティックバッファは、SKIPOS80を受信して格納し、SKIPOS80からSKPキャラクタを削除し、又はSKIPOS80にSKPキャラクタを挿入してSKIPOS90として出力することによりSKIPOS80のデータ長を調整する。8b/10bデコーダは、入力されるパラレル信号を8b/10デコードしてデスクランブラに出力する。デスクランブラは、入力される8b/10デコード後のデータを、送信側と同一のアルゴリズムを用いてデスクランブルして、バイト・アンストライピング26に出力する。最後に、バイト・アンストライピング26は、各受信回路24−1〜24−NからのN個のデータを1つのデータ列に変換し、フレーミング・シンボル及びSKIPOS90などの制御キャラクタを削除した後にリンクコントローラ10に出力する。なお、各受信回路24−nの8b/10bデコーダは、8b/10bデコード時に検出したディスパリティ・エラー(伝送途中でビット値が逆のビット値に変化した場合などに起きる。)及び10bキャラクタとして定義されていない無効な10bキャラクタなどのエラーを、送信部21からのデータパケットを異常受信しているときのエラー検出情報として、リンクコントローラ10に出力する。
【0032】
また、図1において、エンドポイントデバイス2は、下流側のコンポーネントであって、リンクコントローラ50と、PHY回路60とを備えて構成される。ここで、リンクコントローラ50は、PCI ExpressのMAC層の信号を伝送するLSIであって、SKIPOS送信制御部51と、レジスタ52と、SKIPOS受信制御部53と、連動して切り換えられるスイッチSW3及びSW4とを備えて構成される。さらに、PHY回路60は、PCI Expressの物理層のフィジカルコーディングサブレイヤの信号を伝送するインターフェース回路のLSIである。リンクコントローラ50とPHY回路60とは、PIPEインターフェース規格に準拠するパラレル信号伝送路であるPIPE伝送路70を介して互いに接続されている。リンクコントローラ50は、PHY回路60を制御する。
【0033】
また、図1において、PHY回路60は、PLL回路62を備えた送信部61と、受信部63とを備えて構成される。送信部61は、ルートコンプレックスデバイス1の送信部21と同様に構成され、PLL回路62によって発生されたクロックに従って、送信部21と同様に動作して受信部23にデータパケットを送信する。また、受信部63は、ルートコンプレックスデバイス1の受信部23と同様に、PLL回路65と、複数N個のレーンにそれぞれ対応して設けられた受信回路64−1〜64−Nと、バイト・アンストライピング66とを備えて構成され、PLL回路65によって発生されたクロックに従って、受信部23と同様に動作し、送信部21からデータパケットを受信する。
【0034】
なお、各受信回路64−nは、受信監視情報をリンクコントローラ50に出力し、リンクコントローラ50は、各受信回路64−nから出力された受信監視情報をレジスタ52に格納する。ここで、受信監視情報は、各受信回路64−nによって検出されたSKIPOS80の正常受信時の受信間隔と、各受信回路64−nのエラスティックバッファがオーバーフローしているか、若しくはアンダーフローしているかの情報と、各受信回路64−nの8b/10bデコーダが8b/10bデコード時に検出した送信部21からのデータパケットを異常受信しているときのエラー検出情報(ディスパリティ・エラー及び無効な10bキャラクタなどの情報)とを含む。
【0035】
図2は、図1のシリアル通信システムによって実行されるSKIPOS送信間隔調整処理を示すフローチャートである。なお、図2の処理中は、スイッチSW1,SW2,SW3,SW4はそれぞれ、接点a側に切り換えられている。まず始めに、ステップS1において、アプリケーション層回路40が、レジスタ12にデフォルトのSKIPOS送信間隔を格納する。ここで、デフォルトのSKIPOS送信間隔は、PCI Expressで規定されている範囲(1180シンボル期間から1538シンボル期間まで)内の値である。次に、ステップS2において、アプリケーション層回路40が、SKIPOS送信制御部11を、SKIPOS送信間隔をレジスタ12から読み出して、読み出したSKIPOS送信間隔でSKIPOS80を送信するように制御する。これにより、図9のSKIPOS80が、レジスタ12から読み出されたSKIPOS送信間隔で、エンドポイントデバイス2に送信される。送信されたSKIPOS80は、受信回路64−1〜64−Nによって受信される。そして、各受信回路64−nにおいて、PLL回路22によって生成されたクロックとPLL回路65によって生成されたクロックとの周波数差に起因してエラスティックバッファがオーバーフロー及びアンダーフローしないように、SKIPOS80にSKPキャラクタが挿入され、又は削除される(図10参照。)。そして、ステップS3において、SKIPOS受信制御部53が、受信部63から受信監視情報を受信する。
【0036】
次に、ステップS4において、SKIPOS受信制御部53は、SKIPOS80がエンドポイントデバイス2により正常に受信されたか否かを、受信した受信監視情報に基づいて判断し、YESのときはステップS6に進む一方、NOのときはステップS5に進む。ステップS5では、SKIPOS受信制御部53は、受信監視情報を異常受信結果としてレジスタ52に格納する。一方、ステップS6では、SKIPOS受信制御部53は、受信監視情報を正常受信結果としてレジスタ52に格納する。ステップS5又はS6に続いて、ステップS7において、アプリケーション層回路40が、レジスタリードパケットRdを送信するイベントが発生したか否かを判断し、YESのときはステップS8に進む一方、NOのときはステップS7の処理を繰り返す。ここで、ステップS7における「イベント」は、図1のシリアル通信システムの初期化シーケンス時、定期的な所定のタイミング、及びデータ通信中にエラーが多発したときである。
【0037】
ステップS8において、アプリケーション層回路40が、レジスタ52に格納された受信監視情報を読み出して送信することを要求するためのレジスタリードパケットRdをエンドポイントデバイス2に送信するように、SKIPOS送信制御部21を制御する。これに応答して、SKIPOS送信制御部21はレジスタリードパケットRdをエンドポイントデバイス2に送信する。さらに、これに応答して、SKIPOS送信制御部51が、レジスタ52に格納された受信監視情報を読み出して、読み出された受信監視情報をルートコンプレックスデバイス1に送信する。次に、ステップS9において、SKIPOS受信制御部53は、SKIPOS送信制御部51により送信された受信監視情報に基づいて、受信回路64−1〜64−Nの各エラスティックバッファがオーバーフロー又はアンダーフローしているか否かを判断し、YESのときはステップS10に進む一方、NOのときはステップS11に進む。そして、ステップS10において、アプリケーション層回路40が、SKIPOS送信間隔を変更して、変更後のSKIPOS送信間隔をレジスタ12に格納して、ステップS2に戻る。具体的には、受信回路64−1〜64−Nの各エラスティックバッファがオーバーフローしているときは、SKIPOS送信間隔を現在のSKIPOS送信間隔より短くする一方、受信回路64−1〜64−Nの各エラスティックバッファがアンダーフローしているときは、SKIPOS送信間隔を現在のSKIPOS送信間隔より長くする。一方、ステップS11では、アプリケーション層回路40が、SKIPOS送信間隔は最適値であると判断して、レジスタ12内のSKIPOS送信間隔を変更せずに、SKIPOS送信間隔調整処理を終了する。
【0038】
本実施形態によれば、リンク伝送路3を介して互いに接続された一方のデバイス1は送信部21と受信部23とを備え、他方のデバイスは送信部61と受信部63とを備える。また、受信部23の各受信回路24−nは、PLL回路62によって発生されるクロックとPLL回路25によって発生されるクロックとの間の周波数差を吸収するためのエラスティックバッファを備え、受信部63の各受信回路64−nは、PLL回路22によって発生されるクロックとPLL回路65によって発生されるクロックとの間の周波数差を吸収するためのエラスティックバッファを備える。本実施形態において、送信部21及び61はそれぞれ、N個のレーンデータを出力するマルチレーン機能を実装しており、PCI Expressで規定されているTS(Training Sequence)又はSKIPOS80というパケットデータを送信することにより、TS又はSKIPOS80に含まれるCOMキャラクタ(位相調整キャラクタである。)を利用して、各レーン間のスキューを調整する。通常のデータ転送において、送信部21及び61は、1個のCOMキャラクタとそれに続く3個のSKPキャラクタとを含むSKIPOS80を送信する。受信部23及び63のエラスティックバッファでは、上述した周波数差に応じて、SKPキャラクタの数が調整される。
【0039】
図1のシリアル通信システムでは、ルートコンプレックスデバイス1とエンドポイントデバイス2との間でエンベデッドクロック方式の高速シリアル通信が行われる。このとき、PLL回路22,25,61又は65によって発生されたシリアル通信に用いられる基準クロックの周波数の設定値は互いに同一だが、実際には、互いに数百ppm程度異なる可能性がある。また、スペクトラム拡散クロック発生器の使用が可能である。これらのクロックの周波数は、PCI Expressで規定された値よりマージンがある可能性が高い。また、基準クロックが対向デバイスと自デバイスで共通の場合と別の場合がある。そのため、シリアルデータの周波数差が生じ、周期的にSKIPOS80のような周波数差を調整するためのデータパケットを送信する必要がある。両方デバイスで共通のクロックを用い、かつSSCを用いない場合は、上述した周波数差は比較的少ないため、SKIPOS80を送信する頻度は減らすことによりオーバーヘッドを減らせ、転送効率の向上が可能となる。また、SSCの規格値にもマージンがあることが考えられる。
【0040】
本実施形態では、PLL回路22によって発生されるデータパケットの送信処理に用いられるクロックと、PLL回路65によって発生されるデータパケットの受信処理に用いられるクロックとの間に周波数差があり、この周波数差を各受信回路64−n内のエラスティックバッファ(周波数差吸収バッファである。)を用いて吸収するシリアル通信システムにおいて、SKIPOS受信制御部53は、周波数差調整データパケット又は頻度補償コードであるSKIPOS80の正常受信時の受信間隔と、各受信回路64−nのエラスティックバッファがオーバーフローしているか、若しくはアンダーフローしているかの情報と、各受信回路64−nの8b/10bデコーダが8b/10bデコード時に検出した送信部21からのデータパケットを異常受信しているときのエラー検出情報とを含む受信監視情報を、SKIPOS受信制御部13にする。SKIPOS受信制御部13は、受信した受信監視情報に基づいて、SKIPOS送信間隔を調整する。このため、通常のデータ通信時にSKIPOS送信間隔及び送信頻度を最低限の間隔まで減らせるため、従来技術に比較してオーバーヘッドが減らせ、通信データの転送効率を上げることができる。
【0041】
次に、図3及び図4を参照して、図1のSKIPOS受信制御部53によって実行されるSKIPOS送信間隔調整処理を説明する。図3及び図4は、図1のSKIPOS受信制御部53によって実行されるSKIPOS送信間隔調整処理を示すフローチャートである。なお、図4のステップS38〜S40の各処理は、ルートコンプレックスデバイス1のSKIPOS受信制御部13によって実行される。また、図3の処理開始時に、スイッチSW1,SW2,SW3,SW4はそれぞれ、接点a側に切り換えられている。まず始めに、ステップS21において、リンク伝送路3の状態がL0ステートであるか否かが判断され、YESのときはステップS22に進む一方、NOのときはSKIPOS送信間隔調整処理を終了する。ここで、L0ステートは、通常のオペレーション状態で、制御パケット及びデータパケットを送受信できる状態である。
【0042】
ステップS22において、ルートコンプレックスデバイス1が、ループバック回路構成を備えているか否かが判断され、YESのときはステップS23に進む一方、NOのときはステップS26に進む。ここで、ループバック回路構成とは、エンドポイントデバイス2から受信したパケットを折り返してエンドポイントデバイス2に返信するための回路構成である。具体的には、ルートコンプレックスデバイス1のスイッチSW1及びSW2(図1参照。)をそれぞれ接点b側に切り換えたとき、受信部23によって受信されたパケットは、PIPE伝送路30と、スイッチSW2の接点bと、スイッチSW1の接点bと、PIPE伝送路30と、送信部21とを介してエンドポイントデバイス2に返信される。また、エンドポイントデバイス2のスイッチSW3及びSW4(図1参照。)をそれぞれ接点b側に切り換えたとき、受信部63によって受信されたパケットは、PIPE伝送路70と、スイッチSW3の接点bと、スイッチSW4の接点bと、PIPE伝送路70と、送信部71とを介してルートコンプレックスデバイス1に返信される。
【0043】
次に、ステップS23において、データ転送が行われている状態であるか否かが判断され、YESのときはS24に進む一方、NOのときはステップS25に進む。ステップS24では、互いにデータ転送を行わない状態に切り換えるか、あるいは、互いにデータ転送していない状態になるまで待機して、ステップS25に進む。そして、ステップS25では、ループバックパケット81内の2つのSKIPOS80の送信間隔を変更して、ループバックパケット81を送信するように、SKIPOS送信制御部51を制御する。図5は、図1のシリアル通信システムにおいて送受信されるループバックパケット81のフォーマットを示すブロック図である。図5に示すように、ループバックパケット81は、トリガーパケット82と、SKIPOS80と、バーストデータ83と、SKIPOS80と、エンドパケット84とを、この順序で含む。バーストデータ83のデータ長を変更することにより、レジスタ12又は52に格納されたSKIPOS送信間隔を変更することなく、ループバックパケット81内の2つのSKIPOS80の送信間隔を変更できる。
【0044】
ステップS25における具体的な処理内容は、例えば、以下の通りである。まず始めに、スイッチSW1及びSW2はそれぞれ接点b側に切り換えられる。そして、SKIPOS送信制御部51は、ループバックパケット81内の2つのSKIPOS80の間隔を複数通りに変更して、ループバックパケット81をルートコンプレックスデバイス1に送信し、ルートコンプレックスデバイス1からのループバックパケット81を受信するとともに、各受信回路64−nから出力された受信監視情報を受信してレジスタ52に格納する。最後に、スイッチSW1及びSW2はそれぞれ接点a側に切り換えられる。従って、図2のステップS8と同様の処理を実行することにより、SKIPOS受信制御部13は、レジスタ52に格納された複数通りのSKIPOS80の間隔毎の受信監視情報を読み出し、読み出した複数通りのSKIPOS80の間隔毎の受信監視情報に基づいて、SKIPOS送信間隔の許容値を識別することができる。具体的には、ループバックパケット81がエンドポイントデバイス2によって正常受信されたときのSKIPOS80の間隔を、SKIPOS送信間隔の許容値として用いることができる。
【0045】
また、ステップS25における具体的な処理内容の他の例は、以下の通りである。まず始めに、スイッチSW1及びSW2はそれぞれ接点b側に切り換えられる。そして、SKIPOS送信制御部51は、受信データのエラーがなくなるまで、ループバックパケット81内の2つのSKIPOS80の間隔を変更する。エラーがなくなれば、両デバイス1及び2においてともにSKIPOS送信間隔に問題がないと判断する。最後に、スイッチSW1及びSW2はそれぞれ接点a側に切り換えられる。また、エンドポイントデバイス2のSKIPOS受信制御部53でSKIPOS送信間隔の許容値を検出可能であれば、検出された許容値をレジスタ52に格納し、レジスタ52に格納された許容値をルートコンプレックスデバイス1から読み出すことができる。SKIPOS送信間隔の確認を実施するタイミングは、図2のステップS7と同様に、初期化シーケンス時、定期的な所定のタイミング、及びイベント(通信エラーの多発など)が起こったタイミングである。
【0046】
次に、ステップS26において、受信回路64−1〜64−Nにより受信された全受信有効信号が安定して有効となっているか否かが判断され、YESのときはステップS30に進む一方、NOのときはステップS27に進む。ここで、受信回路64−1〜64−Nにより受信された全受信有効信号が安定して有効となっている状態とは、受信回路64−1〜64−Nから、データパケットを異常受信しているときのエラー検出情報が出力されない状態である。各受信有効信号が安定して有効となっていない場合、シンボルロック状態(受信側でシリアルデータをシンボル毎にパラレルデータに変換できる状態)ではない可能性があり、実質の転送レートは悪くなる。ステップS27では、SKIPOS送信間隔の規格を遵守するモードか否かが判断され、YESのときは、ステップS29に進む一方、NOのときはステップS28に進む。なお、ステップS27における判断処理のために、規格を遵守する必要があるかを示すイネーブル信号を予め発生しておき、当該イネーブル信号に基づいて判断処理を行う。ステップS28において、シンボルロックが外れている可能性があるので、規格の範囲外までSKIPOS送信間隔を短く設定してSKIPOS80を送信するように、SKIPOS送信制御部51を制御してステップS26に戻る。一方、ステップS29において、シンボルロックが外れている可能性があるので、規格の範囲外までSKIPOS送信間隔を短く設定してSKIPOS80を送信するように、SKIPOS送信制御部51を制御してステップS26に戻る。以上説明したステップS26〜S29の処理により、SKIPOS送信間隔を短くしてSKIPOS80の送信頻度を上げることにより、SKIPOS80内のCOMシンボルのシンボルロック時の有効信号が安定するときのSKIPOS送信間隔を識別可能である。
【0047】
次に、ステップS30において、エラスティックバッファから出力された各SKIPOS90に含まれるSKPキャラクタの数が適切か否かが判断され、YESのときはステップS34に進む一方、NOのときはステップS31に進む。さらに、ステップS34において、各受信回路64−1〜64−Nのエラスティックバッファがオーバーフロー又はアンダーフローしているか否かが判断され、YESのときはステップS31に進む一方、NOのときはステップS35に進む。
【0048】
ステップS31では、ルートコンプレックスデバイス1及びエンドポイントデバイス2がそれぞれ、SKIPOS送信間隔のエラーをデータパケットを用いて通知可能な回路構成を備えているか否かが判断され、YESのときはステップS33に進む一方、NOのときはステップS32に進む。ステップS32において、レジスタ52に、現在のSKIPOS送信間隔ではエラーが発生することを示す受信監視情報を格納してステップS38に進む。また、ステップS33において、SKIPOS80の受信状態を含むデータパケットをルートコンプレックスデバイス1に送信することにより、受信監視情報をルートコンプレックスデバイス1に送信して、ステップS39に進む。
【0049】
次に、ステップS35では、ルートコンプレックスデバイス1及びエンドポイントデバイス2がそれぞれ、SKIPOS送信間隔のエラーをデータパケットを用いて通知可能な回路構成を備えているか否かが判断され、YESのときはステップS41に進む一方、NOのときはステップS36に進む。そして、ステップS41において、SKIPOS80の受信状態を含むデータパケットをルートコンプレックスデバイス1に送信することにより、受信監視情報をルートコンプレックスデバイス1に送信して、ステップS39に進む。また、ステップS36では、温度センサを用いる方法など別の方法で、SKIPOS80の受信エラーを認識できるか否かが判断され、YESのときはステップS39に進む一方、NOのときはステップS37に進む。
【0050】
ステップS37において、レジスタ52に、現在のSKIPOS送信間隔ではエラーが発生しないことを示す受信監視情報を格納し、続いて、ステップS38において、ルートコンプレックスデバイス1のSKIPOS受信制御部13が、レジスタ52に格納された受信監視情報を読み出す。さらに、ステップS39において、ルートコンプレックスデバイス1のSKIPOS受信制御部13が、受信監視情報に基づいて、SKIPOS送信間隔の最適値を決定する。最後に、ステップS40において、ルートコンプレックスデバイス1のSKIPOS受信制御部13が、決定されたSKIPOS送信間隔の最適値を、レジスタ12に格納して、SKIPOS送信間隔調整処理を終了する。
【0051】
図3及び図4の処理によれば、ステップS30において、各SKIPOS90に含まれるSKPキャラクタの数が適切か否かを判断し、適切でない場合には、エラーが発生していることをルートコンプレックスデバイス1に通知できる。このとき、ハードウエア又はソフトウエアを用いてエラー状態を通知可能な場合(ステップS31においてYESの場合)には、ステップS33において即座にSKIPOS80の受信状態を含むデータパケットを送り、ルートコンプレックスデバイス1にエラー状態を通知する。一方、エラー状態を通知可能でない場合(ステップS31においてNOの場合)には、ステップS32において、エラー状態であることを示す受信監視情報をレジスタ52に格納しておき、ルートコンプレックスデバイス1により読み取り可能であるようにする。以上の動作は、ハードウエア同様にソフトウエアでも実現することも可能である。
【0052】
なお、図4において、ステップS31においてYESの場合、ステップS32に進んでもよい。また、ステップS35においてYESの場合、及びステップS36においてYESの場合は、ステップS37に進んでもよい。
【0053】
また、図3及び図4の処理はSKIPOS受信制御部53によって実行されたが、本発明はこれに限らず、SKIPOS受信制御部13によって同様に実行されてもよい。
【0054】
次に、図6を参照して、図1のシリアル通信システムにおいて、通信中にエラスティックバッファがオーバーフロー又はアンダーフローしたときのSKIPOS送信間隔調整処理を説明する。まず始めに、ステップS50において、アプリケーション層回路40が、レジスタ12にデフォルトのSKIPOS送信間隔を格納する。次に、ステップS51において、アプリケーション層回路40が、SKIPOS送信制御部11を、SKIPOS送信間隔をレジスタ12から読み出して、読み出したSKIPOS送信間隔でSKIPOS80を送信するように制御する。次に、ステップS52において、SKIPOS受信制御部53は、エンドポイントデバイス2において受信エラーが多発するか否かを判断し、YESのときはステップS53に進む一方、NOのときはSKIPOS送信間隔調整処理を終了する。
【0055】
ステップS53において、ルートコンプレックスデバイス1及びエンドポイントデバイス2はそれぞれ、SKIPOS送信間隔のエラーをデータパケットを用いて通知可能な回路構成を備えているか否かが判断され、YESのときはステップS57に進む一方、NOのときはステップS54に進む。ステップS57では、アプリケーション層回路40が、レジスタリードパケットRdをエンドポイントデバイス2に送信するように送信部21を制御し、これに応答して、SKIPOS受信制御部53が、レジスタ52に格納された受信監視情報を読み出して、読み出された受信監視情報を含むパケットをルートコンプレックスデバイス1に送信する。引き続き、ステップS58において、SKIPOS送信間隔をデフォルトのSKIPOS送信間隔に戻す、又は現在のSKIPOS送信間隔より短くして、レジスタ12に格納し、ステップS59において、図2のSKIPOS送信間隔調整処理を実行して、通信中にエラスティックバッファがオーバーフロー又はアンダーフローしたときのSKIPOS送信間隔調整処理を終了する。ただし、ステップS59では、図2のSKIPOS送信間隔調整処理のステップS2以降の処理が実行される。
【0056】
一方、ステップS54では、ルートコンプレックスデバイス1が、NAK及びエラーメッセージの頻度を観測するための回路を備えているか否かが判断され、YESのときはステップS55に進む一方、NOのときはステップS56に進む。ステップS55では、NAK及びエラーメッセージの頻度が変化するか否かが判断され、YESのときはステップS58に進む一方、NOのときは、SKIPOS送信間隔調整処理を終了する。また、ステップS56において、エンドポイントデバイス2の受信状態を定期的に確認して受信エラーの状態を確認できたか否かが判断され、YESのときはステップS58に進む一方、NOのときはSKIPOS送信間隔調整処理を終了する。なお、ステップS54においてYESのときはステップS56に進んでもよい。
【0057】
SKIPOS送信間隔を調べる動作は、初期化シーケンス時、定期的な所定のタイミング、又は所定のイベント毎に実施するように選択できるようにする。イベント毎に実施する場合には、特に図6のフローチャートを適用できる。図6において、データ通信中にエラーが多発した場合、エラーが多発したことを、エンドポイントデバイス2からルートコンプレックスデバイス1に、データパケットを用いて通知する。これに応答して、ルートコンプレックスデバイス1はSKIPOS送信間隔を変更する(ステップS58)。一方、エラーを通知するデータパケットを認識できない回路構成の場合(ステップS53でNOの場合)、ルートコンプレックスデバイス1が、NAK及びエラーメッセージの頻度を観測可能な回路構成を有しているときは、上記頻度が変われば、SKIPOS送信間隔を変えることができる。また、ルートコンプレックスデバイス1が、NAK及びエラーメッセージの頻度を観測可能な回路構成を有していないときは、エンドポイントデバイス2の受信状態を定期的に確認して、エラー状態を確認する。
【0058】
本実施形態の特徴及び効果を要約すると以下の通りである。
【0059】
本実施形態によれば、ルートコンプレックスデバイス1の送信部21で用いられるクロックとエンドポイントデバイス2の受信部63で用いられるクロックとの間で周波数差があるシリアル通信システムにおいて、SKIPOS受信制御部53は周波数差調整データパケットであるSKIPOS80の受信状態を検出して、検出した受信状態を、受信監視情報としてルートコンプレックスデバイス1に通知できる。また、ルートコンプレックスデバイス1では、通知された受信監視情報に基づいてSKIPOS送信間隔を調整できる。このため、通常のデータ通信時にSKIOPOS80の送信頻度を減らせるため、従来技術に比較してオーバーヘッドが減らせ、通信データの転送効率を上げることができる。
【0060】
また、図3のSKIPOS送信間隔調整処理において、リンク伝送路3が正常かつデータ通信可能状態(L0ステート)であり、かつ各受信有効信号が安定して有効になっている場合に、各SKIPOS90に含まれるSKPキャラクタの数を監視し、さらに、エラスティックバッファがオーバーフローまたはアンダーフローしているか否かを監視する。そして、各受信有効信号が安定して有効ではないとき、又はエラスティックバッファがオーバーフローまたはアンダーフローしている場合には、以下のように制御する。
(1)SKIPOS送信間隔のエラーをデータパケットを用いて通知可能であるときは、当該データパケットを用いて受信監視情報をルートコンプレックスデバイス1に送信する。
(2)SKIPOS送信間隔のエラーを、データパケットを用いて通知可能できないときは、受信監視情報をレジスタ52に格納する。これにより、ルートコンプレックスデバイス1が、ソフトウエアによりレジスタ52から受信監視情報を読み出すことができる。
【0061】
さらに、図2に示すように、アプリケーション層回路40がレジスタ12にSKIPOS送信間隔を書き込むことにより、SKIPOS送信間隔を変更してSKIPOS80をエンドポイントデバイス2に送信できる。また、エンドポイントデバイス2は、受信監視情報を格納するレジスタ52を備え、アプリケーション層回路40は、レジスタ52に格納された受信監視情報を読み出してSKIPOS送信間隔を変更できる。本実施形態によれば、図2の処理をソフトウエアで実現でき、比較的柔軟な制御が可能である。なお、図2の処理を、SKIPOS送信制御部11のハードウエアで実現してもよい。これにより、ソフトウエアで実現する場合に比較して、高速にSKIPOS送信間隔を調整でき、リアルタイム性が高くなる。
【0062】
またさらに、図3のステップS27〜S29に示すように、規格の範囲内又は範囲外でSKIPOS送信間隔を動的に変更できる。なお、規格を遵守しない場合には、規格を遵守する場合よりも転送効率を上げることができる。
【0063】
また、図3のステップS26においてNOの場合、SKIPOS送信間隔を短くするので、SKIPOS90内のCOMキャラクタでシンボルロックして有効信号が安定するときのSKIPOS送信間隔を識別できる。これにより、受信有効信号に基づいて、安定動作するときのSKIPOS送信間隔を識別でき、結果として従来技術に比較して通信効率を向上できる。
【0064】
さらに、初期化シーケンス時、定期的な所定のタイミング、及び通常のパケット通信時にエラーが発生したときにSKIPOS送信間隔を調整するので、通信負荷の影響への信頼性を高めることが可能である。
【0065】
またさらに、図3のステップS21〜ステップS25に示すように、ルートコンプレックスデバイス1がループバック回路構成を備えている場合、データ通信可能な状態(L0ステート)において、ループバックパケット81を用いる。また、ループバックパケット81を用いる処理は、通信可能な状態での初期化シーケンス、又は通信可能な状態でかつ双方のデバイス1及び2でデータ転送が行われていない状態で行われる。さらに、データ転送が行われているときは、データ転送を行わないように制御する。これにより、バーストデータ80と2つのSKIPOS80の送出間隔を変えたループバックパケット81が、対向デバイスを回って戻ってきたとき、対向デバイスのレジスタに格納された受信監視情報に基づいて、SKIPOS送信間隔の許容値を識別できる。これにより、SKIPOS送信間隔を互いのデバイス1及び2で変更せずに処理が可能であるため、ループバックパケット81を用いない場合に比較して、迅速に確認動作を実施できる。また、SKIPOS送信制御部51から送信して、SKIPOS受信制御部53で受信するまでの確認間隔を短くすることで、確認時間短縮が可能である。
【0066】
変形例.
なお、通信中に対向デバイス1又は2から送られてくるSKIPOS80の平均の送信間隔が変わることにより、通知することができる回路構成を備えてもよい。また、温度センサを用いてエラー状態を検出する回路構成を備えてもよい。具体的には、温度センサを使用する場合は、データ転送時にエラーが発生しなかったときの温度の上限値を予めレジスタ12及び52に格納しておき、温度センサによって検出された温度がレジスタ12又は52に格納された値よりも高いときに、SKIPOS送信間隔を変更するように構成してもよい。
【0067】
また、リンクコントローラ50は、初期化シーケンス時、定期的な所定のタイミング、及びルートコンプレックスデバイス1とエンドポイントデバイス2との間で通信中にエラーが発生したときに、各受信回路64−nから出力された受信監視情報を受信してレジスタ52に格納してもよい。さらに、SKIPOS送信間隔を変更した後に対向デバイスの状況を確認する場合、リンクコントローラ50は、SSCの変調周波数に対応する周期で、各受信回路64−nから出力された受信監視情報を受信してレジスタ52に格納してもよい。このとき、SSCの変調周波数の初期値は、規格値として、ソフトウエアで設定可能なものとしてもよい。例えば、SSCの変調周波数に応じて、SKIPOS80間に受信検出する区間を定めることが可能な回路構成とすることにより、無駄な検出動作をしないようにできる。またさらに、リンクコントローラ50は、シリアル転送速度に対応する周期で、各受信回路64−nから出力された受信監視情報を受信してレジスタ52に格納してもよい。
【0068】
また、上流側のデバイスのSKIPOS送信間隔がパケット通信で変更可能であれば、通信時でも変更して、上流側のデバイスのSKIPOS送信間隔を変更して、最適値を認識することができる。
【0069】
以上説明した実施形態では、PCI Expressに準拠したシリアル通信システムについて説明したが、本発明はこれに限らず、USB3.0(非特許文献5参照。)、SATA(非特許文献6参照。)、SATA3.0、Fibre Channel、Gigabit Ethernet、infiniBand、又は8b/10bエンコードを用いるIEEE 1394などの規格に準拠して高速シリアル通信を行うシリアル通信システムに広く適用できる。特に、USBでは、PCI Expressと同様に、周波数差調整データパケットSKPOSが用いられている。また、SATAでは、図7に示すように、周波数差調整データパケットとして、ALIGNプリミティブが用いられている。ALIGNプリミティブの機能はSKIPOS80の機能と実質的に同一である。ALIGNプリミティブは、ホストと他のデバイスと間のクロックのずれを調整するために256データワードごとに挿入される。受信側のクロックが遅い場合は、受信側でALIGNプリミティブを破棄することでクロックのずれを調整する。
【0070】
また、PCI Express2.0及びSATA3.0では、転送レートが変えられる仕様となっている(例えば、PCI Express gen2では、2.5GT/sから5GT/s)ため、転送レートに応じて、SKIPOS送信間隔を確認可能な回路構成としてもよい。
【産業上の利用可能性】
【0071】
以上説明したように、本発明に係るシリアル通信システムによれば、第1の制御手段は、第2の制御手段から送信された周波数差調整データパケットの正常受信時の受信間隔に基づいて、第2のシリアル通信装置がデータパケットを正常に受信できるように、周波数差調整データパケットの送信間隔を変更するので、従来技術に比較して通信効率を向上できる。
【符号の説明】
【0072】
1…ルートコンプレックスデバイス、
2…エンドポイントデバイス、
3…リンク伝送路、
10…リンクコントローラ、
11…SKIPOS送信制御部、
12…レジスタ、
13…SKIPOS受信制御部、
20…PHY回路、
21…送信部、
22…PLL回路、
23…受信部、
24−1〜24−N…受信回路、
25…PLL回路、
26…バイト・アンストライピング、
30…PIPE伝送路、
40…アプリケーション層回路、
50…リンクコントローラ、
51…SKIPOS送信制御部、
52…レジスタ、
53…SKIPOS受信制御部、
60…PHY回路、
61…送信部、
62…PLL回路、
63…受信部、
64−1〜64−N…受信回路、
65…PLL回路、
66…バイト・アンストライピング、
70…PIPE伝送路、
80…SKIPオーダード・セット。
【先行技術文献】
【特許文献】
【0073】
【特許文献1】特表2007−517334号公報。
【特許文献2】特開2008−172657号公報。
【特許文献3】特開2009−224977号公報。
【非特許文献】
【0074】
【非特許文献1】荒井信隆ほか,「改訂新版PCI Express入門講座」,電波新聞社,2008年6月20日改訂版発行。
【非特許文献2】PCI-SIG, “PCI Express Base Specification Revision 2.0”, December 2006.
【非特許文献3】PCI-SIG, “PCI Express Card Electromechanical Specification Revision 2.0”, April 11, 2007.
【非特許文献4】Intel Corporation, “PHY Interface for the PCI Express Architecture Version 2.00”, July 21, 2007.
【非特許文献5】Hewlett-Packard Company et al., “Universal Serial Bus 3.0 Specification Revision 1.0”, November 12,2008.
【非特許文献6】Dell Computer Corporation et al., “Serial ATA II: Extensions to Serial ATA 1.0a Revision 1.2”, August 27, 2004.
【特許請求の範囲】
【請求項1】
周波数差調整データパケットをデータパケットに所定の送信間隔で挿入し、所定の第1のクロックに従って送信する送信手段と、上記送信手段を制御する第1の制御手段とを備えた第1のシリアル通信装置と、
所定の通信規格に準拠する伝送路を介して上記データパケットを受信し、所定の第2のクロックに従って処理するときに、上記第1のクロックと上記第2のクロックとの周波数差を吸収するように上記周波数差調整データパケットのデータ長を調整する受信手段と、上記受信手段を制御する第2の制御手段とを備えた第2のシリアル通信装置とを備えたシリアル通信システムにおいて、
上記第2の制御手段は、上記周波数差調整データパケットの正常受信時の受信間隔を検出して上記第1の制御手段に送信し、
上記第1の制御手段は、上記送信された周波数差調整データパケットの正常受信時の受信間隔に基づいて、上記第2のシリアル通信装置が上記データパケットを正常に受信できるように、上記送信間隔を変更することを特徴とするシリアル通信システム。
【請求項2】
上記周波数差調整データパケットは、所定の周波数差調整用キャラクタを含み、
上記受信手段は、上記周波数差調整データパケットを受信して格納し、当該周波数差調整データパケットから上記周波数差調整用キャラクタを削除し、又は上記周波数差調整データパケットに上記周波数差調整データパケットを挿入して出力することにより上記周波数差調整データパケットのデータ長を調整するエラスティックバッファを備え、上記エラスティックバッファがオーバーフローしているか、若しくはアンダーフローしているかの受信監視情報を出力し、
上記第2の制御手段は、上記出力された受信監視情報を受信して記憶手段に格納し、上記格納された受信監視情報を読み出して上記第1の制御手段に送信し、
上記第1の制御手段は、上記第2の制御手段から送信された受信監視情報に基づいて、上記エラスティックバッファがオーバーフローしているときは上記送信間隔を短くする一方、上記エラスティックバッファがアンダーフローしているときは上記送信間隔を長くすることを特徴とする請求項1記載のシリアル通信システム。
【請求項3】
上記第1の制御手段は、上記通信規格によって規定された送信間隔の範囲内で、上記送信間隔を変更することを特徴とする請求項1又は2記載のシリアル通信システム。
【請求項4】
上記第1の制御手段は、上記通信規格によって規定された送信間隔の範囲外で、上記送信間隔を変更することを特徴とする請求項1又は2記載のシリアル通信システム。
【請求項5】
上記受信監視情報は、上記送信手段からのデータパケットを異常受信しているときのエラー検出情報を含み、
上記第1の制御手段は、上記エラー検出情報に基づいて、上記送信間隔を短くすることを特徴とする請求項1乃至4のうちのいずれか1つに記載のシリアル通信システム。
【請求項6】
上記第2の制御手段は、初期化シーケンス時、定期的な所定のタイミング、及び上記第1及び第2のシリアル通信装置間で通信中にエラーが発生したときに、上記受信手段から出力された受信監視情報を受信して記憶手段に格納することを特徴とする請求項1乃至5のうちのいずれか1つに記載のシリアル通信システム。
【請求項7】
上記第2の制御手段は、スペクトラム拡散クロックの変調周波数に対応する周期で、又は、上記第1及び第2のシリアル通信装置間のシリアル転送速度に対応する周期で、上記受信手段から出力された受信監視情報を受信して記憶手段に格納することを特徴とする請求項1乃至6のうちのいずれか1つに記載のシリアル通信システム。
【請求項8】
上記第1のシリアル通信装置は、上記第2のシリアル通信装置から受信した2つの上記周波数差調整データパケットを含むループバックパケットを折り返して上記第2のシリアル通信装置に返信するためのループバック回路を備え、
上記第2の制御手段は、上記ループバックパケットの2つの周波数差調整データパケット間の間隔を複数通りに変更して、上記ループバックパケットを上記第1のシリアル通信装置のループバック回路に送信して、当該ループバック回路からのループバックパケットを受信し、上記受信手段から出力された受信監視情報を受信して記憶手段に格納することを特徴とする請求項1乃至7のうちのいずれか1つに記載のシリアル通信システム。
【請求項9】
上記第2の制御手段は、
上記第1及び第2のシリアル通信装置間で通信可能でありかつ第1及び第2のシリアル通信装置間でデータ転送が行われているときに、上記データ転送を行わないように制御し、
上記第1及び第2のシリアル通信装置間で通信可能であるときの初期化シーケンスの実行時、及び上記第1及び第2のシリアル通信装置間で通信可能でありかつ第1及び第2のシリアル通信装置間でデータ転送が行われていないときに、上記ループバックパケットを送信することを特徴とする請求項8記載のシリアル通信システム。
【請求項10】
上記第1の制御手段は、上記第2のシリアル通信装置の記憶手段に格納されている受信監視情報を読み出して送信するように、上記第2のシリアル通信装置の第2の制御手段に対して要求するリードデータパケットを上記第2のシリアル通信装置の第2の制御手段に送信し、
上記第2の制御手段は、上記リードデータパケットに応答して、上記記憶手段に格納されている受信監視情報を読み出して上記第1の制御手段に送信することを特徴とする請求項2乃至9のうちのいずれか1つに記載のシリアル通信システム。
【請求項1】
周波数差調整データパケットをデータパケットに所定の送信間隔で挿入し、所定の第1のクロックに従って送信する送信手段と、上記送信手段を制御する第1の制御手段とを備えた第1のシリアル通信装置と、
所定の通信規格に準拠する伝送路を介して上記データパケットを受信し、所定の第2のクロックに従って処理するときに、上記第1のクロックと上記第2のクロックとの周波数差を吸収するように上記周波数差調整データパケットのデータ長を調整する受信手段と、上記受信手段を制御する第2の制御手段とを備えた第2のシリアル通信装置とを備えたシリアル通信システムにおいて、
上記第2の制御手段は、上記周波数差調整データパケットの正常受信時の受信間隔を検出して上記第1の制御手段に送信し、
上記第1の制御手段は、上記送信された周波数差調整データパケットの正常受信時の受信間隔に基づいて、上記第2のシリアル通信装置が上記データパケットを正常に受信できるように、上記送信間隔を変更することを特徴とするシリアル通信システム。
【請求項2】
上記周波数差調整データパケットは、所定の周波数差調整用キャラクタを含み、
上記受信手段は、上記周波数差調整データパケットを受信して格納し、当該周波数差調整データパケットから上記周波数差調整用キャラクタを削除し、又は上記周波数差調整データパケットに上記周波数差調整データパケットを挿入して出力することにより上記周波数差調整データパケットのデータ長を調整するエラスティックバッファを備え、上記エラスティックバッファがオーバーフローしているか、若しくはアンダーフローしているかの受信監視情報を出力し、
上記第2の制御手段は、上記出力された受信監視情報を受信して記憶手段に格納し、上記格納された受信監視情報を読み出して上記第1の制御手段に送信し、
上記第1の制御手段は、上記第2の制御手段から送信された受信監視情報に基づいて、上記エラスティックバッファがオーバーフローしているときは上記送信間隔を短くする一方、上記エラスティックバッファがアンダーフローしているときは上記送信間隔を長くすることを特徴とする請求項1記載のシリアル通信システム。
【請求項3】
上記第1の制御手段は、上記通信規格によって規定された送信間隔の範囲内で、上記送信間隔を変更することを特徴とする請求項1又は2記載のシリアル通信システム。
【請求項4】
上記第1の制御手段は、上記通信規格によって規定された送信間隔の範囲外で、上記送信間隔を変更することを特徴とする請求項1又は2記載のシリアル通信システム。
【請求項5】
上記受信監視情報は、上記送信手段からのデータパケットを異常受信しているときのエラー検出情報を含み、
上記第1の制御手段は、上記エラー検出情報に基づいて、上記送信間隔を短くすることを特徴とする請求項1乃至4のうちのいずれか1つに記載のシリアル通信システム。
【請求項6】
上記第2の制御手段は、初期化シーケンス時、定期的な所定のタイミング、及び上記第1及び第2のシリアル通信装置間で通信中にエラーが発生したときに、上記受信手段から出力された受信監視情報を受信して記憶手段に格納することを特徴とする請求項1乃至5のうちのいずれか1つに記載のシリアル通信システム。
【請求項7】
上記第2の制御手段は、スペクトラム拡散クロックの変調周波数に対応する周期で、又は、上記第1及び第2のシリアル通信装置間のシリアル転送速度に対応する周期で、上記受信手段から出力された受信監視情報を受信して記憶手段に格納することを特徴とする請求項1乃至6のうちのいずれか1つに記載のシリアル通信システム。
【請求項8】
上記第1のシリアル通信装置は、上記第2のシリアル通信装置から受信した2つの上記周波数差調整データパケットを含むループバックパケットを折り返して上記第2のシリアル通信装置に返信するためのループバック回路を備え、
上記第2の制御手段は、上記ループバックパケットの2つの周波数差調整データパケット間の間隔を複数通りに変更して、上記ループバックパケットを上記第1のシリアル通信装置のループバック回路に送信して、当該ループバック回路からのループバックパケットを受信し、上記受信手段から出力された受信監視情報を受信して記憶手段に格納することを特徴とする請求項1乃至7のうちのいずれか1つに記載のシリアル通信システム。
【請求項9】
上記第2の制御手段は、
上記第1及び第2のシリアル通信装置間で通信可能でありかつ第1及び第2のシリアル通信装置間でデータ転送が行われているときに、上記データ転送を行わないように制御し、
上記第1及び第2のシリアル通信装置間で通信可能であるときの初期化シーケンスの実行時、及び上記第1及び第2のシリアル通信装置間で通信可能でありかつ第1及び第2のシリアル通信装置間でデータ転送が行われていないときに、上記ループバックパケットを送信することを特徴とする請求項8記載のシリアル通信システム。
【請求項10】
上記第1の制御手段は、上記第2のシリアル通信装置の記憶手段に格納されている受信監視情報を読み出して送信するように、上記第2のシリアル通信装置の第2の制御手段に対して要求するリードデータパケットを上記第2のシリアル通信装置の第2の制御手段に送信し、
上記第2の制御手段は、上記リードデータパケットに応答して、上記記憶手段に格納されている受信監視情報を読み出して上記第1の制御手段に送信することを特徴とする請求項2乃至9のうちのいずれか1つに記載のシリアル通信システム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【公開番号】特開2012−63913(P2012−63913A)
【公開日】平成24年3月29日(2012.3.29)
【国際特許分類】
【出願番号】特願2010−206701(P2010−206701)
【出願日】平成22年9月15日(2010.9.15)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.ETHERNET
【出願人】(000006747)株式会社リコー (37,907)
【Fターム(参考)】
【公開日】平成24年3月29日(2012.3.29)
【国際特許分類】
【出願日】平成22年9月15日(2010.9.15)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.ETHERNET
【出願人】(000006747)株式会社リコー (37,907)
【Fターム(参考)】
[ Back to top ]