M5

M5 - This simulator has been developed at the Advanced Computer Architecture Laboratory Department of Electrical Engineering and Computer Science, The Universi-ty of Michigan, USA. The M5 simulator provides features necessary for simulating net-worked hosts, including full-system capability, a detailed I/O subsystem, and the ability to simulate multiple networked systems deterministically. This simulator includes scaf-folding for defining, parameterizing, instantiating, and checkpointing simulation ob-jects. It also provides an interface for building system models from complex collections of objects. Powerful statistics collection package and significant debugging support is available for simulation analysis and error checking. The M5 is implemented using two object oriented languages: Python for high-level object configuration and simulation scripting, and C++ for low-level object implementation. All simulation objects (CPUs, buses, caches, etc.) are represented as objects in both Python and C++. The M5 is "full-system" simulator that supports booting the entire operating systems as well as running application binaries with system call emulation. The M5 runs on most operating systems (Linux, MacOS X, Solaris, OpenBSD, and Cygwin) and architectures (x86, x86-64, SPARC, Alpha, and PPC). Though intended for simulating networked systems, M5’s structured design, rich feature set, and library of predefined object models provide a powerful framework for building complex architectural simulations in a variety of domains [57, 58]. This program can be used by hardware and software developers, students, testers, and performance analytics. It can be used for reversible execution and debugging solution, for full system simulation, for simulating entire networks of systems (it has multiprocessor/multi-system capabilities). This simulator has been used at The University of Michigan, The University of Wisconsin - Madison, The Northwestern University, Iowa State University, University of Belgrade, etc...