ECC RAM 怎么了?

fee*_*wet 61 memory ecc

一两年前,我可以为我组装的 PC 购买 ECC(纠错码)RAM。ECC RAM 提供 SEC-DED,我猜是由电离辐射引起的位翻转(我不知道还有什么可能导致 RAM 或 I/O 总线中出现瞬时位错误)。

多年来我一直没有看到为 PC 提供 ECC RAM。这是为什么?

如果ECC内存二十年前是有益想必这将是现在是有帮助的PC有幅度更大的内存的1-2个数量级运行,以更低的电压和更小的物理特征(可能)是从杂散辐射腐败更敏感。这些假设中的任何一个是错误的吗?

即,如果十年前 ECC RAM 被认为是一项有用的功能,那么它有用的原因是否不再适用于当前的个人计算机和服务器?或者现在认为 ECC RAM 从来没有真正有用过?

Gia*_*968 63

15 多年前,英特尔认为 ECC RAM 支持在消费类机器中没有价值。

换句话说,英特尔在 15 多年前就决定消费者机器不需要它。因此,市场在服务器硬件之外不支持它。因此,最终消费者正在付出代价。

这篇 2021 年 1 月在 ExtremeTech 上发表的文章对所发生的事情进行了相当扎实的总结:“ Linus Tovalds 责备英特尔在消费系统中杀死 ECC RAM ”:

“曾几何时,您可以在主流芯片组上购买 ECC 支持,但英特尔几年前在非至强平台上逐步淘汰了该功能。975X 可能是最后一个支持它的消费级英特尔平台,该家族于 15 年前推出。Xeon 3450 芯片组与 Nehalem 系列中的某些高端 CPU 交叉兼容,但这仍然是 Xeon 芯片组——不是主流部分。”

“因此,消费产品中对 ECC 的支持——以及消费产品中 ECC RAM 的可用性——都下降了。”

由于文章引用了 Linus Torvalds,这里是他的具体抱怨:

“内存制造商声称这是因为经济和低功耗。他们是说谎的混蛋——让我再次指出这些问题如何已经存在了好几代,但这些混蛋高兴地向消费者出售损坏的硬件并声称这是一次“攻击”,而它总是'我们正在偷工减料。'”

这里的问题是 Linux 因内核错误而受到指责,但 Linus Torvalds 认为根本原因是硬件问题,可以追溯到当今机器中非 ECC RAM 的流行。

但这是一个切线......归根结底是PC制造商偷工减料。经典的制造问题。

现在 PC 硬件被认为是一次性的,这里可能有一些理由:RAM 开始变得脆弱,只需扔掉机器并购买一台新机器。事实是,市场上充斥着非技术和非 PC 制造商,所以嘿……它很臭,但就是这样。

  • @JW0914 对于 Linux,除了在构建时启用内核功能之外,“发行版”通常不参与 ECC 支持,并且所有理智的发行版都会在启用该功能的情况下构建其内核,因为它在运行时内存使用方面的成本接近于零在不使用它的系统上,但对于大多数需要它的用户来说是关键任务。 (9认同)
  • @JW0914,...Linux _is_ 最常见的“服务器和路由器操作系统”之一。无论如何——如果您曾经看到系统抛出机器检查异常,ECC 检测(或纠正)错误是最常见的触发器之一。 (9认同)
  • 有一个案例表明 ECC RAM 对消费者系统并不重要_(拥有它会很好,但它并不重要,没有它更不方便)_,而它在服务器和路由器中问题可能因腐败而呈指数级复杂化的​​操作系统 (7认同)
  • @JW0914 没错,但看看当今的消费市场:它都是一次性的,并不是每个人都必须成为拥有 PC 的“极客”。15年前是消费PC市场真正爆发的风口浪尖。因此,如果有人——比方说——购买一台 PC 的价格是 150 到 300 美元,他们真的会在这样的机器上为 ECC RAM 花费更多的美元吗?或者他们会在它开始表现出“怪异”时把它扔掉。此外,制造商的 ECC 成本可能永远不会反映在消费者价格上。意思是,制造商可能只是将因在 RAM 中没有 * 具有 ECC 功能而节省的 $$$ 收入囊中。这对消费者来说都是废话。 (4认同)
  • 我明白你的意思,为什么 ECC 更昂贵的一个因素是由于需求较低_(DDR2 成本高于 DDR4)_。服务器和路由器操作系统被编码为使用 ECC RAM,但 Windows 10 还是流行的 Linux 发行版?最终归结为从商业消费者的角度来看它是否重要_(例如消费者是否会看到明显的差异)_,因为控制系统是否可以使用 ECC RAM 的是主板 OEM _(特别是当他们现在将 CPU 和 RAM 焊接到 PCB)_,它对消费者系统并不重要,就像对服务器和路由器操作系统一样 (3认同)

