Main Page
M5 is a modular platform for computer system architecture research, encompassing system-level architecture as well as processor microarchitecture.
News
- M5 is slowly moving away from source forge to our own server at: www.m5sim.org which you're using right now. This machine will host the M5 website, Mailing Lists, bug tracking, and source repository in the near future.
- Thanks to all who attended our second tutorial on Sunday June 18. We have posted the slides and handouts for downloading. (These are the same except for formatting; the handouts are two slides per page.) We have not yet produced the official 2.0 release; we are targeting the end of the month for that.
- As you can see, we have converted our web site almost entirely over to a wiki. (Thanks Ali!) We're hoping that this makes it more convenient to keep the web site up to date, in particular by enabling M5 users to contribute. If you would like to edit a page just click the edit tab above and you'll be prompted to create an account if you haven't created one already. To cut down on spam you need to verify your account with an e-mail address before you'll be able to edit the page.
Download
The current public release of M5 is available at SourceForge. Please look at the sidebar for links to file bugs, mailing list subscription information, and mailing list archive information.
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, FreeBSD, 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.
Additional details
- Application-only support. In application-only (non-full-system) mode, M5 can execute Alpha Linux or Tru64 binaries with OS emulation or SimpleScalar EIO trace files.
- Platforms. M5 runs on Intel x86-compatible systems running Linux, OpenBSD, or Cygwin, and should be readily portable to other little-endian hosts and other Unix-like operating systems. Alpha binaries to run on M5 (including the full Linux kernel) can be built on x86 systems using gcc-based cross-compilation tools, so no Alpha hardware is needed to make full use of M5.
- Provenance. Portions of M5 (EIO trace support and parts of our old detailed CPU model) were derived from SimpleScalar. These portions are being released under the SimpleScalar license. We have a new detailed CPU model that will eliminate this dependency, though this new model currently does not support full-system simulation or SMT. 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).
Documentation
- Overview and specific documentation about M5 is available on the Documentation page. Additionally, the M5 code is commented with doxygen comments. You can browse the doxygen-generated documentation here. Note: The wiki documentation (the Documentation page) is currently in transition, and partially reflects v1.1 and partially the new v2.0 features. See the doxygen docs for documentation on the current (v1.1) release.
- A list of Frequently Asked Questions is also available.
- The slides and handouts from our ISCA-33 tutorial held June 18, 2006 in Boston are available for downloading. (The slides and handouts are the same except for formatting; the handouts are two slides per page.) This tutorial covers the 2.0 release.
- A more detailed (though increasingly dated) discussion of M5 can be found in our paper "Network-Oriented Full-System Simulation using M5" from the 2003 CAECW Workshop. If you use M5 in your research, we would apreciate a citation to this paper in any publications you produce.
Publications
A list of publications using the M5 simulator is also available. Please append to the list if you publish a paper using M5.
Acknowledgments
The M5 simulator is being developed with generous support from several sources, including the National Science Foundation, Hewlett-Packard, Intel, IBM, MIPS, and Sun. 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).