为什么PC不使用纠错RAM? “因为英特尔,” Linus说| 人工市场细分可能抑制了台式机对ECC的需求

2021-01-08 07:41:00

本周一,Linux内核创建者Linus Torvalds对消费者PC和笔记本电脑中缺少纠错校验和(ECC)RAM的情况感到沮丧。

……消费者的误导和落后的政策不需要ECC,[使] ECC存储器的市场消失了。

反对ECC的论点总是完整无误的。现在,即使是存储器制造商也开始在内部进行ECC,因为他们最终承认自己绝对必须这样做。

如果您不熟悉ECC RAM,则可能是因为您没有使用服务器级CPU和主板来构建或指定专用服务器-不幸的是,这是您真正找到的唯一位置ECC。简而言之,ECC RAM包括少量用于检测和纠正错误的额外内存。

在大多数现代实现中,这意味着对于RAM中存储的每个64位字,都有8个校验位。可以自动检测和纠正单个错误(将0翻转为1或将1翻转为0)。可以检测到同一字中翻转的两位,但不能纠正。同一单词中翻转的三个或更多位可能会被检测到,但不能保证检测到。

发生位翻转的原因有很多,从宇宙射线撞击或简单的硬件故障开始。一项对Google服务器的大规模研究发现,每年Google机队中约有32%的服务器(以及所有DIMM的8%)遇到至少一次内存错误。但是这些错误绝大多数都是单位错误,而且由于Google使用的是服务器CPU和ECC RAM,因此这意味着有问题的机器可以继续运输。

在消费类计算机中,甚至这些单位错误(根据Google的数据,其发生几率比多位错误的可能性高40倍)也未被发现,并且可能导致系统不稳定和数据损坏。

并非每个RAM错误都是硬件故障或意外EMF问题的结果。近年来,研究人员开发了越来越实用的基于物理的边信道攻击,在一个应用程序可访问的RAM区域中使用受控的快速位翻转来推论或修改不应在RAM的相邻区域中的数据值。能够。尽管ECC RAM不能减轻推断出相邻内存值的RAMBleed式攻击,但通常可以阻止Rowhammer攻击-在其中快速翻转RAM的一个区域中的位会导致相邻区域中的位发生变化。

即使ECC不能主动防止Rowhammer攻击对系统造成影响(例如,当它在一个字中翻转多个位时),也至少可以提醒系统该问题,并且在大多数情况下,可以防止除了造成停机之外,Rowhammer攻击还没有做任何其他事情。 (大多数ECC系统配置为在检测到无法纠正的错误时停止整个计算机。)

内存制造商声称这是因为经济性和较低的功耗。他们在撒谎-让我再一次提到那些问题已经存在了好几代人了,但是这些家伙很高兴地向消费者出售了损坏的硬件,并声称这是一次“攻击”。 34;当我们总是偷工减料的时候。

仅仅由于在真正的非攻击性负载上的运气不佳而发生了像位翻转这样的行锤?我们永远不会知道。因为英特尔在向消费者推销。

Torvalds采取大胆的立场,认为由于公司的人为市场细分政策,消费类技术中缺少ECC RAM是Intel的错。英特尔拥有既得利益,可以推动财大气粗的企业转向其价格更高,利润更高的服务器级CPU,而不是让这些实体有效地使用利润率较低的消费者零件。

从并非直接针对服务器领域的CPU中删除对ECC RAM的支持是Intel保持这些市场高度细分的方式之一。托瓦尔兹这里的论点是,英特尔拒绝在其面向消费者的部分中支持ECC RAM以及事实上在该领域几乎垄断的事实,是ECC在服务器空间之外几乎不可用的真正原因。

关于为什么消费者技术中不存在ECC的通常争论围绕成本,但是我们怀疑Torvalds在这里拥有权利。尽管ECC RAM本质上是很难找到的特殊部件,但通常每个DIMM的成本仅比非ECC零售高20%。真正的问题是,如果没有支持它的主板和CPU,它将不会对您有任何帮助。