本文的主要作者为Yixuan Mei(卡内基梅隆大学)、Shreya Varshini、Harish Dixit、Sriram Sankar(Meta Platforms Inc.)以及K. V. Rashmi(卡内基梅隆大学)。该研究发表于第31届ACM国际编程语言与操作系统架构支持会议(ASPLOS ’26),于2026年3月22日至26日在匹兹堡举行。论文标题为《SEVI: 超大规模数据中心中向量指令的静默数据损坏》。
该研究属于计算机系统可靠性与硬件故障分析领域。在现代数据中心中,静默数据损坏(Silent Data Corruption,SDC)是一种极具威胁的可靠性问题。与传统的“失效-噪声”故障(fail-noisy faults)不同,SDC不会立即触发硬件异常或软件错误,而是将错误结果悄然传播至整个系统,导致计算结果在无告警的情况下发生错误。随着半导体制造工艺不断进步,处理器集成度和设计复杂度持续提升,硬件故障的发生概率也随之增加。谷歌、Meta、阿里巴巴等超大规模云服务商均已报告SDC影响生产负载的事件。尽管已有研究通过故障注入和案例研究分析了SDC的成因和影响,但针对向量指令SDC的系统性指令级和应用级分析仍存在明显空白。向量指令在压缩、加密、媒体处理、科学计算、数值库以及深度学习框架中应用广泛,其SDC发生率远高于其他指令类型,因此作者开展了本研究,旨在填补这一空白,并提出低开销的SDC检测方法。
本研究的核心方法是基于SEVI框架的两阶段测试流程。第一阶段为“SDC嫌疑机器识别”。研究团队在Meta全球数据中心部署了自动化SDC测试机制,覆盖数百万台生产机器。该机制包括两种测试方式:一是在计划维护窗口内执行的“离线测试”,每台机器每45天接受约15分钟的测试;二是在生产负载中嵌入毫秒级测试轮次的“在线测试”,每台机器每天累计约30秒测试时间。两种测试均使用芯片厂商标准测试套件以及来自16类生产负载的代码片段,涵盖算术、向量、并发、控制流、数据移动、浮点运算等指令类型。若机器在测试中表现异常但不匹配已知的非SDC故障类型,则被标记为“SDC嫌疑机器”。数年间共识别出超过2500台SDC嫌疑机器。第二阶段为“长时测试”。研究人员对这些嫌疑机器进行深入的指令级和应用级测试。指令级测试构建了246个测试用例,完整覆盖AVX2、FMA3、BMI1和BMI2指令集。每个测试用例在每个逻辑核上执行100万轮,每轮使用不同输入,并将向量输出与参考标量输出进行比较。由于两者使用不同硬件单元,硬件故障导致相同错误输出的概率极低,从而保证了测试结果的可靠性。为评估SDC的可重现性,所有实验重复执行两次,并额外进行一轮均匀输入的测试以分析向量通道位置的影响。应用级测试则基于NumPy实现矩阵乘法(matmul),该实现高度依赖FMA指令。测试覆盖有界输入([-1,1])与无界输入两种数值分布,以及最大矩阵维度为10、25和100的三种规模,每个核心分别执行10万轮测试,总计运行43亿轮,耗时25亿CPU秒。
指令级分析揭示了多项重要发现。首先,在所有246个测试用例中,75个用例检测到SDC事件,共观察到2800万次SDC事件,分布在400个SDC案例中,机器级向量SDC率约为0.072‱。在这些事件中,融合乘加(FMA)指令的SDC最为普遍,占SDC案例的75%以上,占SDC事件的92%以上。前20个最易引发SDC的指令中,有19个为FMA指令。FMA指令的高故障率可能源于其硬件乘法单元包含约30倍于加法器的逻辑门,且缺乏硬件级保护,同时高利用率也加速了元件老化。其次,SDC检测频率在不同机器间差异显著,从百万分之一到接近每轮必现不等,但在同一机器内不同故障指令的检测频率较为一致,表明每个缺陷核心可能只有一个硬件单元发生单点故障。第三,FMA指令的SDC检测频率与位宽相关,256位FMA指令比128位指令检测到更多低频SDC。第四,超过80%的SDC案例中,首次故障出现时间小于1秒,但低频SDC的检测需要长时间测试。第五,输入位模式分析发现37%的FMA SDC案例中存在显著输入位偏差,且fp32与fp64操作的偏差位分别集中在尾数和指数位。输出位翻转分析显示三种不同模式:低指数低尾数翻转、低指数高尾数翻转、高指数高尾数翻转。其中高指数高尾数翻转会导致高相对误差,推翻了先前研究认为浮点SDC主要影响尾数位的观点。内存访问指令的SDC表现为两种故障模式:偏移读取错误(76%)和损坏读取(24%)。此外,向量指令SDC表现出强空间局部性,98.5%的SDC事件仅影响单个向量通道,且98.5%的SDC只影响单个物理核心。温度分析表明所有SDC事件均发生在正常温度范围,但温度升高会诱发更低频率的SDC案例,检测频率与CPU温度呈显著负相关。
应用级测试共检测到24个SDC案例,涉及12台机器。其中10个案例与FMA指令SDC发生核心重叠,且两者的检测频率呈高度线性相关(Pearson相关系数0.979),表明FMA指令SDC是矩阵乘法SDC的主要根因。75%的SDC案例中,首次故障出现时间小于8秒。SDC频率越高的核心,每次事件产生的错误结果数量越多。相对误差分布呈现两极分化:75%的错误结果相对误差小于1,但剩余25%的相对误差最高可达10240,主要由指数位翻转引起。SDC在矩阵乘法中具有良好的可重现性,高频核心的输入级重现率可超过80%。输入值范围对SDC频率影响显著,同一核心在不同输入范围下SDC频率差异可达245倍。
基于上述发现,研究者提出了一种基于应用内算法容错(Algorithm-Based Fault Tolerance,ABFT)的低开销SDC检测方法。该方法通过为矩阵乘法计算行校验和列校验向量,并利用校验和的点积与结果矩阵总和之间的数学等价关系实现错误检测。该方法的时间复杂度仅为O(mn+np),远低于矩阵乘法的O(mnp)。在真实SDC机器上的评估表明,该方法对最大维度为10的无界输入实现了100%的机器覆盖率,对最大维度为25和100的矩阵分别实现94%和88%的覆盖率。在时间开销方面,对于1024×1024矩阵,额外时间开销仅为1.35%。与传统的复制计算检测方法相比,ABFT方法的开销低数个数量级。
本研究的核心价值在于首次在超大规模生产环境中完成了向量指令SDC的系统性指令级与应用级分析,测试规模远超此前研究。其发现不仅验证了先前基于故障注入的结论,还揭示了新的SDC模式,如FMA指令输入位偏差、输出指数位翻转以及强空间局部性等。这些发现为硬件设计改进和选择性核心禁用等缓解策略提供了依据。此外,提出的ABFT检测方法可在正常负载运行期间并发执行SDC检测,显著降低了测试时间开销,并与现有舰队测试机制形成互补,具有重要的工业应用价值。该研究的开源实现已公开于GitHub,为后续研究和工程实践提供了可复用的测试框架。