DOBON.NET DOBON.NETプログラミング掲示板過去ログ

CPUのクロック周波数

環境/言語:[XP VB.NET .NET Framework3.5sp1]
分類:[.NET]

お世話になります
CrystalCPUIDというソフトでCPUクロックをリアルタイムで変えているので
リアルタイムでCPUのクロックを表示したいと思いPerformanceCounterやManagementObjectを
調べてみたのですが上手く取得できませんでした。
リアルタイムにクロックかCPUの倍率など取得することはできますでしょうか?
どうかよろしくお願いします。
> リアルタイムにクロックかCPUの倍率など取得することはできますでしょうか?

  http://homepage1.nifty.com/bee/bclk/

  WATCOMの開発環境使っているようですが・・・
  移植は可能かと。

※ 一般的には、マザーボードのBIOS経由で情報をやりとりしますので
  CrystalCPUIDも、ある程度のメーカー・マザー別に対応しているの
  ではないか・・・と推測します。

  このbclkは、CPUに対しRDTSC命令を使って
  http://yosirin9.hp.infoseek.co.jp/tips/no1/tips_no1.htm

  CPUのクロックを算出しています。
  ので、当然誤差が生じます。

  要は設定値ではなく計測値であると言うこと・・・

※ VisualStudio のCコンパイラでもまだ、_asmでインライン
  アセンブラできるのでは?・・・MASM使わないでもいける
  かも。(未確認です:やってみよ〜)

以上。参考まで
  • 題名: Re[2]: CPUのクロック周波数
  • 著者: オショウ
  • 日時: 2009/04/04 12:17:18
  • ID: 24359
  • この記事の返信元:
  • この記事への返信:
    • (なし)
  • ツリーを表示
追伸

VisualStudio2008のC++で、_asmによるインラインアセンブラは
できました。

rdtsc命令によるクロックは算出できました。

※ MASM使わないでも移植可能です!(たぶん)

以上。
■No24355に返信(しょちょさんの記事)
> CrystalCPUIDというソフトでCPUクロックをリアルタイムで変えているので
> リアルタイムでCPUのクロックを表示したいと思いPerformanceCounterやManagementObjectを
> 調べてみたのですが上手く取得できませんでした。
どのようにうまくいかなかったのでしょうか?
リアルタイムで変えた値になっていないとかでしょうか?

WMI経由で正しく取得できないのであれば、相当ハードルが高いと思います。
http://www.codeproject.com/KB/system/GetHardwareInformation.aspx

オショウさんが言われているインラインアセンブラを使う方法は、かなり難しいことです。
書いたプログラムがx86の命令語ではどのように表現されるかを少しでも良いので分かっていないと、なかなかたどり着けません。

参考
http://www5c.biglobe.ne.jp/~ecb/assembler/assembler00.html (これはx86ではありません)
http://codezine.jp/article/detail/420?p=1
ありがとうございます
オショウさんの調べてたのですが難しくて自分にはちんぷんかんぷんでした
調べても調べても頭痛がするだけでなかなか頭に入ってきません(´・ω・`)
WMIはWin32_Processor調べましたがCurrentClockSpeedは倍率変更では速度が変らないみたいです元のままの速度になってました
everestでもWMI出力しているので、それから取ろうと思ったのですがユーザー定義からのWMI取得の仕方が調べてもわからなくて断念。と思ったらレジストリに出力する項目がありました
HKEY_CURRENT_USER\Software\Lavalys\EVEREST\SensorValuesにちゃんと出力されていて無事にリアルタイムにレジストリから取ることができました
わざわざ参考まで載せていただいたのにすみません。そしてありがとうございました
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板