(57)【要約】電力管理アルゴリズムフレームワークは、１）スループットベースのワークロードのサービス品質（ＱｏＳ）メトリックと、２）スループットとレイテンシセンシティブなワークロードとを区別するためのヒューリスティックと、３）ヒューリスティックとＱｏＳメトリックとを組み合わせて、アイドル時間を最小限に抑え、パフォーマンスを低下させることなく電力効率を向上させるためのターゲット周波数を決定するアルゴリズムと、を提案する。管理アルゴリズムフレームワークによって、サーバクラスのスループットベースのワークロードにおける電力効率を最適化しながら、レイテンシセンシティブなワークロードに対して望ましいパフォーマンスを提供することが可能になる。パフォーマンスを大幅に低下させることなく、１つ以上のコアをより低い周波数で（したがって、より低い電力で）実行可能なワークロードを識別することによって、電力の節約を実現することができる。【選択図】図１
2020524336.tif 000002
【特許請求の範囲】
【請求項１】
コンピューティングデバイスの電力効率を最適化する方法であって、
前記コンピューティングデバイスによって、前記コンピューティングデバイス内の１つ以上の処理コアからの処理コアアクティビティデータに基づいて、前記１つ以上の処理コアの処理コアアクティビティ偏差データを決定することと、
前記コンピューティングデバイスによって、前記処理コアアクティビティ偏差データに基づいて、前記コンピューティングデバイス内の前記１つ以上の処理コアのうち少なくとも１つの処理コアの周波数を調整することと、を含む、
方法。
【請求項２】
前記コンピューティングデバイスによって、前記処理コアアクティビティ偏差データが前記１つ以上の処理コアの均一なワークロードを示しているかどうかを判別することと、
前記処理コアアクティビティ偏差データが前記１つ以上の処理コアの均一なワークロードを示していると判別したことに応じて、前記コンピューティングデバイスによって、前記１つ以上の処理コアのうち少なくとも１つの処理コアの周波数を低下させることと、をさらに含む、
請求項１の方法。
【請求項３】
前記処理コアアクティビティ偏差データを決定することは、
前記コンピューティングデバイスによって、前記１つ以上の処理コアのうちアクティブな処理コアの数を決定することと、
前記コンピューティングデバイスによって、前記１つ以上の処理コアのうちアクティブになる処理コアの予想数を決定することと、
前記コンピューティングデバイスによって、前記１つ以上の処理コアのうちアクティブな処理コアの数と、前記１つ以上の処理コアのうちアクティブになる処理コアの予想数との間のアクティビティ偏差を決定することと、を含む、
請求項１の方法。
【請求項４】
前記１つ以上の処理コアのうちアクティブな処理コアの数を決定することは、前記１つ以上の処理コアの処理コアアクティビティレベルに基づいている、
請求項３の方法。
【請求項５】
前記１つ以上の処理コアのうちアクティブになる処理コアの予想数を決定することは、前記１つ以上の処理コアの数と、前記１つ以上の処理コアの処理コアアクティビティレベルと、を考慮する二項分布に基づいている、
請求項４の方法。
【請求項６】
前のインターバルにおける処理コア内のアクティブサイクルの割合が閾値よりも高い場合に、前記処理コアがアクティブであると判別される、
請求項３の方法。
【請求項７】
前記前のインターバルは、移動平均ウィンドウに基づいている、
請求項６の方法。
【請求項８】
前記処理コアアクティビティ偏差データを決定することは、前記１つ以上の処理コアの現在のサービス品質（ＱｏＳ）がターゲットＱｏＳからどれだけ偏差しているかを決定することを含む、
請求項２の方法。
【請求項９】
複数の処理コアと、
前記複数の処理コアに接続された処理コア周波数調整ロジックと、
を備えるシステムオンチップであって、
前記処理コア周波数調整ロジックは、
前記複数の処理コアからの処理コアアクティビティデータに基づいて、前記複数の処理コアの処理コアアクティビティ偏差データを決定することと、
決定された前記処理コアアクティビティ偏差データに基づいて、前記複数の処理コアのうち少なくとも１つの処理コアの周波数を調整することと、
を行うように構成されている、
システムオンチップ。
【請求項１０】
前記処理コア周波数調整ロジックは、
前記処理コアアクティビティ偏差データが前記複数の処理コアの均一なワークロードを示しているかどうかを判別することと、
前記処理コアアクティビティ偏差データが前記複数の処理コアの均一なワークロードを示していると判別したことに応じて、前記複数の処理コアのうち少なくとも１つの処理コアの周波数を低下させることと、
をさらに行うように構成されている、
請求項９のシステムオンチップ。
【請求項１１】
前記処理コア周波数調整ロジックは、
前記複数の処理コアのうちアクティブな処理コアの数を決定することと、
前記複数の処理コアのうちアクティブになる処理コアの予想数を決定することと、
前記複数の処理コアのうちアクティブな処理コアの数と、前記複数の処理コアのうちアクティブになる処理コアの予想数との間のアクティビティ偏差を決定することと、
によって前記処理コアアクティビティ偏差データを決定するように構成されている、
請求項９のシステムオンチップ。
【請求項１２】
前記複数の処理コアのうちアクティブな処理コアの数を決定することは、前記複数の処理コアの処理コアアクティビティレベルに基づいている、
請求項１１のシステムオンチップ。
【請求項１３】
前記複数の処理コアのうちアクティブになる処理コアの予想数を決定することは、前記複数の処理コアの数と、前記複数の処理コアの処理コアアクティビティレベルと、を考慮する二項分布に基づいている、
請求項１２のシステムオンチップ。
【請求項１４】
前のインターバルにおける処理コア内のアクティブサイクルの割合が閾値よりも高い場合に、前記処理コアがアクティブである判別される、
請求項１１のシステムオンチップ。
【請求項１５】
前記前のインターバルは、移動平均ウィンドウに基づいている、
請求項１４のシステムオンチップ。
【請求項１６】
前記処理コア周波数調整ロジックは、前記複数の処理コアの現在のサービス品質（ＱｏＳ）がターゲットＱｏＳからどれだけ偏差しているかを決定することによって、前記処理コアアクティビティ偏差データを決定するように構成されている、
請求項１０のシステムオンチップ。
【請求項１７】
複数の処理コアと、
ネットワークインタフェースと、
前記複数の処理コアと前記ネットワークインタフェースとに接続された処理コア周波数調整ロジックと、
を備えるサーバであって、
前記処理コア周波数調整ロジックは、
前記複数の処理コアからの処理コアアクティビティデータに基づいて、前記複数の処理コアの処理コアアクティビティ偏差データを決定することと、
決定された前記処理コアアクティビティ偏差データに基づいて、前記複数の処理コアのうち少なくとも１つの処理コアの周波数を調整することと、
を行うように構成されている、
サーバ。
【請求項１８】
前記処理コア周波数調整ロジックは、
前記処理コアアクティビティ偏差データが、前記複数の処理コアの均一なワークロードを示しているかどうかを判別することと、
前記処理コアアクティビティ偏差データが前記複数の処理コアの均一なワークロードを示していると判別したことに応じて、前記複数の処理コアのうち少なくとも１つの処理コアの周波数を低下させることと、
をさらに行うように構成されている、
請求項１７のサーバ。
【請求項１９】
前記処理コア周波数調整ロジックは、
前記複数の処理コアのうちアクティブな処理コアの数を決定することと、
前記複数の処理コアのうちアクティブになる処理コアの予想数を決定することと、
前記複数の処理コアのうちアクティブな処理コアの数と、前記複数の処理コアのうちアクティブになる処理コアの予想数との間のアクティビティ偏差を決定することと、
によって前記処理コアアクティビティ偏差データを決定するように構成されている、
請求項１８のサーバ。
【請求項２０】
前のインターバルにおける処理コア内のアクティブサイクルの割合が閾値よりも高い場合に、前記処理コアがアクティブであると判別され、
前記前のインターバルは、移動平均ウィンドウに基づいている、
請求項１９のサーバ。
【発明の詳細な説明】
【技術分野】
【０００１】
（関連出願の相互参照）
本願は、Ｌｅｏｎａｒｄｏ  Ｄｅ  Ｐａｕｌａ  Ｒｏｓａ  Ｐｉｇａ等が発明者であり「ＰＯＷＥＲ  ＥＦＦＩＣＩＥＮＣＹ  ＯＦ  ＯＰＴＩＭＩＺＡＴＩＯＮ  ＩＮ  ＴＨＲＯＵＧＨＰＵＴ−ＢＡＳＥＤ  ＷＯＲＫＬＯＡＤＳ」という名称の２０１７年６月１９日に出願された仮出願第６２／５２２,０７３号の優先権を主張し、引用することによって本明細書に援用される。
【背景技術】
【０００２】
多くのサーバのワークロードは、様々な負荷分散技術を使用して、一定の作業量で安定した均一な負荷動作を示す。これらのワークロードは、通常、レイテンシクリティカルではなく、データ依存のスレッドもない。つまり、個々の要求を処理する時間は、平均スループットが一定に保たれている限り重要ではない。システムオンチップ（ＳｏＣ）の電力管理アルゴリズムは、これらのスループットベースのワークロードを識別して、パフォーマンスを低下させることなくアイドル時間を最小化するために周波数を下げ、これにより最適な電力効率を実現する必要がある。既存の電力管理アルゴリズムは、個々の命令プロセッサ（例えば、シングルプロセッサ等）の動作を調べるか、ＳｏＣとワークロードとの間の相互作用をモデル化するためのアドホックなソリューションを含んでいるため、スループット及びレイテンシクリティカルなワークロードを区別できず、結果として最適とは言えない動作ポイントになっている。
【０００３】
例えば、ローカルな最適化アルゴリズムの集合が、特定のサービス品質（ＱｏＳ）をターゲットとするグローバルに最適な動作状態を達成する可能性は低い。それどころか、このソリューションでは、パフォーマンス及び電力効率の低下につながるであろう。したがって、ＳｏＣが益々複雑になるにつれて、ＳｏＣとワークロードとの相互作用を理解し、グローバルなＱｏＳ目標に向けた最適化を行いながら、スケーラブルな方法で電力を管理することが重要になっている。
【０００４】
本開示は、以下の図面が添付された場合に、以下の説明を考慮してより容易に理解されるであろう。ここで、同様の符号は同様の要素を表す。
【図面の簡単な説明】
【０００５】
【図１】本開示で説明する一例による、１つ以上の処理コアの周波数を調整することができる処理コア周波数調整ロジックを含む、例えばサーバ等の例示的なコンピューティングデバイスを示す機能ブロック図である。
【図２】本開示で説明する一例による、図１の処理コア周波数調整ロジックのより詳細な機能ブロック図である。
【図３】本開示で説明する一例による、単一の処理コアのＣＰＵアクティビティのプロットを示す図である。
【図４】本開示で説明する一例による、ワークロードの実行に対するＱｏＳを測定するための例示的な方法のフローチャートである。
【発明を実施するための形態】
【０００６】
簡潔に言えば、方法及び装置は、スループットベースのワークロードにおける電力効率の最適化を提供する。一例では、コンピューティングデバイスの電力効率を最適化する方法が説明されている。コンピューティングデバイスは、例えばサーバであってもよい。コンピューティングデバイスは、処理コアからの処理コアアクティビティデータに基づいて、コンピューティングデバイス内の処理コア（例えば、ＣＰＵ、ＧＰＵ等）の処理コアアクティビティ偏差データ（processing core activity deviation data）を決定する。コンピューティングデバイスは、処理コアアクティビティ偏差データに基づいて、コンピューティングデバイス内の少なくとも１つの処理コアの周波数を調整する。
【０００７】
コンピューティングデバイスは、処理コアアクティビティ偏差データが処理コアの均一なワークロードを示すかどうかを判別する。処理コアアクティビティ偏差データが処理コアの均一なワークロードを示していると判別したことに応じて、コンピューティングデバイスは、少なくとも１つの処理コアの周波数を低下させる。
【０００８】
処理コアアクティビティ偏差データを決定する際に、コンピューティングデバイスは、アクティブな処理コアの数と、アクティブになる処理コアの予想数と、を決定する。次に、コンピューティングデバイスは、アクティブな処理コアの数と、アクティブになる処理コアの予想数との間のアクティビティ偏差を決定する。
【０００９】
アクティブな処理コアの数の決定は、処理コアの処理コアアクティビティレベルに基づいている。アクティブになる処理コアの予想数の決定は、処理コアの数と処理コアの処理コアアクティビティレベルとを考慮した二項分布に基づいている。前のインターバル（移動平均ウィンドウに基づいている）における処理コアのアクティブサイクルの割合が閾値よりも高い場合、処理コアはアクティブであると判別される。処理コアアクティビティ偏差データを決定する場合、コンピューティングデバイスは、処理コアの現在のＱｏＳがターゲットＱｏＳからどの程度偏差しているかを決定する。
【００１０】
一例では、システムオンチップ又はＳｏＣは、複数の処理コアと、複数の処理コアに接続された処理コア周波数調整ロジックと、を含む。処理コア周波数調整ロジックは、複数の処理コアからの処理コアアクティビティデータに基づいて、複数の処理コアの処理コアアクティビティ偏差データを決定し、決定された処理コアアクティビティ偏差データに基づいて、複数の処理コアのうち少なくとも１つ処理コアの周波数を調整する。
【００１１】
別の例では、サーバは、複数の処理コアと、ネットワークインタフェースと、複数の処理コアとネットワークインタフェースとに接続された処理コア周波数調整ロジックと、を含む。処理コア周波数調整ロジックは、複数の処理コアからの処理コアアクティビティデータに基づいて、複数の処理コアの処理コアアクティビティ偏差データを決定し、決定された処理コアアクティビティ偏差データに基づいて、複数の処理コアのうち少なくとも１つの処理コアの周波数を調整する。
【００１２】
本開示は、１）スループットベースのワークロードのＱｏＳメトリック、２）スループットとレイテンシセンシティブなワークロードとを区別するためのヒューリスティック、及び、３）ヒューリスティックとＱｏＳメトリックとを組み合わせて、アイドル時間を最小限に抑え、パフォーマンスを低下させることなく電力効率を向上させるためのターゲット周波数を決定するアルゴリズム、を提案する電力管理アルゴリズムフレームワークについて説明する。
【００１３】
本開示は、サーバクラスのスループットベースのワークロードにおける電力効率の最適化を可能にする管理アルゴリズムフレームワークを提供すると同時に、レイテンシセンシティブなワークロードに対して所望のパフォーマンスを提供する。本開示の目的は、パフォーマンスに重大な悪影響を与えることなく、１つ以上の処理コアを低周波数（したがって、低電力）で実行できるワークロードを識別することにより、電力の節約を実現することである。この開示は、この種の技術を実際に実行可能にするために、少なくとも２つの問題（すなわち、１）パフォーマンスの周波数感度が低いワークロードをどのように識別するか、２）パフォーマンスが過度に低下する前に、周波数をどの程度安全に下げることができるか）に対処している。
【００１４】
本開示は、特に、１）各スレッドが、スレッドがレイテンシクリティカルであるデータ依存スレッドを有するワークロードから固定量の作業を行う、独立したスレッドを有する均一で安定したクラスのワークロードを区別し、及び、２）スループット指向のワークロードのアイドル時間を減らして電力効率を最適化する、ためのソリューションを提供する。
【００１５】
例えば、特定のＱｏＳアルゴリズムは、特定の「ターゲット中央処理装置（ＣＰＵ）アイドル率」（０％〜１００％）をパラメータとして取得し、ＣＰＵ周波数を変調してそのＱｏＳターゲットを達成する。ＣＰＵのアイドル状態（idleness）が閾値よりも高い場合、周波数が低くなり、その逆も同様である。スループットベースの負荷の場合、システムは、アイドル時間によって提供される全てのスラックを使用して、アイドル状態を０に低減することが望ましい。但し、実際には、システムは、ワークロードの動作のばらつきと、電源状態の変化の粒度と、を考慮する必要があるため、これは不可能である。したがって、ターゲットとなる実際のアイドル時間は、省電力とパフォーマンス低下との間のトレードオフのために最適化されるように、調整可能な構成パラメータとして残される。
【００１６】
システムのアイドル状態のＱｏＳメトリックは、次の式を使用して計算できる。
【数１】
2020524336.tif 000003
ここで、Ｎは、システム内の処理コアの総数であり、ｉｄｌｅ  ｃｙｃｌｅｓ  ｏｆ  Ｃｏｒｅ  ｉは、ｉ番目のコアの非Ｃ０（すなわち、ＣＣ１サイクル及びＣＣ６サイクル）の合計であり、ｔｏｔａｌ  ｃｙｃｌｅｓは、同期管理ユニット（ＳＭＵ）のサンプル時間（１ｍｓ）中の現在のＣＰＵ周波数でのＣＰＵサイクル（アクティブ及びアイドルの両方）の総数である。
【００１７】
このアルゴリズムでは、アプリケーションの動作についていくつかの仮定を行っている。
【００１８】
１）ワークロードは、純粋にスループットベースであり、個々の要求の処理レイテンシは、平均スループットが一定に保たれている限り、パフォーマンスにとって重要ではない。したがって、アクティブＣＰＵ時間とアイドルＣＰＵ時間とが交互に繰り返されるが、アクティブ期間がレイテンシクリティカルであるワークロードでは、ＱｏＳアルゴリズムはオンにならない。例えば、アイドル期間が入出力（Ｉ／Ｏ）の待機に費やされ、計算動作とＩ／Ｏ動作との間にデータ依存関係がある場合である。
【００１９】
２）アルゴリズムは、必ずしもコア毎に個別の制御を提案しているわけではない。むしろ、全ての処理コアに同じ周波数が適している均一な負荷を想定している。これは、通常、負荷分散を特徴とするサーバのワークロードの現実的な想定である。但し、このアルゴリズムは、例えば、スレッドの少ないクライアントワークロードではオンにすべきではなく、結果として、単一スレッドのパフォーマンスが低下する。
【００２０】
３）負荷レベルは、ＱｏＳアルゴリズムのフィードバック応答時間に対してゆっくり変化する程十分に安定している。例えば、周波数が、大幅に低い負荷で低アイドル時間をターゲットとして設定されている間に負荷が突然増加した場合、システムのパフォーマンスは、フィードバック応答を受信するまで低下する。
【００２１】
ＱｏＳアルゴリズムは、適切に機能するために特定の条件を必要とし、これらの条件が満たされていないアプリケーションでオンにされるとパフォーマンスが低下するリスクが生じるため、オンにするタイミングについて保守的なヒューリスティックが必要である。
【００２２】
レイテンシセンシティブなワークロードのスループットを区別するためのコアアクティビティ分散ヒューリスティック
【００２３】
スループットベースの均一で安定した負荷についてのさらなる観察は、特定の瞬間におけるアクティブな処理コアの数の分布が二項分布に密接に従うことである。アクティブなコアの数は、直前の短いインターバルでアクティブなサイクルの割合が高い閾値（例えば、９０％）を超えるものとして定義される。これは、このような負荷では、次の特性が観察されるためである。
【００２４】
１）負荷が時間的に安定しているため、単一の処理コアが異なる時間Ｔ１，Ｔ２でアクティブになる確率は、ほぼ等しくなる。例えば、負荷が６０％の場合、所定のコアは約６０％の時間アクティブになる。
【００２５】
２）負荷は均一でバランスがとれているため、全ての処理コアで確率が同じである。
【００２６】
３）所定の時点でアクティブな２つの処理コアの確率は修正されない。
【００２７】
したがって、次の式に示すように、所定の時点でＮ個の処理コアが観測される場合、アクティブな処理コアの予想数は、Ｎ回の試行と、アクティビティレベルに等しい確率Ａとによる二項分布で与えられる。
【数２】
2020524336.tif 000004
【００２８】
例えば、アクティビティレベルが６０％で、ワークロードが４つの処理コアで実行されている場合、
【数３】
2020524336.tif 000005
すなわち、約３４．６％に等しい時間の一部で正確に３つの処理コアがアクティブになると予想される。
【００２９】
アクティブな処理コアの数の実際の分布を測定し、理論上の二項分布と比較することにより（Ｎが処理コアの数であり、Ａが測定時間インターバルにおいて測定された平均アクティビティレベルである場合）、アイドル状態のＱｏＳのターゲットとなるタイプからアプリケーションがどの程度偏差しているかを推定することができる。具体的には、この測定は、次をキャプチャする。
【００３０】
１）特定の処理コアに偏った分布を生じさせる、安定し均一でバランスのとれた負荷からの偏差。
【００３１】
２）個々の作業単位が修正されない純粋なスループットベースの負荷からの偏差。
【００３２】
ワークロードが安定し均一であることのみを測定することに関して価値を付加するのは、特性２）である。例えば、ＣＰＵに完全にバインドされた単一スレッドを伴うワークロードがＣＰＵアフィニティなしで実行され、その結果、ラウンドロビン方式でＮ個の処理コアに亘ってスケジュールされる場合を考える。このワークロードは、安定して均一に見え、各処理コアは、１／Ｎの時間アクティブになる。但し、アイドル状態のＱｏＳを有効にすると、スループットベースではなく、ＣＰＵで実行される各タイムスライスが以前のタイムスライスに依存するため、パフォーマンスが低下する。
【００３３】
このケースは、２項分布ヒューリスティックによって正常に識別される。これは、正確に１つの処理コアが１００％の時間アクティブであること（Ａ＝１／Ｎによる２項分布ではなく）が分布により示されるためである。これは簡単な例であるが、ＣＰＵ周波数を下げるとクリティカルパスが拡張してパフォーマンスが低下するような、一連の依存する計算を提示する任意の種類のワークロードでは、個々の処理コアがアクティブな時間が相関しているため、分布が二項分布から偏差することを、同様の推論が示している。
【００３４】
ＱｏＳオン／オフアルゴリズム
【００３５】
パフォーマンスの低下を回避するには、前のセクションで説明した特性を持つワークロードに対してのみアルゴリズムをオンにする必要がある。このアプローチは、均一な（負荷分散）スループットベースのアプリケーションで観察される特定の規則性が、他のアプリケーションタイプでは観察されないという仮定に基づいている。具体的には、アルゴリズムは、次の条件が観察されるとＱｏＳをオンにする。
【００３６】
１）各処理コアには、数十秒のスケールで一定期間、安定した平均負荷がかかる。
【００３７】
２）全ての処理コアは、ほぼ同じ平均負荷でビジー状態になる。
【００３８】
３）処理コアアクティビティの分布は、二項分布に近似している。
【００３９】
安定した負荷レベルに必要な長い時間スケールは、より短い時間スケールでは、実際には多くの変動が観察されるからである。例えば、サーバの電力とパフォーマンスの特性とを測定するベンチマークプログラム（例えば、ＳＰＥＣ（Standard Performance Evaluation Corporation）が提供するＳｐｅｃＰｏｗｅｒ（登録商標）ベンチマーク等）からのアクティビティ図を検討する。アクティブなインターバルの長さが数ミリ秒から数百ミリ秒の間で変動するため、僅か１〜２秒のインターバルであっても、アクティブな時間とアイドル時間との比較に含まれるランダムな変動が依然として大きくなる可能性がある。
【００４０】
これにより、数分のスケールで安定した負荷レベルを示すワークロードに対してこの技術が効果的になる。これは、数分間の安定したスロットル負荷レベルを測定し、測定開始前に所定のレベルの各々で長いウォームアップインターバルを備えていることが特徴である、典型的なサーバベンチマーク（ＳＰＥＣが提供するＳｐｅｃＰｏｗｅｒ（登録商標）又はＳＥＲＴ（商標）ベンチマーク等）に当てはまる。
【００４１】
安定した平均負荷を検出するには、アクティビティの移動平均を使用できるが、サンプリングの時間分解能（１ｍｓ）を考慮すると、大量のメモリが必要になる。したがって、代わりに１秒のスケールでの通常の平均の計算を使用でき、これらの移動平均ウィンドウを使用することができる。基本的な平均インターバルのサイズ（１秒）、移動平均ウィンドウ（数十秒）、安定したワークロードの時間閾値（数十秒）、及び、許容される変動（単一の処理コア内、処理コア間、及び、二項分布からの発散）は、全て調整可能なパラメータである。同様に、これらの条件が適用されなくなり、処理コア内及び処理コア間の負荷変動（同じ方法で計算）が所定の閾値を超える場合、アルゴリズムが使用されない。
【００４２】
図面を参照すると、本開示のコンピューティングデバイス１０２の一例が図１に示されている。コンピューティングデバイス１０２は、例えば、サーバ、又は、任意の他の適切なデバイスであってもよい。コンピューティングデバイス１０２は、データセンタの一部、又は、クラウドベース（例えば、クラウドコンピューティング）システム等の分散システムの一部であってもよい。
【００４３】
図１に示すように、コンピューティングデバイス１０２は、処理コア周波数調整ロジック１０４を含む。また、コンピューティングデバイス１０２は、上述したアルゴリズムに関連するパラメータ等のパラメータを記憶するのに使用可能なＲＡＭ、ＲＯＭ又は他の適切なメモリ等のメモリ１０６を含む。メモリ１０６は、以下にさらに説明するように、処理コア周波数調整ロジック１０４によってアクセス及び実行される実行可能命令を記憶することもできる。
【００４４】
コンピューティングデバイス１０２は、処理コア１  １２２と、処理コア２  １２６と、処理コア３  １２４と、処理コアＮ  １２８と、を含む。当業者によって認識されるように、処理コアの数は異なっていてもよい。処理コア１２２，１２４，１２６，１２８は、例えば、ＣＰＵ、加速処理ユニット（ＡＰＵ）又はグラフィックス処理ユニット（ＧＰＵ）に関連付けられた処理コアとすることができる。また、処理コア１２２，１２４，１２６，１２８は、ＳｏＣ  １１２の一部であってもよい。他の例では、ＳｏＣ  １１２は、異種ＳｏＣ、ＡＰＵ、ｄＧＰＵ、ＣＰＵ、又は、セミカスタムＳｏＣであってもよい。さらに、図示されていないが、コンピューティングデバイス１０２は、追加の処理コアを備えた追加のＳｏＣを含むことができる。
【００４５】
コンピューティングデバイス１０２は、例えば、ディスプレイ、キーパッド、キーボード、又は、他の適切なＩ／Ｏデバイス等を含むことができるＩ／Ｏデバイス１０８を含む。また、コンピューティングデバイス１０２は、１つ以上のネットワークと通信するための１つ以上のネットワークインタフェース１１０を含む。例えば、ネットワークインタフェース１１０は、例えば、複数のデバイス（例えば、イーサネット（登録商標）、ＷｉＦｉ（登録商標）、ＷＡＮ、インターネット）間の通信を可能にする任意の適切なネットワークとの通信をサポートすることができる。
【００４６】
図１に示すように、処理コア周波数調整ロジック１０４、処理コア１２２，１２４，１２６，１２８、メモリ１０６、Ｉ／Ｏデバイス１０８及びネットワークインタフェース１１０の各々は、バス１１４に接続されている。バス１１４は、デバイスが互いに通信するのを可能にする有線又は無線バス等の任意の適切なバスであってもよい。
【００４７】
いくつかの実施形態では、コンピューティングデバイス１０２の機能の一部又は全ては、例えば、ソフトウェアドライバ、ファームウェア、又は、メモリに記憶された他の適切な実行可能コードを実行することができる任意の適切なプロセッサによって実行されてもよい。例えば、処理コア周波数調整ロジック１０４の機能の一部又は全ては、任意の適切な処理コアによって実行されてもよい。一例では、処理コア周波数調整ロジック１０４は、メモリ１０６から実行可能な命令を読み出して実行する。いくつかの実施形態では、処理コア周波数調整ロジック１０４は、ＣＰＵ、ＡＰＵ、ＧＰＵ、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、特定用途向け集積回路（ＡＳＩＣ）、１つ以上の状態機械として又は任意の適切なロジック及び／若しくはハードウェアとソフトウェアとの適切な組み合わせとしてのマイクロコントローラ、又は、任意の他の適切な命令処理デバイスであってもよい。
【００４８】
処理コア周波数調整ロジック１０４を備えたコンピューティングデバイス１０２は、例えば、図２に関して以下に説明するように、１つ以上の処理コア１２２，１２４，１２６，１２８の周波数を調整する。一例では、処理コア周波数調整ロジック１０４を備えたコンピューティングデバイス１０２は、追加的又は代替的に、例えばリモートサーバ等の別のコンピューティングデバイスに関連する処理コアの周波数を調整することができる。例えば、コンピューティングデバイス１０２は、１つ以上のネットワークを介してリモートサーバと通信することができる。
【００４９】
図２は、図１の処理コア周波数調整ロジック１０４のより詳細な機能ブロック図である。図２に示すように、処理コア周波数調整ロジック１０４は、処理コアアクティビティ決定ロジック２０２と、処理コアワークロード感度決定ロジック２０４と、処理コア周波数決定ロジック２０６と、を含む。
【００５０】
処理コアアクティビティ決定ロジック２０２は、例えば、図１の処理コア１２２，１２４，１２６，１２８等の１つ以上の処理コアから処理コアアクティビティデータ２１２を取得（例えば、受信）する。処理コアアクティビティデータ２１２は、特定の処理コアがアクティブ（例えば、ワークロードを実行している）であるかアイドルであるかを示すデータを含むことができる。処理コアアクティビティ決定ロジック２０２は、処理コアアクティビティデータ２１２に基づいて、処理コアの処理コアアクティビティレベルを決定する。処理コアのアクティビティレベルは、例えば、一定期間のプロセッサアクティビティの割合を示す。一例では、処理コアアクティビティ決定ロジック２０２は、上記の式１を含むアルゴリズムを実行する。処理コアアクティビティ決定ロジック２０２は、処理コアアクティビティレベルを処理コアアクティビティレベルデータ２１０として処理コアワークロード感度決定ロジック２０４に提供する。
【００５１】
処理コアワークロード感度決定ロジック２０４は、１つ以上の処理コアの現在のＱｏＳがターゲットＱｏＳからどれだけ偏差しているかを決定する。例えば、処理コアワークロード感度決定ロジック２０４は、処理コアアクティビティレベルデータ２１０に基づいて、アクティブな処理コアの数を決定する。例えば、処理コアワークロード感度決定ロジック２０４は、先行する短いインターバルのアクティブサイクルの割合が高い閾値（例えば、９０％）を超える場合、処理コアがアクティブであると決定することができる。処理コアワークロード感度決定ロジック２０４は、例えば、上記の式２を含むアルゴリズムの実行に基づいて、アクティブなコアの予想数も決定する。次に、処理コアワークロード感度決定ロジック２０４は、例えば上記のように、アクティブな処理コアの数とアクティブになる処理コアの予想数との間のアクティビティ偏差を決定し、アクティビティ偏差を、処理コアアクティビティ偏差データ２０８として処理コア周波数決定ロジック２０６に提供する。
【００５２】
次に、処理コア周波数決定ロジック２０６は、処理コアアクティビティ偏差データ２０８に基づいて、１つ以上の処理コアの周波数を調整する。例えば、処理コア周波数決定ロジック２０６は、図１の処理コア１２２，１２４，１２６，１２８のうち１つ以上の処理コアの周波数を、処理コア周波数調整データ２１４を介して調整（例えば、増加又は減少）することができる。
【００５３】
本明細書で開示される例示的なアルゴリズムの動作を説明するために、図３では、ワークロードが５０％の負荷レベルであるベンチマークプログラム（ＳＰＥＣが提供するＳｐｅｃＰｏｗｅｒ（登録商標）ベンチマーク等）を実行しているシステムにおける単一コアのＣＰＵアクティビティのプロットを示している。図３では、分かり易くするために１つの処理コアのみを示しているが、負荷は均一であり、他の処理コアでも同様に見え得る。図３の各点は、２秒間の合計期間において、１ミリ秒のサンプルにおけるアクティブ（つまり、Ｃ０）サイクルの割合をプロットしたものを示している。図３から、このワークロードは、要求が処理されている間、ＣＰＵを完全にビジー状態に保っており、これにより、Ｃ０アクティビティが１００％の期間とアイドル期間とが交互に現れていることが明らかである。この場合、時間の約５０％がアイドル状態であり、ベンチマークにおけるこのフェーズの負荷レベルを反映している。ベンチマークプログラム（ＳＰＥＣが提供するＳｐｅｃＰｏｗｅｒ（登録商標）ベンチマーク等）は、システムの最大スループットを測定することによって負荷を制御し、さらに、負荷に応じて消費電力がどのように増減するかを測定するために、要求の割合を０％から１００％の間で調整する。
【００５４】
このようなスループットベースの負荷の場合には、処理コアの使用率が１００％を大幅に下回るので、同じスループットを維持しながら処理コアの速度を低下させることができ、これにより、アイドル時間の割合を下げることができる。これが、アイドル時間ＱｏＳアルゴリズムの基礎である。
【００５５】
図４は、本開示で説明する一例による、ワークロードを実行するためのＱｏＳを測定する例示的な方法のフローチャート４００を提供する。図４に示す方法、及び、本明細書で説明する例示的な方法の各々は、コンピューティングデバイス１０２によって実行されてもよい。したがって、方法は、ハードウェアによって実行されてもよいし、ハードウェアとハードウェアが実行するソフトウェアとの組み合わせによって実行されてもよい。適切なハードウェアには、１つ以上のＧＰＵ、ＣＰＵ、ＡＰＵ、ＡＳＩＣ、状態機械、ＦＰＧＡ、デジタル信号プロセッサ（ＤＳＰ）、又は、他の適切なハードウェアが含まれてもよい。方法は、（例えば、図４において）図示したフローチャートを参照して説明されているが、この方法に関連する動作を実行する他の多くの方法を使用することができることが理解されるであろう。例えば、一部の動作の順序は変更されてもよいし、説明する一部の動作はオプションであってもよい。また、方法は、例示的なコンピューティングデバイス１０２を参照して説明することができるが、他の装置によっても実施することができ、コンピューティングデバイス１０２は他の方法を実施することができることが理解されよう。
【００５６】
図４に示すように、ブロック４０２において、基本入出力システム（ＢＩＯＳ）設定は、ＱｏＳが有効であるか否かを判別する。ＱｏＳが有効である場合、ブロック４０８において、ワークロード検出ループが開始される。この方法は、ブロック４０６から開始タイミングパラメータを取得することを含む。そうでない場合、この機能は、ブロック４０４において無効化される。ブロック４１０においてワークロードが検出されると、方法は、ブロック４１２に進み、そこでＱｏＳループが開始される。ブロック４１４において、ＱｏＳループが実行され、実行中のワークロードのＱｏＳが測定される。この方法は、ブロック４１６から、アイドル時間ターゲットパラメータを取得することを含む。ブロック４１８において、ワークロードが終了したか否かについての判別が行われる。この方法は、ブロック４２０から、終了タイミングパラメータを取得することも含む。ワークロードが終了した場合、方法は、ブロック４１０に戻る。そうでない場合、ＱｏＳループは、ブロック４１４における実行を継続する。ブロック４１４において、この方法は、電力状態制限信号を提供して、電力状態の変更を１つ以上の処理コアに提供する。一例では、開始タイミングパラメータ、アイドル時間ターゲットパラメータ及び終了タイミングパラメータのうち１つ以上が、図１のメモリ１０６等のメモリから取得される。
【００５７】
上記の詳細な説明及びそこに記載されている例は、例示及び説明のみを目的として提示されたものであり、限定することを目的とするものではない。例えば、説明した動作を、任意の適切な方法で行うことができる。したがって、本実施形態は、上記で開示され、本明細書で請求される基本的な基礎原理の範囲に含まれるあらゆる変更、変形又は均等物を包含することを意図している。さらに、上記の説明では、コードを実行するプロセッサの形態でのハードウェア、状態機械の形態でのハードウェア、又は、同様の効果を奏する専用ロジックの形態のハードウェアについて説明しているが、他の構造も考えられる。
【図１】
2020524336.tif 000006
【図２】
2020524336.tif 000007
【図３】
2020524336.tif 000008
【図４】
2020524336.tif 000009
【手続補正書】
【提出日】令和2年3月25日(2020.3.25)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
コンピューティングデバイスの電力効率を最適化する方法であって、
前記コンピューティングデバイスによって、前記コンピューティングデバイス内の１つ以上の処理コアからの処理コアアクティビティデータに基づいて、前記１つ以上の処理コアの処理コアアクティビティ偏差データを決定することと、
前記コンピューティングデバイスによって、前記処理コアアクティビティ偏差データに基づいて、前記コンピューティングデバイス内の前記１つ以上の処理コアのうち少なくとも１つの処理コアの周波数を調整することと、を含む、
方法。
【請求項２】
前記コンピューティングデバイスによって、前記処理コアアクティビティ偏差データが前記１つ以上の処理コアの均一なワークロードを示しているかどうかを判別することと、
前記処理コアアクティビティ偏差データが前記１つ以上の処理コアの均一なワークロードを示していると判別したことに応じて、前記コンピューティングデバイスによって、前記１つ以上の処理コアのうち少なくとも１つの処理コアの周波数を低下させることと、をさらに含む、
請求項１の方法。
【請求項３】
前記処理コアアクティビティ偏差データを決定することは、
前記コンピューティングデバイスによって、前記１つ以上の処理コアのうちアクティブな処理コアの数を決定することと、
前記コンピューティングデバイスによって、前記１つ以上の処理コアのうちアクティブになる処理コアの予想数を決定することと、
前記コンピューティングデバイスによって、前記１つ以上の処理コアのうちアクティブな処理コアの数と、前記１つ以上の処理コアのうちアクティブになる処理コアの予想数との間のアクティビティ偏差を決定することと、を含む、
請求項１の方法。
【請求項４】
前のインターバルにおける処理コア内のアクティブサイクルの割合が閾値よりも高い場合に、前記処理コアがアクティブであると判別される、
請求項３の方法。
【請求項５】
複数の処理コアと、
前記複数の処理コアに接続された処理コア周波数調整ロジックと、
を備えるシステムオンチップであって、
前記処理コア周波数調整ロジックは、
前記複数の処理コアからの処理コアアクティビティデータに基づいて、前記複数の処理コアの処理コアアクティビティ偏差データを決定することと、
決定された前記処理コアアクティビティ偏差データに基づいて、前記複数の処理コアのうち少なくとも１つの処理コアの周波数を調整することと、
を行うように構成されている、
システムオンチップ。
【請求項６】
前記処理コア周波数調整ロジックは、
前記処理コアアクティビティ偏差データが前記複数の処理コアの均一なワークロードを示しているかどうかを判別することと、
前記処理コアアクティビティ偏差データが前記複数の処理コアの均一なワークロードを示していると判別したことに応じて、前記複数の処理コアのうち少なくとも１つの処理コアの周波数を低下させることと、
をさらに行うように構成されている、
請求項５のシステムオンチップ。
【請求項７】
前記処理コア周波数調整ロジックは、
前記複数の処理コアのうちアクティブな処理コアの数を決定することと、
前記複数の処理コアのうちアクティブになる処理コアの予想数を決定することと、
前記複数の処理コアのうちアクティブな処理コアの数と、前記複数の処理コアのうちアクティブになる処理コアの予想数との間のアクティビティ偏差を決定することと、
によって前記処理コアアクティビティ偏差データを決定するように構成されている、
請求項５のシステムオンチップ。
【請求項８】
前記複数の処理コアのうちアクティブな処理コアの数を決定することは、前記複数の処理コアの処理コアアクティビティレベルに基づいている、
請求項７のシステムオンチップ。
【請求項９】
前記複数の処理コアのうちアクティブになる処理コアの予想数を決定することは、前記複数の処理コアの数と、前記複数の処理コアの処理コアアクティビティレベルと、を考慮する二項分布に基づいている、
請求項８のシステムオンチップ。
【請求項１０】
前のインターバルにおける処理コア内のアクティブサイクルの割合が閾値よりも高い場合に、前記処理コアがアクティブであると判別される、
請求項７のシステムオンチップ。
【請求項１１】
前記前のインターバルは、移動平均ウィンドウに基づいている、
請求項１０のシステムオンチップ。
【請求項１２】
複数の処理コアと、
ネットワークインタフェースと、
前記複数の処理コアと前記ネットワークインタフェースとに接続された処理コア周波数調整ロジックと、
を備えるサーバであって、
前記処理コア周波数調整ロジックは、
前記複数の処理コアからの処理コアアクティビティデータに基づいて、前記複数の処理コアの処理コアアクティビティ偏差データを決定することと、
決定された前記処理コアアクティビティ偏差データに基づいて、前記複数の処理コアのうち少なくとも１つの処理コアの周波数を調整することと、
を行うように構成されている、
サーバ。
【請求項１３】
前記処理コア周波数調整ロジックは、
前記処理コアアクティビティ偏差データが、前記複数の処理コアの均一なワークロードを示しているかどうかを判別することと、
前記処理コアアクティビティ偏差データが前記複数の処理コアの均一なワークロードを示していると判別したことに応じて、前記複数の処理コアのうち少なくとも１つの処理コアの周波数を低下させることと、
をさらに行うように構成されている、
請求項１２のサーバ。
【請求項１４】
前記処理コア周波数調整ロジックは、
前記複数の処理コアのうちアクティブな処理コアの数を決定することと、
前記複数の処理コアのうちアクティブになる処理コアの予想数を決定することと、
前記複数の処理コアのうちアクティブな処理コアの数と、前記複数の処理コアのうちアクティブになる処理コアの予想数との間のアクティビティ偏差を決定することと、
によって前記処理コアアクティビティ偏差データを決定するように構成されている、
請求項１３のサーバ。
【国際調査報告】
2020524336.tif 000010
2020524336.tif 000011