为什么计算机计算从不会出错(即使快要报废的电脑,计算器功能也不会算错数)?

为什么计算机计算从不会出错(即使快要报废的电脑,计算器功能也不会算错数)?

pansz,如果您有什么不同意见,您是对的,我是错的。

因为哪怕非常低的出错概率,放到计算机上,都会变成一个离谱的出错率。——所以,电子产品必须要做到常人不会遇到它出错的程度才能出厂。换句话说,它不出错,因为检验的标准很高,出厂前必须有一些措施来确保这一点。

历史上有一个非常著名的 Pentium FDIV bug,直接导致了 intel 数亿美金的赔款,而且这个丑闻多少也使得奔腾这个处理器品牌被逐渐边缘化。

当时的管理者认为,这个错误的发生概率仅为 90 亿分之一,十分低,应该没事。

你是不是觉得也没问题?但只要你认真算一算,问题就大了:

Pentium 处理器的浮点性能(1994 年)

  • 早期的 Intel Pentium 处理器(如 Pentium 60/66)主频约为 60–66 MHz。
  • 每个时钟周期可以执行大约 1 个浮点操作(FLOP)在理想条件下,但除法运算非常慢,尤其是双精度除法。
  • 实际上,一次双精度浮点除法(FDIV)大约需要 30–40 个时钟周期
  • 假设我们使用 Pentium 66 MHz,每秒 6600 万时钟周期。
  • 那么每秒最多可执行的双精度除法数量约为:

2. 错误发生频率

  • 错误大约每 90 亿(9×10⁹)次除法运算发生一次。
  • 所以平均出错时间:

结论:

满载持续进行双精度浮点除法运算的情况下,大约每 1.3 小时就会遇到一次 FDIV bug 导致的错误

以当年那么低的处理器性能,90 亿分之一的错误概率在实际中会变成:满载运算 1.3 小时会发生一次,这个错误频率在生产环境已经高得离谱了。

所以,计算机真不能在你能用的范围内出现计算错误,因为,哪怕是很小概率的计算错误,最终都会导致极大概率的问题发生,从而导致天价的赔款与召回,以及市场份额丢失,股价动荡,CEO 下课等等后果。。。

那么这类产品,就必须在出厂之前,做到不出错,至少不能在普通人能够用到的场景内出错。