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

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

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


当前回答

您可能还想看看容错硬件。

例如,Stratus Technology构建了名为ftServer的Wintel服务器,它有2或3个锁步“主板”,比较计算结果。(有时在太空飞行器中也会这样做)。

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

一个非常类似的(但是是软件)系统是基于Hypervisor的VMWare Fault Tolerance lockstep。

其他回答

如果一个程序是生命攸关的(如果它失败了,它会杀死某人),那么它需要以这样一种方式来编写,它要么是故障安全的,要么是从这种失败中自动恢复。所有其他节目,YMMV。

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

参见http://en.wikipedia.org/wiki/Therac-25

您可能还想看看容错硬件。

例如,Stratus Technology构建了名为ftServer的Wintel服务器,它有2或3个锁步“主板”,比较计算结果。(有时在太空飞行器中也会这样做)。

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

一个非常类似的(但是是软件)系统是基于Hypervisor的VMWare Fault Tolerance lockstep。

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

好吧,显然是宇宙射线导致丰田汽车的电子设备出现故障,所以我想说这种可能性非常高:)

宇宙射线真的导致了丰田的灾难吗?

更常见的情况是,噪声会破坏数据。校验和可以在很多层面上解决这个问题;在数据线中,通常有一个奇偶校验位与数据一起传输。这大大降低了腐败的可能性。然后在解析级别上,无意义的数据通常会被忽略,因此即使某些损坏确实通过了奇偶校验位或其他校验和,在大多数情况下也会被忽略。

此外,一些组件被电屏蔽以屏蔽噪音(我猜可能不是宇宙射线)。

但最后,正如其他回答者所说,偶尔会有位或字节被打乱,这取决于它是否是有效字节。最好的情况是,宇宙射线扰乱了其中一个空比特,完全没有影响,或者使计算机崩溃(这是一件好事,因为计算机避免了伤害);但最坏的情况,我相信你可以想象。