CPUクロックのティックは厳密に周期的ですか?


51

CPUの周波数は、1秒あたりのクロックティック数の平均値ですか、それともより強力で物理的な安定性がありますか?

私の意見では、それは安定でも不安定でもないはずです。CPUの分散について利用可能な情報はありますか?

CPUのサイクル期間は水晶振動と厳密に同期していますか?または、CPUは次のティックの前に必ずサイクルを達成する必要がありますか?


7
CPUにはさまざまな種類があります。ほとんどは、特定の周波数で振動して自身の時間を計る水晶を使用しています。つまり、ほとんどがデジタル腕時計(時間を維持するために同じタイプのクリスタルを使用)とほぼ同じくらい正確であることを意味します。en.wikipedia.org/wiki/Crystal_oscillator
クロー

5
@Gaelいくつかの命令は、完了するまでに数百ティックまたはクロックサイクルかかります。
misha256

1
@Gael:また、CPU自体が遅くなったり、速くなったりすることはよくあります。私はそれがダニにどのように関係するかを正確には知りませんが。
Mooingダック

18
製品、サービス、または学習教材の推奨事項探しているとしてこれを終了することに賛成ですか?ほんとに?
CVn

30
これは、ハードウェアがどのように機能するかを明確にしようとする正当な質問です。
studiohack

回答:


49

複雑なものと同様に、CPUがさまざまなレベルで動作する方法を説明できます。

最も基本的なレベルでは、CPUは正確なクロックで駆動されます。クロックの周波数は変更できます。IntelのSpeedStepを考えてください。ただし、常にCPUはクロック信号に完全に100%ロックされます。

CPU命令は、はるかに高いレベルで動作します。単一の命令は複雑なものであり、Wikipediaでここで説明れているように、完了するまでに1サイクル未満から数千サイクルかかることがあります。

そのため、基本的に命令はいくつかのクロックサイクルを消費します。最新のCPUでは、複数のコア、ハイパースレッディング、パイプライン、キャッシュ、アウトオブオーダー、投機的実行などの技術により、1つの命令の正確なクロックサイクル数は保証されておらず、そのような命令を発行するたびに変化します!

編集

特定のCPUの分散について利用可能な情報はありますか?

はいといいえ。エンドユーザーの99.99%は全体的なパフォーマンスに関心があります。これはさまざまなベンチマークを実行することで定量化できます。

あなたが求めているのは高度な技術情報です。Intelは、CPU命令のレイテンシ/スループットに関する完全な情報または正確な情報を公開していません。

これを理解するために自分自身でそれを採用した研究者がいます。興味深いかもしれない2つのPDFを次に示します。

残念ながら、分散データを取得するのは困難です。最初のPDFから引用:

リストされている数値は最小値です。キャッシュミス、ミスアライメント、および例外により、クロックカウントが大幅に増加する場合があります。

それにもかかわらず、興味深い読書!


1
コメントは詳細なディスカッション用ではありません。この会話はチャットに移動さました
サティアジスバート

4
非常に素晴らしい。もちろん、But at all times the CPU is absolutely 100% locked to the clock signal同期CPUにのみ適用されます。非同期(クロックレス)CPUのティックについて話すのはばかげていますが、私にとっては省略のように感じました:)
Luaan

1
@Luaan-はい。真の非同期CPUはまだ非常にまれであると思いますが、実際に存在します(または過去に存在します)。ただし、研究者とハードウェアオタクにのみ関連します。
ダニエルRヒックス

@DanielRHicks組み込みデバイス(古いMIPSとARM非同期CPUがいくつかあります)にはある程度興味がありましたが、消費者市場ではそれほど大きなものではありません。結局のところ、すぐ隣に電力を消費するディスプレイがあるのに、スマートフォンのCPUの電力消費を気にする必要があります。ただし、他の一部のアプリケーションでは、電力の節約(およびその他の機能)が非常に優れている場合があります。IBMSyNAPSEは、科学的な目的ではクールなプロジェクトのように見えます。
ルアーン

@Luaan-それらが最初に発明されたときの興味深い点は、コンピューターが計算を実行するのに必要なだけ正確に高速/低速で実行されたことでした。しかし、より精巧なクロッキングスキームは、基本的に同じことを達成しました。
ダニエルRヒックス

29

CPUクロックのティックは本質的に厳密に周期的ですか?

もちろん違います。非常に最高の時計でさえ、厳密に周期的ではありません。熱力学の法則はそうではないと言っています:

  • ゼロ法則:宇宙があなたにプレイする厄介な小さなゲームがあります。
  • 第一法則:勝てない。
  • 第二の法則:しかし、非常に寒い日に、あなたはただ平等になるかもしれません。
  • 第三法則:そんなに寒くなることはありません。

非常に最高の時計の開発者は、熱力学の法則を克服しようと非常に一生懸命努力しています。彼らは勝つことができませんが、彼らは非常に、非常に非常に近くに来ます。CPUのクロックは?それらの最高の原子時計と比較して、それはゴミです。これがNetwork Time Protocolが存在する理由です。


予測:世界で最も優れた原子時計が2015年6月30日23:59:59 UTCから2015年30月30日23:59:60 UTCまで2015 UTCから2015年7月1日00:00:00に再び混乱が生じるでしょうUTC。うるう秒を認識せず、securelevelを2に設定しているシステムが多すぎる(これにより、1秒以上の時間変更が防止されます)。これらのシステムのクロックジッターは、ネットワークタイムプロトコルのうるう秒が拒否されることを意味します。2012年に行ったように、多くのコンピューターが腹を立てます。


