本発明は、添付図面を参照して説明され、同様のまたは同等の要素を指定するために同様の参照符号が添付図面にわたって使用される。添付図面は、縮尺通りに描かれておらず、本発明を例示するために提供されるにすぎない。本発明のいくつかの態様が、例示的な適用を参照して例示のために以下で説明される。多数の具体的な詳細、関係、および方法が、本発明の完全な理解を提供するために記載されることが理解されるべきである。関連技術における当業者は、しかしながら、本発明が1または複数の具体的な詳細なしに実施され得ること、または他の方法によって実施され得ることを容易に認識するであろう。他の例において、本発明を不明瞭にしないように、周知の構造または動作は、詳細には示されていない。いくつかの動作は、異なる順序で起こり得、および/または他の動作またはイベントと同時に起こり得るので、本発明は、例示される動作またはイベントの順序によって限定されない。さらに、例示される全ての動作またはイベントが本発明に係るやり方を実装するために必要なわけではない。
本開示は、データを処理ユニット、コントローラハブ、および他の揮発性コンピュータコンポーネントから効果的に不揮発性メモリモジュールに移動できる方法を対象とする。タイマ機能に依存せずにシステムが正確で安定したデータの記憶を可能にするよう、本方法は、従来の方法より多くのコンポーネントとの間で通信することに依存する。加えて、本システムは、本システムがオーバーヒートしているコンポーネントによってシャットダウンしそうである場合、自動的に検知できる管理ユニットを提供する。管理コンポーネントは、データが不揮発性コンポーネント内に保全されていることを自主的に保証できる。
既存のソフトウェアデータ保全プロセスの制限を考慮すると、本開示は、コンピュータシステムの考えられるあらゆるシャットダウンシナリオ、または低電力動作のシナリオの中でメモリモジュール内のデータを保全することを対象とする。システムは、コンピュータシステムが入るシャットダウンモードまたは低電力動作モードを検知する。システムは、次に、そのシナリオに合わせた一連の段階を提供する。このように、本開示は、ユーザ起動されたシャットダウンであるか、ソフトウェア起動されたシャットダウンであるか、またはハードウェア起動されたシャットダウンであるかにかかわらず、効果的なデータの保全を可能にする。加えて、本開示は、コンピュータシステムがスリープモードに移行しているか、リスタートモードに移行しているか、またはコールドシャットダウンモードに移行しているかに基づいて、異なる段階を提供する。
図1Aは、AC電源が失われたときにのみトリガされてデータを保全する、従来のNVDIMMアプリケーションシステム100を示す。システム100は、プラットフォームコントローラハブ(PCH)110、中央演算処理装置(CPU)120、電源130、コンプレックスプログラマブルロジックデバイス(CPLD)140、ロジック回路150、およびメモリモジュール160を含む。PCH110がCPU120と併せて使用されるとき、PCH110は、システム100全体にわたってデータの移動を制御でき、システム100上でホスティングされるアプリケーションの動作をサポートできる。図1Aにおいて示されるように、PCH110は、CPU120およびCPLD140と直接通信できる。PCH110は、汎用入力/出力(GPIO)、インテルチップセット、シリアルアドバンスドテクノロジアタッチメント(SATA)、ユニバーサルシリアルバス(USB)、電源シーケンス、または当技術分野において使用される任意の他のデバイスであってよい。
CPU120は、タスクの割り当てを提供し、メモリモジュール160への書き込みデータを監視する。電源130は、システム100に電力を提供する。システム100は、PSUにより供給される電力なしには動作できない。電源ユニット130が取り外された場合、システム100は、自動的に動作を停止する。CPLD140は、他のコンピュータコンポーネントとの通信から生じる複合的なロジックプロセスを実施できるロジックを含む。CPLD140は、信号を他のプログラムロジックユニットに入力し、出力する。CPLD140は、負論理ゲート(NANDゲート)、ANDゲート、ORゲート、XORゲート、または当技術分野において使用される任意の他のデバイスなどの物理的なロジックデバイスとして構成され得る。
ロジック回路150が、CPLD140内に収納されてよく、CPLD140が機能する実際の物理的メカニズムを提供する。例えば、ロジック回路150は、いつ電源130が動作可能であるかを特定でき、電源130のステータスをPCH110に通知できる。メモリモジュール160は、システム100がシャットダウンした場合であってもメモリモジュール160上のコンテンツが永久的に保全され得るよう、データを永久的に格納できる。
コンポーネント間の矢印は、コンピュータシステム100の種々のコンポーネントが互いに通信できる様々な方向を示す。コンポーネント間の通信は、独立した外部信号としてコンポーネント間を移動する。これらの通信は、図1Bを参照して以下で説明される。
図1Aを参照して、図1Bは、システム100などのコンピュータシステムにおいてAC電源が失われたとき、従来のNVDIMM アプリケーションが行う一連の段階の方法200を示す。方法200は、CPLD140内のロジック回路150が、電源130からの電力損失を検知するとき、段階210において始まり得る。電力の欠如を検知したことに応答して、CPLD140内のロジック回路150は、非同期ダイナミックランダムアクセスメモリリフレッシュ(ADR)をトリガできる。ADRは、不揮発性メモリ構成の一部であるNVDIMMシステム内の重要データの保全を可能にするメカニズムを提供できる。ADRは、インテルチップセット上でサポートされる機能であり、メモリモジュール160に対してハードウェア割り込みをトリガする。この割り込みは、メモリモジュール160内の書き込み保護データバッファをフラッシュし、ダイナミックランダムアクセスメモリ(DRAM)をセルフリフレッシュモードに置く。このセルフリフレッシュモードは、電源損失イベント中、またはシステムクラッシュ中にデータが永久記憶状態にあることを保証する。
段階220において、ADRプロセスは、PCH110にADRタイマをスタートさせる。PCH110は、次に、同期プロセスをスタートするようCPU120を命令する。タイマは、任意の長さであってよく、CPU120が同期プロセスをスタートし、完了するためにかかる時間と同じ長さの時間であるよう構成され得る。ADRタイマは、独立した機能であり、コンピュータシステム100の内部クロックと同期しない。同期の欠如は、任意の保証時間においてデータの読み取り要求または書き込み要求が、メモリモジュールからの読出しのために利用可能でないことを意味し得る。ADRタイマは、データが保存されるために適切な時間を与えるための試みであるが、ADRタイマは、そのデータがいつ保全されたのか正確な指標を提供しない。
段階230において、CPU120は、同期プロセスをスタートできる。同期プロセスは、CPU120とメモリモジュール160との間のメモリのセルフリフレッシュプロセスであってよい。この同期プロセスは、CPU120からメモリモジュール160内の不揮発性ストレージへデータを搬送できる。例えば、データは、電源がない場合にデータを保持するメモリの一種であるフラッシュメモリへ移動され得る。第1のメモリモジュール160が一杯のときコンピュータデータを第2のメモリモジュール160に格納することを可能にするために相互結合される単一のメモリモジュール160(またはメモリモジュール160のセット)が存在し得る。メモリモジュール160は、1または複数のNVDIMMであってよい。
段階240において、タイマが完了した後、PCH110は、ADRプロセスが完了したことをCPLD140内のロジック回路150に示す。段階220に関して先に言及されたように、これは、CPU同期プロセスの完了についての不正確な描写であり得る。
段階250において、CPLD140は、データを不揮発性フラッシュメモリ内に保存するようメモリモジュール160を命令することにより、ADRプロセスの完了に応答する。不揮発性フラッシュメモリにデータを保存する段階は、電力損失後にデータが保全され得る即時的な記憶場所を提供する。データは、ハードドライブに書き込まれるよりもさらに迅速にフラッシュメモリに書き込まれ得る。段階250の完了後、段階260において、CPLD140は、電源にオフにするよう命令する。不揮発性コンピュータコンポーネント内に保全されたあらゆるデータが保存されるが、揮発性コンピュータコンポーネント内に残っているデータは失われる。
図2は、本開示の例示的な実施形態に係る、システム障害中のデータ保全を強化するために構成されるシステム300を示す。システム300は、PCH310、CPU320、電源330、CPLD340、ロジック回路350、メモリモジュール360、およびベースボード管理コントローラ(BMC)370を含む。PCH310、CPU320、電源330、CPLD340、ロジック回路350、およびメモリモジュール360は、図1Aにおいて示されたものと同様のプロセスを有する。しかしながら、図2を再び参照すると、そのようなコンポーネントに加えてシステム300は、合理化された通信を可能にするためにベースボード管理コントローラ370を加える。ベースボード管理コントローラ370は、オーバーヒートについての入力をPCH310から、および/またはCPU320から直接受信できる。PCH310および/またはCPU320がオーバーヒートしているという入力を受信すると、ベースボード管理コントローラ370は、データ保全プロセスをトリガするようCPLD340に知らせることができる。
図3から図5を参照して以下でさらに説明されるように、システム300におけるPCH310は、従来のシステム100よりも、システム300において、より多くのコンポーネントと通信する能力を用いてさらに構成される。タイマの完了を待つことに代えて、この通信の広がりが、より速くより正確なデータ保全プロセスをもたらす。
図3は、コンピュータシステムにおいてスリーププロセスを開始するとき、本開示の例示的な実施形態が行う一連の段階の方法400を示す。スリーププロセスは、一時的低電力モードまたは完全なシャットダウンであってよい。スリーププロセスは、ユーザ起動されたプロセス、またはソフトウェア起動されたプロセスであってよい。説明を容易にするべく、これらの段階が、図2におけるシステム300を参照して説明される。段階410において、PCH310はスリーププロセスの開始を検知し、同期プロセスを始めるようCPU320に自動的に信号を送る。PCH310は、また、スリーププロセスについてCPLD340に通知する。図1Aにおけるシステム100と比較して図2におけるシステム300の新しい構成の一部として、PCH310は、スリーププロセスの開始を検知できる。故に、低電力モードを検知する段階と、(CPU320などの)揮発性コンピュータコンポーネントから不揮発性メモリへデータを同期する重要な段階との間に存在する段階はより少ない。
段階420において、PCH310からの信号に応答して、CPU320が即時に同期プロセスを開始する。同期プロセスは、従って、CPU320の揮発性メモリ内のデータをメモリモジュール360の不揮発性メモリ内に保全する。
段階430において、CPLD340は、PCH310からスリーププロセスの通知を受信し、次に、メモリモジュール360にそのコンテンツを不揮発性コンポーネント内に保存するよう命令できる。段階440において、メモリモジュール360は、既にそのメモリに存在したデータと、段階420におけるCPU320の同期プロセスにより加えられたデータとの両方を保存する。例えば、段階440において、メモリモジュール360は、そのデータコンテンツをフラッシュメモリ内に保全できる。
段階450において、PCH310がCPLD340にスリーププロセスに入るよう伝えたとき、方法400全体が終わる。CPLD340は、次に、電源330をオフにする。
このように、この方法400は、スリーププロセスに入る前にデータを保存することをオペレーティングシステムに依存しないので、方法400は、現在のプロセスに勝る利点を示す。オペレーティングシステムは、スリーププロセスを直ちにスタートでき、その間にCPLDおよびPCHは、並行してデータのバックアップをスタートし、その間にオペレーティングシステムはスリーププロセスを完了する。これは、スリーププロセスに入る前にデータを保存することをオペレーティングシステムに依存する他の方法より優れているプロセスである。
加えて、方法400は、PCH310がスリーププロセスの通知を受信し、その後、CPU310およびメモリモジュール360にそれらのデータを保全するよう直接命令することを可能にする。この方法において、PCH310は、CPLD340からの通知を待つ必要がない。故に、方法400は、コンピュータシステム300がスリープモードへと進めるよう、より速いデータ保全および正確な完了時間を提供する。
コンピュータシステムがスリープモードに入るときデータの保全を提供することに加えて、システム300は、他のシナリオのために構成され得る。図4は、コンピュータシステムにおいてリスタートプロセスを開始するとき、本開示の例示的な実施形態が行う一連の段階の方法500を示す。リスタートプロセスは、ソフトウェア起動されたプロセス、またはユーザ起動されたプロセスであってよい。説明を容易にするべく、これらの段階は、図3におけるシステム300を参照して説明される。段階510において、PCH310は、システムのリスタートプロセスの開始を検知することにより、方法500をスタートする。PCH310は、次に、同期プロセスをスタートするようCPU320に直接伝える。PCH310は、また、リスタートプロセスを始めるようCPLD340に通知する。PCH310は、リスタートプロセスの開始を検知し、CPU320に直接通信するので、シャットダウンを検知する段階と、(CPU320などの)揮発性コンピュータコンポーネントから不揮発性メモリへデータを同期する重要な段階との間に存在する段階はない。
段階520において、PCH310からの信号に応答して、CPU320が即時に同期プロセスを開始する。同期プロセスは、従って、CPU320の揮発性メモリ内のデータをメモリモジュール360の不揮発性メモリ内に保全する。
段階530において、CPLD340は、リスタートプロセスの通知を受信している。CPLDは、次に、メモリモジュール360にそのデータを不揮発性コンポーネント内に保存するよう伝えることができる。段階540において、メモリモジュール360は、既にそのメモリに存在したデータと、段階520におけるCPU320の同期プロセスにより加えられたデータとの両方を保全する。例えば、段階540において、メモリモジュール160は、そのデータコンテンツをフラッシュメモリ内に保全できる。
段階550において、CPLD340は、電源330にオフにするよう伝える。方法400とは異なり、方法500は、ここで止まらずに段階560に進む。段階560において、方法500は、コンピュータシステム300のリスタートプロセスに進む。PCH310は、シャットダウンプロセスを終了し、リスタートプロセスをスタートするようCPLD340に伝える。
段階570において、CPLD340が、電源330をオンにし、システムをリブートする。
このように、この方法500は、リスタートのために効果的な手順へとシャットダウンプロセスのカスタマイズを可能にするので、方法500は、現在のプロセスに勝る利点を示す。方法400と同様に、方法500は、CPU310およびメモリモジュール360がそれらのデータを迅速に保全することを可能にする直接的な通信の利点を有する。方法500は、次に、システムリスタートに安全に進むことができる。
図5は、オーバーヒートしている温度を検知した後、強制シャットダウンを開始するとき、本開示の例示的な実施形態が行う一連の段階の方法600を示す。説明を容易にするべく、これらの段階は、図3におけるシステム300を参照して説明される。段階610において、BMC370は、CPU320およびPCH310のうち少なくとも1つから、コンピュータコンポーネントがオーバーヒートしているという入力を受信することにより、方法600を開始する。BMC370は、コンピュータシステム300がオーバーヒートしているという通知を代替的に受信でき、具体的なオーバーヒートしているコンポーネントを知っていることを必要としない。
段階620において、BMC370は、電源ボタンをトリガして電源オンのステータスを上書きし、コンピュータシステム300の電源をオフにさせる。段階620は、オーバーヒートによる電気部品への損傷から1または複数のコンピュータコンポーネントを保護するために開始される強制的なシャットダウンプロセスである。コンポーネントがもはや動作可能ではなく、動作の副産物として熱を発生させることができないので、電源の完全なシャットダウンが、電気コンポーネントを冷やすことができる。電気コンポーネントに対する損傷の恐れにより、システム300は、即時シャットダウンを必要とする。BMC370は、オーバーヒートが検知されたとき、即時に電源をシャットダウンすることにより、必要な電源オフを提供する。
段階630において、PCH310は、同期プロセスを始めるようCPU320に伝える。PCH310は、また、スリーププロセスを始めるようCPLD340に通知する。PCH310がシャットダウンプロセスの開始を検知し、CPU320に直接通信するので、低電力モードを検知する段階と、(CPU320などの)揮発性コンピュータコンポーネントから不揮発性メモリへデータを同期する重要な段階との間に存在する段階はない。
段階640において、CPU320は、同期プロセスを開始する。同期プロセスは、従って、CPU320の揮発性メモリ内のデータをメモリモジュール360の不揮発性メモリへと保全する。
段階650において、CPLD340は、シャットダウンプロセスの通知を受信しており、メモリモジュール360にそのデータを不揮発性コンポーネント内に保存するよう伝えることができる。段階660において、メモリモジュール360は、実際にこの段階を実行して、既にそのメモリに存在したデータと、段階650におけるCPU320の同期プロセスにより加えられたデータとの両方を保全する。例えば、段階660において、メモリモジュール160は、そのデータコンテンツをフラッシュメモリ内に保全できる。段階650は、CPLD340が電源330にシャットダウンプロセスを始めるよう伝えるとき完了する。方法600は、段階670において、電源330がシャットダウンするときに完了する。
故に、本開示は、CPU320またはPCH310がオーバーヒートしても、揮発性メモリコンポーネント内のデータを効果的に保護できるベースボード管理コントローラ370を提供する。方法は、熱を生み出すことを停止するべく、電源330がコンピュータシステムをシャットダウンする前に、不揮発性メモリコンポーネント内へのデータの効果的な保全を提供する。
本発明の様々な例が上記で説明されている一方で、それらは、単なる例として提示されており、制限するものではないことが理解されるべきである。開示された例に対する多数の変更が、本発明の趣旨または範囲から逸脱することなく、本明細書における開示に従って行われ得る。このように、本発明の広がりおよび範囲が、上記で説明されたいかなる例によっても限定されるべきではない。むしろ、本発明の範囲は、以下の特許請求の範囲およびそれらの均等物に従って定義されるべきである。
本発明は、1または複数の実装例を参照して例示され、説明されているが、この明細書および添付図面を読んで理解すると、同等の改変および改良が他の当業者によって想到されるであろう。加えて、本発明の特定の特徴が、いくつかの実装例のうちの1つのみに関して開示されたものであり得る一方、そのような特徴は、任意の所与のまたは特定の用途のために望ましいかつ有益であり得るので、他の実装例の1または複数の他の特徴と組み合わされてよい。
本明細書において用いられている用語は、特定の例のみを説明する目的で用いられており、本発明を限定することを意図していない。本明細書において用いられている通り、単数形の「1つの(a)」、「1つの(an)」、および「その(the)」は、文脈が明確にそうでないと示さない限り、その複数形も含むことが意図される。さらに、「含む(including)」、「含む(includes)」、「有する(having)」、「有する(has)」、「ともに(with)」またはそれらの変形例である用語が、発明を実施するための形態、および/または特許請求の範囲の何れかで使用されている限りにおいて、そのような用語は、「備える(comprising)」という用語と同様の態様で包括的であることが意図される。
別途定義されない限り、本明細書において用いられる全ての用語(技術的用語および科学的用語を含む)は、当業者によって一般に理解される意味と同じ意味を有する。さらに、一般に的に使用される辞書において定義されるような用語は、関連技術の文脈におけるそれらの意味と一致する意味を有するものとして解釈されるべきであり、本明細書において、そのように明示的に定義されない限り、理想的なまたは過度に形式的な意味で解釈されないものとする。