运行90亿次才出现的芯片BUG,是如何让这家公司赔了40亿人民币?

芯片迷不休息 2025-04-16 03:12:29
半导体工程师 2025年04月14日 09:47 北京

读过《三体》的同学都知道。

三体人为了封杀地球的科技水平,派了一个智子来到地球。

质子把全球物理学家的实验结果全部搞乱。

让物理学家没有办法通过实验进一步点亮科技树。

三体人就依靠这种手段把地球的科技水平封杀到不能进化的水平。

这就是降维打击。

这件事情的后果就是,

很多物理学家对这个世界产生了怀疑,从而自杀。

而本文的主人公,数学家马教授,就遭遇了几乎一样的场景。

他最近的科研结果和理论完全对不上。

居然得出了一些诡异所思的结果。

真的不得不让人联想是不是有“智子”在捣乱。

不同的是,他通过自己抽丝剥茧的洞察和计算。

一点一点逼近真相。

最终,造就了芯片历史上最大的赔偿事件。

第一幕:魔鬼藏在素数里

事情的开始发生在一所平平无奇的小规模大学。

麻雀虽小,五脏俱全。

这个大学有个数学专业,

数学专业有位马教授。

他的研究方向是孪生素数猜想。

为了讲清楚马教授的为什么发现有“智子”干扰自己的科研结果

本文稍微简单介绍一下什么是孪生素数猜想?

孪生素数猜想被誉为哥达巴赫猜想的姐妹问题。

我们都熟悉的数学家陈景润和张益唐都研究过类似的问题。

搞过孪生素数猜想的同学们都知道,

素数是只能被1和自身整除的数。

而孪生素数是什么意思?

如果有个素数Q。

Q+2也是素数。

则Q与Q+2是一对素数,称为相差2的挛生素数。

大家很快就能口算一堆的孪生素数。

例如3和5,5和7,11和13,10016957和10016959等等

这些都是都是孪生素数。

什么是孪生素数猜想?

简单来说,就是,是否存在无穷多对孪生素数。

为了解决这个问题,数学家想了很多的方法来证明。

1919年,挪威数学家布隆仿照欧拉的方法,求所有孪生素数的倒数和:

B=(1/3+1/5)+(1/5+1/7)+(1/11+1/13)+…

如果也能证明这个和比任何数都大,就证明了孪生素数有无穷多个了。

在这个方面,有两位中国数学家还是做出了非常牛X的结果。

一个是大名鼎鼎的陈景润。

1966年,中国数学家陈景润证明:存在无穷多个素数p,使p+2是不超过两个素数之积。

而另一个大名鼎鼎的张益唐。

2013年,张益唐证明了存在无数多个素数对(p, q),其中每一对中的素数之差,即p和q的距离,不超过七千万。

成果发表在《数学年刊》。

从此一举成名。

可见,孪生素数这个猜想及其引申问题一直是数论中研究的方向。

看到这个问题,如果读者中有大神要是能够证明这个猜想,

那么也能一举成名。

马教授也是这样的思路,

他要计算孪生素数的倒数之和是不是收敛的。

S=1/5+1/7+…+1/29+1/31+.+1/p+ 1/(p+2)+..

聪明如你,

如何来计算这些值?

是不是可以通过编程来计算。

马教授和读者们一样聪明。

他打算计算机通过程序来加速计算的效率。

本来办公室里面就有6台用于计算的计算机。

但是,还不够。

就在那年的三月份,草长莺飞,

马教授购入了一台当时世界上最先进的计算机。

然后一阵编程之后,又是一轮艰苦的计算过程。

终于在一个晚上,新的结果出来了

马教授的手指悬在键盘上,一头雾水的瞪着屏幕。

屏幕上的数字像一道裂开的深渊,颠覆了过去几个月的值。

“我X,这不科学啊。”

于是他逐一对程序进行排查。

经过深入的对程序的检查。

终于他的目光聚焦在一串数字上。

824633702441;

这串平平无奇的数字,将揭示芯片产业史上最隐秘的BUG。

第二幕:排除法

这个数字毫无疑问,是一个素数。

而马教授做的就是求这个素数的倒数。

然后和其他的孪生素数的倒数加起来,确定是不是趋近于一个收敛的值。

当马教授开始计算1/(824633702441)。

但是算了几次之后,结果总出现诡异的偏差。

起初他以为是自己疯了。

“或许代码有错?”

他熬了两个通宵重写程序,甚至换了编程语言。

随着测试越来越多。

很多马教授就用一个方法找到了规律。

如果我们计算N*(1/N)。

那么这个值就是1;

这个没毛病,任何一个数乘上它的倒数都是1;

但是,如果用这台新计算机(824633702441.0)*(1/824633702441)。

那么结果却不是1。

这个值是 0.999999996274709702;

有误差。

并且,通过编程遍历了很多数。

马教授发现,如果N在以下的范围之内,

824633702418 <= N <= 824633702449,

那么,计算出的结果都和1偏差很大。

