Why Use Simulation? Simics & dark2 Assignment 1 Understanding real systems More inspectable Less dangerous Fault injection Debugging Prototype HW before expensive implementations Håkan Zeffer Uppsala University, Sweden zeffer@it.uu.se DARK2 2004 2 Dept of Information Technology| www.it.uu.se What is a Simulator? Full-System Simulation What to simulate? Instructions, memory etc. What happens when an operating system boots, traps, disk accesses etc. Simulation vs. Emulation User program Libraries Database IDE ISA DARK2 2004 3 © Håkan Zeffer | zeffer@it.uu.se Real OS & Software Network PCI RAM Dept of Information Technology| www.it.uu.se Middleware Operating system CPU DARK2 2004 © Håkan Zeffer | zeffer@it.uu.se ROM (Flash) Disk Simulated hardware LCD Devices Hardware Dept of Information Technology| www.it.uu.se 4 © Håkan Zeffer | zeffer@it.uu.se Advantages with Full System Simulation DARK2 2004 DARK2 2004 Dept of Information Technology| www.it.uu.se 5 © Håkan Zeffer | zeffer@it.uu.se OS debugging (such as, single stepping during boot, break on traps etc.). Performance tuning of applications and operating systems Fault injection Teaching and research Checkpointing Determinism Non intrusive – inspect without effecting state Dept of Information Technology| www.it.uu.se Possible Problems 6 © Håkan Zeffer | zeffer@it.uu.se Wisconsin Experiments Can I trust the results that my simulator have produced? How do I verify my results? Wisconsin experiments Cycles Per Trans. (millions) 4.0 max avg min 3.5 3.0 2.5 16 DARK2 2004 32 ROB Size 64 DARK2 2004 Dept of Information Technology| www.it.uu.se 7 © Håkan Zeffer | zeffer@it.uu.se Dept of Information Technology| www.it.uu.se 8 © Håkan Zeffer | zeffer@it.uu.se Speed vs. Accuracy Virtutech AB - Simics Spice, etc Virtutech is a small Swedish company. 25-30 persons. Office in Stockholm, Uppsala and U.S. Simics is the only full system simulator that supports multiple targets and is capable of booting unmodified operating systems. gate/RTL model (>1,000,000x) accuracy “cycle-accurate” architecture simulator (>10,000x) emulator (~5x) Simics™ Virtual PC, VMWare, Crusoe, etc. 1 KIPS DARK2 2004 Dept of Information Technology| www.it.uu.se 100 MIPS speed 9 DARK2 2004 © Håkan Zeffer | zeffer@it.uu.se Dept of Information Technology| www.it.uu.se Simics’s Three Modes Fast mode: No cache simulation. Just in time compilation (code name turbo). Normal mode: Simple cache simulation. Out-of-order mode: MAI (Micro Architecture Interface). Supports speculative execution, such as, branch and value prediction. Cache simulation etc. Dept of Information Technology| www.it.uu.se 11 © Håkan Zeffer | zeffer@it.uu.se Supported architectures DARK2 2004 10 © Håkan Zeffer | zeffer@it.uu.se X86 (from 486 to Pentium4) AMD-64 (Hammer/Opteron) Itanium SUN SunFire & Serengeti (USII & USIII) PowerPC Alpha ARM, MIPS + lots of devices DARK2 2004 Dept of Information Technology| www.it.uu.se 12 © Håkan Zeffer | zeffer@it.uu.se Unmodified OSs tested/supported Windows (XP, NT, 98, 95 and more) Solaris 9 (and more) Linux Tru64 VxWorks DARK2 2004 Linux on Itanium Solaris on Sun SunFire Windows XP/64 on AMD Hammer Linux on x86 DARK2 2004 13 Dept of Information Technology| www.it.uu.se © Håkan Zeffer | zeffer@it.uu.se CPU CPU CPU $$$ $$$ $$$ $$$ SCSI RAM Arbitrary configurations Multiple processors Multiple nodes Multiple address spaces Arbitrary device configurations DARK2 2004 15 © Håkan Zeffer | zeffer@it.uu.se © Håkan Zeffer | zeffer@it.uu.se Applications Operating System Firmware Simics configuration event handling memory VHDL simulator memory bus target machine DARK2 2004 Dept of Information Technology| www.it.uu.se 14 Simics Architecture Programming Interface (Simics API) CPU All running on a Linux host Dept of Information Technology| www.it.uu.se Simulating Multiprocessors Windows NT on x86 VxWorks on PowerPC interpreter Dept of Information Technology| www.it.uu.se graphics devices Ethernet SCSI disks MMU other Simics process CLI Simics Central scripting tracing debugger cache models 16 local disk real network © Håkan Zeffer | zeffer@it.uu.se Simics Dir Structure Target vs. Host Most of the files in the user dir install dir are soft links: LICENSE Makefile.in README README.SOURCE README.previous README.proxy README_1.8 Version configure doc licenses master-install The target is the simulated system The host is the computer that runs Simics The different prompts: - the targets prompt: root on the target system host$ - the host prompt: user on the host system (xterm etc.). simics> - the Simics prompt Real but for this course uninteresting files: import scripts config target# DARK2 2004 Dept of Information Technology| www.it.uu.se 17 Interesting dirs: home - home for different configurations. We will use the sarek configuration src - simics module source code v9-sol8-64 - binaries and build place DARK2 2004 © Håkan Zeffer | zeffer@it.uu.se Dept of Information Technology| www.it.uu.se simics> c Causes Simics to run another 1000 machine instructions and then stop. Dept of Information Technology| www.it.uu.se 19 © Håkan Zeffer | zeffer@it.uu.se Simics. simics> load-module Load Gives help on selected topics. Try it out! This help command will list all commands created for this assignment. simics> q Quit a module into Simics. simics> list-modules Prints a list of available modules and their current status, loaded or not. simics> help dark2-cache DARK2 2004 simics> help Causes Simics to continue its simulation. Pressing Ctrl-c when Simics is running causes it to stop. simics> c 1000 © Håkan Zeffer | zeffer@it.uu.se Simics Commands (cont) Simics Commands 18 DARK2 2004 Dept of Information Technology| www.it.uu.se 20 © Håkan Zeffer | zeffer@it.uu.se hostfs hostfs is a virtutech module that makes it possible to mount the host’s file system in the simulated target’s operating system. A module can register multiple classes A class can register multiple attributes The configuration system uses classes and attributes for: target# mount /host Simics API hostfs – accessing host files This will mount the host’s file system under /host on the target. The hostfs module has to be loaded (module-load hostfs). Checkpointing target# ls /host/it/kurs/dark2 Python command wrapping And more... This will list the contents on the host machine’s file system at /stud/it/dark2 DARK2 2004 DARK2 2004 21 Dept of Information Technology| www.it.uu.se © Håkan Zeffer | zeffer@it.uu.se Dept of Information Technology| www.it.uu.se Register a class 22 Register an attribute conf_class_t * int SIM_register_class(const char *name, class_data_t SIM_register_attribute(conf_class_t *class_data); const char get_attr_t lang_void Example: static conf_class_t static class_data_t set_attr_t *my_class; lang_void my_class_data; my_class = SIM_register_class(”my-class-name”, DARK2 2004 23 *class_struct, *attr_name, get_attr, *get_attr_data, set_attr, *set_attr_data, attr_attr_t attr, const char *doc); DARK2 2004 &my_class_data); Dept of Information Technology| www.it.uu.se © Håkan Zeffer | zeffer@it.uu.se © Håkan Zeffer | zeffer@it.uu.se Dept of Information Technology| www.it.uu.se 24 © Håkan Zeffer | zeffer@it.uu.se Simics Command Files Adding New Commands The file dark2-cache.simics contains the following: Edit the commands.py file in the dark2-cache dir read-configuration /it/kurs/dark2/simics-checkpoints/booted-sarek-1p def dc_resize_cmd(dc, size, block_size): dc.size = size; dc.block_size = block_size; @SIM_new_object("dark2-cache", "dc0") @conf.dc0.size = 512 @conf.dc0.block_size = 64 @conf.phys_mem0.timing_model = conf.dc0 new_command("resize", dc_resize_cmd, [arg(integer_t, "size"), arg(integer_t, ”block-size")], namespace = "dark2-cache", type ="dark2-cache commands", short="resize the cache", doc = """ Resize the cache. The long version """); Command files can contain any Simics commands Lines that starts with @ are interpreted by the Simics Python virtual machine. DARK2 2004 ”@conf.dc0.size = 512” calles the set-attribute function Dept of Information Technology| www.it.uu.se 25 DARK2 2004 © Håkan Zeffer | zeffer@it.uu.se Dept of Information Technology| www.it.uu.se STC Simics uses a fast address cache called ISTC and DSTC for instructions resp. data accesses. Direct mapped SW cache containing ”safe” address translations No traps are possible, that is, TLB and cache hit is guaranteed. DARK2 2004 This caching have to be disabled when cache simulations are performed. Dept of Information Technology| www.it.uu.se © Håkan Zeffer | zeffer@it.uu.se HAP (happening) 26 27 © Håkan Zeffer | zeffer@it.uu.se DARK2 2004 There are multiple haps that a user can register callbacks for. Initial-configuration – makes it possible to get a callback when the configuration phase is over. Magic-instruction – makes it possible to get a callback when such an instruction is executed. This is for example done in the magic-break-enable and magic-breakdisable commands. Dept of Information Technology| www.it.uu.se 28 © Håkan Zeffer | zeffer@it.uu.se The Step- and Time-Queue Simics uses two queues that events can be posted on. The STEP QUEUE: incremented on instruction completions and interrupt events The TIME QUEUE: incremented each cycle The time queue is used when the outof-order mode are used. The Assignment DARK2 2004 Dept of Information Technology| www.it.uu.se 29 © Håkan Zeffer | zeffer@it.uu.se Questions? DARK2 2004 Dept of Information Technology| www.it.uu.se 30 © Håkan Zeffer | zeffer@it.uu.se
© Copyright 2024