AAU Student Projects - visit Aalborg University's student projects portal
A master's thesis from Aalborg University
Book cover


TinyVM: A Fault-Tolerant Virtual Machine

Authors

; ;

Term

4. term

Publication year

2014

Submitted on

Pages

81

Abstract

Denne afhandling præsenterer Tiny Virtual Machine (TVM), en fejltolerant fortolker for programmeringssproget TinyBytecode, og en udvidet operationel semantik, der eksplicit modellerer instruktioner, undtagelser, enkeltbit-fejl (bitflips) og fejlgendannelse. Arbejdet udvikler et integreret fejltoleranceskema for en enkelt kørende virtuel maskine baseret på redundans og checkpoints: for hver stakramme duplikeres operan dstakken, den lokale hukommelse og programtælleren til fejldetektion; ved særligt markerede (checked) instruktioner sammenlignes komponenterne, og ved uoverensstemmelse rulles der tilbage til rammens seneste checkpoint. Hver ramme har ét checkpoint, som kun opdateres efter en vellykket kontrol, så ugyldige tilstande ikke gemmes. For at undgå irreversible fejl i heapen introduceres en lokal heap med en redundant kopi; skrivninger går til den lokale heap og forpligtes først til den globale heap efter en bestået kontrol, hvorefter lokale heaper nulstilles. Semantikken og skemaet ledsages af en Java-implementeret TVM, herunder understøttelse af native metoder med begrænsningen, at de skal returnere præcis én integer og ikke må ændre VM’ens hukommelse. Robustheden evalueres med et eksternt værktøj, der injicerer bitflips i stakrammens komponenter (checkpoint antages ECC-beskyttet) både lige efter instruktionseksekvering og lige efter bestået kontrol, samt på tilfældige tidspunkter (i alt 90.000 kørsler). Ved injektion efter instruktionseksekvering genoprettes 76,6% af fejlene, yderligere 10,79% maskeres, og den stille datakorruptionsrate (SDC) er 0,24%. Ved injektion efter kontrol er genopretningen 28,25%, 40,79% maskeres, og SDC er 12,50%. Programtællerkorruption er sværest at håndtere; et ekstra check af programtælleren efter hver instruktion reducerer dens SDC til 0%. Performance-målinger mod en version uden fejltolerance viser en langsommere kørsel på 50,5% og 32,7% højere hukommelsesforbrug. Bidraget er en semantisk integreret fejltolerance for én VM-instans, herunder håndtering af native metoder, samt en empirisk evaluering af robusthed og omkostninger.

This thesis presents the Tiny Virtual Machine (TVM), a fault-tolerant interpreter for the TinyBytecode language, together with an extended operational semantics that explicitly models instructions, exceptions, single-event upsets (bit flips), and recovery. We design an integrated fault-tolerance scheme for a single running virtual machine based on redundancy and checkpoints: on every call-frame the operand stack, local memory, and program counter are duplicated for error detection; at designated checked instructions the components are compared and, on mismatch, the machine rolls back to the frame’s latest checkpoint. Each frame maintains exactly one checkpoint, updated only after a successful check to avoid committing invalid state. To prevent irreversible heap corruption, we introduce a local heap with a redundant copy; writes target the local heap and are committed to the global heap only after a passed check, after which both local heaps are cleared. The approach is formalized for all TinyBytecode instructions and implemented in Java; native calls are supported under the constraints that they return exactly one integer and do not modify VM memory. We evaluate robustness using an external tool that injects bit flips into frame components (the checkpoint is assumed ECC-protected) immediately after instruction execution, immediately after a passed check, and at random points (90,000 runs in total). When injecting after instruction execution, 76.6% of faults are recovered and an additional 10.79% are masked, with a 0.24% silent data corruption (SDC) rate. When injecting after checked-instruction comparison, recovery is 28.25%, 40.79% are masked, and SDC is 12.50%. Program counter corruption is the hardest to handle; adding a per-instruction PC check reduces its SDC to 0%. Performance measurements against a non-fault-tolerant build show a 50.5% slowdown and 32.7% higher memory usage. The contribution is a semantics-integrated fault tolerance for a single VM instance, including native method handling, with an empirical assessment of resilience and costs.

[This summary has been generated with the help of AI directly from the project (PDF)]