奔腾论文-我的第一个MATLAB核心贡献

MATLAB中心正在庆祝它15岁生日今年秋天。为了纪念这一时刻,MathWorks的博主们正在回忆他们第一次接触这个网站的经历。我对文件交换的第一个贡献不是MATLAB软件,而是一个文档集合,我称之为奔腾的论文.我在1994年11月和12月保存了这份材料,当时我深深卷入了英特尔奔腾浮点部事件。

奔腾钥匙链。图片由托马斯·约翰逊提供,thomas@cpucollection.se

糟糕的公司会被危机摧毁;
好公司能挺过去;
伟大的公司正是因为他们而得以改进。

——安迪·格鲁夫,英特尔公司董事长,1994年12月

内容

1994年的互联网

正如我在我2013年的博客文章“1994年秋天,奔腾部门的漏洞事件对MathWorks、互联网、英特尔公司以及我个人来说都是一个决定性的时刻。”

1994年秋天,互联网和今天完全不一样。万维网还处于起步阶段。所有的连接都是基于文本的。Mosaic图形浏览器只有几个月的历史,很少有人知道它。ie浏览器还不存在,谷歌是四年后的事情。我们有电子邮件。我们中的一些人使用FTP,文件传输协议。当时的社交媒体都是文字新闻组,名字就像comp.soft-sys.matlab而且comp.soft-sys.intel

但称这些新闻集团为“社交媒体”有些牵强。“社交媒体”这个词在1994年还不存在。几乎所有新闻组的参与者都是大学和工业研究实验室的极客和书呆子。

“组织”Bug

托马斯·尼斯利是弗吉尼亚州林奇堡学院的数学教授,他对质数做了专门的研究孪生质数.为了他的计算实验,他使用了几台运行英特尔486处理器的IBM个人电脑。1994年夏天,他在电脑上安装了新的奔腾芯片。令他惊讶的是,他发现奔腾对他的一个质数的倒数给出了不同的结果。

10月30日,尼斯利给其他几位奔腾用户发了一封电子邮件,说他在奔腾的浮点运算中发现了一个漏洞。这个消息很快传到了Terje Mathisen那里,他是挪威奥斯陆Norsk Hydro公司的一名计算机运动员,他曾写过关于英特尔超越函数精度的文章。Mathisen证实了这个漏洞,并于11月3日发布了一个测试程序comp.soft-sys.intel.一天后,德国的Andreas Kaiser使用Mathisen的程序发布了一个数字列表,这些数字的倒数被计算出来的精度似乎只有一个精度。

Tim Coe为加州的一家航空航天承包商设计了浮点硬件。他没有使用奔腾机器的权限。但从凯泽的错误倒数列表中他可以逆向设计英特尔的除法算法。他预计,涉及特定位模式的数量的某些划分,产生的结果甚至会比单一精度低得多。他开车去了当地的一家电脑商店,在陈列室里的一台奔腾电脑上运行了一个计算器程序,证实了他的预测。

我最初的参与

我第一次听说FDIV错误(FDIV是x86处理器上浮点除法的助记符)是在11月初从浮点算术的电子邮件列表中。这似乎是一个单/双精度硬件故障。烦人,但并不令人惊讶。我开始跟随comp.soft-sys.intel无论如何。但当Coe发布了他的结果,当MathWorks技术支持收到几个询问这如何影响MATLAB的问题时,我变得非常感兴趣金宝app。

1994年11月15日,我发表了第一篇文章,后来又在两家公司发表了几篇文章comp.soft-sys.intel而且comp.soft-sys.matlab总结我所知道的。我指出,在Coe的一个例子中,相对误差是$6.1 \cdot 10^{-5}$。这比我们在MATLAB或任何其他使用IEEE双精度的科学计算中所期望的要大10个数量级。这种错误可能不会经常发生,但一旦发生,就会非常严重。

在接下来的一周内,网络变得非常活跃。一些与会者联系了报纸和电视台。喷气推进实验室的两名工程师说服喷气推进实验室发布新闻稿,宣布他们不再购买基于奔腾处理器的个人电脑。寻求更多信息的记者发现了我的帖子,并将其转发。

11月22日,CNN派了一个电视摄制组到MathWorks,采访了我,然后开始了他们的晚会Moneyline讲述了英特尔的麻烦第二天,我一直在应付其他记者打来的电话。一些报纸,包括《纽约时报》圣何塞水星报,在24日发表了文章。报纸头版的头条波士顿环球报是“对不起,打错了”。

英特尔的最初反应

作为一家公司,英特尔不知道如何应对,处理得很糟糕。他们几乎没有与公众打交道的经验。他们的客户是电脑制造商,而不是个人电脑用户。他们没有任何处理互联网的经验。他们的第一反应是一份罐装声明,可以通过传真传真给任何联系技术支持的人。金宝app这份FAXBACK文件很快被发布到网络上,但不是由英特尔发布的。我已经在奔腾的论文

