(57)【特許請求の範囲】
【請求項１】
マルチコア中央処理ユニット(CPU)内の電力を動的に制御する方法であって、
プロセッサにより、前記マルチコアCPUでスケジュールするために使用可能なオペレーティングシステムスケジューラの実行準備済みキューの長さを求めるステップと、
前記プロセッサにより、前記使用可能なオペレーティングシステムスケジューラの実行準備済みキューの前記長さに基づいて、前記マルチコアCPUの第0のコアの作業負荷における並列性の度合いを算出するステップと、
前記プロセッサにより、前記第0のコアの前記作業負荷における並列性の前記度合いが第1の起動条件以上であるかどうかを判定するステップと、
前記第0のコアの前記作業負荷における並列性の前記度合いが前記第1の起動条件以上であり、かつシステム負荷値が所定の条件を満たす場合、前記プロセッサにより、オペレーティングシステムを呼び出して第1のコアの電源を上げるステップとを備え、
並列性の前記度合いは、オペレーティングシステムスケジューラの1つまたは複数の実行準備済みキューで待機しているタスク、スレッド、またはタスクとスレッドの組合せの総数と、前記第0のコア上で実際に実行されているタスク、スレッド、またはタスクとスレッドの組合せの数との合計を含み、
前記システム負荷値は、前記マルチコアCPUの動作のために起動されるべきコアの数を示す方法。
【請求項２】
前記プロセッサにより、オペレーティングシステムを呼び出して第1のコアの電源を上げるステップが、
前記第0のコアの前記作業負荷における並列性の前記度合いが、前記第1の起動条件以上である場合、前記プロセッサにより、前記第1の起動条件が満たされている持続時間を算出するステップと、
前記プロセッサにより、前記持続時間が第1の起動確認条件以上であるかどうかを判定するステップとを備える請求項1に記載の方法。
【請求項３】
前記プロセッサにより、オペレーティングシステムを呼び出して第1のコアの電源を上げるステップが、
前記持続時間が前記第1の起動確認条件以上である場合、前記プロセッサにより、前記オペレーティングシステムを呼び出して前記第1のコアの電源を上げるステップをさらに備える請求項2に記載の方法。
【請求項４】
前記プロセッサにより、前記オペレーティングシステムを呼び出してスケジューリング可能なリソースのセットに前記第1のコアを追加するステップをさらに備える請求項3に記載の方法。
【請求項５】
前記プロセッサにより、前記第0のコアおよび前記第1のコア上の作業負荷における並列性の度合いを受信するステップと、
前記プロセッサにより、前記第0のコアおよび前記第1のコア上の前記作業負荷における並列性の前記度合いが第1のスリープ条件以下であるかどうかを判定するステップとをさらに備える請求項4に記載の方法。
【請求項６】
前記第0のコアおよび前記第1のコア上の前記作業負荷における並列性の前記度合いが前記第1のスリープ条件以下であるときに、前記プロセッサにより、前記第1のスリープ条件が満たされる持続時間を判定するステップと、
前記プロセッサにより、前記第1のスリープ条件が満たされる前記持続時間が第1のスリープ確認条件以上であるかどうかを判定するステップとをさらに備える請求項5に記載の方法。
【請求項７】
前記第1のスリープ条件が満たされる前記持続時間が前記第1のスリープ確認条件以上であるときに、前記プロセッサにより、前記オペレーティングシステムを呼び出して前記第1のコアの現在の状態を保存するステップをさらに備える請求項6に記載の方法。
【請求項８】
前記第1のスリープ条件が満たされる前記持続時間が前記第1のスリープ確認条件以上であるときに、前記プロセッサにより、前記オペレーティングシステムを呼び出して前記第1のコアの電源を落とすステップをさらに備える請求項7に記載の方法。
【請求項９】
前記第1のスリープ条件が満たされる前記持続時間が前記第1のスリープ確認条件以上であるときに、前記プロセッサにより、前記オペレーティングシステムを呼び出してスケジューリング可能なリソースの前記セットから前記第1のコアを取り除くステップをさらに備える請求項8に記載の方法。
【請求項１０】
マルチコア中央処理ユニット(CPU)でスケジュールするために使用可能なオペレーティングシステムスケジューラの実行準備済みキューの長さを求めるための手段と、
前記使用可能なオペレーティングシステムスケジューラの実行準備済みキューの前記長さに基づいて、前記マルチコアCPUの第0のコアの作業負荷における並列性の度合いを算出するための手段と、
前記第0のコアの前記作業負荷における並列性の前記度合いが第1の起動条件以上であるかどうかを判定するための手段と、
前記第0のコアの前記作業負荷における並列性の前記度合いが前記第1の起動条件以上であり、かつシステム負荷値が所定の条件を満たす場合、オペレーティングシステムを呼び出して第1のコアの電源を上げる手段とを備え、
並列性の前記度合いは、オペレーティングシステムスケジューラの1つまたは複数の実行準備済みキューで待機しているタスク、スレッド、またはタスクとスレッドの組合せの総数と、前記第0のコア上で実際に実行されているタスク、スレッド、またはタスクとスレッドの組合せの数との合計を含み、
前記システム負荷値は、前記マルチコアCPUの動作のために起動されるべきコアの数を示すワイヤレスデバイス。
【請求項１１】
オペレーティングシステムを呼び出して第1のコアの電源を上げる手段が、
前記第0のコアの前記作業負荷における並列性の前記度合いが、前記第1の起動条件以上である場合、前記第1の起動条件が満たされている持続時間を算出するための手段と、
前記持続時間が第1の起動確認条件以上であるかどうかを判定するための手段とを備える請求項10に記載のワイヤレスデバイス。
【請求項１２】
オペレーティングシステムを呼び出して第1のコアの電源を上げる手段が、
前記持続時間が前記第1の起動確認条件以上である場合、前記オペレーティングシステムを呼び出して前記第1のコアの電源を上げる手段をさらに備える請求項11に記載のワイヤレスデバイス。
【請求項１３】
前記オペレーティングシステムを呼び出してスケジューリング可能なリソースのセットに前記第1のコアを追加する手段をさらに備える請求項12に記載のワイヤレスデバイス。
【請求項１４】
前記第0のコアおよび前記第1のコア上の作業負荷における並列性の度合いを受信する手段と、
前記第0のコアおよび前記第1のコア上の前記作業負荷における並列性の前記度合いが第1のスリープ条件以下であるかどうかを判定する手段とをさらに備える請求項13に記載のワイヤレスデバイス。
【請求項１５】
前記第0のコアおよび前記第1のコア上の前記作業負荷における並列性の前記度合いが前記第1のスリープ条件以下であるときに、前記第1のスリープ条件が満たされる持続時間を判定する手段と、
前記第1のスリープ条件が満たされる前記持続時間が第1のスリープ確認条件以上であるかどうかを判定する手段とをさらに備える請求項14に記載のワイヤレスデバイス。
【請求項１６】
前記第1のスリープ条件が満たされる前記持続時間が前記第1のスリープ確認条件以上であるときに、前記オペレーティングシステムを呼び出して前記第1のコアの現在の状態を保存する手段をさらに備える請求項15に記載のワイヤレスデバイス。
【請求項１７】
前記第1のスリープ条件が満たされる前記持続時間が前記第1のスリープ確認条件以上であるときに、前記オペレーティングシステムを呼び出して前記第1のコアの電源を落とす手段をさらに備える請求項16に記載のワイヤレスデバイス。
【請求項１８】
前記第1のスリープ条件が満たされる前記持続時間が前記第1のスリープ確認条件以上であるときに、前記オペレーティングシステムを呼び出してスケジューリング可能なリソースの前記セットから前記第1のコアを取り除く手段をさらに備える請求項17に記載のワイヤレスデバイス。
【請求項１９】
マルチコア中央処理ユニット(CPU)でスケジュールするために使用可能なオペレーティングシステムスケジューラの実行準備済みキューの長さを求める手順と、
前記使用可能なオペレーティングシステムスケジューラの実行準備済みキューの前記長さに基づいて、前記マルチコアCPUの第0のコアの作業負荷における並列性の度合いを算出する手順と、
前記第0のコアの前記作業負荷における並列性の前記度合いが第1の起動条件以上であるかどうかを判定する手順と、
前記第0のコアの前記作業負荷における並列性の前記度合いが前記第1の起動条件以上であり、かつシステム負荷値が所定の条件を満たす場合、オペレーティングシステムを呼び出して第1のコアの電源を上げる手順とを実行するように構成されたプロセッサを備え、
並列性の前記度合いは、オペレーティングシステムスケジューラの1つまたは複数の実行準備済みキューで待機しているタスク、スレッド、またはタスクとスレッドの組合せの総数と、前記第0のコア上で実際に実行されているタスク、スレッド、またはタスクとスレッドの組合せの数との合計を含み、
前記システム負荷値は、前記マルチコアCPUの動作のために起動されるべきコアの数を示すワイヤレスデバイス。
【請求項２０】
オペレーティングシステムを呼び出して第1のコアの電源を上げる手順が、
前記第0のコアの前記作業負荷における並列性の前記度合いが、前記第1の起動条件以上である場合、前記第1の起動条件が満たされている持続時間を算出する手順と、
前記持続時間が第1の起動確認条件以上であるかどうかを判定する手順とを備える請求項19に記載のワイヤレスデバイス。
【請求項２１】
オペレーティングシステムを呼び出して第1のコアの電源を上げる手順が、
前記持続時間が前記第1の起動確認条件以上である場合、前記オペレーティングシステムを呼び出して前記第1のコアの電源を上げる手順をさらに備える請求項20に記載のワイヤレスデバイス。
【請求項２２】
前記プロセッサが、
前記オペレーティングシステムを呼び出してスケジューリング可能なリソースのセットに前記第1のコアを追加する手順を実行するようにさらに構成された請求項21に記載のワイヤレスデバイス。
【請求項２３】
前記プロセッサが、
前記第0のコアおよび前記第1のコア上の作業負荷における並列性の度合いを受信する手順と、
前記第0のコアおよび前記第1のコア上の前記作業負荷における並列性の前記度合いが第1のスリープ条件以下であるかどうかを判定する手順とを実行するようにさらに構成された請求項22に記載のワイヤレスデバイス。
【請求項２４】
前記プロセッサが、
前記第0のコアおよび前記第1のコア上の前記作業負荷における並列性の前記度合いが前記第1のスリープ条件以下であるときに、前記第1のスリープ条件が満たされる持続時間を判定する手順と、
前記第1のスリープ条件が満たされる前記持続時間が第1のスリープ確認条件以上であるかどうかを判定する手順とを実行するようにさらに構成された請求項23に記載のワイヤレスデバイス。
【請求項２５】
前記プロセッサが、
前記第1のスリープ条件が満たされる前記持続時間が前記第1のスリープ確認条件以上であるときに、前記オペレーティングシステムを呼び出して前記第1のコアの現在の状態を保存する手順を実行するようにさらに構成された請求項24に記載のワイヤレスデバイス。
【請求項２６】
前記プロセッサが、
前記第1のスリープ条件が満たされる前記持続時間が前記第1のスリープ確認条件以上であるときに、前記オペレーティングシステムを呼び出して前記第1のコアの電源を落とす手順を実行するようにさらに構成された請求項25に記載のワイヤレスデバイス。
【請求項２７】
前記プロセッサが、
前記第1のスリープ条件が満たされる前記持続時間が前記第1のスリープ確認条件以上であるときに、前記オペレーティングシステムを呼び出してスケジューリング可能なリソースの前記セットから前記第1のコアを取り除く手順を実行するようにさらに構成された請求項26に記載のワイヤレスデバイス。
【請求項２８】
コンピュータに、
マルチコア中央処理ユニット(CPU)でスケジュールするために使用可能なオペレーティングシステムスケジューラの実行準備済みキューの長さを求める手順と、
前記使用可能なオペレーティングシステムスケジューラの実行準備済みキューの前記長さに基づいて、前記マルチコアCPUの第0のコアの作業負荷における並列性の度合いを算出する手順と、
前記第0のコアの前記作業負荷における並列性の前記度合いが第1の起動条件以上であるかどうかを判定する手順と、
前記第0のコアの前記作業負荷における並列性の前記度合いが前記第1の起動条件以上であり、かつシステム負荷値が所定の条件を満たす場合、オペレーティングシステムを呼び出して第1のコアの電源を上げる手順とを実行させるように構成されたコンピュータ実行可能な命令を格納し、
並列性の前記度合いは、オペレーティングシステムスケジューラの1つまたは複数の実行準備済みキューで待機しているタスク、スレッド、またはタスクとスレッドの組合せの総数と、前記第0のコア上で実際に実行されているタスク、スレッド、またはタスクとスレッドの組合せの数との合計を含み、
前記システム負荷値は、前記マルチコアCPUの動作のために起動されるべきコアの数を示すコンピュータ読み取り可能な記憶媒体。
【請求項２９】
オペレーティングシステムを呼び出して第1のコアの電源を上げる手順が、
前記第0のコアの前記作業負荷における並列性の前記度合いが、前記第1の起動条件以上である場合、前記第1の起動条件が満たされている持続時間を算出する手順と、
前記持続時間が第1の起動確認条件以上であるかどうかを判定する手順とを備える請求項28に記載のコンピュータ読み取り可能な記憶媒体。
【請求項３０】
オペレーティングシステムを呼び出して第1のコアの電源を上げる手順が、
前記持続時間が前記第1の起動確認条件以上である場合、前記オペレーティングシステムを呼び出して前記第1のコアの電源を上げる手順をさらに備える請求項29に記載のコンピュータ読み取り可能な記憶媒体。
【請求項３１】
前記コンピュータに、
前記オペレーティングシステムを呼び出してスケジューリング可能なリソースのセットに前記第1のコアを追加する手順を実行させるように構成されたコンピュータ実行可能な命令をさらに格納した請求項30に記載のコンピュータ読み取り可能な記憶媒体。
【請求項３２】
前記コンピュータに、
前記第0のコアおよび前記第1のコア上の作業負荷における並列性の度合いを受信する手順と、
前記第0のコアおよび前記第1のコア上の前記作業負荷における並列性の前記度合いが第1のスリープ条件以下であるかどうかを判定する手順とを実行させるように構成されたコンピュータ実行可能な命令をさらに格納した請求項31に記載のコンピュータ読み取り可能な記憶媒体。
【請求項３３】
前記コンピュータに、
前記第0のコアおよび前記第1のコア上の前記作業負荷における並列性の前記度合いが前記第1のスリープ条件以下であるときに、前記第1のスリープ条件が満たされる持続時間を判定する手順と、
前記第1のスリープ条件が満たされる前記持続時間が第1のスリープ確認条件以上であるかどうかを判定する手順とを実行させるように構成されたコンピュータ実行可能な命令をさらに格納した請求項32に記載のコンピュータ読み取り可能な記憶媒体。
【請求項３４】
前記コンピュータに、
前記第1のスリープ条件が満たされる前記持続時間が前記第1のスリープ確認条件以上であるときに、前記オペレーティングシステムを呼び出して前記第1のコアの現在の状態を保存する手順を実行させるように構成されたコンピュータ実行可能な命令をさらに格納した請求項33に記載のコンピュータ読み取り可能な記憶媒体。
【請求項３５】
前記コンピュータに、
前記第1のスリープ条件が満たされる前記持続時間が前記第1のスリープ確認条件以上であるときに、前記オペレーティングシステムを呼び出して前記第1のコアの電源を落とす手順を実行させるように構成されたコンピュータ実行可能な命令をさらに格納した請求項34に記載のコンピュータ読み取り可能な記憶媒体。
【請求項３６】
前記コンピュータに、
前記第1のスリープ条件が満たされる前記持続時間が前記第1のスリープ確認条件以上であるときに、前記オペレーティングシステムを呼び出してスケジューリング可能なリソースの前記セットから前記第1のコアを取り除く手順を実行させるように構成されたコンピュータ実行可能な命令をさらに格納した請求項35に記載のコンピュータ読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願
本出願は、参照により内容が本明細書に完全に組み込まれている、2009年12月16日に出願した「SYSTEM AND METHOD OF DYNAMICALLY CONTROLLING A PLURALITY OF CORES IN A MULTICORE CENTRAL PROCESSING UNIT」という名称の米国特許仮出願第61/286,953号の優先権を主張するものである。
【０００２】
関連出願の相互参照
本出願は、同時に出願した、Rychlik他による、米国特許出願第__________号、題名SYSTEM AND METHOD FOR CONTROLLING CENTRAL PROCESSING UNIT POWER IN A VIRTUALIZED SYSTEM(整理番号100329U1)に関し、参照により組み込まれている。本出願は、同時に出願した、Rychlik他による、米国特許出願第__________号、題名SYSTEM AND METHOD FOR ASYNCHRONOUSLY AND INDEPENDENTLY CONTROLLING CORE CLOCKS IN A MULTICORE CENTRAL PROCESSING UNIT(整理番号100330U1)に関し、参照により組み込まれている。本出願は、同時に出願した、Thomson他による、米国特許出願第__________号、題名SYSTEM AND METHOD FOR CONTROLLING CENTRAL PROCESSING UNIT POWER WITH REDUCED FREQUENCY OSCILLATIONS(整理番号100339U1)に関し、参照により組み込まれている。本出願は、同時に出願した、Thomson他による、米国特許出願第__________号、題名SYSTEM AND METHOD FOR CONTROLLING CENTRAL PROCESSING UNIT POWER WITH GUARANTEED TRANSIENT DEADLINES(整理番号100340U1)に関し、参照により組み込まれている。本出願は、同時に出願した、Thomson他による、米国特許出願第__________号、題名SYSTEM AND METHOD FOR CONTROLLING CENTRAL PROCESSING UNIT POWER WITH GUARANTEED STEADY STATE DEADLINES(整理番号100341U1)に関し、参照により組み込まれている。本出願は、同時に出願した、Sur他による、米国特許出願第__________号、題名SYSTEM AND METHOD FOR DYNAMICALLY CONTROLLING A PLURALITY OF CO
RES IN A MULTICORE CENTRAL PROCESSING UNIT BASED ON TEMPERATURE(整理番号100344U1)に関し、参照により組み込まれている。
【背景技術】
【０００３】
PCD(ポータブルコンピューティングデバイス)は、いたるところに存在する。これらのデバイスには、セルラ電話機、PDA(携帯情報端末)、ポータブルゲームコンソール、パームトップコンピュータ、およびその他のポータブル電子デバイスが含まれうる。これらのデバイスの一次機能に加えて、多くのデバイスは、周辺機能を含む。例えば、セルラ電話機は、セルラ電話通話を行う一次機能と、スチルカメラ、ビデオカメラ、GPS(全地球測位システム)ナビゲーション、ウェブブラウジング、電子メールを送受信すること、テキストメッセージを送受信すること、プッシュツートーク能力などの周辺機能とを含みうる。そのようなデバイスの機能が増大するにつれ、そのような機能をサポートするのに要求される処理能力も増大する。さらに、コンピューティング能力が増大するにつれ、そのコンピューティング能力を提供するプロセッサ、または複数のプロセッサを効果的に管理する、より大きな必要性が存在する。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
したがって、必要とされているのは、マルチコアCPU内の電力を制御する改良された方法である。
【課題を解決するための手段】
【０００５】
図において、同様の参照符号は、特に明記しない限り、様々な図面のすべてにわたって同様の部分を指す。
【図面の簡単な説明】
【０００６】
【図１】閉じられた位置におけるPCD(ポータブルコンピューティングデバイス)の第1の態様を示す前方平面図である。
【図２】開かれた位置におけるPCDの第1の態様を示す前方平面図である。
【図３】PCDの第2の態様を示すブロック図である。
【図４】処理システムを示すブロック図である。
【図５】マルチコアCPU内の電力を動的に制御する方法の第1の態様を示す流れ図である。
【図６】マルチコアCPU内の電力を動的に制御する方法の第2の態様を示す流れ図である。
【図７】マルチコアCPU内の電力を動的に制御する方法の第3の態様を示す流れ図である。
【図８】マルチコアCPU内の電力を動的に制御する方法の第4の態様を示す流れ図である。
【図９】マルチコアCPU内の電力を動的に制御する方法の第5の態様の第1の部分を示す流れ図である。
【図１０】マルチコアCPU内の電力を動的に制御する方法の第5の態様の第2の部分を示す流れ図である。
【図１１】マルチコアCPU内の電力を動的に制御する方法の第5の態様の第3の部分を示す流れ図である。
【図１２】マルチコアCPU内の電力を動的に制御する方法の第5の態様の第4の部分を示す流れ図である。
【図１３】マルチコアCPUをテストする方法を説明する流れ図である。
【図１４】マルチコアCPU内の電力を動的に制御する方法の第6の態様を説明する流れ図である。
【発明を実施するための形態】
【０００７】
「例示的」という語は、本明細書では、「例、実例、または例示の役割をする」を意味するように使用される。本明細書で「例示的」として説明されるいずれの態様も、必ずしも他の態様より好ましい、または有利であると解釈されるべきではない。
【０００８】
この説明において、「アプリケーション」という用語には、オブジェクトコード、スクリプト、バイトコード、マークアップ言語ファイル、およびパッチなどの実行可能なコンテンツを有するファイルが含まれることも可能である。さらに、本明細書で言及される「アプリケーション」には、開かれる必要がある可能性がある文書、またはアクセスされる必要がある他のデータファイルなどの、実行可能でない性質のファイルが含まれることも可能である。
【０００９】
「コンテンツ」という用語には、オブジェクトコード、スクリプト、バイトコード、マークアップ言語ファイル、およびパッチなどの実行可能なコンテンツを有するファイルが含まれることも可能である。さらに、本明細書で言及される「コンテンツ」には、開かれる必要がある可能性がある文書、またはアクセスされる必要がある他のデータファイルなどの、実行可能でない性質のファイルが含まれることも可能である。
【００１０】
この説明において使用される「構成要素」、「データベース」、「モジュール」、「システム」などの用語は、ハードウェア、ファームウェア、ハードウェアとソフトウェアの組合せ、ソフトウェア、または実行中のソフトウェアであるコンピュータ関連のエンティティを指すことを意図している。例えば、構成要素は、プロセッサ上で実行されているプロセス、プロセッサ、オブジェクト、実行可能ファイル、実行のスレッド、プログラム、および/またはコンピュータであることが可能であるが、以上には限定されない。例として、コンピューティングデバイス上で実行されているアプリケーションとそのコンピューティングデバイスがともに、構成要素であることが可能である。1つまたは複数の構成要素が、プロセス内、および/または実行のスレッド内に存在することが可能であり、さらに構成要素は、1つのコンピュータ上に局在化されること、および/または2つ以上のコンピュータの間に分散されることが可能である。さらに、これらの構成要素は、様々なデータ構造が格納されている様々なコンピュータ可読媒体から実行されることが可能である。これらの構成要素は、1つまたは複数のデータパケットを有する信号に従うなどして、ローカルプロセスおよび/または遠隔プロセスを介して通信することが可能である(例えば、1つの構成要素からのデータが、その信号によってローカルシステムまたは分散システムにおける別の構成要素と対話して、さらに/またはインターネットなどのネットワークを介して他のシステムと対話して)。
【００１１】
図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(発光ダイオード)であることが可能である。
【００１２】
或る特定の態様において、図2に示されるとおり、上側筐体部分104は、下側筐体部分106に対して動くことが可能である。具体的には、上側筐体部分104は、下側筐体部分106に対してスライド可能でありうる。図2に示されるとおり、下側筐体部分106は、マルチボタンキーボード120を含むことが可能である。或る特定の態様において、マルチボタンキーボード120は、標準のQWERTYキーボードであることが可能である。マルチボタンキーボード120は、上側筐体部分104が下側筐体部分106に対して動かされると、あらわになることが可能である。図2は、PCD100が、下側筐体部分106上にリセットボタン122を含む可能性があることをさらに示す。
【００１３】
図3を参照すると、PCD(ポータブルコンピューティングデバイス)の例示的な、限定的でない態様が示され、全体的に320で表されている。図示されるとおり、PCD320は、マルチコアCPU324を含むオンチップのシステム322を含む。マルチコアCPU324は、第0のコア325と、第1のコア326と、第Nのコア327とを含むことが可能である。
【００１４】
図3に示されるとおり、ディスプレイコントローラ328およびタッチスクリーンコントローラ330が、マルチコアCPU324に結合される。オンチップのシステム322の外部にあるタッチスクリーンディスプレイ332が、ディスプレイコントローラ328およびタッチスクリーンコントローラ330に結合される。
【００１５】
図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(相補性金属酸化膜半導体)カメラである。
【００１６】
図3にさらに示されるとおり、ステレオオーディオCODEC350が、マルチコアCPU324に結合されることが可能である。さらに、オーディオ増幅器352が、ステレオオーディオCODEC350に結合されることが可能である。或る例示的な態様において、第1のステレオスピーカ354、および第2のステレオスピーカ356が、オーディオ増幅器352に結合される。図3は、マイクロフォン増幅器358が、ステレオオーディオCODEC350に結合されることも可能であることを示す。さらに、マイクロフォン360が、マイクロフォン増幅器358に結合されることが可能である。或る特定の態様において、FM(周波数変調)ラジオチューナ362が、ステレオオーディオCODEC350に結合されることが可能である。また、FMアンテナ364が、FMラジオチューナ362に結合される。さらに、ステレオヘッドフォン366が、ステレオオーディオCODEC350に結合されることが可能である。
【００１７】
図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電源である。
【００１８】
図3は、PCD320が、データネットワーク、例えば、ローカルエリアネットワーク、パーソナルエリアネットワーク、または他の任意のネットワークにアクセスするのに使用されうるネットワークカード388を含むことも可能であることをさらに示す。ネットワークカード388は、Bluetooth（登録商標）ネットワークカード、WiFiネットワークカード、PAN(パーソナルエリアネットワーク)カード、PeANUT(パーソナルエリアネットワーク超低電力技術)ネットワークカード、または当技術分野でよく知られている他の任意のネットワークカードであることが可能である。さらに、ネットワークカード388は、チップに組み込まれることが可能であり、すなわち、ネットワークカード388は、チップ内の完全なソリューションであってもよく、別個のネットワークカード388ではなくてもよい。
【００１９】
図3に示されるとおり、タッチスクリーンディスプレイ332、ビデオポート338、USBポート342、カメラ348、第1のステレオスピーカ354、第2のステレオスピーカ356、マイクロフォン360、FMアンテナ364、ステレオヘッドフォン366、RFスイッチ370、RFアンテナ372、キーパッド374、モノラルヘッドセット376、振動器378、および電源380は、オンチップのシステム322の外部にある。
【００２０】
或る特定の態様において、本明細書で説明される方法ステップの1つまたは複数が、コンピュータプログラム命令としてメモリ344の中に格納されることが可能である。これらの命令は、本明細書で説明される方法を実行するためにマルチコアCPU324によって実行されることが可能である。さらに、マルチコアCPU324、メモリ344、またはマルチコアCPU324とメモリ344の組合せが、マルチコアCPU324内の各CPU、つまり、各コアに対する電力を制御するために、本明細書で説明される方法ステップの1つまたは複数を実行するための手段の役割をすることが可能である。
【００２１】
図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上で独立に実行されることが可能である。
【００２２】
さらに、図示されるとおり、メモリ404は、メモリ404上に格納されたオペレーティングシステム420を含むことが可能である。オペレーティングシステム420は、スケジューラ422を含むことが可能であり、さらにスケジューラ422は、第1の実行キュー424と、第2の実行キュー426と、第Nの実行キュー428とを含むことが可能である。また、メモリ404は、メモリ404上に格納された第1のアプリケーション430と、第2のアプリケーション432と、第Nのアプリケーション434とを含むことも可能である。
【００２３】
或る特定の態様において、アプリケーション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からそれらのタスク、スレッド、またはタスクとスレッドの組合せを取り出すことが可能である。
【００２４】
図4はまた、メモリ404がそこに格納された並列性モニタ440およびマルチコアプロセッサ(MP)コントローラ442を含みうることを示す。並列性モニタ440は、オペレーティングシステム420およびMPコントローラ442に接続されうる。具体的には、並列性モニタ440は、オペレーティングシステム420内のスケジューラ422に接続されうる。本明細書に記載するように、並列性モニタ440はコア410、412、414の作業負荷を監視することができ、MPコントローラ442は、以下に記載するようにコア410、412、414への電力を制御することができる。特定の態様で、本明細書に記載される、本方法のステップのうちの1つまたは複数、例えばコンピュータプログラム命令、を実行することによって、並列性モニタ440、MPコントローラ442、またはそれらの組合せは、マルチコアCPU402内でコア410、412、414への電力を動的に制御する手段の役割を果たしうる。
【００２５】
特定のデュアルコア態様で、動作中、MPコントローラ442は並列性モニタ440から入力を受信することができる。その入力は、総システム負荷でもよい。さらに、その入力は、作業負荷における並列性の度合いの移動平均でもよい。この入力に基づいて、MPコントローラ442は、単一のコアの電源がオンにされるべきか、2つのコアの電源がオンにされるべきかを判定することが可能である。さらに、MPコントローラ442は、マルチコアCPU402に制御信号を出力することが可能である。この制御信号は、さらなるコアをオンにするかどうか、またはオフにするかどうかを示すことが可能である。このデュアルコア実施例において、MPコントローラ442は、コアの電源をオンにする決定、およびオフにする決定を制御するための4つのしきい値を含むことが可能である。この4つのしきい値には、コア起動をトリガするOSスケジューラキュー内の実行準備済みのスレッドの数、Nw、コア起動を確認するNwを超えている時間、Tw、コアスリープをトリガするOSスケジューラキュー内の実行準備済みのスレッドの数、Ns、およびコアスリープを確認するNsを超えている時間、Tsが含まれることが可能である。
【００２６】
単一のコア、例えば、第0のコア410が活性である状態から始めて、第0のコア410上の作業負荷における並列性の度合いの移動平均が、少なくともTwの時間にわたってNwを満たす、または超える場合、MPコントローラ442が、第2のコア、例えば、第1のコア412を起動することが可能である。逆に、両方のコア、例えば、第0のコア410と第1のコア412が活性であり、さらに作業負荷における並列性の度合いが、少なくともTsの時間にわたってNsを下回る場合、MPコントローラ442は、第2のコア、例えば、第1のコア412をスリープに入れることを決定することが可能である。
【００２７】
或る特定の態様において、時間Twを超えてしきい値並列性が維持されることは、その単一のコアが飽和していることを暗示する。さらに、これらのコアは、最も電力効率のよりVF(電圧-周波数)動作点で開始されることが可能である。特定の態様において、最適なVFで動作している2つのコアが、最大VFで動作している単一のコアと比べて、より大きいDMIPS(Dhrystone million instructions per second)をもたらす。デュアルコア態様において、二重の、独立したDCVSアルゴリズムが、非対称の作業負荷に適応することが可能であり、さらに一部の事例において、異種のコアに適応することが可能である。さらに、デュアルコア態様において、その2つのコアは、2倍になるパフォーマンスペナルティを回避するためにマルチタスキング作業負荷中に活性のままでいなければならない。また、並列性が、規定された時間TsにわたってNsを下回ると、第2のコアが、スタンバイにされるのではなく、電源をオフにされなければならない。或る特定の態様において、第2のコアをスタンバイにすることは、電力漏洩を増加させる可能性があり、さらにパフォーマンスを低下させる可能性もある。
【００２８】
パラメータNw、Tw、Ns、およびTsの最適な値は、システム400の厳密な電力消費特性に依存する可能性がある。しかし、一態様において、それらの値は、以下のとおりでありうる。すなわち、
Nw=1.2
Tw=40ms(ミリ秒)
Ns=0.8、および
Ts=80msである。
【００２９】
この特定の態様において、Nw=1.2は、並列性が維持されてから、第2のコアが起動されることを確実にすることが可能である。Ns=0.8は、並列性がないことが維持されてから、第2のコアがスリープに入れられることを確実にすることが可能である。Ts=80msは、システムの電力崩壊しきい値400msに基づく。Tw=40msは、マルチコア応答性を向上させるようにTsの半分である。
【００３０】
図5は、マルチコアプロセッサ内の電力を制御する方法の第1の態様を示す。本方法は概して、500と示される。方法500は、ブロック502で、マルチコアプロセッサをもつデバイスの動作中、次のステップが実行されうる、Do Loopを開始する。ブロック504で、電力コントローラは、例えばオペレーティングシステム状態を監視することによって、CPUまたはコア内で作業負荷並列性の度合いを動的に推定することができる。ブロック506に進んで、作業負荷並列性の度合いに少なくとも部分的に基づいて、電力コントローラは、1つまたは複数のコアの電源を投入する、または切ることが可能である。換言すれば、電力コントローラは、作業負荷に基づいて、コアをオンにする、またはオフにすることが可能である。
【００３１】
判定508で、電力コントローラは、デバイスの電源がオフにされたかどうかを判定することができる。デバイスの電源がオフにされた場合、本方法は終了することができる。そうでない場合、デバイスの電源がまだオンである場合、本方法はブロック504に戻ることができ、本方法は記載されるように継続することができる。
【００３２】
ここで図6を参照すると、マルチコアプロセッサ内で電力を制御する方法の第2の態様が示され、概して600と示される。本方法600は、マルチコアプロセッサをもつデバイスの動作中に次のステップが実行されうる、Do Loopをもつブロック602で開始する。ブロック604で、コントローラ、例えば並列性モニタ、が、CPU、またはコア内の作業負荷並列性の度合いを判定するために、すべてのオペレーティングシステム(OS)スケジューラ実行準備済みのキューの長さを監視することができる。特定の態様で、並列性モニタは、デバイスのメモリ内にあるソフトウェアプログラムでもよい。さらに、特定の態様で、スケジューラ実行準備済みのキューは、1つまたは複数のCPUでスケジュールするために使用可能なスレッドの現在のタスクのリストである。いくつかのマルチコアシステムは、単一の実行準備済みのキューのみをもちうる。他のマルチコアシステムは、複数の実行準備済みのキューをもちうる。実行準備済みのキューの数に関わらず、任意の瞬間に、これらのキューで待つタスク、スレッド、またはそれらの組合せの総数に、実際に走っているタスク、スレッド、またはそれらの組合せの数を足した数は、作業負荷における並列性の度合いの近似でありうる。
【００３３】
ブロック606に移ると、作業負荷並列性の度合いに少なくとも部分的に基づいて、並列性モニタが1つまたは複数のコアの電源を上げるまたは落とすことができる。換言すれば、並列性モニタは、作業負荷に基づいて、コアの電源を入れるまたは切ることができる。
【００３４】
判定608で、並行性モニタが、デバイスの電源がオフにされているかどうかを判定することが可能である。デバイスの電源がオフにされている場合、方法は、終了することが可能である。そうではなく、デバイスの電源がオンにされたままである場合、方法600は、ブロック604に戻ることが可能であり、方法600は、説明されるとおり進むことが可能である。
【００３５】
図7を参照すると、マルチコアプロセッサ内の電力を制御する方法の第3の態様が示され、全体的に700で表されている。方法700は、ブロック702で、マルチコアプロセッサを有するデバイスの動作中、後続のステップが実行されることが可能なDo Loopを開始する。ブロック704で、並列性モニタは、実行準備済みのキューの長さを周期的にサンプリングすることができる。例えば、並列性モニタは、ミリ秒(1ms)ごとに実行準備済みのキューの長さをサンプリングすることができる。ブロック706で、並列性モニタは、作業負荷における並列性の度合いの移動平均を判定することができる。ブロック708に移ると、作業負荷並列性の度合いに少なくとも部分的に基づいて、並列性モニタは、1つまたは複数のコアの電源を上げるまたは落とすことができる。換言すれば、並列性モニタは、作業負荷に基づいて、コアの電源を入れるまたは切ることができる。
【００３６】
判定710で、並列性モニタは、デバイスの電源がオフにされているかどうかを判定することができる。デバイスの電源がオフにされている場合、本方法は終了することができる。そうでない場合、デバイスの電源がまだオンである場合、本方法700はブロック704に戻り、本方法700は記載されるように継続することができる。
【００３７】
図8には、マルチコアプロセッサ内で電力を制御する方法の第4の態様が示される。本方法は概して800と指定され、本方法800は、マルチコアプロセッサをもつデバイスの動作中に次のステップが実行されうる、Do Loopをもつブロック802で開始することができる。ブロック804で、並列性モニタは、エントリがOSスケジューラ実行キューで追加または削除されるときにはいつでも、オペレーティングシステム(OS)からコールバックを受信することができる。さらに、ブロック806で、並列性モニタが、CPU、またはコアの作業負荷における並列性の度合いの移動平均を判定することができる。
【００３８】
ブロック808に移ると、作業負荷並列性の度合いに少なくとも部分的に基づいて、並列性モニタが、1つまたは複数のコアの電源を上げるまたは落とすことができる。換言すれば、並列性モニタは、作業負荷に基づいて、コアの電源を入れるまたは切ることができる。判定810で、並列性モニタが、デバイスの電源がオフにされているかどうかを判定することが可能である。デバイスの電源がオフにされている場合、方法は、終了することが可能である。そうではなく、デバイスの電源がオンにされたままである場合、方法800は、ブロック804に戻ることが可能であり、方法800は、説明されるとおり進むことが可能である。
【００３９】
次に図9から図12を参照すると、マルチコアプロセッサ内の電力を制御する方法の第5の態様が示され、全体的に900で表されている。方法900は、ブロック902で、マルチコアプロセッサを有するデバイスの電源がオンにされていると、以下のステップが実行されることが可能なDo Loopを開始する。ブロック904で、第0のコアの電源が上げられうる、すなわち電圧を印加されうる。ブロック905で、第0のDCVSアルゴリズムが、第0のコア上で局所的に実行されうる。さらに、ブロック906で、1つまたは複数のタスク、またはスレッドが、第0のコアで実行されうる。
【００４０】
判定908に移ると、マルチコアプロセッサ(MP)コントローラは、デバイスの電源がオフにされているかどうかを判定することができる。そうである場合、本方法900は終了することができる。そうでない場合、デバイスの電源がまだオンである場合、本方法900はブロック910に移ることができ、MPコントローラは、並列性モニタから第0のコア上の作業負荷における並列性の度合いの移動平均を受信することができる。或る特定の態様において、任意の時点で、OS(オペレーティングシステム)の実行準備済みキューで待機しているタスク、スレッド、またはタスクとスレッドの組合せの総数に、実際に実行されているタスクの数を足した数が、コア上の作業負荷における並列性の度合いに関する近似値であることが可能である。
【００４１】
判定912で、MPコントローラが、並列性の度合いが第1の起動条件と等しいかどうかを判定することが可能である。或る特定の態様において、第1の起動条件は、コア上の作業負荷における並列性の度合いに関連するしきい値であることが可能である。例えば、このしきい値は、OSスケジューラキューの中の実行準備済みスレッドの所定の数であることが可能であり、さらに並列性がこのしきい値以上である場合、第1の起動条件が満たされることが可能である。
【００４２】
判定912に戻ると、並列性の度合いが第1の起動条件と等しくない場合、方法900は、ブロック910に戻ることが可能であり、方法900は、本明細書で説明されるとおり続くことが可能である。そうではなく、並列性の度合いが第1の起動条件と等しい場合、方法900は、ブロック914に移ることが可能であり、MPコントローラが、第1の起動条件が満たされている時間を算出することが可能である。判定916で、MPコントローラが、その時間が第1の起動確認条件と等しいかどうかを判定することが可能である。或る特定の態様において、第1の起動確認条件は、しきい時間値であることが可能であり、さらに第1の起動条件が満たされる時間が、このしきい値以上である場合、第1の起動確認条件が満たされることが可能である。
【００４３】
判定916に戻ると、第1の起動条件が満たされている時間が第1の起動確認条件と等しくない場合、方法900は、ブロック910に戻ることが可能であり、方法900は、本明細書で説明されるとおり続くことが可能である。逆に、第1の起動確認条件が満たされる場合、本方法900はブロック918に移ることができ、MPコントローラは、2つのコア、すなわち第0のコアおよび第1のコア、がスレッドおよびタスクを走らせ、実行しているように、OSを呼び出して第1のコアの電源を上げることができる。ブロック920で、MPコントローラはOSを呼び出して、OSに使用可能なスケジューリング可能なリソースのセットに第1のコアを追加することができる。さらに、ブロック922で、第1のDCVSアルゴリズムが、第1のコア上で局所的に実行されうる。その後、本方法900は、図10のブロック1002に進むことができる。
【００４４】
ここで図10のブロック1002に移動すると、1つまたは複数のタスク、スレッド、またはそれらの組合せが、第0のコアおよび第1のコアで実行されうる。判定1004で、MPコントローラは、デバイスの電源がオフにされているかどうかを判定することができる。そうである場合、本方法900は終了することができる。そうではなく、デバイスの電源がまだオンである場合、本方法900はブロック1006に移ることができ、MPコントローラが、並列性モニタから第0のコアおよび第1のコア上の作業負荷における並列性の度合いの移動平均を受信することができる。特定の態様で、任意の瞬間に、オペレーティングシステム(OS)の実行準備済みのキューで待つタスク、スレッド、またはそれらの組合せの総数に加えた、実際に走っているタスクの数は、コア上の作業負荷における並列性の度合いの近似でありうる。
【００４５】
判定1008で、MPコントローラが、並列性の度合いが第1のスリープ条件と等しいかどうかを判定することが可能である。或る特定の態様において、第1のスリープ条件は、コア上の作業負荷における並列性の度合いに関連するしきい値であることが可能である。例えば、このしきい値は、OSスケジューラキューの中の実行準備済みのスレッドの最小限度数であることが可能であり、さらに並列性が、このしきい値以下である場合、第1のスリープ条件が満たされることが可能である。
【００４６】
判定1008に戻ると、並列性の度合いが第1のスリープ条件と等しくない場合、方法900は、図11のブロック1102に進むことが可能であり、方法900は、本明細書で説明されるとおり続くことが可能である。そうではなく、並列性の度合いが第1のスリープ条件と等しい場合、方法900は、ブロック1010に移ることが可能であり、MPコントローラが、第1のスリープ条件が満たされている時間を算出することが可能である。判定1012で、MPコントローラが、その時間が第1のスリープ確認条件と等しいかどうかを判定することが可能である。或る特定の態様において、第1のスリープ確認条件は、しきい時間値であることが可能であり、さらに第1のスリープ条件が満たされている時間がそのしきい値以上である場合、第1のスリープ確認条件が満たされることが可能である。
【００４７】
判定1012に戻ると、第1のスリープ条件が満たされている時間が、第1のスリープ確認条件と等しくない場合、方法900は、図11のブロック1102に進むことが可能であり、方法900は、本明細書で説明されるとおり続くことが可能である。逆に、第1のスリープ確認条件が満たされる場合、本方法900はブロック1014に移ることができ、MPコントローラが、OSを呼び出して第1のコアの現在の状態を保存することができる。ブロック1016で、MPコントローラは、1つのコア、すなわち第0のコア、がスレッドおよびタスクを走らせ、実行しているように、OSを呼び出して第1のコアの電源を落とすことができる。さらに、ブロック1018で、MPコントローラは、OSを呼び出して、OSに使用可能なスケジューリング可能なリソースのセットから第1のコアを取り除くことができる。その後、本方法900は図9のブロック906に戻ることができ、本方法900は本明細書に記載するように継続することができる。
【００４８】
ここで図11を参照すると、ブロック1102で、MPコントローラは、並列性モニタから第0のコアおよび第1のコア上の作業負荷における並列性の度合いの移動平均を受信することができる。特定の態様で、任意の瞬間に、オペレーティングシステム(OS)の実行準備済みのキューで待っているタスク、スレッド、またはそれらの組合せの総数に加えた、実際に走っているタスクの数は、コア上の作業負荷における並列性の度合いの近似でありうる。判定1104で、MPコントローラが、並列性の度合いが第Nの起動条件と等しいかどうかを判定することが可能である。或る特定の態様において、第Nの起動条件は、コア上の作業負荷における並列性の度合いに関連するしきい値であることが可能である。例えば、このしきい値は、OSスケジューラキューの中の実行準備済みスレッドの最大限度数であることが可能であり、さらに並列性がこのしきい値以上である場合、第Nの起動条件が満たされることが可能である。
【００４９】
判定1104に戻ると、並列性の度合いが第Nの起動条件と等しくない場合、方法900は、図10のブロック1002に戻ることが可能であり、方法900は、本明細書で説明されるとおり続くことが可能である。そうではなく、並列性の度合いが第Nの起動条件と等しい場合、方法900は、ブロック1106に移ることが可能であり、MPコントローラが、第Nの起動条件が満たされている時間を算出することが可能である。判定1108で、MPコントローラが、この時間が第Nの起動確認条件と等しいかどうかを判定することが可能である。或る特定の態様において、第Nの起動確認条件は、しきい時間値であることが可能であり、さらに第Nの起動条件が満たされている時間がそのしきい値以上である場合、第Nの起動確認条件が満たされることが可能である。
【００５０】
判定1108に戻ると、第Nの起動条件が満たされている時間が第Nの起動確認条件と等しくない場合、方法900は、図10のブロック1002に戻ることが可能であり、方法900は、本明細書で説明されるとおり続くことが可能である。逆に、第Nの起動確認条件が満たされる場合、本方法900はブロック1110に移ることができ、MPコントローラは、Nコア、すなわち第0のコア、第1のコアおよび第Nのコア、がスレッドおよびタスクを走らせ、実行しているように、OSを呼び出して第Nのコアの電源を上げることができる。ブロック1112で、MPコントローラは、OSを呼び出して第NのコアをそのOSに使用可能なスケジューリング可能なリソースのセットに追加することができる。さらに、ブロック1114で、第NのDCVSアルゴリズムが、第Nのコアで局所的に実行されうる。その後、本方法900は図12のブロック1202に進むことができる。
【００５１】
図12のブロック1202で、1つまたは複数のタスク、スレッド、またはそれらの組合せが、第0のコア、第1のコア、および第Nのコアで実行されうる。判定1204で、MPコントローラは、デバイスの電源がオフにされているかどうかを判定することができる。そうである場合、本方法900は終了することができる。そうでない場合、デバイスの電源がまだオンである場合、本方法900はブロック1206に移ることができ、MPコントローラは、並列性モニタから第0のコア、第1のコア、および第Nのコア上の作業負荷における並列性の度合いの移動平均を受信することができる。特定の態様で、任意の瞬間に、オペレーティングシステム(OS)の実行準備済みのキューで待っているタスク、スレッド、またはそれらの組合せの総数に加えた、実際に走っているタスクの数は、コア上の作業負荷における並列性の度合いの近似でありうる。
【００５２】
判定1208で、MPコントローラが、並列性の度合いが第Nのスリープ条件と等しいかどうかを判定することが可能である。或る特定の態様において、第Nのスリープ条件は、コア上の作業負荷における並列性の度合いに関連するしきい値であることが可能である。例えば、このしきい値は、OSスケジューラキューの中の実行準備済みのスレッドの最小限度数であることが可能であり、さらに並列性が、このしきい値以下である場合、第Nのスリープ条件が満たされることが可能である。
【００５３】
判定1208に戻ると、並列性の度合いが第Nのスリープ条件と等しくない場合、方法900は、ブロック1202に進むことが可能であり、方法900は、本明細書で説明されるとおり続くことが可能である。そうではなく、並列性の度合いが第Nのスリープ条件と等しい場合、方法900は、ブロック1210に移ることが可能であり、MPコントローラが、第Nのスリープ条件が満たされている時間を算出することが可能である。判定1212で、MPコントローラが、その時間が第Nのスリープ確認条件と等しいかどうかを判定することが可能である。或る特定の態様において、第Nのスリープ確認条件は、しきい時間値であることが可能であり、さらに第Nのスリープ条件が満たされている時間がそのしきい値以上である場合、第Nのスリープ確認条件が満たされることが可能である。
【００５４】
判定1212に戻ると、第Nのスリープ条件が満たされている時間が第Nのスリープ確認条件と等しくない場合、方法900は、ブロック1202に戻ることが可能であり、方法900は、本明細書で説明されるとおり続くことが可能である。逆に、第Nのスリープ確認条件が満たされる場合、本方法900はブロック1214に移ることができ、MPコントローラは、OSを呼び出して第1のコアの現在の状態を保存することができる。ブロック1216で、MPコントローラは、Nマイナス1のコア、例えば第0のコアおよび第1のコア(Nが2であり、第2のコアの電源が落とされる場合)、がスレッドおよびタスクを走らせ、実行しているように、OSを呼び出して第Nのコアの電源を落とすことができる。さらに、ブロック1218で、MPコントローラは、OSを呼び出して、OSに使用可能なスケジューリング可能なリソースのセットから第Nのコアを取り除くことができる。その後、方法900は、図10のブロック1002に戻ることが可能であり、方法900は、本明細書で説明されるとおり続くことが可能である。
【００５５】
次に図13を参照すると、マルチコアプロセッサを試験するための方法が示され、全体的に1300で表されている。図示されるとおり、方法1300は、試験プログラムが作成されることが可能なブロック1302で始まることが可能である。この試験プログラムは、本明細書で説明されるとおり、複数のコアが、並列性の度合いに依存して、電源を投入されたり、切られたりすることをもたらす、様々な並列性の度合いを有する定常状態の作業負荷を含むことが可能である。
【００５６】
ブロック1304に移ると、この試験プログラムが、マルチコアプロセッサを含むワイヤレスデバイス上にロードされることが可能である。ブロック1306で、複数のコアが、ワイヤレスデバイス上で監視されることが可能である。例えば、各コアに関するコア起動/停止状態が監視されることが可能である。起動/停止状態は、各コア上の電力を監視することによって、消費される総電力、作業負荷が完了される速度、またはそのような総電力と速度の組合せを監視することによって、監視されることが可能である。
【００５７】
ブロック1308で、この試験プログラムが、ワイヤレスデバイスにおいて実行されることが可能である。さらに、判定1310で、ワイヤレスデバイス内のコアが試験プログラムの実行に正しく応答するかどうか判定されることが可能である。つまり、試験プログラムの実行に応答して、コアの電源が正しく投入されているかどうか、および/または正しく切られているかどうかが判定されることが可能である。判定1310で、コアが、試験プログラムの実行に正しく応答しない場合、方法1300は、ブロック1312に移ることが可能であり、失敗結果が示されることが可能である。その後、方法1300は、終了することが可能である。
【００５８】
判定1310で、コアが、試験プログラムの実行に正しく応答しない場合、方法は、ブロック1314に進むことが可能であり、合格結果が示されることが可能である。その後、方法1300は、終了することが可能である。
【００５９】
図14は、マルチコアCPU内の電力を動的に制御する方法の第6の態様を示す。本方法は概して1400と示される。ブロック1402で開始すると、コントローラは、第0のコアの実行キュー値を判定することができる。実行キュー値は、第0のコアの作業負荷を示しうる。ブロック1404で、コントローラが、第0のコアの動作周波数を判定することができる。さらに、ブロック1406で、コントローラは、第0のコアの利用率を判定することができる。特定の態様で、第0のコアの利用率は、第0のコアの最大動作周波数によって割られた現在の動作周波数でもよい。ブロック1408で、コントローラが、第0のコアのアイドル率を判定することができる。
【００６０】
ブロック1410に移ると、コントローラは、第Nのコアの実行キュー値を判定することができる。ブロック1412で、コントローラは、第Nのコアの動作周波数を判定することができる。さらに、ブロック1414で、コントローラは、第Nのコアの利用率を判定することができる。ブロック1416で、コントローラは、第Nのコアのアイドル率を判定することができる。
【００６１】
ブロック1418に移ると、コントローラが、システムの負荷値を判定することができる。その負荷値は、第0のコアの実行キュー値、第Nのコアの実行キュー値、第0のコアの動作周波数、第Nのコアの動作周波数、第0のコアの利用率、第Nのコアの利用率、第0のコアのアイドル率、第Nのコアのアイドル率、またはそれらの任意の組合せに基づいて、判定されうる。
【００６２】
特定の態様で、その負荷値は、以下の式から判定されうる:
LV=RQ0*((100%-IP0)*(UP0))+RQN*((100%-IPN)*(UPN))
ただし、
LV=負荷値、
RQ0=第0のコアの実行キュー値、
IP0=第0のコアのアイドル率、
UP0=第0のコアの利用率、
RQN=第Nのコアの実行キュー値、
IPN=第Nのコアのアイドル率、そして、
UPN=第Nのコアの利用率。
【００６３】
ブロック1420で、1つまたは複数のコアは、負荷値に基づいて、電源を入れるまたは切ることができる。1つまたは複数のコアの電源を入れるまたは切るかどうかを決定するために、その負荷値が事前に決定された条件を満たすかどうかが判定されうる。例えば、負荷値は閾値と比較することができ、負荷値が閾値を超える場合には、1つまたは複数のコアの電源を入れるまたは切ることができる。例えば、2つの動作するコアがあり、負荷値がその2つのコアが全能力でまたはほぼ全能力で動作していることを示した場合、第3コアの電源をオンにすることができ、作業負荷はその3つのコアの間で分散されうる。さらに、負荷値がもう1つの閾値より減り、第3のコアを使用可能にすることが電力を浪費していることを示すとき、第3のコアは電源をオフにすることができ、作業負荷は2つの残ったコアの間で分散されうる。もう1つの態様で、負荷値は、システムの最も効率的な動作を提供するために、走っているべきコアの実際の数を示すことができる。
【００６４】
特定の態様で、コントローラはシステムの動作に関する履歴データを保持することができ、その履歴データを使用し、コントローラは、フィルタ、例えばIIRフィルタ、を実装することができる、コントローラは移動平均機能を実装することができる、あるいは、コントローラはそれらの組合せを実装することができる。例示的な移動平均関数が以下に示される:
N=f(runQ0,runQ1,N1,N2,N3)、
=2if((runQ0+runQ1)+N1+N2+N3)/4>1、および
=1if((runQ0+runQ1)+N1+N2+N3)/4<=1、
ただし、
runQ0=第0のコアの実行キュー値、
runQ1=第1のコアの実行キュー値、および、
N1、N2、N3=最後の3つの履歴期間のNの値。
【００６５】
本明細書で説明される方法ステップは、必ずしも説明されるとおりの順序で実行されなくてもよいことを理解されたい。さらに、「その後」、「すると」、「次に」などの語は、ステップの順序を限定することを意図していない。これらの語は、単に、方法ステップの説明において読者を案内するために使用される。さらに、本明細書で説明される方法は、PCD(ポータブルコンピューティングデバイス)上で実行可能であるものとして説明される。PCDは、モバイル電話デバイス、携帯情報端末デバイス、スマートブックコンピューティングデバイス、ネットブックコンピューティングデバイス、ラップトップコンピューティングデバイス、デスクトップコンピューティングデバイス、または以上の組合せであることが可能である。
【００６６】
本明細書に記載の構成で、開示されるシステムおよび方法は、作業負荷並列性による実際の速度向上の可能性があるときに追加のCPUコアに電力を供給することによって、マルチコアCPU内の電力消費を減らすことができる。並列性の度合いは事前に知ることはできないが、並列性の度合いは、オペレーティングシステムスケジューラ実行キューの長さを観測することによって、推定することができる。推定された並列性の度合いに基づいて、追加のコアが、必要に応じて、電源を上げるまたは落とすことができる。
【００６７】
対称的にすべてのCPUコアに電力を供給する、すなわちすべてオンまたはすべてオフの、旧来のシステムとは異なり、本システムおよび方法は、非対称的にCPUコアの電源をオンにすることおよびオフにすることができる。換言すれば、別のコアが電源がオフにされている間に、あるコアは電源をオンにすることができる。さらに、作業負荷が増え、十分な並列性をもつとき、第2のコアは電源をオンにすることができる。
【００６８】
さらに、本明細書で開示されるシステムおよび方法は、電力を供給されるいくつかのコアを作業負荷で提供される実際の動的並列性に動的に適応することができる。これは大幅な節電になりうる。さらに、本システムおよび方法は、開発者が任意の特別な方法で彼らの作業負荷における並列性を通信することを必要としない。アプリケーションはいずれかの方法で修正される必要がなくなることが可能であり、通常の形で配備されうる。さらに、本システムおよび方法は、既存のアプリケーションおよびデバイスと互換性がある。
【００６９】
特定の態様で、MPコントローラへの入力は、スケジューラキュー内のいくつかの実行準備済みのスレッドである。作業負荷における並列性を示す他の入力が使用されうることが理解されよう。しかし、並列性を示さない、1つまたは複数のコアのアイドル/ビジーインジケータは、MPコントローラへの十分な入力ではないことがある。例えば、CPUコアは、100パーセント(100%)使用中であるが、単一スレッドの作業負荷を走らせていることがある。その場合、第2のコアの電源を上げることは、単一スレッドの性能を全く助けない。実際には、第2のコアの電源を上げるために必要なオーバヘッドを導入することによって性能を阻害しうる。より悪くは、単一スレッドの作業負荷のための第2のコアへの電力供給は、第2のコアからの無駄な漏れ電力消費をもたらしうる。
【００７０】
したがって、特定の態様で、それが行うべき十分な並列作業があるという保証なしに第2のコアの電源を上げることは望ましくないことがある。瞬間的意味で、並列作業は、OSスケジューラ内に走らせる準備ができている2つ以上のスレッドが存在するときにのみ可能である。
【００７１】
通常の動作において、デュアルコアの例で、本システムは、第1のCPUコアが休眠状態のままである一方で、第0のCPUコアで動作するDCVSアルゴリズムから開始しうる。このモードで、本システムは、第0のCPUコアの周波数を増やすことによって、瞬間的な一時負荷に応答することができる。本システムは、不十分な実行準備済みのスレッドがある限り、単一コアモードのままでいることができる。
【００７２】
しかし、実行準備済みの閾値Nwがある一定の時間について超過された後は、第0のCPUコアは黙示的に飽和することがあり、第1のCPUコアに使用可能な並列作業負荷もまた明らかに存在する。マルチコアプロセッサ(MP)コントローラは、OSを呼び出して、第1のCPUコアを起動し、OSのスケジューリング可能なリソースのセットに第1のCPUコアを加えることができる。MPコントローラはまた、最適な電圧周波数ポイント、すなわち最も低い電圧での最も高い周波数、で第1のCPUコアを開始し、第1のCPUコアに局所的なDCVSを起動することができる。MPコントローラはまた任意で、最適な電圧周波数ポイントに第0のCPUコアの周波数をリセットすることができる。そうでない場合、MPコントローラは、現在の設定で第0のCPUコアの周波数を残すことができる。
【００７３】
両方のコアはここで、個々に実行するDCVSアルゴリズムで動作しうる。持続する並列作業負荷で、両方のコアが最大周波数を最終的に達成することになる可能性が高くなりうる。しかし、コアが最大周波数から部分的に後退できるようにすることができる負荷の非常に短い一時的休止が存在しうる。しかし、かかる一時的休止は、0に走る準備のできたスレッドの数も減らすことなしには、可能ではない。
【００７４】
十分なかかる一時的休止が生じた後は、実行準備済みのスレッドの平均数を十分長い持続期間の閾値Nsよりも下げさせ、MPコントローラは、OSを呼び出して、第1のCPUコアから任意の適切な状態を保存し、それをそのスケジューリング可能なセットから取り除くことができる。その後に、第1のCPUコアは、無事に電力崩壊されうる。第1のCPUコアが電力崩壊して、本システムは単一コア動作モードに戻ることができる。
【００７５】
1つまたは複数の例示的な態様において、説明される機能は、ハードウェアで、ソフトウェアで、ファームウェアで、または以上の任意の組合せで実施されることが可能である。ソフトウェアで実施される場合、それらの機能は、マシン可読媒体、すなわち、コンピュータ可読媒体などのコンピュータプログラム製品上に格納される、またはそのようなコンピュータプログラム製品上の1つまたは複数の命令もしくはコードとして伝送されることが可能である。コンピュータ可読媒体には、1つの場所から別の場所にコンピュータプログラムを移すことを円滑にする任意の媒体を含め、コンピュータ記憶媒体と通信媒体の両方が含まれる。記憶媒体は、コンピュータによってアクセスされることが可能である任意の利用可能な媒体であることが可能である。例として、限定としてではなく、そのようなコンピュータ可読媒体は、RAM、ROM、EEPROM、CD-ROMまたは他の光ディスクストレージ、磁気ディスクストレージまたは他の磁気ストレージデバイス、あるいは命令またはデータ構造の形態で所望されるプログラムコードを伝送する、または格納するのに使用されることが可能であり、さらにコンピュータによってアクセスされることが可能である他の任意の媒体を備えることが可能である。また、任意の接続が、コンピュータ可読媒体と適切に呼ばれる。例えば、ソフトウェアが、同軸ケーブル、光ファイバケーブル、より対線、DSL(デジタル加入者線)、あるいは赤外線、電波、およびマイクロ波などのワイヤレス技術を使用して、ウェブサイト、サーバ、または他の遠隔ソースから伝送される場合、その同軸ケーブル、光ファイバケーブル、より対線、DSL、あるいは赤外線、電波、およびマイクロ波などのワイヤレス技術が、媒体の定義に含められる。本明細書で使用されるディスク(Disk)およびディスク(Disc)には、CD(コンパクトディスク)、レーザディスク、光ディスク、DVD(デジタルバーサタイルディスク)、フロッピー（登録商標）ディスク、およびブルーレイディスクが含まれ、ただし、ディスク(Disk)は、通常、データを磁気的に再現するのに対して、ディスク(Disc)は、データを、レーザを使用して光学的に再現する。また、以上の媒体の組合せも、コンピュータ可読媒体の範囲に含められなければならない。
【００７６】
選択された態様が、図示され、詳細に説明されてきたが、添付の特許請求の範囲によって規定される、本発明の趣旨および範囲を逸脱することなく、様々な代替および変更が行われうることが理解されよう。
【符号の説明】
【００７７】
100、320  ポータブルコンピューティングデバイス
102  筐体
104  上側筐体部分
106  下側筐体部分
108  ディスプレイ
110  トラックボール入力デバイス
112  電源オンボタン
114  電源オフボタン
116  インジケータライト
118  スピーカ
120  マルチボタンキーボード
122  リセットボタン
【図１】
0005893568.tif 000002
【図２】
0005893568.tif 000003
【図３】
0005893568.tif 000004
【図４】
0005893568.tif 000005
【図５】
0005893568.tif 000006
【図６】
0005893568.tif 000007
【図７】
0005893568.tif 000008
【図８】
0005893568.tif 000009
【図９】
0005893568.tif 000010
【図１０】
0005893568.tif 000011
【図１１】
0005893568.tif 000012
【図１２】
0005893568.tif 000013
【図１３】
0005893568.tif 000014
【図１４】
0005893568.tif 000015