ポイントツーポイントリンクを処理する非データ符号を介したバッファ管理
【解決手段】複数の符号が、第1の集積回路(IC)デバイスで受信され、これらの複数の符号は、第2のICデバイスによって伝送され、シリアルポイントツーポイントリンク上で受信される。これらの複数の符号は、前記第2のデバイスによってデータシーケンス中に挿入された非データシーケンスを含む前記複数の符号はバッファにロードされる。前記データシーケンスおよび前記非データシーケンスのいくらかは、アンロードポインタの変更に応じて前記バッファからアンロードされる。前記バッファのオーバーフローを妨げるべく、前記非データシーケンスの検出に応じて、前記アンロードポインタは、1つのエントリ以上変化され、前記バッファにロードされた前記非データシーケンスの非データ符号は、前記バッファからアンロードされる間はスキップされる。他の実施形態によれば、前記バッファのアンダーフローを妨げるべく、非データ符号を含む前記アンロードポインタが前記バッファの入力においてアンロード中に停止される。また、他の複数の実施形態が記載され、請求項に記載されている。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、広く、電子装置の複数の構成要素を情報伝達すべく接続するのに適したシリアル、ポイントツーポイント相互接続技術に関し、特に、PCI Express Base Specification 1.0a(2003年10月7日に訂正された)("PCI Express")に従っている、所定の特徴を有するそれらに関する。また、他の複数の実施形態も記述する。
【背景技術】
【0002】
電子装置は、いくつかの構成要素を備え、システムの入力/出力(I/O)相互接続を介して互いに通信するように設計されている。例えば、モデムコンピュータシステムは、以下の複数の構成要素を含む。すなわち、プロセッサ、主メモリ、およびシステムインターフェース(また、システムチップセットとも言及される)。構成要素は1つ以上の集積回路(IC)デバイスを有する。例えば、システムチップセットは、メモリコントローラハブ(MCH)デバイスを含み、システムメモリとグラフィックス部品との通信をプロセッサにさせることを可能とする。さらに、I/Oコントローラハブ(ICH)デバイスが、MCHを介して、複数の大容量記憶デバイスおよび複数の周辺機器デバイスのような、コンピュータシステムの他の複数の構成要素と、プロセッサおよびメモリとの接続を提供する。係る場合には、PCI Expressによって規定されたような、セパレート、ポイントツーポイントリンクが、例えば、プロセッサとMCH、MCHとグラフィック構成要素、およびICHと大容量記憶装置デバイスの間のような、複数のデバイスのペア間の2方向通信を可能とすべく用いられる。
【0003】
PCI Expressポイントツーポイントリンクは、同時に動作する1つ以上のレーンを有する。各レーンは、これも同時に動作する、二重の、一方向の複数のパスを有する。各パスは、複数の送受信ペアの単一のセットを有する(例えば、デバイスAのポートに送信機、デバイスBのポートに受信機のように)。係る場合には、送受信は、例えば、基板から基板へのコネクタを横断するプリント配線基板の複数の金属配線のペアのような送信媒体を、駆動、およびセンスする。他の例としては、他の送信媒体は、例えば光ファイバとして提供される。
【0004】
ポイントツーポイントリンクは、複数のデバイス間の様々な種類の情報の伝送する役割を果たす。しかしながら、いわゆる"上位層"において、2つのデバイス(また、リクエスタおよびコンプリータとして言及される)のピア間の情報伝達は、複数のトランザクションを用いて実施される。例えば、データをメモリマップロケーションへ、またはメモリマップロケーションから転送する複数のメモリトランザクションが存在する。PCI Express下において、また、多岐に渡る複数のメッセージを伝送し、割り込み信号、エラー信号、および電力管理のような複数の機能として使用される、複数のメッセージトランザクションが存在する。
【0005】
トランザクションを"ビルド"する、3つの抽象的な層がある。第1の層はトランザクション層であり、トランザクションとしてデバイスコアからデータパケットの中に来る要求または完成データをターニングするプロセスを開始する。第2のアーキテクチャのビルド層は、データリンク層と呼ばれる。データリンク層は、リンクのいたる所、あちらこちらに行く、複数のパケットが適切に受信されることを保証する(エラー制御コーディングなどの複数の技術を介して)。第3の層は、物理層と呼ばれる。当該層は、リンクのいたるところでのパケットの実際の伝送および受信に責任がある。与えられたデバイス中の物理層は、1つのサイドで(同一のデバイス内の)データリンク層と情報をやり取りし、もう一方のサイドで、複数の金属配線、光ファイバ、またはリンクの一部である他の伝送媒体と情報をやり取りする。物理層は、複数の送信機および複数の受信機、複数の直並列および並直列変換機、複数の周波数位相制御回路、およびインピーダンスマッチング回路の回路を含む。また、初期化およびメンテナンスに必要な複数の論理関数の回路を含む。階層化アーキテクチャは、例えば、物理層をアップグレードしている間に(例えば、送受信のクロック周波数を増加する)、本質的には同一のトランザクションとデータリンク層の再利用を許可することにより、簡単な複数のアップグレードを可能とする。
【0006】
物理層の振る舞いの例を述べる。一度電源が入ると、デバイスAおよびデバイスB上の双方の物理層は、リンクの初期化に関与して、トランザクションの準備を整える。当該初期化プロセスは、リンクにいくつのレーンが用いられるかを決定する段階、およびどのデータ速度でリンクを動作させるかを決定する段階を含む。リンクが適切に初期化された後に、メモリ読み込み要求がデバイスA内で初期化される。最終的には、複数のヘッダー、エラー制御情報、および、より高次の複数の層によって付加された複数のシーケンス番号を含み、当該メモリ読み込み要求が含まれるパケットが、デバイスAの物理層に到着する。続いて、物理層はデータの当該パケットを取得して、シリアルデータストリーム(おそらくフレームデータを付加した後に)に変化させ、例えば、予め定められたタイミングルールを有する電気的な、差分信号を用いて、ストリームを送信する。
【0007】
一度、デバイスB中の物理層が、その受信機の入力に信号が出現したことを発見したときには、データストリームを回復すべく信号をサンプリングして、ストリームをデータパケットに組み込んで返す(例えば、フレームを取り除いた後に)。続いて、パケットは、デバイスB中のデータリンク層へ渡され、複数のヘッダーが除かれ、複数のエラーがチェックされる。エラーがない場合には、パケットはトランザクション層へ渡され、メモリ読み込み要求が展開され、続いて、要求中で特定される複数の場所にアクセスすべく、適切なロジック機能へ送信される。
【図面の簡単な説明】
【0008】
本発明の複数の実施形態は、実施例として図示され、添付した複数の図面の複数の図に限定されることはなく、同様の複数の参照番号は同様の複数の構成要素を示す。本願における本発明の"一"実施形態という参照は、必ずしも同一の実施形態ではなく、少なくとも1つのという意味に言及されるべきである。
【0009】
【図1】シリアルポイントツーポイントリンクによってお互いに接続されている集積回路デバイスのペアを示す。
【0010】
【図2】集積回路デバイス内のシリアルポイントツーポイントリンクの実行に用いられるリンクインターフェース回路の一部のブロック図を示す。
【0011】
【図3A】ポイントツーポイントリンクの物理層中で、バッファ制御を実行するために用いられる回路のブロック図を示す。
【図3B】ポイントツーポイントリンクの物理層中で、バッファ制御を実行するために用いられる回路のブロック図を示す。
【0012】
【図4】図3のバッファ制御回路内で、どのように非データ符号検出フラグが配列されるかのタイミング図を示す。
【0013】
【図5】ポインタ比較操作の例を示すタイミング図の例である。
【0014】
【図6】オーバーフローを避けるバッファ制御のタイミング図の例である。
【0015】
【図7A】アンダーフローを避けるバッファ制御のタイミング図の例である。
【0016】
【図7B】バッファの起動状態の例を示すタイミング図である。
【図7C】バッファの起動状態の例を示すタイミング図である。
【0017】
【図8】複数のPCI Express仮想チャンネル(VC)を介してお互いに情報伝達可能に接続された、マルチメディアデスクトップコンピュータの様々な構成要素を特定する。
【0018】
【図9】企業ネットワークのブロック図を示す。
【発明の開示】
【0019】
本発明の一実施形態は、非データ符号処理を手段として、ポイントツーポイントリンクのためのバッファ制御が管理される。図1は、シリアルポイントツーポイントリンクによってお互いに接続されている集積回路デバイスのペアを示す。ICデバイス104(デバイスA)および108(デバイスB)は、プロセッサ112および主メモリ114を含むコンピュータシステムの一部であってよい。本実施例においては、シリアルポイントツーポイントリンク120は、デバイスBのコアとデバイスAのコアとを通信可能に接続すべく用いられる。リンク120は、二重の、一方向性の複数のパス122、デバイスAおよびBの各々のデバイスコアとのインターフェースとしての役割を果たすリンクインターフェース124を有する。
【0020】
当該実施形態によれば、デバイスBは、コンピュータシステムのルートコンプレックスとして言及され、例えば、デバイスAのグラフィックス構成要素へアクセスするI/Oを有したプロセッサ112を提供する。ルートコンプレックスは、グラフィックスおよびメモリコントローラハブ(GMCH)並びにI/Oコントローラハブ(ICH)に分けられる。ICHは、システムのGMCHおよび他の複数のI/Oデバイス間のさらなるインターフェースとして機能して、不揮発性大容量記憶装置、トラックパッドやマウスのようなポインティングデバイス、およびネットワークインターフェースコントローラ(図示しない)を含む。ポイントツーポイントリンク120は、デバイスBをプロセッサ112および主メモリ114と通信可能に接続することを繰り返す。また、ポイントツーポイントリンク120を特徴付ける他の複数のプラットフォームアーキテクチャも可能である。
【0021】
図1のインターフェース124は、シリアルポイントツーポイントリンクのために(背景技術において述べた)多重層アーキテクチャを実施すべく示される。インターフェース124のいくつかの詳細が図2に示される。インターフェース124は、伝送媒体122と個々のデバイス104、108のデータリンク層との間の複数のパスの独立した伝送および受信をサポートする。伝送パスにおいて、複数のデータパケットの形での情報が、データリンク層から到着して、複数の符号に分割され、エンコードブロック208においてエンコードされる。ブロック208によってエンコードする目的は、分離したクロック信号が、伝送媒体122中に伝送されることを必要としないために、クロック信号を埋め込むことであるこのエンコードは、8ビットの量が10ビットの量に変換される周知の8B−10Bである。他の複数のエンコードが可能である。ある場合においては、分離したストローブまたはクロック信号が媒体122を伝送する場合のように、そのようなエンコードが不要な場合もある。
【0022】
ブロック208において続いてエンコードされ、データの複数のユニット(個々では複数の符号として言及される)が、アナログフロントエンド(AFE)トランスミットブロック214のパラレルからシリアルのブロック212によって処理され、複数のビットのストリームを生成する。個々で用いられる"ビット"は、例えば、2進法のビット、3進法のビット等のような2つの異なる状態よりも多くを意味することに留意する。"ビット"という用語は、単に本願では便宜上用いるだけで、2進法のビットに限定されることは意図しない。ビットストリームは、続いて、伝送媒体122にドライブされる。背景技術において説明したように、当該伝送媒体は、プリント配線基板に形成された金属の配線のペアであってよい。伝送媒体122の他の複数の形態、例えば、光ファイバのような形態が、代わりに用いられてよい。
【0023】
ブロック208から214の連続は、ポイントツーポイントリンク120のシングルレーンとして動作する(図1)。一般的に、データリンク層から受信したパケットが、伝送のために複数のレーンを横切って"ストライプト"されるべくポイントツーポイントリンク120には1つ以上のレーンがある。
【0024】
次に、図2に示すインターフェース124の受信側を検討すると、各レーンは、例えば、伝送媒体122中の信号のサンプリングによって、伝送媒体122から情報のストリームを受信するものとして動作する、その関連するAFE受信ブロック224を有する。AFE受信ブロック224は、伝送媒体122の複数の信号伝達と、ICデバイス104(例えば、オンチップ、相補型金属酸化物半導体、CMOS、論理信号伝達)の信号伝達との間で変換する。以下で説明するように、情報のストリームは、Mビットの複数の符号のシーケンスを示し(Mは1より大きい整数)、シリアルポイントツーポイントリンク120を超えてデバイスBによって伝送される(図1参照。)。
【0025】
AFE受信ブロック224によって提供される複数のビットのストリームは、受信された複数の符号を整列またはロックする符号アライメントロジック228に供給される。すなわち、以下で述べるように、符号アライメントロジック228は、デバイス104中の物理層のその後の複数のセクションによって用いるべく、受け取ったビットストリーム中の正確な符号の正確な境界を定める。
【0026】
続いて、符号アラインドビットストリームは、エンコードブロック208(例えば、各々8バイナリビットからなる情報の複数の符号を生成する10B−8Bデコード)によって実行されるエンコードを元に戻すデコードブロック232に供給される。
【0027】
デコードされた複数の符号は、続いて、エラスティックバッファ、EB234に供給される。EB234は、複数の符号がデバイスB中を伝送する速度、デバイスAのローカルクロック信号(local_clk)の速度の許容範囲のいかなる違いをも補償すべく作用する。local_clkは、(リンク120が1つ以上のレーンを備える場合において)以下に説明するレーンツーレーンデスキュー回路238へのいくつかのケースで動作する場合と同様に、EB234から複数の符号をアンロードするために用いられる。(もし提供されれば)デコードブロック232は、例えば、EB234の出力地点、または、デスキュー回路238の出力地点のような、より下流に配置されることに留意すべきである。
【0028】
EB234のブロック図の例が、図3Aおよび図3Bに示される。当該実施例においては、EB234は、アライメントロジック228からデコードブロック232(図2参照)を介して、8ビットの符号を受信する入力(図3Aの左側)を有する。以下で説明する本願の他の例は、デコードブロック232をバイパスするので複数の符号が、10ビット幅である、末端ループバックモード(FELB)である。他の例においては、他の複数の符号の幅が可能である。
【0029】
符号は、"データ"符号であり、データリンク層、トランザクション層、または、例えば、デバイスコアのような他のいくつかの高次の層がソースである、いくつかのペイロードを示す。他の例としては、符号は、シリアルポイントツーポイントリンク上を伝送された情報に渡ってある種の制御を達成するために、例えば、物理、データリンク、あるいはトランザクション層のうちの1つによって生成された特別な符号のような、"非データ"符号である。そのような複数の非データ符号のいくつかの実施例が、複数のPCI Expressスペシャル符号として以下に述べられる。
【0030】
PCI Expressは、伝送される複数のパケットに付加される多くの特別の符号を決定する。例えば、複数の特別の符号は、パケットのスタートおよびスタートを示すべく付加される。これは、1つのパケットが開始することおよび終わることを受信デバイスに知らせるべくなされる。異なる特別の複数の符号が、データリンク層中よりもトランザクション層に起因する複数のパケットのために付加される。さらに、2つの通信ポートの扱っているデータの速度の小さな差異の補償のために物理層によって用いられる、"SKP"(スキップ)と呼ばれる特別の符号がある。また、レーンおよび物理層によるリンクの初期化に用いられる、"COM"(コンマ)と呼ばれる特別の符号がある。
【0031】
複数の符号は、ロードポインタロジック308によって提供されるロードポインタ、EbLdPtr、にしたがって、バッファ304(キューと称される、ファーストインファーストアウト構造を有する)の多数の入力に連続的にロードされ、EB234の入力に到達する。アンロードポインタロジック312によってアンロードポインタ、EbUldPtrは、バッファ304から複数の符号を連続的に案ロードする。図3Aに示すように、仮想の点線がバッファ304を通って存在するこれは、受信クロック、grxclkと、ローカルクロック、lgclkとの間のEB234によって実行されるクロッククロスを示す。複数の符号は、grxclkに従ってロードされ、lgclkに従ってアンロードされる。これら2つのクロックドメインは、周波数に関してはできる限りお互いに近い値で設計されるが、各クロックドメインは、いくらかの許容範囲、あるいは、しばしば百万分の一(ppm)単位で特定される、非常に微小な周波数の変動を可能とする。grxclkは、(複数の符号を伝送する)他のICデバイスの伝送クロックに由来しており、当該伝送クロックは、他のデバイスによって伝送された情報のストリーム中に組み込まれるか、または、例えばソースシンクロナスシナリオ中のような分離したクロック若しくはストローブ信号で提供される。PCI Express下において、grxclkは、±300ppmの許容範囲を有する。同一の許容範囲が、デバイスAのローカルクロック、lgclkに割り当てられる。
【0032】
EB234および特にバッファ304のオーバーフローおよびアンダーフローの問題を説明するために、スタートアップにおいて、バッファ304にロード、およびアンロードされた複数のポインタが、バッファの約半分のデプスに分離されると仮定する。grxcleとlgclkの周波数の間の実際の相違によって、これらの複数のポインタは、時間がたつにつれて衝突し得るように、ドリフトしてお互いに離れ始めるか、または、お互いに近傍にドリフトし始めるが、それは、オーバーフローまたはアンダーフローである。EB234の理想的な状態は、ロードおよびアンロードポインタが常に、バッファ304のデプスの半分によって分離されていることである。以下に説明するように、この理想は、a)特別の、または複数の符号の非データシーケンスの検出と、b)ロードポインタがアップデートされたデフォルトの方法で調整することがない、バッファの差し迫ったオーバーフローまたはアンダーフロー状態の関数としてのアンロードポインタの調整または制御によって追及される。
【0033】
EB234のアンロードポインタは、予め定められた、デバイスBによってデータシーケンス中に挿入された(図1参照)複数の符号の特別のあるいは非データシーケンスを用いてオーバーフローおよびアンダーフロー状態を避けるべく(例えば、図3−Bのアンロードポインタロジック312およびポインタ制御ロジック314を用いて)、管理される。簡単に言えば、バッファのアンダーフローを回避するために、アンロードポインタは、非データシーケンスの検出に応じて、非データ符号を含むバッファのエントリでストールされる。これは、アンロードポインタの変化に応じてデータシーケンスのアンロードの間になされる。これは、ロードポインタが、アンロードポインタから離れ、それゆえにアンダーフローを避けることになる。
【0034】
他方では、バッファのオーバーフローを避けるために、アンロードポインタが、(バッファイン現在ロードされている)非データシーケンスの非データ符号が、バッファから複数の符号がアンロードされている間にスキップされるべく、1つのエントリ以上によって変化される。再度、非データシーケンスの検出に応じてこれはなされる。これは、アンロードポインタが、再び衝突することを避けるべくロードポインタから離れる原因となるオーバーフローおよびアンダーフローを避ける能力の実施に関する技術の実施例の詳細については、以下に述べられる。
【0035】
図3Aおよび図3Bに戻ると、EB234のバッファ304は、符号だけではなく(例えば8ビットあるいは10ビットのキャラクターの)、符号がデータ符号か、あるいは非データ符号か(8b10b_eb_kchar_f)、および予め定められた非データシーケンスインジケータか(EbSkpDet)を示す符号用の制御ビットを各エントリ内に格納すべく設計される。kchar_f制御ビットは、デコードブロック232によって生成され、一方、EbSkpDetは、示したEB234ロジックによって生成される。後者のインジケータは、PCI Expressの実施形態の特有の実施例であり、用いられる特別な、非データシーケンスは、SKP Ordered−Setである。他の例としては、他の予め定められた、複数の非データシーケンスが用いられる。EbSkpDet非データシーケンスインジケータは、アンロードポインタの制御のために以下に述べるように、EB234によって用いられる。
【0036】
EB234のアンロードおよびロードポインタを適切に調整するために、SKP Ordered−Set検出フラグが生成され、この場合においては、PCI Express ComのOrdered−Setの受信された非データ符号とともに、バッファ304の入力に配列される。COM符号は、Ordered−Setの1つ以上のSKP符号の前に来る。(図3Aに示した垂直線の右側の)lgclkドメイン中で、正確な複数のアクションがOrdered−Setに関して取られるべく、インジケータはEB234を通って通過する。図4のタイミング図に示したように、Ordered−Setインジケータは、非データ符号COMが非データ符号SKPの後に続くgrxclkの1サイクルでアサートされた信号である。図4において、波形8b10b_eb_data[7:0]は受信された複数の符号を示す(この場合において、Dxxの連続で示されているデータシーケンス中に挿入されたSKP Ordered−Setを含む)。受信された複数の符号およびOrdered−SetインジケータEbSkpDetの双方が、バッファ304のエントリに格納される前にフロップされる。COM符号およびEbSkpDetinのアサーションがgrxclkの同一のサイクルにおいてどのように発生するかは留意すべきである。言い換えれば、検出フラグEbSkpDetは、この場合において8ビットの符号EbDataIn[7:0]とともに、バッファ中にアサートされてロードされる。
【0037】
図3Bを参照すると、比較ロジック316が、非データシーケンスが検出されない場合に、複数のポインタの適切な調整がなされるように、アンロードおよびロードポインタのそれぞれに関して、アンロードおよびロードポインタの位置をサンプリングすることができる。これは、当該実施形態において、複数のポインタのうちの1つが、複数のクロスクロックドメインを必要とし、キュー内の2つのポインタの位置を決定する必要があることを意味する。この実施形態においては、grxclkドメインのロードポインタは、lgclkドメインとクロスオーバする。複数のポインタを示すクレースケールの使用が、単純なバイナリよりも正確で効率的な実現を提供することに留意すべきである。
【0038】
lgclkドメイン中で、半分以上か、あるいは、半分より少ないバッファ304の状態を示すべく生成される、2つのインジケータが存在する。他の方法としては、オーバーフローおよびアンダーフローの状態を避けることをEB234にまだ可能とする、(例えば、予め定められた閾値よりより完全、またはそれほど完全ではない)他の複数の状態が決定される。当該実施例においては、半分以上完全なインジケータはEbMrHlfFullであり、grxclk度目印画lgclkドメインよりも"早い"ことを示す。このインジケータがアサートされた場合、そして、非データシーケンスが受信された場合には、その理想的な半完全な状態にバッファを戻すことを試み、もたらすべく、非データ符号、およびこの場合においてはSKPが、Ordered−Setから取り除かれる。
【0039】
他方では、半完全より少ない(EbLsHlfFull)インジケータは、反対を示す。すなわち、lgclkドメインはgrxclkドメインよりも早い。係る場合においては、SKP Ordered−Setが受信された場合に、SKPが付加され、複数のポインタが理想的で、半完全な状態に戻ることをもたらす。もちろん、これらの複数のインジケータの双方がアサート停止した場合には、バッファは半完全となり、ロードおよびアンロードポインタにいかなるアクションも必要ではない。本発明の一実施形態によれば、このSKPのインスタンスの付加および除去は、ポインタ制御ロジック314(図3B)によって達成され、アンロードポインタEbUldPtr(ロードポインタEbLdPtrとしてではなく)としての役割を果たす。その動作は、図6および図7のタイミング図の例に示しており、以下でさらに述べる。
【0040】
図5は、異なるクロックドメインにあるポインタを考慮して、どのように複数のポインタが比較されるかを示すタイミング図の例である。図5は、grxclkおよびlgclkの波形を示し、当該実施例においてはgrxclkがより早い。ここで、ロードポインタEbLdPtrはlgclkドメインと、1から2サイクルの遅延で、ロードポインタの実際の位置と同期した位置EbLdPtrSyncとの間においてクロスしている。ロードポインタのクロスによる当該時間の遅延を補償すべく、アンロードポインタの値が、また、EbUldPtrAdjを生成すべく、当該実施例においては2の値、現在の値を減少させることにより調整される。続いて、EbldPtrSyncとEbUldPtrAdjとの間で比較がなされ、この場合においては、バッファが、lgclkのサイクル4に示したような半完全よりも多い。この実施例においては、他の複数のデプスがまた働いているが、バッファ304のデプスが、10エントリと仮定されることに留意すべきである。
【0041】
図5のタイミング図を参照すると、lgclkの初めの4サイクルにおいて、同期したロードポインタ、EbLdPtrSyncが、調整されたアンロードポインタEbUldPtrAdjと、この場合において5エントリであるおよそ半分のバッファのデプス分、異なる。それに応じて、EbMrHlfFullおよびEbLsHlfFullの双方がアサート停止される。しかしながら、サイクル3において、同期したロードポインタは、1エントリだけ先んじ(エントリ8からエントリ0)、2つのポインタ間のこの違いが、バッファデプスの半分よりも大きいため、EB234は、半完全よりも多いと判断し、それゆえ、オーバーフローに近づく。当業者は、同様のタイミング図がアンダーフロー状態において描かれることが、この記述に基づいて理解するであろう。
【0042】
ポインタ比較ロジック316(図3)に関して、複数のポインタの位置を決定するアルゴリズムは以下の通りである。調整されたアンロードポインタが、同期化されたロードポインタよりも大きい場合には、調整されたアンロードポインタと同期化されたロードポインタとの間の差は、むしろ、キューの中でフリーなエントリーの数である。一方で、同期化されたロードポインタが、調整されたアンロードポインタよりも大きい場合には、同期化されたロードポインタと調整されたロードポインタとの間の差は、むしろ、キュー内に取られたエントリの数である。もちろん、同期化されたロードポインタが調整されたアンロードポインタと等しい場合には、複数のポインタは衝突し、EB234は、オーバーフローまたはアンダーフローを有する。ポインタの衝突は、例えば、受信した複数の非データシーケンスの欠如、またはgrxclkとlgclkとの間の周波数の差が非常に高く、設計仕様を外れることによる。その場合には、続く符号処理ブロック、あるいはデバイスAの上位層に、複数のポインタが衝突しているので、与えられたリンク(図2参照)の全てのレーンにおける複数のポインタを初期に戻すか、または規定の値に戻す、リカバリ状態の開始の指示が送信される。
【0043】
図6および7に戻ると、複数のタイミング図の例が、どのように非データシーケンスがオーバーフローおよびアンダーフロー状態を避けるべく処理されるかについて示される。上述したことを思い起こすと、SKP Ordered−Setが受信された場合には、バッファ304の入力でフラグが生成され、そして、バッファを通ってOrdered−Setの符号とともに通過する。本願で述べた複数の実施例において、バッファの管理に適用される調整は、バッファの出力、すなわち、lgclkドメイン中で起こる。特に、バッファの状態(例えば、半完全、半完全より多い、あるいは、半完全より少ない)に応じて調整されるのは、アンロードポインタである。図6は、バッファが半完全よりも多い事態での、アンロードポインタの調整または制御の工程を示すタイミング図を表す。当該実施例において、grxclkが、オーバーフロー状態を引き起こし得るlgclkよりもどう早いかに留意すべきである。この場合において、単一のSKPに続くCOMを含むSKP Ordered−Setは、EB234の入力において受信される。サイクル1においてSKP検出フラグ(EbSkpDetin)とともにバッファはロードされ、バッファのエントリ9の中にCOMとともに配列される。
【0044】
lgclkドメイン中で、複数のポインタが、サイクル3まで、5エントリ離れている(EbMrHlfFullあるいはEbLsHlfFullのいずれもがアサートされていない)ことに留意すべきである。その点において、同期化したロードポインタは、エントリ8からエントリ0に移動し、ロードポインタがアンロードポインタよりも1サイクル多く移動したことを示す。サイクル7において、SKP Ordered−Setと関連するSKP検出フラグ(EbSkpDetOut)は、バッファからアンロードされる(エントリ9)。半完全よりも多いバッファで、アンロードポインタEbUldPtrは、追加のエントリだけ前に移動し、エントリ0に移動する代わりに、ポインタはエントリ1に移動する。アンロードポインタの移動を反映する、調整されたアンロードポインタ、EbUldPtrAdjとともに、EbuldPtrAdjとEbLdPtrSyncとの間の差が5エントリに戻り、バッファの状態が、半完全なインジケータよりも多いアサート停止を伴うサイクル9においてアップデートされる。それゆえに、1エントリ以上のアンロードポインタの変化は、この場合SKPという非データ符号が、バッファにロードされ、EbDataOut[7:0]に反映されるように複数の符号がアンロードされる間にスキップされる結果となる。
【0045】
図7Aに戻ると、バッファが半完全よりも少ない場合に、アンダーフローを避けるべくEB234を管理するタイミング図の例が示される。この場合において、grxclkドメインは、lgclkドメインよりも遅く、バッファは、満たされるよりも早く空になる。図の上端において、データシーケンスに挿入された非データシーケンスが存在し、EbDataInに示すようにEB234の入力に到達する。
【0046】
COM符号はSKP検出フラグとともに、grxclkのサイクル1下に示したように、エントリ9に格納される。次に、lgclkドメインを参照すると、バッファはサイクル3まで半分詰まっており、同期化したロードポインタは、調整されたアンロードポインタはインクリメントし続けている間の2サイクルの間、エントリ9に留まる。図5のタイミング図で上記例示したように、これは、grxclkとlgclkとの間の差のミスマッチあるいは許容範囲による。それに応じて、サイクル4において、半分以下のインジケータがアサートされる。サイクル6において、EbLsHlfFullがアサートされている状態で、SKP検出フラグがバッファからアンロードされ、アンロードポインタEbUldPtrが、HldUldPtrのアサーションとともにサイクル7でストールされる。これにより、アンロードポインタは、サイクル7のエントリ0上に残ったままとなる(エントリはSKPを含んでいる)。それゆえに、EbDataOut[7:0]のサイクル7に見られるように、さらなるSKPがシーケンスに挿入される。
【0047】
次に、同期化されたロードポインタと調整されたロードポインタとが、サイクル7からサイクル8への遷移において比較された場合に、複数のポインタが、再び、5エントリ離れて戻り、EB234の複数のポインタがそれらの理想的な状態に戻る。
【0048】
続いて、どのようにロードおよびアンロードポインタが上記複数の実施例において機能するのかの他の記述が提供される。ロードポインタに関しては、このポインタは、EB234がアクティブであるか、または有効である限り、(grxclkに従って)全ての期間で1ずつインクリメントする。しかしながら、アンロードポインタに関しては、(初期化後の)アンロードポインタは、バッファが半分以上詰まっている場合に、EB234が非データシーケンスを現在は処理していない場合に限り、(lgclkに従って)1つインクリメントし、非データシーケンスは、半分以下の状態のバッファでは、最後のサイクルで受信されない。さらに、非データシーケンスが処理されるときに、アンロードポインタは2つずつインクリメントし、バッファは半分以上となる。最後に、アンロードポインタはインクリメントされず、非データシーケンスが最後のサイクルで受信され、バッファが半分以下となったときに停止する。
【0049】
エラスティックバッファを管理する上述した方法および装置の利点は、許容範囲が送受信クロックで可能とされているにもかかわらず、シリアルポイントツーポイントリンクで受信した複数の符号の安定したフローを保つ、比較的強固な技術である点である。初期のトレーニングの間、電源が入った後にリンクが起動する前だけでなく、ICデバイスによる各パケットの受信の間に、工程が実施されることを留意すべきである(工程が、与えられたレーンの通常の操作の間に繰り返されるべく、各パケットが1つ以上の特別の、非データシーケンスのインスタンスを含むことがしばしば仮定される。)。本発明の他の実施形態によれば、デバイスA(図1参照)は、ファーエンドループバックモード(FELB)で動作できる。FELBにおいて、デバイスAで受信した複数の符号のシーケンスは、シーケンスがバッファされた後に(EB234によって、図2参照)、デバイスBの外にループバックされる。それに応じて、FELBにおいて、バッファされたシーケンスの符合コンテンツは、デバイスAの外で監視され、デバイスAのEB234によってどのように(デバイスBによって送信された)オリジナルシーケンスが変形されたかを決定する。
【0050】
(複数のエラスティックバッファポインタのスタートアップ)本発明の他の実施形態は、非同期、EB234で遭遇するクロッククロス遅延、およびバッファ304の必要とされるサイズを減少する複数のヘルプを自動的に調整するスタートアップ機構にある。そのような実施形態においては、EB234のロードおよびアンロードポインタのスタートアップは、2つの異なる基準に基づく。qual_EbActiveという用語は、grxclkドメイン(ロードポインタのドメイン)の上にクロッククロスするlgclkドメイン(アンロードポインタのドメイン)で生成されるとして定義される。この用語は、アサートされたときに、ロードポインタをリリースする。qual_EbActiveという用語は、以下の、1)リンクインターフェース124のリンク初期化ユニット(図示しない)が、このEB234が作動しているレーンを示す(例えば、gi_gp_laneupがlgclkドメインにアサートされる)、2)インターフェース124の受信クロックが有効である(gi_gp_piclkenがlgclkドメインにアサートされる)、3)複数のEB234ポインタが初期化されていない(gi_gp_ebptrrstが、ポインタの衝突によってlgclkドメインにアサートされない)、4)シンボルアライメントロジック228(図2参照)が、シンボルロックを取得する(gp_gi_kalignlck−lgclkドメイン)、5)ロードポインタが初期化される、という複数の状態を含む。この用語は、PCI ExpressL0s entry/exit状態(sync_loadreset_done−lgclkドメイン)がある実施形態に付加される。
【0051】
一度ロードポインタがリリースされると、lgclkドメインにクロックがクロスする。このクロックドメイン中で、連続する複数のクロック中のロードポインタが変化した事実は、アンロードポインタが現在リリースされていることを示す。アンロードポインタは、上記した5つの状態のいずれかがフォールスになるまでインクリメントし続け、その場合には、アンロードポインタは初期化され、そのいくらか後にロードポインタも初期化される(クロッククロス)。
【0052】
実施例としては、アンロードポインタは"000"の値に初期化される。その一方で、ロードポインタは"001"の値に初期化される。この理由は、半分のシナリオのバッファで始まることによるものの、当該実施例においては、(クロッククロスするロードポインタおよびアンロードポインタのキックオフのための)クロッククロスペナルティの2つのクロックが占め、また、Ebactive_unloadの用語を生成するフロップステージが占める。これは、ロードポインタが"001"の値から始まることを意味する。バッファスペースをチェックすべく比較をするために、アンロードポインタがまだ、2つディクリメントされることに留意する。この技術は、常に同一の、EbMrHlfFull状態で開始する。しかしながら、EB234に到達した非データ符号SKPの第1のインスタンスがバッファ304(ここではキュー)を再び半分(HalfFull)にするので、これは重要ではない。
【0053】
図7Bのタイミング図の例において、コアクロックドメインのアクティブインジケータ(qual_EbActive)は、コアクロックドメイン(lgclk)のサイクル1にアサートされる。続いて、アクティブインジケータは、grxclkドメインに送信され、サイクル3にアサートされるsync_EbActive_load信号を生成する。sync_EbActive_load信号のアサーションにより、ロードポインタ(ldptr)は、その初期化の値からリリースされ、移動し始める。その一方で、コアクロックドメインlgclkのアンロードポインタ(unldptr)は、sync_ldptrが移動し始めるまでは移動することが妨げられる。サイクル6によって、アンロードポインタおよび調整されたアンロードポインタが移動し始める前に、同期化したロードポインタが移動し始める。これにより、半分以上の信号(EbMrHlfFull)のアサーションという結果となる。この実施例におけるスタートアップ機構は、常に、始めにMrHlfFullがアサートされる結果となり、到達するSKPの最初のインスタンスが、HlfFull状態にキューをもたらす点に留意すべきである。それに応じて、MrHlfFullのスタートアップの状態は、一時的な状態として言及される。
【0054】
また、EB234のアンロードポインタが、その初期状態を維持した後に動作を開始した場合に、ロードポインタが初期化された(すなわち、キューの第1のエントリ)キューの入力にアンロードポインタが到達するまではキューの出力のデータが有効ではないことに留意すべきである。不正なその後に続く符号処理の複数のステージからの(例えば、図2のデスキュー回路238)、有効でないデータを阻止するために、キューの出力からのSKP検出フラグおよびKキャラクタ(存在する非データ符号)ビットが、EbOutVldで表される有効なインジケータまたはフラグでゲートされる。図7Cのタイミング図の例に示したように、アンロードポインタは移動が妨げられている(EB234は非アクティブとみなされる)一方で、このインジケータは、アサート停止されたままであり、そして、(図7CのENT0で起こる)アンロードポインタがロードポインタの初期化の値に移動するまでアサートされない。以下の複数の決まりは、このEbOutVldフラグの操作を定義するべく用いられる。1)EbOutVldは、EB234がアクティブのときにアサートされ(qual_EbActiveがアサートされる)、そしてアンロードポインタがロードポインタの初期化の状態に移動する、2)EbOutVldは、EB234が非アクティブのときにアサート停止される(qual_EbActiveがアサート停止される)。上記で述べたように、EB234の出力において有効なフラグは、SKP検出フラグ、EbSkpDetOut、および、Kキャラクタ検出フラグ、EbKcharDetOutの双方がキューに格納されている有効でない複数の符号から誤ってアサートされることを防止する。
【0055】
(他のシステムの複数の実施形態)また、上述したリンクインターフェース回路および方法は、マルチメディアにアイソクロナスサポートを提供するシリアル、ポイントツーポイント相互接続技術を介して通信するべく設計された、複数のICデバイスで実施される。アイソクロナスサポートは、データが決定性および時間依存の方法を用いて供給されるQoS(サービスの質)保証の特定のタイプである。プラットフォームベースのアイソクロナスサポートは、与えられた時間間隔での要求されるバンド幅を得るための一定のあるいは専用の複数のシステムリソースへのアクセスのレベルを必要とする応用を可能とする文書化されたシステムデザイン手法を依存する。
【0056】
図8に示すように、レポートに取り組んでいる間のデスクトップ上に、会社のCEOから発せられる従業員用の放送を見ることが例である。データは、インターネットからデスクトップの主メモリへ向かい、アプリケーションがデータを利用して、オーディオストリームを生成してアドインカードを介してユーザのヘッドフォンに送信し、ビデオストリームをグラフィックコントローラを介してディスプレイに送信する。例えば、ディスク読み出し、インターネットからのデータ、ワードプロセッサ、電子メールなど、デスクトップパーソナルコンピュータ(PC)内で同時に複数の操作が発生した場合には、オーディオおよびビデオストリームが本当に以上がないかの保証はない。データは"ベストエフォート"手法でのみ供給される。ユーザは、複数のアプリケーションが同一のリソースで競合したときに、複数のスキップあるいは複数の停止を経験する。PCI Express内での同時発生は、時間依存の複数のアプリケーションが適切なシステムリソースを確実にすることを保証する機構を確立することによって、この問題を解決する。例えば、図8において、ビデオ時間依存データは、例えば、電子メールのような重大ではないデータの費用でスキップすることを防止する適切なバンド幅を保証される。
【0057】
また、上述したリンクインターフェース回路および手法は、組み込まれた複数のアプリケーションから複数のシャーシベースのスイッチングシステムへの通信装置に用いられるシリアルポイントツーポイント技術を介して通信すべく設計された複数のICデバイスで実施される。進歩したスイッチングにおいて、複数の機構が、スイッチ構造を通してピアツーピアで複数のパケットを送信するために提供される。また、これらは、PCI Expressで利用できるサーバークラスハードウエアベースのエラー検出からの利益を売り込む。通信機器内に、制御プレーン処理およびデータプレーン処理の、2つの主要な利用方法がある。制御プレーンは、システムの制御および機器構成を言及する。シリアルリンクは、複数のプロセッサおよび非常に多くのシステム内の複数のカードを設定して制御するインターフェースとして用いられる。シャーシベースの複数のビルディングスイッチは、典型的には、挿入されて使用される様々なカードである。シャーシベースの複数のスイッチは、フィールドアップグレーダビリティを提供する。大部分の複数のスイッチングシステムは、単に初期にシャーシの半分に投入し、要求あるいはユーザ数の増加に応じて、追加の複数のポートあるいはより速いスピードの複数の接続、および複数のカードを加える能力を提供する。シリアルリンク技術が、システムにインストールされた複数のカードの異なるタイプを設定して監視する制御プレーン相互接続として用いられる。PCI Express内の列挙および確立した設定プロトコルは、例えば、それ自身に低いピンカウント、複数のカードおよびサービスを設定する高いバンド幅インターフェースに役に立つ。
【0058】
データプレーンは、データが流れる実際のパスについて言及する。データプレーン中で、進歩したスイッチング拡張機能は、スイッチ機器を通してピアツーピアリンクを通して、複数のPCI Expressデータパケットをカプセル化して送信する、複数の機構を決定する。
【0059】
PCI Expressコアアーキテクチャは、新規の相互接続のニーズを満足させる強固な基盤を提供する。アドバンスドスイッチング(AS)アーキテクチャはこのコアに重なり、トランザクション層でのPCI Expressデータパケットの前に挿入された特定のASヘッダーの使用を通して、効果的で、拡張性のある、拡張可能なスイッチ機器を確立する。複数のASスイッチは、ルーティング情報(パケットをどこに送るのかを示す情報)、トラフィッククラスID(サービス情報の質)、輻輳回避(トラフィックの渋滞の回避)、パケットサイズ、およびプロトコルのカプセル化を提供するヘッダーの複数のコンテンツだけを調査する。ルーティング情報を分離することにより、複数のスイッチの設計は、単純で費用効果がよいこととなる。さらに、パケットへの外部ヘッダーの追加は、スイッチ構造に、存在するいかなる数の複数のプロトコルをカプセル化させることができる。
【0060】
また、上述したリンクインターフェース回路および方法は、(例えば、ギガビットイーサネット(登録商標)の代わりに)複数のネットワーク接続に用いられるシリアルポイントツーポイント相互接続技術を介して通信すべく設計された、複数のICデバイスで実施される。ネットワーク接続は、企業の複数のモバイルおよびデスクトップコンピュータが、複数のファイルを共有し、複数の電子メールを送信し、インターネットをブラウズするためのものであってよい。通信機器と同様に複数のサーバは、そのような複数のネットワーク接続として実行されることが期待される。エンタープライズネットワーク内のそのようなネットワーク接続の例が図9に示される。
【0061】
上述した複数の実施例では、複数の論理回路の組み合わせおよび連続との関連で本発明の複数の実施形態が記述されているが、本発明の他の複数の実施形態が、ソフトウエアを手段として実施され得る。例えば、いくつかの実施形態は、本発明の実施形態に従った処理を実行するコンピュータ(あるいは他の複数の電子デバイス)をプログラムするために用いられる複数の命令が格納されている、機械またはコンピュータ可読媒体を含むコンピュータプログラム製品あるいはソフトウエアとして提供される。他の複数の実施形態によれば、マイクロコード、配線論理、あるいは、プログラムされたコンピュータの複数の構成要素とカスタムハードウエアの複数の構成要素のいかなる組み合わせを含む、特定の複数のハードウエア構成要素によって複数の操作が実行される。
【0062】
さらに、設計が、創造からシミュレーション、製作までの様々な複数のステージに直面する。設計を示すデータは、複数の手法で設計を示す。まず、シミュレーションに有用なように、ハードウエアは、ハードウエア記述言語あるいは他の機能的な記述言語を用いて表される。さらに、論理および/または複数のトランジスタゲートを有する回路レベルのモデルは、設計工程のある複数のステージにおいて製造される。さらに、ほとんどの設計は、あるステージにおいて、ハードウエアモデル内の様々な複数のデバイスの物理的な配置を表すデータ表現のレベルに到達する。従来の半導体製造技術が用いられる場合において、ハードウエアモデルを表現するデータは、集積回路を製造するのに用いられる異なる複数のマスク層上の様々な複数の特徴の存在あるいは欠落を特定するデータである。設計のいかなる表現においても、データは、いかなる形式の機械可読媒体に格納される。光学または電波は、そのような情報を伝達すべく変調または他の方法で生成され、ディスクのようなメモリ、あるいは磁気若しくは光学記録媒体は、機械可読媒体である。これらの複数の媒体のいずれも設計またはソフトウエア情報を"運び"、または、"指示する"。電気的な搬送波がコードあるいは設計を指示または運ぶ場合には、あるいは設計が伝送される場合には、コピーの範囲内において、バッファリング、あるいは再び電気的な信号の伝送が実施され、新たなコピーが作られる。それゆえに、通信プロバイダあるいはネットワークプロバイダは、本発明の実施形態の特徴である、アーティクル(搬送波)の複数のコピーを作る。
【0063】
要約すると、シリアルポイントツーポイントリンクのエラスティックバッファを制御する様々な方法および装置の複数の実施形態が開示された。上述の明細書において、本発明は、その中の特定の典型的な複数の実施形態を参照することで記述された。しかしながら、添付した特許請求の範囲に示した本発明の広い精神および範囲から逸脱しない範囲で様々な改変および変更がそこになされることが明らかである。例えば、システムの実施形態は、デスクトップ、サーバ、あるいはノートパソコンのようなプリント配線基板上の2つのデバイス間のチップとチップとの間の接続としてのシリアルポイントツーポイントリンクを用いて開示されたが、バッファ管理技術は、また、例えば、キーボード、モニタ、外部の大容量記憶装置、またはカメラのような周辺機器とコンピュータとを接続する外部バスの一部である複数のシリアルポイントツーポイントリンクで用いられる。ポイントツーポイントリンクは、複数のコンピュータシステムだけではなく、例えば、複数の携帯電話ユニット、複数の電気通信スイッチ、および複数のデータネットワークルータのような、複数の専用通信装置に用いられる。それゆえ、明細書および複数の図面は、限定的な意味というよりは具体的な例として評価される。
【技術分野】
【0001】
本発明の実施形態は、広く、電子装置の複数の構成要素を情報伝達すべく接続するのに適したシリアル、ポイントツーポイント相互接続技術に関し、特に、PCI Express Base Specification 1.0a(2003年10月7日に訂正された)("PCI Express")に従っている、所定の特徴を有するそれらに関する。また、他の複数の実施形態も記述する。
【背景技術】
【0002】
電子装置は、いくつかの構成要素を備え、システムの入力/出力(I/O)相互接続を介して互いに通信するように設計されている。例えば、モデムコンピュータシステムは、以下の複数の構成要素を含む。すなわち、プロセッサ、主メモリ、およびシステムインターフェース(また、システムチップセットとも言及される)。構成要素は1つ以上の集積回路(IC)デバイスを有する。例えば、システムチップセットは、メモリコントローラハブ(MCH)デバイスを含み、システムメモリとグラフィックス部品との通信をプロセッサにさせることを可能とする。さらに、I/Oコントローラハブ(ICH)デバイスが、MCHを介して、複数の大容量記憶デバイスおよび複数の周辺機器デバイスのような、コンピュータシステムの他の複数の構成要素と、プロセッサおよびメモリとの接続を提供する。係る場合には、PCI Expressによって規定されたような、セパレート、ポイントツーポイントリンクが、例えば、プロセッサとMCH、MCHとグラフィック構成要素、およびICHと大容量記憶装置デバイスの間のような、複数のデバイスのペア間の2方向通信を可能とすべく用いられる。
【0003】
PCI Expressポイントツーポイントリンクは、同時に動作する1つ以上のレーンを有する。各レーンは、これも同時に動作する、二重の、一方向の複数のパスを有する。各パスは、複数の送受信ペアの単一のセットを有する(例えば、デバイスAのポートに送信機、デバイスBのポートに受信機のように)。係る場合には、送受信は、例えば、基板から基板へのコネクタを横断するプリント配線基板の複数の金属配線のペアのような送信媒体を、駆動、およびセンスする。他の例としては、他の送信媒体は、例えば光ファイバとして提供される。
【0004】
ポイントツーポイントリンクは、複数のデバイス間の様々な種類の情報の伝送する役割を果たす。しかしながら、いわゆる"上位層"において、2つのデバイス(また、リクエスタおよびコンプリータとして言及される)のピア間の情報伝達は、複数のトランザクションを用いて実施される。例えば、データをメモリマップロケーションへ、またはメモリマップロケーションから転送する複数のメモリトランザクションが存在する。PCI Express下において、また、多岐に渡る複数のメッセージを伝送し、割り込み信号、エラー信号、および電力管理のような複数の機能として使用される、複数のメッセージトランザクションが存在する。
【0005】
トランザクションを"ビルド"する、3つの抽象的な層がある。第1の層はトランザクション層であり、トランザクションとしてデバイスコアからデータパケットの中に来る要求または完成データをターニングするプロセスを開始する。第2のアーキテクチャのビルド層は、データリンク層と呼ばれる。データリンク層は、リンクのいたる所、あちらこちらに行く、複数のパケットが適切に受信されることを保証する(エラー制御コーディングなどの複数の技術を介して)。第3の層は、物理層と呼ばれる。当該層は、リンクのいたるところでのパケットの実際の伝送および受信に責任がある。与えられたデバイス中の物理層は、1つのサイドで(同一のデバイス内の)データリンク層と情報をやり取りし、もう一方のサイドで、複数の金属配線、光ファイバ、またはリンクの一部である他の伝送媒体と情報をやり取りする。物理層は、複数の送信機および複数の受信機、複数の直並列および並直列変換機、複数の周波数位相制御回路、およびインピーダンスマッチング回路の回路を含む。また、初期化およびメンテナンスに必要な複数の論理関数の回路を含む。階層化アーキテクチャは、例えば、物理層をアップグレードしている間に(例えば、送受信のクロック周波数を増加する)、本質的には同一のトランザクションとデータリンク層の再利用を許可することにより、簡単な複数のアップグレードを可能とする。
【0006】
物理層の振る舞いの例を述べる。一度電源が入ると、デバイスAおよびデバイスB上の双方の物理層は、リンクの初期化に関与して、トランザクションの準備を整える。当該初期化プロセスは、リンクにいくつのレーンが用いられるかを決定する段階、およびどのデータ速度でリンクを動作させるかを決定する段階を含む。リンクが適切に初期化された後に、メモリ読み込み要求がデバイスA内で初期化される。最終的には、複数のヘッダー、エラー制御情報、および、より高次の複数の層によって付加された複数のシーケンス番号を含み、当該メモリ読み込み要求が含まれるパケットが、デバイスAの物理層に到着する。続いて、物理層はデータの当該パケットを取得して、シリアルデータストリーム(おそらくフレームデータを付加した後に)に変化させ、例えば、予め定められたタイミングルールを有する電気的な、差分信号を用いて、ストリームを送信する。
【0007】
一度、デバイスB中の物理層が、その受信機の入力に信号が出現したことを発見したときには、データストリームを回復すべく信号をサンプリングして、ストリームをデータパケットに組み込んで返す(例えば、フレームを取り除いた後に)。続いて、パケットは、デバイスB中のデータリンク層へ渡され、複数のヘッダーが除かれ、複数のエラーがチェックされる。エラーがない場合には、パケットはトランザクション層へ渡され、メモリ読み込み要求が展開され、続いて、要求中で特定される複数の場所にアクセスすべく、適切なロジック機能へ送信される。
【図面の簡単な説明】
【0008】
本発明の複数の実施形態は、実施例として図示され、添付した複数の図面の複数の図に限定されることはなく、同様の複数の参照番号は同様の複数の構成要素を示す。本願における本発明の"一"実施形態という参照は、必ずしも同一の実施形態ではなく、少なくとも1つのという意味に言及されるべきである。
【0009】
【図1】シリアルポイントツーポイントリンクによってお互いに接続されている集積回路デバイスのペアを示す。
【0010】
【図2】集積回路デバイス内のシリアルポイントツーポイントリンクの実行に用いられるリンクインターフェース回路の一部のブロック図を示す。
【0011】
【図3A】ポイントツーポイントリンクの物理層中で、バッファ制御を実行するために用いられる回路のブロック図を示す。
【図3B】ポイントツーポイントリンクの物理層中で、バッファ制御を実行するために用いられる回路のブロック図を示す。
【0012】
【図4】図3のバッファ制御回路内で、どのように非データ符号検出フラグが配列されるかのタイミング図を示す。
【0013】
【図5】ポインタ比較操作の例を示すタイミング図の例である。
【0014】
【図6】オーバーフローを避けるバッファ制御のタイミング図の例である。
【0015】
【図7A】アンダーフローを避けるバッファ制御のタイミング図の例である。
【0016】
【図7B】バッファの起動状態の例を示すタイミング図である。
【図7C】バッファの起動状態の例を示すタイミング図である。
【0017】
【図8】複数のPCI Express仮想チャンネル(VC)を介してお互いに情報伝達可能に接続された、マルチメディアデスクトップコンピュータの様々な構成要素を特定する。
【0018】
【図9】企業ネットワークのブロック図を示す。
【発明の開示】
【0019】
本発明の一実施形態は、非データ符号処理を手段として、ポイントツーポイントリンクのためのバッファ制御が管理される。図1は、シリアルポイントツーポイントリンクによってお互いに接続されている集積回路デバイスのペアを示す。ICデバイス104(デバイスA)および108(デバイスB)は、プロセッサ112および主メモリ114を含むコンピュータシステムの一部であってよい。本実施例においては、シリアルポイントツーポイントリンク120は、デバイスBのコアとデバイスAのコアとを通信可能に接続すべく用いられる。リンク120は、二重の、一方向性の複数のパス122、デバイスAおよびBの各々のデバイスコアとのインターフェースとしての役割を果たすリンクインターフェース124を有する。
【0020】
当該実施形態によれば、デバイスBは、コンピュータシステムのルートコンプレックスとして言及され、例えば、デバイスAのグラフィックス構成要素へアクセスするI/Oを有したプロセッサ112を提供する。ルートコンプレックスは、グラフィックスおよびメモリコントローラハブ(GMCH)並びにI/Oコントローラハブ(ICH)に分けられる。ICHは、システムのGMCHおよび他の複数のI/Oデバイス間のさらなるインターフェースとして機能して、不揮発性大容量記憶装置、トラックパッドやマウスのようなポインティングデバイス、およびネットワークインターフェースコントローラ(図示しない)を含む。ポイントツーポイントリンク120は、デバイスBをプロセッサ112および主メモリ114と通信可能に接続することを繰り返す。また、ポイントツーポイントリンク120を特徴付ける他の複数のプラットフォームアーキテクチャも可能である。
【0021】
図1のインターフェース124は、シリアルポイントツーポイントリンクのために(背景技術において述べた)多重層アーキテクチャを実施すべく示される。インターフェース124のいくつかの詳細が図2に示される。インターフェース124は、伝送媒体122と個々のデバイス104、108のデータリンク層との間の複数のパスの独立した伝送および受信をサポートする。伝送パスにおいて、複数のデータパケットの形での情報が、データリンク層から到着して、複数の符号に分割され、エンコードブロック208においてエンコードされる。ブロック208によってエンコードする目的は、分離したクロック信号が、伝送媒体122中に伝送されることを必要としないために、クロック信号を埋め込むことであるこのエンコードは、8ビットの量が10ビットの量に変換される周知の8B−10Bである。他の複数のエンコードが可能である。ある場合においては、分離したストローブまたはクロック信号が媒体122を伝送する場合のように、そのようなエンコードが不要な場合もある。
【0022】
ブロック208において続いてエンコードされ、データの複数のユニット(個々では複数の符号として言及される)が、アナログフロントエンド(AFE)トランスミットブロック214のパラレルからシリアルのブロック212によって処理され、複数のビットのストリームを生成する。個々で用いられる"ビット"は、例えば、2進法のビット、3進法のビット等のような2つの異なる状態よりも多くを意味することに留意する。"ビット"という用語は、単に本願では便宜上用いるだけで、2進法のビットに限定されることは意図しない。ビットストリームは、続いて、伝送媒体122にドライブされる。背景技術において説明したように、当該伝送媒体は、プリント配線基板に形成された金属の配線のペアであってよい。伝送媒体122の他の複数の形態、例えば、光ファイバのような形態が、代わりに用いられてよい。
【0023】
ブロック208から214の連続は、ポイントツーポイントリンク120のシングルレーンとして動作する(図1)。一般的に、データリンク層から受信したパケットが、伝送のために複数のレーンを横切って"ストライプト"されるべくポイントツーポイントリンク120には1つ以上のレーンがある。
【0024】
次に、図2に示すインターフェース124の受信側を検討すると、各レーンは、例えば、伝送媒体122中の信号のサンプリングによって、伝送媒体122から情報のストリームを受信するものとして動作する、その関連するAFE受信ブロック224を有する。AFE受信ブロック224は、伝送媒体122の複数の信号伝達と、ICデバイス104(例えば、オンチップ、相補型金属酸化物半導体、CMOS、論理信号伝達)の信号伝達との間で変換する。以下で説明するように、情報のストリームは、Mビットの複数の符号のシーケンスを示し(Mは1より大きい整数)、シリアルポイントツーポイントリンク120を超えてデバイスBによって伝送される(図1参照。)。
【0025】
AFE受信ブロック224によって提供される複数のビットのストリームは、受信された複数の符号を整列またはロックする符号アライメントロジック228に供給される。すなわち、以下で述べるように、符号アライメントロジック228は、デバイス104中の物理層のその後の複数のセクションによって用いるべく、受け取ったビットストリーム中の正確な符号の正確な境界を定める。
【0026】
続いて、符号アラインドビットストリームは、エンコードブロック208(例えば、各々8バイナリビットからなる情報の複数の符号を生成する10B−8Bデコード)によって実行されるエンコードを元に戻すデコードブロック232に供給される。
【0027】
デコードされた複数の符号は、続いて、エラスティックバッファ、EB234に供給される。EB234は、複数の符号がデバイスB中を伝送する速度、デバイスAのローカルクロック信号(local_clk)の速度の許容範囲のいかなる違いをも補償すべく作用する。local_clkは、(リンク120が1つ以上のレーンを備える場合において)以下に説明するレーンツーレーンデスキュー回路238へのいくつかのケースで動作する場合と同様に、EB234から複数の符号をアンロードするために用いられる。(もし提供されれば)デコードブロック232は、例えば、EB234の出力地点、または、デスキュー回路238の出力地点のような、より下流に配置されることに留意すべきである。
【0028】
EB234のブロック図の例が、図3Aおよび図3Bに示される。当該実施例においては、EB234は、アライメントロジック228からデコードブロック232(図2参照)を介して、8ビットの符号を受信する入力(図3Aの左側)を有する。以下で説明する本願の他の例は、デコードブロック232をバイパスするので複数の符号が、10ビット幅である、末端ループバックモード(FELB)である。他の例においては、他の複数の符号の幅が可能である。
【0029】
符号は、"データ"符号であり、データリンク層、トランザクション層、または、例えば、デバイスコアのような他のいくつかの高次の層がソースである、いくつかのペイロードを示す。他の例としては、符号は、シリアルポイントツーポイントリンク上を伝送された情報に渡ってある種の制御を達成するために、例えば、物理、データリンク、あるいはトランザクション層のうちの1つによって生成された特別な符号のような、"非データ"符号である。そのような複数の非データ符号のいくつかの実施例が、複数のPCI Expressスペシャル符号として以下に述べられる。
【0030】
PCI Expressは、伝送される複数のパケットに付加される多くの特別の符号を決定する。例えば、複数の特別の符号は、パケットのスタートおよびスタートを示すべく付加される。これは、1つのパケットが開始することおよび終わることを受信デバイスに知らせるべくなされる。異なる特別の複数の符号が、データリンク層中よりもトランザクション層に起因する複数のパケットのために付加される。さらに、2つの通信ポートの扱っているデータの速度の小さな差異の補償のために物理層によって用いられる、"SKP"(スキップ)と呼ばれる特別の符号がある。また、レーンおよび物理層によるリンクの初期化に用いられる、"COM"(コンマ)と呼ばれる特別の符号がある。
【0031】
複数の符号は、ロードポインタロジック308によって提供されるロードポインタ、EbLdPtr、にしたがって、バッファ304(キューと称される、ファーストインファーストアウト構造を有する)の多数の入力に連続的にロードされ、EB234の入力に到達する。アンロードポインタロジック312によってアンロードポインタ、EbUldPtrは、バッファ304から複数の符号を連続的に案ロードする。図3Aに示すように、仮想の点線がバッファ304を通って存在するこれは、受信クロック、grxclkと、ローカルクロック、lgclkとの間のEB234によって実行されるクロッククロスを示す。複数の符号は、grxclkに従ってロードされ、lgclkに従ってアンロードされる。これら2つのクロックドメインは、周波数に関してはできる限りお互いに近い値で設計されるが、各クロックドメインは、いくらかの許容範囲、あるいは、しばしば百万分の一(ppm)単位で特定される、非常に微小な周波数の変動を可能とする。grxclkは、(複数の符号を伝送する)他のICデバイスの伝送クロックに由来しており、当該伝送クロックは、他のデバイスによって伝送された情報のストリーム中に組み込まれるか、または、例えばソースシンクロナスシナリオ中のような分離したクロック若しくはストローブ信号で提供される。PCI Express下において、grxclkは、±300ppmの許容範囲を有する。同一の許容範囲が、デバイスAのローカルクロック、lgclkに割り当てられる。
【0032】
EB234および特にバッファ304のオーバーフローおよびアンダーフローの問題を説明するために、スタートアップにおいて、バッファ304にロード、およびアンロードされた複数のポインタが、バッファの約半分のデプスに分離されると仮定する。grxcleとlgclkの周波数の間の実際の相違によって、これらの複数のポインタは、時間がたつにつれて衝突し得るように、ドリフトしてお互いに離れ始めるか、または、お互いに近傍にドリフトし始めるが、それは、オーバーフローまたはアンダーフローである。EB234の理想的な状態は、ロードおよびアンロードポインタが常に、バッファ304のデプスの半分によって分離されていることである。以下に説明するように、この理想は、a)特別の、または複数の符号の非データシーケンスの検出と、b)ロードポインタがアップデートされたデフォルトの方法で調整することがない、バッファの差し迫ったオーバーフローまたはアンダーフロー状態の関数としてのアンロードポインタの調整または制御によって追及される。
【0033】
EB234のアンロードポインタは、予め定められた、デバイスBによってデータシーケンス中に挿入された(図1参照)複数の符号の特別のあるいは非データシーケンスを用いてオーバーフローおよびアンダーフロー状態を避けるべく(例えば、図3−Bのアンロードポインタロジック312およびポインタ制御ロジック314を用いて)、管理される。簡単に言えば、バッファのアンダーフローを回避するために、アンロードポインタは、非データシーケンスの検出に応じて、非データ符号を含むバッファのエントリでストールされる。これは、アンロードポインタの変化に応じてデータシーケンスのアンロードの間になされる。これは、ロードポインタが、アンロードポインタから離れ、それゆえにアンダーフローを避けることになる。
【0034】
他方では、バッファのオーバーフローを避けるために、アンロードポインタが、(バッファイン現在ロードされている)非データシーケンスの非データ符号が、バッファから複数の符号がアンロードされている間にスキップされるべく、1つのエントリ以上によって変化される。再度、非データシーケンスの検出に応じてこれはなされる。これは、アンロードポインタが、再び衝突することを避けるべくロードポインタから離れる原因となるオーバーフローおよびアンダーフローを避ける能力の実施に関する技術の実施例の詳細については、以下に述べられる。
【0035】
図3Aおよび図3Bに戻ると、EB234のバッファ304は、符号だけではなく(例えば8ビットあるいは10ビットのキャラクターの)、符号がデータ符号か、あるいは非データ符号か(8b10b_eb_kchar_f)、および予め定められた非データシーケンスインジケータか(EbSkpDet)を示す符号用の制御ビットを各エントリ内に格納すべく設計される。kchar_f制御ビットは、デコードブロック232によって生成され、一方、EbSkpDetは、示したEB234ロジックによって生成される。後者のインジケータは、PCI Expressの実施形態の特有の実施例であり、用いられる特別な、非データシーケンスは、SKP Ordered−Setである。他の例としては、他の予め定められた、複数の非データシーケンスが用いられる。EbSkpDet非データシーケンスインジケータは、アンロードポインタの制御のために以下に述べるように、EB234によって用いられる。
【0036】
EB234のアンロードおよびロードポインタを適切に調整するために、SKP Ordered−Set検出フラグが生成され、この場合においては、PCI Express ComのOrdered−Setの受信された非データ符号とともに、バッファ304の入力に配列される。COM符号は、Ordered−Setの1つ以上のSKP符号の前に来る。(図3Aに示した垂直線の右側の)lgclkドメイン中で、正確な複数のアクションがOrdered−Setに関して取られるべく、インジケータはEB234を通って通過する。図4のタイミング図に示したように、Ordered−Setインジケータは、非データ符号COMが非データ符号SKPの後に続くgrxclkの1サイクルでアサートされた信号である。図4において、波形8b10b_eb_data[7:0]は受信された複数の符号を示す(この場合において、Dxxの連続で示されているデータシーケンス中に挿入されたSKP Ordered−Setを含む)。受信された複数の符号およびOrdered−SetインジケータEbSkpDetの双方が、バッファ304のエントリに格納される前にフロップされる。COM符号およびEbSkpDetinのアサーションがgrxclkの同一のサイクルにおいてどのように発生するかは留意すべきである。言い換えれば、検出フラグEbSkpDetは、この場合において8ビットの符号EbDataIn[7:0]とともに、バッファ中にアサートされてロードされる。
【0037】
図3Bを参照すると、比較ロジック316が、非データシーケンスが検出されない場合に、複数のポインタの適切な調整がなされるように、アンロードおよびロードポインタのそれぞれに関して、アンロードおよびロードポインタの位置をサンプリングすることができる。これは、当該実施形態において、複数のポインタのうちの1つが、複数のクロスクロックドメインを必要とし、キュー内の2つのポインタの位置を決定する必要があることを意味する。この実施形態においては、grxclkドメインのロードポインタは、lgclkドメインとクロスオーバする。複数のポインタを示すクレースケールの使用が、単純なバイナリよりも正確で効率的な実現を提供することに留意すべきである。
【0038】
lgclkドメイン中で、半分以上か、あるいは、半分より少ないバッファ304の状態を示すべく生成される、2つのインジケータが存在する。他の方法としては、オーバーフローおよびアンダーフローの状態を避けることをEB234にまだ可能とする、(例えば、予め定められた閾値よりより完全、またはそれほど完全ではない)他の複数の状態が決定される。当該実施例においては、半分以上完全なインジケータはEbMrHlfFullであり、grxclk度目印画lgclkドメインよりも"早い"ことを示す。このインジケータがアサートされた場合、そして、非データシーケンスが受信された場合には、その理想的な半完全な状態にバッファを戻すことを試み、もたらすべく、非データ符号、およびこの場合においてはSKPが、Ordered−Setから取り除かれる。
【0039】
他方では、半完全より少ない(EbLsHlfFull)インジケータは、反対を示す。すなわち、lgclkドメインはgrxclkドメインよりも早い。係る場合においては、SKP Ordered−Setが受信された場合に、SKPが付加され、複数のポインタが理想的で、半完全な状態に戻ることをもたらす。もちろん、これらの複数のインジケータの双方がアサート停止した場合には、バッファは半完全となり、ロードおよびアンロードポインタにいかなるアクションも必要ではない。本発明の一実施形態によれば、このSKPのインスタンスの付加および除去は、ポインタ制御ロジック314(図3B)によって達成され、アンロードポインタEbUldPtr(ロードポインタEbLdPtrとしてではなく)としての役割を果たす。その動作は、図6および図7のタイミング図の例に示しており、以下でさらに述べる。
【0040】
図5は、異なるクロックドメインにあるポインタを考慮して、どのように複数のポインタが比較されるかを示すタイミング図の例である。図5は、grxclkおよびlgclkの波形を示し、当該実施例においてはgrxclkがより早い。ここで、ロードポインタEbLdPtrはlgclkドメインと、1から2サイクルの遅延で、ロードポインタの実際の位置と同期した位置EbLdPtrSyncとの間においてクロスしている。ロードポインタのクロスによる当該時間の遅延を補償すべく、アンロードポインタの値が、また、EbUldPtrAdjを生成すべく、当該実施例においては2の値、現在の値を減少させることにより調整される。続いて、EbldPtrSyncとEbUldPtrAdjとの間で比較がなされ、この場合においては、バッファが、lgclkのサイクル4に示したような半完全よりも多い。この実施例においては、他の複数のデプスがまた働いているが、バッファ304のデプスが、10エントリと仮定されることに留意すべきである。
【0041】
図5のタイミング図を参照すると、lgclkの初めの4サイクルにおいて、同期したロードポインタ、EbLdPtrSyncが、調整されたアンロードポインタEbUldPtrAdjと、この場合において5エントリであるおよそ半分のバッファのデプス分、異なる。それに応じて、EbMrHlfFullおよびEbLsHlfFullの双方がアサート停止される。しかしながら、サイクル3において、同期したロードポインタは、1エントリだけ先んじ(エントリ8からエントリ0)、2つのポインタ間のこの違いが、バッファデプスの半分よりも大きいため、EB234は、半完全よりも多いと判断し、それゆえ、オーバーフローに近づく。当業者は、同様のタイミング図がアンダーフロー状態において描かれることが、この記述に基づいて理解するであろう。
【0042】
ポインタ比較ロジック316(図3)に関して、複数のポインタの位置を決定するアルゴリズムは以下の通りである。調整されたアンロードポインタが、同期化されたロードポインタよりも大きい場合には、調整されたアンロードポインタと同期化されたロードポインタとの間の差は、むしろ、キューの中でフリーなエントリーの数である。一方で、同期化されたロードポインタが、調整されたアンロードポインタよりも大きい場合には、同期化されたロードポインタと調整されたロードポインタとの間の差は、むしろ、キュー内に取られたエントリの数である。もちろん、同期化されたロードポインタが調整されたアンロードポインタと等しい場合には、複数のポインタは衝突し、EB234は、オーバーフローまたはアンダーフローを有する。ポインタの衝突は、例えば、受信した複数の非データシーケンスの欠如、またはgrxclkとlgclkとの間の周波数の差が非常に高く、設計仕様を外れることによる。その場合には、続く符号処理ブロック、あるいはデバイスAの上位層に、複数のポインタが衝突しているので、与えられたリンク(図2参照)の全てのレーンにおける複数のポインタを初期に戻すか、または規定の値に戻す、リカバリ状態の開始の指示が送信される。
【0043】
図6および7に戻ると、複数のタイミング図の例が、どのように非データシーケンスがオーバーフローおよびアンダーフロー状態を避けるべく処理されるかについて示される。上述したことを思い起こすと、SKP Ordered−Setが受信された場合には、バッファ304の入力でフラグが生成され、そして、バッファを通ってOrdered−Setの符号とともに通過する。本願で述べた複数の実施例において、バッファの管理に適用される調整は、バッファの出力、すなわち、lgclkドメイン中で起こる。特に、バッファの状態(例えば、半完全、半完全より多い、あるいは、半完全より少ない)に応じて調整されるのは、アンロードポインタである。図6は、バッファが半完全よりも多い事態での、アンロードポインタの調整または制御の工程を示すタイミング図を表す。当該実施例において、grxclkが、オーバーフロー状態を引き起こし得るlgclkよりもどう早いかに留意すべきである。この場合において、単一のSKPに続くCOMを含むSKP Ordered−Setは、EB234の入力において受信される。サイクル1においてSKP検出フラグ(EbSkpDetin)とともにバッファはロードされ、バッファのエントリ9の中にCOMとともに配列される。
【0044】
lgclkドメイン中で、複数のポインタが、サイクル3まで、5エントリ離れている(EbMrHlfFullあるいはEbLsHlfFullのいずれもがアサートされていない)ことに留意すべきである。その点において、同期化したロードポインタは、エントリ8からエントリ0に移動し、ロードポインタがアンロードポインタよりも1サイクル多く移動したことを示す。サイクル7において、SKP Ordered−Setと関連するSKP検出フラグ(EbSkpDetOut)は、バッファからアンロードされる(エントリ9)。半完全よりも多いバッファで、アンロードポインタEbUldPtrは、追加のエントリだけ前に移動し、エントリ0に移動する代わりに、ポインタはエントリ1に移動する。アンロードポインタの移動を反映する、調整されたアンロードポインタ、EbUldPtrAdjとともに、EbuldPtrAdjとEbLdPtrSyncとの間の差が5エントリに戻り、バッファの状態が、半完全なインジケータよりも多いアサート停止を伴うサイクル9においてアップデートされる。それゆえに、1エントリ以上のアンロードポインタの変化は、この場合SKPという非データ符号が、バッファにロードされ、EbDataOut[7:0]に反映されるように複数の符号がアンロードされる間にスキップされる結果となる。
【0045】
図7Aに戻ると、バッファが半完全よりも少ない場合に、アンダーフローを避けるべくEB234を管理するタイミング図の例が示される。この場合において、grxclkドメインは、lgclkドメインよりも遅く、バッファは、満たされるよりも早く空になる。図の上端において、データシーケンスに挿入された非データシーケンスが存在し、EbDataInに示すようにEB234の入力に到達する。
【0046】
COM符号はSKP検出フラグとともに、grxclkのサイクル1下に示したように、エントリ9に格納される。次に、lgclkドメインを参照すると、バッファはサイクル3まで半分詰まっており、同期化したロードポインタは、調整されたアンロードポインタはインクリメントし続けている間の2サイクルの間、エントリ9に留まる。図5のタイミング図で上記例示したように、これは、grxclkとlgclkとの間の差のミスマッチあるいは許容範囲による。それに応じて、サイクル4において、半分以下のインジケータがアサートされる。サイクル6において、EbLsHlfFullがアサートされている状態で、SKP検出フラグがバッファからアンロードされ、アンロードポインタEbUldPtrが、HldUldPtrのアサーションとともにサイクル7でストールされる。これにより、アンロードポインタは、サイクル7のエントリ0上に残ったままとなる(エントリはSKPを含んでいる)。それゆえに、EbDataOut[7:0]のサイクル7に見られるように、さらなるSKPがシーケンスに挿入される。
【0047】
次に、同期化されたロードポインタと調整されたロードポインタとが、サイクル7からサイクル8への遷移において比較された場合に、複数のポインタが、再び、5エントリ離れて戻り、EB234の複数のポインタがそれらの理想的な状態に戻る。
【0048】
続いて、どのようにロードおよびアンロードポインタが上記複数の実施例において機能するのかの他の記述が提供される。ロードポインタに関しては、このポインタは、EB234がアクティブであるか、または有効である限り、(grxclkに従って)全ての期間で1ずつインクリメントする。しかしながら、アンロードポインタに関しては、(初期化後の)アンロードポインタは、バッファが半分以上詰まっている場合に、EB234が非データシーケンスを現在は処理していない場合に限り、(lgclkに従って)1つインクリメントし、非データシーケンスは、半分以下の状態のバッファでは、最後のサイクルで受信されない。さらに、非データシーケンスが処理されるときに、アンロードポインタは2つずつインクリメントし、バッファは半分以上となる。最後に、アンロードポインタはインクリメントされず、非データシーケンスが最後のサイクルで受信され、バッファが半分以下となったときに停止する。
【0049】
エラスティックバッファを管理する上述した方法および装置の利点は、許容範囲が送受信クロックで可能とされているにもかかわらず、シリアルポイントツーポイントリンクで受信した複数の符号の安定したフローを保つ、比較的強固な技術である点である。初期のトレーニングの間、電源が入った後にリンクが起動する前だけでなく、ICデバイスによる各パケットの受信の間に、工程が実施されることを留意すべきである(工程が、与えられたレーンの通常の操作の間に繰り返されるべく、各パケットが1つ以上の特別の、非データシーケンスのインスタンスを含むことがしばしば仮定される。)。本発明の他の実施形態によれば、デバイスA(図1参照)は、ファーエンドループバックモード(FELB)で動作できる。FELBにおいて、デバイスAで受信した複数の符号のシーケンスは、シーケンスがバッファされた後に(EB234によって、図2参照)、デバイスBの外にループバックされる。それに応じて、FELBにおいて、バッファされたシーケンスの符合コンテンツは、デバイスAの外で監視され、デバイスAのEB234によってどのように(デバイスBによって送信された)オリジナルシーケンスが変形されたかを決定する。
【0050】
(複数のエラスティックバッファポインタのスタートアップ)本発明の他の実施形態は、非同期、EB234で遭遇するクロッククロス遅延、およびバッファ304の必要とされるサイズを減少する複数のヘルプを自動的に調整するスタートアップ機構にある。そのような実施形態においては、EB234のロードおよびアンロードポインタのスタートアップは、2つの異なる基準に基づく。qual_EbActiveという用語は、grxclkドメイン(ロードポインタのドメイン)の上にクロッククロスするlgclkドメイン(アンロードポインタのドメイン)で生成されるとして定義される。この用語は、アサートされたときに、ロードポインタをリリースする。qual_EbActiveという用語は、以下の、1)リンクインターフェース124のリンク初期化ユニット(図示しない)が、このEB234が作動しているレーンを示す(例えば、gi_gp_laneupがlgclkドメインにアサートされる)、2)インターフェース124の受信クロックが有効である(gi_gp_piclkenがlgclkドメインにアサートされる)、3)複数のEB234ポインタが初期化されていない(gi_gp_ebptrrstが、ポインタの衝突によってlgclkドメインにアサートされない)、4)シンボルアライメントロジック228(図2参照)が、シンボルロックを取得する(gp_gi_kalignlck−lgclkドメイン)、5)ロードポインタが初期化される、という複数の状態を含む。この用語は、PCI ExpressL0s entry/exit状態(sync_loadreset_done−lgclkドメイン)がある実施形態に付加される。
【0051】
一度ロードポインタがリリースされると、lgclkドメインにクロックがクロスする。このクロックドメイン中で、連続する複数のクロック中のロードポインタが変化した事実は、アンロードポインタが現在リリースされていることを示す。アンロードポインタは、上記した5つの状態のいずれかがフォールスになるまでインクリメントし続け、その場合には、アンロードポインタは初期化され、そのいくらか後にロードポインタも初期化される(クロッククロス)。
【0052】
実施例としては、アンロードポインタは"000"の値に初期化される。その一方で、ロードポインタは"001"の値に初期化される。この理由は、半分のシナリオのバッファで始まることによるものの、当該実施例においては、(クロッククロスするロードポインタおよびアンロードポインタのキックオフのための)クロッククロスペナルティの2つのクロックが占め、また、Ebactive_unloadの用語を生成するフロップステージが占める。これは、ロードポインタが"001"の値から始まることを意味する。バッファスペースをチェックすべく比較をするために、アンロードポインタがまだ、2つディクリメントされることに留意する。この技術は、常に同一の、EbMrHlfFull状態で開始する。しかしながら、EB234に到達した非データ符号SKPの第1のインスタンスがバッファ304(ここではキュー)を再び半分(HalfFull)にするので、これは重要ではない。
【0053】
図7Bのタイミング図の例において、コアクロックドメインのアクティブインジケータ(qual_EbActive)は、コアクロックドメイン(lgclk)のサイクル1にアサートされる。続いて、アクティブインジケータは、grxclkドメインに送信され、サイクル3にアサートされるsync_EbActive_load信号を生成する。sync_EbActive_load信号のアサーションにより、ロードポインタ(ldptr)は、その初期化の値からリリースされ、移動し始める。その一方で、コアクロックドメインlgclkのアンロードポインタ(unldptr)は、sync_ldptrが移動し始めるまでは移動することが妨げられる。サイクル6によって、アンロードポインタおよび調整されたアンロードポインタが移動し始める前に、同期化したロードポインタが移動し始める。これにより、半分以上の信号(EbMrHlfFull)のアサーションという結果となる。この実施例におけるスタートアップ機構は、常に、始めにMrHlfFullがアサートされる結果となり、到達するSKPの最初のインスタンスが、HlfFull状態にキューをもたらす点に留意すべきである。それに応じて、MrHlfFullのスタートアップの状態は、一時的な状態として言及される。
【0054】
また、EB234のアンロードポインタが、その初期状態を維持した後に動作を開始した場合に、ロードポインタが初期化された(すなわち、キューの第1のエントリ)キューの入力にアンロードポインタが到達するまではキューの出力のデータが有効ではないことに留意すべきである。不正なその後に続く符号処理の複数のステージからの(例えば、図2のデスキュー回路238)、有効でないデータを阻止するために、キューの出力からのSKP検出フラグおよびKキャラクタ(存在する非データ符号)ビットが、EbOutVldで表される有効なインジケータまたはフラグでゲートされる。図7Cのタイミング図の例に示したように、アンロードポインタは移動が妨げられている(EB234は非アクティブとみなされる)一方で、このインジケータは、アサート停止されたままであり、そして、(図7CのENT0で起こる)アンロードポインタがロードポインタの初期化の値に移動するまでアサートされない。以下の複数の決まりは、このEbOutVldフラグの操作を定義するべく用いられる。1)EbOutVldは、EB234がアクティブのときにアサートされ(qual_EbActiveがアサートされる)、そしてアンロードポインタがロードポインタの初期化の状態に移動する、2)EbOutVldは、EB234が非アクティブのときにアサート停止される(qual_EbActiveがアサート停止される)。上記で述べたように、EB234の出力において有効なフラグは、SKP検出フラグ、EbSkpDetOut、および、Kキャラクタ検出フラグ、EbKcharDetOutの双方がキューに格納されている有効でない複数の符号から誤ってアサートされることを防止する。
【0055】
(他のシステムの複数の実施形態)また、上述したリンクインターフェース回路および方法は、マルチメディアにアイソクロナスサポートを提供するシリアル、ポイントツーポイント相互接続技術を介して通信するべく設計された、複数のICデバイスで実施される。アイソクロナスサポートは、データが決定性および時間依存の方法を用いて供給されるQoS(サービスの質)保証の特定のタイプである。プラットフォームベースのアイソクロナスサポートは、与えられた時間間隔での要求されるバンド幅を得るための一定のあるいは専用の複数のシステムリソースへのアクセスのレベルを必要とする応用を可能とする文書化されたシステムデザイン手法を依存する。
【0056】
図8に示すように、レポートに取り組んでいる間のデスクトップ上に、会社のCEOから発せられる従業員用の放送を見ることが例である。データは、インターネットからデスクトップの主メモリへ向かい、アプリケーションがデータを利用して、オーディオストリームを生成してアドインカードを介してユーザのヘッドフォンに送信し、ビデオストリームをグラフィックコントローラを介してディスプレイに送信する。例えば、ディスク読み出し、インターネットからのデータ、ワードプロセッサ、電子メールなど、デスクトップパーソナルコンピュータ(PC)内で同時に複数の操作が発生した場合には、オーディオおよびビデオストリームが本当に以上がないかの保証はない。データは"ベストエフォート"手法でのみ供給される。ユーザは、複数のアプリケーションが同一のリソースで競合したときに、複数のスキップあるいは複数の停止を経験する。PCI Express内での同時発生は、時間依存の複数のアプリケーションが適切なシステムリソースを確実にすることを保証する機構を確立することによって、この問題を解決する。例えば、図8において、ビデオ時間依存データは、例えば、電子メールのような重大ではないデータの費用でスキップすることを防止する適切なバンド幅を保証される。
【0057】
また、上述したリンクインターフェース回路および手法は、組み込まれた複数のアプリケーションから複数のシャーシベースのスイッチングシステムへの通信装置に用いられるシリアルポイントツーポイント技術を介して通信すべく設計された複数のICデバイスで実施される。進歩したスイッチングにおいて、複数の機構が、スイッチ構造を通してピアツーピアで複数のパケットを送信するために提供される。また、これらは、PCI Expressで利用できるサーバークラスハードウエアベースのエラー検出からの利益を売り込む。通信機器内に、制御プレーン処理およびデータプレーン処理の、2つの主要な利用方法がある。制御プレーンは、システムの制御および機器構成を言及する。シリアルリンクは、複数のプロセッサおよび非常に多くのシステム内の複数のカードを設定して制御するインターフェースとして用いられる。シャーシベースの複数のビルディングスイッチは、典型的には、挿入されて使用される様々なカードである。シャーシベースの複数のスイッチは、フィールドアップグレーダビリティを提供する。大部分の複数のスイッチングシステムは、単に初期にシャーシの半分に投入し、要求あるいはユーザ数の増加に応じて、追加の複数のポートあるいはより速いスピードの複数の接続、および複数のカードを加える能力を提供する。シリアルリンク技術が、システムにインストールされた複数のカードの異なるタイプを設定して監視する制御プレーン相互接続として用いられる。PCI Express内の列挙および確立した設定プロトコルは、例えば、それ自身に低いピンカウント、複数のカードおよびサービスを設定する高いバンド幅インターフェースに役に立つ。
【0058】
データプレーンは、データが流れる実際のパスについて言及する。データプレーン中で、進歩したスイッチング拡張機能は、スイッチ機器を通してピアツーピアリンクを通して、複数のPCI Expressデータパケットをカプセル化して送信する、複数の機構を決定する。
【0059】
PCI Expressコアアーキテクチャは、新規の相互接続のニーズを満足させる強固な基盤を提供する。アドバンスドスイッチング(AS)アーキテクチャはこのコアに重なり、トランザクション層でのPCI Expressデータパケットの前に挿入された特定のASヘッダーの使用を通して、効果的で、拡張性のある、拡張可能なスイッチ機器を確立する。複数のASスイッチは、ルーティング情報(パケットをどこに送るのかを示す情報)、トラフィッククラスID(サービス情報の質)、輻輳回避(トラフィックの渋滞の回避)、パケットサイズ、およびプロトコルのカプセル化を提供するヘッダーの複数のコンテンツだけを調査する。ルーティング情報を分離することにより、複数のスイッチの設計は、単純で費用効果がよいこととなる。さらに、パケットへの外部ヘッダーの追加は、スイッチ構造に、存在するいかなる数の複数のプロトコルをカプセル化させることができる。
【0060】
また、上述したリンクインターフェース回路および方法は、(例えば、ギガビットイーサネット(登録商標)の代わりに)複数のネットワーク接続に用いられるシリアルポイントツーポイント相互接続技術を介して通信すべく設計された、複数のICデバイスで実施される。ネットワーク接続は、企業の複数のモバイルおよびデスクトップコンピュータが、複数のファイルを共有し、複数の電子メールを送信し、インターネットをブラウズするためのものであってよい。通信機器と同様に複数のサーバは、そのような複数のネットワーク接続として実行されることが期待される。エンタープライズネットワーク内のそのようなネットワーク接続の例が図9に示される。
【0061】
上述した複数の実施例では、複数の論理回路の組み合わせおよび連続との関連で本発明の複数の実施形態が記述されているが、本発明の他の複数の実施形態が、ソフトウエアを手段として実施され得る。例えば、いくつかの実施形態は、本発明の実施形態に従った処理を実行するコンピュータ(あるいは他の複数の電子デバイス)をプログラムするために用いられる複数の命令が格納されている、機械またはコンピュータ可読媒体を含むコンピュータプログラム製品あるいはソフトウエアとして提供される。他の複数の実施形態によれば、マイクロコード、配線論理、あるいは、プログラムされたコンピュータの複数の構成要素とカスタムハードウエアの複数の構成要素のいかなる組み合わせを含む、特定の複数のハードウエア構成要素によって複数の操作が実行される。
【0062】
さらに、設計が、創造からシミュレーション、製作までの様々な複数のステージに直面する。設計を示すデータは、複数の手法で設計を示す。まず、シミュレーションに有用なように、ハードウエアは、ハードウエア記述言語あるいは他の機能的な記述言語を用いて表される。さらに、論理および/または複数のトランジスタゲートを有する回路レベルのモデルは、設計工程のある複数のステージにおいて製造される。さらに、ほとんどの設計は、あるステージにおいて、ハードウエアモデル内の様々な複数のデバイスの物理的な配置を表すデータ表現のレベルに到達する。従来の半導体製造技術が用いられる場合において、ハードウエアモデルを表現するデータは、集積回路を製造するのに用いられる異なる複数のマスク層上の様々な複数の特徴の存在あるいは欠落を特定するデータである。設計のいかなる表現においても、データは、いかなる形式の機械可読媒体に格納される。光学または電波は、そのような情報を伝達すべく変調または他の方法で生成され、ディスクのようなメモリ、あるいは磁気若しくは光学記録媒体は、機械可読媒体である。これらの複数の媒体のいずれも設計またはソフトウエア情報を"運び"、または、"指示する"。電気的な搬送波がコードあるいは設計を指示または運ぶ場合には、あるいは設計が伝送される場合には、コピーの範囲内において、バッファリング、あるいは再び電気的な信号の伝送が実施され、新たなコピーが作られる。それゆえに、通信プロバイダあるいはネットワークプロバイダは、本発明の実施形態の特徴である、アーティクル(搬送波)の複数のコピーを作る。
【0063】
要約すると、シリアルポイントツーポイントリンクのエラスティックバッファを制御する様々な方法および装置の複数の実施形態が開示された。上述の明細書において、本発明は、その中の特定の典型的な複数の実施形態を参照することで記述された。しかしながら、添付した特許請求の範囲に示した本発明の広い精神および範囲から逸脱しない範囲で様々な改変および変更がそこになされることが明らかである。例えば、システムの実施形態は、デスクトップ、サーバ、あるいはノートパソコンのようなプリント配線基板上の2つのデバイス間のチップとチップとの間の接続としてのシリアルポイントツーポイントリンクを用いて開示されたが、バッファ管理技術は、また、例えば、キーボード、モニタ、外部の大容量記憶装置、またはカメラのような周辺機器とコンピュータとを接続する外部バスの一部である複数のシリアルポイントツーポイントリンクで用いられる。ポイントツーポイントリンクは、複数のコンピュータシステムだけではなく、例えば、複数の携帯電話ユニット、複数の電気通信スイッチ、および複数のデータネットワークルータのような、複数の専用通信装置に用いられる。それゆえ、明細書および複数の図面は、限定的な意味というよりは具体的な例として評価される。
【特許請求の範囲】
【請求項1】
a)第1の集積回路(IC)デバイスの複数の符号を受信する段階であって、前記複数の符号が、第2のICデバイスによって伝送され、シリアルポイントツーポイントを越えて受信され、前記複数の符号は、前記第2のICデバイスによって、データシーケンスに予め定められた方法に従って挿入された非データシーケンスを含む段階と、
b)ロードポインタに従ってバッファ中に前記複数の符号をロードする段階と、
c)前記バッファの異なる複数のエントリを示すアンロードポインタの変化に従って、前記データシーケンスおよび前記バッファからの前記非データシーケンスのいくつかをアンロードする段階であって、前記アンロードポインタは、符号がアンロードされる時間ごとに1エントリずつ変化する段階と、
d)(i)前記バッファの入力で前記非データシーケンスを検出する段階、および(ii)前記バッファを通したそのような検出を言及するインジケータを通過させる段階と、前記バッファにロードされた、前記非データシーケンスの非データ符号がc)でアンロードしている間にスキップされるべく、前記アンロードポインタを1つのエントリ以上変化させる段階
に応じて前記バッファのオーバーフローを妨げる段階
を備える方法。
【請求項2】
前記非データシーケンスが、前記非データシーケンスの非データ符号とは異なる第2の非データ符号に続く第1の非データ符号を検出することによって検出される
請求項1に記載の方法。
【請求項3】
前記インジケータの前記通過させる段階が、
前記非データシーケンスの前記第1および第2の非データ符号の検出に応じてフラグを生成する段階、および、前記フラグを前記非データシーケンスとともにb)における前記バッファにロードした場合に、前記第1の非データ符号と前記フラグとを配列する段階
を含む請求項2に記載の方法。
【請求項4】
前記第2の非データ符号が、前記バッファにロードされる際にスキップされるべく、前記バッファの出力での前記フラグの検出に応じて前記アンロードポインタがd)において変化する
請求項3に記載の方法。
【請求項5】
前記非データシーケンスが、非データ符合SKPの後に続く非データ符号COMを含むPCI Expressシーケンスである
請求項1に記載の方法。
【請求項6】
a)第1の集積回路(IC)デバイス中で複数の符号を受信する段階であって、前記符号が、第2のICデバイスによって伝送され、前記第1および第2のICデバイスを接続するシリアルポイントツーポイントリンクの上で受信され、前記複数の符号は、前記第2のICデバイスによってデータシーケンス中に挿入された非データシーケンスを含む段階と、
b)ロードポインタに従ってバッファ中に前記複数の符号をロードする段階と、
c)変化したアンロードポインタに従って前記バッファから前記データシーケンスおよび前記非データシーケンスのいくつかをアンロードする段階であって、前記アンロードポインタが、符号がアンロードされる各時間ごとに前記バッファの1つのエントリで変化する段階と、
d)(i)前記バッファの入力で前記非データシーケンスを検出する段階、および(ii)前記バッファを通したそのような検出を言及するインジケータを通過させる段階、およびc)におけるアンロードする段階中に非データ符号を含んだ前記バッファのエントリにおいて前記アンロードポインタを停止する段階
に応じて前記バッファのアンダーフローを妨げる段階
を備える方法。
【請求項7】
前記非データシーケンス中の非データ符号とは異なる、第2がその後に続く第1の非データ符号の組み合わせの検出により、前記非データシーケンスが検出される
請求項6に記載の方法。
【請求項8】
前記インジケータを通過させる前記段階が、
前記非データシーケンスの前記第1および第2の非データ符号の検出に応じてフラグを生成する段階、および、前記非データシーケンスをb)における前記バッファにロードした場合に、前記第1の非データ符号と前記フラグとを配列する段階
を含む請求項7に記載の方法。
【請求項9】
前記バッファの出力において前記フラグが検出されることに応じて、前記非データシーケンスの前記第2の非データ符号を含む前記バッファのエントリにおいて前記アンロードポインタが停止される
請求項8に記載の方法。
【請求項10】
前記非データシーケンスが、非データ符合SKPの後に続く非データ符号COMを含むPCI Expressシーケンスである
請求項6に記載の方法。
【請求項11】
シリアルポイントツーポイントリンク上を他のICデバイスが伝送した複数の符号を受信する入力を有する、複数のエントリを有するバッファと、
前記複数の符号を受信する入力、および前記バッファの非データ符号シーケンス識別子の前記入力を供給する出力を有する検出ロジックと、
各々、前記バッファの前記複数のエントリ内に前記複数の符号を連続的にロードする第1のポインタを提供する第1のポインタロジックと、
各々、前記バッファの前記複数のエントリから前記複数の符号を連続的にアンロードする第2のポインタを提供する第2のポインタロジックと、
前記第1および第2のポインタを比較する比較ロジックと、
前記第2のポインタロジックに接続する出力を有するポインタ制御ロジックと
を備え、
前記ポインタ制御ロジックは、a)前記バッファの出力に現れた前記識別子、およびb)前記バッファが、予め定められた閾値よりも少なく満たされていることを示す前記比較ロジック
に応じて、前記第2のポインタを非データ符号を含むエントリにおいて停止させる
集積回路(IC)デバイス。
【請求項12】
前記複数の符号が、前記他のICデバイスの伝送クロックに由来する第1のクロック信号に応じて受信される
請求項11に記載のICデバイス。
【請求項13】
前記第1のクロック信号が、前記複数の符号を含む情報のストリームに埋め込まれた前記伝送クロックに由来し、前記他のICデバイスによって伝送される
請求項12に記載のICデバイス。
【請求項14】
前記第2のポインタロジックは、前記ICデバイスのローカルクロックに由来する第2のクロック信号に応じて前記第2のポインタを前進させ、
前記第1のポインタロジックは、前記第1のクロック信号に応じて前記第1のポインタを前進させる
請求項12に記載のICデバイス。
【請求項15】
プロセッサと、
主メモリと、
前記プロセッサおよび前記主メモリに通信すべく接続され、前記プロセッサにI/Oアクセスを提供し、シリアル、ポイントツーポイントリンクをサポートするリンクインターフェース回路を有する集積回路(IC)デバイスと
を備え、
前記回路は、
前記リンクの上を伝送した複数の符号を受信する入力を有し、複数のエントリを有するバッファと、
前記複数の符号を受信する入力、および前記バッファの非データ符号シーケンス識別子の前記入力を供給する出力を有する検出ロジックと、
各々、前記バッファの前記複数のエントリ内に前記複数の符号をロードする第1のポインタを提供する第1のポインタロジックと、
各々、前記バッファの前記複数のエントリから前記複数の符号を連続的にアンロードする第2のポインタを提供する第2のポインタロジックと、
前記第1および第2のポインタを比較する比較ロジックと、
前記第2のポインタロジックに接続する出力を有するポインタ制御ロジックと
を備え、
前記ポインタ制御ロジックは、a)前記バッファの出力に現れた前記識別子、およびb)前記バッファが、予め定められた閾値よりも少なく満たされていることを示す前記比較ロジック
に応じて、前記第2のポインタを非データ符号を含むエントリにおいて停止させる
システム。
【請求項16】
前記複数の符号が、他のデバイスの伝送クロックからの前記ICデバイスに由来する第1のクロック信号に応じて受信される
請求項15に記載のシステム。
【請求項17】
前記第1のクロック信号が、前記複数の符号を含む情報のストリームに埋め込まれた前記伝送クロックに由来し、前記他のデバイスによって伝送される
請求項16に記載のシステム。
【請求項18】
前記第2のポインタロジックは、ルートコンプレックスのローカルクロックに由来する第2のクロック信号に応じて前記第2のポインタを前進させ、
前記第1のポインタロジックは、前記第1のクロック信号に応じて前記第1のポインタを前進させる
請求項16に記載のシステム。
【請求項19】
グラフィックス構成要素
をさらに備え、
前記ICデバイスが、前記プロセッサと、前記主メモリおよび前記グラフィックス構成要素とを通信すべく接続する、メモリコントローラハブ(MCH)である
請求項15に記載のシステム。
【請求項20】
前記ICデバイスが、前記プロセッサと複数の周辺機器デバイスとを通信すべく接続するI/Oコントローラハブ(ICH)である
請求項15に記載のシステム。
【請求項21】
予め定められた非データ符号シーケンスをエラスティックバッファの入力で検出する段階と、
前記エラスティックバッファを通った前記シーケンスの検出を示す識別子を通過する段階と、
前記エラスティックバッファ中でオーバーフローおよびアンダーフローの状態の1つを避けるべく前記エラスティックバッファの出力において前記識別子を処理する段階と
を備えるバッファ管理の方法。
【請求項22】
前記シーケンスが、PCI Express SKP Ordered Setである
請求項21に記載の方法。
【請求項23】
前記処理をする段階が、前記エラスティックバッファを半分詰まった状態に保つべく設計される
請求項21に記載の方法。
【請求項24】
シリアルポイントツーポイントリンク上を他のICデバイスが伝送した複数の符号を受信する入力を有する、複数のエントリを有するバッファと、
前記複数の符号を受信する入力、および前記バッファの非データ符号シーケンス識別子の前記入力を供給する出力を有する検出ロジックと、
各々、前記バッファの前記複数のエントリ内に前記複数の符号を連続的にロードする第1のポインタを提供する第1のポインタロジックと、
各々、前記バッファの前記複数のエントリから前記複数の符号を連続的にアンロードする第2のポインタを提供する第2のポインタロジックと、
前記第1および第2のポインタを比較する比較ロジックと、
前記第2のポインタロジックに接続する出力を有するポインタ制御ロジックと
を備え、
前記ポインタ制御ロジックは、a)前記バッファの出力に現れた前記識別子、およびb)前記バッファが、予め定められた閾値よりも多く満たされていることを示す前記比較ロジック
に応じて、前記第2のポインタを、非データ符号を含むエントリをスキップすべく1つのエントリ以上進める
集積回路(IC)デバイス。
【請求項25】
前記複数の符号が、前記他のICデバイスの伝送クロックに由来する第1のクロック信号に応じて受信される
請求項24に記載のICデバイス。
【請求項26】
前記第1のクロック信号が、前記複数の符号を含む情報のストリームに埋め込まれた前記伝送クロックに由来し、前記他のICデバイスによって伝送される
請求項25に記載のICデバイス。
【請求項27】
前記第2のポインタロジックは、前記ICデバイスのローカルクロックに由来する第2のクロック信号に応じて前記第2のポインタを前進させ、
前記第1のポインタロジックは、前記第1のクロック信号に応じて前記第1のポインタを前進させる
請求項25に記載のICデバイス。
【請求項28】
プロセッサと、
主メモリと、
前記プロセッサおよび前記主メモリに通信すべく接続され、前記プロセッサにI/Oアクセスを提供し、シリアル、ポイントツーポイントリンクをサポートするリンクインターフェース回路を有する集積回路(IC)デバイスと
を備え、
前記回路は、
前記リンクの上を伝送した複数の符号を受信する入力を有し、複数のエントリを有するバッファと、
前記複数の符号を受信する入力、および前記バッファの非データ符号シーケンス識別子の前記入力を供給する出力を有する検出ロジックと、
各々、前記バッファの前記複数のエントリ内に前記複数の符号をロードする第1のポインタを提供する第1のポインタロジックと、
各々、前記バッファの前記複数のエントリから前記複数の符号を連続的にアンロードする第2のポインタを提供する第2のポインタロジックと、
前記第1および第2のポインタを比較する比較ロジックと、
前記第2のポインタロジックに接続する出力を有するポインタ制御ロジックと
を備え、
前記ポインタ制御ロジックは、a)前記バッファの出力に現れた前記識別子、およびb)前記バッファが、予め定められた閾値よりも多く満たされていることを示す前記比較ロジック
に応じて、前記第2のポインタを、非データ符号を含むエントリをスキップすべく1つのエントリ以上進める
集積回路(IC)デバイス。
【請求項29】
前記複数の符号が、他のデバイスの伝送クロックからの前記ICデバイスに由来する第1のクロック信号に応じて受信される
請求項28に記載のシステム。
【請求項30】
前記第1のクロック信号が、前記複数の符号を含む情報のストリームに埋め込まれた前記伝送クロックに由来し、前記他のデバイスによって伝送される
請求項29に記載のシステム。
【請求項31】
前記第2のポインタロジックは、ルートコンプレックスのローカルクロックに由来する第2のクロック信号に応じて前記第2のポインタを前進させ、
前記第1のポインタロジックは、前記第1のクロック信号に応じて前記第1のポインタを前進させる
請求項29に記載のシステム。
【請求項32】
グラフィックス構成要素
をさらに備え、
前記ICデバイスが、前記プロセッサと、前記主メモリおよび前記グラフィックス構成要素とを通信すべく接続する、メモリコントローラハブ(MCH)である
請求項28に記載のシステム。
【請求項33】
前記ICデバイスが、前記プロセッサを情報通信すべく複数の周辺機器に接続するI/Oコントローラハブ(ICH)である
請求項28に記載のシステム。
【請求項1】
a)第1の集積回路(IC)デバイスの複数の符号を受信する段階であって、前記複数の符号が、第2のICデバイスによって伝送され、シリアルポイントツーポイントを越えて受信され、前記複数の符号は、前記第2のICデバイスによって、データシーケンスに予め定められた方法に従って挿入された非データシーケンスを含む段階と、
b)ロードポインタに従ってバッファ中に前記複数の符号をロードする段階と、
c)前記バッファの異なる複数のエントリを示すアンロードポインタの変化に従って、前記データシーケンスおよび前記バッファからの前記非データシーケンスのいくつかをアンロードする段階であって、前記アンロードポインタは、符号がアンロードされる時間ごとに1エントリずつ変化する段階と、
d)(i)前記バッファの入力で前記非データシーケンスを検出する段階、および(ii)前記バッファを通したそのような検出を言及するインジケータを通過させる段階と、前記バッファにロードされた、前記非データシーケンスの非データ符号がc)でアンロードしている間にスキップされるべく、前記アンロードポインタを1つのエントリ以上変化させる段階
に応じて前記バッファのオーバーフローを妨げる段階
を備える方法。
【請求項2】
前記非データシーケンスが、前記非データシーケンスの非データ符号とは異なる第2の非データ符号に続く第1の非データ符号を検出することによって検出される
請求項1に記載の方法。
【請求項3】
前記インジケータの前記通過させる段階が、
前記非データシーケンスの前記第1および第2の非データ符号の検出に応じてフラグを生成する段階、および、前記フラグを前記非データシーケンスとともにb)における前記バッファにロードした場合に、前記第1の非データ符号と前記フラグとを配列する段階
を含む請求項2に記載の方法。
【請求項4】
前記第2の非データ符号が、前記バッファにロードされる際にスキップされるべく、前記バッファの出力での前記フラグの検出に応じて前記アンロードポインタがd)において変化する
請求項3に記載の方法。
【請求項5】
前記非データシーケンスが、非データ符合SKPの後に続く非データ符号COMを含むPCI Expressシーケンスである
請求項1に記載の方法。
【請求項6】
a)第1の集積回路(IC)デバイス中で複数の符号を受信する段階であって、前記符号が、第2のICデバイスによって伝送され、前記第1および第2のICデバイスを接続するシリアルポイントツーポイントリンクの上で受信され、前記複数の符号は、前記第2のICデバイスによってデータシーケンス中に挿入された非データシーケンスを含む段階と、
b)ロードポインタに従ってバッファ中に前記複数の符号をロードする段階と、
c)変化したアンロードポインタに従って前記バッファから前記データシーケンスおよび前記非データシーケンスのいくつかをアンロードする段階であって、前記アンロードポインタが、符号がアンロードされる各時間ごとに前記バッファの1つのエントリで変化する段階と、
d)(i)前記バッファの入力で前記非データシーケンスを検出する段階、および(ii)前記バッファを通したそのような検出を言及するインジケータを通過させる段階、およびc)におけるアンロードする段階中に非データ符号を含んだ前記バッファのエントリにおいて前記アンロードポインタを停止する段階
に応じて前記バッファのアンダーフローを妨げる段階
を備える方法。
【請求項7】
前記非データシーケンス中の非データ符号とは異なる、第2がその後に続く第1の非データ符号の組み合わせの検出により、前記非データシーケンスが検出される
請求項6に記載の方法。
【請求項8】
前記インジケータを通過させる前記段階が、
前記非データシーケンスの前記第1および第2の非データ符号の検出に応じてフラグを生成する段階、および、前記非データシーケンスをb)における前記バッファにロードした場合に、前記第1の非データ符号と前記フラグとを配列する段階
を含む請求項7に記載の方法。
【請求項9】
前記バッファの出力において前記フラグが検出されることに応じて、前記非データシーケンスの前記第2の非データ符号を含む前記バッファのエントリにおいて前記アンロードポインタが停止される
請求項8に記載の方法。
【請求項10】
前記非データシーケンスが、非データ符合SKPの後に続く非データ符号COMを含むPCI Expressシーケンスである
請求項6に記載の方法。
【請求項11】
シリアルポイントツーポイントリンク上を他のICデバイスが伝送した複数の符号を受信する入力を有する、複数のエントリを有するバッファと、
前記複数の符号を受信する入力、および前記バッファの非データ符号シーケンス識別子の前記入力を供給する出力を有する検出ロジックと、
各々、前記バッファの前記複数のエントリ内に前記複数の符号を連続的にロードする第1のポインタを提供する第1のポインタロジックと、
各々、前記バッファの前記複数のエントリから前記複数の符号を連続的にアンロードする第2のポインタを提供する第2のポインタロジックと、
前記第1および第2のポインタを比較する比較ロジックと、
前記第2のポインタロジックに接続する出力を有するポインタ制御ロジックと
を備え、
前記ポインタ制御ロジックは、a)前記バッファの出力に現れた前記識別子、およびb)前記バッファが、予め定められた閾値よりも少なく満たされていることを示す前記比較ロジック
に応じて、前記第2のポインタを非データ符号を含むエントリにおいて停止させる
集積回路(IC)デバイス。
【請求項12】
前記複数の符号が、前記他のICデバイスの伝送クロックに由来する第1のクロック信号に応じて受信される
請求項11に記載のICデバイス。
【請求項13】
前記第1のクロック信号が、前記複数の符号を含む情報のストリームに埋め込まれた前記伝送クロックに由来し、前記他のICデバイスによって伝送される
請求項12に記載のICデバイス。
【請求項14】
前記第2のポインタロジックは、前記ICデバイスのローカルクロックに由来する第2のクロック信号に応じて前記第2のポインタを前進させ、
前記第1のポインタロジックは、前記第1のクロック信号に応じて前記第1のポインタを前進させる
請求項12に記載のICデバイス。
【請求項15】
プロセッサと、
主メモリと、
前記プロセッサおよび前記主メモリに通信すべく接続され、前記プロセッサにI/Oアクセスを提供し、シリアル、ポイントツーポイントリンクをサポートするリンクインターフェース回路を有する集積回路(IC)デバイスと
を備え、
前記回路は、
前記リンクの上を伝送した複数の符号を受信する入力を有し、複数のエントリを有するバッファと、
前記複数の符号を受信する入力、および前記バッファの非データ符号シーケンス識別子の前記入力を供給する出力を有する検出ロジックと、
各々、前記バッファの前記複数のエントリ内に前記複数の符号をロードする第1のポインタを提供する第1のポインタロジックと、
各々、前記バッファの前記複数のエントリから前記複数の符号を連続的にアンロードする第2のポインタを提供する第2のポインタロジックと、
前記第1および第2のポインタを比較する比較ロジックと、
前記第2のポインタロジックに接続する出力を有するポインタ制御ロジックと
を備え、
前記ポインタ制御ロジックは、a)前記バッファの出力に現れた前記識別子、およびb)前記バッファが、予め定められた閾値よりも少なく満たされていることを示す前記比較ロジック
に応じて、前記第2のポインタを非データ符号を含むエントリにおいて停止させる
システム。
【請求項16】
前記複数の符号が、他のデバイスの伝送クロックからの前記ICデバイスに由来する第1のクロック信号に応じて受信される
請求項15に記載のシステム。
【請求項17】
前記第1のクロック信号が、前記複数の符号を含む情報のストリームに埋め込まれた前記伝送クロックに由来し、前記他のデバイスによって伝送される
請求項16に記載のシステム。
【請求項18】
前記第2のポインタロジックは、ルートコンプレックスのローカルクロックに由来する第2のクロック信号に応じて前記第2のポインタを前進させ、
前記第1のポインタロジックは、前記第1のクロック信号に応じて前記第1のポインタを前進させる
請求項16に記載のシステム。
【請求項19】
グラフィックス構成要素
をさらに備え、
前記ICデバイスが、前記プロセッサと、前記主メモリおよび前記グラフィックス構成要素とを通信すべく接続する、メモリコントローラハブ(MCH)である
請求項15に記載のシステム。
【請求項20】
前記ICデバイスが、前記プロセッサと複数の周辺機器デバイスとを通信すべく接続するI/Oコントローラハブ(ICH)である
請求項15に記載のシステム。
【請求項21】
予め定められた非データ符号シーケンスをエラスティックバッファの入力で検出する段階と、
前記エラスティックバッファを通った前記シーケンスの検出を示す識別子を通過する段階と、
前記エラスティックバッファ中でオーバーフローおよびアンダーフローの状態の1つを避けるべく前記エラスティックバッファの出力において前記識別子を処理する段階と
を備えるバッファ管理の方法。
【請求項22】
前記シーケンスが、PCI Express SKP Ordered Setである
請求項21に記載の方法。
【請求項23】
前記処理をする段階が、前記エラスティックバッファを半分詰まった状態に保つべく設計される
請求項21に記載の方法。
【請求項24】
シリアルポイントツーポイントリンク上を他のICデバイスが伝送した複数の符号を受信する入力を有する、複数のエントリを有するバッファと、
前記複数の符号を受信する入力、および前記バッファの非データ符号シーケンス識別子の前記入力を供給する出力を有する検出ロジックと、
各々、前記バッファの前記複数のエントリ内に前記複数の符号を連続的にロードする第1のポインタを提供する第1のポインタロジックと、
各々、前記バッファの前記複数のエントリから前記複数の符号を連続的にアンロードする第2のポインタを提供する第2のポインタロジックと、
前記第1および第2のポインタを比較する比較ロジックと、
前記第2のポインタロジックに接続する出力を有するポインタ制御ロジックと
を備え、
前記ポインタ制御ロジックは、a)前記バッファの出力に現れた前記識別子、およびb)前記バッファが、予め定められた閾値よりも多く満たされていることを示す前記比較ロジック
に応じて、前記第2のポインタを、非データ符号を含むエントリをスキップすべく1つのエントリ以上進める
集積回路(IC)デバイス。
【請求項25】
前記複数の符号が、前記他のICデバイスの伝送クロックに由来する第1のクロック信号に応じて受信される
請求項24に記載のICデバイス。
【請求項26】
前記第1のクロック信号が、前記複数の符号を含む情報のストリームに埋め込まれた前記伝送クロックに由来し、前記他のICデバイスによって伝送される
請求項25に記載のICデバイス。
【請求項27】
前記第2のポインタロジックは、前記ICデバイスのローカルクロックに由来する第2のクロック信号に応じて前記第2のポインタを前進させ、
前記第1のポインタロジックは、前記第1のクロック信号に応じて前記第1のポインタを前進させる
請求項25に記載のICデバイス。
【請求項28】
プロセッサと、
主メモリと、
前記プロセッサおよび前記主メモリに通信すべく接続され、前記プロセッサにI/Oアクセスを提供し、シリアル、ポイントツーポイントリンクをサポートするリンクインターフェース回路を有する集積回路(IC)デバイスと
を備え、
前記回路は、
前記リンクの上を伝送した複数の符号を受信する入力を有し、複数のエントリを有するバッファと、
前記複数の符号を受信する入力、および前記バッファの非データ符号シーケンス識別子の前記入力を供給する出力を有する検出ロジックと、
各々、前記バッファの前記複数のエントリ内に前記複数の符号をロードする第1のポインタを提供する第1のポインタロジックと、
各々、前記バッファの前記複数のエントリから前記複数の符号を連続的にアンロードする第2のポインタを提供する第2のポインタロジックと、
前記第1および第2のポインタを比較する比較ロジックと、
前記第2のポインタロジックに接続する出力を有するポインタ制御ロジックと
を備え、
前記ポインタ制御ロジックは、a)前記バッファの出力に現れた前記識別子、およびb)前記バッファが、予め定められた閾値よりも多く満たされていることを示す前記比較ロジック
に応じて、前記第2のポインタを、非データ符号を含むエントリをスキップすべく1つのエントリ以上進める
集積回路(IC)デバイス。
【請求項29】
前記複数の符号が、他のデバイスの伝送クロックからの前記ICデバイスに由来する第1のクロック信号に応じて受信される
請求項28に記載のシステム。
【請求項30】
前記第1のクロック信号が、前記複数の符号を含む情報のストリームに埋め込まれた前記伝送クロックに由来し、前記他のデバイスによって伝送される
請求項29に記載のシステム。
【請求項31】
前記第2のポインタロジックは、ルートコンプレックスのローカルクロックに由来する第2のクロック信号に応じて前記第2のポインタを前進させ、
前記第1のポインタロジックは、前記第1のクロック信号に応じて前記第1のポインタを前進させる
請求項29に記載のシステム。
【請求項32】
グラフィックス構成要素
をさらに備え、
前記ICデバイスが、前記プロセッサと、前記主メモリおよび前記グラフィックス構成要素とを通信すべく接続する、メモリコントローラハブ(MCH)である
請求項28に記載のシステム。
【請求項33】
前記ICデバイスが、前記プロセッサを情報通信すべく複数の周辺機器に接続するI/Oコントローラハブ(ICH)である
請求項28に記載のシステム。
【図1】
【図2】
【図3A】
【図3B】
【図4】
【図5】
【図6】
【図7A】
【図7B】
【図7C】
【図8】
【図9】
【図2】
【図3A】
【図3B】
【図4】
【図5】
【図6】
【図7A】
【図7B】
【図7C】
【図8】
【図9】
【公表番号】特表2007−517334(P2007−517334A)
【公表日】平成19年6月28日(2007.6.28)
【国際特許分類】
【出願番号】特願2006−547491(P2006−547491)
【出願日】平成16年12月23日(2004.12.23)
【国際出願番号】PCT/US2004/043687
【国際公開番号】WO2005/066827
【国際公開日】平成17年7月21日(2005.7.21)
【出願人】(591003943)インテル・コーポレーション (1,101)
【Fターム(参考)】
【公表日】平成19年6月28日(2007.6.28)
【国際特許分類】
【出願日】平成16年12月23日(2004.12.23)
【国際出願番号】PCT/US2004/043687
【国際公開番号】WO2005/066827
【国際公開日】平成17年7月21日(2005.7.21)
【出願人】(591003943)インテル・コーポレーション (1,101)
【Fターム(参考)】
[ Back to top ]