InOrder (InO) cores achieve limited performance because their inability to dynamically reorder instructions prevents them from exploiting Instruction-Level-Parallelism. Conversely, Out-of-Order (OoO) cores achieve high performance by aggressively speculating past stalled instructions and creating highly optimized issue schedules. It has been observed that these issue schedules tend to repeat for sequences of instructions with predictable control and data-flow. An equally provisioned InO core can potentially achieve OoO's performance at a fraction of the energy cost if provided with an OoO schedule. In the context of a fine-grained heterogeneous multicore system composed of a  big  (OoO) core and a  little  (InO) core, we could offload recurring issue schedules from the  big  to the  little  core, to achieve energy-efficiency while maintaining performance.   To this end, we introduce the  DynaMOS  architecture. Recurring issue schedules may contain instructions that speculate across branches, utilize renamed registers to eliminate false dependencies, and reorder memory operations.  DynaMOS  provisions  little  with an  OinO  mode to replay a speculative schedule while ensuring program correctness. Any divergence from the recorded instruction sequence causes execution to restart in program order from a previously checkpointed state. On a system capable of switching between  big  and  little  cores rapidly with low overheads,  DynaMOS  schedules 38% of execution on the  little  on average, increasing utilization of the energy-efficient core by 2.9X over prior work. This amounts to energy savings of 32% over execution on only  big  core, with an allowable 5% performance loss.
['Shruti Padmanabha', 'Andrew Lukefahr', 'Reetuparna Das', 'Scott A. Mahlke']
DynaMOS: dynamic schedule migration for heterogeneous cores