在 GNU/Linux 上,如何确定我的 CPU 型号名称?

在 GNU/Linux 上,如何确定我的 CPU 型号名称?

我知道在 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 数据不包含您想要的内容。

相关内容