【问题标题】:how to understand if a CPU support ECC?如何了解 CPU 是否支持 ECC?
【发布时间】:2018-06-15 19:16:24
【问题描述】:

我有一台由 Intel Core2 Quad CPU@2.4GHz 驱动的旧电脑(Bios 和 linux dmidecode 都不会说更多),我可以补充说 CPU 属于:Family 6, Model 15, Stepping 7 (LGA775 插座)。

主板确实支持 ECC,但我想知道 CPU 是否也支持。我可以看到命令 dmidecode --t cache 的结果提供了有关 L1、L2、L3 的信息,我可以在 L1 和 L2 上看到“纠错类型:单位 ECC”,而 L3 “纠错类型:未知” .

鉴于我从 L1 和 L2 观察到的情况,我是否可以得出结论,CPU 确实支持 ECC,并且我可以将它用于我的 ZFS NAS?

【问题讨论】:

  • 仅名称和时钟速度几乎可以肯定地确定为Q6600
  • FWIW,在 ZFS 系统上,ECC RAM 与任何其他文件系统相比不再需要(当然 ECC 对于数据完整性很重要的任何系统都很有用)。这是一个关于 ZFS 的神话,似乎特别恶毒。请参阅 Matt Ahrens(ZFS 的共同创建者)对神话的回应:arstechnica.com/civis/…

标签: x86 cpu cpu-cache zfs


【解决方案1】:

不,您不能根据内部缓存用于保护缓存中的数据来断定是否支持 ECC DRAM。这两件事是无关的。

您需要检查 CPU 主板规格以确保两者都支持 ECC DRAM。 (在您的情况下,您的 Core2 没有板载内存控制器,因此 DRAM 连接到 CPU 北桥。它是最后一代集成 DRAM 控制器。)

所有最新的 Intel CPU 在其 L2 / L3 缓存中都使用 ECC,但 L1D 实际上只是奇偶校验,而不是 ECC。 (支持efficient single-byte and unaligned stores without as much ECC overhead。)

Core2Quad 没有 L3 缓存。

顺便说一句,它的内存带宽明显比 Nehalem 或更新的 DDR3 差,这可能是 ZFS 复制数据的问题。我认为内存带宽可能是我运行 XFS RAID5 的旧 Core2Duo 的瓶颈的一部分,它不会使单个磁盘带宽饱和以进行顺序读取。

【讨论】:

  • 您可以使用sudo dmidecode | grep "Error Correction Type" 确定在任何内存级别使用的纠错机制。这将打印每个插槽 4 行,对应于 4 个内存级别(L1、L2、L3 和内存)。我已经在三个 Intel 系统上运行了它:客户端 Haswell、服务器 Broadwell、客户端 Coffee Lake。在 Haswell 上,所有的缓存都使用 Single-bit ECC。在 BDW 和 CFL 上,L1 使用 Parity,L2 和 L3 使用 Single-bit ECC。在客户端系统上,DIMM 没有错误保护。在服务器系统上,DIMM 使用多位 ECC 进行保护。
  • 看来英特尔在某些微架构中确实使用 ECC 作为 L1。
  • @HadiBrais:有趣,我想知道这是否真的准确。我认为这来自 BIOS,而不是直接来自 CPUID,因此存在疑问。我的 C2Duo 还报告其 L1i/d 缓存和 L2 的单位 ECC,而我的 SKL 报告其 L1 缓存、单位 ECC L2 和多位 ECC L3 的奇偶校验。我猜 L1i 不需要 ECC,因为它可以重新获取,而 L2 可能会保存其他地方不存在的宝贵脏数据。 (dmidecode 报告两者都为“128 kiB”,我猜是因为这是 4 个内核的总数。)
  • 是的,我认为它来自 BIOS,但我不知道 BIOS 从何处获取此信息。 Pentium Pro 还为 L1 和 L2 使用 ECC。 Pentium 4 对 L1 使用 Parity,对 L2(和 L3)使用 ECC。您可以在旧的英特尔文档中找到此信息。一些英特尔处理器将 ECC 用于 L1,这并不奇怪。 AMD 和 DEC 等其他供应商也在其部分处理器中将 ECC 用于 L1。
猜你喜欢
  • 2020-07-03
  • 2015-01-10
  • 2011-09-01
  • 2019-04-25
  • 2018-09-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多