/proc/cpuinfo 中最常用的標誌


概述

我們將瞭解一下計算機主機板上安裝的 CPU 上提供的一些功能。在深入探討主題細節之前,我們將簡要了解虛擬檔案系統的概念。

之後,我們將討論從不同 CPU 製造商(如英特爾、AMD 和 Arm)的 /proc/cpuinfo 虛擬目錄中獲得的標誌。

虛擬檔案

虛擬檔案系統 (VFS) 是一個抽象層,允許我們將檔案視為儲存在磁碟驅動器上。

VFS 提供了一種訪問資料的方法,而無需瞭解資料實際儲存的位置。例如,您可以透過指定文字文件或影像檔案的名稱來開啟它,而無需確切知道它位於何處。

這種方法使得在一臺機器上使用多個作業系統成為可能。Linux 核心原生支援此功能,但其他作業系統可能無法支援。

虛擬檔案系統是 Linux 作業系統上提供的一種特殊型別的檔案系統。透過讀取它們,我們可以瞭解 Linux 核心內部發生了什麼。它們就像透鏡,您可以透過它們檢視正在執行的 Linux 核心。與普通文件不同,虛擬文件不佔用硬碟空間,並且僅在開啟時建立。

大多數 Linux 發行版將虛擬檔案儲存在 /proc 目錄中。我們可能需要 root 許可權才能讀取虛擬環境中儲存的一些檔案。讓我們看一下 /proc 目錄中的內容 -

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

該命令將列出許多檔案,但我們只對 cpuinfofile 感興趣,它恰好位於基本資料夾內。

/proc/cpuinfo 虛擬檔案

系統

/proc/cpuinfo 檔案包含有關係統上所有 CPU 的資訊。這包括基本的硬體資訊,例如處理器型別、核心數、快取大小等。

它還顯示了與 CPU 相關的各種標誌。其中包括 -

  • 標誌

  • 描述

  • 核心數

  • 物理核心數

  • 每個核心的執行緒數

  • 支援的最大執行緒數

  • 快取大小等。

# 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 能為我們做什麼的重要功能。

常見的英特爾定義的標誌

下面列出了由英特爾定義的最常見的標誌,這些標誌也出現在許多其他處理器中。

lm

lm 標誌表示我們的 CPU 支援 64 位架構。因此,任何基於 x86 的 64 位 CPU 都設定了此標誌,而 32 位 CPU 則沒有。

vmx 和 svm

Vmx(虛擬機器擴充套件)表示我們的英特爾 CPU 支援虛擬機器。像 VMWare 這樣的虛擬機器軟體使用此功能來提高效能和其他增強功能。

另一方面,svm(可擴充套件向量機)標誌的工作原理與 sse2 標誌相同,但它僅適用於 AMD 處理器。

smx

在 64 位處理器上,可以使用 SMX(安全模式擴充套件)功能。它是用於在英特爾 TXT 平臺中實施安全策略的 API(應用程式程式設計介面)。此功能允許您限制對某些記憶體位置的訪問或阻止來自特定來源的程式碼執行。

hypervisor

hypervisor 位指示 CPU 是否支援同時執行多個作業系統。虛擬計算機是一種執行和控制虛擬計算機的軟體。有一些流行的虛擬機器可用,包括 VirtualBox 和 VMware。

如果 CPU 沒有這些標誌,則它很可能也沒有 vmx 或 SVM 標誌。

pae

PAE 代表物理地址擴充套件。它是一種用於現代 CPU 的技術,允許它們使用超過 4GB 的 RAM。PAE 使您的系統能夠定址高達 64 GB 的 RAM。

pn

每個英特爾® 酷睿™ i7 處理器都有一個唯一的序列號,稱為 PN,代表“處理器序列號”。此序列號對於每個處理器都是唯一的,通常稱為其“PN”或“處理器序列號”。

acpi

此標誌告訴我們我們的 CPU 是否支援 ACPI(高階配置和電源介面)。該首字母縮寫詞代表高階配置和電源介面。ACPI 是由微軟和英特爾開發的一項標準,它定義了裝置如何與作業系統通訊。

sse

流式 SIMD 擴充套件 (SSE) 是英特爾處理器指令集的補充。SIMD 代表單指令多資料。SSE 允許我們的 CPU 同時處理多種資料型別,從而透過允許它們同時執行任務來提高其效能。它主要應用於 3D 圖形、計算機視覺和數字訊號處理等處理密集型應用程式中。

sse2