另外,马教授还做了一个计算。

也就是计算1/(1/N);这个值应该返回N的原值。

但是,对于上面的范围内的数值来说。

就会返回3072=0x(200)*6

如果说,前面的算是误差,那么后面的结果妥妥就是错误。

马教授在6月份就发现了这个问题,结果用了三个月时间进行问题排除。

包括,软件程序,编译器,芯片组。

终于,让他发现了蛛丝马迹。

当他在办公室的老电脑和新部署的计算机上分别运行同一段代码时。

老电脑运行正确,

而新的计算机的结果却是在小数点后面差。

马教授尝试了不同品牌的新计算机,包括戴尔,gateway,IBM等计算机。

结果,让他发现:

有着同一款芯片的计算机就会出这个问题。

问题到了这里指向就非常明确。

这款芯片可能有问题。

所以他打电话给了这个芯片厂家。

但是,却让他更加的气愤。

第三幕:死不承认

马教授春暖花开的三月时候买了计算机。

夏日炎炎的6月时候,发现了科研结果有问题。

等到秋风萧瑟10月时候,终于定位到和计算机的芯片相关。

马教授给这个芯片公司的技术支持部打电话,

对于这个芯片公司来说,,

这批芯片已经卖出了几百万片了,

不可能有问题。

有问题也只能是马教授自己的问题。

技术支持部门的声音礼貌而冰冷:。

“我们之前没有报告和观察到此类错误。”

“可能是计算机的总线系统有问题,”

“这个不是我们芯片的问题。”

技术支持部门丝毫不承认自己的问题。

“但我的计算已经无数次触发这个错误了!”马教授几乎吼出来。

“那您可能需要检查自己的算法。”电话挂断了。

从春到夏,从夏到秋,马教授大半年的时候消耗在一个问题上。

如今得出了结果。

居然,厂家不承认。

但是,这个芯片厂商是业界巨头。

一个普通人怎么能和行业巨头针锋相对。

马教授在芯片厂家那里没有得到答案。

于是,没有任何办法的马教授,在10月的最后一天。

联系了一个畅销书作家舒曼,

舒曼手头上没有马教授提到的计算机。

但是他联系了一个好友,软件大牛,也是一个不知名软件公司创始人。

这个软件大牛用一段程序很快就确认了马教授的发现。

于是,这个软件大牛就把马教授发现的这个BUG,

发到了业内的技术论坛Canopus上。

这个论坛,有很多的程序员和极客来交流。

“恳请任何人帮马教授验证这个现象。”

很快,无数的论坛爱好者都被这个问题给吸引了,纷纷的开始验算。

四十八小时内,

回复如野火般蔓延。

装有这种芯片的计算机上的错误报告成千上万的被报告出来。

都验证了马教授的计算。

问题再也掩藏不住。

5天之后,电子工程时报报道了这个问题。

并且采访了这家芯片大厂的技术支持的史经理。

史经理满不在乎。

他胸有成竹的解释说道:“这个缺陷不会影响普通用户,只有老马这种极端的用户才会遇到,而老马同志也是用了几个月后才发现的,我们前8位小数点都是对的,而影响到的之后小数点后的第9位。”

最后,史经理总结说道:

“普通用户根本不用担心,你根本不会用到。”

很快,所有的最大的媒体开始报道和转载。

所有的都引用了史经理的话。

“这个漏洞对于普通用户根本不重要。”

并且,这家芯片大厂还表示。

只有90亿分之一的操作会在普通用户的电脑上产生错误。

正常的办公,

或者家用。

根本不会受到影响。

“是否召回装有这个芯片的计算机?”

“我看就没有这个必要了吧。”

第四幕:最后一击

随着事件的发酵,

这个芯片大厂的傲慢。

根本没有打算为购买这种计算机的客户提供解决方案。

对他们来说。

普通客户根本又用不到这么精确的计算。

所以,没有必要来给他们换芯片。

这种傲慢让用户的愤怒如同野火一样,

更多的人加入进来,寻找问题的根源。

这个芯片的问题究竟是什么也逐渐的清晰起来。

终于。

一些程序员找到了这个芯片的问题出在什么地方了。

在程序中,有个除法的例子,

4195835除以3145727。

正确的结果是:

但是,装有这个芯片的计算机,却算出了下面的结果。

这可根本不是史经理说的,

只会影响小数点后第九位的结果。

这个例子中,小数点后第四位已经出错了。

并且,这些结果是必然出现的。

并不是什么90亿分之一的概率。

通过进一步的分析。

极客们发现。

这个芯片计算的是下面的结果。

用二进制表示上面两个数

4,195,835 = 0x4005FB

3,145,727 = 0x2FFFFF

4195579 = 0x4004FB

也就是说,二者之间值,差了0x100;

做过芯片的同学立马就能感受到。

这明显是一个芯片的BUG,

而不是一个精度和概率的的问题。

与此同时。

在游戏雷神之锤(quake)中,

如果游戏软件运行在装有这种芯片的电脑上,

