- CPUのクロックの計測 -
yosirin-hello / yosi-s@galaxy.ocn.ne.jp
| 1. はじめに |
|
| CPUのクロック数を知ることができれば, RDTSC命令と組み合わせることによって, 例えばタイマーを作ることができます. このTipsで, CPUのクロック数を用いたアプリケーションの開発に役立ててもらえれば幸いです. 今回は, - read-time stamp counter (RDTSC)命令の利用方法 - で紹介したRDTSC命令で簡易的(それほど正確ではないが使えないことはない)にCPUのクロックの計測をする方法を紹介します. | |
| 2. 計測するには |
|
CPUのクロックを計測する方法を考えます. CPUのクロックは,
1秒間にどれだけクロックが発生しているか知ることができれば計測できます.
今回は簡易的にクロックを計測するのが目標なのでWindowsAPIのSleep()関数を使って1秒間のブランクを発生させてCPUのクロックを計測することにします.
(Fig1.)
|
|
| 3. 実装 |
||||||||
Fig1. の考え方で実装してみます. List1.のプログラムはCPUのクロック数を5回表示するようにしてみました.
(1) 現在のクロック数をcycleに格納します. (2) スレッドを1秒間停止させるためにSleep(1000)を実行します. (パラメータは[ms]の単位で指定) (3) (1)を実行してから約1秒が経過した時点でのクロック数と, 1秒前のクロック数を引いてcycleに格納します. (4) CPU_Clockを1000000で割るとこによって, CPUのクロックの単位を[MHz]に変換しています. |
||||||||
| 4. 結論 |
|
| ・ 一番初めに実行した結果の誤差が少し大きい ・ このプログラムを実行したマシンのクロックは1.5GHzなので, ほぼ正確に測定できている ・ 精密な測定をするにはもう少しプログラムの改良をする必要がある. ・Sleep()関数を用いているのでCPUの負担が非常に低い |
|
| 5. 参考文献 |
|||||
|
|||||
| 6. 改訂履歴 |
||||||||||
|
||||||||||
Copyright © 2002 yosirin-hello All rights
reserved.