十年或二十年前,我可以购买 ECC(纠错码)RAM 用于我组装的 PC。ECC RAM 提供 SEC-DED,我猜是因为电离辐射导致的位翻转(我不知道还有什么可能导致 RAM 或 I/O 总线中出现瞬时位错误)。
多年来,我还没有看到过适用于 PC 的 ECC RAM。这是为什么呢?
如果 ECC 内存在二十年前有用的话,那么大概就是更多的现在 PC 的内存增加了 1-2 个数量级,电压更低,物理特性更小,(可能)更容易受到杂散辐射的破坏,因此这很有帮助。这些假设有错误吗?
也就是说,如果 ECC RAM 在十年前被认为是一个有用的功能,那么它有用的原因是否不再适用于当前的个人电脑和服务器?或者现在的想法是 ECC RAM 实际上从来都不是有用的?
答案1
十年或二十年前,我可以购买 ECC(纠错码)RAM 用于我组装的 PC。ECC RAM 提供 SEC-DED,我猜是因为电离辐射导致的位翻转(我不知道还有什么可能导致 RAM 或 I/O 总线中出现瞬时位错误)。
造成比特错误的一般原因有 3 个,前两个是单一事件扰乱:
辐射(主要自由中子)。这种特殊现象取决于许多因素,例如中子截面特定设备。这似乎违反直觉,但较新的小多了由于设计时就考虑到了中子敏感性,因此几何结构受中子干扰的概率较低。参见Xilinx 链接(从下面)。
铅,具体来说是 Pb210,它是铀衰变链并且在旧套件中的 BGA 器件球中可以找到。赛灵思指由此产生的误差,即它们在衰变过程中发射阿尔法粒子时的阿尔法速率。显然,对于大量无铅的现有设备来说,这不是问题(但在锡铅加工仍然很常见的航空航天业中,这仍然是一个大问题)。
常见的误码率问题。内存接口是一种通信通道,全部通信信道有误码率。诚然,在特定设备的使用寿命内,您可能永远不会看到单个位错误,因为这是一个统计量。由于电气噪声和设备解耦不良而导致的错误也属于此类。
也就是说,如果十年前 ECC RAM 被认为是一个有用的功能,那么它有用的原因是否不再适用于当前的个人电脑和服务器?或者现在的想法是 ECC RAM 实际上从来都不是有用的?
它很有用,但价值有限,尽管许多侧信道攻击可以通过使用它来缓解。
你在市售的电路板上找不到它的真正原因很简单,就是成本,而那些电路板做它的溢价相当高,远高于处理它的硅片和额外的 8 个数据位(对于 64 位内存系统)的成本增量。成本效益分析不支持其广泛可用性。
我确实记得波音公司的一篇研究论文,其中讨论了丹佛数据中心的软错误。自由中子的数量(在一定水平上)与海拔成正比。海拔越高,自由中子就越多。
如果 ECC 内存在二十年前有用,那么现在它应该会更有用,因为现在 PC 的内存比以前大了 1-2 个数量级,电压更低,物理特性更小,(可能)更容易受到杂散辐射的破坏。这些假设有错误吗?
我们目前拥有的内存接口是远的比您想象的更强大;对于 DDRx,数据选通是差分的(因此它们可以抑制共模噪声),较低的转换电压实际上更适合高速接口,正如我们多年前证明的那样电化学发光。
在航空电子设备中,尤其是飞行安全至关重要的航空电子设备(如飞行控制计算机)中,L2 及以上必须使用 ECC,L1 必须使用奇偶校验。这就是这些卡不是来自英特尔或 AMD 的原因之一。
[更新]。内存单元的布局细节对其对 SEU 的敏感性有很大影响;Xilinx 采取了一种特殊的方法,可以有效地堆叠内存单元,使得可能性导致位翻转的高能中子的可能性显著降低。
如我一般不是作为一名 IC 设计师,我只能说这么多。罗塞塔计划。
答案2
15 年前,英特尔认为 ECC RAM 支持对于消费类机器来说并不具有价值。
换句话说,英特尔 15 年前就认定消费级机器不需要它。因此市场在服务器硬件之外不支持它。因此最终消费者正在付出代价。
ExtremeTech 于 2021 年 1 月发表的一篇文章对发生的事情进行了相当详尽的总结:“Linus Tovalds 指责英特尔在消费系统中淘汰了 ECC RAM”:
“曾经有一段时间,你可以在主流芯片组上购买 ECC 支持,但英特尔几年前就逐步淘汰了非 Xeon 平台上的此功能。975X 可能是支持 ECC 的最后一款英特尔消费级平台,该系列于 15 年前推出。Xeon 3450 芯片组与 Nehalem 系列中的某些高端 CPU 交叉兼容,但它仍然是 Xeon 芯片组——不是主流部件。”
“结果,消费产品对 ECC 的支持——以及消费产品中 ECC RAM 的可用性——都急剧下降。”
由于文章引用了 Linus Torvalds 的话,以下是他的具体抱怨:
“内存制造商声称这是因为经济和功耗较低。他们是骗子——让我再次指出 Row-Hammer 的问题,这些问题已经存在了好几代,但这些混蛋却高兴地将损坏的硬件卖给消费者,并声称这是一次‘攻击’,而他们总是说‘我们在偷工减料’。”
这里的问题是 Linux 因内核错误而受到指责,但 Linus Torvalds 认为根本原因是硬件问题,可以追溯到当今机器中非 ECC RAM 的普及。
但这是题外话……归根结底,PC 制造商偷工减料。典型的制造问题。
如今,PC 硬件被认为是一次性用品,这或许是有一定道理的:内存开始出现问题,只需扔掉机器,再买一台新的。事实上,市场上充斥着非技术人员和非 PC 制造商,所以嘿……这很糟糕,但事实就是如此。
答案3
我同意@Giacomo1968 提供的答案就历史而言,情况并非如此。然而,当前的情况正在发生变化。AMD 最近开始在其当前的 AM4 插槽台式机 CPU 产品线中支持 ECC 内存:“ECC 未被禁用。它可以工作,但尚未在我们的消费者客户端平台上得到验证。” (来源:Reddit)
也就是说,主板也需要支持此功能。有些消费级主板支持,有些则不支持。
答案4
除其他因素外,这还反映了消费者软件的质量。
ECC RAM 只有在偶尔的位翻转导致的错误率是导致故障的主要原因时才真正有用。如果你运行的是高可靠性软件,它永远不会自行崩溃,那么消除剩余的错误源实际上可以提高平均无故障时间系 统 。
如果您运行的软件是出于“赢家通吃”的经济原因而匆忙生产的,那么除了 RAM 错误之外,它还会有很多故障源。在这种情况下,支付额外费用以将错误率降低几个百分点是没有意义的。
然后是高固定成本商品的典型正反馈:价格上涨意味着需求减少,进而意味着价格上涨。我不认为英特尔应该为此负责:他们停止支持消费芯片中的 ECC 并不是因为他们讨厌技术,而是因为他们通过销售更便宜的非 ECC 芯片赚了更多的钱。
值得注意的是,在工业微控制器领域,运行根据以下设计的软件的控制器功能安全标准,ECC RAM 如今已被广泛应用。