神秘 CPUID 位现象引发关注
2026 年 4 月 17 日,Michal Necasek 发布相关文章。此前他有机会测试新入手的 Athlon 1200 CPU(Thunderbird 核心,陶瓷 PGA 封装)。他曾在使用稍新的 Palomino 和 Thoroughbred OPGA 处理器时体验不佳,这些处理器中无法正常使用的比例惊人。不过,型号为 A1200AMS3C 的 Thunderbird Athlon(实际上有两颗)顺利开机,运行状况良好。
发现未知 CPUID 位
在对 CPU 进行基础测试时,发现它设置了一个完全未知的 CPUID 位,具体是 CPUID 叶 80000001h 的 EDX 寄存器中的第 18 位。8000xxxxh CPUID 范围最初是 AMD 专用的,除其他用途外,它还用于指示 AMD K6 处理器对 3DNow! 指令集的支持。当英特尔引入 AMD64 支持时,为兼容现有 AMD64 软件,也不得不支持 8000xxxxh CPUID 范围的一个子集。而这颗 Athlon CPU 是 2001 年的产品,比英特尔的 x64 处理器早了几年。
资料查询无果
通常可靠的 sandpile.org 将 EDX 第 18 位列为“保留”。查阅现有的 AMD CPUID 文档,未找到相关信息,在所有能找到的文档中,第 18 位都被列为“所有 AMD 处理器保留”。更奇怪的是,AMD 的 CPUID 文档列出特定 CPU 型号的实际 CPUID 值。对于 Athlon Model 4(Thunderbird),当 APIC 启用时,CPUID 叶 80000001h 的 EDX 寄存器值被列为 C1C3_FBFFh,但实际的 CPU 在 EDX 中返回的是 C1C7_FBFFh,有一位不同,正是神秘的第 18 位。
“保留”位的可能用途
在已使用的位中间出现“保留”的随机 CPUID 位,通常表明该位在某个时候曾用于特定用途,但要么从未在正式发布的 CPU 中出现,要么短暂出现过但未被记录。2002 年左右,第 19 位用于指示 Athlon MP 的多处理能力(也可能是 ECC 内存支持)。第 17 位表示 PSE - 36(页面大小扩展),大约在 1999 年的 Athlon Model 2 中开始使用。扩展 CPUID 中的第 17 位,与大多数低位一样,反映了英特尔定义的“常规”CPUID(叶 1,EDX 寄存器)中的第 17 位。标准 CPUID 中的第 18 位曾用于指示奔腾 III 处理器短暂存在的 PSN(处理器序列号)功能。然而,Athlon Model 4 不太可能实现了某种序列号功能,所以该位的用途几乎可以肯定是其他方面。
第 18 位用途猜测
文章发布后,sandpile.org 进行了更新,显示第 18 位用于指示 AMD K7 处理器的 ECC 能力。查看 Athlon 数据手册后,最初的 AMD - 750 芯片组和 Slot A Athlons 支持 ECC 内存,该功能可能未通过 CPUID 进行宣传,大概是因为可以默认其存在。Slot A 的 Athlon Model 4/Thunderbird 数据手册中也记录了 ECC 支持(以及相应的 SCHECK 引脚)。Athlon Model 4 是最后一款支持 Slot A 的产品,也是第一款支持 Socket 462 的产品。同样,Duron Model 3/Spitfire 数据手册(仅适用于 Socket 462)中也记录了 ECC 支持。
文档情况复杂
Athlon Model 4 PGA 的数据手册出现奇怪情况。2000 年 10 月发布的 G 版数据手册提到了 ECC,内容与 Slot A Athlon 数据手册基本相同。然而,2001 年 11 月发布的 K 版数据手册中完全没有关于 ECC 或 SCHECK 引脚的内容。文档的修订历史中也没有明确提及取消 ECC 支持;根据该版本修订中报告的更改内容,可能是在 2001 年 3 月的 H 版中取消的。Athlon XP 数据手册同样没有提及 ECC。只有 Athlon MP 数据手册中提到了 ECC。
AMD 的决策与第 18 位的可能命运
从已发布的文档可以看出,对于 Socket 462,AMD 决定将 ECC 支持设为可选功能,因此需要通过一个 CPUID 位来宣传。但出于某种原因,AMD 似乎在发布关于该 CPUID 位的信息之前,就决定从 Model 4/Thunderbird Athlons 中取消官方 ECC 支持。大约在同一时间,AMD 还决定生产具有文档记录的 ECC 能力和多处理器支持的 Athlon MP 型号。ECC 和 MP 能力被整合在一起,由扩展 CPUID 的第 19 位指示。由于 AMD 放弃了生产具有 ECC 支持但无 MP 能力的 K7 处理器的计划,第 18 位可能变得过时了。所以他们事后假装 Socket 462 的 ECC 支持只存在于 Athlon MP 中。
实际测试情况
这种情况可能因采用非 AMD 芯片组的 Athlon 主板本身不支持 ECC 内存而变得复杂。典型的 Athlon 用户可能更关注价格/性能,而非可靠性,因此对使用 ECC DRAM 不感兴趣。除了 Athlon MP 型号,AMD 可能认为测试 ECC 支持不值得付出努力。如果猜测,设置了第 18 位的 Athlons 实际上很可能支持 ECC,但无法验证。有一块支持 ECC 的主板(Tyan Thunder K7X Pro),但即使安装了 Athlon MP(并且显然安装了 ECC DIMM),在启用 ECC 的情况下也无法开机。
网友回复情况
许多网友对此发表了看法。Josh Rodd 指出许多 Linux 内核启动日志显示了 c1c7 模式;Zir Blazer 猜测可能是某种调试模式或上帝模式标志,并提供了相关搜索内容;tremalrik 快速浏览 instlatx64 的 CPUID 转储数据库,找到了三款设置了该位的 AMD CPU 型号,并猜测《AMD Athlon 和 AMD Duron 处理器 BIOS、软件和调试开发指南》可能包含更多信息;Michal Necasek 认为很多 AMD 手册引用的该文档似乎无公开版本,且怀疑三款 AMD 处理器因使用相同核心而设置该未记录的 CPUID 位;Zir Blazer 搜索到 Athlon 64 勘误表,还对第 18 位设置情况及第 19 位用于 ECC 内存提出疑问。那么,第 18 位的用途究竟是什么呢?