(57)【特許請求の範囲】
【請求項１】
マルチコア集積回路の複数のプロセッサコアのマルチコア制御のための方法であって、
前記複数のプロセッサコアの温度読取り値を温度しきい値と比較するステップと、
複数の仮定状況およびプロセッサコア情報に基づいて前記複数のプロセッサコアのマップを計算するステップであり、第1のマップが、前記複数のプロセッサコアの前記温度読取り値が前記温度しきい値未満であることに応答して計算され、第2のマップが、前記複数のプロセッサコアの前記温度読取り値が前記温度しきい値よりも大きいことに応答して計算される、ステップと、
所与の作業負荷について消費電力を最適化するために、プロセッサコアの第1の構成を前記第1のマップから識別するステップと、
所与の電力割当量についてパフォーマンスを最適化するために、プロセッサコアの第2の構成を前記第2のマップから識別するステップと、
前記識別された構成に基づいて前記複数のプロセッサコアのプロセッサコアごとにアクティビティ状態を制御するステップと
を含む、方法。
【請求項２】
前記複数の仮定状況および前記プロセッサコア情報に基づいて前記複数のプロセッサコアの前記マップを計算するステップが、
前記所与の作業負荷の所与の代表値について前記複数のプロセッサコアの組合せについての消費電力と温度との間の関係を示す前記第1のマップを計算するステップと、
所与の温度について前記複数のプロセッサコアの組合せについての消費電力と作業負荷との間の関係を示す前記第2のマップを計算するステップと
を含む、請求項1に記載の方法。
【請求項３】
プロセッサコアの前記第1および第2の構成が、アクティブなプロセッサコアの数を示す、請求項1に記載の方法。
【請求項４】
プロセッサコアの前記第1および第2の構成が、前記複数のプロセッサコアのうちのどのプロセッサコアがアクティブなプロセッサコアであるかを示す、請求項1に記載の方法。
【請求項５】
プロセッサコアの前記第1および第2の構成が、所与の周波数について、最も低いリーク、最も低い温度、または最も低い電圧レベルを有する前記プロセッサコアを含む、請求項1に記載の方法。
【請求項６】
各プロセッサコアに関連した前記プロセッサコア情報を読み取るステップであり、前記プロセッサコア情報が、リーク電流、プロセッサコア速度、プロセッサ電圧設定テーブル、最大クロック周波数、温度読取り値、および現在の作業負荷を含む、ステップと、
前記現在の作業負荷を前記現在の作業負荷の代表値に変換するステップと
をさらに含む、請求項1に記載の方法。
【請求項７】
前記プロセッサコア情報が、前記温度読取り値と前記現在の作業負荷とを含む動的情報を含み、
前記方法が、前記動的情報を繰り返し読み取るステップをさらに含む、請求項6に記載の方法。
【請求項８】
前記マルチコア集積回路の前記プロセッサコアが、中央処理ユニット、グラフィックス処理ユニットのシェーダプロセッサ、前記グラフィックス処理ユニットのテクスチャパイプ、またはデジタル信号プロセッサを含むグループから選択される1つまたは複数のプロセッサコアタイプを含む、請求項1に記載の方法。
【請求項９】
装置であって、
複数のプロセッサコアを有するマルチコア集積回路を備え、前記マルチコア集積回路が、
前記複数のプロセッサコアの温度読取り値を温度しきい値と比較することと、
複数の仮定状況およびプロセッサコア情報に基づいて前記複数のプロセッサコアのマップを計算することであり、第1のマップが、前記複数のプロセッサコアの前記温度読取り値が前記温度しきい値未満であることに応答して計算され、第2のマップが、前記複数のプロセッサコアの前記温度読取り値が前記温度しきい値よりも大きいことに応答して計算されることと、
所与の作業負荷について消費電力を最適化するために、プロセッサコアの第1の構成を前記第1のマップから識別することと、
所与の電力割当量についてパフォーマンスを最適化するために、プロセッサコアの第2の構成を前記第2のマップから識別することと、
前記識別された構成に基づいて前記複数のプロセッサコアのプロセッサコアごとにアクティビティ状態を制御することと
を含む動作を実行するためのプロセッサ実行可能命令によって構成される、装置。
【請求項１０】
前記マルチコア集積回路が、前記複数の仮定状況および前記プロセッサコア情報に基づいて前記複数のプロセッサコアの前記マップを計算することが、
前記所与の作業負荷の所与の代表値について前記複数のプロセッサコアの組合せについての消費電力と温度との間の関係を示す前記第1のマップを計算することと、
所与の温度について前記複数のプロセッサコアの組合せについての消費電力と作業負荷との間の関係を示す前記第2のマップを計算することと
を含むような動作を実行するためのプロセッサ実行可能命令によって構成される、請求項9に記載の装置。
【請求項１１】
プロセッサコアの前記第1および第2の構成が、アクティブなプロセッサコアの数を示す、請求項9に記載の装置。
【請求項１２】
プロセッサコアの前記第1および第2の構成が、前記複数のプロセッサコアのうちのどのプロセッサコアがアクティブなプロセッサコアであるかを示す、請求項9に記載の装置。
【請求項１３】
プロセッサコアの前記第1および第2の構成が、所与の周波数について、最も低いリーク、最も低い温度、または最も低い電圧レベルを有する前記プロセッサコアを含む、請求項9に記載の装置。
【請求項１４】
前記マルチコア集積回路が、
各プロセッサコアに関連した前記プロセッサコア情報を読み取ることであり、前記プロセッサコア情報が、リーク電流、プロセッサコア速度、プロセッサ電圧設定テーブル、最大クロック周波数、温度読取り値、および現在の作業負荷を含むことと、
前記現在の作業負荷を前記現在の作業負荷の代表値に変換することと
をさらに含む動作を実行するためのプロセッサ実行可能命令によって構成される、請求項9に記載の装置。
【請求項１５】
前記プロセッサコア情報が、前記温度読取り値と前記現在の作業負荷とを含む動的情報を含み、
前記マルチコア集積回路が、前記動的情報を繰り返し読み取ることをさらに含む動作を実行するためのプロセッサ実行可能命令によって構成される、請求項14に記載の装置。
【請求項１６】
前記マルチコア集積回路の前記プロセッサコアが、中央処理ユニット、グラフィックス処理ユニットのシェーダプロセッサ、前記グラフィックス処理ユニットのテクスチャパイプ、またはデジタル信号プロセッサを含むグループから選択される1つまたは複数のプロセッサコアタイプを含む、請求項9に記載の装置。
【請求項１７】
マルチコア集積回路の複数のプロセッサコアのマルチコア制御のための装置であって、
前記複数のプロセッサコアの温度読取り値を温度しきい値と比較するための手段と、
複数の仮定状況およびプロセッサコア情報に基づいて前記複数のプロセッサコアのマップを計算するための手段であり、第1のマップが、前記複数のプロセッサコアの前記温度読取り値が前記温度しきい値未満であることに応答して計算され、第2のマップが、前記複数のプロセッサコアの前記温度読取り値が前記温度しきい値よりも大きいことに応答して計算される、手段と、
所与の作業負荷について消費電力を最適化するために、プロセッサコアの第1の構成を前記第1のマップから識別するための手段と、
所与の電力割当量についてパフォーマンスを最適化するために、プロセッサコアの第2の構成を前記第2のマップから識別するための手段と、
前記識別された構成に基づいて前記複数のプロセッサコアのプロセッサコアごとにアクティビティ状態を制御するための手段と
を含む、装置。
【請求項１８】
前記複数の仮定状況および前記プロセッサコア情報に基づいて前記複数のプロセッサコアの前記マップを計算するための手段が、
前記所与の作業負荷の所与の代表値について前記複数のプロセッサコアの組合せについての消費電力と温度との間の関係を示す前記第1のマップを計算するための手段と、
所与の温度について前記複数のプロセッサコアの組合せについての消費電力と作業負荷との間の関係を示す前記第2のマップを計算するための手段と
を含む、請求項17に記載の装置。
【請求項１９】
プロセッサコアの前記第1および第2の構成が、アクティブなプロセッサコアの数を示す、請求項17に記載の装置。
【請求項２０】
プロセッサコアの前記第1および第2の構成が、前記複数のプロセッサコアのうちのどのプロセッサコアがアクティブなプロセッサコアであるかを示す、請求項17に記載の装置。
【請求項２１】
プロセッサコアの前記第1および第2の構成が、所与の周波数について、最も低いリーク、最も低い温度、または最も低い電圧レベルを有する前記プロセッサコアを含む、請求項17に記載の装置。
【請求項２２】
各プロセッサコアに関連した前記プロセッサコア情報を読み取るための手段であり、前記プロセッサコア情報が、リーク電流、プロセッサコア速度、プロセッサ電圧設定テーブル、最大クロック周波数、温度読取り値、および現在の作業負荷を含む、手段と、
前記現在の作業負荷を前記現在の作業負荷の代表値に変換するための手段と
をさらに含む、請求項17に記載の装置。
【請求項２３】
前記プロセッサコア情報が、前記温度読取り値と前記現在の作業負荷とを含む動的情報を含み、
前記装置が、前記動的情報を繰り返し読み取るための手段をさらに含む、請求項22に記載の装置。
【請求項２４】
前記マルチコア集積回路の前記プロセッサコアが、中央処理ユニット、グラフィックス処理ユニットのシェーダプロセッサ、前記グラフィックス処理ユニットのテクスチャパイプ、またはデジタル信号プロセッサを含むグループから選択される1つまたは複数のプロセッサコアタイプを含む、請求項17に記載の装置。
【請求項２５】
マルチコア集積回路に、
複数のプロセッサコアの温度読取り値を温度しきい値と比較することと、
複数の仮定状況およびプロセッサコア情報に基づいて前記複数のプロセッサコアのマップを計算することであり、第1のマップが、前記複数のプロセッサコアの前記温度読取り値が前記温度しきい値未満であることに応答して計算され、第2のマップが、前記複数のプロセッサコアの前記温度読取り値が前記温度しきい値よりも大きいことに応答して計算されることと、
所与の作業負荷について消費電力を最適化するために、プロセッサコアの第1の構成を前記第1のマップから識別することと、
所与の電力割当量についてパフォーマンスを最適化するために、プロセッサコアの第2の構成を前記第2のマップから識別することと、
前記識別された構成に基づいて前記複数のプロセッサコアのプロセッサコアごとにアクティビティ状態を制御することと
を含む動作を実行させるように構成されるプロセッサ実行可能ソフトウェア命令が記憶されている非一時的プロセッサ可読媒体。
【請求項２６】
前記記憶されたプロセッサ実行可能ソフトウェア命令が、前記マルチコア集積回路に、前記プロセッサコア情報および前記複数の仮定状況に基づいて前記複数のプロセッサコアの前記マップを計算することが、
前記所与の作業負荷の所与の代表値について前記複数のプロセッサコアの組合せについての消費電力と温度との間の関係を示す前記第1のマップを計算することと、
所与の温度について前記複数のプロセッサコアの組合せについての消費電力と作業負荷との間の関係を示す前記第2のマップを計算することと
を含むような動作を実行させるように構成される、請求項25に記載の非一時的プロセッサ可読媒体。
【請求項２７】
前記記憶されたプロセッサ実行可能ソフトウェア命令が、前記マルチコア集積回路に、
各プロセッサコアに関連した前記プロセッサコア情報を読み取ることであり、前記プロセッサコア情報が、リーク電流、プロセッサコア速度、プロセッサ電圧設定テーブル、最大クロック周波数、温度読取り値、および現在の作業負荷を含むことと、
前記現在の作業負荷を前記現在の作業負荷の代表値に変換することと
をさらに含む動作を実行させるように構成される、請求項25に記載の非一時的プロセッサ可読媒体。
【請求項２８】
前記プロセッサコア情報が、前記温度読取り値と前記現在の作業負荷とを含む動的情報を含み、
前記記憶されたプロセッサ実行可能ソフトウェア命令が、前記マルチコア集積回路に、前記動的情報を繰り返し読み取ることをさらに含む動作を実行させるように構成される
請求項27に記載の非一時的プロセッサ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願
本出願は、その内容全体が参照により本明細書に組み込まれている、2013年8月8日に出願された「Intelligent Multicore Control For Optimal Performance Per Watt」という名称の米国仮特許出願第61/863,554号の優先権の利益を主張するものである。
【背景技術】
【０００２】
現在、製造業者は、複数のプロセッサコアの処理クロック周波数を抑えることによって、マルチコアデバイスにおける消費電力および熱的問題を管理する。マルチコアデバイスの複数のプロセッサコアの処理クロック周波数を抑えることは、マルチコプロセッサによって達成される作業の速度を低下させることによって消費電力および熱的問題を管理することを支援することができる。しかしながら、この技法は、パフォーマンスを犠牲にしてこれらの問題を管理することに焦点を当てている。
【０００３】
モバイルデバイスは、ますます、システムおよびアプリケーションソフトウェアがモバイルデバイスにおいて並行して実行される要求を処理するマルチコアプロセッサを組み込んでいる。モバイルデバイスは、より良いソフトウェア処理要求を処理しながら、より高いパフォーマンスレベルを達成するために、またはパフォーマンスレベルを維持するために、より多くの電力がモバイルデバイスによって消費されるにつれて、より速く消耗する制限された電力割当量を有することによって、制限されている。ソフトウェア処理要求が増加している一方、ユーザは、処理速度およびバッテリ寿命に関して、各自のモバイルデバイスにおいてあるレベルのパフォーマンスを維持することを期待する。モバイルデバイスにおいてユーザが期待したレベルのパフォーマンスを維持することは、マルチコアプロセッサの熱的問題を管理しながら、寿命のためにパフォーマンスを犠牲にするべきであるか、またはパフォーマンスのために寿命を犠牲にするべきかのジレンマを生じさせる。
【発明の概要】
【課題を解決するための手段】
【０００４】
様々な態様の方法および装置は、マルチコア集積回路の複数のプロセッサコアの制御を提供し、複数のプロセッサコアの温度読取り値を温度しきい値と比較するステップと、プロセッサコア情報および複数の仮定状況(hypothetical case)に基づいて複数のプロセッサコアのマップを計算するステップと、温度読取り値が温度しきい値未満であるとき、所与の作業負荷について消費電力を最適化するために、プロセッサコアの第1の構成を識別するステップと、温度読取り値が温度しきい値よりも大きいとき、所与の電力割当量についてパフォーマンスを最適化するために、プロセッサコアの第2の構成を識別するステップと、識別された構成に基づいて複数のプロセッサコアのプロセッサコアごとにアクティビティ状態を制御するステップとを含む。一態様方法では、プロセッサコア情報および複数の仮定状況に基づいて複数のプロセッサコアのマップを計算するステップは、温度読取り値が温度しきい値未満であるとき、所与の作業負荷の所与の代表値について複数のプロセッサコアの組合せに関する消費電力と温度との間の関係を示す電力マップを計算するステップと、温度読取り値が温度しきい値よりも大きいとき、所与の温度について複数のプロセッサコアの組合せに関する消費電力と作業負荷との間の関係を示すパフォーマンスマップを計算するステップとを含み得る。
【０００５】
一態様方法では、プロセッサコアの第1および第2の構成は、アクティブなプロセッサコアの数を示し得る。一態様方法では、プロセッサコアの第1および第2の構成は、複数のプロセッサコアのうちのどのプロセッサコアがアクティブなプロセッサコアであるかを示し得る。一態様方法では、プロセッサコアの第1および第2の構成は、所与の周波数について、最も低いリーク、最も低い温度、または最も低い電圧レベルを有するプロセッサコアを含み得る。
【０００６】
一態様方法では、各プロセッサコアに関連したプロセッサコア情報を読み取るステップであり、プロセッサコア情報が、リーク電流、プロセッサコア速度、プロセッサ電圧設定テーブル、最大クロック周波数、温度読取り値、および現在の作業負荷を含む、ステップと、現在の作業負荷を現在の作業負荷の代表値に変換するステップとをさらに含み得る。一態様方法では、プロセッサコア情報は、温度読取り値および現在の作業負荷を含む動的情報を含み得るし、この態様方法は、動的情報を繰り返し読み取るステップをさらに含み得る。
【０００７】
一態様方法では、マルチコア集積回路のプロセッサコアは、中央処理ユニット、グラフィックス処理ユニットのシェーダプロセッサ、グラフィックス処理ユニットのテクスチャパイプ、またはデジタル信号プロセッサを含むグループから選択される1つまたは複数のプロセッサコアタイプを含み得る。
【０００８】
一態様は、マルチコア集積回路が、上記の態様方法のうちの1つまたは複数の動作を実行するためのプロセッサ実行可能命令によって構成される、複数のプロセッサコアを有するマルチコア集積回路を含む装置を含む。
【０００９】
一態様は、上で説明された態様方法のうちの1つまたは複数の機能を実行するための手段を含むマルチコア集積回路の複数のプロセッサコアのマルチコア制御のための装置を含む。
【００１０】
一態様は、上で説明された態様方法の1つまたは複数の動作をマルチコア集積回路に実行させるように構成されたプロセッサ実行可能ソフトウェア命令を記憶している、非一時的プロセッサ可読記憶媒体を含む。
【００１１】
本明細書に組み込まれ、本明細書の一部を構成している添付の図面は、本発明の例示的態様を示したものであり、上で示した一般的な説明および以下の詳細な説明とともに本発明の特徴を説明する働きをしている。
【図面の簡単な説明】
【００１２】
【図１Ａ】複数のディスプレイ上に一態様のマルチコアデバイスによって提示される複数のビデオ表示を示す図である。
【図１Ｂ】マルチコアデバイスのディスプレイ上に一態様のマルチコアデバイスによって提示される複数のビデオ表示を示す図である。
【図２Ａ】一態様のマルチコアデバイス上の標準パーツによって処理される一定の作業負荷についての消費電力および熱出力の変動を示すグラフである。
【図２Ｂ】一態様のマルチコアデバイス上の低速パーツによって処理される一定の作業負荷についての消費電力および熱出力の変動を示すグラフである。
【図３】マルチコアデバイス上の一態様のインテリジェントマルチコアを示すブロック図である。
【図４】マルチコアデバイスのインテリジェントマルチコア制御のための例示的電力マップの一連のグラフである。
【図５Ａ】マルチコアデバイスのインテリジェントマルチコア制御のための一態様のパフォーマンスマップのグラフである。
【図５Ｂ】マルチコアデバイスのインテリジェントマルチコア制御のための一態様のパフォーマンスマップのグラフである。
【図６】マルチコアデバイスのための一態様のインテリジェントマルチコア制御方法を示すプロセスフロー図である。
【図７】インテリジェントマルチコアとともに使用するためのマルチコアグラフィックス集積回路の一例を示す構成要素ブロック図である。
【図８】一態様のインテリジェントマルチコア制御方法とともに使用するのに適した例示的なマルチコアデバイスを示す構成要素図である。
【発明を実施するための形態】
【００１３】
様々な態様を、添付図面を参照して詳細に説明する。可能である場合、同じまたは同様の部品を参照するためにすべての図面を通して同じ参照番号が使用される。特定の例および実施態様に行われる参照は、例示目的のためであり、本発明の範囲および特許請求の範囲を限定することを意図していない。
【００１４】
本明細書で使用する「コンピューティングデバイス」という用語は、スマートフォン、ラップトップコンピュータ、パーソナルコンピュータ、サーバ、タブレット型コンピュータ、パームトップコンピュータ、および信号を集積回路(IC)に送るためのプログラマブルプロセッサおよびメモリおよび回路を個々に含む類似の電子デバイスのいずれか1つまたはすべてを指す。
【００１５】
本明細書で使用する「マルチコアデバイス」という用語は、複数のプロセッサコアを有するIC/システムオンチップ(SoC)/プロセッサを有する任意のコンピューティングデバイスを指す。本明細書における例示的なマルチコアデバイスは、マルチコアICを有するものとして説明される。マルチコアICの観点からのマルチコアデバイスの説明は、例示的なものであり、決して限定ではないものとする。マルチコアICの説明は、マルチコアSoCおよびマルチコアプロセッサ(たとえば、中央処理ユニット(CPU)、グラフィックス処理ユニット(GPU)、加速処理ユニット(APU)、物理処理ユニット(PPU)、デジタル信号プロセッサ(DSP)、マイクロプロセッサ、および他のプログラマブル論理デバイスなど)と交換可能であり得る。
【００１６】
本明細書で使用する「シリコンリーク」、「リーク」、「IDDQ」および「リーク電流」は互換的に使用され、デバイスがオフであるとき、半導体の絶縁領域または半導体の伝導領域を流れる電流を指す。リーク電流は、温度の増加とともに指数関数的に増える。
【００１７】
マルチコアデバイスのマルチコアICによる消費電力の増加は、しばしば、マルチコアICの熱放射の増加または温度の上昇、およびバッテリ寿命の減少をもたらす。マルチコアICの温度が上昇すると、過剰な加熱をもたらし得るし、臨界温度に到達するとプロセッサをシャットダウンすることによって、マルチコアデバイスのパフォーマンスを低下させ得るし、ユーザエクスペリエンスを減少させる。消費電力の増加は、制限された電力割当量を有するマルチコアデバイスのバッテリ寿命を大幅に低減させ得るし、この場合もユーザエクスペリエンスを減少させる。マルチコアデバイスにおける現在の熱および電力管理は、プロセッサコアのプロセッサクロック周波数を抑える、または低減することを伴い得る。より低速のプロセッサクロックは、より少ない熱出力を作り出し、より少ない電力を使用するが、プロセッサの作業負荷のスループットも低減する。
【００１８】
様々な態様の方法およびデバイスは、消費電力のワット当たりの最適なパフォーマンスを達成するために、プロセスタスクを実行するために、マルチコアデバイスのマルチコアIC内の、およびプロセッサコアの数を制御することによって、マルチコアデバイスにおける熱および電力の問題を管理する代替方法を提供する。同じ作業負荷での消費電力は、リークおよび動的な電力動向により作業負荷を動作させているアクティブなプロセッサコアの数に応じて変化する。様々な態様では、ワット当たりの最高のパフォーマンスのためのアクティブなコアの最適な数は、たとえば、温度、速度、リーク、パーツタイプ、および総作業負荷など、様々なファクタに基づいて決定され得る。
【００１９】
マルチコアデバイス上の並行したマルチメディアプロセスは、制限された電力割当量を有するマルチコアデバイスのためのかなりの電力プロファイルを必要とする。そのようなマルチメディアプロセスの例は、1つまたは複数のデバイス上の1つまたは複数の出力のためのグラフィックス、物理、ビデオ、画像、オーディオ、および通信処理を含む。図1Aおよび図1Bは、並行したマルチメディアプロセスを動作させる例示的なマルチコアデバイス10(たとえばスマートフォン)を示す。図1Aにおいて、マルチコアデバイス10は、ワイヤレス(またはワイヤード)接続14を介して表示装置12に接続し得る。マルチコアデバイス10は、マルチメディアプロセス出力16の表示のためのデータを送信することができる。たとえば、マルチコアデバイス10は、60フレーム毎秒(fps)で1080p解像度のビデオゲームグラフィックスを表示するために使用され得るデータを送信することができる。表示装置12は、マルチメディアプロセス出力を提示するためにマルチコアデバイス10からワイヤレス接続14を介して受信されるデータを使用することができる。この例では、表示装置12は、任意のコンピューティングデバイス、接続されたテレビもしくはモニタ、または別のマルチコアデバイスでもあってもよい。同時に、マルチコアデバイス10は、異なるマルチメディアプロセス出力18を提示することができる。たとえば、マルチコアデバイス10は、異なるゲームシーン、通信インターフェース、ゲームコントローラ、またはゲーム、アプリケーション、もしくはモバイルデバイスユーザインターフェースを提示することができ、これらは、表示装置12上に提示されるマルチメディアプロセス出力とは異なる複雑さを有し得る。マルチコアデバイス10と表示装置12の両方は、たとえば、マルチコアデバイス10のユーザの相手および/またはユーザの1つまたは複数のさらなる画像またはビデオを表示することができる。
【００２０】
図1Bに示される例は、マルチコアデバイス10が、複数のマルチメディアプロセス出力を並行して提示することが可能であり得ることを示す。この例では、マルチコアデバイス10は、マルチメディアプロセス出力16および1つまたは複数の異なるマルチメディアプロセス出力18を、ディスプレイ20上に並行して提示することができる。マルチメディアプロセス出力16は、たとえば、60fpsで1080p解像度のビデオゲームグラフィックスを含み得るし、1つまたは複数の異なるマルチメディアプロセス出力18は、たとえば、30fpsで1080p解像度のユーザの相手および/またはユーザのビデオを含み得る。ディスプレイ20は、様々な既知の表示技術によって実装され、様々な解像度およびリフレッシュレートをサポートし得る。図1Aと図1Bの両方に示される例では、マルチコアデバイス10および表示装置12は、たとえば、ユーザと相手との間のビデオゲームおよび/または通信のオーディオ部分など、他のマルチメディアプロセス出力を提示し得る。マルチコアデバイス10は、たとえば表示に関係する振動など、ハプティックフィードバックを提供することもできる。マルチメディアプロセスのすべてを処理し、これらの例に関係する出力を提示するためのマルチコアデバイス10の作業負荷によって、マルチコアICによる熱出力および消費電力のかなりの増加がもたらされる場合がある。
【００２１】
図2Aおよび図2Bのグラフは、様々な温度レベルでマルチコアデバイス上の標準および低速パーツによって処理される一定の作業負荷についての消費電力の変動を示す。作業負荷の量が測定され、百万命令毎秒を表すMIPSとして示され得る。大量生産の実行において、各マルチコアICは、バッチにおける各マルチコアICの処理速度および熱性能の変動を生じさせ得る、マルチコアICの構成要素材料における本質的な自然の変動によるわずかに異なる物理的特性およびパフォーマンス特性を有し得る。パフォーマンスの変動によって、マルチコアICは、高速、標準/公称、または低速マルチコアICとして分類され得る。パフォーマンスの変動は、マルチコアICにおけるコア間の相違、異なる能力および/または異なる目的のために構築されたプロセッサおよび/またはコア、ならびに作業負荷の分散からも生じ得る。コアが同じ回路設計を有するときでさえ、同じSiダイ上のコアの特性は、たとえばSi製造範囲、作業負荷の相違による動的な温度変化、コアの位置による熱放散の相違、およびSiダイ平面図上の近くの他の機能ブロックからの熱伝導など、いくつかの理由で変わり得る。マルチコアICによって達成されるパフォーマンスは、トランジスタ接合部温度にも依存する。図2Aおよび図2Bのグラフは、それぞれ、2つ、3つ、および4つのアクティブなプロセッサコアを有する標準および低速マルチコアICの状況を表す。標準マルチコアICの性能を表すグラフ200は、それらの温度が約25℃と90℃との間であるとき、線204の3つのアクティブなプロセッサコアで一定の作業負荷を実行するために、例示的なマルチコアICがどのように最適に動作する(たとえば、最少の電力を使用する)かを示す。約90℃を超えると、同じマルチコアICは、線206の2つのアクティブなプロセッサコアで一定の作業負荷を実行するために最適に動作され得る。この例では、示された温度範囲において、線208で、同一量の作業負荷を処理するために、この例示的なマルチコアICが第4のプロセッサコアを作動させることは、最適ではない可能性がある。例示的な低速マルチコアICでは、同じ温度範囲内で、グラフ202は、線212の2つのアクティブなプロセッサコア、または線214の4つのアクティブなプロセッサコアよりむしろ、線210の3つのアクティブなプロセッサコアで一定の作業負荷を処理することが最適であり得ることを示す。最も低い消費電力でのアクティブなコアの最適な数は、温度、IC速度、および作業負荷の量(必要に応じてMIPSまたはMHz)に応じて変わり得る。
【００２２】
図3は、マルチコアICにおいてアクティブでなければならない複数のプロセッサコアの数および特定のものを制御するための一態様のインテリジェントマルチコア制御を示す。マルチコアIC300は、この例では、コア0、コア1、コア2、およびコア3とラベル付けされる4つのプロセッサコア302を含む。任意のマルチコアIC300におけるプロセッサコア302の数は、変わり得るし、図3に示される4つのプロセッサコアよりも多くても少なくてもよい。各プロセッサコア302は、プロセッサコア302からアクセスされ得る、または個別のプロセッサ(図示せず)またはメモリ(図示せず)からアクセスされ得る様々なプロセッサコア(またはSi)情報304に関連付けられ得る。プロセッサコア情報304は、IDDQテスト結果またはリーク電流、パーツタイプまたはプロセッサコア(またはSi)速度(たとえば、低速、標準/公称、高速)、プロセッサ電圧スケーリング(PVS)テーブル、最大クロック周波数(Fmax)、温度読取り値、および現在の作業負荷を含み得る。
【００２３】
プロセッサコア302の最適な数、およびプロセッサコア302のうちのどれをアクティブにするべきかを決定するために、作業負荷アナライザ306は、各プロセッサコア302のプロセッサコア情報304を有する信号316を集めることができる。作業負荷アナライザ306は、プロセッサコア302からある静的情報を記憶するために使用され得るメモリ(図示せず)に関連付けられ得る。プロセッサコア302の静的情報は、リーク、PVSテーブル、パーツタイプまたは速度、および最大クロック周波数など、一定であるプロセッサコア情報304であり得る。この静的情報を記憶することによって、プロセッサコア302についての静的情報を取り出すオーバーヘッドが低減し得るし、それによって、プロセッサコア302の最適な組合せを決定するために必要とされる時間および電力が低減する。静的情報は、プロセッサコア302の製造プロセスについての製造業者の仕様および/またはその間のテストから得られ場合がある。製造業者は、ユーザによるプロセッサコア302の使用の前に静的情報がマルチコアデバイス内に含まれるように、製造の間、静的情報をプロセッサコア302、個別のプロセッサまたはメモリに記憶することができる。残りのプロセッサコア情報304は、時間とともに変わり得る動的情報であり得る。そのような動的情報は、プロセッサコア302の温度読取り値および作業負荷を含み得る。そのような動的情報は、たとえば、プロセッサコア302の最適な組合せの決定ごとなど、必要に応じて、作業負荷アナライザ306によって取り出され得る。作業負荷アナライザ306は、プロセッサコア302の現在の作業負荷情報をプロセッサコア302の作業負荷の代表値に変換することができる。たとえば、作業負荷は、MIPS、プロセッサ利用率、クロック周波数、または何らかのパフォーマンスカウンタ値によって表され得る。現在の作業負荷情報および作業負荷の代表値は、個々または一群のプロセッサコア302についてのものであり得る。
【００２４】
リアルタイムマルチコア電力モデル308は、変換された作業負荷代表値を含むプロセッサコア情報304の一部またはすべてを有する信号318を受信することができる。リアルタイムマルチコア電力モデル308は、現在提供されているプロセッサコア情報304および様々な仮定状況の範囲に対するプロセッサコア情報304について消費電力を計算するためにプロセッサコア情報304を使用することができる。これらの仮定状況は、ある作業負荷値のある温度の範囲にわたるアクティブなプロセッサコア302の様々な組合せを含み得る。リアルタイムマルチコア電力モデル308は、所与の作業負荷(または作業負荷の所与の代表値)でのプロセッサコア302の組合せについての消費電力と温度との間の関係を示す実際のおよび仮想の計算および/または計算結果から成る、電力マップまたはデータセットを作ることができる。これらの仮定状況は、所与の温度でのある作業負荷の範囲にわたるアクティブなプロセッサコア302の様々な組合せも含み得る。リアルタイムマルチコア電力モデル308は、同様に、現在提供されているプロセッサコア情報304および様々な仮定状況の範囲に対するプロセッサコア情報304に基づいて、パフォーマンスマップまたはデータセットを作ることができる。消費電力と作業負荷との間の関係を示す計算は、たとえば、選択された温度でのプロセッサコア302の組合せについて、毎秒実行されるスループットまたは命令によって表される。電力マップおよびパフォーマンスマップは、信号320として、たとえば温度および代表作業負荷値、ならびにプロセッサコア情報304の一部もしくはすべてなど、マップを決定するために使用されるファクタとともにリアルタイムマルチコア電力モデル308によって出力され得る。
【００２５】
リアルタイムマルチコア電力モデル308は、所与の作業負荷についての最低電力、または所与の電力割当量についての最高パフォーマンスのうちの1つであり得る現在の最適化ポリシーに応じて、電力マップまたはパフォーマンスマップを作成することができる。別の態様では、リアルタイムマルチコア電力モデル308が電力マップを作成するか、パフォーマンスマップを作成するかは、いくつかのファクタに依存し得る。たとえば、温度しきい値は、どのマップを作成するべきかについて決定するために適用され得る。温度読取り値がしきい値未満であるとき、リアルタイムマルチコア電力モデル308は、所与の作業負荷について最低の消費電力を決定するのを支援するために、電力マップを作成することができる。これによって、マルチコアデバイスは、消費電力をできるだけ低く保ちながら、作業負荷のニーズを満たすことができ、それによって、バッテリの寿命が延長する。消費電力をできるだけ低く保つことは、依然として作業負荷についてのパフォーマンスの目標を達成しながら、温度をできるだけ低く保つことにもなる。温度読取り値がしきい値を上回るとき、リアルタイムマルチコア電力モデル308は、所与の電力割当量またはレベルについて、最低の消費電力での最高のパフォーマンスまたは最高の作業負荷を決定するのを支援するために、パフォーマンスマップを作成することができる。これによって、マルチコアデバイスは、最少の電力量で最高の作業負荷を提供することができ、これによって、これらのパラメータ内で最高のユーザエクスペリエンスを提供しながら、温度の上昇または温度の維持もしくは低下にさえ与える影響が最少となる。
【００２６】
マップを作成する際、リアルタイムマルチコア電力モデル308は、個々のプロセッサコア302の様々な組合せに基づいて結果を計算するために、各プロセッサコア302のプロセッサコア情報304を使用し得る。たとえば、リアルタイムマルチコア電力モデル308は、最も低い温度、最少のリーク、最高速度、および/または最少の作業負荷を有するプロセッサコア302を結合することを選択することができる。別の態様では、リアルタイムマルチコア電力モデル308は、その計算における特定の仮定を行うことができる。そのような仮定は、同じマルチコアIC300に属する各プロセッサコア302がプロセッサコア静的情報のようないくつかの特性を共有することができることを含み得る。他の態様は、たとえば、プロセッサコアの組合せは、隣接するプロセッサコア302のみを含まなければならない(たとえば、コア0およびコア1、コア1およびコア2、コア2およびコア3、コア3およびコア4、コア0、コア1およびコア2、コア1、コア2およびコア3、ならびにコア2、コア3およびコア4)、または、同じタイプのプロセッサコア302のみが結合され得るなど、プロセッサコア302の組合せを作成する際のいくつかのルールを守るようにリアルタイムマルチコア電力モデル308に求め得る。隣接するプロセッサコア302は、物理的に隣接する必要はなく、ルールに従って隣接するように示され得る。
【００２７】
パフォーマンス/ワット最適化エンジン310は、リアルタイムマルチコア電力モデル308からマップおよびファクタを信号320として、ならびにシステム電力割当量マネージャ314から電力割当量を信号322として受信し得る。ファクタは、たとえば温度および代表作業負荷値、ならびにプロセッサコア情報304の一部またはすべてなど、マップを決定するために使用されるファクタを含み得る。最適化エンジン310は、現在の作業負荷についてプロセッサコア302の最適な構成を決定または識別するために、多次元空間においてパフォーマンス最適化アルゴリズムを実行することができる。構成は、アクティブおよび/または非アクティブなプロセッサコア302の数、ならびに/または、どのプロセッサコア302がアクティブおよび/もしくは非アクティブに指定されるべきかを含み得る。アクティブにするプロセッサコア302の数は、マップ、および場合によっては、ファクタも使用してパフォーマンス最適化アルゴリズムから導出され得る。リアルタイムマルチコア電力モデル308のように、最適化エンジン310は、個々の情報に基づいて、いくつかの仮定に基づいて、または1組のルールに基づいて、プロセッサコア302の任意の組合せを作ることができる。アクティブおよび/または非アクティブなプロセッサコア302を選択することは、個々のプロセッサコア302のプロセッサコア情報304の任意の単一の部分または組合せに基づき得る。たとえば、最適化エンジン310は、所与の周波数について、最も低いリーク、最も低い温度、および/または最も低い電圧レベルを有するアクティブなプロセッサコア302を選択することができる。最適化エンジン310は、たとえば時間、作業負荷、消費電力量、および/または温度レベルなど、単位測定値について、どれくらいおよび/またはどのプロセッサコア302がアクティブおよび/または非アクティブかを識別することができる。
【００２８】
マルチコアマネージャ312は、最適化エンジン310から識別されたプロセッサコア情報を有する信号324を受信することができる。マルチコアマネージャ312は、プロセッサコア302ごとにアクティビティ状態を制御することができ、それによって、単位測定値について、どれくらいおよび/またはどのプロセッサコア302がアクティブ/非アクティブであるかを制御する。一態様では、マルチコアマネージャ312は、特定のプロセッサコア302または一群のプロセッサコア302におけるアクティブ状態および/または非アクティブ状態を含む状態信号326でマルチコアIC300または個々のプロセッサコア302にシグナリングすることができる。一態様では、マルチコアマネージャ312は、最適化エンジン310によってアクティブであると考えられるプロセッサコア302のみのためのプロセスをスケジュールするために、スケジューラ(図示せず)を制御する、またはスケジューラと対話する。別の態様では、マルチコアマネージャ312は、アクティブなプロセッサコア302のためのプロセスをスケジュールし、最適化エンジン310によって非アクティブであると考えられるプロセッサコア302のためのプロセスをスケジュールすることを回避するために、スケジューラを制御する、またはスケジューラと対話する。
【００２９】
一態様では、マルチコアデバイスは、1つまたは複数のマルチコアIC300を有し得る。マルチコアデバイスは、作業負荷アナライザ306、リアルタイムマルチコア電力モデル308、最適化エンジン310、およびマルチコアマネージャ312の各々のうちの1つまたは複数をさらに含み得る。これらの構成要素の各々は、1つまたは複数のマルチコアIC300と対にされ得る。
【００３０】
作業負荷アナライザ306、リアルタイムマルチコア電力モデル308、最適化エンジン310およびマルチコアマネージャ312は、マルチコアデバイスのメモリ(図8参照)上に記憶され、マルチコアデバイスのプロセッサ(図8参照)によって実行されるソフトウェアとして各々実装され得る。
【００３１】
図4は、マルチコアデバイスのインテリジェントマルチコア制御のための態様のグラフの電力マップの例を示す。グラフ表現400、402、404、および406は、電力マップをもたらす4つの状況を表す。各グラフ表現400、402、404、および406は、ある範囲の温度にわたる所与の代表作業負荷値での指定された数のプロセッサコアについてのリアルタイムマルチコア電力モデルによって計算される消費電力を表す個々のグラフを含む。第1の例示的な電力マップ400のグラフ表現は、標準タイプのマルチコアICおよび中度の作業負荷(たとえば中位のMIPS数)のものである。この第1の例示的な電力マップの作成に関係する例示的なマルチコアICでは、1つから4つのプロセッサコアが作業負荷を処理することが可能であり得る。矢印408は、約110℃で、2つのアクティブなプロセッサコアを使用することが、依然として指定された作業負荷を処理することが可能でありながら、最も低い消費電力をもたらすことを示す。
【００３２】
第2の例示的な電力マップ402のグラフ表現は、同じく標準タイプのマルチコアICであるが、重度の作業負荷(たとえば高いMIPS数)のものである。この例では、この第2の例示的な電力マップを生成するために使用される例示的なマルチコアICは、作業負荷を処理するために、2つから4つのプロセッサコアを必要とし得る。この場合、矢印410は、約120℃で、3つのアクティブなプロセッサコアを使用することが、依然として指定された作業負荷を処理することが可能でありながら、最も低い消費電力をもたらすことを示す。
【００３３】
第3の例示的な電力マップ404のグラフ表現は、低速タイプのマルチコアICのためのものであるが、第1の例示的な電力マップ400のグラフ表現と同じ作業負荷を使用するので、前の2つのグラフ表現400、402と異なる。この例では、1つから4つのプロセッサコアが作業負荷を処理することができ、矢印412は、2つのアクティブなプロセッサコアを使用することが約110℃で作業負荷を処理するために最も低い消費電力をもたらすことを示す。
【００３４】
第4の例示的な電力マップ406のグラフ表現は、低速タイプのマルチコアICのためのものであるが、第2の例示的な電力マップ402のグラフ表現と同じ重度の作業負荷を使用する。この例では、2つから4つのプロセッサコアが作業負荷を処理することができ、矢印414は、4つのアクティブなプロセッサコアを使用することが約110℃で作業負荷を処理するために最も低い消費電力をもたらすことを示す。
【００３５】
図5Aおよび図5Bは、マルチコアデバイスのインテリジェントマルチコア制御のための態様のパフォーマンスマップを示す。グラフ表現500および502は、パフォーマンスマップをもたらす2つの状況を表す。各グラフ表現は、可変の作業負荷での指定された数のプロセッサコアについてのリアルタイムマルチコア電力モデルによって計算される消費電力を表すグラフを含む。これらの計算における温度(図示せず)は、一定であり得る。第1の例示的なパフォーマンスマップ500のグラフ表現は、標準タイプのマルチコアICのものである。このパフォーマンスマップの作成に関係する例示的なマルチコアICでは、1つから4つのプロセッサコアが可変の作業負荷を処理することが可能であり得る。矢印504は、2つのアクティブなプロセッサコアを使用することが、P2 mWの電力割当量でX2 MIPSの最高のパフォーマンスをもたらし、一方、1つのアクティブなプロセッサコアは、より少ないMIPSしか処理できず、3つまたは4つのアクティブなプロセッサコアは、ほぼ同じ電力割当量でさらにより少ないMIPSしか処理できないことを示す。
【００３６】
第2の例示的なパフォーマンスマップ502のグラフ表現も、可変の作業負荷を処理することが可能な2つから4つのプロセッサコアを有する、標準タイプのマルチコアICのものである。この場合、矢印506は、4つのアクティブなプロセッサコアを使用することが、P5 mWの電力割当量でX4 MIPSの最高のパフォーマンスをもたらし、一方、3つのアクティブなプロセッサコアは、より少ないMIPSしか処理できず、2つのアクティブなコアは、ほぼ同じ電力割当量でさらにより少ないMIPSしか処理できないことを示す。
【００３７】
図6は、マルチコアデバイスのための一態様のインテリジェントマルチコア制御方法600を示すプロセスフロー図である。マルチコアデバイスが複数のマルチコアICを有するとき、マルチコアデバイスは、特定のマルチコアICのプロセッサコアのための本明細書で説明するブロックの一部もしくは全部を実行することを選択し得る。たとえば、マルチコアデバイスは、一般の計算タスクのためのマルチコアIC、ならびに特にマルチメディア処理およびレンダリングのための別のマルチコアICを含み得る。特定のタスクは、異なるマルチコアICに指定され得る。マルチコアデバイスは、インテリジェントマルチコア制御方法600を実行するとき、特定のマルチコアICのための特定のタスクの作業負荷のためにそのように行うことができる。そのような場合、マルチコアデバイスは、作業負荷のための適切なマルチコアICを選択し、選択されたマルチコアICのプロセッサコアに関して、インテリジェントマルチコア制御方法600のブロックを実行することができる。
【００３８】
ブロック602で、マルチコアデバイスは、マルチコアデバイスのプロセッサコアの一部または全部に関連した静的情報を読み取ることができる。プロセッサコアの静的情報は、リーク、PVS(プロセッサ電圧スケーリング)テーブル、およびパーツタイプまたはSi速度など、一定であるプロセッサコア情報であり得る。ブロック604で、マルチコアデバイスは、マルチコアデバイスのプロセッサコアに関連した動的情報を読み取ることができる。動的情報は、時間とともに変化し得るし、プロセッサコアの温度読取り値および作業負荷を含み得る。ブロック606で、マルチコアデバイスは、現在の作業負荷読取り値を代表作業負荷値に変換することができる。たとえば、作業負荷は、MIPS、プロセッサ利用率、動作クロック周波数、または何らかのパフォーマンスカウンタ値によって表され得る。
【００３９】
決定ブロック608で、マルチコアデバイスは、温度読取り値を温度しきい値と比較することによって、温度しきい値に対する温度読取り値の関係を決定することができる。この関係の決定は、様々な方法で行われ得る。マルチコアデバイスは、各プロセッサコアの温度読取り値と温度しきい値とを比較することができる。決定は、プロセッサコアベースにプロセッサコアにおいてなされ得るし、全体的な決定は、多数決原理によってなされ得る。たとえば、プロセッサコア温度読取り値の大部分が温度しきい値未満であるとき、プロセッサコアのグループ全体は、決定ブロック608における決定のためにしきい値未満の温度読取り値を有すると見なされる。一態様では、各プロセッサコアは、決定ブロック608における決定のために別々に扱われ得る。さらなる態様は、温度しきい値と比較するためにプロセッサコアのグループの温度の平均値または中央値を使用し、決定ブロック608における決定のためにプロセッサコアをグループと見なし得る。
【００４０】
決定された関係に応じて、マルチコアデバイスは、電力マップまたはパフォーマンスマップを計算することができる。決定ブロック608における決定が、プロセッサコアの温度読取り値が、グループとして、または個々に、温度しきい値よりも大きいということであるとき、ブロック610で、マルチコアデバイスは、所与の電力割当量について最適または最高のパフォーマンスを達成するために使用されるべきパフォーマンスマップを計算することができる。一態様では、温度読取り値がしきい値に等しいとき、ブロック610で、マルチコアデバイスは、パフォーマンスマップを計算し得る。ブロック612で、マルチコアデバイスは、所与の電力割当量についてパフォーマンスを最適化することができるプロセッサコアの構成を識別することができる。一態様では、構成は、所与の電力割当量について、アクティブ/非アクティブなプロセッサコアの数、および/または、どのアクティブ/非アクティブなプロセッサコアがパフォーマンスを最適化することができるかを含み得る。ブロック618で、マルチコアデバイスは、プロセッサコアのアクティビティ状態を制御することができ、それによって、所与の電力割当量について最高のパフォーマンスを達成するパラメータ内で作業負荷を実行するために、数、ならびに/または、どのプロセッサコアがアクティブおよび/もしくは非アクティブであるかを制御する。
【００４１】
決定ブロック608における決定が、プロセッサコアの温度読取り値が、グループとして、または個々に、温度しきい値未満であるということであるとき、ブロック614で、マルチコアデバイスは、所与の作業負荷について最適または最低の電力を達成するために使用されるべき電力マップを計算することができる。一態様では、温度読取り値がしきい値に等しいとき、ブロック614で、マルチコアデバイスは、電力マップを計算し得る。ブロック616で、マルチコアデバイスは、所与の作業負荷について電力を最適化することができるプロセッサコアの構成を識別することができる。一態様では、構成は、所与の作業負荷について、アクティブ/非アクティブなプロセッサコアの数、および/または、どのアクティブ/非アクティブなプロセッサコアが電力を最適化することができるかを含み得る。ブロック618で、マルチコアデバイスは、プロセッサコアのアクティビティ状態を制御することができ、それによって、所与の作業負荷について最低の電力を達成するパラメータ内で作業負荷を実行するために、数、ならびに/または、どのプロセッサコアがアクティブおよび/もしくは非アクティブであるかを制御する。
【００４２】
マルチコアデバイスは、実行されるべきプロセスの作業負荷ごとにインテリジェントマルチコア制御方法600を繰り返し実行することができる。一態様では、静的情報が変化していない可能性があるので、ブロック602を繰り返すことは、不必要であり得る。そのような場合、マルチコアデバイスは、プロセッサコアの動的情報を読み取ることによって、ブロック604からインテリジェントマルチコア制御方法600を繰り返すことができる。
【００４３】
図7は、本明細書で説明するように、インテリジェントマルチコア制御とともに使用するのに好適なマルチコアIC300アーキテクチャの簡略構成要素ブロック図を提供する。図7に示される例におけるマルチコアIC300は、複数のプロセッサコアを有するグラフィックス処理ユニット(GPU)であり、その一群は、シェーダプロセッサ(SP)700であり、その一群は、テクスチャパイプ(TP)702であり、ハイエンドコンピューティングデバイス(たとえば、デスクトップコンピュータ)に適し得る。シェーダプロセッサ700およびテクスチャパイプ702は、互いに並行してプロセスを実行するように構成され得る。インテリジェントマルチコア制御は、互いに並行してプロセスを実行するように構成される任意の組のプロセッサコアのために実施され得る。プロセッサコアはすべて、マルチコアIC300内にあり得る。一態様では、インテリジェントマルチコア制御は、類似のマルチコアIC300にわたるプロセッサコアを管理するために使用され得る。たとえば、いくつかのマルチメディアマルチコアIC300を有する潜在的な将来のマルチコアデバイス。マルチメディアマルチコアIC300の各々は、それらがマルチメディアタスクを処理する類似の処理能力を有し得る。マルチコアデバイスは、所与の作業負荷を実行するために、複数のマルチメディアマルチコアIC300から複数のプロセッサコアを選択するために、インテリジェントマルチコア制御を使用することができる。別の態様では、マルチコアデバイスは、別の類似のマルチコアIC300に関して1つのマルチコアIC300内の一群のプロセッサコアを最適化するために、インテリジェントマルチコア制御を使用することができる。前の例で説明したように、いくつかのマルチメディアマルチコアIC300を使用する一例は、所与の作業負荷を実行するために、一群のマルチメディアマルチコアIC300からの1つのマルチメディアマルチコアIC300から複数のプロセッサコアを選択するために、マルチコアデバイスがインテリジェントマルチコア制御を使用することを伴い得る。
【００４４】
図7は、各プロセッサコア、シェーダプロセッサ700、およびテクスチャパイプ702が作業負荷アナライザ306およびマルチコアマネージャ312に接続され得ることをさらに示す。テクスチャパイプ702と密に統合されるシェーダプロセッサ700は、純粋に、シェーダの作業負荷の分散を達成するハードウェアブロックによって駆動され得るので、この例は、マルチコアマネージャ312とシェーダプロセッサ700およびテクスチャパイプ702との間の関係の簡略化である。作業アナライザ306は、リアルタイムマルチコア電力モデル308に接続され得るし、リアルタイムマルチコア電力モデル308は、パフォーマンス/ワット最適化エンジン310に接続され得るし、パフォーマンス/ワット最適化エンジン310は、マルチコアマネージャ312に接続され得る。したがって、図7に図示した構成要素は、本明細書で説明するように、インテリジェントマルチコア制御を実施することができ得る。
【００４５】
様々な態様は、モジュール式シェーダプロセッサ/テクスチャパイプユニットにおいて実施され得る。このアーキテクチャは、シェーダおよびテクスチャ処理能力において変わり得るGPUの変動の作成を可能にする。シェーダ処理は、GPUによって実行されるグラフィックス処理における多くのステップのうちの1つに過ぎず、したがって、シェーダプロセッサ/テクスチャパイプユニットに関する上記の議論は、完全な作業コアの一部のみに対応する。シェーダプロセッサ/テクスチャパイプユニットは、純粋に、前のハードウェアブロックによって駆動され得るし、ソフトウェアから個々に制御されない可能性がある。しかしながら、将来のコンピューティングシステムアーキテクチャは、シェーダプロセッサ/テクスチャパイプユニットをソフトウェアから制御できるかもしれない。
【００４６】
図8は、インテリジェントマルチコア制御を使用するための一態様のマルチコアデバイス800を示す。様々な実施形態では、マルチコアデバイス800は、タッチスクリーンコントローラ804および内部メモリ806に結合されたプロセッサ802を含むことができる。プロセッサ802は、汎用または特定の処理タスクに指定された1つまたは複数のマルチコアICであり得る。内部メモリ806は揮発性または不揮発性メモリであってもよく、また、セキュアなおよび/または暗号化メモリであっても、または非セキュアなおよび/または非暗号化メモリであっても、あるいはそれらの任意の組合せであってもよい。タッチスクリーンコントローラ804およびプロセッサ802は、抵抗感知タッチスクリーン、容量感知タッチスクリーン、赤外線感知タッチスクリーンなどの、タッチスクリーンパネル812に結合される場合もある。マルチコアデバイス800は、互いに結合され、かつ/またはプロセッサ802に結合された、送信および受信するための1つまたは複数の無線信号トランシーバ808(たとえば、Peanut(登録商標)、Bluetooth(登録商標)、Zigbee(登録商標)、Wi-Fi、RF無線など)、およびアンテナ810を有する場合がある。トランシーバ808およびアンテナ810は、様々なワイヤレス送信のプロトコルスタックおよびインターフェースを実装するために、上述の回路とともに使用される場合がある。マルチコアデバイス800は、セルラーネットワークを介する通信を可能にし、プロセッサに結合されたセルラーネットワークワイヤレスモデムチップ816を含む場合がある。マルチコアデバイス800は、プロセッサ802に結合された周辺デバイス接続インターフェース818を含む場合がある。周辺デバイス接続インターフェース818は、1つのタイプの接続を受け入れるように単独で構成される場合があるか、または、USB、FireWire、Thunderbolt、もしくはPCIeなどの様々なタイプの物理接続および通信接続を共通もしくはプロプライエタリに受け入れるように、複数で構成される場合がある。周辺デバイス接続インターフェース818は、単独で構成された周辺デバイス接続ポート(図示せず)に結合される場合もある。また、マルチコアデバイス800は、音声出力を提供するためのスピーカ814を含むことも可能である。また、マルチコアデバイス800は、プラスチック、金属または材料の組合せで構築された、本明細書において説明されている構成要素のすべて、またはいくつかを含むためのハウジング820を含むことも可能である。マルチコアデバイス800は、使い捨てまたは充電可能なバッテリなどの、プロセッサ802に結合された電源822を含む場合もある。充電可能なバッテリは、マルチコアデバイス800の外部にある電源から充電電流を受けるために、周辺デバイス接続ポートに結合される場合もある。
【００４７】
上記の方法の説明およびプロセスフロー図は、単に説明のための例として提供され、様々な態様のステップが提示された順序で実行されなければならないことを要求または意味するものではない。当業者によって諒解されるように、上記の態様におけるステップの順序は、いかなる順序でも実施することができる。「したがって」、「次いで」、「次に」、などのような単語は、ステップの順序を限定することを意図しておらず、これらの単語は、単に、方法の説明を通じて読者を導くために使用される。さらに、たとえば、冠詞「a」、「an」、または「the」を使用して要素を単数で特許請求するどの参照も、要素を単数に限定するものとして解釈されるべきではない。
【００４８】
本出願で使用する場合、「構成要素」、「モジュール」、「システム」、「エンジン」、「ジェネレータ」、「マネージャ」などの用語は、限定はしないが、特定の動作または機能を実施するように構成された、ハードウェア、ファームウェア、ハードウェアとソフトウェアの組合せ、ソフトウェア、または実行中のソフトウェアなどのコンピュータ関連エンティティを含むものとする。たとえば、構成要素は、プロセッサ上で動作しているプロセス、プロセッサ、オブジェクト、実行ファイル、実行スレッド、プログラム、および/またはコンピュータであり得るが、それらに限定されない。実例として、コンピューティングデバイス上で動作しているアプリケーションとコンピューティングデバイスの両方は、構成要素と呼ばれる場合がある。1つまたは複数の構成要素は、プロセスおよび/もしくは実行スレッドの中に存在する場合があり、1つの構成要素は、1つのプロセッサもしくはコアに局在する場合があり、かつ/または2つ以上のプロセッサもしくはコアの間に分散する場合がある。加えて、これらの構成要素は、様々な命令および/またはデータ構造を記憶している様々な非一時的コンピュータ可読媒体から実行することができる。構成要素は、ローカルプロセスおよび/もしくはリモートプロセス、関数呼出しもしくはプロシージャ呼出し、電子信号、データパケット、メモリ読出し/書込み、ならびに他の知られているネットワーク、コンピュータ、プロセッサ、および/またはプロセス関連の通信方法によって通信することができる。
【００４９】
本明細書で開示された態様に関して記載された様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズムステップは、電子ハードウェア、コンピュータソフトウェア、または両方の組合せとして実装される場合がある。ハードウェアおよびソフトウェアのこの互換性を明確に説明するために、様々な例示的な構成要素、ブロック、モジュール、回路、およびステップが、それらの機能の点から一般的に上記で説明されている。そのような機能がハードウェアまたはソフトウェアのどちらとして実施されるのかは、システム全体に課される特定の用途および設計制約に依存する。当業者は、説明した機能を特定の適用例ごとに様々な方法で実装することができるが、そのような実装の決定は、本発明の範囲からの逸脱を引き起こすものと解釈されるべきではない。
【００５０】
本明細書において開示されている態様に関連して説明されている様々な実例論理、論理ブロック、モジュールおよび回路を実現するために使用されるハードウェアは、本明細書において説明されている機能を実施するために設計された、汎用プロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、書替え可能ゲートアレイ(FPGA)、または他のプログラマブル論理回路、離散ゲートまたはトランジスタ論理、離散ハードウェア構成要素、またはそれらの任意の組合せを使用して実現または実施することができる。汎用プロセッサはマルチプロセッサであり得るが、代替として、プロセッサは任意の従来のプロセッサ、コントローラ、マイクロコントローラ、または状態機械であり得る。プロセッサは、コンピューティングデバイスの組合せ、たとえば、DSPとマルチプロセッサとの組合せ、複数のマルチプロセッサ、DSPコアと連携する1つもしくは複数のマルチプロセッサ、または任意の他のそのような構成として実装される場合もある。代替として、いくつかのステップまたは方法は、所与の機能に特有の回路によって実行される場合がある。
【００５１】
1つまたは複数の例示的な態様では、述べられる機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで、実施され得る。ソフトウェアで実現される場合、機能は、非一時的コンピュータ可読媒体上または非一時的プロセッサ可読媒体上の1つまたは複数の命令またはコードとして記憶することができる。本明細書で開示する方法またはアルゴリズムのステップは、非一時的コンピュータ可読記憶媒体またはプロセッサ可読記憶媒体上に常駐し得るプロセッサ実行可能ソフトウェアモジュール内で具現化され得る。非一時的コンピュータ可読記憶媒体またはプロセッサ可読記憶媒体は、コンピュータまたはプロセッサによってアクセスすることができる、任意の記憶媒体であり得る。限定ではなく例として、そのような非一時的コンピュータ可読媒体または非一時的プロセッサ可読媒体は、RAM、ROM、EEPROM、フラッシュメモリ、CD-ROMもしくは他の光ディスク(disk)ストレージ、磁気ディスク(disk)ストレージもしくは他の磁気ストレージデバイス、あるいは命令もしくはデータ構造の形で所望のプログラムコードを記憶するのに使用でき、コンピュータによってアクセスできる任意の他の媒体を含むことができる。ディスク(disk)およびディスク(disc)は、本明細書で使用されるとき、コンパクトディスク(disc)(CD)、レーザディスク(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フロッピディスク(disk)、およびブルーレイディスク(disc)を含み、ディスク(disk)は、通常はデータを磁気的に再生し、ディスク(disc)は、レーザを用いてデータを光学的に再生する。上記の組合せも、非一時的コンピュータ可読媒体または非一時的プロセッサ可読媒体の範囲に含まれる。さらに、方法またはアルゴリズムの動作は、コンピュータプログラム製品に組み込まれ得る、非一時的プロセッサ可読媒体/または非一時的コンピュータ可読媒体上のコードおよび/または命令の1つまたは任意の組合せまたはセットとして存在することができる。
【００５２】
開示されている態様の前述の説明は、当業者が本発明を作成または使用することを可能にするために提供されている。これらの態様に対する様々な修正は、当業者には容易に明らかであり、本明細書で定義された一般的な定義は、本発明の要旨または範囲から逸脱することなく、他の態様に適用され得る。したがって、本発明は、本明細書に示されている態様に限定されることを意図しておらず、以下の特許請求の範囲、ならびに、本明細書で開示されている原理および新規な特徴と一致する最も広い範囲を与えられるべきである。
【符号の説明】
【００５３】
10  マルチコアデバイス
12  表示装置
14  ワイヤレス接続
16  マルチメディアプロセス出力
18  マルチメディアプロセス出力
20  ディスプレイ
300  マルチコアIC
302  プロセッサコア
304  プロセッサコア情報
306  作業負荷アナライザ
308  リアルタイムマルチコア電力モデル
310  パフォーマンス/ワット最適化エンジン
312  マルチコアマネージャ
314  システム電力割当量マネージャ
316  信号
500  パフォーマンスマップ
700  シェーダプロセッサ(SP)
702  テクスチャパイプ(TP)
800  マルチコアデバイス
802  プロセッサ
804  タッチスクリーンコントローラ
806  内部メモリ
808  無線信号トランシーバ
810  アンテナ
812  タッチスクリーンパネル
814  スピーカ
816  セルラーネットワークワイヤレスモデムチップ
818  周辺デバイス接続インターフェース
820  ハウジング
822  電源
【要約】
様々な態様は、マルチコア集積回路の複数のプロセッサコアのインテリジェントマルチコア制御のためのデバイスおよび方法を提供する。態様は、所与の作業負荷について最低レベルの消費電力または所与の電力割当量について最高パフォーマンスを達成するために、プロセッサコアの最適な組を識別し、アクティブ化することができる。プロセッサコアの最適な組は、アクティブなプロセッサコアの数、または特定のアクティブなプロセッサコアの指定でもよい。プロセッサコアの温度読取り値がしきい値未満であるとき、所与の作業負荷について最も低い消費電力を提供するように、1組のプロセッサコアが選択され得る。プロセッサコアの温度読取り値がしきい値を上回るとき、所与の電力割当量について最高パフォーマンスを提供するように、1組のプロセッサコアが選択され得る。【図１Ａ】
0006005895.tif 000002
【図１Ｂ】
0006005895.tif 000003
【図２Ａ】
0006005895.tif 000004
【図２Ｂ】
0006005895.tif 000005
【図３】
0006005895.tif 000006
【図４】
0006005895.tif 000007
【図５Ａ】
0006005895.tif 000008
【図５Ｂ】
0006005895.tif 000009
【図６】
0006005895.tif 000010
【図７】
0006005895.tif 000011
【図８】
0006005895.tif 000012