(57)【要約】      （修正有）【課題】リードエラーのリカバリ時間を短縮する。【解決手段】ストレージ装置は、記録媒体と第１のメモリとコントローラ回路とを含む。第１のメモリは、記録媒体から読み出された第１のデータの少なくとも一部を記憶する。コントローラ回路は、第１のデータからリード対象データが検出できなかった場合に、第１のメモリ内の第１のデータの少なくとも一部に含まれている第２のデータに対してパリティチェックを実行し、チェック結果が第１の条件を満たす場合に、第２のデータを第２のメモリに記憶し、条件を満たさない場合に、第２のデータからシフトした第３のデータに対してパリティチェックを実行する。第１のメモリ内の第１のデータからリード対象データが検出できなかった場合に繰り返される複数のパリティチェックのうち、実行条件を満たすパリティチェックを実行し、実行条件を満たさないパリティチェックを実行しない。【選択図】図１
2018160302.tif 000002
【特許請求の範囲】
【請求項１】
記録媒体と、
前記記録媒体から読み出された第１のデータの少なくとも一部を記憶する第１のメモリと、
前記記録媒体から読み出された前記第１のデータからリード対象データが検出できなかった場合に、前記第１のメモリに記憶されている前記第１のデータの少なくとも一部に含まれている第２のデータに対してパリティチェックを実行し、前記パリティチェックの結果が第１の条件を満たす場合に、前記第２のデータを第２のメモリに記憶し、前記パリティチェックの結果が前記第１の条件を満たさない場合に、前記第１のメモリに記憶されている前記第１のデータの少なくとも一部に含まれており前記第２のデータからシフトした第３のデータに対して前記パリティチェックを実行する、コントローラ回路と、
を具備し、
前記コントローラ回路は、
前記第１のメモリに記憶されている前記第１のデータから前記リード対象データが検出できなかった場合に繰り返される複数の前記パリティチェックのうち、実行条件を満たすパリティチェックを実行し、前記実行条件を満たさないパリティチェックを実行しない、
ストレージ装置。
【請求項２】
前記コントローラ回路は、前記パリティチェックの結果が第２の条件を満たすか判断し、前記パリティチェックの結果が前記第２の条件を満たす場合に、前記パリティチェックを中断する、請求項１に記載のストレージ装置。
【請求項３】
前記コントローラ回路は、前記第１のメモリに前記第１のデータよりも前の時点で記憶されていた過去のデータから過去のリード対象データが検出された場合に、第３のメモリに記憶された、前記過去のリード対象データの位置を示す値に基づいて、前記第１のメモリに記憶されている前記第１のデータの少なくとも一部から取り出す前記第２のデータを決定する、
請求項２に記載のストレージ装置。
【請求項４】
前記記録媒体から読み出された前記第１のデータは、周期性を持つパターンを含むプリアンブルと、前記プリアンブルのパターンの１周期に対する自然数倍の長さを持つシンクマークとを含み、
前記第３のデータは、前記第２のデータから前記プリアンブルのパターンの１周期分シフトした位置に基づいて決定される、
請求項２に記載のストレージ装置。
【請求項５】
前記第２の条件は、前記パリティチェックで得られるパリティ違反数がしきい値以上であること、と、複数のパリティ違反数が減少傾向を示すパターンではないこと、とのうちの少なくとも一方を含む、請求項２に記載のストレージ装置。
【請求項６】
前記記録媒体から読み出された第１のデータは、前記リード対象データの前に配置され前記リード対象データの検出に用いられるシンクマークを含み、
前記コントローラ回路は、前記シンクマークの検出にエラーが発生した場合に、前記第１のメモリに記憶されている前記第１のデータの少なくとも一部から取り出された前記第２のデータに対して前記パリティチェックを実行する、請求項２に記載のストレージ装置。
【請求項７】
前記コントローラ回路は、ＬＤＰＣ（Low-Density Parity Check）デコードを実行し、
前記パリティチェックの結果は、前記ＬＤＰＣデコードにおいて算出され、
前記コントローラ回路は、前記パリティチェックの結果が前記第２の条件を満たす場合に、前記ＬＤＰＣデコードで繰り返し実行される処理を中断する、
請求項２に記載のストレージ装置。
【請求項８】
前記コントローラ回路は、前記第１のメモリに前記第１のデータよりも前の時点で記憶されていた過去のデータから過去のリード対象データが検出された場合に、第３のメモリに記憶された、前記過去のリード対象データの位置を示す値に基づいて、前記第１のメモリに記憶されている前記第１のデータの少なくとも一部から取り出す前記第２のデータを決定する、
請求項１に記載のストレージ装置。
【請求項９】
前記記録媒体から読み出された前記第１のデータは、周期性を持つパターンを含むプリアンブルと、前記プリアンブルのパターンの１周期に対する自然数倍の長さを持つシンクマークとを含み、
前記第３のデータは、前記第２のデータから前記プリアンブルのパターンの１周期分シフトした位置に基づいて決定される、
請求項８に記載のストレージ装置。
【請求項１０】
前記コントローラ回路は、複数の過去のリード対象データの位置を示す値を示す複数の値が前記第３のメモリに記憶されている場合に、前記複数の値の平均値に基づいて前記第１のデータの少なくとも一部から取り出す前記第２のデータを決定する、
請求項８に記載のストレージ装置。
【請求項１１】
前記過去のデータは、前記過去のリード対象データの前の位置に配置され前記過去のリード対象データの検出に用いられるシンクマークを含み、
前記コントローラ回路は、前記第１のメモリに記憶されていた前記過去のデータから前記シンクマークが検出された場合に、リード参照位置から前記シンクマークの検出位置までのオフセット値を検出し、前記第３のメモリに記憶し、
前記第３のメモリに記憶されている前記オフセット値に基づいて前記第１のデータの少なくとも一部から取り出す前記第２のデータを決定する、
請求項８に記載のストレージ装置。
【請求項１２】
前記コントローラ回路は、前記第２のデータの次に、前記第１のデータの少なくとも一部から未だ取り出されておらず前記第２のデータからシフトしている値が小さいデータを前記第３のデータとして決定する、請求項８に記載のストレージ装置。
【請求項１３】
前記記録媒体から読み出された前記第１のデータは、周期性を持つパターンを含むプリアンブルと、前記プリアンブルのパターンの１周期に対する自然数倍の長さを持つシンクマークとを含み、
前記第３のデータは、前記第２のデータから前記プリアンブルのパターンの１周期分シフトした位置に基づいて決定される、
請求項１に記載のストレージ装置。
【請求項１４】
入力された第１のデータの少なくとも一部を第１のメモリに記憶するインターフェース回路と、
前記入力された前記第１のデータから対象データが検出できなかった場合に、前記第１のメモリに記憶した前記第１のデータの少なくとも一部に含まれている第２のデータに対してパリティチェックを実行し、前記パリティチェックの結果が第１の条件を満たす場合に、前記第２のデータを第２のメモリに記憶し、前記パリティチェックの結果が前記第１の条件を満たさない場合に、前記第１のメモリに記憶した前記第１のデータの少なくとも一部に含まれており前記第２のデータからシフトした第３のデータに対して前記パリティチェックを実行する復調回路と、
を具備し、
前記復調回路は、
前記第１のメモリに記憶した前記第１のデータから前記対象データが検出できなかった場合に繰り返される複数の前記パリティチェックのうち、実行条件を満たすパリティチェックを実行し、前記実行条件を満たさないパリティチェックを実行しない、
コントローラ。
【請求項１５】
前記復調回路は、前記パリティチェックの結果が第２の条件を満たすか判断し、前記パリティチェックの結果が前記第２の条件を満たす場合に、前記パリティチェックを中断する、請求項１４に記載のコントローラ。
【請求項１６】
前記復調回路は、前記第１のメモリに前記第１のデータよりも前の時点で記憶した過去のデータから過去のリード対象データが検出された場合に、第３のメモリに記憶された、前記過去のリード対象データの位置を示す値に基づいて、前記第１のメモリに記憶した前記第１のデータの少なくとも一部から取り出す前記第２のデータを決定する、
請求項１４に記載のコントローラ。
【請求項１７】
前記入力された第１のデータは、周期性を持つパターンを含むプリアンブルと、前記プリアンブルのパターンの１周期に対する自然数倍の長さを持つシンクマークとを含み、
前記第３のデータは、前記第２のデータから前記プリアンブルのパターンの１周期分シフトした位置に基づいて決定される、
請求項１４に記載のコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本実施形態は、ストレージ装置及びコントローラに関する。
【背景技術】
【０００２】
ストレージ装置の一例として、磁気ディスク装置（ハードディスクドライブ）がある。磁気ディスク装置において発生するエラーの一例として、シンクマーク（Sync-Mark）検出エラーに基づくリードエラーがある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】米国特許出願公開第２０１０／３０６６１７号明細書
【特許文献２】米国特許第６５５７１１３号明細書
【特許文献３】米国特許出願公開第２００１／００１０６０４号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本実施形態は、リードエラーのリカバリ時間を短縮するストレージ装置及びコントローラを提供する。
【課題を解決するための手段】
【０００５】
本実施形態に係るストレージ装置は、記録媒体と第１のメモリとコントローラ回路とを含む。第１のメモリは、記録媒体から読み出された第１のデータの少なくとも一部を記憶する。コントローラ回路は、記録媒体から読み出された第１のデータからリード対象データが検出できなかった場合に、第１のメモリに記憶されている第１のデータの少なくとも一部に含まれている第２のデータに対してパリティチェックを実行し、パリティチェックの結果が第１の条件を満たす場合に、第２のデータを第２のメモリに記憶し、パリティチェックの結果が第１の条件を満たさない場合に、第１のメモリに記憶されている第１のデータの少なくとも一部に含まれており第２のデータからシフトした第３のデータに対してパリティチェックを実行する。コントローラ回路は、第１のメモリに記憶されている第１のデータからリード対象データが検出できなかった場合に繰り返される複数のパリティチェックのうち、実行条件を満たすパリティチェックを実行し、実行条件を満たさないパリティチェックを実行しない。
【図面の簡単な説明】
【０００６】
【図１】第１の実施形態に係るストレージ装置の一例を示すブロック図。
【図２】サーボ領域で分断されていないセクタの記録状態の一例を示す概念図。
【図３】サーボ領域で分断されているスプリットセクタの記録状態の一例を示す概念図。
【図４】強制サーチの一例を示す概念図。
【図５】リードチャネルによって強制サーチを実施するために記憶されるサンプル値の一例を示すタイミングチャート。
【図６】第１の実施形態に係るリードチャネルの復調部の構成の一例を示すブロック図。
【図７】第１の実施形態に係る復調部で実行される処理の一例を示すフローチャート。
【図８】ライトヘッドとリードヘッドとの間のディスクの円周方向の距離がＹａｗ角に応じて変化する状態の一例を示す概念図。
【図９】第２の実施形態に係るリードチャネルの復調部の構成の一例を示すブロック図。
【図１０】タイムスタンプメモリに記憶されるシンクマーク検出位置の第１乃至第３の例と開始オフセット値との関係の一例を示すタイミングチャート。
【図１１】タイムスタンプメモリに記憶されているタイムスタンプに基づいて開始オフセット値を更新する処理の一例を示すフローチャート。
【図１２】強制サーチの一例を示すフローチャート。
【図１３】第３の実施形態に係るリードチャネルの復調部の構成の一例を示すブロック図。
【図１４】プリアンブルののデータパターン内に含まれる周期パターンの１周期とデータの開始位置との関係の一例を示すタイミングチャート。
【発明を実施するための形態】
【０００７】
以下、図面を参照しながら各実施形態について説明する。以下の説明において、略又は実質的に同一の機能及び構成要素については、同一符号を付すとともに、その説明を簡略化又は省略し、必要に応じて説明を行う。
【０００８】
以下の各実施形態では、ストレージ装置の復調（デコード）技術について説明する。各実施形態においては、ストレージ装置の代表的な例として磁気ディスク装置について説明をする。しかしながら、各実施形態は、光ディスク装置、光磁気ディスク装置など他の種類のストレージ装置に対しても同様に適用可能である。
【０００９】
［第１の実施形態］
第１の実施形態においては、デコード対象データのデコード中のパリティ違反数の状況に基づいて繰り返しのデコード（反復式のデコード）の中断条件を満たすか否かを判断し、中断条件を満たす場合にデコードを中断する機能を持つストレージ装置について説明する。
第１の実施形態においては、データには、複数のパリティチェック可能なデータとそのパリティデータとが含まれているとする。デコード対象データに対してパリティチェックを実行し、パリティチェックの結果が誤りと判断されたｂｉｔ数を、パリティ違反数と定義する。
【００１０】
第１の実施形態において、ストレージ装置は、例えば、デコード中のパリティ違反数がしきい値以上の場合に、デコードを中断してもよく、デコード中に算出された複数のパリティ違反数のパターンが特定のパターンの場合に、デコードを中断してもよい。
【００１１】
第１の実施形態においては、データ又はサンプル値の位置を、データ又はサンプル値を読み出した又は検出したタイミングで特定する場合を例として説明する。しかしながら、データ又はサンプル値の位置は、例えばメモリに記憶した場合の位置、又は、基準の位置からメモリに記憶した位置までの差（オフセット値）などで特定してもよい。
第１の実施形態においては、繰り返しデコードにおいて上記の中断条件を満たさないことを、デコードを実行するための実行条件とする。
【００１２】
図１は、第１の実施形態に係るストレージ装置１の一例を示すブロック図である。
ストレージ装置１は、位置情報を分割し、この分割された位置情報を複数のサーボ領域（サーボフレーム）１５Ｓに記録する。
【００１３】
ストレージ装置１は、ヘッド・ディスクアセンブリ（Head-disk assembly：ＨＤＡ）４、ヘッドアンプ集積回路（ＩＣ）５、メインコントローラ６、ドライバＩＣ７、バッファメモリ１９、不揮発性メモリ２０を含む。
【００１４】
ＨＤＡ４は、記録媒体であるディスク２と、スピンドルモータ（ＳＰＭ）８と、ヘッド９を搭載するアーム１０と、ボイスコイルモータ（ＶＣＭ）１１とを含む。ディスク２は、スピンドルモータ８により回転する。アーム１０とＶＣＭ１１とはアクチュエータ１４を構成し、ヘッド９をディスク２上の目標位置まで移動（シーク）させる。すなわち、アクチュエータ１４は、ＶＣＭ１１の駆動により、アーム１０に搭載されているヘッド９をディスク２上の径方向に移動させる。ＶＣＭ１１は、ドライバＩＣ７からの電流又は電圧により駆動制御される。
【００１５】
ディスク２は、データが記録される多数のシリンダ１５を含むが、図１では多数のシリンダ１５のうちの１つを示している。ディスク２のシリンダ１５には、複数のサーボ領域１５Ｓが配置される。第１の実施形態においては、サーボ領域から取得される情報を、サーボ情報という。換言すれば、サーボ情報とは、サーボ領域へ書き込まれたデータであり、サーボ領域から読み出し可能なデータである。
【００１６】
ヘッド９はリードヘッド９Ｒ及びライトヘッド９Ｗを備える。リードヘッド９Ｒは、ディスク２上のシリンダ１５に記録されているデータを読み出す。読み出されるデータは、例えば、サーボ情報及びユーザデータである。ライトヘッド９Ｗは、ディスク２上にデータを書き込む。書き込まれるデータは、例えば、ユーザデータである。
【００１７】
ヘッドアンプＩＣ５は、リードアンプ及びライトドライバを備える。リードアンプは、リードヘッド９Ｒにより読み出されたリード信号を増幅して、リード／ライト（Ｒ／Ｗ）チャネル１６に伝搬する。ライトドライバは、Ｒ／Ｗチャネル１６から出力されるライトデータに応じたライト電流をライトヘッド９Ｗに伝送する。
【００１８】
メインコントローラ６は、Ｒ／Ｗチャネル１６と、ハードディスクコントローラ（ＨＤＣ）１７と、プロセッサ１８とを含み、例えば集積回路である。メインコントローラ６は、１チップで構成されてもよい。
【００１９】
Ｒ／Ｗチャネル１６は、リードチャネル１６Ｒとライトチャネル１６Ｗとを含む。リードチャネル１６Ｒは、リードヘッド９Ｒにより読み出されたリード信号をヘッドアンプＩＣ５で増幅し、当該増幅した信号を処理し、データ（サーボ情報を含む）を復号する。ライトチャネル１６Ｗは、ＨＤＣ１７からのライトデータの信号処理を実行する。
【００２０】
リードチャネル１６Ｒは、サンプルバッファメモリ１６１とリードバッファメモリ１６２を含むが、このサンプルバッファメモリ１６１とリードバッファメモリ１６２とのうちの一方又は双方はＲ／Ｗチャネル１６の外に備えられていてもよい。
【００２１】
さらに、リードチャネル１６Ｒは、エラー訂正部１６３、第１の判断部１６４、第２の判断部１６５、スケジューラ１６６を含む。このエラー訂正部１６３、第１の判断部１６４、第２の判断部１６５、スケジューラ１６６の詳細説明は後述するが、これらのうちの少なくとも１つは、Ｒ／Ｗチャネル１６に含まれるのではなく、例えばＨＤＣ１７又はプロセッサ１８によって実現されてもよく、独立の構成要素として実現されてもよい。
【００２２】
ＨＤＣ１７は、ホストデバイス２１とＲ／Ｗチャネル１６との間のデータ転送を制御する。ＨＤＣ１７は、バッファメモリ１９を制御し、リードデータ及びライトデータをバッファメモリ１９に一時的に格納することでデータ転送制御を実行する。バッファメモリ１９は、例えばＤＲＡＭ（Dynamic Random Access Memory）でもよい。また、ＨＤＣ１７は、不揮発性メモリ２０の一例としてのフラッシュメモリを制御し、例えばデータを一時的に格納するキャッシュ領域として不揮発性メモリ２０を使用してもよい。
【００２３】
プロセッサ１８は、例えば、ＣＰＵ（Central Processing Unit）又はＭＰＵ（Micro Processing Unit）であり、ドライバＩＣ７を介してＶＣＭ１１を制御し、ヘッド９の位置決め制御（サーボ制御）を実行する。さらに、プロセッサ１８は、Ｒ／Ｗチャネル１６を介してデータの記録及び再生を制御する。プロセッサ１８は、ファームウェアにしたがって、各種の機能を実現してもよい。
【００２４】
ディスク２に含まれている各シリンダ１５には、ｑ箇所（ｑは２以上の整数）のサーボ領域１５Ｓが、周方向に、一定の間隔で、周期的に配置されている。サーボ領域１５Ｓの円周方向の間には、ユーザデータを記録するデータ領域１５Ｄが配置されている。サーボ情報は、ｑ箇所のサーボ領域SVF1〜SVFqに記録される。サーボ情報は、位置情報が複数のブロック情報に分割されて、複数のブロックがサーボ領域SVF1〜SVFqに記録されている。サーボ情報は、位置情報が分割されずにサーボ領域SVF1〜SVFqに記録されてもよい。位置情報は、例えば、ヘッド９の現在位置としてシリンダ位置、トラック位置、セクタのうちの少なくとも１つを検出するための情報を含む。第１の実施形態において、セクタとは、ディスク２に対する最小の記録単位とする。シリンダ１５内に複数のサーボ領域SVF1〜SVFqを分割して配置することにより、各サーボ領域SVF1〜SVFqのサイズを削減することができ、シリンダ１５毎のユーザデータを記録するデータ領域１５Ｄのサイズを増加することができ、ディスク２の高記録密度化が可能になる。
【００２５】
以下で、リードチャネル１６Ｒによって実行される第１の実施形態のシンクマーク検出エラーのリカバリについて説明する。
【００２６】
図２は、サーボ領域１５Ｓで分断されていないセクタ２２の記録状態の一例を示す概念図である。この図２では、セクタ２２に、セクタデータ２２Ｄが記録される。セクタ２２は、サーボ領域１５Ｓで分断されていない。セクタ２２に記録されるセクタデータ２２は、プリアンブル２３、シンクマーク２４、データ２５、ポストアンブル２６を含む。さらに、データ２５は、ユーザデータとエラー訂正符号とを含む。エラー訂正符号は、データ２５の上位側又は下位側に配置されてもよく、データ２５の複数の位置に分散した状態で配置されてもよい。
【００２７】
プリアンブル２３は、リードされたデータの再生時に同期を確保するための信号である。
シンクマーク２４は、再生時にデータ（リード対象データ）２５の先頭を検出するためのコードである。
ポストアンブル２６は、データ２５の末尾を示す信号である。
【００２８】
リードチャネル１６Ｒは、ディスク２から読み出された連続信号を離散化してサンプル値を生成（サンプリング）し、プリアンブル２３を用いて同期を確保し、シンクマーク２４を用いてデータ２５の先頭を検出し、ポストアンブル２６を用いてデータ２５の末尾を検出する。これにより、リードチャネル１６Ｒは、データ２５を検出する。
【００２９】
図３は、サーボ領域１５Ｓで分断されているスプリットセクタ２７の記録状態の一例を示す概念図である。
【００３０】
スプリットセクタ２７は、サーボ領域１５Ｓで分割されている。スプリットセクタ２７をサーボ領域１５Ｓで分割されて得られるそれぞれ領域は、フラグメント２７Ａ，２７Ｂとする。フラグメント２７Ａには、プリアンブル２８Ａ、シンクマーク２９Ａ、データ３０Ａ、ポストアンブル３１Ａが記録される。フラグメント２７Ｂには、プリアンブル２８Ｂ、シンクマーク２９Ｂ、データ３０Ｂ、ポストアンブル３１Ｂが記録される。このように、スプリットセクタ２７では、データがサーボ情報をまたぐようなパターンで配置される。
【００３１】
シンクマーク２４，２９Ａ，２９Ｂが検出されない場合のリカバリの手法としては、例えば、強制サーチと呼ばれる手法を利用することができる。
【００３２】
図４は、強制サーチの一例を示す概念図である。この図４では、図２に示したデータ２５をデコードするための強制サーチを例として示すが、図３に示したデータ３０Ａ又はデータ３０Ｂなど他のデータをデコードするための強制サーチも同様である。
【００３３】
この強制サーチにおいて、ストレージ装置１のリードチャネル１６Ｒは、シンクマーク検出の有無に関係なく、リード対象セクタから取得されたサンプル値（サンプル系列）Ｄをサンプルバッファメモリ１６１に記憶する。サンプルバッファメモリ１６１内のサンプル値Ｄは、少なくともデータ２５と、当該データ２５ではないがデータ２５の前及び後に存在するデータ２５Ｆ，２５Ｂとを含む。換言すれば、サンプル値Ｄは、データ２５と、当該データ２５から前後に拡張した余分な値とを含む。余分な値の例としては、例えばシンクマーク２４の末尾部分、ポストプリアンブル２６の先頭部分などである。
【００３４】
リードチャネル１６Ｒは、サンプルバッファメモリ１６１から、サンプル値Ｄの中からデコード開始位置をシフトしながらデコード範囲Ｅ内でデコード対象データを選択し、選択したデコード対象データのデコードを試行する。ここで、デコード範囲Ｅは、リード対象データ２５のデータ長と同等である。この図４では、５つのデコード開始位置Ｐ１〜Ｐ５を例示しており、各デコード開始位置Ｐ１〜Ｐ５に対応するデコード対象データＤ１〜Ｄ５を例示している。
【００３５】
そして、リードチャネル１６Ｒは、選択したデコード対象データに対応する開始位置が、データ２５の正しい開始位置と一致するまで、上記の処理を繰り返す。この図４では、デコード開始位置Ｐ３に対応するデコード対象データＤ３のデコードが試行されると、強制サーチは終了する。
【００３６】
例えば、サンプル値Ｄのうち、デコード開始位置Ｐ１，Ｐ２，Ｐ４，Ｐ５から開始しデータ２５のデータ長と同じデータ長のデコード対象データをデコードした場合、パリティ違反数はしきい値以上となる。これに対して、サンプル値Ｄのうち、デコード開始位置Ｐ３から開始するデータ２５のデータ長のデコード対象データをデコードした場合には、パリティ違反数はしきい値より小さくなる。このように、デコード対象データのデータ長よりも前後に拡張した余分な値を含むサンプル値Ｄを取得し、取得したサンプル値Ｄ中のデコード対象データのデコード開始位置をシフトしてデコードすることを繰り返すことにより、シンクマークのリードエラーが発生した場合にもデータ２５を検出することができる。
【００３７】
さらに、シンクマークのリードエラーが発生した場合のリカバリ手法の一例として、データ２５のデータ長のデータをサンプル値Ｄとしてサンプルバッファメモリ１６１に記憶した後、デコード開始位置をシフトする際に、消失フラグを用いる場合がある。具体的には、サンプルバッファメモリ１６１に記憶されたサンプル値Ｄ中のデコード対象データのデコード開始位置をシフトした場合に足りない部分（サンプルバッファメモリ１６１に記憶されていない部分）が発生し、この部分に消失フラグを割り当てたデコード対象データに対して、繰り返しデコードを実行する手法もある。
【００３８】
図５は、リードチャネル１６Ｒによって強制サーチを実施するために記憶されるサンプル値Ｄの一例を示すタイミングチャートである。この図５では、アクティブな状態をHIGH、非アクティブな状態をLOWで示しているが、このアクティブ及び非アクティブとHIGH及びLOWとの関係は逆でもよい。以下においても同様とする。
【００３９】
リードチャネル１６Ｒは、データ２５がサンプルバッファメモリ１６１に確実に記憶されるように、データ２５の長さよりも拡張したサンプル値Ｄをサンプルバッファメモリ１６１に記憶する。
【００４０】
リードチャネル１６Ｒは、リードゲートＲＧが非アクティブからアクティブとなった場合、ディスク２に対するリードを開始する。
【００４１】
リードチャネル１６Ｒは、プリアンブルに対応する位相合わせウィンドウがアクティブの間にプリアンブル２３を検出し、ＰＬＬ回路（同期位相回路）により検出したプリアンブル２３から取得される信号と内部の基準クロックとの位相合わせを行い、位相及び周波数がずれている場合にさらに詳細に位相合わせを行う。この位相合わせについてより具体的に説明する。位相合わせは、基本的に第１の位相合わせウィンドウと第２の位相合わせウィンドウとがアクティブの期間に実行される。第１の位相合わせウィンドウがアクティブの場合、ＰＬＬ回路は、数サンプルを使用して位相のずれを検出し、ずれを補正する。しかしながら、位相ずれを検出するサンプル数には限度があるため、補正残差が発生する。そこで、第２の位相合わせウィンドウがアクティブの場合には、ＰＬＬ回路は、フィードバックループを用いて補正残差をさらに補正する。
【００４２】
リードチャネル１６Ｒは、シンクマーク２４に対応するシンクマークウィンドウがアクティブの間、シンクマークの検出を行う。
【００４３】
リードチャネル１６Ｒは、シンクマークウィンドウがアクティブから非アクティブへ変化した時点で、シンクマークが検出されなかった場合にシンクマーク検出エラーが発生したことをを示す信号（図５の例ではＳＭＮＦ信号と表記する）をアクティブとする。
【００４４】
リードチャネル１６Ｒは、例えば、シンクマークウィンドウが非アクティブからアクティブとなってから所定の時間Ｔ１が経過した時点から、サンプル値Ｄをサンプルバッファメモリ１５１へ記憶することを開始し、シンクマークウィンドウがアクティブから非アクティブとなった時点（シンクマークのサーチタイムアウト）からデータ２５のデータ長に相当する時間Ｔ３が経過するまで、サンプル値Ｄをサンプルバッファメモリ１６１へ記憶する。ここで、時間Ｔ１は、例えば、シンクマークのリード時間と同じ又はそれ以下の時間としてもよい。この場合、リードチャネル１６Ｒは、例えば図５の時間Ｔ２及び時間Ｔ３においてサンプル値Ｄをサンプルバッファメモリ１６１へ記憶することになる。
【００４５】
なお、第１の実施形態において、サンプル値Ｄをサンプルバッファメモリ１６１に記憶する範囲は、データ２５がサンプルバッファメモリ１６１に確実に記憶されれば、自由に変更可能である。
【００４６】
例えば、プリアンブルが検出された場合に、このプリアンブルの検出の直後からサンプル値Ｄを、サンプルバッファメモリ１６１へ記憶してもよい。
【００４７】
リードチャネル１６Ｒは、例えば図５の時間Ｔ１〜Ｔ３においてサンプル値Ｄをサンプルバッファメモリ１６１へ記憶してもよい。
【００４８】
また、リードチャネル１６Ｒは、例えば、シンクマークウィンドウがアクティブから非アクティブへ変化する時点からデータ２５のデータ長分の値がサンプルバッファメモリ１６１へ記憶されるまでの時間Ｔ３において、サンプル値Ｄをサンプルバッファメモリ１６１に記憶し、必要に応じて消失フラグを割り当てながらデコードを実行してもよい。
【００４９】
リードチャネル１６Ｒは、シンクマークが正しく検出された場合には、シンクマーク検出信号を非アクティブからアクティブに変化させる。
【００５０】
リードチャネル１６Ｒは、シンクマーク検出信号が発生した場合に、シンクマーク２４に続くデータ２５をサンプルバッファメモリ１６１に記憶する。
【００５１】
上記の強制サーチでは、サンプルバッファメモリ１６１に記憶されているサンプル値Ｄの中からデコード開始位置をシフトさせながらデコードを繰り返す。したがって、デコードの試行回数分のデコード時間が必要となり、処理時間が長くなる場合がある。
【００５２】
特に、図３に示したスプリットセクタ２７のように、サンプル値Ｄに複数のシンクマークが含まれる場合、全てのフラグメント２７Ａ，２７Ｂに対して試行を実施する必要が生じるため、デコードの試行回数は１箇所の試行回数のフラグメント数倍となり、処理時間が増大する。
【００５３】
そこで、第１の実施形態においては、強制サーチにおける試行１回に必要な時間を短縮する。
【００５４】
図６は、第１の実施形態に係るリードチャネル１６Ｒの復調部３２の構成の一例を示すブロック図である。
【００５５】
復調部３２は、上述のサンプルバッファメモリ１６１、リードバッファメモリ１６２、エラー訂正部１６３、第１の判断部１６４、第２の判断部１６５、スケジューラ１６６を含む。エラー訂正部１６３は、さらに、チャネル検出部１６３ａ、ＬＤＰＣ（Low-Density Parity Check）デコーダ１６３ｂ、ＬＬＲ（Log-Likelihood Ratio）バッファメモリ１６３ｃを含む。
【００５６】
スケジューラ１６６は、サンプルバッファメモリ１６１、チャネル検出部１６３ａ、ＬＬＲバッファメモリ１６３ｃ、ＬＤＰＣデコーダ１６３ｂ、リードバッファメモリ１６２に対する制御を実行し、シンクマーク検出エラーのリカバリを制御する。
【００５７】
第１の実施形態において、スケジューラ１６６は、サンプルバッファメモリ１６１に記憶されているサンプル値Ｄのうち、デコード範囲Ｅ内でデコード対象データをチャネル検出部１６３ａに通知する。
【００５８】
エラー訂正部１６３では、チャネル検出部１６３ａとＬＤＰＣデコーダ１６３ｂとを用いて、例えばＬＤＰＣ符号などを用いたエラー訂正が実行される。
【００５９】
第１の実施形態において、チャネル検出部１６３ａは、デジタル信号としてスケジューラ１６６から指定されたデコード範囲Ｅのサンプル値をデコード対象データとしてサンプルバッファメモリ１６１から読み出す。
【００６０】
ＬＤＰＣデコーダ１６３ｂは、ＥＣＣ（Error Correcting Code）デコーダの一例である。ＬＤＰＣデコーダ１６３ｂは、ＬＤＰＣ符号を用いたエラー訂正（ＬＤＰＣデコード）を実行する。第１の実施形態において、ＬＤＰＣデコーダ１６３ｂは、ＬＤＰＣデコードにおけるデコード対象データのパリティ違反数を第２の判断部１６５に通知する。
ＬＬＲバッファメモリ１６３ｃは、チャネル検出部１６３ａによって実行されたチャネル検出処理の結果得られたＬＬＲデータを記憶する。ＬＬＲデータは、チャネル検出部１６３ａとＬＤＰＣデコーダ１６３ｂとの間でやり取りされ、ＬＤＰＣデコードに用いられる情報である。
【００６１】
第１の判断部１６４は、エラー訂正部１６３によってエラー訂正が終了した場合に、ＬＬＲバッファメモリ１６３ｃに記憶されているＬＬＲデータを読み出す。第１の判断部１６４は、読み出したＬＬＲデータに基づいて、「０」又は「１」から構成されるバイナリデータを検出し、検出されたバイナリデータをリードバッファメモリ１６２に記憶する。
【００６２】
第２の判断部１６５は、中断条件を受け付ける、中断条件は、強制サーチを中断し、他のリカバリを実行するために用いる情報であり、例えばプロセッサ１８から提供される。第１の実施形態において、第２の判断部１６５は、ＬＤＰＣデコーダ１６３ｂからパリティ違反数を受け付け、パリティ違反数が中断条件によって指定されているしきい値以上の場合に、デコードを中断することを示す情報（例えばフラグ）をスケジューラ１６６に通知する。
【００６３】
スケジューラ１６６は、強制サーチを中断するこを示す情報を第２の判断部１６５から受信した場合に、エラー訂正部１６３によって実行されるデコードを中止し、次のデコード対象データを決定し、次のデコード対象データをチャネル検出部１６３ａに通知する。
【００６４】
サンプルバッファメモリ１６１に記憶されているサンプル値Ｄにおいてリード対象のデータ２５の開始位置が、期待される本来の位置と異なる場合、パリティとデータ間の関連が崩れ、通常のＥＣＣエラー検出及び訂正時と比較して非常に大きなパリティ違反数となり、同じ状態のままデコードを進めてもパリティ違反数は減少しない。
このような特性を利用し、第１の実施形態において、第２の判断部１６５は、パリティ違反数が明らかに異常値であると判断される場合に、デコードを中断し、次のオフセット値にしたがってサンプルバッファメモリ１６１から新たなデコード対象データ（例えば図４のＤ１〜Ｄ５のいずれか）を読み出し、デコードを試行する。ここで、オフセット値とは、サンプルバッファメモリ１６１に記憶されているサンプル値Ｄのうち、デコードを試行するデコード対象データを特定する位置情報である。
【００６５】
また、第２の判断部１６５は、デコードが複数回繰り返されることによって算出される複数個のパリティ違反数が所定の条件（所定のパターン）を満たす場合に、デコードを中断すると判断し、デコードの中断をスケジューラ１６６に通知してもよい。
具体例としては、第２の判断部１６５は、連続して算出された複数のパリティ違反数が減少傾向を示すパターンを持つ場合にはデコードを繰り返すと判断し、連続して算出された複数のパリティ違反数が増加傾向を示すパターンを持つ場合はデコードを中止すると判断してもよい。
【００６６】
第２の判断部１６５は、連続して算出された所定の個数のパリティ違反数が所定のレベル以上で維持されている場合にデコードを中止すると判断してもよい。
【００６７】
第２の判断部１６５は、デコードが複数回繰り返されることによって算出された複数個のパリティ違反数を第１のグループとし、その後にデコードが少なくとも１回実行されることによって算出された少なくとも１個のパリティ違反数を第２のグループとし、第１のグループと第２のグループとを比較した結果に基づいてデコードを中断するか否か判断してもよい。この比較の具体例としては、第２の判断部１６５は、例えば、第１のグループの合計値又は平均値を第２のグループの合計値又は平均値で割った変化率を求め、当該変化率がしきい値より小さい場合にデコードを繰り返すと判断し、当該変化率がしきい値以上の場合にデコードを中断すると判断してもよい。また、より単純に、第２の判断部１６５は、例えば、第１のグループの合計値又は平均値から第２のグループの合計値又は平均値を引いた差を求め、当該差がしきい値以上の場合にデコードを繰り返すと判断し、当該差がしきい値より小さい場合にデコードを中断すると判断してもよい。
【００６８】
ここでは、第１のグループと第２のグループとの比較について説明しているが、第２の判断部１６５は３以上のグループの間の比較の結果に基づいてデコードを中止するか否かを判断してもよい。
このように、サンプル値Ｄに対する試行を中断する条件は、様々な条件を設定して利用することができる。
【００６９】
パリティ違反数がしきい値以上か否かに基づいてデコードを中断するか否か判断することと、複数のパリティ違反数のパターンに基づいてデコードを中断するか否か判断することとは、一方が用いられるとしてもよく、双方が用いられるとしてもよい。
【００７０】
ここで、ＬＤＰＣデコーダ１６３ｂからチャネル検出部１６３ａへ処理が戻ることをグローバルの繰り返しといい、ＬＤＰＣデコーダ１６３ｂ内で処理が繰り返されることをローカルの繰り返しというとする。
【００７１】
一般的に、試行１回の処理には、（ＬＤＰＣデコーダ１６３ｂの処理時間×ローカルの繰り返し数＋１セクタ時間)×グローバルの繰り返し数、で求まる時間を要する。第１の実施形態のようにローカルの繰り返しを中断することにより、最短の場合（ＬＤＰＣデコーダ１６３ｂの処理時間×１＋１セクタ時間)で求まる時間で、次の試行に移行できる。ここで、１セクタ時間は、１のトラック中の１のセクタが通過する時間であり、ディスク２の半径位置で異なる値となり得る。なお、上記の処理時間の比較例は一例であり、実際の処理時間は復調部３２の回路構成などに依存する。
【００７２】
図７は、第１の実施形態に係る復調部３２で実行される処理の一例を示すフローチャートである。
【００７３】
Ｓ７０１において、スケジューラ１６６は、オフセット値を決定し、デコードの実行をチャネル検出部１６３ａに指示する。
Ｓ７０２において、チャネル検出部１６３ａは、スケジューラ１６６から、オフセット値で指定された位置からデコード範囲Ｅ内のデコード対象データをサンプルバッファメモリ１６１から読み出し、チャネル検出処理を実行し、ＬＬＲバッファメモリ１６３ｃにＬＬＲデータを記憶する。
【００７４】
Ｓ７０３において、ＬＤＰＣデコーダ１６３ｂは、ＬＬＲバッファメモリ１６３ｃに記憶されているＬＬＲデータに対してＬＤＰＣデコードを実行し、ＬＬＲバッファメモリ１６３ｃのＬＬＲデータを更新する。
Ｓ７０４において、スケジューラ１６６は、デコード対象データに対するＬＤＰＣデコードが第１の数まで繰り返されたか否かを判断する。デコード対象データに対するＬＤＰＣデコードが第１の数まで繰り返されたと判断された場合（Ｓ７０４のＹｅｓ）、処理はＳ７０６に進む。このデコード対象データに対するＬＤＰＣデコードが開始されてからＬＤＰＣデコードが第１の数まで繰り返されたと判断されるまでの処理を、第１の繰り返し処理という。この第１の繰り返し処理は、上記のローカルの繰り返しに相当する。
【００７５】
デコード対象データに対するＬＤＰＣデコードが第１の数まで繰り返されていないと判断された場合（Ｓ７０４のＮｏ）、Ｓ７０５において、スケジューラ１６６は、上記Ｓ７０３におけるＬＤＰＣデコードの結果が中断条件を満たすか否か判断する。中断条件を満たす場合（Ｓ７０５のＹｅｓ）には処理はＳ７０１に戻り、中断条件を満たさない場合（Ｓ７０５のＮｏ）には処理はＳ７０３に戻る。
【００７６】
上記Ｓ７０４でＬＤＰＣデコードが第１の数まで繰り返されたと判断された場合（Ｓ７０４のＹｅｓ）には、Ｓ７０６において、スケジューラ１６６は、上記Ｓ７０２においてチャネル検出処理が実行されてからＳ７０４においてＬＤＰＣデコードが第１の数まで繰り返されたと判断されるまでの処理が第２の数まで繰り返されたか否かを判断する。このチャネル検出処理が実行されてからＬＤＰＣデコードが第１の数まで繰り返されたと判断されるまでの処理を、第２の繰り返し処理という。この第２の繰り返し処理は、上記のグローバルの繰り返しに相当する。
【００７７】
第２の繰り返し処理が完了していない場合（Ｓ７０６のＮｏ）には、処理はＳ７０２に戻る。第２の繰り返し処理が完了した場合（Ｓ７０６のＹｅｓ）には、Ｓ７０７において、スケジューラ１６６は、デコードの結果が条件を満たすか（成功か）否か判断する。
デコードが条件を満たす場合（Ｓ７０７のＹｅｓ）には、Ｓ７０８において、第１の判断部１６４は、ＬＬＲバッファメモリ１６３ｃのＬＬＲデータをバイナリデータとするための判断を行い、この判断の結果得られたバイナリデータをリードバッファメモリ１６２に記憶する。
【００７８】
デコードに失敗した場合（Ｓ７０７のＮｏ）、Ｓ７０９において、スケジューラ１６６は、強制サーチによるリカバリを継続するか否か判断する。リカバリを継続しない場合（Ｓ７０９のＮｏ）には、処理は終了する。この図７の処理の終了後、強制サーチではない他のリカバリが実行されてもよい。強制サーチによるリカバリを継続する場合（Ｓ７０９のＹｅｓ）には、処理はＳ７０１に戻る。その後、Ｓ７０１において、スケジューラ１６６が次のオフセット値を決定し、Ｓ７０２において、チャネル検出部１６３ａが次のオフセット値に基づいてチャネル検出処理を実行し、第１の繰り返し処理によってＬＤＰＣデコーダ１６３ｂがＬＬＲバッファメモリ１６３ｃのＬＬＲデータを更新する。
【００７９】
上記のような図７の処理では、第２の繰り返し処理の中に、第１の繰り返し処理が含まれている。第１の実施形態において、例えばパリティ違反数がしきい値以上などのように中断条件が満たされたと判断された場合には、現在のデコード対象データに対するデコードは中断され、処理はＳ７０１に移動し、Ｓ７０１においてスケジューラ１６６は、オフセット値を変更する。これにより、新たなデコード対象データに対して再度Ｓ７０２以降の処理が実行される。
【００８０】
以上説明した第１の実施形態においては、強制サーチにおいて、例えば、パリティ違反数がしきい値以上の場合、又は、複数のパリティ違反数が減少傾向のパターンではない場合など、中断条件を満たす場合に、強制サーチが中断される。
【００８１】
このため、強制サーチの実行時間を、強制サーチの全試行に必要な時間より短縮することができ、ストレージ装置１のリカバリ時間を短縮することができる。
【００８２】
強制サーチにおいては、サンプルバッファメモリ１６１からのデコード対象データの読み出しが繰り返され、さらに、デコード対象データに対してデコード処理が繰り返される。しかしながら、第１の実施形態においては、デコード対象データに対して繰り返されるデコードを途中で中断することができるため、デコード処理の実行回数を減らすことができる。
【００８３】
［第２の実施形態］
第２の実施形態においては、リード参照（リファレンス）位置からシンクマーク検出位置までの時間などを示す値を記憶し、記憶した値に基づいてシンクマークの検出位置を学習し、学習の結果に基づいてオフセット値を決定し、決定されたオフセット値を強制サーチに用いる手法について説明する。ここで、リード参照位置とは、リード動作に関して基準となる位置を示す。
【００８４】
第２の実施形態においては、強制サーチにおいて、リカバリできる可能性の高いデコード対象データに対してリカバリを行うことで、ストレージ装置のリカバリ時間を短縮する。第２の実施形態は、上記第１の実施形態と組み合わせて適用可能である。
【００８５】
例えば、ディスク２の径方向の位置によりライト時のタイミングにばらつきが発生する場合、又は、外乱やジッタ成分によりリード時にリードヘッド９Ｒがデータを読み出すタイミングにばらつきが発生する場合がある。ストレージ装置は、このようなライトのタイミング及びリードのタイミングのばらつきの有無に関係なく、リードされたデータに対してリカバリ可能であることが求められる。
第２の実施形態においては、シンクマークを検出することができた過去のデータに基づいて決定されたオフセット値によって取得されるデコード対象データであることを、デコードを実行する条件とする。
【００８６】
図８は、ライトヘッド９Ｗとリードヘッド９Ｒとの間のディスク２の円周方向の距離がＹａｗ角に応じて変化する状態の一例を示す概念図である。
【００８７】
Ｙａｗ角とは、ディスク２の円周方向に対するヘッド９の傾き角である。Ｙａｗ角によってライトヘッド９Ｗとリードヘッド９Ｒとの間のディスク２の円周方向の距離が変わる。具体的には、第１の位置では、ライトヘッド９Ｗとリードヘッド９Ｒとの間のディスク２の円周方向に対する距離はａとなる。第２の位置では、ライトヘッド９Ｗとリードヘッド９Ｒとの間のディスク２の円周方向に対する距離はｂとなる。距離ａと距離ｂとの間には、キャップΔGAPが発生する。この結果、ディスク２の半径方向の位置に応じてリード参照位置とシンクマークとの相対位置が異なる場合がある。
【００８８】
強制サーチの範囲を広くすることで、Ｙａｗ角によってデータの位置がずれた場合であっても、データ２５の位置を検出する可能性は高くなる。しかしながら、強制サーチの範囲が広くなると、選択するデコード対象データの量が多くなり、処理時間が増大する。
【００８９】
そこで、第２の実施形態においては、Ｙａｗ角によってデータの位置がずれる場合であっても、強制サーチを行う位置の最適化を行う。第２の実施形態においては、データ２５に近い位置から探索を行い、リカバリ成功時までに必要な処理時間を減らす。
【００９０】
図９は、第２の実施形態に係るリードチャネル１６Ｒの復調部３２ａの構成の一例を示すブロック図である。
【００９１】
第２の実施形態においては、ディスク２における位置などの条件がリード先のセクタと近く、かつ、正常にシンクマークが検出されたセクタに関する過去データを用いて強制サーチの開始（初期）オフセット値（ポジション）を決定する。
【００９２】
復調部３２ａは、Ａ／Ｄ変換部３４、ＦＩＲ（有限インパルス応答）フィルタ３５、サンプルバッファメモリ１６１、シンクマーク検出部３６、エラー訂正部（繰り返しデコーダ）１６３、タイムスタンプメモリ３８、スケジューラ１６６を含む。
【００９３】
Ａ／Ｄ変換部３４は、ヘッドアンプＩＣ５からアナログ信号を受信し、デジタル信号に変換し、ＦＩＲフィルタ３５に送信する。
【００９４】
ＦＩＲフィルタ３５は、Ａ／Ｄ変換部３４から受信したデジタル信号のフィルタリングを行い、フィルタリング後のデジタル信号をサンプル値としてサンプルバッファメモリ１６１に記憶する。
【００９５】
シンクマーク検出部３６は、サンプルバッファメモリ１６１に記憶されているサンプル値を読み出し、リード参照位置（例えばリード参照タイミング）からのシンクマーク検出位置（例えばシンクマーク検出タイミング）を検出し、検出したシンクマーク検出位置をエラー訂正部１６３に送信する。さらに、シンクマーク検出部３６は、ディスク２の位置情報（例えばセクタ位置）とシンクマーク検出位置の値（以下、タイムスタンプと称する）とを関連付けて、タイムスタンプメモリ３８に記憶する。タイムスタンプは、サンプルバッファメモリ１６１に現在のサンプル値Ｄよりも前の時点で記憶されていた過去のサンプル値から過去のリード対象データが検出された場合に、この過去のリード対象データの位置を示す値である。シンクマーク検出部３６は、タイムスタンプメモリ３８に、同じディスク２の位置情報に対して１つだけタイムスタンプを記憶してもよく、複数のタイムスタンプを記憶してもよい。
【００９６】
エラー訂正部１６３は、サンプルバッファメモリ１６１からサンプル値Ｄを読み出し、シンクマーク検出部からシンクマーク検出位置を受信し、サンプル値Ｄ内に含まれているデータ２５を取得する。そして、エラー訂正部１６３は、ＬＤＰＣデコードなどによりデータ２５のエラー訂正を行う。
【００９７】
スケジューラ１６６は、シンクマーク検出部３６によってシンクマーク検出ができなかった場合に、タイムスタンプメモリ３８に記憶されておりリード対象のディスク２の位置情報に関連付けられているタイムスタンプを用いて、強制サーチの開始オフセット値を決定し、開始オフセット値をエラー訂正部１６３に通知する。スケジューラ１６６は、例えば、タイムスタンプメモリ３８において、リード対象のディスク２の位置情報に対して複数のタイムスタンプが関連付けられている場合には、リード対象のディスク２の位置情報に関連付けられている複数のタイムスタンプの平均値又は中央値を、開始オフセット値として決定してもよい。
【００９８】
タイムスタンプメモリ３８は、上述のようにディスク２の位置情報とタイムスタンプとを関連付けて記憶している。スケジューラ１６６は、リード対象の位置（例えばセクタ位置）と最も近い位置情報に関連付けられている１以上のタイムスタンプに基づいて、リード対象の位置に対応する開始オフセット値を決定してもよい。
【００９９】
図１０は、タイムスタンプメモリ３８に記憶されるシンクマーク検出位置の第１乃至第３の例と開始オフセット値との関係の一例を示すタイミングチャートである。
【０１００】
この図１０においては、リードゲートＲＧがアクティブの場合に、リードチャネル１６Ｒが動作する。第１の位相合わせウィンドウ及び第２の位相合わせウィンドウは、上記図５の位相合わウィンドウに相当する。リードチャネル１６Ｒは、第１の位相合わせウィンドウがアクティブの期間において信号の位相合わせを行い、第２の位相合わせウィンドウがアクティブの期間において信号の位相がずれている場合にさらに詳細に位相合わせを行う。リードチャネル１６Ｒは、シンクマークウィンドウの開始時点からシンクマークウィンドウのタイムアウト時点までの期間においてシンクマークを検出し、シンクマークが検出されるとデータトラッキングを開始する。
【０１０１】
開始オフセット値は、様々な種類のリード参照位置を用いて算出可能である。例えば、開始オフセット値は、リードゲートＲＧのアクティブ期間の開始時点からの時間Ｔ４としてもよく、ＰＬＬ回路の第１の位相合わせウィンドウのアクティブ期間の完了時点からの時間Ｔ５としてもよく、ＰＬＬ回路の第２の位相合わせウィンドウのアクティブ期間の完了時点からの時間Ｔ６などとしてもよい。これらの開始オフセット値の算出は、例であり、様々に変更可能である。
【０１０２】
第２の実施形態において、リカバリ用のサンプルバッファメモリ１６１に記憶されるサンプル値Ｄの先頭位置は、例えば上記のような様々な種類のリード参照位置と対応付けてもよい。図１０の例では、第２の位相合わせウィンドウのアクティブ期間の完了時点又はシンクマークウィンドウの開始時点から、サンプル値Ｄがサンプルバッファメモリ１６１に記憶されている場合を示している。しかしながら、サンプルバッファメモリ１６１へのサンプル値Ｄの記憶を開始するタイミングは、例えば、第１の位相合わせウィンドウのアクティブ期間の完了時点又は第２の位相合わせウィンドウのアクティブ期間の開始時点など、データ２５が確実にサンプルバッファメモリ１６１に記憶されるタイミングであればよい。
【０１０３】
図１１は、タイムスタンプメモリ３８に記憶されているタイムスタンプに基づいて開始オフセット値を更新する処理の一例を示すフローチャートである。
【０１０４】
Ｓ１１０１において、リードチャネル１６Ｗは、セクタからデータをリードする。
【０１０５】
Ｓ１１０２において、シンクマーク検出部３６は、Ｓ１１０１のリードにおいて正しく検出されたシンクマーク検出位置を示すタイムスタンプとディスク２の位置情報（セクタ位置）とを関連付けてタイムスタンプメモリ３８に記憶する。
【０１０６】
Ｓ１１０３において、スケジューラ１６６は、リードを継続するか否か判断する。リードを継続する場合（Ｓ１１０３のＹｅｓ）には、処理はＳ１１０１へ戻る。リードを継続しない場合（Ｓ１１０３のＮｏ）、処理はＳ１１０４へ進む。
【０１０７】
上述のように、ライトのタイミング及びリードのタイミングにはばらつきが生じる。このため、シンクマーク検出位置は、例えば平均化などにより最適値を求めることが好ましい。なお、最適化を行う必要がない場合には、スケジューラ１６６は、タイムスタンプメモリ３８に記憶された１つのタイムスタンプを読み出すのみでもよい。
【０１０８】
Ｓ１１０４において、スケジューラ１６６は、タイムスタンプメモリ３８において位置情報に関連付けられている１以上のタイムスタンプの平均値を算出し、最適化を行う。
【０１０９】
Ｓ１１０５において、スケジューラ１６６は、算出した平均値により強制サーチにおいて用いられる開始オフセット値を更新（変更）する。
その後、処理は、強制サーチ（シンクマーク検出エラーのリカバリ）へ移行する。
【０１１０】
図１２は、強制サーチの処理の一例を示すフローチャートである。
Ｓ１２０１において、リードチャネル１６Ｗは、セクタからデータをリードする。
【０１１１】
Ｓ１２０２において、スケジューラ１６６は、サンプルバッファメモリ１６１からデコード対象データを読み出すために用いられるオフセット値に、上記図１１のＳ１１０５によって更新された開始オフセット値を設定する。
【０１１２】
Ｓ１２０３において、エラー訂正部１６３は、設定されているオフセット値にしたがって、サンプルバッファメモリ１６１からデコード対象データを読み出し、デコードを行う。
【０１１３】
Ｓ１２０４において、スケジューラ１６６は、デコードが条件を満たすか（成功か）否かを判断する。
【０１１４】
デコードが条件を満たす場合（Ｓ１２０４のＹｅｓ）、処理は終了する。デコードが条件を満たさない（失敗）場合（Ｓ１２０４のＮｏ）、Ｓ１２０５において、スケジューラ１６６は、強制サーチを継続するか否かを判断する。
【０１１５】
強制サーチを継続しない（終了する）場合（Ｓ１２０５のＮｏ）、処理は終了する。強制サーチを継続する場合（Ｓ１２０５のＹｅｓ）、Ｓ１２０６において、スケジューラ１６６は、サンプルバッファメモリ１６１からデコード対象データを読み出すために用いられるオフセット値に、次のオフセット値を設定する。スケジューラ１６６は、例えば、未設定のオフセット値のうち現在のオフセット値から所定の値だけシフトした値を次のオフセット値として決定してもよい。また、スケジューラ１６６は、例えば、開始オフセット値と次のオフセット値との差が徐々に大きくなるように、次のオフセットを決定してもよい。
【０１１６】
以上説明したように、第２の実施形態においては、正しく検出されたシンクマーク検出位置の値であるタイムスタンプから開始オフセット値が算出され、開始オフセット値とその付近（開始オフセット値からのシフト値が小さいオフセット値）を優先的に用いて強制サーチが実行される。
【０１１７】
第２の実施形態においては、先に述べたＹａｗ角によって受ける影響を抑制するためにはリカバリ対象と同じシリンダもしくは隣接のシリンダに対応するタイムスタンプに基づいて、開始オフセット値を算出することが好ましい。また、ライトのタイミングのばらつきとリードヘッド９Ｒがデータを読み出す際に発生するタイミングのばらつきとを抑制するために、第２の実施形態においては、タイムスタンプのサンプル数を増やし、開始オフセット値がばらつきの中央に近づくようにタイムスタンプの平均値が算出され、当該平均値が開始オフセット値として用いられる。このようにタイムスタンプの平均化を行うことにより、例えば、Ｙａｗ角が原因でデータの位置にずれが生じている場合であっても、強制サーチの最適な開始オフセット値を得ることができる。したがって、第２の実施形態においては、ばらつきを考慮して強制サーチを広範囲に試行する必要がなく、短時間にリード対象データ２５の先頭位置を見つることができる。
【０１１８】
上記のように、第２の実施形態では、例えば、リカバリ対象のセクタに隣接する１以上のセクタに関する学習結果（例えばタイムスタンプの収集と平均化）を用いてリカバリ対象のセクタの開始オフセット値が算出されてもよい。この場合、リカバリ対象のセクタに関するタイムスタンプのサンプル数が少ない場合であっても、リカバリ対象のセクタに隣接する１以上のセクタに関する学習結果を用いてリカバリ対象のセクタに関する適切な開始オフセット値を算出することができる。さらに、例えば、セクタごとに、強制サーチにおいてサンプルバッファメモリ１６１からデコード対象データを取り出す最適な回数（換言すれば、サンプルバッファメモリ１６１に記憶されているサンプル値Ｄに対して強制サーチを実行する範囲）が異なる場合であっても、リカバリ対象のセクタ又は例えば隣接しているなど条件が近いセクタのタイムスタンプを用いて、リカバリ対象のセクタに対するサンプルバッファメモリ１６１からデコード対象データを取り出す最適な回数を決定することができる。したがって、第２の実施形態では、リカバリ対象のセクタに関する適切な開始オフセット値とサンプルバッファメモリ１６１からデコード対象データを取り出す適切な回数とが得られるまでの時間（学習時間）を短縮することができる。
【０１１９】
開始オフセット値の算出は、タイムスタンプメモリ３８にタイムスタンプが記憶されるたびに実行されてもよく、タイムスタンプを逐次タイムスタンプメモリ３８に記憶しておき、後からタイムスタンプの平均値を計算し、開始オフセット値を算出てもよい。
【０１２０】
なお、第２の実施形態においては、シンクマーク検出位置に基づいて開始オフセット値を算出しているが、デコード対象データの正しい位置を特定可能な他の位置データに基づいて開始オフセット値を算出してもよい。
【０１２１】
［第３の実施形態］
第３の実施形態においては、強制サーチでオフセット値をシフトする場合のシフト量（以下、ステップサイズという）をプリアンブル２３のデータパターン内に含まれる周期パターンの１周期の自然数倍とすることで、強制サーチ時間を短くする手法について説明する。以下において、プリアンブル２３のデータパターン内に含まれる周期パターンを、単に、プリアンブル２３の周期パターンという。また、プリアンブル２３の周期パターンのｎ周期（ｎは１以上の整数）を、ｎパターン周期という。第３の実施形態は、上記第１の実施形態と上記第２の実施形態との一方又は双方と組み合わせて適用することができる。
第３の実施形態においては、上記ｎパターンに対応するシフト量に応じて取得されたデコード対象データであることを、デコードを実行する条件とする。
【０１２２】
図１３は、第３の実施形態に係るリードチャネル１６Ｒの復調部３２ｂの構成の一例を示すブロック図である。
【０１２３】
復調部４０は、例えば、Ａ／Ｄ変換部３４、ＦＩＲフィルタ３５、サンプルバッファメモリ１６１、エラー訂正部１６３、位相同期部４１、スケジューラ１６６を含む。
【０１２４】
Ａ／Ｄ変換部３４は、デジタル信号を、ＦＩＲフィルタ３５と位相同期部４１とに送信する。
【０１２５】
位相同期部４１は、Ａ／Ｄ変換部３４から送信されたデジタル信号に含まれるプリアンブル２３と位相を同期させた制御信号をスケジューラ１６６に送信する。
【０１２６】
第３の実施形態においては、例えば、記憶フォーマットとしてプリアンブル２３の１パターン周期の倍数となるようにシンクマーク２４の長さが定められている。これにより、データ２５の先頭位置は、プリアンブル２３が終了してからプリアンブル２３の１パターン周期の倍数後に、現れる。
【０１２７】
したがって、スケジューラ１６６は、強制サーチを、プリアンブル２３の１パターン周期単位でシフトさせながら実行するよう制御する。
【０１２８】
図１４は、プリアンブル２３のパターン周期とデータ２５の開始位置との関係の一例を示すタイミングチャートである。この図１４では、プリアンブル２３が終了した後、プリアンブル２３の５パターン周期後に、データ２５の先頭が配置される場合、換言すれば、シンクマーク２４がプリアンブル２３の５パターン周期分の長さを持つ場合、を例として示している。
【０１２９】
リードチャネル１６Ｒは、リード開始時にＰＬＬ回路によりプリアンブル２３のパターン周期にサンプリング位相をあわせ、プリアンブルの周期パターンとタイミングを合わせてリードを開始し、サンプル値Ｄをサンプルバッファメモリ１６１に記憶する。この場合、リード開始から第２の位相合わせウィンドウのアクティブ期間の完了時点までの間にプリアンブル２３の周期パターンに対応するパターンがサンプルバッファメモリ１６１に記憶されていれば、プリアンブル２３後の１パターン周期×ｎ（ｎは１以上の整数）の位置にデータ２５の先頭ビットが現れる。
【０１３０】
以上説明した第３の実施形態においては、シンクマークのリカバリの試行範囲でリードのタイミングのばらつき、ライトのタイミングのばらつき、ゾーンの内と外との変化のすべてを考慮することなく、強制サーチのステップサイズをプリプリアンブル２３のパターン周期単位に設定することができ、デコードの試行数を減少することができ、リカバリに必要な時間を短縮することができる。例えば１ビットずつオフセット値をシフトさせて試行する手法に対し、一般的に用いられている４Ｔ周期プリアンブル２３(“0011”や”1100”の繰り返し)では１／４の時間で強制サーチによるデータ２５の探索を行うことができる。
【０１３１】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１３２】
１…ストレージ装置、２…ディスク、４…ＨＤＡ、５…ヘッドアンプＩＣ、６…メインコントローラ、７…ドライバＩＣ、８…ＳＰＭ、９…ヘッド、１０…アーム、１１…ＶＣＭ、１４…アクチュエータ、１５…シリンダ、１５Ｓ…サーボ領域、１５Ｄ…データ領域、１６…Ｒ／Ｗチャネル、１６Ｒ…リードチャネル、１６１…サンプルバッファメモリ、１６２…リードバッファメモリ、１６３…エラー訂正部、１６４…第１の判断部、１６５…第２の判断部、１６６…スケジューラ、１７…ＨＤＣ、１８…プロセッサ、２２…セクタ、２３，２８Ａ，２８Ｂ…プリアンブル、２４，２９Ａ，２９Ｂ…シンクマーク、２５，３０Ａ，３０Ｂ…データ、２６，３１Ａ，３１Ｂ…ポストアンブル、２７…スプリットセクタ、３２，３２ａ，３２ｂ…復調部、１６３ａ…チャネル検出部、１６３ｂ…ＬＤＰＣデコーダ、１６３ｃ…ＬＬＲバッファメモリ、１６４…第１の判断部、１６５…第２の判断部、１６６…スケジューラ、３８…タイムスタンプメモリ、４１…位相同期部。
【図１】
2018160302.tif 000003
【図２】
2018160302.tif 000004
【図３】
2018160302.tif 000005
【図４】
2018160302.tif 000006
【図５】
2018160302.tif 000007
【図６】
2018160302.tif 000008
【図７】
2018160302.tif 000009
【図８】
2018160302.tif 000010
【図９】
2018160302.tif 000011
【図１０】
2018160302.tif 000012
【図１１】
2018160302.tif 000013
【図１２】
2018160302.tif 000014
【図１３】
2018160302.tif 000015
【図１４】
2018160302.tif 000016