(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-07-17
(45)【発行日】2024-07-25
(54)【発明の名称】低電力プロセッサ状態のための自律コアペリメータ
(51)【国際特許分類】
G06F 1/3287 20190101AFI20240718BHJP
G06F 1/3206 20190101ALI20240718BHJP
G06F 9/48 20060101ALI20240718BHJP
G06F 1/324 20190101ALI20240718BHJP
【FI】
G06F1/3287
G06F1/3206
G06F9/48 350Z
G06F1/324
(21)【出願番号】P 2021557072
(86)(22)【出願日】2020-02-28
(86)【国際出願番号】 US2020020411
(87)【国際公開番号】W WO2020205114
(87)【国際公開日】2020-10-08
【審査請求日】2023-02-27
(32)【優先日】2019-03-30
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】593096712
【氏名又は名称】インテル コーポレイション
(74)【代理人】
【識別番号】100107766
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】ゲンドラー,アレクサンダー
(72)【発明者】
【氏名】アイジック,ヨニ
(72)【発明者】
【氏名】ラネル,チェン
(72)【発明者】
【氏名】メラメド,イド
(72)【発明者】
【氏名】ヴァイベルマン,エドワード
【審査官】豊田 真弓
(56)【参考文献】
【文献】特表2018-526705(JP,A)
【文献】特開2016-076257(JP,A)
【文献】特開平04-014160(JP,A)
【文献】特表2002-509302(JP,A)
【文献】米国特許出願公開第2013/0124804(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 1/3287
G06F 1/3206
G06F 9/48
G06F 1/324
(57)【特許請求の範囲】
【請求項1】
マルチコアプロセッサであって、
2つ以上のコアであり、各コアが、マイクロコントローラを含み且つ自律コアペリメータロジックに結合されている、2つ以上のコアと、
各自律コアペリメータロジックと通信する回路であり、当該プロセッサを低電力状態に置くための信号の受信に基づいて、
前記2つ以上のコアのうちの少なくとも1つのコアの前記マイクロコントローラを停止させ、
前記2つ以上のコアのうちの第1のコアの前記マイクロコントローラからファームウェアコードを保存し、且つ
前記2つ以上のコアの各々の前記マイクロコントローラから状態情報を保存する、
ように適応された回路と、
を有し、
前記回路は更に、前記プロセッサを前記低電力状態から戻すための信号の受信に基づいて、
全ての前記コアに前記ファームウェアコードを復元し、且つ
各コアにそれぞれの前記状態情報を復元する、
ように適応されている、
プロセッサ。
【請求項2】
前記回路は、メモリユニットと通信し、前記ファームウェアコード及び前記状態情報を前記メモリユニットに格納する、請求項1に記載のプロセッサ。
【請求項3】
前記回路は、ダイ内インタフェース上で前記メモリユニットと通信する、請求項2に記載のプロセッサ。
【請求項4】
前記回路は更に、バブル生成先入先出(FIFO)構造を用いて前記メモリユニットと通信する、請求項3に記載のプロセッサ。
【請求項5】
前記回路は電力管理エージェントを有する、請求項1乃至4のいずれかに記載のプロセッサ。
【請求項6】
前記自律コアペリメータロジックはファブリックインタフェースロジックを有する、請求項1乃至5のいずれかに記載のプロセッサ。
【請求項7】
前記回路は、前記ファームウェアコード及びそれぞれの前記状態情報が保存された後に前記マイクロコントローラを再開させる、請求項1乃至6のいずれかに記載のプロセッサ。
【請求項8】
当該プロセッサはシステム・オン・チップ(SoC)を有する、請求項1乃至7のいずれかに記載のプロセッサ。
【請求項9】
プロセッサ内の回路によって実行可能な命令を含んだ非一時的なコンピュータ読み取り可能媒体(CRM)であって、前記命令は、実行されるときに前記回路に、
複数の処理コアのうちの第1の処理コアに付随するコアペリメータロジックに含まれるマイクロコントローラを停止させ、前記複数の処理コアの各々にコアペリメータロジックが付随し、前記複数の処理コアが共通のマイクロコントローラファームウェアコードを共有しており、
前記コアペリメータロジックの前記マイクロコントローラからの状態情報を保存させ、
前記マイクロコントローラファームウェアコードが保存されているかを決定させ、
前記マイクロコントローラファームウェアコードが保存されていない場合、前記コアペリメータロジックの前記マイクロコントローラからの前記マイクロコントローラファームウェアコードを保存させる、
CRM。
【請求項10】
前記命令は前記回路に更に、少なくとも前記状態情報が保存されたら前記マイクロコントローラを再開させる、請求項9に記載のCRM。
【請求項11】
前記命令は、前記プロセッサを低電力状態に置くための信号の受信を受けて前記回路によって実行される、請求項10に記載のCRM。
【請求項12】
前記命令は前記回路に更に、前記プロセッサを低電力状態に置くことを中止するための信号の受信を受けて前記マイクロコントローラを再開させる、請求項11に記載のCRM。
【請求項13】
前記命令は前記回路に更に、前記状態情報及び前記マイクロコントローラファームウェアコードをメモリユニットに保存させる、請求項
11又は12に記載のCRM。
【請求項14】
前記命令は、前記プロセッサを前記低電力状態から起こすための信号の受信を受けて、前記回路に更に、
前記コアペリメータロジックについての前記状態情報及び前記マイクロコントローラファームウェアコードを前記メモリユニットから取り出させ、
前記マイクロコントローラファームウェアコード及び前記状態情報を前記コアペリメータロジックの前記マイクロコントローラに復元させ、且つ
前記マイクロコントローラを再開させる、
請求項13に記載のCRM。
【請求項15】
マルチコアプロセッサについて電力状態を管理するシステムであって、
各コアが自律コアペリメータに結合された複数のコアと、
各自律コアペリメータのファームウェアコード及び状態情報を保管するように構成された回路と、
前記回路とデータ通信するメモリユニットと、
を有し、
前記回路は、前記プロセッサを低電力状態に置くための信号の受信に基づいて、前記メモリユニットに、前記複数のコアの第1の自律コアペリメータからの状態情報及びまだ保存されていない場合の前記ファームウェアコードを保存するとともに、前記複数のコアの残りの自律コアペリメータの各々についての状態情報を保存するように適応されている、
システム。
【請求項16】
前記自律コアペリメータはファブリックインタフェースロジックを有する、請求項
15に記載のシステム。
【請求項17】
前記回路は電力管理エージェントを有する、請求項
15又は
16に記載のシステム。
【請求項18】
前記電力管理エージェントは、ダイ内インタフェース上で前記メモリユニットと通信する、請求項
17に記載のシステム。
【請求項19】
前記回路は、前記プロセッサを前記低電力状態から戻すための信号の受信に基づいて、
前記第1の自律コアペリメータから保存された前記ファームウェアコードを、前記複数のコアの各自律コアペリメータに復元し、且つ
前記複数のコアの各自律コアペリメータにそれぞれの前記状態情報を復元する、
ように適応されている、請求項
15乃至
18のいずれかに記載のシステム。
【請求項20】
前記回路は更に、前記プロセッサを低電力状態に置くための前記信号の受信に基づいて各自律コアペリメータを停止させるとともに、前記プロセッサを前記低電力状態から戻すための前記信号の受信に基づいて各自律コアペリメータを再開させる、請求項
19に記載のシステム。
【請求項21】
前記ファームウェアコード及び前記状態情報は、各自律コアペリメータの一部を有するマイクロコントローラに付随する、請求項
15乃至
20のいずれかに記載のシステム。
【請求項22】
集積回路であって、
複数の処理手段と、
メモリ手段と、
前記複数の処理手段の各々に結合されるとともに前記メモリ手段に結合されて、各処理手段に付随する状態情報及びファームウェアコードを前記メモリ手段に格納する手段と、
を有し、
当該集積回路を低電力状態に置くための信号の受信を受けて、ファームウェアコード及び状態情報を格納する前記手段は、
前記複数の処理手段のうちの1つからの前記ファームウェアコードを、まだ格納されていない場合に、前記メモリ手段に格納し、且つ
前記複数の処理手段の各々からの前記状態情報を前記メモリ手段に格納する、
集積回路。
【請求項23】
当該集積回路を前記低電力状態から再開させるための信号の受信を受けて、ファームウェアコード及び状態情報を格納する前記手段は、
前記ファームウェアコードを前記メモリ手段から取り出して前記複数の処理手段の各々にロードし、
前記複数の処理手段の各々についての前記状態情報を前記メモリ手段から取り出し、且つ
前記複数の処理手段の各々の前記状態情報をそれぞれの処理手段にロードする、
請求項
22に記載の集積回路。
【請求項24】
前記複数の処理手段の各々がコントローラ手段を含み、該コントローラ手段にそれぞれの処理手段の前記状態情報が付随する、請求項
22又は
23に記載の集積回路。
【発明の詳細な説明】
【技術分野】
【0001】
この出願は、2019年3月30日に出願された“AUTONOMOUS CORE PERIMETER FOR LOW POWER PROCESSOR STATES”と題する米国特許出願第16/370,950号に対する優先権を主張する。
【0002】
ここに記載される実施形態は、概して、コンピュータプロセッサの分野に関する。特に、マルチコアプロセッサのコアが低電力状態に置かれたりそれから戻されたりすることを可能にする装置及びシステムが開示される。
【背景技術】
【0003】
今のプロセッサアーキテクチャは、1つ以上の内部処理コアを使用することが多く、各処理コアが、コア処理ロジックと、様々な付随するサポートブロック、タイマ、バス、及び類似の構造とを含むことができる。コア処理ロジックは、単純化されたセットのマイクロオペレーションを処理することができ、プロセッサの外を向いた命令セットアーキテクチャ(ISA、例えばx86-64)を当該コア処理ロジックによって使用される内部マイクロオペレーションに変換するためのロジックを提供するマイクロアーキテクチャを使用することができる。さらにはまた、多くの今のプロセッサは、様々な節電モードを可能にするために、多様な電力レベルを提供するように構成されている。マイクロアーキテクチャは、ISAと内部マイクロオペレーションとの間の変換に加えて、各処理コアを要求された電力レベルに移行させることを調整したりその他の方法で支援したりすることがある。
【図面の簡単な説明】
【0004】
【
図1】様々な実施形態に従った、自律コアペリメータを実装する例えばマルチコアプロセッサなどのシステム例のコンポーネントの一部のブロック図である。
【
図2】様々な実施形態に従った、
図1のシステムからのコアの一例のブロック図である。
【
図3】様々な実施形態に従った、パッケージ低電力状態に遷移するときに
図1のシステム例によって実行され得る様々な動作のフローチャートである。
【
図4】様々な実施形態に従った、パッケージ高電力状態に遷移するときに
図1のシステム例によって実行され得る様々な動作のフローチャートである。
【
図5】様々な実施形態に従った、
図1のシステムの1つ以上のコンポーネント及び/又は
図3若しくは4の1つ以上の動作を実装するのに使用され得るコンピュータ読み取り可能媒体を示している。
【
図6】様々な実施形態に従った、ここに記載される装置及び方法を使用するように構成されるシステム例を示している。
【発明を実施するための形態】
【0005】
今のプロセッサは、複数の処理コアを含むことができ、各処理コアが様々な低電力状態に入ることが可能である。様々な状態がより積極的な節電へと進むにつれて、ますます多くのプロセッサコンポーネントがパワーダウンされることがある。また、各コアが複数の電力状態を持つことに加えて、(例えばマルチコアプロセッサパッケージなどにおいて)パッケージ全体も複数の電力状態を持つことがある。より深い/より積極的なパッケージ状態は、電力ゲーティング機構を介してコア全体をパワーダウンさせ得る。マルチコアプロセッサは、異なるコンポーネントに電力供給する複数の電力レールを備えて構成されることができ、一部の実装において、これら様々な電力レールのうちの1つ以上(例えば、全て)が電力ゲーティングされることが可能である。
【0006】
マイクロアーキテクチャを採用する数多くの今のプロセッサは、各コアに付随したマイクロコントローラを用いて、例えば、ISA演算を内部マイクロオペレーションへと復号すること、(内部又は一時的レジスタを含み得る)コアレジスタファイルを管理すること、キャッシュ管理、及び様々な他の内部コア機能を提供することなどの、そのコアに関する様々なタスクを処理する。一部の実施形態において、タスクを有効にするために、コアのマイクロコントローラによってファームウェアが実行されることがあり、一部の例において、このファームウェアは、必要最低限のものだけのオペレーティングシステム(OS)であると見なされ得る。多くのオペレーティングシステムと同様に、ファームウェアも、例えば、一時レジスタファイル、過渡的なマシン状態及びステータス、命令の並べ替えを可能にするバッファなどの、様々な動作状態に関する情報を維持するために、何らかの形態のローカルストレージを必要とし得る。実施形態において、マイクロコントローラは、製造時又はシステムアセンブリ前に予めロードされたファームウェアを含んでおり、プロセッサ初期化時に自動的にロードする。このファームウェアは、“マイクロコード”と呼ばれることがある。さらに、一部の実装は、(読み出し専用メモリに格納された固定マイクロコードとは対照的に)更新されたファームウェア(“acode”又は“a-コード”と呼ばれることがある)が各コアに動的にロードされることを可能にして、プロセッサの寿命にわたってのファームウェアの(及び結果としてコアの)改良、パッチ、及び他の調整を可能にし得る。一部の例において、a-コードファームウェアは、例えばMicrosoft Windows(登録商標)又はmacOS(登録商標)などのマシンOSが起動するときにオペレーティングシステムドライバを介して更新され得る。
【0007】
マルチコアプロセッサの各コアは、多様なバス上で内部及び外部のモジュールと通信する。さらに、マルチコアプロセッサの様々なコンポーネントは、異なるクロック周波数で動作し得る。例えば、個々のコアは、数ギガヘルツ(GHz)のクロック速度で動作して命令を実行することが可能であり得る。各コアの他のコンポーネントは、数百メガヘルツ(MHz)の範囲内の、より遅いクロック速度で動作してもよい。これら様々なコンポーネントを、1つ以上の内部バスを介して互いに結び付けることができる。所与のバスによって相互接続されるコンポーネントに依存して、バスは数百MHzから数GHzまでの速度で動作し得る。一般的原理として、所与のバスは、そのバスを介して接続される全てのコンポーネントがそのバスを横切って信頼性高く通信することを可能にする速度で動作する必要がある。従って、GHzレンジで動作する内部コアコンポーネントを相互接続するバスはGHzレンジで動作することができるとし得る一方で、MHzレンジで動作する1つ以上のコンポーネントを相互接続するバスはMHzレンジで動作する必要があるとし得る。
【0008】
例えばシリアル、8ビット、64ビット、256ビットなどといった、所与のバスの幅は、例えば接続されるコンポーネントの能力、バス速度、バス伝送タイプ(例えば、シリアル又はパラレル)、及び利用可能なダイスペースなどの様々な要因に応じて様々となり得る。所与のクロック速度で、ワイドなパラレルバスは、典型的に、狭いバス又はシリアルバスよりも多くのデータを伝送することができる。逆に、より狭いバス、シリアルバス、及び/又はより短い長さのバスは、典型的に、より広い及び/又はより長いバスと比較して高いクロック速度で駆動されることができる。コア内の内部コンポーネントを相互接続するバスは典型的に、コア内でのデータの迅速で低遅延の転送を可能にするよう、相対的に高速な且つ/或いは広いバスである。例えば、コア間通信や、例えば外部キャッシュメモリ、メインシステムメモリ、及び入力/出力(I/O)サブシステムなどの、プロセッサダイの外部のコンポーネントとの通信といった、コアを外部コンポーネントとインタフェースさせるバスは、典型的に、内部コアバスの速度の何分の一とし得る速度で動作する。
【0009】
これらのバス制限のために、所与のコアと外部コンポーネントとの間の通信は、典型的に、比較的高速/ワイドなバス上で扱われるとし得るコア内通信と比較して有意なレイテンシを招く。従って、動作状態情報及び/又はファームウェアを維持するためにコアの外部のストレージに頼ることは、許容できないほど遅いプロセッサ性能をもたらすことになる。従って、各プロセッサコアが、動作状態情報と動的にロードされるファームウェアイメージとの両方のデータを維持するために、例えばダイナミックランダムアクセスメモリ(DRAM)又は他の好適なメモリファイル若しくはユニットなどの、コア内に位置するストレージを当てにすることがある。このストレージは、レイテンシを最小化するためにワイド/高速な内部バス上に位置付けられることができる。
【0010】
その性質に起因して、DRAM及び類似のメモリタイプは、格納したコンテンツが保持されることを確保するために一定の電力を必要とすることが多く、電力の喪失はデータの喪失をもたらす。メモリに供給する電力レールは、コアが、及びその後にマイクロプロセッサパッケージが、より深い節電状態に置かれるときに、電力ゲーティングされ得る。
って、メモリを供給する電力レールがゲーティングされることになる場合、コアが高めの電力状態から低めの電力状態に遷移されてコア実行が一時停止又はその他で停止されるときに、動作状態及び/又はファームウェアイメージがコアの外部のストレージに保存される必要があるとし得る。そうしないと、プロセッサが電力復旧時に実効的にリセットされることをもたらし、ファームウェアイメージをロードし直す必要があり、プロセッサが再初期化される。このようなプロセスは、最良でも、プロセッサが節電モードに置かれるたびに許容できないレイテンシを生じさせ、最悪の場合、システムリブートを招くことなく低電力モードに置かれることができないプロセッサをもたらす。
【0011】
プロセッサが電力供給されている間に動作状態及び/又はファームウェアを外部ストレージに保存することで、プロセッサを低電力状態に置くことが可能になる。コア内のストレージは、電源を落とされることができ(結果として情報の喪失を伴う)、後に、電源投入時に、各コアを完全に再初期化する必要なく、その動作状態に復元されることができる。しかしながら、上述したように、コア又はプロセッサパッケージの外部のストレージにアクセスしてそこから情報を復元することは、かなりのレイテンシを招く。このレイテンシは、しばしば、比較的稀であることに基づけば許容できるが、このようなマイクロプロセッサを採用するシステム設計者は、より大きい電力引き出し(及び、モバイル実装の場合、付随するバッテリー寿命の短縮)という犠牲を伴ってでも、受け入れ可能な性能を達成するために、さもなければポータブル装置におけるバッテリー寿命を保つ助けとなり得るものである低電力状態にマイクロプロセッサを置くことを見送る必要があることがある。
【0012】
保存及びその後の復元のレイテンシ時間は典型的に、外部ストレージから取り出されて各コアに戻されなければならないデータの量に関係する。上述のように、データは、各プロセッサコアの動作状態情報と、ファームウェアイメージのコピーとの、2つの主なコンポーネントを有し得る。これら2つのコンポーネントのうち、動作状態情報は、大抵の実装において各プロセッサコアに固有である一方で、ファームウェアイメージは、全てのコアにわたって同じである。さらに、動作状態情報は、ファームウェアイメージと比較して相対的に少量のデータを有する。転送されるデータの量を最小限の量に制限することで、レイテンシを最小限に保つ助けとなることができる。従って、ファームウェアイメージの単一コピーはあるが、データ転送を、各コアに対して固有の動作状態情報に限ることにより、深い節電状態をひとまとめにする保存及び復元に関するレイテンシ時間を最小限に保つことができ、それ故に、受け入れ可能な性能をなおも維持しながら、よりいっそう頻繁にプロセッサを深い節電状態に置くことが可能になる。
【0013】
開示される実施形態は、自律コアペリメータ(autonomous core perimeter)に向けられたシステム及び装置を含む。自律コアペリメータは、マルチコアマイクロプロセッサのコアに付随し、マイクロコントローラ状態情報及びファームウェアイメージを保持するコア構造と、1つ以上の(コアに対して)外部のバス及びメモリユニットとの間のインタフェースとなるように適応される。自律コアペリメータは、より低い電力状態に遷移するようにコアにシグナリングされたときに、マイクロコントローラ状態情報を保存することをコーディネートする。さらに、自律コアペリメータは、ファームウェアイメージが保存されているかを決定し、別のコアによって既に保存されているのでない場合に、ファームウェアイメージを保存する。同様に、より高い電力状態に戻るようにコアにシグナリングされたときに、自律コアペリメータは、マイクロコントローラ状態情報及びファームウェアイメージのコピーを取り出して復元することをコーディネートして、コアが実行を再開することを可能にする。一部の実施形態において、ファームウェアイメージは、ファームウェアイメージの何度もの転送を防止するために、外部ストアから一度に取り出されて、各プロセッサコアに同時に読み込まれ得る。一部の実施形態において、マルチコアプロセッサの各コアがそれ自身に付随する個別の自律コアペリメータを含む。他の実施形態において、複数のコアが単一の自律コアペリメータに取り付けられてもよく、該単一の自律コアペリメータが、より高い電力状態に戻る際に取り付けられた全てのコアに配布されるファームウェアイメージの単一のコピーとともに、取り付けられた各コアの固有の状態情報の記憶及び取り出しをコーディネートするように適応される。
【0014】
ここの説明では、当業者が自身の仕事の内容を他の当業者に伝えるために一般に使用する用語を用いて、例示的な実装の様々な態様が説明される。しかしながら、当業者に明らかなことには、本開示の実施形態は、記載される態様のうちの一部のみを用いて実施されてもよい。例示的な実装の完全なる理解を提供するために、説明目的で、具体的な数、材料及び構成が説明される。しかしながら、当業者に明らかなことには、本開示の実施形態はそのような具体的な詳細事項を用いずに実施されてもよい。また、例示的な実装を不明瞭にしないよう、周知の機構は省略あるいは単純化されている。
【0015】
以下の詳細な説明では、この一部を形成する添付の図面を参照する。図面においては、全体を通して、似通った参照符号が同様の部分を指し示し、また、本開示に係る事項が実施され得る実施形態が例として示される。理解されるべきことには、他の実施形態が使用されてもよく、また、本開示の範囲を逸脱することなく構造的又は論理的な変更が為され得る。従って、以下の詳細な説明は、限定的な意味でとられるべきでなく、実施形態の範囲は、添付の請求項及びそれらに均等なものによって定めらる。
【0016】
本開示の目的では、“A及び/又はB”なる言い回しは、(A)、(B)、又は(A及びB)を意味する。本開示の目的では、“A、B、及び/又はC”なる言い回しは、(A)、(B)、(C)、(A及びB)、(A及びC)、(B及びC)、又は(A、B及びC)を意味する。
【0017】
この説明は、例えば頂部/底部、内/外、上/下、及びこれらに類するなどの透視ベースの説明を使用することがある。そのような説明は、単に説明を容易にするために使用されるに過ぎず、ここに記載される実施形態の適用を何らかの特定の向きに限定することを意図するものではない。
【0018】
この説明は、“一実施形態において”又は“実施形態において”なる言い回しを使用するが、これらは各々、同じ又は異なる実施形態のうちの1つ以上を指すものであるとし得る。また、“有する”、“含む”、“持つ”、及びこれらに類する用語は、本開示の実施形態に関して使用されるとき、同義語である。
【0019】
図1は、様々な実施形態に従った複数の自律コアペリメータロジックを含むシステム100の一例を示している。一実施形態において、システム100は、複数のコア102a乃至102f(集合的に、又は特定のコアに関せずに、コア102)を有するマルチコアプロセッサを有する。この実施形態における各コア102a乃至102fは、それぞれ、自律コアペリメータロジック103(ACP103)に結合される。各コア102はまた、マイクロコントローラ112を含んでおり、マイクロコントローラ112も、ACP103と通信するように結合され、ACP103の一部とし得る。各コア102a乃至102fは、回路104a乃至104f(集合的に、又は特定のコアに関せずに、回路104;
図1ではCxと略す)によって、ダイ内(インダイ又はイントラダイ)インタフェース(IDI)106に結合される。実施形態において、プロセッサを低電力状態に置くための信号に基づいて、又は該信号によってトリガされて、回路104a乃至104fの各々が、コア102a乃至102fの各々のマイクロコントローラ112を停止させ、複数のコア102a乃至102fのうちの第1のコアのマイクロコントローラ112からファームウェアコードを保存し、そして、コア102a乃至102fの各々のマイクロコントローラ112から状態情報を保存するように適応される。理解されるべきことには、6つのコア102a乃至102f及び対応する回路104a乃至104fが示されているが、この数は任意である。様々な実施形態は任意数のコア102a乃至102f及び回路104a乃至104fを有し得る。
【0020】
システム100内の各コア102が、処理コアとして作用して、システム100の外部のストレージからロードされたソフトウェア命令の1つ以上のスレッドを実行し得る。一部の実施形態において、各コア102は、例えば埋め込みマイクロコントローラなど、特定用途向けとし得る。他の実施形態において、各コア102は、サーバ、デスクトップ、又はラップトップのような汎用コンピュータ(
図6に関してここに説明されるコンピューティング装置1300として実装され得る)で使用され得るものなど、汎用的な性質のものであってもよい。各コア102は、例えばIntelのx86-64命令セット又はARMの命令セットなどの特定の命令セットアーキテクチャ(ISA)を実装し得る。システム100内の各コア102は同一タイプのISAを実行することができ、それにより、システム100は、コンピュータ用のマイクロプロセッサとして実装されるときに、そのISA向けに記述された複数のソフトウェアスレッドを実行することができる。他の実施形態では、1つ以上のコア102が、他のコアとは異なるISAを実行してもよく、それにより、システム100は、2つ以上の異なるISA向けに記述されたソフトウェアを同時に又は略同時に実行することができる。更なる他の実施形態において、1つ以上のコア102が特定用途向け又は特定機能向けであってもよく、システム100は、汎用実行向けの1つ以上のコア102と、例えばOS管理、ハードウェア管理、システム100の様々な内部構造の管理、又は類似の特定機能などの、特定の機能に専用とされた1つ以上のコア102とを有する。
【0021】
各コア102は、実施形態において、複数の電力状態に置かれることが可能である。例えば、所与のコア102は、コアがアクティブであって、処理中であるか処理する準備ができているがアイドル中であるかのいずれかであるC0状態と、コアは電源を落とされているが、コアペリメータコンポーネントは電力供給されたままであり、コアをC0状態に移し戻す準備ができているC3状態と、コアも少なくとも一部のコアペリメータコンポーネントも電源を落とされているC6状態とを含み得る。実施形態に応じて、C6状態で、コアペリメータの一部は電力供給されたままにして、その部分がウェイクアップ信号を受けてコア102の残りの部分に再電力供給することを可能にしてもよく、あるいは、コアペリメータ全体がコア102と共に電源を落とされてもよい。コア及びコアペリメータの全体が電源を落とされる場合、コア102は、外部ロジックがコアをC6状態から抜け出させるのを当てにする必要がある。所与の実装の要件及び利用可能な電力レールに応じて他の電力状態が可能であってもよく、コア102の様々なブロックを様々な活動モード又は節電モードに置くことができる。
【0022】
各コア102は、実施形態においては、特定のコア102に専用であるがISA命令の実際の処理は行わないコンポーネントから構成される自律コアペリメータロジック、又は単にコアペリメータ、ACP103を含む。ACP103は、電力管理エージェント110、マイクロコントローラ112、及び例えばランダムアクセスメモリ(RAM)114などのローカルストレージを含み得る。各コア102は、例えばメイン処理ブロックなどの他のコンポーネントを含んでもよい。各コア102のこれら及び他のコンポーネントについては、
図2に関してここで更に詳細に説明することとする。
【0023】
図示した実施形態において、各コア102のACP103は回路104に結合され、代わって回路104が、コア102及びACP103をIDI106と結合して、コア102、ACP103と、例えば入力/出力(I/O)ポート、拡張ポート、ディスクリートグラフィックスプロセッサ(dGPU)、及びコンピューティング装置1300などのコンピュータシステムの他のコンポーネントなどの、システム100の外部の装置を含めた、システム100の他のコンポーネントと、の間での通信を可能にする。回路104は、実施形態において、ACP103をIDI106に通信可能に結び付ける。IDI106は、後述するように、システム100内に存在し得る他のファブリック及びバスと比較して、コア102とメモリストア108を含めた他のコンポーネントとの間の比較的高速(クロック速度に関して)でワイドな経路を提供する。回路104は、実施形態において、それ自身によって、又はコア102及び/又はACP103の他のコンポーネントと協調して、のいずれかで、コア102への又はコア102からのファームウェア及び状態データの転送を、様々な程度までコーディネートし得る。ACP103をIDI106に結び付けることにより、実施形態では、コア102及びそのACP103からのファームウェア及び状態情報の保存を、かなり遅いクロック及び/又は狭いバス幅を持ち得る側波帯バス又は他のチャネル上でのデータの転送と比較して、最小限のレイテンシで達成することができる。
【0024】
回路104は、ACP103の一部であってもよく、一部の実施形態において、コア102内のスタンドアロンのコンポーネント若しくはモジュールであってもよいし、(それ自体がACP103の一部とみなされ得る)コア102内の別のモジュールの一部であってもよいし、あるいは以上のもののうちのいずれかの組み合わせであってもよい。回路104は、一部の実施形態において、マイクロコントローラ112が電力供給されなくなることをもたらす低電力状態にシステム100のパッケージが置かれようとしている又は置かれるかもしれないという通知を受けて、マイクロコントローラ112のファームウェア(ここで説明するように、まだ保存されていない場合)及び状態情報の保存を自律的に扱う又は他の方法でコーディネートするように構成される。通知とシステム100の実際のパワーダウンとの間に遅延がある場合、各回路104は、パッケージパワーダウンの前に、それに付随するコア102のコアファームウェア(まだ格納されていない場合)及び状態情報を保存することができ、それにより、低電力状態へのシステム100の遷移に望ましくないレイテンシを与えることを回避し得る。ここで更に詳細に説明するように、回路104はまた、システム100のパワーダウンが中止された場合に、コア102を停止状態に保持するのではなく、状態の保存後であるがパワーダウンの前に、コア102に少なくとも部分的に実行を再開させることができる。
【0025】
図1の実施形態に示すように、回路104は、特に、それが付随するコア102の電力管理エージェント110をIDI106に結び付け得る。このような一実施形態において、電力管理エージェント110は、ACP103の一部であると見なされてもよい。更なる他の実施形態において、回路104は、ある種のファームウェア又はソフトウェアを実行し得るそれ自身の制御ロジックを含んでもよい。回路104は、それが付随するコア102の1つ以上のコンポーネントを異なる電力状態に遷移させるために、電力管理エージェント110と協調し得る。一部の実施形態において、回路104は、電力管理エージェント110の1つ以上のコンポーネント(例えばマイクロコントローラ112など)への電力供給をやめることをコーディネートする。
【0026】
回路104は、ファームウェア及び状態情報を、1つ以上のコア及び/又はシステム100パッケージの低電力状態用に指定されたメモリストア108に保存し得る。システム100内であるように示しているが、一部の実施形態において、メモリストア108は、システム100のパワーダウンがメモリストア108の電力を落とすことにならないことを保証するよう、システム100パッケージの外部に位置してもよく、あるいは他の方法でシステム100の他のコンポーネントとは別の電力レール又は電力ドメイン上に位置してもよい。メモリストア108は、ファームウェア及び状態情報の低レイテンシ且つ高帯域幅でのストレージを提供するためにIDI106に結合されるように示されており、メモリコンテンツをリフレッシュするために連続した電力を必要とするダイナミックRAM(DRAM)タイプのものであってもよい。一部の実施形態において、メモリストア108は、プロセッサのためにシステム100を使用するコンピュータ又は装置上のメインシステムメモリの一部であってもよく、また、オペレーティングシステムと共有され且つ/或いはアプリケーション及びプロセスを実行することと関連してよい。メモリストア108は、オペレーティングシステム又は実行中のプロセスから流用された又は他の方法で割り当てられたメインシステムメモリの部分であってもよく、システム100が低電力状態に遷移されるときに使用するために確保され得る。他の実施形態において、メモリストア108は、特に、各コア102の動作状態情報及びファームウェアを保存するための別個の且つ/或いは専用のメモリユニットであってもよい。
【0027】
IDI106は、実施形態において、例えばコア102、任意のキャッシュメモリ、及び/又は低レイテンシで高い帯域幅を必要とするシステム100の他のコンポーネントの間など、システム100の様々なコンポーネントの間での、比較的高速で低レイテンシのデータ転送を可能にするシステム100用のインタフェース及び内部通信バスである。一実施形態において、IDI106は、数百メガヘルツから数ギガヘルツに至るまでの範囲のクロック速度で動作し、所与のコア102の最大クロック速度に適合し得る。IDI106はまた比較的ワイドであってもよく、一実施形態において、IDI106は256ビット幅である。他の実施形態は、具体的な実装のニーズに応じて、より狭い又はより広いバス幅を使用し得る。システム100内に存在し得る他の内部バスと比較して、IDI106はかなり高速であることができる。他の内部バスは、数百メガヘルツの最大クロック速度を持つことができ、及び/又はバスの意図した目的に応じて、64ビット未満、32ビット未満、16ビット未満、又はそれより小さい幅を持つことができる。IDI106の広い帯域幅は、ファームウェア及び状態情報が、最小限のレイテンシで、例えばメモリストア108などの外部メモリに転送されることを可能にすることができる。
【0028】
電力管理エージェント110は、実施形態において、それが付随するコア102を、例えば上述のような状態C0、C3、及び(一部の実装において)C6などの複数の電力状態の間で遷移させることを担う。従って、電力管理エージェント110は、コア102の様々なコンポーネントをパワーゲーティングする(例えば、ターンオン又はオフさせる)ように構成され得る。電力管理エージェント110は、マイクロコントローラ112と、ストレージ114(RAMユニットとして図示している)とを含み得る。マイクロコントローラ112は、実施形態において、電力管理エージェント110の機能のうちの少なくとも一部を提供することを担う。他の実施形態において、マイクロコントローラ112はまた、あるいは代わりに、
図2に関してここで更に説明されるコア102の処理コアに機能を提供し得る。ストレージ114は、マイクロコントローラファームウェアと、例えば、レジスタ値、マイクロコントローラ112の内部状態、一時データといった、動作状態情報との両方を記憶するために、マイクロコントローラ112及び/又は電力管理エージェント110によって使用され得る。より更には、電力管理エージェント110は、電力状態間での遷移及び遷移に必要なステップをコーディネートするための有限状態マシン(図示せず)を含み得る。ストレージ114はまた、この有限状態マシンによって現在のマシン状態を追跡するために使用され得る。
【0029】
各コア102a乃至102fが複数の電力状態を持つことに加えて、システム100全体として複数の電力状態を持ち得る。例えば、システム100の一実施形態は、パッケージの全てのコンポーネントが電力供給される(又は電力供給されることが可能な)PkgC0状態と、例えば各コア102a乃至102f及び場合により各コアの外部の一部のコンポーネント(例えば、アンコア)などの一部のコンポーネントが電源を落とされるPkgC3状態と、実質的に全てのパッケージコンポーネントが電源を落とされてシステム100の全体を実効的にオフにするPkgC6状態とを含み得る。一部の実施形態において、パッケージ制御ユニット(PCU)116、別のコンポーネント、又はその一部のいずれかが、パッケージをPkgC6状態から起こすことを可能にするための最小限の電力を残され得る。例えばPkgC6がシステム100の全体を実効的にシャットオフするなどの他の実施形態において、システム100は、システム100の外部の何らかの回路又はコンポーネントによってPkgC6状態から目覚めさせられることを必要とし得る。
【0030】
PCU116は、実施形態において、例えば、様々なバスの管理、パッケージ電力状態遷移、コンポーネント電力状態のシグナリング、クロック制御及び変更、並びにシステム100の動作のための他の必要なタスクなど、システム100の様々な機能をコーディネートするように動作することができる。PCU116は、様々なコア102a乃至102fの外側に位置することができ、従って、システム100の“アンコア”、すなわち、1つ以上のコア102の外部にあるがそれを支援し得るシステム100上の様々なコンポーネントの一部を構成することができる。図示した実施形態において、PCU116は、IDI106を介してシステム100の様々なコンポーネントと通信する。他の実施形態では、PCU116は、IDI106に代えて又は加えて、他のバス上で1つ以上のコンポーネントと通信してもよい。更なる他の実施形態において、PCU116は、システム100の1つ以上のコンポーネントと直接通信し得る。
【0031】
システム100は、例えばシステム・オン・チップ(SoC)構成などの単一の物理パッケージとして実装され得る。SoC構成は、システム100を使用するモバイル製品を実装する際に有利であり得る。
図1に示した様々なコンポーネントに加えて、そのようなSoC又はシステム100の他の実施形態には、例えばメモリマネジャ、グラフィックスサブシステム、周辺バスマネジャ、I/Oマネジャ、電力レギュレータ若しくはマネジャ、及び/又はシステム100を利用するコンピュータシステムの全ての又は実質的に全ての機能を単一の物理パッケージが供することを可能にする任意の他の論理ブロックなどの、他の論理ブロックが存在する。これらのコンポーネントは、開示される実施形態を理解することを容易にするために省略されている。あるいは、システム100は、例えば、サポート用のチップセットに伴われた汎用マルチコアプロセッサなど、複数の物理パッケージを備えたシステムの1つのコンポーネントであってもよい。チップセットは、ノースブリッジチップ及びサウスブリッジチップを、例えばメモリ、メモリ管理ユニット(ノースブリッジチップに集積されない場合)、グラフィックスサブシステム、周辺管理ユニット、及び所与の実装に適した他のコンポーネントなどの、他のコンポーネントと共に含むことができる。
【0032】
図2を参照するに、コア102のコンポーネントがより詳細に示されている。図示した実施形態において、コア102は中核コア202を含んでいる。コアペリメータを有する他のコンポーネントが、ファブリックインタフェースロジック(FIL)204及び付随するバブル生成(bubble generating)先入先出(FIFO)BGF214と、
図1に関して上述したような電力管理エージェント(PMA)206並びに付随するマイクロコントローラ216及びRAM218と、1つ以上の電力送達レール208と、位相ロックループ(PLL)210と、デジタル熱センサ(DTS)212とを含んでいる。示されるように、これらのコンポーネントは、上述のACP103の少なくとも一部を有し得る。他の図示したコンポーネント及び接続については後述する。
【0033】
中核コア202は、実施形態において、1つ以上のソフトウェアスレッドの実行を行うロジック及び他の様々なコンポーネントを含む。これらの構造は、所与のプロセッサ実装の詳細に応じて様々となることができる。中核コア202は、例えば1つ以上の算術論理ユニット、浮動小数点ユニット、変換ルックアサイドバッファ、分岐予測器、レジスタファイル、マルチプレクサ、デコーダ、キャッシュ、及び他のこのようなコンポーネントなどの構造を含み得る。これら様々な構造は、命令スループットを最適化するために1つ以上の多段パイプラインに編成されてもよい。中核コア202は、数ギガヘルツの速度で動作することが可能であり得るとともに、クロックサイクル当たり1演算よりも良好な命令スループット(例えば、スーパースカラ性能)を達成し得る。
【0034】
中核コア202は、実施形態において、FIL204を介して、ACP103の1つ以上のコンポーネント及びIDI106と通信する。この接続は、コネクタ224によって示されている。FIL204は、接続“ファブリック”を提供するように構成されることができ、様々なコンポーネントがメッシュ状の接続を介して通信可能に結合され、接続されたコンポーネントが、FIL204を介して、例えばポイント・ツー・ポイントで、直接通信することを可能にし得る。FIL204はまた、コネクタ222を介してPMA206に接続し得る。図示していないが、FIL204は更に、コア内通信を支援するためにコア102内の他のコンポーネントに接続してもよい。これら他の接続は、様々な速度で動作し且つ様々なデータ幅を持ち得る他の内部バスを介して行われ得る。そのような一実施形態において、FIL204は、異なるクロック速度で動作するコンポーネント間でのデータ転送のバッファリングをコーディネートし得る。
【0035】
図2の実施形態では、FIL204内に、BGF214、すなわち、バブル生成FIFO(先入先出)が含まれている。BGF214は、コア102の様々な内部バスへの又はからのデータが、異なるクロック速度及び/又はデータ幅で動作することを可能にするように構成される。これに関連し、BGF214はバッファリング能力を含むことができ、例えばIDI106などの高帯域幅バスからのバースト間で、データを、該データが低帯域幅バス上に完全に転送されることができるまで一時的に格納することを可能にし、同様に、これは、低帯域幅バスから転送されるデータを、それが例えばIDI106などの高帯域幅バス上にバースト転送されるのを可能にするのに十分な量が得られるまで、格納することができる。
【0036】
PMA206は、上述のように、様々な電力状態間で遷移することを含め、例えばC0、C3、及びC6といったコア電力状態を管理すること、並びに例えば中核コア202、PLL210、DTS212、及び/又は他のモジュールなどの内部コンポーネントを電力ゲーティングすることを取り扱うことができる。PMA206は、実施形態において、コネクタ222を介してFIL204に接続される。コネクタ222は、IDI106と同じ又は異なる帯域幅のものとし得る内部バスを有し得る。コネクタ222がIDI106よりも遅く動作する且つ/或いはそれよりも狭い場合、コネクタ222を介したPMA206への又はからのデータは、BGF214を通り抜けてIDI106に到達することができ、上述のように、BGF214がクロックドメイン間及び帯域幅差の変換を取り扱う。PMA206はまた、
図1に関して示したマイクロコントローラ112及びRAM114と同様の、マイクロコントローラ216及びRAM218を含んでいる。
図2に示した実施形態において、PMA206はまた、側波帯インタフェース(SI)220を介して通信し得る。SI220は、IDI106と同様の構造に接続し得るが、特に、シグナリングが比較的小さいペイロードサイズのものである場合に、IDI106の帯域幅を消費することなく帯域外シグナリングを可能にし得る。SI220は、コア102内で接続を行うことができ、及び/又は例えばパッケージ制御ユニット116や他の電力制御若しくは管理モジュールなどの1つ以上のアンコアコンポーネントに接続してもよい。
【0037】
マイクロコントローラ216は、実施形態において、コア102の1つ以上のコンポーネントの機能をコーディネートする。例えば、マイクロコントローラ216は、中核コア202への制御シグナリングを提供し得る。中核コア202の具体的なアーキテクチャに応じて、マイクロコントローラ216はまた、命令変換及び/又は復号を提供することができ、コア102のISA内の命令が中核コア202による実行のために1つ以上のマイクロオペレーションに変換される。例えば、中核コア202の一部の実装は、プリミティブオペレーションのみを提供するが、高速で実行されることができる単純化された又は縮小された命令セットを採用し得る。システム100向けのISAの命令が、中核コア202による処理の前に、マイクロコントローラ216によって又はその制御下で、それらプリミティブオペレーションに分解される。同様に、マイクロコントローラ216は、中核コア202による実行の任意のデータ又は他の結果を、システム100向けのISAに適合するデータ又は構造にフォーマットすることをコーディネートし得る。
図1に関して示唆したように、マイクロコントローラ216はまた、例えばACP103の1つ以上のコンポーネントなどの、コア102の他のコンポーネントの動作をコーディネート及び/又は制御し得る。これらの機能は、PMA206を介した電力移行、FIL204(及び付随するBGF214)の設定及び管理、クロック速度(PLL210を介する)、検知した状態(例えばDTS212によって検出された過熱状態など)に基づく中核コア202の性能のスロットリング、様々なコア内バス(例えばコネクタ222及び224など)の管理、及びコア102の動作を管理するための任意の他の適切なタスクを含むことができる。
【0038】
PMA206の一部として示しているが、他の実施形態において、マイクロコントローラ216は、コア102の別個のモジュール又はコンポーネントであってもよい。更なる他の実施形態において、RAM218は、マイクロコントローラ216の一部であってもよく、あるいはディスクリートのコンポーネント又はコア102の別個のコンポーネントであってもよい。
【0039】
上述のように、マイクロコントローラ216は、実行中に例えばRAM218などのストレージを利用し得る。マイクロコントローラ216を停止させることを含めてコア102が停止されるとき、マイクロコントローラ216が停止のポイントから実行を再開することができ、コア102が例えばC6又はPkgC6などの節電状態に置かれることを受けてのその停止のポイントから実行を再開することができることを確保するために、RAM218のコンテンツを保存する必要があり得る。RAM218の具体的な実装に応じて、RAM218は、そのコンテンツを維持するために連続した電力を必要とすることがある(例えばDRAM)。不揮発性メモリストレージも使用され得るが、それはDRAMと同じ性能を提供しないことがある。RAM218がDRAMで実装される場合、そのコンテンツは、コア102の電源を完全に落とす前に、コア102(及び、上述のように、場合によりシステム100)とは別に電力供給される外部ストレージにコピーされなければならない。このような実装においてコア102の電源を完全に落とすことはまた、RAM218が電力供給されなくなることをもたらし、それ故に、そのコンテンツを失う。RAM218のコンテンツが保存されない場合、マイクロコントローラ216は、電源を落とす前からのその実行を再開することができないことになる。結果として、コア102を再初期化する必要があることになり、可能性あるレイテンシ及び/又はデータ損失を導入してしまう。
【0040】
RAM218はまた、マイクロコントローラ216用のファームウェアイメージを含み得る。マイクロコントローラ216は、実施形態において、基本的に特定目的のコンピュータであり、コア102がどのように動作するかを支配するファームウェアを介した最小限の又は特定用途向けのオペレーティングシステムの形態で動作し得る。このファームウェアは、一部の実施形態において、マイクロコントローラ216又はコア102内の別の適切な構造にハードコーディング又はバーニングされてもよい。加えて、一部の実施形態は、上述のように、新たな又は更新されたファームウェアがコア102にロードされることを可能にし得る。この新たな又は更新されたファームウェアは、一部の実施形態において、コア102と共にシステム100に電源投入してそれを初期化することに続いて及び/又はその一部として、コンピュータのBIOS、ファームウェア、又はオペレーティングシステムによって動的にロードされ得る。一部の実施形態において、この動的にロードされるファームウェアは、RAM218の一部内に置かれる。動作状態情報と同様に、このファームウェアイメージは、RAM218の電源を落とすのに先立ってコア102の外部に保管されなければならない。そうしないと、コア102の再初期化後にコンピュータ又はそのオペレーティングシステムが新たなファームウェアをロードし直すことを必要とすることになるが、これは、一部の実装では実現不可能であることがあり、そうして、コンピュータ/オペレーティングシステム全体をリブートすることを必要とすることになる。
【0041】
電力送達レール208は、コア102内の様々なコンポーネントに電力を供給する1つ以上の電力レールを有し得る。電力送達レール208が複数のレールを含む場合、各レールが、所与のレールに接続されるコンポーネントの要件に応じて、例えば異なる電圧や異なる電流容量などといった異なる電力仕様を搬送し得る。また、コア102のコンポーネントのうちのサブセットが電力ゲーティングされることを可能にするために、複数のレール(同じ電力又は異なる仕様の電力のいずれかを搬送する)が使用されてもよい。例えば、中核コア202が1つの電力レール208上に配され、FIL204が別の1つのレール上に配され、且つPMA206(マイクロコントローラ216を備える)が更に別の1つのレール上に配されてもよい。電力送達レール208の様々なレールを電力ゲーティングするようにPMA206及び/又はマイクロコントローラ216が構成され得る。そのような実施形態において、PMA206は、例えばコア102がC3状態に置かれるときなどに、FIL204、PMA206、マイクロコントローラ216、及びRAM218への電力を維持しながら、中核コア202を電力ゲーティングすることができる。そのような状態において、入ってくるメッセージは、中核コア202に電源投入する必要なく、FIL204によって処理されることができ、マイクロコントローラ216を備えたPMA206が、電力ゲーティングの制御を維持することができる。
【0042】
位相ロックループPLL210は、実施形態において、コア102にクロックサービスを提供する。これらのクロックサービスは、異なるコンポーネントに対する様々なクロック速度を含み得る。例えば、中核コア202は数ギガヘルツに至る速度を必要とし得る一方で、FIL204は、数百メガヘルツのクロック速度を必要とするのみであり得る。マイクロコントローラ216が更に別のクロック速度を必要とすることがある。さらに、PLL210は、様々なコンポーネントに提供されるクロック速度がコア102の具体的な性能要求に応じてブースト又はスロットルされることを可能にし得る。
【0043】
デジタル熱センサDTS212は、コア102の内部温度状態をモニタするためにコア102に装備され得る。中核コア202及び/又はコア102の他のコンポーネントが、重い負荷を掛けられ及び/又は高いクロック速度を受けているとき、それらは、システム100のパッケージによって実現可能に消散されることが可能なものよりも多くの熱を発生し得る。従って、熱が蓄積するのにつれて内部温度が上昇することになり、システム100の熱限界を超えて、システム100又はそのコンポーネントのうちの1つ以上にダメージを生じさせてしまうかもしれない。DTS212は、温度状態が設計限界に近づく又はそれを超えることを検出すると、少なくとも一時的に中核コア202(及び/又は他のコンポーネント)の速度をスロットルさせて、システム100のパッケージによって安全に消散されることができるレベルまで熱生成を低下させることができる。一部の実施形態において、このスロットリングはマイクロコントローラ216を介して扱われ、マイクロコントローラ216が、DTS212からのデータを入力として受け入れ、次いで、中核コア202の速度をスロットリングするようにPLL210を制御する。他の実施形態において、DTS212は、制御ループ又はフィードバックループ内でPLL210に直接結合されてもよく、その場合、検知された過熱状態が自動的にPLL210にクロック速度をスロットルさせることになる。
【0044】
理解されるように、システム100(及び関連するコア102a乃至102f)は、例えば電話、タブレット、腕時計、サーバ、ラップトップ、デスクトップ、ネットワーク装置、組み込みシステム、及び他の類似の実装などの、様々な消費者装置での使用に適した汎用プロセッサとして具現化され得る。プロセッサ例は、以下に限られないが、例えば汎用コンピューティングに使用され得る汎用プロセッサなどの様々なマイクロプロセッサ、及び/又は例えば特にデジタル信号の処理に、及びより具体的にデジタルオーディオ信号の処理に専用のマイクロプロセッサを含み得る。例は、iAPXファミリ、ARMファミリ、MIPSファミリ、SPARCファミリ、PA-RISCファミリ、POWERファミリ、又は現在知られた若しくは後に開発される任意の他の好適プロセッサアーキテクチャのプロセッサを含み得る。更なる他の実施形態は、例えばFIL204、マイクロコントローラ214、PMA206、及びACP103の他のコンポーネントなどの、コンポーネントの少なくとも一部について、特定用途向け集積回路(ASIC)又はフィールドプログラマブルゲートアレイ(FPGA)を使用してもよい。
【0045】
やはり理解されるべきことには、システム100の一部の実施形態において、所与の実装が必要な機能を維持する限り、これら様々なコンポーネントは、異なるタイプを含め、多様な異なる構成を使用し得る。例えば、システム100の一部がソフトウェア(例えばマイクロコントローラ112/216用のファームウェアなど)として実装され、他の部分がハードウェアで実装されてもよい。理解されるべきことには、
図1及び
図2の様々なブロックは単に機能の論理的描写であり、ブロックの実際の実装は実施形態ごとに異なることができ、異なるブロックの機能が1つ以上のソフトウェア及び/又はハードウェアモジュールに分割されたり組み合わされたりし得る。所与の実装に応じて、これらのコンポーネントの一部が省略されたり他の場所に移動されたりしてもよい。
【0046】
図3には、プロセッサのパッケージを低電力状態に遷移させるかもしれないときに、マイクロコントローラのファームウェア及び動作状態情報を保存する方法300の一例の動作が示されている。方法300の動作は、全体として又は部分的に、例えばPMA110/206を含む自律コアペリメータ103の1つ以上のコンポーネントによってなど、システム100及び/又はコア102の1つ以上のコンポーネントによって実行され得る。一部の動作、又は動作の一部は、実施形態においてシステム100を有し得るものであるシステムパッケージによって実行されることができ、そして、例えばシステムパッケージといった、その物理パッケージは、例えばSoCなどの単一の物理パッケージであることができる。以下は、システム100及びコア102の様々なコンポーネントの機能の上述の説明を含め、
図1及び
図2の上述の説明に照らして読まれるべきである。
【0047】
動作302で開始して、状態を保存するための信号が、例えばACP103のコンポーネントなどによって受信される。この信号は、例えばPCU116などのシステム100の内部のコンポーネントによって送信されることができ、及び/又は、例えば外部電力マネジャ又はシステムBIOS若しくはファームウェアなどの、システム100の外部からのものであってもよい。この信号は、ダイ内インタフェースを介して受信されてもよいし、側波帯又は帯域外バス又はシグナリングチャネルを介して受信されてもよい。
【0048】
動作304にて、マイクロコントローラが、例えばACP103などによって停止される。PMA206が、マイクロコントローラを停止させることをコーディネートし得る。少なくとも一時的にマイクロコントローラを停止させることは、マイクロコントローラの作動状態が、それが保存されるプロセスにある間に、変化しないことを確保するために望ましいとし得る。
【0049】
動作306にて、マイクロコントローラのファームウェアイメージが例えばメモリストア108などの外部ストレージに保存されているかが決定される。上述のように、特にはシステム起動時に動的にロードされるa-コードであるファームウェアイメージは、典型的に全てのコアにわたって同じであり、さらに、各マイクロコントローラの動作状態よりもかなり多くのストレージを必要とする。従って、各コアからファームウェアの同一コピーを格納することは、冗長で、不必要で、ストレージ資源の無駄である。さらに、外部ストレージへとコアの外部に転送されなければならないデータの量が多いほど、システム100を低電力状態に遷移するときに課されるレイテンシの量が大きくなる。このレイテンシは、例えば(マルチコアシステム内の)その状態を保存すべき第1のコアからなど、ファームウェアイメージの単一のコピーのみを保存することによって節減されることができる。動作306では、複数のコアのうちの1つがファームウェアイメージのコピーを保存したかを指し示すために、システム100内のフラグ又は他のシグナリング機構が利用され得る。取り得るシグナリングの一部の例は、システム100内の全てのコアにアクセス可能なレジスタ若しくはフラグをセットすること、ファームウェアイメージが保存されていることを全てのコアに指し示す例えば内部バス上などのラインをアサートすること、内部バスを介して全てのコアにフラグ若しくは通知をプッシュすること、又はファームウェアイメージが保存されたていて再び保存する必要がないことを各コアのACPにシグナリングする任意の他の方法を含む。
【0050】
動作306に対する応答が“YES”である場合、ファームウェアイメージがまだ外部ストレージに保存されていないことを指し示し、方法300は動作308に進み、そこで、共有ファームウェアイメージが外部ストレージにプッシュされる。これは、ACP103によって達成されることができ、ACP103は、ファームウェアイメージをフォーマットし、それを、回路104を用いてIDI106上に置く。上述のように、実施形態において、イメージはフォーマットされ、BGF214を通して、FIL204を介してIDI106上に置かれ得る。ファームウェアイメージが保存されると、上述のように、更なる保存が試みられないように、他のコアにこの事実がシグナリングされる。ACP103及び/又はFIL204は、実施形態において、ファームウェアイメージ及び(以下の動作310での)動作状態情報をプッシュするための外部ストレージ内の1つ以上のアドレスを取得し得る。
【0051】
このアドレス情報は、例えばメモリマネジャ、パッケージ制御ユニット、オペレーティングシステム、メモリストレージユニット、又は他のソースからアドレスを取得するなど、任意の好適技術を用いて取得されてもよい。一部の実施形態において、このアドレス情報は、IDI及び任意のサポート回路の所与の実装に適切なデータブロック又は他の好適フォーマットとして、IDI106上で受信され得る。ファームウェアイメージを格納するのに先立って、初期アドレス情報が取得され得る。この初期アドレス情報は、実施形態において、ACP103によって取得され得るとともに、IDI106上で受信され得る。
【0052】
実装に応じて、ファームウェアは、システム100を採用するコンピュータシステムの電源がオンである間に一度だけ保存されればよい。例えば、ファームウェアイメージが起動時にロードされ、それ以外で決して変わらない場合、ファームウェアイメージのコピーは、例えばオペレーティングシステムによってなどで、システムストレージ内に保持され得る。他の実装では、ファームウェアイメージは、初めて第1のコアの状態情報が保存される時に一度だけ保存され得る。このような実装のいずれにおいても、少なくともコンピュータシステムが電力供給されたままである期間にわたってファームウェアイメージがシステムメモリ内に単純に残るので、低電力状態へのシステムのその後の遷移で“YES”パスが辿られることは決してないとし得る。
【0053】
動作308の完了後、又は動作306の結果が“NO”パスにつながる(例えば、ファームウェアが既に保存されている又は保存される必要がない)場合、コアの動作状態情報が、同様に、動作306に関して上述したファームウェアイメージと同じ機構を介して、外部ストレージにプッシュされる。
【0054】
動作状態情報が保存されると、動作312にて、マイクロコントローラが停止解除され得る。低電力状態へのシステムの遷移が中止されることがあるので、マイクロコントローラは、低電力状態へのシステムの遷移が中止された場合に、そのコアを停止又は低電力段階から戻すことを要求され得る。システムが低電力状態への遷移を完了した場合、マイクロコントローラは、その後、電力ゲーティングされてもよい。一部の実施形態において、例えばシステムが直ちにパッケージをパワーダウンさせることに進む場合など、動作312は省略されてもよい。
【0055】
理解され得ることには、マイクロコントローラの動作状態が、動作310で動作状態が格納される時と、マイクロコントローラが最終的に電力ゲーティングされる時との間に変化することがある。しかしながら、それらの変化は無視され得る。マイクロコントローラが電力ゲーティングされる場合、その動作状態は、外部ストレージにプッシュされた状態に復元されることになり、それは、動作302にて状態保存のための信号が受信された時に基づいて期待されるポイントである。マイクロコントローラが動作状態の保存と電力ゲーティングとの間に有意な状態変化を起こすことは期待されない。逆に、低電力状態への遷移が中止される場合、コア及び付随するマイクロコントローラは通常通りに実行を継続することになり、外部ストレージにプッシュされた動作状態は、動作302の次の実行を受けて新たな動作状態によって上書きされることになるので無視されることができる。
【0056】
ファームウェアイメージ及び動作状態は、実施形態において、システム100の外部にあるストレージユニットに格納され、そうして、システム100が、完全に又はほぼ完全にパワーダウンされる深い節電状態に入ることを可能にすることができる。ストレージユニットは、上述のように、電力供給されたままである。
図1に関して上述したように、ストレージユニットは、オペレーティングシステム又はプロセス(特に、1つ以上のアプリケーションが眠らされるとき)から流用された又は他の方法で割り当てられたメインシステムメモリの部分であってもよい。
【0057】
方法300は、単一のコアによって実行されるものとして示されているが、方法300は、システム100内の各コアによって、シリアル若しくはパラレルのいずれかで、又はシリアル実行及びパラレル実行の組み合わせで実行されてもよい。
【0058】
図4を参照するに、プロセッサのパッケージが低電力状態に遷移するかもしれないときにマイクロコントローラファームウェア及び動作状態情報を復元する方法400の一例の動作が示されている。方法400の動作は、全体として又は部分的に、例えばPMA110/206を含む自律コアペリメータ103の1つ以上のコンポーネントによってなど、システム100及び/又はコア102の1つ以上のコンポーネントによって実行され得る。方法300と同様に、一部の動作、又は動作の一部は、特にシステム100が単一のパッケージにてSoCとして実装される場合に、パッケージ又はシステムパッケージのレベルで実行され得る。以下は、システム100及びコア102の様々なコンポーネントの機能の上述の説明を含め、
図1及び
図2の上述の説明に照らして読まれるべきである。
【0059】
動作402にて開始して、例えばシステム100などのシステムパッケージを起こすための信号が受信される。パッケージがどれほど深く節電状態に置かれるかに応じて、この信号は、システムの外部のソースからのものである必要があり得る。他の実施形態では、先ず外部信号がパッケージ制御ユニットに送られ、代わってそれが、システム内の各コアに、状態を復元して、より高い電力レベルに遷移することを開始するようシグナリングしてもよい。それによってこれらの信号が取り扱われる機構は、所与の実装の詳細と、システム内のどのコンポーネントがシステムパッケージに対して電力ゲーティング及び電力供給を行うことを扱うかということとに応じて様々であり得る。動作402の一部は、例えばACP103などの各コア内のコアペリメータの少なくとも一部に電力供給することを含むことができ、その後にそれが、付随するコア上で方法400の残りの動作を実行する責任を負い得る。
【0060】
ウェイクアップ信号を受信した後、動作404にて、共有ファームウェアが、コアの固有の動作状態情報と共に外部ストレージから取り出される。所与の実装の詳細に応じて、複数コアのうちの1つのコアが共有ファームウェアの取り出しをコーディネートすることができ、共有ファームウェアが、ダイ内インタフェース上に置かれ又は他の方法でシステム内にバッファリングされ得る。斯くして、共有ファームウェアイメージは外部ストレージから一度だけ取り出されればよく、そしてそれが、全てのコアへとシステム内で内部的にコピーされ得る。
【0061】
動作406にて、ファームウェアが各コアにプッシュされ、具体的には、各コアの各マイクロコントローラに関連付けられたストレージにプッシュされる。このプッシングは、自律コアペリメータ(ACPをIDIに接続する回路を含む)によって取り扱われ得る。他の実施形態において、このプッシングは、少なくとも部分的にアンコア構造(例えば、特定のコア内に位置しないコンポーネント)によって取り扱われてもよい。ストレージと同様に、ACP又はファームウェアを復元することを取り扱う他の構造は、動作306に関して上述したように、共有ファームウェアイメージを置くための外部ストレージ内の1つ以上のアドレスを適切なソースから取得し得る(そして、それは、データブロック又は他の好適なフォーマットにて例えばIDI106などのIDI上で伝送され得る)。
【0062】
動作408にて、動作406と同様に、共有ファームウェアイメージと同様のやり方で、固有の動作状態が各コアにプッシュされる。外部メモリから動作状態情報を別々にプルするために、動作406と同様に各固有動作状態のアドレスが取得され、各コアのACPに提供され得る。
【0063】
最後に、動作410にて、共有ファームウェアイメージ及び固有動作状態情報が各コアにプッシュされて各マイクロコントローラの関連ストレージに置かれると、各コアが、より高い電力の、より動作的な状態に遷移され得る。
【0064】
当業者によって理解されるように、本開示は、方法又はコンピュータプログラムプロダクトとして具体化されてもよい。従って、本開示は、前述のようにハードウェアで具現化されることに加えて、完全なソフトウェアの実施形態(ファームウェア、常駐ソフトウェア、マイクロコードなどを含む)の形態、又は、全てが一般に“回路”、“モジュール”又は“システム”として参照されることがあるソフトウェア及びハードウェアの側面を組み合わせた実施形態の形態をとり得る。さらに、本開示は、媒体内に具現化されたコンピュータ使用可能プログラムコードを有する表現の任意の有形又は非一時的な媒体にて具現化されたコンピュータプログラムプロダクトの形態をとり得る。
図5は、装置による当該命令の実行に応答して本開示の選択された態様を装置に実施させる命令を格納するための使用に好適であり得るコンピュータ読み取り可能な非一時的記憶媒体の一例を示している。図示のように、非一時的なコンピュータ読み取り可能記憶媒体1202は、幾つかのプログラミング命令1204を含み得る。プログラミング命令1204は、当該プログラミング命令の実行に応答して、例えばシステム100及び/又は1つ以上のコア102といった装置が、上述の方法300及び/又は400(の態様)を実装することを可能にするように構成され得る。また、コア102の様々なコンポーネントの一部の態様は、プログラミング命令1204を実行するマイクロコントローラ112によって実装され得る。ファームウェアイメージは、プログラミング命令1204で実装されてもよい。それに代わる実施形態では、プログラミング命令1204は代わりに複数のコンピュータ読み取り可能な非一時的記憶媒体1202上に置かれてもよい。更なる他の実施形態において、プログラミング命令1204は、例えば信号などのコンピュータ読み取り可能な一時的記憶媒体1202上に置かれてもよい。
【0065】
任意の組み合わせの1つ以上のコンピュータ使用可能媒体又はコンピュータ読み取り可能媒体が利用されてもよい。コンピュータ使用可能な又はコンピュータ読み取り可能な媒体は、例えば、以下に限られないが、電子、磁気、光、電磁気、赤外線、又は半導体システム、装置、デバイス、又は伝搬媒体とし得る。コンピュータ読み取り可能媒体のより具体的な例(非網羅的なリスト)は以下を含み、すなわち、1つ以上のワイヤを有する電気接続、ポータブルコンピュータディスケット、ハードディスク、ランダムアクセスメモリ(RAM)、読み出し専用メモリ(ROM)、消去可能プログラム可能読み出し専用メモリ(EPROM又はフラッシュメモリ)、光ファイバ、可搬式コンパクトディスク読み出し専用メモリ(CD-ROM)、光ストレージ装置、例えばインターネット若しくはイントラネットをサポートするものなどの伝送媒体、又は磁気ストレージ装置を含む。なお、コンピュータ使用可能な又はコンピュータ読み取り可能な媒体は、上にプログラムが印刷された紙又は他の好適な媒体であってさえよい。何故なら、プログラムが、例えば紙又は他の媒体の光学的走査によって電子的に捕捉され、次いで必要に応じて適切な方法でコンパイルされ、解釈され、又は他の方法で処理され、そして、コンピュータメモリに格納されることができるからである。この文書の文脈において、コンピュータ使用可能な又はコンピュータ読み取り可能な媒体は、命令実行システム、装置、又はデバイスによる使用又はそれらと関連しての使用のためにプログラムを収容し、記憶し、通信し、伝搬し、又は輸送することができる任意の媒体とし得る。コンピュータ使用可能媒体は、ベースバンドにて又は搬送波の一部としてのいずれかでコンピュータ使用可能プログラムコードを具現化した伝播されるデータ信号を含み得る。コンピュータ使用可能プログラムコードは、以下に限られないが、無線、有線、光ファイバケーブル、RFなどを含任意の適切な媒体を用いて伝送され得る。
【0066】
本開示の動作を実行するためのコンピュータプログラムコードは、例えばJava(登録商標)、Smalltalk、C++若しくはこれらに類するものなどのオブジェクト指向プログラミング言語、及び例えば“C”プログラミング言語若しくは類似のプログラミング言語などの従来からの手続型プログラミング言語を含め、任意の組み合わせの1つ以上のプログラミング言語で記述され得る。プログラムコードは、スタンドアロンのソフトウェアパッケージとして、全体としてユーザのコンピュータ上で又は部分的にユーザのコンピュータ上で実行されてもよいし、部分的にユーザのコンピュータ上で且つ部分的には遠隔コンピュータ上で、又は全体として遠隔コンピュータ若しくはサーバ上で実行されてもよい。後者のシナリオでは、遠隔コンピュータは、ローカルエリアネットワーク(LAN)又はワイドエリアネットワーク(WAN)を含め、何らかのタイプのネットワークを介してユーザのコンピュータに接続されることができ、あるいは、(例えば、インターネットサービスプロバイダを使用してインターネットを介して)外部コンピュータに対して接続が為されてもよい。
【0067】
本開示は、開示の実施形態に従った方法、装置(システム)及びコンピュータプログラムプロダクトのフローチャート、説明図及び/又はブロック図を参照して記述される。理解されることには、フローチャート説明図及び/又はブロック図の各ブロック、並びにフローチャート説明図及び/又はブロック図の中のブロックの組み合わせは、コンピュータプログラム命令によって実装されることができる。これらのコンピュータプログラム命令が、汎用コンピュータ、専用コンピュータ、又はその他のプログラム可能データ処理装置のプロセッサに提供されることで、該コンピュータ又はその他のプログラム可能データ処理装置のプロセッサによって実行される命令が、フローチャート及び/又はブロック図の1つ以上のブロックで指定される機能/動作を実施する手段を生み出すようなマシンを作り出し得る。
【0068】
これらのコンピュータプログラム命令はまた、コンピュータ又は他のプログラム可能データ処理装置に特定の方法で機能するように指示することができるコンピュータ読み取り可能媒体に格納されることで、コンピュータ読み取り可能媒体に格納された命令が、フローチャート及び/又はブロック図の1つ以上のブロックで指定される機能/動作を実施する命令手段を含んだ製造物を作り出すようにし得る。
【0069】
コンピュータプログラム命令はまた、コンピュータ又は他のプログラム可能データ処理装置にロードされて、一連の動作ステップが該コンピュータ又は他のプログラム可能装置上で実行されるようにすることで、該コンピュータ又はその他のプログラム可能装置上で実行される命令が、フローチャート及び/又はブロック図の1つ以上のブロックで指定される機能/動作を実施するプロセスを提供するようなコンピュータ実行プロセスを作り出し得る。
【0070】
図6は、様々な実施形態に従った、ここに記載される装置及び/又は方法(例えば、システム100、コア102、方法300及び/又は方法400)を使用し得るコンピューティング装置1300の一例を示している。図示のように、コンピューティング装置1300は、例えば1つ以上のプロセッサ1304(1つを図示する)及び少なくとも1つの通信チップ1306などの、幾つかのコンポーネントを含み得る。様々な実施形態において、1つ以上のプロセッサ1304は各々、1つ以上のプロセッサコアを含み得る。様々な実施形態において、少なくとも1つの通信チップ1306は、1つ以上のプロセッサ1304に物理的且つ電気的に結合され得る。更なる実装において、通信チップ1306は、1つ以上のプロセッサ1304の一部であってもよい。様々な実施形態において、コンピューティング装置1300はプリント回路基板(PCB)1302を含み得る。これらの実施形態では、その上に1つ以上のプロセッサ1304及び通信チップ1306が配置され得る。代わりの実施形態において、これら様々なコンポーネントは、PCB1302の使用なしで結合されてもよい。
【0071】
その用途に応じて、コンピューティング装置1300は、物理的及び電気的にPCB1302に結合されていてもされなくてもよい他のコンポーネントを含み得る。これら他のコンポーネントは、以下に限られないが、メモリコントローラ1305、揮発性メモリ(例えば、ダイナミックランダムアクセスメモリ(DRAM)1308)、例えば読み出し専用メモリ(ROM)1310、フラッシュメモリ1312、ストレージ装置1311(例えば、ハードディスクドライブ(HDD))などの不揮発性メモリ、I/Oコントローラ1314、デジタル信号プロセッサ(図示せず)、暗号プロセッサ(図示せず)、グラフィックスプロセッサ1316、1つ以上のアンテナ1318、ディスプレイ(図示せず)、タッチスクリーンディスプレイ1320、タッチスクリーンコントローラ1322、バッテリー1324、オーディオコーデック(図示せず)、ビデオコーデック(図示せず)、グローバルポジショニングシステム(GPS)デバイス1328、方位計1330、加速度計(図示せず)、ジャイロスコープ(図示せず)、スピーカ1332、カメラ1334、及び大容量ストレージ(例えばハードディスクドライブ、ソリッドステートドライブ、コンパクトディスク(CD)、デジタル多用途ディスク(DVD)など)(図示せず)などを含む。様々な実施形態において、プロセッサ1304は、システム・オン・チップ(SoC)を形成するように、他のコンポーネントと共に同一ダイ上に集積されてもよい。
【0072】
一部の実施形態において、1つ以上のプロセッサ1304、フラッシュメモリ1312、及び/又はストレージ装置1311は、1つ以上のプロセッサ1304による当該プログラミング命令の実行に応答してここに記載される方法の全て又は選択された態様をコンピューティング装置1300が実施することを可能にするように構成されたプログラミング命令を格納した関連ファームウェア(図示せず)を含み得る。様々な実施形態において、これらの態様は、加えて、あるいは代わりに、1つ以上のプロセッサ1304、フラッシュメモリ1312、又はストレージ装置1311とは別のハードウェアを用いて実装されてもよい。
【0073】
様々な実施形態において、コンピューティング装置1300の1つ以上のコンポーネントが、システム100又はコア102を含んでもよく、及び/又はここに記載された方法300及び/又は方法400の1つ以上の動作を実装してもよい。例えば、システム100又はコア102は、プロセッサ1304、通信チップ1306、I/Oコントローラ1314、メモリコントローラ1305、及び/又はコンピューティング装置1300の別のコンポーネントに実装されてもよい。
【0074】
通信チップ1306は、コンピューティング装置1300への、及びそれからのデータの伝送のための有線及び/又は無線通信を可能にし得る。用語“無線(ワイヤレス)”及びその派生形は、変調された電磁放射線を用いて非固体媒体を介してデータを伝達し得る回路、装置、システム、方法、技術、通信チャネルなどを記述するために使用され得る。この用語は、関連する装置が如何なるワイヤをも含まないことを意味するものではない(一部の実施形態において、如何なるワイヤをも含まないことがあり得る)。通信チップ1306は、数多くある無線規格又はプロトコルのうちの何れを実装してもよい。それらの規格又はプロトコルは、以下に限られないが、IEEE 702.20、ロングタームエボリューション(LTE)、LTEアドバンスト(LTE-A)、ジェネラルパケットラジオサービス(GPRS)、エボリューションデータオプティマイズド(Ev-DO)、エボルブドハイスピードパケットアクセス(HSPA+)、エボルブドハイスピードダウンリンクパケットアクセス(HSDPA+)、エボルブドハイスピードアップリンクパケットアクセス(HSUPA+)、グローバルシステムフォーモバイルコミュニケーション(GSM)、エンハンストデータレートフォーGSMエボリューション(EDGE)、符号分割多重アクセス(CDMA)、時分割多重アクセス(TDMA)、デジタルエンハンストコードレステレコミュニケーションズ(DECT)、ワールドワイドインターオペラビリティフォーマイクロウェイブアクセス(WiMAX)、Bluetooth(登録商標)、これらの派生形、並びに、3G、4G、5G及びそれ以降として指定されるその他の無線プロトコルを含む。コンピューティング装置1300は複数の通信チップ1306を含み得る。例えば、第1の通信チップ1306は、例えばWi-Fi及び/又はBluetooth(登録商標)など、より短距離の無線通信用にされ、第2の通信チップ1306は、例えばGPS、EDGE、GPRS、CDMA、WiMAX、LTE、Ev-DO及び/又はその他など、より長距離の無線通信用にされ得る。
【0075】
様々な実装において、コンピューティング装置1300は、ラップトップ、ネットブック、ノートブック、ウルトラブック(登録商標)、スマートフォン、コンピューティングタブレット、携帯情報端末(PDA)、ウルトラモバイルPC、携帯電話、デスクトップコンピュータ、サーバ、プリンタ、スキャナ、モニタ、セットトップボックス、娯楽制御ユニット(例えば、ゲーム機又は自動車娯楽ユニット)、デジタルカメラ、家電機器、ポータブル音楽プレーヤ、又はデジタルビデオレコーダとし得る。更なる実装において、コンピューティング装置1300は、データを処理するその他の如何なる電子装置であってもよい。
【0076】
図中のフローチャート及びブロック図は、本開示の様々な実施形態に従ったシステム、方法及びコンピュータプログラムプロダクトの取り得る実装のアーキテクチャ、機能、及び動作を示している。これに関連し、フローチャート又はブロック図の各ブロックは、規定された(1つ以上の)論理機能を実装するための1つ以上の実行可能命令を有するものであるモジュール、セグメント、又はコードの一部を表し得る。なお、また、一部の代わりの実装では、ブロックに記載された機能は、図に記載された順序から外れて行われてもよい。例えば、連続して示されている2つのブロックが実際には実質的に同時に実行されてもよく、あるいは、関与する機能に応じてブロックが逆の順序で実行されることがあってもよい。なお、また、ブロック図及び/又はフローチャート説明図の各ブロック、及びブロック図及び/又はフローチャート説明図の中のブロックの組み合わせは、規定された機能又は動作を実行する特殊目的のハードウェアベースのシステム、又は特殊目的のハードウェアとコンピュータ命令との組み合わせによって実装されてもよい。
【0077】
ここで使用される用語は、単に特定の実施形態を説明するためのものであり、開示の限定であることを意図するものではない。ここで使用されるとき、単数形の“a”、“an”及び“the”は、文脈が別のことを明確に示していない限り、複数形も同様に含むことを意図している。更に理解されることには、用語“有する”及び/又は“有している”は、この明細書中で使用されるとき、記述される機構、整数、ステップ、動作、要素、及び/又はコンポーネントの存在を規定するものであるが、1つ以上の他の機構、整数、ステップ、動作、要素、コンポーネント、及び/又はそれらのグループ存在又は追加を排除するものではない。
【0078】
実施形態は、コンピュータプロセス、コンピューティングシステム、又は例えばコンピュータ読み取り可能媒体のコンピュータプログラムプロダクトなどの製造物品として実装され得る。コンピュータプログラムプロダクトは、コンピュータシステムによって読み取り可能で、コンピュータプロセスを実行するためのコンピュータプログラム命令をエンコードした、コンピュータ記憶媒体とし得る
以下の請求項中の全てのミーンズ又はステップ・プラス・ファンクション要素の対応する構造、材料、動作、及び均等は、その機能を実行するための任意の構造、材料、又は動作を、具体的に請求項に記載される他の請求項記載要素と組み合わせて含むことを意図している。本開示の記述は、例示及び説明の目的で提示されており、網羅的であることや開示された形態に限定されることを意図するものではない。開示の範囲及び精神から逸脱することなく、数多くの変更及び変形が当業者には明らかになる。実施形態は、開示の原理及び実用的用途を最もよく説明して、当業者が企図する特定の用途に適した様々な変更とともに実施形態の開示を理解することを可能にするために選択されて記述されたものである。
【0079】
例
以下の例は更なる実施形態に関する。
【0080】
例1は、マルチコアプロセッサを含み、当該マルチコアプロセッサは、2つ以上のコアであり、各コアが、マイクロコントローラを含み且つ自律コアペリメータロジックに結合されている、2つ以上のコアと、各自律コアペリメータロジックと通信する回路であり、当該プロセッサを低電力状態に置くための信号の受信に基づいて、前記2つ以上のコアのうちの少なくとも1つのコアの前記マイクロコントローラを停止させ、前記2つ以上のコアのうちの第1のコアの前記マイクロコントローラからファームウェアコードを保存し、且つ前記2つ以上のコアの各々の前記マイクロコントローラから状態情報を保存する、ように適応された回路と、を有し、前記回路は更に、前記プロセッサを前記低電力状態から戻すための信号の受信に基づいて、全ての前記コアに前記ファームウェアコードを復元し、且つ各コアにそれぞれの前記状態情報を復元する、ように適応されている。
【0081】
例2は、例1又はこの中の何らかの他の例に係る事項を含み、前記回路は、メモリユニットと通信し、前記ファームウェアコード及び前記状態情報を前記メモリユニットに格納する。
【0082】
例3は、例1若しくは2又はこの中の何らかの他の例に係る事項を含み、前記回路は、ダイ内インタフェース上で前記メモリユニットと通信する。
【0083】
例4は、例1乃至3のいずれか又はこの中の何らかの他の例に係る事項を含み、前記回路は電力管理エージェントを有する。
【0084】
例5は、例1乃至4のいずれか又はこの中の何らかの他の例に係る事項を含み、前記回路は更に、バブル生成先入先出(FIFO)構造を用いて前記メモリユニットと通信する。
【0085】
例6は、例1乃至5のいずれか又はこの中の何らかの他の例に係る事項を含み、前記自律コアペリメータロジックはファブリックインタフェースロジックを有する。
【0086】
例7は、例1乃至6のいずれか又はこの中の何らかの他の例に係る事項を含み、当該プロセッサはシステム・オン・チップ(SoC)を有する。
【0087】
例8は、例1乃至7のいずれか又はこの中の何らかの他の例に係る事項を含み、前記回路は、前記ファームウェアコード及びそれぞれの前記状態情報が保存された後に前記マイクロコントローラを再開させる。
【0088】
例9は、プロセッサ内の回路によって実行可能な命令を含んだ非一時的なコンピュータ読み取り可能媒体(CRM)を含み、前記命令は、実行されるときに前記回路に、複数の処理コアのうちの第1の処理コアに付随するコアペリメータロジックに含まれるマイクロコントローラを停止させ、前記複数の処理コアの各々にコアペリメータロジックが付随し、前記複数の処理コアが共通のマイクロコントローラファームウェアコードを共有しており、前記コアペリメータロジックの前記マイクロコントローラからの状態情報を保存させ、前記マイクロコントローラファームウェアコードが保存されているかを決定させ、前記マイクロコントローラファームウェアコードが保存されていない場合、前記コアペリメータロジックの前記マイクロコントローラからの前記マイクロコントローラファームウェアコードを保存させる。
【0089】
例10は、例9又はこの中の何らかの他の例に係る事項を含み、前記命令は前記回路に更に、少なくとも前記状態情報が保存されたら前記マイクロコントローラを再開させる。
【0090】
例11は、例9若しくは10又はこの中の何らかの他の例に係る事項を含み、前記命令は前記回路に、前記状態情報及び前記マイクロコントローラファームウェアコードをメモリユニットに保存させる。
【0091】
例12は、例9乃至11のいずれか又はこの中の何らかの他の例に係る事項を含み、前記命令は、前記プロセッサを低電力状態に置くための信号の受信を受けて前記回路によって実行される。
【0092】
例13は、例9乃至12のいずれか又はこの中の何らかの他の例に係る事項を含み、前記命令は、前記プロセッサを前記低電力状態から起こすための信号の受信を受けて、前記回路に更に、前記コアペリメータロジックについての前記状態情報及び前記マイクロコントローラファームウェアコードを前記メモリユニットから取り出させ、前記マイクロコントローラファームウェアコード及び前記状態情報を前記コアペリメータロジックの前記マイクロコントローラに復元させ、且つ前記マイクロコントローラを再開させる。
【0093】
例14は、例9乃至13のいずれか又はこの中の何らかの他の例に係る事項を含み、前記命令は前記回路に更に、前記プロセッサを低電力状態に置くことを中止するための信号の受信を受けて前記マイクロコントローラを再開させる。
【0094】
例15は、例9乃至14のいずれか又はこの中の何らかの他の例に係る事項を含み、前記命令は前記回路に更に、前記マイクロコントローラファームウェアコード及び前記状態情報を格納するためのメモリユニット内の位置を含んだダイ内インタフェースファブリックインタフェースロジックデータブロックを受信させ、且つ前記メモリユニットからの前記コアペリメータロジックについての前記状態情報及び前記マイクロコントローラファームウェアコードを前記メモリユニットの前記位置に格納させる。
【0095】
例16は、マルチコアプロセッサについて電力状態を管理するシステムを含み、当該システムは、各コアが自律コアペリメータに結合された複数のコアと、各自律コアペリメータのファームウェアコード及び状態情報を保管するように構成された回路と、前記回路とデータ通信するメモリユニットと、を有し、前記回路は、前記プロセッサを低電力状態に置くための信号の受信に基づいて、前記メモリユニットに、前記複数のコアの第1の自律コアペリメータからの状態情報及びまだ保存されていない場合の前記ファームウェアコードを保存するとともに、前記複数のコアの残りの自律コアペリメータの各々についての状態情報を保存するように適応されている。
【0096】
例17は、例16又はこの中の何らかの他の例に係る事項を含み、前記自律コアペリメータはファブリックインタフェースロジックを有する。
【0097】
例18は、例16若しくは17又はこの中の何らかの他の例に係る事項を含み、前記回路は電力管理エージェントを有する。
【0098】
例19は、例18又はこの中の何らかの他の例に係る事項を含み、前記電力管理エージェントは、ダイ内インタフェース上で前記メモリユニットと通信する。
【0099】
例20は、例16乃至19のいずれか又はこの中の何らかの他の例に係る事項を含み、前記回路は、前記プロセッサを前記低電力状態から戻すための信号の受信に基づいて、前記第1の自律コアペリメータから保存された前記ファームウェアコードを、前記複数のコアの各自律コアペリメータに復元し、且つ前記複数コアの各自律コアペリメータにそれぞれの前記状態情報を復元する、ように適応されている。
【0100】
例21は、例20又はこの中の何らかの他の例に係る事項を含み、前記回路は更に、前記プロセッサを低電力状態に置くための前記信号の受信に基づいて各自律コアペリメータを停止させるとともに、前記プロセッサを前記低電力状態から戻すための前記信号の受信に基づいて各自律コアペリメータを再開させる。
【0101】
例22は、例16乃至21のいずれか又はこの中の何らかの他の例に係る事項を含み、前記ファームウェアコード及び前記状態情報は、各自律コアペリメータの一部を有するマイクロコントローラに付随する。
【0102】
例23は、集積回路を含み、当該集積回路は、複数の処理手段と、メモリ手段と、前記複数の処理手段の各々に結合されるとともに前記メモリ手段に結合されて、各処理手段に付随する状態情報及びファームウェアコードを前記メモリ手段に格納する手段と、を有し、当該集積回路を低電力状態に置くための信号の受信を受けて、ファームウェアコード及び状態情報を格納する前記手段は、前記複数の処理手段のうちの1つからの前記ファームウェアコードを、まだ格納されていない場合に、前記メモリ手段に格納し、且つ前記複数の処理手段の各々からの前記状態情報を前記メモリ手段に格納する。
【0103】
例24は、例23又はこの中の何らかの他の例に係る事項を含み、当該集積回路を前記低電力状態から再開させるための信号の受信を受けて、ファームウェアコード及び状態情報を格納する前記手段は、前記ファームウェアコードを前記メモリ手段から取り出して前記複数の処理手段の各々にロードし、前記複数の処理手段の各々についての前記状態情報を前記メモリ手段から取り出し、且つ前記複数の処理手段の各々の前記状態情報をそれぞれの処理手段にロードする。
【0104】
例25は、例23若しくは24又はこの中の何らかの他の例に係る事項を含み、前記複数の処理手段の各々がコントローラ手段を含み、該コントローラ手段にそれぞれの処理手段の前記状態情報が付随する。