動的周波数スケーリング( CPUスロットリングとも呼ばれる)は、コンピュータアーキテクチャにおける電力管理技術であり、実際のニーズに応じてマイクロプロセッサの周波数を「オンザフライ」で自動的に調整することで、消費電力を節約し、チップの発熱量を低減します。動的周波数スケーリングは、モバイルデバイスのバッテリー消費を抑え、静かなコンピューティング環境での冷却コストと騒音を低減するのに役立つほか、過熱したシステム(例えば、不適切なオーバークロック後)のセキュリティ対策としても有効です。
動的周波数スケーリングは、ほとんどの場合、動的電圧スケーリングと組み合わせて用いられます。これは、周波数が高くなるほど、デジタル回路が正しい結果を得るためにはより高い電源電圧が必要となるためです。この組み合わせた概念は、動的電圧周波数スケーリング(DVFS)として知られています。
チップによって消費される動的電力(スイッチング電力)はC·V 2 ·A·fで表され、ここで C はクロックサイクルごとにスイッチングされる容量、V は電圧、A はアクティビティ係数[ 1 ]であり、チップ内のトランジスタによるクロックサイクルあたりの平均スイッチングイベント数(無次元量)を示し、f はクロック周波数です。[ 2 ]
したがって、電圧は電力消費と発熱の主な決定要因です。[ 3 ]安定動作に必要な電圧は、回路のクロック周波数によって決まり、周波数を下げれば電圧も下げることができます。[ 4 ]ただし、動的電力だけではチップの総電力は説明できません。静的電力も存在し、これは主にさまざまなリーク電流によるものです。静的電力消費と漸近実行時間により、ソフトウェアのエネルギー消費は凸型のエネルギー挙動を示すことが示されています。つまり、エネルギー消費が最小になる最適なCPU周波数が存在します。[ 5 ]トランジスタのサイズが小さくなり、しきい値電圧レベルが下がるにつれて、リーク電流はますます重要になっています。10年前は、動的電力がチップの総電力の約3分の2を占めていました。現代のCPUとSoCでは、リーク電流による電力損失が総電力消費を支配する傾向があります。リーク電力を制御するために、高誘電率金属ゲートとパワーゲーティングが一般的な方法となっています。
動的電圧スケーリングは、関連する電力節約技術の一つであり、チップが動作する周波数は動作電圧と関連しているため、周波数スケーリングと併用されることが多い。
電圧レギュレータなどの一部の電気部品の効率は温度の上昇とともに低下するため、消費電力は温度とともに増加する可能性があります。消費電力の増加は温度の上昇につながる可能性があるため、電圧や周波数の増加は、CMOS の式が示す以上にシステムの電力需要を増加させる可能性があり、その逆もまた然りです。[ 6 ] [ 7 ]
ACPI 1.0(1996年)は、CPUがアイドル状態の「Cステート」に移行する方法を定義しているが、周波数スケーリングシステムは定義していない。
ACPI 2.0 (2000) では、プロセッサが可能な周波数と電力設定を OS に伝えるために使用できるP ステート(電力パフォーマンス状態)のシステムが導入されています。オペレーティングシステムは、これらの状態を切り替えることで、必要に応じて速度を設定します。SpeedStep、PowerNow!/Cool'n'Quiet、PowerSaver などのスロットリング技術はすべて P ステートを介して動作します。最大 16 ステートに制限されています。[ 8 ]
ACPI 5.0 (2011) では、協調プロセッサ性能制御( CPPC ) が導入され、周波数から抽象化された「性能レベル」の形で、数百ものパフォーマンスレベルが OS に公開され、選択できるようになりました。この抽象化により、プロセッサは周波数 (P ステート) だけでなく、他の方法でも動作 (C ステート) を調整できるようになります。[ 9 ] [ 10 ] [ 11 ]
最新のCPUの多くは、パフォーマンスレベルの範囲とOSからの「効率/パフォーマンスの優先順位」に関するヒントを利用して、周波数スケーリングを自律的に実行できる。
動的周波数スケーリングは、プロセッサが一定時間内に発行できる命令数を減らすため、パフォーマンスが低下します。したがって、一般的にはワークロードがCPUバウンドではない場合に使用されます。
スイッチング電力の節約方法として、周波数の動的スケーリングだけでは効果はほとんどありません。V2 コンポーネントと、最新の CPU が低電力アイドル状態に最適化されているという事実から、可能な限り多くの電力を節約するには、電圧の動的スケーリングも必要になります。ほとんどの定電圧の場合、ピーク速度で短時間動作し、その後ディープアイドル状態に長時間留まる(「レース・トゥ・アイドル」または「計算スプリント」と呼ばれる)方が、クロックレートを下げて長時間動作し、ライトアイドル状態に短時間だけ留まるよりも効率的です。ただし、クロックレートとともに電圧を下げると、これらのトレードオフが変わる可能性があります。
関連するものの正反対の手法としてオーバークロックがあり、これはプロセッサの(動的な)周波数をメーカーの設計仕様を超えて上昇させることで、プロセッサの性能を向上させるものです。
両者の大きな違いの一つは、現代のPCシステムではオーバークロックは主にフロントサイドバス(FSB)を介して行われるのに対し(これは通常、乗数が固定されているため)、動的周波数スケーリングは乗数を用いて行われる点です。さらに、オーバークロックは静的であることが多いのに対し、動的周波数スケーリングは常に動的です。ソフトウェアは、チップの劣化リスクが許容範囲内であれば、オーバークロックされた周波数を周波数スケーリングアルゴリズムに組み込むことができます。
インテルのCPUスロットリング技術であるSpeedStepは、同社のモバイルおよびデスクトップ向けCPU製品ラインで使用されている。
AMDは2種類のCPUスロットリング技術を採用しています。AMDのCool'n'Quiet技術は、デスクトップおよびサーバー向けプロセッサ製品ラインで使用されています。Cool'n'Quietの目的はバッテリー寿命を延ばすことではなく(AMDのモバイル向けプロセッサ製品ラインでは使用されていません)、発熱量を抑えることです。これによりシステムファンの回転速度を下げ、より低温で静かな動作を実現します。これがこの技術名の由来です。AMDのPowerNow! CPUスロットリング技術はモバイル向けプロセッサ製品ラインで使用されていますが、 AMD K6-2 +などの一部の対応CPUはデスクトップでも使用されています。
AMD PowerTuneとAMD ZeroCore Powerは、 GPU向けの動的周波数スケーリング技術です。
VIA TechnologiesとZhaoxinのプロセッサはLongHaul (PowerSaver)と呼ばれる技術を使用している一方、TransmetaのバージョンはLongRunと呼ばれていた。
36個のプロセッサを搭載したAsAP 1チップは、周波数の任意の変更、起動、停止を含め、完全に制約のないクロック動作(許容される最大周波数以下であることのみを要求)をサポートする最初のマルチコアプロセッサチップの1つです。167個のプロセッサを搭載したAsAP 2チップは、個々のプロセッサが自身のクロック周波数を完全に制約なく変更できる最初のマルチコアプロセッサチップです。
ACPI仕様によると、現代のCPUのC0動作状態は、クロックレートの低下を可能にするいわゆる「P」状態(パフォーマンス状態)と、STPCLK(ストップクロック)信号を挿入してデューティサイクルを省略することによりCPUをさらにスロットリングする(ただし実際のクロックレートは下げない)「T」状態(スロットリング状態)に分けられる。
異なるARMベースのシステムオンチップは、CPUとGPUのスロットリング機能を提供する。
省電力技術:
パフォーマンス向上技術: