(57)【特許請求の範囲】
【請求項１】
コンピューティングデバイスの、ハイバネート・モードを含む動作ステータスを監視する段階と、
前記ハイバネート・モードの通知を前記コンピューティングデバイスのオペレーティングシステムから受信する段階と、
前記通知に呼応して、揮発性システムメモリから不揮発性メモリデバイスへ、メモリデータをハイバネート・ファイルとしてコピーする段階と
前記メモリデータが前記不揮発性メモリデバイスにコピーされる前に、前記メモリデータを圧縮する段階と
を備え、
前記不揮発性メモリデバイスから前記オペレーティングシステムはブートされず、
前記ハイバネート・モードの前記通知を受信する段階は、
前記オペレーティングシステムからメモリダンプドライバへのコマンドを傍受する段階を有し、
前記コマンドは、前記メモリデータを前記揮発性システムメモリからハードドライブへセーブせよとの命令を含む方法。
【請求項２】
前記メモリデータを前記揮発性システムメモリから前記不揮発性メモリデバイスへ、前記ハイバネート・ファイルとしてコピーする段階は、
メモリダンプドライバからハードドライブへのデータ書き込みコマンドを傍受して、前記データ書き込みコマンドを前記不揮発性メモリデバイスへリダイレクトする段階を有する請求項１に記載の方法。
【請求項３】
前記不揮発性メモリデバイスはフラッシュメモリを含む請求項１または２に記載の方法。
【請求項４】
ハードドライブにスピンダウンを要求する段階をさらに備え、
前記要求は、前記メモリデータを前記揮発性システムメモリから前記不揮発性メモリデバイスへコピーする前に行われる請求項１から３のいずれか１項に記載の方法。
【請求項５】
前記メモリデータを前記揮発性システムメモリから前記不揮発性メモリデバイスへ、前記ハイバネート・ファイルとしてコピーする段階は、
前記オペレーティングシステムを、前記ハイバネート・ファイルにセーブされている前記メモリデータを利用して前記ハイバネート・モードからレジュームさせる請求項１から４のいずれか１項に記載の方法。
【請求項６】
基本入出力システム（ＢＩＯＳ）を、ＯＳブートローダからの呼び出しをリダイレクトするよう修正して、
修正された前記ＢＩＯＳによって、前記ハイバネート・ファイルが、ハードディスクからではなくて、前記不揮発性メモリデバイスから読み出される請求項５に記載の方法。
【請求項７】
リダイレクトされる前記呼び出しは、ＢＩＯＳ割り込み１３ｈｅｘ呼び出しである請求項６に記載の方法。
【請求項８】
不揮発性メモリデバイスと、
揮発性システムメモリと、
不揮発性メモリコントローラと、
プロセッサと、
オペレーティングシステムをブートする固体ディスクまたはハードドライブにではなくて、前記不揮発性メモリデバイスにハイバネート・ファイルをセーブするハイバネート・ファイルハンドラと、
ＢＩＯＳ割り込み１３ｈｅｘ呼び出しをリダイレクトして、前記不揮発性メモリデバイスから前記ハイバネート・ファイルを読み出すＢＩＯＳ側ハイバネート・ハンドラと、
前記不揮発性メモリコントローラに、サスペンド・モードの通知に呼応して、前記揮発性システムメモリから前記不揮発性メモリデバイスへ、メモリデータをコピーさせ、前記サスペンド・モードからのレジューム通知に呼応して、前記不揮発性メモリデバイスから前記揮発性システムメモリへ、前記メモリデータをコピーさせるサスペンド・ハンドラと、
前記メモリデータを前記不揮発性メモリデバイスにコピーするときに前記メモリデータを圧縮して、前記メモリデータを前記揮発性システムメモリにコピーするときに前記メモリデータを伸張する、前記不揮発性メモリコントローラ内に設けられるオンチップのアクセラレータと
を備えるコンピューティングデバイス。
【請求項９】
前記ハイバネート・ファイルハンドラは、メモリダンプドライバから前記ハードドライブへのデータ書き込みコマンドを傍受して、前記データ書き込みコマンドを前記不揮発性メモリデバイスへリダイレクトする小型コンピュータ用周辺機器インタフェース（ＳＣＳＩ）ミニポートドライバである請求項８に記載のコンピューティングデバイス。
【請求項１０】
前記メモリデータは、シリアルＡＴＡバスを介して、前記不揮発性メモリデバイスにコピーされる請求項１から７のいずれか１項に記載の方法。
【請求項１１】
前記不揮発性メモリデバイスはフラッシュメモリであり、圧縮された前記メモリデータは、シリアルＡＴＡバスを介して、前記不揮発性メモリデバイスにコピーされ、伸張された前記メモリデータは、前記シリアルＡＴＡバスを介して、前記揮発性システムメモリにコピーされる請求項８または９に記載のコンピューティングデバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本願は、２００９年１月５日提出の米国仮特許出願番号第６１／１４２，５０２号明細書の優先権を主張しており、この開示全体を参照としてここに組み込む。本願はさらに、２００９年１月６日提出の米国仮特許出願番号第６１／１４２，６９９号明細書の優先権を主張しており、この開示全体を参照としてここに組み込む。本願はさらに、２００９年１月９日提出の米国仮特許出願番号第６１／１４３，５４８号明細書の優先権を主張しており、この開示全体を参照としてここに組み込む。
【背景技術】
【０００２】
現代のコンピューティングデバイスは、利用されていないときには節電モードを利用する。ハイバネートとは、オペレーティングシステム（ＯＳ）が、揮発性システムメモリから、ハードドライブのＯＳブートパーティションへ、ハイバネート・ファイルの形でメモリデータをセーブして、その後にコンピューティングデバイスがシャットダウンするようなモードである。再度起動されるときには、コンピューティングデバイスの基本入出力システム（ＢＩＯＳ）がポストを行ってから、ＯＳブートローダをロードする。ＯＳブートローダは、ハイバネート・ファイル内のメモリデータを、揮発性システムメモリへコピーして戻す。ＯＳブートローダは、オペレーティングシステムをブートするのではなくて、休止されているオペレーティングシステムの動作をレジュームさせる。これにより、データがハイバネート前にセーブされていなかったとしても、現在実行されているアプリケーションがデータを維持することができる。
【０００３】
サスペンドとは、オペレーティングシステムが、コンピューティングデバイス内の殆どのデバイスに対する電力をシャットダウンするが、メモリデータを保存するために揮発性システムメモリだけには通電を続けるモードのことである。完全利用をレジュームするために、オペレーティングシステムは、各デバイスへの通電を開始して、保存されているメモリデータを利用して動作をレジュームする。サスペンドは、ハイバネートよりもかなり多くの電力を必要とはするが、格段に速い。
【０００４】
これらモードは、それぞれ目的を持っているが、望ましくない制約も有している。ハイバネート・モードは、作動開始が遅くなるおそれがあり、データを失う場合もある。ハイバネート・モードは、ハードドライブがメモリデータをハイバネート・ファイルにセーブする速度による制限を受けることから作動開始が遅い。コンピュータのデータは殆どの場合、スピニングメディアハードディスクドライブに格納され、このハードディスクドライブは、ハイバネート・モードの開始時にスピンしているために、データの安全性に問題が生じる。デバイスがまだスピンしているときにコンピューティングデバイスが動かされると、潜在的に危険である。ユーザがラップトップでハイバネートを選択して、蓋部を閉めて歩き出すことにより、ハードドライブおよび含まれているデータに損傷が生じる場合がある。さらに、ハードドライブがスピンしている間に、ハードドライブ自身およびコンピューティングデバイスは両方とも電力を利用している。これは、ハイバネートが重要なバッテリーアラームにより生じたものである場合には、コンピューティングデバイスがハイバネートの完了前に電力を失うことも考えられるので、望ましくない。デバイスのバッテリーが失われなかったとしても、さらなる電力の利用は、節電モードの観点から矛盾する。
【０００５】
サスペンド・モードもまた、望ましくない制約を有している。ハイバネートより格段に速いとは行っても、サスペンドは、揮発性システムメモリが給電され続けるために、より多くの電力を利用する。さらに、サスペンド中にコンピューティングデバイスの電源が失われると、メモリデータを復帰することができなくなり、ハードディスクにセーブされなかった情報が全て失われる可能性がある。これは、ユーザがコンピューティングデバイスのプラグを抜いた場合、または、電源の故障といった事象により、容易に生じる可能性がある。
【０００６】
本明細書の背景技術の記載は、開示の内容を概略する意図を有する。現在の発明者のこの背景技術セクションに記載している業績は、記載されなければ出願時に先行技術になりえないものを含めて、いずれも本開示に対する自認した先行技術であることを明示も暗示もしていない。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
本発明の概要は、以下の詳細な記載および図面において詳述する主題の導入部である。従ってこの概要は、重要な特徴を記載しているものとして、あるいは、請求されている主題の範囲を限定する意図を有するものとして解釈されるべきではない。
【課題を解決するための手段】
【０００８】
一実施形態では、コンピューティングデバイスの、サスペンド・モードを含む動作ステータスを監視する段階と、サスペンド・モードの通知を検知することに呼応して、揮発性システムメモリから不揮発性メモリデバイスへ、メモリデータをコピーするよう不揮発性メモリコントローラに指示する段階と、サスペンド・モードからのレジューム要求を受信することに呼応して、不揮発性メモリデバイスから揮発性システムメモリへ、メモリデータをコピーするよう不揮発性メモリコントローラに指示する段階とを備える方法が提供される。本実施形態は、不揮発性メモリコントローラから、メモリデータが不揮発性メモリデバイスへコピーされた旨の通知を受信する段階と、通知を受信することに呼応して、揮発性システムメモリへの電力をシャットダウンする段階と、サスペンド・モードからのウェークアップ要求を受信することに呼応して、揮発性システムメモリへの通電を開始する段階とをさらに備える。本実施形態は、不揮発性メモリコントローラから、メモリデータが不揮発性メモリデバイスから揮発性システムメモリへコピーされた旨の通知を受信する段階をさらに備え、通知は、メモリデータが、コンピューティングデバイスのオペレーティングシステムによるサスペンド・モードからのレジュームに利用可能であることを示す。
【０００９】
別の実施形態では、コンピューティングデバイスの、ハイバネート・モードを含む動作ステータスを監視する段階と、ハイバネート・モードの通知をコンピューティングデバイスのオペレーティングシステムから受信する段階と、通知に呼応して、揮発性システムメモリから不揮発性メモリデバイスへ、メモリデータをハイバネート・ファイルとしてコピーする段階とを備え、不揮発性メモリデバイスからオペレーティングシステムはブートされない方法が提供される。本実施形態は、ハードドライブにスピンダウンを要求する段階をさらに備え、要求は、メモリデータを揮発性システムメモリから不揮発性メモリデバイスへコピーする前に行われる。
【００１０】
また別の実施形態では、不揮発性メモリデバイスと、揮発性システムメモリと、プロセッサと、オペレーティングシステムをブートする固体ディスクまたはハードドライブにではなくて、不揮発性メモリデバイスにハイバネート・ファイルをセーブするハイバネート・ファイルハンドラと、ＢＩＯＳ割り込み１３ｈｅｘ呼び出しをリダイレクトして、不揮発性メモリデバイスからハイバネート・ファイルを読み出すＢＩＯＳ側ハイバネート・ハンドラとを備えるコンピューティングデバイスが提供される。本実施形態は、不揮発性メモリコントローラと、不揮発性メモリコントローラに、サスペンド・モードの通知に呼応して、揮発性システムメモリから不揮発性メモリデバイスへ、メモリデータをコピーさせ、サスペンド・モードからのレジューム通知に呼応して、不揮発性メモリデバイスから揮発性システムメモリへ、メモリデータをコピーさせるサスペンド・ハンドラとをさらに備える。本実施形態は、不揮発性メモリコントローラ内に設けられるオンチップのアクセラレータをさらに備え、オンチップのアクセラレータは、メモリデータを不揮発性メモリデバイスにコピーするときにメモリデータを圧縮して、メモリデータを揮発性システムメモリにコピーするときにメモリデータを伸張する。
【図面の簡単な説明】
【００１１】
本詳細な記載は添付図面を参照して行われる。図面においては、各参照番号の左端の桁が、その参照番号が最初に現われる図番を示している。本記載および図面で別のインスタンスにおいて同じ参照番号が利用されている場合には、同様または同一の部材であることを示している。
【００１２】
【図１】不揮発性メモリデバイスを利用してハイバネートまたはサスペンドを行う例示的な動作環境の一例を示す。
【００１３】
【図２】不揮発性メモリデバイスを利用してコンピューティングデバイスをサスペンドまたはレジュームする方法を示す。
【００１４】
【図３】不揮発性メモリデバイスを利用してコンピューティングデバイスをハイバネートさせる方法を示す。
【００１５】
【図４】不揮発性メモリデバイスを利用してコンピューティングデバイスをハイバネートからレジュームする方法を示す。
【発明を実施するための形態】
【００１６】
上述した背景技術で述べたように、従来のハイバネートおよびサスペンド・モードを実行する方法は、望ましくない制約を有している。ハイバネート・モードは遅く、ハードドライブに損傷を与える場合がある。サスペンド・モードは電力使用量が多く、電源が故障した場合にメモリデータを保存することができない。本開示は、フラッシュメモリ等の不揮発性メモリデバイスを利用して、ハイバネートまたはサスペンド中にメモリデータを格納することができる技術を記載する。この技術によって、ハードドライブおよび／またはデータがより安全なものとなり、電力使用量を低減させることができる。
【００１７】
以下の記載においては、動作環境の一例を示す。さらに、この一例である動作環境および他の環境で利用可能な方法の一例を示す。以下の記載では、あくまで例示として環境について参照するのであって、以下の実装例はこの環境例に限定はされない。
【００１８】
＜動作環境の一例＞
図１は、コンピューティングデバイス１０２を有する例示的な動作環境１００を示す。コンピューティングデバイス１０２は、１以上のプロセッサ１０４、１以上のコンピュータ可読媒体１０６、揮発性システムメモリ１０８、および不揮発性メモリデバイス１１０を含む。コンピュータ可読媒体１０６には、揮発性（例えば静的ＲＡＭ（ＳＲＡＭ））および不揮発性メモリ（例えばフラッシュメモリ、ＢＩＯＳチップ、固体ディスク、スピニングメディアハードディスクドライブ、またはＣＤ／ＤＶＤ）といった様々な種類の媒体が含まれてよい。コンピュータ可読媒体１０６は、揮発性システムメモリ１０８、不揮発性メモリデバイス１１０、および／または、任意の他のコンピュータ可読媒体を含んでよい。揮発性システムメモリ１０８は、電力が失われるとデータを失う。
【００１９】
不揮発性メモリデバイス１１０は、電力が失われてもデータを維持することができる。不揮発性メモリデバイス１１０は、フラッシュメモリまたは固体ディスク等の不揮発性メモリを含んでよい。不揮発性メモリデバイス１１０は、揮発性システムメモリ１０８の格納容量程度に小さい格納容量を有してよく、圧縮技術を利用する場合にはこれよりもさらに小さい格納容量を有してよい。ハイバネートが実装されるコンピューティングデバイスでは、不揮発性メモリデバイス１１０は、ＯＳブート可能スピニングメディアハードディスクドライブまたはＯＳブート可能固体ディスクを含まない。ＯＳブート可能メモリは、オペレーティングシステム１１２およびＯＳブートローダ１１４のためのブート可能パーティションを含んでいる。ハイバネートおよびサスペンドの両方が実装されるコンピューティングデバイスでは、ハイバネートおよびサスペンドの各々に別個の不揮発性メモリデバイスが用意されてよい。
【００２０】
不揮発性メモリデバイス１１０とコンピューティングデバイス１０２の他のコンポーネントとをインタフェースするメカニズムは、これらに限定はされないが、内部データバス、小型コンピュータ用周辺機器インタフェース（ＳＣＳＩ）、インターネット用ＳＣＳＩ（ｉＳＣＳＩ）、ペリフェラルコンポーネントインターコネクトバス（ＰＣＩ）、ＰＣＩ拡張バス（ＰＣＩ−Ｘ）、ペリフェラルコンポーネントインターコネクト・エクスプレスバス（ＰＣＩｅ）、ユニバーサルシリアルバス（ＵＳＢ）、シリアルＡＴＡバス（ＳＡＴＡ）、シリアル接続ＳＣＳＩ（ＳＡＳ）、またはファイバーチャネルネットワーク（ＦＣ）を含んでよい。不揮発性メモリデバイス１１０の一例は、ＰＣＩｅ接続によってコンピューティングデバイス１０２の他のコンポーネントと通信可能に接続されたフラッシュメモリデバイスであってよい。
【００２１】
コンピュータ可読媒体１０６は、オペレーティングシステム（ＯＳ）１１２、ＯＳブートローダ１１４、ハイバネート・ファイルハンドラ１１６、メモリダンプドライバ１１８、およびＢＩＯＳ１２０を含むものとして示されている。オペレーティングシステム１１２は、コンピューティングデバイス１０２を動作させる。ＯＳブートローダ１１４は通常、オペレーティングシステム１１２をインストールするときにインストールされる。コンピューティングデバイス１０２の通常ブート時には、ＢＩＯＳ１２０はＯＳブートローダ１１４をロードして、これによりオペレーティングシステム１１２がロードされる。
【００２２】
ハイバネート・ファイルハンドラ１１６は、メモリデータ１２２のハードドライブへの書き込みを傍受して、不揮発性メモリデバイス１１０へとリダイレクトするソフトウェアおよび／またはハードウェアであってよい。一部の例では、ハイバネート・ファイルハンドラ１１６は、ドライバ１１８がメモリデータ１２２をハードドライブに書き込もうとすると、該メモリデータ１２２をメモリダンプドライバ１１８から傍受するＳＣＳＩミニポートドライバであってよい。他の例では、ハイバネート・ファイルハンドラ１１６は、オペレーティングシステム１１２からメモリダンプドライバ１１８へのコマンドを傍受して、スピニング媒体ハードディスクドライブへのハイバネート・ファイルの格納を要求するソフトウェアであってよい。ハイバネート・ファイルハンドラ１１６は、このコマンドを傍受して、ハイバネート・ファイルをスピニングメディアハードディスクドライブに格納する代わりに、ハイバネート・ファイルをメモリデバイス１１０にセーブする。または、メモリダンプドライバ１１８は、ハイバネート・ファイルをメモリデバイス１１０に格納する。この場合には、環境１００は別個にハイバネート・ファイルハンドラ１１６を含む必要はない。ハイバネート・フィーチャを実装しないシステムにおける環境１００は、ハイバネート・ファイルハンドラ１１６およびメモリダンプドライバ１１８を含む必要はない。
【００２３】
ＢＩＯＳ１２０は、サスペンド・ハンドラ１２４およびＢＩＯＳ側ハイバネート・ハンドラ１２６を含むものとして示されているが、ハイバネートまたはサスペンドの一方のみが実装される場合には両方を備える必要はない。サスペンド・ハンドラ１２４は、不揮発性メモリコントローラ１２８に、揮発性システムメモリ１０８および不揮発性メモリデバイス１１０から、または、揮発性メモリ１０８および不揮発性メモリデバイス１１０へと、メモリデータ１２２をコピーせよ、と要求するコンピュータ命令を含む。サスペンド・ハンドラ１２４はさらに、不揮発性メモリコントローラ１２８に、揮発性システムメモリ１０８内の１以上の位置のアドレスを提供してよい。
【００２４】
ＢＩＯＳ側ハイバネート・ハンドラ１２６は、ＯＳブートローダ１１４からの要求をリダイレクトするためのコンピュータ命令を含む。要求には、ＢＩＯＳ  ＩＮＴ  １３ｈｅｘ要求が含まれてよく、これは、要求が意図しているハードディスクからではなくて、不揮発性メモリデバイス１１０から読み出すように、リダイレクトされる。このリダイレクトによって、ハイバネート・ファイルがシステムブートアップ時に不揮発性メモリデバイス１１０からロードされる。次いでオペレーティングシステム１１２は、ロードされたメモリデータ１２２を利用して、ハイバネートからレジュームする。
【００２５】
揮発性システムメモリ１０８は、メモリデータ１２２を含むものとして示されており、メモリデータ１２２は、ハイバネートまたはサスペンド中には不揮発性メモリデバイス１１０に保存される。不揮発性メモリデバイス１１０は、不揮発性メモリコントローラ１２８を含む。不揮発性メモリコントローラ１２８は、メモリデータ１２２を、不揮発性メモリデバイス１１０から、または不揮発性メモリデバイス１１０へ、コピーする。メモリデータ１２２は、不揮発性メモリデバイス１１０にセーブされる前に圧縮され、揮発性システムメモリ１０８にセーブされる前に伸張される。この圧縮は、サスペンド・ハンドラ１２４内のソフトウェアにより、オンチップのアクセラレータにより、またはこれら両方の組み合わせにより実行されたり、実行を助けられたりする。オンチップのアクセラレータは、不揮発性メモリコントローラ１２８内に設けられてよい。図１に示す部材の１以上を、分割したり、組み合わせたりすることもできる。従って、環境１００は、上述した技術を利用することができる数多くの環境の一部に過ぎない。
【００２６】
＜方法の一例＞
本開示では、不揮発性メモリデバイスを利用してメモリデータを保存するコンピュータデバイスのハイバネートまたはサスペンド技術が説明される。これにより、さらなる節電が行われ、データの安全性を向上させることができる。これら技術は、３つの別個の方法を用いて記載されるが、それぞれ独立してまたは組み合わせられて作動させられてもよい。これら方法の態様は、ハードウェア、ファームウェア、ソフトウェア、またはこれらの組み合わせで実装することができる。方法は、１以上の実体により実行される動作を特定する一式の動作として示されているが、順序は必ずしも示されるものに限定されない。
【００２７】
図２は、不揮発性メモリデバイスを利用してコンピューティングデバイスをサスペンドまたはレジュームする方法２００を示す。２０２で、コンピューティングデバイスの動作ステータスを監視する。動作ステータスにはサスペンド・モードが含まれる。２０４で、サスペンド・モードの通知を、コンピューティングデバイスのオペレーティングシステム（ＯＳ）から受信する。例えば、ＢＩＯＳ１２０内のサスペンド・ハンドラ１２４（図１）が、オペレーティングシステム１１２からのサスペンドの通知を受信する。
【００２８】
２０６で、不揮発性メモリコントローラは、揮発性システムメモリから不揮発性メモリデバイスにメモリデータをコピーするよう指示される。例えば、サスペンド・ハンドラ１２４は、不揮発性メモリコントローラ１２８に対して、揮発性システムメモリ１０８から不揮発性メモリデバイス１１０にメモリデータ１２２をコピーせよと指示する要求を発行する。要求には、コピーする揮発性システムメモリ１０８内の対応する位置の１以上のアドレスが含まれてよい。この場合には、コントローラ１２８は、アドレス指定されたメモリデータ１２２をコピーする。逆に、アドレスが提供されない場合には、コントローラ１２８は、全メモリデータ１２２をコピーする。
【００２９】
メモリデータ１２２を不揮発性メモリデバイス１１０に格納することにより、電力が失われたときでも不揮発性メモリデバイス１１０は自身のデータを保持することができるので、データの安全性が増す。従来のサスペンド中に電力が失われると、コンピューティングデバイス１０２がハードシャットダウンして、メモリデータ１２２が失われる。この状態から電力を復旧するには、通常のシステムブートをする必要があり、これはサスペンド状態からのレジュームよりもかなり長い時間が必要となる。
【００３０】
２０８で、メモリデータがコピーされた旨の通知を、不揮発性メモリコントローラから受信する。例えば、サスペンド・ハンドラ１２４が、コントローラ１２８から、メモリデータ１２２が不揮発性メモリデバイス１１０にコピーされた旨の通知を受信する。
【００３１】
２１０で、２０８での通知の受信に呼応して、揮発性システムメモリへの電力をシャットダウンする。ここでは、サスペンド・ハンドラ１２４、または、ＢＩＯＳ１２０内の他のコンポーネントが、揮発性システムメモリ１０８への電力をシャットダウンする。これにより、コンピューティングデバイス１０２がサスペンド・モードにある間にさらなる節電が可能となる。
【００３２】
２１２で、サスペンド・モードからのレジューム要求を受信することに呼応して、揮発性システムメモリに通電を開始する。これは、２１０が実装された場合に実行される。サスペンドからのレジューム要求は、様々なソース（例えば、キーボードのキーの押下、マウスの動きまたはクリック動作、システムのウェイクアップ・イベント、またはウェイク・オン・ラン（ＷＯＬ））から生じてよい。例えば、サスペンド・ハンドラ１２４は、レジューム要求を受信して、揮発性システムメモリ１０８への通電を開始する。
【００３３】
２１４で、不揮発性メモリコントローラは、不揮発性メモリデバイスから揮発性システムメモリへ、メモリデータをコピーするよう指示される。２１４におけるこの指示は、２０６における指示に類似しているが、メモリデータが、揮発性システムメモリからのコピーを要求されるのではなく、揮発性システムメモリへのコピーを要求される点が異なる。２１４で、揮発性システムメモリの内容を、サスペンド前の状態に復帰させる。これにより、オペレーティングシステムは、サスペンドにより動作が中断したところから、動作を続けることができるようになる。この例の説明を続けると、サスペンド・ハンドラ１２４は、不揮発性メモリコントローラ１２８に対して、メモリデータ１２２を不揮発性メモリデバイス１１０から揮発性システムメモリ１０８にコピーするよう要求する。
【００３４】
この技術では、オプションとして、不揮発性メモリコントローラ１２８に接続されるオンチップのアクセラレータを利用することで、または、サスペンド・ハンドラ１２４を利用することで、不揮発性メモリデバイスおよび揮発性システムメモリへの格納前にメモリデータを圧縮・伸張することができる。メモリデータを圧縮することで、揮発性システムメモリの内容を格納するために利用されるメモリリソースの量が少なくてすむ。圧縮・伸張が十分高速に行われる場合には、メモリデータの不揮発性メモリデバイスへのセーブおよび不揮発性メモリデバイスからの取得に要する時間が短くてすむので、メモリデバイスの格納および取得を高速に行うことができる。
【００３５】
２１６で、メモリデータがコピーされた旨の通知を受信する。この通知を受けた後で、あたかも不揮発性メモリデバイスがメモリデータのセーブに利用されなかったかのように、サスペンドからレジュームする従来の方法を実装してもよいが、必須ではない。例えば、サスペンド・ハンドラ１２４は、コントローラ１２８から、メモリデータ１２２が揮発性システムメモリ１０８に復帰された旨の通知を受信する。サスペンド・ハンドラ１２４またはＢＩＯＳ１２０内の他のコンポーネントは、従来の方法を利用してコンピューティングデバイス１０２をレジュームする動作を続けてよい。オペレーティングシステム１１２は、サスペンド中にＯＦＦとされたデバイス各々に電力を復旧することができ、メモリデータ１２２を利用して、あたかもサスペンドが行われなかったかのように動作を続けることができる。
【００３６】
図３は、ハイバネート・ファイルを格納するために不揮発性メモリデバイスを利用するコンピューティングデバイスのハイバネート方法３００を示す。方法３００は、方法２００を実装するコンピューティングデバイス上に実装されてよい。
【００３７】
３０２で、コンピューティングデバイスの動作ステータスを監視する。動作ステータスにはハイバネート・モードが含まれる。３０４で、ハイバネート・モードの通知を、コンピューティングデバイスのオペレーティングシステム（ＯＳ）から受信する。３０６で、揮発性システムメモリから不揮発性メモリデバイスに、メモリデータをハイバネート・ファイルの形でコピーする。従来のハイバネートにおいては、オペレーティングシステムがメモリダンプドライバをロードして、メモリダンプドライバがメモリデータを、ハードドライブ上に位置しているＯＳブートパーティション上のハイバネート・ファイルにダンプする。この方法においては、メモリダンプドライバを修正する、および／または、ハイバネート・ファイルハンドラを利用する。ハイバネート・ファイルハンドラは、コンピューティングデバイス（図１のコンピューティングデバイス１０２等）に接続されるコンピュータソフトウェアを含んでよい。
【００３８】
一例としては、ハイバネート・ファイルハンドラ１１６は、ハイバネートの通知を受信する。ハイバネート・ファイルハンドラ１１６は、メモリダンプドライバ１１８からの各書き込みコマンドを傍受して、各書き込みコマンドを不揮発性メモリデバイス１１０にリダイレクトする。これにより、ハイバネート・ファイルは、書き込みコマンド（１または複数）が意図していたハードドライブにではなくて、不揮発性メモリデバイス１１０に格納される。
【００３９】
別の例では、ハイバネート・ファイルハンドラ１１６が、オペレーティングシステム１１２からメモリダンプドライバ１１８へのコマンドを傍受する。コマンドは、元々は、メモリデータ１２２をハードドライブにセーブするようメモリダンプドライバ１１８に命令することが意図されている。ハイバネート・ファイルハンドラ１１６は、このコマンドを傍受して、メモリデータ１２２をハイバネート・ファイルにダンプする。ハイバネート・ファイルは、コマンドが意図していたハードドライブにではなくて、不揮発性メモリデバイス１１０にセーブされる。
【００４０】
別の例としては、メモリダンプドライバ１１８は、メモリデータ１２２を、ハードドライブのＯＳブートパーティションにではなくて、不揮発性メモリデバイス１１０にコピーするよう修正される。この場合、方法は、別個のハイバネート・ファイルハンドラ１１６の利用を差し控える。
【００４１】
３０８で、オペレーティングシステムは、ハイバネート・ファイルをセーブした旨の報告を受ける。これにより、オペレーティングシステムは、コンピューティングデバイスの様々なコンポーネントに対する電力のシャットダウンを続ける。ハイバネート・ファイルハンドラ１１６がメモリダンプドライバ１１８からの各書き込みコマンドを傍受する例においては、ハンドラ１１６は、ドライバ１１８に対して通知を行い、ドライバ１１８がオペレーティングシステム１１２に対して通知を行う。ハイバネート・ファイルハンドラ１１６がオペレーティングシステム１１２からメモリダンプドライバ１１８へのコマンドを傍受する例においては、ハンドラ１１６は、メモリデータ１２２のコピーが完了したときに、オペレーティングシステム１１２に対して通知を送る。メモリダンプドライバ１１８が修正されている例においては、ドライバ１１８はオペレーティングシステム１１２に通知を行う。３０８における通知によって、オペレーティングシステム１１２は、ハイバネート・モードにあるシステムのシャットダウンを続けることができる。
【００４２】
ハイバネート・ファイルを、ＯＳブートディスクとは別個の不揮発性メモリデバイスに格納することにより、不揮発性メモリデバイスがＯＳブートディスクよりも高速な場合に、ハイバネートおよびレジュームがより高速に行われる。ＯＳブートディスクとは、ＯＳのブートパーティションを有するディスクである。ＯＳブートディスクが固体ディスクである場合には、高速メモリを利用してハイバネート・ファイルを格納することができるので、この方法は依然として有用である。ＯＳブートディスクのサイズ要件はかなり大きいので、コスト面から最高速度のメモリを大量に利用することができない。さらに、固体ディスクをＯＳブートディスクとして利用することは、容量に対するコストがスピニングメディアハードディスクドライブのものよりも大きくなるために、コスト面から実現不可能である。方法３００の不揮発性メモリデバイスは、ハイバネート・ファイルのみを格納することができる程度の小ささであってよい。この場合には、最高速度のメモリを利用するとコスト面で効率的であることが多い。
【００４３】
加えて、本技術では、コンピューティングデバイス内の１以上のスピニングメディアハードディスクドライブにスピンダウンを要求する場合がある。これにより、さらなる節電が行われ、データの安全性を向上させることができる。ハイバネート・ファイルの格納には別個の不揮発性メモリデバイスを利用するので、ハイバネート・プロセスが始まるとスピニングメディアハードディスクドライブは必要なくなり、安全にスピンダウンすることができる。この動作は、最大の節電効果およびデータの安全性が求められる場合には、３０６の前に行われる。
【００４４】
図４は、方法２００および／または３００を実装するコンピューティングデバイスに実装可能な、コンピューティングデバイスをハイバネートからレジュームさせる方法４００を示す。
【００４５】
４０２で、ブートディスクからハイバネート・ファイルを読み出せ、という要求を受信する。一部の従来の方法では、ハイバネートが終了すると、ＯＳブートローダはＢＩＯＳ割り込み１３ｈｅｘを利用して、ハイバネート・ファイルをＯＳブートディスクから読み出す。この方法では、ＢＩＯＳ側ハイバネート・ハンドラが代わりに要求を受信する。例えば、図１のＢＩＯＳ側ハイバネート・ハンドラ１２６が、ハイバネート・ファイルの全てまたは一部の読み出し要求を受信する。受信された要求は、ＯＳブートローダ１１４からのものである。
【００４６】
４０４で、ＯＳブートディスクからのハイバネート・ファイルの読み出し要求をリダイレクトして、ハイバネート・ファイルを不揮発性メモリデバイスから読み出す。この例の説明を続けると、ＢＩＯＳ側ハイバネート・ハンドラ１２６は、要求されているＯＳブートディスクからではなくて、不揮発性メモリデバイス１１０からハイバネート・ファイルを読み出す。ハイバネート・ファイルが見当たらない場合には、ＢＩＯＳ側ハイバネート・ハンドラ１２６は、ＯＳブートディスクから読み出す。ハイバネート・ファイル内のメモリデータ１２２が揮発性システムメモリ１０８へロードされると、オペレーティングシステム１１２は、メモリデータ１２２を利用して動作をレジュームする。
【００４７】
ＯＳブートローダ１１４は、不揮発性メモリデバイス１１０からハイバネート・ファイルを読み出すよう修正されてよく、リダイレクトは利用されない。この場合には、ＢＩＯＳ側ハイバネート・ハンドラ１２６は、ＯＳブートローダ１１４の一部であり、修正されたＯＳブートローダは、不揮発性メモリデバイスからハイバネート・ファイルを要求して、ハイバネート・ファイル内のメモリデータを揮発性システムメモリにロードする。
【００４８】
上述した技術の１以上は、入力データに動作を行って出力を生成する機能を実行させるべくコンピュータプログラムを実行する１以上のプログラム可能プロセッサにより実行されてよい。通常、技術は、全てがハードウェアの実施形態、全てがソフトウェアの実施形態、あるいは、ハードウェアコンポーネントおよびソフトウェアコンポーネントの両方を備える実施形態という形態をとることができる。一実装例では、方法が実装されるソフトウェアは、これらに限定はされないが、ファームウェア、常駐ソフトウェア、マイクロコード等を含んでよい。さらに、方法は、コンピュータまたはその他の命令実行システムにより、またはこれらとの関連で利用されるプログラムコードを提供するコンピュータ利用可能媒体またはコンピュータ可読媒体からアクセス可能なコンピュータプログラムプロダクトの形態をとることもできる。
【００４９】
本記載の趣旨においては、コンピュータ利用可能媒体またはコンピュータ可毒媒体とは、命令実行システム、装置、またはデバイスにより、またはこれらとの関連で利用可能なプログラムを含む、格納する、通信する、伝播させる、またはトランスポートすることのできる任意の装置のことであってよい。媒体は、電子、磁気、光学、電磁気、赤外線、または半導体システム（または装置、デバイス）、または伝播媒体であってよい。コンピュータ可読媒体の例には、半導体または固体メモリ、磁気テープ、取り外し可能コンピュータディスク、ＲＡＭ、ＲＯＭ、剛性磁気ディスクおよび光ディスクが含まれる。光ディスクの現在の例には、ＣＤ−ＲＯＭ、ＣＤ−Ｒ／Ｗ、およびＤＶＤが含まれる。
【００５０】
主題を構造的特徴および／または方法論的な技法および／または動作により記載してきたが、添付請求項で定義される主題は、必ずしも上述した特定の特徴、技法、または動作（実行順序を含めて）に限定されないことに留意されたい。
【図１】
0005565778.tif 000002
【図２】
0005565778.tif 000003
【図３】
0005565778.tif 000004
【図４】
0005565778.tif 000005