(57)【要約】【課題】上位装置への応答時間の増加を抑えつつ、エラーリカバリ能力を向上させる記憶装置、記憶データ処理装置、記憶データ処理プログラムを提供する。【解決手段】記憶媒体において第２ブロック毎に、第２ブロックに対応する第３ブロックが有効か無効かの情報を含む管理情報を記憶する管理情報記憶部と、管理情報記憶部に記憶された管理情報において、更新対象として指定された第２ブロックに対応する第３ブロックが無効である場合、更新対象中の全ての第１ブロックのデータについてビット位置毎の演算を行い、演算の結果を演算データとして出力する演算部と、演算部により出力された演算データを、更新対象に対応付けられた第３ブロックへ書き込み、管理情報記憶部に記憶された管理情報において第３ブロックを有効とする書き込み部とを備えた。【選択図】図１
2008077458.tif 000002
【特許請求の範囲】
【請求項１】
所定のデータ長の第１ブロックを単位としてデータが配置され、且つ複数の前記第１ブロックで構成される第２ブロックを単位として前記第１ブロックが配置され、且つ前記第２ブロックに対応して前記第１ブロック長を持つ第３ブロックが配置される記憶媒体に対して少なくとも書き込み処理を行う記憶装置に用いられる記憶データ処理装置において、
前記第２ブロック毎に、該第２ブロックに対応する第３ブロックが有効か無効かの情報を含む管理情報を記憶する管理情報記憶部と、
前記管理情報記憶部に記憶された管理情報において、更新対象として指定された第２ブロックに対応する第３ブロックが無効である場合、前記更新対象中の全ての第１ブロックのデータについてビット位置毎の演算を行い、該演算の結果を演算データとして出力する演算部と、
前記演算部により出力された演算データを、前記更新対象に対応付けられた第３ブロックへ書き込み、前記管理情報記憶部に記憶された管理情報において該第３ブロックを有効とする書き込み部と
を備える記憶データ処理装置。
【請求項２】
請求項１に記載の記憶データ処理装置において、
前記演算部は、前記演算データを初期化し、前記更新対象中の各々の第１ブロックのデータを順次、前記演算の入力データとし、該入力データと前記演算データについてビット位置毎の演算を行い、該演算の結果を新たな演算データとして記憶し、該演算と該記憶を全ての前記入力データについて繰り返し、前記演算データを出力することを特徴とする記憶データ処理装置。
【請求項３】
請求項１または請求項２に記載の記憶データ処理装置において、
更に、読み出し対象として指定された第１ブロックからデータを読み出し、該データの読み出しに失敗した場合、前記読み出しに失敗した第１ブロックをエラーブロックとし、前記管理情報記憶部に記憶された管理情報において前記読み出し対象を含む第２ブロックに対応する第３ブロックが有効である場合、該第２ブロック中の該エラーブロック以外の全ての第１ブロックのデータである正常データを読み出し、該第２ブロックに対応する第３ブロックのデータである冗長データを読み出す読み出し部を備え、
前記演算部は更に、前記正常データと前記冗長データについてビット位置毎の演算を行い、該演算の結果を前記エラーブロックのデータとして出力することを特徴とする記憶データ処理装置。
【請求項４】
請求項３に記載の記憶データ処理装置において、
前記演算部は、前記演算データを初期化し、各々の前記正常データと前記冗長データを順次、前記演算の入力データとし、該入力データと前記演算データについてビット位置毎の演算を行い、該演算の結果を新たな演算データとして記憶し、該演算と該記憶を全ての前記入力データについて繰り返し、前記演算データを出力することを特徴とする記憶データ処理装置。
【請求項５】
記憶装置における記憶データ処理をコンピュータに実行させる記憶データ処理プログラムにおいて、
所定のデータ長の第１ブロックを単位としてデータが配置され、且つ複数の前記第１ブロックで構成される第２ブロックを単位として前記第１ブロックが配置され、且つ前記第２ブロックに対応して前記第１ブロック長を持つ第３ブロックが配置される記憶媒体について、前記第２ブロック毎に、該第２ブロックに対応する第３ブロックが有効か無効かの情報を含む管理情報を記憶する管理情報記憶ステップと、
前記管理情報記憶ステップにより記憶された管理情報において、更新対象として指定された第２ブロックに対応する第３ブロックが無効である場合、前記更新対象中の全ての第１ブロックのデータについてビット位置毎の演算を行い、該演算の結果を演算データとして出力する演算ステップと、
前記演算ステップにより出力された演算データを、前記更新対象に対応付けられた第３ブロックへ書き込み、前記管理情報記憶ステップにより記憶された管理情報において該第３ブロックを有効とする書き込みステップと
をコンピュータに実行させる記憶データ処理プログラム。
【請求項６】
所定のデータ長の第１ブロックを単位としてデータが配置され、且つ複数の前記第１ブロックで構成される第２ブロックを単位として前記第１ブロックが配置され、且つ前記第２ブロックに対応して前記第１ブロック長を持つ第３ブロックが配置される記憶媒体に対して少なくとも書き込み処理を行う記憶装置において、
前記第２ブロック毎に、該第２ブロックに対応する第３ブロックが有効か無効かの情報を含む管理情報を記憶する管理情報記憶部と、
前記管理情報記憶部に記憶された管理情報において、更新対象として指定された第２ブロックに対応する第３ブロックが無効である場合、前記更新対象中の全ての第１ブロックのデータについてビット位置毎の演算を行い、該演算の結果を演算データとして出力する演算部と、
前記演算部により出力された演算データを、前記更新対象に対応付けられた第３ブロックへ書き込み、前記管理情報記憶部に記憶された管理情報において該第３ブロックを有効とする書き込み部と
を備える記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、読み出しエラーのリカバリを行う記憶装置、それに用いられる記憶データ処理装置、記憶データ処理プログラムに関するものである。
【背景技術】
【０００２】
近年、ハードディスク装置（ＨＤＤ：Hard Disk Drive）の記録容量は増加の傾向にあり、一つのハードディスク装置で２００ＧＢ以上の容量を保有するようになってきている。これに伴い、一つのセクタが読み出しエラーとなった場合の被害は大きくなっている。特にハードディスク装置内のデータ管理に関するディレクトリ情報が記録されている箇所に該当するセクタが一つ読み出しエラーとなった場合などにおいては、被害を受けるデータが更に膨大になる。また、この深刻度は容量が増すほど増える。
【０００３】
従来、このようなハードディスク装置固有の障害を避ける手段として、ハードディスク装置をアレイとして構築するシステムが用意されている。このシステムにおいては、読み出しエラーになったドライブが存在しても、冗長度を高めるために配置されている他のハードディスク装置のデータを使ってリカバリする。ハードディスク装置単体でのエラーへの耐久性を高める方法としては、ＥＣＣ（Error Correcting Code）をセクタ内の情報に付加する方式がとられている。ここで、ディスク媒体上の各セクタは、ＳＢ（ｓｙｎｃｂｙｔｅ）、ＤＡＴＡ、ＥＣＣで構成されている。
【０００４】
ここで、或るセクタで読み出しエラーが発生した場合を想定する。このとき、ハードディスク装置内のデータバッファには、読み出しを開始した時点のセクタのデータから読み出しエラーが起きたセクタの手前のセクタまでのデータが保持されている。そして、読み出しエラーが起きたセクタのデータ読み出しがリトライでも成功しない場合、ハードディスク装置は、有効なデータをデータバッファに取り込めないために上位装置におくることができず、最終的にデータのリカバリ処理に失敗すると、上位装置に対して読み出しエラーを通知し、終了していた。
【０００５】
なお、本発明の関連ある従来技術として、トラックサイズ分のバッファを用意し、トラック単位でのデータチェック処理を行うファイル制御装置がある（例えば、特許文献１参照）。また、セクタ毎にＬＤＣ（Long Distance Code）のパリティを付加し、所定のセクタ数毎にパリティセクタデータを付加し、所定のセクタ毎にパリティセクタデータを算出し、再生時にＬＤＣのパリティによる訂正が不能となった場合にパリティセクタデータを用いて訂正を行うデータ記録方法がある（例えば、特許文献２参照）。
【特許文献１】特開平５−３５４１６号公報
【特許文献２】特開平８−１２４３１８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
ＥＣＣによる訂正能力そのものは緩やかに向上してきてはいるが、新しいデータ訂正方式などは採用されておらず、近年は同じ技術が用いられ続けている。しかしながら、ハードディスク装置単体の記録容量が増加する傾向にある中で、従来のＥＣＣによるデータ訂正能力では、相対的にデータ喪失の危険が増してきていると言える。
【０００７】
また、上述したように従来のハードディスク装置において、ＥＣＣで訂正できない場合に、エラーを上位装置に対して通知し、終了する、という仕組みはディスク装置の誕生以来ほとんど変わってない。
【０００８】
また、特許文献１のような技術は、書き込み処理を行うたびにトラック分のデータを読み出さなければならず、コマンドの処理時間が約２倍に増加し、性能が低下するため、現実的に使用することは困難である。また、特許文献２のような技術は、上位装置から書き込みデータを受領したときに冗長データを用意しなければならず、性能が低下するため、現実的に使用することは困難である。
【０００９】
本発明は上述した問題点を解決するためになされたものであり、エラーリカバリ能力を向上させる記憶装置、それに用いられる記憶データ処理装置、記憶データ処理プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１０】
上述した課題を解決するため、本発明は、所定のデータ長の第１ブロックを単位としてデータが配置され、且つ複数の前記第１ブロックで構成される第２ブロックを単位として前記第１ブロックが配置され、且つ前記第２ブロックに対応して前記第１ブロック長を持つ第３ブロックが配置される記憶媒体に対して少なくとも書き込み処理を行う記憶装置に用いられる記憶データ処理装置において、前記第２ブロック毎に、該第２ブロックに対応する第３ブロックが有効か無効かの情報を含む管理情報を記憶する管理情報記憶部と、前記管理情報記憶部に記憶された管理情報において、更新対象として指定された第２ブロックに対応する第３ブロックが無効である場合、前記更新対象中の全ての第１ブロックのデータについてビット位置毎の演算を行い、該演算の結果を演算データとして出力する演算部と、前記演算部により出力された演算データを、前記更新対象に対応付けられた第３ブロックへ書き込み、前記管理情報記憶部に記憶された管理情報において該第３ブロックを有効とする書き込み部とを備えたものである。
【００１１】
また、本発明に係る記憶データ処理装置において、前記演算部は、前記演算データを初期化し、前記更新対象中の各々の第１ブロックのデータを順次、前記演算の入力データとし、該入力データと前記演算データについてビット位置毎の演算を行い、該演算の結果を新たな演算データとして記憶し、該演算と該記憶を全ての前記入力データについて繰り返し、前記演算データを出力することを特徴とする。
【００１２】
また、本発明に係る記憶データ処理装置において、更に、読み出し対象として指定された第１ブロックからデータを読み出し、該データの読み出しに失敗した場合、前記読み出しに失敗した第１ブロックをエラーブロックとし、前記管理情報記憶部に記憶された管理情報において前記読み出し対象を含む第２ブロックに対応する第３ブロックが有効である場合、該第２ブロック中の該エラーブロック以外の全ての第１ブロックのデータである正常データを読み出し、該第２ブロックに対応する第３ブロックのデータである冗長データを読み出す読み出し部を備え、前記演算部は更に、前記正常データと前記冗長データについてビット位置毎の演算を行い、該演算の結果を前記エラーブロックのデータとして出力することを特徴とする。
【００１３】
また、本発明に係る記憶データ処理装置において、前記演算部は、前記演算データを初期化し、各々の前記正常データと前記冗長データを順次、前記演算の入力データとし、該入力データと前記演算データについてビット位置毎の演算を行い、該演算の結果を新たな演算データとして記憶し、該演算と該記憶を全ての前記入力データについて繰り返し、前記演算データを出力することを特徴とする。
【００１４】
また、本発明に係る記憶データ処理装置において、前記書き込み部は、外部装置からのデータ書き込み指示を受けた場合、前記データ書き込み命令によるデータ書き込み対象を含む第２ブロックに対応する第３ブロックについて、前記管理情報記憶部に記憶された管理情報において該第３ブロックを有効とすることを特徴とする。
【００１５】
また、本発明に係る記憶データ処理装置において、前記演算部は、外部装置からのデータ読み出し指示またはデータ書き込み指示による処理を行っていないときに、前記管理情報記憶部に記憶された管理情報において無効である第３ブロックに対応する第２ブロックについて前記演算を行うことを特徴とする。
【００１６】
また、本発明に係る記憶データ処理装置において、前記管理情報記憶部は、不揮発性メモリであることを特徴とする。
【００１７】
また、本発明に係る記憶データ処理装置において、前記管理情報記憶部は、外部装置からライトキャッシュデータを前記記憶媒体上に書き込む指示、またはヘッドを退避させる指示を受領した場合、前記管理情報を前記記憶媒体に書き込むことを特徴とする。
【００１８】
また、本発明に係る記憶データ処理装置において、前記管理情報は、前記第２ブロック毎に、該第２ブロックに含まれる複数の第１ブロックの指定を含むことを特徴とする。
【００１９】
また、本発明に係る記憶データ処理装置において、前記管理情報は、前記第２ブロック毎に、該第２ブロックに含まれる複数の第１ブロックの指定を含み、前記書き込み部は、前記管理情報に基づいて前記第２ブロックを前記記憶媒体に配置することを特徴とする。
【００２０】
また、本発明に係る記憶データ処理装置において、前記管理情報記憶部は、外部装置から各々の第２ブロックへのアクセス頻度に基づいて第２ブロックに含まれる複数の第１ブロックの数を決定し、前記管理情報に含めることを特徴とする。
【００２１】
また、本発明に係る記憶データ処理装置において、前記演算部による演算は、順次演算を行う順序を変えても演算結果が変わらない演算であることを特徴とする。
【００２２】
また、本発明に係る記憶データ処理装置において、前記演算部による演算は、排他的論理和であることを特徴とする。
【００２３】
また、本発明に係る記憶データ処理装置において、前記第１ブロックは、少なくとも１つのセクタであり、前記第３ブロックは、前記第１ブロック長を持ち、前記演算データは、前記第１ブロック長を持つことを特徴とする。
【００２４】
また、本発明は、記憶装置における記憶データ処理をコンピュータに実行させる記憶データ処理プログラムにおいて、所定のデータ長の第１ブロックを単位としてデータが配置され、且つ複数の前記第１ブロックで構成される第２ブロックを単位として前記第１ブロックが配置され、且つ前記第２ブロックに対応して前記第１ブロック長を持つ第３ブロックが配置される記憶媒体について、前記第２ブロック毎に、該第２ブロックに対応する第３ブロックが有効か無効かの情報を含む管理情報を記憶する管理情報記憶ステップと、前記管理情報記憶ステップにより記憶された管理情報において、更新対象として指定された第２ブロックに対応する第３ブロックが無効である場合、前記更新対象中の全ての第１ブロックのデータについてビット位置毎の演算を行い、該演算の結果を演算データとして出力する演算ステップと、前記演算ステップにより出力された演算データを、前記更新対象に対応付けられた第３ブロックへ書き込み、前記管理情報記憶ステップにより記憶された管理情報において該第３ブロックを有効とする書き込みステップとをコンピュータに実行させるものである。
【００２５】
また、本発明は、所定のデータ長の第１ブロックを単位としてデータが配置され、且つ複数の前記第１ブロックで構成される第２ブロックを単位として前記第１ブロックが配置され、且つ前記第２ブロックに対応して前記第１ブロック長を持つ第３ブロックが配置される記憶媒体に対して少なくとも書き込み処理を行う記憶装置において、前記第２ブロック毎に、該第２ブロックに対応する第３ブロックが有効か無効かの情報を含む管理情報を記憶する管理情報記憶部と、前記管理情報記憶部に記憶された管理情報において、更新対象として指定された第２ブロックに対応する第３ブロックが無効である場合、前記更新対象中の全ての第１ブロックのデータについてビット位置毎の演算を行い、該演算の結果を演算データとして出力する演算部と、前記演算部により出力された演算データを、前記更新対象に対応付けられた第３ブロックへ書き込み、前記管理情報記憶部に記憶された管理情報において該第３ブロックを有効とする書き込み部とを備えたものである。
【発明の効果】
【００２６】
本発明によれば、エラーリカバリ能力を向上させて、高密度記録化に伴うデータ記憶の信頼性が高い記憶装置、それに用いられる記憶データ処理装置、記憶データ処理プログラムを提供することができる。
【発明を実施するための最良の形態】
【００２７】
以下、本発明の実施の形態について図面を参照しつつ説明する。
【００２８】
実施の形態１．
本実施の形態においては、本発明の記憶データ処理装置及び記憶装置をハードディスク装置に適用した例について説明する。
【００２９】
まず、本実施の形態に係るハードディスク装置の構成について説明する。
【００３０】
図１は、本実施の形態に係るハードディスク装置の構成の一例を示すブロック図である。
【００３１】
次に、従来のハードディスク装置について説明する。このハードディスク装置は、外部と接続するためのホストＩＦ（Interface）を制御するホストＩＦ制御部２、データバッファ制御部３、データバッファ４、フォーマット制御部５、リードチャネル６、ヘッドＩＣ（Integrated Circuit）７、ハードディスク装置の制御用のＭＰＵ（Micro Processing Unit）８、制御用のデータおよび制御用プログラムを格納するメモリ９、制御用プログラムを格納する不揮発性メモリ（ＦＲＯＭ）１０、スピンドルモータ（ＳＰＭ）やヴォイスコイルモータ（ＶＣＭ）の動作を制御するサーボ制御部１１、ヘッドアクチュエータを実際に動かすＶＣＭ１２、ディスクを回転させるＳＰＭ１３、Ｒｅａｄ／Ｗｒｉｔｅ用のヘッド１４、ディスク媒体１５、内部のコモンバス１６、冗長演算部２１を備える。
【００３２】
また、ハードディスク装置は、ホストＩＦ制御部２に接続されるホストＩＦを介して、ＰＣ（Personal Computer）等の上位装置（外部装置）に接続される。ホストＩＦ制御部２、データバッファ制御部３、データバッファ４、フォーマット制御部５、リードチャネル６、ヘッドＩＣ７、ＭＰＵ８、メモリ９、不揮発性メモリ１０、サーボ制御部１１は、コモンバス１６により接続されている。
【００３３】
ハードディスク装置から上位装置へのデータの読み出しにおいて、上位装置からの読み出し命令に従って、データはディスク媒体１５から読み出され、ヘッド１４、およびヘッドＩＣ７を経由してリードチャネル６に送られる。さらに、そのデータは、フォーマット制御部５を経由してＥＣＣ計算が行われ、エラーの起きなかったデータだけが、データバッファ制御部３を経由してデータバッファ４にいったん保持される。そして、再びデータバッファ制御部３およびホストＩＦ制御部２を経由して上位装置に送られる。
【００３４】
また、上位装置からハードディスク装置へのデータの書き込みにおいて、上位装置から書き込み命令として送られたデータは、ホストＩＦ制御部２を経由し、データバッファ制御部３を経由して、いったんデータバッファ４に取り込まれる。さらに、そのデータは、書き込みを実施するのに適当なタイミングで、再びデータバッファ制御部３を経由し、フォーマット制御部５、リードチャネル６、ヘッドＩＣ７を経由してディスク媒体１５に書き込まれる。
【００３５】
図２は、本実施の形態に係る冗長演算部の構成の一例を示すブロック図である。冗長演算部２１は、演算結果メモリ３１、ＸＯＲ（Exclusive OR：排他的論理和）演算部３２を備える。演算結果メモリ３１は、セクタサイズの容量を持ち、１セクタ分の演算結果データ（演算データ）を保持する。外部からの１セクタ分の入力データと演算結果メモリ３１に保持された１セクタ分の演算結果データは、ＸＯＲ演算部３２によりビット位置毎のＸＯＲ演算が行われる。この演算結果は、新たな演算結果データとして演算結果メモリ３１に保持される。また、ＭＰＵ８は、演算結果メモリ３１に保持された演算結果データを、コモンバス１６を介して読み出し、冗長セクタデータとすることができる。
【００３６】
次に、ディスク媒体１５上のユーザ領域におけるセクタ配置について説明する。
【００３７】
図３は、本実施の形態に係るディスク媒体上のユーザ領域におけるセクタ配置の一例を示す配置図である。この図は、通常のユーザデータが書き込まれる通常セクタと冗長セクタデータが書き込まれる冗長セクタの配置を示す。また、この図における１つの要素は、１つのセクタを表す。また、この図は、区分を区分番号で表し、通常セクタをＬＢＡ（Logical Block Address）で表し、冗長セクタを対応する区分番号で表す。ここでは、連続するｍ個のＬＢＡを持つ通常セクタが１つの区分とされ、この図において１つの区分は１つの行で表されている。また、ユーザ領域全体は、ｎ個の区分に分けられている。また、区分毎に、その区分のユーザデータに基づく冗長セクタデータを書き込むための１つの冗長セクタが挿入される。つまり、ｊ番目の区分ＬＢＡ（ｊｉ）〜ＬＢＡ（（ｊ＋１）ｉ−１）を持つユーザデータに対して１つの冗長セクタデータ（ｊ）が生成され、挿入される（ｉ＝０，１，…ｍ−１）（ｊ＝０，１，…ｎ−１）。
【００３８】
次に、本実施の形態に係るハードディスク装置の動作について説明する。
【００３９】
まず、ディスク媒体１５に書き込まれているユーザデータから冗長セクタデータを生成し、冗長セクタデータの書き込みを行う冗長セクタデータ更新処理について説明する。
【００４０】
冗長セクタデータ更新処理は、上位装置からの更新指示を受けた場合、または、上位装置からのアクセスがない期間（ＭＰＵ８の空き時間）が閾値を超えた場合に実行される。図４は、本実施の形態に係る冗長セクタデータ更新処理の動作の一例を示すフローチャートである。まず、ＭＰＵ８は、ユーザ領域の全てを更新範囲として設定する（Ｓ１２）。次に、ＭＰＵ８は、更新範囲において区分毎に冗長セクタデータ生成処理を行い（Ｓ１３）、生成した１つの冗長セクタデータをディスク媒体１５に書き込む単一冗長セクタデータ書き込み処理を行う（Ｓ１４）。次に、ＭＰＵ８は、更新範囲の全ての区分の冗長セクタデータを更新したか否かの判断を行い、全てを更新していない場合（Ｓ１７，Ｎ）、処理Ｓ１３へ戻り、全てを更新した場合（Ｓ１７，Ｙ）、このフローは終了する。
【００４１】
次に、処理Ｓ１３の冗長セクタデータ生成処理について説明する。
【００４２】
冗長セクタデータ生成処理は、対象の区分のユーザデータを読み出し、冗長演算部２１によりユーザデータから冗長セクタデータを生成する処理である。図５は、本実施の形態に係る冗長セクタデータ生成処理の動作の一例を示すフローチャートである。まず、ＭＰＵ８は、対象の区分の先頭ＬＢＡ及び最終ＬＢＡ、処理対象セクタ数、セクタ配置をフォーマット制御部５に設定する（Ｓ２１）。セクタ配置は、冗長セクタデータの生成に用いる通常セクタの配置を示し、読み出す通常セクタの順序を指定するものである。ここでは、上述したように対象の区分内の通常セクタは連続して配置されており、ＭＰＵ８は、連続する通常セクタを読み出すようにセクタ配置を指定する。次に、ＭＰＵ８は、冗長演算部２１の演算結果メモリ３１を初期化（０クリア）する（Ｓ２２）。次に、ＭＰＵ８は、フォーマット制御部５を起動し、対象のユーザデータを読み出させ、冗長演算部２１へ入力させる（Ｓ２３）。次に、ＭＰＵ８は、動作が終了したか否かの判断を行い、動作が終了していない場合（Ｓ２４，Ｎ）、処理Ｓ２４へ戻り、動作が終了した場合（Ｓ２４，Ｙ）、このフローは終了する。
【００４３】
次に、冗長セクタデータ生成処理中の冗長演算部２１の動作について説明する。まず、演算結果メモリ３１における１セクタ分のデータは全て０に初期化されるため、最初のユーザデータである入力データは、そのまま演算結果データとして演算結果メモリ３１に保持される。その後のユーザデータと演算結果データは、ビット位置毎にＸＯＲ演算され、演算結果データとして演算結果メモリ３１に上書きされていく。冗長セクタデータ生成処理が終了した時点で、演算結果メモリ３１に保持された演算結果データが、冗長セクタデータとなる。
【００４４】
また、最終ＬＢＡを含む区分である最終区分は、他の区分より通常セクタの数が少ない場合があるが、冗長セクタデータ生成処理において、区分内の全てのユーザデータが入力データとして入力されれば通常セクタの数に関わらず、冗長セクタデータを得ることができる。
【００４５】
次に、単一冗長セクタデータ書き込み処理について説明する。
【００４６】
図６は、本実施の形態に係る単一冗長セクタデータ書き込み処理の動作の一例を示すフローチャートである。まず、ＭＰＵ８は、演算結果メモリ３１に保持された冗長セクタデータをデータバッファ４へコピーする（Ｓ３１）。次に、ＭＰＵ８は、通常のデータバッファ４内のユーザデータをディスク媒体１５に書き込む処理と同様、データバッファ４内の冗長セクタデータをディスク媒体１５に書き込み（Ｓ３２）、このフローは終了する。
【００４７】
従来のユーザデータの書き込みと同様にして、データバッファ４からディスク媒体１５へ書き込む経路を、冗長セクタデータの書き込みに利用することにより、従来のハードディスク装置に本発明を適用することによるハードウェア規模の増加を少なくすることができる。また、第２冗長セクタデータ更新処理においても、全ての冗長セクタデータを一旦データバッファ４にコピーすることにより、全ての冗長セクタデータを連続して書き込むことができる。
【００４８】
上述したように、冗長セクタデータの更新は、上位装置からのコマンド（書き込みや読み出しなど）の受領をしていないタイミングで行うことが望ましい。ハードディスク装置において読み出し不可能なエラーセクタが発生するケースは稀であるため、上位装置からのコマンド受領タイミングまたはその直後などに冗長セクタデータの更新を行う必要性は無い。冗長セクタデータの更新の頻度が高いと、処理のオーバヘッドが増加することにより、ハードディスク装置の性能が低下してしまうためである。
【００４９】
次に、ユーザデータ読み出し処理、ディスク媒体走査処理について説明する。
【００５０】
ＭＰＵ８が上位装置から読み出し命令を受け、対象となる通常セクタの全てが正常に読み出された場合、冗長セクタデータに関する処理は必要とされず、対象のユーザデータを上位装置に送るだけでよい。一方、ユーザデータ読み出し処理において、リカバリできないセクタであるエラーセクタがあった場合、エラーセクタに書き込まれているデータであるエラーセクタデータを復元するエラーセクタデータ復元処理を行う。
【００５１】
また、ＭＰＵ８が上位装置からディスク媒体走査命令を受けた場合、ＭＰＵ８は、ディスク媒体１５上のユーザ領域における全てのセクタをユーザデータ読み出し処理と同様にして読み出し、エラーセクタの検出を行うディスク媒体走査処理を行う。このディスク媒体走査処理により、エラーセクタがあった場合、ユーザデータ読み出し処理と同様、エラーセクタデータ復元処理を行う。
【００５２】
また、所定の期間毎に、ＭＰＵ８は、ディスク媒体１５上のユーザ領域における全てのセクタをユーザデータ読み出し処理と同様にして読み出すディスク媒体走査処理を行う。このディスク媒体走査処理により、エラーセクタがあった場合、ユーザデータ読み出し処理と同様、エラーセクタデータ復元処理を行う。
【００５３】
次に、エラーセクタデータ復元処理について説明する。
【００５４】
図７は、本実施の形態に係るエラーセクタデータ復元処理の動作の一例を示すフローチャートである。まず、ＭＰＵ８は、演算結果メモリ３１を初期化し（Ｓ４４）、上述したセクタ配置に従って、ディスク媒体１５からエラーセクタが所属する区分内の通常セクタを読み出し、読み出し可能な（エラーセクタデータ以外の）ユーザデータを冗長演算部２１へ入力する（Ｓ４５）。次に、ＭＰＵ８は、その区分に対応する冗長セクタデータをディスク媒体１５から読み出し、冗長演算部２１へ入力する（Ｓ４６）。このとき、冗長演算部２１の動作により、演算結果メモリ３１における演算結果データは、エラーセクタのデータが復元されたものである復元データとなる。次に、ＭＰＵ８は、演算結果メモリ３１から復元データを読み出し、上位装置に送る（Ｓ４７）。次に、ＭＰＵ８は、エラーセクタの代わりに他の空きセクタを割り当てる交代（リアサイン）処理を行い（Ｓ４８）、このフローは終了する。
【００５５】
上述したように、対象とする区分内のエラーセクタデータ以外のユーザデータと冗長セクタデータとに対してＸＯＲ演算を行うことにより、エラーセクタデータを復元することができる。また、ＸＯＲ演算部３２は、入力データであるセクタの順序を変えても演算結果データが変わらないことから、ある区分について全ての通常セクタのユーザデータをいかなるセクタ順で入力しても、最終的な演算結果データとして冗長セクタデータを得ることができ、エラーセクタが存在数する区分についてエラーセクタデータ以外のユーザデータと冗長セクタデータとをいかなるセクタ順で入力しても、最終的な演算結果データとしてエラーセクタデータを得ることができる。また、最後の区分のように他の区分よりも通常セクタの数が少ない区分であっても、全ての通常セクタのユーザデータを用いることにより他の区分と同様に冗長セクタデータ生成処理とエラーセクタデータ復元処理を行うことができる。
【００５６】
なお、本実施の形態においては、冗長セクタデータ生成処理とエラーセクタデータ復元処理のためにＸＯＲ演算部３２を用いたが、入力データとする複数のセクタの順番を変えても演算結果が変わらない演算であれば、他の演算を用いても良い。また、本実施の形態においては、入力データと演算結果データをセクタ単位としたが、バイト単位、ワード単位など、他のデータ長を単位としても良い。
【００５７】
本実施の形態によれば、読み出しエラーが発生した場合であっても、エラーセクタのデータを復元することができるため、ディスク装置の信頼性が飛躍的に高まる。また、上位装置からの指示または空き時間に従って、冗長データセクタの更新を行うことにより、上位装置への応答時間の増加を抑えることができる。
【００５８】
実施の形態２．
本実施の形態においては、複数の冗長セクタデータをまとめて書き込むハードディスク装置について説明する。
【００５９】
本実施の形態に係るハードディスク装置の構成は、実施の形態１と同様である。
【００６０】
次に、ディスク媒体１５上のユーザ領域におけるセクタ配置について説明する。
【００６１】
図８は、本実施の形態に係るディスク媒体上のユーザ領域のセクタ配置の一例を示す配置図である。この場合、実施の形態１に示した全ての通常セクタの後に、全ての冗長セクタが連続して配置される。
【００６２】
次に、本実施の形態に係るハードディスク装置の動作について説明する。
【００６３】
実施の形態１と比較すると、本実施の形態には冗長セクタデータ更新処理が異なる。図９は、本実施の形態に係る冗長セクタデータ更新処理の動作の一例を示すフローチャートである。この図において、図４と同一符号は図４に示された対象と同一又は相当物を示しており、ここでの説明を省略する。処理Ｓ１３の後、ＭＰＵ８は、生成されたそれぞれの冗長セクタデータが重ならないように、演算結果メモリ３１に保持された冗長セクタデータを一旦データバッファ４に格納する（Ｓ１５）。次に、ＭＰＵ８は、更新範囲の全ての冗長セクタデータをデータバッファ４上に格納したか否かの判断を行う（Ｓ１８）。生成していない場合（Ｓ１８，Ｎ）、処理Ｓ１３へ戻り、生成した場合（Ｓ１８，Ｙ）、ＭＰＵ８は、データバッファ４上の全ての冗長セクタデータを一括してディスク媒体１５へ書き込み（Ｓ１９）、このフローは終了する。
【００６４】
本実施の形態によれば、複数の冗長セクタデータを連続して書き込むことができるため、冗長セクタデータの書き込み時間を短縮することができる。
【００６５】
実施の形態３．
本実施の形態においては、１つの区分にエラーセクタが２セクタ連続した場合であってもエラーセクタのデータを復元することができるハードディスク装置について説明する。
【００６６】
本実施の形態に係るハードディスク装置の構成は、実施の形態１と同様である。
【００６７】
次に、ディスク媒体１５上のユーザ領域におけるセクタ配置について説明する。
【００６８】
図１０は、本実施の形態に係るディスク媒体上のユーザ領域におけるセクタ配置の一例を示す配置図である。この図は、通常セクタと冗長セクタの配置を示す。また、この図は、区分を区分番号で表し、通常セクタをそのセクタに割り当てられたＬＢＡで表し、冗長セクタを対応する区分番号で表す。ここでは、連続する２ｍ個のＬＢＡを持つユーザデータが２つの区分に交互に配置され、区分毎に１つの冗長セクタが挿入される。
【００６９】
例えば、連続するｍ個のＬＢＡ（０）〜ＬＢＡ（ｍ−１）を持つ通常セクタのうち偶数のＬＢＡ（０），ＬＢＡ（２），…ＬＢＡ（ｍ−２）を持つｍ個の通常セクタと、次に連続するｍ個のＬＢＡ（ｍ）〜ＬＢＡ（２ｍ−１）を持つ通常セクタのうち奇数のＬＢＡ（ｍ＋１），ＬＢＡ（ｍ＋３），…ＬＢＡ（２ｍ−１）を交互に配置し、１行目として示した区分０とし、この区分０内のｍ個の通常セクタから得られる冗長セクタ０をこの区分の後に挿入する。同様に、ＬＢＡ（ｍ）〜ＬＢＡ（２ｍ−１）を持つ通常セクタのうち偶数のＬＢＡ（ｍ），ＬＢＡ（ｍ＋２），…ＬＢＡ（２ｍ−２）を持つｍ個の通常セクタと、ＬＢＡ（０）〜ＬＢＡ（ｍ−１）を持つ通常セクタのうち奇数のＬＢＡ（１），ＬＢＡ（３），…ＬＢＡ（ｍ−１）を交互に配置し、２行目として示した区分１とし、この区分１内のｍ個の通常セクタから得られる冗長セクタ１を挿入する。
【００７０】
つまり、１行目の区分０には、通常セクタＬＢＡ（０），ＬＢＡ（ｍ＋１），ＬＢＡ（２，ＬＢＡ（ｍ＋３），…ＬＢＡ（ｍ−２），ＬＢＡ（２ｍ−１）と冗長セクタ０が配置され、２行目の区分１には、通常セクタＬＢＡ（ｍ），ＬＢＡ（１），ＬＢＡ（ｍ＋２），ＬＢＡ（３），…ＬＢＡ（２ｍ−２），ＬＢＡ（ｍ−１）と冗長セクタ１が配置される。
【００７１】
次に、本実施の形態に係るハードディスク装置の動作について説明する。
【００７２】
冗長セクタデータ更新処理は、実施の形態１と同様である。
【００７３】
実施の形態１と比較すると、処理Ｓ２２におけるセクタ配置の指定が異なる。ここで、ＭＰＵ８は、セクタ配置として、上述したように２つの区分に交互に配置された通常セクタの順序を指定する。
【００７４】
このセクタ配置を用いることにより、実施の形態１と同様の冗長セクタデータ生成処理やエラーセクタデータ復元処理を行うことができ、必要な通常セクタが読み出される。
【００７５】
本実施の形態によれば、エラーセクタが２セクタ連続する場合であっても、２つの区分に１つずつエラーセクタが存在することになり、区分毎にエラーセクタデータ復元処理を行うことにより、２セクタ連続するエラーセクタを復元することができる。
【００７６】
実施の形態４．
本実施の形態においては、１つの区分にエラーセクタが２セクタ連続した場合であってもエラーセクタのデータを復元することができ、かつ処理時間を短縮することができるハードディスク装置について説明する。
【００７７】
本実施の形態に係るハードディスク装置の構成は、実施の形態１と同様であるが、冗長演算部２１において、演算結果メモリ３１は、２セクタ分の容量を持ち、ＸＯＲ演算部３２は、外部からの２セクタ分の入力データと演算結果メモリ３１に保持された２セクタ分の演算結果データに対して、ビット位置毎のＸＯＲ演算を行う。
【００７８】
次に、ディスク媒体１５上のユーザ領域におけるセクタ配置について説明する。
【００７９】
本実施の形態におけるセクタ配置は、実施の形態３と同様である。例えば、図１１に示すように、１行目の区分０には、ＬＢＡ（０），ＬＢＡ（ｍ＋１），ＬＢＡ（２），ＬＢＡ（ｍ＋３），…ＬＢＡ（ｍ−２），ＬＢＡ（２ｍ−１）と冗長セクタデータ０が配置され、２行目の区分１には、ＬＢＡ（ｍ），ＬＢＡ（１），ＬＢＡ（ｍ＋２），ＬＢＡ（３），…ＬＢＡ（２ｍ−２），ＬＢＡ（ｍ−１）と冗長セクタデータ１が配置される。
【００８０】
本実施の形態に係る冗長セクタデータ生成処理及びエラーセクタデータ復元処理において、ＭＰＵ８は、セクタ配置に従って、２セクタずつ読み出し、冗長演算部２１は、２セクタずつのＸＯＲ演算を行う。この例においては、ＬＢＡ（０），ＬＢＡ（１）の２セクタが一度に読み出され、冗長演算部２１の入力データとなる。その後、ＬＢＡ（２），ＬＢＡ（３）の２セクタ，…ＬＢＡ（ｍ−２），ＬＢＡ（ｍ−１）の２セクタがそれぞれ読み出され、冗長演算部２１の入力データとなる。最終的に演算結果データ３１には、２セクタ分の冗長セクタデータまたはエラーセクタデータが出来上がる。
【００８１】
本実施の形態によれば、エラーセクタが２セクタ連続する場合であっても、２つの区分に１つずつエラーセクタが存在することになり、区分毎にエラーセクタデータ復元処理を行うことにより、２セクタ連続するエラーセクタを復元することができる。更に、２セクタ分の演算結果メモリ３１と２セクタ分のＸＯＲ演算部３２を用いることにより、冗長セクタデータ生成処理及びエラーセクタデータ復元処理に要する時間は、実施の形態３と比較しておよそ１／２に短縮することができる。
【００８２】
なお、本実施の形態において、演算結果メモリ３１とＸＯＲ演算部３２のデータ長を２セクタ分としたが、他のデータ長としても良い。また、本実施の形態においては、連続するＬＢＡを持つ通常セクタを２つの区分に交互に配置するとしたが、連続するＬＢＡを持つ通常セクタを複数の区分に所定の規則で配置しても良い。
【００８３】
実施の形態５．
本実施の形態においては、データバッファやＭＰＵの負荷を軽減するハードディスク装置について説明する。
【００８４】
まず、本実施の形態に係るハードディスク装置の構成について説明する。
【００８５】
図１１は、本実施の形態に係るハードディスク装置の構成の一例を示すブロック図である。この図において、図１と同一符号は図１に示された対象と同一又は相当物を示しており、ここでの説明を省略する。この図は、図１と比較すると、新たに冗長演算部２１からフォーマット制御部５への経路を備える。
【００８６】
次に、本実施の形態に係るハードディスク装置の動作について説明する。
【００８７】
冗長セクタデータ更新処理は、実施の形態１と同様であるが、単一セクタデータ書き込み処理が異なる。その他の動作は、実施の形態１と同様である。
【００８８】
図１２は、本実施の形態に係る単一冗長セクタデータ書き込み処理の動作の一例を示すフローチャートである。まず、ＭＰＵ８は、冗長演算部２１から直接ディスク媒体１５へ演算結果メモリ３１のデータを書き込めるように、フォーマット制御部５に対してデータの経路の設定を行う（Ｓ３３）。次に、ＭＰＵ８は、データバッファ４内のユーザデータをディスク媒体１５に書き込む手順と同様にして、演算結果メモリ３１内の冗長セクタデータをディスク媒体１５に書き込み（Ｓ３４）、このフローは終了する。
【００８９】
実施の形態１と比較すると、冗長演算部２１における演算結果メモリ３１に保持された冗長セクタデータが、フォーマット制御部５を介して直接ディスク媒体１５に書き込まれることにより、データバッファ４やＭＰＵ８（ファームウェア）の負荷を削減することができる。
【００９０】
実施の形態６．
本実施の形態においては、ユーザ領域の一部の範囲に冗長セクタを付加するハードディスク装置について説明する。
【００９１】
ここで、ユーザ領域のうち冗長セクタを付加する通常セクタの集合を復元対象範囲とし、この復元対象範囲内の通常セクタが区分に分けられる。従って、復元対象範囲の通常セクタにエラーセクタがあった場合のみ、エラーセクタデータ復元処理が行われる。
【００９２】
まず、本実施の形態に係るハードディスク装置の構成は、実施の形態１と同様である。
【００９３】
次に、本実施の形態に係るハードディスク装置の動作について説明する。
【００９４】
まず、復元対象範囲が設定されている場合の電源投入時の処理である復元対象範囲識別処理について説明する。
【００９５】
図１３は、本実施の形態に係る復元対象範囲識別処理の動作の一例を示すフローチャートである。まず、ＭＰＵ８は、ＳＰＭ１３の起動を行う（Ｓ８１）。次に、ＭＰＵ８は、システム領域からハードディスク装置制御に必要な制御情報を読み出し（Ｓ８２）、読み出した制御情報に基づいてハードディスク装置の設定を行う（Ｓ８３）。次に、ＭＰＵ８は、システム領域から復元対象範囲の先頭ＬＢＡ及び最終ＬＢＡを読み出し（Ｓ８４）、読み出した情報に基づいて復元対象範囲の設定を行い（Ｓ８５）、このフローは終了する。
【００９６】
上述した復元対象範囲の設定により、冗長セクタデータ更新処理における更新範囲は、復元対象範囲に設定される。その他の動作は、実施の形態１と同様である。
【００９７】
本実施の形態によれば、復元の必要な通常セクタに対してだけ冗長セクタを付加することにより、ハードディスク装置内のメモリ９やディスク媒体１５上のシステム領域などのリソースの消費を抑えることができる。
【００９８】
実施の形態７．
本実施の形態においては、区分毎にそのサイズを変えることができるハードディスク装置について説明する。
【００９９】
上述した実施の形態において、区分のサイズである区分サイズは、一定であるとしたが、本実施の形態においては、例えば、アクセス頻度の高い領域は、区分サイズを小さくし、アクセス頻度の低い領域は、区分サイズを大きくするなど、区分サイズを設定することができる。
【０１００】
まず、本実施の形態に係るハードディスク装置の構成は、実施の形態１と同様である。
【０１０１】
次に、本実施の形態に係るハードディスク装置の動作について説明する。
【０１０２】
次に、復元対象範囲が設定されている場合の電源投入時の処理である復元対象範囲識別処理について説明する。
【０１０３】
まず、区分サイズが設定されている場合の電源投入時処理である区分サイズ識別処理について説明する。図１４は、本実施の形態に係る区分サイズ識別処理の動作の一例を示すフローチャートである。まず、処理Ｓ８１，Ｓ８２，Ｓ８３は、実施の形態６と同様である。次に、ＭＰＵ８は、システム領域から区分サイズを含む区分情報を読み出し（Ｓ８６）、読み出した情報に基づいて各区分の区分サイズなどの設定を行い（Ｓ８７）、このフローは終了する。
【０１０４】
ここで、ディスク媒体１５上のシステム領域に保存される区分情報について説明する。図１５は、本実施の形態に係る区分情報の一例を示す表である。区分情報は、区分毎に、区分開始ＬＢＡ、冗長セクタデータの有無、区分サイズを持つ。この例の場合、ＬＢＡ（０ｘ００００００００）〜ＬＢＡ（０ｘ００００ｆｆｆｆ）の領域は、区分サイズが０ｘ０８００セクタずつとなる区分に割り当てられ、各区分には冗長セクタが割り当てられる。また、ＬＢＡ（０ｘ０００１００００）〜ＬＢＡ（０ｘ０００１ｆｆｆｆ）の領域は、区分サイズが０ｘ１００００セクタずつとなる区分に割り当てられ、各区分には冗長セクタが割り当てられる。また、ＬＢＡ（０ｘ０００２００００）〜最終セクタの領域は、区分や冗長セクタが割り当てられない。
【０１０５】
上述した復元対象範囲の設定により、冗長セクタデータ更新処理における更新範囲は、冗長セクタデータがある領域に設定される。その他の動作は、実施の形態１と同様である。
【０１０６】
このような区分情報をシステム領域に保持しておくことにより、ハードディスク装置の用途毎、あるいはハードディスク装置のユーザ毎に区分や冗長セクタの割り当てを変更することができる。また、更新の多いユーザ領域、即ちエラーセクタの発生する確率の高い領域の冗長セクタデータの割合を多くすることにより、ハードディスク装置のリソースを効率的に使用することができるとともに、データを復元できる可能性が大幅に増大し、ハードディスク装置の信頼性を大幅に高めることができる。
【０１０７】
実施の形態８．
本実施の形態においては、各冗長セクタデータが有効か否かの情報を持つハードディスク装置について説明する。
【０１０８】
本実施の形態に係るハードディスク装置の構成は、実施の形態１と同様である。
【０１０９】
次に、各冗長セクタデータが有効であるか無効であるかを示す冗長セクタデータテーブルについて説明する。
【０１１０】
冗長セクタデータテーブルは、ＭＰＵ８により生成され、不揮発性メモリ１０に格納される。図１６は、本実施の形態に係る冗長セクタデータテーブルのデータ構造の一例を示す表である。冗長セクタデータテーブルは、冗長セクタデータ毎に、対応する冗長セクタデータ番号（区分番号）と、その冗長セクタデータが有効であるか無効であるかを示す有効フラグとを持つ。ＭＰＵ８は、冗長セクタデータの更新時に、この冗長セクタデータテーブルを参照することにより、無効な冗長セクタデータのみを更新することができ、効率的に冗長セクタデータの更新を行うことができる。
【０１１１】
この冗長セクタデータテーブルの更新は、上位装置からのコマンドを受領していないタイミングで行うことが望ましい。
【０１１２】
次に、本実施の形態に係るハードディスク装置の動作について説明する。
【０１１３】
冗長セクタデータ更新処理は、実施の形態１と同様であるが、処理Ｓ１２の代わりに、冗長セクタデータテーブルから有効フラグが無効を示す区分を検索し、検索された区分を更新範囲として設定する。その他の処理は、実施の形態１と同様である。
【０１１４】
次に、上位装置からコマンドを受領する場合の処理であるコマンド受領処理について説明する。
【０１１５】
図１７は、本実施の形態に係るコマンド受領処理の動作の一例を示すフローチャートである。まず、ＭＰＵ８は、上位装置からのコマンドを受領したか否かの判断を行い、受領していなければ（Ｓ５１，Ｎ）、処理Ｓ５１へ戻り、受領していれば（Ｓ５１，Ｙ）、次の処理へ移行する。次に、ＭＰＵ８は、コマンドがデータの書き込みであるか否かの判断を行い、書き込みでなければ（Ｓ５２，Ｎ）、処理Ｓ５４へ移行し、書き込みであれば（Ｓ５２，Ｙ）、次の処理へ移行する。次に、ＭＰＵ８は、フラグクリア処理を行う（Ｓ５３）。次に、ＭＰＵ８は、コマンドに従う通常の処理であるコマンド処理を行い（Ｓ５４）。このフローは終了する。
【０１１６】
次に、有効フラグをクリア（無効に）するフラグクリア処理について説明する。
【０１１７】
図１８は、本実施の形態に係るフラグクリア処理の動作の一例を示すフローチャートである。まず、ＭＰＵ８は、受領したＬＢＡと書き込みサイズから書き込みの対象の区分である書き込み対象区分を特定する（Ｓ６２）。例えば、全ての区分のサイズが一定である場合、ＭＰＵ８は、（受領ＬＢＡ÷区分サイズ）を書き込み対象区分の開始区分とし、（（受領ＬＢＡ＋書き込みサイズ）÷区分サイズ）を書き込み対象区分の終了区分とする。区分サイズが一定でない場合、区分サイズで場合分けを行う。次に、ＭＰＵ８は、書き込み対象区分に対応する有効フラグをクリアし（Ｓ６３）、このフローは終了する。
【０１１８】
もし、データの書き込みの後にフラグクリア処理を行うとすると、書き込みとフラグクリア処理の間に不測の事態が発生して有効フラグが残ったままになった場合、誤ったエラーセクタデータ復元処理が行われる。そのため、本実施の形態において、フラグクリア処理は、データの書き込みの前に行われる。
【０１１９】
次に、有効フラグをセット（有効に）するフラグセット処理について説明する。
【０１２０】
ＭＰＵ８は、単一冗長セクタデータ書き込み処理の後に、フラグセット処理を行う。ここで、ＭＰＵ８は、冗長セクタデータテーブルにおいて、単一冗長セクタデータ書き込み処理により書き込まれた冗長セクタデータに対応する有効フラグをセットする。
【０１２１】
もし、単一冗長セクタデータ書き込み処理の前にフラグセット処理を行うとすると、冗長セクタデータが書き込まれていない状態で有効フラグだけセットされた場合、誤ったエラーセクタデータ復元処理が行われる。
【０１２２】
次に、本実施の形態に係るエラーセクタデータ復元処理について説明する。
【０１２３】
図１９は、本実施の形態に係るエラーセクタデータ復元処理の動作の一例を示すフローチャートである。まず、ＭＰＵ８は、検出したエラーセクタのＬＢＡからエラーセクタが属する区分を特定し、冗長セクタデータテーブルを参照してその区分に対応する有効フラグを取得する（Ｓ４１）。次に、ＭＰＵ８は、取得した有効フラグが有効を示すか否かの判断を行い、無効を示す場合（Ｓ４２，Ｎ）、このフローは終了し、有効を示す場合（Ｓ４２，Ｙ）、次の処理へ移行する。その後の処理Ｓ４４，Ｓ４５，Ｓ４６，Ｓ４７，Ｓ４８は、実施の形態１のエラーセクタデータ復元処理と同様である。
【０１２４】
ハードディスク装置の電源が切られた後、冗長セクタデータテーブルが保持されていないと、次回の電源投入直後にエラーセクタが検出された場合にエラーセクタデータ復元処理を行うことができない。そこで、本実施の形態においては、冗長セクタデータテーブルは、不揮発性メモリ１０に保存されるとした。
【０１２５】
なお、ハードディスク装置が上位装置からＦｌｕｓｈ  Ｃａｃｈｅコマンドやヘッドを退避させるコマンドを受領したタイミングで、冗長セクタデータテーブルが更新され、ディスク媒体１５に書き込まれるようにしても良い。ハードディスク装置は、一般的にライトキャッシュ機能を使用しているため、電源が切られる前、データバッファ４（キャッシュ）に保持されている上位装置からの書き込みデータがディスク媒体１５に書き込まれる。Ｆｌｕｓｈ  Ｃａｃｈｅコマンドは、この書き込みを強制的に行わせるものであり、ハードディスク装置の電源ＯＦＦの前に上位装置から発行される。従って、このタイミングを利用して、ＭＰＵ８は、冗長セクタデータテーブルの更新とディスク媒体１５への書き込みを行う。
【０１２６】
本実施の形態によれば、更新の必要な冗長セクタデータのみを更新することができるため、冗長セクタデータの更新の負荷を低減することができる。従って、ハードディスク装置の性能低下を抑えつつ、迅速に冗長セクタデータを更新することができる。また、エラーセクタが検出された場合に、エラーセクタに対応する冗長セクタデータが生成されている確率を高めることができる。
【０１２７】
ここで、全ての区分サイズを小さくすると、エラーセクタに対する冗長セクタデータが有効である可能性が高くなるが、ハードディスク装置内部のメモリ９やディスク媒体１５上のシステム領域などのリソースの消費が増大する。そこで、実施の形態７のように、区分毎に区分サイズを変えることにより、リソースの消費を抑えつつ、ハードディスク装置の信頼性を高めることができる。
【０１２８】
実施の形態９．
本実施の形態においては、区分情報を動的に変更するハードディスク装置について説明する。
【０１２９】
本実施の形態に係るハードディスク装置の構成は、実施の形態１と同様である。
【０１３０】
次に、本実施の形態に係るハードディスク装置の動作について説明する。
【０１３１】
冗長セクタデータ更新処理、冗長セクタデータ生成処理、単一冗長セクタデータ書き込み処理、ユーザデータ読み出し処理、ディスク媒体走査処理は、実施の形態１と同様である。また、実施の形態８と同様、冗長セクタデータテーブルが不揮発性メモリ１０に格納される。また、実施の形態２と同様、セクタ配置は、全ての通常セクタが連続して配置された後に、全ての冗長セクタが連続して配置される。また、実施の形態７と同様、ディスク媒体１５上のシステム領域に区分情報が保存される。
【０１３２】
次に、区分情報を動的に変更する区分情報変更処理について説明する。
【０１３３】
図２０は、本実施の形態に係る区分情報変更処理の動作の一例を示すフローチャートである。まず、ＭＰＵ８は、上位装置から書き込みコマンドを受領したか否かの判断を行い、受領していない場合（Ｓ９１，Ｎ）、処理Ｓ９１へ戻り、受領した場合（Ｓ９１，Ｙ）、次の処理へ移行する。次に、ＭＰＵ８は、書き込み範囲の最終ＬＢＡを計算する（Ｓ９２）。次に、ＭＰＵ８は、今までに書き込みが無かった領域への書き込みか否かの判断を行い、書き込みが無かった領域への書き込みで無い場合（Ｓ９３，Ｎ）、このフローは終了し、書き込みが無かった領域への書き込みである場合（Ｓ９３，Ｙ）、次の処理へ移行する。
【０１３４】
次に、ＭＰＵ８は、書き込み範囲の最終ＬＢＡを書き込み最大ＬＢＡとして記憶する（Ｓ９４）。次に、ＭＰＵ８は、所定の時間間隔が経過したか否かの判断を行い、経過していない場合（Ｓ９５，Ｎ）、このフローは終了し、経過した場合（Ｓ９５，Ｙ）、次の処理へ移行する。次に、ＭＰＵ８は、書き込み最大ＬＢＡが冗長セクタを割り当てている区分よりも大きいか否かの判断を行い、大きくない場合（Ｓ９６，Ｎ）、このフローは終了し、大きい場合（Ｓ９６，Ｙ）、次の処理へ移行する。次に、ＭＰＵ８は、書き込み最大ＬＢＡを含む区分まで、冗長セクタを割り当てて使用するように区分情報の変更を行う（Ｓ９７）。次に、ＭＰＵ８は、冗長セクタ有効テーブルの初期化を行い、全ての冗長セクタデータを一旦無効にし（Ｓ９８）、このフローは終了する。
【０１３５】
ハードディスク装置において使用開始からディスク容量の全体を使用するようになるまでの期間は長い。もし、使用開始時に全ての区分情報が設定されるとすると、未使用のユーザ領域に対応した冗長セクタの領域は、しばらく使用されない。本実施の形態によれば、動的に区分情報を変更することにより、未使用の冗長セクタの領域を減らすことができる。例えば、ユーザ領域全体に亘って０ｘ１００００セクタ毎に区分が構成されている場合、ユーザ領域の半分未満の領域だけが使用されている状態では区分サイズを０ｘ０８０００にすることにより、冗長セクタの領域を有効に利用することができる。
【０１３６】
なお、第１ブロックは、実施の形態における通常セクタに対応する。また、第２ブロックは、実施の形態における区分に対応する。また、第３ブロックは、実施の形態における冗長セクタに対応する。また、記憶媒体は、実施の形態におけるディスク媒体に対応する。また、更新対象は、実施の形態における更新範囲に対応する。また、演算データは、実施の形態における演算結果データに対応する。また、演算部は、実施の形態における冗長演算部に対応する。また、書き込み部及び読み出し部は、実施の形態におけるＭＰＵ、データバッファ、バッファ制御部、フォーマット制御部に対応する。また、演算ステップは、実施の形態における処理Ｓ１３に対応する。また、書き込みステップは、実施の形態における処理Ｓ１４または処理Ｓ１９に対応する。
【０１３７】
また、管理情報記憶部は、実施の形態における冗長セクタデータテーブルに対応する。また、管理情報記憶ステップは、実施の形態におけるフラグセット処理及びフラグクリア処理に対応する。また、読み出しステップは、実施の形態におけるエラーセクタデータ復元処理に対応する。
【０１３８】
また、本実施の形態に係るＭＰＵ８及び冗長演算部２１は、記憶装置に容易に適用することができ、記憶装置の性能をより高めることができる。ここで、記憶装置には、例えば磁気ディスク装置、光ディスク装置、光磁気ディスク装置等が含まれ得る。
【０１３９】
（付記１）  所定のデータ長の第１ブロックを単位としてデータが配置され、且つ複数の前記第１ブロックで構成される第２ブロックを単位として前記第１ブロックが配置され、且つ前記第２ブロックに対応して前記第１ブロック長を持つ第３ブロックが配置される記憶媒体に対して少なくとも書き込み処理を行う記憶装置に用いられる記憶データ処理装置において、
前記第２ブロック毎に、該第２ブロックに対応する第３ブロックが有効か無効かの情報を含む管理情報を記憶する管理情報記憶部と、
前記管理情報記憶部に記憶された管理情報において、更新対象として指定された第２ブロックに対応する第３ブロックが無効である場合、前記更新対象中の全ての第１ブロックのデータについてビット位置毎の演算を行い、該演算の結果を演算データとして出力する演算部と、
前記演算部により出力された演算データを、前記更新対象に対応付けられた第３ブロックへ書き込み、前記管理情報記憶部に記憶された管理情報において該第３ブロックを有効とする書き込み部と
を備える記憶データ処理装置。
（付記２）  付記１に記載の記憶データ処理装置において、
前記演算部は、前記演算データを初期化し、前記更新対象中の各々の第１ブロックのデータを順次、前記演算の入力データとし、該入力データと前記演算データについてビット位置毎の演算を行い、該演算の結果を新たな演算データとして記憶し、該演算と該記憶を全ての前記入力データについて繰り返し、前記演算データを出力することを特徴とする記憶データ処理装置。
（付記３）  付記１または付記２に記載の記憶データ処理装置において、
更に、読み出し対象として指定された第１ブロックからデータを読み出し、該データの読み出しに失敗した場合、前記読み出しに失敗した第１ブロックをエラーブロックとし、前記管理情報記憶部に記憶された管理情報において前記読み出し対象を含む第２ブロックに対応する第３ブロックが有効である場合、該第２ブロック中の該エラーブロック以外の全ての第１ブロックのデータである正常データを読み出し、該第２ブロックに対応する第３ブロックのデータである冗長データを読み出す読み出し部を備え、
前記演算部は更に、前記正常データと前記冗長データについてビット位置毎の演算を行い、該演算の結果を前記エラーブロックのデータとして出力することを特徴とする記憶データ処理装置。
（付記４）  付記３に記載の記憶データ処理装置において、
前記演算部は、前記演算データを初期化し、各々の前記正常データと前記冗長データを順次、前記演算の入力データとし、該入力データと前記演算データについてビット位置毎の演算を行い、該演算の結果を新たな演算データとして記憶し、該演算と該記憶を全ての前記入力データについて繰り返し、前記演算データを出力することを特徴とする記憶データ処理装置。
（付記５）  付記１乃至付記４のいずれかに記載の記憶データ処理装置において、
前記書き込み部は、外部装置からのデータ書き込み指示を受けた場合、前記データ書き込み命令によるデータ書き込み対象を含む第２ブロックに対応する第３ブロックについて、前記管理情報記憶部に記憶された管理情報において該第３ブロックを有効とすることを特徴とする記憶データ処理装置。
（付記６）  付記１乃至付記５のいずれかに記載の記憶データ処理装置において、
前記演算部は、外部装置からのデータ読み出し指示またはデータ書き込み指示による処理を行っていないときに、前記管理情報記憶部に記憶された管理情報において無効である第３ブロックに対応する第２ブロックについて前記演算を行うことを特徴とする記憶データ処理装置。
（付記７）  付記１乃至付記６のいずれかに記載の記憶データ処理装置において、
前記管理情報記憶部は、不揮発性メモリであることを特徴とする記憶データ処理装置。
（付記８）  付記１乃至付記６のいずれかに記載の記憶データ処理装置において、
前記管理情報記憶部は、外部装置からライトキャッシュデータを前記記憶媒体上に書き込む指示、またはヘッドを退避させる指示を受領した場合、前記管理情報を前記記憶媒体に書き込むことを特徴とする記憶データ処理装置。
（付記９）  付記１乃至付記８のいずれかに記載の記憶データ処理装置において、
前記管理情報は、前記第２ブロック毎に、該第２ブロックに含まれる複数の第１ブロックの指定を含むことを特徴とする記憶データ処理装置。
（付記１０）  付記１乃至付記９のいずれかに記載の記憶データ処理装置において、
前記管理情報は、前記第２ブロック毎に、該第２ブロックに含まれる複数の第１ブロックの指定を含み、
前記書き込み部は、前記管理情報に基づいて前記第２ブロックを前記記憶媒体に配置することを特徴とする記憶データ処理装置。
（付記１１）  付記１０に記載の記憶データ処理装置において、
前記管理情報記憶部は、外部装置から各々の第２ブロックへのアクセス頻度に基づいて第２ブロックに含まれる複数の第１ブロックの数を決定し、前記管理情報に含めることを特徴とする記憶データ処理装置。
（付記１２）  付記１乃至付記１１のいずれかに記載の記憶データ処理装置において、
前記演算部による演算は、順次演算を行う順序を変えても演算結果が変わらない演算であることを特徴とする記憶データ処理装置。
（付記１３）  付記１２に記載の記憶データ処理装置において、
前記演算部による演算は、排他的論理和であることを特徴とする記憶データ処理装置。
（付記１４）  付記１乃至付記１３のいずれかに記載の記憶データ処理装置において、
前記第１ブロックは、少なくとも１つのセクタであり、前記第３ブロックは、前記第１ブロック長を持ち、前記演算データは、前記第１ブロック長を持つことを特徴とする記憶データ処理装置。
（付記１５）  記憶装置における記憶データ処理をコンピュータに実行させる記憶データ処理プログラムにおいて、
所定のデータ長の第１ブロックを単位としてデータが配置され、且つ複数の前記第１ブロックで構成される第２ブロックを単位として前記第１ブロックが配置され、且つ前記第２ブロックに対応して前記第１ブロック長を持つ第３ブロックが配置される記憶媒体について、前記第２ブロック毎に、該第２ブロックに対応する第３ブロックが有効か無効かの情報を含む管理情報を記憶する管理情報記憶ステップと、
前記管理情報記憶ステップにより記憶された管理情報において、更新対象として指定された第２ブロックに対応する第３ブロックが無効である場合、前記更新対象中の全ての第１ブロックのデータについてビット位置毎の演算を行い、該演算の結果を演算データとして出力する演算ステップと、
前記演算ステップにより出力された演算データを、前記更新対象に対応付けられた第３ブロックへ書き込み、前記管理情報記憶ステップにより記憶された管理情報において該第３ブロックを有効とする書き込みステップと
をコンピュータに実行させる記憶データ処理プログラム。
（付記１６）  所定のデータ長の第１ブロックを単位としてデータが配置され、且つ複数の前記第１ブロックで構成される第２ブロックを単位として前記第１ブロックが配置され、且つ前記第２ブロックに対応して前記第１ブロック長を持つ第３ブロックが配置される記憶媒体に対して少なくとも書き込み処理を行う記憶装置において、
前記第２ブロック毎に、該第２ブロックに対応する第３ブロックが有効か無効かの情報を含む管理情報を記憶する管理情報記憶部と、
前記管理情報記憶部に記憶された管理情報において、更新対象として指定された第２ブロックに対応する第３ブロックが無効である場合、前記更新対象中の全ての第１ブロックのデータについてビット位置毎の演算を行い、該演算の結果を演算データとして出力する演算部と、
前記演算部により出力された演算データを、前記更新対象に対応付けられた第３ブロックへ書き込み、前記管理情報記憶部に記憶された管理情報において該第３ブロックを有効とする書き込み部と
を備える記憶装置。
（付記１７）  付記１６に記載の記憶装置において、
前記演算部は、前記演算データを初期化し、前記更新対象中の各々の第１ブロックのデータを順次、前記演算の入力データとし、該入力データと前記演算データについてビット位置毎の演算を行い、該演算の結果を新たな演算データとして記憶し、該演算と該記憶を全ての前記入力データについて繰り返し、前記演算データを出力することを特徴とする記憶装置。
（付記１８）  付記１６または付記１７に記載の記憶装置において、
更に、読み出し対象として指定された第１ブロックからデータを読み出し、該データの読み出しに失敗した場合、前記読み出しに失敗した第１ブロックをエラーブロックとし、前記管理情報記憶部に記憶された管理情報において前記読み出し対象を含む第２ブロックに対応する第３ブロックが有効である場合、該第２ブロック中の該エラーブロック以外の全ての第１ブロックのデータである正常データを読み出し、該第２ブロックに対応する第３ブロックのデータである冗長データを読み出す読み出し部を備え、
前記演算部は更に、前記正常データと前記冗長データについてビット位置毎の演算を行い、該演算の結果を前記エラーブロックのデータとして出力することを特徴とする記憶装置。
（付記１９）  付記１８に記載の記憶装置において、
前記演算部は、前記演算データを初期化し、各々の前記正常データと前記冗長データを順次、前記演算の入力データとし、該入力データと前記演算データについてビット位置毎の演算を行い、該演算の結果を新たな演算データとして記憶し、該演算と該記憶を全ての前記入力データについて繰り返し、前記演算データを出力することを特徴とする記憶装置。
（付記２０）  付記１６乃至付記１９のいずれかに記載の記憶装置において、
前記書き込み部は、外部装置からのデータ書き込み指示を受けた場合、前記データ書き込み命令によるデータ書き込み対象を含む第２ブロックに対応する第３ブロックについて、前記管理情報記憶部に記憶された管理情報において該第３ブロックを有効とすることを特徴とする記憶装置。
【図面の簡単な説明】
【０１４０】
【図１】実施の形態１に係るハードディスク装置の構成の一例を示すブロック図である。
【図２】実施の形態１に係る冗長演算部の構成の一例を示すブロック図である。
【図３】実施の形態１に係るディスク媒体上のユーザ領域におけるセクタ配置の一例を示す配置図である。
【図４】実施の形態１に係る冗長セクタデータ更新処理の動作の一例を示すフローチャートである。
【図５】実施の形態１に係る冗長セクタデータ生成処理の動作の一例を示すフローチャートである。
【図６】実施の形態１に係る単一冗長セクタデータ書き込み処理の動作の一例を示すフローチャートである。
【図７】実施の形態１に係るエラーセクタデータ復元処理の動作の一例を示すフローチャートである。
【図８】実施の形態２に係るディスク媒体上のユーザ領域のセクタ配置の一例を示す配置図である。
【図９】実施の形態２に係る冗長セクタデータ更新処理の動作の一例を示すフローチャートである。
【図１０】実施の形態３に係るディスク媒体上のユーザ領域におけるセクタ配置の一例を示す配置図である。
【図１１】実施の形態５に係るハードディスク装置の構成の一例を示すブロック図である。
【図１２】実施の形態５に係る単一冗長セクタデータ書き込み処理の動作の一例を示すフローチャートである。
【図１３】実施の形態６に係る復元対象範囲識別処理の動作の一例を示すフローチャートである。
【図１４】実施の形態７に係る区分サイズ識別処理の動作の一例を示すフローチャートである。
【図１５】実施の形態７に係る区分情報の一例を示す表である。
【図１６】実施の形態８に係る冗長セクタデータテーブルのデータ構造の一例を示す表である。
【図１７】実施の形態８に係るコマンド受領処理の動作の一例を示すフローチャートである。
【図１８】実施の形態８に係るフラグクリア処理の動作の一例を示すフローチャートである。
【図１９】実施の形態８に係るエラーセクタデータ復元処理の動作の一例を示すフローチャートである。
【図２０】実施の形態９に係る区分情報変更処理の動作の一例を示すフローチャートである。
【符号の説明】
【０１４１】
２  ホストＩＦ制御部、３  データバッファ制御部、４  データバッファ、５  フォーマット制御部、６  リードチャネル、７  ヘッドＩＣ、８  ＭＰＵ、９  メモリ、１０  不揮発性メモリ、１１  サーボ制御部、１２  ＶＣＭ、１３  ＳＰＭ、１４  ヘッド、１５  ディスク媒体、１６  コモンバス、２１  冗長演算部、３１  演算結果メモリ、３２  ＸＯＲ演算部。
【図１】
2008077458.tif 000003
【図２】
2008077458.tif 000004
【図３】
2008077458.tif 000005
【図４】
2008077458.tif 000006
【図５】
2008077458.tif 000007
【図６】
2008077458.tif 000008
【図７】
2008077458.tif 000009
【図８】
2008077458.tif 000010
【図９】
2008077458.tif 000011
【図１０】
2008077458.tif 000012
【図１１】
2008077458.tif 000013
【図１２】
2008077458.tif 000014
【図１３】
2008077458.tif 000015
【図１４】
2008077458.tif 000016
【図１５】
2008077458.tif 000017
【図１６】
2008077458.tif 000018
【図１７】
2008077458.tif 000019
【図１８】
2008077458.tif 000020
【図１９】
2008077458.tif 000021
【図２０】
2008077458.tif 000022