Tag: cpuid

有没有类似x86 cpuid()的东西可用于PowerPC?

我想编写一些能够在PowerPC上查询处理器属性的C代码,就像在x86上使用cpuid一样。 我喜欢品牌,型号,步进,SIMD宽度,可用操作之类的东西,因此可以在运行时爆炸之前确认代码在兼容平台上使用。 在PowerPC上有这样的通用机制吗? 如果是这样,可以在哪里阅读它?

无需组装即可检测CPUfunction

我一直在寻找确定CPU及其function的方法(例如SEE,SSE2等)。 但是,我发现的所有方法都使用cpuid指令来处理汇编代码。 鉴于在编译器甚至目标之间在c / c ++中进行汇编的不同方式(在VC下没有64位目标的内联汇编),id反而避免这种情况。 是否有一些简单的库或OSfunction(用于Windows和Linux)来获取此信息? 目前我只对使用x86和x86-64 CPU的平台感兴趣,而且我极力需要支持至少AMD和Intel。

什么是CPUID标准function01H?

我需要检查ECX的第30位,这是RDRAND所需的CPUfunction。 来自RDRAND Wiki , 如果支持,则在调用CPUID标准function01H后设置ECX寄存器的第30位。 我不知道这意味着什么。 “标准function01H ”? 这是否意味着EAX = 80000001h ? 我不确定该怎么办。

逻辑CPU计数返回16而不是4

我有一个Intel Core i5-2450m(2个物理处理器和4个逻辑处理器),我想找到一种方法来计算AMD和Intel CPU上的逻辑和物理内核。 但是,经过一些搜索,我注意到了一些奇怪 我的代码给了我16而不是返回4个逻辑单元。 static int8_t LogicalProcCount(void) { if ( !Hyperthreading ) return 1; uint32_t unused, ebx; CPUID(1, unused, ebx, unused, unused); return (int8_t) ( (ebx >> 16 ) & 0xFF ); }