mas*_*sgo 39

就历史而言,我同意@Giacomo1968 提供的答案。然而,目前的状态正在发生变化。AMD 最近开始在其当前用于 AM4 插槽的台式机 CPU 产品线中支持 ECC 内存:“ECC 未被禁用。它可以工作,但未针对我们的消费者客户端平台进行验证。” (来源:Reddit

也就是说,主板也需要支持这一点。一些消费者委员会有,一些没有。

  • 迷人。似乎 AMD 正试图迎合高级用户/调整者市场。一个真正一直在变小的市场,但非常忠诚。 (9认同)
  • AMD 多年来一直在消费级台式机 CPU 上支持 ECC。引用是将现有策略应用于新套接字,而不是新策略。 (7认同)
  • 这不是我一直密切关注的事情,因为我不打算很快建立一个新系统,但从我在 Anandtech 推特上看到的每个板支持一直有些混乱,一些板实际上是循环的使用它似乎在 BIOS 修订版之间看似随机地执行 ECC,但实际上并未执行。 (3认同)

Zan*_*ynx 38

多一点解决这个问题:

英特尔单方面决定消费者不需要 ECC,并决定只将其提供给英特尔可以收取额外费用的服务器和工作站客户。

微软试图让 ECC 成为 Vista 认证的必需功能,但英特尔拒绝这样做。在 Core i7 系列之前,内存控制器是主板的一部分,而 ECC 支持是主板芯片组的一项功能。

您可以获得带有 ECC 的笔记本电脑。例如,您可以通过 Xeon-W CPU 和 ECC RAM 获得 Dell Precision Workstation 系列。

您可以购买任何锐龙 CPU。好吧,任何没有集成显卡的锐龙。要使集成显卡与 ECC 配合使用,您需要一个很难找到的 Pro 版本,除非您在预建系统中购买它。

使用 Ryzen 和 ASUS PRO 系列这样的主板,无缓冲 ECC 会很好用。

对于注册的缓冲 ECC 模块,您需要一个真正的 Xeon 或 EPYC CPU,因为这些 RAM 类型的控制方式不同。

在不久的将来,DDR5 RAM 可以选择在内部使用 ECC,而无需来自 CPU 的任何通知或控制。它还可以选择向支持它的 CPU 提供信号和控制。

这是您今天可以购买的 ECC 模块的示例。我为 Ryzen 版本买了四个:

“Crucial 服务器内存 16GB DDR4 DIMM 288 针 - 2666 MHz / PC4-21300 - CL19-1.2 V - 无缓冲 - ECC CT16G4WFD8266”

我会提供一个亚马逊链接,但这可能会被视为垃圾邮件。另请注意,您现在可以获得 3,200 MHz 速度的 ECC 模块。

  • @anjama 这是真的。这取决于主板和BIOS。许多华硕主板和许多华擎主板都支持它。除了那些我没有跟踪。 (5认同)
  • 我认为 StackExchange 的政策是您可以在适当的时候链接商业产品,尽管希望披露隶属关系。我在很多帖子中都包含了 Amazon.com 链接,例如 [this one](https://pets.stackexchange.com/a/17981/9137)。 (3认同)

Pet*_*ith 38

一两年前,我可以为我组装的 PC 购买 ECC(纠错码)RAM。ECC RAM 提供 SEC-DED,我猜是由电离辐射引起的位翻转(我不知道还有什么可能导致 RAM 或 I/O 总线中出现瞬时位错误)。

位错误有 3 个一般原因,其中前两个是单事件翻转

  1. 辐射(主要是自由中子)。这种特殊现象取决于许多因素,例如特定设备的中子截面。这似乎与直觉相反,但较新的小得多的几何结构由于中子而发生翻转的可能性较低,因为它们被设计为不太容易受到影响。请参阅Xilinx 链接(从下方)。

  2. 铅,特别是 Pb210,它是铀衰变链的一部分,存在于 BGA 器件球中的旧套件中。Xilinx将由此产生的误差称为 alpha 率,因为它们在衰减过程中会发射 alpha 粒子。显然,对于当前的大量无铅设备来说,这不是一个问题(但在航空航天领域仍然是一个相当大的问题,在那里锡铅加工仍然很普遍)。

  3. 一般误码率问题。内存接口是一个通信通道,所有的通信通道都有一个错误率。诚然,您可能永远不会在特定设备的使用寿命中看到一个位错误,因为这是一个统计量。由于电噪声和设备去耦不良引起的错误也属于这一类。

即,如果十年前 ECC RAM 被认为是一项有用的功能,那么它有用的原因是否不再适用于当前的个人计算机和服务器?或者现在认为 ECC RAM 从来没有真正有用过?

它很有用,但价值有限,尽管可以通过使用它来减轻许多旁道攻击。

您在市售电路板上找不到它的真正原因只是成本,而那些确实有它的电路板有相当大的溢价,远高于处理它的硅片成本和额外的 8 个数据位(对于一个64 位存储系统)。成本效益分析不支持其广泛的可用性。

我记得波音公司的一篇研究论文讨论了丹佛数据中心的软错误。自由中子的数量(达到一定水平)与高度成正比。你走得越高,就有越多。

如果 ECC 内存在 20 年前有用,那么现在 PC 运行的内存增加了 1-2 个数量级,电压更低,物理特征更小,(大概)更容易受到杂散辐射的破坏,这可能会更有帮助。这些假设中的任何一个是错误的吗?

我们今天的存储器接口是远远更强大的比你想象的; 对于 DDRx,数据选通是差分的(因此它们可以抑制共模噪声)并且较低的转换电压实际上更适合高速接口,正如我们多年前用ECL证明的那样。

在航空电子设备中,尤其是飞行安全关键的航空电子设备,例如飞行控制计算机,L2 及更高级别的 ECC 的使用是强制性的,L1 的奇偶校验也是如此。这就是这些卡不是来自 Intel 或 AMD 的原因之一。

[更新]。存储单元布局的细节对其对 SEU 的敏感性有相当大的影响;赛灵思采用了一种特殊方法,可以有效地堆叠存储单元,从而显着降低高能中子导致位翻转的可能性

因为我不是IC 设计师,所以我只能这么说。Rosetta Project 中有更多信息。

  • 不仅仅是航空电子设备。绝大多数服务器都在 ECC 上运行,工作站也是如此。在硬件上节省几百美元(只是总成本的一小部分)通常毫无意义,因为这意味着要冒着因生产力损失而损失数千美元的风险。 (7认同)
  • 现代 Intel 和 AMD CPU 使用 ECC 作为其内部缓存。(可能只是英特尔 L1d 的奇偶校验,[如果 Paul Clayton 是对的](/sf/answers/3319337591/),因为它必须支持写入任何单个字节而没有周围单词的 RMW 到更新更大的 ECC 颗粒。对于 8 位颗粒中的 SEC-DED,ECC 开销很高。)内部高速缓存 SRAM 在如此低的电压下运行,以致于更容易出现位错误 - 它们更容易受到噪声的干扰。(https://www.realworldtech.com/near-threshold-voltage/2/) (5认同)
  • 你没有提到 Row Hammer——访问会干扰物理上邻近的存储单元(电容器不是完全隔离的)。对于温度等环境条件而言,刷新率太低也会引入错误(理论上可以使用 ECC 通过降低刷新率来节省能源)。 (4认同)
  • >在航空电子设备中,尤其是飞行控制计算机等飞行安全关键航空电子设备,必须在 L2 及更高级别使用 ECC 出于您在丹佛提到的相同原因:飞机运行得更高,因此平均会遇到更多中微子。 (3认同)
  • “对于目前的大量无铅设备来说,这显然不是问题” 铅焊料仍然普遍用于芯片到封装互连(RoHS 豁免 15,另见 7a、24 和 34),这显然具有很大的影响。您可以在中国 RoHS 声明中看到这一点,其中 Pb 下会有一个 X。最初的 RoHS 禁令主要适用于封装到 PCB 的焊料。 (2认同)