JP2002517060A - エラー比較システム - Google Patents

エラー比較システム

Info

Publication number
JP2002517060A
JP2002517060A JP2000551486A JP2000551486A JP2002517060A JP 2002517060 A JP2002517060 A JP 2002517060A JP 2000551486 A JP2000551486 A JP 2000551486A JP 2000551486 A JP2000551486 A JP 2000551486A JP 2002517060 A JP2002517060 A JP 2002517060A
Authority
JP
Japan
Prior art keywords
error
crc
ecc
byte
sector
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
Application number
JP2000551486A
Other languages
English (en)
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
Priority to US8576598A priority Critical
Priority to US09/085,765 priority
Application filed by クロジック コーポレーション filed Critical クロジック コーポレーション
Priority to PCT/US1999/011819 priority patent/WO1999062182A1/en
Publication of JP2002517060A publication Critical patent/JP2002517060A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • G11B20/18Error detection or correction; Testing, e.g. of drop-outs
    • HELECTRICITY
    • H03BASIC ELECTRONIC 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
    • H03BASIC ELECTRONIC 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
    • HELECTRICITY
    • H03BASIC ELECTRONIC 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/29Coding, 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 combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes

Abstract

(57)【要約】 【課題】 ディスク・ドライブのディスクからデータを読み出す際に誤り検出および誤り訂正の精度および速度を向上させるための回路および方法を提供すること。 [要約] CRCを用いて、ディスク・ドライブ(110)のディスク(116)からデータを読み出すときにECC装置(120)が検出し訂正したエラーを調べる。CRC装置(118)は、ディスク・プラタ(114)から読み出されたセクタバイトと、ECC装置(120)がデータバイトおよびCRCバイトに対して行った誤り訂正の両方を監視する。CRC装置(118)はこの情報を用いて、バッファ装置(122)に記憶されているECC訂正済みデータバイトが正しく訂正されたかどうかを判定する。CRC装置(118)は、ECC装置(120)と同時にディスク(116)からデータバイトおよびCRCバイトを読み出す。ECC装置(120)が剰余を生成してセクタのエラーを検出し始めるのとほぼ同時に、CRC装置(118)は剰余を生成してデータのエラーを検出し始める。CRC装置(118)はECC装置(120)を待たず、ECC誤り訂正を終了してバッファに転送する。データをホストコンピュータ(112)に転送する前に、CRC誤り検査を完了する。特に、ディスク・ドライブ・コントローラ(126)がデータをホスト(112)に送る前に、CRC装置(118)はデータを承認する。

Description

【発明の詳細な説明】

【0001】

【発明の属する技術分野】

本発明は、概して、コンピュータに関する。特に、本発明は、ディスク・ドラ
イブにおける誤り検出および誤り訂正の精度および速度を向上させるための回路
および方法に関する。

【0002】

【従来の技術】

従来のディスク・ドライブは、データバイトを所定の長さの組でディスク・ド
ライブ・プラタに記憶する。ディスク・ドライブ・コントローラまたはホストコ
ンピュータは、誤り訂正符号(ECC)バイトおよび巡回冗長検査(CRC)バ
イトを各データバイトの組毎に生成する場合がある。ホストコンピュータがCR
Cバイトを生成し、ディスク・コントローラがそれ自身のCRCバイトの組を生
成する場合がある。CRCバイトおよびECCバイトはデータバイト・セットの
末尾に付加されている。データバイト、CRCバイトおよびECCバイトはとも
に「セクタ」を構成し、このセクタはディスク・プラタに記憶される。ディスク
・ドライブ・コントローラがディスクからセクタを読み出す場合、データバイト
およびCRCバイトはディスク・ドライブのバッファ装置に記憶される。ECC
装置はプラタから読み出されたセクタ内のエラーを検出し訂正する。これらの訂
正は、バッファ装置に記憶されているデータバイトおよびCRCバイトに対して
行われる。

【0003】

【発明が解決しようとする課題】

しかしながら、ECC装置は、CRC装置によって検出されたデータおよびデ
ィスクから読み出されたCRCバイトにエラーが実際に存在する場合に、誤って
エラーを検出しないおそれがある。ECC装置がエラーを見逃すと、装置はデー
タおよびCRCバイトを誤った値に訂正することもない。他の誤訂正の状況とし
て、ECC装置が本当のエラーを検出するが誤ったバイトを正しく訂正できない
場合がある。これらの状況はともに誤訂正(miscorrection)であ
る。高い誤り検出および訂正機能を有するECC装置を備えたディスク・ドライ
ブほど誤訂正を引き起こす確率が高い。

【0004】 ECC装置がバッファ装置に記憶されているデータおよびCRCバイトに訂正
(または誤訂正)を行った後、ディスク・ドライブ・コントローラはバッファの
内容を読み出し、これらの内容をバスを介してホストコンピュータに転送する。
例えば、このバスは小型コンピュータ用周辺装置インタフェース(SCSI)バ
スでもよい。データ転送中、CRC検査装置は「訂正済みの」データバイトがホ
ストに転送されているときに「訂正済みの」データバイトを蓄積し、CRC剰余
を生成し、ECCにより誤訂正の有無を調べる。しかし、CRC検査装置は、ホ
ストコンピュータへのデータ転送が完了するまで、転送データが誤訂正を含むか
どうかの分析を完了しない。ホストへの不正なデータ転送が完了した後、CRC
検査装置は、ホストコンピュータが受け取ったデータが誤訂正を含むという旨の
メッセージをホストコンピュータに送る。ホストコンピュータは、誤ったデータ
バイトを破棄し、ディスク・プラタからのデータバイトの再読み出しおよびデー
タバイトの再伝送の要求をディスク・ドライブに送らなければならない。

【0005】 これは、ホストコンピュータが誤ったデータを受け取り、CRC検査装置から
メッセージを受け取り、ディスク・ドライブ・コントローラにデータの再伝送を
要求し、読み出され転送される新しいデータを待つ間、ホストコンピュータは他
のタスクを行っている可能性があるので、非効率的である。また、これは、伝送
、再伝送およびCRC検査のメッセージがSCSIバス上の帯域幅を占有するの
で、非効率的である。

【0006】 さらに、ホスト側の性能に及ぼされる悪影響がある。ホストコンピュータ、イ
ンタフェースおよび/またはソフトウェアアプリケーションの中には不正なデー
タを処理することができないものがある。これにより、ホストコンピュータによ
って現在実行されているアプリケーションが故障してしまう。ホストコンピュー
タの中には不正なデータを処理することはできるが迅速に復旧することができな
いものがあり、このため、望ましくない遅延を招いてしまう。

【0007】

【課題を解決するための手段】

(発明の開示) 本発明は、ディスク・ドライブのディスクからデータを読み出す際に誤り検出
および誤り訂正の精度および速度を向上させるための回路および方法を提供する
。本発明は、CRC装置を用いて、ディスク・プラタから読み出されたセクタバ
イトとECC装置がデータおよびCRCバイトに行った誤り訂正との両方を監視
する。CRC装置は、この情報を用いて、バッファ装置に記憶されているECC
訂正済みデータバイトが正しいかどうかを判定する。

【0008】 従来の手法とは対照的に、本発明のCRC装置は、ECC装置と同時に、デー
タバイトおよびCRCバイトをディスクから読み出す。このため、ECC装置が
剰余を生成してセクタのエラーを検出し始めるのとほぼ同時に、CRC装置は剰
余を生成してデータのエラーを検出し始める。このため、本発明のCRC装置は
ECC装置を待たず、ECC誤り訂正を終了してバッファに転送するので、時間
が節約される。これにより、ECC装置が試みた訂正を終了した後、CRC装置
がバッファの内容を読み出すのに費やされる時間が不要になる。

【0009】 本発明の他の利点は、本回路および方法が、データをホストコンピュータに転
送する前に、CRC誤り検査を完了させることである。換言すれば、ディスク・
ドライブ・コントローラがデータをホストに送る前に、CRC装置はデータを承
認しなければならない。

