Conhecendo as Flags do Processador

Processadores possuem flags, que são parâmetros nativos de recursos legados suportados (ou não) pelo seu sistema. Conheça as flags mais importantes e entenda o que representam e como influenciam seu computador!


| Se você apoia nosso site, desative o AdBlock quando visitá-lo, inclusive em Mobile!
Os anúncios são poucos e não invasivos. Se quiser contribuir com nosso trabalho, clique em qualquer banner de sua preferência, exceto dos Parceiros. 
Mais detalhes clicando aqui.


Introdução

Flags de CPU, ou também conhecidas como conjuntos de instruções do processador, são mapeamentos de recursos legados que os processadores possuem de fábrica. São informações a nível de hardware gravados no chip pela fabricante.

Núcleo de um Intel® Xeon – As instruções citadas nessa publicação estão nos núcleos e controladores do processador e não podem ser alteradas, apenas reconhecidas, lidas ou ignoradas.

Suporte a multi-threading? HyperV? Proteção contra falhas de hardware? Tudo isso pode ser verificado e, em alguns casos, podem ser ativados ou desativados a nível de Kernel e o Linux tem papel fundamental nisso.

Quando especifico que determinadas flags são definidas pelo kernel Linux, quer dizer que, se o kernel reconhece as flags no hardware, ele pode optar por usar ou não o recurso disponível; E isso pode ser pré-definido pela distro Linux em uso ou pode ser definido manualmente quando você compila o kernel! Além disso, no final da publicação damos mais detalhes de como manipular o uso de flags de um sistema já instalado.

Verificando

Linux

Para ver as flags disponíveis para seu processador, rode o comando no terminal:

$ cat /proc/cpuinfo

FreeBSD

Para ver as flags disponíveis para seu processador, rode o comando no terminal:

# grep Features /var/run/dmesg.boot

Ou

# cpuflags

O resultado será semelhante a isso (Linux):

Com as flags em mãos, vamos ver o que representam!

Flags

Recursos da Intel, CPUID level 0x00000001 (edx)

