计算机是否有可能因硬件错误而导致错误结果?例如,如果我告诉CPU多次计算6次9(两个整数),所有的计算都会给出正确的答案吗?如果有一些计算出错的可能性,为什么会这样,并且有没有任何机制可以阻止CPU内部的错误答案?正确的算法可能会给出错误的结果吗?
0
A
回答
1
有几种可能性:
操作CPU规范之外可能导致不稳定的行为(如过多的热量,过多的电压)
如果一个中断触发在非原子操作的中间,并且中断修改了结果,可能会发生奇怪的行为。 (例如:如果你在8位处理器上试图执行16位操作,也许你计算的是
A * B
,但是你有一个计时器,在计算结果的中途触发并改变值A
,这真的被认为是软件错误,不是故障。总是有cosmic rays。芯片是如此之小,这些天,你真的不能责怪他们的任何问题,但他们是一个问题,如果你有一个多年的自治系统。
至于预防故障,在太空竞赛期间,发射计算机使用triple-redundant logic验证每个计算。STMicroel ectronics拥有一系列容错的双核微控制器,它们使用相同的代码运行两个内核,如果任一内核不同意,则会出现故障情况。
+0
很棒的概述。 – probablyup
相关问题
- 1. 算术给出不正确的结果
- 2. 排序算法给出错误结果
- 3. 如果我输入错误的dos命令,shellexecute会给出正确的结果
- 4. Bin Fu的算法实现没有给出正确的结果
- 5. Dijkstra的算法实现给出了不正确的结果
- 6. 功能给出了错误的结果
- 7. 算术运算给出不正确的结果
- 8. 舍入错误在DFT中给出不正确的结果?
- 9. 错误地使用array_multisort()给出正确的结果?
- 10. 多边形算法中的点有时会给出错误的结果
- 11. vsize给数字给出正确的结果吗?
- 12. 整数作为SQL别名不会错误,但给出不正确的结果
- 13. 算法构建DeBruijn图给出了错误的结果
- 14. NsNumberFormatter没有给出正确的结果
- 15. DiracDelta没有给出正确的结果
- 16. dateByAddingTimeInterval:给出的结果不正确
- 17. mySQL给出不正确的结果
- 18. Xpath没有给出正确的结果
- 19. Linregress给出不正确的结果
- 20. BigDecimal.Divide给出的结果不正确
- 21. hitTestPoint没有给出正确的结果
- 22. Java BoxLayout给出不正确的结果
- 23. os.path.join给出不正确的结果
- 24. DateUtils.getRelativeTimeSpanString没有给出正确的结果
- 25. 为什么php str_replace与多个数组给出错误的结果,但for循环给出正确的结果?
- 26. 模运算符没有给出正确的结果
- 27. str_replace给出错误结果
- 28. Math.cos()给出错误结果
- 29. tseries:get.hist.quote()给出错误结果
- 30. Karatsuba算法不正确的结果
有趣的问题,虽然我不确定它是否适合[so],也许[su]或[electronics.se]会更合适。但是它似乎与[(When)硬件,尤其是CPU)是否提供了错误的结果/(与其紧密相关)/(与之密切相关)(http://stackoverflow.com/q/2566043)。 – Dukeling
问题的标题让我怀疑我们是否正在前往巴贝吉的报价:“有两次我被问过,'请问巴贝奇先生,如果你把错误的数字放进机器,会得出正确的答案吗?我不能正确地理解可能引发这样一个问题的那种混淆思想。“ :-) –