【0010】 ディスク・ドライブ・コントローラが現在の読み出し動作を打ち切り、同じセ
クタを読み出す動作を再度試みるべき状況は少なくとも5つある。状況の1つは
、ECC装置が、ディスクから読み出されたデータに訂正不能エラーを検出した
場合である。他の状況は、ECC装置が1つ以上の訂正不能エラーを「検出」し
、CRC装置はエラーを検出していない場合である。これは誤検出である。EC
C装置がこのデータを訂正しようとした場合、誤訂正が発生する。他の状況は、
ECC装置がエラーを検出せず、CRC装置がエラーを検出した場合である。他
の状況は、ECC装置およびCRC装置の両方が同じエラーを検出するが、EC
C装置がエラーを正しく訂正できない場合である。他の状況は、CRC装置およ
びECC装置の両方が少なくとも1つのエラーを検出するが、検出エラーが同じ
でない場合である。これらの状況のすべてにおいて、本発明のCRC装置はディ
スク・ドライブ・コントローラに通知する。ディスク・ドライブ・コントローラ
は読み出し動作を打ち切り、読み出されたセクタ全体を破棄し、誤ったデータを
ホストに伝送するのを中止する。ディスク・ドライブ・コントローラはディスク
から同じデータセクタを読み出す動作を再度試みる。

【0011】 このため、本発明のCRC装置およびディスク・ドライブ・コントローラは、
ホストコンピュータに送られる誤ったデータの量を少なくする。これにより、ホ
ストが誤訂正データを処理しようとして、その結果、故障、ソフトウェアアプリ
ケーションエラーおよび望ましくない遅延を引き起こしてしまう問題を軽減する

【0012】 また、本発明は、ホストが誤ったデータを破棄し、ディスク・ドライブからの
再伝送を要求し、ディスク・ドライブによって読み出され転送される新しいデー
タを待つのに要する時間をなくす。ホストコンピュータは時間を節約し、この節
約された時間の間に他のタスクを行うことができる。

【0013】 また、本発明は、伝送、再伝送およびCRC検査のメッセージがSCSIバス
上で占有する帯域幅を小さくする。

【0014】 本発明の一局面は、誤り訂正符号(ECC)装置がディスク・ドライブのディ
スクから読み出されたバイトセクタに対して行った1つ以上の訂正を検査するシ
ステムである。本システムは、1つ以上のバイトセクタを読み出す少なくとも1
つのディスクと、ECC装置と、CRC装置と、バッファ装置と、ディスク・ド
ライブ・コントローラとを備える。ECC装置はバイトセクタで見つけたエラー
を検出し訂正する。CRC装置は、セクタのデータがホストコンピュータに伝送
される前に、誤り訂正装置が行った訂正を検査する。CRC装置は、ECC装置
がバイトセクタを受け取るのと同時にバイトセクタを受け取る。バッファ装置は
、ディスクから読み出されたバイトセクタの少なくとも一部を一時的に記憶し、
ECC装置によるバイトセクタに対する訂正を実施する。ディスク・ドライブ・
コントローラは、バッファ装置からホストコンピュータへのバイトセクタの伝送
を制御する。ディスク・ドライブ・コントローラは、CRC装置が検出したエラ
ーがECC装置が検出したエラーと一致しない場合、バッファ装置内部の現在の
バイトセクタを打ち切り、再度読み出し動作を試みる。

【0015】 本発明の他の局面は、ECC装置がディスク・ドライブのディスクから読み出
されたバイトセクタに対して行った1つ以上の訂正を検査する方法である。本方
法は、バイトセクタをCRC装置およびECC装置に読み込み、セクタ内のデー
タバイトからCRC剰余を生成し、セクタからECC剰余を生成することを含む
。CRC装置は、CRC装置が見つけたエラー位置およびエラー値とECC装置
が見つけたエラー位置およびエラー値とを比較する。本方法は、さらに、ディス
ク・ドライブが読み出した現在のセクタをホストコンピュータに送ることなく破
棄し、CRC装置が検出したエラー位置またはエラー値がECC装置が検出した
エラー位置またはエラー値と一致しない場合、同じセクタを読み出す動作を再度
試みることを含む。

【0016】

【発明の実施の形態】

(実施例) 本発明は、ディスク・ドライブ・コントローラがバッファ装置の内容を読み出
し、その内容をホストコンピュータに転送する前に、CRC検査を行う回路およ
び方法に関する。図1は、本発明の好適な実施の形態に係るバイトのセクタ10
0を示す。各バイトは8ビットを含む。好適な実施の形態では、セクタのデータ
部102は516バイトを含み、4バイトの論理ブロックアドレス(LBA)と
、512データバイトとから構成される。CRC部104は2〜4バイトを含み
、従来の方法を用いてデータ部102から生成される。ECC部106は24〜
40バイトを含み、従来の方法を用いてデータ部102およびCRC部104か
ら生成される。本回路および方法はさまざまな大きさのセクタに対して構成可能
である。データ部102、CRC部104およびECC部106の特定のバイト
長は、本発明の回路および方法の機能に影響を及ぼさない。本回路および方法は
、異なるデータバイト長、CRCバイト長およびECCバイト長のセクタを用い
るように構成してもよい。

【0017】 好適な実施の形態において、ECCバイトはデータ102およびCRCバイト
104の四重インタリーブから生成される。インタリービングの目的は、バース
トエラーを訂正することである。四重インタリーブにおいて、データおよびCR
Cバイトを計数して4ずつのグループに分ける。好適な実施の形態では、バイト
をセクタの右(すなわち、末尾)からセクタの左(すなわち、先頭)まで計数す
る。セクタ100の右から1番目のバイトおよびそれ以降の4バイト毎(すなわ
ち、右から左に向かって1番目のバイト、5番目のバイト、9番目のバイト等)
をまとめてグループを作り第1のインタリーブを形成し、ディスク・ドライブ・
コントローラがこの第1のインタリーブを用いて第1のECCブロックを生成す
る。セクタ100の右(端)から2番目のバイトおよびそれ以降の4バイト毎(
すなわち、2番目のバイト、6番目のバイト、10番目のバイト等)をまとめて
グループを作り第2のインタリーブを形成し、この第2のインタリーブを用いて
第2のECCブロックを生成する。セクタ100の右(端)から3番目のバイト
およびセクタ100のそれ以降の4バイト毎(すなわち、3番目のバイト、7番
目のバイト、11番目のバイト等)をまとめてグループを作り第3のインタリー
ブを形成し、この第3のインタリーブを用いて第3のECCブロックを生成する
。セクタ100の右(端)から4番目のバイトおよびセクタ100のそれ以降の
4バイト毎(すなわち、4番目のバイト、8番目のバイト、12番目のバイト等
)をまとめてグループを作り第4のインタリーブを形成し、この第4のインタリ
ーブを用いて第4のECCブロックを生成する。この計数は必ずしもセクタ10
0の右から左へ開始する必要はない。他の実施の形態では、インタリーブの順序
は左から開始してもよいし、他の規則正しい順序で開始してもよい。

【0018】 これらの4つのインタリーブから、ディスク・ドライブ・コントローラ126
はそれらに対応する4つのECCブロックを生成する。40ECCバイトを持つ
一実施の形態では、各ECCブロックの長さは10バイトである。各ECCブロ
ックを用いて、その特定のECCブロックに関連するインタリーブのエラーを検
出し訂正する。他の実施の形態では、ディスク・ドライブ110は3つのインタ
リーブを用いる。3つまたは4つのインタリーブから生成されたECCは最大2
0バイトまで訂正することができる。

