A Distributed Shared Memory Middleware for Speculative Parallel Discrete Event Simulation