The M5 Simulator System
M5 is a modular platform for computer system architecture research,
encompassing system-level architecture as well as processor
microarchitecture.
New: There will be a tutorial on M5 on Sunday, June 5, in conjunction with ISCA 2005. We will be releasing an updated version of M5 prior to the tutorial.
Key features
- Pervasive object orientation. Major simulation structures
(CPUs, busses, caches, etc.) are represented as objects, both
externally and internally. M5's configuration language allows
flexible composition of these objects to describe complex simulation
targets, e.g., multi-system networks where each system comprises
multiple CPUs and a hierarchy of caches. M5's internal object
orientation (using C++) provides in addition to the usual software
engineering advantages.
- Multiple interchangeable CPU models. M5 currently
provides three interchangeable CPU objects: a simple, functional,
one-CPI CPU; a detailed model of an out-of-order SMT-capable CPU; and
a random memory-system tester. The first two models are use a common
high-level ISA description (though only the Alpha ISA is supported at
this time).
- Event-driven memory system.
M5 features a detailed, event-driven memory system including
non-blocking caches and split-transaction busses. These components
can be arranged flexibly, e.g., to model complex multi-level cache
hierarchies. The caches support a separable coherence policy module;
M5 currently includes a simple snooping cache coherence protocol.
- Full-system capability. M5 models a DEC Tsunami system in
sufficient detail to boot unmodified Linux 2.4/2.6 or L4Ka::Pistachio. We
have also booted HP/Compaq's Tru64 5.1 operating system in the past,
though we no longer actively maintain that capability.
- Multiprocessor / multi-system capability.
Thanks to M5's object orientation, instantiation of multiple CPU
objects within a system is trivial. Combined with the snooping
bus-based coherence protocol supported by the caches, M5 can model
symmetric multiprocessor systems. Because a complete system is just a
collection of objects (CPUs, caches, memory, etc.), multiple systems
can be instantiated within a single simulation process. In
conjunction with full-system modeling, this feature allows simulation
of entire client-server networks.
For a more detailed (though dated) discussion of M5's features, see our paper "Network-Oriented
Full-System Simulation using M5" from the 2003 CAECW Workshop.
Additional details
- Application-only support. In application-only
(non-full-system) mode, M5 can execute Alpha Tru64 binaries with OS
emulation or SimpleScalar EIO trace files. Support for Alpha Linux
binaries (allowing the use of binaries generated by an x86-hosted
cross-platform gcc) is in progress.
- Platforms. M5 runs on Intel x86-compatible systems
running Linux or OpenBSD, and should be readily portable to other
little-endian hosts and other Unix-like operating systems.
- Provenance. Portions of M5 (EIO trace support and parts
of the detailed CPU model) were derived from SimpleScalar. These
portions are being released under the SimpleScalar license. We are in
the process of developing a new detailed CPU model that will eliminate
this dependency. We are also grateful to the SimOS and SimOS/Alpha
developers, as SimOS/Alpha was an invaluable reference platform during
our development of full-system mode.
- Licensing. M5 is being released under a Berkeley-style
open source license. Roughly speaking, you are free to use our code
however you wish, as long as you leave our copyright on it. For more
details, see the LICENSE file included in the source download. Note
that the portions of M5 derived from other sources are also subject to
the licensing restrictions of the original sources (notably
SimpleScalar).
Download
The current public release of M5 is available at SourceForge. (This release is quite dated; a new release with significant updates will be made available prior to the ISCA 2005 tutorial.) Please
use the SourceForge tools to file bug reports, support/feature
requests, and patches. We also ask that you use the
m5sim-users mailing list hosted at SourceForge to ask questions
regarding M5. You may also want to subscribe to the SourceForge
m5sim-announcement list.
Documentation
M5 uses doxygen for code
documentation (though we still have a long way to go in documenting
all the code). You can browse the documentation here. Included in the doxygen output are a number of
overview and how-to type pages. There is also an overview of the stats package that we haven't
moved in to doxygen yet.
Acknowledgments
The M5 simulator is being developed with generous support from several
sources, including the National Science Foundation, Hewlett-Packard, Intel, and IBM.
Individuals working on M5 have also been supported by an Intel
Fellowship (Nate Binkert), a Lucent Fellowship (Lisa Hsu), and a Sloan
Research Fellowship (Steve Reinhardt).
This material is based upon work supported by the National Science
Foundation under Grant Nos. CCR-0105503 and CCR-0219640. Any opinions, findings and
conclusions or recomendations expressed in this material are those of
the author(s) and do not necessarily reflect the views of the National
Science Foundation (NSF).
Why is it called M5?
The M5 Development
Team
Last modified: Wed Feb 2 20:49:23 EST 2005