JP2005202956A - 破損データを処理する方法 - Google Patents

破損データを処理する方法 Download PDF

Info

Publication number
JP2005202956A
JP2005202956A JP2005003559A JP2005003559A JP2005202956A JP 2005202956 A JP2005202956 A JP 2005202956A JP 2005003559 A JP2005003559 A JP 2005003559A JP 2005003559 A JP2005003559 A JP 2005003559A JP 2005202956 A JP2005202956 A JP 2005202956A
Authority
JP
Japan
Prior art keywords
data
link
corrupted
communication
processing
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2005003559A
Other languages
English (en)
Other versions
JP3996928B2 (ja
Inventor
Gregg B Lesartre
グレッグ・バーナード・レサートル
David Paul Hannum
デーヴィッド・ポール・ハンナム
Ryan Akkerman
ライアン・アッカーマン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hewlett Packard Development Co LP
Original Assignee
Hewlett Packard Development Co LP
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hewlett Packard Development Co LP filed Critical Hewlett Packard Development Co LP
Publication of JP2005202956A publication Critical patent/JP2005202956A/ja
Application granted granted Critical
Publication of JP3996928B2 publication Critical patent/JP3996928B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/24Testing correct operation
    • H04L1/245Testing correct operation by using the properties of transmission codes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L2001/0092Error control systems characterised by the topology of the transmission link
    • H04L2001/0094Bus

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Communication Control (AREA)

Abstract

【課題】 コンピューティング環境のコンピュータ処理コンポーネント間でデータを通信する際に、レイテンシを低減する。
【解決手段】
本発明にかかるデータ通信アーキテクチャは、データインタフェースとシリアライザとデシリアライザとを備える。動作時、コンピュータ処理コンポーネントからのデータは、シリアライザによって受け取られる。データインタフェースと協働するシリアライザは、選択された符号化プロトコルに従って、デシリアライザに通信するためにデータを符号化する。動作上、シリアライザおよびデシリアライザ(SERDES)は、通信リンクまたは通信チャネルを形成するように協働する。データインタフェースは、特に、リンクの各終端からリンクを介して転送されるデータの収集を可能にし、リンク管理および制御情報を提供し、誤り保護を符号化し、通信チャネルを介してデータを処理するロジックを提供する。
【選択図】図3

Description

本発明は、コンピュータプロセッサのためのデータ通信アーキテクチャに関し、特にシリアライザおよびデシリアライザを採用するコンピュータプロセッサのための通信アーキテクチャに関する。
[相互参照]
本出願は、全体的にまたは一部、以下の米国特許出願、すなわち、米国特許出願第10/756,441号、同第10/756,439号、同第10/756,685号、同第10/756,435号、同第10/756,529号、同第10/756,667号および同第10/756,660号に関し、かかる出願を相互参照する。
一般に、効率的に動作しデータを迅速に処理することができるコンピューティングアーキテクチャは、それらとは対照的なアーキテクチャよりも好まれる。
これらコンピューティングアーキテクチャがデータを処理する速度は、アーキテクチャの設計、動作状態、利用されるコンポーネントの品質ならびにコンピュータアーキテクチャがデータを処理している時に採用するプロトコル、ロジックおよび技法を含む複数の要素によって制限される可能性がある。
データ通信アーキテクチャおよびコンピューティングアーキテクチャのプロトコルからもたらされる、コンポーネントにわたるデータの通信におけるレイテンシもまた、データを処理することができる速度に影響を与える可能性がある。
コンピュータアーキテクチャの協働するコンポーネント間(たとえば、コンピューティング環境の処理装置内のコンピュータプロセッサまたはコンピュータプロセッサとデータ記憶ドライブ等の周辺コンポーネントとの間)でデータを通信するために、目下複数のデータ通信アーキテクチャが採用されている。
たとえば、IDE/ATA(内蔵ドライブエレクトロニクス/アドバンスド・テクノロジ・アタッチメント(Integrated Drive Electronics/Advanced Technology Attachment))およびSCSI(小型コンピュータシステムインタフェース)はともに、ハードドライブ(CD−ROMおよびDVDドライブ等の他の何らかのデバイスも同様)に対する一般的なインタフェースであり、各々いくつかの特色がある。
他のデータ通信アーキテクチャには、PCI(周辺装置相互接続(Peripheral Components Interconnect))、AGP(アクセラレーテッド・グラフィックス・ポート)、USB(ユニバーサル・シリアル・バス)、シリアルデータ通信ポートおよびパラレルデータ通信ポートがある。
上記データ通信アーキテクチャの各々は協働するコンポーネント間でデータを送信する際に有効であるが、これらのアーキテクチャの各々には、欠点および性能限界がある。
特に、かかるデータ通信アーキテクチャは、高クロック周波数(たとえば、数ギガヘルツ)で通信される大量のデータ通信を処理するようには設計されていない。
さらに、PCI、IDEおよびSCSIデータ通信アーキテクチャは、一般に、データ通信速度全体に影響を与えるデータを通信する場合にオーバーヘッド処理計算が必要である。
言い換えれば、通信されている所望のデータに加えて、追加のオーバーヘッド処理データを通信しなければならない。
したがって、各クロックサイクル中に全データが処理されない。
より高帯域幅のデータ通信アーキテクチャが必要であることに応じて、SERDES(シリアライザ/デシリアライザ)データ通信アーキテクチャが開発された。
SERDESは、事前に定義された方式(たとえば、8ビット/10ビットすなわち8B10B符号化)に従ってデータを符号化し復号するように動作する。
符号化データは、1つまたは複数の通信チャネルにより、シリアライザから対応するデシリアライザに通信され復号される。
SERDESデータ通信アーキテクチャは、協働するコンポーネント間のデータ通信帯域幅を増大させるように示されてきた。
この文脈では、SERDESデータ通信アーキテクチャを、データバスが協働するコンポーネント間でデータを搬送するように動作しているものとして展開する。
コンピューティング環境のコンピュータ処理コンポーネント間でデータを通信する際に使用され、レイテンシを低減する、シリアライザおよびデシリアライザを採用するデータ通信アーキテクチャを提供する。
例示的な実施形態では、データ通信アーキテクチャは、データインタフェースとシリアライザとデシリアライザとを備える。
動作時、コンピュータ処理コンポーネントからのデータは、シリアライザによって受け取られる。
データインタフェースと協働するシリアライザは、選択された符号化プロトコルに従って、デシリアライザに通信するためにデータを符号化する。
動作上、シリアライザおよびデシリアライザ(SERDES)は、通信リンクまたは通信チャネルを形成するように協働する。
データインタフェースは、特に、リンクの各終端からリンクを介して転送されるデータの収集を可能にし、リンク管理および制御情報を提供し、誤り保護を符号化し、通信チャネルを介してデータを処理するロジックを提供する。
例示的な実施態様に加えて、例示するデータ通信アーキテクチャは、さらに、リンクトレーニングステータスモニタ、リンクトレーニングモジュール、監視モジュール、データバッファ、リンクトレーニングモジュール、パリティビットモジュール、データ送信確認応答モジュールおよびデータバッファを備える。
これらのモジュールは、シリアライザおよびデシリアライザの一部を構成する。
動作時、これらのモジュールは、データインタフェースならびにシリアライザおよびデシリアライザに含まれる命令セットと協働して、限定されないが、不確実なデータ到達時刻を処理すること、シングルビットおよびマルチビット誤りを検出すること、通信リンク障害を処理すること、障害リンクトレーニングに対処すること、データを破損しているものとして特定しマーキングすること、および通信リンクにわたる成功したデータトランザクションを特定し処理することを含む機能を実現する。
本発明の他の特徴について以下にさらに説明する。
有用なデータ通信アーキテクチャおよび方法について、添付図面を参照してさらに説明する。
[概説(overview)]
インフラストラクチャ帯域幅が必要なコンピューティング環境を提供するために、実施態様は、高周波数で動作するシリアライザ/デシリアライザ(SERDES)ポイントツーポイントデータ通信アーキテクチャを利用する事を考えた。
コンピューティング環境の内部データ通信インフラストラクチャにSERDESデータ通信アーキテクチャを適用する際、複数の制限が明らかとなる。
一般的に、データ通信におけるレイテンシは、非効率的なデータ通信アーキテクチャ管理から発生する。
SERDESデータ通信アーキテクチャの管理を、特にSERDES通信リンクに沿って通信するデータを収集し、誤り検出および誤ったデータに対する命令の処理を提供するデータインタフェースにより、実行してもよい。
本発明は、データ通信アーキテクチャコンポーネント間で双方向に発生する動作をサポートするSERDESリンクチャネルによって使用されるデータインタフェースを提供する。
例示的な実施態様では、リンクの各終端からSERDESリンクを介して転送されるデータを収集するメカニズムを提供する。
さらに、このフォーマットに符号化するように動作してもよい。
本明細書で説明する例示的な実施態メカニズムは、オーバレイリンク管理情報を提供し、誤り保護を符号化し、データを適当な様のデータインタフェースはまた、SERDESコンポーネントに対し、SERDESリンクコンポーネント間でデータを収集しかつ通信し、かかるデータが正しく収集され通信されることを検査するように命令するのを引き受けるロジックを保持する。
例示的なSERDESデータ通信アーキテクチャはまた、データを格納するデータバッファを利用してもよい。
動作時、データバッファを使用して、SERDES通信リンクの受信端からの応答により正しい受信が確認されるまでデータを格納してもよい。
かかる場合、SERDESデータ通信アーキテクチャの協働するコンポーネント間で通信されるデータの一部として、確認応答を埋め込んでもよい。
SERDESコンポーネントによって誤りが検出されると、データバッファを使用して誤りを訂正するデータを再送信してもよい。
さらに、例示的な実施態様は、複数のパラレルSERDES通信チャネルの使用を調整してもよい。
SERDES通信チャネルは、SERDESコンポーネント(たとえば、シリアライザおよびデシリアライザ)間の物理リンク(たとえばワイヤ)で動作する論理通信リンクを備えてもよい。
誤り検出、トレーニングおよび他の動作を実行する時、例示的なSERDESデータ通信アーキテクチャは、スペアチャネルを利用してもよい。
さらに、かかるスペアチャネルを使用して、チャネルのうちの1つのハード障害時でさえ通信可用性を維持することができる。
例示的な実施態様は、さまざまな媒体、すなわちケーブル、PCトレースまたは適当なバッファファイバを駆動する柔軟性を提供し、選択された媒体と最もよく作用するように種々のリンク周波数をサポートする。
[例示的なコンピューティング環境]
図1は、本明細書で説明するシステムおよび方法による例示的なコンピューティングシステム100を示す。
コンピューティングシステム100は、種々のコンピューティングアプリケーション180を実行することができる。
例示的なコンピューティングシステム100は、主に、ソフトウェアの形態であってもよいコンピュータ読取可能命令、およびかかるソフトウェアがどこに格納されまたはいかにアクセスされるかによって制御される。
かかるソフトウェアを中央処理装置(CPU)110内で実行することにより、データ処理システム100に対し作業を行わせることができる。
多くの既知のコンピュータサーバでは、ワークステーションおよびパーソナルコンピュータ中央処理装置110を、マイクプロセッサと呼ばれる超小型電子チップCPUによって実施する。
コプロセッサ115は、主CPU110とは別個の任意のプロセッサであり、追加の機能を実行するかまたはCPU110を支援する。
1つの一般的なタイプのコプロセッサは、数値または数学コプロセッサとも呼ばれる浮動小数点コプロセッサであり、汎用CPU110より高速にかつより高度に数値計算を実行するように設計されている。
例示的なコンピューティング環境を、単一CPU110を備えるように示すが、コンピューティング環境100は複数のCPU110を備えてもよいため、かかる説明は単に例示的なものである、ということが理解される。
さらに、コンピューティング環境100は、通信ネットワーク160または他の何らかのデータ通信手段(図示せず)を通してリモートCPU(図示せず)の資源を利用してもよい。
動作時、CPU110は、命令をフェッチし、復号し、実行し、コンピュータの主データ転送経路、すなわちシステムバス105を介して他の資源にかつ他の資源から情報を転送する。
かかるシステムバスは、コンピューティングシステム100のコンポーネントを接続し、データ交換のために媒体を定義する。
システムバス105は、通常、データを送信するデータラインと、アドレスを送信するアドレスラインと、割込みを送信しシステムバスを操作する制御ラインと、を有する。
かかるシステムバスの例には、PCI(周辺装置相互接続)バスがある。
今日の高度なバスによっては、拡張カード、コントローラおよびCPU110によるバスへのアクセスを調整するバスアービトレーションと呼ばれる機能を提供する。
これらのバスに接続しバスを引き継ぐように調整(arbitrate)するデバイスを、バスマスタと呼ぶ。
また、バスマスタサポートにより、プロセッサとそのサポートチップを含むバスマスタアダプタを追加することによってバスのマルチプロセッサ構成を作成することができる。
システムバス105に結合されたメモリデバイスには、ランダムアクセスメモリ(RAM)110とリードオンリメモリ(ROM)130とがある。
かかるメモリは、情報が格納され検索されるのを可能にする回路を有する。
ROM130は、一般に、変更することができない記憶データを含む。
RAM125に格納されたデータは、CPU110または他のハードウェアデバイスが読み出しまたは変更することができる。
RAM125および/またはROM130へのアクセスを、メモリコントローラ120によって制御してもよい。
メモリコントローラ105は、命令が実行される際に仮想アドレスを物理アドレスに変換するアドレス変換機能を提供してもよい。
メモリコントローラ120はまた、システム内のプロセスを隔離しシステムプロセスをユーザプロセスから隔離するメモリ保護機能を提供してもよい。
このため、ユーザモードで実行しているプログラムは、通常、それ自体のプロセスの仮想アドレス空間によってマッピングされるメモリにのみアクセスすることができ、プロセス間で共有するメモリがセットアップされていないかぎり、別のプロセスの仮想アドレス空間内のメモリにアクセスすることはできない。
さらに、コンピューティングシステム100は、CPU110からプリンタ140、キーボード145、マウス150およびデータ記憶ドライブ155等の周辺装置に命令を通信することができる周辺装置コントローラ135を有してもよい。
ディスプレイコントローラ163によって制御されるディスプレイ165を使用して、コンピューティングシステム100によって生成された視覚的出力を表示する。
かかる視覚的出力には、テキスト、グラフィックス、アニメーショングラフィックスおよびビデオがあり得る。
ディスプレイ165を、CRTベースのビデオディスプレイ、LCDベースのフラットパネルディスプレイ、ガスプラズマベースのフラットパネルディスプレイ、またはタッチパネル、もしくは他のディスプレイ形態で実施してもよい。
ディスプレイコントローラ163は、ディスプレイ165に送出されるビデオ信号を生成するために必要な電子コンポーネントを有する。
さらに、コンピューティングシステム100は、コンピューティングシステム100を外部通信ネットワーク160に接続するために使用してもよいネットワークアダプタ170を含んでもよい。
通信ネットワーク160は、コンピュータユーザに対し、ソフトウェアおよび情報を電子的に通信し転送する手段を提供することができる。
さらに、通信ネットワーク185は、分散処理を提供してもよく、それには、いくつかのコンピュータと、タスクを実行する際の作業負荷の共有または協働努力とが必要である。
示したネットワーク接続は例示的なものであり、コンピュータ間で通信リンクを確立する他の手段を使用してもよい、ということが理解される。
例示的なコンピュータシステム100は、本明細書で説明したシステムおよび方法が動作してもよいコンピューティング環境を単に例示するものであり、本明細書で説明した発明の概念をさまざまなコンポーネントおよび構成を有するさまざまなコンピューティング環境で実施してもよいため、異なるコンポーネントおよび構成を有するコンピューティング環境において本明細書で説明したシステムおよび方法の実施態様を限定するものではない、ということが理解される。
[データ通信アーキテクチャ]
図2乃至図4は、例示的なコンピューティング環境で使用される例示的なデータ通信アーキテクチャのブロック図を示す。
例示的なデータ通信アーキテクチャを、コンピューティング環境のコンポーネントとして実施してもよく、かかるアーキテクチャは、SERDESコンポーネントを使用してもよい。
特に図2は、例示的なデータ通信アーキテクチャ200のブロック図を示す。
図2に示すように、データ通信アーキテクチャ200は、物理リンク220によりデータ230を通信するように協働するデータ通信インタフェースカード205および210を備える。
データインタフェース通信カード205および210は、少なくとも1つの送信コアと少なくとも1つの受信コアとを備える。
物理リンク220は、物理コネクタ225を介してデータ通信インタフェースカード205および210に接続する。
動作時、例示的なコンピューティング環境(図示せず)は、データ通信インタフェースカード205および210と協働して、データ通信インタフェースカード205および210間でデータを通信する。
例示的な実施態様では、データ通信インタフェースカードは、例示的なコンピューティング環境(図示せず)内の地理的に別々の場所に存在してもよく、あるいは例示的なコンピューティング環境(図示せず)のプリント回路基板(PCB)のうちの1つの一部として存在してもよい。
図示するように、物理リンク220およびデータ230上の矢印によって示すように、データを、データ通信インタフェース205および210の送信コアと受信コアとの間で、選択された方向にまたは双方向に通信することができる。
また、異なる物理リンク220媒体を示すために、物理リンク220を線の太さが異なるように示す、ということが理解される。
さらに、図示するように、破線ボックス215は、例示的なデータ通信バックプレーンのコンポーネントを示す。
提供する実施態様では、バックプレーン215を、データを通信するように動作する一対の送信・受信コアを有するように示す。
特に、データは、データ通信インタフェース205の送信コア235により、物理コネクタ225および物理リンク220を通してデータ通信インタフェース210の受信コア245に通信するために処理される。
同様に、データは、データ通信インタフェース210の送信コア250により、データ通信インタフェース205の受信コア240に通信するために処理されることも可能である。
さらに、送信・受信コアの対235、240および245、250は、協働して通信チャネルを形成してもよい。
通信チャネルとして、送信・受信コアの対を、8ビット10ビット(8B10B)符号化等の選択された符号化プロトコルに従ってデータを処理するように割り当てかつトレーニングしてもよい。
さらに、図2に示すように、データ230は、複数のパケットを有してもよい。
特に、データ230は、ヘッダ部とデータパケット部とを含んでもよい。
データパケット部は、さらに、小型データパケットを含んでもよい。
提供する例示的な実施態様では、小型パケットを、標準のフルサイズのデータパケットよりサイズが小さいデータパケットとみなすことができる、ということが理解される。
動作時、さまざまなデータ、制御、トレーニングおよびチャネル管理情報を、例示的なデータ通信アーキテクチャ200によりデータ230として通信することができる。
図3は、例示的な送信コア環境300のブロック図を示し、そのコンポーネントとそれらの協働とを示す。
図3に示すように、例示的な送信コア環境300は、送信コア300−1から送信コア300−nの範囲の複数の送信コアを備える。
送信コア300−1を、ロジックブロックと、それぞれシリアライザ1からシリアライザnまでかつドライバ1からドライバnまでの複数のシリアライザおよびドライバと、を備えるように示す。
さらに、送信コア300−1は、外部データ通信コンポーネント(図示せず)と協働してクロック信号CLKを取得する。
また、図示するように、送信コア300−1は、送信コア300−1のコンポーネント(たとえば、シリアライザ1)に対して、データ通信動作に従って機能を実行するように命令する命令セットを保持するロジックを備える。
送信コア300−1のロジックはまた、限定されないがリンクトレーニングステータスモニタ、リンクトレーニングモジュール、監視モジュール、データバッファ、リンクトレーニングモジュール、パリティビットモジュールおよびデータ送信確認応答モジュールを含む、データ通信動作中に使用される1つまたは複数のモジュールおよびメカニズムを保持するように作用してもよい。
動作時、データを、送信コア300−1のシリアライザのうちの1つに対する入力として提供する。
データを、選択された符号化プロトコルに従って符号化し、送信コアのドライバのうちの1つにより、送信コアの出力チャネルのうちの1つにおいて協働するデータ通信コンポーネントに通信するために準備する。
符号化プロトコルは、CLK信号を使用することにより、そのCLK信号の選択されたサイクル(複数可)内で複数のビットを符号化してもよい。
たとえば、送信コア300−1のロジックによって提供される命令により、データAを、送信コア300−1のシリアライザ1が、選択された符号化プロトコルに従って符号化し、ドライバ1が、通信するためにチャネルA出力における符号化データを生成するように準備する。
同様に、データBを、送信コア300−1のシリアライザ2が、選択された符号化プロトコルに従って符号化し、ドライバ2が、通信するためにチャネルBにおける符号化データを生成するように準備してもよい。
かかる符号化プロセスとデータ通信の準備とを、送信コア300−1の残りのシリアライザおよびドライバと送信コア環境300の他の送信コアとにわたって実行する。
図4は、例示的な受信コア環境400のブロック図を示し、そのコンポーネントとそれらの協働とを示す。
図4に示すように、例示的な受信コア400は、受信コア400−1から受信コア400−nまでの範囲の複数の受信コアを備える。
受信コア400−1を、ロジックブロックと、それぞれデシリアライザ1からデシリアライザnまでかつドライバ1からドライバnまでの複数のデシリアライザおよびドライバと、を備えるように示す。
さらに、受信コア400−1は、外部データ通信コンポーネント(図示せず)と協働してクロック信号CLKを取得する。
また、図示するように、受信コア400−1は、受信コア400−1のコンポーネント(たとえば、デシリアライザ1)に対し、データ通信動作に従って機能を実行するように命令する命令セットを保持するロジックを備える。
受信コア400−1のロジックはまた、限定されないがリンクトレーニングステータスモニタ、リンクトレーニングモジュール、監視モジュール、データバッファ、リンクトレーニングモジュール、パリティビットモジュールおよびデータ送信確認応答モジュールを含む、データ通信動作中に使用される1つまたは複数のモジュールおよびメカニズムを保持するように作用してもよい。
動作時、符号化データを、受信コア400−1のデシリアライザのうちの1つに対する入力として提供する。
データを、選択された復号プロトコルに従って復号し、受信コアのドライバのうちの1つにより、受信コアのデシリアライザの出力のうちの1つにおいて協働するデータ通信コンポーネントに通信するために準備する。
復号プロトコルは、CLK信号を使用することにより、CLK信号の選択されたサイクル(複数可)内で複数のビットを復号してもよい。
たとえば、受信コア400−1のロジックによって提供される命令により、符号化データAを、受信コア400−1のデシリアライザ1が、選択された復号プロトコルに従って復号し、ドライバ1が、通信するためにデータAを生成するように準備してもよい。
同様に、符号化データBを、受信コア400−1のデシリアライザ2が、選択された復号プロトコルに従って復号し、ドライバ2が、通信するためにデータBを生成するように準備してもよい。
かかる復号プロセスとデータ通信の準備とを、受信コア400−1の残りのデシリアライザおよびドライバと受信コア環境400の他の受信コアとにわたり実行する。
総合して図3および図4は、データを、1つまたは複数の受信コアによる復号および後続処理のために、1つまたは複数の送信コアが通信するために符号化するような、例示的な通信チャネル環境を説明する。
別々のコンポーネントとして説明するが、送信コアと受信コアとが単一の通信コンポーネント(図2のデータ通信インタフェース205を参照)に存在してもよい、ということが理解される。
さらに、送信コアと受信コアとは、対として動作することにより1つまたは複数の双方向データ通信チャネルを形成してもよい。
[通信リンクを介するデータの通信]
図5は、例示的なデータ通信アーキテクチャ200が通信チャネルを確立する場合に実行する処理を示す。
図示するように、処理はブロック500で開始し、ブロック505に進んで、動作のために通信コンポーネントを起動する。
そこから、処理はブロック510に進み、データ通信アーキテクチャコンポーネント間に通信リンクを確立する。
そして、ブロック515において、通信チャネルを形成するように通信リンクをトレーニングする。
そして、ブロック520において、通信チャネルをテストするために、トレーニングデータを通信チャネルにわたって送信する。
そして、ブロック525において、通信チャネルテストが成功したか否かを判断するために検査する。
成功した場合、処理はブロック540に進み、テストが成功した通信チャネルにより通信すべきデータがあるか否かを判断するために検査する。
ブロック540において、通信すべきデータがないと判断された場合、処理はブロック525に戻る。
しかしながら、テストが成功しトレーニングされた通信チャネルにより通信すべきデータがある場合、処理はブロック545に進み、シリアライザによりデータを符号化する。
そして、ブロック550において、符号化データを通信チャネルにより協働するデシリアライザに通信する。
そして、ブロック555において、デシリアライザによりデータを復号する。
そして、ブロック560において、データの通信が成功したか否かを判断するために検査する。
データの送信が成功した場合、処理はブロック540に戻り、そこから続行する。
しかしながら、データの通信が成功しなかった場合、処理はブロック565に進み、デシリアライザが、シリアライザによりデータが再送信されるように要求する。
そこから、処理はブロック550に戻り、そこから続行する。
しかしながら、ブロック525において、通信チャネルテストが成功しなかったと判断された場合、処理はブロック530に進み、通信リンクを保持する。
そこから、処理はブロック535に進み、通信リンクコンポーネント間で制御情報を通信する。
そこから、処理はブロック520に戻り、そこから続行する。
動作時、例示的な実施態様では、トレーニングのシーケンスを通信リンクのデシリアライザによって管理する。
特に、初期トレーニングを、デシリアライザにおける選択されたソフトウェアタイプのレジスタの書込みの指示を認識した時に完了したとみなす。
かかる時点で、通信チャネルのシリアライザによりリンク上にデータを押し出す。
デシリアライザ動作の文脈では、デシリアライザは、デシリアライザに対し、リンク上に協働するシリアライザに対して初期化を開始するように通知するアクティビティを検出するように命令する、1つまたは複数の命令セットを保持する。
通信チャネルのデシリアライザおよびシリアライザは、チャネルに対し起動するように命令する少なくとも1つの命令セットを保持する。
正常に起動すると、チャネルごとのセルフテストを実行し、そこからの結果を収集し比較する。
そして、命令セットは、シリアライザおよびデシリアライザに対し、デシリアライザが期待する選択されたデータパターンを通信するように命令し、それにより、デシリアライザは、シリアライザおよびデシリアライザが利用する符号化および復号プロトコルによって使用されるビット単位グループ化を確定することができる。
さらに、第2の認識可能なデータパターンをデシリアライザに通信し、それによってデシリアライザが小型パケットデータ通信であるものと認識する。
小型パケットデータ通信を設定することにより、デシリアライザは、小型パケットを、それらが最初に通信された方法に一致するグループ化において合わせて適合させるように動作することができる。
第2のデータパターンの通信および処理が成功すると、通信リンクのデシリアライザからシリアライザに、トレーニングが完了したことを示す制御信号を送信する。
この時点で、データパケットをトレーニング済みのチャネルを介して通信することができる。
さらに、例示的な実施形態では、通信リンクにわたり誤りが発生すると、そのリンクは再トレーニングプロセスを実行してもよい。
リンク再トレーニングは、先に通信チャネルコンポーネントを起動することを除き、上述したリンクトレーニングに類似する。
再トレーニングを、限定しないが通信リンクにわたる誤りの認識を含む複数のイベントにより、または通信リンクの受信端によって生成された誤り信号をリンクにおいて受信することにより、トリガしてもよい。
[データ通信ギャップ(データ到達タイミング)の処理]
例示的なデータ通信アーキテクチャは、協働するコンポーネント間での不確実なデータ到達時刻を処理することができる。
SERDESデータ通信アーキテクチャの文脈では、SERDESリンクの受信端から抽出されたデータを、ローカルクロックに厳密に同期させなくてもよい。
言い換えれば、ローカルクロックのいかなる所与のサイクルにおいても、リンクは提示すべき新たな有効データを有しても有していなくてもよい。
例示的な実施態様では、上述したように、データトランザクションを、リンクを介して「パケット」フォーマットで渡す。
各パケットを、トランザクションが含む情報およびデータの量に応じて1つまたは複数の小型パケットから形成する。
小型パケットを、所与の期間中にリンクが転送するある単位のペイロードとみなしてもよい。
パケットは、ヘッダパケットと、トランザクションを充填するいくつかの小型データパケットと、を含んでもよい。
ヘッダは、パケットのタイプを記述する情報と、パケットの宛先アドレス等、パケットを処理するための他の情報と、を含んでもよい。
例示的なコンピューティング環境のデータ通信インフラストラクチャを詳しく考察すると、SERDESリンクを介して渡されたトランザクションが、その最終宛先に向かう途中に別のSERDESリンクにルーティングされる場合もあり得る。
かかる文脈では、データトランザクションは、その小型パケットのすべての転送を完了するために、SERDESリンクにおいていくつかのサイクルを経る場合がある。
完全なトランザクションが次の通信リンクに転送される前にバッファリングされる場合、望ましくないレイテンシがもたらされる可能性がある。
また、リンクがパケットの一部を送信するその最初の試みに失敗することにより、パケットの開始と終了との間に長い休止がもたらされる場合もある。
さらに、異なるリンクの周波数動作が異なる可能性があり、それにより、データがより低速なリンクからきている場合により高速なリンク上で小型パケットの流れにギャップがもたらされる可能性がある。
例示的なデータ通信アーキテクチャは、かかる場合を、小型および標準サイズパケットの流れにギャップが存在する場合に、この適用に対しSERDESリンクの正しい動作を可能にするメカニズムを提供することによって処理する。
動作時、リンクの送信端(図2の送信コア235を参照)におけるSERDESリンクインタフェースは、送信する次の有効な小型パケットがない場合、そのリンクを介して送信されるべき選択された符号化または制御値を利用する。
さらに、リンクの受信端(図2の受信コア245を参照)は、そのクロックサイクルの開始時にそのリンクインタフェースにおいて新たに受信されたデータが見つからない場合、または符号化小型パケットが見つかる場合に、発信する制御小型パケットを生成する。
データ処理中は、制御小型パケットは無視される。
図6は、図2の例示的なデータ通信アーキテクチャ200を介して通信されているデータに対するデータ通信ギャップを処理する場合に実行される処理を示す。
図示するように、処理はブロック600で開始し、ブロック605に進み、例示的なデータ通信アーキテクチャの通信チャネルを介して通信するべきデータがあるか否かを判断するために検査する。
通信すべきデータがない場合、処理はブロック600に戻り、そこから続行する。
しかしながら、通信すべきデータがある場合、処理はブロック610に進み、通信するべきデータに通信ギャップがないか監視する。
動作時、データを、データ通信アーキテクチャのシリアライザにより符号化される前にデータバッファにバッファリングしてもよい。
データバッファにおいて、ギャップについてデータを処理する。
そして、ブロック615において、データ通信ギャップがあったか否かを判断するために検査する。
データ通信ギャップがない場合、処理はブロック620に進み、シリアライザによりデータを協働するデシリアライザに通信する。
そこから、処理はブロック605に進み、そこから続行する。
しかしながら、ブロック615において、データギャップがあると判断された場合、処理はブロック625に進み、制御小型パケットを生成する。
そして、ブロック630において、制御小型パケットを協働するデシリアライザに通信することにより、協働するデシリアライザに対し通信ギャップがあることを通知する。
デシリアライザは、ブロック635において制御小型パケットを処理し、ブロック640においてデータ通信アーキテクチャを通して制御小型パケットを伝播する。
そして、処理はブロック645で終了する。
[誤り検出]
図2の例示的なデータ通信アーキテクチャ200はまた、そのコンポーネント間で通信されているデータに対し誤り検出を実行することも可能である。
SERDESデータ通信アーキテクチャの文脈では、リンクを介して正確に渡されなかったデータを通信するために、データ転送の再試行が必要な場合もある。
送信を再試行するために、まず誤りを検出する。
データ通信動作を続けるように再試行される第1の小型パケットを適当に識別するために、誤りは検出可能である。
提供する実施態様では、SERDESリンクに対してデータをフォーマットするために使用してもよい符号化規格を、SERDESリンクが、それが利用する高周波数でデータを送信することが可能であるために必要とする電気的特性に従うように設計してもよい。
さらに、リンクの受信端においてビットストリームからクロックを抽出することができるように、チャネルにおいて十分な遷移を実行してもよい。
さらに、ビットパターンには、中立のディスパリティ(neutral disparity)があってもよい。
言い換えれば、いつでも、送信される1および0の数は、等しくても、最大1つだけ異なってもよい。
例示的な符号化プロトコルは、シングルビット誤りにより不正な符号化がもたらされるように動作する。
しかしながら、場合によっては、不正な符号化は正当であるように見え、間違った予測ディスパリティを生成する可能性がある。
誤りがこのタイプである場合、この誤りは、後続するデータパターンによってリンクの受信端においてディスパリティが+/−2になるまで検出されない。
SERDESデータ通信アーキテクチャでは、単一リンクが、そのチャネルを介して迅速に大量の情報を渡すように動作することができる。
したがって、リンクに特別な「終了パケット」制御文字を送信することにより、誤りを抑制することができる。
これらにより、データブロックが解放される前に誤りが確実に認識されるようになる。
この手法により、特別な制御文字を送信する必要があるというオーバーヘッドが追加され、データ通信プロセスが非効率になりレイテンシが追加される可能性がある。
実際には、制御文字を送信するためには1符号化サイクルがかかる可能性がある。
複数のSERDESリンクを有するデータ通信アーキテクチャでは、制御文字を処理するために大量の時間が必要となり、データ通信が実質的に非効率になる、ということが理解される。
例示的な実施態様では、データ通信アーキテクチャが、受信端(図2のデータ通信インタフェース210の受信コア245を参照)と送信端(図2のデータ通信インタフェース205の送信コア235)との通信されているデータのディスパリティを比較することにより、符号化規格の誤りの第1の兆候を特定することができる、ということを認識する、代替手法を提供する。
受信機において、データを送信するために使用されるディスパリティが既知である場合、誤りを直ちに検出することができる。
これを達成するために、小型パケットを送信するために使用されるリンクのディスパリティを収集し、それらを使用して5ビット誤り符号を生成する。
そして、この5ビット値をリンクの受信端に渡す。
例示的な実施態様では、1つのさらなるSERDESリンクチャネルを使用してかかる誤り符号をリンクの受信端に通信してもよい。
そして、この値をリンクの受信端において使用することにより、リンクの受信端においてディスパリティを検査し、ディスパリティが予期された値ではない場合に通信チャネルの送信端に対しデータを再送信するように直ちに要求することができる。
動作時、例示的な実施態様は、誤り符号を通信する時に5ビット・10ビット符号化を使用する。
5ビットを2回、すなわち1回は正の真として、1回は負の真として送信する。
このように、10ビットパターンには、5つの1と5つの0とが含まれ、中立のディスパリティが達成される。
かかる処理はまた、10ビット符号化方式を使用する場合にシステムタイミングを維持することができるように効率的である。
さらに、例示的な実施態様では、リンクトレーニングの完了時、リンクを介してデータが通信可能である。
データは、ヘッダ、通信するために入手可能な場合は小型データパケット、または小型リンク管理データパケット等の制御情報を含んでもよい。
このデータは、タイプに係らず、符号化される時に、関連するディスパリティを有する1と0とのパターンを生成する。
図7は、例示的なデータ通信アーキテクチャ200が誤り検出を実行する場合に実行する処理を示す。
図示するように、処理はブロック700で開始し、ブロック705に進み、図2の例示的なデータ通信アーキテクチャ200のコンポーネントを介してデータを通信すべきか否かを判断するために検査する。
ブロック705の検査により、データを通信すべきでないと判断された場合、処理はブロック700に戻り、そこから続行する。
しかしながら、ブロック705において、データを通信すべきであると判断された場合、処理はブロック710に進み、通信されるべきデータに対するディスパリティを計算する。
そこから、ブロック715において、シリアライザにより、計算されたディスパリティを使用して、通信されるべきデータの誤り符号を計算する。
そして、ブロック720において、シリアライザにより、計算された誤り符号とともにデータを協働するデシリアライザに通信する。
デシリアライザは、そのデータを受け取り、ブロック725において、通信されたデータに基づき誤り符号を計算する。
そこから、ブロック730において誤り符号が一致するか否かを判断するために検査する。
ブロック730において誤り符号が一致しない場合、処理はブロック735に進み、そこでデシリアライザによりデータを再通信する要求をシリアライザに送信する。
ブロック740においてシリアライザは再通信するデータを取得し、処理はブロック710に進みそこから続行する。
しかしながら、ブロック730において、それぞれシリアライザおよびデシリアライザが計算することによって生成された誤り符号が一致すると判断された場合、処理はブロック745に進み、データトランザクションを継続する。
そこから、処理はブロック700に進みそこから続行する。
リンク障害
例示的なデータ通信アーキテクチャ200はまた、動作中にリンクに障害が発生した場合にそのリンク障害を処理することも可能である。
例示的な実施態様は、リンクに障害が発生した場合に例示的なコンピューティング環境のインフラストラクチャとの接続がアクティブであり続けることを可能にし、コンピューティング環境が不安定に(たとえば、クラッシュ)ならないように動作する。
SERDESデータ通信アーキテクチャの文脈では、コンピュータのインフラストラクチャにおけるポイント・ツー・ポイント接続を、データ通信帯域幅を増大させるために協調して動作しているいくつかのSERDESリンクから構成してもよい。
例示的な実施態様により、他の通信リンクのうちの1つに障害が発生した場合に「スペア」リンクチャネルに対して展開される1つの追加のSERDESリンクを使用することができる。
さらに、例示的な実施態様は、リンクチャネルに信頼性がないことを検出しそれを使用しなくてもよい。
この実施態様はまた、リンクチャネルを使用すべきではないリンクの受信端(図2のデータ通信インタフェース210の受信コア245)がそのリンクの送信端(図2のデータ通信インタフェース205の送信コア235を参照)と通信するのを可能にするプロトコルも提供する。
動作時、例示的な実施態様は、リンクトレーニングシーケンスの間にリンクに障害が発生したと判断する。
リンクトレーニングは、データの標準送信時または初期リンク立上げ時に誤りが検出されることに応じて発生する。
リンクに障害が発生したという認識には、特に、そのリンクに対する存在検出信号の喪失、そのリンクがリンクセルフテストに合格しなかったこと、そのリンクが適当な整合を通知しなかったこと、がある。
リンクの障害に応じて、リンクの受信端のロジックは、論理リンクチャネルを障害リンクから、障害物理リンクから離れた最後の番号のリンクにシフトさせる。
さらに、新たなマッピングを5ビットフィールドにおいて符号化し、リンクの送信端に返す。
そこで、新たなマッピングを使用して、送信ロジックを、適当な物理チャネルに対する次のトレーニング試行においてリンクを駆動するようにプログラムする。
図8は、例示的なデータ通信アーキテクチャ200がリンク障害を処理する場合に実行する処理を示す。
図示するように、処理はブロック800で開始し、ブロック805に進み、データ通信アーキテクチャが通信リンクのトレーニングを開始する。
そこから、ブロック810において、データ通信アーキテクチャ200のシリアライザとデシリアライザとを関連付けることにより論理通信リンクを作成する。
そして、ブロック815において、作成された論理通信リンクを物理通信リンクにわたって動作させる。
そこから、処理はブロック820に進み、通信リンクのトレーニングを監視することにより任意のリンク障害を特定する。
そして、ブロック825において、リンクに障害があるか否かを判断するために検査する。
ブロック825において検査によって判断されるように障害がない場合、処理はブロック845に進み、リンクのトレーニングを完了する。
そして、ブロック850において、トレーニング済みリンクに対し、データ通信トランザクションを実行する。
そして、処理はブロック855において終了する。
しかしながら、ブロック825において、リンク障害が発生したと判断されると、処理はブロック830に進み、論理通信リンクを障害のある物理通信リンクから離れるようにシフトさせる。
ブロック835において、新たな論理および物理通信リンク構成を提供する新たなマッピングを作成し、ブロック840において、その新たなマッピングに従って論理および物理通信リンクを整合させる。
そこから、処理はブロック815に戻り、新たにマッピングされたチャネルを適当に動作するために再テストする。
そこから、処理は図示するように継続する。
選択された数の障害が試行された後、データ通信アーキテクチャ200の協働するコンポーネントを介して、リンクに障害が発生したことを示す信号を送信する。
かかる文脈では、データ通信トランザクションに対しそのリンクを利用しない。
[トレーニングおよび失敗したトレーニング]
例示的なデータ通信アーキテクチャ200はまた、障害のあるリンクの再トレーニングを処理することも可能である。
SERDESデータ通信アーキテクチャの文脈では、例示的な実施態様は、高帯域幅および低レイテンシを提供するように合せて使用される複数の多くのSERDESリンクを採用する。
実際には、SERDESリンクがデータを転送するために使用することが可能になる前に、それらをまず、リンクの受信端がリンクを適当に整合させるために使用することができる適当な既知のデータシーケンスを送信することにより「トレーニングする」。
さらに、トレーニングにより、リンクが他の既知のデータシーケンスを正確に送信することをテストする機会も提供される。
環境によっては、リンクトレーニングは第1の試行中に失敗し第2の試行中に成功する場合がある。
この文脈では、例示的な実施態様は、トレーニングが第2の試行中に成功するのを可能にすることができる情報を、通信チャネルの送信端(図2のデータ通信インタフェース205の送信コア235を参照)から通信チャネルの受信端(図2のデータ通信インタフェース210の受信コア245を参照)に通信するように動作する。
例示的な実施態様は、さらに、リンクトレーニングが失敗した場合にリンクを介して情報を渡すメカニズムを提供する。
動作時、リンクをテストするデータシーケンスを、それらがエンコーダに提供される前に、符号化方式の先のディスパリティ、すなわち中立のディスパリティに係らず、同じビット符号化を生成するような方法で、フォーマットする。
リンクの受信端において、SERDESインタフェースからのデータは、中立のディスパリティを維持するようにフォーマットされているため、静的なビット受信パターンである。
したがって、リンクと受信ロジッククロックの相互との間の整合が保証されない場合であっても、提供されたデータを静的な値として扱うことができる。
さらに、動作時、例示的な実施態様は、通信リンクの受信端においてデータシーケンスのコピーを互いに比較することにより、不良である可能性のある任意の1つのリンクを失格させる。
さらに、その後、その情報を使用して、リンクの各終端を、任意の欠陥について再トレーニングするためにデータの到達がいかに予測されるかを変更するように再プログラムしてもよい。
図9は、例示的なデータ通信アーキテクチャ200がリンクトレーニングの失敗を処理する場合に実行する処理を示す。
図示するように、処理はブロック900で開始し、ブロック905に進み、例示的なデータ通信アーキテクチャが通信リンクのトレーニングを開始する。
そこから、処理はブロック910に進み、リンク管理データを生成する。
そして、ブロック915において、リンク管理データを、リンク管理を介してシリアライザからデシリアライザへ通信する。
ブロック920において、リンクトレーニングの失敗を特定するためにトレーニングを監視する。
そして、ブロック925において、任意のリンクトレーニングの失敗があったか否かを判断するために検査する。
リンクトレーニングの失敗がない場合、処理はブロック950に進み、そこでデータ通信トランザクションを実行する。
そこから、処理はブロック955で終了する。
しかしながら、ブロック925において、リンクトレーニングの失敗があると判断された場合、処理はブロック930に進み、デシリアライザによりリンク管理データを処理する。
そして、ブロック935において、協働するデシリアライザにわたりリンク管理データを比較することによりトレーニングの失敗を特定する。
そして、ブロック940において、シリアライザおよびデシリアライザを、リンクトレーニングの失敗に関して再トレーニングするように再プログラムする。
そこから、処理はブロック905に戻り図示するように継続する。
ブロック925において判断されるように、選択された数の失敗の後、そのリンクに障害が発生しておりそれをデータ通信トランザクションに使用しない、と判断する、ということを理解する。
この文脈において、図8によって説明したような追加の処理を実行することにより論理および物理チャネルを再マッピングしてもよい。
破損データの処理
例示的なデータ通信アーキテクチャ200はまた、データを破損しているものとして特定しマーキングすることにより、データ通信アーキテクチャの頑強性を向上させることも可能である。
SERDESデータ通信アーキテクチャの文脈では、例示的な実施態様は、データがリンクを介する送信が成功しない場合を認識するメカニズムを提供し、かかるデータ破損をマーキングする。
これは、小型データパケットが送信される前に破損した場合に行ってもよい。
例示的な実施態様は、障害のあるデータが受け入れられるのを可能にするように動作し、それによりリンクが、障害のある小型データパケットの後にデータを送信することができる。
さらに、障害のある小型データパケットを破損したものとしてマーキングしその宛先に送信する。
さらに、例示的な実施態様は、リンクが、破損しているものとしてマーキングされた小型データパケットを受け入れ、目下横断しているリンクに障害が発生した時に進行中の任意のトランザクションを、完了することができるようにする。
これを、トランザクションを充填するように作成されたデータを送信し、全データ、すなわち部分データおよびフィラーデータを破損したものとしてマーキングすることにより達成する。
そうする際、部分的に送信されたトランザクションが他のリンクインタフェースを妨げないようにし、本インフラストラクチャが、障害リンクをアクティブに使用していたプロセスに対する障害を含む可能性がないようにする。
図10は、データ通信トランザクション中にデータを破損しているものとして特定しマーキングする場合に実行される処理を示す。
図示するように、処理はブロック1000で開始し、ブロック1005に進み、例示的なデータ通信アーキテクチャ200の協働するコンポーネント間で通信リンクを確立する。
そこから、処理はブロック1010に進み、確立された通信リンクを介するデータ送信を監視する。
ブロック1015において、通信リンクを介する送信が成功しないデータを特定する。
ブロック1020において、特定された送信が成功しなかったデータを、破損しているものとしてマーキングする。
そこから、ブロック1025において、破損データが部分的なデータを含むか否かを判断するために検査する。
ブロック1025における検査により、部分的なデータがないと判断された場合、処理はブロック1040に進み、破損しているものとしてマーキングされたデータを、データ通信アーキテクチャのコンポーネントによって処理する。
そこから、ブロック1045において、破損しているものとしてマーキングされたデータを、データ通信アーキテクチャにわたって伝播する。
そして、ブロック1050においてデータ通信トランザクションを実行する。
その後、ブロック1055において処理を終了する。
しかしながら、ブロック1025において、部分的なデータがあると判断された場合、処理はブロック1030に進み、そこで部分的な破損データに付加するフィラーデータを生成する。
そして、ブロック1035において、フィラーデータと部分的な破損データとを、破損データの1つとしてまとめてマーキングする。
そこから、処理はブロック1040に進み、そこから継続する。
さらに、例示的な実施態様では、データを、通信リンクトレーニングの成功した試行の1つまたは複数の繰返しの結果として、破損しているものとして特定する。
言い換えれば、通信リンクのトレーニングを最終的に成功させることができるが、特定の小型データパケットの送信が繰返し失敗する場合、問題はデータの問題であると判断する。
[誤り検出に使用する誤り符号]
図2の例示的なデータ通信アーキテクチャ200はまた、大量な処理を実行することなく複数の通信チャネルにわたって効率的に誤りを検出することも可能である。
SERDESデータ通信アーキテクチャの文脈では、例示的な実施態様は、データ通信アーキテクチャの符号化プロトコルを使用して動作する誤り符号化を提供する。
動作時、トランザクション(またはデータパケット)を、小型データパケットと呼ばれる単位でいくつかのリンクチャネルの集まりを介して渡し、各トランザクションは、そのサイズに従って複数の小型データパケットを必要とする。
各小型データパケットは、ある数の(たとえば10)ビット符号化プロトコルで送信されるチャネル毎のある数の(たとえば8)論理ビットを含む。
この誤り検出方式は、一度に1つの小型データパケットに対して動作する。
実際には、チャネル毎に使用される標準8B10B符号化は、1つのチャネル内の単一ビット誤りを検出することができる。
この検出をロジックと結合することにより、小型データパケットを伝送するチャネルにわたり8つのパリティビットを計算する。
パリティビットは、チャネルで送信されるデータのうちの8ビットの第1、2、3、…8ビットに基づく。
そして、これらの8つのパリティビットを、1つの追加のリンクチャネルを介して送信されるデータとして使用する。
受信端において通信チャネルによって送信されるデータに対しパリティビットを計算することにより、誤りを検出することができる。
図11は、例示的なデータ通信アーキテクチャ200が複数の通信チャネルにわたって誤りを検出する場合に実行する処理を示す。
図示するように、処理はブロック1100で開始し、ブロック1105に進み、例示的なデータ通信アーキテクチャ200のコンポーネント間で通信リンクを確立する。
そこから、処理はブロック1110に進み、nビットを有する符号化プロトコルに基づいて、通信されるデータに対しパリティビットを計算する。
そして、ブロック1115において、パリティビットをシリアライザからデシリアライザに通信リンクを介して通信する。
そして、ブロック1120において、デシリアライザによりパリティビットを処理する。
そして、ブロック1125において、パリティビットを使用して任意の誤りが特定されたか否かを判断するために検査する。
ブロック1125において誤りが特定されなかった場合、処理はブロック1135に進み、データ通信トランザクションを実行する。
そして、処理はブロック1140において終了する。
しかしながら、ブロック1125において誤りが特定されたと判断された場合、処理はブロック1130に進み、データをシリアライザからデシリアライザに再通信する。
そこから、処理はブロック1110に戻り、図示するように継続する。
データをシリアライザからデシリアライザへ再通信するように複数回試行した後、誤りが特定され続ける場合、かかるデータを、図10において上述した処理により破損されているとしてマーキングしてもよい、ということを理解する。
[リンクレベル再試行]
図2の例示的なデータ通信アーキテクチャ200はまた、そのコンポーネント間で成功したデータの転送に対して確認応答することも可能である。
SERDESデータ通信アーキテクチャの文脈では、トランザクションを、リンクを介して「パケット」形態で渡してもよい。
パケットを、トランザクションが含む情報およびデータの量に応じて1つまたは複数の小型パケットから形成してもよい。
小型データパケットを、リンクが一度に転送するように設計されているペイロードの単位とみなしてもよい。
パケットは、ヘッダ小型パケットと、それに続く、トランザクションを充填するいくつかの小型データパケットと、を含んでもよい。
ヘッダは、特に、パケットのタイプを記述する情報と、パケットの宛先アドレス等、パケットを処理するための他の情報と、を含んでもよい。
リンクを介して小型データパケットを再送信するかまたはその転送を再試行することができるようにするために、例示的な実施態様は、確認応答信号がリンクの反対端から受信されるような時まで、リンクを介して転送される小型ヘッダおよびデータパケットをほぼすべてデータバッファに保持する。
成功した転送の確認応答が受信されると、その小型ヘッダおよびデータパケットを含むデータバッファエントリを、別の小型データパケットによって使用されるために解放することができる。
提供する実施態様では、概して、小型およびヘッダデータパケットを保持するためのリンクレベル再試行バッファエントリの数より多くの小型およびヘッダデータパケットを、リンクを介して送信することはできない。
リンクを介して小型データパケットを適当に転送することに失敗した場合、リンクを介して再送信されるべき第1の小型ヘッダおよびデータパケットは、確認応答されなかったデータバッファ内の最も古い小型データパケットである。
例示的な実施態様は、小型データパケットの成功した転送の確認応答を達成するメカニズムおよびプロトコルを提供する。
実際には、リンクを介して転送された小型データパケットには、小型データパケットが格納されているデータバッファのエントリアドレスに一致するタグが関連付けられている。
ヘッダ小型パケットは、成功した転送の確認応答に対して予約されたフィールドを含む。
ヘッダがリンクを介して送出されると、このフィールドに、その時点で受信が成功した最新の小型データパケットのアドレスが充填される。
そのアドレスを送信すると、確認応答が喪失された場合、次の確認応答がメカニズムを自己補正する。
リンクを介してアドレス確認応答を伝送する用意ができた有効なヘッダがない場合、例示的な実施態様は、リンクを介して確認応答を返すためにアイドルヘッダを作成する。
最後に、リンク転送障害が補正された後であるが、正常動作が再始動する前、直前に受信が成功した小型データパケットのアドレスをリンク再始動シーケンスの一部として送信することにより、受信が成功した小型データパケットに対し適当に確認応答されることを確実にする。
図12は、図2の例示的なデータ通信アーキテクチャ200が成功したデータ通信に対し確認応答を作成し処理する場合に実行する処理を示す。
図示するように、処理はブロック1200で開始し、ブロック1205に進み、図2のデータ通信アーキテクチャ200の協働するコンポーネント間で通信リンクを確立する。
そして、ブロック1210において、協働するデータバッファに小型データパケットを格納する。
そこから、処理はブロック1215に進み、小型データパケットに対してアドレスを生成する。
そして、ブロック1220において、小型データパケットアドレスを有するデータを、送信側シリアライザから通信する。
そして、ブロック1225において、データが受信側デシリアライザに適当に通信されたか否かを判断するために検査する。
ブロック1225において、検査によりデータが適当に通信されなかったことが示されると、処理はブロック1230に進み、通信リンクの送信端により、直前に受信された小型データパケットアドレスを使用してデータを再送信するように要求する。
そこから、処理はブロック1220に戻り図示するように継続する。
しかしながら、ブロック1225において、データが適当に通信されたと判断されると、処理はブロック1235に進み、通信リンクの受信端から通信リンクの送信端へ確認応答を伝送するためにヘッダが利用可能であるか否かを判断するために検査する。
現発信パケットを完了するためにまず小型データパケットが送信されるため、確認応答が準備される前に時間遅延が発生する可能性がある。
ブロック1235において、検査により利用可能なヘッダがあることが指示された場合、処理はブロック1255に進み、小型データパケットアドレスを通信チャネルの受信端から通信チャネルの送信端に、利用可能なヘッダを使用して成功した転送の確認応答として通信する。
処理はブロック1260に進み、協働するデータバッファから小型データパケットアドレスを解放する。
そして、処理はブロック1250で終了する。
しかしながら、ブロック1235において、利用可能なヘッダがないと判断された場合、ブロック1240において成功した転送の確認応答を伝送するためにアイドルヘッダを作成する。
ブロック1245において、アイドルヘッダを通信リンクの受信端から通信リンクの送信端に通信する。
ここでもまた処理はブロック1260に進み、協働するデータバッファから小型データパケットアドレスを解放する。
そして、処理はブロック1250において終了する。
要するに、本明細書で説明した装置および方法は、データレイテンシを低減する、コンピューティング環境通信ファブリックとして使用するために採用するデータ通信アーキテクチャを提供する。
しかしながら、本発明に対しさまざまな変更形態および代替構造が可能であるということが理解される。
本発明を本明細書で説明した特定の構造に限定するようには意図されていない。
それどころか、本発明は、本発明の範囲および精神内にあるすべての変更形態、代替構造および等価形態を包含することが意図されている。
また、本発明を、種々のコンピュータ環境(非無線および無線コンピュータ環境をともに含む)、部分的なコンピューティング環境および現実世界の環境において実施してもよい、ということも留意すべきである。
本明細書で説明したさまざまな技法を、ハードウェアまたはソフトウェアもしくはそれら両方の組合せで実施してもよい。
好ましくは、それら技法を、プロセッサ、プロセッサが読取可能な記憶媒体(揮発性および不揮発性メモリおよび/または記憶素子を含む)、少なくとも1つの入力デバイスおよび少なくとも1つの出力デバイスを有するプログラマブルコンピュータを保持するコンピューティング環境において実施する。
さまざまな命令セットと協働するコンピューティングハードウェアロジックをデータに適用することにより、上述した機能を実行し、出力情報を生成する。
出力情報を、1つまたは複数の出力デバイスに適用する。
例示的なコンピューティングハードウェアが使用するプログラムを、好ましくは、コンピュータシステムと通信する高水準手続き型またはオブジェクト指向型プログラミング言語を含むさまざまなプログラミング言語で実施してもよい。
例示的に、本明細書で説明した装置および方法を、望ましい場合はアセンブリまたは機械言語で実施してもよい。
いずれの場合も、言語は、コンパイル型またはインタプリタ型言語であってもよい。
かかるコンピュータプログラムの各々を、好ましくは、汎用または専用プログラマブルコンピュータが読取可能な記憶媒体またはデバイス(たとえば、ROMまたは磁気ディスク)に格納する。
それは、コンピュータが上述した手続きを実行するために記憶媒体またはデバイスを読み取る場合に、コンピュータを構成し動作させるためである。
また、本装置を、コンピュータプログラムとともに構成されたコンピュータ読取可能記憶媒体として実施されるようにみなしてもよく、そのように構成された記憶媒体により、コンピュータは、特定のおよび事前に定義された方法で動作する。
上記では、本発明の例示的な実施態様について詳細に説明したが、当業者は、本発明の新規な教示および利点から著しく逸脱することなく例示的な実施形態において多くの追加の変更形態が可能である、ということを容易に理解するであろう。
したがって、これらおよびすべてのかかる変更形態は、本発明の範囲内に含まれるように意図されている。
本発明を、以下の例示的な特許請求の範囲によってよりよく定義することができる。
本明細書で説明するシステムおよび方法の実施態様による例示的なコンピューティング環境のブロック図である。 例示的なデータ通信アーキテクチャの例示的なコンポーネントの協働を示すブロック図である。 データ通信アーキテクチャの例示的な実施態様による送信コアのブロック図である。 データ通信アーキテクチャの例示的な実施態様による受信コアのブロック図である。 例示的なデータ通信アーキテクチャがデータを通信している時に実行する処理を示すフローチャート図である。 例示的なデータ通信アーキテクチャが不確定なデータ到達を処理している時に実行する処理を示すフローチャート図である。 例示的なデータ通信アーキテクチャがデータ通信におけるビット誤りを検出している時に実行する処理を示すフローチャート図である。 例示的なデータ通信アーキテクチャがリンク障害に対処している時に実行する処理を示すフローチャート図である。 例示的なデータ通信アーキテクチャがリンク障害トレーニングに対処している時に実行する処理を示すフローチャート図である。 例示的なデータ通信アーキテクチャが破損データを処理している時に実行する処理を示すフローチャート図である。 例示的なデータ通信アーキテクチャが誤り検出を処理している時に実行する処理を示すフローチャート図である。 例示的なデータ通信アーキテクチャが成功したデータ通信に対して確認応答するために実行する処理を示すフローチャート図である。
符号の説明
110・・・中央処理装置、
115・・・コプロセッサ、
120・・・メモリコントローラ、
135・・・周辺装置コントローラ、
160・・・通信ネットワーク、
163・・・ディスプレイコントローラ、
170・・・ネットワークアダプタ、
180・・・コンピューティングアプリケーション、

Claims (10)

  1. シリアライザ(300−1)とデシリアライザ(400−1)とを採用するデータ通信アーキテクチャ(200)を有するコンピュータシステムにおいて、破損データを処理する方法であって、
    データパケットの通信のために前記シリアライザ(300−1)とデシリアライザ(400−1)との間の通信リンク(215)を確立すること、
    選択された通信プロトコルに従って前記シリアライザ(300−1)と前記デシリアライザ(400−1)とによる前記通信リンク(215)を介するデータ(230)の送信を監視すること(1010)、
    送信が成功しないデータを特定すること(1015)、および
    送信が不成功だったデータを破損しているものとしてマーキングすること(1020)
    を含む破損データを処理する方法。
  2. 破損しているものとしてマーキングされた部分的なデータ小型パケットを前記シリアライザ(300−1)から前記デシリアライザ(400−1)に通信すること
    をさらに含む請求項1に記載の破損データを処理する方法。
  3. 前記シリアライザ(300−1)により前記部分的なデータパケットを完了するためにフィラーデータを生成すること(1030)
    をさらに含む請求項2に記載の破損データを処理する方法。
  4. 破損しているものとしてマーキングされたデータを有するデータ通信トランザクションを処理すること(1040)
    をさらに含む請求項3に記載の破損データを処理する方法。
  5. 破損しているものとしてマーキングされた前記データを、前記データ通信アーキテクチャ(200)の協働するコンポーネントに伝播すること(1045)
    をさらに含み、
    前記データ通信アーキテクチャの前記協働するコンポーネントは、破損しているものとしてマーキングされた前記データを破損データとして処理する(1040)
    請求項1に記載の破損データを処理する方法。
  6. 破損しているものとして特定されたデータに対し小型パケットマーカを付加すること
    をさらに含む請求項1に記載の破損データを処理する方法。
  7. 前記デシリアライザ(400−1)によりデータ処理の一部として、いずれのデータが破損しているかを前記デシリアライザ(400−1)に対して特定するように前記小型パケットマーカを処理すること
    をさらに含む請求項6に記載の破損データを処理する方法。
  8. データが適当に送信されない場合を特定するために、前記通信リンク(215)を介して前記デシリアライザ(400−1)から前記シリアライザ(300−1)に制御信号を供給すること
    をさらに含む請求項1に記載の破損データを処理する方法。
  9. SERDESデータ通信アーキテクチャに対し破損データを処理する方法であって、
    SERDESリンクを介して成功しなかったデータトランザクションを特定すること(1015)、
    成功しなかったトランザクションからのデータを破損しているものとしてマーキングすること(1020)、および
    破損しているものとしてマーキングされた前記破損データを前記SERDESデータ通信アーキテクチャにわたって伝播すること(1045)
    を含む破損データを処理する方法。
  10. アクティブなSERDESリンクにおいてフィラーデータを使用することにより任意の部分的なトランザクションを完了すること(1030)およびかかるデータを破損しているものとしてマーキングすること(1035)
    をさらに含む請求項9に記載の破損データを処理する方法。
JP2005003559A 2004-01-12 2005-01-11 破損データを処理する方法 Expired - Fee Related JP3996928B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/756,530 US20050160328A1 (en) 2004-01-12 2004-01-12 Corrupt data

Publications (2)

Publication Number Publication Date
JP2005202956A true JP2005202956A (ja) 2005-07-28
JP3996928B2 JP3996928B2 (ja) 2007-10-24

Family

ID=34749373

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005003559A Expired - Fee Related JP3996928B2 (ja) 2004-01-12 2005-01-11 破損データを処理する方法

Country Status (2)

Country Link
US (1) US20050160328A1 (ja)
JP (1) JP3996928B2 (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7249285B2 (en) * 2004-03-25 2007-07-24 International Business Machines Corporation Address watch breakpoints in a hardware synchronization range
US7406625B2 (en) * 2004-08-17 2008-07-29 International Business Machines Corporation Protecting a code range in a program from breakpoints
JP4473700B2 (ja) * 2004-11-02 2010-06-02 富士通株式会社 パケット伝送装置およびパケット伝送方法
US8359497B2 (en) * 2010-06-18 2013-01-22 International Business Machines Corporation Determining the cause of serialization failures
US9176802B2 (en) * 2011-08-31 2015-11-03 Freescale Semiconductor, Inc. Integrated circuit device and method of identifying a presence of a broken connection within an external signal path
US9846623B2 (en) * 2015-08-20 2017-12-19 Qsigma, Inc. Simultaneous multi-processor apparatus applicable to acheiving exascale performance for algorithms and program systems
US11907074B2 (en) 2021-09-24 2024-02-20 International Business Machines Corporation Low-latency deserializer having fine granularity and defective-lane compensation
US11646861B2 (en) 2021-09-24 2023-05-09 International Business Machines Corporation Low-latency, high-availability and high-speed SerDes interface having multiple synchronization modes

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US189903A (en) * 1877-04-24 Improvement in the methods of mounting show-cards, maps
US149922A (en) * 1874-04-21 Improvement in machinery for burnishing heels of boots and shoes
US210071A (en) * 1878-11-19 Improvement in animal-traps
US3676859A (en) * 1970-12-23 1972-07-11 Ibm Data communication system incorporating device selection control
FI921268A (fi) * 1991-04-15 1992-10-16 Hochiki Co Detekteringssystem foer oeverfoerningsfel foer anvaendning i bevakningssystem foerebyggande av destruktioner
JPH1174868A (ja) * 1996-09-02 1999-03-16 Toshiba Corp 情報伝送方法およびその方法が適用される情報伝送システムにおける符号化装置/復号化装置、並びに符号化・多重化装置/復号化・逆多重化装置
EP0876023A1 (en) * 1997-04-30 1998-11-04 Sony Corporation Transmitter and transmitting method, receiver and receiving method, and transceiver and transmitting/receiving method
US5907566A (en) * 1997-05-29 1999-05-25 3Com Corporation Continuous byte-stream encoder/decoder using frequency increase and cyclic redundancy check
US6085257A (en) * 1997-10-16 2000-07-04 Lsi Logic Corporation Enhanced receiving chip for a computer monitor
US6052812A (en) * 1998-01-07 2000-04-18 Pocketscience, Inc. Messaging communication protocol
FI982854A (fi) * 1998-12-31 2000-07-01 Nokia Networks Oy Datasiirto tietoliikennejärjestelmässä
US6516952B1 (en) * 1999-05-13 2003-02-11 3Com Corporation Dual mode serializer-deserializer for data networks
US6850559B1 (en) * 1999-06-28 2005-02-01 At&T Corp. System and methods for transmitting data
US6628679B1 (en) * 1999-12-29 2003-09-30 Intel Corporation SERDES (serializer/deserializer) time domain multiplexing/demultiplexing technique
US6804800B2 (en) * 2000-12-29 2004-10-12 Intel Corporation Method and apparatus for detecting and recovering from errors in a source synchronous bus
WO2002071713A2 (en) * 2001-03-01 2002-09-12 Broadcom Corporation Compensation of distortion due to channel and to receiver, in a parallel transmission system
US6834362B2 (en) * 2001-03-26 2004-12-21 Sun Microsystems, Inc. Apparatus and method for error detection on source-synchronous buses
JP2004537911A (ja) * 2001-07-27 2004-12-16 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 信号の符号化
US7065101B2 (en) * 2001-11-15 2006-06-20 International Business Machines Corporation Modification of bus protocol packet for serial data synchronization
US7079528B2 (en) * 2001-12-13 2006-07-18 International Business Machines Corporation Data communication method
US7343535B2 (en) * 2002-02-06 2008-03-11 Avago Technologies General Ip Dte Ltd Embedded testing capability for integrated serializer/deserializers
US6898752B2 (en) * 2002-05-31 2005-05-24 Agilent Technologies, Inc. Apparatus and methods for combinational error detection in an InfiniBand switch
US7200790B2 (en) * 2003-07-08 2007-04-03 Sun Microsystems, Inc. Switch level reliable transmission
US7275195B2 (en) * 2003-10-03 2007-09-25 Avago Technologies General Ip (Singapore) Pte. Ltd. Programmable built-in self-test circuit for serializer/deserializer circuits and method
US20050073586A1 (en) * 2003-10-06 2005-04-07 Songnian Li Digital camera interface

Also Published As

Publication number Publication date
US20050160328A1 (en) 2005-07-21
JP3996928B2 (ja) 2007-10-24

Similar Documents

Publication Publication Date Title
JP3996928B2 (ja) 破損データを処理する方法
KR101099471B1 (ko) PCI.Express 통신 시스템, 및 그 통신 방법
US7436777B2 (en) Failed link training
US20100138573A1 (en) System including transmitter and receiver
US7461321B2 (en) Error detection
US7721159B2 (en) Passing debug information
US7363402B2 (en) Data communications architecture employing parallel SERDES channels
FR2865089A1 (fr) Procede pour communiquer des donnees a l'aide de tampons de donnees de relance
CN102436430B (zh) 存储设备、主机控制器和存储系统
US7672222B2 (en) Link failures
CN1703027B (zh) 传递调试信息
KR101086599B1 (ko) 데이터 통신의 갭을 처리하는 방법
US20050144339A1 (en) Speculative processing of transaction layer packets
US7310762B2 (en) Detection of errors
US7613958B2 (en) Error detection in a system having coupled channels
US20090022158A1 (en) Method For Increasing Network Transmission Efficiency By Increasing A Data Updating Rate Of A Memory
US20060184707A1 (en) Error injection
US20030154288A1 (en) Server-client system and data transfer method used in the same system
CN115706661A (zh) 同步高速信令互连
TWI383294B (zh) 用以識別資料通訊架構之構件的系統
US7624213B2 (en) Passing identification information
JP5145860B2 (ja) メモリ二重化システム及び情報処理装置
JP2006301784A (ja) プログラマブルロジックコントローラ
CN111885431B (zh) 一种通信控制方法和装置
US20060140122A1 (en) Link retry per virtual channel

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20070322

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070329

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20070329

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20070403

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070703

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20070725

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20070803

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100810

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100810

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110810

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110810

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120810

Year of fee payment: 5

LAPS Cancellation because of no payment of annual fees