2

Я знаю несколько способов получения информации о моем процессоре в среде GNU/Linux, от cat /proc/cpuid до различных утилит, см., Например, здесь

Тем не менее, никто из них не говорит мне, как называется моя модель процессора. Я имею в виду, у меня есть (для обсуждения) Intel Pentium 4 530J. Но информация, которую я могу получить об этом, в основном: Производитель / Продавец, Семейство-модель-шаг, Тактовая частота (ну, еще несколько полей, но этого должно быть достаточно, чтобы однозначно идентифицировать марку, я думаю).

В Windows у нас есть бесплатные (как в пиве) утилиты, такие как HWInfo, которые сообщают нам название бренда (в моем случае - где-то должно появиться число 530). Разве нет ничего похожего и для Linux?

Заметки:

  • Ничего, требующего графического окружения, пожалуйста. Строго командная строка ...
  • HWInfo определяет процессор как «Intel Pentium 4 530J (Prescott, E0)». Это в основном то, что я хочу видеть.

2 ответа2

4

Самым простым, нативным будет cat /proc/cpuinfo|grep vendor_id

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

(Это напечатано дважды, потому что это двухъядерная система)

Интересно это dosen't работать с моим raspi, который имеет совсем другой формат

Я не думаю, что он предустановлен во многих дистрибутивах, но lshw тоже подойдет. Используйте флаг -class cpu чтобы просто выгрузить соответствующую информацию

 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

Кроме того, это не работает на моем Raspberry Pi тоже так. Однако это должно соответствовать x86 boxen.

Эквивалентное имя поставщика AMD для lshw - Advanced Micro Devices (AMD), а считывание /proc /cpuinfo для vendor_id - AuthenticAMD.

(Вы можете найти полный список vendor_ids здесь)

Короче говоря, флаг продавца должен идентифицировать «бренд», а флаг продукта должен определять, что продается.

0

Ну, в Википедии есть пример (только 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 не имеют названия своей модели, доступной таким образом. Как вы можете видеть здесь, данные CPUID не содержат то, что вы хотите.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .