Come posso sapere se il mio processore ha una caratteristica particolare? (set di istruzioni a 64 bit, virtualizzazione assistita da hardware, acceleratori crittografici, ecc.) So che il file /proc/cpuinfo
contiene queste informazioni, nei flags
linea, ma cosa significano tutte queste criptiche abbreviazioni?
Ad esempio, dato il seguente estratto da /proc/cpuinfo
, ho una CPU a 64 bit? Ho la virtualizzazione hardware?
model name : Intel(R) Core(TM)2 Duo CPU E8400 @ 3.00GHz
…
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 lm constant_tsc arch_perfmon pebs bts rep_good aperfmperf pni dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm sse4_1 lahf_lm tpr_shadow vnmi flexpriority
Risposta accettata:
x86
(32 bit alias i386–i686 e 64 bit alias amd64. In altre parole, la tua workstation, laptop o server.)
Domande frequenti:Ho...
- 64 bit (x86_64/AMD64/Intel64)?
lm
- Virtualizzazione hardware (VMX/AMD-V)?
vmx
(Intel),svm
(AMD) - AES accelerato (AES-NI)?
aes
- TXT (TPM)?
smx
- un hypervisor (annunciato come tale)?
hypervisor
La maggior parte delle altre funzionalità interessano solo gli autori di compilatori o kernel.
Tutte le bandiere
L'elenco completo è nel sorgente del kernel, nel file arch/x86/include/asm/cpufeatures.h
.
Caratteristiche CPU definite da Intel, livello CPUID 0x00000001 (edx)
Vedere anche Wikipedia e la tabella 2-27 in Intel Advanced Vector Extensions Programming Reference
fpu
:FPU integrato (supporto virgola mobile)vme
:Miglioramenti alla modalità 8086 virtualede
:Estensioni di debug (CR4.DE)pse
:Estensioni del formato pagina (pagine di memoria da 4 MB)tsc
:contatore timestamp (RDTSC)msr
:Registri specifici del modello (RDMSR, WRMSR)pae
:Estensioni dell'indirizzo fisico (supporto per più di 4 GB di RAM)mce
:Eccezione controllo macchinacx8
:Istruzione CMPXCHG8 (confronto e scambio a 64 bit)apic
:a bordo dell'APICsep
:SYSENTER/SYSEXITmtrr
:Registri dell'intervallo del tipo di memoriapge
:Pagina Global Enable (bit globale in PDE e PTE)mca
:Architettura di controllo macchinacmov
:Istruzioni CMOV (movimento condizionale) (anche FCMOV)pat
:Tabella degli attributi di paginapse36
:PSE a 36 bit (pagine enormi)pn
:Numero di serie del processoreclflush
:Istruzione di svuotamento della linea della cachedts
:Debug Store (buffer per le istruzioni di debug e profilazione)acpi
:ACPI tramite MSR (monitoraggio della temperatura e modulazione della velocità di clock)mmx
:Estensioni multimedialifxsr
:FXSAVE/FXRSTOR, CR4.OSFXSRsse
:Istruzioni vettoriali Intel SSEsse2
:SSE2ss
:Snoop automatico della CPUht
:Hyper-Threading e/o multi-coretm
:Controllo automatico dell'orologio (monitor termico)ia64
:Architettura Intel Itanium a 64 bit (da non confondere con l'architettura Intel x86 a 64 bit con flagx86-64
o bit “AMD64” indicato dal flaglm
)pbe
:Supporto per l'attivazione dell'interruzione in sospeso (PBE# pin)
Caratteristiche CPU definite da AMD, livello CPUID 0x80000001
Vedere anche Wikipedia e la tabella 2-23 in Intel Advanced Vector Extensions Programming Reference
syscall
:SYSCALL (Chiamata rapida di sistema) e SYSRET (Ritorno da chiamata rapida di sistema)mp
:Capacità di elaborazione multipla.nx
:Esegui Disattivammxext
:Estensioni AMD MMXfxsr_opt
:Ottimizzazioni FXSAVE/FXRSTORpdpe1gb
:pagine da un GB (consentehugepagesz=1G
)rdtscp
:Leggi contatore timestamp e ID processorelm
:Modalità lunga (x86-64:amd64, noto anche come Intel 64, ovvero compatibile a 64 bit)3dnowext
:AMD 3DNow! estensioni3dnow
:3D Now! (Istruzioni vettoriali AMD, in competizione con SSE1 di Intel)
Caratteristiche della CPU transmeta-definite, livello CPUID 0x80860001
recovery
:CPU in modalità di ripristinolongrun
:Controllo della potenza a lungo terminelrti
:interfaccia tabella LongRun
Altre funzionalità, mappatura definita da Linux
cxmmx
:estensioni Cyrix MMXk6_mtrr
:MTRR non standard AMD K6cyrix_arr
:Cyrix ARR (=MTRR)centaur_mcr
:Centaur MCR (=MTRR)constant_tsc
:TSC ticchetta a una velocità costanteup
:kernel SMP in esecuzione su UPart
:timer sempre attivoarch_perfmon
:Intel Architectural PerfMonpebs
:Campionamento basato su eventi precisibts
:Negozio di tracciabilità delle filialirep_good
:il microcodice rep funziona beneacc_power
:meccanismo di alimentazione accumulata AMDnopl
:Le istruzioni NOPL (0F 1F)xtopology
:estensioni enum topologia CPUtsc_reliable
:TSC è noto per essere affidabilenonstop_tsc
:TSC non si ferma negli stati Ccpuid
:la CPU ha l'istruzione CPUID stessaextd_apicid
:ha esteso APICID (8 bit)amd_dcm
:processore multinodoaperfmperf
:APERFPERFeagerfpu
:Ripristino FPU non pigrononstop_tsc_s3
:TSC non si ferma nello stato S3tsc_known_freq
:TSC ha una frequenza notamce_recovery
:la CPU ha controlli macchina recuperabili
Caratteristiche CPU definite da Intel, livello CPUID 0x00000001 (ecx)
Vedere anche Wikipedia e la tabella 2-26 in Intel Advanced Vector Extensions Programming Reference
pni
:SSE-3 ("Nuove istruzioni Prescott")pclmulqdq
:eseguire una moltiplicazione Carry-Less dell'istruzione Quadword — acceleratore per GCM)dtes64
:archivio di debug a 64 bitmonitor
:Supporto Monitor/Mwait (supplementi Intel SSE3)ds_cpl
:Qual. CPL Negozio di debugvmx
:Virtualizzazione hardware:Intel VMXsmx
:Modalità più sicura:TXT (supporto TPM)est
:SpeedStep avanzatotm2
:Monitor termico 2ssse3
:Supplementare SSE-3cid
:ID contestosdbg
:debug del siliciofma
:Moltiplica-addizione fusacx16
:CMPXCHG16Bxtpr
:invia messaggi con priorità attivitàpdcm
:Capacità prestazionalipcid
:identificatori di contesto del processodca
:Accesso diretto alla cachesse4_1
:SSE-4.1sse4_2
:SSE-4.2x2apic
:x2APICmovbe
:Sposta i dati dopo aver scambiato i byte istruzionepopcnt
:Restituisce il conteggio del numero di bit impostato su 1 istruzione (peso Hamming, ovvero conteggio bit)tsc_deadline_timer
:Timer scadenza Tscaes
/aes-ni
:Standard di crittografia avanzato (nuove istruzioni)xsave
:Save Processor Extended States:fornisce anche XGETBY, XRSTOR, XSETBYavx
:Estensioni vettoriali avanzatef16c
:conversioni fps a 16 bit (CVT16)rdrand
:Leggi il numero casuale dall'istruzione del generatore di numeri casuali hardwarehypervisor
:in esecuzione su un hypervisor
Caratteristiche CPU definite da VIA/Cyrix/Centaur, livello CPUID 0xC0000001
rng
:Generatore di numeri casuali presente (xstore)rng_en
:Generatore di numeri casuali abilitatoace
:crittografia su CPU (xcrypt)ace_en
:crittografia su CPU abilitataace2
:Motore di crittografia avanzato v2ace2_en
:ACE v2 abilitatophe
:Motore hash PadLockphe_en
:PHE abilitatopmm
:Moltiplicatore Montgomery del lucchettopmm_en
:PMM abilitato
Flag AMD più estesi:livello CPUID 0x80000001, ecc
lahf_lm
:Carica AH da Flags (LAHF) e Memorizza AH in Flags (SAHF) in modalità lungacmp_legacy
:Se sì HyperThreading non è validosvm
:"Macchina virtuale sicura":AMD-Vextapic
:Spazio APIC estesocr8_legacy
:CR8 in modalità a 32 bitabm
:Manipolazione avanzata dei bitsse4a
:SSE-4Amisalignsse
:indica se viene generata un'eccezione di protezione generale (#GP) quando alcune istruzioni SSE legacy operano su dati non allineati. Dipende anche da CR0 e dal bit di controllo allineamento3dnowprefetch
:Istruzioni per il precaricamento di 3DNowosvw
:indica OS Visible Workaround, che consente al sistema operativo di aggirare l'errata del processore.ibs
:Campionamento basato sulle istruzionixop
:istruzioni AVX esteseskinit
:Istruzioni SKINIT/STGIwdt
:timer watchdoglwp
:Profilatura leggerafma4
:4 operandi istruzioni MACtce
:estensione della cache di traduzionenodeid_msr
:NodeId MSRtbm
:Manipolazione del bit finaletopoext
:Estensioni della topologia Foglie CPUIDperfctr_core
:Estensioni del contatore delle prestazioni principaliperfctr_nb
:NB Estensioni del contatore di performancebpext
:estensione del punto di interruzione dei datiptsc
:contatore del timestamp delle prestazioniperfctr_l2
:Estensioni del contatore delle prestazioni L2mwaitx
:MWAIT
estensione (MONITORX
/MWAITX
)
Flag ausiliari:Linux definito – Per funzionalità sparse in vari livelli CPUID
ring3mwait
:Suoneria 3 MONITOR/MWAITcpuid_fault
:Intel CPUID guastocpb
:incremento delle prestazioni AMD Coreepb
:supporto IA32_ENERGY_PERF_BIAScat_l3
:Tecnologia di allocazione della cache L3cat_l2
:Tecnologia di allocazione cache L2cdp_l3
:Priorità del codice e dei dati L3invpcid_single
:effettivamenteinvpcid
eCR4.PCIDE=1
hw_pstate
:AMD HW-PSateproc_feedback
:Interfaccia AMD ProcFeedbacksme
:Crittografia sicura della memoria AMDpti
:Isolamento della tabella delle pagine del kernel (Kaiser)retpoline
:Mitigazione del reticolo per la variante Spectre 2 (rami indiretti)retpoline_amd
:Mitigazione AMD Retpolineintel_ppin
:Numero di inventario del processore Intelavx512_4vnniw
:Istruzioni per la rete neurale AVX-512avx512_4fmaps
:AVX-512 Accumulazione multipla Precisione singolamba
:Allocazione della larghezza di banda della memoriarsb_ctxsw
:Riempi RSB sui cambi di contesto
Flag di virtualizzazione:Linux definito
tpr_shadow
:Intel TPR Shadowvnmi
:Intel Virtual NMIflexpriority
:Intel FlexPriorityept
:Tabella delle pagine estesa Intelvpid
:ID processore virtuale Intelvmmcall
:preferisciVMMCALL
aVMCALL
Caratteristiche CPU definite da Intel, livello CPUID 0x00000007:0 (ebx)
fsgsbase
:{RD/WR}{FS/GS}Istruzioni BASEtsc_adjust
:MSR di regolazione TSCbmi1
:Estensioni per la manipolazione dei bit del 1° gruppohle
:Eliminazione del blocco hardwareavx2
:Istruzioni AVX2smep
:Protezione esecuzione modalità supervisorebmi2
:estensioni per la manipolazione dei bit del 2° gruppoerms
:REP MOVSB/STOSB miglioratoinvpcid
:invalida l'ID contesto del processorertm
:Memoria transazionale limitatacqm
:Monitoraggio della QoS della cachempx
:Estensione per la protezione della memoriardt_a
:Allocazione della tecnologia del direttore delle risorseavx512f
:Fondazione AVX-512avx512dq
:AVX-512 Istruzioni doppio/quadruplordseed
:L'istruzione RDSEEDadx
:Le istruzioni ADCX e ADOXsmap
:Prevenzione dell'accesso in modalità supervisoreclflushopt
:CLFLUSHOPT
istruzioniclwb
:CLWB
istruzioniintel_pt
:Traccia del processore Intelavx512pf
:AVX-512 Precaricaavx512er
:AVX-512 Esponenziale e Reciprocoavx512cd
:Rilevamento di conflitti AVX-512sha_ni
:Estensioni delle istruzioni SHA1/SHA256avx512bw
:AVX-512 Istruzioni per byte/parolaavx512vl
:AVX-512 128/256 Estensioni della lunghezza del vettore
Caratteristiche dello stato esteso, livello CPUID 0x0000000d:1 (eax)
xsaveopt
:XSAVE
ottimizzatoxsavec
:XSAVEC
xgetbv1
:XGETBV
con ECX =1xsave
:XSAVES
/XRSTORS
Sub-leaf QoS CPU definito da Intel, livello CPUID 0x0000000F:0 (edx)
cqm_llc
:LLC QoS
Sub-leaf QoS CPU definito da Intel, livello CPUID 0x0000000F:1 (edx)
cqm_occup_llc
:monitoraggio dell'occupazione LLCcqm_mbm_total
:monitoraggio totale MBM LLCcqm_mbm_local
:monitoraggio MBM locale LLC
Caratteristiche CPU definite da AMD, livello CPUID 0x80000008 (ebx)
clzero
:CLZERO
istruzioniirperf
:istruzioni contatore delle prestazioni ritiratoxsaveerptr
:salva/ripristina sempre i puntatori di errore FP
Foglia Thermal and Power Management, livello CPUID 0x00000006 (eax)
dtherm
(precedentementedts
):sensore termico digitaleida
:Accelerazione dinamica Intelarat
:Timer APIC sempre in esecuzionepln
:Notifica Intel Power Limitpts
:Stato termico del pacchetto Intelhwp
:stati P dell'hardware Intelhwp_notify
:Notifica HWPhwp_act_window
:Finestra attività HWPhwp_epp
:Preferenza di prestazione energetica HWPhwp_pkg_req
:richiesta a livello di pacchetto HWP
Identificazione funzione AMD SVM, livello CPUID 0x8000000a (edx)
npt
:Supporto AMD Nested Page Tablelbrv
:Supporto per la virtualizzazione AMD LBRsvm_lock
:MSR di blocco AMD SVMnrip_save
:AMD SVM next_rip savetsc_scale
:Supporto per il ridimensionamento AMD TSCvmcb_clean
:Supporto per i bit puliti AMD VMCBflushbyasid
:supporto AMD flush-by-ASIDdecodeassists
:Supporto per AMD Decode Assistpausefilter
:Intercettazione pausa filtrata AMDpfthreshold
:Soglia del filtro di pausa AMDavic
:Controller di interrupt virtualevmsave_vmload
:VMSAVE VMLOAD virtualevgif
:GIF virtuale
Caratteristiche CPU definite da Intel, livello CPUID 0x00000007:0 (ecx)
avx512vbmi
:Istruzioni per la manipolazione dei bit vettoriali AVX512umip
:Protezione istruzioni modalità utentepku
:chiavi di protezione per lo spazio utenteospke
:chiavi di protezione del sistema operativo abilitateavx512_vbmi2
:Istruzioni aggiuntive per la manipolazione dei bit vettoriali AVX512gfni
:Nuove istruzioni sul campo di Galoisvaes
:AES vettorialevpclmulqdq
:Moltiplicazione Carry-Less Double Quadwordavx512_vnni
:Istruzioni per la rete neurale vettorialeavx512_bitalg
:istruzioni VPOPCNT[B,W] e VPSHUF-BITQMBavx512_vpopcntdq
:POPCNT per vettori di DW/QWla57
:tabelle di pagina a 5 livellirdpid
:Istruzione RDPID
Caratteristiche CPU definite da AMD, livello CPUID 0x80000007 (ebx)
overflow_recov
:supporto per il recupero dell'overflow dell'MCAsuccor
:contenimento e ripristino degli errori non correggibilismca
:MCA scalabile
Rilevati bug della CPU (definiti da Linux)
f00f
:Intel F00Ffdiv
:CPU FDIVcoma
:Cyrix 6×86 in comaamd_tlb_mmatch
:tlb_mmatch
AMD Erratum 383amd_apic_c1e
:apic_c1e
AMD Erratum 40011ap
:Cattivo APIC locale alias 11APfxsave_leak
:FXSAVE perde FOP/FIP/FOPclflush_monitor
:AAI65, CLFLUSH richiesto prima di MONITORsysret_ss_attrs
:SYSRET non corregge SS attrsespfix
:“” Da IRET a SS a 16 bit corrompe i bit alti di ESP/RSPnull_seg
:Annullando un selettore si preserva la baseswapgs_fence
:SWAPGS senza ingresso dip su GSmonitor
:IPI richiesto per riattivare la CPU remotaamd_e400
:La CPU è tra quelle interessate da Erratum 400cpu_meltdown
:la CPU è interessata da un attacco di fusione e necessita dell'isolamento della tabella delle pagine del kernelspectre_v1
:La CPU è influenzata dall'attacco Spectre variante 1 con branch condizionalispectre_v2
:La CPU è influenzata dall'attacco Spectre variante 2 con rami indirettispec_store_bypass
:la CPU è interessata dalla vulnerabilità Speculative Store Bypass (variante Spectre 4).
P.S.
Questo elenco è stato derivato da arch/x86/include/asm/cpufeatures.h
nel sorgente del kernel. I flag sono elencati nello stesso ordine del codice sorgente. Aiutaci aggiungendo collegamenti alle descrizioni delle funzionalità quando mancano, scrivendo una breve descrizione delle funzionalità che hanno nomi inespressivi e aggiornando l'elenco per le nuove versioni del kernel. L'elenco attuale proviene da Linux 4.15 più alcune aggiunte successive.