学习
实践
活动
工具
TVP
写文章

这个超级贵的计算机bug,是如何让英特尔损失数十亿美元的

在过去的几十年,英特尔一直是世界上非常具有影响力的处理器芯片制造商。

不过追溯到 20 世纪 90 年代,英特尔竟因为浮点故障而损失数十亿美元。

一位数学家发现了一个威胁英特尔整个处理器线程的方程式,而这恰恰是在计算成为主流之前。接下来让我们回顾下浮点故障,这个使奔腾变成了一个笑柄的故障。这篇报道最先出现在《Tedium》上。1919

挪威数学家 Viggo Brun 证明了双素数(相差为 2 的两个素数 ,如 3 和5)的倒数值之和收敛为有限值,即称为布伦常数。根据前林奇堡大学数学系教授 Thomas Nicely 的说法,通过计算所有双素数到 10 的 14 次幂时,常数约为 1.902160578。Nicely 在我们的故事中扮演了一个重要角色。

英特尔的奔腾处理器问题像是由错误的人在海里捞针头造成的

为了找到这个故事的根源,让我们来玩一个逻辑练习:

There is somethIng wrong with this sentence.

当输入上面的句子时,犯了什么错误吗?明显吗?会影响你的理解吗?

你可能注意到了:在"somethIng"中的大写字母"I"。这或许是我们生活中会犯的错误。现在,想象一下,如果这是这整个网站上唯一的拼写或语法错误(虽然并不是这样)。也许,你复制了这个网站几次,纠正了"I",所以在这个词上它没有大写。但是原网站的版本上,该错误仍然存在。现在想象一下,如果数以百万计的人搜索我在网站上分享的每一个短语,比较多的人发现了这一个错误,而且这些人中有一个是有影响力的编辑。

虽然这个错误非常微小,但是足以威胁一个作家的声誉。这与 1994 年 10 月 Nicely 拿到新的奔腾处理器后,不知不觉中发现的错误是相同的情况。在寻找布伦常数时,他使用英特尔处理器及其浮点功能,意识到处理器给出的答案有点偏差。

THOMAS NICELY, 如 1984 的图所示。图片:林奇堡大学

对于绝大多数人来说,这一个小错误是不会被注意到的。毕竟,奔腾的这一错误不是世界末日。但是对于 Nicely 来说是一个例外,因为这破坏了他的研究,且在他的等式中创建了很多问题。在 1994 年的 CNN 的一次叙述 Usenet 的采访中,Nicely 讲述了这个传奇的故事:

我一直从事纯数学方面的研究;这涉及到双素数的运算,并且在计算过程中会执行很长时间的除法运算。我发现一个异常的点,花费了数月去追踪它。事实证明了源头是最不可能被怀疑的对象:芯片。

Nicely 手中的 60 MHz 奔腾芯片是罪魁祸首,他花了几个月的时间才正确诊断出该问题要归结为于 CPU。对于 Nicely 和其他数学家来说,去解决这样的问题是一个让人非常头痛的事情。但即使是像这样一个简单的错误,也足以损害备受瞩目的奔腾芯片在极其技术性的数学领域的声誉。

1994 年 10 月 30 日,Nicely 在 CompuServe 上报道了这个错误之后,它成为第一批真正通过互联网传播的故事之一。仅仅几天后,有人在 Usenet 中 comp.sys.intel 组上发布了关于这个问题的消息,确认了浮点错误。从那开始,这篇报道被工程行业出版物 EE Times 在新闻中报道后,这个故事便传遍各地。挪威程序员 Terje Mathisen 写道:“在我看来,在 60~90MHz 型号的奔腾只是将浮点分割进行到单精度。”

从此,这个故事开始引起工程和数学空间的注意。但真正的问题可能是英特尔在应对此问题时犯了一个更大的错误,一个商业性的错误。

到 11 月底和 12 月初,这个故事开始引起大家的注意,爆炸性地成为 1994 年最大的技术故事之一。这一年,互联网开始第一次进入主流领域,虽然以稍微有些尴尬的方式。但值得注意的是,虽然这一问题出在芯片设计错误,但真正的问题出在因特尔处理。简单来说,就是英特尔最好的用户没有得到应有的尊重。

1913

数学家ÉmileBorel 首次提出无限猴子定理的那一年——这个著名的理论认为,如果一百万只猴子每天用一百万台打字机打字 10 个小时,他们最终会写出一份伟大的文学作品。在许多意义上,Nicely 偶然发现的问题是学术领域上同样的事情。

英特尔奔腾芯片。图片:KRZYSZTOF BURGHARDT /Wi-Ki 共享

