【文献】
石田 修,瀬戸 康一郎 監修,5.3 10GBASE-Rファミリー (LAN PHY),改訂版 10ギガビットEthernet教科書 初版 10 GIGABIT ETHERNET TEXTBOOK,株式会社インプレス ネットビジネスカンパニー 井芹 昌信,2005年 4月11日,初版,p.162〜168
【文献】
William Lo,1000BASE-T1 PHY Encoder Proposal For Gigabit MAC Compatibility,2014年 3月,URL,http://www.ieee802.org/bp/public/mar14/Lo_3bp_02_0314.pdf
【文献】
IEEE Draft P802.3bp/D1.4,2015年 3月16日,URL,http://www.ieee802.org/3/bp/public/may15/tu_3bp_02a_0515.pdf
(58)【調査した分野】(Int.Cl.,DB名)
1または複数のポートから第1の複数のシンボルを受信するインタフェースであり、予め定められた数の前記第1の複数のシンボルを集約して第2の複数のシンボルを提供する、前記インタフェースと、
(i)ヘッダを生成し、(ii)前記第2の複数のシンボルをエンコードして第3の複数のシンボルを生成し、(iii)前記第3の複数のシンボルに制御コードのセットを含める場合にさらに前記制御コードのセットのためのポインタを生成するエンコーダであり、前記ヘッダは、前記第3の複数のシンボルが制御コードのセットを含むかを示し、前記第3の複数のシンボルのうちの1つが、前記制御コードのセットを含み、前記制御コードのセットが1または複数の制御ビットを含み、前記ポインタは前記制御コードのセット内にあるものより多くのビットを有し、前記ポインタのビット数と前記制御コードのセットのビット数との和は前記第3の複数のシンボルにおける各々のシンボルのビット数に等しい、前記エンコーダと、
を備えるデータ処理システム。
前記エンコーダは、前記第3の複数のシンボルのうちのいずれかにおいて複数の制御コードを選択的に含む、請求項1から3のいずれか一項に記載のデータ処理システム。
前記ポインタのうちの前記制御コードのセットが位置する前記第3の複数のシンボルのうちのシンボルを示す部分は、前記制御コードのセットよりも多くのビットを有する、請求項7に記載のデータ処理システム。
前記ポインタのうちの前記制御コードのセットが位置する前記第3の複数のシンボルのうちのシンボルを示す部分は、前記制御コードのセットよりも多くのビットを有する、請求項19に記載の方法。
【発明を実施するための形態】
【0028】
以下に、恣意的な順序で受信されたデータおよび制御コードのエンコーディングを集約することを可能にする複数の例が開示される。データおよび制御コードは、1または複数の独立した通信チャネル上および/または1または複数の入力ポートを介して受信されてよい。
【0029】
図1は、アプリケーションレイヤ12、プレゼンテーションレイヤ14、セッションレイヤ16、トランスポートレイヤ18、ネットワークレイヤ20、データリンクレイヤ22および物理(PHY)レイヤ24を有するOSIモデル10を示す。物理レイヤ24は、本開示に従い構成される。データリンクレイヤ22および物理レイヤ24は、それぞれデータリンクレイヤデバイスおよび物理レイヤデバイスを含んでよく、および/またはそれぞれデータリンクレイヤデバイスおよび物理レイヤデバイスとして実装されてよい。データリンクレイヤ22は、論理リンク制御(LLC)レイヤおよび媒体アクセス制御(MAC)レイヤ28を含んでよい。MACレイヤは、MACデバイスを含んでよく、および/またはMACデバイスとして実装されてよい。レイヤ12、14、16、18、20、22、24のうちの1または複数が、モバイルデバイス、ルータ、コンピュータ、アプライアンス等のようなネットワークデバイスにおいて実装されてよい。
【0030】
PHYレイヤ24は、媒体30とデータの送受信を行う。PHYレイヤ24は、複数のサブレイヤデバイスから構成されるグループ32を含み、2つのパス31、33を有するよう図示されている。第2のパス33は、オプションのXGMIIエクステンダを有する。パス31、33のうち一方がデータの受信用に使用されてよく、2つのパス31、33のうち他方がデータの送信用に使用されてよい。複数のサブレイヤデバイスから構成されるグループ32は、リコンシリエーションサブレイヤ34、拡張型ギガビット媒体非依存インタフェース(XGMII)36、物理コーディングサブレイヤ(PCS)38、物理媒体アタッチメント(PMA)レイヤ40、および物理媒体依存(PMD)サブレイヤ42、および媒体依存インタフェース(MDI)44を含む。リコンシリエーションサブレイヤ34は、10ギガビットイーサネット(登録商標)サブレイヤであってよい。PCS 38は、XGMII 36から受信されるデータをエンコードし、XGMII 36に転送されるデータをデコードする。PCS 38は、エンコードされたデータをPMA 22に転送し、デコードされたデータをPMA 22から受信する。PCSは、1ギガビット/秒(1Gb/s)、10Gb/s(XGMII)、40Gb/s(XLGMII)、100Gb/s(CGMII)等の速度または他の好適な速度で動作してよい。一例として、1Gb/sの速度で動作するPCSは1シンボルにつき10ビットを転送してよく、ここで8ビットはデータビットであり、2ビットは制御ビット(例えば、イネーブルビットおよびエラービット)である。別の例として、10Gb/sの速度で動作するPCSは1シンボルにつき36ビットを転送してよく、ここで32ビットはデータビットであり、4ビットは制御ビットである。さらなる別の例として、40Gb/sの速度または100Gb/sの速度で動作するPCSは1シンボルにつき68ビットを転送してよく、ここで64ビットはデータビットであり、4ビットは制御ビットである。
【0031】
図1は、10ギガビットのイーサネット(登録商標)アプリケーション用の複数のサブレイヤデバイスから構成されるグループ32を示すが、複数のサブレイヤデバイスから構成されるグループ32は他の用途のために使用され、および/または修正されてよい。例えば、XGMII 36は、GMIIインタフェースと置き換えられてよい。一例として、PCS 38およびGMIIは、8ビット並列データラインおよびいくつかの制御ラインを介して互いに通信してよい。PCS 38は、GMIIから各データラインを介して渡される各オクテットを10ビットコードグループにエンコーディングする役割を担う。PCS 38はまた、PMA40から受信され、対応するPHYレイヤより上層のレイヤによって使用されるためのオクテットに変換された10ビットコードグループをデコーディングする役割を担う。
PCS 38は、異なる数の並列データラインおよび任意の数の制御ラインを介してGMIIと通信してよい。各データラインおよび/または制御ラインは、1転送イベントにつき1オクテットまたは、1転送イベントにつき異なる数のビット(8ビット以外)を転送してよい。例えば、以下に示される通り、PCS 38は、1転送イベントにつき16ビットまたは32ビットのデータを転送してよい。
図1の開示されたレイヤは、それぞれ複数のモジュールとして実装されてよい。
【0032】
図2は、送信デバイス50(集約的にトランスミッタという)および受信デバイス52(集約的にレシーバという)を含むPCS 38を示す。送信デバイス50は、エンコーダ54(またはエンコーディングモジュール)を含み、エンコーダ54は、データおよび制御コードをアセンブルおよびエンコードし、本開示による送信のために、エンコードされたブロックを形成する。制御コードは、パケットおよび/またはシンボルの開始および/または終了、シンボルがアイドルシンボルであるかどうか、シンボルがエラーと関連付けられているかどうか、シンボルがイネーブルシンボルであるかどうか、並びに/または他の制御情報を示してよい。シンボルは、任意の数のビットを含んでよい。例えば、シンボルは、8、10、16、32またはいくつかの他の数のビットを含んでよい。エンコーダ54によって実行されるエンコーディングは、B1/B2ビットエンコーディングとして呼ばれることがあり、B1ビットはエンコーダ54に提供され、B2ビットはエンコーダ54から出力される。B2ビットは、S‐ビット同期(SYNC)ヘッダを含んでよい。一例として、B1が64であってよく、B2が66であってよく、Sが2であってよい。別の例として、B1が64であってよく、B2が65であってよく、Sが1であってよい。B1、B2およびSは整数値であってよく、ここでB1は1より大きく、B2はB1より大きく、Sは1より大きいか1に等しい。別の例として、B1は8・Nに等しくてよく、B2は8・N+Sに等しくてよい。ここでNは各シンボルにおける任意のビット数であり、Sは1より大きいまたは1に等しい整数である。
【0033】
エンコードされたブロックは、エンコーダ54からスクランブラ56(またはスクランブリングモジュール)へ送信される。スクランブラ56は、送信のためにエンコードされたブロックを準備し、十分な遷移密度を保証する。スクランブラ56はラインバランシングを実行し、十分な遷移密度を保証する。これには、スクランブラ56の出力として比較的均一な1と0との分布を提供することを含んでよい。スクランブラ56の出力はギアボックス58(またはフォーマットモジュール)に送信される。ギアボックス58は、特定のシリアライザ/デシリアライザ(SERDES)60用にデータをフォーマットする。ギアボックス58は、FIFOバッファを含んでよく、FIFOバッファは第1のデータレート(または速度)から第2のデータレート(または速度)への遷移および/またはビットパターンの幅の変更に使用される。ギアボックスの機能は、アプリケーション特有である。ギアボックス58は、SERDES 60用にデータ幅をフォーマットしてよい。例えば、ギアボックス58はB2ビットを1転送イベントにつき予め定められた数のビット(例えば、16ビット)を含むインタフェース信号に変換してよい。その後、SERDES 60は当該インタフェース信号を完全なシリアル信号に変換してよい。ギアボックス58は、S‐ビットSYNCヘッダをスクランブラ56の出力と結合してよい。
【0034】
受信デバイス52は、ギアボックス62、デスクランブラ64、およびデコーダ66を含んでよい。ギアボックス62、デスクランブラ64およびデコーダ66は、ギアボックス58、スクランブラ56、およびエンコーダ54と反対の処理を実行し、その結果、ギアボックス58、スクランブラ56およびエンコーダ54の処理は逆順序で実行されることになる。例えば、受信された信号はギアボックス62、デスクランブラ64およびデコーダ66によってデフォーマット並びに/またはデシリアライズ、デスクランブル、およびデコードされる。
【0035】
8ビットから10ビットへのエンコーディングについて、送信される各エンコードされたブロックは、1シンボルにつき256(または2
8)ビットのデータの組み合わせおよび限定数の制御コードを有してよく、ここにおいて各シンボルは8ビットを有する。2ビットSYNCヘッダは、エンコードされたブロックがデータのみを含むか、または1または複数の制御コードを含むかを示してよい。BASE‐Rタイプでは、15個の予め定められた可能な制御コードの組み合わせがある。制御コードの組み合わせの例が
図3に示されている。当該制御コードの組み合わせは、各エンコードされたブロックの第1のシンボルによって示されており、ここで各エンコードされたブロックは8個のシンボルを有する。合計で256+15=271の組み合わせが存在するので、9ビット(8データビットおよび1制御ビット)がすべての有効なデータブロックのエンコードに使用されてよい。8ビットから10ビットへのエンコーディングが実装される場合、9の代わりに10ビット(8データビットおよび2制御ビット)が使用され、このことがオーバヘッドを増大させる。しかしながら、直流(DC)バランスを保持し、冗長ビットを介する十分な遷移が存在することを保証すべく、10ビットが使用される。
【0036】
8データビットについて、2
8(または256)のビットの可能な組み合わせが存在する。1制御ビットが追加されると、2
9(または512)の可能なビットの組み合わせが存在する。しかしながら、1シンボルにつき8データビットおよび1制御ビットを持つ8個のシンボルをエンコードするには、256+8(エンコードされた各シンボルにつき1制御ビットの可能性)が必要である。同様に、1シンボルにつき8データビットおよび1制御ビットを持つ16個のシンボルをエンコードするには、256+16(エンコードされた各シンボルにつき1制御ビットの可能性)が必要である。故に、1シンボルにつき8データビットおよび1制御ビットを持つ8個のシンボルが受信される場合、72ビットが受信される。可逆圧縮を使用することによって、72ビットは以下に開示の通り、66ビット(64のエンコードされたビットおよび2ヘッダビット)に変換可能である。1シンボルにつき8データビットおよび1制御ビットを持つ16個のシンボルが受信される場合、80ビットが受信される。可逆圧縮を使用することによって、80ビットも以下の開示の通り、66ビット(64のエンコードされたビットおよび2ヘッダビット)に変換可能である。64/66ビットブロックエンコーディングは、IEEE 802.3に従い設計された10GBASE−R PCSのシステムによって実装されてよい。10GBASE−Rは、スクランブリングおよび定期的な遷移を介し、オーバヘッドを低減し、DCバランスを実現する。
【0037】
エンコーダ54、スクランブラ56、ギアボックス58、ギアボックス62、デスクランブラ64およびデコーダ66は、本明細書に開示のエンコーダ、スクランブラ、ギアボックス、デスクランブラおよびデコーダのうちの任意のものとして実装されてよい。他のエンコーダ、スクランブラ、ギアボックス、デスクランブラおよびデコーダが
図4、
図7、
図8および
図10に示されている。
【0038】
図3は、本明細書にその全体が参照により組み込まれるIEEE 802.3に従う従来の10GBASE−Rの64/66ビットエンコーディングを使用してエンコードされたブロック内の制御コードおよびデータバイト(D
0‐D
7)の従来の組み合わせを示している。各エンコードされたブロックについて、2ビットSYNCヘッダ70の後に、64ビットブロック72が続く。各64ビットブロック72は8バイトを有し、各バイトがデータバイト(例えば、D
0‐D
7のうちの1つ)または制御コードバイト(例えば、C
0‐C
7、O
0、O
4、S
0、S
4、T
0‐T
3のうちの1つ)であってよい。値「01」を持つ2ビットSYNCヘッダ60は、対応する64ビットのエンコードされたブロックがデータバイトのみを有することを示す。2ビットSYNCヘッダ60が値「10」を有する場合、少なくとも1つの制御コードが対応する64ビットのエンコードされたブロック内に存在する。
【0039】
図3は、受信可能な、制御コードおよびデータバイトの限定数の順列が存在することを示す。従来のPCSでは、多数の組み合わせが可能ではない。例えば、C
0、D
1、C
2、C
3、D
4、C
5、D
6、C
7の組み合わせは可能ではない。この限定により、データおよび制御コードのバイト(またはシンボル)が恣意的に受信される場合に問題を引き起こし、その結果、制御コードが任意の受信されたバイト(またはシンボル)内に位置される場合がある。例えば、データおよび制御コードの複数の独立したストリームが高速リンク内に集約される場合、制御コードはデータバイト(またはシンボル)間に恣意的に配置される可能性がある。デバイスのピン数の低減において、集約は非常に有用である。従って、従来の10GBASE−R PCSは、上記のような複数の独立したデータストリームが集約される必要がある場合は設計通りに使用できない。
【0040】
図4は、PCS(例えば、
図1および
図2のPCS 38)内のデータ処理システム100を示している。データ処理システム100は、送信のために構成されており、複数の入力ポート102、インタフェース104(例えば、GMIインタフェース)、エンコーダ106、スクランブラ108、ギアボックス110、およびSERDES112を含む。複数の入力ポート102は、複数のデータシンボル(データのみを含む)、複数の制御コードシンボル(制御コードのみを含む)、および/または複数の組み合わせシンボル(データおよび制御コードを含む)を含む複数のシンボルをそれぞれのチャネルを介して受信する。本明細書で使用される「制御コード」とは、制御情報を示すために使用される制御ビットを指す。
【0041】
図示の通り、4つの独立したシンボルのストリームがインタフェース104においてポート102から受信される。インタフェース104は、エンコードされていないブロック116を形成すべく、予め定められた数の受信されたシンボルおよび/またはそれらの一部を結合するマルチプレクサ114を含んでよい。ポート102から受信される複数のシンボルは、集約時にインタリーブされ、エンコードされていないブロック116を提供してよい。その結果、エンコードされていないブロック116は、ポート102の各々からの1または複数のシンボルを含む。エンコードされていないブロック116は、複数のシンボル(例えば、第1および第2のポートに関するシンボルSymbol−in
0およびSymbol−in
1が第1のエンコードされていないブロックに示されている)を含む。インタフェース104が複数のシンボルを出力する順序は、インタフェースが複数のシンボルを受信する順序に基づいてよい。換言すれば、インタフェース104は、ポート102から受信される複数の第1のシンボルをシンボルSymbol−in
0,1,...に、インタフェース104がポート102から複数の第1のシンボルを受信する順序で変換してよい。
【0042】
ポート102で受信されるシンボルは、インタフェース104から出力されるシンボルより大きくてよい。この場合、インタフェース104は圧縮を実行する。例えば、複数の受信されたシンボルはそれぞれデータビット(例えば、8データビット)および制御コードビット(2制御コードビット)を含んでよく、その結果、複数の受信されたシンボルの各々は10ビットを有する。制御コードビットは例えば、TXENビットおよびTXERビットを含んでよい。TXENビットは、送信イネーブルビットであり、TXERビットは送信エラービットである。インタフェース104からの複数のシンボルは、それぞれ8ビットを有してよい。例示において、エンコードされていないブロック116を受信した結果、エンコーダ106によって生成される複数のシンボルは、エンコードされたブロック120の一部であるSymbol−out
0‐7として示されている。
【0043】
エンコーダ106は、インタフェース104によって受信される複数のシンボル内の制御コードビットに基づいて、SYNCヘッダ122および複数のポインタを生成する。SYNCヘッダ122は、エンコーダ106からのエンコードされたブロックがデータシンボルのみを含むか、または1または複数の制御コードシンボルを含むかを示す。SYNCヘッダ122は1または複数のビットを含んでよい。第1の例として、SYNCヘッダ122は2ビットを含んでよく、ここで「01」はデータシンボルのみがエンコードされたブロック内に含まれることを示し、「10」は少なくとも1つの制御コード(または少なくとも1つの制御コードのセット)がエンコードされたブロック内に含まれることを示す。別の例として、SYNCヘッダ122は、単一のビットのみを含んでよく、ここで「0」はデータシンボルのみがエンコードされたブロック内に含まれることを示し、「1」は少なくとも1つの制御コード(または少なくとも1つの制御コードのセット)がエンコードされたブロック内に含まれることを示す。ポインタは、制御コードのそれぞれのセットの位置を示す。
【0044】
例示において、エンコーダ106からの各シンボルは8ビットを有してよい。複数のポインタの各々は4ビットを含む。制御コードの複数のセットの各々は、4個の制御コード(または4つの制御ビット)を有する。結果的に、複数のシンボルは2
8の異なるビットの組み合わせを有してよい。複数のシンボルは、2
4の異なる制御コードの組み合わせを含んでよい。エンコードされたブロックの各々は、2
3のシンボルを有してよい。他のシンボルサイズ、ポインタサイズ、1シンボルごとの制御コードの数について以下記載する。
【0045】
エンコードされたブロック120はスクランブラ108に送信される。SYNCヘッダ122は、データブロックをロックオンするために、レシーバによって使用される。エンコーダ106はスクランブラを迂回し、SYNCヘッダ122をギアボックス110に転送する。スクランブルされたブロックおよびSYNCヘッダ122の両方が、ギアボックス110に入力される。ギアボックス110からのデータは、SERDES112に送信される。スクランブラ108およびギアボックス110は、10GBASE−R規格に従い、動作してよい。しかしながら、エンコーダ106によって実装されるエンコーディングは、従来の10GBASE−Rデバイスによって実行されるエンコーディングとは異なる。
【0046】
図5Aから
図5Eは、
図4のエンコーダ106から出たエンコードされたブロックの例を示す。上記の通り、例示について、エンコーダ106から出た各シンボルは8ビットを有してよく、複数のポインタの各々は4ビットを含み、制御コードの各セットは4個の制御コードを有する。結果的に、複数のシンボルの各々は256ビットの組み合わせのうちの1つを有し、制御コードの複数のセットの各々は16ビットの組み合わせのうちの1つを有する。
図5Aから
図5Eの各々において、2行構成の表が示されている。表の第1の行は、第2の行のそれぞれの列に記入された項目を示す。第2の行は、それぞれのSYNCヘッダおよび対応するエンコードされたブロックを含む。図示の通り、エンコードされたブロックの各々は8個のシンボルを含む。シンボルの各々は図示の通り8ビットまたは異なる数のビットを有してよい。これらビットは、最下位ビットが最初に来るように順序付けられている。
【0047】
図5Aは、8個のシンボルを有するエンコードされたブロック130を示す。
図5Aの例において、エンコードされたブロック130は、SYNCヘッダ132によって示される通り、データのみを有する。故に、エンコードされたブロック130はデータシンボルDATA
0‐7を含む。
図5Bは、データシンボルを持たない、エンコードされたブロック140を示し、複数の4ビットのポインタ142を含む。エンコードされたブロック140は、エンコードされたブロック140内に少なくとも1つの制御コードおよび/または少なくとも1つの制御コードシンボルが存在することを示す対応するSYNCヘッダ144を有する。4ビットのポインタの各々の後に、対応する4ビットの制御コードのセット146が続く。エンコードされたブロック140は、複数のポインタおよび制御コードの複数のセットのみを含む。エンコードされたブロック140は、データシンボルを含まない。ポインタビットは、エンコードされたブロック140のシンボルのうち、ビット0から3である。制御コードビットは、エンコードされたブロック140のシンボルのうち、ビット4から7である。ポインタ142は、対応する制御コード146の複数のセットの位置を示す。
【0048】
ポインタ142の各々のビット0から2は、エンコードされたブロック140における次の対応する制御コードのセットの位置を示す。ポインタ142の各々のビット3は、そのポインタが示している制御コード(または制御コードのセット)の後に、追加の制御コード(または制御コードのセット)が存在するかどうかを示す。ポインタの各々は、制御コードまたは制御コードのセットおよび/またはエンコードされたブロック140における次の制御コードまたは制御コードのセットの位置を識別する。
【0049】
ポインタ142の各々のビット0から2は、シンボルに対応する0から7のバイナリ値を有し、そこに対応する制御コード(または制御コードのセット)が位置する。例えば、symbol−out
0のポインタ142−0のビット0から2は、対応する制御コードのセットがsymbol−out
0に位置されていることを示す「000」である。symbol 1のポインタ142−1のビット0から2は、次の制御コード(または制御コードのセット)がsymbol−out
1に位置されていることを示す「001」である。symbol 0のポインタ142−0のビット3は、ポインタ142−0が示している制御コードの後に、別の制御コードが存在することを示す「1」である。symbol 7のポインタ142−7のビット3は、ポインタ142−7の制御コードの後に制御コードがこれ以上存在しないことを示す「0」である。symbol 7はエンコードされたブロック140の最後のシンボルなので、symbol 7のポインタ142−7のビット3は0に設定されてもよい。
【0050】
図5Cは、4ビットのポインタ152、制御コードのセット154(集約的に制御コードと呼ばれてよい)、およびいくつかシフトされたデータシンボルData
0‐7を含むエンコードされたブロック150を示す。エンコードされたブロック150は、対応するSYNCヘッダ155を有する。symbol−out
0のポインタ152のビット0から2は、次の制御コードがsymbol−out
2に位置されていることを示す「010」である。symbol−out
0のポインタ152のビット3は、制御コード154がエンコードされたブロック150内の最後の制御コードであることを示す「0」である。
【0051】
図5Dは、4ビットのポインタ162、制御コード164およびデータシンボル
1−7を含むエンコードされたブロック160を示す。エンコードされたブロック160は、対応するSYNCヘッダ166を有する。データsymbols
1−7のすべてが、エンコードされたブロックの対応するシンボル位置の境界内に位置されている。これは、唯一の制御コードがsymbol‐out
0に生じるからである。これは、
図5Eに示されるデータシンボルとは異なっており、
図5Eではデータシンボルのうちいくつかが、2つの隣接するシンボル位置の境界内に部分的に位置されるようシフトされている。symbol‐out
0のポインタ162のビット0から2は、対応する制御コードがsymbol‐out
0内に位置されていることを示す「000」である。symbol‐out
0のポインタ162のビット3は、次の制御コードはエンコードされたブロック150の最後の制御コードであることを示す「0」である。
【0052】
図5Eは、4ビットのポインタ172、制御コードの複数のセット174、およびいくつかシフトされたデータシンボルData
0、Data
2、およびData
5を含むエンコードされたブロック170を示す。エンコードされたブロック170は対応するSYNCヘッダ176を有する。データシンボルData
0、Data
2、およびData
5は、前に隣接する複数のポインタおよび後に隣接する制御コードの複数のセットに起因して、複数のシンボル位置内にそれぞれ位置されている。例えば、データシンボルData
0はSymbol−out
0の第1のシンボル位置に部分的に位置され、Symbol−out
1の第2のシンボル位置に部分的に位置されている。故に、データシンボルData
0は、第1のシンボル位置Symbol−out
0と第2のシンボル位置Symbol−out
1との間の境界に重なっている。
図5Cおよび
図5Eにおいて、最後の制御コードより前に生じる複数のデータシンボルは、右に4ビット(または1ニブル)シフトされている。最後の制御コードの後に生じる複数のデータシンボルは、エンコードされたブロック150、170のそれぞれのシンボル位置にあり、故に、当該シンボル位置の対応する境界と揃えられている。これは、データシンボルが後続する制御コードの各セットの後に隣接するポインタまたは別の制御コードのセットの後に隣接するポインタがあるからである。
【0053】
symbol−out
0のポインタ172−0のビット0から2は、次の制御コードがsymbol−out
1に位置されていることを示す「100」である。symbol−out
0のポインタ172−0のビット3は、次の制御コードがエンコードされたブロック170の最後の制御コードではないことを示す「1」である。エンコードされたブロック170の最後の制御コードでない各制御コードの後にポインタが位置されている。例えば、ポインタ172−2は制御コード174−1の後にあり、ポインタ172−4は制御コード174−3の後にある。ポインタ172のビット0から2は、絶対的なシンボル境界値を示し、オフセットを示さない。この理由で、ポインタ172は一方向を示す。
【0054】
本明細書に開示されたエンコードされたブロックは、一連のリンクリストであってよい。データシンボルおよび制御コードは、エンコードされたブロック内の様々な位置に配置され得る。エンコードされたブロック内のシンボル位置の境界に対し、データシンボルが配置される可能な位置は2つある。最後の制御コードより前に位置されるデータシンボルは、1シンボルの半分(例えば、1ニブル)右にシフトされている。最後の制御コードより後に位置されるデータシンボルは、エンコードされたブロックのシンボル位置の対応する境界に揃えられている。従って、エンコードされたブロックのシンボル位置の境界内に配置されるデータシンボルの場所を検出するための対応するハードウェアとして2入力1出力のマルチプレクサが使用されてよい。開示された複数の例は、PCSのエンコーディング位相を改善し、B1/B2ビットエンコーディングを使用しつつ恣意的な制御コードの配置を可能にする。
【0055】
次の
図6Aから6Cは、
図4のエンコーダ106によって、または
図7に示されるエンコーダ226によって生成され得るエンコードされたブロックを示す。
図6Aは、制御コードを持たない、16個のデータシンボルData
0−15を有するエンコードされたブロック180を示す。上記の通り、
図4のエンコーダ106は、様々な数のシンボルを受信および出力してよい。この例では、エンコーダ106は出力として16個のデータシンボルData
0−15および1個のSYNCヘッダ182を提供している。エンコードされたブロック180は、SYNCヘッダ182によって示される通り、データシンボルのみを含む。
【0056】
図6Bは、データシンボルを持たない、複数の5ビットのポインタ192および制御コードの複数のセット194を有するエンコードされたブロック190を示す。ポインタの各々は、5ビット、すなわち4個のポインタビットと、制御コードの次のセットが制御コードの最後のセットであるかを示す1個のビットを含む。これは、エンコードされたブロック190内に16個のシンボルを有することを説明している。制御コードの複数のセット194の各々は、4ビットの代わりに3ビットを有する。エンコードされたブロック190は、対応するSYNCヘッダ196を有する。
図6Cは、5ビットのポインタ202、制御コードの複数のセット204、およびいくつかシフトされたデータシンボルData
0、Data
2、Data
5、Data
8、Data
10−14を持つ別のエンコードされたブロック200を示す。エンコードされたブロック200は、対応するSYNCヘッダ206を有する。
【0057】
図7は、PCS(例えば、
図1および
図2のPCS 38)内の別のデータ処理システム220を示す。データ処理システム220は、複数の入力ポート222、インタフェース224(例えば、GMIインタフェース)、エンコーダ226、スクランブラ228、ギアボックス230、およびSERDES 232を含む。入力ポート222は、複数のデータシンボル、複数の制御コードシンボル、および/または複数の組み合わせシンボルを含む複数のシンボルをそれぞれのチャネルを介して受信する。図示の通り、複数の独立したシンボルのストリームがインタフェース224においてポート222から受信される。任意の数のポート222が含まれてよい。図示の通り、ports
0からR−1が示されており、Rは1より大きいか1に等しい整数である。一例として、Rは8、16、または32であってよい。
【0058】
インタフェース224は、エンコードされていないブロック236を形成すべく、予め定められた数の受信されたシンボルおよび/またはそれらの一部を結合するマルチプレクサ234を含んでよい。予め定められた数の受信されたシンボルは、独立したシンボルのストリームの数と異なってよい。エンコードされていないブロック236は、複数の入力シンボルを含む。複数の入力シンボルは、Pが、シンボルが最後の制御シンボルであるかを示すビットを含まない場合、(i)シンボルSymbol−in 0−2
P−1を、またはPが、シンボルが最後の制御シンボルであるかを示すビットを含む場合、(ii)シンボルSymbol−in 0−2
(P−1)を含む。変数Pは、ポインタビット数を示す整数である。しかしながら、シンボル数は、
図7、
図8、
図10に示される通り、最大2
Pであってよい。エンコードされていないブロック236の各々の複数の入力シンボルは、例えば、ポート222の各々からの予め定められた数のシンボルを含んでよい。例えば、ポート222の数が8であり、エンコードされていないブロックごとの入力シンボル数が16である場合、各エンコードされていないブロックは、ポート222の各々からの2、4、8、または16個の入力シンボルを有してよい。エンコードされていないブロックごとのポート222の各々からの入力シンボル数は、ポート222の数に等しいか、または異なってよい。
【0059】
エンコーダ226によって受信されるものとしてのエンコードされていないブロックにおける入力シンボルの数は、ポート数で割り切れなくてよい。別の例として、エンコードされていないブロックは10個の入力シンボルを含んでよい。1入力シンボルごとのビット数が8である場合、エンコーダ226は80ビットを受信してよく、80+Cビットを出力してよい。ここで、CはSYNCヘッダ237における制御ビットの数である。
【0060】
ポート222で受信されるシンボルは、インタフェース224から出力されるシンボルより大きくてよい。この場合、インタフェース224は圧縮を実行する。例えば、複数の受信されたシンボルはそれぞれデータビット(例えば、8データビット)および制御コードビット(2制御コードビット)を含んでよく、その結果、複数の受信されたシンボルの各々は10ビットを有する。制御コードビットは例えば、TXENビットおよびTXERビットを含んでよい。インタフェース224からの複数のシンボルはそれぞれNビットを有してよく、ここでNは、1より大きいまたは1に等しい整数である。例示において、エンコードされていないブロック236を受信する結果、エンコーダ226によって生成される複数のシンボルは、Symbol−out 0−2
Pとして、およびエンコードされたブロックの一部240として示されており、ここでPはエンコードされたブロック240のポインタの各々におけるビット数である。
【0061】
エンコーダ226は、インタフェース224によって受信された複数のシンボル内の制御コードビットに基づき、SYNCヘッダ237および複数のポインタを生成してよい。SYNCヘッダ237は、エンコーダ226から出たエンコードされたブロックがデータシンボルのみを含むか、または1または複数の制御コードシンボルを含むかを示す。SYNCヘッダ237は1または複数のビットを含んでよい。ポインタは、制御コードのそれぞれのセットの位置を示す。ポインタの各々はPビットを含んでよく、ここでPは1より大きいまたは1に等しい整数である。制御コードの各セットはC個の制御コード(またはC個の制御ビット)を含んでよく、ここでCは1より大きいまたは1に等しい整数であり、PおよびCの合計はNより小さいかまたはNに等しい。一例として、エンコーダ226から出た各シンボルは、Nビットを有してよい。結果的に、複数のシンボルは2
Nの異なるビットの組み合わせを有してよい。複数のシンボルは、2
Cの異なる制御コードの組み合わせを含んでよい。エンコードされたブロックの各々は、2
Pより小さいまたは2
Pに等しいシンボルを有してよい。
【0062】
例示において、エンコーダ226から出た各シンボルはNビットを有してよい。N=8の場合、ポインタの各々は5ビットを含んでよく、制御コードの複数のセットの各々は、3個の制御コード(または3個の制御ビット)を含んでよい。ポインタの5番目のビットは、制御コードの次のセットが制御コードの最後のセットであるかを示してよい。結果的に、エンコードされたブロック240の複数のシンボルはそれぞれ、最大2
8の異なるビットの組み合わせを有してよい。エンコードされたブロック240の複数のシンボルは、2
3の異なる制御コードの組み合わせを含んでよい。
【0063】
エンコードされたブロック240はスクランブラ228に送信される。SYNCヘッダ237は、エンコードされたブロックをロックオンするために、レシーバによって使用される。エンコーダ226はスクランブラ228を迂回し、SYNCヘッダ237をギアボックス230に転送する。スクランブルされたブロックおよびSYNCヘッダ237の両方が、ギアボックス230に入力される。ギアボックス230からの出力は、SERDES 232に送信される。スクランブラ228およびギアボックス230は10GBASE−R規格に従い、動作してよい。しかしながら、エンコーダ226によって実装されるエンコーディングは、従来の10GBASE−Rデバイスによって実行されるエンコーディングとは異なる。
【0064】
図8は、PCS(例えば、
図1および
図2のPCS 38)内の別のデータ処理システム250を示す。データ処理システム250は、単一の入力ポート252、インタフェース254(例えば、GMIインタフェース)、エンコーダ226、スクランブラ228、ギアボックス230、およびSERDES 232を含む。入力ポート252は、複数のデータシンボル、複数の制御コードシンボル、および/または複数の組み合わせシンボルを含む複数のシンボルをそれぞれのチャネルを介して受信する。図示の通り、単一のシンボルのストリームがインタフェース254においてポート252から受信される。シンボルのストリーム内のパケット(または開始制御コード)の開始位置については、いかなる制約もない。一例として、シンボルのストリームは1000メガビット/秒で動作するMACレイヤから受信されてよい。インタフェース254はマルチプレクサを含まない。インタフェース254は、ポート252からの予め定められた数の受信されたシンボルおよび/またはそれらの一部を結合し、エンコードされていないブロック256を形成する。エンコードされていないブロック236は、複数の入力シンボル(例えば、シンボルSymbol−in0−2
P)を含む。
【0065】
エンコーダ226によって受信されるものとして、任意の数の入力シンボルがエンコードされていないブロックに含まれてよい。別の例として、エンコードされていないブロック236は、10個の入力シンボルを含んでよい。1入力シンボルごとのビット数が8である場合、エンコーダ226は80ビットを受信してよく、80+Cビットを出力してよい。ここで、CはSYNCヘッダ237における制御ビットの数である。
【0066】
ポート252で受信されるシンボルは、インタフェース254から出力されるシンボルより大きくてよい。この場合、インタフェース254は圧縮を実行する。インタフェース254からの複数のシンボルはそれぞれNビットを有してよく、ここでNは、1より大きいまたは1に等しい整数である。例示において、エンコードされていないブロック256を受信する結果、エンコーダ226によって生成される複数のシンボルは、Symbol−out 0−2
Pとして、およびエンコードされたブロックの一部258として示されており、ここでPはエンコードされたブロック258の複数のポインタの各々におけるビット数である。
【0067】
エンコーダ226は、インタフェース254によって受信された複数のシンボル内の制御コードビットに基づき、SYNCヘッダ260および複数のポインタを生成する。SYNCヘッダ260は、エンコーダ226から出たエンコードされたブロックがデータシンボルのみを含むか、または1または複数の制御コードシンボルを含むかを示す。SYNCヘッダ260は1または複数のビットを含んでよい。ポインタは、制御コードのそれぞれのセットの位置を示す。ポインタの各々はPビットを含んでよく、ここでPは1より大きいまたは1に等しい整数である。制御コードの各セットはC個の制御コード(またはC個の制御ビット)を含んでよく、ここでCは1より大きいまたは1に等しい整数であり、PおよびCの合計はNより小さいかまたはNに等しい。一例として、エンコーダ226から出た各シンボルはNビットを有してよい。結果的に、複数のシンボルは2
Nの異なるビットの組み合わせを有してよい。複数のシンボルは、2
Cの異なる制御コードの組み合わせを含んでよい。エンコードされたブロックの各々は、2
Pより小さいまたは2
Pに等しいシンボルを有してよい。
【0068】
例示において、エンコーダ226から出た各シンボルはNビットを有してよい。N=8の場合、ポインタの各々は5ビットを含んでよく、制御コードの複数のセットの各々は、3個の制御コード(または3個の制御ビット)を含んでよい。結果的に、エンコードされたブロック258の複数のシンボルはそれぞれ、最大2
8の異なるビットの組み合わせを有してよい。エンコードされたブロック258の複数のシンボルは、2
3の異なる制御コードの組み合わせを含んでよい。
【0069】
エンコードされたブロック258はスクランブラ228に送信される。SYNCヘッダ260は、エンコードされたブロックをロックオンするために、レシーバによって使用される。エンコーダ226はスクランブラ228を迂回し、SYNCヘッダ260をギアボックス230に転送する。スクランブルされたブロックおよびSYNCヘッダ260の両方が、ギアボックス230に入力される。ギアボックス230からの出力は、SERDES 232に送信される。
【0070】
本明細書に開示されるデータ処理システム、エンコーダ、およびデコーダは、多数の方法を使用して処理されてよく、複数の例示的な方法が
図9から
図11に示されている。
図9に、エンコーディングを含むデータ処理方法が示されている。以下のタスクは
図1から
図2および
図4から
図8の実装に関し主に記載されているが、当該タスクは容易に修正され、本開示の他の実装に適用され得る。当該タスクは反復的に実行されてよい。例えば、当該タスクは、生成された各エンコードされたブロックに対し反復されてよい。
【0071】
方法は300で開始してよい。302において、X個のシンボルが1または複数のポート(例えば、ポート102、222、252のうちの1または複数)を介してインタフェース(例えば、インタフェース104、224、254のうちの1つ)で受信され、ここでXは1より大きい整数である。304において、インタフェースは、Y個のシンボルを集約、連結、および/または多重化し、ここでYは1より大きい整数である。
【0072】
以下のタスク306から336がエンコーダ(例えば、エンコーダ106、226のうちの1つ)によって実行されてよい。エンコーダは、エンコードされたブロックおよびSYNCヘッダを提供すべく、Y個のシンボルをエンコードする。Y個のシンボルのエンコーディングは破線ボックス305によって示され、タスク306から336が含まれてよい。
【0073】
306において、エンコーダは、1または複数の制御コード(または1または複数の制御コードのセット)がY個のシンボルに含まれるかどうかを判断する。1または複数の制御コードが存在する場合、タスク308が実行され、そうでない場合、タスク332が実行される。308において、1または複数の制御コードの存在を示すSYNCヘッダが生成される。310において、生成されることになるエンコードされたブロックに対する現在のシンボル位置SPが0に設定される。
【0074】
312において、エンコーダは現在の(または次の)制御コードのためのポインタを生成する。314において、エンコーダは現在の制御コードが現在のシンボル位置SPに位置されることになるかどうかを判断する。現在の制御コードが現在のシンボル位置SPに位置されないことになる場合、タスク316が実行され、そうでない場合、タスク322が実行される。
【0075】
316において、データシンボル(または次のデータシンボル)が最後のポインタまたは制御コードに連結される。318において、現在のシンボル位置SPがインクリメントされる。320において、エンコーダは現在の制御コードが現在のシンボル位置SPに存在することになるかどうかを判断する。現在の制御コードが現在のシンボル位置SPに存在することになる場合、タスク322が実行され、そうでない場合、タスク316が実行される。
【0076】
322において、現在の制御コードが最後のデータシンボル、または最後のポインタに連結される。324において、現在のシンボル位置SPがインクリメントされる。326において、エンコーダはエンコードされたブロックに追加されることになる別の制御コード(または制御コードのセット)が存在するかどうかを判断する。別の制御コードが存在しない場合、タスク328が実行され、そうでない場合、タスク336が実行される。328において、エンコーダは、エンコードされたブロックに別のデータシンボルが追加されることになるかどうかを判断する。別のデータシンボルが存在する場合、タスク330が実行され、そうでない場合、タスク336が実行される。330において、残りのデータシンボルは、最後のデータシンボルまたはエンコードされたブロックの最後の制御コードに連結されてよい。
【0077】
332において、エンコーダは、エンコードされたブロックがデータシンボルのみを含み、制御コードを含まないことを示す、SYNCヘッダを生成する。334において、エンコードされてよいY個のデータシンボルが連結される。タスク308から330またはタスク332から334を実行する結果により、Y個の連結されたシンボルが提供される。タスク336は例示目的にのみ提供されており、実行されなくてよい。336において、Y個の連結されたシンボルがエンコードされ、エンコードされたブロックを提供してよい。追加的または代替的に、タスク308から330若しくはタスク332から334中に実行される連結の前、または304において提供されるY個のシンボルから複数のデータシンボルを生成する間、エンコーディングが実行されてよい。結果的に、開示されるエンコーディングは、1または複数のレベルのエンコーディングを含んでよい。タスク308から330、タスク332から334および/またはタスク336の結果、Y個のエンコードされたシンボルを有するエンコードされたブロックが提供される。
【0078】
338において、スクランブラ(例えば、スクランブラ108、228のうちの1つ)が、送信のためにエンコードされたブロックの準備をし、十分な遷移密度を保証する。340において、スクランブラの出力がSERDES(例えば、SERDESデバイス112、232のうちの1つ)用にフォーマットされ、SYNCヘッダと結合され、結合されたブロックを形成する。SERDESは、結合されたブロックを送信のためにシリアライズする。
【0079】
図10は、PCS(例えば、
図1および
図2のPCS 38)内のデータ処理システム350を示す。データ処理システム350は、SERDES 352、ギアボックス354、デスクランブラ356、デコーダ358、インタフェース360(例えば、GMIインタフェース)および複数のポート362を含む。ギアボックス354、デスクランブラ356、デコーダ358およびインタフェース360は、
図4、
図7、
図8のギアボックス110、224または254、スクランブラ108、228、エンコーダ106、226と反対の処理を実行してよい。
【0080】
SERDES 352は、受信されたシリアル信号をデシリアライズする。ギアボックス354は、SERDES 352の出力をデフォーマットおよび/またはデシリアライズする。ギアボックスは、SYNCヘッダ364をデコーダ358に出力する。デスクランブラ356は、エンコードされたブロック366のシンボルSymbol−out 0−2
Pを出力すべく、ギアボックス354の出力をデスクランブルする。シンボルSymbol−out 0−2
Pは、エンコーダによって前に生成されたシンボルを指す。デコーダ358は、SYNCヘッダ364に基づいて、エンコードされたブロック366をデコードし、シンボルSymbol−in 0−2
Pを有するエンコードされていないブロック370を出力する。シンボルSymbol−in 0−2
Pは、エンコーダによって前に受信され、エンコードされたシンボルを指す。
【0081】
インタフェース360は、ポート362の1または複数のそれぞれに、1または複数のシンボルのストリームを提供すべく、複数のシンボルから構成されるエンコードされていないブロック370を逆多重化するデマルチプレクサ372を含んでよい。
【0082】
図11は、デコーディングを含むデータ処理方法を示す。以下のタスクは、
図1から
図2、
図4から8、および
図10の実装に関し主に記載されているが、当該タスクは容易に修正され、本開示の他の実装に適用され得る。当該タスクは反復的に実行されてよい。例えば、当該タスクは、受信された各エンコードされたブロックに対し反復されてよい。
【0083】
方法は400で開始してよい。402において、結合されたブロック(またはワード)がSERDES(例えば、SERDES 352)で受信されてよい。結合されたブロックは、フォーマットされ、エンコードされたブロックおよびSYNCヘッダを含む。404において、SERDESは結合されたブロックをデシリアライズする。406において、デスクランブラ(例えば、デスクランブラ356)は、SERDESの出力をデスクランブルする。
【0084】
デコーダ(例えば、デコーダ358)がエンコードされたブロックをデコードする。エンコードされたブロックのデコーディングは破線ボックス405によって示され、タスク408から436を含んでよい。エンコードされたブロックのデコーディングは、Y個のデコードされた出力シンボルを提供すべく、Y個のエンコードされたシンボルのデコーディングを含んでよい。タスク408および436は例示目的にのみ提供されており、実行されなくてよい。タスク408において、Y個のエンコードされたシンボルを提供すべく、デスクランブラからのエンコードされたブロックがデコードされてよく、またはデスクランブラは、タスク410から436を介してデコードされ得るY個のエンコードされたシンボルを提供してよい。例えば、複数のレベルのエンコーディングが前に実行された場合、タスク408が実行されてよい。406および/または408の結果がバッファまたはメモリに格納されてよく、その後その結果はデコーダによって読み取られてよい。バッファまたはメモリは、デスクランブラ、デコーダまたは他の場所に位置されてよい。
【0085】
以下のタスクにおいて、各データシンボルおよび各制御コードは一度のみ読み取られてよい。410において、SYNCヘッダが、Y個のエンコードされたシンボル内に1または複数の制御コードが存在することを示す場合、タスク412が実行され、そうでない場合、タスク434が実行される。412において、デコーダは現在のシンボル位置SP=0に設定する。これは、タスク408が実行されるかどうかに応じて、エンコードされたブロックまたはデコードされたブロックの現在のシンボル位置を参照する。414において、現在のシンボル位置の現在のポインタが読み取られる。416において、デコーダは、現在のポインタが、現在のシンボル位置SPを示すかを判断する。現在のポインタが現在のシンボル位置SPを示す場合、タスク418が実行され、そうでない場合、タスク430が実行される。
【0086】
418において、デコーダは現在のシンボル位置SPにおいて制御コードを読み取る。420において、デコーダはエンコードされたY個のシンボルが別の制御コードを含むかを判断する。エンコードされたY個のシンボルが別の制御コードを含む場合、タスク422が実行され、そうでない場合、タスク424が実行される。422において、現在のシンボル位置SPがインクリメントされる。タスク422の後、タスク414が実行されてよい。
【0087】
424において、デコーダは、受信された、結合されたブロックのエンコードされたY個のシンボルが、読み取られるべき(すなわち、まだ読み取られていない)データシンボル(または別のデータシンボル)を含むかを判断する。エンコードされたY個のシンボルが、読み取られるべきデータシンボル(または別のデータシンボル)を含む場合、タスク426が実行され、そうでない場合、タスク436が実行される。426において、現在のシンボル位置SPがインクリメントされる。428において、現在のシンボル位置SPのデータシンボルが読み取られる。
【0088】
430において、現在のシンボル位置SPおよび次のシンボル位置SP+1に重なるデータシンボルが読み取られる。432において、現在のシンボル位置SPがインクリメントされる。タスク432の後、タスク416が実行されてよい。434において、Y個のエンコードされたデータシンボル内の複数のデータシンボルが読み取られる。
【0089】
436において、前のタスクで読み出された複数のデータシンボルおよび複数の制御コードがまだデコードされていない場合、デコードされてよい。前のタスクで複数のデータシンボルおよび複数の制御コードが読み出されるとき、複数のデータシンボルおよび複数の制御コードのデコーディングが実行されてよい。タスク436が実行されなくてよい。
【0090】
Y個の連結されたシンボルを提供するよう、読み出された複数のデータシンボルおよび複数の制御コードが読み出された通りに連結されてよい。また、タスク436の結果はY個の連結されたシンボルであってよい。438において、インタフェース(例えば、インタフェース360)は、タスク405の結果、提供されるY個の連結されたシンボルを集約解除、連結解除、および/または逆多重化してよい。
【0091】
図9から
図11の上記タスクは例示目的であり、これらのタスクは適用に応じて、重複する時間中または異なる順序で、シーケンシャルに、同期的に、同時に、連続的に実行されてよい。また、実装および/またはイベントの順に応じて、上記タスクのうち任意のものが実行されなくてよく、またはスキップされてよい。
【0092】
上記説明は本質的に例示にすぎず、いかなる場合であっても、本開示、その用途、または使用法を限定する意図はない。本開示の広範な教示は、様々な形態で実装され得る。従って、本開示は具体例を含むが、添付図面、明細書および以下の特許請求の範囲を検討すると、他の修正形態が自明となるので、本開示の真の範囲はそのように限定されるべきでない。本明細書で使用されるA、B、およびCのうちの少なくとも1つという表現は、非排他的論理ORを使用して、論理(AまたはBまたはC)を意味するものと解釈されるべきであり、「Aのうち少なくとも1つ、Bのうち少なくとも1つ、および、Cのうち少なくとも1つ」を意味するものと解釈されるべきではない。方法における1または複数の段階は、本開示の原理を変更することなく異なる順序で(または同時に)実行可能であることが理解されるべきである。
【0093】
本願において、以下の定義を含み、用語「モジュール」または用語「コントローラ」は、用語「回路」と置き換えられてよい。用語「モジュール」は、次のものを指してよく、または次のものの一部であってよく、または次のものを含んでよい。すなわち、特定用途向け集積回路(ASIC)、デジタル、アナログ若しくは混成アナログ/デジタルのディスクリート回路、デジタル、アナログ若しくは混成アナログ/デジタルの集積回路、組み合わせ論理回路、フィールドプログラマブルゲートアレイ(FPGA)、コードを実行するプロセッサ回路(共有、専用、またはグループ)、プロセッサ回路によって実行されるコードを格納するメモリ回路(共有、専用、またはグループ)、上記の機能を提供する他の好適なハードウェアコンポーネント、またはシステムオンチップにおけるような上記のうちのいくつかまたはすべての組み合わせである。
【0094】
モジュールは1または複数のインタフェース回路を含んでよい。いくつかの例において、インタフェース回路は、ローカルエリアネットワーク(LAN)、インターネット、ワイドエリアネットワーク(WAN)、若しくはこれらの組み合わせに接続される有線または無線のインタフェースを含んでよい。本開示の任意の所与のモジュールの機能は、インタフェース回路を介して接続される複数のモジュールにわたり分散されてよい。例えば、複数のモジュールは負荷分散を許容してよい。さらなる例において、サーバ(またリモートまたはクラウドとして知られる)モジュールは、クライアントモジュールの代わりに何らかの機能を遂行してよい。
【0095】
用語コードは上記で使用されるように、ソフトウェア、ファームウェア、および/またはマイクロコードを含んでよく、プログラム、ルーチン、関数、クラス、データ構造、および/またはオブジェクトを指してよい。共有プロセッサ回路という用語は、複数のモジュールのいくつかまたはすべてのコードを実行する単一のプロセッサ回路を包含する。グループプロセッサ回路という用語は、追加のプロセッサ回路との組み合わせにおいて、1または複数のモジュールに属するいくつかまたはすべてのコードを実行するプロセッサ回路を包含する。複数のプロセッサ回路という言及は、別個のダイ上の複数のプロセッサ回路、単一ダイ上の複数のプロセッサ回路、単一のプロセッサ回路の複数のコア、単一のプロセッサ回路の複数のスレッド、または上記のものの組み合わせを包含する。共有メモリ回路という用語は、複数のモジュールに属するいくつかまたはすべてのコードを格納する単一のメモリ回路を包含する。グループメモリ回路という用語は、追加のメモリとの組み合わせにおいて1または複数のモジュールに属するいくつかまたはすべてのコードを格納するメモリ回路を包含する。
【0096】
メモリ回路という用語は、コンピュータ可読媒体という用語のサブセットである。本明細書で使用されるコンピュータ可読媒体という用語は、媒体(搬送波等)を介して伝播される一時的な電気または電磁信号を包含しない。コンピュータ可読媒体という用語は従って、有形および非一時的なものとみなされてよい。非一時的な有形のコンピュータ可読媒体の非限定的な例は、不揮発性メモリ回路(フラッシュメモリ回路、消去可能プログラマブルリードオンリメモリ回路、またはマスクリードオンリメモリ回路等)、揮発性メモリ回路(スタティックランダムアクセスメモリ回路またはダイナミックランダムアクセスメモリ回路等)、磁気記憶媒体(アナログ若しくはデジタル磁気テープまたはハードディスクドライブ等)、および光記憶媒体(CD、DVD、またはブルーレイディスク等)である。
【0097】
本願に記載の装置および方法は、コンピュータプログラムで具現される1または複数の特定の機能を実行するよう汎用コンピュータを構成することによって作成される特定用途のコンピュータによって部分的または完全に実装されてよい。上記の機能ブロック、フローチャートコンポーネント、および他の要素は、当業者またはプログラマの日常業務によってコンピュータプログラムに変換可能なソフトウェア仕様として機能する。
【0098】
コンピュータプログラムは、少なくとも1つの非一時的な有形のコンピュータ可読媒体上に格納されるプロセッサで実行可能な命令を含む。コンピュータプログラムはまた、格納されたデータを含んでよく、または格納されたデータに依存してよい。コンピュータプログラムは、特定用途のコンピュータのハードウェアとやり取りする基本入出力システム(BIOS)、特定用途のコンピュータの特定のデバイスとやり取りするデバイスドライバ、1または複数のオペレーティングシステム、ユーザアプリケーション、バックグラウンドサービス、バックグラウンドアプリケーション等を包含してよい。
【0099】
コンピュータプログラムは、(i)HTML(ハイパーテキストマークアップ言語)またはXML(拡張マークアップ言語)等の解析されるべき記述テキスト、(ii)アセンブリコード、(iii)コンパイラによってソースコードから生成されるオブジェクトコード、(iv)インタプリタによって実行されるソースコード、(v)JITコンパイラ等によってコンパイルおよび実行されるソースコードを含んでよい。専ら例示として、ソースコードは、C、C++、C#、Objective C、Haskell、Go、SQL、R、Lisp、Java(登録商標)、Fortran、Perl、Pascal、Curl、OCaml、Javascript(登録商標)、HTML5、Ada、ASP(active server pages)、PHP、Scala、Eiffel、Smalltalk、Erlang、Ruby、Flash(登録商標)、Visual Basic(登録商標)、Lua、およびPython(登録商標)を含む言語のシンタックスを使用して記述可能である。
【0100】
特許請求の範囲に記載の構成要素はいずれも、構成要素が明示的に、「するための手段(means for)」という用語を使用して記載されていない限り、または方法クレームの場合、「のためのオペレーション(operation for)」または「のためのステップ(step for)」という用語を使用していない限り、米国特許法第112条(f)の意味における、ミーンズプラスファンクション要素であることを意図しない。