IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ オラクル・インターナショナル・コーポレイションの特許一覧

特表2024-513385持続性メモリ状態を維持しながら非同期リセットイベントを処理するためのシステムおよび方法
<>
  • 特表-持続性メモリ状態を維持しながら非同期リセットイベントを処理するためのシステムおよび方法 図1
  • 特表-持続性メモリ状態を維持しながら非同期リセットイベントを処理するためのシステムおよび方法 図2
  • 特表-持続性メモリ状態を維持しながら非同期リセットイベントを処理するためのシステムおよび方法 図3
  • 特表-持続性メモリ状態を維持しながら非同期リセットイベントを処理するためのシステムおよび方法 図4
  • 特表-持続性メモリ状態を維持しながら非同期リセットイベントを処理するためのシステムおよび方法 図5
  • 特表-持続性メモリ状態を維持しながら非同期リセットイベントを処理するためのシステムおよび方法 図6
  • 特表-持続性メモリ状態を維持しながら非同期リセットイベントを処理するためのシステムおよび方法 図7
  • 特表-持続性メモリ状態を維持しながら非同期リセットイベントを処理するためのシステムおよび方法 図8
  • 特表-持続性メモリ状態を維持しながら非同期リセットイベントを処理するためのシステムおよび方法 図9
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-03-25
(54)【発明の名称】持続性メモリ状態を維持しながら非同期リセットイベントを処理するためのシステムおよび方法
(51)【国際特許分類】
   G06F 11/14 20060101AFI20240315BHJP
   G06F 12/0804 20160101ALI20240315BHJP
   G06F 1/30 20060101ALI20240315BHJP
   G06F 1/24 20060101ALI20240315BHJP
