(57)【要約】【課題】本発明の実施形態は、記憶装置の信頼性を向上させる。【解決手段】実施形態の記憶装置は、第一の不揮発性記憶媒体と、複数のブロックを有し、前記第一の不揮発性記憶媒体よりも高速にデータ処理可能な第二の不揮発性記憶媒体と、前記第一の不揮発性記憶媒体を制御する第一のコントローラと、前記第二の不揮発性記憶媒体を制御する第二のコントローラを含む制御部と、を備え、前記制御部は、前記第二の不揮発性記憶媒体から読み出された第一データのエラー量を取得し、該エラー量に応じて前記第一の不揮発性記憶媒体及び前記第二の不揮発性記憶媒体のいずれかに前記読み出された第一データを書き込む。【選択図】図１
2017068634.tif 000002
【特許請求の範囲】
【請求項１】
第一の不揮発性記憶媒体と、
複数のブロックを有し、前記第一の不揮発性記憶媒体よりも高速にデータ処理可能な第二の不揮発性記憶媒体と、
前記第一の不揮発性記憶媒体を制御する第一のコントローラと、前記第二の不揮発性記憶媒体を制御する第二のコントローラを含む制御部と、
を備え、
前記制御部は、
前記第二の不揮発性記憶媒体から読み出された第一データのエラー量を取得し、該エラー量に応じて前記第一の不揮発性記憶媒体及び前記第二の不揮発性記憶媒体のいずれかに前記読み出された第一データを書き込む記憶装置。
【請求項２】
前記制御部は、
前記エラー量が第一値より大きく、且つ前記第一値より大きい第二値以下の場合は前記第一の不揮発性記憶媒体に前記読み出された第一データを書き込み、前記エラー量が前記第二値よりも大きい場合は前記第二の不揮発性記憶媒体に前記読み出された第一データを書き込む請求項１に記載の記憶装置。
【請求項３】
前記制御部は、
前記エラー量が前記第二値よりも大きい場合は前記第二の不揮発性記憶媒体の第一ブロックから読み出された第一データを第二ブロックに書き込む請求項２に記載の記憶装置。
【請求項４】
前記第二ブロックは空きブロックである請求項３に記載の記憶装置。
【請求項５】
前記制御部は、
前記第二の不揮発性記憶媒体の前記複数のブロックの各々に対して第一の処理を行い、
前記第一の処理は、
前記複数のブロックの各々に保存されたデータを読み出し、当該データのエラー量を取得することを含む請求項１乃至請求項４のいずれか一項に記載の記憶装置。
【請求項６】
前記第一の処理は、所定の周期で定期的に行われる請求項５に記載の記憶装置。
【請求項７】
前記第一の処理は、外部からの指示に応じて行われることを特徴とする請求項５に記載の記憶装置。
【請求項８】
前記第一の処理は、前記第二の不揮発性記憶媒体への電源供給が開始された場合に、ホストからのコマンドに応じた他の処理よりも先に行われる請求項５に記載の記憶装置。
【請求項９】
前記第一の処理は、第二の記憶媒体への電源供給が絶たれることを示すホストからの入力を前記制御部が受信した場合に行われる請求項５に記載の記憶装置。
【請求項１０】
第一の不揮発性記憶媒体と、前記第一の不揮発性記憶媒体よりも高速にデータ処理可能な第二の不揮発性記憶媒体と、を備えた記憶装置の方法であって、
前記第二の不揮発性記憶媒体から読み出された第一データのエラー量を取得し、
該エラー量に応じて前記第一の不揮発性記憶媒体及び前記第二の不揮発性記憶媒体のいずれかに前記読み出された第一データを書き込む
ことを含んだ方法。
【請求項１１】
前記エラー量が第一値より大きく、且つ前記第一値より大きい第二値以下の場合は、前記第一の不揮発性記憶媒体に前記読み出された第一データを書き込み、
前記エラー量が前記第二値よりも大きい場合は前記第二の不揮発性記憶媒体に前記読み出された第一データを書き込む
ことをさらに含んだ請求項１０に記載の方法。 
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、記憶装置及び方法に関する。
【背景技術】
【０００２】
近年、アクセス速度及び記憶容量が異なる複数種類（例えば２種類）の不揮発性記憶媒体を備えたストレージ装置が開発されている。このようなストレージ装置の代表として、ハイブリッドドライブが知られている。ハイブリッドドライブは一般に、第一の不揮発性記憶媒体と、当該第一の不揮発性記憶媒体と比較してアクセス速度が低く、且つ記憶容量の大きい第二の不揮発性記憶媒体とを備えている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００９−１２９０２６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明の実施形態は、記憶装置の信頼性を向上させる。
【課題を解決するための手段】
【０００５】
実施形態の記憶装置は、第一の不揮発性記憶媒体と、複数のブロックを有し、前記第一の不揮発性記憶媒体よりも高速にデータ処理可能な第二の不揮発性記憶媒体と、前記第一の不揮発性記憶媒体を制御する第一のコントローラと、前記第二の不揮発性記憶媒体を制御する第二のコントローラを含む制御部と、を備え、前記制御部は、前記第二の不揮発性記憶媒体から読み出された第一データのエラー量を取得し、該エラー量に応じて前記第一の不揮発性記憶媒体及び前記第二の不揮発性記憶媒体のいずれかに前記読み出された第一データを書き込む。
【図面の簡単な説明】
【０００６】
【図１】実施形態に係る記憶装置の構成を示すブロック図。
【図２】実施形態ＮＡＮＤメモリの記憶領域のフォーマットの一例を示す概念図。
【図３】実施形態に係るＮＡＮＤメモリに対するリードパトロールの動作を示したフローチャート。
【発明を実施するための形態】
【０００７】
以下、実施の形態について、図面を参照して説明する。
【０００８】
本明細書では、いくつかの要素に複数の表現の例を付している。なおこれら表現の例はあくまで例示であり、上記要素が他の表現で表現されることを否定するものではない。また、複数の表現が付されていない要素についても、別の表現で表現されてもよい。
【０００９】
また、図面は模式的なものであり、厚みと平面寸法との関係や各層の厚みの比率などは現実のものと異なることがある。また、図面相互間において互いの寸法の関係や比率が異なる部分が含まれることもある。
【００１０】
図１は、本実施形態に係る記憶装置１の構成を示すブロック図である。本実施形態に係る記憶装置１は、例えばハイブリッドドライブである。ハイブリッドドライブは、アクセス速度及び記憶容量が異なる複数種類、例えば２種類の不揮発性記憶媒体（つまり、第一の不揮発性記憶媒体及び第二の不揮発性記憶媒体）を備えている。本実施形態では、記憶装置１をハイブリッドドライブ１として説明する。
【００１１】
本実施形態では、第一の不揮発性記憶媒体として、磁気ディスク媒体（以下、ディスクと称する）２１が用いられ、第二の不揮発性記憶媒体としてＮＡＮＤフラッシュメモリ（以下、ＮＡＮＤメモリと称する）１１が用いられる。ディスク２１は、後述するように、管理情報を記録するためのシステム領域（ＳＡ）１０１を有する。ディスク２１のアクセス速度及び記憶容量は、ＮＡＮＤメモリ１１のそれらと比較して低速で且つ大容量である。
【００１２】
図１に示されるハイブリッドドライブ１は、ソリッドステートドライブのような半導体ドライブユニット１０と、ハードディスクドライブユニット（以下、ＨＤＤと称する）２０とから構成される。半導体ドライブユニット１０は、ＮＡＮＤメモリ１１と、メインコントローラ（制御部）２７とを含む。
【００１３】
ハイブリッドドライブ１では、ＮＡＮＤメモリ１１は種々の目的に使用される。ＮＡＮＤメモリ１１は、例えば、ハイブリッドドライブ１のパフォーマンス向上、ハイブリッドドライブ１が振動している時のライト動作の安定化、ハイブリッドドライブ１の起動高速化、などのために使用される。後述するように、ＮＡＮＤメモリ１１は、管理情報を記録するためのシステム領域（ＳＡ）１１１を有する。
【００１４】
メインコントローラ２７は、ホスト装置（以下、ホストと称する）からのアクセス要求（例えば、ライト要求またはリード要求）に応じて、ＮＡＮＤメモリ１１へのアクセスを制御する。本実施形態において、ＮＡＮＤメモリ１１は、ホストからハイブリッドドライブ１へのアクセスの高速化のために、当該ホストによって最近アクセスされたデータを格納するためのキャッシュ（キャッシュメモリ）として用いられる。ホストは、図１に示されるハイブリッドドライブ１を、自身のストレージ装置として利用する。
【００１５】
メインコントローラ２７は、例えば、複数の要素が単一チップに集積された大規模集積回路（ＬＳＩ）によって実現される。メインコントローラ２７は、メモリインタフェースコントローラ（以下、メモリＩＦと称する）１２２と、マイクロプロセッサユニット（ＭＰＵ）１２３と、読み出し専用メモリ（ＲＯＭ）１２４と、ランダムアクセスメモリ（ＲＡＭ）１２５と、リード／ライト（Ｒ／Ｗ）チャネル２７１と、ハードディスクコントローラ（ＨＤＣ）２７２とを含む。
【００１６】
メモリＩＦ（第一のインタフェースコントローラ）１２２はＮＡＮＤメモリ１１と接続されており、ＭＰＵ１２３の制御の下でＮＡＮＤメモリ１１にアクセスする。
【００１７】
ＭＰＵ１２３は、メインコントローラ２７から転送されたコマンドに基づいてＮＡＮＤメモリ１１にアクセスするための処理（例えば、ライト処理またはリード処理）を、第１の制御プログラムに従って実行する。本実施形態において第一の制御プログラムは、例えばＲＯＭ１２４に予め格納されている。
【００１８】
なお、ＲＯＭ１２４に代えて、書き換え可能な不揮発性ＲＯＭ、例えばフラッシュＲＯＭを用いても良い。ＲＡＭ１２５の記憶領域の一部は、例えばＭＰＵ１２３のワーク領域として用いられる。
【００１９】
ＨＤＤ２０は、ディスク２１と、ヘッド２２と、スピンドルモータ（ＳＰＭ）２３と、アクチュエータ２４と、ドライバ集積回路（ＩＣ）２５と、ヘッドＩＣ２６と、メインコントローラ２７とを含む。
【００２０】
ディスク２１は、例えばその一方の面に、データが磁気記録される記録面を備えている。ディスク２１はＳＰＭ２３によって高速に回転させられる。ＳＰＭ２３は、ドライバＩＣ２５から供給される駆動電流（または駆動電圧）により駆動される。
【００２１】
図１の構成は、単一枚のディスク２１を備えたＨＤＤ２０を示している。しかし、ディスク２１が複数枚積層配置されたＨＤＤであっても構わない。また、図１の構成では、ディスク２１は、その一方の面に記録面を備えている。しかし、ディスク２１がその両面に記録面を備え、当該両記録面にそれぞれ対応してヘッドが配置されても構わない。
【００２２】
ディスク２１（より詳細には、ディスク２１の記録面）は、例えば同心円状の複数のトラックを備えている。なお、ディスク２１が、スパイラル状に配置される複数のトラックを備えていても構わない。ディスク２１は、記録面の一部に予めシステム領域（ＳＡ）１０１を備えている。
【００２３】
システム領域１０１は、ＨＤＤ  ＳＡ１０１と示す場合もある。ここで、システム領域１０１には、ＨＤＤ２０に関する管理情報（ＨＤＤ管理情報）と、後述するＮＡＮＤメモリ１１に関する管理情報（ＮＡＮＤ管理情報）と同一の情報とが保存（記憶）される。
【００２４】
ヘッド（ヘッドスライダ）２２はディスク２１の記録面に対応して配置される。ヘッド２２は、アクチュエータ２４のアームから延出したサスペンションの先端に取り付けられている。
【００２５】
アクチュエータ２４は、当該アクチュエータ２４の駆動源となるボイスコイルモータ（ＶＣＭ）２４０を有している。ＶＣＭ２４０は、ドライバＩＣ２５から供給される駆動電流（または駆動電圧）により駆動される。ヘッド２２は、アクチュエータ２４がＶＣＭ２４０によって駆動されることにより、ディスク２１上を当該ディスク２１の半径方向に、円弧を描くように移動する。
【００２６】
ドライバＩＣ２５は、メインコントローラ２７（より詳細には、メインコントローラ２７内のＭＰＵ１２３）の制御に従い、ＳＰＭ２３とＶＣＭ２４０とを駆動する。ドライバＩＣ２５によりＶＣＭ２４０が駆動されることで、ヘッド２２はディスク２１上の目標トラックに位置付けられる。
【００２７】
ヘッドＩＣ２６はヘッドアンプとも呼ばれている。ヘッドＩＣ２６は、例えばアクチュエータ２４の所定の箇所に固定され、フレキシブル印刷回路基板（ＦＰＣ）を介してメインコントローラ２７と電気的に接続されている。但し、図１では、作図の都合で、ヘッドＩＣ２６は、アクチュエータ２４から離れた箇所に配置されている。
【００２８】
ヘッドＩＣ２６は、ヘッド２２のリード素子によりリードされた信号（つまりリード信号）を増幅する。ヘッドＩＣ２６はまた、メインコントローラ２７（より詳細には、メインコントローラ２７内のＲ／Ｗチャネル２７１）から出力されるライトデータをライト電流に変換して、当該ライト電流をヘッド２２のライト素子に出力する。
【００２９】
Ｒ／Ｗチャネル２７１は、リード／ライトに関連する信号を処理する。即ちＲ／Ｗチャネル２７１は、ヘッドＩＣ２６によって増幅されたリード信号をデジタルデータに変換し、このデジタルデータからリードデータを復号する。
【００３０】
Ｒ／Ｗチャネル２７１はまた、ＨＤＣ２７２から転送されるライトデータを符号化し、この符号化されたライトデータをヘッドＩＣ２６に転送する。
【００３１】
ＨＤＣ２７２は、ホストインタフェース（ストレージインタフェース）３０を介してホホストと接続されている。ホスト及び図１に示されるハイブリッドドライブは、パーソナルコンピュータ、ビデオカメラ、音楽プレーヤー、携帯端末、携帯電話機、或いはプリンタ装置のような電子機器に備えられている。
【００３２】
ＨＤＣ２７２は、ホストから転送される信号を受信し、且つホストに信号を転送するホストインタフェースコントローラとして機能する。具体的には、ＨＤＣ２７２は、ホストから転送されるコマンド（ライトコマンド、リードコマンド等）を受信して、当該受信されたコマンドをＭＰＵ１２３に渡す。
【００３３】
ＨＤＣ２７２はまた、ホストと当該ＨＤＣ２７２との間のデータ転送を制御する。ＨＤＣ２７２は更に、Ｒ／Ｗチャネル２７１、ヘッドＩＣ２６及びヘッド２２を介してディスク２１へのデータのライト及びディスク２１からのデータのリードを制御するディスクインタフェースコントローラとしても機能する。
【００３４】
ＭＰＵ１２３は、ホストからのアクセス要求（ライト要求またはリード要求）に応じて、ＮＡＮＤメモリ１１へのアクセスと、Ｒ／Ｗチャネル２７１、ヘッドＩＣ２６、及びヘッド２２を介したディスク２１へのアクセスとを制御する。この制御は、第２の制御プログラムに従って実行される。本実施形態において、第２の制御プログラムは、例えばＲＯＭ１２４に格納されている。ＲＡＭ１２５の記憶領域の一部は、例えばＭＰＵ１２３のワーク領域として用いられる。
【００３５】
なお、イニシャルプログラムローダ（ＩＰＬ）がＲＯＭ１２４に格納され、第２の制御プログラムがディスク２１に格納されていても構わない。この場合、ハイブリッドドライブの電源が投入された際に、ＭＰＵ１２３がＩＰＬを実行することにより、第２の制御プログラムがディスク２１からＲＯＭ１２４またはＲＡＭ１２５にロードされれば良い。
【００３６】
図２は、図１に示されるＮＡＮＤメモリ１１の記憶領域のフォーマットの一例を示す概念図である。図２において、ＮＡＮＤメモリ１１の記憶領域は、Ｎ（＝Ｋ＋Ｌ）個のブロック（つまり、物理ブロック）から構成される。ＮＡＮＤメモリ１１では、このブロックを単位にデータが一括して消去される。つまりブロックは、データが消去される単位である。
【００３７】
ＮＡＮＤメモリ１１の記憶領域は、図１及び図２に示されるように、例えばシステム領域（ＳＡ）１１１及びキャッシュ領域（ＣＡ）１１２に区分される。つまり、ＮＡＮＤメモリ１１は、システム領域１１１とキャッシュ領域１１２とを備えている。
【００３８】
システム領域１１１は、一般的にキャッシュ領域１１２に対して十分に小さい。なお、ＮＡＮＤメモリ１１のシステム領域１１１をＮＡＮＤ  ＳＡ１１１と示し、ＮＡＮＤメモリ１１のキャッシュ領域１１２をＮＡＮＤ  ＣＡ１１２と示すこともある。
【００３９】
また、本実施形態においてシステム領域１１１はＬ個のブロックを備え、キャッシュ領域１１２はＫ個のブロックを備えるとする。さらに、前述のようにシステム領域１１１は、一般的にキャッシュ領域１１２に対して小さいので、Ｋ＞Ｌであるとする。
【００４０】
システム領域１１１は、システム（例えば、メインコントローラ２７）がＮＡＮＤメモリ１１に対するデータのリード／ライト／消去の処理を管理するために利用する情報（ＮＡＮＤ管理情報）を格納するために用いられる。すなわち、ＮＡＮＤメモリ１１のＮＡＮＤ管理情報はシステム領域１１１に保存される。
【００４１】
ここで、ＮＡＮＤ管理情報は冗長的に（多重化されて）保存されることが好ましいので、ＮＡＮＤ管理情報のバックアップデータがシステム領域１１１内に保存されていてもよい。キャッシュ領域１１２は、例えば、ホストからのアクセス頻度が高いデータを格納するために用いられる。尚、キャッシュ領域１１２は、ホストからアクセスされる可能性が高いデータを格納しても良いし、ホストによって最近アクセスされたデータを格納しても良い。
【００４２】
ＮＡＮＤ管理情報は、例えば、ＮＡＮＤメモリ１１の物理的な構成の情報、ＮＡＮＤメモリ１１に対するコマンド（例えばイレース）を実行した回数、及び前述のようにＮＡＮＤメモリ１１に対するデータの書き換えの回数などを含む。
【００４３】
ＮＡＮＤメモリ１１の記憶領域では、書き込みの最少単位と消去の最少単位とが異なるため、一部のデータのみの書き換えができない。例えば、ＮＡＮＤメモリ１１では、書き込みの最小単位が１ページであり、消去の最小単位が１ブロックである。例えば、１ブロックは６４ページを含むが、これに限られない。
【００４４】
ＮＡＮＤメモリ１１の記憶領域の消去動作は、前述のように複数のページを含むブロック単位で行われる。また、書き換え（上書き）動作は１動作で完了せず、消去してからデータの書き込みが行われる。すなわち１ページの書き換えでも１ブロック全てを消去する必要があるため、その１ブロックのデータは他の記憶領域に一時的に保存される。
【００４５】
システム領域１１１に保存されたＮＡＮＤ管理情報は、ハイブリッドドライブの起動（電源の投入）時に取得される。ＮＡＮＤ管理情報が取得出来ない場合、ＮＡＮＤメモリ１１内の全てのデータが消失した状態として扱われる。ＮＡＮＤ管理情報が取得できない原因の一つには、ＮＡＮＤメモリ１１の記憶領域（特に、システム領域１１１）の劣化がある。
【００４６】
ハイブリッドドライブでは、複数の不揮発性記録媒体を搭載している。例えば、複数のＮＡＮＤメモリがハイブリッドドライブに設けられることで、ＮＡＮＤメモリのシステム領域の劣化がある程度抑制され得る。しかし、この場合、十分な数のＮＡＮＤメモリが搭載されていなければ、十分な数のシステム領域を多重化することができない。その結果、システム領域の劣化が十分に抑制されない。
【００４７】
このようなハイブリッドドライブでは、システム領域の劣化によってＮＡＮＤ管理情報を取得できなくなる可能性がある。ＮＡＮＤ管理情報を取得できない場合には、ハイブリッドドライブの動作の信頼性が低下する。
【００４８】
例えば、ＮＡＮＤメモリ１１の記憶領域の劣化対策として、ＮＡＮＤ管理情報の必要量に応じて適当な余裕領域が、システム領域１１１に設けられても良い。ＮＡＮＤ管理情報は、システム領域１１１内の当該余裕領域にも格納されることがある。この結果、システム領域１１１の特定の領域の利用の集中が回避されて、システム領域１１１への書き込みは平滑化され、その記憶領域の劣化が低減され得る。
【００４９】
システム領域１１１は、例えば論理物理変換テーブル、第１の空き領域リスト、第２の空き領域リスト、及びバッドブロックリストを格納するのに用いられる。以下の説明では、論理物理変換テーブルが単にテーブルと表記されることもある。また、第１の空き領域リスト、第２の空き領域リスト、及びバッドブロックリストが、それぞれ単にリストと表記されることもある。
【００５０】
論理物理変換テーブルは、ＮＡＮＤメモリ１１のキャッシュ領域１１２内のブロック各々を管理するためのブロック管理情報を格納するのに用いられる。本実施形態において、このブロック管理情報は、キャッシュ領域１１２内のブロック（予め定められたサイズの領域）各々に格納されたデータ（各ブロックデータ）のアドレスに関するキャッシュディレクトリ情報として用いられる。
【００５１】
キャッシュディレクトリ情報は、各ブロックデータの物理的なアドレスと論理的なアドレスとの対応を管理するための情報を含む。各ブロックデータの物理的なアドレス（ここでは、物理ブロック番号）は、各ブロックデータが格納されているＮＡＮＤメモリ１１内のブロック（領域）の位置を示す。各ブロックデータの論理的なアドレス（ここでは、論理ブロック番号）は、各ブロックデータの論理アドレス空間内の位置を示す。一般的にＮＡＮＤメモリにおいて、前述のＮＡＮＤ管理情報及び論理物理変換テーブルの両方が読み込めない場合、後述するように起動の準備は完了しない。
【００５２】
第１の空き領域リストは、キャッシュ領域１１２内の第１のタイプの空き領域を登録するために用いられる。つまり第１の空き領域リストは、第１のタイプの空き領域を管理するための第１の情報として用いられる。第１のタイプの空き領域とは、正常な空き領域を指す。
【００５３】
第２の空き領域リストは、キャッシュ領域１１２内の第２のタイプの空き領域を登録するのに用いられる。つまり第２の空き領域リストは、第２のタイプの空き領域を管理するための第２の情報として用いられる。第２のタイプの空き領域とは、過去にリードエラーが発生した空き領域を指す。バッドブロックリストは、使用不可能とされたブロック（物理ブロック）、つまりバッドブロック（領域）を登録するのに用いられる。つまりバッドブロックリストは、バッドブロックを管理するための第３の情報として用いられる。
【００５４】
前述のように、ＮＡＮＤメモリ１１では、データが既に格納されている領域に、新たなデータ（更新データ）を上書きすることはできない。このため、システム領域１１１内のテーブルの格納位置（記憶位置）は、当該テーブルが更新される都度変更されることがある。この場合、更新されたテーブル（新テーブル）は、更新前のテーブル（旧テーブル）が格納されている領域とは異なる領域に書かれることがある。システム領域１１１内のリストの格納位置についても同様である。
【００５５】
システム領域１１１内のテーブル及びリストなどの格納位置及びサイズの情報は、例えばＨＤＤ  ＳＡ１０１や、ＮＡＮＤ  ＳＡ１１１等の一部に格納されている。本実施形態では、ＨＤＤ  ＳＡ１０１や、ＮＡＮＤ  ＳＡ１１１等に格納されている情報は、ハイブリッドドライブ１の電源投入時に読み出され、ＲＡＭ１２５にロードされる。
【００５６】
キャッシュ領域１１２のブロックの各々は、複数のページ（物理ページ）から構成されるものとする。この場合、論理ブロックも複数のページ（論理ページ）から構成される。
【００５７】
論理ページ番号は、対応する物理ブロック番号及び物理ページ番号のページ（物理ページ）が割り当てられた論理ページ（論理ブロック内の論理ページ）を示す。つまり、論理ページ番号は、対応する物理ページに格納されたデータの論理アドレス空間内の位置を示す。
【００５８】
本実施形態においてメインコントローラ２７は、ＮＡＮＤメモリ１１に対して（より詳細には、ＮＡＮＤメモリ１１の各ブロックに保存されたデータに対して）、リードパトロールを実施する。以下、本実施形態におけるリードパトロール（第一の処理）について説明する。
【００５９】
一般にＮＡＮＤメモリ１１は、データの書き換え回数に上限がある。また、記憶内容の保持期間も有限であり、ＮＡＮＤメモリ１１の劣化によって、所定の期間が経過すると記憶内容が失われ得る。尚、所定の期間は、例えば１０年であるがこれに限られない。また、ＮＡＮＤメモリ１１の記憶内容の保持期間は、前述のようにデータの書き換えを繰り返すことで短くなる。また、高温環境下でＮＡＮＤメモリ１１を使用した場合に記憶内容の保持期間が短くなることも知られている。
【００６０】
そこで、メインコントローラ２７は、ＮＡＮＤメモリ１２の各Ｂｌｏｃｋ（ｎ）（ただし、０≦ｎ≦Ｎ−１）に保存されたデータを定期的に読み出す（リードパトロールを実行する）ことで、データが正しく読み出せるか否かの確認を行う。尚、本実施形態においてリードパトロールは、例えば所定の時間周期で定期的に行われる。
【００６１】
本実施形態において「リードパトロール」とは、前述のように、各Ｂｌｏｃｋ（ｎ）に保存されたデータを読み出し、読み出されたデータが正しく読み出されているか否かを確認する動作であり、換言すれば、各Ｂｌｏｃｋ（ｎ）に保存されたデータが壊れていないか確認する動作である。
【００６２】
図３は、本実施形態に係るＮＡＮＤメモリ１１に対するリードパトロールの動作を示したフローチャートである。以下、図３を参照して記憶装置１の動作を説明する。リードパトロールでは、メインコントローラ２７は前述のように、ＮＡＮＤメモリ１１の各ブロックに対してデータの読み出しを行うが、ここではＢｌｏｃｋ（ｎ＝０）からデータの読み出しを行うとする。
【００６３】
メインコントローラ２７は、はじめにＮＡＮＤメモリ１１のＢｌｏｃｋ（０）に保存されたデータを読み出す（Ｓ１０１）。尚、ＮＡＮＤメモリ１１に保存されたデータには、一般的にＥＣＣ（Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｏｎ  Ｃｏｄｅ）が付されている。
【００６４】
ＥＣＣは、データを読み出す際に当該データに誤り（エラー）が生じた場合、この誤りを訂正するための符号（誤り訂正符号）である。尚、其々のデータ内における誤りの割合をエラーレート（Ｅｒｒｏｒ  ｒａｔｅ）と呼ぶ。エラーレートは、例えばデータの全ビット（ｂｉｔ）数に対する、エラービットの割合を指す。
【００６５】
また、ＥＣＣの誤り訂正には上限があり、エラービット数がある程度大きくなった場合、すなわちエラーレートがある程度大きくなると、ＥＣＣでは訂正できない場合もある。すなわち、ＥＣＣには訂正可能ビット数（訂正可能レート）の上限がある。尚、前述のＥＣＣの訂正可能ビット数（訂正可能レート）の上限が大きい（高い）場合を、ＥＣＣの訂正強度が高い（強い）と表現する場合もある。
【００６６】
次に、Ｓ１０１で読み出されたデータのエラーレートを取得する（Ｓ１０２）。尚、ここではメインコントローラ２７は、Ｂｌｏｃｋ（０）から読み出されたデータのエラーレートを取得したが、例えば、エラービット（Ｅｒｒｏｒ  ｂｉｔ）の数を取得しても良い。
【００６７】
すなわち本実施形態においてメインコントローラ２７は、読み出されたデータのエラー量を取得する。尚、当該エラー量はエラーレート及びエラービット数を含む。尚、以下の説明ではメインコントローラ２７は、読み出したデータのエラーレートを取得するとする。
【００６８】
メインコントローラ２７は、Ｓ１０２で取得されたエラーレートが第一の所定の値ｔｈ１（閾値、第一値）より大きいか否かを確認する（Ｓ１０３）。
【００６９】
Ｓ１０３で、エラーレート＞ｔｈ１の場合（Ｓ１０３：Ｙｅｓ）、メインコントローラ２７は、Ｓ１０２で取得されたエラーレートが第二の所定の値ｔｈ２（閾値、第二値）より大きいか否かを確認する（Ｓ１０４）。ただし、ｔｈ１＜ｔｈ２である。
【００７０】
一方で、エラーレート≦ｔｈ１であった場合（Ｓ１０３：Ｎｏ）、処理はＳ１１０に進む。Ｓ１１０以降の動作については後述する。
【００７１】
Ｓ１０４で、エラーレート＞ｔｈ２の場合（Ｓ１０４：Ｙｅｓ）、メインコントローラ２７は、Ｂｌｏｃｋ（０）のデータが正しく読み出すことができたかを確認する（Ｓ１０７）。換言すれば、Ｂｌｏｃｋ（０）のデータの誤りがＥＣＣによって訂正されたか（可能か）否かを確認する。
【００７２】
Ｓ１０７で、データの読み出しが正しく行われた場合（Ｓ１０７：Ｙｅｓ）、メインコントローラ２７は、ＮＡＮＤメモリ１１の空きブロックに、Ｂｌｏｃｋ（０）から読み出したデータを書き込み（Ｓ１０９）、論理物理変換テーブルを更新する。尚、空きブロックとは、ブロック内に有効なデータが保存されていないブロックのことである。また、ここでの空きブロックは、前述した第１のタイプの空き領域である。その後、処理はＳ１１０に進む。
【００７３】
一方で、Ｓ１０７でデータの読み出しが正しく行われなかった場合（Ｓ１０７：Ｎｏ）、メインコントローラ２７は、ディスク２１に保存されたデータの内、正しく読み出せなかったデータに対応したデータがあれば、このデータをＮＡＮＤメモリ１１の空きブロック（第１のタイプの空き領域）に書き込み（Ｓ１０８）、テーブルを更新する。その後、処理はＳ１１０に進む。
【００７４】
また、（Ｓ１０７：Ｎｏ）の場合、Ｂｌｏｃｋ（０）に保存されていたデータは消去され、または無効化され、Ｂｌｏｃｋ（０）は空きブロックとなる。尚、ここでの空きブロックとは、第２のタイプの空き領域である。
【００７５】
次に、Ｓ１０４で、Ｅｒｒｏｒ  ｒａｔｅ≦ｔｈ２であった場合（Ｓ１０４：Ｎｏ）を説明する。（Ｓ１０４：Ｎｏ）の場合、メインコントローラ２７は、ＮＡＮＤメモリ１１のＢｌｏｃｋ（０）のデータがダーティデータ（ｄｉｒｔｙ  ｄａｔａ）か否かを確認する（Ｓ１０５）。ダーティデータとは、ＮＡＮＤメモリ１１には（より詳細には、ＮＡＮＤメモリ１１のキャッシュ領域１１２には）書かれており、ディスク２１には書かれていないデータを指す。
【００７６】
Ｓ１０５で、Ｂｌｏｃｋ（０）のデータがダーティデータであった場合（Ｓ１０５：Ｙｅｓ）、メインコントローラ２７は、当該データをディスク２１に書き込む（Ｓ１０６）。その後、処理はＳ１１０に進む。
【００７７】
一方で、Ｓ１０５で、Ｂｌｏｃｋ（０）のデータがダーティデータでない場合（Ｓ１０５：Ｎｏ）、処理はＳ１１０に進む。
【００７８】
（Ｓ１０３：Ｎｏ）、（Ｓ１０５：Ｎｏ）の場合、及び、Ｓ１０６、Ｓ１０８、Ｓ１０９の処理が終了した後、変数ｎ＝ｎ＋１となる（Ｓ１１０）。すなわち、これまでｎ＝０であったがｎ＝１となり、Ｂｌｏｃｋ（０）からＢｌｏｃｋ（１）へと対象ブロックが変更される。
【００７９】
その後、メインコントローラ２７は、ｎの値がＮＡＮＤメモリ１１のブロック数（＝Ｎ＝Ｋ＋Ｌ）よりも大きいか否かを確認する（Ｓ１１１）。
【００８０】
ｎ＞Ｎの場合（Ｓ１１１：Ｙｅｓ）、ＮＡＮＤメモリ１１の全てのブロックに対してデータの確認が完了しているので、メインコントローラ２７はリードパトロールを終了する。
【００８１】
一方で、ｎ≦Ｎの場合（Ｓ１１１：Ｎｏ）、処理はＳ１０１に戻り、次のブロックに保存されたデータが読み出される。すなわち、メインコントローラ２７は、Ｂｌｏｃｋ（ｎ＝１）のデータを読み出し、以降、前述と同様の処理を行う。
【００８２】
本実施形態において、メインコントローラ２７はＮＡＮＤメモリ１１の各ブロックに対してのデータの読み出し及び確認（リード＆ベリファイ）を行う。また、リードパトロール時に、ＥＣＣの訂正可能レートに対して十分余裕を持った第一の所定の値ｔｈ１と、第一の所定の値ｔｈ１より大きい第二の所定の値ｔｈ２と、を閾値として、データの退避先を選択する。
【００８３】
具体的には、メインコントローラ２７は、ＮＡＮＤメモリ１１のあるブロックＢｌｏｃｋ（ｎ）から読み出されたデータのエラーレートがｔｈ２よりも大きい場合は、ＮＡＮＤメモリ１１の他の空きブロックに当該データを書き込み、Ｂｌｏｃｋ（ｎ）から読み出されたデータのエラーレートがｔｈ１より大きくｔｈ２以下の場合は、ディスク２１に当該データを書き込む。
【００８４】
既述したように、ＮＡＮＤメモリ１１はデータの書き換え回数に上限があり、データの書き換え回数の増加に伴い劣化が生じる。したがって、データの書き換え回数の増加を抑制することが望ましい。
【００８５】
そこで本実施形態では、読み出されたデータのエラーレートが、ＥＣＣの訂正可能レートに対して十分余裕を持った第一の所定の値ｔｈ１よりも大きいが、第二の所定の値ｔｈ２（＞ｔｈ１）以下の場合は、当該読み出されたデータは、ダーティデータであれば、ディスク２１に書き込まれる。
【００８６】
このため、ＮＡＮＤメモリ１１の他の空き領域にデータを書き込む場合と比較して、ＮＡＮＤメモリ１１の書き換え回数の増加が抑制され、ＮＡＮＤメモリ１１の劣化を抑制可能である。
【００８７】
また、正しく読み出されたデータのエラーレートが、ＥＣＣの訂正可能レートに対して第一の所定の値ｔｈ１よりも余裕を持たない第二の所定の値ｔｈ２よりも大きい場合は、当該読み出されたデータはＮＡＮＤメモリ１１の他の空きブロックに書き込まれる。
【００８８】
このため、前述のディスク２１にデータを書き込む場合と比較して読み出しエラーが起こる可能性が高い場合においても、パフォーマンスの劣化を防ぐことが可能である。つまり、ＮＡＮＤメモリ１１からのデータの読み出しでリードエラーが発生した際に、ＮＡＮＤメモリ１１内でデータの退避を行っているため、ディスク２１にアクセスする必要は無く、高速なデータの読み出しを維持可能である。
【００８９】
また、ＮＡＮＤメモリ１１の劣化対策の他の例として、ＮＡＮＤメモリ１１を複数備え、各ＮＡＮＤメモリ１１がシステム領域１１１を有することで、記録するデータを多重化することも可能であるが、この場合、十分な数のＮＡＮＤメモリ１１が設けられる必要があり、追加コストが発生し得る。
【００９０】
一方で本実施形態においては、読み出したデータのエラーレートに応じて、データの書き込み先を、ＮＡＮＤメモリ１１の他の空きブロック及びディスク２１から選択することで、ＮＡＮＤメモリ１１の劣化やデータアクセスのパフォーマンス劣化を抑制する。このため、ＮＡＮＤメモリ１１の数を増やしたり、容量を増やしたりする必要は無く、それに伴うコスト発生の抑制や記憶装置１全体の規模の縮小に貢献できる。
【００９１】
尚、本実施形態で行われるリードパトロールは、例えばＮＡＮＤメモリ１１に電力が供給されている間、所定の周期で定期的に行われるが、当該リードパトロールがホストからのコマンドに応じて適宜行われる構成としても良い。このような場合は、ＮＡＮＤメモリ１１の使用状況やメインコントローラ２７にかかる負荷に応じて、リードパトロールが行われるタイミングを制御可能である。
【００９２】
さらに、ホストがＮＡＮＤメモリ１１への電力の供給を終了する前にその旨をメインコントローラ２７に通知し、ホストからの入力に応じてリードパトロールが行われてからＮＡＮＤメモリ１１への電力供給が遮断される構成としても良い。
【００９３】
このような構成とすることで、次回ＮＡＮＤメモリ１１を使用する場合に、既にＮＡＮＤメモリ１１内に保存されたデータの確認が完了した状態でＮＡＮＤメモリ１１を使用可能である。
【００９４】
また、メインコントローラ２７はＮＡＮＤメモリ１１への電力供給が開始された際に、はじめにリードパトロールを行う構成としても良い。尚、この場合の「はじめにリードパトロールを行う」とは、メインコントローラ２７が、ホストからのライト要求やリード要求等のコマンドを受け、当該コマンドに対応した処理を開始するより前にリードパトロールを行うことを意味する。したがって必ずしも、ＮＡＮＤメモリ１１に電力供給がされた後に即時的に行われる必要は無い。
【００９５】
このような構成においても、ＮＡＮＤメモリ１１を使用する場合に、既にＮＡＮＤメモリ１１内に保存されたデータの確認が完了した状態でＮＡＮＤメモリ１１を使用可能である。
【００９６】
尚、本実施形態では、第一の所定の値ｔｈ１と第二の所定の値ｔｈ２との二つの値を閾値として、リードパトロール時のデータの書き込み先を選択したが、これに限らず閾値は例えば三つ以上であっても良い。
【００９７】
また、本実施形態では、リードパトロール時における第一の所定の値ｔｈ１と第二の所定の値ｔｈ２との二つの値を閾値としたデータの書き込み先の選択を説明した。しかし図３に示した一連の処理は、例えばホストからのリード要求に応じたリード時において行われても良く、必ずしもリードパトロール時のみに行われなくてもよい。
【００９８】
さらに、本実施形態で説明したデータの書き込み先の選択は、常に行われる必要は無く、例えばＮＡＮＤメモリ１１の疲弊が定められた値を上回ってから行われても良いし、ＮＡＮＤメモリ１１（または記憶装置１）の周辺の環境温度が定められた値を上回ってから行われても良い。
【００９９】
また、本実施形態では、メインコントローラ２７は、ＮＡＮＤメモリ２１及びディスク１１を制御するが、これに限られず、ＮＡＮＤメモリ２１及びディスク１１が、それぞれ異なるコントローラによって制御されてもよい。その場合、本実施形態におけるメインコントローラ（制御部）２７は、前述したそれぞれのコントローラを含む。
【０１００】
以上、本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等に含まれる。
【符号の説明】
【０１０１】
１：記憶装置（ハイブリッドディスクドライブ）、１０：半導体ドライブユニット、１１：ＮＡＮＤフラッシュメモリ（ＮＡＮＤメモリ、第二の不揮発性記憶媒体）、２０：ハードディスクドライブユニット（ＨＤＤ）、２１：磁気ディスク媒体（ディスク、第一の不揮発性記憶媒体）、２７：メインコントローラ、３０：ホストインタフェース（ストレージインタフェース）、１１１：システム領域（ＳＡ）、１１２：キャッシュ領域（ＣＡ）。 
【図１】
2017068634.tif 000003
【図２】
2017068634.tif 000004
【図３】
2017068634.tif 000005