CPU 不可靠了?Google:芯片愈做愈小,反而让 CPU 运算错误难以预测
https://buzzorange.com/techorange/2021/06/18/small-chip-cause-cpu-error/
作者:新智元
Google 正在警惕一件事情,那就是:电脑芯片已经发展到不再可靠的地步,并且可能无
法以可预测的方式执行运算。
但并不是说它们曾经完全可靠。
实际上,CPU 错误的存在时间与 CPU 本身一样长。错误不仅产生于设计上的疏忽,也产
生于环境条件和产生故障的物理系统故障。
但是这些错误已经趋于罕见,只有最敏感的运算才会受到广泛的核查。如果系统看起来像
预期的那样运行。大多数情况下,电脑芯片被视为值得信赖的。
Google:芯片缩小可能是 CPU 错误无法预测的根本原因
Google 工程师 Peter Hochschild 在本周作为操作系统热点话题(HotOS)2021 会议的
一部分发布的影片中说:“我们的冒险,开始于生产团队越来越多地抱怨惯犯机器破坏数
据。”
“这些机器被可靠地指控破坏了多个不同的、稳定的、经过调试的大规模应用程式。每台
机器都被独立的团队反复指控,但传统的诊断方法没有发现它们有任何问题。”
在更深入地研究相关程式码和来自他们机器的操作遥测数据后,Google 工程师开始怀疑
他们的硬件有问题。他们的调查发现,硬件错误的发生率比预期的要高,而且这些问题在
安装后很久才零星出现,而且是在特定的、单独的 CPU 核心上,而不是在整个芯片或部
件家族上。
Google 的研究人员在研究这些无声的破坏性执行错误(CEEs)后得出结论:“易变的内
核(mercurial core)”是罪魁祸首——CPU 在不同情况下偶尔会计算错误,其方式无法
预测。
这些错误不是芯片架构设计失误的结果,也不是在制造测试中检测出来的。相反,
Google 工程师推断,这些错误的出现是因为我们已经将半导体制造推到了一个故障越来
越频繁的地步,而我们缺乏提前识别它们的工具。
在一篇题为“不算数的内核”(Cores that don’t count)的论文中,Hochschild 及其
同事列举了电脑内核不可靠的几个看似合理的原因,包括使罕见问题更加明显的大型伺服
器群、对整体可靠性的关注增加,以及减少软件错误率的软件开发改进。
“但我们认为有一个更根本的原因:越来越小的特征尺寸使其更接近 CMOS 的扩展极限,
再加上架构设计的复杂性不断增加。”研究人员指出,现有的验证方法不适合发现零星出
现的缺陷或部署后物理恶化的结果。
Facebook 也发现 CPU 的运算错误
今年 2 月,Facebook 发表了一篇相关的论文“规模化的无声数据破坏”(Silent Data
Corruption at Scale),其中指出:‘无声数据破坏正在成为数据中心中比以前观察到
的更常见的现象。”
该论文提出了缓解策略,但没有解决根本原因。
在 Google 的研究人员看来,Facebook 发现了一个不可靠核心的症状——无声的数据损
坏。但确定问题的原因,并提出修复方法,将需要进一步的工作。
行为不端的内核所带来的风险不仅包括崩溃(现有的错误处理的故障停止模型可以适应)
,还包括不正确的运算和数据丢失,这可能会被忽视,并在规模上构成特殊的风险。
“我们的一个易变的内核破坏了加密,”他解释说,“它是以这样一种方式做到的,即只
有它能解密它错误加密的内容。”
Google 的研究人员以“商业原因”为由拒绝透露其数据中心检测到的 CEE 率,尽管他们
提供了一个大致的数字,“每几千台机器有几个易变的内核– 与 Facebook 报告的比率
相似。”
理想情况下,Google 希望看到自动化的方法来识别易变的内核,并建议在整个芯片的生
命周期内进行 CPU 测试,而不是只在部署前依赖烧机测试。
这家公司目前依靠的是人类驱动的内核完整性审讯,这不是特别准确,因为识别可疑内核
的工具和技术仍在进行中。