(57)【要約】【課題】できるだけ速くハイバネーションファイルを安全に格納すること。【解決手段】半導体メモリ及び磁気メモリから構成される不揮発性記憶装置に接続されており、揮発性メモリを有するデバイスをハイバネートするための方法であって、前記方法は、ハイバネートコマンドを受信することと、前記ハイバネートコマンドを受信すると、前記磁気メモリに前記揮発性メモリの内容を格納することなく、前記半導体メモリの第１の部分及び第２の部分に前記揮発性メモリの内容を格納することとを具備し、前記第１の部分は、イレースメモリブロックを含み、前記第２の部分は、前記磁気メモリにも格納されるデータ、無効なデータ、及び、前記デバイスに関連する以前のハイバネーションファイルの内容、の少なくとも一つを格納しているメモリブロックを含む方法。【選択図】図３
2014115977.tif 000002
【特許請求の範囲】
【請求項１】
半導体メモリ及び磁気メモリから構成される不揮発性記憶装置に接続されており、揮発性メモリを有するデバイスをハイバネートするための方法であって、
前記方法は、
ハイバネートコマンドを受信することと、
前記ハイバネートコマンドを受信すると、前記磁気メモリに前記揮発性メモリの内容を格納することなく、前記半導体メモリの第１の部分及び第２の部分に前記揮発性メモリの内容を格納することとを具備し、
前記第１の部分は、イレースメモリブロックを含み、
前記第２の部分は、前記磁気メモリにも格納されるデータ、無効なデータ、及び、前記デバイスに関連する以前のハイバネーションファイルの内容、の少なくとも一つを格納しているメモリブロックを含む方法。
【請求項２】
前記半導体メモリの前記第１の部分及び第２の部分に格納される前記揮発性メモリの内容は、前記デバイスに関連するハイバネーションファイルである請求項１記載の方法。
【請求項３】
前記半導体メモリの前記第１の部分及び前記第２の部分に前記揮発性メモリの内容を格納する前に、前記磁気メモリの磁気ヘッドの待機を始めることをさらに具備する請求項１記載の方法。
【請求項４】
前記ハイバネートコマンドを受信する前に、前記ハイバネートコマンドに関連するハイバネーションファイルを格納するために十分な前記第１の部分及び前記第２の部分の結合されたデータ記憶容量を維持することをさらに具備する請求項１記載の方法。
【請求項５】
前記第１の部分及び前記第２の部分の前記結合されたデータ記憶容量が所定の閾値より小さい時、前記半導体メモリではなく前記磁気メモリにデータを格納することをさらに具備する請求項４記載の方法。
【請求項６】
前記所定の閾値は、前記揮発性メモリの前記データ記憶容量より大きくない請求項５記載の方法。
【請求項７】
前記以前のハイバネーションファイルの内容は、前記デバイスによってトリムされている請求項１記載の方法。
【請求項８】
前記半導体メモリの前記第１の部分及び前記第２の部分に前記揮発性メモリの内容を格納する前に、前記半導体メモリの前記第２の部分にガーベジコレクション処理を行うことをさらに具備する請求項１記載の方法。
【請求項９】
半導体メモリ及び磁気メモリから構成される不揮発性記憶装置に接続されており、揮発性メモリを有するデバイスにデータを格納する方法であって、
前記方法は、
前記デバイスをハイバネートすることに関連していないライトコマンドを前記不揮発性記憶装置に転送することと、
前記半導体メモリに割り当てられた記憶スペースの結合されたデータストレージ容量が所定の閾値より小さい時、前記磁気メモリにデータを書き込むことを具備し、
前記割り当てられたストレージスペースは、第１の部分及び第２の部分を具備し、
前記第１の部分は、イレースメモリブロックを含み、
前記第２の部分は、前記磁気メモリにも格納されるデータ、無効なデータ、及び、前記デバイスに関連する以前のハイバネーションファイルの内容、の少なくとも一つを格納しているメモリブロックを含む方法。
【請求項１０】
前記磁気メモリに書き込まれる前記データは前記ライトコマンドに関連するデータを含む請求項９記載の方法。
【請求項１１】
前記磁気メモリにデータを書き込むことは、前記半導体メモリにではなく、前記磁気メモリに、前記ライトコマンドに関連するデータを書き込むことを具備する請求項１０記載の方法。
【請求項１２】
前記磁気メモリに書き込まれる前記データは、前記半導体メモリのメモリブロックに格納されるデータを含み、前記ライトコマンドに関連する前記データは前記半導体メモリの前記メモリブロックが消去された後、前記半導体メモリに書き込まれる請求項９記載の方法。
【請求項１３】
前記ライトコマンドに関連するデータは、ハイバネーションファイルの内容を含まない請求項９記載の方法。
【請求項１４】
前記所定の閾値は、前記ライトコマンドに関連する量のデータを格納するために必要なデータストレージ容量を加えた前記揮発性メモリのデータストレージ容量よりも大きくない請求項９記載の方法。
【請求項１５】
前記以前のハイバネーションファイルの前記内容は、前記デバイスによってトリムされている請求項９記載の方法。
【請求項１６】
前記第２の部分は、前記磁気メモリにも格納されるデータ、無効なデータ、及び、前記デバイスに関連する以前のハイバネーションファイルの内容、の少なくとも一つにガーベジコレクション処理を行うことによって、一部分において形成される請求項９記載の方法。
【請求項１７】
磁気メモリと、
半導体メモリと、
ストレージコントローラとを具備する不揮発性データ記憶装置であって、
前記ストレージコントローラは、前記不揮発性記憶装置のホストデバイスをハイバネートすることに関連しないライトコマンドを受信し、前記半導体メモリに割り当てられたストレージスペースの結合されたデータストレージ容量が所定の閾値よりも小さい時、前記磁気メモリにデータを書き込み、
前記割り当てられたストレージスペースは、第１の部分及び第２の部分を具備し、
前記第１の部分は、イレースメモリブロックを含み、
前記第２の部分は、前記磁気メモリにも格納されるデータ、無効なデータ、及び、前記デバイスに関連する以前のハイバネーションファイルの内容、の少なくとも一つを格納しているメモリブロックを含む不揮発性データ記憶装置。
【請求項１８】
前記以前のハイバネーションファイルの内容は、前記デバイスによってトリムされている請求項１７記載の不揮発性データ記憶装置。
【請求項１９】
前記ストレージコントローラは、前記磁気メモリにデータを書き込む際、前記半導体メモリにではなく、前記磁気メモリに、前記ライトコマンドに関連するデータを書き込む請求項１７記載の不揮発性データ記憶装置。
【請求項２０】
前記所定の閾値は、前記ライトコマンドに関連する量のデータを格納するために必要なデータストレージ容量を加えた前記揮発性メモリのデータストレージ容量よりも大きくない請求項１７記載の不揮発性データ記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
ここに記述された実施例は、ハイブリッド・ディスク・ドライブにハイバネーションファイルを格納するためのデータ記憶装置、システム、および方法に一般に関する。
【背景技術】
【０００２】
ハイブリッドハードディスク・ドライブ（ＨＤＤ）は、不揮発性の半導体（例えば、フラッシュ）メモリと結合した１つ以上の回転磁気ディスクを含む。一般的に、ハイブリッドＨＤＤは、従来のＨＤＤの容量と、半導体ドライブと同じくらい速くデータにアクセスする能力と、の両方を有する。このため、ハイブリッドドライブがラップトップコンピュータで一般に使用されると期待される。いくつかのハイブリッドＨＤＤは、ハイブリッドＨＤＤのディスク部分に関する非常に大きなキャッシュとして不揮発性の半導体メモリを扱うことにより、半導体ドライブの高性能を達成する。具体的には、全ての書き込みデータは、ハイブリッドＨＤＤのフラッシュメモリ部分にホストから典型的に直接受け入れられる。また、同様に、ディスクから読み込まれるデータは、フラッシュに書き込まれる。このように、フラッシュメモリは書込み操作を加速することができる。なぜなら、もしフラッシュメモリがいっぱいでなければ、比較的遅い書き込み回転ディスク動作は、どのくらい早くデータがホストから受け入れられるかに影響しないからである。さらに、フラッシュメモリは、ホストによって再び要求されやすいデータ、つまり、ホストによって最近または最も頻繁に使用されるデータ、をキャッシュすることによってリード操作を加速することができる。これは、比較的遅い回転ディスクからのリード操作の発生を最小限にする。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】米国特許第７６２０７８４号明細書
【特許文献２】米国特許出願公開第２００９／０３２７６０８号明細書
【特許文献３】米国特許出願公開第２００８／０２８８７１４号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ラップトップコンピュータに共通の１つの問題は、できるだけ速くハイバネーションファイルを安全に格納する必要があるということである。これは、データがディスクに書き込まれている間、物理的外乱が生じた時、例えば、ユーザがラップトップをいわゆる「Ｓ４」モードまたは「ハイバネート」モードに入れ、ユーザがラップトップをクローズしてピックアップするような時、磁気ディスクドライブのリード／ライトヘッド及び回転機構がダメージを受け得るからである。理想的には、ハイブリッドＨＤＤは、ドライブのフラッシュメモリ部分にハイバネーションファイルデータを格納するように構成されている。そのため、ハイバネーションモードが要求された直後に、リード／ライトヘッドを待機させることができ、ストレージディスクは、スピンダウンする。しかしながら、このようなハイブリッドＨＤＤの構成は、問題がある。なぜならば、ハイバネーションファイルは、非常に大きい場合があり、通常の動作の間常時ハイバネーションファイルの格納を可能にするために、フラッシュメモリの望ましくない大部分がリザーブされることを、つまり未使用であることを必要とするからである。したがって、容易にそのようなハイブリッドＨＤＤを実現することができるが、ハイブリッドＨＤＤの中の利用可能な記憶資源の使用は非能率的であり、有効にコストが下がらないだろう。
【図面の簡単な説明】
【０００５】
【図１】図１は、発明の実施形態における例示のディスクドライブの概略図である。
【図２】図２は、発明の実施形態に従って構成され示される電子回路の要素を有するハイブリッドドライブの動作を例示する図である。
【図３】図３は、発明の実施形態に従って構成され、フラッシュメモリデバイスに含まれるメモリブロックの略図である。
【図４】図４は、発明の実施形態において、ハイブリッドドライブにデータを格納するための方法ステップのフローチャートである。
【図５】図５は、発明の実施形態において、揮発性メモリを有し、ハイブリッドドライブのような不揮発性ストレージユニットに接続されているコンピュータデバイスをハイバネートするための方法ステップのフローチャートである。
【図６】図６は、発明の実施形態において、揮発性メモリを有し、ハイブリッドドライブのような不揮発性ストレージユニットに接続されているコンピュータデバイスにデータを格納するための方法ステップのフローチャートである。
【発明を実施するための形態】
【０００６】
１つ以上の実施形態において、ストレージディスク及び不揮発性半導体メモリを含むハイブリッドハードディスクドライブ内のハイバネーションファイルの低オーバーヘッドストレージに関するシステム及び方法を提供する。動作中、ハイブリッドドライブは、ハイブリッドドライブのホストデバイスに関連したハイバネーションファイルを収納するために十分大きな半導体メモリの一部を割り当てる。ハイブリッドドライブの動作の間、通常存在するイレースメモリブロックに加えて、ハイバネーションファイルを収納するために割り当てられた半導体ドライブの一部は、過剰供給されたメモリブロック、トリムされた以前のハイバネーションファイルを格納するために使用されるブロック、非ダーティデータ、及び／または使用されていない（obsolete）データ、を含み得る。
【０００７】
実施形態によれば、揮発性メモリを有するデバイスであって、半導体メモリ及び磁気メモリから構成される不揮発性記憶装置に接続されたデバイスをハイバネートする方法は、ハイバネートコマンドを受信すること、ハイバネートコマンドを受信すると磁気メモリに揮発性メモリの内容を格納することなく、半導体メモリの第１の部分及び第２の部分に揮発性メモリの内容を格納することを含む。第１の部分は、イレースメモリブロックを具備する。第２の部分は、磁気メモリ上にも格納されている少なくとも一つのデータを格納するメモリブロック、（トリムされたデータまたは使用されていないデータであり得る）無効なデータ、及びデバイスと関連した以前のハイバネーションファイルの内容、を具備する。
【０００８】
他の実施形態によれば、揮発性メモリを有しているデバイスであって、半導体メモリ及び磁気メモリを備える不揮発性記憶装置に接続されたデバイスにデータを格納する方法は、デバイスをハイバネートすることに関連しないライトコマンドを不揮発性記憶装置に送信することと、半導体メモリに割り当てされた記憶スペースの結合されたデータストレージ容量が所定の閾値より小さい時、磁気メモリにデータを書き込むことと、を具備する。割り当てられた記憶スペースは、イレースメモリブロックを具備する第１の部分と、磁気メモリ上にも格納されている少なくとも一つのデータ、（トリムされたデータまたは使用されていないデータであり得る）無効なデータ、デバイスと関連した以前のハイバネーションファイルの内容を格納しているメモリブロックを具備する第２の部分を含む。
【０００９】
他の実施形態によれば、不揮発性データストレージユニットは、磁気メモリ、半導体メモリ、及びストレージコントローラを具備する。ストレージコントローラは、不揮発性ストレージユニットのホストデバイスをハイバネートすることに関連しないライトコマンドを受信することと、半導体メモリに割り当てされた記憶スペースの結合されたデータストレージ容量が所定の閾値より小さい時、磁気メモリにデータを書き込むことと、を具備する。割り当てられた記憶スペースは、イレースメモリブロックを具備する第１の部分と、磁気メモリ上にも格納されている少なくとも一つのデータを格納しているメモリブロック、（トリムされたデータまたは使用されていないデータであり得る）無効なデータ、及びデバイスと関連した以前のハイバネーションファイルの内容を具備する第２の部分と、を具備する。
【００１０】
以下、実施の形態につき図面を参照して説明する。
【００１１】
図１は、発明の実施形態における例示のディスクドライブの斜視図である。明確にするために、ハイブリッドドライブ１００は、トップカバーなく例証されている。ハイブリッドドライブ１００は、スピンドルモータ１１４によって回転し、複数の同心円のデータストレージトラックを含む少なくとも一つのストレージディスク１１０を含む。スピンドルモータ１１４は、基板１１６上にマウントされている。アクチュエータアームアセンブリ１２０は、基板１１６上にもマウントされている。アクチュエータアームアセンブリ１２０は、データストレージトラックからデータを読み出し、データストレージトラックにデータを書き込むリード／ライトヘッド１２７を伴うフレクスチャアーム１２２上にマウントされたスライダ１２１を有する。フレクスチャアーム１２２は、ベアリングアセンブリ１２６の周りを回転するアクチュエータアーム１２４に取り付けられている。ボイスコイルモータ１２８は、ストレージディスク１１０に対してスライダ１２１を動かす。そのため、ストレージディスク１１０の表面１１２上に配置された所望の同心円のデータストレージトラック上で、リード／ライトヘッド１２７を位置決めすることができる。スピンドルモータ１１４、リード／ライトヘッド１２７、及びボイスコイルモータ１２８は、プリント回路基板１３２上にマウントされている電子回路１３０に接続されている。電子回路１３０は、リードチャネル１３７、マイクロプロセッサベースドコントローラ１３３、ランダムアクセスメモリ（ＲＡＭ）１３４、及び／またはフラッシュメモリデバイス１３５及びフラッシュマネジャデバイス１３６を含む。ランダムアクセスメモリ（ＲＡＭ）１３４は、ダイナミックＲＡＭであり得る。ランダムアクセスメモリ（ＲＡＭ）１３４は、データバッファとして使用される。いくつかの実施形態において、リードチャネル１３７及びマイクロプロセッサベースドコントローラ１３３は、システムオンチップ１３１のような単一のチップに含まれる。いくつかの実施形態において、ハイブリッドドライブ１００は、スピンドルモータ１１４及びボイスコイルモータ１２８をさらに含み得る。
【００１２】
明確にするために、ハイブリッドドライブ１００は、１つのストレージディスク１１０及び１つのアクチュエータアームアセンブリ１２０とともに例証される。ハイブリッドドライブ１００は、複数のストレージディスク及び複数のアクチュエータアームアセンブリをも含み得る。さらに、ストレージディスク１１０の各々の面は、フレクスチャアームに接続された関連するリード／ライトヘッドを有し得る。
【００１３】
データがストレージディスク１１０へ転送される時またはデータがストレージディスク１１０から転送される時、アクチュエータアームアセンブリ１２０は、ストレージディスク１１０の内径（ＩＤ）と外径（ＯＤ）との間の円弧を移動する。アクチュエータアームアセンブリ１２０は、電流がボイスコイルモータ１２８のボイスコイルを１つの方向に通過する時、１つの角方向に加速し、電流が逆流した時、反対の角方向に加速する。これにより、ストレージディスク１１０に対してアクチュエータアームアセンブリ１２０及び取り付けられたリード／ライトヘッド１２７の位置の制御が可能である。ボイスコイルモータ１２８は、特定のデータストレージトラック上でリード／ライトヘッド１２７の位置を決めるために、リード／ライトヘッド１２７によってサーボウェッジから読み出される位置決めデータを使用する従来のサーボシステムと接続されている。サーボシステムは、ボイスコイルモータ１２８のボイスコイルを介して駆動するために適切な電流を決定する。サーボシステムは、電流ドライバ及び関連した回路を使用して前記電流をドライブする。
【００１４】
ハイブリッドドライブ１００は、ハイブリッドドライブとして構成されており、通常動作時に、データはストレージディスク１１０及び／またはフラッシュメモリデバイス１３５に格納され得る。ハイブリッドドライブ１３５において、フラッシュメモリデバイス１３５のような不揮発性メモリは、低消費電力同様に、より速いブート、ハイバネート、リジューム、及び他のデータリード・ライト動作を提供するために、回転ストレージディスク１１０を補完する。このようなハイブリッドドライブ構成は、モバイルコンピュータまたは他のモバイルコンピューティングデバイスのようなバッテリで動作されるコンピュータシステムに関して、特に有益である。好適な実施形態において、フラッシュメモリデバイスは、電気的に消去されることができ及び再プログラムすることができるＮＡＮＤ型フラッシュチップのような不揮発性半導体記憶媒体である。また、フラッシュメモリデバイスは、不揮発性記憶媒体としてハイブリッドドライブ１００においてストレージディスク１１０を補完するようなサイズとされる。例えば、いくつかの実施形態において、フラッシュメモリデバイス１３５は、ＲＡＭ１３４よりも大きな桁、例えばメガバイト（ＭＢ）に対するギガバイト（ＧＢ）、であるデータ記憶容量を有する。
【００１５】
図２は、発明の実施形態にしたがい構成され示される電子回路１３０の要素を有するハイブリッドドライブ１００の動作を例示する図である。図２に示すように、ハイブリッドドライブ１００は、ＲＡＭ１３４、フラッシュメモリデバイス１３５、フラッシュマネジャデバイス１３６、システムオンチップ１３１、及びハイスピードデータパス１３８、を含む。ハイブリッドドライブ１００は、シリアルアドバンスドテクノロジアタッチメント（ＳＡＴＡ）バスのようなホストインタフェース２０を介して、ホストコンピュータのようなホスト１０に接続されている。
【００１６】
図２に例証された実施形態では、フラッシュマネジャデバイス１３６は、フラッシュメモリデバイス１３５のハイスピードデータパス１３８とインターフェースを制御する。フラッシュマネジャデバイス１３６は、ＮＡＮＤ型インターフェースバス１３９を介して、フラッシュメモリデバイス１３５に接続されている。システムオンチップ１３１は、ハイブリッドドライブ１００の動作を制御するためのマイクロプロセッサベースドコントローラ１３３及び（リードチャンネルを含む）他のハードウェアを含む。システムオンチップ１３１は、ハイスピードデータパス１３８を介してＲＡＭ１３４及びフラッシュマネジャデバイス１３６に接続されている。マイクロプロセッサベースドコントローラ１３３は、ＡＲＭマイクロプロセッサ、ハイブリッドドライブコントローラ、及びハイブリッドドライブ１００内のいくつかの制御回路のようなマイクロコントローラを含み得る制御ユニットである。ハイスピードデータパス１３８は、ダブルデータレート（ＤＤＲ）バス、ＤＤＲ２バス、ＤＤＲ３バス、などのような従来のハイスピードバスである。
【００１７】
フラッシュメモリデバイス１３５に転送されたデータは、書き込み要求の一部としてホスト１０から直接受け入れられたライトデータ、またはリード要求の一部としてストレージディスク１１０から読み出されたデータであり得る。データが、フラッシュメモリデバイス１３５の高密度ＮＡＮＤ型デバイスに転送された時、データは、前に消去されたＮＡＮＤ型メモリのブロックに書き込まれる。フラッシュメモリデバイス１３５に十分なイレースブロックがない場合、始めに、追加のメモリブロックが、所望のデータがフラッシュメモリデバイス１３５に転送される前に、消去されなければならない。これらの追加のメモリブロックは、フラッシュメモリデバイス１３５のみに格納されているデータである「ダーティ」データ、または、ストレージディスク１１０に既に格納されている対応するデータのコピーであるデータである「ノンダーティ」データを現在格納しているデータブロックであり得る。または、これらの追加のメモリブロックは、より新しいバージョンがフラッシュメモリデバイス１３５に書き込まれたデータである使用されていないデータを含み得る。ダーティデータは「排除」される前に、最初にストレージディスク１１０に「フラッシュ」されなければならないので、追加の時間が要求されるため、ダーティデータブロックよりもむしろ非ダーティデータブロックを消去することが一般的に望ましい。例えば、ストレージディスク１１０にデータをフラッシュすることは、ストレージディスク１１０に問題となっているデータを格納することを含む。イレースされるメモリブロックが、ダーティデータ、非ダーティデータ、及び／または使用されていないデータの混合を含む場合、「ガーベッジコレクション」の公知の処理が、フラッシュメモリデバイス１３５に転送される所望のデータを格納することに関して、十分なメモリブロックを提供するために、フラッシュメモリデバイス１３５でも実行され得る。ガーベッジコレクションの処理は、発明の様々な実施形態に該当するように、詳細は後述される。
【００１８】
いくつかの実施形態において、フラッシュメモリデバイス１３５にデータを書き込む処理を促進させるために、ハイブリッドドライブ１００は、可能な際は、消去されすぐにデータ書き込みに利用可能であるフラッシュメモリデバイス１３５の所定の最適な割合を維持する。例えば、いくつかの実施形態で、ハイブリッドドライブ１００は、可能な際は、消去され利用可能なフラッシュメモリデバイス１３５の容量の２０％を維持し得る。
【００１９】
消去された状態のフラッシュメモリデバイス１３５の最適な割合より大きく維持することは、フラッシュメモリデバイス１３５によってキャッシュされるデータ量を減少させる。フラッシュメモリデバイス１３５に最適な割合よりも小さなデータをキャッシュさせることは、ホスト１０によって「キャッシュミス」の頻度を増加させる。ここで、データは、比較的により高速なフラッシュメモリデバイス１３５からというよりもむしろデータストレージディスク１１０から読み出されなければならない。したがって、キャッシュミスは、ハイブリッドディスク１００のパフォーマンスを低下させ、好適に回避される。
【００２０】
消去された状態のフラッシュメモリデバイス１３５の最適な割合より小さく維持することは、ハイブリッドドライブ１００のパフォーマンスをも非常に低下し得る。なぜなら、フラッシュメモリデバイス１３５は、早くいっぱいにされ得るからであり、そのため、フラッシュメモリデバイス１３５は新しいデータを受け入れることができないからである。フラッシュメモリデバイス１３５がいっぱいである時、ホストからの次のライトコマンドはデータストレージディスク１１０に書き込まれなければならない。これは従来のディスクドライブに対するハイブリッドドライブ１００の速度利点を減少させる。
【００２１】
通常動作で、フラッシュメモリデバイス１３５は、上述した所定の最適な割合よりも少ない消去され利用可能なメモリブロックを頻繁に有することができるということに注意する。例えば、ハイブリッドドライブ１００は、ほとんどあるいは全くアイドル時間なく、フラッシュメモリデバイス１３５にデータを書き込ませるホスト１０からの多数のコマンドを受信した時、フラッシュメモリデバイス１３５の利用可能なイレースメモリブロックのほとんどまたは全てがいっぱいにされ得る。
【００２２】
消去されデータを受信することが可能なフラッシュメモリデバイス１３５の一部が、所定の最適な割合よりも小さい時、ハイブリッドドライブ１００は、フラッシュメモリデバイス１３５からデータを排除し始める。様々な排除方法は、どんなデータが排除されるべきかを選択することに関する周知の技術であり、ここに記載されない。一般的に、ハイブリッドドライブ１００、または、いくつかの実施形態におけるフラッシュマネジャまたはコントローラは、ホスト１０から再び要求されにくいフラッシュメモリデバイス１３５における排除のためのデータを選択する。ここで、データの選択は、データの使用の頻度及び／または最新さに基づいている。それゆえ、フラッシュメモリデバイス１３５は、ホスト１０によって最近使用されたデータ及び最も頻繁に使用されたデータを含む。
【００２３】
ホスト１０は、ユーザによっていわゆる「Ｓ４」または「ハイバネート」モードにセットされる時、ホスト１０は、ＤＲＡＭのような揮発性メモリの内容をハイブリッドドライブ１００に保存し、完全にパワーダウンする。ハイバネーションに先行して保存されるデータは、しばしば「hiberfile」と称される単一のファイルで一般的に格納される。このようなハイバネーションデータは、ホスト１０の揮発性メモリに現在ロードされる異なるファイル、設定、などの混合であり、ホスト１０がパワーオフされた後でさえ、ホスト１０の現在の状態が維持される。一般的に、このようなハイバネーションデータの最大サイズは、ハイバネーションデータを生成するだろうホスト１０の物理的メモリのサイズにほぼ等しいまたは小さいサイズである。
【００２４】
ハイバネーションデータは、ハイバネート要求時、例えば、ハイブリッドドライブ１００は、データを排除しメモリブロックを消去するためのアイドル時間はほとんどまたは全くなく、ホスト１０からの複数のライトコマンドを最近受信した時、フラッシュメモリデバイス１３５に存在する消去されたメモリブロックのサイズを容易に超え得る。さらに、仮にハイバネーションデータが、数ギガバイト（ＧＢ）のオーダーのサイズであり得るならば、フラッシュメモリデバイス１３５が、その中に最大最適数のイレースメモリブロックの数を維持する時でさえ、このようなハイバネーションデータはフラッシュメモリデバイス１３５のイレースメモリブロックの記憶容量を超え得る。したがって、フラッシュメモリデバイス１３５の記憶容量は、始めにデータを排除することなく、ハイバネーションデータを格納するためにしばしば十分でないことがあり得る。結果として、ハイバネーションデータは、データストレージディスク１１０に直接書き込まれなければならない、または、データはハイバネーションデータのための空きを作るためにフラッシュメモリデバイス１２５から排除され得る。何れかの場合において、データは、ユーザはホスト１０をクローズさせるような時、または、ホスト１０を片付け及び／またはホスト１０を運ぶような時、データストレージディスク１１０に書き込まれ得る。このような活動は、一般的に、衝撃、振動、及び、ハイブリッドドライブ１００の稼動部分に損傷を与え得る他の物理的外乱を生成するため、このようにハイバネーションデータを記憶することは、非常に望ましくない。
【００２５】
格納するハイバネーションデータの一部としてデータストレージディスク１１０にデータが書き込まれる任意のシナリオを回避するために、フラッシュメモリデバイス１３５の一部は、ハイバネーションデータを格納するための専用の消去されたブロックとして取っておくことができる。このフラッシュメモリデバイス１３５の一部は、データを格納するために直ぐに利用可能であり、ホスト１０によって発生され得るハイバネーションデータの最大可能容量を収容するようなサイズとされたイレースメモリブロックだけを含む。しかしながら、ハイバネーションデータ記憶のためだけに用意されたメモリブロックは他のデータのために使用されることができないので、及び、このような用意された部分はフラッシュメモリデバイス１３５の全容量のかなりの部分であり得るので、フラッシュメモリデバイス１３５のこのような構成は、一般的に実用的でない。例えば、ハイバネーションデータは、サイズが約４Ｇバイト（ＧＢｓ）のオーダーであり得る、一方、典型的なフラッシュメモリデバイス１３５の全記憶容量は、サイズが約１６Ｇバイト（ＧＢｓ）のオーダーであり得る。したがって、この例において、フラッシュメモリデバイス１３５のストレージ容量の２５％は、ハイバネーションデータが格納される時以外、アイドル状態のままであり、消去されたままである。
【００２６】
データストレージディスク１１０上よりもむしろフラッシュメモリデバイス１３５にハイバネーションデータを格納することは非常に望ましい一方、ハイバネーションデータのためだけのフラッシュメモリデバイス１３５の専用の部分の使用は望ましくない。なぜならば、フラッシュメモリデバイス１３５のハイバネーションデータの専用の部分は、本質的に利用されていないからである。したがって、いくつかの実施形態において、フラッシュメモリデバイス１３５の一部は、ハイバネーションデータを格納することができ得るだけの専用のメモリブロックを必要としないフラッシュメモリデバイス１３５の一部がハイバネーションデータを格納するために割り当てられる。さらに、ストレージがハイバネーションデータのために割り当てられる方法は、ハイブリッドドライブ１００の性能において最小の影響である。特に、フラッシュメモリデバイス１３５にハイバネーションデータを格納するために割り当てられたメモリブロックは、データストレージディスク１１０に保存されることなく捨てられ得るデータを含んでいるメモリブロックと同様に、目下消去されるメモリブロックを含む。ハイバネーションデータを格納するために割り当てられたフラッシュメモリデバイス１３５の異なるメモリブロックのタイプについて、図３に関連してより詳細に記述される。
【００２７】
図３は、発明の実施形態にしたがって構成されており、フラッシュメモリデバイス１３５に含まれるメモリブロックの略図である。図３に示すように、フラッシュメモリデバイス１３５のメモリブロックはデータ領域３０１から３０５を含む。各領域は、それぞれ異なる分類のデータを含んでいる。異なる分類のデータは、例えば、システムデータ３１１、ダーティデータ３１２、非ダーティデータ３１３、トリムされたデータ３１４、及び使用されていないデータ３１５である。さらに、フラッシュメモリデバイス１３５は、イレース（消去された）データ領域３２０、イレースメモリブロックからなりデータを格納していないフラッシュメモリデバイス１３５の領域を含む。図３に例示される実施形態において、ホスト１０によって要求された時、ハイバネーションデータを格納するために割り当てられるフラッシュメモリデバイス１３５のデータ領域は、データ領域３０３、３０４、及び３０５、及びイレースデータ領域３２０を含む。つまり、図３に例示される実施形態において、ハイバネーションデータ領域３５０は、イレースデータ領域３２０、及びデータ領域３０３、３０４、及び３０５を含む。他の実施形態において、ハイバネーションデータ領域３５０は、データ領域３０３、３０４、及び３０５の内の少なくとも一つ、及びイレースデータ領域３２０を含む。
【００２８】
データ領域３０１乃至データ領域３０５の各々、及びイレースデータ領域３２０は、フラッシュメモリデバイス１３５の個々の隣接する部分として図３に描かれている一方、データ領域３０１乃至データ領域３０５の内の１つ以上のデータ領域、及びイレースデータ領域３２０は、分けられ得る、つまり、データ領域３０１乃至データ領域３０５の内の１つ以上のデータ領域、及びイレースデータ領域３２０は、フラッシュメモリデバイス１３５の非隣接部分にわたって分散された複数のサブ領域を具備するということが理解される。したがって、データ領域３０１乃至データ領域３０５の各々及びイレースデータ領域３２０は、フラッシュメモリデバイス１３５の領域または様々なセパレートメモリブロックにわたって分けられ得る。しかし、各々は、一つのエンティティとして、それぞれ、みなされ得る。いくつかの実施形態で、データ領域３０１乃至データ領域３０５の各々は、１つ以上のメモリブロックの部分を含み得る。したがって、このようなメモリブロックは、システムデータ３１１、ダーティデータ３１２、非ダーティデータ３１３、トリムされたデータ３１４、及び／または使用されていないデータ３１５を含むだろう。
【００２９】
システムデータ３１１は、ファイルアロケーションテーブル、トランスレーションレイヤ等を含んでおり、ハイブリッドドライブ１００及びまたはフラッシュメモリデバイス１３５のオペレーションを容易にするためのデータを含む。このように、システムデータ３１１、つまりデータ領域３０１、を含むフラッシュメモリデバイス１３５の一部は、ホスト１０に関するハイバネーションデータの任意の部分のストレージに関して一般的に利用できない。
【００３０】
ダーティデータ３１２は、パフォーマンスのためにフラッシュメモリデバイスにだけ格納されており、データストレージディスクにまだ保存されていないデータを含む。上述したように、ダーティデータ３１２を含むフラッシュメモリデバイス１３５の一部、つまりデータ領域３０２にハイバネーションデータの任意の部分を書き込むことは、データストレージデバイス１１０にダーティデータ３１２のいくつかまたは全てをフラッシュすることをまず含むだろう。結果として、発明の実施形態において、データ領域３０２は、ハイバネーションデータを格納することが可能なメモリブロックに含まれない。
【００３１】
非ダーティデータ３１３は、データストレージディスク１１０上に格納されている対応するコピーを有するフラッシュメモリデバイス１３５に格納されているデータを含む。したがって、非ダーティデータ３１３が格納されているデータ領域、つまりデータ領域３０３、のいくつかまたは全ては、格納されたデータの損失なく、安全に排除されることができ、消去されることができる。いくつかの実施形態において、データ領域３０３は、ハイバネーションデータを格納することが可能なメモリブロックに含まれる。結果として、ハイブリッドドライブ１００がハイバネーションデータを格納することをホスト１０が要求する時、非ダーティデータ３１３は消去されることができ、ハイバネーションデータのいくつかまたは全てはデータ領域３０３に書き込まれることができる。それゆえ、データストレージディスク１１０に任意のデータを書き込むことなく、ハイバネーションデータを格納することができる。
【００３２】
トリムされたデータ３１４は、ホスト１０がトリムコマンドを発行した他のデータと同様に、ホスト１０がトリムコマンドを発行した任意の以前に格納されたハイバネーションデータの一部を含む。トリムされたデータ３１４に含まれるハイバネーションデータはホスト１０の以前の状態を保存する、したがって要求されないだろう。したがって、トリムされたデータ３１４が格納されるデータ領域、すなわちデータ領域３０４、の内のいくつかまたは全ては、格納されたデータの損失なく安全に消去され得る。いくつかの実施形態にしたがって、データ領域３０４は、ハイバネーションデータを格納するために割り当てられたメモリブロックに含まれる。結果として、ホスト１０はハイブリッドドライブ１００がハイバネーションデータを格納することを要求する時、トリムされたデータ３１４は消去されることができ、ハイバネーションデータのいくつかまたは全てはデータ領域３０４に書き込まれ得る。それゆえ、データストレージディスク１１０に任意のデータを書き込むことなく、ハイバネーションデータを格納することができる。いくつかの実施形態において、ホスト１０は特定のハイバネーションデータのインスタンスが使用されておらず、それゆえトリムされたデータ３１４に含まれるだろうということを示すＴＲＩＭコマンドをハイブリッドドライブ１００に発行する。
【００３３】
使用されていないデータ３１５は、ホストによって「無効」とみなされるデータ、つまり、その時使用されていないデータが書き込まれた後のある時により新しいコピーがフラッシュメモリデバイス１３５のどこかに書き込まれるデータ、を含む。
【００３４】
イレースデータ領域３２０は、ハイバネーションデータのような書き込みデータを直ぐに受信することが可能であるイレースメモリブロックだけを含む。イレースデータ領域３２０は、ハイブリッドドライブ１００の通常の動作の一部としてイレースメモリブロック３２１を含み得る。例えば、イレースメモリブロック３２１は、ライトデータを直ぐに受信することが可能であるフラッシュメモリデバイス１３５の所定の最適な部分を維持するために消去されるメモリブロックを含み得る。
【００３５】
上述したように、非ダーティデータ３１３、トリムされたデータ３１４、及び／または使用されていないデータ３１５は、フラッシュメモリデバイス１３５の多くのメモリブロック間で、断片化され、散りばめられ得る。結果的に、いくつかの実施形態において、データ領域３０３、３０４、及び／または３０５の一部は、過剰供給されたメモリブロックを含み得る。ＮＡＮＤ型フラッシュだけともなったソリッドステートドライブ（ＳＳＤ）において、過剰供給されたメモリブロックは、フラッシュメモリデバイス１３５の物理的容量の一部であるメモリブロックである。しかし、過剰供給されたメモリブロックは、論理的容量としてホストコンピューティングデバイスに一般的に提供されない。ハイブリッドドライブ１００において、過剰供給されたメモリブロックは同様の目的を果たす。フラッシュメモリデバイス１３５の過剰供給された容量は使用されないだろう容量である。そのため、ユーザデータを含むフラッシュメモリデバイスの記憶容量の一部は、特定のレベルを超えないだろう。例えば、もしフラッシュメモリデバイス１３５の記憶容量の１０％が過剰供給のために割り当てられるならば、ユーザデータを含むフラッシュメモリデバイス１３５の一部は、９０％を決して超えないだろう。最も悪い場合、それらの使用されていないメモリセクションは、フラッシュメモリ内の全てのブロックに均等に分散するだろう。例えば、ハイブリッドドライブ１００が１つの消去されたブロックを含むために、（ユーザデータを含んでいる各ブロックの９０％及び使用されていないデータを含んでいる１０％）１０ブロックの内容を、消去され、再使用され得る１ブロックを残して９ブロックに統合するために、ガーベッジコレクションを使用することが必要だろう。過剰供給されるメモリブロックによって提供される余分なデータ記憶スペースは、フラッシュメモリデバイス１３５の通常の動作の間行われる、バッドブロックマッピングオペレーション、ウェアレベリング、及びガーベッジコレクションの間利用可能である。発明の実施形態において、これらの過剰供給されたメモリブロックは、ハイバネーションデータがフラッシュメモリデバイス１３５に書き込まれ時利用可能であると知られているので、このような過剰供給されたメモリブロックはハイバネーションデータ領域３５０に含まれ得る。このため、ガーベッジコレクション、ウェアレベリング、及びバッドブロックマッピングオペレーションは、ハイバネーションデータが書き込まれた後一般的に行われない。なぜなら、（ホスト１０とともに）ハイブリッドドライブ１００は、まさにパワーオフしようとしているからである。ハイブリッドドライブ１００及びホスト１０がパワーバックオンしハイバネーションデータがホスト１０により読み出された後、ホスト１０はハイバネーションデータをトリムするだろう。そして、関連するメモリブロックは消去され、そして、再使用またはフラッシュメモリデバイス１３５の過剰供給容量の一部とされるかの何れかであり得る。ハイバネーションデータは、一般的に、非常に大きな連続するデータセクタ群である。データがトリムされると、ドライブが関連するフラッシュブロックの使用を回復することは比較的容易である。なぜなら、もし全てでないにしてもほとんどのブロックがそのトリムされたデータだけを含むならば、ほとんどガーベッジコレクションはそれらを回復するために必要とされない。
【００３６】
発明のいくつかの実施形態によれば、ハイブリッドドライブ１００はイレースデータ領域３２０及びデータ領域３０３の一部、データ領域３０４、及び／またはデータ領域３０５をハイバネーションデータ領域３５０の一部として割り当てる。ハイバネーションデータ領域３５０は、ホスト１０によって生成され得る最も大きい可能性があるハイバネーションデータを収納する記憶容量を有するようなサイズとされる。いくつかの実施形態において、コマンドがハイバネーションデータ領域３５０のサイズをそのような所定の記憶容量以下に減少させることができるハイブリッドドライブ１００によって受信される時、ハイブリッドドライブ１００によって受信されるデータは、データストレージディスク１１０に直接書き込まれる。他の実施形態において、このようなコマンドがハイブリッドドライブ１００によって受信される時、データ領域３０３、３０４、及び３０５、及びイレースデータ領域３２０の１つ以上は、データがハイブリッドドライブ１００によって受信される前にそれに応じてサイズが増加される。
【００３７】
例えば、ある実施形態において、ハイバネーションデータ領域３５０の所望の記憶領域は４ＧＢである。ハイブリッドドライブ１００の通常動作中のある時、ハイバネーションデータ領域３５０は、３ＧＢの記憶領域を有するイレースデータ領域３２０、１ＧＢの記憶領域を有するデータ領域３０３、及び、１ＧＢの記憶領域を有するデータ領域３０４、を含む。したがって、この時点で、ハイバネーションデータ領域３５０は、５ＧＢの記憶容量を有する。ホスト１０からのライト要求群がハイブリッドドライブ１００により受信される際、データはイレースデータ領域３２０に直接書き込まれる。図３において、新たに書き込まれるデータを受信するイレースデータ領域３２０の一部はデータ領域３０２の一部として考慮され、新たに書き込まれるデータはダーティデータ３１２の一部として考慮される。結果として、データがハイブリッドドライブ１００に書き込まれる際、イレースデータ領域３２０はサイズが減少し、ダーティデータ３１２を格納するデータ領域３０２はサイズが増加する。ハイバネーションデータ領域３５０は、イレースデータ領域３２０を含む、それゆえ、イレースデータ領域３２０のメモリブロックがデータを受け入れ、ダーティデータ領域３０４のメモリブロックになる時、ハイバネーションデータ領域３５０はサイズが減少する。ハイブリッドドライブ１００は、データを受信し続け、データストレージディスク１１０にダーティデータをフラッシュするために十分なアイドル時間がない場合、この処理は、イレースデータ領域３２０が２ＧＢにサイズが減少されるまで継続する。この際、この説明の役に立つ例において、イレースデータ領域３２０のサイズが２GBに減少され、データ領域３０３及び３０４は各々１ＧＢの記憶容量を有する時、ハイバネーションデータ領域３５０の記憶容量は、ハイバネーションデータ領域３５０の４ＧＢ最小所望記憶領域に減少される。ハイブリッドドライブ１００は、ホスト１０から直接受信される追加のデータをデータストレージディスク１１０に書き込むことによってハイバネーションデータ領域３５０のサイズを能動的に管理する。このように、ハイバネーションデータ領域３５０の最小所望記憶容量は維持され、ホスト１０によって要求される際、データストレージディスク１１０にデータを書き込むことを必要とすることなく、ハイバネーションデータはフラッシュメモリデバイス１３５に格納され得る。または、ハイブリッドドライブ１００は、データストレージディスク１１０にダーティデータ３１２の一部をフラッシュすることによってサイズの面でハイバネーションデータ領域３５０が増加するまで、代わりにデータを受信することを止めてもよい。
【００３８】
ある実施形態において、ハイブリッドドライブ１００は、受信したライトデータをストレージディスク１００に直接送るのとは対照的に、新たなライトデータがフラッシュメモリデバイス１３５に受け入れられるか否かを決定する際、通常動作中に、他の要因を考慮することができる。すなわち、ハイブリッドドライブ１００は、ハイバネーションデータ領域３５０のサイズを所定の最小サイズよりも大きいまたは等しいサイズ、つまり、ホスト１０によって生成され得る全てのハイバネーションデータを格納するために十分大きいサイズに維持するために必要なガーベジコレクションを行うために要求される時間を考慮することができる。ガーベジコレクションの処理は、現在のブロックから他の（消去された）ブロックに同一のコピーがストレージディスク１１０上にも存在する全てのダーティデータ及び無効なデータをコピーすることから構成される。コピー操作は、現在のブロックに格納されている無効なデータを排除するため、コピーされたデータは１つの消去されたブロックに一般的に満たない。例えば、もし、２つのブロックの各々の半分が、ストレージディスク１１０上に同一のコピーをともなった無効なデータ及び／またはダーティデータを含むならば、これら２つのブロックは、１つの消去されたブロックに「ガーベジコレクション」され（つまり、コピーされ）得る。そのため、消去されることができ、使用できるようにすることができる２つのブロックを提供することができる。
【００３９】
新たなライトデータがフラッシュメモリデバイス１３５に受け入れられるべきか否かを決定するガーベジコレクション時間を考慮する際、ハイブリッドドライブ１００は、ガーベジコレクションの時間が係り過ぎて、ハイバネーションデータ領域３５０のサイズを増加させることができない、あるいは、その代わりにストレージディスク１００に直接データを書き込むことができないだろうということを決定し得る。特に、もし、ノンダーティデータ３１３、トリムされたデータ３１４、及び／または使用されていないデータ３１５のいくつかが、多くのイレースブロック間に広がるならば、それらのブロックを統合するための非常に長い時間が必要とされ得、そのため、新しいハイバネーションデータを受け入れることができる消去されたブロックを生成する。例えば、もしフラッシュメモリデバイス１３５の利用可能容量の０．１％が１０％のブロック間に均等に広がり、そのため、そのブロックの各々の１％は非ダーティデータ３１５、トリムされたデータ３１４、及び／または使用されていないデータ３１５を含むならば、ハイブリッドドライブ１００は、新たなデータを受け入れることができる単一ブロックを生成するために、約１００ブロックを統合する必要があるだろう。このような状況において、ハイブリッドドライブ１００は、データ領域３０５のこれらの部分をハイバネーションデータの格納のために利用を使用できるとは考慮しないかもしれない。したがって、いくつかの実施形態において、ハイブリッドドライブ１００は、ハイバネーションデータのストレージのために利用可能であり、ハイバネーションデータ領域３０５の一部として見なされるフラッシュメモリデバイス１３５の量を決定する際、どのブロックを含むべきかを決定するために、非ダーティデータ３１３、トリムされたデータ３１４、及び／または使用されていないデータ３１５のフラグメンテーションの状態についての情報を使用することができる。その結果として、ハイバネーションデータのストレージのために利用可能であるフラッシュメモリデバイス１３５の量は、フラッシュメモリデバイス１３５で、非ダーティデータ３１３、トリムされたデータ３１４、及び／または使用されていないデータ３１５よりも小さいことがあり得る。しかしながら、もし、非ダーティデータ３１３、トリムされたデータ３１４、及び／または使用されていないデータ３１５のほとんどまたは全てが、容量の実質的な部分がこれらの消去可能なデータタイプの１つであるブロックにあるならば、データ領域３０３、３０４、及び３０５のほとんどまたは全ては、ハイバネーションデータのストレージのために利用可能であり、ハイバネーションデータ領域３５０の一部であり得る。
【００４０】
ハイブリッドドライブ１００がハイバネーション領域３５０のサイズを最小の所望ストレージ容量に減少させるために、十分短い期間で十分なデータを受信する状況は比較的まれである。したがって、ここで記述される発明の実施形態は、ハイブリッドドライブ１００のパフォーマンスに関して一般的にほとんど影響がない。しかしながら、データストレージディスク１１０に任意のデータが書き込まれることなく、ハイバネーションデータがフラッシュメモリデバイスに格納され得るようにハイブリッドドライブ１００が構成される。
【００４１】
ハイブリッドドライブ１００が十分なアイドル時間がある時、ダーティデータ３１２のいくつかまたは全てはデータストレージディスク１１０にフラッシュされ得る、そのため、ダーティデータ３１２は、非ダーティデータに変換され、データ領域３０３はサイズの面で増加するということに注意する。したがって、通常動作中に、ハイブリッドドライブ１００は、ハイバネーションデータ領域３５０がすでに最小の所望記憶領域より大きい時でさえ、ハイバネーションデータ領域３５０の記憶容量を増加するための措置を一般的にとる。
【００４２】
フラッシュメモリデバイス１３５のハイバネーションデータ領域３５０の１つ以上の部分にハイバネーションデータを書き込む際、ハイブリッドドライブ１００は、ハイバネーションデータ領域３５０が少なくとも所定の最小サイズと同じくらいで維持されるポリシイに反する。その結果として、いくつかの実施形態で、ハイブリッドドライブ１００は、ストレージのためにそこに転送されるデータがハイバネーションデータであるということを決定する、または通知される。このように、ハイブリッドドライブ１００は、ハイバネーションデータを書き込むことができ、ハイバネーションデータ領域３５０を実質的にいっぱいにすることができる。
【００４３】
いくつかの実施形態において、ハイブリッドドライブ１００は、次のライトコマンドがハイバネーションデータを含むというホスト１０からの通知を受信し、したがって、ハイバネーションデータ領域３５０にハイバネーションデータを書き込む。他の実施形態において、ホスト１０は、所定範囲の論理ブロックアドレス（ＬＢＡ）にハイバネーションデータを格納するように構成される。このような実施形態において、ハイブリッドドライブ１００は、受信したデータが受信したデータのＬＢＡの範囲に基づき、ハイバネーションデータを含むか否かを認識することができ、それゆえ、ハイバネーションデータ領域３５０にハイバネーションデータを書き込むことができる。さらに他の実施形態において、ホスト１０から受信したデータが、ホスト１０と直接情報のやりとりをすることなく、または、ホスト１０と所定のＬＢＡ範囲を調整することなく、ハイバネーションデータを含むか否かを、ハイブリッドドライブ１００は独自に決定することができる。例えば、ハイブリッドドライブは、データストレージディスク１１０またはフラッシュメモリデバイス１３５に格納されたホスト１０と関連するパーティションテーブルを検出するためのアルゴリズムから構成され得る。ハイブリッドドライブ１００は、ホスト１０によって生成されたハイバネーションデータのために使用されるＬＢＡ範囲を決定するために、パーティションテーブル及びファイルシステムを調べることができる。他の例において、アルゴリズムは、「ｈｉｂｅｒｆｉｌ．ｓｙｓ」と名づけられたファイルのようなハイバネーションデータである周知の特定のファイルを検出することができる。そのため、このようなファイルがハイブリッドディスク１００に書き込まれる際、ファイルはハイバネーションデータ領域３５０に書き込まれる。さらに他の例において、アルゴリズムは、パワーダウンの直前及び起動の直後に、ホスト１０との情報のやりとりを監視することによって、ハイバネーションデータが受信されていることを決定することができる。特に、ファイルは、ファイルのサイズに基づき、ハイバネーションデータであると推定され得る。ホスト１０がファイルを書き込んだ後すぐにパワーオフするということ、ホスト１０が起動した後すぐにファイルを読み出すということ、起動しファイルが読み出された後すぐにホスト１０によってＴＲＩＭコマンドが発行されること、ファイルを受信する前に異常に大きな入力または出力がホスト１０とハイブリッドドライブ１００との間で交換されるかどうか、等に基づき、ファイルがハイバネーションデータであると推定され得る。
【００４４】
いくつかの実施形態において、ハイバネーションデータは、複数ビットの情報を各々のメモリセルに格納することができるモードでハイバネーションデータ領域３５０に書き込まれ得る。例えば、ハイバネーションデータ領域３５０のメモリセルは、シングルビット情報よりも多くの情報を格納することが可能なマルチレベルセルとしてハイバネーションデータを格納することができる。マルチレベルセルへの書き込み時間はシングルレベルセルへよりもかなり長い。しかし、ハイバネーションデータの書き込みは、ホスト１０がパワーダウンしており、もはや能動的に使用中ではない時に行われるので、このようなレイテンシはシステムの実際の性能に悪く影響しない。さらに、マルチレベルセルのデータ保持力は、シングルレベルセルのデータ保持力よりも小さいことが知られている。しかしながら、ハイバネーションデータは、定義により、パワーダウンする前にホスト１０から受信した実質的に最後のファイルであり、起動した後ホスト１０によって読み出された基本的に最初のファイルであるので、ハイバネーションデータの寿命は、それほど実質的な問題ではない。
【００４５】
図４は、発明の実施形態にしたがって、ハイブリッドドライブにデータを格納するための方法ステップのフローチャートを説明する。その方法ステップは、図１及び図２のハイブリッドドライブ１００に関連して記述されるけれども、当業者は方法４００は他のタイプのシステムにおいて行われ得るということを理解するだろう。いくつかの実施形態で、方法４００の前に、ハイブリッドドライブ１００は、以前に保存されたハイバネーションデータに関連する所定のＬＢＡ範囲に基づいて、または、保存される次のファイルがハイバネーションデータであることを示しているコマンドのようなホスト１０によって提供される情報に基づいて、または、ホスト１０とハイブリッドドライブ１００との間の情報のやりとりを監視することによって、ホスト１０から受信されるハイバネーションデータを識別すべき方法を決定する。さらに、方法４００の前に、ハイブリッドドライブ１００は、ホスト１０からのハイバネーションデータを格納するために、フラッシュメモリデバイス１３５に十分な記憶容量を割り当てる。方法４００に関する制御アルゴリズムは、コントローラ１３３、フラッシュマネジャデバイス１３６、またはホスト１０にあり得る。
【００４６】
図４に示すように、方法４００は、ハイブリッドドライブ１００がホスト１０から格納されるべきハイバネーションデータを受信する際、ステップ４０１から開始される。上述したように、ハイブリッドドライブ１００は、ステップ４０１において受信したデータがハイバネーションデータを含み、次のステップにおいてその結果に応答するということを決定する。
【００４７】
ステップ４０２において、ハイブリッドドライブ１００は、ハイブリッドドライブ１００の移動部分に生じるダメージに関する可能性が最小にされるようにリード／ライトヘッド１２７を待機させ、スピンドルモータ１１４をスピンダウンし始める。
【００４８】
ステップ４０３において、ハイブリッドドライブ１００は、ステップ４０１において受信したデータをハイバネーションデータ領域３５０に書き込む。ステップ４０３は、ステップ４０２、つまり、リード／ライトヘッド１２７が待機され、スピンドルモータ１１４がスピンダウンされている間、と同時に行われ得る。上述したように、ハイバネーションデータ領域３５０は、データ領域３０３及びデータ領域３０４の少なくとも一つ、及び、イレースデータ領域３２０を含む。ハイバネーションデータ領域３５０は、イレースメモリブロックではないデータ領域３０３、３０４、及び／または３０５の少なくとも一つを含むので、そこに含まれるデータがデータ領域３０３及び／またはデータ領域３０４に書き込まれる前にまず消去される。データ領域３０３は非ダーティデータ３１３のみを含み、データ領域３０４はトリムされたデータ３１４のみを含み、データ領域３０５は使用されていないデータ３１５のみを含むので、これらのデータ領域の各々の内容は、ストレージディスク１１０にフラッシュされることなく消去され得る。
【００４９】
図５は、発明の実施形態における、揮発性メモリを有し不揮発性記憶装置に接続されるハイブリッドドライブ１００のようなコンピュータデバイスをハイバネートするための方法ステップのフローチャートを説明する。図１及び図２に示すハイブリッドドライブ１００と関連して方法ステップが記述されるけれども、当業者は、他のシステムタイプで方法５００が行われ得るということを理解するだろう。いくつかの実施形態において、方法５００の前に、ハイブリッドドライブ１００は、ホスト１０からのハイバネーションデータを格納するフラッシュメモリデバイス１３５に十分な記憶容量を割り当てる。方法５００のための制御アルゴリズムは、コントローラ１３３、フラッシュマネジャデバイス１３６、またはホスト１０にあり得る。
【００５０】
図５に示すように、方法５００は、コンピュータデバイスが例えばコンピュータデバイスのエンドユーザからハイバネートコマンドを受信する際、ステップ５０１から開始する。コンピュータデバイスは、ＤＲＡＭのような揮発性メモリを有し、半導体メモリ及び磁気メモリを含むハイブリッドドライブに接続される任意の技術的に可能なコンピュータデバイスであり得る。適切なコンピュータデバイスはデスクトップコンピュータ、ラップトップコンピュータ、スマートフォン、個人用デジタル補助装置（ＰＤＡ）、タブレットコンピュータ、または、データを格納及び処理するように構成された他のタイプのコンピュータデバイスを含む。
【００５１】
ステップ５０１でハイバネーションコマンドを受信した後、ステップ５０２において、磁気メモリに揮発性メモリの内容を格納することなく、半導体メモリの第１の部分及び第２の部分に揮発性メモリの内容を格納する。第１の部分は、イレースメモリブロックを含み、第２の部分は、磁気ドライブに格納されているデータ、古いハイバネーションデータ、及び／または使用されていないデータ、の何れかを格納しているメモリブロックを含む。すなわち、コンピュータデバイスは、フラッシュメモリデバイス１３５のハイバネーションデータ領域３５０にハイバネーションデータを格納する。
【００５２】
図６は、発明の実施形態における、揮発性メモリを有し不揮発性記憶装置に接続されているハイブリッドドライブ１００のようなコンピュータデバイスにデータを格納する方法ステップのフローチャートを説明する。方法ステップは、図１及び図２に示すように、ハイブリッドドライブ１００に関連して記述されるけれども、当業者は、方法６００が他のシステムタイプで実行され得るということを理解するだろう。方法６００に関する制御アルゴリズムは、コントローラ１３３、フラッシュマネジャデバイス１３６、またはホスト１０にあり得る。コンピュータデバイスは、方法５００に関連して上述したような任意の技術的に可能なコンピュータデバイスであ得る。
【００５３】
図６に示すように、方法６００は、コンピュータデバイスがコンピュータデバイスの通常動作中に不揮発性記憶装置にライトコマンドを送信する時、ステップ６０１で開始する。
【００５４】
ステップ６０２で、フラッシュメモリデバイス１３５に割り当てられた記憶スペース、つまり、ハイバネーションデータ領域３５０、の結合されたデータ記憶容量が所定の閾値よりも小さい時、コンピュータデバイスは、データストレージディスク１１０にデータを書き込む。つまり、ハイバネーションデータ領域３５０がハイバネーションデータを格納するための最小許容サイズである時、ハイバネーションデータ領域３５０は、前記最小許容サイズに等しいまたは前記最小許容サイズよりも大きいことを維持するように、コンピュータデバイスはデータストレージディスク１１０にデータを格納する。このように、ハイバネーションデータ領域３５０は、あるデータがデータストレージディスク１１０にフラッシュされることなく、ハイバネーションデータを即座に格納するために使用され得る。
【００５５】
以上のように、発明の実施形態において、ハイブリッドドライブのフラッシュメモリデバイスにハイバネーションデータを格納するためのシステム及び方法を提供する。ハイバネーションデータのために十分な記憶容量を有するフラッシュメモリデバイスにハイバネーションデータ領域を割り当てることによって、ハイブリッドドライブは、ハイブリッドドライブの記憶ディスク部分にデータを格納することもなく、いつでもハイバネーションデータを格納することができる。有利に、発明の実施形態において、ハイブリッドドライブのディスクドライブ部分をシャットダウンするとともに、ハイバネーションデータが格納され得る。したがって、物理的外乱からディスクドライブ部分を保護することができる。
【００５６】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００５７】
１００…ディスクドライブ、１１０…ストレージディスク、１２７…リード／ライトヘッド、１３３…コントローラ、１３４…ＲＡＭ、１３５…フラッシュメモリデバイス、３５０…ハイバネーションデータ領域。
【図１】
2014115977.tif 000003
【図２】
2014115977.tif 000004
【図３】
2014115977.tif 000005
【図４】
2014115977.tif 000006
【図５】
2014115977.tif 000007
【図６】
2014115977.tif 000008