(57)【要約】【課題】イレージャ訂正に必要な、エラー位置を示すポインタ情報が、記録媒体から読み出されるデータに依存せずに任意に設定できるようにする。【解決手段】スイッチ１３Ｂは、ホストからのライトロングコマンドの実行時、当該コマンドで指定されるデータがＥＣＣ生成器１３Ａをバイパスするように切り替えられる。プログラマブルイレージャポインタ生成器１３７は、ホストからのイレージャポインタ設定コマンドに応じ、当該設定コマンドで指定される位置を誤り位置として示し、且つ上記ライトロングコマンドの実行によりディスクに書き込まれたデータを読み出す際に使用されるイレージャポインタＥＰ２を、イレージャポインタメモリ１３８に設定する。【選択図】    図３
2004213765.tif 000002
【特許請求の範囲】
【請求項１】
ホストから送られたリード／ライトコマンドの指定に応じて、記録媒体からのデータの読み出しまたは前記記録媒体へのデータの書き込みを制御すると共に、前記ホストとの間の読み出しデータまたは書き込みデータの転送を制御する記録再生制御装置において、
前記記録媒体に書き込むべきデータをもとに当該データに付加される誤り訂正符号を生成する誤り訂正符号生成器と、
前記記録媒体から読み出されたデータの誤りのある位置を示すポインタ情報が格納されるイレージャポインタメモリと、
前記記録媒体から読み出されたデータの誤りを、当該データに付加されている誤り訂正符号と前記イレージャポインタメモリに格納されているポインタ情報とを利用して、イレージャ訂正とランダム訂正とにより訂正するエラー訂正回路と、
前記ホストからの特定ライトコマンドの実行時に、前記記録媒体に書き込むべきデータに前記誤り訂正符号生成器によって誤り訂正符号が付加されるのを抑止する回路と、
前記ホストからのイレージャポインタ設定コマンドに応じ、当該設定コマンドで指定される位置を誤り位置として示し、且つ前記特定ライトコマンドの実行により前記記録媒体に書き込まれたデータを読み出す際に使用される特定ポインタ情報を、前記イレージャポインタメモリに設定するプログラマブルイレージャポインタ生成器と
を具備することを特徴とする記録再生制御装置。
【請求項２】
前記イレージャポインタ設定コマンドに応じて前記イレージャポインタメモリに設定された前記特定ポインタ情報が後続のリードコマンドの実行時に書き換えられるのを禁止する手段を更に具備することを特徴とする請求項１記載の記録再生制御装置。
【請求項３】
前記抑止回路は、前記記録媒体に書き込むべきデータを前記誤り訂正符号生成器に入力させるか、或いは当該誤り訂正符号生成器を迂回させるかを切り替えるスイッチであり、前記特定ライトコマンドの実行時、前記記録媒体に書き込むべきデータが前記誤り訂正符号生成器を迂回させられることを特徴とする請求項１記載の記録再生制御装置。
【請求項４】
前記記録媒体から読み出され、前記エラー訂正回路によって誤りが訂正されたデータをデータセクタ単位で格納するリードデータバッファと、
前記記録媒体に書き込むべきデータをデータセクタ単位で格納するライトデータバッファと、
前記ホストからの特定リードコマンドの実行時に、前記記録媒体から読み出されるデータを、当該データに誤り符号が付加された状態で、そのまま前記リードデータバッファに伝達する回路と
を更に具備することを特徴とする請求項１記載の記録再生制御装置。
【請求項５】
前記伝達回路が、前記記録媒体から読み出されたデータを、前記エラー訂正回路に入力させるか、或いは当該エラー訂正回路を迂回させてそのまま前記リードデータバッファに伝達するかを切り替えるスイッチであり、前記特定リードコマンドの実行時、前記記録媒体から読み出されたデータが前記エラー訂正回路を迂回させられることを特徴とする請求項４記載の記録再生制御装置。
【請求項６】
イレージャ訂正機能の検証に用いられる第１のデータであって、第２のデータをもとに生成された誤り訂正符号が付加され、且つ当該第２のデータの一部が書き換えられた第１のデータの前記記録媒体への書き込みが、前記ホストからの前記特定ライトコマンドにより指定され、且つ前記第１のデータのうちの前記書き換えられた部分に対応する位置を誤り位置として示す特定ポインタ情報の設定が、前記ホストからの前記イレージャポインタ設定コマンドにより指定され、しかる後に前記ホストから前記第１のデータを前記記録媒体から読み出すことが指定された場合、前記記録媒体から読み出される前記第１のデータのイレージャ訂正が、当該第１のデータに付加されている誤り訂正符号と前記イレージャポインタ設定コマンドに応じて前記イレージャポインタメモリに設定されている前記特定ポインタ情報とを利用して実行されることを特徴とする請求項１記載の記録再生制御装置。
【請求項７】
前記記録媒体から読み出され、前記エラー訂正回路によって誤りが訂正されたデータをデータセクタ単位で格納するリードデータバッファと、
前記記録媒体に書き込むべきデータをデータセクタ単位で格納するライトデータバッファと、
前記ホストからの特定リードコマンドの実行時に、前記記録媒体から読み出されるデータを、当該データに誤り符号が付加された状態で、そのまま前記リードデータバッファに伝達する回路を更に具備し、
前記第１のデータは、前記第２のデータを前記記録媒体から読み出すことが前記ホストからの前記特定リードコマンドにより指定された結果、前記記録媒体から前記第２のデータが読み出されて、当該第２のデータに誤り符号が付加された状態で前記リードデータバッファに格納された後に、当該第２のデータをもとに生成されることを特徴とする請求項６記載の記録再生制御装置。
【請求項８】
請求項１記載の記録再生制御装置を備えた記録再生装置。
【請求項９】
記録媒体からのデータの読み出し時には、読み出されたデータのうち誤りのある位置を検出し、その誤りの位置を示すポインタ情報を生成してイレージャポインタメモリに格納し、前記読み出されたデータの誤りを、当該データに付加されている誤り訂正符号と前記イレージャポインタメモリに格納されているポインタ情報とを利用したイレージャ訂正及び当該データに付加されている誤り訂正符号を利用したランダム訂正とにより訂正する記録再生装置におけるイレージャ訂正機能を検証する方法であって、
前記記録媒体に書き込むべき第１のデータであって、第２のデータをもとに生成された誤り訂正符号が付加され、且つ当該第２のデータの一部が書き換えられた第１のデータをライトデータバッファに用意するステップと、
前記ライトバッファに用意された、前記誤り訂正符号が付加されている前記第１のデータを、当該第１のデータに基づく誤り訂正符号の生成を伴わずに前記記録媒体に書き込むための特定ライトコマンドを実行するステップと、
前記一部が書き換えられた前記第１のデータのうちの当該一部に対応する位置を誤り位置として示す特定ポインタ情報を、前記記録媒体からのデータ読み出しとは無関係に前記イレージャポインタメモリに設定するステップと、
前記特定ライトコマンドの実行により前記記録媒体に書き込まれた前記第１のデータを読み出すステップと、
前記記録媒体から読み出された前記第１のデータの誤りが正常に訂正されたかにより、イレージャ訂正機能が正常に働いているかを判定するステップと
を具備することを特徴とするイレージャ訂正機能を検証する方法。
【請求項１０】
前記イレージャポインタメモリに設定された特定ポインタ情報が書き換えられるのを禁止するステップを更に具備し、
前記読み出すステップが前記禁止ステップの後に実行されることを特徴とすることを特徴とする請求項９記載のイレージャ訂正機能を検証する方法。
【請求項１１】
前記第１のデータを用意するステップは、
前記第２のデータを、当該第２のデータをもとに生成された誤り訂正符号が当該第２のデータに付加された状態で、前記ライトデータバッファに用意するステップと、
前記ライトデータバッファに用意された前記第２のデータの一部を書き換えることにより前記第１のデータを生成するステップと
を含むことを特徴とする請求項９記載のイレージャ訂正機能を検証する方法。
【請求項１２】
前記第２のデータを用意するステップは、
前記第２のデータを、誤り訂正符号が付加されていない状態で、前記ライトデータバッファに用意するステップと、
前記ライトバッファに用意された、誤り訂正符号が付加されていない前記第２のデータを前記記録媒体に書き込むための通常のライトコマンドを実行するステップと、
前記通常のライトコマンドの実行により前記記憶媒体に書き込まれた前記第２のデータであって、当該第２のデータをもとに生成された誤り訂正符号が付加された前記第２のデータを、当該第２のデータに誤り訂正符号が付加されている状態でリードデータバッファに格納するための特定のリードコマンドを実行するステップと、
前記リードデータバッファに格納された前記第２のデータを当該第２のデータに誤り訂正符号が付加されている状態で前記ライトデータバッファにコピーするステップと
を含むことを特徴とする請求項１１記載のイレージャ訂正機能を検証する方法。
【請求項１３】
前記一部の長さが、イレージャ訂正可能な長さとランダム訂正可能な長さとの和を超えないことを特徴とする請求項９記載のイレージャ訂正機能を検証する方法。
【請求項１４】
前記特定ポインタ情報は、前記一部のうち、ランダム訂正で訂正可能なバースト長を除く連続する範囲を、誤り位置として示すことを特徴とする請求項１３記載の記録再生制御装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、記録媒体へのデータ記録時に当該データの誤り訂正符号を生成し、この記録媒体から再生されたデータの誤りを、その誤りの位置を示すポインタ情報と当該データに付されている誤り訂正符号とから訂正する記録再生装置に係り、特にイレージャ訂正機能の検証に適した記録再生制御装置、同制御装置を備えた記録再生装置、及びイレージャ訂正機能を検証する方法に関する。
【０００２】
【従来の技術】
磁気ディスク装置は、記録媒体にディスクを用いたディスク記憶装置の代表として知られている。最近の磁気ディスク装置では、ディスクから読み出されて復号されたデータの誤りを、ランダム訂正とイレージャ訂正とを組み合わせて訂正することが多くなっている（例えば、特許文献１参照）。特許文献１には、データの誤り（エラー）の開始位置と終了位置を検出し、ランダム訂正ができなかった場合、このエラー位置を示す情報（つまりイレージャポインタと呼ばれるポインタ情報）を利用して、再度エラー訂正を行う方法が記載されている。
【０００３】
磁気ディスク装置が有するランダム訂正の機能は、ロング（Ｌｏｎｇ）コマンドを使用することで、当該ディスク装置にて検査可能である。ロングコマンドは、ディスクへのデータ書き込みを指示するライトロングコマンドと、ディスクからのデータ読み出しを指示するリードロングコマンドとに大別される。ライトロングコマンドは、ホストから指定されたデータ（１セクタタのデータ）をそのままディスクに書き込ませるためのコマンドである。ライトロングコマンドの実行では、エラー訂正符号（ＥＣＣ）を生成するＥＣＣ生成器の動作が抑止される。ＥＣＣは、データのエラーを検出して訂正するのに用いられる冗長データである。リードロングコマンドは、ディスクから読み出されたデータ（１セクタのデータ）をエラー訂正することなく、そのままリードデータバッファに格納させるためのコマンドである。
【０００４】
さて、上記ランダム訂正機能の検査は、以下に述べるように、ＥＣＣを用いたランダム訂正回路が正しく動作しているかを検証することで実現可能である。まず、ホストから磁気ディスク装置に対してリードロングコマンドが発行される。すると、磁気ディスク装置では、ホストからのリードロングコマンドが実行される。これにより、ディスクからＥＣＣを含むデータが読み出される。ディスクから読み出されたデータは、リード／ライトチャネルで復号された後、エラー訂正回路によってエラー訂正されることなく、リードデータバッファに格納される。このリードデータバッファに格納されたデータの一部は意図的に壊される（書き換えられる）。この、一部が壊されたデータはライトデータバッファにコピーされた後、ディスクに書き込まれる。その後、ディスクに書き込まれた一部が壊されたデータを、通常のリードコマンドで当該ディスクから読み出す動作が行われる。もし、ランダム訂正回路が正しく動作しているならば、上記一部が壊されたデータは正しくエラー訂正されるはずである。そこで、一部が壊されたデータが正しくエラー訂正されたかを検査することで、ランダム訂正回路が正しく動作しているかを検証できる。
【０００５】
【特許文献１】
米国特許第６，１１９，２６１号明細書
【０００６】
【発明が解決しようとする課題】
上記したように従来技術において、ランダム訂正回路が正しく動作しているかの検証は、ロングコマンドを用いて実現可能である。これに対し、イレージャ訂正回路が正しく動作しているかは、ポインタ情報がないと検証できない。ところが従来の磁気ディスク装置では、ポインタ情報はリード／ライトチャネルに依存して出力される。このため、リード／ライトチャネルにおけるポインタ生成条件を満足するデータがディスクから読み出されない限り、イレージャ訂正回路の動作を検証できない。しかも、リード／ライトチャネルからポインタ情報が再現性よく出力されるには、ディスクから読み出されるデータに明らかなデータ欠陥が含まれている必要がある。むしろ、正しいポインタ位置を、繰り返しリード等で集計し推測する必要さえある場合もある。このように、ランダム訂正とイレージャ訂正とを組み合わせてエラー訂正を行う従来の磁気ディスク装置には、イレージャ訂正に関し、ロングコマンドを使用してランダム訂正機能を検証するのと同様の検証機能（イレージャ訂正検証機能）は存在しない。
【０００７】
本発明は上記事情を考慮してなされたものでその目的は、イレージャ訂正に必要な、エラー位置を示すポインタ情報を、記録媒体から読み出されるデータに依存せずに任意に設定でき、もってイレージャ訂正機能を容易に検証できる、イレージャ訂正機能の検証に適した記録再生制御装置、同制御装置を備えた記録再生装置、及びイレージャ訂正機能を検証する方法を提供することにある。
【０００８】
【課題を解決するための手段】
本発明の１つの観点によれば、ホストから送られたリード／ライトコマンドの指定に応じて、記録媒体からのデータの読み出しまたは上記記録媒体へのデータの書き込みを制御すると共に、上記ホストとの間の読み出しデータまたは書き込みデータの転送を制御する記録再生制御装置が提供される。この記録再生制御装置は、上記記録媒体に書き込むべきデータをもとに当該データに付加される誤り訂正符号を生成する誤り訂正符号生成器と、上記記録媒体から読み出されたデータの誤りのある位置を示すポインタ情報が格納されるイレージャポインタメモリと、上記記録媒体から読み出されたデータの誤りを、当該データに付加されている誤り訂正符号と上記イレージャポインタメモリに格納されているポインタ情報とを利用して、イレージャ訂正とランダム訂正とにより訂正するエラー訂正回路と、上記ホストからの特定ライトコマンドの実行時に、上記記録媒体に書き込むべきデータに上記誤り訂正符号生成器によって誤り訂正符号が付加されるのを抑止する回路と、上記ホストからのイレージャポインタ設定コマンドに応じ、当該設定コマンドで指定される位置を誤り位置として示し、且つ上記特定ライトコマンドの実行により上記記録媒体に書き込まれたデータを読み出す際に使用される特定ポインタ情報を、上記イレージャポインタメモリに設定するプログラマブルイレージャポインタ生成器とから構成される。
【０００９】
このような構成の記録再生制御装置においては、ホストからのイレージャポインタ設定コマンドに応じ、当該設定コマンドで指定される位置を誤り位置として示す特定ポインタ情報がイレージャポインタメモリに設定される。つまり、本発明の１つの観点によれば、イレージャ訂正に用いられるポインタ情報をイレージャポインタ設定コマンドに応じてイレージャポインタメモリ内にプログラマブルに設定できる。したがって、このポインタ情報（特定ポインタ情報）の指定する位置に対応する部分が書き換えられた（破壊された）データ（第１のデータ）であって、書き換え前のデータ（第２のデータ）をもとに生成された誤り訂正符号が付加されたデータ（第１のデータ）を、そのまま上記記録媒体に書き込むことができるならば、後述するように、この記録媒体に書き込まれたデータを読み出して、上記特定ポインタ情報を利用したイレージャ訂正を含むエラー訂正が正しく行われたかを調べることにより、イレージャ訂正機能を検証できる。
【００１０】
さて、上記構成の記録再生制御装置においては、ホストからの特定ライトコマンド（例えば、ライトロングコマンド）に従って記録媒体へのデータの書き込みが行われる場合、誤り訂正符号生成器によって当該データに新たに誤り訂正符号が付加されることが、抑止回路により抑止される。これにより、誤り訂正符号が付加されたデータの記録媒体への書き込みが上記特定ライトコマンドにより指定された場合、当該誤り訂正符号が付加されたデータを、そのまま記録媒体に書き込むことができる。したがって、イレージャ訂正機能の検証に用いられる第１のデータであって、第２のデータをもとに生成された誤り訂正符号が付加され、且つ当該第２のデータの一部が書き換えられた第１のデータの書き込みが、上記特定ライトコマンドにより指定されたならば、誤り訂正符号生成器によって当該第１のデータに新たに誤り訂正符号が付加されることが、抑止回路により抑止される。つまり、第２のデータの一部を破壊することにより生成された第１のデータが、当該第１のデータに、破壊前の第２のデータをもとに生成された誤り訂正符号が付された状態で、記録媒体に書き込まれる。この破壊された部分は、明らかなようにエラーとなる。したがって、上記第１のデータのうちの上記破壊された部分に対応する位置をエラー位置として示す特定ポインタ情報をイレージャポインタ設定コマンドに応じてイレージャポインタメモリに設定し、しかる後にリードコマンドを実行して当該第１のデータを記録媒体から読み出し、当該第１のデータが上記特定ポインタ情報と当該データに付加されている誤り訂正符号とをもとに訂正可能かを判定するだけで、イレージャ訂正機能が正しく働いているかを容易に検証することができる。その理由は、生成された特定ポインタ情報の示す位置と、破壊された位置とが対応していることから、イレージャ訂正機能が正しく働いているならば、破壊された部分が正しく訂正され、リードが正常完了することによる。
【００１１】
ここで、上記記録媒体から読み出され、上記エラー訂正回路によって誤りが訂正されたデータをデータセクタ単位で格納するリードデータバッファと、上記記録媒体に書き込むべきデータをデータセクタ単位で格納するライトデータバッファとに加えて、上記ホストからの特定リードコマンド（例えば、リードロングコマンド）の実行時に、上記記録媒体から読み出されるデータを、当該データに誤り符号が付加された状態で、そのまま上記リードデータバッファに伝達する回路を備えるとよい。このようにすると、上記記録媒体からの上記第２のデータの読み出しを指定する特定リードコマンドを実行して、当該第２のデータを上記リードデータバッファに格納した後に、当該第２のデータが上記第１のデータに書き換えられた状態で、上記特定ライトコマンドを実行することにより、当該第１のデータを、当該第１のデータに誤り符号が付加されている状態で、そのまま記録媒体に書き込むことができる。つまり、第２のデータの一部を破壊することにより生成された、エラー部分を含む第１のデータを、当該第１のデータに、破壊前の第２のデータ（エラーのない第２のデータ）をもとに生成された誤り訂正符号が付された状態で、記録媒体に書き込むことができる。
【００１２】
上記記録再生制御装置に係る本発明は、当該記録再生制御装置を備えた記録再生装置に係る発明としても、記録再生装置で実行されるイレージャ訂正機能を検証する方法に係る発明としても成立する。
【００１３】
【発明の実施の形態】
以下、本発明を磁気ディスク装置に適用した実施の形態につき図面を参照して説明する。図１は本発明の一実施形態に係る磁気ディスク装置の構成を示すブロック図である。図１において、磁気ディスク装置（以下、ＨＤＤと称する）１０は、大きく分けて、ディスクエンクロージャ（以下、ＤＥと称する）１１と、リード／ライトチャネル（以下、Ｒ／Ｗチャネルと称する）１２と、ハードディスクコントローラ（以下、ＨＤＣと称する）１３と、ＣＰＵ１４とから構成される。
【００１４】
ＤＥ１１は、Ｒ／Ｗチャネル１２と接続され、記録信号の受信、再生信号の送信を行う。ＤＥ１１は、データが磁気記録されるディスク１１１と、ヘッド（磁気ヘッド）１１２とを含む。ヘッド１１２は、ディスク１１１へのデータの書き込み（記録）及び当該ディスク１１１からのデータの読み出し（再生）に用いられる。ディスク１１１は、ＭＲ素子からなるリードヘッド（ＭＲヘッド）と、誘導型の記録用薄膜素子からなるライトヘッド（インダクティブヘッド）とから構成される複合ヘッドである。ＤＥ１１は更に、ディスク１１１を回転させるスピンドルモータ（以下、ＳＰＭと称する）１１３と、アクチュエータ１１４と、ヘッドＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）１１５とを含む。アクチュエータ１１４は、ヘッド１１２を支持して当該ヘッド１１２をディスク１１１の半径方向に移動させる。アクチュエータ１１４は、当該アクチュエータ１１４の駆動源となるボイスコイルモータ（以下、ＶＣＭと称する）１１４ａを含む。ヘッドＩＣ１１５は、Ｒ／Ｗチャネル１２から送られる記録信号を増幅するライトアンプ１１５ａと、ヘッド１１２により読み出された再生信号を増幅するリードアンプ１１５ｂとを含む。
【００１５】
図１では、説明を簡略化するために、ディスク１１１が１枚であり、且つヘッド１１２がディスク１１１の一方の面側にのみ配置されている場合を想定している。しかし、複数のディスク１１１が積層配置された構成であっても構わない。また、ヘッド１１２は、ディスク１１１の各記録面に対応してそれぞれ設けられるのが一般的である。
【００１６】
Ｒ／Ｗチャネル１２は、各種の信号処理を実行する。この信号処理は、リード信号に対するＡ／Ｄ（アナログ／ディジタル）変換処理、ライトデータの符号化処理及びリードデータの復号化処理を含む。
【００１７】
ＨＤＣ１３は、Ｒ／Ｗチャネル１２、ＣＰＵ１４、及びホスト（ホストシステム）２０と接続されている。ホスト２０は図１のＨＤＤを利用するパーソナルコンピュータ等のデジタル機器である。ＨＤＣ１３は、ホストインタフェース制御機能と、ディスク制御機能と、ＥＣＣ処理機能とを有する。ＨＤＣ１３はホストインタフェース制御機能により、ホスト２０から転送されるコマンド（ライトコマンド、リードコマンド等）を受信すると共に、ホスト２０とＨＤＣ１３との間のデータ転送を制御する。ＨＤＣ１３はディスク制御機能により、Ｒ／Ｗチャネル１２を介してディスク１１１と当該ＨＤＣ１３との間のデータ転送を制御する。ＨＤＣ１３はＥＣＣ処理機能により、ディスク１１１に記録されるデータ（ライトデータ）に付加されるＥＣＣを生成すると共に、ディスク１１１から読み出されたデータに付されているＥＣＣを用いて当該データのエラーを訂正する。このエラー訂正は、ランダム訂正とイレージャ訂正とを組み合わせて行われる。
【００１８】
ＣＰＵ１４は、ＨＤＤ１０の主コントローラである。ＣＰＵ１４は、図示せぬＲＯＭに格納されている制御プログラムに従って、ＤＥ１１、Ｒ／Ｗチャネル１２及びＨＤＣ１３を制御する。ＣＰＵ１４は特に、ホスト２０からの指示により、ＨＤＤ１０におけるイレージャ訂正機能を検証するための制御を行う。
【００１９】
図２は、図１中のＲ／Ｗチャネル１２のブロック構成を示す。Ｒ／Ｗチャネル１２は、アナログフロントエンド１２１と、イコライザ（等化器）１２２と、ビタビデコーダ（ビタビ復号器）１２３と、タイミング回復回路１２４とを含む。アナログフロントエンド１２１は、ＶＧＡ（可変利得増幅器）とアナログフィルタとＡ／Ｄコンバータ（いずれも図示せず）とを含む。Ａ／Ｄコンバータのサンプリングクロック（再生クロック）は、ディスク１１１に書き込まれたデータのクロック（チャネルクロック）に、タイミング回復回路１２４によって同期化されている。
【００２０】
Ｒ／Ｗチャネル１２はまた、エンコーダ／デコーダ（以下、ＥＮＤＥＣと称する）１２５と、ライトシンセサイザ１２６と、ＮＲＺクロック生成器１２７と、熱アスペリティ検出器（以下、ＴＡ検出器と称する）１２８と、コード違反検出器１２９とを含む。ＥＮＤＥＣ１２５は、ビタビデコーダ１２３により復号されたデータをＮＲＺ（Ｎｏｎ−Ｒｅｔｕｒｎ  ｔｏ  Ｚｅｒｏ）データに変換する。この変換されたＮＲＺデータはリードデータとしてＨＤＣ１３に転送される。ＥＮＤＥＣ１２５はまた、ＨＤＣ１３から転送されるライトデータ（ＮＲＺデータ）をコード変換すると共に、ディスク１１１への記録に適したＮＲＺＩ（Ｎｏｎ−Ｒｅｔｕｒｎ  ｔｏ  Ｚｅｒｏ  Ｉｎｖｅｒｓｅ）データに変換する。ここでのコード変換では、例えば３２ビット（４バイト）単位に３４ビットに変換される。ライトシンセサイザ１２６は、主として書き込みのためのクロック信号の生成に必要な基本クロック信号を生成する。ライトシンセサイザ１２６は、この基本クロック信号の周波数を可変することが可能である。ＮＲＺクロック生成器１２７は、ライトシンセサイザ１２６からの基本クロック信号とイコライザ１２２の出力とをもとにＮＲＺデータに対応したＮＲＺクロック信号を生成する。このＮＲＺクロック信号はＨＤＣ１３に転送される。ＴＡ検出器１２８は、アナログフロントエンド１２１の出力レベルを監視することで熱アスペリティ（以下、ＴＡと称する）の発生を検出する。ＴＡ（Ｔｈｅｒｍａｌ  Ａｓｐｅｒｉｔｙ）とは、ヘッド１１２がディスク１１１の表面と衝突することによって生じる熱エネルギによってＭＲヘッド（ＭＲ素子）の磁気抵抗が変化し、再生信号のＤＣレベルが大きく変化する現象をいう。そこでＴＡ検出器１２８は、アナログフロントエンド１２１の出力レベルを予め設定された閾値と比較する。ＴＡ検出器１２８は、アナログフロントエンド１２１の出力レベルが閾値を超えている場合にＴＡが発生しているとして、その期間だけ例えば“１”となるフラグ（ＴＡフラグ）Ｆ１を出力する。コード違反検出器１２９は、ビタビデコーダ１２３からＥＮＤＥＣ１２５に入力されたデータ列の中から、予め定められたサイズ（ここでは、３４ビット）のブロック単位に、コード違反のデータ列を検出する。コード違反のデータ列は、予め誤りであると定められている例えば値が全て“１”の特定パターンのデータ列である。コード違反検出器１２９は、検出されたコード違反データ列に対応する期間だけ“１”となるフラグ（コード違反フラグ）Ｆ２を出力する。
【００２１】
Ｒ／Ｗチャネル１２はまた、エラー位置検出器１２Ａと、イレージャポインタ生成器１２Ｂとを含む。エラー位置検出器１２Ａは、ＴＡ検出器１２８からのＴＡフラグＦ１、コード違反検出器１２９からのコード違反フラグＦ２、及びＨＤＣ１３からのイレージャポインタ選択信号ＥＰＳＳに応じて、イレージャポインタの生成に必要なリードデータ中のエラー位置（エラーの開始位置及びエラーの終了位置）を検出する。イレージャポインタ選択信号ＥＰＳＳは、エラー位置を、フラグＦ１のみ、フラグＦ２のみ、フラグＦ１及びＦ２の論理和、またはフラグＦ１及びＦ２の論理積のいずれをもとに検出するかを指定する。イレージャポインタ生成器１２Ｂは、エラー位置検出器１２Ａによって検出されたエラー位置を示すイレージャポインタＥＰ１を生成する。イレージャポインタＥＰ１は、１セクタ分のデータのエラー位置を、例えばバイト単位に、一種のビットマップ形式で示すポインタ情報である。本実施形態では、イレージャポインタＥＰ１を構成するビットのうち、エラー位置検出器１２Ａによって検出されたエラー位置（即ちエラーの開始位置及びエラーの終了位置で指定される範囲）のバイトに対応するビットだけ“１”となる。ＤＥ１１は更に、書き込み補償回路１２Ｃを含む。書き込み補償回路１２Ｃは、ＥＮＤＥＣ１２５から出力されるＮＲＺＩデータを対象に、記録波形のタイミングの補正を行う。このタイミング補正後のデータは、書き込みデータとして、ヘッドＩＣ１１５内のライトアンプ１１５ａに出力される。
【００２２】
図３は、図１中のＨＤＣ１３のブロック構成を示す。ＨＤＣ１３は、ホストインタフェース制御部１３１と、ディスクインタフェース制御部１３２と、ＣＰＵインタフェース１３３とを含む。ホストインタフェース制御部１３１は、上述のホストインタフェース制御機能を有する。ディスクインタフェース制御部１３２は、上述のホストインタフェース制御機能を有する。ＣＰＵインタフェース１３３は、ＣＰＵ１４とのインタフェースをなす。上記イレージャポインタ選択信号ＥＰＳＳは、ＣＰＵ１４からＣＰＵインタフェース１３３を介して図示せぬコントロールレジスタの所定のビットがセットされることにより、ＨＤＣ１３からＲ／Ｗチャネル１２に供給される。
【００２３】
ＨＤＣ１３はまた、ＥＣＣエラー訂正回路１３４を含む。ＥＣＣエラー訂正回路１３４は、Ｒ／Ｗチャネル１２からディスクインタフェース制御部１３２を介して転送されたＮＲＺデータ（リードデータ）のエラーを、当該データに付されているＥＣＣを使用して訂正する。ＥＣＣエラー訂正回路１３４は、ランダム訂正回路１３４ａとイレージャ訂正回路１３４ｂとから構成される。ランダム訂正回路１３４ａは、上記ＮＲＺデータのエラーを、当該データに付されているＥＣＣのみを使用して訂正する。イレージャ訂正回路１３４ｂは、上記ＮＲＺデータのエラーを、当該データに付されているＥＣＣとイレージャポインタとを使用して訂正する。このイレージャ訂正回路１３４ｂによるエラー訂正はイレージャ訂正と呼ばれる。
【００２４】
ここで、ＥＣＣエラー訂正回路１３４における、イレージャポインタを用いたエラー訂正について述べる。ＥＣＣのエラー訂正能力は当該ＥＣＣのバイト数（シンボル数）と関係がある。一般に、ＥＣＣとしてリードソロモン（ＲＳ）符号を利用して誤り訂正を行う場合、１バイト（シンボル）のエラーを訂正するには、２バイト（シンボル）のＥＣＣが必要とされる。この２バイトのＥＣＣのうちの１バイトは、エラーの位置を特定するのに用いられ、残りの１バイトはエラーの訂正に用いられる。しかし、予め誤りの位置が分かっている場合、その位置をイレージャとして扱うことでＥＣＣのバイト数（冗長シンボル数）までのエラーを訂正できる。したがって、データのエラー位置を適切に検出し、そのエラー位置を示す位置情報（エラー位置情報）、即ちイレージャポインタを使用することにより、１バイトのＥＣＣで１バイトのエラー訂正（イレージャ訂正）が可能となる。このイレージャ訂正の効果の具体例を図４を参照して説明する。
【００２５】
図４は、３インターリーブ（３ｉ）＊７バースト（７ｂ）の例を示す。“３インターリーブ＊７バースト”とは、データ（例えばバイト１〜５１２の５１２バイトから構成される１セクタのデータ）のインターリーブ数が３で、各インターリーブ当たり７バイトまでのランダムエラーの訂正（ランダム訂正）ができることをいう。つまり、“７バースト”は、インターリーブ毎の、ＥＣＣを用いたランダム訂正（ランダムＥＣＣ訂正）可能な総バースト長（ランダム訂正バースト長）が７であることを示す。ここでは、各インターリーブ当たり、１４バイトのＥＣＣが付加される。
【００２６】
図４の例では、バイト５〜２６の連続する２２バイト（記号×が付されている部分）でエラーが発生したものとする。この場合、第２のインターリーブには８バイトエラーが発生することから、この部分のエラーは訂正できない。そこで、第２のインターリーブに“２イレージャ（２バイトのイレージャ訂正）＋６バースト”を適用してＥＣＣエラー訂正回路１３４によるエラー訂正を行う。“２イレージャ”とは、２バイトのＥＣＣと２バイトのイレージャポインタとにより、２バイトエラーまで訂正できることをいう。つまり、“２イレージャ”は、イレージャ訂正可能なバースト長（イレージャ訂正バースト長）が２であることを示す。この第２のインターリーブへの“２イレージャ＋６バースト”の適用により、連続する２２バイトのエラーでも訂正できるようになる。
【００２７】
再び図３を参照すると、ＨＤＣ１３は、リードデータバッファ１３５と、スイッチ１３６とを含む。リードデータバッファ１３５は、リードデータをデータセクタ単位で一時格納するのに用いられる。リードデータバッファ１３５には、Ｒ／Ｗチャネル１２から転送されたエラー訂正前のＮＲＺデータ、またはランダム訂正回路１３４ａもしくはイレージャ訂正回路１３４ｂによりエラーが訂正されたＮＲＺデータが格納される。スイッチ１３６は、Ｒ／Ｗチャネル１２から転送されたＮＲＺデータの出力先を切り替えるのに用いられる。スイッチ１３６は、通常状態では、上記ＮＲＺデータの出力先を、リードデータバッファ１３５に切り替える。またスイッチ１３６は、第１の特定状態では、上記ＮＲＺデータの出力先を、ＥＣＣエラー訂正回路１３４に切り替える。第１の特定状態は、ホスト２０からリードロングコマンドが与えられた場合に、ＣＰＵ１４によってホストインタフェース制御部１３１を介して設定される。
【００２８】
ＨＤＣ１３はまた、プログラマブルイレージャポインタ生成器１３７と、イレージャポインタメモリ１３８とを含む。プログラマブルイレージャポインタ生成器１３７は、ホスト２０からの特定コマンドで指定されるイレージャポインタＥＰ２を生成する。イレージャポインタメモリ１３８は、イレージャポインタＥＰ１及びＥＰ２のいずれか一方を格納するのに用いられる。このイレージャポインタメモリ１３８に格納されたイレージャポインタＥＰ１またはＥＰ２は、イレージャ訂正回路１３５によるイレージャ訂正に用いられる。
【００２９】
ＨＤＣ１３は更に、ライトデータバッファ１３９と、ＥＣＣ生成器１３Ａと、スイッチ１３Ｂとを含む。ライトデータバッファ１３９は、上記リードデータバッファ１３５と共に、図示せぬＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）の記憶領域内に確保される。ライトデータバッファ１３９は、ホスト２０からホストインタフェース制御部１３１を介して転送されるライトデータをデータセクタ単位で一時格納するのに用いられる。ＥＣＣ生成器１３Ａは、ライトデータバッファ１３９から読み出されるライトデータをもとに、データセクタ単位でＥＣＣを生成する。生成されたＥＣＣが付加されたライトデータはディスクインタフェース制御部１３２を介してＲ／Ｗチャネル１２に転送される。スイッチ１３Ｂは、ライトデータバッファ１３９から読み出されるライトデータの出力先を切り替えるのに用いられる。スイッチ１３Ｂは、通常状態では、上記ライトデータの出力先を、ＥＣＣ生成器１３Ａに切り替える。またスイッチ１３Ｂは、第２の特定状態（第２の特定モード）では、上記ライトデータの出力先を、ディスクインタフェース制御部１３２に切り替える。第２の特定状態は、ホスト２０からライトロングコマンドが与えられた場合に、ホストインタフェース制御部１３１により設定される。
【００３０】
次に、本発明の一実施形態の動作について、ＥＣＣエラー訂正回路１３４のエラー訂正機能（特にＥＣＣエラー訂正回路１３４に含まれているイレージャ訂正回路１３４ｂのイレージャ訂正機能）を検証する場合を例に説明する。まず、エラー訂正機能の検証に用いるデータセクタを選択する処理について、図５のフローチャートを参照して説明する。
【００３１】
まずＣＰＵ１４は、ホスト２０からＨＤＤ１０に与えられるコマンドに従って、ＨＤＣ１３内のランダム訂正回路１３４ａの訂正バースト長をＡ１に設定する（ステップ５０１）。次にＣＰＵ１４は、ホスト２０からのコマンドに従って１セクタ分のテストデータ（ＮＲＺデータ）を生成し、当該データをライトデータバッファ１３９に格納する（ステップ５０２）。次にＣＰＵ１４は、ホスト２０からのコマンド（シークコマンド）に従って、当該コマンドに含まれている論理ブロックアドレスＬＢＡ１により指定される、ディスク１１１上のトラック（第１のテストの対象となるトラック）Ｔ１にヘッド１１２を移動させる、シーク制御を実行する（ステップ５０３）。このときＣＰＵ１４は、ロングコマンドの実行を想定して、アクセスすべきブロック（セクタ）数ｂｌｋを１に設定する（ステップ５０４）。
【００３２】
この状態で、ＣＰＵ１４は、ディスク１１１へのテストデータの書き込みと、ディスク１１１からのテストデータの読み出しとを制御する（ステップ５０４）。これにより以下に述べる、テストデータ書き込みとテストデータ読み出しとが実行される。
【００３３】
まず、ライトデータバッファ１３９に格納されている１セクタ分のテストデータがスイッチ１３Ｂを介してＥＣＣ生成器１３Ａに転送される。ＥＣＣ生成器１３Ａは、この１セクタ分のテストデータに基づき、インターリーブ毎にＥＣＣを生成する。生成されたインターリーブ毎のＥＣＣはテストデータに付加される。このＥＣＣが付加された１セクタ分のテストデータは、ディスクインタフェース制御部１３２を介してＨＤＣ１３からＲ／Ｗチャネル１２に転送される。Ｒ／Ｗチャネル１２は、ＨＤＣ１３から転送されたテストデータ（ＮＲＺデータ）を、３２ビット単位に３４ビットのコードに変換する。Ｒ／Ｗチャネル１２はまた、コード変換されたＮＲＺデータをＮＲＺＩデータに変換する。このＮＲＺＩデータ（ＥＣＣが付されているテストデータ）は、ヘッドＩＣ１１５を介してヘッド１１２に送られて、当該ヘッド１１２により、ディスク１１１に書き込まれる。ここでは、ＮＲＺＩデータは、ＬＢＡ１で指定される、トラックＴ１上のデータセクタＳ１に書き込まれる。
【００３４】
次に、トラックＴ１上のデータセクタＳ１に書き込まれたデータが、ヘッド１１２により読み出される。読み出されたデータはヘッドＩＣ１１５を介してＲ／Ｗチャネル１２に転送される。Ｒ／Ｗチャネル１２では、上記読み出されたデータがＮＲＺデータに変換され、更に元のコードに変換される。また、上記読み出されたデータのエラー位置が、Ｒ／Ｗチャネル１２内のエラー位置検出器１２Ａにより検出される。そして、この検出されたエラー位置を示すイレージャポインタＥＰ１が、イレージャポインタ生成器１２Ｂにより生成される。このイレージャポインタＥＰ１は、上記コード変換後のデータ（ＮＲＺデータ）と共にＨＤＣ１３に転送される。ＨＤＣ１３に転送されたイレージャポインタＥＰ１はイレージャポインタメモリ１３８に格納される。また、ＨＤＣ１３に転送されたＮＲＺデータ（リードデータ）は、ディスクインタフェース制御部１３２及びスイッチ１３６を介して、ＥＣＣエラー訂正回路１３４に入力される。ＥＣＣエラー訂正回路１３４内のイレージャ訂正回路１３４ｂは、ＥＣＣエラー訂正回路１３４に入力されたＮＲＺデータに付されているＥＣＣと、イレージャポインタメモリ１３８に格納されているイレージャポインタとを用いて、当該データのエラーをイレージャ訂正により訂正する。一方、ランダム訂正回路１３４ａは、イレージャポインタによりエラー位置として示されていない部分のエラーをランダム訂正により訂正する。このように、ＥＣＣエラー訂正回路１３４では、ランダム訂正とイレージャ訂正とを組み合わせて、リードデータのエラーが訂正される。このエラーが訂正されたデータはリードデータバッファ１３５に格納される。
【００３５】
さて、ＥＣＣエラー訂正回路１３４によるエラー訂正に成功した場合（ステップ５０５）、ＣＰＵ１４は、データの書き込み及び読み出しに用いられたデータセクタはエラー訂正機能の検証に適していると判定する。この場合、ランダム訂正機能を検証するための処理（ランダム訂正機能テスト）が行われる。これに対し、ＥＣＣエラー訂正回路１３４によるエラー訂正に失敗した場合、つまりデータ読み出しに失敗した場合（ステップ５０５）、ＣＰＵ１４は、上述のデータ読み出し（ここではトラックＴ１上のデータセクタＳ１からのデータ読み出し）の再実行（即ちリードリトライ）を制御する（ステップ５０６）。このリトライ（ステップ５０６）は、データ読み出しに成功するまで（ステップ５０５）、所定のリトライ回数（例えば１０回）を超えない範囲で繰り返される（ステップ５０７）。
【００３６】
もし、所定の回数のリトライを実行しても、データ読み出しに成功しなかった場合（ステップ５０７）、ＣＰＵ１４は、データの書き込み及び読み出しに用いられたデータセクタはエラー訂正機能の検証に不適であると判定する。この場合、ＣＰＵ１４は、ヘッド１１２を、ディスク１１１上のトラックＴ１から別のトラック（第２のテストの対象となるトラック）Ｔ２に移動させるシーク制御を実行する（ステップ５０９）。このトラックＴ２は、第２のテストのためにホスト２０から与えられるコマンド（シークコマンド）に含まれている論理ブロックアドレスＬＢＡ２により指定される。ＣＰＵ１４はステップ５０９を実行すると、上記ステップ５０４に戻る。ここでは、ＬＢＡ２により指定される、トラックＴ２上のデータセクタＳ２へのテストデータの書き込みと、当該データセクタＳ２からのテストデータの読み出しとが行われる。もし、テストデータ読み出しに成功したならば（ステップ５０５）、ランダム訂正機能テストが行われる。また、所定の回数のリトライを実行しても、トラックＴ２上のデータセクタＳ２からのテストデータ読み出し（第２のテスト）に成功しなかったならば（ステップ５０８）、ＣＰＵ１４はリードエラーを示すエラーメッセージをホスト２０に通知する（ステップ５１０）。
【００３７】
次に、ランダム訂正機能テストについて、図６のフローチャートを参照して説明する。ホスト２０は、トラックＴｋ（ｋは１または２）上のデータセクタＳｋからのテストデータの読み出しに成功した場合、ランダム訂正機能テストを実行するために、ＨＤＤ１０に対してリードロングコマンドを発行する。このリードロングコマンドは、ＥＣＣエラー訂正回路１３４を動作させずに、トラックＴｋ上のデータセクタＳｋからのデータ読み出しを指定する。ＨＤＤ１０内のＣＰＵ１４は、ホスト２０からリードロングコマンドを受け取ると、当該コマンドを実行する（ステップ６０１）。即ちＣＰＵ１４は、リードロングコマンドにより指定されるトラックＴｋ上のデータセクタＳｋからのデータ読み出しを制御する。このとき、ＨＤＤ１０はリードロングコマンドに応じて通常状態から第１の特定状態（第１の特定モード）に切り替えられる。これにより、当該ＨＤＣ１３内のスイッチ１３６は、Ｒ／Ｗチャネル１２からディスクインタフェース制御部１３２を介して転送されるＮＲＺデータ（リードデータ）の出力先を、ＥＣＣエラー訂正回路１３４からリードデータバッファ１３５に切り替える。この状態で、トラックＴｋ上のデータセクタＳｋから読み出されたデータは、ヘッドＩＣ１１５及びＲ／Ｗチャネル１２を介してＨＤＣ１３に転送される。このＨＤＣ１３に転送されたデータ（リードデータ）は、ＥＣＣが付された状態で、ディスクインタフェース制御部１３２及びスイッチ１３６を介してリードデータバッファ１３５に格納される。
【００３８】
次にホスト２０は、ＨＤＤ１０に対してコピーコマンドを発行する。このコピーコマンドは、リードデータバッファ１３５からライトデータバッファ１３９へのデータコピーを指定する。ＨＤＤ１０内のＣＰＵ１４は、ホスト２０からコピーコマンドを受け取ると、リードデータバッファ１３５に格納されたリードデータを、ＥＣＣが付された状態で、ホストインタフェース制御部１３１を介してライトデータバッファ１３９にコピーする（ステップ６０２）。次にＣＰＵ１４は、ライトデータバッファ１３９にコピーされたデータの一部を書き換える（破壊する）（ステップ６０３）。この書き換えが行われる箇所は、図９（ａ）に示すように、上記コピーされたデータ中の第ｎ１バイト〜第（ｎ１＋ｍ−１）バイトのｍバイトである。この書き換えが行われる箇所はホスト２０から指定される。ここで、ｍは、ｍ≦（インターリーブ数ｉ＊訂正バースト長ｂ）を満足する任意のバイト数を示す。“インターリーブ数ｉ＊訂正バースト長ｂ”は、ＥＣＣエラー訂正回路１３４（ランダム訂正回路１３４ａ）でランダム訂正が可能な総バイト（シンボル）数を示す。例えば、インターリーブ数ｉが３で、訂正バースト長ｂが７バイトの場合、ｍはｍ≦３＊７（＝２１バイト）を満足する整数である。ここでは、ｍ＝２１であるものとする。なお、ステップ６０２及び６０３の順番は逆であっても構わない。即ち、リードデータバッファ１３５に格納されたリードデータ中の第ｎ１バイト〜第（ｎ１＋ｍ−１）バイトを書き換え、その書き換え後のデータを、ＥＣＣが付された状態で、ライトデータバッファ１３９にコピーしてもよい。
【００３９】
ＥＣＣエラー訂正回路１３４のランダム訂正機能が正常であるか否かを検証するには、主として次の２つの処理を実行すればよい。第１は、上記ｍバイトが書き換えられた（破壊された）データをロングライトコマンドの実行によりディスク１１１に書き込む処理である。第２は、ディスク１１１に書き込まれた、上記ｍバイトが書き換えられたデータが正しく訂正可能かを判定するために、当該データを通常のリードコマンドの実行により読み出す処理である。
【００４０】
そこでホスト２０は、ライトデータバッファ１３９にコピーされたデータの一部（第ｎ１バイト〜第（ｎ１＋ｍ−１）バイトのｍバイト）が書き換えられると、その書き換え後のデータをディスク１１１に書き込むためのライトロングコマンドをＨＤＤ１０に発行する。このライトロングコマンドは、ＥＣＣ生成器１３Ａを動作させずに、トラックＴｋ上のデータセクタＳｋへのデータ書き込みを指定する。ＨＤＤ１０内のＣＰＵ１４は、ホスト２０からライトロングコマンドを受け取ると、当該コマンドを実行する（ステップ６０４）。即ちＣＰＵ１４は、ライトデータバッファ１３９にコピーされている、上記書き換え後のデータを、ライトロングコマンドにより指定されるトラックＴｋ上のデータセクタＳｋに書き込むための制御を実行する。このとき、ＨＤＤ１０はライトロングコマンドに応じて第２の特定状態（第２の特定モード）に切り替えられる。すると、当該ＨＤＣ１３内のスイッチ１３９は、ライトデータバッファ１３９に格納されているデータ（ライトデータ）の出力先を、ディスクインタフェース制御部１３２に切り替える。これにより、ライトデータバッファ１３９に格納されている、一部（第ｎ１バイト〜第（ｎ１＋ｍ−１）バイト）が書き換えられたデータ（ライトデータ）が、そのまま（即ち、ＥＣＣが付されている状態で）、スイッチ１３Ｂを介してディスクインタフェース制御部１３２に転送される。このディスクインタフェース制御部１３２に転送されたデータは、ディスクインタフェース制御部１３２からＲ／Ｗチャネル１２及びヘッドＩＣ１１５を介してヘッド１１２に送られて、当該ヘッド１１２により、ディスク１１１に書き込まれる。ここでは、データ（つまり第ｎ１バイト〜第（ｎ１＋ｍ−１）バイト）が書き換えられたデータ）は、トラックＴｋ上のデータセクタＳｋに書き込まれる。
【００４１】
すると、ホスト２０からＨＤＤ１０に対し、トラックＴｋ上のデータセクタＳｋからデータを読み出すための、通常のリードコマンドが発行される。このコマンドでは、“３ｉ（３インターリーブ）＊７ｂ（７バースト）”によるランダム訂正が指定される。ＨＤＤ１０内のＣＰＵ１４は、ホスト２０から通常のリードコマンドを受け取ると、当該コマンドを実行する（ステップ６０５）。即ちＣＰＵ１４は、通常のリードコマンドにより指定されるトラックＴｋ上のデータセクタＳｋからのデータ読み出しを制御する。このとき、ＨＤＤ１０は通常のリードコマンドに応じて通常状態に切り替えられる。すると、ＨＤＣ１３内のスイッチ１３６は、Ｒ／Ｗチャネル１２からディスクインタフェース制御部１３２を介して転送されるＮＲＺデータ（リードデータ）の出力先を、ＥＣＣエラー訂正回路１３４に切り替える。この状態で、トラックＴｋ上のデータセクタＳｋから読み出されたデータ（リードデータ）は、ヘッドＩＣ１１５及びＲ／Ｗチャネル１２を介してＨＤＣ１３に転送される。このＨＤＣ１３に転送されたデータ（リードデータ）は、ＥＣＣが付された状態で、ディスクインタフェース制御部１３２及びスイッチ１３６を介して、ＥＣＣエラー訂正回路１３４に入力される。ここでは、上記通常のリードコマンドにより、“３ｉ（３インターリーブ）＊７ｂ（７バースト）”によるランダム訂正が指定されている。この場合、ＥＣＣエラー訂正回路１３４内のランダム訂正回路１３４ａは、リードデータに付されているＥＣＣ（３＊７バイトのＥＣＣ）を用いて、当該データのエラーをランダム訂正により訂正する。このエラーが訂正されたデータはリードデータバッファ１３５に格納される。
【００４２】
さて、リードデータのエラー訂正に成功してリードが正常に完了した場合（ステップ６０６）、ＣＰＵ１４は、ＥＣＣエラー訂正回路１３４（ランダム訂正回路１３４ａ）のランダム訂正機能は正常であると判定する。この場合、イレージャ訂正機能を検証するための処理（イレージャ訂正機能テスト）が行われる。これに対し、リードデータのエラー訂正に失敗した場合、つまりデータ読み出しに失敗した場合（ステップ６０６）、ＣＰＵ１４は、上述のデータ読み出しの再実行（即ちリードリトライ）を制御する（ステップ６０７）。このリトライ（ステップ６０７）は、データ読み出しに成功するまで（ステップ６０６）、所定のリトライ回数（例えば１０回）を超えない範囲で繰り返される（ステップ６０８）。
【００４３】
もし、所定の回数のリトライを実行しても、データ読み出しに成功しなかった場合（ステップ６０８）、ＣＰＵ１４は、ＥＣＣエラー訂正回路１３４のランダム訂正機能が正常に働いていないと判断する。この場合、ＣＰＵ１４は、ランダム訂正エラーを示すエラーメッセージをホスト２０に通知する（ステップ６０９）。
【００４４】
次に、イレージャ訂正機能テストについて、図７及び図８のフローチャートを参照して説明する。ホスト２０は、ランダム訂正機能テストでランダム訂正機能が正常に働いていると判定できた場合、イレージャ訂正機能テストを実行するために、まずＨＤＤ１０に対してコピーコマンドを発行する。このコピーコマンドは、リードデータバッファ１３５からライトデータバッファ１３９へのデータコピーを指定する。ＨＤＤ１０内のＣＰＵ１４は、ホスト２０からコピーコマンドを受け取ると、当該コマンドに従って、リードデータバッファ１３５からライトデータバッファ１３９へのデータコピーを実行する（ステップ７０１）。ここでは、先のランダム訂正機能テストでリードデータバッファ１３５に格納された、エラー訂正後のリードデータが、ライトデータバッファ１３９にライトデータとしてコピーされる。
【００４５】
次にホスト２０は、ライトデータバッファ１３９にコピーされたデータ（１セクタ分のデータ）をディスク１１１に書き込むための通常のライトコマンドをＨＤＤ１０に発行する。ＨＤＤ１０内のＣＰＵ１４は、ホスト２０から通常のライトコマンドを受け取ると、当該コマンドを実行する（ステップ７０２）。即ちＣＰＵ１４は、ライトデータバッファ１３９にコピーされている１セクタ分のデータを、通常のライトコマンドにより指定されるトラックＴｋ上のデータセクタＳｋに書き込むための制御を実行する。これにより、ライトデータバッファ１３９にコピーされた１セクタ分のデータがスイッチ１３Ｂを介してＥＣＣ生成器１３Ａに転送される。ＥＣＣ生成器１３Ａは、このデータに基づき、インターリーブ毎にＥＣＣを生成する。生成されたインターリーブ毎のＥＣＣは上記１セクタ分のデータに付加される。このＥＣＣが付加された１セクタ分のデータは、ディスクインタフェース制御部１３２からＲ／Ｗチャネル１２及びヘッドＩＣ１１５を介してヘッド１１２に送られて、当該ヘッド１１２により、ディスク１１１に書き込まれる。ここでは、上記１セクタ分のデータは、トラックＴｋ上のデータセクタＳｋに書き込まれる。つまり、先のランダム訂正機能テストでトラックＴｋ上のデータセクタＳｋに書き込まれた、一部が破壊されたデータが、元の正しいデータに書き換えられる。
【００４６】
次に、ホスト２０は、トラックＴ１上のデータセクタＳ１に書き込まれたデータを、ＥＣＣエラー訂正回路１３４を動作させずに読み出すために、ＨＤＤ１０に対してリードロングコマンドを発行する。ＨＤＤ１０内のＣＰＵ１４は、ホスト２０からリードロングコマンドを受け取ると、当該コマンドを実行する（ステップ７０３）。即ちＣＰＵ１４は、リードロングコマンドにより指定されるトラックＴｋ上のデータセクタＳｋからのデータ読み出しを制御する。これにより、トラックＴｋ上のデータセクタＳｋから読み出されたデータは、ヘッドＩＣ１１５及びＲ／Ｗチャネル１２を介してＨＤＣ１３に転送される。このＨＤＣ１３に転送されたデータ（リードデータ）は、ＥＣＣが付された状態で、ディスクインタフェース制御部１３２及びスイッチ１３６を介してリードデータバッファ１３５に格納される。
【００４７】
次にＣＰＵ１４は、前記ステップ６０２と同様に、リードデータバッファ１３５に格納されたリードデータを、ＥＣＣが付された状態で、ホストインタフェース制御部１３１を介してリードデータバッファ１３５にコピーする（ステップ７０４）。このコピー動作は、ホスト２０から発行されるコピーコマンドにより指定される。次にＣＰＵ１４は、前記ステップ６０３と同様に、ライトデータバッファ１３９にコピーされたデータの一部を書き換える（破壊する）（ステップ７０４）。但し、この書き換えが行われる箇所は、図９（ｂ）に示すように、上記コピーされたデータ中の第ｎ２バイト〜第（ｎ２＋ｈ−１）バイトのｈバイトである。この書き換えが行われる箇所はホスト２０から指定される。ここで、ｈは、ｈ≦（ランダム訂正バースト長＋イレージャ訂正バースト長）を満足する任意のバイト数を示す。ここでは、ランダム訂正バースト長はランダム訂正回路１３４ａでランダム訂正が可能な総バイト（シンボル）数を示す。本実施形態では、ランダム訂正バースト長は、３＊２＝６（インターリーブ数ｉ＝３、インタリーブ毎の訂正バースト長ｂ＝２）であるものとする。一方、イレージャ訂正バースト長はイレージャ訂正回路１３４ｂでイレージャ訂正が可能な最長の連続するバイト（シンボル）数を示す。本実施形態では、イレージャ訂正バースト長は、３＊８＝２４（インターリーブ数ｉ＝３、インタリーブ毎の訂正バースト長ｂ＝８）である。この場合、“ランダム訂正バースト長＋イレージャ訂正バースト長”は６＋２４＝３０（バイト）であり、ｈはｈ≦３０（バイト）を満足する整数である。ここでは、ｈ＝２８であるものとする。インタリーブ毎のＥＣＣが１４バイトの本実施形態では、ランダム訂正のみでエラーを訂正する場合、図４に示したように、連続する２２バイトのエラーは訂正できない。そこで、ｈに下限を設定し、ｈを２２バイト以上、“ランダム訂正バースト長＋イレージャ訂正バースト長”以下とするとよい。このようにすると、イレージャ訂正機能の検証がより有効に行える。なお、、ステップ７０４及び７０５の順番は逆であっても構わない。即ち、リードデータバッファ１３５に格納されたリードデータ中の第ｎ２バイト〜第（ｎ２＋ｈ−１）バイトを書き換え、その書き換え後のデータを、ＥＣＣが付された状態で、ライトデータバッファ１３９にコピーしてもよい。
【００４８】
さて、ＥＣＣエラー訂正回路１３４のイレージャ訂正機能が正常であるか否かを検証するには、主として次の３つの処理を実行すればよい。第１は、上記ｈバイトが書き換えられた（破壊された）データをロングライトコマンドの実行によりディスク１１１に書き込む処理である。第２は、上記書き換えられた位置に対応するエラー位置を指定するイレージャポインタＥＰ２を外部からのコマンドに応じてイレージャポインタメモリ１３８に設定する処理である。第３は、ディスク１１１に書き込まれた、上記ｈバイトが書き換えられたデータが正しく訂正可能かを判定するために、当該データを通常のリードコマンドの実行により読み出す処理である。
【００４９】
そこでホスト２０は、ライトデータバッファ１３９にコピーされたデータの一部（第ｎ２バイト〜第（ｎ２＋ｈ−１）バイトのｈバイト）が書き換えられると、その書き換え後のデータをディスク１１１に書き込むためのライトロングコマンドをＨＤＤ１０に発行する。ＨＤＤ１０内のＣＰＵ１４は、このライトロングコマンドを実行する（ステップ７０６）。このライトロングコマンドの実行により、ライトデータバッファ１３９に格納されている、一部（第ｎ２バイト〜第（ｎ２＋ｈ−１）バイト）が書き換えられたデータ（ライトデータ）が、そのまま（即ち、ＥＣＣが付されている状態で）、スイッチ１３Ｂを介してディスクインタフェース制御部１３２に転送される。このディスクインタフェース制御部１３２に転送されたデータは、Ｒ／Ｗチャネル１２及びヘッドＩＣ１１５を介してヘッド１１２に送られて、当該ヘッド１１２により、ディスク１１１に書き込まれる。ここでは、データ（つまり第ｎ２バイト〜第（ｎ２＋ｈ−１）バイトが書き換えられたデータ）は、トラックＴｋ上のデータセクタＳｋに書き込まれる。
【００５０】
すると、ホスト２０からＨＤＤ１０に対し、当該ＨＤＤ１０内のイレージャポインタメモリ１３８にイレージャポインタＥＰ２を設定するためのイレージャポインタ設定コマンドが発行される。ＨＤＤ１０内のＣＰＵ１４は、ホスト２０からイレージャポインタ設定コマンドを受け取ると、当該コマンドを実行する（ステップ７０７）。即ちＣＰＵ１４は、ホストインタフェース制御部１３１を介してプログラマブルイレージャポインタ生成器１３７を制御することにより、イレージャポインタ設定コマンドで指定されたイレージャポインタＥＰ２を生成させる（ステップ７０７ａ）。プログラマブルイレージャポインタ生成器１３７は、生成されたイレージャポインタＥＰ２をイレージャポインタメモリ１３８に格納する。ここでは、上記書き換えられた第ｎ２バイト〜第（ｎ２＋ｈ−１）バイトに対応する箇所をエラー位置として指定するイレージャポインタＥＰ２が生成される。例えば、図９（ｃ）に示すように、１セクタ分のデータ中の第（ｎ２＋ランダム訂正バースト長−１）バイト〜第（ｎ２＋ｈ−１）バイト（ｈ＝２８）をエラー位置として指定するイレージャポインタＥＰ２が生成される。このイレージャポインタＥＰ２は、上記書き換えられた第ｎ２バイト〜第（ｎ２＋ｈ−１）バイトのうち、ランダム訂正バースト長に相当する第ｎ２バイト〜第（ｎ２＋ランダム訂正バースト長−２）バイトを除いた部分をエラー位置として指定する。プログラマブルイレージャポインタ生成器１３７は、イレージャポインタＥＰ２をイレージャポインタメモリ１３８に格納すると、当該メモリ１３８の内容がＲ／Ｗチャネル１２からのイレージャポインタＥＰ１によって書き換えられるのを禁止する（ステップ７０７ｂ）。この禁止状態は、イレージャ訂正機能テストの終了時に解除される。
【００５１】
次に、ホスト２０からＨＤＤ１０に対し、トラックＴｋ上のデータセクタＳｋからデータを読み出すための、通常のリードコマンドが発行される。このコマンドでは、“３ｉ（３インターリーブ）＊２ｂ（２バースト）”によるランダム訂正と、“３ｉ（３インターリーブ）＊８ｂ（８バースト）”によるイレージャ訂正とが指定される。ＨＤＤ１０内のＣＰＵ１４は、ホスト２０から通常のリードコマンドを受け取ると、当該コマンドを実行する（ステップ７０８）。即ちＣＰＵ１４は、通常のリードコマンドにより指定されるトラックＴｋ上のデータセクタＳｋからのデータ読み出しを制御する。これにより、トラックＴｋ上のデータセクタＳｋからデータが読み出され、当該データはヘッドＩＣ１１５及びＲ／Ｗチャネル１２を介してＨＤＣ１３に転送される。このＨＤＣ１３に転送されたデータ（リードデータ）は、ＥＣＣが付された状態で、ディスクインタフェース制御部１３２及びスイッチ１３６を介して、ＥＣＣエラー訂正回路１３４に入力される。ここでは、上記通常のリードコマンドにより、“３ｉ＊２ｂ”によるランダム訂正と、“３ｉ＊８ｂ”によるイレージャ訂正とが指定されている。ＥＣＣエラー訂正回路１３４内のイレージャ訂正回路１３４ｂは、ＥＣＣエラー訂正回路１３４に入力されたデータに付されているＥＣＣと、イレージャポインタメモリ１３８に格納されているイレージャポインタＥＰ２とを用いて、当該データのエラーをイレージャ訂正により訂正する。イレージャポインタＥＰ２は、上記したように１セクタ分のデータ中の第（ｎ２＋ランダム訂正バースト長−１）バイト〜第（ｎ２＋ｈ−１）バイトをエラー位置として指定している。これにより、イレージャ訂正回路１３４ｂは、この位置のエラーをイレージャ訂正により訂正する。一方、ランダム訂正回路１３４ａは、イレージャポインタＥＰ２によって示されていないエラー部分、例えば上記書き換えられた第ｎ２バイト〜第（ｎ２＋ｈ−１）バイトのうちのランダム訂正バースト長に等しい先頭のデータ部分（即ち第ｎ２バイト〜第（ｎ２＋ランダム訂正バースト長−２）バイト）をランダム訂正により訂正する。このように、ＥＣＣエラー訂正回路１３４では、ランダム訂正とイレージャ訂正とを組み合わせて、リードデータのエラーが訂正される。このエラーが訂正されたデータはリードデータバッファ１３５に格納される。
【００５２】
さて、リードデータ（即ち、第ｎ２バイト〜第（ｎ２＋ｈ−１）バイトが意図的に書き換えられたデータ）のエラー訂正に成功してリードが正常に完了した場合（ステップ７０９）、ＣＰＵ１４は、ＥＣＣエラー訂正回路１３４内のランダム訂正回路１３４ａのランダム訂正機能だけでなく、ＥＣＣエラー訂正回路１３４内のイレージャ訂正回路１３４ｂのイレージャ訂正機能も正常であると判定する。この場合、ＣＰＵ１４は、ＨＤＤ１０がランダム訂正機能及びイレージャ訂正機能の両機能のテストに合格したことを示すメッセージをホスト２０に通知する（ステップ７１０）。これに対し、リードデータのエラー訂正に失敗した場合、つまりデータ読み出しに失敗した場合（ステップ７０９）、ＣＰＵ１４は、上述のデータ読み出しの再実行（即ちリードリトライ）を制御する（ステップ７１１）。このリトライ（ステップ７１１）は、データ読み出しに成功するまで（ステップ７０９）、所定のリトライ回数（例えば１０回）を超えない範囲で繰り返される（ステップ７１２）。
【００５３】
もし、所定の回数のリトライを実行しても、データ読み出しに成功しなかった場合（ステップ７１２）、ＣＰＵ１４は、ＥＣＣエラー訂正回路１３４のイレージャ訂正機能が正常に働いていないと判断する。この場合、ＣＰＵ１４は、イレージャ訂正エラーを示すエラーメッセージをホスト２０に通知する（ステップ７１３）。
【００５４】
上記実施形態においては、本発明を磁気ディスク装置（ＨＤＤ）に適用した場合について説明した。しかし本発明は、光ディスク装置、光磁気ディスク装置、磁気テープ装置など、記録媒体を対象とするデータの記録再生が可能な記録再生装置全般に適用することができる。
【００５５】
なお、本発明は、上記実施形態に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で種々に変形することが可能である。更に、上記実施形態には種々の段階の発明が含まれており、開示される複数の構成要件における適宜な組み合わせにより種々の発明が抽出され得る。例えば、実施形態に示される全構成要件から幾つかの構成要件が削除されても、発明が解決しようとする課題の欄で述べた課題が解決でき、発明の効果の欄で述べられている効果が得られる場合には、この構成要件が削除された構成が発明として抽出され得る。
【００５６】
【発明の効果】
以上詳述したように本発明によれば、イレージャ訂正に必要な、エラー位置を示すポインタ情報を、記録媒体から読み出されるデータに依存せずに任意に設定できるため、イレージャ訂正機能を容易に検証できる。
【図面の簡単な説明】
【図１】本発明の一実施形態に係る磁気ディスク装置の構成を示すブロック図。
【図２】図１中のＲ／Ｗチャネル１２の構成を示すブロック図。
【図３】図１中のＨＤＣ１３の構成を示すブロック図。
【図４】イレージャ訂正の効果の具体例を説明するための図。
【図５】エラー訂正機能の検証に用いるデータセクタを選択する処理を説明するためのフローチャート。
【図６】ランダム訂正機能テストを説明するためのフローチャート。
【図７】イレージャ訂正機能テストを説明するためのフローチャートの一部を示す図。
【図８】イレージャ訂正機能テストを説明するためのフローチャートの残りを示す図。
【図９】ランダム訂正機能テスト用のデータを生成するために書き換えられる箇所、イレージャ訂正機能テスト用のデータを生成するために書き換えられる箇所、及びイレージャ訂正機能テストのために生成されるイレージャポインタＥＰ２の示すエラー位置を説明するための図。
【符号の説明】
１０…ＨＤＤ（磁気ディスク装置、記録再生装置）、１２…Ｒ／Ｗチャネル、１２Ａ…エラー位置検出器、１２Ｂ…イレージャポインタ生成器、１３…ＨＤＣ（ディスクコントローラ、記録再生制御装置）、１４…ＣＰＵ、２０…ホスト、１１１…ディスク（記録媒体）、１３１…ホストインタフェース制御部、１３２…ディスクインタフェース制御部、１３４…ＥＣＣエラー訂正回路、１３４ａ…ランダム訂正回路、１３４ｂ…イレージャ訂正回路、１３５…リードデータバッファ、１３６，１３Ｂ…スイッチ、１３７…プログラマブルイレージャポインタ生成器、１３８…イレージャポインタメモリ、１３９…ライトデータバッファ、１３Ａ…ＥＣＣ生成器（誤り訂正符号生成器）。
【図１】
2004213765.tif 000003
【図２】
2004213765.tif 000004
【図３】
2004213765.tif 000005
【図４】
2004213765.tif 000006
【図５】
2004213765.tif 000007
【図６】
2004213765.tif 000008
【図７】
2004213765.tif 000009
【図８】
2004213765.tif 000010
【図９】
2004213765.tif 000011