这一故事对英特尔照成影响的真正原因归结于英特尔的反应

对于英特尔这一问题不在于问题本身,而在于如何处理这一问题的出现。回到之前提到的案例,如果你收到一封来自一位非常牛的编辑的电子邮件,告诉你在整个网站中不小心误写了一个大写字母,你会有什么反应?

可能你会悄悄地找到这一错误,且修正它。但英特尔没有做到这一点。就像报纸上的修正一样,芯片中的错误基本上是决定性的。(嗯,除非你使用类似可编程数组的东西。)他们能够做到的最好方式就是在将来的版本中消除这一错误。虽然软件可以在一定程度上缓解这一问题,但如果芯片出现问题,也无法完全修正它,除非替换芯片。说白了,浮点误差虽然糟糕,但宏观上看是微小的。

这就像你拥有一台计算器,在你使用计算器的整段时间里,它都会给你一个错误答案。根据现代处理器对比,最近的处理器都受到 Meltdown 和 Spectre 的困扰,(在过去 20 年中发布的大多数 Intel,Power Architecture 和 ARM 芯片的设计中都包含了前者),这些缺陷总体上的破坏性非常大。

它们不是理论上的问题,它们是基本的安全风险。修复这两个缺陷所发现问题的解决方案意味着硬件和软件制造商必须关闭处理器的一些功能,从而导致人们的计算机运行速度变慢。在某些使用(如云计算)中,这样的更改实际上意味着使用同一处理器将花费您更多的钱和时间来执行相同的工作。除了重复性损害之外,英特尔仍然试图修复这些缺陷。

那么又该如何看待浮点错误呢?发现它的学者 Thomas Nicely 认为,虽然这对他来说的确是个问题,但是当时的计算机处理器非常复杂。这意味着如果他没有特意探索的话,这个问题可能不会被人发现。“目前这一代的微型处理器已经变得非常复杂,已经不可能完全调试一个处理器了。”他在 1995 年初告诉《PC 杂志》。但英特尔当然可以把事情处理得更好。正如数学家和 MATLAB 开发人员 Cleve Moler 在 2013 年所回忆的那样,英特尔最初给客户的回应有很多需要改进的地方。

按照 Moler 的说法,以下是客户支持机构发给客户的内容:

最近网上有很多关于奔腾处理器浮点缺陷的交流。对于大多数的用户来说,这不是问题。

事情是这样的,英特尔检测到奔腾处理器的除法运算精度存在一个微妙的缺陷。对于极少数情况(九十亿次中出现一回),结果的精度会降低。英特尔在对奔腾处理器进行持续测试的过程中,经过几万亿次浮点运算后,发现了这个细微的缺陷。英特尔立即对使用浮点单元的最严格的技术应用进行了测试,历时数月,我们一直未能发现任何错误。事实上,在经过大量的测试和数百万个基于奔腾处理器的系统的出货后,据我们所知,只有一个影响用户的报告实例。在这个案例中,一位数学家在做素数和倒数的理论分析时,看到小数点右边第 9 位的精度降低。

事实上,广泛的工程测试表明,一个普通的电子表格用户在每 27000 年的使用过程中可能会遇到一次使得精度降低的细微缺陷。基于这些经验观察和我们的大量测试,使用常规软件的用户不会受到影响。如果你有这种质数生成的精度问题或其他复杂的数学问题,请拨打 1 800 628-8686(国际)或者 916 356-3551。如果没有的话,您的基于奔腾处理器的系统不会遇到任何问题。在计算机的使用过程中,一旦出现这样的情况,英特尔公司将与客户共同解决。

正如我在上面指出的,英特尔非常容易遇到百万猴子问题。这段话所强调的问题是,英特尔在 Nicely 伸出援手之前就知道了这件事,并且有点放任自流。这之所以有问题,部分原因是焦点从关心这个问题的技术群体转移到了不关心它的普通消费者身上。英特尔试图把所有的压力放在消费者身上,并在当年推出了英特尔 Inside 品牌活动,以及奔腾芯片的消费者友好(和商标友好)品牌。但在试图赢得普通观众的时候,英特尔似乎暗示它不再认真对待现有的用户群。

对于那些专注于技术应用程序的人来说,浮点除法的情况造成了不确定性,而英特尔的回应不尽如人意。在 1994 年《华尔街日报》的一篇文章中,喷气推进实验室研究员戴夫·贝尔(Dave Bell)明确指出,科学界可能会因为对芯片的困扰停止使用奔腾。

