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