CPUの処理命令と水晶振動子の発振周波数との間には、私の理解にギャップがあるようです。CPUの周波数は、プログラムの実行速度にどの程度正確に影響しますか?クロックレートと特定の時間に処理される命令の数との間に関係はありますか?
例:mov R0, #1
。この命令が1クロックサイクルかかったと仮定すると、これは水晶の1回の振動を必要としますか、それともそのようには機能しませんか?
CPUの処理命令と水晶振動子の発振周波数との間には、私の理解にギャップがあるようです。CPUの周波数は、プログラムの実行速度にどの程度正確に影響しますか?クロックレートと特定の時間に処理される命令の数との間に関係はありますか?
例:mov R0, #1
。この命令が1クロックサイクルかかったと仮定すると、これは水晶の1回の振動を必要としますか、それともそのようには機能しませんか?
そうではなく、特定のプロセッサの設計に大きく依存します。大まかに言って、70年代後半から80年代にかけて、マイクロプロセッサは命令を実行するために複数のクロックサイクルを必要としました。RISCプロセッサは、90年代に全盛期を迎えました。実際、その焦点は、命令に単一のサイクルを使用し、そこに到達するために必要な場合は命令セットを簡素化することにありました。複数の実行コアを備えた2000年代のプロセッサ設計に大きく取って代わられ、クロックサイクルごとに複数の命令をリタイアできるようになりました。
時計回路も同様に進化してきました。最新のプロセッサは、比較的低周波の発振器を使用し、オンチップ乗算器を使用してギガヘルツの範囲に入ります。そして、その周波数を動的に変化させます。
クロックレートは、プロセッサの速度の見積もりとしては非常に貧弱です。昔(2000年代以前?)の時代には、クロックレートは速度のかなり良い見積もりでした。クロックレートが高いほど、常にパフォーマンスが向上します。しかし、最近では、これは真実ではありません。何かを実行するのに20クロックサイクルかかる4GHzプロセッサを使用できますが、1クロックサイクルですべてを実行する1GHzプロセッサよりも大幅に遅くなります。この命令:クロックサイクル比は、過去数年間でさらに複雑になっています。ここで、考慮すべきL1キャッシュとL2キャッシュがあります。キャッシュミスがある場合は、通常、1〜2クロックサイクル余分にかかると予想されます。そして、アウトオブオーダーの実行と最適化のメカニズムがあり、除算命令が1(ちょっと)未満から10クロックサイクルのどこかにかかる可能性があります。
基本的に、しないでください。単純な組み込み(つまり、ARMやx86ではない)アーキテクチャで作業している場合を除いて、クロック周波数と命令/秒はほとんど関係がありません。確かに、1つがより高いクロックを使用する2つの同等のプロセッサは、理論的には1秒あたりの命令数が多くなるはずですが、1秒あたりの命令数が増えるかどうかは誰にもわかりません。