【0019】 図2は、本発明の好適な実施の形態に係るディスク・ドライブ110と通信を
行うホストコンピュータ112のブロック図である。ディスク・ドライブ110
はバスを介してホスト112と通信を行う。一実施の形態において、このバスは
小型コンピュータ用周辺装置インタフェース(SCSI)バスである。ディスク
・ドライブ110は、少なくとも1つのディスク・プラタ114と、CRC装置
118と、ECC装置120と、バッファ装置122と、ディスク・ドライブ・
コントローラ126と、第2のCRC検査装置124とから構成される。CRC
装置118、ECC装置120および第2のCRC検査装置124は互いに独立
した回路であることが好ましい。CRC装置118は、CRC剰余発生器128
と、CRC調停モジュール130とから構成される。ここで用いられるように、
「剰余」は「シンドローム」と同義語である。好適な実施の形態において、CR
C装置118は状態機械および1つ以上のシフトレジスタを用いて実現される。
ECC装置120は、ECC剰余発生器132と、複数のインタリーブエラーカ
ウントレジスタ146と、エラー位置/エラー値プロセッサ134と、エラー位
置/エラー値メモリ136と、バッファインタフェース138とから構成される
。バッファ装置122は、バッファマネージャ140と、バッファレジスタ14
2とから構成される。ディスク・ドライブ・コントローラ126は、少なくとも
1つの訂正不能エラーフラグ144を含む。

【0020】 ここで、ディスク・ドライブ110の使用および動作について図2を参照して
説明する。ディスク・ドライブ・コントローラ126は読み出し動作を開始し、
セクタ100のデータ部102、CRC部104およびECC部106は互いに
独立してCRC装置118およびECC装置120の両方に読み込まれる。また
、セクタ100のデータ部102およびCRC部104はバッファ装置122に
も読み込まれる。セクタ100の各バイトを読み出す順番は、データバイト10
2から始まり、次にCRCバイト104、最後にECCバイト106である。図
2において、データ部102の一番左のバイトを最初に読み出す。

【0021】 データ102、CRC104およびECC106のそれぞれのバイトがECC
装置120に読み込まれた後、ECC剰余発生器132はデータ102、CRC
104およびECC106のバイトを用いて、各インタリーブ毎に1つずつ4つ
のECC剰余を生成する。他の実施の形態では、3つのインタリーブを用いて、
ECC剰余発生器132が3つのECC剰余を生成する。生成されたECC剰余
のバイトの総数は、セクタ100に記憶されている元のECC部106と同数で
ある。例えば、ECC部106の長さが40バイトの場合、ECC剰余バイトの
総数も40バイトの長さである。ECC剰余がすべて0の場合、ECC装置12
0はその特定のECCブロックに関連するインタリーブにおいてエラーを検出し
ていない。

【0022】 ECC剰余のすべてが0ではない場合、ECC装置120はバッファ装置12
2にエラーの正体およびエラーの位置を通知する。具体的には、エラー位置/エ
ラー値プロセッサ134がECC剰余を用いて、発見したエラーの位置および「
マスク」値を判定する。エラー位置の長さは1バイトであり、このエラー位置は
セクタ100の末尾からのオフセットを示す。マスク値の長さは1バイトであり
、このマスク値を用いて誤ったデータまたはCRCバイトを訂正する。エラー位
置/エラー値プロセッサ134は、各ECCブロックが1つのインタリーブに関
連付けられているので、インタリーブ1つずつのエラーを処理する。エラー位置
/エラー値プロセッサ134は、別のインタリーブのエラーを処理し始める前に
、一方のインタリーブのエラーの処理を終了する。

【0023】 エラー位置/エラー値プロセッサ134は、各インタリーブ毎に、インタリー
ブ1つずつに対して、エラー位置およびマスク値のリストをエラー位置/エラー
値メモリ136に出力する。エラー位置/エラー値メモリ136はこの情報を記
憶する。好適な実施の形態において、このエラー位置/エラー値メモリ136は
、1入力、2本のアドレス線および2本のデータ線を備えたデュアルポートメモ
リである。デュアルポートにより、バッファインタフェース138およびCRC
調停モジュール130はそれぞれの速度で互いに独立してエラー位置/エラー値
メモリ136を読み出すことができる。このため、バッファインタフェース13
8およびCRC調停モジュール130はともに干渉し合うことなく同時にメモリ
136から読み出しを行っていてもよい。

【0024】 図5は、エラー位置/エラー値メモリ136の内容を示す。エラー位置/エラ
ー値メモリ136は、4つのインタリーブの各々に1つずつ、4つのエラーエン
トリブロック250、252、254、256を含む。例えば、第1のブロック
250は第1のインタリーブで見つかったすべてのエラーに相当する。好適な実
施の形態において、4つのブロック250、252、254、256のそれぞれ
の下部の最後のエラーエントリは、そのインタリーブで見つかった最初の誤った
バイトを表す。例えば、第1のインタリーブでECC装置120が見つけた最初
の誤ったバイトの位置およびエラー値は、第1のインタリーブエラーブロック2
50の第1のエラーエントリ空間292に最初に記憶される。ECC装置120
が第1のインタリーブでさらに3つの誤ったバイトを見つけた場合、第1の誤っ
たバイトエントリは第4のエラーエントリ空間258に達するまでプッシュダウ
ンされる。この「プッシュダウン」の原理は、4つのインタリーブエラーエント
リブロック250、252、254、256のすべてに当てはまる。

【0025】 ブロック250、252、254、256の各エラーエントリの長さは2バイ
トであり、最初のバイトはエラー位置を含み、次のバイトはマスク値を含む。例
えば、第1のインタリーブエラーエントリブロック250の最後のエラーエント
リ258において、最初の8ビット272はエラー位置を示し、次の8ビット2
74は誤ったバイトを訂正するために用いられたマスク値を示す。

【0026】 好適な実施の形態において、4つのインタリーブから生成された40バイトの
ECCは512バイトのデータブロックにおいて最大20バイトのデータ(およ
びCRC)を訂正することができるので、エラー位置/エラー値メモリ136の
大きさは40バイトであることが好ましい。各誤ったバイトを2バイト(1バイ
トは位置を示し、残りの1バイトはマスク値を示す)で表すので、40バイトが
必要である。このため、4つのインタリーブを持つ40バイトのECCに必要な
エラー位置/エラー値メモリ136の最大サイズは40バイトである。これを図
5に示す。何ら特別なメモリ空間は用いられず、このようなメモリ空間は非効率
的である。他の実施の形態において、40バイトより短いECCを用いる場合、
ECCが短いほど検出される誤ったバイトは少なくなるので、メモリサイズは4
0バイトより小さくてもよい。

【0027】 図2および図3において、ECC装置120の1組のインタリーブエラーカウ
ントレジスタ146は、各インタリーブ毎にエラー位置/エラー値メモリ136
に記憶されているエラーエントリの数を記録する。好適な実施の形態では、イン
タリーブが4つあるため、それらに対応するインタリーブエラーカウントレジス
タ146が4つある。例えば、第1のインタリーブエラーカウントレジスタは、
第1のインタリーブの誤ったバイトの数を記憶する。インタリーブエラーカウン
トレジスタ146は、図3に示すように、バッファインタフェース138および
CRC調停モジュール130の両方によって読み出される。他の実施の形態では
、インタリーブエラーカウントレジスタ146は、ECC装置120の代わりに
CRC装置118に内蔵されていてもよい。

【0028】 エラー位置/エラー値プロセッサ134と同様に、バッファインタフェース1
38は、各ECCブロックが1つのインタリーブに関連付けられているので、イ
ンタリーブ1つずつのエラーを処理する。バッファインタフェース138は、別
のインタリーブのエラーを処理し始める前に、一方のインタリーブのエラーの処
理を終了する。バッファインタフェース138はエラー位置/エラー値メモリ1
36を読み出し、エラー位置を実際のメモリ位置に変換する。バッファマネージ
ャ140はそのメモリ位置を用いて、誤ったバイトを訂正する。

【0029】 誤ったバイトを訂正する場合、バッファマネージャ140は、誤ったバイトと
その誤ったバイトに関連するマスク値との排他的論理和演算を行う。例えば、デ
ィスク・プラタ114に記憶されている元のデータバイトが00000000で
あり、ディスク・ドライブ110がデータバイトを00010000と読み出し
た場合、左から4番目のビットにエラーがあることになる。この特定のバイトに
対して対応するマスク値は00010000であると考えられる。このバイトを
訂正する場合、ECC装置120のバッファインタフェース138はバッファマ
ネージャ140にマスク値00010000と誤ったバイト00010000と
の排他的論理和演算を行うようにメッセージを送る。排他的論理和演算の結果は
00000000になると考えられ、これは元のデータバイトと同じである。バ
ッファマネージャ140は誤ったバイトをこの値に置換する。

