IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

<>
  • -磁気ディスク装置及びライト方法 図1
  • -磁気ディスク装置及びライト方法 図2
  • -磁気ディスク装置及びライト方法 図3
  • -磁気ディスク装置及びライト方法 図4
  • -磁気ディスク装置及びライト方法 図5
  • -磁気ディスク装置及びライト方法 図6
  • -磁気ディスク装置及びライト方法 図7
  • -磁気ディスク装置及びライト方法 図8
  • -磁気ディスク装置及びライト方法 図9
  • -磁気ディスク装置及びライト方法 図10
  • -磁気ディスク装置及びライト方法 図11
  • -磁気ディスク装置及びライト方法 図12
  • -磁気ディスク装置及びライト方法 図13
  • -磁気ディスク装置及びライト方法 図14
  • -磁気ディスク装置及びライト方法 図15
  • -磁気ディスク装置及びライト方法 図16
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2025027279
(43)【公開日】2025-02-27
(54)【発明の名称】磁気ディスク装置及びライト方法
(51)【国際特許分類】
   G11B 20/10 20060101AFI20250219BHJP
   G11B 5/09 20060101ALI20250219BHJP
   G11B 5/012 20060101ALI20250219BHJP
【FI】
G11B20/10 311
G11B20/10 H
G11B5/09 311Z
G11B5/012
【審査請求】未請求
【請求項の数】10
【出願形態】OL
(21)【出願番号】P 2023131952
(22)【出願日】2023-08-14
(71)【出願人】
【識別番号】000003078
【氏名又は名称】株式会社東芝
(71)【出願人】
【識別番号】317011920
【氏名又は名称】東芝デバイス&ストレージ株式会社
(74)【代理人】
【識別番号】110001737
【氏名又は名称】弁理士法人スズエ国際特許事務所
(72)【発明者】
【氏名】青木 隆雄
(72)【発明者】
【氏名】熊谷 龍太
【テーマコード(参考)】
5D044
【Fターム(参考)】
5D044BC01
5D044CC04
5D044DE03
5D044DE12
5D044DE32
5D044DE34
5D044DE37
5D044EF03
5D044GK19
(57)【要約】
【課題】空きバンドを使用せずバイパスライトをする磁気ディスク装置及びライト方法を提供することを目的とする。
【解決手段】実施形態に係る磁気ディスク装置は、瓦記録によりデータを記録する磁気ディスク装置であって、磁気ディスク上の瓦記録領域へシーケンシャルライトを行う場合に、ライト対象トラックに書き込まれるデータと前記ライト対象トラックの前方1トラックに配置されるデータとを揮発メモリ上に受信してから前記ライト対象トラックへの書き込みを行い、予期しない電源断の発生時に、前記揮発メモリ上に受信したデータのうち瓦記録領域に書き込んでいないデータを不揮発メモリに保存する。
【選択図】図7
【特許請求の範囲】
【請求項1】
瓦記録によりデータを記録する磁気ディスク装置であって、
磁気ディスク上の瓦記録領域へシーケンシャルライトを行う場合に、ライト対象トラックに書き込まれるデータと前記ライト対象トラックの前方1トラックに配置されるデータとを揮発メモリ上に受信してから前記ライト対象トラックへの書き込みを行い、
予期しない電源断の発生時に、前記揮発メモリ上に受信したデータのうち瓦記録領域に書き込んでいないデータを不揮発メモリに保存することを特徴とする磁気ディスク装置。
【請求項2】
予期しない電源断の発生時に、前記揮発メモリ上に受信したデータのうち瓦記録領域に書き込んでいないデータに、これらを管理する情報を付加して不揮発メモリに保存することを特徴とする請求項1に記載の磁気ディスク装置。
【請求項3】
電源断の発生時に、前記揮発メモリ上の前記データを磁気ディスクの回転エネルギーによる起電力を用いて不揮発メモリに書き込む請求項1に記載の磁気ディスク装置。
【請求項4】
前記瓦記録領域へのシーケンシャルライトは、ホストから受信したデータを、メディアキャッシュを経ずに直接、瓦記録領域に書き込む処理(バイパスライト)であることを特徴とする請求項1に記載の磁気ディスク装置。
【請求項5】
前記瓦記録領域へのシーケンシャルライトが、磁気ディスク上の記録データとメディアキャッシュのデータとの組み合わせからなるデータによって行われることを特徴とする請求項1に記載の磁気ディスク装置。
【請求項6】
前記瓦記録領域へのシーケンシャルライトが、磁気ディスク上の記録データ自身によって行われることを特徴とする、請求項1記載の磁気ディスク装置。
【請求項7】
瓦記録領域の書き込み単位が一定トラック数毎に区切られている場合に、
前記書き込み単位内の最後のトラックのデータを受信したときに、すべての未書き込みデータを瓦記録領域へ連続的に書き込むことを特徴とする請求項1に記載の磁気ディスク装置。
【請求項8】
瓦領域の書き込み領域の先頭から書き込む場合に、
書き込み対象トラックのトラックスキューを前方のトラックのものと同じにして書き込むことを特徴とする請求項1に記載の磁気ディスク装置。
【請求項9】
瓦領域の書き込み対象トラックへの書き込み時に、前方の複数トラックのデータが消える場合に、前記前方の複数トラック分の全データを前記揮発メモリ上に受信してから前記書き込み対象トラックへの書き込みを行うことを特徴とする請求項1乃至請求項8のいずれか1項に記載の磁気ディスク装置。
【請求項10】
瓦記録によりデータを記録する磁気ディスク装置のデータライトの方法であって、
磁気ディスク上の瓦記録領域へシーケンシャルライトを行う場合に、ライト対象トラックに書き込まれるデータと前記ライト対象トラックの前方1トラックに配置されるデータとを揮発メモリ上に受信してから前記ライト対象トラックへの書き込みを行い、
予期しない電源断の発生時に、前記揮発メモリ上に受信したデータのうち瓦記録領域に書き込んでいないデータを不揮発メモリに保存することを特徴とするデータライトの方法。
【発明の詳細な説明】
【技術分野】
【0001】
この発明の実施形態は、瓦記録(SMR)技術を用いた磁気ディスク装置及びライト方法に関する。
【背景技術】
【0002】
Drive Managed SMR HDD(以降、磁気ディスク装置)において、ホストから送られてきたシーケンシャルなライトデータを、メディアキャッシュを経由せずに直接瓦記録領域に書き込むバイパスライト方式が用いられる。
【0003】
バイパスライト方式は、電断時のデータ保護などのために、書き込み対象のバンド(瓦記録方式の磁気ディスク装置の書き込み単位)へのデータの上書きを行わず、別の位置に空きバンド(既にデータが存在するバンドからそのデータをメディアキャッシュなど他の領域に移すことで新たなデータを書けるようにしたバンド)を生成してそこにデータを別途書き込む方式になっている。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】米国特許第10650845号明細書
【特許文献2】米国特許第11164598号明細書
【特許文献3】米国特許第9377956号明細書
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、複数のデータストリームの書き込みを並行して行うマルチストリーミングライト実行時には、多数の空きバンドが必要となり、そのためにメディアキャッシュへの書き込みが増える。
【0006】
本発明が解決しようとする課題は、空きバンドを使用せずバイパスライトをする磁気ディスク装置及びライト方法を提供することを目的とする。
【課題を解決するための手段】
【0007】
実施形態に係る磁気ディスク装置は、瓦記録によりデータを記録する磁気ディスク装置であって、磁気ディスク上の瓦記録領域へシーケンシャルライトを行う場合に、ライト対象トラックに書き込まれるデータとライト対象トラックの前方1トラックに配置されるデータとを揮発メモリ上に受信してからライト対象トラックへの書き込みを行い、予期しない電源断の発生時に、揮発メモリ上に受信したデータのうち瓦記録領域に書き込んでいないデータを不揮発メモリに保存する。
【図面の簡単な説明】
【0008】
図1図1は、第1の実施形態に係る磁気ディスク装置のハードウェア構成を示すブロック図である。
図2図2は、第1の実施形態に係る磁気ディスク上のトラックおよびデータの配置例を示す模式図である。
図3図3は、第1の実施形態に係る磁気ディスク上の領域配置の例を示す模式図である。
図4図4は、第1の実施形態に係る磁気ディスク上の瓦記録のトラックの重なりの例を示す模式図である。
図5図5は、第1の実施形態に係る磁気ディスク上のデータ領域中のサブ領域の例を示す模式図である。
図6図6は、第1の実施形態に係る磁気ディスク上のメディアキャッシュの使用例を示す模式図である。
図7図7は、第1の実施形態に係る磁気ディスク装置における磁気ディスクへのデータ書き込み処理の例を示す第1の模式図である。
図8図8は、第1の実施形態に係る磁気ディスク装置における磁気ディスクへのデータ書き込み処理の例を示す第2の模式図である。
図9図9は、第1の実施形態に係る磁気ディスク装置における磁気ディスクへのデータ書き込み処理の例を示す第3の模式図である。
図10図10は、第1の実施形態に係る磁気ディスク装置における磁気ディスクへのデータ書き込み処理の例を示す第4の模式図である。
図11図11は、第1の実施形態に係る磁気ディスク装置のバイパスライト処理用のバッファの例を示す模式図である。
図12図12は、第1の実施形態に係る磁気ディスク装置のバイパスライト処理の管理テーブルの例を示す図である。
図13図13は、第1の実施形態に係る磁気ディスク装置のバイパスライト処理でトラックに書き込んだデータの例を示す模式図である。
図14図14は、第1の実施形態に係る磁気ディスク装置のPLP機能によるデータ保存処理の例を示す模式図である。
図15図15は、第1の実施形態に係る磁気ディスク装置のバイパスライト処理の動作例を示すフローチャートである。
図16図16は、第2の実施形態に係る磁気ディスク装置における磁気ディスクへのデータ書き込み処理の例を示す模式図である。
【発明を実施するための形態】
【0009】
以下、図面を参照しながら、本発明の実施形態について説明する。
(第1の実施形態)
本実施形態は、Shingled Magnetic Recording(SMR)のパイパスライト処理において、Power Loss Protection(PLP)機能のメモリを利用した磁気ディスク装置の例を示す。より具体的には、磁気ディスク装置が電断した時に、未書き込みデータをPLP機能によってバックアップする。
【0010】
図1は、第1の実施形態に係る磁気ディスク装置のハードウェア構成を示すブロック図である。
【0011】
磁気ディスク装置1は、ホストシステム20からの要求に応じて磁気ディスクDKの面上にデータを書き込み、あるいは読み出すことを目的とした記憶装置である。磁気ディスク装置1は、隣接トラックの一部に対して重ね書きを行う記録方式であるSMR方式を採用したDrive Managed SMRの磁気ディスク装置である。Drive Managed SMRとは、磁気ディスク装置側で、磁気ディスクDKへのデータ書き込み位置などを管理するSMR方式である。また磁気ディスク装置1は、電源喪失時にバッファRAM11内のデータの一部をフラッシュROM14に書き込むPLP機能を備える。
【0012】
磁気ディスクDKは、円盤型の磁気による回転ディスク記憶媒体であり、スピンドルモータ(SPM)3に固定されており、SPM3に駆動されることにより一定の速度で回転する。詳細は後述する。
【0013】
磁気ヘッド2は、アクチュエータ5の一端に固定されており、アクチュエータ5の他端はボイスコイルモータ(VCM)4に固定されている。磁気ヘッド2は、VCM4に駆動されることにより、VCM4の軸を中心とした円弧軌道のうち磁気ディスクDKの表面に重なる範囲を移動する。磁気ヘッド2は、磁気ディスクDKにライト信号を出力してデータをライトしたり、磁気ディスクDKからデータをリードしてリード信号として取り出したりするヘッドである。
【0014】
図1の磁気ディスク装置1は、磁気ディスクDKおよび磁気ヘッド2を1つずつ備える場合の例を示したが、それぞれ複数からなる構成(マルチディスクなどと称される)もあり得る。この場合、複数の磁気ディスクDKはある間隙をもって重なった状態でSPM3に固定され、複数の磁気ヘッド2およびアクチュエータ5は磁気ディスクの間隙に合わせて重なった状態でVCM4に固定される。したがって、すべての磁気ディスクDKは同時に回転し、すべての磁気ヘッド2は同時に移動する。なお、磁気ヘッド2は磁気ディスクDKの表裏両面に対して配置される場合もある。
【0015】
スピンドルモータ(SPM)3は、磁気ディスクDKの支柱であり、磁気ディスク装置1の筐体などに設置される。スピンドルモータ3が回転により磁気ディスクDKが回転する。
ボイスコイルモータ(VCM)4は、入力される電流に基づいて、アクチュエータ5などの動作を制御する。
【0016】
アクチュエータ5は、一端に磁気ヘッド2が固定されており、他端はVCM4に固定されている。なお、本実施形態のアクチュエータ5は、VCM4によって制御される例を示すが、アクチュエータ5の動作制御は、ボイスコイルモータに限定されない。
モータドライバ6は、CPU15からの制御信号に基づいて、SPM3やVCM4を制御する。
【0017】
また、モータドライバ6は、SPM3の回転中に電源の喪失を検出した場合に磁気ディスクDKの慣性モーメントをエネルギー源としたSPM3の逆起電力による電力を一定期間各LSIに供給する役割も担う。このとき、CPU15は電源喪失時処理の1つとして、バッファRAM11内のデータの一部をフラッシュROM14に書き込むことを行う。この機能は一般的にPower Loss Protection(PLP)機能と呼ばれている。
【0018】
ヘッドIC7は、磁気ヘッド2によって読み出されたアナログ信号(リード信号)を増幅し、リード/ライトIC8へ出力したり、リード・ライトIC8から受信した書き込み信号(ライト信号)を磁気ヘッド2に出力したりする、例えば、IC(Integrated Circuit)である。
【0019】
リード・ライトIC8は、磁気ディスクDKへの書き込みデータ(ライトデータ)をヘッドIC7へ出力したり、ヘッドIC7から受信したアナログ信号から磁気ディスクDKからの読み込みデータ(リードデータ)を取得したりする、例えば、ICである。リード・ライトIC5は主として磁気ヘッドDKの位置決め処理に必要な信号処理を行うサーボブロック21と、データの読み出し・書き込みのための信号処理を行うリード・ライトブロック22に大別される。
【0020】
ゲートアレイ9は、制御用の諸信号を生成するICなどのハードウェアを示す。なお、ゲートアレイ9の機能は、ソフトウェアにより実行しても良いし、ハードウェアとソフトウェアの組合せによって実行してもよい。
【0021】
ディスクコントローラ(HDC)10は、マイクロプロセッサなどコンピュータ機能を備えたICチップなどのハードウェアやソフトウェアなどにより構成されてもよい。ディスクコントローラ(HDC)10は、CPUバス12以外にゲートアレイ9、バッファRAM11、リード/ライトIC8に接続されている。またHDC10は、さらに機能ごとにホストシステム20とのインタフェース制御を行うホストブロック23、バッファRAMの制御を行うバッファブロック25、リード・ライトIC8およびゲートアレイ9と接続され、読み出し・書き込み処理を行うリード・ライトブロック24などに分かれる。
【0022】
磁気ディスク装置1がホストシステム20から読み出し命令(リードコマンド)を受信し、磁気ディスクDKのデータを読み出す時、磁気ディスクDKから磁気ヘッド2によってアナログ信号が読み出されてヘッドIC7に出力される。ヘッドIC7によって増幅されたアナログ信号は、リード/ライトIC8によってサーボ信号とデータ信号に分離され、データ信号はリード・ライトブロック22で復号化された後、HDC10に送られる。HDC10は、受信したデータ信号をゲートアレイ9からの制御用の各種信号にしたがって処理することによりホストシステム20に転送すべきデータ(例えばリードコマンドにより要求された読み出しデータ)を生成する。このデータは一旦バッファRAM11に格納されてからホストシステム20に転送される。
【0023】
磁気ディスク装置1がホストシステム20から書き込み命令(ライトコマンド)を受信し、磁気ディスクDKへデータを書き込む時、ホストシステム20からHDC10に転送された書き込みデータは、一旦バッファRAM11に格納された後、ゲートアレイ9からの制御用の各種信号にしたがってHDC10からリード・ライトIC8へ送られる。リード・ライトIC8によって符号化された書き込みデータは、ヘッドIC7を経由して磁気ヘッド2によって磁気ディスクDKに書き込まれる。
【0024】
バッファRAM11は、電力供給が断たれると保存しているデータが失われる揮発性メモリであり、ホストシステム20からのライトコマンドのデータなどを一時保存する。またバッファRAM11の一部は、磁気ディスク装置1のパイパスライト処理用のバッファとして用いられる。
【0025】
CPUバス12は、データ伝送用のバスであり、変数等に使用するためのRAM13、CPU15が実行すべきプログラムが記録されているフラッシュROM14、リード・ライトIC8、制御用の諸信号の生成するゲートアレイ9、およびディスクコントローラ(HDC)10がそれぞれ接続される。
【0026】
フラッシュROM14は、CPU15からの制御により書き換えが可能である。また、フラッシュROM14はPLP機能によるデータの退避に使用するための専用領域も備えている。
【0027】
CPU15は、中央処理ユニットであり、モータドライバ6を通じてSPM3およびVCM4を制御する一方で、他のICの制御やコマンド処理など、装置全体の各種機能を制御する。リード・ライトIC8、ゲートアレイ9、およびHDC10の制御用レジスタはそれぞれCPU15のメモリ空間の一部に割り当てられており、CPU15はこの領域に対して読み出しおよび書き込みを行うことでこれらの制御を行う。またCPU15は、モータドライバ6を通じてSPM3の起動・停止および回転速度維持のための制御を行い、磁気ヘッドDKの位置決めはSPM3起動後の定常回転状態で行われる。
【0028】
ホストシステム20は、例えば、パソコン本体であり、磁気ディスク装置1に対してリードコマンドを出力してリードデータを取得したり、ライトコマンドとともにライトデータを出力したりする。
【0029】
図2は、第1の実施形態に係る磁気ディスク上のトラックおよびデータの配置例を示す模式図である。
【0030】
磁気ディスクDKは、SPM3によって回転軸203を中心に回転する。磁気ディスクが回転する方向(DKの半径方向に直交する方向)を円周方向と称する。半径方向は、磁気ディスクDKの中心である回転軸203から外に向かう方向を外周、外からに回転軸203に向かう方向を内周と称する。
【0031】
磁気ディスクDK上には、複数のトラック204が同心円状に配置されており、ホストシステム20から受け取ったデータは指定されたアドレスに応じ、これらの一部に記録される。図の例では、4つのトラックTR1、TR2、TR3、TR4(特に区別しない場合は、トラックTRと称する)を示したが、SPM12を中心として同心円状に複数のトラックが設定される。
【0032】
トラック204上には、位置決めのためのサーボデータ信号が記録されている領域(サーボ領域)201、およびホストシステムから転送されるデータを記録するための領域(データ領域)202が交互にかつ等間隔に配置されている。サーボ領域の210から217に示すように磁気ディスクDKの円周方向に等間隔に配置され、データ領域は、サーボ領域の間に配置される。
【0033】
磁気ヘッド2は、各サーボ領域からアナログ信号を読み出し、ヘッドIC7は、アナログ信号を増幅して、リード・ライトIC8は、増幅されたアナログ信号からデータ(サーボデータと称する)を取得する。磁気ディスクDKにおいてサーボ領域は円周方向に等間隔に配置されており、サーボデータは、時間的にも等間隔に取得される。
【0034】
リード・ライトIC8とゲートアレイ9は、サーボデータを利用して、磁気ヘッド2の位置決めのための信号(位置制御信号と称する)を生成する。CPU15は位置制御信号をもとにモータドライバ6を制御して、磁気ヘッド2の位置決めのための電流をリアルタイムでVCM4に流す。
【0035】
磁気ディスク装置1は、データ領域へのデータのリードライト(読み書き)を実行する際に、シーク制御、トラッキング制御などによりヘッド16を対象のトラックTR上に移動させ、ヘッド16からリード信号を読み出し、またはライト信号をトラックTRに出力する。特に区別する場合は、磁気ディスクDK上のデータをディスクデータと称し、読み出し命令された磁気ディスクDK上のデータをリードデータと称し、磁気ディスクDKへ書き込み命令されたデータをライトデータと称する。
【0036】
図3は、第1の実施形態に係る磁気ディスク上の領域配置の例を示す模式図である。
【0037】
データを書き込み(ライトと称する場合もある)可能なデータ領域に、ユーザ(ホストシステム20)から利用可能なユーザデータ領域と、ユーザデータを一時的に格納するメディアキャッシュ領域と、システム管理に必要な情報をライトするシステム領域とが割り当てられている。
【0038】
磁気ディスクDKは、外周側からシステム領域301、メディアキャッシュ(MC)領域302、ユーザデータ領域303に分割され、ユーザデータ領域303のみがSMR方式で記録される。なお、ここではデータ領域202のみに着目しているため、サーボ領域201は省略している。
【0039】
システム領域301には、ディフェクトマップ、MCの管理テーブル、SMRデータの管理テーブルなどの管理情報が記録される。
【0040】
MC領域302は、ユーザデータ領域303に書き込むべきデータを一時的に書き込んでおくメディアキャッシュとして利用される。SMR方式では、複数トラックのデータを一度に書き込む必要があり、ホストシステム20から受信したライトコマンドの更新対象のデータのみを直接書き換えることができないことが多い。このため、コマンドデータを一時的に保持することが必要となるが、バッファRAM11のみでは容量が限られるため、磁気ディスクDK上の領域をこの目的に使用する。
【0041】
ユーザデータ領域303は、ホストシステム20からのライトデータを最終的に記録する領域である。この領域はSMR方式で記録され、すべてのLBA(Logical Block Address)が領域中のいずれかに割り当てられる。また、ユーザデータ領域303はさらに複数のサブ領域(図では303a、303b、303cの3つのみを示しているが、数は限定されない)にさらに分割される。本実施形態におけるサブ領域はCDR(Constant Density Recording)ゾーンに対応する。
【0042】
図4は、第1の実施形態に係る磁気ディスク上の瓦記録のトラックの重なりの例を示す模式図である。
【0043】
磁気ディスクDK上のトラックはすべて環状であるが、ここでは模式的に各トラックを上下方向(磁気ディスクDKの円周方向)の四角形で表している。また水平方向は、磁気ディスクDKの半径方向に相当し、図は複数のトラックTRi(iは2以上の整数)が並んでいる例を示す。また図においては、磁気ディスクDKへ書き込む方向(ライト方向)を左から右とし、より左にあるトラックを後方トラック、より右にあるトラックを前方トラックと称する。
【0044】
磁気ディスク装置1はSMR方式を採用しているため、データ領域内では図に示すようにトラックの一部が隣接トラックに重なった状態で記録される。このため、トラックの書き込みは一方向(矢印の方向)に限定され、後方のトラックに戻って書くことはできない(重なりにより前方のデータを壊してしまうため)。
【0045】
SMR方式では、データの一部を書き換えるときに先頭(図4のTR1の先頭)まで戻ってすべてを書き直さなければならないことになるので、図2に示したユーザデータ領域303(またはサブ領域303a、303b、303c)内のトラックをグループに分け、グループ間に間隙を設けてグループ単位でのライトを行えるようにする。このグループをバンド(瓦バンド、SMRバンド)と呼ぶ。SMR方式では、後方のトラックに戻って書けないことからトラック間に隙間を空けてライトを行うこともなく、バンド内のライトは常にシーケンシャル(トラックについて一方向)になる。
【0046】
図5は、第1の実施形態に係る磁気ディスク上のデータ領域中のサブ領域の例を示す模式図であり、図3に示したサブ領域303aを例に、円周方向を縦、直径方向を横(左側が外周、右側が内周)とした長方形としてデータ領域を表している。
【0047】
サブ領域303aは、複数のバンドに分割され、これがデータ領域の書き込み単位となる。バンドへの書き込みを特にバンドライト(瓦書き)と称する。なお、図では簡単化のため、バンド数を5とした場合の例としバンド0からバンド4を示すが、数は限定しない。バンド数が少ないと書き込み単位が大きくなるので、実際はもっと多数のバンドを設定する。また、同一サブ領域内ではすべてのバンドの大きさ(ブロック数)はみな同じである。図では各バンドにそれぞれ5つのトラックを配置する例を示したが、数は限定しない。
【0048】
各バンドの間には一定間隔の間隙を設けてあるため、例えばバンド0の前方に配置されているバンド1への書き込みによってバンド0のデータが影響を受けるなどのようなことはない。
【0049】
また、LBAは、図において左のバンドから右のバンド(例えば、バンド0、バンド1、バンド2)の順に割り当てられる。したがって、1つのサブ領域に割り当てられるブロック数は「領域内のバンド数×バンドあたりのブロック数」となる。
【0050】
図6は、第1の実施形態に係る磁気ディスク上のメディアキャッシュの使用例を示す模式図であり、図3に示したメディアキャッシュ領域302の一使用例である。本図においては、より右の位置を前方、より左の位置を後方とする。
【0051】
メディアキャッシュ領域302上の全ブロックに対しては固定的にMC内でのLBAを示す「MC内LBA」が割り当てられ、管理はすべてこのMC内LBAで行われる。図6もMC内LBAで記述している。
【0052】
MC上にはホストシステム20から受信したデータが前方から順に記録され、各データには先頭LBA、ブロック数などを記したヘッダが付加される。ヘッダにはそのデータの属性情報(後述の先頭LBA、ブロック数、MC内LBA)が記録される。
【0053】
MCではこのようなヘッダ付きのデータがコマンドの受信順に先頭から順次記録され、基本的に古いものから順にデータ領域(図3のデータ領域303)に移される。図6は、3つのコマンドによるデータ0、1、2がメディアキャッシュ302に書き込まれた例を示し、データ0、1、2にはそれぞれヘッダ0、1、2が付加されて格納される。
【0054】
また、MCは末尾(MC内LBAの最大値)まで使用されたら再度先頭に戻って使用される。このように、MC領域はリングバッファのFIFOのように扱われ、そのデータ量は、最も古いデータの先頭MC内LBA(図中のLmB)から最も新しいデータの末尾のMC内LBA(図中のLmE)の差分で表される。
【0055】
なお、実際にはデータ領域へのデータの移動は常に一番古いものに対して行われるとは限らず、例えばデータ0よりも先にデータ1がMCに移動する場合もあるが、この場合は見かけの使用量は変化しない。
【0056】
また、動作中にMCのデータ量が増えて空き領域が少なくなりすぎるとコマンド受信時に空きを作らなければならなくなり、コマンド応答性が悪くなるのでMCのデータ量が多くなり過ぎないように適宜データ領域へデータを移動させる制御が行われ、これをMCのフラッシュ処理と呼ぶ。データ領域のライトはバンド単位でしか行えないので、移動先のバンドに存在していた既存のデータのうち更新されないものは同一データの書き直しとなる。例えば、MC中のデータMのフラッシュ先がA,B,C,D,Eの5ブロックからなるバンドのブロックCである場合には、A,B,M,D,Eというデータがフラッシュ先バンドにシーケンシャルにライトされる。データA,B,D,Eはライト前に元のデータを読み出すことで用意する。データA,B,M,D,Eの更新処理に関連するメディアキャッシュのフラッシュ処理については、図10を用いて後述する。
【0057】
以上、SMR方式によるバンドライトについて説明したが、SMR方式に対する性能改善の方法にバイパスライト(以降、BPWと称することもある)がある。バイパスライトは、一般的な方式であり、詳細の説明は省略するが、従来のSMR方式で用いていたMCを経由せずにホストシステム20から受信したデータを直接データ領域内のバンドに書き込む処理のことである。
【0058】
図7は、第1の実施形態に係る磁気ディスク装置における磁気ディスクへのデータ書き込み処理の例を示す第1の模式図であり、一つの瓦バンドへのバイパスライトを行う前の状態を表している。
【0059】
シーケンシャルライトバッファSB(SEQWバッファと称する場合もある)は、DRAM領域(バッファRAM11)の一部を瓦バンドに対するシーケンシャルライトの専用領域として確保したもので、ホストシステム20からのライトデータを一時的に蓄積するために用いられる。SEQWバッファ領域は、リングバッファとして利用され、受信済みデータの先頭を示すエントリポインタ(EP)と、瓦バンドへの書き込み済みデータの先頭を示すフラッシュポインタ(FP)を持つ。例えば図は、A、B1、B2、C1、C2の順にデータが受信されたことを示す。また図は、3つのライトコマンドA、B、Cを順番に受領し、それらのデータがSEQWバッファに格納された状態の例を示す。
【0060】
フラッシュポインタFPは、エントリポインタEPを追い越すことがなく、この二つのポインタの間にあるデータ(図のA、B1、B2、C1、C2)は、バンドにまだ書き込まれていないことを意味するので、予期しない電源断が発生した場合にはこのデータがPLP機能によりフラッシュROM14に保存される。
【0061】
本図では、瓦バンドは3トラック(TR0、TR1、TR2)からなる例を示し、各トラックを平面で表しており、その末尾と先頭は連続している。BT0、BT1、BT2(特に区別しない場合は、BTと示す)は、それぞれトラックTR0、TR1、TR2におけるデータ書き込みの先頭位置を示す。また、各トラックの先頭位置BTはトラックスキュー(位置ずれ)によりトラック番号の増加とともに前方へずれていく。すなわち、TR0、TR1、TR2の順に先頭位置BTが前方へずれていく。なお、本図の例ではバンドライトによって前方1トラック分のデータが消えるものとする。
【0062】
SEQWバッファに格納されたデータBおよびCは、ライトコマンドB、Cによる書き込み対象のデータであるが、その書き込み先トラックに応じてB1、B2およびC1、C2のように分けて表示した。データAとB1がトラックTR0に、B2とC1がトラックTR1に、C2がトラックTR2に、それぞれ書き込まれる予定である。
【0063】
図8は、第1の実施形態に係る磁気ディスク装置における磁気ディスクへのデータ書き込み処理の例を示す第2の模式図であり、トラックTR0へのライトを実行した後の状態を示している。
【0064】
図7の状態ではトラックTR0、TR1の2トラック分のデータがSEQWバッファ内に存在するため、トラックTR0へのライトが可能になる。トラックTR0へのA、B1のライトによりトラックTR1の全てのデータは瓦書きによって消されるが、トラックTR1に書き込まれるデータが既にSEQWバッファに存在するからである。図8の状態で予期しない電源断が発生した場合にはデータB2、C1、C2が不揮発性メモリに保存されるので、データの喪失は起こらない。
【0065】
図9は、第1の実施形態に係る磁気ディスク装置における磁気ディスクへのデータ書き込み処理の例を示す第3の模式図であり、一つの瓦バンドへのバイパスライトが完了した状態を表している。
【0066】
トラックTR1のデータB2、C1は、図8で示したトラックTR0のデータA、B1の場合と同様に、前方トラックTR2に書き込みが予定されるC2、D1の受領が完了した時点で行える。さらに、バンド内最終トラックであるトラックTR2については前方にデータ保護を行うべきトラックがないので、C2、D1のライトはB2、C1のライトに続けて行うことができる。
【0067】
データD2は次の瓦バンドに割り当てられるデータを示しており、それに続くデータを待ち、同様の方法で次の瓦バンドに書き込んでいく。
【0068】
上記した例ではバイパスライトをバンドの先頭(トラックTR0の先頭)から始めているが、バンドの途中(例えばトラックTR1の先頭または途中)からバイパスライトを始めることも同様の方法で可能である。
【0069】
また、バイパスライトの終了時、例えば、上の例でデータA,Bのみを受信し、それに続くシーケンシャルデータ(データC、D)を受信しない場合には、トラックTR1、TR2の既存データを順に読んでSEQWバッファに格納し、同様のバンドライトの方法でバンドの終端まで書き込みを行うことになる。
【0070】
図10は、第1の実施形態に係る磁気ディスク装置における磁気ディスクへのデータ書き込み処理の例を示す第4の模式図であり、一つの瓦バンドに対するMCフラッシュ処理が実行中の状態を表している。この例は当該瓦バンドのデータの一部をMC上のデータBmで置き換えるものである。
【0071】
本図の例の場合、トラック上の既存データA、B1、B3とMCから読んだデータBmからトラックTR0およびTR1に書き込むデータ作り、SEQWバッファに格納する。これにより図8の例と同様にトラックTR0への書き込みが行える。次に、トラックTR2のデータを読んでSEQWバッファに格納し、トラックTR1、TR2のデータを連続的に書き込むことでMCのフラッシュ動作は完了する。
【0072】
また、図10に示した処理をメディアキャッシュのデータの置き換えなしに行えばそのバンドの書き直し動作となる。SMRのバンドは隣接するバンドへのライトの繰り返しによってその境界付近のトラックのデータが劣化するため、当該バンドのデータの書き直しが必要となることがある。これはATI(Adjacent Track Interference)リフレッシュと呼ばれて広く行われているものであり、近年の磁気ディスク装置には不可欠なものである。このATIリフレッシュも、本実施形態の方法で行うことが可能である。
【0073】
図11は、第1の実施形態に係る磁気ディスク装置のバイパスライト処理用のバッファの例を示す模式図であり、複数のバイパスライト処理時のSEQWバッファの状態の例を示している。
【0074】
バイパスライト(BPW)を用いた場合、磁気ディスク装置1は、MCを経由せずにホストシステム20から受信したデータを直接ユーザ領域内のバンドに書き込む。バンド内では重ね書き(図4のライト方向)の順にしか書き込みを行えないので、バイパスライトを行えるのは書き込み先バンド内でシーケンシャルライトとなる場合のみである。そこで、本実施形態において磁気ディスク装置1は、シーケンシャルライトになるホストシステム20からのライトコマンド群を検出し、これらをバイパスライトでバンドに書き込む処理を行う。シーケンシャルライトになる見込みのないコマンドに対しては、図10で述べたMCを経由したライト処理を適用する。
【0075】
また、バイパスライトは同時に複数行うことができる。例えば、100ブロックずつの複数のシーケンシャルライトコマンド群をLBA=10000、20000、10100、20100、10200、20200のように混在した順で受信した場合、LBA=10000、10100、10200というシーケンシャルライトのコマンド群と、LBA=20000、20100、20200というシーケンシャルライトのコマンド群の2本のコマンドストリームが時分割で「同時に」受信されていることになる。このような複数のコマンド群を受信した場合、本実施形態の磁気ディスク装置1は、両方のコマンド群を「同時に」バイパスライトで処理する。図11の例では、同時にn+1本(nは自然数)のバイパスライトを行う場合を示す。
【0076】
バイパスライト用バッファはバッファRAM11の一部であり、SEQWバッファ、エントリポインタ、フラッシュポインタが複数組配置される。これより、磁気ディスク装置1は複数のバイパスライトを並行して行うことが可能となる。
【0077】
本図において、SB、SB、SB、SB、およびEP、EP、EP、EP、およびFP、FP、FP、FPはそれぞれ0、1、2、n番目のSEQWバッファ、エントリポインタ、フラッシュポインタである。本図の例ではn+1組のSEQWバッファ、エントリポインタ、フラッシュポインタが配置されているが、必要に応じてこれらを動的に確保するようにしてもよい。
【0078】
図12は、第1の実施形態に係る磁気ディスク装置のバイパスライト処理の管理テーブルの例を示す図であり、(a)はバイパスライト検出テーブル、(b)はバイパスライト実行テーブルを示す。
【0079】
図12(a)のバイパスライト検出テーブルは、ホストシステム20から受信したライトコマンドの監視によりバイパスライトの対象となりうるシーケンシャルライトを検出するためのものであり、例えば、磁気ディスクDKのシステム領域やフラッシュROM14などに格納されることもよい。バイパスライト検出テーブルは、コマンド受信時刻を示すTime、次のライトコマンドがシーケンシャルライトになりうる先頭LBAを示すNextLBA(NLBA)、シーケンシャルライトの累積ブロック数を示すBlocks、バイパスライト実行テーブルへのリンク情報を示すBPなどのデータ要素を含み、列ごとにデータ要素を示す。
【0080】
例えば、CPU15は、バイパスライト検出テーブルにエントリがない状態でLBA=1000から100ブロックを指定するライトコマンドAを受信すると、新たなエントリを作り、NextLBA=1100(1000+100)、Blocks=100とする。
【0081】
ライトコマンドAに続いてLBA=1100から200ブロックを指定するライトコマンドBを受信したとする。ここで、CPU15は、ライトコマンドA受信時に算出したNextLBAと、ライトコマンドBのLBAとを確認し、ともに1100であることから、ライトコマンドBがライトコマンドAに続くシーケンシャルコマンドであると判定する。CPU15は、ライトコマンドBの情報を用いてライトコマンドAに対するエントリを更新して、NextLBA=1300(1100+200)、Blocks=300とする。
【0082】
CPU15は、上記のように全てのライトコマンドを監視することで、一定長以上続いたシーケンシャルライトコマンドを検出する。なお、バイパスライト検出テーブルは、エントリ数が有限なので、新しいコマンドのために優先度の低いエントリを削除する必要がある。CPU15は、例えば、最古10エントリのうち最も累積シーケンシャルブロック数が少ないもの、というように予め設定された条件に従って、条件に基づいた項目(例えば、TimeとBlocks)の値を利用して削除候補のエントリを選ぶ。
【0083】
CPU15は、ライトコマンドを監視し、一定長以上シーケンシャルライトコマンドが続いたら、さらにシーケンシャルライトが続くと判定し、次に受信したシーケンシャルライトコマンドのライト範囲に対してはバイパスライトを行う。
【0084】
図12(b)のバイパスライト実行テーブルは、実行中のバイパスライトを管理するためのデータである。バイパスライト実行テーブルは、エントリ番号BP、バイパスライトを開始したLBAを示すBeginningLBA(BLBA)、現在のエントリポインタを示すEP、現在のフラッシュポインタを示すFPのなどのデータ要素を含み、列ごとにデータ要素を示す。CPU15は、各要素によってバイパスライトを管理する。EPおよびFPはどちらも累積的なブロック数であり、SB内でのラップ動作によって0にリセットしない。
【0085】
CPU15は、バイパスライトを開始するときには、初めにバイパスライト実行テーブルへのエントリ追加処理を行う。エントリ追加処理においては、空きエントリの1つを選んでそのエントリ番号をバイパスライト検出テーブルのBPにセットする。その後、CPU15は、当該エントリの初期化処理として、バイパスライトを開始するLBAをBeginningLBAにセットし、EPとFPに0をセットして、バイパスライトを実行する。
【0086】
以後、CPU15は、ホストシステム20からライトデータを受信したら、FPをその受信ブロック数だけ増加させ、ディスクDKのユーザデータ領域303内の対象バンドに書き込んだら、EPをその書き込みブロック数だけ増加させる。FPおよびEPを用いた書き込みの制御は、図7図8図9で説明した方法と同様の方法で行う。すなわち、あるトラックAの前方1トラック分を埋められる量以上のデータがSEQWバッファ内に溜まったらそのトラックAへのライトを行う。CPU15は、トラックへのライト処理をFPとEPの値で管理する。
【0087】
図11および図12は、トラック当たりのブロック数を1000とし、2000ブロック以上のシーケンシャルライトが行われたら、バイパスライトを開始する場合の例を示している。以下、BP=0のエントリ(エントリ0と称する)、BP=1のエントリ(エントリ1と称する)を例に、磁気ディスク装置1の処理動作を説明する。
【0088】
図12(b)のバイパスライト実行テーブルを参照すると、CPU15は、エントリ0のデータについてLBA=302000を先頭としたバイパスライトを実行しており、エントリ1のデータについてLBA=102500を先頭としたバイパスライトを実行していることを示している。
【0089】
LBA=300000からLBA=302000までのシーケンシャルデータのディスクDKへの書き込みは、まだバイパスライトではない。このため、これらのデータは(SEQWバッファではない)通常のバッファを経由してMCへライトされる。
【0090】
CPU15は、受信したシーケンシャルライトのブロック数が2000に到達したところ(LBA=301999)でバイパスライト開始の条件を満たすことを確認すると、バイパスライト実行テーブルのエントリ0に登録し(図12(b)のTDE0に相当する)、バイパスライトを開始する。したがってバイパスライトの開始LBA(BLBA)は302000である。
【0091】
LBA 302000からの3000ブロック分(3トラック分)のデータはSBに受信される。領域SB01は、このうち既に磁気ディスクDKへの書き込みが完了した2000ブロックのデータが過去に格納されていたことを示し、また領域SB02は、このうちの1000ブロックの未書き込みデータが現在格納されていることを示す。これは、3000ブロック分のデータを受信した時点で、CPU15が最後の1トラック分を除く2000ブロック(LBA=302000から303999までのブロック)のバイパスライトによる磁気ディスクDKへの書き込みを実行したことによるものである。
【0092】
また、CPU15は、バイパスライトの実行中もバイパスライト検出テーブルの更新を行うので、例えば、領域SB01と領域SB02の3000ブロック分のデータを受信した時点で、バイパスライト検出テーブルのエントリ0に対して、Blocksを5000(2000+3000)とし、NextLBAを305000(30000+5000)とする(図12(a)のTDD0に相当する)。
【0093】
図13は、第1の実施形態に係る磁気ディスク装置のバイパスライト処理でトラックに書き込んだデータの例を示す模式図であり、磁気ディスクDK上のバンドBDの状態例を示す。
【0094】
バンドBDは、TR1からTR6の6つのトラックから構成されるものとする。各トラックは、LBA=100000、101000、102000、103000、104000、105000を先頭に1000ブロックで構成されるものとする。
【0095】
データDTAは、ライトコマンドAにより書き込まれたTR1の先頭LBA=100000から2500ブロック分のデータを示す。CPU15は、データDTAの書き込み実行後にバイパスライト開始条件(2000ブロック以上のシーケンシャルライト)を満たすことから、これに続く次のライトコマンドBのデータDTBをバイパスライトすることを決定する。CPU15は、データDTBを受信すると、データDTA最後のLBAの次のLBA=102500を先頭にバイパスライトを開始する。なお、図上のデータDTAは、このバンド上に配置されたと仮定した場合の位置を表したもので、データDTA自体は実際にはMCに書き込まれる。また、この図では簡単化のためトラックスキューを0としている。
【0096】
この例でバイパスライトがLBA=102000から始まっていないのは開始条件の判定をコマンド単位で行っているからで、バイパスライトの対象はライトコマンドBの指定するデータDTB以降となる。ここで例えば、ライトコマンドの処理を2つに分割して、バイパスライト開始条件(2000ブロック以上のシーケンシャルライト)を満たした時点で、データDTAの後半500ブロック(TR3のLBA=102000から102499までのブロック)をバイパスライト処理するようにしてもよい。このバイパスライト処理においては、開始後にTR3に書き込まれるべき800ブロックのデータDTBを受け取っているが、さらに前方トラックTR4に書き込まれるべきデータは受け取っていないので、まだTR3に対する書き込みは行えない。トラックに書き込みを行える条件は前方のトラックに書き込むデータが全て揃うことであり、このケースではトラック当たりのブロック数が1000であるから、前方トラックTR4に書き込まれる予定の700ブロック以上のデータDTCを受信したところでTR3のLBA=102500から500ブロック分のライトが行えるようになる。
【0097】
以降のトラックのデータも、図7、8において示した処理動作同様に、シーケンシャルデータの受信により前方1トラック分のデータが揃ったらその手前のトラックの書き込みを行う。
【0098】
バイパスライトを終了させるときには、CPU15は、ホストシステム20からデータを受け取る代わりにEPを先頭にバンドの既存のデータを読み出す。例えば図13の例で、データDTCの受信後にそれに続くデータDTDの受信がなかった場合、CPU15は、バイパスライト処理を終了させると判定する。この場合、CPU15は、バンドからデータDTDに係る既存のデータを読み出し、対応するエントリのSBにEPの位置から書き込む。これによりバイパスライトと同様の方法でデータの更新が行える。なお、データDTDがバンド内の最終トラックから始まる場合には前方に壊されるデータがないのでこの処理は不要である。
【0099】
CPU15は、バイパスライトを終了させたら、終了させたエントリをバイパスライト検出テーブルおよびバイパスライト実行テーブルの両方から削除する。バイパスライト実行テーブルは、エントリ番号をSBに対応させることで並べ替え等の必要はないが、バイパスライト検出テーブルは、処理の効率化のため、必要に応じてデータの並べ替えを行う。例えばLBAが昇順になるように並べ替える方法のほかに、物理的な並べ替えを行わずにTime、LBA、Blocksそれぞれに順序を管理するためのチェイン情報を付加する方法などがある。
【0100】
以下、磁気ディスク装置1の、PLP機能によりデータ保存する処理の例を示す。
【0101】
バイパスライト検出テーブル、バイパスライト実行テーブル、およびSB中の有効データ(以後、この3データをバイパスライト関連データと呼ぶ)は電源喪失時を含め、常に維持される必要がある。通常これらのデータは、磁気ディスクDK上のシステム領域301内に設けられている専用領域に適宜書き込まれて保存される。一般に、磁気ディスク装置の電源遮断時の正規の手順では、例えばStandbyやFlush Cacheなど未保存のデータの書き込みを行うコマンドを実行し、その完了後に電源を遮断する。この手順で電源遮断が行われればバイパスライト関連データも未書き込みデータの一部として上記の専用領域に保存される。
【0102】
しかし、実際には稼働中の電源喪失のように、この正規の手順を経ずに電源断が行われる場合もあり、このような場合にもデータの喪失が起こらないようにする必要がある。本実施形態の磁気ディスク装置1は、PLP機能が有効となるバッファRAM11にライトバッファ中の未書き込みデータやバイパスライト関連データを格納する。磁気ディスクDKが定常回転してさえいれば、磁気ディスク装置1の例えばHDC10は、電源喪失時にPLP機能により磁気ディスクDKの回転エネルギーを用いて、ライトバッファ中の未書き込みデータや本発明のバイパスライト関連データなど、バッファRAM11上の未保存データをフラッシュROM14に書き込むことができる。
【0103】
図14は、第1の実施形態に係る磁気ディスク装置のPLP機能によるデータ保存処理の例を示す模式図であり、複数のバイパスライト処理時のSEQWバッファを含むバッファRAM11の状態の例を示している。
【0104】
バッファRAM11には、バイパスライト検出テーブル、バイパスライト実行テーブル、SB0、SB(nは自然数)の有効データなど1以上のエントリの有効データが書き込まれているものとする。
【0105】
磁気ディスク装置1は、電源喪失が発生すると、PLP機能によりバイパスライト検出テーブル、バイパスライト実行テーブル、SB0の有効データ、SBからSBの有効データ、の順にフラッシュROM14の専用領域に書き込む。フラッシュROM14への書き込みデータは、エントリごとに(例えば、SBから例えばnの昇順でSBごとに)すべてシーケンシャルである必要があるので、バッファRAM11のポインタジャンプ機能を有効にして、これら飛び飛びのデータを連結することでもよい。
【0106】
ポインタジャンプ機能とは、バッファRAM11内のアドレスの組(例えばA、B)を指定しておくことで不連続なデータに対するシーケンシャルアクセスを可能にするハードウェアの機能である。アドレスの組は、例えば、ファームウェアなどが実行されることによりCPU15によって指定される。通常のシーケンシャルアクセスでは、バッファRAM11上のあるアドレスkのデータをアクセスしたら次のアクセスではそれに続くアドレスk+1のデータがアクセスされる。しかし、ポインタジャンプ機能で指定されたアドレス(例えば上記のA)がアクセスされた場合、その次にはその対(例えば上記のB)がアクセスされる。
【0107】
ここでは図14に示すように、TPとFP、EPとFP、EPn-1とFPにそれぞれ組でポインタジャンプPJ、PJ、PJを設定することで、バイパスライト検出テーブル、バイパスライト実行テーブル、SB内の各有効データを図14のフラッシュROM14に連続的に書き込むことができる。フラッシュROM14には、バイパスライト検出テーブルMD、バイパスライト実行テーブルMD、TPからFPまでのデータFD、EPからFPまでのデータFD、EPn-1からFPまでのデータFDが格納される。
【0108】
また、図14のバッファRAM11に示すように、バイパスライト検出テーブル、バイパスライト実行テーブル、とSBからSBが連続的に配置されている場合は、SB内の無効なデータが保存されることで効率は落ちるが、ポインタジャンプ機能を使わずにこれらをすべて保存するようにしてもよい。
【0109】
以上のように電源喪失時にフラッシュROM14に書き込まれたデータは、次の磁気ディスク装置1の電源投入時に読み出され、バッファRAM11内の元の位置に再展開され、システム領域301内の専用領域に明示的に保存される。これらの処理が完了したらフラッシュROM14に保存されていたデータは無効化される。
【0110】
本実施形態の磁気ディスク装置1は、PLP機能を用いることにより、電断した時に未書き込みデータのバックアップの効果を得るだけでなく、瓦記録領域内のデータへの上書きを可能にし、空きバンドを使用しないバイパスライトが可能となる。以下に、磁気ディスク装置1のバイパスライト処理時の動作例を示す。
【0111】
図15は、第1の実施形態に係る磁気ディスク装置のバイパスライト処理の動作例を示すフローチャートである。
【0112】
磁気ディスク装置1において、CPU15は、ホストシステム20からライトコマンドを受信すると、ライトコマンドの処理を開始する(ステップ1001)。この時点ではまだライトデータは受け取らない。
【0113】
CPU15は、まず、受信したライトコマンドの書き込み範囲が現在実行中のバイパスライトの続きとして実行できるかどうかまたはライト範囲が既存のバイパスライトに繋がるかどうかを調べる(ステップ1002)。ステップ1002においてCPU15は、バイパスライト検出テーブルを検索し、そのライトコマンドの先頭LBAと同じNextLBAを持つエントリが同テーブル内に存在し、かつBPの値が有効である(リンク情報を持つ)とき、受信したライトコマンドを、そのエントリのバイパスライトの続きとして処理する。
【0114】
受信したライトコマンドがバイパスライトの続きとして実行できない場合(ステップ1002のNo)、CPU15は、そのライトコマンドで新たにバイパスライトを開始するかを判定する(ステップ1003)。ステップ1003において、CPU15は、まずバイパスライト検出テーブルを検索し、受信したライトコマンドの先頭LBAと同じ値のNextLBAを持つエントリが同テーブル内に存在するかを調べる。そのようなエントリがあれば、CPU15は、受信したコマンドが既存のシーケンシャルライトに繋がるものであると判定し、当該エントリのBlocksの値を確認する。この値はシーケンシャルライトの累積ブロック数なので、この値が規定の値(この例では2000ブロック)以上であれば新たにバイパスライトを開始させる条件が成立していると判定し(ステップ1003のY)、バイパスライト実行テーブルに空きがあるかどうかすなわちバイパスライト実行数の上限に達しているかどうかのチェックをする(ステップ1004)。
【0115】
CPU15は、バイパスライト実行テーブルに空きがある場合(バイパスライト実行数の上限に達していない場合)には(ステップ1004のYes)、バイパスライト開始処理をする(ステップ1005)。ステップ1005において、まず初期化処理を行う。具体的には、CPU15は、その空きエントリに先頭LBA、EP、FPを設定し、バイパスライト検出テーブルの当該エントリにBPを設定する。
【0116】
上記手順で新規にバイパスライトを開始した場合(ステップ1005)、または今回のライトコマンドが既存のバイパスライトに繋がると判定した場合(ステップ1002のYes)には、CPU15は、バイパスライトを行うためにエントリに設定したEPを先頭とするバッファRAM11上の位置にホストシステム20からデータを受信し、書き込む(ステップ1006)。ステップ1006において、受信できるデータの最大量は、エントリの対象SBの空き容量分であり、ライトコマンドの要求ブロック数(ライトデータ量)がこれよりも多い場合には受信できる最大量を受信する。
【0117】
この結果、CPU15は、対象バンド内において、FPの位置のデータの書き込み先トラック(TR0とする)の前方1トラック(TR1とする)分のデータが存在していることを確認したら(ステップ1007のYes)、そのFPが示すブロックを先頭にそのブロックが属するトラックTR0の末尾までのデータをバッファRAM11から取得し、磁気ディスクDKの対象トラックにライトする(ステップ1008)。また、CPU15は、書き込み先トラックTR0の前方に複数トラック分(TR1、TR2とする)のデータが存在していることを確認した場合には(ステップ1007のYes)、最も前方の1トラックTR2分のデータを残して全てのデータをバッファRAM11から取得し、磁気ディスクDKの対象トラックにライトする(ステップ1008)。一方、CPU15は、TR1の末尾までのデータが存在しないことを確認したら、(ステップ1007のNo)、ステップ1008のライト処理を行わずにステップ1009に進む。
【0118】
ステップ1008でデータのライトが完了したら、CPU15は、ライトコマンドの要求データを全て受け取っているか否かを確認する(ステップ1009)。ステップ1009において、CPU15は、ライトコマンドの要求データを全て受け取っていることを確認した場合(ステップ1009のYes)、バイパスライト検出テーブルを更新し(ステップ1010)、コマンドの終了処理をする(ステップ1011)。一方、CPU15は、受け取るべきデータが残っている場合は(ステップ1009のNo)、ステップ1006に戻り、処理を繰り返す。
【0119】
またステップ1003において、受信したライトコマンドがバイパスライトの開始条件を満たさなかった場合(ステップ1003のNo)またはバイパスライトの実行数が既に上限に達していた場合(ステップ1004のNo)は、CPU15は、バイパスライトを行わずに通常のライト処理を行う。より具体的にCPU15は、データを通常のライトバッファ(図示せず)に受信し(ステップ1016)、そのデータをMCにライトする(ステップ1018)。
【0120】
ステップ1006から1009、またはステップ1016から1018でのライト処理が完了したら、CPU15は、バイパスライト検出テーブルの更新処理を行う(ステップ1010)。ステップ1010において今回実行したコマンドの先頭LBAと同じNextLBAを持つエントリがあれば、CPU15は、そのエントリのNextLBAおよびBlocksに今回実行したコマンドのブロック数を加算する。
【0121】
一方、ステップ1010において、今回実行したコマンドの先頭LBAと同じエントリがない場合には、CPU15は、空きエントリの1つに今回のコマンド情報を新たに登録する。この場合、NextLBAに(コマンドの先頭LBA+ブロック数)を、Blocksにブロック数をそれぞれ設定する。空きエントリがない場合にはバイパスライト実行中でない(バイパスライト検出テーブルのBPにリンク情報がない)既存エントリの中から古いもの、もしくは積算ブロック数の少ないものなどを1つ選んで情報を削除することで空きエントリを作る。
【0122】
この処理が終了したら、CPU15は、ライトコマンドを終了させ(ステップ1011)、続いてバックグラウンド処理として既存バイパスライトの終了処理が必要ならば実施する(ステップ1012)。ステップ1012において、終了処理が必要かどうか、また必要な場合はどのエントリを削除するかをテーブル情報から決定する。例えば、現在実行中のバイパスライトの本数により削除の要否を判定する方法、バイパスライト検出テーブル内のバイパスライト実行中の(BPにリンク情報がある)エントリを検索し、Timeが古いものや累積ライト数が少ないもの、あるいはその両方を満たすものを終了処理の対象にする方法などが考えられる。
【0123】
またステップ1012において、終了処理を行うバイパスライトの数は、1本としてもよいし、複数本としてもよい。終了処理の方法は上記の説明のとおりである。なお、この処理をコマンド終了後にバックグラウンドで行うのは、処理時間のかかるバイパス終了処理のコマンド応答性への影響を小さくするためである。
【0124】
CPU15によるバイパスライトの終了処理(実施判定も含む)が終了したら、ライト処理を全て終了とする(ステップ1013)。
【0125】
バイパスライト方式においては、磁気ディスク装置の電断時のデータ保護のために書き込み対象のバンド内のデータの上書きを行わず、別の位置に空きバンドを生成してそこにデータを書き込む構成が一般的となっている。
【0126】
しかしながら、空きバンドは当該バンドに割り当てられているLBAの全てのデータをメディアキャッシュに書き込むことで作成するので、その分だけアクセス時間が増加し、メディアキャッシュも消費する。特に、監視カメラ向けモデルなどで同時に複数のバイパスライト(マルチストリーミングライト)を行う場合、バイパスライトの本数だけ空きバンドを作成する必要があり、これらの影響も小さくない。
【0127】
本実施形態の磁気ディスク装置1は、PLP機能を用いることにより、電断した時にPLP機能によるバッファRAM11内の未書き込みデータのバックアップ(データの保護)の効果を得るだけでなく、瓦記録領域内のデータへの上書きを可能にし、空きバンドを使用しないバイパスライトを実現することができる。
【0128】
なお、上記の手順では、ライトコマンドの実行に直接関係するバイパスライトの終了処理をバックグラウンドで行う例を示したが、CPU15は、ステップ1013のコマンド(ライトコマンドに限らない)の終了後に、図10で説明したMCフラッシュ処理やATIリフレッシュ処理などをバックグラウンドで実行することもある。
【0129】
本実施形態は、瓦記録(バンドライト)によってあるトラックにライトを行った場合に、その前方1トラックのデータが同時に破壊されることを前提としたものであるが、例えば、前方2トラックまたはそれ以上のデータが破壊される場合でも、上記と同様の手順により処理を行うことができる。
【0130】
例えば、瓦記録のライトで対象トラックの前方mトラックが破壊される場合には、そのmトラックに書き込まれるデータがSB内に受信されるまでそのライトの実行を待つようにする。図15の例でこれを行うには、ステップ1007の処理を「前方mトラック分のデータがあるか」のように、ステップ1008の処理を「FPからのデータを前方mトラック分のデータを残してSMRバンドへライト」のようにすればよい。
(第2の実施形態)
本実施形態の磁気ディスク装置は、上書きするトラックのトラックスキューを前方トラックのものと同じにする。SEQWバッファに保持するデータ量の削減が可能である。
【0131】
図16は、第2の実施形態に係る磁気ディスク装置における磁気ディスクへのデータ書き込み処理の例を示す模式図である。
【0132】
第1の実施形態では、例えば図7に示すようにトラックスキュー(トラック先頭BT0、BT1、BT2の位置ずれ)の存在により、例えばトラックTR0の先頭付近にライトを行うとトラックTR1の末尾付近(図7のTR1上のデータC1に相当)のデータが消える。このため第1の実施形態では、トラックTR0のライトを行うには、トラックTR1のデータが全て揃うまで待つ必要がある。そこで、本実施形態の磁気ディスク装置は、磁気ディスクDKにおけるトラックTR0とトラックTR1のトラックスキューを揃える、すなわち先頭BT0とトラックTR1の先頭BT1とを揃えるようにバンドライトをする例を示す。
【0133】
図16は、第2の実施形態に係る磁気ディスク装置における磁気ディスクへのデータ書き込み処理の例を示す模式図である。
【0134】
磁気ディスクDKにおけるトラックTR0とトラックTR1のトラックスキューを揃えて、トラックTR0の先頭をライトするときに、トラックTR1の先頭が消えるようにする。例えば、トラックTR0をライトするときに、トラックTR0の先頭BT0とTR1のBT1を揃えるようにTR0をライトする。以後、トラックTRnへのライト時にはそのトラックスキューをトラックTR(n+1)のものと揃える、ということを繰り返す。
【0135】
上記の手順により、SEQWバッファ上に保持しなければならないデータを1トラック分に削減することができる。また、第1の実施形態ではライトをトラック単位で行う必要があったが、本実施形態では受領データの量に応じて、トラックの途中までをライトすることができるので、room logicを用いたストリーミングライトも行える。
【0136】
本実施形態の実装方法はテーブル類、フローチャートを含め第1の実施形態と同様であるが、以下の点が異なる。
(1)SEQWバッファ(各SB)に保持するデータを1トラック分とする。例えば、図15のフローチャートのステップ1007の判定条件を変更することで実現する。
(2)パイパスライトを常にバンドの先頭から行う。例えば、図15のステップ1005の前に判定条件を追加し、本実施形態のライトコマンドがバンドの先頭にかからない場合にはステップ1016に進むようにする。また、ステップ1005では、バンドの先頭までのデータをホストシステム20から受信してMCへライトする処理を行う。
(3)各バンドのスキューの初期値(バンド先頭トラックのスキュー値)を保持するテーブルを備える。
【0137】
各バンドのスキュー初期値を保持するテーブルを用意し、CPU15は、ステップ1008の実行時に参照してバンド内の各トラックのスキュー値を求める。CPU15は、1バンドを書き終えたらテーブル内の当該バンドのスキュー値を更新する。このテーブルはバイパスライト検出テーブルおよびバイパスライト実行テーブルに隣接するように配置し、システム領域301に対する読み出しや書き込み、PLPでの保存処理もこれら2つのテーブルと同時に行われるようにする。
【0138】
上記の手順により、本実施形態の磁気ディスク装置1は、SEQWバッファに保持するデータ量の削減が可能である。
【0139】
上記した実施形態による磁気ディスク装置1は、以下に示す特徴の1以上の任意の組合せを備えていてもよい。
(A-1)実施形態の磁気ディスク装置は、瓦記録領域へのシーケンシャルライトを同領域の先頭または途中から行う場合に、ライト対象の第1トラック(例えば図8のTR0)に書き込まれる第1データ(例えば図8のデータA、B1)と、第1トラックの1つ前方の第2トラック(例えば図8のTR1)に配置され、第1トラックへの書き込みによって消されるデータを上書きする第2データ(例えば図8のデータB2、C1、C2)をすべて揮発メモリ(例えば図14のバッファRAM11)上に受信してからライト対象の第1トラックへの書き込みを行う手段と、予期しない電源断の発生時に、揮発メモリ上に受信したデータのうち瓦記録領域に書き込んでいないデータ(例えば図8のデータB2、C1、C2)を不揮発メモリ(例えば図14のフラッシュROM14)に保存する手段と、を備える。
【0140】
(A-2)上記(A-1)の磁気ディスク装置は、予期しない電源断の発生時に、揮発メモリ(例えば図14のバッファRAM11)上に受信した第1データのうち瓦記録領域に書き込んでいないデータ(例えば図14のデータFD、FD、FD)に、これらを管理する情報(例えば図14のデータMD、MD)を付加して不揮発メモリ(例えば図14のフラッシュROM14)に保存する。
【0141】
(A-3)上記(A-1)の磁気ディスク装置は、予期しない電源断の発生時に、揮発メモリ(例えば図14のバッファRAM11)上のデータを磁気ディスクの回転エネルギーによる起電力を用いて不揮発メモリ(例えば図14のフラッシュROM14)に書き込む。
【0142】
(A-4)上記(A-1)の磁気ディスク装置は、瓦記録領域へのシーケンシャルライトが、ホストから受信したデータをメディアキャッシュ(例えば図3のMC302)を経ずに直接、瓦記録領域に書き込む処理(バイパスライト)である。
【0143】
(A-5)上記(A-1)の磁気ディスク装置は、瓦記録領域へのシーケンシャルライトが、元の記録データとメディアキャッシュのデータとの組み合わせからなるデータ(例えば図10のSB)によって行う(メディアキャッシュのフラッシュ処理)。
【0144】
(A-6)上記(A-1)の磁気ディスク装置は、瓦記録領域へのシーケンシャルライトが、磁気ディスク上の元の記録データによって行う(ATIリフレッシュ処理)。
【0145】
(A-7)上記(A-1)の磁気ディスク装置は、瓦記録領域の書き込み単位が一定トラック数毎に区切られている場合に、書き込み単位内の最後のトラック(例えば図10のTR2)のデータを受信したときに、すべての未書き込みデータ(例えば図10のD1、C2)を連続的に書き込む。
【0146】
(A-8)上記(A-1)の磁気ディスク装置は、瓦領域の書き込み領域の先頭から書き込む場合に、書き込み対象トラック(例えば図16のTR0)のトラックスキューを前方のトラック(例えば図16のTR1)のものと同じにする。
【0147】
(A-9)上記(A-1)から(A-8)の磁気ディスク装置は、瓦領域の書き込み対象トラック(例えば図4のTR1)への書き込み時に、前方の複数トラック(例えば図4のTR2、3)へのデータが消える場合に、その複数トラック分の全データを受信してから書き込み対象トラックへの書き込みを行うことを特徴とする。
【0148】
上記(A-1)、(A-2)、(A-3)により、瓦記録領域へのシーケンシャルライトの実行時に、予期しない電源断の発生時に受信済みデータを喪失することなく、瓦記録領域内の既存データを上書きすることが可能になる。これにより、シーケンシャルライトを行うための空きバンドの生成が不要となり、ライト処理の効率が上がる。
【0149】
上記(A-4)により、バイパスライトを上記(A-1)記載の方法で行うことにより、マルチストリームライトのように同時に複数のバイパスライトを行う場合のコマンド応答性が上がる。
上記(A-5)により、メディアキャッシュのフラッシュ処理を上記(A-1)記載の方法で行うことにより、空きバンドが不要となるので処理の効率が上がる。
【0150】
上記(A-6)により、ATIリフレッシュ処理の効果を得ることができる。
上記(A-7)により、瓦バンドの末尾トラックを手前のトラックから連続して書き込むことで所要時間が短くなる。
上記(A-8)により、トラックスキューを前方トラックと合わせることで揮発領域に保持すべきデータの量を削減できるため、(A-1)記載の方法で同時に行えるシーケンシャルライトの本数を増やすことができる。
【0151】
上記(A-9)により、バンドライトで前方の複数トラックが消える場合にも、上記(A-7)の内容を除いて、上記(A-1)乃至(A-8)によるシーケンシャルライトを行えるようになるため、実施形態の方法を適用できる磁気ディスク装置が増える。
【0152】
以上に述べた実施形態によれば、空きバンドを使用せずバイパスライトをする磁気ディスク装置及びライト方法を提供することができる。
【0153】
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。また上記実施形態に示したフローチャート、シーケンスチャートなどに示す処理ステップは、本発明の要旨を逸脱しない範囲で、ステップ順番の入れ替え、ステップの削除、付加などをした場合についても本発明の範囲である。
【0154】
フローチャート、シーケンスチャートなどに示す処理は、CPU、ICチップ、デジタル信号処理プロセッサ(Digital Signal ProcessorまたはDSP)などのハードウェアもしくはマイクロコンピュータを含めたコンピュータなどで動作させるソフトウェア(プログラムなど)またはハードウェアとソフトウェアの組み合わせによって実現してもよい。
【0155】
また請求項を制御ロジックとして表現した場合、コンピュータを実行させるインストラクションを含むプログラムとして表現した場合、及び前記インストラクションを記載したコンピュータ読み取り可能な記録媒体として表現した場合でも本発明の装置を適用したものである。また、使用している名称や用語についても限定されるものではなく、他の表現であっても実質的に同一内容、同趣旨であれば、本発明に含まれるものである。
【符号の説明】
【0156】
1…磁気ディスク装置、DK…磁気ディスク、2…磁気ヘッド、3…スピンドルモータ、4…ボイスコイルモータ(VCM)、5…アクチュエータ、6…モータドライバ、7…ヘッドIC、8…リード・ライトIC8、9…ゲートアレイ、10…ディスクコントローラ(HDC)、11…バッファRAM、12…CPUバス、13…RAM、14…フラッシュROM、15…CPU、20…ホストシステム、21…サーボブロック、22…リード・ライトブロック、23…ホストブロック、24…リード・ライトブロック、25…バッファブロック。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16