以下、実施の形態について図面を参照して説明する。なお、図面は、一例であって、発明の範囲を限定するものではない。
(第1実施形態)
図1は、第1実施形態に係る磁気ディスク装置1の構成を示すブロック図である。
磁気ディスク装置1は、後述するヘッドディスクアセンブリ(HDA)と、ドライバIC20と、ヘッドアンプ集積回路(以下、ヘッドアンプIC、又はプリアンプ)30と、揮発性メモリ110と、不揮発性メモリ120と、バッファメモリ(バッファ)130と、1チップの集積回路であるシステムコントローラ150とを備える。また、磁気ディスク装置1は、ホストシステム(以下、単に、ホストと称する)200と接続される。例えば、磁気ディスク装置1は、複数のストリームデータを並行して記録するための磁気ディスク装置である。以下、“複数のストリームデータ”を“マルチストリーム”と称する場合もある。
HDAは、磁気ディスク(以下、ディスクと称する)10と、スピンドルモータ(以下、SPMと称する)12と、ヘッド15を搭載しているアーム13と、ボイスコイルモータ(以下、VCMと称する)14とを有する。ディスク10は、SPM12に取り付けられ、SPM12の駆動により回転する。アーム13及びVCM14は、アクチュエータを構成している。アクチュエータは、VCM14の駆動により、アーム13に搭載されているヘッド15をディスク10の所定の位置まで移動制御する。ヘッド15は、VCM14の回転軸を中心として円弧軌道の内のディスク10に重なる範囲を移動する。ディスク10およびヘッド15は、それぞれ、2つ以上設けられていてもよい。
ディスク10は、そのデータをライト可能な領域に、ユーザから利用可能なユーザデータ領域10aと、ホスト等から転送されたデータ(又はコマンド)をユーザデータ領域10aの所定の領域にライトする前に一時的に保持するメディアキャッシュ(又は、メディアキャッシュ領域と称する場合もある)10bと、システム管理に必要な情報をライトするシステムエリア10cとが割り当てられている。ユーザデータ領域10aは、ホスト200等から転送されるユーザデータがライトされる。システムエリア10cは、ディフェクトマップ、メディアキャッシュ10bの管理テーブル、及びユーザデータの管理テーブル等の管理情報がライトされる。以下、ディスク10の内周から外周へ向かう方向、又はディスク10の外周から内周へ向かう方向を半径方向と称する。半径方向において、内周から外周へ向かう方向を外方向(外側)と称し、外周から内周へ向かう方向を内方向(内側)と称する。ディスク10の半径方向に直交する方向を円周方向と称する。円周方向は、ディスク10の円周に沿った方向に相当する。また、ディスク10の半径方向の所定の位置を半径位置と称し、ディスク10の円周方向の所定の位置を円周位置と称する場合もある。半径位置及び円周位置をまとめて単に位置と称する場合もある。ディスク10は、半径方向の所定の範囲毎に複数の領域(以下、ゾーン、ゾーン領域、又はサブ領域と称する場合もある)に区分される。サブ領域は、複数のトラックを含む。例えば、複数のトラックは、ディスク10に同心円状に配置される。なお、複数のトラックは、ディスク10に同心円状に配置されていなくともよい。トラックは、複数のセクタを含む。また、ディスク10を半径方向に区分した領域を半径領域と称する場合もある。半径領域は、ゾーン(ゾーン領域)、サブ領域、及びトラック等を含む。なお、“トラック”は、ディスク10の半径方向に区分した複数の領域の内の1つの領域、所定の半径位置におけるヘッド15の経路、ディスク10の円周方向に延長するデータ、所定の半径位置のトラックにライトされた1周分のデータ、トラックにライトされたデータ、トラックにライトされたデータの一部や、その他の種々の意味で用いる。“セクタ”は、トラックを円周方向に区分した複数の領域の内の1つの領域、ディスク10の所定の位置にライトされたデータ、セクタにライトされたデータや、その他の種々の意味で用いる。“ディスク10にライトしたトラック”を“ライトトラック”と称し、“ディスク10からリードするトラック”を“リードトラック”と称する場合もある。“ライトトラック”を単に“トラック”と称する場合もあるし、“リードトラック”を単に“トラック”と称す場合もあるし、“ライトトラック”及び“リードトラック”をまとめて“トラック”と称する場合もある。“トラックの半径方向の幅”を“トラック幅”と称する場合もある。“ライトトラックの半径方向の幅”を“ライトトラック幅”と称し、“リードトラックの半径方向の幅”を“リードトラック幅”と称する場合もある。“ライトトラック幅”を単に“トラック幅”と称し、“リードトラック幅”を単に“トラック幅”と称し、“ライトトラック幅及びリードトラック幅”をまとめて単に“トラック幅”と称する場合もある。“所定のトラックにおけるトラック幅の中心位置を通る経路”を“トラックセンタ”と称する。“所定のライトトラックにおけるライトトラック幅の中心位置を通る経路”を“ライトトラックセンタ”と称し、“リードトラックのリードトラック幅の中心位置を通る経路”を“リードトラックセンタ”と称する場合もある。“ライトトラックセンタ”を単に“トラックセンタ”と称し、“リードトラックセンタ”を単に“トラックセンタ”と称し、“ライトトラックセンタ及びリードトラックセンタ”をまとめて単に“トラックセンタ”と称する場合もある。
ディスク10には、所定のトラックの半径方向に隣接するトラック(以下、隣接トラックと称する場合もある)をこの所定のトラックから半径方向に所定の間隔を空けてライトする通常記録(Conventional Magnetic Recording : CMR)型式でデータをライトする領域(以下、通常記録領域と称する場合もある)と所定のトラックの半径方向の一部に次にライトするトラックを重ね書きする瓦記録(Shingled Write Magnetic Recording : SMR、又はShingled Write Recording : SWR)型式でデータをライトする領域(以下、瓦記録領域と称する場合もある)とが設定(又は配置)される。“隣接”という用語は、データ、物体、領域及び空間等が接して並んでいることはもちろん、所定の間隔を置いて並んでいることも含む意味で用いる場合もある。瓦記録領域のトラック密度(Track Per Inch:TPI)は、重ね書きされていない記録領域、例えば、通常記録領域のトラック密度よりも高くなる。瓦記録領域は、半径方向において一方向に連続的に重ね書きされた複数のトラックを含む領域又は半径方向において一方向に連続的に複数のトラックをライトする領域(以下、バンド、バンド領域、物理バンドと称する場合もある)を有する。半径方向で隣接する2つのバンド領域は、互いに間隔(ギャップ)を空けて配置される。また、各バンド領域は、例えば、同じ数(以下、トラック数と称する場合もある)のトラックを有する。つまり、各バンド領域は、同じ数(以下、セクタ数と称する場合もある)のセクタを有する。“同じ”、“同一”、“一致”、及び“同等”などの用語は、全く同じという意味はもちろん、実質的に同じであると見做せる程度に異なるという意味を含む。なお、各バンド領域は、例えば、異なるトラック数のトラックを有していてもよい。つまり、各バンド領域は、異なるセクタ数のセクタを有していてもよい。以下、“通常記録型式でデータをライトする”ことを単に“通常記録”又は“通常記録処理”と称し、“瓦記録型式でデータをライトする”ことを単に“瓦記録”又は“瓦記録処理”と称する場合もある。
ヘッド15は、スライダを本体として、当該スライダに実装されているライトヘッド15Wとリードヘッド15Rとを備える。ライトヘッド15Wは、ディスク10にデータをライトする。リードヘッド15Rは、ディスク10にライトされたデータをリードする。なお、“ライトヘッド15W”を単に“ヘッド15”と称する場合もあるし、“リードヘッド15R”を単に“ヘッド15”と称する場合もあるし、“ライトヘッド15W及びリードヘッド15R”をまとめて“ヘッド15”と称する場合もある。“ヘッド15の中心部”を“ヘッド15”と称し、“ライトヘッド15Wの中心部”を“ライトヘッド15W”と称し、“リードヘッド15Rの中心部”を“リードヘッド15R”と称する場合もある。“ライトヘッド15Wの中心部”を単に“ヘッド15”と称する場合もあるし、“リードヘッド15Rの中心部”を単に“ヘッド15”と称する場合もある。“ヘッド15の中心部を所定のトラックのトラックセンタに位置決めする”ことを“ヘッド15を所定のトラックに位置決めする”、“ヘッド15を所定のトラックに配置する”、又は“ヘッド15を所定のトラックに位置する”等で表現する場合もある。
図2は、本実施形態に係るディスク10の一例を示す模式図である。図2に示すように、円周方向において、ディスク10の回転する方向を回転方向と称する。なお、図2に示した例では、回転方向は、反時計回りで示しているが、逆向き(時計回り)であってもよい。図2において、ディスク10は、内方向に位置する内周領域IRと、外方向に位置する外周領域ORと、内周領域IR及び外周領域ORの間に位置する中周領域MRとに区分されている。例えば、内周領域IRは、ディスク10の最内周の円周位置からこの最内周の円周位置から外方向に所定の距離離れた円周位置までの半径領域に相当する。例えば、外周領域ORは、ディスク10の最外周の円周位置からこの最外周の円周位置から内方向に所定の距離離れた円周位置までの半径領域に相当する。
ディスク10は、複数のサーボデータ領域SVを有している。以下、サーボデータ領域SVをサーボパターンSVと称する場合もある。複数のサーボデータ領域SVは、複数のトラックに跨ってディスク10の半径方向に放射状に延出し、円周方向に所定の間隔を空けて離散的に配置されている。サーボデータ領域SVは、半径方向に連続して配置されている複数のサーボセクタを有している。サーボセクタは、ヘッド15をディスク10の所定の半径位置、例えば、所定のトラックに位置決めするためのサーボデータを含んでいる。円周方向で連続して並んでいる2つのサーボデータ領域SVの間には、ユーザデータ等をライトする領域(以下、データ領域と称する場合もある)が配置されている。なお、サーボデータ領域SVは、ディスク10の内周から外周まで1本のスパライス状のパターンであってもよい。
図2に示した例では、ディスク10において、内方向から外方向に向かって、ユーザデータ領域10a、メディアキャッシュ10b、及びシステムエリア10cが並んでいる。ユーザデータ領域10aは、内周領域IRから外周領域ORに亘って配置されている。ユーザデータ領域10aは、瓦記録領域に相当する。ディスク10のユーザデータ領域10aは、半径方向において複数のサブ領域SBRに区分されている。サブ領域SBRは、少なくとも1つのバンド領域を含む。ユーザデータ領域10aの各物理アドレス、例えば、各セクタには、論理アドレス、例えば、LBA(Logical block Address)が割り当てられる。メディアキャッシュ10bは、ユーザデータ領域10aの外方向に隣接している。メディアキャッシュ10bは、外周領域ORに配置されている。メディアキャッシュ10bは、通常記録領域に相当する。システムエリア10cは、メディアキャッシュ10bの外方向に隣接している。なお、メディアキャッシュ10bは、内周領域IR又は中周領域MRに位置していてもよい。メディアキャッシュ10bは、ユーザデータ領域10a中に配置されていてもよい。また、メディアキャッシュ10bは、外周領域OR、中周領域MR、及び内周領域IRに分散して位置していてもよい。システムエリア10cは、外周領域ORに配置されている。システムエリア10cは、通常記録領域に相当する。
ドライバIC20は、システムコントローラ150(詳細には、後述するCPU50)の制御に従って、SPM12およびVCM14の駆動を制御する。
ヘッドアンプIC(プリアンプ)30は、リードアンプ及びライトドライバ等を備えている。リードアンプは、ディスク10からリードしたリード信号を増幅して、システムコントローラ150(詳細には、後述するリード/ライト(R/W)チャネル60)に出力する。ライトドライバは、R/Wチャネル60から出力される信号に応じたライト電流をヘッド15に出力する。
揮発性メモリ110は、電力供給が断たれると保存しているデータが失われる半導体メモリである。揮発性メモリ110は、磁気ディスク装置1の各部での処理に必要なデータ等を格納する。揮発性メモリ110は、例えば、DRAM(Dynamic Random Access Memory)、又はSDRAM(Synchronous Dynamic Random Access Memory)である。
不揮発性メモリ120は、電力供給が断たれても保存しているデータを記録する半導体メモリである。不揮発性メモリ120は、例えば、NOR型またはNAND型のフラッシュROM(Flash Read Only Memory :FROM)である。
バッファメモリ130は、磁気ディスク装置1とホスト200との間で送受信されるデータ等を一時的に記録する半導体メモリである。なお、バッファメモリ130は、揮発性メモリ110と一体に構成されていてもよい。バッファメモリ130は、例えば、DRAM、SRAM(Static Random Access Memory)、SDRAM、FeRAM(Ferroelectric Random Access memory)、又はMRAM(Magnetoresistive Random Access Memory)等である。
システムコントローラ(コントローラ)150は、例えば、複数の素子が単一チップに集積されたSystem-on-a-Chip(SoC)と称される大規模集積回路(LSI)を用いて実現される。システムコントローラ150は、CPUバス40と、中央処理装置(Central Processing Unit:CPU)又は、マイクロプロセッサ若しくはマイクロプロセッシングユニット(MPU)50と、リード/ライト(R/W)チャネル60と、ゲートアレイ70と、ハードディスクコントローラ(HDC)80と、を含む。CPU50、リード/ライト(R/W)チャネル60、ゲートアレイ70、及びハードディスクコントローラ(HDC)80は、それぞれ、CPUバス40を介して互いに電気的に接続されている。言い換えると、CPU50、リード/ライト(R/W)チャネル60、ゲートアレイ70、及びハードディスクコントローラ(HDC)80は、それぞれ、CPUバス40に接続されている。システムコントローラ150は、例えば、ドライバIC20、ヘッドアンプIC30、揮発性メモリ110、不揮発性メモリ120、バッファメモリ130、及びホスト200等に電気的に接続されている。
CPUバス40は、CPU50、リード/ライト(R/W)チャネル60、ゲートアレイ70、及びハードディスクコントローラ(HDC)80、揮発性メモリ110、及び不揮発性メモリ120等に電気的に接続されている。
CPU50は、磁気ディスク装置1の各部を制御するメインコントローラである。CPU50は、ドライバIC20を介して、SPM12の起動、停止、及び回転速度の維持の制御を実行する。CPU50は、ドライバIC20を介してVCM14を制御し、ヘッド15の位置決めを実行する。CPU50は、SPM12が定常回転状態である場合にディスク10の所定の位置にヘッド15を位置決めする。CPU50は、ディスク10へのデータのライト動作を制御すると共に、ホスト200から転送されるライトデータの保存先を選択する。また、CPU50は、ディスク10からのデータのリード動作を制御すると共に、ディスク10からホスト200に転送されるリードデータの処理を制御する。また、CPU50は、データを記録する領域を管理する。CPU50は、磁気ディスク装置1の各部に接続されている。CPU50は、例えば、ドライバIC20及びヘッドアンプIC30等に接続されている。CPU50は、CPUバス40を介して、R/Wチャネル60、ゲートアレイ70、HDC80、揮発性メモリ110、及び不揮発性メモリ120等に電気的に接続されている。例えば、CPU50は、R/Wチャネル60、ゲートアレイ70、及びHDC80等の制御用のレジスタが割り当てられたメモリ(又はメモリ空間)を有する。CPU50は、例えば、このメモリに割り当てられたR/Wチャネル60、ゲートアレイ70、及びHDC80等の制御用のレジスタに対して記録又は読み出しを実行することでR/Wチャネル60、ゲートアレイ70、及びHDC80等を制御する。また、CPU50は、磁気ディスク装置1の各部、例えば、R/Wチャネル60、ゲートアレイ70、及びHDC80等を回路により制御してもよいし、磁気ディスク装置1の各部、例えば、R/Wチャネル60、ゲートアレイ70、及びHDC80等をファームウェアで制御してもよい。
R/Wチャネル60は、CPU50からの指示に応じて、リードデータ及びライトデータの信号処理を実行する。R/Wチャネル60は、ライトデータを変調する回路、又は機能を有している。また、R/Wチャネル60は、リードデータの信号品質を測定する回路、又は機能を有している。R/Wチャネル60は、例えば、ヘッド15の位置決め処理に必要な信号処理を実行するサーボブロック610と、リードデータ及びライトデータの信号処理を実行するリード/ライトブロック620とを有する。R/Wチャネル60は、リード処理時に、ヘッドアンプIC30によって増幅されたアナログ信号(リードデータ又はリード信号)をサーボ信号(リードデータ又はリード信号)及びデータ信号(リードデータ又はリード信号)に分離する。リード/ライトブロック620は、データ信号に復号化処理を実行し、復号化処理を実行したデータ信号をHDC80に出力する。R/Wチャネル60は、ライト処理時に、HDC80から入力されたライトデータに符号化処理を実行し、符号化処理を実行したライトデータをヘッドアンプIC30に出力する。R/Wチャネル60は、例えば、ヘッドアンプIC30、ゲートアレイ70、及びHDC80等に電気的に接続されている。R/Wチャネル60は、CPUバス40を介して、CPU50、ゲートアレイ70、HDC80、揮発性メモリ110、及び不揮発性メモリ120等に電気的に接続されている。
ゲートアレイ70は、CPU50からの指示に応じて、磁気ディスク装置1の各部を制御するための信号を生成する。例えば、ゲートアレイ70は、リード処理時に、R/Wチャネル60から入力された復号化処理を実行したリードデータを処理してホスト200に転送するデータを生成させる制御信号を生成し、生成した制御信号をHDC80に出力する。ゲートアレイ70は、ライト処理時に、ライトデータをR/Wチャネル60に出力させる制御信号を生成し、生成した制御信号をHDC80に出力する。ゲートアレイ70は、例えば、R/Wチャネル60及びHDC80等に電気的に接続されている。ゲートアレイ70は、CPUバス40を介して、CPU50、R/Wチャネル60、HDC80、揮発性メモリ110、及び不揮発性メモリ120等に電気的に接続されている。
HDC80は、CPU50からの指示及びゲートアレイ70からの制御信号等に応じて、ホスト200とR/Wチャネル60との間のデータ転送を制御する。HDC80は、ホストブロック810、バッファブロック820、及びリード/ライトブロック830等を有する。ホストブロック810は、ホスト200とのインターフェースを制御する。バッファブロック820は、バッファ130を制御する。リード/ライトブロック830は、リード処理及びライト処理を制御する。HDC80は、リード処理時に、ゲートアレイ70からの制御信号に従って、R/Wチャネル60から入力された復号化処理を実行したリードデータを処理してホスト200に転送するデータを生成し、生成したデータをバッファメモリ130に一旦格納してからホスト200に転送する。HDC80は、ライト処理時に、ゲートアレイ70からの制御信号に従って、ホスト200から転送され、バッファメモリ130に一旦格納されたライトデータをR/Wチャネル60に出力する。HDC80は、例えば、R/Wチャネル60、ゲートアレイ70、及びバッファメモリ130等と電気的に接続されている。HDC80は、例えば、CPUバス40を介して、CPU50、R/Wチャネル60、ゲートアレイ70、揮発性メモリ110、及び不揮発性メモリ120等に電気的に接続されている。また、HDC80は、ホスト200と電気的に接続されている。
システムコントローラ150は、ホスト200からのコマンド等に従って、データのリード処理及びライト処理を制御する。システムコントローラ150は、ドライバIC20を介してVCM14を制御し、ヘッド15をディスク10上の所定の半径位置に配置し、リード処理又はライト処理を実行する。以下、“ライト処理”及び“リード処理”をまとめて“アクセス”又は“アクセス処理”という用語で表現する場合もある。
システムコントローラ150は、ホスト200からのコマンド等に従って、通常記録を実行する。システムコントローラ150は、ホスト200からのコマンド等に従って、ディスク10のメディアキャッシュ10b及びシステムエリア10cにデータを通常記録する。システムコントローラ150は、例えば、メディアキャッシュ10b及びシステムエリア10cにランダム及びシーケンシャルにデータを通常記録する。システムコントローラ150は、例えば、ディスク10において、所定のトラックピッチ(以下、通常記録トラックピッチと称する場合もある)で複数のトラックを通常記録する。以下、“シーケンシャルにデータをライトする”ことを“シーケンシャルライト”と称する場合もある。
システムコントローラ150は、ホスト200からのコマンド等に従って、瓦記録を実行する。システムコントローラ150は、ホスト200からのコマンド等に従って、ディスク10のユーザデータ領域10aにデータを瓦記録する。システムコントローラ150は、例えば、ユーザデータ領域10aにバンド領域毎にシーケンシャルにデータを瓦記録する。システムコントローラ150は、例えば、ユーザデータ領域10aにおいて、所定のトラックピッチ(以下、瓦記録トラックピッチと称する場合もある)で複数のトラックを瓦記録する。瓦記録トラックピッチは、例えば、通常記録トラックピッチよりも小さい。
図3は、通常記録処理の一例を示す模式図である。図3に示すように、半径方向において、シーケンシャルにデータをライト及びリードする方向を順方向と称する。図3において、順方向は、内方向である。なお、順方向は、外方向であってもよい。図3に示すように、円周方向において、ディスク10に対してヘッド15が進む方向、つまり、リード/ライトする方向を進行方向と称する場合もある。図3に示した例では、進行方向は、円周方向の後方向である。なお、進行方向は、円周方向において後方向と反対方向の前方向であってもよい。図3には、トラックCTR0、トラックCTR1、トラックCTR2、…、トラックCTRn-2、トラックCTRn-1、及びトラックCTRnを示している。図3において、トラックCTR0乃至CTRnは、外方向から内方向に記載の順に並んでいる。
図3には、トラック幅TRWのトラックCTR0のトラックセンタCTC0、トラック幅TRWのトラックCTR1のトラックセンタCTC1、トラック幅TRWのトラックCTR2のトラックセンタCTC2、…、トラック幅TRWのトラックCTRn-2のトラックセンタCTCn-2、トラック幅TRWのトラックCTRn-1のトラックセンタCTCn-1、及びトラック幅TRWのトラックCTRnのトラックセンタCTCnを示している。なお、トラックCTR0乃至CTRnのトラック幅は、異なっていてもよい。
図3に示した例では、トラックCTR0乃至CTRnは、それぞれ、半径方向に通常記録トラックピッチCTPで配置されている。例えば、トラックCTR0のトラックセンタCTC0とトラックCTR1のトラックセンタCTC1とは、半径方向に通常記録トラックピッチCTPで離れ、トラックCTR1のトラックセンタCTC1とトラックCTR2のトラックセンタCTC2とは、半径方向に通常記録トラックピッチCTPで離れている。また、例えば、トラックCTRn-2のトラックセンタCTCn-2とトラックCTRn-1のトラックセンタCTCn-1とは、半径方向に通常記録トラックピッチCTPで離れ、トラックCTRn-1のトラックセンタCTCn-1とトラックCTRnのトラックセンタCTCnとは、半径方向に通常記録トラックピッチCTPで離れている。なお、トラックCTR0乃至CTRnは、それぞれ、半径方向に異なるトラックピッチ(通常記録トラックピッチ)で配置されていてもよい。
また、図3に示した例では、トラックCTR0乃至CTRnは、それぞれ、半径方向にギャップCGPを置いて配置されている。例えば、トラックCTR0及びトラックCTR1は、半径方向にギャップCGPで離れ、トラックCTR1及びトラックCTR2は、半径方向にギャップCGPで離れている。また、トラックCTRn-2及びトラックCTRn-1は、半径方向にギャップCGPで離れ、トラックCTRn-1及びトラックCTRnは、半径方向にギャップCGPで離れている。なお、トラックCTR0乃至CTRnは、それぞれ、異なるギャップを置いて配置されていてもよい。図3では、説明の便宜上、各トラックを所定のトラック幅で円周方向に延出している長方形状に示しているが、実際には、円周方向に沿って湾曲している。また、各トラックは、半径方向に変動しながら円周方向に延出している波状であってもよい。
図3に示した例では、システムコントローラ150は、ディスク10の通常記録領域において、トラックセンタCTC0にヘッド15を位置決めしてトラックCTR0を通常記録する。システムコントローラ150は、ディスク10の通常記録領域において、トラックCTR0のトラックセンタCTC0から内方向に通常記録トラックピッチCTPで離れているトラックセンタCTC1にヘッド15を位置決めしてトラックCTR1を通常記録する。システムコントローラ150は、ディスク10の通常記録領域において、トラックCTR1のトラックセンタCTC1から内方向に通常記録トラックピッチCTPで離れているトラックセンタCTC2にヘッド15を位置決めしてトラックCTR2を通常記録する。
図3に示した例では、システムコントローラ150は、ディスク10の通常記録領域において、トラックCTRn-2のトラックセンタCTCn-2から内方向に通常記録トラックピッチCTPで離れているトラックセンタCTCn-1にヘッド15を位置決めしてトラックCTRn-1を通常記録する。システムコントローラ150は、ディスク10の通常記録において、トラックCTRn-1のトラックセンタCTCn-1から内方向に通常記録トラックピッチCTPで離れているトラックセンタCTCnにヘッド15を位置決めしてトラックCTRnを通常記録する。
図3に示した例では、システムコントローラ150は、ディスク10の通常記録領域において、トラックCTR0、CTR1、CTR2、…、CTRn-2、CTRn-1、及びCTRnをシーケンシャルに通常記録してもよいし、トラックCTR0、CTR1、CTR2、…、CTRn-2、CTRn-1、及びCTRnのそれぞれの所定のセクタにランダムに通常記録してもよい。
図4は、瓦記録処理の一例を示す模式図である。図4には、ユーザデータ領域10aの所定のバンド領域BAを示している。図4に示した例では、バンド領域BAは、トラックSTR0、STR1、STR2、…、STRn-1、及びSTRnを含む。図4において、トラックSTR0乃至STRnは、外方向から内方向に記載の順に並んでいる。図4では、トラックSTR0乃至STRnは、順方向に重ね書きされている。
図4では、複数のトラックSTR0乃至STRnにおいて、ライトヘッド15Wでディスク10にライトされたトラックSTR0をライトトラックWT0と称し、ライトヘッド15Wでディスク10にライトされたトラックSTR1をライトトラックWT1と称し、ライトヘッド15Wでディスク10にライトされたトラックSTR2をライトトラックWT2と称し、ライトヘッド15Wでディスク10にライトされたトラックSTRn-1をライトトラックWTn-1と称し、ライトヘッド15Wでディスク10にライトされたトラックSTRnをライトトラックWTnと称する場合もある。
図4には、ライトトラック幅WTWのライトトラックWT0(トラックSTR0)のトラックセンタSTC0、ライトトラック幅WTWのライトトラックWT1(トラックSTR1)のトラックセンタSTC1、ライトトラック幅WTWのライトトラックWT2(トラックSTR2)のトラックセンタSTC2、…、ライトトラック幅WTWのライトトラックWTn-1(トラックSTRn-1)のトラックセンタSTCn-1、ライトトラック幅WTWのライトトラックWTn(トラックSTRn)のトラックセンタSTCnを示している。なお、ライトトラックWT0乃至WTnのライトトラック幅は、異なっていてもよい。
図4に示した例では、ライトトラックWT0(トラックSTR0)乃至WTn(STRn)は、それぞれ、半径方向に瓦記録トラックピッチWTPで配置されている。例えば、ライトトラックWT0のトラックセンタSTC0とライトトラックWT1のトラックセンタSTC1とは、半径方向に瓦記録トラックピッチWTPで離れている。例えば、ライトトラックWT1のトラックセンタSTC1とライトトラックWT2のトラックセンタSTC2とは、半径方向に瓦記録トラックピッチWTPで離れている。また、例えば、ライトトラックWTn-1のトラックセンタSTCn-1とライトトラックWTnのトラックセンタSTCnとは、半径方向に瓦記録トラックピッチWTPで離れている。なお、ライトトラックWT0(トラックSTR0)乃至ライトトラックWTn(トラックSTRn)は、それぞれ、半径方向に異なるトラックピッチ(瓦記録トラックピッチ)で配置されていてもよい。
また、ライトトラックWT0(トラックSTR0)乃至ライトトラックWTn(トラックSTRn)は、順方向に重ね書きされている。ライトトラックWT1が重なる領域以外の残りのライトトラックWT0の領域をリードトラックRT0(トラックSTR0)と称し、ライトトラックWT2が重なる領域以外の残りのライトトラックWT1の領域をリードトラックRT1(トラックSTR1)と称し、ライトトラックWTnが重なる領域以外の残りのライトトラックWTn-1の領域をリードトラックRTn-1(トラックSTRn-1)と称する。また、バンド領域BAにおいて順方向にシーケンシャルにライトした場合に最後にライトされ、他のライトトラックが重ならないライトトラック(以下、最終トラックと称する場合もある)WTnをリードトラックWTn(最終トラック)と称する場合もある。図4には、リードトラックRT0乃至RTn-1のリードトラック幅RTW1を示している。図4において、リードトラックRTnのリードトラック幅RTW2は、ライトトラックWTnのライトトラック幅WTWと同じである。リードトラック幅RTW1は、ライトトラック幅WTWよりも小さい。なお、リードトラックRT0乃至RTn-1のリードトラック幅は、異なっていてもよい。図4では、説明の便宜上、各トラックを所定のトラック幅で円周方向に延出している長方形状に示しているが、実際には、円周方向に沿って湾曲している。また、各トラックは、半径方向に変動しながら円周方向に延出している波状であってもよい。
図4に示した例では、システムコントローラ150は、ユーザデータ領域10aの所定のバンド領域BAにおいて、ライトトラックWT0、ライトトラックWT1、ライトトラックWT2、…、ライトトラックWTWn-1、及びライトトラックWTWnを記載の順に順方向に向かってシーケンシャルに瓦記録する。言い換えると、システムコントローラ150は、ユーザデータ領域10aの所定のバンド領域BAにおいて、トラックSTR0(ライトトラックWT0)、トラックSTR1(ライトトラックWT1)、トラックSTR2(ライトトラックWT2)、…、トラックSTRn-1(ライトトラックWTn-1)、及びトラックSTRn(ライトトラックWTn)を記載の順に順方向に重ね書きする。
図4に示した例では、システムコントローラ150は、ユーザデータ領域10aの所定のバンド領域BAにおいて、ライトトラックWT0(トラックSTR0)のトラックセンタSTC0から順方向に瓦記録トラックピッチWTPで離れているトラックセンタSTC1にヘッド15を位置決めしてライトトラックWT1をライトトラックWT0に瓦記録する。システムコントローラ150は、ユーザデータ領域10aの所定のバンド領域BAにおいて、ライトトラックWT1のトラックセンタSTC1から順方向に瓦記録トラックピッチWTPで離れているトラックセンタSTC2にヘッド15を位置決めしてライトトラックWT2をライトトラックWT1に瓦記録する。システムコントローラ150は、ユーザデータ領域10aの所定のバンド領域BAにおいて、ライトトラックWTn-1のトラックセンタSTCn-1から順方向に瓦記録トラックピッチWTPで離れているトラックセンタSTCnにヘッド15を位置決めしてライトトラック(最終トラック)WTnをライトトラックWTn-1に瓦記録する。
システムコントローラ150は、各サブ領域SBRを少なくとも1つのバンド領域(物理バンド)BAに区分する。システムコントローラ150は、各サブ領域SBRにおいて区分した少なくとも1つのバンド領域BAに物理バンド番号を割り当てる(又は付与する)。また、システムコントローラ150は、各サブ領域SBRにおいて区分した少なくとも1つのバンド領域BAに論理バンド番号を割り当てる(又は付与する)。以下、“所定の論理バンド番号を割り当てられたバンド領域又は物理バンド”を“論理バンド”と称する場合もある。システムコントローラ150は、論理バンド番号の順番に従って各論理バンドの各セクタにLBAを割り当てる。そのため、論理バンドとLBAとの対応関係は、変化しない。例えば、システムコントローラ150は、各物理バンドのセクタ数が同じである場合、各論理バンドに同じ数(以下、アドレス数と称する場合もある)のLBAを割り当てる。システムコントローラ150は、各サブ領域SBRにおいて区分した少なくとも1つのバンド領域BAにおいて少なくとも1つのバンド領域(物理バンド)BAを予備のバンド領域(以下、スペアバンドと称する場合もある)に設定する。システムコントローラ150は、スペアバンドには論理バンド番号及びLBAを割り当てない。そのため、1つのサブ領域SBRに割り当てられるLBAのアドレス数は、“(サブ領域SBRの物理バンドBAの数―1)×物理バンドBA当たりのセクタ数”に相当する。システムコントローラ150は、各サブ領域SBRにおいてバンド領域(物理バンド)BAと論理バンド番号との対応関係を任意に変更できる。そのため、物理バンドとLBAとの対応関係は、変化する。なお、物理バンドBAとLBAとの対応関係は、サブ領域SBR内でのみ変化する。そのため、各サブ領域に割り当てられたLBAの範囲は、変化しない。例えば、システムコントローラ150は、物理バンド(又は物理バンド番号)と論理バンド(又は論理バンド番号)及びスペアバンドとの対応関係をテーブルとして所定の記録領域、例えば、ディスク10のシステムエリア10c、揮発性メモリ110、又は不揮発性メモリ120等に記録していてもよい。例えば、システムコントローラ150は、物理バンドと論理バンド及びスペアバンドとの対応関係のテーブルを変更する(書き換える)ことで物理バンドと論理バンド及びスペアバンドとの対応関係を変更する。
システムコントローラ150は、所定の論理バンド(以下、対象バンド領域又は対象論理バンドと称する場合もある)に対応する物理バンド(以下、対象バンド領域又は対象物理バンドと称する場合もある)にライトされたデータを他のデータ(以下、更新データと称する場合もある)に更新する(書き換える)場合、更新データを対象物理バンドに直接ライトせずに、更新データをスペアバンドに対応する物理バンドにライトする。以下、“所定の領域、例えば、所定のバンド領域(物理バンド又は論理バンド)のデータを更新又は書き換える処理”を“データ更新”と称する場合もある。システムコントローラ150は、更新データをスペアバンドに対応する物理バンドにライトし終えた場合、更新データをライトしたスペアバンドに対応する物理バンドに対象論理バンドに対応する論理バンド番号(以下、対象論理バンド番号と称する場合もある)を割り当ててスペアバンドに対応する物理バンドを新たな対象論理バンドに変更し、対象論理バンドに対応する物理バンドを新たなスペアバンドに変更する。言い換えると、システムコントローラ150は、更新データをスペアバンドに対応する物理バンドにライトし終えた場合、更新データをライトしたスペアバンドに対応する物理バンドと対象論理バンドに対応する物理バンドとを入れ換える。
例えば、対象物理バンドに更新データを直接ライトする場合には、更新バンドの途中でデータの書き直しを中断してしまうとヘッド15からの漏れ磁束等の影響により少なくとも順方向にライトされたデータを消去(又は消失)する可能性がある。しかし、前述のように、対象物理バンドに更新データを直接ライトしないで、スペアバンドに更新データをライトしてスペアバンドと対象論理バンドとを入れ換えることで、対象物理バンドに更新データを直接ライトしている最中に突然電源が遮断されて対象物理バンドのデータを消失することを防止できる。
図5は、サブ領域SBRの一例を示す模式図である。図5には、ユーザデータ領域10aの所定のサブ領域SBRを示している。サブ領域SBRは、複数のバンド領域(物理バンド)PBAk-2、PBAk-1、PBAk、PBAk+1、及びPBAk+2を含む。以下、PBAk-2、PBAk-1、PBAk、PBAk+1、及びPBAk+2を物理バンド番号と称する場合もある。複数のバンド領域PBAk-2、PBAk-1、PBAk、PBAk+1、及びPBAk+2は、同じセクタ数を含む。つまり、PBAk-2、PBAk-1、PBAk、PBAk+1、及びPBAk+2にそれぞれ割り当てられるLBAのアドレス数は、同じである。複数のバンド領域(物理バンド)PBAk-2、PBAk-1、PBAk、PBAk+1、及びPBAk+2は、外方向から内方向に向かってギャップBGPを置いて並んでいる。複数のバンド領域(物理バンド)PBAk-2、PBAk-1、PBAk、PBAk+1、及びPBAk+2は、例えば、ギャップBGPを置いて並んでいるため、半径方向で隣接するバンド領域(以下、隣接バンド領域、又は隣接バンドと称する場合もある)BAへのデータのライト処理による漏れ磁束等の影響を抑制できる。図5では、説明の便宜上、各バンド領域PBAk-2、PBAk-1、PBAk、PBAk+1、及びPBAk+2の各トラックを所定のトラック幅で円周方向に延出している長方形状に示しているが、実際には、円周方向に沿って湾曲している。また、各バンド領域PBAk-2、PBAk-1、PBAk、PBAk+1、及びPBAk+2の各トラックは、半径方向に変動しながら円周方向に延出している波状であってもよい。なお、図5において、サブ領域SBRには、5つのバンド領域PBAk-2乃至PBAk+2が配置されているが、4つ以下のバンド領域が配置されていてもよいし、6つ以上のバンド領域が配置されていてもよい。また、バンド領域PBAk-2乃至PBAk+2は、それぞれ、5つのトラックが重ね書きされているが、4つ以下のトラックが重ね書きされていてもよいし、6つ以上のトラックが重ね書きされていてもよい。
図5に示した例では、システムコントローラ150は、ユーザデータ領域10aの所定のサブ領域SBRにおいて、バンド領域PBAk-2、PBAk-1、PBAk、PBAk+1、及びPBAk+2を区分する。
図6は、物理バンドと論理バンド及びスペアバンドとの対応関係のテーブルTB1の一例を示す図である。図6は、図5に対応している。図6において、テーブルTB1は、物理バンド番号と論理バンド番号とを含む。図6のテーブルTB1には、物理バンド番号PBAk-2、PBAk-1、PBAk、PBAk+1、及びPBAk+2を示している。図6のテーブルTB1には、論理バンド番号LBAk-2、LBAk-1、LBAk、及びLBAk+1を示している。以下、論理バンドLBAk-2、LBAk-1、LBAk、及びLBAk+1と記載する場合もある。また、図6のテーブルTB1には、スペアバンドSBAを示している。なお、図6において、テーブルTB1は、4つの論理バンド番号LBAk-2、LBAk-1、LBAk、LBAk+1、及びLBAk+2を含んでいるが、物理バンド番号の数に応じて3つ以下の論理バンド番号を含んでいてもよいし、5つ以上の論理バンド番号を含んでいてもよい。
図6に示した例では、システムコントローラ150は、テーブルTB1において、物理バンド番号PBAk-2のバンド領域PBAk-2に論理バンド番号LBAk-2を割り当て、物理バンド番号PBAk-1のバンド領域PBAk-1に論理バンド番号LBAk-1を割り当てる。また、システムコントローラ150は、テーブルTB1において、物理バンド番号PBAkのバンド領域PBAkに論理バンド番号LBAkを割り当て、物理バンド番号PBAk+1のバンド領域PBAk+1に論理バンド番号LBAk-2を割り当てる。また、システムコントローラ150は、テーブルTB1において、物理バンド番号PBAk+2のバンド領域PBAk+2をスペアバンドSBAに設定する。
図7は、所定の論理バンドのデータ更新処理の一例を示す模式図である。図7は、図5及び図6に対応している。
システムコントローラ150は、図6のテーブルTB1において、論理バンドPBAk-1にデータ更新処理を実行する。システムコントローラ150は、図6のテーブルTB1において、スペアバンドSBAに対応する物理バンドPBAk+2に更新データを瓦記録する。システムコントローラ150は、物理バンドPBAk+2に更新データをライト完了した場合、図7のテーブルTB1に示すように、物理バンドPBAk+2に論理バンド番号LBAk-1に割り当てて物理バンドPBAk+2を新たな論理バンドLBAk-1に変更し、物理バンドPBAk-1を新たなスペアバンドSBAに設定する。
システムコントローラ150は、メディアキャッシュ10bの各セクタに識別番号(以下、メディアキャッシュLBAと称する場合もある)を固定的に割り当てて管理する。システムコントローラ150は、例えば、ホスト200等から転送された順にデータ(以下、ブロックデータ又はセクタデータと称する)をメディアキャッシュLBAの小さいセクタからメディアキャッシュLABの大きいセクタに順にライトする。メディアキャッシュ10bにライトされたデータの容量(以下、データ量又は使用量と称する場合もある)は、メディアキャッシュ10bにライトされた複数のブロックデータの内の最も古いブロックデータがライトされたセクタのメディアキャッシュLBA(以下、先頭メディアキャッシュLBAと称する場合もある)から最も新しいブロックデータがライトされたセクタのメディアキャッシュLBAの次のセクタのメディアキャッシュLBA(以下、最後尾メディアキャッシュLBAと称する場合もある)との差分値に相当する。“先頭”とは、例えば、“割り当てられた番号の内の最も小さい番号を割り当てられていること”や、“順番に記録された複数のものの内の最も古いものであること”等の意味を含む。“最後尾”とは、例えば、“割り当てられたバンドの内の最も大きい番号を割り当てられていること”や“順番に記録された複数のものの内の最も新しいものであること”等の意味を含む。システムコントローラ150は、例えば、メディアキャッシュ10bの各セクタにそれぞれライトされた各ブロックデータの内の古いブロックデータから最も新しいブロックデータまでを順にユーザデータ領域10aにライトする(又は移動する)。
なお、システムコントローラ150は、メディアキャッシュ10bの各セクタにそれぞれライトされたブロックデータの内の最も古いブロックデータから最も新しいブロックデータまで順にユーザデータ領域10aに移動させるとは限らない。例えば、システムコントローラ150は、メディアキャッシュ10bにライトされたブロックデータの内の2番目に古いブロックデータからユーザデータ領域10aに移動する。例えば、最も古いブロックデータ以外のブロックデータをユーザデータ領域10aに移動した場合のメディアキャッシュ10bの使用量は、ブロックデータをユーザデータ領域10aに移動させない場合のメディアキャッシュ10bの使用量と見かけ上ほぼ同じである。言い換えると、最も古いブロックデータ以外のブロックデータをユーザデータ領域10aに移動させた場合、見かけのメディアキャッシュ10bの使用量は、変化しない。また、システムコントローラ150は、動作中にメディアキャッシュの使用量が増加してメディアキャッシュ10bの空き容量が小さくなりすぎるとブロックデータを受けた場合に空き容量を生成しなければならなくなり、ホスト200等からのコマンドに対する応答性(以下、コマンド応答性と称する場合もある)が低下する。そのため、システムコントローラ150は、メディアキャッシュ10bの使用量が大きくなりすぎないようにメディアキャッシュ10bにライトされたブロックデータをユーザデータ領域10aに適宜ライトさせる(移動させる)制御を実行する。
システムコントローラ150は、例えば、メディアキャッシュ10bの各セクタにブロックデータがライトされていない場合又は、メディアキャッシュ10bからユーザデータ領域10aにライトする(又は移動させる)ブロックデータがない場合、ホスト200等から転送されたブロックデータを最も小さいメディアキャッシュLBA(以下、最小メディアキャッシュLBAと称する場合もある)を割り当てたセクタ(以下、最小メディアキャッシュセクタと称する場合もある)にライトする。システムコントローラ150は、最も大きいメディアキャッシュLBA(以下、最大メディアキャッシュLBAと称する場合もある)を割り当てたセクタ(以下、最大メディアキャッシュセクタと称する場合もある)にブロックデータがライトされている場合、最小メディアキャッシュセクタにホスト200等から転送されたブロックデータをライトする。前述したように、メディアキャッシュ10bは、例えば、リングバッファのFIFO(First In First Out)として使用される。
システムコントローラ150は、所定の数のブロックデータ(以下、ブロックデータ群と称する場合もある)毎に、ヘッダを付加する。以下、データ群にヘッダを付加した少なくとも1つのブロックデータをデータ群と称する場合もある。ヘッダは、例えば、データ群の内で最も古いブロックデータ(以下、データ群内先頭データと称する場合もある)がライトされたセクタ(以下、データ群内先頭セクタと称する場合もある)のLBA(以下、データ群内先頭LBAと称する場合もある)、データ群に含まれるブロックデータの数(以下、データ群内セクタ数又はデータ群内ブロック数と称する場合もある)、及びデータ群内先頭セクタに割り当てられたメディアキャッシュLBA(以下、データ群内先頭MC(メディアキャッシュ)LBAと称する場合もある)等の情報を含む。
システムコントローラ150は、例えば、ホスト200等から転送された順にデータ群をメディアキャッシュ10bにライトする。システムコントローラ150は、例えば、メディアキャッシュ10bにライトしたデータ群の内の古いデータ群から順にユーザデータ領域10aにライトする(又は移動する)。
図8は、メディアキャッシュ10bの一例を示す模式図である。図8において、メディアキャッシュ10bは、データ群DGn、データ群DGn+1、及びデータ群DGn+2を含む。図8において、データ群DGn、データ群DGn+1、及びデータ群DGn+2は、記載の順にメディアキャッシュ10bにライトされている。言い換えると、図8において、データ群DGnは、データ群DGn+1の前にメディアキャッシュ10bにライトされ、データ群DGn+1は、データ群DGn+2の前にメディアキャッシュ10bにライトされている。以下、時間的に古いことを“前”と表現する場合もあるし、時間的に新しいことを“後”と表現する場合もある。また、所定の順番において先の順番であることを“前”と表現し、所定の順番において後の順番であることを“後”と表現する場合もある。データ群DGnは、ヘッダHDRnと、ブロックデータ群BDGnとを有する。データ群DGn+1は、ヘッダHDRn+1と、ブロックデータ群BDGn+1とを有する。データ群DGn+2は、ヘッダHDRn+2と、ブロックデータ群BDGn+2とを有する。図8には、先頭メディアキャッシュLBA LmBと、最後尾メディアキャッシュLBA LmEと、を示している。また、図8には、メディアキャッシュLBA Lmnと、メディアキャッシュLBA Lmnよりも大きいメディアキャッシュLBA Lm(n+1)と、メディアキャッシュLBA Lm(n+1)よりも大きいメディアキャッシュLBA Lm(n+2)とを示している。図8において、メディアキャッシュ10bは、データ群DGn、データ群DGn+1、及びデータ群DGn+2の3つのデータ群のみを含むように記載しているが、2つ以下のデータ群を含んでいてもよいし、4つ以上のデータ群を含んでいてもよい。図8では、説明の便宜上、メディアキャッシュ10bを所定の幅で円周方向に延出している長方形状に示しているが、実際には、円周方向に沿って湾曲している。また、図8では、メディアキャッシュ10bは、1つのトラックのみを含むように記載しているが、複数のトラックを含んでいてもよい。
図8に示した例では、システムコントローラ150は、ホスト200等から転送された順にデータ群DGnを、DGn+1、及びDGn+2をメディアキャッシュ10bにライトする。システムコントローラ150は、メディアキャッシュLBA Lmnを割り当てたセクタからメディアキャッシュLBA Lm(n+1)を割り当てたセクタの前のセクタまでデータ群BDGnにヘッダHDRnを付加してデータ群DGnをライトする。システムコントローラ150は、データ群DGnに続けてデータ群DGn+1をメディアキャッシュ10bにライトする。システムコントローラ150は、メディアキャッシュLBA Lm(n+1)を割り当てたセクタからメディアキャッシュLBA Lm(n+2)を割り当てたセクタの前のセクタまでブロックデータ群BDGn+1にヘッダHDRn+1を付加してデータ群DGn+1をライトする。システムコントローラ150は、データ群DGn+1に続けてデータ群DGn+2をメディアキャッシュ10bにライトする。システムコントローラ150は、メディアキャッシュLBA Lm(n+2)を割り当てたセクタから最後尾メディアキャッシュLBA LmEを割り当てたセクタの前のセクタまでデータ群BDGn+2にヘッダHDRn+2を付加してデータ群DGn+2をライトする。図8に示した例では、メディアキャッシュ10bのデータ容量は、先頭メディアキャッシュLBA LmBと最後尾メディアキャッシュLBA LmEとの差分値に相当する。
システムコントローラ150は、メディアキャッシュ10bにライトしたデータ群、LBA、及びメディアキャッシュLBA等の対応関係をテーブル(以下、メディアキャッシュ管理テーブルと称する場合もある)等で管理する。メディアキャッシュ管理テーブルは、主テーブルと、拡張テーブルと含む。主テーブルの各データ群に対応する各エントリは、データ群(エントリ番号、又はデータ群エントリ番号と称する場合もある)、データ群内先頭LBA、データ群内セクタ数、データ群内先頭MCLBA、及びデータ群における有効なブロックデータ又はデータをライトされたセクタ(以下、有効セクタと称する場合もある)の配置情報を示す拡張テーブルへのリンク情報に相当する拡張インデックス等を含む。なお、主テーブルの各データ群に対応する各エントリは、データ群(又はエントリ番号)を含んでいなくともよい。例えば、主テーブルの各エントリは、各エントリに対応する各データ群においてデータ群内先頭LBAを割り当てたデータ群内先頭セクタからデータ群内セクタ数分のブロックデータをライトされたセクタ(以下、単に、セクタと称する場合もある)が先頭メディアキャッシュLBAを割り当てたセクタを先頭に配置されていることを表す。システムコントローラ150は、メディアキャッシュ管理テーブル(主テーブル及び拡張テーブル)を所定の記録領域、例えば、ディスク10のシステムエリア10c、揮発性メモリ110、又は不揮発性メモリ120等に記録していてもよい。
システムコントローラ150は、所定のデータ群においてデータ群内先頭セクタから連続して配置されたデータ群内セクタ数分のセクタの内の一部のセクタのみが有効セクタであると判定した場合、このデータ群におけるデータ群内先頭セクタから連続して配置されたデータ群内セクタ数分のセクタの内の有効セクタの配置情報を拡張テーブルに記録する。言い換えると、システムコントローラ150は、所定のデータ群においてデータ群内先頭セクタから連続して配置されたデータ群内セクタ数分のセクタの内の一部のセクタが無効なブロックデータをライトされたセクタ又はデータがライトされていないセクタ(以下、無効セクタと称する場合もある)であると判定した場合、このデータ群におけるデータ群内先頭セクタから連続して配置されたデータ群内セクタ数分のセクタの内の有効セクタの配置情報を拡張テーブルに記録する。例えば、拡張テーブルの所定のデータ群に対応するエントリは、主テーブルの拡張インデックスに対応するエントリ番号(以下、拡張エントリ番号と称する場合もある)、このデータ群のデータ群内先頭セクタから連続的に配置された少なくとも1つの有効セクタの先頭のセクタ(以下、先頭有効セクタと称する場合もある)までのセクタ数(データ群内先頭セクタと先頭有効セクタとのずれ)を示すLBAオフセット及び、所定のデータ群において先頭有効セクタから連続的に配置されている有効セクタの数に相当するセクタ数(以下、連続有効セクタ数と称する場合もある)等を含む。例えば、拡張テーブルは、所定のデータ群における有効セクタの配置を表している。所定のデータ群に対応する有効セクタの配置情報を拡張テーブルに記録した場合、システムコントローラ150は、このデータ群に対応する主テーブルのエントリの拡張インデックスにこのデータ群に対応する有効セクタの配置情報を記録した拡張テーブルの所定のエントリへのリンク情報を記録する。言い換えると、所定のデータ群においてデータ群内先頭セクタから連続して配置されたデータ群内セクタ数分のセクタの内の一部のセクタのみが有効セクタであると判定した場合、システムコントローラ150は、このデータ群に対応する主テーブルのエントリの拡張インデックスにこのデータ群に対応する有効セクタの配置情報を記録した拡張テーブルの所定のエントリへのリンク情報を記録する。
システムコントローラ150は、所定のデータ群においてデータ群内先頭セクタから連続して配置されたデータ群内セクタ数分の全部のセクタが有効セクタである場合、このデータ群に対応する主テーブルのエントリの拡張インデックスに拡張テーブルへのリンク情報、つまり、拡張テーブルが不要であることを示すデータ、例えば、FFFFh等を記録する。
図9は、主テーブルTB2の一例を示す模式図である。図9は、例えば、図8に対応している。図9に示した例では、主テーブルTB2の各エントリは、データ群(エントリ番号)、データ群内先頭LBAと、データ群内セクタ数と、データ群内先頭MCLBAと、拡張インデックスとを含む。主テーブルTB2のデータ群DGnに対応するエントリは、データ群(エントリ番号)DGnと、データ群内先頭LBA Lnと、データ群内セクタ数NSnと、データ群内先頭MCLBA Lmnと、拡張インデックスEnとを含む。主テーブルTB2のデータ群DGn+1に対応するエントリは、データ群(エントリ番号)DGn+1と、データ群内先頭LBA Ln+1と、データ群内セクタ数NSn+1と、データ群内先頭MCLBA Lmn+1と、拡張インデックスEn+1とを含む。主テーブルTB2のデータ群DGn+2に対応するエントリは、データ群(エントリ番号)DGn+2と、データ群内先頭LBA Ln+2と、データ群内セクタ数NSn+2と、データ群内先頭MCLBA Lmn+2と、拡張インデックスEn+2とを含む。例えば、データ群内先頭LBA Lnは、データ群内先頭LBA Ln+1よりも小さい。例えば、データ群内先頭LBA Ln+1は、データ群内先頭LBA Ln+2よりも小さい。つまり、主テーブルTB2において、データ群内先頭LBA Ln、Ln+1、及びLn+2は、昇順に並んでいる。例えば、データ群内先頭MCLBA Lmnは、先頭メディアキャッシュLBA Lmn+1よりも小さい。例えば、データ群内先頭MCLBA Lmn+1は、データ群内先頭MCLBA Lmn+2よりも小さい。図9において、主テーブルTB2は、データ群DGn、データ群DGn+1、及びデータ群DGn+2の3つのデータ群に対応する3つのエントリのみを含むように記載しているが、2つ以下のデータ群に対応する3つのエントリを含んでいてもよいし、4つ以上のデータ群に対応する4つのエントリを含んでいてもよい。
図9に示した例では、システムコントローラ150は、主テーブルTB2のデータ群DGnのエントリに、データ群内先頭LBA Ln、データ群内セクタ数NSn、及びデータ群内先頭MCLBA Lmnを記録する。データ群DGnにおいてデータ群内先頭LBA Lnを割り当てたデータ群内先頭セクタから連続して配置されたデータ群内セクタ数NSn分のセクタの内の一部のセクタのみが有効セクタであると判定した場合、システムコントローラ150は、データ群DGnに対応する主テーブルTB2のエントリの拡張インデックスEnにデータ群DGnに対応する有効セクタの配置情報を記録した拡張テーブルの所定のエントリへのリンク情報を記録する。
図9に示した例では、システムコントローラ150は、主テーブルTB2のデータ群DGn+1のエントリに、データ群内先頭LBA Ln+1、データ群内セクタ数NSn+1、及びデータ群内先頭MCLBA Lmn+1を記録する。データ群DGn+1においてデータ群内先頭LBA Ln+1を割り当てたデータ群内先頭セクタから連続して配置されたデータ群内セクタ数NSn+1分のセクタの内の一部のセクタのみが有効セクタであると判定した場合、システムコントローラ150は、データ群DGn+1に対応する主テーブルTB2のエントリの拡張インデックスEn+1にデータ群DGn+1に対応する有効セクタの配置情報を記録した拡張テーブルの所定のエントリへのリンク情報を記録する。
図9に示した例では、システムコントローラ150は、主テーブルTB2のデータ群DGn+2のエントリに、データ群内先頭LBA Ln+2、データ群内セクタ数NSn+2、及びデータ群内先頭MCLBA Lmn+2を記録する。データ群DGn+2においてデータ群内先頭LBA Ln+2を割り当てたデータ群内先頭セクタから連続して配置されたデータ群内セクタ数NSn+2分のセクタの内の一部のセクタのみが有効セクタであると判定した場合、システムコントローラ150は、データ群DGn+2に対応する主テーブルTB2のエントリの拡張インデックスEn+2にデータ群DGn+2に対応する有効セクタの配置情報を記録した拡張テーブルの所定のエントリへのリンク情報を記録する。
図10は、拡張テーブルTB3の一例を示す模式図である。図10は、例えば、図8及び図9に対応している。図10に示した例では、拡張テーブルTB3の各エントリは、エントリ番号(拡張エントリ番号)と、LBAオフセットと、連続有効セクタ数とを含む。拡張テーブルTB3の各エントリは、例えば、同じ数のLBAオフセットのエントリと、同じ数の連続有効セクタ数のエントリとを有する。なお、拡張テーブルTB3の各エントリは、異なる数のLBAのエントリと、異なる数の連続有効セクタ数のエントリを有していてもよい。図9に示した主テーブルTB2のデータ群DGnの拡張インデックスEnに対応する図10に示す拡張テーブルTB3のエントリ番号Enのエントリは、LBAオフセットOn0、On1、…と、連続有効セクタ数Bm0、Bn1、…とを含む。LBAオフセットOn0は、連続有効セクタ数Bn0に対応する。LBAオフセットOn1は、連続有効セクタ数Bn1に対応する。エントリ番号Enのエントリにおいて、LBAオフセットOn0は、LBAオフセットOn1よりも小さい。つまり、エントリ番号Enのエントリにおいて、LBAオフセットOn0、On1、…は、昇順に並んでいる。図9に示した主テーブルTB2のデータ群DGn+1の拡張インデックスEn+1に対応する図10に示す拡張テーブルTB3のエントリ番号En+1のエントリは、LBAオフセットO(n+1)0、O(n+1)1、…、と、連続有効セクタ数B(n+1)0、B(n+1)1、…、とを含む。LBAオフセットO(n+1)0は、連続有効セクタ数B(n+1)0に対応する。LBAオフセットO(n+1)1は、連続有効セクタ数B(n+1)1に対応する。エントリ番号En+1のエントリにおいて、LBAオフセットO(n+1)0は、LBAオフセットO(n+1)1よりも小さい。つまり、エントリ番号Enのエントリにおいて、LBAオフセットO(n+1)0、O(n+1)1、…は、昇順に並んでいる。
図10に示した例では、データ群DGnにおいてデータ群内先頭LBA Lnを割り当てたデータ群内先頭セクタから連続して配置されたデータ群内セクタ数NSn分のセクタの内の一部のセクタのみが有効セクタであると判定した場合、システムコントローラ150は、データ群DGnに対応するエントリ番号EnのエントリにLBAオフセットOn0、On1、…と、連続有効セクタ数Bn0、Bn1、…と記録する。システムコントローラ150は、データ群DGnに対応する主テーブルTB2のエントリの拡張インデックスEnに拡張テーブルTB3のエントリ番号Enのエントリへのリンク情報をライトする。
図10に示した例では、データ群DGn+1においてデータ群内先頭LBA Ln+1を割り当てたデータ群内先頭セクタから連続して配置されたデータ群内セクタ数NSn+1分のセクタの内の一部のセクタのみが有効セクタであると判定した場合、システムコントローラ150は、拡張テーブルTB3のデータ群DGn+1に対応するエントリ番号En+1のエントリにLBAオフセットO(n+1)0、O(n+1)1、…と、連続有効セクタ数B(n+1)0、B(n+1)1、…とを記録する。システムコントローラ150は、データ群DGn+1に対応する主テーブルTB2のエントリの拡張インデックスEn+1に拡張テーブルTB3のエントリ番号En+1のエントリへのリンク情報をライトする。
図11は、主テーブルTB2の一例を示す模式図である。図11に示した例では、主テーブルTB2のデータ群DGmに対応するエントリは、データ群(エントリ番号)DGm、データ群内先頭LBA 1000と、データ群内セクタ数100と、データ群内先頭MCLBA 10000と、拡張インデックスFFFFhとを含む。主テーブルTB2のデータ群DGm+1に対応するエントリは、データ群(エントリ番号)DGm+1、データ群内先頭LBA 5000と、データ群内セクタ数200と、データ群内先頭MCLBA 20000と、拡張インデックス1とを含む。図11において、主テーブルTB2は、データ群DGm及びデータ群DGm+1の2つのデータ群に対応する2つのエントリのみを含むように記載しているが、1つのデータ群に対応する1つのエントリのみを含んでいてもよいし、3つ以上のデータ群に対応する3つのエントリを含んでいてもよい。
図11に示した例では、システムコントローラ150は、主テーブルTB2のデータ群DGmのエントリに、データ群内先頭LBA 1000、データ群内セクタ数100、及びデータ群内先頭MCLBA 10000を記録する。データ群DGmにおいてデータ群内先頭LBA 1000を割り当てたデータ群内先頭セクタから連続して配置されたデータ群内セクタ数100分のセクタの内の全部のセクタが有効セクタであると判定した場合、システムコントローラ150は、データ群DGmに対応する主テーブルTB2のエントリの拡張インデックスにFFFFhを記録する。
図11に示した例では、システムコントローラ150は、主テーブルTB2のデータ群DGm+1のエントリに、データ群内先頭LBA 5000、データ群内セクタ数200、及びデータ群内先頭MCLBA 20000をライトする。データ群DGm+1においてデータ群内先頭LBA 5000を割り当てたデータ群内先頭セクタから連続して配置されたデータ群内セクタ数200分のセクタの内の一部のセクタのみが有効セクタであると判定した場合、システムコントローラ150は、データ群DGm+1に対応する主テーブルTB2のエントリの拡張インデックス1にデータ群DGm+1に対応する有効セクタの配置情報を記録した拡張テーブルの所定のエントリへのリンク情報をライトする。
図12は、拡張テーブルTB3の一例を示す模式図である。図12は、例えば、図11に対応している。図11に示した主テーブルTB2のデータ群DGm+1の拡張インデックス1に対応する図12に示す拡張テーブルTB3のエントリ番号1のエントリは、LBAオフセット0、100、FFFFFFFFh、…、FFFFFFFFhと、連続有効セクタ数50、100、FFFFFFFFh、…、FFFFFFFFhとを含む。FFFFFFFFhは、例えば、使用していないこと、又はデータがないことを示している。
図12に示した例では、データ群DGm+1においてデータ群内先頭LBA 5000を割り当てたデータ群内先頭セクタから連続して配置されたデータ群内セクタ数200分のセクタの内の一部のセクタのみが有効セクタであると判定した場合、システムコントローラ150は、データ群DGm+1に対応するエントリ番号1のエントリにLBAオフセット0、100、FFFFFFFFh、…、FFFFFFFFhと、連続有効セクタ数50、100、FFFFFFFFh、…、FFFFFFFFhと記録する。図12に示した例では、データ群DGm+1において、データ群内先頭LBA 5000のデータ群内先頭セクタから50セクタ分のセクタが有効セクタであり、データ群内先頭LBA 5000のデータ群内先頭セクタから100セクタ分後ろに離れたセクタから100セクタ分のセクタが有効セクタである。つまり、データ群内先頭LBA 5000のデータ群内先頭セクタから50セクタ分後ろに離れたセクタからデータ群内先頭LBA 5000のデータ群内先頭セクタから100セクタ分後ろに離れたセクタまでの50セクタ分のセクタが無効セクタに相当する。システムコントローラ150は、データ群内先頭LBA 5000のデータ群内先頭セクタから50セクタ分後ろに離れたセクタからデータ群内先頭LBA 5000のデータ群内先頭セクタから100セクタ分後ろに離れたセクタまでの50セクタ分のセクタが無効セクタであるが、これらの無効セクタをメディアキャッシュ10b上に領域として確保している。システムコントローラ150は、データ群DGm+1に対応する主テーブルTB2のエントリの拡張インデックス1に拡張テーブルTB3のエントリ番号1のエントリへのリンク情報をライトする。
図13及び図14は、メディアキャッシュ管理テーブルTB4の記録方法の一例を示すための模式図である。図13及び図14において、メディアキャッシュ管理テーブルTB4は、主テーブル及び拡張テーブルを含む。図13のメディアキャッシュ管理テーブルTB4の各エントリは、前のエントリ番号、次のエントリ番号、及び各種データを含む。前のエントリ番号は、対象とするエントリに対応する各種データの1つ前の各種データのエントリ番号に相当する。次のエントリ番号は、メディアキャッシュ10bにおいて対象とするエントリに対応する各種データの1つ後の各種データのエントリ番号に相当する。各種データは、例えば、データ群内先頭LBA、データ群内セクタ数、データ群内先頭MCLBA、拡張インデックス、LBAオフセット、及び連続有効セクタ数等のデータを含む。
図13のエントリ番号0のエントリは、エントリ番号0と、前のエントリ番号4と、次のエントリ番号FFFFhと、各種データCとを含む。次のエントリ番号FFFFhは、メディアキャッシュ10bにおいて対象とするエントリに対応する各種データの1つ後の領域に記録するデータがないことを示している。図14のエントリ番号0のエントリは、エントリ番号0と、前のエントリ番号1と、次のエントリ番号FFFFhと、各種データCとを含む。図14のエントリ番号1のエントリは、エントリ番号1と、前のエントリ番号4と、次のエントリ番号0と、各種データXとを含む。
図13及び図14のエントリ番号2のエントリは、エントリ番号2と、前のエントリ番号FFFFhと、次のエントリ番号4と、各種データAとを含む。前のエントリ番号FFFFhは、メディアキャッシュ10bにおいて対象とするエントリに対応する各種データの1つ前の領域に記録するデータがないことを示している。
図13のエントリ番号4のエントリは、エントリ番号4と、前のエントリ番号2と、次のエントリ番号1と、各種データBとを含む。図14のエントリ番号4のエントリは、エントリ番号4と、前のエントリ番号2と、次のエントリ番号1と、各種データBとを含む。
図13では、各種データA、B、及びCは、一定の規則に従ってこれらの順に並べるものとする。また、図14では、各種データA、B、X、Cは、一定の規則に従ってこれらの順番に並べるものとする。
システムコントローラ150は、昇順などの一定の規則で複数のエントリを並べるテーブルにおいて、エントリを追加又は削除する度にエントリの配置を変更すると処理時間を要するために、図13及び図14に示すように、所定のテーブル、例えば、主テーブル及び拡張テーブルをチェイン構造として処理している。
図13に示した例では、システムコントローラ150は、メディアキャッシュ管理テーブルTB4において、一定の規則に従って各種データA、B、Cをこれら記載の順に並べている。システムコントローラ150は、メディアキャッシュ管理テーブルTB4において、一定の規則に従って各種データA、B、C内で各種データAを最初に配置するために、各種データAに対応するエントリの前のエントリ番号にFFFFhを記録し、各種データAに対応するエントリの後のエントリ番号4を記録している。システムコントローラ150は、メディアキャッシュ管理テーブルTB4において、一定の規則に従って各種データA、B、C内で各種データA及びCの間に各種データBを配置するために、各種データBに対応するエントリの前のエントリ番号に各種データAに対応するエントリ番号2を記録し、各種データBに対応するエントリの次のエントリ番号に各種データCに対応するエントリ番号0を記録する。システムコントローラ150は、メディアキャッシュ管理テーブルTB4において、一定の規則に従って各種データA、B、C内で各種データBの後に各種データCを配置するために、各種データCに対応するエントリの前のエントリ番号に各種データBに対応するエントリ番号4を記録し、各種データCに対応するエントリの次のエントリ番号にFFFFhを記録する。
図14に示した例では、システムコントローラ150は、メディアキャッシュ管理テーブルTB4において、図13に示すように一定の規則に従って並んでいる各種データA、B、及びCの各種データB及びCの間に各種データXを挿入する。システムコントローラ150は、メディアキャッシュ管理テーブルTB4において、一定の規則に従って各種データA、B、C内で各種データA及びCの間に各種データXを挿入するために、各種データXに対応するエントリの前のエントリ番号に各種データBに対応するエントリ番号4を記録し、各種データXに対応するエントリの次のエントリ番号に各種データCに対応するエントリ番号0を記録する。システムコントローラ150は、メディアキャッシュ管理テーブルTB4において、各種データBに対応するエントリの次のエントリ番号に各種データXに対応するエントリ番号1を記録し、各種データCに対応するエントリの前のエントリ番号に各種データXに対応するエントリ番号1を記録する。
システムコントローラ150は、ユーザデータ領域10aのバンド領域(論理バンド又は物理バンド)BAの所定のデータ(以下、書き換え対象データと称する場合もある)をメディアキャッシュ10bにライトした所定のデータ(以下、書き換えデータと称する場合もある)に書き換える処理(以下、フラッシュ処理と称する場合もある)を実行する。システムコントローラ150は、メディアキャッシュ10bの使用率が所定の値に達したなどフラッシュ処理の実行が必要と判定した場合にフラッシュ処理を実行する。例えば、システムコントローラ150は、フラッシュ処理を実行する場合、書き換え対象データを含む論理バンド(以下、書き換え対象論理バンドと称する場合もある)に対応する物理バンド(以下、書き換え対象物理バンドと称する場合もある)BAの書き換え対象データがライトされた領域(以下、書き換え対象領域と称する場合もある)の前に瓦記録されたデータ(以下、前バンドデータと称する場合もある)をスペアバンドSBAに対応する物理バンドに瓦記録する。書き換え対象物理バンドの前バンドデータをスペアバンドSBAに対応する物理バンドにライトした場合、システムコントローラ150は、前バンドデータの後の書き換え対象物理バンドの書き換え対象領域に対応するスペアバンドSBAに対応する物理バンドの領域(以下、スペア対象領域と称する場合もある)にメディアキャッシュ10bからリードした書き換えデータを瓦記録する。スペア対象領域に書き換えデータをライトした後に、システムコントローラ150は、書き換え対象物理バンドBAの書き換え対象領域の後に瓦記録されたデータ(以下、後バンドデータと称する場合もある)をスペアバンドSBAに対応する物理バンドのスペア対象領域の後の領域に瓦記録する。書き換え対象物理バンドの後バンドデータをスペアバンドSBAに対応する物理バンドに瓦記録した場合、システムコントローラ150は、スペアバンドSBAに対応する物理バンドを新たな書き換え対象論理バンドに変更し、書き換え対象物理バンドをスペアバンドに変更する。言い換えると、書き換え対象物理バンドの後バンドデータをスペアバンドSBAに対応する物理バンドに瓦記録した場合、システムコントローラ150は、スペアバンドに対応する物理バンドと書き換え対象論理バンドに対応する書き換え対象物理バンドとを入れ換える。
図15は、フラッシュ処理の一例を示す模式図である。図15は、例えば、図5乃至図7に対応する。図15において、物理バンドPBAk-2乃至PBAk+2には、図6に示すように論理バンド番号LBAk-2乃至LBAk+2がそれぞれ割り当てられている。図15において、メディアキャッシュ10bは、データ群(書き換えデータ)DG151を含む。図15において、物理バンドPBAk-1は、図6に示すように論理バンド番号LBAk-1が割り当てられた書き換え対象論理バンドLBAk-1に相当し、書き換え対象物理バンドに相当する。物理バンドPBAk-1は、トラックSTR(k-1)0、STR(k-1)1、STR(k-1)2、STR(k-1)3、及びSTR(k-1)4が順方向に記載の順に重ね書きされている。物理バンドPBAk-1のトラックSTR(k-1)2は、書き換え対象データがライトされた書き換え対象領域RR(k-1)を有する。書き換え対象領域RR(k-1)は、トラックSTR(k-1)2の円周方向において円周位置CP151から円周位置CP152までの範囲に相当する。バンド領域PBAk-1において、書き換え対象領域RR(k-1)よりも前に位置する円周位置CP151よりも前のトラックSTR(k-1)2と、トラックSTR(k-2)1と、トラックSTR(k―2)0とにライトされたデータは、前バンドデータに相当する。バンド領域PBAk-1において、書き換え対象領域RR(k-1)よりも後に位置する円周位置CP152よりも後のトラックSTR(k-1)2と、トラックSTR(k-1)3と、トラックSTR(k-1)4とにライトされたデータは、後バンドデータに相当する。図15において、バンド領域PBAk+2は、スペアバンドSBAに相当する。バンド領域PBAk+2は、トラックSTR(k+2)0、STR(k+2)1、STR(k+2)2、STR(k+2)3、及びSTR(k+2)4が順方向に記載の順に重ね書きされている。バンド領域PBAk+2のトラックSTR(k+2)2は、スペア対象領域SRR(k+2)を有する。スペア対象領域SRR(k+2)は、トラックSTR(k+2)2の円周方向において円周位置CP151から円周位置CP152までの範囲に相当する。図15では、説明の便宜上、各バンド領域PBAk-2、PBAk-1、PBAk、PBAk+1、及びPBAk+2の各トラックを所定のトラック幅で円周方向に延出している長方形状に示しているが、実際には、円周方向に沿って湾曲している。また、各バンド領域PBAk-2、PBAk-1、PBAk、PBAk+1、及びPBAk+2の各トラックは、半径方向に変動しながら円周方向に延出している波状であってもよい。なお、図15において、サブ領域SBRには、5つのバンド領域PBAk-2乃至PBAk+2が配置されているが、4つ以下のバンド領域BAが配置されていてもよいし、6つ以上のバンド領域BAが配置されていてもよい。また、物理バンドPBAk-2乃至PBAk+2は、それぞれ、5つのトラックが重ね書きされているが、4つ以下のトラックが重ね書きされていてもよいし、6つ以上のトラックが重ね書きされていてもよい。
図15に示した例では、システムコントローラ150は、書き換え対象データDG151を書き換え対象論理バンドLBAk-1の書き換え対象領域RR(k-1)にライトするフラッシュ処理を実行する。システムコントローラ150は、例えば、スペアバンドSBA(物理バンドPBAk+2)のトラックSTR(k+2)0、STR(k+1)1、及び円周位置CP151の前のトラックSTR(k+2)2に論理バンドLBAk-1(物理バンドPBAk-1)の前バンドデータを瓦記録する。スペアバンドSBA(物理バンドPBAk+2)に論理バンドLBAk-1(物理バンドPBAk-1)の前バンドデータを瓦記録した場合、システムコントローラ150は、スペアバンドSBA(物理バンドPBAk+2)のスペア対象領域SRR(k+2)にメディアキャッシュ10bからリードした書き換えデータDG151を瓦記録する。スペアバンドSBA(物理バンドPBAk+2)のスペア対象領域SRR(k+2)に書き換えデータDG151をライトした後に、システムコントローラ150は、例えば、スペアバンドSBA(物理バンドPBAk+2)の円周位置P152の後のトラックSTR(k+2)2、トラックSTR(k+2)3、及びトラックSTR(k+2)4に論理バンドLBAk-1(物理バンドPBAk-1)の後バンドデータを瓦記録する。スペアバンド(物理バンドPBAk+2)SBAに論理バンドLBAk-1(物理バンドPBAk-1)の後バンドデータを瓦記録した場合、システムコントローラ150は、スペアバンドSBA(物理バンドPBAk+2)に論理バンド番号LBAk-1に割り当てて物理バンドPBAk+2を論理バンドLBAk-1に変更し、物理バンドPBAk-1をスペアバンドSBAに設定する。また、システムコントローラ150は、書き換えデータDG151のヘッダを無効化し、主テーブルから書き換えデータDG151のエントリを削除する。
システムコントローラ150は、メディアキャッシュ10bを経由せずにユーザデータ領域10aに直接データをライトする処理(以下、バイパスライト又はバイパスライト処理と称する場合もある)を実行する。システムコントローラ150は、ホスト200等から転送される複数のデータ(以下、転送データと称する場合もある)をシーケンシャルライトするコマンドをホスト200等から受けた場合、メディアキャッシュ10bを経由せずに所定のバンド領域BAに複数の転送データを直接ライト(バイパスライト)する。転送データは、ブロックデータ、又はデータ群等を含む。システムコントローラ150は、例えば、所定のバンド領域BAの先頭のセクタ(以下、バンド内先頭セクタと称する場合もある)からこのバンド領域BAの最後尾のセクタ(以下、バンド内最後尾セクタと称する場合もある)までシーケンシャルにデータをライト可能な場合のみ、バイパスライトを実行する。言い換えると、システムコントローラ150は、1バンド領域BA分の転送データをシーケンシャルライトすると判定した場合のみ、ユーザデータ領域10aにバイパスライトを実行する。例えば、1バンド領域BA分の転送データをシーケンシャルライトすると判定した場合、システムコントローラ150は、1バンド領域BA分の転送データをスペアバンドSBAにバイパスライトする。なお、使用中等によりスペアバンドSBAにバイパスライトできない場合、システムコントローラ150は、メディアキャッシュ10bに一旦ライトしてもよい。
システムコントローラ150は、複数の転送データをバンド領域BAの一部にライトするコマンドをホスト200等から受けた場合、メディアキャッシュ10bを経由して所定のバンド領域BAに複数の転送データのライト処理(フラッシュ処理)を実行する。言い換えると、システムコントローラ150は、1バンド領域BA未満分の転送データをシーケンシャルライトすると判定した場合、メディアキャッシュ10bを経由して所定のバンド領域BAに1バンド領域BA未満分の転送データのライト処理(フラッシュ処理)を実行する。
図16は、バイパスライト処理及びフラッシュ処理の一例を示す模式図である。図16には、ユーザデータのLBA空間と、メディアキャッシュ10bと、バッファ130と、ユーザデータ領域10aとを示している。LBA空間は、複数の転送データの少なくとも1つのストリームを含む。図16に示した例では、LBA空間において、転送データWD1、WD2、WD3、WD4、及びWD5が、記載の順に転送されている。転送データWD3は、分割データ(転送データ)WD3a及び分割データ(転送データ)WD3bを有する。転送データWD5は、分割データ(転送データ)WD5a及び分割データ(転送データ)WD5bを有する。図16において、バッファ130は、既に所定の記録領域に記録されているデータ(以下、既存データと称する場合もある)EDを有している。図16には、バンド領域(論理バンド)BAm、BAm+1、及びBAm+2を示している。バンド領域(論理バンド)BAmには、既存データEDがライトされている。図16に示した例では、転送データWD1、WD2、及びWD3aは、バンド領域(論理バンド)BAmの既存データEDの後の領域に割り当てられる。転送データWD1、WD2、及びWD3aは、バンド領域BAmの途中からライトされる。転送データWD3b、WD4、及びWD5aは、バンド領域(論理バンド)BAm+1に割り当てられる。転送データWD3b、WD4、及びWD5aは、バンド領域BAm+1のバンド内先頭セクタからバンド内最後尾セクタまでシーケンシャルにデータをライトされる。転送データWD5b以降のデータは、バンド領域(論理バンド)BAm+2に割り当てられる。転送データWD5b以降のデータは、バンド領域BAm+2のバンド内先頭セクタからバンド内最後尾セクタまでシーケンシャルにデータをライトされる。
図16に示した例では、システムコントローラ150は、転送データWD1、WD2、及びWD3aをユーザデータ領域10aのバンド領域BAmにフラッシュ処理する。システムコントローラ150は、転送データWD1、WD2、及びWD3aをメディアキャッシュ10bに一旦ライトしてバッファ130に移動させる。システムコントローラ150は、バンド領域BAmにライトされている既存データEDをリードしてバッファメモリ130に移動させる。システムコントローラ150は、バッファメモリ130において既存データEDの後に転送データWD1、WD2、及びWD3aを連続的に配置して、ユーザデータ領域10aのバンド領域BAmに既存データED、転送データWD1、WD2、及びWD3aの記載の順にシーケンシャルに瓦記録する。
例えば、マルチストリームライトでは、各転送データWD1、WD2、及びWD3aの各ライトコマンドの間の他のストリームのライトコマンドが実行されるため、同じストリーム内の各ライトコマンドは別々に処理される。メディアキャッシュ10bへの転送データの記録処理は、ライトコマンドを処理した順序に従って記録されるため、各転送データWD1、WD2、及びWD3aのそれぞれの間には異なるストリームのデータ等が配置され得る。メディアキャッシュ10bにおいて間隔を置いて配置された各転送データWD1、WD2、及びWD3aをそれぞれリードしてバッファ130に記録させる場合、シークや回転待ち等により処理に時間を要する。
図16に示した例では、システムコントローラ150は、転送データWD3b、WD4、及びWD5aをユーザデータ領域10aのバンド領域BAm+1にバイパスライトする。
例えば、システムコントローラ150は、転送データWD3b、WD4、及びWD5aをユーザデータ領域10aのスペアバンドSBAにライトし、転送データWD3b、WD4、及びWD5aのスペアバンドSBAへのライトが完了した場合にスペアバンドSBAとバンド領域BAm+1とを入れ換える。なお、システムコントローラ150は、ユーザデータ領域10aのスペアバンドSBAが使用中である場合、転送データWD3b、WD4、及びWD5aをメディアキャッシュ10bに一旦ライトして、フラッシュ処理でバンド領域BAm+1にライトしてもよい。この場合、バンド領域BAm+1に対応する物理バンドは、他の用途、例えば、転送データWD5a以降のデータのバイパスライト処理のスペアバンドとして使用されてもよい。
また、システムコントローラ150は、転送データWD5b以降のデータをユーザデータ領域BAm+2にバイパスライトする。例えば、システムコントローラ150は、転送データWD5b以降のデータをユーザデータ領域10aのスペアバンドSBAにライトし、転送データWD5b以降のデータをスペアバンドSBAへのライトが完了した場合にスペアバンドSBAとバンド領域BAm+2とを入れ換える。なお、システムコントローラ150は、ユーザデータ領域10aのスペアバンドSBAが使用中である場合、転送データWD5b以降のデータをメディアキャッシュ10bに一旦ライトして、フラッシュ処理でバンド領域BAm+2にライトしてもよい。この場合、バンド領域BAm+2に対応する物理バンドは、他の用途、例えば、他の転送データのバイパスライト処理のスペアバンドとして使用されてもよい。
システムコントローラ150は、所定のデータ容量、所定の長さ(以下、データ長と称する場合もある)、又は所定のセクタ数のデータをライトするコマンド等を受けることによりシーケンシャルライトであると判定した場合、メディアキャッシュ10bにシーケンシャルライトするデータを連続的にライト可能な領域(以下、保持領域と称する場合もある)を確保する。例えば、システムコントローラ150は、所定のデータをディスク10にシーケンシャルライトすると判定した場合に、メディアキャッシュ10bに保持領域が存在しなければ新たに生成(又は作成)して保持領域を確保する。メディアキャッシュ10bに保持領域を確保する場合、システムコントローラ150は、主テーブルTB2の保持領域に対応するエントリのデータ群内セクタ数に保持領域のセクタ数を記録する。また、メディアキャッシュ10bに保持領域を確保する場合、システムコントローラ150は、保持領域の内の有効セクタの配置情報を保持領域に対応するエントリを拡張テーブルTB3に記録(又は追加)する。システムコントローラ150は、例えば、保持領域SWAに全てデータがライトされたと判定した場合にディスク10の所定の領域に保持領域SWAにライトしたデータをライト処理(フラッシュ処理)する。
例えば、システムコントローラ150は、既存データがライトされているバンド領域(論理バンド)BAにフラッシュ処理を実行する場合、既存データがライトされた領域を除く残りのバンド領域BA(以下、残余バンド領域と称する場合もある)に相当する保持領域をメディアキャッシュ10bに確保する。例えば、残余バンド領域に相当する保持領域をメディアキャッシュ10bに確保する場合、システムコントローラ150は、主テーブルTB2の保持領域に対応するエントリのデータ群内セクタ数に残余バンド領域のセクタ数を記録する。例えば、残余バンド領域に相当する保持領域をメディアキャッシュ10bに確保する場合、システムコントローラ150は、保持領域の有効セクタの配置情報を保持領域に対応するエントリを拡張テーブルTB3に記録(又は追加)する。システムコントローラ150は、例えば、保持領域に残余バンド領域に記録する全てのデータがライトされたと判定した場合に、ディスク10の所定の残余バンド領域に保持領域にライトしたデータをライト処理(フラッシュ処理)する。また、例えば、システムコントローラ150は、既存データがライトされているバンド領域(論理バンド又は物理バンド)BAにフラッシュ処理を実行し、且つスペアバンドSBAにバイパスライトできない場合、残余バンド領域に相当する保持領域と1バンド領域BAに相当する保持領域とを連続的な配置でメディアキャッシュ10bに確保する。システムコントローラ150は、例えば、これら保持領域に残余バンド領域と1バンド領域BAとに全てのデータがそれぞれライトされたと判定した場合に、ディスク10の所定の残余バンド領域とディスク10の所定のバンド領域とにこれら保持領域にそれぞれライトしたデータをライト処理(フラッシュ処理)する。
図17及び図18は、本実施形態に係るメディアキャッシュ10bへのライト処理の一例を示す模式図である。図17及び図18は、例えば、図16に対応している。図17及び図18には、保持領域SWAを示している。図17には、保持領域SWAにおいてデータがライトされていない領域(以下、未使用領域と称する場合もある)UNAを示している。
図17に示した例では、システムコントローラ150は、転送データWD1、WD2、及びWD3aをバンド領域BAmにフラッシュ処理によりシーケンシャルライトすると判定した場合、転送データWD1、WD2、及びWD3aに相当するセクタ数の保持領域SWAをメディアキャッシュ10bに確保する。システムコントローラ150は、ホスト200等から転送データWD1を受けた場合、保持領域SWAに転送データWD1をライトする。システムコントローラ150は、主テーブルTB2の保持領域SWAに対応するエントリのデータ群内セクタ数に転送データWD1、WD2、及びWD3aに相当するセクタ数を記録し、拡張テーブルTB3の保持領域SWAに対応するエントリのLBAオフセットに0を記録し、拡張テーブルTB3の保持領域SWAに対応するエントリの連続有効セクタ数に転送データWD1のセクタ数を記録する。
図18に示した例では、システムコントローラ150は、ホスト200等から転送データWD1と同じストリームである転送データWD2及びWD3a等を受けた場合、保持領域SWAの未使用領域UNAに順次ライトする。ホスト200等から転送データWD2を受けた場合、システムコントローラ150は、保持領域SWAにおいて、転送データWD1に続けて転送データWD2をライトする。ホスト200等から転送データWD3aを受けた場合、システムコントローラ150は、保持領域SWAにおいて、転送データWD2に続けて転送データWD3aをライトする。システムコントローラ150は、拡張テーブルTB3の保持領域SWAに対応するエントリに転送データWD2及びWD3aにそれぞれ対応する複数のLBAオフセットを追加し、拡張テーブルTB3の保持領域SWAに対応するエントリに転送データWD2及びWD3aにそれぞれ対応する連続有効セクタ数を追加する。システムコントローラ150は、例えば、保持領域SWAに全ての転送データWD1、WD2、及びWD3aがライトされたと判定した場合にバンド領域BAmの残余バンド領域に保持領域にライトした転送データWD1、WD2、及びWD3aをライト処理(フラッシュ処理)する。なお、システムコントローラ150は、ホスト200等から転送データWD1と異なるストリームの転送データを受けた場合、保持領域SWA以外のメディアキャッシュ10bにライトする。また、転送データWD2及びWD3aの順序は入れ替わっていてもよい。この場合、保持領域SWAにおいて転送データWD3a及びWD2の記載の順にライトされる。転送データWD2及びWD3aがディスク10においてライトされる位置は、転送データWD2及びWD3aの記載の順に転送データを受けた場合と同一である。
図19は、本実施形態に係るライト処理の一例を示すフローチャートである。
システムコントローラ150は、ホスト200等のコマンドによりホスト200等から転送されるデータをシーケンシャルライトするかシーケンシャルライトしないかを判定する(B1901)。シーケンシャルライトしないと判定した場合(B1901のNO)、システムコントローラ150は、メディアキャッシュ10bにデータを記録し(B1902)、B1908の処理に進む。シーケンシャルライトすると判定した場合(B1901のYES)、システムコントローラ150は、バイパスライトするかバイパスライトしないかを判定する(B1903)。バイパスライトすると判定した場合(B1903のYES)、システムコントローラ150は、スペアバンドSBAを使用できるか使用できないかを判定する(B1904)。スペアバンドSBAが使用できると判定した場合(B1904のYES)、システムコントローラ150は、スペアバンドSBAにデータを記録し(B1905)、処理を終了する。スペアバンドSBAが使用できないと判定した場合(B1904のNO)、システムコントローラ150は、B1906の処理に進む。
バイパスライトしないと判定した場合(B1903のNO)、システムコントローラ150は、メディアキャッシュ10bに保持領域SWAが存在しなければ新たに作成し、確保する(B1906)。システムコントローラ150は、保持領域SWAに所定のバンド領域BAにシーケンシャルにライトするデータを記録する(B1907)。システムコントローラ150は、保持領域SWAがすべてライトされた、又はメディアキャッシュ10bの使用率が所定の値に達したなど、必要と判断された場合にメディアキャッシュ10bのフラッシュ処理を実行し(B1908)、処理を終了する。
第1実施形態によれば、磁気ディスク装置1は、シーケンシャルライトすると判定した場合、メディアキャッシュ10bにユーザデータ領域10aの保持領域SWAを確保し、ユーザデータ領域10aにシーケンシャルライトするデータを保持領域SWAに記録する。磁気ディスク装置1は、保持領域SWAに記録したデータをスペアバンドSBAにライトする。保持領域SWAに記録したデータのスペアバンドSBAへのライト処理が完了した場合、磁気ディスク装置1は、スペアバンドSBAに相当する物理バンドに対象論理バンドの論理バンド番号を割り当てて新たな対象論理バンドに変更する。シーケンシャルライトするデータをメディアキャッシュ10bの保持領域SWAにまとめてライトすることで、磁気ディスク装置1は、メディアキャッシュ10bからユーザデータ領域10aにデータを移動する際に効率的にデータにアクセスできる。そのため、磁気ディスク装置1は、メディアキャッシュ10bへのアクセス効率を向上することができる。また、磁気ディスク装置1は、ライトコマンドのスループットも向上することができる。従って、磁気ディスク装置1は、ライト処理性能を向上することができる。
次に、他の変形例に係る磁気ディスク装置について説明する。他の変形例において、前述の実施形態と同一の部分には同一の参照符号を付してその詳細な説明を省略する。
(変形例1)
変形例1に係る磁気ディスク装置1は、ライト処理方法が前述した第1実施形態の磁気ディスク装置1と異なる。
システムコントローラ150は、ホスト200等から最初に転送されたデータ、例えば、データ群内先頭セクタにライトするデータを保持領域SWAにライトする場合にのみ、ヘッダをライトする。言い換えると、システムコントローラ150は、ホスト200等から最初に転送されたデータ以外のデータを保持領域SWAにライトする場合には、ヘッダをライトしない。システムコントローラ150は、ホスト200等から最初に転送されたデータ以外のデータを保持領域SWAにライトする場合、保持領域SWAに対応する拡張テーブルTB3のエントリにホスト200等から最初に転送されたデータ以外のデータに対応する有効セクタの配置情報を追加(記録)する。
システムコントローラ150は、拡張テーブルTB3を常にディスク10、例えば、システムエリア10cにライトしていないため、電源等が遮断された場合には、拡張テーブルTB3を修復する。例えば、電源等が遮断された場合には、システムコントローラ150は、メディアキャッシュ10bをリードすることで拡張テーブルTB3を修復する。メディアキャッシュ10bがリングバッファのFIFOであるため、メディアキャッシュ10bにライトされたデータにはIDが付加されている。このIDは、メディアキャッシュ10bの各セクタに割り当てられるLBAが最後尾メディアキャッシュLBAから先頭メディアキャッシュLBAに戻る際に変更される。例えば、IDは、サーボデータに含まれていてもよい。そのため、システムコントローラ150は、メディアキャッシュ10bをリードすることで有効セクタを判別できるため、拡張テーブルTB3を修復できる。
図20は、変形例1に係るメディアキャッシュ10bへのライト処理の一例を示す模式図である。図20は、例えば、図16に対応している。図20には、図16に示した転送データWD2の一部の転送データWD2aを示している。図20において、未使用領域UNAには、保持領域に現在ライトしているデータとIDの異なる下地データBDTがライトされている。図20において、例えば、転送データWD1と転送データWD2bのIDは、同じである。転送データWD1及びWD2bのIDと、下地データBDTのIDとは異なる。
図20に示した例では、システムコントローラ150は、ホスト200等から転送データWD1を受けた場合、保持領域SWAに転送データWD1をライトし、転送データWD1の前の保持領域SWAにヘッダHDR1をライトする。システムコントローラ150は、ホスト200等から転送データWD1と同じストリームである転送データWD2aを受けた場合、転送データWD1の後の保持領域SWAに転送データWD2aをライトする。
図21は、変形例1に係る拡張テーブルTB3の一例を示す模式図である。図21は、例えば、図20に対応している。図20の保持領域SWAに対応する図21に示す拡張テーブルTB3のエントリ番号E21のエントリは、LBAオフセットOFS1、OFS2、FFFFFFFFh、…、FFFFFFFFhと、連続有効セクタ数NS1、NS2、FFFFFFFFh、…、FFFFFFFFhと、を含む。LBAオフセットOFS1と連続有効セクタ数NS1とは、転送データWD1がライトされた保持領域SWAに対応する有効セクタの配置情報に相当する。LBAオフセットOFS2と連続有効セクタ数NS2とは、転送データWD2bがライトされた保持領域SWAに対応する有効セクタの配置情報に相当する。
図21に示した例では、システムコントローラ150は、拡張テーブルTB3のエントリE21に、転送データWD1がライトされた保持領域SWAに対応するLBAオフセットOFS1と連続有効セクタ数NS1とを記録する。また、転送データWD1を保持領域SWAにライトした後に転送データWD2bを保持領域SWAにライトした場合、システムコントローラ150は、拡張テーブルTB3のエントリE21に、転送データWD2bがライトされた保持領域SWAに対応するLBAオフセットOFS2と連続有効セクタ数NS2とを追加する。
電源等が遮断された場合、システムコントローラ150は、図20に示したメディアキャッシュ10bの保持領域SWAにライトされた転送データWD1及びWD2bのIDから転送データWD1及びWD2bがライトされた保持領域SWAのセクタを有効セクタと判定する。システムコントローラ150は、メディアキャッシュ10bの保持領域SWAにライトされた転送データWD1及びWD2bをリードして、図21に示した拡張テーブルTB3を修復する。
変形例1に係る磁気ディスク装置1は、ホスト200等から最初に転送されたデータを保持領域SWAにライトする場合にのみ、ヘッダをライトする。そのため、磁気ディスク装置1は、ライト処理性能を向上することができる。
なお、前述した実施形態及び変形例において、磁気ディスク装置1は、瓦記録型式の磁気ディスク装置としたが、通常記録型式の磁気ディスク装置にも前述した実施形態及び変形例の構成を適用することができる。例えば、ユーザデータ領域10aの所定の領域にランダムライトが集中する場合には、図17及び図18に示すように、磁気ディスク装置1は、メディアキャッシュ10bに保持領域SWAに相当する領域を確保し、ランダムライトが集中する領域にライトするデータを保持領域SWAに相当する領域にライトしてもよい。磁気ディスク装置1は、保持領域SWAに相当する領域からデータをリードして、ランダムライトが集中する領域にライトする。
いくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。