(57)【要約】【課題】未退避の管理情報を復旧するのに要する時間を短縮できるようにする。【解決手段】実施形態によれば、不揮発性記憶媒体を備えたストレージ装置は、揮発性メモリと、前記不揮発性記憶媒体よりも速くアクセスできる不揮発性メモリと、コントローラとを具備する。前記揮発性メモリには、前記ストレージ装置における管理のための複数の管理情報が格納される。前記コントローラは、前記複数の管理情報それぞれを復旧するのに要する復旧時間に基づいて、１つ以上の管理情報を、前記不揮発性メモリに退避されるべき退避対象として決定する。前記コントローラは更に、前記決定された管理情報を、前記ストレージ装置への電力の供給の遮断に応じて前記不揮発性メモリに退避する。【選択図】図１
2017156803.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性記憶媒体を備えたストレージ装置において、
前記ストレージ装置における管理のための複数の管理情報が格納される揮発性メモリと、
前記不揮発性記憶媒体よりも速くアクセスできる不揮発性メモリと、
前記複数の管理情報それぞれを復旧するのに要する復旧時間に基づいて、１つ以上の管理情報を、前記不揮発性メモリに退避されるべき退避対象として決定し、前記決定された管理情報を、前記ストレージ装置への電力の供給の遮断に応じて前記不揮発性メモリに退避するための退避動作を実行するコントローラと
を具備するストレージ装置。
【請求項２】
前記電力の供給の遮断に応じて、少なくとも前記退避動作に用いられる電力を生成するバックアップ電源を更に具備し、
前記コントローラは、前記複数の管理情報に含まれていて、且つ更新されているものの前記不揮発性記憶媒体に未保存の全ての管理情報のうちの１つ以上を含む全ての組み合わせを生成して、前記生成された組み合わせの中から、前記バックアップ電源による電力の供給が可能な期間に前記不揮発性メモリに退避可能な管理情報を含む全ての組み合わせを選択し、前記選択された組み合わせの各々に含まれている１つ以上の管理情報の復旧に要する時間に対応する総復旧時間に基づいて、前記選択された組み合わせの１つである第１の組み合わせに含まれている１つ以上の管理情報を前記退避対象として決定する
請求項１記載のストレージ装置。
【請求項３】
前記第１の組み合わせに対応する総復旧時間は、前記選択された組み合わせそれぞれに対応する総復旧時間のうちの最大時間である請求項２記載のストレージ装置。
【請求項４】
前記コントローラは、前記生成された組み合わせの各々に含まれている１つ以上の管理情報の総サイズに基づいて前記選択を実行する請求項２及び請求項３のいずれか一項に記載のストレージ装置。
【請求項５】
前記復旧時間は、仮に前記複数の管理情報が前記不揮発性記憶媒体に保存される前に前記電力の供給が遮断したならば前記ストレージ装置の起動時に実行されるべき前記複数の管理情報それぞれを復旧するのに要する時間である請求項１乃至請求項４のいずれか一項に記載のストレージ装置。
【請求項６】
前記複数の管理情報にそれぞれ対応付けられたエントリを有する管理テーブルを更に具備し、
前記エントリの各々は、対応する管理情報が前記退避対象であるかを示すフラグとを保持するのに用いられ、
前記コントローラは、前記１つ以上の管理情報を前記退避対象として決定した場合、前記決定された管理情報に対応付けられた前記管理テーブル内のエントリ中の前記フラグを、前記退避対象であることを示す状態に設定する
請求項１乃至請求項５のいずれか一項に記載のストレージ装置。
【請求項７】
前記エントリの各々は、前記対応するシステム情報が更新されていて且つ当該更新されたシステム情報が前記不揮発性記憶媒体に未保存であるかを示す他のフラグと、前記対応するシステム情報のサイズを示すサイズ情報と、前記対応するシステム情報の復旧に要する復旧時間を示す復旧時間情報と、を更に保持するのに用いられる請求項６記載のストレージ装置。
【請求項８】
前記コントローラは、前記ストレージ装置の起動時に、前記複数の管理情報のうち前記電力の供給が遮断する前の状態に復旧されるべき管理情報を前記揮発性メモリ内に復旧し、且つ前記不揮発性メモリに退避された前記管理情報を前記揮発性メモリ内にロードする請求項１乃至請求項７のいずれか一項に記載のストレージ装置。
【請求項９】
不揮発性記憶媒体と、揮発性メモリと、前記不揮発性記憶媒体よりも速くアクセスできる不揮発性メモリとを備えたストレージ装置における管理情報退避方法であって、
前記揮発性メモリに格納される前記ストレージ装置における管理のための複数の管理情報それぞれを復旧するのに要する復旧時間に基づいて、１つ以上の管理情報を、前記不揮発性メモリに退避されるべき退避対象として決定し、
前記決定された管理情報を、前記ストレージ装置への電力の供給の遮断に応じて前記不揮発性メモリに退避するための退避動作を実行する
管理情報退避方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、ストレージ装置及び及び同装置における管理情報退避方法に関する。
【背景技術】
【０００２】
ストレージ装置、例えば磁気ディスク装置で用いられる管理情報として、システム情報が知られている。システム情報は、管理（例えば、ディスクにライトされたデータの管理）のために、システム（例えば、磁気ディスク装置のコントローラ）によって利用される。システム情報は、処理の高速化のために、ダイナミックＲＡＭ（ＤＲＡＭ）のような揮発性メモリに格納されて用いられる。揮発性メモリに格納されたシステム情報は、磁気ディスク装置への電力の供給の遮断（電源遮断）により消失する。
【０００３】
一方、電源遮断に起因するデータの消失を回避するために、つまり、データを電源遮断から保護するために、従来から種々の方法が提案されている。これらの方法の一つは、揮発性メモリに格納されたデータ（例えば、ディスクに未ライトのライトデータ）を、電源遮断時にバックアップ電源を用いて、フラッシュＲＯＭのような不揮発性メモリに退避する方法である。
【０００４】
この方法を用いて提供されるデータ保護機能は、パワーロス保護（Power Loss Protection: PLP）機能とも呼ばれる。そこで、ＰＬＰ機能を利用して、システム情報を揮発性メモリから不揮発性メモリに退避することが考えられる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】米国特許第９０７０４１７号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかし、ＰＬＰ機能を利用したとしても、バックアップ電源からの電力の供給が可能な時間（つまり、バックアップ可能時間）に、揮発性メモリ内の全てのシステム情報（より詳細には、全ての種類のシステム情報）を不揮発性メモリに退避することは難しい。
【０００７】
もし、未退避のシステム情報があったならば、当該未退避のシステム情報は、電源遮断により消失する。この場合、磁気ディスク装置のコントローラは、当該磁気ディスク装置が起動された際に、未退避のシステム情報を、電源遮断が発生する直前の状態に復旧しなければならない。上述の復旧に要する時間は、主として、復旧されるべきシステム情報の種類に依存する。
【０００８】
ＰＬＰ機能は、例えば、ソリッドステートドライブ（ＳＳＤ）のような、磁気ディスク装置以外のストレージ装置によっても提供される。このようなストレージ装置においてＰＬＰ機能を利用したとしても、電源遮断が発生した場合には、必ずしも全てのシステム情報を退避できるとは限らない。
【０００９】
本発明が解決しようとする課題は、電源遮断時に揮発性メモリから不揮発性メモリに未退避の管理情報を復旧するのに要する時間を短縮できるストレージ装置及び同装置における管理情報退避方法を提供することにある。
【課題を解決するための手段】
【００１０】
実施形態によれば、不揮発性記憶媒体を備えたストレージ装置は、揮発性メモリと、前記不揮発性記憶媒体よりも速くアクセスできる不揮発性メモリと、コントローラとを具備する。前記揮発性メモリには、前記ストレージ装置における管理のための複数の管理情報が格納される。前記コントローラは、前記複数の管理情報それぞれを復旧するのに要する復旧時間に基づいて、１つ以上の管理情報を、前記不揮発性メモリに退避されるべき退避対象として決定する。前記コントローラは更に、前記決定された管理情報を、前記ストレージ装置への電力の供給の遮断に応じて前記不揮発性メモリに退避する。
【図面の簡単な説明】
【００１１】
【図１】実施形態に係る磁気ディスク装置の典型的な構成を示すブロック図。
【図２】図１に示されるＤＲＡＭ内のバッファ領域の典型的なメモリマップの例を示す図。
【図３】図２に示されるシステムバッファ領域のＣＰＵメモリ空間におけるマッピングの例を示す図。
【図４】図１に示されるＦＲＯＭ内の退避領域の典型的なメモリマップの例を示す図。
【図５】図１に示されるシステムバッファ管理テーブルのデータ構造例を示す図。
【図６】図１に示されるＦＲＯＭ管理テーブルのデータ構造例を示す図。
【図７】図１に示される退避管理テーブルのデータ構造例を示す図。
【図８】同実施形態におけるシステム情報退避処理の典型的な手順を示すフローチャート。
【図９】システム情報退避処理に含まれている退避対象決定処理の典型的な手順を示すフローチャート。
【発明を実施するための形態】
【００１２】
以下、実施の形態につき図面を参照して説明する。  
図１は実施形態に係る磁気ディスク装置の典型的な構成を示すブロック図である。磁気ディスク装置は、ストレージ装置の一例であり、ハードディスクドライブ（ＨＤＤ）とも呼ばれている。そこで以下の説明では、磁気ディスク装置をＨＤＤと表記する。図１に示されるＨＤＤは、ヘッド・ディスクアセンブリ（ＨＤＡ）１１、ドライバＩＣ１２、コントローラ１３、ＤＲＡＭ１４、フラッシュＲＯＭ（ＦＲＯＭ）１５、及びバックアップ電源１６を備えている。
【００１３】
ＨＤＡ１１は、ディスク１１０を含む。ディスク１１０は、例えば、当該ディスク１１０の少なくとも一方の面に、データが磁気記録される記録面を備える不揮発性記憶媒体である。つまりディスク１１０は、記憶領域１１１を有する。記憶領域１１１の一部はメディアキャッシュ（ＭＣ）領域１１２として用いられ、当該記憶領域１１１の他の一部はユーザデータ領域１１３として用いられる。ユーザデータ領域１１３は、例えば、バンドと呼ばれる複数の同心円状の領域に区分される。各バンドは、例えばデータ追記型アクセス領域として用いられる。
【００１４】
ＭＣ領域１１２は、例えば、ユーザによってアクセスできない領域（いわゆるシステム領域）の一部を構成する。ＭＣ領域１１２は、ＤＲＡＭ１４のバッファ領域１４１内のデータバッファ領域１４４（図２）に格納されたデータの一部（例えば、ランダムにアクセスされたライトデータ）をシーケンシャルに格納（退避）するのに用いられる。本実施形態においてデータバッファ領域１４４及びＭＣ領域１１２は、それぞれ、一次キャッシュ及び二次キャッシュとして用いられる。ユーザデータ領域１１３は、例えば、ホストからのライトコマンドで特定されたライトデータを格納するのに用いられる。
【００１５】
ＨＤＡ１１は、ヘッド、スピンドルモータ（ＳＰＭ）及びアクチュエータ等の周知のメカニカルな要素を更に含む。但し、これらの要素は、図１では省略されている。ヘッドはサスペンションに支持されており、リード素子とライト素子とを含む。ライト素子の幅は、リード素子の幅よりも大きいものとする。ライト素子及びリード素子の幅とは、サスペンションの中心線に直交する方向の幅を指す。本実施形態では、ディスク１１０へのデータのライトに、シングルド磁気記録（shingled magnetic recording）が用いられる。シングルド磁気記録では、各バンド内の先頭のトラックから最終のトラックまで順にデータがライトされる。そして、１トラック分のデータがバンドにライトされる毎に、ライト素子は、リード素子がトレースする軌跡（リードトラック）に対応するピッチだけ、ライトトラックの一部が重なるようにディスク１１０の半径方向に移動される。シングルド磁気記録を用いてデータがライトされた各バンドは、第１トラックと、この第１トラックに部分的に重なる第２トラックと、を含む。ＳＰＭは、ディスク１１０を回転させる。
【００１６】
ドライバＩＣ１２は、コントローラ１３（より詳細には、コントローラ１３内のＣＰＵ１３３）の制御に従い、ＳＰＭ及びアクチュエータを駆動する。コントローラ１３は、例えば、複数の素子が単一チップに集積されたsystem-on-a-chip（ＳＯＣ）と呼ばれる大規模集積回路（ＬＳＩ）を用いて実現される。コントローラ１３は、ホストインタフェースコントローラ（以下、ＨＩＦコントローラと称する）１３１、ディスクインタフェースコントローラ（以下、ＤＩＦコントローラと称する）１３２、及びＣＰＵ１３３を含む。
【００１７】
ＨＩＦコントローラ１３１は、ホストインタフェース２０を介してホスト装置（以下、ホストと称する）と接続されている。ＨＩＦコントローラ１３１は、ホストから転送されるコマンド（ライトコマンド、リードコマンド等）を受け取る。ＨＩＦコントローラ１３１は、ホストとＤＲＡＭ１４との間のデータ転送を制御する。
【００１８】
ＤＩＦコントローラ１３２は、ディスク１１０とＤＲＡＭ１４との間のデータ転送を制御する。ＤＩＦコントローラ１３２は、リード／ライトチャネル（図示せず）を含む。リード／ライトチャネルは、ディスク１１０に対するリード／ライトに関連する信号を処理する。リード／ライトチャネルは、ディスク１１０からリードされた信号（リード信号）をアナログ−デジタル変換器によってデジタルデータに変換し、デジタルデータからリードデータを復号する。リード／ライトチャネルはまた、デジタルデータからヘッドの位置決めに必要なサーボデータを抽出する。リード／ライトチャネルはまた、ディスク１１０にライトされるライトデータを符号化する。なお、リード／ライトチャネルが、ＤＩＦコントローラ１３２から独立して設けられても構わない。この場合、ＤＩＦコントローラ１３２は、ＤＲＡＭ１４とリード／ライトチャネルとの間のデータ転送を制御すれば良い。
【００１９】
ＣＰＵ１３３は、図１に示されるＨＤＤの主コントローラとして機能するプロセッサである。ＣＰＵ１３３は、ＨＤＤ内の他の要素の少なくとも一部を、制御プログラムに従って制御する。この少なくとも一部は、ドライバＩＣ１２、ＨＩＦコントローラ１３１及びＤＩＦコントローラ１３２を含む、本実施形態において制御プログラムは、ディスク１１０またはＦＲＯＭ１５の特定の記憶領域に予め格納されている。
【００２０】
ＣＰＵ１３３は、ＳＲＡＭ１３４を含む。ＳＲＡＭ１３４は、一般にＤＲＡＭ１４よりも高速なアクセス速度を有する揮発性メモリである。しかし、ＳＲＡＭ１３４に代えて、ＤＲＡＭ１４が用いられても構わない。制御プログラムの少なくとも一部は、例えば主電源からＨＤＤへの電力の供給が開始された場合に、ＦＲＯＭ１５からＳＲＡＭ１３４（またはＤＲＡＭ１４）の記憶領域の一部にロードされる。また、制御プログラムが、ディスク１１０または読み取り専用の不揮発性メモリ（例えばＲＯＭ）（不図示）に予め格納されていても構わない。制御プログラムの少なくとも一部が、必ずしもＳＲＡＭ１３４（またはＤＲＡＭ１４）にロードされなくても構わない。
【００２１】
ＳＲＡＭ１３４の記憶領域の他の一部は、システムバッファ管理テーブル１３５及びＦＲＯＭ管理テーブル１３６を格納するのに用いられる。テーブル１３５及び１３６は、ディスク１１０の特定の記憶領域に予め格納されており、ＨＤＤの起動時に、この特定の記憶領域からＳＲＡＭ１３４（またはＤＲＡＭ１４）にロードされる。またテーブル１３５及び１３６が、ＦＲＯＭ１５またはＲＯＭ（不図示）に予め格納されていても構わない。テーブル１３５及び１３６は、必ずしもＳＲＡＭ１３４（またはＤＲＡＭ１４）にロードされる必要はない。
【００２２】
ＤＲＡＭ１４の記憶領域の一部は、バッファ領域１４１として用いられる。バッファ領域１４１の一部は、複数のシステム情報（より詳細には、複数種類のシステム情報）を格納するためのシステムバッファ領域１４３（図２）として用いられる。バッファ領域１４１の他の一部は、ディスク１１０にライトされるべきデータ及びディスク１１０からリードされたデータを格納するためのデータバッファ領域１４４（図２）として用いられる。ＤＲＡＭ１４の記憶領域の他の一部は、退避管理テーブル１４２を格納するのに用いられる。退避管理テーブル１４２は、複数のシステム情報の退避に関する管理情報を保持するのに用いられる。なお、退避管理テーブル１４２が、ＳＲＡＭ１３４に格納されても構わない。
【００２３】
ＦＲＯＭ１５は、書き換え可能な不揮発性メモリである。本実施形態において、ＦＲＯＭ１５の記憶領域の一部には、イニシャルプログラムローダ（ＩＰＬ）が予め格納されている。ＣＰＵ１３３は、例えば、主電源からＨＤＤへの電力の供給の開始に応じてＩＰＬを実行することにより、ＦＲＯＭ１５の記憶領域の他の一部またはディスク１１０に格納されている制御プログラムの少なくとも一部をＳＲＡＭ１３４にロードする。ＩＰＬが、例えばＲＯＭに予め格納されていても構わない。
【００２４】
ＦＲＯＭ１５の記憶領域の他の一部は、退避領域１５０として用いられる。退避領域１５０は、主電源からＨＤＤへの電力の供給が遮断された場合に、ＤＲＡＭ１４のバッファ領域１４１に格納されている情報の一部を退避するのに用いられる。なお、ＤＲＡＭ１４及びＦＲＯＭ１５が、コントローラ１３の内部に設けられていても構わない。
【００２５】
バックアップ電源１６は、ＨＤＤへの電力の供給の遮断（電源遮断）に応じて、一時的に電力を生成する。生成された電力は、バッファ領域１４１に格納されている情報の一部をＦＲＯＭ１５内の退避領域１５０に退避するのに利用される。但し本実施形態では、生成された電力は、ヘッドを、ディスク１１０から外れた箇所（いわゆるランプ）にリトラクトするのにも利用されるものとする。
【００２６】
図２は、ＤＲＡＭ１４内のバッファ領域１４１の典型的なメモリマップの例を示す。バッファ領域１４１は、前述のように、システムバッファ領域１４３及びデータバッファ領域１４４を含む。システムバッファ領域１４３は、例えば、テーブルＴＢＬ１乃至ＴＢＬ５を格納するのに用いられる。
【００２７】
テーブルＴＢＬ１乃至ＴＢＬ５は、それぞれ、ＨＤＤの管理のための第１乃至第５の種類のシステム情報（管理情報）を保持するのに用いられる。本実施形態において、各テーブルＴＢＬ１乃至ＴＢＬ５（第１乃至第５の種類のシステム情報）のサイズは予め定められており、図２において括弧内に記載されているように、それぞれ、２００００ｈ，５００００ｈ，４００００ｈ．３００００ｈ及び１００００ｈである。なお、これらのサイズの単位はバイトであり、末尾のｈは１６進表記であることを示す。
【００２８】
システムバッファ領域１４３は、ＣＰＵ１３３によって認識可能なメモリ空間（つまりＣＰＵメモリ空間）の特定のアドレス範囲に割り当てられる。図３は、ＣＰＵメモリ空間におけるシステムバッファ領域１４３のマッピングの例を示す。図３に示されるように、システムバッファ領域１４３は、例えば、ＣＰＵメモリ空間３０におけるアドレス範囲４００００ｈ乃至４Ｆ００００ｈに割り当てられる。
【００２９】
アドレス範囲４００００ｈ乃至４Ｆ００００ｈのサイズは、テーブルＴＢＬ１乃至ＴＢＬ５のサイズの総和（Ｆ００００ｈ）に等しい。したがって、システムバッファ領域１４３に格納されているテーブルＴＢＬ１，ＴＢＬ２，ＴＢＬ３，ＴＢＬ４及びＴＢＬ５は、それぞれ、ＣＰＵメモリ空間３０におけるアドレス範囲４００００ｈ乃至４２０００ｈ，４２０００ｈ乃至４７０００ｈ，４７０００ｈ乃至４Ｂ０００ｈ，４Ｂ０００ｈ乃至４Ｅ０００ｈ，及び４Ｅ０００ｈ乃至４Ｆ０００ｈに割り当てられる。この場合、ＣＰＵ１３３は、例えばＣＰＵアドレス４００００ｈ乃至４２０００ｈのいずれかを用いることにより、システムバッファ領域１４３に格納されているテーブルＴＢＬ１内のエントリにアクセスできる。
【００３０】
図４は、ＦＲＯＭ１５内の退避領域１５０の典型的なメモリマップの例を示す。退避領域１５０は、ＰＬＰ機能を用いて、ＤＲＡＭ１４内のテーブルＴＢＬ１乃至ＴＢＬ５を退避するのに用いられるテーブル退避領域１５１乃至１５５を含む。本実施形態においてテーブル退避領域１５１，１５２，１５３，１５４及び１５５は、ＦＲＯＭ１５におけるアドレス（つまり、ＦＲＯＭアドレス）の範囲が、それぞれ、０ｈ乃至２００００ｈ，２００００ｈ乃至７００００ｈ，７００００ｈ乃至Ｂ００００ｈ，Ｂ００００ｈ乃至Ｅ００００ｈ，及びＥ００００ｈ乃至Ｆ００００ｈの領域に確保される。
【００３１】
図５は、システムバッファ管理テーブル１３５のデータ構造例を示す。システムバッファ管理テーブル１３５は、テーブルＴＢＬ１乃至ＴＢＬ５にそれぞれ対応付けられたエントリを有する。システムバッファ管理テーブル１３５内のｉ番目（ｉ＝１，２，３，４，５）のエントリは、ＣＰＵメモリ空間３０（つまり、システムバッファ領域１４３が割り当てられるＣＰＵメモリ空間３０）におけるテーブルＴＢＬｉ（第ｉの種類のシステム情報）の格納先（マッピング先）を管理するための管理情報（システムバッファ管理情報）を保持するのに用いられる。
【００３２】
システムバッファ管理情報は、テーブルＴＢＬｉの識別子（ＩＤ）と、ＣＰＵアドレスと、サイズ情報とを含む。ＣＰＵアドレスは、テーブルＴＢＬｉ（より詳細には、テーブルＴＢＬｉが格納されるＤＲＡＭ１４内の領域）が割り当てられるＣＰＵメモリ空間３０内のＣＰＵアドレス範囲の先頭位置を示す。サイズ情報は、ＣＰＵアドレス範囲のサイズを示す。このサイズは、テーブルＴＢＬｉのサイズに等しい。
【００３３】
図６は、ＦＲＯＭ管理テーブル１３６のデータ構造例を示す。ＦＲＯＭ管理テーブル１３６は、テーブルＴＢＬ１乃至ＴＢＬ５にそれぞれ対応付けられたエントリを有する。ＦＲＯＭ管理テーブル１３６内のｉ番目のエントリは、ＦＲＯＭ１５におけるテーブルＴＢＬｉの退避先を管理するための管理情報（退避先管理情報）を保持するのに用いられる。但し本実施形態では、ＰＬＰ機能を用いた退避動作において、テーブルＴＢＬ１乃至ＴＢＬ５の全てがＦＲＯＭ管理テーブル１３６によって管理される退避先に退避されるとは限らない。
【００３４】
退避先管理情報は、テーブルＴＢＬｉのＩＤと、ＦＲＯＭアドレスと、サイズ情報とを含む。ＦＲＯＭアドレスは、テーブルＴＢＬｉの退避先として用いられるＦＲＯＭ１５内のＦＲＯＭアドレス範囲の先頭位置を示す。サイズ情報は、ＦＲＯＭアドレス範囲のサイズを示す。このサイズは、テーブルＴＢＬｉのサイズに等しい。
【００３５】
本実施形態において、システムバッファ管理テーブル１３５及びＦＲＯＭ管理テーブル１３６の内容は制御プログラムによって予め定められており、更新されないものとする。また、テーブル１３５及び１３６において、テーブルＴＢＬ１乃至ＴＢＬ５に対応付けられたエントリの順番も、制御プログラムによって予め定められている。このため、ＣＰＵ１３３は、テーブル１３５及び１３６において、テーブルＴＢＬ１乃至ＴＢＬ５に対応付けられたエントリを、制御プログラムに従って特定することができる。したがって、テーブル１３５及び１３６の各エントリは、対応するテーブルのＩＤを必ずしも持つ必要はない。
【００３６】
図７は、退避管理テーブル１４２のデータ構造例を示す。退避管理テーブル１４２は、、テーブルＴＢＬ１乃至ＴＢＬ５にそれぞれ対応付けられたエントリを有する。退避管理テーブル１４２内のｉ番目のエントリは、テーブルＴＢＬｉの退避を管理するための管理情報（退避管理情報）を保持するのに用いられる。
【００３７】
退避管理情報は、テーブルＴＢＬｉのＩＤと、更新フラグと、サイズ情報と、復旧時間情報と、退避フラグとを含む。更新フラグは、テーブルＴＢＬｉが更新されていて且つ当該更新されたテーブルＴＢＬｉがディスク１１０に未保存であるか否かを示す。更新フラグが、テーブルＴＢＬｉの更新及び未保存（つまり、更新されたテーブルＴＢＬｉの未保存）を示す場合、当該更新フラグは、テーブルＴＢＬｉが電源遮断時における退避の候補であることをも示す。サイズ情報は、テーブルＴＢＬｉのサイズを示す。
【００３８】
復旧時間情報は、仮に、更新されたテーブルＴＢＬｉがディスク１１０に未保存である状態で電源遮断が発生したにも拘わらずに当該テーブルＴＢＬｉが退避されなかったならば、ＨＤＤの起動時に実行されるべき当該テーブルＴＢＬｉを復旧するための動作に要する時間（復旧時間）を示す。図７に示される復旧時間の単位は、例えばミリセカンド（ｍｓ）である。テーブルＴＢＬｉの復旧時間は、主として、当該テーブルＴＢＬｉの種類（より詳細には、当該テーブルＴＢＬｉに保持されているシステム情報の種類）に依存しており、例えば、復旧時間決定処理により決定される。退避フラグは、テーブルＴＢＬｉが電源遮断時に退避されるべきであるか否かを示す。
【００３９】
退避フラグ及び上述の更新フラグは、初期状態においてクリアされている。図７において、退避フラグ及び更新フラグの各々がセットされた状態は“１”で示され、退避フラグ及び更新フラグの各々がクリアされた状態は“０”で示される。
【００４０】
次に、上述の復旧時間に関係する復旧動作について、テーブルＴＢＬｉを復旧する場合を例に説明する。本実施形態では、テーブルＴＢＬｉ（より詳細には、更新されたテーブルＴＢＬｉ）は、適宜（例えば、ホストからアクセスが要求されないＨＤＤのアイドル状態において）、ディスク１１０の特定の領域に保存される。ここで、テーブルＴＢＬｉが更新されたにも拘わらずにディスク１１０に保存される前に電源遮断が発生したものとする。この場合、更新されたテーブルＴＢＬｉ（つまり、最新のテーブルＴＢＬｉ）が、例えばＦＲＯＭ１５に退避されないならば、当該最新のテーブルＴＢＬｉは消失する。また、上述の更新は、当該更新以前にディスク１１０の特定の領域に保存されたテーブルＴＢＬｉ（より詳細には、旧テーブルＴＢＬｉ）に反映されていない。
【００４１】
そこでＣＰＵ１３３は、ＨＤＤの起動時に、テーブルＴＢＬｉを、電源遮断が発生する直前の状態に復旧するための復旧動作を実行する。テーブルＴＢＬｉが、例えば、ＭＣ領域１１２に格納されるデータ（つまり、ランダムにアクセスされるライトデータ）を管理するためのテーブル（以下、ＭＣ管理テーブルと称する）であるものとする。この場合、テーブルＴＢＬｉは、ホストからのライトコマンド毎に、ライトデータ（ランダムアクセスライトデータ）を管理するための管理情報を保持する。この管理情報は、論理アドレス（例えば論理ブロックアドレス）、ＭＣアドレス及びサイズ情報を含む。論理ブロックアドレスは、ライトデータの先頭の論理的な位置（つまり、ホストによって認識される位置）を示す。ＭＣアドレスは、ＭＣ領域１１２に格納されているライトデータの先頭の物理的な位置（つまり、ディスク１１０上の位置）を示す。サイズ情報は、ライトデータのサイズを示す。
【００４２】
このライトデータ（ランダムアクセスライトデータ）がＭＣ領域１１２に格納される場合、当該ライトデータにヘッダが付される。このヘッダは、テーブルＴＢＬｉに保持される管理情報と同様に、論理ブロックアドレス、ＭＣアドレス及びサイズ情報を含む。
【００４３】
復旧動作においてＣＰＵ１３３は、テーブルＴＢＬｉが最も最近にディスク１１０の特定領域に退避された時点以降に、ＭＣ領域１１２にライトされたデータをリードする。そしてＣＰＵ１３３は、リードされたデータに付されているヘッダの情報に基づいてテーブルＴＢＬｉを復旧する。
【００４４】
この復旧のためにＣＰＵ１３３は、電源遮断によりデータのライトが未完了となったＭＣ領域１１２上の箇所（ライト未完了ポイント）を、リード動作を用いて検出する必要がある。本実施形態のように、ＭＣ領域１１２にライトされるデータがランダムアクセスライトデータである場合、ライト未完了ポイントの検出に長時間を要する。その主たる要因は、次の通りである。
【００４５】
本実施形態のように、ディスク１１０へのデータのライトにシングルド磁気記録を適用する場合、１トラック分のデータは先にデータがライトされたトラックの一部に重ねてライトされる。つまり、シングルド磁気記録では、重ね書きにより隣接トラックのデータの一部を破壊する。このため、データのライトがバンドの終端まで到達する前に電源遮断が発生した場合、当該バンドの一部に、データの壊れたセクタを含むトラック(ライト中のトラックに隣接した次のトラック)が生じてしまう。そこでＤＩＦコントローラ１３２は、データの壊れた部分に対し、可能な限りデータをリードしようとして、何度もリトライを繰り返す。これが、ライト未完了ポイントの検出に長時間を要する理由である。
【００４６】
リトライに要する最大のまたは平均的な時間（第１の時間）と二分探索に要する最大のまたは平均的な時間（第２の時間）とは、計算により算出可能である。したがって、テーブルＴＢＬｉがＭＣ管理テーブルである場合、ＣＰＵ１３３は復旧時間決定処理を実行することにより、当該テーブルＴＢＬｉの復旧に要する時間を第１の時間及び第２の時間に基づいて決定（予測）することができる。
【００４７】
次に、テーブルＴＢＬｉがデータストリームを管理するための管理テーブル（以下、バイパステーブルと称する）であるものとする。各データストリームは、シーケンシャルデータから構成される。この場合、テーブルＴＢＬｉは、データストリーム毎に、対応するシーケンシャルデータ（シーケンシャルライトデータ）を管理するための管理情報を保持する。
【００４８】
本実施形態では、テーブルＴＢＬ１乃至ＴＢＬ５の１つはＭＣ管理テーブルであり、テーブルＴＢＬ１乃至ＴＢＬ５の別の１つはバイパステーブルである。またテーブルＴＢＬ１乃至ＴＢＬ５は、データの論理アドレス（例えば論理ブロックアドレス）と、当該データが実際に格納されるディスク１１０（不揮発性記憶媒体）上の物理アドレスとの対応を管理するためのアドレス変換テーブルを含まないものとする。その理由は、ＨＤＤにおいて適用されるアドレス変換テーブルの更新頻度は比較的低く、したがって本実施形態においてＣＰＵ１３３は、アドレス変換テーブルが更新される都度、当該更新されたアドレス変換テーブルをディスク１１０の特定領域に保存するためである。しかし、テーブルＴＢＬ１乃至ＴＢＬ５の１つがアドレス変換テーブルであっても構わない。
【００４９】
本実施形態では、複数のデータストリームのライトが完了する前に、電源遮断が発生する可能性がある。例えば、ホストからＨＤＤにライトコマンドＷＣ１乃至ＷＣ８が順に発行されたものとする。ライトコマンドＷＣ１，ＷＣ２，ＷＣ４及びＷＣ７で特定されるライトデータＷＤ１，ＷＤ２，ＷＤ４及びＷＤ７はシーケンシャルであり、ディスク１１０のユーザデータ領域１１３の第１の領域にライトされているものとする。また、ライトコマンドＷＣ３及びＷＣ５で特定されるライトデータＷＤ３及びＷＤ５もシーケンシャルであり、ディスク１１０のユーザデータ領域１１３の第２の領域にライトされているものとする。更にライトコマンドＷＣ６及びＷＣ８で特定されるライトデータＷＤ６及びＷＤ８もシーケンシャルであり、当該ライトデータＷＤ８がディスク１１０のユーザデータ領域１１３の第３の領域にライトされている最中に電源遮断が発生したものとする。
【００５０】
この場合、テーブルＴＢＬｉ（最新のテーブルＴＢＬｉ）が、例えばＦＲＯＭ１５に退避されないならば、当該最新のテーブルＴＢＬｉは消失する。そこでＣＰＵ１３３は、ＨＤＤの起動時に、テーブルＴＢＬｉを電源遮断が発生する直前の状態に復旧するための復旧動作を実行する。
【００５１】
上述の例では、ＣＰＵ１３３は、３つのデータストリームを探索し、探索された３つのデータストリームに付されているヘッダの情報に基づいてテーブルＴＢＬｉを復旧する。この復旧のためにＣＰＵ１３３は、ライト未完了ポイントを検出する。データストリームを探索するのに要する最大のまたは平均的な時間を第３の時間と称する。また、ライト未完了ポイントの検出に要する最大のまたは平均的な時間を第４の時間と称する。この場合、テーブルＴＢＬｉがバイパステーブルであるものとすると、ＣＰＵ１３３は復旧時間決定処理を実行することにより、当該テーブルＴＢＬｉの復旧に要する時間を、第３の時間及び第４の時間に基づいて決定することができる。一般に、バイパステーブルの復旧時間は、ＭＣ管理テーブルのそれよりも長い。バイパステーブルの場合は、用途によって１００以上のデータストリームを用意する必要がある為、復旧に長時間要してしまう。
【００５２】
次に、本実施形態の動作について、システム情報（テーブル）退避動作を含むシステム情報退避処理を例に、図８及び図９を参照して説明する。図８は、システム情報退避処理の典型的な手順を示すフローチャート、図９は、システム情報退避処理に含まれている退避対象決定処理の典型的な手順を示すフローチャートである。
【００５３】
まずＣＰＵ１３３は、退避管理テーブル１４２によって管理されるテーブル（本実施形態では、テーブルＴＢＬ１乃至ＴＢＬ５）の更新を監視して、テーブルＴＢＬ１乃至ＴＢＬ５のいずれかで更新が発生したかを判定する（Ａ１０１）。なお、本実施形態では、ＣＰＵ１３３はテーブル更新も実行する。しかし、ＣＰＵ１３３とは別のＣＰＵ（プロセッサ）が、テーブル更新を実行しても構わない。
【００５４】
もし、テーブル更新が発生していないならば（Ａ１０１のＮｏ）、ＣＰＵ１３３は、主電源からＨＤＤへの電力の供給が遮断されたかを判定する（Ａ１０５）。本実施形態においてＣＰＵ１３３は、主電源からＨＤＤに印加される電源電圧が一定期間を超えて一定レベル（つまり、閾値）未満となる状態を検出した場合に、電力の供給の遮断（つまり、電源遮断）を判定する。もし、電源遮断が発生していないならば（Ａ１０５のＮｏ）、ＣＰＵ１３３はＡ１０１に戻る。
【００５５】
一方、テーブル更新が発生しているならば（Ａ１０１のＹｅｓ）、ＣＰＵ１３３は更新されたテーブルを特定する（Ａ１０２）。ここでは、テーブルＴＢＬｉが、更新されたテーブルとして特定されたものとする。この場合、ＣＰＵ１３３は、特定されたテーブルＴＢＬｉに対応付けられた退避管理テーブル１４２内のエントリに、更新フラグをセットする（Ａ１０３）。このＡ１０３において、ＣＰＵ１３３が、特定（更新）されたテーブルＴＢＬｉの復旧に要する時間（復旧時間）を算出して、当該テーブルＴＢＬｉに対応付けられた退避管理テーブル１４２内の復旧時間情報を、当該計算された時間を示すように更新しても良い。セットされた更新フラグは、テーブルＴＢＬｉが、例えばＨＤＤのアイドル状態においてディスク１１０の特定の領域に保存された場合にクリアされる。
【００５６】
次にＣＰＵ１３３は、退避対象決定処理を実行する（Ａ１０４）。退避対象決定処理は、退避管理テーブル１４２によって管理されるテーブルＴＢＬ１乃至ＴＢＬ５の中から、電源遮断時にＦＲＯＭ１５の退避領域１５０に退避されるべき１つ以上のテーブルを退避対象として決定するための処理手順を含む。
【００５７】
ここで、退避対象決定処理について、図９を参照して説明する。まずＣＰＵ１３３は、退避管理テーブル１４２を参照し、更新フラグがセットされている全てのエントリを、当該退避管理テーブル１４２から選択する（Ａ２０１）。図７に示される退避管理テーブル１４２の例では、テーブルＴＢＬ１乃至ＴＢＬ４のエントリが選択される。図７に示される退避管理テーブル１４２の例では、テーブルＴＢＬ１及びＴＢＬ２に対応付けられたエントリに退避フラグがセットされている。しかし、Ａ２０１が実行される時点では、テーブルＴＢＬ１及びＴＢＬ２に対応付けられたエントリに退避フラグはセットされていない。
【００５８】
次にＣＰＵ１３３は、選択されたエントリに対応付けられたテーブルを特定する（Ａ２０２）。例えば、テーブルＴＢＬ１乃至ＴＢＬ４のエントリが選択された場合、当該テーブルＴＢＬ１乃至ＴＢＬ４が特定される。
【００５９】
次にＣＰＵ１３３は、特定されたテーブルのうちの１つ以上を含む全ての組み合わせを生成する（Ａ２０３）。テーブルＴＢＬ１乃至ＴＢＬ４が特定された場合、生成された組み合わせのうち、単一のテーブルを含む組み合わせは、次のような第１乃至第４の組み合わせである。第１乃至第４の組み合わせは、それぞれ、テーブルＴＢＬ１乃至ＴＢＬ４を含む。そこで第１乃至第４の組み合わせを、それぞれ、組み合わせＣ１［ＴＢＬ１］乃至Ｃ４［ＴＢＬ４］と表記する。
【００６０】
生成された組み合わせのうち、２つのテーブルを含む組み合わせは、次のような第５乃至第１０の組み合わせである。第５、第６、及び第７の組み合わせは、それぞれ、テーブルＴＢＬ１及びＴＢＬ２、テーブルＴＢＬ１及びＴＢＬ３、及びテーブルＴＢＬ１及びＴＢＬ４を含む。第８、第９、及び第１０の組み合わせは、それぞれ、テーブルＴＢＬ２及びＴＢＬ３、テーブルＴＢＬ２及びＴＢＬ４、及びテーブルＴＢＬ３及びＴＢＬ４を含む。そこで、第５、第６、第７、第８、第９、及び第１０の組み合わせを、それぞれ、組み合わせＣ５［ＴＢＬ１，ＴＢＬ２］、Ｃ６［ＴＢＬ１，ＴＢＬ３］、Ｃ７［ＴＢＬ１，ＴＢＬ４］、Ｃ８［ＴＢＬ２，ＴＢＬ３］、Ｃ９［ＴＢＬ２，ＴＢＬ４］、及びＣ１０［ＴＢＬ３，ＴＢＬ４］と表記する。
【００６１】
生成された組み合わせのうち、３つのテーブルを含む組み合わせは、次のような第１１乃至第１４の組み合わせである。第１１、第１２、第１３、及び第１４の組み合わせは、それぞれ、テーブルＴＢＬ１乃至ＴＢＬ３、テーブルＴＢＬ１，ＴＢＬ２及びＴＢＬ４、ＴＢＬ１，ＴＢＬ３及びＴＢＬ４、及びテーブルＴＢＬ２乃至ＴＢＬ４を含む。そこで、第１１、第１２、第１３、及び第１４の組み合わせを、それぞれ、組み合わせＣ１１［ＴＢＬ１，ＴＢＬ２，ＴＢＬ３］、Ｃ１２［ＴＢＬ１，ＴＢＬ２，ＴＢＬ４］、Ｃ１３［ＴＢＬ１，ＴＢＬ３，ＴＢＬ４］、及びＣ１４［ＴＢＬ２，ＴＢＬ３，ＴＢＬ４］と表記する。
【００６２】
生成された組み合わせのうち、４つのテーブルを含む組み合わせは、次のような第１５の組み合わせのみである。第１５の組み合わせは、テーブルＴＢＬ１乃至ＴＢＬ４を含む。そこで、第１５の組み合わせを、組み合わせＣ１５［ＴＢＬ１，ＴＢＬ２，ＴＢＬ３，ＴＢＬ４］と表記する。なお、簡略化のために、第１乃至第１５の組み合わせが、それぞれ、組み合わせＣ１乃至Ｃ１５と表記されることもある。
【００６３】
ＣＰＵ１３３は、Ａ２０３を実行すると、生成された組み合わせ毎に、対応する組み合わせに含まれている１つ以上のテーブルのサイズの総和を、退避管理テーブル１４２に基づいて算出する（Ａ２０４）。組み合わせＣ１乃至Ｃ１５に対応する総サイズを、それぞれＴＳ１＿Ｃ１乃至ＴＳ１５＿Ｃ１５と表記する。
【００６４】
図７に示される退避管理テーブル１４２の例では、テーブルＴＢＬ１，ＴＢＬ２，ＴＢＬ３，及びＴＢＬ４のサイズは、それぞれ２００００ｈ，５００００ｈ，４００００ｈ，及び３００００ｈ（バイト）である。この場合、ＴＳ１＿Ｃ１（＝ＴＳ１＿Ｃ１［ＴＢＬ１］），ＴＳ２＿Ｃ２（＝ＴＳ２＿Ｃ２［ＴＢＬ２］），ＴＳ３＿Ｃ３（＝ＴＳ３＿Ｃ３［ＴＢＬ３］），及びＴＳ４＿Ｃ４（＝ＴＳ４＿Ｃ４［ＴＢＬ４］）も、それぞれ、２００００ｈ，５００００ｈ，４００００ｈ，及び３００００ｈである。
【００６５】
次に、ＴＳ５＿Ｃ５（＝ＴＳ５＿Ｃ５［ＴＢＬ１，ＴＢＬ２］），ＴＳ６＿Ｃ６（＝ＴＳ６＿Ｃ６［ＴＢＬ１，ＴＢＬ３］），及びＴＳ７＿Ｃ７（＝ＴＳ７＿Ｃ７［ＴＢＬ１，ＴＢＬ４］）は、それぞれ、２００００ｈ＋５００００ｈ＝７００００ｈ，２００００ｈ＋４００００ｈ＝６００００ｈ，及び２００００ｈ＋３００００ｈ＝５００００ｈである。ＴＳ８＿Ｃ８（＝ＴＳ８＿Ｃ８［ＴＢＬ２，ＴＢＬ３］），ＴＳ９＿Ｃ９（＝ＴＳ９＿Ｃ９［ＴＢＬ２，ＴＢＬ４］），及びＴＳ１０＿Ｃ１０（＝ＴＳ１０＿Ｃ１０［ＴＢＬ３，ＴＢＬ４］）は、それぞれ、５００００ｈ＋４００００ｈ＝９００００ｈ，５００００ｈ＋３００００ｈ＝８００００ｈ，及び４００００ｈ＋３００００ｈ＝７００００ｈである。
【００６６】
次に、ＴＳ１１＿Ｃ１１（＝ＴＳ１１＿Ｃ１１［ＴＢＬ１，ＴＢＬ２，ＴＢＬ３］），ＴＳ１２＿Ｃ１２（＝ＴＳ１２＿Ｃ１２［ＴＢＬ１，ＴＢＬ２，ＴＢＬ４］），ＴＳ１３＿Ｃ１３（＝ＴＳ１３＿Ｃ１３［ＴＢＬ１，ＴＢＬ３，ＴＢＬ４］），及びＴＳ１４＿Ｃ１４（＝ＴＳ１４＿Ｃ１４［ＴＢＬ２，ＴＢＬ３，ＴＢＬ４］）は、それぞれ、２００００ｈ＋５００００ｈ＋４００００ｈ＝Ｂ００００ｈ，２００００ｈ＋５００００ｈ＋３００００ｈ＝Ａ００００ｈ，２００００ｈ＋４００００ｈ＋３００００ｈ＝９００００ｈ，及び５００００ｈ＋４００００ｈ＋３００００ｈ＝Ｃ００００ｈである。ＴＳ１５＿Ｃ１５（＝ＴＳ１５＿Ｃ１５［ＴＢＬ１，ＴＢＬ２，ＴＢＬ３，ＴＢＬ４］は、２００００ｈ＋５００００ｈ＋４００００ｈ＋３００００ｈ＝Ｅ００００ｈである。
【００６７】
次にＣＰＵ１３３は、総サイズＴＳ１乃至ＴＳ１５の中からサイズ閾値以下の総サイズを検出し、検出された総サイズに対応する全ての組み合わせを選択する（Ａ２０５）。サイズ閾値は、バックアップ電源１６からの電力の供給が可能な時間（バックアップ可能時間）に、ＤＲＡＭ１４のシステムバッファ領域１４３からＦＲＯＭ１５の退避領域１５０に退避可能な情報のサイズを示す。本実施形態において、サイズ閾値は８００００ｈである。この場合、サイズ閾値以下の総サイズは、ＴＳ１＿Ｃ１乃至ＴＳ７＿Ｃ７，ＴＳ９＿Ｃ９，及びＴＳ１０＿Ｃ１０であることから、ＣＰＵ１３３は、組み合わせＣ１乃至Ｃ７，Ｃ９，及びＣ１０を選択する。
【００６８】
次にＣＰＵ１３３は、選択された組み合わせ毎に、対応する組み合わせに含まれている１つ以上のテーブルの復旧時間の総和を、退避管理テーブル１４２に基づいて算出する（Ａ２０６）。組み合わせＣ１乃至Ｃ７，Ｃ９，及びＣ１０に対応する総復旧時間を、それぞれＴＲＰ１＿Ｃ１乃至ＴＲＰ７＿Ｃ７，ＴＲＰ９＿Ｃ９，及びＴＲＰ１０＿Ｃ１０と表記する。
【００６９】
図７に示される退避管理テーブル１４２の例では、テーブルＴＢＬ１，ＴＢＬ２，ＴＢＬ３，及びＴＢＬ４の復旧時間は、それぞれ３０００，３０００，１０００，及び２０００（ｍｓ）である。この場合、ＴＲＰ１＿Ｃ１（＝ＴＲＰ１＿Ｃ１［ＴＢＬ１］），ＴＲＰ２＿Ｃ２（＝ＴＲＰ２＿Ｃ２［ＴＢＬ２］），ＴＲＰ３＿Ｃ３（＝ＴＲＰ３＿Ｃ３［ＴＢＬ３］），及びＴＲＰ４＿Ｃ４（＝ＴＲＰ４＿Ｃ４［ＴＢＬ４］）も、それぞれ、それぞれ３０００，３０００，１０００，及び２０００である。
【００７０】
次に、ＴＲＰ５＿Ｃ５（＝ＴＲＰ５＿Ｃ５［ＴＢＬ１，ＴＢＬ２］），ＴＲＰ６＿Ｃ６（＝ＴＲＰ６＿Ｃ６［ＴＢＬ１，ＴＢＬ３］），及びＴＲＰ７＿Ｃ７（＝ＴＲＰ７＿Ｃ７［ＴＢＬ１，ＴＢＬ４］）は、それぞれ、３０００＋３０００＝６０００，３０００＋１０００＝４０００，及び３０００＋２０００＝５０００である。ＴＲＰ９＿Ｃ９（＝ＴＲＰ９＿Ｃ９［ＴＢＬ２，ＴＢＬ４］），及びＴＲＰ１０＿Ｃ１０（＝ＴＲＰ１０＿Ｃ１０［ＴＢＬ３，ＴＢＬ４］）は、それぞれ、３０００＋２０００＝５０００，及び１０００＋２０００＝３０００である。
【００７１】
次にＣＰＵ１３３は、総復旧時間ＴＲＰ１＿Ｃ１乃至ＴＲＰ７＿Ｃ７，ＴＲＰ９＿Ｃ９，及びＴＲＰ１０＿Ｃ１０の中から最大の総復旧時間を検出する（Ａ２０７）。Ａ２０７においてＣＰＵ１３３は、検出された総復旧時間に対応する組み合わせを、電源遮断時にＦＲＯＭ１５の退避領域１５０に退避されるべき退避対象として決定する。上述の例では、ＴＲＰ５＿Ｃ５が最大であることから、ＣＰＵ１３３は、組み合わせＣ５［ＴＢＬ１，ＴＢＬ２］）を退避対象として決定する。即ちＣＰＵ１３３は、組み合わせＣ５［ＴＢＬ１，ＴＢＬ２］）を構成するテーブルＴＢＬ１及びＴＢＬ２を退避対象として決定する。
【００７２】
次にＣＰＵ１３３は、決定された組み合わせを構成する１つ以上のテーブルに対応付けられた退避管理テーブル１４２内の１つ以上のエントリ（第１のエントリ）に、退避フラグをセットする（Ａ２０８）。上述の例では、ＣＰＵ１３３は、テーブルＴＢＬ１及びＴＢＬ２に対応付けられた退避管理テーブル１４２内のエントリに、退避フラグをセットする（Ａ２０８）。図７は、このＡ２０８が実行された後の退避管理テーブル１４２の内容を示している。
【００７３】
ここで、退避対象決定処理（図８のＡ１０４）が開始される前に、退避管理テーブル１４２内の１つ以上のエントリに既に退避フラグがセットされているものとする。また、既に退避フラグがセットされている１つ以上のエントリが、第１のエントリ以外の第２のエントリを含むものとする。このような状態は、前回のテーブル更新（図８のＡ１０１のＹｅｓ）に伴う退避対象決定処理によって発生する可能性がある。第２のエントリに既に退避フラグがセットされている場合、Ａ２０８においてＣＰＵ１３３は、当該第２のエントリに既にセットされている退避フラグをクリアする。なお、退避対象決定処理の例えば先頭で、ＣＰＵ１３３が退避管理テーブル１４２内のすべの退避フラグをクリアしても構わない。
【００７４】
ＣＰＵ１３３は、Ａ２０８を実行すると、図９のフローチャートに従う退避対象決定処理（図８のＡ１０４）を終了して、Ａ１０５（図８）に進む。前述のように、Ａ１０５においてＣＰＵ１３３は、電源遮断が発生しているかを判定する。もし、電源遮断が発生していないならば（Ａ１０５のＮｏ）、ＣＰＵ１３３はＡ１０１に戻る。
【００７５】
これに対して電源遮断が発生しているならば（Ａ１０５のＹｅｓ）、ＣＰＵ１３３は、ＰＬＰ機能を起動する（Ａ１０６）。するとバックアップ電源１６は、電力を生成する。本実施形態において、バックアップ電源１６は、電力の生成に、ＳＰＭの逆起電力を用いる。この場合、バックアップ電源１６の少なくとも一部が、ドライバＩＣ１２に実装されていても構わない。しかし、バックアップ電源１６が、ＨＤＤに印加される電源電圧によって充電されるキャパシタを用いて電力を生成しても良い。
【００７６】
バックアップ電源１６によって生成された電力は、ＨＤＤ内の少なくともドライバＩＣ１２、コントローラ１３、ＤＲＡＭ１４、及びＦＲＯＭ１５に供給される。但し、図１では、バックアップ電源１６からドライバＩＣ１２、ＤＲＡＭ１４及びＦＲＯＭ１５に電力を供給するための経路は省略されている。
【００７７】
ＣＰＵ１３３は、バックアップ電源１６よって生成された電力を受けてシステム情報退避処理を継続する。まずＣＰＵ１３３は、退避フラグがセットされたエントリが退避管理テーブル１４２に含まれているかに基づいて、退避されるべきテーブルが残っているかを判定する（Ａ１０７）。もし、退避されるべきテーブルが残っているならば（Ａ１０７のＹｅｓ）、ＣＰＵ１３３は、退避されるべき１つのテーブルを選択して、当該選択されたテーブルをＦＲＯＭ１５の退避領域１５０に退避する（Ａ１０８）。このＡ１０８の詳細を以下に説明する。
【００７８】
まずＣＰＵ１３３は、退避管理テーブル１４２に含まれている、退避フラグがセットされている１つのエントリを特定することにより、当該特定されたエントリに対応付けられたテーブルを選択する。次にＣＰＵ１３３は、選択されたテーブルに対応付けられたシステムバッファ管理テーブル１３５内のエントリに基づいて、当該選択されたテーブルが格納されているシステムバッファ領域１４３内の第１のアドレス範囲（より詳細には、ＣＰＵメモリ空間３０におけるアドレス範囲）を特定する。またＣＰＵ１３３は、選択されたテーブルに対応付けられたＦＲＯＭ管理テーブル１３６内のエントリに基づいて、当該選択されたテーブルが退避されるべき退避領域１５０内の第２のアドレス範囲を特定する。
【００７９】
次にＣＰＵ１３３は、ＤＲＡＭ１４内のシステムバッファ領域１４３に含まれていて、且つ第１のアドレス範囲にマッピングされた領域から、選択されたテーブル（に保持されているシステム情報）をリードする。ＣＰＵ１３３は、リードされたテーブルを、ＦＲＯＭ１５の退避領域１５０における第２のアドレス範囲に退避する。これにより、ＣＰＵ１３３はＡ１０８の実行を終了する。
【００８０】
するとＣＰＵ１３３は、退避されたテーブルに対応付けられた、退避管理テーブル１４２内のエントリ中の退避フラグをクリアする（Ａ１０９）。そしてＣＰＵ１３３は、Ａ１０７に戻る。もし、退避されるべきテーブルが未だ残っているならば（Ａ１０７のＹｅｓ）、ＣＰＵ１３３は、Ａ１０８及びＡ１０９を再び実行して、Ａ１０７に戻る。これに対して退避されるべきテーブルが残っていないならば（Ａ１０７のＮｏ）、ＣＰＵ１３３は、システム情報退避処理を終了する。
【００８１】
図７に示される退避管理テーブル１４２の例では、退避されるべきテーブルとして、テーブルＴＢＬ１及びＴＢＬ２が選択される（Ａ１０８）。この場合、テーブルＴＢＬ１及びＴＢＬ２は、それぞれ、ＦＲＯＭ１５内のテーブル退避領域１５１及び１５２に退避される。ＣＰＵ１３３は、ＨＤＤへの電力の供給の再開に応じて当該ＨＤＤが起動される際に、テーブル退避領域１５１及び１５２に退避されたテーブルＴＢＬ１及びＴＢＬ２を、システムバッファ管理テーブル１３５及びＦＲＯＭ管理テーブル１３６に応じて、当該テーブル退避領域１５１及び１５２からＤＲＡＭ１４のシステムバッファ領域１４３にロードする。
【００８２】
図７の例では、テーブルＴＢＬ３乃至ＴＢＬ５は、ＦＲＯＭ１５に退避されない。しかも、テーブルＴＢＬ３及びＴＢＬ４は更新されている。この場合、ＨＤＤの起動時に、ＣＰＵ１３３はテーブルＴＢＬ３及びＴＢＬ４を、電源遮断が発生する直前の状態に復旧するための復旧処理を実行する。このテーブルＴＢＬ３及びＴＢＬ４の復旧に要する時間は、図７から明らかなように、ほぼ、１０００＋２０００＝３０００（ｍｓ）である。
【００８３】
これに対し、本実施形態と異なって、テーブルＴＢＬ３及びＴＢＬ４が電源遮断に応じてＦＲＯＭ１５内のテーブル退避領域１５３及び１５４に退避され、テーブルＴＢＬ１及びＴＢＬ２がＨＤＤの起動時に復旧されるものとする。この場合、テーブルＴＢＬ１及びＴＢＬ２の復旧に要する時間は、ほぼ、３０００＋３０００＝６０００（ｍｓ）であり、本実施形態よりも長時間となる。
【００８４】
このように本実施形態によれば、ＣＰＵ１３３は、復旧に長時間を要する１つ以上のテーブルを、電源遮断に応じてＦＲＯＭ１５に退避する。これにより、更新されたにも拘わらずに退避されなかったテーブル（システム情報）をＨＤＤの起動時に復旧するのに要する時間（つまり、ＨＤＤの起動に要する時間）を短縮することができる。
【００８５】
本実施形態では、ＦＲＯＭ管理テーブル１３６は予め定められている。即ち、テーブルＴＢＬ１乃至ＴＢＬ５の退避に用いられるＦＲＯＭ１５内のテーブル退避領域は予め定められている。しかし、ＦＲＯＭ１５に実際に退避されるテーブルは、テーブルＴＢＬ１乃至ＴＢＬ５の一部である。
【００８６】
そこで、ＣＰＵ１３３が、退避されるべきテーブルを、退避領域１５０にシーケンシャルに退避しても構わない。但し、退避されるべきテーブルと当該テーブルの退避先との関係は予め定まらない。このため、ＣＰＵ１３３が、例えば、図９におけるＡ２０７の後またはＡ２０８の後において、退避されるべきテーブルに関してＦＲＯＭ管理テーブル１３６を生成すると良い。
【００８７】
生成されるＦＲＯＭ管理テーブル１３６の内容は固定ではないことから、当該テーブル１３６も退避される必要がある。そこでＣＰＵ１３３は、ＦＲＯＭ管理テーブル１３６を、例えば図８におけるＡ１０６の直後またはＡ１０７の直後に、退避領域１５０の先頭位置から退避すると良い。なお、生成されるＦＲＯＭ管理テーブル１３６が、退避されるべきテーブルに対応付けられたエントリのみを有する場合、当該テーブル１３６のサイズは退避されるべきテーブルの数に応じて変化する。この場合、ＣＰＵ１３３は、ＦＲＯＭ管理テーブル１３６のサイズを示すヘッダを当該テーブル１３６に付加すると良い。
【００８８】
本実施形態において、システム情報退避処理におけるＡ１０１乃至Ａ１０５（図８）は、当該システム情報退避処理の前処理を構成している。したがって、この前処理（Ａ１０１乃至Ａ１０５）を、システム情報退避処理から独立させても構わない。この場合、システム情報退避処理は、Ａ１０６乃至Ａ１０９から構成されることになる。
【００８９】
また本実施形態は、ディスク１１０へのデータのライトに、シングルド磁気記録が用いられる場合を前提としている。しかし、必ずしもシングルド磁気記録が用いられる必要はない。また本実施形態は、ストレージ装置がＨＤＤである場合を前提としている。しかし、ストレージ装置が、不揮発性メモリ（例えばＮＡＮＤメモリ）の群を含む不揮発性記憶媒体を有する、ＳＳＤのような半導体ドライブユニットであっても構わない。
【００９０】
ストレージ装置が、例えばＳＳＤである場合、テーブルＴＢＬ１乃至ＴＢＬ５は、アドレス変換テーブル、リードカウントテーブル、及びリード閾値テーブルを含む。リードカウントテーブルは、ブロック（またはページ）毎のリード回数を保持するのに用いられる。リード回数は、リードディスターブ（ＲＤ）の対策のために用いられるカウント値である。ＲＤとは、データ読み出しによって近傍のメモリセルの値（または閾値電圧）を変化させる現象を指す。リード閾値テーブルは、ブロック（またはページ）毎のリード閾値（閾値電圧の値）を保持するのに用いられる。アドレス変換テーブル、リードカウントテーブル、及びリード閾値テーブルの復旧時間を、それぞれ、ＲＴａ，ＲＴｂ及びＲＴｃと表記するならば、一般にＲＴａ＞ＲＴｂ＞ＲＴｃである。
【００９１】
以上説明した少なくとも１つの実施形態によれば、未退避のシステム情報を復旧するのに要する時間を短縮できる。
【００９２】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００９３】
１３…コントローラ、１４…ＤＲＡＭ（揮発性メモリ）、１５…ＦＲＯＭ（不揮発性メモリ）、１６…バックアップ電源、１１０…ディスク（不揮発性記憶媒体）、１３３…ＣＰＵ、１３５…システムバッファ管理テーブル、１３６…ＦＲＯＭ管理テーブル、１４２…退避管理テーブル、１４３…システムバッファ領域、１５０…退避領域、ＴＢＬ１乃至ＴＢＬ５…テーブル。
【図１】
2017156803.tif 000003
【図２】
2017156803.tif 000004
【図３】
2017156803.tif 000005
【図４】
2017156803.tif 000006
【図５】
2017156803.tif 000007
【図６】
2017156803.tif 000008
【図７】
2017156803.tif 000009
【図８】
2017156803.tif 000010
【図９】
2017156803.tif 000011