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