Statistics 宇宙射线:它们影响程序的概率是多少?

Statistics 宇宙射线:它们影响程序的概率是多少?,statistics,physics,probability,error-detection,risk-analysis,Statistics,Physics,Probability,Error Detection,Risk Analysis,我又一次参加了一次设计审查,遇到了这样一种说法,即某个特定场景的概率“小于宇宙射线影响程序的风险”,我突然意识到我根本不知道这种概率是什么 “由于2-128是340282366920938463463374607431768211456中的1,我认为我们有理由在这里冒险,即使这些计算相差几十亿倍……我相信,宇宙射线把我们搞砸的风险更大。” 这个程序员对吗? 宇宙射线击中计算机并影响程序执行的概率是多少?来自: IBM在20世纪90年代进行的研究表明,计算机通常每月每256兆内存会经历一次宇宙射线

我又一次参加了一次设计审查,遇到了这样一种说法,即某个特定场景的概率“小于宇宙射线影响程序的风险”,我突然意识到我根本不知道这种概率是什么

“由于2-128是340282366920938463463374607431768211456中的1,我认为我们有理由在这里冒险,即使这些计算相差几十亿倍……我相信,宇宙射线把我们搞砸的风险更大。”

这个程序员对吗? 宇宙射线击中计算机并影响程序执行的概率是多少?

来自:

IBM在20世纪90年代进行的研究表明,计算机通常每月每256兆内存会经历一次宇宙射线引起的错误

这意味着每月每字节的概率为3.7×10-9,或每秒每字节的概率为1.4×10-15。如果您的程序运行1分钟并占用20 MB的RAM,则失败概率为

                 60 × 20 × 1024²
1 - (1 - 1.4e-15)                = 1.8e-6 a.k.a. "5 nines"

错误检查有助于减少故障后果。此外,正如Joe所评论的,由于芯片尺寸更紧凑,故障率可能与20年前有所不同。

引用了90年代的一篇文章,指出“计算机通常每月每256兆内存中会发生一次宇宙射线引起的错误。”不幸的是,这篇文章引用了《科学美国人》杂志的一篇文章,没有提供任何进一步的参考资料。就我个人而言,我发现这个数字非常高,但也许宇宙射线引起的大多数记忆错误不会造成任何实际或明显的问题


另一方面,当谈到软件场景时,谈论概率的人通常不知道他们在谈论什么。

显然,这并非无关紧要。摘自,引自英特尔专利申请:

“宇宙射线引起的计算机崩溃已经发生,并且随着芯片中器件(例如晶体管)尺寸的减小,预计会随着频率的增加而增加。这个问题预计将成为未来十年计算机可靠性的主要限制因素。”


您可以阅读。

更多的时候,噪声会损坏数据。用于在多个层面上打击这一现象;在数据电缆中,通常有一根电缆沿着数据电缆传输。这大大降低了腐败的可能性。然后在解析级别上,无意义数据通常被忽略,因此即使某些损坏确实超过了奇偶校验位或其他校验和,在大多数情况下也会被忽略

此外,有些组件是用来阻挡噪音的(我想可能不是宇宙射线)


但最后,正如其他回答者所说,偶尔会有位或字节被置乱,这取决于它是否是有效字节。最好的情况是,宇宙射线扰乱其中一个空位,完全没有效果,或者使计算机崩溃(这是一件好事,因为计算机不会受到伤害);但最糟糕的情况是,我相信你能想象得到。

显然,宇宙射线导致丰田汽车的电子设备出现故障,所以我认为可能性非常高:)


我曾经为在太空飞行的设备编程,然后你(据推测,没有人向我展示过任何关于它的论文,但据说这是业内的常识)可以期待宇宙射线总是会导致错误。

如果一个程序对生命至关重要(如果失败会导致死亡),它需要以这样一种方式编写,即它要么是故障安全的,要么是从这种故障中自动恢复。所有其他程序,YMMV

丰田章男就是一个很好的例子。不管你怎么说油门电缆,但它不是软件


另请参见

内存错误是真实的,ECC内存确实有帮助。正确实施的ECC内存将纠正单位错误并检测双位错误(如果检测到此类错误,则停止系统)。从人们经常抱怨通过运行和发现坏内存解决的软件问题可以看出这一点。当然,由宇宙射线引起的短暂故障不同于一段持续故障的内存,但它与一个更广泛的问题有关,即你应该在多大程度上相信自己的内存能够正常工作

基于20MB驻留大小的分析可能适用于普通应用程序,但大型系统通常有多个具有大型主内存的服务器

有趣的链接:


不幸的是,页面中的海盗船链接似乎已失效。

使用ECC,您可以纠正宇宙射线的1位错误。为了避免10%的宇宙射线导致2位错误的情况,ECC单元通常在芯片上交错,因此没有两个单元相邻。因此,影响两个细胞的宇宙射线事件将导致两个可纠正的1比特错误

Sun声明:(零件号816-5053-10,2002年4月)

一般来说,宇宙线软错误在DRAM存储器中以一定的速度发生 速率约为10到100 FIT/MB(1 FIT=1个设备在10亿小时内出现故障)。 因此,具有10GB内存的系统应每1000次显示一次ECC事件 到10000小时,一个100 GB的系统将每小时显示一次事件 100至1000小时。然而,这是一个粗略的估计,将 随着上述效应的变化而变化


您可能还想看看容错硬件

例如,Stratus Technology构建了名为ftServer的Wintel服务器,该服务器有2个或3个锁定的“主板”,比较计算结果。(有时在航天器上也会这样做)

Stratus服务器从定制芯片组发展到背板上的lockstep

一个非常类似(但是软件)的系统是基于虚拟机监控程序的VMWare容错锁定步骤。

注意:这个答案与
02:13:00,465 WARN  - In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/ostream:133:
02:13:00,465 WARN  - /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/locale:3180:65: error: use of undeclared identifier '_'
02:13:00,465 WARN  - for (unsigned __i = 1; __i < __trailing_sign->size(); ++_^i, ++__b)
02:13:00,465 WARN  - ^
02:13:00,465 WARN  - /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/locale:3180:67: error: use of undeclared identifier 'i'
02:13:00,465 WARN  - for (unsigned __i = 1; __i < __trailing_sign->size(); ++_^i, ++__b)
02:13:00,465 WARN  - ^