Previous - Up - Next
3 Introduction
Simics is an efficient, instrumented, system level instruction
set simulator.
- Whereas an emulator is focused on executing a program
as quickly and accurately as possible, a simulator, in
addition, is designed from the ground up to gather information on
the execution and in general be a flexible tool. Simics is
not a monolithic program, it is a complete platform on which
simulation-based tools can be built.
- efficient means that Simics is designed to run
simulations very fast. Often, a Simics simulation will run as fast
as the real hardware, or even faster. In fact, in its class of
tools, Simics is the fastest simulator ever implemented.
- instrumented means that Simics was designed not to run
just the target system programs, but to gather a great deal of
information during runtime. Many simulators are simply fast
emulators with instrumentation added as an afterthought, making
the tool slow down considerably when running with high
levels of information-gathering enabled.
Simics, by contrast, is specifically designed to achieve
good performance even with a high level of instrumentation and
very large workloads. Simics provides a variety of
statistics in its default configuration and allows
various add-ons to be developed by power users and plugged into
the simulator.
- Simics is system level, meaning that it models a target
computer at the level that an operating system acts. Thus, Simics
models the binary interfaces to buses, interrupt controllers,
disks, video memory, etc. This means that Simics can run
anything that the target system can, i.e.,
arbitrary workloads. Simics can boot unmodified operating system
kernels from raw disk dumps.
- instruction set simulator means that Simics models the
target system at the level of individual instructions, executing
them one at a time. This is the lowest level of the hardware that
software has ready access to. Simulating at this level allows
Simics to be system level, yet still permits an
efficient design.
Simics fully virtualizes the target computer, allowing simulation
of multiprocessor systems as well as a cluster of independent
systems, and even networks,
regardless of the simulator host type. The virtualization also
allows Simics to be cross platform. For instance, Simics/SunFire can
run on a Linux/x86 system, thus simulating a 64-bit big-endian system on
a 32-bit little endian host.
The end uses for Simics include program analysis, computer
architecture research, and kernel debugging. The analysis support
includes code profiling and memory hierarchy simulation (i.e., cache
hierarchies). Debugging support includes a wide variety of
breakpoint types. The support for system-level simulation allows
operating system code to be developed and analyzed.
3.1 Hosts and Targets
3.2 Host Recommendations
3.3 Simics Targets
3.4 Simics Version Number
3.5 Simics Compatibility
Previous - Up - Next