>From owner-simulators Sun Mar 22 13:32:21 1998 Received: from brahma.sics.se (brahma.sics.se [193.10.66.43]) by june.cs.washington.edu (8.8.7+CS/7.2ju) with ESMTP id NAA01935 for ; Sun, 22 Mar 1998 13:32:19 -0800 Received: from fafner (fafner.sics.se [193.10.66.42]) by brahma.sics.se (8.8.8/SICS) via ESMTP id WAA22110; Sun, 22 Mar 1998 22:32:16 +0100 (MET) env-from (psm@sics.se) From: "Peter S. Magnusson" Received: by fafner (SMI-8.6/SICSclient-2.0) id WAA28281; Sun, 22 Mar 1998 22:32:14 +0100 Date: Sun, 22 Mar 1998 22:32:14 +0100 Message-Id: <199803222132.WAA28281@fafner> To: simulators@cs.washington.edu Subject: Linux-on-SimICS: Booting Linux on a SPARC SMP simulator X-Message-Id: simulators@cs.washington.edu, message #1998-03-007 X-Unsubscribe: e-mail `majordomo@cs.washington.edu', body `unsubscribe simulators' X-URL: `http://www.cs.washington.edu/homes/pardo/sim.d/mail.d/index.html' Hi folks, The package below will be distributed at Usenix'98, where we have a paper describing some of the work in building "SimICS/sun4m". We're releasing an early version to hopefully get some users to help us work some bugs out. P. ================================================================ (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