(57)【要約】【課題】エラー検出機能を改善し且つ低電力状態に関して低オーバーヘッドを保ちながら、物理層が数個の選択ビットを見ることによってパケット境界を識別することを可能にする。【解決手段】物理層に関して８ｂ／１０ｂ符号化のオーバーヘッドを除くことによって、符号化スキームは、現在の８ｂ／１０ｂ符号化よりも優れたエラー検出能力を達成する。更に、この新規の符号化スキームは、付加的なエラー検出機能と、低電力状態から抜け出すための低オーバーヘッドメカニズムと、問題のあるパケットを扱うためのメカニズムとを提供する。【選択図】図２
2010011454.tif 000002
【特許請求の範囲】
【請求項１】
デコーダを有する受信器と、
送信器を前記受信器へ結合するシリアルリンクと
を有し、
前記シリアルリンクを介して前記受信器によって受信されるコードは、
２つの有効な状態のうち一方を有する２ビットプレフィックスと、
所定ビット長のシーケンスと
を有し、
前記コードは、前記受信器が入来データを識別することを可能にする、システム。
【請求項２】
前記受信器は、トレーニングシーケンスとして前記コードを使用し、当該受信器が前記送信器と同期することを可能にする、請求項１記載のシステム。
【請求項３】
前記２ビットプレフィックスは第１の有効状態を有し、
前記第１の有効状態は、前記コードが電気的遊休状態エントリシーケンス又は電気的遊休状態終了シーケンスであり、前記所定ビット長のシーケンスが繰り返しパターンを有することを示す、請求項１記載のシステム。
【請求項４】
前記２ビットプレフィックスは第２の有効状態を有し、
前記第２の有効状態は、前記所定ビット長のシーケンスの第１バイトがペイロードタイプシンボルであることを示す、請求項１記載のシステム。
【請求項５】
前記ペイロードタイプシンボルは、ペイロードが遊休状態ペイロード、トランザクション層パケットペイロード、データリンク層パケットペイロード、又は順序集合ペイロードのいずれかであることを示す、請求項４記載のシステム。
【請求項６】
前記ペイロードタイプシンボルがトランザクション層パケットペイロードを示す場合に、
トランザクション層パケットは、
１又はそれ以上の長さフィールドと、
当該トランザクション層パケットの固定ロケーションを占有し、前記１又はそれ以上の長さフィールドの周期的冗長チェックを有するＣＲＣフィールドと
を有し、
前記受信器は、前記１又はそれ以上長さフィールドにより前記トランザクション層パケットの長さを計算する前に前記ＣＲＣフィールドと前記１又はそれ以上長さフィールドを確認する、請求項５記載のシステム。
【請求項７】
シリアルリンクを介して受信器によって、２ビットプレフィックス及び所定ビット長のシーケンスを有し、前記受信器が前記シリアルリンクへ結合されている送信装置と同期することを可能にするコードを受信する段階と、
前記受信器によってブロックロックを得る段階と、
前記２ビットプレフィックスが第１の所定値を有する場合に、前記所定ビット長のシーケンスの第１バイトを占有するペイロードタイプシンボルを読む段階と
を有し、
前記コードは、前記２ビットプレフィックスが第２の所定値を有する場合に電気的遊休状態エントリ信号又は電気的遊休状態終了信号を有する、符号化方法。
【請求項８】
前記ペイロードタイプシンボルを読む段階は、
前記ペイロードタイプシンボルが遊休状態ペイロードを示す場合に該ペイロードタイプシンボルを取り出す段階と、
前記コードの更なる処理を実行しない段階と
を更に有する、請求項７記載の符号化方法。
【請求項９】
前記ペイロードタイプシンボルを読む段階は、
前記ペイロードタイプシンボルがデータリンク層パケットである場合に該ペイロードタイプシンボルを取り出す段階と、
前記所定ビット長のシーケンスのバイトパリティを計算する段階と、
処理のために６つの後続バイトを進める段階と、
計算された前記バイトパリティを前記所定ビット長のシーケンスの最終バイトと比較する段階と
を更に有し、
前記バイトパリティ及び前記最終バイトが同じでない場合にエラーが記録される、請求項７記載の符号化方法。
【請求項１０】
前記ペイロードタイプシンボルを読む段階は、
前記ペイロードタイプシンボルがトランザクション層パケットを示す場合に該ペイロードタイプシンボルを取り出す段階と、
前記所定ビット長のシーケンスにおいて所定のロケーションにある前記トランザクション層パケットの長さバイトを取り出す段階と、
公式に従って、取り出した前記長さバイトを、前記所定ビット長のシーケンスの第２の所定のロケーションに配置されている複数の周期的冗長チェックビットと比較して、結果を生成する段階と
を更に有し、
前記トランザクション層パケットの長さは、前記結果が零である場合に前記長さバイトから得られる、請求項７記載の符号化方法。
【請求項１１】
前記取り出した長さバイトを公式に従って複数の周期的冗長チェックビットと比較する段階は、所定の公式を用いて前記トランザクション層パケットの長さを計算する段階を更に有する、請求項１０記載の符号化方法。
【請求項１２】
前記受信器に電気的遊休状態を終了させるよう所定数の低周波シンボルを送信する段階と、
前記受信器がビットロックを得ることを可能にするよう第２所定数の高周波シンボルを送信する段階と、
前記受信器がレーン・ツー・レーン・デスキューを実行することを可能にするよう第３所定数のシンボルを送信する段階と
を更に有し、
前記受信器は低電力状態から回復しつつある、請求項７記載の符号化方法。
【請求項１３】
シリアルリンクで８ｂ／１０ｂ符号化を置換するコードであって、
電気的遊休状態終了シーケンス及び電気的遊休状態エントリシーケンスのいずれかを示す第１の値と、遊休状態シーケンス、データリンク層パケット、又はトランザクション層パケットのいずれかを示す第２の値とを有する２ビットプレフィックスと、
前記２ビットプレフィックスの値に基づく一意のビットを有する所定ビット長のシーケンスと
を有し、
前記シリアルリンクの一端へ結合されている受信器が、前記シリアルリンクの他端へ結合されている送信装置と同期することを可能にするコード。
【請求項１４】
前記２ビットプレフィックスが前記第１の値を有し、前記所定ビット長のシーケンスが１及び０の繰り返しシーケンスを有する場合に、
前記２ビットプレフィックス及び前記所定ビット長のシーケンスは、スクランブル化されず、後の処理のためにブロック境界を識別し且つ必要に応じて該ブロック境界を有効とし再識別するために使用される、請求項１３記載のコード。
【請求項１５】
前記所定ビット長のシーケンスは、前記受信器が低電力状態を抜け出ることができるほど低い周波数で送信される、請求項１４記載のコード。
【請求項１６】
前記所定ビット長のシーケンスは、前記受信器に線形フィードバックシフトレジスタをリセットさせる、請求項１４記載のコード。
【請求項１７】
前記２ビットプレフィックスが前記第２の値を有する場合に、
前記所定ビット長のシーケンスの第１バイトはペイロードタイプシンボルを更に有し、
前記受信器は、前記ペイロードタイプシンボルに従って前記所定ビット長のシーケンスを処理する、請求項１３記載のコード。
【請求項１８】
前記ペイロードタイプシンボルが、更に、遊休状態ペイロードを示す場合に、
前記受信器は、更なるアクションを起こさない、請求項１７記載のコード。
【請求項１９】
前記ペイロードタイプシンボルが、更に、データリンク層パケットを示す場合に、
当該コードの残りのバイトは、処理される６つのバイトと、１つのパリティバイトとを有する、請求項１７記載のコード。
【請求項２０】
前記ペイロードタイプシンボルが、更に、トランザクション層パケットを示す場合に、
当該コードの残りのバイトは、２ビットのフォーマット情報と、１０ビットの長さ情報と、１ビットのダイジェスト情報と、複数のＣＲＣバイトとを有し、
前記フォーマット情報、前記長さ情報及び前記ダイジェスト情報は、共に、前記トランザクション層パケットの長さを提供し、
前記ＣＲＣバイトは、前記受信器による前記トランザクション層パケットの処理の前に該トランザクション層パケットの前記長さと比較される、請求項１７記載のコード。
【発明の詳細な説明】
【技術分野】
【０００１】
本願は、シリアルリンクでの符号化に関し、より具体的には、８ｂ／１０ｂ符号化方法に対する改善に関する。
【背景技術】
【０００２】
ＰＣＩ（Peripheral  Component  Interconnect）エクスプレス（ＰＣＩｅ）等の幾つかのシリアル相互接続は、８ｂ／１０ｂ符号化スキームを使用する。このスキームは、通信で１０ビットを用いて、８ビットの意味のあるデータを表す。８ｂ／１０ｂ符号化スキームは、受信側がインバウンド・パケットを捕らえる（clock）ことができるように十分な１から０及び０から１への遷移密度を確保するよう設計される。それは、符号化に起因するバンド幅での２０％のロス、及び送信性能での２５％のロスである。
【０００３】
正及び負の両方のディスパリティ（disparity）に関して２８個の可能なデータパターンを符号化することに加えて、１０ビット符号化は、フレーム境界の決定等の様々な目的のために使用される幾つかの制御キャラクタ（Ｋコードとしても知られる。）をカバーする。これらは、パケット切り出し（packet  delineating）Ｋコード及びレーンストリームＫコードとして幅広く分類され得る。パケット切り出しＫコードはパケットの開始又は終了を表す（例えば、ＳＴＰ、ＳＤＰ、ＥＮＤ、ＥＤＢ）。他方で、レーンストリームＫコードは、レーンごとに独立して使用され、また、リンクトレーニング（link  training）（トレーニングセットＴＳ１／ＴＳ２）の間に使用される順序集合、電気的遊休状態エントリ／終了シーケンス（夫々、ＥＩＯＳ及びＥＩＥＳ）、又は個別クロックモード（distinct  clock  mode）で１００万分の１（ｐｐｍ）の差異を許容するために使用される周期スキップキャラクタ（ＳＫＰ）順序集合について使用される。レーンストリームＫコードの１つ（ＣＯＭ）は、バイト配列を一意に識別するために使用され、また、ビットスリップ又はアッド等のエラーから回復するために使用される。ビットスリップ／アッド等のエラーによるバイト配列のロスを含む複数のビットエラーからの最終的な回復を保証することに加えて、８ｂ／１０ｂは、（ＣＲＣとともに）如何なる単一ビットフリップエラーに対しても保証された検出を可能にする。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
シリアルリンクに基づく実施が偏在化し、これらの実施の周波数が高まり続けるにつれて、効率的な符号化は、ロー（raw）バンド幅の大部分を取り出すことにとって欠かせないものとなる。
【０００５】
８ｂ／１０ｂ符号化を置換することは危険がないわけではない。新しいスキームの信頼性の課題は解決される必要がある。如何なる新しいスキームも、ある所定数のビットフリップエラーの検出、及び（複数のビットエラー、ビットスリップ等を含む）他のエラータイプからの最終的な回復を保証する既存のエラーモデルを保証することができなければならない。
【０００６】
更に、周波数が高まるにつれて（例えば、８ＧＴ／ｓでのＰＣＩｅ３．０）、如何なる新しい符号化スキームによっても対処される必要がある他のエラータイプが現れる可能性がある。例えば、ＤＦＥｓ（Decision  Feedback  Equalizers）を使用する受信器設計が考えられるべきである。ＤＦＥｓは、ビットパターンに従い不正な後続ビットとして単一のビットフリップを見ることができる。既存の８ｂ／１０ｂスキームでさえ、このようなエラーを検出することができないことがある。よって、既存の誤りモデルを維持することに加えて、どのレーンにおいてもビットのスライドウィンドウ内で複数のビットエラーを許容することが極めて望ましい。
【０００７】
シリアルリンク及びパラレルリンクの両方の特性を有するシリアルリンク（例えば、データバイトがマルチレーンリンクで複数のレーンにわたってストライプ化されるＰＣＩｅ）に関して、６４／６６等の既存の解決法は効果がない。提案されるスキームは、これらの問題の幾つに対処する。
【課題を解決するための手段】
【０００８】
本開示の実施例によれば、デコーダを有する受信器と、送信器を前記受信器へ結合するシリアルリンクとを有し、前記シリアルリンクを介して前記受信器によって受信されるコードは、２つの有効な状態のうち一方を有する２ビットプレフィックスと、所定ビット長のシーケンスとを有し、前記コードは、前記受信器が入来データを識別することを可能にする、システムが提供される。
【０００９】
本開示の更なる実施例によれば、シリアルリンクを介して受信器によって、２ビットプレフィックス及び所定ビット長のシーケンスを有し、前記受信器が前記シリアルリンクへ結合されている送信装置と同期することを可能にするコードを受信する段階と、前記受信器によってブロックロックを得る段階と、前記２ビットプレフィックスが第１の所定値を有する場合に、前記所定ビット長のシーケンスの第１バイトを占有するペイロードタイプシンボルを読む段階とを有し、前記コードは、前記２ビットプレフィックスが第２の所定値を有する場合に電気的遊休状態エントリ信号又は電気的遊休状態終了信号を有する、符号化方法が提供される。
【００１０】
本開示の更なる実施例によれば、シリアルリンクで８ｂ／１０ｂ符号化を置換するコードであって、電気的遊休状態終了シーケンス及び電気的遊休状態エントリシーケンスのいずれかを示す第１の値と、遊休状態シーケンス、データリンク層パケット、又はトランザクション層パケットのいずれかを示す第２の値とを有する２ビットプレフィックスと、前記２ビットプレフィックスの値に基づく一意のビットを有する所定ビット長のシーケンスとを有し、前記シリアルリンクの一端へ結合されている受信器が、前記シリアルリンクの他端へ結合されている送信装置と同期することを可能にするコードが提供される。
【発明の効果】
【００１１】
エラー検出機能を改善し且つ低電力状態に関して低オーバーヘッドを保ちながら、物理層が数個の選択ビットを見ることによってパケット境界を識別することを可能にする。
【図面の簡単な説明】
【００１２】
【図１】実施例に従う符号化スキームを用いるシステムのブロック図である。
【図２】実施例に従って図１の符号化スキームによって使用されるプレフィックス及び１２８ビットシーケンスを含む（１３０，１２８）コードのブロック図である。
【図３】実施例に従って図１の符号化スキームによって処理される４つのペイロードタイプ及びそれらの長さのブロック図である。
【図４】実施例に従って図１の符号化スキームによって使用されるトランザクション層パケットレイアウトのブロック図である。
【図５】実施例に従ってブロックロックを得るよう図１の符号化スキームによって実行される動作を示すフロー図である。
【図６】実施例に従ってパケットを処理するよう図１の符号化スキームによって実行される動作を示すフロー図である。
【図７】実施例に従って図１の符号化スキームによって使用されるデータリンク層パケットレイアウトのブロック図である。
【図８】実施例に従ってパケットを処理する前に図１の符号化スキームによって実行される更なる動作を示すフロー図である。
【発明を実施するための形態】
【００１３】
上記の態様及び本開示の付随する利点の多くは、添付の図面とともに以下の詳細な記載を参照することによってより良く理解されると同時に、より容易に明らかになるであろう。図中、同じ参照符号は、別な方法で特定されない限り、同じ部分を表す。
【００１４】
ここに記載される実施例に従って、新規の符号化方法が開示される。この方法は、エラー検出機能を改善し且つ低電力状態に関して低オーバーヘッドを保ちながら、物理層が数個の選択ビットを見ることによってパケット境界を識別することを可能にする。物理層に関して８ｂ／１０ｂ符号化のオーバーヘッドを除くことによって、符号化方法は、現在の８ｂ／１０ｂ符号化よりも優れたエラー検出能力を達成する。更に、この新規の符号化方法は、付加的なエラー検出機能と、低電力状態から抜け出すための低オーバーヘッドメカニズムと、問題のあるパケットを扱うためのメカニズムとを提供する。
【００１５】
以下の詳細な記載では、添付の図面が参照される。図面は、一例として、本発明が実施され得る実施形態を示す。なお、当然のことながら、本開示を読むことで、他の実施形態が当業者に明らかになるであろう。例えば、ここに記載される実施例はＰＣＩエクスプレスを参照する。しかし、潜在的な開示技術は、如何なるシリアルリンクへも拡張されてよい。従って、以下の詳細な記載は限定の意味で解釈されるべきではなく、本発明の適用範囲は特許請求の範囲によって定義される。
【００１６】
図１は、実施例に従う符号化スキーム１００を用いるシステム２００の略ブロック図である。システム２００は、シリアルリンク８０を介して通信する送信器４０及び受信器５０を有する。シリアルリンク８０は、送信器４０と受信器５０との間の有線又は無線の接続であってよく、また、１又はそれ以上のレーンを有してよい。符号化スキーム１００は（１３０，１２８）コード９０を用いる。（１３０，１２８）コード９０については、後で更に説明する。送信器４０はエンコーダ２０を有する。エンコーダ２０は、開示される符号化スキーム１００を実行する。送信器４０は、更に、スクランブラ３０を有する。受信器５０はデコーダ６０を有する。デコーダ６０も符号化スキーム１００を実行する。受信器５０は、更に、デスクランブラ７０を有する。符号化スキーム１００は、先行技術の周知の８ｂ／１０ｂ符号化スキームに取って代わる。
【００１７】
開示される符号化スキーム１００は、エラー検出機能を改善し且つキラーパケットを回避すべく様々な技術を使用し、また、より良い信頼性を達成すべくリンクトレーニングの様々な部分に関してスクランブル化されているシンボル及びスクランブル化されてないシンボルの混合を用いる。８ｂ／１０ｂ符号化を置換することによって、或る実施例で、符号化スキーム１００はシリアルリンク８０の有効なバンド幅を増大させる。これは現在の８ｂ／１０ｂ符号化スキームに対して性能を高めるのみならず、符号化スキーム１００は電力削減をもたらす。これは、電力がリンクでのロー（raw）ビットに直接に結び付けられるためである。既存の誤りモデルを維持することに加えて、提案される符号化スキーム１００は、どのレーンにおいてもビットのスライドウィンドウ内で複数のビットエラーを許容する。
【００１８】
或る実施例で、符号化スキーム１００は、ほとんどの場合についてシリアルリンク８０の各レーンをカバーすべく（１３０，１２８）タイプのコード９０を用いる。異なる符号化スキームがより良い効率のために使用され得る場合には、例外がありうる。例えば、低電力状態の終了において、符号化スキーム１００は、受信器を起こし、ビットロックを達成し、次いで、（１３０，１２８）フォーマットで通常のトラフィックを送信する前にレーン・ツー・レーン・デスキュー（lane-to-lane  deskew）を行うために、単にロービットを送信することができる。機能（受信器の起動、ビットロック、レーン・ツー・レーン・デスキュー）の夫々は、符号化オーバーヘッドを払うことなく一意のパターンを送信することによって達成され得る。
【００１９】
（１３０，１２８）コード９０は、先行技術の６４／６６コードの変形であるが、異なる方法で使用される。エンコーダ２０（送信器４０）で、（１３０，１２８）コード９０はリンク８０を介して送信され、これにより、受信器５０は入来データの開始を識別することができる。よって、デコーダ６０（受信器５０）は、リンク８０で（１３０，１２８）コード９０を探す。（１３０，１２８）コード９０は、また、トレーニングシーケンスとしても使用され、送信器４０及び受信器５０がそれら自身を同期させることを可能にする。
【００２０】
４つの幅広いタイプのペイロード、すなわち、トランザクション層パケット（ＴＬＰｓ）、データリンク層パケット（ＤＬＬＰｓ）、遊休状態（パケットなし）（ＩＤＬＥ）、及び順序集合（ordered  sets）が存在する。ＴＬＰｓは可変長のペイロードを有する。ＤＬＬＰｓは８バイトの固定長のペイロードを有する。ＩＤＬＥは１バイトの固定長のペイロードを有する。順序集合は、リンク８０のレーンごとに確立される可変長のペイロードを有する。示されるように、以下、任意にトレーニングシーケンスであることに加えて、（１３０，１２８）コード９０は、論理ＩＤＬ、トランザクション層パケット（ＴＬＰ）又はデータリンク層パケット（ＤＬＬＰ）であってよい。
【００２１】
実施例に従って、（１３０，１２８）コード９０は図２に表される。（１３０，１２８）コード９０の最初の２ビット２２、すなわち、同期ヘッダ２２は、０１の２値、すなわち、０１ｂ又は１０ｂのいずれかである（図２では“１０ｂ”として示されている。）。ビットシーケンス“１０ｂ”は、ペイロードがスクランブル化されない或る特別のパケット又は順序集合のためのプレフィックスとして使用される。１つの例は、ＰＣＩｅでの電気的遊休状態終了シーケンス（ＥＩＥＳ（Electrical  Idle  Exit  Sequence））である。これは、低周波コンテンツを用いて動作する。或る実施例で、ＥＩＥＳの１２８ビットペイロードは、８個の０の連続であってよい。示されるように、最初の２ビット２２（０１ｂ又は１０ｂ）の後には、８個の０、それに続く８個の１の連続２４が、８回繰り返される。
【００２２】
このように、（１３０，１２８）コード９０の提案される符号化は、実施例に従って、図に表される２ビットプレフィックス２２及び１２８ビットシーケンス２４、計１３０ビットを有する。低周波パターンを維持するよう、プレフィックス２２の最初の２ビット（０１ｂ又は１０ｂのいずれか一方）はスクランブル化されず、また、シーケンス２４の１２８ビットはスクランブル化されない。
【００２３】
或る実施例で、シーケンス２４は、また、スクランブル化されないために、異なる目的を果たす。シーケンス２４は、周期的に回復状態において送信され、よって、如何なるビットスリップ又はアッドタイプエラーも検出するために使用され、結果としてバイト配列のロスをもたらす。受信器５０が（例えば、バイト配列のロスに起因して）見失われる場合に、最終的に、リンク８０は回復状態へ至ることが予想される。周期的冗長チェック（ＣＲＣ）（又は他のエラー保護スキーム）が機能せず、あるいは、或る他のフレームエラー（例えば、パケットの無効な開始を得ること。）が起こり、あるいは、相手が期待される確認応答を得ず、リンク８０を再同期するよう回復状態へ至らせる。回復状態で１度は、リンク８０は特定のタイプのトレーニングシーケンスを得ることを期待する。回復状態でのリンク８０の各レーンは、ＥＩＥＳで一意の１３０ビットパターンを探す。回復状態で、有限数の可能なトレーニングシーケンスを有して、（ビットフリップを伴わない）最大限のビットスリップですら、ＥＩＥＳパターンの一意性に起因して、非ＥＩＥＳパターン（例えば、シーケンス２４）をＥＩＥＳパターンに類似させない。
【００２４】
ＥＩＥＳは、また、スクランブラ３０又はデスクランブラ７０の線形フィードバックシフトレジスタ（ＬＦＳＲ）をリセットするために使用され得る。たとえ符号化スキーム１００が複数の目的のために同じＥＩＥＳパターンを再利用するとしても、当業者には明らかなように、同じ効果は、低周波パターンの対象の夫々について異なる非スクランブル化パターンを有し、ブロックロックを得、（デ）スクランブラをリセットすることによって、達成され得る。
【００２５】
（１３０，１２８）コード９０が０１ｂのプレフィックスを備えている場合に、或る実施例では、他のタイプのペイロードが送信される。例えば、論理ＩＤＬトランザクションや、１０ｂプレフィックスとともに送信されるものとは異なる幾つかの順序集合が挙げられる。かかるプレフィックスを伴う１２８ビットペイロードは、スクランブル化されてよい。或る実施例で、スクランブル化されている１２８ビットペイロードの中で、受信器５０及び送信器４０は、パケット境界及びレーンストリーム境界を一意にやり取りする。
【００２６】
或る実施例で、符号化スキーム１００は、パケット境界を線引きするパケット化スキームを用いる。パケットは、（１３０，１２８）コード９０で“０１ｂ”プレフィックスとともに送信される論理ＩＤＬ、トランザクション、又は順序集合として定義されて良い。ペイロードの最初の（８ビット）シンボルは、どのようなペイロードが続くかを示し、また、どこで次のパケットが始まるかを指し示すのに役立つ。図３は、ペイロードの８ビットペイロードタイプシンボル３２、更に、知られている場合には、期待される長さ３４の１つの可能な符号化を示す。他のシンボルシーケンスは、一意のシンボルが夫々のペイロードタイプについて定義される限り使用されてよい。ペイロードの最初のシンボルを見ることによって、受信器５０は、どのようなペイロードが送信されているのかを把握する。
【００２７】
受信器５０がペイロードタイプシンボル３２で送信ＤＬＬＰペイロード（ＳＤＰ）又はＩＤＬＥペイロードを得る場合は、ペイロード長３４は先験的に知られている（夫々、８バイト及び１バイト）。他方で、送信ＴＬＰペイロード（ＳＴＰ）がペイロードタイプシンボル３２で送信されている場合は、受信器５０は、どこでパケットが終わるかを判断する。これにより、次のパケットの最初のシンボルが得られる。順序集合ペイロードについてここでは論じられない。受信器が最初のシンボルでこれら４つのペイロードタイプ３２以外の何かを得る場合は、或る実施例で、受信器５０は、エラーを報告し、リンク８０を回復に至らせる。この符号化スキーム１００は、トリプル・ビットフリップのエラーの保証された検出をもたらす。
【００２８】
或る実施例で、受信器５０が送信トランザクション層パケット（ＳＴＰ）を検出する場合は、受信器は、ＴＬＰの長さを把握すべく次の数バイトにより後続ビットを調べる。ＴＬＰペイロードは可変長であるから、この計算は、次のパケットの開始バイト位置（バイト０）を決定するのに役立つ。図４は、実施例に従うトランザクション層パケットレイアウト３６のブロック図である。ＰＣＩｅで、ペイロードの長さは、複数のフィールド、すなわち、長さフィールド４６（ｌｅｎｇｔｈ［９：０］）、フォーマットフィールド４４（ｆｍｔ［１，０］）及びＴＬＰダイジェスト（ＴＤ）フィールド４８の関数である
或る実施例で、ダブルワードでＴＬＰペイロードの長さを得る式は、下記の通りである：
tlp_length[10:0]＝（Fmt[1]の場合にlength[9:0]；その他の場合に0）＋
5（３ダブルワードヘッダについて、リンクレベルＣＲＣ、ＳＴＰ及びＥＮＤ／ＥＤＢ）＋
（Fmt[0]が1である場合に1；その他の場合に0）（1の場合に４ダブルワードヘッダを表す）＋
（TDが1である場合に1；その他の場合に0）（エンド・ツー・エンドＣＲＣを表す）
ペイロード長を決定するために使用されるＴＬＰフィールドは、或る実施例で、所望のエラー補償範囲に依存して、ＣＲＣフィールドによって保護される。たとえパケット自体がＣＲＣ保護を受けることができるとしても、“長さ”を形成するフィールドでのビットエラーは、結果としてパケット境界を誤りバイトで終わらせ、これにより、誤りビットは、フレーミングが起こる場合にＣＲＣとして取られる。これは、ＣＲＣが許容することができるものより少ないエラーが得られる場合でさえエイリアシングを引き起こしうる。
【００２９】
この問題を回避するよう、或る実施例で、符号化スキーム１００は、“長さ”に寄与するフィールドを保護する別個のＣＲＣを用いる。この別個のＣＲＣは、ＴＬＰの固定ビット位置に配置され、受信器５０が毎回ＣＲＣを取り出すことを可能にする。このように、この例では、長さに寄与する全てのフィールド及びそれらをカバーするＣＲＣは固定された位置にある。
【００３０】
或る実施例で、図４に表されるように、符号化スキーム１００は、ＣＲＣ情報の４つのビット４２を保持するために、予め留保されていた３バイトの最後の４ビットを定義する。かかるビット（ＣＲＣ［３：０］）４２は、トランザクション層パケットの長さ情報を含む１３ビットフィールドのＣＲＣを保持するために使用される。このように、ＣＲＣビット４２は、ＴＬＰ３６の長さを計算するために必要とされる情報として、上述される２ビット情報４４、１０ビット長４６、及び１ビットＴＬＰダイジェスト（ＴＤ）４８のＣＲＣを取る。ＣＲＣ［３：０］４２は、４ビットウィンドウ内の如何なる数のエラーも検出されることを確かにするよう４次の原始多項式を保持する。他の実施例では、改善された検出のために、より多くのビットがＣＲＣに使用される。
【００３１】
ＰＣＩエクスプレスは、パケットの終了を知らせるＥＮＤ（又は不良パケットのためのＥＤＢ）のためのバイトを定義する。これは、パケットの内容を調べることなく、物理層がパケットの終了を知らせる明確なデリミタ（delimiter）を有するように行われる。符号化スキーム１００も、ＴＬＰ３６の終了を知らせるＥＮＤ／ＥＤＢのためのバイトを定義する。このように、図４に示されるように、提案されるトランザクション層パケットレイアウト３６は、ＥＮＤ／ＥＤＢパリティバイト５２のために最後に８ビットを有する。
【００３２】
より良いエラー補償範囲を達成するために、符号化スキーム１００は、最後のバイトが良好な終了（ＥＮＤ）である場合に、トランザクション層パケットにある全てのバイトのバイト毎排他的ＯＲ（ＸＯＲ）を送信するためにエンドバイト位置を用いる（ｎ−２を通して１バイト。ｎはバイトでのパケットの長さである。）。或る実施例で、バイトが送信／受信をされる場合に、それらは夫々の送信器４０／受信器５０のメモリに格納される。
【００３３】
代わりに、不良パケットに起因して、最後のバイトが不良バイト（ＥＤＢ）である場合は、ｎ−２を通して１つの、バイトのバイト毎排他的ＮＯＲ（ＸＮＯＲ）がトランザクション層パケット３６で計算される。受信器５０は、（エンドバイト位置を含む）トランザクション層パケット３６でｎ−１を通して１つの、バイトのバイト毎ＸＯＲを行う。オール０の結果は、物理層の立場から正常終了を知らしめる（ＬＣＲＣチェックはリンク層で起こり、他のトランザクションレベルチェックはトランザクション層で起こる。）。オール１の結果は正常ＥＤＢを知らしめる。如何なる他の値もビットエラーを示し、これより、フレームエラーが知らされ、リンクは回復モードに入る。バイト毎ＸＯＲにより、符号化スキーム１００は、７ビットウィンドウ内で如何なる数のビットのエラー検出も提供する。オール１は有効な符号化であるから、符号化スキーム１００は、８ビットウィンドウ内で多数のビットエラーのための補償範囲を得ない。当業者には明らかなように、提案されるＥＮＤ／ＥＤＢは、如何なる数のビットへも拡張され得、バイト毎パリティに代えて、ＣＲＣ等の如何なるスキームも使用することができる。
【００３４】
図５は、実施例に従ってブロックロックを得る処理を示すフロー図である。符号化スキーム１００は、下記のイベント、すなわち、リンクがフレーミングを見失うこと、エラーが見つけられること、回復シーケンスが受信されること、及び回復／トレーニングにあること、のいずれかが起こっているかどうかを判断するクエリから開始する（ブロック１０２）。いずれのイベントも起こらない場合は、イベントのうち１つが行われるまでアクションは起こされない。いずれかのイベントが行われた時点で、符号化スキーム１００は、シリアルリンク８０が回復又はトレーニングにあるかどうかを判断する（ブロック１０４）。もしそうであるならば、回復への直接リンクが作られる（ブロック１０６）。リンクが失われる場合に、回復への直接リンクが生ずる。受信器５０は回復状態となり、ブロックロックを取り戻し、再び開始する。シリアルリンク８０が回復又はトレーニングにない場合は、回復への直接リンクは作られない。
【００３５】
或る実施例で、受信器５０は、自身がブロックロックを得ているかどうかを表すために、ブロックロック取得パラメータを用いる。この時点で、受信器５０は、ブロックロック取得パラメータをＦＡＬＳＥに設定する（ブロック１０８）。次に、符号化スキーム１００は、図２の（１３０，１２８）コード９０のような１３０ビットレジスタへとビットをシフトインする（ブロック１１０）。これは、１３０バイトフィールドを介してブロックロックを得るために使用される。１３０ビットレジスタが電気的遊休状態終了シーケンス（ＥＩＥＳ）を探す（ブロック１１２）場合は、ブロックロック取得パラメータがＴＲＵＥに設定され且つ１３０ビットレジスタが前の境界と合致しないかどうかを確かめるべく確認が行われる（ブロック１１４）。１３０ビットレジスタがＥＩＥＳでない場合は、符号化スキーム１００は、ブロックロック取得パラメータがＴＲＵＥに設定されるかどうかしか確認しない（ブロック１２０）。
【００３６】
取得されたブロックロックがＴＲＵＥであって且つ１３０ビットレジスタが前の境界と合致しない場合（ブロック１１４の“Ｙ”の先）は、ブロックロック取得パラメータはＴＲＵＥに設定され（ブロック１２４）、ブロックロック境界は符号化スキーム１００によって再確立され（ブロック１２６）、進行中である順序集合はエラーで終了する（ブロック１２８）。
【００３７】
一方又は両方のクエリが肯定でない場合（ブロック１１４の“Ｎ”の先）は、ブロックロック取得パラメータはＴＲＵＥに設定され（ブロック１１６）、ブロックロック境界は確立される（ブロック１１８）。次に、ブロックロック取得パラメータがＴＲＵＥであるかどうかのクエリが行われる（ブロック１２０）。ＴＲＵＥでない場合は、１３０ビットレジスタへの他のシフトイン・ビットが行われる（ブロック１１０）。ブロックロック取得パラメータがＴＲＵＥである場合（ブロック１２０の“Ｙ”の先）は、適切な数のビットが受信器５０へ転送される（ブロック１２２）。
【００３８】
進行中のいずれかの順序集合がエラーで終了する（ブロック１２８）か、又は適切な数のビットが受信器コア５０へ転送された（ブロック１２２）後に、通常動作へリンクし直すべきかどうかのクエリが行われる（ブロック１３０）。通常動作へリンクし直されるべき場合は、符号化スキーム１００の動作は開始から繰り返される（ブロック１０２）。あるいは、そうでない場合は、１３０ビットレジスタへの他のシフトイン・ビットが行われる（ブロック１１０）。
【００３９】
図６は、実施例に従ってトランザクション層パケットを処理するシステム２００内の符号化スキーム１００（図１）の動作を示すフロー図である。図５は、エラーからの回復又は単なる開始のいずれであるかに関わらず、ブロックロックを得る処理を示したが、図６は、リンク８０がトランザクションを伝送したことでブロックロックが確立された後の正常なパケット処理を示す。フロー図は、システム２００で送信器４０から発せられたパケットを処理する受信器５０（図１）の動作を表す。処理は、リンクが作動し且つ順序集合が受信されなくなるまで始まらない（ブロック２０２）。リンクが作動し且つ順序集合が受信されなくなると、同期ヘッダ２２が読み出され、それが０１ｂであるかどうかが判断される（ブロック２０４）。（１３０，１２８）コード９０が０１ｂ、論理ＩＤＬ、トランザクション層パケット、及び順序集合等のペイロードを備える場合を思い出す。同期ヘッダ２２が０１ｂではないが１０ｂである場合は、パケットは順序集合であり、上述されているように処理される（ブロック２０６）。そうでない場合は、残りの１２８ビット（１６バイト）２４はスクランブル化を解かれる（ブロック２０８）。
【００４０】
次に、１２８ビット２４の最初のシンボルが論理ＩＤＬ（ＬＩＤＬ）であるかどうかのクエリが行われる（ブロック２１０）。最初のシンボルがＬＩＤＬである場合は、更なる処理は行われず、よって、符号化スキーム１００は最初に戻る（ブロック２０２）。最初のシンボルがＬＩＤＬでない場合は、その最初のシンボルはデータリンク層パケット（ＤＬＬＰ）の開始であるかどうかの新たなクエリが行われる（ブロック２１２）。最初のシンボルがＤＬＬＰの開始である場合は、次の６バイトが処理のために転送され、バイトパリティが計算される（ブロック２１４）。ＤＬＬＰパケットが８バイトの固定長を有することを思い出す。そのようなものとして、最終バイトは常に８番目のバイトである。然るに、８番目のバイトは、それがＤＬＬＰの計算されたパリティと合致するかどうかを見るために確認される（ブロック２１６）。８番目のバイトがＤＬＬＰの計算されたパリティと合致する場合は、処理は終了し、制御は最初に戻る（ブロック２０２）。
【００４１】
計算されたパリティが８番目のバイトで保持されている値と合致しない場合（ブロック２１６の“Ｎ”の先）は、不一致を有するバイト／レーンが記録され（ブロック２１８）、回復への直接的リンクが作られる（ブロック２２０）。
【００４２】
最初のシンボルがＤＬＬＰの開始でない場合（ブロック２１２の“Ｎ”の先）は、符号化スキーム１００は、最初のニブルがトランザクション層パケット（ＴＬＰ）の開始であるかどうかを判断する（ブロック２２２）。最初のニブルがＴＬＰの開始である場合は、符号化スキーム１００は、ＴＬＰレイアウト３６（図４）からＣＲＣビット４２を得、その４ビット値を、フォーマットフィールド４４、長さフィールド４６、及びＴＬＰダイジェストフィールド４８で得られる値と比較する（ブロック２２４）。一致が見つけられる場合は、パケット全体が、処理のために受け取られるように転送され、一方、符号化スキーム１００はバイトパリティを計算する（ブロック２２６）。一致が見つけられない場合は、回復への直接的リンクが作られる（ブロック２２０）。パリティが計算されると、それは、１２８ビットシーケンスの最終バイトで保持されている値と比較される（ブロック２２８）。最終バイトが計算されたパリティと等しい場合は、最後のバイトは有効なＥＮＤバイトを構成する（ブロック２３０）。最終バイトが計算されたパリティの逆数である場合は、不良ＥＮＤ（ＥＤＢ）が見つけられる（ブロック２３０）。最終バイトが計算されたパリティ又はその逆数のいずれでもない場合は、そのシーケンスのための処理は終了し、制御は最初に戻る（ブロック２０２）。
【００４３】
最初のニブルがＴＬＰの開始でない場合（ブロック２２２の“Ｎ”の先）は、符号化スキーム１００は、最初のシンボルが順序集合を表すかどうかを判断する（ブロック２３２）。最初のシンボルが順序集合を表す場合は、順序集合は、それらが正確なフォーマッを有する場合に転送される。正確なフォーマットを有さない場合は、エラーが記録され、リンクは回復へ至るよう向けられる（ブロック２３４）。最初のシンボルが順序集合でない場合（ブロック２３２の“Ｎ”の先）は、それは、最初のシンボルが４つのタイプ（論理ＩＤＬ、ＴＬＰ、ＤＬＬＰ、順序集合）のうちいずれでもないことを示し、その場合に、回復への直接的リンクが作られる（ブロック２２０）。
【００４４】
図７は、実施例に従うデータリンク層パケットレイアウト５６を表すブロック図である。ＤＬＬＰ５６は８バイトの固定長である。然るに、ペイロードタイプ（ｓＳＤＰ）を示す最初の８ビットのペイロードタイプシンボル３２の後には、ＤＬＬＰペイロード５４が次の４バイトで保持され、ＬＣＲＣ５８がその次の１６ビットにあり、ＥＮＤパリティバイト５２が最後のバイトにある。データリンク層パケット（ＤＬＬＰ）ペイロードに関して、ＥＮＤパリティバイト５２について同じＸＯＲルールが当てはまる。このように、ＤＬＬＰ５６における全てのバイトのバイト毎ＸＯＲが取られる。データリンク層パケットはＥＤＢを有さないので、受信器のＸＯＲでのオール１は、また、エラーとみなされる。このように、ＤＬＬＰペイロード５６に関して、符号化スキーム１００は、８ビットウィンドウで如何なる数のビットエラーも許容することができる。
【００４５】
或る実施例で、符号化スキーム１００は、（長さフィールドがいっぱいにされる場合に）４ビットのウィンドウ内で、更に、パケットペイロードの残りについては、７ビットのウィンドウ内でビットエラーの保証された検出を提供する。順序集合エラーの検出についてはここには記載されない。或る実施例で、符号化スキーム１００は、必要に応じて、パリティのために別個のバイトを使用する。しかし、順序集合はプロトコル（多数の繰り返し）での埋め込みエラー検出により複数のビットエラーを保証することができるので、更に、複数のビットエラーはデータ整合性に影響を与えないので、それは順序集合には必要とされないが、トランザクション又はデータリンク層パケットにとっては有用である。これは、フーリエ・イコライザを用いる実施には極めて有用である。所与のウィンドウ内での複数のビットフリップの保証された検出は、このアプローチのために付加された新しい機能である。
【００４６】
或る実施例で、符号化スキーム１００は、（１３０，１２８）符号化をなされていない非スクランブル化パターンを送信することによって、Ｌ０ｓのような低電力状態から抜け出るのに要する時間を最適化する（Ｌ０は、パケットが送受信される通常の動作状態である。Ｌ０ｓは、Ｌ０状態への迅速なエントリバックがリンク回復を経ることなく可能である電力節約状態である。）。
【００４７】
図８は、実施例に従って符号化スキーム１００によって実行される動作を示すフロー図である。最初に、符号化スキーム１００は、例えば、８個の０の後に８個の１が続き、それが８回（又は必要に応じて）繰り返されるような、所定数の低周波パターン（ＰＣＩエクスプレス２．０等の場合）を送信する（ブロック３０２）。これは、受信器５０が電気的遊休状態から抜け出るのに役立つ。次いで、送信器４０は、リンクネゴシエーション中に、装置が要求した数の高周波高速トレーニングシーケンス（ＦＴＳ）を送信する（ブロック３０４）。ＦＴＳは、特別のシンボルの組合せであってよい。（例えば、各ＦＴＳは、３つの１０１０１０１０が後に続く１０１１００１０であってよい。）高周波成分はビットロックを取得する助けとなり、一方、最初のシンボルはバイトロックを達成するために使用され得る。最後に、符号化スキーム１００は、レーン・ツー・レーン・デスキューを達成するよう所定数のシンボル（例えば、１１００００１１）を送信する（ブロック３０６）。
【００４８】
シンボルロックを取得した後、受信器５０は、シリアルリンク８０のレーン間でデスキューを行うべくデスキューパターンを探す。第２のデスキューの後、（１３０，１２８）コード９０が始まる（ブロック３０８）。使用可能なリンクを得るべくスクランブル化を行うことなく（１３０，１２８）コード９０を除くことは、（１３０，１２８）コード９０に全て埋め込まれ且つスクランブル化している、ビット及びシンボルロックを達成するための高周波パターン及びレーン・ツー・レーン・デスキューを実行するための別個の集合が後に続く、電気的遊休状態を抜け出すための低周波パターンの周期的シーケンスを送信することよりも、所定パターンを送信することにおいてより有効である。スクランブラ３０／デスクランブラ７０は、Ｌ０ｓの間にリセットされ、最初の（１３０，１２８）コード９０により動作し始める。フロー図３００は、或る実施例で、どのようにこれらの別々のトランザクションが、例えばＬ０電力状態で普通に送信する前に、電気的遊休状態を抜け出し、ビットロックを取得し、レーン・ツー・レーン・デスキューを達成するよう、符号化スキーム１００によって実行されるかを明示する。
【００４９】
スクランブル化専用アプローチで起こりうる別の問題は、キラーパケット（killer  packet）として知られている。特定のビットパターンがエラーを引き起こし、ＴＬＰ又はＤＬＬＰパケットが、回復相を通して第１トリップに続くスクランブル化の後に、期せずしてそのようなパターンを有する場合は、或る実施例で、符号化スキーム１００は、問題のあるビットパターンがその後の再送信で繰り返さないことを確かにする。このアプローチは、リンクを停止させる如何なるウィルスも回避する。回復を経る全てのトリップで、全てのＥＩＥＳシーケンスにより、スクランブラ３０（デスクランブラ７０）は、シード値へのリセットを得る。回復相の間のスクランブラ３０（デスクランブラ７０）のリセットは、デスクランブラ７０がビットスリップ等のエラーにより送信器４０と同期することができない場合に必要とされる。しかし、このスクランブラ同期化のマイナス面は、同じＴＬＰパケット３６が回復相を通して毎回特有のビットストリームを持ち出す可能性である。そのビットパターンがキラービットパターンである場合は、ビットパターンは再三にわたりビットエラー等の問題を引き起こす。
【００５０】
このような問題を回避するよう、或る実施例で、符号化スキーム１００は、回復相から出る第１のＴＬＰ３６を送信する前に、Ｌ０でランダムな数の特別のＩＤＬＥシンボルを送信する。或る実施例で、特別のＩＤＬＥシンボルの数についての厳密式は実施依存であり、様々な要因に依存して実行毎に変化しうる。複数の要因の影響は、回復相を経る全てのトリップに伴う期待値を特徴付けることを困難にする。
【００５１】
本願は有限数の実施例に関して記載してきたが、当業者には、それらから、多数の改良及び変形が認識されるであろう。添付の特許請求の範囲は、本発明の主旨及び適用範囲内にあるかかる改良及び変形の全てを網羅することが意図される。
【符号の説明】
【００５２】
１００  符号化スキーム
２０    エンコーダ
２２    プレフィックス
２４    ビットシーケンス
２００  システム
３０    スクランブラ
３２    ペイロードタイプシンボル
３６    トランザクション層パケットレイアウト
４０    送信器
５０    受信器
６０    デコーダ
７０    デスクランブラ
８０    シリアルリンク
９０    （１３０，１２８）コード
【図１】
2010011454.tif 000003
【図２】
2010011454.tif 000004
【図３】
2010011454.tif 000005
【図４】
2010011454.tif 000006
【図５】
2010011454.tif 000007
【図６】
2010011454.tif 000008
【図７】
2010011454.tif 000009
【図８】
2010011454.tif 000010