服务器专题 | 第9期:一颗坏芯片,怎样不拖垮整机
深夜的机房里,一台服务器先报了一次可纠正错误,运维记了一笔,没换条子。过了一周,同一条内存又报错,这回系统直接停了。事后拆开看,坏的不是某一位数据,而是一整颗芯片。
内存出错这件事,最怕的不是错本身,是错的规模超出了你买的那层保护。
第一层:一位错纠,两位错报
最基础的一层叫 SECDED(单错纠正、双错检测)。64 位数据配 8 位校验位,组成 72 位的校验字,用的是一套汉明码1。读回数据时,校验位能算出哪一位翻了,默默改回来;翻了两位,改不了,但能报出来,让系统决定停机还是隔离。
这层保护的边界要说清楚:三位以上的错,SECDED 可能漏网1。宇宙射线打翻一位、颗粒老化漏一位,都在这个保护网里;一颗芯片整体出问题,错的位数一下子超过两位数,这层网就兜不住了。
还有一个容易混淆的点。DDR5 颗粒自带片上 ECC(on-die ECC),只管颗粒内部的小错;平台级的 ECC 还得靠带 ECC 的内存条和 CPU、芯片组的支持,两者不是一回事2。采购单上写着“支持 ECC”,先问一句:是哪一级的 ECC。
这一层之外还有个日常功臣:巡检(scrub)。内存控制器定期把内存扫一遍,把攒下的单位错提前纠掉,别等它们攒成双错才现形。便宜,不起眼,靠它续命的机器不在少数。
第二层:把一颗芯片的错,摊到许多芯片上
第二层叫 Chipkill,IBM 在上世纪九十年代初的做法3。思路不复杂:把一个校验字的每一位,摊到不同的芯片上。这样一颗芯片整个坏掉,落到每个校验字里的也只是一位错,第一层 SECDED 正好能纠。
x4 规格的内存条上,一个 Rank 有 18 颗芯片,摊位够用;芯片越宽、Rank 越少,摊法就得跟着改3。这是 Chipkill 只出现在服务器平台的原因之一:它要更宽的总线、更多的芯片,台式机那套窄总线摊不开。
更进一步的做法是动态位转向:某颗芯片的错数超过阈值,控制器就把它的活计转给一颗备用芯片,相当于给内存条留了个替补3。厂商 ATP 的一篇文章里给过一个数字:Chipkill 能把不可纠正错误率压到 SECDED 的四分之一以下1。这个数字是厂商口径,引用时要打上这个标签,不能当成行业标准来念。
Linux 内核的 EDAC 文档里,把 Chipkill 按芯片位宽分了档:x4、x8、x16 各有对应的纠错模式4。档位不同,摊法不同,买之前对照平台手册查档位,别只看“支持 Chipkill”五个字。
Chipkill 的摊法:一个校验字的各位落在不同芯片上,单颗芯片失效只伤一位(示意图,小羲绘制;机制引自维基百科 Chipkill 词条,2026-10-24 查阅)
第三层:镜像与热备,买的是不停机
第三层不纠错了,直接换路。内存镜像(mirroring)把同一份数据写两份,一边出问题,另一边顶上,业务不用停。代价摆在明面上:可用容量减半,买两倍的内存只用一半。
Rank 备援(rank sparing)是轻一档的做法:留一个 Rank 做备胎,某个 Rank 错得太多,整 Rank 换下,备胎顶上。容量损失小一些,切换那一下的代价还在。
内存可靠性三层:纠错、摊错、换路,成本逐层上升(示意图,小羲绘制;分层口径见文末 [1][3],2026-10-24 查阅)
三层摆在一起,选型就成了一道算术题。跑批处理、能重跑的活,第一层加巡检够了;7x24 在线、停一分钟就要赔钱的业务,才值得为第二层、第三层掏钱。小羲的推演是:可靠性从来不是“越贵越好”,而是停机成本与保护成本对上号——对不上号的那部分钱,就是白花的。
还有一个没算完的问题:DDR5 时代,片上 ECC 让不少人以为“已经有 ECC 了”,平台级 ECC 与片上 ECC 的边界,采购单上到底该怎么验?这道题留给下一期的采购清单,今晚先把问题立在这儿。
觉 然 小 注
错分大小,保护分层。先看清错能大到什么地步,再决定为哪一层掏钱,这就是内存可靠性里最实在的次序。
· · ·
九羲科技|服务器 · 私有 AI · 存力方案
系列目录
第1期 | 73% 的整机钱,都给了 GPU 板组 https://jiuxii.cn/news/95
第2期 | 4500 颗芯片撑起 95% 的机架价值 https://jiuxii.cn/news/96
第3期 | 拆一台 2U 双路:通用服务器的钱花在哪 https://jiuxii.cn/news/102
第4期 | 大铁盒子,值钱的不是铁 https://jiuxii.cn/news/103
第5期 | L5 之后,机箱为什么就不许再改了 https://jiuxii.cn/news/110
第6期 | 能点亮,不等于能交付 https://jiuxii.cn/news/111
第7期 | 内存离CPU有多远:NUMA的延迟税 https://jiuxii.cn/news/134
第8期 | 带宽不是买速度,是买并行度 https://jiuxii.cn/news/135
引用与出处
[1] ATP. Explaining how ECC DIMMs counter computer memory errors. atpinc.com. https://www.atpinc.com/blog/ecc-dimm-memory-ram-errors-types-chipkill
[2] DDR vs. LPDDR vs. HBM Wiki. semiwiki.com. https://semiwiki.com/wikis/semiconductor-ip-wikis/ddr-vs-lpddr-vs-hbm-wiki/
[3] Chipkill. Wikipedia. https://en.wikipedia.org/wiki/ECC_Chipkill
[4] Error Detection And Correction (EDAC) Devices. Linux Kernel documentation, kernel.org. https://www.kernel.org/doc/html/v5.16/driver-api/edac.html
下一篇:第 10 期,数据上台三步,每步都在花时间,敬请期待。