(57)【特許請求の範囲】
【請求項１】
１または複数のポートから第１の複数のシンボルを受信するインタフェースであり、予め定められた数の前記第１の複数のシンボルを集約して第２の複数のシンボルを提供する、前記インタフェースと、
（ｉ）ヘッダを生成し、（ｉｉ）前記第２の複数のシンボルをエンコードして第３の複数のシンボルを生成し、（ｉｉｉ）前記第３の複数のシンボルに制御コードのセットを含める場合にさらに前記制御コードのセットのためのポインタを生成するエンコーダであり、前記ヘッダは、前記第３の複数のシンボルが制御コードのセットを含むかを示し、前記第３の複数のシンボルのうちの１つが、前記制御コードのセットを含み、前記制御コードのセットが１または複数の制御ビットを含み、前記ポインタは前記制御コードのセット内にあるものより多くのビットを有し、前記ポインタのビット数と前記制御コードのセットのビット数との和は前記第３の複数のシンボルにおける各々のシンボルのビット数に等しい、前記エンコーダと、
を備えるデータ処理システム。
【請求項２】
前記１または複数のポートは、複数のポートを含み、
前記インタフェースは、前記第１の複数のシンボルを恣意的な順序で受信し、
前記第１の複数のシンボルは、複数の制御シンボルおよび複数のデータシンボルを恣意的な順序で含む、請求項１に記載のデータ処理システム。
【請求項３】
前記第１の複数のシンボルのうちのいくつかは、複数の開始制御ビットを含み、
前記複数の開始制御ビットは、前記複数のポートにそれぞれ対応し、
前記複数の開始制御ビットの各々は、それぞれのパケットの開始を示す、請求項２に記載のデータ処理システム。
【請求項４】
前記エンコーダは、前記第３の複数のシンボルのうちのいずれかにおいて複数の制御コードを選択的に含む、請求項１から３のいずれか一項に記載のデータ処理システム。
【請求項５】
前記ヘッダは単一のビットのみを有する、請求項１から４のいずれか一項に記載のデータ処理システム。
【請求項６】
前記１または複数のポートは単一のポートのみを含む、請求項１に記載のデータ処理システム。
【請求項７】
前記エンコーダは、エンコードされたブロックを生成し、
前記エンコードされたブロックは、前記第３の複数のシンボルを含み、
前記ポインタは、少なくとも、前記制御コードのセットが位置する前記第３の複数のシンボルのうちのシンボルを示す部分を含み、
前記エンコードされたブロックにおけるシンボル数は、前記ポインタがさらに前記制御コードのセットの後に別の制御コードのセットが存在するかどうかを示すビットを含む場合に２Ｐより小さく、含まない場合にそれに等しく、ここにおいてＰは前記ポインタにおけるビット数である、請求項１から６のいずれか一項に記載のデータ処理システム。
【請求項８】
前記ポインタのうちの前記制御コードのセットが位置する前記第３の複数のシンボルのうちのシンボルを示す部分は、前記制御コードのセットよりも多くのビットを有する、請求項７に記載のデータ処理システム。
【請求項９】
前記ポインタは、前記制御コードのセットよりも２ビット以上多くのビットを有する、請求項１から８のいずれか一項に記載のデータ処理システム。
【請求項１０】
前記第２の複数のシンボルは、１０個のシンボルのみを含む、請求項１から９のいずれか一項に記載のデータ処理システム。
【請求項１１】
前記第１の複数のシンボルにおける各シンボルは１０ビットのみを含み、
前記１０ビットは、８データビットおよび２制御ビットを含む、請求項１から１０のいずれか一項に記載のデータ処理システム。
【請求項１２】
前記第１の複数のシンボルは、複数のデータシンボルおよび複数の制御コードを含み、
前記制御コードのセットは、前記複数の制御コードに基づく、請求項１から１１のいずれか一項に記載のデータ処理システム。
【請求項１３】
前記第３の複数のシンボルをスクランブルするスクランブラと、
前記スクランブラの出力をフォーマットするフォーマットモジュールと、
前記フォーマットモジュールの出力をシリアライズするシリアライザ／デシリアライザデバイスと、をさらに備える、請求項１から１２のいずれか一項に記載のデータ処理システム。
【請求項１４】
前記エンコーダは、前記制御コードのセットを含めるシンボルに対して前記制御コードのセットを連結し、前記制御コードのセットを含めないシンボルに対してデータシンボルを連結する、請求項１から１３のいずれか一項に記載のデータ処理システム。
【請求項１５】
１または複数のポートから第１の複数のシンボルをインタフェースにおいて受信する段階と、
予め定められた数の前記第１の複数のシンボルを集約して第２の複数のシンボルを提供する段階と、
ヘッダを生成する段階と、
前記第２の複数のシンボルをエンコーディングして第３の複数のシンボルを生成する段階であり、前記第３の複数のシンボルに制御コードのセットを含める場合にさらに前記制御コードのセットのためのポインタを生成する、段階と、を備え、
前記ヘッダは、前記第３の複数のシンボルが制御コードのセットを含むかを示し、前記第３の複数のシンボルのうちの１つが、前記制御コードのセットを含み、前記制御コードのセットが１または複数の制御ビットを含み、前記ポインタは前記制御コードのセット内にあるものより多くのビットを有し、前記ポインタのビット数と前記制御コードのセットのビット数との和は前記第３の複数のシンボルにおける各々のシンボルのビット数に等しい、方法。
【請求項１６】
前記１または複数のポートは、複数のポートを含み、
前記第１の複数のシンボルは前記インタフェースにおいて恣意的な順序で受信され、
前記第１の複数のシンボルのうちのいくつかは、複数の開始制御ビットを含み、
前記複数の開始制御ビットは、前記複数のポートにそれぞれ対応し、
前記複数の開始制御ビットの各々は、それぞれのパケットの開始を示す、請求項１５に記載の方法。
【請求項１７】
前記第３の複数のシンボルのうちのいずれかにおいて複数の制御コードを選択的に含む段階をさらに備え、
前記ヘッダは単一のビットのみを有する、請求項１５または１６に記載の方法。
【請求項１８】
前記１または複数のポートは、単一のポートのみを含む、請求項１５に記載の方法。
【請求項１９】
エンコードされたブロックを生成する段階を備え、
前記エンコードされたブロックは、前記第３の複数のシンボルを含み、
前記ポインタは、少なくとも、前記制御コードのセットが位置する前記第３の複数のシンボルのうちのシンボルを示す部分を含み、
前記エンコードされたブロックにおけるシンボル数は、前記ポインタがさらに前記制御コードのセットの後に別の制御コードのセットが存在するかどうかを示すビットを含む場合に２Ｐより小さく、含まない場合にそれに等しく、ここにおいてＰは前記ポインタにおけるビット数である、請求項１５から１８のいずれか一項に記載の方法。
【請求項２０】
前記ポインタのうちの前記制御コードのセットが位置する前記第３の複数のシンボルのうちのシンボルを示す部分は、前記制御コードのセットよりも多くのビットを有する、請求項１９に記載の方法。
【請求項２１】
前記ポインタは、前記制御コードのセットよりも２ビット以上多くのビットを有する、請求項１５から２０のいずれか一項に記載の方法。
【請求項２２】
前記第２の複数のシンボルは、１０個のシンボルのみを含み、
前記第１の複数のシンボルにおける各シンボルは、１０ビットのみを含み、
前記１０ビットは８データビットおよび２制御ビットを含む、請求項１５から２１のいずれか一項に記載の方法。
【請求項２３】
前記第３の複数のシンボルを生成する段階は、前記制御コードのセットを含めるシンボルに対して前記制御コードのセットを連結し、前記制御コードのセットを含めないシンボルに対してデータシンボルを連結することを含む、請求項１５から２２のいずれか一項に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
［相互出願への参照］
本願は、２０１５年２月１９日に出願された米国特許出願第１４／６２５，８３２号に基づく優先権を主張し、また２０１４年２月２１日に出願された米国仮特許出願第６１／９４３，２７２号に基づく優先権の利益を主張する。上記参照される出願の開示全体が参照により本明細書に組み込まれる。
【０００２】
本発明は、ネットワーク、より具体的にはイーサネット（登録商標）ネットワークデバイスにおける物理レイヤデバイスの物理コーディングサブレイヤにおけるデータコーディングに関する。
【背景技術】
【０００３】
イーサネット（登録商標）ネットワークデバイスとしては、媒体を経由してデータを送信および受信する物理レイヤデバイスが挙げられる。ギガビット（Ｇｂ）ネットワークデバイスでは、物理レイヤデバイスには物理コーディングサブレイヤ（ＰＣＳ）が含まれ、物理コーディングサブレイヤは、（ｉ）ギガビット媒体非依存インタフェース（ＧＭＩＩ）または拡張型ＧＭＩＩ（ＸＧＭＩＩ）と、（ｉｉ）物理媒体アタッチメント（ＰＭＡ）レイヤとの間のインタフェースとして動作する。
【０００４】
ＰＣＳは通常、エンコーダおよびデコーダを含む。ＰＣＳはまた、スクランブラおよびギアボックス等の他のコンポーネントを含むことがある。ＰＭＡレイヤにおけるアナログ回路が、（ｉ）複数の参照クロック、または（ｉｉ）複数のバス幅に基づいて実行されるよう設計されている場合、ギアボックスは必要ではない。基本的に、ギアボックスはアナログ回路の制約を克服するためのデジタルソリューションとして使用される。エンコーダは、データフォーマッティングを提供し、データをデータおよび制御コードから成るバイトに編成する。エンコーダによって実行されるエンコーディングは、６４／６６ビットエンコーディングとして呼ばれることがあるが、その場合、６４ビットがエンコーダに提供され、エンコーダから６６ビットが出力される。当該６６ビットには、２ビット同期（ＳＹＮＣ）ヘッダが含まれる。スクランブラはラインバランシングを実行し、十分な遷移密度を保証する。これには、スクランブラの出力において１と０との比較的均一な分布を提供することを含んでよい。ギアボックスの機能は、アプリケーション特有である。ギアボックスは、ギアボックスの入力と出力との速度差を調整するために使用されるバッファを含んでよい。ギアボックスは、シリアライザ／デシリアライザ（ＳＥＲＤＥＳ）のデータ幅をフォーマットし得る。例えば、ギアボックスは、６６ビット信号を１６ビットインタフェース信号に変換し得る。その後、ＳＥＲＤＥＳはこの１６ビットインタフェース信号を完全なシリアル信号に変換し得る。ギアボックスは、２ビットＳＹＮＣヘッダをスクランブラの出力と結合し得る。
【０００５】
ＰＣＳは、参照により本明細書に組み込まれるＩｎｓｔｉｔｕｔｅ  ｏｆ  Ｅｌｅｃｔｒｉｃａｌ  ａｎｄ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｅｎｇｉｎｅｅｒｓ（ＩＥＥＥ）のセクション８０２．３に記載の１０ＧＢＡＳＥ−Ｒ規格に基づき実装され得る。１０ＧＢＡＳＥ−Ｒ規格は、低オーバヘッドを有する６４／６６ビットエンコーディングを実装する。１０ＧＢＡＳＥ−Ｒ規格は、エンコードされたブロック内の制御コードの配置を制限する。これにより、複数の独立した通信チャネルから受信される、集約されたデータおよび制御コードから成るバイトが予め定められた順序で受信されない場合のエンコーディングを阻止する。制御コードがデータバイトに対し、特定の位置にある場合、データおよび制御コードから成るバイトは、予め定められた順序で受信される。換言すれば、１０ＧＢＡＳＥ−Ｒ規格に従い設計されたエンコーダは、恣意的なまたは不明な順序で受信されるデータおよび制御コードから成るバイトをエンコードできないことがある。
【発明の概要】
【０００６】
インタフェースおよびエンコーダを含むデータ処理システムが提供される。インタフェースは、１または複数のポートから複数の第１のシンボルを受信するよう構成される。インタフェースは、複数の第２のシンボルを提供すべく、予め定められた数の複数の第１のシンボルを集約するよう構成される。エンコーダは、（ｉ）ヘッダを生成し、（ｉｉ）複数の第３のシンボルを生成すべく、複数の第２のシンボルをエンコードするよう構成され、ヘッダは、複数の第３のシンボルが制御コードのセットを含むかどうかを示す。制御コードのセットを含む複数の第３のシンボルに応じ、エンコーダは制御コードのセットのためのポインタを生成するよう構成されており、ここでポインタは制御コードのセット内にあるものより多くの値を前提とし得る。
【０００７】
他の特徴として、１または複数のポートから複数の第１のシンボルをインタフェースにおいて受信する段階と、複数の第２のシンボルを提供すべく、予め定められた数の複数の第１のシンボルを集約する段階と、ヘッダを生成する段階と、複数の第３のシンボルを生成すべく、複数の第２のシンボルをエンコーディングする段階と、を備える方法が提供される。ヘッダは、複数の第３のシンボルが制御コードのセットを含むかどうかを示す。エンコーダは、制御コードのセットを含む複数の第３のシンボルに応じ、制御コードのセットのためのポインタを生成するよう構成される。ポインタは、制御コードのセット内にあるものより多くのビットを有する。
【０００８】
本開示のさらなる適用可能性は、詳細な説明、特許請求の範囲および添付図面から明らかになるであろう。詳細な説明および具体的な例は、専ら説明を意図しており、本開示の範囲を限定することを意図していない。
【０００９】
本開示は、詳細な説明および以下の添付図面から十分理解されるようになるだろう。
【００１０】
添付図面中、参照符号は類似および／または同一の要素を示すべく、繰り替えし利用されることがある。
【図面の簡単な説明】
【００１１】
【図１】本開示による、開放型システム間相互接続（ＯＳＩ）モデルおよびデータリンクレイヤと物理レイヤのサブレイヤを示す。
【００１２】
【図２】本開示による、ＰＣＳのトランシーバデバイスの機能ブロック図である。
【００１３】
【図３】先行技術による、６４／６６ビットエンコーディングを使用してエンコードされたブロック内の制御コードとデータバイトとの組み合わせを示す。
【００１４】
【図４】本開示による、エンコーダを有するＰＣＳ内のデータ処理システムの機能ブロック図である。
【００１５】
【図５Ａ】本開示による、８個のシンボルを有する制御コードなしのエンコードされたブロックを示す。
【００１６】
【図５Ｂ】本開示による、４ビットのポインタを有する、データシンボルなしのエンコードされたブロックを示す。
【００１７】
【図５Ｃ】本開示による、制御コード、４ビットのポインタ、およびいくつかシフトされたデータシンボルを有するエンコードされたブロックを示す。
【００１８】
【図５Ｄ】本開示による、データシンボルを伴う、４ビットのポインタおよび制御コードを有するエンコードされたブロックを示す。
【００１９】
【図５Ｅ】本開示による、制御コード、４ビットのポインタおよびいくつかシフトされたデータシンボルを有するエンコードされたブロックを示す。
【００２０】
【図６Ａ】本開示による、１６個のデータシンボルを有する制御コードなしのエンコードされたブロックを示す。
【００２１】
【図６Ｂ】本開示による、５ビットのポインタを有するデータシンボルなしのエンコードされたブロックを示す。
【００２２】
【図６Ｃ】本開示による、制御コード、５ビットのポインタおよびいくつかシフトされたデータシンボルを有する別のエンコードされたブロックを示す。
【００２３】
【図７】本開示による、複数の入力ポートおよびエンコーダを有するＰＣＳ内の別のデータ処理システムの機能ブロック図である。
【００２４】
【図８】本開示による、単一の入力ポートおよびエンコーダを有するＰＣＳ内の別のデータ処理システムの機能ブロック図である。
【００２５】
【図９】本開示による、エンコーディングを含むデータ処理方法を示す。
【００２６】
【図１０】本開示による、デコーダを有するＰＣＳ内のデータ処理システムを示す。
【００２７】
【図１１】本開示による、デコーディングを含む別のデータ処理方法を示す。
【発明を実施するための形態】
【００２８】
以下に、恣意的な順序で受信されたデータおよび制御コードのエンコーディングを集約することを可能にする複数の例が開示される。データおよび制御コードは、１または複数の独立した通信チャネル上および／または１または複数の入力ポートを介して受信されてよい。
【００２９】
図１は、アプリケーションレイヤ１２、プレゼンテーションレイヤ１４、セッションレイヤ１６、トランスポートレイヤ１８、ネットワークレイヤ２０、データリンクレイヤ２２および物理（ＰＨＹ）レイヤ２４を有するＯＳＩモデル１０を示す。物理レイヤ２４は、本開示に従い構成される。データリンクレイヤ２２および物理レイヤ２４は、それぞれデータリンクレイヤデバイスおよび物理レイヤデバイスを含んでよく、および／またはそれぞれデータリンクレイヤデバイスおよび物理レイヤデバイスとして実装されてよい。データリンクレイヤ２２は、論理リンク制御（ＬＬＣ）レイヤおよび媒体アクセス制御（ＭＡＣ）レイヤ２８を含んでよい。ＭＡＣレイヤは、ＭＡＣデバイスを含んでよく、および／またはＭＡＣデバイスとして実装されてよい。レイヤ１２、１４、１６、１８、２０、２２、２４のうちの１または複数が、モバイルデバイス、ルータ、コンピュータ、アプライアンス等のようなネットワークデバイスにおいて実装されてよい。
【００３０】
ＰＨＹレイヤ２４は、媒体３０とデータの送受信を行う。ＰＨＹレイヤ２４は、複数のサブレイヤデバイスから構成されるグループ３２を含み、２つのパス３１、３３を有するよう図示されている。第２のパス３３は、オプションのＸＧＭＩＩエクステンダを有する。パス３１、３３のうち一方がデータの受信用に使用されてよく、２つのパス３１、３３のうち他方がデータの送信用に使用されてよい。複数のサブレイヤデバイスから構成されるグループ３２は、リコンシリエーションサブレイヤ３４、拡張型ギガビット媒体非依存インタフェース（ＸＧＭＩＩ）３６、物理コーディングサブレイヤ（ＰＣＳ）３８、物理媒体アタッチメント（ＰＭＡ）レイヤ４０、および物理媒体依存（ＰＭＤ）サブレイヤ４２、および媒体依存インタフェース（ＭＤＩ）４４を含む。リコンシリエーションサブレイヤ３４は、１０ギガビットイーサネット（登録商標）サブレイヤであってよい。ＰＣＳ  ３８は、ＸＧＭＩＩ  ３６から受信されるデータをエンコードし、ＸＧＭＩＩ  ３６に転送されるデータをデコードする。ＰＣＳ  ３８は、エンコードされたデータをＰＭＡ  ２２に転送し、デコードされたデータをＰＭＡ  ２２から受信する。ＰＣＳは、１ギガビット／秒（１Ｇｂ／ｓ）、１０Ｇｂ／ｓ（ＸＧＭＩＩ）、４０Ｇｂ／ｓ（ＸＬＧＭＩＩ）、１００Ｇｂ／ｓ（ＣＧＭＩＩ）等の速度または他の好適な速度で動作してよい。一例として、１Ｇｂ／ｓの速度で動作するＰＣＳは１シンボルにつき１０ビットを転送してよく、ここで８ビットはデータビットであり、２ビットは制御ビット（例えば、イネーブルビットおよびエラービット）である。別の例として、１０Ｇｂ／ｓの速度で動作するＰＣＳは１シンボルにつき３６ビットを転送してよく、ここで３２ビットはデータビットであり、４ビットは制御ビットである。さらなる別の例として、４０Ｇｂ／ｓの速度または１００Ｇｂ／ｓの速度で動作するＰＣＳは１シンボルにつき６８ビットを転送してよく、ここで６４ビットはデータビットであり、４ビットは制御ビットである。
【００３１】
図１は、１０ギガビットのイーサネット（登録商標）アプリケーション用の複数のサブレイヤデバイスから構成されるグループ３２を示すが、複数のサブレイヤデバイスから構成されるグループ３２は他の用途のために使用され、および／または修正されてよい。例えば、ＸＧＭＩＩ  ３６は、ＧＭＩＩインタフェースと置き換えられてよい。一例として、ＰＣＳ  ３８およびＧＭＩＩは、８ビット並列データラインおよびいくつかの制御ラインを介して互いに通信してよい。ＰＣＳ  ３８は、ＧＭＩＩから各データラインを介して渡される各オクテットを１０ビットコードグループにエンコーディングする役割を担う。ＰＣＳ  ３８はまた、ＰＭＡ４０から受信され、対応するＰＨＹレイヤより上層のレイヤによって使用されるためのオクテットに変換された１０ビットコードグループをデコーディングする役割を担う。
ＰＣＳ  ３８は、異なる数の並列データラインおよび任意の数の制御ラインを介してＧＭＩＩと通信してよい。各データラインおよび／または制御ラインは、１転送イベントにつき１オクテットまたは、１転送イベントにつき異なる数のビット（８ビット以外）を転送してよい。例えば、以下に示される通り、ＰＣＳ  ３８は、１転送イベントにつき１６ビットまたは３２ビットのデータを転送してよい。図１の開示されたレイヤは、それぞれ複数のモジュールとして実装されてよい。
【００３２】
図２は、送信デバイス５０（集約的にトランスミッタという）および受信デバイス５２（集約的にレシーバという）を含むＰＣＳ  ３８を示す。送信デバイス５０は、エンコーダ５４（またはエンコーディングモジュール）を含み、エンコーダ５４は、データおよび制御コードをアセンブルおよびエンコードし、本開示による送信のために、エンコードされたブロックを形成する。制御コードは、パケットおよび／またはシンボルの開始および／または終了、シンボルがアイドルシンボルであるかどうか、シンボルがエラーと関連付けられているかどうか、シンボルがイネーブルシンボルであるかどうか、並びに／または他の制御情報を示してよい。シンボルは、任意の数のビットを含んでよい。例えば、シンボルは、８、１０、１６、３２またはいくつかの他の数のビットを含んでよい。エンコーダ５４によって実行されるエンコーディングは、Ｂ１／Ｂ２ビットエンコーディングとして呼ばれることがあり、Ｂ１ビットはエンコーダ５４に提供され、Ｂ２ビットはエンコーダ５４から出力される。Ｂ２ビットは、Ｓ‐ビット同期（ＳＹＮＣ）ヘッダを含んでよい。一例として、Ｂ１が６４であってよく、Ｂ２が６６であってよく、Ｓが２であってよい。別の例として、Ｂ１が６４であってよく、Ｂ２が６５であってよく、Ｓが１であってよい。Ｂ１、Ｂ２およびＳは整数値であってよく、ここでＢ１は１より大きく、Ｂ２はＢ１より大きく、Ｓは１より大きいか１に等しい。別の例として、Ｂ１は８・Ｎに等しくてよく、Ｂ２は８・Ｎ＋Ｓに等しくてよい。ここでＮは各シンボルにおける任意のビット数であり、Ｓは１より大きいまたは１に等しい整数である。
【００３３】
エンコードされたブロックは、エンコーダ５４からスクランブラ５６（またはスクランブリングモジュール）へ送信される。スクランブラ５６は、送信のためにエンコードされたブロックを準備し、十分な遷移密度を保証する。スクランブラ５６はラインバランシングを実行し、十分な遷移密度を保証する。これには、スクランブラ５６の出力として比較的均一な１と０との分布を提供することを含んでよい。スクランブラ５６の出力はギアボックス５８（またはフォーマットモジュール）に送信される。ギアボックス５８は、特定のシリアライザ／デシリアライザ（ＳＥＲＤＥＳ）６０用にデータをフォーマットする。ギアボックス５８は、ＦＩＦＯバッファを含んでよく、ＦＩＦＯバッファは第１のデータレート（または速度）から第２のデータレート（または速度）への遷移および／またはビットパターンの幅の変更に使用される。ギアボックスの機能は、アプリケーション特有である。ギアボックス５８は、ＳＥＲＤＥＳ  ６０用にデータ幅をフォーマットしてよい。例えば、ギアボックス５８はＢ２ビットを１転送イベントにつき予め定められた数のビット（例えば、１６ビット）を含むインタフェース信号に変換してよい。その後、ＳＥＲＤＥＳ  ６０は当該インタフェース信号を完全なシリアル信号に変換してよい。ギアボックス５８は、Ｓ‐ビットＳＹＮＣヘッダをスクランブラ５６の出力と結合してよい。
【００３４】
受信デバイス５２は、ギアボックス６２、デスクランブラ６４、およびデコーダ６６を含んでよい。ギアボックス６２、デスクランブラ６４およびデコーダ６６は、ギアボックス５８、スクランブラ５６、およびエンコーダ５４と反対の処理を実行し、その結果、ギアボックス５８、スクランブラ５６およびエンコーダ５４の処理は逆順序で実行されることになる。例えば、受信された信号はギアボックス６２、デスクランブラ６４およびデコーダ６６によってデフォーマット並びに／またはデシリアライズ、デスクランブル、およびデコードされる。
【００３５】
８ビットから１０ビットへのエンコーディングについて、送信される各エンコードされたブロックは、１シンボルにつき２５６（または２８）ビットのデータの組み合わせおよび限定数の制御コードを有してよく、ここにおいて各シンボルは８ビットを有する。２ビットＳＹＮＣヘッダは、エンコードされたブロックがデータのみを含むか、または１または複数の制御コードを含むかを示してよい。ＢＡＳＥ‐Ｒタイプでは、１５個の予め定められた可能な制御コードの組み合わせがある。制御コードの組み合わせの例が図３に示されている。当該制御コードの組み合わせは、各エンコードされたブロックの第１のシンボルによって示されており、ここで各エンコードされたブロックは８個のシンボルを有する。合計で２５６＋１５＝２７１の組み合わせが存在するので、９ビット（８データビットおよび１制御ビット）がすべての有効なデータブロックのエンコードに使用されてよい。８ビットから１０ビットへのエンコーディングが実装される場合、９の代わりに１０ビット（８データビットおよび２制御ビット）が使用され、このことがオーバヘッドを増大させる。しかしながら、直流（ＤＣ）バランスを保持し、冗長ビットを介する十分な遷移が存在することを保証すべく、１０ビットが使用される。
【００３６】
８データビットについて、２８（または２５６）のビットの可能な組み合わせが存在する。１制御ビットが追加されると、２９（または５１２）の可能なビットの組み合わせが存在する。しかしながら、１シンボルにつき８データビットおよび１制御ビットを持つ８個のシンボルをエンコードするには、２５６＋８（エンコードされた各シンボルにつき１制御ビットの可能性）が必要である。同様に、１シンボルにつき８データビットおよび１制御ビットを持つ１６個のシンボルをエンコードするには、２５６＋１６（エンコードされた各シンボルにつき１制御ビットの可能性）が必要である。故に、１シンボルにつき８データビットおよび１制御ビットを持つ８個のシンボルが受信される場合、７２ビットが受信される。可逆圧縮を使用することによって、７２ビットは以下に開示の通り、６６ビット（６４のエンコードされたビットおよび２ヘッダビット）に変換可能である。１シンボルにつき８データビットおよび１制御ビットを持つ１６個のシンボルが受信される場合、８０ビットが受信される。可逆圧縮を使用することによって、８０ビットも以下の開示の通り、６６ビット（６４のエンコードされたビットおよび２ヘッダビット）に変換可能である。６４／６６ビットブロックエンコーディングは、ＩＥＥＥ  ８０２．３に従い設計された１０ＧＢＡＳＥ−Ｒ  ＰＣＳのシステムによって実装されてよい。１０ＧＢＡＳＥ−Ｒは、スクランブリングおよび定期的な遷移を介し、オーバヘッドを低減し、ＤＣバランスを実現する。
【００３７】
エンコーダ５４、スクランブラ５６、ギアボックス５８、ギアボックス６２、デスクランブラ６４およびデコーダ６６は、本明細書に開示のエンコーダ、スクランブラ、ギアボックス、デスクランブラおよびデコーダのうちの任意のものとして実装されてよい。他のエンコーダ、スクランブラ、ギアボックス、デスクランブラおよびデコーダが図４、図７、図８および図１０に示されている。
【００３８】
図３は、本明細書にその全体が参照により組み込まれるＩＥＥＥ  ８０２．３に従う従来の１０ＧＢＡＳＥ−Ｒの６４／６６ビットエンコーディングを使用してエンコードされたブロック内の制御コードおよびデータバイト（Ｄ０‐Ｄ７）の従来の組み合わせを示している。各エンコードされたブロックについて、２ビットＳＹＮＣヘッダ７０の後に、６４ビットブロック７２が続く。各６４ビットブロック７２は８バイトを有し、各バイトがデータバイト（例えば、Ｄ０‐Ｄ７のうちの１つ）または制御コードバイト（例えば、Ｃ０‐Ｃ７、Ｏ０、Ｏ４、Ｓ０、Ｓ４、Ｔ０‐Ｔ３のうちの１つ）であってよい。値「０１」を持つ２ビットＳＹＮＣヘッダ６０は、対応する６４ビットのエンコードされたブロックがデータバイトのみを有することを示す。２ビットＳＹＮＣヘッダ６０が値「１０」を有する場合、少なくとも１つの制御コードが対応する６４ビットのエンコードされたブロック内に存在する。
【００３９】
図３は、受信可能な、制御コードおよびデータバイトの限定数の順列が存在することを示す。従来のＰＣＳでは、多数の組み合わせが可能ではない。例えば、Ｃ０、Ｄ１、Ｃ２、Ｃ３、Ｄ４、Ｃ５、Ｄ６、Ｃ７の組み合わせは可能ではない。この限定により、データおよび制御コードのバイト（またはシンボル）が恣意的に受信される場合に問題を引き起こし、その結果、制御コードが任意の受信されたバイト（またはシンボル）内に位置される場合がある。例えば、データおよび制御コードの複数の独立したストリームが高速リンク内に集約される場合、制御コードはデータバイト（またはシンボル）間に恣意的に配置される可能性がある。デバイスのピン数の低減において、集約は非常に有用である。従って、従来の１０ＧＢＡＳＥ−Ｒ  ＰＣＳは、上記のような複数の独立したデータストリームが集約される必要がある場合は設計通りに使用できない。
【００４０】
図４は、ＰＣＳ（例えば、図１および図２のＰＣＳ  ３８）内のデータ処理システム１００を示している。データ処理システム１００は、送信のために構成されており、複数の入力ポート１０２、インタフェース１０４（例えば、ＧＭＩインタフェース）、エンコーダ１０６、スクランブラ１０８、ギアボックス１１０、およびＳＥＲＤＥＳ１１２を含む。複数の入力ポート１０２は、複数のデータシンボル（データのみを含む）、複数の制御コードシンボル（制御コードのみを含む）、および／または複数の組み合わせシンボル（データおよび制御コードを含む）を含む複数のシンボルをそれぞれのチャネルを介して受信する。本明細書で使用される「制御コード」とは、制御情報を示すために使用される制御ビットを指す。
【００４１】
図示の通り、４つの独立したシンボルのストリームがインタフェース１０４においてポート１０２から受信される。インタフェース１０４は、エンコードされていないブロック１１６を形成すべく、予め定められた数の受信されたシンボルおよび／またはそれらの一部を結合するマルチプレクサ１１４を含んでよい。ポート１０２から受信される複数のシンボルは、集約時にインタリーブされ、エンコードされていないブロック１１６を提供してよい。その結果、エンコードされていないブロック１１６は、ポート１０２の各々からの１または複数のシンボルを含む。エンコードされていないブロック１１６は、複数のシンボル（例えば、第１および第２のポートに関するシンボルＳｙｍｂｏｌ−ｉｎ０およびＳｙｍｂｏｌ−ｉｎ１が第１のエンコードされていないブロックに示されている）を含む。インタフェース１０４が複数のシンボルを出力する順序は、インタフェースが複数のシンボルを受信する順序に基づいてよい。換言すれば、インタフェース１０４は、ポート１０２から受信される複数の第１のシンボルをシンボルＳｙｍｂｏｌ−ｉｎ０，１，...に、インタフェース１０４がポート１０２から複数の第１のシンボルを受信する順序で変換してよい。
【００４２】
ポート１０２で受信されるシンボルは、インタフェース１０４から出力されるシンボルより大きくてよい。この場合、インタフェース１０４は圧縮を実行する。例えば、複数の受信されたシンボルはそれぞれデータビット（例えば、８データビット）および制御コードビット（２制御コードビット）を含んでよく、その結果、複数の受信されたシンボルの各々は１０ビットを有する。制御コードビットは例えば、ＴＸＥＮビットおよびＴＸＥＲビットを含んでよい。ＴＸＥＮビットは、送信イネーブルビットであり、ＴＸＥＲビットは送信エラービットである。インタフェース１０４からの複数のシンボルは、それぞれ８ビットを有してよい。例示において、エンコードされていないブロック１１６を受信した結果、エンコーダ１０６によって生成される複数のシンボルは、エンコードされたブロック１２０の一部であるＳｙｍｂｏｌ−ｏｕｔ０‐７として示されている。
【００４３】
エンコーダ１０６は、インタフェース１０４によって受信される複数のシンボル内の制御コードビットに基づいて、ＳＹＮＣヘッダ１２２および複数のポインタを生成する。ＳＹＮＣヘッダ１２２は、エンコーダ１０６からのエンコードされたブロックがデータシンボルのみを含むか、または１または複数の制御コードシンボルを含むかを示す。ＳＹＮＣヘッダ１２２は１または複数のビットを含んでよい。第１の例として、ＳＹＮＣヘッダ１２２は２ビットを含んでよく、ここで「０１」はデータシンボルのみがエンコードされたブロック内に含まれることを示し、「１０」は少なくとも１つの制御コード（または少なくとも１つの制御コードのセット）がエンコードされたブロック内に含まれることを示す。別の例として、ＳＹＮＣヘッダ１２２は、単一のビットのみを含んでよく、ここで「０」はデータシンボルのみがエンコードされたブロック内に含まれることを示し、「１」は少なくとも１つの制御コード（または少なくとも１つの制御コードのセット）がエンコードされたブロック内に含まれることを示す。ポインタは、制御コードのそれぞれのセットの位置を示す。
【００４４】
例示において、エンコーダ１０６からの各シンボルは８ビットを有してよい。複数のポインタの各々は４ビットを含む。制御コードの複数のセットの各々は、４個の制御コード（または４つの制御ビット）を有する。結果的に、複数のシンボルは２８の異なるビットの組み合わせを有してよい。複数のシンボルは、２４の異なる制御コードの組み合わせを含んでよい。エンコードされたブロックの各々は、２３のシンボルを有してよい。他のシンボルサイズ、ポインタサイズ、１シンボルごとの制御コードの数について以下記載する。
【００４５】
エンコードされたブロック１２０はスクランブラ１０８に送信される。ＳＹＮＣヘッダ１２２は、データブロックをロックオンするために、レシーバによって使用される。エンコーダ１０６はスクランブラを迂回し、ＳＹＮＣヘッダ１２２をギアボックス１１０に転送する。スクランブルされたブロックおよびＳＹＮＣヘッダ１２２の両方が、ギアボックス１１０に入力される。ギアボックス１１０からのデータは、ＳＥＲＤＥＳ１１２に送信される。スクランブラ１０８およびギアボックス１１０は、１０ＧＢＡＳＥ−Ｒ規格に従い、動作してよい。しかしながら、エンコーダ１０６によって実装されるエンコーディングは、従来の１０ＧＢＡＳＥ−Ｒデバイスによって実行されるエンコーディングとは異なる。
【００４６】
図５Ａから図５Ｅは、図４のエンコーダ１０６から出たエンコードされたブロックの例を示す。上記の通り、例示について、エンコーダ１０６から出た各シンボルは８ビットを有してよく、複数のポインタの各々は４ビットを含み、制御コードの各セットは４個の制御コードを有する。結果的に、複数のシンボルの各々は２５６ビットの組み合わせのうちの１つを有し、制御コードの複数のセットの各々は１６ビットの組み合わせのうちの１つを有する。図５Ａから図５Ｅの各々において、２行構成の表が示されている。表の第１の行は、第２の行のそれぞれの列に記入された項目を示す。第２の行は、それぞれのＳＹＮＣヘッダおよび対応するエンコードされたブロックを含む。図示の通り、エンコードされたブロックの各々は８個のシンボルを含む。シンボルの各々は図示の通り８ビットまたは異なる数のビットを有してよい。これらビットは、最下位ビットが最初に来るように順序付けられている。
【００４７】
図５Ａは、８個のシンボルを有するエンコードされたブロック１３０を示す。図５Ａの例において、エンコードされたブロック１３０は、ＳＹＮＣヘッダ１３２によって示される通り、データのみを有する。故に、エンコードされたブロック１３０はデータシンボルＤＡＴＡ０‐７を含む。図５Ｂは、データシンボルを持たない、エンコードされたブロック１４０を示し、複数の４ビットのポインタ１４２を含む。エンコードされたブロック１４０は、エンコードされたブロック１４０内に少なくとも１つの制御コードおよび／または少なくとも１つの制御コードシンボルが存在することを示す対応するＳＹＮＣヘッダ１４４を有する。４ビットのポインタの各々の後に、対応する４ビットの制御コードのセット１４６が続く。エンコードされたブロック１４０は、複数のポインタおよび制御コードの複数のセットのみを含む。エンコードされたブロック１４０は、データシンボルを含まない。ポインタビットは、エンコードされたブロック１４０のシンボルのうち、ビット０から３である。制御コードビットは、エンコードされたブロック１４０のシンボルのうち、ビット４から７である。ポインタ１４２は、対応する制御コード１４６の複数のセットの位置を示す。
【００４８】
ポインタ１４２の各々のビット０から２は、エンコードされたブロック１４０における次の対応する制御コードのセットの位置を示す。ポインタ１４２の各々のビット３は、そのポインタが示している制御コード（または制御コードのセット）の後に、追加の制御コード（または制御コードのセット）が存在するかどうかを示す。ポインタの各々は、制御コードまたは制御コードのセットおよび／またはエンコードされたブロック１４０における次の制御コードまたは制御コードのセットの位置を識別する。
【００４９】
ポインタ１４２の各々のビット０から２は、シンボルに対応する０から７のバイナリ値を有し、そこに対応する制御コード（または制御コードのセット）が位置する。例えば、ｓｙｍｂｏｌ−ｏｕｔ０のポインタ１４２−０のビット０から２は、対応する制御コードのセットがｓｙｍｂｏｌ−ｏｕｔ０に位置されていることを示す「０００」である。ｓｙｍｂｏｌ  １のポインタ１４２−１のビット０から２は、次の制御コード（または制御コードのセット）がｓｙｍｂｏｌ−ｏｕｔ１に位置されていることを示す「００１」である。ｓｙｍｂｏｌ  ０のポインタ１４２−０のビット３は、ポインタ１４２−０が示している制御コードの後に、別の制御コードが存在することを示す「１」である。ｓｙｍｂｏｌ  ７のポインタ１４２−７のビット３は、ポインタ１４２−７の制御コードの後に制御コードがこれ以上存在しないことを示す「０」である。ｓｙｍｂｏｌ  ７はエンコードされたブロック１４０の最後のシンボルなので、ｓｙｍｂｏｌ  ７のポインタ１４２−７のビット３は０に設定されてもよい。
【００５０】
図５Ｃは、４ビットのポインタ１５２、制御コードのセット１５４（集約的に制御コードと呼ばれてよい）、およびいくつかシフトされたデータシンボルＤａｔａ０‐７を含むエンコードされたブロック１５０を示す。エンコードされたブロック１５０は、対応するＳＹＮＣヘッダ１５５を有する。ｓｙｍｂｏｌ−ｏｕｔ０のポインタ１５２のビット０から２は、次の制御コードがｓｙｍｂｏｌ−ｏｕｔ２に位置されていることを示す「０１０」である。ｓｙｍｂｏｌ−ｏｕｔ０のポインタ１５２のビット３は、制御コード１５４がエンコードされたブロック１５０内の最後の制御コードであることを示す「０」である。
【００５１】
図５Ｄは、４ビットのポインタ１６２、制御コード１６４およびデータシンボル１−７を含むエンコードされたブロック１６０を示す。エンコードされたブロック１６０は、対応するＳＹＮＣヘッダ１６６を有する。データｓｙｍｂｏｌｓ１−７のすべてが、エンコードされたブロックの対応するシンボル位置の境界内に位置されている。これは、唯一の制御コードがｓｙｍｂｏｌ‐ｏｕｔ０に生じるからである。これは、図５Ｅに示されるデータシンボルとは異なっており、図５Ｅではデータシンボルのうちいくつかが、２つの隣接するシンボル位置の境界内に部分的に位置されるようシフトされている。ｓｙｍｂｏｌ‐ｏｕｔ０のポインタ１６２のビット０から２は、対応する制御コードがｓｙｍｂｏｌ‐ｏｕｔ０内に位置されていることを示す「０００」である。ｓｙｍｂｏｌ‐ｏｕｔ０のポインタ１６２のビット３は、次の制御コードはエンコードされたブロック１５０の最後の制御コードであることを示す「０」である。
【００５２】
図５Ｅは、４ビットのポインタ１７２、制御コードの複数のセット１７４、およびいくつかシフトされたデータシンボルＤａｔａ０、Ｄａｔａ２、およびＤａｔａ５を含むエンコードされたブロック１７０を示す。エンコードされたブロック１７０は対応するＳＹＮＣヘッダ１７６を有する。データシンボルＤａｔａ０、Ｄａｔａ２、およびＤａｔａ５は、前に隣接する複数のポインタおよび後に隣接する制御コードの複数のセットに起因して、複数のシンボル位置内にそれぞれ位置されている。例えば、データシンボルＤａｔａ０はＳｙｍｂｏｌ−ｏｕｔ０の第１のシンボル位置に部分的に位置され、Ｓｙｍｂｏｌ−ｏｕｔ１の第２のシンボル位置に部分的に位置されている。故に、データシンボルＤａｔａ０は、第１のシンボル位置Ｓｙｍｂｏｌ−ｏｕｔ０と第２のシンボル位置Ｓｙｍｂｏｌ−ｏｕｔ１との間の境界に重なっている。図５Ｃおよび図５Ｅにおいて、最後の制御コードより前に生じる複数のデータシンボルは、右に４ビット（または１ニブル）シフトされている。最後の制御コードの後に生じる複数のデータシンボルは、エンコードされたブロック１５０、１７０のそれぞれのシンボル位置にあり、故に、当該シンボル位置の対応する境界と揃えられている。これは、データシンボルが後続する制御コードの各セットの後に隣接するポインタまたは別の制御コードのセットの後に隣接するポインタがあるからである。
【００５３】
ｓｙｍｂｏｌ−ｏｕｔ０のポインタ１７２−０のビット０から２は、次の制御コードがｓｙｍｂｏｌ−ｏｕｔ１に位置されていることを示す「１００」である。ｓｙｍｂｏｌ−ｏｕｔ０のポインタ１７２−０のビット３は、次の制御コードがエンコードされたブロック１７０の最後の制御コードではないことを示す「１」である。エンコードされたブロック１７０の最後の制御コードでない各制御コードの後にポインタが位置されている。例えば、ポインタ１７２−２は制御コード１７４−１の後にあり、ポインタ１７２−４は制御コード１７４−３の後にある。ポインタ１７２のビット０から２は、絶対的なシンボル境界値を示し、オフセットを示さない。この理由で、ポインタ１７２は一方向を示す。
【００５４】
本明細書に開示されたエンコードされたブロックは、一連のリンクリストであってよい。データシンボルおよび制御コードは、エンコードされたブロック内の様々な位置に配置され得る。エンコードされたブロック内のシンボル位置の境界に対し、データシンボルが配置される可能な位置は２つある。最後の制御コードより前に位置されるデータシンボルは、１シンボルの半分（例えば、１ニブル）右にシフトされている。最後の制御コードより後に位置されるデータシンボルは、エンコードされたブロックのシンボル位置の対応する境界に揃えられている。従って、エンコードされたブロックのシンボル位置の境界内に配置されるデータシンボルの場所を検出するための対応するハードウェアとして２入力１出力のマルチプレクサが使用されてよい。開示された複数の例は、ＰＣＳのエンコーディング位相を改善し、Ｂ１／Ｂ２ビットエンコーディングを使用しつつ恣意的な制御コードの配置を可能にする。
【００５５】
次の図６Ａから６Ｃは、図４のエンコーダ１０６によって、または図７に示されるエンコーダ２２６によって生成され得るエンコードされたブロックを示す。図６Ａは、制御コードを持たない、１６個のデータシンボルＤａｔａ０−１５を有するエンコードされたブロック１８０を示す。上記の通り、図４のエンコーダ１０６は、様々な数のシンボルを受信および出力してよい。この例では、エンコーダ１０６は出力として１６個のデータシンボルＤａｔａ０−１５および１個のＳＹＮＣヘッダ１８２を提供している。エンコードされたブロック１８０は、ＳＹＮＣヘッダ１８２によって示される通り、データシンボルのみを含む。
【００５６】
図６Ｂは、データシンボルを持たない、複数の５ビットのポインタ１９２および制御コードの複数のセット１９４を有するエンコードされたブロック１９０を示す。ポインタの各々は、５ビット、すなわち４個のポインタビットと、制御コードの次のセットが制御コードの最後のセットであるかを示す１個のビットを含む。これは、エンコードされたブロック１９０内に１６個のシンボルを有することを説明している。制御コードの複数のセット１９４の各々は、４ビットの代わりに３ビットを有する。エンコードされたブロック１９０は、対応するＳＹＮＣヘッダ１９６を有する。図６Ｃは、５ビットのポインタ２０２、制御コードの複数のセット２０４、およびいくつかシフトされたデータシンボルＤａｔａ０、Ｄａｔａ２、Ｄａｔａ５、Ｄａｔａ８、Ｄａｔａ１０−１４を持つ別のエンコードされたブロック２００を示す。エンコードされたブロック２００は、対応するＳＹＮＣヘッダ２０６を有する。
【００５７】
図７は、ＰＣＳ（例えば、図１および図２のＰＣＳ  ３８）内の別のデータ処理システム２２０を示す。データ処理システム２２０は、複数の入力ポート２２２、インタフェース２２４（例えば、ＧＭＩインタフェース）、エンコーダ２２６、スクランブラ２２８、ギアボックス２３０、およびＳＥＲＤＥＳ  ２３２を含む。入力ポート２２２は、複数のデータシンボル、複数の制御コードシンボル、および／または複数の組み合わせシンボルを含む複数のシンボルをそれぞれのチャネルを介して受信する。図示の通り、複数の独立したシンボルのストリームがインタフェース２２４においてポート２２２から受信される。任意の数のポート２２２が含まれてよい。図示の通り、ｐｏｒｔｓ０からＲ−１が示されており、Ｒは１より大きいか１に等しい整数である。一例として、Ｒは８、１６、または３２であってよい。
【００５８】
インタフェース２２４は、エンコードされていないブロック２３６を形成すべく、予め定められた数の受信されたシンボルおよび／またはそれらの一部を結合するマルチプレクサ２３４を含んでよい。予め定められた数の受信されたシンボルは、独立したシンボルのストリームの数と異なってよい。エンコードされていないブロック２３６は、複数の入力シンボルを含む。複数の入力シンボルは、Ｐが、シンボルが最後の制御シンボルであるかを示すビットを含まない場合、（ｉ）シンボルＳｙｍｂｏｌ−ｉｎ  ０−２Ｐ−１を、またはＰが、シンボルが最後の制御シンボルであるかを示すビットを含む場合、（ｉｉ）シンボルＳｙｍｂｏｌ−ｉｎ  ０−２（Ｐ−１）を含む。変数Ｐは、ポインタビット数を示す整数である。しかしながら、シンボル数は、図７、図８、図１０に示される通り、最大２Ｐであってよい。エンコードされていないブロック２３６の各々の複数の入力シンボルは、例えば、ポート２２２の各々からの予め定められた数のシンボルを含んでよい。例えば、ポート２２２の数が８であり、エンコードされていないブロックごとの入力シンボル数が１６である場合、各エンコードされていないブロックは、ポート２２２の各々からの２、４、８、または１６個の入力シンボルを有してよい。エンコードされていないブロックごとのポート２２２の各々からの入力シンボル数は、ポート２２２の数に等しいか、または異なってよい。
【００５９】
エンコーダ２２６によって受信されるものとしてのエンコードされていないブロックにおける入力シンボルの数は、ポート数で割り切れなくてよい。別の例として、エンコードされていないブロックは１０個の入力シンボルを含んでよい。１入力シンボルごとのビット数が８である場合、エンコーダ２２６は８０ビットを受信してよく、８０＋Ｃビットを出力してよい。ここで、ＣはＳＹＮＣヘッダ２３７における制御ビットの数である。
【００６０】
ポート２２２で受信されるシンボルは、インタフェース２２４から出力されるシンボルより大きくてよい。この場合、インタフェース２２４は圧縮を実行する。例えば、複数の受信されたシンボルはそれぞれデータビット（例えば、８データビット）および制御コードビット（２制御コードビット）を含んでよく、その結果、複数の受信されたシンボルの各々は１０ビットを有する。制御コードビットは例えば、ＴＸＥＮビットおよびＴＸＥＲビットを含んでよい。インタフェース２２４からの複数のシンボルはそれぞれＮビットを有してよく、ここでＮは、１より大きいまたは１に等しい整数である。例示において、エンコードされていないブロック２３６を受信する結果、エンコーダ２２６によって生成される複数のシンボルは、Ｓｙｍｂｏｌ−ｏｕｔ  ０−２Ｐとして、およびエンコードされたブロックの一部２４０として示されており、ここでＰはエンコードされたブロック２４０のポインタの各々におけるビット数である。
【００６１】
エンコーダ２２６は、インタフェース２２４によって受信された複数のシンボル内の制御コードビットに基づき、ＳＹＮＣヘッダ２３７および複数のポインタを生成してよい。ＳＹＮＣヘッダ２３７は、エンコーダ２２６から出たエンコードされたブロックがデータシンボルのみを含むか、または１または複数の制御コードシンボルを含むかを示す。ＳＹＮＣヘッダ２３７は１または複数のビットを含んでよい。ポインタは、制御コードのそれぞれのセットの位置を示す。ポインタの各々はＰビットを含んでよく、ここでＰは１より大きいまたは１に等しい整数である。制御コードの各セットはＣ個の制御コード（またはＣ個の制御ビット）を含んでよく、ここでＣは１より大きいまたは１に等しい整数であり、ＰおよびＣの合計はＮより小さいかまたはＮに等しい。一例として、エンコーダ２２６から出た各シンボルは、Ｎビットを有してよい。結果的に、複数のシンボルは２Ｎの異なるビットの組み合わせを有してよい。複数のシンボルは、２Ｃの異なる制御コードの組み合わせを含んでよい。エンコードされたブロックの各々は、２Ｐより小さいまたは２Ｐに等しいシンボルを有してよい。
【００６２】
例示において、エンコーダ２２６から出た各シンボルはＮビットを有してよい。Ｎ＝８の場合、ポインタの各々は５ビットを含んでよく、制御コードの複数のセットの各々は、３個の制御コード（または３個の制御ビット）を含んでよい。ポインタの５番目のビットは、制御コードの次のセットが制御コードの最後のセットであるかを示してよい。結果的に、エンコードされたブロック２４０の複数のシンボルはそれぞれ、最大２８の異なるビットの組み合わせを有してよい。エンコードされたブロック２４０の複数のシンボルは、２３の異なる制御コードの組み合わせを含んでよい。
【００６３】
エンコードされたブロック２４０はスクランブラ２２８に送信される。ＳＹＮＣヘッダ２３７は、エンコードされたブロックをロックオンするために、レシーバによって使用される。エンコーダ２２６はスクランブラ２２８を迂回し、ＳＹＮＣヘッダ２３７をギアボックス２３０に転送する。スクランブルされたブロックおよびＳＹＮＣヘッダ２３７の両方が、ギアボックス２３０に入力される。ギアボックス２３０からの出力は、ＳＥＲＤＥＳ  ２３２に送信される。スクランブラ２２８およびギアボックス２３０は１０ＧＢＡＳＥ−Ｒ規格に従い、動作してよい。しかしながら、エンコーダ２２６によって実装されるエンコーディングは、従来の１０ＧＢＡＳＥ−Ｒデバイスによって実行されるエンコーディングとは異なる。
【００６４】
図８は、ＰＣＳ（例えば、図１および図２のＰＣＳ  ３８）内の別のデータ処理システム２５０を示す。データ処理システム２５０は、単一の入力ポート２５２、インタフェース２５４（例えば、ＧＭＩインタフェース）、エンコーダ２２６、スクランブラ２２８、ギアボックス２３０、およびＳＥＲＤＥＳ  ２３２を含む。入力ポート２５２は、複数のデータシンボル、複数の制御コードシンボル、および／または複数の組み合わせシンボルを含む複数のシンボルをそれぞれのチャネルを介して受信する。図示の通り、単一のシンボルのストリームがインタフェース２５４においてポート２５２から受信される。シンボルのストリーム内のパケット（または開始制御コード）の開始位置については、いかなる制約もない。一例として、シンボルのストリームは１０００メガビット／秒で動作するＭＡＣレイヤから受信されてよい。インタフェース２５４はマルチプレクサを含まない。インタフェース２５４は、ポート２５２からの予め定められた数の受信されたシンボルおよび／またはそれらの一部を結合し、エンコードされていないブロック２５６を形成する。エンコードされていないブロック２３６は、複数の入力シンボル（例えば、シンボルＳｙｍｂｏｌ−ｉｎ０−２Ｐ）を含む。
【００６５】
エンコーダ２２６によって受信されるものとして、任意の数の入力シンボルがエンコードされていないブロックに含まれてよい。別の例として、エンコードされていないブロック２３６は、１０個の入力シンボルを含んでよい。１入力シンボルごとのビット数が８である場合、エンコーダ２２６は８０ビットを受信してよく、８０＋Ｃビットを出力してよい。ここで、ＣはＳＹＮＣヘッダ２３７における制御ビットの数である。
【００６６】
ポート２５２で受信されるシンボルは、インタフェース２５４から出力されるシンボルより大きくてよい。この場合、インタフェース２５４は圧縮を実行する。インタフェース２５４からの複数のシンボルはそれぞれＮビットを有してよく、ここでＮは、１より大きいまたは１に等しい整数である。例示において、エンコードされていないブロック２５６を受信する結果、エンコーダ２２６によって生成される複数のシンボルは、Ｓｙｍｂｏｌ−ｏｕｔ  ０−２Ｐとして、およびエンコードされたブロックの一部２５８として示されており、ここでＰはエンコードされたブロック２５８の複数のポインタの各々におけるビット数である。
【００６７】
エンコーダ２２６は、インタフェース２５４によって受信された複数のシンボル内の制御コードビットに基づき、ＳＹＮＣヘッダ２６０および複数のポインタを生成する。ＳＹＮＣヘッダ２６０は、エンコーダ２２６から出たエンコードされたブロックがデータシンボルのみを含むか、または１または複数の制御コードシンボルを含むかを示す。ＳＹＮＣヘッダ２６０は１または複数のビットを含んでよい。ポインタは、制御コードのそれぞれのセットの位置を示す。ポインタの各々はＰビットを含んでよく、ここでＰは１より大きいまたは１に等しい整数である。制御コードの各セットはＣ個の制御コード（またはＣ個の制御ビット）を含んでよく、ここでＣは１より大きいまたは１に等しい整数であり、ＰおよびＣの合計はＮより小さいかまたはＮに等しい。一例として、エンコーダ２２６から出た各シンボルはＮビットを有してよい。結果的に、複数のシンボルは２Ｎの異なるビットの組み合わせを有してよい。複数のシンボルは、２Ｃの異なる制御コードの組み合わせを含んでよい。エンコードされたブロックの各々は、２Ｐより小さいまたは２Ｐに等しいシンボルを有してよい。
【００６８】
例示において、エンコーダ２２６から出た各シンボルはＮビットを有してよい。Ｎ＝８の場合、ポインタの各々は５ビットを含んでよく、制御コードの複数のセットの各々は、３個の制御コード（または３個の制御ビット）を含んでよい。結果的に、エンコードされたブロック２５８の複数のシンボルはそれぞれ、最大２８の異なるビットの組み合わせを有してよい。エンコードされたブロック２５８の複数のシンボルは、２３の異なる制御コードの組み合わせを含んでよい。
【００６９】
エンコードされたブロック２５８はスクランブラ２２８に送信される。ＳＹＮＣヘッダ２６０は、エンコードされたブロックをロックオンするために、レシーバによって使用される。エンコーダ２２６はスクランブラ２２８を迂回し、ＳＹＮＣヘッダ２６０をギアボックス２３０に転送する。スクランブルされたブロックおよびＳＹＮＣヘッダ２６０の両方が、ギアボックス２３０に入力される。ギアボックス２３０からの出力は、ＳＥＲＤＥＳ  ２３２に送信される。
【００７０】
本明細書に開示されるデータ処理システム、エンコーダ、およびデコーダは、多数の方法を使用して処理されてよく、複数の例示的な方法が図９から図１１に示されている。図９に、エンコーディングを含むデータ処理方法が示されている。以下のタスクは図１から図２および図４から図８の実装に関し主に記載されているが、当該タスクは容易に修正され、本開示の他の実装に適用され得る。当該タスクは反復的に実行されてよい。例えば、当該タスクは、生成された各エンコードされたブロックに対し反復されてよい。
【００７１】
方法は３００で開始してよい。３０２において、Ｘ個のシンボルが１または複数のポート（例えば、ポート１０２、２２２、２５２のうちの１または複数）を介してインタフェース（例えば、インタフェース１０４、２２４、２５４のうちの１つ）で受信され、ここでＸは１より大きい整数である。３０４において、インタフェースは、Ｙ個のシンボルを集約、連結、および／または多重化し、ここでＹは１より大きい整数である。
【００７２】
以下のタスク３０６から３３６がエンコーダ（例えば、エンコーダ１０６、２２６のうちの１つ）によって実行されてよい。エンコーダは、エンコードされたブロックおよびＳＹＮＣヘッダを提供すべく、Ｙ個のシンボルをエンコードする。Ｙ個のシンボルのエンコーディングは破線ボックス３０５によって示され、タスク３０６から３３６が含まれてよい。
【００７３】
３０６において、エンコーダは、１または複数の制御コード（または１または複数の制御コードのセット）がＹ個のシンボルに含まれるかどうかを判断する。１または複数の制御コードが存在する場合、タスク３０８が実行され、そうでない場合、タスク３３２が実行される。３０８において、１または複数の制御コードの存在を示すＳＹＮＣヘッダが生成される。３１０において、生成されることになるエンコードされたブロックに対する現在のシンボル位置ＳＰが０に設定される。
【００７４】
３１２において、エンコーダは現在の（または次の）制御コードのためのポインタを生成する。３１４において、エンコーダは現在の制御コードが現在のシンボル位置ＳＰに位置されることになるかどうかを判断する。現在の制御コードが現在のシンボル位置ＳＰに位置されないことになる場合、タスク３１６が実行され、そうでない場合、タスク３２２が実行される。
【００７５】
３１６において、データシンボル（または次のデータシンボル）が最後のポインタまたは制御コードに連結される。３１８において、現在のシンボル位置ＳＰがインクリメントされる。３２０において、エンコーダは現在の制御コードが現在のシンボル位置ＳＰに存在することになるかどうかを判断する。現在の制御コードが現在のシンボル位置ＳＰに存在することになる場合、タスク３２２が実行され、そうでない場合、タスク３１６が実行される。
【００７６】
３２２において、現在の制御コードが最後のデータシンボル、または最後のポインタに連結される。３２４において、現在のシンボル位置ＳＰがインクリメントされる。３２６において、エンコーダはエンコードされたブロックに追加されることになる別の制御コード（または制御コードのセット）が存在するかどうかを判断する。別の制御コードが存在しない場合、タスク３２８が実行され、そうでない場合、タスク３３６が実行される。３２８において、エンコーダは、エンコードされたブロックに別のデータシンボルが追加されることになるかどうかを判断する。別のデータシンボルが存在する場合、タスク３３０が実行され、そうでない場合、タスク３３６が実行される。３３０において、残りのデータシンボルは、最後のデータシンボルまたはエンコードされたブロックの最後の制御コードに連結されてよい。
【００７７】
３３２において、エンコーダは、エンコードされたブロックがデータシンボルのみを含み、制御コードを含まないことを示す、ＳＹＮＣヘッダを生成する。３３４において、エンコードされてよいＹ個のデータシンボルが連結される。タスク３０８から３３０またはタスク３３２から３３４を実行する結果により、Ｙ個の連結されたシンボルが提供される。タスク３３６は例示目的にのみ提供されており、実行されなくてよい。３３６において、Ｙ個の連結されたシンボルがエンコードされ、エンコードされたブロックを提供してよい。追加的または代替的に、タスク３０８から３３０若しくはタスク３３２から３３４中に実行される連結の前、または３０４において提供されるＹ個のシンボルから複数のデータシンボルを生成する間、エンコーディングが実行されてよい。結果的に、開示されるエンコーディングは、１または複数のレベルのエンコーディングを含んでよい。タスク３０８から３３０、タスク３３２から３３４および／またはタスク３３６の結果、Ｙ個のエンコードされたシンボルを有するエンコードされたブロックが提供される。
【００７８】
３３８において、スクランブラ（例えば、スクランブラ１０８、２２８のうちの１つ）が、送信のためにエンコードされたブロックの準備をし、十分な遷移密度を保証する。３４０において、スクランブラの出力がＳＥＲＤＥＳ（例えば、ＳＥＲＤＥＳデバイス１１２、２３２のうちの１つ）用にフォーマットされ、ＳＹＮＣヘッダと結合され、結合されたブロックを形成する。ＳＥＲＤＥＳは、結合されたブロックを送信のためにシリアライズする。
【００７９】
図１０は、ＰＣＳ（例えば、図１および図２のＰＣＳ  ３８）内のデータ処理システム３５０を示す。データ処理システム３５０は、ＳＥＲＤＥＳ  ３５２、ギアボックス３５４、デスクランブラ３５６、デコーダ３５８、インタフェース３６０（例えば、ＧＭＩインタフェース）および複数のポート３６２を含む。ギアボックス３５４、デスクランブラ３５６、デコーダ３５８およびインタフェース３６０は、図４、図７、図８のギアボックス１１０、２２４または２５４、スクランブラ１０８、２２８、エンコーダ１０６、２２６と反対の処理を実行してよい。
【００８０】
ＳＥＲＤＥＳ  ３５２は、受信されたシリアル信号をデシリアライズする。ギアボックス３５４は、ＳＥＲＤＥＳ  ３５２の出力をデフォーマットおよび／またはデシリアライズする。ギアボックスは、ＳＹＮＣヘッダ３６４をデコーダ３５８に出力する。デスクランブラ３５６は、エンコードされたブロック３６６のシンボルＳｙｍｂｏｌ−ｏｕｔ  ０−２Ｐを出力すべく、ギアボックス３５４の出力をデスクランブルする。シンボルＳｙｍｂｏｌ−ｏｕｔ  ０−２Ｐは、エンコーダによって前に生成されたシンボルを指す。デコーダ３５８は、ＳＹＮＣヘッダ３６４に基づいて、エンコードされたブロック３６６をデコードし、シンボルＳｙｍｂｏｌ−ｉｎ  ０−２Ｐを有するエンコードされていないブロック３７０を出力する。シンボルＳｙｍｂｏｌ−ｉｎ  ０−２Ｐは、エンコーダによって前に受信され、エンコードされたシンボルを指す。
【００８１】
インタフェース３６０は、ポート３６２の１または複数のそれぞれに、１または複数のシンボルのストリームを提供すべく、複数のシンボルから構成されるエンコードされていないブロック３７０を逆多重化するデマルチプレクサ３７２を含んでよい。
【００８２】
図１１は、デコーディングを含むデータ処理方法を示す。以下のタスクは、図１から図２、図４から８、および図１０の実装に関し主に記載されているが、当該タスクは容易に修正され、本開示の他の実装に適用され得る。当該タスクは反復的に実行されてよい。例えば、当該タスクは、受信された各エンコードされたブロックに対し反復されてよい。
【００８３】
方法は４００で開始してよい。４０２において、結合されたブロック（またはワード）がＳＥＲＤＥＳ（例えば、ＳＥＲＤＥＳ  ３５２）で受信されてよい。結合されたブロックは、フォーマットされ、エンコードされたブロックおよびＳＹＮＣヘッダを含む。４０４において、ＳＥＲＤＥＳは結合されたブロックをデシリアライズする。４０６において、デスクランブラ（例えば、デスクランブラ３５６）は、ＳＥＲＤＥＳの出力をデスクランブルする。
【００８４】
デコーダ（例えば、デコーダ３５８）がエンコードされたブロックをデコードする。エンコードされたブロックのデコーディングは破線ボックス４０５によって示され、タスク４０８から４３６を含んでよい。エンコードされたブロックのデコーディングは、Ｙ個のデコードされた出力シンボルを提供すべく、Ｙ個のエンコードされたシンボルのデコーディングを含んでよい。タスク４０８および４３６は例示目的にのみ提供されており、実行されなくてよい。タスク４０８において、Ｙ個のエンコードされたシンボルを提供すべく、デスクランブラからのエンコードされたブロックがデコードされてよく、またはデスクランブラは、タスク４１０から４３６を介してデコードされ得るＹ個のエンコードされたシンボルを提供してよい。例えば、複数のレベルのエンコーディングが前に実行された場合、タスク４０８が実行されてよい。４０６および／または４０８の結果がバッファまたはメモリに格納されてよく、その後その結果はデコーダによって読み取られてよい。バッファまたはメモリは、デスクランブラ、デコーダまたは他の場所に位置されてよい。
【００８５】
以下のタスクにおいて、各データシンボルおよび各制御コードは一度のみ読み取られてよい。４１０において、ＳＹＮＣヘッダが、Ｙ個のエンコードされたシンボル内に１または複数の制御コードが存在することを示す場合、タスク４１２が実行され、そうでない場合、タスク４３４が実行される。４１２において、デコーダは現在のシンボル位置ＳＰ＝０に設定する。これは、タスク４０８が実行されるかどうかに応じて、エンコードされたブロックまたはデコードされたブロックの現在のシンボル位置を参照する。４１４において、現在のシンボル位置の現在のポインタが読み取られる。４１６において、デコーダは、現在のポインタが、現在のシンボル位置ＳＰを示すかを判断する。現在のポインタが現在のシンボル位置ＳＰを示す場合、タスク４１８が実行され、そうでない場合、タスク４３０が実行される。
【００８６】
４１８において、デコーダは現在のシンボル位置ＳＰにおいて制御コードを読み取る。４２０において、デコーダはエンコードされたＹ個のシンボルが別の制御コードを含むかを判断する。エンコードされたＹ個のシンボルが別の制御コードを含む場合、タスク４２２が実行され、そうでない場合、タスク４２４が実行される。４２２において、現在のシンボル位置ＳＰがインクリメントされる。タスク４２２の後、タスク４１４が実行されてよい。
【００８７】
４２４において、デコーダは、受信された、結合されたブロックのエンコードされたＹ個のシンボルが、読み取られるべき（すなわち、まだ読み取られていない）データシンボル（または別のデータシンボル）を含むかを判断する。エンコードされたＹ個のシンボルが、読み取られるべきデータシンボル（または別のデータシンボル）を含む場合、タスク４２６が実行され、そうでない場合、タスク４３６が実行される。４２６において、現在のシンボル位置ＳＰがインクリメントされる。４２８において、現在のシンボル位置ＳＰのデータシンボルが読み取られる。
【００８８】
４３０において、現在のシンボル位置ＳＰおよび次のシンボル位置ＳＰ＋１に重なるデータシンボルが読み取られる。４３２において、現在のシンボル位置ＳＰがインクリメントされる。タスク４３２の後、タスク４１６が実行されてよい。４３４において、Ｙ個のエンコードされたデータシンボル内の複数のデータシンボルが読み取られる。
【００８９】
４３６において、前のタスクで読み出された複数のデータシンボルおよび複数の制御コードがまだデコードされていない場合、デコードされてよい。前のタスクで複数のデータシンボルおよび複数の制御コードが読み出されるとき、複数のデータシンボルおよび複数の制御コードのデコーディングが実行されてよい。タスク４３６が実行されなくてよい。
【００９０】
Ｙ個の連結されたシンボルを提供するよう、読み出された複数のデータシンボルおよび複数の制御コードが読み出された通りに連結されてよい。また、タスク４３６の結果はＹ個の連結されたシンボルであってよい。４３８において、インタフェース（例えば、インタフェース３６０）は、タスク４０５の結果、提供されるＹ個の連結されたシンボルを集約解除、連結解除、および／または逆多重化してよい。
【００９１】
図９から図１１の上記タスクは例示目的であり、これらのタスクは適用に応じて、重複する時間中または異なる順序で、シーケンシャルに、同期的に、同時に、連続的に実行されてよい。また、実装および／またはイベントの順に応じて、上記タスクのうち任意のものが実行されなくてよく、またはスキップされてよい。
【００９２】
上記説明は本質的に例示にすぎず、いかなる場合であっても、本開示、その用途、または使用法を限定する意図はない。本開示の広範な教示は、様々な形態で実装され得る。従って、本開示は具体例を含むが、添付図面、明細書および以下の特許請求の範囲を検討すると、他の修正形態が自明となるので、本開示の真の範囲はそのように限定されるべきでない。本明細書で使用されるＡ、Ｂ、およびＣのうちの少なくとも１つという表現は、非排他的論理ＯＲを使用して、論理（ＡまたはＢまたはＣ）を意味するものと解釈されるべきであり、「Ａのうち少なくとも１つ、Ｂのうち少なくとも１つ、および、Ｃのうち少なくとも１つ」を意味するものと解釈されるべきではない。方法における１または複数の段階は、本開示の原理を変更することなく異なる順序で（または同時に）実行可能であることが理解されるべきである。
【００９３】
本願において、以下の定義を含み、用語「モジュール」または用語「コントローラ」は、用語「回路」と置き換えられてよい。用語「モジュール」は、次のものを指してよく、または次のものの一部であってよく、または次のものを含んでよい。すなわち、特定用途向け集積回路（ＡＳＩＣ）、デジタル、アナログ若しくは混成アナログ／デジタルのディスクリート回路、デジタル、アナログ若しくは混成アナログ／デジタルの集積回路、組み合わせ論理回路、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、コードを実行するプロセッサ回路（共有、専用、またはグループ）、プロセッサ回路によって実行されるコードを格納するメモリ回路（共有、専用、またはグループ）、上記の機能を提供する他の好適なハードウェアコンポーネント、またはシステムオンチップにおけるような上記のうちのいくつかまたはすべての組み合わせである。
【００９４】
モジュールは１または複数のインタフェース回路を含んでよい。いくつかの例において、インタフェース回路は、ローカルエリアネットワーク（ＬＡＮ）、インターネット、ワイドエリアネットワーク（ＷＡＮ）、若しくはこれらの組み合わせに接続される有線または無線のインタフェースを含んでよい。本開示の任意の所与のモジュールの機能は、インタフェース回路を介して接続される複数のモジュールにわたり分散されてよい。例えば、複数のモジュールは負荷分散を許容してよい。さらなる例において、サーバ（またリモートまたはクラウドとして知られる）モジュールは、クライアントモジュールの代わりに何らかの機能を遂行してよい。
【００９５】
用語コードは上記で使用されるように、ソフトウェア、ファームウェア、および／またはマイクロコードを含んでよく、プログラム、ルーチン、関数、クラス、データ構造、および／またはオブジェクトを指してよい。共有プロセッサ回路という用語は、複数のモジュールのいくつかまたはすべてのコードを実行する単一のプロセッサ回路を包含する。グループプロセッサ回路という用語は、追加のプロセッサ回路との組み合わせにおいて、１または複数のモジュールに属するいくつかまたはすべてのコードを実行するプロセッサ回路を包含する。複数のプロセッサ回路という言及は、別個のダイ上の複数のプロセッサ回路、単一ダイ上の複数のプロセッサ回路、単一のプロセッサ回路の複数のコア、単一のプロセッサ回路の複数のスレッド、または上記のものの組み合わせを包含する。共有メモリ回路という用語は、複数のモジュールに属するいくつかまたはすべてのコードを格納する単一のメモリ回路を包含する。グループメモリ回路という用語は、追加のメモリとの組み合わせにおいて１または複数のモジュールに属するいくつかまたはすべてのコードを格納するメモリ回路を包含する。
【００９６】
メモリ回路という用語は、コンピュータ可読媒体という用語のサブセットである。本明細書で使用されるコンピュータ可読媒体という用語は、媒体（搬送波等）を介して伝播される一時的な電気または電磁信号を包含しない。コンピュータ可読媒体という用語は従って、有形および非一時的なものとみなされてよい。非一時的な有形のコンピュータ可読媒体の非限定的な例は、不揮発性メモリ回路（フラッシュメモリ回路、消去可能プログラマブルリードオンリメモリ回路、またはマスクリードオンリメモリ回路等）、揮発性メモリ回路（スタティックランダムアクセスメモリ回路またはダイナミックランダムアクセスメモリ回路等）、磁気記憶媒体（アナログ若しくはデジタル磁気テープまたはハードディスクドライブ等）、および光記憶媒体（ＣＤ、ＤＶＤ、またはブルーレイディスク等）である。
【００９７】
本願に記載の装置および方法は、コンピュータプログラムで具現される１または複数の特定の機能を実行するよう汎用コンピュータを構成することによって作成される特定用途のコンピュータによって部分的または完全に実装されてよい。上記の機能ブロック、フローチャートコンポーネント、および他の要素は、当業者またはプログラマの日常業務によってコンピュータプログラムに変換可能なソフトウェア仕様として機能する。
【００９８】
コンピュータプログラムは、少なくとも１つの非一時的な有形のコンピュータ可読媒体上に格納されるプロセッサで実行可能な命令を含む。コンピュータプログラムはまた、格納されたデータを含んでよく、または格納されたデータに依存してよい。コンピュータプログラムは、特定用途のコンピュータのハードウェアとやり取りする基本入出力システム（ＢＩＯＳ）、特定用途のコンピュータの特定のデバイスとやり取りするデバイスドライバ、１または複数のオペレーティングシステム、ユーザアプリケーション、バックグラウンドサービス、バックグラウンドアプリケーション等を包含してよい。
【００９９】
コンピュータプログラムは、（ｉ）ＨＴＭＬ（ハイパーテキストマークアップ言語）またはＸＭＬ（拡張マークアップ言語）等の解析されるべき記述テキスト、（ｉｉ）アセンブリコード、（ｉｉｉ）コンパイラによってソースコードから生成されるオブジェクトコード、（ｉｖ）インタプリタによって実行されるソースコード、（ｖ）ＪＩＴコンパイラ等によってコンパイルおよび実行されるソースコードを含んでよい。専ら例示として、ソースコードは、Ｃ、Ｃ＋＋、Ｃ＃、Ｏｂｊｅｃｔｉｖｅ  Ｃ、Ｈａｓｋｅｌｌ、Ｇｏ、ＳＱＬ、Ｒ、Ｌｉｓｐ、Ｊａｖａ（登録商標）、Ｆｏｒｔｒａｎ、Ｐｅｒｌ、Ｐａｓｃａｌ、Ｃｕｒｌ、ＯＣａｍｌ、Ｊａｖａｓｃｒｉｐｔ（登録商標）、ＨＴＭＬ５、Ａｄａ、ＡＳＰ（ａｃｔｉｖｅ  ｓｅｒｖｅｒ  ｐａｇｅｓ）、ＰＨＰ、Ｓｃａｌａ、Ｅｉｆｆｅｌ、Ｓｍａｌｌｔａｌｋ、Ｅｒｌａｎｇ、Ｒｕｂｙ、Ｆｌａｓｈ（登録商標）、Ｖｉｓｕａｌ  Ｂａｓｉｃ（登録商標）、Ｌｕａ、およびＰｙｔｈｏｎ（登録商標）を含む言語のシンタックスを使用して記述可能である。
【０１００】
特許請求の範囲に記載の構成要素はいずれも、構成要素が明示的に、「するための手段（ｍｅａｎｓ  ｆｏｒ）」という用語を使用して記載されていない限り、または方法クレームの場合、「のためのオペレーション（ｏｐｅｒａｔｉｏｎ  ｆｏｒ）」または「のためのステップ（ｓｔｅｐ  ｆｏｒ）」という用語を使用していない限り、米国特許法第１１２条（ｆ）の意味における、ミーンズプラスファンクション要素であることを意図しない。
【図１】
0006665984.tif 000002
【図２】
0006665984.tif 000003
【図３】
0006665984.tif 000004
【図４】
0006665984.tif 000005
【図５Ａ】
0006665984.tif 000006
【図５Ｂ】
0006665984.tif 000007
【図５Ｃ】
0006665984.tif 000008
【図５Ｄ】
0006665984.tif 000009
【図５Ｅ】
0006665984.tif 000010
【図６Ａ】
0006665984.tif 000011
【図６Ｂ】
0006665984.tif 000012
【図６Ｃ】
0006665984.tif 000013
【図７】
0006665984.tif 000014
【図８】
0006665984.tif 000015
【図９】
0006665984.tif 000016
【図１０】
0006665984.tif 000017
【図１１】
0006665984.tif 000018