Welcome to HWSim

Introduction and Overview

Nearly all open source architectural simulators available are written as sequential code, and converting them to use multiple cores during simulation has proven too daunting for it to be undertaken within Open Source settings. The advantage of a parallel simulator implementation would be shorter time until an answer is available, which speeds up the design cycle for hardware, which is especially important during the early exploratory phase of new architecture designs.

We present a domain-specific parallel language that handles the parallel aspects, so that writing a new simulator reduces to just defining the behavior of architectural elements, using sequential reasoning. The language, called HWSim, provides constructs for defining elements and attaching to them functions that represent their behavior. Activities such as the advancement of time, and control over the order of physically executing the behaviors, takes place inside HWSim, which ensures that the Host memory state is always consistent with what the Guest memory state would be at the point that behavior for a given point in simulated time is physically executed.

As a result, HWSim greatly speeds up the implementation of simulators for new architectures, by modularizing the implementation, allowing each behavior to be defined in isolation. It also eliminates the complications introduced by feedback paths in the architecture, and relieves the simulator implementor of concerns about the control flow and order of execution. All this, while simultaneously reducing time to wait for simulation results, by taking efficient advantage of parallel hardware.