【问题标题】:Is it possible that a correct algorithm gives a wrong result?正确的算法是否有可能给出错误的结果?
【发布时间】:2013-10-05 18:52:03
【问题描述】:

计算机是否可能由于硬件错误而给出错误的结果?例如,如果我告诉 CPU 多次计算 6 乘以 9(均为整数),那么所有的计算都会给出正确的答案吗?如果某些计算有可能出错,为什么会这样,CPU 内部是否有阻止错误答案的机制?

【问题讨论】:

标签: hardware hardware-programming


【解决方案1】:

有几种可能:

  1. 超出规范运行 CPU 可能会导致行为异常(例如热量过多、电压过高)

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

  3. 总是有cosmic rays。现在芯片太小了,你不能把任何问题归咎于它们,但如果你有一个多年的自治系统,它们就会成为一个问题。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多