英特尔在声明中表示,他们自己已经发现了FDIV“漏洞”,并在最近发布的奔腾芯片中修复了该漏洞。他们声称,这种情况在90亿次除法运算中只会发生一次,而电子表格用户在27000年的使用历史中平均只会遇到一次。他们提供了一个800电话号码,供任何研究“质数生成或其他复杂数学”的人拨打。他们会面试来电者,并提出为他们认为确实需要无差错分割的人更换芯片。

不用说,这种咄咄逼人的不道歉行为只会在网上激起对英特尔的批评。没有人相信他们关于事件发生频率的说法。这些频率来自英特尔做的一项研究,但最初拒绝公布。就我而言,问题不在于遇到FDIV bug的可能性,而在于我们不得不担心这个问题。

软件解决方案

Tim Coe, Terje Mathisen和我设计了一个方案,奔腾FDIV的硬件指令可以用不到十几行软件来代替,以确保所有的分区都是正确的。其思想是,将检查每个预期除法操作的除数,以确定浮点分数中是否存在使其“处于风险”的特定位模式。当风险除数和相应的红利都按15/16缩放时,商数保持不变,但FDIV指令可以安全地完成操作。

我们想让我们的解决方案广泛应用。英特尔联系了我们,我们和彼德·唐(Peter Tang)一起,彼德·唐是当时在阿贡的计算机科学家,他一直是英特尔的顾问,我们开始通过电话会议,与英特尔的一个小组合作。我们的意图是为编译器作者和主要软件供应商提供解决方案,并在网络上宣布它的可用性。工作区宏将在所有正在开发的PC软件中取代FDIV。(它更复杂——像“mod”和“rem”这样的函数,以及像“atan”这样的一些具有奔腾硬件支持的先验函数也包括在内。)金宝app

奔腾感知MATLAB

MATLAB是软件解决方案的概念证明。我们构建并发布了一个特殊的“奔腾感知”MATLAB。它的文档说

MATLAB检测,并选择性修复,
由英特尔奔腾处理器产生的错误算术结果。
错误的结果并不常见,但在许多MATLAB操作中都可能出现
和功能。当检测到错误的结果时,MATLAB会打印一个
消息。有办法阻止打印这些信息,
计算出现的次数,并抑制修正
完全。

我们的公关公司以这个标题发出了一份新闻稿

数学工场为英特尔奔腾(tm)浮点错误开发修正

当时,MathWorks刚刚迎来10周年纪念。公司的名字在我们服务的行业里几乎不为人知,在公众中更是闻所未闻。因此,当一份新闻稿传来,说马萨诸塞州这家不知名的小公司已经修复了奔腾的漏洞时,引起了不小的轰动。我又接到了几十个电话。

我现在有一个文件夹,里面有数百份来自世界各地的新闻剪报,都是奔腾事件造成的。

IBM的研究

12月12日,IBM发布了自己的研究报告。IBM有几个参与的理由。他们发明了,或者至少命名了IBM个人电脑,其中一个部门正在销售使用奔腾的个人电脑。另一个部门正在开发和制造自己的芯片PowerPC。

IBM的研究声称,典型的电子表格计算很可能生成具有“危险”位模式的数字,因此FDIV错误发生的可能性比英特尔声称的要大得多。该研究还巧妙地将他们预测的电子表格用户遇到错误的可能性乘以全球电子表格用户的估计总数,得出结论:“在典型的一天,很多人在计算中犯错误而没有意识到这一点。”

IBM宣布暂停生产基于奔腾处理器的个人电脑。

英特尔投降

IBM宣布这一消息后的几个小时内,英特尔的股价下跌了10点。一周后,英特尔发表了道歉声明,并宣布对奔腾芯片实行无条件退货政策。他们建立了一个服务中心网络来处理更换,并拨出4.75亿美元来支付更换计划的费用。

几个月后,很少有人真正要求更换。我们已经了解到,遇到FDIV错误实际上是非常不可能的。但更重要的是,对大多数人来说,英特尔的道歉已经足够了。

奔腾的论文

当这一切发生时,我保存了一些帖子comp.soft-sys.intel新闻组,一些报纸故事和其他一些当代文献。如果你能上网,你可以通过匿名ftp从我的网站下载我的奔腾论文ftp.mathworks.com.”

随着MathWorks网站的发展,通常在某个地方会有关于如何获取奔腾论文的说明。当我们开始MATLAB中央文件交换时,我把集合移动到那里作为我的第一个贡献。

脚注

如果你打开. txt文件奔腾的论文而在微软的Word软件中,它可以分解长行,生成一个可读的文件。

发布与MATLAB®R2016a

|
  • 打印
  • 发送电子邮件

评论

如欲留言,请点击在这里登录您的MathWorks帐户或创建一个新帐户。