2013-10-05 73 views
0

计算机是否有可能因硬件错误而导致错误结果?例如,如果我告诉CPU多次计算6次9(两个整数),所有的计算都会给出正确的答案吗?如果有一些计算出错的可能性,为什么会这样,并且有没有任何机制可以阻止CPU内部的错误答案?正确的算法可能会给出错误的结果吗?

+1

有趣的问题,虽然我不确定它是否适合[so],也许[su]或[electronics.se]会更合适。但是它似乎与[(When)硬件,尤其是CPU)是否提供了错误的结果/(与其紧密相关)/(与之密切相关)(http://stackoverflow.com/q/2566043)。 – Dukeling

+0

问题的标题让我怀疑我们是否正在前往巴贝吉的报价:“有两次我被问过,'请问巴贝奇先生,如果你把错误的数字放进机器,会得出正确的答案吗?我不能正确地理解可能引发这样一个问题的那种混淆思想。“ :-) –

回答

1

有几种可能性:

  1. 操作CPU规范之外可能导致不稳定的行为(如过多的热量,过多的电压)

  2. 如果一个中断触发在非原子操作的中间,并且中断修改了结果,可能会发生奇怪的行为。 (例如:如果你在8位处理器上试图执行16位操作,也许你计算的是A * B,但是你有一个计时器,在计算结果的中途触发并改变值A,这真的被认为是软件错误,不是故障。

  3. 总是有cosmic rays。芯片是如此之小,这些天,你真的不能责怪他们的任何问题,但他们是一个问题,如果你有一个多年的自治系统。

至于预防故障,在太空竞赛期间,发射计算机使用triple-redundant logic验证每个计算。STMicroel ectronics拥有一系列容错的双核微控制器,它们使用相同的代码运行两个内核,如果任一内核不同意,则会出现故障情况。

+0

很棒的概述。 – probablyup

相关问题