説明

温度に基づいてマルチコア中央処理装置内の複数のコアを動的に制御するためのシステムおよび方法

マルチコア中央処理装置(CPU)内の電力を制御する方法が開示される。本方法は、ダイ温度を監視するステップと、CPUの作業負荷内の並列性の度合いを判定するステップと、並列性の度合い、ダイ温度、またはそれらの組合せに基づいて、前記CPUの1つまたは複数のコアの電源を上げるまたは落とすステップとを含みうる。

【発明の詳細な説明】
【技術分野】
【0001】
関連出願
本出願は、2009年12月16日に出願した「SYSTEM AND METHOD OF DYNAMICALLY CONTROLLING A PLURALITY OF CORES IN A MULTICORE CENTRAL PROCESSING UNIT」という名称の米国特許仮出願第61/287,011号の優先権を主張するものである。
【背景技術】
【0002】
PCD(ポータブルコンピューティングデバイス)は、いたるところに存在する。これらのデバイスには、セルラ電話機、PDA(携帯情報端末)、ポータブルゲームコンソール、パームトップコンピュータ、およびその他のポータブル電子デバイスが含まれうる。これらのデバイスの一次機能に加えて、多くのデバイスは、周辺機能を含む。例えば、セルラ電話機は、セルラ電話通話を行う一次機能と、スチルカメラ、ビデオカメラ、GPS(全地球測位システム)ナビゲーション、ウェブブラウジング、電子メールを送受信すること、テキストメッセージを送受信すること、プッシュツートーク能力などの周辺機能とを含みうる。そのようなデバイスの機能が増大するにつれ、そのような機能をサポートするのに要求されるコンピューティング能力または処理能力も増大する。さらに、コンピューティング能力が増大するにつれ、そのコンピューティング能力を提供するプロセッサ、または複数のプロセッサを効果的に管理する、より大きな必要性が存在する。
【発明の概要】
【発明が解決しようとする課題】
【0003】
したがって、必要とされているのは、マルチコアCPU内の電力を制御する改良された方法である。
【課題を解決するための手段】
【0004】
図において、同様の参照符号は、特に明記しない限り、様々な図面のすべてにわたって同様の部分を指す。
【図面の簡単な説明】
【0005】
【図1】閉じられた位置におけるPCD(ポータブルコンピューティングデバイス)の第1の態様を示す前方平面図である。
【図2】開かれた位置におけるPCDの第1の態様を示す前方平面図である。
【図3】PCDの第2の態様を示すブロック図である。
【図4】処理システムを示すブロック図である。
【図5】温度に基づいてマルチコア中央処理装置を制御する方法の第1の態様を説明する流れ図である。
【図6】温度に基づいてマルチコア中央処理装置を制御する方法の第2の態様を説明する流れ図である。
【図7】温度に基づいてマルチコア中央処理装置を制御する方法の第3の態様の第1の部分を説明する流れ図である。
【図8】温度に基づいてマルチコア中央処理装置を制御する方法の第3の態様の第2の部分を説明する流れ図である。
【発明を実施するための形態】
【0006】
「例示的」という語は、本明細書では、「例、実例、または例示の役割をする」を意味するように使用される。本明細書で「例示的」として説明されるいずれの態様も、必ずしも他の態様より好ましい、または有利であると解釈されるべきではない。
【0007】
この説明において、「アプリケーション」という用語には、オブジェクトコード、スクリプト、バイトコード、マークアップ言語ファイル、およびパッチなどの実行可能なコンテンツを有するファイルが含まれることも可能である。さらに、本明細書で言及される「アプリケーション」には、開かれる必要がある可能性がある文書、またはアクセスされる必要がある他のデータファイルなどの、実行可能でない性質のファイルが含まれることも可能である。
【0008】
「コンテンツ」という用語には、オブジェクトコード、スクリプト、バイトコード、マークアップ言語ファイル、およびパッチなどの実行可能なコンテンツを有するファイルが含まれることも可能である。さらに、本明細書で言及される「コンテンツ」には、開かれる必要がある可能性がある文書、またはアクセスされる必要がある他のデータファイルなどの、実行可能でない性質のファイルが含まれることも可能である。
【0009】
この説明において使用される「構成要素」、「データベース」、「モジュール」、「システム」などの用語は、ハードウェア、ファームウェア、ハードウェアとソフトウェアの組合せ、ソフトウェア、または実行中のソフトウェアであるコンピュータ関連のエンティティを指すことを意図している。例えば、構成要素は、プロセッサ上で実行されているプロセス、プロセッサ、オブジェクト、実行可能ファイル、実行のスレッド、プログラム、および/またはコンピュータであることが可能であるが、以上には限定されない。例として、コンピューティングデバイス上で実行されているアプリケーションとそのコンピューティングデバイスがともに、構成要素であることが可能である。1つまたは複数の構成要素が、プロセス内、および/または実行のスレッド内に存在することが可能であり、さらに構成要素は、1つのコンピュータ上に局在化されること、および/または2つ以上のコンピュータの間に分散されることが可能である。さらに、これらの構成要素は、様々なデータ構造が格納されている様々なコンピュータ可読媒体から実行されることが可能である。これらの構成要素は、1つまたは複数のデータパケットを有する信号に従うなどして、ローカルプロセスおよび/または遠隔プロセスを介して通信することが可能である(例えば、1つの構成要素からのデータが、その信号によってローカルシステムまたは分散システムにおける別の構成要素と対話して、さらに/またはインターネットなどのネットワークを介して他のシステムと対話して)。
【0010】
図1および図2を最初に参照すると、例示的なPCD(ポータブルコンピューティングデバイス)が示され、全体的に100で表されている。図示されるとおり、PCD100は、筐体102を含むことが可能である。筐体102は、上側筐体部分104と、下側筐体部分106とを含むことが可能である。図1は、上側筐体部分104がディスプレイ108を含む可能性があることを示す。或る特定の態様において、ディスプレイ108は、タッチスクリーンディスプレイであることが可能である。また、上側筐体部分104は、トラックボール入力デバイス110を含むことも可能である。さらに、図1に示されるとおり、上側筐体部分104は、電源オンボタン112と、電源オフボタン114とを含むことが可能である。図1に示されるとおり、PCD100の上側筐体部分104は、複数のインジケータライト116と、スピーカ118とを含むことが可能である。各インジケータライト116は、LED(発光ダイオード)であることが可能である。
【0011】
或る特定の態様において、図2に示されるとおり、上側筐体部分104は、下側筐体部分106に対して動くことが可能である。具体的には、上側筐体部分104は、下側筐体部分106に対してスライド可能でありうる。図2に示されるとおり、下側筐体部分106は、マルチボタンキーボード120を含むことが可能である。或る特定の態様において、マルチボタンキーボード120は、標準のQWERTYキーボードであることが可能である。マルチボタンキーボード120は、上側筐体部分104が下側筐体部分106に対して動かされると、あらわになることが可能である。図2は、PCD100が、下側筐体部分106上にリセットボタン122を含む可能性があることをさらに示す。
【0012】
図3を参照すると、PCD(ポータブルコンピューティングデバイス)の例示的な、限定的でない態様が示され、全体的に320で表されている。図示されるとおり、PCD320は、マルチコアCPU324を含むオンチップのシステム322を含む。マルチコアCPU324は、第0のコア325と、第1のコア326と、第Nのコア327とを含むことが可能である。
【0013】
図3に示されるとおり、ディスプレイコントローラ328およびタッチスクリーンコントローラ330が、マルチコアCPU324に結合される。オンチップのシステム322の外部にあるタッチスクリーンディスプレイ332が、ディスプレイコントローラ328およびタッチスクリーンコントローラ330に結合される。
【0014】
図3は、ビデオエンコーダ334、例えば、PAL(位相反転線)エンコーダ、SECAM(順次カラーメモリ)エンコーダ、またはNTSC(全米テレビジョン放送方式標準化委員会)エンコーダが、マルチコアCPU324に結合されることをさらに示す。さらに、ビデオ増幅器336が、ビデオエンコーダ334およびタッチスクリーンディスプレイ332に結合される。また、ビデオポート338が、ビデオ増幅器336に結合される。図3に示されるとおり、USB(ユニバーサルシリアルバス)コントローラ340が、マルチコアCPU324に結合される。また、USBポート342が、USBコントローラ340に結合される。また、メモリ344およびSIM(加入者IDモジュール)カード346が、マルチコアCPU324に結合されることも可能である。さらに、図3に示されるとおり、デジタルカメラ348が、マルチコアCPU324に結合されることが可能である。或る例示的な態様において、デジタルカメラ348は、CCD(電荷結合素子)カメラまたはCMOS(相補性金属酸化膜半導体)カメラである。
【0015】
図3にさらに示されるとおり、ステレオオーディオCODEC350が、マルチコアCPU324に結合されることが可能である。さらに、オーディオ増幅器352が、ステレオオーディオCODEC350に結合されることが可能である。或る例示的な態様において、第1のステレオスピーカ354、および第2のステレオスピーカ356が、オーディオ増幅器352に結合される。図3は、マイクロフォン増幅器358が、ステレオオーディオCODEC350に結合されることも可能であることを示す。さらに、マイクロフォン360が、マイクロフォン増幅器358に結合されることが可能である。或る特定の態様において、FM(周波数変調)ラジオチューナ362が、ステレオオーディオCODEC350に結合されることが可能である。また、FMアンテナ364が、FMラジオチューナ362に結合される。さらに、ステレオヘッドフォン366が、ステレオオーディオCODEC350に結合されることが可能である。
【0016】
図3は、RF(無線周波数)トランシーバ368がマルチコアCPU324に結合されることが可能であることをさらに示す。RFスイッチ370が、RFトランシーバ368およびRFアンテナ372に結合されることが可能である。図3に示されるとおり、キーパッド374が、マルチコアCPU324に結合されることが可能である。また、マイクロフォンを有するモノラルヘッドセット376が、マルチコアCPU324に結合されることも可能である。さらに、振動デバイス378が、マルチコアCPU324に結合されることが可能である。また、図3は、電源380が、オンチップのシステム322に結合される可能性があることも示す。或る特定の態様において、電源380は、電力を要求するPCD320の様々な構成要素に電力を供給するDC(直流)電源である。さらに、或る特定の態様において、この電源は、充電可能なDCバッテリ、あるいはAC(交流)電源に接続されたAC/DC変圧器から導かれるDC電源である。
【0017】
PCD320はさらに、PCD320と関連するダイ温度を感知するために使用されうる温度センサ382を含みうる。換言すれば、温度センサ382は、PCD320と関連するダイ温度を感知する手段の役割を果たすことができる。
【0018】
図3は、PCD320が、データネットワーク、例えば、ローカルエリアネットワーク、パーソナルエリアネットワーク、または他の任意のネットワークにアクセスするのに使用されうるネットワークカード388を含むことも可能であることをさらに示す。ネットワークカード388は、Bluetooth(登録商標)ネットワークカード、WiFiネットワークカード、PAN(パーソナルエリアネットワーク)カード、PeANUT(パーソナルエリアネットワーク超低電力技術)ネットワークカード、または当技術分野でよく知られている他の任意のネットワークカードであることが可能である。さらに、ネットワークカード388は、チップに組み込まれることが可能であり、すなわち、ネットワークカード388は、チップ内の完全なソリューションであってもよく、別個のネットワークカード388ではなくてもよい。
【0019】
図3に示されるとおり、タッチスクリーンディスプレイ332、ビデオポート338、USBポート342、カメラ348、第1のステレオスピーカ354、第2のステレオスピーカ356、マイクロフォン360、FMアンテナ364、ステレオヘッドフォン366、RFスイッチ370、RFアンテナ372、キーパッド374、モノラルヘッドセット376、振動器378、および電源380は、オンチップのシステム322の外部にある。
【0020】
或る特定の態様において、本明細書で説明される方法ステップの1つまたは複数が、コンピュータプログラム命令としてメモリ344の中に格納されることが可能である。これらの命令は、本明細書で説明される方法を実行するためにマルチコアCPU324によって実行されることが可能である。さらに、マルチコアCPU324、メモリ344、温度センサ382、またはそれらの組合せは、温度に基づいてマルチコア中央処理装置を制御するために、本明細書に記載の方法のステップのうちの1つまたは複数を実行する手段の役割を果たすことができる。
【0021】
図4を参照すると、処理システムが示され、全体的に500で表されている。或る特定の態様において、処理システム500は、図3に関連して前述したPCD320に組み込まれることが可能である。図示されるとおり、処理システム500は、マルチコアCPU(中央処理装置)402と、そのマルチコアCPU402に接続されたメモリ404とを含むことが可能である。マルチコアCPU402は、第0のコア410と、第1のコア412と、第Nのコア414とを含むことが可能である。第0のコア410は、第0の動的クロックと、第0の動的クロックの上で実行されるDCVS(電圧スケーリング)アルゴリズム416とを含むことが可能である。第1のコア412は、第1のコア412上で実行される第1のDCVSアルゴリズム417を含むことが可能である。さらに、第Nのコア414は、第Nのコア414上で実行される第NのDCVSアルゴリズム418を含むことが可能である。或る特定の態様において、各DCVSアルゴリズム416、417、418は、それぞれのコア410、412、414上で独立に実行されることが可能である。
【0022】
さらに、図示されるとおり、メモリ404は、メモリ404上に格納されたオペレーティングシステム420を含むことが可能である。オペレーティングシステム420は、スケジューラ422を含むことが可能であり、さらにスケジューラ422は、第1の実行キュー424と、第2の実行キュー426と、第Nの実行キュー428とを含むことが可能である。また、メモリ404は、メモリ404上に格納された第1のアプリケーション430と、第2のアプリケーション432と、第Nのアプリケーション434とを含むことも可能である。
【0023】
或る特定の態様において、アプリケーション430、432、434が、マルチコアCPU402内のコア410、412、414において処理されるべき1つまたは複数のタスク436をオペレーティングシステム420に送ることが可能である。タスク436は、単独のタスクとして、単独のスレッドとして、またはそのようなタスクとスレッドの組合せとして処理される、または実行されることが可能である。さらに、スケジューラ422が、マルチコアCPU402内で実行されるように、それらのタスク、スレッド、またはタスクとスレッドの組合せをスケジュールすることが可能である。加えて、スケジューラ422は、それらのタスク、スレッド、またはタスクとスレッドの組合せを実行キュー424、426、428の中に入れることが可能である。コア410、412、414が、コア410、412、414においてそれらのタスクおよびスレッドを処理するため、または実行するために、例えば、オペレーティングシステム420によって、命令されるとおりに、実行キュー424、426、428からそれらのタスク、スレッド、またはタスクとスレッドの組合せを取り出すことが可能である。
【0024】
図4はまた、そこに格納された並列性モニタ440を含みうるメモリ404も示す。並列性モニタ440は、オペレーティングシステム420およびマルチコアCPU402に接続されうる。具体的には、並列性モニタ440は、オペレーティングシステム420内のスケジューラ422に接続されうる。本明細書に記載のとおり、並列性モニタ440はコア410、412、414上の作業負荷を監視することができ、並列性モニタ440は、以下に記載のとおり、コア410、412、414への電力を制御することができる。
【0025】
特定の一態様で、並列性モニタ440は、スケジューラ422内の実行キュー424、426、428を監視するソフトウェアプログラムでもよい。各実行キュー424、426、428(別称、実行準備済みのキュー)は、1つまたは複数のコア410、412、414でのスケジューリングに使用可能な現在のタスク、スレッド、またはそれらの組合せのリストを含みうる。いくつかのマルチコアシステムは、単一の実行準備済みのキューのみをもちうる。他のマルチコアシステムは、複数の実行準備済みのキューをもちうる。実行準備済みのキューの数に関わらず、任意の瞬間に、これらのキューで待つタスク、スレッド、またはそれらの組合せの総数に、実際に走っているタスク、スレッド、またはそれらの組合せの数を足した数は、作業負荷における並列性の度合いの近似でありうる。
【0026】
図5を参照すると、温度に基づいてマルチコア中央処理装置を制御する方法の第1の態様が示され、概して500と指示される。方法500は、ブロック502で、デバイスの電源がオンにされるときに以下のステップが実行されうる、DOループを開始することができる。
【0027】
ブロック504で、ダイ温度は監視されうる。さらに、ブロック506で、電力コントローラが、そのコアに関連する作業負荷における並列性の度合いを判定することができる。
【0028】
ブロック508に移ると、電力コントローラは、作業負荷並列性の度合い、ダイ温度、またはそれらの組合せに基づいて、独立してコアの電源を入れるまたは落とすことができる。次に、判定510で、電力コントローラは、デバイスの電源がオフにされたかどうかを判定することができる。デバイスの電源がオフにされた場合、本方法は終了することができる。そうではなくて、デバイスの電源がオンのままである場合、本方法500はブロック504に戻ることができ、本方法500は記載のとおり継続することができる。
【0029】
図6を参照すると、温度に基づいてマルチコア中央処理装置を制御する方法の第2の態様が示され、概して600と指示される。本方法600は、マルチコア中央処理装置内のすべての動作コアでの動的クロックおよび電圧スケーリング(dynamic clock and voltage scaling、DCVS)アルゴリズムの走行、実行を、ブロック602で開始することができる。ブロック604に移ると、サンプリング遅延が実行されうる。特定の一態様で、サンプリング遅延は、100ミリ秒以下でもよい。もう1つの態様で、サンプリング遅延は、50ミリ秒以下でもよい。サンプリング遅延は、システム内の非常に速い撹拌を防ぐために、導入されうる。さらに、それは通常は、もう1つのコアを起動するのにいくらかの時間を要し、サンプリング遅延は起動時間よりも長いことがある。
【0030】
判定606に移ると、コアコントローラは、そのダイ温度が臨界条件と等しいかどうかを判定することができる。例えば、臨界条件は、それより上ではデバイスの動作が温度の問題により故障し始めることがある、閾値温度でもよい。
【0031】
判定606で、ダイ温度が臨界条件と等しくない場合、本方法600はブロック602に戻ることができ、本方法600は本明細書に記載のとおり継続することができる。そうではなくて、ダイ温度が臨界条件と等しい場合、本方法600は判定608に移ることができ、コアコントローラは、第2のコアが休眠状態であるかどうかを判定することができ、例えば、第2のコアはCPU1でもよい(第1のコアはCPU0でもよい)。
【0032】
第2のコアが休眠状態でない場合、すなわち、CPU1がアクティブであり、タスクおよびスレッドを実行している場合、本方法600はブロック610に進むことができる。ブロック610で、第1のコア、CPU0、の周波数が、1インクリメンタルステップだけ下げた第1のコアの周波数および最適な周波数、Fopt、の最大値に設定されうる、または他の方法で移されうる。換言すれば、コアコントローラは、最適な周波数、Fopt、を下回ることなしに、1インクリメンタルステップだけ第2のコアの周波数を減らすことができる。そのインクリメンタルステップは、100メガヘルツ(100MHz)以下でもよい。さらに、そのインクリメンタルステップは、50メガヘルツ(50MHz)以下でもよい。ブロック610から、本方法600は、ブロック602に戻ることができ、本方法600は記載のとおり継続することができる。
【0033】
判定608に戻り、CPU1が休眠状態である、すなわちCPU1の電源がオフである、場合、本方法600は、判定612に進むことができる。判定612で、コントローラは、並列性の度合いが条件に合うかどうかを判定することができる。具体的には、コントローラは、並列性の度合いが第2のコア、CPU1、の動作を保証するのに十分な並列性がシステム内に存在することを示す所定の閾値よりも大きいかどうかを判定することができる。
【0034】
判定612で、並列性の度合いが条件を満たさない場合、本方法はブロック614に移ることができ、第1のコア、CPU0、の周波数は、1インクリメンタルステップだけ下げた第1のコアの周波数および最適な周波数、Fopt、の最大値に設定されうる、または他の方法で移されうる。換言すれば、コアコントローラは、最適な周波数、Foptを下回ることなしに、1インクリメンタルステップだけ第2のコアの周波数を減らすことができる。その後、本方法600はブロック602に戻ることができ、本方法600は本明細書に記載のとおり継続することができる。
【0035】
判定612に戻ると、並列性の度合いが条件を満たす場合、本方法はブロック616に進むことができ、第2のCPU、CPU1、は電源を入れられうる。その後、ブロック618で、第2のコア、CPU1、の周波数は、最適な周波数、Fopt、に設定されうる。また、ブロック618で、第1のコア、CPU0、の周波数は、第1のコアの現在の周波数引く最適な周波数、Fopt、または最適な周波数、Fopt、の最大値に設定されうる。例えば、CPU0が1000メガヘルツ(1000MHz)で動作していて、CPU1が600メガヘルツ(600MHz)の最適な周波数に電源をオンにされる場合、1000MHz引く600MHzは400メガヘルツ(400MHz)と等しく、600MHz(最適な周波数、Fopt)は400MHz(減算演算の結果)よりも大きいため、CPU0の周波数は、600メガヘルツ(600MHz)に変更されうる。
【0036】
もう1つの例で、CPU0が1400メガヘルツ(1400MHz)で動作していて、CPU1が600メガヘルツ(600MHz)の最適な周波数に電源をオンにされる場合、1400MHz引く600MHzは800メガヘルツ(800MHz)と等しく、800MHz(減算演算の結果)は600MHz(最適な周波数、Fopt)よりも大きいため、CPU0の周波数は、800メガヘルツ(800MHz)に変更されうる。
【0037】
判定620に移ると、コントローラは、システム内に持続した並列性が存在するかどうかを判定することができる。換言すれば、コントローラは、そのシステムにおける並列性の度合いが少なくとも所定の時間について条件を満たすかどうかを判定することができる。その条件は、並列性の閾値でもよく、システム内の並列性がその閾値よりも大きい場合、その条件は満たされていると考えることができる。判定620で、並列性が持続される場合、本方法600はブロック602に戻ることができ、本方法600は本明細書に記載のとおり継続することができる。
【0038】
判定620に戻ると、並列性が持続されない場合、本方法600はブロック622に進むことができ、第2のコア、CPU1、は電源を切られうる。その後、本方法600はブロック602に戻ることができ、本方法600は本明細書に記載のとおり継続することができる。
【0039】
ここで図7および図8を参照すると、温度に基づいてマルチコア中央処理装置を制御する方法の第3の態様が示され、概して700と指示される。本方法700は、マルチコア中央処理装置内のすべての動作コアでの動的クロックおよび電圧スケーリング(DCVS)アルゴリズムの走行、または実行をもつブロック702で開始することができる。ブロック704に移ると、サンプリング遅延が実行されうる。特定の一態様で、サンプリング遅延は、100ミリ秒以下でもよい。もう1つの態様で、サンプリング遅延は、50ミリ秒以下でもよい。サンプリング遅延は、システムにおける非常に速い撹拌を防ぐために、導入されうる。さらに、それは通常は、もう1つのコアを目覚めさせるのにいくらかの時間を要し、サンプリング遅延は起動時間よりも長いことがある。
【0040】
判定706に移ると、コアコントローラは、ダイ温度が臨界条件と等しいかどうかを判定することができる。例えば、その臨界条件は、それより上ではデバイスの動作が、温度の問題により、故障し始めることがある閾値温度でもよい。
【0041】
判定706で、ダイ温度が臨界条件と等しくない場合、本方法700はブロック702に戻ることができ、本方法700は本明細書に記載のとおり継続することができる。そうではなくて、ダイ温度が臨界条件と等しい場合、本方法700は判定708に移ることができ、コアコントローラは、第2のコアが休眠状態であるかどうかを判定することができ、例えば、第2のコアはCPU1でもよい(第1のコアはCPU0でもよい)。第2のコアが休眠状態でない場合、本方法700は図8の判定802に進むことができ、本方法700は本明細書に記載のとおり継続することができる。
【0042】
そうではなくて、CPU1が休眠状態でない、すなわちCPU1の電源がオフである、場合、本方法700は判定710に進むことができる。判定710で、コントローラは、並列性の度合いが条件を満たすかどうかを判定することができる。具体的には、コントローラは、その並列性の度合いが第2のコア、CPU1、の動作を保証するのに十分な並列性がシステム内に存在することを示す所定の閾値よりも大きいかどうかを判定することができる。
【0043】
判定710で、並列性の度合いが条件を満たさない場合、本方法はブロック712に移ることができ、第1のコア、CPU0、の周波数は、1インクリメンタルステップだけ下げた第1のコアの周波数および最適な周波数、Fopt、の最大値に設定されうる、または他の方法で移されうる。換言すれば、コアコントローラは、最適な周波数、Fopt、を下回ることなしに、1インクリメンタルステップだけ第2のコアの周波数を減らすことができる。その後、本方法700はブロック702に戻ることができ、本方法700は本明細書に記載のとおり継続することができる。
【0044】
判定710に戻って、並列性の度合いが条件を満たす場合、本方法はブロック714に進むことができ、第2のCPU、CPU1、は電源を入れられうる。その後、ブロック716で、第2のコア、CPU1、の周波数は、最適な周波数、Fopt、に設定されうる。さらに、ブロック716で、第1のコア、CPU0、の周波数は、第1のコアの現在の周波数引く最適な周波数、Fopt、または最適な周波数、Fopt、の最大値に設定されうる。
【0045】
判定718に移ると、コントローラは、システム内に持続した並列性が存在するかどうかを判定することができる。換言すれば、コントローラは、そのシステムにおける並列性の度合いが、両方のコアの継続的動作を保証する少なくとも所定の時間について条件を満たすかどうかを判定することができる。その条件は並列性の閾値でもよく、システム内の並列性がその閾値よりも大きい場合、条件は満たされていると考えることができる。判定718で、並列性が持続される場合、本方法700はブロック702に戻ることができ、本方法700は本明細書に記載のとおり継続することができる。
【0046】
判定718に戻ると、並列性が持続されない場合、本方法700はブロック720に進むことができ、第2のコア、CPU1、は電源を切られうる。その後、本方法700はブロック702に戻ることができ、本方法700は本明細書に記載のとおり継続することができる。
【0047】
判定708に戻ると、第2のコア、CPU1、が休眠状態でない場合、本方法700は判定802に移ることができる。判定802で、コアコントローラは、第Nのコア、CPUN、が休眠状態であるかどうかを判定することができる。第Nのコアが休眠状態でない場合、本方法700はブロック804に進むことができる。ブロック804で、第1のコア、CPU0、の周波数は、1インクリメンタルステップだけ下げた第1のコアの周波数および最適な周波数、Fopt、の最大値に設定されうる、または他の方法で移されうる。換言すれば、コアコントローラは、最適な周波数、Foptを下回ることなしに、1インクリメンタルステップだけ第2のコアの周波数を減らすことができる。さらに、第2のコア、CPU1、の周波数が、1インクリメンタルステップだけ下げた第1のコアの周波数および最適な周波数、Fopt、の最大値に設定されうる、または他の方法で移されうる。また、第Nのコア、CPUN、の周波数が、1インクリメンタルステップだけ下げた第1のコアの周波数および最適な周波数、Fopt、の最大値に設定されうる、または他の方法で移されうる。ブロック804から、本方法700は、図7のブロック702に戻ることができ、そして、本方法700は記載のとおり継続することができる。
【0048】
判定802に戻ると、CPUNが休眠状態でない、すなわち、CPU1がアクティブであり、タスクおよびスレッドを実行している、場合、本方法700は判定806に進むことができる。判定806で、コントローラは並列性の度合いが条件を満たすかどうかを判定することができる。具体的には、コントローラは、並列性の度合いが第Nのコア、CPUN、の動作を保証するのに十分な並列性がシステム内に存在することを示す所定の閾値よりも大きいかどうかを判定することができる。
【0049】
判定806で、並列性の度合いが条件を満たさない場合、本方法はブロック808に移ることができ、第1のコア、CPU0、の周波数が、1インクリメンタルステップだけ下げた第1のコアの周波数および最適な周波数、Fopt、の最大値に設定されうる、または他の方法で移されうる。換言すれば、コアコントローラは、最適な周波数、Foptを下回ることなしに、1インクリメンタルステップだけ第2のコアの周波数を減らすことができる。また、ブロック808で、第2のコア、CPU2、の周波数が、1インクリメンタルステップだけ下げた第1のコアの周波数および最適な周波数、Fopt、の最大値に設定されうる、または他の方法で移されうる。その後、本方法700は図7のブロック702に戻ることができ、本方法700は本明細書に記載のとおり継続することができる。
【0050】
判定806に戻ると、並列性の度合いが条件を満たす場合、本方法はブロック810に進むことができ、第NのCPU、CPUN、は電源を入れられうる。その後、ブロック812で、第Nのコア、CPUN、の周波数は、最適な周波数、Fopt、に設定されうる。さらに、ブロック812で、第1のコア、CPU0、および第2のコア、CPU1、の周波数は、第1のコアの現在の周波数引く最適な周波数、Fopt、または最適な周波数、Fopt、の最大値に設定されうる。
【0051】
判定814に移ると、コントローラは、システム内に持続した並列性が存在するかどうかを判定することができる。換言すれば、コントローラは、Nコアの動作を保証するために、そのシステムにおける並列性の度合いが少なくとも所定の時間について条件を満たすかどうかを判定することができる。その条件は、並列性の閾値でもよく、そのシステムにおける並列性がその閾値よりも大きい場合、その条件は満たされていると考えることができる。判定814で、並列性が持続される場合、本方法700はブロック802に戻ることができ、本方法700は本明細書に記載のとおり継続することができる。
【0052】
判定814に戻ると、並列性が持続されない場合、本方法700はブロック822に進むことができ、1つまたは複数のコアが電源を切られうる。その後、本方法700は図7のブロック702に戻ることができ、本方法700は本明細書に記載のとおり継続することができる。
【0053】
本明細書で説明される方法ステップは、必ずしも説明されるとおりの順序で実行されなくてもよいことを理解されたい。さらに、「その後」、「すると」、「次に」などの語は、ステップの順序を限定することを意図していない。これらの語は、単に、方法ステップの説明において読者を案内するために使用される。さらに、本明細書で説明される方法は、PCD(ポータブルコンピューティングデバイス)上で実行可能であるものとして説明される。PCDは、モバイル電話デバイス、携帯情報端末デバイス、スマートブックコンピューティングデバイス、ネットブックコンピューティングデバイス、ラップトップコンピューティングデバイス、デスクトップコンピューティングデバイス、または以上の組合せであることが可能である。
【0054】
特定の一態様で、システム内の動的電力はV^2fに比例し、ただし、fはクロック周波数であり、Vは電圧を表すことが理解されよう。電圧はまた、周波数との間に正の相関が認められる。換言すれば、所与のクロック周波数で走るためのCPUの最低電圧が存在する。そのようなものとして、ダイで生成される熱はf^3におおよそ比例する。ある種の態様で、特定のデバイスがアセンブルされるとき、そのデバイスは、CPUコアがその最高周波数でまたはその近くで走るときに生成される熱を十分に放散することができないことがある。
【0055】
本明細書で開示されるシステムおよび方法は、本システムにおける並列性を活用し、作業負荷を複数のコアに広げ、それによって遥かに低い周波数で各コアを走らせることによって、デバイスの過熱を防ぐ方法を提供する。クロック周波数に関する熱生成の三次非線形性のため、より低い周波数で2つのコアを走らせることは、ユーザ体験を犠牲にすることなしに、それが単一のコア上の走行であるときに比べてかなり少ない熱を生成する結果をもたらすことになる。
【0056】
特定の一態様で、作業負荷における並列性の度合いは、オペレーティングシステム状態を監視することによって、タスク/スレッドレベルで動的に推定されうる。例えば、監視されうる1つのオペレーティングシステム状態は、すべてのOSスケジューラ実行準備済みのキューの長さである。スケジューラ実行準備済みのキューは、CPU上のスケジューリングに使用可能なスレッドの現在のタスクのリストである。
【0057】
並列性モニタを使用し、本システムは、任意の時点で本システム内に十分な並列性があるかどうか、そして並列性がある期間に亘って持続されるかどうかを判定することができうる。これらの両方は、本明細書に記載の負荷バランシングアルゴリズムで使用されうる。
【0058】
本明細書で開示される負荷バランシングアルゴリズムは、入力のうちの1つとして定期的に測定されるダイ温度を取りうる。さらに、負荷バランシングアルゴリズムは、ハンドセットの適切な動作にとって安全であるとまだ考えられる最高温度である閾値温度、THS、にダイ温度を比較することができる。特定の一実施形態で、THSは、実験を介して見つけることができる。
【0059】
特定の一態様で、各コアについて、最も電力効率のよい電圧および周波数点、Fopt、が存在する。Foptは、最低動作電圧が持続することができる最も高い周波数レベルに近くてもよい。同種のデュアルCPUコアベースのシステムでは、Foptで走る両方のコアは、THSを超える温度を測るのに十分な熱を生成することができない。動作中、CPU動作周波数は、増加的に変更することができ、通常は50〜100MHzのステップにおいて、しばしばわずかな離散値である。
【0060】
任意の時点に開始して、温度センサがこれまでに温度閾値THSを横切った場合、コントローラは1つのまたは両方のコアが走っているかをチェックすることができる。1つのコアのみが走っている場合、コントローラはシステム内に十分な並列性があるかどうかをチェックする。十分な並列性がある場合、コントローラは、それを行うことがFoptより下の周波数をもたらすことにならない限り、同じ量によって第1のコアの周波数を減らしながら、Foptに第2のコアを到達させることができる。第1のコアの周波数を減らすことが周波数をFoptより下にすることになる場合、コントローラは第1のコアをFoptのままにする。この場合もやはり、Foptで走る両方のコアを走らせることがTHSを超えて温度を上げることはできないことが理解されよう。2つのコアの間に作業を広げることは、MIPSの損失およびユーザ体験を害することなしにシステムをクールダウンすることができる。
【0061】
1つまたは複数の例示的な態様において、説明される機能は、ハードウェアで、ソフトウェアで、ファームウェアで、または以上の任意の組合せで実施されることが可能である。ソフトウェアで実施される場合、それらの機能は、マシン可読媒体、すなわち、コンピュータ可読媒体などのコンピュータプログラム製品上に格納される、またはそのようなコンピュータプログラム製品上の1つまたは複数の命令もしくはコードとして伝送されることが可能である。コンピュータ可読媒体には、1つの場所から別の場所にコンピュータプログラムを移すことを円滑にする任意の媒体を含め、コンピュータ記憶媒体と通信媒体の両方が含まれる。記憶媒体は、コンピュータによってアクセスされることが可能である任意の利用可能な媒体であることが可能である。例として、限定としてではなく、そのようなコンピュータ可読媒体は、RAM、ROM、EEPROM、CD-ROMまたは他の光ディスクストレージ、磁気ディスクストレージまたは他の磁気ストレージデバイス、あるいは命令またはデータ構造の形態で所望されるプログラムコードを伝送する、または格納するのに使用されることが可能であり、さらにコンピュータによってアクセスされることが可能である他の任意の媒体を備えることが可能である。また、任意の接続が、コンピュータ可読媒体と適切に呼ばれる。例えば、ソフトウェアが、同軸ケーブル、光ファイバケーブル、より対線、DSL(デジタル加入者線)、あるいは赤外線、電波、およびマイクロ波などのワイヤレス技術を使用して、ウェブサイト、サーバ、または他の遠隔ソースから伝送される場合、その同軸ケーブル、光ファイバケーブル、より対線、DSL、あるいは赤外線、電波、およびマイクロ波などのワイヤレス技術が、媒体の定義に含められる。本明細書で使用されるディスク(Disk)およびディスク(Disc)には、CD(コンパクトディスク)、レーザディスク、光ディスク、DVD(デジタルバーサタイルディスク)、フロッピー(登録商標)ディスク、およびブルーレイディスクが含まれ、ただし、ディスク(Disk)は、通常、データを磁気的に再現するのに対して、ディスク(Disc)は、データを、レーザを使用して光学的に再現する。また、以上の媒体の組合せも、コンピュータ可読媒体の範囲に含められなければならない。
【0062】
選択された態様が、図示され、詳細に説明されてきたが、添付の特許請求の範囲によって規定される、本発明の趣旨および範囲を逸脱することなく、様々な代替および変更が行われうることが理解されよう。
【符号の説明】
【0063】
100、320 ポータブルコンピューティングデバイス
102 筐体
104 上側筐体部分
106 下側筐体部分
108 ディスプレイ
110 トラックボール入力デバイス
112 電源オンボタン
114 電源オフボタン
116 インジケータライト
118 スピーカ
120 マルチボタンキーボード
122 リセットボタン

