Instruction-level error injection analyses aim to find instructions where errors often lead to unacceptable outcomes like Silent Data Corruptions (SDCs). These analyses require significant time, which is especially problematic if developers wish to regularly analyze software that evolves over time. We present FastFlip, a combination of empirical error injection and symbolic SDC propagation analyses that enables fast, compositional error injection analysis of evolving programs. FastFlip calculates how SDCs propagate across program sections and correctly accounts for unexpected side effects that can occur due to errors. Using FastFlip, we analyze five benchmarks, plus two modified versions of each benchmark. FastFlip speeds up the analysis of incrementally modified programs by $3.2\times$ (geomean). FastFlip selects a set of instructions to protect against SDCs that minimizes the runtime cost of protection while protecting against a developer-specified target fraction of all SDC-causing errors.
翻译:指令级错误注入分析旨在定位那些错误常导致不可接受后果(如同静默数据损坏)的指令。此类分析耗时显著,当开发者需定期分析随版本迭代的软件时尤为棘手。本文提出FastFlip——一种融合经验性错误注入与符号化SDC传播分析的组合方法,可对演进中的程序执行快速组合式错误注入分析。FastFlip能够计算SDC在程序段间的传播机制,并准确考量错误引发的意外副作用。通过FastFlip,我们分析了五个基准程序及其各自的两个修改版本。对于增量修改的程序,FastFlip将分析速度提升至3.2倍(几何平均值)。该方法能筛选出需防护的指令集,在满足开发者预设的SDC防护覆盖率目标前提下,最小化防护机制带来的运行时开销。