With Multicore Accelerator, multiple host threads can be used to simulate multiple processors and clocks within each cell concurrently. This requires that all the processors and clocks supports this execution model. Multicore Accelerator is compatible with Multimachine Accelerator meaning that both can be enabled at the same time, utilizing the dynamic load balancing (see 16.1.5).
When developing models to be used in the Multicore Accelerator execution mode there are a couple of considerations to take into account. See the chapter Considerations for Multicore Accelerator in the API Reference Manual for more information.
Unlike Simics® Multimachine Accelerator, Multicore Accelerator is disabled by default. The reason for Multicore Accelerator being disabled is that it changes the timing model of simulation, notably no longer supporting deterministic simulation. In the Multicore Accelerator mode the modeled CPUs are run concurrently by host threads, which means that the interleaving of memory accesses to a shared memory is not guaranteed to occur in the same order between simulation sessions. This implementation was chosen to be able to leverage maximum simulation performance.
Multicore Accelerator is enabled with
simics> enable-multicore-accelerator
and can be disabled with
simics> disable-multicore-accelerator
The optional argument max-time-span to enable-multicore-accelerator controls how far the time is allowed to drift apart between CPUs/clocks in each cell where Multicore Accelerator is enabled (cf. min latency for cells, 16.1.3). For more information, consult the documentation for the enable-multicore-accelerator command.
Since Multicore Accelerator is not a deterministic execution mode, reverse execution is not supported with Multicore Accelerator enabled.
Multicore Accelerator works best for parallel compute intensive applications with little interaction between the CPUs. On the other hand, a system with a large amount of I/O operations will not be a good candidate. Such workloads, for example Operating System boot, can perform worse when Multicore Accelerator is enabled.
Remember that although there are parallel workloads occupying all CPUs in the system, the amount of actual parallelism that Multicore Accelerator can extract may be much lower. This is mainly because of serial sections, communication, synchronization, and poor load balancing in the target system.
For more information about performance of Multicore Accelerator and how to measure how much parallelism there is in the modeled system, see the Performance part in the Simics User's Guide.