問題タブ [cpuid]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
7 に答える
40149 参照

linux - Linux でルート権限なしで CPU シリアルを取得する方法

root 権限なしで Linux (Ubuntu) で CPU シリアル番号を取得するにはどうすればよいですか?

cpuid コマンドを試してみました。ルート権限なしで動作しますが、すべてゼロを返すようです (BIOS で何かを変更する必要があるためだと思います)。

ルート権限なしで、BIOS を変更することなく、プログラムから CPU シリアルを取得する別の方法を教えてください。

0 投票する
3 に答える
9813 参照

c# - 仮想マシンで CPU ID を取得する

私はこのコードを使用しようとしています:

XP 仮想マシン (virtualbox) で hw uid を取得するには、次のようなメッセージ ボックスしか表示されません。

それは仮想マシンだからですか、それとも何ですか?

0 投票する
1 に答える
955 参照

c++ - コンパイル時に構文エラーを繰り返す

私のプロジェクトでは、CPU がサポートする SIMD 命令セットを特定する必要があります。問題は、テスト コンパイルを実行しようとすると、コンパイラがコードを複数回解析しているように、一連のエラーが数回繰り返されることです。サポートされている SIMD 命令を決定する理由は、Windows と Linux の両方の GPGPU (特に CUDA) で使用するために John the Ripper の DES ビットスライス実装を適応させようとしているためです。

だから、これが私のエラーが37行目で発生する場所です

ここに私が得るエラーがあります(86個ありますが、同じ一連のエラー/行番号がずっと繰り返されます):

0 投票する
6 に答える
48526 参照

c++ - CPUがSSE3命令セットをサポートしているかどうかを確認するにはどうすればよいですか?

次のコードは、CPUがSSE3命令セットをサポートしているかどうかを確認するために有効ですか?

このIsProcessorFeaturePresent()機能の使用は、WindowsXPでは明らかに機能しません。

0 投票する
2 に答える
2016 参照

c++ - C++ で int をビットフィールドにパックする

一部のコードを ASM から C++ に変換しています。ASM は単純に次のようになります。

構造体は次のようになります。

C++ で構造体を埋める簡単な 1 行 2 行の方法はありますか? これまでのところ、私は使用しています:

これで問題なく動作しますが、これらのビットフィールド構造体の 9 ~ 10 個を埋める必要があり、そのうちのいくつかには 30 個の奇数フィールドがあります。したがって、このようにすると、10 行のコードが 100 行以上になることになりますが、これは明らかにそれほど素晴らしいことではありません。

では、C++ で ASM を複製する簡単でクリーンな方法はありますか?

もちろん、「miscStruct = CPUInfo[0];」を試しました。しかし、C++ は残念ながらそれを好みません。:(

..そして、構造体を編集できません

0 投票する
2 に答える
759 参照

assembly - LinuxでのCallNtPowerInformationとGetPwrCapabilities

WindowsでIntelベースのシステムで実行されているCPUに関する情報を返すコードがあります。これは、CallNtPowerInformationandGetPwrCapabilities関数を使用して行います。返される一般的な情報は、最大Mhz、現在のMhz、最大アイドル状態、現在のアイドル状態です。

おそらく、これはのような単一の命令で実行されていcpuidます。

Linuxで実行される同様のコードが必要です。それを行う方法はありますか?

これが私が持っているWindowsコードです:

0 投票する
2 に答える
985 参照

assembly - CPUID:一部の関数でMISC_ENABLE.LCMVを0に設定する必要があるのはなぜですか?一時的に上書きできますか?

CPUIDを使おうとしていますが、文字列が添付されています。sandpile.orgのCPUIDページによると、CPUID標準関数0000_0004h以上は、MISC_ENABLE.LCMVフラグが0に設定されている場合にのみ機能します。このフラグはモデル固有レジスタ(MSR)1A0のビット22です。どうやら、この制限はWindows NTのバグによるものです(Microsoft、私にとって物事を簡単にしてくれてありがとう;))。

CPUID 0000_0001h(ecxフラグ、ビット3)のLCMVフラグの存在をテストできます。それが存在すると仮定すると、それは正確には何のためにあり、なぜそれがCPUIDにそのような影響を与えるのですか?MSR 1A0は読み取り/書き込みレジスタですか、それとも読み取り専用ですか?このような専用レジスタは、アセンブリコードを使用してどのように読み書きされますか?

レジスタが技術的に読み取り/書き込みの場合、CPUID命令の期間中、ビット22を0にリセットしてから、元の設定に戻すのは安全ですか?それとも、正しく設定されていない(つまり有効になっている)場合、私はかなり困惑していますか?

最後に、sandpileは、「このレベルは、MISC_ENABLE.LCMVが0に設定されている場合にのみ有効になります。これは、WindowsNTのバグが原因です。」という表現を使用しています。この理由で多数の標準レベルが特に無効になっている場合、それはCPUIDレベル0000_000hのeaxレジスタ(サポートされている最大標準レベル)の出力に反映されますか?

ふぅ...それだけだと思います。

0 投票する
1 に答える
280 参照

x86 - プロセッサで変更できない x86 CPUID の戻り値は?

一部の AMD プロセッサの名前文字列は、別の文字列を返すように変更できることを知っています。BIOS はキャッシュまたは SSE サポートを無効にできると思います。これにより、キャッシュ/SSE サポートを示すビットが異なる値を返さなければならなくなります。

特定の CPU で変更されないことが保証されている CPUID 命令によって返される値はどれですか?

0 投票する
1 に答える
1384 参照

x86 - マルチコアのCPUID/NUMA

趣味のOSのCPU検出と一般環境検出コードに取り組んでいます。CPUIDを複数回呼び出す必要がある場合はありますか?つまり、システムに複数のコアがある場合、OSは各コアでCPUIDを呼び出す必要がありますか?NUMAについても同じです。

AMDIntelのCPUIDマニュアルはどちらもこれについて不明確です。osdev wikiに、Detecting CPU Topologyと呼ばれるCPUIDの呼び出しについて言及している記事がありますが、私の読書では、CPUIDを呼び出す必要があるタイミングと回数が明確ではありませんでした。

0 投票する
2 に答える
2170 参照

cpu - CPUID を使用して CPU スペックを検出する、信頼できるソリューションですか?

を使用して CPU に関する情報を収集しようとしています__cpuid()。私のコンピューターでは正常に動作していますが、同僚のコンピューターでプログラムを実行すると、Intel Core2 Quad Q6600がハイパースレッド化されていることが検出されますが、Intel 自身のサイトの仕様によるとそうではありません。

__cpuid()ここに示すように、間違った量の「論理コア」も検出しています: Programmatically detect number of physical processor/cores or if hyper-threading is active on Windows, Mac and Linux . Intel Xeon E5520には 16 個の論理コアと 8 個の物理コアがあると主張しています。

そのスレッドにあるコードを自分のコンピューターで実行してみました。Intel i7 2600Kは、Xeon と同じ数値を示しました。

では、実際にどの程度信頼できるの__cpuid()でしょうか? 私自身の経験から、それはそれほど信頼できるものではないようです。私は何か非常に根本的な問題を抱えていますか?