(57)【要約】【課題】データストレージデバイスにおいて、磁気記憶メディアのためのメモリキャッシュとして不揮発性ソリッドステートデバイスの使用を容易にするためのシステムおよび方法を提供すること。【解決手段】実施形態によれば、データブロックを読み出す又は書き込むコマンドに応じて、不揮発性記憶デバイスおよび磁気記憶デバイスを含むデータストレージデバイス上でオペレーションを実行する方法であって、前記方法は、複数のセグメントへの、前記コマンドのアドレス可能なスペースのマッピングを維持することと、前記コマンドに含まれる前記データブロックの前記アドレスが前記複数のセグメントのうちの１つにマッピングされているかどうかを、前記マッピングから決定することと、前記決定することに基づいて前記コマンドを実行することと、を備える。【選択図】  図５
2014174981.tif 000002
【特許請求の範囲】
【請求項１】
データブロックを読み出す又は書き込むコマンドに応じて、不揮発性記憶デバイスおよび磁気記憶デバイスを含むデータストレージデバイス上でオペレーションを実行する方法であって、
前記不揮発性記憶デバイスのアドレス可能なスペースから区分化され、互いに等しいサイズであって前記データブロックのサイズよりも大きいサイズを有する複数のセグメントへの、前記コマンドのアドレス可能であり前記データブロックのアドレスを含むスペースのマッピングを維持することと、
前記コマンドに含まれる前記データブロックの前記アドレスが前記複数のセグメントのうちの１つにマッピングされているかどうかを、前記マッピングから決定することと、
前記決定することに基づいて前記コマンドを実行することと、
を備える方法。
【請求項２】
各セグメントは前記データブロックの前記サイズの正の整数倍であるサイズを有する、請求項１に記載の方法。
【請求項３】
前記データブロックの前記アドレスは前記複数のセグメントのうちの１つにマッピングされていないと決定することに応じて、前記コマンドを実行することは、磁気記憶デバイスから前記データブロックを読み出すことを備え、そして、前記データブロックの前記アドレスは前記複数のセグメントのうちの１つにマッピングされていると決定することに応じて、前記コマンドを実行することは、前記不揮発性記憶デバイスから前記データブロックを読み出すことを備える、請求項１に記載の方法。
【請求項４】
前記不揮発性記憶デバイスから前記データブロックを読み出すことは、前記データブロックの前記アドレスへマッピングされたセグメントから前記データブロックを読み出すことを備える、請求項３に記載の方法。
【請求項５】
前記データブロックの前記アドレスが前記複数のセグメントのうちの１つにマッピングされていると決定することに応じて、前記コマンドを実行することは、前記データブロックを、前記複数のセグメントの前記１つに割り付けられている前記不揮発性記憶デバイスにおける物理的記憶場所に書き込むことを備える、請求項１に記載の方法。
【請求項６】
前記データブロックの前記アドレスは前記複数のセグメントのうちの１つにマッピングされていないと決定することに応じて、前記コマンドを実行することは、
前記コマンドの前記アドレス可能なスペースの中にある、隣接する複数のアドレスの複数の固有のセットのうちの１つに、前記セグメントのうちの１つをマッピングすることと、
前記複数のセグメントの１つに割り付けられる、前記不揮発性記憶デバイスにおける物理的記憶場所に前記データブロックを書き込むことと、
を備える、請求項１に記載の方法。
【請求項７】
前記不揮発性記憶デバイスにおける物理的記憶場所に前記データブロックを書き込むことは、前記複数のセグメントのうちの前記１つに前記物理的記憶場所を割り付けることを含む、請求項６に記載の方法。
【請求項８】
前記物理的記憶場所を割り付けることは、
不揮発性記憶デバイスにおいて利用可能である物理的記憶場所が不十分であると、決定することと、
キャッシュエビクションプロセスおよびガベージコレクションプロセスのうちの少なくとも１つを使用することによって、前記不揮発性記憶デバイスにおける利用可能な物理的記憶場所を生成することと、
を備える、請求項７に記載の方法。
【請求項９】
前記コマンドの前記アドレス可能なスペースにある、隣接する複数のアドレスの複数の固有のセットの各々が、前記複数のセグメントにどのようにマッピングされているのかを、前記マッピングが定義する、請求項１に記載の方法。
【請求項１０】
隣接する複数のアドレスの複数の固有のセットの各々は、セグメントの前記サイズと実質上等しいサイズを有している、請求項９に記載の方法。
【請求項１１】
前記セグメントへの、前記コマンドの前記アドレス可能なスペースの前記マッピングは、セグメントの数に基づいており、隣接する複数のアドレスの複数の固有のセットの数には基づいていない、請求項９に記載の方法。
【請求項１２】
前記複数のセグメントの前記サイズの合計は、前記不揮発性記憶デバイスのデータ記憶サイズより大きい、請求項１に記載の方法。
【請求項１３】
前記コマンドの前記アドレス可能なスペースは、前記不揮発性記憶デバイスの前記アドレス可能なスペースより実質上大きい、請求項１に記載の方法。
【請求項１４】
磁気記憶デバイスと、
不揮発性記憶デバイスと、
データブロックを読み出すコマンドに応じて、前記不揮発性記憶デバイスのアドレス可能なスペースから区分化され、互いに等しいサイズであって前記データブロックのサイズよりも大きいサイズを有する複数のセグメントへの、前記コマンドのアドレス可能であり前記データブロックのアドレスを含むスペースのマッピングを維持し、
前記データブロックの前記アドレスが前記複数のセグメントのうちの１つにマッピングされているかどうかに基づいて、前記データブロックを読み出す前記コマンドを実行するコントローラと、
を備える、データストレージデバイス。
【請求項１５】
前記コントローラはさらに、
前記データブロックの前記アドレスが前記複数のセグメントのうちの１つにマッピングされていないと決定することに応じて、前記磁気記憶デバイスから前記データブロックを読み出すことによって前記読みだしコマンドを実行するように、そして、前記データブロックの前記アドレスが前記複数のセグメントのうちの１つにマッピングされていると決定することに応じて、前記不揮発性記憶デバイスから前記データブロックを読み出すことによって前記データブロックを読み出すコマンドを実行するように、
構成されている、請求項１４に記載のデータストレージデバイス。
【請求項１６】
前記コマンドの前記アドレス可能なスペースにある、隣接する複数のアドレスの複数の固有のセットの各々が、前記複数のセグメントにどのようにマッピングされているのかを、前記マッピングが定義する、請求項１４に記載のデータストレージデバイス。
【請求項１７】
隣接する複数のアドレスの複数の固有のセットの各々は、セグメントの前記サイズと実質上等しいサイズを有している、請求項１６に記載のデータストレージデバイス。
【請求項１８】
磁気記憶デバイスと、
不揮発性記憶デバイスと、
データブロックを書き込むコマンドに応じて、前記不揮発性記憶デバイスのアドレス可能なスペースから区分化され、互いに等しいサイズであって前記データブロックのサイズよりも大きいサイズを有する複数のセグメントへの、前記コマンドのアドレス可能であり前記データブロックのアドレスを含むスペースのマッピングを維持し、
前記データブロックの前記アドレスが前記複数のセグメントのうちの１つにマッピングされているかどうかに基づいて、前記データブロックを書き込む前記コマンドを実行するコントローラと、
を備える、データストレージデバイス。
【請求項１９】
前記コントローラはさらに、
前記データブロックの前記アドレスが前記複数のセグメントのうちの１つにマッピングされていると決定することに応じて、前記複数のセグメントのうちの１つに割り付けられる前記不揮発性記憶デバイスにおける物理的記憶場所に前記データブロックを書き込むことによって、前記データブロックを書き込む前記コマンドを実行するように、
構成されている、請求項１８に記載のデータストレージデバイス。
【請求項２０】
前記コントローラはさらに、
前記データブロックの前記アドレスが前記複数のセグメントのうちの１つにマッピングされていないと決定することに応じて、
前記コマンドの前記アドレス可能なスペースにある、隣接する複数のアドレスの複数の固有のセットのうちの１つに、前記複数のセグメントのうちの１つをマッピングすること、および
前記複数のセグメントのうちの前記１つに割り付けられる、前記不揮発性記憶デバイスにおける物理的記憶場所に、前記データブロックを書き込むことによって、
前記データブロックを書き込む前記コマンドを実行する、
ように構成されている、請求項１８に記載のデータストレージデバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、ディスクドライブの中にデータを保存するためのデータストレージユニット、システム、および方法に関係する。
【背景技術】
【０００２】
ハードディスクドライブは、コンピュータおよび他の電子デバイスのための一般に使用されるデータストレージデバイスであり、主に、データストレージディスクの表面上の同心トラックにおけるデジタルデータを保存する。データストレージディスクは磁性体層を備えた回転可能なハードディスクであり、データは、リード／ライトヘッドを用いて、データストレージディスク上の所望のトラックから読み出され、あるいは、所望のトラックへ書き込まれるが、リード／ライトヘッドは、ディスクが一定の角速度でその中心のまわりを回っている間に、トラックに最も近く保持される。データは、ホストコンピュータからハードディスクドライブに転送された読み出し書き込みコマンドに従って、データストレージディスクから読み出され、データストレージディスクに書き込まれる。
【０００３】
一般に、ハードディスクドライブは、選択された情報の一時的な保存のために、例えば小さいランダムアクセスメモリなどの、データバッファを含んでいる。そのようなデータバッファは、ホストコンピュータから受け取られた読み出しおよび書き込みコマンドを保存するために一般に使用されるので、コマンドは、受け取られた順序で各コマンドを処理するよりも一層速くドライブによって処理されることができる順序に、配置されることができる。さらに、データバッファは、ホストコンピュータによって最も頻繁に、および／または、最も最近に(most recently)使用されているデータをキャッシュに入れるために使用されることができる。何れのケースにおいても、データバッファのサイズが大きければ大きいほど、ディスクドライブのパーフォーマンスが改善される。しかしながら、コストおよび他の制約により、ハードディスクドライブ用のデータバッファの記憶容量は、関連するハードディスクドライブの記憶容量と比較して、概して非常に小さい。例えば、１ＴＢのハードディスクドライブは、８あるいは１６ＭＢの記憶容量を有するＤＲＡＭデータバッファを含み得るが、それは、ハードディスクストレージキャパシティの１パーセントの１０００分の１のオーダ(on the order of a thousandth of a percent of the hard disk storage capacity)である。
【０００４】
例えばＮＡＮＤフラッシュのようなかなり大きい(sizable)不揮発性ソリッドステートメモリと結合した磁気メディアを含んでいるハイブリッドドライブの出現によって、非常に大きなキャッシュとして不揮発性ソリッドステートメモリを利用することが可能である。ハイブリッドドライブにおける不揮発性ソリッドステートメモリは、磁気メディアの記憶容量の１０％以上の記憶容量を有することができ、そして、潜在的に、大量のキャッシュに入れられたデータおよび再順序付けされた読み出しおよび書き込みコマンドを保存するために使用されることができるので、これによって、ディスクドライブのパーフォーマンスを大きく増加させる。
【０００５】
残念ながら、データをキャッシュに入れるための(for caching data)従来の技術は、そのような大容量のストレージボリュームまで容易に拡張されていない。例えば、１ＴＢハードディスクドライブストレージスペースの各論理ブロックアドレスもまた、不揮発性ソリッドステートメモリの中に保存されているかどうか、そして、それらが、不揮発性ソリッドステートメモリにおけるどの物理的な場所に保存されているかを追跡するためにテーブルを使用することは、ハードディスクドライブ用の非実用的に大きなＤＲＡＭバッファーを必要とする。更に、該テーブルが、ハードディスクドライブによって受け取られた各読み出しあるいは書き込みコマンドについて調べられるので、そのようなテーブルの使用は、結果として、ハードディスクドライブのオペレーションにおいて非実用的に時間を消費するオーバヘッドをもたらす。従って、ハイブリッドドライブにおけるメモリキャッシュとして不揮発性ソリッドステートメモリの使用を容易にするシステムおよび方法が、一般に望ましい。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】米国特許出願公開第２０１０／０１５３６４６号明細書
【特許文献２】米国特許出願公開第２０１２／０１３７０６１号明細書
【特許文献３】米国特許出願公開第２０１２／０１４４０９９号明細書
【特許文献４】米国特許出願公開第２０１２／０１６６８９１号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００７】
本発明の目的は、磁気記憶メディアおよび不揮発性ソリッドステートデバイスを含んでいるデータストレージデバイスにおいて、磁気記憶メディアのためのメモリキャッシュとして不揮発性ソリッドステートデバイスの使用を容易にするためのシステムおよび方法を提供することである。
【課題を解決するための手段】
【０００８】
実施形態によれば、データブロックを読み出す又は書き込むコマンドに応じて、不揮発性記憶デバイスおよび磁気記憶デバイスを含むデータストレージデバイス上でオペレーションを実行する方法は、
前記不揮発性記憶デバイスのアドレス可能なスペースから区分化され、互いに等しいサイズであって前記データブロックのサイズよりも大きいサイズを有する複数のセグメントへの、前記コマンドのアドレス可能であり前記データブロックのアドレスを含むスペースのマッピングを維持することと、
前記コマンドに含まれる前記データブロックの前記アドレスが前記複数のセグメントのうちの１つにマッピングされているかどうかを、前記マッピングから決定することと、
前記決定することに基づいて前記コマンドを実行することと、
を備える。
【図面の簡単な説明】
【０００９】
【図１】図１は、一実施形態による例示的なディスクドライブの略図である。
【図２】図２は、一実施形態により構成された、示された電子回路のエレメントを備えたディスクドライブの動作線図を図示する。
【図３】図３は、いくつかの実施形態による、マッピング構造の概念図である。
【図４】図４は、いくつかの実施形態による、キャッシュエントリとフラッシュメモリデバイスにおける物理アドレスとの間の論理対物理のマッピング機能の図表である。
【図５】図５は、１つ以上の実施形態によるハイブリッドドライブにおけるデータ保存あるいは検索のための方法ステップのフローチャートを示す。
【発明を実施するための形態】
【００１０】
上記に列挙された実施形態の特徴が詳細に理解されることができる方法で、上記に簡潔に要約された様々な実施形態のより具体的な説明が、添付された図面を参照することによりされることができる。しかしながら、本発明は、他の同等に効果的な実施形態に対しても適用できるため、添付された図面は典型的な実施形態のみを示しており、したがって、それらは特許請求の範囲を制限するものと見なされるべきでない、ということに留意されるべきである。
【００１１】
明確にするために、図間で共通な同一のエレメントを示すために、適用可能な同一の参照番号が使用されている。一実施形態の特徴が他の実施形態に組み込まれることができるということが、更なる説明無しに意図されている。
【００１２】
図１は、一実施形態による例示的なディスクドライブの略図である。明確にするために、ハイブリッドドライブ１００は、上部カバー無しで図示されている。ハイブリッドドライブ１００は、少なくとも１枚のストレージディスク１１０を含んでおり、ストレージディスク１１０は、スピンドルモータ１１４によって回転し、複数の同心データストレージトラック を含んでいる。スピンドルモータ１１４は、ベースプレート１１６上にマウントされている。アクチュエータアームアセンブリ１２０もまた、ベースプレート１１６上にマウントされ、データをデータストレージトラックから読み出し、データストレージトラックへ書き込むリード／ライトヘッド１２７を備えて、屈曲アーム１２２にマウントされたスライダ１２１有する。屈曲アーム１２２は、ベアリングアセンブリ１２６を中心に回転するアクチュエータアーム１２４に付けられている。ボイスコイルモータ１２８は、ストレージディスク１１０に対してスライダ１２１を動かし、それによって、ストレージディスク１１０の表面１１２に配置された所望の同心データストレージトラック上にリード／ライトヘッド１２７を位置づける。スピンドルモータ１１４、リード／ライトヘッド１２７、およびボイスコイルモータ１２８は、プリント基板１３２にマウントされている電子回路１３０に結合されている。電子回路１３０は、リード／ライトチャネル、マイクロプロセッサをベースにしているコントローラ１３３、ランダムアクセスメモリ（ＲＡＭ）１３４（それはダイナミックＲＡＭであってもよく、データバッファとして使用される）、および、フラッシュメモリデバイス１３５およびフラッシュマネージャデバイス１３６を含む。いくつかの実施形態では、リード／ライトチャネル１３７およびマイクロプロセッサをベースにしているコントローラ１３３は、例えばシステムオンチップ１３１のような、シングルチップに含まれている。いくつかの実施形態では、ハイブリッドドライブ１００はさらに、モータドライバチップ１２５を含むことができ、それは、マイクロプロセッサをベースにしているコントローラ１３３からコマンドを受け入れ、スピンドルモータ１１４およびボイスコイルモータ１２８の両方をドライブする。明確にするために、ハイブリッドドライブ１００は、単一のストレージディスク１１０および単一のアクチュエータアームアセンブリ１２０を用いて図示されている。ハイブリッドドライブ１００はまた、多数のストレージディスクおよび多数のアクチュエータアームアセンブリを含んでいてもよい。さらに、ストレージディスク１１０の各サイドは、屈曲アームに結合された関連のリード／ライトヘッドを有することができる。
【００１３】
データが、ストレージディスク１１０に、あるいはストレージディスクから転送されるとき、アクチュエータアームアセンブリ１２０は、ストレージディスク１１０の内径（ＩＤ）と外径（ＯＤ）との間で弧を描くように動く。アクチュエータアームアセンブリ１２０は、電流がボイスコイルモータ１２８のボイスコイルを通して一方向に流れるとき、一角方向に加速し、電流が逆のとき、反対方向に加速し、そうすることによって、ストレージディスク１１０に関してアクチュエータアームアセンブリ１２０および付けられたリード／ライトヘッド１２７の位置の制御を可能にする。ボイスコイルモータ１２８は、当技術において知られているサーボシステムと結合されており、サーボシステムは、特定のデータストレージトラック上でリード／ライトヘッド１２７の位置を決定するために、リード／ライトヘッド１２７によってストレージディスク１１０上でサーボウエッジから読み出されたポジショニングデータを使用する。サーボシステムは、ボイスコイルモータ１２８のボイスコイルを通ってドライブするために適切な電流を決定し、現在のドライバおよび関連する回路を使用して該電流をドライブする。
【００１４】
ハイブリッドドライブ１００は、ハイブリッドドライブとして構成されており、その中で、不揮発性データの保存が、ストレージディスク１１０、およびフラッシュメモリデバイス１３５を使用して実行されることができる、なお、フラッシュメモリデバイスは、不揮発性ソリッドステートメモリデバイスである。ハイブリッドドライブにおいて、例えばフラッシュメモリデバイス１３５のような不揮発性ソリッドステートメモリは、低電力消費のみならず、高速の起動、ハイバネーション、レジューム、および他のデータリード−ライトオペレーションを提供するように、高速回転ストレージディスク１１０を補完する。このようなハイブリッドドライブ構成は、例えばモバイルコンピュータあるいは他のモバイルコンピューティングデバイスのような、バッテリで動作するコンピュータシステムには特に利点がある。
【００１５】
いくつかの実施形態では、フラッシュメモリデバイス１３５は、例えば、電気的に消去され再プログラムされることができるＮＡＮＤフラッシュチップのような、不揮発性ソリッドステートストレージメディアであり、不揮発性記憶媒体としてハイブリッドドライブ１００におけるストレージディスク１１０を補完する大きさに作られる。例えば、いくつかの実施形態では、フラッシュメモリデバイス１３５は、ＲＡＭ１３４よりも大きいオーダのデータストレージキャパシティ、例えば、ギガバイト（ＧＢ）対メガバイト（ＭＢ）、を有している。従って、フラッシュメモリデバイス１３５は、ハイブリッドドライブ１００に関連したホスト装置によって最も最近に、および／または、最も頻繁に使用された非常に多くの量のデータをキャッシュに入れるために使用されることができる。
【００１６】
図２は、一実施形態により構成された、示された電子回路１３０のエレメントを備えたハイブリッドドライブ１００の動作線図を図示する。示されるように、ハイブリッドドライブ１００は、ＲＡＭ１３４、フラッシュメモリデバイス１３５、フラッシュマネージャデバイス１３６、システムオンチップ１３１、モータドライバチップ１２５、および高速データパス１３８を含んでいる。ハイブリッドドライブ１００は、例えばシリアルＡＴＡ（ＳＡＴＡ）バスのような、ホストインターフェース２０を経由して、例えばホストコンピュータのような、ホスト１０に接続されている。
【００１７】
図２において図示された実施形態では、フラッシュマネージャデバイス１３６は、高速データパス１３８とのフラッシュメモリデバイス１３５のインターフェースを制御し、ＮＡＮＤインターフェースバス１３９を経由してフラッシュメモリデバイス１３５に接続されている。システムオンチップ１３１は、ハイブリッドドライブ１００のオペレーションを制御するために、マイクロプロセッサをベースにしているコントローラ１３３、および他のハードウェア（リード／ライトチャネル１３７を含む）を含んでおり、高速データパス１３８経由でＲＡＭ１３４およびフラッシュマネージャデバイス１３６に接続されている。マイクロプロセッサをベースにしているコントローラ１３３は、例えばＡＲＭマイクロプロセッサなどのようなマイクロコントローラ、ハイブリッドドライブコントローラ、およびハイブリッドドライブ１００内の任意の制御回路を含むことができるコントロールユニットである。高速データパス１３８は、当技術において知られている高速バス、例えば、ダブルデータレート（ＤＤＲ）バス、ＤＤＲ２バス、ＤＤＲ３バス、あるいは同等のものである。
【００１８】
一般に、例えばディスクドライブのような、磁気記憶媒体を備えたデータストレージデバイスは、磁気記憶媒体の記憶容量と比較して比較的小さな、すなわち磁気媒体のほんのわずかなオーダの、記憶容量を有するデータバッファを含んでいる。ディスクドライブによって受け取られた書き込みコマンドを保存することに加えて、データバッファは、ドライブに関連したホスト装置によって最も最近におよび／または最も頻繁に使用されているデータをキャッシュに入れるために使用されることもできる。ホスト装置がドライブにおける特定のデータブロックへのアクセスを要求するとき、より大きなメモリキャッシュを有して「キャッシュミス」の可能性を低減し、そこでは、データバッファから要求されたデータを直接提供するというよりは寧ろ、磁気媒体からデータを検索するよりも一層多くの時間を必要とするプロセスが使用されるに違いない。いくつかの実施形態によれば、例えばハイブリッドドライブ１００におけるフラッシュメモリデバイス１３５、のような、集積された不揮発性ソリッドステートメモリは、非常に大きなデータバッファとして使用するために構成されている。フラッシュメモリデバイス１３５は、ＲＡＭ１３４の記憶容量の何百あるいは何千回倍の記憶容量を有することができるので、さらに多くのキャッシュエントリが利用可能であり、キャッシュミスは発生する可能性がさらに少なく、ハイブリッドドライブ１００のパーフォーマンスは大幅に増加される。
【００１９】
様々な実施形態によれば、フラッシュメモリデバイス１３５が読み出しコマンドおよび書き込みコマンドの両方のデータをキャッシュに入れるために使用される場合、ハイブリッドドライブ１００によって受け取られた読み出しあるいは書き込みコマンドがフラッシュメモリデバイス１３５においてキャッシュに入れられるデータのデータ保存場所を対象としているかどうかに関する決定が速く行なわれることを可能とする方法で、フラッシュメモリデバイス１３５においてキャッシュに入れられたデータは、追跡される。具体的には、フラッシュメモリデバイス１３５のアドレス可能なスペースは、複数の等しいサイズの論理的なセグメントへ区分化され、そこでは、各論理的なセグメントは、多数の論理的なブロック、例えば３２の論理的なブロック、６４の論理的なブロック、１２８の論理的なブロックなど、を含んでいる。更に、ストレージディスク１１０のアドレス可能なユーザスペースは、読み出しコマンドあるいは書き込みコマンドのアドレス可能なスペースを表わしており、隣接する複数のアドレスの複数の等しいサイズのセットに同様に区分化され、隣接する複数のアドレスの各セットは、フラッシュメモリデバイス１３５の論理的なセグメントと同じサイズを有している。隣接する複数のアドレスの複数のセットのうちの１つに関連したデータが、フラッシュメモリデバイス１３５の中に保存される場合、フラッシュメモリデバイス１３５における物理的記憶場所は該データに割り付けられ、また、隣接する複数のアドレスのセットはフラッシュメモリデバイス１３５における特定の論理的なセグメントにマッピングされる。このようにして、特定の論理的なブロックアドレス（ＬＢＡ）、例えば書き込みコマンドに含まれたＬＢＡなどが、フラッシュメモリデバイス１３５の中に保存された対応するコンテンツを有するかどうかについて、速く決定されることができる。
【００２０】
図３は、いくつかの実施形態による、マッピング構造３００の概念図である。マッピング構造３００は、ユーザＬＢＡスペース３２０、およびフラッシュメモリスペース３３０を含んでいる。ユーザＬＢＡスペース３２０およびフラッシュメモリスペース３３０は、各々アドレス可能な論理的なスペースであり、ユーザＬＢＡスペース３２０はストレージディスク１１０に関連したＬＢＡｓに対応し、フラッシュメモリスペース３３０はフラッシュメモリデバイス１３５に関連した論理的なストレージスペースに対応する。示されるように、ユーザＬＢＡスペース３２０およびフラッシュメモリスペース３３０は、各々論理的な複数のサブユニットに区分化されており、これらは、下記に説明される。
【００２１】
ユーザＬＢＡスペース３２０は、ハイブリッドドライブ１００のアドレス可能なユーザスペースを含んでおり、Ｎの数の等しいサイズの論理的なサブユニットあるいはセグメントに区分化されており、それらは、隣接する複数のアドレスの複数のセットであり、ここでは、キャッシュページ３２１と呼ばれる。このように、ユーザＬＢＡスペース３２０における複数のキャッシュページ３２１の各々は、ハイブリッドドライブ１００のユーザスペースに関連した隣接する複数のＬＢＡｓの１セットを含んでおり、各キャッシュページ３２１は同じ論理的なサイズを有し、すなわち、同じ数のＬＢＡｓを含んでいる。更に、フラッシュメモリデバイス１３５の中に保存されることができる対応するデータとともにストレージディスク１１０上に保存されたデータのマッピングを容易にするために、複数のキャッシュページ３２１の各々の論理的なサイズもまた、フラッシュメモリスペース３３０が区分化される論理的な複数のサブユニットの論理的なサイズと等しく、それらは、ここにおいて、キャッシュエントリ３３１と呼ばれる。
【００２２】
一般に、ユーザＬＢＡスペース３２０におけるＬＢＡｓとキャッシュページ３２１との間には、固定の関係がある。言いかえれば、特定のＬＢＡは、ハイブリッドドライブ１００のオペレーションの間、同じキャッシュページ３２１に関連付けられている。いくつかの実施形態では、インプリメンテーションを簡単にするために、ユーザＬＢＡスペース３２０の各ＬＢＡは、アルゴリズム的に、特定のキャッシュページ３２１に関連付けられる。したがって、特定のＬＢＡが関連するキャッシュページ３２１を決定するためにユーザＬＢＡスペース３２０におけるすべてのＬＢＡｓのテーブルを調べることよりは、寧ろ、そのような決定を速くするためにアルゴリズムが使用されることができる。例えば、各キャッシュページ３２１が６４のＬＢＡｓを含むマッピング構造３００の実施形態では、特定のＬＢＡについての適切なキャッシュページ３２１は、当該ＬＢＡに関連するアドレス値を６４で割ることによって決定されることができ、商は適切なキャッシュページ３２１の数を示す。他のアルゴリズム的プロセスもまた、発明の範囲を超えることなく、ユーザＬＢＡスペース３２０におけるＬＢＡｓと複数のキャッシュページ３２１との関係を決定するために使用されることができる。
【００２３】
フラッシュメモリスペース３３０は、フラッシュメモリデバイス１３５のアドレス可能なユーザスペースを含み、Ｍの数の等しいサイズの論理的なサブユニットに区分化されており、ここにおいては、キャッシュエントリ３３１と呼ばれる。フラッシュメモリスペース３３０における複数のキャッシュエントリ３３１の各々は、複数のキャッシュページ３２１の各々と同じ論理的なサイズを有しており、すなわち、複数のキャッシュエントリ３３１の各々は、複数のキャッシュページ３２１の１つと同じ数のＬＢＡｓを含むように構成されている。複数のキャッシュページ３２１と異なり、複数のキャッシュエントリ３３１は、隣接する複数のＬＢＡｓの固定セットに永久的に関連付けられない。代わりに、特定のキャッシュエントリ３３１は、いつでも、キャッシュページ３２１の任意の１つにマッピングされることができる。したがって、異なるキャッシュページ３２１がキャッシュエントリ３３１にマッピングされるとき、異なるグループの複数のＬＢＡｓが、キャッシュエントリ３３１に関連付けられる。
【００２４】
ハイブリッドドライブ１００のオペレーションの間、データが他のデータと比較して非常に稀にしかホスト１０によって使用されないために、データはフラッシュメモリデバイス１３５から立ち退かされる(are evicted)ので、そのような立ち退かされたデータと関連するキャッシュページ３２１は、キャッシュエントリ３３１からアンマッピングされ(unmapped)、その結果、異なるキャッシュページ３２１がキャッシュエントリ３３１にマッピングされることができる。
【００２５】
一般に、複数のキャッシュページ３２１および複数のキャッシュエントリ３３１の各々は、多数のＬＢＡｓ、例えば３２のＬＢＡｓ、６４のＬＢＡｓ、１２８のＬＢＡｓ、あるいはそれ以上を含む。従って、ＬＢＡスペース３２０を複数のキャッシュページ３２１へと区分化することは、ＬＢＡスペース３２０の個々のＬＢＡｓより大きな複数のサブユニットを使用して、ハイブリッドドライブ１００の論理的なキャパシティを実質的に再列挙する。様々な実施形態によれば、フラッシュメモリデバイス１３５に保存されたデータのマッピングが、複数のキャッシュページ３２１および複数のキャッシュエントリ３３１を使用して行なわれるので、ストレージディスク１１０のユーザＬＢＡスペース３２０における各ＬＢＡがフラッシュメモリデバイス１３５の中でキャッシュに入れられた対応するコピーを有しているかどうかを追跡するよりも、非常に少ないＲＡＭ１３４を使用して、非常に速く、フラッシュメモリデバイス１３５においてどんなＬＢＡｓが保存されているのかの追跡がおこなわれることができる。
【００２６】
理論上、複数のキャッシュページ３２１および複数のキャッシュエントリ３３１のサイズが単一のＬＢＡと同じくらい小さくあり得ることに、注目される。実際には、しかしながら、各キャッシュページ３２１および各キャッシュエントリ３３１が比較的多くの数のＬＢＡｓを含んでいる場合に、複数のキャッシュページ３２１および複数のキャッシュエントリ３３１を使用して、フラッシュメモリデバイス１３５の中に保存されたデータをマッピングする利点は、大きく高められる。更に、各キャッシュページ３２１の中に含まれるＬＢＡｓの数が２の倍数である、すなわち、３２、６４、１２８等の場合に、対象となっている特定のＬＢＡがどのキャッシュページ３２１に含まれるのかを決定することは、非常に単純化される。
【００２７】
フラッシュメモリデバイス１３５の論理的なキャパシティが、ストレージディスク１１０の論理的なキャパシティよりも、一般に、はるかに小さいので、フラッシュメモリスペース３３０における複数のキャッシュエントリ３３１の数Ｍは、ユーザＬＢＡスペース３２０における複数のキャッシュページ３２１の数Ｎよりも、一般に、はるかに小さい。例えば、ストレージディスク１１０の論理的なキャパシティは、１ＴＢのオーダであり得るが、一方、フラッシュメモリデバイス１３５の論理的なキャパシティは、数１０あるいは数１００のオーダのＧＢであり得る。それ故、フラッシュメモリデバイス１３５は、ストレージディスク１１０上に保存されるデータの一部分のみをキャッシュに入れることができる。従って、フラッシュメモリデバイス１３５においてキャッシュに入れられたデータがホスト１０によって要求される可能性が最も高いように、フラッシュメモリデバイス１３５においてどのデータがキャッシュに入れられるのか、そして、どのデータが立ち退かされるのかを選択するために、当該技術において知られた１つ以上のキャッシュ置換アルゴリズムが利用されることができる。例えば、いくつかの実施形態では、フラッシュメモリデバイス１３５においてキャッシュに入れられたデータの新しさおよび頻度の両方が追跡され、最も古い、および／または、最も少ない頻度で使用されたデータが立ち退かされ、より新しいデータあるいはホスト１０によってより頻繁に使用されるデータと置き換えられる。上記に述べたように、適切なキャッシュエントリ３３１から立ち退かされるデータに関連した特定のキャッシュページ３２１をアンマッピングすることによって、データはフラッシュメモリデバイス１３５から立ち退かされる。
【００２８】
いくつかの実施形態では、複数のキャッシュページ３２１と複数のキャッシュエントリ３３１との間のマッピング機能は、ユーザＬＢＡスペース３２０におけるどのＬＢＡｓがフラッシュメモリデバイス１３５の中に保存されるのかを効率的に追跡するために使用される。フラッシュメモリデバイス１３５の中に保存され、ユーザＬＢＡスペース３２０における特定のＬＢＡに関連したデータは、その特定のＬＢＡに関連した唯一のデータであるかもしれず、あるいは、ＬＢＡに関連し、ストレージディスク１１０上に保存されたデータのキャッシュに入れられたコピーであるかもしれない、ということに注意を要する。いずれのケースにおいても、適切なデータ管理の場合は、複数のキャッシュページ３２１と複数のキャッシュエントリ３３１との間のマッピング機能は、ユーザＬＢＡスペース３２０における任意のＬＢＡについて、フラッシュメモリデバイス１３５の中に保存されたＬＢＡに関連した有効なデータが存在するかどうか明白に示す。いくつかの実施形態では、マッピング機能は、フラッシュメモリスペース３３０における複数のキャッシュエントリ３３１の数に基づいており、ユーザＬＢＡスペース３２０における複数のキャッシュページ３２１の数には基づいていない。このような方法で、特定のＬＢＡが、フラッシュメモリデバイス１３５の中に保存された対応するデータを有しているかどうかを決定することが、速く決定されることができる。
【００２９】
いくつかの実施形態によれば、複数のキャッシュページ３２１と複数のキャッシュエントリ３３１との間のマッピング機能について、Ｂ＋ツリー(B+ tree)あるいは同様のデータ構造が、使用されることができる。Ｂ＋ツリーデータ構造は、非常に高いファンアウトを備えた二分探索木であり、ブロック指向のデバイスにおけるストレージに適しており、現代のマイクロプロセッサで利用可能なシンクロナスダイナミックランダムアクセスメモリ（ＳＤＲＡＭ）ラインキャッシュと共に使用されるときにもまた効率的である。Ｂ＋ツリー（あるいは任意の２分木）の探索は、Ｏ（ログ（ｎ））オペレーションであり、それは、探索に要求されるオペレーションの数が複数のキャッシュエントリ３３１の数のログでのみ増大することを意味する。フラッシュメモリデバイス１３５が多数のキャッシュエントリ３３１を含んでいる場合、これは非常に有益である。５０万のキャッシュエントリ３３１であれば、Ｂ＋ツリーは、探索がヒットあるいはミスの結果となるのかどうか、キャッシュページ３２１について探索するために約５ノードについてのみ調査する必要がある。各「ノードコンサルテーション」は、約６つのテーブルルックアップと同等であり、したがって、Ｂ＋ツリーは、複数のエントリ３３１をキャッシュに入れるために複数のキャッシュページ３２１の単純な表のマッピングを探索するために必要とされる２５万から５０万の一のオペレーションの代わりに、約３０のオペレーションにおいて答えを得る。複数のエントリ３３１をキャッシュに入れるために複数のキャッシュページ３２１のマッピングを構築するためのデータ構造は、典型的に大きすぎるので、ＲＡＭ１３４の中の利用可能なＳＤＲＡＭに完全には適合しないので、フルのデータ構造がフラッシュメモリデバイス１３５に保存されることができ、一方、Ｂ＋ツリーの最も最近にアクセスされたノードのみがＳＤＲＡＭの中でキャッシュに入れられる。あるいは、ハッシュ機能が、複数のエントリ３３１をキャッシュに入れるために複数のキャッシュページ３２１のマッピングを構築するために使用されることが出来る。ハッシュを探索することは、一般にＯ（１）オペレーションであり、これは、探索に要求されるオペレーションの数が複数のキャッシュエントリ３３１の数に非依存であることを意味する。
【００３０】
上記に述べたように、いくつかの実施形態によれば、論理対物理のマッピング機能は、各キャッシュエントリ３３１をフラッシュメモリデバイス１３５における物理的な場所（「物理アドレス」とも呼ばれる）に関連付けるために使用される。この論理対物理のマッピング機能は、論理的なエントリ、すなわちキャッシュエントリ３３１から、フラッシュメモリデバイス１３５における物理アドレスあるいは複数の物理アドレスへのマッピングを提供し、この物理アドレスあるいは複数の物理アドレスは、キャッシュエントリ３３１に関連づけられており、キャッシュエントリ３３１に関連したデータを保存するために使用される。最新のソリッドステートメモリ、特にＮＡＮＤは、書き込み前の消去の要件を有しているので、既存のデータは、所定の位置において、すなわち、同じ物理的な場所において、新しいバージョンのデータで上書きされない。このように、いくつかの実施形態によれば、論理対物理のマッピング機能は、新しいデータがフラッシュメモリデバイス１３５に書き込まれるときに更新されるように構成されている。
【００３１】
図４は、いくつかの実施形態による、複数のキャッシュエントリ３３１とフラッシュメモリデバイス１３５における複数の物理アドレスとの間の論理対物理のマッピング機能の図表である。論理対物理のマッピング機能５００は、図４と連動して、表のフォーマットの観点から記述されているが、任意の他の適切なデータ構造が、発明の範囲を超えることなく、フラッシュメモリデバイス１３５における複数の物理アドレスに対して複数のキャッシュエントリ３３１をマッピングするために使用されることができる。
【００３２】
いくつかの実施形態では、書き込み可能なユニットサイズ（一般に「ページサイズ」と呼ばれる）が、キャッシュエントリ３３１のサイズ以上ある場合、マッピング機能５００は、特定のキャッシュエントリ３３１についてのフラッシュメモリデバイス１３５における単一の物理アドレスを戻す。他の実施形態では、マッピング機能５００は、フラッシュメモリデバイス１３５の書き込み可能なユニットサイズがキャッシュエントリ３３１のサイズより小さい場合に、複数の物理アドレスを戻すように構成されることができる。そのような実施形態では、特定のキャッシュエントリ３３１の一部分が読み出される、あるいは、書き込まれることができる。図４において図示された実施形態では、複数のキャッシュページ３２１の１つにマッピングされ、フラッシュメモリデバイス１３５の中に保存されたデータに関連している各キャッシュエントリ３３１に対して複数の物理アドレスを示すように、マッピング機能５００が構成されている。
【００３３】
明確にするために、図４では、４つの物理アドレスが、複数のＭキャッシュエントリ３３１の各々にマッピングされており、各物理アドレスは、例えば５１２バイトのセクタのような、ＬＢＡに関連づけられた１ユニットのデータに対応することができる。したがって、このような実施形態においては、最大２ｋＢまでのデータが、各キャッシュエントリ３３１に関連付けられている。実際には、Ｍのキャッシュエントリ３３１の各々へマッピングされた多くの数の物理アドレスを有することが、より有益である。例えば、６４の物理アドレスが、キャッシュエントリ３３１へマッピングされる場合、各物理アドレスは５１２バイトのセクタに対応し、各キャッシュエントリはそれに関連した最大３２ｋＢまで有することができる。更に、いくつかの実施形態では、単一のＬＢＡよりも多くが、特定のキャッシュエントリ３３１へマッピングされた複数の物理アドレスの各々に関連付けられることができる。例えば、３２ｋＢのデータである、６４ＬＢＡに適合するようなサイズのキャッシュエントリについては、フラッシュメモリデバイス１３５のマッピングユニット（一般にＮＡＮＤページサイズあるいはＮＡＮＤページサイズの倍数）がサイズで８ｋＢである場合、そのときは、４つの物理アドレスが各キャッシュエントリに関連づけられる。
【００３４】
示されるように、論理対物理のマッピング機能５００は、フラッシュメモリデバイス１３５におけるＭのキャッシュエントリ３３１の各々に対応する、コラム５０１のエントリを含んでいる。各キャッシュエントリ３３１について、論理対物理のマッピング機能５００はさらに、コラム５０２のキャッシュページエントリ、および１つ以上の物理アドレス（コラム５０５−５０８において追跡される）を含んでおり、この１つ以上の物理アドレスには、与えられたキャッシュエントリ３３１へマッピングされた１つ以上のＬＢＡｓに関連付するデータが保存されている。論理対物理のマッピング機能５００はさらに、ノットオンメディアビット(not-on-media bit)（コラム５０３で追跡される）および有効性ビットマップ（コラム５０４で追跡される）を含んでいる。
【００３５】
図４において図示された実施形態では、単一のノットオンメディアビットがあり、それは、フラッシュメモリデバイス１３５の中のデータのダーティネスを反映する。特定のキャッシュエントリ３３１の任意のデータの最も最近のバージョンが、フラッシュメモリデバイス１３５の中にあるが、ストレージディスク１１０上にはない場合、そのとき、コラム５０３のノットオンメディアビットはセットされる。さらに、コラム５０４の有効性ビットマップは、特定のキャッシュエントリ３３１におけるどのＬＢＡｓがフラッシュメモリデバイス１３５において有効データを有するのかを示す。対応するキャッシュエントリ３３１における各ＬＢＡについて、有効性ビットマップの中にビットが存在する。図４において図示された実施形態では、４つのＬＢＡが各キャッシュエントリ３３１に関連付けられている。各キャッシュエントリ３３１がそれぞれ６４のＬＢＡｓにマッピングされることができ、したがって、３２ｋＢのデータを含むことができる実施形態では、コラム５０４の有効性ビットマップは、６４ビットを含むことができる。いくつかの実施形態では、簡単にするために、コラム５０４の有効性ビットマップにおける各ビットは、５１２Ｂ  ＬＢＡより大きいデータのユニットに関連付けられてもよい。例えば、いくつかの実施形態では、有効性ビットマップにおける各ビットは、データの４ｋＢブロックのデータに関連付けられることができる。
【００３６】
図４において図示された実施形態では、最大４つまでの物理アドレスが、特定のキャッシュエントリ３３１に関連付けられることができ、したがって、論理対物理のマッピング機能５００は、フラッシュメモリデバイス１３５における関連した物理アドレスを保存するためのコラム５０５、５０６、５０７、および５０８を含んでいる。例えば、使用されるフラッシュメモリデバイス１３５の２つの物理アドレス、すなわち、コラム５０５のアドレス００１００、およびコラム５０６のアドレス００１５０について、エントリ１をキャッシュに入れるために、十分なＬＢＡｓがマッピングされる。キャッシュエントリ１について、さらなる物理アドレスは利用されず、したがって、コラム５０７とコラム５０８は、それに関連したヌル値を有する。キャッシュエントリ２のケースでは、使用されるすべての可能性のある物理アドレス、すなわち、アドレス００２０１、００２０２、００２０３、および００３００について、十分なＬＢＡｓがエントリ２をキャッシュに入れるためにマッピングされ、したがって、すべての４つのコラム５０５−５０８は、物理アドレスエントリを含んでいる。任意の特定のキャッシュエントリ３３１について、それに関連する複数の物理アドレスは、フラッシュメモリデバイス１３５の中の必ずしも隣接する物理アドレスではないことに、注意を要する。
【００３７】
いくつかの実施形態では、フラッシュメモリデバイス１３５のすべてのキャッシュエントリ３３１の論理的な記憶容量の合計は、フラッシュメモリデバイス１３５の合計のデータ保存サイズよりも大きい。図４において、キャッシュエントリ１について示されるように、キャッシュエントリ３３１の一部分は、典型的に、データを保存するために必ずしもすべての利用可能な物理的な場所を必要とはしない。従って、フラッシュメモリデバイス１３５は、フラッシュメモリデバイス１３５の合計のデータ保存サイズよりもより多い、それに関連したキャッシュエントリ３３１を有することができる。このようにして、より多くのキャッシュエントリ３３１が、任意の特定な時間において、複数のページ３２１をキャッシュに入れるためのマッピングに利用可能である可能性があり、このことは、ハイブリッドドライブ１００のオペレーションを容易にする。
【００３８】
図５は、１つ以上の実施形態によるハイブリッドドライブにおけるデータ保存あるいは検索のための方法ステップのフローチャートを示す。方法ステップは、図１−４におけるハイブリッドドライブ１００と共に記説明されているが、当業者は、方法６００は他のタイプのデータ保存システムで実行されることができることを、理解するであろう。方法６００のためのコントロールアルゴリズムは、マイクロプロセッサをベースにしているコントローラ１３３、ホスト１０、あるいは任意の他の適切な制御回路またはシステムにおいて存在することができ、および／または、マイクロプロセッサをベースにしているコントローラ１３３、ホスト１０、あるいは任意の他の適切な制御回路またはシステムによって実行されることができる。明確にするために、方法６００は、ステップ６０１−６２６を実行するマイクロプロセッサをベースにしているコントローラ１３３の観点から説明される。方法６００に先立って、ハイブリッドドライブ１００が１つ以上のＬＢＡｓを参照する読み出しあるいは書き込みコマンドを受け取る。方法６００は、そのあと、そのような各ＬＢＡに関して実行される。
【００３９】
示されるように、方法６００は、ステップ６０１で始まり、そこにおいて、マイクロプロセッサをベースにしているコントローラ１３３、あるいは他の適切な制御回路またはシステムが、対象とするＬＢＡの対応するキャッシュページ３２１をコンピュータで計算する。いくつかの実施形態では、ステップ６０１において実行された計算は、ハイブリッドドライブ１００におけるキャッシュページ３２１あたりのＬＢＡの数でＬＢＡを割ることを伴うトリビアルな計算(trivial computation)である。キャッシュページ３２１あたりのＬＢＡｓの数が２の累乗である場合、割り算は単に右シフトのオペレーションである。
【００４０】
ステップ６０２において、マイクロプロセッサをベースにしているコントローラ１３３は、ステップ６０１で決定されたキャッシュページ３２１がキャッシュエントリ３３１へマッピングされているかどうかを決定する。例えば、マッピング構造３００は、上記に説明された方法でそのような決定をするために調べられることができる。対象のキャッシュページ゛３２１がエントリ３３１をキャッシュに入れるためにマッピングされている場合は、方法６００はステップ６１０に進み、また、対象のキャッシュページ゛３２１がエントリ３３１をキャッシュに入れるためにマッピングされていない場合は、方法６００はステップ６２０に進む。
【００４１】
ステップ６１０において、マイクロプロセッサをベースにしているコントローラ１３３は、対象のＬＢＡが書き込みコマンドあるいは読み出しコマンドに関連しているかどうかを決定する。ＬＢＡが書き込みコマンドに関連している場合、方法６００はステップ、に進む。対象のＬＢＡが読み出しコマンドに関連している場合、方法６００はステップ６１２に進む。
【００４２】
ＬＢＡが書き込みコマンドに関連しているステップ６１１において、マイクロプロセッサをベースにしているコントローラ１３３は、フラッシュメモリデバイス１３５の同じキャッシュエントリ３３１への、対象のＬＢＡのデータの書き込みを制御する。しかしながら、フラッシュメモリデバイス１３５は、一般に所定の位置の上書き(in-place overwrite)を許可しないので、新しい物理的な場所が、該データを書き込むために使用される。さらに、ＬＢＡに関連した最も最近のバージョンのデータが、今、フラッシュメモリデバイス１３５の中に保存されているので、マイクロプロセッサをベースにしているコントローラ１３３は、ＬＢＡに対応する有効なビットをセットする。さらに、ＬＢＡに関連した最も最近のバージョンのデータが、フラッシュメモリデバイス１３５においてもっぱら存在し、ストレージディスク１１０上には存在しないので、マイクロプロセッサをベースにしているコントローラ１３３は、ステップ６１１において、ノットオンメディアビットを同様にセットする。方法６００は、その後、終了する。
【００４３】
フラッシュメモリデバイス１３５が利用可能な削除されたメモリブロックを含んでいないインスタンスでは、十分な削除されたメモリブロックを利用可能にするために、ガベージコレクションプロセスが使用されることができる。あるいは、ＬＢＡに関連したデータが、その代りに、ストレージディスク１１０に直接書き込まれることができる。
【００４４】
ＬＢＡが読み出しコマンドに関連しているステップ６１２において、マイクロプロセッサをベースにしているコントローラ１３３が、ＬＢＡに関連した有効なビットの値をチェックする。例えば、そのようなビットは、論理対物理のマッピング機能５００に似ているデータ構造に位置している可能性がある。有効なビットがセットされている場合、すなわち、ＬＢＡは現在「有効」である場合、そのときは、方法６００はステップ６１３に進む。有効なビットがセットされていない場合、すなわち、ＬＢＡが現在「無効」である場合、そのときは、方法６００はステップ６１４に進む。
【００４５】
ステップ６１３において、マイクロプロセッサをベースにしているコントローラ１３３は、ＬＢＡがマッピングされているキャッシュエントリ３３１へマッピングされたフラッシュメモリデバイス１３５における物理的な場所から、ＬＢＡに関連したデータを読み出す。方法６００は、その後、終了する。
【００４６】
ステップ６１４において、マイクロプロセッサをベースにしているコントローラ１３３は、フラッシュメモリデバイス１３５においてＬＢＡに関連した有効なデータが存在しないので、ストレージディスク１１０からＬＢＡに関連したデータを読み出す。
【００４７】
方法６００は、その後、終了する。
【００４８】
対象のＬＢＡを含んでいるキャッシュページ３２１にキャッシュエントリ３３１がマッピングされていないステップ６２０において、マイクロプロセッサをベースにしているコントローラ１３３は、対象のＬＢＡが書き込みコマンドあるいは読み出しコマンドに関連しているかどうかを決定する。ＬＢＡが書き込みコマンドに関連している場合、方法６００は、ステップ６２１に進む。対象のＬＢＡが読み出しコマンドに関連している場合、方法６００は、ステップ６２６に進む。
【００４９】
ＬＢＡが書き込みコマンドに関連しているステップ６２１において、マイクロプロセッサをベースにしているコントローラ１３３は、ＬＢＡに関連したデータを保存するために十分な「自由な(free)」キャッシュエントリ３３１が利用可能であるのかどうかを決定する。自由なキャッシュエントリ３３１は、キャッシュページ３２１に現在マッピングされていないキャッシュエントリ３３１として定義される。十分な自由なキャッシュエントリ３３１がステップ６２１において検出される場合、方法６００はステップ６２２に進む。不十分な自由なキャッシュエントリ３３１がステップ６２１において検出される場合、方法６００はステップ６２３に進む。
【００５０】
ステップ６２２において、マイクロプロセッサをベースにしているコントローラ１３３は、ステップ６２１で検出された自由なキャッシュエントリ３３１に関連したフラッシュメモリデバイス１３５の中の物理的な場所へ、対象のＬＢＡについてのデータを書き込むことを制御する。さらにマイクロプロセッサをベースにしているコントローラ１３３は、複数のキャッシュページ３２１と複数のキャッシュエントリ３３１との間のマッピング機能をそれに応じて更新し、有効なビットをセットし、ノットオンメディアビットをセットする。
【００５１】
ＬＢＡに関連したデータを書き込むのに利用可能である自由なキャッシュエントリ３３１が不十分であるステップ６２３において、キャッシュページ３２１にマッピングされているが置き換えられるのに利用可能な複数のキャッシュエントリ３３１の利用可能性を、マイクロプロセッサをベースにしているコントローラ１３３は、チェックする。例えば、ストレージディスク１１０上に対応するコピーを有しているデータにマッピングされているキャッシュエントリ３３１、すなわち、セットされていないノットオンメディアビットを備えたキャッシュエントリ３３１は、置き換えられるのに利用可能であるとみなされることができる。置き換えに利用可能な不十分な複数のキャッシュエントリ３３１がステップ６２３で見つけられる場合、方法６００はステップ６２４に進む。ステップ６２３で置き換えに利用可能な不十分な複数のキャッシュエントリ３３１が見つけられることができる場合、方法６００はステップ６２５に進む。すべてのキャッシュエントリ３３１が現在使用中であり、すべてあるいはほとんどのキャッシュエントリ３３１がノットオンメディアビットをセットされている場合は、ほとんどあるいはすべてのキャッシュエントリ３３１は置き換えに利用可能ではないかもしれないことに、注意が必要である。
【００５２】
ステップ６２４において、マイクロプロセッサをベースにしているコントローラ１３３は、置き換えに利用可能であるとステップ６２３で見つけられた１つ以上のキャッシュエントリ３３１を選択する。マイクロプロセッサをベースにしているコントローラ１３３、その後、選択されたキャッシュエントリ３３１について現在のマッピングを取り除き、ＬＢＡを含んでいるキャッシュページ３２１へのマッピングを更新し、選択されたキャッシュエントリにマッピングされた物理的な場所に、ＬＢＡに関連したデータを書き込み、そして、ＬＢＡについて、有効なビットおよびノットオンメディアビットをセットする。方法６００は、その後、終了する。
【００５３】
様々な技術が、は置き換えに利用可能なキャッシュエントリ３３１を選択するために使用されることができる。一般に、そのような選択プロセスは、どのデータがホスト１０によって今後要求される可能性が最もありそうではないかを決定するキャッシュ置換アルゴリズムを含んでいる。多くの適切なキャッシュ置換アルゴリズムは、知られ、ＬＲＵ、ＣＬＯＣＫ、ＡＲＣ、ＣＡＲ、およびＣＬＯＣＫ−Ｐｒｏを含んでおり、そして典型的に、マッピングされたデータの使用の新しさおよび／または頻度に基づいて置き換えのためのキャッシュエントリ３３１を選択する。
【００５４】
キャッシュエントリ３３１が置き換えのために自由でなく、利用可能でないステップ６２５において、マイクロプロセッサをベースにしているコントローラ１３３は、ストレージディスク１１０へＬＢＡに関連したデータの書き込みを制御する。方法６００は、その後、終了する。
【００５５】
ステップ６２６において、対象のＬＢＡが読み出しコマンドに関連し、キャッシュエントリ３３１が、ＬＢＡを含んでいるキャッシュページ３２１にマッピングされておらず、マイクロプロセッサをベースにしているコントローラ１３３は、ストレージディスク１１０から、ＬＢＡに関連したデータを読み出す。方法６００は、その後、終了する。
【００５６】
いくつかの実施形態において、ホストコマンドに応じてストレージディスク１１０から読み出されたデータは、データについてのホスト１０からの将来のリクエストを見込んで、データをキャッシュに入れる目的でフラッシュメモリデバイス１３５に、引き続き書き込まれる。そのような実施形態においては、方法６００の修正されたバージョンが、そのようなデータ書き込み手順をインプリメントするために使用されることができる。データの最新のコピーもまたストレージディスク１１０上に保存されるので、例えば、ステップ６２２において、ノットオンメディアビットがセットされる代わりにクリアされるように、方法６００は修正されることができる。同様に、そのような実施形態では、ノットオンメディアビットは、ステップ６２４において更新されない。
【００５７】
いくつかの実施形態においては、どのキャッシュエントリ３３１がノットオンメディアビットをセットされているのかを決定するために、アイドル時間中あるいはホストコマンド間に、マイクロプロセッサをベースにしているコントローラ１３３は、適切なデータ構造、例えば論理対物理のマッピング機能５００などを調べることができる。そのような複数のキャッシュエントリに関連したＬＢＡのデータは、そのとき、ストレージディスク１１０に書き込まれるので、ノットオンメディアビットはクリアされることができる。そのような実施形態においては、この書き込みオペレーションのパーフォーマンスを改善するために、ストレージディスク１１０の共通あるいは隣接のトラック上にある書き込みをグループ化するために再整理されることができる。フラッシュメモリデバイス１３５は、一般的に、ＲＡＭ１３４よりもはるかに大きく、潜在的に、多くの数のキャッシュエントリ３３１が、再整理されるデータを含み得るので、そのような書き込みオペレーションは、ハイブリッドドライブ１００によって実行されるとき、書き込みを再整理することについて、制限付のＲＡＭを備えた従来のハードディスクドライブと比較し、大きく加速されることができる。
【００５８】
要するに、ここに記載された実施形態は、磁気記憶メディアおよび集積された不揮発性ソリッドステートデバイスを含んでいるハイブリッドドライブにおける、データの保存および検索のシステムおよび方法を提供する。磁気記憶メディアのアドレス可能なユーザスペースは、隣接する複数のアドレスの多数の等しいサイズのセットに区分化され、そして、不揮発性ソリッドステートストレージデバイスのアドレス可能なスペースは、複数の等しいサイズの論理的なセグメントに区分化される。ストレージはつぎに、隣接する複数のアドレスの各選択されたセットを、不揮発性ソリッドステートデバイスにおける特定の論理的なセグメントにマッピングすることによって、磁気記憶メディアの隣接する複数のアドレスの選択された複数のセットについて、不揮発性ソリッドステートデバイスにおいて割り付けられる。好都合に、このマッピングは、磁気記憶メディアのための非常に大きなメモリキャッシュとして不揮発性ソリッドステートデバイスの使用を容易にし、このことは、ハイブリッドドライブのパーフォーマンスを大きく改善する。
【００５９】
上記は、本発明の実施形態を対象としているが、他のおよびさらなる本発明の実施形態が、発明の基本的な範囲から逸脱することなく、考え出されることができ、本発明の範囲は、添付された特許請求の範囲によって決定される。
【符号の説明】
【００６０】
１０…ホスト、１００…ハイブリッドドライブ、１１０…ストレージディスク、１３０…電子回路、１３１…システムオンチップ（ＳｏＣ）、１３２…プリント基板、１３３…コントローラ、１３４…ランダムアクセスメモリ（ＲＡＭ）、１３５…フラッシュメモリデバイス、１３６…フラッシュマネージャデバイス（ＦＭＧＲ）
【図１】
2014174981.tif 000003
【図２】
2014174981.tif 000004
【図３】
2014174981.tif 000005
【図４】
2014174981.tif 000006
【図５】
2014174981.tif 000007