No GNU / Linux, como posso determinar o nome do meu modelo de CPU?

2

Eu conheço várias maneiras de obter informações sobre minha CPU em um ambiente GNU / Linux, de cat /proc/cpuid a vários utilitários, consulte, por exemplo, aqui

No entanto, nenhum deles parece me dizer qual é o nome do meu modelo de CPU . Quero dizer, eu tenho (por uma questão de discussão) um Intel Pentium 4 530J . Mas o tipo de informação que eu posso conseguir é basicamente: Fabricante / Vendedor, Família-Modelo-Stepping, Velocidade do clock (bem, mais alguns campos, mas isso deve ser o suficiente para identificar exclusivamente a marca que eu acho).

No Windows, temos utilitários gratuitos (como em cerveja), como HWInfo , que nos informam o nome da marca (no meu caso - o número 530 tem que aparecer em algum lugar). Não há algo similar para o Linux também?

Notas:

  • Nada que exija um ambiente gráfico, por favor. Estritamente linha de comando ...
  • O HWInfo detecta a CPU como um "Intel Pentium 4 530J (Prescott, E0)". Isso é basicamente o que eu quero ver.
por einpoklum 20.12.2014 / 10:24

2 respostas

4

O mais simples, nativo seria cat /proc/cpuinfo|grep vendor_id

[geek@phoebe ~]$ cat /proc/cpuinfo | grep vendor_id
vendor_id       : GenuineIntel
vendor_id       : GenuineIntel

(É impresso duas vezes porque isso é um sistema dual core)

Curiosamente, este não faz trabalho com o meu raspi, que tem um formato muito diferente

Eu não acho que ele esteja pré-instalado em muitas distros, mas o lshw também faria o truque. Use o sinalizador -class cpu para apenas descartar as informações relevantes

 sudo lshw -class cpu
  *-cpu
       description: CPU
       product: Celeron (Fill By OEM)
       vendor: Intel Corp.
       physical id: 34
       bus info: cpu@0
       version: Intel(R) Celeron(R) CPU N2807 @ 1.58GHz
       slot: SOCKET 0
       size: 1960MHz
       capacity: 2400MHz
       width: 64 bits
       clock: 83MHz

Da mesma forma, isso não funciona no meu pi framboesa da mesma maneira também. Este deve ser consistente com x86 boxen no entanto.

O nome do fornecedor AMD equivalente para lshw é Advanced Micro Devices (AMD) e a leitura / proc / cpuinfo para vendor_id é AuthenticAMD

(Você pode encontrar uma lista completa de vendor_ids aqui )

Em suma, o sinalizador fornecedor deve identificar a "marca" e o sinalizador do produto deve identificar o que é vendido como.

    
por 20.12.2014 / 11:19
0

Bem, na Wikipedia , há um exemplo ( x86_64 somente ) lista de montagem para este propósito:

.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

Descarregue este código em um arquivo, digamos cpumodel.S , e compile-o com gcc / gas:

gcc cpumodel.S -o cpumodel

Depois, você pode executá-lo:

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

Esse método provavelmente não funcionará para você , já que parece que os processadores Pentium 4 / D não têm o nome do modelo disponível dessa maneira. Como você pode ver aqui , os dados da CPUID não contêm o que você deseja .

    
por 20.12.2014 / 17:21