(57)【要約】【課題】記憶装置全体のデータにアクセスできなくなることを防止し、かつデータのデータ化けも防止する。【解決手段】実施形態の記憶装置は、揮発性メモリと、補助電源と、不揮発性メモリと、書込手段と、禁止手段と、を備える。書込手段は、揮発性メモリに対する主電源からの電源が遮断された場合に、前記補助電源からの電源の投入を受けて、揮発性メモリに保持されるユーザデータを表す書込未完了情報を不揮発性メモリに書き込み、書込未完了情報の書込後、揮発性メモリに保持されるユーザデータを不揮発性メモリに書き込み、ユーザデータの書込後、主電源からの電源の遮断を表す電源遮断情報を不揮発性メモリに書き込む。禁止手段は、主電源から揮発性メモリに電源が投入された際に不揮発性メモリに電源遮断情報が書き込まれていなかった場合、書込未完了情報が表すユーザデータの不揮発性メモリからの読み出しを禁止する。【選択図】図１
2012063884.tif 000002
【特許請求の範囲】
【請求項１】
ユーザデータを保持する揮発性メモリと、
前記揮発性メモリに対する主電源からの電源が遮断された場合に前記揮発性メモリに電源を投入する補助電源と、
前記揮発性メモリに保持されるユーザデータ、前記揮発性メモリに保持されるユーザデータを表す書込未完了情報、および前記主電源からの電源の遮断を表す電源遮断情報が書き込まれる不揮発性メモリと、
前記揮発性メモリに対する前記主電源からの電源が遮断された場合に、前記補助電源からの電源の投入を受けて、前記書込未完了情報を前記不揮発性メモリに書き込み、前記書込未完了情報の書込後、前記揮発性メモリに保持されるユーザデータを前記不揮発性メモリに書き込み、前記ユーザデータの書込後、前記電源遮断情報を前記不揮発性メモリに書き込む書込手段と、
前記主電源から前記揮発性メモリに電源が投入された際に前記不揮発性メモリに前記電源遮断情報が書き込まれていなかった場合、前記書込未完了情報が表す前記ユーザデータの前記不揮発性メモリからの読み出しを禁止する禁止手段と、
を備えたことを特徴とする記憶装置。
【請求項２】
前記書込手段は、前記書込未完了情報の有効または無効を表す有効情報を前記不揮発性メモリに書き込み、
前記禁止手段は、前記有効情報が無効を表している場合、前記不揮発性メモリに書き込まれた全てのユーザデータの読み出しを禁止することを特徴とする請求項１に記載の記憶装置。
【請求項３】
前記揮発性メモリに保持されたユーザデータが前記不揮発性メモリに書き込まれるまで、少なくとも前記書込未完了情報を保持可能なメモリをさらに備え、
前記書込手段は、前記揮発性メモリに対する前記主電源からの電源が遮断された場合、前記メモリに保持される前記書込未完了情報を前記不揮発性メモリに書き込むことを特徴とする請求項１または２に記載の記憶装置。
【請求項４】
前記補助電源は、充放電が可能な電源であることを特徴とする請求項１から３のいずれか一に記載の記憶装置。
【請求項５】
ユーザデータを送信するホスト装置と、
前記ホスト装置から送信されたユーザデータを保持する揮発性メモリと、
前記揮発性メモリに対する主電源からの電源が遮断された場合に前記揮発性メモリに電源を投入する補助電源と、
前記揮発性メモリに保持されるユーザデータ、前記揮発性メモリに保持されるユーザデータを表す書込未完了情報、および前記主電源からの電源の遮断を表す電源遮断情報が書き込まれる不揮発性メモリと、
前記揮発性メモリに対する前記主電源からの電源が遮断された場合に、前記補助電源からの電源の投入を受けて、前記書込未完了情報を前記不揮発性メモリに書き込み、前記書込未完了情報の書込後、前記揮発性メモリに保持されるユーザデータを前記不揮発性メモリに書き込み、前記ユーザデータの書込後、前記電源遮断情報を前記不揮発性メモリに書き込む書込手段と、
前記主電源から前記揮発性メモリに電源が投入された際に前記不揮発性メモリに前記電源遮断情報が書き込まれていなかった場合、前記書込未完了情報が表す前記ユーザデータの前記不揮発性メモリからの読み出しを禁止する禁止手段と、
を備えたことを特徴とする電子機器。
【請求項６】
前記書込手段は、前記書込未完了情報の有効または無効を表す有効情報を前記不揮発性メモリに書き込み、
前記禁止手段は、前記有効情報が無効を表している場合、前記不揮発性メモリに書き込まれた全てのユーザデータの読み出しを禁止することを特徴とする請求項５に記載の電子機器。
【請求項７】
前記揮発性メモリに保持されたユーザデータが前記不揮発性メモリに書き込まれるまで、少なくとも前記書込未完了情報を保持可能なメモリをさらに備え、
前記書込手段は、前記揮発性メモリに対する前記主電源からの電源が遮断された場合、前記メモリに保持される前記書込未完了情報を前記不揮発性メモリに書き込むことを特徴とする請求項５または６に記載の電子機器。
【請求項８】
前記補助電源は、充放電が可能な電源であることを特徴とする請求項５から７のいずれか一に記載の電子機器。
【請求項９】
記憶装置で実行される記憶装置の制御方法であって、
前記記憶装置は、ユーザデータを保持する揮発性メモリと、前記揮発性メモリに対する主電源からの電源が遮断された場合に前記揮発性メモリに電源を投入する補助電源と、前記揮発性メモリに保持されるユーザデータ、前記揮発性メモリに保持されるユーザデータを表す書込未完了情報、および前記主電源からの電源の遮断を表す電源遮断情報が書き込まれる不揮発性メモリと、制御部と、を備え、
前記制御部は、
前記揮発性メモリに対する前記主電源からの電源が遮断された場合に、前記補助電源からの電源の投入を受けて、前記書込未完了情報を前記不揮発性メモリに書き込み、前記書込未完了情報の書込後、前記揮発性メモリに保持されるユーザデータを前記不揮発性メモリに書き込み、前記ユーザデータの書込後、前記電源遮断情報を前記不揮発性メモリに書き込む工程と、
前記主電源から前記揮発性メモリに電源が投入された際に前記不揮発性メモリに前記電源遮断情報が書き込まれていなかった場合、前記書込未完了情報が表す前記ユーザデータの前記不揮発性メモリからの読み出しを禁止する工程と、
を含むことを特徴とする記憶装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、記憶装置、電子機器、および記憶装置の制御方法に関する。
【背景技術】
【０００２】
ＳＳＤ（Solid  State  Drive）などの不揮発性メモリに対するライト性能を上げることを目的としてデータバッファを搭載した記憶装置では、データバッファに対するデータの書き込みが完了した時点でホストに対してデータの書込完了を報告する。ところで、記憶装置に搭載されたデータバッファには、主電源からの電源の投入によりデータを保持する揮発性メモリが用いられるが、揮発性メモリは、主電源からの電源が遮断されると、データを保持することができなくなる。そのため、データバッファを搭載した記憶装置には、主電源からの電源の遮断時にデータバッファに電源を投入するバックアップ電源を搭載する必要がある。バックアップ電源は、データバッファに対する電源遮断時に当該データバッファ上の未書込データを不揮発性メモリにライトバックするのに十分な電源容量を有している。
【０００３】
ここで、バックアップ電源には、一般的に、リチウムイオン電池や大容量のキャパシタが用いられるが、いずれも充放電が繰り返されることにより、劣化して電源容量が減少するという特性を有している。そのため、従来の記憶装置においては、バックアップ電源が劣化すると、電源遮断時にデータバッファ上のデータを不揮発性メモリにライトバックしきれないことがある。また、従来の記憶装置においては、データバッファ上のデータを不揮発性メモリにライトバックしきれずに、記憶装置に対する電源が再投入された場合、従来の記憶装置においては、不揮発性メモリにライトバックできなかったデータを読み出した際に、古いデータが読み出されてしまい記憶装置として致命的なデータ化けを生じさせるという問題があった。
【０００４】
そこで、従来の記憶装置においては、以下の２つの対策を組み合わせてこの問題を解決していた。１つの対策としては、定期的にバックアップ電源の電源容量を監視し、バックアップ電源の電源容量がある閾値を下回った場合に警告を発するものである。もう一つの対策としては、データバッファ上のデータを不揮発性メモリにライトバックした後、記憶装置の電源の遮断が正しく実行されたことを表すマーク（情報）を不揮発性メモリに書き込み、記憶装置の電源が投入された際に、遮断を表すマーク（情報）が不揮発性メモリに書き込まれていなかった場合に、記憶装置を再フォーマット要求状態や故障状態などとしてデータの読み出しを禁止することによりデータ化けを避けるものである。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００５−２２２２０２号公報
【特許文献２】特開平０６−３３２８０９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ところで、バックアップ電源の電源容量を監視する方法としては、バックアップ電源の自然放電時間の測定結果や完全放電時間の測定結果を利用する方法が一般的である。しかしながら、バックアップ電源の自然放電時間の測定には、時間がかかるため、バックアップ電源の電源容量の監視にも１００秒オーダーで時間がかかる。また、バックアップ電源の完全放電時間の測定中は、バックアップ電源が使用できなくなり、その間、記憶装置に大幅な性能劣化をもたらすため、頻繁に行うことができない。つまり、バックアップ電源の電源容量を監視する方法は、自然放電時間や完全放電時間を測定可能なインターバル期間が限られており、かつインターバル期間はバックアップ電源からの電源をデータバッファに投入できない。
【０００７】
そのため、バックアップ電源からの電源の急激な低下によるデータロスを避けるためには、記憶装置の電源の遮断を表すマーク（情報）を不揮発性メモリに書き込む方法を用いることとなる。しかしながら、記憶装置の電源の遮断を表すマークを不揮発性メモリに書き込む方法は、記憶装置の電源が投入された際に不揮発性メモリに遮断を表すマークが書き込まれていなかった場合、数百ＧＢの容量のうち数ＫＢのデータをライトバックしきれなかっただけで記憶装置全体のデータにアクセスできなくなり、かつ記憶装置に全くデータをライトバックしなかった場合でも同様に記憶装置全体のデータにアクセスできなくなる、という課題がある。
【０００８】
本発明は、上記に鑑みてなされたものであって、バックアップ電源の劣化等により当該バックアップ電源からデータバッファに投入可能な電源が低下した状態において主電源からの電源が遮断された場合に、記憶装置全体のデータにアクセスできなくなることを防止でき、かつデータのデータ化けも防止できる記憶装置、電子機器、および記憶装置の制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
実施形態の記憶装置は、揮発性メモリと、補助電源と、不揮発性メモリと、書込手段と、禁止手段と、を備える。前記揮発性メモリは、ユーザデータを保持する。前記補助電源は、前記揮発性メモリに対する主電源からの電源が遮断された場合に前記揮発性メモリに電源を投入する。前記不揮発性メモリは、前記揮発性メモリに保持されるユーザデータ、前記揮発性メモリに保持されるユーザデータを表す書込未完了情報、および前記主電源からの電源の遮断を表す電源遮断情報が書き込まれる。前記書込手段は、前記揮発性メモリに対する前記主電源からの電源が遮断された場合に、前記補助電源からの電源の投入を受けて、前記書込未完了情報を前記不揮発性メモリに書き込み、前記書込未完了情報の書込後、前記揮発性メモリに保持されるユーザデータを前記不揮発性メモリに書き込み、前記ユーザデータの書込後、前記電源遮断情報を前記不揮発性メモリに書き込む。前記禁止手段は、前記主電源から前記揮発性メモリに電源が投入された際に前記不揮発性メモリに前記電源遮断情報が書き込まれていなかった場合、前記書込未完了情報が表す前記ユーザデータの前記不揮発性メモリからの読み出しを禁止する。
【図面の簡単な説明】
【００１０】
【図１】図１は、本実施形態にかかる電子機器の構成を示すブロック図である。
【図２】図２は、メモリに保持される書込未完了テーブルの一例を示す図である。
【図３】図３は、メモリに保持される書込未完了テーブルの更新タイミングを説明するための図である。
【図４】図４は、データバッファへの電源が遮断された際の記憶媒体へのユーザデータの書き込み動作の流れを説明するための図である。
【図５】図５は、データバッファ上に生成される書込未完了テーブルおよび書込未完了テーブルの有効または無効を表す有効情報を含む書込未完了ログを示す図である。
【図６】図６は、記憶媒体のシステム領域に書き込まれた情報を示す図である。
【図７】図７は、主電源から記憶装置への電源が再投入された際の処理の流れを示すフローチャートである。
【発明を実施するための形態】
【００１１】
図１は、本実施形態にかかる電子機器の構成を示すブロック図である。本実施形態にかかる電子機器１は、記憶装置１００およびホスト装置２００を備えている。記憶装置１００は、例えば、ＳＳＤ（Solid  State  Device）等の半導体メモリを用いて情報を不揮発に記憶するための装置である。記憶装置１００は、通信媒体（ホストＩ／Ｆ）を介してホスト装置２００の外部に接続され、ホスト装置２００に対する外部記憶媒体として機能する。ホスト装置２００は、例えば、パーソナルコンピュータまたはＣＰＵ（Central  Processing  Unit）コア等があげられる。
【００１２】
記憶装置１００は、ＮＡＮＤ型フラッシュメモリ等の不揮発性のメモリである記憶媒体１０４、および記憶媒体１０４へのユーザデータの書き込みおよび読み出しを制御するコントローラ１１０を備えている。なお、本実施形態では、不揮発性のメモリである記憶媒体１０４として、ＮＡＮＤ型フラッシュメモリを適用した例について説明するが、これに限定するものではなく、ＮＡＮＤ型フラッシュメモリ以外の不揮発性のメモリを用いても良い。
【００１３】
コントローラ１１０は、ホストＩ／Ｆ制御部１０１、データバッファ制御部１０２、ＤＲＡＭ（Dynamic  Random  Access  Memory）等の揮発性のメモリであるデータバッファ１０３、制御部としてのＭＰＵ（Micro  Processing  Unit）１０５、記憶媒体１０４よりも高速動作が可能なＳＲＡＭ（Static  Random  Access  Memory）等のメモリ１０６、電源制御部１０７、およびバックアップ電源１０８を備える。
【００１４】
ホストＩ／Ｆ制御部１０１は、ＡＴＡ（Advanced  Technology  Attachment）インタフェースなどのメモリ接続インタフェースであり、ホスト装置２００から受信した命令、ユーザデータなどをＭＰＵ１０５またはデータバッファ制御部１０２に出力する。また、ホストＩ／Ｆ制御部１０１は、データバッファ制御部１０２から入力されたユーザデータや、ＭＰＵ１０５からの応答通知（命令の実行完了を示す通知など）をホスト装置２００に送信する。
【００１５】
ＭＰＵ１０５は、記憶装置１００の各構成要素を統括的に制御し、ホストＩ／Ｆ制御部１０１がホスト装置２００から命令を受けた場合に、その命令に従った制御を行うものである。例えば、ＭＰＵ１０５は、ホスト装置２００からの命令に従って、記憶媒体１０４へのユーザデータの書き込みや記憶媒体１０４からのユーザデータの読み出しなどをデータバッファ制御部１０２へ指示する。
【００１６】
データバッファ制御部１０２は、ホストＩ／Ｆ制御部１０１により制御されて、ホスト装置２００と記憶媒体１０４との間でやりとりするユーザデータのデータバッファ１０３への書き込みおよび読み出しを行うものである。また、データバッファ制御部１０２は、ＭＰＵ１０５により制御されて、記憶媒体１０４からデータバッファ１０３へのユーザデータの読み出しおよびデータバッファ１０３から記憶媒体１０４へのユーザデータの書き込みを行う。
【００１７】
データバッファ１０３は、電源が投入されている間、ホスト装置２００と記憶媒体１０４との間でやりとりするユーザデータを一時的に保持するユーザ領域１０３ａおよびＭＰＵ１０５が使用するシステム領域１０３ｂを備える。
【００１８】
電源制御部１０７は、主電源（図示しない）からデータバッファ１０３を含む記憶装置１００の各構成要素への電源の投入を制御するものである。また、電源制御部１０７は、主電源からデータバッファ１０３への電源が遮断された場合に、バックアップ電源１０８からデータバッファ１０３を含む記憶装置１００の各構成要素への電源の投入を制御するものである。さらに、電源制御部１０７は、記憶装置１００の各構成要素への電源の投入をバックアップ電源１０８に切り替えた場合に、バックアップ電源１０８への切り替え通知をＭＰＵ１０５に出力する。
【００１９】
バックアップ電源１０８は、データバッファ１０３に対する主電源からの電源が遮断された場合に、データバッファ１０３を含む記憶装置１００の各構成要素に電源を投入する充放電が可能な補助電源である。バックアップ電源１０８は、電気二重層コンデンサや電界コンデンサなどが適用される。
【００２０】
記憶媒体１０４は、データバッファ１０３のユーザ領域１０３ａに保持されるユーザデータが書き込まれるユーザ領域１０４ａ、およびＭＰＵ１０５が使用するシステム領域１０４ｂを備える。
【００２１】
次に、図２および図３を用いて、記憶媒体１０４へのユーザデータの書き込み動作について説明する。図２は、メモリに保持される書込未完了テーブルの一例を示す図である。図３は、メモリに保持される書込未完了テーブルの更新タイミングを説明するための図である。
【００２２】
図２および図３に示すように、ＭＰＵ１０５は、ホストＩ／Ｆ制御部１０１を制御して、ホスト装置２００から記憶媒体１０４へのユーザデータの書き込み命令（コマンド：Ｗ）またはホスト装置２００から記憶媒体１０４からのユーザデータの読み出し命令（コマンド：Ｒ）を受信した場合に、ホスト装置２００からのコマンドの内容を表すコマンド情報をメモリ１０６上に生成する。なお、本実施形態では、コマンド情報は、ホスト装置２００から受信したコマンドをリンクリスト形式で表すものとする。そのため、コマンド情報が表すコマンドの配置は、ホスト装置２００からのコマンドの受信順に並んでいない。
【００２３】
また、ＭＰＵ１０５は、ホスト装置２００から受信したコマンドがユーザデータの書き込み命令であった場合、ホストＩ／Ｆ制御部１０１を制御して、記憶媒体１０４からホスト装置２００へユーザデータの受け取り準備ＯＫを示すコマンド（ＸＦＥＲ＿ＲＤＹ）を送信する。その際に、ＭＰＵ１０５は、図２に示すように、データバッファ１０３のユーザ領域１０３ａに保持されるユーザデータを表す書込未完了テーブル（書込未完了情報）をメモリ１０６上に生成する。本実施形態では、書込未完了テーブルは、図２に示すように、データバッファ１０３に保持されるユーザデータを書き込む記憶媒体１０４のセクタを指定するＬＢＡ（Logical  Block  Addressing）および当該データバッファ１０３に保持されるユーザデータが書き込まれるセクタの長さ（転送長）を指定するＢＬＫ（ブロック数）を、コマンド情報のアドレスオフセットに対応付けて記録する。これにより、ＭＰＵ１０５による書込未完了テーブルへのＬＢＡおよびＢＬＫのアロケーションやリリース等の手間を軽減し、ＭＰＵ１０５による記憶媒体１０４へのユーザデータの書き込み性能への影響を最低限に抑えることができる。
【００２４】
図３に示すように、書込未完了テーブルを生成した後、ホストＩ／Ｆ制御部１０１は、ホスト装置２００からユーザデータを受信する。次いで、ホストＩ／Ｆ制御部１０１は、データバッファ制御部１０２を制御して、ホストＩ／Ｆ制御部１０１が受信したユーザデータをデータバッファ１０３のユーザ領域１０３ａに保持させる。その後、ＭＰＵ１０５は、ホストＩ／Ｆ制御部１０１を制御して、ホスト装置２００へユーザデータの書き込み命令（コマンド：Ｗ）の完了を通知するコマンド（ＲＳＰ）を送信する。また、ホストＩ／Ｆ制御部１０１は、ユーザデータをデータバッファ１０３に保持することが完了したことをＭＰＵ１０５へ通知する。その後、ＭＰＵ１０５は、データバッファ制御部１０２を制御して、当該ユーザ領域１０３ａに保持されるユーザデータを記憶媒体１０４のユーザ領域１０４ａに書き込む。
【００２５】
記憶媒体１０４へのユーザデータの書き込みが完了すると、ＭＰＵ１０５は、図３に示すように、書込未完了テーブルに記録されたＬＢＡおよびＢＬＫを無効化する。これにより、ＭＰＵ１０５は、メモリ１０６上の書込未完了テーブルを参照すれば、その時点で書き込まれていないユーザデータを確認することができる。ここで、記憶媒体１０４へのユーザデータの書き込み命令を受信した際に、書込未完了テーブルを生成しているのは、ホスト装置２００へユーザデータの書き込み命令（コマンド：Ｗ）の完了を通知するコマンド（ＲＳＰ）を送信しているにも関わらず、書込未完了テーブルに反映されていない状態をなくすためである。
【００２６】
次に、図４〜６を用いて、データバッファ１０３への電源が遮断された際の記憶媒体１０４へのユーザデータの書き込み動作について説明する。図４は、データバッファへの電源が遮断された際の記憶媒体へのユーザデータの書き込み動作の流れを説明するための図である。図５は、データバッファ上に生成される書込未完了テーブルおよび書込未完了テーブルの有効または無効を表す有効情報を含む書込未完了ログを示す図である。図６は、記憶媒体のシステム領域に書き込まれた情報を示す図である。
【００２７】
電源制御部１０７からバックアップ電源１０８への切り替え通知が出力されると（ステップＳ４０１）、ＭＰＵ１０５は、バックアップ電源１０８からの電源の投入を受けて、メモリ１０６上に生成された書込未完了テーブルのコピーを含む書込未完了ログをデータバッファ１０３のシステム領域１０３ｂに生成する（ステップＳ４０２）。書込未完了ログは、図５に示すように、当該書込未完了ログ自体に関する情報を記録したヘッダ部、書込未完了テーブルのコピー、書込未完了テーブルが有効か無効かを示す有効情報、当該書込未完了ログの誤りを検出するための誤り検出符号等を記録したフッタ部等を、１バイト単位で記録したものである。本実施形態では、ＭＰＵ１０５は、バックアップ電源１０８への切り替え通知が出力されると、まず、書込未完了テーブルの有効：「１」または無効：「０」を１ビットで示すValid  Bitを有する有効情報を書込未完了ログに記録する。次いで、ＭＰＵ１０５は、メモリ１０６上に生成された書込未完了テーブルを書込未完了ログにコピーすることにより、書込未完了ログを生成する。
【００２８】
書込未完了ログを生成すると、ＭＰＵ１０５（書込部）は、図６に示すように、生成した書込未完了ログを、記憶媒体１０４のシステム領域１０４ｂに書き込み（ステップＳ４０３）、書込未完了ログの書込後、データバッファ１０３のユーザ領域１０３ａに保持される未書き込みのユーザデータを記憶媒体１０４のユーザ領域１０４ａに書き込む（ステップＳ４０４）。ここで、ユーザデータの書き込み前に書込未完了ログを書き込んでいるのは、バックアップ電源１０８の劣化等により当該バックアップ電源１０８からの電源がユーザデータの書き込みの途中で遮断されたとしても、少なくとも書込未完了ログが記憶媒体１０４のシステム領域１０４ｂに書き込まれていれば、記憶装置１００に電源が再投入された際に、書込未完了ログを参照して、どのユーザデータを読み出すとデータ化けが生じるかを特定することができるからである。
【００２９】
その後、データバッファ１０３のユーザ領域１０３ａに保持されるユーザデータを記憶媒体１０４のユーザ領域１０４ａに全て書き込むと、ＭＰＵ１０５（書込部）は、主電源からの電源が遮断されたことを表す電源遮断マーク（電源遮断情報）を記憶媒体１０４のシステム領域１０４ｂに書き込む（ステップＳ４０５）。本実施形態では、ＭＰＵ１０５は、主電源からの電源が投入されたことを表す電源投入マークと電源遮断マークとを時系列に並べて記録した電源関連ログを記憶媒体１０４のシステム領域１０４ｂに書き込むものとする。したがって、バックアップ電源１０８の劣化によりデータバッファ１０３のユーザ領域１０３ａに保持されるユーザデータが記憶媒体１０４のユーザ領域１０４ａに書き込まれる前に、バックアップ電源１０８からデータバッファ１０３への電源が遮断された場合、ＭＰＵ１０５は、電源遮断マークを電源関連ログに記録しない。
【００３０】
次に、図７を用いて、主電源から記憶装置１００への電源が再投入された際の処理について説明する。図７は、主電源から記憶装置への電源が再投入された際の処理の流れを示すフローチャートである。
【００３１】
主電源から記憶装置１００への電源が投入されると、ＭＰＵ１０５は、まず、システム領域１０４ｂに記録された電源関連ログを読み出し、読み出した電源関連ログの最後に電源遮断マークが記録されているか否かを判断する（ステップＳ７０１）。電源関連ログの最後に電源遮断マークが記録されていた場合（ステップＳ７０１：Ｙｅｓ）、ＭＰＵ１０５は、主電源からデータバッファ１０３への電源が遮断された際にユーザ領域１０３ａに保持されるユーザデータがユーザ領域１０４ａに書き込まれたと判断して、ユーザ領域１０４ａに書き込まれた全てのユーザデータの読み出しを許可する正常起動を行う（ステップＳ７０２）。
【００３２】
一方、電源関連ログの最後に電源遮断マークが記録されていなかった場合（ステップＳ７０１：Ｎｏ）、ＭＰＵ１０５は、システム領域１０４ｂの書込未完了ログを読み出し、読み出した書込未完了ログに含まれる有効情報が有効を示しているか（つまり、Valid  Bitが「１」であるか）否かを判断する（ステップＳ７０３）。有効情報が有効を示している場合（ステップＳ７０３：Ｙｅｓ）、ＭＰＵ１０５は、読み出した書込未完了ログの書込未完了テーブルに記録されたＬＢＡおよびＢＬＫが示すユーザ領域１０４ａへのユーザデータの書き込みが完了しなかった可能性があると判断する。そして、ＭＰＵ１０５（禁止部）は、書込未完了テーブルに記録されたＬＢＡおよびＢＬＫが示すユーザ領域１０４ａ（対象部）に書き込まれたユーザデータのＣＲＣ（Cyclic  Redundancy  Check）部を書き換えるなどして当該ユーザデータを正常に読み出せなくすることで当該ユーザデータの読み出しを禁止する（ステップＳ７０４）。なお、ホスト装置２００がＲＡＩＤ（Redundant  Arrays  of  Inexpensive  Disks）機構を備える場合には、ＭＰＵ１０５は、ホスト装置２００からのユーザデータの読み出し命令に対して、ホストＩ／Ｆ制御部１０１を介してエラーを返すことにより、ホスト装置２００から正しいユーザデータの書き込み命令を受信するのを待っても良い。これにより、バックアップ電源１０８の劣化など不慮の故障によるユーザデータのデータ化けなどの影響を最小限に抑えることができる。
【００３３】
一方、読み出した書込未完了ログに含まれる有効情報が無効を示している場合（ステップＳ７０３：Ｎｏ）、ＭＰＵ１０５（禁止部）は、主電源からの電源が遮断された際に、有効情報すら書込未完了ログに記録できなかったと判断して、ユーザ領域１０４ａに書き込まれたユーザデータのデータ化けを防止するために、記憶媒体１０４を再フォーマット要求状態または故障状態として、ユーザ領域１０４ａに書き込まれた全てのユーザデータの読み出しを禁止する（ステップＳ７０５）。
【００３４】
最後に、ＭＰＵ１０５は、全てのケース（ステップＳ７０２、ステップＳ７０４、およびステップＳ７０５で示すケース）の共通処理として、システム領域１０４ｂに書き込まれた書込未完了ログに含まれる有効情報を無効（つまり、Valid  Bitを「０」）にするとともに（ステップＳ７０６）、電源関連ログに電源投入マークを記録する（ステップＳ７０７）。
【００３５】
ここで、従来の記憶装置におけるユーザデータの書き込み処理と本実施形態にかかる記憶装置１００におけるユーザデータの書き込み処理とを比較する。なお、ここでは、バックアップ電源を搭載したＳＳＤなどの記憶装置において、データバッファに保持するユーザデータの容量を４ＭＢ、チャンネル並列アクセスによってＮＡＮＤメモリに一度に書き込めるユーザデータの容量を２５６ｋＢ、ＮＡＮＤメモリへの書き込みに要する時間を７５０μｓとする。
【００３６】
従来の記憶装置においては、１２，０００μｓ（４ＭＢ／２５６ｋＢ×７５０μｓ）以上、データバッファに電源を投入可能なバックアップ電源を有していない場合、主電源からの電源が遮断された際にデータバッファに保持されるユーザデータをＮＡＮＤメモリに書き込むことができない。そのため、従来の記憶装置においては、バックアップ電源が劣化すると、主電源からの電源が投入された際に、ＮＡＮＤメモリに書き込まれた全てのユーザデータにアクセスすることができない。
【００３７】
一方、本実施形態にかかる記憶装置１００においては、少なくとも、主電源からの電源が遮断された際に行われる追加処理（システム領域１０３ｂへの書込未完了ログの生成およびシステム領域１０４ｂへの書込未完了ログの書き込み）に要する時間、バックアップ電源１０８がデータバッファ１０３に対して電源を投入できれば良い。したがって、本実施形態にかかる記憶装置１００においては、データバッファ１０３へのデータの書き込み時間が４バイト／２μｓとし、書込未完了テーブルに記録されたＬＢＡおよびＢＬＫの数（エントリ数）を１６０とした場合、書込未完了ログの生成に要する時間が６４０μｓ程度となる。また、本実施形態にかかる記憶装置１００においては、ユーザデータの書き込みに先立って行われる書込未完了ログのシステム領域１０４ｂへの書き込みに要する時間が７５０μｓである。そのため、本実施形態にかかる記憶装置１００においては、主電源からの電源が遮断された際に、バックアップ電源１０８がデータバッファ１０３に対して１３９０μｓ（６４０μｓ＋７５０μｓ）だけ電源を投入できれば、記憶媒体１０４に記憶された全てのユーザデータを失わずに済む。
【００３８】
つまり、本実施形態にかかる記憶装置１００によれば、データバッファ１０３に書込未完了ログを生成するための時間によって追加処理に要する時間が変動するものの、データバッファ１０３に保持される全てのユーザデータを記憶媒体１０４に書き込むための時間（１２，０００μｓ以上）、データバッファ１０３にバックアップ電源１０８から電源を投入する必要がないので、基本的には、ユーザ領域１０４ａに書き込むユーザデータが多くなればなるほど、従来の記憶装置に対して優位な効果が得られる。また、データバッファ１０３から記憶媒体１０４へのユーザデータの書き込みは、従来の記憶装置と同様に行われるため、記憶媒体１０４へのユーザデータの書き込み性能に影響を及ぼすことなく、システム領域１０３ｂへの書込未完了ログの生成およびシステム領域１０４ｂへの書込未完了ログの書き込みを実行することができる。
【００３９】
このように本実施形態にかかる記憶装置１００は、電源が投入されてユーザデータを保持するデータバッファ１０３と、データバッファ１０３に対する主電源からの電源が遮断された場合にデータバッファ１０３に電源を投入する充放電が可能なバックアップ電源１０８と、データバッファ１０３に保持されるユーザデータと、データバッファ１０３に保持されるユーザデータを表す書込未完了テーブルと主電源からの電源が遮断されたことを表す電源遮断マークが書き込まれる不揮発性の記憶媒体１０４と、を備える。
【００４０】
そして、ＭＰＵ１０５は、データバッファ１０３に対する主電源からの電源が遮断された場合、バックアップ電源１０８からの電源の投入を受けて、書込未完了テーブルを含む書込未完了ログを記憶媒体１０４に書き込み、書込未完了ログの書込後、データバッファ１０３に保持されるユーザデータを記憶媒体１０４に書き込み、ユーザデータの書込後、電源遮断マークを記憶媒体１０４に書き込む。その後、ＭＰＵ１０５は、主電源からデーバッファ１０３に電源が投入された際に記憶媒体１０４に電源遮断マークが書き込まれていなかった場合、書込未完了ログに含まれる書込未完了テーブルが表すユーザデータの記憶媒体１０４からの読み出しを禁止する。
【００４１】
これにより、バックアップ電源１０８の劣化等により当該バックアップ電源１０８からデータバッファ１０３への電源が遮断されて当該データバッファ１０３に保持されるユーザデータを記憶媒体１０４に書き込むことができなかった場合に、記憶媒体１０４に書き込まれたユーザデータのうち、書込未完了テーブルが表すユーザデータのみアクセスできなくするので、ユーザデータのデータ化けを起こすことなく、かつ記憶媒体１０４に記憶されたユーザデータの殆どの領域をアクセス可能な状態にすることができる。
【００４２】
また、本実施形態にかかる記憶装置１００によれば、記憶媒体１０４から読み出したユーザデータのデータ化けを防止するための追加の回路などによるコスト増も発生せず、データバッファ１０３や記憶媒体１０４に追加で記憶させる情報（書込未完了テーブルなど）の容量（例えば、書込未完了テーブルに記録されたエントリを１６０とすると、８バイト×１６０＝１．３ｋＢ程度の容量）も少ない。
【００４３】
なお、本実施形態では、データバッファ１０３のユーザ領域１０３ａに保持されるユーザデータが記憶媒体１０４のユーザ領域１０４ａに書き込まれるまで、書込未完了テーブルを保持するメモリ１０６としてＳＲＡＭを用いているが、少なくとも書込未完了テーブルを保持可能な小容量のメモリであれば、これに限定するものではない。例えば、ＳＲＡＭよりも小容量かつ高速なＭＲＡＭ（Magnetic  Random  Access  Memory）等を、書込未完了テーブルを保持する小容量メモリとして用いても良い。これにより、ＳＲＡＭよりも小容量のメモリで書込未完了テーブルを保持することができるので、より低コストで、バックアップ電源１０８の完全故障（バックアップ電源１０８の劣化でなく突然死のケース）においてユーザデータが全て失われることを防止できる。なお、ＭＰＵ１０５は、メモリ１０６にＳＲＡＭを用いた場合と同様に、書込未完了テーブルをＭＲＡＭ上に生成する。そして、ＭＰＵ１０５は、電源制御部１０７からバックアップ電源１０８への切り替え通知が出力されると、ＭＲＡＭに保持される書込未完了テーブルのコピーを含む書込未完了ログをデータバッファ１０３のシステム領域１０３ｂに生成し、生成した書込未完了ログを記憶媒体１０４のシステム領域１０４ｂに書き込むものとする。
【００４４】
以上説明したとおり、本実施形態によれば、バックアップ電源１０８の劣化等により当該バックアップ電源１０８からデータバッファ１０３に投入可能な電源が低下した状態においてバックアップ電源１０８からデータバッファ１０３への電源が遮断されて当該データバッファ１０３に保持されるユーザデータを記憶媒体１０４に書き込むことができなかった場合に、ユーザデータのデータ化けを起こすことなく、かつ記憶媒体１０４に記憶されたユーザデータの殆どの領域をアクセス可能な状態にすることができる。
【００４５】
なお、本実施形態の記憶装置１００で実行されるプログラムは、ＲＯＭ等に予め組み込まれて提供される。また、本実施形態の記憶装置１００で実行されるプログラムは、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ、フレキシブルディスク（ＦＤ）、ＣＤ−Ｒ、ＤＶＤ（Digital  Versatile  Disk）等のコンピュータで読み取り可能な記録媒体に記録して提供するように構成してもよい。
【００４６】
さらに、本実施形態の記憶装置１００で実行されるプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成しても良い。また、本実施形態の記憶装置１００で実行されるプログラムをインターネット等のネットワーク経由で提供または配布するように構成しても良い。
【００４７】
本実施形態では、上述した各部（書込部、禁止部など）をハードウェアにより実現しているが、ＭＰＵ１０５がプログラムを実行することにより上述した各部を実現することも可能である。具体的には、本実施形態の記憶装置１００で実行されるプログラムは、上述した各部（書込部、禁止部など）を含むモジュール構成となっており、実際のハードウェアとしてはＭＰＵ１０５（プロセッサ）が上記ＲＯＭからプログラムを読み出して実行することにより上記各部が主記憶装置上にロードされ、書込部、禁止部などが主記憶装置上に生成される。
【００４８】
なお、本発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化することができる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成することができる。例えば、実施形態に示される全構成要素からいくつかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせても良い。
【符号の説明】
【００４９】
１  電子機器
１００  記憶装置
１０３  データバッファ
１０３ａ，１０４ａ  ユーザ領域
１０３ｂ，１０４ｂ  システム領域
１０４  記憶媒体
１０５  ＭＰＵ
１０６  メモリ
１０８  バックアップ電源
【図１】
2012063884.tif 000003
【図２】
2012063884.tif 000004
【図３】
2012063884.tif 000005
【図４】
2012063884.tif 000006
【図５】
2012063884.tif 000007
【図６】
2012063884.tif 000008
【図７】
2012063884.tif 000009