There are many ways to use threading and parallelization to improve the performance of virtual platforms. It is not always easy to successfully use parallelization – it very much depends on the nature of the workloads and model setup – but when it works it can really help. I recently published a long blog post at Intel, detailing an idealized example of threading for a device model that is shipping in the Simics training package.
The system being parallelized is a parallel hardware unit with multiple compute units. The goal is to run each compute unit on its own thread, in order to shorten the time to complete compute jobs in simulation: