(57)【特許請求の範囲】
【請求項１】
プロセッサと、第一のメモリと、第二のメモリと、第一のメモリと接続されて第一のメモリを制御する第一のメモリコントローラと、を備えるシステムにおいて、アウェイク状態とスリープ状態との間を移行する方法であって、
Ｓ１スリープ状態又はＳ２スリープ状態であるスリープ状態からアウェイク状態へ移行するためのトリガを検出するステップと、
前記検出に応答して第一のメモリコントローラを初期化するステップであって、第二のメモリ内のソフトウェアを実行して第一のメモリコントローラを初期化するステップを含むステップと、
前記初期化の後に第一のメモリ内のソフトウェアを実行するステップと、
を備える方法。
【請求項２】
更に、
第一のメモリ内に格納されたソフトウェアの制御下で、アウェイク状態からスリープ状態への移行の準備をするステップと、
スリープ状態へ移行するステップと、
を備える請求項１記載の方法。
【請求項３】
第一のメモリ内に格納されたソフトウェアが、オペレーティングシステムソフトウェアを含む請求項２記載の方法。
【請求項４】
第一のメモリが、ＲＤＲＡＭを含む請求項２記載の方法。
【請求項５】
第一のメモリコントローラが、プロセッサと同一のチップ内に存在する請求項４記載の方法。
【請求項６】
第二のメモリ内のソフトウェアが、ＢＩＯＳソフトウェアを含む請求項５記載の方法。
【請求項７】
第二のメモリ内のソフトウェアが、オペレーティングシステムによりアクセス不能なソフトウェアを含む請求項５記載の方法。
【請求項８】
第二のメモリ内のソフトウェアが、システム管理モードソフトウェアを含む請求項５記載の方法。
【請求項９】
プロセッサ及びメモリコントローラが、それぞれのクロック信号を受信するための入力部を有し、前記方法が、更に、前記検出の前にそれぞれのクロック信号を受信することを防止するステップを含む請求項１記載の方法。
【請求項１０】
前記準備ステップが、
オペレーティングシステムからのスリープトリガ信号に応答して、第二のメモリ内に格納されたソフトウェアを実行するようにプロセッサを構成するステップと、
オペレーティングシステムから第一のスリープトリガ信号を受信するステップと、
前記受信に応答して、第二のメモリ内に格納されたソフトウェアを実行するステップと、
スリープトリガ信号に応答してスリープ状態へ移行するようにプロセッサを再構成するステップと、
第二のスリープトリガ信号を受信するステップと、
を含む請求項２記載の方法。
【請求項１１】
第二のメモリ内に格納されたソフトウェアが、システム管理モードソフトウェアを含み、前記方法が、更に、第一のスリープトリガの受信に応答してシステム管理割り込みを発生するステップを含む請求項１０記載の方法。
【請求項１２】
前記初期化ステップが、スリープ状態への移行前に実行された最後の命令に続く命令により、第二のメモリ内に格納されたソフトウェアを実行する請求項１０記載の方法。
【請求項１３】
前記移行ステップが、プロセッサをＳ１スリープ状態へ移行させる請求項２記載の方法。
【請求項１４】
前記移行ステップが、プロセッサをＳ２スリープ状態へ移行させる請求項２記載の方法。
【請求項１５】
前記準備ステップが、キャッシュをフラッシュすることを含む請求項２記載の方法。
【請求項１６】
更に、前記初期化ステップの前にプロセッサをリセットするステップを含む請求項２記載の方法。
【請求項１７】
プロセッサと、第一のメモリと、第二のメモリと、第一のメモリと接続されて第一のメモリを制御する第一のメモリコントローラと、とを備え、プロセッサ及びメモリコントローラが、それぞれのクロック信号を受信するための入力部を有し、第一のメモリが、オペレーティングシステムソフトウェアを格納するシステムにおいて、アウェイク状態とスリープ状態との間を移行する方法であって、
オペレーティングシステムソフトウェアの制御下で、アウェイク状態からＳ１スリープ状態又はＳ２スリープ状態であるスリープ状態への移行の準備をするステップであって、検出後に第二のメモリを指すようにアドレス空間マッピングを構成するステップを含むステップと、
プロセッサ及びメモリコントローラが前記それぞれのクロック信号の受信を防止するステップと、
スリープ状態へ移行するステップと、
スリープ状態からアウェイク状態へ移行させるためのトリガを検出するステップと、
前記検出に応答して第一のメモリコントローラを初期化するステップであって、第二のメモリ内のＢＩＯＳソフトウェアを実行して第一のメモリコントローラを初期化するステップを含むステップと、
前記初期化の後に第一のメモリ内のオペレーティングシステムソフトウェアを実行するステップと、
を備える方法。
【請求項１８】
更に、第一のメモリ内にＢＩＯＳ再開アドレスを格納するステップと、第一のメモリ内に格納された再開アドレスを使用して、前記初期化ステップの実行後、ＢＩＯＳからオペレーティングシステムへ制御機能を移動させるステップと、を備える請求項１７記載の方法。
【請求項１９】
更に、前記検出ステップの前に、第一のメモリコントローラの消費電力を下げるステップを備える請求項１８記載の方法。
【請求項２０】
アウェイク状態と、Ｓ１スリープ状態又はＳ２スリープ状態であるスリープ状態と、を有するプロセッサと、
第一のメモリと、
前記第一のメモリと接続されて前記第一のメモリを制御する第一のメモリコントローラと、
第二のメモリと、
前記スリープ状態から前記アウェイク状態への移行を伝えるトリガ信号に応答して、前記第一のメモリコントローラを初期化するために実行される、前記第二のメモリ内に格納されたソフトウェアと、
を備えるシステム。
【請求項２１】
第一のメモリが、オペレーティングシステムソフトウェアを格納し、
第二のメモリが、不揮発性メモリであり、
第二のメモリが、ＢＩＯＳソフトウェアを格納し、
オペレーティングシステムソフトウェアが、アウェイク状態からスリープ状態への移行を制御するように構成された請求項２０記載のシステム。
【請求項２２】
オペレーティングシステムが、アウェイク状態からスリープ状態への移行の前に、第一のメモリにＢＩＯＳ再開アドレスを格納し、
ＢＩＯＳソフトウェアが、メモリコントローラの初期化後、格納されたＢＩＯＳ再開アドレスを使用して、オペレーティングシステムに制御機能を戻す請求項２１記載のシステム。
【請求項２３】
第一のメモリが、ＲＤＲＡＭを含む請求項２１記載のシステム。
【請求項２４】
第二のメモリが、ＲＡＭを含む請求項２１記載のシステム。
【請求項２５】
更に、オペレーティングシステムによりアクセス不能であり、第一のメモリを初期化するシステム管理モードソフトウェアを備える請求項２１記載のシステム。
【請求項２６】
プロセッサと、第一のメモリと、第一のメモリコントローラとが、クロック入力部を有し、前記システムが、プロセッサと第一のメモリと第一のメモリコントローラの内部計時を防止するクロック無効化回路を備える請求項２０記載のシステム。
【請求項２７】
プロセッサと第一のメモリコントローラとが、共通のチップ内に存在する請求項２０記載のシステム。
【請求項２８】
プロセッサ及び第一のメモリコントローラと同一のチップ内に存在するキャッシュを更に備え、オペレーティングシステムが、アウェイク状態からスリープ状態への移行の前にキャッシュをフラッシュするように構成された請求項２０記載のシステム。
【請求項２９】
電力貯蔵媒体と、
ディスプレイと、
プロセッサと、
プロセッサクロックと、
第一のメモリと、
第二のメモリと、
第一のメモリと接続されて第一のメモリを制御する第一のメモリコントローラと、
を備えるポータブルコンピュータシステムであって、
前記システムが、アウェイク状態及びＳ１スリープ状態又はＳ２スリープ状態であるスリープ状態を含み、
前記プロセッサと第一のメモリコントローラとがスリープ状態ではクロックされず、
第二のメモリ内のソフトウェアが、スリープ状態からアウェイク状態への移行に応答して、第一のメモリコントローラを初期化するポータブルコンピュータシステム。
【請求項３０】
更に、プロセッサと第一のメモリコントローラと第一のメモリの内部の電力の流れを禁止する回路を備える請求項２９記載のシステム。
【発明の詳細な説明】
【０００１】
【発明の分野】
本発明は、スリープ状態への移行に関する。
【０００２】
【背景】
プロセッサシステムにおいて、低電力「スリープ」状態を実現するために、ＩＮＴＥＬ（ＴＭ）その他では、アドバンスト・コンフィギュレーション・アンド・パワー・インタフェース（「ＡＣＰＩ」）仕様を提案している。ＡＣＰＩは、オペレーティングシステムとハードウェアとの設計を独立して発展させることを可能にしつつ、オペレーティングシステムとハードウェアとが相互に作用することを可能にする、オペレーティングシステムとハードウェアとの間のインタフェースを規定する。１９９９年２月２日に公開されたＡＣＰＩ仕様書リビジョン１．０ｂに記載のＳ１及びＳ２スリープ状態の説明は、本明細書の補遺に再録されている。
【０００３】
ＲＡＭサブシステムも、低電力状態になることが可能である。一部のＲＡＭサブシステムでは、メモリコントローラが、特定のプロトコルを使用して、メモリチップと通信する。このメモリコントローラは、メモリチップでの通常のデータ読み取り及び書き込み動作を開始する前に初期化される高度なデバイスである。カリフォルニア州マウンテンビューのＲＡＭＢＵＳ（ＴＭ）社が開発したＲＤＲＡＭ（ＴＭ）ＲＡＭサブシステムにおいて、このメモリコントローラは、メモリチップへの電気インタフェースを制御し、多重化及び逆多重化機能を実行し、メモリチップへの独自の高速シリアル化インタフェースとプロセッサが使用する低速パラレルインタフェースとの間でデータを変換するＲＡＭＢＵＳ  ＡＳＩＣセル（「ＲＡＣ」）を含む。ＲＤＲＡＭサブシステムは、パワーダウンされ（消費電力が低下せしめられ）、電力を節約することができる。ＲＤＲＡＭサブシステムは、パワーダウンされた後に再初期化する必要がある。
【０００４】
【発明の概要】
システムは、アウェイク状態及びスリープ状態を含む多数の状態となるプロセッサと、メモリコントローラ及びメモリデバイスを含むメモリサブシステムと、第二のメモリとを有する。このシステムは、第二のメモリ内のソフトウェアを使用して、スリープ状態からアウェイク状態への移行時にメモリコントローラを初期化する。このシステムは、ウェイクイベントトリガを検出し、このウェイクイベントトリガに応答して、第二のメモリに格納されたソフトウェアを実行してメモリコントローラを初期化し、初期化後に、第一のメモリからソフトウェアを実行する。
【０００５】
本発明の別の態様において、このメモリサブシステムは、ＲＡＭベースで、オペレーティングシステムソフトウェアの一部又は全部を格納する。メモリコントローラを初期化するソフトウェアは、ＢＩＯＳ記憶装置に格納される。アウェイク状態からスリープ状態への移行の前に、オペレーティングシステムは、この移行の準備を制御する。
【０００６】
【詳細な説明】
図１に示すように、プロセッサ１０はメモリコントローラハブ２０に接続される。このプロセッサは、Ｐｅｎｔｉｕｍ  ＩＩ（登録商標）クラスのプロセッサ、その他の汎用プロセッサ、又は専用プロセッサとすることができる。このプロセッサは、ワークステーション、デスクトップパーソナルコンピュータ、ポータブルコンピュータ、或いは電気通信、ビデオ、又はグラフィックスデバイスの一部とすることができる。メモリコントローラハブ２０は、メインメモリ３０に接続され、これを制御する。メモリコントローラハブ２０は、更に、グラフィックストラヒックと、入出力コントローラハブを行き来するトラヒックとを処理する。メインメモリ３０は、例えば、それぞれがＲＤＲＡＭメモリチップを保持する複数のメモリモジュールを含んだＲＡＭＢＵＳメモリシステムにすることができる。個々のモジュールは、標準的なデュアルインラインメモリモジュールと同等のサイズのものにすることができる。
【０００７】
このメモリコントローラハブ２０は、パケット化されたプロトコルを使用して、メインメモリ３０と相互に作用する。このメモリコントローラは、プロセッサ自体がＲＡＭ構造又は動作の詳細を気にしなくてもいいように、ＲＡＭバスとプロセッサ１０との間で通訳として機能する。メモリコントローラを使用してメインメモリにアクセスするその他の高速ＲＡＭ技術も、同様に使用することができる。
【０００８】
メモリコントローラハブ２０及びメインメモリ３０は、メモリクロック４０によりクロックさせる。例えば、メインメモリは、８００ＭＨｚの実効クロック速度を提供するデュアルフェーズクロックを使用して４００ＭＨｚで差動クロックされる。このプロセッサは、プロセッサクロック５０によりクロックされる。更に、プロセッサ１０には、入出力コントローラハブ５５を介して、不揮発性メモリ６０が結合される。この不揮発性メモリ６０は、ＲＯＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、バッテリでバックアップされたＲＡＭ、及びその他にすることができる。不揮発性メモリ６０は、ＢＩＯＳ（基本入出力ソフトウェア）を格納し、ＳＭＭ（システム管理モードソフトウェア）を含むことができる。このＳＭＭは、メインメモリ内に存在することもできる。
【０００９】
不揮発性メモリ６０は、メモリコントローラハブ２０を初期化するために使用する初期化ソフトウェア７０を格納する。初期化ソフトウェア７０は、ＢＩＯＳの一部とすることが可能であり、或いは、存在する場合はＳＭＭソフトウェアの一部とすることができる。一部の応用において、例えば、プロセッサ１０の外部にＢＩＯＳソフトウェアを有しないシステムにおいて、初期化ソフトウェアは、ＢＩＯＳから独立させることが可能である。メモリコントローラハブ２０は、アドレス空間マッピングを制御する内部レジスタ９０（「ＰＡＭレジスタ」）を含む。こうしたレジスタは、アドレスジェネレータが不揮発性メモリ６０の命令及びデータを当てにするか、或いはメインメモリ３０を当てにするかを制御する。代わりに、ＰＡＭレジスタは、入出力コントローラハブ５５内に存在すること、或いは、プロセッサ１０がパワーダウンされたときに（プロセッサ１０の消費電力が低下せしめられたときに）電力が失われないようにプロセッサ内の別個のウェル内に存在することが可能である。プロセッサ１０には、ディスプレイ又はグラフィックスコントローラ９５が接続される。
【００１０】
プロセッサ１０は、メモリアクセス時間を高速化するためにキャッシュ１１０を含むことができる。このキャッシュは、プロセッサチップ又はパッケージの内部に設置することが可能であり、外部に設置することも可能である。入出力コントローラ５５は、プロセッサ外部から受信したウェイクイベントトリガを処理するウェイクトリガ状態機械１００を含んでいる。状態機械１００は、メモリコントローラハブ２０又はプロセッサ１０内に存在することも可能である。この状態機械により、プロセッサは、任意のソフトウェアが実行を始める前の時点で、ウェイクイベントに応答することができる。
【００１１】
システムが稼働すると、システムはアウェイク状態となり、メモリコントローラ２０は初期化され、オペレーティングシステム８０の一部がメインメモリ３０にロードされ、システムは通常の動作を行う。
【００１２】
図２を参照すると、このオペレーティングシステムは、電力を節約するべきであり、システムがスリープ状態に入るべきであることを判定できる。この判定は、システムのアイドルタイムアウト、ユーザからの要求、バッテリ切れ又は高温であることの表示等のハードウェアデバイスからの要求、或いはアプリケーションプログラムからの要求等、無数の要素により発生する。
【００１３】
スリープ状態に入る前に、ステップ２００において、オペレーティングシステムは、移行の準備をする。この準備は、ハウスキーピングタスク、キャッシュのフラッシュ、コンテクストのセーブ、及びその他を含むことができる。オペレーティングシステムは、どのデバイスを「スリープ」状態にするかを判定することもできる。システムが最大限の節電を行う設計となっている状況では、システム全体をスリープ状態にすることができる。これよりもシンプルな設計では、プロセッサ及びメモリサブシステムのみをスリープ状態にして、同時に周辺機器には通常の電力を供給した状態を維持すること、或いは周辺機器をオフにすることができる。オペレーティングシステムは、望ましいスリープ状態を選択し、スリープ状態レジスタにおいて適切なビット又は複数のビットを設定（セット）することも可能である。例えば、ＡＣＰＩ仕様には、アウェイク状態への復帰の待ち時間が短いＳ１及びＳ２スリープ状態が含まれる。
【００１４】
ステップ２１０において、プロセッサは、スリープ状態へ移行する。この移行を達成する一方法は、スリープ許可レジスタ（スリープイネーブルレジスタ）において、適切なビットを設定することである。その後、ソフトウェア又はハードウェアプロセスは、このビットが設定されたことを検出し、適切なコンポーネントにスリープ信号をアサートする。プロセッサクロック５０は、パワーダウンされる（消費電力が低下せしめられる。）。パワーダウン（消費電力低下）は、デバイス自体から電力を切断することで達成可能であり、或いは各チップの内部にある内部配電線からの入力信号を電気的に切断することで達成可能である。例えば、プロセッサクロック５０を稼働させたまま、プロセッサは、入力クロック信号を電気的に切断して、プロセッサの内部コンポーネントがクロックされていない状態にすることができる。同様に、個々のデバイスは、デバイス内部のコンポーネントの一部又は全部へ電力が流れるのを抑制するデバイス内部の回路により、パワーダウン（消費電力を低下）させることができる。ＲＤＲＡＭシステムでは、メモリコントローラハブ２０と、メインメモリ３０と、メモリクロック４０がパワーダウンされる（消費電力が低下せしめられる。）。メインメモリがパワーダウンされたとき（消費電力が低下せしめられたとき）、そのコンテンツは失われないが、メインメモリデバイスは、消費電力が非常に僅かなパワーダウン状態（消費電力低下状態）に移行する。メインメモリ２０内の内部自己リフレッシュメカニズムは、メインメモリがパワーダウンしたとき（消費電力が低下せしめられたとき）、メモリのコンテンツを維持する。更に、メモリクロック４０も、低電力状態に移行する。その低電力状態において、物理的な電力は、除去される場合又は除去されない場合がある。
【００１５】
ステップ２２０において、ウェイクイベントトリガが検出される。このトリガは、プロセッサ１０が通常の動作を再開すべきであることを知らせる。一部の応用において、これは、フルスピード、フルパワーモードへの復帰である。その他の応用において、システムは、プロセッサ１０がフルスピードで稼働しない半覚醒状態に復帰することができる。このウェイクイベントトリガは、「パワーオン」又は「再開」キーを押すユーザ、又はモデムその他の電話通信のレシーバからの着信信号等、システム自体の外部にあるソースにより生成することが可能であり、或いは、特定の日時、又は予定のシステム保守といったその他の何らかのイベントに関連づけられたタイマにより生成することができる。
【００１６】
ウェイクイベントトリガの検出を受けて、ステップ２３０において、システムは、メモリコントローラを初期化する。ＲＤＲＡＭシステムにおいて、これには、ＲＡＣ及びＲＤＲＡＭコアの初期化が含まれる。初期化中には、その他の機能として、ＲＡＭバスドライバの再キャリブレーションと、ＲＡＭバスクロックの同期化と、メモリコントローラの全般的なリセットとを実行することができる。この初期化は、ハードウェアのみにより実行されるのではなく、不揮発性メモリ６０からの初期化ソフトウェアの実行が関与する。
【００１７】
メモリコントローラハブ２０の初期化後、ステップ２４０において、制御機能は、初期化ソフトウェア７０から、メインメモリ３０に格納されているオペレーティングシステム８０に渡される。ここでオペレーティングシステム８０は、ウェイクイベントトリガを処理する。この処理には、プロセッサコンテクストの復旧、クイックシステム診断の実行、又はウェイクイベント後に実行される他の代表的なルーチンを含めることができる。
【００１８】
図３は、ＲＤＲＡＭによりＳ１スリープ状態を実施する実施形態を示している。通常の動作では、スリープ許可ビットを設定することで、プロセッサはＳ１スリープ状態に移行する。しかしながら、この実施形態では、スリープ状態とＲＤＲＡＭとの仲介のために、システム管理モードソフトウェアが使用される。システム管理モードソフトウェアの一部は、不揮発性メモリ６０に格納され、このメモリは、更にＢＩＯＳも格納している（ＢＩＯＳ記憶装置）。しかしながら、システム管理モードソフトウェアは、オペレーティングシステムによりアクセスすることができない。オペレーティングシステムは、システム管理モードソフトウェア内のルーチンに直接ジャンプする手段を有していない。
【００１９】
オペレーティングシステムからシステム管理モードソフトウェアへの制御機能の移行を効率的かつ正確に行うために、プロセッサは、システム管理割り込み（ＳＭＩ）により、スリープトリガに応答するように構成される。これを達成するために、オペレーティングシステムは、ステップ３００において、レジスタにビットを書き込む。このレジスタは、ハードウェアに対して、スリープ状態への移行に応答するのではなく、スリープ許可信号に応答してＳＭＩを生成するように伝える。ＳＭＩに応答して、プロセッサは、システム管理モードソフトウェアに制御機能を与える。ステップ３１０において、ＳＭＩにサービスを提供するＳＭＩハンドラは、キャッシュをフラッシュする。このキャッシュのフラッシュにより、命令のフェッチ時に、Ｌ２キャッシュでの統一ライトバックが回避される。このステップが実行された場合、その後、プロセッサがスリープ状態から移行するまで、メモリの書き込みは行われない。次に、ステップ３２０に示すように、ＳＭＩハンドラは、ＢＩＯＳ記憶装置を指すようにＰＡＭレジスタの設定を行う。このＰＡＭは、システムのためのアドレス空間マッピングを保持する。ＰＡＭレジスタがＢＩＯＳ記憶装置を指した後、命令及びデータのフェッチは、ＲＤＲＡＭではなく、このデバイスから行われる。ステップ３３０において、ＳＭＩハンドラは、ＢＩＯＳ記憶装置内のエントリを指すジャンプ／ブランチ命令を実行する。
【００２０】
ステップ３４０において、ＳＭＩハンドラは、スリープ許可に応答してプロセッサにＳＭＩを生成させたビットを消去する。次に、このプロセッサは、スリープ許可信号に応答してスリープ状態に入るように再設定される。ステップ３５０では、スリープ許可ビットの二度目の設定が行われる。しかしながら、今回のビットを設定するのは、オペレーティングシステムではなく、ＳＭＩハンドラである。ＳＭＩハンドラは、望ましいスリープモードの特定も行う。この実施形態において、望ましいスリープモードは、Ｓ１スリープモードである。プロセッサは、スリープ許可ビットが設定されたことを検出し、ステップ３６０において、システムは、Ｓ１スリープ状態に移行する。プロセッサクロック及びＲＤＲＡＭクロックはパワーダウンされる（消費電力が低下せしめられる。）。この実施形態において、プロセッサとＲＤＲＡＭサブシステムとは、それぞれ別個のクロックを有する。他の実施形態において、プロセッサとメモリサブシステムとは、それぞれのクロックとして、同じクロックを使用することができる。ＲＤＲＡＭサブシステムは、一旦パワーダウンされると（消費電力が低下せしめれれると）、再初期化を必要とする。
【００２１】
ステップ３７０において、ハードウェアは、システムがスリープ状態からアウェイク状態に移行するべきであることを伝えるウェイクイベントトリガを受信する。クロックは、パワーオン状態に復帰する。プロセッサは、命令のフェッチを再開する。ステップ３８０において、フェッチされる最初の命令は、Ｓ１状態への移行に続くＳＭＩハンドラからの命令である。次にステップ３８５において、ＳＭＩハンドラは、ＲＤＲＡＭを初期化する命令を実行する。次にステップ３９０において、ＳＭＩハンドラは、ＲＤＲＡＭ内のエントリを指すようにＰＡＭレジスタを設定する。ＳＭＩハンドラは、その後、復帰命令（戻り命令）を実行し、制御機能は、オペレーティングシステムに移動する。ステップ３９５において、オペレーティングシステムは、スリープ許可ビットを設定した命令の次の命令を実行する。システムは、スリープ状態からの復帰に成功し、通常の動作が継続する。
【００２２】
図４は、Ｓ２状態を使用した実施形態を示している。オペレーティングシステムは、ステップ４１０において、スリープ状態に入ることを望み、ＲＤＲＡＭ内でＢＩＯＳが使用する再開アドレスを格納する。オペレーティングシステムは、ステップ４２０において、キャッシュをフラッシュし、スリープタイプレジスタにＳ２状態を書き込むことでスリープ状態を特定し、スリープ許可レジスタに適切な情報を書き込むことでスリープ状態を有効にする。プロセッサ及びＲＤＲＡＭクロックは、ステップ４３０において、パワーダウンされる（消費電力が低下せしめられる）。Ｓ２状態では、プロセッサ１０が、有効電力又は漏れ電力を消費しないように、プロセッサ１０への電力は、実際に除去される。
【００２３】
システムは、ステップ４４０において、Ｓ２状態に入る。ステップ４５０において、ウェイクイベントトリガが検出される。クロックへの電力が復旧する。プロセッサをリセットするプロセッサリセット（ＣＰＵＲＳＴ＃）が、アサートされる。ステップ４６０において、システムは、リセット状態を脱し、位置ＦＦＦＦＦＦＦ０ｈのソフトウェアの実行を開始する。ＰＡＭレジスタは、ＲＤＲＡＭ内でこのスペースをコピーするのではなく、ＢＩＯＳ記憶装置を指すように構成される。或いは、ハードウェア状態機械は、ＢＩＯＳ記憶装置を指すようにＰＡＭレジスタを変更することで、ウェイクイベントに応答することができる。ステップ４７０において、ＢＩＯＳは、ＲＤＲＡＭを初期化する。ステップ４８０において、ＢＩＯＳは、ＲＤＲＡＭからのソフトウェアを実行するように、ＰＡＭレジスタを再設定(redirect)する。ＢＩＯＳは、ステップ４１０において、ＲＤＲＡＭ内に格納された再開アドレスを介して、制御機能をオペレーティングシステムに渡す。ステップ４９０において、オペレーティングシステムは、ウェイクイベント割り込みを処理する。ステップ４９５において、スリープ状態からの復帰が完了し、アウェイク状態での通常の動作が再開する。
【００２４】
図５は、デスクトップシステム、ポータブルコンピュータ、ポータブル通信デバイス、セットトップボックス、又はビデオ及びグラフィックスコントローラといった更に大きなシステムのコンテクストにおけるプロセッサとメモリサブシステムとを示している。プロセッサ５１０とメモリコントローラ５２０とは、同じチップ内に組み込まれている。このプロセッサは、好ましくはＲＤＲＡＭであるメモリ５３０と、メモリバス５３５を通じて、メモリコントローラ５２０を介して相互作用する。メモリコントローラ５２０は、ウェイク状態となり、ＢＩＯＳ記憶装置５４０からのソフトウェアの実行により初期化される。一部の応用においては、ＢＩＯＳ記憶装置を、プロセッサ５１０及びメモリコントローラ５２０と同じチップに組み込むことが望ましい場合がある。
【００２５】
システムへの電力は、電源５４５により供給される。ポータブルシステムにおいて、電源５４５はバッテリとすることができる。デスクトップ又はセットトップデバイスにおいて、この電源は、ＡＣライン電力を取り出すＤＣ電源とすることができる。この電力は、電力制御回路５５０により分配される。電力制御回路は、プロセッサに応答して、システムの様々な部分への電力を減少又は遮断する。電力制御回路５５０は、低電力条件をプロセッサ５１０に知らせることもできる。表示のように、この電力制御回路とプロセッサとのインタフェースは、メインバス５６０から独立した形になっている。他の実施形態において、この電力制御回路は、メインバスに接続された他の任意の周辺機器として扱うことができる。デスクトップシステムにおいて、このメインバスは、ＰＣＩバスにすることができる。このメインバスには、ディスプレイ５７０と、高密度記憶装置５８０と、周辺機器５９０とが接続されている。グラフィックスに集中した一部のシステムにおいては、ディスプレイ又はグラフィックスコントローラ５７０は、プロセッサへの独自の専用又は高速パスを有することができる。ディスプレイ又はグラフィックスコントローラ５７０は、別個のバスを通じて、プロセッサ１０又はメモリコントローラハブ２０に接続することが可能であり、或いは、プロセッサコア内のメモリコントローラと統合させることが可能である。高密度記憶装置５８０は、通常はハードドライブである。周辺機器５９０は、特定の応用により変化する。
【００２６】
図６では、コアチップセットに関する三種類の構成が表示されている。構成１は、単一のチップ６４０に統合された、プロセッサ６１０（ＣＰＵ）と、グラフィックスコントローラ６２０（ＧＦＸ）と、メモリコントローラ６３０（メモリコントローラハブ又はＭＣＨとも呼ばれる）とを有する。入出力コントローラハブ６５０（ＩＣＨ）とビデオコントローラハブ６５５（ＶＣＨ）とは、別個のチップとして表示されている。このＶＣＨは、チップ６４０に組み込むことも可能である。ＩＣＨ６５０は、例えば図５に示すメインバス５６０等のメインバスの動作を制御する。ＩＣＨ６５０は、チップ６４０をリセットする出力（ＮＲＳＴ）を有する。ＩＣＨ６５０は、例えばＰＣＩバス等のメインバスをリセットする別個の出力（ＰＣＩＲＳＴ＃）を有する。構成２において、プロセッサ６１０と、ＧＦＸ６２０と、ＭＣＨ６３０とは、それぞれ別個のチップ内にある。構成３において、プロセッサ６１０は、独自のチップ内にある。ＧＦＸ６２０と、ＭＣＨ６３０とは、単一のチップ内にある。構成２及び３において、ＣＰＵ６１０は、ＩＣＨ６５０の制御下にある独自のリセット入力を有している。
【００２７】
構成１では、例えばＳ２状態等のスリープ状態において、チップ６４０及びそのすべてのコンポーネントはパワーダウンされる（消費電力が低下せしめられる。）。構成２では、ＣＰＵ６１０及びＭＣＨ６３０がパワーダウンされる。ＧＦＸ６２０では、ディスプレイを維持するために電力が維持される。或いは、更に多くの電力を節約するために、ＧＦＸ６２０をパワーダウンさせることもできる。構成３では、ＣＰＵ６１０と、ＧＦＸ６２０と、ＭＣＨ６３０とがパワーダウンされる。クロックの停止に加えて、コンポーネントをパワーダウンすることで、漏れ電流を大幅に減少させる。加えて、ＩＣＨ６５０とその他のコンポーネントとのインタフェースは分離されている。このインタフェースは、ＰＣＩインタフェースではなく、メッセージングプロトコルに基づくインタフェースである。それぞれの構成において、ＩＣＨの電力は、維持される。ＩＣＨは、スリープ状態から復帰するのに必要なハードウェアである。Ｓ２状態でのＣＰＵ６１０と、ＧＦＸ６２０と、ＭＣＨ６３０とからの漏れ電力を低減又は排除することで、０．１８ミクロンプロセステクノロジ及びそれを超えるテクノロジにおいて、バッテリ寿命が実質的に延長される。
【００２８】
開示した実施形態は、例示的なものに過ぎない。他の実施形態は、前記特許請求の範囲に含まれる。
【００２９】
【補遺】
１９９９年２月２日に公開されたＡＣＰＩ仕様書リビジョン１．０ｂのＳ１及びＳ２スリープ状態。
【００３０】
９．１．１  Ｓ１スリープ状態
Ｓ１状態は、ウェイクアップまでの待ち時間が短いスリープ状態として定義される。この状態において、システムのコンテクストは、失われず（ＣＰＵ又はチップセット）、ハードウェアは、すべてのシステムコンテクストの維持に責任を有し、これには、ＣＰＵと、キャッシュと、メモリと、あらゆるチップセット入出力とのコンテクストが含まれる。Ｓ１スリープ状態実施の選択肢の例は、次の通りである。
【００３１】
９．１．１．１  Ｓ１スリープ状態の実施（例１）
この例では、ＳＴＰＣＬＫ＃信号のアサートによる停止許可状態をサポートするＩＡプロセッサを参照する。ＳＬＰ＿ＴＹＰｘが、Ｓ１値（値は、ＯＥＭが選択し、その後、＼＿Ｓ１オブジェクト内に置かれる）にプログラムされ、続いて、ＳＬＰ＿ＥＮｘビットが、設定される時、ハードウェアは、プロセッサに対してＳＴＰＣＬＫ＃信号をアサートすることで、Ｓ１状態を実施可能であり、これによりプロセッサを停止許可状態とする。この場合、システムクロック（ＰＣＩ及びＣＰＵ）は、依然として稼働している。任意の許可されたウェイクアップイベントにより、ハードウェアは、プロセッサに対するＳＴＰＣＬＫ＃信号のアサートを中止することになる。
【００３２】
９．１．１．２  Ｓ１スリープ状態の実施（例２）
ＳＬＰ＿ＴＹＰｘが、Ｓ１値にプログラムされ、続いて、ＳＬＰ＿ＥＮｘビットが、設定される時、ハードウェアは、以下を行うことで、Ｓ１状態を実施する。
１．プロセッサを停止許可状態にする。
２．プロセッサの入力クロックを停止し、プロセッサを停止クロック状態にする。
３．システムメモリを自己リフレッシュ又はサスペンドリフレッシュ状態にする。リフレッシュは、メモリ自体により維持されるか、或いはスリープ状態中に停止しない他の何らかの基準クロックにより維持される。
４．すべてのシステムクロックを停止する（システムＰＬＬチップに対してスタンバイ信号をアサートする）。通常、ＲＴＣは、稼働を続ける。
この場合、システム内のすべてのクロックが停止している（ＲＴＣのクロックを除く）。任意の有効化されたウェイクアップイベント時、ハードウェアは、このプロセスを逆にする（システムクロックを再始動）させる必要がある。
【００３３】
９．１．２  Ｓ２スリープ状態
Ｓ２状態は、ウェイクアップまでの待ち時間が短いスリープ状態として定義される。この状態は、Ｓ１スリープ状態と同様だが、ＣＰＵ及びシステムキャッシュコンテクストは失われる（ＯＳは、キャッシュ及びＣＰＵコンテクストの維持に責任を有する）。加えて、制御は、ウェイクアップイベント後のプロセッサのリセットベクトルから開始する。ＳＬＰ＿ＥＮビット設定前に、ＡＣＰＩドライバは、システムキャッシュをフラッシュする。プラットフォームが、ＷＢＩＮＶＤ命令をサポートする場合（ＷＢＩＮＶＤ命令及びＦＡＣＰテーブル内のＷＢＩＮＶＤ＿ＦＬＵＳＨフラグにより示される）、ＯＳは、ＷＢＩＮＶＤ命令を実行する。プラットフォームが、キャッシュをフラッシュするＷＢＩＮＶＤ命令をサポートしない場合、ＡＣＰＩドライバは、ＦＡＣＰテーブルのＦＬＵＳＨ＿ＳＩＺＥ及びＦＬＵＳＨ＿ＳＴＲＩＤＥフィールドを使用して、手作業でキャッシュをフラッシュすることを試みる。ハードウェアは、チップセット及びメモリコンテクストの維持に責任を有する。Ｓ２スリープ状態実施の例は、次の通りである。
【００３４】
９．１．２．１  Ｓ２スリープ状態実施の例
ＳＬＰ＿ＴＹＰｘが、Ｓ２値にプログラムされ（＼＿Ｓ２オブジェクト内で検出され）、その後、ＳＬＰ＿ＥＮビットが設定される時、ハードウェアは、以下を行うことで、Ｓ２状態を実施する。
−システムクロックを停止する（唯一稼働するクロックは、ＲＴＣである）。
−システムメモリを自己又はサスペンドリフレッシュ状態にする。
−ＣＰＵ及びキャッシュサブシステムの電力をオフにする。
この場合、ＣＰＵは、ウェイクアップイベントの検出時にリセットされるが、しかしながら、コアロジック及びメモリは、コンテクストを維持する。実行制御は、ＣＰＵのブートベクトルから開始する。ＢＩＯＳは、以下を行う必要がある。
−ＣＰＵの初期ブート構成（ＣＰＵのＭＳＲ及びＭＴＲＲレジスタ等）をプログラムする。
−キャッシュコントローラを初期ブートサイズ及び構成に初期化する。
−メモリコントローラによるメモリアクセスの受け入れを可能にする。
−ウェイクベクトルを呼び出す。
【図面の簡単な説明】
【図１】  本発明を組み込んだプロセッサシステムのブロック図である。
【図２】  図１のシステムが実行する一連の状態移行を表すフローチャートである。
【図３】  図１のシステムが実行するＳ１状態への移行及びＳ１状態からの移行を表すフローチャートである。
【図４】  図１のシステムが実行するＳ２状態への移行及びＳ１状態からの移行を表すフローチャートである。
【図５】  別のプロセッサシステムを示すブロック図である。
【図６】  別のプロセッサシステムを示す図である。
【図１】
0003701910.tif 000002
【図２】
0003701910.tif 000003
【図３】
0003701910.tif 000004
【図４】
0003701910.tif 000005
【図５】
0003701910.tif 000006
【図６】
0003701910.tif 000007