MIPSI - MIPS Simulator MIPSI - MIPS Simulator Description MIPSI is an instruction-level simulator for the MIPS family of processors. Its main attributes are simplicity and robustness - mipsi can run SPEC benchmarks as well as complicated, on-the-fly code generating programs such as the Standard ML of New Jersey without any modification. MIPSI runs on big or little endian MIPS boxes and on Alpha platforms. On mips based work stations, the slowdown due to simulation is about 65 times the speed of native code for most SPEC benchmarks. On an alpha 400 cross-simulating an R3000, the slowdown is roughly 4. History My goal in writing MIPSI was to investigate the amount of fine-grain instruction level parallelism available in C and ML programs, and then to find out if alternative garbage collection schemes could possibly increase the amount of parallelism. The garbage collector is responsible for the layout of data in garbage collected systems. Thus the decisions made by the garbage collector have a big impact on the cache performance of programs. On future architectures with speculative execution, such impact is amplified as the speculative forward progress of the processor is interrupted by cache misses. Current Uses More than 400 research projects have adopted MIPSI. Here is a sampling: Andrew Appel and Marcelo Goncalves at Princeton University have used MIPSI to investigate garbage collection alternatives for future architectures. Marcelo used MIPSI for simulations that appeared in his thesis. Dean Tullsen, Susan Eggers and Hank Levy have modified MIPSI to simulate the Alpha processor in order to investigate multithreaded processor architectures. This work is now known as Simultaneous Multithreading. Dean's simulator, based on some MIPSI code, is now used at Intel. This paper on the Structure and Performance of Interpreters has examined the runtime behavior of the MIPSI simulator in detail. MIPSI has also been used in a wide variety of classes at the University of Washington. The undergraduate operating systems class has used MIPSI to teach students about virtual memory. The undergraduate architecture class has used MIPSI to investigate cache architectures, and the graduate architecture classes have used MIPSI to examine branch prediction behaviour, to measure instruction mix in C++ programs, and to compare superscalar and superpipelined architectures. Frequently Asked Questions 1. What hardware/software do I need to run MIPSI ? MIPSI requires Digital Unix on alpha processors and DEC Ultrix on MIPS processors. It can also be compiled and executed on an SGI Irix with a minimal amount of effort. If you are interested in porting MIPSI, let me know and I would be glad to help. 2. What is the simulation granularity of MIPSI ? MIPSI is an instruction level simulator. The internal operation of the MIPS chip below the cycle level is not simulated in order not to sacrifice performance. 3. Does MIPSI simulate floating point/exceptions/interrupts/etc. ? MIPSI simulates the floating point instructions as well as arithmetic over/underflows, NANs and divide by zero exceptions at the signal level and reflects them to the simulated program in the same manner as the underlying operating system. It does not simulate interrupts or any I/O devices. 4. I made some changes to MIPSI, can I fold them in to the distribution ? By all means. Email me and we will pick the most expedient route to folding your changes into MIPSI. Availability You can DOWNLOAD MIPSI sources here. Emin Gün Sirer