我想写一些C代码能够查询在PowerPC处理器的属性,就像一个可以用在x86 CPUID做。 我喜欢的东西的品牌,型号,步进,SIMD宽度,可手术后我,因此有可能是代码被一个兼容的平台使用的东西炸毁之前运行时间确认。
是否有PowerPC上这样做的一般机制? 如果是这样,一个在那里可以阅读有关呢?
我想写一些C代码能够查询在PowerPC处理器的属性,就像一个可以用在x86 CPUID做。 我喜欢的东西的品牌,型号,步进,SIMD宽度,可手术后我,因此有可能是代码被一个兼容的平台使用的东西炸毁之前运行时间确认。
是否有PowerPC上这样做的一般机制? 如果是这样,一个在那里可以阅读有关呢?
需要注意的是PowerPC的有几十个未像86扩展/功能。 它需要读取可能依赖于特定内核寄存器特权。
我检查了在Linux上,你可以访问PVR,存在于内核中的陷阱来管理。
读的/ proc / cpuinfo中可以返回是否支持AltiVec技术,内存和L2高速缓存的大小...但是,这是不是真的很方便。
一个更好的解决方案是这里描述: http://www.freehackers.org/thomas/2011/05/13/how-to-detect-altivec-availability-on-linuxppc-at-runtime/
使用的/ proc /自/ auxv提供“传递给该过程在EXEC时间ELF解释器信息”的内容。
的例子中是约Altivec的但可以得到的其它特征(中列出包括 “ASM / cputable.h”):32或64位的CPU,AltiVec技术,SPE,FPU,MMU,4XX MAC,...
最后,你会发现在高速缓存(大小,行大小,相关性,...)的信息,请查看文件:/系统/设备/系统/ CPU / CPU0 /缓存
PowerPC的不具有模拟到CPUID指令。 你可以得到的最接近的是阅读PVR(处理器版本寄存器)。 这是主管特权SPR,虽然。 然而,某些操作系统,FreeBSD的,例如,将捕获并执行对用户空间的进程。
该PVR是只读的,而且应该是任何给定的处理器型号和版本唯一的。 鉴于此,你能确定由给定的CPU都提供什么功能。