Architecture 计算机多久出错一次?

Architecture 计算机多久出错一次?,architecture,hardware,Architecture,Hardware,我指的不是编程错误,这实际上是由一个人在某种程度上犯下的,而是在执行两个数字相加这样简单的操作时犯下的错误 预计1/x中的错误在x的范围内是多少?就CPU而言,有三种可能的错误来源,似乎在您的问题范围内: 浮点舍入错误。这似乎就是您在部门示例中得到的结果。这种类型的错误在实践中是完全确定的,根本不是随机的!但是,如果您使用的编程语言未指定浮点行为,则在不同的计算机上可能会出现不同的错误 CPU中的设计错误,例如臭名昭著的。很难对这一点给出一个概率,但幸运的是,现代CPU经过了广泛的测试,甚至形式

我指的不是编程错误,这实际上是由一个人在某种程度上犯下的,而是在执行两个数字相加这样简单的操作时犯下的错误


预计1/x中的错误在x的范围内是多少?

就CPU而言,有三种可能的错误来源,似乎在您的问题范围内:

  • 浮点舍入错误。这似乎就是您在部门示例中得到的结果。这种类型的错误在实践中是完全确定的,根本不是随机的!但是,如果您使用的编程语言未指定浮点行为,则在不同的计算机上可能会出现不同的错误
  • CPU中的设计错误,例如臭名昭著的。很难对这一点给出一个概率,但幸运的是,现代CPU经过了广泛的测试,甚至形式化方法也被用来在一定程度上从数学上证明它们的正确性
  • 由宇宙射线等辐射引起的硬件错误。除非你把你的电脑放在核电站的反应堆里或其他什么地方,否则辐射引起的错误概率通常应该可以忽略不计。有趣的是,这实际上与某些编程技术有关,例如修订控制系统中的哈希。你可以提出这样的论点:“好吧,比起散列碰撞,我们更可能因为宇宙射线而出错,所以不值得担心散列碰撞的可能性。”

  • 计算机的其他组件,如存储设备和显示设备,比CPU更容易出现导致数据损坏的硬件错误。

    从不。-一个原因是“错误”的概念是人类的范畴,不适用于机器。计算机是愚蠢的(是人类的编程使它们看起来聪明),它们不会失败

    机器根据其结构运行,对于计算机来说,则根据其运行的程序运行。这是总是确定性的-否则它将意味着一些自然法则被打破,整个人类科学是,嗯,某种猜测


    结果可能并不总是像人类预期的那样,但这总是可以由人为因素解释的。根本就存在(不可能存在)这样一种“计算机错误”。

    根据@Robin Green的回答,除了宇宙射线之外,还有其他一些硬件错误的潜在原因:

    • 电噪声:所有电子电路中都存在热噪声,电感耦合等效应也是如此
    • 量子事件:随着半导体上的特征变得越来越小(特别是栅极电介质),并且每个状态变化中涉及的电子数量变得越来越少,电子处于高能状态并影响逻辑状态的有限(但很小)概率变得显著
    所有这些问题都有设计解决方案,但在尺寸、功耗和集成密度方面,它们的价格可能是我们不愿意接受的。抗辐射半导体以其低集成密度、相对性能(和高成本)而著称


    还值得注意的是,在通信和存储中,硬件错误是司空见惯的,而不是首先防止硬件错误,策略是使用错误检测和纠正技术从中恢复

    …否则,这将意味着某些自然法则被打破,整个人类科学都是某种猜测


    如果你仔细研究一下,整个人类科学在某种程度上实际上是某种猜测。目前还没有关于任何事情的绝对事实。只是近似和最佳猜测。甚至科学和物理学的核心都是一个错误的模型。虽然因素很小,但仍有缺陷

    我和我的一个非常反自动化的朋友进行了这段对话,他是一名火车司机

    “你的电脑在启动时会犯多少错误?在启动过程中会做出多少决定?你在驾驶火车时会犯多少错误?”

    (如果您感兴趣,9年后3次)

    是的,由于边缘设计和媒体老化,在某一点上会出现奇怪的读取错误,但计算机会犯错误还是人类只是抄近路


    宇宙射线是计算机还是设计者的错误?我怀疑在未来,计算机将变得足够复杂,足以犯我们称之为“错误”的错误,但它们需要展示自己的意图,以正确地承担这一指控。

    好的总结。不过需要注意的是-HW错误绝对不容忽视。首先,有些网段甚至不能忍受一个错误(例如,银行服务器),为了可靠性,它们可能会运行几次。第二,运行的CPU越多,可能性就越大,因此重型服务器实际上对这些非常敏感。第三,现在流行的低电压意味着更少的保护区,最后但并非最不重要的一点是,这些天我们向太空发送了大量的CPU,那里的辐射甚至比夏天的佛罗里达州还要糟糕:)你如何对宇宙射线击中的结果进行分类?不是一个错误(发生的一切都是完全合乎逻辑的)但这是一个极不可能发生的事件有些人可能会称之为危险之类的,但这只是“极不可能”的同义词……我同意你的看法。“每件事的发生都有其原因。”托马斯韦勒说,“那么,这和人类有什么不同呢?”?我们犯的“错误”很可能是由某些神经元因其构造/训练方式而失火决定的。或者更明显的是,开发人员A忘记完成该功能,因为开发人员B向他扔纸飞机分散了他的注意力,他这样做是因为开发人员C将打印错误的文档放在了他的办公桌上而不是垃圾箱上,而事实并非如此。有人