(ループ内の)レジスタの増分を使用して、(実効)クロックレートを決定できますか?当然のことながら可能だと思いましたが、CPUはこの種の計算を役に立たなくするスーパースカラー技術を組み込む可能性があるとコメントされました。また、CPUのレジスタのインクリメントは1クロックサイクル未満で実行できると言われました。
それは本当ですか?
(ループ内の)レジスタの増分を使用して、(実効)クロックレートを決定できますか?当然のことながら可能だと思いましたが、CPUはこの種の計算を役に立たなくするスーパースカラー技術を組み込む可能性があるとコメントされました。また、CPUのレジスタのインクリメントは1クロックサイクル未満で実行できると言われました。
それは本当ですか?
いいえ、確実ではありません。レジスタをインクリメントするのにかかるサイクル数は、プロセッサのタイプによって異なる可能性があり、ループのオーバーヘッドも含める必要があります。最新のオペレーティングシステムでは、プリエンプティブマルチタスクを処理する必要があるため、プロセススケジューラが提供するCPU時間はわかりません。他のプロセスが実行している作業の量に応じて、CPU時間が長くなることも少なくなることもあるため、1秒あたりに実行できるレジスタ増分の数は大きく異なります。
さらに、マルチコア環境では、クロックが同じ速度で刻々と変化しない場合があります。何らかの理由でスケジューラによってプロセスがコア間で移動した場合、クロックレートが予期せず変化する可能性があります。
オペレーティングシステムにクロックレートを要求するなど、クロックレートを取得するためのはるかに優れた方法があります(もちろん、これを行う方法はOSによって異なります)。
いいえ、それを使用してクロックレートを決定することはできません。レジスタがクロックごとに1回だけインクリメントできるという保証はありません。
どのCPUをターゲットにしていますか?少なくともx86では、クロックレートを決定するためのより明確な方法があります。