В GNU / Linux, как я могу определить название модели моего процессора?

1346
einpoklum

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

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

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

Заметки:

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

2 ответа на вопрос

4
Journeyman Geek

Самый простой, родной будет 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 - класс процессора *-ЦПУ описание: процессор Продукт: Celeron (заполнить OEM) Производитель: Intel Corp. физический идентификатор: 34 информация об автобусе: процессор @ 0 версия: Intel (R) Celeron (R) CPU N2807 с частотой 1,58 ГГц слот: розетка 0 размер: 1960 МГц емкость: 2400 МГц ширина: 64 бита тактовая частота: 83 МГц 

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

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

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

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

Реализация виртуального файла `/ proc / cpuinfo` содержится в специфичных для архитектуры частях ядра Linux. Вот почему это выглядит по-разному на ARM и MIPS и еще много чего. Daniel B 9 лет назад 1
Это не решает мою проблему. В обоих случаях на выходе не указывается название бренда. `GenuineIntel` вообще ничего мне не говорит, а` sudo lshw -class cpu | версия grep: `дает` 15.4.1` (то есть Family.Model.Stepping). einpoklum 9 лет назад 0
Не версия, поставщик. GenuineIntel - идентификатор производителя для Intel Journeyman Geek 9 лет назад 0
Я думаю, что он хочет название модели, а не название бренда. Daniel B 9 лет назад 2
@DanielB: который также выводит lshw - странно, что его система этого не делает, но я полагаю, мне нужен больший размер выборки. Journeyman Geek 9 лет назад 0
Ну, видимо, это не для него. Я не знаю, зависят ли Linux или `lshw` от внутренней базы данных моделей процессоров. Daniel B 9 лет назад 0
@DanielB: Добавлено примечание о том, что я ожидаю увидеть. einpoklum 9 лет назад 0
@JourneymanGeek Также `lscpu` - это всего лишь одна команда для просмотра спецификаций процессора и модели. αғsнιη 9 лет назад 0
0
Daniel B

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

Когда я пытаюсь его скомпилировать, я получаю: `cpumodel.S: Сообщения ассемблера: \ n cpumodel.S: 12: Ошибка: неверное имя регистра \`% rbp '\ n cpumodel.S: 13: Ошибка: неправильное имя регистра \ «% rsp» и т. д. einpoklum 9 лет назад 0
Кроме того, это не правда, что больше ничего не будет. HWInfo использует базу данных торговых марок и не полагается только на то, что сообщает сам процессор. einpoklum 9 лет назад 0
Базы данных, очевидно, работают, но только если они содержат то, что вы хотите найти. Вы сказали в другом ответе, что это не работает. Видимо, этот код только для x86-64, извините за это. Поскольку `/ proc / cpuinfo` содержит ту же самую информацию, я сомневаюсь, что она даст что-нибудь полезное. Daniel B 9 лет назад 1
Ох, наоборот - он работает с HWInfo на Windows ... einpoklum 9 лет назад 0
Да что с того? С чего вы взяли, что ядро ​​Linux имеет интегрированную базу данных модели процессора? Если ваш CPU не поддерживает этот запрос CPUID (возможно, потому что он отключен в настройках BIOS), вам просто не повезло. Daniel B 9 лет назад 0
Я ищу утилиту с соответствующей базой данных ... einpoklum 9 лет назад 0

Похожие вопросы