“有很多人做研究,必须站在计算机模拟的基础上发表结果,”贝尔说。“也许现在的一个问题会是,‘它是不是在有问题的芯片上做出来的‘?”

已故英特尔首席执行官安迪·格罗夫(Andy Grove),他于 2016 年去世。图片:英特尔免费媒体

最终在 1994 年底的时候,英特尔 CEO 安迪-格罗夫(Andy Grove)在社交媒体 comp.sys.intel 上发布了一篇回应。这件事情并不顺利,尤其是对于像格罗夫这样的所谓技术型人物来说。起初,英特尔的理查德·维特(Richard Wirt)发布了这个帖子,导致人们指责这个回应是冒牌的。然后,格罗夫又以他个人的名义发了出来,强调他很重视这个问题,并指出这个问题是在处理器最初发布一年多后,他们这边才出现的。“我们将芯片的推出时间推迟了几个月,以便有更多的时间来检查芯片和系统”他写道,同时强调没有任何芯片是完美的,“为此,我们也与许多软件公司进行了广泛的合作。”作为回应,它摆出了比激怒众多技术用户的客服信息更好的姿态。但如果你看一下这个帖子,你会发现格罗夫还是有很多表达愤怒的帖子要处理。

“这真的让我很生气,我花了很多钱买这个芯片,”一个回复者写道,“但是,因为我不为一些可能会批发奔腾产品的大公司做大量复杂的数学工作,所以我什么都不是。” 这种动态可能跟你今天在 Twitter 上看到的坏话差不多。大约在 1994 年感恩节过后,格罗夫的消息就在网上传开了,主流媒体开始大肆报道这件事,公司的股票也受到了很大的冲击。

这个时机在很多方面都很糟糕:1994 年是很多家庭第一次将多媒体、互联网功能的家用电脑带回家的一年,很多家庭都采用了奔腾芯片。这些产品已经明确地标记为普通消费者可以购买的东西。而格罗夫在黑色星期五的第二天,不得不设法缓解技术用户和学者们的担忧。而主流媒体实际上向公众淡化了这个芯片的传奇色彩。一些人则利用这种情况,比如 IBM 公司当时正在向公众发布首批 PowerPC 机器,它从其设备中移除了奔腾芯片,并公开宣称,普通消费者每 24 天就会遇到错误,而不是 27000 年。也许真相是在这中间的某个时间?这对英特尔来说并不是什么好时候。公关危机最终看到了它不可避免的结局。在圣诞节前夕,英特尔看到了失败的征兆,并召回了这些芯片。布伦的常数扣动了扳机。

4. 75 亿美元

英特尔召回奔腾芯片必须重新计算有关的注销费用,毕竟任何想要更换新处理器的消费者都可以得到新版本的处理器。尽管这笔费用产生了,但在 1994 年的节日期间,英特尔看到其 486 和奔腾处理器的销售量在需求中飞速增长。也许额外的新闻是件好事吧。“坏公司被危机摧毁;好公司在危机中生存;伟大的公司因危机而改进。”

对于奔腾浮点除法缺陷的传奇时间,你会怎么评价?英特尔找到了一个很好的方法,把这次危机变成了一种重要的学习时刻。这突出表现在该公司决定将臭名昭著的破损芯片转换成关键的一环。其中,格鲁夫的一句话被引用,也就是时刻提醒员工他们并不完美,他们需要从错误中学习。

即使有缺陷,但奔腾处理器也成为 90 年代发布的最重要的技术之一,将 CPU 在计算机中从一个单纯的藏在盒子里的组件升级为一个家喻户晓的名字,成功地实现了目标。而且可以这样说,虽然肯定有一些技术性较强的用户感到了不快,但这个传奇事件却提升了公司在普通计算用户中的形象,这也是公司强调品牌建设所要达到的目的。值得一提的是,这个传奇事件实际上让一个数学家出名了,这不是通常能做到的。

在那个让英特尔损失了 5 亿美元的致命方程之前,Thomas Nicely 的成名之作是一款预测足球范特西的棋牌游戏。他承认自己没有预见到这一点。“数学家一般都有非常私密的生活,”他在丑闻高峰期接受美联社采访时说,“我觉得看到自己的名字出现在印刷品上有点尴尬。”

去年去世的 Nicely 被同行视为传奇人物,在 2000 年退休前,他在林奇堡大学工作了大约 30 年。

或许丑闻的副作用之一就是曾经一度改变了他的生活吧。他将布伦常数的精确度再增加了一些。

  • 发表于:
  • 原文链接http://news.51cto.com/art/202010/629133.htm
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码关注腾讯云开发者

领取腾讯云代金券