【特許請求の範囲】
【請求項1】
マルチコア中央処理装置(CPU)内の電力を制御する方法であって、
ダイ温度を監視するステップと、
前記CPUの作業負荷内の並列性の度合いを判定するステップと、
並列性の前記度合い、前記ダイ温度、またはそれらの組合せに基づいて、前記CPUの1つまたは複数のコアの電源を入れるまたは落とすステップと
を備える、方法。
【請求項2】
前記ダイ温度が臨界条件と等しいかどうかを判定するステップ
をさらに備える、請求項1に記載の方法。
【請求項3】
第2のコアが休眠状態であるかどうかを判定するステップ
をさらに備える、請求項2に記載の方法。
【請求項4】
前記第2のコアがアクティブであるときに、最適な周波数を下回ることなしに、1インクリメンタルステップだけ第1のコアの周波数を減らすステップ
をさらに備える、請求項3に記載の方法。
【請求項5】
前記第2のコアがアクティブであるときに、最適な周波数を下回ることなしに、1インクリメンタルステップだけ前記第2のコアの周波数を減らすステップ
をさらに備える、請求項4に記載の方法。
【請求項6】
前記並列性が条件と同等であるかどうかを判定するステップ
をさらに備える、請求項3に記載の方法。
【請求項7】
前記並列性が条件と同等であるときに、最適な周波数に第2のコアの電源を入れるステップ
をさらに備える、請求項6に記載の方法。
【請求項8】
現在の動作周波数引く最適な周波数および前記最適な周波数の最大値に前記第1のコアの周波数を減らすステップ
をさらに備える、請求項7に記載の方法。
【請求項9】
並列性の前記度合いがある期間に亘って持続されるかどうかを判定するステップ
をさらに備える、請求項8に記載の方法。
【請求項10】
並列性の前記度合いが持続されないときに、前記第2のコアの電源をオフにするステップ
をさらに備える、請求項9に記載の方法。
【請求項11】
ダイ温度を監視する手段と、
CPUの作業負荷内の並列性の度合いを判定する手段と、
並列性の前記度合い、前記ダイ温度、またはそれらの組合せに基づいて、前記CPUの1つまたは複数のコアの電源を入れるまたは落とす手段と
を備える、ワイヤレスデバイス。
【請求項12】
前記ダイ温度が臨界条件と等しいかどうかを判定する手段
をさらに備える、請求項11に記載のワイヤレスデバイス。
【請求項13】
第2のコアが休眠状態であるかどうかを判定する手段
をさらに備える、請求項12に記載のワイヤレスデバイス。
【請求項14】
前記第2のコアがアクティブであるときに、最適な周波数を下回ることなしに、1インクリメンタルステップだけ第1のコアの周波数を減らす手段
をさらに備える、請求項13に記載のワイヤレスデバイス。
【請求項15】
前記第2のコアがアクティブであるときに、最適な周波数を下回ることなしに、1インクリメンタルステップだけ前記第2のコアの周波数を減らす手段
をさらに備える、請求項14に記載のワイヤレスデバイス。
【請求項16】
前記並列性が条件と同等であるかどうかを判定する手段
をさらに備える、請求項13に記載のワイヤレスデバイス。
【請求項17】
前記並列性が条件と同等であるときに、最適な周波数に第2のコアの電源を入れる手段
をさらに備える、請求項16に記載のワイヤレスデバイス。
【請求項18】
現在の動作周波数引く最適な周波数および前記最適な周波数の最大値に前記第1のコアの周波数を減らす手段
をさらに備える、請求項17に記載のワイヤレスデバイス。
【請求項19】
前記並列性の度合いがある期間に亘って持続されるかどうかを判定する手段
をさらに備える、請求項18に記載のワイヤレスデバイス。
【請求項20】
前記並列性の度合いが持続されないときに前記第2のコアの電源をオフにする手段
をさらに備える、請求項19に記載のワイヤレスデバイス。
【請求項21】
ダイ温度を監視する、
CPUの作業負荷内の並列性の度合いを判定する、および、
前記並列性の度合い、前記ダイ温度、またはそれらの組合せに基づいて、前記CPUの1つまたは複数のコアの電源を入れるまたは落とす
ように動作可能なプロセッサ
を備える、ワイヤレスデバイス。
【請求項22】
前記プロセッサが、
前記ダイ温度が臨界条件と等しいかどうかを判定する
ようにさらに動作可能な、請求項21に記載のワイヤレスデバイス。
【請求項23】
前記プロセッサが、
第2のコアが休眠状態であるかどうかを判定する
ようにさらに動作可能な、請求項22に記載のワイヤレスデバイス。
【請求項24】
前記プロセッサが、
前記第2のコアがアクティブであるときに、最適な周波数を下回ることなしに、1インクリメンタルステップだけ第1のコアの周波数を減らす
ようにさらに動作可能な、請求項23に記載のワイヤレスデバイス。
【請求項25】
前記プロセッサが、
前記第2のコアがアクティブであるときに、最適な周波数を下回ることなしに、1インクリメンタルステップだけ前記第2のコアの周波数を減らす
ようにさらに動作可能な、請求項24に記載のワイヤレスデバイス。
【請求項26】
前記プロセッサが、
前記並列性が条件と同等であるかどうかを判定する
ようにさらに動作可能な、請求項23に記載のワイヤレスデバイス。
【請求項27】
前記プロセッサが、
前記並列性が条件と同等であるときに最適な周波数に第2のコアの電源を入れる
ようにさらに動作可能な、請求項26に記載のワイヤレスデバイス。
【請求項28】
前記プロセッサが、
現在の動作周波数引く最適な周波数および前記最適な周波数の最大値に前記第1のコアの周波数を減らす
ようにさらに動作可能な、請求項27に記載のワイヤレスデバイス。
【請求項29】
前記プロセッサが、
前記並列性の度合いがある期間に亘って持続されるかどうかを判定する
ようにさらに動作可能な、請求項28に記載のワイヤレスデバイス。
【請求項30】
前記プロセッサが、
前記並列性の度合いが持続されないときに、前記第2のコアの電源をオフにする
ようにさらに動作可能な、請求項29に記載のワイヤレスデバイス。
【請求項31】
ダイ温度を監視するための少なくとも1つの命令と、
CPUの作業負荷内の並列性の度合いを判定するための少なくとも1つの命令と、
前記並列性の度合い、前記ダイ温度、またはそれらの組合せに基づいて、前記CPUの1つまたは複数のコアの電源を入れるまたは落とすための少なくとも1つの命令と
を備える、記憶媒体。
【請求項32】
前記ダイ温度が臨界条件と等しいかどうかを判定するための少なくとも1つの命令
をさらに備える、請求項11に記載の記憶媒体。
【請求項33】
第2のコアが休眠状態であるかどうかを判定するための少なくとも1つの命令
をさらに備える、請求項32に記載の記憶媒体。
【請求項34】
前記第2のコアがアクティブであるときに、最適な周波数を下回ることなしに、1インクリメンタルステップだけ第1のコアの周波数を減らすための少なくとも1つの命令
をさらに備える、請求項33に記載の記憶媒体。
【請求項35】
前記第2のコアがアクティブであるときに、最適な周波数を下回ることなしに、1インクリメンタルステップだけ前記第2のコアの周波数を減らすための少なくとも1つの命令
をさらに備える、請求項34に記載の記憶媒体。
【請求項36】
前記並列性が条件と同等であるかどうかを判定するための少なくとも1つの命令
をさらに備える、請求項33に記載の記憶媒体。
【請求項37】
前記並列性が条件と同等であるときに、最適な周波数に第2のコアの電源を入れるための少なくとも1つの命令
をさらに備える、請求項36に記載の記憶媒体。
【請求項38】
現在の動作周波数引く最適な周波数および前記最適な周波数の最大値に前記第1のコアの周波数を減らすための少なくとも1つの命令
をさらに備える、請求項37に記載の記憶媒体。
【請求項39】
前記並列性の度合いがある期間に亘って持続されるかどうかを判定するための少なくとも1つの命令
をさらに備える、請求項38に記載の記憶媒体。
【請求項40】
前記並列性の度合いが持続されないときに、前記第2のコアの電源をオフにするための少なくとも1つの命令
をさらに備える、請求項39に記載の記憶媒体。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate


【公表番号】特表2013−513898(P2013−513898A)
【公表日】平成25年4月22日(2013.4.22)
【国際特許分類】
【出願番号】特願2012−544633(P2012−544633)
【出願日】平成22年12月8日(2010.12.8)
【国際出願番号】PCT/US2010/059560
【国際公開番号】WO2011/084335
【国際公開日】平成23年7月14日(2011.7.14)
【出願人】(507364838)クアルコム,インコーポレイテッド (446)
【Fターム(参考)】