英特尔|一道数学题,让芯片巨头,亏了5亿美金

英特尔|一道数学题,让芯片巨头,亏了5亿美金

文章图片

英特尔|一道数学题,让芯片巨头,亏了5亿美金


1993年 , CPU 巨头Intel推出了Pentium处理器 。
新的品牌顺利地摆脱了AMD等公司对286 , 386 , 486等数字系列的品牌“抄袭” , 树立了全新的领先者的形象 。

再加上90年代初斥巨资成功推进的Intel Inside计划 ,Intel 成功地从一家主要向电脑制造商供货的公司 , 转变成一家直接面向消费者的品牌 。
不知道哪位天才把Pentium翻译成霸气的“奔腾” , 真是惊艳全场的神来之笔 。
【英特尔|一道数学题,让芯片巨头,亏了5亿美金】新产品 , 新品牌 , Intel 可谓意气风发 , 准备一统天下 。
但谁也没想到的是 , 这个被寄予厚望的CPU内部居然隐藏着一个Bug!
1Bug被发现的过程也颇为传奇 , 我们得从数学上的一个概念说起 。
早在希腊时代 , 欧几里得就已经证明质数有无穷多个 , 并且数字越大 , 质数分布得越稀疏 。
神奇的是 , 尽管分布得很稀疏 , 但只要出现一个质数 , 就可以在附近找到另外一个 ,例如41 和 43、101 和 103、10007 和 10009 , 他们之间相差都是2 。
数学家给这些相差为2的连续质数起了一个名称:孪生质数 。
1919年 , 挪威数学家 Viggo Brun证明了一件有趣的事情 , 就算有无穷多的孪生质数 , 它们倒数的和会收敛于一个常数 , 这个常数被称为“布朗常数” 。
但是让数学家头疼的是:他们不知道这个布朗常数是不是无理数 。
随着计算机的出现 , 有些人就想到一个招数:用计算机强大的算力 , 暴力求解 。
美国 Lynchburg College 的数学教授Thomas Nicely就是其中的一员 , 他的实验室恰巧装备了新的奔腾计算机 。

严谨的Nicely为了防止算错 , 用了两种算法做双保险 , 如果答案不同 , 肯定是某个地方出了问题 。
Nicely满怀希望地开始了计算 , 可是结果让他失望:两种算法的结果真的不一样!
深入研究以后 , Nicely发现:824 633 702 441和824 633 702 443这两个孪生质数 , 它们的倒数的小数点后的第10位被算错了!
Nicely换了一台老旧的486电脑来计算 , 答案算对了 。
他再用奔腾电脑来重新计算 , 错误重现 。
到底是自己的程序写错了?还是电脑的问题?
Nicely开始做排除法 , 排除自己代码的错误 , Borland编译器的错误 , 芯片组的错误 , 花了整整4个月的时间 , 终于找到了Bug的起源地:奔腾CPU 。
21994年10月24号 , Nicely打电话给Intel的技术支持部门 , 告知他们这个问题 , Intel说几天内就会有回复 , 但是从此杳无音信 。
原因很简单 , Intel早在1994年6月就知道了这个问题:浮点除法运算(FDIV)出错 。
奔腾CPU的FDIV引入了一种全新的、快速的实现方法 , 使用了一个2048项的硬件查找表 , 但是由于意外 , 有5个值没有被正确地设置 , 他们本应该是2 , 但是却设置成了0 。
这个Bug只有在高精度计算的时候才会被触发 , 普通用户很难碰到 , Byte杂志估计 , 出错的概率是90亿分之一 。
既然影响不大 , Intel的选择是:隐瞒 , 悄悄修复 , 不公布任何细节 。
毕竟已经售出几百万片CPU了 , 大规模召回损失太大 。
又不是不能用!
3收不到回音的Nicely很不爽 , 10月30号 , 他开始给一些IT著名人士和杂志发邮件 , 包括Byte杂志 , PC Week , InfoWorld , PC Magazine 。