Go 的 CPU 功能识别
对于 macOS/Linux 用户,您可以通过 brew 安装。
$ brew install cpuid…示例输出:
>go run main.go
Name: AMD Ryzen 9 3950X 16-Core Processor
PhysicalCores: 16
ThreadsPerCore: 2
LogicalCores: 32
Family 23 Model: 113 Vendor ID: AMD
Features: ADX,AESNI,AVX,AVX2,BMI1,BMI2,CLMUL,CMOV,CX16,F16C,FMA3,HTT,HYPERVISOR,LZCNT,MMX,MMXEXT,NX,POPCNT,RDRAND,RDSEED,RDTSCP,SHA,SSE,SSE2,SSE3,SSE4,SSE42,SSE4A,SSSE3
Cacheline bytes: 64
L1 Data Cache: 32768 bytes
L1 Instruction Cache: 32768 bytes
L2 Cache: 524288 bytes
L3 Cache: 16777216 bytes
Frequency 0 hz
We have Streaming SIMD 2 Extensionscpuid.CPU 提供了对 CPU 功能的访问。使用 cpuid.CPU.Supports() 来检查 CPU 功能。
提供了一个更快的 cpuid.CPU.Has() 函数,通常会被 gc 编译器内联。
若要测试更多功能,可以使用 f := CombineFeatures(CMOV, CMPXCHG8, X87, FXSR, MMX, SYSCALL, SSE, SSE2) 等。
可以使用 cpuid.CPU.HasAll(f) 来快速测试是否支持所有功能。
请注意,对于某些 CPU/操作系统组合,某些功能可能无法被检测到。amd64 支持较好,在所有平台上都可可靠工作。
暂无开放 Issues,或尚未同步最近议题。