【0030】 セクタ100がECC装置120に読み込まれるのと同時に、データ102お
よびCRC104のそれぞれのバイトはCRC装置118に読み込まれる。最後
のCRCバイトがCRC装置118に読み込まれたときCRC剰余発生器128
に通知するCRC装置118の内部にバイトカウンタ156がある。データ10
2およびCRC104のそれぞれのバイトがCRC装置に読み込まれた後、CR
C剰余発生器128はデータ102およびCRC104のバイトを用いて、従来
の方法によりCRC剰余(またはシンドローム)を生成する。生成されたCRC
剰余は、セクタ100に記憶されている元のCRC部104と同じバイト長であ
る。例えば、CRC部104の長さが2バイトの場合、CRC剰余の長さも2バ
イトである。標準的な技術を利用して、CRC装置118は剰余を用いてデータ
部102のエラーを検出する。

【0031】 好適な実施の形態において、第2のCRC検査装置124は、データバイト1
02がホスト112に送られている間に、データバイト102に対してもう一度
CRC検査を行う。この第2のCRC検査装置124は、バッファ装置122が
正しく機能しているかどうかを調べる。バッファ装置122が誤動作していたり
破損している場合、第2のCRC検査装置はバッファ装置122によって生じた
エラーを検出する。

【0032】 一般に、CRC装置118は、読み出されたデータがホスト112に送られる
前に、読み出されたデータを承認しなければならない。ECC装置120および
CRC装置118の両方がデータ102のエラーを検出していない場合、ディス
ク・ドライブ・コントローラ126はセクタ100をホストコンピュータ112
に送信する。CRC装置118とECC装置120が、セクタ100でエラーを
検出したかどうか、または、特定の検出エラーの正体について一致しない場合、
ディスク・ドライブ・コントローラ126は読み出されたセクタ100を破棄す
る。ホスト112に誤ったデータは送られず、ホスト112は誤ったデータを処
理しようとしない。ディスク・ドライブ・コントローラ126は、ディスク11
6から同じデータセクタ100をもう一度読み出す動作を試みる。これにより、
ホスト112が誤ったデータを破棄し再伝送を要求する必要が無くなる。

【0033】 図6は、ディスク・ドライブ110に現在のセクタを打ち切らせ、ディスク・
プラタ114から同じセクタを再び読み出す試みをさせるイベント(事象)のい
くつかを示す。あるイベント284において、ECC装置120はデータ102
において訂正不能なエラーを検出する。そして、訂正不能エラーフラグ144を
ディスク・ドライブ・コントローラ126に立て、打ち切り278を行う。ディ
スク・ドライブ・コントローラ126は機能280においてセクタ100を破棄
し、機能282においてディスク116から同じセクタをもう一度読み出す動作
を試みる。訂正不能なエラーの一例として、ECCがセクタで20バイトを超え
るエラーを検出する場合がある。4つのインタリーブから生成された40バイト
のECCは最大20バイトのエラーしか訂正することができないので、エラーが
20バイトを超えるセクタは訂正不能である。

【0034】 イベント286に示すように、CRC装置118がデータ102において少な
くとも1つのエラーを検出する一方、ECC装置120はエラーを検出していな
い場合、訂正不能エラーフラグ144をディスク・ドライブ・コントローラ12
6に立て、打ち切り278を行う。ディスク・ドライブ・コントローラ126は
機能280においてセクタ100を破棄し、機能282においてディスク116
から同じセクタをもう一度読み出す動作を試みる。

【0035】 イベント296に示すように、ECC装置120がデータ102において少な
くとも1つのエラーを検出し訂正する一方、CRC装置118はエラーを検出し
ていない場合、誤訂正が発生し、打ち切り278が開始される。ディスク・ドラ
イブ・コントローラ126は機能280においてセクタ100を破棄し、機能2
82においてディスク116から同じセクタをもう一度読み出す動作を試みる。

【0036】 イベント290に示すように、CRC装置118およびECC装置120の両
方が少なくとも1つのエラーを検出するが、検出されたエラーが同じでない場合
、訂正不能エラーフラグ144をディスク・ドライブ・コントローラ126に立
て、打ち切り278を行う。ディスク・ドライブ・コントローラ126は機能2
80においてセクタ100を破棄し、機能282においてディスク116から同
じセクタをもう一度読み出す動作を試みる。例えば、CRC装置118が1番目
のデータバイトでエラーを検出し、ECC装置120が400番目のデータバイ
トでエラーを検出した場合、検出されたエラーは同じではない。

【0037】 本発明の好適な実施の形態は、4つのすべての状況を処理するように構成され
ている。この好適な実施の形態は、イベント286および290が示す2つの状
況を処理するのに適しているのが理想的である。

【0038】 ここで、図2のCRC調停モジュール130の使用および動作について図3、
図4および図5を参照して説明する。図3は、ディスク・ドライブ110のCR
C装置118および他の構成要素のブロック図である。CRC調停モジュール1
30は、フィードバック294を備えたCRCシフトレジスタ150と、マルチ
プレクサ148と、比較回路276と、4つのインタリーブエラーカウントポイ
ンタ154(各々の長さは1バイト)と、バイトカウンタ156と、インタリー
ブポインタ158と、CRCエラーフラグ160とから構成される。図3に示す
ように、CRC調停モジュール130は、CRC剰余発生器128、インタリー
ブエラーカウントレジスタ146およびエラー位置/エラー値メモリ136から
情報を読み出す。

【0039】 図4は、CRC調停モジュール130によって行われる動作のフロー図である
。CRC調停モジュール130は状態機械によって実施され、図4のフロー図の
動作を行ってもよい。一般に、CRC調停モジュール130は、ECC装置12
0が見つけたエラー位置およびマスク値が正しいかどうかを調べる。CRC調停
モジュール130はエラー位置/エラー値メモリ136を読み出し、これらのエ
ラーエントリとCRC剰余発生器128が生成したCRC剰余とを比較する。C
RC調停モジュール130は、ECC装置120が行ったいかなる誤訂正も検出
する。これにより、ホストコンピュータ112に見られるような誤訂正の確率を
大幅に低下させる。

【0040】 具体的には、ECC装置120が行った誤り訂正処理の終了時に、ECC装置
120はECC装置120の処理が完了したことを示すメッセージをCRC装置
118に送る。CRC調停モジュール130はその調停処理を開始する。これは
、図4の「開始」と示された楕円200に示す。ブロック202において、CR
C調停モジュール130はインタリーブエラーカウントレジスタ146を読み出
し、ECC装置120が見つけたエラーの数を判定する。インタリーブエラーカ
ウントレジスタ146は、エラー位置/エラー値メモリ136から読み出す必要
があるエラーエントリの数をCRC調停モジュール130に通知する。CRC調
停モジュール130はこの情報を自身の4つのインタリーブエラーカウントポイ
ンタ154に記憶する。静的なインタリーブエラーカウントレジスタとは異なり
、インタリーブエラーカウントポインタ154は動的であり、CRC調停モジュ
ール130によってデクリメントすることができる。

【0041】 次に、CRC調停モジュール130はバイトカウンタ156をセクタ長からE
CCバイト106の数を引いた数に等しくなるように設定する。これをブロック
204に示す。これにより、ディスク・ドライブ110はさまざまな長さのセク
タを処理するように構成可能である。バイトカウンタ156は、CRC調停モジ
ュール130が現在処理しているのがセクタ100のどのバイトかを記録する。
好適な実施の形態では、セクタの全長は542〜560バイトである。CRC調
停モジュール130はデータバイト102およびCRCバイト104しか考慮に
入れない。例えば、データバイト102とCRCバイト104とを合わせた長さ
が520バイトの場合、バイトカウンタ156は「520」に設定される。この
値「520」は以下の例で用いられる。

