我知道在 GNU/Linux 环境中获取 CPU 信息的方法有很多,cat /proc/cpuid
例如这里
然而,似乎没有一个人告诉我我的 CPU型号名称是。我的意思是,我(为了讨论)有一个英特尔奔腾 4 530J。但我可以获得的信息基本上是:制造商/供应商、系列型号步进、时钟速度(好吧,还有一些字段,但我认为这足以唯一地识别品牌)。
在 Windows 上,我们有免费的(如 beer)实用程序,例如信息网这告诉我们品牌(在我的例子中 - 数字 530 必须出现在某处)。Linux 上没有类似的东西吗?
笔记:
- 请不要使用图形环境。严格来说,命令行...
- HWInfo 确实检测到 CPU 为“Intel Pentium 4 530J (Prescott, E0)”。这基本上就是我想要看到的。
答案1
最简单的,本土的就是cat /proc/cpuinfo|grep vendor_id
[geek@phoebe ~]$ cat /proc/cpuinfo | grep vendor_id
vendor_id : GenuineIntel
vendor_id : GenuineIntel
(由于这是双核系统,因此打印了两次)
有趣的是没有使用我的 raspi,它的格式非常不同
我认为它没有预装在许多发行版中,但 lshw 也可以做到这一点。使用该-class cpu
标志仅转储相关信息
sudo lshw-cpu 类 *-中央处理器 描述:中央处理器 产品: Celeron (由 OEM 填充) 供应商:英特尔公司 物理 ID:34 总线信息:cpu@0 版本:Intel(R) Celeron(R) CPU N2807 @ 1.58GHz 插槽:SOCKET 0 尺寸:1960MHz 容量:2400MHz 宽度:64 位 时钟:83MHz
同样,这在我的树莓派上也不起作用。这应该但与 x86 boxen 一致。
lshw 的等效 AMD 供应商名称是 Advanced Micro Devices (AMD),而 /proc/cpuinfo 中 vendor_id 的读数是 AuthenticAMD
(您可以找到vendor_ids 在此处)
简而言之,小贩旗帜应标明“品牌”,产品旗帜应标明其所售产品。
答案2
出色地,在维基百科上,有一个例子(仅限 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 数据不包含您想要的内容。