Speculative Temporal Decoupling Using fork()

Matthias Jung1,a, Frank Schnicke1,b, Markus Damm1,c, Thomas Kuhn1,d and Norbert Wehn2
1Fraunhofer Institute for Experimental Software Engineering (IESE), Germany
amatthias.jung@iese.fraunhofer.de
bfrank.schnicke@iese.fraunhofer.de
cmarkus.damm@iese.fraunhofer.de
dthomas.kuhn@iese.fraunhofer.de
2Technische Universität Kaiserslautern, Germany
wehn@eit.uni-kl.de

ABSTRACT


Temporal decoupling is a state-of-the-art method to speed up virtual prototypes. In this technique, a process is allowed to run ahead of simulation time for a specific interval called quantum. By using this method, the number of synchronization points, i.e. context switches, in the simulator is reduced and therefore, the simulation speed can be increased significantly. However, using this approach can introduce functional simulation errors due to missed synchronization events. Thus, using temporal decoupling implies a trade-off between speed and accuracy and the size of the quantum must be chosen wisely with respect to the simulated application. In loosely timed simulations most of the functional errors are tolerable for the sake of simulation speed. However, for instance safety critical errors are rare but can lead to fatal results and must be handled carefully. Prior works present mechanisms based on checkpoints (storing/restoring the internal state of the simulation model) in order to rollback in simulation time and correct the occurred errors by forcing synchronization. However, checkpointing approaches are intrusive and require changes to both the source code of all the used simulation models and the kernel of the simulator. In this paper we present a nonintrusive rollback approach for error-free temporal decoupling, which allows the usage of closed source models by using Unix’s fork() system call. Furthermore, we provide a case study based on the IEEE simulation standard SystemC.

Keywords: Temporal Decoupling, Fork, SystemC, Time Quantum, Virtual Prototyping.



Full Text (PDF)