【0042】 ブロック206で、CRC調停モジュール130はインタリーブポインタ15
8を1番目のデータバイトのインタリーブ番号に初期化する。1番目のデータバ
イトは、ディスク・コントローラ126がインタリーブを編成した順番によって
、4つのインタリーブのうちいずれのインタリーブに含まれてもよい。例えば、
1番目のデータバイトが第1のインタリーブにある場合、インタリーブポインタ
158は、まず、「1」に設定される。1番目のデータバイトが第3のインタリ
ーブにある場合、インタリーブポインタ158は、まず、「3」に設定される。

【0043】 ブロック208で、CRCシフトレジスタ150は0に初期化される。CRC
シフトレジスタ150の構造は、CRC剰余発生器128で用いられているよう
な従来のCRCシフトレジスタとほぼ同様である。従来のCRCシフトレジスタ
を用いて、CRC剰余を生成しセクタのエラーを検出する。CRC調停モジュー
ル130のCRCシフトレジスタ150を用いて、ECC装置120が見つけた
エラーマスク値を調べる。CRCシフトレジスタ150は元のCRC部104と
同じ長さであり、その長さは2〜4バイトである。フィードバック294の構造
は標準的なCRC生成多項式によって定義される。

【0044】 ブロック210で、CRC調停モジュール130は、インタリーブポインタ1
58およびインタリーブエラーカウントポインタ154が示すように、エラー位
置/エラー値メモリ136から特定のエラー位置およびエラー値を取り出す。図
5のインタリーブポインタ158は、CRC調停モジュール130が図5中のど
の列にアクセスしているかを示す。インタリーブエラーカウントポインタ154
は、どの行にアクセスしているかを示す。例えば、1番目のデータバイトが第1
のインタリーブに関連付けられ、第1のインタリーブエラーエントリブロック2
50に4つのエラーエントリがある場合、インタリーブポインタ158は「1」
に等しく、インタリーブエラーカウントポインタ154は「4」に等しい。52
0バイトのデータおよびCRCがあり、4つのインタリーブが上述のように右か
ら左へ編成されている場合、左端から1番目のデータバイトは第4のインタリー
ブにある。この例および以下の説明の目的以外の場合では、1番目のデータバイ
トは第1のインタリーブに関連付けられていると考える。CRC調停モジュール
136は、図5の第1列250の第4のエラーエントリ258を取り出す。上述
のように、(セクタ100の左に最も近い)最初のエラーエントリは、「プッシ
ュダウン」メモリの原理により、各列の下部に最も近い。

【0045】 いったんCRC調停モジュール130がエラー位置/エラー値メモリ136か
らエラーエントリを取り出すと、まず、モジュール130はそのエラーエントリ
のエラー位置部分を調べる(メモリ136の各エラーエントリはエラー位置およ
びエラー値を有する)。ブロック212で、CRC調停モジュール130は、特
定のエラーエントリのエラー位置が、インタリーブポインタ158およびインタ
リーブエラーカウントポインタ154が示すように、バイトカウンタ156に記
憶されている現在値と等しいかどうかを調べる。上記の例では、バイトカウンタ
156をCRC調停モジュール130に対して設定し、「520」である1番目
のデータバイトを見る。1番目のデータバイトは第1のインタリーブにあり、イ
ンタリーブポインタ158は「1」に設定される。第1のインタリーブに対する
インタリーブエラーカウントポインタ154は、エラーエントリが4つあること
を示す。CRC調停モジュール136は、図5の第1のインタリーブエラーエン
トリブロック250の第4のエラーエントリ258を取り出す。CRC調停モジ
ュール130はこのエラーエントリ258のエラー位置272を調べる。このエ
ラー位置272がバイトカウンタ156の現在値と一致しない場合、CRC調停
モジュールは、ECC装置120が1番目のデータバイトでエラーを見つけなか
ったことを知る。このため、CRC調停モジュール130はブロック214に移
行する。

【0046】 ブロック214で、CRC調停モジュール130はマルチプレクサ148(図
3)に「0」を入力する。CRC調停モジュール130は「0」を排他的論理和
(XOR)ゲート152に通過させ、このゲート152はCRCシフトレジスタ
150の出力も受け取る。排他的論理和ゲート152の出力294は、フィード
バック294を経てCRCシフトレジスタ150にフィードバックする。ブロッ
ク216で、CRC調停モジュール130はインタリーブポインタ158および
バイトカウンタ156を1だけ減らす。CRC調停モジュール130がセクタ1
00の左から2番目のデータバイトを調べるので、バイトカウンタ156は「1
」だけ減らされて「519」になる。デクリメントの後、セクタ100の各バイ
トは4つのインタリーブに入れられるとき右から左に計数されるので、インタリ
ーブポインタ158は「4」に等しくなる。次にインタリーブポインタ158を
デクリメントすると、インタリーブポインタ158は「4」から「3」「2」「
1」に変化し、また「4」に戻り「3」になり、これを繰り返す。ブロック23
0でバイトカウンタが「0」になるまで、このようなデクリメントを繰り返す。

【0047】 CRCバイト104およびCRC剰余はインタリーブから生成されないので、
ECC装置120のバッファインタフェース128と違って、CRC剰余発生器
128およびCRC調停モジュール130はエラーを各インタリーブ毎に処理し
ない。CRC剰余はデータ部102全体から生成される。CRC剰余発生器12
8およびCRC調停モジュール130は、左から1番目のデータバイトから始ま
って左から右へ順次エラーを処理する。

【0048】 ブロック218で、CRC調停モジュール130は、標準的なCRC技術に従
って、CRCシフトレジスタ150を1回循環シフトする。CRC調停モジュー
ル130が、ECC装置120およびCRC装置118が1番目のデータバイト
で見つけたエラーの比較を終了した後、モジュール130はデータ部102の2
番目のデータバイトに移行する。データ部102の2番目のデータバイトを調べ
る場合、CRC調停モジュール130は、ECC装置120が次のインタリーブ
で見つけたエラーを探さなければならない。このため、CRC調停モジュール1
30は、エラー位置/エラー値メモリ136の各インタリーブエラーエントリブ
ロック250、252、254、256を進む。

【0049】 CRC調停モジュール130はブロック210に戻り、ここで、CRC調停モ
ジュール130は次のエラー位置およびエラー値を取り出す。具体的には、上記
の例の後、インタリーブポインタ158は「4」に等しくなる。図5のエラー位
置/エラー値メモリの例を示す図の第4のインタリーブエラーエントリブロック
256には2つのエラーエントリ270および264があるので、第4のインタ
リーブに対するインタリーブエラーカウントポインタ154は2に等しい。CR
C調停モジュール130は、図5に示す第4のインタリーブエラーエントリブロ
ック256の第2のエラーエントリ264を取り出す。ブロック212で、CR
C調停モジュール130は、バイトカウンタ156の現在値「519」とエラー
エントリ264のエラー位置部分(1番目のバイト)とを比較する。バイトカウ
ンタ156の現在値がエラーエントリ264のエラー位置部分と等しい場合、す
なわち、両者が「519」の場合、これは、ECC装置120がこの2番目のデ
ータバイトでエラーを見つけたことを意味する。CRC調停モジュール130は
ブロック220に進み、ここで、CRC調停モジュール130はエラーエントリ
264のエラーマスク値(2番目のバイト)をCRCシフトレジスタ150の出
力とともに排他的論理和ゲート152に通過させる。上記のように、この出力は
、従来のCRC技術を用いて、フィードバック294を経てCRCシフトレジス
タ150にフィードバックされる。

【0050】 エラーマスク値およびCRCシフトレジスタ150の出力をCRCシフトレジ
スタ150にフィードバックすることにより、CRCシフトレジスタ150で「
CRC剰余」が生成される。CRC調停モジュール130のCRCシフトレジス
タ150で生成され記憶されているこのCRC剰余は、ECC装置120が2番
目のデータバイトで見つけたエラーを示す。CRC調停モジュール130がデー
タバイトを進むとき、CRC調停モジュール130は、ECC装置のエラー位置
/エラー値メモリ136からのエラーマスク値をCRCシフトレジスタ150の
出力とともに排他的論理和ゲート152に通過させ続ける。排他的論理和ゲート
152からの出力はCRCシフトレジスタ150にフィードバックされ続ける。
このため、CRCシフトレジスタ150が生成したCRC剰余は、結局、ECC
装置120が見つけたすべてのデータバイトエラーを示す。この処理は、バイト
カウンタ156がデータバイト部102の末尾およびCRC部104の先頭に達
するまで続く。