São elas:

  • fpu: Onboard FPU (Suporte a Ponto Flutuante)
  • vme: Modo 8086 Virtual
  • de: Extensões de Debug (CR4.DE)
  • pse: Extenções de Tamanho de Pagina (4MB)
  • tsc: Time Stamp Counter (RDTSC)
  • msr: Registradores específicos do modelo (RDMSR, WRMSR)
  • pae: Physical Address Extensions
    Suporta mais que 4GB de RAM, mesmo se for arquitetura x86
  • mce: Machine Check Exception
  • cx8: CMPXCHG8 instruction (64-bit compare-and-swap)
  • apic: Onboard APIC
  • sep: SYSENTER/SYSEXIT
  • mtrr: Memory Type Range Registers
  • pge: Page Global Enable (global bit in PDEs and PTEs)
  • mca: Machine Check Architecture
  • cmov: CMOV instructions (conditional move) (also FCMOV)
  • pat: Page Attribute Table
  • pse36: 36-bit PSEs (huge pages)
  • pn: Processor serial number
  • clflush: Cache Line Flush instruction
  • dts: Debug Store (buffer for debugging and profiling instructions)
  • acpi: ACPI via MSR (temperature monitoring and clock speed modulation)
    Geralmente controla o gerenciamento de energia da placa mãe, afetando iluminação de tela e etc.
  • mmx: Multimedia Extensions
  • fxsr: FXSAVE/FXRSTOR, CR4.OSFXSR
  • sse: Intel SSE vector instructions
    São instruções vetoriais da Intel na versão 1.0, utilizadas em games.
  • sse2: SSE2 vector instructions
    São instruções vetoriais da Intel na versão 2.0, utilizadas em games.
  • ss: CPU self snoop
  • ht: Hyper-Threading
    Suporte a núcleos lógicos.
  • tm: Automatic clock control (Thermal Monitor)
    Aplica o CPU Throtling – queda de clock forçada – em caso de superaquecimento.
  • ia64: Intel Itanium Architecture 64-bit
  • pbe: Pending Break Enable (PBE# pin) wakeup support

Recursos da AMD, CPUID level 0x80000001

  • syscall: SYSCALL (Fast System Call) and SYSRET (Return From Fast System Call)
  • mp: Multiprocessing Capable.
    Suporte a multiprocessamento.
  • nx: Execute Disable
  • mmxext: AMD MMX extensions
  • fxsr_opt: FXSAVE/FXRSTOR optimizations
  • pdpe1gb: Permite Páginas de 1 Gb
  • rdtscp: Read Time-Stamp Counter and Processor ID
  • lm: Long Mode
    Suporte a x64 bits.
  • 3dnow: 3DNow!
    São instruções vetoriais da AMD, que competem com o Intel SSE1. São usados em Games.
  • 3dnowext: AMD 3DNow! extensions
    Extensões do 3DNow! da AMD

Transmeta-defined CPU features, CPUID level 0x80860001

  • recovery: CPU in recovery mode
  • longrun: Longrun power control
  • lrti: LongRun table interface

Outros Recursos Intel e AMD (Definidos pelo Kernel Linux)

  • cxmmx: Cyrix MMX extensions
  • k6_mtrr: AMD K6 nonstandard MTRRs
  • cyrix_arr: Cyrix ARRs (= MTRRs)
  • centaur_mcr: Centaur MCRs (= MTRRs)
  • constant_tsc: TSC ticks at a constant rate
  • up: SMP kernel running on UP
  • art: Always-Running Timer
  • arch_perfmon: Intel Architectural PerfMon
  • pebs: Precise-Event Based Sampling
  • bts: Branch Trace Store
  • rep_good: rep microcode works well
  • acc_power: AMD accumulated power mechanism
  • nopl: The NOPL (0F 1F) instructions
  • xtopology: cpu topology enum extensions
  • tsc_reliable: TSC is known to be reliable
  • nonstop_tsc: TSC does not stop in C states
  • cpuid: CPU has CPUID instruction itself
  • extd_apicid: has extended APICID (8 bits)
  • amd_dcm: multi-node processor
    Processamento paralelo com multi-nós, ou seja, clustering.
  • aperfmperf: APERFMPERF
  • eagerfpu: Non lazy FPU restore
  • nonstop_tsc_s3: TSC doesn’t stop in S3 state
  • tsc_known_freq: TSC has known frequency
  • mce_recovery: CPU has recoverable machine checks

Recursos da Intel, CPUID level 0x00000001 (ecx)

  • pni: SSE-3 (“Prescott New Instructions”)
    São instruções vetoriais da Intel na versão 3.0, utilizadas em games.
  • pclmulqdq: Perform a Carry-Less Multiplication of Quadword instruction — accelerator for GCM
  • dtes64: 64-bit Debug Store
  • monitor: Monitor/Mwait support (Intel SSE3 supplements)
  • ds_cpl: CPL Qual. Debug Store
  • vmx: Hardware virtualization: Intel VMX
  • smx: Safer mode: TXT (TPM support)
  • est: Enhanced SpeedStep
  • tm2: Thermal Monitor 2
    Aplica o CPU Throtling – queda de clock – em caso de superaquecimento, versão 2.0.
  • ssse3: Supplemental SSE-3
    Extensões do SSE-3
  • cid: Context ID
  • sdbg: silicon debug
  • fma: Fused multiply-add
  • cx16: CMPXCHG16B
  • xtpr: Send Task Priority Messages
  • pdcm: Performance Capabilities
  • pcid: Process Context Identifiers
  • dca: Direct Cache Access
  • sse4_1: SSE-4.1
    São instruções vetoriais da Intel na versão 4.1, utilizadas em games.
  • sse4_2: SSE-4.2
    São instruções vetoriais da Intel na versão 4.2, utilizadas em games.
  • x2apic: x2APIC
  • movbe: Move Data After Swapping Bytes instruction
  • popcnt: Return the Count of Number of Bits Set to 1 instruction (Hamming weight, i.e. bit count)
  • tsc_deadline_timer: Tsc deadline timer
  • aes/aes-ni: Advanced Encryption Standard (New Instructions)
  • xsave: Save Processor Extended States: also provides XGETBY,XRSTOR,XSETBY
  • avx: Advanced Vector Extensions
  • f16c: 16-bit fp conversions (CVT16)
  • rdrand: Read Random Number
    Gerador de número aleatório do processador. Quando presente, melhora a segurança geral do sistema.
  • hypervisor: Running on a hypervisor
    Suporte a máquina virtual.

Recursos VIA/Cyrix/Centaur, CPUID level 0xC0000001

  • rng: Random Number Generator present (xstore)
  • rng_en: Random Number Generator enabled
  • ace: on-CPU crypto (xcrypt)
  • ace_en: on-CPU crypto enabled
  • ace2: Advanced Cryptography Engine v2
  • ace2_en: ACE v2 enabled
  • phe: PadLock Hash Engine
  • phe_en: PHE enabled
  • pmm: PadLock Montgomery Multiplier
  • pmm_en: PMM enabled

Mais flags extendidas da AMD: CPUID level 0x80000001, ecx

  • lahf_lm: Load AH from Flags (LAHF) and Store AH into Flags (SAHF) in long mode
  • cmp_legacy: If yes HyperThreading not valid
  • svm: “Secure virtual machine”: AMD-V
    Suporte á máquinas virtuais.
  • extapic: Extended APIC space
  • cr8_legacy: CR8 in 32-bit mode
  • abm: Advanced Bit Manipulation
  • sse4a: SSE-4A
    São instruções vetoriais da Intel na versão 4 A, utilizadas em games.
  • 3dnowprefetch: 3DNow prefetch instructions
    Prefetch para Instruções do 3DNow!
  • osvw: indicates OS Visible Workaround, which allows the OS to work around processor errata.
  • ibs: Instruction Based Sampling
  • xop: extended AVX instructions
  • skinit: SKINIT/STGI instructions
  • wdt: Watchdog timer
  • lwp: Light Weight Profiling
  • fma4: 4 operands MAC instructions
  • tce: translation cache extension
  • nodeid_msr: NodeId MSR
  • tbm: Trailing Bit Manipulation
  • topoext: Topology Extensions CPUID leafs
  • perfctr_core: Core Performance Counter Extensions
  • perfctr_nb: NB Performance Counter Extensions
  • bpext: data breakpoint extension
  • ptsc: performance time-stamp counter
  • perfctr_l2: L2 Performance Counter Extensions
  • mwaitx: MWAIT extension (MONITORX/MWAITX)

Flags Auxiliares – Para recursos entre vários CPU ID’s

  • ring3mwait: Ring 3 MONITOR/MWAIT
  • cpuid_fault: Intel CPUID faulting
  • cpb: AMD Core Performance Boost
  • epb: IA32_ENERGY_PERF_BIAS support
  • cat_l3: Cache Allocation Technology L3
  • cat_l2: Cache Allocation Technology L2
  • cdp_l3: Code and Data Prioritization L3
  • invpcid_single: effectively invpcid and CR4.PCIDE=1
  • hw_pstate: AMD HW-PState
  • proc_feedback: AMD ProcFeedbackInterface
  • sme: AMD Secure Memory Encryption
  • intel_ppin: Intel Processor Inventory Number
  • avx512_4vnniw: AVX-512 Neural Network Instructions
  • avx512_4fmaps: AVX-512 Multiply Accumulation Single precision
  • mba: Memory Bandwidth Allocation
  • rsb_ctxsw: Fill RSB on context switches

Flags de Virtualização

  • tpr_shadow: Intel TPR Shadow
  • vnmi: Intel Virtual NMI
  • flexpriority: Intel FlexPriority
  • ept: Intel Extended Page Table
  • vpid: Intel Virtual Processor ID
  • vmmcall: prefer VMMCALL to VMCALL

Recursos da Intel, CPUID level 0x00000007:0 (ebx)

  • fsgsbase: {RD/WR}{FS/GS}BASE instructions
  • tsc_adjust: TSC adjustment MSR
  • bmi1: 1st group bit manipulation extensions
  • hle: Hardware Lock Elision
  • avx2: AVX2 instructions
  • smep: Supervisor Mode Execution Protection
  • bmi2: 2nd group bit manipulation extensions
  • erms: Enhanced REP MOVSB/STOSB
  • invpcid: Invalidate Processor Context ID
  • rtm: Restricted Transactional Memory
  • cqm: Cache QoS Monitoring
  • mpx: Memory Protection eXtension
  • rdt_a: Resource Director Technology Allocation
  • avx512f: AVX-512 foundation
  • avx512dq: AVX-512 Double/Quad instructions
  • rdseed: The RDSEED instruction
  • adx: The ADCX and ADOX instructions
  • smap: Supervisor Mode Access Prevention
  • clflushopt: CLFLUSHOPT instruction
  • clwb: CLWB instruction
  • intel_pt: Intel Processor Tracing
  • avx512pf: AVX-512 Prefetch
  • avx512er: AVX-512 Exponential and Reciprocal
  • avx512cd: AVX-512 Conflict Detection
  • sha_ni: SHA1/SHA256 Instruction Extensions
  • avx512bw: AVX-512 Byte/Word instructions
  • avx512vl: AVX-512 128/256 Vector Length extensions

Recursos Extendidos, CPUID level 0x0000000d:1 (eax)

  • xsaveopt: Optimized XSAVE
  • xsavec: XSAVEC
  • xgetbv1: XGETBV with ECX=1
  • xsaves: XSAVES/XRSTORS

Recursos da Intel: QoS sub-leaf, CPUID level 0x0000000F:0 (edx)

  • cqm_llc: LLC QoS

Recursos da Intel: QoS sub-leaf, CPUID level 0x0000000F:1 (edx)

  • cqm_occup_llc: LLC occupancy monitoring
  • cqm_mbm_total: LLC total MBM monitoring
  • cqm_mbm_local: LLC local MBM monitoring

Recursos da AMD, CPUID level 0x80000008 (ebx)

  • clzero: CLZERO instruction
  • irperf: instructions retired performance counter
  • xsaveerptr: Always save/restore FP error pointers

Gerenciamento Térmico e Energético, CPUID level 0x00000006 (eax)

  • dtherm (formerly dts): digital thermal sensor
  • ida: Intel Dynamic Acceleration
  • arat: Always Running APIC Timer
  • pln: Intel Power Limit Notification
  • pts: Intel Package Thermal Status
  • hwp: Intel Hardware P-states
  • hwp_notify: HWP notification
  • hwp_act_window: HWP Activity Window
  • hwp_epp: HWP Energy Performance Preference
  • hwp_pkg_req: HWP package-level request

Recursos SVM da AMD, CPUID level 0x8000000a (edx)

  • npt: AMD Nested Page Table support
  • lbrv: AMD LBR Virtualization support
  • svm_lock: AMD SVM locking MSR
  • nrip_save: AMD SVM next_rip save
  • tsc_scale: AMD TSC scaling support
  • vmcb_clean: AMD VMCB clean bits support
  • flushbyasid: AMD flush-by-ASID support
  • decodeassists: AMD Decode Assists support
  • pausefilter: AMD filtered pause intercept
  • pfthreshold: AMD pause filter threshold
  • avic: Virtual Interrupt Controller
  • vmsave_vmload: Virtual VMSAVE VMLOAD
  • vgif: Virtual GIF

Recursos da Intel, CPUID level 0x00000007:0 (ecx)

  • avx512vbmi: AVX512 Vector Bit Manipulation instructions
  • umip: User Mode Instruction Protection
    Protege as informações no Espaço de Usuário.
  • pku: Protection Keys for Userspace
    Chaves das proteções de informações no Espaço de Usuário.
  • ospke: OS Protection Keys Enable
  • avx512_vbmi2: Additional AVX512 Vector Bit Manipulation instructions
  • gfni: Galois Field New Instructions
  • vaes: Vector AES
  • vpclmulqdq: Carry-Less Multiplication Double Quadword
  • avx512_vnni: Vector Neural Network Instructions
  • avx512_bitalg: VPOPCNT[B,W] and VPSHUF-BITQMB instructions
  • avx512_vpopcntdq: POPCNT for vectors of DW/QW
  • la57: 5-level page tables
  • rdpid: RDPID instruction

Recursos da AMD, CPUID level 0x80000007 (ebx)

  • overflow_recov: MCA overflow recovery support
  • succor: uncorrectable error containment and recovery
  • smca: Scalable MCA

Todas as falhas de CPU

Falhas detectadas até então, tanto para Intel quanto AMD: Definidas pelo kernel Linux.

  • f00f: Intel F00F
  • fdiv: CPU FDIV
  • coma: Cyrix 6×86 coma
  • amd_tlb_mmatch: tlb_mmatch AMD Erratum 383
  • amd_apic_c1e: apic_c1e AMD Erratum 400
  • 11ap: Bad local APIC aka 11AP
  • fxsave_leak: FXSAVE leaks FOP/FIP/FOP
  • clflush_monitor: AAI65, CLFLUSH required before MONITOR
  • sysret_ss_attrs: SYSRET doesn’t fix up SS attrs
  • espfix: “” IRET to 16-bit SS corrupts ESP/RSP high bits
  • null_seg: Nulling a selector preserves the base
  • swapgs_fence: SWAPGS without input dep on GS
  • monitor: IPI required to wake up remote CPU
  • amd_e400: CPU is among the affected by Erratum 400
  • pti: Kernel Page Table Isolation (Kaiser)
  • cpu_meltdown: CPU is affected by meltdown attack and needs kernel page table isolation
  • spectre_v1: CPU is affected by Spectre variant 1 attack with conditional branches
  • spectre_v2: CPU is affected by Spectre variant 2 attack with indirect branches
  • retpoline: Retpoline mitigation for Spectre variant 2 (indirect branches)
  • spec_store_bypass: CPU is affected by the Speculative Store Bypass vulnerability (Spectre variant 4).
  • retpoline_amd: AMD Retpoline mitigation

Arquitetura ARM

A arquitetura ARM também possui flags – recursos – específicos e alguns exclusivos. Alguns deles são:

  • swp: SWP instruction (atomic read-modify-write)
  • half: Half-word loads and stores
  • thumb: Thumb (16-bit instruction set)
  • 26bit: “26 Bit” Model (Processor status register folded into program counter)
  • fpa: Floating point accelerator
  • vfp: VFP (early SIMD vector floating point instructions)
  • edsp: DSP extensions (the ‘e’ variant of the ARM9 CPUs, and all others above)
  • java: Jazelle (Java bytecode accelerator)
    Aceleração de Hardware com foco em Java!
  • iwmmxt: SIMD instructions similar to Intel MMX
  • crunch: MaverickCrunch coprocessor (if kernel support enabled)
  • thumbee: ThumbEE
  • neon: Advanced SIMD/NEON (asimd on AArch64 older kernels)
  • vfpv3: VFP version 3
  • vfpv3d16: VFP version 3 with 16 D-registers
  • tls: TLS register
  • vfpv4: VFP version 4 with fast context switching
  • idiva: SDIV and UDIV hardware division in ARM mode
  • idivt: SDIV and UDIV hardware division in Thumb mode
  • vfpd32: VFP with 32 D-registers
  • lpae: Large Physical Address Extension
    Suporte +4 Gb de RAM em arquitetura x32
  • evtstrm: kernel event stream using generic architected timer
  • fastmult: 32×32→64-bit multiplication
    Permite “gerar” suporte a instruções de 64 bits.
  • pmull{2}: 64×64→128-bit F2m multiplication — acceleration for the GCM mode of authenticated encryption
    Permite “gerar” suporte a instruções de 128 bits.
  • aes: hardware-accelerated AES (secret-key cryptography)
    Criptografia AES a nível de Hardware.
  • sha1: hardware-accelerated SHA-1
    Criptografia SHA1 a nível de Hardware.
  • sha2: hardware-accelerated SHA-256
    Criptografia SHA2 a nível de Hardware
  • rc32: hardware-accelerated CRC-32
    Criptografia CRC-32 a nível de Hardware

Controle!

Você me pergunta:

Como controlo essas flags em meu sistemas?

Simplesmente fazendo os controles adequados editando os parâmetros no GRUB, que vai decidir quais flags vão ser reconhecidas e utilizadas ou ignoradas, como o caso de quem desejar desabilitar as proteções das falhas em processadores Intel, conforme falamos aqui! Mais detalhes sobre os parâmetros podem ser vistos nesta publicação.

Conclusão

Assim como as já citadas pastas /proc e /sys, conhecer e entender as flags de processador te permitem ter um controle maior do computador, principalmente ligando ou desligando flags específicas, otimizando e melhorando seu sistema num geral.

#UrbanCompassPony

Fonte:
hbcom
unix.stackexchange

2 comentários em “Conhecendo as Flags do Processador”

Deixe um comentário