JP5269610B2 - ユーザレベル命令に応じた巡回冗長検査演算の実行 - Google Patents

ユーザレベル命令に応じた巡回冗長検査演算の実行 Download PDF

Info

Publication number
JP5269610B2
JP5269610B2 JP2008547301A JP2008547301A JP5269610B2 JP 5269610 B2 JP5269610 B2 JP 5269610B2 JP 2008547301 A JP2008547301 A JP 2008547301A JP 2008547301 A JP2008547301 A JP 2008547301A JP 5269610 B2 JP5269610 B2 JP 5269610B2
Authority
JP
Japan
Prior art keywords
crc
data
register
processor
purpose processor
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.)
Active
Application number
JP2008547301A
Other languages
English (en)
Other versions
JP2009521059A (ja
Inventor
キング,スティーヴン,アール
ベリー,フランク
コウナヴィス,ミカエル,イー
Original Assignee
インテル コーポレイション
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 インテル コーポレイション filed Critical インテル コーポレイション
Publication of JP2009521059A publication Critical patent/JP2009521059A/ja
Application granted granted Critical
Publication of JP5269610B2 publication Critical patent/JP5269610B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30018Bit or string instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error 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/09Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error 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/09Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
    • H03M13/093CRC update after modification of the information word
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error 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/09Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
    • H03M13/095Error detection codes other than CRC and single parity bit codes
    • H03M13/096Checksums
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error 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/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/157Polynomial evaluation, i.e. determination of a polynomial sum at a given value

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Probability & Statistics with Applications (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Computer Security & Cryptography (AREA)
  • Algebra (AREA)
  • Pure & Applied Mathematics (AREA)
  • Detection And Correction Of Errors (AREA)
  • Executing Machine-Instructions (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Advance Control (AREA)

Description

本発明の実施形態はデータ処理に関し、より具体的には巡回冗長検査(CRC)等のチェックサムの決定に関する。
データ処理システムにおいては、第1の記憶場所から送信されたデータを第2の記憶場所で正しく受信して、第2の記憶場所での処理を正しく行うことが望ましい。さらに、データ送信におけるエラーを検出できるようにするため、多くの場合データパケットにチェックサムを付加して送信する。例えば、送信元がCRCサムを生成し、送信データに付加する。このチェックサムは、多数のアルゴリズムのうちの1つで計算でき、受信側が受信データから生成した同様のチェックサムと比較できる。2つのチェックサムが等しければ、送信データは正しい。しかし、生成されたチェックサムが送信されたチェックサムと違えば、エラーが発生したことになる。かかるチェックサムは、送信エラーを検出するためにネットワークテクノロジではよく使用されている。
別のアプリケーションでは、違う方法でCRC情報を実装できる。例えば、CRC計算はハードウェアでもソフトウェアでも行える。ハードウェアでCRC計算を実施するには、一般的には、システムにCRC計算を実行する専用のハードウェアエンジンを設ける。したがって、CRC計算を行うデータは、CRCの計算用のハードウェアエンジンに送られ、計算したCRCをデータに付加して、例えば、システムから送信する。かかるオフロードエンジン(offload engine)の使用には、データをエンジンに送るオーバーヘッドを含め、様々な欠点がある。さらに、ステートレスハードウェアオフロードの実行は困難である。すなわち、一般的に、ステートベースのオーバーヘッドデータも追加的に送信する必要があり、複雑になってしまい、有用な作業の進行が遅れる。
多くのシステムがかかるオフロードエンジンを有していないので、CRC計算はソフトウェアで行われることが多い。ソフトウェアでCRC計算を実施するためには、一般的にルックアップテーブル方式を使用する。しかし、かかるCRC値のソフトウェア計算は周知のように遅く、計算量の多い動作である。さらに、ルックアップテーブルのメモリのフットプリントも大きく、性能に影響する。したがって、計算が遅いためネットワーク性能が落ち、処理リソースも消費してしまう。一例として、データの1バイトあたり、CRC計算には5乃至15サイクルがかかる。結果として、高速ネットワークで一般的に使用するには、ソフトウェアCRCの性能は低すぎる。
発明の詳細な説明
様々な実施形態では、チェックサム演算は、チェックサム値を計算する命令セットアーキテクチャ(ISA)を用いて行われる。より具体的には、ユーザレベル命令は、その命令により汎用プロセッサ(例えば、中央処理装置(CPU))においてCRC演算等の所望のチェックサム演算をプログラマが直接実行できるようにISA内に設けられる。CRC演算は32ビットCRC演算(すなわち、以下により詳しく説明する、32ビットランニング剰余を生成するCRC32演算)であってもよく、違う実施形態では、例えば、(2002年に公表された)IEEE802.3イーサネット(登録商標)プロトコルその他のプロトコルで使用されるCRCに対応する。
別の実施形態では、データのグループに応じてCRC計算を実行する様々なオペコードを設けてもよい。例えば、実施形態によっては、CRC計算は異なるオペコードを用いて8ビット、16ビット、32ビット、及び64ビットのグループでサポートされているが、本発明の範囲はこれに限定されない。このように、CRC計算はルックアップテーブル等を要さずにハードウェアで素早く行える。さらに、この計算は異なるオペコードにより実行される整数演算により、一般的なアーキテクチャ的に可視のプロセッサレジスタを用いて実行できる。結果として、CRCは、ネットワークオフロードハードウェア(network offload hardware)等のオフロードハードウェアのオーバーヘッドや複雑性を必要とせずに、プロセッサ内で計算できる。したがって、(例えば、1秒当たりの入出力について)データ送信の数を増やすことができる。ここではCRC演算に関して主に説明するが、本発明の実施形態は他のチェックサム演算の実行に使用することもできることに留意して欲しい。
ここで図1を参照するに、本発明の一実施形態による方法を示すフロー図である。方法100を使用して、CPUの実行ユニット等のプロセッサハードウェアに実装されたユーザレベル命令を用いてチェックサムを求める。図1に示したように、方法100においては最初にソースレジスタとデスティネーションレジスタのデータに一連の排他的論理和(XOR)を実行する(ブロック110)。XOR演算は多項式演算に相当し、より具体的には多項式除算演算に相当することに留意されたい。ソースレジスタのデータは、例えば、プロセッサが受け取った、またはプロセッサから送信されるプロセッサパイプライン中にあるデータに相当する。一例として、望ましいグループサイズ(例えば、16ビット、32ビット等)に対応するバッファ中のデータのグループが、ソースレジスタに供給される。このソースレジスタはプロセッサの汎用レジスタであってもよい。あるいは、実施形態によっては、ソースデータはメモリから取得される。デスティネーションレジスタはXOR演算から得られたランニング剰余の記憶場所に対応する。デスティネーションレジスタもプロセッサの汎用レジスタであってもよい。
実施形態によっては、XOR演算はプロセッサパイプライン中の専用ハードウェアで実行されてもよい。例えば、プロセッサの演算ユニット(例えば、整数演算ユニット等)を拡張して一連のXOR演算を実施する回路を設けてもよい。例えば、この回路は所望の多項式による多項式除算を処理するXORツリーに相当する。実施形態によっては、XOR演算で使用する多項式をXORツリーの論理ゲートにハードウェアとして組み込んでも(hard-wired)よい。さらに、XORツリーを、ビット反転等のXOR演算による所望の前処理と後処理を実施するように構成してもよい。さらに、XORツリー論理が複数のパーティションに分かれていて、各パーティションが相異なるデータサイズの演算を処理するように構成してもよい。
さらに図1を参照して、XOR演算で求めたランニング剰余に対応する結果をデスティネーションレジスタに記憶する(ブロック120)。デスティネーションレジスタは、システムの初期化時に、所定値(すべて1、すべて0、その他の値)に設定されていることに留意する。そして、チェックサム演算の実行中、このランニング剰余(running remainder)はその時点のチェックサム演算の結果で絶えず更新される。より具体的には、その時のチェックサム演算により実施された多項式除算の剰余がデスティネーションレジスタに記憶される。
次に、別のソースデータがあるか判断する(判断ブロック130)。例えば、実施形態によっては、バッファには、システムが受け取ったチェックサムを確認すべきデータが含まれている。データはソースレジスタにチャンクごとに入力され、チェックサム演算が実行される。したがって、判断ブロック130では、このバッファにこの他にデータがあるか判断する。データがあれば、次のデータのチャンクをソースレジスタに供給し、上記のブロック110に進む。
判断ブロック130において、他のソースデータはないと判断された場合、ブロック140に進む。ここで、チェックサム演算の結果が現在値(例えば、ランニング剰余)として、デスティネーションレジスタに記憶される(ブロック140)。上記の通り、このチェックサム値は様々に利用される。例えば、受信データの場合、データが正しく受信されたか確認するために、計算したチェックサムを受信したチェックサムと比較する。送信時には、チェックサムを送信データに付加し、受信側でそのデータを確認できるようにする。もちろん、チェックサムは、ハッシュ関数や擬似乱数の発生(generation of numbers pursuant to a pseudo random numbering scheme)その他の用途にも使用できる。
本発明の一実施形態によるチェックサム演算を実施するプロセッサは、望ましいアーキテクチャに応じて様々な形態を取りうる。ここで図2を参照するに、本発明の一実施形態によるプロセッサを示すブロック図である。図2に示したように、プロセッサ200はデータパス205を含む。データパス205は、レジスタエイリアステーブル(RAT:register alias table)270を含むフロントエンド制御段により制御される。RAT270は、プロセッサのフロントエンドから復号命令(decoded instructions)を受け取る(図2には図示せず)。RAT270は、フロントエンドからマイクロオペレーション(microoperations)を受け取り、そのマイクロオペレーションをデータパスのリソースのために名称変更(rename)するために使用される。データパス205では、名称変更されたマイクロオペレーションがリオーダーバッファ(ROB)250に供給される。ROB250は、マイクロオペレーションがリザベーションステーション(RS)230に送れるようになるまで、マイクロオペレーションと対応するソースオペランドとを記憶するレジスタファイルとして動作する。同様に、ROB250は、すでに実行されたマイクロオペレーションの対応する結果も記憶する。ROBエントリが開放されてマイクロオペレーションがリタイアするまで、これらの結果はROB250に保持される。
リザベーションステーション230を使用して、マイクロオペレーションの対応するソースオペランドがあり、及び/またはマイクロオペレーションがデータパス205の複数の実行ユニットの1つで実行できるようになるまで、マイクロオペレーションを記憶する。リザベーションステーション230は、命令とデータをデータパス205の実行ユニットの1つに結合する複数のディスパッチポートを含む。実施形態によっては、複数のディスパッチポートを各サイクルで使用してもよい。
図2に示すように、データパス205の実行ユニットは、アドレス生成ユニット(AGU)220、整数(INT)実行ユニット222、ストアデータ(STD)ユニット224、浮動小数点(FP)実行ユニット226、単一命令複数データ(SIMD)実行ユニット228を含む。図2に示したように、整数実行ユニット222はさらにロジック221を含む。ロジック221は、本発明の一実施形態によりチェックサム演算を実行する1つ以上のハードウェアエンジンを含む。より具体的には、ロジック221は、多項式の算術演算とそれに関係するデータ処理を実施する複数の排他的論理和(XOR)ロジックツリーを含む。実施形態によっては、ロジック221は、相異なるサイズのデータチャンクにCRC演算を実施する相異なるハードウェアエンジンを含む。一例として、ISAの複数のユーザレベル命令がそれぞれ一データサイズのCRC演算を規定する。ロジック221は、実施形態によっては、これらの相異なるCRC演算を実行する、対応する数のハードウェアエンジン(ここではXORツリーとも呼ぶ)を含む。
図2には示していないが、相異なる実施形態ではこれ以外の実行ユニットやこれとは異なる実行ユニットがあってもよい。実行ユニットの1つにおけるマイクロオペレーションの実行後、例えばリタイア(retirement)するまで記憶するために、結果データがRS230とROB250に戻される。このように、一実施形態では、CRC演算を実行するソースレジスタとデータレジスタの両方がRS230またはROB250にある。図2には示していないが、言うまでもなく、メモリオーダーバッファ(MOB)その他のリソース等の追加的バッファがプロセッサ200内にあってもよい。
さらに、言うまでもなく、図2は説明が容易になるように表示してあり、実施形態によっては、プロセッサにはより多くの段階や違う名称の段階があってもよい。例えば、書き戻し段階を実行ユニットに結合して、後でメモリ階層に送るために結果データを受け取ってもよい。あるいは、ストアバッファ、ロードバッファ等のバッファをRS230に結合してもよい。一例として、関連する命令のリタイアメントまで、マイクロオペレーションとその関連の結果データを記憶するために、リタイアメントバッファ(retirement buffer)をRS230に結合してもよい。
もちろん他の実施形態も可能である。図3を参照するに、本発明の一実施形態によるチェックサム演算を行うプロセッサの一部を示すブロック図である。図3に示したように、プロセッサ300の一部を示した。より具体的には、プロセッサ300は、XORツリー310、第1のレジスタ320、第2のレジスタ330を含み、これらはすべてプロセッサパイプラインの一部であってもよい。XORツリー310は、実施形態に応じて構成できる。例えば、XORツリー310は、第1のレベルでは、複数の3入力XORゲートを用いて実施され、そのXORゲートの出力は第2のレベルの同様のXORゲートに結合され、以下同様である。かかる実施形態では、XORツリーの各レベルは前のレベルの1/3の大きさである。もちろん他の実施形態も可能である。
さらに図3に示したように、プロセッサ300はバッファ340を含む。このバッファ340も(例えば、バッファ、キューその他として)プロセッサパイプラインの中にあってもよい。あるいは、バッファ340はプロセッサ300に付随するキャッシュメモリであってもよい。図3の実施形態では、第1のレジスタ320はソースレジスタに相当し、第2のレジスタ330はデスティネーションレジスタに相当する。実施形態によっては、これらのレジスタはプロセッサ300内の汎用レジスタであってもよい。もちろん、プロセッサ300は、他に多くのレジスタ、ロジック、機能ユニット等を含んでもよく、図3に示した部分は説明を容易にするものである。
図3に示したように、本発明の一実施形態によるチェックサムを実行するために、第1のレジスタ320の少なくとも第1の部分が、第2のレジスタ330の一部とともに、XORツリー310に設けられる。図3に示した実施形態では、8ビットCRCアキュムレーション(accumulation)を示しているが、1バイトのデータ(B0)が第1のレジスタ320からXORツリー310に供給され、第2のレジスタ330の4バイト部分がXORツリー310に供給される。この4バイト部分はCRC32演算のランニング剰余に相当する。このデータを用いて、XORツリー310はXOR演算によりデータ処理を実行し、剰余部分を含む結果を生成する。図3に示したように、この剰余部分が第2のレジスタ330に記憶されるランニング剰余である。このように、CRC演算を最小のサイクル時間で最小のプロセッサリソースを用いて効率的に実行できる。図3の実施形態では、8ビットアキュムレーション演算の場合、第1のレジスタ320の別の部分が、第2のレジスタ330の現在のコンテンツ(すなわち、32ビットランニング剰余)とともに、XORツリー310に増加的に供給される。したがって、第1のレジスタ320において64ビットのデータのCRCチェックサムを求めるためには、XORツリー310におけるXOR演算を8回(各回に、第2のレジスタ330の現在のランニング剰余とともに、第1のレジスタ320からのデータの1バイトを用いる)繰り返せばよい。チェックサムにより確認すべき別のデータがバッファ340にあれば、そのデータを第1のレジスタ320にロードし、XORツリー310で処理する。
異なるビット幅のCRC計算を処理するために異なるハードウェアがあってもよい。したがって、図2に戻り、ロジック221はかかるCRC計算を処理するために異なるXORツリー構造を含んでいてもよい。ここで図4を参照するに、本発明の一実施形態によるプロセッサの他の部分を示すブロック図である。図4に示したように、プロセッサ300は、第1のレジスタ320と第2のレジスタ330からデータを受け取るように結合した異なるXORツリー410を(例えば、図3のXORツリー310に加えて)含む。図4に示したように、バッファ340があり、CRC計算のためのデータを供給するために使用される。図4の実施形態では、XORツリー410は64ビットCRCアキュムレーションを処理するように構成されている。したがって、第1のレジスタ320のコンテンツ全体(すなわち、バイトB0−B7)は、第2のレジスタ330中のデータとXOR演算をするために、XORツリー410に1度に送られる。所望の一部がランニング剰余に相当する結果データは第2のレジスタ330に記憶される。図3と図4の具体的な実施形態に基づき説明したが、言うまでもなく、本発明の範囲はこれに限定されず、他の実施形態では、CRC演算を行う異なるハードウェア構成があってもよい。
ここで以下の表1を参照するに、本発明の様々な実施形態によるCRC演算をサポートする命令セットアーキテクチャ(ISA)の命令の例のリストを示した。表1に示したように、各命令は、オペコードと呼ばれ、ソースレジスタとデスティネーションレジスタを用いてCRC32を実行するために使用される。表に示した通り、異なる表示も可能であり、各命令は、所与のサイズのデスティネーションオペランドとソースオペランドのCRC演算を実行する。このように、表1の第1のラインを参照して、この命令は、8ビットソースオペランドと32ビットデスティネーションオペランドにCRC32演算を実行するために使用される。同様に、表1の第2のラインは、16ビットソースオペランドと32ビットデスティネーションオペランドにCRC32演算を実行するために使用される。同様に、表1の第3のラインは、32ビットソースオペランドと32ビットデスティネーションオペランドにCRC32演算を実行するために使用される。
これらの最初の3つの命令は32ビットの最大データチャンクで実行されるので、この命令は64ビットモードの演算とレガシーモード(すなわち32ビット)の演算の両方に有効であることに留意する。逆に、表1の第4と第5のラインは、8ビットと64ビットのソースオペランド(64ビットデスティネーションオペランド)に実行されるCRC演算を示している。このように、最後の2つの命令は64ビットモードの演算のみで実行される。
Figure 0005269610
実施形態によっては、これらのユーザレベルの命令は、例えば図1のフロー図に示したCRC演算を実施するために、プログラマにより使用される。
一般に、ユーザレベルCRC命令は次のように実施できる。第1のオペランド(すなわち、デスティネーションオペランド)の初期値から始めて、第2のオペランド(すなわち、ソースオペランド)のCRC32値を集積(accumulated)し、その結果をデスティネーションオペランドに記憶し戻す。異なる実施形態では、ソースオペランドはレジスタやメモリの記憶場所であってもよい。デスティネーションオペランドは32または64ビットレジスタである。デスティネーションが64ビットレジスタであるとき、32ビットの結果は最下位ダブルワードに記憶され、00000000Hがレジスタの最上位ダブルワードに記憶される。
デスティネーションオペランドに供給された初期値は、32ビットレジスタに記憶されたダブルワード整数、または64ビットレジスタの最下位ダブルワードである。CRC32値を増加的に集積する(incrementally accumulate)ため、ソフトウェアは前のCRC演算の結果をデスティネーションオペランドに保持し、ソースオペランドの新しい入力データで再びCRC演算を実行する。したがって、各命令は第1のオペランド中のランニングCRC値を取り、第2のオペランドに基づきそのCRC値を更新する。このように、所望のデータがすべてCRC演算されるまで、演算をループで実行することにより、CRCを所望のデータ量にわたって生成できる。
実施形態によっては、ソースオペランドに含まれるデータは反転ビットオーダーで処理される。これは、ソースオペランドの最上位ビットが商の最下位ビットとして扱われることを意味し、ソースオペランドのすべてのビットについて以下同様である。同様に、CRC演算の結果は反転ビットオーダーでデスティネーションレジスタに記憶できる。これは、結果として得られたCRCの最上位ビット(すなわち、ビット31)がデスティネーションレジスタの最下位ビット(ビット0)に記憶されることを意味し、CRCのすべてのビットについて以下同様である。
これらのユーザレベル命令を実施する異なる方法もあるが、以下の表2乃至6は、表1の各ユーザレベル命令のハードウェア実装の擬似コード表示を示している。
Figure 0005269610
Figure 0005269610
Figure 0005269610
Figure 0005269610
Figure 0005269610
これらの擬似コードの断片(snippets)の一般的な構造は同じであることに留意せよ。最初に、ソースレジスタ中のデータをビット反転する(すなわち、そのビットを逆のビットオーダーで一時的レジスタに配置する)。デスティネーションレジスタを同様にビット反転する。次に、シフト演算、より具体的には左シフト演算をビット反転したソースオペランドとデータオペランドの両方に行う。結果の値にXOR演算をする。この演算は選択された多項式の値による多項式除算に相当する。この値は異なる実施形態では多数の異なる形体を取るが、CRC32演算を実行する実施形態によっては、多項式は11EDC6F41Hに相当するが、本発明の範囲はこれに限定されない。この多項式除算の剰余を、ビット反転オーダーでデスティネーションオペランドの低オーダービット(例えば、32ビットまたは64ビットレジスタのビット0−31)に記憶し戻す。64ビットレジスタの場合、最上位ビット(MSB)にはゼロがロードされる。表2乃至6を参照してこの具体的な実施形態を説明したが、言うまでもなく、ユーザレベルCRC命令を提供する他の方法を実行してもよい。
ユーザレベル命令によりプロセッサパイプライン自体でCRC演算を実行することにより、データをオフロード(offload)エンジンに送る必要はなくなる。同様に、演算は供給状態(providing state)無しでも実行でき、オーバーヘッドが減少する。このように、3サイクルパスで実施されるように、CRC演算は1バイトあたり約0.4サイクル以下で実行できる。したがって、プロセッサパイプラインの専用ハードウェアとともにユーザレベル命令を使用すると性能がよくなる。さらに、3サイクルレイテンシーは、最小のリアルエステート消費とパワー消費で実現できる。本発明の実施形態を使用して、例えば、毎秒10ギガビット以上のレートのインターネットコンピュータシステムインタフェース(iSCSI)プロトコルなど、様々な記憶プロトコルを処理できる。本発明の実施形態により、プロセッサまたはそれに密接に結合したデータを使用でき、オンキャッシュデータの必要性が減少する。このように、プロセッサバッファ中のデータをXORツリーに入力し、素早くCRCを計算できる。
実施形態は多数の異なるシステムのタイプで実施できる。ここで図5を参照するに、本発明の一実施形態によるマルチプロセッサシステムを示すブロック図である。図5に示したように、このマルチプロセッサシステムは、ポイントツーポイント・インターコネクト・システムであり、ポイントツーポイント・インターコネクト450を介して結合された第1のプロセッサ470と第2のプロセッサ480とを含む。図5に示したように、各プロセッサ470、480は、マルチコアプロセッサでもよく、第1と第2のプロセッサコア(すなわち、プロセッサコア474aと474b、及びプロセッサコア484aと484b)を含む。例示を容易にするために図示はしていないが、第1のプロセッサ470と第2のプロセッサ480(より具体的には、それらの中のコア)は、本発明の一実施形態によるユーザレベルCRC命令を実行するXORツリーロジックを実行ユニット内に含んでいる。第1のプロセッサ470は、さらに、メモリコントローラハブ(MCH)472及びポイントツーポイント(P−P)・インタフェース476と478を含む。同様に、第2のプロセッサ480はMCH482及びP−Pインタフェース486と488を含む。図5に示したように、MCH472と482はプロセッサをそれぞれのメモリ、すなわちメモリ432とメモリ434に結合する。これらのメモリは、それぞれのプロセッサに局所的に付加されたメインメモリの一部であってもよい。
第1のプロセッサ470と第2のプロセッサ480は、それぞれP−Pインターコネクト452と454を介してチップセット490に結合している。図5に示したように、チップセット490はP−Pインタフェース494と498を含む。さらに、チップセット490は、チップセット490を高性能グラフィックスエンジン438と結合するインタフェース492を含む。一実施形態では、グラフィックスエンジン438をチップセット490と結合するために、AGP(Advanced Graphics Port)バス439を使用できる。AGPバス439は、インテル コーポレイション(カリフォルニア州サンタクララ)が1998年5月4日に公表したAccelerated Graphics Port Interface Specification, Revision2.0に準拠している。あるいは、これらの構成要素はポイントツーポイント・インターコネクト439で結合してもよい。
次に、チップセット490はインタフェース496を介して第1のバス416に結合している。一実施形態では、第1のバス416は、1995年6月のPCI Local Bus Specification, Production Version, Revision 2.1で規定されたPCI(Peripheral Component Interconnect)バス、またはPCI Expressバスその他の第3世代入出力(I/O)インターコネクトバス等のバスであるが、本発明の範囲はこれに限定されない。
図5に示したように、様々な入出力デバイス414を第1のバス416に結合でき、バスブリッジ418で第1のバス416を第2のバス420に結合できる。一実施形態では、第2のバス420はローピンカウント(LPC)バスであってもよい。例えば、キーボード/マウス422、通信デバイス426、データ記憶ユニット428を含む様々なデバイスを第2のバス420に結合してもよい。一実施形態では、このデータ記憶ユニット428がコード430を含む。さらに、オーディオI/O424は第2のバス420に結合してもよい。他のアーキテクチャも可能であることに留意せよ。例えば、図5のポイントツーポイントアーキテクチャのかわりに、システムはマルチドロップバスその他のアーキテクチャを実施してもよい。
実施形態はコードで実装され、命令を実行させるためにシステムをプログラムするために使用できる命令を記憶した記憶媒体に格納してもよい。記憶媒体には、フロッピー(登録商標)ディスク、光ディスク、コンパクトディスク・リードオンリメモリ(CD−ROM)、コンパクトディス・クリライタブル(CD−RW)、光磁気ディスク等の任意タイプのディスク、リードオンリメモリ(ROM)、ダイナミックランダムアクセスメモリ(DRAM)等のランダムアクセスメモリ(RAM)、スタティックランダムアクセスメモリ(SRAM)、消去可能プログラマブル・リードオンリメモリ(EPROM)、フラッシュメモリ、電気的消去可能プログラマブル・リードオンリメモリ(EEPROM)等の半導体デバイス、磁気または光カード、その他の電子的命令を記憶するのに好適な媒体が含まれるが、これらに限定はされない。
本発明を少数の実施形態を参照して説明したが、当業者はこれから多数の修正や変形を理解できるであろう。添付した請求項は、本発明の精神と範囲に含まれる修正や変形をすべてカバーするものである。
本発明の一実施形態による方法を示すフロー図である。 本発明の一実施形態によるプロセッサを示すブロック図である。 本発明の一実施形態によるチェックサム演算を行うプロセッサの一部を示すブロック図である。 本発明の一実施形態によるプロセッサの他の一部を示すブロック図である。 本発明の一実施形態によるシステムを示すブロック図である。

Claims (23)

  1. プロセッサにおいて入来データを受け取る段階と、
    チェックサム演算のユーザレベル命令に応じて、前記プロセッサのパイプラインにおいて、前記入来データに前記チェックサム演算を実行する段階と
    を含み、
    前記プロセッサは汎用プロセッサを含む
    方法。
  2. 記チェックサム演算は巡回冗長検査演算を含む、請求項1に記載の方法。
  3. 前記プロセッサのハードウェアエンジンにより前記チェックサム演算を実行する段階をさらに含み、前記プロセッサは汎用プロセッサを含む、請求項1に記載の方法。
  4. 前記ユーザレベル命令に応じて前記ハードウェアエンジンにおいて多項式の除法演算を実行する段階をさらに含む、請求項3に記載の方法。
  5. 前記ハードウェアエンジンはソースレジスタとデスティネーションレジスタに結合した排他的論理和ツリーを含む、請求項3に記載の方法。
  6. さらに、
    前記ソースレジスタから前記入来データと、及び前記デスティネーションレジスタの少なくとも一部に記憶された現在値とを、前記排他的論理和ツリーに入力する段階と、
    前記入来データと前記現在値とを用いて前記排他的論理和ツリーにおいて前記チェックサム演算を実行する段階と、
    前記排他的論理和ツリーの出力を前記デスティネーションレジスタに記憶する段階とを含む、請求項5に記載の方法。
  7. 前記排他的論理和ツリーの出力は前記チェックサム演算のランニング剰余に一致する、請求項6に記載の方法。
  8. 前記入来データを前記ソースレジスタに供給するバッファが空であるとき、前記ランニング剰余をチェックサムとして使用する段階をさらに有す、請求項7に記載の方法。
  9. さらに、
    前記入来データを前記プロセッサのソースレジスタにロードする段階と、
    前記入来データを反転する段階と、
    前記反転した入来データとデスティネーションレジスタからの反転したデータに少なくとも1回の排他的論理和演算を実行し、前記少なくとも1回の排他的論理和演算の結果を反転順に前記デスティネーションレジスタに格納する段階とを含む、請求項1に記載の方法。
  10. ルックアップテーブル情報を用いずに、前記入来データと剰余値とを用いて前記プロセッサの論理ブロックにおいて前記チェックサム演算を実行する段階をさらに有する、請求項1に記載の方法。
  11. 汎用プロセッサであって、
    ソースデータを記憶する第1のレジスタと、
    結果データを記憶する第2のレジスタと、
    前記第1のレジスタと前記第2のレジスタに結合した前記汎用プロセッサの実行ユニットであって、前記ソースデータと前記結果データを用いて巡回冗長検査(CRC)演算を実行し、前記第2のレジスタに前記CRC演算のランニング剰余に対応する前記実行ユニットの出力の少なくとも一部を供給する実行ユニットとを有し、
    前記実行ユニットはユーザレベル命令に応じて前記CRC演算を実行する、汎用プロセッサ
  12. 前記実行ユニットは汎用プロセッサパイプラインの排他的論理和(XOR)ツリーロジックを含む、請求項11に記載の汎用プロセッサ
  13. 前記XORツリーロジックは一定の多項式により多項式除算を実行する、請求項12に記載の汎用プロセッサ
  14. それぞれがあるサイズのデータに前記CRC演算を実行する複数のロジックブロックを有する、プロセッサパイプラインの整数ユニットを前記実行ユニットが有する、請求項11に記載の汎用プロセッサ
  15. ユーザレベル命令は前記CRC演算を実行するデータのサイズを示す、請求項14に記載の汎用プロセッサ
  16. 機械に実行されたとき、前記機械に、
    第1のレジスタのソースオペランドと第2のレジスタのデスティネーションオペランドからプロセッサのパイプラインの専用実行ユニットに巡回冗長検査(CRC)値を集積する段階と、
    前記集積したCRC値を前記第2のレジスタに記憶する段階と、
    別のデータを前記CRCにかけるか判断する段階と、
    別のデータを前記CRCにかけるとき、前記CRCにかけるデータが無くなるまで、前記CRC値を増加的に集積し、増加的に集積したCRC値を前記第2のレジスタに記憶する段階と
    を含む方法を実行させる命令を含む機械読み取り可能記憶媒体。
  17. 前記方法は、さらに、前記CRC用の前記プロセッサの命令セットアーキテクチャの命令に応じて前記CRC値を集積する段階を有する、請求項16に記載の機械読み取り可能記憶媒体。
  18. 前記方法は、前記ソースオペランドのサイズに基づき前記専用実行ユニットの複数部分の1つに前記CRCを集積する段階を有し、前記命令は前記ソースオペランドのサイズを示す、請求項17に記載の機械読み取り可能記憶媒体。
  19. 命令セットアーキテクチャ(ISA)の命令に応じて演算を実行する第1と第2の実行ユニットを含む汎用プロセッサであって、前記第1の実行ユニットは巡回冗長検査(CRC)演算を実行するハードウェアエンジンを含み、前記汎用プロセッサは、ソースオペランドを前記ハードウェアエンジンに供給する第1のレジスタとデスティネーションオペランドを前記ハードウェアエンジンに供給する第2のレジスタとをさらに含む汎用プロセッサと、
    前記汎用プロセッサに結合したダイナミックランダムアクセスメモリ(DRAM)とを有し、
    前記汎用プロセッサは、データを前記第1のレジスタに供給するバッファを含み、
    前記ハードウェアエンジンは、CRC演算のための前記ISAの命令に応じて、前記バッファが空になるまで、前記データに前記CRC演算を実行する、
    システム。
  20. 前記第1の実行ユニットは整数ユニットを有し、前記第2の実行ユニットは浮動小数点ユニットを有する、請求項19に記載のシステム。
  21. 前記ハードウェアエンジンは、前記第2のレジスタに前記CRC演算のランニング剰余を供給する、請求項19に記載のシステム。
  22. 前記ハードウェアエンジンは、それぞれが異なるサイズのデータにCRC演算を実行する複数の論理ブロックを含む、請求項19に記載のシステム。
  23. 前記ハードウェアエンジンは、前記データサイズの前記CRC演算のための前記ISAの命令に応じて、前記CRC演算を実行するデータサイズに対応する前記複数の論理ブロックの1つにデータを供給する、請求項22に記載のシステム。
JP2008547301A 2005-12-23 2006-12-07 ユーザレベル命令に応じた巡回冗長検査演算の実行 Active JP5269610B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/316,772 2005-12-23
US11/316,772 US7958436B2 (en) 2005-12-23 2005-12-23 Performing a cyclic redundancy checksum operation responsive to a user-level instruction
PCT/US2006/047234 WO2007078672A2 (en) 2005-12-23 2006-12-07 Performing a cyclic redundancy checksum operation responsive to a user-level instruction

Publications (2)

Publication Number Publication Date
JP2009521059A JP2009521059A (ja) 2009-05-28
JP5269610B2 true JP5269610B2 (ja) 2013-08-21

Family

ID=38195339

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008547301A Active JP5269610B2 (ja) 2005-12-23 2006-12-07 ユーザレベル命令に応じた巡回冗長検査演算の実行

Country Status (6)

Country Link
US (17) US7958436B2 (ja)
JP (1) JP5269610B2 (ja)
CN (2) CN102708022B (ja)
DE (1) DE112006003298B4 (ja)
TW (1) TWI360047B (ja)
WO (1) WO2007078672A2 (ja)

Families Citing this family (50)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7958436B2 (en) * 2005-12-23 2011-06-07 Intel Corporation Performing a cyclic redundancy checksum operation responsive to a user-level instruction
US8229109B2 (en) * 2006-06-27 2012-07-24 Intel Corporation Modular reduction using folding
US7827471B2 (en) * 2006-10-12 2010-11-02 Intel Corporation Determining message residue using a set of polynomials
US7852851B2 (en) * 2006-11-10 2010-12-14 Broadcom Corporation Method and system for hash table based routing via a prefix transformation
US8689078B2 (en) 2007-07-13 2014-04-01 Intel Corporation Determining a message residue
US7886214B2 (en) * 2007-12-18 2011-02-08 Intel Corporation Determining a message residue
US8042025B2 (en) * 2007-12-18 2011-10-18 Intel Corporation Determining a message residue
GB2458665B (en) * 2008-03-26 2012-03-07 Advanced Risc Mach Ltd Polynomial data processing operation
CN101527615A (zh) * 2009-04-07 2009-09-09 华为技术有限公司 一种循环冗余校验crc码的实现方法和装置
US8543888B2 (en) * 2009-06-09 2013-09-24 Microchip Technology Incorporated Programmable cyclic redundancy check CRC unit
US8117496B2 (en) * 2009-06-18 2012-02-14 International Business Machines Corporation Detecting and recovering from silent data errors in application cloning systems
US8464125B2 (en) 2009-12-10 2013-06-11 Intel Corporation Instruction-set architecture for programmable cyclic redundancy check (CRC) computations
US8683307B2 (en) * 2011-05-27 2014-03-25 International Business Machines Corporation Checksum calculation, prediction and validation
CN103795502B (zh) * 2014-02-28 2017-04-12 杭州华三通信技术有限公司 一种数据帧校验码生成方法和装置
CN103984530B (zh) * 2014-05-15 2016-08-17 中国航天科技集团公司第九研究院第七七一研究所 一种提高store指令执行效率的流水线结构及方法
CN104133736A (zh) * 2014-07-29 2014-11-05 江苏宏云技术有限公司 一种矢量crc校验指令的设计方法
US9829899B2 (en) 2014-11-10 2017-11-28 Duke Energy Corporation Apparatuses including utility meter, power electronics, and communications circuitry, and related methods of operation
US20160191678A1 (en) * 2014-12-27 2016-06-30 Jesse C. Brandeburg Technologies for data integrity of multi-network packet operations
US10797722B2 (en) * 2016-06-10 2020-10-06 The Boeing Company System and method for providing hardware based fast and secure expansion and compression functions
US10255132B2 (en) * 2016-06-22 2019-04-09 Advanced Micro Devices, Inc. System and method for protecting GPU memory instructions against faults
CN107145334B (zh) * 2017-04-26 2020-10-09 龙芯中科技术有限公司 常量获取方法、装置、处理器及计算机可读存储介质
CN107544863B (zh) * 2017-06-26 2021-07-20 新华三技术有限公司 一种数据存储方法及装置
DE102017212181A1 (de) * 2017-07-17 2019-01-17 Robert Bosch Gmbh Verfahren und Vorrichtung zum Bestimmen von Prüfsummen, Pufferspeicher und Prozessor
WO2019047788A1 (zh) 2017-09-08 2019-03-14 华为技术有限公司 编码方法及装置
US10594439B2 (en) 2017-09-08 2020-03-17 Huawei Technologies Co., Ltd. Channel encoding method and apparatus in wireless communications to output a polar encoded bit sequence
CN107943611B (zh) * 2017-11-08 2021-04-13 天津国芯科技有限公司 一种快速产生crc的控制装置
CN108540137B (zh) * 2018-03-02 2021-09-03 江西清华泰豪三波电机有限公司 一种循环冗余校验码生成方法与装置
US11468037B2 (en) * 2019-03-06 2022-10-11 Semiconductor Components Industries, Llc Memory device and data verification method
US11226905B2 (en) 2019-04-01 2022-01-18 Nutanix, Inc. System and method for mapping objects to regions
US11809382B2 (en) 2019-04-01 2023-11-07 Nutanix, Inc. System and method for supporting versioned objects
US11029993B2 (en) 2019-04-04 2021-06-08 Nutanix, Inc. System and method for a distributed key-value store
CN111800223B (zh) * 2019-08-15 2023-06-23 北京京东尚科信息技术有限公司 生成发送报文、处理接收报文的方法、装置和系统
CN112445525B (zh) * 2019-09-02 2024-08-16 中科寒武纪科技股份有限公司 数据处理方法、相关设备及计算机可读介质
US11704334B2 (en) 2019-12-06 2023-07-18 Nutanix, Inc. System and method for hyperconvergence at the datacenter
KR20210084871A (ko) 2019-12-30 2021-07-08 삼성전자주식회사 안전 민감 데이터의 무결성 점검 장치 및 이를 포함하는 전자 기기
US11609777B2 (en) 2020-02-19 2023-03-21 Nutanix, Inc. System and method for multi-cluster storage
US20210334284A1 (en) 2020-04-28 2021-10-28 Nutanix, Inc. System and method of querying objects on demand
US11487787B2 (en) 2020-05-29 2022-11-01 Nutanix, Inc. System and method for near-synchronous replication for object store
US12001872B2 (en) 2020-10-14 2024-06-04 Nutanix, Inc. Object tiering from local store to cloud store
US11900164B2 (en) 2020-11-24 2024-02-13 Nutanix, Inc. Intelligent query planning for metric gateway
US11822370B2 (en) 2020-11-26 2023-11-21 Nutanix, Inc. Concurrent multiprotocol access to an object storage system
US20220385488A1 (en) 2021-05-31 2022-12-01 Nutanix, Inc. System and method for reconciling consumption data
US11899572B2 (en) 2021-09-09 2024-02-13 Nutanix, Inc. Systems and methods for transparent swap-space virtualization
US11748019B2 (en) * 2021-10-26 2023-09-05 EMC IP Holding Company LLC Method to efficiently transfer support and system logs from air-gapped vault systems to replication data sources by re-utilizing the existing replication streams
US12032522B2 (en) * 2021-11-02 2024-07-09 Paul Tsyganko System, method, and computer program product for cataloging data integrity
US12032857B2 (en) 2021-11-22 2024-07-09 Nutanix, Inc. System and method for shallow copy
CN114726383B (zh) * 2022-04-12 2024-07-12 北京理工大学 一种基于crc-16的高吞吐量并行循环冗余校验的方法
CN115150024B (zh) * 2022-09-02 2022-11-18 无锡沐创集成电路设计有限公司 数据处理方法、装置、设备和介质
CN116861493B (zh) * 2023-08-31 2024-03-29 上海芯联芯智能科技有限公司 一种校验码生成方法、处理器及电子设备
CN117993355A (zh) * 2024-01-31 2024-05-07 北京中科昊芯科技有限公司 一种循环冗余校验的方法及芯片

Family Cites Families (78)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2253428A5 (ja) * 1973-11-30 1975-06-27 Honeywell Bull Soc Ind
US3891974A (en) 1973-12-17 1975-06-24 Honeywell Inf Systems Data processing system having emulation capability for providing wait state simulation function
US4351024A (en) * 1975-04-21 1982-09-21 Honeywell Information Systems Inc. Switch system base mechanism
US4130867A (en) * 1975-06-19 1978-12-19 Honeywell Information Systems Inc. Database instruction apparatus for determining a database record type
US4413319A (en) * 1981-03-09 1983-11-01 Allen-Bradley Company Programmable controller for executing block transfer with remote I/O interface racks
US4438512A (en) * 1981-09-08 1984-03-20 International Business Machines Corporation Method and apparatus for verifying storage apparatus addressing
JPH0822448B2 (ja) 1987-06-26 1996-03-06 石川島播磨重工業株式会社 カロ−ゼルリ−ル装置
JP2818415B2 (ja) * 1988-05-18 1998-10-30 日本電気株式会社 バッファ記憶装置
JPH0679276B2 (ja) * 1990-08-31 1994-10-05 インターナショナル・ビジネス・マシーンズ・コーポレイション 同一従属型プロセスのスループット増大方法、プロセス生成回路、周期冗長コードジェネレータ、およびコントローラシステム
US5369641A (en) * 1991-11-12 1994-11-29 Storage Technology Corporation Method and apparatus for detecting and correcting errors in data on magnetic tape media
DE69320321T2 (de) 1993-02-05 1998-12-24 Hewlett-Packard Co., Palo Alto, Calif. Verfahren und Gerät zum Nachprüfen von CRC-Koden, wobei CRC Teilkode kombiniert werden
US5715278A (en) * 1993-05-11 1998-02-03 Ericsson Inc. Standby power saving in mobile phones
US5645159A (en) * 1994-03-30 1997-07-08 Lauener Engineering, Ltd. Method and apparatus for continuously casting metal
JP2814918B2 (ja) * 1994-07-07 1998-10-27 株式会社デンソー マイクロコンピュータ
US6237074B1 (en) * 1995-05-26 2001-05-22 National Semiconductor Corp. Tagged prefetch and instruction decoder for variable length instruction set and method of operation
US5663952A (en) * 1995-07-07 1997-09-02 Sun Microsystems, Inc. Checksum generation circuit and method
US7301541B2 (en) * 1995-08-16 2007-11-27 Microunity Systems Engineering, Inc. Programmable processor and method with wide operations
US5701316A (en) * 1995-08-31 1997-12-23 Unisys Corporation Method for generating an internet protocol suite checksum in a single macro instruction
US5946467A (en) * 1996-09-20 1999-08-31 Novell, Inc. Application-level, persistent packeting apparatus and method
US5844923A (en) 1996-10-24 1998-12-01 At&T Corp Fast framing of nude ATM by header error check
US5960012A (en) 1997-06-23 1999-09-28 Sun Microsystems, Inc. Checksum determination using parallel computations on multiple packed data elements
US5974574A (en) * 1997-09-30 1999-10-26 Tandem Computers Incorporated Method of comparing replicated databases using checksum information
US7185266B2 (en) * 2003-02-12 2007-02-27 Alacritech, Inc. Network interface device for error detection using partial CRCS of variable length message portions
US6029186A (en) * 1998-01-20 2000-02-22 3Com Corporation High speed calculation of cyclical redundancy check sums
US6012063A (en) * 1998-03-04 2000-01-04 Starfish Software, Inc. Block file system for minimal incremental data transfer between computing devices
US7932911B2 (en) * 1998-08-24 2011-04-26 Microunity Systems Engineering, Inc. Processor for executing switch and translate instructions requiring wide operands
JP2000124811A (ja) * 1998-10-12 2000-04-28 Hitachi Ltd 通信データ処理装置及びデータ受信システム
US6279140B1 (en) * 1999-01-07 2001-08-21 International Business Machines Corporation Method and apparatus for checksum verification with receive packet processing
US6191614B1 (en) * 1999-04-05 2001-02-20 Xilinx, Inc. FPGA configuration circuit including bus-based CRC register
US6565443B1 (en) 1999-09-14 2003-05-20 Innovative Gaming Corporation System and method for verifying the contents of a mass storage device before granting access to computer readable data stored on the device
US6550002B1 (en) * 1999-11-04 2003-04-15 International Business Machines Corporation Method and system for detecting a flush of an instruction without a flush indicator
US6964008B1 (en) * 1999-11-12 2005-11-08 Maxtor Corporation Data checksum method and apparatus
JP2003523682A (ja) * 2000-02-17 2003-08-05 アナログ デバイス インコーポレーテッド Crc、および他の剰余を基本とする符号の生成に用いる方法、装置、製品
US6631488B1 (en) * 2000-06-30 2003-10-07 Agilent Technologies, Inc. Configurable error detection and correction engine that has a specialized instruction set tailored for error detection and correction tasks
US6848072B1 (en) * 2000-09-19 2005-01-25 Bbn Solutions Llc Network processor having cyclic redundancy check implemented in hardware
US7292586B2 (en) * 2001-03-30 2007-11-06 Nokia Inc. Micro-programmable protocol packet parser and encapsulator
KR100434270B1 (ko) * 2001-05-30 2004-06-04 엘지전자 주식회사 가전기기 네트워크 제어시스템
EP1438662A2 (en) * 2001-10-11 2004-07-21 Altera Corporation Error detection on programmable logic resources
US6907466B2 (en) * 2001-11-08 2005-06-14 Extreme Networks, Inc. Methods and systems for efficiently delivering data to a plurality of destinations in a computer network
US7454601B2 (en) 2002-03-28 2008-11-18 Intel Corporation N-wide add-compare-select instruction
JP2003346432A (ja) * 2002-05-22 2003-12-05 Internatl Business Mach Corp <Ibm> データ記憶装置およびデータ処理方法
US20040010612A1 (en) * 2002-06-11 2004-01-15 Pandya Ashish A. High performance IP processor using RDMA
US6957321B2 (en) * 2002-06-19 2005-10-18 Intel Corporation Instruction set extension using operand bearing NOP instructions
US7103821B2 (en) * 2002-07-03 2006-09-05 Intel Corporation Method and apparatus for improving network router line rate performance by an improved system for error checking
US7036007B2 (en) 2002-09-09 2006-04-25 Intel Corporation Firmware architecture supporting safe updates and multiple processor types
US7313583B2 (en) * 2002-10-22 2007-12-25 Broadcom Corporation Galois field arithmetic unit for use within a processor
US7327781B2 (en) * 2002-12-17 2008-02-05 Invensys Systems, Inc. Universal intelligent modem
US7421637B1 (en) * 2003-01-16 2008-09-02 Cisco Technology, Inc. Generating test input for a circuit
TWI220962B (en) 2003-01-20 2004-09-11 Mediatek Inc Firmware updating method and related apparatus for checking content of replacing firmware before firmware updating
US7082563B2 (en) 2003-01-31 2006-07-25 Italtel S.P.A. Automated method for generating the cyclic redundancy check for transmission of multi-protocol packets
US7392399B2 (en) 2003-05-05 2008-06-24 Sun Microsystems, Inc. Methods and systems for efficiently integrating a cryptographic co-processor
US7383428B2 (en) 2003-09-11 2008-06-03 International Business Machines Corporation Method, apparatus and computer program product for implementing atomic data tracing
US7826614B1 (en) * 2003-11-05 2010-11-02 Globalfoundries Inc. Methods and apparatus for passing initialization vector information from software to hardware to perform IPsec encryption operation
TWI224729B (en) 2003-12-15 2004-12-01 Mediatek Inc Method for determining program code
US7360142B1 (en) * 2004-03-03 2008-04-15 Marvell Semiconductor Israel Ltd. Methods, architectures, circuits, software and systems for CRC determination
US8351468B2 (en) * 2004-04-05 2013-01-08 Broadcom Corporation Method and apparatus for downloading content using channel bonding
US7157944B1 (en) * 2004-04-27 2007-01-02 Altera Corporation Differential signal detector methods and apparatus
US7594124B2 (en) * 2004-06-09 2009-09-22 Intel Corporation Cross validation of data using multiple subsystems
US7676655B2 (en) 2004-06-30 2010-03-09 Sun Microsystems, Inc. Single bit control of threads in a multithreaded multicore processor
US7246191B2 (en) * 2005-03-31 2007-07-17 Intel Corporation Method and apparatus for memory interface
US7454667B2 (en) * 2005-04-26 2008-11-18 Intel Corporation Techniques to provide information validation and transfer
US7590930B2 (en) * 2005-05-24 2009-09-15 Intel Corporation Instructions for performing modulo-2 multiplication and bit reflection
US7805706B1 (en) * 2005-06-21 2010-09-28 Unisys Corporation Process for optimizing software components for an enterprise resource planning (ERP) application SAP on multiprocessor servers
US7646788B2 (en) * 2005-08-03 2010-01-12 The Boeing Company TCP/IP tunneling protocol for link 16
US8335226B2 (en) * 2005-08-03 2012-12-18 Broadcom Corporation Systems and methods to transmit information among a plurality of physical upstream channels
US20070067698A1 (en) 2005-09-19 2007-03-22 King Steven R Techniques to perform prefetching of content in connection with integrity validation value determination
US7523378B2 (en) 2005-09-23 2009-04-21 Intel Corporation Techniques to determine integrity of information
DE102005061394A1 (de) * 2005-12-22 2007-06-28 Robert Bosch Gmbh Fehlertolerantes Prozessorsystem
US7958436B2 (en) * 2005-12-23 2011-06-07 Intel Corporation Performing a cyclic redundancy checksum operation responsive to a user-level instruction
US7324913B2 (en) * 2006-02-01 2008-01-29 International Business Machines Corporation Methods and apparatus for testing a link between chips
US7925957B2 (en) 2006-03-20 2011-04-12 Intel Corporation Validating data using processor instructions
US7865704B2 (en) * 2006-03-29 2011-01-04 Freescale Semiconductor, Inc. Selective instruction breakpoint generation based on a count of instruction source events
US8024708B2 (en) 2006-06-20 2011-09-20 Google Inc. Systems and methods for debugging an application running on a parallel-processing computer system
US8209597B2 (en) 2009-03-23 2012-06-26 Cognitive Electronics, Inc. System and method for achieving improved accuracy from efficient computer architectures
US8392661B1 (en) 2009-09-21 2013-03-05 Tilera Corporation Managing cache coherence
US8464125B2 (en) * 2009-12-10 2013-06-11 Intel Corporation Instruction-set architecture for programmable cyclic redundancy check (CRC) computations
US8417961B2 (en) * 2010-03-16 2013-04-09 Oracle International Corporation Apparatus and method for implementing instruction support for performing a cyclic redundancy check (CRC)
US8910031B1 (en) * 2011-03-29 2014-12-09 Emc Corporation DIF-CRC based fast hashing

Also Published As

Publication number Publication date
US20130305116A1 (en) 2013-11-14
US20130305118A1 (en) 2013-11-14
US11899530B2 (en) 2024-02-13
US11048579B2 (en) 2021-06-29
CN102708022A (zh) 2012-10-03
US7958436B2 (en) 2011-06-07
US9116684B2 (en) 2015-08-25
DE112006003298T5 (de) 2009-01-08
TW200809488A (en) 2008-02-16
US20220091926A1 (en) 2022-03-24
US8713416B2 (en) 2014-04-29
US20130305117A1 (en) 2013-11-14
DE112006003298B4 (de) 2021-11-18
US8775910B2 (en) 2014-07-08
US20200159614A1 (en) 2020-05-21
US20140281798A1 (en) 2014-09-18
CN101305349B (zh) 2012-05-02
CN101305349A (zh) 2008-11-12
CN102708022B (zh) 2015-07-08
US20130191614A1 (en) 2013-07-25
US20160224411A1 (en) 2016-08-04
TWI360047B (en) 2012-03-11
WO2007078672A3 (en) 2007-09-13
US20150155883A1 (en) 2015-06-04
US20170242746A1 (en) 2017-08-24
US10379938B2 (en) 2019-08-13
US20130305016A1 (en) 2013-11-14
US8769386B2 (en) 2014-07-01
US9262159B2 (en) 2016-02-16
US20130305011A1 (en) 2013-11-14
US8856627B2 (en) 2014-10-07
US8775911B2 (en) 2014-07-08
US20130305115A1 (en) 2013-11-14
US8225184B2 (en) 2012-07-17
US9645884B2 (en) 2017-05-09
JP2009521059A (ja) 2009-05-28
US8793559B2 (en) 2014-07-29
US8775912B2 (en) 2014-07-08
US20110231744A1 (en) 2011-09-22
US20070150795A1 (en) 2007-06-28
US20120240016A1 (en) 2012-09-20
US8413024B2 (en) 2013-04-02
WO2007078672A2 (en) 2007-07-12
US8769385B2 (en) 2014-07-01
US20130305015A1 (en) 2013-11-14

Similar Documents

Publication Publication Date Title
JP5269610B2 (ja) ユーザレベル命令に応じた巡回冗長検査演算の実行
US9047082B2 (en) Instruction-set architecture for programmable Cyclic Redundancy Check (CRC) computations
US7925957B2 (en) Validating data using processor instructions

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111004

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111227

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120717

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121016

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: 20130409

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130508

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 5269610

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250