【0051】 CRC剰余発生器128が生成したCRC剰余と違って、CRCシフトレジス
タ150のCRC剰余は、従来の巡回冗長検査生成多項式を用いたデータバイト
102から生成されない。CRCシフトレジスタ150のCRC剰余は、ECC
装置120がECC剰余を用いて見つけたエラーマスク値から生成される。CR
Cシフトレジスタ150のCRC剰余は、元のデータバイト102無しで生成さ
れる。これにより、後に、CRC剰余発生器128が生成したCRC剰余とCR
C調停モジュール130がECC装置120が見つけたエラーマスク値から生成
した「CRC剰余」との比較が行われる。

【0052】 ブロック222で、第4のインタリーブに対するインタリーブエラーカウント
ポインタ154の現在値は1だけ減らされ、「2」から「1」になる。これは、
CRC調停モジュール130の処理対象として、第4のインタリーブエラーエン
トリブロック256にエラーエントリ270があと1つだけ残っていることを意
味する。エラーエントリの位置がバイトカウンタ156に記憶されている現在値
と一致するので、CRC調停モジュール130がブロック212に到達しブロッ
ク220および222に進む度に、CRC調停モジュール130は現在のインタ
リーブエラーカウントポインタ154をデクリメントする。以下の2つの状況の
うち1つが発生するまで、CRC調停モジュール130がブロック222に達す
る度に、インタリーブエラーカウントポインタ154はデクリメントされる。状
況の1つは、CRC調停モジュール130の処理対象として、エラー位置/エラ
ー値メモリ136のインタリーブエラーエントリブロック250、252、25
4、256にこれ以上エラーエントリがない場合、すなわち、その特定のインタ
リーブに対するインタリーブエラーカウントポインタ154が「0」になった場
合である。もう1つの状況は、バイトカウンタ156がCRCバイトの末尾に到
達した場合、すなわち、バイトカウンタ156が「0」に等しくなった場合であ
る。後者の状況では、エラー位置/エラー値メモリ136により多くのエラーエ
ントリが存在する可能性があるが、これらのエラーエントリはECCバイト10
6で見つかったエラーに関連する。CRC調停モジュール130はECCバイト
106に誤訂正があるかどうかは調べない。

【0053】 ブロック224で、CRC調停モジュール130は、バイトカウンタ156の
現在値「519」と1番目のCRCバイトの位置とを比較する。データバイトと
CRCバイトとを合わせた520バイトのうち、右から左に計数すると、最初の
4バイトはCRCバイトで、次の516バイトはデータバイトなので、上記例の
1番目のCRCバイトの位置は「4」である。バイトカウンタ156は「519
」に等しく、これは「4」に等しくないので、ブロック216で、CRC調停モ
ジュール130はインタリーブポインタ158を「3」に減らし始め、バイトカ
ウンタ156を「518」に減らす。ブロック218で、CRCシフトレジスタ
150は次のバイトに備えて1回循環シフトする。

【0054】 ブロック210で、図5のエラー位置/エラー値メモリの例を示す図において
エラーエントリが1つしかないので、第3のインタリーブに対するインタリーブ
エラーカウントポインタ154は「1」である。CRC調停モジュール130は
、第3のインタリーブエラーエントリブロック254の第1の(および唯一の)
エラーエントリ262からエラー位置およびエラー値を取り出す。ブロック21
2で、CRC調停モジュール130は、バイトカウンタ156の現在値とエラー
エントリ262のエラー位置(最初の8ビット)とを比較する。バイトカウンタ
156の値がエラーエントリ262のエラー位置と一致する場合、ECC装置1
20は第3のデータバイトでエラーを検出したことになる。バイトカウンタ15
6がエラーエントリ262のエラー位置と一致しない場合、ECC装置120は
第3のデータバイトでエラーを検出しなかったことになる。

【0055】 CRC調停モジュール130のバイトカウンタ156が1番目のCRCバイト
に達するまで、ブロック210〜224で説明した処理は繰り返される。換言す
れば、バイトカウンタ156は「4」に等しくなる。この時点で、CRCシフト
レジスタ150のフィードバック値は、ECC装置120が見つけたデータバイ
トエラーのすべてのマスク値を示す。ブロック226で、CRC調停モジュール
130は図3の比較回路276を用いて、CRCシフトレジスタ150のフィー
ドバック値とCRC剰余発生器128からのCRC剰余入力とを比較する。CR
C剰余発生器128からのCRC剰余入力は、CRC剰余発生器128が標準的
なCRC法を用いて見つけたすべてのデータバイトエラーを示す。ブロック22
6で、CRC調停モジュール130は、CRC剰余発生器128が見つけたデー
タバイトのエラーとECC装置120が見つけたエラーとを比較する。

【0056】 次に、ブロック230で、2つのCRC剰余が等しい場合、CRC調停モジュ
ール130はバイトカウンタ156が「0」に等しいかどうかを調べる。バイト
カウンタ156がセクタ100のデータバイトおよびCRCバイトの末尾に達し
たとき、バイトカウンタ156は「0」に等しい。バイトカウンタ156が「0
」に等しくない場合、CRC調停モジュール130は、ブロック210〜226
で説明したように、CRCバイトを処理し続ける。

【0057】 ブロック226で比較されている2つのCRC剰余が等しくない場合、ブロッ
ク228でCRC調停モジュール130はCRCエラーフラグ160を立てる。
このCRCエラーフラグ160は、直ちに、CRC装置118が見つけたエラー
がECC装置120が見つけたエラーと一致しないことをディスク・ドライブ・
コントローラ126に知らせる(または割り込む)。好適な実施の形態において
、このCRCエラーフラグ160はCRC調停モジュール130の内部にあり、
ディスク・ドライブ・コントローラ126によって読み出される。他の実施の形
態では、CRCエラーフラグ160はディスク・ドライブ・コントローラ126
の内部にある。

【0058】 CRCエラーフラグ160が立てられると、ディスク・ドライブ・コントロー
ラ126は読み出し動作を打ち切り、現在のセクタ100を破棄し、ディスク1
16から同じセクタ100をもう一度読み出す動作を試みる。

【0059】 好適な実施の形態において、CRCは4バイトである。4バイトのCRCを用
いて、CRC剰余発生器128は長さ1バイトの4つの剰余を生成する。このた
め、4バイトのCRCの各々に1つずつ、4つの剰余がある。比較回路276は
、CRC剰余発生器128が生成した4つのCRC剰余とCRCシフトレジスタ
150が生成した4つの剰余とを1つずつ比較する。この処理をブロック224
、226および230に示す。CRCバイトそのものにエラーが検出される場合
もある。

【0060】 ブロック230で、CRC調停モジュール130は、バイトカウンタ156が
「0」に等しいかどうかを調べる。バイトカウンタ156が「0」に等しくない
場合、CRC調停モジュールは、ブロック210〜226で説明したように、C
RCバイトを処理し続ける。バイトカウンタ156が「0」に等しい場合、ブロ
ック232でCRC調停処理は終了する。

【0061】 CRC調停モジュール130が検出エラーを比較している間、ディスク・ドラ
イブ・コントローラ126は、ディスク・ドライブ110がまだデータを伝送す
る準備ができていないことを示す1つ以上の信号をホストコンピュータに送って
もよい。代替例として、ホストコンピュータ112は、データ伝送準備信号のた
めにディスク・ドライブ110をポーリングすることもできる。

【0062】 上記の誤り訂正/検査処理を繰り返すと、他のセクタがECC装置120に読
み込まれる。ECC剰余発生器132はこのセクタに対してECC剰余を生成し
、エラー位置/エラー値プロセッサ134は、もしエラーがあるなら、エラー位
置およびエラー値をエラー位置/エラー値メモリ136に書き込む。新しいセク
タがECC装置120によって処理される度に、メモリ136の内容は上書きさ
れる。

