(57)【要約】【課題】  コンピューティング環境のコンピュータ処理コンポーネント間でデータを通信する際に、レイテンシを低減する。【解決手段】    本発明にかかるデータ通信アーキテクチャは、データインタフェースとシリアライザとデシリアライザとを備える。動作時、コンピュータ処理コンポーネントからのデータは、シリアライザによって受け取られる。データインタフェースと協働するシリアライザは、選択された符号化プロトコルに従って、デシリアライザに通信するためにデータを符号化する。動作上、シリアライザおよびデシリアライザ（ＳＥＲＤＥＳ）は、通信リンクまたは通信チャネルを形成するように協働する。データインタフェースは、特に、リンクの各終端からリンクを介して転送されるデータの収集を可能にし、リンク管理および制御情報を提供し、誤り保護を符号化し、通信チャネルを介してデータを処理するロジックを提供する。【選択図】図３
2005202956.tif 000002
【特許請求の範囲】
【請求項１】
シリアライザ（３００−１）とデシリアライザ（４００−１）とを採用するデータ通信アーキテクチャ（２００）を有するコンピュータシステムにおいて、破損データを処理する方法であって、
データパケットの通信のために前記シリアライザ（３００−１）とデシリアライザ（４００−１）との間の通信リンク（２１５）を確立すること、
選択された通信プロトコルに従って前記シリアライザ（３００−１）と前記デシリアライザ（４００−１）とによる前記通信リンク（２１５）を介するデータ（２３０）の送信を監視すること（１０１０）、
送信が成功しないデータを特定すること（１０１５）、および
送信が不成功だったデータを破損しているものとしてマーキングすること（１０２０）
を含む破損データを処理する方法。
【請求項２】
破損しているものとしてマーキングされた部分的なデータ小型パケットを前記シリアライザ（３００−１）から前記デシリアライザ（４００−１）に通信すること
をさらに含む請求項１に記載の破損データを処理する方法。
【請求項３】
前記シリアライザ（３００−１）により前記部分的なデータパケットを完了するためにフィラーデータを生成すること（１０３０）
をさらに含む請求項２に記載の破損データを処理する方法。
【請求項４】
破損しているものとしてマーキングされたデータを有するデータ通信トランザクションを処理すること（１０４０）
をさらに含む請求項３に記載の破損データを処理する方法。
【請求項５】
破損しているものとしてマーキングされた前記データを、前記データ通信アーキテクチャ（２００）の協働するコンポーネントに伝播すること（１０４５）
をさらに含み、
前記データ通信アーキテクチャの前記協働するコンポーネントは、破損しているものとしてマーキングされた前記データを破損データとして処理する（１０４０）
請求項１に記載の破損データを処理する方法。
【請求項６】
破損しているものとして特定されたデータに対し小型パケットマーカを付加すること
をさらに含む請求項１に記載の破損データを処理する方法。
【請求項７】
前記デシリアライザ（４００−１）によりデータ処理の一部として、いずれのデータが破損しているかを前記デシリアライザ（４００−１）に対して特定するように前記小型パケットマーカを処理すること
をさらに含む請求項６に記載の破損データを処理する方法。
【請求項８】
データが適当に送信されない場合を特定するために、前記通信リンク（２１５）を介して前記デシリアライザ（４００−１）から前記シリアライザ（３００−１）に制御信号を供給すること
をさらに含む請求項１に記載の破損データを処理する方法。
【請求項９】
ＳＥＲＤＥＳデータ通信アーキテクチャに対し破損データを処理する方法であって、
ＳＥＲＤＥＳリンクを介して成功しなかったデータトランザクションを特定すること（１０１５）、
成功しなかったトランザクションからのデータを破損しているものとしてマーキングすること（１０２０）、および
破損しているものとしてマーキングされた前記破損データを前記ＳＥＲＤＥＳデータ通信アーキテクチャにわたって伝播すること（１０４５）
を含む破損データを処理する方法。
【請求項１０】
アクティブなＳＥＲＤＥＳリンクにおいてフィラーデータを使用することにより任意の部分的なトランザクションを完了すること（１０３０）およびかかるデータを破損しているものとしてマーキングすること（１０３５）
をさらに含む請求項９に記載の破損データを処理する方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータプロセッサのためのデータ通信アーキテクチャに関し、特にシリアライザおよびデシリアライザを採用するコンピュータプロセッサのための通信アーキテクチャに関する。
【０００２】
［相互参照］
本出願は、全体的にまたは一部、以下の米国特許出願、すなわち、米国特許出願第１０／７５６，４４１号、同第１０／７５６，４３９号、同第１０／７５６，６８５号、同第１０／７５６，４３５号、同第１０／７５６，５２９号、同第１０／７５６，６６７号および同第１０／７５６，６６０号に関し、かかる出願を相互参照する。
【背景技術】
【０００３】
一般に、効率的に動作しデータを迅速に処理することができるコンピューティングアーキテクチャは、それらとは対照的なアーキテクチャよりも好まれる。
これらコンピューティングアーキテクチャがデータを処理する速度は、アーキテクチャの設計、動作状態、利用されるコンポーネントの品質ならびにコンピュータアーキテクチャがデータを処理している時に採用するプロトコル、ロジックおよび技法を含む複数の要素によって制限される可能性がある。
データ通信アーキテクチャおよびコンピューティングアーキテクチャのプロトコルからもたらされる、コンポーネントにわたるデータの通信におけるレイテンシもまた、データを処理することができる速度に影響を与える可能性がある。
【０００４】
コンピュータアーキテクチャの協働するコンポーネント間（たとえば、コンピューティング環境の処理装置内のコンピュータプロセッサまたはコンピュータプロセッサとデータ記憶ドライブ等の周辺コンポーネントとの間）でデータを通信するために、目下複数のデータ通信アーキテクチャが採用されている。
たとえば、ＩＤＥ／ＡＴＡ（内蔵ドライブエレクトロニクス／アドバンスド・テクノロジ・アタッチメント（Integrated Drive Electronics/Advanced Technology Attachment））およびＳＣＳＩ（小型コンピュータシステムインタフェース）はともに、ハードドライブ（ＣＤ−ＲＯＭおよびＤＶＤドライブ等の他の何らかのデバイスも同様）に対する一般的なインタフェースであり、各々いくつかの特色がある。
他のデータ通信アーキテクチャには、ＰＣＩ（周辺装置相互接続（Peripheral Components Interconnect））、ＡＧＰ（アクセラレーテッド・グラフィックス・ポート）、ＵＳＢ（ユニバーサル・シリアル・バス）、シリアルデータ通信ポートおよびパラレルデータ通信ポートがある。
【０００５】
上記データ通信アーキテクチャの各々は協働するコンポーネント間でデータを送信する際に有効であるが、これらのアーキテクチャの各々には、欠点および性能限界がある。
特に、かかるデータ通信アーキテクチャは、高クロック周波数（たとえば、数ギガヘルツ）で通信される大量のデータ通信を処理するようには設計されていない。
さらに、ＰＣＩ、ＩＤＥおよびＳＣＳＩデータ通信アーキテクチャは、一般に、データ通信速度全体に影響を与えるデータを通信する場合にオーバーヘッド処理計算が必要である。
言い換えれば、通信されている所望のデータに加えて、追加のオーバーヘッド処理データを通信しなければならない。
したがって、各クロックサイクル中に全データが処理されない。
【０００６】
より高帯域幅のデータ通信アーキテクチャが必要であることに応じて、ＳＥＲＤＥＳ（シリアライザ／デシリアライザ）データ通信アーキテクチャが開発された。
ＳＥＲＤＥＳは、事前に定義された方式（たとえば、８ビット／１０ビットすなわち８Ｂ１０Ｂ符号化）に従ってデータを符号化し復号するように動作する。
符号化データは、１つまたは複数の通信チャネルにより、シリアライザから対応するデシリアライザに通信され復号される。
ＳＥＲＤＥＳデータ通信アーキテクチャは、協働するコンポーネント間のデータ通信帯域幅を増大させるように示されてきた。
この文脈では、ＳＥＲＤＥＳデータ通信アーキテクチャを、データバスが協働するコンポーネント間でデータを搬送するように動作しているものとして展開する。
【発明の開示】
【課題を解決するための手段】
【０００７】
コンピューティング環境のコンピュータ処理コンポーネント間でデータを通信する際に使用され、レイテンシを低減する、シリアライザおよびデシリアライザを採用するデータ通信アーキテクチャを提供する。
例示的な実施形態では、データ通信アーキテクチャは、データインタフェースとシリアライザとデシリアライザとを備える。
動作時、コンピュータ処理コンポーネントからのデータは、シリアライザによって受け取られる。
【０００８】
データインタフェースと協働するシリアライザは、選択された符号化プロトコルに従って、デシリアライザに通信するためにデータを符号化する。
動作上、シリアライザおよびデシリアライザ（ＳＥＲＤＥＳ）は、通信リンクまたは通信チャネルを形成するように協働する。
データインタフェースは、特に、リンクの各終端からリンクを介して転送されるデータの収集を可能にし、リンク管理および制御情報を提供し、誤り保護を符号化し、通信チャネルを介してデータを処理するロジックを提供する。
【０００９】
例示的な実施態様に加えて、例示するデータ通信アーキテクチャは、さらに、リンクトレーニングステータスモニタ、リンクトレーニングモジュール、監視モジュール、データバッファ、リンクトレーニングモジュール、パリティビットモジュール、データ送信確認応答モジュールおよびデータバッファを備える。
これらのモジュールは、シリアライザおよびデシリアライザの一部を構成する。
動作時、これらのモジュールは、データインタフェースならびにシリアライザおよびデシリアライザに含まれる命令セットと協働して、限定されないが、不確実なデータ到達時刻を処理すること、シングルビットおよびマルチビット誤りを検出すること、通信リンク障害を処理すること、障害リンクトレーニングに対処すること、データを破損しているものとして特定しマーキングすること、および通信リンクにわたる成功したデータトランザクションを特定し処理することを含む機能を実現する。
【００１０】
本発明の他の特徴について以下にさらに説明する。
【００１１】
有用なデータ通信アーキテクチャおよび方法について、添付図面を参照してさらに説明する。
【発明を実施するための最良の形態】
【００１２】
［概説（overview）］
インフラストラクチャ帯域幅が必要なコンピューティング環境を提供するために、実施態様は、高周波数で動作するシリアライザ／デシリアライザ（ＳＥＲＤＥＳ）ポイントツーポイントデータ通信アーキテクチャを利用する事を考えた。
コンピューティング環境の内部データ通信インフラストラクチャにＳＥＲＤＥＳデータ通信アーキテクチャを適用する際、複数の制限が明らかとなる。
一般的に、データ通信におけるレイテンシは、非効率的なデータ通信アーキテクチャ管理から発生する。
ＳＥＲＤＥＳデータ通信アーキテクチャの管理を、特にＳＥＲＤＥＳ通信リンクに沿って通信するデータを収集し、誤り検出および誤ったデータに対する命令の処理を提供するデータインタフェースにより、実行してもよい。
【００１３】
本発明は、データ通信アーキテクチャコンポーネント間で双方向に発生する動作をサポートするＳＥＲＤＥＳリンクチャネルによって使用されるデータインタフェースを提供する。
例示的な実施態様では、リンクの各終端からＳＥＲＤＥＳリンクを介して転送されるデータを収集するメカニズムを提供する。
さらに、このフォーマットに符号化するように動作してもよい。
本明細書で説明する例示的な実施態メカニズムは、オーバレイリンク管理情報を提供し、誤り保護を符号化し、データを適当な様のデータインタフェースはまた、ＳＥＲＤＥＳコンポーネントに対し、ＳＥＲＤＥＳリンクコンポーネント間でデータを収集しかつ通信し、かかるデータが正しく収集され通信されることを検査するように命令するのを引き受けるロジックを保持する。
【００１４】
例示的なＳＥＲＤＥＳデータ通信アーキテクチャはまた、データを格納するデータバッファを利用してもよい。
動作時、データバッファを使用して、ＳＥＲＤＥＳ通信リンクの受信端からの応答により正しい受信が確認されるまでデータを格納してもよい。
かかる場合、ＳＥＲＤＥＳデータ通信アーキテクチャの協働するコンポーネント間で通信されるデータの一部として、確認応答を埋め込んでもよい。
ＳＥＲＤＥＳコンポーネントによって誤りが検出されると、データバッファを使用して誤りを訂正するデータを再送信してもよい。
【００１５】
さらに、例示的な実施態様は、複数のパラレルＳＥＲＤＥＳ通信チャネルの使用を調整してもよい。
ＳＥＲＤＥＳ通信チャネルは、ＳＥＲＤＥＳコンポーネント（たとえば、シリアライザおよびデシリアライザ）間の物理リンク（たとえばワイヤ）で動作する論理通信リンクを備えてもよい。
誤り検出、トレーニングおよび他の動作を実行する時、例示的なＳＥＲＤＥＳデータ通信アーキテクチャは、スペアチャネルを利用してもよい。
さらに、かかるスペアチャネルを使用して、チャネルのうちの１つのハード障害時でさえ通信可用性を維持することができる。
【００１６】
例示的な実施態様は、さまざまな媒体、すなわちケーブル、ＰＣトレースまたは適当なバッファファイバを駆動する柔軟性を提供し、選択された媒体と最もよく作用するように種々のリンク周波数をサポートする。
【００１７】
［例示的なコンピューティング環境］
図１は、本明細書で説明するシステムおよび方法による例示的なコンピューティングシステム１００を示す。
コンピューティングシステム１００は、種々のコンピューティングアプリケーション１８０を実行することができる。
例示的なコンピューティングシステム１００は、主に、ソフトウェアの形態であってもよいコンピュータ読取可能命令、およびかかるソフトウェアがどこに格納されまたはいかにアクセスされるかによって制御される。
かかるソフトウェアを中央処理装置（ＣＰＵ）１１０内で実行することにより、データ処理システム１００に対し作業を行わせることができる。
多くの既知のコンピュータサーバでは、ワークステーションおよびパーソナルコンピュータ中央処理装置１１０を、マイクプロセッサと呼ばれる超小型電子チップＣＰＵによって実施する。
コプロセッサ１１５は、主ＣＰＵ１１０とは別個の任意のプロセッサであり、追加の機能を実行するかまたはＣＰＵ１１０を支援する。
１つの一般的なタイプのコプロセッサは、数値または数学コプロセッサとも呼ばれる浮動小数点コプロセッサであり、汎用ＣＰＵ１１０より高速にかつより高度に数値計算を実行するように設計されている。
【００１８】
例示的なコンピューティング環境を、単一ＣＰＵ１１０を備えるように示すが、コンピューティング環境１００は複数のＣＰＵ１１０を備えてもよいため、かかる説明は単に例示的なものである、ということが理解される。
さらに、コンピューティング環境１００は、通信ネットワーク１６０または他の何らかのデータ通信手段（図示せず）を通してリモートＣＰＵ（図示せず）の資源を利用してもよい。
【００１９】
動作時、ＣＰＵ１１０は、命令をフェッチし、復号し、実行し、コンピュータの主データ転送経路、すなわちシステムバス１０５を介して他の資源にかつ他の資源から情報を転送する。
かかるシステムバスは、コンピューティングシステム１００のコンポーネントを接続し、データ交換のために媒体を定義する。
システムバス１０５は、通常、データを送信するデータラインと、アドレスを送信するアドレスラインと、割込みを送信しシステムバスを操作する制御ラインと、を有する。
かかるシステムバスの例には、ＰＣＩ（周辺装置相互接続）バスがある。
今日の高度なバスによっては、拡張カード、コントローラおよびＣＰＵ１１０によるバスへのアクセスを調整するバスアービトレーションと呼ばれる機能を提供する。
これらのバスに接続しバスを引き継ぐように調整（arbitrate）するデバイスを、バスマスタと呼ぶ。
また、バスマスタサポートにより、プロセッサとそのサポートチップを含むバスマスタアダプタを追加することによってバスのマルチプロセッサ構成を作成することができる。
【００２０】
システムバス１０５に結合されたメモリデバイスには、ランダムアクセスメモリ（ＲＡＭ）１１０とリードオンリメモリ（ＲＯＭ）１３０とがある。
かかるメモリは、情報が格納され検索されるのを可能にする回路を有する。
ＲＯＭ１３０は、一般に、変更することができない記憶データを含む。
ＲＡＭ１２５に格納されたデータは、ＣＰＵ１１０または他のハードウェアデバイスが読み出しまたは変更することができる。
ＲＡＭ１２５および／またはＲＯＭ１３０へのアクセスを、メモリコントローラ１２０によって制御してもよい。
メモリコントローラ１０５は、命令が実行される際に仮想アドレスを物理アドレスに変換するアドレス変換機能を提供してもよい。
メモリコントローラ１２０はまた、システム内のプロセスを隔離しシステムプロセスをユーザプロセスから隔離するメモリ保護機能を提供してもよい。
このため、ユーザモードで実行しているプログラムは、通常、それ自体のプロセスの仮想アドレス空間によってマッピングされるメモリにのみアクセスすることができ、プロセス間で共有するメモリがセットアップされていないかぎり、別のプロセスの仮想アドレス空間内のメモリにアクセスすることはできない。
【００２１】
さらに、コンピューティングシステム１００は、ＣＰＵ１１０からプリンタ１４０、キーボード１４５、マウス１５０およびデータ記憶ドライブ１５５等の周辺装置に命令を通信することができる周辺装置コントローラ１３５を有してもよい。
【００２２】
ディスプレイコントローラ１６３によって制御されるディスプレイ１６５を使用して、コンピューティングシステム１００によって生成された視覚的出力を表示する。
かかる視覚的出力には、テキスト、グラフィックス、アニメーショングラフィックスおよびビデオがあり得る。
ディスプレイ１６５を、ＣＲＴベースのビデオディスプレイ、ＬＣＤベースのフラットパネルディスプレイ、ガスプラズマベースのフラットパネルディスプレイ、またはタッチパネル、もしくは他のディスプレイ形態で実施してもよい。
ディスプレイコントローラ１６３は、ディスプレイ１６５に送出されるビデオ信号を生成するために必要な電子コンポーネントを有する。
【００２３】
さらに、コンピューティングシステム１００は、コンピューティングシステム１００を外部通信ネットワーク１６０に接続するために使用してもよいネットワークアダプタ１７０を含んでもよい。
通信ネットワーク１６０は、コンピュータユーザに対し、ソフトウェアおよび情報を電子的に通信し転送する手段を提供することができる。
さらに、通信ネットワーク１８５は、分散処理を提供してもよく、それには、いくつかのコンピュータと、タスクを実行する際の作業負荷の共有または協働努力とが必要である。
示したネットワーク接続は例示的なものであり、コンピュータ間で通信リンクを確立する他の手段を使用してもよい、ということが理解される。
【００２４】
例示的なコンピュータシステム１００は、本明細書で説明したシステムおよび方法が動作してもよいコンピューティング環境を単に例示するものであり、本明細書で説明した発明の概念をさまざまなコンポーネントおよび構成を有するさまざまなコンピューティング環境で実施してもよいため、異なるコンポーネントおよび構成を有するコンピューティング環境において本明細書で説明したシステムおよび方法の実施態様を限定するものではない、ということが理解される。
【００２５】
［データ通信アーキテクチャ］
図２乃至図４は、例示的なコンピューティング環境で使用される例示的なデータ通信アーキテクチャのブロック図を示す。
例示的なデータ通信アーキテクチャを、コンピューティング環境のコンポーネントとして実施してもよく、かかるアーキテクチャは、ＳＥＲＤＥＳコンポーネントを使用してもよい。
特に図２は、例示的なデータ通信アーキテクチャ２００のブロック図を示す。
図２に示すように、データ通信アーキテクチャ２００は、物理リンク２２０によりデータ２３０を通信するように協働するデータ通信インタフェースカード２０５および２１０を備える。
データインタフェース通信カード２０５および２１０は、少なくとも１つの送信コアと少なくとも１つの受信コアとを備える。
物理リンク２２０は、物理コネクタ２２５を介してデータ通信インタフェースカード２０５および２１０に接続する。
【００２６】
動作時、例示的なコンピューティング環境（図示せず）は、データ通信インタフェースカード２０５および２１０と協働して、データ通信インタフェースカード２０５および２１０間でデータを通信する。
例示的な実施態様では、データ通信インタフェースカードは、例示的なコンピューティング環境（図示せず）内の地理的に別々の場所に存在してもよく、あるいは例示的なコンピューティング環境（図示せず）のプリント回路基板（ＰＣＢ）のうちの１つの一部として存在してもよい。
図示するように、物理リンク２２０およびデータ２３０上の矢印によって示すように、データを、データ通信インタフェース２０５および２１０の送信コアと受信コアとの間で、選択された方向にまたは双方向に通信することができる。
また、異なる物理リンク２２０媒体を示すために、物理リンク２２０を線の太さが異なるように示す、ということが理解される。
【００２７】
さらに、図示するように、破線ボックス２１５は、例示的なデータ通信バックプレーンのコンポーネントを示す。
提供する実施態様では、バックプレーン２１５を、データを通信するように動作する一対の送信・受信コアを有するように示す。
特に、データは、データ通信インタフェース２０５の送信コア２３５により、物理コネクタ２２５および物理リンク２２０を通してデータ通信インタフェース２１０の受信コア２４５に通信するために処理される。
同様に、データは、データ通信インタフェース２１０の送信コア２５０により、データ通信インタフェース２０５の受信コア２４０に通信するために処理されることも可能である。
さらに、送信・受信コアの対２３５、２４０および２４５、２５０は、協働して通信チャネルを形成してもよい。
通信チャネルとして、送信・受信コアの対を、８ビット１０ビット（８Ｂ１０Ｂ）符号化等の選択された符号化プロトコルに従ってデータを処理するように割り当てかつトレーニングしてもよい。
【００２８】
さらに、図２に示すように、データ２３０は、複数のパケットを有してもよい。
特に、データ２３０は、ヘッダ部とデータパケット部とを含んでもよい。
データパケット部は、さらに、小型データパケットを含んでもよい。
提供する例示的な実施態様では、小型パケットを、標準のフルサイズのデータパケットよりサイズが小さいデータパケットとみなすことができる、ということが理解される。
動作時、さまざまなデータ、制御、トレーニングおよびチャネル管理情報を、例示的なデータ通信アーキテクチャ２００によりデータ２３０として通信することができる。
【００２９】
図３は、例示的な送信コア環境３００のブロック図を示し、そのコンポーネントとそれらの協働とを示す。
図３に示すように、例示的な送信コア環境３００は、送信コア３００−１から送信コア３００−ｎの範囲の複数の送信コアを備える。
送信コア３００−１を、ロジックブロックと、それぞれシリアライザ１からシリアライザｎまでかつドライバ１からドライバｎまでの複数のシリアライザおよびドライバと、を備えるように示す。
さらに、送信コア３００−１は、外部データ通信コンポーネント（図示せず）と協働してクロック信号ＣＬＫを取得する。
また、図示するように、送信コア３００−１は、送信コア３００−１のコンポーネント（たとえば、シリアライザ１）に対して、データ通信動作に従って機能を実行するように命令する命令セットを保持するロジックを備える。
送信コア３００−１のロジックはまた、限定されないがリンクトレーニングステータスモニタ、リンクトレーニングモジュール、監視モジュール、データバッファ、リンクトレーニングモジュール、パリティビットモジュールおよびデータ送信確認応答モジュールを含む、データ通信動作中に使用される１つまたは複数のモジュールおよびメカニズムを保持するように作用してもよい。
【００３０】
動作時、データを、送信コア３００−１のシリアライザのうちの１つに対する入力として提供する。
データを、選択された符号化プロトコルに従って符号化し、送信コアのドライバのうちの１つにより、送信コアの出力チャネルのうちの１つにおいて協働するデータ通信コンポーネントに通信するために準備する。
符号化プロトコルは、ＣＬＫ信号を使用することにより、そのＣＬＫ信号の選択されたサイクル（複数可）内で複数のビットを符号化してもよい。
たとえば、送信コア３００−１のロジックによって提供される命令により、データＡを、送信コア３００−１のシリアライザ１が、選択された符号化プロトコルに従って符号化し、ドライバ１が、通信するためにチャネルＡ出力における符号化データを生成するように準備する。
同様に、データＢを、送信コア３００−１のシリアライザ２が、選択された符号化プロトコルに従って符号化し、ドライバ２が、通信するためにチャネルＢにおける符号化データを生成するように準備してもよい。
かかる符号化プロセスとデータ通信の準備とを、送信コア３００−１の残りのシリアライザおよびドライバと送信コア環境３００の他の送信コアとにわたって実行する。
【００３１】
図４は、例示的な受信コア環境４００のブロック図を示し、そのコンポーネントとそれらの協働とを示す。
図４に示すように、例示的な受信コア４００は、受信コア４００−１から受信コア４００−ｎまでの範囲の複数の受信コアを備える。
受信コア４００−１を、ロジックブロックと、それぞれデシリアライザ１からデシリアライザｎまでかつドライバ１からドライバｎまでの複数のデシリアライザおよびドライバと、を備えるように示す。
さらに、受信コア４００−１は、外部データ通信コンポーネント（図示せず）と協働してクロック信号ＣＬＫを取得する。
また、図示するように、受信コア４００−１は、受信コア４００−１のコンポーネント（たとえば、デシリアライザ１）に対し、データ通信動作に従って機能を実行するように命令する命令セットを保持するロジックを備える。
受信コア４００−１のロジックはまた、限定されないがリンクトレーニングステータスモニタ、リンクトレーニングモジュール、監視モジュール、データバッファ、リンクトレーニングモジュール、パリティビットモジュールおよびデータ送信確認応答モジュールを含む、データ通信動作中に使用される１つまたは複数のモジュールおよびメカニズムを保持するように作用してもよい。
【００３２】
動作時、符号化データを、受信コア４００−１のデシリアライザのうちの１つに対する入力として提供する。
データを、選択された復号プロトコルに従って復号し、受信コアのドライバのうちの１つにより、受信コアのデシリアライザの出力のうちの１つにおいて協働するデータ通信コンポーネントに通信するために準備する。
復号プロトコルは、ＣＬＫ信号を使用することにより、ＣＬＫ信号の選択されたサイクル（複数可）内で複数のビットを復号してもよい。
たとえば、受信コア４００−１のロジックによって提供される命令により、符号化データＡを、受信コア４００−１のデシリアライザ１が、選択された復号プロトコルに従って復号し、ドライバ１が、通信するためにデータＡを生成するように準備してもよい。
同様に、符号化データＢを、受信コア４００−１のデシリアライザ２が、選択された復号プロトコルに従って復号し、ドライバ２が、通信するためにデータＢを生成するように準備してもよい。
かかる復号プロセスとデータ通信の準備とを、受信コア４００−１の残りのデシリアライザおよびドライバと受信コア環境４００の他の受信コアとにわたり実行する。
【００３３】
総合して図３および図４は、データを、１つまたは複数の受信コアによる復号および後続処理のために、１つまたは複数の送信コアが通信するために符号化するような、例示的な通信チャネル環境を説明する。
別々のコンポーネントとして説明するが、送信コアと受信コアとが単一の通信コンポーネント（図２のデータ通信インタフェース２０５を参照）に存在してもよい、ということが理解される。
さらに、送信コアと受信コアとは、対として動作することにより１つまたは複数の双方向データ通信チャネルを形成してもよい。
【００３４】
［通信リンクを介するデータの通信］
図５は、例示的なデータ通信アーキテクチャ２００が通信チャネルを確立する場合に実行する処理を示す。
図示するように、処理はブロック５００で開始し、ブロック５０５に進んで、動作のために通信コンポーネントを起動する。
そこから、処理はブロック５１０に進み、データ通信アーキテクチャコンポーネント間に通信リンクを確立する。
そして、ブロック５１５において、通信チャネルを形成するように通信リンクをトレーニングする。
そして、ブロック５２０において、通信チャネルをテストするために、トレーニングデータを通信チャネルにわたって送信する。
そして、ブロック５２５において、通信チャネルテストが成功したか否かを判断するために検査する。
成功した場合、処理はブロック５４０に進み、テストが成功した通信チャネルにより通信すべきデータがあるか否かを判断するために検査する。
ブロック５４０において、通信すべきデータがないと判断された場合、処理はブロック５２５に戻る。
しかしながら、テストが成功しトレーニングされた通信チャネルにより通信すべきデータがある場合、処理はブロック５４５に進み、シリアライザによりデータを符号化する。
そして、ブロック５５０において、符号化データを通信チャネルにより協働するデシリアライザに通信する。
そして、ブロック５５５において、デシリアライザによりデータを復号する。
そして、ブロック５６０において、データの通信が成功したか否かを判断するために検査する。
データの送信が成功した場合、処理はブロック５４０に戻り、そこから続行する。
しかしながら、データの通信が成功しなかった場合、処理はブロック５６５に進み、デシリアライザが、シリアライザによりデータが再送信されるように要求する。
そこから、処理はブロック５５０に戻り、そこから続行する。
【００３５】
しかしながら、ブロック５２５において、通信チャネルテストが成功しなかったと判断された場合、処理はブロック５３０に進み、通信リンクを保持する。
そこから、処理はブロック５３５に進み、通信リンクコンポーネント間で制御情報を通信する。
そこから、処理はブロック５２０に戻り、そこから続行する。
【００３６】
動作時、例示的な実施態様では、トレーニングのシーケンスを通信リンクのデシリアライザによって管理する。
特に、初期トレーニングを、デシリアライザにおける選択されたソフトウェアタイプのレジスタの書込みの指示を認識した時に完了したとみなす。
かかる時点で、通信チャネルのシリアライザによりリンク上にデータを押し出す。
デシリアライザ動作の文脈では、デシリアライザは、デシリアライザに対し、リンク上に協働するシリアライザに対して初期化を開始するように通知するアクティビティを検出するように命令する、１つまたは複数の命令セットを保持する。
通信チャネルのデシリアライザおよびシリアライザは、チャネルに対し起動するように命令する少なくとも１つの命令セットを保持する。
正常に起動すると、チャネルごとのセルフテストを実行し、そこからの結果を収集し比較する。
そして、命令セットは、シリアライザおよびデシリアライザに対し、デシリアライザが期待する選択されたデータパターンを通信するように命令し、それにより、デシリアライザは、シリアライザおよびデシリアライザが利用する符号化および復号プロトコルによって使用されるビット単位グループ化を確定することができる。
【００３７】
さらに、第２の認識可能なデータパターンをデシリアライザに通信し、それによってデシリアライザが小型パケットデータ通信であるものと認識する。
小型パケットデータ通信を設定することにより、デシリアライザは、小型パケットを、それらが最初に通信された方法に一致するグループ化において合わせて適合させるように動作することができる。
第２のデータパターンの通信および処理が成功すると、通信リンクのデシリアライザからシリアライザに、トレーニングが完了したことを示す制御信号を送信する。
この時点で、データパケットをトレーニング済みのチャネルを介して通信することができる。
【００３８】
さらに、例示的な実施形態では、通信リンクにわたり誤りが発生すると、そのリンクは再トレーニングプロセスを実行してもよい。
リンク再トレーニングは、先に通信チャネルコンポーネントを起動することを除き、上述したリンクトレーニングに類似する。
再トレーニングを、限定しないが通信リンクにわたる誤りの認識を含む複数のイベントにより、または通信リンクの受信端によって生成された誤り信号をリンクにおいて受信することにより、トリガしてもよい。
【００３９】
［データ通信ギャップ（データ到達タイミング）の処理］
例示的なデータ通信アーキテクチャは、協働するコンポーネント間での不確実なデータ到達時刻を処理することができる。
ＳＥＲＤＥＳデータ通信アーキテクチャの文脈では、ＳＥＲＤＥＳリンクの受信端から抽出されたデータを、ローカルクロックに厳密に同期させなくてもよい。
言い換えれば、ローカルクロックのいかなる所与のサイクルにおいても、リンクは提示すべき新たな有効データを有しても有していなくてもよい。
【００４０】
例示的な実施態様では、上述したように、データトランザクションを、リンクを介して「パケット」フォーマットで渡す。
各パケットを、トランザクションが含む情報およびデータの量に応じて１つまたは複数の小型パケットから形成する。
小型パケットを、所与の期間中にリンクが転送するある単位のペイロードとみなしてもよい。
パケットは、ヘッダパケットと、トランザクションを充填するいくつかの小型データパケットと、を含んでもよい。
ヘッダは、パケットのタイプを記述する情報と、パケットの宛先アドレス等、パケットを処理するための他の情報と、を含んでもよい。
【００４１】
例示的なコンピューティング環境のデータ通信インフラストラクチャを詳しく考察すると、ＳＥＲＤＥＳリンクを介して渡されたトランザクションが、その最終宛先に向かう途中に別のＳＥＲＤＥＳリンクにルーティングされる場合もあり得る。
かかる文脈では、データトランザクションは、その小型パケットのすべての転送を完了するために、ＳＥＲＤＥＳリンクにおいていくつかのサイクルを経る場合がある。
完全なトランザクションが次の通信リンクに転送される前にバッファリングされる場合、望ましくないレイテンシがもたらされる可能性がある。
また、リンクがパケットの一部を送信するその最初の試みに失敗することにより、パケットの開始と終了との間に長い休止がもたらされる場合もある。
さらに、異なるリンクの周波数動作が異なる可能性があり、それにより、データがより低速なリンクからきている場合により高速なリンク上で小型パケットの流れにギャップがもたらされる可能性がある。
【００４２】
例示的なデータ通信アーキテクチャは、かかる場合を、小型および標準サイズパケットの流れにギャップが存在する場合に、この適用に対しＳＥＲＤＥＳリンクの正しい動作を可能にするメカニズムを提供することによって処理する。
動作時、リンクの送信端（図２の送信コア２３５を参照）におけるＳＥＲＤＥＳリンクインタフェースは、送信する次の有効な小型パケットがない場合、そのリンクを介して送信されるべき選択された符号化または制御値を利用する。
さらに、リンクの受信端（図２の受信コア２４５を参照）は、そのクロックサイクルの開始時にそのリンクインタフェースにおいて新たに受信されたデータが見つからない場合、または符号化小型パケットが見つかる場合に、発信する制御小型パケットを生成する。
データ処理中は、制御小型パケットは無視される。
【００４３】
図６は、図２の例示的なデータ通信アーキテクチャ２００を介して通信されているデータに対するデータ通信ギャップを処理する場合に実行される処理を示す。
図示するように、処理はブロック６００で開始し、ブロック６０５に進み、例示的なデータ通信アーキテクチャの通信チャネルを介して通信するべきデータがあるか否かを判断するために検査する。
通信すべきデータがない場合、処理はブロック６００に戻り、そこから続行する。
しかしながら、通信すべきデータがある場合、処理はブロック６１０に進み、通信するべきデータに通信ギャップがないか監視する。
動作時、データを、データ通信アーキテクチャのシリアライザにより符号化される前にデータバッファにバッファリングしてもよい。
データバッファにおいて、ギャップについてデータを処理する。
そして、ブロック６１５において、データ通信ギャップがあったか否かを判断するために検査する。
データ通信ギャップがない場合、処理はブロック６２０に進み、シリアライザによりデータを協働するデシリアライザに通信する。
そこから、処理はブロック６０５に進み、そこから続行する。
【００４４】
しかしながら、ブロック６１５において、データギャップがあると判断された場合、処理はブロック６２５に進み、制御小型パケットを生成する。
そして、ブロック６３０において、制御小型パケットを協働するデシリアライザに通信することにより、協働するデシリアライザに対し通信ギャップがあることを通知する。
デシリアライザは、ブロック６３５において制御小型パケットを処理し、ブロック６４０においてデータ通信アーキテクチャを通して制御小型パケットを伝播する。
そして、処理はブロック６４５で終了する。
【００４５】
［誤り検出］
図２の例示的なデータ通信アーキテクチャ２００はまた、そのコンポーネント間で通信されているデータに対し誤り検出を実行することも可能である。
ＳＥＲＤＥＳデータ通信アーキテクチャの文脈では、リンクを介して正確に渡されなかったデータを通信するために、データ転送の再試行が必要な場合もある。
送信を再試行するために、まず誤りを検出する。
データ通信動作を続けるように再試行される第１の小型パケットを適当に識別するために、誤りは検出可能である。
【００４６】
提供する実施態様では、ＳＥＲＤＥＳリンクに対してデータをフォーマットするために使用してもよい符号化規格を、ＳＥＲＤＥＳリンクが、それが利用する高周波数でデータを送信することが可能であるために必要とする電気的特性に従うように設計してもよい。
さらに、リンクの受信端においてビットストリームからクロックを抽出することができるように、チャネルにおいて十分な遷移を実行してもよい。
さらに、ビットパターンには、中立のディスパリティ（neutral disparity）があってもよい。
言い換えれば、いつでも、送信される１および０の数は、等しくても、最大１つだけ異なってもよい。
例示的な符号化プロトコルは、シングルビット誤りにより不正な符号化がもたらされるように動作する。
しかしながら、場合によっては、不正な符号化は正当であるように見え、間違った予測ディスパリティを生成する可能性がある。
誤りがこのタイプである場合、この誤りは、後続するデータパターンによってリンクの受信端においてディスパリティが＋／−２になるまで検出されない。
【００４７】
ＳＥＲＤＥＳデータ通信アーキテクチャでは、単一リンクが、そのチャネルを介して迅速に大量の情報を渡すように動作することができる。
したがって、リンクに特別な「終了パケット」制御文字を送信することにより、誤りを抑制することができる。
これらにより、データブロックが解放される前に誤りが確実に認識されるようになる。
この手法により、特別な制御文字を送信する必要があるというオーバーヘッドが追加され、データ通信プロセスが非効率になりレイテンシが追加される可能性がある。
実際には、制御文字を送信するためには１符号化サイクルがかかる可能性がある。
複数のＳＥＲＤＥＳリンクを有するデータ通信アーキテクチャでは、制御文字を処理するために大量の時間が必要となり、データ通信が実質的に非効率になる、ということが理解される。
【００４８】
例示的な実施態様では、データ通信アーキテクチャが、受信端（図２のデータ通信インタフェース２１０の受信コア２４５を参照）と送信端（図２のデータ通信インタフェース２０５の送信コア２３５）との通信されているデータのディスパリティを比較することにより、符号化規格の誤りの第１の兆候を特定することができる、ということを認識する、代替手法を提供する。
受信機において、データを送信するために使用されるディスパリティが既知である場合、誤りを直ちに検出することができる。
これを達成するために、小型パケットを送信するために使用されるリンクのディスパリティを収集し、それらを使用して５ビット誤り符号を生成する。
そして、この５ビット値をリンクの受信端に渡す。
例示的な実施態様では、１つのさらなるＳＥＲＤＥＳリンクチャネルを使用してかかる誤り符号をリンクの受信端に通信してもよい。
そして、この値をリンクの受信端において使用することにより、リンクの受信端においてディスパリティを検査し、ディスパリティが予期された値ではない場合に通信チャネルの送信端に対しデータを再送信するように直ちに要求することができる。
【００４９】
動作時、例示的な実施態様は、誤り符号を通信する時に５ビット・１０ビット符号化を使用する。
５ビットを２回、すなわち１回は正の真として、１回は負の真として送信する。
このように、１０ビットパターンには、５つの１と５つの０とが含まれ、中立のディスパリティが達成される。
かかる処理はまた、１０ビット符号化方式を使用する場合にシステムタイミングを維持することができるように効率的である。
【００５０】
さらに、例示的な実施態様では、リンクトレーニングの完了時、リンクを介してデータが通信可能である。
データは、ヘッダ、通信するために入手可能な場合は小型データパケット、または小型リンク管理データパケット等の制御情報を含んでもよい。
このデータは、タイプに係らず、符号化される時に、関連するディスパリティを有する１と０とのパターンを生成する。
【００５１】
図７は、例示的なデータ通信アーキテクチャ２００が誤り検出を実行する場合に実行する処理を示す。
図示するように、処理はブロック７００で開始し、ブロック７０５に進み、図２の例示的なデータ通信アーキテクチャ２００のコンポーネントを介してデータを通信すべきか否かを判断するために検査する。
ブロック７０５の検査により、データを通信すべきでないと判断された場合、処理はブロック７００に戻り、そこから続行する。
しかしながら、ブロック７０５において、データを通信すべきであると判断された場合、処理はブロック７１０に進み、通信されるべきデータに対するディスパリティを計算する。
そこから、ブロック７１５において、シリアライザにより、計算されたディスパリティを使用して、通信されるべきデータの誤り符号を計算する。
そして、ブロック７２０において、シリアライザにより、計算された誤り符号とともにデータを協働するデシリアライザに通信する。
デシリアライザは、そのデータを受け取り、ブロック７２５において、通信されたデータに基づき誤り符号を計算する。
そこから、ブロック７３０において誤り符号が一致するか否かを判断するために検査する。
ブロック７３０において誤り符号が一致しない場合、処理はブロック７３５に進み、そこでデシリアライザによりデータを再通信する要求をシリアライザに送信する。
ブロック７４０においてシリアライザは再通信するデータを取得し、処理はブロック７１０に進みそこから続行する。
【００５２】
しかしながら、ブロック７３０において、それぞれシリアライザおよびデシリアライザが計算することによって生成された誤り符号が一致すると判断された場合、処理はブロック７４５に進み、データトランザクションを継続する。
そこから、処理はブロック７００に進みそこから続行する。
【００５３】
リンク障害
例示的なデータ通信アーキテクチャ２００はまた、動作中にリンクに障害が発生した場合にそのリンク障害を処理することも可能である。
例示的な実施態様は、リンクに障害が発生した場合に例示的なコンピューティング環境のインフラストラクチャとの接続がアクティブであり続けることを可能にし、コンピューティング環境が不安定に（たとえば、クラッシュ）ならないように動作する。
【００５４】
ＳＥＲＤＥＳデータ通信アーキテクチャの文脈では、コンピュータのインフラストラクチャにおけるポイント・ツー・ポイント接続を、データ通信帯域幅を増大させるために協調して動作しているいくつかのＳＥＲＤＥＳリンクから構成してもよい。
例示的な実施態様により、他の通信リンクのうちの１つに障害が発生した場合に「スペア」リンクチャネルに対して展開される１つの追加のＳＥＲＤＥＳリンクを使用することができる。
さらに、例示的な実施態様は、リンクチャネルに信頼性がないことを検出しそれを使用しなくてもよい。
この実施態様はまた、リンクチャネルを使用すべきではないリンクの受信端（図２のデータ通信インタフェース２１０の受信コア２４５）がそのリンクの送信端（図２のデータ通信インタフェース２０５の送信コア２３５を参照）と通信するのを可能にするプロトコルも提供する。
動作時、例示的な実施態様は、リンクトレーニングシーケンスの間にリンクに障害が発生したと判断する。
リンクトレーニングは、データの標準送信時または初期リンク立上げ時に誤りが検出されることに応じて発生する。
リンクに障害が発生したという認識には、特に、そのリンクに対する存在検出信号の喪失、そのリンクがリンクセルフテストに合格しなかったこと、そのリンクが適当な整合を通知しなかったこと、がある。
【００５５】
リンクの障害に応じて、リンクの受信端のロジックは、論理リンクチャネルを障害リンクから、障害物理リンクから離れた最後の番号のリンクにシフトさせる。
さらに、新たなマッピングを５ビットフィールドにおいて符号化し、リンクの送信端に返す。
そこで、新たなマッピングを使用して、送信ロジックを、適当な物理チャネルに対する次のトレーニング試行においてリンクを駆動するようにプログラムする。
【００５６】
図８は、例示的なデータ通信アーキテクチャ２００がリンク障害を処理する場合に実行する処理を示す。
図示するように、処理はブロック８００で開始し、ブロック８０５に進み、データ通信アーキテクチャが通信リンクのトレーニングを開始する。
そこから、ブロック８１０において、データ通信アーキテクチャ２００のシリアライザとデシリアライザとを関連付けることにより論理通信リンクを作成する。
そして、ブロック８１５において、作成された論理通信リンクを物理通信リンクにわたって動作させる。
そこから、処理はブロック８２０に進み、通信リンクのトレーニングを監視することにより任意のリンク障害を特定する。
そして、ブロック８２５において、リンクに障害があるか否かを判断するために検査する。
ブロック８２５において検査によって判断されるように障害がない場合、処理はブロック８４５に進み、リンクのトレーニングを完了する。
そして、ブロック８５０において、トレーニング済みリンクに対し、データ通信トランザクションを実行する。
そして、処理はブロック８５５において終了する。
【００５７】
しかしながら、ブロック８２５において、リンク障害が発生したと判断されると、処理はブロック８３０に進み、論理通信リンクを障害のある物理通信リンクから離れるようにシフトさせる。
ブロック８３５において、新たな論理および物理通信リンク構成を提供する新たなマッピングを作成し、ブロック８４０において、その新たなマッピングに従って論理および物理通信リンクを整合させる。
そこから、処理はブロック８１５に戻り、新たにマッピングされたチャネルを適当に動作するために再テストする。
そこから、処理は図示するように継続する。
【００５８】
選択された数の障害が試行された後、データ通信アーキテクチャ２００の協働するコンポーネントを介して、リンクに障害が発生したことを示す信号を送信する。
かかる文脈では、データ通信トランザクションに対しそのリンクを利用しない。
【００５９】
［トレーニングおよび失敗したトレーニング］
例示的なデータ通信アーキテクチャ２００はまた、障害のあるリンクの再トレーニングを処理することも可能である。
ＳＥＲＤＥＳデータ通信アーキテクチャの文脈では、例示的な実施態様は、高帯域幅および低レイテンシを提供するように合せて使用される複数の多くのＳＥＲＤＥＳリンクを採用する。
実際には、ＳＥＲＤＥＳリンクがデータを転送するために使用することが可能になる前に、それらをまず、リンクの受信端がリンクを適当に整合させるために使用することができる適当な既知のデータシーケンスを送信することにより「トレーニングする」。
さらに、トレーニングにより、リンクが他の既知のデータシーケンスを正確に送信することをテストする機会も提供される。
環境によっては、リンクトレーニングは第１の試行中に失敗し第２の試行中に成功する場合がある。
この文脈では、例示的な実施態様は、トレーニングが第２の試行中に成功するのを可能にすることができる情報を、通信チャネルの送信端（図２のデータ通信インタフェース２０５の送信コア２３５を参照）から通信チャネルの受信端（図２のデータ通信インタフェース２１０の受信コア２４５を参照）に通信するように動作する。
【００６０】
例示的な実施態様は、さらに、リンクトレーニングが失敗した場合にリンクを介して情報を渡すメカニズムを提供する。
動作時、リンクをテストするデータシーケンスを、それらがエンコーダに提供される前に、符号化方式の先のディスパリティ、すなわち中立のディスパリティに係らず、同じビット符号化を生成するような方法で、フォーマットする。
【００６１】
リンクの受信端において、ＳＥＲＤＥＳインタフェースからのデータは、中立のディスパリティを維持するようにフォーマットされているため、静的なビット受信パターンである。
したがって、リンクと受信ロジッククロックの相互との間の整合が保証されない場合であっても、提供されたデータを静的な値として扱うことができる。
さらに、動作時、例示的な実施態様は、通信リンクの受信端においてデータシーケンスのコピーを互いに比較することにより、不良である可能性のある任意の１つのリンクを失格させる。
さらに、その後、その情報を使用して、リンクの各終端を、任意の欠陥について再トレーニングするためにデータの到達がいかに予測されるかを変更するように再プログラムしてもよい。
【００６２】
図９は、例示的なデータ通信アーキテクチャ２００がリンクトレーニングの失敗を処理する場合に実行する処理を示す。
図示するように、処理はブロック９００で開始し、ブロック９０５に進み、例示的なデータ通信アーキテクチャが通信リンクのトレーニングを開始する。
そこから、処理はブロック９１０に進み、リンク管理データを生成する。
そして、ブロック９１５において、リンク管理データを、リンク管理を介してシリアライザからデシリアライザへ通信する。
ブロック９２０において、リンクトレーニングの失敗を特定するためにトレーニングを監視する。
そして、ブロック９２５において、任意のリンクトレーニングの失敗があったか否かを判断するために検査する。
リンクトレーニングの失敗がない場合、処理はブロック９５０に進み、そこでデータ通信トランザクションを実行する。
そこから、処理はブロック９５５で終了する。
【００６３】
しかしながら、ブロック９２５において、リンクトレーニングの失敗があると判断された場合、処理はブロック９３０に進み、デシリアライザによりリンク管理データを処理する。
そして、ブロック９３５において、協働するデシリアライザにわたりリンク管理データを比較することによりトレーニングの失敗を特定する。
そして、ブロック９４０において、シリアライザおよびデシリアライザを、リンクトレーニングの失敗に関して再トレーニングするように再プログラムする。
そこから、処理はブロック９０５に戻り図示するように継続する。
【００６４】
ブロック９２５において判断されるように、選択された数の失敗の後、そのリンクに障害が発生しておりそれをデータ通信トランザクションに使用しない、と判断する、ということを理解する。
この文脈において、図８によって説明したような追加の処理を実行することにより論理および物理チャネルを再マッピングしてもよい。
【００６５】
破損データの処理
例示的なデータ通信アーキテクチャ２００はまた、データを破損しているものとして特定しマーキングすることにより、データ通信アーキテクチャの頑強性を向上させることも可能である。
ＳＥＲＤＥＳデータ通信アーキテクチャの文脈では、例示的な実施態様は、データがリンクを介する送信が成功しない場合を認識するメカニズムを提供し、かかるデータ破損をマーキングする。
これは、小型データパケットが送信される前に破損した場合に行ってもよい。
例示的な実施態様は、障害のあるデータが受け入れられるのを可能にするように動作し、それによりリンクが、障害のある小型データパケットの後にデータを送信することができる。
さらに、障害のある小型データパケットを破損したものとしてマーキングしその宛先に送信する。
【００６６】
さらに、例示的な実施態様は、リンクが、破損しているものとしてマーキングされた小型データパケットを受け入れ、目下横断しているリンクに障害が発生した時に進行中の任意のトランザクションを、完了することができるようにする。
これを、トランザクションを充填するように作成されたデータを送信し、全データ、すなわち部分データおよびフィラーデータを破損したものとしてマーキングすることにより達成する。
そうする際、部分的に送信されたトランザクションが他のリンクインタフェースを妨げないようにし、本インフラストラクチャが、障害リンクをアクティブに使用していたプロセスに対する障害を含む可能性がないようにする。
【００６７】
図１０は、データ通信トランザクション中にデータを破損しているものとして特定しマーキングする場合に実行される処理を示す。
図示するように、処理はブロック１０００で開始し、ブロック１００５に進み、例示的なデータ通信アーキテクチャ２００の協働するコンポーネント間で通信リンクを確立する。
そこから、処理はブロック１０１０に進み、確立された通信リンクを介するデータ送信を監視する。
ブロック１０１５において、通信リンクを介する送信が成功しないデータを特定する。
ブロック１０２０において、特定された送信が成功しなかったデータを、破損しているものとしてマーキングする。
そこから、ブロック１０２５において、破損データが部分的なデータを含むか否かを判断するために検査する。
ブロック１０２５における検査により、部分的なデータがないと判断された場合、処理はブロック１０４０に進み、破損しているものとしてマーキングされたデータを、データ通信アーキテクチャのコンポーネントによって処理する。
そこから、ブロック１０４５において、破損しているものとしてマーキングされたデータを、データ通信アーキテクチャにわたって伝播する。
そして、ブロック１０５０においてデータ通信トランザクションを実行する。
その後、ブロック１０５５において処理を終了する。
【００６８】
しかしながら、ブロック１０２５において、部分的なデータがあると判断された場合、処理はブロック１０３０に進み、そこで部分的な破損データに付加するフィラーデータを生成する。
そして、ブロック１０３５において、フィラーデータと部分的な破損データとを、破損データの１つとしてまとめてマーキングする。
そこから、処理はブロック１０４０に進み、そこから継続する。
【００６９】
さらに、例示的な実施態様では、データを、通信リンクトレーニングの成功した試行の１つまたは複数の繰返しの結果として、破損しているものとして特定する。
言い換えれば、通信リンクのトレーニングを最終的に成功させることができるが、特定の小型データパケットの送信が繰返し失敗する場合、問題はデータの問題であると判断する。
【００７０】
［誤り検出に使用する誤り符号］
図２の例示的なデータ通信アーキテクチャ２００はまた、大量な処理を実行することなく複数の通信チャネルにわたって効率的に誤りを検出することも可能である。
ＳＥＲＤＥＳデータ通信アーキテクチャの文脈では、例示的な実施態様は、データ通信アーキテクチャの符号化プロトコルを使用して動作する誤り符号化を提供する。
【００７１】
動作時、トランザクション（またはデータパケット）を、小型データパケットと呼ばれる単位でいくつかのリンクチャネルの集まりを介して渡し、各トランザクションは、そのサイズに従って複数の小型データパケットを必要とする。
各小型データパケットは、ある数の（たとえば１０）ビット符号化プロトコルで送信されるチャネル毎のある数の（たとえば８）論理ビットを含む。
この誤り検出方式は、一度に１つの小型データパケットに対して動作する。
実際には、チャネル毎に使用される標準８Ｂ１０Ｂ符号化は、１つのチャネル内の単一ビット誤りを検出することができる。
この検出をロジックと結合することにより、小型データパケットを伝送するチャネルにわたり８つのパリティビットを計算する。
パリティビットは、チャネルで送信されるデータのうちの８ビットの第１、２、３、…８ビットに基づく。
そして、これらの８つのパリティビットを、１つの追加のリンクチャネルを介して送信されるデータとして使用する。
受信端において通信チャネルによって送信されるデータに対しパリティビットを計算することにより、誤りを検出することができる。
【００７２】
図１１は、例示的なデータ通信アーキテクチャ２００が複数の通信チャネルにわたって誤りを検出する場合に実行する処理を示す。
図示するように、処理はブロック１１００で開始し、ブロック１１０５に進み、例示的なデータ通信アーキテクチャ２００のコンポーネント間で通信リンクを確立する。
そこから、処理はブロック１１１０に進み、ｎビットを有する符号化プロトコルに基づいて、通信されるデータに対しパリティビットを計算する。
そして、ブロック１１１５において、パリティビットをシリアライザからデシリアライザに通信リンクを介して通信する。
そして、ブロック１１２０において、デシリアライザによりパリティビットを処理する。
そして、ブロック１１２５において、パリティビットを使用して任意の誤りが特定されたか否かを判断するために検査する。
ブロック１１２５において誤りが特定されなかった場合、処理はブロック１１３５に進み、データ通信トランザクションを実行する。
そして、処理はブロック１１４０において終了する。
【００７３】
しかしながら、ブロック１１２５において誤りが特定されたと判断された場合、処理はブロック１１３０に進み、データをシリアライザからデシリアライザに再通信する。
そこから、処理はブロック１１１０に戻り、図示するように継続する。
【００７４】
データをシリアライザからデシリアライザへ再通信するように複数回試行した後、誤りが特定され続ける場合、かかるデータを、図１０において上述した処理により破損されているとしてマーキングしてもよい、ということを理解する。
【００７５】
［リンクレベル再試行］
図２の例示的なデータ通信アーキテクチャ２００はまた、そのコンポーネント間で成功したデータの転送に対して確認応答することも可能である。
ＳＥＲＤＥＳデータ通信アーキテクチャの文脈では、トランザクションを、リンクを介して「パケット」形態で渡してもよい。
パケットを、トランザクションが含む情報およびデータの量に応じて１つまたは複数の小型パケットから形成してもよい。
小型データパケットを、リンクが一度に転送するように設計されているペイロードの単位とみなしてもよい。
パケットは、ヘッダ小型パケットと、それに続く、トランザクションを充填するいくつかの小型データパケットと、を含んでもよい。
ヘッダは、特に、パケットのタイプを記述する情報と、パケットの宛先アドレス等、パケットを処理するための他の情報と、を含んでもよい。
【００７６】
リンクを介して小型データパケットを再送信するかまたはその転送を再試行することができるようにするために、例示的な実施態様は、確認応答信号がリンクの反対端から受信されるような時まで、リンクを介して転送される小型ヘッダおよびデータパケットをほぼすべてデータバッファに保持する。
成功した転送の確認応答が受信されると、その小型ヘッダおよびデータパケットを含むデータバッファエントリを、別の小型データパケットによって使用されるために解放することができる。
提供する実施態様では、概して、小型およびヘッダデータパケットを保持するためのリンクレベル再試行バッファエントリの数より多くの小型およびヘッダデータパケットを、リンクを介して送信することはできない。
リンクを介して小型データパケットを適当に転送することに失敗した場合、リンクを介して再送信されるべき第１の小型ヘッダおよびデータパケットは、確認応答されなかったデータバッファ内の最も古い小型データパケットである。
【００７７】
例示的な実施態様は、小型データパケットの成功した転送の確認応答を達成するメカニズムおよびプロトコルを提供する。
実際には、リンクを介して転送された小型データパケットには、小型データパケットが格納されているデータバッファのエントリアドレスに一致するタグが関連付けられている。
ヘッダ小型パケットは、成功した転送の確認応答に対して予約されたフィールドを含む。
ヘッダがリンクを介して送出されると、このフィールドに、その時点で受信が成功した最新の小型データパケットのアドレスが充填される。
そのアドレスを送信すると、確認応答が喪失された場合、次の確認応答がメカニズムを自己補正する。
【００７８】
リンクを介してアドレス確認応答を伝送する用意ができた有効なヘッダがない場合、例示的な実施態様は、リンクを介して確認応答を返すためにアイドルヘッダを作成する。
【００７９】
最後に、リンク転送障害が補正された後であるが、正常動作が再始動する前、直前に受信が成功した小型データパケットのアドレスをリンク再始動シーケンスの一部として送信することにより、受信が成功した小型データパケットに対し適当に確認応答されることを確実にする。
【００８０】
図１２は、図２の例示的なデータ通信アーキテクチャ２００が成功したデータ通信に対し確認応答を作成し処理する場合に実行する処理を示す。
図示するように、処理はブロック１２００で開始し、ブロック１２０５に進み、図２のデータ通信アーキテクチャ２００の協働するコンポーネント間で通信リンクを確立する。
そして、ブロック１２１０において、協働するデータバッファに小型データパケットを格納する。
そこから、処理はブロック１２１５に進み、小型データパケットに対してアドレスを生成する。
そして、ブロック１２２０において、小型データパケットアドレスを有するデータを、送信側シリアライザから通信する。
そして、ブロック１２２５において、データが受信側デシリアライザに適当に通信されたか否かを判断するために検査する。
ブロック１２２５において、検査によりデータが適当に通信されなかったことが示されると、処理はブロック１２３０に進み、通信リンクの送信端により、直前に受信された小型データパケットアドレスを使用してデータを再送信するように要求する。
そこから、処理はブロック１２２０に戻り図示するように継続する。
【００８１】
しかしながら、ブロック１２２５において、データが適当に通信されたと判断されると、処理はブロック１２３５に進み、通信リンクの受信端から通信リンクの送信端へ確認応答を伝送するためにヘッダが利用可能であるか否かを判断するために検査する。
現発信パケットを完了するためにまず小型データパケットが送信されるため、確認応答が準備される前に時間遅延が発生する可能性がある。
ブロック１２３５において、検査により利用可能なヘッダがあることが指示された場合、処理はブロック１２５５に進み、小型データパケットアドレスを通信チャネルの受信端から通信チャネルの送信端に、利用可能なヘッダを使用して成功した転送の確認応答として通信する。
処理はブロック１２６０に進み、協働するデータバッファから小型データパケットアドレスを解放する。
そして、処理はブロック１２５０で終了する。
【００８２】
しかしながら、ブロック１２３５において、利用可能なヘッダがないと判断された場合、ブロック１２４０において成功した転送の確認応答を伝送するためにアイドルヘッダを作成する。
ブロック１２４５において、アイドルヘッダを通信リンクの受信端から通信リンクの送信端に通信する。
ここでもまた処理はブロック１２６０に進み、協働するデータバッファから小型データパケットアドレスを解放する。
そして、処理はブロック１２５０において終了する。
【００８３】
要するに、本明細書で説明した装置および方法は、データレイテンシを低減する、コンピューティング環境通信ファブリックとして使用するために採用するデータ通信アーキテクチャを提供する。
しかしながら、本発明に対しさまざまな変更形態および代替構造が可能であるということが理解される。
本発明を本明細書で説明した特定の構造に限定するようには意図されていない。
それどころか、本発明は、本発明の範囲および精神内にあるすべての変更形態、代替構造および等価形態を包含することが意図されている。
【００８４】
また、本発明を、種々のコンピュータ環境（非無線および無線コンピュータ環境をともに含む）、部分的なコンピューティング環境および現実世界の環境において実施してもよい、ということも留意すべきである。
本明細書で説明したさまざまな技法を、ハードウェアまたはソフトウェアもしくはそれら両方の組合せで実施してもよい。
好ましくは、それら技法を、プロセッサ、プロセッサが読取可能な記憶媒体（揮発性および不揮発性メモリおよび／または記憶素子を含む）、少なくとも１つの入力デバイスおよび少なくとも１つの出力デバイスを有するプログラマブルコンピュータを保持するコンピューティング環境において実施する。
さまざまな命令セットと協働するコンピューティングハードウェアロジックをデータに適用することにより、上述した機能を実行し、出力情報を生成する。
出力情報を、１つまたは複数の出力デバイスに適用する。
例示的なコンピューティングハードウェアが使用するプログラムを、好ましくは、コンピュータシステムと通信する高水準手続き型またはオブジェクト指向型プログラミング言語を含むさまざまなプログラミング言語で実施してもよい。
例示的に、本明細書で説明した装置および方法を、望ましい場合はアセンブリまたは機械言語で実施してもよい。
いずれの場合も、言語は、コンパイル型またはインタプリタ型言語であってもよい。
かかるコンピュータプログラムの各々を、好ましくは、汎用または専用プログラマブルコンピュータが読取可能な記憶媒体またはデバイス（たとえば、ＲＯＭまたは磁気ディスク）に格納する。
それは、コンピュータが上述した手続きを実行するために記憶媒体またはデバイスを読み取る場合に、コンピュータを構成し動作させるためである。
また、本装置を、コンピュータプログラムとともに構成されたコンピュータ読取可能記憶媒体として実施されるようにみなしてもよく、そのように構成された記憶媒体により、コンピュータは、特定のおよび事前に定義された方法で動作する。
【００８５】
上記では、本発明の例示的な実施態様について詳細に説明したが、当業者は、本発明の新規な教示および利点から著しく逸脱することなく例示的な実施形態において多くの追加の変更形態が可能である、ということを容易に理解するであろう。
したがって、これらおよびすべてのかかる変更形態は、本発明の範囲内に含まれるように意図されている。
本発明を、以下の例示的な特許請求の範囲によってよりよく定義することができる。
【図面の簡単な説明】
【００８６】
【図１】本明細書で説明するシステムおよび方法の実施態様による例示的なコンピューティング環境のブロック図である。
【図２】例示的なデータ通信アーキテクチャの例示的なコンポーネントの協働を示すブロック図である。
【図３】データ通信アーキテクチャの例示的な実施態様による送信コアのブロック図である。
【図４】データ通信アーキテクチャの例示的な実施態様による受信コアのブロック図である。
【図５】例示的なデータ通信アーキテクチャがデータを通信している時に実行する処理を示すフローチャート図である。
【図６】例示的なデータ通信アーキテクチャが不確定なデータ到達を処理している時に実行する処理を示すフローチャート図である。
【図７】例示的なデータ通信アーキテクチャがデータ通信におけるビット誤りを検出している時に実行する処理を示すフローチャート図である。
【図８】例示的なデータ通信アーキテクチャがリンク障害に対処している時に実行する処理を示すフローチャート図である。
【図９】例示的なデータ通信アーキテクチャがリンク障害トレーニングに対処している時に実行する処理を示すフローチャート図である。
【図１０】例示的なデータ通信アーキテクチャが破損データを処理している時に実行する処理を示すフローチャート図である。
【図１１】例示的なデータ通信アーキテクチャが誤り検出を処理している時に実行する処理を示すフローチャート図である。
【図１２】例示的なデータ通信アーキテクチャが成功したデータ通信に対して確認応答するために実行する処理を示すフローチャート図である。
【符号の説明】
【００８７】
１１０・・・中央処理装置、
１１５・・・コプロセッサ、
１２０・・・メモリコントローラ、
１３５・・・周辺装置コントローラ、
１６０・・・通信ネットワーク、
１６３・・・ディスプレイコントローラ、
１７０・・・ネットワークアダプタ、
１８０・・・コンピューティングアプリケーション、
【図１】
2005202956.tif 000003
【図２】
2005202956.tif 000004
【図３】
2005202956.tif 000005
【図４】
2005202956.tif 000006
【図５】
2005202956.tif 000007
【図６】
2005202956.tif 000008
【図７】
2005202956.tif 000009
【図８】
2005202956.tif 000010
【図９】
2005202956.tif 000011
【図１０】
2005202956.tif 000012
【図１１】
2005202956.tif 000013
【図１２】
2005202956.tif 000014