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