CPU内核不靠谱?谷歌、Facebook发出严重警告:CPU计算错误难以预测!新智元关注共 2008字,需浏览 5分钟 ·2021-06-17 17:29 新智元报道 来源: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 aloneFacebook也注意到了这些错误。今年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.pdfhttps://www.theregister.com/2021/06/04/google_chip_flaws/https://www.mercurial-scm.org/推荐阅读: 浏览 25点赞 评论 收藏 分享 手机扫一扫分享分享 举报 评论图片表情视频评价全部评论推荐 corestat监控CPU内核利用率的工具很多人都可以使用mpstat,vmstat,等命令来查看CPU的使用情况,但是有的时候这些命令并没有办法显示出我们所需要的信息。corestat是一个针对多核多线程的SPARCT1/T2UltraspCPU 基本知识泥瓦匠BYSocket0corestat监控CPU内核利用率的工具很多人都可以使用mpstat,vmstat,等命令来查看CPU的使用情况,但是有的时候这些命令并没有riscv-tomthumbTom Thumb RISC-V CPU 内核和演示系统此存储库包含用于执行RV32IRISC-V指令(http://riscv.org/)和一些用于测试的外设的简单CPU设计的VHDL源。还包括TerasicDE0-Nano板(包含AlteraCycloCPU负载与CPU使用率可不是一回事开源Linux0Cuadro CPU BenchmarkCuadroCPUBenchmark用来测试CPU的性能。CuadroCPU基准措施通过数值找到一个解决方案,并测量了在直角二维热传导方程运行时CPU性能的坐标。该方案是一个垂直的不锈钢接受双方产生的rubycpuX86 虚拟 CPUrubycpu 是一个用ruby实现了一个X86虚拟CPU。写这个是为了学习如何实现一个字节码编译器CPU Profiler 使用指南程序员Android0CPU占用率是什么?嵌入式Linux0GPLGPU开源 CPUGPLGPU 是一个开源的 CPU,这个项目提供了使用 verilog 设计的图形引擎。点赞 评论 收藏 分享 手机扫一扫分享分享 举报