也会发现一个诡异的BUG。

在某些关卡上,从特定角度来看,整个画面就全乱套了。

BUG被找到的越来越多。

而这家芯片大厂却是嘴越来越硬。

像是复读机一样。

重复

再重复。

这个芯片只有90亿分之一的错误。

普通消费者不影响。

终于,

有人忍不住了。

这个人就是带头大哥IBM。

IBM决定,暂停和这家芯片大厂的供货。

绝对不用这一批的芯片,装到自己的计算机上。

当然,IBM也不是为了主持正义。

主要是,IBM正在推自己家的Powerpc系列芯片的计算机。

如果有机会,踹竞争对手一脚。

这绝对是一个非常好的时机。

即为广大消费者主持了正义,又暗戳戳的提升自有芯片的计算机份额。

一石二鸟的事情。

真是暗爽啊。

这带头大哥一出现,

那么其他家的计算机公司也暂停了这家芯片大厂的供货。

一时间,世界上几乎所有的计算机公司,都暂停了这批芯片的采购。

消息一出来。

这家芯片大厂的股价狂跌。

终于到了傲慢的厂家撑不住了。

在当年的11月20日。

这家芯片大厂宣布认错

对有问题的芯片进行更换。

而这场芯片更换,

花费了接近4.75亿美金。

至此,马教授的6个月坚持,终于迎来了一个结果。

从春天买入电脑,

到夏天发现问题,

到秋天10月份找这家大厂反馈问题没有结果。

而事件在11月1日发布在网上,

经过了三周左右的发酵。

用户,舆论,竞争对手,业界合作伙伴。

怒火引燃了这家大厂的股价。

第五幕:小作文

台下记者们的闪光灯此起彼伏,

台上芯片大厂CEO正宣布全球召回。

如果处理不当,这个芯片大厂,可能就此陷入倒闭的深渊也说不准。

这次芯片的更换,让这个公司付出了4.75亿美金的代价。

按照当时汇率,接近40亿人民币。

虽然,底下的人都告诉他,这个问题的几率是90亿分之一。

但是还是闹出了如此大的风波,

付出了惨重的代价。

根据这个事件的反思。

这个CEO写了一篇文章。

在文中他写到

“我是最晚知道芯片危机(也就是上面BUG,导致所有计算机厂商暂停供货)含义的人之一,只有在遭受了一场枪林弹雨的指责非难后,我才意识到我们需要适应新环境,如果我们改变方向,就能保住这一众人皆知的品牌,保住用户心中的巨人形象,如果我们知错不改,坚持老路,我们不仅失去与未来客户搞好关系的机会,还给公司的名誉和财务带来严重的破坏。”

还给这篇文章起了一个几乎所有人都耳熟能详的名字。

《只有偏执狂才能生存》

这个CEO叫做安迪.格鲁夫。

这个芯片大厂就是英特尔。

这个出BUG的芯片就是奔腾芯片。

而发现他们问题的马教授,叫过Thomas R. Nicely。

是林奇堡学院的一个数学教授。

出的这个bug就是芯片中信添加了FDIV部件,属于FPU的一部分。

(芯片具体的问题剖析,我后面再找时间单独来写)

安迪.格鲁夫这本书《只有偏执狂才能生存》开篇就讲了这个让他寝食难安的BUG。

正是这个BUG,让如日中天的英特尔陷入一场危机。

但是他还是执着于这个BUG有90亿分之一的概率。

但是,我们上面分析了,

这明显是一个必现的BUG。

只要用到这些除法,

对于这些具体的数字,

就会产生巨大的偏差。

而不是英特尔分析,90亿分之一的几率。

另外,多说一句,

这个BUG和只有偏执狂才能生存有什么关系。

其实,我个人觉得这个偏执狂这个翻译有点不是很准确。

这是这本书的英文名字《Only the Paranoid Survive》

Paranoid的翻译。

这个对于安迪格鲁夫一个少年时代从纳粹迫害下,东躲西藏的犹太人来说。

这个单词,更多有那种多疑恐惧,战战兢兢,。

也就是能够首先从风向中嗅到危险的意思在里面。

就像大草原上的羚羊,嗅到狮子的气味一样。

有敏锐的感知危险的嗅觉。

格鲁夫叹息道:“老板总是最后一个知道真相的人。”

其实,这是大厂的傲慢引发了这场危机。

如果在马教授第一次给英特尔反馈这个BUG时。

如果技术支持部门能够认真对待这个反馈这个问题。

而不是一味的用90亿分之一概率来说服消费者,

并且用复读机一样压制舆论。

这场危机也许不会发生。

来源于歪睿老哥,作者歪睿老哥

半导体工程师半导体行业动态,半导体经验分享,半导体成果交流,半导体信息发布。半导体培训/会议/活动,半导体社群,半导体从业者职业规划,芯片工程师成长历程。278篇原创内容公众号

0 阅读:0
芯片迷不休息

芯片迷不休息

感谢大家的关注