【解決手段】 本実施形態に係る磁気ディスク装置は、事前に検出されたリードできない先発不良セクタが登録された第1リストと、後発不良セクタが登録される第2リストとを有するディスクと、前記ディスクに対してデータをライトし、前記ディスクからデータをリードするヘッドと、前記第1リストに登録された第1不良セクタから前記ディスクでリードできない第2不良セクタに向かう第1方向に位置する第1セクタを前記第2リストに登録し、前記第2リストに登録した前記第1セクタに対応する第1アドレスを第1代替セクタに割り当て直す、コントローラと、を備える。
前記コントローラは、前記第1不良セクタと前記第2不良セクタとの間に位置するセクタの数が閾値以下の場合に前記第1セクタを前記第2リストに登録する、請求項2に記載の磁気ディスク装置。
前記コントローラは、前記第1リストに登録した前記第2不良セクタに対応する前記第2アドレスを第3代替セクタに割り当て直す、請求項5に記載の磁気ディスク装置。
事前に検出されたリードできない不良セクタが登録された第1リストと、前記不良セクタが登録される第2リストとを有するディスクと、前記ディスクに対してデータをライトし、前記ディスクからデータをリードするヘッドとを備える磁気ディスク装置に適用されるリード処理方法であって、
前記第1リストに登録された第1不良セクタから前記ディスクでリードできない第2不良セクタに向かう第1方向に位置する第1セクタを前記第2リストに登録し、
前記第2リストに登録した前記第1セクタに対応する第1アドレスを第1代替セクタに割り当て直す、リード処理方法。
【発明を実施するための形態】
【0007】
以下、実施の形態について図面を参照して説明する。なお、図面は、一例であって、発明の範囲を限定するものではない。
(実施形態)
図1は、実施形態に係る磁気ディスク装置1の構成を示すブロック図である。
磁気ディスク装置1は、後述するヘッドディスクアセンブリ(HDA)と、ドライバIC20と、ヘッドアンプ集積回路(以下、ヘッドアンプIC、又はプリアンプ)30と、揮発性メモリ70と、バッファメモリ(バッファ)80と、不揮発性メモリ90と、1チップの集積回路であるシステムコントローラ130とを備える。また、磁気ディスク装置1は、ホストシステム(以下、単に、ホストと称する)100と接続される。
【0008】
HDAは、磁気ディスク(以下、ディスクと称する)10と、スピンドルモータ(以下、SPMと称する)12と、ヘッド15を搭載しているアーム13と、ボイスコイルモータ(以下、VCMと称する)14とを有する。ディスク10は、スピンドルモータ12に取り付けられ、スピンドルモータ12の駆動により回転する。アーム13及びVCM14は、アクチュエータを構成している。アクチュエータは、VCM14の駆動により、アーム13に搭載されているヘッド15をディスク10上の目標位置まで移動制御する。ディスク10およびヘッド15は、2つ以上の数が設けられてもよい。
ディスク10は、そのデータをライト可能な領域に、ユーザから利用可能なユーザデータ領域10aと、システム管理に必要な情報をライトするシステムエリア10bとが割り当てられている。以下、ディスク10の半径方向に直交する方向を円周方向と称する。また、「アクセス」とは「ディスク10にデータをライトする」ことと「ディスク10からデータをリードする」こととの両方の意味を含むものとして使用する。ユーザデータ領域10aは、代替領域CAを含む。なお、代替領域CAは、システムエリア10bに設けられていてもよい。システムエリア10bは、Pリスト(プライマリリスト)PLとGリスト(グロウン(Grown)リスト)GLとトラックスリップ(Track Slip)情報TSIとを含む。PリストPLとGリストGLとトラックスリップ情報TSIとは、後述する揮発性メモリ70や不揮発性メモリ90等に格納されてもよい。なお、一例では、システムエリア10bにおいて、PリストPLを格納する記録領域の容量は、GリストGLを格納する記録領域の容量よりも大きい。
【0009】
PリストPLは、磁気ディスク装置1の出荷前のディスク10の傷等の欠陥(又は、ディフェクト)の検査で事前に検出された欠陥のあるセクタ(以下、不良セクタ又は先発不良セクタと称する)を管理する情報を含む。PリストPLは、例えば、ディスク10のデータ構造のアドレスマップをもとに生成される。セクタは、例えば、ディスク10にデータをライトする際の最小単位の記録領域である。一例では、1セクタは、512byte、又は4Kbyte分のディスク10の記録領域である。以下、「セクタにライトされたデータをリードする」ことを単に「セクタをリードする」と表現する場合もある。
GリストGLは、磁気ディスク装置1の出荷後のセクタアクセスで検出された不良セクタ(以下、後発不良セクタと称する場合もある)を管理するための情報を含む。GリストGLは、出荷後のセクタアクセスで検出された全ての不良セクタについて、これら不良セクタのLBA(Logical Block Address)又は物理アドレス等のアドレスと、これら不良セクタに変えて用いられる代替セクタとの対応を示す。代替セクタは、代替領域CAに設けられている。以下、説明の便宜上、「セクタのアドレス(LBAや物理アドレス等)」を単に「セクタ」と称する場合もある。GリストGLは、出荷前には後発不良セクタに関する情報(後発不良セクタのアドレス等)が全く登録されておらず、出荷後に後発不良セクタが検出される度に後発不良セクタに関する情報が登録される。
トラックスリップ(Track Slip)情報TSIは、磁気ディスク装置1の出荷前のディスク10の欠陥の検査で検出された全体的に揺れている等の欠陥を有するトラック(以下、不良トラックと称する)を管理する情報を含む。
【0010】
ヘッド15は、スライダを本体として、当該スライダに実装されているライトヘッド15Wとリードヘッド15Rとを備える。ライトヘッド15Wは、ディスク10上にデータをライトする。リードヘッド15Rは、ディスク10上のデータトラックに記録されているデータをリードする。
【0011】
ドライバIC20は、システムコントローラ130(詳細には、後述するMPU60)の制御に従って、SPM12およびVCM14の駆動を制御する。
ヘッドアンプIC(プリアンプ)30は、リードアンプ及びライトドライバを備えている。リードアンプは、ディスク10からリードされたリード信号を増幅して、システムコントローラ130(詳細には、後述するリード/ライト(R/W)チャネル40)に出力する。ライトドライバは、R/Wチャネル40から出力される信号に応じたライト電流をヘッド15に出力する。
【0012】
揮発性メモリ70は、電力供給が断たれると保存しているデータが失われる半導体メモリである。揮発性メモリ70は、磁気ディスク装置1の各部での処理に必要なデータ等を格納する。揮発性メモリ70は、例えば、SRAM(Static Random Access Memory)、DRAM(Dynamic Random Access Memory)、又はSDRAM(Synchronous Dynamic Random Access Memory)である。
バッファメモリ80は、磁気ディスク装置1とホスト100との間で送受信されるデータ等を一時的に記録する半導体メモリである。なお、バッファメモリ80は、揮発性メモリ70と一体に構成されていてもよい。バッファメモリ80は、例えば、DRAM、SRAM、SDRAM、FeRAM(Ferroelectric Random Access memory)、又はMRAM(Magnetoresistive Random Access Memory)等である。
不揮発性メモリ90は、電力供給が断たれても保存しているデータを記録する半導体メモリである。不揮発性メモリ90は、例えば、NOR型またはNAND型のフラッシュROM(Flash Read Only Memory :FROM)である。
【0013】
システムコントローラ(コントローラ)130は、例えば、複数の素子が単一チップに集積されたSystem-on-a-Chip(SoC)と称される大規模集積回路(LSI)を用いて実現される。システムコントローラ130は、リード/ライト(R/W)チャネル40と、ハードディスクコントローラ(HDC)50と、マイクロプロセッサ(MPU)60とを含む。システムコントローラ130は、例えば、ドライバIC20、ヘッドアンプIC30、揮発性メモリ70、バッファメモリ80、不揮発性メモリ90、及びホストシステム100等に電気的に接続されている。
R/Wチャネル40は、後述するMPU60からの指示に応じて、ディスク10からホスト100に転送されるリードデータ及びホスト100から転送されるライトデータの信号処理を実行する。R/Wチャネル40は、リードデータの信号品質を測定する回路、又は機能を有している。R/Wチャネル40は、例えば、ヘッドアンプIC30、HDC50、及びMPU60等に電気的に接続されている。
HDC50は、後述するMPU60からの指示に応じて、ホスト100とR/Wチャネル40との間のデータ転送を制御する。HDC50は、例えば、R/Wチャネル40、MPU60、揮発性メモリ70、バッファメモリ80、及び不揮発性メモリ90等に電気的に接続されている。
【0014】
MPU60は、磁気ディスク装置1の各部を制御するメインコントローラである。MPU60は、ドライバIC20を介してVCM14を制御し、ヘッド15の位置決めを行なうサーボ制御を実行する。MPU60は、ディスク10へのデータのライト動作を制御すると共に、ライトデータの保存先を選択する。また、MPU60は、ディスク10からのデータのリード動作を制御すると共に、リードデータの処理を制御する。MPU60は、磁気ディスク装置1の各部に接続されている。MPU60は、例えば、ドライバIC20、R/Wチャネル40、及びHDC50等に電気的に接続されている。
MPU60は、リード/ライト制御部61と、ベリファイ処理部62と、データ復旧部63と、検出部64とを備えている。MPU60は、これら各部、例えば、リード/ライト制御部61、ベリファイ処理部62、データ復旧部63、及び検出部64等の処理をファームウェア上で実行する。なお、MPU60は、これら各部を回路として備えていてもよい。
【0015】
リード/ライト制御部61は、ホスト100からのコマンドに従って、データのリード処理及びライト処理を制御する。リード/ライト制御部61は、ドライバIC20を介してVCM14を制御し、ヘッド15をディスク10上の目標位置に位置決めし、データをリード又はライトする。例えば、ホスト100からのコマンドでGリストGLに登録された不良セクタ(以下、Gセクタと称する場合もある)をリードする指示、又はこのGセクタにライトする指示を受けた場合、リード/ライト制御部61は、GリストGLに基づいて、指示されたGセクタに対応する代替セクタをリードする、又はこの代替セクタにライトする。所定のセクタでリードエラーが生じた場合、リード/ライト制御部61は、リードエラーが生じたセクタを再度リードする処理(以下、リトライ処理と称する)を実行する。所定の回数(以下、リトライ閾値と称する)、例えば、数回〜数百回以上の回数のリトライ処理を実行しても所定のセクタでリードエラーが生じた場合、リード/ライト制御部61は、このセクタがリトライ閾値以上の回数のリトライ処理でもリードエラーとなることを示す信号、例えば、アンリカバードエラーであることを示す信号をホスト100に出力する。
【0016】
ベリファイ処理部62は、ディスク10の所定のセクタにライトしたデータをリードし、このセクタにライトしたデータを正常にリードできているかリードできてないかを照合(又は、検証)する処理(以下、ベリファイ処理と称する)を実行する。例えば、リードエラーが生じたがリトライ閾値より小さい回数で所定のセクタをリードできた場合、ベリファイ処理62は、この所定のセクタにベリファイ処理を実行する。所定のセクタのデータを正常にリードできていない場合、ベリファイ処理部62は、このセクタのデータを復旧して、このセクタを含むトラックを書き直す処理(以下、リライト処理と称する)を実行することを指示する信号を、例えば、後述するデータ復旧部63に出力する。
データ復旧部63は、データを正常にリードできない所定のセクタを復旧し、このセクタを含むトラックにリライト処理を実行する。
【0017】
検出部64は、不良セクタとこの不良セクタが拡張し得る方向(以下、拡張方向と称する場合もある)に位置する不良セクタとなる可能性のあるセクタ(以下、拡張不良セクタと称する)とを検出する。例えば、検出部64は、リトライ閾値以上の回数のリトライ処理でもリードできない、且つリライト処理を実行してもリードできないセクタを不良セクタ(以下、対象不良セクタと称する)として検出する。なお、検出部64は、リトライ閾値以上の回数のリトライ処理でもリードできないセクタ、又はリトライ処理を実行してもリードできないセクタを対象不良セクタとして検出してもよい。対象不良セクタを検出した場合、検出部64は、PリストPL及びトラックスリップ情報TSI等をリードし、PリストPL、トラックスリップ情報、及び対象不良セクタ等に基づいて、不良セクタとなる可能性のあるセクタ(以下、拡張不良セクタと称する)を検出する。例えば、検出部64は、PリストPL、トラックスリップ情報TSI、及び対象不良セクタに基づいて、PリストPLに登録された不良セクタ(以下、Pセクタと称する)又はトラックスリップ情報に登録された不良トラック(以下、スリップトラックと称する)と対象不良セクタとの間に位置している拡張不良セクタを検出する。また、対象不良セクタがPセクタ又はスリップトラックに連続して並んでいる場合、検出部64は、PリストPL、トラックスリップ情報TSI、及び対象不良セクタに基づいて、Pセクタから対象不良セクタに向かう拡張方向で対象不良セクタに連続して並んでいる拡張不良セクタを検出する。以下、「連続して並んでいること」や「直接セクタに接して位置していること」等を含めて「隣接している」と表現する場合もある。
【0018】
検出部64は、不良セクタ及び拡張不良セクタをGリストGL及びPリストPLにそれぞれ登録する。なお、検出した不良セクタをGリストGL及びPリストPLにそれぞれ登録する場合、検出部64は、GリストGL及びPリストPLで同じ形式になるように不良セクタを登録してもよい。例えば、拡張不良セクタがPセクタと対象不良セクタとの間に位置している場合、検出部64は、検出した拡張不良セクタの数が閾値(以下、登録閾値と称する)以下であるか登録閾値よりも大きいか判定する。ここで、登録閾値は、例えば、1〜2である。なお、登録閾値は、例えば、2よりも大きい数であってもよい。拡張不良セクタの数が登録閾値以下であると判定した場合、検出部64は、対象不良セクタと拡張不良セクタとをPリストPL及びGリストGLにそれぞれ登録する。このように、検出部64は、拡張不良セクタ及び対象不良セクタをPリストPL及びGリストGLにそれぞれ登録することで、対象不良セクタ(以下、現在の対象不良セクタと称する)の近傍に次の対象不良セクタを検出した場合に、次の対象不良セクタと現在の対象不良セクタ(Pセクタ)との近傍に位置する拡張不良セクタをPリスト及びGリストに登録するか登録しないかをさらに判定できる。拡張不良セクタの数が登録閾値よりも大きいと判定した場合、検出部64は、拡張不良セクタをPリストPL及びGリストGLに登録せず、対象不良セクタをPリストPL及びGリストにそれぞれ登録する。また、対象不良セクタがPセクタに隣接している場合、検出部64は、対象不良セクタとこの対象不良セクタの拡張方向に隣接する登録閾値以下の数の拡張不良セクタとをPリストPL及びGリストGLにそれぞれ登録する。
【0019】
検出部64は、Gセクタ(に対応するアドレス)やPセクタ(に対応するアドレス)を代替セクタに対応させる処理(以下、交代処理と称する場合もある)を実行する。以下、「所定のセクタ(に対応するアドレス)を所定の代替セクタに対応させる(又は割り当て直す)こと」を「交代」と称する。例えば、対象不良セクタ及び拡張不良セクタをPリストPL及びGリストGLにそれぞれ登録した場合、検出部64は、PリストPL及びGリストGLにそれぞれ登録した対象不良セクタ及び拡張不良セクタを代替セクタにそれぞれ交代する。また、対象不良セクタをPリストPL及びGリストGLにそれぞれ登録した場合、検出部64は、PリストPL及びGリストGLにそれぞれ登録した対象不良セクタを代替セクタにそれぞれ交代する。
【0020】
図2は、本実施形態に係る拡張不良セクタの検出方法の一例を示す図である。
図2には、ユーザデータ領域10aのTrack n-3、Track n-2、Track n-1、Track n、Track n+1、Track n+2、及びTrack n+3を示している。
図2において、円周方向に並んでいる各セクタには、セクタ番号k-5、k-4、k-3、k-2、k-1、k、k+1、k+2、k+3、k+4、及びk+5を付している。セクタ番号k-5乃至k+5のセクタは、このセクタ番号の順番で円周方向に連続して並んでいる。同じセクタ番号のセクタは、半径方向に連続して並んでいる。
図2に示した例では、Track n-3は、セクタS1k−4及び1kを含み、Track n-2は、セクタS2k−4及びセクタ2kを含み、Track n-3は、セクタS3k−4及びセクタ3kを含む。また、Track nは、セクタS4k−4及びセクタ4kを含み、Track n+1は、セクタS5k−4及びセクタ5kを含み、Track n+2は、セクタS6k−4及びセクタ6kを含み、Track n+3は、セクタS7k−4及びセクタ7kを含む。セクタS1k、S2k、S3k、S4k、S5k、S6k、及びS7kは、この順番で半径方向に連続して並んでいる。また、セクタS1k−4、S2k−4、S3k―4、S4k−4、S5k−4、S6k−4、及びS7k−4は、この順番で半径方向に連続して並んでいる。なお、
図2において、図示の便宜上、各トラックが直線上に延出しているように記載しているが、実際には
図1に示したディスク10の形状に沿って曲がっている。
図2に示す例では、PセクタPSは、セクタS4k乃至S7kと、セクタS4k−4乃至S7k−4とを含む。
図2において、登録閾値は1である。
【0021】
対象不良セクタS2kを検出した場合、検出部64は、PリストPL及び対象不良セクタS2kに基づいて、PセクタPSであるセクタS4k乃至S7kと対象不良セクタS2kとの間に位置する拡張不良セクタS3kを検出する。検出部64は、検出した拡張不良セクタの数(1)が登録閾値(1)以下であるか登録閾値(1)よりも大きい数であるかを判定する。検出部64は、拡張不良セクタの数(1)が登録閾値(1)以下であると判定し、対象不良セクタS2k及び拡張不良セクタS3kをPリストPL及びGリストGLにそれぞれ登録し、PリストPL及びGリストGLにそれぞれ登録した不良セクタS2k及び拡張不良セクタS3kを代替セクタにそれぞれ交代する。
また、PセクタPSであるセクタS4k−4乃至S7k−4に隣接する対象不良セクタS3k−4を検出した場合、検出部64は、PリストPL及び対象不良セクタS3k−4に基づいて、対象不良セクタS3k−4と対象不良セクタS3k−4の拡張方向に隣接する拡張不良セクタS3k−4とをPリストPL及びGリストGLにそれぞれ登録し、PリストPL及びGリストGLにそれぞれ登録した対象不良セクタS3k−4と拡張不良セクタS2k−4とを代替セクタにそれぞれ交代する。
【0022】
図3は、本実施形態に係る拡張不良セクタの検出方法の一例を示す図である。
図3に示した例では、Track nは、セクタS4k−5、セクタS4k−4、セクタS4k−3、セクタS4k−2、セクタS4k−1、セクタS4k、セクタS4k+1、セクタS4k+2、セクタS4k+3、セクタS4k+4、及びS4k+5を含む。セクタS4k−5乃至S4k+5は、円周方向に連続して並んでいる。
図3に示す例では、PセクタPSは、セクタS5k乃至S7kを含む。スリップトラックSTは、Track nを含む。
図3において、登録閾値は1である。
【0023】
対象不良セクタS2kを検出した場合、検出部64は、トラックスリップ情報TSI及び対象不良セクタS2kに基づいて、スリップトラックSTであるTrack nと対象不良セクタS2kとの間に位置する拡張不良セクタS3kを検出する。検出部64は、検出した拡張不良セクタの数(1)が登録閾値(1)以下であるか登録閾値(1)よりも大きい数であるかを判定する。検出部64は、拡張不良セクタの数(1)が登録閾値(1)以下であると判定し、対象不良セクタS2k及び拡張不良セクタS3kをPリストPL及びGリストGLにそれぞれ登録し、PリストPL及びGリストGLにそれぞれ登録した不良セクタS2k及び拡張不良セクタS3kを代替セクタにそれぞれ交代する。
【0024】
図4は、本実施形態に係る拡張不良セクタの検出方法の一例を示す図である。
図3に示す例では、PセクタPSは、セクタS4k−4乃至S4k+1を含む。
図3において、登録閾値は1である。
対象不良セクタS4k+3を検出した場合、検出部64は、PリストPL及び対象不良セクタS4k+3に基づいて、PセクタPSであるセクタS4k−4乃至S4k+1と対象不良セクタS4k+3との間に位置する拡張不良セクタS4k+2を検出する。検出部64は、検出した拡張不良セクタの数(1)が登録閾値(1)以下であるか登録閾値(1)よりも大きい数であるかを判定する。検出部64は、拡張不良セクタの数(1)が登録閾値(1)以下であると判定し、対象不良セクタS4k+3及び拡張不良セクタS4k+2をPリストPL及びGリストGLにそれぞれ登録し、PリストPL及びGリストGLにそれぞれ登録した対象不良セクタS4k+3及び拡張不良セクタS4k+2を代替セクタにそれぞれ交代する。また、PセクタPSであるセクタS4k−4乃至S4k+1に半径方向で隣接する対象不良セクタを検出した場合、検出部64は、PリストPL及び対象不良セクタに基づいて、対象不良セクタとこの対象不良セクタの拡張方向に隣接する登録閾値(1)以下の数の拡張不良セクタとをPリストPL及びGリストGLにそれぞれ登録し、PリストPL及びGリストにそれぞれ登録した対象不良セクタと登録閾値(1)以下の数の拡張不良セクタとを代替セクタにそれぞれ交代する。
【0025】
図5は、本実施形態に係る拡張不良セクタの検出方法の一例を示す図である。
図4に示した例では、Track n-3は、セクタS1k+3を含み、Track n-2は、セクタS2k+2を含み、Track n-1は、セクタS3k+1を含む。また、Track nは、セクタS4kを含み、Track n+1は、セクタS5k−1を含み、Track n+2は、セクタS6k−2を含み、Track n+3は、セクタS7k−3を含む。セクタS1k+3、セクタS2k+2、セクタS3k+1、セクタS4k、セクタS5k−1、セクタS6k−2、及びセクタS7k−3は、この順番で半径方向及び円周方向に交差する方向(以下、斜め方向と称する)に連続して並んでいる。
図5に示す例では、PセクタPSは、セクタS4k、セクタS5k−1、セクタS6k−2、及びセクタS7k−3を含む。
図4において、登録閾値は1である。
【0026】
対象不良セクタS2k+2を検出した場合、検出部64は、PリストPL及び対象不良セクタS2k+2に基づいて、PセクタPSであるセクタS4k、セクタS5k−1、セクタS6k−2、及びセクタS7k−3と対象不良セクタS2k+2との間に位置する拡張不良セクタS3k+1を検出する。検出部64は、検出した拡張不良セクタの数(1)が登録閾値(1)以下であるか登録閾値(1)よりも大きい数であるかを判定する。検出部64は、拡張不良セクタの数(1)が登録閾値(1)以下であると判定し、対象不良セクタS2k+2及び拡張不良セクタS3k+1をPリストPL及びGリストGLにそれぞれ登録し、PリストPL及びGリストGLにそれぞれ登録した対象不良セクタS2k+2及び拡張不良セクタS3k+1を代替セクタにそれぞれ交代する。なお、Track nがスリップトラックSTである場合に対象不良セクタS2k+2を検出した際に、検出部64は、トラックスリップ情報TSI、及び対象不良セクタS2kに基づいて、Track nと対象不良セクタS2k+2との間に位置する拡張不良セクタS3k+1を検出する。また、PセクタPSであるセクタS4k、セクタS5k−1、セクタS6k−2、及びセクタS7k−3に斜め方向で隣接する対象不良セクタを検出した場合、検出部64は、PリストPL及び対象不良セクタに基づいて、対象不良セクタとこの対象不良セクタの拡張方向、例えば、斜め方向に隣接する登録閾値(1)以下の数の拡張不良セクタとをPリストPL及びGリストGLにそれぞれ登録し、PリストPL及びGリストGLにそれぞれ登録した対象不良セクタと登録閾値(1)以下の数の拡張不良セクタを代替セクタにそれぞれ交代する。
【0027】
図6は、本実施形態に係るリード処理方法の一例を示すフローチャートである。
MPU60は、GリストGLに基づいて、所定のセクタをリードし(B601)、所定のセクタでリードエラーが生じているかリードエラーが生じていないかを判定する(B602)。リードエラーが生じていないと判定した場合(B602のNO)、MPU60は、処理を終了する。リードエラーが生じていると判定した場合(B602のYES)、MPU60は、所定のセクタをリトライ閾値よりも小さい回数のリトライ処理でリードできるかリトライ閾値以上の回数のリトライ処理でもリードできないかを判定する(B603)。リトライ閾値以上の回数のリトライ処理でもリードできないと判定した場合(B603のNO)、MPU60は、リトライ閾値以上の回数のリトライ処理でもリードエラーとなることを示す信号をホスト100に出力し(B604)、処理を終了する。リトライ閾値よりも小さい回数のリトライ処理でリードできると判定した場合、MPU60は、所定のセクタにリライト処理を実行するか実行しないかを判定する(B605)。例えば、リトライ閾値よりも小さい回数のリトライ処理でリードできると判定した場合、MPU60は、所定のセクタにベリファイ処理を実行し、所定のセクタにライトしたデータを正常にリードできているかリードできていないかを判定する。リライト処理を実行しないと判定した場合(B605のNO)、MPU60は、処理を終了する。例えば、ベリファイ処理により所定のセクタのデータを正常にリードできていると判定した場合、MPU60は、処理を終了する。リライト処理を実行すると判定した場合(B605のYES)、MPU60は、リライト処理を実行した所定のセクタでリードエラーが生じているかリードエラーが生じていないかを再度判定する(B606)。例えば、所定のセクタのデータを正常にリードできていないと判定した場合、MPU60は、このセクタのデータを復旧し、データを復旧したセクタを含むトラックにリライト処理を実行し、リライト処理を実行した後でこのセクタでリードエラーが生じているか生じていないかを再度判定する。
【0028】
リードエラーが生じていないと判定した場合(B606のNO)、MPU60は、処理を終了する。リードエラーが生じていると判定した場合(B606のYES)、MPU60は、PリストPL及びトラックスリップ情報TSI等をリードし(B607)、拡張不良セクタの数が登録閾値よりも大きいか登録閾値以下であるかを判定する(B608)。例えば、MPU60は、リードエラーが生じているセクタ(対象不良セクタ)とPセクタ又はスリップトラックとの間に位置する拡張不良セクタを検出し、検出した拡張不良セクタの数が登録閾値以下であるか登録閾値より大きいかを判定する。また、MPU60は、対象不良セクタの拡張方向に隣接する対象不良セクタを検出した場合、対象不良セクタの拡張方向に隣接する閾値以下の数の拡張不良セクタを登録し、B611の処理へ進む。拡張不良セクタの数が登録閾値より大きいと判定した場合(B608のNO)、MPU60は、対象不良セクタをPリストPL及びGリストGLにそれぞれ登録し(B609)、PリストPL及びGリストGLにそれぞれ登録した対象不良セクタを代替セクタにそれぞれ交代し(B610)、処理を終了する。拡張不良セクタの数が登録閾値以下であると判定した場合(B608のYES)、MPU60は、対象不良セクタ及び拡張不良セクタをPリストPL及びGリストGLにそれぞれ登録し(B611)、PリストPL及びGリストGLにそれぞれ登録した対象不良セクタ及び拡張不良セクタを代替セクタにそれぞれ交代し(B612)、処理を終了する。
【0029】
本実施形態によれば、磁気ディスク装置1は、対象不良セクタと対象不良セクタの拡張方向に位置する拡張不良セクタとを検出し、対象不良セクタと拡張不良セクタとをGリストGL及びPリストPLにそれぞれ登録し、GリストGL及びPリストPLに登録した対象不良セクタ及び拡張不良セクタを代替セクタにそれぞれ交代する。例えば、拡張不良セクタがPセクタと対象不良セクタとの間に位置している場合、磁気ディスク装置1は、検出した拡張不良セクタの数が登録閾値以下であるか登録閾値よりも大きいかを判定する。拡張不良セクタの数が登録閾値以下であると判定した場合、検出部64は、対象不良セクタと拡張不良セクタとをPリストPL及びGリストGLにそれぞれ登録し、PリストPL及びGリストGLに登録した対象不良セクタと拡張不良セクタとをそれぞれ代替セクタに交代する。また、対象不良セクタがPセクタに隣接している場合、検出部64は、対象不良セクタとこの対象不良セクタの拡張方向に隣接する登録閾値以下の数の拡張不良セクタとをPリストPL及びGリストGLにそれぞれ登録し、PリストPL及びGリストGLに登録した対象不良セクタと拡張不良セクタとをそれぞれ代替セクタに交代する。前述したように、磁気ディスク装置は、後発不良セクタとなる可能性のあるセクタを事前に検出し、検出したセクタをGリストGL及びPリストPLにそれぞれ登録し、GリストGL及びPリストPLにそれぞれ登録したセクタを代替セクタにそれぞれ交代する。そのため、磁気ディスク装置1は、不良セクタになり得るセクタを予めPリストPL及びGリストに登録することで、リトライ処理が頻発することを防止することができる。つまり、磁気ディスク装置1は、リード性能の低下を防止することができる。
【0030】
次に、変形例に係る磁気ディスク装置について説明する。変形例において、前述の実施形態と同一の部分には同一の参照符号を付してその詳細な説明を省略する。
(変形例)
変形例の磁気ディスク装置1は、不良セクタをGリストに登録する処理が前述の実施形態と異なる。
対象不良セクタを検出した場合、検出部64は、対象不良セクタをGリストに登録し、Gリストに登録した対象不良セクタ(以下、対象Gセクタと称する)を代替セクタに交代する。検出部64は、PリストPL、トラックスリップ情報TSI、及びGリストGL等をリードし、PリストPL、トラックスリップ情報TSI、及び対象Gセクタに基づいて、拡張不良セクタを検出する。例えば、検出部64は、PリストPL、トラックスリップ情報TSI、及びGリストGLに基づいて、Pセクタ又はスリップトラックと対象Gセクタとの間に位置している拡張不良セクタを検出する。また、対象GセクタがPセクタ又はスリップトラックに隣接している場合、検出部64は、PリストPL、トラックスリップ情報TSI、及び対象Gセクタに基づいて、対象Gセクタの拡張方向に隣接している拡張不良セクタを検出する。
【0031】
例えば、拡張不良セクタがPセクタと対象Gセクタとの間に位置している場合、検出部64は、検出した拡張不良セクタの数が登録閾値以下であるか登録閾値よりも大きいか判定する。拡張不良セクタの数が登録閾値以下であると判定した場合、検出部64は、拡張不良セクタをPリストPL及びGリストGLにそれぞれ登録し、対象GセクタをPリストPLに登録する。この場合、検出部64は、PリストPLに登録した拡張不良セクタ及び対象Gセクタを代替セクタにそれぞれ交代し、GリストGLに登録した拡張不良セクタを代替セクタに交代する。拡張不良セクタの数が登録閾値よりも大きいと判定した場合、検出部64は、拡張不良セクタをPリストPL及びGリストGLに登録せず、対象GセクタをPリストPLに登録する。この場合、検出部64は、PリストPLに登録した対象Gセクタを代替セクタに交代する。また、対象GセクタがPセクタに隣接している場合、検出部64は、対象GセクタをPリストPLに登録し、この対象Gセクタの拡張方向に隣接する登録閾値以下の数の拡張不良セクタをPリストPL及びGリストGLにそれぞれ登録する。この場合、検出部64は、PリストPLに登録した対象Gセクタと登録閾値以下の拡張不良セクタとを代替セクタにそれぞれ交代し、GリストGLに登録した登録閾値以下の拡張不良セクタを所定の代替セクタに交代する。
【0032】
図7は、変形例に係るリード処理方法の一例を示すフローチャートである。
MPU60は、B601乃至B606までの処理を実行し、リライト処理後にリードエラーが生じているセクタ(対象不良セクタ)をGリストGLに登録し(B701)、GリストGLに登録した対象不良セクタ(対象Gセクタ)を代替セクタに交代する(B702)。MPU60は、PリストPL、GリストGL、及びトラックスリップ情報TSI等をリードし(B703)、拡張不良セクタの数が登録閾値よりも大きいか登録閾値以下であるかを判定する(B608)。拡張不良セクタの数が登録閾値より大きいと判定した場合(B608のNO)、MPU60は、対象GセクタをPリストPLに登録し(B705)、PリストPLに登録した対象Gセクタを代替セクタと交代し(B706)、処理を終了する。
【0033】
変形例によれば、磁気ディスク装置1は、対象Gセクタと対象Gセクタの拡張方向に位置する拡張不良セクタとを検出し、対象Gセクタと拡張不良セクタとをGリストGL及びPリストPLにそれぞれ登録し、GリストGL及びPリストPLに登録した対象Gセクタ及び拡張不良セクタを代替セクタにそれぞれ交代する。そのため、磁気ディスク装置1は、リード性能の低下を防止することができる。
前述した実施形態及び変形例の構成は、通常の記録配置方法の磁気ディスク装置1だけでなく、1つ前にライトした隣接するトラックに現在のトラックの一部を重ねてライトする瓦記録(Shingled write Magnetic Recording:SMR)配置方法にも適用することができる。
【0034】
いくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。