场景:
$ cat /proc/cpuinfo | grep fp | sort -u
Features : fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm jscvt fcma dcpop asimddp asimdfhm
在这里我们看到功能列表。
是否可以获得每个功能的(简短)描述?
示例:
$ <some_command>
feature short description
crc32 CRC32 instructions
aes Advanced SIMD AES instructions
...
使用/proc/cpuinfo 中的标志是什么意思?中的想法。不幸的是,Linux 中没有像 x86 那样注释 ARM64 功能名称的源代码,所以我不得不使用 golang 的 cpu package
中的版本ARM64_FEATURES="$(wget -qO- https://github.com/golang/sys/raw/master/cpu/cpu.go \
| awk '/ARM64/,/}/')"
for feature in $(grep "^Features" /proc/cpuinfo | sort -u | cut -d":" -f2); do
printf "${feature}\t"
echo "$ARM64_FEATURES" | grep -i "Has${feature}\s" | sed 's#.* // ##'
done | column -t -s $'\t'
您的案例的输出示例
fp Floating-point instruction set (always available)
asimd Advanced SIMD (always available)
evtstrm Event stream support
aes AES hardware implementation
pmull Polynomial multiplication instruction set
sha1 SHA1 hardware implementation
sha2 SHA2 hardware implementation
crc32 CRC32 hardware implementation
atomics Atomic memory operation instruction set
fphp Half precision floating-point instruction set
asimdhp Advanced SIMD half precision instruction set
cpuid CPUID identification scheme registers
asimdrdm Rounding double multiply add/subtract instruction set
jscvt Javascript conversion from floating-point to integer
fcma Floating-point multiplication and addition of complex numbers
dcpop Persistent memory support
asimddp Advanced SIMD double precision instruction set
asimdfhm Advanced SIMD multiplication FP16 to FP32