(57)【要約】【課題】ディスクに格納されているデータをリフレッシュする際に長距離のヘッド移動が発生する回数を減少することにより、データリフレッシュ効率を向上させる。【解決手段】磁気ディスクドライブ内のＣＰＵは、ディスク上の複数のトラックが配置されている領域を区分する第１のセグメント及び当該第１のセグメントに後続する複数の第２のセグメントのうちの次にリフレッシュされるべきセグメントが、前記複数の第２のセグメントの１つであることを検出する。次にリフレッシュされるべきセグメントが前記複数の第２のセグメントの前記１つである場合（ステップ８０７のＮＯ）、ＣＰＵは、前記複数の第２のセグメントの前記１つに格納されているデータを前記第１のセグメントに退避する（ステップ８０８，８０９）。【選択図】      図９
2011028810.tif 000002
【特許請求の範囲】
【請求項１】
ディスクを備えた磁気ディスクドライブにおいて、前記ディスクに格納されているデータをリフレッシュするためのデータリフレッシュ方法であって、
前記ディスク上の複数のトラックが配置されている領域を区分する第１のセグメント及び当該第１のセグメントに後続する複数の第２のセグメントのうちの次にリフレッシュされるべきセグメントが、前記第２のセグメントの１つであることを検出するステップと、
次にリフレッシュされるべきセグメントが前記複数の第２のセグメントの前記１つである場合、前記複数の第２のセグメントの前記１つに格納されているデータを前記第１のセグメントに退避するステップと
を具備することを特徴とするデータリフレッシュ方法。
【請求項２】
前記複数の第２のセグメントをリフレッシュする前に、前記第１のセグメントに格納されているデータを前記第１のセグメント及び前記複数の第２のセグメントとは別の前記ディスク上の特定の退避領域に退避するステップを更に具備することを特徴とする請求項１記載のデータリフレッシュ方法。
【請求項３】
前記複数の第２のセグメントのリフレッシュが全て完了したことを検出するステップと、
前記複数の第２のセグメントのリフレッシュが全て完了したことを検出した後、前記第１のセグメントに格納されているデータをリフレッシュするために、前記特定の退避領域に退避されているデータを前記第１のセグメントに書き戻すステップと
を更に具備することを特徴とする請求項２記載のデータリフレッシュ方法。
【請求項４】
前記複数の第２のセグメントの前記１つに格納されているデータを退避するステップは、前記複数の第２のセグメントの前記１つに格納されているデータを読み出すステップと、前記複数の第２のセグメントの前記１つから読み出されたデータの前後に、当該データが有効であることを示すヘッダ及びフッタを付加するステップとを含み、
前記第１のセグメントのサイズは、前記複数の第２のセグメントの各々よりも前記ヘッダ及びフッタに対応するサイズだけ大きい
ことを特徴とする請求項３記載のデータリフレッシュ方法。
【請求項５】
前記複数の第２のセグメントの前記１つから読み出されて前記ヘッダ及びフッタが付加されたデータが前記第１のセグメントに退避された後、前記複数の第２のセグメントの前記１つに格納されているデータをリフレッシュするために、前記複数の第２のセグメントの前記１つから読み出されたデータを前記複数の第２のセグメントの前記１つに書き戻すステップと、
前記複数の第２のセグメントの前記１つから読み出されたデータが前記複数の第２のセグメントの前記１つに書き戻された後、前記第１のセグメントに退避されているデータに付加されている前記ヘッダを無効化するステップと
を更に具備することを特徴とする請求項４記載のデータリフレッシュ方法。
【請求項６】
前記第１のセグメントに格納されているデータを退避するステップは、前記第１のセグメントに格納されているデータを読み出すステップと、前記第１のセグメントから読み出されたデータの前後に、当該データが有効であることを示すヘッダ及びフッタを付加するステップとを含み、
前記特定の退避領域のサイズは、前記第１のセグメントよりも前記ヘッダ及び前記フッタに対応するサイズだけ大きい
ことを特徴とする請求項５記載のデータリフレッシュ方法。
【請求項７】
前記特定の退避領域に退避されているデータが前記第１のセグメントに書き戻された後、前記特定の退避領域に退避されているデータに付加されている前記ヘッダを無効化するステップと
を更に具備することを特徴とする請求項６記載のデータリフレッシュ方法。
【請求項８】
前記特定の退避領域に退避されているデータに付加されている前記ヘッダ及びフッタと、前記第１のセグメントに退避されているデータに付加されている前記ヘッダ及びフッタとに基づき、リフレッシュ動作中に前記磁気ディスクドライブの電源が遮断したことを検出するステップを更に具備することを特徴とする請求項７記載のデータリフレッシュ方法。
【請求項９】
前記特定の退避領域に退避されているデータ及び前記第１のセグメントに退避されているデータの各々に、有効なヘッダ及びフッタが付加されている場合、前記第１のセグメントに退避されているデータを、前記複数の第２のセグメントのうちの対応する１つに書き戻すステップと、
前記第１のセグメントに退避されているデータが前記複数の第２のセグメントのうちの前記対応する１つに書き戻された後、前記第１のセグメントに退避されているデータに付加されている前記ヘッダを無効化するステップと
を更に具備することを特徴とする請求項８記載のデータリフレッシュ方法。
【請求項１０】
前記第１のセグメントに退避されるデータに付加される前記有効なヘッダ及びフッタは、当該ヘッダ及びフッタが有効であることを示す文字列と、当該データが格納されている複数の第２のセグメントの１つを指定する属性情報とを含み、
前記複数の第２のセグメントのうちの前記対応する１つは、前記第１のセグメントに退避されているデータに付加された前記有効なヘッダ及びフッタに含まれている前記属性情報に基づいて特定される
ことを特徴とする請求項９記載のデータリフレッシュ方法。
【請求項１１】
少なくとも、前記特定の退避領域に退避されているデータに有効なヘッダ及びフッタが付加されている場合、前記特定の退避領域に退避されているデータを前記第１のセグメントに書き戻すステップと
前記特定の退避領域に退避されているデータが前記第１のセグメントに書き戻された後、前記特定の退避領域に退避されているデータに付加されている前記ヘッダを無効化するステップと
を更に具備することを特徴とする請求項１０記載のデータリフレッシュ方法。
【請求項１２】
前記ディスク上のトラックの集合は、前記第１のセグメント及び前記複数の第２のセグメントが属するトラックグループを含む複数のトラックグループに区分して管理され、
前記複数のトラックグループの各々に対応する前記ディスク上の領域は第１のセグメント及び複数の第２のセグメントに区分され、
前記複数のトラックグループの各々について、前記第１のセグメント及び前記複数の第２のセグメントがリフレッシュされる
ことを特徴とする請求項３記載のデータリフレッシュ方法。
【請求項１３】
複数のトラックが配置されている領域が第１のセグメントと前記第１のセグメントに後続する複数の第２のセグメントとに区分されたディスクと、
前記第１のセグメント及び前記複数の第２のセグメントの各セグメント毎にデータのリフレッシュを制御するコントローラであって、前記複数の第２のセグメントの各々に格納されているデータのリフレッシュに必要な退避領域として前記第１のセグメントを利用するコントローラと
を具備することを特徴とする磁気ディスクドライブ。
【請求項１４】
前記ディスク上には、前記第１のセグメント及び前記複数の第２のセグメントとは別の特定の退避領域が配置されており、
前記コントローラは、前記複数の第２のセグメントの各々に格納されているデータをリフレッシュする前に、前記第１のセグメントに格納されているデータのリフレッシュに必要な退避領域として前記特定の退避領域を利用する
ことを特徴とする請求項１３記載の磁気ディスクドライブ。
【請求項１５】
前記請求項１４に記載の磁気ディスクドライブと、
前記磁気ディスクドライブを記憶装置として利用するホストと
を具備することを特徴とする電子機器。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ディスクに格納されているデータをリフレッシュするためのデータリフレッシュ方法に関する。
【背景技術】
【０００２】
近年、磁気ディスクドライブの高容量化に伴い、高記録密度化、高トラック密度化が進んでいる。高トラック密度化により、ディスク上で隣接するトラック（記録トラック）間の間隔（つまりトラックピッチ）が狭小化されている。各トラックはヘッド（ヘッドに含まれる書き込み素子）の幅と同じ幅を持つ。しかし、データ書き込み時にヘッドによって生成される記録磁界の分布の幅は必ずしも当該ヘッドの幅に一致せず、その周辺にも磁界が加わる状態となる。この状態は、ライトフリンジングと呼ばれる。
【０００３】
トラックピッチが狭小化されると、トラックにデータを書き込む際に、隣接するトラックに書き込まれているデータ（記録データ）の劣化が発生する可能性がある。その要因は、トラックにヘッドを位置付ける際の誤差及びライトフリンジングにある。記録データの劣化が繰り返し発生すると、その記録データの読み出しが非常に困難になる。つまり、誤り訂正符号（ＥＣＣ）を最大限に用いて記録データの修復を試みても、当該記録データを修復することが困難となる。
【０００４】
そこで近年の磁気ディスクドライブでは、記録データの劣化により当該記録データの読み出しが不能になる前に、当該記録データの劣化を回復するためのデータリフレッシュ（書き直し）が必須になりつつある。データリフレッシュは、劣化した記録データをトラックから読み出し、当該読み出されたデータを当該トラックに書き戻すことで、当該記録データを正常な状態に戻す動作として知られている。
【０００５】
例えば、特開２００４−２７３０６０号公報は、データライト回数が規定回数に達したトラックに隣接するトラックに書き込まれているデータをリフレッシュする技術（以下、先行技術と称する）を開示している。この先行技術によれば、まず、データライト回数が規定回数に達したトラックに隣接するトラックのデータは劣化していると判定される。次に、このような隣接トラックのデータがリフレッシュされるべきデータとして読み出されてＲＡＭに一時記憶される。そして、このＲＡＭに一時記憶された隣接トラックのデータが当該隣接トラックに再度書き込まれる。つまり、リフレッシュされるべきトラックのデータが、当該トラックから読み出されたデータで書き直される。このようなデータ書き直し動作、つまりデータリフレッシュ動作により、データの劣化が回復される。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００４−２７３０６０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、上記先行技術では、データリフレッシュ動作の最中に磁気ディスクドライブの電源が遮断すると、リフレッシュされるべきトラックのデータが失われる可能性がある。更に具体的に述べるならば、リフレッシュされるべきトラックから読み出されたデータを当該トラックに再度書き込むための動作（以下、書き戻し動作と称する）の最中に磁気ディスクドライブの電源が遮断すると、当該データが失われる可能性がある。この理由について説明する。
【０００８】
まず、書き戻し動作の最中に電源が遮断したものとする。この場合、リフレッシュされるべきトラックのデータは破壊される。このとき、ＲＡＭに一時記憶されているリフレッシュされるべきトラックのデータは消失する。このため、電源が復帰しても、未完了となった書き戻し動作を再度行うことができず、リフレッシュされるべきトラックのデータは失われる。
【０００９】
このような不具合を防止するために、上記ＲＡＭに代えて、ディスク上の特定のトラックを用いることが考えられる。つまり、ディスク上の特定のトラックを、リフレッシュされるべきトラックのデータを一時退避（つまりバックアップ）するための退避領域として用いることが考えられる。
【００１０】
ディスク上の特定のトラックを退避領域として用いる場合、退避動作と書き戻し動作とが次のように実行される。退避動作では、リフレッシュされるべきトラックから読み出されたデータが特定のトラックに書き込まれる（つまり退避される）。書き戻し動作では、特定のトラックから読み出されたデータが、リフレッシュされるべきトラックに書き戻される。これにより、リフレッシュされるべきトラックに記録されていたデータがリフレッシュされる。
【００１１】
退避動作に際しては、リフレッシュされるべきトラックから特定のトラックにヘッドを移動するための第１のシーク動作が行われる。書き戻し動作に際しては、特定のトラックからリフレッシュされるべきトラックにヘッドを移動するための第２のシーク動作が行われる。
【００１２】
このように、特定のトラックを退避領域として用いる場合、１つのトラックのデータをリフレッシュするのに２回のシーク動作が必要となる。一般に近年のディスクは、１記録当たりほぼ１６万トラックを有している。このようなディスクを有する磁気ディスクドライブでは、１つのトラックのデータをリフレッシュするのに、平均１６万トラックに相当する長距離のヘッド移動が必要となる。
【００１３】
本発明は上記事情を考慮してなされたものでその目的は、ディスクに格納されているデータをリフレッシュする際に長距離のヘッド移動が発生する回数を減少することにより、データリフレッシュ効率を向上することができるデータリフレッシュ方法を提供することにある。
【課題を解決するための手段】
【００１４】
本発明の１つの観点によれば、ディスクを備えた磁気ディスクドライブにおいて、前記ディスクに格納されているデータをリフレッシュするためのデータリフレッシュ方法が提供される。このデータリフレッシュ方法は、前記ディスク上の複数のトラックが配置されている領域を区分する第１のセグメント及び当該第１のセグメントに後続する複数の第２のセグメントのうちの次にリフレッシュされるべきセグメントが、前記第２のセグメントの１つであることを検出するステップと、次にリフレッシュされるべきセグメントが前記複数の第２のセグメントの前記１つである場合、前記複数の第２のセグメントの前記１つに格納されているデータを前記第１のセグメントに退避するステップとを具備する。
【発明の効果】
【００１５】
本発明によれば、第１のセグメントに後続する複数の第２のセグメントの各々に格納されているデータをリフレッシュする際に必要な退避領域として第１のセグメントが利用されるため、データリフレッシュのために長距離のヘッド移動が発生する回数を減らして、データリフレッシュ効率を向上することができる。
【図面の簡単な説明】
【００１６】
【図１】本発明の一実施形態に係る磁気ディスクドライブ（ＨＤＤ）の構成を示すブロック図。
【図２】同実施形態で適用されるディスクのトラック配置を含むフォーマットを示す概念図。
【図３】同実施形態で適用されるデータリフレッシュ処理の概要図。
【図４】同実施形態で適用されるライトカウントテーブルのデータ構造例を示す図。
【図５】図１のＨＤＤにおける全体的な動作を説明するためのフローチャート
【図６】図５のフローチャートに含まれる初期化・回復処理の詳細な手順を示すフローチャート。
【図７】図５のフローチャートに含まれるコマンド実行処理の詳細な手順を示すフローチャート。
【図８】図５のフローチャートに含まれるデータリフレッシュ処理の詳細な手順を示すフローチャート。
【図９】図５のフローチャートに含まれるデータリフレッシュ処理の詳細な手順を示すフローチャート。
【発明を実施するための形態】
【００１７】
以下、本発明の実施の形態につき図面を参照して説明する。  
図１は本発明の一実施形態に係る磁気ディスクドライブ（ＨＤＤ）の構成を示すブロック図である。図１に示されるＨＤＤ１００は、ホストシステム２００からの要求に応じてディスク（磁気ディスク）１０１の記録面上にデータを書き込み、或いは当該記録面からデータを読み出すための記憶装置である。ホストシステム２００は、ＨＤＤ１００を記憶装置として利用するパーソナルコンピュータのような電子機器である。
【００１８】
ディスク１０１はスピンドルモータ（ＳＰＭ）１０３に固定されており、ＳＰＭ１０３が駆動されることにより一定の速度で回転する。ディスク１０１の例えば一方のディスク面は、データが磁気記録される記録面をなしている。ヘッド（磁気ヘッド）１０２はディスク１０１の記録面に対応して配置される。ヘッド１０２はアクチュエータ１０５の一端に固定されている。アクチュエータ１０５の他端はボイスコイルモータ（ＶＣＭ）１０４に固定されている。ヘッド１０２は、ＶＣＭ１０４が駆動されることにより、ＶＣＭ１０４の軸を中心とした円弧軌道のうちディスク１０１の面に重なる範囲を移動する。
【００１９】
図１の構成では、単一枚のディスク１０１を備えたＨＤＤ１００を想定している。しかし、複数のディスク１０１がある間隙をもった状態でＳＰＭ１０３に固定された構成であっても構わない。この場合、複数のアクチュエータ１０５が、複数のディスク１０１の間隙に適合するように重なった状態でＶＣＭ１０４に固定される。複数のアクチュエータ１０５の一端にはそれぞれヘッド１０２が固定されている。したがってＳＰＭ１０３が駆動されると、全てのディスク１０１は同時に回転し、ＶＣＭ１０４が駆動されると、全てのヘッド１０２は同時に移動する。また、図１の構成では、ディスク１０１の一方の面が記録面をなしている。しかし、ディスク１０１の両面がいずれも記録面をなし、両記録面にそれぞれ対応してヘッド１０２が配置されても構わない。
【００２０】
図２はディスク１０１のトラック配置を含むフォーマットを示す概念図である。  
図２において、ディスク１０１の記録面には、複数のトラック２０１が同心円状に配置されている。ホストシステム２００からＨＤＤ１００が受け取ったデータは、当該ホストシステム２００によって指定されたアドレスに応じ、複数のトラック２０１の少なくとも１つに記録される。
【００２１】
また、ディスク１０１の複数のトラック２０１上にはサーボ領域２０２及びデータ領域２０３が交互に且つ等間隔に配置されている。サーボ領域２０２には、ヘッド１０２の位置決めに用いられるサーボ信号が記録されている。データ領域２０３は、ホストシステム２００から転送されるデータを記録するのに用いられる。
【００２２】
再び図１を参照すると、ＣＰＵ１１５はＨＤＤ１００の主コントローラとして機能する。ＣＰＵ１１５はモータドライバ１０６を介してＳＰＭ１０３の起動・停止及び回転速度維持のための制御を行う。ＣＰＵ１１５はまたモータドライバ１０６を介してＶＣＭ１０４を駆動制御することで、ヘッド１０２を目標とするトラックに移動させて、当該トラックの目標とする範囲内に整定するための制御を行う。ヘッド１０２を目標とするトラックに移動させる制御はシーク制御と呼ばれ、ヘッド１０２を目標とするトラックの目標とする範囲内に整定する制御はヘッド位置決め制御と呼ばれる。ＣＰＵ１１５は更に、ディスク１０１上のトラック２０１に書き込まれているデータをリフレッシュするための制御（データリフレッシュ処理）を行う。
【００２３】
ヘッド１０２の位置決めはＳＰＭ１０３の起動後の定常回転状態で行われる。上述のように、サーボ領域２０２はディスク１０１の円周方向に等間隔に配置されている。このため、ヘッド１０２によってディスク１０１から読み出され、ヘッドＩＣ１０７で増幅されたアナログ信号中には、サーボ領域２０２に記録されているサーボ信号が時間的に等間隔に現れることになる。リード・ライトＩＣ１０８（リード・ライトＩＣ１０８に含まれているサーボブロック１２１）とゲートアレイ１０９とは、この状態を利用して上記アナログ信号を処理することにより、ヘッド１０２の位置決めのための信号を生成する。ＣＰＵ１１５はこの信号をもとにモータドライバ１０６を制御することにより、当該モータドライバ１０６からＶＣＭ１０４に、ヘッド１０２の位置決めのための電流（ＶＣＭ電流）をリアルタイムで供給させる。
【００２４】
ＣＰＵ１１５は、上述のようにモータドライバ１０６を介してＳＰＭ１０３及びＶＣＭ１０４を制御する一方で、ＨＤＤ１００内の他の要素の制御及びコマンド処理などを行う。ＣＰＵ１１５はＣＰＵバス１１２に接続されている。
【００２５】
ＣＰＵバス１１２には、リード・ライトＩＣ１０８、ゲートアレイ１０９、ディスクコントローラ（ＨＤＣ）１１０、ＲＡＭ１１３及びフラッシュＲＯＭ１１４が接続されている。フラッシュＲＯＭ１１４は、書き換え可能な不揮発性メモリである。ここでは、フラッシュＲＯＭ１１４の書き換えは、ＣＰＵ１１５からの制御により行われる。
【００２６】
フラッシュＲＯＭ１１４には、ＣＰＵ１１５が実行すべきプログラムが予め格納されている。ＣＰＵ１１５による上述の制御は、当該ＣＰＵ１１５が上記プログラムを実行することにより実現される。
【００２７】
ＲＡＭ１１３は、例えばＣＰＵ１１５が使用する種々の変数を格納するのに用いられる。ＲＡＭ１１３の記憶領域の一部は、ＣＰＵ１１５のワーク領域として用いられる。ＲＡＭ１１３の記憶領域の他の一部は、トラックグループ毎のライト回数（データライト回数）を保持するライトカウントテーブル４００（図５参照）を格納するのに用いられる。トラックグループ及びライトカウントテーブル４００については後述する。
【００２８】
リード・ライトＩＣ１０８は、サーボブロック１２１とリード・ライトブロック１２２とを有する。サーボブロック１２１は、サーボ信号の抽出を含む、ヘッド１０２の位置決めに必要な信号処理を行う。リード・ライトブロック１２２は、データの読み出し・書き込みのための信号処理を行う。ゲートアレイ１０９は、サーボブロック１２１によるサーボ信号の抽出のための信号を含む、制御用の諸信号を生成する。
【００２９】
ＨＤＣ１１０は、ＣＰＵバス１１２以外に、リード・ライトＩＣ１０８、ゲートアレイ１０９及びバッファＲＡＭ１１１に接続されている。ＨＤＣ１１０は、ホストブロック１２３、リード・ライトブロック１２４及びバッファブロック１２５を有する。ホストブロック１２３は、ホストシステム２００から転送されるコマンド（ライトコマンド、リードコマンド等）を受信し、且つホストとＨＤＣ１１０との間のデータ転送を制御する、ホストインタフェース制御機能を有する。リード・ライトブロック１２４は、リード・ライトＩＣ１０８及びゲートアレイ１０９と接続され、リード・ライトＩＣ１０８を介して行われるデータの読み出し・書き込み処理を行う。バッファブロック１２５は、バッファＲＡＭ１１１を制御する。バッファＲＡＭ１１１の記憶領域の一部は、ＨＤＣ１１０（ＨＤＣ１１０内のリード・ライトブロック１２４）を介してディスク１０１に書き込まれるべきデータ（ライトデータ）を一時格納するためのライトバッファとして用いられる。バッファＲＡＭ１１１の記憶領域の別の一部は、ＨＤＣ１１０を介してディスク１０１から読み出されたデータ（リードデータ）を一時格納するためのリードバッファとして用いられる。
【００３０】
リード・ライトＩＣ１０８、ゲートアレイ１０９、及びＨＤＣ１１０は、それぞれ制御用レジスタを有する。これらの制御用レジスタは、それぞれＣＰＵ１１５のメモリ空間の一部に割り当てられており、ＣＰＵ１１５はこの一部の領域に対してアクセスすることで、制御用レジスタを介してリード・ライトＩＣ１０８、ゲートアレイ１０９、またはＨＤＣ１１０を制御する。
【００３１】
図１のＨＤＤ１００において、データの読み出しは次のように行われる。まずヘッド１０２によってディスク１０１から読み出された信号（アナログ信号）は、ヘッドＩＣ１０７によって増幅される。増幅されたアナログ信号はリード・ライトＩＣ１０８によってサーボ信号とデータ信号とに分離される。データ信号はリード・ライトＩＣ１０８内のリード・ライトブロック１２２で復号化された後ＨＤＣ１１０に送られる。ＨＤＣ１１０内のリード・ライトブロック１２４は、復号化されたデータ信号をゲートアレイ１０９からの制御用の信号に従って処理することにより、ホストシステム２００に転送すべきデータを生成する。ここでの処理は、ＥＣＣデータに基づくデータの誤りの検出と誤りの訂正とを含む。生成されたデータは、ＨＤＣ１１０内のバッファブロック１２５によって一旦バッファＲＡＭ１１１に格納されてから、当該ＨＤＣ１１０内のホストブロック１２３によってホストシステム２００に転送される。
【００３２】
図１のＨＤＤ１００において、データの書き込みは次のように行われる。ホストシステム２００からＨＤＣ１１０に転送されたデータは、当該ＨＤＣ１１０内のホストブロック１２３で受信された後、当該ＨＤＣ１１０内のバッファブロック１２５によって一旦バッファＲＡＭ１１１に格納される。バッファＲＡＭ１１１に格納されたデータは、バッファブロック１２５によって取り出された後、ゲートアレイ１０９からの制御用の信号に従ってＨＤＣ１１０内のリード・ライトブロック１２４によってリード・ライトＩＣ１０８へ送られる。リード・ライトＩＣ１０８に送られたデータは、当該リード・ライトＩＣ１０８内のリード・ライトブロック１２２によって符号化される。符号化されたデータはヘッドＩＣ１０７を介してヘッド１０２に送られて、当該ヘッド１０２によってディスク１０１に書き込まれる。上述のデータの読み出し／書き込みは、ＣＰＵ１１５の制御の下で行われる。
【００３３】
次に、図１のＨＤＤ１００で実行されるデータリフレッシュ処理の概要について、図３を参照して説明する。  
前述したように、データリフレッシュ動作中の電源遮断対策のために、リフレッシュされるべき各トラックのデータをディスク上の特定のトラックに一時退避させると、各トラック毎に長距離のヘッド移動が必要となる。この場合、データリフレッシュ効率が低下する。そこで本実施形態では、データリフレッシュ動作中の電源遮断対策を図りながら、長距離のヘッド移動が発生する回数を減少して、データリフレッシュ効率を向上することが可能な、次のような特徴あるデータリフレッシュ処理を適用している。
【００３４】
一般に、データリフレッシュ処理の最大の目的は、各トラックにデータを書き込む際に、両側の隣接トラックに及ぼすライトフリンジングの影響を回避することである。このたため理想的には、トラック毎に隣接トラックに対するデータライトの回数を数え、データリフレッシュ処理もトラック毎に行うのが好ましい。しかし、磁気ディスクドライブの全トラックについてライト回数を保持するには、膨大なメモリ容量を必要とするため現実的ではない。
【００３５】
そこで本実施形態では、ディスク１０１の記録面に配置されたトラック２０１の集合が予め定められた一定数のトラック（例えば、数十乃至１００程度のトラック）を単位にグループ化されて、グループ単位でデータリフレッシュ処理が行われる。このグループを、トラックグループと称する。もし、ディスク１０１上のトラック２０１の総数が１６万、トラックグループ当たりのトラック数が１００であるとするならば、ディスク１０１の１記録面当たりのトラックグループ数は、トラック２０１の総数の１／１００、つまり１６００となる。
【００３６】
本実施形態では、トラックグループ毎に、そのトラックグループへのデータ書き込み動作の総数（ライト回数）がカウントされる。このカウント値が予め定められた一定値に達したならば、該当するトラックグループを対象とするデータフリフレッシュ処理が行われる。
【００３７】
図３の例では、ディスク１０１上の１つのトラックグループ３０１が示されている。また図３の例では、システムのみが使用可能なシステム領域３０２が示されている。システム領域３０２は一般に１つ以上のトラックを含む。本実施形態では、システム領域３０２内の特定のトラックの一部が、専用退避領域３０３（特定の退避領域）として割り当てられている。この特定トラックは、いずれのトラックグループにも属さないものとする。
【００３８】
ディスク１０１上のトラック２０１の集合を複数のトラックグループに区分して管理する場合、次のような方法を適用するならば、トラックグループ全体のデータリフレッシュ処理に要する時間を抑えることが可能となる。この方法とは、トラックグループを単位に、トラックグループ内の全トラックから一度にデータを読み出して、それを当該全トラックに書き戻すことである。しかし、この方法は、データを読み込むためのバッファを構築するのに膨大なメモリ容量を必要とする。
【００３９】
そこで本実施形態では、各トラックグループが、一定数のセグメントに区分される。各トラックグループは、例えば先頭セグメントから最終セグメントまで、セグメント単位で順にリフレッシュされる。これにより、トラックグループ全体をリフレッシュすることができる。但し、先頭セグメントのリフレッシュには、後述するように、２番目のセグメント乃至最終セグメントのリフレッシュとは異なる手順が適用される。
【００４０】
図３の例では、トラックグループ３０１が、Ｎ＋１個のセグメント０〜Ｎに区分されている。セグメント０は先頭セグメントを示し、セグメントＮは最終セグメントを示す。図３において、トラックグループ３０１内の先頭のトラック２０１の終端側に位置するセグメント要素（ＳＥ）２ａと、先頭のトラック２０１に後続するトラック２０１の始端側に位置するセグメント要素（ＳＥ）２ａは、セグメント２を構成する。
【００４１】
トラックグループ３０１内のセグメント０は、トラックグループ３０１内の他のセグメント１〜Ｎよりもセグメント長が２セクタだけ長くなるように設定されている。つまり、セグメント１〜Ｎの各々がＬセクタから構成されているものとすると、セグメント０は（Ｌ＋２）セクタから構成されることになる。
【００４２】
一方、専用退避領域３０３は、セグメント０よりもサイズが２セクタだけ長くなるように設定されている。つまり、セグメント０が（Ｌ＋２）セクタから構成されている場合、専用退避領域３０３は（Ｌ＋４）セクタから構成されることになる。
【００４３】
トラックグループ３０１に対するデータリフレッシュ処理は、ＣＰＵ１１５によって次のような手順で行われる。  
（１）トラックグループ３０１内の先頭のセグメント０に格納されているデータ（つまり（Ｌ＋２）セクタのデータ）を専用退避領域３０３に退避するための退避動作３２１が実行される。この（Ｌ＋２）セクタのデータの前後には、それぞれ１セクタのヘッダ及びフッタが付加される。つまり退避動作３２１は、セグメント０に格納されている（Ｌ＋２）セクタのデータをバッファＲＡＭ１１１に読み出す動作と、読み出された（Ｌ＋２）セクタのデータにヘッダ及びフッタを付加する動作と、ヘッダ及びフッタを含むが付加された（Ｌ＋４）セクタのデータを専用退避領域３０３に書き込む動作とを含む。退避動作３２１はセグメント０（第１のセグメント）に対するデータリフレッシュ動作３２０の一部である。データリフレッシュ動作３２０の残りの動作は、後述するように、セグメント１〜Ｎ（第２のセグメント）に対するデータリフレッシュ動作３２２-1〜３２２-Nが全て完了した後に実行される。
【００４４】
（２）トラックグループ３０１内の２番目のセグメント１に格納されているデータ（つまりＬセクタのデータ）をリフレッシュするためのデータリフレッシュ動作３２２-1が実行される。データリフレッシュ動作３２２-1は、セグメント１に格納されているＬセクタのデータをバッファＲＡＭ１１１に読み出す動作と、読み出されたＬセクタのデータの前後に、それぞれ１セクタのヘッダ及びフッタを付加する動作と、ヘッダ及びフッタが付加された（Ｌ＋２）セクタのデータをセグメント０に書き込む（つまり退避する）動作とを含む。データリフレッシュ動作３２２-1は更に、読み出されたＬセクタのデータをセグメント１に書き戻すことにより当該セグメント１に格納されているデータをリフレッシュするための動作と、セグメント０に退避されているデータを無効化する動作を含む。このようにセグメント０は、セグメント１に格納されているデータをリフレッシュする際の一時退避領域として用いられる。本実施形態において、セグメント０に退避されているデータの無効化は、当該データに付加されているヘッダ及びフッタのうちのヘッダを無効化することによって実現される。ヘッダ及びフッタがいずれも有効な場合だけ、当該ヘッダ及びフッタを有効なヘッダ及びフッタと呼ぶ。したがってヘッダ及びフッタのうちのヘッダが無効化されている場合、当該ヘッダ及びフッタは有効なヘッダ及びフッタではない。
【００４５】
（３）後続のセグメント２〜Ｎの各々に対しても、上述のセグメント１に対するのと同様のデータリフレッシュ動作３２２-2〜３２２-Nが実行される。したがってセグメント０は、セグメント１〜Ｎに格納されているデータをリフレッシュする際の一時退避領域としても用いられる。
【００４６】
（４）トラックグループ３０１内の最終のセグメントＮに対するデータリフレッシュ動作３２２-Nが完了したら、セグメント０に対する未完了のデータリフレッシュ動作３２０が実行される。つまりデータリフレッシュ動作３２０のうち既に実行済みの退避動作３２１を除く残りの動作である書き戻し動作３２３が実行される。この書き戻し動作３２３は、退避動作３２１によってセグメント０から専用退避領域３０３に退避されたデータをバッファＲＡＭ１１１に読み出す動作と、読み出されたデータを当該セグメント０に書き戻すことにより当該セグメント０に格納されているデータをリフレッシュするための動作と、専用退避領域３０３に退避されているデータに付加されているヘッダを無効化する動作とを含む。書き戻し動作３２３の実行により、トラックグループ３０１内のセグメント０に格納されているデータがリフレッシュされる。この結果、トラックグループ３０１を対象とするデータリフレッシュ処理が完了する。
【００４７】
このようなデータリフレッシュ処理では、トラックグループ３０１内の全セグメント０〜Ｎをリフレッシュするのに、当該トラックグループ３０１と当該トラックグループ３０１から離れた専用退避領域３０３との間でヘッド１０２を移動するための長距離シーク動作は４回発生するだけである。これに対して、セグメント０〜Ｎのデータを退避するのに、従来技術のように常に専用退避領域３０３を使用するならば、４×（Ｎ＋１）回の長距離シーク動作が発生する。よって本実施形態によれば、トラックグループ当たりの長距離シーク動作の回数を従来技術に比べて著しく減少することができ、データリフレッシュ効率を向上することができる。
【００４８】
ここで、トラックグループ当たりのトラック数が１００、ディスク１０１の１記録面当たりのトラック数が１６万であるとする。この場合、トラックグループ内の２番目のセグメントから最終のセグメントまでの各セグメントと先頭のセグメントとの間で発生するシーク動作での平均のヘッド移動距離は、長距離シーク動作での平均のヘッド移動距離の１／１６００となる。
【００４９】
データリフレッシュ処理中にＨＤＤ１００の電源が遮断した場合、ＣＰＵ１１５が、次のような手順で復旧処理を実行することにより、電源遮断の検出とデータの復旧とが実現される。  
（手順ａ）専用退避領域３０３に退避されているデータがバッファＲＡＭ１１１に読み出される。  
（手順ｂ1）専用退避領域３０３から読み出されたデータに有効なヘッダ及びフッタが付加されていない場合、当該読み出されたデータを用いて復旧すべきデータはないと判定される。この場合、復旧処理は終了する。
【００５０】
（手順ｂ2）一方、専用退避領域３０３から読み出されたデータに有効なヘッダ及びフッタが付加されている場合、復旧されるべきデータがあると判定される。この場合、先頭のセグメント０のデータがバッファＲＡＭ１１１に読み出される。  
（手順ｂ2-1）セグメント０から読み出されたデータに有効なヘッダ及びフッタが付加されていない場合、セグメント０から読み出されたデータを用いて復旧すべきデータはないと判定される。この場合、専用退避領域３０３から読み出されたデータを用いて復旧すべきデータがあるとして、後述する手順ｃに進む。  
（手順ｂ2-2）一方、セグメント０から読み出されたデータに有効なヘッダ及びフッタが付加されている場合、セグメント０から読み出されたデータを用いて復旧すべきデータがあると判定される。この場合、セグメント０から読み出されたデータを該当するセグメントに書き込み、しかる後に当該セグメント０に退避されているデータに付加されているヘッダが無効化される。
【００５１】
（ｃ）専用退避領域３０３から読み出されたデータをセグメント０に書き込み、しかる後に当該専用退避領域３０３に退避されているデータに付加されているヘッダが無効化される。
【００５２】
図４はトラックグループ毎のライト回数（データライト回数）を保持するライトカウントテーブル４００のデータ構造例を示す。ライトカウントテーブル４００は、例えば図１におけるＲＡＭ１１３の所定の領域に格納される。つまり、ＲＡＭ１１３の所定の領域は、ライトカウントテーブル４００を格納するライトカウント記憶モジュールとして用いられる。
【００５３】
図４に示されるライトカウントテーブル４００の例では、説明の一般化のために、ＨＤＤ１００がｍ本のヘッド１０２を有すると共に、当該ＨＤＤ１００がｎ個のシリンダグループから構成される場合を想定している。この場合、ライトカウントテーブル４００は、ヘッド（ヘッド番号）ｈ、シリンダグループ（シリンダグループ番号）ｃを用いて表される全てのトラックグループの各々について、そのトラックグループのライト回数（データライト回数）Ｗ（ｈ，ｃ）（０≦ｈ≦ｍ−１，０≦ｃ≦ｎ−１）を保持している。トラックグループのライト回数とは、当該トラックグループにデータを書き込む動作が実行された回数である。Ｗ（ｈ，ｃ）はヘッド番号ｈ及びシリンダグループ番号ｃで特定されるトラックグループのライト回数をカウントするライトカウンタとして用いられる。なお、図１に示されるＨＤＤ１００の構成の場合、ｍは１である。
【００５４】
シリンダグループとは、予め定められた一定数のシリンダの集合であり、１シリンダグループ当たりのシリンダ数は、１トラックグループ当たりのトラック数と同じである。したがって、同一のシリンダグループ番号を持つトラックグループは、ＨＤＤ１００内に、ヘッド１０２の数ｍに一致する数だけ存在する。トラックグループは、シリンダグループ番号ｃとヘッド番号ｈとにより特定される。シリンダグループ番号ｃとヘッド番号ｈとで特定されるトラックグループ内のトラックへのデータの書き込み（ライトアクセス）が行われると、カウントテーブル４００に保持されているライトカウンタ（ライト回数）Ｗ（ｈ，ｃ）が、書き込みが行われた回数だけインクリメントされる。
【００５５】
本実施形態では、ライトカウントテーブル４００は、前述のようにＲＡＭ１１３に格納される。ＲＡＭ１１３の内容はＨＤＤ１００の電源の遮断により失われる。したがって、ライトカウントテーブル４００の内容も電源遮断と共に失われる。このため本実施形態では、ライトカウントテーブル４００を含む、ＲＡＭ１１３内の予め定められた領域の内容は、必要に応じて（例えばＨＤＤ１００の省電力状態への移行時に）、ディスク１０１の所定領域に保存（退避）される。このディスク１０１の所定領域に保存されたカウントテーブル４００を含む内容は、ＨＤＤ１００の起動時（電源投入時）に読み出されて、ＲＡＭ１１３内に復元される。
【００５６】
次に、トラックグループ単位のデータリフレッシュ処理が行われる図１のＨＤＤ１００における全体的な動作について、図５のフローチャートを参照して説明する。  
まず、ＨＤＤ１００の電源が投入され、ＣＰＵ１１５の動作が開始されたものとする（ステップ５０１）。するとＣＰＵ１１５は、初期化・回復処理を行う（ステップ５０２）。即ちＣＰＵ１１５は、ＨＤＤ１００全体を対象とする周知の初期化処理を実行し、しかる後にデータリフレッシュ処理に関する回復処理を行う。この回復処理では、前回の動作時に、データリフレッシュ処理が中断した状態で電源が遮断されていないかが調べられる。もし電源が遮断されていれば、そのデータリフレッシュ処理を完了させるための制御が行われる。回復処理では、ディスク１０１の所定領域に保存されているライトカウントテーブル４００が読み出されて、ＲＡＭ１１３内に格納される。
【００５７】
初期化・回復処理が終了するとＣＰＵ１１５は、ＨＤＣ１１０を介してホストシステム２００からコマンドを受信できる状態になり、コマンド待ちループ（ステップ５０３〜５０７）に入る。
【００５８】
ステップ５０３においてホストシステム２００からのコマンドの受信を確認すると、ＣＰＵ１１５は、ステップ５１１に分岐することでコマンド待ちループを抜けて、ホストシステム２００からのコマンドに応じた処理（コマンド実行処理）を実行する。
【００５９】
一方、コマンド待ちループにおけるステップ５０３で、コマンドを受信していないと判定されたものとする。この場合、アイドル時処理が行われる。また、ステップ５１１でコマンド実行処理が完了した後も、アイドル時処理が行われる。アイドル時処理は、データリフレッシュ処理を含む。本実施形態においてＣＰＵ１１５は、このデータリフレッシュ処理に進む前に、当該データリフレッシュ処理を行うべきかを判定する（ステップ５０４，５０５）。
【００６０】
ステップ５０４においてＣＰＵ１１５は、例えば、データリフレッシュ処理を行わずにホストシステム２００からのコマンドを即座に実行する必要があるか、或いはデータリフレッシュ処理を回避すべき状況にあるかを総合的に判断する。コマンドを即座に実行する必要があるのは、例えば、ステップ５１１が実行された直後にホストシステム２００からコマンドを受信した場合である。データリフレッシュ処理を回避すべき状況は、外部からＨＤＤ１００に一定レベルを超える振動が加わった場合、ＨＤＤ１００の環境温度が当該ＨＤＤ１００の動作が保証される温度範囲から例えば高温側に外れた場合等、ＨＤＤ１００が悪条件下で用いられる場合である。
【００６１】
ステップ５０５においてＣＰＵ１１５は、ステップ５０４での総合的な判断結果から、データトラックリフレッシュ処理が実行可能かを判定する。データリフレッシュ処理が実行可能と判定した場合のみ、ＣＰＵ１１５は、当該データリフレッシュ処理を行う（ステップ５０６）。このデータリフレッシュ処理の詳細については後述する。
【００６２】
ステップ５０６でのデータリフレッシュ処理が終了するか、ステップ５０５でデータリフレッシュ処理を行うべきでないと判定された場合には、ＣＰＵ１１５はステップ５０７に進む。このステップ５０７においてＣＰＵ１１５は、ＨＤＤ１００を省電力状態に遷移させるための省電力処理を実行するかを判定し、実行する必要があるならば当該省電力処理を実行する。省電力処理は、ヘッド１０２をディスク１０１上からアンロードさせるためのアンロード処理、及びまたは、ＳＰＭ１０３の回転を停止させる処理を含む。
【００６３】
ステップ５０７で省電力処理が実行されると、ＣＰＵ１１５はステップ５０３に戻る。これに対し、ホストシステム２００からのコマンドを即座に実行する必要がある場合には、ステップ５０７で省電力処理を実行すべきでないと判定される。この場合、ＣＰＵ１１５は省電力処理を実行せずにステップ５０３に戻る。以後ＣＰＵ１１５は、ステップ５０３を含む上述の処理を繰り返す。
【００６４】
次に、上記ステップ５０２で実行される初期化・回復処理の詳細な手順について、図６のフローチャートを参照して説明する。なお、図６のフローチャートでは、データリフレッシュとは関係しない手順は省略されている。
【００６５】
今、初期化・回復処理が開始されたものとする（ステップ６０１）。するとＣＰＵ１１５は、ディスク１０１に保存されているライトカウントテーブル４００を読み出してＲＡＭ１１３の所定の領域に格納し、しかる後に専用退避領域３０３に退避されているデータをバッファＲＡＭ１１１に読み出す（ステップ６０２）。
【００６６】
前述したように、データリフレッシュ動作では、トラックグループ（例えばトラックグループ３０１）内のあるセグメントのデータが読み出されると、その読み出されたデータにヘッダ及びフッタが付加される。このヘッダ及びフッタが付加されたデータが、退避先（専用退避領域３０３またはトラックグループ３０１内の先頭のセグメント０）に退避され、しかる後に上記読み出されたデータが上記あるセグメントに書き戻される（再書き込みされる）。最後に退避先に退避されているデータを無効化するために、当該データに付加されているヘッダを無効化する（例えばクリアする）ことにより、データリフレッシュ動作が完了する。
【００６７】
したがって、データリフレッシュ動作が完了していれば、退避先に有効なデータ（つまり有効なヘッダ及びフッタが付加されたデータ）が残っていることはない。逆に、有効なヘッダ及びフッタが付加されているデータが退避先に残っているならば、それは、データリフレッシュ動作中に予期しない電源遮断が発生したことを意味する。この場合、退避先に退避されているデータが格納されているはずのセグメント（つまり退避元）へのデータの書き込み中に電源遮断が発生して、当該セグメントのデータが破壊されている可能性も高い。そこで、退避先に退避されているデータを退避元に確実に書き込む必要がある。
【００６８】
ＣＰＵ１１５は、そのための判定をステップ６０３で行う。このステップ６０３における判定の対象は専用退避領域３０３からバッファＲＡＭ１１１に読み出されたデータに付加されているヘッダ及びフッタである。つまり、ステップ６０３においてＣＰＵ１１５は、専用退避領域３０３から読み出されたデータに有効なヘッダ及びフッタが付加されているかを判定する。
【００６９】
本実施形態において、ヘッダ及びフッタは同一内容の情報を含む。そこで本実施形態では、退避先に退避されているデータの無効化は、当該データに付加されているヘッダ及びフッタのうちのヘッダをクリアすることによって実現される。この場合、ヘッダ及びフッタが同一内容であるかを調べることにより、当該ヘッダ及びフッタが有効であるかを判定（検出）できる。
【００７０】
さて、専用退避領域３０３から読み出されたデータに有効なヘッダ及びフッタが付加されていないとＣＰＵ１１５が判定したものとする（ステップ６０３のＮＯ）。この判定結果は、専用退避領域３０３を退避先とするデータリフレッシュ動作３２０（図３参照）が完了し、したがって、最も最近に行われたトラックグループ（例えばトラックグループ３０１）を対象とするデータリフレッシュ処理が完了していることを意味する。この場合、もう１つの退避先である先頭のセグメント０のチェックは不要である。そこでＣＰＵ１１５は、初期化・回復処理を終了するためにステップ６１０に分岐し、図５のフローチャートに示されるようにステップ５０２からステップ５０３に進む。
【００７１】
これに対し、専用退避領域３０３から読み出されたデータに有効なヘッダ及びフッタが付加されているとＣＰＵ１１５が判定したものとする（ステップ６０３のＹＥＳ）。つまり、専用退避領域３０３から有効なヘッダ及びフッタが見つかったものとする。この判定結果は、最も最近に行われたトラックグループを対象とするデータリフレッシュ処理が完了していないことを意味する。なお、最も最近に行われたデータリフレッシュ処理の対象となるトラックグループは、後述するように有効なヘッダ及びフッタから特定可能である。ここでは、このトラックグループがトラックグループ３０１であるものとする。
【００７２】
専用退避領域３０３を退避先として使用するデータリフレッシュ動作３２０では、トラックグループ３０１を対象とするデータリフレッシュ処理の一番初めに先頭のセグメント０のデータを当該専用退避領域３０３に退避するための退避動作３２１が行われる。そして、トラックグループ３０１を対象とするデータリフレッシュ処理の一番最後に書き戻し動作３２３が行われる。この書き戻し動作３２３では、専用退避領域３０３に退避されているデータが先頭のセグメント０が書き戻されて、しかる後に専用退避領域３０３に退避されているデータに付加されているヘッダが無効化される。
【００７３】
したがって、ステップ６０３の判定がＹＥＳであることからは、ＣＰＵ１１５は、トラックグループ３０１を対象とするデータリフレッシュ処理が完了していないことを検出するのみである。そこでＣＰＵ１１５は、専用退避領域３０３以外に退避先として用いられるトラックグループ３０１内の先頭のセグメント０に退避されているデータを読み出す（ステップ６０４）。そしてＣＰＵ１１５は、セグメント０から読み出されたデータに有効なヘッダ及びフッタが付加されているかを判定する（ステップ６０５）。
【００７４】
もし、セグメント０から読み出されたデータに有効なヘッダ及びフッタが付加されているならば（ステップ６０５のＹＥＳ）、ＣＰＵ１１５はステップ６０６に分岐する。このステップ６０６においてＣＰＵ１１５は、セグメント０から読み出されたデータからヘッダ及びフッタが除かれたデータを、退避元である該当セグメントに書き込む。次にＣＰＵ１１５は、セグメント０に退避されているデータに付加されているヘッダを無効化する（クリアする）（ステップ６０７）。これによりＣＰＵ１１５は、セグメント０を利用した回復処理を終了する。そしてＣＰＵ１１５は、専用退避領域３０３を利用した回復処理を行うために、ステップ６０７からステップ６０８に分岐する。
【００７５】
ここで、専用退避領域３０３に退避されているデータに付加されている有効なヘッダ及びフッタはそれぞれ、それが有効なものであることを示す予め定められた文字列と、セグメント０の先頭セクタのアドレス（例えば論理ブロックアドレスＬＢＡ）及びセグメント０の長さ（サイズ）等を示す属性情報とを保持する。このため、ステップ６０４でのデータ読み出しの対象となるセグメント０と、当該セグメント０が属するトラックグループ３０１とは、このヘッダ及びフッタ中の属性情報（論理ブロックアドレスＬＢＡ及び長さ）から特定可能である。
【００７６】
同様に、一時退避領域として用いられるセグメント０に退避されているデータに付加されている有効なヘッダ及びフッタはそれぞれ、前記予め定められた文字列と、退避元である該当セグメントの先頭セクタの論理ブロックアドレスＬＢＡ及び当該該当セグメントの長さ等を示す属性情報とを保持する。このため、該当セグメントは、このヘッダ及びフッタ中の属性情報（論理ブロックアドレスＬＢＡ及び長さ）から特定可能である。
【００７７】
一方、セグメント０から読み出されたデータに有効なヘッダ及びフッタが付加されていないならば（ステップ６０５のＮＯ）、ＣＰＵ１１５はステップ６０７，６０７をスキップしてステップ６０８に分岐する。ステップ６０５の判定がＮＯとなるのは、トラックグループ３０１内の最終のセグメントＮを対象とするデータリフレッシュ動作３２２-Nが完了した直後に電源が遮断した場合である。この他に、先頭のセグメント０を除くセグメントｉ（ｉ＝１〜Ｎ）を対象とするデータリフレッシュ動作３２２-iにおいて、当該セグメントｉのデータを退避先（つまりセグメント０）に退避する前（例えばセグメントｉからデータを読み出している最中）に電源が遮断した場合にも、ステップ６０５の判定がＮＯとなる。
【００７８】
ステップ６０８においてＣＰＵ１１５は、ステップ６０２で専用退避領域３０３からバッファＲＡＭ１１１に読み出されたデータからヘッダ及びフッタを除いたデータを先頭のセグメント０に書き込む。次にＣＰＵ１１５は、専用退避領域内３０３に格納されているデータに付加されているヘッダをクリアすることにより、当該ヘッダを無効化する（ステップ６０９）。するとＣＰＵ１１５は、初期化・回復処理を終了するためにステップ６１０に分岐し、図５のフローチャートに示されるようにステップ５０２からステップ５０３に進む。
【００７９】
図６のフローチャートで示される初期化・回復処理が終了した状態では、最も最近に行われたデータリフレッシュ処理で退避先（一時退避領域）として使用されたセグメント０には、他のセグメントのデータは退避されていない。つまり、セグメント０のデータを含め、このデータリフレッシュ処理の対象となっていたトラックグループ（以下、該当トラックグループと称する）内の全てのセグメントのデータが正しくアクセス可能な状態になっている。
【００８０】
但し、初期化・回復処理の目的は、上記データリフレッシュ処理の最中に発生した予期しない電源遮断からのデータの回復にある。この初期化・回復処理の終了は、該当トラックグループのリフレッシュ完了を意味しない。その理由は、初期化・回復処理では、電源遮断の発生時にデータリフレッシュ動作の対象となっていたセグメントのデータと、当該データリフレッシュ動作のために退避先として使用された先頭のセグメント０のデータのみが回復されるだけのためである。つまり、初期化・回復処理では、電源遮断のために中断した残りのデータリフレッシュ処理は行われないためである。
【００８１】
そこで本実施形態では、該当トラックグループに対しては、図５に示される初期化・回復処理（ステップ５０２）の終了後に、当該該当トラックグループの先頭のセグメント０からデータリフレッシュ処理がやり直される。その理由は、後述するように、データリフレッシュ処理において、トラックグループ内の全てのセグメントに対するデータリフレッシュ動作が完了するまでは、ライトカウントテーブル４００内の該当するカウンタをクリアする処理が行われないからである。このトラックグループは、初期化・回復処理の終了後に行われるライトカウントテーブル４００の検索により、改めてリフレッシュ対象トラックグループとして検出される。
【００８２】
次に、上記ステップ５１１で実行されるコマンド実行処理の詳細な手順について、図７のフローチャートを参照して説明する。  
コマンド実行処理は、前述したように、ホストシステム２００からのコマンドの受信時に実行される。これにより、当該コマンドに応じた処理が行われる。コマンドの受信時に、あるトラックグループ、例えばトラックグループ３０１に対するデータリフレッシュ処理が実行中である場合、当該トラックグループ３０１内の先頭のセグメント０は、当該トラックグループ３０１内の他のセグメントのデータリフレッシュ動作のための退避先（一時退避領域）として使用されている。つまり、セグメント０には、トラックグループ３０１内の他のセグメントのデータが退避されている。セグメント０のデータは、専用退避領域３０３に退避されている。このため、受信されたコマンドが、上記先頭のセグメント０と少なくとも一部が重複する領域へのアクセスを要求している場合、セグメント０に代えて専用退避領域３０３にアクセスする必要がある。つまり、受信されたコマンドの指定するアクセス範囲を補正する必要がある。このアクセス範囲の補正は、コマンド実行処理において実行される。
【００８３】
コマンド実行処理が開始されると（ステップ７０１）、ＣＰＵ１１５は、ＨＤＤ１００がリフレッシュ処理モードにあるかを判定する（ステップ７０２）。リフレッシュ処理モードでは、選択されたトラックグループ内の各セグメントを対象とするデータリフレッシュ動作が行われる。
【００８４】
もし、リフレッシュ処理モードにないならば（ステップ７０２のＮＯ）、ＣＰＵ１１５はステップ７０５に分岐してコマンド処理を行う。これに対し、リフレッシュ処理モードにあるならば（ステップ７０２のＹＥＳ）、ＣＰＵ１１５はステップ７０３に分岐する。このステップ７０３においてＣＰＵ１１５は、受信されたコマンドの指定するディスク１０１上のアクセス範囲の少なくとも一部が、現在実行中のデータリフレッシュ処理の対象となっているトラックグループの先頭のセグメント０と重複しているかを判定する。アクセス範囲は、受信されたコマンドの指定するアドレス（例えば論理ブロックアドレスＬＢＡ）及びサイズによって示される。ＣＰＵ１１５は、ステップ７０３の判定結果に基づいて、アクセス範囲の補正が必要かを判定する。
【００８５】
もし、重複していないと判定された場合（ステップ７０３のＮＯ）、ＣＰＵ１１５はアクセス範囲の補正は不要であるとして、ステップ７０５に分岐する。これに対して重複していると判定された場合（ステップ７０３のＹＥＳ）、ＣＰＵ１１５はアクセス範囲を補正（ステップ７０４）。
【００８６】
ステップ７０４では、受信されたコマンドで指定されるアクセス範囲のうちの重複部分は専用退避領域３０３を指すように変更される。これにより、アクセス範囲のうちの重複部分については、当該重複部分ではなくて、専用退避領域３０３がアクセスされる。一方、それ以外の部分については、その部分が通常通りアクセスされる。このため、例えば一部が先頭のセグメント０と重複するようなアクセス範囲を指定するライトコマンドを受信した場合、退避先領域３０３へのデータの書き込みと、指定されたアクセス範囲の残りの部分へのデータ書き込みとが連続して行われる。
【００８７】
次に、上記ステップ５０６で実行されるデータリフレッシュ処理の詳細な手順について、図８及び図９のフローチャートを参照して説明する。  
今、データリフレッシュ処理が開始されたものとする（ステップ８０１）。するとＣＰＵ１１５は、ＨＤＤ１００がリフレッシュ処理モードにあるかを判定する（ステップ８０２）。このステップ８０２の判定は、次の理由により実行される。まず、トラックグループ内の全てのセグメントをリフレッシュするには長時間を要する。そこでリフレッシュ処理モードの期間に、ホストシステム２００から受信されたコマンドへの応答性を低下させないために、１セグメントずつデータリフレッシュ動作が行われる毎にデータリフレッシュ処理を一時中断できることが好ましい。ステップ８０２の判定は、このことに関連する。
【００８８】
ＨＤＤ１００がリフレッシュ処理モードに設定されるのは、ライトカウントテーブル４００の検索（ステップ８０４，８０５）が完了した後である。このリフレッシュ処理モードは、該当するトラックグループ内の全セグメントのリフレッシュが完了しないと解除されない。このため、データリフレッシュ処理の開始後に、ＨＤＤ１００がリフレッシュ処理モードにあれば（ステップ８０２のＹＥＳ）、リフレッシュ対象となるセグメントは必ず確定している。このため、ステップ８０２の判定がＹＥＳの場合、ＣＰＵ１１５はステップ８０６に分岐して、リフレッシュ動作の実行に移る。
【００８９】
一方、ＨＤＤ１００がリフレッシュ処理モードにないならば（ステップ８０２のＮＯ）、ＣＰＵ１１５はライトカウントテーブル４００を参照することにより、最大のライト回数を示すライトカウンタＷ（ｈ，ｃ）を検出する（ステップ８０３）。そしてＣＰＵ１１５は、検出されたライトカウンタＷ（ｈ，ｃ）の示すライト回数が閾値を超えているかによって、ヘッド番号ｈ及びシリンダグループ番号ｃで特定されるトラックグループのリフレッシュが必要であるかを判定する（ステップ８０４）。つまりＣＰＵ１１５は、リフレッシュが必要なトラックグループが存在するかを判定する。
【００９０】
もし、リフレッシュが必要なトラックグループが存在する場合（ステップ８０４のＹＥＳ）、ＣＰＵ１１５は、当該トラックグループを対象とするデータリフレッシュを実行するために、ＨＤＤ１００をリフレッシュ処理モードに設定する（ステップ８０５）。このステップ８０５においてＣＰＵ１１５は、トラックグループ内の次にリフレッシュされるべきセグメントを指定するセグメントポインタを、当該トラックグループ内の先頭のセグメント０を指すように設定する。ここではセグメントポインタは、先頭のセグメント０を指す「０」に設定される。このセグメントポインタは、ＲＡＭ１１３内の所定の領域に格納されている。次にＣＰＵ１１５は、ステップ８０６以降の処理を行う。
【００９１】
これに対し、リフレッシュが必要なトラックグループが存在しない場合（ステップ８０４のＮＯ）、ＣＰＵ１１５は、データリフレッシュ処理を行う必要はないので、当該データリフレッシュ処理を終了するためにステップ８１４に分岐し、図５のフローチャートに示されるようにステップ５０６からステップ５０７に進む。
【００９２】
前述したように、ステップ５０４，５０５でも、データリフレッシュ処理を行うべきかが判定される。但し、ステップ５０４，５０５では、ステップ８０３，８０４と異なって、ライトカウントテーブル４００に基づく判定、即ちデータリフレッシュ処理を行う必要があるトラックグループが存在するかの判定は行わない。
【００９３】
なお、ステップ５０４，５０５が実行される際に、ライトカウントテーブル４００を参照する必要が生じたならば、ステップ５０４，５０５で、ステップ８０３，８０４に相当する判定が行われてもよい。例えば、前述のデータリフレッシュ処理を回避すべき状況にあるかを、ＨＤＤ１００の動作環境のレベル、及びライトカウントテーブル４００内の各ライトカウンタの示すライト回数の両者に基づき判断する場合がこれに当たる。例えば、動作環境のレベルが同じでも、トラックグループにデータを書き込む動作の回数（ライト回数）が少ない間は、当該トラックグループ内の各セグメントのデータの劣化は少ない。このような状態では、悪条件下でデータリフレッシュ処理を実行するよりも、それを見送った方がリスクは低い。これに対し、ライト回数が多くなると該当するトラックグループ内の各セグメントのデータの劣化は進む。このような状態では、多少の悪条件でもデータリフレッシュ処理を実行した方が逆にリスクは低くなる。ステップ５０４，５０５で、このような判定を行えば、当該ステップ５０４，５０５で、ライト回数が最も多いトラックグループが特定されると共に、そのライト回数が取得される。この場合、ステップ８０３，８０４で必ずしもこのような判定を再度行う必要はない。
【００９４】
さてＣＰＵ１１５は、ステップ８０６において、データリフレッシュ処理の対象となっているトラックグループ内の最終のセグメントＮのリフレッシュが終了しているかを判定（または検出）する。この判定は、上述のセグメントポインタに基づいて行われる。具体的には、ＣＰＵ１１５は、セグメントポインタが「Ｎ＋１」に設定されているかによって、最終のセグメントＮのリフレッシュが終了しているかを判定する。以降の説明では、トラックグループ３０１がデータリフレッシュ処理の対象となっているものとする。
【００９５】
もし、最終のセグメントＮのリフレッシュが終了していない場合（ステップ８０６のＮＯ）、ＣＰＵ１１５はステップ８０７に分岐して、次にリフレッシュされるべきセグメントが、トラックグループ３０１内の先頭のセグメント０（第１のセグメント）であるか、他のセグメント１〜Ｎ（第２のセグメント）のうちの１つであるかを判定（検出）する。
【００９６】
まず、次にリフレッシュされるべきセグメントが、トラックグループ３０１内の先頭のセグメント０である場合（ステップ８０７のＹＥＳ）、ＣＰＵ１１５はステップ８２１に分岐する。即ち、トラックグループ３０１を対象とするデータリフレッシュ処理で最初のデータリフレッシュ動作３２０が実行される場合、ＣＰＵ１１５はステップ８２１に分岐する。
【００９７】
前述したように、トラックグループ３０１内の先頭のセグメント０は、当該トラックグループ３０１内の２番目のセグメント１乃至最終のセグメントＮの各セグメントのデータを一時退避する領域（一時退避領域）として使用される。そこでステップ８２１においてＣＰＵ１１５は、先頭のセグメント０が一時退避領域として使用される前に、当該先頭のセグメント０のデータをバッファＲＡＭ１１１に読み出す。次にＣＰＵ１１５は、読み出された先頭のセグメント０のデータの前後にそれぞれヘッダ及びフッタを付加して、このヘッダ及びフッタが付加されたデータを専用退避領域３０３に書き込む（ステップ８２２）。これにより、先頭のセグメント０のデータが専用退避領域３０３に退避される。ステップ８２１，８２２は、前述の退避動作３２１（図３参照）に相当する。
【００９８】
ステップ８２２が実行された状態では、先頭のセグメント０を対象とするデータリフレッシュ動作３２０は未完了である。しかし本実施形態では、ＣＰＵ１１５は、次のセグメント１を対象とするデータリフレッシュ動作３２２-1のために、セグメントポインタが次にリフレッシュされるべきセグメント１を指すように、当該セグメントポインタを進める（ステップ８１２）。
【００９９】
一方、次にリフレッシュされるべきセグメントが、トラックグループ３０１内の２番目のセグメント１乃至最終のセグメントＮの１つ（以下、セグメントｉと称する）である場合（ステップ８０７のＮＯ）、ＣＰＵ１１５はステップ８０８に分岐する。ステップ８０８においてＣＰＵ１１５は、セグメントｉ（ｉ＝１〜Ｎ）のデータをバッファＲＡＭ１１１に読み出す。
【０１００】
次にＣＰＵ１１５は、読み出されたセグメントｉのデータの前後にそれぞれヘッダ及びフッタを付加して、このヘッダ及びフッタが付加されたデータをトラックグループ３０１内の先頭のセグメント０に書き込む（ステップ８０９）。即ちＣＰＵ１１５は、セグメント０をセグメント１のデータの一時退避領域として利用して、セグメントｉから読み出されてヘッダ及びフッタが付加されたデータを、当該セグメント０に退避する。
【０１０１】
次にＣＰＵ１１５は、セグメントｉからバッファＲＡＭ１１１に読み出されたデータを、当該セグメントｉに書き込む（つまり書き戻す）ことにより、当該セグメントｉをリフレッシュする（ステップ８１０）。次にＣＰＵ１１５は、先頭のセグメント０に退避されているデータに付加されているヘッダをクリア（つまり無効化）する（ステップ８１１）。これにより、セグメントｉをリフレッシュするためのデータリフレッシュ動作３２０-iが完了する。そこでＣＰＵ１１５は、セグメントポインタが次にリフレッシュされるべきセグメント（ｉ＋１）を指すように、当該セグメントポインタを「ｉ」から「ｉ＋１」に進める（ステップ８１２）。
【０１０２】
さて、最終のセグメントＮのリフレッシュが終了している場合（ステップ８０６のＹＥＳ）、ＣＰＵ１１５はステップ８３１に分岐する。最終のセグメントＮのリフレッシュが終了した状態では、先頭のセグメント０のデータは前述のステップ８２１，８２２（データリフレッシュ動作３２０における退避動作３２１）により、専用退避領域３０３に退避されている。但し、データリフレッシュ動作３２０は完了しておらず、先頭のセグメント０はリフレッシュされていない。
【０１０３】
そこでステップ８３１においてＣＰＵ１１５は、先頭のセグメント０をリフレッシュするために、専用退避領域３０３に退避されている先頭のセグメント０のデータをバッファＲＡＭ１１１に読み出す（ステップ８３１）。次にＣＰＵ１１５は、専用退避領域３０３からバッファＲＡＭ１１１に読み出されたデータを、先頭のセグメント０に書き込む（つまり書き戻す）ことにより、当該先頭のセグメント０をリフレッシュする（ステップ８３２）。次にＣＰＵ１１５は、専用退避領域３０３に退避されているデータに付加されているヘッダをクリア（つまり無効化）する（ステップ８３３）。
【０１０４】
これにより、先頭のセグメント０をリフレッシュするためのデータリフレッシュ動作３２０が完了する。つまり、トラックグループ３０１内の全てのセグメント０〜Ｎのリフレッシュが完了する。そこでＣＰＵ１１５は、リフレッシュ処理が行われているトラックグループが存在しないことを示すために、リフレッシュ処理モードを解除する（ステップ８３４）。このステップ８３４は、ステップ７０２，８０２での判定を正しく行うために必要である。
【０１０５】
次にＣＰＵ１１５は、ライトカウントテーブル４００内のトラックグループ３０１（つまりリフレッシュ処理が完了したトラックグループ）に対応するライトカウンタをクリアする（ステップ８３５）。これにより、トラックグループ３０１に対応するライトカウンタの値は０となる。このステップ８３５の意義について以下に説明する。
【０１０６】
ライトカウントテーブル４００内の各ライトカウンタは、前述したように、対応するトラックグループにデータを書き込む動作が実行された回数（ライト回数）を保持する。ライト回数は対応するトラックグループ内のデータの劣化の程度と相関がある。このため、ライト回数は便宜的にデータ劣化の程度として扱われる。トラックグループを対象とするリフレッシュ処理が完了した直後は当該トラックグループにおけるデータの劣化はない。このことを、ライトカウントテーブル４００内の対応するライトカウンタに反映させるために、ステップ８３５が実行される。
【０１０７】
さてＣＰＵ１１５は、ステップ８１２を実行するとステップ８１３に分岐する。またＣＰＵ１１５は、ステップ８３５を実行した場合にもステップ８１３に分岐する。つまりＣＰＵ１１５は、リフレッシュ処理の対象となるトラックグループ内のいずれか１つのセグメントをリフレッシュし終えた場合、ステップ８１３に分岐する。
【０１０８】
ステップ８１３においてＣＰＵ１１５は、リフレッシュ処理の中断要求があるかを判定する。ホストシステム２００からのコマンドの受信は、リフレッシュ処理の中断要求が発行される条件の１つである。ＨＤＣ１１０内のホストブロック１２３がホストシステム２００からのコマンドを受信すると、ＨＤＤ１００は即座にビジー状態となり、同時に当該ビジー状態を表すビジーフラグがセットされる。そこでＣＰＵ１１５は、このフラグの状態を監視する。ビジーフラグは、データリフレッシュ処理の実行中であるかに関係なくセットされる。このため、ホストシステム２００によって認識されるコマンドの応答時間は、実行中のデータリフレッシュ処理が完了するまでの時間と本来のコマンド実行時間との合計となる。もし、ホストシステム２００からのコマンドの受信時に、データリフレッシュ処理が完了するまで当該コマンドの実行を待たせるならば、当該コマンドへの応答性の低下を招く。これを回避するために、上記ステップ８１３が実行される。
【０１０９】
もし、リフレッシュ処理の中断要求があるならば（ステップ８１３のＹＥＳ）、ＣＰＵ１１５は速やかにデータリフレッシュ処理を中断させるためにステップ８１４に分岐し、図５のフローチャートに示されるようにステップ５０６からステップ５０７に進む。この場合、ＣＰＵ１１５は速やかにステップ５０３に分岐して、受信されたコマンドのための処理（コマンド実行処理）を開始させるために、ステップ５０７においても、ステップ８１３と同様の処理を行う。
【０１１０】
これに対し、リフレッシュ処理の中断要求がないならば（ステップ８１３のＮＯ）、ＣＰＵ１１５は再びステップ８０２に分岐してＨＤＤ１００がリフレッシュ処理モードにあるかを判定する。ここで、トラックグループ内の全てのセグメントのリフレッシュが完了している状態では、ステップ８３４でリフレッシュ処理モードは解除されている。つまりＨＤＤ１００はリフレッシュ処理モードにない（ステップ８０２のＮＯ）。この場合、ＣＰＵ１１５は前述したように、リフレッシュを必要とするトラックグループをライトカウントテーブル４００に基づいて検索する（ステップ８０３，８０４）。もし、リフレッシュを必要とするトラックグループが存在しないならば（ステップ８０４のＮＯ）、ＣＰＵ１１５はステップ８１４に分岐してデータリフレッシュ処理を終了する。このように、リフレッシュ処理の中断要求がないならば（ステップ８１３のＮＯ）、データリフレッシュ処理を終了するのは、それを必要とするトラックグループがなくなった場合（ステップ８０４のＮＯ）のみである。
【０１１１】
一方、トラックグループ内の先頭のセグメント０を除くセグメント１乃至Ｎの１つのリフレッシュが完了した状態では、リフレッシュ処理モードは解除されていない。つまりＨＤＤ１００はリフレッシュ処理モードにある（ステップ８０２のＹＥＳ）。この場合、ＣＰＵ１１５はステップ８０６に分岐する。
【０１１２】
なお、本発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。
【符号の説明】
【０１１３】
１００…磁気ディスクドライブ（ＨＤＤ）、１０１…ディスク、１０２…ヘッド、１１１…バッファＲＡＭ、１１３…ＲＡＭ、１１４…フラッシュＲＯＭ、１１５…ＣＰＵ（コントローラ）、２０１…トラック、３０１…トラックグループ、３０２…システム領域、３０３…専用退避領域、４００…ライトカウントテーブル、３２０，３２２-1〜３２２-N…データリフレッシュ動作、３２１…退避動作、３２３…書き戻し動作。
【図１】
2011028810.tif 000003
【図２】
2011028810.tif 000004
【図３】
2011028810.tif 000005
【図４】
2011028810.tif 000006
【図５】
2011028810.tif 000007
【図６】
2011028810.tif 000008
【図７】
2011028810.tif 000009
【図８】
2011028810.tif 000010
【図９】
2011028810.tif 000011
【手続補正書】
【提出日】平成22年8月9日(2010.8.9)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数のデータトラックで構成される領域であって、第１のセグメント及び複数の第２のセグメントを含む領域を備えた、磁気ディスクドライブ内のディスク上のデータをリフレッシュするためのデータリフレッシュ方法であって、
次にリフレッシュされるべきセグメントが、前記複数の第２のセグメントの１つであるかを検出し、
次にリフレッシュされるべきセグメントが前記複数の第２のセグメントの前記１つである場合、前記複数の第２のセグメントの前記１つにある第２のデータを前記第１のセグメントに退避する
データリフレッシュ方法
【請求項２】
前記複数の第２のセグメントは前記第１のセグメントに後続する請求項１記載のデータリフレッシュ方法。
【請求項３】
前記複数の第２のセグメントをリフレッシュする前に、前記第１のセグメントにある第１のデータを前記ディスク上の所定の領域に退避する請求項１又は２に記載のデータリフレッシュ方法。
【請求項４】
前記所定の領域は前記第１のセグメント及び前記複数の第２のセグメント以外である請求項３記載のデータリフレッシュ方法。
【請求項５】
前記複数の第２のセグメントのリフレッシュが完了したかを検出し、
前記複数の第２のセグメントのリフレッシュが完了したことを検出した後、前記第１のセグメントにある前記第１のデータをリフレッシュするために、前記所定の領域にある前記第１のデータを前記第１のセグメントに書き戻す
請求項４記載のデータリフレッシュ方法。
【請求項６】
前記第２のデータを退避することは、前記複数の第２のセグメントの前記１つから前記第２のデータを読み出すことと、前記読み出された第２のデータの前後に、それぞれ、当該読み出された第２のデータが有効であることを示すヘッダ及びフッタを付加することとを含み、
前記第１のセグメントのサイズは、前記複数の第２のセグメントの各々よりも前記ヘッダ及びフッタに対応するサイズだけ大きい
請求項５記載のデータリフレッシュ方法。
【請求項７】
前記ヘッダ及びフッタが付加された第２のデータを前記第１のセグメントに退避した後、前記複数の第２のセグメントの前記１つにある前記第２のデータをリフレッシュするために、前記読み出された第２のデータを前記複数の第２のセグメントの前記１つに書き戻し、
前記読み出された第２のデータを前記複数の第２のセグメントの前記１つに書き戻した後、前記第１のセグメントにある前記第２のデータに付加されている前記ヘッダを無効化する
請求項６記載のデータリフレッシュ方法。
【請求項８】
前記第１のデータを退避することは、前記第１のセグメントから前記第１のデータを読み出すことと、前記読み出された第１のデータの前後に、それぞれ、当該読み出された第１のデータが有効であることを示すヘッダ及びフッタを付加することとを含み、
前記所定の領域のサイズは、前記第１のセグメントよりも前記ヘッダ及び前記フッタに対応するサイズだけ大きい
請求項７記載のデータリフレッシュ方法。
【請求項９】
前記所定の領域にある前記第１のデータを前記第１のセグメントに書き戻した後、前記所定の領域にある前記第１のデータに付加されている前記ヘッダを無効化する請求項８記載のデータリフレッシュ方法。
【請求項１０】
前記所定の領域にある前記第１のデータに付加されている前記ヘッダ及びフッタと、前記第１のセグメントにある前記第２のデータに付加されている前記ヘッダ及びフッタとに基づき、リフレッシュ動作中に前記磁気ディスクドライブの電源が遮断したかを検出する請求項９記載のデータリフレッシュ方法。
【請求項１１】
前記所定の領域にある前記第１のデータ及び前記第１のセグメントにある前記第２のデータの各々に、有効なヘッダ及びフッタが付加されている場合、前記第１のセグメントにある前記第２のデータを、前記複数の第２のセグメントのうちの対応する１つに書き戻し、
前記第１のセグメントにある前記第２のデータを前記複数の第２のセグメントのうちの前記対応する１つに書き戻した後、前記第１のセグメントにある前記第２のデータに付加されている前記ヘッダを無効化する
請求項１０記載のデータリフレッシュ方法。
【請求項１２】
前記第１のセグメントにある前記第２のデータに付加される前記有効なヘッダ及びフッタは、当該ヘッダ及びフッタが有効であることを示す文字列と、当該第２のデータが格納されている前記複数の第２のセグメントの１つを指定する属性情報とを含み、
前記複数の第２のセグメントのうちの前記対応する１つは、前記第１のセグメントに退避されている前記第２のデータに付加された前記有効なヘッダ及びフッタ内の前記属性情報に基づいて特定される
請求項１１記載のデータリフレッシュ方法。
【請求項１３】
少なくとも、前記所定の領域にある前記第１のデータに有効なヘッダ及びフッタが付加されている場合、前記所定の領域にある前記第１のデータを前記第１のセグメントに書き戻し、
前記所定の領域にある前記第１のデータを前記第１のセグメントに書き戻した後、前記所定の領域にある前記第１のデータに付加されている前記ヘッダを無効化する
請求項１２記載のデータリフレッシュ方法。
【請求項１４】
前記ディスク上の複数のデータトラックから構成されるデータトラックの集合は、前記第１のセグメント及び前記複数の第２のセグメントから構成されるトラックグループを含む複数のトラックグループを備えており、
前記複数のトラックグループの各々に対応する前記ディスク上の領域は第１のセグメント及び複数の第２のセグメントを含み、
前記複数のトラックグループの各々について、前記第１のセグメント及び前記複数の第２のセグメントがリフレッシュされる
請求項５記載のデータリフレッシュ方法。
【請求項１５】
複数のデータトラックで構成される領域であって、第１のセグメント及び複数の第２のセグメントを含む領域を備えたディスクと、
前記第１のセグメントにある第１のデータ及び前記複数の第２のセグメントの各々にある第２のデータのリフレッシュを制御するコントローラであって、前記第２のデータをリフレッシュする間、前記第２のデータを退避するための第２の領域として前記第１のセグメントを利用するコントローラと
を具備する磁気ディスクドライブ。
【請求項１６】
前記複数の第２のセグメントは前記第１のセグメントに後続する請求項１５記載の磁気ディスクドライブ。
【請求項１７】
前記ディスクは、所定の領域を更に備えており、
前記コントローラは、前記複数の第２のセグメントの各々にある前記第２のデータをリフレッシュする前に、前記第１のデータを退避するための第１の領域として前記所定の領域を利用する
請求項１５又は１６に記載の磁気ディスクドライブ。
【請求項１８】
前記所定の領域は前記第１のセグメント及び前記複数の第２のセグメント以外である請求項１７記載の磁気ディスクドライブ。
【請求項１９】
磁気ディスクドライブと、
前記磁気ディスクドライブを記憶装置として利用するホストとを具備し、
前記磁気ディスクドライブは、
複数のデータトラックで構成される領域であって、第１のセグメント及び複数の第２のセグメントを含む領域を備えたディスクと、
前記第１のセグメントにある第１のデータ及び前記複数の第２のセグメントの各々にある第２のデータのリフレッシュを制御するコントローラであって、前記第２のデータをリフレッシュする間、前記第２のデータを退避するための第２の領域として前記第１のセグメントを利用するコントローラと
を具備する電子機器。
【手続補正書】
【提出日】平成22年11月5日(2010.11.5)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ディスク上に複数のトラックグループを備え、前記複数のトラックグループの各々が複数のデータトラックからなり、且つ第１のセグメント及び複数の第２のセグメントから構成される磁気ディスクドライブにおいて、前記ディスク上のデータをリフレッシュするためのデータリフレッシュ方法であって、
前記複数のトラックグループのうちの１つのトラックグループの前記第１のセグメント及び前記複数の第２のセグメントをリフレッシュするに際し、前記第１のセグメントにある第１のデータを前記ディスク上の所定の領域に退避し、
前記第１のデータの退避の後、前記複数の第２のセグメントの１つにある第２のデータを前記第１のセグメントに退避してから、前記第２のデータを前記複数の第２のセグメントの前記１つに書き戻すことによって、前記複数の第２のセグメントの前記１つをリフレッシュし、
前記複数の第２のセグメントの他の全てのセグメントを、前記複数の第２のセグメントの前記１つをリフレッシュする手順と同一手順で順次リフレッシュし、
前記複数の第２のセグメントを全てリフレッシュした後に、前記所定の領域にある前記第１のデータを前記第１のセグメントに書き戻す
データリフレッシュ方法。
【請求項２】
前記複数の第２のセグメントは前記１つのトラックグループ内で前記第１のセグメントに後続する請求項１記載のデータリフレッシュ方法。
【請求項３】
前記所定の領域は前記第１のセグメント及び前記複数の第２のセグメント以外である請求項１又は２に記載のデータリフレッシュ方法。
【請求項４】
前記複数の第２のセグメントの前記１つをリフレッシュすることは、前記複数の第２のセグメントの前記１つから前記第２のデータを読み出すことと、前記読み出された第２のデータの前後に、それぞれ、当該読み出された第２のデータが有効であることを示すヘッダ及びフッタを付加することとを含み、
前記第１のセグメントのサイズは、前記複数の第２のセグメントの各々よりも前記ヘッダ及びフッタに対応するサイズだけ大きい
請求項３記載のデータリフレッシュ方法。
【請求項５】
前記読み出された第２のデータを前記複数の第２のセグメントの前記１つに書き戻した後、前記第１のセグメントにある前記第２のデータに付加されている前記ヘッダを無効化する
請求項４記載のデータリフレッシュ方法。
【請求項６】
前記第１のデータを退避することは、前記第１のセグメントから前記第１のデータを読み出すことと、前記読み出された第１のデータの前後に、それぞれ、当該読み出された第１のデータが有効であることを示すヘッダ及びフッタを付加することとを含み、
前記所定の領域のサイズは、前記第１のセグメントよりも前記ヘッダ及び前記フッタに対応するサイズだけ大きい
請求項５記載のデータリフレッシュ方法。
【請求項７】
前記所定の領域にある前記第１のデータを前記第１のセグメントに書き戻した後、前記所定の領域にある前記第１のデータに付加されている前記ヘッダを無効化する請求項６記載のデータリフレッシュ方法。
【請求項８】
前記所定の領域にある前記第１のデータに付加されている前記ヘッダ及びフッタと、前記第１のセグメントにある前記第２のデータに付加されている前記ヘッダ及びフッタとに基づき、リフレッシュ動作中に前記磁気ディスクドライブの電源が遮断したかを検出する請求項７記載のデータリフレッシュ方法。
【請求項９】
前記所定の領域にある前記第１のデータ及び前記第１のセグメントにある前記第２のデータの各々に、有効なヘッダ及びフッタが付加されている場合、前記第１のセグメントにある前記第２のデータを、前記複数の第２のセグメントの前記１つに書き戻し、
前記第１のセグメントにある前記第２のデータを前記複数の第２のセグメントの前記１つに書き戻した後、前記第１のセグメントにある前記第２のデータに付加されている前記ヘッダを無効化する
請求項８記載のデータリフレッシュ方法。
【請求項１０】
前記第１のセグメントにある前記第２のデータに付加される前記有効なヘッダ及びフッタは、当該ヘッダ及びフッタが有効であることを示す文字列と、当該第２のデータが格納されている前記複数の第２のセグメントの１つを指定する属性情報とを含み、
前記複数の第２のセグメントの前記１つは、前記第１のセグメントにある前記第２のデータに付加された前記有効なヘッダ及びフッタ内の前記属性情報に基づいて特定される
請求項９記載のデータリフレッシュ方法。
【請求項１１】
少なくとも、前記所定の領域にある前記第１のデータに有効なヘッダ及びフッタが付加されている場合、前記所定の領域にある前記第１のデータを前記第１のセグメントに書き戻し、
前記所定の領域にある前記第１のデータを前記第１のセグメントに書き戻した後、前記所定の領域にある前記第１のデータに付加されている前記ヘッダを無効化する
請求項１０記載のデータリフレッシュ方法。
【請求項１２】
複数のトラックグループを備え、前記複数のトラックグループの各々が複数のデータトラックからなり、且つ第１のセグメント及び複数の第２のセグメントから構成されるディスクと、
前記ディスク上のデータのリフレッシュを制御するコントローラであって、前記複数のトラックグループのうちの１つのトラックグループの前記第１のセグメント及び前記複数の第２のセグメントをリフレッシュするに際し、前記第１のセグメントにある第１のデータを前記ディスク上の所定の領域に退避し、前記第１のデータの退避の後、前記複数の第２のセグメントの１つにある第２のデータを前記第１のセグメントに退避してから、前記第２のデータを前記複数の第２のセグメントの前記１つに書き戻すことによって、前記複数の第２のセグメントの前記１つをリフレッシュし、前記複数の第２のセグメントの他の全てのセグメントを、前記複数の第２のセグメントの前記１つをリフレッシュする手順と同一手順で順次リフレッシュし、前記複数の第２のセグメントを全てリフレッシュした後に、前記所定の領域にある前記第１のデータを前記第１のセグメントに書き戻すコントローラと
を具備する磁気ディスクドライブ。
【請求項１３】
前記複数の第２のセグメントは前記１つのトラックグループ内で前記第１のセグメントに後続する請求項１２記載の磁気ディスクドライブ。
【請求項１４】
前記所定の領域は前記第１のセグメント及び前記複数の第２のセグメント以外である請求項１２又は１３に記載の磁気ディスクドライブ。
【請求項１５】
磁気ディスクドライブと、
前記磁気ディスクドライブを記憶装置として利用するホストとを具備し、
前記磁気ディスクドライブは、
複数のトラックグループを備え、前記複数のトラックグループの各々が複数のデータトラックからなり、且つ第１のセグメント及び複数の第２のセグメントから構成されるディスクと、
前記ディスク上のデータのリフレッシュを制御するコントローラであって、前記複数のトラックグループのうちの１つのトラックグループの前記第１のセグメント及び前記複数の第２のセグメントをリフレッシュするに際し、前記第１のセグメントにある第１のデータを前記ディスク上の所定の領域に退避し、前記第１のデータの退避の後、前記複数の第２のセグメントの１つにある第２のデータを前記第１のセグメントに退避してから、前記第２のデータを前記複数の第２のセグメントの前記１つに書き戻すことによって、前記複数の第２のセグメントの前記１つをリフレッシュし、前記複数の第２のセグメントの他の全てのセグメントを、前記複数の第２のセグメントの前記１つをリフレッシュする手順と同一手順で順次リフレッシュし、前記複数の第２のセグメントを全てリフレッシュした後に、前記所定の領域にある前記第１のデータを前記第１のセグメントに書き戻すコントローラと
を具備する電子機器。