CPUの周波数は、1秒あたりのクロックティック数の平均値ですか、それともより強力で物理的な安定性がありますか?
私の意見では、それは安定でも不安定でもないはずです。CPUの分散について利用可能な情報はありますか?
CPUのサイクル期間は水晶振動と厳密に同期していますか?または、CPUは次のティックの前に必ずサイクルを達成する必要がありますか?
CPUの周波数は、1秒あたりのクロックティック数の平均値ですか、それともより強力で物理的な安定性がありますか?
私の意見では、それは安定でも不安定でもないはずです。CPUの分散について利用可能な情報はありますか?
CPUのサイクル期間は水晶振動と厳密に同期していますか?または、CPUは次のティックの前に必ずサイクルを達成する必要がありますか?
回答:
複雑なものと同様に、CPUがさまざまなレベルで動作する方法を説明できます。
最も基本的なレベルでは、CPUは正確なクロックで駆動されます。クロックの周波数は変更できます。IntelのSpeedStepを考えてください。ただし、常にCPUはクロック信号に完全に100%ロックされます。
CPU命令は、はるかに高いレベルで動作します。単一の命令は複雑なものであり、Wikipediaでここで説明されているように、完了するまでに1サイクル未満から数千サイクルかかることがあります。
そのため、基本的に命令はいくつかのクロックサイクルを消費します。最新のCPUでは、複数のコア、ハイパースレッディング、パイプライン、キャッシュ、アウトオブオーダー、投機的実行などの技術により、1つの命令の正確なクロックサイクル数は保証されておらず、そのような命令を発行するたびに変化します!
編集
特定のCPUの分散について利用可能な情報はありますか?
はいといいえ。エンドユーザーの99.99%は全体的なパフォーマンスに関心があります。これはさまざまなベンチマークを実行することで定量化できます。
あなたが求めているのは高度な技術情報です。Intelは、CPU命令のレイテンシ/スループットに関する完全な情報または正確な情報を公開していません。
これを理解するために自分自身でそれを採用した研究者がいます。興味深いかもしれない2つのPDFを次に示します。
残念ながら、分散データを取得するのは困難です。最初のPDFから引用:
リストされている数値は最小値です。キャッシュミス、ミスアライメント、および例外により、クロックカウントが大幅に増加する場合があります。
それにもかかわらず、興味深い読書!
But at all times the CPU is absolutely 100% locked to the clock signal
同期CPUにのみ適用されます。非同期(クロックレス)CPUのティックについて話すのはばかげていますが、私にとっては省略のように感じました:)
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年に行ったように、多くのコンピューターが腹を立てます。
2000年頃、CPUのクロック速度が携帯電話も動作する範囲に入り始めたとき、実際のクロック速度に変動を加えることが一般的になりました。理由は簡単です:CPUクロックが正確に900 Mhzである場合、すべての電子干渉はその周波数で生成されます。895〜905 Mhzの間でクロック周波数を少し変えると、干渉もその範囲に分散されます。
これは、最新のCPUが熱に制限されているために可能でした。それらは、後でクロックが遅くなるとクールダウンする可能性があるため、短期間でわずかに速く動作することに問題はありません。
デジタルロジックデザイナーはこちら。入力信号に応じて論理ネットワークが変化するのにかかる実際の時間は、伝播遅延です。システムを次のように考えてください。
registers A,B,C... ---> logic cloud ---> registers A',B',C'
「起動クロック」は、レジスタの最初のセットが変更されるクロックエッジです。「キャプチャクロック」は、1周期後の次のクロックエッジです。システムが機能するには、キャプチャクロックが到着する前にロジッククラウドの出力が安定している必要があります。
これが機能することを確認するプロセスは、タイミング解析です。システムの物理ベースのシミュレーションを使用して、入力から出力への最悪の場合の到着時間を計算します。システム全体でこれらの数値の最大値が最小クロック周期を設定します。
最悪の場合に注意してください。実際の伝播時間は短くなりますが、製造プロセスの変動、現在の温度、チップ電圧(PVT)に依存します。これは、実際には、より速いクロック(オーバークロック)を適用でき、機能する可能性があることを意味します。また0x1fffffff + 1 = 0x1f000000
、キャリービットが時間内に到着しないと判断するなど、エラーの生成を開始する場合があります。
チップにはボード上に複数のクロックがある場合があり(通常、FSBはコアよりも遅い)、実際のクロックは熱制御の目的で増減するか、変化する場合があります(EMCテストに合格するためのスペクトラム拡散の使用に関するMSalterの回答)。
CPUの命令時間は水晶振動と厳密に同期していますか?または、CPUは次のティックの前に命令を確実に達成する必要がありますか?
どちらでもない。命令の持続時間は、クロックティックの数になりますが、その数は命令の要件に基づいて異なる場合があります。たとえば、特定のメモリ位置がL1キャッシュにあるまで命令が順方向に進行できない場合、その命令は次のクロックティックまでに完了しません。それが起こるまで、その命令の前進はありません。
しかし、CPUが何かを行うことを決定した場合、その基本的な方法は、特定の情報がCPUの特定の部分に送られるように内部スイッチを設定することです。入力がその部分に到着し、出力が次の部分に到着するのを待ちます。この待機部分が時計の目的です。
2つのバイナリ入力を取り、それらを合計し、ワイヤの3番目のセットで合計を出力する物理回路を想像してください。加算を行うには、CPUはこの加算器に到達するために加算される2つの数値と、たとえばCPUレジスタラッチに送られる出力を調整する必要があります。CPUは、入力が加算器に到達し、加算器が出力を生成し、出力がラッチに到達するまで、出力を保存するようラッチに指示することはできません。これがクロックの目的です。入力をどこかに配置してから出力が使用可能になるまでの待機時間を設定します。