【0063】 本発明は、ホストコンピュータ112に送られる誤ったデータの量を低減させ
る。ホストコンピュータ112は、誤ったデータバイトを破棄したり、ディスク
・プラタからのデータバイトの再読み出しおよびデータバイトの再伝送の要求を
ディスク・ドライブに送ったり、読み出され転送される新しいデータを待ったり
する必要がない。ホストコンピュータ112は時間を節約し、この節約された時
間の間に他のタスクを行うことができる。

【0064】 また、本発明は、伝送、再伝送およびCRC検査のメッセージがSCSIバス
上で占有する帯域幅を小さくする。さらに、本発明は、不正なデータを処理する
ことができないホストコンピュータによって現在実行されているソフトウェアア
プリケーションの故障を防止する。

【0065】 本発明の実施の形態および適用例を図示するとともに説明してきたが、本発明
の範囲から逸脱することなく種々の変形が可能であることは当業者には明らかで
ある。したがって、特許請求の範囲内において、本発明が記載されている以外の
方法で実施してもよいことは理解されるであろう。

【図面の簡単な説明】

【図1】 本発明の好適な実施の形態に係るバイトのセクタを示す。

【図2】 本発明の好適な実施の形態に係るディスク・ドライブと通信を行
うホストコンピュータのブロック図である。

【図3】 図2に示したディスク・ドライブの種々の内部装置のブロック図
である。

【図4】 図2に示したディスク・ドライブに内蔵されたCRC調停モジュ
ールによって行われる動作のフロー図である。

【図5】 図2に示したディスク・ドライブに内蔵されたエラー位置/エラ
ー値メモリモジュールの内容を示す。

【図6】 図2に示したディスク・ドライブにデータ読み出し動作を打ち切
らせるイベントを示す。

【手続補正書】

【提出日】平成12年12月26日(2000.12.26)

【手続補正1】

【補正対象書類名】明細書

【補正対象項目名】発明の名称

【補正方法】変更

【補正内容】

【発明の名称】 エラー比較システム

【手続補正2】

【補正対象書類名】明細書

【補正対象項目名】特許請求の範囲

【補正方法】変更

【補正内容】

【特許請求の範囲】

───────────────────────────────────────────────────── フロントページの続き (81)指定国 EP(AT,BE,CH,CY, DE,DK,ES,FI,FR,GB,GR,IE,I T,LU,MC,NL,PT,SE),OA(BF,BJ ,CF,CG,CI,CM,GA,GN,GW,ML, MR,NE,SN,TD,TG),AP(GH,GM,K E,LS,MW,SD,SL,SZ,UG,ZW),E A(AM,AZ,BY,KG,KZ,MD,RU,TJ ,TM),AE,AL,AM,AT,AU,AZ,BA ,BB,BG,BR,BY,CA,CH,CN,CU, CZ,DE,DK,EE,ES,FI,GB,GD,G E,GH,GM,HR,HU,ID,IL,IN,IS ,JP,KE,KG,KP,KR,KZ,LC,LK, LR,LS,LT,LU,LV,MD,MG,MK,M N,MW,MX,NO,NZ,PL,PT,RO,RU ,SD,SE,SG,SI,SK,SL,TJ,TM, TR,TT,UA,UG,UZ,VN,YU,ZA,Z W 【要約の続き】 装置(120)を待たず、ECC誤り訂正を終了してバ ッファに転送する。データをホストコンピュータ(11 2)に転送する前に、CRC誤り検査を完了する。特 に、ディスク・ドライブ・コントローラ(126)がデ ータをホスト(112)に送る前に、CRC装置(11 8)はデータを承認する。

Claims (16)

    【特許請求の範囲】
  1. 【請求項1】 誤り訂正符号(ECC)装置がディスク・ドライブのディス
    クから読み出されたバイトセクタに対して行った1つ以上の訂正を検査するシス
    テムにおいて、 1つ以上のバイトセクタを読み出す少なくとも1つのディスクと、 前記バイトセクタで見つけたエラーを検出し訂正するECC装置と、 前記セクタのデータがホストコンピュータに伝送される前に、前記誤り訂正装
    置が行った訂正を検査する巡回冗長検査(CRC)装置であって、前記CRC装
    置は前記ECC装置が前記バイトセクタを受け取るのと同時に前記バイトセクタ
    を受け取る、巡回冗長検査(CRC)装置と、 前記ディスクから読み出された前記バイトセクタの少なくとも一部を一時的に
    記憶するバッファ装置であって、前記バッファ装置は前記ECC装置による前記
    バイトセクタに対する訂正を実施する、バッファ装置と、 前記バッファ装置から前記ホストコンピュータへの前記バイトセクタの伝送を
    制御するディスク・ドライブ・コントローラであって、前記ディスク・ドライブ
    ・コントローラは、前記CRC装置が検出したエラーが前記ECC装置が検出し
    たエラーと一致しない場合、前記バッファ装置内部の現在のバイトセクタを打ち
    切り、再度読み出し動作を試みる、ディスク・ドライブ・コントローラとを備え
    ることを特徴とする訂正検査システム。
  2. 【請求項2】 前記バイトセクタは、 データバイトと、 CRCバイトと、 ECCバイトとから構成されることを特徴とする請求項1に記載の訂正検査シ
    ステム。
  3. 【請求項3】 さらに、前記データバイトが前記ホストに送られる間に前記
    セクタの前記データバイトに対して再度CRC検査を行う第2のCRC検査装置
    を備え、前記第2のCRC検査装置は前記バッファ装置が正しく機能しているか
    どうかを調べることを特徴とする請求項1に記載の訂正検査システム。
  4. 【請求項4】 前記バイトセクタは複数のECC剰余を生成するための複数
    のインタリーブに編成され、前記ECC剰余は、それぞれ、ただ1つのインタリ
    ーブに対応することを特徴とする請求項1に記載の訂正検査システム。
  5. 【請求項5】 前記バイトセクタは4つのインタリーブに編成され、各イン
    タリーブはそれ自身のECC剰余を生成するために用いられることを特徴とする
    請求項4に記載の訂正検査システム。
  6. 【請求項6】 前記ECC装置は、 各バイトのインタリーブに対して剰余を生成するECC剰余発生器と、 前記ECC剰余発生器が生成したECC剰余から各検出エラーの位置およびマ
    スク値を取り出すエラー位置/エラー値プロセッサと、 前記エラー位置/エラー値プロセッサが取り出した各インタリーブの各検出エ
    ラーの前記位置およびマスク値を記憶するエラー位置/マスク値メモリと、 前記ECC装置が各インタリーブで検出したエラーの数を記録する複数のイン
    タリーブエラーカウントレジスタと、 前記エラー位置/マスク値メモリのエラーエントリを用いて、前記バッファ装
    置の検出された誤ったバイトを訂正するバッファインタフェースとを備えること
    を特徴とする請求項4に記載の訂正検査システム。
  7. 【請求項7】 前記エラー位置/マスク値メモリは2バイトのエラーエント
    リから構成され、各エラーエントリの第1のバイトは前記エラー位置を表し、各
    エラーエントリの第2のバイトは前記エラーマスク値を表すことを特徴とする請
    求項6に記載の訂正検査システム。
  8. 【請求項8】 前記バッファインタフェースは、誤ったバイトおよびそのエ
    ラーマスク値を排他的論理和ゲートに通過させ、前記誤ったバイトを前記排他的
    論理和ゲートからの出力に置換することによって、前記セクタの誤ったバイトを
    訂正することを特徴とする請求項6に記載の訂正検査システム。
  9. 【請求項9】 前記エラー位置/マスク値メモリは、同時に2つの異なる装
    置によって読み出すことができるデュアルポートメモリであることを特徴とする
    請求項6に記載の訂正検査システム。
  10. 【請求項10】 前記CRC装置は、 前記ディスクから読み出された前記セクタの前記データバイトからCRC剰余
    を生成するCRC剰余発生器であって、前記CRC剰余発生器を用いて前記デー
    タバイトのエラーを検出する、CRC剰余発生器と、 前記CRC剰余発生器が見つけた前記エラー位置およびエラー値と前記ECC
    装置が見つけた前記エラー位置およびエラー値とを比較するCRC調停モジュー
    ルとを備えることを特徴とする請求項1に記載の訂正検査システム。
  11. 【請求項11】 前記CRC調停モジュールは、 前記ECC装置が見つけたすべてのエラー値を示すCRC剰余を生成するCR
    Cシフトレジスタと、 エラーマスク値と「0」値との中から選択するマルチプレクサと、 前記ECC装置から検索されたエラーマスク値と排他的論理和演算された前記
    CRCシフトレジスタの出力を持つ前記CRCシフトレジスタの入力をフィード
    する少なくとも1つの排他的論理和ゲートと、 前記CRC剰余発生器が生成したCRC剰余と前記CRC調停モジュール内の
    前記CRCシフトレジスタが生成したCRC剰余とを比較する比較回路と、 前記CRC調停モジュールの処理対象として各インタリーブに残るエラーエン
    トリの数を記録する複数のインタリーブエラーカウントポインタと、 前記CRC調停モジュールが現在処理しているバイトを記録するバイトカウン
    タと、 前記CRC調停モジュールが前記ECC装置から現在アクセスしているインタ
    リーブエラーブロックを記録するインタリーブポインタと、 前記CRC装置が検出したエラー位置またはエラー値が前記ECC装置が検出
    したエラー位置またはエラー値と一致しないことを示すCRCエラーフラグとを
    備えることを特徴とする請求項10に記載の訂正検査システム。
  12. 【請求項12】 前記CRC調停モジュールは、種々のデータバイト長、C
    RCバイト長、ECCバイト長を持つさまざまな長さのセクタを処理するように
    構成されていることを特徴とする請求項11に記載の訂正検査システム。
  13. 【請求項13】 誤り訂正符号(ECC)装置がディスク・ドライブのディ
    スクから読み出されたバイトセクタに対して行った1つ以上の訂正を検査する方
    法において、 前記バイトセクタを巡回冗長検査(CRC)装置および前記ECC装置に読み
    込み、 前記セクタ内のデータバイトからCRC剰余を生成し、 前記セクタからECC剰余を生成し、 前記CRC装置が見つけたエラー位置およびエラー値と前記ECC装置が見つ
    けたエラー位置およびエラー値とを比較し、 前記ディスク・ドライブが読み出した現在のセクタをホストコンピュータに送
    ることなく破棄し、前記CRC装置が検出したエラー位置またはエラー値が前記
    ECC装置が検出したエラー位置またはエラー値と一致しない場合、同じセクタ
    を読み出す動作を再度試みることを特徴とする訂正検査方法。
  14. 【請求項14】 さらに、前記バイトセクタをCRC装置およびECC装置
    に同時に読み込むことを特徴とする請求項13に記載の訂正検査方法。
  15. 【請求項15】 さらに、前記ディスク・ドライブが読み出した現在のセク
    タをホストコンピュータに送ることなく破棄し、前記ECC装置が検出したエラ
    ーが訂正不能の場合、同じセクタを読み出す動作を再度試みることを特徴とする
    請求項13に記載の訂正検査方法。
  16. 【請求項16】 さらに、前記ディスク・ドライブが読み出した現在のセク
    タをホストコンピュータに送ることなく破棄し、前記CRC装置が検出したエラ
    ー位置またはエラー値が前記ECC装置が訂正したエラー位置またはエラー値と
    一致しない場合、同じセクタを読み出す動作を再度試みることを特徴とする請求
    項13に記載の訂正検査方法。
