我们可以在Intel和ARM机器上检查/ proc / cpuinfo来学习cpu功能,比如AES和SHA.我需要在AIX和Linux下为PowerPC做同样的事情.
使用Linux进行测试如下所示.输出在compile farm上由GCC112产生.
$cat /proc/cpuinfo
processor : 0
cpu : POWER8E (raw), altivec supported
clock : 2061.000000MHz
revision : 2.1 (pvr 004b 0201)
...
processor : 159
cpu : POWER8E (raw), altivec supported
clock : 2061.000000MHz
revision : 2.1 (pvr 004b 0201)
timebase : 512000000
platform : PowerNV
model : 8247-22L
machine : PowerNV 8247-22L
firmware : OPAL v3
GCC112是Power 8机器.我应该看到像VMX,AES,SHA,PMULL等标志.VMX大致相当于英特尔SSE和ARM NEON的PowerPC.
我在comp.os.linux.powerpc上找到了一些像/proc/cpuinfo这样的相关讨论.我也找到了What do we check on a new system?,但它缺乏像cpu功能这样的有用细节.最后,在What do the flags in /proc/cpuinfo mean?有一个相关问题,但它没有讨论PowerPC.
GCC似乎通过使用built-ins向C程序提供信息.例如,有一个vsx测试和一个vcrypto测试.问题是,我正在使用Bash脚本而不是C程序.
我也不知道AIX的用途. AIX于GCC119 0700上发布.
如何在AIX和Linux上获得PowerPC cpu功能?
解决方法:
我不确定为什么/ proc / cpuinfo或lscpu不会显示标志信息.我找到了linux内核https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git/tree/arch/powerpc/include/asm/cputable.h?id=refs/tags/v4.9已知的标志列表
我刚刚发现你可以查找ELF辅助向量,它将向你展示一些硬件功能.
$LD_SHOW_AUXV=1 /bin/true
AT_SYSINFO_EHDR: 0x7ffdcd0e6000
AT_HWCAP: bfebfbff
AT_PAGESZ: 4096
AT_CLKTCK: 100
AT_PHDR: 0x5591e6663040
AT_PHENT: 56
AT_PHNUM: 9
AT_BASE: 0x7f2ae4f79000
AT_FLAGS: 0x0
AT_ENTRY: 0x5591e6664670
AT_UID: 1000
AT_EUID: 1000
AT_GID: 1000
AT_EGID: 1000
AT_SECURE: 0
AT_RANDOM: 0x7ffdcd044399
AT_HWCAP2: 0x0
AT_EXECFN: /bin/true
AT_PLATFORM: x86_64
^^你的AT_HWCAP将有标志信息.蒙面.我在互联网上看过有这个条目解码的样本.不幸的是,我无法访问ppc硬件进行测试.
lscpu应该在AIX上可用,也许它会显示CPU标志?