CPUID wrong values?



我的CPU是Intel Core2Quad Q9300 2.5GHz。CPU-Z 为我提供了"系列:6"、"型号:7"和"步进:7"的值。尝试使用 EAX=1 的 cpuid 指令编写 x86 程序集,我得到的只是 AL 中的值 0000 0010(我想它应该是 0111 0111)。

有什么帮助吗?

可悲的是(由于大量的吸吮)英特尔的"家族"数字从5(奔腾)到6(奔腾Pro,奔腾II,奔腾II)到15(奔腾4),然后又回到6(奔腾M,原子,酷睿,酷睿2,Nehalem,Sandy Bridge等)。

这主要意味着(就其本身而言)"系列"字段对于确定 CPU 的系列毫无用处。相反,如果"family = 6",您必须使用型号来确定系列(并且型号不是理智的顺序或任何东西 - 例如型号 8、10 和 11 是奔腾 III,型号 9 的中间是奔腾 M)。

另请注意,型号最初是 4 位(EAX 中的位为 4 到 7),这不足以处理英特尔的"一切都是家庭 6"的愚蠢,因此他们稍后将型号扩展为另外 4 位(EAX 中的位为 16 到 19)。这意味着要获得完整的型号,您需要做一些微调/移动(例如 model = ( (EAX >> 4) & 0x0F) | ( (EAX >> 12) & 0xF0); )。

例如,对于模型 23,EAX 中的值将为 0x???1??7?,而较旧的软件(在引入"型号扩展"之前设计)会错误地认为CPU是"型号7",而事实并非如此。

我假设你也做了同样的事情(忘记在你的型号中包含"扩展型号");你的实际CPU的详细信息是"系列= 6,型号= 23"。这将使它成为Core 2(Penryn)。

相关内容

  • 没有找到相关文章

最新更新