电子历史和逆向工程专家 Ken Shirriff 表示,他在第一代 Intel Pentium 处理器中发现了晶体管,该晶体管导致了“FDIV 错误”,该错误在 1994 年使制造商损失了 4.75 亿美元。
图片来源: oldbytes.space/@kenshirriff
FDIV (Floating Point Division) 错误是处理器没有正确执行浮点除法运算。这位专家用显微镜武装自己,研究了导致此误差的可编程逻辑矩阵 (PLA)。基于 P5 架构的 Intel Pentium 处理器采用 800 nm 工艺技术制造 - 芯片包含 310 万个晶体管,它们的位置确实可以在显微镜下研究并识别芯片上的操作块。对于拥有数百亿个晶体管的现代处理器,这是不可能的。
Pentium 处理器上的浮点单元比当时的芯片更快,这要归功于 SRT 除法算法,该算法允许以每个时钟周期 2 位的速率进行除法。为了使其正常运行,在晶体上放置了一个包含 2048 个单元格的表格,其值分别为 “-2”、“-1”、“0”、“1” 和 “2” ,共 112 行。这些值由单元中是否存在晶体管来表示。但是表中的 5 条记录缺少重要的晶体管,导致默认值为 “0” 而不是正确的 “2”。因此,浮点计算给出了不正确的结果。
FDIV 错误是由林奇堡学院的数学教授 Thomas R. Nicely 发现的,但英特尔最初称它微不足道,并表示它每 27,000 年只能发生一次。然而,IBM 确定它可以每 24 天发生一次,并停止销售 Pentium 处理器。结果,英特尔召回了所有处理器,并蒙受了 4.75 亿美元的损失。英特尔最终通过用 “2” 值填充板上所有未使用的条目来修复错误,并且它奏效了。