(57)【要約】【課題】メモリ資源を用いずに冗長セクタデータの有効性を判定することができる記憶装置および記憶装置制御方法を提供すること。【解決手段】ユーザデータが記憶される複数のセクタ毎にかかるセクタに記憶されているデータを復旧するためのデータを記憶する冗長セクタを設けるとともに、各セクタに冗長セクタに記憶されているデータが有効であるか否かを示す情報である識別用コードを記憶させ、かかる識別用コードに基づいて、冗長セクタに記憶されているデータを用いてデータ復旧処理を行うことができるか否かを判定する。【選択図】        図１−１
2010146625.tif 000002
【特許請求の範囲】
【請求項１】
データが記憶されるセクタである通常セクタと、複数の通常セクタ毎に該通常セクタに記憶されているデータを復旧するためのデータが記憶されるセクタである冗長セクタとを有する記憶媒体と、
前記複数の通常セクタと該複数の通常セクタに対応する冗長セクタとの組合せであるデータ区分に属する通常セクタにデータを書き込む場合に、該データ区分に属する冗長セクタに記憶されている冗長セクタデータが無効であることを示す情報である無効情報を、データ書き込み先の通常セクタに記憶させるように制御する制御部と
を備えたことを特徴とする記憶装置。
【請求項２】
前記制御部は、データ区分内の全ての通常セクタにデータを書き込んだ場合に、該データ区分に属する通常セクタに記憶されているデータに基づいて冗長セクタデータを再生成して、再生成した冗長セクタデータを該データ区分に属する冗長セクタに記憶させるとともに、冗長セクタデータが有効であることを示す情報である有効情報を、データ書き込み先の通常セクタに記憶させるように制御することを特徴とする請求項１に記載の記憶装置。
【請求項３】
前記制御部は、
前記記憶媒体からデータを読み出す場合に、無効情報が記憶されている通常セクタが存在するか否かを判定する判定部と、
前記判定部によって無効情報が記憶されている通常セクタが存在すると判定された場合に、該通常セクタが属するデータ区分の冗長セクタデータを再生成して、該データ区分に属する冗長セクタの冗長セクタデータを、再生成した冗長セクタデータに更新するともに、該冗長セクタと同一のデータ区分に属する通常セクタに有効情報を記憶させる更新部と
を有することを特徴とする請求項１または２に記載の記憶装置。
【請求項４】
データが記憶されるセクタである通常セクタと、複数の通常セクタ毎に該通常セクタに記憶されているデータを復旧するためのデータが記憶されるセクタである冗長セクタとを有する記憶媒体にアクセスする記憶装置による記憶装置制御方法であって、
前記記憶装置が、
前記複数の通常セクタと該複数の通常セクタに対応する冗長セクタとの組合せであるデータ区分に属する通常セクタにデータを書き込む場合に、該データ区分に属する冗長セクタに記憶されている冗長セクタデータが無効であることを示す情報である無効情報を、データ書き込み先の通常セクタに記憶させるように制御する制御工程
を含んだことを特徴とする記憶装置制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、記憶装置および記憶装置制御方法に関する。
【背景技術】
【０００２】
近年、磁気ディスク装置等の記憶装置の記憶容量は増加傾向にある。例えば、近年の磁気ディスク装置には、１［ＴＢ（テラバイト）］以上の記録容量を有するものもある。一般に、このような記憶装置は、記憶媒体の記録密度を向上させることにより大容量化を実現している。すなわち、大容量の記憶装置は、データの読み書き単位であるセクタに多くのデータを記録する。
【０００３】
このような大容量の記憶装置を用いると、データの読み出しエラーが発生した場合に被害を受けるデータが膨大になる。具体的には、上述したように、大容量の記憶装置は、１個のセクタに多くのデータを書き込むため、１個のセクタが読み出しエラーになった場合に、多くのデータを読み出せなくなる。特に、データを管理するディレクトリ情報等が記録されているセクタが読み出しエラーになった場合、記憶装置は、より多くのデータを読み出せなくなる。
【０００４】
そこで、近年では、読み出しエラーになったデータを復旧することができる記憶装置が提案されている（特許文献１〜４を参照）。例えば、特許文献１には、複数のセクタ毎に、かかるセクタに記憶されているデータの排他的論理和の計算結果を所定のセクタ（以下、「冗長セクタ」という）に記憶する磁気ディスク装置が開示されている。かかる磁気ディスク装置は、所定のセクタからデータを読み出せなかった場合に、冗長セクタに記憶されているデータを用いて、読み出しエラーになったデータを復旧する。
【０００５】
なお、以下では、冗長セクタに記憶されているエラー訂正用のデータを「冗長セクタデータ」と呼ぶこととする。また、ユーザデータ等が記憶される冗長セクタ以外のセクタを「通常セクタ」と呼ぶこととし、通常セクタに記憶されているデータを「通常セクタデータ」と呼ぶこととする。また、複数の通常セクタと、かかる複数の通常セクタに記憶されている通常セクタデータに基づいて生成された冗長セクタデータを記憶する冗長セクタとの組合せを「データ区分」と呼ぶこととする。
【０００６】
ところで、特許文献１に開示されている磁気ディスク装置は、冗長セクタデータが有効であるか否かを示す情報を所定のメモリ上に保持する。具体的に説明すると、特許文献１に開示されている磁気ディスク装置は、所定のデータ区分に属する一部の通常セクタデータを更新する場合、冗長セクタデータを更新しない。これは、一部の通常セクタデータを更新するたびに冗長セクタデータを更新する処理は、処理性能が低下してしまい現実的ではないからである。
【０００７】
ただし、通常セクタデータを更新したにも関わらず、冗長セクタデータを更新しない場合、磁気ディスク装置は、かかる冗長セクタデータを用いてデータ復旧処理を行うことができない。そこで、特許文献１に開示されている磁気ディスク装置は、各冗長セクタに対応付けて、冗長セクタデータを用いて通常セクタデータを復旧することが可能か否かを示す有効無効情報をメモリ上に保持する。
【０００８】
【特許文献１】特開２００８−７７４５８号公報
【特許文献２】特開平５−１９９７９号公報
【特許文献３】特開平５−３５４１６号公報
【特許文献４】特開平７−４４３２６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
しかしながら、上記特許文献１に記載の磁気ディスク装置には、多くのメモリ資源を用いるという問題があった。特に、近年の磁気ディスク装置は、記憶媒体の記録密度向上に伴って冗長セクタの数も増大するので、上述した有効無効情報を保持するには多くのメモリ資源を用いるという問題があった。
【００１０】
例えば、１［ＴＢ］の容量を有する磁気ディスク装置の場合、記録媒体上のトラック数は、１００万トラック程度になる。このため、１トラック毎に冗長セクタを設けると、１００万個の有効無効情報が必要になり、多くのメモリ資源を用いることになる。
【００１１】
このように、有効無効情報を保持する磁気ディスク装置は、処理性能を低下させずにデータ復旧処理を行うことができる反面、多くのメモリ資源を用いるというデメリットを有していた。
【００１２】
なお、上述した問題は、磁気ディスク装置についてのみ発生する問題ではなく、例えば、光磁気ディスク装置、光ディスク装置、メモリディスク装置等の他の記憶装置にも発生する問題である。
【００１３】
開示の技術は、上述した従来技術による問題点を解消するためになされたものであり、メモリ資源を用いずに冗長セクタデータの有効性を判定することができる記憶装置および記憶装置制御方法を提供することを目的とする。
【課題を解決するための手段】
【００１４】
上述した課題を解決し、目的を達成するために、本願に開示する記憶装置は、データが記憶されるセクタである通常セクタと、複数の通常セクタ毎に該通常セクタに記憶されているデータを復旧するためのデータが記憶されるセクタである冗長セクタとを有する記憶媒体と、前記複数の通常セクタと該複数の通常セクタに対応する冗長セクタとの組合せであるデータ区分に属する通常セクタにデータを書き込む場合に、該データ区分に属する冗長セクタに記憶されている冗長セクタデータが無効であることを示す情報である無効情報を、データ書き込み先の通常セクタに記憶させるように制御する制御部とを備えたことを要件とする。
【００１５】
なお、本願に開示する記憶装置の構成要素、表現または構成要素の任意の組合せを、方法、装置、システム、コンピュータプログラム、記録媒体、データ構造などに適用したものも、他の態様として有効である。
【発明の効果】
【００１６】
本願に開示した記憶装置によれば、メモリ資源を用いずに冗長セクタデータの有効性を判定することができるという効果を奏する。
【発明を実施するための最良の形態】
【００１７】
以下に、本願に開示する記憶装置および記憶装置制御方法の実施例を図面に基づいて詳細に説明する。なお、この実施例により本願に開示する記憶装置および記憶装置制御方法が限定されるものではない。例えば、以下の実施例では、本願に開示する記憶装置を磁気ディスク装置に適用する場合を例に挙げて説明するが、本願に開示する記憶装置は、光磁気ディスク装置、光ディスク装置、メモリディスク装置等の記憶装置にも適用することができる。
【実施例１】
【００１８】
まず、実施例１に係る磁気ディスク装置１００の概要について説明する。実施例１に係る磁気ディスク装置１００の磁気記録媒体は、複数の通常セクタ毎に、通常セクタデータを復旧するためのデータを記憶する冗長セクタを有する。そして、磁気ディスク装置１００は、それぞれの通常セクタに、冗長セクタデータが有効であるか否かを示す情報を記憶させる。なお、以下では、冗長セクタが有効であるか否かを示す情報を「識別用コード」と呼び、識別用コードが記憶される領域を「識別用領域」と呼ぶこととする。
【００１９】
具体的には、磁気ディスク装置１００は、所定のデータ区分に対して、冗長セクタデータを更新せずに、通常セクタデータを更新する場合、かかる通常セクタの識別用領域に、冗長セクタデータが無効であることを示す識別用データを記憶させる。このような更新処理は、所定のデータ区分に属する一部の通常セクタを更新する場合に発生し得る。これは、上述したように、データ区分に属する一部の通常セクタデータを更新するたびに冗長セクタデータを更新すると、磁気ディスク装置１００の処理性能が低下してしまうからである。
【００２０】
一方、磁気ディスク装置１００は、所定のデータ区分に対して、冗長セクタデータと通常セクタデータとを更新する場合、かかる通常セクタの識別用領域に、冗長セクタデータが有効であることを示す識別用データを記憶させる。このような更新処理は、所定のデータ区分に属する全ての通常セクタを更新する場合に発生し得る。
【００２１】
上述した磁気ディスク装置１００の概要について、図１−１および図１−２を用いて具体的に説明する。図１−１および図１−２は、実施例１に係る磁気ディスク装置の概要を説明するための図である。
【００２２】
図１−１および図１−２には、実施例１に係る磁気ディスク装置１００が有する磁気記憶媒体１１１上の１個のデータ区分を示す。図１−１において、符号「Ｋ」〜「Ｌ−１」が示す矩形はそれぞれ通常セクタを示しており、符号「Ｄ１」が示す矩形は冗長セクタを示している。なお、符号「Ｋ」〜「Ｌ−１」、「Ｄ１」は、磁気記憶媒体１１１にアクセスする単位に付与されるＬＢＡ（Logical  Block  Address）を示すものとする。
【００２３】
また、図１−１に示すように、磁気記憶媒体１１１は、それぞれの通常セクタＫ〜Ｌ−１に、識別用領域ＫＤ〜ＬＤ−１を有する。磁気ディスク装置１００は、かかる識別用領域ＫＤ〜ＬＤ−１に、冗長セクタＤ１に記憶されている冗長セクタデータが有効であるか否かを示す識別用コードを記憶させる。なお、本明細書では、識別用コード「Ｍ」は冗長セクタデータが有効であることを示し、識別用コード「Ｎ」は冗長セクタデータが無効であることを示すものとする。
【００２４】
これにより、磁気ディスク装置１００は、識別用領域ＫＤ〜ＬＤ−１に記憶されている識別用コードを用いて、冗長セクタデータが有効であるか否かを判定することができる。例えば、図１−１の上段に示した状態において、磁気ディスク装置１００は、通常セクタＫ＋２からデータを読み出せなかったものとする。かかる場合、磁気ディスク装置１００は、通常セクタＫ〜Ｌ−１の識別用領域ＫＤ〜ＬＤ−１に記憶されている識別用コードが全て「Ｍ」であるので、冗長セクタＤ１に記憶されている冗長セクタデータが有効であると判定することができる。そして、磁気ディスク装置１００は、通常セクタＫ、Ｋ＋１、Ｋ＋３〜Ｌ−１に記憶されている通常セクタデータと、冗長セクタＤ１に記憶されている冗長セクタデータとの排他的論理和を計算することにより、通常セクタＫ＋２に記憶されているデータを復旧することができる。
【００２５】
ここで、図１−１の上段に示した状態において、磁気ディスク装置１００は、冗長セクタデータを更新せずに、通常セクタＫ＋１に記憶されている通常セクタデータを更新するものとする。かかる場合、磁気ディスク装置１００は、図１−１の下段に斜線を付して示したように、通常セクタＫ＋１の識別用領域ＫＤ＋１に、冗長セクタＤ１に記憶されている冗長セクタデータが無効であることを示す識別用コード「Ｎ」を記憶させる。
【００２６】
図１−１の下段に示した状態において、磁気ディスク装置１００は、通常セクタＫ＋２からデータを読み出せなかったものとする。かかる場合、磁気ディスク装置１００は、通常セクタＫ〜Ｌ−１の識別用領域ＫＤ〜ＬＤ−１に記憶されている識別用コードに「Ｍ」が含まれるので、冗長セクタデータが無効であると判定することができる。このような場合、磁気ディスク装置１００は、上述したような排他的論理和を計算することなく、読み出しエラーになったことを上位装置等に通知する。
【００２７】
このように、磁気ディスク装置１００は、冗長セクタデータが有効であるか否かを示す情報を通常セクタに記憶させるので、メモリ資源を用いずに冗長セクタデータの有効性を判定することができる。
【００２８】
続いて、磁気ディスク装置１００による冗長セクタデータ更新処理について説明する。磁気ディスク装置１００は、所定のタイミングになった場合に、冗長セクタデータ更新処理を行う。なお、ここで言う「所定のタイミング」とは、例えば、磁気記憶媒体１１１へアクセスを行わないタイミング等を示す。
【００２９】
具体的には、磁気ディスク装置１００は、所定のタイミングになった場合に、磁気記憶媒体１１１からデータ区分毎に通常セクタデータを読み出す。そして、磁気ディスク装置１００は、読み出した通常セクタデータ内の識別用領域に、冗長セクタデータが無効であることを示す識別用コードが記憶されているか否かを判定する。そして、磁気ディスク装置１００は、識別用領域に冗長セクタデータが無効であることを示す識別用コードが記憶されている場合、読み出した通常セクタデータを用いて冗長セクタデータを生成し、生成した冗長セクタデータを冗長セクタに記憶させる。
【００３０】
かかる冗長セクタデータ更新処理について図１−２を用いて具体的に説明する。図１−２の上段には、図１−１の下段に示した状態と同様の状態のデータ区分を示す。すなわち、図１−２の上段に示したデータ区分は、通常セクタＫ＋１の識別用領域ＫＤ＋１に、識別用コード「Ｎ」が記憶されている。
【００３１】
このような状態において、磁気ディスク装置１００は、所定のタイミングになった場合に、通常セクタＫ〜Ｌ−１から通常セクタデータを読み出す。そして、磁気ディスク装置１００は、識別用領域ＫＤ＋１に識別用コード「Ｎ」が記憶されているため、読み出した通常セクタデータを用いて冗長セクタデータを生成する。そして、磁気ディスク装置１００は、図１−２の上段に斜線を付して示したように、冗長セクタＤ１に記憶されている冗長セクタデータを、生成した冗長セクタデータに更新する。
【００３２】
続いて、磁気ディスク装置１００は、図１−２の下段に斜線を付して示したように、識別用領域ＫＤ＋１に記憶されている識別用コードを「Ｎ」から「Ｍ」に更新する。これにより、磁気ディスク装置１００は、冗長セクタＤ１に記憶されている冗長セクタデータが有効であると判定することができる。
【００３３】
なお、一般的に、パーソナルコンピュータ（ＰＣ）等の上位装置は、動作中のほんのわずかな時間しか磁気ディスク装置１００にアクセスしない。つまり、磁気ディスク装置１００は、ほとんどの時間を上位装置からのコマンド待ち状態に費やす。したがって、図１−１の下段に示した例のように冗長セクタデータが無効になった場合であっても、磁気ディスク装置１００は、即座に冗長セクタデータを有効な状態にすることができる。
【００３４】
このように、実施例１に係る磁気ディスク装置１００は、冗長セクタデータが有効であるか否かを示す識別用コードを磁気記憶媒体１１１上の通常セクタに記憶させる。これにより、磁気ディスク装置１００は、メモリ資源を用いずに冗長セクタデータの有効性を判定することができ、通常セクタデータを復旧することができる。その結果、磁気ディスク装置１００は、磁気ディスクの信頼性を高めることができる。
【００３５】
次に、実施例１に係る磁気ディスク装置１００と上位装置との関係について説明する。図２は、実施例１に係る磁気ディスク装置１００と上位装置１０との関係を示す図である。図２に示すように、磁気ディスク装置１００は、パーソナルコンピュータ等の上位装置１０とホストインタフェース（以下、「ホストＩＦ」という）１１を介して接続される。
【００３６】
次に、実施例１に係る磁気ディスク装置１００の構成について説明する。図３は、実施例１に係る磁気ディスク装置１００の構成を示す図である。図３に示すように、磁気ディスク装置１００は、ホストＩＦ１１と、磁気記憶媒体１１１と、ヘッド１１２と、ボイスコイルモータ（以下、「ＶＣＭ」という）１１３と、スピンドルモータ（以下、「ＳＰＭ」という）１１４と、ヘッドＩＣ（Integrated  Circuit）１１５と、共有バス１１６と、ホストＩＦ制御部１２０と、バッファ制御部１３０と、バッファメモリ１３１と、冗長生成部１３２と、識別コード部１３３と、フォーマット制御部１４０と、リードチャネル１５０と、ＭＰＵ（Micro  Processing  Unit）１６０と、メモリ１７０と、不揮発メモリ１８０と、サーボ制御部１９０とを有する。
【００３７】
ホストＩＦ１１は、図２に示したように、磁気ディスク装置１００と上位装置１０とを接続するためのインタフェースである。磁気記憶媒体１１１は、金属またはガラス製などの円盤（ディスク）状の基板に磁性膜が形成されており、データを記憶する。上述したように、実施例１における磁気記憶媒体１１１は、複数の通常セクタ毎に冗長セクタを有する。
【００３８】
ここで、図４に、実施例１における磁気記憶媒体１１１に配置されるセクタの一例を示す。図４では、１行毎に１個のデータ区分を示している。例えば、図４に示した１行目は、通常セクタＪ〜Ｋ−１と、通常セクタＪ〜Ｋ−１の冗長セクタとの組合せにより形成されるデータ区分を示している。また、例えば、図４に示した２行目は、通常セクタＫ〜Ｌ−１と、通常セクタＫ〜Ｌ−１の冗長セクタとの組合せにより形成されるデータ区分を示している。
【００３９】
磁気記憶媒体１１１は、図４に示したような各データ区分を、同一のトラック上に有したり、異なるデータ区分に有したりする。例えば、磁気記憶媒体１１１は、図４に示した１〜４行目のデータ区分を同一のトラック上に有する。また、例えば、磁気記憶媒体１１１は、図４に示した各データ区分を異なるトラック上に有したり、図４に示した１、２行目のデータ区分を所定のトラックＡ上に有し、図４に示した３、４行目のデータ区分を所定のトラックＢ上に有したりする。また、例えば、磁気記憶媒体１１１は、１個のトラックに、１個のデータ区分を有する。
【００４０】
また、磁気記憶媒体１１１は、通常セクタ毎に、識別用領域を有する。ここで、図５に、実施例１における磁気記憶媒体１１１が有する通常セクタの構成例を示す。図５に示すように、磁気記憶媒体１１１の通常セクタは、ＰＬＬ（Phase  Locked  Loop）パタンと、ＳＢ（sync  byte）と、識別用領域と、ユーザデータと、ＣＲＣ（Cyclic  Redundancy  Check）と、ＥＣＣ（Error  Correcting  Code）との領域に分けられる。
【００４１】
ＰＬＬパタンは、磁気ディスク装置１００におけるクロック信号を同期させるための信号が読み出される領域である。ＳＢは、ユーザデータの開始を示す信号が読み出される領域である。識別用領域は、識別用コードが記憶される領域である。かかる識別用領域のサイズは、例えば、１［ｂｙｔｅ（バイト）］である。ユーザデータは、ユーザデータが記憶される領域である。ＣＲＣは、データの整合性を検証するためのデータが記憶される領域である。ＥＣＣは、通常セクタデータに含まれるエラーを訂正するためのＥＣＣ情報が記憶される領域である。
【００４２】
このように、実施例１における磁気記憶媒体１１１は、通常セクタに識別用領域を有する。これにより、磁気ディスク装置１００は、識別用領域に記憶されている識別用データに基づいて、かかる通常セクタが属するデータ区分の冗長セクタデータが有効であるか否かを判定することができる。
【００４３】
なお、図５に示した通常セクタの構成は一例であって、通常セクタは、図５に示した順番に各領域を有しなくてもよい。例えば、通常セクタは、通常セクタの先頭に識別用領域を設けてもよいし、通常セクタの後尾に識別用領域を設けてもよい。
【００４４】
図３の説明に戻って、ヘッド１１２は、磁気記憶媒体１１１の回転によって生じる揚力によって、磁気記憶媒体１１１の表面からわずかに浮いた状態を維持してデータの読み書きを実行する。なお、図３に示したヘッド１１２は、データを読み出すためのリードヘッドと、データを書き込むためのライトヘッドとを示すものとする。
【００４５】
ＶＣＭ１１３は、サーボ制御部１９０によって駆動されるヘッド駆動機構であり、アームを磁気記憶媒体１１１上で回動させる。ＳＰＭ１１４は、サーボ制御部１９０によって駆動される機構であり、磁気記憶媒体１１１を回転させる。
【００４６】
ヘッドＩＣ１１５は、図示しないプリアンプを備えており、データの読み出し時に、ヘッド１１２によって読み出されたデータ信号を前置増幅する。共有バス１１６は、磁気ディスク装置１００内の各処理部を接続し、処理部間における種々の情報の受け渡しを行う。
【００４７】
ホストＩＦ制御部１２０は、ホストＩＦ１１を介して上位装置１０に接続され、上位装置１０との間の通信を制御する。バッファ制御部１３０は、バッファメモリ１３１を制御する。バッファメモリ１３１は、上位装置１０と磁気ディスク装置１００との間でやり取りされる情報などを一時的に記憶する。
【００４８】
冗長生成部１３２は、冗長セクタデータを生成する。ここで、図６に、冗長生成部１３２の構成例を示す。図６に示すように、冗長生成部１３２は、データメモリ１３２ａと、ＸＯＲ（Exclusive  OR）演算部１３２ｂとを有する。データメモリ１３２ａは、１セクタ分のデータを記憶する記憶容量を有し、後述するＸＯＲ演算部１３２ｂによって演算された演算結果データを記憶する。ＸＯＲ演算部１３２ｂは、バッファ制御部１３０から入力される１セクタ分の通常セクタデータと、データメモリ１３２ａに記憶されている演算結果データとのＸＯＲ演算をビット位置毎に行う。そして、ＸＯＲ演算部１３２ｂは、新たな演算結果データをデータメモリ１３２ａに記憶させる。
【００４９】
識別コード部１３３は、通常セクタの識別用領域に設定する識別用コードを記憶し、例えば、レジスタである。なお、後述するＭＰＵ１６０によって、識別コード部１３３に識別用コードが記憶される。かかるＭＰＵ１６０による処理は後述する。
【００５０】
フォーマット制御部１４０は、上位装置１０と磁気ディスク装置１００との間で転送されるデータのエラーチェックなどを行う。例えば、フォーマット制御部１４０は、データ読み出し時に、リードチャネル１５０からデータを受け付け、必要に応じてかかるデータのエラー訂正を行い、バッファ制御部１３０へ出力する。
【００５１】
また、例えば、フォーマット制御部１４０は、データ書き込み時に、ホストＩＦ制御部１２０を介して上位装置１０からデータを受け付け、かかるデータに、識別用コードや、エラー訂正コード（ＥＣＣ情報）等を追加して、リードチャネル１５０へ出力する。このとき、フォーマット制御部１４０は、識別コード部１３３から識別用コードを取得して、取得した識別用コードをデータに追加する。
【００５２】
リードチャネル１５０は、上位装置１０と磁気ディスク装置１００との間で転送されるデータをＡＤ変換したり、変調および復調したりする。例えば、リードチャネル１５０は、データの読み出し時に、ヘッドＩＣ１１５から出力されるデータ信号を増幅し、ＡＤ変換および復調などの所定の処理を施す。また、例えば、リードチャネル１５０は、データの書き込み時に、フォーマット制御部１４０から入力されたデータをコード変調したりする。
【００５３】
ＭＰＵ１６０は、ファームウェアプログラムにより磁気ディスク装置１００の主制御を行う。すなわち、ＭＰＵ１６０は、上位装置１０からのコマンドを解読して各処理部を制御し、磁気記憶媒体１１１のデータの読み書きを統括制御する。なお、ＭＰＵ１６０は、ＭＣＵ（Micro  Controller  Unit）やＣＰＵ（Central  Processing  Unit）であってもよい。
【００５４】
ここで、実施例１におけるＭＰＵ１６０における処理について具体的に説明する。ＭＰＵ１６０は、上位装置１０からデータを受け付けた場合に、かかるデータが所定のデータ区分に属する一部の通常セクタに書き込まれるか否かを判定する。
【００５５】
そして、ＭＰＵ１６０は、一部の通常セクタにデータが書き込まれると判定した場合、識別コード部１３３に、冗長セクタデータが無効であることを示す識別用コード（図１−１および図１−２に示した例では「Ｎ」）を記憶させる。
【００５６】
一方、ＭＰＵ１６０は、所定のデータ区分に属する全ての通常セクタにデータが書き込まれると判定した場合、識別コード部１３３に、冗長セクタデータが有効であることを示す識別用コード（図１−１および図１−２に示した例では「Ｍ」）を記憶させる。
【００５７】
メモリ１７０および不揮発メモリ１８０は、ＭＰＵ１６０において動作する所定の制御プログラム（ファームウェアプログラム）や種々の制御用のデータを格納する。サーボ制御部１９０は、ＭＰＵ１６０から入力される指示に従って、ＶＣＭ１１３およびＳＰＭ１１４を駆動する。
【００５８】
次に、実施例１に係る磁気ディスク装置１００によるデータ書込処理の手順について説明する。図７は、実施例１に係る磁気ディスク装置１００によるデータ書込処理手順を示すフローチャートである。
【００５９】
図７に示すように、磁気ディスク装置１００のＭＰＵ１６０は、上位装置１０からデータの書き込み命令を受け付けた場合に（ステップＳ１０１肯定）、データが書き込まれるデータ区分の範囲を特定する（ステップＳ１０２）。ここでは、データが書き込まれるデータ区分の範囲がデータ区分Ｐ〜Ｐ＋Ｎであるものとする。また、磁気ディスク装置１００は、データ区分Ｐ、Ｐ＋１、・・・、Ｐ＋Ｎの順に、データ書き込み処理を行うものとする。
【００６０】
続いて、ＭＰＵ１６０は、データ区分Ｐ＋ｉ（ｉは０〜Ｎのいずれかの値）に書き込まれるデータが、データ区分Ｐ＋ｉに属する一部の通常セクタに書き込まれるか否かを判定する。
【００６１】
ＭＰＵ１６０は、データ区分Ｐ＋ｉに属する一部の通常セクタにデータが書き込まれると判定した場合（ステップＳ１０３肯定）、識別コード部１３３に、冗長セクタデータが無効であることを示す識別用コードを設定する（ステップＳ１０４）。
【００６２】
上位装置１０から入力されたデータは、ホストＩＦ制御部１２０と、バッファ制御部１３０とを経由して、バッファメモリ１３１に格納される。続いて、書き込み処理を実行するタイミングになった場合に、バッファメモリ１３１に格納されたデータは、バッファ制御部１３０を経由して、フォーマット制御部１４０へ出力される。
【００６３】
フォーマット制御部１４０は、入力されたデータに、ＳＢや、エラー訂正コード等を追加する。このとき、フォーマット制御部１４０は、入力されたデータの識別用領域に、識別コード部１３３に記憶されている識別用コードを設定する。そして、フォーマット制御部１４０は、識別用コード等を追加したデータをリードチャネル１５０へ出力する。
【００６４】
そして、ヘッド１１２は、フォーマット制御部１４０から出力されるデータを、リードチャネル１５０と、ヘッドＩＣ１１５とを経由して受け付け、受け付けたデータを磁気記憶媒体１１１に書き込む（ステップＳ１０５）。
【００６５】
一方、データ区分Ｐ＋ｉに属する全ての通常セクタにデータが書き込まれると判定した場合（ステップＳ１０３否定）、ＭＰＵ１６０は、識別コード部１３３に、冗長セクタデータが有効であることを示す識別用コードを設定する（ステップＳ１０６）。
【００６６】
上位装置１０から入力されたデータは、ホストＩＦ制御部１２０と、バッファ制御部１３０とを経由して、バッファメモリ１３１に格納され、書き込み処理を実行するタイミングになった場合に、バッファ制御部１３０を経由して、フォーマット制御部１４０へ出力される。
【００６７】
また、バッファメモリ１３１に格納されたデータは、バッファ制御部１３０を経由して、冗長生成部１３２へ出力される。冗長生成部１３２は、入力されたデータを用いて冗長セクタデータを生成する（ステップＳ１０７）。そして、ＭＰＵ１６０は、冗長生成部１３２から出力される冗長セクタデータが上位装置１０から入力されたデータに続いて書き込まれるように、フォーマット制御部１４０を制御する。
【００６８】
フォーマット制御部１４０は、上位装置１０から入力されたデータに、ＳＢや、エラー訂正コード等を追加するとともに、識別コード部１３３に記憶されている識別用コードを設定する。そして、フォーマット制御部１４０は、識別用コード等を追加したデータをリードチャネル１５０へ出力する。その後、フォーマット制御部１４０は、冗長生成部１３２から出力される冗長セクタデータをリードチャネル１５０へ出力する。
【００６９】
そして、ヘッド１１２は、フォーマット制御部１４０から出力されるデータおよび冗長セクタデータを、リードチャネル１５０と、ヘッドＩＣ１１５とを経由して受け付け、受け付けたデータおよび冗長セクタデータを磁気記憶媒体１１１に書き込む（ステップＳ１０８）。
【００７０】
磁気ディスク装置１００は、上位装置から入力された全てのデータを磁気記憶媒体１１１へ書き込む処理が終了した場合に（ステップＳ１０９肯定）、処理を終了する。言い換えれば、磁気ディスク装置１００は、上記ステップＳ１０２において特定した全てのデータ区分に対してデータの書き込み処理を行った場合に、処理を終了する。一方、磁気ディスク装置１００は、上位装置から入力された全てのデータを磁気記憶媒体１１１へ書き込む処理が終了していない場合（ステップＳ１０９否定）、上述した処理手順（ステップＳ１０３〜Ｓ１０８）を繰り返し行う。
【００７１】
次に、実施例１に係る磁気ディスク装置１００による冗長セクタデータ更新処理の手順について説明する。図８は、実施例１に係る磁気ディスク装置１００による冗長セクタデータ更新処理手順を示すフローチャートである。
【００７２】
図８に示すように、磁気ディスク装置１００のＭＰＵ１６０は、冗長セクタデータを更新するタイミングになった場合に（ステップＳ２０１肯定）、磁気記憶媒体１１１からデータ区分毎にデータを読み出すように制御する。なお、ここで言う「冗長セクタデータを更新するタイミング」とは、上述したように、例えば、磁気記憶媒体１１１へアクセスを行わないタイミング等を示す。
【００７３】
ＭＰＵ１６０によって読み出し制御がなされた場合に、ヘッド１１２は、磁気記憶媒体１１１から所定のデータ区分のデータを読み出す（ステップＳ２０２）。ヘッド１１２によって読み出されたデータは、ヘッドＩＣ１１５と、リードチャネル１５０とを経由して、フォーマット制御部１４０へ出力される。
【００７４】
フォーマット制御部１４０は、入力されたデータのうち、識別用領域に記憶されている識別用コードを識別コード部１３３に記憶させる。また、フォーマット制御部１４０は、入力されたデータを、バッファ制御部１３０へ出力する。バッファ制御部１３０は、入力されたデータをバッファメモリ１３１に格納するとともに冗長生成部１３２へ出力する。冗長生成部１３２は、バッファ制御部１３０から入力されたデータを用いて、冗長セクタデータを生成する（ステップＳ２０３）。
【００７５】
続いて、ＭＰＵ１６０は、識別コード部１３３に、冗長セクタデータが無効であることを示す識別用コード（図１−１および図１−２に示した例では「Ｎ」）が記憶されているか否かを判定する。識別コード部１３３に、冗長セクタデータが無効であることを示す識別用コードが記憶されている場合（ステップＳ２０４肯定）、ＭＰＵ１６０は、冗長生成部１３２によって生成された冗長セクタデータを磁気記憶媒体１１１へ書き込むように制御する。
【００７６】
ＭＰＵ１６０によって冗長セクタデータを書き込む旨の制御がなされた場合、ヘッド１１２は、冗長生成部１３２から出力される冗長セクタデータを、フォーマット制御部１４０と、リードチャネル１５０と、ヘッドＩＣ１１５とを経由して受け付けて、磁気記憶媒体１１１へ書き込む（ステップＳ２０５）。
【００７７】
続いて、ＭＰＵ１６０は、データを読み出したデータ区分に属する通常セクタの識別用コードを、冗長セクタデータが有効であることを示す情報に更新するように制御する。ＭＰＵ１６０によって識別用コードを更新する旨の制御がなされた場合、ヘッド１１２は、識別用コードに記憶されている情報を、冗長セクタデータが有効であることを示す情報に更新する（ステップＳ２０６）。
【００７８】
磁気ディスク装置１００は、磁気記憶媒体１１１にデータが記憶されている全てのデータ区分についてデータの読み出し処理が終了した場合に（ステップＳ２０７肯定）、処理を終了する。一方、磁気ディスク装置１００は、磁気記憶媒体１１１にデータが記憶されている全てのデータ区分についてデータの読み出し処理が終了していない場合に（ステップＳ２０７否定）、上述した処理手順（ステップＳ２０２〜Ｓ２０６）を繰り返し行う。
【００７９】
上述してきたように、実施例１に係る磁気ディスク装置１００は、冗長セクタデータが有効であるか否かを示す識別用コードを磁気記憶媒体１１１に記憶させる。これにより、磁気ディスク装置１００は、メモリ資源を用いずに冗長セクタデータの有効性を判定することができる。
【実施例２】
【００８０】
ところで、上記実施例１において説明した磁気ディスク装置１００は、上述した実施例１以外にも、種々の異なる形態にて実施されてよい。そこで、実施例２では、上記磁気ディスク装置１００に含まれる他の実施例を説明する。
【００８１】
［識別用領域］
上記実施例１では、通常セクタ毎に識別用領域を設ける例を示したが、磁気記憶媒体１１１は、通常セクタ毎に識別用領域を有しなくてもよい。例えば、磁気記憶媒体１１１は、データ区分に属する複数の通常セクタのうち、特定の通常セクタのみに識別用領域を有してもよい。かかる場合、磁気ディスク装置１００は、特定の通常セクタに記憶されている識別用データを用いて、冗長セクタデータが有効であるか否かを判断する。
【００８２】
また、例えば、磁気記憶媒体１１１は、冗長セクタに識別用領域を有してもよい。かかる場合、磁気ディスク装置１００は、冗長セクタに記憶されている識別用データを用いて、冗長セクタデータが有効であるか否かを判断する。このように、特定の通常セクタや冗長セクタのみに識別用領域を設けることで、磁気記憶媒体１１１にユーザデータを記憶できる容量を増大させることができる。
【００８３】
［システム構成］
また、上記磁気ディスク装置１００にて行なわれる各処理機能は、その全部または任意の一部が、ＣＰＵおよび当該ＣＰＵにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現されてもよい。
【００８４】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示のように構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。
【００８５】
以上の各実施例を含む実施形態に関し、さらに以下の付記を開示する。
【００８６】
（付記１）データが記憶されるセクタである通常セクタと、複数の通常セクタ毎に該通常セクタに記憶されているデータを復旧するためのデータが記憶されるセクタである冗長セクタとを有する記憶媒体と、
前記複数の通常セクタと該複数の通常セクタに対応する冗長セクタとの組合せであるデータ区分に属する通常セクタにデータを書き込む場合に、該データ区分に属する冗長セクタに記憶されている冗長セクタデータが無効であることを示す情報である無効情報を、データ書き込み先の通常セクタに記憶させるように制御する制御部と
を備えたことを特徴とする記憶装置。
【００８７】
（付記２）前記制御部は、データ区分内の全ての通常セクタにデータを書き込んだ場合に、該データ区分に属する通常セクタに記憶されているデータに基づいて冗長セクタデータを再生成して、再生成した冗長セクタデータを該データ区分に属する冗長セクタに記憶させるとともに、冗長セクタデータが有効であることを示す情報である有効情報を、データ書き込み先の通常セクタに記憶させるように制御することを特徴とする付記１に記載の記憶装置。
【００８８】
（付記３）前記制御部は、
前記記憶媒体からデータを読み出す場合に、無効情報が記憶されている通常セクタが存在するか否かを判定する判定部と、
前記判定部によって無効情報が記憶されている通常セクタが存在すると判定された場合に、該通常セクタが属するデータ区分の冗長セクタデータを再生成して、該データ区分に属する冗長セクタの冗長セクタデータを、再生成した冗長セクタデータに更新するともに、該冗長セクタと同一のデータ区分に属する通常セクタに有効情報を記憶させる更新部と
を有することを特徴とする付記１または２に記載の記憶装置。
【００８９】
（付記４）データが記憶されるセクタである通常セクタと、複数の通常セクタ毎に該通常セクタに記憶されているデータを復旧するためのデータが記憶されるセクタである冗長セクタとを有する記憶媒体にアクセスする記憶装置を制御する記憶装置制御方法であって、
前記記憶装置が、
前記複数の通常セクタと該複数の通常セクタに対応する冗長セクタとの組合せであるデータ区分に属する通常セクタにデータを書き込む場合に、該データ区分に属する冗長セクタに記憶されている冗長セクタデータが無効であることを示す情報である無効情報を、データ書き込み先の通常セクタに記憶させるように制御する制御工程
を含んだことを特徴とする記憶装置制御方法。
【００９０】
（付記５）前記制御工程は、データ区分内の全ての通常セクタにデータを書き込んだ場合に、該データ区分に属する通常セクタに記憶されているデータに基づいて冗長セクタデータを再生成して、再生成した冗長セクタデータを該データ区分に属する冗長セクタに記憶させるとともに、冗長セクタデータが有効であることを示す情報である有効情報を、データ書き込み先の通常セクタに記憶させるように制御することを特徴とする付記４に記載の記憶装置制御方法。
【００９１】
（付記６）前記制御工程は、
前記記憶媒体からデータを読み出す場合に、無効情報が記憶されている通常セクタが存在するか否かを判定する判定工程と、
前記判定工程によって無効情報が記憶されている通常セクタが存在すると判定された場合に、該通常セクタが属するデータ区分の冗長セクタデータを再生成して、該データ区分に属する冗長セクタの冗長セクタデータを、再生成した冗長セクタデータに更新するともに、該冗長セクタと同一のデータ区分に属する通常セクタに有効情報を記憶させる更新工程と
を含んだことを特徴とする付記４または５に記載の記憶装置制御方法。
【図面の簡単な説明】
【００９２】
【図１−１】実施例１に係る磁気ディスク装置の概要を説明するための図である。
【図１−２】実施例１に係る磁気ディスク装置の概要を説明するための図である。
【図２】実施例１に係る磁気ディスク装置と上位装置との関係を示す図である。
【図３】実施例１に係る磁気ディスク装置の構成を示す図である。
【図４】実施例１における磁気記憶媒体に配置されるセクタの一例を示す図である。
【図５】実施例１における磁気記憶媒体が有する通常セクタの構成例を示す図である。
【図６】冗長生成部の構成例を示す図である。
【図７】実施例１に係る磁気ディスク装置によるデータ書込処理手順を示すフローチャートである。
【図８】実施例１に係る磁気ディスク装置による冗長セクタデータ更新処理手順を示すフローチャートである。
【符号の説明】
【００９３】
１０  上位装置
１１  ホストＩＦ
１００  磁気ディスク装置
１１１  磁気記憶媒体
１１２  ヘッド
１１３  ＶＣＭ
１１４  ＳＰＭ
１１５  ヘッドＩＣ
１１６  共有バス
１２０  ホストＩＦ制御部
１３０  バッファ制御部
１３１  バッファメモリ
１３２  冗長生成部
１３２ａ  データメモリ
１３２ｂ  ＸＯＲ演算部
１３３  識別コード部
１４０  フォーマット制御部
１５０  リードチャネル
１６０  ＭＰＵ
１７０  メモリ
１８０  不揮発メモリ
１９０  サーボ制御部
【図１−１】
2010146625.tif 000003
【図１−２】
2010146625.tif 000004
【図２】
2010146625.tif 000005
【図３】
2010146625.tif 000006
【図４】
2010146625.tif 000007
【図５】
2010146625.tif 000008
【図６】
2010146625.tif 000009
【図７】
2010146625.tif 000010
【図８】
2010146625.tif 000011