第二代流式 SIMD 擴充套件 (Sse2) 是對英特爾處理器指令集的另一種增強。SSE2 添加了新的指令,這些指令可以提高多媒體應用程式(如影片編碼和解碼、影像處理和音訊編碼)的效能。

sse3

SSE3 代表流式 SIMD 擴充套件 3。這些擴充套件旨在改進多媒體應用程式。例如,它們可以加速影片編碼和解碼。

sse4_1 和 sse4_2

這兩個標誌分別表示我們的 CPU 分別支援流式 SIMD 擴充套件 4.1 和 4.2。它們可以使多媒體應用程式更快。

ht

HT(超執行緒)標誌表示我們在單個物理處理器上擁有兩個邏輯 CPU。超執行緒有助於提高效能,因為多個執行緒可以同時執行。

tm

此標誌表示我們的 CPU 支援 TM(事務記憶體)。事務記憶體是一種新的程式設計模型,使程式設計師能夠編寫併發程式,而無需擔心資料競爭。TM 功能允許開發人員使用事務記憶體來確保所有指令原子地執行。

pdcm

英特爾 CPU 中的 PDCM 標誌代表性能和除錯控制模式 MSR。MSR 是儲存每種型別的處理器指令的特定值的暫存器。特殊的除錯暫存器可用於各種目的,包括程式碼跟蹤、基準測試和效能監控。

常見的 AMD 定義的標誌

AMD 也使用其中一些標誌 -

mp

MP 標誌表示多處理器。它指示我們的 CPU 具有多個核心。

avx

AVX 代表高階向量擴充套件。AVX 是一種新的指令集擴充套件,可以提高某些演算法的效能。

fma

FMA 代表浮點乘加。FMA 是一種浮點運算,它將乘法和加法組合到單個指令中。

lm

LM 代表無鎖多執行緒。LM 是一種新技術,它使得在單個核心上執行多個執行緒成為可能。

mmx

MMX 代表多精度擴充套件。MMX 是一組於 1996 年引入的指令。

abm

ABM 代表基於地址的對映。ABM 是一種將虛擬地址對映到物理地址的技術。

sse4a

SSE4A 代表流式 SIMD 擴充套件 4.0。此擴充套件於 2011 年釋出。

常見的 ARM 定義的標誌

ARM 定義了自己的標誌。以下是一些常見的標誌 -

26bit

26 位寬資料指示處理器是否支援 26 位寬資料傳輸。此功能在新的 ARM 處理器中不可用。

java

ARM 處理器中的 java 標誌指示 Jazelle DBX 擴充套件。Java 虛擬機器 (JVM) 利用此擴充套件來執行硬體加速的位元組碼執行,從而使我們的程式能夠更快地執行。

neon

此標誌也稱為高階 SIMD 擴充套件。它加速媒體和數字訊號處理應用程式,例如影片遊戲和相機應用程式。在 32 位 Arm Cortex A8 處理器上,它將由 NE10 標誌發出訊號;在 64 位 Arm Cortex A9 處理器上,它將由 ASIMD 標誌發出訊號。

需要注意的是,即使較舊的 Linux 核心版本可能不支援 SSE2 指令,如果設定了 asimd 標誌,它們仍將顯示。

lpae

lpae(大頁面地址擴充套件)選項告訴我們我們的處理器支援大頁面,這允許我們在 32 位處理器上擁有超過 4GB 的物理記憶體。

thumb

Thumb 是某些 x86 處理器支援的架構。Thumb 指令寬 8 位,如果我們的物理記憶體 (RAM) 比我們想要的慢,則允許程式執行得更快。

Linux 定義的標誌

在您的 /proc/cpuinfo 檔案中,您可能會看到許多其他型別的標誌。其中包括 -

tsc_reliable

TSC 代表時間戳計數器,它測量自重置以來 CPU 時鐘滴答的次數。此位告訴我們 TSC 暫存器是否可靠。使用此標誌是因為當系統具有多核處理器時,無法信任 TSC,因為無法保證多個核心的計數器將同步。

acc_power

AMD CPU 上的 ACCPOWER 標誌表示我們的 CPU 可以報告其累積的功耗。它被稱為累積功耗報告機制。

結論

我們已經瞭解了虛擬檔案系統的概念,以及 /proc/cpuinfo 虛擬檔案系統的作用。之後,我們查看了一些在 /proc/cpuinfofile 檔案中可以找到的重要標誌。

我們查看了 Intel 定義的標誌型別以及 AMD 和 ARM 定義的標誌型別。我們已經瀏覽了一些 Linux 本身設定的標誌。

更新於: 2022年12月23日

997 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.