Contents

/proc/cpuinfo中最常见的标志

1. 概述

在本教程中,我们将介绍安装在系统主板上的 CPU 支持的功能。在我们这样做之前,我们将简要了解一下虚拟文件的概念。

之后,我们将介绍从*/proc/cpuinfo*虚拟文件中检索到的不同 CPU 制造商(例如 Intel、AMD 和 ARM)的标志。

2. 虚拟文件

虚拟文件是基于 Linux 的操作系统上可用的一种特殊类型的文件。通过读取虚拟文件,我们可以看到 Linux 内核此刻在做什么。因此,它们是一种镜头,我们可以通过它们窥视正在运行的 Linux 内核。与常规文件不同,虚拟文件不占用磁盘空间,仅在我们读取它们时创建。

在大多数 Linux 发行版上,虚拟文件位于/proc*目录*中。我们可能需要 root 访问权限才能读取一些虚拟文件。让我们看看*/proc*目录里面有什么:

# ls -halF /proc
total 4.0K
-r--r--r--   1 root             root              56K Jul 13 00:18 config.gz
-r--r--r--   1 root             root                0 Jul 13 00:18 consoles
-r--r--r--   1 root             root                0 Jul 13 00:14 cpuinfo
-r--r--r--   1 root             root                0 Jul 13 00:14 devices
-r--r--r--   1 root             root                0 Jul 13 00:18 diskstats
-r--r--r--   1 root             root                0 Jul 13 00:18 filesystems
dr-xr-xr-x   5 root             root                0 Jul 13 00:18 fs/
-r--r--r--   1 root             root                0 Jul 13 00:18 vmstat
-r--r--r--   1 root             root                0 Jul 13 00:18 zoneinfo

该命令将列出许多文件,但我们只对cpuinfo文件感兴趣,它恰好位于基本目录中。

3. /proc/cpuinfo虚拟文件

/proc/cpuinfo虚拟文件包含有关我们系统主板中当前可用 CPU 的信息。我们将使用cat 命令来读取文件:

# cat /proc/cpuinfo
processor	: 0
vendor_id	: GenuineIntel
cpu family	: 6
model		: 94
model name	: Intel(R) Celeron(R) CPU G3900 @ 2.80GHz
stepping	: 3
microcode	: 0xea
cpu MHz		: 899.999
cache size	: 2048 KB
physical id	: 0
siblings	: 2
core id		: 0
cpu cores	: 2
apicid		: 0
initial apicid	: 0
fpu		: yes
fpu_exception	: yes
cpuid level	: 22
wp		: yes
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 sdbg cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave rdrand lahf_lm abm 3dnowprefetch cpuid_fault epb invpcid_single pti ssbd ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid ept_ad fsgsbase tsc_adjust erms invpcid rdseed smap clflushopt intel_pt xsaveopt xsavec xgetbv1 xsaves dtherm arat pln pts hwp hwp_notify hwp_act_window hwp_epp md_clear flush_l1d
vmx flags	: vnmi preemption_timer invvpid ept_x_only ept_ad ept_1gb flexpriority tsc_offset vtpr mtf vapic ept vpid unrestricted_guest ple pml
bugs		: cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf mds swapgs itlb_multihit srbds
bogomips	: 5599.85
clflush size	: 64
cache_alignment	: 64
address sizes	: 39 bits physical, 48 bits virtual

正如我们所见,它打印了包含标志字段的 CPU 规范。在下一节中,我们将了解一些可以帮助我们了解 CPU 可以做什么的重要标志。

4. 常见的 Intel 定义的标志

4.1. lm

lm标志代表长模式。这表明我们的 CPU 支持 64 位架构。因此,与 32 位 CPU 不同,任何 x86-64 CPU 都会有这个标志。

4.2. vmxsvm

vmx(虚拟机扩展)标志表明我们的 Intel CPU 具有对虚拟机的硬件支持。VirtualBox 等虚拟机软件利用此扩展来提高性能和其他增强功能。

另一方面,svm标志具有相同的目的,但它仅适用于 AMD CPU

4.3. smx

smx (安全模式扩展)标志在 64 位处理器上可用*。*它是 Intel TXT 平台中可用的编程接口,这是一种提供保护机制实施的芯片组。

4.4. hypervisor

hypervisor标志表明 CPU 具有运行虚拟机的硬件支持。虚拟机是运行和管理虚拟操作系统的软件。一些流行的虚拟机包括 VirtualBox 和 VMware。

如果 CPU 缺少这个标志,它很可能也没有vmxsvm标志。

4.5. pae

PAE(物理地址扩展)是基于 x86 处理器的内存管理功能。此功能允许我们的 CPU 访问大于 4 GB 的物理内存。自 2003 年以来生产的大多数处理器都提供此功能。因此,大多数现代操作系统都支持此功能。

4.6. PN

