如何使用x86info和cpuid命令在Linux上读取每个CPU的CPUID指令

时间:2020-01-09 10:41:24  来源:igfitidea点击:

是否有像免费软件/开源软件一样的CPU-Z,可以检测Linux操作系统中现代个人计算机的中央处理器(CPU)?
如何获得有关从CPUID指令收集的CPU的详细信息,包括Linux操作系统上CPU的确切型号?

Linux操作系统上有三个程序可以提供CPUID信息,这些工具对于确定特定的高级功能(例如虚拟化,扩展页表,加密等)是否有用:

  • lscpu命令`显示有关CPU体系结构的信息。
  • x86info命令显示x86 CPU诊断信息。
  • cpuid命令转储每个CPU的CPUID信息。这是Linux上CPU-Z应用程序的壁橱工具。

x86信息

x86info是一个程序,它显示有关x86系统中存在的CPU的一系列信息。

在Debian/Ubuntu Linux上安装x86info

$ sudo apt-get install x86info

在Fedora Linux上安装x86info

$ sudo dnf install x86info

在RHEL/SL/CentOS Linux上安装x86info

$ sudo yum install x86info

例子

只需执行以下命令:

# x86info

请参阅TLB,缓存大小和缓存关联性

# x86info -c

输出示例:

x86info v1.30.  Dave Jones 2001-2011
Feedback to <[email protected]>.
 
Found 4 identical CPUs
Extended Family: 0 Extended Model: 1 Family: 6 Model: 28 Stepping: 10
Type: 0 (Original OEM)
CPU Model (x86info's best guess): Atom D510
Processor name string (BIOS programmed): Intel(R) Atom(TM) CPU D510   @ 1.66GHz
 
Cache info
L1 Instruction cache: 32KB, 8-way associative. 64 byte line size.
L1 Data cache: 24KB, 6-way associative. 64 byte line size. ECC.
L2 cache: 512KB, 8-way associative. 64 byte line size.
TLB info
Found unknown cache descriptors: 4f 59 ba c0 
Total processor threads: 4
This system has 1 dual-core processor with hyper-threading (2 threads per core) running at an estimated 1.65GHz

查看CPU功能标记,例如AES/FPU/SSE等

# x86info -f

输出示例:

x86info v1.30.  Dave Jones 2001-2011
Feedback to <[email protected]>.
 
Found 4 identical CPUs
Extended Family: 0 Extended Model: 1 Family: 6 Model: 28 Stepping: 10
Type: 0 (Original OEM)
CPU Model (x86info's best guess): Atom D510
Processor name string (BIOS programmed): Intel(R) Atom(TM) CPU D510   @ 1.66GHz
 
Feature flags:
fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflsh ds acpi mmx fxsr sse sse2 ss ht tm pbe sse3 dtes64 monitor ds-cpl tm2 ssse3 cx16 xTPR pdcm movbe
Extended feature flags:
SYSCALL xd em64t lahf_lm dts
Long NOPs supported: yes
 
Total processor threads: 4
This system has 1 dual-core processor with hyper-threading (2 threads per core) running at an estimated 1.65GHz

请参阅MP表,其中显示了BIOS知道的CPU

# x86info -mp

输出示例:

x86info v1.30.  Dave Jones 2001-2011
Feedback to <[email protected]>.
 
MP Table:
#	APIC ID	Version	State		Family	Model	Step	Flags
#	 0	 0x14	 BSP, usable	 6	 12	 10	 0xbfebfbff
#	 2	 0x14	 AP, usable	 6	 12	 10	 0xbfebfbff
.....
..

显示所有可能的cpuid调用中的寄存器值

# x86info -r

要查看所有信息,请执行:

# x86info -a

cpuid

cpuid转储从CPUID指令收集的有关CPU的详细信息,并从该信息中确定CPU的确切型号。
它转储CPUID指令中所有可用的信息。
可用的确切信息收集因制造商和处理器而异。
在所有现代CPU上始终可以使用以下信息:

  • vendor_id
  • 版本信息(1/eax)
  • 杂项(1/ebx)
  • 功能信息(1/ecx)

在Debian/Ubuntu Linux上安装cpuid

$ sudo apt-get install cpuid

在Fedora Linux上安装cpuid

$ sudo dnf install cpuid

在RHEL/SL/CentOS Linux上安装cpuid

$ sudo yum install cpuid

例子

只需执行以下命令(此命令将提供许多有用的信息,包括以人类可读格式显示的所有功能的列表):

# cpuid
# cpuid | less
# cpuid | grep 'something'

仅显示第一个CPU的信息

# cpuinfo -1

使用CPUID指令(默认且非常可靠)

# cpuinfo -i

使用CPUID内核模块(在CPU类型和内核版本的所有组合上似乎都不可靠)

# cpuinfo -k

搜索特定的CPU功能

## Is virtualization supported (see below for flags)? ##
# cpuid -1 | egrep --color -iw 'vmx|svm|ept|vpid|npt|tpr_shadow|vnmi|flexpriority'
`VMX: virtual machine extensions = true`
## Is advanced encryption supported? ##
# cpuid -1 | egrep --color -i 'aes|aes-ni'
`AES instruction = true`

在基于Linux的系统上,系统管理员的一些重要标志:

  • vmx Intel VT-x,基本虚拟化。
  • svm AMD SVM,基本虚拟化。
  • " ept"扩展页表,这是一项Intel功能,可以更快地模拟来宾页表。
  • " vpid" VPID是Intel的一项功能,在来宾之间进行上下文切换时,无需进行昂贵的TLB刷新。
  • npt AMD嵌套页表,类似于EPT。
  • " tpr_shadow"和" flexpriority"英特尔功能可减少访问任务优先级寄存器时对虚拟机管理程序的调用,这在运行某些类型的SMP来宾时会有所帮助。
  • vnmi英特尔虚拟NMI功能,可帮助解决来宾中的某些中断事件。

仅显示第一个CPU的信息

# cpuinfo -1

lscpu命令示例

您将获得有关Linux上的CPU体系结构的信息:

$ lscpu

输出示例:

Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                32
On-line CPU(s) list:   0-31
Thread(s) per core:    2
Core(s) per socket:    8
Socket(s):             2
NUMA node(s):          2
Vendor ID:             GenuineIntel
CPU family:            6
Model:                 45
Stepping:              7
CPU MHz:               2000.063
BogoMIPS:              4001.39
Virtualization:        VT-x
L1d cache:             32K
L1i cache:             32K
L2 cache:              256K
L3 cache:              20480K
NUMA node0 CPU(s):     0-7,16-23
NUMA node1 CPU(s):     8-15,24-31

当然,您也可以从/proc/cpuinfo/dev/cpu/*文件中提取信息:

$ less /proc/cpuinfo