(57)【要約】  態様は、プロセッサデバイス電力消費を管理するシステムおよび方法を含む。プロセッサは、複数の処理コアを含むプロセッサ内で実行するようにスケジュールされた複数のスレッドの各々に関するスレッド実行基準を決定することができる。プロセッサは、スレッド実行基準がしきい値を満たすスレッドを選択された1つまたは複数の処理コアに割り振ることができる。プロセッサは、電力消費を低減するために、選択された1つまたは複数の処理コアの周波数を低減することができる。
2017526996.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサデバイス電力消費を管理する方法であって、
複数の処理コアを含むプロセッサ内で実行するようにスケジュールされた複数のスレッドの各々に関するスレッド実行基準を決定するステップと、
前記複数のスレッドのうち、スレッド実行基準が第1のしきい値を満たすスレッドを前記複数の処理コアのうち第1の処理コアに割り振るステップと、
前記第1の処理コアの電力消費を低減するために、前記第1の処理コアの周波数を低減するステップと
を含む、方法。
【請求項２】
前記複数のスレッドのうち、スレッド実行基準が第1のしきい値を満たすスレッドを前記複数の処理コアのうち第1の処理コアに割り振るステップが、
前記複数のスレッドのうち、スレッド実行基準が前記第1のしきい値を満たすスレッドを第1のグループに関連付けるステップと、
スレッドの前記第1のグループを前記第1の処理コアに割り振るステップと
を含む、請求項1に記載の方法。
【請求項３】
前記複数のスレッドのうち、スレッド実行基準が前記第1のしきい値を満たさないスレッドを前記複数の処理コアのうち第2の処理コアに割り振るステップをさらに含む、請求項1に記載の方法。
【請求項４】
前記複数のスレッドのうち、スレッド実行基準が前記第1のしきい値を満たさないスレッドの処理率を増大するために、前記第2の処理コアの周波数を増大するステップをさらに含む、請求項3に記載の方法。
【請求項５】
スレッド実行基準が前記第1のしきい値を満たさないスレッドを前記複数の処理コアのうち第2の処理コアに割り振るステップが、
前記複数のスレッドのうち、スレッド実行基準が前記第1のしきい値を満たさないスレッドを第2のグループに関連付けるステップと、
前記第2のグループを前記第2の処理コアに割り振るステップと
を含む、請求項3に記載の方法。
【請求項６】
スレッド実行基準が第2のしきい値を満たすが、前記第1のしきい値を満たさないスレッドを前記複数の処理コアのうち第3の処理コアに割り振るステップと、
前記第3の処理コアの周波数を前記第1の処理コアの前記周波数と前記第2の処理コアの前記周波数との間の周波数に調整するステップと
をさらに含む、請求項4に記載の方法。
【請求項７】
前記スレッド実行基準がキャッシュミス率であり、
前記第1のしきい値がキャッシュミス率のしきい値である
請求項1に記載の方法。
【請求項８】
前記キャッシュミス率が、キャッシュ内のデータの読取りまたは書込みの失敗した試みの数、前記キャッシュ内のデータの読取りまたは書込みの失敗した試みに基づくメインメモリのアクセス数、および前記キャッシュ内のデータの読取りまたは書込みの失敗した試みに基づく、プロセッサの待ち状態の数のうちに少なくとも1つを含む、請求項7に記載の方法。
【請求項９】
前記第1の処理コアの周波数を低減するステップが、
前記第1の処理コアに割り振られた前記スレッドの前記キャッシュミス率に基づいて、前記第1の処理コアに関する特性キャッシュミス率を決定するステップと、
前記決定された特性キャッシュミス率に基づいて、前記第1の処理コアの前記周波数を低減するステップと
をさらに含む、請求項7に記載の方法。
【請求項１０】
前記特性キャッシュミス率が、前記第1の処理コアに割り振られた前記スレッドの平均キャッシュミス率、前記第1の処理コアに割り振られた前記スレッドの算術平均キャッシュミス率、前記第1の処理コアに割り振られた前記スレッドの前記算術平均キャッシュミス率からの標準偏差、および前記第1の処理コアに割り振られた前記スレッドの総キャッシュミス率のうちの1つを含む、請求項9に記載の方法。
【請求項１１】
前記スレッド実行基準が同期動作率であり、
前記第1のしきい値が同期動作率のしきい値である
請求項1に記載の方法。
【請求項１２】
前記同期動作率が、スピンロックの数、要求された共有リソースを待つ時間期間、ロック命令の数、および同期命令実行率のうちの少なくとも1つを含む、請求項11に記載の方法。
【請求項１３】
前記第1の処理コアの周波数を低減するステップが、
前記第1の処理コアに割り振られた前記スレッドの前記同期動作率に基づいて、前記第1の処理コアに関する特性同期動作率を決定するステップと、
前記決定された特性同期動作率に基づいて、前記第1の処理コアの前記周波数を低減するステップと
をさらに含む、請求項11に記載の方法。
【請求項１４】
前記スレッド実行基準が命令タイプの比率であり、
前記第1のしきい値が命令タイプの比率のしきい値である
請求項1に記載の方法。
【請求項１５】
前記命令タイプの比率が、浮動小数点命令の比率、ベクトル命令の比率、およびメモリ命令の比率のうちの少なくとも1つを含む、請求項14に記載の方法。
【請求項１６】
前記第1の処理コアの周波数を低減するステップが、
前記第1の処理コアに割り振られた前記スレッドの前記命令タイプの比率に基づいて、前記第1の処理コアに関する命令タイプの特性比率を決定するステップと、
前記決定された命令タイプの特性比率に基づいて、前記第1の処理コアの前記周波数を低減するステップと
をさらに含む、請求項14に記載の方法。
【請求項１７】
複数の処理コアを含むプロセッサ内で実行するようにスケジュールされた複数のスレッドの各々に関するスレッド実行基準を決定するための手段と、
前記複数のスレッドのうち、スレッド実行基準が第1のしきい値を満たすスレッドを前記複数の処理コアのうち第1の処理コアに割り振るための手段と、
前記第1の処理コアの電力消費を低減するために、前記第1の処理コアの周波数を低減するための手段と
を含むコンピューティングデバイス。
【請求項１８】
前記複数のスレッドのうち、スレッド実行基準が第1のしきい値を満たすスレッドを前記複数の処理コアのうち第1の処理コアに割り振るための手段が、
前記複数のスレッドのうち、スレッド実行基準が前記第1のしきい値を満たすスレッドを第1のグループに関連付けるための手段と、
スレッドの前記第1のグループを前記第1の処理コアに割り振るための手段と
を含む、請求項17に記載のコンピューティングデバイス。
【請求項１９】
前記複数のスレッドのうち、スレッド実行基準が前記第1のしきい値を満たさないスレッドを前記複数の処理コアのうち第2の処理コアに割り振るための手段をさらに含む、請求項17に記載のコンピューティングデバイス。
【請求項２０】
前記複数のスレッドのうち、スレッド実行基準が前記第1のしきい値を満たさないスレッドの処理率を増大するために、前記第2の処理コアの周波数を増大するための手段をさらに含む、請求項19に記載のコンピューティングデバイス。
【請求項２１】
スレッド実行基準が前記第1のしきい値を満たさないスレッドを前記複数の処理コアのうち第2の処理コアに割り振るための手段が、
前記複数のスレッドのうち、スレッド実行基準が前記第1のしきい値を満たさないスレッドを第2のグループに関連付けるための手段と、
前記第2のグループを前記第2の処理コアに割り振るための手段と
を含む、請求項19に記載のコンピューティングデバイス。
【請求項２２】
スレッド実行基準が第2のしきい値を満たすが、前記第1のしきい値を満たさないスレッドを前記複数の処理コアのうち第3の処理コアに割り振るための手段と、
前記第3の処理コアの周波数を前記第1の処理コアの前記周波数と前記第2の処理コアの前記周波数との間の周波数に調整するための手段と
をさらに含む、請求項20に記載のコンピューティングデバイス。
【請求項２３】
前記スレッド実行基準がキャッシュミス率であり、
前記第1のしきい値がキャッシュミス率のしきい値である
請求項17に記載のコンピューティングデバイス。
【請求項２４】
前記キャッシュミス率が、キャッシュ内のデータの読取りまたは書込みの失敗した試みの数、前記キャッシュ内のデータの読取りまたは書込みの失敗した試みに基づくメインメモリのアクセス数、および前記キャッシュ内のデータの読取りまたは書込みの失敗した試みに基づく、プロセッサの待ち状態の数のうちに少なくとも1つを含む、請求項23に記載のコンピューティングデバイス。
【請求項２５】
前記第1の処理コアの周波数を低減するための手段が、
前記第1の処理コアに割り振られた前記スレッドの前記キャッシュミス率に基づいて、前記第1の処理コアに関する特性キャッシュミス率を決定するための手段と、
前記決定された特性キャッシュミス率に基づいて、前記第1の処理コアの前記周波数を低減するための手段と
をさらに含む、請求項23に記載のコンピューティングデバイス。
【請求項２６】
前記特性キャッシュミス率が、前記第1の処理コアに割り振られた前記スレッドの平均キャッシュミス率、前記第1の処理コアに割り振られた前記スレッドの算術平均キャッシュミス率、前記第1の処理コアに割り振られた前記スレッドの前記算術平均キャッシュミス率からの標準偏差、および前記第1の処理コアに割り振られた前記スレッドの総キャッシュミス率のうちの1つを含む、請求項25に記載のコンピューティングデバイス。
【請求項２７】
前記スレッド実行基準が同期動作率であり、
前記第1のしきい値が同期動作率のしきい値である
請求項17に記載のコンピューティングデバイス。
【請求項２８】
前記同期動作率が、スピンロックの数、要求された共有リソースを待つ時間期間、ロック命令の数、および同期命令実行率のうちの少なくとも1つを含む、請求項27に記載のコンピューティングデバイス。
【請求項２９】
前記第1の処理コアの周波数を低減するための手段が、
前記第1の処理コアに割り振られた前記スレッドの前記同期動作率に基づいて、前記第1の処理コアに関する特性同期動作率を決定するための手段と、
前記決定された特性同期動作率に基づいて、前記第1の処理コアの前記周波数を低減するための手段と
をさらに含む、請求項27に記載のコンピューティングデバイス。
【請求項３０】
前記スレッド実行基準が命令タイプの比率であり、
前記第1のしきい値が命令タイプの比率のしきい値である
請求項17に記載のコンピューティングデバイス。
【請求項３１】
前記命令タイプの比率が、浮動小数点命令の比率、ベクトル命令の比率、およびメモリ命令の比率のうちの少なくとも1つを含む、請求項30に記載のコンピューティングデバイス。
【請求項３２】
前記第1の処理コアの周波数を低減するための手段が、
前記第1の処理コアに割り振られた前記スレッドの前記命令タイプの比率に基づいて、前記第1の処理コアに関する命令タイプの特性比率を決定するための手段と、
前記決定された命令タイプの特性比率に基づいて、前記第1の処理コアの前記周波数を低減するための手段と
をさらに含む、請求項30に記載のコンピューティングデバイス。
【請求項３３】
動作を実行するようにプロセッサ実行可能命令で構成されたプロセッサを備えたコンピューティングデバイスであって、前記動作が、
複数の処理コアを含むプロセッサ内で実行するようにスケジュールされた複数のスレッドの各々に関するスレッド実行基準を決定することと、
前記複数のスレッドのうち、スレッド実行基準が第1のしきい値を満たすスレッドを前記複数の処理コアのうち第1の処理コアに割り振ることと、
前記第1の処理コアの電力消費を低減するために、前記第1の処理コアの周波数を低減することと
を含む、コンピューティングデバイス。
【請求項３４】
前記プロセッサが、前記複数のスレッドのうち、スレッド実行基準が第1のしきい値を満たすスレッドを前記複数の処理コアのうち第1の処理コアに割り振ることが、
前記複数のスレッドのうち、スレッド実行基準が前記第1のしきい値を満たすスレッドを第1のグループに関連付けることと、
スレッドの前記第1のグループを前記第1の処理コアに割り振ることと
を含むように動作を実行するようにプロセッサ実行可能命令で構成される、請求項33に記載のコンピューティングデバイス。
【請求項３５】
前記プロセッサが、前記複数のスレッドのうち、スレッド実行基準が前記第1のしきい値を満たさないスレッドを前記複数の処理コアのうち第2の処理コアに割り振ることをさらに含む動作を実行するようにプロセッサ実行可能命令で構成される、請求項33に記載のコンピューティングデバイス。
【請求項３６】
前記複数のスレッドのうち、スレッド実行基準が前記第1のしきい値を満たさないスレッドの処理率を増大するために、前記第2の処理コアの周波数を増大することをさらに含む、請求項35に記載のコンピューティングデバイス。
【請求項３７】
スレッド実行基準が前記第1のしきい値を満たさないスレッドを前記複数の処理コアのうち第2の処理コアに割り振ることが、
前記複数のスレッドのうち、スレッド実行基準が前記第1のしきい値を満たさないスレッドを第2のグループに関連付けることと、
前記第2のグループを前記第2の処理コアに割り振ることと
を含む、請求項35に記載のコンピューティングデバイス。
【請求項３８】
前記プロセッサが、
スレッド実行基準が第2のしきい値を満たすが、前記第1のしきい値を満たさないスレッドを前記複数の処理コアのうち第3の処理コアに割り振ることと、
前記第3の処理コアの周波数を前記第1の処理コアの前記周波数と前記第2の処理コアの前記周波数との間の周波数に調整することと
をさらに含む動作を実行するようにプロセッサ実行可能命令で構成される、請求項36に記載のコンピューティングデバイス。
【請求項３９】
前記プロセッサが、
前記スレッド実行基準がキャッシュミス率であり、
前記第1のしきい値がキャッシュミス率のしきい値である
ように動作を実行するようにプロセッサ実行可能命令で構成される、請求項33に記載のコンピューティングデバイス。
【請求項４０】
前記キャッシュミス率が、キャッシュ内のデータの読取りまたは書込みの失敗した試みの数、前記キャッシュ内のデータの読取りまたは書込みの失敗した試みに基づくメインメモリのアクセス数、および前記キャッシュ内のデータの読取りまたは書込みの失敗した試みに基づく、プロセッサの待ち状態の数のうちに少なくとも1つを含む、請求項39に記載のコンピューティングデバイス。
【請求項４１】
前記プロセッサが、前記第1の処理コアの周波数を低減することが、
前記第1の処理コアに割り振られた前記スレッドの前記キャッシュミス率に基づいて、前記第1の処理コアに関する特性キャッシュミス率を決定することと、
前記決定された特性キャッシュミス率に基づいて、前記第1の処理コアの前記周波数を低減することと
をさらに含むように動作を実行するようにプロセッサ実行可能命令で構成される、請求項39に記載のコンピューティングデバイス。
【請求項４２】
前記特性キャッシュミス率が、前記第1の処理コアに割り振られた前記スレッドの平均キャッシュミス率、前記第1の処理コアに割り振られた前記スレッドの算術平均キャッシュミス率、前記第1の処理コアに割り振られた前記スレッドの前記算術平均キャッシュミス率からの標準偏差、および前記第1の処理コアに割り振られた前記スレッドの総キャッシュミス率のうちの1つを含む、請求項41に記載のコンピューティングデバイス。
【請求項４３】
前記プロセッサが、
前記スレッド実行基準が同期動作率であり、
前記第1のしきい値が同期動作率のしきい値である
ように動作を実行するようにプロセッサ実行可能命令で構成される、請求項33に記載のコンピューティングデバイス。
【請求項４４】
前記同期動作率が、スピンロックの数、要求された共有リソースを待つ時間期間、ロック命令の数、および同期命令実行率のうちの少なくとも1つを含む、請求項43に記載のコンピューティングデバイス。
【請求項４５】
前記プロセッサが、前記第1の処理コアの周波数を低減することが、
前記第1の処理コアに割り振られた前記スレッドの前記同期動作率に基づいて、前記第1の処理コアに関する特性同期動作率を決定することと、
前記決定された特性同期動作率に基づいて、前記第1の処理コアの前記周波数を低減することと
をさらに含むように動作を実行するようにプロセッサ実行可能命令で構成される、請求項43に記載のコンピューティングデバイス。
【請求項４６】
前記プロセッサが、
前記スレッド実行基準が命令タイプの比率であり、
前記第1のしきい値が命令タイプの比率のしきい値である
ように動作を実行するようにプロセッサ実行可能命令で構成される、請求項33に記載のコンピューティングデバイス。
【請求項４７】
前記命令タイプの比率が、浮動小数点命令の比率、ベクトル命令の比率、およびメモリ命令の比率のうちの少なくとも1つを含む、請求項46に記載のコンピューティングデバイス。
【請求項４８】
前記プロセッサが、前記第1の処理コアの周波数を低減することが、
前記第1の処理コアに割り振られた前記スレッドの前記命令タイプの比率に基づいて、前記第1の処理コアに関する命令タイプの特性比率を決定することと、
前記決定された命令タイプの特性比率に基づいて、前記第1の処理コアの前記周波数を低減することと
をさらに含むように動作を実行するようにプロセッサ実行可能命令で構成される、請求項46に記載のコンピューティングデバイス。
【請求項４９】
プロセッサデバイス電力消費を管理するための動作をプロセッサに実行させるように構成されたプロセッサ実行可能ソフトウェア命令を記憶した非一時的コンピュータ可読記憶媒体であって、前記動作が、
複数の処理コアを含むプロセッサ内で実行するようにスケジュールされた複数のスレッドの各々に関するスレッド実行基準を決定することと、
前記複数のスレッドのうち、スレッド実行基準が第1のしきい値を満たすスレッドを前記複数の処理コアのうち第1の処理コアに割り振ることと、
前記第1の処理コアの電力消費を低減するために、前記第1の処理コアの周波数を低減することと
を含む、非一時的プロセッサ可読記憶媒体。
【請求項５０】
前記記憶されたプロセッサ実行可能ソフトウェア命令が、前記複数のスレッドのうち、スレッド実行基準が第1のしきい値を満たすスレッドを前記複数の処理コアのうち第1の処理コアに割り振ることが、
前記複数のスレッドのうち、スレッド実行基準が前記第1のしきい値を満たすスレッドを第1のグループに関連付けることと、
スレッドの前記第1のグループを前記第1の処理コアに割り振ることと
を含むように動作をプロセッサに実行させるように構成される、請求項49に記載の非一時的プロセッサ可読記憶媒体。
【請求項５１】
前記記憶されたプロセッサ実行可能ソフトウェア命令が、前記複数のスレッドのうち、スレッド実行基準が前記第1のしきい値を満たさないスレッドを前記複数の処理コアのうち第2の処理コアに割り振ることをさらに含む動作をプロセッサに実行させるように構成される、請求項49に記載の非一時的プロセッサ可読記憶媒体。
【請求項５２】
前記複数のスレッドのうち、スレッド実行基準が前記第1のしきい値を満たさないスレッドの処理率を増大するために、前記第2の処理コアの周波数を増大することをさらに含む、請求項51に記載の非一時的プロセッサ可読記憶媒体。
【請求項５３】
スレッド実行基準が前記第1のしきい値を満たさないスレッドを前記複数の処理コアのうち第2の処理コアに割り振ることが、
前記複数のスレッドのうち、スレッド実行基準が前記第1のしきい値を満たさないスレッドを第2のグループに関連付けることと、
前記第2のグループを前記第2の処理コアに割り振ることと
を含む、請求項51に記載の非一時的プロセッサ可読記憶媒体。
【請求項５４】
前記記憶されたプロセッサ実行可能命令が、
スレッド実行基準が第2のしきい値を満たすが、前記第1のしきい値を満たさないスレッドを前記複数の処理コアのうち第3の処理コアに割り振ることと
前記第3の処理コアの周波数を前記第1の処理コアの前記周波数と前記第2の処理コアの前記周波数との間の周波数に調整することと
をさらに含む動作をプロセッサに実行させるように構成される、請求項52に記載の非一時的プロセッサ可読記憶媒体。
【請求項５５】
前記記憶されたプロセッサ実行可能ソフトウェア命令が、
前記スレッド実行基準がキャッシュミス率であり、
前記第1のしきい値がキャッシュミス率のしきい値である
ように動作をプロセッサに実行させるように構成される、請求項49に記載の非一時的プロセッサ可読記憶媒体。
【請求項５６】
前記キャッシュミス率が、キャッシュ内のデータの読取りまたは書込みの失敗した試みの数、前記キャッシュ内のデータの読取りまたは書込みの失敗した試みに基づくメインメモリのアクセス数、および前記キャッシュ内のデータの読取りまたは書込みの失敗した試みに基づく、プロセッサの待ち状態の数のうちに少なくとも1つを含む、請求項55に記載の非一時的プロセッサ可読記憶媒体。
【請求項５７】
前記記憶されたプロセッサ実行可能ソフトウェア命令が、前記第1の処理コアの周波数を低減することが、
前記第1の処理コアに割り振られた前記スレッドの前記キャッシュミス率に基づいて、前記第1の処理コアに関する特性キャッシュミス率を決定することと、
前記決定された特性キャッシュミス率に基づいて、前記第1の処理コアの前記周波数を低減することと
をさらに含むように動作をプロセッサに実行させるように構成される、請求項55に記載の非一時的プロセッサ可読記憶媒体。
【請求項５８】
前記特性キャッシュミス率が、前記第1の処理コアに割り振られた前記スレッドの平均キャッシュミス率、前記第1の処理コアに割り振られた前記スレッドの算術平均キャッシュミス率、前記第1の処理コアに割り振られた前記スレッドの前記算術平均キャッシュミス率からの標準偏差、および前記第1の処理コアに割り振られた前記スレッドの総キャッシュミス率のうちの1つを含む、請求項57に記載の非一時的プロセッサ可読記憶媒体。
【請求項５９】
前記記憶されたプロセッサ実行可能ソフトウェア命令が、
前記スレッド実行基準が同期動作率であり、
前記第1のしきい値が同期動作率のしきい値である
ように動作をプロセッサに実行させるように構成される、請求項49に記載の非一時的プロセッサ可読記憶媒体。
【請求項６０】
前記記憶されたプロセッサ実行可能ソフトウェア命令が、同期動作率が、スピンロックの数、要求された共有リソースを待つ時間期間、ロック命令の数、および同期命令実行率のうちの少なくとも1つを含むように動作をプロセッサに実行させるように構成される、請求項59に記載の非一時的プロセッサ可読記憶媒体。
【請求項６１】
前記記憶されたプロセッサ実行可能ソフトウェア命令が、前記第1の処理コアの周波数を低減することが、
前記第1の処理コアに割り振られた前記スレッドの前記同期動作率に基づいて、前記第1の処理コアに関する特性同期動作率を決定することと、
前記決定された特性同期動作率に基づいて、前記第1の処理コアの前記周波数を低減することと
をさらに含むように動作をプロセッサに実行させるように構成される、請求項59に記載の非一時的プロセッサ可読記憶媒体。
【請求項６２】
前記記憶されたプロセッサ実行可能ソフトウェア命令が、
前記スレッド実行基準が命令タイプの比率であり、
前記第1のしきい値が命令タイプの比率のしきい値である
ように動作をプロセッサに実行させるように構成される、請求項49に記載の非一時的プロセッサ可読記憶媒体。
【請求項６３】
前記命令タイプの比率が、浮動小数点命令の比率、ベクトル命令の比率、およびメモリ命令の比率のうちの少なくとも1つを含む、請求項62に記載の非一時的プロセッサ可読記憶媒体。
【請求項６４】
前記第1の処理コアの周波数を低減することが、
前記第1の処理コアに割り振られた前記スレッドの前記命令タイプの比率に基づいて、前記第1の処理コアに関する命令タイプの特性比率を決定することと、
前記決定された命令タイプの特性比率に基づいて、前記第1の処理コアの前記周波数を低減することと
をさらに含む、請求項62に記載の非一時的プロセッサ可読記憶媒体。
【発明の詳細な説明】
【背景技術】
【０００１】
ワイヤレス通信技術およびモバイル電子デバイス(たとえば、セルラーフォン、タブレット、ラップトップなど)は人気および使用率が上昇している。増大する消費者の要求についていくために、モバイルデバイスは、より機能が豊富になり、今や一般的に、複数の処理デバイス、システムオンチップ(SOC)、およびモバイルデバイスのユーザが自分のモバイルデバイスにおいて複雑で処理負荷の大きいソフトウェアアプリケーション(たとえば、ビデオおよびオーディオストリーミングならびに/または処理アプリケーション、ネットワークゲーミングアプリケーションなど)を実行することを可能にする他のリソースを含む。これらの改善および他の改善により、スマートフォンおよびタブレットコンピュータは人気が高まり、多くのユーザが選択するプラットフォームとして、ラップトップおよびデスクトップマシンに置き換わっている。しかしながら、モバイルデバイスは、比較的限られた電源を含むことが多い。モバイルデバイス内に複数の処理デバイスを提供することは、モバイルデバイスの電力蓄積限界を悪化させる要因となる。
【発明の概要】
【課題を解決するための手段】
【０００２】
様々な態様は、複数の処理コアを含むプロセッサ内で実行するようにスケジュールされた複数のスレッドの各々に関するスレッド実行基準を決定するステップと、複数のスレッドのうち、スレッド実行基準が第1のしきい値を満たすスレッドを複数の処理コアのうち第1の処理コアに割り振るステップと、選択された処理コアの電力消費を低減するために、第1の処理コアの周波数を低減するステップとを含み得る、プロセッサデバイス電力消費を管理する方法を含む。一態様では、スレッド実行基準が第1のしきい値を満たすスレッドを第1の処理コアに割り振るステップは、スレッド実行基準が第1のしきい値を満たすスレッドを第1のグループに関連付けるステップと、スレッドの第1のグループを第1の処理コアに割り振るステップとを含み得る。
【０００３】
一態様では、本方法は、複数のスレッドのうち、スレッド実行基準が第1のしきい値を満たさないスレッドを複数の処理コアのうち第2の処理コアに割り振るステップを含み得る。さらなる態様では、本方法は、複数のスレッドのうち、スレッド実行基準が第1のしきい値を満たさないスレッドの処理率を増大するために、第2の処理コアの周波数を増大するステップを含み得る。さらなる態様では、スレッド実行基準が第1のしきい値を満たさないスレッドを複数の処理コアのうち第2の処理コアに割り振るステップは、複数のスレッドのうち、スレッド実行基準が第1のしきい値を満たさないスレッドを第2のグループに関連付けるステップと、第2のグループを第2の処理コアに割り振るステップとを含み得る。
【０００４】
さらなる態様では、本方法は、スレッド実行基準が第2のしきい値を満たすが、第1のしきい値を満たさないスレッドを複数の処理コアのうち第3の処理コアに割り振るステップと、第3の処理コアの周波数を第1の処理コアの周波数と第2の処理コアの周波数との間の周波数に調整するステップとを含み得る。
【０００５】
さらなる態様では、スレッド実行基準はキャッシュミス率を含んでよく、第1のしきい値はキャッシュミス率のしきい値を含んでよい。いくつかの態様では、キャッシュミス率は、キャッシュ内のデータの読取りまたは書込みの失敗した試みの数、キャッシュ内のデータの読取りまたは書込みの失敗した試みに基づくメインメモリのアクセス数、およびキャッシュ内のデータの読取りまたは書込みの失敗した試みに基づく、プロセッサの待ち状態の数のうちに少なくとも1つを含み得る。
【０００６】
さらなる態様では、第1の処理コアの周波数を低減するステップは、第1の処理コアに割り振られたスレッドのキャッシュミス率に基づいて、第1の処理コアに関する特性キャッシュミス率を決定するステップと、決定された特性キャッシュ率に基づいて、選択された処理コアの周波数を低減するステップとをさらに含み得る。さらなる態様では、特性キャッシュミス率は、選択された処理コアに割り振られたスレッドの平均キャッシュミス率(average cache miss rate)、選択された処理コアに割り振られたスレッドの算術平均キャッシュミス率(mean cache miss rate)、選択された処理コアに割り振られたスレッドの算術平均キャッシュミス率からの標準偏差、および選択された処理コアに割り振られたスレッドの総キャッシュミス率のうちの1つを含み得る。
【０００７】
さらなる態様では、スレッド実行基準は同期動作率を含んでよく、第1のしきい値は同期動作値のしきい値を含んでよい。いくつかの態様では、同期動作率は、スピンロックの数、要求された共有リソースを待つ時間期間、ロック命令の数、および同期命令実行率のうちの少なくとも1つを含み得る。
【０００８】
一態様では、第1の処理コアの周波数を低減するステップは、第1の処理コアに割り振られたスレッドの同期動作率に基づいて、第1の処理コアに関する特性同期動作率を決定するステップと、決定された特性同期動作率に基づいて、第1の処理コアの周波数を低減するステップとをさらに含み得る。
【０００９】
さらなる態様では、スレッド実行基準は命令タイプの比率を含んでよく、第1のしきい値は命令タイプの比率のしきい値を含んでよい。さらなる態様では、命令タイプの比率は、浮動小数点命令の比率、ベクトル命令の比率、およびメモリ命令の比率のうちの少なくとも1つを含み得る。さらなる態様では、第1の処理コアの周波数を低減するステップは、第1の処理コアに割り振られたスレッドの命令タイプの比率に基づいて、第1の処理コアに関する命令タイプの特性比率を決定するステップと、決定された命令タイプの特性比率に基づいて、第1の処理コアの周波数を低減するステップとを含み得る。
【００１０】
さらなる態様は、上で説明した態様方法の動作を実行するようにプロセッサ実行可能命令で構成されたプロセッサを含むコンピューティングデバイスを含む。さらなる態様は、上で説明した態様方法の動作をプロセッサに実行させるように構成されたプロセッサ実行可能ソフトウェア命令を記憶している非一時的プロセッサ可読記憶媒体を含む。さらなる態様は、上で説明した態様方法の動作の機能を実行するための手段を含むコンピューティングデバイスを含む。
【００１１】
本明細書に組み込まれ、本明細書の一部を構成する添付の図面は、本発明の例示的な態様を示す。上記の概略的な説明および下記の発明を実施するための形態とともに、図面は、開示する態様を限定するのではなく、本発明の特徴を説明するのに役立つ。
【図面の簡単な説明】
【００１２】
【図１】様々な態様を実装するコンピューティングデバイスで使用され得る例示的なシステムオンチップ(SOC)アーキテクチャを示す構成要素ブロック図である。
【図２】様々な態様を実装するために使用され得る例示的なマルチコアプロセッサアーキテクチャを示す機能ブロック図である。
【図３】プロセッサデバイス電力消費を管理する態様方法を示すプロセスフロー図である。
【図４】プロセッサデバイス電力消費を管理する別の態様方法を示すプロセスフロー図である。
【図５】プロセッサデバイス電力消費を管理する別の態様方法を示すプロセスフロー図である。
【図６】プロセッサデバイス電力消費を管理する別の態様方法を示すプロセスフロー図である。
【図７】様々な態様とともに使用するのに適した例示的なモバイルデバイスの構成要素ブロック図である。
【図８】様々な態様とともに使用するのに適した例示的なサーバの構成要素ブロック図である。
【図９】様々な態様を実装するのに適したラップトップコンピュータの構成要素ブロック図である。
【発明を実施するための形態】
【００１３】
様々な態様は、添付図面を参照して詳細に説明される。可能な限り、同じ参照番号は、同じまたは同様の部分を指すために図面全体を通して使用されることになる。特定の例および実装形態になされる参照は、例示の目的のためであり、特許請求の範囲を限定することを意図していない。
【００１４】
「例示的」という単語は、本明細書では、「例、事例、または例示として機能する」ことを意味するために使用される。本明細書において「例示的」として説明されるいかなる実装形態も、必ずしも他の実施態様よりも好ましいか、または有利であると解釈されるべきではない。
【００１５】
「モバイルデバイス」および「コンピューティングデバイス」という用語は、セルラー電話、スマートフォン、パーソナルまたはモバイルマルチメディアプレーヤー、携帯情報端末(PDA)、ラップトップコンピュータ、タブレットコンピュータ、スマートブック、パームトップコンピュータ、ワイヤレス電子メール受信機、マルチメディアインターネット対応セルラー電話、ワイヤレスゲームコントローラ、ならびに、プログラム可能プロセッサおよびメモリを含む同様の電子デバイスのうちの、任意の1つまたはすべてを指すように、本明細書では交換可能に使用される。様々な態様は、比較的限られた処理電力および/または電力蓄積容量を有し得るセルラー電話および他の携帯コンピューティングプラットフォームなどのモバイルデバイスにおいて特に有用であるが、これらの態様は、概して、スレッド、プロセス、または命令の他のシーケンスを処理デバイスまたは処理コアに割り振る任意のコンピューティングデバイスにおいても有用である。
【００１６】
「システムオンチップ」(SOC)という用語は、単一の基板上に統合された複数のリソースおよび/またはプロセッサを含む単一の集積回路(IC)チップを指すように本明細書で使用される。単一のSOCは、デジタル、アナログ、混合信号、および無線周波数機能のための回路を含み得る。単一のSOCは、任意の数の汎用および/または専用のプロセッサ(デジタル信号プロセッサ、モデムプロセッサ、ビデオプロセッサなど)、メモリブロック(たとえば、ROM、RAM、Flashなど)、およびリソース(たとえば、タイマー、電圧調整器、発振器など)も含み得る。SOCは、統合されたリソースおよびプロセッサを制御するための、ならびに周辺デバイスを制御するためのソフトウェアも含み得る。
【００１７】
「マルチコアプロセッサ」という用語は、プログラム命令を読み取り、実行するように構成された2つ以上の独立した処理デバイスまたは処理コア(たとえば、CPUコア)を含む単一の集積回路(IC)チップまたはチップパッケージを指すように本明細書で使用される。SOCは、複数のマルチコアプロセッサを含み得、SOCにおける各プロセッサは、コアまたは処理コアと呼ばれ得る。「マルチプロセッサ」という用語は、プログラム命令を読み取り、実行するように構成された2つ以上の処理ユニットを含むシステムまたはデバイスを指すように本明細書で使用される。「スレッド」または「プロセス」という用語は、処理コアに割り振ることができる命令にシーケンスを指すように本明細書で使用される。
【００１８】
本出願で使用する「構成要素」、「モジュール」、「システム」などの用語は、限定はされないが、特定の動作もしくは機能を実行するように構成された、ハードウェア、ファームウェア、ハードウェアとソフトウェアの組合せ、ソフトウェア、または実行中のソフトウェアなどの、コンピュータ関連のエンティティを含むものとする。たとえば、構成要素は、プロセッサ上で動作しているプロセス、プロセッサ、オブジェクト、実行ファイル、実行スレッド、プログラム、および/またはコンピュータであり得るが、それらに限定されない。例として、コンピューティングデバイス上で動作しているアプリケーションとコンピューティングデバイスの両方は、構成要素と呼ばれる場合がある。1つまたは複数の構成要素は、プロセスおよび/または実行スレッドの中に存在する場合があり、1つの構成要素は、1つのプロセッサまたはコアに局在する場合があり、かつ/または2つ以上のプロセッサまたはコアの間に分散する場合がある。加えて、これらの構成要素は、様々な命令および/またはデータ構造が上に記憶された様々な非一時的プロセッサ可読媒体から実行され得る。構成要素は、ローカルおよび/またはリモートプロセス、関数呼出しまたはプロシージャ呼出し、電子信号、データパケット、メモリ読出し/書込み、ならびに他の知られているコンピュータ、プロセッサ、および/または通信方法に関するプロセスによって通信できる。
【００１９】
増大する消費者の要求についていくために、モバイルデバイスは、より機能が豊富になり、今や一般的に、複数の処理デバイス、マルチコアプロセッサ、システムオンチップ(SOC)、およびモバイルデバイスのユーザが自分のモバイルデバイスにおいて複雑で処理負荷の大きいソフトウェアアプリケーション(たとえば、ビデオおよびオーディオストリーミングならびに/または処理アプリケーション、ネットワークゲーミングアプリケーションなど)を実行することを可能にする他のリソースを含む。モバイルデバイスは、比較的限られた電源を含むことが多い。モバイルデバイス内に複数の処理デバイスを提供することは、モバイルデバイスの電力蓄積限界を悪化させる要因となる。
【００２０】
様々な態様は、決定されたスレッド実行基準に基づいて、マルチコアシステム内の複数のコアにわたって(プロセス、スレッドなどの)命令のシーケンスをスケジュールし、各処理コアに割り当てられた命令のシーケンスに基づいて、1つまたは複数の処理コアの適切な周波数を決定することによって、モバイルデバイスの性能および電力消費特性を改善するための方法、システム、およびデバイスを提供する。様々な態様は、ユーザ空間デーモンプロセス、(たとえば、モバイルデバイスの動作システムの)カーネルモジュール、またはオペレーティングシステムスケジューラとして実装され得る。様々な態様では、しきいスレッド実行基準を満たすスレッド実行基準を有する1つまたは複数のスレッドを1つの処理コアに割り振ることができ、モバイルデバイスの性能のしきいレベルを提供すると同時に、処理コアの電力消費および処理効率を改善するために、処理コアの動作周波数を低減することができる。
【００２１】
様々な態様は、2つ以上のアプリケーションが同時に実行されるマルチコアシステム内に特定のアプリケーションを有し得る。同時に実行されるアプリケーションの数が増大すると、処理コアによって実行するための命令のシーケンスの数は劇的に増大し、利用可能な処理コアよりも多い数のスレッドで処理コアに過負荷をかける可能性がある。非キャッシュメモリに対する呼びを必要とすることによって、またはより必要とするスケアプロセッサリソース、もしくは別のプロセスまたはプロセッサによって同時使用中のリソースを含めることによってなど、命令のシーケンスがプロセッサに非効率をもたらすとき、処理コアの付随する遅延(たとえば、待ち時間)はアプリケーション性能に著しい影響を及ぼし得る。
【００２２】
命令のシーケンスを特定のコアに割り振るための基礎としてスレッド実行基準を使用することは、非キャッシュメモリからデータが取得される間のより長い待ち時間、同期動作によって引き起こされる遅延、および/または1つまたは複数のタイプの命令が実行される比率など、より大きい非効率を伴う1つまたは少数のコアプロセスを割り振るための低オーバーヘッド方法を提供する。命令のシーケンスの処理時間は命令のあるシーケンスによってもたらされる処理非効率によって支配される場合があるため、比較的プロセッサリソース消費型の命令のシーケンスを実行する1つまたは複数のプロセッサコアは、処理性能にあまり影響を及ぼさずに、より低い頻度で、したがって、より低い電力で動作し得る。したがって、様々な態様は、処理性能を改善するために、より高い頻度/より高い電力で動作し得る選択された処理コアに命令の処理集中型シーケンスを割り振り、処理性能に影響を及ぼさずに、バッテリー電力を節約するために、より低い頻度/より低い電力で動作し得る1つまたは少数のコアにより多くのリソースおよび/または時間消費型命令シーケンスを割り振るための低オーバーヘッド方法を提供する。
【００２３】
様々な態様は、システムオンチップ(SOC)を含む、多数の単一プロセッサおよびマルチプロセッサのコンピュータシステム上で実装され得る。図1は、様々な態様を実装するコンピューティングデバイス内で使用され得る例示的なシステムオンチップ(SOC)100アーキテクチャを示す。SOC100は、デジタルシグナルプロセッサ(DSP)102、モデムプロセッサ104、グラフィックスプロセッサ106、およびアプリケーションプロセッサ108のような、いくつかの異質のプロセッサを含み得る。SOC100はまた、異質のプロセッサ102、104、106、108のうちの1つまたは複数に接続された1つまたは複数のコプロセッサ110(たとえば、ベクトルコプロセッサ)を含み得る。各プロセッサ102、104、106、108、110は、1つまたは複数のコア(たとえば、アプリケーションプロセッサ108内に示された処理コア108a、108b、108c、および/または108d)を含んでよく、各プロセッサ/コアは、他のプロセッサ/コアとは独立に動作を実行することができる。SOC100は、実行のために1つまたは複数のコアに対して、スレッド、プロセス、またはデータフローなど、命令のシーケンスをスケジュールするように構成されたスケジューラを含み得るオペレーティングシステム(たとえば、FreeBSD、LINUX、OS X、Microsoft Windows 8など)を実行するプロセッサを含み得る。
【００２４】
SOC100はまた、センサーデータ、アナログデジタル変換、ワイヤレスデータ送信を管理し、ウェブブラウザにおいてレンダリングするための符号化されたオーディオ信号およびビデオ信号の処理のような、他の特殊な動作を実行するための、アナログ回路およびカスタム回路114を含み得る。SOC100は、電圧調整器、発振器、位相ロックループ、周辺ブリッジ、データコントローラ、メモリコントローラ、システムコントローラ、アクセスポート、タイマー、およびコンピューティングデバイス上で実行されているプロセッサおよびソフトウェアプログラムをサポートするために使用される他の同様の構成要素のような、システム構成要素およびリソース116をさらに含み得る。
【００２５】
システム構成要素およびリソース116および/またはカスタム回路114は、カメラ、電子ディスプレイ、ワイヤレス通信デバイス、外部メモリチップなどの周辺デバイスとインターフェースするための回路を含み得る。プロセッサ102、104、106、108は、再構成可能な論理ゲートのアレイを含み、かつ/またはバスアーキテクチャ(たとえば、CoreConnect、AMBAなど)を実装し得る、相互接続/バスモジュール124を介して、互いに、ならびに1つまたは複数のメモリ要素112、システム構成要素およびリソース116、およびカスタム回路114と通信することができる。通信は、高性能ネットワークオンチップ(NoC)などの高度な相互接続によって提供され得る。
【００２６】
SOC100は、クロック118および電圧調整器120のような、SOCの外部のリソースと通信するための入力/出力モジュール(図示されず)をさらに含み得る。SOCの外部のリソース(たとえば、クロック118、電圧調整器120)は、内部SOCプロセッサ/コア(たとえば、DSP102、モデムプロセッサ104、グラフィックスプロセッサ106、アプリケーションプロセッサ108など)のうちの2つ以上によって共有され得る。
【００２７】
上で論じたSOC100に加えて、様々な態様が、複数のプロセッサ、マルチコアプロセッサ、またはこれらの任意の組合せを含み得る、多種多様なコンピューティングシステムにおいて実装され得る。
【００２８】
図2は、様々な態様を実装するために使用され得る例示的なマルチコアプロセッサアーキテクチャを示す。マルチコアプロセッサ202は、(たとえば、単一の基板、ダイ、集積チップ上などで)極めて近接した2つ以上の独立した処理コア204、206、230、232を含み得る。処理コア204、206、230、232が近接していることで、メモリは、信号がチップから離れて進まなければならない場合に可能な周波数/クロック速度よりもはるかに高い周波数/クロック速度で動作することが可能になる。処理コア204、206、230、232が近接していることで、オンチップメモリおよびリソース(たとえば、電圧レール)の共有、ならびにコア間のより調整された協調が可能になる。図2は4つの処理コアを示すが、これは限定ではなく、マルチコアプロセッサはより多数のまたはより少数の処理コアを含み得る。
【００２９】
マルチコアプロセッサ202は、レベル1(L1)キャッシュ212、214、238、および240と、レベル2(L2)キャッシュ216、226、および242とを含むマルチレベルキャッシュを含み得る。マルチコアプロセッサ202はまた、バス/相互接続インターフェース218と、メインメモリ220と、入力/出力モジュール222とを含み得る。L2キャッシュ216、226、242は、L1キャッシュ212、214、238、240よりも大きい(かつ、遅い)が、メインメモリユニット220よりも小さい(かつ、はるかに速い)ことがある。各処理コア204、206、230、232は、L1キャッシュ212、214、238、240へのプライベートアクセスを有する処理ユニット208、210、234、236を含み得る。処理コア204、206、230、232は、L2キャッシュ(たとえば、L2キャッシュ242)へのアクセスを共有してよく、または、独立したL2キャッシュ(たとえば、L2キャッシュ216、226)へのアクセスを有してよい。
【００３０】
L1およびL2キャッシュは、処理ユニットによって頻繁にアクセスされるデータを記憶するために使用され得る一方で、メインメモリ220は、処理コア204、206、230、232によってアクセスされる、より大きいファイルおよびデータユニットを記憶するために使用され得る。マルチコアプロセッサ202は、処理コア204、206、230、232がメモリから順番にデータを探し、最初にL1キャッシュに、次いで、L2キャッシュに、次いで情報がキャッシュに記憶されていない場合にメインメモリに問い合わせるように構成され得る。情報がキャッシュにもメインメモリ220にも記憶されていない場合、マルチコアプロセッサ202は、外部メモリおよび/またはハードディスクメモリ224から情報を探すことができる。
【００３１】
処理コア204、206、230、232は、バス/相互接続インターフェース218を介して互いに通信することができる。各処理コア204、206、230、232は、いくつかのリソースに対して排他的制御権を有し、他のリソースを他のコアと共有することができる。
【００３２】
処理コア204、206、230、232は、互いに同等であっても、異質であってもよく、かつ/または様々な専用の機能を実装してよい。したがって、処理コア204、206、230、232は、オペレーティングシステムの観点から対称的である必要はなく(たとえば、異なるオペレーティングシステムを実行できる)、またはハードウェアの観点から対称的である必要もない(たとえば、異なる命令セット/アーキテクチャを実装できる)。
【００３３】
図1および図2を参照して上で論じられたようなマルチプロセッサハードウェア設計は、同じパッケージの内側の、しばしば同じシリコン片上に、異なる能力の複数の処理コアを含み得る。対称な多重処理ハードウェアは、単一のオペレーティングシステムによって制御される単一の共有されたメインメモリに接続された2つ以上の同一のプロセッサを含む。非対称のまたは「緩く結合された」多重処理ハードウェアは、独立したオペレーティングシステムによって各々制御され1つまたは複数の共有されたメモリ/リソースに接続され得る、2つ以上の異質のプロセッサ/コアを含み得る。
【００３４】
図3は、プロセッサデバイス電力消費を管理する態様方法300を示すプロセスフロー図である。ブロック302で、プロセッサは、マルチコアプロセッサの様々な処理コア(たとえば、図2に示した処理コア204、206、230、232)内で実行するようにスケジュールされた複数のスレッドの各々に関するスレッド実行基準を決定することができる。スレッド実行基準は、たとえば、キャッシュミス率、同期動作率、1つまたは複数の命令タイプの実行率、または他のスレッド実行基準を含み得る。
【００３５】
「キャッシュミス」という用語は、データがキャッシュ内にあるときよりも、完了により多くの時間を必要とするシステムメモリ(たとえば、メインメモリ220)からデータにアクセスすることを必要とする、キャッシュメモリからのデータのユニットの読取りまたは書込みの失敗した試みを指す。たとえば、処理コア204の処理ユニット208によって処理されるスレッドは、L1キャッシュ212からのデータまたは命令の取出しを試みることができる。データまたは命令がL1キャッシュ212から利用可能でないとき、それらのデータまたは命令は、L2キャッシュ216など、別のキャッシュから、またはメインメモリ220から取出し可能である。メインメモリアクセスは、特に、キャッシュアクセスよりもかなり遅く、したがって、メインメモリ220からデータまたは命令を取り出すことは、スレッドの処理にレイテンシをもたらす。メインメモリ220からデータまたは命令を取り出す際の遅延により、間に何の追加の処理も実行され得ないメインメモリアクセスが進む間に、処理コアは待ち状態に入ることができる。スレッドが非キャッシュ読取りまたは書込み動作を含む場合、処理コアは待ち状態に頻繁に入り、したがって、コアの処理性能全体を減速させる場合がある。
【００３６】
様々な態様では、各スレッドに関してブロック302でプロセッサによって算出されたキャッシュミス率は、スレッドが実行されているときに生じることになる、キャッシュ内のデータ読取りまたは書込みの失敗した試みの数であってよい。ブロック302で算出され得るキャッシュミス率は、キャッシュ内のデータ読取りまたは書込みの失敗した試みに基づく、スレッドの実行の間に生じることになるメインメモリアクセスの数であってもよい。ブロック302で算出されるキャッシュミス率はさらに、スレッドの非キャッシュメモリ実行に対するデータまたは命令の読取りおよび書込み動作を実行する結果としてプロセッサコアが入ることになる待ち状態の数であってよい。スレッドに関するキャッシュミス率は、単位時間当たりの平均キャッシュミス数および/または単位時間当たりの総キャッシュミス数としてブロック302で算出され得る。キャッシュミス率はさらに、単位時間当たりの算術平均キャッシュミス数および/または単位時間当たりの算術平均数キャッシュミスの標準偏差として、ブロック302で算出され得る。前述の組合せを含めて、他のキャッシュミス算出も可能である。
【００３７】
「同期動作」という用語は、2つ以上のプロセッサが、たとえば、他のプロセッサの処理動作を干渉せずに、または命令のセットを実行するために処理または他のリソースの一時的な非利用可能性によって引き起こされる命令のセットの実行における遅延なしに、データ構造の共通セットに関して、またはアプリケーションコードの共有断片を使用して命令を実行することを可能にするために実行され得る動作を指す。同期動作は競合ベースであり得、それにより、同期動作を実行する比率の増大はプロセッサの実行にレイテンシをもたらし得る。ブロック302でプロセッサによって算出される同期動作率は、スピンロックの数、要求された共有リソースを待つ時間期間、ロック命令の数、および同期命令実行率のうちの少なくとも1つを含み得る。
【００３８】
「命令タイプ」という用語は、浮動小数点命令、ベクトル命令、メモリ命令の比率、または別のタイプの命令など、指定された動作のタイプに従って分類され得る命令を指す。各命令タイプは実行のためのプロセッサおよび/またはリソース要件の程度の点で異なる場合があり、ある種の命令タイプの実行率の増大はプロセッサの性能にレイテンシをもたらし得る。ブロック302でプロセッサによって算出される命令タイプの比率は、浮動小数点命令の比率、ベクトル命令の比率、およびメモリ命令の比率のうちの少なくとも1つを含み得る。
【００３９】
ブロック304で、プロセッサは、スレッド実行基準がしきい値を満たすスレッドを選択された1つまたは複数の処理コアに割り振ることができる。しきい値を満たし得るスレッド実行基準の1つまたは複数の値は、考慮されるスレッド実行基準のタイプに依存し得る。様々な態様では、特定の基準に応じて、スレッド実行基準がしきい値を下回るとき、しきい値を上回るとき、しきい値以下であるとき、しきい値以上であるとき、またはしきい値に等しいとき、スレッド実行基準はしきい値を満たし得る。言い換えれば、しきい値は上限または下限であり得る。いくつかの態様では、スレッド実行基準が第1のしきい値を上回るか、第2のしきい値を下回るか、または第1のしきい値と第2のしきい値との間であるかを決定するためになど、2つ(以上)のしきい値を使用することができる。
【００４０】
一例として、スレッド実行基準はキャッシュミス率であってよく、非キャッシュメモリに対してしきい値を超える数の読取り/書込み動作を実行することになるスレッドを1つまたは少数のコアに割り振ることができる。このようにして、データが非キャッシュメモリからアクセスされている間またはデータが非キャッシュメモリ内に書き込まれている間に処理コアを待ち状態に頻繁に置くことになるスレッドを1つまたは少数のコアに割り振ることができ、次いで、これらのコアは、電力を節約するために、より低い周波数で動作し得る。ブロック304のこのプロセスは、主にキャッシュメモリに書き込むかまたはキャッシュメモリから読み取ること、したがって、処理コアをより少ない待ち状態に置くことができる残りのスレッドを他の処理コアに割り振ることができ、それらの処理コアは、次いで、性能を改善するためにより高い周波数で動作し得る。
【００４１】
別の例として、スレッド実行基準は同期動作を含んでよく、プロセッサがしきい値率の同期動作を実行するとき、同期動作の性能をトリガし得るスレッドを1つまたは少数のコアに割り振ることができ、それらのコアは、次いで、より低い周波数で動作し得る。
【００４２】
別の例として、スレッド実行基準は命令タイプの比率を含んでよく、プロセッサがしきい値率の1つまたは複数の特定の命令タイプを実行するとき、1つまたは複数の特定の命令タイプのスレッドを1つまたは少数のコアに割り振ることができ、それらのコアは、次いで、より低い周波数で動作し得る。
【００４３】
決定されたスレッド実行基準に基づいて、プロセッサは、ブロック304で、各スレッドを処理コアのうち1つまたは処理コアのグループに割り振ること(すなわち、割り当てること、またはスケジュールすること)ができる。1つを超えるスレッドのスレッド実行基準がしきい値を満たすとき、そのようなスレッドの各々を同じ処理コアに割り振ることができる。
【００４４】
一態様では、スレッドを選択された処理コアに連続的に割り振ることができる。言い換えれば、スレッドのスレッド実行基準がしきい値を満たすという決定が行われるとき、スレッドを選択された処理コアに割り振ることができる。別の態様では、最低数またはしきい値数のスレッドのスレッド実行基準がしきい値を満たすとき、スレッドを選択された処理コアに割り振ることができる。
【００４５】
ブロック306で、プロセスは、選択された1つまたは複数の処理コアの電力消費を減少させるために、しきい値を満たすスレッド実行基準を備えたスレッドを実行するために選択された1つまたは複数の処理コアの周波数を低減させることができる。たとえば、選択された処理コアの動作周波数は、動的電圧および周波数スケーリング、動的クロックおよび電圧スケーリング、および同様の電力低減技法など、動的電力低減技法を使用して低減され得る。一態様では、選択された処理コアの動作周波数は、選択された処理コアに割り振られたスレッドのスレッド実行基準に基づくレベルに低減され得る。たとえば、スレッド実行基準が高ければ高いほど、選択された処理コアの周波数は低くなり得る。プロセッサは、1つまたは複数の処理コア内のスレッドに関するスレッド実行基準を動的に再決定するために方法300を周期的に繰り返すことができる。
【００４６】
図4は、スレッド実行基準に基づいて、スレッドを処理コアに割り振ることによって、プロセッサデバイス電力消費を管理する別の態様方法400を示すプロセスフロー図である。ブロック302で、プロセッサは、図3を参照して上で説明したような、複数の処理コアのうちの1つの中で実行するようにスケジュールされた複数のスレッドの各々に関するスレッド実行基準を決定することができる。
【００４７】
ブロック404で、プロセッサは、スレッド実行基準がしきい値を満たすスレッドをグループに関連付けることができる。たとえば、各スレッドのスレッド実行基準をしきい値スレッド実行基準と比較することができる。一態様では、スレッドのスレッド実行基準がしきい値を満たすとき、スレッドをグループに割り振ることができる。1つを超えるスレッドのスレッド実行基準がしきい値を満たすとき、そのようなスレッドの各々を同じグループに割り振ることができる。スレッドのこのグループは、高い遅延または非効率性(たとえば、高いキャッシュミス率)、したがって、高い比率で処理コアを待ち状態に置くことによって特徴付けることができる。
【００４８】
ブロック406で、プロセッサは、スレッド実行基準がしきい値を満たすスレッドのグループを選択された処理コアに割り振ることができる。決定されたスレッド実行基準に基づいて、グループを選択された処理コアに割り振ることができる(すなわち、グループ内の各スレッドを割り当てること、またはスケジュールすることができる)。一態様では、グループ内の各スレッドのスレッド実行基準がしきい値を満たすとき、スレッドを選択された処理コアに割り振ることができる。スレッドのグループのスレッド実行基準はまた、グループに割り振られたスレッドの平均スレッド実行基準(たとえば、平均キャッシュミス率、平均同期動作率、または命令タイプの平均比率)、グループに割り振られたスレッドの算術平均レッド実行基準(たとえば、算術平均キャッシュミス率、算術平均同期動作率、または命令タイプの算術平均率)、グループに割り振られたスレッドの算術平均スレッド実行基準からの標準偏差(たとえば、算術平均キャッシュミス率、算術平均同期動作率、または命令タイプの算術平均率からの標準偏差)、グループに割り振られたスレッドの総スレッド実行基準(たとえば、総キャッシュミス率、総同期動作率、または命令タイプの総比率)に基づいて決定され得る。前述の組合せを含めて、他の例も可能である。
【００４９】
ブロック408で、プロセッサは、選択された処理コアの電力消費を減少させるために、選択された処理コアの周波数を低減することができる。態様では、選択された処理コアの動作周波数は、動的電圧および周波数スケーリング、動的クロックおよび電圧スケーリング、または別の同様の電力低減技法など、動的電力低減技法を使用して低減され得る。一態様では、スレッド実行基準の特性は、処理コアに割り振られたスレッドのスレッド実行基準に基づいて、選択された処理コアに関して決定されてよく、選択された処理コアの動作周波数は、スレッド実行基準の特性に基づいて低減され得る。たとえば、特性キャッシュミス率は、選択された処理コアに割り振られたスレッドの(または、処理コアに割り振られたグループの)平均キャッシュミス率、選択された処理コアに割り振られたスレッドの算術平均キャッシュミス率、選択された処理コアに割り振られたスレッドの算術平均キャッシュミス率からの標準偏差、および選択された処理コアに割り振られたスレッドの総キャッシュミス率のうちの1つを含み得る。他の例では、特性キャッシュミス率に加えて、または代替として、特性同期動作率、および/または命令タイプの特性比率を同様に決定することができる。
【００５０】
スレッド実行基準の決定された特性と動作周波数との間の比率に基づいて、スレッド実行基準の決定された特性に比例して動作周波数を低減すること、スレッド実行基準の決定された特性に基づいて、周波数低減係数を算出すること、またはスレッド実行基準の決定された特性に基づいて、動作周波数の低減を算出する別の方法を使用することによってなど、スレッド実行基準の決定された特性に対する関係に基づいて、処理コアの動作周波数を低減することができる。プロセッサは、選択された処理コアに関する、および/または1つまたは複数の処理コア内のスレッドに関するスレッド実行基準の特性を動的に再決定するために、方法400を周期的に繰り返すことができる。
【００５１】
図5は、プロセッサデバイス電力消費を管理する別の態様方法500を示すプロセスフロー図である。ブロック302で、プロセッサは、図3を参照して上で説明したように、処理コア内で実行するようにスケジュールされた複数のスレッドの各々に関するスレッド実行基準を決定することができる。
【００５２】
ブロック404で、プロセッサは、図4を参照して上で説明したように、スレッド実行基準がしきい値を満たすスレッドを第1のグループに関連付けることができる。スレッドは、各スレッドの識別子を第1のグループ識別子に関連付けることによって第1のグループに関連付けられ得る。
【００５３】
ブロック506で、プロセッサは、スレッド実行基準がしきい値を満たさないスレッドを第2のグループに関連付けることができる。そのようなスレッドは、各スレッドの識別子を第2のグループ識別子に関連付けることによって第2のグループに関連付けられ得る。
【００５４】
ブロック508で、プロセッサは、第1のグループのスレッド(たとえば、スレッド実行基準がキャッシュミス率のしきい値を満たすスレッド)を選択された1つまたは複数の第1の処理コアに割り振ることができる。決定されたスレッド実行基準に基づいて、グループを選択された処理コアに割り振ることができる(すなわち、グループ内の各スレッドを割り当てること、またはスケジュールすることができる)。一態様では、グループ内の各スレッドのスレッド実行基準がしきい値を満たすとき、グループのスレッドを選択された処理コアに割り振ることができる。スレッドのグループのスレッド実行基準はまた、グループに割り振られたスレッドの平均スレッド実行基準、グループに割り振られたスレッドの算術平均スレッド実行基準、グループに割り振られたスレッドの算術平均スレッド実行基準からの標準偏差、およびグループに割り振られたスレッドの総スレッド実行基準に基づいて決定され得る。前述の組合せを含めて、他の例も可能である。スレッド識別子に基づいて、またはスレッドが第1のグループに関連付けられていることを示すグループ識別子に基づいて、スレッドを選択された処理コアに割り振ることができる。
【００５５】
ブロック510で、プロセッサは、第2のグループ内のスレッド(すなわち、スレッド実行基準がしきいスレッド実行基準を満たさないスレッド)を選択された1つまたは複数の第2の処理コアに割り振ることができる。スレッド識別子に基づいて、またはスレッドが第2のグループに関連付けられていることを示すグループ識別子に基づいて、第2のグループのスレッドを第2の処理コアに割り振ることができる。
【００５６】
ブロック512で、プロセッサは、第1のグループに割り振られたスレッドのスレッド実行基準に基づいて、第1の処理コアに関するスレッド実行基準の特性を決定することができる。スレッド実行基準の特性は、特性キャッシュミス率、特性同期動作率、および命令タイプの特性比率のうちの1つまたは複数を含み得る。様々な態様では、特性キャッシュミス率は、選択された処理コアに割り振られたスレッドの(または、処理コアに割り振られたグループの)平均キャッシュミス率、選択された処理コアに割り振られたスレッドの算術平均キャッシュミス率、選択された処理コアに割り振られたスレッドの算術平均キャッシュミス率からの標準偏差、および選択された処理コアに割り振られたスレッドの総キャッシュミス率のうちの1つを含み得る。追加または代替として、特性同期動作率は、選択された処理コアに割り振られたスレッドの(または、処理コアに割り振られたグループの)平均同期動作率、選択された処理コアに割り振られたスレッドの算術平均同期動作率、選択された処理コアに割り振られたスレッドの算術平均同期動作率からの標準偏差、および選択された処理コアに割り振られたスレッドの総同期動作率のうちの1つを含み得る。追加または代替として、命令タイプの特性比率は、選択された処理コアに割り振られたスレッドの(または、処理コアに割り振られたグループの)命令タイプの平均比率、選択された処理コアに割り振られたスレッドの命令タイプの算術平均比率、選択された処理コアに割り振られたスレッドの命令タイプの算術平均比率からの標準偏差、および選択された処理コアに割り振られたスレッドの命令タイプの総比率のうちの1つを含み得る。
【００５７】
ブロック514で、プロセッサは、選択された処理コアの電力消費を減少させるために、第1の処理コアの動作周波数を低減することができる。第1の処理コアの動作周波数は、スレッド実行基準の決定された特性に対する関係に基づいて低減され得る。たとえば、第1の処理コアの動作周波数は、スレッド実行基準の決定された特性に基づいて、スレッド実行基準の決定された特性と動作周波数との間の比率に基づいて、スレッド実行基準の決定特性に基づいて周波数低減係数を計算することによって、またはスレッド実行基準の決定された特性に基づいて、動作周波数の低減を算出する別の方法によって決定され得る。様々な態様では、選択された処理コアの動作周波数は、動的電圧および周波数スケーリング、動的クロックおよび電圧スケーリング、または別の同様の電力低減技法などの動的電力低減技法を使用して低減され得る。上で論じたように、第1の処理コアの周波数は、性能全体に著しい影響を与えずに低減可能であるが、これは非キャッシュメモリに対する多数の読取り/書込み動作のレイテンシがコアの処理性能を支配することになるためである。
【００５８】
オプションのブロック516で、プロセッサは、スレッド実行基準がしきい値を満たさないスレッドの処理速度を高めるために、1つまたは複数の第2の処理コアの周波数を増大することができる。スレッド実行基準がしきい値を満たさないスレッドは、たとえば、第2のプロセッサにより小さい遅延をもたらすことによって、またはより少ないメインメモリアクセスを必要とすることによって、第2のプロセッサの処理リソースをより効率的に使用するために決定可能であり、このようにして、第2のプロセッサに第1のプロセッサよりも比較的少ない回数の待ち状態に入らせる。第2のプロセッサの動作周波数を増大することは電力消費を増大し得るが、第2のプロセッサのより効率的な使用により、システムの効率全体を増大することができる。態様では、選択された処理コアの動作周波数は、動的電圧および周波数スケーリング、動的クロックおよび電圧スケーリング、および同様の技法など、動的電力低減技法を使用して増大され得る。
【００５９】
スレッドは、システムメモリアクセスのシーケンスまたは動作のシーケンスの後など、そのスレッド実行基準が変更すると、異なるグループに再分類および/または再関連付けされてもよい。オプションの決定ブロック518で、プロセッサは、第1のグループに当初関連付けられたスレッドの保留中の動作のスレッド実行基準がしきいキャッシュミス率をもはや満たさないかどうかを決定することができる。これは、たとえば、スレッドの保留中の動作がシステムメモリから前に取得されたデータに関して実行されることになるときに発生し得る。そのような場合、スレッドによって必要とされるデータまたは命令が、間にスレッドが高いキャッシュミス率を示し、スレッドが第1の処理コアによって実行されたシステムメモリ呼びのシーケンスに続く時間期間にわたって1つまたは複数のキャッシュ内で利用可能であり得るように、システムメモリからデータを取得するための高いキャッシュミス率での動作のシーケンス後で、スレッドはキャッシュ読取りおよび書込み動作に主に依存する動作の実行に移ることができる。
【００６０】
プロセッサが第1の処理コアに割り振られたスレッドのスレッド実行基準がしきい値をもはや満たさないと決定するとき(すなわち、オプションの決定ブロック518=「Yes」)、プロセッサは、スレッドを第2のグループに関連付けることができ、このようにして、保留中の動作がより高い処理周波数で実行され得るように、オプションのブロック520で、スレッドを第2の処理コアに割り振ることができる。第1のグループ内の何のスレッドもスレッド実行基準をもはや満たさない場合(すなわち、オプションの決定ブロック518=「No」)、プロセッサは、いずれのスロットも再割り振りしなくてよく、方法500の動作を周期的に繰り返すことができる。
【００６１】
プロセッサは、選択された処理コアに関する、および/または1つまたは複数の処理コア内のスレッドに関する特性スレッド実行基準を動的に再決定するために、方法500の動作を周期的に繰り返すことができる。スレッド内の保留中の動作のスレッド実行基準は経時的に変化し得るため、スレッドが実行すると、動的にスレッドを再評価し、グループまたはプロセッサコアに再割り振りすることは有利であり得る。オプションの決定ブロック518に関して上で論じたように、スレッドはシステムメモリからデータを獲得するため、スレッドはしきい値を満たすスレッド実行基準を当初有し得るが、取得されたデータに関して機能する動作のシーケンスに関するしきい値を満たさないスレッド実行基準を有さない場合がある。同様に、しきい値を満たさず、したがって、第2のグループに関連付けられたスレッド実行基準を当初有したスレッドは、動作の結果をシステムメモリまたはディスプレイバッファに書き込むとき、しきい値を満たすスレッド実行基準に遷移することができる。
【００６２】
図6は、プロセッサデバイス電力消費を管理する別の態様方法600を示すプロセスフロー図である。ブロック302で、プロセッサは、図3を参照して上で説明したような、処理コアで実行するようにスケジュールされた複数のスレッドの各々に関するスレッド実行基準を決定することができる。
【００６３】
ブロック604で、プロセッサは、スレッド実行基準が第1のしきい値を満たすスレッドを実行のために第1の処理コアに割り振るか、または割り当てることができる。一態様では、各スレッドのスレッド実行基準は個々に考慮され得る。一態様では、スレッドのグループのスレッド実行基準はまた、グループに割り振られたスレッドの平均スレッド実行基準、グループに割り振られたスレッドの算術平均スレッド実行基準、グループに割り振られたスレッドの算術平均スレッド実行基準からの標準偏差、およびグループに割り振られたスレッドの総スレッド実行基準に基づいて決定され得る。前述の組合せを含めて、他のスレッド実行基準も可能である。
【００６４】
ブロック606で、プロセッサは、スレッド実行基準が第1のしきい値を満たさないスレッドを選択された1つまたは複数の第2の処理コアに割り振ることができる。ブロック608で、プロセッサは、スレッド実行基準が、第2のしきい値を満たすが、第1のしきい値を満たさないスレッドを複数の処理コアのうち第3の処理コアに割り振ることができる。一態様では、第1のしきい値は、第2のしきい値よりも高いスレッド実行基準しきい値に対応し得る。態様では、スレッドを1つまたは複数のプロセッサに割り振るために、2つを超えるしきい値を使用することができ、これは、スレッドのスレッド実行基準の評価により高い粒度を提供し得る。さらに、説明を明快にするために、ブロック604、606、および608は特定のシーケンスで説明されているが、ブロック604、606、および608は、任意の順序で、または実質的に同時に実行されてよい。
【００６５】
ブロック610で、プロセッサは、選択された処理コアの電力消費を減少させるために、第1の処理コアの動作周波数を減少させることができる。第1の処理コアの動作周波数は、第1の処理コアに割り振られたスレッドに関連するスレッド実行基準の決定された特性に基づいて低減され得る。上で論じたように、第1の処理コアの周波数は、性能全体に著しい影響を与えずに低減可能であるが、これは非キャッシュメモリに対する多数の読取り/書込み動作のレイテンシがコアの処理性能を支配することになるためである。
【００６６】
オプションのブロック612で、プロセッサは、スレッド実行基準がしきい値を満たさないスレッドの処理速度を高めるために、第2の処理コアの周波数を増大することができる。スレッド実行基準が第1のしきい値を満たさないスレッドは、たとえば、第2のプロセッサにより小さい遅延をもたらすことによって、またはより少ないメインメモリアクセスを必要とすることによって、第2のプロセッサの処理リソースをより効率的に使用するために決定可能であり、このようにして、第2のプロセッサに第1のプロセッサよりも比較的少ない回数の待ち状態に入らせる。様々な態様では、選択された処理コアの動作周波数は、動的電圧および周波数スケーリング、動的クロックおよび電圧スケーリング、および同様の技法など、動的電力低減技法を使用して増大され得る。
【００６７】
オプションのブロック614で、プロセッサは、第3の処理コアの周波数を第1の処理コアの周波数と第2の処理コアの周波数との間の周波数に調整することができる。第1の処理コアの動作周波数は、第3の処理コアに割り振られたスレッドに関連するスレッド実行基準の決定された特性に基づいて調整されてよく、第1の処理コアおよび第2の処理コアの周波数に基づいてもよい。
【００６８】
スレッドはまた、システムメモリアクセスのシーケンスまたは動作のシーケンスの後など、そのスレッド実行基準が変更すると、異なる処理コアに再割り振りされ得る。オプションの決定ブロック618で、プロセッサは、第1のしきい値および/または第2のしきい値に関して、第1の処理コア、第2の処理コア、または第3の処理コアに割り振られたスレッドのスレッド実行基準が変更したかどうかを決定することができる。プロセッサが、第1のしきい値および/または第2のしきい値に関して、処理コアに割り振られたスレッドのスレッド実行基準が変更したと決定したとき(すなわち、オプションの決定ブロック618=「Yes」)、プロセッサは、変更した実行基準ならびに第1のしきい値および/または第2のしきい値に従って、オプションのブロック620で、スレッドを異なる処理コアに割り振ることができる。第1のしきい値および/または第2のしきい値に関して、すべてのスレッドが変更していない場合(オプションの決定ブロック618=「No」)、プロセッサはいずれのスレッドも再割り振りしなくてよい。
【００６９】
プロセッサは、選択された処理コアに関する、および/または1つまたは複数の処理コア内のスレッドに関する特性スレッド実行基準を動的に再決定することによって、スレッドを再評価し、グループまたはプロセッサコアに再割り振りするために、方法600の動作を周期的に繰り返すことができる。スレッド内の保留中の動作のスレッド実行基準は経時的に変化し得るため、スレッドが実行すると、動的にスレッドを再評価して、グループまたはプロセッサコアに再割り振りすることは有利であり得る。オプションの決定ブロック618に関して上で論じたように、(たとえば、スレッドは、システムメモリからデータを獲得するか、またはあるレベルの処理リソースを必要とするため)スレッドはしきい値を満たすスレッド実行基準を当初有し得るが、たとえば、取得されたデータに関して機能するか、または異なるレベルの処理リソースを必要とする動作のシーケンスに関するしきい値を満たさないスレッド実行基準を有する場合がある。
【００７０】
様々な態様が、種々のモバイルコンピューティングデバイス上に実装されてよく、それらの一例が図7に示されている。具体的には、図7は、態様のいずれかとともに使用するのに適したスマートフォン/セルフォン700の形態の、モバイルトランシーバデバイスのシステムブロック図である。セルフォン700は、内部メモリ702と、ディスプレイ703と、スピーカー708とに結合されたプロセッサ701を含み得る。加えて、セルフォン700は、プロセッサ701に結合されたワイヤレスデータリンクおよび/またはセルラー電話トランシーバ705に接続され得る、電磁放射を送信および受信するためのアンテナ704を含み得る。セルフォン700は、通常、ユーザ入力を受け取るためのメニュー選択ボタンまたはロッカースイッチ706も含む。
【００７１】
一般的なセルフォン700はまた、マイクロフォンから受信された音をワイヤレス送信に適したデータパケットへとデジタル化し、受信された音のデータパケットを復号し、音を発生するために、スピーカー708に供給されるアナログ信号を生成する音声符号化/復号(CODEC)回路713を含む。また、プロセッサ701、ワイヤレストランシーバ705、およびCODEC713のうちの1つまたは複数は、デジタル信号プロセッサ(DSP)回路(個別に図示せず)を含み得る。セルフォン700はさらに、ワイヤレスデバイス間の低電力短距離通信のためのZigBeeトランシーバ(すなわち、IEEE 802.15.4トランシーバ)713、または他の同様の通信回路(たとえば、Bluetooth(登録商標)またはWiFiプロトコルなどを実装する回路)を含み得る。
【００７２】
様々な態様は、図8に示すサーバ800のような、種々の市販のサーバデバイスのいずれにおいても実装され得る。そのようなサーバ800は、通常、揮発性メモリ802と、ディスクドライブ803のような大容量の不揮発性メモリとに結合されたプロセッサ801を含む。サーバ800はまた、プロセッサ801に結合されたフロッピーディスクドライブ、コンパクトディスク(CD)またはDVDディスクドライブ811を含み得る。サーバ800はまた、他の通信システムコンピュータおよびサーバに結合されたローカルエリアネットワークなどのネットワーク805とデータ接続を確立するための、プロセッサ801に結合されたネットワークアクセスポート806を含み得る。
【００７３】
他の形態のコンピューティングデバイスも、様々な態様の恩恵を受け得る。そのようなコンピューティングデバイスは、通常、例示的なパーソナルラップトップコンピュータ900を示す図9に示された構成要素を含む。そのようなパーソナルコンピュータ900は、一般に、揮発性メモリ902、およびディスクドライブ903などの大容量不揮発性メモリに結合されたプロセッサ901を含む。コンピュータ900はまた、プロセッサ901に結合されたコンパクトディスク(CD)および/またはDVDドライブ904を含み得る。コンピュータデバイス900はまた、プロセッサ901をネットワークに結合するためのネットワーク接続回路905などの、データ接続を確立するか、または外部メモリデバイスを受け入れるための、プロセッサ901に結合された、いくつかのコネクタポートを含む場合がある。コンピュータ業界ではよく知られているように、コンピュータ900はさらに、キーボード908、マウスなどのポインティングデバイス910、およびディスプレイ909に結合することができる。
【００７４】
プロセッサ701、801、901は、以下で説明する様々な態様の機能を含む、様々な機能を実行するためのソフトウェア命令(アプリケーション)によって構成され得る、任意のプログラマブルマイクロプロセッサ、マイクロコンピュータ、または1つまたは複数の多重プロセッサチップであり得る。いくつかのモバイルデバイスでは、1つのプロセッサをワイヤレス通信機能専用にし、1つのプロセッサを他のアプリケーションの実行専用にするなどして、複数のプロセッサ801が設けられ得る。通常、ソフトウェアアプリケーションは、アクセスされてプロセッサ701、801、901にロードされる前に、内部メモリ702、802、902に記憶され得る。プロセッサ701、801、901は、アプリケーションソフトウェア命令を記憶するのに十分な内部メモリを含み得る。
【００７５】
様々な態様は、任意の数のシングルプロセッサシステムまたはマルチプロセッサシステムで実装され得る。一般に、複数のプロセスが単一のプロセッサで同時に実行されているように見えるように、プロセスがプロセッサ上で短いタイムスライスの間に実行される。プロセスがタイムスライスの終わりにおいてプロセッサから除去されると、プロセスの現在の動作状態に関する情報がメモリに記憶されるので、プロセスは、プロセッサ上での実行に戻るときに、シームレスに動作を再開することができる。この動作状態データは、プロセスのアドレス空間、スタック空間、仮想アドレス空間、レジスタセットイメージ(たとえば、プログラムカウンタ、スタックポインタ、命令レジスタ、プログラムステータス語など)、アカウンティング情報、パーミッション、アクセス制限、および状態情報を含み得る。
【００７６】
プロセスは他のプロセスをスポーンすることがあり、スポーンされたプロセス(すなわち、子プロセス)は、スポーンしたプロセス(すなわち、親プロセス)のパーミッションおよびアクセス制限(すなわち、コンテキスト)の一部を受け継ぐことがある。プロセスは、複数の軽量のプロセスまたはスレッドを含む重量のプロセスであってよく、軽量のプロセスは、コンテキスト(たとえば、アドレス空間、スタック、パーミッション、および/またはアクセス制限など)のすべてまたは部分を他のプロセス/スレッドと共有するプロセスである。したがって、単一のプロセスは、単一のコンテキスト(すなわち、プロセッサのコンテキスト)を共有する、それへのアクセスを有する、かつ/または中で動作する、複数の軽量のプロセスまたはスレッドを含み得る。
【００７７】
前述の方法の説明、およびプロセスフロー図は、単に例示的な例として提供され、様々な態様のブロックが提示された順序で実行されなければならないことを必要とするまたは意味するものではない。当業者により諒解されるように、前述の態様におけるブロックの順序は、どのような順序で実行されてもよい。「後」、「次いで」、「次に」などの単語は、ブロックの順序を限定するものではなく、これらの単語は、方法の説明を通して読者を案内するために使用されるにすぎない。さらに、たとえば、冠詞「a」、「an」または「the」を使用する単数形での請求要素へのいかなる言及も、要素を単数形に限定するものとして解釈されるべきではない。
【００７８】
上記は、値がしきい値以上であるとき、しきい値を満たし得ることを説明するが、これは限定ではなく、態様では、値がしきい値を超えるときしきい値を満たすことができ、値がしきい値以下であるとき、しきい値を満たすことができないことを諒解されよう。
【００７９】
本明細書で開示された態様に関して説明した、様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズムブロックは、電子ハードウェア、コンピュータソフトウェア、または両方の組合せとして実装され得る。ハードウェアとソフトウェアのこの互換性を明確に示すために、様々な例示的な構成要素、ブロック、モジュール、回路、およびブロックが、上記では概してそれらの機能に関して説明された。そのような機能がハードウェアまたはソフトウェアのどちらとして実装されるのかは、特定の応用例とシステム全体に課せられる設計制約とに依存する。当業者は、説明された機能を、各特定の応用例のために様々な形で実装することができるが、そのような実装決定が、本発明の範囲からの逸脱を引き起こすと解釈されてはならない。
【００８０】
本明細書で開示した態様に関して説明した様々な例示的な論理、論理ブロック、モジュール、および回路を実装するために使用されるハードウェアは、汎用プロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)もしくは他のプログラマブル論理デバイス、個別ゲートもしくはトランジスタ論理、個別ハードウェア構成要素、または本明細書で説明する機能を実行するように設計されたそれらの任意の組合せを用いて実装または実行され得る。汎用プロセッサはマイクロプロセッサとすることが、代替形態では、プロセッサは、任意の従来型プロセッサ、コントローラ、マイクロコントローラ、またはステートマシンとすることができる。また、プロセッサは、コンピューティングデバイスの組合せ、たとえば、DSPとマイクロプロセッサの組合せ、複数のマイクロプロセッサ、DSPコアと連携した1つもしくは複数のマイクロプロセッサ、または任意の他のそのような構成として実装される場合もある。代替的には、いくつかのブロックまたは方法は、所与の機能に固有の回路によって実行され得る。
【００８１】
1つまたは複数の例示的な態様では、説明した機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せにおいて実装され得る。ソフトウェアにおいて実装される場合、機能は、1つまたは複数の命令またはコードとして、非一時的コンピュータ可読媒体または非一時的プロセッサ可読媒体上に記憶され得る。本明細書で開示した方法またはアルゴリズムのステップは、非一時的なコンピュータ可読媒体またはプロセッサ可読記憶媒体上に存在し得るプロセッサ実行可能ソフトウェアモジュールにおいて具体化され得る。非一時的なコンピュータ可読記憶媒体またはプロセッサ可読記憶媒体は、コンピュータまたはプロセッサによってアクセスされ得る任意の記憶媒体であり得る。限定ではなく例として、そのような非一時的コンピュータ可読記憶媒体または非一時的プロセッサ可読記憶媒体は、RAM、ROM、EEPROM、FLASHメモリ、CD-ROMもしくは他の光ディスクストレージ、磁気ディスクストレージもしくは他の磁気ストレージデバイス、または命令もしくはデータ構造の形態で所望のプログラムコードを記憶するために使用され得、コンピュータによってアクセスされ得る任意の他の媒体を含み得る。本明細書において使用されるとき、ディスク(disk)およびディスク(disc)は、コンパクトディスク(disc)(CD)、レーザディスク(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フロッピーディスク(disk)およびブルーレイディスク(disc)を含み、ディスク(disk)は、通常、データを磁気的に再生し、ディスク(disc)は、データをレーザで光学的に再生する。上記の組合せも、非一時的コンピュータ可読記憶媒体およびプロセッサ可読記憶媒体の範囲内に含まれる。加えて、方法またはアルゴリズムの動作は、コンピュータプログラム製品に組み込まれる場合がある、非一時的プロセッサ可読媒体および/または非一時的コンピュータ可読媒体上のコードおよび/または命令の1つまたは任意の組合せまたはセットとして存在する場合がある。
【００８２】
開示した態様の上記の説明は、任意の当業者が本発明を作成または使用することができるように提供される。これらの態様に対する様々な修正は、当業者には容易に明らかであり、本明細書で定義された一般的な原理は、本発明の要旨または範囲から逸脱することなく、他の態様に適用される場合がある。したがって、本発明は、本明細書に示した態様に限定されるものではなく、以下の特許請求の範囲、ならびに、本明細書で開示した原理および新規の特徴と一致する最も広い範囲を与えられるべきである。
【符号の説明】
【００８３】
100  システムオンチップ(SOC)
102  デジタルシグナルプロセッサ(DSP)、プロセッサ
104  モデムプロセッサ、プロセッサ
106  グラフィックスプロセッサ、プロセッサ
108  アプリケーションプロセッサ、プロセッサ
108a  処理コア
108b  処理コア
108c  処理コア
108d  処理コア
110  コプロセッサ、プロセッサ
112  メモリ要素
114  アナログ回路およびカスタム回路
116  システム構成要素およびリソース、リソース
118  クロック
120  電圧調整器
124  相互接続/バスモジュール
202  マルチコアプロセッサ
204  処理コア
206  処理コア
208  処理ユニット
210  処理ユニット
212  レベル1(L1)キャッシュ
214  レベル1(L1)キャッシュ
216  レベル2(L2)キャッシュ
218  バス/相互接続インターフェース
220  メインメモリ
222  入力/出力モジュール
224  外部メモリおよび/またはハードディスクメモリ
226  レベル2(L2)キャッシュ
230  処理コア
232  処理コア
234  処理ユニット
236  処理ユニット
238  レベル1(L1)キャッシュ
240  レベル1(L1)キャッシュ
242  レベル2(L2)キャッシュ
700  スマートフォン/セルフォン
701  プロセッサ
702  内部メモリ
703  ディスプレイ
704  アンテナ
705  セルラー電話トランシーバ
706  メニュー選択ボタンまたはロッカースイッチ
708  スピーカー
713  音声符号化/復号(CODEC)回路、ZigBeeトランシーバ
800  サーバ
801  プロセッサ
802  揮発性メモリ、内部メモリ
803  ディスクドライブ
805  ネットワーク
806  ネットワークアクセスポート
811  フロッピーディスクドライブ、コンパクトディスク(CD)またはDVDディスクドライブ
900  パーソナルラップトップコンピュータ、コンピュータ
901  プロセッサ
902  揮発性メモリ、内部メモリ
903  ディスクドライブ
904  コンパクトディスク(CD)および/またはDVDドライブ
905  ネットワーク接続回路
908  キーボード
909  ディスプレイ
910  ポインティングデバイス
【図１】
2017526996.tif 000003
【図２】
2017526996.tif 000004
【図３】
2017526996.tif 000005
【図４】
2017526996.tif 000006
【図５】
2017526996.tif 000007
【図６】
2017526996.tif 000008
【図７】
2017526996.tif 000009
【図８】
2017526996.tif 000010
【図９】
2017526996.tif 000011
【手続補正書】
【提出日】平成28年12月13日(2016.12.13)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
プロセッサデバイス電力消費を管理する方法であって、
複数の処理コアを含むプロセッサ内で実行するようにスケジュールされた複数のスレッドの各々に関するスレッド実行基準を決定するステップであって、前記スレッド実行基準が、キャッシュ内のデータの読取りまたは書込みの失敗した試みに基づく、プロセッサの待ち状態の数を含むキャッシュミス率を含む、決定するステップと、
前記複数のスレッドのうち、スレッド実行基準が第1のしきい値を満たすスレッドを前記複数の処理コアのうち第1の処理コアに割り振るステップと、
前記第1の処理コアの電力消費を低減するために、前記第1の処理コアの周波数を低減するステップと
を含む、方法。
【請求項２】
前記複数のスレッドのうち、スレッド実行基準が第1のしきい値を満たすスレッドを前記複数の処理コアのうち第1の処理コアに割り振るステップが、
前記複数のスレッドのうち、スレッド実行基準が前記第1のしきい値を満たすスレッドを第1のグループに関連付けるステップと、
スレッドの前記第1のグループを前記第1の処理コアに割り振るステップと
を含む、請求項1に記載の方法。
【請求項３】
前記複数のスレッドのうち、スレッド実行基準が前記第1のしきい値を満たさないスレッドを前記複数の処理コアのうち第2の処理コアに割り振るステップをさらに含む、請求項1に記載の方法。
【請求項４】
前記複数のスレッドのうち、スレッド実行基準が前記第1のしきい値を満たさないスレッドの処理率を増大するために、前記第2の処理コアの周波数を増大するステップをさらに含む、請求項3に記載の方法。
【請求項５】
スレッド実行基準が前記第1のしきい値を満たさないスレッドを前記複数の処理コアのうち第2の処理コアに割り振るステップが、
前記複数のスレッドのうち、スレッド実行基準が前記第1のしきい値を満たさないスレッドを第2のグループに関連付けるステップと、
前記第2のグループを前記第2の処理コアに割り振るステップと
を含む、請求項3に記載の方法。
【請求項６】
スレッド実行基準が第2のしきい値を満たすが、前記第1のしきい値を満たさないスレッドを前記複数の処理コアのうち第3の処理コアに割り振るステップと、
前記第3の処理コアの周波数を前記第1の処理コアの前記周波数と前記第2の処理コアの前記周波数との間の周波数に調整するステップと
をさらに含む、請求項4に記載の方法。
【請求項７】
前記第1のしきい値がキャッシュミス率のしきい値を含む
請求項1に記載の方法。
【請求項８】
前記第1の処理コアの周波数を低減するステップが、
前記第1の処理コアに割り振られた前記スレッドの前記キャッシュミス率に基づいて、前記第1の処理コアに関する特性キャッシュミス率を決定するステップと、
前記決定された特性キャッシュミス率に基づいて、前記第1の処理コアの前記周波数を低減するステップと
をさらに含む、請求項1に記載の方法。
【請求項９】
前記特性キャッシュミス率が、前記第1の処理コアに割り振られた前記スレッドの平均キャッシュミス率、前記第1の処理コアに割り振られた前記スレッドの算術平均キャッシュミス率、前記第1の処理コアに割り振られた前記スレッドの前記算術平均キャッシュミス率からの標準偏差、および前記第1の処理コアに割り振られた前記スレッドの総キャッシュミス率のうちの1つを含む、請求項8に記載の方法。
【請求項１０】
前記スレッド実行基準が同期動作率をさらに含み、
前記第1のしきい値が同期動作率のしきい値をさらに含む
請求項1に記載の方法。
【請求項１１】
前記同期動作率が、スピンロックの数、要求された共有リソースを待つ時間期間、ロック命令の数、および同期命令実行率のうちの少なくとも1つを含む、請求項10に記載の方法。
【請求項１２】
前記第1の処理コアの周波数を低減するステップが、
前記第1の処理コアに割り振られた前記スレッドの前記同期動作率に基づいて、前記第1の処理コアに関する特性同期動作率を決定するステップと、
前記決定された特性同期動作率に基づいて、前記第1の処理コアの前記周波数を低減するステップと
をさらに含む、請求項10に記載の方法。
【請求項１３】
前記スレッド実行基準が命令タイプの比率をさらに含み、
前記第1のしきい値が命令タイプの比率のしきい値をさらに含む
請求項1に記載の方法。
【請求項１４】
前記命令タイプの比率が、浮動小数点命令の比率、ベクトル命令の比率、およびメモリ命令の比率のうちの少なくとも1つを含む、請求項13に記載の方法。
【請求項１５】
前記第1の処理コアの周波数を低減するステップが、
前記第1の処理コアに割り振られた前記スレッドの前記命令タイプの比率に基づいて、前記第1の処理コアに関する命令タイプの特性比率を決定するステップと、
前記決定された命令タイプの特性比率に基づいて、前記第1の処理コアの前記周波数を低減するステップと
をさらに含む、請求項13に記載の方法。
【請求項１６】
複数の処理コアを含むプロセッサ内で実行するようにスケジュールされた複数のスレッドの各々に関するスレッド実行基準を決定するための手段であって、前記スレッド実行基準が、キャッシュ内のデータの読取りまたは書込みの失敗した試みに基づく、プロセッサの待ち状態の数を含むキャッシュミス率を含む、決定するための手段と、
前記複数のスレッドのうち、スレッド実行基準が第1のしきい値を満たすスレッドを前記複数の処理コアのうち第1の処理コアに割り振るための手段と、
前記第1の処理コアの電力消費を低減するために、前記第1の処理コアの周波数を低減するための手段と
を含むコンピューティングデバイス。
【請求項１７】
前記複数のスレッドのうち、スレッド実行基準が第1のしきい値を満たすスレッドを前記複数の処理コアのうち第1の処理コアに割り振るための手段が、
前記複数のスレッドのうち、スレッド実行基準が前記第1のしきい値を満たすスレッドを第1のグループに関連付けるための手段と、
スレッドの前記第1のグループを前記第1の処理コアに割り振るための手段と
を含む、請求項16に記載のコンピューティングデバイス。
【請求項１８】
前記複数のスレッドのうち、スレッド実行基準が前記第1のしきい値を満たさないスレッドを前記複数の処理コアのうち第2の処理コアに割り振るための手段をさらに含む、請求項16に記載のコンピューティングデバイス。
【請求項１９】
前記複数のスレッドのうち、スレッド実行基準が前記第1のしきい値を満たさないスレッドの処理率を増大するために、前記第2の処理コアの周波数を増大するための手段をさらに含む、請求項18に記載のコンピューティングデバイス。
【請求項２０】
スレッド実行基準が前記第1のしきい値を満たさないスレッドを前記複数の処理コアのうち第2の処理コアに割り振るための手段が、
前記複数のスレッドのうち、スレッド実行基準が前記第1のしきい値を満たさないスレッドを第2のグループに関連付けるための手段と、
前記第2のグループを前記第2の処理コアに割り振るための手段と
を含む、請求項18に記載のコンピューティングデバイス。
【請求項２１】
スレッド実行基準が第2のしきい値を満たすが、前記第1のしきい値を満たさないスレッドを前記複数の処理コアのうち第3の処理コアに割り振るための手段と、
前記第3の処理コアの周波数を前記第1の処理コアの前記周波数と前記第2の処理コアの前記周波数との間の周波数に調整するための手段と
をさらに含む、請求項19に記載のコンピューティングデバイス。
【請求項２２】
前記第1のしきい値がキャッシュミス率のしきい値を含む
請求項16に記載のコンピューティングデバイス。
【請求項２３】
前記第1の処理コアの周波数を低減するための手段が、
前記第1の処理コアに割り振られた前記スレッドの前記キャッシュミス率に基づいて、前記第1の処理コアに関する特性キャッシュミス率を決定するための手段と、
前記決定された特性キャッシュミス率に基づいて、前記第1の処理コアの前記周波数を低減するための手段と
をさらに含む、請求項16に記載のコンピューティングデバイス。
【請求項２４】
前記特性キャッシュミス率が、前記第1の処理コアに割り振られた前記スレッドの平均キャッシュミス率、前記第1の処理コアに割り振られた前記スレッドの算術平均キャッシュミス率、前記第1の処理コアに割り振られた前記スレッドの前記算術平均キャッシュミス率からの標準偏差、および前記第1の処理コアに割り振られた前記スレッドの総キャッシュミス率のうちの1つを含む、請求項23に記載のコンピューティングデバイス。
【請求項２５】
前記スレッド実行基準が同期動作率をさらに含み、
前記第1のしきい値が同期動作率のしきい値をさらに含む
請求項16に記載のコンピューティングデバイス。
【請求項２６】
前記同期動作率が、スピンロックの数、要求された共有リソースを待つ時間期間、ロック命令の数、および同期命令実行率のうちの少なくとも1つを含む、請求項25に記載のコンピューティングデバイス。
【請求項２７】
前記第1の処理コアの周波数を低減するための手段が、
前記第1の処理コアに割り振られた前記スレッドの前記同期動作率に基づいて、前記第1の処理コアに関する特性同期動作率を決定するための手段と、
前記決定された特性同期動作率に基づいて、前記第1の処理コアの前記周波数を低減するための手段と
をさらに含む、請求項25に記載のコンピューティングデバイス。
【請求項２８】
前記スレッド実行基準が命令タイプの比率をさらに含み、
前記第1のしきい値が命令タイプの比率のしきい値をさらに含む
請求項16に記載のコンピューティングデバイス。
【請求項２９】
前記命令タイプの比率が、浮動小数点命令の比率、ベクトル命令の比率、およびメモリ命令の比率のうちの少なくとも1つを含む、請求項28に記載のコンピューティングデバイス。
【請求項３０】
前記第1の処理コアの周波数を低減するための手段が、
前記第1の処理コアに割り振られた前記スレッドの前記命令タイプの比率に基づいて、前記第1の処理コアに関する命令タイプの特性比率を決定するための手段と、
前記決定された命令タイプの特性比率に基づいて、前記第1の処理コアの前記周波数を低減するための手段と
をさらに含む、請求項28に記載のコンピューティングデバイス。
【請求項３１】
動作を実行するようにプロセッサ実行可能命令で構成されたプロセッサを備えたコンピューティングデバイスであって、前記動作が、
複数の処理コアを含むプロセッサ内で実行するようにスケジュールされた複数のスレッドの各々に関するスレッド実行基準を決定することであって、前記スレッド実行基準が、キャッシュ内のデータの読取りまたは書込みの失敗した試みに基づく、プロセッサの待ち状態の数を含むキャッシュミス率を含む、決定することと、
前記複数のスレッドのうち、スレッド実行基準が第1のしきい値を満たすスレッドを前記複数の処理コアのうち第1の処理コアに割り振ることと、
前記第1の処理コアの電力消費を低減するために、前記第1の処理コアの周波数を低減することと
を含む、コンピューティングデバイス。
【請求項３２】
前記プロセッサが、前記複数のスレッドのうち、スレッド実行基準が第1のしきい値を満たすスレッドを前記複数の処理コアのうち第1の処理コアに割り振ることが、
前記複数のスレッドのうち、スレッド実行基準が前記第1のしきい値を満たすスレッドを第1のグループに関連付けることと、
スレッドの前記第1のグループを前記第1の処理コアに割り振ることと
を含むように動作を実行するようにプロセッサ実行可能命令で構成される、請求項31に記載のコンピューティングデバイス。
【請求項３３】
前記プロセッサが、前記複数のスレッドのうち、スレッド実行基準が前記第1のしきい値を満たさないスレッドを前記複数の処理コアのうち第2の処理コアに割り振ることをさらに含む動作を実行するようにプロセッサ実行可能命令で構成される、請求項31に記載のコンピューティングデバイス。
【請求項３４】
前記複数のスレッドのうち、スレッド実行基準が前記第1のしきい値を満たさないスレッドの処理率を増大するために、前記第2の処理コアの周波数を増大することをさらに含む、請求項33に記載のコンピューティングデバイス。
【請求項３５】
スレッド実行基準が前記第1のしきい値を満たさないスレッドを前記複数の処理コアのうち第2の処理コアに割り振ることが、
前記複数のスレッドのうち、スレッド実行基準が前記第1のしきい値を満たさないスレッドを第2のグループに関連付けることと、
前記第2のグループを前記第2の処理コアに割り振ることと
を含む、請求項33に記載のコンピューティングデバイス。
【請求項３６】
前記プロセッサが、
スレッド実行基準が第2のしきい値を満たすが、前記第1のしきい値を満たさないスレッドを前記複数の処理コアのうち第3の処理コアに割り振ることと、
前記第3の処理コアの周波数を前記第1の処理コアの前記周波数と前記第2の処理コアの前記周波数との間の周波数に調整することと
をさらに含む動作を実行するようにプロセッサ実行可能命令で構成される、請求項34に記載のコンピューティングデバイス。
【請求項３７】
前記プロセッサが、
前記第1のしきい値がキャッシュミス率のしきい値を含む
ように動作を実行するようにプロセッサ実行可能命令で構成される、請求項31に記載のコンピューティングデバイス。
【請求項３８】
前記プロセッサが、前記第1の処理コアの周波数を低減することが、
前記第1の処理コアに割り振られた前記スレッドの前記キャッシュミス率に基づいて、前記第1の処理コアに関する特性キャッシュミス率を決定することと、
前記決定された特性キャッシュミス率に基づいて、前記第1の処理コアの前記周波数を低減することと
をさらに含むように動作を実行するようにプロセッサ実行可能命令で構成される、請求項31に記載のコンピューティングデバイス。
【請求項３９】
前記特性キャッシュミス率が、前記第1の処理コアに割り振られた前記スレッドの平均キャッシュミス率、前記第1の処理コアに割り振られた前記スレッドの算術平均キャッシュミス率、前記第1の処理コアに割り振られた前記スレッドの前記算術平均キャッシュミス率からの標準偏差、および前記第1の処理コアに割り振られた前記スレッドの総キャッシュミス率のうちの1つを含む、請求項38に記載のコンピューティングデバイス。
【請求項４０】
前記プロセッサが、
前記スレッド実行基準が同期動作率を含み、
前記第1のしきい値が同期動作率のしきい値を含む
ように動作を実行するようにプロセッサ実行可能命令で構成される、請求項31に記載のコンピューティングデバイス。
【請求項４１】
前記同期動作率が、スピンロックの数、要求された共有リソースを待つ時間期間、ロック命令の数、および同期命令実行率のうちの少なくとも1つを含む、請求項40に記載のコンピューティングデバイス。
【請求項４２】
前記プロセッサが、前記第1の処理コアの周波数を低減することが、
前記第1の処理コアに割り振られた前記スレッドの前記同期動作率に基づいて、前記第1の処理コアに関する特性同期動作率を決定することと、
前記決定された特性同期動作率に基づいて、前記第1の処理コアの前記周波数を低減することと
をさらに含むように動作を実行するようにプロセッサ実行可能命令で構成される、請求項40に記載のコンピューティングデバイス。
【請求項４３】
前記プロセッサが、
前記スレッド実行基準が命令タイプの比率を含み、
前記第1のしきい値が命令タイプの比率のしきい値を含む
ように動作を実行するようにプロセッサ実行可能命令で構成される、請求項31に記載のコンピューティングデバイス。
【請求項４４】
前記命令タイプの比率が、浮動小数点命令の比率、ベクトル命令の比率、およびメモリ命令の比率のうちの少なくとも1つを含む、請求項43に記載のコンピューティングデバイス。
【請求項４５】
前記プロセッサが、前記第1の処理コアの周波数を低減することが、
前記第1の処理コアに割り振られた前記スレッドの前記命令タイプの比率に基づいて、前記第1の処理コアに関する命令タイプの特性比率を決定することと、
前記決定された命令タイプの特性比率に基づいて、前記第1の処理コアの前記周波数を低減することと
をさらに含むように動作を実行するようにプロセッサ実行可能命令で構成される、請求項43に記載のコンピューティングデバイス。
【請求項４６】
プロセッサデバイス電力消費を管理するための動作をプロセッサに実行させるように構成されたプロセッサ実行可能ソフトウェア命令を記憶した非一時的コンピュータ可読記憶媒体であって、前記動作が、
複数の処理コアを含むプロセッサ内で実行するようにスケジュールされた複数のスレッドの各々に関するスレッド実行基準を決定することであって、前記スレッド実行基準が、キャッシュ内のデータの読取りまたは書込みの失敗した試みに基づく、プロセッサの待ち状態の数を含むキャッシュミス率を含む、決定することと、
前記複数のスレッドのうち、スレッド実行基準が第1のしきい値を満たすスレッドを前記複数の処理コアのうち第1の処理コアに割り振ることと、
前記第1の処理コアの電力消費を低減するために、前記第1の処理コアの周波数を低減することと
を含む、非一時的プロセッサ可読記憶媒体。
【請求項４７】
前記記憶されたプロセッサ実行可能ソフトウェア命令が、前記複数のスレッドのうち、スレッド実行基準が第1のしきい値を満たすスレッドを前記複数の処理コアのうち第1の処理コアに割り振ることが、
前記複数のスレッドのうち、スレッド実行基準が前記第1のしきい値を満たすスレッドを第1のグループに関連付けることと、
スレッドの前記第1のグループを前記第1の処理コアに割り振ることと
を含むように動作をプロセッサに実行させるように構成される、請求項46に記載の非一時的プロセッサ可読記憶媒体。
【請求項４８】
前記記憶されたプロセッサ実行可能ソフトウェア命令が、前記複数のスレッドのうち、スレッド実行基準が前記第1のしきい値を満たさないスレッドを前記複数の処理コアのうち第2の処理コアに割り振ることをさらに含む動作をプロセッサに実行させるように構成される、請求項46に記載の非一時的プロセッサ可読記憶媒体。
【請求項４９】
前記複数のスレッドのうち、スレッド実行基準が前記第1のしきい値を満たさないスレッドの処理率を増大するために、前記第2の処理コアの周波数を増大することをさらに含む、請求項48に記載の非一時的プロセッサ可読記憶媒体。
【請求項５０】
スレッド実行基準が前記第1のしきい値を満たさないスレッドを前記複数の処理コアのうち第2の処理コアに割り振ることが、
前記複数のスレッドのうち、スレッド実行基準が前記第1のしきい値を満たさないスレッドを第2のグループに関連付けることと、
前記第2のグループを前記第2の処理コアに割り振ることと
を含む、請求項48に記載の非一時的プロセッサ可読記憶媒体。
【請求項５１】
前記記憶されたプロセッサ実行可能命令が、
スレッド実行基準が第2のしきい値を満たすが、前記第1のしきい値を満たさないスレッドを前記複数の処理コアのうち第3の処理コアに割り振ることと
前記第3の処理コアの周波数を前記第1の処理コアの前記周波数と前記第2の処理コアの前記周波数との間の周波数に調整することと
をさらに含む動作をプロセッサに実行させるように構成される、請求項49に記載の非一時的プロセッサ可読記憶媒体。
【請求項５２】
前記記憶されたプロセッサ実行可能ソフトウェア命令が、
前記第1のしきい値がキャッシュミス率のしきい値を含む
ように動作をプロセッサに実行させるように構成される、請求項46に記載の非一時的プロセッサ可読記憶媒体。
【請求項５３】
前記記憶されたプロセッサ実行可能ソフトウェア命令が、前記第1の処理コアの周波数を低減することが、
前記第1の処理コアに割り振られた前記スレッドの前記キャッシュミス率に基づいて、前記第1の処理コアに関する特性キャッシュミス率を決定することと、
前記決定された特性キャッシュミス率に基づいて、前記第1の処理コアの前記周波数を低減することと
をさらに含むように動作をプロセッサに実行させるように構成される、請求項46に記載の非一時的プロセッサ可読記憶媒体。
【請求項５４】
前記特性キャッシュミス率が、前記第1の処理コアに割り振られた前記スレッドの平均キャッシュミス率、前記第1の処理コアに割り振られた前記スレッドの算術平均キャッシュミス率、前記第1の処理コアに割り振られた前記スレッドの前記算術平均キャッシュミス率からの標準偏差、および前記第1の処理コアに割り振られた前記スレッドの総キャッシュミス率のうちの1つを含む、請求項53に記載の非一時的プロセッサ可読記憶媒体。
【請求項５５】
前記記憶されたプロセッサ実行可能ソフトウェア命令が、
前記スレッド実行基準が同期動作率を含み、
前記第1のしきい値が同期動作率のしきい値を含む
ように動作をプロセッサに実行させるように構成される、請求項46に記載の非一時的プロセッサ可読記憶媒体。
【請求項５６】
前記記憶されたプロセッサ実行可能ソフトウェア命令が、同期動作率が、スピンロックの数、要求された共有リソースを待つ時間期間、ロック命令の数、および同期命令実行率のうちの少なくとも1つを含むように動作をプロセッサに実行させるように構成される、請求項55に記載の非一時的プロセッサ可読記憶媒体。
【請求項５７】
前記記憶されたプロセッサ実行可能ソフトウェア命令が、前記第1の処理コアの周波数を低減することが、
前記第1の処理コアに割り振られた前記スレッドの前記同期動作率に基づいて、前記第1の処理コアに関する特性同期動作率を決定することと、
前記決定された特性同期動作率に基づいて、前記第1の処理コアの前記周波数を低減することと
をさらに含むように動作をプロセッサに実行させるように構成される、請求項55に記載の非一時的プロセッサ可読記憶媒体。
【請求項５８】
前記記憶されたプロセッサ実行可能ソフトウェア命令が、
前記スレッド実行基準が命令タイプの比率を含み、
前記第1のしきい値が命令タイプの比率のしきい値を含む
ように動作をプロセッサに実行させるように構成される、請求項46に記載の非一時的プロセッサ可読記憶媒体。
【請求項５９】
前記命令タイプの比率が、浮動小数点命令の比率、ベクトル命令の比率、およびメモリ命令の比率のうちの少なくとも1つを含む、請求項58に記載の非一時的プロセッサ可読記憶媒体。
【請求項６０】
前記第1の処理コアの周波数を低減することが、
前記第1の処理コアに割り振られた前記スレッドの前記命令タイプの比率に基づいて、前記第1の処理コアに関する命令タイプの特性比率を決定することと、
前記決定された命令タイプの特性比率に基づいて、前記第1の処理コアの前記周波数を低減することと
をさらに含む、請求項58に記載の非一時的プロセッサ可読記憶媒体。
【国際調査報告】
2017526996.tif 000012
2017526996.tif 000013
2017526996.tif 000014
2017526996.tif 000015
2017526996.tif 000016