0

(ループ内の)レジスタの増分を使用して、(実効)クロックレートを決定できますか?当然のことながら可能だと思いましたが、CPUはこの種の計算を役に立たなくするスーパースカラー技術を組み込む可能性があるとコメントされました。また、CPUのレジスタのインクリメントは1クロックサイクル未満で実行できると言われました。

それは本当ですか?

4

2 に答える 2

3

いいえ、確実ではありません。レジスタをインクリメントするのにかかるサイクル数は、プロセッサのタイプによって異なる可能性があり、ループのオーバーヘッドも含める必要があります。最新のオペレーティングシステムでは、プリエンプティブマルチタスクを処理する必要があるため、プロセススケジューラが提供するCPU時間はわかりません。他のプロセスが実行している作業の量に応じて、CPU時間が長くなることも少なくなることもあるため、1秒あたりに実行できるレジスタ増分の数は大きく異なります。

さらに、マルチコア環境では、クロックが同じ速度で刻々と変化しない場合があります。何らかの理由でスケジューラによってプロセスがコア間で移動した場合、クロックレートが予期せず変化する可能性があります。

オペレーティングシステムにクロックレートを要求するなど、クロックレートを取得するためのはるかに優れた方法があります(もちろん、これを行う方法はOSによって異なります)。

于 2009-03-14T19:16:51.977 に答える
1

いいえ、それを使用してクロックレートを決定することはできません。レジスタがクロックごとに1回だけインクリメントできるという保証はありません。

どのCPUをターゲットにしていますか?少なくともx86では、クロックレートを決定するためのより明確な方法があります。

于 2009-03-14T19:14:07.040 に答える