(57)【要約】【解決手段】複数の符号が、第１の集積回路（ＩＣ）デバイスで受信され、これらの複数の符号は、第２のＩＣデバイスによって伝送され、シリアルポイントツーポイントリンク上で受信される。これらの複数の符号は、前記第２のデバイスによってデータシーケンス中に挿入された非データシーケンスを含む前記複数の符号はバッファにロードされる。前記データシーケンスおよび前記非データシーケンスのいくらかは、アンロードポインタの変更に応じて前記バッファからアンロードされる。前記バッファのオーバーフローを妨げるべく、前記非データシーケンスの検出に応じて、前記アンロードポインタは、１つのエントリ以上変化され、前記バッファにロードされた前記非データシーケンスの非データ符号は、前記バッファからアンロードされる間はスキップされる。他の実施形態によれば、前記バッファのアンダーフローを妨げるべく、非データ符号を含む前記アンロードポインタが前記バッファの入力においてアンロード中に停止される。また、他の複数の実施形態が記載され、請求項に記載されている。
2007517334.tif 000002
【特許請求の範囲】
【請求項１】
ａ）第１の集積回路（ＩＣ）デバイスの複数の符号を受信する段階であって、前記複数の符号が、第２のＩＣデバイスによって伝送され、シリアルポイントツーポイントを越えて受信され、前記複数の符号は、前記第２のＩＣデバイスによって、データシーケンスに予め定められた方法に従って挿入された非データシーケンスを含む段階と、
ｂ）ロードポインタに従ってバッファ中に前記複数の符号をロードする段階と、
ｃ）前記バッファの異なる複数のエントリを示すアンロードポインタの変化に従って、前記データシーケンスおよび前記バッファからの前記非データシーケンスのいくつかをアンロードする段階であって、前記アンロードポインタは、符号がアンロードされる時間ごとに１エントリずつ変化する段階と、
ｄ）（ｉ）前記バッファの入力で前記非データシーケンスを検出する段階、および（ｉｉ）前記バッファを通したそのような検出を言及するインジケータを通過させる段階と、前記バッファにロードされた、前記非データシーケンスの非データ符号がｃ）でアンロードしている間にスキップされるべく、前記アンロードポインタを１つのエントリ以上変化させる段階
に応じて前記バッファのオーバーフローを妨げる段階
を備える方法。
【請求項２】
前記非データシーケンスが、前記非データシーケンスの非データ符号とは異なる第２の非データ符号に続く第１の非データ符号を検出することによって検出される
請求項１に記載の方法。
【請求項３】
前記インジケータの前記通過させる段階が、
前記非データシーケンスの前記第１および第２の非データ符号の検出に応じてフラグを生成する段階、および、前記フラグを前記非データシーケンスとともにｂ）における前記バッファにロードした場合に、前記第１の非データ符号と前記フラグとを配列する段階
を含む請求項２に記載の方法。
【請求項４】
前記第２の非データ符号が、前記バッファにロードされる際にスキップされるべく、前記バッファの出力での前記フラグの検出に応じて前記アンロードポインタがｄ）において変化する
請求項３に記載の方法。
【請求項５】
前記非データシーケンスが、非データ符合ＳＫＰの後に続く非データ符号ＣＯＭを含むＰＣＩ  Ｅｘｐｒｅｓｓシーケンスである
請求項１に記載の方法。
【請求項６】
ａ）第１の集積回路（ＩＣ）デバイス中で複数の符号を受信する段階であって、前記符号が、第２のＩＣデバイスによって伝送され、前記第１および第２のＩＣデバイスを接続するシリアルポイントツーポイントリンクの上で受信され、前記複数の符号は、前記第２のＩＣデバイスによってデータシーケンス中に挿入された非データシーケンスを含む段階と、
ｂ）ロードポインタに従ってバッファ中に前記複数の符号をロードする段階と、
ｃ）変化したアンロードポインタに従って前記バッファから前記データシーケンスおよび前記非データシーケンスのいくつかをアンロードする段階であって、前記アンロードポインタが、符号がアンロードされる各時間ごとに前記バッファの１つのエントリで変化する段階と、
ｄ）（ｉ）前記バッファの入力で前記非データシーケンスを検出する段階、および（ｉｉ）前記バッファを通したそのような検出を言及するインジケータを通過させる段階、およびｃ）におけるアンロードする段階中に非データ符号を含んだ前記バッファのエントリにおいて前記アンロードポインタを停止する段階
に応じて前記バッファのアンダーフローを妨げる段階
を備える方法。
【請求項７】
前記非データシーケンス中の非データ符号とは異なる、第２がその後に続く第１の非データ符号の組み合わせの検出により、前記非データシーケンスが検出される
請求項６に記載の方法。
【請求項８】
前記インジケータを通過させる前記段階が、
前記非データシーケンスの前記第１および第２の非データ符号の検出に応じてフラグを生成する段階、および、前記非データシーケンスをｂ）における前記バッファにロードした場合に、前記第１の非データ符号と前記フラグとを配列する段階
を含む請求項７に記載の方法。
【請求項９】
前記バッファの出力において前記フラグが検出されることに応じて、前記非データシーケンスの前記第２の非データ符号を含む前記バッファのエントリにおいて前記アンロードポインタが停止される
請求項８に記載の方法。
【請求項１０】
前記非データシーケンスが、非データ符合ＳＫＰの後に続く非データ符号ＣＯＭを含むＰＣＩ  Ｅｘｐｒｅｓｓシーケンスである
請求項６に記載の方法。
【請求項１１】
シリアルポイントツーポイントリンク上を他のＩＣデバイスが伝送した複数の符号を受信する入力を有する、複数のエントリを有するバッファと、
前記複数の符号を受信する入力、および前記バッファの非データ符号シーケンス識別子の前記入力を供給する出力を有する検出ロジックと、
各々、前記バッファの前記複数のエントリ内に前記複数の符号を連続的にロードする第１のポインタを提供する第１のポインタロジックと、
各々、前記バッファの前記複数のエントリから前記複数の符号を連続的にアンロードする第２のポインタを提供する第２のポインタロジックと、
前記第１および第２のポインタを比較する比較ロジックと、
前記第２のポインタロジックに接続する出力を有するポインタ制御ロジックと
を備え、
前記ポインタ制御ロジックは、ａ）前記バッファの出力に現れた前記識別子、およびｂ）前記バッファが、予め定められた閾値よりも少なく満たされていることを示す前記比較ロジック
に応じて、前記第２のポインタを非データ符号を含むエントリにおいて停止させる
集積回路（ＩＣ）デバイス。
【請求項１２】
前記複数の符号が、前記他のＩＣデバイスの伝送クロックに由来する第１のクロック信号に応じて受信される
請求項１１に記載のＩＣデバイス。
【請求項１３】
前記第１のクロック信号が、前記複数の符号を含む情報のストリームに埋め込まれた前記伝送クロックに由来し、前記他のＩＣデバイスによって伝送される
請求項１２に記載のＩＣデバイス。
【請求項１４】
前記第２のポインタロジックは、前記ＩＣデバイスのローカルクロックに由来する第２のクロック信号に応じて前記第２のポインタを前進させ、
前記第１のポインタロジックは、前記第１のクロック信号に応じて前記第１のポインタを前進させる
請求項１２に記載のＩＣデバイス。
【請求項１５】
プロセッサと、
主メモリと、
前記プロセッサおよび前記主メモリに通信すべく接続され、前記プロセッサにＩ／Ｏアクセスを提供し、シリアル、ポイントツーポイントリンクをサポートするリンクインターフェース回路を有する集積回路（ＩＣ）デバイスと
を備え、
前記回路は、
前記リンクの上を伝送した複数の符号を受信する入力を有し、複数のエントリを有するバッファと、
前記複数の符号を受信する入力、および前記バッファの非データ符号シーケンス識別子の前記入力を供給する出力を有する検出ロジックと、
各々、前記バッファの前記複数のエントリ内に前記複数の符号をロードする第１のポインタを提供する第１のポインタロジックと、
各々、前記バッファの前記複数のエントリから前記複数の符号を連続的にアンロードする第２のポインタを提供する第２のポインタロジックと、
前記第１および第２のポインタを比較する比較ロジックと、
前記第２のポインタロジックに接続する出力を有するポインタ制御ロジックと
を備え、
前記ポインタ制御ロジックは、ａ）前記バッファの出力に現れた前記識別子、およびｂ）前記バッファが、予め定められた閾値よりも少なく満たされていることを示す前記比較ロジック
に応じて、前記第２のポインタを非データ符号を含むエントリにおいて停止させる
システム。
【請求項１６】
前記複数の符号が、他のデバイスの伝送クロックからの前記ＩＣデバイスに由来する第１のクロック信号に応じて受信される
請求項１５に記載のシステム。
【請求項１７】
前記第１のクロック信号が、前記複数の符号を含む情報のストリームに埋め込まれた前記伝送クロックに由来し、前記他のデバイスによって伝送される
請求項１６に記載のシステム。
【請求項１８】
前記第２のポインタロジックは、ルートコンプレックスのローカルクロックに由来する第２のクロック信号に応じて前記第２のポインタを前進させ、
前記第１のポインタロジックは、前記第１のクロック信号に応じて前記第１のポインタを前進させる
請求項１６に記載のシステム。
【請求項１９】
グラフィックス構成要素
をさらに備え、
前記ＩＣデバイスが、前記プロセッサと、前記主メモリおよび前記グラフィックス構成要素とを通信すべく接続する、メモリコントローラハブ（ＭＣＨ）である
請求項１５に記載のシステム。
【請求項２０】
前記ＩＣデバイスが、前記プロセッサと複数の周辺機器デバイスとを通信すべく接続するＩ／Ｏコントローラハブ（ＩＣＨ）である
請求項１５に記載のシステム。
【請求項２１】
予め定められた非データ符号シーケンスをエラスティックバッファの入力で検出する段階と、
前記エラスティックバッファを通った前記シーケンスの検出を示す識別子を通過する段階と、
前記エラスティックバッファ中でオーバーフローおよびアンダーフローの状態の１つを避けるべく前記エラスティックバッファの出力において前記識別子を処理する段階と
を備えるバッファ管理の方法。
【請求項２２】
前記シーケンスが、ＰＣＩ  Ｅｘｐｒｅｓｓ  ＳＫＰ  Ｏｒｄｅｒｅｄ  Ｓｅｔである
請求項２１に記載の方法。
【請求項２３】
前記処理をする段階が、前記エラスティックバッファを半分詰まった状態に保つべく設計される
請求項２１に記載の方法。
【請求項２４】
シリアルポイントツーポイントリンク上を他のＩＣデバイスが伝送した複数の符号を受信する入力を有する、複数のエントリを有するバッファと、
前記複数の符号を受信する入力、および前記バッファの非データ符号シーケンス識別子の前記入力を供給する出力を有する検出ロジックと、
各々、前記バッファの前記複数のエントリ内に前記複数の符号を連続的にロードする第１のポインタを提供する第１のポインタロジックと、
各々、前記バッファの前記複数のエントリから前記複数の符号を連続的にアンロードする第２のポインタを提供する第２のポインタロジックと、
前記第１および第２のポインタを比較する比較ロジックと、
前記第２のポインタロジックに接続する出力を有するポインタ制御ロジックと
を備え、
前記ポインタ制御ロジックは、ａ）前記バッファの出力に現れた前記識別子、およびｂ）前記バッファが、予め定められた閾値よりも多く満たされていることを示す前記比較ロジック
に応じて、前記第２のポインタを、非データ符号を含むエントリをスキップすべく１つのエントリ以上進める
集積回路（ＩＣ）デバイス。
【請求項２５】
前記複数の符号が、前記他のＩＣデバイスの伝送クロックに由来する第１のクロック信号に応じて受信される
請求項２４に記載のＩＣデバイス。
【請求項２６】
前記第１のクロック信号が、前記複数の符号を含む情報のストリームに埋め込まれた前記伝送クロックに由来し、前記他のＩＣデバイスによって伝送される
請求項２５に記載のＩＣデバイス。
【請求項２７】
前記第２のポインタロジックは、前記ＩＣデバイスのローカルクロックに由来する第２のクロック信号に応じて前記第２のポインタを前進させ、
前記第１のポインタロジックは、前記第１のクロック信号に応じて前記第１のポインタを前進させる
請求項２５に記載のＩＣデバイス。
【請求項２８】
プロセッサと、
主メモリと、
前記プロセッサおよび前記主メモリに通信すべく接続され、前記プロセッサにＩ／Ｏアクセスを提供し、シリアル、ポイントツーポイントリンクをサポートするリンクインターフェース回路を有する集積回路（ＩＣ）デバイスと
を備え、
前記回路は、
前記リンクの上を伝送した複数の符号を受信する入力を有し、複数のエントリを有するバッファと、
前記複数の符号を受信する入力、および前記バッファの非データ符号シーケンス識別子の前記入力を供給する出力を有する検出ロジックと、
各々、前記バッファの前記複数のエントリ内に前記複数の符号をロードする第１のポインタを提供する第１のポインタロジックと、
各々、前記バッファの前記複数のエントリから前記複数の符号を連続的にアンロードする第２のポインタを提供する第２のポインタロジックと、
前記第１および第２のポインタを比較する比較ロジックと、
前記第２のポインタロジックに接続する出力を有するポインタ制御ロジックと
を備え、
前記ポインタ制御ロジックは、ａ）前記バッファの出力に現れた前記識別子、およびｂ）前記バッファが、予め定められた閾値よりも多く満たされていることを示す前記比較ロジック
に応じて、前記第２のポインタを、非データ符号を含むエントリをスキップすべく１つのエントリ以上進める
集積回路（ＩＣ）デバイス。
【請求項２９】
前記複数の符号が、他のデバイスの伝送クロックからの前記ＩＣデバイスに由来する第１のクロック信号に応じて受信される
請求項２８に記載のシステム。
【請求項３０】
前記第１のクロック信号が、前記複数の符号を含む情報のストリームに埋め込まれた前記伝送クロックに由来し、前記他のデバイスによって伝送される
請求項２９に記載のシステム。
【請求項３１】
前記第２のポインタロジックは、ルートコンプレックスのローカルクロックに由来する第２のクロック信号に応じて前記第２のポインタを前進させ、
前記第１のポインタロジックは、前記第１のクロック信号に応じて前記第１のポインタを前進させる
請求項２９に記載のシステム。
【請求項３２】
グラフィックス構成要素
をさらに備え、
前記ＩＣデバイスが、前記プロセッサと、前記主メモリおよび前記グラフィックス構成要素とを通信すべく接続する、メモリコントローラハブ（ＭＣＨ）である
請求項２８に記載のシステム。
【請求項３３】
前記ＩＣデバイスが、前記プロセッサを情報通信すべく複数の周辺機器に接続するＩ／Ｏコントローラハブ（ＩＣＨ）である
請求項２８に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、広く、電子装置の複数の構成要素を情報伝達すべく接続するのに適したシリアル、ポイントツーポイント相互接続技術に関し、特に、ＰＣＩ  Ｅｘｐｒｅｓｓ  Ｂａｓｅ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ  １．０ａ（２００３年１０月７日に訂正された）（"ＰＣＩ  Ｅｘｐｒｅｓｓ"）に従っている、所定の特徴を有するそれらに関する。また、他の複数の実施形態も記述する。
【背景技術】
【０００２】
電子装置は、いくつかの構成要素を備え、システムの入力／出力（Ｉ／Ｏ）相互接続を介して互いに通信するように設計されている。例えば、モデムコンピュータシステムは、以下の複数の構成要素を含む。すなわち、プロセッサ、主メモリ、およびシステムインターフェース（また、システムチップセットとも言及される）。構成要素は１つ以上の集積回路（ＩＣ）デバイスを有する。例えば、システムチップセットは、メモリコントローラハブ（ＭＣＨ）デバイスを含み、システムメモリとグラフィックス部品との通信をプロセッサにさせることを可能とする。さらに、Ｉ／Ｏコントローラハブ（ＩＣＨ）デバイスが、ＭＣＨを介して、複数の大容量記憶デバイスおよび複数の周辺機器デバイスのような、コンピュータシステムの他の複数の構成要素と、プロセッサおよびメモリとの接続を提供する。係る場合には、ＰＣＩ  Ｅｘｐｒｅｓｓによって規定されたような、セパレート、ポイントツーポイントリンクが、例えば、プロセッサとＭＣＨ、ＭＣＨとグラフィック構成要素、およびＩＣＨと大容量記憶装置デバイスの間のような、複数のデバイスのペア間の２方向通信を可能とすべく用いられる。
【０００３】
ＰＣＩ  Ｅｘｐｒｅｓｓポイントツーポイントリンクは、同時に動作する１つ以上のレーンを有する。各レーンは、これも同時に動作する、二重の、一方向の複数のパスを有する。各パスは、複数の送受信ペアの単一のセットを有する（例えば、デバイスＡのポートに送信機、デバイスＢのポートに受信機のように）。係る場合には、送受信は、例えば、基板から基板へのコネクタを横断するプリント配線基板の複数の金属配線のペアのような送信媒体を、駆動、およびセンスする。他の例としては、他の送信媒体は、例えば光ファイバとして提供される。
【０００４】
ポイントツーポイントリンクは、複数のデバイス間の様々な種類の情報の伝送する役割を果たす。しかしながら、いわゆる"上位層"において、２つのデバイス（また、リクエスタおよびコンプリータとして言及される）のピア間の情報伝達は、複数のトランザクションを用いて実施される。例えば、データをメモリマップロケーションへ、またはメモリマップロケーションから転送する複数のメモリトランザクションが存在する。ＰＣＩ  Ｅｘｐｒｅｓｓ下において、また、多岐に渡る複数のメッセージを伝送し、割り込み信号、エラー信号、および電力管理のような複数の機能として使用される、複数のメッセージトランザクションが存在する。
【０００５】
トランザクションを"ビルド"する、３つの抽象的な層がある。第１の層はトランザクション層であり、トランザクションとしてデバイスコアからデータパケットの中に来る要求または完成データをターニングするプロセスを開始する。第２のアーキテクチャのビルド層は、データリンク層と呼ばれる。データリンク層は、リンクのいたる所、あちらこちらに行く、複数のパケットが適切に受信されることを保証する（エラー制御コーディングなどの複数の技術を介して）。第３の層は、物理層と呼ばれる。当該層は、リンクのいたるところでのパケットの実際の伝送および受信に責任がある。与えられたデバイス中の物理層は、１つのサイドで（同一のデバイス内の）データリンク層と情報をやり取りし、もう一方のサイドで、複数の金属配線、光ファイバ、またはリンクの一部である他の伝送媒体と情報をやり取りする。物理層は、複数の送信機および複数の受信機、複数の直並列および並直列変換機、複数の周波数位相制御回路、およびインピーダンスマッチング回路の回路を含む。また、初期化およびメンテナンスに必要な複数の論理関数の回路を含む。階層化アーキテクチャは、例えば、物理層をアップグレードしている間に（例えば、送受信のクロック周波数を増加する）、本質的には同一のトランザクションとデータリンク層の再利用を許可することにより、簡単な複数のアップグレードを可能とする。
【０００６】
物理層の振る舞いの例を述べる。一度電源が入ると、デバイスＡおよびデバイスＢ上の双方の物理層は、リンクの初期化に関与して、トランザクションの準備を整える。当該初期化プロセスは、リンクにいくつのレーンが用いられるかを決定する段階、およびどのデータ速度でリンクを動作させるかを決定する段階を含む。リンクが適切に初期化された後に、メモリ読み込み要求がデバイスＡ内で初期化される。最終的には、複数のヘッダー、エラー制御情報、および、より高次の複数の層によって付加された複数のシーケンス番号を含み、当該メモリ読み込み要求が含まれるパケットが、デバイスＡの物理層に到着する。続いて、物理層はデータの当該パケットを取得して、シリアルデータストリーム（おそらくフレームデータを付加した後に）に変化させ、例えば、予め定められたタイミングルールを有する電気的な、差分信号を用いて、ストリームを送信する。
【０００７】
一度、デバイスＢ中の物理層が、その受信機の入力に信号が出現したことを発見したときには、データストリームを回復すべく信号をサンプリングして、ストリームをデータパケットに組み込んで返す（例えば、フレームを取り除いた後に）。続いて、パケットは、デバイスＢ中のデータリンク層へ渡され、複数のヘッダーが除かれ、複数のエラーがチェックされる。エラーがない場合には、パケットはトランザクション層へ渡され、メモリ読み込み要求が展開され、続いて、要求中で特定される複数の場所にアクセスすべく、適切なロジック機能へ送信される。
【図面の簡単な説明】
【０００８】
本発明の複数の実施形態は、実施例として図示され、添付した複数の図面の複数の図に限定されることはなく、同様の複数の参照番号は同様の複数の構成要素を示す。本願における本発明の"一"実施形態という参照は、必ずしも同一の実施形態ではなく、少なくとも１つのという意味に言及されるべきである。
【０００９】
【図１】シリアルポイントツーポイントリンクによってお互いに接続されている集積回路デバイスのペアを示す。
【００１０】
【図２】集積回路デバイス内のシリアルポイントツーポイントリンクの実行に用いられるリンクインターフェース回路の一部のブロック図を示す。
【００１１】
【図３Ａ】ポイントツーポイントリンクの物理層中で、バッファ制御を実行するために用いられる回路のブロック図を示す。
【図３Ｂ】ポイントツーポイントリンクの物理層中で、バッファ制御を実行するために用いられる回路のブロック図を示す。
【００１２】
【図４】図３のバッファ制御回路内で、どのように非データ符号検出フラグが配列されるかのタイミング図を示す。
【００１３】
【図５】ポインタ比較操作の例を示すタイミング図の例である。
【００１４】
【図６】オーバーフローを避けるバッファ制御のタイミング図の例である。
【００１５】
【図７Ａ】アンダーフローを避けるバッファ制御のタイミング図の例である。
【００１６】
【図７Ｂ】バッファの起動状態の例を示すタイミング図である。
【図７Ｃ】バッファの起動状態の例を示すタイミング図である。
【００１７】
【図８】複数のＰＣＩ  Ｅｘｐｒｅｓｓ仮想チャンネル（ＶＣ）を介してお互いに情報伝達可能に接続された、マルチメディアデスクトップコンピュータの様々な構成要素を特定する。
【００１８】
【図９】企業ネットワークのブロック図を示す。
【発明の開示】
【００１９】
本発明の一実施形態は、非データ符号処理を手段として、ポイントツーポイントリンクのためのバッファ制御が管理される。図１は、シリアルポイントツーポイントリンクによってお互いに接続されている集積回路デバイスのペアを示す。ＩＣデバイス１０４（デバイスＡ）および１０８（デバイスＢ）は、プロセッサ１１２および主メモリ１１４を含むコンピュータシステムの一部であってよい。本実施例においては、シリアルポイントツーポイントリンク１２０は、デバイスＢのコアとデバイスＡのコアとを通信可能に接続すべく用いられる。リンク１２０は、二重の、一方向性の複数のパス１２２、デバイスＡおよびＢの各々のデバイスコアとのインターフェースとしての役割を果たすリンクインターフェース１２４を有する。
【００２０】
当該実施形態によれば、デバイスＢは、コンピュータシステムのルートコンプレックスとして言及され、例えば、デバイスＡのグラフィックス構成要素へアクセスするＩ／Ｏを有したプロセッサ１１２を提供する。ルートコンプレックスは、グラフィックスおよびメモリコントローラハブ（ＧＭＣＨ）並びにＩ／Ｏコントローラハブ（ＩＣＨ）に分けられる。ＩＣＨは、システムのＧＭＣＨおよび他の複数のＩ／Ｏデバイス間のさらなるインターフェースとして機能して、不揮発性大容量記憶装置、トラックパッドやマウスのようなポインティングデバイス、およびネットワークインターフェースコントローラ（図示しない）を含む。ポイントツーポイントリンク１２０は、デバイスＢをプロセッサ１１２および主メモリ１１４と通信可能に接続することを繰り返す。また、ポイントツーポイントリンク１２０を特徴付ける他の複数のプラットフォームアーキテクチャも可能である。
【００２１】
図１のインターフェース１２４は、シリアルポイントツーポイントリンクのために（背景技術において述べた）多重層アーキテクチャを実施すべく示される。インターフェース１２４のいくつかの詳細が図２に示される。インターフェース１２４は、伝送媒体１２２と個々のデバイス１０４、１０８のデータリンク層との間の複数のパスの独立した伝送および受信をサポートする。伝送パスにおいて、複数のデータパケットの形での情報が、データリンク層から到着して、複数の符号に分割され、エンコードブロック２０８においてエンコードされる。ブロック２０８によってエンコードする目的は、分離したクロック信号が、伝送媒体１２２中に伝送されることを必要としないために、クロック信号を埋め込むことであるこのエンコードは、８ビットの量が１０ビットの量に変換される周知の８Ｂ−１０Ｂである。他の複数のエンコードが可能である。ある場合においては、分離したストローブまたはクロック信号が媒体１２２を伝送する場合のように、そのようなエンコードが不要な場合もある。
【００２２】
ブロック２０８において続いてエンコードされ、データの複数のユニット（個々では複数の符号として言及される）が、アナログフロントエンド（ＡＦＥ）トランスミットブロック２１４のパラレルからシリアルのブロック２１２によって処理され、複数のビットのストリームを生成する。個々で用いられる"ビット"は、例えば、２進法のビット、３進法のビット等のような２つの異なる状態よりも多くを意味することに留意する。"ビット"という用語は、単に本願では便宜上用いるだけで、２進法のビットに限定されることは意図しない。ビットストリームは、続いて、伝送媒体１２２にドライブされる。背景技術において説明したように、当該伝送媒体は、プリント配線基板に形成された金属の配線のペアであってよい。伝送媒体１２２の他の複数の形態、例えば、光ファイバのような形態が、代わりに用いられてよい。
【００２３】
ブロック２０８から２１４の連続は、ポイントツーポイントリンク１２０のシングルレーンとして動作する（図１）。一般的に、データリンク層から受信したパケットが、伝送のために複数のレーンを横切って"ストライプト"されるべくポイントツーポイントリンク１２０には１つ以上のレーンがある。
【００２４】
次に、図２に示すインターフェース１２４の受信側を検討すると、各レーンは、例えば、伝送媒体１２２中の信号のサンプリングによって、伝送媒体１２２から情報のストリームを受信するものとして動作する、その関連するＡＦＥ受信ブロック２２４を有する。ＡＦＥ受信ブロック２２４は、伝送媒体１２２の複数の信号伝達と、ＩＣデバイス１０４（例えば、オンチップ、相補型金属酸化物半導体、ＣＭＯＳ、論理信号伝達）の信号伝達との間で変換する。以下で説明するように、情報のストリームは、Ｍビットの複数の符号のシーケンスを示し（Ｍは１より大きい整数）、シリアルポイントツーポイントリンク１２０を超えてデバイスＢによって伝送される（図１参照。）。
【００２５】
ＡＦＥ受信ブロック２２４によって提供される複数のビットのストリームは、受信された複数の符号を整列またはロックする符号アライメントロジック２２８に供給される。すなわち、以下で述べるように、符号アライメントロジック２２８は、デバイス１０４中の物理層のその後の複数のセクションによって用いるべく、受け取ったビットストリーム中の正確な符号の正確な境界を定める。
【００２６】
続いて、符号アラインドビットストリームは、エンコードブロック２０８（例えば、各々８バイナリビットからなる情報の複数の符号を生成する１０Ｂ−８Ｂデコード）によって実行されるエンコードを元に戻すデコードブロック２３２に供給される。
【００２７】
デコードされた複数の符号は、続いて、エラスティックバッファ、ＥＢ２３４に供給される。ＥＢ２３４は、複数の符号がデバイスＢ中を伝送する速度、デバイスＡのローカルクロック信号（ｌｏｃａｌ＿ｃｌｋ）の速度の許容範囲のいかなる違いをも補償すべく作用する。ｌｏｃａｌ＿ｃｌｋは、（リンク１２０が１つ以上のレーンを備える場合において）以下に説明するレーンツーレーンデスキュー回路２３８へのいくつかのケースで動作する場合と同様に、ＥＢ２３４から複数の符号をアンロードするために用いられる。（もし提供されれば）デコードブロック２３２は、例えば、ＥＢ２３４の出力地点、または、デスキュー回路２３８の出力地点のような、より下流に配置されることに留意すべきである。
【００２８】
ＥＢ２３４のブロック図の例が、図３Ａおよび図３Ｂに示される。当該実施例においては、ＥＢ２３４は、アライメントロジック２２８からデコードブロック２３２（図２参照）を介して、８ビットの符号を受信する入力（図３Ａの左側）を有する。以下で説明する本願の他の例は、デコードブロック２３２をバイパスするので複数の符号が、１０ビット幅である、末端ループバックモード（ＦＥＬＢ）である。他の例においては、他の複数の符号の幅が可能である。
【００２９】
符号は、"データ"符号であり、データリンク層、トランザクション層、または、例えば、デバイスコアのような他のいくつかの高次の層がソースである、いくつかのペイロードを示す。他の例としては、符号は、シリアルポイントツーポイントリンク上を伝送された情報に渡ってある種の制御を達成するために、例えば、物理、データリンク、あるいはトランザクション層のうちの１つによって生成された特別な符号のような、"非データ"符号である。そのような複数の非データ符号のいくつかの実施例が、複数のＰＣＩ  Ｅｘｐｒｅｓｓスペシャル符号として以下に述べられる。
【００３０】
ＰＣＩ  Ｅｘｐｒｅｓｓは、伝送される複数のパケットに付加される多くの特別の符号を決定する。例えば、複数の特別の符号は、パケットのスタートおよびスタートを示すべく付加される。これは、１つのパケットが開始することおよび終わることを受信デバイスに知らせるべくなされる。異なる特別の複数の符号が、データリンク層中よりもトランザクション層に起因する複数のパケットのために付加される。さらに、２つの通信ポートの扱っているデータの速度の小さな差異の補償のために物理層によって用いられる、"ＳＫＰ"（スキップ）と呼ばれる特別の符号がある。また、レーンおよび物理層によるリンクの初期化に用いられる、"ＣＯＭ"（コンマ）と呼ばれる特別の符号がある。
【００３１】
複数の符号は、ロードポインタロジック３０８によって提供されるロードポインタ、ＥｂＬｄＰｔｒ、にしたがって、バッファ３０４（キューと称される、ファーストインファーストアウト構造を有する）の多数の入力に連続的にロードされ、ＥＢ２３４の入力に到達する。アンロードポインタロジック３１２によってアンロードポインタ、ＥｂＵｌｄＰｔｒは、バッファ３０４から複数の符号を連続的に案ロードする。図３Ａに示すように、仮想の点線がバッファ３０４を通って存在するこれは、受信クロック、ｇｒｘｃｌｋと、ローカルクロック、ｌｇｃｌｋとの間のＥＢ２３４によって実行されるクロッククロスを示す。複数の符号は、ｇｒｘｃｌｋに従ってロードされ、ｌｇｃｌｋに従ってアンロードされる。これら２つのクロックドメインは、周波数に関してはできる限りお互いに近い値で設計されるが、各クロックドメインは、いくらかの許容範囲、あるいは、しばしば百万分の一（ｐｐｍ）単位で特定される、非常に微小な周波数の変動を可能とする。ｇｒｘｃｌｋは、（複数の符号を伝送する）他のＩＣデバイスの伝送クロックに由来しており、当該伝送クロックは、他のデバイスによって伝送された情報のストリーム中に組み込まれるか、または、例えばソースシンクロナスシナリオ中のような分離したクロック若しくはストローブ信号で提供される。ＰＣＩ  Ｅｘｐｒｅｓｓ下において、ｇｒｘｃｌｋは、±３００ｐｐｍの許容範囲を有する。同一の許容範囲が、デバイスＡのローカルクロック、ｌｇｃｌｋに割り当てられる。
【００３２】
ＥＢ２３４および特にバッファ３０４のオーバーフローおよびアンダーフローの問題を説明するために、スタートアップにおいて、バッファ３０４にロード、およびアンロードされた複数のポインタが、バッファの約半分のデプスに分離されると仮定する。ｇｒｘｃｌｅとｌｇｃｌｋの周波数の間の実際の相違によって、これらの複数のポインタは、時間がたつにつれて衝突し得るように、ドリフトしてお互いに離れ始めるか、または、お互いに近傍にドリフトし始めるが、それは、オーバーフローまたはアンダーフローである。ＥＢ２３４の理想的な状態は、ロードおよびアンロードポインタが常に、バッファ３０４のデプスの半分によって分離されていることである。以下に説明するように、この理想は、ａ）特別の、または複数の符号の非データシーケンスの検出と、ｂ）ロードポインタがアップデートされたデフォルトの方法で調整することがない、バッファの差し迫ったオーバーフローまたはアンダーフロー状態の関数としてのアンロードポインタの調整または制御によって追及される。
【００３３】
ＥＢ２３４のアンロードポインタは、予め定められた、デバイスＢによってデータシーケンス中に挿入された（図１参照）複数の符号の特別のあるいは非データシーケンスを用いてオーバーフローおよびアンダーフロー状態を避けるべく（例えば、図３−Ｂのアンロードポインタロジック３１２およびポインタ制御ロジック３１４を用いて）、管理される。簡単に言えば、バッファのアンダーフローを回避するために、アンロードポインタは、非データシーケンスの検出に応じて、非データ符号を含むバッファのエントリでストールされる。これは、アンロードポインタの変化に応じてデータシーケンスのアンロードの間になされる。これは、ロードポインタが、アンロードポインタから離れ、それゆえにアンダーフローを避けることになる。
【００３４】
他方では、バッファのオーバーフローを避けるために、アンロードポインタが、（バッファイン現在ロードされている）非データシーケンスの非データ符号が、バッファから複数の符号がアンロードされている間にスキップされるべく、１つのエントリ以上によって変化される。再度、非データシーケンスの検出に応じてこれはなされる。これは、アンロードポインタが、再び衝突することを避けるべくロードポインタから離れる原因となるオーバーフローおよびアンダーフローを避ける能力の実施に関する技術の実施例の詳細については、以下に述べられる。
【００３５】
図３Ａおよび図３Ｂに戻ると、ＥＢ２３４のバッファ３０４は、符号だけではなく（例えば８ビットあるいは１０ビットのキャラクターの）、符号がデータ符号か、あるいは非データ符号か（８ｂ１０ｂ＿ｅｂ＿ｋｃｈａｒ＿ｆ）、および予め定められた非データシーケンスインジケータか（ＥｂＳｋｐＤｅｔ）を示す符号用の制御ビットを各エントリ内に格納すべく設計される。ｋｃｈａｒ＿ｆ制御ビットは、デコードブロック２３２によって生成され、一方、ＥｂＳｋｐＤｅｔは、示したＥＢ２３４ロジックによって生成される。後者のインジケータは、ＰＣＩ  Ｅｘｐｒｅｓｓの実施形態の特有の実施例であり、用いられる特別な、非データシーケンスは、ＳＫＰ  Ｏｒｄｅｒｅｄ−Ｓｅｔである。他の例としては、他の予め定められた、複数の非データシーケンスが用いられる。ＥｂＳｋｐＤｅｔ非データシーケンスインジケータは、アンロードポインタの制御のために以下に述べるように、ＥＢ２３４によって用いられる。
【００３６】
ＥＢ２３４のアンロードおよびロードポインタを適切に調整するために、ＳＫＰ  Ｏｒｄｅｒｅｄ−Ｓｅｔ検出フラグが生成され、この場合においては、ＰＣＩ  Ｅｘｐｒｅｓｓ  ＣｏｍのＯｒｄｅｒｅｄ−Ｓｅｔの受信された非データ符号とともに、バッファ３０４の入力に配列される。ＣＯＭ符号は、Ｏｒｄｅｒｅｄ−Ｓｅｔの１つ以上のＳＫＰ符号の前に来る。（図３Ａに示した垂直線の右側の）ｌｇｃｌｋドメイン中で、正確な複数のアクションがＯｒｄｅｒｅｄ−Ｓｅｔに関して取られるべく、インジケータはＥＢ２３４を通って通過する。図４のタイミング図に示したように、Ｏｒｄｅｒｅｄ−Ｓｅｔインジケータは、非データ符号ＣＯＭが非データ符号ＳＫＰの後に続くｇｒｘｃｌｋの１サイクルでアサートされた信号である。図４において、波形８ｂ１０ｂ＿ｅｂ＿ｄａｔａ［７：０］は受信された複数の符号を示す（この場合において、Ｄｘｘの連続で示されているデータシーケンス中に挿入されたＳＫＰ  Ｏｒｄｅｒｅｄ−Ｓｅｔを含む）。受信された複数の符号およびＯｒｄｅｒｅｄ−ＳｅｔインジケータＥｂＳｋｐＤｅｔの双方が、バッファ３０４のエントリに格納される前にフロップされる。ＣＯＭ符号およびＥｂＳｋｐＤｅｔｉｎのアサーションがｇｒｘｃｌｋの同一のサイクルにおいてどのように発生するかは留意すべきである。言い換えれば、検出フラグＥｂＳｋｐＤｅｔは、この場合において８ビットの符号ＥｂＤａｔａＩｎ［７：０］とともに、バッファ中にアサートされてロードされる。
【００３７】
図３Ｂを参照すると、比較ロジック３１６が、非データシーケンスが検出されない場合に、複数のポインタの適切な調整がなされるように、アンロードおよびロードポインタのそれぞれに関して、アンロードおよびロードポインタの位置をサンプリングすることができる。これは、当該実施形態において、複数のポインタのうちの１つが、複数のクロスクロックドメインを必要とし、キュー内の２つのポインタの位置を決定する必要があることを意味する。この実施形態においては、ｇｒｘｃｌｋドメインのロードポインタは、ｌｇｃｌｋドメインとクロスオーバする。複数のポインタを示すクレースケールの使用が、単純なバイナリよりも正確で効率的な実現を提供することに留意すべきである。
【００３８】
ｌｇｃｌｋドメイン中で、半分以上か、あるいは、半分より少ないバッファ３０４の状態を示すべく生成される、２つのインジケータが存在する。他の方法としては、オーバーフローおよびアンダーフローの状態を避けることをＥＢ２３４にまだ可能とする、（例えば、予め定められた閾値よりより完全、またはそれほど完全ではない）他の複数の状態が決定される。当該実施例においては、半分以上完全なインジケータはＥｂＭｒＨｌｆＦｕｌｌであり、ｇｒｘｃｌｋ度目印画ｌｇｃｌｋドメインよりも"早い"ことを示す。このインジケータがアサートされた場合、そして、非データシーケンスが受信された場合には、その理想的な半完全な状態にバッファを戻すことを試み、もたらすべく、非データ符号、およびこの場合においてはＳＫＰが、Ｏｒｄｅｒｅｄ−Ｓｅｔから取り除かれる。
【００３９】
他方では、半完全より少ない（ＥｂＬｓＨｌｆＦｕｌｌ）インジケータは、反対を示す。すなわち、ｌｇｃｌｋドメインはｇｒｘｃｌｋドメインよりも早い。係る場合においては、ＳＫＰ  Ｏｒｄｅｒｅｄ−Ｓｅｔが受信された場合に、ＳＫＰが付加され、複数のポインタが理想的で、半完全な状態に戻ることをもたらす。もちろん、これらの複数のインジケータの双方がアサート停止した場合には、バッファは半完全となり、ロードおよびアンロードポインタにいかなるアクションも必要ではない。本発明の一実施形態によれば、このＳＫＰのインスタンスの付加および除去は、ポインタ制御ロジック３１４（図３Ｂ）によって達成され、アンロードポインタＥｂＵｌｄＰｔｒ（ロードポインタＥｂＬｄＰｔｒとしてではなく）としての役割を果たす。その動作は、図６および図７のタイミング図の例に示しており、以下でさらに述べる。
【００４０】
図５は、異なるクロックドメインにあるポインタを考慮して、どのように複数のポインタが比較されるかを示すタイミング図の例である。図５は、ｇｒｘｃｌｋおよびｌｇｃｌｋの波形を示し、当該実施例においてはｇｒｘｃｌｋがより早い。ここで、ロードポインタＥｂＬｄＰｔｒはｌｇｃｌｋドメインと、１から２サイクルの遅延で、ロードポインタの実際の位置と同期した位置ＥｂＬｄＰｔｒＳｙｎｃとの間においてクロスしている。ロードポインタのクロスによる当該時間の遅延を補償すべく、アンロードポインタの値が、また、ＥｂＵｌｄＰｔｒＡｄｊを生成すべく、当該実施例においては２の値、現在の値を減少させることにより調整される。続いて、ＥｂｌｄＰｔｒＳｙｎｃとＥｂＵｌｄＰｔｒＡｄｊとの間で比較がなされ、この場合においては、バッファが、ｌｇｃｌｋのサイクル４に示したような半完全よりも多い。この実施例においては、他の複数のデプスがまた働いているが、バッファ３０４のデプスが、１０エントリと仮定されることに留意すべきである。
【００４１】
図５のタイミング図を参照すると、ｌｇｃｌｋの初めの４サイクルにおいて、同期したロードポインタ、ＥｂＬｄＰｔｒＳｙｎｃが、調整されたアンロードポインタＥｂＵｌｄＰｔｒＡｄｊと、この場合において５エントリであるおよそ半分のバッファのデプス分、異なる。それに応じて、ＥｂＭｒＨｌｆＦｕｌｌおよびＥｂＬｓＨｌｆＦｕｌｌの双方がアサート停止される。しかしながら、サイクル３において、同期したロードポインタは、１エントリだけ先んじ（エントリ８からエントリ０）、２つのポインタ間のこの違いが、バッファデプスの半分よりも大きいため、ＥＢ２３４は、半完全よりも多いと判断し、それゆえ、オーバーフローに近づく。当業者は、同様のタイミング図がアンダーフロー状態において描かれることが、この記述に基づいて理解するであろう。
【００４２】
ポインタ比較ロジック３１６（図３）に関して、複数のポインタの位置を決定するアルゴリズムは以下の通りである。調整されたアンロードポインタが、同期化されたロードポインタよりも大きい場合には、調整されたアンロードポインタと同期化されたロードポインタとの間の差は、むしろ、キューの中でフリーなエントリーの数である。一方で、同期化されたロードポインタが、調整されたアンロードポインタよりも大きい場合には、同期化されたロードポインタと調整されたロードポインタとの間の差は、むしろ、キュー内に取られたエントリの数である。もちろん、同期化されたロードポインタが調整されたアンロードポインタと等しい場合には、複数のポインタは衝突し、ＥＢ２３４は、オーバーフローまたはアンダーフローを有する。ポインタの衝突は、例えば、受信した複数の非データシーケンスの欠如、またはｇｒｘｃｌｋとｌｇｃｌｋとの間の周波数の差が非常に高く、設計仕様を外れることによる。その場合には、続く符号処理ブロック、あるいはデバイスＡの上位層に、複数のポインタが衝突しているので、与えられたリンク（図２参照）の全てのレーンにおける複数のポインタを初期に戻すか、または規定の値に戻す、リカバリ状態の開始の指示が送信される。
【００４３】
図６および７に戻ると、複数のタイミング図の例が、どのように非データシーケンスがオーバーフローおよびアンダーフロー状態を避けるべく処理されるかについて示される。上述したことを思い起こすと、ＳＫＰ  Ｏｒｄｅｒｅｄ−Ｓｅｔが受信された場合には、バッファ３０４の入力でフラグが生成され、そして、バッファを通ってＯｒｄｅｒｅｄ−Ｓｅｔの符号とともに通過する。本願で述べた複数の実施例において、バッファの管理に適用される調整は、バッファの出力、すなわち、ｌｇｃｌｋドメイン中で起こる。特に、バッファの状態（例えば、半完全、半完全より多い、あるいは、半完全より少ない）に応じて調整されるのは、アンロードポインタである。図６は、バッファが半完全よりも多い事態での、アンロードポインタの調整または制御の工程を示すタイミング図を表す。当該実施例において、ｇｒｘｃｌｋが、オーバーフロー状態を引き起こし得るｌｇｃｌｋよりもどう早いかに留意すべきである。この場合において、単一のＳＫＰに続くＣＯＭを含むＳＫＰ  Ｏｒｄｅｒｅｄ−Ｓｅｔは、ＥＢ２３４の入力において受信される。サイクル１においてＳＫＰ検出フラグ（ＥｂＳｋｐＤｅｔｉｎ）とともにバッファはロードされ、バッファのエントリ９の中にＣＯＭとともに配列される。
【００４４】
ｌｇｃｌｋドメイン中で、複数のポインタが、サイクル３まで、５エントリ離れている（ＥｂＭｒＨｌｆＦｕｌｌあるいはＥｂＬｓＨｌｆＦｕｌｌのいずれもがアサートされていない）ことに留意すべきである。その点において、同期化したロードポインタは、エントリ８からエントリ０に移動し、ロードポインタがアンロードポインタよりも１サイクル多く移動したことを示す。サイクル７において、ＳＫＰ  Ｏｒｄｅｒｅｄ−Ｓｅｔと関連するＳＫＰ検出フラグ（ＥｂＳｋｐＤｅｔＯｕｔ）は、バッファからアンロードされる（エントリ９）。半完全よりも多いバッファで、アンロードポインタＥｂＵｌｄＰｔｒは、追加のエントリだけ前に移動し、エントリ０に移動する代わりに、ポインタはエントリ１に移動する。アンロードポインタの移動を反映する、調整されたアンロードポインタ、ＥｂＵｌｄＰｔｒＡｄｊとともに、ＥｂｕｌｄＰｔｒＡｄｊとＥｂＬｄＰｔｒＳｙｎｃとの間の差が５エントリに戻り、バッファの状態が、半完全なインジケータよりも多いアサート停止を伴うサイクル９においてアップデートされる。それゆえに、１エントリ以上のアンロードポインタの変化は、この場合ＳＫＰという非データ符号が、バッファにロードされ、ＥｂＤａｔａＯｕｔ［７：０］に反映されるように複数の符号がアンロードされる間にスキップされる結果となる。
【００４５】
図７Ａに戻ると、バッファが半完全よりも少ない場合に、アンダーフローを避けるべくＥＢ２３４を管理するタイミング図の例が示される。この場合において、ｇｒｘｃｌｋドメインは、ｌｇｃｌｋドメインよりも遅く、バッファは、満たされるよりも早く空になる。図の上端において、データシーケンスに挿入された非データシーケンスが存在し、ＥｂＤａｔａＩｎに示すようにＥＢ２３４の入力に到達する。
【００４６】
ＣＯＭ符号はＳＫＰ検出フラグとともに、ｇｒｘｃｌｋのサイクル１下に示したように、エントリ９に格納される。次に、ｌｇｃｌｋドメインを参照すると、バッファはサイクル３まで半分詰まっており、同期化したロードポインタは、調整されたアンロードポインタはインクリメントし続けている間の２サイクルの間、エントリ９に留まる。図５のタイミング図で上記例示したように、これは、ｇｒｘｃｌｋとｌｇｃｌｋとの間の差のミスマッチあるいは許容範囲による。それに応じて、サイクル４において、半分以下のインジケータがアサートされる。サイクル６において、ＥｂＬｓＨｌｆＦｕｌｌがアサートされている状態で、ＳＫＰ検出フラグがバッファからアンロードされ、アンロードポインタＥｂＵｌｄＰｔｒが、ＨｌｄＵｌｄＰｔｒのアサーションとともにサイクル７でストールされる。これにより、アンロードポインタは、サイクル７のエントリ０上に残ったままとなる（エントリはＳＫＰを含んでいる）。それゆえに、ＥｂＤａｔａＯｕｔ［７：０］のサイクル７に見られるように、さらなるＳＫＰがシーケンスに挿入される。
【００４７】
次に、同期化されたロードポインタと調整されたロードポインタとが、サイクル７からサイクル８への遷移において比較された場合に、複数のポインタが、再び、５エントリ離れて戻り、ＥＢ２３４の複数のポインタがそれらの理想的な状態に戻る。
【００４８】
続いて、どのようにロードおよびアンロードポインタが上記複数の実施例において機能するのかの他の記述が提供される。ロードポインタに関しては、このポインタは、ＥＢ２３４がアクティブであるか、または有効である限り、（ｇｒｘｃｌｋに従って）全ての期間で１ずつインクリメントする。しかしながら、アンロードポインタに関しては、（初期化後の）アンロードポインタは、バッファが半分以上詰まっている場合に、ＥＢ２３４が非データシーケンスを現在は処理していない場合に限り、（ｌｇｃｌｋに従って）１つインクリメントし、非データシーケンスは、半分以下の状態のバッファでは、最後のサイクルで受信されない。さらに、非データシーケンスが処理されるときに、アンロードポインタは２つずつインクリメントし、バッファは半分以上となる。最後に、アンロードポインタはインクリメントされず、非データシーケンスが最後のサイクルで受信され、バッファが半分以下となったときに停止する。
【００４９】
エラスティックバッファを管理する上述した方法および装置の利点は、許容範囲が送受信クロックで可能とされているにもかかわらず、シリアルポイントツーポイントリンクで受信した複数の符号の安定したフローを保つ、比較的強固な技術である点である。初期のトレーニングの間、電源が入った後にリンクが起動する前だけでなく、ＩＣデバイスによる各パケットの受信の間に、工程が実施されることを留意すべきである（工程が、与えられたレーンの通常の操作の間に繰り返されるべく、各パケットが１つ以上の特別の、非データシーケンスのインスタンスを含むことがしばしば仮定される。）。本発明の他の実施形態によれば、デバイスＡ（図１参照）は、ファーエンドループバックモード（ＦＥＬＢ）で動作できる。ＦＥＬＢにおいて、デバイスＡで受信した複数の符号のシーケンスは、シーケンスがバッファされた後に（ＥＢ２３４によって、図２参照）、デバイスＢの外にループバックされる。それに応じて、ＦＥＬＢにおいて、バッファされたシーケンスの符合コンテンツは、デバイスＡの外で監視され、デバイスＡのＥＢ２３４によってどのように（デバイスＢによって送信された）オリジナルシーケンスが変形されたかを決定する。
【００５０】
（複数のエラスティックバッファポインタのスタートアップ）本発明の他の実施形態は、非同期、ＥＢ２３４で遭遇するクロッククロス遅延、およびバッファ３０４の必要とされるサイズを減少する複数のヘルプを自動的に調整するスタートアップ機構にある。そのような実施形態においては、ＥＢ２３４のロードおよびアンロードポインタのスタートアップは、２つの異なる基準に基づく。ｑｕａｌ＿ＥｂＡｃｔｉｖｅという用語は、ｇｒｘｃｌｋドメイン（ロードポインタのドメイン）の上にクロッククロスするｌｇｃｌｋドメイン（アンロードポインタのドメイン）で生成されるとして定義される。この用語は、アサートされたときに、ロードポインタをリリースする。ｑｕａｌ＿ＥｂＡｃｔｉｖｅという用語は、以下の、１）リンクインターフェース１２４のリンク初期化ユニット（図示しない）が、このＥＢ２３４が作動しているレーンを示す（例えば、ｇｉ＿ｇｐ＿ｌａｎｅｕｐがｌｇｃｌｋドメインにアサートされる）、２）インターフェース１２４の受信クロックが有効である（ｇｉ＿ｇｐ＿ｐｉｃｌｋｅｎがｌｇｃｌｋドメインにアサートされる）、３）複数のＥＢ２３４ポインタが初期化されていない（ｇｉ＿ｇｐ＿ｅｂｐｔｒｒｓｔが、ポインタの衝突によってｌｇｃｌｋドメインにアサートされない）、４）シンボルアライメントロジック２２８（図２参照）が、シンボルロックを取得する（ｇｐ＿ｇｉ＿ｋａｌｉｇｎｌｃｋ−ｌｇｃｌｋドメイン）、５）ロードポインタが初期化される、という複数の状態を含む。この用語は、ＰＣＩ  ＥｘｐｒｅｓｓＬ０ｓ  ｅｎｔｒｙ／ｅｘｉｔ状態（ｓｙｎｃ＿ｌｏａｄｒｅｓｅｔ＿ｄｏｎｅ−ｌｇｃｌｋドメイン）がある実施形態に付加される。
【００５１】
一度ロードポインタがリリースされると、ｌｇｃｌｋドメインにクロックがクロスする。このクロックドメイン中で、連続する複数のクロック中のロードポインタが変化した事実は、アンロードポインタが現在リリースされていることを示す。アンロードポインタは、上記した５つの状態のいずれかがフォールスになるまでインクリメントし続け、その場合には、アンロードポインタは初期化され、そのいくらか後にロードポインタも初期化される（クロッククロス）。
【００５２】
実施例としては、アンロードポインタは"０００"の値に初期化される。その一方で、ロードポインタは"００１"の値に初期化される。この理由は、半分のシナリオのバッファで始まることによるものの、当該実施例においては、（クロッククロスするロードポインタおよびアンロードポインタのキックオフのための）クロッククロスペナルティの２つのクロックが占め、また、Ｅｂａｃｔｉｖｅ＿ｕｎｌｏａｄの用語を生成するフロップステージが占める。これは、ロードポインタが"００１"の値から始まることを意味する。バッファスペースをチェックすべく比較をするために、アンロードポインタがまだ、２つディクリメントされることに留意する。この技術は、常に同一の、ＥｂＭｒＨｌｆＦｕｌｌ状態で開始する。しかしながら、ＥＢ２３４に到達した非データ符号ＳＫＰの第１のインスタンスがバッファ３０４（ここではキュー）を再び半分（ＨａｌｆＦｕｌｌ）にするので、これは重要ではない。
【００５３】
図７Ｂのタイミング図の例において、コアクロックドメインのアクティブインジケータ（ｑｕａｌ＿ＥｂＡｃｔｉｖｅ）は、コアクロックドメイン（ｌｇｃｌｋ）のサイクル１にアサートされる。続いて、アクティブインジケータは、ｇｒｘｃｌｋドメインに送信され、サイクル３にアサートされるｓｙｎｃ＿ＥｂＡｃｔｉｖｅ＿ｌｏａｄ信号を生成する。ｓｙｎｃ＿ＥｂＡｃｔｉｖｅ＿ｌｏａｄ信号のアサーションにより、ロードポインタ（ｌｄｐｔｒ）は、その初期化の値からリリースされ、移動し始める。その一方で、コアクロックドメインｌｇｃｌｋのアンロードポインタ（ｕｎｌｄｐｔｒ）は、ｓｙｎｃ＿ｌｄｐｔｒが移動し始めるまでは移動することが妨げられる。サイクル６によって、アンロードポインタおよび調整されたアンロードポインタが移動し始める前に、同期化したロードポインタが移動し始める。これにより、半分以上の信号（ＥｂＭｒＨｌｆＦｕｌｌ）のアサーションという結果となる。この実施例におけるスタートアップ機構は、常に、始めにＭｒＨｌｆＦｕｌｌがアサートされる結果となり、到達するＳＫＰの最初のインスタンスが、ＨｌｆＦｕｌｌ状態にキューをもたらす点に留意すべきである。それに応じて、ＭｒＨｌｆＦｕｌｌのスタートアップの状態は、一時的な状態として言及される。
【００５４】
また、ＥＢ２３４のアンロードポインタが、その初期状態を維持した後に動作を開始した場合に、ロードポインタが初期化された（すなわち、キューの第１のエントリ）キューの入力にアンロードポインタが到達するまではキューの出力のデータが有効ではないことに留意すべきである。不正なその後に続く符号処理の複数のステージからの（例えば、図２のデスキュー回路２３８）、有効でないデータを阻止するために、キューの出力からのＳＫＰ検出フラグおよびＫキャラクタ（存在する非データ符号）ビットが、ＥｂＯｕｔＶｌｄで表される有効なインジケータまたはフラグでゲートされる。図７Ｃのタイミング図の例に示したように、アンロードポインタは移動が妨げられている（ＥＢ２３４は非アクティブとみなされる）一方で、このインジケータは、アサート停止されたままであり、そして、（図７ＣのＥＮＴ０で起こる）アンロードポインタがロードポインタの初期化の値に移動するまでアサートされない。以下の複数の決まりは、このＥｂＯｕｔＶｌｄフラグの操作を定義するべく用いられる。１）ＥｂＯｕｔＶｌｄは、ＥＢ２３４がアクティブのときにアサートされ（ｑｕａｌ＿ＥｂＡｃｔｉｖｅがアサートされる）、そしてアンロードポインタがロードポインタの初期化の状態に移動する、２）ＥｂＯｕｔＶｌｄは、ＥＢ２３４が非アクティブのときにアサート停止される（ｑｕａｌ＿ＥｂＡｃｔｉｖｅがアサート停止される）。上記で述べたように、ＥＢ２３４の出力において有効なフラグは、ＳＫＰ検出フラグ、ＥｂＳｋｐＤｅｔＯｕｔ、および、Ｋキャラクタ検出フラグ、ＥｂＫｃｈａｒＤｅｔＯｕｔの双方がキューに格納されている有効でない複数の符号から誤ってアサートされることを防止する。
【００５５】
（他のシステムの複数の実施形態）また、上述したリンクインターフェース回路および方法は、マルチメディアにアイソクロナスサポートを提供するシリアル、ポイントツーポイント相互接続技術を介して通信するべく設計された、複数のＩＣデバイスで実施される。アイソクロナスサポートは、データが決定性および時間依存の方法を用いて供給されるＱｏＳ（サービスの質）保証の特定のタイプである。プラットフォームベースのアイソクロナスサポートは、与えられた時間間隔での要求されるバンド幅を得るための一定のあるいは専用の複数のシステムリソースへのアクセスのレベルを必要とする応用を可能とする文書化されたシステムデザイン手法を依存する。
【００５６】
図８に示すように、レポートに取り組んでいる間のデスクトップ上に、会社のＣＥＯから発せられる従業員用の放送を見ることが例である。データは、インターネットからデスクトップの主メモリへ向かい、アプリケーションがデータを利用して、オーディオストリームを生成してアドインカードを介してユーザのヘッドフォンに送信し、ビデオストリームをグラフィックコントローラを介してディスプレイに送信する。例えば、ディスク読み出し、インターネットからのデータ、ワードプロセッサ、電子メールなど、デスクトップパーソナルコンピュータ（ＰＣ）内で同時に複数の操作が発生した場合には、オーディオおよびビデオストリームが本当に以上がないかの保証はない。データは"ベストエフォート"手法でのみ供給される。ユーザは、複数のアプリケーションが同一のリソースで競合したときに、複数のスキップあるいは複数の停止を経験する。ＰＣＩ  Ｅｘｐｒｅｓｓ内での同時発生は、時間依存の複数のアプリケーションが適切なシステムリソースを確実にすることを保証する機構を確立することによって、この問題を解決する。例えば、図８において、ビデオ時間依存データは、例えば、電子メールのような重大ではないデータの費用でスキップすることを防止する適切なバンド幅を保証される。
【００５７】
また、上述したリンクインターフェース回路および手法は、組み込まれた複数のアプリケーションから複数のシャーシベースのスイッチングシステムへの通信装置に用いられるシリアルポイントツーポイント技術を介して通信すべく設計された複数のＩＣデバイスで実施される。進歩したスイッチングにおいて、複数の機構が、スイッチ構造を通してピアツーピアで複数のパケットを送信するために提供される。また、これらは、ＰＣＩ  Ｅｘｐｒｅｓｓで利用できるサーバークラスハードウエアベースのエラー検出からの利益を売り込む。通信機器内に、制御プレーン処理およびデータプレーン処理の、２つの主要な利用方法がある。制御プレーンは、システムの制御および機器構成を言及する。シリアルリンクは、複数のプロセッサおよび非常に多くのシステム内の複数のカードを設定して制御するインターフェースとして用いられる。シャーシベースの複数のビルディングスイッチは、典型的には、挿入されて使用される様々なカードである。シャーシベースの複数のスイッチは、フィールドアップグレーダビリティを提供する。大部分の複数のスイッチングシステムは、単に初期にシャーシの半分に投入し、要求あるいはユーザ数の増加に応じて、追加の複数のポートあるいはより速いスピードの複数の接続、および複数のカードを加える能力を提供する。シリアルリンク技術が、システムにインストールされた複数のカードの異なるタイプを設定して監視する制御プレーン相互接続として用いられる。ＰＣＩ  Ｅｘｐｒｅｓｓ内の列挙および確立した設定プロトコルは、例えば、それ自身に低いピンカウント、複数のカードおよびサービスを設定する高いバンド幅インターフェースに役に立つ。
【００５８】
データプレーンは、データが流れる実際のパスについて言及する。データプレーン中で、進歩したスイッチング拡張機能は、スイッチ機器を通してピアツーピアリンクを通して、複数のＰＣＩ  Ｅｘｐｒｅｓｓデータパケットをカプセル化して送信する、複数の機構を決定する。
【００５９】
ＰＣＩ  Ｅｘｐｒｅｓｓコアアーキテクチャは、新規の相互接続のニーズを満足させる強固な基盤を提供する。アドバンスドスイッチング（ＡＳ）アーキテクチャはこのコアに重なり、トランザクション層でのＰＣＩ  Ｅｘｐｒｅｓｓデータパケットの前に挿入された特定のＡＳヘッダーの使用を通して、効果的で、拡張性のある、拡張可能なスイッチ機器を確立する。複数のＡＳスイッチは、ルーティング情報（パケットをどこに送るのかを示す情報）、トラフィッククラスＩＤ（サービス情報の質）、輻輳回避（トラフィックの渋滞の回避）、パケットサイズ、およびプロトコルのカプセル化を提供するヘッダーの複数のコンテンツだけを調査する。ルーティング情報を分離することにより、複数のスイッチの設計は、単純で費用効果がよいこととなる。さらに、パケットへの外部ヘッダーの追加は、スイッチ構造に、存在するいかなる数の複数のプロトコルをカプセル化させることができる。
【００６０】
また、上述したリンクインターフェース回路および方法は、（例えば、ギガビットイーサネット（登録商標）の代わりに）複数のネットワーク接続に用いられるシリアルポイントツーポイント相互接続技術を介して通信すべく設計された、複数のＩＣデバイスで実施される。ネットワーク接続は、企業の複数のモバイルおよびデスクトップコンピュータが、複数のファイルを共有し、複数の電子メールを送信し、インターネットをブラウズするためのものであってよい。通信機器と同様に複数のサーバは、そのような複数のネットワーク接続として実行されることが期待される。エンタープライズネットワーク内のそのようなネットワーク接続の例が図９に示される。
【００６１】
上述した複数の実施例では、複数の論理回路の組み合わせおよび連続との関連で本発明の複数の実施形態が記述されているが、本発明の他の複数の実施形態が、ソフトウエアを手段として実施され得る。例えば、いくつかの実施形態は、本発明の実施形態に従った処理を実行するコンピュータ（あるいは他の複数の電子デバイス）をプログラムするために用いられる複数の命令が格納されている、機械またはコンピュータ可読媒体を含むコンピュータプログラム製品あるいはソフトウエアとして提供される。他の複数の実施形態によれば、マイクロコード、配線論理、あるいは、プログラムされたコンピュータの複数の構成要素とカスタムハードウエアの複数の構成要素のいかなる組み合わせを含む、特定の複数のハードウエア構成要素によって複数の操作が実行される。
【００６２】
さらに、設計が、創造からシミュレーション、製作までの様々な複数のステージに直面する。設計を示すデータは、複数の手法で設計を示す。まず、シミュレーションに有用なように、ハードウエアは、ハードウエア記述言語あるいは他の機能的な記述言語を用いて表される。さらに、論理および／または複数のトランジスタゲートを有する回路レベルのモデルは、設計工程のある複数のステージにおいて製造される。さらに、ほとんどの設計は、あるステージにおいて、ハードウエアモデル内の様々な複数のデバイスの物理的な配置を表すデータ表現のレベルに到達する。従来の半導体製造技術が用いられる場合において、ハードウエアモデルを表現するデータは、集積回路を製造するのに用いられる異なる複数のマスク層上の様々な複数の特徴の存在あるいは欠落を特定するデータである。設計のいかなる表現においても、データは、いかなる形式の機械可読媒体に格納される。光学または電波は、そのような情報を伝達すべく変調または他の方法で生成され、ディスクのようなメモリ、あるいは磁気若しくは光学記録媒体は、機械可読媒体である。これらの複数の媒体のいずれも設計またはソフトウエア情報を"運び"、または、"指示する"。電気的な搬送波がコードあるいは設計を指示または運ぶ場合には、あるいは設計が伝送される場合には、コピーの範囲内において、バッファリング、あるいは再び電気的な信号の伝送が実施され、新たなコピーが作られる。それゆえに、通信プロバイダあるいはネットワークプロバイダは、本発明の実施形態の特徴である、アーティクル（搬送波）の複数のコピーを作る。
【００６３】
要約すると、シリアルポイントツーポイントリンクのエラスティックバッファを制御する様々な方法および装置の複数の実施形態が開示された。上述の明細書において、本発明は、その中の特定の典型的な複数の実施形態を参照することで記述された。しかしながら、添付した特許請求の範囲に示した本発明の広い精神および範囲から逸脱しない範囲で様々な改変および変更がそこになされることが明らかである。例えば、システムの実施形態は、デスクトップ、サーバ、あるいはノートパソコンのようなプリント配線基板上の２つのデバイス間のチップとチップとの間の接続としてのシリアルポイントツーポイントリンクを用いて開示されたが、バッファ管理技術は、また、例えば、キーボード、モニタ、外部の大容量記憶装置、またはカメラのような周辺機器とコンピュータとを接続する外部バスの一部である複数のシリアルポイントツーポイントリンクで用いられる。ポイントツーポイントリンクは、複数のコンピュータシステムだけではなく、例えば、複数の携帯電話ユニット、複数の電気通信スイッチ、および複数のデータネットワークルータのような、複数の専用通信装置に用いられる。それゆえ、明細書および複数の図面は、限定的な意味というよりは具体的な例として評価される。
【図１】
2007517334.tif 000003
【図２】
2007517334.tif 000004
【図３Ａ】
2007517334.tif 000005
【図３Ｂ】
2007517334.tif 000006
【図４】
2007517334.tif 000007
【図５】
2007517334.tif 000008
【図６】
2007517334.tif 000009
【図７Ａ】
2007517334.tif 000010
【図７Ｂ】
2007517334.tif 000011
【図７Ｃ】
2007517334.tif 000012
【図８】
2007517334.tif 000013
【図９】
2007517334.tif 000014
【国際調査報告】
2007517334.tif 000015
2007517334.tif 000016
2007517334.tif 000017
2007517334.tif 000018
2007517334.tif 000019