プロセッサはどのようにクロック速度を制御しますか?


12

私は最近、回路上に2つの発振器を備えたSTMプロセッサに出会いました。1つは高速動作用で、もう1つは低電力用だと思います。

クロック速度を任意の周波数に変更できるデスクトッププロセッサのようなもの(理由内)- 物理的にこれを行う方法は?


1
アレックスの答えが示すように、最新のデスクトップCPU周波数は連続的に変動するわけではありません。通常、100または133 MHzのステップで進みます。(関連:最新のx86 CPU は、最大定格速度を超える「ターボ」のために、またはOSがCPU(Intel Skylake)に電源管理の完全な制御を渡す場合、周波数を変更するタイミングをどのように決定します:SKLにはオンダイがあります:多くのトランジスタ486は、単に周波数の決定を行うために、やったようで、マイクロコントローラ ?なぜノースリープで数回の反復の後に高速に実行するには、この遅延ループスタートを行います
ピーター・コルド

回答:


21

これは、フェーズロックループ、またはPLL と呼ばれるデバイスを使用して行われます。基本的なPLLのブロック図を次に示します。

回路図

この回路のシミュレーションCircuitLabを使用して作成された回路

マザーボード上の発振器はCPUクロック周波数で動作せず、代わりに100 MHz程度の周波数で動作します。この発振器は、既知の安定した基準周波数としてのみ機能します。CPU内部では、実際のクロック周波数は電圧制御発振器、またはVCO によって生成されます。VCOは比較的広い範囲で周波数を生成するように調整できますが、それ自体では特に安定または正確ではありません。特定の制御電圧では、周波数は部品ごとに、また供給電圧と温度によって変化します。位相ロックループは、VCO出力周波数を基準周波数との特定の関係にロックするのに役立ちます。

fPFD=fref/D=foあなたはt/Mfoあなたはt=frefM/D

たとえば、基準周波数が100 MHzで、基準が1(D)で除算され、VCOが30(M)で除算されているとします。これにより、出力周波数は100 MHz * 30/1 = 3 GHzになります。この関係は、分周器の設定を変更するだけで変更できます。これは、ソフトウェアで制御レジスタを介して実行できます。周波数をオンザフライで変更することは、分周器の値を変更するほど単純ではない場合があり、CPUが短すぎる「グリッチ」またはクロックパルスを認識しないように周波数を変更する必要があることに注意してください。2つのPLLを使用してそれらを切り替えるか、PLLが新しい周波数で安定するまでクロックを一時的に停止するか、別のクロックソースに切り替える必要がある場合があります。

PLLはあらゆる場所で使用され、固定された安定した基準から正確で簡単に調整可能な周波数を生成します。Wi-FiカードとWi-Fiルーターは、変調されたデータをアップコンバートおよびダウンコンバートするために無線内部で使用される信号であるローカルオシレーター周波数と呼ばれるものを生成することにより、適切なチャネルを選択します。多くの場合、FMラジオは1つを使用して、受信周波数をソフトウェアで制御し、さまざまなステーションを簡単に呼び出すことができます。また、PLLは、イーサネット、PCIエクスプレス、シリアルATA、Firewire、USB、DVI、HDMI、DisplayPort、およびその他の多くの最新シリアルプロトコルのシリアライザーおよびデシリアライザーを駆動するために使用される高周波クロック信号を生成するためにも使用されます。


7

以前の回答に加えて...

STM microには、ほぼ確実にリアルタイムクロック用の2番目の発振器があります。これにより、チップの残りの部分と回路の残りの部分の電源がオフになっている間、クロックは動作し続けます(最小限の電力を消費します)。その後、デバイスは時計とカレンダーを実行し続けることができ、通常はタイマーでメインプロセッサを再起動することもできます-組み込みデバイスに役立つすべてのもの。


通常、リアルタイムクロックはメインクロックよりもはるかに遅く(32kHzが一般的です)、このため、リアルタイムクロックオシレーターと接続された回路の消費電流は非常に低くなります。
mkeith

@mkeith低いクロック速度は確かに重要ですが、主にプロセッサのほとんどすべてがオフになっているためです。
グラハム

グラハム、最初の質問は、なぜ2つのオシレーターがあるのか​​ということです。原則として、発振器を1つだけ使用して部分的にシャットダウンすることができ、そのようにして多くの電力を節約できます。2番目の低速発振器が存在する理由は、動的な電力消費がクロック周波数と直線的に相関しているためです。したがって、32kHz回路の動的消費電力は、10 MHz回路の動的消費電力の約300倍になります。私の意見では、クロック速度の低下は答えの重要な部分です。
mkeith

@mkeithそれは「原則」ではありません-それはまさにRTCを搭載したすべてのチップで動作する方法です。もちろん、RTCパーツは低速オシレーターを使用して速度を節約します。しかし、RTCパーツは、より高速のオシレータクロックを使用することはありません。これは、同じシリコン上の完全に独立した回路です。同様に、チップの残りの部分は、より遅い発振器クロックを使用しません。RTC自体は、より遅いクロックレートで動作することで消費電力を削減しますが、チップの残りの部分はすべて 100%電源がオフになり、ゼロ電流を消費します(漏れ電流はナノアンペアですが、それだけです)。
グラハム

1
@mkeithもちろん、RTCクリスタルの周波数は、電子機器の省電力からではなく、時計や時計のクォーツの電気機械的な動きに由来しますが)。遅いクロックはメインプロセッサの「低電力」モード用ではなく、完全に独立した周辺機器用であることをOPについて明確にしたかっただけです。
グラハム

0

非常に慎重に !

ここに画像の説明を入力してください

CPUには、バイナリプログラマブルプリスカラとVCOを備えたPLLがあり、フロントサイドバスFSBクロック(たとえば100MHz)を乗算するようにカウンタを駆動します。
この動的な省電力モードは、適切なCPUドライバー、CPU、OS、およびBIOSでCPU使用率が低い場合に自動的に選択されます。

私のi7(8cpu)は3101 MHzから800 MHzに移行し、即座に1100、1300、1500などのステップを実行します。

私の場合のようにBiosがx31を選択した場合、CPUは100MHz x 3100MHzで動作し、CPUのバイナリカウンターでx8からx15を選択してCPU電力を削減し、同時に0.9VでCPUチップ電圧を調整しますすべての地域で電力を節約します。

Win8.1の右上隅にCPU%およびメモリ%とともにカーソルを表示できます

ここに画像の説明を入力してください

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.