JP2000551486A 1998-05-27 1999-05-27 エラー比較システム Pending JP2002517060A (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
US8576598A true 1998-05-27 1998-05-27
US09/085,765 1998-05-27
PCT/US1999/011819 WO1999062182A1 (en) 1998-05-27 1999-05-27 Circuit and method for rapid checking of error correction codes using cyclic redundancy check

Publications (1)

Publication Number Publication Date
JP2002517060A true JP2002517060A (ja) 2002-06-11

Family

ID=22193796

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000551486A Pending JP2002517060A (ja) 1998-05-27 1999-05-27 エラー比較システム

Country Status (7)

Country Link
EP (1) EP1090462B1 (ja)
JP (1) JP2002517060A (ja)
AT (1) AT301345T (ja)
AU (1) AU4214299A (ja)
CA (1) CA2333386A1 (ja)
DE (1) DE69926511T2 (ja)
WO (1) WO1999062182A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPWO2007136026A1 (ja) * 2006-05-19 2009-10-01 忠和 鄭 抗原タンパク質の定量方法及び定量用キット

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7500170B2 (en) * 2006-08-14 2009-03-03 Motorola, Inc. Method and apparatus for error detection in a data block

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1992013344A1 (fr) * 1991-01-22 1992-08-06 Fujitsu Limited Dispositif de traitement pour la correction d'erreurs et procede de correction d'erreurs
US5602857A (en) * 1993-09-21 1997-02-11 Cirrus Logic, Inc. Error correction method and apparatus
EP0727068A4 (en) * 1993-11-04 1999-06-02 Cirrus Logic Inc Burst error corrector
US5691994A (en) * 1995-05-08 1997-11-25 Western Digital Corporation Disk drive with fast error correction validation

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPWO2007136026A1 (ja) * 2006-05-19 2009-10-01 忠和 鄭 抗原タンパク質の定量方法及び定量用キット

Also Published As

Publication number Publication date
WO1999062182A1 (en) 1999-12-02
AT301345T (de) 2005-08-15
DE69926511T2 (de) 2006-06-01
AU4214299A (en) 1999-12-13
EP1090462A4 (en) 2002-01-02
EP1090462B1 (en) 2005-08-03
CA2333386A1 (en) 1999-12-02
EP1090462A1 (en) 2001-04-11
DE69926511D1 (de) 2005-09-08

Similar Documents

Publication Publication Date Title
US6427169B1 (en) Parsing a packet header
EP1019835B1 (en) Segmented dma with xor buffer for storage subsystems
US7206891B2 (en) Multi-port memory controller having independent ECC encoders
US6192492B1 (en) Fast ATA-compatible drive interface with error detection and/or error correction
US6216247B1 (en) 32-bit mode for a 64-bit ECC capable memory subsystem
US5471488A (en) Clock fault detection circuit
JP3204276B2 (ja) ディスクアレーコントローラ
US8473816B2 (en) Data verification using checksum sidefile
FI86921B (fi) Loepbandliknande felkorrigeringssystem.
US6804800B2 (en) Method and apparatus for detecting and recovering from errors in a source synchronous bus
US5488702A (en) Data block check sequence generation and validation in a file cache system
US5805799A (en) Data integrity and cross-check code with logical block address
DE10133595B4 (de) Pufferschaltung, Speicherzugriffsverfahren und Reed-Solomon-Decoder
US5504859A (en) Data processor with enhanced error recovery
US5428630A (en) System and method for verifying the integrity of data written to a memory
US5490155A (en) Error correction system for n bits using error correcting code designed for fewer than n bits
US7149947B1 (en) Method of and system for validating an error correction code and parity information associated with a data word
US7159030B1 (en) Associating a packet with a flow
US5664223A (en) System for independently transferring data using two independently controlled DMA engines coupled between a FIFO buffer and two separate buses respectively
US6874054B2 (en) Direct memory access controller system with message-based programming
US8190796B2 (en) Hardware supported peripheral component memory alignment method
US6145017A (en) Data alignment system for a hardware accelerated command interpreter engine
US7415633B2 (en) Method and apparatus for preventing and recovering from TLB corruption by soft error
EP0989491B1 (en) Technique for partioning data to correct memory part failures
EP1433067B1 (en) An enhanced general input/output architecture and related methods for establishing virtual channels therein

Legal Events

Date Code Title Description
A625 Written request for application examination (by other person)

Free format text: JAPANESE INTERMEDIATE CODE: A625

Effective date: 20060524

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060601

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20060801

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20060823

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20060823

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070918

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20071213

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20080122