英特尔的处理器有一个称为pn的唯一序列号,它是处理器序列号 (PSN) 的缩写。该序列号对每个处理器都是唯一的,程序使用该序列号来识别各个处理器。

4.7. acpi

首字母缩写词 ACPI 代表高级配置和电源接口。它最初由 Intel、Microsoft 和 Toshiba 开发,是一种标准规范,旨在允许操作系统发现和配置硬件组件。例如,我们的操作系统使用它来执行连接到计算机系统的外围设备的电源管理

操作系统还利用它对即插即用设备进行自动配置,并进行温度信息等状态监控。

4.8. sse

SSE(流 SIMD 扩展)是基于 Intel 的处理器的扩展。SIMD 的首字母缩写词又代表单指令多数据。SSE 使我们的CPU 能够处理多个数据元素,从而通过并行处理提高性能。它主要用于过程密集型应用,如 3D 图形、计算机视觉和数字信号处理。

4.9. sse2

SSE2 是 SSE 的扩展版本。与 SSE 不同,SSE2 能够处理 64 位值。它还有 144 条指令,能够同时对多条信息执行一项任务。

4.10. sse3

SSE3 是 SSE 的第三个版本,也称为 Prescott New Instructions (PNI)。它有 13 条新指令,并提高了数字信号处理和 3D 操作的性能。

4.11.sse4_1sse4_2

SSE4 是 SSE 的最新版本,也称为 HD Boost。标志sse4_1sse4_2 分别表示 SSE 4.1 和 SSE 4.2。两个版本都包含 54 条新指令的子集。

4.12. HT

ht代表超线程。超线程允许 CPU 的内核以并行方式执行多个线程。结果,它提高了效率,从而允许我们同时运行多个程序。但是,ht标志并不表示 CPU 启用了超线程。它仅表明 CPU 具有超线程能力。

4.13.Tm

Thermal Monitor 是 Intel CPU 中的一项功能,可通过降低时钟速度来减少其热输出。因此,当处理器的温度上升到一定限度以上时,CPU 可以进行热管理。当然,它可以降低 CPU 性能,但可以防止它被损坏。

此外,可以在 BIOS 设置中启用此功能。

4.14. pdcm

Intel CPU 中的pdcm标志是 Performance and Debugging Capability MSR 的缩写。反过来,MSR 代表特定于模型的寄存器。顾名思义,一个特殊的寄存器可以用来进行调试、程序执行跟踪、基准测试和性能监控。

5. 常见的 AMD 定义的标志

5.1. mp

AMD CPU 中的mp标志代表多处理。**多处理允许我们的系统同时执行多个进程,**因为系统能够支持多个处理器并在它们之间分配任务。因此,它可以为我们提供更高的吞吐量和可靠的系统,因为如果其中一个处理器发生故障,系统不会停止。

5.2. lm

与 Intel CPU 一样,lm标志代表长模式。当 AMD CPU 支持长模式时,它支持 64 位。

5.3. abm

abm代表高级位操作。它是 Intel 和 AMD 处理器中的一个扩展,可提供更高的位操作速度

5.4. sse4a

SSE4A 是一种流式 SIMD 扩展,在 AMD 处理器中包含 4 条 SIMD 指令。

6. 常见的 ARM 定义的标志

6.1. 26位

26位标志表示处理器支持 26 位宽的数据。此标志在较新的 ARM 处理器中不可用。

6.2. java

ARM 处理器中的java标志表示 Jazelle DBX 扩展。Java 虚拟机 (JVM) 利用此扩展来执行硬件加速的字节码执行,从而使我们的程序执行得更快。

6.3. neon

此标志也称为高级 SIMD 扩展。此扩展为视频游戏和相机应用程序等**媒体和数字信号处理程序提供加速。**在 32 位 ARM 处理器上,它将被指示为neon,而 64 位 ARM 处理器将通过asimd标志发出信号。

此外,应该注意的是,较旧的 Linux 内核将通过asimd标志来指示它,而不管处理器架构如何

6.4. lpae

lpae标志指出我们的处理器支持大物理地址扩展,这允许我们在 32 位处理器上拥有超过 4 GB 的物理内存

6.5.Thumb

Thumb 是一些 ARM 处理器支持的指令集。Thumb 指令是 16 位宽的,如果我们的物理内存很慢,它可以让代码更小更快。

7. Linux 定义的标志

7.1. tsc_reliable

TSC 代表时间戳计数器,它计算自复位以来的 CPU 周期数。该标志表明 TSC 寄存器已知是可靠的。存在此标志是因为当系统具有多核 CPU 时 TSC 不可靠,因为没有保证多个 CPU 的计数器将同步。

7.3. acc_power

AMD CPU 上的acc_power标志表明我们的 CPU 可以计算处理器的平均功耗。它是 AMD Accumulated Power Reporting Mechanism 的缩写