JP2004173271A - 誤り検出を改善するローリングcrc機構 - Google Patents
誤り検出を改善するローリングcrc機構 Download PDFInfo
- Publication number
- JP2004173271A JP2004173271A JP2003384653A JP2003384653A JP2004173271A JP 2004173271 A JP2004173271 A JP 2004173271A JP 2003384653 A JP2003384653 A JP 2003384653A JP 2003384653 A JP2003384653 A JP 2003384653A JP 2004173271 A JP2004173271 A JP 2004173271A
- Authority
- JP
- Japan
- Prior art keywords
- crc
- data block
- data
- function
- block
- 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.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/09—Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
- H03M13/091—Parallel or block-wise CRC computation
Landscapes
- Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Theoretical Computer Science (AREA)
- Detection And Correction Of Errors (AREA)
- Error Detection And Correction (AREA)
- Detection And Prevention Of Errors In Transmission (AREA)
Abstract
【解決手段】 本発明の1つの態様は、一連のデータ・ブロックを受け取り、その一連のデータ・ブロックのうちの少なくとも1つのデータ・ブロックに、予想巡回冗長符号(CRC)を提供するように構成されたエンコーダを備える送信ノードを提供する。予想CRCは、少なくとも1つのデータ・ブロックと先行データ・ブロックの関数である。また、本発明の1つの態様は、一連のデータ・ブロックを受け取り、その一連のデータ・ブロックのうちの少なくとも1つのブロックの予想巡回冗長符号(CRC)を受け取り、少なくとも1つのデータ・ブロックに計算CRCを提供するように構成されたデコーダを備える受信ノードを提供する。
【選択図】図4
Description
残念ながら、そのようなネットワーク接続は、多くの場合、ノイズが多く、送信されたデータに誤りが導入される。
これに応えて、これまで多くの誤り検出技術が開発されており、それらの技術はすべて、ネットワーク接続を介して送信されたデータの受け取り側が、データを誤りなく受け取ったかどうかを判定できるようにすることによって動作している。
次に、このデータは、関連付けられたチェックサムと共に、送信ノードから受信ノードの受信器に送られる。
次に、受信ノードの受信器は、受け取ったデータ・ブロックから、送信ノードが計算した仕方と同じようにチェックサムを計算する。
受信ノードによって計算されたチェックサムが、送信ノードによって送信データに付加されたチェックサムと一致すると、データ・ブロックが誤りなしに受け取られたことが分かる。
CRC誤り検出機構において、送られるデータは、生成多項式と呼ばれる別の2進数で割った大きな2進数と見なされる。
この割った余りは、送信前にデータに付加されるCRCチェックサムであり、一般に単にCRCと呼ばれる。
生成多項式の次数は、送信されるデータに付加されるCRCのビットの数と等しい。
生成多項式の次数が高いほど、誤り検出能力が高くなる。
したがって、CRC機構の誤り検出能力を高めるために用いられる1つの手法は、生成多項式の次数を高めることである。
しかしながら、生成多項式の次数を高めると、CRCに割り当てられるビットの数も増え、それによりネットワーク接続に使用できる有効帯域幅が小さくなり、ノード間でデータを送信するために必要な時間が増える。
さらに、ネットワーク接続システムによっては、コスト、電気的制約、より高い帯域幅ネットワーク接続へのアクセス制限など、様々な理由のために、ネットワーク接続の帯域幅を大きくするの難しい場合がある。
誤り検出の改善が望ましいきわめて重要なデータを送るとき、CRC誤り検出技術を利用するシステムは、有効な使用可能帯域幅を犠牲にして誤り検出能力を改善するか、潜在的に不完全な誤り検出を犠牲にして有効な使用可能帯域幅を維持するかの設計選択に直面する。
この方法は、一連のデータ・ブロックのうちの少なくとも1つのデータ・ブロックの巡回冗長符号(CRC)を生成する段階を有する。
CRCは、少なくとも1つのデータ・ブロックと先行データ・ブロックの関数である。
予想CRCは、少なくとも1つのデータ・ブロックと先行データ・ブロックの関数である。
計算CRCは、少なくとも1つのデータ・ブロックと先行データ・ブロックの関数である。
受信ノードは、また、少なくとも1つのデータ・ブロックの計算CRCを予想CRCと比較し、それにより少なくとも1つのデータ・ブロックまたは先行データ・ブロック内にデータの誤りがあるかどうの指示を提供するように構成されたコンパレータを備える。
送信ノードは、一連のデータ・ブロックを受け取り、その一連のデータ・ブロックのうちの少なくとも1つのデータ・ブロックに、少なくとも1つのデータ・ブロックと先行データ・ブロックの関数である予想巡回冗長符号(CRC)を提供するように構成されたエンコーダを備える。
受信ノードは、送信ノードから、一連のデータ・ブロックと、その一連のデータ・ブロックのうちの少なくとも1つのデータ・ブロックの予想CRCとを受け取り、少なくとも1つのデータ・ブロックに、少なくとも1つのデータ・ブロックと先行データ・ブロックの関数である計算CRCを提供するように構成されたデコーダを備える。
受信側は、また、少なくとも1つのデータ・ブロックの計算CRCを予想CRCと比較して、それにより少なくとも1つのデータ・ブロックまたは先行データ・ブロック内にデータの誤りがあるかどうかの指示を提供するように構成されたコンパレータを備える。
本発明の範囲から逸脱することなく他の実施形態を利用することができまた構造的または論理的変更を行うことができることを理解されたい。
したがって、以下の詳細な説明は、限定の意味に解釈されるべきでなく、本発明の範囲は、併記の特許請求の範囲によって定義される。
ネットワーク接続システム30は、32で示したノードAと、34で示したノードBとを含む。
ネットワーク接続システム30は、ネットワーク接続36を介して、32で示したノードAと34で示したノードBの間でデータを通信する暗黙的な能力を有する。
しかしながら、ネットワーク接続は、しばしばノイズが多く、送信データを破損させる可能性がある誤りを導入することがある。
その結果、ネットワーク接続を介して送られたデータを受け取るノードが、データを誤りなく受け取ったかどうかを判定できるように、様々な誤り検出機構が開発されてきた。
CRC誤り検出機構において、送信されるデータは、大きな2進数として見なされる。
データを送信するノードは、データで構成された大きな2進数を、生成多項式と呼ばれる別の2進数で割る。
このわり算の余りは、CRCチェックサムと呼ばれ、一般には単にCRCと呼ばれる。
次に、送信ノードは、このデータにCRCを付加して、そのデータと付加したCRCをネットワーク接続を介して受信ノードに送る。
受信ノードは、送信されたデータとCRCを受け取ると、送信ノードと同じ生成多項式を使って、受け取ったデータからCRCを計算する。
受信ノードによって受信データから計算されたCRCが、送信ノードによって送られたCRCと一致すると、送信されたデータが誤りなしに受け取られたことが分かる。
データは、一般に、メッセージ構成40によって表したようなメッセージの形で、ノード間で通信される。
本明細書において、メッセージは、応用例によって定義されたノード間のデータ交換の単位であるように定義される。
メッセージは、一般に、パケット42や44のような、ノード間でメッセージを物理的に送るためのパケットで編成される。
本明細書において、パケットは、ヘッダ46および48やトレーラ50および52のようなネットワーク・プロトコルのヘッダおよび/またはトレーラに間のカプセル化されたデータ単位であるように定義される。
各パケットは、さらに、本明細書でフリット(flit)と呼ばれ、フリット54、56、58および60によって示したようなデータ単位を含む。
最後に、各フリットは、62、64、66および68で示したようなデータ・ブロックと、70、72、74および76で示したようなCRCとを含む。
図2Bの例示的な構成において、ネットワーク接続システム30のフリット80はそれぞれ、132ビットのデータ・ブロックと12ビットのCRCを含み、32で示したノードAと34で示したノードBは、ネットワーク接続36を介して16ビット/1サイクルのデータを送ることができる。
しかしながら、後で説明する本発明は、任意の適切なフリット構成、データ・ブロック・サイズ、CRCサイズ、およびデータ転送レートに適用することができる。
図2Bの例示において、32で示したノードAが、34で示したノードBにフリット80を送るためには、9つのサイクルが必要である。
したがって、例えばフリット80の場合、サイクル0で、82で示したデータ・ビット0〜15が送られ、サイクル1で、84で示したデータ・ビット16〜31が送られ、サイクル2で、86で示したデータ・ビット32〜47が送られ、サイクル3で、88で示したデータ・ビット48〜63が送られ、サイクル4で、90で示したデータ・ビット64〜79が送られ、サイクル5で、92で示したデータ・ビット80〜95が送られ、サイクル6で、94で示したデータ・ビット96〜111が送られ、サイクル7で、96で示したデータ・ビット112〜127が送られ、サイクル8で、98で示したデータ・ビット128〜131とCRCビット0〜11が送られる。
したがって、例えばフリット図2Bのフリット80の場合、生成多項式は、次数12のモジューロ原始多項式になる。
従来のCRC機構によって提供される誤り検出能力の高さは、生成多項式の次数に比例する。
したがって、利用されるCRCビットが多いほど、生成多項式の次数が高くなり、その結果誤り検出能力が高くなる。
一般に、ランダム・マルチビット・エラーが検出されない確率は、次の式Iで表すことができる。
マルチビット・エラーが検出されない検出=2(-n)
ここで、nは、1フリットに割り当てられたCRCビットの数
このマルチビット・エラーが検出されない確率が、許容可能な誤り検出レベルかどうかは、誤り率と目標サイレント破損率(targeted silent corruption rate)に依存する。
第1の従来の手法は、CRC生成多項式に使用されるモジューロ原始多項式の次数を高めることである。
例えば、ネットワーク接続システム30に例のフリット構成80を使用するとき、生成多項式を次数12から次数16に高めることにより、マルチビット・エラーが検出されない確率は、1/4096から1/65,536に改善される。
しかしながら、生成多項式の次数を高める結果、CRCに割り当てられるビット数も増える。
結果として、例のフリット80によって転送することができるデータ・ビットの数が減少し、結局、ネットワーク接続36の有効帯域幅が小さくなり、32で示したノードAが34で示したノードBに所定量のデータを送るのに必要な時間が長くなる。
この手法では、パケット内のフリットのデータ・ブロックを結合して大きな2進数にし、この2進数を第2の生成多項式で割ってパケット・レベルCRCを生成する。
この第2の従来の手法は、帯域幅の減少がごくわずかな改善された誤り検出能力を実現するが、送信中にパケットが破損されたかどうかを判定する前にパケットを構成するすべてのデータ・ブロックを受け取るのを待たなければならないため、システムに待ち時間が生じるという欠点がある。
1つの実施形態において、以下に説明する本発明のローリングCRC誤り検出機構は、少なくとも1つの送信フリット内の少なくとも1つのデータ・ブロックのCRCを、対応するフリットの少なくとも1つのデータ・ブロックの誤り検査だけでなく、ネットワーク接続による送信において少なくとも1つのデータ・ブロックに先行する1つまたは複数のフリットのデータ・ブロックの誤り検出にも使用されることによって、改善された誤り検出能力を実現する。
所定のフリットのCRCが誤り検査に使用される先行フリットの数は、本明細書において、深さとして定義される。
例えば、ネットワーク接続を介した送信において所定のフリットに先行する2つのフリットの誤り検査に使用される所定のフリットのCRCは、深さ2を有し、一方、1つの先行フリットの誤り検査に使用される所定のフリットのCRCは、深さ1を有する。
1つの実施形態において、この深さは、ユーザおよび/または用途によって選択することができる。
マルチビット・エラーが検出されない確率=2(-n(x+1))
ここで、
n=1フリットに割り当てられたCRCビットの数
x=CRC深さ(すなわち、先行データ・ブロックの数)
である。
1つの例の実施形態において、その範囲のデータ破損の可能性あるすべてのデータ・ブロックは廃棄される。
集積回路内に実施されるような代表的なルーティング回路は、処理および転送ロジックによって生じる固有の待ち時間を有し、この待ち時間は、特にCRCの深さが最大でないときに、CRCが依拠する既に受け取ったデータ・ブロックの後続のデータ・ブロックを受け取るのを待つ際にローリングCRC誤り検出機構によって生じる待ち時間よりも大きいことがある。
したがって、受信ノードによって既に処理されているCRCが依拠するデータ・ブロックの後続のデータ・ブロックをすべて受け取った後で誤りが検出された場合は、受信ノードがそれらのデータ・ブロックに依拠する前にその範囲内のすべてのデータ・ブロックを破棄しパイプラインからフラッシュすることができる。
この例示的な実施形態において、例のパケット120は、112で示した一連のデータ・ブロック0、114で示したデータ・ブロック1、116で示したデータ・ブロックb−i、118で示したデータ・ブロックbを含む。
114で示したデータ・ブロック1に対応する122で示したCRC1は、後述のように計算される。
114で示した132ビットのデータ・ブロック1は、リンク126を介して第1のCRCジェネレータ124によって受け取られる。
CRCジェネレータ124は、データ・ブロック1を第1の生成多項式g(x)で割って12ビットの第1の暫定CRCを生成する。
112で示した132ビットのデータ・ブロック0は、リンク130を介して第2のCRCジェネレータ128によって受け取られる。
CRCジェネレータ128は、データ・ブロック0を第2の生成多項式p(x)で割って12ビットの第2の暫定CRCを生成する。
最後のCRCジェネレータ132は、リンク134を介して第1の暫定CRCとリンク136を介して第2の暫定CRCを受け取り、第1と第2の暫定CRCを結合する機能を実行する。
図3に示した例の実施形態において、最後のCRCジェネレータ132は、第1と第2の暫定CRCにXOR関数138を実行して、それにより、114で示したデータ・ブロック1に、122で示した12ビットCRC1を提供する。
これと共に、114で示したデータ・ブロック1と122で示したCRC1が、図2Bの例のフリット80と類似のフリット1を構成する。
パケット120の他のデータ・ブロックのCRCは、122で示したCRC1に関する前の説明と類似の方法で生成される。
さらに、パケット境界を横切る他のデータ・ブロックに関して、前の説明と類似の方法でCRCを計算することができる。
ネットワーク接続システム150は、送信ノード152、受信ノード154、およびネットワーク接続156を含む。
送信ノード152は、バッファ・モジュール158とエンコーダ160を含む。
受信ノード154は、ステージング・モジュール162、デコーダ164、およびコンパレータ166を含む。
ネットワーク接続156は、ローカル・エリア・ネットワーク(LAN)接続、バス接続、電話線/モデム接続、直接ワイヤレス接続、インターネット接続、および/またはイントラネット接続を含むがこれらに限定されない任意の適切なタイプの接続を含むことができる。
エンコーダ160は、一連のデータ・ブロックを受け取り、その一連のデータ・ブロックのうちの少なくとも1つのデータ・ブロックに、その少なくとも1つのデータ・ブロックと先行データ・ブロックの関数である予想CRCを提供する。
次に、送信ノード152は、ネットワーク接続156を介して、一連のデータ・ブロックを、少なくとも1つのデータ・ブロックの予想CRCと共に受信ノード154に提供する。
また、ステージング・モジュール162は、出力174で一連のデータ・ブロックを、バッファあるいはコミットすることなくデータを処理し始めることができるプロセスに提供する。
デコーダ164は、リンク176を介してコンパレータ166に、少なくとも1つのデータ・ブロックと先行データ・ブロックの関数である少なくとも1つのデータ・ブロックの計算CRCを提供する。
コンパレータ166は、計算CRCを予想CRCと比較し、少なくとも1つのデータ・ブロック内または先行データ・ブロック内にデータ誤りがあるかの指示を出力178に提供する。
1つの実施形態において、予想CRCと計算CRCが一致した場合、出力178は、データ・ブロックが誤りなく受け取られ、プロセスがデータにコミットできることを示す。
1つの実施形態において、予想CRCと計算CRCが一致しない場合、出力178は、少なくとも1つのデータ・ブロック、先行データ・ブロックまたはこれらの両方にデータ・エラーがあり、バッファまたはプロセスがデータを廃棄することができることを示す。
送信ノード200は、バッファ・モジュール202、エンコーダ204、および出力モジュール206を含む。
バッファ・モジュール202は、第1のバッファ・レジスタ208と第2のバッファ・レジスタ210を含む。
エンコーダ204は、第1のCRCジェネレータ212、第2のCRCジェネレータ214、および第3のCRCジェネレータ216を含む。
出力モジュール206は、出力レジスタ218を含む。
その結果、第2のバッファ・レジスタ210は、リンク222を介して第1のバッファ・レジスタ208から遅延した一連のデータ・ブロックを受け取る。
第1のバッファ・レジスタ220は、現在受け取ってあるデータ・ブロックを含み、第2のバッファ・レジスタ210は、一連のデータ・ブロックの先行データ・ブロックを含む。
第2のCRCジェネレータ216は、リンク228を介して第1のバッファ・レジスタから現行データ・ブロックを受け取り、リンク230を介して第3のCRCジェネレータ214に現行データ・ブロックの関数である第2の暫定CRCを提供する。
第3のCRCジェネレータ214は、第1と第2の暫定CRCに関数を実行し、現行データ・ブロックにCRCを提供する。
送信ノード200内に深さゼロのCRCが構成されると、第2のバッファ・レジスタ210は、ゼロにリセットされ、第3のCRCジェネレータ214は、現行データ・ブロックだけの関数である現行データ・ブロックのCRCを提供する。
1つの実施形態において、送信ノード200にアクセスするユーザあるいは送信ノード200上で実行されるアプリケーションまたはプロセスが、所望のCRC深さを選択する。
1つの実施形態において、第2のCRCジェネレータ216の機能は、現行データ・ブロックを、第1の原始多項式と異なる第2の原始多項式で割ることである。
1つの実施形態において、第3のCRCジェネレータ214の機能は、第1のCRCジェネレータ212と第2のCRCジェネレータ216からそれぞれ受け取った第1と第2の暫定CRCのXOR(排他的論理和)を求めることである。
受信ノード250は、ステージング・モジュール252、デコーダ254、およびコンパレータ・モジュール256を含む。
ステージング・モジュール252は、第1のステージング・レジスタ258と第2のステージング・レジスタ260を含む。
デコーダ254は、第1のCRCジェネレータ262、第2のCRCジェネレータ264、第3のCRCジェネレータ266、および第1のCRCレジスタ268を含む。
コンパレータ・モジュール256は、第1のコンパレータ272と第2のコンパレータ274を含む。
第1のステージング・レジスタ258は、一連のフリットを次々と受け取ると、リンク278を介して第2のステージング・レジスタ260に先行フリットを転送する。
その結果、第1のステージング・レジスタ258は、現行フリットを含み、第2のステージング・レジスタ260は、先行フリットを含むことになる。
第1のステージング・レジスタ258が、一連のフリットのうちの次のフリットを受け取ると、第1のステージング・レジスタは、リンク278を介して第2のステージング・レジスタ260に現行フリットを送り、リンク280を介して第1のCRCジェネレータ262に現行フリットのデータ・ブロックを送り、リンク282を介して第1のコンパレータ272に現行フリットの予想CRCを送る。
第2のステージング・レジスタ260が、第1のステージング・レジスタ258から現行フリットを受け取ると、第2のステージング・レジスタ260は、先行フリットのデータ・ブロックを、リンク284を介して第2のCRCジェネレータ264に送り、リンク286を介して宛先バッファまたは宛先プロセスに送り、リンク288を介して第2のコンパレータ274に先行フリットの予想CRCを送る。
第2のCRCジェネレータ264は、先行フリットのデータ・ブロックに機能を実行し、リンク294を介して第3のCRCジェネレータ266に第2の暫定CRCを提供する。
第3のCRCジェネレータ266は、リンク296を介して第1のCRCレジスタ268から第1の暫定CRCを受け取る。
第3のCRCジェネレータ266は、第1と第2の暫定CRCに機能を実行し、リンク300を介して第2のコンパレータ274に現行フリットデータ・ブロックの計算CRCを提供する。
第2のコンパレータ274は、現行フリットの予想CRCを計算CRCと比較し、出力302を介して宛先バッファまたは宛先プロセスに誤りの指示を提供する。
1つの実施形態において、予想CRCが、現行フリットの計算CRCと一致した場合、出力302は、現行フリットが誤りなく受け取られ、宛先プロセスが現行フリットのデータ・ブロックにコミットできることを示す。
1つの実施形態において、予想CRCが、現行フリットの計算CRCと一致しない場合、出力302は、現行フリットと先行フリットのデータ・ブロックが、宛先バッファまたは宛先プロセスによって破棄され、そのフリットが再送信されることを示す。
しかしながら、深さxの任意の所定のローリングCRC誤り検出機構を構成し、後の段をディスエーブルすることによって小さい任意の深さ(すなわち、x−1、x−2、...、0)を利用するようにすることができる。
これにより、深さが小さいほど待ち時間が少なくなるが信頼性も低下する同一回路による待ち時間と信頼性のトレードオフの融通性が提供される。
この深さゼロの構成において、第1のステージング・レジスタ258は、一連のフリットの次のフリットを受け取ると、第2のステージング・レジスタ260をバイパスして、リンク304を介して宛先バッファまたは宛先プロセスに直接現行フリットのデータ・ブロックを提供する。
この深さゼロの構成において、第1のコンパレータ272は、計算CRCを現行フリットの予想CRCと比較し、出力306によって宛先バッファまたは宛先プロセスに誤り指示を提供する。
この深さゼロの構成の1つの実施形態において、予想CRCが現行フリットの計算CRCと一致した場合、出力306は、現行フリットが誤りなしに受け取られたことと、宛先プロセスが現行フリットのデータ・ブロックにコミットできることを示す。
この深さゼロの構成の1つの実施形態において、予想CRCが現行フリットの計算CRCと一致しない場合、出力306は、現行フリットが宛先バッファまたは宛先プロセスによって破棄され、現行フリットが再送信されるべきであることを示す。
1つの実施形態において、受信ノード250にアクセスするユーザまたは受信ノード250上で実行されるアプリケーションまたはプロセスは、所望のCRC深さを選択する。
1つの実施形態において、第2のCRCジェネレータ264の機能は、現行データ・ブロックを、第1の原始多項式と異なる第2の原始多項式で割ることである。
1つの実施形態において、第3のCRCジェネレータ266の機能は、第1のCRCジェネレータ262と第2のCRCジェネレータ264からそれぞれ受け取った第1と第2の暫定CRCのXORを求めることである。
1つの実施形態において、第1の原始多項式と第2の原始多項式は、同一の原始多項式であるが、この単純化は、ランダム・マルチビット・エラーが検出されない可能性を高め、その結果、ランダム・マルチビット・エラーが検出されない確率を表す前述の式IIが真でなくなる。
しかしながら、第1の原始多項式が第2の原始多項式と同じ本発明の代替の実施形態は、原始多項式に入力される所定のデータ・ブロックのビットの相対的な重みを変化させて、1つの原始多項式で2つの暫定CRCを計算する。
この代替の実施形態では、データを1ビット右にシフトしないようにすることが好ましく、それは、モジュールの動作による循環シフトによってCRCが形成される結果、この1ビット・シフトにより、過去のCRCと大きな相関関係が生じるためである。
この代替の実施形態におけるシフトの1つの単純な解決策は、環状にxビット左にシフトすることであり、ここで、xは2以上である。
この実施形態において、有効成分として第1の原始多項式を含まない新しい原始多項式を生成する任意の適切なビット・シャッフルを使用することができる。
そうすることにより、本発明のローリングCRC誤り検出機構のこの実施形態は、送信ノードと受信ノード間の有効帯域幅の減少がなくかつパケットを構成するデータ・ブロックを使用すべきかどうかを判定する前にパケットのすべてのデータ・ブロックを待たなければならないことに関連した待ち時間がない改善された誤り検出能力を提供することができる。
化学、機械、電気機械、電気およびコンピュータ技術の熟練者は、本発明を種々様々な実施形態で実施できることを容易に理解されよう。
本出願は、本明細書において検討した好ましい実施形態の任意の改造または変形を含むように意図されている。
したがって、本発明は、特許請求の範囲およびその等価物によってのみ限定されるように意図されていることは明確である。
154,250・・・受信ノード、
158,202・・・バッファ・モジュール、
160,204・・・エンコーダ、
162,252・・・ステージング・モジュール、
164,254・・・デコーダ、
166,256・・・コンパレータ、
206・・・出力モジュール、
208・・・第1のバッファ・レジスタ、
210・・・第2のバッファ・レジスタ、
212・・・第1のCRCジェネレータ、
214・・・第3のCRCジェネレータ、
216・・・第2のCRCジェネレータ、
258・・・第1のステージング・レジスタ、
260・・・第2のステージング・レジスタ、
Claims (18)
- 一連のデータ・ブロックを受け取り、前記一連のデータ・ブロックのうちの少なくとも1つのデータ・ブロックに、前記少なくとも1つのデータ・ブロックと先行データ・ブロックの関数である予想巡回冗長符号(CRC)を提供するように構成されたエンコーダ(160/204)を
具備する送信ノード(152/200)。 - 前記エンコーダが、前記一連のデータ・ブロックのうちの少なくとも1つのデータ・ブロックに、前記少なくとも1つのデータ・ブロックと複数の先行データ・ブロックの関数である予想CRCを提供し、
前記エンコーダが、前記一連のデータ・ブロックのうち少なくとも1つのデータ・ブロックに、前記少なくとも1つのデータ・ブロックと選択可能な数の先行データ・ブロックの関数である予想CRCを提供し、
前記エンコーダが、前記一連のデータ・ブロックのうちの少なくとも1つのデータ・ブロックに、先行データ・ブロックの関数でない予想CRCを提供する
請求項1に記載の送信ノード。 - 前記一連のデータ・ブロックを受け取り、
前記少なくとも1つのデータ・ブロックを提供する第1のバッファ・レジスタ(208)と、
前記少なくとも1つのデータ・ブロックを受け取り、先行のブロックに提供する第2のバッファ・レジスタ(210)とを含むバッファ・モジュール(158/202)と
をさらに具備する請求項1に記載の送信ノード。 - 前記エンコーダが、さらに、
前記少なくとも1つのデータ・ブロックを受け取り、前記少なくとも1つのデータ・ブロックに関数を実行して、それにより第1の暫定CRCを提供する第1のCRCジェネレータ(212)と、
前記先行データ・ブロックを受け取り、前記先行データ・ブロックに関数を実行して、それにより第2の暫定CRCを提供する第2のCRCジェネレータ(216)と、
前記第1と第2の暫定CRCを受け取り、前記第1と第2の暫定CRCに関数を実行して、それにより前記少なくとも1つのデータ・ブロックの前記予想CRCを提供する第3のCRCジェネレータ(214)と
を具備する請求項1に記載の送信ノード。 - 前記第1のCRCジェネレータによって実行される前記関数が、前記少なくとも1つのデータ・ブロックを第1の多項式で割り、
前記第2のCRCジェネレータによって実行される前記関数が、前記先行データ・ブロックを前記第1の多項式と異なる第2の多項式で割り、
前記第1のCRCジェネレータによって実行される前記関数が、前記少なくとも1つのデータ・ブロックを第1の多項式で割り、
前記第2のCRCジェネレータによって実行される前記関数が、前記先行データ・ブロックを前記第1の多項式で割り、
前記第3のCRCジェネレータによって実行される前記関数が、前記第1と第2の暫定CRCの排他的論理和演算である
請求項4に記載の送信ノード。 - 前記少なくとも1つのデータ・ブロックと、前記少なくとも1つのデータ・ブロックの前記予想CRCを受け取り、それにより前記少なくとも1つのデータ・ブロックと前記少なくとも1つのデータ・ブロックの前記予想CRCを含むフリット(flit)を提供する出力モジュール(206)
をさらに具備する請求項1に記載の送信ノード。 - 一連のデータ・ブロックと前記一連のデータ・ブロックのうちの少なくとも1つのブロックの予想巡回冗長符号(CRC)とを受け取り、前記少なくとも1つのデータ・ブロックに、前記少なくとも1つのデータ・ブロックと先行データ・ブロックの関数である計算CRCを提供するように構成されたデコーダ(164/254)と、
前記計算CRCを前記少なくとも1つのデータ・ブロックの予想CRCと比較して、それにより前記少なくとも1つのデータ・ブロックまたは前記先行データ・ブロック内にデータの誤りがあるかどうかの指示を提供するように構成されたコンパレータ(166/256)と
を具備する受信ノード(154/250)。 - 前記デコーダが、前記一連のデータ・ブロックのうちの前記少なくとも1つのブロックに、前記少なくとも1つのブロックと複数の先行データ・ブロックの関数である計算CRCを提供し、
前記デコーダが、前記一連のデータ・ブロックのうちの前記少なくとも1つのデータ・ブロックに、前記少なくとも1つのデータ・ブロックと選択可能な数の先行ブロックの関数である計算CRCを提供し、
前記デコーダが、前記一連のデータ・ブロックのうちの少なくとも1つのデータ・ブロックに、前記先行ブロックの関数ではない計算CRCを提供する
請求項7に記載の受信ノード。 - 前記一連のデータ・ブロックと前記少なくとも1つのデータ・ブロックの前記予想CRCを受け取るステージング・モジュール(162/252)と、
前記少なくとも1つのデータ・ブロックを提供する第1のステージング・レジスタ(258)と、
前記少なくとも1つのデータ・ブロックを受け取り、前記先行データ・ブロックと前記少なくとも1つのデータ・ブロックの前記予想CRCを提供する第2のステージング・レジスタ(260)と
をさらに具備する請求項7に記載の受信ノード。 - 前記デコーダが、さらに、
前記少なくとも1つのデータ・ブロックを受け取り、前記少なくとも1つのデータ・ブロックに関数を実行して、それにより第1の暫定CRCを提供する第1のCRCジェネレータ(262)と、
前記第1の暫定CRCを受け取り提供する第1のCRCレジスタ(268)と、
前記先行データ・ブロックを受け取り、前記先行ブロックに関数を実行して、それにより第2の暫定CRCを提供する第2のCRCジェネレータ(264)と、
前記第1と第2の暫定CRCを受け取り、前記第1と第2の暫定CRCに関数を実行して、それにより前記少なくとも1つのデータ・ブロックに前記計算CRCを提供する第3のCRCジェネレータ(266)と
を具備する請求項7に記載の受信ノード。 - 前記第1のCRCジェネレータによって実行される前記関数が、前記少なくとも1つのデータ・ブロックを第1の多項式で割り、
前記第2のCRCジェネレータによって実行される前記関数が、前記先行データ・ブロックを前記第1の多項式と異なる第2の多項式で割り、
前記第1のCRCジェネレータによって実行される前記関数が、前記少なくとも1つのデータ・ブロックを第1の多項式で割り、
前記第2のCRCジェネレータによって実行される前記関数が、前記先行データ・ブロックを前記第1の多項式で割り、
前記第3のCRCジェネレータによって実行される前記関数が、前記第1と第2の暫定CRCの排他的論理和演算である
請求項10に記載の受信ノード。 - ネットワーク接続(156)と、
前記ネットワーク接続に結合され、
一連のデータ・ブロックを受け取り、前記一連のデータ・ブロックのうちの少なくとも1つのデータ・ブロックに、前記少なくとも1つのデータ・ブロックと先行データ・ブロックの関数である予想巡回冗長符号(CRC)を提供するように構成されたエンコーダ(160/204)
を含む送信ノード(152/200)と、
前記ネットワーク接続に結合され、
前記送信ノードから、前記一連のデータ・ブロックと、前記一連のデータ・ブロックのうちの前記少なくとも1つのデータ・ブロックの前記予想CRCとを受け取り、前記少なくとも1つのデータ・ブロックに、前記少なくとも1つのデータ・ブロックと前記先行データ・ブロックの関数である計算CRCを提供するように構成されたデコーダ(164/254)
を含む受信ノード(154/250)と、
前記計算CRCを、前記少なくとも1つのデータ・ブロックの前記予想CRCと比較して、それにより前記少なくとも1つのデータ・ブロックまたは前記先行データ・ブロック内にデータの誤りがあるかどうかの指示を提供するように構成されたコンパレータ(166/256)と
を具備するネットワーク接続システム(150)。 - 前記エンコーダが、前記一連のデータ・ブロックのうちの少なくとも1つのデータ・ブロックに、前記少なくとも1つのデータ・ブロックと複数の先行データ・ブロックの関数である予想CRCを提供し、
前記デコーダが、前記少なくとも1つのデータ・ブロックに、前記少なくとも1つのデータ・ブロックと前記複数の先行ブロックの関数である計算CRCを提供し、
前記エンコーダが、前記一連のデータ・ブロックのうちの少なくとも1つのデータ・ブロックに、前記少なくとも1つのデータ・ブロックと選択可能な数の先行データ・ブロックの関数である予想CRCを提供し、
前記デコーダが、前記少なくとも1つのデータ・ブロックに、前記少なくとも1つのデータ・ブロックと前記選択可能な数の先行データ・ブロックの関数である計算CRCを提供し、
前記エンコーダが、前記一連のデータ・ブロックのうちの少なくとも1つのデータ・ブロックに、先行データ・ブロックの関数ではない予想CRCを提供し、
前記デコーダが、前記少なくとも1つのデータ・ブロックに、先行データ・ブロックの関数ではない計算CRCを提供する
請求項12に記載のネットワーク接続システム。 - データを通信する方法であって、
一連のデータ・ブロックのうちの少なくとも1つのデータ・ブロックの巡回冗長符号(CRC)を生成する段階
を有し、
前記CRCが、前記少なくとも1つのデータ・ブロックと先行データ・ブロックの関数である
方法。 - 前記CRCを生成する前記段階が、
前記CRCを、前記送信ノード(152/200)において前記少なくとも1つのブロックの予想CRCとして生成する段階
をさらに有する
請求項14に記載の方法。 - 前記送信ノードにおいて前記少なくとも1つのデータ・ブロックと前記少なくとも1つのデータ・ブロックの予想CRCを結合して、それにより前記少なくとも1つのデータ・ブロックと前記少なくとも1つのデータ・ブロックの前記予想CRCを含むフリットを提供する段階と、
受信ノード(154/250)において前記フリットを受け取る段階と、
前記受信ノードにおいて前記少なくとも1つのデータ・ブロックの計算CRCを生成する段階であって、前記計算CRCが、前記少なくとも1つのデータ・ブロックと前記先行データ・ブロックの関数である段階と、
前記受信ノードにおいて、前記少なくとも1つのデータ・ブロックに関して前記計算CRCを前記予想CRCと比較し、それにより前記少なくとも1つのデータ・ブロックまたは前記先行データ・ブロック内にデータの誤りがあるかどうかの指示を提供する段階と
を有する請求項15に記載の方法。 - 前記CRCを生成する前記段階が、
前記受信ノード(154/250)において、前記CRCを、前記少なくとも1つのデータ・ブロックの計算CRCとして生成する段階と、
前記受信ノードにおいて、前記一連のデータ・ブロックと前記少なくとも1つのデータ・ブロックの予想CRCとを受け取る段階と、
前記受信ノードにおいて、前記計算CRCを、前記少なくとも1つのデータ・ブロックの前記予想CRCと比較して、それにより前記少なくとも1つのデータ・ブロックまたは前記先行データ・ブロック内にデータの誤りがあるかどうかの指示を提供する段階と
を有する請求項14に記載のデータ・ブロック。 - 前記CRCが、前記少なくとも1つのデータ・ブロックと複数の先行データ・ブロックの関数であり、
前記CRCが、前記少なくとも1つのデータ・ブロックと選択可能な数の先行データ・ブロックの関数であり、前記一連のデータ・ブロックのうちの少なくとも1つのデータ・ブロックの第2のCRCを生成し、
前記第2のCRCが、先行データ・ブロックの関数ではない
請求項14に記載の方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/300,443 US20040098655A1 (en) | 2002-11-19 | 2002-11-19 | Rolling CRC scheme for improved error detection |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004173271A true JP2004173271A (ja) | 2004-06-17 |
Family
ID=32297918
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003384653A Pending JP2004173271A (ja) | 2002-11-19 | 2003-11-14 | 誤り検出を改善するローリングcrc機構 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20040098655A1 (ja) |
JP (1) | JP2004173271A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2009141860A1 (ja) * | 2008-05-19 | 2009-11-26 | 富士通株式会社 | 検証装置、検証方法および検証プログラム |
JP2009296599A (ja) * | 2008-06-09 | 2009-12-17 | Sony Corp | 電子情報を効率的に転送するシステム及び方法 |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7702988B2 (en) * | 2005-10-24 | 2010-04-20 | Platform Computing Corporation | Systems and methods for message encoding and decoding |
US7751486B2 (en) * | 2006-05-19 | 2010-07-06 | Platform Computing Corporation | Systems and methods for transmitting data |
US7721160B2 (en) * | 2006-09-11 | 2010-05-18 | Advanced Micro Devices, Inc. | System for protecting data during high-speed bidirectional communication between a master device and a slave device |
DE102007032659A1 (de) * | 2007-07-13 | 2009-01-15 | Knick Elektronische Messgeräte GmbH & Co. KG | Verfahren zur telegrammweisen Datenübertragung in einem seriellen Kommunikationsprotokoll sowie dieses nutzende Datenübertragungsvorrichtung |
JP5232420B2 (ja) * | 2007-08-17 | 2013-07-10 | 株式会社エヌ・ティ・ティ・ドコモ | データ送信方法、データ受信方法、移動端末及び無線通信システム |
US8464125B2 (en) | 2009-12-10 | 2013-06-11 | Intel Corporation | Instruction-set architecture for programmable cyclic redundancy check (CRC) computations |
TWI518500B (zh) * | 2010-07-27 | 2016-01-21 | 聯詠科技股份有限公司 | 資料傳輸檢測裝置、資料傳輸檢測方法及其電子裝置 |
US9479196B2 (en) * | 2012-10-22 | 2016-10-25 | Intel Corporation | High performance interconnect link layer |
US20150046775A1 (en) * | 2013-08-07 | 2015-02-12 | Broadcom Corporation | Encoding and Decoding Schemes to Achieve Standard Compliant Mean Time to False Packet Acceptance |
CN104639294A (zh) * | 2015-02-10 | 2015-05-20 | 浪潮电子信息产业股份有限公司 | 一种改进的crc校验实现方法 |
FR3034934B1 (fr) * | 2015-04-09 | 2017-05-05 | Thales Sa | Procede d'emission d'une information additionnelle et reseau de transmission d'informations avioniques mettant en oeuvre un tel procede |
US10268617B2 (en) * | 2016-10-03 | 2019-04-23 | International Business Machines Corporation | Frame format for a serial interface |
US10284335B2 (en) * | 2017-02-22 | 2019-05-07 | International Business Machines Corporation | Error detection for wormhole routing |
CN108233944A (zh) * | 2017-12-29 | 2018-06-29 | 北京自动测试技术研究所 | 一种循环冗余校验方法、设备及存储介质 |
EP3550748B1 (de) * | 2018-04-05 | 2021-08-11 | Siemens Aktiengesellschaft | Verfahren zur erkennung von datenverfälschungen bei einer datenübertragung über eine fehlersichere kommunikationsverbindung |
US20210119730A1 (en) * | 2020-09-18 | 2021-04-22 | Intel Corporation | Forward error correction and cyclic redundancy check mechanisms for latency-critical coherency and memory interconnects |
US11855655B2 (en) * | 2021-09-28 | 2023-12-26 | Texas Instruments Incorporated | Serial communications module with CRC |
US11949510B2 (en) * | 2022-09-06 | 2024-04-02 | Qualcomm Incorporated | Hardware-based dynamic cyclic-redundancy check (CRC) generator for automotive application |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS63197124A (ja) * | 1987-01-29 | 1988-08-16 | インターナシヨナル・ビジネス・マシーンズ・コーポレーシヨン | 誤り検査システム |
JPH04211547A (ja) * | 1990-03-20 | 1992-08-03 | Fujitsu Ltd | 同期回路 |
JPH05122197A (ja) * | 1991-10-29 | 1993-05-18 | Nippon Hoso Kyokai <Nhk> | データ伝送装置 |
JPH1070522A (ja) * | 1996-08-27 | 1998-03-10 | Tokyo Electron Ind Co Ltd | データ受信装置 |
JP2002261624A (ja) * | 2001-03-05 | 2002-09-13 | Nec Corp | 巡回冗長検査演算方法及び巡回冗長検査演算回路 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE1769699A1 (de) * | 1968-06-29 | 1971-11-04 | Basf Ag | Verfahren zur Herstellung gebundener Faservliese nach dem Nassverfahren |
US5394410A (en) * | 1992-10-30 | 1995-02-28 | International Business Machines Corporation | Differentially coded and guard pulse position modulation for communication networks |
US5517508A (en) * | 1994-01-26 | 1996-05-14 | Sony Corporation | Method and apparatus for detection and error correction of packetized digital data |
US5754564A (en) * | 1994-08-24 | 1998-05-19 | Harris Corporation | Method of continuous calculation of cyclic redundancy check |
JP3312363B2 (ja) * | 1996-12-27 | 2002-08-05 | 株式会社エヌ・ティ・ティ・ドコモ | 符号化装置および復号化装置および符号化復号化システム並びに方法 |
JP2000004169A (ja) * | 1998-06-15 | 2000-01-07 | Ricoh Co Ltd | Crc演算方法及びcrc演算回路 |
US6327691B1 (en) * | 1999-02-12 | 2001-12-04 | Sony Corporation | System and method for computing and encoding error detection sequences |
US6446235B1 (en) * | 1999-08-31 | 2002-09-03 | Intel Corporation | Cumulative error detecting code |
US6732317B1 (en) * | 2000-10-23 | 2004-05-04 | Sun Microsystems, Inc. | Apparatus and method for applying multiple CRC generators to CRC calculation |
-
2002
- 2002-11-19 US US10/300,443 patent/US20040098655A1/en not_active Abandoned
-
2003
- 2003-11-14 JP JP2003384653A patent/JP2004173271A/ja active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS63197124A (ja) * | 1987-01-29 | 1988-08-16 | インターナシヨナル・ビジネス・マシーンズ・コーポレーシヨン | 誤り検査システム |
JPH04211547A (ja) * | 1990-03-20 | 1992-08-03 | Fujitsu Ltd | 同期回路 |
JPH05122197A (ja) * | 1991-10-29 | 1993-05-18 | Nippon Hoso Kyokai <Nhk> | データ伝送装置 |
JPH1070522A (ja) * | 1996-08-27 | 1998-03-10 | Tokyo Electron Ind Co Ltd | データ受信装置 |
JP2002261624A (ja) * | 2001-03-05 | 2002-09-13 | Nec Corp | 巡回冗長検査演算方法及び巡回冗長検査演算回路 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2009141860A1 (ja) * | 2008-05-19 | 2009-11-26 | 富士通株式会社 | 検証装置、検証方法および検証プログラム |
JP5126358B2 (ja) * | 2008-05-19 | 2013-01-23 | 富士通株式会社 | 検証装置、検証方法および検証プログラム |
US8458551B2 (en) | 2008-05-19 | 2013-06-04 | Fujitsu Limited | Verification device, verification method, and verification program |
JP2009296599A (ja) * | 2008-06-09 | 2009-12-17 | Sony Corp | 電子情報を効率的に転送するシステム及び方法 |
JP2014030228A (ja) * | 2008-06-09 | 2014-02-13 | Sony Corp | 電子情報を効率的に転送するシステム及び方法 |
Also Published As
Publication number | Publication date |
---|---|
US20040098655A1 (en) | 2004-05-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2004173271A (ja) | 誤り検出を改善するローリングcrc機構 | |
US7047475B2 (en) | CRC encoding scheme for conveying status information | |
US6421803B1 (en) | System and method for implementing hybrid automatic repeat request using parity check combining | |
US8571021B2 (en) | Packet based data transmission with reduced data size | |
US7653864B2 (en) | Method and apparatus to perform error control | |
US8527852B2 (en) | Chained checksum error correction mechanism to improve TCP performance over network with wireless links | |
JP2005323372A (ja) | フレーム集約と共に使用されるmacヘッダ圧縮 | |
JP2004180295A (ja) | 通信デバイスのモジュール間で伝送された喪失メッセージを検出するためのシステムおよび方法 | |
JP5069399B2 (ja) | 入力データパケットを転送および回復する方法および装置 | |
US10256944B1 (en) | Controlling false packet acceptance | |
US20020027911A1 (en) | Method and apparatus for protecting against packet losses in packet-oriented data transmission | |
US20090210770A1 (en) | Method, system and computer program product for end to end error checking in ethernet | |
US20030051204A1 (en) | Interconnect system with error correction | |
KR20050086541A (ko) | 향상된 통신 프로토콜을 사용하는 통신 방법, 통신 시스템및 단말기 | |
JP6299768B2 (ja) | 情報処理システム、情報処理装置、及びデータ通信方法 | |
JP3439722B2 (ja) | 特殊データ・パケットにタグ付けする方法及び特殊データ・パケット検出方法 | |
RU2216868C2 (ru) | Система и способ осуществления гибридного автоматического запроса на повторение с использованием объединения проверки четности | |
US7940860B2 (en) | Communication system | |
US11996936B2 (en) | Bit error correction for Bluetooth low energy | |
US11652571B1 (en) | Incremental cyclic redundancy (CRC) process | |
CN111937329B (zh) | 传输数据的方法和转发设备 | |
Tanenbraum | The data link layer | |
Jianhua et al. | Performance evaluation of a reliable broadcast scheme for satellite communications |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20061106 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20090813 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20090818 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20091117 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20091120 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20100210 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20100521 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20101102 |