1

実際に動作している CPU 周波数を測定するには、モデル固有のレジスタ (MSR) IA32_APERF および IA32_MPERF (アセンブリ CPU 周波数測定アルゴリズム) にアクセスする必要があります。

ただし、MSR レジスタへのアクセスは特権です (rdmsr 命令を使用)。これを行う別の方法はありますか?たとえば、コードで呼び出すことができるデバイスドライバー/ライブラリを介して意味します。レジスターの読み取りが特権であることは、私には奇妙に思えます。彼らに手紙を書くことだけが特権だと思います。

注: rdtsc 命令はターボ ブーストを考慮していないため、実際の動作周波数を報告することはできません。

編集: Linux および/または Windows のソリューションに興味があります。

4

1 に答える 1

2
  1. そうです、リンクの2番目の回答に記載されている平均CPU周波数を見つける適切な方法です。

  2. Linux で msrs を読み取るには、ツールRDMSRを使用できます。

  3. その答えで誤解を招く可能性がある唯一のものはmaxfrequencyです。MPERF カウンターは最大非ターボ周波数でカウントされるため、最大周波数ではなく、公称周波数 (最大非ターボ周波数) である必要があります。この周波数は、MSR 0xCE ビット 8:15 (参照)から取得できます。

于 2013-04-29T05:08:53.640 に答える