温馨提示×

Linux CPUInfo支持的指令集有哪些

小樊
42
2025-12-13 02:24:22
栏目: 智能运维

Linux 查看 CPU 指令集的方法与关键标志

在 Linux 中,CPU 支持的指令集与特性由内核通过 /proc/cpuinfo 的 flags 字段(以及 lscpu 的 Flags 列)呈现。flags 中的每一项代表一个已启用的处理器特性或扩展指令集,可用于快速判断如 SSE、AVX、AES、VMX 等是否可用。

x86_64 常见指令集标志速查

  • 基础与系统
    • fpu:浮点单元
    • mmx / sse / sse2 / sse3 / ssse3 / sse4_1 / sse4_2:多媒体与向量指令演进
    • xsave / xsaveopt / xsavec / xsaves:XSAVE 系列状态保存/恢复
  • 高级向量与浮点
    • avx / avx2 / f16c / fma:256 位向量与融合乘加等
    • avx512f / avx512dq / avx512cd / avx512bw / avx512vl / avx512ifma / avx512vbmi / avx512_vnni:AVX‑512 家族
  • 加密与哈希
    • aes / vaes / pclmulqdq:AES 与乘法指令
    • sha_ni / sha1 / sha2:SHA 系列加速
    • rdrand / rdseed:随机数生成
  • 内存与原子
    • pae / pdpe1gb:扩展物理地址与 1GB 大页
    • nx:No‑Execute 位
    • popcnt / lzcnt / bmi1 / bmi2 / abm:位操作与计数、位操作扩展、高级位操作
    • clflush / clflushopt / clwb:缓存行操作
  • 虚拟化
    • vmx(Intel VT‑x)/ svm(AMD‑V)
    • ept / vpid:扩展页表与虚拟页标识
  • 并发、调试与性能监控
    • ht / hyperthreading:超线程
    • tsc / constant_tsc / nonstop_tsc / rdtscp:时间戳计数器与变体
    • apic / x2apic:高级可编程中断控制器
    • pebs / bts / arch_perfmon:精确事件采样与分支跟踪
    • smep / smap / umip:SMEP/SMAP/UMIP 安全特性
    • rtm / hle:事务内存(TSX)
    • invpcid / pku / ospke:进程上下文标识、PKU 保护密钥
    • intel_pt:处理器跟踪
  • 其它常见
    • lahf_lm / lm:长模式相关
    • syscall / rep_good / nopl / xtopology:系统调用与优化提示等
      以上标志均为 /proc/cpuinfo 中可见的常见项,具体出现与否取决于 CPU 型号与微码版本。

ARM/AArch64 常见指令集标志速查

  • fp:浮点支持
  • asimd(即 NEON 在 AArch64 的命名):高级 SIMD
  • crc32:CRC32 校验指令
  • aes / pmull / sha1 / sha2:加密与哈希加速
  • atomics:原子操作
  • fphp / asimdhp:半精度浮点与 SIMD 半精度
  • cpuid:CPUID 类识别
  • asimdrdm / lrcpc / dcpop / asimddp:SIMD 扩展与内存模型相关
    ARMv8‑A 64 位 内核上,使用 asimd 表示 NEON;而在 ARMv7‑A 32 位 内核上常见的是 neon 标志,二者语义等价但名称不同。

如何查看与解读

  • 查看完整 flags
    • 直接查看:cat /proc/cpuinfo
    • 聚焦标志:grep -E ‘^flags\b’ /proc/cpuinfo
    • 使用 lscpu:lscpu | grep -i “flags”(或 lscpu -e 查看每核信息)
  • 解读要点
    • flags 是“已启用”的特性集合,并非详尽清单;某些特性需 OS 与微码共同支持。
    • 不同架构/内核版本标志命名存在差异(如 asimd vs neon)。
    • 多核/异构系统(如 big.LITTLE)各核 flags 可能不同,建议逐核检查。

脚本判断示例

  • 判断 x86 是否支持 AVX2
    • grep -q ‘^flags\b.*\bavx2\b’ /proc/cpuinfo && echo “AVX2: yes” || echo “AVX2: no”
  • 判断 ARM 是否支持 NEON(AArch64)
    • grep -q ‘^Features\b.*\basimd\b’ /proc/cpuinfo && echo “NEON: yes” || echo “NEON: no”
  • 使用 lscpu 过滤
    • lscpu | tr ‘,’ ‘\n’ | grep -i avx2
      上述方法适用于快速在脚本中做特性开关或运行时适配。

0