(57)【要約】  外部メモリへ及び外部メモリからコア・メモリ内容をフラッシュ及びリストアするための方法及び装置が説明される。一実施形態では、装置は複数のプロセッサ・コアを有する集積回路であり、複数のプロセッサ・コアは、或るコアのデータを保存するように動作することが可能な第1メモリを有する或るコアを含み、或るコアが第1低電力アイドル状態から第2低電力アイドル状態へ遷移すべき旨の第1指示の受信、及び、或るコアは第1メモリから第2メモリへデータを保存すべき旨の或るコアの外部で生成された第2指示の受信に応答して、或るコアは、第1メモリからプロセッサの外に位置する第2メモリへデータを保存し、データが保存される第2メモリ内のロケーションは、或るコアによってアクセス可能であるがIC内の他のプロセッサ・コアによってはアクセス可能でない。集積回路は、複数のコアに結合され、複数のコアの外に位置する電力管理コントローラを有する。
2018526705.tif 000002
【特許請求の範囲】
【請求項１】
複数のプロセッサ・コア及び電力管理コントローラを有する集積回路(IC)であって：
前記複数のプロセッサ・コアは、或るコアのデータを保存するように動作することが可能な第1メモリを有する或るコアを含み、前記或るコアが第1低電力アイドル状態から第2低電力アイドル状態へ遷移すべき旨の第1指示の受信、及び、前記或るコアは前記第1メモリから第2メモリへデータを保存すべき旨の前記或るコアの外部で生成された第2指示の受信に応答して、前記或るコアは、前記第1メモリから前記プロセッサの外に位置する第2メモリへデータを保存し、前記データが保存される前記第2メモリ内のロケーションは、前記或るコアによってアクセス可能であるが前記IC内の他のプロセッサ・コアによってはアクセス可能でなく；及び
前記電力管理コントローラは、前記複数のコアに結合され、前記複数のコアの外に位置する、集積回路(IC)。
【請求項２】
前記第1メモリはスタティック・ランダム・アクセス・メモリ(SRAM)であり、前記第2メモリはダイナミックRAM(DRAM)である、請求項1に記載の集積回路(IC)。
【請求項３】
前記第2指示は、前記電力管理コントローラから又はオペレーティング・システムからのものである、請求項1に記載の集積回路(IC)。
【請求項４】
前記第1及び第2メモリ間の如何なる中間的なストレージも前記データをキャッシュしないように、前記データは、前記データの前記第2メモリへの保存の一部分としてキャッシュ不可として指定される、請求項1に記載の集積回路(IC)。
【請求項５】
前記第2メモリ内のロケーションに関連するベース・アドレスが前記或るコアに保存されるように、前記ベース・アドレスを保存する前記或るコア内の第3メモリ；及び
前記IC内であるが前記或るコアの電力ドメインの外にある第4メモリ；
を更に有し、前記ロケーションは、前記第2低電力アイドル状態から前記第1低電力アイドル状態へ戻る遷移の際に、前記第1メモリへ前記データを戻すのに使用する前記ベース・アドレスを前記或るコアへ提供するためにアクセスされる、請求項1に記載の集積回路(IC)。
【請求項６】
前記或るコアに関連し及び前記或るコアの電力ドメインの外にあり、且つ、前記ベース・アドレスを前記或るコアへ提供する際に前記プロセッサ内の他の何れのコアにも関連しない電力管理エージェントを更に有する請求項5に記載の集積回路(IC)。
【請求項７】
ダイナミック・ランダム・アクセス・メモリ(DRAM)；及び
前記DRAMに結合され、1つ以上のコアを有するプロセッサ；
を有するシステムであって、前記1つ以上のコアのうちの少なくとも何れかのコアは、或るコアのアーキテクチャ状態データを保存するように動作することが可能なSRAM有し、前記或るコアが第1スリープ状態から現在のスリープ状態より深いスリープ状態へ遷移すべき旨の第1指示の受信、及び、前記或るコアは前記SRAMから前記DRAMへアーキテクチャ状態データを保存すべき旨の前記或るコアの外部で生成された第2指示の受信に応答して、前記或るコアは、第1低電力アイドル状態から第2低電力アイドル状態への遷移を制御し、前記制御は、前記SRAMから前記DRAMへアーキテクチャ状態データを書き込むことを含み、前記アーキテクチャ状態データが保存される前記DRAM内のロケーションは、前記或るコアによってアクセス可能であるが前記プロセッサ内の他のプロセッサ・コアによってはアクセス可能でない、システム。
【請求項８】
前記第2指示は、前記プロセッサ内にはあるが前記或るコアの外にある電力管理ユニットから、又は、オペレーティング・システムからのものである、請求項7に記載のシステム。
【請求項９】
前記SRAM及びDRAM間の如何なる中間的なストレージも前記アーキテクチャ状態データをキャッシュしないように、前記アーキテクチャ状態データは、前記アーキテクチャ状態データの前記DRAMへの保存の一部分としてキャッシュ不可として指定される、請求項7に記載のシステム。
【請求項１０】
前記DRAM内のロケーションに関連するベース・アドレスは、前記或るコアの中に保存され且つ前記或るコアの電力ドメインの外にある前記プロセッサ内の場所に保存され、前記ロケーションは、前記第2低電力アイドル状態から前記第1低電力アイドル状態へ戻る遷移の際に、前記SRAMへ前記アーキテクチャ状態データを戻すのに使用する前記ベース・アドレスを前記或るコアへ提供するためにアクセスされる、請求項7に記載のシステム。
【請求項１１】
前記或るコアに関連し及び前記或るコアの電力ドメインの外にあり、且つ、前記ベース・アドレスを前記或るコアへ提供する際に前記プロセッサ内の他の何れのコアにも関連しない電力管理エージェントを更に有する請求項10に記載のシステム。
【請求項１２】
集積回路(IC)内のプロセッサ・コアが、前記プロセッサ・コアは第1スリープ状態からより深いスリープ状態へ遷移すべき旨の第1指示を受信すること；
前記プロセッサ・コアは、前記プロセッサ・コアの第1メモリから前記ICの外に位置する第2メモリへデータを保存すべきか否かを指示する、前記プロセッサ・コアの外部で生成された第2指示を受信すること；及び
前記第2指示に応答して、前記第1メモリから前記第2メモリへデータを書き込む書き込みオペレーションを実行することであって、前記データが保存される前記第2メモリ内のロケーションは、前記プロセッサ・コアによってアクセス可能であるが前記IC内の他のプロセッサ・コアによってはアクセス可能でない、こと；
を有する方法。
【請求項１３】
前記第1メモリはスタティック・ランダム・アクセス・メモリ(SRAM)であり、前記第2メモリはダイナミックRAM(DRAM)である、請求項12に記載の方法。
【請求項１４】
前記第2指示は、前記IC内の電力制御ユニットから又はオペレーティング・システムからのものである、請求項12に記載の方法。
【請求項１５】
前記第1及び第2メモリ間の中間的なストレージが前記データをキャッシュしないように、前記第1メモリからのデータをキャッシュ不可として指定することを更に有する請求項12に記載の方法。
【請求項１６】
前記プロセッサ・コアの第2メモリ内のロケーション、及び、前記プロセッサ・コアの電力ドメインの外にある前記IC内の別のロケーションに関連するベース・アドレスを保存することを更に有する請求項12に記載の方法。
【請求項１７】
前記第2メモリから前記第1メモリへ前記データを戻すことを更に含む請求項16に記載の方法であって：
前記第1メモリ又は前記第2メモリからリストア・オペレーションを実行するか否かについての第3指示を確認すること；
前記第3指示に基づいて、前記データが前記第2メモリから戻されるべきことを決定すること；
反復的に、データの一部を取得するためプリフェッチとしてリクエストを送信し、第1メモリについてのミスを強制し、前記第2メモリから前記データを取得するために、データ・リクエストが前記第2メモリへ送信されることを引き起こすこと；及び
前記第1メモリは有効データを含んでいる旨の第4指示を、前記プロセッサ・。コアに通知するために設定すること；
を含む、請求項16に記載の方法。
【請求項１８】
プロセッサ・コアのデータ保存を制御する方法をシステムのコンピュータに実行させるコンピュータ・プログラムであって、前記方法は：
集積回路(IC)内のプロセッサ・コアが、前記プロセッサ・コアは第1スリープ状態からより深いスリープ状態へ遷移すべき旨の第1指示を受信すること；
前記プロセッサ・コアは、前記プロセッサ・コアのSRAMから前記ICの外に位置するDRAMへデータを保存すべきか否かを指示する、前記プロセッサ・コアの外部で生成された第2指示を受信すること；及び
前記第2指示に応答して、前記SRAMから前記DRAMへデータを書き込む書き込みオペレーションを実行することであって、前記データが保存される前記DRAM内のロケーションは、前記プロセッサ・コアによってアクセス可能であるが前記IC内の他のプロセッサ・コアによってはアクセス可能でない、こと；
を有する、コンピュータ・プログラム。
【請求項１９】
前記方法は、第1及び第2メモリ間の中間的なストレージが前記データをキャッシュしないように、前記第1メモリからのデータをキャッシュ不可として指定することを含む、請求項18に記載のコンピュータ・プログラム。
【請求項２０】
前記方法は、前記プロセッサ・コアの第2メモリ内のロケーション、及び、前記プロセッサ・コアの電力ドメインの外にある前記IC内の別のロケーションに関連するベース・アドレスを保存することを更に有する、請求項18に記載のコンピュータ・プログラム。
【請求項２１】
請求項１８ないし２０のうち何れか一項に記載のコンピュータ・プログラムを保存する記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、集積回路(ICs)(例えば、マイクロプロセッサ、システム・オン・チップ(SOC))の電力規制の技術分野に関連し；特に、本発明の実施形態は集積回路のコアの電力を削減する場合におけるコアのメモリの状態保存を調整することに関連する。
【背景技術】
【０００２】
多くの現代のプロセッサは複数の電力状態を有し、その複数の電力状態は、プロセッサに求められるパフォーマンスと、プロセッサが消費する電力との均衡を図る(バランスさせる)ために使用されることが可能である。  プロセッサがコードを実行していない場合、それはアイドルである。C状態(C-states)は、アドバンスト・コンフィギュレーション・パワー・インターフェース(Advanced  Configuration  and  Power  Interface：ACPI)により規定される低電力アイドル状態である。しばしば使用される電力状態はC0、C1、C3、C6-C10を含む。C6電力状態では、例えば、その状態にある実行コアは、コア電圧を取り除く前に、それらのアーキテクチャ状態(their  architectural  state)を保存する。かつて、この状態はC6スタティック・ランダム・アクセス・メモリ(SRAM)に保存されており、そこはプロセッサに結合されてはいるがプロセッサの外側にあるコヒーレント・ファブリック(a  coherent  fabric)内の場所であった。
【０００３】
最近、コアの外ではなく、「C6  SRAM」をコアの中に配置し直す要請が存在する。そのような場合、コアに対する電圧を取り除くことは、「C6  SRAM」に保存されるアーキテクチャ状態が失われることを引き起こしかねず、望ましいことではない。
【０００４】
更に、アーキテクチャ状態がコアの外に保存されるならば、他のメモリへのフラッシュ・オペレーション(又は保存処理)を実行した結果のような場合に、他のコアも電源遮断され且つ保存された状態へのアクセスを得ることができずデータを破壊する虞がないならば、セキュリティの問題は無かった。しかしながら、他のコアが給電されたままである場合、適切に保護されていなければ、それらのコアは、保存されたアーキテクチャ状態にアクセスできてしまう。そのようなアクセスは、貴重なデータの入手又はデータの破壊を招く虞があり、低電力状態から復帰した場合に、コアが以前の状態に戻ることを妨げてしまう。
【図面の簡単な説明】
【０００５】
本発明は、以下に与えられる詳細な記述から、本発明の様々な実施形態についての添付図面から十分に理解されるであろう。しかしながら、本説明は本発明を特定の実施形態に限定するように解釈されるべきではなく、説明及び理解のためのものであるに過ぎない。
【図１】デバイス及びコンピュータ・システムの一形態を示す図。
【図２】「C6  SRAM」フラッシュ・フローの一形態を示す図。
【図３】プロセッサ・コアのクロックを止めるためのフラッシュ・ループ有限状態マシン(finite  state  machine：FSM)を示す図。
【図４Ａ】SRAMリストア・プロセスのフローについての一形態を示す図。
【図４Ｂ】SRAMリストア・プロセスのフローについての一形態を示す図。
【図５】「C6  SRAM」のブロック図。
【発明を実施するための形態】
【０００６】
以下の記述では、本発明のより完全な説明をもたらすために、多くの詳細が述べられる。しかしながら、本発明はそのような具体的な詳細によらずに実施されて良いことが、当業者に認められるであろう。また、周知の構造及びデバイスは、本発明を曖昧にしてしまうことを回避するために、詳細にではなくブロック図形式で示される。
【０００７】
図1はデバイス及びコンピュータ・システムの一形態である。様々な実施形態において、コンピュータ・システムは、デスクトップ・コンピュータ、サーバー・コンピュータ、ラップトップ・コンピュータ、携帯電子デバイス、テレビジョン・セット・トップ・コンピュータ、機器又は乗物の中に統合されたコンピュータ、或いは、以下に説明される様々な実施形態の範囲に収まる何らかの他のタイプの想定可能なコンピュータ・システムであって良い。
【０００８】
多くの実施形態において、コンピュータ・システムはプロセッサ100を含む。プロセッサ100は、マイクロプロセッサ、システム・オン・チップ(SoC)、マイクロコントローラ等を含んで良い。プロセッサ100は、コア102のような単独のコアを含んでも良いし、或いは、コア102及び105(又はそれ以上)のような複数のコアを有して良い。コアは、しばしば、独立したアーキテクチャ状態を管理することが可能な論理部と言及され、それぞれ独立して管理されるアーキテクチャ状態は、少なくとも何らかの専用実行リソースに関連付けられる。コアとは異なり、ハードウェア・スレッド(a  hardware  thread)は、典型的には、独立アーキテクチャ状態を管理することが可能なプロセッサに配置される何らかの論理部を指し、独立して管理されるアーキテクチャ状態は実行リソースに対するアクセスを共有する。キャッシュ・メモリ106もプロセッサ・第に常駐する。一実施形態では、キャッシュ・メモリ106は、レベル1キャッシュ及びレベル2キャッシュ等のようなキャッシュの複数のレベルを含む。更に、プロセッサに複数のコアが存在する場合、キャッシュ・メモリ106の様々なレベルの各々は共有され、或いは、様々な実施形態においてコア毎にキャッシュ・メモリが存在しても良い。
【０００９】
更に、一実施形態において、プロセッサ100は多くの実施形態において統合されたメモリ・コントローラ108を含む。別の実施形態では、メモリ・コントローラ108はコヒーレント・ファブリックの一部分であっても良い。メモリ・コントローラ108は、プロセッサ・メモリ相互接続部によりシステム・メモリ110へ結合される。メモリ・コントローラ108は、コンピュータ・システムにおけるプロセッサ100及び他の何らかのデバイスが、システム・メモリ110へアクセスすることを可能にする。多くの実施形態において、システム・メモリ110は、ダイナミックRAM(DRAM)のようなランダム・アクセス・メモリ、フラッシュ・メモリ又は他の形式のメモリの形式を有しても良い。
【００１０】
多くの実施形態において、プロセッサも個別の入力/出力(I/O)コンプレックス112(a  discrete  input/output  (I/O)  complex  112)に結合される。不図示の他の実施形態において、I/Oコンプレックスはプロセッサに統合されていても良い。I/Oコンプレックス112は、1つ以上の統合されたI/Oホスト・コントローラ(図示せず)を含み、そのI/Oホスト・コントローラは、キーボードや大容量ストレージ・デバイス等がコンピュータ・システムにつながることを許容する。
【００１１】
システムは、プロセッサ100に結合される電圧規制メーター(a  voltage  regulating  meter：VRM)114も含む。VRM114は出力動作電圧をプロセッサに供給する。多くの実施形態では、プロセッサ・コア内の様々なユニットだけでなくプロセッサ内の様々なコンポーネントも、プロセッサ内の様々なパワー・プレーン(different  power  planes)に結合されていても良い。プロセッサ内に設計された1つより多いパワー・プレーンが存在する場合、VRM114は、2つ以上のプレーンへの配分電圧を独立に変更する能力を有していても良い。独立した配分は、プロセッサの一部をパワー・ダウンにする一方、他の部分は給電されたままにすることを許容する。一実施形態では、VRM114は、ゼロ電圧状態へのダウン(down  to  a  zero  voltage  state)を含む1つ以上の信号に応答し、プロセッサ100への電圧を減らす論理部を含んでいても良い。VRM114論理部は、ゼロ電圧状態から出た後に再び、バックアップされたプロセッサ100への電圧を徐々に増やしても良い(又はランピングしても良い)。更に、不図示の他の実施形態では、VRM114がプロセッサ100に統合されていても良い。
【００１２】
何らかの実施形態では、プロセッサ100のうちの1つ以上のコア102及び104は、専用の状態保存スタティックRAM(SRAM)メモリ116を有し、そのメモリは、プロセッサが低電圧状態又はゼロ電圧状態に入る場合に、プロセッサの状態情報を保存するために使用されて良い。一実施形態では、SRAM116は、C6電力状態に入る場合に、プロセッサ・コアの状態を保存するために使用される。
【００１３】
プロセッサ100は、低電圧状態又はゼロ電圧状態へ入ること又はそこから出ることを制御するための電力状態エントリ・エグジット論理部118も含む。各々の電力状態は、VRM114からプロセッサへ供給される動作電圧として使用される特定の電圧を有する。各々の特定の電圧は、電圧ID(a  voltage  ID：VID)値を利用してVRM114にプログラムされる。多くの実施形態において、電力状態VIDは、特定のプロセッサ動作周波数とペアにされる。すなわち、多くの実施形態では、電圧/周波数ペアを保存する電力状態テーブルがコンピュータ・システムに保存される。このテーブルは、プロセッサ100の中、I/Oコンプレックス112のストレージの中、BIOS(ベーシック入/出力システム)122の中、又は、システムの他のファームウェアの中でマイクロコード内に配置されても良い。
【００１４】
多くの実施形態では、コンピュータ・システムが動作可能である場合、オペレーティング・システム124がシステム・メモリ110にロードされる。オペレーティング・システムは、アドバンスト・コンフィギュレーション・パワー・インターフェース(ACPI)126をサポートするためのコードを含んでいても良い。このコードを利用して、オペレーティング・システム124は、電力状態テーブルにアクセスし、そして、様々な電力状態に対する出入りのためにACPIインターフェースを指図しても良い。
【００１５】
多くの実施形態において、I/Oコンプレックス112は電力管理マイクロコントローラ128も含む。これは本願ではPCU128のように言及されても良い。電力管理コントローラ128は状態制御論理部を含み、状態制御論理部は、プロセッサ100に関連するノーマルな電力状態と電力管理状態との間の遷移を制御しても良い。例えば、多くのアーキテクチャ・プロセッサは、C0のように言及されるノーマルな動作状態を有する。電力管理スペクトルの反対側では、多くのアーキテクチャ・プロセッサは、C6と言及されるゼロ電圧プロセッサ「ディープ・スリープ」状態(a  zero  voltage  processor  "deep  sleep"  state)又はC10のような更に深いスリープ状態を有する。
【００１６】
プロセッサがC0状態で動作している時、オペレーティング・システムからのACPIコマンド又はコンピュータ・システムの何処かからのACPIコマンドが、プロセッサ100をC6状態へ落とすために電力管理マイクロコントローラ128へ送信されても良い。同様に、C6状態で動作している場合に、オペレーティング・システムからのACPIコマンド又はコンピュータ・システムの何処かからのACPIコマンドが、プロセッサ100をC10又は他のより深いスリープ状態へ落とすために電力管理マイクロコントローラ128へ送信されても良い。
【００１７】
具体的には、プロセッサをC6又はC10状態へ至らせるステップを開始するために、電力管理マイクロコントローラ128は、プロセッサ100内の電力状態エントリ・エグジット論理部118へ信号を送信しても良い。例えば、プロセッサをC6状態へ送り込む前に、プロセッサは、その状態に入る準備のために幾つかのプロセッサ・サイクルを必要とする。プロセッサ・キャッシュはフラッシュされ、その後に、C6状態に備えてプロセッサ100を準備するために、プロセッサ・アーキテクチャ状態が保存される。いったんプロセッサの準備が整うと、「C0  LFM状態」から「C6状態」へ、少しずつ電圧を下降させること(the  voltage  ramp  down)を開始するために、電力管理マイクロコントローラ128は、VRM114内の電圧スリープ論理部130へ信号を送信して良い。C6状態の間に、状態保存SRAM116のバンク(the  banks)は給電されたままである。
【００１８】
C6状態では、コアに対する電圧及びキャッシュに対する電圧を含むプロセッサ・コア電圧は、プロセッサ100の大部分に対してゼロまで減らされる。更に、コア・クロックはターン・オフにされ、コアに供給する位相ロック・ループ(PLL)はターン・オフにされる。これを達成するため、電力管理マイクロコントローラ128は、プロセッサにシステム・タイマー信号を供給するクロック生成部132を停止するための信号を送信することが可能である。システム・タイマー信号は、所与のレートでプロセッサにタイマー・ティック(timers  ticks)を提供する。
【００１９】
いったんC6状態になると、プロセッサ・コアは、C7-C10のような何れかのディープ・スリープ状態に遷移しても良い。
【００２０】
概して、起動イベントが到来し、電力管理マイクロコントローラ128が起動プロセスを開始するまで、プロセッサ・コアはC6又はC10状態のまま残る。例えば、プロセッサ・コアに供給する電圧をC0状態に至るまで徐々に上昇させ、プロセッサのプロセッサ・コアのアーキテクチャ状態を復旧することにより、C6からC0への起動プロセスが始まる。
【００２１】
プロセッサ・コア状態の保存及びリストア処理
上述したように、SRAM116は、プロセッサ・コアの一部分であり、C6状態へ入る場合にアーキテクチャ状態を保存するために使用される。一実施形態では、プロセッサ・コア102は自身の電力供給を落とす責務を有し、SRAM116はコア自身の一部分であるので、C6電力状態から、C10のような別の電力状態へ遷移する場合に、SRAM116の内容(the  contents)は、プロセッサ・コアにとって外部のメモリに保存される。一実施形態では、その内容は、プロセッサ100にとって外部のメモリ110(例えば、ダイナミックRAM(DRAM))に保存される。一実施形態では、メモリ110のうち上記の内容が保存される部分は、本願では「C10  DRAM」のように言及される。C6状態においてSRAM116のメモリ・バンクが給電されている間に、プロセッサ・コア102の外部にデータを保存することが実行され、なぜなら、SRAM116のメモリ・バンクを含むプロセッサ・コアは、例えばC10のようなより深いスリープ状態へ遷移する場合に電源を落とされるからである。
【００２２】
SRAM116にデータを保存する場合に、プロセッサ・コア102は電力管理マイクロコントローラ128と通信し、SRAM116及びプロセッサ・コア102の外にあるシステム・メモリ110(例えば、「C10  DRAM」)にも双方にデータが書き込まれるべきか否かを判定する。「C10  DRAM」に書き込むことは、他のロケーションに対するSRAM116をフラッシュする場合に生じ得る。従来のコンピュータ・システム実現手段では、「C6  SRAM」から「C10  DRAM」へのデータのフラッシュがなされた場合、全てのコアがスリープであるので、他のコアで動作しているコードが「C10  DRAM」にアクセスし、及び、他のコアの「C6  SRAM」から保存されるデータを破壊してしまう可能性というセキュリティ・リスクは生じない。しかしながら、一実施形態では、プロセッサ102は、より深いスリープ・モードに置かれることが可能であり、SRAM116からのその状態(「C6  SRAM」)をメモリ110(例えば、「C10  DRAM」)に保存させる一方、他のプロセッサ・コア又はコア群は依然として給電され、メモリ110(例えば、「C10  DRAM」)に保存されるSRAM116のアーキテクチャ状態に対するアクセスを得ることが可能である。本願で説明されるこの技術は、あるプロセッサ・コアが、メモリ110内の或るロケーションにアクセスすることを防ぎ、そのロケーションは、他のプロセッサ・コアが「C6  SRAM」からメモリ110へ自身のアーキテクチャ状態データを保存した結果として保存されたデータを包含している。
【００２３】
一実施形態では、「C6  SRAM状態」を保存するプロセスは、C6状態とより深いスリープ状態(例えば、C10)との間の遷移の一部分として、「C6  SRAM」を保存する場合に2つの基本原理を含んでいる。第1に、プロセッサ・コアは電力管理マイクロコントローラ128と通信し、「C6  SRAM」の内容が「C10  DRAM」にフラッシュされる必要があるか否かを判定する。電力管理マイクロコントローラ128は、データが「C10  DRAM」に保存されるべきことを指示しそれによりフラッシュ動作の発生を必要とする命令をオペレーティング・システム124から受信し、その通知をプロセッサ・コアへ送信する。
【００２４】
プロセッサ・コアがより深いスリープ状態から遷移する場合、プロセッサ・コアは、C6状態又はより深いスリープ状態(例えば、C10)から起動しようとしいているのか否かを知る必要がある。状態C6から起動している場合、プロセッサ・コアはリスタートし、「C6  SRAM」から復元する必要がある。C10状態から起動している場合、プロセッサ・コアは、先ず、「C10  DRAM」から「C6  SRAM」へデータを運ぶために「C10  DRAM」からデータを読み込み、その後に、プロセッサ・コアはリスタートし、「C6  SRAM」からオペレーションを復元する。
【００２５】
第2に、セキュリティの目的で、あるコアのアーキテクチャ状態を保存している「C10  DRAM」へアクセスする如何なる試みも、ブロックされる。即ち、ハードウェアが、「C10  DRAM」のベース・アドレスへの保存を終了すると、そこに保存されるアーキテクチャ状態データに関連するプロセッサ・コアのみが、そのロケーションにアクセスすることが可能であり、他の何らかのプロセッサ・コアが「C10  DRAM」内のそのデータへアクセスを試みる場合、そのアクセスはブロックされる。
【００２６】
一実施形態では、プロセッサ・コアに対するオペレーションを実行、フラッシュ及びリストアするために、別個のハードウェア(例えば、有限状態マシン)が使用される。キャッシュの全てのラインが外部メモリ(C10  DRAM)へフラッシュされるまで、ハードウェアは、クロック・サイクル毎にラインのフラッシュを許容する。一実施形態において、ハードウェアは、プロセッサ・コアのマルチ・レベル・キャッシュ・コントローラ(the  multi-level  cache  controller：MLCC)及びSQ内にある。
【００２７】
「C6  SRAM」の内容は、特定のDRAMベース・アドレスでプロセッサ・コアに関して保存される。これは、コアがC6電力状態からより深い電力状態へ遷移する場合に、「C6  SRAM」の内容が保存されるロケーションである。これは、本願では「C6  DRAMベース・アドレス」と言及される。一実施形態では、プロセッサ・コア毎に、異なる「C6  DRAM」ベース・アドレスが算出される。
【００２８】
一実施形態では、特定のプロセッサ・コアに関する「C6  DRAM」ベース・アドレスは2つのロケーションに保存され、1つはプロセッサ・コア自体の内側にあり、1つはプロセッサ・コアのパワー・ドメインの外にある。「C6  DRAM」ベース・アドレスのコピーはプロセッサ・コア自身のレジスタに保存され、プロセッサ・コアは、「C6  SRAM」からDRAMへアーキテクチャ状態データをフラッシュする場合にデータを保存するために使用されるアドレスを取得するために、そのレジスタにアクセスする。「C6  DRAM」ベース・アドレスはプロセッサ・コアの外にも保存され、その理由は、プロセッサ・コアに保存されるコピーは、コアの給電が遮断された後ではもはや利用可能でなく、プロセッサ・コアが、DRAMから再びデータを取得することを可能にするために、復元中にコピーが必要とされるからである。一実施形態では、第2ロケーションは、別のドメインでアドレスを保存するために特定のインターフェース(例えば、シリアル・イベント・バス)を利用して保存される。プロセッサ・コアが、より深い電力状態から再びパワー・アップする場合、「C6  DRAM」ベース・アドレスは、プロセッサ・コアの外にあるロケーションからプロセッサ・コアにより取得され、その後、DRAMにアクセスするためにプロセッサ・コアにより使用される。
【００２９】
「C6  DRAM」ベース・アドレスを保存する処理フローの一実施形態は、以下のオペレーションを含む：
1)  プロセッサ・コア内のマイクロコード(Ucode)が「C6  DRAM」ベース・アドレスを算出する。BIOS段階の間に、ucodeは保護されたDRAMベース・アドレスを読み込み、その後に、現在のコードに関してベース・アドレスを算出する。例えば、ベース・アドレスがA000であり、各々のコアがストレージのうち64KBを取得する場合、core0はベース・アドレスとしてA000を取得し、core1はベース・アドレスとしてA000+64KBを取得し、core2はベース・アドレスとしてA000+126KBを取得する、等々である；
2)  プロセッサ・コアのucodeが、指定されたプロセッサ・コア・レジスタ(ML3_CR_PIC_C6_DRAM_BASE)に「C6  DRAM」ベース・アドレスを書き込む；
3)  マルチ・レベル・キャッシュ(MLC)がレジスタに対する書き込みを検出すると、MLCは、ヘッダ1110「C6  DRAM」ベース・アドレスを有するメッセージ(例えば、C2U  SEBメッセージ)をトリガする；及び
4)  次に、一実施形態ではプロセッサ・コアのために専念するが、プロセッサ・コアの電力ドメインの外にある電力管理エージェント(a  power  management  agent：PMA)が、(例えば、GPSB  CR  CORE_PMA_CR_C6DRAM_ADDRESSのような)特定のロケーションに「C6  DRAM」ベース・アドレスを保存する。
【００３０】
「C6  SRAM」ベース・アドレスを復元するための処理フローの一実施形態は、以下のオペレーションを含む：
1)  C6エグジット毎に、「C6  DRAM」アドレスが専用のプロセッサ・コア・レジスタ(例えば、ML3_CR_PIC_C6_DRAM_BASE)に保存されることを示すメッセージを、プログラム可能な割り込みコントローラ(the  programmable  interrupt  controller：PIC)が取得する。
【００３１】
「C6  SRAM」フラッシュ・フロー
一実施形態では、プロセッサ・コアがC6状態に入るべき場合、最後のスレッドがスリープに向かうまで(例えば、実行するために残っているオペレーションを有しなくなるまで)、電力がプロセッサ・コアに印加されたまま残る。その時点の後、各スレッドは実行するものを残していないことを示し、プロセッサ・コアは電力供給を落とす準備をする。
【００３２】
プロセッサ・コアが電源を落とす準備を整えると、プロセッサ・コアのucodeは、PCU128と通信し、プロセッサ・コアが、プロセッサ・コアのアーキテクチャ状態データを「C6  SRAM」に保存するのみであるか、或いは、「C6  SRAM」から「C10  DRAM」へデータをフラッシュすることも行うのかを示す指示(例えば、新たなビット)を取得する。PCU128は、保護された新たなC状態をプロセッサ・コアへ提供する。プロセッサ・コアにおける全てのスレッドがスリープに向かうと、プロセッサ・コアは、何れが遷移しているか(例えば、C10への遷移)を示すC状態の指示、及び、「C6  SRAM」フラッシュの発生を必要としているか否かに関する指示を取得する。
【００３３】
上記のこれら全ての条件が充足された後、フラッシュが必要であることを示す指示(例えば、新たなビットが設定される)を、プロセッサ・コアが受信すると、「C6  SRAM」のフラッシュが生じる。一実施形態では、フラッシュはインタラプト・ウィンドウが閉じた後でのみ生じ、ウィンドウが閉じることは、プロセッサ・コアが後戻りできない段階にあり(at  a  point  of  no  return)且つノーマル・モード(例えば、C0)へ戻ろうとしていないことを示す。この時点において、書き込みオペレーションがフラッシュをトリガするように生じる。トリガは、SQ及びMLCCにおけるハードウェアが、フラッシュ・オペレーションを実行することを引き起こす。ハードウェアがフラッシュ・オペレーションの実行を完了すると、プロセッサ・コアのucodeは、フラッシュが完了していることを通知するためにPCU128へ書き込みを行う。この時点において、PUC128は、プロセッサ・コアに対する電源を遮断し、「C6  SRAM」のみが電力を有している。
【００３４】
MLCハードウェアの場合、「C6  SRAM」は48KBを含み、ハードウェアがフラッシュ・トリガを受信すると、キャッシュ・ラインの各々を読み込んでそれらをインターフェースによりDRAMへ送るループが存在する。一実施形態において、インターフェースは、1対1インターフェース(例えば、イン・ダイ・インターコネクト(in-die  interconnect：IDI))である。データはキャッシュ不可(uncacheable)としてマークされ、それにより、データが「C10  DRAM」へ進行すると、データは、介在するキャッシュ・メモリにキャッシュされないようになる。データはMLCコントローラに提供され、そのプロセッサ・コアに対して指定されるDRAMベース・アドレスに基づいて、特定の保護されたアレイに保存される。全てのラインが保存された後に、MLCコントローラは、フラッシュが実行されたことを示す指示(例えば、1ビット)を、プロセッサ・コアのucodeに送信する。通知の後に、プロセッサ・コアのucodeは、「C6  SRAM」がフラッシュされたことをPUCに対して書き込む。
【００３５】
図2は「C6  SRAM」フラッシュ・フローの一実施形態を示す。図2に関し、ucodeは、ハードウェアにドレイン(202)を実行させるフェンス・オペレーション(201)を実行し、ドレイン(202)ではプロセッサの全てのハードウェアが自身のアクティビティ(例えば、オペレーション)を完了してアイドルになる。更なるアクティビティが存在しない場合、ハードウェアは、ドレイン終了信号203を送信することにより、更なるアクティビティは生じていないことをucodeに指示する。ドレイン終了信号(203)に応じて、ucodeは、フラッシュを実行し、生じているオペレーションを無効にするためにMLCにトリガを与え、一連の書き込みオペレーションを利用し及び読み込み順序バッファリング(the  read  order  buffering：ROB)及びメモリ順序バッファ(memory  order  buffer：MOB)をディセーブルすることにより、プロセッサ・コアに対する停止クロック・プロセス(204)を実行する(SQ及びMLCCのみがフラッシュ中にクロックされるので、ROB及びMOBはパワー・ダウンされる)(205)。これは、SQ及びMLCCにおけるハードウェアが、フラッシュ・ループを実行することを引き起こす(206)。ハードウェアは、プロセッサ・コア・クロックを停止する(207)(例えば、プロセッサ・コアによりクロックをゲート制御し、プロセッサ・コアのクロックをターン・オフする等)。フラッシュ・ループ(204)及びクロック停止(207)が完了すると、ハードウェアは、フラッシュ・オペレーション及びクロック停止が完了したことを指示するために、ドレイン終了指示を、プロセッサ・コアのucodeへ送信する。フラッシュが実行されたことを指示するドレイン終了指示(208)が受信された後、プロセッサ・コアのクロックは再びイネーブルにされ、ROB及びMOBは、プロセッサ・コアのucodeが、C6エントリ・コードを終了することを許容する。いったんC6エントリ・コードが完了した後、プロセッサ・コアにおけるucodeは、パワー・ダウンされることが可能であることをハードウェアに通知する。
【００３６】
図3は、プロセッサ・コアのクロックを停止させるフラッシュ・ループ有限状態マシン(FSM)を示す。図3を参照すると、アイドル状態301(例えば、C6アイドル状態)から、プロセッサ・コアのucodeは、フラッシュ・オペレーション(WBinvD)をトリガし、ストップ・クロック・リクエスト(330)を送信する。これら2つの入力の後、FSMは、ストップ・クロック・リクエスト状態302に入る。この状態に入ると、MLCは、ドレイン・リクエストを受信することに加えて、存在する全てのフラッシュ(又はリストア)オペレーションがプリフェッチ部から既に送られたこと(即ち、エンプティでないものの先取り)の指示を受信する。その時点において、フラッシュ(又はリストア)プロセスが実行され、プロセッサ・コアのクロックを停止させるリクエストがPICに送信される(340)。これが生じた後、プロセッサ・コアのクロックが止められる停止クロック状態303へ、FSMは遷移する。プロセッサ・コアのプリフェッチ部がエンプティになり且つクロックを開始するリクエストがPICへ送信されるまで、FSMはこの状態のまま残る(320)。これに応答して、FSMはアイドル状態301へ再び遷移する。
【００３７】
図5は「C6  SRAM」のブロック図である。図5に関し、SRAMはメモリ・バンクのアレイを有し、アレイは、何らかの冗長論理部及びパワー・マルチプレクサ(mux)501に加えて、メモリのC6バンクを含む。Mux501は、メモリ・バンクのアレイに電力を印加し、及び、ディープ・スリープ状態(例えば、C10)へ遷移する場合にメモリ・バンクから電力を除去するために使用される。
【００３８】
「C6  SRAM」リストア
コアが起動する場合、プロセッサ・コアの外に保存されている「C6  SRAM」のベース・アドレスが取得され、それにより、プロセッサ・コアは「C10  DRAM」から「C6  SRAM」へ戻ることが可能である。
【００３９】
図4は、SRAMリストア・プロセス・フローの一実施形態を示す。図4を参照すると、コアの外に位置する電力管理エージェント(PMA)が、コアに対する電力管理コントローラである。起動の際、PMAは、「C6  SRAM」から又は「C6  DRAM」からリストア・オペレーションが生じるか否かを判定するように、(PCUを介して)PICへメッセージを送信する(401)。メッセージに応答して、PICは「C6  SRAM」有効ビットを検査するためにブート・ベクトル(a  boot  vector)をデコードし、「C6  SRAM」から又は「C6  DRAM」からリストア・オペレーションが生じるか否かを判定する(402)。有効であった場合、PICは、「C6  SRAM」からのリストアを引き起こすために、プロセッサ・コアのプリフェッチ部へ書き込みを送信する(403)。ビットが有効でない場合、リストア・オペレーションはDRAMから生じ、PICは、DRAMベース・アドレスとともにプリフェッチ部に通知する(404)。アドレスに応答して、プリフェッチ部は、DRAMから再びデータを取得するために、読み込みリクエストのハードウェア・ループを実行する(405)。SQは、読み込みリクエストをマルチレベル・キャッシュ(MLC)へ送信し(406)、その送信は、MLCコントローラ(MLCC)にミスを強制させ(408)、プロセッサ、IDI及びアンコア(uncore)のメモリ・コントローラにより、リクエストをメモリへ向かわせる。IDIにおいて、リクエストは「キャッシュ不可」にマークされ、IDI及びアンコアによりDRAMへ転送される(409)。データも「キャッシュ不可」としてマークされ、それにより、DRAM及び「C6  SRAM」の間の他の何らかのキャッシュ・メモリでデータがキャッシュされないようにし、データが他のエンティティ(例えば、他のプロセッサ・コア)により取得されてしまうことを防ぐ点に留意を要する。
【００４０】
以後、データはアンコアから戻され(410)、SQの強制は全てのキャッシュ・ラインに関するデータにより「C6  SRAM」に対する書き込みオペレーションを満たすことを、全てのデータが「C6  SRAM」へ復元されるまで行う(411)。全てのラインがキャッシュ・メモリに書き込まれた後、SQは、エンプティ・セット指示をPICへ送信し、PICは「C6  SRAM」が今や有効データを含んでいることを示すビットをセットする。このビットがセットされると、プロセッサ・コアのucodeは、「C6  SRAM」からリストア・オペレーションを実行することができる。
【００４１】
「C6  SRAM」ベース・アドレスを復元するための処理フローの一実施形態は、以下のオペレーションを含む：
1)  プロセッサ・コアは、メッセージ(例えば、ブート・ベクトルU2C  SEBメッセージ)を受信し、それをデコードして、実行するように指示されているリセット・タイプを決定する。
【００４２】
2)  リセット・タイプがC10エグジットである場合、プロセッサ・コアは、「C6  SRAM」の内容が有効でない旨の指示(例えば、「C6  SRAM」有効ビット)をリセットする(例えば、a  PIC_CONFIG  bit  C6SRAM_VALID)。
【００４３】
3)  プロセッサ・コアのucodeは、「C6  SRAM」の内容が有効である場合を判定するために、指示のポーリングを実行し始める。「C6  SRAM」の内容が有効ではなく、ucodeがC6状態からエグジットを実行できない場合であって、内容が有効ではない一方「C6  SRAM」アレイの読み込みが禁止されている場合、
3a)  MLCハードウェアは、リセット・タイプに基づいて、「C6  SRAM」の内容を復元するために全てのキャッシュ・ラインのループを動作させる。一実施形態では、これは、6ビットを有するMLCプリフェッチとしてSQへリクエストを送信することにより実行され、その送信は「C6  SRAM」にミスを強制し；IDIインターフェースは、返されるデータが「キャッシュ不可」であることを指示するオペコード(UCRDF)を送信する(それにより、データの介在するキャッシュは生じない)。SQは、全てのラインに関連するデータの強制充填を実行し、完了すると、その内容は有効であることを指示する「C6  SRAM」有効ビットをセットする。
【００４４】
4)  「C6  SRAM」有効ビットがセットされる場合、プロセッサ・コアのucodeは、C6状態から復元することを継続することができる(例えば、プロセッサ・コアがノーマル・オペレーションに戻る場合、C0状態に戻る)。
【００４５】
一実施形態では、上記のプロセスを反復することはセキュリティを増進させ、なぜなら、プロセッサ・コアのucodeは「C6  DRAM」エリアに書き込むことはできないからである。一実施形態において、「C6  DRAM」のアドレス範囲全体がマシン・レジスタに保存され、そのアクセスは禁止される。
【００４６】
第1の例示的な実施形態では、集積回路(IC)は複数のプロセッサ・コア及び電力管理コントローラを有し、複数のプロセッサ・コアは、或るコアのデータを保存するように動作することが可能な第1メモリを有する或るコアを含み、或るコアが第1低電力アイドル状態から第2低電力アイドル状態へ遷移すべき旨の第1指示の受信、及び、或るコアは第1メモリから第2メモリへデータを保存すべき旨の或るコアの外部で生成された第2指示の受信に応答して、或るコアは、前記第1メモリから前記プロセッサの外に位置する第2メモリへデータを保存し、データが保存される第2メモリ内のロケーションは、或るコアによってアクセス可能であるがIC内の他のプロセッサ・コアによってはアクセス可能でなく、及び、電力管理コントローラは、複数のコアに結合され、複数のコアの外に位置する。
【００４７】
別の例示的な実施形態では、第1の例示的な実施形態は、第1メモリはスタティック・ランダム・アクセス・メモリ(SRAM)であり、前記第2メモリはダイナミックRAM(DRAM)であるという特徴を選択的に含むことが可能である。
【００４８】
別の例示的な実施形態では、第1の例示的な実施形態は、第2指示は電力管理コントローラからのものであるという特徴を選択的に含むことが可能である。
【００４９】
別の例示的な実施形態では、第1の例示的な実施形態は、第2指示はオペレーティング・システムからのものであるという特徴を選択的に含むことが可能である。
【００５０】
別の例示的な実施形態では、第1の例示的な実施形態は、第1及び第2メモリ間の如何なる中間的なストレージもデータをキャッシュしないように、データは、データの第2メモリへの保存の一部分としてキャッシュ不可として指定されるという特徴を選択的に含むことが可能である。
【００５１】
別の例示的な実施形態では、第1の例示的な実施形態は、第2メモリ内のロケーションに関連するベース・アドレスが或るコアに保存されるように、ベース・アドレスを保存する或るコア内の第3メモリと、IC内であるが前記或るコアの電力ドメインの外にある第4メモリとを有し、そのロケーションは、第2低電力アイドル状態から第1低電力アイドル状態へ戻る遷移の際に、第1メモリへデータを戻すのに使用するベース・アドレスを或るコアへ提供するためにアクセスされる、という特徴を選択的に含むことが可能である。
【００５２】
別の例示的な実施形態では、第1の例示的な実施形態は、或るコアに関連し及び或るコアの電力ドメインの外にあり、且つ、ベース・アドレスを或るコアへ提供する際にプロセッサ内の他の何れのコアにも関連しない電力管理エージェントを有するという特徴を選択的に含むことが可能である。
【００５３】
第2の例示的な実施形態では、システムは、ダイナミック・ランダム・アクセス・メモリ(DRAM)と、DRAMに結合され1つ以上のコアを有するプロセッサとを有し、1つ以上のコアのうちの少なくとも何れかのコアは、或るコアのアーキテクチャ状態データを保存するように動作することが可能なSRAM有し、或るコアが第1スリープ状態から現在のスリープ状態より深いスリープ状態へ遷移すべき旨の第1指示の受信、及び、或るコアはSRAMからDRAMへアーキテクチャ状態データを保存すべき旨の或るコアの外部で生成された第2指示の受信に応答して、或るコアは、第1低電力アイドル状態から第2低電力アイドル状態への遷移を制御し、その制御は、SRAMからDRAMへアーキテクチャ状態データを書き込むことを含み、アーキテクチャ状態データが保存されるDRAM内のロケーションは、或るコアによってアクセス可能であるがプロセッサ内の他のプロセッサ・コアによってはアクセス可能でない。
【００５４】
別の例示的な実施形態では、第2の例示的な実施形態は、第2指示プロセッサ内にはあるが或るコアの外にある電力管理ユニットからのものであるという特徴を選択的に含むことが可能である。
【００５５】
別の例示的な実施形態では、前記第2指示はオペレーティング・システムからのものであるという特徴を選択的に含むことが可能である。
【００５６】
別の例示的な実施形態では、第2の例示的な実施形態は、SRAM及びDRAM間の如何なる中間的なストレージもアーキテクチャ状態データをキャッシュしないように、アーキテクチャ状態データは、アーキテクチャ状態データのDRAMへの保存の一部分としてキャッシュ不可として指定されるという特徴を選択的に含むことが可能である。
【００５７】
別の例示的な実施形態では、第2の例示的な実施形態は、DRAM内のロケーションに関連するベース・アドレスは、或るコアの中に保存され且つ或るコアの電力ドメインの外にあるプロセッサ内の場所に保存され、そのロケーションは、第2低電力アイドル状態から第1低電力アイドル状態へ戻る遷移の際に、SRAMへアーキテクチャ状態データを戻すのに使用するベース・アドレスを或るコアへ提供するためにアクセスされるという特徴を選択的に含むことが可能である。
【００５８】
別の例示的な実施形態では、第2の例示的な実施形態は、或るコアに関連し及び或るコアの電力ドメインの外にあり、且つ、ベース・アドレスを或るコアへ提供する際にプロセッサ内の他の何れのコアにも関連しない電力管理エージェントを有するという特徴を選択的に含むことが可能である。
【００５９】
第3の例示的な実施形態における方法は、集積回路(IC)内のプロセッサ・コアが、プロセッサ・コアは第1スリープ状態からより深いスリープ状態へ遷移すべき旨の第1指示を受信すること；プロセッサ・コアは、プロセッサ・コアの第1メモリからICの外に位置する第2メモリへデータを保存すべきか否かを指示する、プロセッサ・コアの外部で生成された第2指示を受信すること；及び、第2指示に応答して、第1メモリから第2メモリへデータを書き込む書き込みオペレーションを実行することであって、データが保存される第2メモリ内のロケーションは、プロセッサ・コアによってアクセス可能であるがIC内の他のプロセッサ・コアによってはアクセス可能でない、ことを有する。
【００６０】
別の例示的な実施形態では、第3の例示的な実施形態は、第1メモリはスタティック・ランダム・アクセス・メモリ(SRAM)であり、第2メモリはダイナミックRAM(DRAM)であるという特徴を選択的に含むことが可能である。
【００６１】
別の例示的な実施形態では、第3の例示的な実施形態は、第2指示はIC内の電力制御ユニットからのものであるという特徴を選択的に含むことが可能である。
【００６２】
別の例示的な実施形態では、第3の例示的な実施形態は、第2指示はオペレーティング・システムからのものであるという特徴を選択的に含むことが可能である。
【００６３】
別の例示的な実施形態では、第3の例示的な実施形態は、第1及び第2メモリ間の中間的なストレージがデータをキャッシュしないように、第1メモリからのデータをキャッシュ不可として指定することを有するという特徴を選択的に含むことが可能である。
【００６４】
別の例示的な実施形態では、第3の例示的な実施形態は、プロセッサ・コアの第2メモリ内のロケーション、及び、プロセッサ・コアの電力ドメインの外にあるIC内の別のロケーションに関連するベース・アドレスを保存することを有するという特徴を選択的に含むことが可能である。
【００６５】
別の例示的な実施形態では、第3の例示的な実施形態は、第1メモリ又は第2メモリからリストア・オペレーションを実行するか否かについての第3指示を確認すること；第3指示に基づいて、データが前記第2メモリから戻されるべきことを決定すること；反復的に、データの一部を取得するためプリフェッチとしてリクエストを送信し、第1メモリについてのミスを強制し、第2メモリからデータを取得するために、データ・リクエストが第2メモリへ送信されることを引き起こすこと；及び、第1メモリは有効データを含んでいる旨の第4指示を、プロセッサ・。コアに通知するために設定すること；により、第2メモリから第1メモリへデータを戻すという特徴を選択的に含むことが可能である。
【００６６】
第4の例示的な実施形態では、製品が命令を保存する1つ以上の非一時的なコンピュータ読み取り可能な記憶媒体を有し、命令は、システムにより実行される場合に、プロセッサ・コアのデータ保存を制御する方法を実行し、その方法は、集積回路(IC)内のプロセッサ・コアが、プロセッサ・コアは第1スリープ状態からより深いスリープ状態へ遷移すべき旨の第1指示を受信すること；プロセッサ・コアは、プロセッサ・コアのSRAMからICの外に位置するDRAMへデータを保存すべきか否かを指示する、プロセッサ・コアの外部で生成された第2指示を受信すること；及び、第2指示に応答して、SRAMからDRAMへデータを書き込む書き込みオペレーションを実行することであって、データが保存されるDRAM内のロケーションは、プロセッサ・コアによってアクセス可能であるがIC内の他のプロセッサ・コアによってはアクセス可能でない、ことを有する。
【００６７】
別の例示的な実施形態では、第4の例示的な実施形態は、上記の方法が、第1及び第2メモリ間の中間的なストレージがデータをキャッシュしないように、第1メモリからのデータをキャッシュ不可として指定することを更に含むという特徴を選択的に含むことが可能である。
【００６８】
別の例示的な実施形態では、第4の例示的な実施形態は、上記の方法が、プロセッサ・コアの第2メモリ内のロケーション、及び、プロセッサ・コアの電力ドメインの外にあるIC内の別のロケーションに関連するベース・アドレスを保存することを更に有するという特徴を選択的に含むことが可能である。
【００６９】
上記の詳細な説明のうち或る部分は、コンピュータ・メモリ内のデータ・ビットに対する操作の象徴的な表現及びアルゴリズムの観点から提示される。これらアルゴリズム的な記述及び表現は、データ処理の分野における当業者が彼らの仕事内容を他の当業者へ最も効率的に伝えるために使用される手段である。ここで、アルゴリズムは、一般に、所望の結果をもたらす一貫した一連のステップであると考えられる。ステップは、物理量についての物理的な処理を要するものである。通常、必須ではないが、これらの量は、保存、転送、結合、比較その他の処理を行うことが可能な電気的又は磁気的な信号の形式をとる。主に一般的な利用の理由から、これらの信号を、ビット、値、要素、シンボル、キャラクタ、期間、数などのように言及することは、しばしば便利であることが判明している。
【００７０】
しかしながら、これら及び類似する用語の全てが、適切な物理的な量に関連付けられるべきであり、これらの量に適用される単なる便宜的なラベルに過ぎないことに、留意すべきである。明示的な別意の言及がない限り、本説明から明らかなように、本説明を通じて、「処理する」、「演算する」、「計算する」、「決定する」又は「表示する」等のような用語を使用する説明は、コンピュータ・システム又は類似する電子コンピューティング・デバイスのアクション及びプロセスを指し、そのアクション等は、コンピュータ・システムのレジスタ及びメモリ内の物理的(電子的)な量として表現されるデータを、コンピュータ・システム・メモリ又はレジスタ又は他のそのような情報ストレージ、送信又は表示デバイス内の物理量として同様に表現される他のデータに処理及び変換するものであることが、認められる。
【００７１】
本発明は、本願におけるオペレーションを実行する装置にも関連する。この装置は、要求される目的に対して特別に構成されても良いし、或いは、コンピュータに保存されるコンピュータ・プログラムにより選択的に作動又は再構築される汎用コンピュータを有しても良い。そのようなコンピュータ・プログラムは、コンピュータ読み取り可能な記憶媒体に保存されても良く、記憶媒体は、限定ではなく例示として、フロッピ・ディスク、光ディスク、CD-ROM及び磁気光ディスクを含む何らかのタイプのディスク、リード・オンリ・メモリ(ROMs)、ランダム・アクセス・メモリ(RAMs)、EPROMs、EEPROMs、磁気又は光カード、或いは、電子命令を保存するのに相応しい何らかのタイプの媒体であり、それらはコンピュータ・システム・バスに結合される。
【００７２】
本願で提示されるアルゴリズム及び表示は何らかの特定のコンピュータ或いは他の装置に固有に関連付けられてはいない。様々な汎用システムは、本願における教示に従うプログラムとともに使用されても良いし、或いは、必要な方法ステップを実行するように更に特化された装置を構成することが有用であることが判明するかもしれない。これら様々なシステムに必要な構造は本説明から明らかになるであろう。更に、本発明は何らかの特定のプログラミング言語に関連して説明されてはいない。本願で説明される本発明の教示を実現するために、様々なプログラミング言語が使用されて良いことが、認められるであろう。
【００７３】
マシン読み取り可能な媒体は、マシン(例えば、コンピュータ)により読み取ることが可能な形式で情報を保存及び伝達する任意のメカニズムを含む。例えば、マシン読み取り可能な媒体は、リード・オンリ・メモリ(ROM)；ランダム・アクセス・メモリ(RAM)、磁気ディスク・ストレージ媒体；光ストレージ媒体；フラッシュ・メモリ・デバイス等を含む。
【００７４】
上記の説明を理解した後、本発明の多くの代替例及び変形例は間違いなく当業者に明らかになる一方、例示により図示及び説明される如何なる特定の実施形態も、決して限定的に解釈されるべきでないことが、理解されるべきである。従って、様々な実施形態の詳細事項への言及は、本発明に対して必須事項とされる特徴のみをそれ自体が記載している特許請求の範囲を限定するようには意図されていない。
【図１】
2018526705.tif 000003
【図２】
2018526705.tif 000004
【図３】
2018526705.tif 000005
【図４Ａ】
2018526705.tif 000006
【図４Ｂ】
2018526705.tif 000007
【図５】
2018526705.tif 000008
【国際調査報告】
2018526705.tif 000009
2018526705.tif 000010