Subject: SimICS (fwd)
To: None <port-sparc@NetBSD.ORG>
From: Frank van der Linden <frank@wins.uva.nl>
List: port-sparc
Date: 03/24/1998 16:45:28
This might be of some interest to people..
- Frank
===============================================================================
(feel free to forward as appropriate)
Announcing the availability of Linux-on-SimICS,
a complete environment for booting and running unmodified
Linux 2.0.30 binaries on a system-level simulator
http://www.sics.se/simics/
SimICS is a combined instruction-set simulator (Sparc V8) and operating system
emulator (SunOS 5.x) developed at the Swedish Institute of Computer Science.
SimICS can simulate multiple processors (SMP), data and instruction caches,
and devices sufficient accurately to boot and run operating systems straight
from bootable disk partition dumps. It offers a fully "open" view of the
execution of essentially arbitrary workloads.
We are now releasing a version of SimICS (sun4m) capable of booting and
running an unmodified version of Linux 2.0.30 (Red Hat 4.2/Sparc), complete
with Linux sources and binaries, and a version of GDB for symbolic profiling
and debugging of arbitrary portions of Linux.
(And yes, when we say "unmodified" we mean just that. We downloaded the Red
Hat distribution and installed it on a virtual sun4m workstation.)
Linux-on-SimICS will hopefully prove useful for operating system and computer
architecture research. SimICS is also a useful tool for program debugging and
performance analysis of software systems.
This is a first wide-audience distribution of Linux-on-SimICS, so we value
your feedback.
Some highlights of the package:
* Support for system-level code. SimICS supports operating system code,
including the (Sparc V8) trap model. You can thus port a toy or real
operating system to SimICS. There is support for adding your own device
simulators, MMU, and physical address mapping to construct a computer of
your choice. This distribution includes prepared files, scripts, source,
and binaries for a Linux installation. SimICS can also boot and run Solaris
2.6, but for obvious reasons we cannot redistribute an installation.
* "Virtual workstation". SimICS can simulate network devices to the point of
allowing a booted operating system to appear on your local network as an
ordinary (albeit slow) workstation. You can telnet to it, or run a web
server and profile file system activity, etc.
* Multipro support. SimICS can simulate one or more CPUs (shared-memory MP).
* Instruction and Data cache support. SimICS will model caches (with cache
lines that are multiples of 32 bytes), using either included cache
simulators or a user-developed model.
* Exact execution profiling. SimICS counts every from-to branch pair, and
can either provide an execution profile view (for each instruction a
frequency count), or answer queries on branches (such as how many branches
were taken *into* a particular region, and from where). Note that this
profiling works for completely arbitrary code, including function pointer
indirections and/or run-time generated code.
* Performance profiling. Provides profiling of cache and TLB behavior
(allocating misses to individual instructions), including interactive
definition of cache (number of lines, associativity, and line size) and TLB
size.
* Debugging. Includes several debugging features, such as support for
arbitrary memory breakpoints (any combination of read/write/execute to any
set of memory addresses), breakpoints in "time", on control register
access, on device access, etc.
* Is fully deterministic, facilitating bug hunting. When running on the
network in "virtual workstation" mode, network traffic can be recorded
allowing a user to re-create the execution off-line.
* Is fully interactive, with a command-line interface, and can be run from
scripts.
* Includes a modified version of GDB 4.16, thus allowing symbolic debugging
of parallel programs, multiprogrammed workloads, or operating systems.
"http://www.sics.se/simics/gdb.html" contains some examples.
* Extensions manual. There are several ways to add features or tailor
SimICS in various ways. The documentation is (more or less) grouped in
a single document.
* Fast execution (for a simulator). For the SPECint95 benchmark suite,
slowdown is in the range of 26-40 with no cache/TLB modelling, and in the
range 31-108 when simulating a "SuperSparc processor" (64 entry TLB, 16K
data cache, 20K instruction cache).
* SimICS can also emulate a subset of the Solaris 2.x ABI in "unix emulation
mode", allowing it to directly run many Solaris 2.x binaries, regardless of
the original source code or language, including debugging/profiling
dynamically linked or run-time generated code. In this mode it supports
running multiple unix processes (workloads) in the same environment,
including support for fork(), exec(), and arbitrary mmap(). The support is
sufficient to run the full Splash2 and SPECint95 suites.
SimICS is a research prototype. Feedback, bug reports, questions, and other
responses are most welcome. We will try to meet any (reasonable) requests for
fixes and features.
Please refer to the SimICS web site for more details and future updates.
Send bug reports and comments to "simics-bug@sics.se".
SimICS currently only runs on Solaris 2.x (Sparc) platforms. To run
Linux-on-SimICS, you will need access to a Solaris 2.x (Sparc) workstation
with a fair amount of memory (200M to boot Linux) and disk (also around 200M).
And the faster host the better---access to an Ultra workstation is highly
recommended.
SimICS is pronounced "sim-ix", but "sim-eye-see-ess" is also common.
19980319
--