問題タブ [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.
c++ - CPUID のような情報の組み込み関数?
私は C++ でコーディングしていることを考慮して、可能であれば、組み込み関数のようなソリューションを使用して、ハードウェアに関する有用な情報を読みたいと思います。私の懸念/考慮事項は次のとおりです。
- 私はアセンブリをよく知りません。この種の情報を取得するだけでもかなりの投資になります (CPU のように見えますが、値を反転してレジスタを読み取るだけです。)
- asm には少なくとも 2 つの一般的な構文 ( Intel と AT&T ) があるため、断片化されています。
- 奇妙なことに、組み込み関数は、最近では asm コードよりも人気があり、サポートされています
- 現在、私のレーダーにあるすべてのコンパイラがインライン asm をサポートしているわけではありません。MSVC 64 ビットはその 1 つです。私が使用しなければならないさまざまなコンパイラの機能セットをさらに掘り下げているうちに、他の同様の欠陥が見つかるのではないかと心配しています。
- 組み込み関数に賭ける方が生産的であると私が考えるトランズを考えると、それはどの asm コードよりもはるかに簡単なはずです。
そして、私が答えなければならない最後の質問は、組み込み関数で同様のことを行うにはどうすればよいかということです。この種の情報を取得するための CPUID オペコード以外に何も見つからなかったからです。
c - PowerPC で利用できる x86 cpuid() のようなものはありますか?
x86 で cpuid を使用して実行できるように、PowerPC でプロセッサ属性を照会できる C コードをいくつか書きたいと思います。ブランド、モデル、ステッピング、SIMD 幅、利用可能な操作などを調べて、問題が発生する前に互換性のあるプラットフォームでコードが使用されていることを実行時に確認できるようにしています。
PowerPC でこれを行うための一般的なメカニズムはありますか? もしそうなら、どこでそれについて読むことができますか?
assembly - CPUID 出力は操作の順序によって異なります
コマンドラインであるはずのおもちゃのOSを書いています。機能に CPUID を追加しようとしましたが、CPUID を連続して呼び出すと、奇妙な結果が得80000002h
られ80000003h
ます80000004h
。他の順序で呼び出すと、正常に動作します。
連続注文
別の注文:
これは、コードの問題のある部分です。
CPU ブランド文字列の最後の部分をコピーしない場合でも、コードはこのように動作します。つまり、`jmp prnt.
この部分は単独でファイル内で正常に動作するため、コード全体をここに投稿しました。
私は解決策を探しているのではなく、何が起こっているのかについての説明を求めていることに注意してください。
assembly - AMD CPU にモジュールがあるかどうかを検出する
一部の Intel CPU にはハイパースレッディングがあり、レジスタ EDX のビット 28 を CPUID から読み取ることで検出できます。AMD CPU にはハイパースレッディングはありませんが、一部の CPU には 2 つの整数ユニットと 1 つの浮動小数点ユニットを持つモジュールがあります。CPUID などを使用して、CPU にモジュールがあるかどうかを検出する方法はありますか?
編集:Jesterの回答に基づいて、「計算ユニット」(別名モジュール)あたりのコア数を決定するために、次のテストされていない関数(AMDプロセッサにアクセスできません)を思いつきました。
http://amd-dev.wpengine.netdna-cdn.com/wordpress/media/2012/10/42301_15h_Mod_00h-0Fh_BKDG1.pdf