it-swarm-ja.com

GNU / Linuxで、CPUモデル名を確認するにはどうすればよいですか?

cat /proc/cpuidからさまざまなユーティリティまで、GNU/Linux環境でCPUに関する情報を取得するいくつかの方法を知っています。 ここ

しかし、それらのどれも私のCPUモデル名が何であるかを教えてくれないようです。つまり、(議論のために) Intel Pentium 4 530J があります。しかし、私がそれについて得ることができる情報の種類は、基本的に:メーカー/ベンダー、ファミリー-モデル-ステッピング、クロック速度(まあ、いくつかのフィールドがありますが、これは私が思うブランドを一意に識別するのに十分なはずです)。

Windowsには、 HWInfo などの無料の(ビールのような)ユーティリティがあり、ブランド名を教えてくれます(私の場合は、530という数字を表示する必要があります)。どこか)。 Linuxにも似たようなものはありませんか?

注:

  • グラフィック環境を必要としないものをお願いします。厳密にコマンドライン...
  • HWInfoは、CPUを「IntelPentium 4 530J(Prescott、E0)」として検出します。それが基本的に私が見たいものです。
2
einpoklum

最も単純なネイティブはcat /proc/cpuinfo|grep vendor_id

[[email protected] ~]$ cat /proc/cpuinfo | grep vendor_id
vendor_id       : GenuineIntel
vendor_id       : GenuineIntel

(これはデュアルコアシステムであるため、2回印刷されます)

興味深いことに、これは、非常に異なる形式の私のraspiでは機能しません

多くのディストリビューションにプリインストールされているとは思いませんが、lshwでもうまくいきます。使用 -class cpu関連情報をダンプするだけのフラグ

 Sudo lshw -class cpu 
 * -cpu 
説明:CPU 
製品:Celeron(Fill By OEM)
ベンダー:Intel Corp. 
物理ID:34 
バス情報:cpu @ 0 
バージョン:Intel(R)Celeron(R)CPU N2807 @ 1.58GHz 
スロット:SOCKET 0 
サイズ:1960MHz 
容量:2400MHz 
幅:64ビット
クロック:83MHz 

同様に、これは私のRaspberryPiでもまったく同じようには機能しません。ただし、これはx86ボクセンと一致している必要があります

Lshwの同等のAMDベンダー名はAdvancedMicro Devices(AMD)であり、vendor_idの/ proc/cpuinfo読み出しはAuthenticAMDです。

vendor_idsはこちら の完全なリストを見つけることができます)

つまり、vendorフラグは「ブランド」を識別し、製品フラグはその販売対象を識別する必要があります。

4
Journeyman Geek

ええと、 ウィキペディア上 、例があります(x86_64のみ)この目的のためのアセンブリリスト:

.section .data

s0 : .asciz "Processor Brand String: %.48s\n"
err : .asciz "Feature unsupported.\n"

.section .text

.global main
.type main,@function
.align 32
main:
    pushq   %rbp
    movq    %rsp,   %rbp
    subq    $48,    %rsp
    pushq   %rbx

    movl    $0x80000000,    %eax
    cpuid

    cmpl    $0x80000004,    %eax
    jl  error

    movl    $0x80000002,    %esi
    movq    %rsp,   %rdi

.align 16
get_brand:
    movl    %esi,   %eax
    cpuid

    movl    %eax,   (%rdi)
    movl    %ebx,   4(%rdi)
    movl    %ecx,   8(%rdi)
    movl    %edx,   12(%rdi)

    addl    $1, %esi
    addq    $16,    %rdi
    cmpl    $0x80000004,    %esi
    jle get_brand

print_brand:
    movq    $s0,    %rdi
    movq    %rsp,   %rsi
    xorb    %al,    %al
    call    printf

    jmp end

.align 16
error:
    movq    $err,   %rdi
    xorb    %al,    %al
    call    printf

.align 16
end:
    popq    %rbx
    movq    %rbp,   %rsp
    popq    %rbp
    xorl    %eax,   %eax
    ret

このコードをファイルにダンプします。たとえば、cpumodel.S、そしてそれをgcc/gasでコンパイルします:

gcc cpumodel.S -o cpumodel

その後、実行できます。

$ ./cpumodel
Processor Brand String: Intel(R) Core(TM)2 Duo CPU     T7300  @ 2.00GHz

Pentium 4/D CPUにはこの方法で使用できるモデル名がないように思われるため、この方法はおそらく機能しません。ご覧のとおり、 ここ 、CPUIDデータに必要なものが含まれていません。

0
Daniel B