Traditional redundancy (lockstep, TMR) executes identical binaries with identical memory layouts. A single correlated fault - for example, an arbitrary program counter value or a perturbation delta-PC in all replicas - redirects all replicas along the same incorrect path. The same applies to corruption of data pointers. Both types of faults, regardless of their origin (deliberate tampering, software bug, compilation bug, or physical disturbance), cause silent data corruption and erroneous program execution. This work presents Divergent Multi-Version Execution (DME), a runtime semantic consistency verifier for diversified executions. Each replica is compiled independently, producing different code and data memory layouts while preserving identical semantics. Faults are detected by comparing canonical instruction traces, which include opcodes, register identifiers, loaded/stored values, and results, while discarding layout-dependent addresses.
翻译:传统冗余技术(锁步、三模冗余)以相同内存布局执行相同的二进制代码。单个相关故障——例如所有副本中的程序计数器任意值或扰动增量PC——会使所有副本沿着同一错误路径重定向。数据指针的破坏同样会导致此类问题。这两类故障无论源于何种原因(蓄意篡改、软件缺陷、编译错误或物理干扰),均会引发静默数据损坏及程序执行异常。本文提出发散式多版本执行(DME),一种面向多样化执行的运行时语义一致性验证方法。每个副本经独立编译后,在保持语义等价的前提下产生不同的代码与数据内存布局。通过比较规范指令迹(包含操作码、寄存器标识符、加载/存储值及计算结果,并剔除与内存布局相关的地址信息)即可检测故障。