(57)【要約】【課題】不揮発性記憶媒体の利用効率をより向上できるようにする。【解決手段】実施形態によれば、ストレージ装置は、第１の記憶媒体と第２の記憶媒体とコントローラとを含む。前記第１の記憶媒体と比較して、前記第２の記憶媒体のアクセス速度は低い。前記コントローラは、前記第１の記憶媒体の記憶領域の一部をキャッシュ領域として管理し、且つ前記キャッシュ領域内の小領域を、第１のグループと前記第１のグループよりも信頼度が低い第２のグループと使用が禁止される第３のグループとに分類する。前記コントローラは、前記キャッシュ領域に第１のデータを書き込む場合、前記第１のデータが、ダーティデータであるか、或いは非ダーティデータであるかに基づいて、前記第１のデータが書き込まれる小領域を、前記第１のグループ、或いは前記第２のグループから選択する。【選択図】      図８
2015135603.tif 000002
【特許請求の範囲】
【請求項１】
複数の小領域を含む記憶領域を備えた不揮発性の第１の記憶媒体と、
前記第１の記憶媒体と比較してアクセス速度が低速で記憶容量が大きい不揮発性の第２の記憶媒体と、
前記第１の記憶媒体の前記記憶領域の一部をキャッシュ領域として管理し、且つ前記第１の記憶媒体及び前記第２の記憶媒体にアクセスするコントローラとを具備し、
前記コントローラは、
前記キャッシュ領域内の前記小領域を、第１のグループと、前記第１のグループよりも信頼度が低い第２のグループと、使用が禁止される第３のグループとに分類し、
前記キャッシュ領域に第１のデータを書き込む場合、前記第１のデータが、前記第２の記憶媒体には書かれていないダーティデータであるか、或いは前記第２の記憶媒体に既に書かれている非ダーティデータであるかに基づいて、前記第１のデータが書き込まれる小領域を、前記第１のグループ、或いは前記第２のグループから選択する
ストレージ装置。
【請求項２】
前記コントローラは、前記キャッシュ領域内の第１の小領域からデータがリードされた場合のリード結果に基づいて、前記第１の小領域が前記第１のグループ、前記第２のグループまたは前記第３のグループのいずれに分類されるかを判定する請求項１記載のストレージ装置。
【請求項３】
前記リード結果は、前記第１の小領域からリードされたデータに付されている誤り訂正符号に基づいて当該リードされたデータの誤りが訂正された場合の訂正ビット数を含み、
前記コントローラは、前記訂正ビット数が第１の閾値よりも大きい場合に、前記第１の小領域を前記第２のグループに分類する
請求項２記載のストレージ装置。
【請求項４】
前記複数の小領域毎にデータが消去され、
前記コントローラは、前記第１の小領域のデータ消去回数が第２の閾値よりも大きく、且つ前記訂正ビット数が前記第１の閾値よりも大きい場合に、前記第１の小領域を前記第２のグループに分類し、前記第１の小領域のデータ消去回数が前記第２の閾値より大きくても、前記訂正ビット数が前記第１の閾値よりも小さい場合に、前記第１の小領域を前記第１のグループに分類する
請求項３記載のストレージ装置。
【請求項５】
前記コントローラは、
前記キャッシュ領域内の前記小領域の各々が、前記第１のグループ、前記第２のグループまたは前記第３のグループのいずれに分類されるかを、前記小領域の各々に対応付けられた管理情報を用いて管理し、
前記判定結果に基づいて、前記第１の小領域に対応付けられた管理情報を更新する
請求項２記載のストレージ装置。
【請求項６】
前記コントローラは、前記キャッシュ領域内の前記小領域の各々が、前記第１のグループ、前記第２のグループまたは前記第３のグループのいずれに分類されるかを、前記小領域の各々に対応付けられた管理情報を用いて管理する請求項１記載のストレージ装置。
【請求項７】
前記コントローラは、
前記ストレージ装置を利用するホスト装置によって認識される論理アドレス空間の論理ブロックアドレスに論理的に格納されるデータが前記ダーティデータであるか、或いは前記非ダーティデータであるかを管理情報を用いて管理し、
前記キャッシュ領域に前記第１のデータを書き込む場合、前記第１のデータが論理的に格納されている第１の論理ブロックアドレスに対応する管理情報を、前記第１のデータが前記第２の記憶媒体に既に書かれているかに基づいて設定する
請求項１記載のストレージ装置。
【請求項８】
複数の小領域を含む記憶領域を備えた不揮発性の第１の記憶媒体と、前記第１の記憶媒体と比較してアクセス速度が低速で記憶容量が大きい不揮発性の第２の記憶媒体とを具備するストレージ装置のコントローラにおいて、データが書き込まれる記憶領域を選択する方法であって、
前記第１の記憶媒体の前記記憶領域の一部をキャッシュ領域として管理し、
前記キャッシュ領域内の前記小領域を、第１のグループと、前記第１のグループよりも信頼度が低い第２のグループと、使用が禁止される第３のグループとに分類し、
前記キャッシュ領域に第１のデータを書き込む場合、前記第１のデータが、前記第２の記憶媒体には書かれていないダーティデータであるか、或いは前記第２の記憶媒体に既に書かれている非ダーティデータであるかに基づいて、前記第１のデータが書き込まれる小領域を、前記第１のグループ、或いは前記第２のグループから選択する
方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、ストレージ装置及びデータを書き込む記憶領域を選択する方法に関する。
【背景技術】
【０００２】
近年、アクセス速度及び記憶容量が異なる複数種類（例えば２種類）の不揮発性記憶媒体を備えたストレージ装置が開発されている。このようなストレージ装置の代表として、ハイブリッドドライブが知られている。ハイブリッドドライブは一般に、第１の不揮発性記憶媒体と第２の不揮発性記憶媒体とを備えている。第２の不揮発性記憶媒体は、第１の不揮発性記憶媒体と比較してアクセス速度が低く且つ記憶容量が大きい記憶媒体である。
【０００３】
第１の不揮発性記憶媒体には、例えばＮＡＮＤフラッシュメモリのような半導体メモリが用いられる。ＮＡＮＤフラッシュメモリは、単位容量当たりの単価は高いものの高速アクセスが可能な不揮発性記憶媒体として知られている。第２の不揮発性記憶媒体には、例えば磁気ディスクのようなディスク媒体が用いられる。ディスク媒体は、アクセス速度は低いものの単位容量当たりの単価が安い不揮発性記憶媒体として知られている。このため、ハイブリッドドライブは一般に、ディスク媒体（より詳細には、ディスク媒体を含むディスクドライブ）を主たるストレージとして用い、ＮＡＮＤフラッシュメモリ（より詳細には、ディスク媒体よりも高アクセス速度のＮＡＮＤフラッシュメモリ）をキャッシュとして用いる。これにより、ハイブリッドドライブ全体のアクセス速度が高速化される。
【０００４】
ＮＡＮＤフラッシュメモリの記憶領域は、一般に一定サイズの小領域（以下、ブロックと称する）に分割されて使用される。通常、ブロックに格納されるデータには、誤り訂正符号（ＥＣＣ）が付されている。ブロックからデータが読み出された場合、当該データの誤りがＥＣＣに基づいて検出され、当該ＥＣＣに基づいて誤りが訂正される。誤りが訂正されたとしても、訂正ビット（ＥＣＣ訂正ビット）の数が閾値を超えた場合には、該当するブロックを、使用が禁止されるディフェクトブロックとして扱われることがあった。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００７−３１６７７９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
データ読み出しにおいてＥＣＣ訂正ビット数が閾値を超えたブロック（以下、第１のタイプのブロックと称する）は、その後のデータ読み出しでリードエラーを引き起こす可能性がある。しかし、第１のタイプのブロックは、リードエラーを引き起こさない可能性もある。つまり、第１のタイプのブロックは、まだ使える可能性がある。したがって、第１のタイプのブロックをディフェクトブロックとして扱う場合、ＮＡＮＤフラッシュメモリ（つまり、不揮発性記憶媒体）の利用効率は低下する。
【０００７】
本発明が解決しようとする課題は、不揮発性記憶媒体の利用効率をより向上できるストレージ装置及びデータを書き込む記憶領域を選択する方法を提供することにある。
【課題を解決するための手段】
【０００８】
実施形態によれば、ストレージ装置は、不揮発性の第１の記憶媒体と、不揮発性の第２の記憶媒体と、コントローラとを具備する。前記第１の記憶媒体は複数の小領域を含む記憶領域を備える。前記第１の記憶媒体と比較して、前記第２の記憶媒体のアクセス速度は低く、且つ前記第２の記憶媒体の記憶容量は大きい。前記コントローラは、前記第１の記憶媒体の前記記憶領域の一部をキャッシュ領域として管理し、且つ前記第１の記憶媒体及び前記第２の記憶媒体にアクセスする。前記コントローラは、前記キャッシュ領域内の前記小領域を、第１のグループと、前記第１のグループよりも信頼度が低い第２のグループと、使用が禁止される第３のグループとに分類する。前記コントローラは更に、前記キャッシュ領域に第１のデータを書き込む場合、前記第１のデータが、前記第２の記憶媒体には書かれていないダーティデータであるか、或いは前記第２の記憶媒体に既に書かれている非ダーティデータであるかに基づいて、前記第１のデータが書き込まれる小領域を、前記第１のグループ、或いは前記第２のグループから選択する。
【図面の簡単な説明】
【０００９】
【図１】実施形態に係るハイブリッドドライブの典型的な構成を示すブロック図。
【図２】図１に示されるＮＡＮＤメモリの記憶領域の典型的なフォーマットを示す概念図。
【図３】図１に示されるディスクの記憶領域の典型的なフォーマットを示す概念図。
【図４】図２に示されるブロック管理テーブルのデータ構造の例を示す図。
【図５】図２に示されるイレーズカウンタテーブルのデータ構造の例を示す図。
【図６】図３に示されるデータ管理テーブルのデータ構造の例を示す図。
【図７】同実施形態におけるブロック状態判定処理の典型的な手順を示すフローチャート。
【図８】同実施形態においてＮＡＮＤメモリにデータを書き込むライト動作の典型的な手順を示すフローチャート。
【発明を実施するための形態】
【００１０】
以下、実施の形態につき図面を参照して説明する。  
図１は一つの実施形態に係るハイブリッドドライブの典型的な構成を示すブロック図である。ハイブリッドドライブは、アクセス速度及び記憶容量が異なる複数種類、例えば２種類の不揮発性記憶媒体（つまり、第１の不揮発性記憶媒体及び第２の不揮発性記憶媒体）を備えている。本実施形態では、第１の不揮発性記憶媒体として、ＮＡＮＤフラッシュメモリ（以下、ＮＡＮＤメモリと称する）１１が用いられ、第２の不揮発性記憶媒体として磁気ディスク媒体（以下、ディスクと称する）２５が用いられる。ディスク２５のアクセス速度及び記憶容量は、ＮＡＮＤメモリ１１のそれらと比較して低速で且つ大容量である。
【００１１】
図１に示されるハイブリッドドライブは、ソリッドステートドライブ（ＳＳＤ）のような半導体ドライブユニット１０と、ハードディスクドライブ（ＨＤＤ）のようなディスクドライブユニット２０とから構成される。半導体ドライブユニット１０は、ＮＡＮＤメモリ１１と、メモリコントローラ１２とを含む。
【００１２】
メモリコントローラ１２は、ディスクドライブユニット２０のメインコントローラ２２からのアクセスコマンド（例えば、ライトコマンドまたはリードコマンド）に応じて、ＮＡＮＤメモリ１１へのアクセスを制御する。メモリコントローラ１２は、この制御を、第１の制御プログラムに従って実行する。本実施形態において、ＮＡＮＤメモリ１１は、ホスト装置（以下、ホストと称する）からハイブリッドドライブへのアクセスの高速化のために、当該ホストによって最近アクセスされたデータを格納するためのキャッシュ（キャッシュメモリ）として用いられる。ホストは、図１に示されるハイブリッドドライブを、自身のストレージ装置として利用する。
【００１３】
メモリコントローラ１２は、フラッシュ読み出し専用メモリ（ＦＲＯＭ）１２１と、ランダムアクセスメモリ（ＲＡＭ）１２２とを含む。ＦＲＯＭ１２１は、書き換え可能な不揮発性メモリであり、前記第１の制御プログラムを格納するのに用いられる。ＲＡＭ１２２の記憶領域の一部は、メモリコントローラ１２のワーク領域として用いられる。なお、ＦＲＯＭ１２１及びＲＡＭ１２２が、メモリコントローラ１２の外部に備えられていても良い。
【００１４】
ディスクドライブユニット２０は、ディスクユニット２１と、メインコントローラ２２と、ＦＲＯＭ２３と、ＲＡＭ２４とを含む。ディスクユニット２１は、前記ディスク２５と、ヘッド２６とを含む。ディスク２５は、例えばその一方の面に、データが磁気記録される記録面を備えている。ヘッド２６は、ディスク２５の記録面に対応して配置される。ヘッド２２はディスク２５へのデータの書き込みと、当該ディスク２５からのデータの読み出しとに用いられる。
【００１５】
メインコントローラ２２は、ホストインタフェース（ストレージインタフェース）３０を介してホストと接続されている。メインコントローラ２２は、ホストから転送される信号を受信し、且つホストに信号を転送するホストインタフェースコントローラとして機能する。具体的には、メインコントローラ２２は、ホストから転送されるアクセス要求（ライト要求、リード要求等）を受信する。メインコントローラ２２はまた、ホストと当該メインコントローラ２２との間のデータ転送を制御する。
【００１６】
メインコントローラ２２は更に、アクセス要求（例えば、ホストからのライト要求またはリード要求）に応じて、メモリコントローラ１２を介したＮＡＮＤメモリ１１へのアクセスと、ヘッド２６を介したディスク２５へのアクセスとを制御するアクセスコントローラとしても機能する。メインコントローラ２２は、上述の制御を、第２の制御プログラムに従って実行する。本実施形態において、第２の制御プログラムは、ＦＲＯＭ２３に格納されている。ＲＡＭ２４の記憶領域の一部は、メインコントローラ２２のワーク領域として用いられる。
【００１７】
メモリコントローラ１２及びメインコントローラ２２は、ハイブリッドドライブ全体のコントローラ１００を構成する。つまり、本実施形態においてコントローラ１００の機能は、半導体ドライブユニット１０及びディスクドライブユニット２０に、それぞれメモリコントローラ１２及びメインコントローラ２２として分散されている。しかし、コントローラ１００が、半導体ドライブユニット１０及びディスクドライブユニット２０から独立して備えられていても構わない。
【００１８】
また、イニシャルプログラムローダ（ＩＰＬ）がＦＲＯＭ２３に格納され、第２の制御プログラムがディスク２５に格納されていても構わない。この場合、ハイブリッドドライブの電源が投入された際に、メインコントローラ２２がＩＰＬを実行することにより、第２の制御プログラムがディスク２５から例えばＲＡＭ２４にロードされれば良い。
【００１９】
図２は、図１に示されるＮＡＮＤメモリ１１の記憶領域の典型的なフォーマットを示す概念図である。ＮＡＮＤメモリ１１の記憶領域は、図２に示されるように、システム領域１１１とキャッシュ領域１１２とに区分される。つまり、ＮＡＮＤメモリ１１は、システム領域１１１とキャッシュ領域１１２とを備えている。システム領域１１１は、システム（例えば、メモリコントローラ１２）が管理のために利用する情報を格納するのに用いられる。キャッシュ領域１１２は、ホストによって最近アクセスされたデータを格納するのに用いられる。
【００２０】
ＮＡＮＤメモリ１１の記憶領域は、一般にブロックと呼ばれる一定サイズの小領域に分割されて使用される。つまり、ＮＡＮＤメモリ１１の記憶領域は、複数のブロック（小領域）から構成される。ＮＡＮＤメモリ１１では、このブロックを単位にデータが一括して消去される。つまりブロックは、データが消去される単位である。
【００２１】
システム領域１１１の一部は、ブロック管理テーブル１１１ａ、及びイレーズカウンタテーブル１１１ｂを格納するのに用いられる。ブロック管理テーブル１１１ａには、例えば、キャッシュ領域１１２内のブロック毎にブロック（小領域）管理情報が格納される。ブロック管理情報は、対応するブロックの状態、例えば信頼度を示す。
【００２２】
イレーズカウンタテーブル１１１ｂには、例えば、ＮＡＮＤメモリ１１内のブロック毎にイレーズカウンタ情報が格納される。イレーズカウンタ情報は、対応するブロックがイレーズされた回数を示す。
【００２３】
図３は図１に示されるディスク２５の記憶領域の典型的なフォーマットを示す概念図である。ディスク２５は、図３に示されるように、システム領域２５１とユーザ領域２５２とに区分される。つまり、ディスク２５は、システム領域２５１とユーザ領域２５２とを備えている。システム領域２５１は、システム（例えば、メインコントローラ２２）が管理のために利用する情報を格納するのに用いられる。ユーザ領域２５２は、ユーザから使用可能な記憶領域である。
【００２４】
システム領域２５１の一部は、キャッシュ管理テーブル２５１ａ、及びデータ管理テーブル２５１ｂを格納するのに用いられる。キャッシュ管理テーブル２５１ａは、ＮＡＮＤメモリ１１のキャッシュ領域１１２を管理するのに用いられる。具体的には、キャッシュ管理テーブル２５１ａには、キャッシュ領域１１２内のブロック毎にキャッシュ管理情報が格納される。キャッシュ管理情報は、対応するブロックの識別子（例えば、ブロック番号）と、当該ブロックに格納されているデータの論理ブロックアドレス（ＬＢＡ）とを含む。論理ブロックアドレスは、ホストによって認識される論理アドレス空間の位置を示す。
【００２５】
データ管理テーブル２５１ｂには、例えば、論理ブロックアドレス（つまり、論理アドレス空間の論理ブロックアドレス）毎にデータ管理情報が格納される。データ管理情報は、対応する論理ブロックアドレスのデータ（より詳細には、対応する論理ブロックアドレスに論理的に格納されているデータ）の状態を示す。
【００２６】
図４は、図２に示されるブロック管理テーブル１１１ａのデータ構造の例を示す。ブロック管理テーブル１１１ａは、ＮＡＮＤメモリ１１内のブロック（より詳細には、ＮＡＮＤメモリ１１のキャッシュ領域１１２内のブロック）にそれぞれ対応付けられたエントリを有する。ブロック管理テーブル１１１ａのエントリの各々は、対応するブロックのブロック管理情報を格納するのに用いられる。
【００２７】
ブロック管理情報は、ブロック識別子とブロック状態情報とを含む。ブロック識別子は、例えば、対応するブロックに固有のブロック番号である。ブロック状態情報は、対応するブロックの状態、例えば信頼度を示す。本実施形態において、ブロック状態情報の示す信頼度は、高信頼度（ＨＲ）、低信頼度（ＬＲ）、または信頼度無し（ＤＦ）である。つまりブロック状態情報は、対応するブロックが、高信頼ブロック（第２のタイプのブロック）、低信頼ブロック（第１のタイプのブロック）またはディフェクトブロック（第３のタイプのブロック）のいずれであるかを示す。
【００２８】
このように本実施形態では、ＮＡＮＤメモリ１１内のブロックの集合（より詳細には、キャッシュ領域１１２内のブロックの集合）は、高信頼グループ（第１のグループ）、低信頼グループ（第２のグループ）及びディフェクトグループ（第３のグループ）の３つのグループに分類される。高信頼グループは高信頼ブロックの集合であり、低信頼グループは低信頼ブロックの集合である。ディフェクトグループはディフェクトブロックの集合である。
【００２９】
本実施形態において、ブロック管理情報中のブロック状態情報の初期値は、対応するブロックが高信頼ブロックであることを示す。つまり本実施形態において、図１に示されるハイブリッドドライブの使用が開始される初期状態では、キャッシュ領域１１２内の全てのブロックは、ブロック管理テーブル１１１ａによって高信頼ブロックとして管理される。なお、ＮＡＮＤメモリ１１内の全てのブロックが、高信頼グループ、低信頼グループ及びディフェクトグループに分類されても良い。つまり、ブロック管理テーブル１１１ａが、ＮＡＮＤメモリ１１内の全てのブロックにそれぞれ対応付けられたエントリを有しても良い。
【００３０】
図５は、図２に示されるイレーズカウンタテーブル１１１ｂａのデータ構造の例を示す。イレーズカウンタテーブル１１１ｂは、ＮＡＮＤメモリ１１内のブロックにそれぞれ対応付けられたエントリを有する。ブロック管理テーブル１１１ａのエントリの各々は、対応するブロックのイレーズカウンタ情報を格納するのに用いられる。イレーズカウンタ情報は、ブロック識別子（番号）とイレーズカウントとを含む。イレーズカウントは、対応するブロックがイレーズされた回数を示す。
【００３１】
図６は、図３に示されるデータ管理テーブル２５１ｂのデータ構造の例を示す。データ管理テーブル２５１ｂは、ホストによって認識される論理アドレス空間の例えば全ての論理ブロックアドレスにそれぞれ対応付けられたエントリを有しているものとする。データ管理テーブル２５１ｂのエントリの各々はデータ管理情報を格納するのに用いられる。
【００３２】
データ管理情報は、対応する論理ブロックアドレスと、ダーティフラグとを含む。ダーティフラグは、対応する論理ブロックアドレスに論理的に格納されているデータの状態、例えば、当該データがダーティデータであるか或いは非ダーティデータであるかを示す。ダーティデータとは、ＮＡＮＤメモリ１１（より詳細には、ＮＡＮＤメモリ１１のキャッシュ領域１１２）に書かれて、ディスク２５には書かれていないデータを指す。非ダーティデータとは、ＮＡＮＤメモリ１１及びディスク２５の両方に書かれているデータを指す。
【００３３】
また本実施形態は、ディスク２５に書かれて、ＮＡＮＤメモリ１１のキャッシュ領域１１２には書かれていないデータも、非ダーティデータと見なす。しかし、このようなデータが、ダーティデータでも非ダーティデータでもない別のタイプのデータとして管理されても構わない。
【００３４】
次に、本実施形態の動作を説明する。まず、メインコントローラ２２が、半導体ドライブユニット１０のメモリコントローラ１２に対してライトコマンドを発行する際の動作について説明する。このライトコマンドが、例えば、ＮＡＮＤメモリ１１のキャッシュ領域１１２へのデータ（第１のデータ）Ｄのライトを、メモリコントローラ１２に対して指定するものとする。また、データＤの論理ブロックアドレスがＬＢＡｉであるものとする。
【００３５】
メインコントローラ２２は、ライトデータＤ（つまり、ＮＡＮＤメモリ１１のキャッシュ領域１１２に書かれるべきデータ）が、論理ブロックアドレスＬＢＡｉのデータとしてディスク２５に既に格納されているかを判定する。もし、ライトデータＤがディスク２５に既に格納されているならば、メインコントローラ２２は、論理ブロックアドレスＬＢＡｉに対応付けられた、データ管理テーブル２５１ｂのエントリ（以下、エントリｉと称する）に格納されているデータ管理情報（第１のデータ管理情報）中のダーティフラグをセット（例えば、論理“１”を示す状態にセット）する。これに対し、ライトデータＤがディスク２５に格納されていないならば、メインコントローラ２２は、データ管理テーブル２５１ｂのエントリｉに格納されているデータ管理情報中のダーティフラグをリセット（例えば、論理“０”を示す状態にリセット）する。
【００３６】
本実施形態において、ライトデータＤは、ライトバックデータ、ライトスルーデータ、またはリードスチールデータである。ライトバックデータとは、ライトバックモードにおいてホストからハイブリッドドライブにデータライトが要求された場合のライトデータＤを指す。ライトバックモードとは、ホストからのライト要求に応じて、ライトデータＤ（ライトバックデータ）がＮＡＮＤメモリ１１のキャッシュ領域１１２に書き込まれ、この書き込みの完了に応じてライト完了を示す応答がホストに返されるモードを指す。ライトバックモードでは、ディスク２５へのライトデータＤ（ライトバックデータ）の書き込みは、ライト完了を示す応答がホストに返された後の、例えばディスクドライブユニット２０の空き時間（アイドル時間）に実行される。このディスク２５へのライトデータＤの書き込みにより、当該ライトデータＤは、ダーティデータから非ダーティデータに変わる。
【００３７】
そこでメインコントローラ２２は、ライトデータＤがライトバックデータの場合には、まずデータ管理テーブル２５１ｂのエントリｉのダーティフラグをセットする。そしてメインコントローラ２２は、ライトデータＤがディスク２５にも書き込まれた後に、前記エントリｉのダーティフラグをリセットする。
【００３８】
次に、ライトスルーデータとは、ライトスルーモードにおいてホストからハイブリッドドライブにデータライトが要求された場合のライトデータＤを指す。ライトスルーモードとは、ホストからのライト要求に応じて、ライトデータＤ（ライトバックデータ）がＮＡＮＤメモリ１１のキャッシュ領域１１２に書き込まれ、この書き込みと並行して当該ライトデータＤがディスク２５にも書かれるモードを指す。
【００３９】
ライトスルーモードでは、ディスク２５へのライトデータＤの書き込みの完了に応じて、ライト完了を示す応答がホストに返される。そこでメインコントローラ２２は、ライトデータＤがライトスルーデータの場合には、データ管理テーブル２５１ｂのエントリｉのダーティフラグをリセットする。
【００４０】
リードスチールデータとは、ホストからのリード要求に対してキャッシュミスヒットのためにディスク２５から読み出されたデータＤを指す。このデータＤは、ホストから要求されたリードデータＤとして用いられ、且つ、キャッシュ領域１１２に書き込まれるべきライトデータＤとして用いられる。そこでメインコントローラ２２は、ライトデータＤがリードスチールデータの場合には、データ管理テーブル２５１ｂのエントリｉに格納されているデータ管理情報中のダーティフラグをリセットする。
【００４１】
メインコントローラ２２は、上述のようにダーティフラグを操作した後に、メモリコントローラ１２に対してライトコマンドを発行する。
【００４２】
次に、本実施形態におけるリード動作について説明する。まず、ホストが、図１に示されるハイブリッドドライブにリード要求を発行したものとする。このリード要求は、開始論理アドレスと、読み出されるべきデータ（読み出しデータ）のサイズを示すサイズ情報とを含む。ここでは、開始論理アドレスは、論理ブロックアドレスＬＢＡｉを示し、読み出しデータのサイズは、１ブロックのサイズであるものとする。
【００４３】
ホストからのリード要求は、ハイブリッドドライブのメインコントローラ２２によって受信される。メインコントローラ２２は、受信されたリード要求の示す論理ブロックアドレスＬＢＡｉを含むキャッシュ管理情報を、キャッシュ管理テーブル２５１ａから取得する。ここでは、メインコントローラ２２は、論理ブロックアドレスＬＢＡｉを含むキャッシュ管理情報を取得できたものとする。つまり、受信されたリード要求は、キャッシュにヒットしたものとする。また、取得されたキャッシュ管理情報は、ブロック番号ｊを含むものとする。この場合、メインコントローラ２２は、ブロック番号ｊで示されるブロックＢＬＫｊ（第１の小領域）からのデータのリードを指定するリードコマンドをメモリコントローラ１２に発行する。
【００４４】
メモリコントローラ１２は、メインコントローラ２２からのリードコマンドに応じて、ＮＡＮＤメモリ１１のキャッシュ領域１１２内のブロックＢＬＫｊからデータをリードする。次にメモリコントローラ１２は、リードされたデータが正しいかを当該リードされたデータに付されているＥＣＣに基づいて判定する。
【００４５】
もし、リードされたデータが正しいならば、メモリコントローラ１２は当該リードされたデータをメインコントローラ２２に返す。これに対し、リードされたデータが正しくないならば、メモリコントローラ１２は、リードされたデータの誤りを、前記ＥＣＣに基づいて訂正する。もし、リードされたデータの誤りが訂正できたならば、メモリコントローラ１２は、誤りが訂正されたデータをメインコントローラ２２に返す。メインコントローラ２２は、メモリコントローラ１２によって返されたデータを、ホストからのリード要求に対する応答として当該ホストに返す。また、リードされたデータの誤りが訂正できなかったならば、メモリコントローラ１２はメインコントローラ２２にリードエラーを通知する。
【００４６】
さて、メモリコントローラ１２は、ブロックＢＬＫｊからデータをリードした場合、当該ブロックＢＬＫｊの信頼度を判定するためのブロック状態判定処理を実行する。以下、このブロック状態判定処理について、図７を参照して説明する。図７は、ブロック状態判定処理の典型的な手順を示すフローチャートである。
【００４７】
まず、メモリコントローラ１２は、ブロックＢＬＫｊからのデータリードでリードエラーが発生したかを判定する（Ｂ７０１）。もし、リードエラーが発生しなかったならば（Ｂ７０１のＮｏ）、メモリコントローラ１２は、ブロックＢＬＫｊのプログラム／イレーズ（Ｐ／Ｅ）サイクル数Ｎ＿ＰＥＣが閾値ＴＨａ（第２の閾値）より大きいかを判定する（Ｂ７０２）。ブロックＢＬＫｊのＰ／Ｅサイクル数Ｎ＿ＰＥＣとは、ブロックＢＬＫｊがイレーズされた回数を指す。そこでメモリコントローラ１２は、ブロックＢＬＫｊのブロック番号ｊを含むイレーズカウント情報をイレーズカウンタテーブル１１１ｂから取得し、当該イレーズカウント情報に含まれているイレーズカウントをＰ／Ｅサイクル数Ｎ＿ＰＥＣとして用いる。
【００４８】
もし、Ｐ／Ｅサイクル数Ｎ＿ＰＥＣが閾値ＴＨａより大きいならば（Ｂ７０２のＹｅｓ）、メモリコントローラ１２はＢ７０３に進む。Ｂ７０３においてメモリコントローラ１２は、ＥＣＣ訂正ビットの数Ｎ＿ＣＢが閾値ＴＨｂ（第１の閾値）よりも大きいかを判定する。ＥＣＣ訂正ビットの数Ｎ＿ＣＢとは、ブロックＢＬＫｊからデータをリードした際にＥＣＣに基づいて訂正されたビットの数である。
【００４９】
もし、ＥＣＣ訂正ビットの数Ｎ＿ＣＢが閾値ＴＨｂよりも大きくないならば（Ｂ７０３のＮｏ）、メモリコントローラ１２はＢ７０４に進む。また、Ｐ／Ｅサイクル数Ｎ＿ＰＥＣが閾値ＴＨａより大きくない場合にも（Ｂ７０２のＮｏ）、メモリコントローラ１２はＢ７０４に進む。
【００５０】
Ｂ７０４においてメモリコントローラ１２は、ブロックＢＬＫｊの現在の状態を維持する。即ちメモリコントローラ１２は、ブロック管理テーブル１１１ａに格納されていて、且つブロックＢＬＫｊのブロック番号ｊを含むブロック管理情報、つまりブロックＢＬＫｊのブロック管理情報（第１の小領域管理情報）中のブロック状態情報を、現在の信頼度を示す状態に維持する。これにより、ブロックＢＬＫｊが高信頼ブロックであれば、当該ブロックＢＬＫｊは高信頼ブロックとして維持され、当該ブロックＢＬＫｊが低信頼ブロックであれば、当該ブロックＢＬＫｊは低信頼ブロックとして維持される。
【００５１】
これに対し、ＥＣＣ訂正ビットの数Ｎ＿ＣＢが閾値ＴＨｂよりも大きいならば（Ｂ７０３のＹｅｓ）、メモリコントローラ１２はＢ７０５に進む。Ｂ７０５においてメモリコントローラ１２は、ブロックＢＬＫｊを低信頼（ＬＲ）ブロックとしてブロック管理テーブル１１１ａに記録する。即ちメモリコントローラ１２は、ブロックＢＬＫｊのブロック管理情報（第１の小領域管理情報）中のブロック状態情報を、低信頼度（ＬＲ）を示す状態に設定する。これにより、ブロックＢＬＫｊが高信頼ブロックであれば、当該ブロックＢＬＫｊは低信頼ブロックに変更され、当該ブロックＢＬＫｊが低信頼ブロックであれば、当該ブロックＢＬＫｊは低信頼ブロックとして維持される。
【００５２】
一方、ブロックＢＬＫｊからのデータリードでリードエラーが発生したならば（Ｂ７０１のＹｅｓ）、メモリコントローラ１２はＢ７０６に進む。Ｂ７０６においてメモリコントローラ１２は、ブロックＢＬＫｊをディフェクト（ＤＦ）ブロックとしてブロック管理テーブル１１１ａに記録する。即ちメモリコントローラ１２は、ブロックＢＬＫｊのブロック管理情報中のブロック状態情報を、高信頼度（ＨＲ）または低信頼度（ＬＲ）を示す情報からディフェクト（ＤＦ）を示す情報に変更する。
【００５３】
このように本実施形態では、メモリコントローラ１２は、ブロックＢＬＫｊのブロック状態（つまり信頼度）を、Ｐ／Ｅサイクル数Ｎ＿ＰＥＣ及びＥＣＣ訂正ビットの数Ｎ＿ＣＢに基づいて判定する。しかし、ブロックＢＬＫｊのブロック状態（信頼度）が、ＥＣＣ訂正ビットの数Ｎ＿ＣＢ（つまり、リード結果）に基づいて判定されても良い。
【００５４】
次に、本実施形態においてＮＡＮＤメモリ１１（より詳細には、ＮＡＮＤメモリ１１のキャッシュ領域１１２）にデータを書き込むライト動作について図８を参照して説明する。図８は、ライト動作の典型的な手順を示すフローチャートである。なお、このようなライト動作は、プログラム動作とも呼ばれる。
【００５５】
今、前述したようにデータ管理テーブル２５１ｂのエントリｉのダーティフラグを操作した後に、メインコントローラ２２が、ＮＡＮＤメモリ１１のキャッシュ領域１１２へのデータＤのライトを指定するライトコマンドをメモリコントローラ１２に対して発行したものとする。また、データＤの論理ブロックアドレスがＬＢＡｉであり、ライトコマンドは当該データＤがダーティデータ或いは非ダーティデータのいずれであるかを示す情報を含むものとする。
【００５６】
メモリコントローラ１２は、メインコントローラ２２からのライトコマンドに基づいて、当該ライトコマンドの指定するデータＤがダーティデータであるかを判定する（Ｂ８０１）。もし、データＤがダーティデータでないならば（Ｂ８０１のＮｏ）、つまりデータＤが非ダーティデータであるならば、メモリコントローラ１２は当該データＤはディスク２５に既に格納されていると判定する。
【００５７】
この場合、メモリコントローラ１２は、ＮＡＮＤメモリ１１のキャッシュ領域１１２から、現在使用されていない低信頼ブロック（つまり、フリーの低信頼ブロック）を探索する（Ｂ８０２）。メモリコントローラ１２は、この非使用の低信頼ブロックの探索を、ブロック管理テーブル１１１ａ及びフリーブロックリストに基づいて実行する。フリーブロックリストは、キャッシュ領域１１２内のブロックのうち、データの格納に用いられていないブロック（つまり、フリーブロック）のブロック番号を記録したリストである。つまりメモリコントローラ１２は、フリーブロックリストによって示される非使用ブロックの集合から、ブロック管理テーブル１１１ａによって低信頼ブロックであることが示されているブロックを、非使用の低信頼ブロックとして探索する。
【００５８】
次にメモリコントローラ１２は、非使用の低信頼ブロックの探索に成功したかを判定する（Ｂ８０３）。もし、非使用の低信頼ブロックの探索に失敗したならば（Ｂ８０３のＮｏ）、メモリコントローラ１２はＢ８０４に進む。また、データＤがダーティデータである場合にも（Ｂ８０１のＹｅｓ）、メモリコントローラ１２はＢ８０４に進む。
【００５９】
Ｂ８０４においてメモリコントローラ１２は、ブロック管理テーブル１１１ａ及びフリーブロックリストに基づいて、非使用の高信頼ブロックを選択する。Ｂ８０４においてメモリコントローラ１２は更に、選択された高信頼ブロックにデータＤを書き込む。これにより本実施形態は、データＤが、たとえディスク２５には書かれていないダーティデータであったとしても、図１に示されるハイブリッドドライブからリードできなくなる確率を十分低減することができる。
【００６０】
一方、非使用の低信頼ブロックの探索に成功したならば（Ｂ８０３のＹｅｓ）、メモリコントローラ１２はＢ８０５に進む。Ｂ８０５においてメモリコントローラ１２は、探索された非使用の低信頼ブロックを選択する。Ｂ８０５においてメモリコントローラ１２は更に、選択された低信頼ブロックにデータＤを書き込む。
【００６１】
低信頼ブロックに書かれたデータＤは、既にディスク２５に書かれている非ダーティデータ（より詳細には、論理ブロックアドレスＬＢＡｉの非ダーティデータ）である。したがって本実施形態は、低信頼ブロックへのデータＤの書き込みの後のリード動作で、たとえ当該低信頼ブロックからデータＤを正常に読み出すことができなかったとしても、当該データＤをディスク２５から正常に読み出すことができる。このように本実施形態は、疲弊が進んでリードエラーを起こす可能性がある低信頼ブロックを、非ダーティデータ（つまり、ＮＡＮＤメモリ１１からの消失が許容されるデータ）の保存に使用する。これにより本実施形態は、ＮＡＮＤメモリ１１の各ブロックを長い期間使用することができ、当該ＮＡＮＤメモリ１１を効率的に使うことができる。
【００６２】
しかも、低信頼ブロックに書かれたデータＤの読み出しで、必ずしもリードエラーが発生するとは限らず、当該データＤが正常に読み出される可能性も十分ある。つまり本実施形態は、従来技術ではディフェクトブロックとして扱われた低信頼ブロックを有効に利用しながら、データＤを高速に読み出すことができる。これにより本実施形態は、従来技術と比較して、ＮＡＮＤメモリ１１を長い期間使用することができ、ハイブリッドドライブが当該ハイブリッドドライブとして動作する期間を伸ばすことができる。
【００６３】
メモリコントローラ１２はＢ８０４またはＢ８０５を実行すると、データＤが書かれたブロックのブロック番号を、ライト完了を示す応答としてメインコントローラ２２に返す。これによりメモリコントローラ１２は、メインコントローラ２２からのライトコマンドの実行を完了する。ここでは、データＤが書かれたブロックはブロックＢＬＫｊであり、当該ブロックＢＬＫｊのブロック番号はｊであるものとする。この場合、メインコントローラ２２は、ブロックＢＬＫｊに対応付けられたキャッシュ管理情報中の論理ブロックアドレスをＬＢＡｉに更新する。
【００６４】
上述のライト動作は、ライトバックモードまたはライトスルーモードにおいてホストからハイブリッドドライブにデータライトが要求された場合に実行される。また、上述のライト動作は、ホストからのリード要求に対してキャッシュミスヒットのためにディスク２５からデータＤ（つまり、論理ブロックアドレスＬＢＡｉのデータＤ）が読み出された場合にも実行される。この場合、前述したように、読み出されたデータＤ（リードスチールデータ）がライトデータとして用いられる。
【００６５】
上述のライト動作は更に、例えばメモリコントローラ１２によって自律的に実行されるガーベッジコレクション処理においても実行される。ガーベージコレクション処理とは、ＮＡＮＤメモリ１１において部分的に無効となった複数のブロック（いわゆる隙間が存在する複数のブロック）から別ブロックに有効データをまとめて移動する処理である。ガーベージコレクション処理では、データの状態（つまり、当該データがダーティデータであるか或いは非ダーティデータであるか）は、当該データの移動前後で維持される。ガーベージコレクション処理は、一般に、ホストによって要求されたアクセス処理に対するバックグラウンド処理として実行される。
【００６６】
以上説明した少なくとも１つの実施形態によれば、不揮発性記憶媒体の利用効率を向上することができる。
【００６７】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００６８】
１０…半導体ドライブユニット、１１…ＮＡＮＤメモリ（ＮＡＮＤフラッシュメモリ、第１の記憶媒体）、１２…メモリコントローラ、２０…ディスクドライブユニット、２１…ディスクユニット、２２…メインコントローラ、２５…ディスク（第２の記憶媒体）、１００…コントローラ、１１１…システム領域、１１１ａ…ブロック管理テーブル、１１１ｂ…イレーズカウンタテーブル、１１２…キャッシュ領域、２５１…システム領域、２５１ａ…キャッシュ管理テーブル、２５１ｂ…データ管理テーブル、２５２…ユーザ領域
【図１】
2015135603.tif 000003
【図２】
2015135603.tif 000004
【図３】
2015135603.tif 000005
【図４】
2015135603.tif 000006
【図５】
2015135603.tif 000007
【図６】
2015135603.tif 000008
【図７】
2015135603.tif 000009
【図８】
2015135603.tif 000010