(57)【特許請求の範囲】
【請求項１】
コンピューティングシステムのストレージデバイスにおいて電力モード変更の要求を識別するステップであって、該電力モード変更の要求は、前記ストレージデバイスの潜在的な低電力状態を指示する、ステップと、
ダンプコマンドを表す第１のコマンドを検出するステップと；
前記第１のコマンドに応答して、前記ストレージデバイスに関連付けられるコンテキストを、ホストメモリに直接転送するステップであって、前記コンテキストは、前記ストレージデバイスと前記ホストメモリとの間の経路を提供する経路機構において生成されるバイナリラージデータ（ブロブ）の一部であり、前記ブロブは、前記ホストメモリのコンテンツ、暗号通信に署名するランダムな数字、暗号化データ、認証のための署名、のうちの少なくとも１つを更にホストする、ステップと、
前記コンテキストを前記ホストメモリで保存し、前記ストレージデバイスを低電力状態とするステップであって、前記コンテキストを有する前記ブロブは、前記経路機構において暗号化されて前記ホストメモリに転送され、前記コンテキストは、リストアコマンドを含む第２のコマンドの発行に先行して、１つ以上のリロードの試みが前記ストレージデバイスによって行われる場合に再使用又は変更から保護するよう、アンチリプレイコンテキストとして暗号化される、ステップと、
を含む、方法。
【請求項２】
前記ストレージデバイスにおいて電力の変化を識別するステップであって、前記電力の変化は、前記ストレージデバイスのパワーオンを指示する、ステップと、
前記リストアコマンドを含む前記第２のコマンドを検出するステップであって、当該検出は、前記ストレージデバイスにおける前記コンテキストのリストアの要求を指示する内部の不揮発性フラグの設定を検出することを含む、ステップと、
前記リストアコマンドに応答して、前記コンテキストを有する前記ブロブのコンテンツを、前記ホストメモリから前記ストレージデバイスに戻すよう直接転送するステップであって、前記ブロブは、前記ストレージデバイスでリストアされるよう復号されたコンテキストを含む、ステップと、
前記コンテキストを、リストアされたコンテキストとして、前記ストレージデバイスでリストアするステップと、
を更に含む、請求項１に記載の方法。
【請求項３】
前記ストレージデバイスは、フラッシュメモリを含む固体ドライブ（ＳＳＤ）を備え、前記ホストメモリは、動的ランダムアクセスメモリ（ＤＲＡＭ）を備える、請求項１に記載の方法。
【請求項４】
前記コンテキストは、前記ストレージデバイスに関連付けられるデータ構造を備え、前記第１のコマンドは、前記ストレージデバイスの電力状態の変化に応答して発行され、前記電力状態は、スリープ、ハイバネート、スランバ、スタンバイ及び運用状態のうちの少なくとも１つを含む、
請求項１に記載の方法。
【請求項５】
前記第１及び第２のコマンドは、シリアルＡＴＡ（ＳＡＴＡ）を含む接続又はインタフェースを介して通信されるベンダ固有のコマンドを含む、
請求項１に記載の方法。
【請求項６】
装置であって、
コンピューティングシステムのストレージデバイスにおける電力モード変更の要求を識別する第１のロジックを備え、該電力モード変更の要求は、前記ストレージデバイスの潜在的な低電力状態を指示し、前記第１のロジックは、ダンプコマンドを表す第１のコマンドを更に検出し、
前記第１のコマンドに応答して、前記ストレージデバイスに関連付けられるコンテキストを、ホストメモリに直接転送する第２のロジックを備え、前記コンテキストは、前記ストレージデバイスと前記ホストメモリとの間の経路を提供する経路機構において生成されるバイナリラージデータ（ブロブ）の一部であり、前記ブロブは、前記ホストメモリのコンテンツ、暗号通信に署名するランダムな数字、暗号化データ、認証のための署名、のうちの少なくとも１つを更にホストし、
前記コンテキストを前記ホストメモリで保存し、前記ストレージデバイスを低電力状態とする第３のロジックを備え、前記コンテキストを有する前記ブロブは、前記経路機構において暗号化されて前記ホストメモリに転送され、前記コンテキストは、リストアコマンドを含む第２のコマンドの発行に先行して、１つ以上のリロードの試みが前記ストレージデバイスによって行われる場合に再使用又は変更から保護するよう、アンチリプレイコンテキストとして暗号化される、
装置。
【請求項７】
前記第１のロジックが更に、前記ストレージデバイスにおける電力の変化を識別し、前記電力の変化は、前記ストレージデバイスのパワーオンを指示し、
前記第２のロジックが更に、前記リストアコマンドを含む前記第２のコマンドを検出し、当該検出は、前記ストレージデバイスにおける前記コンテキストのリストアの要求を指示する内部の不揮発性フラグが設定されていることを検出することを含み、
前記第３のロジックが更に、前記コンテキストを有する前記ブロブのコンテンツを、前記ホストメモリから前記ストレージデバイスに戻すよう直接転送し、前記ブロブは、前記ストレージデバイスでリストアされるよう復号されたコンテキストを含み、
第４のロジックが、前記コンテキストを、リストアされたコンテキストとして、前記ストレージデバイスでリストアする、
請求項６に記載の装置。
【請求項８】
前記ストレージデバイスは、フラッシュメモリを含む固体ドライブ（ＳＳＤ）を備え、前記ホストメモリは、動的ランダムアクセスメモリ（ＤＲＡＭ）を備える、請求項６に記載の装置。
【請求項９】
前記コンテキストは、前記ストレージデバイスに関連付けられるデータ構造を備え、前記第１のコマンドは、前記ストレージデバイスの電力状態の変化に応答して発行され、前記電力状態は、スリープ、ハイバネート、スランバ、スタンバイ及び運用状態のうちの少なくとも１つを含む、
請求項６に記載の装置。
【請求項１０】
前記第１及び第２のコマンドは、シリアルＡＴＡ（ＳＡＴＡ）を含む接続又はインタフェースを介して通信されるベンダ固有のコマンドを含む、
請求項６に記載の装置。
【請求項１１】
コンピューティングデバイスにおいて実行されたことに応答して、該コンピューティングシステムに請求項１乃至５のいずれか一項に記載の動作を実行させる、コンピュータプログラム。
【請求項１２】
請求項１乃至５のいずれか一項に記載の動作を実行する機構を備えるシステム。
【請求項１３】
請求項１乃至５のいずれか一項に記載の動作を実行する手段を備えるシステム。
【請求項１４】
請求項１乃至５のいずれか一項に記載の動作を実行するように構成されたコンピューティングデバイス。
【請求項１５】
請求項１乃至５のいずれか一項に記載の動作を実行するように構成された通信デバイス。
【請求項１６】
請求項１１に記載のコンピュータプログラムを記憶するマシン読取可能な媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、メッセージングシステムに関する。より具体的には、本発明の実施形態は、コンピューティングシステムのストレージデバイスのための効率的な動作経路（operations  path）を促進する機構に関する。
【背景技術】
【０００２】
ウェアレべリングは、固体デバイス（ＳＳＤ：solid-state  devices）及びユニバーサルシリアルバス（ＵＳＢ）フラッシュドライブに使用されるフラッシュメモリのような、消去可能なコンピュータ記憶媒体の寿命を延長するための周知の技術である。例えばＳＳＤは、そのデータ構造を自身のフラッシュへと除去し、その後に取り出すこと等によって、そのＳＳＤのウェアレべリングを管理する内部ファームウェアを含む。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
しかしながら、これらの休止と再開のプロセスは、多くの時間及び電力を消費し得る。例えば各プロセスには、完了までに、８００ミリ秒近くの時間と約２Ｗの電力がかかる可能性がある。さらにドライブコンテキストが正しく保存されない予期せぬ電源オフがあった場合、ドライブのファームウェアは、データの一貫性を保つため、失ったドライブコンテキストをリストアして再構築するのに更なる時間（約１６秒）と電力（約２Ｗ）を必要とし、そして消費する。
【課題を解決するための手段】
【０００４】
本発明の一実施形態に従って、コンピューティングデバイスにおけるストレージシステムのために効率的な動作経路を容易にするための機構を説明する。本発明の実施形態に係る方法は、コンピューティングシステムのストレージデバイスにおいて電力モード変更の要求を識別するステップを含む。電力モード変更の要求は、ストレージデバイスの潜在的な低電力状態を指示する。本方法は更に、第１のコマンドに応答して、ストレージデバイスにおけるコンテキストの情報を、コンピューティングシステムのホストメモリに転送するステップと、コンテキストの情報をホストメモリで保存するステップであって、ストレージデバイスが低電力状態にある、ステップとを含む。
【０００５】
本発明の諸実施形態は、限定ではなく例として、添付の図面において例示される。図面において、同様の参照番号は同様の要素を示す。
【図面の簡単な説明】
【０００６】
【図１】本発明の一実施形態に係る、ストレージデバイスの効率的な動作経路を促進するための機構を用いるホストマシンを示す図である。
【図２】コンピューティングデバイスにおけるストレージデバイスの効率的な動作経路を促進するための機構の実施形態を示す図である。
【図３Ａ】本発明の一実施形態に従って、コンピューティングデバイスのストレージデバイスに関して効率的な動作経路を促進するためのトランザクションのシーケンスを示す図である。
【図３Ｂ】本発明の一実施形態に従って、コンピューティングデバイスのストレージデバイスに関するリストア動作のための効率的な経路を促進するための方法を示す図である。
【図４】本発明の一実施形態に従って、本開示の実施形態を実装するのに適したコンピュータシステムを示すブロック図である。
【発明を実施するための形態】
【０００７】
以下の説明では、様々な具体的な詳細が説明される。しかしながら、本発明の実施形態は、これらの具体的な詳細を用いずに実施されてもよい。他の例では、この説明の理解を曖昧にしないように、周知の回路、構造及び技術を詳細に示していないことがある。コンピューティングデバイス内のストレージデバイス（「ドライブ」とも呼ばれる）（例えばＳＳＤ）のための効率的な処理（例えば中止／再開）の経路を促進するために提供される。一実施形態において、ストレージデバイスのデータ構造（「コンテキスト」）は、中止動作や再開動作等のような様々なドライブ関連の動作を実施する際に電力と時間の双方を節約する、効率的かつ高速な経路を提供するストレージデバイス自体のフラッシュメモリとは対照的に、コンピューティングデバイスのホストメモリ（例えばランダムアクセスメモリ（ＲＡＭ）、動的ＲＡＭ（ＤＲＡＭ）等）のようなデバイス自体の外部に保存される。
【０００８】
本発明の実施形態により、（１）スリープ状態に出入りするのにかかる時間を低減させ、低電力状態における全体的なプラットフォームの存在（residency）を向上させること；（２）例えばＳＳＤ管理データ構造又はコンテキストの保存及びリストアに係るエネルギを低減させて、低電力状態になる際のエネルギ効率を向上させること；そして、（３）フラッシュに対するコンテキストの頻繁な保存によって生じ得るＳＳＤの摩耗を減少させることがもたらされる。一実施形態において、一部のデバイスがアイドル状態になり、使用中でなくなるときであっても、オペレーティングシステムが、様々な電力状態においてプラットフォーム状態を保存すると、ホストメモリは、特定のプラットフォームで利用可能のままであるので、ストレージデバイスからのコンテキストの転送を受けるのに用いられる。そのような電力状態の例は、オペレーティングシステムによるデバイス構成及び電力管理の統一規格として機能するＡＣＰＩ（Advanced  Configuration  and  Power  Interface）仕様によって規定及び定義されるような、Ｓ０（運用状態）、Ｄ３スランバ又はハイバネートのようにデバイスが低電力モードに置かれるＳ０における部分的な運転、Ｓ１（スリープ）、Ｓ２（スリープ）、Ｓ３（スタンバイ／スリープ）等を含む。さらに、本機構の機能は、コンピューティングシステムのターゲット状態の知識を用いて実行されてもよい。
【０００９】
図１は、本発明の一実施形態に従って、ストレージデバイス１１０の効率的な動作経路を促進するための機構を用いるホストマシン１００を図示している。（図４のコンピューティングシステム４００のようなコンピューティングデバイスを含む）ホストマシン１００は、ストレージデバイスの中止／再開動作のための効率的な経路を促進する機構（「効率的経路機構（efficient  path  mechanism）」）１１０を有するように図示されている。コンピューティングデバイス１００は、スマートフォン（例えばＡｐｐｌｅ（登録商標）社のｉＰｈｏｎｅ（登録商標）、Ｒｅｓｅａｒｃｈ  Ｉｎ  Ｍｏｔｉｏｎ（登録商標）社のＢｌａｃｋＢｅｒｒｙ（登録商標）等）を含むセルラフォン、他の電話（固定電話）、ハンドヘルドコンピューティングデイバス、パーソナルデジタルアシスタント（ＰＤＡ）等、タブレットコンピュータ（例えばＡｐｐｌｅ社のｉＰａｄ（登録商標）、サムスン（登録商標）社のＧａｌａｘｙ３（登録商標）等）、ラップトップコンピュータ（例えばノートブック、ネットブック、ウルトラブック（登録商標）、トランスフォーマ等）、電子リーダ（例えばＡｍａｚｏｎ．ｃｏｍ（登録商標）のＫｉｎｄｌｅ（登録商標）、Ｂａｒｎｅｓ  ａｎｄ  Ｎｏｂｌｅｓ（登録商標）社によるＮｏｏｋ（登録商標））等のようなモバイルコンピューティングデバイスを含み得る。コンピューティングデバイス１００は更に、セットトップボックス（例えばインターネット対応型のケーブルテレビのセットトップボックス等）及びデスクトップコンピュータやサーバコンピュータ等のような大型のコンピューティングデバイスを含んでもよい。
【００１０】
コンピューティングデバイス１００は、コンピューティングデバイス１００のいずれかのハードウェア又は物理的リソースとユーザとの間のインタフェースとして機能する、オペレーティングシステム１０６を含む。コンピューティングデバイス１００は更に、１つ又は複数のプロセッサ１０２、メモリデバイス１０４、ネットワークデバイス、ドライバ等に加え、タッチスクリーン、タッチパネル、タッチパッド、仮想若しくは通常のキーボード、仮想若しくは通常のマウスのような入出力（Ｉ／Ｏ）ソース１０８を含む。「コンピューティングデバイス」、「ノード」、「コンピューティングノード」、「クライアント」、「メモリクライアント」、「ホスト」、「サーバ」、「メモリサーバ」、「マシン」、「デバイス」、「コンピューティングデバイス」、「コンピュータ」、「コンピューティングシステム」等といった用語は、本明細書を通して交換可能に同義語として使用される。
【００１１】
図２は、コンピューティングデバイス１００においてストレージデバイスの効率的な動作経路を促進するための機構１１０の実施形態を示す図である。一実施形態において、効率的経路機構１１０は、コマンドロジック２０２、ジェネレータ２０４、通信ロジック２０６、ダンプ／リストアロジック２０８、セキュリティロジック２１０及び互換性ロジック２１２のような、（「モジュール」又は「ロジック」とも呼ばれる）複数のコンポーネントを含む。効率的経路機構１１０は、コンピューティングデバイス１００において用いられ、コンピューティングデバイス１００又は同様のコンピューティングシステムにおけるストレージデバイス２２０（例えばＳＳＤドライブ）及びホストメモリ２３０（例えばＤＲＡＭ）に関連する中止及び再開動作のための効率的な経路を促進し得る。コンピューティングデバイス１００は更に、基本入出力システム（ＢＩＯＳ）を含み、ＢＩＯＳ命令を提供することができる。例えば効率的経路機構１１０の一部をＢＩＯＳ命令等として提供してもよい。一実施形態において、効率的経路機構１１０は、ＢＩＯＳ命令又はドライバとともに、本明細書において下記で更に説明されるような、ストレージデバイス２２０とホストメモリ２３０との間のコンテキスト２２２及びバイナリのラージデータ（「ブロブ」と呼ばれる）２２４の転送２３２、２３４を制御する。ブロブは更に、「基本ラージデータ」、「ブロブ（ＢＬＯＢ、ＢＬｏｂ、Ｂｌｏｂ）」と呼ばれる。ストレージデバイス２２０及びホストメモリ２３０は、プラットフォームコントローラハブ（ＰＣＨ：platform  controller  hub）及びコンピューティングデバイス１００における１つ若しくは複数のプロセッサと通信することがある。
【００１２】
一実施形態において、ドライブ２２０がアイドル状態になると、コマンドロジック２０２は、従来のＳＴＡＮＤＢＹ  ＩＭＭＥＤＩＡＴＥコマンドの代わりに新規のデバイスコンテキストコマンド（例えばＤＵＭＰ  ＤＥＶＩＣＥ  ＣＯＮＴＥＸＴ）を発行するよう、効率的経路機構１１０をサポートする修正済みストレージデバイスを促進する。このコマンドは、シリアルＡＴＡ（ＳＡＴＡ：Serial  Advanced  Technology  Attachment）のような接続又はインタフェースによるベンダ固有のコマンドとして実装され得る。実施形態は、ＳＡＴＡに限定されず、他の形式の接続、インタフェース等を採用して使用してもよいと考えられる。ストレージデバイス２２０のドライブファームウェアにおいてコマンドの受信があると、ジェネレータ２０４は、ストレージデバイス２２０のコンテキスト２２２を含むブロブ２２４を生成する。代替の実施形態では、コマンドは、ハードウェアの状態マシンを使用するＳＡＴＡコントローラ（ＰＣＨ等の一部であり得る）又はホストが送信し得る標準のＳＴＡＮＤＢＹ  ＩＭＭＥＤＩＡＴＥコマンドをインターセプトする他のコントローラ内において生成され得る。このＳＡＴＡコントローラ内のハードウェア又はファームウェアは続けて、他の方法ではドライバが実行する、以下で説明される他の動作を実行する。一実施形態において、ジェネレータ２０４は、ブロブを生成するようドライブファームウェアを促進し得る。新たに生成されるブロブは、（１）ストレージデバイス２２０のフラッシュとは対照的に、ホストメモリ２３０に格納されるＤＲＡＭのコンテンツを含むコンテキスト２２２；（２）ノンス（ＮＯＮＣＥ）のようなアンチリプレイ用の保護ランダム数字（暗号通信に署名する使い捨ての任意又はランダムな数字を表す）；（３）暗号化；及び（４）認証のための署名、のうちの１つ又は複数を含み得る。一実施形態において、セキュリティロジック２１０は、ブロブ２２４のセキュリティ及び認証（例えば暗号法による暗号化処理、暗号化解除、セキュリティ署名等）を提供することで、ストレージデバイス２２０のドライブファームウェアにより検出する必要なく、修正又は再使用を試みようとする如何なる種類のホストソフトウェア又は他の攻撃による如何なるデータの公開又は読み取りも防ぐ。通信ロジック２０６は、ストレージデバイス２２０がパワーダウンの準備をすると、暗号化されてセキュアにされたコンテキスト２２２を有するブロブ２２４を、ホストメモリ２３０で保存するためにホストメモリ２３０に転送する。
【００１３】
ホストメモリ２３０は、内部の非揮発性メモリに、暗号化及び署名に使用される鍵、並びに例えばアンチリプレイに対して使用されるノンス等を含め、ブロブ２２４を保存してよい。加えて、ダンプ／リストアロジック２０８は、フラグをブロブ２２４に挿入するかフラグをブロブ２２４に関連付けて、次のパワーアップ時に、ブロブ２２４は、ストレージデバイス２２０のフラッシュからＤＲＡＭをリロードすべきではないが、代わりに、ブロブ２２４がホストメモリ２３０からリストアされるのを待つべきであることを示すことができる。ダンプ／リストアロジック２０８によって促進されるように、ブロブ２２４が正確にホストメモリ２３０に格納されると、ダンプコマンド：ＤＵＭＰ  ＤＥＶＩＣＥ  ＣＯＮＴＥＸＴを満たし、ストレージデバイス２２０はパワーダウンする。ドライブのコンテキスト２２２は、オペレーティングシステムが実行を継続していると依然として利用可能なホストメモリシステム２３０においてブロブ２２４としてセキュアに保存されるので、このパワーダウンは更なる遅延を必要としない可能性がある。前述のように、ブロブ２２４は、そのセキュアな暗号化により、いずれのホストソフトウェア又はいずれの他のソフトウェアによっても理解されないので、ブロブ２２４は、例えばこのブロブのリロードを試みているときにも、ストレージデバイス２２０により認識されることなく、変更又は再使用されることはない。
【００１４】
後の段階において、ストレージドライブ２２０が再び必要とされると、オペレーティングシステムはドライブ２２０をパワーアップし、このパワーアップ時に、ストレージドライブのファームウェアは、ドライバのコンテキスト２２２が、ダンプ／リストアロジック２０８によって促進されるように、ホストメモリ２３０からリストアされるべきことに関するものであることを意味するように内部の非揮発性フラグが設定されていると、その必要性を検出する。ストレージデバイス２２０がパワーアップされて安定すると、コマンドロジック２０２は、リストアコマンド（例えばＲＥＳＴＯＲＥ  ＤＥＶＩＣＥ  ＣＯＮＴＥＸＴ）をストレージデバイス２２０に発行し、ストレージデバイス２２０は次いで、ブロブ２２４をトリガし、続いて通信ロジック２０６によって促進されるように、ブロブ２２４が、リストアされたコンテキスト２２６としてストレージデバイス２２０へ転送２３４される。転送２３４が完了すると、セキュリティロジック２１０は、ブロブ２２４のコンテキストを認証し、該コンテンツがストレージデバイス２２０でリストアされる前に全てのリプレイ攻撃に対してこのコンテキストをチェックするよう、ドライブファームウェアを促進する。コンテンツが有効であると決定されると、データを復号化して、リストアされたコンテキスト２２６としてメモリに戻す。ストレージデバイス２２０においてリストアが完了すると、ドライブのファームウェアは、成功裏にホストコマンドに応答して、その動作を正常状態で再開する。
【００１５】
セキュリティロジック２１０によって採用されて使用されるいずれかの暗号化方法は、様々な強度（例えばサイズ）の鍵で署名及び暗号化するＡＥＳ（Advanced  Encryption  Standard）方法のような、既存の方法及びアルゴリズムのうちの１つとすることができるが、復号化は、ホストメモリ２３０に対して直接ブロックで行うことができ、リストアされたコンテキストの全ての部分が有効であると識別され、かつリプレイ攻撃に対して検証されたときにのみ有効であると識別され得ると考えられる。本発明の実施形態は、システムメモリ２３０が利用可能な状態にある間にこの機能及び関連するコマンドをサポートするドライブ２２０及びＯＳドライバの双方により、ドライブコンテキスト２２２が完全に保存されてリストア２２６されるので、Ｏｐａｌ暗号化を使用するドライブ（例えばＳＳＤドライブ）と、パスワードが保護されるドライブ２２０とともに用いられることがある。
【００１６】
本発明の実施形態は、この例に限定されず、例えば様々な実施形態は、Ｓ０−Ｓ３−Ｓ０のフローで用いられてもよく、他の上記の組合せも、簡単な修正により、効率的経路機構１１０の１つ又は複数のコンポーネント２０２〜２１２及び他のシステムリソースに適用可能である。そのような修正は、例えばＯＳストレージドライバがＳ３終了（exit）についてブロブのバッファ位置をＢＩＯＳに伝えるように、ＯＳインフラストラクチャレベルで及び／又はＢＩＯＳを修正すること等である。例えば非アクティブウィンドウのオペレーティングシステムによって長いアイドル期間又は具体的な指示が予想されることに応答して、コンピューティングシステムが状態Ｓ０のときであっても低電力モードに入ることができる。さらに、本発明の実施形態は、ＳＡＴＡ、周辺コンポーネント相互接続エクスプレス（ＰＣＩｅ）及び他のタイプ若しくは形式のインタフェース、例えばコンピューティングデバイス１００とのコマンドベースの通信を可能にするインタフェースのような、様々なインタフェースが取り付けられるＳＳＤドライバとともに用いられてもよい。
【００１７】
任意の数及びタイプのコンポーネントを効率的経路機構１１０に追加してもよく及び／又は当該機構１１０から除去して、特定の特徴を追加、除去及び／又は強化することを含め、本発明の様々な実施形態を容易にすることができると考えられる。簡潔性、明確性及び効率的経路機構の理解の容易性のために、コンピューティングデバイスのコンポーネントのような標準的及び／又は公知のコンポーネントの多くは、ここでは示されておらず、議論されていない。本発明は、任意の特定の技術、トポロジ、コンピューティングシステム、メモリシステム、アーキテクチャ及び／又は標準に限定されず、全ての将来の変更に適応及び適合するのに十分に動的であることが意図される。
【００１８】
図３Ａは、本発明の一実施形態に従って、コンピューティングデバイスにおけるストレージデバイス２２０に関する効率的動作経路を促進するためのトランザクションシーケンス３００を示している。トランザクションシーケンス３００は、ハードウェア（例えば回路、専用ロジック、プログラム可能ロジック等）、（処理デバイス上で実行する命令のような）ソフトウェア又はこれらの組合せを備える処理ロジックによって実行され得る。一実施形態において、方法３００は、図１の効率的経路機構１１０によって実施され得る。
【００１９】
システム（再）ブート時に、ストレージクラスドライバ３１２は、取り付けられたストレージドライブ（例えばＳＳＤドライブ）及びその機能を発見し、その結果、ストレージドライブ２２０が、ドライブファームウェア３０４を通して識別３２２される。一実施形態において、識別３２２が行われると、ストレージクラスドライバ３１２がストレージドライブのアイドル性（idleness）を識別すると、応答３２４がＤＵＭＰ  ＤＥＶＩＣＥ  ＣＯＮＴＥＸＴのようなダンプコマンド３２６の形で提供される。ストレージデバイス２２０のいずれかのデータ構造又はコンテキストが、アンチリプレイデバイスコンテキストとして暗号化され、認証されると３２８、さらに、ストレージデバイスのコンテキストは、状態フラグでダンプされるように設定されて、暗号化及び認証パラメータを保存し３３０、データのブロブへと形成される。一実施形態において、データのブロブは、（従来のように、ストレージデバイスのフラッシュ３０２へ転送されるのとは対照的に）ストレージデバイス２２０からホストメモリ２３０へ転送３３２される。この時点で、ブロブがホストメモリ２３０で保存されて安定すると、ストレージデバイス２２０はパワーオフされる３３４。
【００２０】
ストレージクラスドライバ３１２がストレージデバイス２２０を必要とすると、ストレージデバイス２２０はパワーオンされる３３６。パワーオンされると、ストレージデバイス２２０は、そのコンテキストを戻す必要があるので、ブロブのコンテンツは、関連する状態フラグがトリガされると、セキュリティについて検証されている暗号化及び認証パラメータ３３８とともに転送されることになる。ストレージデバイス２２０は、パワーオンされてそのコンテキストを待ち、これによりコンテキストがリストアされ、一実施形態では、効率的経路機構を介して、リストアコマンド：ＲＥＳＴＯＲＥ  ＤＥＶＩＣＥ  ＣＯＮＴＥＸＴが発行される３４０。ブロブのコンテンツは、ホストメモリ２３０からストレージデバイス２２０に転送されて戻される３４２。ストレージデバイス２２０がブロブのコンテンツを受信する前に、コンテンツは、アンチリプレイデバイスコンテキスト３４４として残るよう復号化されて認証される。認証されると、コンテンツは、リストアされたコンテキストとしてストレージデバイス２２０において適合される。ストレージデバイス２２０は、動作の準備が整ったことを認知されると３４６、パワーオンされ、そのコンテキストをリストアして使用する準備を整える。
【００２１】
図３Ｂは、本発明の一実施形態に従って、コンピューティングデバイスのストレージデバイスに関するリストア動作のための効率的な経路を容易にする方法３５０を示す。方法３５０は、ハードウェア（例えば回路、専用ロジック、プログラム可能ロジック等）、（処理デバイス上で実行する命令のような）ソフトウェア又はこれらの組合せを備える処理ロジックによって実行され得る。一実施形態において、方法３５０は、図１の効率的経路機構１１０によって実施され得る。
【００２２】
方法３５０は、ブロック３５２で開始し、ブロック３５２において、ストレージデバイス（例えばＳＳＤドライブ）がパワーアップされ、ブロック３５４において、フラッシュのパワーダウン状態コンテキストから読み出される。ブロック３５６において、コンピューティングシステムのホストメモリにおける（元のコンテキストを有する）ブロブが、最小限の整合性（integrity）でセキュアにされているか（例えば暗号化されてセキュアであるか等）どうかに関する判断が行われる。コンテキストが十分にセキュアである場合、ブロック３５８において、プロセスは、ホストコマンド（例えばリストアコマンド）を待ち、ブロック３６０において、リストアコマンド：ＲＥＳＴＯＲＥ  ＤＥＶＩＣＥ  ＣＯＮＴＥＸＴが発行されているかどうかを判断する。一実施形態において、リストアコマンドを受信していた場合、ブロック３６２において、ブロブのコンテンツが復号化されて、アンリリプレイチェックが実施されているか、ストレージデバイスのパワーアップ時にフラッシュからリストアされたパラメータコンテキストを用いてブロブのコンテンツに対する整合性チェックが実施されているか等のような、他のファクタが検証される。ブロック３６４において、全てのチェックが成功裏に実行されたかどうかに関する判断が行われる。全てのチェックが成功である場合、ストレージデバイスの成功したパワーアップが実行され、そのコンテキストは、再び使用するための準備を整えてリストアされる。一実施形態において、上記の新規な処理は、例えば動作にたった４３ミリ秒しかかからない。諸実施形態は、図２に示される効率的経路機構１１０のコンポーネント２０２〜２１２のいずれかに対する任意の変更と同様に、４３ミリ秒又は処理の数及びタイプに限定されず、及び／又はストレージデバイス、ホストメモリ、コンピューティングシステム等のタイプ及びリソースに応じて、これらの処理、時間の節約、電力節約等も変化し得ると考えられる。
【００２３】
ブロック３５６、３６０及び３６４を再び参照すると、決定プロセスのいずれかに対する回答が否定的である場合、ブロック３６６において、コンテキストが、フラッシュの通常のファイルシステムのウェアレべリング情報から読み出される。ブロック３６８において、ウェアレべリングの整合性が十分に良好であり、セキュアであるかどうかに関する決定が行われる。十分に良好でない場合、ブロック３７０において、ファイルがリカバリされる。十分に良好である場合、ブロック３７２において、そのコンテキストのリストアの成功とともに、ストレージデバイスのパワーアップが実行される。
【００２４】
図４に、コンピューティングシステム４００の実施形態を示す。コンピューティングシステム４００は、広範なコンピューティングデバイス及び電子デバイス（有線又は無線）を表しており、例えばこのようなデバイスには、デスクトップコンピューティングシステム、ラップトップコンピューティングシステム、携帯電話、セルラ方式対応型のＰＤＡを含むパーソナルデジタルアシスタント（ＰＤＡ）、セットトップボックス、スマートフォン、タブレット等が含まれる。代替のコンピューティングシステムは、より多くの、より少ない及び／又は異なるコンポーネントを含んでもよい。
【００２５】
コンピューティングシステム４００は、バス４０５（あるいはリンク、相互接続又は情報を通信する別のタイプの通信デバイス若しくはインタフェース）と、該バス４０５に結合される、情報を処理することができるプロセッサ４１０とを含む。コンピューティングシステム４００は、シングルプロセッサを有するように図示されているが、電子システム４００は、中央プロセッサ、グラフィクスプロセッサ及び物理プロセッサ等のうちの１つ又は複数のような、複数のプロセッサ及び／又はコプロセッサを含んでもよい。コンピューティングシステム４００は更に、バス４０５に結合され、プロセッサ４１０によって実行され得る情報及び命令を格納することができるランダムアクセスメモリ（ＲＡＭ）又は（メインメモリと呼ばれる）他の動的なストレージデバイス４２０を含んでもよい。メインメモリ４２０は、プロセッサ４１０による命令の実行中の一時的な変数又は他の中間の情報を格納するのにも使用され得る。
【００２６】
コンピューティングシステム４００は、読取専用メモリ（ＲＯＭ）及び／又はバス４０５に結合される他のストレージデバイス４３０も含み、これらは、プロセッサ４１０のための静的な情報及び命令を格納することができる。日付ストレージデバイス４４０は、バス４０５に結合されて、情報及び命令を格納することができる。磁気ディスク若しくは光ディスク及び対応するドライブのような、日付ストレージデバイス４４０は、コンピューティングシステム４００に結合され得る。
【００２７】
コンピューティングシステム４００は、ブラウン管（ＣＲＴ）、液晶ディスプレイ（ＬＣＤ）又は有機ＥＬディスプレイ（ＯＬＥＤ）アレイのような、情報をユーザに表示するディスプレイデバイス４５０にも、バス４０５を介して結合され得る。英数字及び他のキーを含むユーザ入力デバイス４６０は、バス４０５に結合されて、情報及びコマンドの選択をプロセッサ４１０に通信することができる。別のタイプのユーザ入力デバイス４６０は、マウス、トラックボール又はカーソル方向指示キーのようなカーソルコントロール４７０であり、方向情報及びコマンドの選択をプロセッサ４１０に伝えて、ディスプレイ４５０上のカーソルの動きを制御する。
【００２８】
コンピューティングシステム４００のカメラ及びマイクロフォンのアレイ４９０を、バス４０５に結合して、ジェスチャを観察し、オーディオ及びビデオを記録し、視覚及び音声コマンドを受信及び送信してもよい。
【００２９】
コンピューティングシステム４００は更に、ネットワークインタフェース４８０も含んでよく、ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、メトロポリタンエリアネットワーク（ＭＡＮ）、パーソナルエリアネットワーク（ＰＡＮ）、Ｂｌｕｅｔｏｏｔｈ（登録商標）、イントラネット、インターネット等のようなネットワークに対するアクセスを提供する。ネットワークインタフェース４８０は、例えば１つ又は複数のアンテナを表すアンテナ４８５を有する無線ネットワークインタフェースを含んでよい。ネットワークインタフェース４８０は、例えばネットワークケーブル４８７を介してリモートデバイスと通信する有線ネットワークインタフェースも含んでもよく、ネットワークケーブル４８７は、例えばイーサーネット（登録商標）ケーブル、共軸ケーブル、ファイバ光ケーブル、シリアルケーブル又はパラレルケーブル等とすることができる。
【００３０】
ネットワークインタフェース４８０は、例えばＩＥＥＥ８０２．１１ｂ及び／又はＩＥＥＥ８０２．１１ｇ規格に従うことによりＬＡＮへのアクセスを提供することがあり、及び／又は無線ネットワークインタフェースは、例えばＢｌｕｅｔｏｏｔｈ規格に従うことによりパーソナルエリアネットワークへのアクセスを提供することがある。以前のバージョン及び後続バージョンの規格を含め、他の無線ネットワークインタフェース及び／又はプロトコルもサポートされ得る。
【００３１】
無線ＬＡＮ規格による通信に加えて、又はこれに代えて、ネットワークインタフェース４８０は、例えば時間分割多重アクセス（ＴＤＭＡ）プロトコル、グローバルシステム・フォー・モバイルコミュニケーション（ＧＳＭ（登録商標））プロトコル、符号分割多重アクセス（ＣＤＭＡ）プロトコル及び／又は任意の他のタイプの無線通信プロトコルを使用する無線通信を提供することがある。
【００３２】
ネットワークインタフェース４８０は、１つ又は複数の通信インタフェースを含んでもよく、このようなインタフェースは、モデムやネットワークインタフェースカード、あるいは例えばＬＡＮ又はＷＡＮをサポートする通信リンクを提供するためにイーサーネット、トークンリング又は他のタイプの物理的な有線若しくは無線の付属部品に結合するのに使用されるような他の周知のインタフェースデバイス等である。このようにして、コンピュータシステムは、例えばイントラネット又はインターネットを含め、従来のネットワークインフラストラクチャを介して、複数の周辺デバイス、クライアント、コントロールサーフェイス、コンソール又は他のサーバに結合されてもよい。
【００３３】
特定の実装にとっては、説明される例示よりも少ない又は多くのものが装備されたシステムが好ましい可能性があることが認識されよう。したがって、コンピューティングシステム４００の構成は、価格の制約、性能要件、技術的向上又は他の事情のような多くの容易に応じて、実装ごとに変化し得る。電子デバイス又はコンピュータシステム４００の例には、限定ではないが、モバイルデバイス、パーソナルデジタルアシスタント、モバイルコンピューティングデバイス、スマートフォン、携帯電話、ハンドセット、一方向ページャ、双方向ページャ、メッセージングデバイス、コンピュータ、パーソナルコンピュータ（ＰＣ）、デスクトップコンピュータ、ラップトップコンピュータ、ノートブックコンピュータ、ハンドヘルドコンピュータ、タブレットコンピュータ、サーバ、サーバアレイ若しくはサーバファーム、ウェブサーバ、ネットワークサーバ、インターネットサーバ、ワークステーション、ミニコンピュータ、メインフレームコンピュータ、スーパーコンピュータ、ネットワークアプライアンス、ウェブアプライアンス、分散コンピューティングシステム、マルチプロセッサシステム、プロセッサベースのシステム、家庭用電子機器、プログラム可能な家庭用電子機器、テレビ、デジタルテレビ、セットトップボックス、無線アクセスポイント、基地局、加入者局、モバイル加入者センタ、無線ネットワークコントローラ、ルータ、ハブ、ゲートウェイ、ブリッジ、スイッチ、マシン又はこれらの組合せが含まれ得る。
【００３４】
諸実施形態は、次のうちのいずれか又はその組み合わせとして、すなわち、基板を使用して相互接続される１つ又は複数のマイクロチップ又は集積回路、ハードワイヤードロジック、メモリデバイスによって格納されてマイクロプロセッサによって実行されるソフトウェア、ファームウェア、特定用途向け集積回路（ＡＳＩＣ）及び／又はフィールドプログラマブルゲートアレイ（ＦＰＧＡ）のうちのいずれか又はその組合せとして実装されてよい。「ロジック」という用語は、例としてソフトウェア又はハードウェア及び／又はソフトウェアとハードウェアの組合せを含み得る。
【００３５】
諸実施形態は、例えばコンピュータプログラム製品として提供されてもよく、このようなコンピュータプログラム製品は、コンピュータ、コンピュータのネットワーク又は他の電子デバイスのような１つ又は複数のマシンによって実行されると、該１つ又は複数のマシンに、本発明の諸実施形態に係る動作を実行させることになるマシン実行可能命令を格納した、１つ又は複数のマシン読取可能媒体を含み得る。マシン読取可能媒体には、これらに限定されないが、フロッピー（登録商標）ディスケット、光ディスク、ＣＲ−ＲＯＭ（コンパクトディスク読取専用メモリ）、磁気光ディスク、ＲＯＭ、ＲＡＭ、ＥＰＲＯＭ（消去可能なプログラム可能読取専用メモリ）、ＥＥＰＲＯＭ（電子的消去可能なプログラム可能読取専用メモリ）、磁気若しくは光カード、フラッシュメモリ又はマシン実行可能命令を格納するのに適した他のタイプの媒体／マシン読取可能媒体が含まれ得る。
【００３６】
さらに、諸実施形態を、コンピュータプログラム製品としてダウンロードしてもよく、この場合、このプログラムは、リモートコンピュータ（例えばサーバ）から要求側のコンピュータ（例えばクライアント）へ、搬送波に具現化されるか及び／又は搬送波によって変調される１つ又は複数のデータ信号によって、あるいは通信リンク（例えばモデム及び／又はネットワーク接続）を介した他の伝播媒体によって転送され得る。したがって、本明細書で使用されるとき、マシン読取可能媒体は、必ずではないが、そのような搬送波も含む可能性がある。
【００３７】
「一実施形態」、「実施形態」、「例示の実施形態」、「様々な実施形態」等への言及は、そのように説明される本発明の実施形態が、特定の特徴、構造又は特性を含むことがあるが、必ずしも全ての実施形態が、その特定の特徴、構造又は特性を含む必要はないことを示す。さらに、一部の実施形態は、他の実施形態について説明される特徴の一部又は全てを有してもよく、あるいは全く有していなくてもよい。
【００３８】
以下の説明及び請求項においては、「結合される」及び「接続される」という用語及びその派生語が使用されることがある。「結合される」という用語は、相互に協働する２つ又はそれ以上の要素を示すのに使用されるが、これらは、その要素間に介在する物理的又は電子的コンポーネントを有していても、有していなくてもよい。
【００３９】
請求項において使用されるとき、特段の指定がない限り、共通の要素を示す「第１」、「第２」、「第３」等のという順序の形容詞の使用は、単に同様の要素の異なる例を指すことを示し、そのように説明される要素が、時間的、空間的、ランク付け又は任意の他の手法による順序であるべきことを暗示するようには意図されていない。
【００４０】
以下の節及び／又は例は、更なる実施形態に関する。これらの例における詳細は、１つ又は複数の実施形態にいずれにおいて用いてもよい。異なる実施形態の様々な特徴は、様々な他の適用に適合するよう、包含されている幾つかの特徴及び除外されている他の特徴と様々に組み合されてもよい。一部の実施形態は、方法に関し、当該方法は、コンピューティングシステムのストレージデバイスにおける電力モード変更の要求を識別するステップであって、電力モード変更の要求が、ストレージデバイスの潜在的な低電力状態を指示する、ステップと；第１のコマンドに応答して、前記ストレージデバイスにおけるコンテキストの情報を前記コンピューティングシステムのホストメモリに転送するステップと；前記コンテキストの情報を前記ホストメモリで保存するステップであって、前記ストレージデバイスは低電力状態にある、ステップと；を含む。
【００４１】
実施形態は、上記の方法のいずれかを含み、前記ストレージデバイスにおいて電力の変化を識別するステップであって、前記電力の変化は、前記ストレージデバイスのパワーオンを示す、ステップと、前記電力の変化の後に、前記ホストメモリから、前記コンテキストを有するコンテンツを、前記ストレージデバイスに戻すよう転送するステップと、前記コンテキストの情報を、リストアされたコンテキストとして、前記ストレージデバイスでリストアするステップとを更に含む。実施形態は、上記の方法のいずれかにおいて、前記コンテキストを有するブロブを生成するステップを更に含み、前記コンテキストは、該コンテキストが前記ブロブとして前記ホストメモリに転送されるのに先立って暗号化される。
【００４２】
実施形態は、上記の方法のいずれかを含み、前記ブロブのコンテンツを、該コンテンツが前記リストアされたコンテキストとして前記ストレージデバイスに伝送される前に復号化するステップを更に含む。
【００４３】
実施形態は、上記の方法のいずれかを含み、前記第１のコマンドがダンプコマンドを備える。
【００４４】
実施形態は、上記の方法のいずれかを含み、第２のコマンドが転送コマンドを備える。
【００４５】
実施形態は、上記の方法のいずれかを含み、前記ストレージデバイスが、フラッシュメモリを含む固体ドライブ（ＳＳＤ）を備え、前記ホストメモリが、動的ランダムアクセスメモリ（ＤＲＡＭ）を備える。
【００４６】
別の実施形態において、装置は：コンピューティングシステムのストレージデバイスにおける電力モード変更の要求を識別する第１のロジックであって、該電力モード変更の要求は、前記ストレージデバイスの潜在的な低電力状態を指示する、第１のロジックと；第１のコマンドに応答して、前記ストレージデバイスにおけるコンテキストの情報を、前記コンピューティングシステムのホストメモリに転送する第２のロジックと；前記コンテキストの情報を前記ホストメモリで保存する第３のロジックであって、前記ストレージデバイスは低電力状態にある、第３のロジックと；を備える。
【００４７】
実施形態は、前記ストレージデバイスにおける電力の変化を識別し、前記電力の変化は、前記ストレージデバイスのパワーオンを示し、前記電力の変化の後に、前記第２のロジックが更に、前記ホストメモリから、前記コンテキストを有するコンテンツを、前記ストレージデバイスに戻すよう転送し、前記第３のロジックが更に、前記コンテキストの情報を、リストアされたコンテキストとして、前記ストレージデバイスでリストアする、上記の装置を含む。
【００４８】
実施形態は、効率的経路機構が、前記コンテキストを有するブロブを生成する第５のロジックを更に含み、前記コンテキストは、該コンテキストが前記ブロブとして前記ホストメモリに転送されるのに先立って暗号化される、上記の装置を含む。
【００４９】
実施形態は、前記第５のロジックが更に、前記ブロブのコンテンツを、該コンテンツが前記リストアされたコンテキストとして前記ストレージデバイスに伝送される前に復号化する、上記の装置を含む。
【００５０】
実施形態は、前記第１のコマンドがダンプコマンドを備える、上記の装置を含む。
【００５１】
実施形態は、第２のコマンドは転送コマンドを備える、上記の装置を含む。
【００５２】
実施形態は、前記ストレージデバイスが、フラッシュメモリを含む固体ドライブ（ＳＳＤ）を備え、前記ホストメモリが、動的ランダムアクセスメモリ（ＤＲＡＭ）を備える、上記の装置を含む。
【００５３】
別の実施形態において、システムは：命令を格納するメモリ及び前記命令を実行する処理デバイスを備え、前記命令は、前記処理デバイスに、コンピューティングシステムのストレージデバイスにおける電力モード変更の要求を識別させ、該電力モード変更の要求は、前記ストレージデバイスの潜在的な低電力状態を指示し；第１のコマンドに応答して、前記ストレージデバイスにおけるコンテキストの情報を前記コンピューティングシステムのホストメモリに転送させ；前記コンテキストの情報を前記ホストメモリで保存させ、前記ストレージデバイスは低電力状態にある。
【００５４】
実施形態は、前記処理デバイスが更に、前記ストレージデバイスにおける電力の変化を識別し、前記電力の変化は、前記ストレージデバイスのパワーオンを示し、前記電力の変化の後に、前記ホストメモリから、前記コンテキストを有するコンテンツを、前記ストレージデバイスに戻すよう転送し、前記コンテキストの情報を、リストアされたコンテキストとして、前記ストレージデバイスでリストアする、上記のシステムを含む。
【００５５】
実施形態は、処理デバイスが更に、前記コンテキストを有するブロブを生成し、前記コンテキストは、該コンテキストが前記ブロブとして前記ホストメモリに転送されるのに先立って暗号化される、上記のシステムを含む。
【００５６】
実施形態は、処理デバイスが更に、前記ブロブのコンテンツを、該コンテンツが前記リストアされたコンテキストとして前記ストレージデバイスに伝送される前に復号化する、上記のシステムを含む。
【００５７】
実施形態は、前記第１のコマンドがダンプコマンドを備える、上記のシステムを含む。
【００５８】
実施形態は、第２のコマンドが転送コマンドを備える、上記のシステムを含む。
【００５９】
実施形態は、前記ストレージデバイスが、フラッシュメモリを含む固体ドライブ（ＳＳＤ）を備え、前記ホストメモリが、動的ランダムアクセスメモリ（ＤＲＡＭ）を備える、上記のシステムを含む。
【００６０】
別の実施形態において、装置は、上述の動作のいずれか１つ又は複数を実行させるための手段を備える。
【００６１】
上述の動作のいずれか１つ又は複数に係る方法を実行するようにコンピューティングデバイスが構成される。更に別の実施形態において、複数の命令を備える少なくとも１つのマシン読取可能な媒体が提供され、前記命令は、コンピューティングデバイスにおいて実行されたことに応答して、該コンピューティングシステムに上述の動作の１又は複数に係る方法を実行させる。
【００６２】
図面及び上記の説明は、実施形態の例示を提供する。当業者には、説明された要素のうちの１つ又は複数を良好に組み合わせて単一の機能要素にしてもよいことが認識されよう。あるいは、特定の要素を複数の機能要素に分割してもよい。ある実施形態からの要素を、別の実施形態に追加してもよい。例えば本明細書で説明される処理の順序は変更されてもよく、本明細書で説明されている手法に限定されない。さらに、いずれかのフロー図におけるアクションは、示される順序で実装される必要はなく、必ずしも全ての動作を実行する必要もない。また、他の動作に依存しない動作を、他の動作と並行に実行してもよい。実施形態の範囲は、決してこれらの具体的な例示には限定されない。本明細書において明示的に与えられているか否かに関わらず、構造上、寸法及び材料の使用における相違のような様々な変更も可能である。実施形態の範囲は、少なくとも、特許請求の範囲によって与えられる広さである。
【図１】
0006022688.tif 000002
【図２】
0006022688.tif 000003
【図３Ａ】
0006022688.tif 000004
【図３Ｂ】
0006022688.tif 000005
【図４】
0006022688.tif 000006