A computer architecture simulator , or an architectural simulator , is a piece of software for modeling computer devices (or components) to predict outputs and performance metrics on a given input. An architectural simulator can model a target microprocessor only (see statement set simulator ), or an entire computer system (see full system simulator ), including a processor, a memory system, and I / O devices.
A full-system simulator is an architecture simulator that simulates an electronic system at such a level of detail that complete software stacks from real systems can run on the simulator without any modification. A full system simulator provides virtual hardware that is independent of the nature of the host computer. The full-system model typically has to include processor cores , peripheral devices , memories , interconnection nozzles, and networkconnections.
The defining property of full-system simulation Compared To an instruction set simulator is que la Model Allows real device drivers and operating systems to be run, not just single programs. Thus, full-system simulation makes it possible to simulate individual computers and networked computers with all their software , from network devices drivers to operating systems, network stacks , middleware , servers , and application programs .
A cycle-accurate simulator is a computer program that simulates a microarchitecture on a cycle-by-cycle basis. In contrast an instruction set simulator simulates an instruction set architecture usually faster but not cycle-accurate to a specific implementation of this architecture; They are often used when emulating older hardware, where time precisions are very important from legacy reasons. Often, a cycle-accurate simulator is used when designing new microprocessors – they can be tested, and benchmarked accurately (including running full operating system, or compilers).
Cycle-accurate simulators must ensure that all operations are executed in the proper virtual (or real if it is possible) time – branch prediction, cache misses, fetches, pipeline stalls, thread context switching, and many other subtle aspects of microprocessors.
Computer architecture simulators can be classified into many different categories depending on the context.
- Scope : micro-architecture vs. full-system simulators. The modeled scope could be only one microprocessor or the whole computer system.
- Detail : functional vs. timing (or performance) simulators. Functional simulators emphasize achieving the same function as the modeled components (what is done), while timing simulators to accurately reproduce the performance / timing features (when is it done) of the targets in addition to their functionalities.
- Input (sometimes called Workload ): trace-driven (or event-driven) vs. execution-driven simulators. Traces / Events are pre-recorded streams of instructions with some fixed input. Execution-driven simulators allow a dynamic change of instructions.
Microarchitecture Simulation is a technique for modeling the design and behavior of a microprocessor and its components.
Full system simulation consists in the simulation of a complete computer system capable of executing unmodified programs. These simulators are called emulators , in particular when they are imitating existing (or discontinued) hardware instead of under hardware development.
Instructions Set Simulator and Cycle Accurate Simulator are simulators whose scope is the simulation of a sole microprocessor. They diverge in the level of details they provide. Instruction set simulators focus on the fast simulation of the processor
Benefits of simulators
Architectural simulators are very useful for the following purposes:
- different hardware designs without building costly physical hardware systems.
- enabling the opportunities to access non-existing computer components or systems
- performance performance metrics: A single execution of simulators can often generate a large set of performance data.
- Debugging: Debugging on real hardware typically requires re-booting and re-running the code to reproduce the problems. In contrast, some simulators have a strong control environment and allow software developers to run backward once an error is detected.
Full system simulation can speed the system development process by making it easier to detect, recreate and repair flaws.  The use of multi-core processors is very important because it can be extremely difficult and time-consuming to recreate and unlock the environment.  This is enabling the software development to take place before the hardware is ready,  thus helping validate design decisions.
- Instruction set simulator
- Jump up^ Peter Magnusson (2004). “Full System Simulation: Software Development’s Missing Link” .
- Jump up^ Debugging and Full System Simulation
- Jump up^ Vania Joloboff (2009). “Full System Simulation of Embedded Systems” (PDF) .