(57)【要約】【課題】本発明の目的は冗長セクタの誤り訂正情報が書き換えられていない場合に、セクタ単位で発生したエラーが無効な誤り訂正情報でエラー訂正されることを確実に回避する記憶装置の制御方法を提供することである。【解決手段】  上記課題を解決するため、複数のセクタからなる複数のグループと、該セクタに記憶されたデータの誤り訂正を該グループ単位で行うための誤り訂正情報を記憶する冗長セクタとを備えた記憶媒体に対してデータの書き込みを行う記憶装置の制御方法において、該セクタのデータを書き換え、該データが書き換えられた該セクタの属する該グループの該冗長セクタの該誤り訂正情報が書き換えられていない場合は該冗長セクタに該誤り訂正情報が無効であることを示す無効化データを書き込むことを特徴とする。【選択図】図５
2010061705.tif 000002
【特許請求の範囲】
【請求項１】
複数のセクタからなる複数のグループと、該セクタに記憶されたデータの誤り訂正を該グループ単位で行うための誤り訂正情報を記憶する冗長セクタとを備えた記憶媒体に対してデータの書き込みを行う記憶装置の制御方法において、
該セクタのデータを書き換え、
該データが書き換えられた該セクタの属する該グループの該冗長セクタの該誤り訂正情報が書き換えられていない場合は該冗長セクタに該誤り訂正情報が無効であることを示す無効化データを書き込むことを特徴とする記憶装置の制御方法。
【請求項２】
該セクタのデータは圧縮して該記憶媒体に書き込まれ、該データの圧縮率はデータ変換パターンに応じて変更され、該データの書き込み時と異なる圧縮率で該データを読み出すことにより読み出しエラーとなる場合に、
該セクタのデータと異なるデータ変換パターンで圧縮された該無効化データを該冗長セクタに書き込むことを特徴とする、請求項１に記載の記憶装置の制御方法。
【請求項３】
冗長セクタ内の該無効化データの値はすべて同じ値であることを特徴とする、請求項１に記載の記憶装置の制御方法。
【請求項４】
複数のセクタからなる複数のグループと、該セクタ内に記憶されたデータの誤り訂正を該グループ単位で行うための誤り訂正情報を記憶する冗長セクタとを備えた記憶媒体に対してデータの書き込みを行う記憶装置において、
該グループごとの該複数のセクタに記憶されたデータを用いて該誤り訂正情報を生成する冗長演算部と、
該セクタのデータを書き換え、該データが書き換えられた該セクタが属する該グループの該冗長セクタの該誤り訂正情報が書き換えられていない場合は該冗長セクタに該誤り訂正情報を無効であることを示す無効化データを書き込む制御部と
を有する記憶装置。
【請求項５】
該制御部は、セクタのデータ読み出し時にエラーが検出された場合に該セクタが属するグループの冗長データを読み出し、該無効化データであれば該グループの該誤り訂正情報を使用しないことを特徴とする、請求項４に記載の記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データのエラー訂正を行うための冗長セクタを有する記憶装置の制御方法および記憶装置に関する。
【背景技術】
【０００２】
大容量のデータを記憶する記憶装置が多様な用途で利用されている。この種の記憶装置として典型的なものは磁気ディスク装置であり、また光ディスク装置やダイナミックランダムアクセスメモリ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ：ＤＲＡＭ）などもこの範疇に入る。
【０００３】
記憶装置はセントラルプロセッシングユニット（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ：ＣＰＵ）などの上位装置からの指令によりデータの書き込みまたは読み出しを行う。記憶装置へのデータの書き込みにおいて、エラーコレクトコード（Ｅｒｒｏｒ
Ｃｏｒｒｅｃｔ  Ｃｏｄｅ：ＥＣＣ）が所定のデータ長を有するセクタごとに付加されて記憶装置に記憶される。データの読み出し時においてＥＣＣを用いることにより記憶装置はセクタ単位でのエラー訂正を行うことが出来る。上位装置からのデータが書き込まれるセクタをデータセクタとする。
【０００４】
データセクタで発生したエラー長がＥＣＣ長よりも長い場合、記憶装置はＥＣＣによりデータセクタのエラー訂正をすることができない。このようなデータセクタのエラーを訂正するためデータセクタと同一データ長を有する冗長セクタが用いられる。冗長セクタはデータセクタのエラーを訂正するための誤り訂正情報を記憶する。誤り訂正情報は１つのグループを構成する複数のデータセクタのうちのいずれかで発生したエラーの訂正に用いられる。冗長セクタはグループ中の全てのデータセクタのデータについてビット位置ごとに論理演算を行った結果を誤り訂正情報として記憶する。
【０００５】
グループ中の一部のデータセクタにデータの書き込みがされた場合、このグループに対応する冗長セクタの誤り訂正情報は書き込み後のグループ内のすべてのデータセクタから再計算する必要がある。しかし処理の優先度により誤り訂正情報の再計算がすぐに実行されない場合がある。再計算していない誤り訂正情報はデータセクタを正しくエラー訂正できない無効な誤り訂正情報である。このような無効な誤り訂正情報によるエラー訂正処理を回避するため、以下の特許文献には各グループに対応する冗長セクタの有効または無効を記録するテーブルを設ける技術が開示されている。このようなテーブルをエラー訂正時に参照することにより誤ったエラー訂正処理を回避することが出来る。
【０００６】
テーブルは記憶装置内の記憶媒体に記憶される。記憶媒体でデータ破壊などがおこることによりエラー訂正処理を行うエラー訂正部はテーブルを読み出せなくなる。テーブルが読み出せないとエラー訂正部は冗長セクタの有効性が判定できない。このためエラー訂正部は誤ったエラー訂正処理をデータセクタに対して実行する可能性がある。
【特許文献１】特開２００８−７７４５８号公報
【特許文献２】特開２００８−７７７８３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
本発明の目的は冗長セクタの誤り訂正情報が書き換えられていない場合に、セクタ単位で発生したエラーが無効な誤り訂正情報でエラー訂正されることを確実に回避する記憶装置の制御方法を提供することである。
【課題を解決するための手段】
【０００８】
上記課題を解決するため、複数のセクタからなる複数のグループと、該セクタに記憶されたデータの誤り訂正を該グループ単位で行うための誤り訂正情報を記憶する冗長セクタとを備えた記憶媒体に対してデータの書き込みを行う記憶装置の制御方法において、該セクタのデータを書き換え、該データが書き換えられた該セクタの属する該グループの該冗長セクタの該誤り訂正情報が書き換えられていない場合は該冗長セクタに該誤り訂正情報が無効であることを示す無効化データを書き込むことを特徴とする。
【発明の効果】
【０００９】
実施形態によれば、記憶装置においてセクタ単位で発生したエラーが無効な誤り訂正情報でエラー訂正されることを確実に回避することができる。また誤り訂正情報の有効または無効を記憶しておくテーブルが不要となるため、記憶領域をより有効に活用することが出来る。
【発明を実施するための最良の形態】
【００１０】
以下、本実施の形態について説明する。なお、以下の実施例はプロセッサによるプログラムの処理でも実現可能である。また本実施の形態は記憶装置としてハードディスク装置を適用しているが、本発明はこの実施形態に限定されるものではない。
[ハードディスク装置]
図１は本実施の形態に係るハードディスク装置１００の構成の一例を示すブロック図である。ハードディスク装置１００はホストインターフェース（Ｉｎｔｅｒｆａｃｅ：ＩＦ）制御部１０２、データバッファ制御部１０３、データバッファ１０４、フォーマット制御部１０５、リードチャネル（Ｒｅａｄ  Ｃｈａｎｎｅｌ：ＲＤＣ）１０６、ヘッドインテグレイティッドサーキット（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ：ＩＣ）１０７、制御部１０８、メモリ１０９、不揮発性メモリ１１０、ディスク媒体１１５、ヴォイスコイルモータ（ＶＣＭ）１１２、スピンドルモータ（ＳＰＭ）１１３、サーボ制御部１１１、ヘッド１１４、コモンバス１１６、冗長演算部１２１を有する。
【００１１】
ホストＩＦ制御部１０２はパーソナルコンピュータ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ：ＰＣ）などの上位装置１０とハードディスク装置１００とのデータのやり取りを制御する。データバッファ制御部１０３はデータバッファ１０４へのデータの書き込みやデータバッファ１０４からのデータの読み出しを制御する。データバッファ１０４は上位装置１０から送信された読み出し命令やディスク媒体１１５から読み出したデータなどを一時的に記憶する。
【００１２】
フォーマット制御部１０５は上位装置１０から書き込まれたデータにＥＣＣを付加する。またフォーマット制御部１０５はディスク媒体１１５から読み出されたデータに対し、書き込み時に付加したＥＣＣを用いてエラー訂正処理を行う。
【００１３】
ＲＤＣ１０６はディスク媒体１１５へ書き込まれるデータをコード変調しヘッドＩＣ１０７へ出力する。またＲＤＣ１０６はヘッドＩＣ１０７から出力される信号からデータを取り出しコード復調する。ヘッドＩＣ１０７はヘッド１１４から入力された信号を増幅しＲＤＣ１０６へ出力する。またヘッドＩＣ１０７はＲＤＣ１０６から入力された信号を増幅しヘッド１１４へ出力する。
【００１４】
制御部１０８はハードディスク装置１００の動作を統括的に制御する。制御部１０８は例えばマイクロプロセッシングユニット（Ｍｉｃｒｏ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ：ＭＰＵ）により実現される。メモリ１０９は制御部１０８で用いる制御データや制御プ
ログラムなどを一時記憶する。不揮発メモリ１１０は制御部１０８で実行するプログラムなどを記憶している。
【００１５】
ディスク媒体１１５は上位装置１０から書き込まれたデータを記憶する記憶媒体の一種である。ＶＣＭ１１２はヘッド１１４を所定の位置に移動する駆動力を発生する。ＳＰＭ１１３はディスク媒体１１５を回転させるためのモータである。サーボ制御部１１１はＶＣＭ１１２やＳＰＭ１１３の動作を制御する。コモンバス１１６はホストＩＦ制御部１０２、データバッファ制御部１０３、データバッファ１０４、フォーマット制御部１０５、ＲＤＣ１０６、ヘッドＩＣ１０７、制御部１０８、メモリ１０９、不揮発性メモリ１１０、サーボ制御部１１１に共通に接続されている。冗長演算部１２１は上位装置１０から書き込まれたデータに基づいて冗長セクタデータを生成する。冗長演算部１２１の詳細動作については後述する。
【００１６】
上位装置１０からの読み出し命令により、データはディスク媒体１１５から読み出される。読み出されたデータはヘッド１１４で電気信号に変換され、ヘッドＩＣ１０７で増幅されてＲＤＣ１０６に出力される。ＲＤＣ１０６は入力されたデータをコード復調しフォーマット制御部１０５に出力する。フォーマット制御部１０５は入力されたデータに対してＥＣＣ計算を行う。
【００１７】
ＥＣＣ計算の結果エラーの起きなかったデータはデータバッファ制御部１０３によりデータバッファ１０４に書き込まれる。一定量書き込まれたデータはデータバッファ制御部１０３により読み出される。読み出されたデータはホストＩＦ制御部１０２により上位装置１０に送られる。
【００１８】
上位装置１０からの書き込み命令により、データが上位装置１０からホストＩＦ制御部１０２に送られる。ホストＩＦ制御部１０２はデータをデータバッファ制御部１０３へ送信する。データバッファ制御部１０３は受信したデータをデータバッファ１０４に書き込む。データバッファ１０４に書き込まれたデータは、データバッファ制御部１０３によりディスク媒体１１５へデータを書き込むのに適切なタイミングで読み出される。読み出されたデータはフォーマット制御部１０５に出力される。フォーマット制御部１０５はデータからＥＣＣを生成しデータに付加しＲＤＣ１０６に送信する。ＲＤＣ１０６は受信したデータをコード変調しヘッドＩＣ１０７へ送信する。ヘッドＩＣ１０７は受信したデータを増幅し、ディスク媒体１１５に書き込む。
［冗長演算部］
図２は本実施の形態に係る冗長演算部１２１の構成の一例を示すブロック図である。冗長演算部１２１はグループごとの複数のデータセクタに記憶されたデータを用いて誤り訂正情報を生成する。冗長演算部１２１は演算結果メモリ１３１、排他的論理和（Ｅｘｃｌｕｓｉｖｅ  ＯＲ：ＸＯＲ）演算部１３２を有する。演算結果メモリ１３１はセクタサイズの容量を持ち、１セクタ分の演算結果データ１３３を保持する。
【００１９】
外部からの１セクタ分の入力データ１３４と演算結果メモリ１３１に保持された１セクタ分の演算結果データ１３３は、ＸＯＲ演算部１３２によりビット位置ごとにＸＯＲ演算される。この演算結果は新たな演算結果データ１３３として演算結果メモリ１３１に書き込まれる。すなわち、冗長演算部１２１は入力データ１３４の第Ｎビットの論理値と演算結果データ１３３の第Ｎビットの論理値とをＸＯＲ演算し、その結果を新たな演算結果データ１３３の第Ｎビットのデータとして演算結果メモリ１３１に書き込む。制御部１０８は演算結果メモリ１３１に保持された演算結果データ１３３をコモンバス１１６経由で読み出し、誤り訂正情報としてディスク媒体１１５の冗長セクタに書き込む。
［ビット演算］
図３はディスク媒体１１５に記憶された複数のグループの一つにおけるデータセクタと冗長セクタのビット配列テーブル２５０である。データセクタとは上位装置１０から書き込まれるデータを記憶するセクタである。ビット長２００は各セクタのビット長を表す。一つのグループはｍ個のデータセクタを有する。ｍは１以上の自然数である。行２１−１はビット配列テーブル２５０の１行目を表す。行２１−ｍはビット配列テーブル２５０のｍ行目を表す。行２１−１から行２１−ｍの各行は上位装置１０から書き込まれたデータを記憶するデータセクタをそれぞれ表す。行３２はデータセクタに対応する冗長セクタを表す
列２０−１はビット配列テーブル２５０の1列目を表す。各セクタのビット長はｋである。ｋは１以上の自然数である。列２０−ｋはビット配列テーブル２５０のｋ列目を表す。列２０−１から列２０−ｋの各列は各セクタのビット位置ごとの論理値を表す。ＸＯＲ演算部１３２は列２０−１から列２０−ｋまで１列ごとにデータセクタである行２１−１から行２１−ｍまでの排他的論理和を演算し、その結果を冗長セクタである行３２に書き込む。この結果行３２にはグループにおけるすべてのデータセクタの排他的論理和演算の結果が書き込まれる。
［セクタ配置］
図４は本実施の形態に係るディスク媒体上のユーザ領域におけるセクタ配置の一例を示す配置テーブル３００である。ユーザ領域とは上位装置１０がシステムを駆動するために割り当てたシステム領域以外の領域である。
【００２０】
配置テーブル３００における各要素は一定のデータ長を有するセクタを表している。一つのグループはｍ個のデータセクタを有する。ビット配列テーブル２５０の行数ｍと配置テーブル３００の列数ｍは同一個数を示す。列３０−１は配置テーブル３００の1列目を表す。列３０−ｍは配置テーブル３００のｍ列目を表す。列３０−１から列３０−ｍのそれぞれの列は上位装置１０から書き込まれたデータを記憶するデータセクタを表す。各データセクタにはそのセクタを特定するためのアドレスが割り当てられており、そのアドレスはロジカルブロックアドレス（Ｌｏｇｉｃａｌ  Ｂｌｏｃｋ  Ａｄｄｒｅｓｓ：ＬＢＡ）と呼ばれる。また列３２は冗長セクタデータが書き込まれる冗長セクタを表す。
【００２１】
行３１−１は配置テーブル３００の1行目を表す。行３１−ｎは配置テーブル３００のｎ行目を表す。ｎは１以上の自然数である。行３１−１から行３１−ｎまでの各行はディスク媒体１１５に書き込まれた個々のグループを表す。各グループはｍ個のデータセクタと１個の冗長セクタを有する。各冗長セクタデータはその冗長セクタの属するグループのデータセクタに基づいて計算される。
【００２２】
冗長セクタは以下のように用いられる。行３１−１から行３１−ｎにおける１つのグループにおいて、ＥＣＣによるエラー訂正能力を超えるエラーが発生したとする。制御部１０８は行３１−１から行３１−ｎまでの１つのグループにおけるエラーセクタを除くすべてのデータセクタのデータと、このグループに対応する冗長セクタデータとをディスク媒体１１５から読み出す。制御部１０８は読み出したデータを冗長演算部１２１に送信する。冗長演算部１２１は受信したデータの排他的論理和を演算する。この演算結果はエラーセクタにおけるエラー発生前のデータセクタのデータに等しい。制御部１０８は演算結果のデータをエラーが発生したセクタに書き込む。よって制御部１０８は冗長セクタデータを用意しておくことでＥＣＣによりエラー訂正できないセクタを復元し、エラー訂正することが出来る。
【００２３】
行３１−１から行３１−ｎのグループにおける一部のデータセクタに書き込みがあった
場合、一部のデータセクタが書き換えられたグループに対応する冗長セクタのデータはこのグループで発生したエラーの訂正に使えない無効なデータとなる。そこでこのような冗長セクタが無効であることを判定できるように以下の処理を行う。これにより無効な冗長セクタによる誤ったエラー訂正処理を確実に回避することが出来る。また冗長セクタの有効または無効を記憶しておくテーブルが不要となるため、記憶領域をより有効に活用することが出来る。
［冗長セクタの有効性判定］
ディスク媒体１１５へのデータの書き込みにおいて、冗長演算部１２１はデータの書き込みと同時にデータセクタごとの排他的論理和を計算し冗長セクタに記憶する誤り訂正情報を生成する。よって、あるグループのすべてのデータセクタが書き換えられた場合、このグループに対応する冗長セクタの誤り訂正情報も同時に再計算される。この冗長セクタの誤り訂正情報はデータセクタのエラー訂正を正しく行うことができる有効なデータとなる。
【００２４】
これに対し、グループの一部のデータセクタが書き換えられた場合、冗長演算部１２１による演算は一部のデータセクタのみを対象として行われる。あるグループに対応する誤り訂正情報はそのグループに属するすべてのデータセクタの排他的論理和を演算することにより得られる。よってグループの一部のデータセクタのみを対象として排他的論理和を計算して得られた誤り訂正情報は、エラー訂正を正しく行うことが出来ない無効なデータとなる。
【００２５】
これを有効な誤り訂正情報とするには、データ書き換え後のグループのすべてのデータセクタを用いて、改めて冗長処理部１２１による演算処理を行う必要がある。演算処理のため制御部１０８はグループのデータセクタをすべてディスク媒体１１５から読み出す。制御部１０８は読み出したすべてのデータセクタを用いて冗長処理部１２１により誤り訂正情報を生成する。制御部１０８は生成した誤り訂正情報をこのグループに対応する冗長セクタに書き込む。このような演算処理は制御部１０８への負荷が大きいため、データの書き込み処理を中断させる。このため、誤り訂正情報の再計算はグループの一部のデータセクタ書き換え後すぐに行われないことがある。
【００２６】
図５はディスク媒体１１５への書き込みがグループ全体かグループの一部かを判定するためのフローチャート図である。図５の処理により制御部１０８は冗長セクタの有効性を判定する。上位装置１０から受信した書き込み命令はメモリ１０９に保持されている。書き込み命令は書き込み対象先のＬＢＡと書き込みセクタ数との情報を有する。制御部１０８は書き込み命令から書き込み対象の先頭ＬＢＡと最終ＬＢＡとを演算する（Ｓ１０）。
【００２７】
制御部１０８は先頭ＬＢＡに基づいて、図４の配置テーブル３００からデータ書き込み対象のグループを演算する。さらにそのグループの先頭ＬＢＡおよび最終ＬＢＡを演算する（Ｓ１１）。書き込み対象の先頭ＬＢＡがグループの先頭ＬＢＡよりも大きい場合（Ｓ１２、ＹＥＳ）、制御部１０８は冗長セクタへの無効化データの書き込み処理を行う（Ｓ１５）。書き込み対象の先頭ＬＢＡがグループの先頭ＬＢＡ以下の場合（Ｓ１２、ＮＯ）、制御部１０８はさらに書き込み対象の最終ＬＢＡとグループの最終ＬＢＡとを比較する。書き込み対象の最終ＬＢＡがグループの最終ＬＢＡよりも小さい場合（Ｓ１３、ＹＥＳ）、制御部１０８はグループの一部が書き換えられ、冗長セクタの誤り訂正情報が無効になったと判定する。制御部１０８は冗長セクタの誤り訂正情報が無効と判定した場合、後述する無効化データの書き込み処理をおこなう（Ｓ１５）。
【００２８】
冗長セクタへの無効化データの書き込みにおいて、制御部１０８は現在のヘッド位置から上位装置１０からの書き込み命令に対応するセクタまでの距離と、現在のヘッド位置か
ら冗長セクタまでの距離を計算しても良い。制御部１０８は計算の結果現在のヘッド位置から近い冗長セクタに対し書き換えデータまたは無効化データを書き込む。これにより制御部１０８はデータの書き込み時におけるヘッド移動量の無駄を小さくし、データの書き込み処理をより高速に行うことが出来る。
【００２９】
書き込み対象の最終ＬＢＡがグループの最終ＬＢＡ以上の場合（Ｓ１３、ＮＯ）、制御部１０８はそのグループの全体が書き換えられ、冗長セクタの誤り訂正情報は有効であると判定する（Ｓ１４）。以上より制御部１０８はデータの書き込み段階で冗長セクタの有効または無効を判定することが出来る。なお、本実施形態においてはデータの書き込みと同時に誤り訂正情報の生成を行うため、グループの一部が書き換えられた場合のみ誤り訂正情報が無効になる。
【００３０】
データの書き込み処理後改めて誤り訂正情報の生成を行う場合、グループの一部または全部のデータセクタが書き換えられたことにより誤り訂正情報が無効であると判定しても良い。これにより誤り訂正情報の有効性判定処理を簡略化し高速化することが出来る。
［無効化データの書き込み］
図６はあるグループに対応する冗長セクタの誤り訂正情報が無効であると判定した場合にその冗長セクタに無効化データを書き込むためのフローチャート図である。
【００３１】
図５の処理によってグループの一部書き換えと判定された場合、制御部１０８はＲＤＣ１０６におけるランレングスリミテッド（Ｒｕｎ  Ｌｅｎｇｔｈ  Ｌｉｍｉｔｅｄ：ＲＬＬ）の圧縮率を変更する（Ｓ２１）。ＲＬＬとは高密度にデータを記録するために用いられる記録方式である。書き込み時と読み出し時のＲＬＬの圧縮率を変えることにより、ＲＤＣ１０６において読み出しエラーを発生させることができる。
【００３２】
制御部１０８は一部書き換えと判定されたグループに対応する冗長セクタに対し、変更後の圧縮率でデータを書き込む（Ｓ２２）。データ書き込み後、制御部１０８はＲＤＣ１０６の圧縮率を元に戻す（Ｓ２３）。データの読み出し時においてデータセクタでのエラーが検出された場合、フォーマット制御部１０５はＥＣＣによるエラー訂正処理を行う。ＥＣＣによりデータセクタのエラー訂正が出来なかった場合、制御部１０８はデータセクタのエラー訂正処理のため、データセクタに対応する冗長セクタの読み出し処理を行う（Ｓ２４）。
【００３３】
前述の通り圧縮率変更後のＲＤＣ１０６により書き込まれた冗長セクタのデータを圧縮率変更前のＲＤＣ１０６で読み出そうとすると読み出しエラーとなる。読み出しエラーとは、書き込み時のデータと同一のデータが読み出せなくなることをいう。制御部１０８は読み出しエラーの発生によりこの冗長セクタのデータを無効化データと判定することが出来る。制御部１０８は冗長データを正常に読み出せた場合（Ｓ２５、ＹＥＳ）、データセクタのエラー訂正処理を実行する（Ｓ２６）。一方制御部１０８は冗長セクタデータを正常に読み出せなかった場合（Ｓ２５、ＮＯ）、冗長セクタデータは無効化データなのでデータセクタのエラー訂正処理をすることが出来ない。よって制御部１０８は上位装置１０に対しエラー通知処理を行い、エラー訂正処理を終了する（Ｓ２７）。読み出しエラーにより冗長セクタのデータを無効化データと判定することにより、制御部１０８は読み出したデータを評価する必要がなくなるため、無効化データ判定処理を高速化することが出来る。
【００３４】
また、制御部１０８はフォーマット制御部１０５のＥＣＣ処理を止めてもよい（Ｓ２１）。制御部１０８はＥＣＣ処理を止めた状態で冗長セクタにデータを書き込む（Ｓ２２）。これにより冗長セクタにはＥＣＣの無いデータが書き込まれる。冗長セクタにデータを
書き込んだ後、制御部１０８はフォーマット制御部１０５のＥＣＣ処理を復帰させる（Ｓ２３）。ＥＣＣ処理の復帰したフォーマット制御部１０５でこの冗長セクタを読み出すと、ＥＣＣが無いために読み出しエラーとなる。読み出しエラーの発生によりこの冗長セクタのデータは無効化データであると判定することが出来る。
［特定パターンの書き込み］
図７はあるグループに対応する冗長セクタが無効であると判定した場合にその冗長セクタに特定パターンの無効化データを書き込むフローチャート図である。
【００３５】
特定パターンの無効化データはハードディスク装置１００の起動時にデータバッファ１０４に記憶される（Ｓ３０）。特定パターンは冗長セクタデータが無効であることを判定するためのパターンである。図５の処理によってグループの一部書き換えと判定された場合、制御部１０８は特定パターンを冗長セクタへ書き込む（Ｓ３１）。
【００３６】
データの読み出し時においてデータセクタでのエラーが検出された場合、フォーマット制御部１０５はＥＣＣによるエラー訂正処理を行う。ＥＣＣによりデータセクタのエラー訂正が出来なかった場合、制御部１０８はデータセクタのエラー訂正処理のため、データセクタに対応する冗長セクタの読み出し処理を行う（Ｓ３２）。
【００３７】
制御部１０８は冗長セクタを読み出すようにＲＤＣ１０６に命令する。ＲＤＣ１０６は冗長セクタの読み出し処理を実行する。読み出し処理に失敗した場合（Ｓ３３、ＮＯ）、ＲＤＣ１０６は制御部１０８にエラー通知を行う。制御部１０８は冗長セクタを用いたエラー訂正処理が出来ないため、エラー通知信号を上位装置１０へ送信する（Ｓ３５）。一方、読み出し処理に成功した場合（Ｓ３３、ＹＥＳ）、ＲＤＣ１０６は読み出した冗長セクタのデータをメモリ１０９へ送る。
【００３８】
制御部１０８はメモリ１０９に一時記憶された冗長セクタデータとデータバッファ１０４に記憶された特定パターンとを比較する。比較の結果データが特定パターンである場合（Ｓ３４、ＹＥＳ）、制御部１０８は上位装置１０へエラー通知信号を送信する。一方、比較の結果メモリ１０９に一時記憶されたデータが特定パターンで無い場合（Ｓ３４、ＮＯ）、制御部１０８はメモリ１０９に一時記憶された冗長セクタデータを用いてエラー訂正処理を実行する（Ｓ３６）。
【００３９】
特定パターンはディスク媒体１１５のシステム領域に記憶させることもできる。これによりハードディスク装置１００の出荷後に特定パターンをユーザ自身で書き換えることが出来る。制御部１０８はセクタのデータ長の乱数を生成し、これを特定データとしてシステム領域に記憶させることも出来る。また、すべてのビット位置の論理値が同じ値、例えば０または１であるデータを特定パターンとすることもできる。このような単純なビット配列を特定パターンとした場合、有効な冗長セクタのビット配列を無効と判定する可能性がある。しかし誤り訂正情報のすべてのビット位置の論理値がすべて同じになる可能性は低いため、有効な冗長セクタであっても無効なものとして処理する。これにより判定処理が複雑になり処理時間が長くなることを回避することが出来る。
【００４０】
以上の処理はメモリ１０９等に記憶されたプログラムを制御部１０８で実行することによっても実現可能である。プログラムはコンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、半導体メモリなどがある。
【００４１】
また、実施例では記憶媒体が装置内部に固定的に搭載される磁気ディスク装置について説明したが、複数のセクタからなる複数のグループと、セクタ内に記憶されたデータの誤
り訂正をグループ単位で行うための誤り訂正情報を記憶する冗長セクタとを備えた記憶媒体を搭載可能な記憶装置についても同様に制御部や制御方法を構成することが出来る。このような記憶装置は、該記憶媒体が該記憶装置に搭載時に、該グループごとの該複数のセクタに記憶されたデータを用いて該誤り訂正情報を生成する冗長演算部と、該記憶媒体が該記憶装置に搭載時に、該セクタのデータを書き換え、該データが書き換えられた該セクタが属する該グループの該冗長セクタの該誤り訂正情報が書き換えられていない場合は該冗長セクタに該誤り訂正情報を無効であることを示す無効化データを書き込む制御部とを有する。記憶媒体を搭載または取り外しできる記憶装置として、光ディスク装置、光磁気ディスク装置などがある。
【図面の簡単な説明】
【００４２】
【図１】ハードディスク装置の構成の一例を示すブロック図
【図２】冗長演算部の構成の一例を示すブロック図
【図３】データセクタおよび冗長セクタのビット配列図
【図４】ディスク媒体上のユーザ領域におけるセクタ配置テーブル
【図５】冗長セクタの有効性を判定するフローチャート図
【図６】冗長セクタに無効化データを書き込むフローチャート図
【図７】冗長セクタに特定データを書き込むフローチャート図
【符号の説明】
【００４３】
１０  上位装置
１００  ハードディスク装置
１０２  ホストＩＦ制御部
１０３  データバッファ制御部
１０４  データバッファ
１０５  フォーマット制御部
１０６  ＲＤＣ
１０７  ヘッドＩＣ
１０８  制御部
１０９  メモリ
１１０  不揮発メモリ
１１１  サーボ制御部
１１２  ＶＣＭ
１１３  ＳＰＭ
１１４  ヘッド
１１５  ディスク媒体
１１６  コモンバス
１２１  冗長演算部
１３１  演算結果メモリ
１３２  ＸＯＲ演算部
１３３  演算結果データ
１３４  入力データ
【図１】
2010061705.tif 000003
【図２】
2010061705.tif 000004
【図３】
2010061705.tif 000005
【図４】
2010061705.tif 000006
【図５】
2010061705.tif 000007
【図６】
2010061705.tif 000008
【図７】
2010061705.tif 000009