(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-06-28
(45)【発行日】2024-07-08
(54)【発明の名称】磁気ディスク装置及びリード/ライト処理方法
(51)【国際特許分類】
G11B 5/09 20060101AFI20240701BHJP
G11B 20/10 20060101ALI20240701BHJP
G11B 20/18 20060101ALI20240701BHJP
【FI】
G11B5/09 361H
G11B20/10 301Z
G11B5/09 311C
G11B20/18 520A
G11B20/18 552B
G11B20/18 572B
G11B20/18 572F
(21)【出願番号】P 2021041234
(22)【出願日】2021-03-15
【審査請求日】2023-01-26
(73)【特許権者】
【識別番号】000003078
【氏名又は名称】株式会社東芝
(73)【特許権者】
【識別番号】317011920
【氏名又は名称】東芝デバイス&ストレージ株式会社
(74)【代理人】
【識別番号】110001737
【氏名又は名称】弁理士法人スズエ国際特許事務所
(72)【発明者】
【氏名】前東 信宏
【審査官】松元 伸次
(56)【参考文献】
【文献】特開2011-008842(JP,A)
【文献】特開2009-230846(JP,A)
【文献】特開2005-235334(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G11B5/09
20/10-20/18
(57)【特許請求の範囲】
【請求項1】
ディスクと、
前記ディスクに対してデータをライトし、前記ディスクからデータをリードするヘッドと、
第1パリティセクタに基づいてトラック単位のエラー訂正処理を実行できる前記第1パリティセクタから前記ディスクの円周方向に連続する少なくとも1つの第1セクタ及び前記第1パリティセクタを含む第1セクタ群とトラック単位のエラー訂正処理を実行できない前記円周方向に連続する少なくとも1つの第2セクタを含む第2セクタ群とで異なるトラックの書き直し処理を実行する書き直し閾値を設定し、前記第1セクタ群と前記第2セクタ群とを異なる頻度で書き直すコントローラと、を備える磁気ディスク装置。
【請求項2】
前記コントローラは、前記第1セクタ群に第1書き直し閾値を設定し
、前記第2セクタ群に前記第1書き直し閾値よりも小さい第2書き直し閾値を設定する、請求項1に記載の磁気ディスク装置。
【請求項3】
前記コントローラは、前記第1セクタ群を前記書き直し処理を実行する第1頻度よりも小さい第2頻度で前記第2セクタ群を前記書き直し処理を実行する、請求項2に記載の磁気ディスク装置。
【請求項4】
前記コントローラは、前記第1セクタ群に対応する第1ライト回数が前記第2書き直し閾値よりも大きい場合、前記第1セクタ群にランダムライトを実行しない、請求項2に記載の磁気ディスク装置。
【請求項5】
前記コントローラは、前記第1ライト回数が前記第2書き直し閾値よりも大きく、且つ前記第1セクタ群に第1データをランダムライトするコマンドを受けた場合、前記第1セクタ群をリードし、前記第1セクタに対応する第2データを前記第1データに置き換え、前記第1データをXOR演算して第2パリティセクタを算出し、前記第1データ及び前記第2パリティセクタを同じトラックにライトする、請求項4に記載の磁気ディスク装置。
【請求項6】
前記第1セクタ群及び前記第2セクタ群は、同じトラックに配置される、請求項1乃至5のいずれか1項に記載の磁気ディスク装置。
【請求項7】
第1面と前記第1面と異なる第2面とを有するディスクと、
前記第1面に対してデータをライトし、前記第1面からデータをリードする第1ヘッドと、
前記第2面に対してデータをライトし、前記第2面からデータをリードする第1ヘッドと、
トラック単位のエラー訂正処理を実行できる前記第1面の第1シリンダに対応するトラックの書き直し処理を実行する書き直し閾値を第1書き直し閾値に設定し、トラック単位のエラー訂正処理を実行できない前記第2面の前記第1シリンダに対応する前記書き直し閾値を前記第1書き直し閾値よりも小さい第2書き直し閾値に設定する、磁気ディスク装置。
【請求項8】
ディスクと、前記ディスクに対してデータをライトし、前記ディスクからデータをリードするヘッドと、を備える磁気ディスク装置に適用されるライト処理方法であって、
第1パリティセクタに基づいてトラック単位のエラー訂正処理を実行できる前記第1パリティセクタから前記ディスクの円周方向に連続する少なくとも1つの第1セクタ及び前記第1パリティセクタを含む第1セクタ群とトラック単位のエラー訂正処理を実行できない前記円周方向に連続する少なくとも1つの第2セクタを含む第2セクタ群とで異なるトラックの書き直し処理を実行する書き直し閾値を設定し、
前記第1セクタ群と前記第2セクタ群とを異なる頻度で書き直す、リード/ライト処理方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、磁気ディスク装置及びリード/ライト処理方法に関する。
【背景技術】
【0002】
磁気ディスク装置は、このセクタに対応する訂正コードによりこのセクタを訂正(救済又は復旧)できない場合にこのセクタを含むトラックに対応するパリティセクタに基づいて、このセクタを訂正するエラー訂正機能を有し得る。磁気ディスク装置は、所定のトラックの各セクタを排他的論理和(Exclusive OR:XOR)演算した結果をパリティセクタとしてこのトラックにライトする。磁気ディスク装置は、このトラックの所定のセクタでエラーを検出した場合、このトラックに対応するパリティセクタに基づいて誤り訂正符号(Error Correction Code)によりエラーを訂正するエラー訂正処理(以下、トラックECC処理と称する場合もある)を実行する。磁気ディスク装置が、パリティセクタを含むトラックの一部に通常記録(Conventional Magnetic Recording:CMR)型式でランダムにデータを上書きした場合、磁気ディスク装置は、このトラックにトラックECC処理を実行できない可能性がある。
【0003】
また、磁気ディスク装置では、データをライトした場合にヘッドからの漏れ磁束等の影響(Adjacent Track Interference:ATI)により、データが消去されるサイドイレーズが発生し得る。ATIは、例えば、ヘッドの特性、TPI(Track Per Inch)設定値、及びライト電流設定値等によって異なる。サイドイレーズを防止するために、磁気ディスク装置は、所定のトラックの周辺トラックにデータをライトした回数が規定回数に達した場合に、所定のトラックのデータを書き直す機能(リフレッシュ機能)を有している。
【先行技術文献】
【特許文献】
【0004】
【文献】米国特許第8699162号明細書
【文献】米国特許第10049698号明細書
【文献】米国特許第10777227号明細書
【発明の概要】
【発明が解決しようとする課題】
【0005】
本発明の実施形態は、記録密度を向上可能な磁気ディスク装置及びリード/ライト処理方法を提供することである。
【課題を解決するための手段】
【0006】
本実施形態に係る磁気ディスク装置は、ディスクと、前記ディスクに対してデータをライトし、前記ディスクからデータをリードするヘッドと、第1パリティセクタに基づいてトラック単位のエラー訂正処理を実行できる前記第1パリティセクタから前記ディスクの円周方向に連続する少なくとも1つの第1セクタ及び前記第1パリティセクタを含む第1セクタ群とトラック単位のエラー訂正処理を実行できない前記円周方向に連続する少なくとも1つの第2セクタを含む第2セクタ群とで異なるトラックの書き直し処理を実行する書き直し閾値を設定し、前記第1セクタ群と前記第2セクタ群とを異なる頻度で書き直すコントローラと、を備える。
【図面の簡単な説明】
【0007】
【
図1】
図1は、実施形態に係る磁気ディスク装置の構成を示すブロック図である。
【
図2】
図2は、本実施形態に係るディスクに対するヘッドの配置の一例を示す模式図である。
【
図3】
図3は、トラックECC処理の一例を示す模式図である。
【
図4】
図4は、トラックECC処理の一例を示す模式図である。
【
図5】
図5は、トラックECC処理の一例を示す模式図である。
【
図6】
図6は、実施形態に係るリフレッシュ閾値の一例を示す模式図である。
【
図7】
図7は、トラックECC処理を実行しないリード処理によるライト回数に対するエラーカウントの変化の測定値の一例を示す模式図である。
【
図8】
図8は、トラックECC処理を実行したリード処理によるライト回数に対するエラーカウントの変化の測定値の一例を示す模式図である。
【
図9】
図9は、実施形態に係るリフレッシュ閾値の設定方法の一例を示すフローチャートである。
【
図10】
図10は、実施形態に係る訂正可能領域のライト処理の一例を示すフローチャートである。
【発明を実施するための形態】
【0008】
以下、実施の形態について図面を参照して説明する。なお、図面は、一例であって、発明の範囲を限定するものではない。
(実施形態)
図1は、実施形態に係る磁気ディスク装置1の構成を示すブロック図である。
磁気ディスク装置1は、後述するヘッドディスクアセンブリ(HDA)と、ドライバIC20と、ヘッドアンプ集積回路(以下、ヘッドアンプIC、又はプリアンプ)30と、揮発性メモリ70と、不揮発性メモリ80と、バッファメモリ(バッファ)90と、1チップの集積回路であるシステムコントローラ130とを備える。また、磁気ディスク装置1は、ホストシステム(以下、単に、ホストと称する)100と接続される。
【0009】
HDAは、磁気ディスク(以下、ディスクと称する)DKと、スピンドルモータ(以下、SPMと称する)12と、ヘッドHDを搭載しているアーム13と、ボイスコイルモータ(以下、VCMと称する)14とを有する。ディスクDKは、SPM12に取り付けられ、SPM12の駆動により回転する。アーム13及びVCM14は、アクチュエータ16を構成している。アーム13は、少なくとも1つのアーム13を含む。例えば、アーム13は、複数のアーム13を有する。ヘッドHDは、少なくとも1つのヘッドHDを含む。例えば、ヘッドHDは、複数のヘッドHDを有する。アクチュエータ16は、VCM14の駆動により、アーム13に搭載されているヘッドHDをディスクDKの所定の位置まで移動制御する。なお、アクチュエータ16は、2つ以上設けられていてもよい。
【0010】
ディスクDKは、そのデータをライト可能な領域に、ユーザから利用可能なユーザデータ領域UAと、システム管理に必要な情報をライトするシステムエリアSAとが割り当てられている。なお、ディスクDKには、ユーザデータ領域UA及びシステムエリアSAとは別の領域として、ホスト100等から転送されたデータ(又はコマンド)をユーザデータ領域UAの所定の領域にライトする前に一時的に保持するメディアキャッシュ(又は、メディアキャッシュ領域と称する場合もある)が割り当てられていてもよい。以下、ディスクDKの内周から外周へ向かう方向、又はディスクDKの外周から内周へ向かう方向を半径方向と称する。半径方向において、内周から外周へ向かう方向を外方向(又は、外側)と称し、外周から内周へ向かう方向、つまり、外方向と反対方向を内方向(又は、内側)と称する。ディスクDKの半径方向に直交する方向を円周方向と称する。すなわち、円周方向は、ディスクDKの円周に沿った方向に相当する。また、ディスクDKの半径方向の所定の位置を半径位置と称し、ディスクDKの円周方向の所定の位置を円周位置と称する場合もある。半径位置及び円周位置をまとめて単に位置と称する場合もある。なお、“トラック(又はシリンダ)”は、ディスクDKの半径方向に区分した複数の領域の内の1つの領域、所定の半径位置におけるヘッドHDの経路、ディスクDKの円周方向に延長するデータ、所定の半径位置のトラック(又はシリンダ)にライトされた1周分のデータ、ディスクDKの所定のトラック(又はシリンダ)にライトされたデータ、ディスクDKの所定のトラック(又はシリンダ)にライトされたデータの一部や、その他の種々の意味で用いる。“セクタ”は、ディスクDKの所定のトラック(又はシリンダ)を円周方向に区分した複数の領域の内の1つの領域、ディスクDKの所定の半径位置における所定の円周位置にライトされたデータ、ディスクDKの所定のトラック(又はシリンダ)の所定のセクタにライトされたデータや、その他の種々の意味で用いる。“トラック(又はシリンダ)の半径方向の幅”を“トラック幅(又はシリンダ幅)”と称する場合もある。“所定のトラック(又はシリンダ)におけるトラック幅の中心位置を通る経路”を“トラックセンタ(又はシリンダセンタ)”と称する。以下、“所定のトラック(又はシリンダ)のトラックセンタ(又はシリンダセンタ)”を単に“トラック(又はシリンダ)”と称する場合もある。
【0011】
ヘッドHDは、ディスクDKに対向している。例えば、ディスクDKの1つの面には、1つのヘッドHDが対向している。ヘッドHDは、スライダを本体として、当該スライダに実装されているライトヘッドWHDとリードヘッドRHDとを備える。ライトヘッドWHDは、ディスクDKにデータをライトする。リードヘッドRHDは、ディスクDKにライトされたデータをリードする。なお、“ライトヘッドWHD”を単に“ヘッドHD”と称する場合もあるし、“リードヘッドRHD”を単に“ヘッドHD”と称する場合もあるし、“ライトヘッドWHD及びリードヘッドRHD”をまとめて“ヘッドHD”と称する場合もある。“ヘッドHDの中心部”を“ヘッドHD”と称し、“ライトヘッドWHDの中心部”を“ライトヘッドWHD”と称し、“リードヘッドRHDの中心部”を“リードヘッドRHD”と称する場合もある。“ライトヘッドWHDの中心部”を単に“ヘッドHD”と称する場合もあるし、“リードヘッドRHDの中心部”を単に“ヘッドHD”と称する場合もある。“ヘッドHDの中心部を所定のトラック(又はシリンダ)のトラックセンタ(又はシリンダセンタ)に位置決めする”ことを“ヘッドHDを所定のトラック(又はシリンダ)に位置決めする”、“ヘッドHDを所定のトラック(又はシリンダ)に配置する”、又は“ヘッドHDを所定のトラック(又はシリンダ)に位置する”等で表現する場合もある。
【0012】
図2は、本実施形態に係るディスクDKに対するヘッドHDの配置の一例を示す模式図である。
図2に示すように、円周方向において、ディスクDKの回転する方向を回転方向と称する。なお、
図2に示した例では、回転方向は、反時計回りで示しているが、逆向き(時計回り)であってもよい。
【0013】
図2に示した例では、ディスクDKは、ディスクDK1、ディスクDK2、…、ディスクDKNを有する。ディスクDK1乃至DKNは、同軸で且つ一方向に間隔を置いて重ねられている。ディスクDK1乃至DKNの径は、同じである。“同じ”、“同一”、“一致”、及び“同等”などの用語は、全く同じという意味はもちろん、実質的に同じであると見做せる程度に異なるという意味を含む。なお、ディスクDK1乃至KNの径は、異なっていてもよい。ディスクDK1は、表面S0及び表面S0の反対側の裏面S1を有する。表面S0は、ユーザデータ領域UA0及びシステムエリアSA0を有する。システムエリアSA0は、ユーザデータ領域UA0の外方向に隣接している。ここで、“隣接”とは、データ、物体、領域、及び空間等が接して並んでいることはもちろん、所定の間隔を置いて並んでいることも含む。裏面S1は、ユーザデータ領域UA1及びシステムエリアSA1を有する。システムエリアSA1は、ユーザデータ領域UA1の外方向に隣接している。以下、ディスクの表面及び裏面を記録面と称する場合もある。
【0014】
ディスクDK2は、表面S2及び表面S2の反対側の裏面S3を有する。表面S2は、裏面S1に対向している。表面S2は、ユーザデータ領域UA2及びシステムエリアSA2を有する。システムエリアSA2は、ユーザデータ領域UA2の外方向に隣接している。裏面S3は、ユーザデータ領域UA3及びシステムエリアSA3を有する。システムエリアSA3は、ユーザデータ領域UA3の外方向に隣接している。
【0015】
ディスクDKNは、表面S(N-1)及び表面S(N-1)の反対側の裏面SNを有する。表面S(N-1)は、ユーザデータ領域UA(N-1)及びシステムエリアSA(N―1)を有する。システムエリアSA(N―1)は、ユーザデータ領域UA(N-1)の外方向に隣接している。裏面SNは、ユーザデータ領域UAN及びシステムエリアSANを有する。システムエリアSANは、ユーザデータ領域UANの外方向に隣接している。
【0016】
図2において、ヘッドHDは、ヘッドHD0、ヘッドHD1、ヘッドHD2、ヘッドHD3、…、ヘッドHD(N-1)、及びヘッドHDNを有する。ヘッドHD0は、表面S0に対向している。ヘッドHD0は、表面S0にデータをライトし、表面S0からデータをリードする。ヘッドHD1は、裏面S1に対向している。ヘッドHD1は、裏面S1にデータをライトし、裏面S1からデータをリードする。ヘッドHD2は、表面S2に対向している。ヘッドHD2は、表面S2にデータをライトし、表面S2からデータをリードする。ヘッドHD3は、裏面S3に対向している。ヘッドHD3は、裏面S3にデータをライトし、裏面S3からデータをリードする。ヘッドHD(N-1)は、表面S(N―1)に対向している。ヘッドHD(N-1)は、表面S(N-1)にデータをライトし、表面S(N-1)からデータをリードする。ヘッドHDNは、裏面SNに対向している。ヘッドHDNは、裏面SNにデータをライトし、裏面SNからデータをリードする。
【0017】
ドライバIC20は、システムコントローラ130(詳細には、後述するMPU60)の制御に従って、SPM12およびVCM14の駆動を制御する。
ヘッドアンプIC(プリアンプ)30は、リードアンプ及びライトドライバ等を備えている。リードアンプは、ディスクDKからリードしたリード信号を増幅して、システムコントローラ130(詳細には、後述するリード/ライト(R/W)チャネル40)に出力する。ライトドライバは、R/Wチャネル40から出力される信号に応じたライト電流をヘッドHDに出力する。
【0018】
揮発性メモリ70は、電力供給が断たれると保存しているデータが失われる半導体メモリである。揮発性メモリ70は、磁気ディスク装置1の各部での処理に必要なデータ等を格納する。揮発性メモリ70は、例えば、DRAM(Dynamic Random Access Memory)、又はSDRAM(Synchronous Dynamic Random Access Memory)である。
【0019】
不揮発性メモリ80は、電力供給が断たれても保存しているデータを記録する半導体メモリである。不揮発性メモリ80は、例えば、NOR型またはNAND型のフラッシュROM(Flash Read Only Memory :FROM)である。
【0020】
バッファメモリ90は、磁気ディスク装置1とホスト100との間で送受信されるデータ等を一時的に記録する半導体メモリである。なお、バッファメモリ90は、揮発性メモリ70と一体に構成されていてもよい。バッファメモリ90は、例えば、DRAM、SRAM(Static Random Access Memory)、SDRAM、FeRAM(Ferroelectric Random Access memory)、又はMRAM(Magnetoresistive Random Access Memory)等である。
【0021】
システムコントローラ(コントローラ)130は、例えば、複数の素子が単一チップに集積されたSystem-on-a-Chip(SoC)と称される大規模集積回路(LSI)を用いて実現される。システムコントローラ130は、リード/ライト(R/W)チャネル40と、ハードディスクコントローラ(HDC)50と、マイクロプロセッサ又はマイクロプロセッシングユニット(MPU)60と、を含む。システムコントローラ130は、例えば、ドライバIC20、ヘッドアンプIC30、揮発性メモリ70、不揮発性メモリ80、バッファメモリ90、及びホストシステム100等に電気的に接続されている。
【0022】
R/Wチャネル40は、後述するMPU60からの指示に応じて、ディスクDKからホスト100に転送されるデータ(以下、リードデータと称する場合もある)とホスト100から転送されるデータ(以下、ライトデータと称する場合もある)との信号処理を実行する。R/Wチャネル40は、ライトデータを変調する回路、又は機能を有している。R/Wチャネル40は、リードデータの信号品質を測定及び復調する回路、又は機能を有している。R/Wチャネル40は、例えば、ヘッドアンプIC30、HDC50、及びMPU60等に電気的に接続されている。
【0023】
HDC50は、データの転送を制御する。例えば、HDC50は、後述するMPU60からの指示に応じて、ホスト100とディスクDKとの間のデータの転送を制御する。HDC50は、例えば、R/Wチャネル40、MPU60、揮発性メモリ70、不揮発性メモリ80、及びバッファメモリ90等に電気的に接続されている。
【0024】
MPU60は、磁気ディスク装置1の各部を制御するメインコントローラである。MPU60は、ドライバIC20を介してVCM14を制御し、ヘッドHDの位置決めを行なうサーボ制御を実行する。MPU60は、ドライバIC20を介してSPM12を制御し、ディスクDKを回転させる。MPU60は、ディスクDKへのデータのライト動作を制御すると共に、ホスト100から転送されるデータ、例えば、ライトデータの保存先を選択する。また、MPU60は、ディスクDKからのデータのリード動作を制御すると共に、ディスクDKからホスト100に転送されるデータ、例えば、リードデータの処理を制御する。また、MPU60は、データを記録する領域を管理する。MPU60は、磁気ディスク装置1の各部に接続されている。MPU60は、例えば、ドライバIC20、R/Wチャネル40、及びHDC50等に電気的に接続されている。
【0025】
MPU60は、リード/ライト制御部610、エラー検出部620、エラー訂正部630、パリティセクタ管理部640、ライトカウント部650、及びリフレッシュ制御部660等を有している。MPU60は、各部、例えば、リード/ライト制御部610、エラー検出部620、エラー訂正部630、パリティセクタ管理部640、ライトカウント部650、及びリフレッシュ制御部660等の処理をファームウェア上で実行する。なお、MPU60は、各部、例えば、リード/ライト制御部610、エラー検出部620、エラー訂正部630、パリティセクタ管理部640、ライトカウント部650、及びリフレッシュ制御部660等を回路として有していてもよい。リード/ライト制御部610、エラー検出部620、エラー訂正部630、パリティセクタ管理部640、ライトカウント部650、及びリフレッシュ制御部660等は、R/Wチャネル40又はHDC50に含まれていてもよい。
【0026】
リード/ライト制御部610は、ホスト100からのコマンド等に従って、ディスクDKからデータをリードするリード処理とディスクDKにデータをライトするライト処理とを制御する。リード/ライト制御部610は、ドライバIC20を介してVCM14を制御し、ヘッドHDをディスクDKの所定の位置に位置決めし、リード処理又はライト処理を実行する。以下、所定の領域にデータを記録若しくはライトすること(ライト処理)、所定の領域からデータを読み出す若しくはリードすること(リード処理)や、所定の領域にヘッドHD等を移動させることを含む意味で“アクセス”という用語を用いる場合もある。
【0027】
リード/ライト制御部610は、例えば、所定のトラック(又はシリンダ)又は所定のセクタから半径方向に所定の間隔(ギャップ)を置いてこのトラック(又はシリンダ)又はこのセクタに隣接する他のトラック(以下、隣接トラック(又は隣接シリンダ)と称する場合もある)又は他のセクタ(以下、隣接セクタと称する場合もある)にデータをライトする通常記録(Conventional Magnetic Recording:CMR)型式でライト処理を実行する。”隣接トラック(又は隣接シリンダ)”は、“所定のトラック(又はシリンダ)の外方向に隣接するトラック(又はシリンダ)”、“所定のトラック(又はシリンダ)の内方向に隣接トラック(又は隣接シリンダ)”、及び“所定のトラック(又はシリンダ)の外方向及び内方向に隣接する複数のトラック(又は複数のシリンダ)”を含む。”隣接セクタ”は、“所定のセクタの外方向に隣接するセクタ”、“所定のセクタの内方向に隣接セクタ”、及び“所定のセクタの外方向及び内方向に隣接する複数のセクタ”を含む。以下、“通常記録型式でデータをライトする“ことを”通常記録する“、”通常記録処理を実行する“、又は単に”ライトする“と称する場合もある。リード/ライト制御部は、データをランダムにライトするランダムライトし、データをシーケンシャルにライトするシーケンシャルライトする。
【0028】
なお、リード/ライト制御部610は、複数のトラック(又は複数のシリンダ)をシーケンシャルにライトする際に1つ前にライトしたトラック(又は複数のシリンダ)の半径方向の一部に次にライトするトラック(又はシリンダ)を重ね書きする瓦記録(Shingled write Magnetic Recording:SMR、又はShingled Write Recording:SWR)型式でライト処理を実行してもよい。以下、”瓦記録型式でデータをライトする“ことを”瓦記録する“、又は”瓦記録処理を実行する“、又は単に”ライトする“と称する場合もある。
【0029】
リード/ライト制御部610は、例えば、所定の領域のTPI(Track Per Inch)を現在設定されたTPIよりも高いTPIになるようにデータ又はトラック(若しくはシリンダ)をライトすることもできるし、所定の領域のTPIを現在設定されたTPIよりも低いTPIになるようにデータ又はトラック(若しくはシリンダ)をライトすることもできる。
【0030】
エラー検出部620は、エラーが生じているデータ、セクタ、及び領域等を検出する。例えば、エラー検出部620は、リードできないデータ(以下、リードエラーデータ又はエラーデータと称する場合もある)又はリードできないセクタ(以下、リードエラーセクタ又はエラーセクタと称する場合もある)を検出する。エラーデータ及びエラーセクタは、例えば、ディフェクト、ヘッドHDのずれ、及び隣接トラック(又は隣接シリンダ)のずれ等に起因して生じ得る。
【0031】
エラー訂正部630は、エラーデータ又はエラーセクタを復旧(訂正、救済、又はエラー訂正)する。エラー訂正部630は、エラーデータ又はエラーセクタを複数回リードするリードリトライを実行する。また、エラー訂正部630は、誤り訂正符号(Error Correction Code)に基づいてエラーデータ又はエラーセクタのエラー(誤り)を訂正する処理(以下、ECC処理又はエラー訂正処理と称する場合もある)を実行する。エラー訂正部630は、所定のトラック(又は所定のシリンダ)のエラーデータ又はエラーセクタに対応するECC(以下、セクタECCと称する場合もある)に基づいて、ECC処理(以下、セクタECC処理と称する場合もある)をこのエラーデータ又はこのエラーセクタに実行する。セクタECC処理は、セクタ単位のエラー訂正又はエラー訂正処理に相当する。
【0032】
エラー訂正部630は、所定のトラック(若しくは所定のシリンダ)又は所定のトラック(若しくは所定のシリンダ)の一部、例えば、所定のトラック(若しくは所定のシリンダ)において円周方向に連続して並ぶ複数のデータ又は複数のセクタに対応するECC(以下、トラックECCと称する場合もある)に基づいて、ECC処理(以下、トラックECC処理と称する場合もある)をこのトラック(若しくは所定のシリンダ)又はこのトラック(若しくは所定のシリンダ)の一部、例えば、このトラックにおいて円周方向に連続して並ぶ複数のデータ又は複数のセクタのエラーデータ又はエラーセクタに実行する。トラックECC処理は、トラック単位のエラー訂正処理又はエラー訂正処理に相当する。ここで、トラック単位とは、物理トラック単位であることに加えて、物理トラック以下の構成される領域単位であることも含んでもよい。例えば、エラー訂正部630は、所定のトラック(若しくは所定のシリンダ)又は所定のトラック(若しくは所定のシリンダ)の一部に対応するパリティデータ、又はパリティセクタに基づいて、このトラック(若しくは所定のシリンダ)又はこのトラック(若しくは所定のシリンダ)の一部のエラーセクタをトラックECC処理する。エラー訂正部630は、例えば、エラーデータ又はエラーセクタに関連する情報(以下、エラーデータ情報又はエラーセクタ情報と称する場合もある)を所定の記録領域、例えば、ディスクDK、揮発性メモリ70、又は不揮発性メモリ80に記録する。
【0033】
パリティセクタ管理部640は、排他的論理和(Exclusive OR:XOR)演算してパリティセクタ(又はパリティデータ)を算出し、パリティセクタ(又はパリティデータ)をライトし、このパリティセクタ(又はパリティデータ)を管理する。
【0034】
パリティセクタ管理部640は、所定のトラック(若しくは所定のシリンダ)をライトする場合、このトラック(若しくはこのシリンダ)のパリティセクタ以外の全てのセクタ(又はデータ)にXOR演算してパリティセクタ(又はパリティデータ)を算出し、算出したパリティセクタ(又はパリティデータ)をライト(又は変更)し、このパリティセクタ(又はパリティデータ)を管理する。また、パリティセクタ管理部640は、所定のトラック(若しくは所定のシリンダ)の一部のセクタ(又はデータ)をライトする場合、一部のセクタをライトするトラック(若しくは所定のシリンダ)をリードし、所定の記録領域、例えば、揮発性メモリ70等で一部のセクタ(又はデータ)に対応するセクタ(又はデータ)を一部のセクタ(又はデータ)に置き換えたトラック(若しくはシリンダ)のパリティセクタ以外の全てのセクタ(又はデータ)にXOR演算してパリティセクタを算出し、一部のセクタ(又はデータ)に置き換えたトラック(若しくはシリンダ)のパリティセクタ以外の全てのセクタと算出したパリティセクタ(又はパリティデータ)とを同じトラック(若しくはシリンダ)にライト(又は変更)し、このパリティセクタ(又はパリティデータ)を管理する。以下、“所定のデータ(以下、更新データと称する場合もある)又は所定のセクタ(以下、更新セクタと称する場合もある)をライトする場合、更新データ又は更新セクタをライトするトラック又はシリンダをリードし、更新データ又は更新セクタに対応するデータ又はセクタを更新データ又は更新セクタに置き換えたこのトラック又はシリンダ(以下、更新トラック又は更新シリンダと称する場合もある)のパリティセクタ以外の全てのセクタ(以下、更新セクタ群と称する場合もある)にXOR演算してパリティセクタ(以下、更新パリティセクタと称する場合もある)を算出し、更新セクタ群と更新パリティセクタと同じトラック又はシリンダにをライトする”ことを“リードモディファイライト”と称する場合もある。以下、説明の便宜上、“パリティセクタ以外のセクタにXOR演算する“ことを”セクタにXOR演算する“と称する場合もある。
【0035】
パリティセクタ管理部640は、所定の領域のデータにXOR演算してパリティセクタを算出し、算出したパリティセクタをディスクDKの所定の領域にライトする。パリティセクタ管理部640は、所定のトラック(若しくは所定のシリンダ)の全てのセクタにXOR演算してパリティセクタを算出し、算出したパリティセクタをこのトラック(若しくはこのシリンダ)にライトする。なお、パリティセクタ管理部640は、所定のトラック(若しくは所定のシリンダ)の一部のセクタにXOR演算してパリティセクタを算出し、算出したパリティセクタをこのトラック(若しくはこのシリンダ)にライトしてもよい。例えば、パリティセクタ管理部640は、所定のトラック(若しくは所定のシリンダ)において無効なセクタ(以下、無効セクタと称する場合もある)以外の全てのセクタ(以下、有効セクタと称する場合もある)にXOR演算してパリティセクタを算出し、算出したパリティセクタをこのトラック(若しくはこのシリンダ)にライトしてもよい。無効セクタは、データの記録等で使用しないセクタ、例えば、エラーセクタに相当する。有効セクタは、データの記録等で使用するセクタに相当する。以下、説明の便宜上、“無効セクタ以外の有効セクタにXOR演算する”ことを“セクタにXOR演算する”と称する場合もある。
【0036】
パリティセクタ管理部640は、各トラック又は各トラックの一部に対応する各パリティセクタがエラー訂正、例えば、トラックECC処理で使用できる有効なパリティセクタ(以下、有効パリティセクタと称する場合もある)であるか、エラー訂正、例えば、トラックECC処理で使用できない無効なパリティセクタ(以下、無効パリティセクタと称する場合もある)であるかを管理する。
【0037】
パリティセクタ管理部640は、所定のトラックの全てのセクタにXOR演算したパリティセクタを有効パリティセクタとして管理する。パリティセクタ管理部640は、このトラックのパリティセクタを有効パリティセクタとして所定の記録領域、例えば、ディスクDK、揮発性メモリ70、又は不揮発性メモリ80に記録する。パリティセクタ管理部640は、有効パリティセクタに基づいてトラックECC処理を実行できる(又は訂正できる)トラック又はシリンダ(以下、訂正可能トラック又は訂正可能シリンダと称する場合もある)を所定の記録領域、例えば、ディスクDK、揮発性メモリ70、又は不揮発性メモリ80に記録する。
【0038】
パリティセクタ管理部640は、所定のトラックにおいてパリティセクタから円周方向に連続して並ぶ少なくとも1つのセクタ、例えば、有効セクタ(以下、後部セクタと称する場合もある)をライトして(又は、上書きして)全ての後部セクタ、例えば、有効セクタにXOR演算したパリティセクタを有効パリティセクタとして管理する。パリティセクタ管理部640は、このトラックのパリティセクタを有効パリティセクタとして所定の記録領域、例えば、ディスクDK、揮発性メモリ70、又は不揮発性メモリ80に記録する。パリティセクタ管理部640は、所定のトラックにおける有効パリティセクタに基づいてトラックECC処理を実行できる(又は訂正できる)後部セクタを所定の記録領域、例えば、ディスクDK、揮発性メモリ70、又は不揮発性メモリ80に記録する。また、パリティセクタ管理部640は、所定のトラックに有効パリティセクタに基づいてトラックECC処理を実行できる(又は訂正できる)後部セクタを含む場合、トラックECC処理を実行できない(又は訂正できない)後部セクタ以外のセクタ(以下、前部セクタと称する場合もある)を所定の記録領域、例えば、ディスクDK、揮発性メモリ70、又は不揮発性メモリ80に記録する。
【0039】
パリティセクタ管理部640は、前部セクタ、例えば、有効セクタ(以下、前部セクタと称する場合もある)をライトした(上書きした)トラックのパリティセクタが前部セクタをライトする前のトラックの全てのセクタにXOR演算した結果に相当するパリティセクタ(以下、前のパリティセクタと称する場合もある)である場合、このパリティセクタを無効パリティセクタとして管理する。パリティセクタ管理部640は、このトラックのパリティセクタを無効パリティセクタとして所定の記録領域、例えば、ディスクDK、揮発性メモリ70、又は不揮発性メモリ80に記録する。パリティセクタ管理部640は、トラックECC処理を実行できない(又は訂正できない)トラック又はシリンダ(以下、訂正不可能トラック又は訂正不可能シリンダと称する場合もある)を所定の記録領域、例えば、ディスクDK、揮発性メモリ70、又は不揮発性メモリ80に記録する。
【0040】
以下、“トラックECC処理を実行できる少なくとも1つのセクタ”を“訂正可能セクタ又はロジカルトラック(Logical Track)”と称する場合もある。また、”トラックECCを実行できない(又は訂正できない)少なくとも1つのセクタ“を”訂正不可能セクタ“と称する場合もある。“訂正可能トラック、訂正可能シリンダ、及び訂正可能セクタ等のトラックECCを実行できる(又は訂正できる)領域“をまとめて”訂正可能領域“と称し、”訂正不可能トラック、訂正不可能シリンダ、及び訂正不可能セクタ等のトラックECC処理を実行できない領域“をまとめて”訂正不可能領域“と称する場合もある。
【0041】
パリティセクタ管理部640は、例えば、ホスト100等からランダムライトを実行するコマンドを受ける度に、同一のユーザゾーン内で、訂正可能領域、及び訂正不可能領域を管理する。ここで、ユーザゾーンは、ユーザデータ領域10UAを半径方向に所定の範囲毎に区分された領域であり、例えば、隣接する2つトラック、1つのトラック、又はユーザデータ領域10UAを半径方向に40分割した領域の内の1つの領域等に相当する。例えば、パリティセクタ管理部640は、ランダムライトを実行する度に、同一のユーザゾーン内で、訂正可能領域と訂正不可能領域とを更新又は変更する。
【0042】
ライトカウント部650は、データをライトした回数(以下、ライト回数又はライトカウントと称する場合もある)をカウントする。ライト回数(又はライトカウント)は、例えば、データをライトすることによりヘッドHDからの漏れ磁束等の影響(Adjacent Track Interference:ATI)を受けた回数に相当する。ライトカウント部650は、ライト回数をテーブルとして所定の記録領域、例えば、ディスクDK、揮発性メモリ70、不揮発性メモリ80、又はバッファメモリ90等に保持していてもよい。
【0043】
ライトカウント部650は、対象とする領域(以下、対象領域と称する場合もある)から半径方向に所定の範囲内に配置された領域(以下、近接領域と称する場合もある)にデータをライトしたライト回数をカウントする。例えば、ライトカウント部650は、対象領域からATIを受ける範囲内に配置された近接領域にデータをライトしたライト回数をカウントする。
【0044】
ライトカウント部650は、対象領域の近接領域にデータをライトした場合、この対象領域に対応するライト回数を所定の値を増加(インクリメント)させる。例えば、ライトカウント部650は、対象領域の外方向及び内方向の近接領域にデータをライトした場合、この対象領域に対応するライト回数を所定の値を増加(インクリメント)させる。例えば、ライトカウント部650は、対象領域の外方向及び内方向の近接領域にデータをライトした場合、この対象領域に対応するライト回数を1増加(インクリメント)させる。
【0045】
ライトカウント部650は、対象領域の半径方向に隣接する領域(以下、隣接領域と称する場合もある)にデータをライトしたライト回数をカウントする。例えば、ライトカウント部650は、対象領域からATIを受ける範囲内に配置された隣接領域にデータをライトしたライト回数をカウントする。
【0046】
ライトカウント部650は、対象領域の隣接領域にデータをライトした場合、対象領域に対応するライト回数を所定の値を増加(インクリメント)させる。例えば、ライトカウント部650は、対象領域の外方向及び内方向の隣接領域にデータをライトした場合、対象領域に対応するライト回数を所定の値を増加(インクリメント)させる。例えば、ライトカウント部650は、対象領域の外方向及び内方向の隣接領域にデータをライトした場合、対象領域に対応するライト回数を1増加(インクリメント)させる。
【0047】
ライトカウント部650は、対象とするトラック(以下、対象トラックと称する場合もある)又は対象とするセクタ(以下、対象セクタと称する場合もある)の半径方向に隣接するトラック(以下、隣接トラックと称する場合もある)又は隣接するセクタ(以下、隣接セクタと称する場合もある)にデータをライトしたライト回数をカウントする。
【0048】
ライトカウント部650は、対象トラック又は対象セクタの隣接トラック又は隣接セクタにデータをライトした場合、対象トラック又は対象セクタに対応するライト回数を所定の値を増加(インクリメント)させる。例えば、ライトカウント部650は、対象トラック又は対象セクタの外方向及び内方向の隣接トラックにデータをライトした場合、対象トラック又は対象セクタに対応するライト回数を所定の値を増加(インクリメント)させる。例えば、ライトカウント部650は、対象トラック又は対象セクタの外方向及び内方向の隣接トラック又は隣接セクタにデータをライトした場合、対象トラック又は対象セクタに対応するライト回数を1増加(インクリメント)させる。
【0049】
リフレッシュ制御部660は、所定の領域、例えば、所定のトラックにライトされたデータと同じデータをこの領域、例えば、所定のトラックを書き直す処理(以下、リフレッシュ処理と称する場合もある)を実行する。リフレッシュ制御部660は、所定の領域に対応するライト回数がリフレッシュ処理を実行するライト回数に相当する閾値(以下、リフレッシュ閾値と称する場合もある)を超えていると判定した場合、この領域にリフレッシュ処理を実行する。リフレッシュ制御部660は、所定の領域に対応するライト回数がリフレッシュ閾値を超えていると判定した場合、この領域の一部にリフレッシュ処理を実行する。言い換えると、リフレッシュ制御部660は、所定の領域に対応するライト回数がリフレッシュ閾値を超えていると判定した場合、この領域に予めフォーマットとして設定された容量以下のデータにリフレッシュ処理を実行する。リフレッシュ制御部660は、所定の領域にリフレッシュ処理を実行した場合、この領域に対応するライト回数をリセットする、例えば、0にする。
【0050】
リフレッシュ制御部660は、対象トラック又は対象セクタに対応するライト回数がこの対象トラック又はこの対象セクタに対応するリフレッシュ閾値を超えたと判定した場合、この対象トラック又はこの対象セクタにリフレッシュ処理を実行する。リフレッシュ制御部660は、対象トラック又は対象セクタに対応するライト回数がこの対象トラック又はこの対象セクタに対応するリフレッシュ閾値を超えたと判定した場合、この対象トラック又はこの対象セクタの一部にリフレッシュ処理を実行する。言い換えると、リフレッシュ制御部660は、対象トラック又は対象セクタに対応するライト回数がこの対象トラック又はこの対象セクタに対応する閾値を超えたと判定した場合、この対象トラック又はこの対象セクタに予めフォーマットとして設定された容量以下のデータにリフレッシュ処理を実行する。
【0051】
リフレッシュ制御部660は、リフレッシュ閾値を変更(又は設定)する。リフレッシュ制御部660は、複数のリフレッシュ閾値を有する。
リフレッシュ制御部660は、訂正可能領域のリフレッシュ閾値を複数のリフレッシュ閾値において現在設定しているリフレッシュ閾値(以下、現在のリフレッシュ閾値と称する場合もある)よりも高いリフレッシュ閾値に変更(又は設定)する。リフレッシュ制御部660は、訂正不可領域のリフレッシュ閾値を複数のリフレッシュ閾値において現在のリフレッシュ閾値よりも低いリフレッシュ閾値に変更(又は設定)する。
【0052】
また、リフレッシュ制御部660は、訂正可能領域のリフレッシュ閾値を複数のリフレッシュ閾値の内の訂正不可領域のリフレッシュ閾値よりも高いリフレッシュ閾値に設定し、訂正不可領域のリフレッシュ閾値を複数のリフレッシュ閾値の内の訂正可能領域のリフレッシュ閾値よりも低いリフレッシュ閾値に設定する。
【0053】
リフレッシュ制御部660は、2つのリフレッシュ閾値、例えば、高リフレッシュ閾値及び低リフレッシュ閾値を有する。なお、リフレッシュ制御部660は、3つ以上のリフレッシュ閾値を有していてもよい。高リフレッシュ閾値は、低リフレッシュ閾値よりも大きく、低リフレッシュ閾値は、高リフレッシュ閾値よりも小さい。リフレッシュ制御部660は、訂正可能領域のリフレッシュ閾値を高リフレッシュ閾値に設定し、訂正不可能領域のリフレッシュ閾値を低リフレッシュ閾値に設定する。リフレッシュ制御部660は、高リフレッシュ閾値を設定した訂正可能領域にリフレッシュ処理を実行する頻度よりも低リフレッシュ閾値を設定した訂正不可能領域にリフレッシュ処理を実行する頻度の方が小さい。言い換えると、リフレッシュ制御部660は、低リフレッシュ閾値を設定した訂正不可能領域にリフレッシュ処理を実行する頻度よりも高リフレッシュ閾値を設定した訂正可能領域にリフレッシュ処理を実行する頻度の方が大きい。ここで、頻度は、例えば、特定の時間に処理を実行する回数に相当する。
【0054】
例えば、リフレッシュ制御部660は、訂正可能トラック又は訂正可能シリンダのリフレッシュ閾値を高リフレッシュ閾値に設定し、訂正不可能トラック又は訂正可能シリンダのリフレッシュ閾値を低リフレッシュ閾値に設定する。
【0055】
例えば、リフレッシュ制御部660は、訂正可能セクタ(又はロジカルトラック)のリフレッシュ閾値を高リフレッシュ閾値に設定し、訂正不可能セクタ(又はロジカルトラック)のリフレッシュ閾値を低リフレッシュ閾値に設定する。
【0056】
リフレッシュ制御部660は、所定のシリンダ(トラック)に対応する複数のヘッドHDにおいて、各ヘッドHDに対応するトラックのリフレッシュ閾値をそれぞれ異なるリフレッシュ閾値に設定してもよい。なお、リフレッシュ制御部660は、所定のシリンダ(トラック)に対応する複数のヘッドHDにおいて、各ヘッドHDに対応するトラックのリフレッシュ閾値を同じリフレッシュ閾値に設定してもよい。
【0057】
例えば、リフレッシュ制御部660は、所定のシリンダ(トラック)に対する複数のヘッドHDによるパフォーマンスを一定に維持する場合、これら複数のヘッドHDの内の少なくとも1つのヘッドHDに対応するシリンダ(トラック)のリフレッシュ閾値を高リフレッシュ閾値に設定し、複数のヘッドHDの内の高リフレッシュ閾値に設定した少なくとも1つのヘッドHDの以外の他のヘッドHDに対応するシリンダ(トラック)のリフレッシュ閾値を低リフレッシュ閾値に設定する。
【0058】
例えば、リフレッシュ制御部660は、所定のシリンダ(トラック)に対する4つのヘッドHDによるパフォーマンスを一定に維持し、且つ4つのヘッドHDにそれぞれ対応する4つのシリンダ(トラック)のリフレッシュ閾値がそれぞれ300回、300回、300回、及び300回である場合、4つのヘッドHDの内の2つのヘッドHDがそれぞれ対応する2つの訂正可能シリンダ(訂正可能トラック)にそれぞれ対応する2つのリフレッシュ閾値をそれぞれ100回増加する。この場合、リフレッシュ制御部660は、4つのヘッドHDの内の訂正可能シリンダ(訂正可能トラック)に対応している2つのヘッドHD以外の残りの2つのヘッドHDがそれぞれ対応する2つのシリンダ(トラック)にそれぞれ対応する2つのリフレッシュ閾値をそれぞれ100回低減する。この場合、4つのヘッドHDによるパフォーマンスを維持したまま、訂正可能シリンダ(訂正可能トラック)に対応していない2つのヘッドHDのTPIを改善することができる。なお、4つのヘッドHDの内の訂正可能シリンダ(訂正可能トラック)に対応している2つのヘッドHD以外の残りの2つのヘッドHDがそれぞれランダムライトされた2つの訂正不可能シリンダ(訂正不可能トラック)に対応している場合、リフレッシュ制御部660は、これら2つのヘッドHDがそれぞれ対応する2つのシリンダ(トラック)にそれぞれ対応する2つのリフレッシュ閾値をそれぞれ300回、300回で維持する。ここで、“所定のトラック、例えば、訂正可能トラック(訂正可能シリンダ)にランダムライトする”ことは、“トラック単位のエラー訂正を実行する単位以下でライトする”ことに相当する。そのため、所定のトラック、例えば、訂正可能トラック(訂正可能シリンダ)にランダムライトすることでこのトラックにおいてトラック単位のエラー訂正が実行不能になり得る。リフレッシュ制御部660は、訂正可能シリンダ(訂正可能トラック)のライト回数が訂正不可能シリンダ(訂正不可能トラック)のリフレッシュ閾値以上である場合、訂正可能シリンダ(訂正可能トラック)にランダムライトされた際にこの訂正可能シリンダ(この訂正可能トラック)が訂正不可能トラックになるため、訂正可能シリンダ(訂正可能トラック)にランダムライトを許可せずに、訂正可能シリンダ(訂正可能トラック)にリードモディファイライトを実行して、訂正可能トラックを維持する。
【0059】
図3は、トラックECC処理の一例を示す模式図である。
図3には、円周方向において、ディスクDKに対してヘッドHDが進む方向、つまり、リード/ライトする方向(以下、進行方向と称する場合もある)を示している。
図3では、進行方向は、後方向(又は、単に、後と称する場合もある)である。なお、進行方向は、前方向(又は、単に、前と称する場合もある)であってもよい。
図3には、トラックTRn-1、トラックTRn、及びトラックTRn+1を示している。
図3において、トラックTRn-1乃至TRn+1は、外方向から内方向に記載の順に並んでいる。トラックTRnは、トラックTRn―1の外方向に隣接し、トラックTRn+1は、トラックTRnの外方向に隣接している。トラックTRn―1は、セクタSc(n―1)0、Sc(n―1)1、Sc(n―1)2、Sc(n―1)3、Sc(n―1)4、Sc(n―1)5、Sc(n―1)6、Sc(n―1)7、Sc(n―1)8、Sc(nー1)9、Sc(n―1)10、Sc(n―1)11、及びパリティセクタPn―1を有している。セクタSc(n―1)0、Sc(n―1)1、Sc(n―1)2、Sc(n―1)3、Sc(n―1)4、Sc(n―1)5、Sc(n―1)6、Sc(n―1)7、Sc(n―1)8、Sc(nー1)9、Sc(n―1)10、Sc(n―1)11、及びパリティセクタPn―1は、進行方向に記載の順に連続してライトされている。パリティセクタPn―1は、セクタSc(n―1)0乃至Sc(n―1)11にXOR演算した結果に相当する。つまり、パリティセクタPn―1は、有効パリティセクタである。トラックTRn―1は、訂正可能トラックに相当する。トラックTRnは、セクタScn0、Scn1、Scn2、Scn3、Scn4、Scn5、Scn6、Scn7、Scn8、Scn9、Scn10、Scn11、及びパリティセクタPnを有している。セクタScn0、Scn1、Scn2、Scn3、Scn4、Scn5、Scn6、Scn7、Scn8、Scn9、Scn10、Scn11、及びパリティセクタPnは、進行方向に記載の順に連続してライトされている。パリティセクタPnは、セクタScn0乃至Scn11にXOR演算した結果に相当する。つまり、パリティセクタPnは、有効パリティセクタである。トラックTRnは、訂正可能トラックに相当する。トラックTRn+1は、セクタSc(n+1)0、Sc(n+1)1、Sc(n+1)2、Sc(n+1)3、Sc(n+1)4、Sc(n+1)5、Sc(n+1)6、Sc(n+1)7、Sc(n+1)8、Sc(n+1)9、Sc(n+1)10、Sc(n+1)11、及びパリティセクタPn+1を有している。セクタSc(n+1)0、Sc(n+1)1、Sc(n+1)2、Sc(n+1)3、Sc(n+1)4、Sc(n+1)5、Sc(n+1)6、Sc(n+1)7、Sc(n+1)8、Sc(n+1)9、Sc(n+1)10、Sc(n+1)11、及びパリティセクタPn+1は、進行方向に記載の順に連続してライトされている。パリティセクタPn+1は、セクタSc(n+1)0乃至Sc(n+1)11にXOR演算した結果に相当する。つまり、パリティセクタPn+1は、有効パリティセクタである。トラックTRn+1は、訂正可能トラックに相当する。例えば、トラックTRnは、高リフレッシュ閾値に設定されている。
【0060】
図3に示した例では、MPU60は、トラックTRnのセクタScn0乃至Scn11内にエラーセクタを検出した場合、このエラーセクタをリードリトライ及びセクタECC処理で訂正できない際に、パリティセクタPnに基づいてトラックECC処理をこのエラーセクタに実行し、このエラーセクタを訂正する。MPU60は、トラックTRn―1及びTRn+1の各セクタをライトした場合、トラックTRnに対応するライト回数をインクリメントする。MPU60は、トラックTRnに対応するライト回数が高リフレッシュ閾値を超えたと判定した場合、トラックTRnにリフレッシュ処理を実行する。
【0061】
図4は、トラックECC処理の一例を示す模式図である。
図4は、
図3に対応している。
図4に示した例では、MPU60は、トラックTRnのセクタScn5、Scn6、及びScn7をランダムに上書きする。MPU60は、トラックTRnを訂正不可能トラックとして所定の記録領域、例えば、揮発性メモリ70、不揮発性メモリ80、又はバッファメモリ90に記録する。例えば、MPU60は、トラックTRnのリフレッシュ閾値を低リフレッシュ閾値に設定する。MPU60は、トラックTRnのセクタScn0乃至Scn11内にエラーセクタを検出した場合、このエラーセクタをリードリトライ及びセクタECC処理で訂正できない際に、トラックECC処理をこのトラックTRnのエラーセクタを実行できない。MPU60は、トラックTRn―1及びTRn+1の各セクタをライトした場合、トラックTRnに対応するライト回数をインクリメントする。MPU60は、トラックTRnに対応するライト回数が低リフレッシュ閾値を超えたと判定した場合、トラックTRnにリフレッシュ処理を実行する。
【0062】
図5は、トラックECC処理の一例を示す模式図である。
図5は、
図3に対応している。
図5に示した例では、MPU60は、トラックTRnの後部セクタScn8、Scn9、Scn10、及びScn11を上書きする。MPU60は、後部セクタScn8乃至Scn11にXOR演算してパリティセクタPnを上書きする。MPU60は、後部セクタScn8乃至Scn11を訂正可能セクタとして所定の記録領域、例えば、揮発性メモリ70、不揮発性メモリ80、又はバッファメモリ90に記録する。MPU60は、前部セクタScn0乃至Scn7を訂正不可能セクタとして所定の記録領域、例えば、揮発性メモリ70、不揮発性メモリ80、又はバッファメモリ90に記録する。MPU60は、後部セクタScn8乃至Scn11のリフレッシュ閾値を高リフレッシュ閾値に設定し、前部セクタScn0乃至Scn7のリフレッシュ閾値を低リフレッシュ閾値に設定する。MPU60は、トラックTRnの後部セクタScn8乃至Scn11内にエラーセクタを検出した場合、このエラーセクタをリードリトライ及びセクタECC処理で訂正できない際に、トパリティセクタPnに基づいてトラックECC処理をこのエラーセクタに実行し、このエラーセクタを訂正する。MPU60は、トラックTRnの前部セクタScn0乃至Scn7内にエラーセクタを検出した場合、このエラーセクタをリードリトライ及びセクタECC処理で訂正できない際に、トラックECC処理をこのトラックTRnのエラーセクタを実行できない。MPU60は、トラックTRn―1のセクタSc(n―1)8乃至Sc(n―1)11及びトラックTRn+1のセクタSc(n+1)8乃至Sc(n+1)11をライトした場合、トラックTRnの後部セクタScn8乃至Scn11に対応するライト回数をインクリメントする。MPU60は、トラックTRnの後部セクタScn8乃至Scn11に対応するライト回数が高リフレッシュ閾値を超えたと判定した場合、後部セクタScn8乃至Scn11にリフレッシュ処理を実行する。MPU60は、トラックTRn―1のセクタSc(n―1)0乃至Sc(n―1)7及びトラックTRn+1のセクタSc(n+1)0乃至Sc(n+1)7をライトした場合、トラックTRnの前部セクタScn0乃至Scn7に対応するライト回数をインクリメントする。MPU60は、トラックTRnの前部セクタScn0乃至Scn7に対応するライト回数が低リフレッシュ閾値を超えたと判定した場合、前部セクタScn0乃至Scn7にリフレッシュ処理を実行する。MPU60は、前部セクタScn0乃至Scn7にリフレッシュ処理を実行する頻度よりも、後部セクタScn8乃至Scn11にリフレッシュ処理を実行する頻度が大きい。
【0063】
図6は、本実施形態に係るリフレッシュ閾値LTH及びHTHの一例を示す模式図である。
図6において、横軸は、ライト回数(回)を示し、縦軸は、アンリカバリエラーレート(Unrecoverable Error Rate)を示している。
図6の縦軸において、アンリカバリエラーレートは、矢印の先端の方向に向かうに従って大きくなり、矢印の先端と反対側に向かうに従って小さくなる。
図6の横軸において、ライト回数は、矢印の先端の方向に向かうに従って大きくなり、矢印の先端と反対側に向かうに従って小さくなる。
図6の横軸には、低リフレッシュ閾値LTHと、高リフレッシュ閾値HTHとを示している。
図6には、訂正不可能領域に対応するアンリカバリエラーレートの変化(以下、アンリカバリエラーレートの変化と称する場合もある)ERL1と、訂正可能領域に対応するアンリカバリエラーレートの変化(以下、アンリカバリエラーレートの変化と称する場合もある)ERL2と、を示している。
図6のアンリカバリエラーレートの変化ERL1とアンリカバリエラーレートの変化ERL2とに示すように、訂正可能領域は、訂正不可能領域よりもライト回数に対するアンリカバリエラーレートが低下している。
【0064】
図6に示した例では、MPU60は、訂正可能領域のリフレッシュ閾値を高リフレッシュ閾値に設定し、訂正不可能領域のリフレッシュ閾値を低リフレッシュ閾値に設定する。MPU60は、訂正不可能領域に対応するヘッドHDのTPIを高いTPIに設定する。MPU60は、訂正可能領域に対応するライト回数が高リフレッシュ閾値を超えていると判定した場合、訂正可能領域にリフレッシュ処理を実行する。MPU60は、訂正不可能領域に対応するライト回数が低リフレッシュ閾値を超えていると判定した場合、訂正不可能領域にリフレッシュ処理を実行する。MPU60は、訂正可能領域にリフレッシュ処理を実行する頻度よりも、訂正不可能領域にリフレッシュ処理を実行する頻度が大きい。
【0065】
図7は、トラックECC処理を実行しないリード処理によるライト回数に対するエラーカウントの変化の測定値の一例を示す模式図である。
図7において、横軸は、ライト回数(回)を示し、縦軸は、リード時にエラーが生じた回数に相当するエラーカウント(回)を示している。
図7の横軸において、ライト回数は、大の矢印の先端側に進むに従って大きくなり、小の矢印の先端側に進むに従って小さくなる。
図7の縦軸において、エラーカウントは、大の矢印の先端側に進むに従って大きくなり、小の矢印の先端側に進むに従って小さくなる。
図7には、複数のヘッドHD(HD0、HD1、HD2、HD3、HD4、HD5、HD6、HD7、HD8、HD9、HD10、HD11、HD12、HD13,HD14、HD15、HD16、及びHD17)にそれぞれに対応するトラックECC処理を実行しない通常のリード処理によるライト回数に対するエラーカウントの変化(以下、単に、エラーカウントの変化と称する場合もある)を示している。
【0066】
図7に示した例では、MPU60は、複数のヘッドHDでそれぞれに対応する複数のディスクDKの面のシリンダのエラーセクタを検出した場合、エラーセクタにトラックECC処理を実行せずにこれらのヘッドHDでこのシリンダをリードする。
【0067】
図8は、トラックECC処理を実行したリード処理によるライト回数に対するエラーカウントの変化の測定値の一例を示す模式図である。
図8は、
図7に対応している。
図8に示した例では、MPU60は、複数のヘッドHDでそれぞれに対応する複数のディスクDKの面のシリンダのエラーセクタを検出した場合、エラーセクタにトラックECC処理を実行してこれらのヘッドHDでこのシリンダをリードする。
【0068】
複数のヘッドHDで複数のディスクDKの面の所定のシリンダにトラックECC処理を実行したリード処理を実行した場合の複数のヘッドHDに対応する複数のエラーレートは、複数のヘッドHDで複数のディスクDKの面の所定のシリンダにトラックECCを実行しないリード処理を実行した場合の複数のヘッドHDに対応する複数のエラーレートよりもほぼ良好である。そのため、訂正可能領域に対応するリフレッシュ閾値は、現在のリフレッシュ閾値よりも大きくすることができる。訂正可能領域に対応するリフレッシュ閾値を大きくする場合、パフォーマンスを維持するために、訂正不可能領域に対応するリフレッシュ閾値を小さくすることでTPIを高める。
【0069】
図7及び
図8から、MPU60は、トラックECC処理を実行しないリード処理と比較してトラックECC処理を実行したリード処理では、5つのヘッドHDが、同じエラーカウントに到達するために100回以上ライト回数を大きくし、残りの13つのヘッドHDが、同じエラーカウントに到達するためにライト回数を小さくすることができる。言い換えると、
図7及び
図8から、MPU60は、トラックECC処理を実行しないリード処理と比較してトラックECC処理を実行したリード処理では、5つのヘッドHDにそれぞれ対応する5つのディスクDKの面のシリンダのリフレッシュ閾値を高リフレッシュ閾値に設定し、残りの13つのヘッドHDにそれぞれ13つのディスクDKの面の前述のシリンダのリフレッシュ閾値を低リフレッシュ閾値に設定することができる。この場合、ADC(areal density capability)を0.5%程度改善することが可能である。
【0070】
図9は、本実施形態に係るリフレッシュ閾値の設定方法の一例を示すフローチャートである。
MPU60は、所定の領域が訂正可能領域であるか訂正可能領域でないかを判定する(B901)。言い換えると、MPU60は、所定の領域が訂正可能領域であるか訂正不可能領域であるかを判定する。例えば、MPU60は、所定のトラックが訂正可能トラックであるか訂正不可能トラックであるかを判定する。例えば、MPU60は、所定のセクタが訂正可能セクタであるか訂正不可脳セクタであるかを判定する。所定の領域が訂正可能領域であると判定した場合(B901のYES)、MPU60は、この訂正可能領域のリフレッシュ閾値を高リフレッシュ閾値に設定し(B902)、処理を終了する。言い換えると、MPU60は、この訂正可能トラック(又はこの訂正可能シリンダ)のリフレッシュ閾値を高リフレッシュ閾値に設定する。MPU60は、この訂正可能セクタのリフレッシュ閾値を高リフレッシュ閾値に設定する。
【0071】
所定の領域が訂正不可能領域であると判定した場合(B901のNO)、MPU60は、この訂正不可能領域のリフレッシュ閾値を低リフレッシュ閾値に設定し(B903)、処理を終了する。言い換えると、MPU60は、この訂正不可能トラック(又はこの訂正不可能シリンダ)のリフレッシュ閾値を低リフレッシュ閾値に設定する。MPU60は、この訂正不可能セクタのリフレッシュ閾値を低リフレッシュ閾値に設定する。
【0072】
図10は、本実施形態に係る訂正可能領域のライト処理の一例を示すフローチャートである。
MPU60は、訂正可能領域にデータをライトするライトコマンドを受ける(B1001)。例えば、MPU60は、訂正可能トラック(又は訂正可能シリンダ)にデータをライトするライトコマンドを受ける。MPU60は、訂正可能領域のライト回数が低リフレッシュ閾値よりも大きいか低リフレッシュ閾値以下であるかを判定する(B1002)。例えば、MPU60は、訂正可能トラック(又は訂正可能シリンダ)のライト回数が低リフレッシュ閾値よりも大きいか低リフレッシュ閾値以下であるかを判定する。訂正可能領域のライト回数が低リフレッシュ閾値以下であると判定した場合(B1002のNO)、MPU60は、訂正可能領域にデータをライトし(B1002)、処理を終了する。例えば、訂正可能トラックの低リフレッシュ閾値以下であると判定した場合、MPU60は、訂正可能トラックにデータをライトし、処理を終了する。
【0073】
訂正可能領域のライト回数が低リフレッシュ閾値よりも大きいと判定した場合(B1002のYES)、MPU60は、訂正可能領域にランダムライトを許可せずに、リードモディファイライトを実行し(B1003)、処理を終了する。例えば、訂正可能トラック(又は訂正可能シリンダ)のライト回数が低リフレッシュ閾値よりも大きいと判定した場合、MPU60は、訂正可能トラック(又は訂正可能シリンダ)にランダムライトを許可せずに、リードモディファイライトを実行する。例えば、訂正可能トラック(又は訂正可能シリンダ)のライト回数が低リフレッシュ閾値よりも大きいと判定した場合、MPU60は、訂正可能トラックをリードし、ライトコマンドでライトを指示されたデータを訂正可能トラック(又は訂正可能シリンダ)の対応するデータと入れ替えた更新トラック(又は更新シリンダ)をライトし、更新トラック(又は更新シリンダ)の全ての更新セクタ群にXOR演算して更新パリティセクタを算出し、更新セクタ群と更新パリティセクタとを同じトラック又はシリンダにライトし、処理を終了する。
【0074】
本実施形態によれば、磁気ディスク装置1は、複数のヘッドHDのそれぞれに対応する複数のディスクDKの面の各シリンダに対応するリフレッシュ閾値を変更する。磁気ディスク装置1は、高リフレッシュ閾値及び低リフレッシュ閾値を有している。磁気ディスク装置1は、訂正可能領域のリフレッシュ閾値を高リフレッシュ閾値に設定し、訂正不可能領域のリフレッシュ閾値を低リフレッシュ閾値に設定する。磁気ディスク装置1は、高リフレッシュ閾値に設定した訂正可能領域にリフレッシュ処理を実行する頻度よりも低リフレッシュ閾値に設定した訂正不可能領域にリフレッシュ処理を実行する頻度が小さい。磁気ディスク装置1は、訂正可能領域にデータをライトする際にこの訂正可能領域のライト回数が低リフレッシュ閾値よりも大きい場合、この訂正可能領域にリードモディファイライトを実行する。そのため、磁気ディスク装置1は、TPIを向上することができる。したがって、磁気ディスク装置1は、記録密度を向上することができる。
【0075】
いくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
以下に、本願出願の当初の特許請求の範囲に記載された発明を付記する。
[1]ディスクと、
前記ディスクに対してデータをライトし、前記ディスクからデータをリードするヘッドと、
第1パリティセクタに基づいてトラック単位のエラー訂正処理を実行できる前記第1パリティセクタから前記ディスクの円周方向に連続する少なくとも1つの第1セクタ及び前記第1パリティセクタを含む第1セクタ群とトラック単位のエラー訂正処理を実行できない前記円周方向に連続する少なくとも1つの第2セクタを含む第2セクタ群とで異なるトラックの書き直し処理を実行する書き直し閾値を設定し、前記第1セクタ群と前記第2セクタ群とを異なる頻度で書き直すコントローラと、を備える磁気ディスク装置。
[2]前記コントローラは、前記第1セクタ群に第1書き直し閾値を設定し、前記第1書き直し閾値よりも小さい第2書き直し閾値を設定する、[1]に記載の磁気ディスク装置。
[3]前記コントローラは、前記第1セクタ群を前記書き直し処理を実行する第1頻度よりも小さい第2頻度で前記第2セクタ群を前記書き直し処理を実行する、[2]に記載の磁気ディスク装置。
[4]前記コントローラは、前記第1セクタ群に対応する第1ライト回数が前記第2書き直し閾値よりも大きい場合、前記第1セクタ群にランダムライトを実行しない、[2]に記載の磁気ディスク装置。
[5]前記コントローラは、前記第1ライト回数が前記第2書き直し閾値よりも大きく、且つ前記第1セクタ群に第1データをランダムライトするコマンドを受けた場合、前記第1セクタ群をリードし、前記第1セクタに対応する第2データを前記第1データに置き換え、前記第1データをXOR演算して第2パリティセクタを算出し、前記第1データ及び前記第2パリティセクタを同じトラックにライトする、[4]に記載の磁気ディスク装置。
[6]前記第1セクタ群及び前記第2セクタ群は、同じトラックに配置される、[1]乃至[5]のいずれか1に記載の磁気ディスク装置。
[7]第1面と前記第1面と異なる第2面とを有するディスクと、
前記第1面に対してデータをライトし、前記第1面からデータをリードする第1ヘッドと、
前記第2面に対してデータをライトし、前記第2面からデータをリードする第1ヘッドと、
トラック単位のエラー訂正処理を実行できる前記第1面の第1シリンダに対応するトラックの書き直し処理を実行する書き直し閾値を第1書き直し閾値に設定し、トラック単位のエラー訂正処理を実行できない前記第2面の前記第1シリンダに対応する前記書き直し閾値を前記第1書き直し閾値よりも小さい第2書き直し閾値に設定する、磁気ディスク装置。
[8]ディスクと、前記ディスクに対してデータをライトし、前記ディスクからデータをリードするヘッドと、を備える磁気ディスク装置に適用されるライト処理方法であって、
第1パリティセクタに基づいてトラック単位のエラー訂正処理を実行できる前記第1パリティセクタから前記ディスクの円周方向に連続する少なくとも1つの第1セクタ及び前記第1パリティセクタを含む第1セクタ群とトラック単位のエラー訂正処理を実行できない前記円周方向に連続する少なくとも1つの第2セクタを含む第2セクタ群とで異なるトラックの書き直し処理を実行する書き直し閾値を設定し、
前記第1セクタ群と前記第2セクタ群とを異なる頻度で書き直す、リード/ライト処理方法。
【符号の説明】
【0076】
1…磁気ディスク装置、DK…磁気ディスク、UA…ユーザデータ領域、SA…システムエリア、12…スピンドルモータ(SPM)、13…アーム、14…ボイスコイルモータ(VCM)、16…アクチュエータ、HD…ヘッド、WHD…ライトヘッド、RHD…リードヘッド、20…ドライバIC、30…ヘッドアンプIC、40…リード/ライト(R/W)チャネル、50…ハードディスクコントローラ(HDC)、60…マイクロプロセッサ(MPU)、70…揮発性メモリ、80…不揮発性メモリ、90…バッファメモリ、100…ホストシステム(ホスト)、130…システムコントローラ。