web-dev-qa-db-ja.com

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

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

私の意見では、それは安定したものでも不安定なものでもないはずです。それでは、CPUの差異について入手できる情報はありますか?

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

52
Gael

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

最も基本的なレベルでは、CPUは正確なクロックによって駆動されます。クロックの周波数は変化する可能性があります。インテルのSpeedStepだと思います。しかし、常にCPUはクロック信号に完全に100%ロックされています

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

したがって、基本的に命令はクロックサイクル数を消費します。最新のCPUでは、マルチコア、ハイパースレッディング、パイプライン処理、キャッシング、順序外れ、および投機的実行などのテクノロジーにより、単一の命令の正確なクロックサイクル数は保証されておらず、そのような命令を発行するたびに変化します!

[〜#〜]編集[〜#〜]

特定のCPUの差異について入手できる情報はありますか?

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

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

これを理解するために自分自身でそれを試みた研究者がいます。興味深いと思われる2つのPDFを以下に示します。

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

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

それでも興味深い読書!

50
misha256

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

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

  • 第0の法則:宇宙があなたにプレイする厄介な小さなゲームがあります。
  • 第一法則:勝つことはできません。
  • 第二法則:しかし、あなたは非常に寒い日にさえ、破る可能性があります。
  • 第三法則:そんなに寒くなることはありません。

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


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

30
David Hammen

2000年ごろ、CPUのクロック速度が携帯電話でも動作する範囲になり始めたとき、実際のクロック速度に変化をつけることが一般的になりました。理由は簡単です。CPUクロックがちょうど900 Mhzの場合、すべての電子干渉はその周波数で発生します。クロック周波数を895から905 Mhzの間で少し変化させ、干渉もその範囲に分散されます。

最近のCPUは熱制限があるため、これが可能でした。これらは、クロックが遅くなるとクールダウンする可能性があるため、短期間で少し速く実行しても問題ありません。

22
MSalters

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

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

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

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

最悪の場合。実際の伝搬時間は短くなりますが、製造プロセスのばらつき、現在の温度、およびチップ電圧に依存します( [〜#〜] pvt [〜#〜] )。つまり、実際には、より高速なクロック(オーバークロック)を適用でき、機能する場合があります。また、0x1fffffff + 1 = 0x1f000000キャリービットが時間内に到着しない場合。

チップには複数のクロックが搭載されている場合もあり(通常FSBはコアよりも低速です)、実際のクロックは温度制御のためにランプアップまたはランプダウンされるか、変化する可能性があります(MSalterの回答EMC試験に合格するためにスペクトラム拡散を使用する)。

22
pjc50

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

どちらでもない。命令の継続時間はクロックティックの数になりますが、その数は命令の要件によって異なります。たとえば、特定のメモリ位置がL1キャッシュに入るまで命令が前進できない場合、その命令は次のクロックティックの前に完了しません。その指示が発生するまで、その指示は前進しません。

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

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

2
David Schwartz