0

レジスタの増分(ループ内)を使用して(有効な)クロックレートを決定できますか? 私は自然にできると思っていましたが、私はCpuがこのような計算を無用にするスーパースカラー技法を移植する可能性があるとコメントしました。 また、CPU上のレジスタのインクリメントが1クロックサイクル未満で実行できると言われました。クロックレートを決定するためにレジスタのインクリメントを使用できますか?

本当ですか?

答えて

3

いいえ、信頼性はありません。レジスタをインクリメントするために必要なサイクル数は、プロセッサの種類によって異なる場合があります。ループのオーバーヘッドも含める必要があります。最新のオペレーティングシステムでは、プリエンプティブなマルチタスキングに対処する必要があるため、プロセススケジューラがどれくらいのCP​​U時間を費やすか分かりません。他のプロセスがどのくらいの作業をしているかによって、CPU時間が多少かかったりすることがあるので、1秒あたりに実行できるレジスタ増分の数は非常に変動します。

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

オペレーティングシステムに問い合わせるなど、クロックレートを取得する方がはるかに優れています(もちろん、これはOSによって異なります)。

+0

多分、Linuxの「時間」は実際にプロセスに費やす時間についてのより良い見積もりを提供しますが、私はあなたの点を感謝します。 –

1

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

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

+0

これは一般的な質問でしたが、確かにx86に興味があります... –

関連する問題