/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 本身設定的標誌。
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP