(57)【要約】【課題】同一グループ内の少なくとも２つのセクタがエラーセクタとして検出されるのを極力防止できるようにする。【解決手段】実施形態によれば、磁気ディスク装置は、ディスクと、コントローラとを具備する。前記ディスクは、複数のトラックを含む記憶領域を備える。前記コントローラは、前記複数のトラックの各々に配置される複数のデータセクタを、データセクタ単位に、各々第１のグループ集合を構成する複数のグループに少なくとも隣接するトラックにおける前記複数のグループの位置を異ならせてグループ分けする。前記コントローラは更に、前記複数のグループにそれぞれ対応する複数の冗長セクタを、前記記憶領域内の空き領域に配置する。【選択図】      図２
2016219077.tif 000002
【特許請求の範囲】
【請求項１】
複数のトラックを含む記憶領域を備えたディスクと、
前記複数のトラックの各々に配置される複数のデータセクタを、データセクタ単位に、各々第１のグループ集合を構成する複数のグループに、少なくとも隣接するトラックにおける前記複数のグループの位置を異ならせてグループ分けし、前記複数のグループにそれぞれ対応する複数の冗長セクタを、前記記憶領域内の空き領域に配置するコントローラと
を具備する磁気ディスク装置。
【請求項２】
前記コントローラは、前記複数のトラックに配置される複数のデータセクタを、前記グループ分けにおける規則とは異なるグループ化規則に従って、第２のグループ集合を構成する複数のグループにグループ分けし、且つ、前記第１のグループ集合を構成する前記複数のグループにそれぞれ対応する前記複数の冗長セクタと、前記第２のグループ集合を構成する前記複数のグループにそれぞれ対応する複数の冗長セクタとを、前記空き領域に配置する請求項１記載の磁気ディスク装置。
【請求項３】
前記空き領域は、最後にユーザデータが記録されたデータセクタが配置された位置に後続する請求項１及び請求項２のいずれか一項に記載の磁気ディスク装置。
【請求項４】
前記コントローラは、前記複数のトラックに配置される複数のデータセクタを、前記グループ分けにおける規則を含む互いに異なる複数のグループ化規則に従って、前記第１のグループ集合を含む複数のグループ集合をそれぞれ構成する複数組の複数のグループにグループ分けし、且つ、前記複数組の複数のグループにそれぞれ対応する複数組の複数の冗長セクタを、前記空き領域に配置する請求項１記載の磁気ディスク装置。
【請求項５】
前記磁気ディスク装置は、前記複数のグループに対応する冗長データの初期データまたは中間データを格納するための冗長データ領域を含むメモリを更に具備し、
前記コントローラは、第１のユーザデータが記録された第１のデータセクタの前記記憶領域への配置に応じて、前記第１のデータセクタが属するグループに対応し、且つ前記冗長データ領域に格納されている第１の冗長データと、前記第１のユーザデータとに基づいて、新たな冗長データを生成し、前記第１の冗長データを前記生成された冗長データで更新する
請求項１記載の磁気ディスク装置。
【請求項６】
前記コントローラは、前記記憶領域へのユーザデータの追記の中断に応じて、前記冗長データ領域内の、前記複数のグループに対応する更新された冗長データが記録された複数の冗長セクタを、前記中断の直前にユーザデータが記録されたデータセクタが配置されたデータセクタ位置に後続する、前記記憶領域内の第１の領域に配置する請求項５記載の磁気ディスク装置。
【請求項７】
前記コントローラは、新たなユーザデータが記録されたデータセクタの、前記第１の領域の先頭セクタ位置への配置から、前記追記を再開する請求項６記載の磁気ディスク装置。
【請求項８】
書き換え可能な不揮発性メモリを更に具備し、
前記コントローラは、前記ディスクへの電源供給の遮断に応じて、前記冗長データ領域内の、前記複数のグループに対応する更新された冗長データを、前記不揮発性メモリに退避する請求項５乃至請求項７のいずれか一項に記載の磁気ディスク装置。
【請求項９】
前記コントローラは、前記グループ分けにおいて、前記複数のグループの位置を、トラックごとに一定のデータセクタ数ずつシフトする請求項１、請求項５乃至請求項８のいずれか一項に記載の磁気ディスク装置。
【請求項１０】
前記複数のグループの位置が異なる状態は、前記複数のグループの数がｍの場合、ｍ個の連続するトラックに一致するインターバルで一巡する請求項９記載の磁気ディスク装置。
【請求項１１】
複数のトラックを含む記憶領域を備えたディスクを具備する磁気ディスク装置において、前記ディスクへのアクセスを制御するディスクコントローラであって、
冗長データを生成する冗長生成器と、
前記複数のトラックの各々に配置される複数のデータセクタを、データセクタ単位に、各々第１のグループ集合を構成する複数のグループに、少なくとも隣接するトラックにおける前記複数のグループの位置を異ならせてグループ分けし、前記複数のグループにそれぞれ対応する冗長データを前記冗長生成器により生成させ、生成された前記複数のグループにそれぞれ対応する冗長デーが記録された複数の冗長セクタを、前記記憶領域内の空き領域に配置するシーケンサと
を具備するディスクコントローラ。
【請求項１２】
複数のトラックを含む記憶領域を備えたディスクを具備する磁気ディスク装置における冗長セクタ配置方法であって、
前記複数のトラックの各々に配置される複数のデータセクタを、データセクタ単位に、各々第１のグループ集合を構成する複数のグループに、少なくとも隣接するトラックにおける前記複数のグループの位置を異ならせてグループ分けし、
前記複数のグループにそれぞれ対応する複数の冗長セクタを、前記記憶領域内の空き領域に配置する
冗長セクタ配置方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、磁気ディスク装置及び冗長セクタ配置方法に関する。
【背景技術】
【０００２】
磁気ディスク装置では、一定サイズのブロック領域（いわゆるセクタ）を単位にディスクにデータが書き込まれ、且つ当該セクタを単位にディスクからデータが読み出される。このような磁気ディスク装置は一般に、セクタからのデータ読み出しでエラーが検出された場合に、当該セクタ（つまりエラーセクタ）のデータを復元するための仕組みを有している。この仕組みの１つとして、セクタの集合（以下、グループと称する）毎に、冗長セクタを割り当てる方法（冗長セクタ配置方法）が知られている。
【０００３】
この方法を適用する磁気ディスク装置では、例えば第１のグループに対応する第１の冗長セクタのデータは、第１のグループ内の全セクタのデータをビット毎に排他的論理和（ＸＯＲ）演算を行うことにより得られる。もし、第１のグループ内のいずれか１つのセクタがエラーセクタとして検出された場合、当該エラーセクタのデータは、第１のグループ内のエラーセクタを除く全セクタと第１の冗長セクタのデータをビット毎にＸＯＲ演算を行うことにより復元される。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特許第５３８０５５６号公報
【特許文献２】米国特許出願公開第２００９／００５５６８２号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかし、第１のグループ内の少なくとも２つのセクタがエラーセクタとして検出された場合、当該少なくとも２つのセクタのデータの復元は困難である。このような状況は、例えば、ディスク上に付いた傷の範囲が、上述の少なくとも２つのセクタに及ぶ場合に発生する。
【０００６】
本発明が解決しようとする課題は、同一グループ内の少なくとも２つのセクタがエラーセクタとして検出されるのを極力防止できる磁気ディスク装置及び冗長セクタ配置方法を提供することにある。
【課題を解決するための手段】
【０００７】
実施形態によれば、磁気ディスク装置は、ディスクと、コントローラとを具備する。前記ディスクは、複数のトラックを含む記憶領域を備える。前記コントローラは、前記複数のトラックの各々に配置される複数のデータセクタを、データセクタ単位に、各々第１のグループ集合を構成する複数のグループに、少なくとも隣接するトラックにおける前記複数のグループの位置を異ならせてグループ分けする。前記コントローラは更に、前記複数のグループにそれぞれ対応する複数の冗長セクタを、前記記憶領域内の空き領域に配置する。
【図面の簡単な説明】
【０００８】
【図１】実施形態に係る磁気ディスク装置の典型的な構成を示すブロック図。
【図２】図１に示されるディスク上のバンドにおける第１のグループ集合の例を示す図。
【図３】バンドが第１のグループ集合に加えて第２のグループ集合を有する場合の、当該バンドにおける第２のグループ集合の例を示す図。
【図４】バンドが、第１のグループ集合のみを有する場合の、当該第１のグループ集合と欠陥セクタの例を示す図。
【図５】バンドが、第１のグループ集合に加えて第２のグループ集合を有する場合の、当該第１及び第２のグループ集合と欠陥セクタの例を示す図。
【図６】図５の状態よりも、欠陥セクタの数が１つ増加した場合の、第１及び第２のグループ集合と欠陥セクタの例を示す図。
【図７】バンドが、第１及び第２のグループ集合に加えて、第３のグループ集合を有する場合の、当該第１乃至第３のグループ集合と欠陥セクタの例を示す図。
【図８】図１に示されるＨＤＤにおける排他的論理和（ＸＯＲ）演算に関係する構成を示すブロック図。
【図９】同実施形態におけるライト処理の典型的な手順を示すフローチャート。
【図１０】ライト処理の第１の時点において実行されるＸＯＲデータ処理の例を説明するための図。
【図１１】ライト処理の第２の時点において実行されるＸＯＲデータ処理の例を説明するための図。
【図１２】ライト処理の第３の時点において実行されるＸＯＲデータ処理の例を説明するための図。
【図１３】ライト処理の第４の時点において実行されるＸＯＲデータ処理の例を説明するための図。
【図１４】同実施形態におけるＸＯＲデータロード処理の典型的な手順を示すフローチャート。
【発明を実施するための形態】
【０００９】
以下、実施の形態につき図面を参照して説明する。  
図１は実施形態に係る磁気ディスク装置の典型的な構成を示すブロック図である。磁気ディスク装置は、ハードディスクドライブ（ＨＤＤ）とも呼ばれている。そこで以下の説明では、磁気ディスク装置をＨＤＤと表記する。図１に示されるＨＤＤは、ディスク（磁気ディスク）１１と、ヘッド（磁気ヘッド）１２と、スピンドルモータ（ＳＰＭ）１３と、アクチュエータ１４と、ドライバＩＣ１５と、ヘッドＩＣ１６と、コントローラ１７と、ダイナミックＲＡＭ（ＤＲＡＭ）１８と、フラッシュメモリ１９とを備えている。
【００１０】
図１に示されるＨＤＤは、例えば、シングルド磁気記録（shingled magnetic recoding : SMR）ドライブ、またはインターネットプロトコル（Internet Protocol :ＩＰ）ドライブである。ＳＭＲドライブ及びＩＰドライブは、論理アドレス（例えば、論理ブロックアドレス）に割り当てられるディスク１１上の物理位置（例えば、セクタ位置）が固定ではないアドレッシング方式を適用するＨＤＤとして知られている。しかし、図１に示されるＨＤＤは、ＳＭＲドライブまたはＩＰドライブに限らない。
【００１１】
ディスク１１は、例えばその一方の面に、データが磁気記録される記録面を備える記録媒体である。ディスク１１はＳＰＭ１３によって高速に回転させられる。ＳＰＭ１３は、ドライバＩＣ１５から供給（印加）される駆動電流（電圧）により駆動される。ディスク１１（より詳細には、ディスク１１の記録面）は、例えば、複数の同心円状の記憶領域に区分される。つまり、ディスク１１は複数の同心円状の記憶領域を備えている。記憶領域の数がｎであるものとする。ｎ個の記憶領域の各々は、一般にバンド（またはバンド領域）と呼ばれ、複数のトラックを備えている。各バンドは、例えばデータ追記型アクセス領域として用いられる。つまり、本実施形態では、ディスク１１上のバンドを単位にデータが書き換えられる。また、本実施形態では、バンドを単位にデータがイレーズされる。
【００１２】
ヘッド１２はディスク１１の記録面に対応して配置される。ヘッド１２は、ディスク１１からのデータの読み出しに用いられるリード素子と、ディスク１１へのデータの書き込みに用いられるライト素子とを備えている。リード素子及びライト素子は、それぞれ、リーダー及びライターとも呼ばれる。ライト素子の幅は、リード素子の幅よりも大きいものとする。本実施形態では、ディスク１１上のバンドへのデータの書き込みに、シングルド磁気記録が用いられる。シングルド磁気記録では、バンド内の先頭のトラックから最終のトラックまでに順にデータが書き込まれる。そして、１トラック分のデータがバンドに書き込まれる毎に、ライト素子（ヘッド１２）は、リード素子がトレースする軌跡（リードトラック）に対応するピッチだけ、ディスク１１の半径方向に移動される。
【００１３】
ヘッド１２は、アクチュエータ１４の先端に取り付けられている。ヘッド１２は、ディスク１１が高速に回転することにより当該ディスク１１上を浮上する。アクチュエータ１４は、当該アクチュエータ１４の駆動源となるボイスコイルモータ（ＶＣＭ）１４０を有している。ＶＣＭ１４０は、ドライバＩＣ１５から供給（印加）される駆動電流（電圧）により駆動される。ヘッド１２は、アクチュエータ１４がＶＣＭ１４０によって駆動されることにより、ディスク１１上を当該ディスク１１の半径方向に、円弧を描くように移動する。
【００１４】
なお、図１に示される構成と異なって、ＨＤＤが複数のディスクを備えていても構わない。また、図１に示されるディスク１１が、その両方の面に記録面を備え、当該記録面のそれぞれに対応してヘッドが配置されていても構わない。
【００１５】
ドライバＩＣ１５は、コントローラ１７（より詳細には、コントローラ１７内のＣＰＵ１７３）の制御に従い、ＳＰＭ１３とＶＣＭ１４０とを駆動する。ヘッドＩＣ１６はリードアンプを含んでおり、ヘッド１２により再生された信号（つまり再生信号）を増幅する。ヘッドＩＣ１６は更にライトドライバを含んでおり、コントローラ１７内のＲ／Ｗチャネル１７１から送出されるライトデータをライト電流に変換して、当該ライト電流をヘッド１２に送出する。
【００１６】
コントローラ１７は、例えば、複数の素子が単一チップに集積されたsystem-on-a-chip（ＳＯＣ）と呼ばれる大規模集積回路（ＬＳＩ）を用いて実現される。コントローラ１７は、リード／ライト（Ｒ／Ｗ）チャネル１７１、ハードディスクコントローラ（ＨＤＣ）１７２、ＣＰＵ１７３及びスタティックＲＡＭ（ＳＲＡＭ）１７４を備えている。
【００１７】
Ｒ／Ｗチャネル１７１は、リード／ライトに関連する信号を処理する。Ｒ／Ｗチャネル１７１は、再生信号（リード信号）をアナログ−デジタル変換器によってデジタルデータに変換し、デジタルデータからリードデータを復号する。Ｒ／Ｗチャネル１７１はまた、デジタルデータからヘッド１２の位置決めに必要なサーボデータを抽出する。Ｒ／Ｗチャネル１７１はまた、ライトデータを符号化する。
【００１８】
ＨＤＣ１７２は、ホストインタフェース２０を介してホスト（ホスト装置）と接続されている。ＨＤＣ１７２は、ホストから転送されるコマンド（ライトコマンド、リードコマンド等）を受け取る。ＨＤＣ１７２は、ホストとＤＲＡＭ１８との間のデータ転送及びＤＲＡＭ１８とＲ／Ｗチャネル１７１との間のデータ転送を制御する。
【００１９】
ＨＤＣ１７２は、メモリインタフェース（ＭＩＦ）コントローラ１７２１、シーケンサ１７２２及び冗長生成器１７２３を備えている。ＭＩＦコントローラ１７２１は、ＤＲＡＭ１８、フラッシュメモリ１９及びＳＲＡＭ１７４へのアクセスを制御する。シーケンサ１７２２は、冗長生成器１７２３による冗長データの生成と、生成された冗長データのディスク１１、ＤＲＡＭ１８及びＳＲＡＭ１７４へのライトとを含む動作を制御する。
【００２０】
冗長生成器１７２３は、冗長データ、例えばＸＯＲ（排他的論理和）データを生成する。本実施形態では、各バンド内のセクタの集合はグループ化規則に従って複数のグループにグループ分けされる。複数のグループの全体を、グループ集合と称する。ＸＯＲデータは、グループ毎に生成される。したがって、各グループは、ＸＯＲ（ＸＯＲ演算）グループ（冗長グループ）であるといえる。
【００２１】
ここで、ディスク１１上のｉ番目（ｉ＝０，１，…，ｎ−１）のバンドをバンドＢＮＤｉと表記し、バンドＢＮＤｉ内の或るグループをグループｊと表記する。また、グループｊに対応するＸＯＲデータを、ＸＯＲ＿ｊと表記する。冗長生成器１７２３は、バンドＢＮＤｉに含まれていて、且つグループｊに含まれている全てのセクタのデータ（ユーザデータ）を順次同一位置のビット毎にＸＯＲ演算を行うことにより、ＸＯＲデータＸＯＲ＿ｊを生成する。ＸＯＲデータＸＯＲ＿ｊは、グループｊに対応する冗長セクタに設定（格納）される。つまり、冗長セクタ（以下、ＸＯＲセクタと称する）はＸＯＲデータを含む。以下の説明では、各グループ内のセクタ（つまり、ユーザデータが記録されるセクタ）を、データセクタと表記することもある。
【００２２】
ＣＰＵ１７３は、図１に示されるＨＤＤの主コントローラとして機能する。ＣＰＵ１７３は制御プログラムに従って、ＨＤＣ１７２を含む、ＨＤＤ内の少なくとも一部の要素を制御する。本実施形態において制御プログラムは、ディスク１１の特定の領域に予め格納されている。しかし、制御プログラムがフラッシュメモリ１９に予め格納されていても構わない。
【００２３】
ＳＲＡＭ１７４は、ＤＲＡＭ１８よりも高速な揮発性メモリである。本実施形態においてＳＲＡＭ１７４の記憶容量は、ＤＲＡＭ１８のそれよりも小さい。ＳＲＡＭ１７４の記憶領域の一部はＸＯＲ演算領域１７４０に割り当てられる。ＸＯＲ演算領域１７４０は、ＸＯＲ演算に用いられるＸＯＲデータを格納するのに用いられる。
【００２４】
ＤＲＡＭ１８は、ホストによって転送されたライトデータ、及びディスク１１からリードされたリードデータを一時格納するのに用いられる。ＤＲＡＭ１８の記憶領域の一部は、ライトバッファ１８１に割り当てられる。ＤＲＡＭ１８の記憶領域の他の一部は、管理テーブル１８２を格納するのに用いられる。ＤＲＡＭ１８の記憶領域の更に他の一部は、現在データが追記されているバンドにおけるグループ毎のＸＯＲデータ（より具体的には、ＸＯＲ演算の最新の途中結果）を格納するためのＸＯＲ格納領域１８３として用いられる。
【００２５】
管理テーブル１８２は、バンド毎に、論理アドレス（例えば論理ブロックアドレス）と物理アドレスとの対応を、データが書き込まれた（追記された）セクタを単位に管理するのに用いられる。ここで、ある論理ブロックアドレス（ＬＢＡ）に対応したデータのバンドへの新たな書き込みを想定する。この場合、本実施形態では、データは、そのＬＢＡに対応したバンドに上書きされるのではない。つまり、データは、空きのバンドに書き込まれる。そのバンドへの書き込み中には、管理テーブル１８２において当該バンドに対応付けられたエントリに設定されたフラグにより書き込み途中であることが示される。したがって、例えばシーケンサ１７２２（またはＣＰＵ１７３）は、フラグを参照することにより、どのバンドが書き込み途中であるかを特定できる。シーケンサ１７２２は、バンドへの書き込みが完了した時に、管理テーブル１８２におけるＬＢＡと物理アドレスとの対応を示す情報を更新する。
【００２６】
管理テーブル１８２は更に、バンド毎にグループ化規則を示す情報を保持する。グループ化規則は、グループ集合と、グループ順と、グループ位置シフト量とを含む。グループ順とは、バンドの各トラック内のセクタを、グループ集合を構成する複数のグループにグループ分けする順番を指す。つまりグループ順は、複数のグループの配置順をも示す。グループ位置とは、バンドの各トラックにおける複数のグループの配置位置を指す。すなわち、このグループ位置は、グループ順に基づいて、トラック毎に一定数のセクタ（例えば１セクタ）だけシフトされる。グループ位置シフト量とは、このシフト量を指す。
【００２７】
また、グループ化規則を示す情報は、グループ順パラメータ及びシフトパラメータを含む。グループ順パラメータはグループ順（グループの配置順）及びグループ集合を示す。シフトパラメータはシフト量（グループ位置シフト量）を示す。なお、グループ化規則を示す情報が、ディスク１１上の全てのバンドに共通であっても構わない。
【００２８】
フラッシュメモリ１９は、書き換え可能な不揮発性メモリである。フラッシュメモリ１９の記憶領域の一部には、イニシャルプログラムローダ（ＩＰＬ）が予め格納されている。ＣＰＵ１７３は、例えば、ＨＤＤに電源が供給された後にＩＰＬを実行することにより、ディスク１１に格納されている制御プログラムの少なくとも一部をＳＲＡＭ１７４又はＤＲＡＭ１８にロードする。
【００２９】
図２は、ディスク１１上のバンドＢＮＤｉにおけるグループ集合の例を示す。図２において、矢印２０１及び２０２は、ディスク１１のそれぞれ円周方向及び半径方向を示す。また、図２において、文字Ａ，Ｂ，Ｃ，Ｄ及びＥが記述された最小の矩形は、グループＡ，Ｂ，Ｃ，Ｄ及びＥにグループ分けされた（属する）セクタＡ，Ｂ，Ｃ，Ｄ及びＥを示す。図２に示されるバンドＢＮＤｉは、作図の都合で、各々に１０のセクタが配置された１０のトラックＴＲＫ０乃至ＴＲＫ９を備えているものとする。トラックＴＲＫ０乃至ＴＲＫ９は、本来は同心円状であるが、図２では、作図の都合で直線状に表現されている。なお、バンドＢＮＤｉは１０を十分超える数のトラックを備え、各トラックには、１０を十分超える数のセクタが配置されるのが一般的である。
【００３０】
バンドＢＮＤｉの先頭のトラックＴＲＫ０のセクタの集合は、第１のグループ化規則に従って、グループＡ，Ｂ，Ｃ，Ｄ及びＥに、この順番でグループ分けされる。つまり、バンドＢＮＤｉのトラックＴＲＫ０には、グループＡ，Ｂ，Ｃ，Ｄ及びＥのセクタＡ，Ｂ，Ｃ，Ｄ及びＥが、当該トラックＴＲＫ０の先頭のセクタ位置から、この順番で配置されている。
【００３１】
シフト量が１セクタである本実施形態では、バンドＢＮＤｉの次のトラックＴＲＫ１には、グループ（セクタ）Ａ，Ｂ，Ｃ，Ｄ及びＥが、この順番を維持した状態で、トラックＴＲＫ０における配置と比較して、１セクタだけシフトされた位置に順に配置されている。
【００３２】
同様に、バンドＢＮＤｉのトラックＴＲＫ２には、グループ（セクタ）Ａ，Ｂ，Ｃ，Ｄ及びＥが、この順番を維持した状態で、トラックＴＲＫ１における配置と比較して、１セクタだけシフトされた位置に順に配置されている。以下、同様に、バンドＢＮＤｉ内のトラックが切り替わる毎に、トラック内のグループ（セクタ）Ａ，Ｂ，Ｃ，Ｄ及びＥの位置（グループ位置）が１セクタずつシフトされる。このグループ位置のシフトを伴う配置は、グループの数ｍ（＝５）に一致するｍトラックで一巡する。つまり、シフトによってグループ位置が異なる状態は、ｍ個の連続するトラックに一致するインターバルで一巡する。したがって、例えば、トラックＴＲＫ５におけるグループ（セクタ）Ａ，Ｂ，Ｃ，Ｄ及びＥの位置は、トラックＴＲＫ０におけるグループ（セクタ）Ａ，Ｂ，Ｃ，Ｄ及びＥのそれに一致する。つまり、トラックＴＲＫ５乃至ＴＲＫ９におけるグループ（セクタ）Ａ，Ｂ，Ｃ，Ｄ及びＥの位置は、トラックＴＲＫ０乃至ＴＲＫ４におけるそれらに一致する。
【００３３】
バンドＢＮＤｉの最終のトラックＴＲＫ９における６番目乃至１０番目（最終）のセクタ位置の領域には、グループＡ，Ｂ，Ｃ，Ｄ及びＥそれぞれに対応する５個のＸＯＲセクタが、例えば、この順番で配置される。グループｊ（ｊ＝Ａ，Ｂ，Ｃ，Ｄ，Ｅ）に対応するＸＯＲセクタには、ＸＯＲデータＸＯＲ＿ｊが格納される。ＸＯＲデータＸＯＲ＿ｊは、前述のように、グループｊ内の全セクタ（データセクタ）のデータを順次ビット毎にＸＯＲ演算を行うことにより生成される。
【００３４】
図２に示されるバンドＢＮＤｉにおけるグループ集合及びセクタ配置においては、矢印２０１の方向（ディスク１１の円周方向）に、グループＡ，Ｂ，Ｃ，Ｄ及びＥのデータセクタが１セクタずつ順に配置される。したがって、バンドＢＮＤｉ内のトラックＴＲＫｐ（ｐ＝０，１，…，９）上の任意の連続する５つのセクタは、その位置に無関係に、いずれも異なるグループに属する。また、図２に示されるバンドＢＮＤｉでは、グループ位置が、トラック毎に１セクタだけシフトされる。したがってバンドＢＮＤｉにおいて、矢印２０２の方向（ディスク１１の半径方向）に沿った任意の連続する５つのセクタは、その位置に無関係に、いずれも異なるグループに属する。
【００３５】
ところで、各データセクタには、エラー訂正符号（Error Correcting Code : ECC）が付加されているのが一般的である。ＥＣＣは、データセクタからのデータ読み出しにおいて、読み出されたデータが正しいかを判定し、正しくない場合には、読み出されたデータを訂正するのに用いられる。しかしデータセクタによっては、例えば、当該データセクタ（に対応するディスク１１上の領域）に付けられた傷の影響で、当該データセクタからのデータリードにおいて、ＥＣＣを用いてもエラー訂正が不可となるようなリードエラーが検出される場合がある。
【００３６】
このような場合でも、グループｊ内で、１つのデータセクタのみがエラー訂正が不可なエラーセクタ、つまり欠陥（defective）セクタであるならば、当該グループｊ内の残りのデータセクタと、当該グループｊに対応するＸＯＲセクタとに基づいて、当該欠陥セクタのデータを復元できる。これに対し、グループｊ内の欠陥セクタの数が、１を超えるならば、一般に、これらの欠陥セクタのデータを復元することはできない。
【００３７】
図２に示されるバンドＢＮＤｉにおいて、矢印２０１の方向に単一の傷が付いたものとする。この傷の範囲が、例えば、矢印２０１の方向に連続する５個のセクタに及んでいるものとする。このような場合、バンドＢＮＤｉからのデータ読み出しにおいて、上述の連続する５個のセクタが欠陥セクタとして検出される可能性がある。しかし、このような欠陥セクタの数は、グループＡ，Ｂ，Ｃ，Ｄ及びＥそれぞれで、たかだか１である。したがって、グループＡ，Ｂ，Ｃ，Ｄ及びＥ内の欠陥セクタのデータを復元可能である。
【００３８】
次に、矢印２０２の方向（つまり、ディスク１１の半径方向）に単一の傷が付いたものとする。この傷の範囲が、例えば、矢印２０２の方向に連続する５個のトラックに及んでいるものとする。このような場合でも、傷の影響で欠陥セクタとして検出される可能性のあるセクタの数は、グループＡ，Ｂ，Ｃ，Ｄ及びＥそれぞれで、たかだか１である。したがって、グループＡ，Ｂ，Ｃ，Ｄ及びＥ内の欠陥セクタのデータを復元可能である。
【００３９】
これに対し本実施形態と異なって、グループ毎に、データセクタの集合がまとめて配置されるものとする。このような配置において、上述の傷の範囲が、例えば、矢印２０１の方向に連続する５個のセクタ、または矢印２０２の方向に連続する５個のトラックに及んでいるものとする。このような場合、傷の影響で欠陥セクタとして検出される可能性のあるセクタの数は、当該傷の範囲に対応するグループ内で１を超える。したがって、このグループ内の欠陥セクタのデータを復元することはできない。
【００４０】
また、バンドＢＮＤｉ内のトラック毎に、グループＡ，Ｂ，Ｃ，Ｄ及びＥのデータセクタが１セクタずつ順に配置されるものの、本実施形態と異なって、グループ位置がバンドＢＮＤｉ内の全トラックＴＲＫ０乃至ＴＲＫ９において共通であるものとする。このような配置において、上述の傷の範囲が、例えば、矢印２０２の方向に連続する５個のトラックに及んでいるものとする。このような場合、傷の影響で欠陥セクタとして検出される可能性のあるセクタの数は、当該傷の範囲に対応するグループ内で１を超える。したがって、この対応するグループ内の欠陥セクタのデータを復元することはできない。
【００４１】
なお、本実施形態で適用されるグループの数５は一例である。しかし、グループの数は、５を超えても、或いは２乃至４のいずれか１つであっても構わない。グループの数が多いほど、グループ内のデータセクタは広範囲に分散されるため、同一グループ内で複数の欠陥セクタが発生する確率は低下する。但し、グループの数が多いほど、ＸＯＲセクタの数も多くなるため、バンドＢＮＤｉにおけるデータセクタの数は少なくなる。つまり、グループの数が多いほど、図１に示されるＨＤＤの記憶容量は小さくなる。
【００４２】
図２に示されるバンドＢＮＤｉにおけるグループ集合及びセクタ配置では、ある確率で、同一グループ内で１を超える数の欠陥セクタが発生する。このような状態は、例えば、傷の方向が矢印２０１または２０２の方向に対して斜めになっているような場合に発生する可能性がある。このような斜め方向の傷は、例えば、ヘッド１２をディスク１１上で移動させるためのシーク動作において、当該ヘッド１２がディスク１１に衝突した場合に発生する可能性がある。また上述の状態は、バンドＢＮＤｉ内に複数の傷が存在する場合にも発生する可能性がある。そのような場合におけるＨＤＤの障害復旧能力を高めるために、バンドＢＮＤｉが、異なるグループ化規則を適用する少なくとも２つのグループ集合を重複して有しても構わない。具体的には、バンドＢＮＤｉが、例えば、図２に示されるようなグループ集合（以下、第１のグループ集合と称する）に加えて、第１のグループ化規則とは異なる第２のグループ化規則を適用する別のグループ集合（以下、第２のグループ集合と称する）を有しても構わない。
【００４３】
図３は、バンドＢＮＤｉが第１のグループ集合に加えて第２のグループ集合を有する場合の、当該バンドＢＮＤｉにおける第２のグループ集合の例を示す。第２のグループ集合では、バンドＢＮＤｉの偶数トラックＴＲＫ０，ＴＲＫ２，ＴＲＫ４，ＴＲＫ６及びＴＲＫ８には、グループＸのデータセクタが配置される。一方、バンドＢＮＤｉの奇数トラックＴＲＫ１，ＴＲＫ３，ＴＲＫ５，ＴＲＫ７及びＴＲＫ９には、グループＹのデータセクタが配置される。
【００４４】
第２のグループ集合では、グループＸのデータセクタのデータに基づいて、グループＸに対応するＸＯＲデータＸＯＲ＿Ｘが生成され、グループＹのデータセクタのデータに基づいて、グループＹに対応するＸＯＲデータＸＯＲ＿Ｙが生成される。したがって、バンドＢＮＤｉが第１及び第２のグループ集合を有する場合、当該ＢＮＤｉは、ＸＯＲデータＸＯＲ＿Ａ，ＸＯＲ＿Ｂ，ＸＯＲ＿Ｃ，ＸＯＲ＿Ｄ，ＸＯＲ＿Ｅ，ＸＯＲ＿Ｘ及びＸＯＲ＿Ｙを格納するための７個のＸＯＲセクタを少なくとも必要とする。７個のＸＯＲセクタは、グループＡ，Ｂ，Ｃ，Ｄ，Ｅ，Ｘ及びＹにそれぞれ対応し、例えば、バンドＢＮＤｉの最終のトラックＴＲＫ９における４番目乃至１０番目のセクタ位置の領域に配置される。従ってバンドＢＮＤｉが第１及び第２のグループ集合を有する場合、図２に示されるトラックＴＲＫ９における４番目乃至１０番目のセクタは、図３と同様に、ＸＯＲデータＸＯＲ＿Ａ，ＸＯＲ＿Ｂ，ＸＯＲ＿Ｃ，ＸＯＲ＿Ｄ，ＸＯＲ＿Ｅ，ＸＯＲ＿Ｘ及びＸＯＲ＿Ｙを格納するための７個のＸＯＲセクタに置き換えられるべきである。
【００４５】
第１及び第２のグループ集合を有するバンドＢＮＤｉでは、当該バンドＢＮＤｉ内のそれぞれのデータセクタは、グループＡ，Ｂ，Ｃ，ＤまたはＥのいずれかと、グループＸまたはＹのいずれかに、重複して属する（図２及び図３）。したがって、例えば、第１のグループ集合内のグループＡに属する２つのセクタが欠陥セクタとして検出されたとしても、次の条件を満たすならば、２つの欠陥セクタのデータは復元できる。即ち、２つの欠陥セクタが、第２のグループ集合内のグループＸ及びＹに分かれて属するならば、２つの欠陥セクタのデータは、グループＸ及びＹに対応するそれぞれのＸＯＲセクタのデータを用いて復元できる。
【００４６】
以下、バンドＢＮＤｉが第１及び第２のグループ集合を有する場合の効果について、図４及び図５を参照して説明する。図４は、バンドＢＮＤｉが、第１のグループ集合のみを有する場合の、当該第１のグループ集合と欠陥セクタの例を示す。なお、図４において、グループＡ，Ｂ，Ｃ，Ｄ及びＥを示す矩形は、当該グループＡ，Ｂ，Ｃ，Ｄ及びＥにそれぞれ属するデータセクタの集合を論理的に表すもので、当該グループＡ，Ｂ，Ｃ，Ｄ及びＥの物理位置を表すものでないことに注意されたい。
【００４７】
図４において、Ｄ１乃至Ｄ６は欠陥セクタを示す。欠陥セクタＤ１及びＤ２は、いずれもグループＡに属する。これに対し、欠陥セクタＤ３，Ｄ４，Ｄ５及びＤ６は、それぞれ、グループＢ，Ｃ，Ｄ及びＥに属する。つまり、グループＢ，Ｃ，Ｄ及びＥの各々では、１つのデータセクタのみが欠陥セクタとして検出されているのに対し、グループＡでは、２つのデータセクタが欠陥セクタとして検出されている。この場合、グループＢ，Ｃ，Ｄ及びＥ内の欠陥セクタＤ３，Ｄ４，Ｄ５及びＤ６のデータは、グループＢ，Ｃ，Ｄ及びＥに対応するそれぞれのＸＯＲセクタを用いて復元できる。しかし、グループＡ内の２つの欠陥セクタＤ１及びＤ２のデータは、グループＡに対応するＸＯＲセクタを用いても復元できない。
【００４８】
図５は、バンドＢＮＤｉが、第１のグループ集合に加えて第２のグループ集合を有する場合の、当該第１及び第２のグループ集合と前述の欠陥セクタの例を示す。図５において、第１のグループ集合におけるグループＡ，Ｂ，Ｃ，Ｄ及びＥと欠陥セクタＤ１乃至Ｄ６との関係は、図４におけるそれと同様である。更に図５において、グループＡ，Ｂ，Ｄ及びＥにそれぞれ属する欠陥セクタＤ１，Ｄ３，Ｄ５及びＤ６は、グループＸにも属する。一方、グループＡ及びＣにそれぞれ属する欠陥セクタＤ２及びＤ４は、グループＹにも属する。
【００４９】
欠陥セクタＤ３，Ｄ４，Ｄ５及びＤ６のデータは、前述のようにグループＡ，Ｂ，Ｃ，Ｄ及びＥに対応するそれぞれのＸＯＲセクタを用いて復元できる。図５の例では、欠陥セクタＤ３，Ｄ４，Ｄ５及びＤ６のデータが復元できたならば、欠陥セクタＤ１のデータはグループＸに対応するＸＯＲセクタを用いて、欠陥セクタＤ２のデータはグループＹに対応するＸＯＲセクタを用いて、それぞれ復元できる。つまり、バンドＢＮＤｉが第１のグループ集合に加えて第２のグループ集合を有することにより、ＨＤＤの障害復旧能力を高めることができる。
【００５０】
しかし、例えば、欠陥セクタの数が図５の状態よりも増加したならば、欠陥セクタＤ１及びＤ２を含む幾つかの欠陥セクタのデータを復元することができない可能性がある。図６は、図５の状態よりも、欠陥セクタの数が１つ増加した場合の、第１及び第２のグループ集合と欠陥セクタの例を示す。図６において、Ｄ７は増加された欠陥セクタを示す。欠陥セクタＤ７は、グループＥ及びＹに属する。つまり、グループＥには２つの欠陥セクタＤ６及びＤ７が属する。この場合、欠陥セクタＤ３，Ｄ４及びＤ５のデータは復元できるものの、欠陥セクタＤ６のデータは、グループＥに対応するＸＯＲセクタを用いても復元できない。よって、欠陥セクタＤ１及びＤ２のデータは、グループＸ及びＹに対応するＸＯＲセクタを用いても復元できない。
【００５１】
図７は、バンドＢＮＤｉが、第１及び第２のグループ集合に加えて、第３のグループ集合を有する場合の、当該第１乃至第３のグループ集合と欠陥セクタの例を示す。第３のグループ集合は、第１及び第２のグループ化規則とは異なる第３のグループ化規則を適用する。図７において、第１のグループ集合におけるグループＡ，Ｂ，Ｃ，Ｄ及びＥと欠陥セクタＤ１乃至Ｄ７との関係、並びに第２のグループ集合におけるグループＸ及びＹと欠陥セクタＤ１乃至Ｄ７との関係は、図６におけるそれと同様である。また図７において、バンドＢＮＤｉは、第１及び第２のグループ集合に加えて、３つのグループα、β、γを含む第３のグループ集合を更に有している。
【００５２】
図７の例では、欠陥セクタＤ１及びＤ３はグループαにも属し、欠陥セクタＤ２，Ｄ４，Ｄ５及びＤ６はグループβにも属する。また、欠陥セクタＤ７はグループγにも属する。この場合、欠陥セクタＤ７のデータはグループγに対応するＸＯＲセクタを用いて復元できる。欠陥セクタＤ７のデータが復元された後のバンドＢＮＤｉは、図５と同様の状況になるので、残りの全ての欠陥セクタＤ１乃至Ｄ６のデータが復元できる。なお、バンドＢＮＤｉが、３つを超えるグループ集合を有していても構わない。
【００５３】
図８は図１に示されるＨＤＤにおけるＸＯＲ演算に関係する構成を示すブロック図である。図８では、ＨＤＣ１７２内のＭＩＦコントローラ１７２１及びシーケンサ１７２２は省略されている。以下の説明では、バンドＢＮＤｉが、例えば、図２に示されるような第１のグループ集合を有している場合を想定する。
【００５４】
ＤＲＡＭ１８内のＸＯＲ格納領域１８３は、第１のグループ集合内の全グループのＸＯＲデータ（より詳細には、最新のＸＯＲデータ）を格納するのに用いられる。つまり、ＸＯＲ格納領域１８３は、全グループのＸＯＲデータを格納するのに十分なサイズＳｓを有する。ＸＯＲ格納領域１８３に格納されている全グループのＸＯＲデータは、ＨＤＤへの電源供給が遮断された場合、例えば、フラッシュメモリ１９に退避される。
【００５５】
ＳＲＡＭ１７４内のＸＯＲ演算領域１７４０は、ＸＯＲ格納領域１８３から選択されたＸＯＲデータのコピーを、近い将来ＸＯＲ演算に用いられるＸＯＲデータとして格納するのに用いられる。ＸＯＲ演算領域１７４０は必ずしもサイズＳｓを有する必要はない。
【００５６】
ＨＤＣ１７２内の冗長生成器１７２３は、ＸＯＲ（排他的論理和）演算回路１７２３ａ及びセレクタ１７２３ｂを備えている。ＸＯＲ演算回路１７２３ａは、グループj（ｊ＝Ａ，Ｂ，Ｃ，Ｄ，Ｅ）に分類されるべきデータ（より詳細には、セクタサイズに対応するデータ）ｑがライトバッファ１８１から読み出されてバンドＢＮＤｉに書き込まれる場合に、当該データｑとＸＯＲ演算領域１７４０から読み出されるグループjのＸＯＲデータとの間で、ビット毎にＸＯＲ演算を行う。ＸＯＲ演算領域１７４０内のグループjのＸＯＲデータは、このＸＯＲ演算の結果に更新され、ＸＯＲ格納領域１８３内のグループjのＸＯＲデータ（ＸＯＲ＿ｊ）は、この更新されたＸＯＲデータに更新される。
【００５７】
セレクタ１７２３ｂは、ライトバッファ１８１から取り出されたデータｑまたはＸＯＲ演算回路１７２３ａのＸＯＲ演算の結果（ＸＯＲデータ）を、バンドＢＮＤｉに書き込まれるべきデータとして選択する。選択されたデータは、Ｒ／Ｗチャネル１７１に送出されて、ヘッドＩＣ１６を介してバンドＢＮＤｉに書き込まれる（追記される）。
【００５８】
次に本実施形態おいてバンドＢＮＤｉにデータ（ユーザデータ）を書き込むためのライト処理について、図９を参照して説明する。図９は、ライト処理の典型的な手順を示すフローチャートである。ライト処理は、図８に示されるＸＯＲ演算回路１７２３ａによるＸＯＲ演算の結果（ＸＯＲデータ）のバンドＢＮＤｉへの書き込み（つまり、ＸＯＲセクタの生成及び配置）を含む。
【００５９】
今、ホストからのライトコマンドに応じて、ＣＰＵ１７３が、ディスク１１上のバンドＢＮＤｉにデータをライトするためのライト処理を開始するものとする。この場合、まずＣＰＵ１７３はドライバＩＣ１５を介してＶＣＭ１４０を制御することにより、バンドＢＮＤｉの先頭トラックＴＲＫ０にヘッド１２を移動させる（Ｂ１０１）。すると、ＣＰＵ１７３は、ＨＤＣ１７２内のシーケンサ１７２２に制御を渡す。
【００６０】
シーケンサ１７２２は、ヘッド１２が移動されたトラックＴＲＫｐ（ここでは、トラックＴＲＫ０、つまりｐ＝０）内の先頭セクタを指し示すようにライトポインタをセットする（Ｂ１０２）。このライトポインタは、例えば、ＨＤＣ１７２内の特定のレジスタにセットされる。
【００６１】
次にシーケンサ１７２２は、管理テーブル１８２においてバンドＢＮＤｉに対応付けて保持されているグループ順パラメータ及びシフトパラメータに基づいて、ライトポインタの位置に対応するグループを決定し、決定されたグループを現在グループｊとして設定する（Ｂ１０３）。ここでは、現在グループｊはグループＡである。このとき、ＸＯＲ格納領域１８３には、第１のグループ集合におけるグループＡ，Ｂ，Ｃ，Ｄ及びＥそれぞれのＸＯＲデータの初期値（初期ＸＯＲデータ）が格納されている。初期ＸＯＲデータの全ビットは、例えば“０”である。次にシーケンサ１７２２は、ＸＯＲ格納領域１８３から現在グループｊに対応するＸＯＲデータＸＯＲ＿ｊ（＝ＸＯＲ＿Ａ）を選択し、当該ＸＯＲデータＸＯＲ＿ｊのコピーを、ＸＯＲ演算領域１７４０の例えばＸＯＲ１（ＸＯＲ１領域）に設定する（Ｂ１０４）。
【００６２】
次にシーケンサ１７２２は、ライトバッファ１８１から、ライトポインタの指し示すバンドＢＮＤｉ上のセクタ位置（つまり、ライトポインタ位置）に書かれるべきデータを取り出して、当該取り出されたデータを、バンドＢＮＤｉ上のライトポインタ位置に書き込む（Ｂ１０５）。より詳細に述べるならば、シーケンサ１７２２は、取り出されたデータを、セレクタ１７２３ｂ、Ｒ／Ｗチャネル１７１及びヘッドＩＣ１６を介してヘッド１２によりバンドＢＮＤｉ上のライトポインタ位置に書き込ませる。これにより、ライトポインタ位置に、グループｊに属するデータセクタＪが配置される。
【００６３】
また、Ｂ１０５においてシーケンサ１７２２は、ＸＯＲ演算領域１７４０から現在グループｊに対応するＸＯＲデータＸＯＲ＿ｊ（例えば、領域ＸＯＲ１内のＸＯＲデータＸＯＲ＿Ａ）を選択し、選択されたＸＯＲデータＸＯＲ＿ｊ及び取り出されたデータとのビット毎のＸＯＲ演算をＸＯＲ演算回路１７２３ａにより実行させる。また、Ｂ１０５においてシーケンサ１７２２は、ＸＯＲ演算に用いられたＸＯＲ演算領域１７４０内のＸＯＲデータを、ＸＯＲ演算回路１７２３ａによるＸＯＲ演算の結果に更新する。
【００６４】
前述したようにバンドＢＮＤｉは、データ追記型アクセス領域として用いられる。このためバンドＢＮＤｉへのデータ（ユーザデータ）の書き込みでは、データの上書きは発生しない。つまり、バンドＢＮＤｉへのデータの書き込みは、当該バンドＢＮＤｉ内の先頭のトラックの先頭セクタ位置から最終のトラックの最終のデータセクタ位置まで、１セクタ単位に順番に行われる。したがって、グループｊに分類されるべきデータがライトバッファ１８１から取り出されてバンドＢＮＤｉに書き込まれる毎に、ＸＯＲ演算回路１７２３ａが当該取り出されたデータに基づくＸＯＲ演算を実行する。そして、シーケンサ１７２２は、ＸＯＲデータＸＯＲ＿ｊをその演算結果に更新することにより、目的のＸＯＲデータＸＯＲ＿ｊを取得することができる。
【００６５】
ここで、取り出されたデータが、グループｊに分類されるべき最初のデータである場合、選択されたＸＯＲデータＸＯＲ＿ｊは初期ＸＯＲデータである。この場合、ＸＯＲ演算の結果は、取り出されたデータに一致する。取り出されたデータが、グループｊに分類されるべきｍ番目（ｍは１を超える整数）のデータである場合、選択されたＸＯＲデータＸＯＲ＿ｊは、グループｊに分類されるべきｍ−１番目のデータが取り出された場合におけるＸＯＲ演算の結果に一致する。Ｂ１０５においてシーケンサ１７２２は更に、ＸＯＲ格納領域１８３内のＸＯＲデータＸＯＲ＿ｊを、ＸＯＲ演算領域１７４０内の更新されたＸＯＲデータに更新する。
【００６６】
次にシーケンサ１７２２は、ライトポインタ位置がバンドＢＮＤｉの最終トラック内にあるかを判定する（Ｂ１０６）。もし、ライトポインタ位置が最終トラック内にないならば（Ｂ１０６のＮｏ）、シーケンサ１７２２はＢ１０９に進む。
【００６７】
これに対し、ライトポインタ位置が最終トラック内にあるならば（Ｂ１０６のＹｅｓ）、シーケンサ１７２２は、ライトポインタが最終トラック内の最終データセクタを指し示しているかを判定する（Ｂ１０７）。最終トラック内の最終データセクタとは、バンドＢＮＤｉが第１のグループ集合を有する場合、最終トラックにおいて、当該第１のグループ集合におけるグループ数（＝５）に一致する数の連続するセクタの直前のセクタを指す。その理由は、最終トラックにおいてグループ数（＝５）に一致する数の連続するセクタは、例えば図２から明らかなように、ＸＯＲセクタとして用いられるためである。もし、ライトポインタが最終トラック内の最終データセクタを指し示していないならば（Ｂ１０７のＮｏ）、Ｂ１０６のＮｏの場合と同様に、シーケンサ１７２２はＢ１０９に進む。
【００６８】
Ｂ１０９においてシーケンサ１７２２は、ライトポインタ位置の次のセクタのためのライトデータがライトバッファ１８１に格納されているかを判定する。もし、Ｂ１０９の判定がＹｅｓであるならば、シーケンサ１７２２は、ライトポインタが、ヘッド１２が現在位置しているトラック（より詳細には、最終トラック以外のトラック）内の最終データセクタを指し示しているかを判定する（Ｂ１１３）。
【００６９】
もし、Ｂ１１３の判定がＮｏであるならば、シーケンサ１７２２はライトポインタを１セクタだけ進めて（Ｂ１１４）、Ｂ１０３に戻る。これに対し、Ｂ１１３の判定がＹｅｓであるならば、シーケンサ１７２２はＣＰＵ１７３に制御を戻す。するとＣＰＵ１７３は、ドライバＩＣ１５を介してＶＣＭ１４０を制御することにより、バンドＢＮＤｉの次のトラックにヘッド１２を移動させ（Ｂ１１５）、しかる後にシーケンサ１７２２に制御を渡す。これによりシーケンサ１７２２は、Ｂ１０２に戻る。
【００７０】
一方、Ｂ１０９の判定がＮｏであるならば、シーケンサ１７２２はＢ１１０に進む。Ｂ１１０においてシーケンサ１７２２は、ライトポインタを１セクタずつ進めながら、例えば、その時点においてＸＯＲ格納領域１８３に格納されている、全グループの最新のＸＯＲデータＸＯＲ＿Ａ，ＸＯＲ＿Ｂ，ＸＯＲ＿Ｃ，ＸＯＲ＿Ｄ及びＸＯＲ＿Ｅを、その順番でバンドＢＮＤｉに書き込む（保存する）。つまりシーケンサ１７２２は、ＸＯＲデータＸＯＲ＿Ａ，ＸＯＲ＿Ｂ，ＸＯＲ＿Ｃ，ＸＯＲ＿Ｄ及びＸＯＲ＿Ｅがそれぞれ保持されたＸＯＲセクタを生成する。そしてシーケンサ１７２２は、生成されたＸＯＲセクタを、最後に配置されたデータセクタ（つまり、ユーザデータが書き込まれた最終データセクタ）に後続するセクタ領域（つまり、データセクタが配置されない空きセクタ領域）に連続して配置する。
【００７１】
次にシーケンサ１７２２は、後続のライトデータがホストからＨＤＤに転送されて、これによりバンドＢＮＤｉへのデータ書き込み（追記）の再開が可能な状態になるのを待つ（Ｂ１１１）。もし、バンドＢＮＤｉへのデータ書き込みの再開が可能となったならば（Ｂ１１１のＹｅｓ）、シーケンサ１７２２は、先頭のグループＡのＸＯＲデータＸＯＲ＿Ａが書き込まれたセクタ位置を指し示すように、ライトポインタを戻す（Ｂ１１２）。そしてシーケンサ１７２２は、Ｂ１０３に戻る。
【００７２】
やがて、バンドＢＮＤｉの最終トラック内の最終データセクタ位置にデータが書き込まれ、且つＸＯＲデータＸＯＲ＿ｊが更新されたものとする（Ｂ１０５）。つまり、バンドＢＮＤｉへのユーザデータの書き込みが完了したものとする。この場合、Ｂ１０６及びＢ１０７の判定はいずれもＹｅｓとなり、シーケンサ１７２２はＢ１１０と同様に、ライトポインタを１セクタずつ進めながら、その時点においてＸＯＲ格納領域１８３に格納されている全グループのＸＯＲデータＸＯＲ＿Ａ，ＸＯＲ＿Ｂ，ＸＯＲ＿Ｃ，ＸＯＲ＿Ｄ及びＸＯＲ＿Ｅを、その順番でバンドＢＮＤｉの最終トラック内の最終データセクタに後続する領域に書き込む（Ｂ１０８）。これによりライト処理は終了する。
【００７３】
次に、上述のライト処理の具体例について、図１０乃至図１３を参照して説明する。但し、図１０乃至図１３は、説明の簡略化のために、第１のグループ集合が図２の例とは異なって、グループＡ，Ｂ及びＣから構成される例とする。図１０乃至図１３は、ライト処理の第１乃至第４の時点においてそれぞれ実行されるＸＯＲデータ処理の例を説明するための図である。
【００７４】
まず、ホストからの第１のライトコマンドで指定されたデータ１乃至６のうちのデータ１乃至３が、図１０に示されるように、バンドＢＮＤｉのトラックＴＲＫ０の１番目乃至３番目のセクタ位置に既に書き込まれているものとする。その後の第１の時点において、ライトバッファ１８１からデータ４が取り出されて、当該データ４が、トラックＴＲＫ０の４番目のセクタ位置に書き込まれものとする。データ１乃至６、及び後述のデータ７乃至９は、セクタ単位のユーザデータである。グループＡ，Ｂ及びＣから構成されるグループ集合を前提とする場合、データ１及び４はグループＡに、データ２及び５はグループＢに、そしてデータ３及び６はグループＣに、それぞれ属する。
【００７５】
データ１乃至３が、バンドＢＮＤｉのトラックＴＲＫ０の１番目乃至３番目のセクタ位置に既に書き込まれている状態では、データ１，２及び３に基づいて生成（更新）されたＸＯＲデータＸＯＲ＿Ａ，ＸＯＲ＿Ｂ及びＸＯＲ＿Ｃが、図１０に示されるようにＸＯＲ格納領域１８３に格納されている。つまりＸＯＲ格納領域１８３には、全てのグループの最新のＸＯＲデータが格納されている。このときのＸＯＲデータＸＯＲ＿Ａ，ＸＯＲ＿Ｂ及びＸＯＲ＿Ｃは、データ１，２及び３に一致する。
【００７６】
また、ＸＯＲ演算領域１７４０のＸＯＲ１，ＸＯＲ２及びＸＯＲ３にも、図１０に示されるように、最新のＸＯＲデータＸＯＲ＿Ａ，ＸＯＲ＿Ｂ及びＸＯＲ＿Ｃが格納されている。しかし、ＸＯＲ演算領域１７４０は、必ずしも全グループのＸＯＲデータを格納するのに十分なサイズＳｓを有していなくても構わない。但し、この場合、ＸＯＲ演算領域１７４０内のＸＯＲデータの入れ替えのために、ライト処理の流れが途切れる可能性がある。そこで、ＸＯＲ演算回路１７２３ａが、或るグループのＸＯＲデータ及びユーザデータに基づくＸＯＲ演算を実行している間に、シーケンサ１７２２が、他のグループのＸＯＲデータをＸＯＲ格納領域１８３からＸＯＲ演算領域１７４０にコピーしても良い。このようなパイプライン処理により、ＸＯＲ演算領域１７４０が全グループのＸＯＲデータを格納するのに十分なサイズＳｓを有していなくても、ライト処理の流れが途切れるのを防止できる。
【００７７】
さて、ライトバッファ１８１から取り出されたデータ４が、グループＡのセクタデータとして、トラックＴＲＫ０の４番目のセクタ位置に書き込まれる場合、ＸＯＲ演算回路１７２３ａは、図１０に示されるように、当該データ４とＸＯＲ演算領域１７４０のＸＯＲ１内のデータ（つまり、ＸＯＲデータＸＯＲ＿Ａ）との間のＸＯＲ演算を行う。ＸＯＲ１内のＸＯＲデータＸＯＲ＿Ａは、このＸＯＲ演算の結果に更新される。更新されたＸＯＲデータＸＯＲ＿Ａは、ＸＯＲ格納領域１８３内の元のデータＸＯＲ＿Ａの位置にコピーされる。つまり、ＸＯＲ格納領域１８３内のＸＯＲデータＸＯＲ＿Ａも、グループＡのデータ４に基づくＸＯＲ演算の結果に更新される。
【００７８】
その後、データ５がグループＢのセクタデータとして、トラックＴＲＫ０の５番目のセクタ位置に書き込まれたものとする。すると、その後の第２の時点において、データ６がグループＣのセクタデータとして、図１１に示されるようにトラックＴＲＫ０の６番目のセクタ位置に書き込まれる。
【００７９】
この場合、ＸＯＲ演算回路１７２３ａは、図１１に示されるように、データ６とＸＯＲ演算領域１７４０のＸＯＲ３内のデータ（ＸＯＲ＿Ｃ）との間のＸＯＲ演算を行う。ＸＯＲ３内のデータ（ＸＯＲ＿Ｃ）およびＸＯＲ格納領域１８３内のＸＯＲデータＸＯＲ＿Ｃが、このＸＯＲ演算の結果に更新される。
【００８０】
図１１では、データ６がバンドＢＮＤｉに書き込まれた状態で、次のライトデータはライトバッファ１８１に存在せず（図９のＢ１０９のＮｏ）、したがってバンドＢＮＤｉへのデータの追記が中断される。この場合、シーケンサ１７２２は、例えば、追記中断時点（第３の時点）においてＸＯＲ格納領域１８３に格納されているＸＯＲデータＸＯＲ＿Ａ、ＸＯＲ＿Ｂ、ＸＯＲ＿Ｃを、図１２に示されるように、最後にユーザデータ（データ６）が書き込まれたバンドＢＮＤｉ内のセクタ位置に後続するセクタ領域に書き込む（図９のＢ１１０）。
【００８１】
この書き込みにより、追記途中の最新のＸＯＲデータＸＯＲ＿Ａ、ＸＯＲ＿Ｂ、ＸＯＲ＿ＣがバンドＢＮＤｉ内に保存される。なお、この書き込みに、ＸＯＲ演算領域１７４０のＸＯＲ１，ＸＯＲ２及びＸＯＲ３内のＸＯＲデータＸＯＲ＿Ａ、ＸＯＲ＿Ｂ、ＸＯＲ＿Ｃが用いられても良い。
【００８２】
その後、図１３に示されるように、ホストからの第２のライトコマンドで指定された後続のデータ７乃至９が、ライトバッファ１８１に格納され、これにより追記が再開されるものとする（Ｂ１１１のＹｅｓ）。すると、図１３に示されるように、第４の時点において、データ７がグループＡのセクタデータとして、トラックＴＲＫ０の７番目のセクタ位置に書き込まれる（Ｂ１１２，Ｂ１０３乃至Ｂ１０５）。つまり、追記途中のＸＯＲデータＸＯＲ＿Ａが保存されていた７番目のセクタ位置に、データ７が上書きされる。
【００８３】
この場合、ＸＯＲ演算回路１７２３ａは、図１３に示されるように、データ７とＸＯＲ演算領域１７４０のＸＯＲ１内のデータ（ＸＯＲ＿Ａ）との間のＸＯＲ演算を行う。ＸＯＲ１内のデータ（ＸＯＲ＿Ａ）は、このＸＯＲ演算の結果に更新され、ＸＯＲ格納領域１８３内のＸＯＲデータＸＯＲ＿Ａも、このＸＯＲ演算の結果に更新される。その後、図１３には示されていないが、後続のデータ８及び９が、トラックＴＲＫ０の８番目及び９番目のセクタ位置に書き込まれる。つまり、追記途中のＸＯＲデータＸＯＲ＿Ｂ及びＸＯＲ＿Ｃが保存されていた８番目及び９番目のセクタ位置に、データ８及び９が上書きされる。
【００８４】
トラックＴＲＫ０の７番目、８番目及び９番目のセクタ位置に保存されていたＸＯＲデータＸＯＲ＿Ａ，ＸＯＲ＿Ｂ及びＸＯＲ＿Ｃは、追記の再開により古くなり、不要となる。そこで、ＨＤＤの記憶容量を確保するために、上述の上書きが行われる。この上書きにより、一時的にＸＯＲセクタとして用いられていたセクタは、再びデータセクタとして用いられる。なお、バンドＢＮＤｉはデータ追記型アクセス領域として用いられるため、ユーザデータ（データセクタ）が上書きされることはない。
【００８５】
ここで、最新のＸＯＲデータがバンドＢＮＤｉに書き込まれる前に、ＨＤＤへの電源供給が遮断されたものとする。この場合、ＸＯＲ格納領域１８３及びＸＯＲ演算領域１７４０内のＸＯＲデータは消失する。そこで本実施形態では、ＨＤＤへの電源供給が突然遮断される異常時に、シーケンサ１７２２は、ＸＯＲ格納領域１８３（またはＸＯＲ演算領域１７４）に格納されている全グループのＸＯＲデータを、ライトポインタと共に、フラッシュメモリ１９に退避する。なお、ライトポインタを退避する代わりに、ディスク１１上の各セクタにどこまでライトしたかが判別できるような情報を付与しても良い。
【００８６】
次に、フラッシュメモリ１９に退避されたＸＯＲデータをＸＯＲ格納領域１８３にロードするためのＸＯＲデータロード処理について、図１４を参照して説明する。図１４は、本実施形態におけるＸＯＲデータロード処理の典型的な手順を示すフローチャートである。
【００８７】
今、ＨＤＤへの電源供給が遮断された後、再びＨＤＤに電源が供給されて、バンドへの追記が再開されるものとする。この場合、ＣＰＵ１７３は、シーケンサ１７２２に対してＸＯＲデータロード処理を指示する。するとシーケンサ１７２２は、管理テーブルを参照して、データライトが完了していないバンド（つまり、追記途中のバンド）があるかを確認する。もし、追記途中のバンドがあるならば、シーケンサ１７２２は、そのバンドを特定する（Ｂ２０１）。つまり、シーケンサ１７２２は、追記途中のバンドの論理アドレス（例えば、論理ブロックアドレス）及び物理アドレスを取得する。
【００８８】
次にシーケンサ１７２２は、前回の電源遮断が正常であったかを判定する（Ｂ２０２）。正常な電源遮断とは、例えば、ホストからのスタンバイコマンドに応じて、ヘッド１２が退避した状態で電源が遮断される状態を指す。これに対して、正常でない電源遮断（つまり、異常な電源遮断）とは、例えば、データライト中にＨＤＤへの電源供給が突然停止される状態を指す。本実施形態においてＣＰＵ１７３は、異常な電源遮断の検出に応じて、それを示す情報、例えばフラグ情報を、フラッシュメモリ１９の特定領域に格納する。そこでシーケンサ１７２２は、フラッシュメモリ１９内の特定領域を参照することにより、正常な電源遮断であったかを判定する（Ｂ２０２）。
【００８９】
もし、正常な電源遮断でなかったならば（Ｂ２０２のＮｏ）、シーケンサ１７２２は、ＸＯＲ格納領域１８３に格納されていたＸＯＲデータ（より詳細には、特定されたバンドに関する全グループのＸＯＲデータ）がフラッシュメモリ１９に退避されていると判断する。この場合、シーケンサ１７２２は、フラッシュメモリ１９に退避されたＸＯＲデータをＸＯＲ格納領域１８３にロードして（Ｂ２０３）、ＸＯＲデータロード処理を終了する。
【００９０】
これに対し、正常な電源遮断であったならば（Ｂ２０２のＹｅｓ）、シーケンサ１７２２は、特定されたバンドに書き込まれた当該特定されたバンドに関する全グループのＸＯＲデータをＸＯＲ格納領域１８３にロードする（Ｂ２０４）。このロードのためにシーケンサ１７２２は、特定されたバンドに関する全グループのＸＯＲデータが格納されたセクタ位置の物理アドレスを、管理テーブル１８２から取得する。シーケンサ１７２２は、Ｂ２０４を実行すると、ＸＯＲデータロード処理を終了する。
【００９１】
本実施形態では、追記途中のバンドに関するＸＯＲデータが、異常な電源遮断の検出に応じてフラッシュメモリ１９に退避される。また本実施形態では、ＸＯＲデータがＨＤＣ１７２内の冗長生成器１７２３（ＸＯＲ演算回路１７２３ａ）によってハードウェア的に生成される。しかし、ＸＯＲデータがＣＰＵ１７３によるプログラム処理によって生成されても構わない。
【００９２】
以上説明した少なくとも１つの実施形態によれば、同一グループ内の少なくとも２つのセクタがエラーセクタとして検出されるのを極力防止できる。
【００９３】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００９４】
１１…ディスク、１２…ヘッド、１７…コントローラ、１８…ＤＲＡＭ、１９…フラッシュメモリ、１７２…ディスクコントローラ（ＨＤＣ）、１７３…ＣＰＵ、１７４…ＳＲＡＭ、１８１…ライトバッファ、１８２…管理テーブル、１８３…ＸＯＲ格納領域、１７２１…メモリインタフェース（ＭＩＦ）コントローラ、１７２２…シーケンサ、１７２３…冗長生成器、１７２３ａ…ＸＯＲ演算回路、１７４０…ＸＯＲ演算領域、ＢＮＤｉ…バンド、Ａ，Ｂ，Ｃ，Ｄ，Ｅ，Ｘ，Ｙ…グループ。
【図１】
2016219077.tif 000003
【図２】
2016219077.tif 000004
【図３】
2016219077.tif 000005
【図４】
2016219077.tif 000006
【図５】
2016219077.tif 000007
【図６】
2016219077.tif 000008
【図７】
2016219077.tif 000009
【図８】
2016219077.tif 000010
【図９】
2016219077.tif 000011
【図１０】
2016219077.tif 000012
【図１１】
2016219077.tif 000013
【図１２】
2016219077.tif 000014
【図１３】
2016219077.tif 000015
【図１４】
2016219077.tif 000016