【FI】
G06F11/14 641D
G06F12/0804 100
G06F1/30
G06F1/24 Z
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023560413
(86)(22)【出願日】2022-03-29
(85)【翻訳文提出日】2023-11-28
(86)【国際出願番号】 US2022022331
(87)【国際公開番号】W WO2022212364
(87)【国際公開日】2022-10-06
(31)【優先権主張番号】63/168,974
(32)【優先日】2021-03-31
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】17/704,903
(32)【優先日】2022-03-25
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】502303739
【氏名又は名称】オラクル・インターナショナル・コーポレイション
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】フラー,ベンジャミン・ジョン
【テーマコード(参考)】
5B011
5B205
【Fターム(参考)】
5B011DA01
5B011EA02
5B011EB01
5B011GG01
5B205MM01
5B205NN89
5B205WW03
5B205WW11
(57)【要約】
本明細書では、持続性メモリ状態を維持しながら非同期電源遷移イベントを処理する技術が説明される。いくつかの実施形態では、システムがシステム論理によって非同期リセットイベントをプロキシし得、システム論理が、ハードウェア電源遷移を呼び出す前に持続性キャッシュフラッシュを実行する特別な持続性フラッシュ割込みハンドラを呼び出すための割込みを生成する。加えて、またはその代わりに、システムは、ハードウェアにおいて要求されたすべてのリセットや電源遷移を、持続性キャッシュフラッシュハンドラの成功/不成功とは無関係に時間の有界ウィンドウの範囲内で確実に完了することを保証するための、ハードウェアバックアップ機構を含み得る。
【特許請求の範囲】
【請求項1】
コンピュータシステムにおけるリセットまたは電源遷移を開始するようにとの要求を識別するステップと、
前記要求を識別することに応答して、持続性キャッシュフラッシュを実行するために前記コンピュータシステムにおいて第1のモードが有効にされたかどうかを判定するステップと、
前記第1のモードが有効にされたと判定することに応答して、持続性キャッシュフラッシュ動作を起動する割込みを生成するステップと、
前記持続性キャッシュフラッシュ動作が完了するかまたはタイムアウトが満了するまで、前記リセットまたは前記電源遷移を遅延させるステップとを含む、方法。
【請求項2】
(a)前記第1のモードのときには、前記持続性キャッシュフラッシュ動作を起動する前記割込みを生成し、電源遷移イベントを遅延させ、(b)第2のモードで動作しているときには、前記コンピュータシステムのチップセットに電源遷移を実行するようにとの要求を直接ルーティングする、ように構成されたシステム論理によって前記電源遷移イベントのソースをプロキシするステップをさらに含む、請求項1に記載の方法。
【請求項3】
前記リセットまたは前記電源遷移を開始するようにとの前記要求が、前記コンピュータシステムにおけるエラーに基づいて検知される、請求項1に記載の方法。
【請求項4】
前記リセットまたは前記電源遷移を開始するようにとの前記要求が、ユーザと前記コンピュータシステムのハードウェアとの相互作用に基づいて検知される、請求項1に記載の方法。
【請求項5】
前記リセットまたは前記電源遷移を開始するようにとの前記要求が、ユーザと前記コンピュータシステムの基板管理コントローラとの相互作用に基づいて検知される、請求項1に記載の方法。
【請求項6】
前記第1のモードが有効にされたと判定することに応答して、前記コンピュータシステムの内部のハードウェア構成要素の汎用入出力ピンを構成するステップをさらに含み、前記汎用入出力ピンに割込みがアサートされたとき、前記ハードウェア構成要素は前記持続性キャッシュフラッシュ動作を起動する、請求項1に記載の方法。
【請求項7】
前記持続性キャッシュフラッシュ動作は、揮発性プロセッサキャッシュのデータを持続性メモリに転送する、請求項1に記載の方法。
【請求項8】
前記持続性キャッシュフラッシュ動作が完了した後に前記コンピュータシステムをリセットすることは、前記コンピュータシステムのウォームリセットを起動する値をレジスタに書き込むことを含む、請求項1に記載の方法。
【請求項9】
前記持続性キャッシュフラッシュ動作が完了した後に前記コンピュータシステムの電源遷移を開始することは、前記コンピュータシステムの電源遷移を起動する値をレジスタに書き込むことを含む、請求項1に記載の方法。
【請求項10】
前記持続性キャッシュフラッシュ動作が完了した後または前記タイムアウトが満了した後に前記コンピュータシステムをリセットすることは、前記コンピュータシステムのチップセットにリセット要求信号をアサートすることを含む、請求項1に記載の方法。
【請求項11】
前記持続性キャッシュフラッシュ動作が完了した後または前記タイムアウトが満了した後に前記コンピュータシステムの電源遷移を開始することは、前記コンピュータシステムのチップセットに電源状態遷移要求信号をアサートすることを含む、請求項1に記載の方法。
【請求項12】
リセットまたは電源遷移の要求は、前記第1のモードが有効であるときプロセッサキャッシュをフラッシュする割込みハンドラを起動するために使用される割込み信号にルーティングされる、請求項1に記載の方法。
【請求項13】
前記第1のモードが無効であるときには、プロセッサキャッシュをフラッシュすることなく、リセット要求が前記システムのリセットピンにルーティングされる、請求項1に記載の方法。
【請求項14】
ハードウェアプロセッサと、(a)持続性キャッシュフラッシュ動作を起動する割込み信号を受け取るための第1のピン、および(b)リセット要求信号を受け取るための第2のピンを含んで、前記ハードウェアプロセッサに結合されたチップセットとを備え、
前記チップセットは、前記第1のピンにおける割込み信号の検知に応答して、前記ハードウェアプロセッサ上のタスクの実行を停止させ、持続性キャッシュフラッシュハンドラを呼び出し、
前記チップセットは、前記第2のピンにおけるリセット要求信号の検知に応答して、前記ハードウェアプロセッサ上のタスクの実行を停止させ、前記持続性キャッシュフラッシュハンドラを呼び出すことなく、リセットを開始する、システム。
【請求項15】
リセットまたは電源遷移のイベントのソースのプロキシであるシステム論理をさらに備え、
前記システム論理は、前記第1のピンおよび前記第2のピンに電気的に結合されており、(a)第1のモードのときには、前記持続性キャッシュフラッシュハンドラを呼び出すための前記割込み信号を生成し、リセットまたは電源遷移のイベントを遅延させ、(b)第2のモードで動作しているときには、前記チップセットの前記第2のピンに、リセットまたは電源遷移を実行するようにとの要求を直接ルーティングする、請求項14に記載のシステム。
【請求項16】
前記システム論理は、前記割込み信号が生成されたとき開始されるタイマを含み、前記タイマの満了の検知に応答して前記第1のピンにリセット要求信号を送り、前記タイマが満了する以前に前記持続性キャッシュフラッシュ動作が完了したら前記タイマをキャンセルするように構成される、請求項14に記載のシステム。
【請求項17】
前記システム論理は、基板管理コントローラ、デバッグヘッダ、およびユーザと相互作用するハードウェア構成要素からの、リセットまたは電源遷移のイベントを開始するようにとの要求をインターセプトする、請求項14に記載のシステム。
【請求項18】
前記第1のピンは、汎用入出力ピンであり、
前記チップセットは、割込み信号を検知し、前記システムにおいて持続性キャッシュフラッシュが有効であるとの検知に応答して、持続性キャッシュフラッシュハンドラを呼び出すように構成される、請求項14に記載のシステム。
【請求項19】
前記ハードウェアプロセッサは揮発性プロセッサキャッシュのセットを含み、
前記持続性キャッシュフラッシュハンドラは、呼び出されたとき、揮発性プロセッサキャッシュのデータを持続性メモリに転送する、請求項14に記載のシステム。
【請求項20】
請求項1から13のいずれか1項に記載の動作を実行するための手段を備えるシステム。
【請求項21】
命令を含む非一時的コンピュータ可読媒体であって、前記命令がハードウェアプロセッサによって実行されたとき、請求項1から13のいずれか1項に記載の動作が実行される、非一時的コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本開示はキャッシュ管理技術に関する。詳細には、本開示は、電力喪失イベントに際して揮発性キャッシュ状態をフラッシュするための技術に関する。
【背景技術】
【0002】
背景
現代のサーバ設計は、大抵の場合、メモリアーキテクチャに、データセンタの持続性メモリモジュール(DCPMM)または不揮発性デュアルインラインメモリモジュール(NVDIMMS)などの持続性メモリ(PMEM)を組み込む。持続性メモリは、低レイテンシランダムアクセス時間を含むブロックベースの持続性媒体に対するいくつかの利点と、持続性メモリの中に、リモートダイレクトメモリアクセス(RDMA)動作を直接実行する能力とをもたらす。
【0003】
持続性メモリデバイスにデータを直接記憶することは高くつくので、持続性メモリを有するサーバは、通常は、ソフトウェアによる明示的記憶動作の実行が必要になる回数を制限するために、いくつかの揮発性オンチップ状態を持続性として扱う機能をサポートする。揮発性バッファに記憶された内容が消失する可能性のある、すべてのリセットまたは電源遷移に際して、揮発性バッファの状態が持続性メモリにフラッシュされることをシステムが保証し得るなら、プログラムは、揮発性バッファに記憶されたあらゆるデータを持続性として扱うことができる。揮発性バッファをフラッシュするためのそのような手法の1つは、非同期ダイナミックランダムアクセスメモリリフレッシュ(ADR)と称され、それによって、メモリコントローラの揮発性バッファが持続性ドメインに含まれる。この手法によれば、システムは、電力喪失後も、システムの給電に必要なわずかなエネルギー量を、揮発性メモリコントローラのバッファを持続性メモリデバイスにフラッシュするのに十分長い間確保する。
【0004】
拡張ADR(eADR)または持続性キャッシュフラッシュ(PCF)と称される別の技術は、持続性として扱われ得る揮発性状態を、すべてのプロセッサキャッシュおよびオンチップバッファを含めるように拡張するものである。一般的には、プロセッサキャッシュは、メモリコントローラの揮発性メモリバッファよりも何桁も大きい。したがって、システムは、フラッシュ処理を完成するのに、かなり大きなエネルギーを必要とする。持続性キャッシュフラッシュをサポートするサーバは、持続性キャッシュフラッシュ動作中のシステムに給電するために、何らかの形態の補助エネルギー貯蔵装置を含む必要がある。いくつかのサーバは、電力喪失の後に、プロセッサキャッシュから持続性メモリへのデータのフラッシュを完成するのに十分なエネルギーを供給するための、バッテリーバックアップユニット(BBU)を含む。BBUは、かなりのエネルギー量を貯蔵し得るが、フットプリントが大きいこと、サーバシステムに必要な大電流を供給する能力が限られること、熱的制約、および追加コストを含む、多くの課題がある。
【0005】
非同期ハードウェアリセットイベントにより、持続性キャッシュフラッシュ動作の実施がさらに複雑になる。非同期ハードウェアリセットは、一般的にはリセット要求ピンを直接アサートすることによって実施され、プロセッサまたはチップセットの電源シーケンス論理にとって検知不可能であり得る。外部から起動されたリセットイベントが、リセットに先立って持続性フラッシュハンドラを呼び出すことなくハードウェアリセットを起動することを、システムが許容してしまうと、持続性メモリ状態が適切にフラッシュされない可能性がある。プラットフォームハードウェアによるサポートが十分でないときに、アプリケーションが持続性キャッシュフラッシュに頼ると、電力途絶イベント中に、アプリケーションデータが失われるかまたは破損する可能性がある。
【0006】
この節に記述された手法は、追求され得る手法ではあるが、必ずしも、以前に考えられた手法または追求された手法ではない。したがって、別段の指示がない限り、この節に記述された手法のどれも、この節に含まれているだけで従来技術と見なされると想定されるべきではない。
【0007】
実施形態は、添付図面の図において、限定としてではなく例として示される。本開示における「一(an)」実施形態または「一(one)」実施形態への参照は、必ずしも同一の実施形態を参照するわけではなく、「少なくとも1つの」実施形態を意味することに留意されたい。
【図面の簡単な説明】
【0008】
図1】いくつかの実施形態による、持続性キャッシュフラッシュ動作を実行するためのシステムを示す図である。
図2】いくつかの実施形態による、持続性メモリ状態を維持するために持続性キャッシュフラッシュ動作を実行するための動作の例示のセットを示す図である。
図3】いくつかの実施形態による、複数の電源を有するシステムにおける持続性キャッシュフラッシュ動作を管理するための動作の例示のセットを示す図である。
図4】いくつかの実施形態による、複数の電源を管理するための例示のシステムを示す図である。
図5】いくつかの実施形態による、別々の電源ユニットからの時差警告信号を示す例示のタイミング図である。
図6】いくつかの実施形態による、外部から起動された非同期リセットイベントを処理するための動作の例示のセットを示す図である。
図7】いくつかの実施形態による、外部から起動された非同期リセットイベントをインターセプトして処理するための例示のシステムを示す図である。
図8】いくつかの実施形態による、持続性メモリ動作モードを調整するための動作の例示のセットを示す図である。
図9】いくつかの実施形態によるコンピュータシステムを示すブロック図である。
【発明を実施するための形態】
【0009】
詳細な説明
以下の記述では、説明のために、十分な理解を提供するように、多くの特定の詳細が説明される。1つまたは複数の実施形態は、これら特定の詳細なしで実施され得る。一実施形態において説明された特徴が、別の実施形態において説明された特徴と組み合わされ得る。いくつかの例では、本発明を不必要に不明瞭にすることのないように、周知の構造およびデバイスがブロック図形式で説明される。
【0010】
1.全般的な概要
本明細書では、交流(AC)電力の喪失後に、揮発性システムメモリを持続性メモリにフラッシュするための補助エネルギーを供給するためにシステム電源ユニット(PSU)を利用する技術が説明される。いくつかの実施形態では、これらの技術は、電力供給停止イベントの後に、PSU大容量コンデンサの利用可能なエネルギーを使用してプロセッサキャッシュおよびメモリコントローラバッファを完全にフラッシュするための、十分に長く延長されたホールドアップウィンドウを実装することを含む。これらの技術により、PSUの利用可能なエネルギー量が大半のBBUと比較して相対的に小さくても、BBUを必要とすることなく揮発性システムキャッシュをフラッシュすることが可能になり得る。
【0011】
多くのPSUが大容量コンデンサを含み、システムがAC電力の一時的な10ミリ秒(ms)の喪失に対処することを可能にする。例示のPSU実装形態は、最悪ケースの出力負荷を想定して、タイマが満了したとき供給出力をオフにする10ミリ秒のタイマを用意する。この実装形態は、PSUによって実施され得る最長のホールドアップウィンドウを、システムの電力消費に関係なく10ミリ秒に制限し、これは、すべてのシステムキャッシュをフラッシュするのに十分な時間ではない可能性がある。
【0012】
いくつかの実施形態では、PSUは、固定時間のウィンドウではなく、システムの電力消費によって決定される無期限時間のウィンドウ用に、ホールドアップウィンドウを延長するように実施される。1つまたは複数のPSUの内部の大容量コンデンサの電圧が監視され得、大容量コンデンサにおいて電力不足警告のプログラマブル閾値電圧が検知されたとき、通知が起動され得る。システムは、PSUにおいて、キャッシュフラッシュ動作をうまく完了するのに必要なエネルギーのある特定の最低量が利用可能であることを示すための電圧閾値を構成し得る。PSUは、システムの電源レールを安全に順次電圧低下させるために必要なエネルギーの最低量に関連する第2の電圧閾値をさらに実施し得る。どちらの通知も、PSUの大容量コンデンサにおいて利用可能なエネルギー量に基づくので、システムは、システムの固定期間ではなく、消費電力によってウィンドウ期間が決定される、構成可能なホールドアップウィンドウを実施し得る。結果として、システムは、固定期間のタイマによって制約を加えられることなく、エネルギー消費を最小化するための動作点を定義し得る。
【0013】
いくつかの実施形態では、システム論理は、設置されたすべてのPSUにわたって利用可能なエネルギーの全体量を推定するエネルギーカウンタを実施して、推定された合計のシステムエネルギーが、キャッシュフラッシュ動作をうまく完了するのに必要な最小限のエネルギーに関連する閾値に到達したとき、持続性フラッシュハンドラを呼び出す割込み信号を生成し得る。システム論理は、システムに設置されたそれぞれのPSUについて、エネルギーカウンタを実施し得る。PSUがシステム論理に対して電力不足警告信号を生成した後に、システム論理は、システムにおける有効な電源の数に比例した速度およびシステムの動作モードにおいて、そのPSUに関連するエネルギーカウンタのデクリメントを開始し得る。システム論理は、利用可能な合計のエネルギーを、PSUカウンタの各々について合計することによって推定し得る。合計の推定されたエネルギーが臨界閾値未満になったとき、システム論理は、持続性キャッシュフラッシュハンドラを呼び出して、割込み信号を生成し得る。
【0014】
いくつかの実施形態では、システムは、フラッシュを完了するのに必要なエネルギー量を最小化するために、フラッシュ処理中の電力消費を低減するように構成される。プロセッサ、持続性メモリデバイス、およびサポート回路は給電されたままでよい。ファン、入出力(I/O)デバイス、およびハードディスクドライブなど、フラッシュ処理に関係しない他のシステム構成要素は、電力を使用不可にされてよい。システムの電力制御ループは、プロセッサ周波数の低下などによって中央処理装置(CPU)の電力消費を低下させるためのフックをさらに含有し得る。
【0015】
持続性と見なされる状態を含有する揮発性システムリソースが、システムリセットまたは電源遷移に先立って、持続性媒体に適切にフラッシュされることを保証するために、いくつかの実施形態では、すべてのリセットまたは電源遷移に先立って、すべての揮発性状態を持続性媒体に書き込む持続性フラッシュハンドラが実行される。システムは、リセットまたは電源状態遷移を開始するために使用されるレジスタに対するアクセスをトラップして、トラップされた書込みの完成を許容する前に持続性キャッシュフラッシュを開始し得る。システムは、レジスタに対するアクセスをトラップすることにより、要求されたリセットまたは電源遷移アクションを実行する前にキャッシュフラッシュハンドラを作動させることができる。ホストサブシステムの外部のプラットフォームエンティティによって要求されたリセットや電源遷移に対処するために、類似の機構が実施され得る。
【0016】
電力供給停止ばかりでなく、外部エージェントによって開始されたイベントを受けて、システムリセットや電源遷移が生じることもある。たとえば、ある特定のシステムエラーが、ハードウェア(HW)によって開始されるシステムリセットを起動することがある。別の例として、ユーザが、ボタンを押すかまたはスイッチを反転させることによって、ウォームリセットまたは強制的な電圧低下を開始することもある。外部から開始されたリセットまたは電源遷移のイベントが、リセット以前にフラッシュハンドラを呼び出すことなくハードウェアリセットを起動することを、システムが許容してしまうと、揮発性プロセッサキャッシュまたはメモリバッファにあるデータが失われる可能性がある。外部から開始されたシステムリセットまたは電源遷移が持続性フラッシュハンドラを適切に呼び出すことを保証するために、システムは、これらの非同期イベントをシステム論理によってプロキシすることにより、要求されたHW動作を呼び出す前に、持続性キャッシュフラッシュを実行する特別な持続性フラッシュ割込みハンドラを呼び出すための割込みを生成し得る。加えて、またはその代わりに、システムは、HWにおいて要求されたすべてのリセットや電源遷移を、持続性キャッシュフラッシュハンドラの成功/不成功とは無関係に時間の有界ウィンドウの範囲内で確実に完了することを保証するための、HWバックアップ機構を含み得る。
【0017】
本明細書で説明された技術は、システムハードウェアによる持続性キャッシュフラッシュのサポートの有無をオペレーティングシステムに通知するための、ハンドシェイク機構およびプロトコルをさらに提供するものである。システムは、電力供給停止または非同期リセットの場合に、ハードウェアがプロセッサキャッシュおよび揮発性メモリバッファの完全なフラッシュをサポートすることができるかどうかを判定し得る。ハードウェアによるサポートが可能であれば、持続性キャッシュフラッシュが選択的に有効にされ得、そのことがオペレーティングシステムに知らされ得る。持続性キャッシュフラッシュが一旦有効にされると、オペレーティングシステムは、揮発性プロセッサキャッシュに記憶されたデータを持続性データとして扱い得る。持続性キャッシュフラッシュが、システムハードウェアによって無効にされた場合またはサポートされていない場合、そのようなデータは、電力不足またはリセットイベントによって失われる可能性があり、プラットフォームは、オペレーティングシステムに持続性キャッシュフラッシュのサポートを知らせなくてよい。
【0018】
この全般的な概要の節には、本明細書において説明され、かつ/または特許請求の範囲において列挙される1つまたは複数の実施形態が、含まれない可能性がある。
【0019】
2.システムアーキテクチャ
いくつかの実施形態では、本明細書で説明された技術は、サーバ設備または他のネットワークホストなどの、メモリレイアウトの中に持続性メモリを含む1つまたは複数のコンピュータデバイスにおいて実施される。本明細書では例示のコンピュータアーキテクチャが提供されるが、これらの技術は、特定の実装形態に応じて多種多様なコンピュータアーキテクチャに適用可能である。これらの技術は、(a)システム構成要素の特定の組合せが持続性キャッシュフラッシュをサポートし得るかどうかを判定し、(b)サポートされる場合には、持続性キャッシュフラッシュを有効にするようにシステム構成要素を構成し、かつ/または(c)持続性キャッシュフラッシュが有効であれば、電源遷移またはリセットに先立って持続性キャッシュフラッシュハンドラを実行する、ように使用され得る。
【0020】
図1は、いくつかの実施形態による、持続性キャッシュフラッシュ動作を実行するためのシステムを示す。示されるように、図1は、PSU 102a、PSU 102b、電力管理サブシステム104、持続性キャッシュフラッシュハンドラ106、メモリサブシステム108、CPU 116、システム管理モジュール118、システムファームウェア120、周辺構成要素124、およびオペレーティングシステム122を含む。他の実施形態では、システム100に含まれ得る構成要素は、図1に示された構成要素よりも多くても少なくてもよい。場合によっては、図1に示された構成要素は、互いにローカルまたはリモートであり得る。
【0021】
PSU 102aおよびPSU 102bは、電力を、システム100の構成要素の適切な動作を可能にする形態に変換する。いくつかの実施形態では、PSU 102aおよびPSU 102bは、AC電力を、システム100の構成要素に給電するため使用される直流(DC)エネルギーに変換する。加えて、またはその代わりに、PSU 102aおよびPSU 102bは、入力電圧をステップアップまたはステップダウンするコンバータなどのDC-DC電力変換を備え得る。PSU 102aおよびPSU 102bは、+3ボルト(V)、+5V、および/または+12Vのレールなどの1つまたは複数の電源レールによって、システム100の他の構成要素に電気的に結合され得る。示されているPSUは2つであるが、システムは、特定の実装形態に応じて1つのPSUのみ、または追加のPSUを有し得る。
【0022】
電力管理サブシステム104は、システムPSUによって、システム100の構成要素に対する電力の送達を制御する。いくつかの実施形態では、電力管理サブシステム104は、リセットまたは電力供給停止のイベント中に構成要素を選択的に電源断して、システム100を正常にシャットダウンする。加えて、またはその代わりに、電力管理サブシステム104は、PSU 102aおよびPSU 102bの大容量コンデンサの電圧レベルを監視し得る。電圧レベルがプログラマブル閾値未満に低下したら、電力管理サブシステム104は、システム100の他の構成要素に通知するために信号をアサートまたはデアサートしてよい。
【0023】
メモリサブシステム108は揮発性記憶領域および不揮発性記憶領域を含む。いくつかの実施形態では、揮発性記憶領域はプロセッサキャッシュ110およびメモリバッファ112を含む。プロセッサキャッシュ110は、CPU 116の内部に、メインメモリに対するデータアクセス時間を短縮するためにCPU 116によって使用され得る、レベル3(L3)キャッシュおよびレベル4(L4)キャッシュなどのキャッシュを含み得る。メモリバッファ112は、別々の領域の間で転送されるデータ用の中間記憶装置をもたらす、CPU 116のレジスタおよび/またはメモリコントローラを含み得る。たとえば、メモリコントローラバッファは、プロセッサキャッシュ110とメインメモリとの間で転送されるデータ用の一時記憶装置をもたらし得る。
【0024】
持続性メモリ114は、データセンタ持続性メモリモジュール(DCPMM)および不揮発性デュアルインラインメモリモジュール(NVDIMM)などの1つまたは複数の不揮発性メモリデバイスを含む。いくつかの実施形態では、持続性メモリ114は、バイトアドレス可能であってメモリバス上に存在し、メモリバス上にないハードディスクおよびフラッシュドライブなどの周辺の不揮発性記憶装置よりも一般的にはるかに高速の揮発性DRAMと類似の速度およびレイテンシをもたらす。さらに、持続性メモリ114は、揮発性DRAMと同様に、オペレーティングシステム122によってページングおよびマッピングされ得、このことは持続性記憶装置の他の形態では一般的ではない。持続性メモリ114は、システム100の内部のメインメモリとして働き得る。他の場合には、メインメモリは、DRAMなどの1つまたは複数の揮発性メモリモジュールを含み得る。
【0025】
持続性キャッシュフラッシュハンドラがインストールされ、プラットフォーム信号機構が有効になると、プロセッサキャッシュ110およびメモリバッファ112を含む揮発性メモリ領域の内部に記憶されたデータは、電力供給停止または他の電源遷移イベントの場合にも、持続性メモリ状態の一部として扱われ得る。持続性状態を維持するために、キャッシュフラッシュハンドラ106は、トリガイベントの検知に応答して、キャッシュフラッシュ動作を実行し、かつ管理する。持続性キャッシュフラッシュ動作が有効でないと、電源遷移イベント中にフルキャッシュフラッシュが実行されず、揮発性メモリ領域の内部のデータのうちいくつかまたはすべてが失われる可能性がある。持続性キャッシュフラッシュハンドラがないと、メモリバッファ112からデータがフラッシュされるが、プロセッサキャッシュ110からはフラッシュされ得ず、フラッシュ動作を実行するために必要な時間を短縮し得る。
【0026】
システム管理モジュール118は、システムレベルの動作を管理するためのソフトウェアおよび/またはハードウェアを備える。いくつかの実施形態では、システム管理モジュール118はサービスプロセッサ(SP)およびCPUチップセットを含む。システム管理モジュール118は、ハードウェア構成要素を監視するために1つまたは複数のセンサとインターフェースし得る。加えて、またはその代わりに、システム管理モジュール118は、システムレジスタへのトラップ書込み、システム管理割込み(SMI)の生成、およびシステムの起動状態の監視を含む他の機能を実行し得る。
【0027】
システムファームウェア120は、システムハードウェアの低レベル制御をもたらすソフトウェアを含む。いくつかの実施形態では、システムファームウェア120は、システムの電源投入時またはリセット時などの起動処理を管理する基本入出力システム(BIOS)ファームウェアなどのソフトウェアを含む。システムファームウェア120は、持続性キャッシュフラッシュ動作および周辺構成要素124の管理など、オペレーティングシステム122向けのランタイムサービスをさらに提供し得る。
【0028】
オペレーティングシステム122は、CPU 116上のスケジューリング命令の実行、ソフトウェアアプリケーションに対するサービスの提供、および周辺構成要素124に対するアクセスの制御を含む動作をサポートするソフトウェアを含む。いくつかの実施形態では、システムファームウェア120は、システム100によってサポートされれば、持続性ドメインにキャッシュコンテンツを含める能力を知らせ得る。次いで、オペレーティングシステム122は、持続性キャッシュフラッシュを選択的に有効または無効にし得る。持続性キャッシュフラッシュが有効にされたとき、オペレーティングシステム122は、プロセッサキャッシュ110およびメモリバッファ112を含む揮発性メモリに記憶されたデータを持続性として扱い得る。
【0029】
周辺構成要素124は、ハードディスク、入力デバイス、表示デバイス、および/またはシステム100の他の構成要素と電気的に結合され得る他の出力デバイスなどの補助ハードウェアデバイスを含む。システム100の電力消費は、どの周辺構成要素124が接続されてアクティブになっているかということによって部分的に変化し得る。最大の電力負荷の最悪のシナリオは、周辺構成要素124を含むすべてのハードウェア構成要素が全能力で動作すると想定することによって計算され得る。
【0030】
3. 持続性キャッシュフラッシュ
3.1 電力途絶イベント中のキャッシュフラッシュ動作の管理
AC電力が途絶したとき、電力は迅速に回復され得るので、キャッシュフラッシュ動作を直ちに起動するのは望ましくないことがある。しかしながら、電力が回復しないまま経過する時間が長すぎると、PSU 102aおよびPSU 102bの内部のホールドアップエネルギーがフルキャッシュフラッシュを実行するのに不十分になってしまうリスクがある。そこで、持続性キャッシュフラッシュが有効にされている場合には、持続性メモリ状態が壊れてしまう恐れがある。持続性メモリ状態を維持するために、電力管理サブシステム104は、PSU 102aおよびPSU 102bの大容量コンデンサの内部の残留エネルギーが閾値レベル未満に低下したとき、警告信号を生成し得る。
【0031】
図2は、いくつかの実施形態による、持続性メモリ状態を維持するためにキャッシュフラッシュ動作を実行するための動作の例示のセットを示す図である。図2に示された1つまたは複数の動作は、すべて、変更、再配置、または省略が可能である。したがって、図2に示された動作の特定の順序は、1つまたは複数の実施形態の範囲の制限として解釈されるべきではない。
【0032】
図2を参照して、処理200は、システム負荷に基づいてライドスルー時間およびホールドアップ時間の全体量を推定するステップ(動作202)を含む。ライドスルー時間は、AC電力なしで、電源レールのキャッシュフラッシュおよび順次電圧低下を実行するのに十分なエネルギーを残しながらシステム100の動作が可能な推定された時間に相当する。ホールドアップ時間は、システム負荷を所与として、フルキャッシュフラッシュおよび電源レールの順次電圧低下を実行するための時間に相当する。推定は、全体のシステム負荷または本明細書でさらに説明されるような上限のある低減されたシステム負荷に基づいて計算され得る。
【0033】
いくつかの実施形態では、処理200は、推定されたライドスルー時間およびホールドアップ時間に基づいて1つまたは複数エネルギー閾値をプログラムする(動作204)。たとえば、処理200は、システム100に、有界システム負荷の下で、キャッシュフラッシュおよび順次の電源レールシャットダウンの動作を完了するための推定された量のホールドアップ時間を保証する、PSUの大容量コンデンサの電圧レベルを推定し得る。次いで、この電圧レベルが閾値としてプログラムされ得る。他の実装形態では、時間は、電圧/エネルギーベースの閾値ではなく、推定されたライドスルー時間に基づいて設定され得る。
【0034】
いくつかの実施形態では、動作202および204は、本明細書で説明された残りの動作とは別個の処理として実施される。たとえば、動作202および204は、システム100の起動シーケンス中に実行され得、それぞれの動作点について、必要なエネルギー量および関連する電圧閾値を計算し得る。計算は、起動シーケンスが検知したシステム構成要素と、通常の動作中および/または低減電力の動作モード中に構成要素を作動させるための推定された必要電力とに、部分的に基づいて実行され得る。次いで、起動シーケンスは、システム100のプログラマブル電圧閾値を設定し得る。他の実施形態では、プログラマブル閾値は、ユーザ入力によって設定または変更され得る。たとえば、システム管理者は、それぞれの動作点についてプログラマブル電圧閾値を設定してよく、システム管理者がシステムの所要電力に関する分野の知見を導入することを可能にする。
【0035】
再び図2を参照して、処理200は、AC電力の喪失を監視するステップ(動作206)を含む。いくつかの実施形態では、システム100には、入力AC電力が途絶したとき検知するセンサおよび/または回路が、PSU 102aおよび/またはPSU 102bに組み込まれ得る。他の実施形態では、外部回路および/またはセンサは、AC電力が失われたときシステム100に信号伝達し得る。
【0036】
処理200は、監視回路に基づいてAC電力の喪失を検知し得る(動作208)。それに応じて、処理200は通知を起動する(動作210)。いくつかの実施形態では、通知は、acok信号をデアサートすることによって起動される。acok信号をデアサートすることによって、電力がもはや不安定になり、PSUの大容量コンデンサの内部のエネルギー備蓄が、データの持続性状態を維持するためにシステムシャットダウンを開始する必要がある臨界点まで低下したという警告を与え、推定されたホールドアップ時間の開始を書き込む。言い方を変えれば、通知は、電力管理サブシステム104に対して、プロセッサキャッシュ110およびメモリバッファ112のフルキャッシュフラッシュを実行するのに十分な時間にわたって電源レールをホールドアップするための十分なエネルギーをシステムPSUに蓄えるように、警告する働きをする。
【0037】
いくつかの実装形態では、早期警告機構が、シャットダウンに先立つ一定期間に関連付けられ、早期警告によって、電力管理サブシステム104は、システム100が最大負荷で動作していると想定し得、最大負荷の下でキャッシュフラッシュを完了して電源レールを順次電圧低下させるための最短時間を保証する。しかしながら、この手法によると、システムシャットダウンが予定より早く開始される、特に、持続性キャッシュフラッシュ中に、最大のPSU負荷が実際のシステム負荷よりもかなり大きくなる、伝統的な実装形態に戻る可能性がある。比較すると、プログラマブル早期警告閾値により、システムは、ライドスルーのための警告信号のアサーション前のエネルギー消費と、ホールドアップのための警告信号のアサーション後のエネルギー消費との、トレードオフが可能になる。
【0038】
通知が起動された後に、処理200は、第1の動作モードでシステム構成要素に給電し続ける(動作212)。システム構成要素は、第1の動作モードでの動作中は、PSU大容量コンデンサのエネルギーを使用して給電され得る。いくつかの実施形態では、あたかもAC電力が途絶していないかのように、電力が供給され得る。他の実施形態では、システム100の内部で節電調節が行われ得る。たとえば、プロセッサ周波数やディスプレイの明度が下げられてよく、かつ/または他の節電アクションが採用されてもよい。加えて、またはその代わりに、データは、プロセッサキャッシュ110およびメモリバッファ112に連続して書き込まれ、更新され得る。
【0039】
処理200は、プログラムされた閾値に基づいて、1つまたは複数のシステムPSUの内部のエネルギーレベルをさらに監視する(動作214)。いくつかの実施形態では、システム100は、PSUの大容量コンデンサの電圧を監視するためのセンサを含む。大容量コンデンサのキャパシタンス値が固定されているので、大容量コンデンサの電圧は、AC電力が途絶したときのPSUエネルギーレベルのプロキシとして使用され得る。他の実施形態では、エネルギーレベルは、大容量コンデンサのキャパシタンス値および測定された電圧の関数として計算され得る。
【0040】
処理200は、1つまたは複数のPSUのエネルギーレベルが閾値を満たすかどうかをさらに判定する(動作216)。たとえば、処理200は、1つまたは複数の大容量コンデンサの測定電圧が、動作204においてプログラムされた電圧閾値未満に低下したら、閾値が満たされているかどうかを判定し得る。閾値が満たされなければ、処理200は、電力が回復するまで、またはPSU大容量コンデンサの電圧がプログラマブル閾値以下に低下するまで、PSUエネルギーレベルを監視し続けてよい。一旦、閾値が満たされると、キャッシュフラッシュおよび電圧低下のシーケンスを起動するために、警告信号がアサートされ得る。
【0041】
いくつかの実施形態では、処理200は、電力消費を最小化するために、システム負荷を軽減することによって第2の動作モードに入る(動作218)。この段階中は、電力管理サブシステム104が、キャッシュフラッシュ動作に関係しない構成要素の電圧を低下させてもよい。たとえば、電力管理サブシステム104が電圧を低下させてもよい周辺構成要素124には、ハードディスクドライブ、ファン、ディスプレイ、周辺構成要素相互接続エクスプレス(PCIe)デバイス、および/または他の周辺ハードウェアが含まれ得る。加えて、またはその代わりに、電力管理サブシステム104は、電力消費を最小化するためにクロック速度やCPU 116の周波数を下げてよい。
【0042】
処理200は、キャッシュフラッシュをさらに実行する(動作220)。キャッシュフラッシュ動作中に、CPU 116は、データの持続性状態を維持するために、プロセッサキャッシュ110およびメモリバッファ112に記憶されたデータを持続性メモリ114に書き込み得る。いくつかの実施形態では、処理200は、この動作中、PSUエネルギーレベルを監視し続けてよい。PSUエネルギーレベルが第2の電圧閾値未満に低下したら、処理200は、すべての電源レールが同時に落ちるのを防止するために、キャッシュフラッシュが完了していなくても電圧低下シーケンスを起動してよい。第2の電圧閾値は、電源レールを順次電圧低下させるのに十分なエネルギーを残す第1の閾値よりも、はるかに低いレベルにプログラムされてよい。
【0043】
一旦キャッシュフラッシュが完了したら、処理200は、残りのシステム構成要素の電圧を低下させる(動作224)。処理200は、電源レールを順次電圧低下させて、システム100を正常にシャットダウンし得る。電源レールの電圧低下シーケンスは、システムごとに異なり得る。
【0044】
図2に表された処理は、BBUを設置したりBBUからのエネルギーに頼ったりする必要なく、持続性メモリ状態を維持し得る。代わりに、電力管理サブシステム104によって、1つまたは複数のPSUの大容量コンデンサの内部のエネルギーが、持続性を保証するように管理され得る。さらに、電力管理サブシステム104がランタイム電力負荷を把握することにより、可変のライドスルー時間およびホールドアップ時間が、貯蔵されたエネルギーをより効率的かつ効果的に使用することを可能にする。
【0045】
3.2 複数の電源ユニットの管理
システムに複数のPSUがあって、PSUのうち1つまたは複数のAC電力が失われたとき、単一PSUのエネルギー量ではキャッシュフラッシュ動作を完了するのに不十分なことがある。しかしながら、複数のPSUの合計のエネルギーなら、データの持続性状態を維持するためにキャッシュフラッシュを完了するのに十分であり得る。複数のPSUがある場合には、電力管理サブシステム104は、すべての電源にわたって利用可能な合計のエネルギーを監視してよい。合計の電圧レベルがキャッシュフラッシュ動作を起動するための閾値と交差したとき、電力管理システム104は電力不足警告を知らせてよい。
【0046】
いくつかの実施形態では、電力管理サブシステム104は、管理しているそれぞれのPSUに関して、以下のイベントを検知する。
【0047】
・acok信号のデアサーションによって検知され得るAC電力の喪失。電力管理サブシステム104は、1つまたは複数のPSUからこの信号を受け取ると、第1の動作モードに入って、AC電力が回復される場合には、ライドスルーウィンドウ中は電力を低減する。
【0048】
・vwarn信号のアサーションによって検知され得る、PSUのエネルギーまたは電圧レベルが第1の閾値と交差したという指示。電力管理サブシステム104は、すべてのPSUからの電圧警告情報を組み合わせて、第2の動作モードに入るべきときを判定し、それによって、持続性キャッシュフラッシュハンドラ106がキャッシュフラッシュ動作を開始する。第2の動作モード中に、電力管理システム104は、以前に説明されたように電力をさらに低減し得る。
【0049】
・pwrok信号のアサーションによって検知され得る、PSUのエネルギーまたは電圧レベルが第2の閾値と交差したという指示。電力管理サブシステム104は、pwrokの信号の情報を組み合わせて、システムの電圧を直ちに低下させるべきかどうかを判定し得る。PSUエネルギーレベルがさらに低下して、電源レールの電圧を安全に順次低下させるための十分なエネルギーが残っていなければ、シャットダウンが起動され得る。
【0050】
いくつかの実施形態では、AC電力喪失の場合には、電力管理サブシステム104は、推定されるエネルギーレベルを追跡するために、各PSUにおけるPSUごとのカウンタのセットを維持する。PSUごとのカウンタの初期値は、ハードコードされてよく、またはvwarnをアサートするとき、PSUにおいて利用可能なエネルギー量に対応させるようにプログラマブルでもよい。電力管理サブシステム104は、PSUがvwarnをアサートしたことを検知したとき、システムにおけるアクティブ電源の数および1つの電源当たりの最大負荷に比例したレートで、関連するPSUのエネルギーカウンタをデクリメントし始めてよい。たとえば、1つのアクティブPSUがあって、最大負荷が1200ワット(W)であるなら、カウンタは1.2ジュール(J)/ミリ秒でデクリメントされ得る。2つのアクティブ電源があって、電源ごとの負荷が600Wになると、エネルギーカウンタは600mJ/ミリ秒でデクリメントされ得る。アクティブ電源が4つあれば、エネルギーカウンタは300mJ/ミリ秒でデクリメントされ得る。別の例として、最悪ケースのシステム負荷が1000Wに低下すると、カウンタのディクレメント率は、1つの電源については1J/ミリ秒に、2つの電源については500mJ/ミリ秒に、また4つの電源については250mJ/ミリ秒に、変更され得る。カウンタは、延長された停電時間に対する持続性キャッシュフラッシュを維持するために十分なエネルギーを維持する一方で、最大のライドスルー時間をもたらすように調整され得る。
【0051】
図3は、いくつかの実施形態による、複数の電源を有するシステムにおける持続性キャッシュフラッシュ動作を管理するための動作の例示のセットを示す。図3に示された1つまたは複数の動作は、すべて、変更、再配置、または省略が可能である。したがって、図3に示された動作の特定の順序は、1つまたは複数の実施形態の範囲の制限として解釈されるべきではない。
【0052】
図3を参照して、処理300は、1つまたは複数のPSUから、1つまたは複数のvwarn信号のアサーションを検知する(動作302)。前述のように、各PSUは、AC電力が失われ、PSU大容量コンデンサにおけるエネルギーが、プログラマブルであり得る閾値を下回ったとき、vwarn信号をアサートするように構成され得る。
【0053】
処理300は、vwarn信号を検知することに応答して、1つまたは複数の関連するカウントダウンタイマを開始する(動作304)。いくつかの実施形態では、カウントダウンタイマが、vwarn信号をアサートしたそれぞれのPSUについて、推定されるエネルギーレベルを追跡する。処理300は、システムにおけるPSUの数および1つの電源当たりの最大負荷に比例したレートで、カウンタをデクリメントし得る。他の実施形態では、PSUの内部のエネルギーレベルを追跡するために他の機構が使用され得る。たとえば、処理300は、カウンタをデクリメントするのではなく、閾値に達するまでカウンタをインクリメントしてよく、または他の追跡論理を使用してもよい。
【0054】
加えて、またはその代わりに、処理300は、システム100を、1つまたは複数のvwarn信号の検知に応答して低減電力モードに入らせてよい。低減電力動作モードは、特定の実装形態に応じて、1つの信号または閾値数の信号によって起動されてよい。他の実施形態では、処理300は、それぞれの新規の検知された信号を用いて電力を徐々に低減してよい。たとえば、処理300は、それぞれの新規のvwarn信号に対してCPU周波数を次第に下げてよく、かつ/または以前に説明されたように、他の節電アクションを開始もしくは強化してよい。
【0055】
処理300は、(a)カウントダウンタイマ(または他の追跡論理)に基づいて、組み合わせたPSUの合計のエネルギーレベル、(b)他のPSUからのさらなるvwarn信号のアサーション、および(c)PSUからのpwrok信号のアサーションをさらに監視する(動作306)。さらなるvwarn信号が検知されると、処理300は、信号をアサートしたPSUに関連するカウントダウンタイマを開始する(動作304)。
【0056】
合計のエネルギーレベルが第1の閾値を満たす場合には、処理300はキャッシュフラッシュ動作を実行する(動作308)。たとえば、処理300は、すべてのPSUの合計のエネルギーレベルが最小の閾値以下に低下したかどうかを判定し得る。キャッシュフラッシュ動作中に、CPU 116は、データの持続性状態を維持するために、プロセッサキャッシュ110およびメモリバッファ112に記憶されたデータを持続性メモリ114に書き込み得る。いくつかの実施形態では、処理300は、この動作中、PSUエネルギーレベルを監視し続けてよい。
【0057】
キャッシュフラッシュ動作が完了するか、あるいはPSUが1つまたは複数のpwrok信号を起動する第2の電圧閾値数未満に減少すると、処理300は電源レールの電圧を順次に低下させる(動作310)。pwrok信号が検知されたとき、処理300は、キャッシュフラッシュが完了していなくても、電源レールがすべて同時に落ちるのを防止するために、電圧低下シーケンスを開始し得る。第2の電圧閾値は、電源レールを順次電圧低下させるのに十分なエネルギーを残す第1の閾値よりも、はるかに低いレベルにプログラムされてよい。
【0058】
図4は、いくつかの実施形態による、複数の電源を管理するための例示のシステム400を示す。システム400はPSU 402および404を含む。しかしながら、PSUの数は、特定の実装形態に応じて変化し得る。各PSUに含まれ得るキャパシタ406などの1つまたは複数の大容量コンデンサが、接続されたAC電力ネットワークから得られた静電エネルギーを貯蔵する。キャパシタベースの貯蔵は、PSUがBBUよりも小さなフットプリントで実施されることを可能にし、より高速の充電率および放電率をもたらす。PSU 402および404は、特定の実装形態に応じて、同一のAC電力ネットワークまたは別々のAC電力ネットワークに接続され得る。別々のAC電力ネットワークに接続された場合には、1つのPSUがAC電力を失っても、別のPSUは別のACネットワークによって給電され続ける。このシナリオでは、各PSUが、電力管理サブシステム408に別個のacok信号(図示せず)を供給し得る。これらの信号は、AC電力が失われたとき、電力を失ったPSUを知らせるために、個別のPSUによって別個にデアサートされ得る。他の場合には、acok信号のデアサーションが、PSUのグループまたはすべてがAC電力を失ったことを知らせ得る。
【0059】
いくつかの実施形態では、大容量コンデンサ(たとえば大容量コンデンサ406)のエネルギーが閾値に到達したとき、各PSUがvwarn信号をアサートする。したがって、vwarn信号は、電力管理サブシステム408に、関連するPSUの利用可能なエネルギーが第1の閾値レベルになったことを通知する。電力管理サブシステム408は、関連するPSUがvwarn信号をアサートしたとき起動される別個のエネルギーカウンタを、各PSU用に維持する。たとえば、PSU 402がvwarnの信号をアサートすると、次いで、電力管理サブシステム408が、システムにおけるPSUの数および1つの電源当たりの最大負荷に比例したレートで、エネルギーカウンタ410をデクリメントし得る。エネルギーカウンタ412は、エネルギーカウンタ410とは無関係に管理され(PSUからのvwarn信号は、関連性のない、他のPSU用のカウンタは起動しない)、vwarn信号をアサートしたPSU 404に応答してデクリメントされる。電力管理サブシステム408に含まれる加算器414が、各PSUの推定されたエネルギーカウントを一緒に合計して、合計のエネルギーカウンタ416を計算する。
【0060】
いくつかの実施形態では、システム閾値が、プログラマブルであって特定の実装形態に応じて変化し得、電力管理サブシステムは、合計のエネルギーカウンタ416を監視して、すべてのPSUの合計のエネルギーがシステム閾値以下に低下したかどうかを判定する。閾値に達すると、電力管理サブシステム408が、SMI信号をアサートし、持続性キャッシュフラッシュおよびリセットに備えて、CPU/チップセット422によって実行されている現在のタスクを停止させる。持続性キャッシュフラッシュハンドラ424が、SMIに応答して、前述の持続性キャッシュフラッシュ動作を開始し得る。
【0061】
図5は、いくつかの実施形態による、種々の電源ユニットからの時差警告信号を示す例示のタイミング図500を示す。図500の上半分は電力不足のタイミングを表し、下半分は、システム100が電力不足の切迫に応じて実施し得る、可能性のある電力削減を表す。図500は、システムが、電力不足キャッシュフラッシュが起動されるまで最大負荷で動作する、最悪ケースの挙動を想定する。電力不足キャッシュフラッシュが起動されると、システムの電力消費は、フラッシュ動作を完了するとき、負荷を最小化するように低減される。
【0062】
図500の変数は以下のように定義され得る。
・tpsu0_v1warn - 第1のPSUがv1warnをアサートする時点
・tpsu1_v1warn - 第2のPSUがv1warnをアサートする時点
・tflush_start - 電力管理サブシステム104が電力不足フラッシュ動作を開始する時点
・tpsu1_pwrok - 第2のPSUがpwrokをデアサートして、システム100が電圧低下シーケンスを始める時点
・Tv1warn_delay - tpsu0_v1warnとtpsu1_v1warnとの間の時間遅延
・Tv1warn_debounce - tpsu1_v1warnからtflush_startまでの時間遅延
・Tv1warn - 最大負荷の下で電源のEv1warnエネルギーをすべて利用する時間
・Pmax - 最大のシステム負荷
・Pthrottle - 第1のPSUがv1warnをアサートした後のシステム負荷
・Pdebounce - すべてのPSUがv1warnをアサートした後のシステム負荷
・Pflush - 電力不足フラッシュ動作が起動された後のシステム負荷
・Ev1warn - v1warnアサーションの後、pwrokデアサーションまでに、PSUにおいて利用可能な使用可能エネルギー
・Epwrok - pwrokデアサーションの後、一次電源レールが失われるまでに、PSUにおいて利用可能な使用可能エネルギー
・Epsu0_reserve - 第2のPSUがtpsu1_v1warnにおいてv1warnをアサートした後、v1warnをアサートするために第1のPSUに残っている使用可能エネルギー
・Ereserve - すべてのPSUがv1warnをアサートした後、最後のPSUにおけるpwrokのデアサーションまでに、すべてのPSUに残っている合計の使用可能エネルギー
・Ev1warn_delay - システム100がtv1warn_delay中に消費するエネルギー
・Eflush - 電力不足フラッシュ動作をうまく完了するのに必要なエネルギー
・N - システムに電力を供給するアクティブPSUの数
図5を参照して、第1のPSUは、tpsu0_v1warnにおいてv1warnをアサートしたとき、電源が関連する電源レールを遮断してシステムに対する給電を停止するまでに、(Ev1warn+Epwrok)のエネルギーを利用可能である。N個のアクティブPSUがあり、システム負荷は、システムにおけるすべてのアクティブPSUの間で分配される。第2のPSUは、時間的に数ポイント遅れたtpsu1_v1warnにおいてv1warnをアサートする。tpsu0_v1warnとtpsu1_v1warnとの間に消費されたエネルギー量は、Ev1warn_delayとして表される。
【0063】
システム100は、第1の電源がv1warnをアサートしてから第2の電源がv1warnをアサートするまで、N個のアクティブPSUのすべてからエネルギーを得る。第1のPSUは、v1warnをアサートした後に、(Ev1warn+Epwrok)の最大エネルギーを消費される。第2のCPUがv1warnをアサートしたときの、第1のPSUにおける残りのエネルギーは、Epsu0reserveとして表される。
【0064】
v1warn_delayが小さければ、第2のPSUは、システムが第1の電源からのエネルギーをすべて消費してしまう前に、pwrokをデアサートする。最悪のケースでは、両方の電源がそれぞれv1warnを同時にアサートするときには、両方の電源がpwrokも同時にデアサートする。これらの状況の下では、すべての電源がpwrokをデアサートしたときシステムがシャットダウンすると、第1の電源のEpwrokエネルギーを使用するのが不可能になり得る。この可能性を許容するために、システム100は、第1の電源のEpwrokエネルギーが利用不可能であるという想定を伴って構成され得る。
【0065】
両方の電源のエネルギーをすべて利用するために、システム100は、第2のPSUがv1warnをアサートしたとき、電圧低下フラッシュがすぐには始まらないように構成され得る。システム100は、代わりに、すべてのアクティブPSUに蓄えられたエネルギー量が、フラッシュを完了するのに必要な量に等しくなるまで、フラッシュの起動を遅延させてよい。システム100は、キャッシュフラッシュ動作を完了するのに十分なエネルギーを蓄えるために、Ereserve≧Eflushを保証するようにさらに構成され得る。
【0066】
両方のPSUがv1warnを同時にアサートした場合には、Tv1warn_delay=0、およびTv1warn_debounce=Tv1warnとなる。両方のPSUが時間的に遠く離れてv1warnをアサートした場合には、Tv1warn_debounce=0となり、第2のPSUがv1warnをアサートすると直ちに電力不足フラッシュが起動され得る。電力管理サブシステム104は、それに応じて、エネルギー閾値/電圧閾値をプログラムし得る。
【0067】
4.外部から開始された非同期リセットイベントの管理
システムのシャットダウンまたはリセットの原因は、電力途絶イベントばかりではない。場合によっては、システムエラーまたはユーザアクションがシステムのシャットダウンまたはリセットを起動する可能性がある。これらの外部から開始された非同期イベントについては、A/C電力が比較的一定であり得るので、電源喪失を監視しても持続性メモリ状態を維持するのに不十分である可能性がある。非同期ハードウェアリセットは、通常は、リセット要求ピンを直接アサートすることによって実施され、HWにおけるリセットが始まり、リセットより前にソフトウェアキャッシュフラッシュハンドラを呼び出す能力は与えられ得ない。いくつかの実施形態では、データ喪失を防止するために、基板論理は、外部から起動されたリセット要求が検知されたときにはキャッシュフラッシュを開始するSMI信号を生成するように、構成される。
【0068】
図6は、いくつかの実施形態による、外部から起動された非同期リセットイベントを処理するための動作の例示のセットを示す。図6に示された1つまたは複数の動作は、すべて、変更、再配置、または省略が可能である。したがって、図6に示された動作の特定の順序は、1つまたは複数の実施形態の範囲の制限として解釈されるべきではない。
【0069】
図6を参照して、処理600は、HWリセット要求信号のアサーションをインターセプトする(動作602)。いくつかの実施形態では、システム管理モジュール118によって開始されたリセット要求を含む、プラットフォーム開始のリセット要求は、電力管理サブシステム104を介してプロキシされる。これによって、システム100は、要求されたリセットまたは電源遷移アクションを実行する前に持続性キャッシュフラッシュハンドラ106を作動させることができる。
【0070】
いくつかの実施形態では、処理600は、持続性キャッシュフラッシュが有効であるかどうかを判定する(動作604)。以下でさらに説明されるように、システムファームウェア(または他のシステム論理)は、プロセッサキャッシュ110のデータを持続性メモリ状態に含めるかどうかを構成するために、持続性キャッシュフラッシュを選択的に有効または無効にすることができる。
【0071】
持続性キャッシュフラッシュが有効にされなければ、次いで、処理600は要求をリセットピンにルーティングする(動作606)。いくつかの実施形態では、電力管理サブシステム104は、要求をシステムチップセットにルーティングする。チップセットはHWリセットシーケンスを開始し得る。
【0072】
持続性キャッシュフラッシュが有効にされると、処理600は、要求をシステム管理モジュール118にルーティングする(動作608)。この場合、ソフトウェアベースのキャッシュフラッシュハンドラを呼び出す時間を確保するために、リセットピンがプラットフォームまたはユーザが開始したリセットに応答して直ちにアサートされることはない。
【0073】
いくつかの実施形態では、処理600は、システム100をシステム管理モードに移行するためにSMI信号を生成する(動作610)。SMI信号は、CPU 116に直接結合された特別な信号ラインを使用するシステム管理モジュール118によってアサートされ得る。SMI信号によって、システムファームウェア120(たとえばBIOS)は、キャッシュフラッシュおよびリセットの準備のために、CPU 116によって現在実行されているタスクを停止させ得る。
【0074】
いくつかの実施形態では、持続性キャッシュフラッシュが有効にされると、次いで、システムファームウェア120(たとえばBIOS)は、システム管理モジュール118の内部の汎用入出力(GPIO)ピンをSMI用のトリガとして構成する。GPIOピンは、ウォームリセットが後続するキャッシュフラッシュが実行されるとき、システムファームウェア120に知らせるために使用され得る。このGPIOは、持続性キャッシュフラッシュハンドラが電源オフではなく要求されたウォームリセットで終了するように通知するために、チップセットに対して電力不足が迫っていることを知らせるように使用されるGPIOとは異なり得る。
【0075】
処理600は、次にキャッシュフラッシュ動作を実行する(動作612)。システムファームウェア120は、SMI信号に応答して、以前に説明されたように、キャッシュフラッシュ動作を管理するためにキャッシュフラッシュハンドラ106を呼び出し得る。したがって、データは、プロセッサキャッシュ110およびメモリバッファ112などの揮発性メモリから持続性メモリ114に転送され、それによって持続性状態を維持する。
【0076】
処理600は、フラッシュが完了しているかどうかをさらに判定する(動作614)。持続性キャッシュフラッシュハンドラ106は、プロセッサキャッシュ110およびメモリバッファ112のデータが持続性メモリ114に書き込まれたとき、信号をアサートしてよく、または通知してもよい。
【0077】
キャッシュフラッシュが一旦完了すると、処理600はリセット要求を生成する(動作622)。たとえば、持続性キャッシュフラッシュハンドラ106は、特定のIOポート/PCHのレジスタに特定の値を書き込む(たとえばポートCF9に0x06を書き込む)ことによって、あるいはシステム論理に、チップセットに対するHWリセット要求信号をアサートするように要求することによって、システムリセットを開始し得る。
【0078】
フラッシュが完了していなければ、処理600は、タイムアウトに達したかどうかを判定してよい(動作616)。たとえば、処理600は、システム100によって構成可能な1秒または別の閾値期間を、フラッシュ動作が完了するまで許容し得る。場合によっては、リセットイベントに関連したシステム状態は、フラッシュが完了するのを妨げる可能性がある。タイムアウトを実施することにより、システム100が、ウォームリセットの実行が不可能な状態になるのを防止し得る。
【0079】
タイムアウトに達すると、処理600は、チップセットに対してリセット要求信号を直接生成する(動作618)。動作622におけるリセット要求は、チップセットに対する直接的なリセット要求またはソフトウェアベースの要求でもよい。したがって、システムをリセットするための機構は、フラッシュがうまく完了したか否かに基づいて異なり得る。
【0080】
リセット信号に応答して、次いで、システム100がリセットされる(動作420)。この状況におけるリセットにより、システム100はシャットダウンまたは再始動され得る。
【0081】
図7は、いくつかの実施形態による、外部から起動された非同期リセットイベントをインターセプトして処理するための例示のシステム700を示す。システム700に含まれるシステム管理モジュール702は、フィールドプログラマブルゲートアレイ(FPGA)などのプログラマブルハードウェア、または以下でさらに説明されるような他のハードウェア構成要素(またはハードウェアとソフトウェアとの組合せ)によって実施され得る。システム管理モジュール702はプロキシとして作用し、ユーザがリセットボタンを押すこと、または基板管理コントローラ(BMC)もしくはデバッグヘッダによってアサートされたリセット要求によって起動され得るハードウェア要求信号のアサーションをインターセプトする。
【0082】
システム管理モジュール702は、アサートされたリセット要求信号をデマルチプレクサ706にルーティングする論理ゲート704を含む。デマルチプレクサ706に結合された選択ワイヤは、持続性キャッシュフラッシュの有効/無効に基づいて設定され得る。「0」すなわち低電圧状態は、プロセッサキャッシュ110およびメモリバッファ112のデータが持続性ドメインの一部として管理されることのない、持続性キャッシュフラッシュが無効なメモリ動作モードを表す。「1」すなわち高電圧状態は、プロセッサキャッシュ110およびメモリバッファ112のデータが持続性ドメインの一部になる、持続性キャッシュフラッシュが有効な持続性キャッシュ動作モードを表す。しかしながら、選択ワイヤ上の値は、特定の実装形態に応じて交換され得る。
【0083】
持続性キャッシュフラッシュが無効にされたとき、次いで、システム管理モジュール702は、CPU/チップセット712に電気的に結合されたピンに要求リセット割込み信号をアサートする。それに応答して、CPU/チップセット712のリセット制御論理714が、実行されている現在のタスクを停止してハードウェアリセットを開始し、これは、有限状態機械(FSM)710をリセットするための信号を送ることを含み得る。FSM 710のリセットは、ハードウェア構成要素に被害を与えないように、電源レールを特定の順序で電圧低下させ得る。前述のように、電源レールを電圧低下させる順序は、システムアーキテクチャに応じて変化し得る。
【0084】
持続性キャッシュフラッシュが有効にされたとき、システム管理モジュール702は、CPU/チップセット712の別のピンに直接結合された特別な信号ラインを使用して、SMIをアサートする。この信号ラインは、以前に説明された、持続性キャッシュフラッシュが無効にされたときHWリセットを実行するために使用されるラインとは異なる。SMIの検知に応答して、CPU/チップセット712は、電力不足フラッシュハンドラ716にソフトウェアベースの要求を送って、持続性キャッシュフラッシュを開始する。
【0085】
持続性キャッシュフラッシュハンドラ716が、要求に応答して持続性キャッシュフラッシュ動作を開始し、プロセッサキャッシュおよびメモリバッファから持続性記憶媒体にデータを転送する。キャッシュフラッシュがうまく完了すれば、電力不足フラッシュハンドラ716は、リセット制御論理714にソフトウェアリセット要求を送り、これが、以前に説明されたように電圧低下シーケンスを起動し得る。
【0086】
持続性キャッシュフラッシュが有効にされたとき、システム管理モジュール702は、さらにタイマ708を初期化する。タイマ708は、キャンセルされるかまたはタイムアウト値に達するまで、デクリメントまたはインクリメントしてよい。カウントは、FSM 710をリセットする入力ピンに対する信号のアサーションを検知することに応答してキャンセルされ得る。この信号は、電力不足フラッシュハンドラ716が、プロセッサキャッシュおよびメモリバッファを持続性記憶媒体にうまくフラッシュしたことを示し、リセットシーケンスが開始される。タイマがキャンセルされる以前にタイムアウト値に達すると、次いで、システム管理モジュール702は、CPU/チップセット712のrst_req_inピンを直接アサートしてHWリセットを起動する。
【0087】
5.システム構成要素の間の持続性キャッシュフラッシュ状態の調整
システム起動ファームウェアは、ユーザ構成可能なオプションによって、持続性キャッシュフラッシュサポートを公開し得る。しかしながら、起動ファームウェアは、多種多様なハードウェアプラットフォームにわたって配備され得、このオプションの提示は、特定のプラットフォームハードウェアが持続性キャッシュフラッシュをサポートし得ることを意味しなくてもよい。プラットフォームが持続性キャッシュフラッシュをサポートし得るか否かは、ハードウェア構成と、エネルギー貯蔵モジュールの存在および/または健全性と、基礎をなすハードウェア構成要素の能力とに依拠し得る。いくつかの実施形態では、システム100の構成要素は、(a)ハードウェアが持続性キャッシュフラッシュをサポートするための十分な能力を有するかどうかを判定し、(b)持続性キャッシュフラッシュを選択的に有効化/無効化し、(c)持続性キャッシュフラッシュが有効にされたとき、持続性キャッシュフラッシュをサポートするようにシステム構成要素を構成して、(d)持続性キャッシュフラッシュがうまく有効になったかどうかをオペレーティングシステムに通信するために、ハンドシェイクを行う。
【0088】
図8は、いくつかの実施形態による、持続性メモリ動作モードを調整するための動作の例示のセットを示す。図8に示された1つまたは複数の動作は、すべて、変更、再配置、または省略が可能である。したがって、図8に示された動作の特定の順序は、1つまたは複数の実施形態の範囲の制限として解釈されるべきではない。
【0089】
図8を参照して、処理800は起動シーケンスを開始する(動作802)。いくつかの実施形態では、起動シーケンスは、BIOSファームウェアを含み得るシステムファームウェア120をロードする。システムファームウェア120は、持続性キャッシュフラッシュに関するユーザ構成可能なオプションを公開するように構成され得る。たとえば、システムファームウェア120が、持続性キャッシュフラッシュを有効にするかどうかをユーザに確認するプロンプトを提示してよく、または、ユーザが、BIOSセットアップユーティリティ画面などのユーザインターフェースを操作してもよい。
【0090】
いくつかの実施形態では、ユーザインターフェースは、プラットフォームをADRモードまたは持続性キャッシュフラッシュモードで動作させるかどうかを構成するための、「持続性ドメイン」セットアップオプション用の複数の設定を公開する。たとえば、ユーザインターフェースは、「メモリコントローラ」設定または「CPUキャッシュ階層」設定を選択するオプションを公開し得る。「メモリコントローラ」設定では、ADRは有効になるが持続性キャッシュフラッシュは無効になる。この設定が選択されているとき、メモリバッファ112は電力供給停止イベント中にフラッシュされるが、フラッシュ動作はプロセッサキャッシュ110には適用されない。いくつかの実施形態では、システムハードウェアはデフォルトでこの設定に構成され得る。
【0091】
「CPUキャッシュ階層」設定では、持続性キャッシュフラッシュが有効にされる。したがって、このオプションが選択されると、プラットフォームハードウェアが持続性キャッシュフラッシュ動作をサポートする場合には、メモリバッファ112およびプロセッサキャッシュ110のデータは、電力供給停止イベント時にフラッシュされる。
【0092】
加えて、またはその代わりに、他の設定がサポートされ得る。たとえば、電力不足イベント時にキャッシュデータがフラッシュされない「標準ドメイン」設定が選択され得る。以前に説明されたように、ユーザは、ユーザインターフェースを介して好ましい設定を選択し得る。ユーザが設定を選択していなければ、システムファームウェア120は、特定の実装形態に応じて変化するデフォルト設定を選択してよい。
【0093】
いくつかの実施形態では、システムファームウェア120は、持続性キャッシュモードがユーザによって選択されたか、それともデフォルトであるかを判定するために検査する(動作804)。オプションが選択されても、場合によっては、プラットフォームハードウェアが持続性キャッシュフラッシュ動作をサポートしない可能性がある。さらに、構成要素が、追加され、除去され、老化し、かつ/または故障するので、システムハードウェアは徐々に変化し得る。
【0094】
持続性キャッシュモードが選択されていなければ、システムファームウェア120は、持続性キャッシュモードのサポートを知らせることなく、起動シーケンスを継続する(動作822)。起動シーケンスは、ハードウェア構成要素を初期化するステップ、オペレーティングシステムをロードするステップ、および/または未処理のシステム起動ファイルを処理するステップを含み得る。起動シーケンスは、以下でさらに説明されるハードウェア能力検査を実行することなく継続し得る。
【0095】
持続性キャッシュモードが選択されていれば、システムファームウェア120は、システム管理モジュール118に、システム100が持続性キャッシュフラッシュ動作をサポートすることができるかどうかを判定するようにとの要求を送る(動作806)。
【0096】
システム管理モジュール118は、要求に応答して、システム100のハードウェア能力を評価する(動作808)。いくつかの実施形態では、システム管理モジュール118は、1つまたは複数のハードウェア構成要素とハンドシェイクして、設定、構成、および/または持続性キャッシュフラッシュがサポートされているかどうかを示す他の情報を判定する。たとえば、起動シーケンス中に接続されるハードウェア構成要素が含み得るファームウェアが、システムファームウェアに、構成要素がサポートする機能のリストを供給する。システム管理モジュール118は、供給された機能リストおよび/または他の情報を走査して、持続性キャッシュフラッシュに対応する機能があるかどうかを判定する。
【0097】
いくつかの実施形態では、システム100のハードウェア能力を評価するステップは、PSU 102aおよび/またはPSU 102bが事前警告信号の生成とプログラマブルvwarn閾値の構成とをサポートするかどうかを判定するステップを含む。たとえば、システム管理モジュール118は、PSU 402が、vwarn信号をアサートするためのピンを含むかどうかを判定し得る。PSUにこれらの能力がなければ、システム管理モジュール118は、プラットフォームハードウェアが持続性キャッシュフラッシュ動作をサポートしないと判定し得る。
【0098】
加えて、またはその代わりに、システム管理モジュール118は、電力管理サブシステム104が、vwarn信号の検知、複数のPSUの合計のエネルギーレベルの監視、および/またはシステム全体のエネルギーレベルが閾値未満のときの割込みの起動のための論理を含むかどうかを判定し得る。電力管理サブシステム104にこれらの能力がなければ、システム管理モジュール118は、プラットフォームハードウェアが持続性キャッシュフラッシュ動作をサポートしないと判定し得る。
【0099】
加えて、またはその代わりに、システム管理モジュール118は他のハードウェア能力を評価し得る。たとえば、システム管理モジュール118は、システム100を評価して、システム100が、リセット信号をインターセプトして、非同期リセットイベントを処理するようにGPIOピンを構成する機能をサポートするかどうかを判定し得る。別の例として、システム管理モジュール118は、CPU 116を評価して、CPU 116が持続性キャッシュフラッシュハンドラを呼び出すための特別な信号ラインを含むかどうかを判定し得る。
【0100】
加えて、またはその代わりに、システム管理モジュール118は、持続性キャッシュフラッシュ動作をサポートする何らかのBBUが設置されているかどうかを判定し得る。BBUが設置されていれば、システム管理モジュール118は、PSUアーキテクチャがサポートしなくても、持続性キャッシュフラッシュがサポートされると判定し得る。他方では、システム管理モジュール118は、BBUが設置されておらず、PSUおよび/または電力管理サブシステムが持続性キャッシュフラッシュ動作をサポートしない場合には、持続性キャッシュフラッシュがサポートされないと判定し得る。
【0101】
加えて、またはその代わりに、システム管理モジュール118は他のハードウェア能力を評価し得る。たとえば、システム管理モジュール118は、プラットフォームに設置されたBBUなどの補助エネルギー貯蔵デバイスの容量を評価して、これらのデバイスが、フラッシュ処理中にアクティブなシステム構成要素に給電するのに十分なエネルギーを供給するかどうかを判定し得る。加えて、またはその代わりに、システム管理モジュール118は、バッテリーインピーダンスを測定するなどしてバッテリーの健全性を評価し、プラットフォームハードウェアが持続性キャッシュフラッシュをサポートするかどうかを判定し得る。
【0102】
システム管理モジュール118は、評価に基づき、システムファームウェア120に、プラットフォームが持続性キャッシュフラッシュをサポートすることができるかどうかを示す応答を返す(動作810)。この応答は、システムファームウェア120に、(サポートされていれば)持続性キャッシュフラッシュを有効にする権限を与え得る。そうでなければ、システム管理モジュール118は、システムファームウェア120に、持続性キャッシュフラッシュを有効にする能力を与えない。
【0103】
システムファームウェア120は、応答を受け取ったとき、システム100が持続性キャッシュフラッシュをサポートするかどうかを判定する(動作812)。
【0104】
プラットフォームハードウェアが持続性キャッシュフラッシュをサポートしなければ、システムファームウェア120は、オペレーティングシステム122に持続性キャッシュフラッシュのサポートを知らせることなく起動シーケンスを継続する(動作822)。持続性キャッシュフラッシュが知らされず、有効でもないとき、オペレーティングシステム122は、アプリケーションが、システム100においてプロセッサキャッシュを持続性として扱おうとするのを防止し得る。
【0105】
持続性キャッシュフラッシュがサポートされていれば、システムファームウェア120および/またはシステム管理モジュール118は、持続性キャッシュフラッシュ動作をサポートするようにシステム構成要素を構成する(動作814)。たとえば、システムファームウェア120は、以前に説明されたように、キャッシュフラッシュ動作を実行するために、GPIOピンを確立し、PSUごとのタイマを初期化し、PSUを構成し、そうでなければシステムハードウェア/ソフトウェアを構成し得る。
【0106】
次いで、システムファームウェア120および/またはシステム管理モジュール118は、オペレーティングシステム122に持続性キャッシュフラッシュのサポートを知らせる(動作816)。いくつかの実施形態では、システムファームウェア120は、オペレーティングシステム122に、サポートされる機能および/または構成設定のリストを供給し得る。リストは、持続性キャッシュフラッシュがサポートされかつ有効であることを示すエントリを含み得る。しかしながら、サポートを知らせるやり方は、特定の実装形態に応じて変化し得る。
【0107】
オペレーティングシステム122は、知らせに基づいて、持続性キャッシュモードがサポートされていることを検知する(動作818)。たとえば、オペレーティングシステム122は、起動シーケンス中に、サポートされる機能のリストを走査して、システムファームウェアまたはシステム管理モジュール118が持続性キャッシュフラッシュのサポートを知らせているかどうかを判定する。
【0108】
プラットフォームハードウェアによって、持続性キャッシュモードが有効にされ、かつサポートされる場合、オペレーティングシステム122は、1つまたは複数のアプリケーションに持続性キャッシュモードを知らせる(動作820)。いくつかの実施形態では、アプリケーションは、オペレーティングシステム122に照会して、持続性キャッシュモードが利用可能でしかもサポートされているかどうかを判定する。オペレーティングシステム122は、アプリケーションが持続性キャッシュに頼ってよいかどうか示す応答を供給し得る。持続性キャッシュが有効でしかもサポートされているか否かということに応じて、アプリケーションは、別々の論理を実施し得る。たとえば、有効であれば、データベースアプリケーションは、読出しや書込みを、複雑なソフトウェアベースの検査を実施することなくコミット済みとして扱い得て、アプリケーションコードを簡素化し得、読出しや書込みの実行がより効率的になる。
【0109】
システム構成要素が変化したとき、処理800は、持続性キャッシュモードのサポートが変化したかどうかを判定するために繰り返され得る。BBUの設置またはPSUのアップグレードなどの、ハードウェアにおける変化により、システム100は、持続性キャッシュフラッシュのサポートを、以前はサポートされていなかった場合には、知らせてよい。他の場合には、BBUなどの構成要素が除去されるかまたは障害を起こしたら、知らせが解消され得る。
【0110】
6.ハードウェア実装形態
一実施形態によれば、本明細書で説明された技術は、1つまたは複数の専用のコンピュータデバイスによって実施される。専用のコンピュータデバイスは、技術を実行するように配線接続され得、あるいは、1つまたは複数の特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、または技術を実行するように永続的にプログラムされたネットワーク処理ユニット(NPU)などのデジタル電子デバイスを含み得、あるいは、ファームウェア、メモリ、他の記憶装置、または組合せのプログラム命令に従って技術を実行するようにプログラムされた1つまたは複数の汎用ハードウェアプロセッサを含み得る。そのような専用のコンピュータデバイスはまた、技術を達成するために、カスタム配線論理、ASIC、FPGA、またはNPUを、カスタムプログラムと組み合わせ得る。専用のコンピュータデバイスは、デスクトップコンピュータシステム、ポータブルコンピュータシステム、手持ち式デバイス、ネットワーキングデバイス、または技術を実施するための配線接続論理および/またはプログラム論理を組み込む他のデバイスでよい。
【0111】
たとえば、図9は、本発明の一実施形態が実施され得るコンピュータシステム900を示すブロック図である。コンピュータシステム900は、情報を通信するためのバス902または他の通信機構と、バス902と結合された、情報を処理するためのハードウェアプロセッサ904とを含む。ハードウェアプロセッサ904は、たとえば汎用マイクロプロセッサでよい。
【0112】
コンピュータシステム900は、情報と、プロセッサ904によって実行される命令とを記憶するための、バス902に結合された、ランダムアクセスメモリ(RAM)または他の動的記憶デバイスなどのメインメモリ906も含む。メインメモリ906は、プロセッサ904による命令の実行中に、一時変数または他の中間情報を記憶するためにも使用され得る。そのような命令が、プロセッサ904からアクセス可能な非一時的記憶媒体に記憶されたとき、コンピュータシステム900は、これらの命令で指定された動作を実行するように個別調整された専用マシンになる。
【0113】
コンピュータシステム900は、静的情報とプロセッサ904向けの命令とを記憶するための、バス902に結合された、読出し専用メモリ(ROM)908または他の静的記憶デバイスをさらに含む。情報および命令を記憶するために、磁気ディスクまたは光ディスクなどの記憶装置910が設けられ、バス902に結合される。
【0114】
コンピュータシステム900は、バス902を介して、コンピュータのユーザに情報を表示するためのブラウン管(CRT)または発光ダイオード(LED)モニタなどのディスプレイ912に結合され得る。プロセッサ904に情報およびコマンド選択を通信するための、英数字や他のキーを含み得る入力デバイス914が、バス902に結合されている。別のタイプのユーザ入力デバイスには、方向情報およびコマンド選択をプロセッサ904に通信し、ディスプレイ912上のカーソルの動きを制御するための、マウス、トラックボール、タッチスクリーン、またはカーソル方向キー、などのカーソル制御916がある。入力デバイス914は、通常は、第1の軸(たとえばx)および第2の軸(たとえばy)の2つの軸における2自由度を有し、平面における位置を指定することができる。
【0115】
コンピュータシステム900は、個別調整された配線論理、1つまたは複数のASICもしくはFPGA、ファームウェアおよび/またはプログラム論理と組み合わされて、専用マシンになり、または専用マシンにプログラムされ、本明細書で説明された技術を実施し得る。一実施形態によれば、本明細書の技術は、コンピュータシステム900が、メインメモリ906に含有される1つまたは複数の命令の1つまたは複数のシーケンスをプロセッサ904が実行するのに応答して、実行する。そのような命令は、記憶装置910などの別の記憶媒体からメインメモリ906に読み込まれ得る。プロセッサ904は、メインメモリ906に含有される命令のシーケンスを実行することにより、本明細書で説明された処理ステップを実行する。代替実施形態では、配線接続された回路が、ソフトウェア命令の代わりに、またはソフトウェア命令と組み合わせて、使用され得る。
【0116】
本明細書で使用される「記憶媒体」という用語は、マシンを特定のやり方で動作させるデータおよび/または命令を記憶する任意の非一時的媒体を指す。そのような記憶媒体は、不揮発性媒体および/または揮発性媒体を備え得る。不揮発性媒体は、たとえば記憶装置910などの光ディスクまたは磁気ディスクを含む。揮発性媒体は、メインメモリ906などのダイナミックメモリを含む。記憶媒体の一般的形式は、たとえば、フロッピー(登録商標)ディスク、フレキシブルディスク、ハードディスク、半導体ドライブ、磁気テープ、または他の磁気データ記憶媒体、CD-ROM、他の光学データ記憶媒体、穴のパターンを伴う任意の物理的媒体、RAM、PROM、およびEPROM、FLASH-EPROM、NVRAM、他のメモリチップまたはカートリッジ、コンテンツアドレス指定可能メモリ(CAM)、および3進のコンテンツアドレス指定可能メモリ(TCAM)を含む。
【0117】
記憶媒体は伝送媒体とは異なるが、伝送媒体に関連して使用され得る。伝送媒体は、記憶媒体の間の情報の転送に参加する。たとえば、伝送媒体は、同軸ケーブル、銅線、および光ファイバを含み、バス902を構成するワイヤを含む。伝送媒体は、電波や赤外線のデータ通信中に生成されるものなど、音波または光波の形をとることもある。
【0118】
1つまたは複数の命令の1つまたは複数のシーケンスを、実行するためにプロセッサ904に搬送するのに、様々な形式の媒体が包含され得る。たとえば、命令は、当初はリモートコンピュータの磁気ディスクまたは半導体ドライブに担持されてよい。リモートコンピュータは、命令を、そのダイナミックメモリにロードし、モデムを使用して、電話線、光ファイバケーブル、または同軸ケーブルなどのネットワークラインを通じて送ることができる。コンピュータシステム900に対してローカルのモデムが、ネットワークライン上のデータを受け取り、赤外線送信器を使用してデータを赤外線信号に変換することができる。赤外線検知器が、赤外線信号で搬送されたデータを受け取ることができ、適切な回路がバス902にデータを出すことができる。バス902がメインメモリ906にデータを搬送し、プロセッサ904が命令を取り出して実行する。メインメモリ906が受け取った命令は、プロセッサ904による実行の前または後に、任意選択で記憶装置910に記憶され得る。
【0119】
コンピュータシステム900は、バス902に結合された通信インターフェース918も含む。通信インターフェース918は、ローカルネットワーク922に接続されたネットワークリンク920に対して双方向データ通信結合を提供する。たとえば、通信インターフェース918は、統合デジタル通信サービス(ISDN)カード、ケーブルモデム、人工衛星モデム、または対応するタイプの電話線にデータ通信接続を提供するモデムでよい。別の例として、通信インターフェース918は、適合するLANにデータ通信接続を提供するローカルエリアネットワーク(LAN)カードでよい。無線リンクも実施され得る。任意のそのような実装形態において、通信インターフェース918は、様々なタイプの情報を表すデジタルデータストリームを搬送する、電気信号、電磁気信号、または光信号を送受信する。
【0120】
ネットワークリンク920は、通常は、他のデータ装置に、1つまたは複数のネットワークを通じてデータ通信を提供する。たとえば、ネットワークリンク920は、ローカルネットワーク922を通じて、ホストコンピュータ924またはインターネットサービスプロバイダ(ISP)926が運営するデータ機器に対する接続を提供し得る。そしてまた、ISP 926が、現在は一般に「インターネット」と称される世界的なパケットデータ通信ネットワーク928を通じて、データ通信サービスを提供する。ローカルネットワーク922およびインターネット928は、どちらも、デジタルデータストリームを搬送する、電気信号、電磁気信号または光信号を使用する。様々なネットワークを通る信号と、ネットワークリンク920上にあって通信インターフェース918を通る信号とは、伝送媒体の例示の形式であり、コンピュータシステム900との間でデジタルデータを搬送する。
【0121】
コンピュータシステム900は、ネットワーク、ネットワークリンク920および通信インターフェース918を通じて、メッセージを送ったり、プログラムコードを含むデータを受け取ったりすることができる。インターネットの例では、サーバ930は、インターネット928、ISP 926、ローカルネットワーク922および通信インターフェース918を通じて、アプリケーションプログラム用の要求されたコードを伝送し得る。
【0122】
コードは、受け取られたときプロセッサ904によって実行されてよく、かつ/または後の実行のために記憶装置910または他の不揮発性記憶装置に記憶されてもよい。
【0123】
7.その他、拡張部分
実施形態は、ハードウェアプロセッサを含む1つまたは複数のデバイスを有するシステムを対象とし、これらのデバイスは、本明細書で説明された動作のうち任意のもの、および/または以下の請求項のうち任意のものにおいて列挙された動作を実行するように構成される。
【0124】
一実施形態では、非一時的コンピュータ可読記憶媒体が含む命令が、1つまたは複数のハードウェアプロセッサによって実行されたとき、本明細書で説明された動作のうち任意のもの、および/または請求項のうち任意のものにおいて列挙された動作が実行される。
【0125】
本明細書で説明された特徴および機能性の任意の組合せが、1つまたは複数の実施形態によって使用され得る。前述の明細書では、実施形態が、実装形態ごとに変化し得る多くの特定の詳細を参照しながら説明されている。したがって、明細書および図面は、制限する意味ではなく例示と見なされるべきである。本発明の範囲の唯一かつ排他的な指標、および出願人が本発明の範囲と意図するものは、この出願が発行する請求項の具体的な形式での請求項のセットの文字通りの範囲と同等の範囲であり、その後の訂正を含むものである。
図1
図2
図3
図4
図5
図6
図7
図8
図9
【国際調査報告】