(57)【要約】  一般的に、本開示は、例えば、電力喪失の場合に、メモリ書込みの一貫性を提供するための耐性があるストレージを伴うユニファイド・エクステンシブル・ファームウェア・インターフェイス（ＵＥＦＩ）に対するシステム、デバイス、方法、およびコンピュータで読取り可能な媒体を提供する。本システムは、ファームウェアインターフェイスをホストするためのプロセッサを含んでよく、揮発性メモリの保護領域におけるシステム変数へのアクセスをコントロールする。本システムは、また、プロセッサに対して電力を提供し、かつ、さらに、ファームウェアインターフェイスに対して電力喪失インジケータを提供するための電力管理回路も含んでよい。本システムは、さらに、電力喪失インジケータに応じて、プロセッサに対して電力を提供するリザーブエネルギ保管モジュールを含んでよい。ファームウェアインターフェイスは、さらに、電力喪失インジケータに応じて、システム変数を揮発性メモリから不揮発性メモリへコピーするように構成されてよい。
2017521768.tif 000002
【特許請求の範囲】
【請求項１】
ファームウェアインターフェイスのために耐性があるストレージを提供するシステムであって、
前記ファームウェアインターフェイスをホストするためのプロセッサであり、前記ファームウェアインターフェイスは、揮発性メモリの保護領域におけるシステム変数へのアクセスをコントロールする、プロセッサと、
前記プロセッサに対して電力を提供し、かつ、さらに、前記ファームウェアインターフェイスに対して電力喪失インジケータを提供する、電力管理回路と、
前記電力喪失インジケータに応じて、前記プロセッサに対して電力を提供するリザーブエネルギ保管モジュールと、
を含み、
前記ファームウェアインターフェイスは、さらに、前記電力喪失インジケータに応じて、前記システム変数を前記揮発性メモリから不揮発性メモリへコピーする、
システム。
【請求項２】
前記リザーブエネルギ保管モジュールは、キャパシタである、
請求項１に記載のシステム。
【請求項３】
前記プロセッサは、さらに、オペレーティングシステム（ＯＳ）をホストし、
前記ファームウェアインターフェイスは、前記ＯＳによる前記システム変数へのアクセスをコントロールする、
請求項１または２に記載のシステム。
【請求項４】
前記システムは、さらに、
オペレーティングシステム（ＯＳ）をホストするための第２プロセッサを含み、
前記ファームウェアインターフェイスは、前記ＯＳによる前記システム変数へのアクセスをコントロールする、
請求項１または２に記載のシステム。
【請求項５】
前記電力喪失インジケータは、前記ファームウェアインターフェイスのシステム管理インタラプト（ＳＭＩ）と関連付けされている、
請求項１乃至４いずれか一項に記載のシステム。
【請求項６】
前記ファームウェアインターフェイスは、さらに、
前記システム変数を前記不揮発性メモリへコピーした後で、前記ＯＳに対してマスクできないインタラプト（ＮＭＩ）を生成する、
請求項３に記載のシステム。
【請求項７】
前記電力管理回路は、さらに、前記リザーブエネルギ保管モジュールを充電する、
請求項１乃至６いずれか一項に記載のシステム。
【請求項８】
前記ファームウェアインターフェイスは、ユニファイド・エクステンシブル・ファームウェア・インターフェイス（ＵＥＦＩ）である、
請求項１乃至７いずれか一項に記載のシステム。
【請求項９】
前記リザーブエネルギ保管モジュールは、バッテリーである、
請求項１乃至８いずれか一項に記載のシステム。
【請求項１０】
前記揮発性メモリは、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）である、
請求項１乃至９いずれか一項に記載のシステム。
【請求項１１】
前記不揮発性メモリは、フラッシュメモリである、
請求項１乃至１０いずれか一項に記載のシステム。
【請求項１２】
前記システムは、スマートフォン、スマートタブレット、または、ラップトップコンピュータである、
請求項１乃至１１いずれか一項に記載のシステム。
【請求項１３】
ファームウェアインターフェイスによって耐性があるストレージを提供するための方法であって、
前記ファームウェアインターフェイスによって、揮発性メモリの保護領域におけるシステム変数へのアクセスをコントロールするステップと、
前記ファームウェアインターフェイスに対して電力喪失インジケータを提供するステップと、
前記電力喪失インジケータに応じて、リザーブエネルギ保管モジュールからの電力供給に切り替えるステップと、
前記ファームウェアインターフェイスによって、前記電力喪失インジケータに応じて、前記システム変数を前記揮発性メモリから不揮発性メモリへコピーするステップと、
を含む、方法。
【請求項１４】
前記リザーブエネルギ保管モジュールは、キャパシタである、
請求項１３に記載の方法。
【請求項１５】
前記システム変数は、オペレーティングシステム（ＯＳ）によって、コントロール可能にアクセスされる、
請求項１３または１４に記載の方法。
【請求項１６】
前記方法は、さらに、
前記ファームウェアインターフェイスのシステム管理インタラプト（ＳＭＩ）を生成するステップ、を含み、
前記ＳＭＩは、前記電力喪失インジケータと関連付けされている、
請求項１３乃至１５いずれか一項に記載の方法。
【請求項１７】
前記方法は、さらに、
前記システム変数を前記不揮発性メモリへコピーした後で、前記ＯＳに対してマスクできないインタラプト（ＮＭＩ）を生成するステップ、
を含む、請求項１５に記載の方法。
【請求項１８】
前記方法は、さらに、
前記リザーブエネルギ保管モジュールを充電するステップ、
を含む、請求項１３乃至１７いずれか一項に記載の方法。
【請求項１９】
前記ファームウェアインターフェイスは、ユニファイド・エクステンシブル・ファームウェア・インターフェイス（ＵＥＦＩ）である、
請求項１３乃至１８いずれか一項に記載の方法。
【請求項２０】
プロセッサによって実行されると、ファームウェアインターフェイスによって耐性があるストレージを提供するためのオペレーションを実施するインストラクションを含むコンピュータプログラムであって、前記オペレーションは、
前記ファームウェアインターフェイスによって、揮発性メモリの保護領域におけるシステム変数へのアクセスをコントロールするステップと、
前記ファームウェアインターフェイスに対して電力喪失インジケータを提供するステップと、
前記電力喪失インジケータに応じて、リザーブエネルギ保管モジュールからの電力供給に切り替えるステップと、
前記ファームウェアインターフェイスによって、前記電力喪失インジケータに応じて、前記システム変数を前記揮発性メモリから不揮発性メモリへコピーするステップと、
を含む、コンピュータプログラム。
【請求項２１】
前記システム変数は、オペレーティングシステム（ＯＳ）によって、コントロール可能にアクセスされる、
請求項２０に記載のコンピュータプログラム。
【請求項２２】
前記オペレーションは、さらに、
前記ファームウェアインターフェイスのシステム管理インタラプト（ＳＭＩ）を生成するステップ、を含み、
前記ＳＭＩは、前記電力喪失インジケータと関連付けされている、
請求項２０または２１に記載のコンピュータプログラム。
【請求項２３】
前記オペレーションは、さらに、
前記システム変数を前記不揮発性メモリへコピーした後で、前記ＯＳに対してマスクできないインタラプト（ＮＭＩ）を生成するステップ、
を含む、請求項２１に記載のコンピュータプログラム。
【請求項２４】
前記オペレーションは、さらに、
前記リザーブエネルギ保管モジュールを充電するステップ、
を含む、請求項２０乃至２３いずれか一項に記載のコンピュータプログラム。
【請求項２５】
前記ファームウェアインターフェイスは、ユニファイド・エクステンシブル・ファームウェア・インターフェイス（ＵＥＦＩ）である、
請求項２０乃至２４いずれか一項に記載のコンピュータプログラム。
【請求項２６】
請求項２０乃至２５いずれか一項に記載のコンピュータプログラムを記憶したコンピュータ読取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、ファームウェアインターフェイスに関する。そして、より特定的には、例えば、電力喪失（ｐｏｗｅｒ  ｌｏｓｓ）の場合に、メモリ書込みの一貫性を提供するための耐性がある（ｄｕｒａｂｌｅ）ストレージを伴うユニファイド・エクステンシブル・ファームウェア・インターフェイス（ＵＥＦＩ）に関する。
【背景技術】
【０００２】
ファームウェアインターフェイスは、一般的には、オペレーティングシステム（ＯＳ）と、その根底にあるファームウェア及び／又はシステムプラットフォームに関連付けられたハードウェアとの間のインターフェイスを提供する。ファームウェアインターフェイスの実施例は、従来のベーシック・インプット・アウトプット・システム（ＢＩＯＳ）と、より最近のユニファイド・エクステンシブル・ファームウェア・インターフェイス（ＵＥＦＩ）を含んでいる。ファームウェアインターフェイスは、典型的には、システムブートサービスを、ランタイム（ｒｕｎｔｉｍｅ）サービスと同様に提供する。ＵＥＦＩによって提供されるランタイムサービスは、ＯＳまたは他のエンティティによるシステム変数に対するアクセスの管理を含んでいる。ＵＥＦＩは、一般的に、これらの変数に対してなされたあらゆる変更が耐性があることを保証するために要求される。例えば、予期しない電力喪失、リセット、または、他の中断の場合に、変更が存続することである。
【０００３】
ＵＥＦＩに対する潜在的にコンフリクト（ｃｏｎｆｌｉｃｔ）しているゴールは、しかしながら、これらのシステム変数が、ＵＥＦＩ以外のあらゆるエンティティによっては直接的にアクセスできない、信頼され、かつ、安全なメモリ領域またはデバイスの中に保管されることである。例えば、不正侵入された（ｃｏｍｐｒｏｍｉｓｅｄ）ＯＳは、このＵＥＦＩ予約メモリにアクセスできるべきではない。不幸にも、そうした安全な、または、隔離されたオペレーティングモードが利用可能なメモリは、典型的に揮発性である。例えば、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、といったものであり、電源中断の場合にはコンテンツが失われてしまう。
【図面の簡単な説明】
【０００４】
請求される技術的事項に係る実施例の特徴および利点は、以下の詳細な説明が進行するにつれて、そして、図面を参照して明らかになるだろう。図面では類似の数字は類似のパーツを示している。
【図１】図１は、本開示と一致する一つの実施例に係るトップレベルのシステムダイヤグラムを示している。
【図２】図２は、本開示と一致する一つの実施例に係るブロックダイヤグラムを示している。
【図３】図３は、本開示と一致する一つの実施例に係るオペレーションのフローチャートを示している。
【図４】図４は、本開示と一致する別の実施例に係るオペレーションのフローチャートを示している。
【図５】図５は、本開示と一致する別の実施例に係るオペレーションのフローチャートを示している。
【図６】図６は、本開示と一致する別の実施例に係るプラットフォームのシステムダイヤグラムを示している。
【０００５】
以降の詳細な説明は、説明的な実施例に対してなされる参照と共に進行するが、それらの多くの代替、変更、および変形が、当業者に対して明らかであろう。
【発明を実施するための形態】
【０００６】
一般的に、この開示は、例えば、電力喪失の場合において、メモリ書込みの一貫性を提供するための耐性があるストレージを伴うユニファイド・エクステンシブル・ファームウェア・インターフェイス（ＵＥＦＩ）のためのシステム、デバイス、方法、およびコンピュータで読取り可能な媒体を提供する。例えば、コンピューティングまたは通信プラットフォーム、といったシステムは、一つまたはそれ以上のプロセッサ又はコア、および、揮発性と不揮発性両方のメモリタイプを含んでいる、一つまたはそれ以上のメモリモジュールを含んでよい。プロセッサとメモリは、一つまたはそれ以上のオペレーティングシステム（ＯＳ）および他のソフトウェアアプリケーション又はエンティティと共に、ＵＥＦＩをホストする（例えば、保管及び/又は実行）ように構成されてよい。ＵＥＦＩは、システムブートサービスとランタイム（例えば、ブート後）サービスを実行するように構成されてよい。ランタイムサービスは、ＯＳによって、揮発性メモリの保護され／安全な領域の中に保管されているシステム変数に対するアクセスをコントロールすることを含んでよい。
【０００７】
システムは、また、一つまたはそれ以上の１次電源（ｐｒｉｍａｒｙ  ｐｏｗｅｒ  ｓｏｕｒｃｅ）からプロセッサに対して電力を提供する電力管理回路を含んでもよい。システムは、また、１次電源からの電力喪失の場合にプロセッサに対して電力を提供するためのリザーブエネルギ（ｒｅｓｅｒｖｅ  ｅｎｅｒｇｙ）保管モジュールを含んでもよく、その場合には、電力喪失インジケータがＵＥＦＩに対して提供されてよい。ＵＥＦＩは、さらに、電力喪失インジケータに応じて、システム変数を揮発性メモリから不揮発性メモリへコピーするように構成されてよい。
【０００８】
本開示と一致する実施例はＵＥＦＩのコンテクストにおいて表されてよいが、説明される原理は、ＯＳと、その根底にあるハードウェアとの間のあらゆるタイプのインターフェイスに対して適用されてよいことが正しく理解されよう。
【０００９】
図１は、本開示と一致する一つの実施例に係るトップレベルのシステムダイヤグラム１００を示している。システムは、プロセッサ１０２、メモリモジュール１１０、電力管理回路１０８（電力管理集積回路またはＰＭＩＣとしても参照されるもの）、および、リザーブエネルギ保管モジュール１１６を含むように示されている。メモリモジュール１１０は、揮発性メモリ１１２（例えば、データコンテンツを維持するために電力を要するメモリ）、および、不揮発性メモリモジュール１１４を含んでいる。プロセッサ１０２は、以下により詳細に説明されるように、耐性があるストレージ機能を伴うＵＥＦＩ１０４をホストするように示されている。耐性があるストレージは、書込まれてきたデータを保持するように構成されたメモリストレージを含むように理解されてよい。予期しない電力喪失、リセット、または、他の中断の場合でさえ、データが持続するようにである。プロセッサ１０２は、また、ホストＯＳ１０６に対しても示されている。
【００１０】
いくつかの実施例において、システムは、コンピューティングデバイス及び／又は通信デバイスであってよい。例えば、スマートフォン、タブレット、パーソナルデジタルアシスタント（ＰＤＡ）、モバイルインターネットデバイス（ＭＩＤ）、コンバーチブルタブレット、ノートブックまたはラップトップコンピュータ、ワークステーションまたはデスクトップコンピュータ、を含むものである。
【００１１】
ＰＭＩＣ１０８は、１次電源１１８から、プロセッサ１０２へ、および、他のシステムコンポーネントに対して電力を提供するように構成されてよい。電源は、交流（ＡＣ）ベース電源（例えば、メインまたはライン電力）、バッテリー、または、他の適切な電源を含んでよい。利用可能な１次電源からの電力喪失の場合には、ＰＭＩＣが、リザーブエネルギ保管モジュール１１６へ切り替えられてよい。以下により詳細に説明されるように、「クリーン（”ｃｌｅａｎ”）」なシャットダウンを実行するのに十分な時間期間について電力の継続性を提供するためである。電力喪失は、例えば、バッテリーの取り外し、電源コードの切断、過度なバッテリー放電、等のせいで生じ得るものである。
【００１２】
図２は、本開示と一致する一つの実施例に係るブロックダイヤグラム２００を示している。ＵＥＦＩ１０４が、より詳細に示されており、ブートサービスモジュール２１０、ランタイムサービスモジュール２１２、および、ＵＥＦＩ（またはシステム）変数２１４を含んでいる。揮発性メモリモジュール１１２は、ＯＳ１０６によっては直接的にアクセス可能でない保護キャッシュ領域２０８を含むように示されている。不揮発性メモリ１１４は、対照的に、ＵＥＦＩ１０４とＯＳ１０６の両方によって共有可能なものとして構成されてよい。リザーブエネルギ保管モジュール１１６は、キャパシタ２０２、もしくは、任意的に２次電源又は少なくとも一時的なオペレーションに適した他の電源を含むように示されている。
【００１３】
ＵＥＦＩ１０４は、システムパワーアップ、リセット、または、リスタートと関連付されたブートサービス２１０を提供するように構成されてよく、その最中には一般的にＯＳがまだ実行されていない。ＵＥＦＩ１０４は、また、ブートプロセスが完了し、かつ、ＯＳが開始された後で、ランタイムサービス２１２を提供するように構成されてもよい。この時間の最中、ＯＳが実行されているときに、ＵＥＦＩとＯＳとの間でメモリを共有することが、メモリコンテンション（ｃｏｎｔｅｎｔｉｏｎ）問題をトリガーし、及び／又は、セキュリティ問題を提起することがある。このことは、ＵＥＦＩ認証変数を保管しているメモリ領域の共有について特定的に真実である。プラットフォームキー（ＰＫ）、キー交換キー（ＫＥＫ）、認証キー（ｔｒｕｓｔｅｄ  ｋｅｙ）と署名と実行可能イメージ（ＤＢ）のデータベース、および、非認証キー（ｎｏｎ−ｔｒｕｓｔｅｄ  ｋｅｙ）と署名と実行可能イメージ（ＤＢＸ）のデータベース、を含んでいるものである。
【００１４】
ランタイムサービス２１２は、ＯＳ１０６によるＵＥＦＩ変数２１４に対する間接的なアクセスができるようにし得る。このアクセスは、例えば、ＧｅｔＶａｒｉａｂｌｅ（）、読出しのためのもの、および、ＳｅｔＶａｒｉａｂｌｅ（）、書込みのためのもの、といったファンクションコール（ｆｕｎｃｔｉｏｎ  ｃａｌｌ）を介して備えられてよい。ＵＥＦＩ１０４とＯＳ１０６との間のプログラミングインターフェイスの中に含まれるものである。読出しリクエストに応じて、ＵＥＦＩは、揮発性メモリ１１２の保護キャッシュ２０８からシステム変数データを取り出し（ｒｅｔｒｉｅｖｅ）てよい。書込みリクエストに応じて、ＵＥＦＩは、揮発性メモリ１１２の保護キャッシュ２０８の中にシステム変数データを保管してよい。システム変数は、例えば、ブートローダーの場所、システム言語プリファレンス、暗号法のための公開鍵（ｐｕｂｌｉｃ  ｋｅｙ）、等を含んでよい。上記のＰＫ、ＫＥＫ、ＤＢ、および、ＤＢＸを含んでいるものである。
【００１５】
ＵＥＦＩファームウェアコード、または、これらのシステム変数を実装する少なくとも一つの領域は、保護されたシステム管理ランダムアクセスメモリ（ＳＭＲＡＭ）に対するアクセスを伴って、プロセッサのシステム管理モード（ＳＭＭ）において実行されてよい。ＳＭＭとＳＭＲＡＭは、その下でＯＳが実行され得る、最高の特権レベル（ｐｒｉｖｉｌｅｇｅ  ｌｅｖｅｌ）である、リング０（Ｒｉｎｇ０）からさえも隔離されている。ＳＭＲＡＭは、一般的に、揮発性メモリであり、しかしながら、その内容は電力中断の最中に失われてしまう。
【００１６】
ＰＭＩＣ１０８は、１次電源が利用可能である間に、リザーブエネルギ保管モジュール１１６のキャパシタ２０２（または、２次バッテリー２０４）における電荷（ｃｈａｒｇｅ）を維持するように構成されてよい。ＰＭＩＣ１０８は、また、１次電源１１２からの電力喪失を検出し、そして、リザーブエネルギ保管モジュール１１６へ切り替えるように構成されてもよい。この電力喪失の検出に応じて、ＰＭＩＣ１０８は、また、プロセッサ１０２に対して電力喪失インジケータ（ＰＬＩ）２０６を生成してもよい。「クリーン」シャットダウンを実行するようにＵＥＦＩ１０４によるアクションをトリガーする、インタラプト（ｉｎｔｅｒｒｕｐｔ）、例えばシステム管理インタラプト（ＳＭＩ）、を生成し得るものである。ＳＭＩは、プロセッサをシステム管理モードへと強制し、その最中は、ＵＥＦＩが、ＯＳがプラットフォームハードウェアのコントロールを放棄した認証実行環境（ｔｒｕｓｔｅｄ  ｅｘｅｃｕｔｉｏｎ  ｅｎｖｉｒｏｎｍｅｎｔ）において実行している。クリーンシャットダウンの一部として、ＵＥＦＩは、リザーブエネルギ保管モジュール１１６からの残りの電力で実行しており、システム変数を揮発性保護キャッシュメモリ２０８から不揮発性メモリ１１４の領域の中へコピーする（例えば、キャッシュからフラッシュ（ｆｌｕｓｈ）される）ように構成されてよい。システム変数が保存され、かつ、１次電源が回復した後で、後続のシステムリブート／リセットのために利用できるようにである。システム変数がキャッシュからフラッシュされた後で、十分なリザーブ電力が利用可能であれば、クリーンシャットダウンは、また、ＵＥＦＩによるマスクできない（ｎｏｎ−ｍａｓｋａｂｌｅ）インタラプト（ＮＭＩ）の生成を含んでもよい。例えば、ユーザアプリケーションの状態及び／又はデータをセーブする（ｓａｖｉｎｇ）、といった、適切であり得るあらゆる追加のオペレーションを実行するように、ＯＳをトリガーするためである。
【００１７】
いくつかの実施例において、ＵＥＦＩ１０４は、システム変数について隔離されたメモリキャッシュと関連付けされて、第２プロセッサまたはマイクロコントローラにおいてホストされてよい。これら両方またはいずれかは、プロセッサ１０２から分離され、または、隔離されてよい。この第２プロセッサ／マイクロコントローラは、しかしながら、プロセッサ１０２及び／又は他のコンポーネントを含むシステムオンチップ（ＳｏＣ）アーキテクチャの中に統合されてよい。
【００１８】
いくつかの実施例において、キャパシタ２０２のサイズは、揮発性から不揮発性メモリへのＵＥＦＩ（システム）変数の移転が完了できるために十分な持続時間（ｄｕｒａｔｉｏｎ）の放電（ｄｉｓｃｈａｒｇｅ）時定数を提供するように選定されてよい。いくつかの実施例において、システム変数は、概ね１２８キロバイトのメモリを占有し得るが、より小さい又はより大きいサイズも、また、実施されてよい。いくつかの実施例において、揮発性メモリは、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）として構成されてよく、そして、不揮発性メモリは、フラッシュメモリ（例えば、ＮＡＮＤフラッシュメモリ）として構成されてよい。
【００１９】
図３は、本開示と一致する一つの実施例に係るオペレーション３００のフローチャートを示している。オペレーションは、システムブートまたはリセットの最中にＵＥＦＩによって実行されてよい。オペレーション３０２においては、揮発性メモリの中で保護キャッシュ（ｐｒｏｔｅｃｔｅｄ  ｃａｃｈｅ）がイネーブル（ｅｎａｂｌｅ）される。保護キャッシュは、ＵＥＦＩ以外のＯＳ又はあらゆるソフトウェア／エンティティによってはアクセスできないように構成されてよい。オペレーション３０４においては、ＵＥＦＩがプラットフォームを初期化する。オペレーション３０６においては、ＰＬＩキャパシタ（リザーブエネルギ保管モジュール１１６）の充電を開始する。オペレーション３０８においては、コントロールがＯＳへ移転される。
【００２０】
図４は、本開示と一致する別の実施例に係るオペレーション４００のフローチャートを示している。オペレーション４０２において、ＳＭＩが、コントロールをＵＥＦＩへ移転する。オペレーション４０４において、ＵＥＦＩは、電力喪失インジケータが生成されたかを判断する。電力喪失インジケータが無い場合には、次に、ＵＥＦＩは、オペレーション４０６において、例えば、ＯＳによるＧｅｔＶａｒｉａｂｌｅ（）またはＳｅｔＶａｒｉａｂｌｅ（）ファンクションコールを通じて、システム変数アクセスリクエストがなされたかを判断する。書込みがリクエストされた場合には、オペレーション４１０において、データが保護キャッシュに対して書込まれる。読出しがリクエストされた場合には、オペレーション４０８において、データが保護キャッシュから読出される。ＵＥＦＩは、さらに、オペレーション４１２においてコントロールをＯＳへ戻す前に、適切に、あらゆる追加のオペレーションを実行してよい。
【００２１】
電力喪失が発生し、そして、ＰＬＩキャパシタが十分な電荷を有している場合、オペレーション４２０において判断されて、「クリーン」シャットダウンが、次に、オペレーション４２４において実行される。クリーンシャットダウンは、オペレーション４２４において、保護キャッシュから不揮発性メモリへシステム変数をフラッシュすることまたはコピーすることを含んでいる。クリーンシャットダウンは、さらに、オペレーション４２６において、ＮＭＩを生成することを含んでよい。シャットダウンの前に、ＯＳに、適切であり得るあらゆる他のオペレーションを実行させるためである。ＰＬＩキャパシタが十分な電荷を有していない場合には、次に、オペレーション４２２において「ダーティ（”ｄｉｒｔｙ”）」シャットダウンが生じる。ダーティシャットダウンは、従って、揮発性メモリにおける保護キャッシュの中に保管されたあらゆるデータのロス（ｌｏｓｓ）を結果として生じ得る。
【００２２】
図５は、本開示と一致する別の実施例に係るオペレーション５００のフローチャートを示している。オペレーションは、一般的に、ファームウェアインターフェイスによる耐性があるストレージのための方法を提供する。オペレーション５１０においては、ファームウェアインターフェイスが、揮発性メモリの保護領域の中のシステム変数へのアクセスをコントロールする。オペレーション５２０においては、電力喪失インジケータがファームウェアインターフェイスに対して提供される。オペレーション５３０においては、電力喪失インジケータに応じて、リザーブエネルギ保管モジュールからの電力への切り替えが実行される。オペレーション５４０においては、電力喪失インジケータに応じて、システム変数が、ファームウェアインターフェイスによって、揮発性メモリから不揮発性メモリへとコピーされる。
【００２３】
図６は、本開示と一致する別の実施例のシステムダイヤグラム６００を示している。システム６００は、モバイルプラットフォーム６１０であってよく、もしくは、例えば、スマートフォン、スマートタブレット、パーソナルデジタルアシスタント（ＰＤＡ）、モバイルインターネットデバイス（ＭＩＤ）、コンバーチブルタブレット、ノートブックまたはラップトップコンピュータ、または、あらゆる他の適切なデバイスといった、コンピューティングデバイスであってよい。しかしながら、ここにおいて説明されるシステムの実施例は、モバイルプラットフォームに限定されるものではないこと、そして、いくつかの実施例において、システム６００は、ワークステーションまたはデスクトップコンピュータであってよいこと、が正しく理解されよう。
【００２４】
システム６００は、プロセッサ６２０を含むように示されている。いくつかの実施例において、プロセッサ６２０は、あらゆる数量のプロセッサコアとして実装されてよい。プロセッサ（またはプロセッサコア）は、あらゆるタイプのプロセッサであってよい。例えば、マイクロプロセッサ、エンベッドされたプロセッサ、デジタル信号プロセッサ（ＤＳＰ）、ネットワークプロトコル、フィールドプログラマブルゲートアレイ、または、コードを実行するように構成された他のデバイス、といったものである。プロセッサ６２０は、シングルスレッドコア、または、その中にコア毎に一つ以上のハードウェアスレッドコンテクスト（または「論理プロセッサ（”ｌｏｇｉｃａｌ  ｐｒｏｃｅｓｓｏｒ”）」）を含み得るマルチスレッドコアであってよい。システム６００は、また、プロセッサ６２０に接続されたメモリを含むように示されている。メモリは、揮発性メモリ１１２および不揮発性メモリ１１４を含んでよい。メモリは、当業者について知られているように、または、そうでなければ利用可能であるように、多種多様なメモリ（メモリ階層及び／又はメモリキャッシュの様々なレイヤを含む）のうちあらゆるものであってよい。プロセッサ６２０とメモリ１１２、１１４は、一つまたはそれ以上のオペレーティングシステム、ファームウェアインターフェイス、ユーザアプリケーション、または他のソフトウェアモジュールを保管、ホスト、及び／又は実行するように構成されてよいことが正しく理解されよう。これらのアプリケーションは、例えば、これらに限定されるわけではないが、あらゆるタイプの計算、通信、データ管理、データストレージ、及び／又は、ユーザインターフェイスタスクを含んでよい。いくつかの実施例において、これらのアプリケーションは、モバイルプラットフォーム６１０のあらゆる他のコンポーネントを使用し、または、相互作用してよい。
【００２５】
システム６００は、また、例えば、プラットフォームへのイーサネット（登録商標）接続性（Ｅｔｈｅｒｎｅｔ  ｃｏｎｎｅｃｔｉｖｉｔｙ）を提供するように構成され得る、ネットワークインターフェイスモジュール６４０を含むようにも示されている。システム６００は、また、無線通信モジュール６５０を含むようにも示されている。例えば、セルラー通信、ワイファイ（ＷｉＦｉ）、ブルートゥース（登録商標）（Ｒ）、及び／又は、近距離無線通信（ＮＦＣ）といった、無線通信機能を含んでよい。無線通信は、あらゆる既存の、または、まだ開発されている通信標準に準拠し、または、そうでなければコンパチブルなものであってよい。ブルートゥース（登録商標）（Ｒ）、Ｗｉ−Ｆｉ、および、携帯電話通信標準の過去、現在、および将来のバージョンを含むものである。
【００２６】
システム６００は、また、入力／出力（ＩＯ）システムまたはコントローラ６３０を含むようにも示されている。プロセッサ６２０と、システム６００の他のエレメント又はシステム６００の外部の他のエレメント（図示なし）との間のデータ通信を可能にし、または、管理するように構成され得るものである。
【００２７】
システムは、一般的に、例えば、タッチスクリーン、液晶ディスプレイ（ＬＣＤ）、または、あらゆる他の適切なディスプレイタイプ、といったディスプレイエレメント６６０を介して、ユーザに対して様々なインターフェイスを提供してよい。
【００２８】
システム６００は、また、ＰＭＩＣモジュール１０８とリザーブエネルギ保管モジュール１１６を含むようにも示されている。そのオペレーションは、上記に詳細に説明されてきている。
【００２９】
いくつかの実施例においては、システム６００の様々なコンポーネントが、システムオンチップ（ＳｏＣ）アーキテクチャにおいて結合されてよいことが正しく理解されよう。いくつかの実施例において、コンポーネントは、ハードウェアコンポーネント、ファームウェアコンポーネント、ソフトウェアコンポーネント、もしくは、ハードウェア、ファームウェア、又はソフトウェアのあらゆる適切な組み合わせであってよい。
【００３０】
ここにおいて説明された実施例は、一つまたはそれ以上のストレージ媒体を含むシステムにおいて実施されてよい。一つまたはそれ以上のプロセッサによって実行されると、本方法を実行するインストラクションを、個別に、または、組み合わせて保管している媒体である。ここで、プロセッサは、例えば、システムＣＰＵ（例えば、コアプロセッサ）、及び／又は、プログラマブル回路を含んでよい。従って、ここにおいて説明された方法に応じたオペレーションは、例えば、いくつかの異なる物理的ロケーションでの処理構成といった、複数の物理的デバイスにわたり分配されてよいことが意図されている。また、当業者によって理解されるであろうように、本方法のオペレーションは、個別に、または、部分的な組み合わせにおいて実行されてよいことも意図されている。従って、それぞれのフローチャートの必ずしも全てのオペレーションが実行される必要はなく、そして、本開示は、当業者によって理解されるであろうように、そうしたオペレーションの全ての部分的な組み合わせが可能であることを明示的に意図するものである。
【００３１】
ストレージ媒体は、あらゆるタイプの有形の媒体を含んでよい。例えば、フロッピー（登録商標）ディスク、光ディスク、コンパクトディスク読出し専用メモリ（ＣＤ−ＲＯＭ）、再書込み可能コンパクトディスク（ＣＤ−ＲＷ）、デジタル多目的ディスク（ＤＶＤ）、および光磁気ディスクを含むあらゆるタイプのディスク、読出し専用メモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）といった半導体デバイス、ダイナミック及びスタティックＲＡＭ、消去可能プログラム可能読出し専用メモリ（ＥＰＲＯＭ）、電気的消去可能プログラム可能読出し専用メモリ（ＥＥＰＲＯＭ）、フラッシュメモリ、磁気又は光カード、または、電子的インストラクションを保管するために適切なあらゆるタイプの媒体といったものである。
【００３２】
「回路（”ｃｉｒｃｕｉｔｒｙ”）」は、ここにおけるあらゆる実施例において使用されるように、例えば、単独で又はあらゆる組み合わせにおいて、ハード・ワイヤード（ｈａｒｄｗｉｒｅｄ）回路、プログラム可能回路、状態機械回路、及び／又は、プログラム可能回路によって実行されるインストラクションを保管するファームウェアを含んでよい。アプリケーション（ａｐｐ）は、ホストプロセッサといったプログラム可能回路または他のプログラム可能回路において実行され得るコードまたはインストラクションとして具現化されてよい。モジュールは、ここにおけるあらゆる実施例において使用されるように、回路として具現化されてよい。回路は、集積回路チップといった、集積回路として具現化されてよい。
【００３３】
従って、本開示は、例えば、電力喪失の場合に、メモリ書込み一貫性を提供するための耐性があるストレージを伴うＵＥＦＩに対する、システム、デバイス、方法、および、コンピュータで読取り可能な媒体を提供する。以下の例示は、さらなる実施例に関連するものである。
【００３４】
実施例１に従って、ファームウェアインターフェイスのために耐性があるストレージを提供するシステムが提供される。本システムは、ファームウェアインターフェイスをホストするためのプロセッサを含んでよく、ファームウェアインターフェイスは、揮発性メモリの保護領域におけるシステム変数へのアクセスをコントロールする。この実施例のシステムは、また、プロセッサに対して電力を提供し、かつ、さらに、ファームウェアインターフェイスに対して電力喪失インジケータを提供するための電力管理回路も含んでよい。この実施例のシステムは、さらに、電力喪失インジケータに応じて、プロセッサに対して電力を提供するリザーブエネルギ保管モジュールを含んでよい。この実施例のファームウェアインターフェイスは、電力喪失インジケータに応じて、システム変数を揮発性メモリから不揮発性メモリへコピーするように構成されてよい。
【００３５】
実施例２は、上記の実施例に係るエレメントを含んでよく、かつ、リザーブエネルギ保管モジュールは、キャパシタである。
【００３６】
実施例３は、上記の実施例に係るエレメントを含んでよく、かつ、プロセッサは、さらに、オペレーティングシステム（ＯＳ）をホストし、ファームウェアインターフェイスは、ＯＳによるシステム変数へのアクセスをコントロールする。
【００３７】
実施例４は、上記の実施例に係るエレメントを含んでよく、かつ、さらに、オペレーティングシステム（ＯＳ）をホストするための第２プロセッサを含み、ファームウェアインターフェイスは、ＯＳによるシステム変数へのアクセスをコントロールする。
【００３８】
実施例５は、上記の実施例に係るエレメントを含んでよく、かつ、電力喪失インジケータは、ファームウェアインターフェイスのシステム管理インタラプト（ＳＭＩ）と関連付けされている。
【００３９】
実施例６は、上記の実施例に係るエレメントを含んでよく、かつ、ファームウェアインターフェイスは、さらに、システム変数を不揮発性メモリへコピーした後で、ＯＳに対してマスクできないインタラプト（ＮＭＩ）を生成する。
【００４０】
実施例７は、上記の実施例に係るエレメントを含んでよく、かつ、電力管理回路は、さらに、リザーブエネルギ保管モジュールを充電する。
【００４１】
実施例８は、上記の実施例に係るエレメントを含んでよく、かつ、ファームウェアインターフェイスは、ユニファイド・エクステンシブル・ファームウェア・インターフェイス（ＵＥＦＩ）である。
【００４２】
実施例９は、上記の実施例に係るエレメントを含んでよく、かつ、リザーブエネルギ保管モジュールは、バッテリーである。
【００４３】
実施例１０は、上記の実施例に係るエレメントを含んでよく、かつ、揮発性メモリは、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）である。
【００４４】
実施例１１は、上記の実施例に係るエレメントを含んでよく、かつ、不揮発性メモリは、フラッシュメモリである。
【００４５】
実施例１２は、上記の実施例に係るエレメントを含んでよく、かつ、本システムは、スマートフォン、スマートタブレット、または、ラップトップコンピュータである。
【００４６】
実施例１３に従って、ファームウェアインターフェイスによって、耐性があるストレージを提供するための方法が提供される。本方法は、ファームウェアインターフェイスによって、揮発性メモリの保護領域におけるシステム変数へのアクセスをコントロールするステップを含んでよい。この実施例の方法は、また、ファームウェアインターフェイスに対して電力喪失インジケータを提供するステップも含んでよい。この実施例の方法は、さらに、電力喪失インジケータに応じて、リザーブエネルギ保管モジュールからの電力供給に切り替えるステップを含んでよい。この実施例の方法は、さらに、ファームウェアインターフェイスによって、電力喪失インジケータに応じて、システム変数を揮発性メモリから不揮発性メモリへコピーするステップを含んでよい。
【００４７】
実施例１４は、上記の実施例に係るオペレーションを含んでよく、かつ、リザーブエネルギ保管モジュールは、キャパシタである。
【００４８】
実施例１５は、上記の実施例に係るオペレーションを含んでよく、かつ、システム変数は、オペレーティングシステム（ＯＳ）によって、コントロール可能にアクセスされる。
【００４９】
実施例１６は、上記の実施例に係るオペレーションを含んでよく、かつ、さらに、ファームウェアインターフェイスのシステム管理インタラプト（ＳＭＩ）を生成するステップを含み、ＳＭＩは、電力喪失インジケータと関連付けされている。
【００５０】
実施例１７は、上記の実施例に係るオペレーションを含んでよく、かつ、さらに、システム変数を不揮発性メモリへコピーした後で、ＯＳに対してマスクできないインタラプト（ＮＭＩ）を生成するステップを含む。
【００５１】
実施例１８は、上記の実施例に係るオペレーションを含んでよく、かつ、さらに、リザーブエネルギ保管モジュールを充電するステップを含む。
【００５２】
実施例１９は、上記の実施例に係るオペレーションを含んでよく、かつ、ファームウェアインターフェイスは、ユニファイド・エクステンシブル・ファームウェア・インターフェイス（ＵＥＦＩ）である。
【００５３】
実施例２０に従って、ファームウェアインターフェイスによって、耐性があるストレージを提供するためのシステムが提供される。システムは、ファームウェアインターフェイスによって、揮発性メモリの保護領域におけるシステム変数へのアクセスをコントロールするための手段を含んでよい。この実施例のシステムは、また、ファームウェアインターフェイスに対して電力喪失インジケータを提供するための手段も含んでよい。この実施例のシステムは、さらに、電力喪失インジケータに応じて、リザーブエネルギ保管モジュールからの電力供給に切り替えるための手段を含んでよい。この実施例のシステムは、さらに、ファームウェアインターフェイスによって、電力喪失インジケータに応じて、システム変数を揮発性メモリから不揮発性メモリへコピーするための手段を含んでよい。
【００５４】
実施例２１は、上記の実施例に係るエレメントを含んでよく、かつ、リザーブエネルギ保管モジュールは、キャパシタである。
【００５５】
実施例２２は、上記の実施例に係るエレメントを含んでよく、かつ、システム変数は、オペレーティングシステム（ＯＳ）によって、コントロール可能にアクセスされる。
【００５６】
実施例２３は、上記の実施例に係るエレメントを含んでよく、かつ、さらに、ファームウェアインターフェイスのシステム管理インタラプト（ＳＭＩ）を生成するための手段を含み、ＳＭＩは、電力喪失インジケータと関連付けされている。
【００５７】
実施例２４は、上記の実施例に係るエレメントを含んでよく、かつ、さらに、システム変数を不揮発性メモリへコピーした後で、ＯＳに対してマスクできないインタラプト（ＮＭＩ）を生成するための手段を含む。
【００５８】
実施例２５は、上記の実施例に係るエレメントを含んでよく、かつ、さらに、リザーブエネルギ保管モジュールを充電するための手段を含む。
【００５９】
実施例２６は、上記の実施例に係るエレメントを含んでよく、かつ、ファームウェアインターフェイスは、ユニファイド・エクステンシブル・ファームウェア・インターフェイス（ＵＥＦＩ）である。
【００６０】
別の実施例に従って、少なくとも一つのコンピュータで読取り可能な記憶媒体が提供される。プロセッサによって実行されると、上記のあらゆる実施例において説明されたように、本方法のオペレーションを実行させるインストラクションが保管されたものである。
【００６１】
別の実施例に従って、上記のあらゆる実施例において説明されたように、本方法を実行するための手段を含む装置が提供される。
【００６２】
ここにおいて使用されてきた用語と表現は、説明に係る用語として使用されており、限定するものではない。そうした用語と表現の使用においては、示され、かつ、説明された特徴に係るあらゆる均等物（または、それらの部分）を排除する意図は存在しない。そして、請求の範囲内において種々の変更が可能であることが理解される。従って、請求項は、そうした均等物の全てをカバーするように意図されているものである。様々な特徴、態様、及び実施例が、ここにおいて説明されてきた。特徴、態様、及び実施例は、当業者であれば理解されるように、変形および変更と同様に、お互いに組み合わされることが可能である。本開示は、従って、そうした組み合わせ、変形、および変更を包含するものと考えられるべきである。
【図１】
2017521768.tif 000003
【図２】
2017521768.tif 000004
【図３】
2017521768.tif 000005
【図４】
2017521768.tif 000006
【図５】
2017521768.tif 000007
【図６】
2017521768.tif 000008
【国際調査報告】
2017521768.tif 000009
2017521768.tif 000010
2017521768.tif 000011