(57)【要約】【課題】  ライト性能を向上することが可能な磁気ディスク装置及びライト方法を提供することである。【解決手段】  本実施形態に係る磁気ディスク装置は、ディスクと、前記ディスクに対してデータをライトするヘッドと、前記ディスクにライトされるデータを記録するバッファメモリと、第１データを前記バッファメモリに記録し、前記バッファメモリに記録された前記第１データを内部メモリに複製し、前記内部メモリにおいて前記第１データに基づいて複数の第２データを生成し、前記複数の第２データを前記バッファメモリに転送する、コントローラと、を備える。【選択図】図１
2019153363.tif 000002
【特許請求の範囲】
【請求項１】
ディスクと、
前記ディスクに対してデータをライトするヘッドと、
前記ディスクにライトされるデータを記録するバッファメモリと、
第１データを前記バッファメモリに記録し、前記バッファメモリに記録された前記第１データを内部メモリに複製し、前記内部メモリにおいて前記第１データに基づいて複数の第２データを生成し、前記複数の第２データを前記バッファメモリに転送する、コントローラと、を備える磁気ディスク装置。
【請求項２】
前記コントローラは、前記複数の第２データをそれぞれ暗号化し、前記複数の第２データにそれぞれデータの整合性を示す保護情報を付加する、請求項１に記載の磁気ディスク装置。
【請求項３】
前記コントローラは、前記バッファメモリに第１領域を確保し、前記第１領域に前記複数の第２データを順番に転送し、前記第１領域に転送された順番で前記複数の第２データを前記ディスクにライトする、請求項１又は２に記載の磁気ディスク装置。
【請求項４】
前記コントローラは、前記第１領域に前記複数の第２データが全て転送された場合に前記複数の第２データが全て転送されたことを示す信号を出力する、請求項３に記載の磁気ディスク装置。
【請求項５】
前記コントローラは、前記第１領域に前記複数の第２データの内の１つの前記第２データが転送される毎に前記第１領域に転送された前記第２データの第１ブロック数に対応するカウント値に第１値を加算し、前記カウント値が前記第１データに基づいて生成した前記複数の第２データの第２ブロック数に到達した場合に前記信号を出力する、請求項４に記載の磁気ディスク装置。
【請求項６】
主電源に異常が生じた場合に一時的に電力を供給する第１電源と不揮発性メモリとをさらに備え、
前記コントローラは、前記第１領域に転送した少なくとも１つの前記第２データを前記第１電源により供給される電力により前記不揮発性メモリに退避可能である場合に前記複数の第２データが全て転送されたことを示す信号を出力する、請求項３に記載の磁気ディスク装置。
【請求項７】
前記コントローラは、前記第１領域に前記複数の第２データの内の１つの前記第２データが転送される毎に前記第１領域に転送された前記第２データの第１ブロック数に対応するカウント値に第１値を加算し、前記ディスクに前記第２データがライトされる毎に前記第１値から前記第１値を減算し、前記カウント値が前記第１データに基づいて生成される前記複数の第２データの第２ブロック数に到達した後に前記第１電源により供給される電力により前記不揮発性メモリに退避可能な前記第２データの第３ブロック数になった場合に前記信号を出力する、請求項６に記載の磁気ディスク装置。
【請求項８】
前記コントローラは、前記第２データが前記ディスクにライトされている場合、第３データを前記バッファメモリに記録し、前記バッファメモリに記録した前記第３データを前記内部メモリに複製し、前記内部メモリにおいて前記第３データに基づいて複数の第４データを生成し、前記第１領域に前記複数の第４データを順番に転送し、前記第１領域に転送された順番で前記複数の第４データを前記ディスクにライトする、請求項３乃至７のいずれか１項に記載の磁気ディスク装置。
【請求項９】
前記コントローラは、ＷＲＩＴＥ  ＳＡＭＥコマンドを受信した場合にＷＲＩＴＥ  ＳＡＭＥコマンドに対応する前記第１データ及び前記第３データをそれぞれ受信する、請求項８に記載の磁気ディスク装置。
【請求項１０】
ディスクと、
前記ディスクに対してデータをライトするヘッドと、
前記ディスクにライトされるデータを記録するバッファメモリと、
ＷＲＩＴＥ  ＳＡＭＥコマンドを受信し、ＷＲＩＴＥ  ＳＡＭＥコマンドに対応する第１データをバッファメモリに記録し、前記バッファメモリに記録した前記第１データを内部メモリに複製し、前記内部メモリにおいて前記第１データに基づいて複数の第２データを生成し、前記複数の第２データを前記バッファメモリに転送する、コントローラと、を備える磁気ディスク装置。
【請求項１１】
ディスクと、前記ディスクに対してデータをライトするヘッドと、前記ディスクにライトされるデータを記録するバッファメモリとを備える磁気ディスク装置に適用されるライト方法であって、
第１データをバッファメモリに記録し、
前記バッファメモリに記録した前記第１データを内部メモリに複製し、
前記内部メモリにおいて前記第１データに基づいて複数の第２データを生成し、
前記複数の第２データを前記バッファメモリに転送する、ライト方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、磁気ディスク装置及びライト方法に関する。
【背景技術】
【０００２】
磁気ディスク装置は、ＷＲＩＴＥ  ＳＡＭＥコマンドをサポートしている。ＷＲＩＴＥ  ＳＡＭＥコマンドは、所定のデータに基づいて複数の論理ブロックにライトするコマンドである。ＷＲＩＴＥ  ＳＡＭＥコマンドは、ＲＡＩＤ環境の論理ブロックの初期化時等で使用されている。ＷＲＩＴＥ  ＳＡＭＥコマンドを受信した場合、磁気ディスク装置は、ホストシステムから受信した所定のデータを受信し、この所定のデータに基づいて複数の論理ブロックのデータを生成し、生成した各論理ブロックのデータに暗号化や保護情報を付加する処理等を実行し、ディスクに生成した各データをライトする。磁気ディスク装置は、ＷＲＩＴＥ  ＳＡＭＥコマンドを受信する毎にこれらの処理を実行するため、複数の連続する論理ブロックへのＷＲＩＴＥ  ＳＡＭＥコマンドを受信した場合には、コマンド毎に1回転待ちの遅延が発生する可能性がある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】米国特許第８８６２８０５号明細書
【特許文献２】米国特許第９０７０４１７号明細書
【特許文献３】特開平０６―３０９２３４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明の実施形態が解決しようとする課題は、ライト性能を向上することが可能な磁気ディスク装置及びライト方法を提供することである。
【課題を解決するための手段】
【０００５】
本実施形態に係る磁気ディスク装置は、ディスクと、前記ディスクに対してデータをライトするヘッドと、前記ディスクにライトされるデータを記録するバッファメモリと、第１データを前記バッファメモリに記録し、前記バッファメモリに記録された前記第１データを内部メモリに複製し、前記内部メモリにおいて前記第１データに基づいて複数の第２データを生成し、前記複数の第２データを前記バッファメモリに転送する、コントローラと、を備える。
【図面の簡単な説明】
【０００６】
【図１】図１は、第１実施形態に係る磁気ディスク装置の構成を示すブロック図である。
【図２】図２は、第１実施形態に係る磁気ディスク装置のライト系の構成例を示す模式図である。
【図３】図３は、第１実施形態に係るライト方法の一例のフローチャートである。
【図４】図４は、第２実施形態に係る磁気ディスク装置の構成を示すブロック図である。
【図５】図５は、第２実施形態に係る磁気ディスク装置のライト系の構成例を示す模式図である。
【図６】図６は、第２実施形態に係るライト方法の一例のフローチャートである。
【図７】図７は、第２実施形態に係る主電源に異常が生じた場合のＷＲＩＴＥ  ＳＡＭＥコマンドに関連するデータの退避方法の一例のフローチャートである。
【図８】図８は、第２実施形態に係る主電源に異常が生じた場合のＷＲＩＴＥ  ＳＡＭＥコマンドに関連するデータの復元方法の一例のフローチャートである。
【発明を実施するための形態】
【０００７】
以下、実施の形態について図面を参照して説明する。なお、図面は、一例であって、発明の範囲を限定するものではない。  
【０００８】
（第１実施形態）  
図１は、第１実施形態に係る磁気ディスク装置１の構成を示すブロック図である。  
【０００９】
磁気ディスク装置１は、後述するヘッドディスクアセンブリ（ＨＤＡ）と、ドライバＩＣ２０と、ヘッドアンプ集積回路（以下、ヘッドアンプＩＣ、又はプリアンプ）３０と、バッファメモリ（バッファ）７０と、揮発性メモリ８０と、不揮発性メモリ９０と、１チップの集積回路であるシステムコントローラ１３０とを備える。また、磁気ディスク装置１は、ホストシステム（以下、単に、ホストと称する）１００と接続される。
【００１０】
ＨＤＡは、磁気ディスク（以下、ディスクと称する）１０と、スピンドルモータ（以下、ＳＰＭと称する）１２と、ヘッド１５を搭載しているアーム１３と、ボイスコイルモータ（以下、ＶＣＭと称する）１４とを有する。ディスク１０は、スピンドルモータ１２に取り付けられ、スピンドルモータ１２の駆動により回転する。アーム１３及びＶＣＭ１４は、アクチュエータを構成している。アクチュエータは、ＶＣＭ１４の駆動により、アーム１３に搭載されているヘッド１５をディスク１０上の目標位置まで移動制御する。ディスク１０およびヘッド１５は、２つ以上の数が設けられてもよい。  
【００１１】
ディスク１０は、その記録領域に、ユーザから利用可能なユーザデータ領域１０ａと、システム管理に必要な情報をライトするシステムエリア１０ｂとが割り当てられている。
【００１２】
ヘッド１５は、スライダを本体として、当該スライダに実装されているライトヘッド１５Ｗとリードヘッド１５Ｒとを備える。ライトヘッド１５Ｗは、ディスク１０上にデータをライトする。リードヘッド１５Ｒは、ディスク１０上のデータトラックに記録されているデータをリードする。
【００１３】
ドライバＩＣ２０は、システムコントローラ１３０（詳細には、後述するＭＰＵ６０）の制御に従って、ＳＰＭ１２およびＶＣＭ１４の駆動を制御する。  
【００１４】
ヘッドアンプＩＣ（プリアンプ）３０は、リードアンプ及びライトドライバを備えている。リードアンプは、ディスク１０からリードされたリード信号を増幅して、システムコントローラ１３０（詳細には、後述するリード／ライト（Ｒ／Ｗ）チャネル４０）に出力する。ライトドライバは、Ｒ／Ｗチャネル４０から出力される信号に応じたライト電流をヘッド１５に出力する。
【００１５】
バッファメモリ７０は、磁気ディスク装置１とホスト１００との間で送受信されるデータ等を一時的に記録する半導体メモリである。なお、バッファメモリ７０は、揮発性メモリ８０と一体に構成されていてもよい。バッファメモリ７０は、例えば、ＤＲＡＭ、ＳＲＡＭ（Static Random Access Memory）、ＳＤＲＡＭ、ＦｅＲＡＭ（Ferroelectric Random Access memory）、又はＭＲＡＭ（Magnetoresistive Random Access Memory）等である。バッファメモリ７０は、例えば、格納領域７１と、セグメントバッファ領域７２とを有している。セグメントバッファ領域７２は、例えば、ＦＩＦＯ（First In First Out）又はCircular Bufferとして機能する。なお、バッファメモリ７０は、格納領域７１と、セグメントバッファ領域７２とを備えていなくともよい。
【００１６】
揮発性メモリ８０は、電力供給が断たれると保存しているデータが失われる半導体メモリである。揮発性メモリ８０は、磁気ディスク装置１の各部での処理に必要なデータ等を格納する。揮発性メモリ８０は、例えば、ＳＲＡＭ、ＤＲＡＭ（Dynamic Random Access Memory）、又はＳＤＲＡＭ（Synchronous Dynamic Random Access Memory）である。
【００１７】
不揮発性メモリ９０は、電力供給が断たれても保存しているデータを記録する半導体メモリである。不揮発性メモリ９０は、例えば、ＮＯＲ型またはＮＡＮＤ型のフラッシュＲＯＭ（Flash Read Only Memory :ＦＲＯＭ）である。
【００１８】
システムコントローラ（コントローラ）１３０は、例えば、複数の素子が単一チップに集積されたSystem-on-a-Chip(ＳｏＣ)と称される大規模集積回路（ＬＳＩ）を用いて実現される。システムコントローラ１３０は、リード／ライト（Ｒ／Ｗ）チャネル４０と、ハードディスクコントローラ（ＨＤＣ）５０と、マイクロプロセッサ（ＭＰＵ）６０とを含む。システムコントローラ１３０は、ドライバＩＣ２０、ヘッドアンプＩＣ３０、バッファメモリ７０、揮発性メモリ８０、不揮発性メモリ９０、及びホストシステム１００に電気的に接続されている。
【００１９】
Ｒ／Ｗチャネル４０は、後述するＭＰＵ６０からの指示に応じて、ディスク１０からホスト１００に転送されるリードデータ及びホスト１００から転送されるライトデータの信号処理を実行する。Ｒ／Ｗチャネル４０は、リードデータの信号品質を測定する回路、又は機能を有している。Ｒ／Ｗチャネル４０は、ヘッドアンプＩＣ３０、ＨＤＣ５０、及びＭＰＵ６０等に電気的に接続されている。なお、リードデータ及びライトデータを単にデータと称する場合もある。  
【００２０】
ＨＤＣ５０は、後述するＭＰＵ６０からの指示に応じて、ホスト１００とＲ／Ｗチャネル４０との間のデータ転送を制御する。ＨＤＣ５０は、Ｒ／Ｗチャネル４０、ＭＰＵ６０、バッファメモリ７０、及び不揮発性メモリ９０等に電気的に接続されている。
【００２１】
ＭＰＵ６０は、磁気ディスク装置１の各部を制御するメインコントローラである。ＭＰＵ６０は、ドライバＩＣ２０を介してＶＣＭ１４を制御し、ヘッド１５の位置決めを行なうサーボ制御を実行する。ＭＰＵ６０は、ディスク１０へのデータのライト動作を制御すると共に、ライトデータの保存先を選択する。また、ＭＰＵ６０は、ディスク１０からのデータのリード動作を制御すると共に、リードデータの処理を制御する。ＭＰＵ６０は、磁気ディスク装置１の各部に接続されている。例えば、ＭＰＵ６０は、ドライバＩＣ２０、及びＲ／Ｗチャネル４０、ＨＤＣ５０、及び揮発性メモリ８０、に電気的に接続されている。  
【００２２】
ＭＰＵ６０は、コマンド処理部６１と、カウンタ６２と、リード／ライト制御部６３とを備えている。ＭＰＵ６０は、これら各部、例えば、コマンド処理部６１、カウンタ６２及びリード／ライト制御部６３等の処理をファームウェア上で実行する。なお、ＭＰＵ６０は、これら各部を回路として備えていてもよい。また、システムコントローラ１３０の他の部分、例えば、Ｒ／Ｗチャネル４０やＨＤＣ５０等が、これら各部を有していてもよい。
【００２３】
コマンド処理部６１は、ホスト１００から複数のコマンドを受信できるコマンドキューを有する。コマンド処理部６１は、ホスト１００から受信したコマンドに対応する処理を実行する。コマンドは、オペレーションコード、ディスク１０に転送するブロック数（以下、転送ブロック数と称する）やデータをライトするディスク１０の位置、例えば、ＬＢＡ（Logical Block Address）等の情報を含む。例えば、コマンド処理部６１は、ホスト１００から受信した所定のデータに基づいて複数のデータを生成し、生成した複数のデータをディスク１０にライトするコマンド、例えば、ＷＲＩＴＥ  ＳＡＭＥコマンドに対応する処理を実行できる。ＷＲＩＴＥ  ＳＡＭＥコマンドをホスト１００から受信した場合、コマンド処理部６１は、ＷＲＩＴＥ  ＳＡＭＥコマンドに関連するデータ（以下、ＷＳ（WRITE SAME）データと称する）に基づいて複数のデータ（以下、説明の便宜上、生成データと称する）を生成する。例えば、ＷＳデータに基づいて生成された複数の生成データにそれぞれ対応する複数のＬＢＡは、連続している。なお、転送ブロック数は、１であってもよい。以下で、１つのＷＳデータに基づいて生成される複数の生成データを生成データ群と称する場合もある。生成データは、ＷＳデータに含まれる情報を含んでいてもよい。また、ＷＳデータに含まれる情報は、生成データに紐づけされた他のデータとしてメモリ、例えば、後述するメモリ５３、揮発性メモリ８０や不揮発性メモリ９０等に記録されていてもよい。ＷＳデータ及び生成データのデータサイズは、それぞれ、データを転送する場合や、データをリード及びライトする場合に使用されるデータサイズである。一例では、ＷＳデータ及び生成データのデータサイズは、同じである。例えば、ＷＳデータ及び生成データのデータサイズは、１論理ブロックサイズである。１論理ブロックサイズは、例えば、５１２Ｂｙｔｅ又は４ＫＢｙｔｅである。コマンド処理部６１は、例えば、ＨＤＣ５０でＷＳデータに基づいて転送ブロック数分の複数の生成データを生成させる。
【００２４】
複数のＷＲＩＴＥ  ＳＡＭＥコマンドを連続して（シーケンシャルに）受信した場合、コマンド処理部６１は、複数のＷＲＩＴＥ  ＳＡＭＥコマンドにそれぞれ対応するＷＳデータに基づいて、それぞれ生成した複数の生成データ群をライトするディスク１０の位置が連続するか連続していないかを判定する。例えば、直前に処理したＷＲＩＴＥ  ＳＡＭＥコマンド（以下、直前のＷＲＩＴＥ  ＳＡＭＥコマンドと称する）の後に現在処理するＷＲＩＴＥ  ＳＡＭＥコマンド（以下、現在のＷＲＩＴＥ  ＳＡＭＥコマンドと称する）を連続して受信した場合、コマンド処理部６１は、現在のＷＲＩＴＥ  ＳＡＭＥコマンドに対応するＷＳデータに基づいて生成した生成データ群の内の最初の生成データのＬＢＡが直前のＷＲＩＴＥ  ＳＡＭＥコマンドに対応するＷＳデータに基づいて生成した生成データ群の内の最後の生成データのＬＢＡと連続するか連続していないかを判定する。以下、説明の便宜上、「直前のＷＲＩＴＥ  ＳＡＭＥコマンドに対応するＷＳデータ」を「直前のＷＳデータ」と称し、「現在のＷＲＩＴＥ  ＳＡＭＥコマンドに対応するＷＳデータ」を「現在のＷＳデータ」と称する。「直前のＷＳデータに基づいて生成した生成データ群」を「直前の生成データ群」と称し、「現在のＷＳデータに基づいて生成した生成データ群」を「現在の生成データ群」と称する。「直前のＷＳデータに基づいて生成した生成データ群の内の最後の生成データ」を「直前のＷＳデータに対応する最後の生成データ」と称し、「現在のＷＳデータに基づいて生成した生成データ群の内の最初の生成データ」を「現在のＷＳデータに対応する最初の生成データ」と称する。また、「直前のＷＳデータに対応する最後の生成データをライトするディスク１０の位置、又はＬＢＡ）」を「直前のＷＳデータに対応する最後の位置、又はＬＢＡ」と称し、「現在のＷＳデータに対応する最初の生成データをライトするディスク１０の位置、又はＬＢＡ）」を「現在のＷＳデータに対応する最初の位置、又はＬＢＡ」と称する。直前のＷＳデータに対応する最後のＬＢＡが現在のＷＳデータに対応する最初のＬＢＡと連続すると判定した場合、コマンド処理部６１は、直前のＷＳデータに対応する最後のＬＢＡが現在のＷＳデータに対応する最初のＬＢＡと連続することを示す信号（以下、シーケンシャル信号と称する）をカウンタ６２やリード／ライト制御部６３等に出力する。換言すると、直前のＷＳデータに対応する最後のＬＢＡと現在のＷＳデータに対応する最初のＬＢＡとがシーケンシャルにアクセス可能であると判定した場合、コマンド処理部６１は、シーケンシャル信号をカウンタ６２やリード／ライト制御部６３等に出力する。
【００２５】
カウンタ６２は、データをカウントする。例えば、カウンタ６２は、ＷＲＩＴＥ  ＳＡＭＥコマンドで指定された転送ブロック数に対応する値をディスク１０へ転送する生成データのブロック数を示すライトカウント値に加算する。シーケンシャル信号を受信した場合、カウンタ６２は、現在のＷＲＩＴＥ  ＳＡＭＥコマンドで指定された転送ブロック数に対応する値をライトカウント値に加算する。カウンタ６２は、生成データをバッファメモリ７０、例えば、セグメントバッファ領域７２に転送が完了する毎にセグメントバッファ領域７２に転送した生成データのブロック数を示す転送カウント値を一定値、例えば、１ずつ増加させる。カウンタ６２は、セグメントバッファ領域７２に転送した生成データをディスク１０にライトする毎、又はディスク１０に転送する毎に転送カウント値及びライトカウント値を一定値、例えば、１ずつ減少させる。以下、「一定値、例えば、１ずつ増加させる」ことを「インクリメントする」と称し、「一定値、例えば、１ずつ減少させる」ことを「デクリメントする」と称する。なお、カウンタ６２は、ライトカウント値をカウントしていなくともよい。例えば、カウンタ６２は、生成データをセグメントバッファ領域７２に転送が完了する毎にセグメントバッファ領域７２に転送した生成データのブロック数を示す転送カウント値をインクリメントし、セグメントバッファ領域７２に転送した生成データをディスク１０にライトする毎、又はディスク１０に転送する毎に転送カウント値をデクリメントしてもよい。
【００２６】
リード／ライト制御部６３は、コマンド処理部６１の処理に応じて、データのリード処理及びライト処理を制御する。リード／ライト制御部６３は、ドライバＩＣ２０を介してＶＣＭ１４を制御し、ヘッド１５をディスク１０上の目標位置に位置決めし、リード処理及びライト処理を実行する。リード／ライト制御部６３は、ライト処理を実行する場合、バッファメモリ７０にセグメントバッファ領域７２を確保する。  
【００２７】
リード／ライト制御部６３は、ホスト１００から受信したコマンドに関連する処理が終了した場合にホスト１００に対して信号を出力する。例えば、転送カウント値がＷＳデータに含まれる転送ブロック数に対応する値に到達したと判定した場合、リード／ライト制御部６３は、ホスト１００にＷＲＩＴＥ  ＳＡＭＥコマンドの処理が終了したことを示す信号（以下、コマンド完了ステータスと称する）を出力する。
【００２８】
リード／ライト制御部６３は、カウント値に応じてディスク１０へのライト処理を制御できる。例えば、ライトカウント値が０、つまり、セグメントバッファ領域７２に有効な生成データが記録されていないと判定した場合、リード／ライト制御部６３は、ディスク１０への生成データのライト処理を抑制する。この場合、リード／ライト制御部６３は、ディスク１０への生成データのライト処理が完了したことを示す信号（以下、ライト完了ステータスと称する）を、例えば、ホスト１００に出力する。  
【００２９】
リード／ライト制御部６３は、転送カウント値に応じてバッファメモリ７０、例えば、セグメントバッファ領域７２への生成データの転送を制御できる。例えば、転送カウント値が閾値に到達したと判定した場合、リード／ライト制御部６３は、セグメントバッファ領域７２への生成データの転送を抑制する。閾値は、バッファメモリ７０に生成データを記録可能な容量、例えば、セグメントバッファ領域７２に生成データを記録可能な容量に対応するカウント値である。
【００３０】
また、シーケンシャル信号を受信した場合、リード／ライト制御部６３は、ディスク１０へのライト処理中であるかライト処理中でないかを判定する。ライト処理中であると判定した場合、リード／ライト制御部６３は、既に確保しているセグメントバッファ領域７２に現在のＷＳデータに対応する複数の生成データを順番に転送し、セグメントバッファ領域７２に転送した現在のＷＳデータに対応する複数の生成データを順番にディスク１０に転送する。リード／ライト制御部６３は、直前の生成データ群に続けて現在の生成データ群をディスク１０に連続的にライト（シーケンシャルライト）する。一例では、リード／ライト制御部６３は、直前のＷＳデータに対応する最後の生成データに続けて現在のＷＳデータに対応する最初の生成データをディスク１０にシーケンシャルライトする。
【００３１】
以下で、ヘッド１５、ヘッドアンプＩＣ３０、バッファメモリ７０、揮発性メモリ８０、不揮発性メモリ９０やシステムコントローラ１３０等において、ホスト１００から転送されるデータをディスク１０にライトする系をライト系と称する場合もある。  
【００３２】
図２は、本実施形態に係る磁気ディスク装置１のライト系の構成例を示す模式図である。図２では、説明に必要な構成のみを図示している。  
【００３３】
ＨＤＣ５０は、ライト系として、ホスト制御部５１と、バッファ制御部５２と、メモリ（内部メモリ）５３と、暗号化部５４と、データ付加部５５と、ディスク制御部５６とを備えている。これら各部は、bus（バス）等を介して互いに接続されている。
【００３４】
ホスト制御部５１は、ホスト１００に接続されており、ホスト１００との間でのデータ転送を制御する。例えば、ＷＳデータをホスト１００から受信した場合、ホスト制御部５１は、受信したＷＳデータをバッファ制御部５２に出力する。
【００３５】
バッファ制御部５２は、バッファメモリ７０に接続されており、バッファメモリ７０との間でのデータ転送を制御する。例えば、ＷＳデータが入力された場合、バッファ制御部５２は、バッファメモリ７０の格納領域７１にＷＳデータを転送する。また、バッファ制御部５２は、格納領域７１に記録したＷＳデータをメモリ５３に複製（コピー）する。また、生成データが入力された場合、バッファ制御部５２は、セグメントバッファ領域７２に生成データを転送する。セグメントバッファ領域７２に生成データを転送した場合、バッファ制御部５２は、例えば、転送カウント値をインクリメントする信号をカウンタ６２に出力する。リード／ライト制御部６３からセグメントバッファ領域７２への生成データの転送を抑制する信号を受信した場合、バッファ制御部５２は、セグメントバッファ領域７２への生成データの転送を抑制する。また、バッファ制御部５２は、セグメントバッファ領域７２に記録された複数の生成データをＬＢＡに従って順番にディスク制御部５６に転送する。
【００３６】
メモリ５３は、データを保持する。メモリ５３は、例えば、ＦＩＦＯとして機能する。例えば、メモリ５３では、複製された順番でＷＳデータが処理され、ＷＳデータに基づいて転送ブロック数分の複数の生成データが生成される。メモリ５３は、生成された複数の生成データをＬＢＡに従って順番に暗号化部５４に出力する。
【００３７】
暗号化部５４は、データの暗号化処理を実行する。例えば、暗号化部５４は、入力された生成データを暗号化し、暗号化した生成データをデータ付加部５５に出力する。
【００３８】
データ付加部５５は、データに保護データを付加する。保護データは、データの整合性、例えば、データが誤っているか誤っていないかを示す情報等を含む。保護データは、例えば、ＣＲＣ（Cyclic Redundancy Check）コード等を含む。例えば、データ付加部５５は、入力された生成データに保護データを付加し、保護データを付加して生成データをバッファ制御部５２に出力する。
【００３９】
ディスク制御部５６は、Ｒ／Ｗチャネル４０と接続されており、Ｒ／Ｗチャネル４０を介してディスク１０との間でのデータ転送を制御する。例えば、ディスク制御部５６は、入力された生成データをＲ／Ｗチャネル４０に転送する。例えば、Ｒ／Ｗチャネル４０に生成データを転送した場合、ディスク制御部５６は、転送カウント値及びライトカウント値をデクリメントする信号をカウンタ６２に出力してもよい。なお、Ｒ／Ｗチャネル４０に生成データを転送した場合、ディスク制御部５６は、転送カウント値のみをデクリメントする信号をカウンタ６２に出力してもよい。また、転送カウント値及びライトカウント値をデクリメントする信号は、ヘッドアンプＩＣ３０やＲ／Ｗチャネル４０等の他の部分から出力されてもよい。
【００４０】
図３は、本実施形態に係るライト方法の一例のフローチャートである。  
【００４１】
ＷＲＩＴＥ  ＳＡＭＥコマンドを受信した場合、システムコントローラ１３０は、ホスト１００から受信したＷＳデータを格納領域７１に転送する（Ｂ３０１）。例えば、ＷＲＩＴＥ  ＳＡＭＥコマンドを受信した場合、システムコントローラ１３０は、ホスト１００から受信したＷＳデータを格納領域７１に転送して記録する。システムコントローラ１３０は、格納領域７１に転送したＷＳデータをメモリ５３に複製する（Ｂ３０２）。システムコントローラ１３０は、メモリ５３において、ＷＳデータに基づいて複数の生成データを生成する（Ｂ３０３）。例えば、システムコントローラ１３０は、ＷＳデータに基づいて転送ブロック数分の複数の生成データを生成し、複数の生成データに暗号化処理をそれぞれ実行し、複数の生成データに保護データをそれぞれ付加する。
【００４２】
システムコントローラ１３０は、ディスク１０にデータをライト中であるかライト中でないかを判定する（Ｂ３０４）。ライト中でないと判定した場合（Ｂ３０４のＮＯ）、システムコントローラ１３０は、バッファメモリ７０にセグメントバッファ領域７２を確保する（Ｂ３０５）。システムコントローラ１３０は、複数の生成データをセグメントバッファ領域７２へ順番に転送し（Ｂ３０６）、セグメントバッファ領域７２に順番に転送した少なくとも１つの生成データをディスク１０に順番にライトし（Ｂ３０７）、Ｂ３０９の処理へ進む。例えば、システムコントローラ１３０は、複数の生成データをセグメントバッファ領域７２へＬＢＡに従って順番に転送し、複数の生成データをセグメントバッファ領域７２に一時的に記録する。ライト中であると判定した場合（Ｂ３０４のＹＥＳ）、システムコントローラ１３０は、複数の生成データを既に確保されているセグメントバッファ領域７２に順番に転送する（Ｂ３０８）。例えば、システムコントローラ１３０は、複数の生成データを既に確保されているセグメントバッファ領域７２へＬＢＡに従って順番に転送し、複数の生成データをこのセグメントバッファ領域７２に一時的に記録する。
【００４３】
システムコントローラ１３０は、セグメントバッファ領域７２へ生成データ群の転送が完了したか完了していないかを判定する（Ｂ３０９）。例えば、システムコントローラ１３０は、セグメントバッファ領域７２に転送ブロック数分の複数の生成データの転送が完了したか完了していないかを判定する。転送ブロック数分の複数の生成データの転送が完了していないと判定した場合（Ｂ３０９のＮＯ）、システムコントローラ１３０は、Ｂ３０９の処理へ戻る。転送ブロック数分の複数の生成データの転送が完了したと判定した場合（Ｂ３０９のＹＥＳ）、システムコントローラ１３０は、ホスト１００にコマンド完了ステータスを出力する（Ｂ３１０）。
【００４４】
システムコントローラ１３０は、ホスト１００から連続するＬＢＡへのＷＲＩＴＥ  ＳＡＭＥコマンドを受信しているか受信していないかを判定する（Ｂ３１１）。連続するＬＢＡへのＷＲＩＴＥ  ＳＡＭＥコマンドを受信していると判定した場合（Ｂ３１１のＹＥＳ）、システムコントローラ１３０は、Ｂ３０１の処理へ戻る。連続するＬＢＡへのＷＲＩＴＥ  ＳＡＭＥコマンドを受信していないと判定した場合（Ｂ３１１のＮＯ）、システムコントローラ１３０は、ディスク１０への全ての生成データのライト処理が完了しているか完了していないかを判定する（Ｂ３１２）。例えば、システムコントローラ１３０は、ライトカウント値又は転送カウント値が０であるか０でないかを判定する。全ての生成データのライト処理が完了していないと判定した場合（Ｂ３１２のＮＯ）、システムコントローラ１３０は、Ｂ３１１の処理へ戻る。全ての生成データのライト処理が完了していると判定した場合（Ｂ３１２のＹＥＳ）、システムコントローラ１３０は、処理を終了する。
【００４５】
本実施形態によれば、磁気ディスク装置１は、バッファメモリ７０と、システムコントローラ１３０とを備えている。バッファメモリ７０は、格納領域７１と、セグメントバッファ領域７２とを有している。システムコントローラ１３０は、Ｒ／Ｗチャネル４０と、ＨＤＣ５０と、ＭＰＵ６０とを備えている。ＨＤＣ５０は、ホスト制御部５１と、バッファ制御部５２と、メモリ５３と、暗号化部５４と、データ付加部５５とを備えている。ＷＲＩＴＥ  ＳＡＭＥコマンドを受信した場合、磁気ディスク装置１は、格納領域７１にＷＳデータを記録し、メモリ５３にＷＳデータを複製（コピー）する。磁気ディスク装置１は、バッファメモリ７０にセグメントバッファ領域７２を確保する。磁気ディスク装置１は、メモリ５３において、ＷＳデータに基づいて複数の生成データを生成し、生成した複数の生成データに暗号化処理をそれぞれ実行し、複数の生成データに保護データをそれぞれ付加し、複数の生成データをセグメントバッファ領域７２にＬＢＡに従って順番に転送し、ディスク１０に複数の生成データをＬＢＡに従って順番にライトする。直前のＷＲＩＴＥ  ＳＡＭＥコマンドに対応する生成データ群をディスク１０にライト中に現在のＷＲＩＴＥ  ＳＡＭＥコマンドを受信した場合、磁気ディスク装置１は、直前の生成データ群に対して現在の生成データ群がシーケンシャルアクセスかシーケンシャルアクセスでないかを判定する。直前の生成データ群に対して現在の生成データ群がシーケンシャルアクセスであると判定した場合、磁気ディスク装置１は、直前の生成データ群に続けて現在の生成データ群をシーケンシャルライトする。そのため、直前のＷＲＩＴＥ  ＳＡＭＥコマンドに対応する生成データ群をディスク１０にライト中に現在のＷＲＩＴＥ  ＳＡＭＥコマンドを受信した場合、磁気ディスク装置１は、ディスク１０の回転待ちをすることなく、直前の生成データ群に続けて現在の生成データ群をシーケンシャルライトすることができる。したがって、磁気ディスク装置１は、ライト性能を向上することができる。
【００４６】
次に、他の実施形態に係る磁気ディスク装置について説明する。他の実施形態において、前述の実施形態と同一の部分には同一の参照符号を付してその詳細な説明を省略する。
【００４７】
（第２実施形態）  
第２実施形態の磁気ディスク装置１は、電源から供給される電力が遮断又は低下した場合にデータを退避する点が前述の実施形態と異なる。  
【００４８】
図４は、第２実施形態に係る磁気ディスク装置１の構成を示すブロック図である。  
【００４９】
ドライバＩＣ２０は、バックアップ電源２１を備えている。なお、バックアップ電源２１は、その一部、例えば、整流回路がドライバＩＣ２０の外部に設けられていてもよい。
【００５０】
バックアップ電源２１は、磁気ディスク装置１の電源（以下、主電源と称する）から供給される電力が遮断、又は低下した場合（以下、主電源に異常が生じた場合と称する）に、磁気ディスク装置１の保護動作を維持するために必要な電力を供給する。保護動作は、例えば、ヘッド１５をディスク１０から離れた位置に移動させる動作やパワーロス保護（ＰＬＰ:Power Loss Protection）機能によるデータのライトや複製（以下、退避と称する場合もある）動作を含む。ＰＬＰ機能は、主電源に異常が生じた場合にディスク１０へのライト処理が完了していないライトデータ（以下、未ライトデータと称する）を不揮発性メモリ等に退避することで、未ライトデータを保証する機能である。主電源に異常が生じた場合、バックアップ電源２１は、少なくともバッファメモリ７０、不揮発性メモリ９０、及びシステムコントローラ１３０等に電力を供給する。バックアップ電源２１は、例えば、供給電力を生成するためにＳＰＭ１２の逆起電力を利用する。なお、バックアップ電源２１は、供給電力を生成するために主電源によって充電されるキャパシタを利用してもよい。
【００５１】
ＭＰＵ６０は、退避処理部６４をさらに備えている。ＭＰＵ６０は、退避処理部６４等の処理をファームウェア上で実行する。なお、ＭＰＵ６０は、退避処理部６４を回路として備えていてもよい。また、システムコントローラ１３０の他の部分、例えば、Ｒ／Ｗチャネル４０やＨＤＣ５０等が、退避処理部６４を有していてもよい。  
【００５２】
第２実施形態において、転送カウント値（ライト未完了のブロック数）が退避可能な生成データのブロック数に対応する値（以下、退避可能値と称する）以下になった判定した場合、リード／ライト制御部６３は、ホスト１００にコマンド完了ステータスを出力する。退避可能値は、例えば、バックアップ電源２１から供給される供給電力を維持できる時間内に、不揮発メモリ９０に退避可能な生成データのブロック数に対応する値である。なお、転送カウント値が退避可能値以下であると判定した場合に、リード／ライト制御部６３は、ホスト１００にコマンド完了ステータスを出力してもよい。
【００５３】
退避処理部６４は、未ライトデータを管理する機能を有している。このように未ライトデータを管理する機能は、例えば、ＰＷＣ（Persistent Write Cache）機能と称される場合もある。主電源に異常が生じた場合、退避処理部６４は、ＰＬＰ機能によりバックアップ電源２１から一時的に供給される電力を受けてデータの保護動作を実行する。  
【００５４】
例えば、主電源に異常が生じた場合、退避処理部６４は、格納領域７１に記録されたＷＳデータとセグメントバッファ領域７２に記録された少なくとも１つの生成データ（以下、未ライト生成データと称する）とを不揮発性メモリ９０に退避する。この場合、退避処理部６４は、格納領域７１に記録されたＷＳデータに対応するＷＲＩＴＥ  ＳＡＭＥコマンドの情報（以下、ＷＳコマンド情報と称する）を不揮発性メモリ９０に退避してもよい。また、退避処理部６４は、セグメントバッファ領域７２に記録された未ライト生成データをライトするディスク１０の位置、例えば、ＬＢＡやＷＳデータに対応する転送ブロック数においてディスク１０にライト完了した生成データを除いた残りの転送ブロック数（以下、残りのブロック数と称する）等の情報（以下、生成データ情報と称する）を不揮発性メモリ９０に退避してもよい。主電源が復旧した場合、退避処理部６４は、データの復元動作を実行する。
【００５５】
例えば、主電源が復旧した場合、退避処理部６４は、退避した未ライト生成データを不揮発性メモリ９０からセグメントバッファ領域７２に転送する。この場合、退避処理部６４は、ＷＳデータを不揮発性メモリ９０からメモリ５３や格納領域７１に転送する。また、退避処理部６４は、不揮発性メモリ９０に退避したＷＳデータと生成データ情報とに基づいて、不揮発性メモリ９０に退避した少なくとも１つの未ライト生成データの内の最後のＬＢＡに対応する未ライト生成データの次のＬＢＡに対応する生成データから残りのブロック数分の少なくとも１つの生成データ（以下、残りの生成データと称する）をＨＤＣ５０で再度生成（復元）させる。なお、主電源に異常が生じた場合、退避処理部６４は、格納領域７１に記録したＷＳデータのみを不揮発性メモリ９０に退避してもよい。主電源が復旧した場合、退避処理部６４は、不揮発性メモリ９０に退避したＷＳデータに基づいて生成データ群をＨＤＣ５０で再度生成させてもよい。
【００５６】
図５は、第２実施形態に係る磁気ディスク装置１のライト系の構成例を示す模式図である。図５では、説明に必要な構成のみを図示している。  
【００５７】
主電源に異常が生じた場合、バッファ制御部５２は、例えば、格納領域７１に記録されたＷＳデータとセグメントバッファ領域７２に記録された少なくとも１つの未ライト生成データとを不揮発性メモリ９０に転送する。主電源が復旧した場合、バッファ制御部５２は、例えば、少なくとも１つの未ライト生成データを不揮発性メモリ９０からセグメントバッファ領域７２に転送する。この場合、バッファ制御部５２は、ＷＳデータを不揮発性メモリ９０からメモリ５３及び格納領域７１に転送する。
【００５８】
図６は、第２実施形態に係るライト方法の一例のフローチャートである。  
【００５９】
ＷＲＩＴＥ  ＳＡＭＥコマンドを受信した場合、システムコントローラ１３０は、ＷＳデータを格納領域７１に転送し（Ｂ３０１）、ＷＳデータをメモリ５３に複製し（Ｂ３０２）、ＷＳデータに基づいて複数の生成データを生成する（Ｂ３０３）。システムコントローラ１３０は、ディスク１０にデータをライト中であるかライト中でないかを判定する（Ｂ３０４）。ライト中でないと判定した場合（Ｂ３０４のＮＯ）、システムコントローラ１３０は、バッファメモリ７０にセグメントバッファ領域７２を確保し（Ｂ３０５）、生成データをセグメントバッファ領域７２に順番に転送し（Ｂ３０６）、セグメントバッファ領域７２に順番に転送した少なくとも１つの生成データをディスク１０に順番にライトし（Ｂ３０７）、Ｂ３０９の処理へ進む。ライト中であると判定した場合（Ｂ３０４のＹＥＳ）、システムコントローラ１３０は、複数の生成データを既に確保されているセグメントバッファ領域７２に順番に転送する（Ｂ３０８）。
【００６０】
システムコントローラ１３０は、セグメントバッファ領域７２へ生成データ群の転送が完了したか完了していないかを判定する（Ｂ３０９）。転送ブロック数分の複数の生成データの転送が完了していないと判定した場合（Ｂ３０９のＮＯ）、システムコントローラ１３０は、Ｂ３０９の処理へ戻る。転送ブロック数分の複数の生成データの転送が完了したと判定した場合（Ｂ３０９のＹＥＳ）、システムコントローラ１３０は、セグメントバッファ領域７２に記録された全ての未ライト生成データを不揮発性メモリ９０に退避できるか退避できないかを判定する（Ｂ６０１）。例えば、システムコントローラ１３０は、転送カウント値が退避可能値以下になっているか退避可能値よりも大きいかを判定する。全ての未ライト生成データを退避できないと判定した場合（Ｂ６０１のＮＯ）、システムコントローラ１３０は、Ｂ３１１の処理に進む。例えば、転送カウント値が退避可能値より大きいと判定した場合、システムコントローラ１３０は、Ｂ３１１の処理に進む。全ての未ライト生成データを退避できると判定した場合（Ｂ６０１のＹＥＳ）、システムコントローラ１３０は、ホスト１００にコマンド完了ステータスを出力する（Ｂ３１０）。例えば、転送カウント値が退避可能値以下であると判定した場合、システムコントローラ１３０は、ホスト１００にコマンド完了ステータスを出力する。
【００６１】
システムコントローラ１３０は、ホスト１００から連続するＬＢＡへのＷＲＩＴＥ  ＳＡＭＥコマンドを受信しているか受信していないかを判定する（Ｂ３１１）。連続するＬＢＡへのＷＲＩＴＥ  ＳＡＭＥコマンドを受信していると判定した場合（Ｂ３１１のＹＥＳ）、システムコントローラ１３０は、Ｂ３０１の処理へ戻る。連続するＬＢＡへのＷＲＩＴＥ  ＳＡＭＥコマンドを受信していないと判定した場合（Ｂ３１１のＮＯ）、システムコントローラ１３０は、ディスク１０への全ての生成データのライト処理が完了しているか完了していないかを判定する（Ｂ３１２）。全ての生成データのライト処理が完了していないと判定した場合（Ｂ３１２のＮＯ）、システムコントローラ１３０は、Ｂ６０１の処理へ戻る。全ての生成データのライト処理が完了していると判定した場合（Ｂ３１２のＹＥＳ）、システムコントローラ１３０は、処理を終了する。
【００６２】
図７は、第２実施形態に係る主電源に異常が生じた場合のＷＲＩＴＥ  ＳＡＭＥコマンドに関連するデータの退避方法の一例のフローチャートである。  
【００６３】
主電源に異常が生じた場合、システムコントローラ１３０は、格納領域７１から不揮発性メモリ９０にＷＳデータを退避する（Ｂ７０１）。システムコントローラ１３０は、セグメントバッファ領域７２から不揮発性メモリ９０に未ライト生成データを退避する（Ｂ７０２）。システムコントローラ１３０は、不揮発性メモリ９０にＷＳコマンド情報や生成データ情報を退避し（Ｂ７０３）、処理を終了する。
【００６４】
図８は、第２実施形態に係る主電源に異常が生じた場合のＷＲＩＴＥ  ＳＡＭＥコマンドに関連するデータの復元方法の一例のフローチャートである。  
【００６５】
主電源が復旧した場合、システムコントローラ１３０は、不揮発性メモリ９０からメモリ５３や格納領域７１にＷＳデータを転送して記録する（Ｂ８０１）。システムコントローラ１３０は、不揮発性メモリ９０からセグメントバッファ領域７２に未ライト生成データを転送して記録する（Ｂ８０２）。システムコントローラ１３０は、不揮発性メモリ９０に退避したＷＳデータと生成データ情報とに基づいて残りの生成データをメモリ５３に復元し（Ｂ８０３）、処理を終了する。
【００６６】
第２実施形態によれば、磁気ディスク装置１は、セグメントバッファ領域７２に記録された全ての未ライト生成データを不揮発性メモリ９０に退避できるか退避できないかを判定する。全ての未ライト生成データを退避できると判定した場合、磁気ディスク装置１は、ホスト１００にコマンド完了ステータスを出力する。そのため、予期せず主電源に異常が生じた場合でも、磁気ディスク装置１は、コマンド完了ステータスを出力したＷＲＩＴＥ  ＳＡＭＥコマンドに対応する生成データを保証することができる。
【００６７】
主電源に異常が生じた場合、磁気ディスク装置１は、ＰＬＰ機能によりバックアップ電源２１から一時的に供給される電力を受けてデータの保護動作を実行する。主電源に異常が生じた場合、磁気ディスク装置１は、格納領域７１に記録されたＷＳデータやセグメントバッファ領域７２に記録された少なくとも１つの未ライト生成データを不揮発性メモリ９０に退避する。この場合、磁気ディスク装置１は、不揮発性メモリ９０にＷＳコマンド情報や生成データ情報も退避できる。主電源が復旧した場合、磁気ディスク装置１は、不揮発性メモリ９０からメモリ５３や格納領域７１にＷＳデータを転送する。この場合、磁気ディスク装置１は、不揮発性メモリ９０からセグメントバッファ領域７２に未ライト生成データを転送する。磁気ディスク装置１は、不揮発性メモリ９０に退避したＷＳデータと生成データ情報とに基づいて残りの生成データをメモリ５３に復元し、復元した残りの生成データをセグメントバッファ領域７２に順番に転送し、セグメントバッファ領域７２に転送した少なくとも１つの生成データをディスク１０に順番にライトする。そのため、磁気ディスク装置１は、データの記録品質を向上できる。
【００６８】
いくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００６９】
１…磁気ディスク装置、１０…磁気ディスク、１０ａ…ユーザデータ領域、１０ｂ…システムエリア、１２…スピンドルモータ（ＳＰＭ）、１３…アーム、１４…ボイスコイルモータ（ＶＣＭ）、１５…ヘッド、１５Ｗ…ライトヘッド、１５Ｒ…リードヘッド、２０…ドライバＩＣ、３０…ヘッドアンプＩＣ、４０…リード／ライト（Ｒ／Ｗ）チャネル、５０…ハードディスクコントローラ（ＨＤＣ）、６０…マイクロプロセッサ（ＭＰＵ）、７０…バッファメモリ、８０…揮発性メモリ、９０…不揮発性メモリ、１００…ホストシステム（ホスト）、１３０…システムコントローラ。
【図１】
2019153363.tif 000003
【図２】
2019153363.tif 000004
【図３】
2019153363.tif 000005
【図４】
2019153363.tif 000006
【図５】
2019153363.tif 000007
【図６】
2019153363.tif 000008
【図７】
2019153363.tif 000009
【図８】
2019153363.tif 000010