9
+1、面白いと有益。また、うるう秒のトピックも良い読み物です。
jimm-CL

9
カーネルクロックルーチンはうるう秒の可能性を認識していましたが、調整がクロック調整ルーチンへの呼び出しとして実装されていたため、IIRC、ゴーベリーアップワが発生しました。調整されています...そしてもちろん、システムクロックはCPUクロックとは何の関係もありません。
ハーゲンフォンアイゼン

1
笑、すごい。「CPUクロックは原子時計と比較してゴミです」という観察に何かを追加する必要があります。しかし、それはすべて非常に主観的であり、相対的なものではありません。最高の原子時計の優れた精度に驚かれるかもしれませんが、どこか(居心地の良い現実の外)に、原子時計を「ゴミ」のように見せる技術があるかもしれません
misha256

2
@ misha256現実には、正確な時計はあり得ません。時間は相対的です。
ケルタリ

CPUクロックはゴミになる可能性がありますが、未知の状態の7セグメントディスプレイドライバーに時間を与えて、次の命令を発行する前に命令を中断するために、8ビットのレジスターをオーバーフローさせるようなものはありません。そのためにクリスタルは必要ありません。またはさらに重要なことは、結果をレジスタ(または別のALUにつながるバス)に格納する前に、ALUが計算を完了するのをナノ秒待つことなどありません。
ジョンドヴォルザーク

22

2000年頃、CPUのクロック速度が携帯電話も動作する範囲に入り始めたとき、実際のクロック速度に変動を加えることが一般的になりました。理由は簡単です:CPUクロックが正確に900 Mhzである場合、すべての電子干渉はその周波数で生成されます。895〜905 Mhzの間でクロック周波数を少し変えると、干渉もその範囲に分散されます。

これは、最新のCPUが熱に制限されているために可能でした。それらは、後でクロックが遅くなるとクールダウンする可能性があるため、短期間でわずかに速く動作することに問題はありません。


13
BIOSでは、多くの場合、このオプションは、「スペクトラム拡散」と説明した表示されます
マーク・Sowul

1
マルチコアCPUでは、無線ノイズの回避、配電の支援、およびコアによる高調波の発生の回避に役立つため、コアもオフセットクロックを使用していることを読みました。
ザンリンクス

3
@MarkSowulに感謝します。最後に、この「広がりのあるスペクトル」の実用化について誰かが語っています。

22

デジタルロジックデザイナーはこちら。入力信号に応じて論理ネットワークが変化するのにかかる実際の時間は、伝播遅延です。システムを次のように考えてください。

registers A,B,C... ---> logic cloud ---> registers A',B',C'

「起動クロック」は、レジスタの最初のセットが変更されるクロックエッジです。「キャプチャクロック」は、1周期後の次のクロックエッジです。システムが機能するには、キャプチャクロックが到着する前にロジッククラウドの出力が安定している必要があります。

これが機能することを確認するプロセスは、タイミング解析です。システムの物理ベースのシミュレーションを使用して、入力から出力への最悪の場合の到着時間を計算します。システム全体でこれらの数値の最大値が最小クロック周期を設定します。

最悪の場合に注意してください。実際の伝播時間は短くなりますが、製造プロセスの変動、現在の温度、チップ電圧(PVT)に依存します。これは、実際には、より速いクロック(オーバークロック)を適用でき、機能する可能性があることを意味します。また0x1fffffff + 1 = 0x1f000000、キャリービットが時間内に到着しないと判断するなど、エラーの生成を開始する場合があります。

チップにはボード上に複数のクロックがある場合があり(通常、FSBはコアよりも遅い)、実際のクロックは熱制御の目的で増減するか、変化する場合があります(EMCテストに合格するためのスペクトラム拡散の使用に関するMSalterの回答)。


場合によっては、キャプチャクロックが次ではなく2番目以降のサイクルになることがあります。一部の設計では、データには常に少なくとも最小時間がかかると想定しています(たとえば、伝播遅延が2.1から2.9サイクルであることがわかっている場合、サイクルごとにデータを出力し、結果をサンプリングできます。各サンプリング結果は3からのデータを反映しますサイクル前); 他のより保守的な設計では、出力データの変更がより遅くなり、安定性が保証されるまで結果を無視します。
スーパーキャット

2

CPUの命令時間は水晶振動と厳密に同期していますか?または、CPUは次のティックの前に命令を確実に達成する必要がありますか?

どちらでもない。命令の持続時間は、クロックティックの数になりますが、その数は命令の要件に基づいて異なる場合があります。たとえば、特定のメモリ位置がL1キャッシュにあるまで命令が順方向に進行できない場合、その命令は次のクロックティックまでに完了しません。それが起こるまで、その命令の前進はありません。

しかし、CPUが何かを行うことを決定した場合、その基本的な方法は、特定の情報がCPUの特定の部分に送られるように内部スイッチを設定することです。入力がその部分に到着し、出力が次の部分に到着するのを待ちます。この待機部分が時計の目的です。

2つのバイナリ入力を取り、それらを合計し、ワイヤの3番目のセットで合計を出力する物理回路を想像してください。加算を行うには、CPUはこの加算器に到達するために加算される2つの数値と、たとえばCPUレジスタラッチに送られる出力を調整する必要があります。CPUは、入力が加算器に到達し、加算器が出力を生成し、出力がラッチに到達するまで、出力を保存するようラッチに指示することはできません。これがクロックの目的です。入力をどこかに配置してから出力が使用可能になるまでの待機時間を設定します。

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